{
  "id": "2b18e7333e3e4e2cf3704f201bb8b6bb",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.5.17",
  "solcLongVersion": "0.5.17+commit.d19bba13",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/connectors/loantoken/AdvancedToken.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"./AdvancedTokenStorage.sol\";\n\n/**\n * @title Advanced Token contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized margin\n * trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * AdvancedToken implements standard ERC-20 approval, mint and burn token functionality.\n * Logic (AdvancedToken) is kept aside from storage (AdvancedTokenStorage).\n *\n * For example, LoanTokenLogicDai contract uses AdvancedToken::_mint() to mint\n * its Loan Dai iTokens.\n * */\ncontract AdvancedToken is AdvancedTokenStorage {\n\tusing SafeMath for uint256;\n\n\t/**\n\t * @notice Set an amount as the allowance of `spender` over the caller's tokens.\n\t *\n\t * Returns a boolean value indicating whether the operation succeeded.\n\t *\n\t * IMPORTANT: Beware that changing an allowance with this method brings the risk\n\t * that someone may use both the old and the new allowance by unfortunate\n\t * transaction ordering. One possible solution to mitigate this race\n\t * condition is to first reduce the spender's allowance to 0 and set the\n\t * desired value afterwards:\n\t * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n\t *\n\t * Emits an {Approval} event.\n\t *\n\t * @param _spender The account address that will be able to spend the tokens.\n\t * @param _value The amount of tokens allowed to spend.\n\t * */\n\tfunction approve(address _spender, uint256 _value) public returns (bool) {\n\t\tallowed[msg.sender][_spender] = _value;\n\t\temit Approval(msg.sender, _spender, _value);\n\t\treturn true;\n\t}\n\n\t/**\n\t * @notice The iToken minting process. Meant to issue Loan iTokens.\n\t * Lenders are able to open an iToken position, by minting them.\n\t * This function is called by LoanTokenLogicStandard::_mintToken\n\t * @param _to The recipient of the minted tTokens.\n\t * @param _tokenAmount The amount of iTokens to be minted.\n\t * @param _assetAmount The amount of lended tokens (asset to lend).\n\t * @param _price The price of the lended tokens.\n\t * @return The updated balance of the recipient.\n\t * */\n\tfunction _mint(\n\t\taddress _to,\n\t\tuint256 _tokenAmount,\n\t\tuint256 _assetAmount,\n\t\tuint256 _price\n\t) internal returns (uint256) {\n\t\trequire(_to != address(0), \"15\");\n\n\t\tuint256 _balance = balances[_to].add(_tokenAmount);\n\t\tbalances[_to] = _balance;\n\n\t\ttotalSupply_ = totalSupply_.add(_tokenAmount);\n\n\t\temit Mint(_to, _tokenAmount, _assetAmount, _price);\n\t\temit Transfer(address(0), _to, _tokenAmount);\n\n\t\treturn _balance;\n\t}\n\n\t/**\n\t * @notice The iToken burning process. Meant to destroy Loan iTokens.\n\t * Lenders are able to close an iToken position, by burning them.\n\t * This function is called by LoanTokenLogicStandard::_burnToken\n\t * @param _who The owner of the iTokens to burn.\n\t * @param _tokenAmount The amount of iTokens to burn.\n\t * @param _assetAmount The amount of lended tokens.\n\t * @param _price The price of the lended tokens.\n\t * @return The updated balance of the iTokens owner.\n\t * */\n\tfunction _burn(\n\t\taddress _who,\n\t\tuint256 _tokenAmount,\n\t\tuint256 _assetAmount,\n\t\tuint256 _price\n\t) internal returns (uint256) {\n\t\t//bzx compare\n\t\t//TODO: Unit test\n\t\tuint256 _balance = balances[_who].sub(_tokenAmount, \"16\");\n\n\t\t// a rounding error may leave dust behind, so we clear this out\n\t\tif (_balance <= 10) {\n\t\t\t// We can't leave such small balance quantities.\n\t\t\t_tokenAmount = _tokenAmount.add(_balance);\n\t\t\t_balance = 0;\n\t\t}\n\t\tbalances[_who] = _balance;\n\n\t\ttotalSupply_ = totalSupply_.sub(_tokenAmount);\n\n\t\temit Burn(_who, _tokenAmount, _assetAmount, _price);\n\t\temit Transfer(_who, address(0), _tokenAmount);\n\t\treturn _balance;\n\t}\n}\n"
      },
      "contracts/connectors/loantoken/AdvancedTokenStorage.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"./LoanTokenBase.sol\";\n\n/**\n * @title Advanced Token Storage contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * AdvancedTokenStorage implements standard ERC-20 getters functionality:\n * totalSupply, balanceOf, allowance and some events.\n * iToken logic is divided into several contracts AdvancedToken,\n * AdvancedTokenStorage and LoanTokenBase.\n * */\ncontract AdvancedTokenStorage is LoanTokenBase {\n\tusing SafeMath for uint256;\n\n\t/* Events */\n\n\t/// topic: 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n\tevent Transfer(address indexed from, address indexed to, uint256 value);\n\n\t/// topic: 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\n\tevent Approval(address indexed owner, address indexed spender, uint256 value);\n\n\t/// topic: 0xb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb\n\tevent Mint(address indexed minter, uint256 tokenAmount, uint256 assetAmount, uint256 price);\n\n\t/// topic: 0x743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b4644\n\tevent Burn(address indexed burner, uint256 tokenAmount, uint256 assetAmount, uint256 price);\n\n\tevent FlashBorrow(address borrower, address target, address loanToken, uint256 loanAmount);\n\n\t/* Storage */\n\n\tmapping(address => uint256) internal balances;\n\tmapping(address => mapping(address => uint256)) internal allowed;\n\tuint256 internal totalSupply_;\n\n\t/* Functions */\n\n\t/**\n\t * @notice Get the total supply of iTokens.\n\t * @return The total number of iTokens in existence as of now.\n\t * */\n\tfunction totalSupply() public view returns (uint256) {\n\t\treturn totalSupply_;\n\t}\n\n\t/**\n\t * @notice Get the amount of iTokens owned by an account.\n\t * @param _owner The account owner of the iTokens.\n\t * @return The number of iTokens an account owns.\n\t * */\n\tfunction balanceOf(address _owner) public view returns (uint256) {\n\t\treturn balances[_owner];\n\t}\n\n\t/**\n\t * @notice Get the amount of iTokens allowed to be spent by a\n\t *   given account on behalf of the owner.\n\t * @param _owner The account owner of the iTokens.\n\t * @param _spender The account allowed to send the iTokens.\n\t * @return The number of iTokens an account is allowing the spender\n\t *   to send on its behalf.\n\t * */\n\tfunction allowance(address _owner, address _spender) public view returns (uint256) {\n\t\treturn allowed[_owner][_spender];\n\t}\n}\n"
      },
      "contracts/connectors/loantoken/LoanTokenBase.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"../../openzeppelin/SafeMath.sol\";\nimport \"../../openzeppelin/SignedSafeMath.sol\";\nimport \"../../openzeppelin/ReentrancyGuard.sol\";\nimport \"../../openzeppelin/Ownable.sol\";\nimport \"../../openzeppelin/Address.sol\";\nimport \"../../interfaces/IWrbtcERC20.sol\";\nimport \"./Pausable.sol\";\n\n/**\n * @title Loan Token Base contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized margin\n * trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * Specific loan related storage for iTokens.\n *\n * An loan token or iToken is a representation of a user funds in the pool and the\n * interest they've earned. The redemption value of iTokens continually increase\n * from the accretion of interest paid into the lending pool by borrowers. The user\n * can sell iTokens to exit its position. The user might potentially use them as\n * collateral wherever applicable.\n *\n * There are three main tokens in the bZx system, iTokens, pTokens, and BZRX tokens.\n * The bZx system of lending and borrowing depends on iTokens and pTokens, and when\n * users lend or borrow money on bZx, their crypto assets go into or come out of\n * global liquidity pools, which are pools of funds shared between many different\n * exchanges. When lenders supply funds into the global liquidity pools, they\n * automatically receive iTokens; When users borrow money to open margin trading\n * positions, they automatically receive pTokens. The system is also designed to\n * use the BZRX tokens, which are only used to pay fees on the network currently.\n * */\ncontract LoanTokenBase is ReentrancyGuard, Ownable, Pausable {\n\tuint256 internal constant WEI_PRECISION = 10**18;\n\tuint256 internal constant WEI_PERCENT_PRECISION = 10**20;\n\n\tint256 internal constant sWEI_PRECISION = 10**18;\n\n\t/// @notice Standard ERC-20 properties\n\tstring public name;\n\tstring public symbol;\n\tuint8 public decimals;\n\n\t/// @notice The address of the loan token (asset to lend) instance.\n\taddress public loanTokenAddress;\n\n\tuint256 public baseRate;\n\tuint256 public rateMultiplier;\n\tuint256 public lowUtilBaseRate;\n\tuint256 public lowUtilRateMultiplier;\n\n\tuint256 public targetLevel;\n\tuint256 public kinkLevel;\n\tuint256 public maxScaleRate;\n\n\tuint256 internal _flTotalAssetSupply;\n\tuint256 public checkpointSupply;\n\tuint256 public initialPrice;\n\n\t/// uint88 for tight packing -> 8 + 88 + 160 = 256\n\tuint88 internal lastSettleTime_;\n\n\t/// Mapping of keccak256(collateralToken, isTorqueLoan) to loanParamsId.\n\tmapping(uint256 => bytes32) public loanParamsIds;\n\n\t/// Price of token at last user checkpoint.\n\tmapping(address => uint256) internal checkpointPrices_;\n\n\t// the maximum trading/borrowing/lending limit per token address\n\tmapping(address => uint256) public transactionLimit;\n\t// 0 -> no limit\n}\n"
      },
      "contracts/openzeppelin/SafeMath.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n\t/**\n\t * @dev Returns the addition of two unsigned integers, reverting on\n\t * overflow.\n\t *\n\t * Counterpart to Solidity's `+` operator.\n\t *\n\t * Requirements:\n\t * - Addition cannot overflow.\n\t */\n\tfunction add(uint256 a, uint256 b) internal pure returns (uint256) {\n\t\tuint256 c = a + b;\n\t\trequire(c >= a, \"SafeMath: addition overflow\");\n\n\t\treturn c;\n\t}\n\n\t/**\n\t * @dev Returns the subtraction of two unsigned integers, reverting on\n\t * overflow (when the result is negative).\n\t *\n\t * Counterpart to Solidity's `-` operator.\n\t *\n\t * Requirements:\n\t * - Subtraction cannot overflow.\n\t */\n\tfunction sub(uint256 a, uint256 b) internal pure returns (uint256) {\n\t\treturn sub(a, b, \"SafeMath: subtraction overflow\");\n\t}\n\n\t/**\n\t * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n\t * overflow (when the result is negative).\n\t *\n\t * Counterpart to Solidity's `-` operator.\n\t *\n\t * Requirements:\n\t * - Subtraction cannot overflow.\n\t *\n\t * _Available since v2.4.0._\n\t */\n\tfunction sub(\n\t\tuint256 a,\n\t\tuint256 b,\n\t\tstring memory errorMessage\n\t) internal pure returns (uint256) {\n\t\trequire(b <= a, errorMessage);\n\t\tuint256 c = a - b;\n\n\t\treturn c;\n\t}\n\n\t/**\n\t * @dev Returns the multiplication of two unsigned integers, reverting on\n\t * overflow.\n\t *\n\t * Counterpart to Solidity's `*` operator.\n\t *\n\t * Requirements:\n\t * - Multiplication cannot overflow.\n\t */\n\tfunction mul(uint256 a, uint256 b) internal pure returns (uint256) {\n\t\t// Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n\t\t// benefit is lost if 'b' is also tested.\n\t\t// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n\t\tif (a == 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tuint256 c = a * b;\n\t\trequire(c / a == b, \"SafeMath: multiplication overflow\");\n\n\t\treturn c;\n\t}\n\n\t/**\n\t * @dev Returns the integer division of two unsigned integers. Reverts on\n\t * division by zero. The result is rounded towards zero.\n\t *\n\t * Counterpart to Solidity's `/` operator. Note: this function uses a\n\t * `revert` opcode (which leaves remaining gas untouched) while Solidity\n\t * uses an invalid opcode to revert (consuming all remaining gas).\n\t *\n\t * Requirements:\n\t * - The divisor cannot be zero.\n\t */\n\tfunction div(uint256 a, uint256 b) internal pure returns (uint256) {\n\t\treturn div(a, b, \"SafeMath: division by zero\");\n\t}\n\n\t/**\n\t * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\n\t * division by zero. The result is rounded towards zero.\n\t *\n\t * Counterpart to Solidity's `/` operator. Note: this function uses a\n\t * `revert` opcode (which leaves remaining gas untouched) while Solidity\n\t * uses an invalid opcode to revert (consuming all remaining gas).\n\t *\n\t * Requirements:\n\t * - The divisor cannot be zero.\n\t *\n\t * _Available since v2.4.0._\n\t */\n\tfunction div(\n\t\tuint256 a,\n\t\tuint256 b,\n\t\tstring memory errorMessage\n\t) internal pure returns (uint256) {\n\t\t// Solidity only automatically asserts when dividing by 0\n\t\trequire(b != 0, errorMessage);\n\t\tuint256 c = a / b;\n\t\t// assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n\t\treturn c;\n\t}\n\n\t/**\n\t * @dev Integer division of two numbers, rounding up and truncating the quotient\n\t */\n\tfunction divCeil(uint256 a, uint256 b) internal pure returns (uint256) {\n\t\treturn divCeil(a, b, \"SafeMath: division by zero\");\n\t}\n\n\t/**\n\t * @dev Integer division of two numbers, rounding up and truncating the quotient\n\t */\n\tfunction divCeil(\n\t\tuint256 a,\n\t\tuint256 b,\n\t\tstring memory errorMessage\n\t) internal pure returns (uint256) {\n\t\t// Solidity only automatically asserts when dividing by 0\n\t\trequire(b != 0, errorMessage);\n\n\t\tif (a == 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tuint256 c = ((a - 1) / b) + 1;\n\n\t\treturn c;\n\t}\n\n\t/**\n\t * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n\t * Reverts when dividing by zero.\n\t *\n\t * Counterpart to Solidity's `%` operator. This function uses a `revert`\n\t * opcode (which leaves remaining gas untouched) while Solidity uses an\n\t * invalid opcode to revert (consuming all remaining gas).\n\t *\n\t * Requirements:\n\t * - The divisor cannot be zero.\n\t */\n\tfunction mod(uint256 a, uint256 b) internal pure returns (uint256) {\n\t\treturn mod(a, b, \"SafeMath: modulo by zero\");\n\t}\n\n\t/**\n\t * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n\t * Reverts with custom message when dividing by zero.\n\t *\n\t * Counterpart to Solidity's `%` operator. This function uses a `revert`\n\t * opcode (which leaves remaining gas untouched) while Solidity uses an\n\t * invalid opcode to revert (consuming all remaining gas).\n\t *\n\t * Requirements:\n\t * - The divisor cannot be zero.\n\t *\n\t * _Available since v2.4.0._\n\t */\n\tfunction mod(\n\t\tuint256 a,\n\t\tuint256 b,\n\t\tstring memory errorMessage\n\t) internal pure returns (uint256) {\n\t\trequire(b != 0, errorMessage);\n\t\treturn a % b;\n\t}\n\n\tfunction min256(uint256 _a, uint256 _b) internal pure returns (uint256) {\n\t\treturn _a < _b ? _a : _b;\n\t}\n}\n"
      },
      "contracts/openzeppelin/SignedSafeMath.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\n\n/**\n * @title SignedSafeMath\n * @dev Signed math operations with safety checks that revert on error.\n */\nlibrary SignedSafeMath {\n\tint256 private constant _INT256_MIN = -2**255;\n\n\t/**\n\t * @dev Returns the multiplication of two signed integers, reverting on\n\t * overflow.\n\t *\n\t * Counterpart to Solidity's `*` operator.\n\t *\n\t * Requirements:\n\t *\n\t * - Multiplication cannot overflow.\n\t */\n\tfunction mul(int256 a, int256 b) internal pure returns (int256) {\n\t\t// Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n\t\t// benefit is lost if 'b' is also tested.\n\t\t// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n\t\tif (a == 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\trequire(!(a == -1 && b == _INT256_MIN), \"SignedSafeMath: multiplication overflow\");\n\n\t\tint256 c = a * b;\n\t\trequire(c / a == b, \"SignedSafeMath: multiplication overflow\");\n\n\t\treturn c;\n\t}\n\n\t/**\n\t * @dev Returns the integer division of two signed integers. Reverts on\n\t * division by zero. The result is rounded towards zero.\n\t *\n\t * Counterpart to Solidity's `/` operator. Note: this function uses a\n\t * `revert` opcode (which leaves remaining gas untouched) while Solidity\n\t * uses an invalid opcode to revert (consuming all remaining gas).\n\t *\n\t * Requirements:\n\t *\n\t * - The divisor cannot be zero.\n\t */\n\tfunction div(int256 a, int256 b) internal pure returns (int256) {\n\t\trequire(b != 0, \"SignedSafeMath: division by zero\");\n\t\trequire(!(b == -1 && a == _INT256_MIN), \"SignedSafeMath: division overflow\");\n\n\t\tint256 c = a / b;\n\n\t\treturn c;\n\t}\n\n\t/**\n\t * @dev Returns the subtraction of two signed integers, reverting on\n\t * overflow.\n\t *\n\t * Counterpart to Solidity's `-` operator.\n\t *\n\t * Requirements:\n\t *\n\t * - Subtraction cannot overflow.\n\t */\n\tfunction sub(int256 a, int256 b) internal pure returns (int256) {\n\t\tint256 c = a - b;\n\t\trequire((b >= 0 && c <= a) || (b < 0 && c > a), \"SignedSafeMath: subtraction overflow\");\n\n\t\treturn c;\n\t}\n\n\t/**\n\t * @dev Returns the addition of two signed integers, reverting on\n\t * overflow.\n\t *\n\t * Counterpart to Solidity's `+` operator.\n\t *\n\t * Requirements:\n\t *\n\t * - Addition cannot overflow.\n\t */\n\tfunction add(int256 a, int256 b) internal pure returns (int256) {\n\t\tint256 c = a + b;\n\t\trequire((b >= 0 && c >= a) || (b < 0 && c < a), \"SignedSafeMath: addition overflow\");\n\n\t\treturn c;\n\t}\n}\n"
      },
      "contracts/openzeppelin/ReentrancyGuard.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\n\n/**\n * @title Helps contracts guard against reentrancy attacks.\n * @author Remco Bloemen <remco@2π.com>, Eenae <alexey@mixbytes.io>\n * @dev If you mark a function `nonReentrant`, you should also\n * mark it `external`.\n */\ncontract ReentrancyGuard {\n\t/// @dev Constant for unlocked guard state - non-zero to prevent extra gas costs.\n\t/// See: https://github.com/OpenZeppelin/openzeppelin-solidity/issues/1056\n\tuint256 internal constant REENTRANCY_GUARD_FREE = 1;\n\n\t/// @dev Constant for locked guard state\n\tuint256 internal constant REENTRANCY_GUARD_LOCKED = 2;\n\n\t/**\n\t * @dev We use a single lock for the whole contract.\n\t */\n\tuint256 internal reentrancyLock = REENTRANCY_GUARD_FREE;\n\n\t/**\n\t * @dev Prevents a contract from calling itself, directly or indirectly.\n\t * If you mark a function `nonReentrant`, you should also\n\t * mark it `external`. Calling one `nonReentrant` function from\n\t * another is not supported. Instead, you can implement a\n\t * `private` function doing the actual work, and an `external`\n\t * wrapper marked as `nonReentrant`.\n\t */\n\tmodifier nonReentrant() {\n\t\trequire(reentrancyLock == REENTRANCY_GUARD_FREE, \"nonReentrant\");\n\t\treentrancyLock = REENTRANCY_GUARD_LOCKED;\n\t\t_;\n\t\treentrancyLock = REENTRANCY_GUARD_FREE;\n\t}\n}\n"
      },
      "contracts/openzeppelin/Ownable.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\n\nimport \"./Context.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 * 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 */\ncontract Ownable is Context {\n\taddress private _owner;\n\n\tevent OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n\t/**\n\t * @dev Initializes the contract setting the deployer as the initial owner.\n\t */\n\tconstructor() internal {\n\t\taddress msgSender = _msgSender();\n\t\t_owner = msgSender;\n\t\temit OwnershipTransferred(address(0), msgSender);\n\t}\n\n\t/**\n\t * @dev Returns the address of the current owner.\n\t */\n\tfunction owner() public view returns (address) {\n\t\treturn _owner;\n\t}\n\n\t/**\n\t * @dev Throws if called by any account other than the owner.\n\t */\n\tmodifier onlyOwner() {\n\t\trequire(isOwner(), \"unauthorized\");\n\t\t_;\n\t}\n\n\t/**\n\t * @dev Returns true if the caller is the current owner.\n\t */\n\tfunction isOwner() public view returns (bool) {\n\t\treturn _msgSender() == _owner;\n\t}\n\n\t/**\n\t * @dev Transfers ownership of the contract to a new account (`newOwner`).\n\t * Can only be called by the current owner.\n\t */\n\tfunction transferOwnership(address newOwner) public onlyOwner {\n\t\t_transferOwnership(newOwner);\n\t}\n\n\t/**\n\t * @dev Transfers ownership of the contract to a new account (`newOwner`).\n\t */\n\tfunction _transferOwnership(address newOwner) internal {\n\t\trequire(newOwner != address(0), \"Ownable: new owner is the zero address\");\n\t\temit OwnershipTransferred(_owner, newOwner);\n\t\t_owner = newOwner;\n\t}\n}\n"
      },
      "contracts/openzeppelin/Address.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n\t/**\n\t * @dev Returns true if `account` is a contract.\n\t *\n\t * [IMPORTANT]\n\t * ====\n\t * It is unsafe to assume that an address for which this function returns\n\t * false is an externally-owned account (EOA) and not a contract.\n\t *\n\t * Among others, `isContract` will return false for the following\n\t * types of addresses:\n\t *\n\t *  - an externally-owned account\n\t *  - a contract in construction\n\t *  - an address where a contract will be created\n\t *  - an address where a contract lived, but was destroyed\n\t * ====\n\t */\n\tfunction isContract(address account) internal view returns (bool) {\n\t\t// According to EIP-1052, 0x0 is the value returned for not-yet created accounts\n\t\t// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\n\t\t// for accounts without code, i.e. `keccak256('')`\n\t\tbytes32 codehash;\n\t\tbytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\n\t\t// solhint-disable-next-line no-inline-assembly\n\t\tassembly {\n\t\t\tcodehash := extcodehash(account)\n\t\t}\n\t\treturn (codehash != accountHash && codehash != 0x0);\n\t}\n\n\t/**\n\t * @dev Converts an `address` into `address payable`. Note that this is\n\t * simply a type cast: the actual underlying value is not changed.\n\t *\n\t * _Available since v2.4.0._\n\t */\n\tfunction toPayable(address account) internal pure returns (address payable) {\n\t\treturn address(uint160(account));\n\t}\n\n\t/**\n\t * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n\t * `recipient`, forwarding all available gas and reverting on errors.\n\t *\n\t * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n\t * of certain opcodes, possibly making contracts go over the 2300 gas limit\n\t * imposed by `transfer`, making them unable to receive funds via\n\t * `transfer`. {sendValue} removes this limitation.\n\t *\n\t * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n\t *\n\t * IMPORTANT: because control is transferred to `recipient`, care must be\n\t * taken to not create reentrancy vulnerabilities. Consider using\n\t * {ReentrancyGuard} or the\n\t * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html\n\t *   #use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n\t *\n\t * _Available since v2.4.0._\n\t */\n\tfunction sendValue(address recipient, uint256 amount) internal {\n\t\trequire(address(this).balance >= amount, \"Address: insufficient balance\");\n\n\t\t// solhint-disable-next-line avoid-call-value\n\t\t(bool success, ) = recipient.call.value(amount)(\"\");\n\t\trequire(success, \"Address: unable to send value, recipient may have reverted\");\n\t}\n}\n"
      },
      "contracts/interfaces/IWrbtcERC20.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity >=0.5.0 <0.6.0;\n\nimport \"./IWrbtc.sol\";\nimport \"./IERC20.sol\";\n\ncontract IWrbtcERC20 is IWrbtc, IERC20 {}\n"
      },
      "contracts/connectors/loantoken/Pausable.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\n/**\n * @title Pausable contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized margin\n * trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * The contract implements pausable functionality by reading on slots the\n * pause state of contract functions.\n * */\ncontract Pausable {\n\t/// keccak256(\"Pausable_FunctionPause\")\n\tbytes32 internal constant Pausable_FunctionPause = 0xa7143c84d793a15503da6f19bf9119a2dac94448ca45d77c8bf08f57b2e91047;\n\n\tmodifier pausable(bytes4 sig) {\n\t\trequire(!_isPaused(sig), \"unauthorized\");\n\t\t_;\n\t}\n\n\t/**\n\t * @notice Check whether a function is paused.\n\t *\n\t * @dev Used to read externally from the smart contract to see if a\n\t *   function is paused.\n\t *\n\t * @param sig The function ID, the selector on bytes4.\n\t *\n\t * @return isPaused Whether the function is paused: true or false.\n\t * */\n\tfunction _isPaused(bytes4 sig) internal view returns (bool isPaused) {\n\t\tbytes32 slot = keccak256(abi.encodePacked(sig, Pausable_FunctionPause));\n\t\tassembly {\n\t\t\tisPaused := sload(slot)\n\t\t}\n\t}\n}\n"
      },
      "contracts/openzeppelin/Context.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\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 GSN 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 */\ncontract Context {\n\t// Empty internal constructor, to prevent people from mistakenly deploying\n\t// an instance of this contract, which should be used via inheritance.\n\tconstructor() internal {}\n\n\t// solhint-disable-previous-line no-empty-blocks\n\n\tfunction _msgSender() internal view returns (address payable) {\n\t\treturn msg.sender;\n\t}\n\n\tfunction _msgData() internal view returns (bytes memory) {\n\t\tthis; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n\t\treturn msg.data;\n\t}\n}\n"
      },
      "contracts/interfaces/IWrbtc.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity >=0.5.0 <0.6.0;\n\ninterface IWrbtc {\n\tfunction deposit() external payable;\n\n\tfunction withdraw(uint256 wad) external;\n}\n"
      },
      "contracts/interfaces/IERC20.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity >=0.5.0 <0.6.0;\n\ncontract IERC20 {\n\tstring public name;\n\tuint8 public decimals;\n\tstring public symbol;\n\n\tfunction totalSupply() public view returns (uint256);\n\n\tfunction balanceOf(address _who) public view returns (uint256);\n\n\tfunction allowance(address _owner, address _spender) public view returns (uint256);\n\n\tfunction approve(address _spender, uint256 _value) public returns (bool);\n\n\tfunction transfer(address _to, uint256 _value) public returns (bool);\n\n\tfunction transferFrom(\n\t\taddress _from,\n\t\taddress _to,\n\t\tuint256 _value\n\t) public returns (bool);\n\n\tevent Transfer(address indexed from, address indexed to, uint256 value);\n\tevent Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"
      },
      "contracts/connectors/loantoken/LoanTokenSettingsLowerAdmin.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"./AdvancedToken.sol\";\nimport \"./interfaces/ProtocolSettingsLike.sol\";\n\ncontract LoanTokenSettingsLowerAdmin is AdvancedToken {\n\tusing SafeMath for uint256;\n\n\t/* Storage */\n\n\t/// @dev It is important to maintain the variables order so the delegate\n\t/// calls can access sovrynContractAddress\n\n\t/// ------------- MUST BE THE SAME AS IN LoanToken CONTRACT -------------------\n\taddress public sovrynContractAddress;\n\taddress public wrbtcTokenAddress;\n\taddress public target_;\n\taddress public admin;\n\t/// ------------- END MUST BE THE SAME AS IN LoanToken CONTRACT -------------------\n\n\t/// @dev Add new variables here on the bottom.\n\taddress public earlyAccessToken; //not used anymore, but staying for upgradability\n\taddress public pauser;\n\t/** The address of the liquidity mining contract */\n\taddress public liquidityMiningAddress;\n\n\t/// @dev TODO: Check for restrictions in this contract.\n\tmodifier onlyAdmin() {\n\t\trequire(isOwner() || msg.sender == admin, \"unauthorized\");\n\t\t_;\n\t}\n\n\t/* Events */\n\n\tevent SetTransactionLimits(address[] addresses, uint256[] limits);\n\n\t/* Functions */\n\n\t/**\n\t * @notice Set admin account.\n\t * @param _admin The address of the account to grant admin permissions.\n\t * */\n\tfunction setAdmin(address _admin) public onlyOwner {\n\t\tadmin = _admin;\n\t}\n\n\t/**\n\t * @notice Set pauser account.\n\t * @param _pauser The address of the account to grant pause permissions.\n\t * */\n\tfunction setPauser(address _pauser) public onlyOwner {\n\t\tpauser = _pauser;\n\t}\n\n\t/**\n\t * @notice Fallback function not allowed\n\t * */\n\tfunction() external {\n\t\trevert(\"LoanTokenSettingsLowerAdmin - fallback not allowed\");\n\t}\n\n\t/**\n\t * @notice Set loan token parameters.\n\t *\n\t * @param loanParamsList The array of loan parameters.\n\t * @param areTorqueLoans Whether the loan is a torque loan.\n\t * */\n\tfunction setupLoanParams(LoanParamsStruct.LoanParams[] memory loanParamsList, bool areTorqueLoans) public onlyAdmin {\n\t\tbytes32[] memory loanParamsIdList;\n\t\taddress _loanTokenAddress = loanTokenAddress;\n\n\t\tfor (uint256 i = 0; i < loanParamsList.length; i++) {\n\t\t\tloanParamsList[i].loanToken = _loanTokenAddress;\n\t\t\tloanParamsList[i].maxLoanTerm = areTorqueLoans ? 0 : 28 days;\n\t\t}\n\n\t\tloanParamsIdList = ProtocolSettingsLike(sovrynContractAddress).setupLoanParams(loanParamsList);\n\t\tfor (uint256 i = 0; i < loanParamsIdList.length; i++) {\n\t\t\tloanParamsIds[\n\t\t\t\tuint256(\n\t\t\t\t\tkeccak256(\n\t\t\t\t\t\tabi.encodePacked(\n\t\t\t\t\t\t\tloanParamsList[i].collateralToken,\n\t\t\t\t\t\t\tareTorqueLoans /// isTorqueLoan\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t] = loanParamsIdList[i];\n\t\t}\n\t}\n\n\t/**\n\t * @notice Disable loan token parameters.\n\t *\n\t * @param collateralTokens The array of collateral tokens.\n\t * @param isTorqueLoans Whether the loan is a torque loan.\n\t * */\n\tfunction disableLoanParams(address[] calldata collateralTokens, bool[] calldata isTorqueLoans) external onlyAdmin {\n\t\trequire(collateralTokens.length == isTorqueLoans.length, \"count mismatch\");\n\n\t\tbytes32[] memory loanParamsIdList = new bytes32[](collateralTokens.length);\n\t\tfor (uint256 i = 0; i < collateralTokens.length; i++) {\n\t\t\tuint256 id = uint256(keccak256(abi.encodePacked(collateralTokens[i], isTorqueLoans[i])));\n\t\t\tloanParamsIdList[i] = loanParamsIds[id];\n\t\t\tdelete loanParamsIds[id];\n\t\t}\n\n\t\tProtocolSettingsLike(sovrynContractAddress).disableLoanParams(loanParamsIdList);\n\t}\n\n\t/**\n\t * @notice Set loan token parameters about the demand curve.\n\t *\n\t * @dev These params should be percentages represented\n\t *   like so: 5% = 5000000000000000000 /// 18 digits precision.\n\t * rateMultiplier + baseRate can't exceed 100%\n\t *\n\t * To maintain a healthy credit score, it's important to keep your\n\t * credit utilization rate (CUR) low (_lowUtilBaseRate). In general\n\t * you don't want your CUR to exceed 30%, but increasingly financial\n\t * experts are recommending that you don't want to go above 10% if you\n\t * really want an excellent credit score.\n\t *\n\t * Interest rates tend to cluster around the kink level of a kinked\n\t * interest rate model. More info at https://arxiv.org/pdf/2006.13922.pdf\n\t * and https://compound.finance/governance/proposals/12\n\t *\n\t * @param _baseRate The interest rate.\n\t * @param _rateMultiplier The precision multiplier for base rate.\n\t * @param _lowUtilBaseRate The credit utilization rate (CUR) low value.\n\t * @param _lowUtilRateMultiplier The precision multiplier for low util base rate.\n\t * @param _targetLevel The target level.\n\t * @param _kinkLevel The level that interest rates cluster on kinked model.\n\t * @param _maxScaleRate The maximum rate of the scale.\n\t * */\n\tfunction setDemandCurve(\n\t\tuint256 _baseRate,\n\t\tuint256 _rateMultiplier,\n\t\tuint256 _lowUtilBaseRate,\n\t\tuint256 _lowUtilRateMultiplier,\n\t\tuint256 _targetLevel,\n\t\tuint256 _kinkLevel,\n\t\tuint256 _maxScaleRate\n\t) public onlyAdmin {\n\t\trequire(_rateMultiplier.add(_baseRate) <= WEI_PERCENT_PRECISION, \"curve params too high\");\n\t\trequire(_lowUtilRateMultiplier.add(_lowUtilBaseRate) <= WEI_PERCENT_PRECISION, \"curve params too high\");\n\n\t\trequire(_targetLevel <= WEI_PERCENT_PRECISION && _kinkLevel <= WEI_PERCENT_PRECISION, \"levels too high\");\n\n\t\tbaseRate = _baseRate;\n\t\trateMultiplier = _rateMultiplier;\n\t\tlowUtilBaseRate = _lowUtilBaseRate;\n\t\tlowUtilRateMultiplier = _lowUtilRateMultiplier;\n\n\t\ttargetLevel = _targetLevel; /// 80 ether\n\t\tkinkLevel = _kinkLevel; /// 90 ether\n\t\tmaxScaleRate = _maxScaleRate; /// 100 ether\n\t}\n\n\t/**\n\t * @notice Set the pause flag for a function to true or false.\n\t *\n\t * @dev Combining the hash of \"iToken_FunctionPause\" string and a function\n\t *   selector gets a slot to write a flag for pause state.\n\t *\n\t * @param funcId The ID of a function, the selector.\n\t * @param isPaused true/false value of the flag.\n\t * */\n\tfunction toggleFunctionPause(\n\t\tstring memory funcId, /// example: \"mint(uint256,uint256)\"\n\t\tbool isPaused\n\t) public {\n\t\trequire(msg.sender == pauser, \"onlyPauser\");\n\t\t/// keccak256(\"iToken_FunctionPause\")\n\t\tbytes32 slot =\n\t\t\tkeccak256(\n\t\t\t\tabi.encodePacked(\n\t\t\t\t\tbytes4(keccak256(abi.encodePacked(funcId))),\n\t\t\t\t\tuint256(0xd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2)\n\t\t\t\t)\n\t\t\t);\n\t\tassembly {\n\t\t\tsstore(slot, isPaused)\n\t\t}\n\t}\n}\n"
      },
      "contracts/connectors/loantoken/interfaces/ProtocolSettingsLike.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../../../core/objects/LoanParamsStruct.sol\";\n\ninterface ProtocolSettingsLike {\n\tfunction setupLoanParams(LoanParamsStruct.LoanParams[] calldata loanParamsList) external returns (bytes32[] memory loanParamsIdList);\n\n\tfunction disableLoanParams(bytes32[] calldata loanParamsIdList) external;\n\n\tfunction minInitialMargin(bytes32 loanParamsId) external view returns (uint256);\n}\n"
      },
      "contracts/core/objects/LoanParamsStruct.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\n/**\n * @title The Loan Parameters.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the storage structure of the Loan Parameters.\n * */\ncontract LoanParamsStruct {\n\tstruct LoanParams {\n\t\t/// @dev ID of loan params object.\n\t\tbytes32 id;\n\t\t/// @dev If false, this object has been disabled by the owner and can't\n\t\t///   be used for future loans.\n\t\tbool active;\n\t\t/// @dev Owner of this object.\n\t\taddress owner;\n\t\t/// @dev The token being loaned.\n\t\taddress loanToken;\n\t\t/// @dev The required collateral token.\n\t\taddress collateralToken;\n\t\t/// @dev The minimum allowed initial margin.\n\t\tuint256 minInitialMargin;\n\t\t/// @dev An unhealthy loan when current margin is at or below this value.\n\t\tuint256 maintenanceMargin;\n\t\t/// @dev The maximum term for new loans (0 means there's no max term).\n\t\tuint256 maxLoanTerm;\n\t}\n}\n"
      },
      "contracts/mockup/previousLoanToken/PreviousLoanTokenSettingsLowerAdmin.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../../connectors/loantoken/interfaces/ProtocolSettingsLike.sol\";\nimport \"../../connectors/loantoken/AdvancedTokenStorage.sol\";\n\n// It is a LoanToken implementation!\ncontract PreviousLoanTokenSettingsLowerAdmin is AdvancedTokenStorage {\n\tusing SafeMath for uint256;\n\n\t// It is important to maintain the variables order so the delegate calls can access sovrynContractAddress\n\n\t// ------------- MUST BE THE SAME AS IN LoanToken CONTRACT -------------------\n\taddress public sovrynContractAddress;\n\taddress public wrbtcTokenAddress;\n\taddress internal target_;\n\t// ------------- END MUST BE THE SAME AS IN LoanToken CONTRACT -------------------\n\n\tevent SetTransactionLimits(address[] addresses, uint256[] limits);\n\n\t//@todo check for restrictions in this contract\n\tmodifier onlyAdmin() {\n\t\trequire(msg.sender == address(this) || msg.sender == owner(), \"unauthorized\");\n\t\t_;\n\t}\n\n\t//@todo add check for double init, idk but init usually can be called only once.\n\tfunction init(\n\t\taddress _loanTokenAddress,\n\t\tstring memory _name,\n\t\tstring memory _symbol\n\t) public onlyOwner {\n\t\tloanTokenAddress = _loanTokenAddress;\n\n\t\tname = _name;\n\t\tsymbol = _symbol;\n\t\tdecimals = IERC20(loanTokenAddress).decimals();\n\n\t\tinitialPrice = 10**18; // starting price of 1\n\t}\n\n\tfunction() external {\n\t\trevert(\"LoanTokenSettingsLowerAdmin - fallback not allowed\");\n\t}\n\n\tfunction setupLoanParams(LoanParamsStruct.LoanParams[] memory loanParamsList, bool areTorqueLoans) public onlyAdmin {\n\t\tbytes32[] memory loanParamsIdList;\n\t\taddress _loanTokenAddress = loanTokenAddress;\n\n\t\tfor (uint256 i = 0; i < loanParamsList.length; i++) {\n\t\t\tloanParamsList[i].loanToken = _loanTokenAddress;\n\t\t\tloanParamsList[i].maxLoanTerm = areTorqueLoans ? 0 : 28 days;\n\t\t}\n\n\t\tloanParamsIdList = ProtocolSettingsLike(sovrynContractAddress).setupLoanParams(loanParamsList);\n\t\tfor (uint256 i = 0; i < loanParamsIdList.length; i++) {\n\t\t\tloanParamsIds[\n\t\t\t\tuint256(\n\t\t\t\t\tkeccak256(\n\t\t\t\t\t\tabi.encodePacked(\n\t\t\t\t\t\t\tloanParamsList[i].collateralToken,\n\t\t\t\t\t\t\tareTorqueLoans // isTorqueLoan\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t] = loanParamsIdList[i];\n\t\t}\n\t}\n\n\tfunction disableLoanParams(address[] calldata collateralTokens, bool[] calldata isTorqueLoans) external onlyAdmin {\n\t\trequire(collateralTokens.length == isTorqueLoans.length, \"count mismatch\");\n\n\t\tbytes32[] memory loanParamsIdList = new bytes32[](collateralTokens.length);\n\t\tfor (uint256 i = 0; i < collateralTokens.length; i++) {\n\t\t\tuint256 id = uint256(keccak256(abi.encodePacked(collateralTokens[i], isTorqueLoans[i])));\n\t\t\tloanParamsIdList[i] = loanParamsIds[id];\n\t\t\tdelete loanParamsIds[id];\n\t\t}\n\n\t\tProtocolSettingsLike(sovrynContractAddress).disableLoanParams(loanParamsIdList);\n\t}\n\n\t// These params should be percentages represented like so: 5% = 5000000000000000000\n\t// rateMultiplier + baseRate can't exceed 100%\n\tfunction setDemandCurve(\n\t\tuint256 _baseRate,\n\t\tuint256 _rateMultiplier,\n\t\tuint256 _lowUtilBaseRate,\n\t\tuint256 _lowUtilRateMultiplier,\n\t\tuint256 _targetLevel,\n\t\tuint256 _kinkLevel,\n\t\tuint256 _maxScaleRate\n\t) public onlyAdmin {\n\t\trequire(_rateMultiplier.add(_baseRate) <= WEI_PERCENT_PRECISION, \"curve params too high\");\n\t\trequire(_lowUtilRateMultiplier.add(_lowUtilBaseRate) <= WEI_PERCENT_PRECISION, \"curve params too high\");\n\n\t\trequire(_targetLevel <= WEI_PERCENT_PRECISION && _kinkLevel <= WEI_PERCENT_PRECISION, \"levels too high\");\n\n\t\tbaseRate = _baseRate;\n\t\trateMultiplier = _rateMultiplier;\n\t\tlowUtilBaseRate = _lowUtilBaseRate;\n\t\tlowUtilRateMultiplier = _lowUtilRateMultiplier;\n\n\t\ttargetLevel = _targetLevel; // 80 ether\n\t\tkinkLevel = _kinkLevel; // 90 ether\n\t\tmaxScaleRate = _maxScaleRate; // 100 ether\n\t}\n\n\tfunction toggleFunctionPause(\n\t\tstring memory funcId, // example: \"mint(uint256,uint256)\"\n\t\tbool isPaused\n\t) public onlyAdmin {\n\t\t// keccak256(\"iToken_FunctionPause\")\n\t\tbytes32 slot =\n\t\t\tkeccak256(\n\t\t\t\tabi.encodePacked(\n\t\t\t\t\tbytes4(keccak256(abi.encodePacked(funcId))),\n\t\t\t\t\tuint256(0xd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2)\n\t\t\t\t)\n\t\t\t);\n\t\tassembly {\n\t\t\tsstore(slot, isPaused)\n\t\t}\n\t}\n\n\t/**\n\t * sets the transaction limit per token address\n\t * @param addresses the token addresses\n\t * @param limits the limit denominated in the currency of the token address\n\t * */\n\tfunction setTransactionLimits(address[] memory addresses, uint256[] memory limits) public onlyOwner {\n\t\trequire(addresses.length == limits.length, \"mismatched array lengths\");\n\t\tfor (uint256 i = 0; i < addresses.length; i++) {\n\t\t\ttransactionLimit[addresses[i]] = limits[i];\n\t\t}\n\t\temit SetTransactionLimits(addresses, limits);\n\t}\n}\n"
      },
      "contracts/mockup/previousLoanToken/PreviousLoanToken.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"../../connectors/loantoken/AdvancedTokenStorage.sol\";\n\n//@todo can I change this proxy to EIP-1822 proxy standard, please. https://eips.ethereum.org/EIPS/eip-1822. It's really hard to work with this.\ncontract PreviousLoanToken is AdvancedTokenStorage {\n\t// It is important to maintain the variables order so the delegate calls can access sovrynContractAddress and wrbtcTokenAddress\n\taddress public sovrynContractAddress;\n\taddress public wrbtcTokenAddress;\n\taddress internal target_;\n\n\tconstructor(\n\t\taddress _newOwner,\n\t\taddress _newTarget,\n\t\taddress _sovrynContractAddress,\n\t\taddress _wrbtcTokenAddress\n\t) public {\n\t\ttransferOwnership(_newOwner);\n\t\t_setTarget(_newTarget);\n\t\t_setSovrynContractAddress(_sovrynContractAddress);\n\t\t_setWrbtcTokenAddress(_wrbtcTokenAddress);\n\t}\n\n\tfunction() external payable {\n\t\tif (gasleft() <= 2300) {\n\t\t\treturn;\n\t\t}\n\n\t\taddress target = target_;\n\t\tbytes memory data = msg.data;\n\t\tassembly {\n\t\t\tlet result := delegatecall(gas, target, add(data, 0x20), mload(data), 0, 0)\n\t\t\tlet size := returndatasize\n\t\t\tlet ptr := mload(0x40)\n\t\t\treturndatacopy(ptr, 0, size)\n\t\t\tswitch result\n\t\t\t\tcase 0 {\n\t\t\t\t\trevert(ptr, size)\n\t\t\t\t}\n\t\t\t\tdefault {\n\t\t\t\t\treturn(ptr, size)\n\t\t\t\t}\n\t\t}\n\t}\n\n\tfunction setTarget(address _newTarget) public onlyOwner {\n\t\t_setTarget(_newTarget);\n\t}\n\n\tfunction _setTarget(address _newTarget) internal {\n\t\trequire(Address.isContract(_newTarget), \"target not a contract\");\n\t\ttarget_ = _newTarget;\n\t}\n\n\tfunction _setSovrynContractAddress(address _sovrynContractAddress) internal {\n\t\trequire(Address.isContract(_sovrynContractAddress), \"sovryn not a contract\");\n\t\tsovrynContractAddress = _sovrynContractAddress;\n\t}\n\n\tfunction _setWrbtcTokenAddress(address _wrbtcTokenAddress) internal {\n\t\trequire(Address.isContract(_wrbtcTokenAddress), \"wrbtc not a contract\");\n\t\twrbtcTokenAddress = _wrbtcTokenAddress;\n\t}\n\n\t//@todo add check for double init, idk but init usually can be called only once.\n\tfunction initialize(\n\t\taddress _loanTokenAddress,\n\t\tstring memory _name,\n\t\tstring memory _symbol\n\t) public onlyOwner {\n\t\tloanTokenAddress = _loanTokenAddress;\n\n\t\tname = _name;\n\t\tsymbol = _symbol;\n\t\tdecimals = IERC20(loanTokenAddress).decimals();\n\n\t\tinitialPrice = 10**18; // starting price of 1\n\t}\n}\n"
      },
      "contracts/connectors/loantoken/LoanToken.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"./AdvancedTokenStorage.sol\";\n\n/**\n * @title Loan Token contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * A loan token (iToken) is created as a proxy to an upgradable token contract.\n *\n * Examples of loan tokens on Sovryn are iRBTC, iDOC, iUSDT, iBPro,\n * iSOV (near future).\n *\n * Lenders receive iTokens that collect interest from the lending pool\n * which they can redeem by withdrawing them. The i in iToken stands for interest.\n *\n * Do not confuse iTokens with underlying tokens. iDOC is an iToken (loan token)\n * whilest DOC is the underlying token (currency).\n *\n * @dev TODO: can I change this proxy to EIP-1822 proxy standard, please.\n *   https://eips.ethereum.org/EIPS/eip-1822. It's really hard to work with this.\n * */\ncontract LoanToken is AdvancedTokenStorage {\n\t/// @dev It is important to maintain the variables order so the delegate\n\t/// calls can access sovrynContractAddress and wrbtcTokenAddress\n\taddress public sovrynContractAddress;\n\taddress public wrbtcTokenAddress;\n\taddress internal target_;\n\taddress public admin;\n\n\t/**\n\t * @notice Deploy loan token proxy.\n\t *   Sets ERC20 parameters of the token.\n\t *\n\t * @param _newOwner The address of the new owner.\n\t * @param _newTarget The address of the new target contract instance.\n\t * @param _sovrynContractAddress The address of the new sovrynContract instance.\n\t * @param _wrbtcTokenAddress The address of the new wrBTC instance.\n\t * */\n\tconstructor(\n\t\taddress _newOwner,\n\t\taddress _newTarget,\n\t\taddress _sovrynContractAddress,\n\t\taddress _wrbtcTokenAddress\n\t) public {\n\t\ttransferOwnership(_newOwner);\n\t\t_setTarget(_newTarget);\n\t\t_setSovrynContractAddress(_sovrynContractAddress);\n\t\t_setWrbtcTokenAddress(_wrbtcTokenAddress);\n\t}\n\n\t/**\n\t * @notice Fallback function performs a delegate call\n\t * to the actual implementation address is pointing this proxy.\n\t * Returns whatever the implementation call returns.\n\t * */\n\tfunction() external payable {\n\t\tif (gasleft() <= 2300) {\n\t\t\treturn;\n\t\t}\n\n\t\taddress target = target_;\n\t\tbytes memory data = msg.data;\n\t\tassembly {\n\t\t\tlet result := delegatecall(gas, target, add(data, 0x20), mload(data), 0, 0)\n\t\t\tlet size := returndatasize\n\t\t\tlet ptr := mload(0x40)\n\t\t\treturndatacopy(ptr, 0, size)\n\t\t\tswitch result\n\t\t\t\tcase 0 {\n\t\t\t\t\trevert(ptr, size)\n\t\t\t\t}\n\t\t\t\tdefault {\n\t\t\t\t\treturn(ptr, size)\n\t\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Public owner setter for target address.\n\t * @dev Calls internal setter.\n\t * @param _newTarget The address of the new target contract instance.\n\t * */\n\tfunction setTarget(address _newTarget) public onlyOwner {\n\t\t_setTarget(_newTarget);\n\t}\n\n\t/**\n\t * @notice Internal setter for target address.\n\t * @param _newTarget The address of the new target contract instance.\n\t * */\n\tfunction _setTarget(address _newTarget) internal {\n\t\trequire(Address.isContract(_newTarget), \"target not a contract\");\n\t\ttarget_ = _newTarget;\n\t}\n\n\t/**\n\t * @notice Internal setter for sovrynContract address.\n\t * @param _sovrynContractAddress The address of the new sovrynContract instance.\n\t * */\n\tfunction _setSovrynContractAddress(address _sovrynContractAddress) internal {\n\t\trequire(Address.isContract(_sovrynContractAddress), \"sovryn not a contract\");\n\t\tsovrynContractAddress = _sovrynContractAddress;\n\t}\n\n\t/**\n\t * @notice Internal setter for wrBTC address.\n\t * @param _wrbtcTokenAddress The address of the new wrBTC instance.\n\t * */\n\tfunction _setWrbtcTokenAddress(address _wrbtcTokenAddress) internal {\n\t\trequire(Address.isContract(_wrbtcTokenAddress), \"wrbtc not a contract\");\n\t\twrbtcTokenAddress = _wrbtcTokenAddress;\n\t}\n\n\t/**\n\t * @notice Public owner cloner for pointed loan token.\n\t *   Sets ERC20 parameters of the token.\n\t *\n\t * @dev TODO: add check for double init.\n\t *   idk but init usually can be called only once.\n\t *\n\t * @param _loanTokenAddress The address of the pointed loan token instance.\n\t * @param _name The ERC20 token name.\n\t * @param _symbol The ERC20 token symbol.\n\t * */\n\tfunction initialize(\n\t\taddress _loanTokenAddress,\n\t\tstring memory _name,\n\t\tstring memory _symbol\n\t) public onlyOwner {\n\t\tloanTokenAddress = _loanTokenAddress;\n\n\t\tname = _name;\n\t\tsymbol = _symbol;\n\t\tdecimals = IERC20(loanTokenAddress).decimals();\n\n\t\tinitialPrice = 10**18; /// starting price of 1\n\t}\n}\n"
      },
      "contracts/feeds/PriceFeedsConstants.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"../interfaces/IWrbtcERC20.sol\";\nimport \"../openzeppelin/Address.sol\";\n\n/**\n * @title The Price Feeds Constants contract.\n *\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract keep the addresses of token instances for wrBTC, base token\n * and protocol token.\n * */\ncontract Constants {\n\tIWrbtcERC20 public wrbtcToken;\n\tIWrbtcERC20 public baseToken;\n\taddress internal protocolTokenAddress;\n\n\t/**\n\t * @notice Set wrBTC token address.\n\t *\n\t * @param _wrbtcTokenAddress The address of the wrapped wrBTC token.\n\t * */\n\tfunction _setWrbtcToken(address _wrbtcTokenAddress) internal {\n\t\trequire(Address.isContract(_wrbtcTokenAddress), \"_wrbtcTokenAddress not a contract\");\n\t\twrbtcToken = IWrbtcERC20(_wrbtcTokenAddress);\n\t}\n\n\t/**\n\t * @notice Set protocol token address.\n\t *\n\t * @param _protocolTokenAddress The address of the protocol token.\n\t * */\n\tfunction _setProtocolTokenAddress(address _protocolTokenAddress) internal {\n\t\trequire(Address.isContract(_protocolTokenAddress), \"_protocolTokenAddress not a contract\");\n\t\tprotocolTokenAddress = _protocolTokenAddress;\n\t}\n\n\t/**\n\t * @notice Set base token address.\n\t *\n\t * @param _baseTokenAddress The address of the base token.\n\t * */\n\tfunction _setBaseToken(address _baseTokenAddress) internal {\n\t\trequire(Address.isContract(_baseTokenAddress), \"_baseTokenAddress not a contract\");\n\t\tbaseToken = IWrbtcERC20(_baseTokenAddress);\n\t}\n}\n"
      },
      "contracts/governance/StakingRewards/StakingRewards.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"./StakingRewardsStorage.sol\";\nimport \"../../openzeppelin/Initializable.sol\";\nimport \"../../openzeppelin/SafeMath.sol\";\nimport \"../../openzeppelin/Address.sol\";\n\n/**\n * @title Staking Rewards Contract.\n * @notice This is a trial incentive program.\n * In this, the SOV emitted and becoming liquid from the Adoption Fund could be utilized\n * to offset the higher APY's offered for Liquidity Mining events.\n * Vesting contract stakes are excluded from these rewards.\n * Only wallets which have staked previously liquid SOV are eligible for these rewards.\n * Tokenholders who stake their SOV receive staking rewards, a pro-rata share\n * of the revenue that the platform generates from various transaction fees\n * plus revenues from stakers who have a portion of their SOV slashed for\n * early unstaking.\n * */\ncontract StakingRewards is StakingRewardsStorage, Initializable {\n\tusing SafeMath for uint256;\n\n\t/// @notice Emitted when SOV is withdrawn\n\t/// @param receiver The address which recieves the SOV\n\t/// @param amount The amount withdrawn from the Smart Contract\n\tevent RewardWithdrawn(address indexed receiver, uint256 amount);\n\n\t/**\n\t * @notice Replacement of constructor by initialize function for Upgradable Contracts\n\t * This function will be called only once by the owner.\n\t * @param _SOV SOV token address\n\t * @param _staking StakingProxy address should be passed\n\t * */\n\tfunction initialize(address _SOV, IStaking _staking) external onlyOwner initializer {\n\t\trequire(_SOV != address(0), \"Invalid SOV Address.\");\n\t\trequire(Address.isContract(_SOV), \"_SOV not a contract\");\n\t\tSOV = IERC20(_SOV);\n\t\tstaking = _staking;\n\t\tstartTime = staking.timestampToLockDate(block.timestamp);\n\t\tsetMaxDuration(15 * TWO_WEEKS);\n\t\tdeploymentBlock = _getCurrentBlockNumber();\n\t}\n\n\t/**\n\t * @notice Stops the current rewards program.\n\t * @dev All stakes existing on the contract at the point in time of\n\t * cancellation continue accruing rewards until the end of the staking\n\t * period being rewarded\n\t * */\n\tfunction stop() external onlyOwner {\n\t\trequire(stopBlock == 0, \"Already stopped\");\n\t\tstopBlock = _getCurrentBlockNumber();\n\t}\n\n\t/**\n\t * @notice Sets the max duration\n\t * @dev Rewards can be collected for a maximum duration at a time. This\n\t * is to avoid Block Gas Limit failures. Setting it zero would mean that it will loop\n\t * through the entire duration since the start of rewards program.\n\t * It should ideally be set to a value, for which the rewards can be easily processed.\n\t * @param _duration Max duration for which rewards can be collected at a go (in seconds)\n\t * */\n\tfunction setMaxDuration(uint256 _duration) public onlyOwner {\n\t\tmaxDuration = _duration;\n\t}\n\n\t/**\n\t * @notice Collect rewards\n\t * @dev User calls this function to collect SOV staking rewards as per the SIP-0024 program.\n\t * The weighted stake is calculated using getPriorWeightedStake. Block number sent to the functon\n\t * must be a finalised block, hence we deduct 1 from the current block. User is only allowed to withdraw\n\t * after intervals of 14 days.\n\t * */\n\tfunction collectReward() external {\n\t\tuint256 withdrawalTime;\n\t\tuint256 amount;\n\t\t(withdrawalTime, amount) = getStakerCurrentReward(true);\n\t\trequire(withdrawalTime > 0 && amount > 0, \"no valid reward\");\n\t\twithdrawals[msg.sender] = withdrawalTime;\n\t\t_payReward(msg.sender, amount);\n\t}\n\n\t/**\n\t * @notice Internal function to calculate weighted stake\n\t * @dev If the rewards program is stopped, the user will still continue to\n\t * earn till the end of staking period based on the stop block.\n\t * @param _staker Staker address\n\t * @param _block Last finalised block\n\t * @param _date The date to compute prior weighted stakes\n\t * @return The weighted stake\n\t * */\n\tfunction _computeRewardForDate(\n\t\taddress _staker,\n\t\tuint256 _block,\n\t\tuint256 _date\n\t) internal view returns (uint256 weightedStake) {\n\t\tweightedStake = staking.getPriorWeightedStake(_staker, _block, _date);\n\t\tif (stopBlock > 0) {\n\t\t\tuint256 previousWeightedStake = staking.getPriorWeightedStake(_staker, stopBlock, _date);\n\t\t\tif (previousWeightedStake < weightedStake) {\n\t\t\t\tweightedStake = previousWeightedStake;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Internal function to pay rewards\n\t * @dev Base rate is annual, but we pay interest for 14 days,\n\t * which is 1/26 of one staking year (1092 days)\n\t * @param _staker User address\n\t * @param amount the reward amount\n\t * */\n\tfunction _payReward(address _staker, uint256 amount) internal {\n\t\trequire(SOV.balanceOf(address(this)) >= amount, \"not enough funds to reward user\");\n\t\tclaimedBalances[_staker] = claimedBalances[_staker].add(amount);\n\t\t_transferSOV(_staker, amount);\n\t}\n\n\t/**\n\t * @notice Withdraws all token from the contract by Multisig.\n\t * @param _receiverAddress The address where the tokens has to be transferred.\n\t */\n\tfunction withdrawTokensByOwner(address _receiverAddress) external onlyOwner {\n\t\tuint256 value = SOV.balanceOf(address(this));\n\t\t_transferSOV(_receiverAddress, value);\n\t}\n\n\t/**\n\t * @notice transfers SOV tokens to given address\n\t * @param _receiver the address of the SOV receiver\n\t * @param _amount the amount to be transferred\n\t */\n\tfunction _transferSOV(address _receiver, uint256 _amount) internal {\n\t\trequire(_amount != 0, \"amount invalid\");\n\t\trequire(SOV.transfer(_receiver, _amount), \"transfer failed\");\n\t\temit RewardWithdrawn(_receiver, _amount);\n\t}\n\n\t/**\n\t * @notice Get staker's current accumulated reward\n\t * @dev The collectReward() function internally calls this function to calculate reward amount\n\t * @param considerMaxDuration True: Runs for the maximum duration - used in tx not to run out of gas\n\t * False - to query total rewards\n\t * @return The timestamp of last withdrawal\n\t * @return The accumulated reward\n\t */\n\tfunction getStakerCurrentReward(bool considerMaxDuration) public view returns (uint256 lastWithdrawalInterval, uint256 amount) {\n\t\tuint256 weightedStake;\n\t\tuint256 lastFinalisedBlock = _getCurrentBlockNumber() - 1;\n\t\tuint256 currentTS = block.timestamp;\n\t\tuint256 addedMaxDuration;\n\t\tuint256 duration;\n\t\tuint256 referenceBlock;\n\t\taddress staker = msg.sender;\n\t\tuint256 lastWithdrawal = withdrawals[staker];\n\n\t\tuint256 lastStakingInterval = staking.timestampToLockDate(currentTS);\n\t\tlastWithdrawalInterval = lastWithdrawal > 0 ? lastWithdrawal : startTime;\n\t\tif (lastStakingInterval < lastWithdrawalInterval) return (0, 0);\n\n\t\tif (considerMaxDuration) {\n\t\t\taddedMaxDuration = lastWithdrawalInterval.add(maxDuration);\n\t\t\tduration = addedMaxDuration < currentTS ? staking.timestampToLockDate(addedMaxDuration) : lastStakingInterval;\n\t\t} else {\n\t\t\tduration = lastStakingInterval;\n\t\t}\n\n\t\tfor (uint256 i = lastWithdrawalInterval; i < duration; i += TWO_WEEKS) {\n\t\t\treferenceBlock = lastFinalisedBlock.sub(((currentTS.sub(i)).div(32)));\n\t\t\tif (referenceBlock < deploymentBlock) referenceBlock = deploymentBlock;\n\t\t\tweightedStake = weightedStake.add(_computeRewardForDate(staker, referenceBlock, i));\n\t\t}\n\n\t\tif (weightedStake == 0) return (0, 0);\n\t\tlastWithdrawalInterval = duration;\n\t\tamount = weightedStake.mul(BASE_RATE).div(DIVISOR);\n\t}\n\n\t/**\n\t * @notice Determine the current Block Number\n\t * @dev This is segregated from the _getPriorUserStakeByDate function to better test\n\t * advancing blocks functionality using Mock Contracts\n\t * */\n\tfunction _getCurrentBlockNumber() internal view returns (uint256) {\n\t\treturn block.number;\n\t}\n}\n"
      },
      "contracts/governance/StakingRewards/StakingRewardsStorage.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../../interfaces/IERC20.sol\";\nimport \"../Staking/IStaking.sol\";\nimport \"../../openzeppelin/Ownable.sol\";\n\n/**\n * @title Staking Rewards Storage Contract.\n * @notice Just the storage part of staking rewards contract, no functions,\n * only constant, variables and required structures (mappings).\n * Used by StackingRewardsProxy.\n *\n * What is SOV staking rewards - SIP-0024?\n * The purpose of the SOV staking rewards - SIP-0024 is to reward,\n * \"marginal stakers\" (ie, stakers by choice, not currently vesting) with liquid SOV\n * at the beginning of each new staking interval.\n * */\ncontract StakingRewardsStorage is Ownable {\n\t/// @notice The SOV token contract.\n\tIERC20 public SOV;\n\n\t///@notice the staking proxy contract address\n\tIStaking public staking;\n\n\t/// @notice 2 weeks in seconds.\n\tuint256 public constant TWO_WEEKS = 1209600;\n\n\t/// @notice Annual Base Rate - it is the maximum interest rate(APY)\n\tuint256 public constant BASE_RATE = 2975;\n\n\t/// @notice DIVISOR is set as 2600000 = 26 (num periods per year) * 10 (max voting weight) * 10000 (2975 -> 0.2975)\n\tuint256 public constant DIVISOR = 2600000;\n\n\t/// @notice Maximum duration to collect rewards at one go\n\tuint256 public maxDuration;\n\n\t/// @notice Represents the time when the contract is deployed\n\tuint256 public startTime;\n\n\t/// @notice Represents the block when the Staking Rewards pogram is stopped\n\tuint256 public stopBlock;\n\n\t/// @notice User Address -> Last Withdrawn Timestamp\n\tmapping(address => uint256) public withdrawals;\n\n\t/// @notice User Address -> Claimed Balance\n\tmapping(address => uint256) public claimedBalances;\n\n\t/// @notice Represents the block when the StakingRwards Program is started\n\tuint256 public deploymentBlock;\n}\n"
      },
      "contracts/openzeppelin/Initializable.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\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 a proxied contract can't have 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 * 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 */\ncontract Initializable {\n\t/**\n\t * @dev Indicates that the contract has been initialized.\n\t */\n\tbool private _initialized;\n\n\t/**\n\t * @dev Indicates that the contract is in the process of being initialized.\n\t */\n\tbool private _initializing;\n\n\t/**\n\t * @dev Modifier to protect an initializer function from being invoked twice.\n\t */\n\tmodifier initializer() {\n\t\trequire(_initializing || !_initialized, \"Initializable: contract is already initialized\");\n\n\t\tbool isTopLevelCall = !_initializing;\n\t\tif (isTopLevelCall) {\n\t\t\t_initializing = true;\n\t\t\t_initialized = true;\n\t\t}\n\n\t\t_;\n\n\t\tif (isTopLevelCall) {\n\t\t\t_initializing = false;\n\t\t}\n\t}\n}\n"
      },
      "contracts/governance/Staking/IStaking.sol": {
        "content": "pragma solidity ^0.5.17;\n\n/**\n * @title Interface for contract governance/Staking/Staking.sol\n * @dev Interfaces are used to cast a contract address into a callable instance.\n */\ninterface IStaking {\n\tfunction stakesBySchedule(\n\t\tuint256 amount,\n\t\tuint256 cliff,\n\t\tuint256 duration,\n\t\tuint256 intervalLength,\n\t\taddress stakeFor,\n\t\taddress delegatee\n\t) external;\n\n\tfunction stake(\n\t\tuint96 amount,\n\t\tuint256 until,\n\t\taddress stakeFor,\n\t\taddress delegatee\n\t) external;\n\n\tfunction getPriorVotes(\n\t\taddress account,\n\t\tuint256 blockNumber,\n\t\tuint256 date\n\t) external view returns (uint96);\n\n\tfunction getPriorTotalVotingPower(uint32 blockNumber, uint256 time) external view returns (uint96);\n\n\tfunction getPriorWeightedStake(\n\t\taddress account,\n\t\tuint256 blockNumber,\n\t\tuint256 date\n\t) external view returns (uint96);\n\n\tfunction timestampToLockDate(uint256 timestamp) external view returns (uint256 lockDate);\n}\n"
      },
      "contracts/mockup/StakingRewardsMockUp.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../governance/StakingRewards/StakingRewards.sol\";\nimport \"./BlockMockUp.sol\";\n\n/**\n * @title Staking Rewards Contract MockUp\n * @notice This is used for Testing\n * */\ncontract StakingRewardsMockUp is StakingRewards {\n\t///@notice the block mock up contract\n\tBlockMockUp public blockMockUp;\n\n\tusing SafeMath for uint256;\n\n\t/**\n\t * @notice gets block number from BlockMockUp\n\t * @param _blockMockUp the address of BlockMockUp\n\t */\n\tfunction setBlockMockUpAddr(address _blockMockUp) public onlyOwner {\n\t\trequire(_blockMockUp != address(0), \"block mockup address invalid\");\n\t\tblockMockUp = BlockMockUp(_blockMockUp);\n\t}\n\n\t/**\n\t * @notice Determine the current Block Number from BlockMockUp\n\t * */\n\tfunction _getCurrentBlockNumber() internal view returns (uint256) {\n\t\treturn blockMockUp.getBlockNum();\n\t}\n}\n"
      },
      "contracts/mockup/BlockMockUp.sol": {
        "content": "pragma solidity 0.5.17;\n\n/**\n * @title Used to get and set mock block number.\n */\ncontract BlockMockUp {\n\tuint256 public blockNum;\n\n\t/**\n\t * @notice To get the `blockNum`.\n\t * @return _blockNum The block number.\n\t */\n\tfunction getBlockNum() public view returns (uint256 _blockNum) {\n\t\treturn blockNum;\n\t}\n\n\t/**\n\t * @notice To set the `blockNum`.\n\t * @param _blockNum The block number.\n\t */\n\tfunction setBlockNum(uint256 _blockNum) public {\n\t\tblockNum = _blockNum;\n\t}\n}\n"
      },
      "contracts/mockup/StakingMock.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../governance/Staking/Staking.sol\";\nimport \"./BlockMockUp.sol\";\n\ncontract StakingMock is Staking {\n\t///@notice the block mock up contract\n\tBlockMockUp public blockMockUp;\n\n\t/**\n\t * @notice gets block number from BlockMockUp\n\t * @param _blockMockUp the address of BlockMockUp\n\t */\n\tfunction setBlockMockUpAddr(address _blockMockUp) public onlyOwner {\n\t\trequire(_blockMockUp != address(0), \"block mockup address invalid\");\n\t\tblockMockUp = BlockMockUp(_blockMockUp);\n\t}\n\n\t/**\n\t * @notice Determine the current Block Number from BlockMockUp\n\t * */\n\tfunction _getCurrentBlockNumber() internal view returns (uint256) {\n\t\treturn blockMockUp.getBlockNum();\n\t}\n}\n"
      },
      "contracts/governance/Staking/Staking.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"./WeightedStaking.sol\";\nimport \"./IStaking.sol\";\nimport \"../../rsk/RSKAddrValidator.sol\";\nimport \"../Vesting/ITeamVesting.sol\";\nimport \"../Vesting/IVesting.sol\";\nimport \"../ApprovalReceiver.sol\";\nimport \"../../openzeppelin/SafeMath.sol\";\n\n/**\n * @title Staking contract.\n * @notice Pay-in and pay-out function for staking and withdrawing tokens.\n * Staking is delegated and vested: To gain voting power, SOV holders must\n * stake their SOV for a given period of time. Aside from Bitocracy\n * participation, there's a financially-rewarding reason for staking SOV.\n * Tokenholders who stake their SOV receive staking rewards, a pro-rata share\n * of the revenue that the platform generates from various transaction fees\n * plus revenues from stakers who have a portion of their SOV slashed for\n * early unstaking.\n * */\ncontract Staking is IStaking, WeightedStaking, ApprovalReceiver {\n\tusing SafeMath for uint256;\n\n\t/// @notice Constant used for computing the vesting dates.\n\tuint256 constant FOUR_WEEKS = 4 weeks;\n\n\t/**\n\t * @notice Stake the given amount for the given duration of time.\n\t * @param amount The number of tokens to stake.\n\t * @param until Timestamp indicating the date until which to stake.\n\t * @param stakeFor The address to stake the tokens for or 0x0 if staking for oneself.\n\t * @param delegatee The address of the delegatee or 0x0 if there is none.\n\t * */\n\tfunction stake(\n\t\tuint96 amount,\n\t\tuint256 until,\n\t\taddress stakeFor,\n\t\taddress delegatee\n\t) external {\n\t\t_stake(msg.sender, amount, until, stakeFor, delegatee, false);\n\t}\n\n\t/**\n\t * @notice Stake the given amount for the given duration of time.\n\t * @dev This function will be invoked from receiveApproval\n\t * @dev SOV.approveAndCall -> this.receiveApproval -> this.stakeWithApproval\n\t * @param sender The sender of SOV.approveAndCall\n\t * @param amount The number of tokens to stake.\n\t * @param until Timestamp indicating the date until which to stake.\n\t * @param stakeFor The address to stake the tokens for or 0x0 if staking for oneself.\n\t * @param delegatee The address of the delegatee or 0x0 if there is none.\n\t * */\n\tfunction stakeWithApproval(\n\t\taddress sender,\n\t\tuint96 amount,\n\t\tuint256 until,\n\t\taddress stakeFor,\n\t\taddress delegatee\n\t) public onlyThisContract {\n\t\t_stake(sender, amount, until, stakeFor, delegatee, false);\n\t}\n\n\t/**\n\t * @notice Send sender's tokens to this contract and update its staked balance.\n\t * @param sender The sender of the tokens.\n\t * @param amount The number of tokens to send.\n\t * @param until The date until which the tokens will be staked.\n\t * @param stakeFor The beneficiary whose stake will be increased.\n\t * @param delegatee The address of the delegatee or stakeFor if default 0x0.\n\t * @param timeAdjusted Whether fixing date to stacking periods or not.\n\t * */\n\tfunction _stake(\n\t\taddress sender,\n\t\tuint96 amount,\n\t\tuint256 until,\n\t\taddress stakeFor,\n\t\taddress delegatee,\n\t\tbool timeAdjusted\n\t) internal {\n\t\trequire(amount > 0, \"Staking::stake: amount of tokens to stake needs to be bigger than 0\");\n\n\t\tif (!timeAdjusted) {\n\t\t\tuntil = timestampToLockDate(until);\n\t\t}\n\t\trequire(until > block.timestamp, \"Staking::timestampToLockDate: staking period too short\");\n\n\t\t/// @dev Stake for the sender if not specified otherwise.\n\t\tif (stakeFor == address(0)) {\n\t\t\tstakeFor = sender;\n\t\t}\n\n\t\t/// @dev Delegate for stakeFor if not specified otherwise.\n\t\tif (delegatee == address(0)) {\n\t\t\tdelegatee = stakeFor;\n\t\t}\n\n\t\t/// @dev Do not stake longer than the max duration.\n\t\tif (!timeAdjusted) {\n\t\t\tuint256 latest = timestampToLockDate(block.timestamp + MAX_DURATION);\n\t\t\tif (until > latest) until = latest;\n\t\t}\n\n\t\tuint96 previousBalance = currentBalance(stakeFor, until);\n\n\t\t/// @dev Increase stake.\n\t\t_increaseStake(sender, amount, stakeFor, until);\n\n\t\t// @dev Previous version wasn't working properly for the following case:\n\t\t//\t\tdelegate checkpoint wasn't updating for the second and next stakes for the same date\n\t\t//\t\tif  first stake was withdrawn completely and stake was delegated to the staker\n\t\t//\t\t(no delegation to another address).\n\t\taddress previousDelegatee = delegates[stakeFor][until];\n\t\tif (previousDelegatee != delegatee) {\n\t\t\t/// @dev Update delegatee.\n\t\t\tdelegates[stakeFor][until] = delegatee;\n\n\t\t\t/// @dev Decrease stake on previous balance for previous delegatee.\n\t\t\t_decreaseDelegateStake(previousDelegatee, until, previousBalance);\n\n\t\t\t/// @dev Add previousBalance to amount.\n\t\t\tamount = add96(previousBalance, amount, \"Staking::stake: balance overflow\");\n\t\t}\n\n\t\t/// @dev Increase stake.\n\t\t_increaseDelegateStake(delegatee, until, amount);\n\t\temit DelegateChanged(stakeFor, until, previousDelegatee, delegatee);\n\t}\n\n\t/**\n\t * @notice Extend the staking duration until the specified date.\n\t * @param previousLock The old unlocking timestamp.\n\t * @param until The new unlocking timestamp in seconds.\n\t * */\n\tfunction extendStakingDuration(uint256 previousLock, uint256 until) public {\n\t\tuntil = timestampToLockDate(until);\n\t\trequire(previousLock <= until, \"Staking::extendStakingDuration: cannot reduce the staking duration\");\n\n\t\t/// @dev Do not exceed the max duration, no overflow possible.\n\t\tuint256 latest = timestampToLockDate(block.timestamp + MAX_DURATION);\n\t\tif (until > latest) until = latest;\n\n\t\t/// @dev Update checkpoints.\n\t\t/// @dev TODO James: Can reading stake at block.number -1 cause trouble with multiple tx in a block?\n\t\tuint96 amount = _getPriorUserStakeByDate(msg.sender, previousLock, block.number - 1);\n\t\trequire(amount > 0, \"Staking::extendStakingDuration: nothing staked until the previous lock date\");\n\t\t_decreaseUserStake(msg.sender, previousLock, amount);\n\t\t_increaseUserStake(msg.sender, until, amount);\n\t\t_decreaseDailyStake(previousLock, amount);\n\t\t_increaseDailyStake(until, amount);\n\n\t\t/// @dev Delegate might change: if there is already a delegate set for the until date, it will remain the delegate for this position\n\t\taddress delegateFrom = delegates[msg.sender][previousLock];\n\t\taddress delegateTo = delegates[msg.sender][until];\n\t\tif (delegateTo == address(0)) {\n\t\t\tdelegateTo = delegateFrom;\n\t\t\tdelegates[msg.sender][until] = delegateFrom;\n\t\t}\n\t\tdelegates[msg.sender][previousLock] = address(0);\n\t\t_decreaseDelegateStake(delegateFrom, previousLock, amount);\n\t\t_increaseDelegateStake(delegateTo, until, amount);\n\n\t\temit ExtendedStakingDuration(msg.sender, previousLock, until, amount);\n\t}\n\n\t/**\n\t * @notice Send sender's tokens to this contract and update its staked balance.\n\t * @param sender The sender of the tokens.\n\t * @param amount The number of tokens to send.\n\t * @param stakeFor The beneficiary whose stake will be increased.\n\t * @param until The date until which the tokens will be staked.\n\t * */\n\tfunction _increaseStake(\n\t\taddress sender,\n\t\tuint96 amount,\n\t\taddress stakeFor,\n\t\tuint256 until\n\t) internal {\n\t\t/// @dev Retrieve the SOV tokens.\n\t\tbool success = SOVToken.transferFrom(sender, address(this), amount);\n\t\trequire(success);\n\n\t\t/// @dev Increase staked balance.\n\t\tuint96 balance = currentBalance(stakeFor, until);\n\t\tbalance = add96(balance, amount, \"Staking::increaseStake: balance overflow\");\n\n\t\t/// @dev Update checkpoints.\n\t\t_increaseDailyStake(until, amount);\n\t\t_increaseUserStake(stakeFor, until, amount);\n\n\t\temit TokensStaked(stakeFor, amount, until, balance);\n\t}\n\n\t/**\n\t * @notice Stake tokens according to the vesting schedule.\n\t * @param amount The amount of tokens to stake.\n\t * @param cliff The time interval to the first withdraw.\n\t * @param duration The staking duration.\n\t * @param intervalLength The length of each staking interval when cliff passed.\n\t * @param stakeFor The address to stake the tokens for or 0x0 if staking for oneself.\n\t * @param delegatee The address of the delegatee or 0x0 if there is none.\n\t * */\n\tfunction stakesBySchedule(\n\t\tuint256 amount,\n\t\tuint256 cliff,\n\t\tuint256 duration,\n\t\tuint256 intervalLength,\n\t\taddress stakeFor,\n\t\taddress delegatee\n\t) public {\n\t\t/**\n\t\t * @dev Stake them until lock dates according to the vesting schedule.\n\t\t * Note: because staking is only possible in periods of 2 weeks,\n\t\t * the total duration might end up a bit shorter than specified\n\t\t * depending on the date of staking.\n\t\t * */\n\t\tuint256 start = timestampToLockDate(block.timestamp + cliff);\n\t\tif (duration > MAX_DURATION) {\n\t\t\tduration = MAX_DURATION;\n\t\t}\n\t\tuint256 end = timestampToLockDate(block.timestamp + duration);\n\t\tuint256 numIntervals = (end - start) / intervalLength + 1;\n\t\tuint256 stakedPerInterval = amount / numIntervals;\n\t\t/// @dev stakedPerInterval might lose some dust on rounding. Add it to the first staking date.\n\t\tif (numIntervals >= 1) {\n\t\t\t_stake(msg.sender, uint96(amount - stakedPerInterval * (numIntervals - 1)), start, stakeFor, delegatee, true);\n\t\t}\n\t\t/// @dev Stake the rest in 4 week intervals.\n\t\tfor (uint256 i = start + intervalLength; i <= end; i += intervalLength) {\n\t\t\t/// @dev Stakes for itself, delegates to the owner.\n\t\t\t_stake(msg.sender, uint96(stakedPerInterval), i, stakeFor, delegatee, true);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Withdraw the given amount of tokens if they are unlocked.\n\t * @param amount The number of tokens to withdraw.\n\t * @param until The date until which the tokens were staked.\n\t * @param receiver The receiver of the tokens. If not specified, send to the msg.sender\n\t * */\n\tfunction withdraw(\n\t\tuint96 amount,\n\t\tuint256 until,\n\t\taddress receiver\n\t) public {\n\t\t_withdraw(amount, until, receiver, false);\n\t\t// @dev withdraws tokens for lock date 2 weeks later than given lock date if sender is a contract\n\t\t//\t\twe need to check block.timestamp here\n\t\t_withdrawNext(amount, until, receiver, false);\n\t}\n\n\t/**\n\t * @notice Withdraw the given amount of tokens.\n\t * @param amount The number of tokens to withdraw.\n\t * @param until The date until which the tokens were staked.\n\t * @param receiver The receiver of the tokens. If not specified, send to the msg.sender\n\t * @dev Can be invoked only by whitelisted contract passed to governanceWithdrawVesting\n\t * */\n\tfunction governanceWithdraw(\n\t\tuint96 amount,\n\t\tuint256 until,\n\t\taddress receiver\n\t) public {\n\t\trequire(vestingWhitelist[msg.sender], \"unauthorized\");\n\n\t\t_withdraw(amount, until, receiver, true);\n\t\t// @dev withdraws tokens for lock date 2 weeks later than given lock date if sender is a contract\n\t\t//\t\twe don't need to check block.timestamp here\n\t\t_withdrawNext(amount, until, receiver, true);\n\t}\n\n\t/**\n\t * @notice Withdraw tokens for vesting contract.\n\t * @param vesting The address of Vesting contract.\n\t * @param receiver The receiver of the tokens. If not specified, send to the msg.sender\n\t * @dev Can be invoked only by whitelisted contract passed to governanceWithdrawVesting.\n\t * */\n\tfunction governanceWithdrawVesting(address vesting, address receiver) public onlyAuthorized {\n\t\tvestingWhitelist[vesting] = true;\n\t\tITeamVesting(vesting).governanceWithdrawTokens(receiver);\n\t\tvestingWhitelist[vesting] = false;\n\n\t\temit VestingTokensWithdrawn(vesting, receiver);\n\t}\n\n\t/**\n\t * @notice Send user' staked tokens to a receiver taking into account punishments.\n\t * Sovryn encourages long-term commitment and thinking. When/if you unstake before\n\t * the end of the staking period, a percentage of the original staking amount will\n\t * be slashed. This amount is also added to the reward pool and is distributed\n\t * between all other stakers.\n\t *\n\t * @param amount The number of tokens to withdraw.\n\t * @param until The date until which the tokens were staked.\n\t * @param receiver The receiver of the tokens. If not specified, send to the msg.sender\n\t * @param isGovernance Whether all tokens (true)\n\t * or just unlocked tokens (false).\n\t * */\n\tfunction _withdraw(\n\t\tuint96 amount,\n\t\tuint256 until,\n\t\taddress receiver,\n\t\tbool isGovernance\n\t) internal {\n\t\t// @dev it's very unlikely some one will have 1/10**18 SOV staked in Vesting contract\n\t\t//\t\tthis check is a part of workaround for Vesting.withdrawTokens issue\n\t\tif (amount == 1 && _isVestingContract()) {\n\t\t\treturn;\n\t\t}\n\t\tuntil = _adjustDateForOrigin(until);\n\t\t_validateWithdrawParams(amount, until);\n\n\t\t/// @dev Determine the receiver.\n\t\tif (receiver == address(0)) receiver = msg.sender;\n\n\t\t/// @dev Update the checkpoints.\n\t\t_decreaseDailyStake(until, amount);\n\t\t_decreaseUserStake(msg.sender, until, amount);\n\t\t_decreaseDelegateStake(delegates[msg.sender][until], until, amount);\n\n\t\t/// @dev Early unstaking should be punished.\n\t\tif (block.timestamp < until && !allUnlocked && !isGovernance) {\n\t\t\tuint96 punishedAmount = _getPunishedAmount(amount, until);\n\t\t\tamount -= punishedAmount;\n\n\t\t\t/// @dev punishedAmount can be 0 if block.timestamp are very close to 'until'\n\t\t\tif (punishedAmount > 0) {\n\t\t\t\trequire(address(feeSharing) != address(0), \"Staking::withdraw: FeeSharing address wasn't set\");\n\t\t\t\t/// @dev Move punished amount to fee sharing.\n\t\t\t\t/// @dev Approve transfer here and let feeSharing do transfer and write checkpoint.\n\t\t\t\tSOVToken.approve(address(feeSharing), punishedAmount);\n\t\t\t\tfeeSharing.transferTokens(address(SOVToken), punishedAmount);\n\t\t\t}\n\t\t}\n\n\t\t/// @dev transferFrom\n\t\tbool success = SOVToken.transfer(receiver, amount);\n\t\trequire(success, \"Staking::withdraw: Token transfer failed\");\n\n\t\temit StakingWithdrawn(msg.sender, amount, until, receiver, isGovernance);\n\t}\n\n\t// @dev withdraws tokens for lock date 2 weeks later than given lock date\n\tfunction _withdrawNext(\n\t\tuint96 amount,\n\t\tuint256 until,\n\t\taddress receiver,\n\t\tbool isGovernance\n\t) internal {\n\t\tif (_isVestingContract()) {\n\t\t\tuint256 nextLock = until.add(TWO_WEEKS);\n\t\t\tif (isGovernance || block.timestamp >= nextLock) {\n\t\t\t\tuint96 stake = _getPriorUserStakeByDate(msg.sender, nextLock, block.number - 1);\n\t\t\t\tif (stake > 0) {\n\t\t\t\t\t_withdraw(stake, nextLock, receiver, isGovernance);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Get available and punished amount for withdrawing.\n\t * @param amount The number of tokens to withdraw.\n\t * @param until The date until which the tokens were staked.\n\t * */\n\tfunction getWithdrawAmounts(uint96 amount, uint256 until) public view returns (uint96, uint96) {\n\t\t_validateWithdrawParams(amount, until);\n\t\tuint96 punishedAmount = _getPunishedAmount(amount, until);\n\t\treturn (amount - punishedAmount, punishedAmount);\n\t}\n\n\t/**\n\t * @notice Get punished amount for withdrawing.\n\t * @param amount The number of tokens to withdraw.\n\t * @param until The date until which the tokens were staked.\n\t * */\n\tfunction _getPunishedAmount(uint96 amount, uint256 until) internal view returns (uint96) {\n\t\tuint256 date = timestampToLockDate(block.timestamp);\n\t\tuint96 weight = computeWeightByDate(until, date); /// @dev (10 - 1) * WEIGHT_FACTOR\n\t\tweight = weight * weightScaling;\n\t\treturn (amount * weight) / WEIGHT_FACTOR / 100;\n\t}\n\n\t/**\n\t * @notice Validate withdraw parameters.\n\t * @param amount The number of tokens to withdraw.\n\t * @param until The date until which the tokens were staked.\n\t * */\n\tfunction _validateWithdrawParams(uint96 amount, uint256 until) internal view {\n\t\trequire(amount > 0, \"Staking::withdraw: amount of tokens to be withdrawn needs to be bigger than 0\");\n\t\tuint96 balance = _getPriorUserStakeByDate(msg.sender, until, block.number - 1);\n\t\trequire(amount <= balance, \"Staking::withdraw: not enough balance\");\n\t}\n\n\t/**\n\t * @notice Get the current balance of an account locked until a certain date.\n\t * @param account The user address.\n\t * @param lockDate The lock date.\n\t * @return The stake amount.\n\t * */\n\tfunction currentBalance(address account, uint256 lockDate) internal view returns (uint96) {\n\t\treturn userStakingCheckpoints[account][lockDate][numUserStakingCheckpoints[account][lockDate] - 1].stake;\n\t}\n\n\t/**\n\t * @notice Get the number of staked tokens held by the user account.\n\t * @dev Iterate checkpoints adding up stakes.\n\t * @param account The address of the account to get the balance of.\n\t * @return The number of tokens held.\n\t * */\n\tfunction balanceOf(address account) public view returns (uint96 balance) {\n\t\tfor (uint256 i = kickoffTS; i <= block.timestamp + MAX_DURATION; i += TWO_WEEKS) {\n\t\t\tbalance = add96(balance, currentBalance(account, i), \"Staking::balanceOf: overflow\");\n\t\t}\n\t}\n\n\t/**\n\t * @notice Delegate votes from `msg.sender` which are locked until lockDate to `delegatee`.\n\t * @param delegatee The address to delegate votes to.\n\t * @param lockDate the date if the position to delegate.\n\t * */\n\tfunction delegate(address delegatee, uint256 lockDate) public {\n\t\t_delegate(msg.sender, delegatee, lockDate);\n\t\t// @dev delegates tokens for lock date 2 weeks later than given lock date\n\t\t//\t\tif message sender is a contract\n\t\t_delegateNext(msg.sender, delegatee, lockDate);\n\t}\n\n\t/**\n\t * @notice Delegates votes from signatory to a delegatee account.\n\t * Voting with EIP-712 Signatures.\n\t *\n\t * Voting power can be delegated to any address, and then can be used to\n\t * vote on proposals. A key benefit to users of by-signature functionality\n\t * is that they can create a signed vote transaction for free, and have a\n\t * trusted third-party spend rBTC(or ETH) on gas fees and write it to the\n\t * blockchain for them.\n\t *\n\t * The third party in this scenario, submitting the SOV-holder’s signed\n\t * transaction holds a voting power that is for only a single proposal.\n\t * The signatory still holds the power to vote on their own behalf in\n\t * the proposal if the third party has not yet published the signed\n\t * transaction that was given to them.\n\t *\n\t * @dev The signature needs to be broken up into 3 parameters, known as\n\t * v, r and s:\n\t * const r = '0x' + sig.substring(2).substring(0, 64);\n\t * const s = '0x' + sig.substring(2).substring(64, 128);\n\t * const v = '0x' + sig.substring(2).substring(128, 130);\n\t *\n\t * @param delegatee The address to delegate votes to.\n\t * @param lockDate The date until which the position is locked.\n\t * @param nonce The contract state required to match the signature.\n\t * @param expiry The time at which to expire the signature.\n\t * @param v The recovery byte of the signature.\n\t * @param r Half of the ECDSA signature pair.\n\t * @param s Half of the ECDSA signature pair.\n\t * */\n\tfunction delegateBySig(\n\t\taddress delegatee,\n\t\tuint256 lockDate,\n\t\tuint256 nonce,\n\t\tuint256 expiry,\n\t\tuint8 v,\n\t\tbytes32 r,\n\t\tbytes32 s\n\t) public {\n\t\t/**\n\t\t * @dev The DOMAIN_SEPARATOR is a hash that uniquely identifies a\n\t\t * smart contract. It is built from a string denoting it as an\n\t\t * EIP712 Domain, the name of the token contract, the version,\n\t\t * the chainId in case it changes, and the address that the\n\t\t * contract is deployed at.\n\t\t * */\n\t\tbytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));\n\n\t\t/// @dev GovernorAlpha uses BALLOT_TYPEHASH, while Staking uses DELEGATION_TYPEHASH\n\t\tbytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, lockDate, nonce, expiry));\n\n\t\tbytes32 digest = keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n\t\taddress signatory = ecrecover(digest, v, r, s);\n\n\t\t/// @dev Verify address is not null and PK is not null either.\n\t\trequire(RSKAddrValidator.checkPKNotZero(signatory), \"Staking::delegateBySig: invalid signature\");\n\t\trequire(nonce == nonces[signatory]++, \"Staking::delegateBySig: invalid nonce\");\n\t\trequire(now <= expiry, \"Staking::delegateBySig: signature expired\");\n\t\t_delegate(signatory, delegatee, lockDate);\n\t\t// @dev delegates tokens for lock date 2 weeks later than given lock date\n\t\t//\t\tif message sender is a contract\n\t\t_delegateNext(signatory, delegatee, lockDate);\n\t}\n\n\t/**\n\t * @notice Get the current votes balance for a user account.\n\t * @param account The address to get votes balance.\n\t * @dev This is a wrapper to simplify arguments. The actual computation is\n\t * performed on WeightedStaking parent contract.\n\t * @return The number of current votes for a user account.\n\t * */\n\tfunction getCurrentVotes(address account) external view returns (uint96) {\n\t\treturn getPriorVotes(account, block.number - 1, block.timestamp);\n\t}\n\n\t/**\n\t * @notice Get the current number of tokens staked for a day.\n\t * @param lockedTS The timestamp to get the staked tokens for.\n\t * */\n\tfunction getCurrentStakedUntil(uint256 lockedTS) external view returns (uint96) {\n\t\tuint32 nCheckpoints = numTotalStakingCheckpoints[lockedTS];\n\t\treturn nCheckpoints > 0 ? totalStakingCheckpoints[lockedTS][nCheckpoints - 1].stake : 0;\n\t}\n\n\t/**\n\t * @notice Set new delegatee. Move from user's current delegate to a new\n\t * delegatee the stake balance.\n\t * @param delegator The user address to move stake balance from its current delegatee.\n\t * @param delegatee The new delegatee. The address to move stake balance to.\n\t * @param lockedTS The lock date.\n\t * */\n\tfunction _delegate(\n\t\taddress delegator,\n\t\taddress delegatee,\n\t\tuint256 lockedTS\n\t) internal {\n\t\taddress currentDelegate = delegates[delegator][lockedTS];\n\t\tuint96 delegatorBalance = currentBalance(delegator, lockedTS);\n\t\tdelegates[delegator][lockedTS] = delegatee;\n\n\t\temit DelegateChanged(delegator, lockedTS, currentDelegate, delegatee);\n\n\t\t_moveDelegates(currentDelegate, delegatee, delegatorBalance, lockedTS);\n\t}\n\n\t// @dev delegates tokens for lock date 2 weeks later than given lock date\n\t//\t\tif message sender is a contract\n\tfunction _delegateNext(\n\t\taddress delegator,\n\t\taddress delegatee,\n\t\tuint256 lockedTS\n\t) internal {\n\t\tif (_isVestingContract()) {\n\t\t\tuint256 nextLock = lockedTS.add(TWO_WEEKS);\n\t\t\taddress currentDelegate = delegates[delegator][nextLock];\n\t\t\tif (currentDelegate != delegatee) {\n\t\t\t\t_delegate(delegator, delegatee, nextLock);\n\t\t\t}\n\n\t\t\t// @dev workaround for the issue with a delegation of the latest stake\n\t\t\tuint256 endDate = IVesting(msg.sender).endDate();\n\t\t\tnextLock = lockedTS.add(FOUR_WEEKS);\n\t\t\tif (nextLock == endDate) {\n\t\t\t\tcurrentDelegate = delegates[delegator][nextLock];\n\t\t\t\tif (currentDelegate != delegatee) {\n\t\t\t\t\t_delegate(delegator, delegatee, nextLock);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Move an amount of delegate stake from a source address to a\n\t * destination address.\n\t * @param srcRep The address to get the staked amount from.\n\t * @param dstRep The address to send the staked amount to.\n\t * @param amount The staked amount to move.\n\t * @param lockedTS The lock date.\n\t * */\n\tfunction _moveDelegates(\n\t\taddress srcRep,\n\t\taddress dstRep,\n\t\tuint96 amount,\n\t\tuint256 lockedTS\n\t) internal {\n\t\tif (srcRep != dstRep && amount > 0) {\n\t\t\tif (srcRep != address(0)) _decreaseDelegateStake(srcRep, lockedTS, amount);\n\n\t\t\tif (dstRep != address(0)) _increaseDelegateStake(dstRep, lockedTS, amount);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Retrieve CHAIN_ID of the executing chain.\n\t *\n\t * Chain identifier (chainID) introduced in EIP-155 protects transaction\n\t * included into one chain from being included into another chain.\n\t * Basically, chain identifier is an integer number being used in the\n\t * processes of signing transactions and verifying transaction signatures.\n\t *\n\t * @dev As of version 0.5.12, Solidity includes an assembly function\n\t * chainid() that provides access to the new CHAINID opcode.\n\t *\n\t * TODO: chainId is included in block. So you can get chain id like\n\t * block timestamp or block number: block.chainid;\n\t * */\n\tfunction getChainId() internal pure returns (uint256) {\n\t\tuint256 chainId;\n\t\tassembly {\n\t\t\tchainId := chainid()\n\t\t}\n\t\treturn chainId;\n\t}\n\n\t/**\n\t * @notice Allow the owner to set a new staking contract.\n\t * As a consequence it allows the stakers to migrate their positions\n\t * to the new contract.\n\t * @dev Doesn't have any influence as long as migrateToNewStakingContract\n\t * is not implemented.\n\t * @param _newStakingContract The address of the new staking contract.\n\t * */\n\tfunction setNewStakingContract(address _newStakingContract) public onlyOwner {\n\t\trequire(_newStakingContract != address(0), \"can't reset the new staking contract to 0\");\n\t\tnewStakingContract = _newStakingContract;\n\t}\n\n\t/**\n\t * @notice Allow the owner to set a fee sharing proxy contract.\n\t * We need it for unstaking with slashing.\n\t * @param _feeSharing The address of FeeSharingProxy contract.\n\t * */\n\tfunction setFeeSharing(address _feeSharing) public onlyOwner {\n\t\trequire(_feeSharing != address(0), \"FeeSharing address shouldn't be 0\");\n\t\tfeeSharing = IFeeSharingProxy(_feeSharing);\n\t}\n\n\t/**\n\t * @notice Allow the owner to set weight scaling.\n\t * We need it for unstaking with slashing.\n\t * @param _weightScaling The weight scaling.\n\t * */\n\tfunction setWeightScaling(uint96 _weightScaling) public onlyOwner {\n\t\trequire(\n\t\t\tMIN_WEIGHT_SCALING <= _weightScaling && _weightScaling <= MAX_WEIGHT_SCALING,\n\t\t\t\"weight scaling doesn't belong to range [1, 9]\"\n\t\t);\n\t\tweightScaling = _weightScaling;\n\t}\n\n\t/**\n\t * @notice Allow a staker to migrate his positions to the new staking contract.\n\t * @dev Staking contract needs to be set before by the owner.\n\t * Currently not implemented, just needed for the interface.\n\t *      In case it's needed at some point in the future,\n\t *      the implementation needs to be changed first.\n\t * */\n\tfunction migrateToNewStakingContract() public {\n\t\trequire(newStakingContract != address(0), \"there is no new staking contract set\");\n\t\t/// @dev implementation:\n\t\t/// @dev Iterate over all possible lock dates from now until now + MAX_DURATION.\n\t\t/// @dev Read the stake & delegate of the msg.sender\n\t\t/// @dev If stake > 0, stake it at the new contract until the lock date with the current delegate.\n\t}\n\n\t/**\n\t * @notice Allow the owner to unlock all tokens in case the staking contract\n\t * is going to be replaced\n\t * Note: Not reversible on purpose. once unlocked, everything is unlocked.\n\t * The owner should not be able to just quickly unlock to withdraw his own\n\t * tokens and lock again.\n\t * @dev Last resort.\n\t * */\n\tfunction unlockAllTokens() public onlyOwner {\n\t\tallUnlocked = true;\n\t\temit TokensUnlocked(SOVToken.balanceOf(address(this)));\n\t}\n\n\t/**\n\t * @notice Get list of stakes for a user account.\n\t * @param account The address to get stakes.\n\t * @return The arrays of dates and stakes.\n\t * */\n\tfunction getStakes(address account) public view returns (uint256[] memory dates, uint96[] memory stakes) {\n\t\tuint256 latest = timestampToLockDate(block.timestamp + MAX_DURATION);\n\n\t\t/// @dev Calculate stakes.\n\t\tuint256 count = 0;\n\t\t/// @dev We need to iterate from first possible stake date after deployment to the latest from current time.\n\t\tfor (uint256 i = kickoffTS + TWO_WEEKS; i <= latest; i += TWO_WEEKS) {\n\t\t\tif (currentBalance(account, i) > 0) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t}\n\t\tdates = new uint256[](count);\n\t\tstakes = new uint96[](count);\n\n\t\t/// @dev We need to iterate from first possible stake date after deployment to the latest from current time.\n\t\tuint256 j = 0;\n\t\tfor (uint256 i = kickoffTS + TWO_WEEKS; i <= latest; i += TWO_WEEKS) {\n\t\t\tuint96 balance = currentBalance(account, i);\n\t\t\tif (balance > 0) {\n\t\t\t\tdates[j] = i;\n\t\t\t\tstakes[j] = balance;\n\t\t\t\tj++;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Overrides default ApprovalReceiver._getToken function to\n\t * register SOV token on this contract.\n\t * @return The address of SOV token.\n\t * */\n\tfunction _getToken() internal view returns (address) {\n\t\treturn address(SOVToken);\n\t}\n\n\t/**\n\t * @notice Overrides default ApprovalReceiver._getSelectors function to\n\t * register stakeWithApproval selector on this contract.\n\t * @return The array of registered selectors on this contract.\n\t * */\n\tfunction _getSelectors() internal view returns (bytes4[] memory) {\n\t\tbytes4[] memory selectors = new bytes4[](1);\n\t\tselectors[0] = this.stakeWithApproval.selector;\n\t\treturn selectors;\n\t}\n}\n"
      },
      "contracts/governance/Staking/WeightedStaking.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"./Checkpoints.sol\";\nimport \"../../openzeppelin/Address.sol\";\n\n/**\n * @title Weighted Staking contract.\n * @notice Computation of power and votes used by FeeSharingProxy and\n * GovernorAlpha and Staking contracts w/ mainly 3 public functions:\n *   + getPriorTotalVotingPower => Total voting power.\n *   + getPriorVotes  => Delegatee voting power.\n *   + getPriorWeightedStake  => User Weighted Stake.\n * Staking contract inherits WeightedStaking.\n * FeeSharingProxy and GovernorAlpha invoke Staking instance functions.\n * */\ncontract WeightedStaking is Checkpoints {\n\tusing Address for address payable;\n\n\t/**\n\t * @dev Throws if called by any account other than the owner or admin.\n\t */\n\tmodifier onlyAuthorized() {\n\t\trequire(isOwner() || admins[msg.sender], \"unauthorized\");\n\t\t_;\n\t}\n\n\t/**\n\t * @notice sets vesting registry\n\t * @param _vestingRegistryProxy the address of vesting registry proxy contract\n\t */\n\tfunction setVestingRegistry(address _vestingRegistryProxy) external onlyOwner {\n\t\trequire(_vestingRegistryProxy != address(0), \"vesting registry address invalid\");\n\t\tvestingRegistryLogic = VestingRegistryLogic(_vestingRegistryProxy);\n\t}\n\n\t/************* TOTAL VOTING POWER COMPUTATION ************************/\n\n\t/**\n\t * @notice Compute the total voting power at a given time.\n\t * @param time The timestamp for which to calculate the total voting power.\n\t * @return The total voting power at the given time.\n\t * */\n\tfunction getPriorTotalVotingPower(uint32 blockNumber, uint256 time) public view returns (uint96 totalVotingPower) {\n\t\t/// @dev Start the computation with the exact or previous unlocking date (voting weight remians the same until the next break point).\n\t\tuint256 start = timestampToLockDate(time);\n\t\tuint256 end = start + MAX_DURATION;\n\n\t\t/// @dev Max 78 iterations.\n\t\tfor (uint256 i = start; i <= end; i += TWO_WEEKS) {\n\t\t\ttotalVotingPower = add96(\n\t\t\t\ttotalVotingPower,\n\t\t\t\t_totalPowerByDate(i, start, blockNumber),\n\t\t\t\t\"WeightedStaking::getPriorTotalVotingPower: overflow on total voting power computation\"\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Compute the voting power for a specific date.\n\t * Power = stake * weight\n\t * @param date The staking date to compute the power for.\n\t * @param startDate The date for which we need to know the power of the stake.\n\t * @param blockNumber The block number, needed for checkpointing.\n\t * */\n\tfunction _totalPowerByDate(\n\t\tuint256 date,\n\t\tuint256 startDate,\n\t\tuint256 blockNumber\n\t) internal view returns (uint96 power) {\n\t\tuint96 weight = computeWeightByDate(date, startDate);\n\t\tuint96 staked = getPriorTotalStakesForDate(date, blockNumber);\n\t\t/// @dev weight is multiplied by some factor to allow decimals.\n\t\tpower = mul96(staked, weight, \"WeightedStaking::_totalPowerByDate: multiplication overflow\") / WEIGHT_FACTOR;\n\t}\n\n\t/**\n\t * @notice Determine the prior number of stake for an unlocking date as of a block number.\n\t * @dev Block number must be a finalized block or else this function will\n\t * revert to prevent misinformation.\n\t * TODO: WeightedStaking::getPriorTotalStakesForDate should probably better\n\t * be internal instead of a public function.\n\t * @param date The date to check the stakes for.\n\t * @param blockNumber The block number to get the vote balance at.\n\t * @return The number of votes the account had as of the given block.\n\t * */\n\tfunction getPriorTotalStakesForDate(uint256 date, uint256 blockNumber) public view returns (uint96) {\n\t\trequire(blockNumber < _getCurrentBlockNumber(), \"WeightedStaking::getPriorTotalStakesForDate: not yet determined\");\n\n\t\tuint32 nCheckpoints = numTotalStakingCheckpoints[date];\n\t\tif (nCheckpoints == 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t// First check most recent balance\n\t\tif (totalStakingCheckpoints[date][nCheckpoints - 1].fromBlock <= blockNumber) {\n\t\t\treturn totalStakingCheckpoints[date][nCheckpoints - 1].stake;\n\t\t}\n\n\t\t// Next check implicit zero balance\n\t\tif (totalStakingCheckpoints[date][0].fromBlock > blockNumber) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tuint32 lower = 0;\n\t\tuint32 upper = nCheckpoints - 1;\n\t\twhile (upper > lower) {\n\t\t\tuint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow\n\t\t\tCheckpoint memory cp = totalStakingCheckpoints[date][center];\n\t\t\tif (cp.fromBlock == blockNumber) {\n\t\t\t\treturn cp.stake;\n\t\t\t} else if (cp.fromBlock < blockNumber) {\n\t\t\t\tlower = center;\n\t\t\t} else {\n\t\t\t\tupper = center - 1;\n\t\t\t}\n\t\t}\n\t\treturn totalStakingCheckpoints[date][lower].stake;\n\t}\n\n\t/****************************** DELEGATED VOTING POWER COMPUTATION ************************/\n\n\t/**\n\t * @notice Determine the prior number of votes for a delegatee as of a block number.\n\t * Iterate through checkpoints adding up voting power.\n\t * @dev Block number must be a finalized block or else this function will revert\n\t * to prevent misinformation.\n\t *      Used for Voting, not for fee sharing.\n\t * @param account The address of the account to check.\n\t * @param blockNumber The block number to get the vote balance at.\n\t * @return The number of votes the delegatee had as of the given block.\n\t * */\n\tfunction getPriorVotes(\n\t\taddress account,\n\t\tuint256 blockNumber,\n\t\tuint256 date\n\t) public view returns (uint96 votes) {\n\t\t/// @dev If date is not an exact break point, start weight computation from the previous break point (alternative would be the next).\n\t\tuint256 start = timestampToLockDate(date);\n\t\tuint256 end = start + MAX_DURATION;\n\n\t\t/// @dev Max 78 iterations.\n\t\tfor (uint256 i = start; i <= end; i += TWO_WEEKS) {\n\t\t\tvotes = add96(\n\t\t\t\tvotes,\n\t\t\t\t_totalPowerByDateForDelegatee(account, i, start, blockNumber),\n\t\t\t\t\"WeightedStaking::getPriorVotes: overflow on total voting power computation\"\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Compute the voting power for a specific date.\n\t * Power = stake * weight\n\t * @param date The staking date to compute the power for.\n\t * @param startDate The date for which we need to know the power of the stake.\n\t * @param blockNumber The block number, needed for checkpointing.\n\t * */\n\tfunction _totalPowerByDateForDelegatee(\n\t\taddress account,\n\t\tuint256 date,\n\t\tuint256 startDate,\n\t\tuint256 blockNumber\n\t) internal view returns (uint96 power) {\n\t\tuint96 weight = computeWeightByDate(date, startDate);\n\t\tuint96 staked = getPriorStakeByDateForDelegatee(account, date, blockNumber);\n\t\tpower = mul96(staked, weight, \"WeightedStaking::_totalPowerByDateForDelegatee: multiplication overflow\") / WEIGHT_FACTOR;\n\t}\n\n\t/**\n\t * @notice Determine the prior number of stake for an account as of a block number.\n\t * @dev Block number must be a finalized block or else this function will\n\t * revert to prevent misinformation.\n\t * TODO: WeightedStaking::getPriorStakeByDateForDelegatee should probably better\n\t * be internal instead of a public function.\n\t * @param account The address of the account to check.\n\t * @param blockNumber The block number to get the vote balance at.\n\t * @return The number of votes the account had as of the given block.\n\t * */\n\tfunction getPriorStakeByDateForDelegatee(\n\t\taddress account,\n\t\tuint256 date,\n\t\tuint256 blockNumber\n\t) public view returns (uint96) {\n\t\trequire(blockNumber < _getCurrentBlockNumber(), \"WeightedStaking::getPriorStakeByDateForDelegatee: not yet determined\");\n\n\t\tuint32 nCheckpoints = numDelegateStakingCheckpoints[account][date];\n\t\tif (nCheckpoints == 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t/// @dev First check most recent balance.\n\t\tif (delegateStakingCheckpoints[account][date][nCheckpoints - 1].fromBlock <= blockNumber) {\n\t\t\treturn delegateStakingCheckpoints[account][date][nCheckpoints - 1].stake;\n\t\t}\n\n\t\t/// @dev Next check implicit zero balance.\n\t\tif (delegateStakingCheckpoints[account][date][0].fromBlock > blockNumber) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tuint32 lower = 0;\n\t\tuint32 upper = nCheckpoints - 1;\n\t\twhile (upper > lower) {\n\t\t\tuint32 center = upper - (upper - lower) / 2; /// @dev ceil, avoiding overflow.\n\t\t\tCheckpoint memory cp = delegateStakingCheckpoints[account][date][center];\n\t\t\tif (cp.fromBlock == blockNumber) {\n\t\t\t\treturn cp.stake;\n\t\t\t} else if (cp.fromBlock < blockNumber) {\n\t\t\t\tlower = center;\n\t\t\t} else {\n\t\t\t\tupper = center - 1;\n\t\t\t}\n\t\t}\n\t\treturn delegateStakingCheckpoints[account][date][lower].stake;\n\t}\n\n\t/*************************** User Weighted Stake computation for fee sharing *******************************/\n\n\t/**\n\t * @notice Determine the prior weighted stake for an account as of a block number.\n\t * Iterate through checkpoints adding up voting power.\n\t * @dev Block number must be a finalized block or else this function will\n\t * revert to prevent misinformation.\n\t *      Used for fee sharing, not voting.\n\t * TODO: WeightedStaking::getPriorWeightedStake is using the variable name \"votes\"\n\t * to add up token stake, and that could be misleading.\n\t *\n\t * @param account The address of the account to check.\n\t * @param blockNumber The block number to get the vote balance at.\n\t * @return The weighted stake the account had as of the given block.\n\t * */\n\tfunction getPriorWeightedStake(\n\t\taddress account,\n\t\tuint256 blockNumber,\n\t\tuint256 date\n\t) public view returns (uint96 votes) {\n\t\t/// @dev If date is not an exact break point, start weight computation from the previous break point (alternative would be the next).\n\t\tuint256 start = timestampToLockDate(date);\n\t\tuint256 end = start + MAX_DURATION;\n\n\t\t/// @dev Max 78 iterations.\n\t\tfor (uint256 i = start; i <= end; i += TWO_WEEKS) {\n\t\t\tuint96 weightedStake = weightedStakeByDate(account, i, start, blockNumber);\n\t\t\tif (weightedStake > 0) {\n\t\t\t\tvotes = add96(votes, weightedStake, \"WeightedStaking::getPriorWeightedStake: overflow on total weight computation\");\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Compute the voting power for a specific date.\n\t * Power = stake * weight\n\t * TODO: WeightedStaking::weightedStakeByDate should probably better\n\t * be internal instead of a public function.\n\t * @param date The staking date to compute the power for.\n\t * @param startDate The date for which we need to know the power of the stake.\n\t * @param blockNumber The block number, needed for checkpointing.\n\t * */\n\tfunction weightedStakeByDate(\n\t\taddress account,\n\t\tuint256 date,\n\t\tuint256 startDate,\n\t\tuint256 blockNumber\n\t) public view returns (uint96 power) {\n\t\tuint96 staked = _getPriorUserStakeByDate(account, date, blockNumber);\n\t\tif (staked > 0) {\n\t\t\tuint96 weight = computeWeightByDate(date, startDate);\n\t\t\tpower = mul96(staked, weight, \"WeightedStaking::weightedStakeByDate: multiplication overflow\") / WEIGHT_FACTOR;\n\t\t} else {\n\t\t\tpower = 0;\n\t\t}\n\t}\n\n\t/**\n\t * @notice Determine the prior number of stake for an account until a\n\t * certain lock date as of a block number.\n\t * @dev Block number must be a finalized block or else this function\n\t * will revert to prevent misinformation.\n\t * @param account The address of the account to check.\n\t * @param date The lock date.\n\t * @param blockNumber The block number to get the vote balance at.\n\t * @return The number of votes the account had as of the given block.\n\t * */\n\tfunction getPriorUserStakeByDate(\n\t\taddress account,\n\t\tuint256 date,\n\t\tuint256 blockNumber\n\t) external view returns (uint96) {\n\t\tuint96 priorStake = _getPriorUserStakeByDate(account, date, blockNumber);\n\t\t// @dev we need to modify function in order to workaround issue with Vesting.withdrawTokens:\n\t\t//\t\treturn 1 instead of 0 if message sender is a contract.\n\t\tif (priorStake == 0 && _isVestingContract()) {\n\t\t\tpriorStake = 1;\n\t\t}\n\t\treturn priorStake;\n\t}\n\n\t/**\n\t * @notice Determine the prior number of stake for an account until a\n\t * \t\tcertain lock date as of a block number.\n\t * @dev All functions of Staking contract use this internal version,\n\t * \t\twe need to modify public function in order to workaround issue with Vesting.withdrawTokens:\n\t * return 1 instead of 0 if message sender is a contract.\n\t * */\n\tfunction _getPriorUserStakeByDate(\n\t\taddress account,\n\t\tuint256 date,\n\t\tuint256 blockNumber\n\t) internal view returns (uint96) {\n\t\trequire(blockNumber < _getCurrentBlockNumber(), \"WeightedStaking::getPriorUserStakeAndDate: not yet determined\");\n\n\t\tdate = _adjustDateForOrigin(date);\n\t\tuint32 nCheckpoints = numUserStakingCheckpoints[account][date];\n\t\tif (nCheckpoints == 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t/// @dev First check most recent balance.\n\t\tif (userStakingCheckpoints[account][date][nCheckpoints - 1].fromBlock <= blockNumber) {\n\t\t\treturn userStakingCheckpoints[account][date][nCheckpoints - 1].stake;\n\t\t}\n\n\t\t/// @dev Next check implicit zero balance.\n\t\tif (userStakingCheckpoints[account][date][0].fromBlock > blockNumber) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tuint32 lower = 0;\n\t\tuint32 upper = nCheckpoints - 1;\n\t\twhile (upper > lower) {\n\t\t\tuint32 center = upper - (upper - lower) / 2; /// @dev ceil, avoiding overflow.\n\t\t\tCheckpoint memory cp = userStakingCheckpoints[account][date][center];\n\t\t\tif (cp.fromBlock == blockNumber) {\n\t\t\t\treturn cp.stake;\n\t\t\t} else if (cp.fromBlock < blockNumber) {\n\t\t\t\tlower = center;\n\t\t\t} else {\n\t\t\t\tupper = center - 1;\n\t\t\t}\n\t\t}\n\t\treturn userStakingCheckpoints[account][date][lower].stake;\n\t}\n\n\t/**\n\t * @notice Determine the current Block Number\n\t * @dev This is segregated from the _getPriorUserStakeByDate function to better test\n\t * advancing blocks functionality using Mock Contracts\n\t * */\n\tfunction _getCurrentBlockNumber() internal view returns (uint256) {\n\t\treturn block.number;\n\t}\n\n\t/**************** SHARED FUNCTIONS *********************/\n\n\t/**\n\t * @notice Compute the weight for a specific date.\n\t * @param date The unlocking date.\n\t * @param startDate We compute the weight for the tokens staked until 'date' on 'startDate'.\n\t * */\n\tfunction computeWeightByDate(uint256 date, uint256 startDate) public pure returns (uint96 weight) {\n\t\trequire(date >= startDate, \"WeightedStaking::computeWeightByDate: date needs to be bigger than startDate\");\n\t\tuint256 remainingTime = (date - startDate);\n\t\trequire(MAX_DURATION >= remainingTime, \"Staking::computeWeightByDate:remaining time can't be bigger than max duration\");\n\t\t/// @dev x = max days - remaining days\n\t\tuint96 x = uint96(MAX_DURATION - remainingTime) / (1 days);\n\t\t/// @dev w = (m^2 - x^2)/m^2 +1 (multiplied by the weight factor)\n\t\tweight = add96(\n\t\t\tWEIGHT_FACTOR,\n\t\t\tmul96(\n\t\t\t\tMAX_VOTING_WEIGHT * WEIGHT_FACTOR,\n\t\t\t\tsub96(MAX_DURATION_POW_2, x * x, \"underflow on weight calculation\"),\n\t\t\t\t\"multiplication overflow on weight computation\"\n\t\t\t) / MAX_DURATION_POW_2,\n\t\t\t\"overflow on weight computation\"\n\t\t);\n\t}\n\n\t/**\n\t * @notice Unstaking is possible every 2 weeks only. This means, to\n\t * calculate the key value for the staking checkpoints, we need to\n\t * map the intended timestamp to the closest available date.\n\t * @param timestamp The unlocking timestamp.\n\t * @return The actual unlocking date (might be up to 2 weeks shorter than intended).\n\t * */\n\tfunction timestampToLockDate(uint256 timestamp) public view returns (uint256 lockDate) {\n\t\trequire(timestamp >= kickoffTS, \"WeightedStaking::timestampToLockDate: timestamp lies before contract creation\");\n\t\t/**\n\t\t * @dev If staking timestamp does not match any of the unstaking dates\n\t\t * , set the lockDate to the closest one before the timestamp.\n\t\t * E.g. Passed timestamps lies 7 weeks after kickoff -> only stake for 6 weeks.\n\t\t * */\n\t\tuint256 periodFromKickoff = (timestamp - kickoffTS) / TWO_WEEKS;\n\t\tlockDate = periodFromKickoff * TWO_WEEKS + kickoffTS;\n\t}\n\n\tfunction _adjustDateForOrigin(uint256 date) internal view returns (uint256) {\n\t\tuint256 adjustedDate = timestampToLockDate(date);\n\t\t//origin vesting contracts have different dates\n\t\t//we need to add 2 weeks to get end of period (by default, it's start)\n\t\tif (adjustedDate != date) {\n\t\t\tdate = adjustedDate + TWO_WEEKS;\n\t\t}\n\t\treturn date;\n\t}\n\n\t/**\n\t * @notice Add account to ACL.\n\t * @param _admin The addresses of the account to grant permissions.\n\t * */\n\tfunction addAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = true;\n\t\temit AdminAdded(_admin);\n\t}\n\n\t/**\n\t * @notice Remove account from ACL.\n\t * @param _admin The addresses of the account to revoke permissions.\n\t * */\n\tfunction removeAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = false;\n\t\temit AdminRemoved(_admin);\n\t}\n\n\t/**\n\t * @notice Return flag whether message sender is a registered vesting contract.\n\t */\n\tfunction _isVestingContract() internal view returns (bool) {\n\t\treturn vestingRegistryLogic.isVestingAdress(msg.sender);\n\t}\n}\n"
      },
      "contracts/rsk/RSKAddrValidator.sol": {
        "content": "// SPDX-License-Identifier:MIT\npragma solidity ^0.5.17;\n\nlibrary RSKAddrValidator {\n\t/*\n\t * @param addr it is an address to check that it does not originates from\n\t * signing with PK = ZERO. RSK has a small difference in which @ZERO_PK_ADDR is\n\t * also an address from PK = ZERO. So we check for both of them.\n\t * */\n\tfunction checkPKNotZero(address addr) internal pure returns (bool) {\n\t\treturn (addr != 0xdcc703c0E500B653Ca82273B7BFAd8045D85a470 && addr != address(0));\n\t}\n\n\t/*\n\t * Safely compares two addresses, checking they do not originate from\n\t * a zero private key.\n\t * */\n\tfunction safeEquals(address addr1, address addr2) internal pure returns (bool) {\n\t\treturn (addr1 == addr2 && addr1 != 0xdcc703c0E500B653Ca82273B7BFAd8045D85a470 && addr1 != address(0));\n\t}\n}\n"
      },
      "contracts/governance/Vesting/ITeamVesting.sol": {
        "content": "pragma solidity ^0.5.17;\n\n/**\n * @title Interface for TeamVesting contract.\n * @dev Interfaces are used to cast a contract address into a callable instance.\n * This interface is used by Staking contract to call governanceWithdrawTokens\n * function having the vesting contract instance address.\n */\ninterface ITeamVesting {\n\tfunction governanceWithdrawTokens(address receiver) external;\n}\n"
      },
      "contracts/governance/Vesting/IVesting.sol": {
        "content": "pragma solidity ^0.5.17;\n\n/**\n * @title Interface for Vesting contract.\n * @dev Interfaces are used to cast a contract address into a callable instance.\n * This interface is used by VestingLogic contract to implement stakeTokens function\n * and on VestingRegistry contract to call IVesting(vesting).stakeTokens function\n * at a vesting instance.\n */\ninterface IVesting {\n\tfunction duration() external returns (uint256);\n\n\tfunction endDate() external returns (uint256);\n\n\tfunction stakeTokens(uint256 amount) external;\n}\n"
      },
      "contracts/governance/ApprovalReceiver.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"./ErrorDecoder.sol\";\nimport \"../token/IApproveAndCall.sol\";\n\n/**\n * @title Base contract for receiving approval from SOV token.\n */\ncontract ApprovalReceiver is ErrorDecoder, IApproveAndCall {\n\tmodifier onlyThisContract() {\n\t\t// Accepts calls only from receiveApproval function.\n\t\trequire(msg.sender == address(this), \"unauthorized\");\n\t\t_;\n\t}\n\n\t/**\n\t * @notice Receives approval from SOV token.\n\t * @param _data The data will be used for low level call.\n\t */\n\tfunction receiveApproval(\n\t\taddress _sender,\n\t\tuint256 _amount,\n\t\taddress _token,\n\t\tbytes calldata _data\n\t) external {\n\t\t// Accepts calls only from SOV token.\n\t\trequire(msg.sender == _getToken(), \"unauthorized\");\n\t\trequire(msg.sender == _token, \"unauthorized\");\n\n\t\t// Only allowed methods.\n\t\tbool isAllowed = false;\n\t\tbytes4[] memory selectors = _getSelectors();\n\t\tbytes4 sig = _getSig(_data);\n\t\tfor (uint256 i = 0; i < selectors.length; i++) {\n\t\t\tif (sig == selectors[i]) {\n\t\t\t\tisAllowed = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\trequire(isAllowed, \"method is not allowed\");\n\n\t\t// Check sender and amount.\n\t\taddress sender;\n\t\tuint256 amount;\n\t\t(, sender, amount) = abi.decode(abi.encodePacked(bytes28(0), _data), (bytes32, address, uint256));\n\t\trequire(sender == _sender, \"sender mismatch\");\n\t\trequire(amount == _amount, \"amount mismatch\");\n\n\t\t_call(_data);\n\t}\n\n\t/**\n\t * @notice Returns token address, only this address can be a sender for receiveApproval.\n\t * @dev Should be overridden in child contracts, otherwise error will be thrown.\n\t * @return By default, 0x. When overriden, the token address making the call.\n\t */\n\tfunction _getToken() internal view returns (address) {\n\t\treturn address(0);\n\t}\n\n\t/**\n\t * @notice Returns list of function selectors allowed to be invoked.\n\t * @dev Should be overridden in child contracts, otherwise error will be thrown.\n\t * @return By default, empty array. When overriden, allowed selectors.\n\t */\n\tfunction _getSelectors() internal view returns (bytes4[] memory) {\n\t\treturn new bytes4[](0);\n\t}\n\n\t/**\n\t * @notice Makes call and reverts w/ enhanced error message.\n\t * @param _data Error message as bytes.\n\t */\n\tfunction _call(bytes memory _data) internal {\n\t\t(bool success, bytes memory returnData) = address(this).call(_data);\n\t\tif (!success) {\n\t\t\tif (returnData.length <= ERROR_MESSAGE_SHIFT) {\n\t\t\t\trevert(\"receiveApproval: Transaction execution reverted.\");\n\t\t\t} else {\n\t\t\t\trevert(_addErrorMessage(\"receiveApproval: \", string(returnData)));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Extracts the called function selector, a hash of the signature.\n\t * @dev The first four bytes of the call data for a function call specifies\n\t * the function to be called. It is the first (left, high-order in big-endian)\n\t * four bytes of the Keccak-256 (SHA-3) hash of the signature of the function.\n\t * Solidity doesn't yet support a casting of byte[4] to bytes4.\n\t * Example:\n\t *  msg.data:\n\t *    0xcdcd77c000000000000000000000000000000000000000000000000000000000000\n\t *    000450000000000000000000000000000000000000000000000000000000000000001\n\t *  selector (or method ID): 0xcdcd77c0\n\t *  signature: baz(uint32,bool)\n\t * @param _data The msg.data from the low level call.\n\t * @return sig First 4 bytes of msg.data i.e. the selector, hash of the signature.\n\t */\n\tfunction _getSig(bytes memory _data) internal pure returns (bytes4 sig) {\n\t\tassembly {\n\t\t\tsig := mload(add(_data, 32))\n\t\t}\n\t}\n}\n"
      },
      "contracts/governance/Staking/Checkpoints.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"./StakingStorage.sol\";\nimport \"./SafeMath96.sol\";\n\n/**\n * @title Checkpoints contract.\n * @notice Increases and decreases storage values for users, delegatees and\n * total daily stake.\n * */\ncontract Checkpoints is StakingStorage, SafeMath96 {\n\t/// @notice An event emitted when an account changes its delegate.\n\tevent DelegateChanged(address indexed delegator, uint256 lockedUntil, address indexed fromDelegate, address indexed toDelegate);\n\n\t/// @notice An event emitted when a delegate account's stake balance changes.\n\tevent DelegateStakeChanged(address indexed delegate, uint256 lockedUntil, uint256 previousBalance, uint256 newBalance);\n\n\t/// @notice An event emitted when tokens get staked.\n\tevent TokensStaked(address indexed staker, uint256 amount, uint256 lockedUntil, uint256 totalStaked);\n\n\t/// @notice An event emitted when staked tokens get withdrawn.\n\tevent StakingWithdrawn(address indexed staker, uint256 amount, uint256 until, address indexed receiver, bool isGovernance);\n\n\t/// @notice An event emitted when vesting tokens get withdrawn.\n\tevent VestingTokensWithdrawn(address vesting, address receiver);\n\n\t/// @notice An event emitted when the owner unlocks all tokens.\n\tevent TokensUnlocked(uint256 amount);\n\n\t/// @notice An event emitted when a staking period gets extended.\n\tevent ExtendedStakingDuration(address indexed staker, uint256 previousDate, uint256 newDate, uint256 amountStaked);\n\n\tevent AdminAdded(address admin);\n\n\tevent AdminRemoved(address admin);\n\n\tevent ContractCodeHashAdded(bytes32 hash);\n\n\tevent ContractCodeHashRemoved(bytes32 hash);\n\n\t/**\n\t * @notice Increases the user's stake for a giving lock date and writes a checkpoint.\n\t * @param account The user address.\n\t * @param lockedTS The lock date.\n\t * @param value The value to add to the staked balance.\n\t * */\n\tfunction _increaseUserStake(\n\t\taddress account,\n\t\tuint256 lockedTS,\n\t\tuint96 value\n\t) internal {\n\t\tuint32 nCheckpoints = numUserStakingCheckpoints[account][lockedTS];\n\t\tuint96 staked = userStakingCheckpoints[account][lockedTS][nCheckpoints - 1].stake;\n\t\tuint96 newStake = add96(staked, value, \"Staking::_increaseUserStake: staked amount overflow\");\n\t\t_writeUserCheckpoint(account, lockedTS, nCheckpoints, newStake);\n\t}\n\n\t/**\n\t * @notice Decreases the user's stake for a giving lock date and writes a checkpoint.\n\t * @param account The user address.\n\t * @param lockedTS The lock date.\n\t * @param value The value to substract to the staked balance.\n\t * */\n\tfunction _decreaseUserStake(\n\t\taddress account,\n\t\tuint256 lockedTS,\n\t\tuint96 value\n\t) internal {\n\t\tuint32 nCheckpoints = numUserStakingCheckpoints[account][lockedTS];\n\t\tuint96 staked = userStakingCheckpoints[account][lockedTS][nCheckpoints - 1].stake;\n\t\tuint96 newStake = sub96(staked, value, \"Staking::_decreaseUserStake: staked amount underflow\");\n\t\t_writeUserCheckpoint(account, lockedTS, nCheckpoints, newStake);\n\t}\n\n\t/**\n\t * @notice Writes on storage the user stake.\n\t * @param account The user address.\n\t * @param lockedTS The lock date.\n\t * @param nCheckpoints The number of checkpoints, to find out the last one index.\n\t * @param newStake The new staked balance.\n\t * */\n\tfunction _writeUserCheckpoint(\n\t\taddress account,\n\t\tuint256 lockedTS,\n\t\tuint32 nCheckpoints,\n\t\tuint96 newStake\n\t) internal {\n\t\tuint32 blockNumber = safe32(block.number, \"Staking::_writeStakingCheckpoint: block number exceeds 32 bits\");\n\n\t\tif (nCheckpoints > 0 && userStakingCheckpoints[account][lockedTS][nCheckpoints - 1].fromBlock == blockNumber) {\n\t\t\tuserStakingCheckpoints[account][lockedTS][nCheckpoints - 1].stake = newStake;\n\t\t} else {\n\t\t\tuserStakingCheckpoints[account][lockedTS][nCheckpoints] = Checkpoint(blockNumber, newStake);\n\t\t\tnumUserStakingCheckpoints[account][lockedTS] = nCheckpoints + 1;\n\t\t}\n\t}\n\n\t/**\n\t * @notice Increases the delegatee's stake for a giving lock date and writes a checkpoint.\n\t * @param delegatee The delegatee address.\n\t * @param lockedTS The lock date.\n\t * @param value The value to add to the staked balance.\n\t * */\n\tfunction _increaseDelegateStake(\n\t\taddress delegatee,\n\t\tuint256 lockedTS,\n\t\tuint96 value\n\t) internal {\n\t\tuint32 nCheckpoints = numDelegateStakingCheckpoints[delegatee][lockedTS];\n\t\tuint96 staked = delegateStakingCheckpoints[delegatee][lockedTS][nCheckpoints - 1].stake;\n\t\tuint96 newStake = add96(staked, value, \"Staking::_increaseDelegateStake: staked amount overflow\");\n\t\t_writeDelegateCheckpoint(delegatee, lockedTS, nCheckpoints, newStake);\n\t}\n\n\t/**\n\t * @notice Decreases the delegatee's stake for a giving lock date and writes a checkpoint.\n\t * @param delegatee The delegatee address.\n\t * @param lockedTS The lock date.\n\t * @param value The value to substract to the staked balance.\n\t * */\n\tfunction _decreaseDelegateStake(\n\t\taddress delegatee,\n\t\tuint256 lockedTS,\n\t\tuint96 value\n\t) internal {\n\t\tuint32 nCheckpoints = numDelegateStakingCheckpoints[delegatee][lockedTS];\n\t\tuint96 staked = delegateStakingCheckpoints[delegatee][lockedTS][nCheckpoints - 1].stake;\n\t\tuint96 newStake = 0;\n\t\t// @dev We need to check delegate checkpoint value here,\n\t\t//\t\tbecause we had an issue in `stake` function:\n\t\t//\t\tdelegate checkpoint wasn't updating for the second and next stakes for the same date\n\t\t//\t\tif first stake was withdrawn completely and stake was delegated to the staker\n\t\t//\t\t(no delegation to another address).\n\t\t// @dev It can be greater than 0, but inconsistent after 3 transactions\n\t\tif (staked > value) {\n\t\t\tnewStake = sub96(staked, value, \"Staking::_decreaseDelegateStake: staked amount underflow\");\n\t\t}\n\t\t_writeDelegateCheckpoint(delegatee, lockedTS, nCheckpoints, newStake);\n\t}\n\n\t/**\n\t * @notice Writes on storage the delegate stake.\n\t * @param delegatee The delegate address.\n\t * @param lockedTS The lock date.\n\t * @param nCheckpoints The number of checkpoints, to find out the last one index.\n\t * @param newStake The new staked balance.\n\t * */\n\tfunction _writeDelegateCheckpoint(\n\t\taddress delegatee,\n\t\tuint256 lockedTS,\n\t\tuint32 nCheckpoints,\n\t\tuint96 newStake\n\t) internal {\n\t\tuint32 blockNumber = safe32(block.number, \"Staking::_writeStakingCheckpoint: block number exceeds 32 bits\");\n\t\tuint96 oldStake = delegateStakingCheckpoints[delegatee][lockedTS][nCheckpoints - 1].stake;\n\n\t\tif (nCheckpoints > 0 && delegateStakingCheckpoints[delegatee][lockedTS][nCheckpoints - 1].fromBlock == blockNumber) {\n\t\t\tdelegateStakingCheckpoints[delegatee][lockedTS][nCheckpoints - 1].stake = newStake;\n\t\t} else {\n\t\t\tdelegateStakingCheckpoints[delegatee][lockedTS][nCheckpoints] = Checkpoint(blockNumber, newStake);\n\t\t\tnumDelegateStakingCheckpoints[delegatee][lockedTS] = nCheckpoints + 1;\n\t\t}\n\t\temit DelegateStakeChanged(delegatee, lockedTS, oldStake, newStake);\n\t}\n\n\t/**\n\t * @notice Increases the total stake for a giving lock date and writes a checkpoint.\n\t * @param lockedTS The lock date.\n\t * @param value The value to add to the staked balance.\n\t * */\n\tfunction _increaseDailyStake(uint256 lockedTS, uint96 value) internal {\n\t\tuint32 nCheckpoints = numTotalStakingCheckpoints[lockedTS];\n\t\tuint96 staked = totalStakingCheckpoints[lockedTS][nCheckpoints - 1].stake;\n\t\tuint96 newStake = add96(staked, value, \"Staking::_increaseDailyStake: staked amount overflow\");\n\t\t_writeStakingCheckpoint(lockedTS, nCheckpoints, newStake);\n\t}\n\n\t/**\n\t * @notice Decreases the total stake for a giving lock date and writes a checkpoint.\n\t * @param lockedTS The lock date.\n\t * @param value The value to substract to the staked balance.\n\t * */\n\tfunction _decreaseDailyStake(uint256 lockedTS, uint96 value) internal {\n\t\tuint32 nCheckpoints = numTotalStakingCheckpoints[lockedTS];\n\t\tuint96 staked = totalStakingCheckpoints[lockedTS][nCheckpoints - 1].stake;\n\t\tuint96 newStake = sub96(staked, value, \"Staking::_decreaseDailyStake: staked amount underflow\");\n\t\t_writeStakingCheckpoint(lockedTS, nCheckpoints, newStake);\n\t}\n\n\t/**\n\t * @notice Writes on storage the total stake.\n\t * @param lockedTS The lock date.\n\t * @param nCheckpoints The number of checkpoints, to find out the last one index.\n\t * @param newStake The new staked balance.\n\t * */\n\tfunction _writeStakingCheckpoint(\n\t\tuint256 lockedTS,\n\t\tuint32 nCheckpoints,\n\t\tuint96 newStake\n\t) internal {\n\t\tuint32 blockNumber = safe32(block.number, \"Staking::_writeStakingCheckpoint: block number exceeds 32 bits\");\n\n\t\tif (nCheckpoints > 0 && totalStakingCheckpoints[lockedTS][nCheckpoints - 1].fromBlock == blockNumber) {\n\t\t\ttotalStakingCheckpoints[lockedTS][nCheckpoints - 1].stake = newStake;\n\t\t} else {\n\t\t\ttotalStakingCheckpoints[lockedTS][nCheckpoints] = Checkpoint(blockNumber, newStake);\n\t\t\tnumTotalStakingCheckpoints[lockedTS] = nCheckpoints + 1;\n\t\t}\n\t}\n}\n"
      },
      "contracts/governance/Staking/StakingStorage.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../../openzeppelin/Ownable.sol\";\nimport \"../../interfaces/IERC20.sol\";\nimport \"../IFeeSharingProxy.sol\";\nimport \"../Vesting/VestingRegistryLogic.sol\";\n\n/**\n * @title Staking Storage contact.\n * @notice Just the storage part of stacking contract, no functions,\n * only constant, variables and required structures (mappings).\n * Used by StackingProxy and Checkpoints contracts.\n *\n * What is SOV staking?\n * The purpose of the SOV token is to provide a pseudonymous,\n * censorship-resistant mechanism for governing the parameters of the Sovryn\n * protocol, while aligning the incentives of protocol governors with the\n * long-term success of the protocol. Any SOV token holder can choose to\n * stake (lock up) their tokens for a fixed period of time in return for\n * voting rights in the Bitocracy. Stakers are further incentivised through\n * fee and slashing rewards.\n * */\ncontract StakingStorage is Ownable {\n\t/// @notice 2 weeks in seconds.\n\tuint256 constant TWO_WEEKS = 1209600;\n\n\t/// @notice The maximum possible voting weight before adding +1 (actually 10, but need 9 for computation).\n\tuint96 public constant MAX_VOTING_WEIGHT = 9;\n\n\t/// @notice weight is multiplied with this factor (for allowing decimals, like 1.2x).\n\t/// @dev MAX_VOTING_WEIGHT * WEIGHT_FACTOR needs to be < 792, because there are 100,000,000 SOV with 18 decimals\n\tuint96 public constant WEIGHT_FACTOR = 10;\n\n\t/// @notice The maximum duration to stake tokens for.\n\tuint256 public constant MAX_DURATION = 1092 days;\n\n\t/// @notice The maximum duration ^2\n\tuint96 constant MAX_DURATION_POW_2 = 1092 * 1092;\n\n\t/// @notice Default weight scaling.\n\tuint96 constant DEFAULT_WEIGHT_SCALING = 3;\n\n\t/// @notice Range for weight scaling.\n\tuint96 constant MIN_WEIGHT_SCALING = 1;\n\tuint96 constant MAX_WEIGHT_SCALING = 9;\n\n\t/// @notice The timestamp of contract creation. Base for the staking period calculation.\n\tuint256 public kickoffTS;\n\n\tstring name = \"SOVStaking\";\n\n\t/// @notice The token to be staked.\n\tIERC20 public SOVToken;\n\n\t/// @notice A record of each accounts delegate.\n\tmapping(address => mapping(uint256 => address)) public delegates;\n\n\t/// @notice If this flag is set to true, all tokens are unlocked immediately.\n\tbool public allUnlocked = false;\n\n\t/// @notice The EIP-712 typehash for the contract's domain.\n\tbytes32 public constant DOMAIN_TYPEHASH = keccak256(\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\");\n\n\t/// @notice The EIP-712 typehash for the delegation struct used by the contract.\n\tbytes32 public constant DELEGATION_TYPEHASH = keccak256(\"Delegation(address delegatee,uint256 lockDate,uint256 nonce,uint256 expiry)\");\n\n\t/// @notice Used for stake migrations to a new staking contract with a different storage structure.\n\taddress public newStakingContract;\n\n\t/*************************** Checkpoints *******************************/\n\n\t/// @notice A checkpoint for marking the stakes from a given block\n\tstruct Checkpoint {\n\t\tuint32 fromBlock;\n\t\tuint96 stake;\n\t}\n\n\t/// @notice A record of tokens to be unstaked at a given time in total.\n\t/// For total voting power computation. Voting weights get adjusted bi-weekly.\n\t/// @dev totalStakingCheckpoints[date][index] is a checkpoint.\n\tmapping(uint256 => mapping(uint32 => Checkpoint)) public totalStakingCheckpoints;\n\n\t/// @notice The number of total staking checkpoints for each date.\n\t/// @dev numTotalStakingCheckpoints[date] is a number.\n\tmapping(uint256 => uint32) public numTotalStakingCheckpoints;\n\n\t/// @notice A record of tokens to be unstaked at a given time which were delegated to a certain address.\n\t/// For delegatee voting power computation. Voting weights get adjusted bi-weekly.\n\t/// @dev delegateStakingCheckpoints[delegatee][date][index] is a checkpoint.\n\tmapping(address => mapping(uint256 => mapping(uint32 => Checkpoint))) public delegateStakingCheckpoints;\n\n\t/// @notice The number of total staking checkpoints for each date per delegate.\n\t/// @dev numDelegateStakingCheckpoints[delegatee][date] is a number.\n\tmapping(address => mapping(uint256 => uint32)) public numDelegateStakingCheckpoints;\n\n\t/// @notice A record of tokens to be unstaked at a given time which per user address (address -> lockDate -> stake checkpoint)\n\t/// @dev userStakingCheckpoints[user][date][index] is a checkpoint.\n\tmapping(address => mapping(uint256 => mapping(uint32 => Checkpoint))) public userStakingCheckpoints;\n\n\t/// @notice The number of total staking checkpoints for each date per user.\n\t/// @dev numUserStakingCheckpoints[user][date] is a number.\n\tmapping(address => mapping(uint256 => uint32)) public numUserStakingCheckpoints;\n\n\t/// @notice A record of states for signing / validating signatures\n\t/// @dev nonces[user] is a number.\n\tmapping(address => uint256) public nonces;\n\n\t/*************************** Slashing *******************************/\n\n\t/// @notice the address of FeeSharingProxy contract, we need it for unstaking with slashing.\n\tIFeeSharingProxy public feeSharing;\n\n\t/// @notice used for weight scaling when unstaking with slashing.\n\tuint96 public weightScaling = DEFAULT_WEIGHT_SCALING;\n\n\t/// @notice List of vesting contracts, tokens for these contracts won't be slashed if unstaked by governance.\n\t/// @dev vestingWhitelist[contract] is true/false.\n\tmapping(address => bool) public vestingWhitelist;\n\n\t/// @dev user => flag whether user has admin role.\n\t/// @dev multisig should be an admin, admin can invoke only governanceWithdrawVesting function,\n\t/// \tthis function works only with Team Vesting contracts\n\tmapping(address => bool) public admins;\n\n\t/// @dev vesting contract code hash => flag whether it's registered code hash\n\tmapping(bytes32 => bool) public vestingCodeHashes;\n\n\t///@notice the vesting registry contract\n\tVestingRegistryLogic public vestingRegistryLogic;\n}\n"
      },
      "contracts/governance/Staking/SafeMath96.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\n/**\n * @title SafeMath96 contract.\n * @notice Improved Solidity's arithmetic operations with added overflow checks.\n * @dev SafeMath96 uses uint96, unsigned integers of 96 bits length, so every\n * integer from 0 to 2^96-1 can be operated.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * SafeMath restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this contract instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n * */\ncontract SafeMath96 {\n\tfunction safe32(uint256 n, string memory errorMessage) internal pure returns (uint32) {\n\t\trequire(n < 2**32, errorMessage);\n\t\treturn uint32(n);\n\t}\n\n\tfunction safe64(uint256 n, string memory errorMessage) internal pure returns (uint64) {\n\t\trequire(n < 2**64, errorMessage);\n\t\treturn uint64(n);\n\t}\n\n\tfunction safe96(uint256 n, string memory errorMessage) internal pure returns (uint96) {\n\t\trequire(n < 2**96, errorMessage);\n\t\treturn uint96(n);\n\t}\n\n\t/**\n\t * @notice Adds two unsigned integers, reverting on overflow.\n\t * @dev Counterpart to Solidity's `+` operator.\n\t * @param a First integer.\n\t * @param b Second integer.\n\t * @param errorMessage The revert message on overflow.\n\t * @return The safe addition a+b.\n\t * */\n\tfunction add96(\n\t\tuint96 a,\n\t\tuint96 b,\n\t\tstring memory errorMessage\n\t) internal pure returns (uint96) {\n\t\tuint96 c = a + b;\n\t\trequire(c >= a, errorMessage);\n\t\treturn c;\n\t}\n\n\t/**\n\t * @notice Substracts two unsigned integers, reverting on underflow.\n\t * @dev Counterpart to Solidity's `-` operator.\n\t * @param a First integer.\n\t * @param b Second integer.\n\t * @param errorMessage The revert message on underflow.\n\t * @return The safe substraction a-b.\n\t * */\n\tfunction sub96(\n\t\tuint96 a,\n\t\tuint96 b,\n\t\tstring memory errorMessage\n\t) internal pure returns (uint96) {\n\t\trequire(b <= a, errorMessage);\n\t\treturn a - b;\n\t}\n\n\t/**\n\t * @notice Multiplies two unsigned integers, reverting on overflow.\n\t * @dev Counterpart to Solidity's `*` operator.\n\t * @param a First integer.\n\t * @param b Second integer.\n\t * @param errorMessage The revert message on overflow.\n\t * @return The safe product a*b.\n\t * */\n\tfunction mul96(\n\t\tuint96 a,\n\t\tuint96 b,\n\t\tstring memory errorMessage\n\t) internal pure returns (uint96) {\n\t\tif (a == 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tuint96 c = a * b;\n\t\trequire(c / a == b, errorMessage);\n\n\t\treturn c;\n\t}\n\n\t/**\n\t * @notice Divides two unsigned integers, reverting on overflow.\n\t * @dev Counterpart to Solidity's `/` operator.\n\t * @param a First integer.\n\t * @param b Second integer.\n\t * @param errorMessage The revert message on overflow.\n\t * @return The safe division a/b.\n\t * */\n\tfunction div96(\n\t\tuint96 a,\n\t\tuint96 b,\n\t\tstring memory errorMessage\n\t) internal pure returns (uint96) {\n\t\t// Solidity only automatically asserts when dividing by 0\n\t\trequire(b > 0, errorMessage);\n\t\tuint96 c = a / b;\n\t\t// assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n\t\treturn c;\n\t}\n}\n"
      },
      "contracts/governance/IFeeSharingProxy.sol": {
        "content": "pragma solidity ^0.5.17;\n\n/**\n * @title Interface for contract governance/FeeSharingProxy.sol\n * @dev Interfaces are used to cast a contract address into a callable instance.\n * */\ninterface IFeeSharingProxy {\n\tfunction withdrawFees(address _token) external;\n\n\tfunction transferTokens(address _token, uint96 _amount) external;\n\n\tfunction withdraw(\n\t\taddress _loanPoolToken,\n\t\tuint32 _maxCheckpoints,\n\t\taddress _receiver\n\t) external;\n}\n"
      },
      "contracts/governance/Vesting/VestingRegistryLogic.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../../interfaces/IERC20.sol\";\nimport \"../IFeeSharingProxy.sol\";\nimport \"./IVesting.sol\";\nimport \"./ITeamVesting.sol\";\nimport \"./VestingRegistryStorage.sol\";\n\ncontract VestingRegistryLogic is VestingRegistryStorage {\n\tevent SOVTransferred(address indexed receiver, uint256 amount);\n\tevent VestingCreated(\n\t\taddress indexed tokenOwner,\n\t\taddress vesting,\n\t\tuint256 cliff,\n\t\tuint256 duration,\n\t\tuint256 amount,\n\t\tuint256 vestingCreationType\n\t);\n\tevent TeamVestingCreated(\n\t\taddress indexed tokenOwner,\n\t\taddress vesting,\n\t\tuint256 cliff,\n\t\tuint256 duration,\n\t\tuint256 amount,\n\t\tuint256 vestingCreationType\n\t);\n\tevent TokensStaked(address indexed vesting, uint256 amount);\n\n\t/**\n\t * @notice Replace constructor with initialize function for Upgradable Contracts\n\t * This function will be called only once by the owner\n\t * */\n\tfunction initialize(\n\t\taddress _vestingFactory,\n\t\taddress _SOV,\n\t\taddress _staking,\n\t\taddress _feeSharingProxy,\n\t\taddress _vestingOwner,\n\t\taddress _lockedSOV,\n\t\taddress[] calldata _vestingRegistries\n\t) external onlyOwner initializer {\n\t\trequire(_SOV != address(0), \"SOV address invalid\");\n\t\trequire(_staking != address(0), \"staking address invalid\");\n\t\trequire(_feeSharingProxy != address(0), \"feeSharingProxy address invalid\");\n\t\trequire(_vestingOwner != address(0), \"vestingOwner address invalid\");\n\t\trequire(_lockedSOV != address(0), \"LockedSOV address invalid\");\n\n\t\t_setVestingFactory(_vestingFactory);\n\t\tSOV = _SOV;\n\t\tstaking = _staking;\n\t\tfeeSharingProxy = _feeSharingProxy;\n\t\tvestingOwner = _vestingOwner;\n\t\tlockedSOV = LockedSOV(_lockedSOV);\n\t\tfor (uint256 i = 0; i < _vestingRegistries.length; i++) {\n\t\t\trequire(_vestingRegistries[i] != address(0), \"Vesting registry address invalid\");\n\t\t\tvestingRegistries.push(IVestingRegistry(_vestingRegistries[i]));\n\t\t}\n\t}\n\n\t/**\n\t * @notice sets vesting factory address\n\t * @param _vestingFactory the address of vesting factory contract\n\t */\n\tfunction setVestingFactory(address _vestingFactory) external onlyOwner {\n\t\t_setVestingFactory(_vestingFactory);\n\t}\n\n\t/**\n\t * @notice Internal function that sets vesting factory address\n\t * @param _vestingFactory the address of vesting factory contract\n\t */\n\tfunction _setVestingFactory(address _vestingFactory) internal {\n\t\trequire(_vestingFactory != address(0), \"vestingFactory address invalid\");\n\t\tvestingFactory = IVestingFactory(_vestingFactory);\n\t}\n\n\t/**\n\t * @notice transfers SOV tokens to given address\n\t * @param _receiver the address of the SOV receiver\n\t * @param _amount the amount to be transferred\n\t */\n\tfunction transferSOV(address _receiver, uint256 _amount) external onlyOwner {\n\t\trequire(_receiver != address(0), \"receiver address invalid\");\n\t\trequire(_amount != 0, \"amount invalid\");\n\t\trequire(IERC20(SOV).transfer(_receiver, _amount), \"transfer failed\");\n\t\temit SOVTransferred(_receiver, _amount);\n\t}\n\n\t/**\n\t * @notice adds vestings that were deployed in previous vesting registries\n\t * @dev migration of data from previous vesting registy contracts\n\t */\n\tfunction addDeployedVestings(address[] calldata _tokenOwners, uint256[] calldata _vestingCreationTypes) external onlyAuthorized {\n\t\tfor (uint256 i = 0; i < _tokenOwners.length; i++) {\n\t\t\trequire(_tokenOwners[i] != address(0), \"token owner cannot be 0 address\");\n\t\t\trequire(_vestingCreationTypes[i] > 0, \"vesting creation type must be greater than 0\");\n\t\t\t_getDeployedVestings(_tokenOwners[i], _vestingCreationTypes[i]);\n\t\t}\n\t}\n\n\t/**\n\t * @notice creates Vesting contract\n\t * @param _tokenOwner the owner of the tokens\n\t * @param _amount the amount to be staked\n\t * @param _cliff the cliff in seconds\n\t * @param _duration the total duration in seconds\n\t * @dev Calls a public createVestingAddr function with vestingCreationType. This is to accomodate the existing logic for LockedSOV\n\t * @dev vestingCreationType 0 = LockedSOV\n\t */\n\tfunction createVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _amount,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) external onlyAuthorized {\n\t\tcreateVestingAddr(_tokenOwner, _amount, _cliff, _duration, 0);\n\t}\n\n\t/**\n\t * @notice creates Vesting contract\n\t * @param _tokenOwner the owner of the tokens\n\t * @param _amount the amount to be staked\n\t * @param _cliff the cliff in seconds\n\t * @param _duration the total duration in seconds\n\t * @param _vestingCreationType the type of vesting created(e.g. Origin, Bug Bounty etc.)\n\t */\n\tfunction createVestingAddr(\n\t\taddress _tokenOwner,\n\t\tuint256 _amount,\n\t\tuint256 _cliff,\n\t\tuint256 _duration,\n\t\tuint256 _vestingCreationType\n\t) public onlyAuthorized {\n\t\taddress vesting = _getOrCreateVesting(_tokenOwner, _cliff, _duration, uint256(VestingType.Vesting), _vestingCreationType);\n\t\temit VestingCreated(_tokenOwner, vesting, _cliff, _duration, _amount, _vestingCreationType);\n\t}\n\n\t/**\n\t * @notice creates Team Vesting contract\n\t * @param _tokenOwner the owner of the tokens\n\t * @param _amount the amount to be staked\n\t * @param _cliff the cliff in seconds\n\t * @param _duration the total duration in seconds\n\t * @param _vestingCreationType the type of vesting created(e.g. Origin, Bug Bounty etc.)\n\t */\n\tfunction createTeamVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _amount,\n\t\tuint256 _cliff,\n\t\tuint256 _duration,\n\t\tuint256 _vestingCreationType\n\t) external onlyAuthorized {\n\t\taddress vesting = _getOrCreateVesting(_tokenOwner, _cliff, _duration, uint256(VestingType.TeamVesting), _vestingCreationType);\n\t\temit TeamVestingCreated(_tokenOwner, vesting, _cliff, _duration, _amount, _vestingCreationType);\n\t}\n\n\t/**\n\t * @notice stakes tokens according to the vesting schedule\n\t * @param _vesting the address of Vesting contract\n\t * @param _amount the amount of tokens to stake\n\t */\n\tfunction stakeTokens(address _vesting, uint256 _amount) external onlyAuthorized {\n\t\trequire(_vesting != address(0), \"vesting address invalid\");\n\t\trequire(_amount > 0, \"amount invalid\");\n\n\t\tIERC20(SOV).approve(_vesting, _amount);\n\t\tIVesting(_vesting).stakeTokens(_amount);\n\t\temit TokensStaked(_vesting, _amount);\n\t}\n\n\t/**\n\t * @notice returns vesting contract address for the given token owner\n\t * @param _tokenOwner the owner of the tokens\n\t * @dev Calls a public getVestingAddr function with cliff and duration. This is to accomodate the existing logic for LockedSOV\n\t * @dev We need to use LockedSOV.changeRegistryCliffAndDuration function very judiciously\n\t * @dev vestingCreationType 0 - LockedSOV\n\t */\n\tfunction getVesting(address _tokenOwner) public view returns (address) {\n\t\treturn getVestingAddr(_tokenOwner, lockedSOV.cliff(), lockedSOV.duration(), 0);\n\t}\n\n\t/**\n\t * @notice public function that returns vesting contract address for the given token owner, cliff, duration\n\t * @dev Important: Please use this instead of getVesting function\n\t */\n\tfunction getVestingAddr(\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration,\n\t\tuint256 _vestingCreationType\n\t) public view returns (address) {\n\t\tuint256 type_ = uint256(VestingType.Vesting);\n\t\tuint256 uid = uint256(keccak256(abi.encodePacked(_tokenOwner, type_, _cliff, _duration, _vestingCreationType)));\n\t\treturn vestings[uid].vestingAddress;\n\t}\n\n\t/**\n\t * @notice returns team vesting contract address for the given token owner, cliff, duration\n\t */\n\tfunction getTeamVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration,\n\t\tuint256 _vestingCreationType\n\t) public view returns (address) {\n\t\tuint256 type_ = uint256(VestingType.TeamVesting);\n\t\tuint256 uid = uint256(keccak256(abi.encodePacked(_tokenOwner, type_, _cliff, _duration, _vestingCreationType)));\n\t\treturn vestings[uid].vestingAddress;\n\t}\n\n\t/**\n\t * @notice Internal function to deploy Vesting/Team Vesting contract\n\t * @param _tokenOwner the owner of the tokens\n\t * @param _cliff the cliff in seconds\n\t * @param _duration the total duration in seconds\n\t * @param _type the type of vesting\n\t * @param _vestingCreationType the type of vesting created(e.g. Origin, Bug Bounty etc.)\n\t */\n\tfunction _getOrCreateVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration,\n\t\tuint256 _type,\n\t\tuint256 _vestingCreationType\n\t) internal returns (address) {\n\t\taddress vesting;\n\t\tuint256 uid = uint256(keccak256(abi.encodePacked(_tokenOwner, _type, _cliff, _duration, _vestingCreationType)));\n\t\tif (vestings[uid].vestingAddress == address(0)) {\n\t\t\tif (_type == 1) {\n\t\t\t\tvesting = vestingFactory.deployVesting(SOV, staking, _tokenOwner, _cliff, _duration, feeSharingProxy, _tokenOwner);\n\t\t\t} else {\n\t\t\t\tvesting = vestingFactory.deployTeamVesting(SOV, staking, _tokenOwner, _cliff, _duration, feeSharingProxy, vestingOwner);\n\t\t\t}\n\t\t\tvestings[uid] = Vesting(_type, _vestingCreationType, vesting);\n\t\t\tvestingsOf[_tokenOwner].push(uid);\n\t\t\tisVesting[vesting] = true;\n\t\t}\n\t\treturn vestings[uid].vestingAddress;\n\t}\n\n\t/**\n\t * @notice stores the addresses of Vesting contracts from all three previous versions of Vesting Registry\n\t */\n\tfunction _getDeployedVestings(address _tokenOwner, uint256 _vestingCreationType) internal {\n\t\tuint256 vestingType = 1;\n\t\tuint256 teamVestingType = 0;\n\t\tuint256 uid;\n\t\tuint256 length = vestingRegistries.length;\n\t\tfor (uint256 i = 0; i < length; i++) {\n\t\t\taddress vestingAddress = vestingRegistries[i].getVesting(_tokenOwner);\n\t\t\tif (vestingAddress != address(0)) {\n\t\t\t\tVestingLogic vesting = VestingLogic(vestingAddress);\n\t\t\t\tuid = uint256(\n\t\t\t\t\tkeccak256(abi.encodePacked(_tokenOwner, vestingType, vesting.cliff(), vesting.duration(), _vestingCreationType))\n\t\t\t\t);\n\t\t\t\tvestings[uid] = Vesting(vestingType, _vestingCreationType, vestingAddress);\n\t\t\t\tvestingsOf[_tokenOwner].push(uid);\n\t\t\t\tisVesting[vestingAddress] = true;\n\t\t\t}\n\t\t\taddress teamVestingAddress = vestingRegistries[i].getTeamVesting(_tokenOwner);\n\t\t\tif (teamVestingAddress != address(0)) {\n\t\t\t\tVestingLogic vesting = VestingLogic(teamVestingAddress);\n\t\t\t\tuid = uint256(\n\t\t\t\t\tkeccak256(abi.encodePacked(_tokenOwner, teamVestingType, vesting.cliff(), vesting.duration(), _vestingCreationType))\n\t\t\t\t);\n\t\t\t\tvestings[uid] = Vesting(teamVestingType, _vestingCreationType, teamVestingAddress);\n\t\t\t\tvestingsOf[_tokenOwner].push(uid);\n\t\t\t\tisVesting[teamVestingAddress] = true;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice returns all vesting details for the given token owner\n\t */\n\tfunction getVestingsOf(address _tokenOwner) external view returns (Vesting[] memory) {\n\t\tuint256[] memory vestingIds = vestingsOf[_tokenOwner];\n\t\tuint256 length = vestingIds.length;\n\t\tVesting[] memory _vestings = new Vesting[](vestingIds.length);\n\t\tfor (uint256 i = 0; i < length; i++) {\n\t\t\t_vestings[i] = vestings[vestingIds[i]];\n\t\t}\n\t\treturn _vestings;\n\t}\n\n\t/**\n\t * @notice returns cliff and duration for Vesting & TeamVesting contracts\n\t */\n\tfunction getVestingDetails(address _vestingAddress) external view returns (uint256 cliff, uint256 duration) {\n\t\tVestingLogic vesting = VestingLogic(_vestingAddress);\n\t\treturn (vesting.cliff(), vesting.duration());\n\t}\n\n\t/**\n\t * @notice returns if the address is a vesting address\n\t */\n\tfunction isVestingAdress(address _vestingAddress) external view returns (bool isVestingAddr) {\n\t\treturn isVesting[_vestingAddress];\n\t}\n}\n"
      },
      "contracts/governance/Vesting/VestingRegistryStorage.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../../openzeppelin/Initializable.sol\";\nimport \"../../utils/AdminRole.sol\";\nimport \"../../interfaces/IERC20.sol\";\nimport \"./IVestingFactory.sol\";\nimport \"../../locked/LockedSOV.sol\";\nimport \"./IVestingRegistry.sol\";\n\n/**\n * @title Vesting Registry Storage Contract.\n *\n * @notice This contract is just the storage required for vesting registry.\n * It is parent of VestingRegistryProxy and VestingRegistryLogic.\n *\n * @dev Use Ownable as a parent to align storage structure for Logic and Proxy contracts.\n * */\n\ncontract VestingRegistryStorage is Initializable, AdminRole {\n\t///@notice the vesting factory contract\n\tIVestingFactory public vestingFactory;\n\n\t///@notice the Locked SOV contract\n\tLockedSOV public lockedSOV;\n\n\t///@notice the list of vesting registries\n\tIVestingRegistry[] public vestingRegistries;\n\n\t///@notice the SOV token contract\n\taddress public SOV;\n\n\t///@notice the staking contract address\n\taddress public staking;\n\n\t///@notice fee sharing proxy\n\taddress public feeSharingProxy;\n\n\t///@notice the vesting owner (e.g. governance timelock address)\n\taddress public vestingOwner;\n\n\tenum VestingType {\n\t\tTeamVesting, //MultisigVesting\n\t\tVesting //TokenHolderVesting\n\t}\n\n\t///@notice Vesting details\n\tstruct Vesting {\n\t\tuint256 vestingType;\n\t\tuint256 vestingCreationType;\n\t\taddress vestingAddress;\n\t}\n\n\t///@notice A record of vesting details for a unique id\n\t///@dev vestings[uid] returns vesting data\n\tmapping(uint256 => Vesting) public vestings;\n\n\t///@notice A record of all unique ids for a particular token owner\n\t///@dev vestingsOf[tokenOwner] returns array of unique ids\n\tmapping(address => uint256[]) public vestingsOf;\n\n\t///@notice A record of all vesting addresses\n\t///@dev isVesting[address] returns if the address is a vesting address\n\tmapping(address => bool) public isVesting;\n}\n"
      },
      "contracts/utils/AdminRole.sol": {
        "content": "pragma solidity 0.5.17;\n\nimport \"../openzeppelin/Ownable.sol\";\n\ncontract AdminRole is Ownable {\n\t/// @dev user => flag whether user has admin role.\n\tmapping(address => bool) public admins;\n\n\tevent AdminAdded(address admin);\n\tevent AdminRemoved(address admin);\n\n\t/**\n\t * @dev Throws if called by any account other than the owner or admin.\n\t * or on our own overriding sovrynOwnable.\n\t */\n\tmodifier onlyAuthorized() {\n\t\trequire(isOwner() || admins[msg.sender], \"unauthorized\");\n\t\t_;\n\t}\n\n\t/**\n\t * @notice Add account to ACL.\n\t * @param _admin The addresses of the account to grant permissions.\n\t * */\n\tfunction addAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = true;\n\t\temit AdminAdded(_admin);\n\t}\n\n\t/**\n\t * @notice Remove account from ACL.\n\t * @param _admin The addresses of the account to revoke permissions.\n\t * */\n\tfunction removeAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = false;\n\t\temit AdminRemoved(_admin);\n\t}\n}\n"
      },
      "contracts/governance/Vesting/IVestingFactory.sol": {
        "content": "pragma solidity ^0.5.17;\n\n/**\n * @title Interface for Vesting Factory contract.\n * @dev Interfaces are used to cast a contract address into a callable instance.\n * This interface is used by VestingFactory contract to override empty\n * implemention of deployVesting and deployTeamVesting functions\n * and on VestingRegistry contract to use an instance of VestingFactory.\n */\ninterface IVestingFactory {\n\tfunction deployVesting(\n\t\taddress _SOV,\n\t\taddress _staking,\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration,\n\t\taddress _feeSharing,\n\t\taddress _owner\n\t) external returns (address);\n\n\tfunction deployTeamVesting(\n\t\taddress _SOV,\n\t\taddress _staking,\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration,\n\t\taddress _feeSharing,\n\t\taddress _owner\n\t) external returns (address);\n}\n"
      },
      "contracts/locked/LockedSOV.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../openzeppelin/SafeMath.sol\";\nimport \"../interfaces/IERC20.sol\";\nimport \"../governance/Vesting/VestingRegistry.sol\";\nimport \"../governance/Vesting/VestingLogic.sol\";\nimport \"./ILockedSOV.sol\";\n\n/**\n *  @title The Locked SOV Contract.\n *  @author Franklin Richards - powerhousefrank@protonmail.com\n *  @notice This contract is used to receive reward from other contracts, Create Vesting and Stake Tokens.\n */\ncontract LockedSOV is ILockedSOV {\n\tusing SafeMath for uint256;\n\n\tuint256 public constant MAX_BASIS_POINT = 10000;\n\tuint256 public constant MAX_DURATION = 37;\n\n\t/* Storage */\n\n\t/// @notice True if the migration to a new Locked SOV Contract has started.\n\tbool public migration;\n\n\t/// @notice The cliff is the time period after which the tokens begin to unlock.\n\tuint256 public cliff;\n\t/// @notice The duration is the time period after all tokens will have been unlocked.\n\tuint256 public duration;\n\n\t/// @notice The SOV token contract.\n\tIERC20 public SOV;\n\t/// @notice The Vesting registry contract.\n\tVestingRegistry public vestingRegistry;\n\t/// @notice The New (Future) Locked SOV.\n\tILockedSOV public newLockedSOV;\n\n\t/// @notice The locked user balances.\n\tmapping(address => uint256) private lockedBalances;\n\t/// @notice The unlocked user balances.\n\tmapping(address => uint256) private unlockedBalances;\n\t/// @notice The contracts/wallets with admin power.\n\tmapping(address => bool) private isAdmin;\n\n\t/* Events */\n\n\t/// @notice Emitted when a new Admin is added to the admin list.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _newAdmin The address of the new admin.\n\tevent AdminAdded(address indexed _initiator, address indexed _newAdmin);\n\n\t/// @notice Emitted when an admin is removed from the admin list.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _removedAdmin The address of the removed admin.\n\tevent AdminRemoved(address indexed _initiator, address indexed _removedAdmin);\n\n\t/// @notice Emitted when Vesting Registry, Duration and/or Cliff is updated.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _vestingRegistry The Vesting Registry Contract.\n\t/// @param _cliff The time period after which the tokens begin to unlock.\n\t/// @param _duration The time period after all tokens will have been unlocked.\n\tevent RegistryCliffAndDurationUpdated(address indexed _initiator, address indexed _vestingRegistry, uint256 _cliff, uint256 _duration);\n\n\t/// @notice Emitted when a new deposit is made.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _userAddress The user to whose un/locked balance a new deposit was made.\n\t/// @param _sovAmount The amount of SOV to be added to the un/locked balance.\n\t/// @param _basisPoint The % (in Basis Point) which determines how much will be unlocked immediately.\n\tevent Deposited(address indexed _initiator, address indexed _userAddress, uint256 _sovAmount, uint256 _basisPoint);\n\n\t/// @notice Emitted when a user withdraws the fund.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _userAddress The user whose unlocked balance has to be withdrawn.\n\t/// @param _sovAmount The amount of SOV withdrawn from the unlocked balance.\n\tevent Withdrawn(address indexed _initiator, address indexed _userAddress, uint256 _sovAmount);\n\n\t/// @notice Emitted when a user creates a vesting for himself.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _userAddress The user whose unlocked balance has to be withdrawn.\n\t/// @param _vesting The Vesting Contract.\n\tevent VestingCreated(address indexed _initiator, address indexed _userAddress, address indexed _vesting);\n\n\t/// @notice Emitted when a user stakes tokens.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _vesting The Vesting Contract.\n\t/// @param _amount The amount of locked tokens staked by the user.\n\tevent TokenStaked(address indexed _initiator, address indexed _vesting, uint256 _amount);\n\n\t/// @notice Emitted when an admin initiates a migration to new Locked SOV Contract.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _newLockedSOV The address of the new Locked SOV Contract.\n\tevent MigrationStarted(address indexed _initiator, address indexed _newLockedSOV);\n\n\t/// @notice Emitted when a user initiates the transfer to a new Locked SOV Contract.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _amount The amount of locked tokens to transfer from this contract to the new one.\n\tevent UserTransfered(address indexed _initiator, uint256 _amount);\n\n\t/* Modifiers */\n\n\tmodifier onlyAdmin {\n\t\trequire(isAdmin[msg.sender], \"Only admin can call this.\");\n\t\t_;\n\t}\n\n\tmodifier migrationAllowed {\n\t\trequire(migration, \"Migration has not yet started.\");\n\t\t_;\n\t}\n\n\t/* Constructor */\n\n\t/**\n\t * @notice Setup the required parameters.\n\t * @param _SOV The SOV Token Address.\n\t * @param _vestingRegistry The Vesting Registry Address.\n\t * @param _cliff The time period after which the tokens begin to unlock.\n\t * @param _duration The time period after all tokens will have been unlocked.\n\t * @param _admins The list of Admins to be added.\n\t */\n\tconstructor(\n\t\taddress _SOV,\n\t\taddress _vestingRegistry,\n\t\tuint256 _cliff,\n\t\tuint256 _duration,\n\t\taddress[] memory _admins\n\t) public {\n\t\trequire(_SOV != address(0), \"Invalid SOV Address.\");\n\t\trequire(_vestingRegistry != address(0), \"Vesting registry address is invalid.\");\n\t\trequire(_duration < MAX_DURATION, \"Duration is too long.\");\n\n\t\tSOV = IERC20(_SOV);\n\t\tvestingRegistry = VestingRegistry(_vestingRegistry);\n\t\tcliff = _cliff * 4 weeks;\n\t\tduration = _duration * 4 weeks;\n\n\t\tfor (uint256 index = 0; index < _admins.length; index++) {\n\t\t\tisAdmin[_admins[index]] = true;\n\t\t}\n\t}\n\n\t/* Public or External Functions */\n\n\t/**\n\t * @notice The function to add a new admin.\n\t * @param _newAdmin The address of the new admin.\n\t * @dev Only callable by an Admin.\n\t */\n\tfunction addAdmin(address _newAdmin) public onlyAdmin {\n\t\trequire(_newAdmin != address(0), \"Invalid Address.\");\n\t\trequire(!isAdmin[_newAdmin], \"Address is already admin.\");\n\t\tisAdmin[_newAdmin] = true;\n\n\t\temit AdminAdded(msg.sender, _newAdmin);\n\t}\n\n\t/**\n\t * @notice The function to remove an admin.\n\t * @param _adminToRemove The address of the admin which should be removed.\n\t * @dev Only callable by an Admin.\n\t */\n\tfunction removeAdmin(address _adminToRemove) public onlyAdmin {\n\t\trequire(isAdmin[_adminToRemove], \"Address is not an admin.\");\n\t\tisAdmin[_adminToRemove] = false;\n\n\t\temit AdminRemoved(msg.sender, _adminToRemove);\n\t}\n\n\t/**\n\t * @notice The function to update the Vesting Registry, Duration and Cliff.\n\t * @param _vestingRegistry The Vesting Registry Address.\n\t * @param _cliff The time period after which the tokens begin to unlock.\n\t * @param _duration The time period after all tokens will have been unlocked.\n\t * @dev IMPORTANT 1: You have to change Vesting Registry if you want to change Duration and/or Cliff.\n\t * IMPORTANT 2: `_cliff` and `_duration` is multiplied by 4 weeks in this function.\n\t */\n\tfunction changeRegistryCliffAndDuration(\n\t\taddress _vestingRegistry,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) external onlyAdmin {\n\t\trequire(address(vestingRegistry) != _vestingRegistry, \"Vesting Registry has to be different for changing duration and cliff.\");\n\t\t/// If duration is also zero, then it is similar to Unlocked SOV.\n\t\trequire(_duration != 0, \"Duration cannot be zero.\");\n\t\trequire(_duration < MAX_DURATION, \"Duration is too long.\");\n\n\t\tvestingRegistry = VestingRegistry(_vestingRegistry);\n\n\t\tcliff = _cliff * 4 weeks;\n\t\tduration = _duration * 4 weeks;\n\n\t\temit RegistryCliffAndDurationUpdated(msg.sender, _vestingRegistry, _cliff, _duration);\n\t}\n\n\t/**\n\t * @notice Adds SOV to the user balance (Locked and Unlocked Balance based on `_basisPoint`).\n\t * @param _userAddress The user whose locked balance has to be updated with `_sovAmount`.\n\t * @param _sovAmount The amount of SOV to be added to the locked and/or unlocked balance.\n\t * @param _basisPoint The % (in Basis Point)which determines how much will be unlocked immediately.\n\t */\n\tfunction deposit(\n\t\taddress _userAddress,\n\t\tuint256 _sovAmount,\n\t\tuint256 _basisPoint\n\t) external {\n\t\t_deposit(_userAddress, _sovAmount, _basisPoint);\n\t}\n\n\t/**\n\t * @notice Adds SOV to the locked balance of a user.\n\t * @param _userAddress The user whose locked balance has to be updated with _sovAmount.\n\t * @param _sovAmount The amount of SOV to be added to the locked balance.\n\t * @dev This is here because there are dependency with other contracts.\n\t */\n\tfunction depositSOV(address _userAddress, uint256 _sovAmount) external {\n\t\t_deposit(_userAddress, _sovAmount, 0);\n\t}\n\n\tfunction _deposit(\n\t\taddress _userAddress,\n\t\tuint256 _sovAmount,\n\t\tuint256 _basisPoint\n\t) private {\n\t\t// MAX_BASIS_POINT is not included because if 100% is unlocked, then LockedSOV is not required to be used.\n\t\trequire(_basisPoint < MAX_BASIS_POINT, \"Basis Point has to be less than 10000.\");\n\t\tbool txStatus = SOV.transferFrom(msg.sender, address(this), _sovAmount);\n\t\trequire(txStatus, \"Token transfer was not successful. Check receiver address.\");\n\n\t\tuint256 unlockedBal = _sovAmount.mul(_basisPoint).div(MAX_BASIS_POINT);\n\n\t\tunlockedBalances[_userAddress] = unlockedBalances[_userAddress].add(unlockedBal);\n\t\tlockedBalances[_userAddress] = lockedBalances[_userAddress].add(_sovAmount).sub(unlockedBal);\n\n\t\temit Deposited(msg.sender, _userAddress, _sovAmount, _basisPoint);\n\t}\n\n\t/**\n\t * @notice A function to withdraw the unlocked balance.\n\t * @param _receiverAddress If specified, the unlocked balance will go to this address, else to msg.sender.\n\t */\n\tfunction withdraw(address _receiverAddress) public {\n\t\t_withdraw(msg.sender, _receiverAddress);\n\t}\n\n\tfunction _withdraw(address _sender, address _receiverAddress) private {\n\t\taddress userAddr = _receiverAddress;\n\t\tif (_receiverAddress == address(0)) {\n\t\t\tuserAddr = _sender;\n\t\t}\n\n\t\tuint256 amount = unlockedBalances[_sender];\n\t\tunlockedBalances[_sender] = 0;\n\n\t\tbool txStatus = SOV.transfer(userAddr, amount);\n\t\trequire(txStatus, \"Token transfer was not successful. Check receiver address.\");\n\n\t\temit Withdrawn(_sender, userAddr, amount);\n\t}\n\n\t/**\n\t * @notice Creates vesting if not already created and Stakes tokens for a user.\n\t * @dev Only use this function if the `duration` is small.\n\t */\n\tfunction createVestingAndStake() public {\n\t\t_createVestingAndStake(msg.sender);\n\t}\n\n\tfunction _createVestingAndStake(address _sender) private {\n\t\taddress vestingAddr = _getVesting(_sender);\n\n\t\tif (vestingAddr == address(0)) {\n\t\t\tvestingAddr = _createVesting(_sender);\n\t\t}\n\n\t\t_stakeTokens(_sender, vestingAddr);\n\t}\n\n\t/**\n\t * @notice Creates vesting contract (if it hasn't been created yet) for the calling user.\n\t * @return _vestingAddress The New Vesting Contract Created.\n\t */\n\tfunction createVesting() public returns (address _vestingAddress) {\n\t\t_vestingAddress = _createVesting(msg.sender);\n\t}\n\n\t/**\n\t * @notice Stakes tokens for a user who already have a vesting created.\n\t * @dev The user should already have a vesting created, else this function will throw error.\n\t */\n\tfunction stakeTokens() public {\n\t\tVestingLogic vesting = VestingLogic(_getVesting(msg.sender));\n\n\t\trequire(cliff == vesting.cliff() && duration == vesting.duration(), \"Wrong Vesting Schedule.\");\n\n\t\t_stakeTokens(msg.sender, address(vesting));\n\t}\n\n\t/**\n\t * @notice Withdraws unlocked tokens and Stakes Locked tokens for a user who already have a vesting created.\n\t * @param _receiverAddress If specified, the unlocked balance will go to this address, else to msg.sender.\n\t */\n\tfunction withdrawAndStakeTokens(address _receiverAddress) external {\n\t\t_withdraw(msg.sender, _receiverAddress);\n\t\t_createVestingAndStake(msg.sender);\n\t}\n\n\t/**\n\t * @notice Withdraws unlocked tokens and Stakes Locked tokens for a user who already have a vesting created.\n\t * @param _userAddress The address of user tokens will be withdrawn.\n\t */\n\tfunction withdrawAndStakeTokensFrom(address _userAddress) external {\n\t\t_withdraw(_userAddress, _userAddress);\n\t\t_createVestingAndStake(_userAddress);\n\t}\n\n\t/**\n\t * @notice Function to start the process of migration to new contract.\n\t * @param _newLockedSOV The new locked sov contract address.\n\t */\n\tfunction startMigration(address _newLockedSOV) external onlyAdmin {\n\t\trequire(_newLockedSOV != address(0), \"New Locked SOV Address is Invalid.\");\n\t\tnewLockedSOV = ILockedSOV(_newLockedSOV);\n\t\tSOV.approve(_newLockedSOV, SOV.balanceOf(address(this)));\n\t\tmigration = true;\n\n\t\temit MigrationStarted(msg.sender, _newLockedSOV);\n\t}\n\n\t/**\n\t * @notice Function to transfer the locked balance from this contract to new LockedSOV Contract.\n\t * @dev Address is not specified to discourage selling lockedSOV to other address.\n\t */\n\tfunction transfer() external migrationAllowed {\n\t\tuint256 amount = lockedBalances[msg.sender];\n\t\tlockedBalances[msg.sender] = 0;\n\n\t\tnewLockedSOV.depositSOV(msg.sender, amount);\n\n\t\temit UserTransfered(msg.sender, amount);\n\t}\n\n\t/* Internal Functions */\n\n\t/**\n\t * @notice Creates a Vesting Contract for a user.\n\t * @param _tokenOwner The owner of the vesting contract.\n\t * @return _vestingAddress The Vesting Contract Address.\n\t * @dev Does not do anything if Vesting Contract was already created.\n\t */\n\tfunction _createVesting(address _tokenOwner) internal returns (address _vestingAddress) {\n\t\t/// Here zero is given in place of amount, as amount is not really used in `vestingRegistry.createVesting()`.\n\t\tvestingRegistry.createVesting(_tokenOwner, 0, cliff, duration);\n\t\t_vestingAddress = _getVesting(_tokenOwner);\n\t\temit VestingCreated(msg.sender, _tokenOwner, _vestingAddress);\n\t}\n\n\t/**\n\t * @notice Returns the Vesting Contract Address.\n\t * @param _tokenOwner The owner of the vesting contract.\n\t * @return _vestingAddress The Vesting Contract Address.\n\t */\n\tfunction _getVesting(address _tokenOwner) internal view returns (address _vestingAddress) {\n\t\treturn vestingRegistry.getVesting(_tokenOwner);\n\t}\n\n\t/**\n\t * @notice Stakes the tokens in a particular vesting contract.\n\t * @param _vesting The Vesting Contract Address.\n\t */\n\tfunction _stakeTokens(address _sender, address _vesting) internal {\n\t\tuint256 amount = lockedBalances[_sender];\n\t\tlockedBalances[_sender] = 0;\n\n\t\trequire(SOV.approve(_vesting, amount), \"Approve failed.\");\n\t\tVestingLogic(_vesting).stakeTokens(amount);\n\n\t\temit TokenStaked(_sender, _vesting, amount);\n\t}\n\n\t/* Getter or Read Functions */\n\n\t/**\n\t * @notice The function to get the locked balance of a user.\n\t * @param _addr The address of the user to check the locked balance.\n\t * @return _balance The locked balance of the address `_addr`.\n\t */\n\tfunction getLockedBalance(address _addr) external view returns (uint256 _balance) {\n\t\treturn lockedBalances[_addr];\n\t}\n\n\t/**\n\t * @notice The function to get the unlocked balance of a user.\n\t * @param _addr The address of the user to check the unlocked balance.\n\t * @return _balance The unlocked balance of the address `_addr`.\n\t */\n\tfunction getUnlockedBalance(address _addr) external view returns (uint256 _balance) {\n\t\treturn unlockedBalances[_addr];\n\t}\n\n\t/**\n\t * @notice The function to check is an address is admin or not.\n\t * @param _addr The address of the user to check the admin status.\n\t * @return _status True if admin, False otherwise.\n\t */\n\tfunction adminStatus(address _addr) external view returns (bool _status) {\n\t\treturn isAdmin[_addr];\n\t}\n}\n"
      },
      "contracts/governance/Vesting/IVestingRegistry.sol": {
        "content": "pragma solidity ^0.5.17;\n\n/**\n * @title Interface for upgradable Vesting Registry contract.\n * @dev Interfaces are used to cast a contract address into a callable instance.\n */\ninterface IVestingRegistry {\n\tfunction getVesting(address _tokenOwner) external view returns (address);\n\n\tfunction getTeamVesting(address _tokenOwner) external view returns (address);\n}\n"
      },
      "contracts/governance/Vesting/VestingRegistry.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../../openzeppelin/Ownable.sol\";\nimport \"../../interfaces/IERC20.sol\";\nimport \"../Staking/IStaking.sol\";\nimport \"../IFeeSharingProxy.sol\";\nimport \"./IVestingFactory.sol\";\nimport \"./IVesting.sol\";\nimport \"./ITeamVesting.sol\";\nimport \"../../openzeppelin/SafeMath.sol\";\n\n/**\n * @title Vesting Registry contract.\n *\n * @notice On January 25, 2020, Sovryn launched the Genesis Reservation system.\n * Sovryn community members who controlled a special NFT were granted access to\n * stake BTC or rBTC for cSOV tokens at a rate of 2500 satoshis per cSOV. Per\n * SIP-0003, up to 2,000,000 cSOV were made available in the Genesis event,\n * which will be redeemable on a 1:1 basis for cSOV, subject to approval by\n * existing SOV holders.\n *\n * On 15 Feb 2021 Sovryn is taking another step in its journey to decentralized\n * financial sovereignty with the vote on SIP 0005. This proposal will enable\n * participants of the Genesis Reservation system to redeem their reserved cSOV\n * tokens for SOV. They will also have the choice to redeem cSOV for rBTC if\n * they decide to exit the system.\n *\n * This contract deals with the vesting and redemption of cSOV tokens.\n * */\ncontract VestingRegistry is Ownable {\n\tusing SafeMath for uint256;\n\n\t/* Storage */\n\n\t/// @notice Constant used for computing the vesting dates.\n\tuint256 public constant FOUR_WEEKS = 4 weeks;\n\n\tuint256 public constant CSOV_VESTING_CLIFF = FOUR_WEEKS;\n\tuint256 public constant CSOV_VESTING_DURATION = 10 * FOUR_WEEKS;\n\n\tIVestingFactory public vestingFactory;\n\n\t/// @notice The SOV token contract.\n\taddress public SOV;\n\n\t/// @notice The cSOV token contracts.\n\taddress[] public CSOVtokens;\n\n\tuint256 public priceSats;\n\n\t/// @notice The staking contract address.\n\taddress public staking;\n\n\t/// @notice Fee sharing proxy.\n\taddress public feeSharingProxy;\n\n\t/// @notice The vesting owner (e.g. governance timelock address).\n\taddress public vestingOwner;\n\n\t/// @dev TODO: Add to the documentation: address can have only one vesting of each type.\n\t/// @dev user => vesting type => vesting contract.\n\tmapping(address => mapping(uint256 => address)) public vestingContracts;\n\n\t/**\n\t * @dev Struct can be created to save storage slots, but it doesn't make\n\t * sense. We don't have a lot of blacklisted accounts or account with\n\t * locked amount.\n\t * */\n\n\t/// @dev user => flag whether user has already exchange cSOV or got a reimbursement.\n\tmapping(address => bool) public processedList;\n\n\t/// @dev user => flag whether user shouldn't be able to exchange or reimburse.\n\tmapping(address => bool) public blacklist;\n\n\t/// @dev user => amount of tokens should not be processed.\n\tmapping(address => uint256) public lockedAmount;\n\n\t/// @dev user => flag whether user has admin role.\n\tmapping(address => bool) public admins;\n\n\tenum VestingType {\n\t\tTeamVesting, // MultisigVesting\n\t\tVesting // TokenHolderVesting\n\t}\n\n\t/* Events */\n\n\tevent CSOVReImburse(address from, uint256 CSOVamount, uint256 reImburseAmount);\n\tevent CSOVTokensExchanged(address indexed caller, uint256 amount);\n\tevent SOVTransferred(address indexed receiver, uint256 amount);\n\tevent VestingCreated(address indexed tokenOwner, address vesting, uint256 cliff, uint256 duration, uint256 amount);\n\tevent TeamVestingCreated(address indexed tokenOwner, address vesting, uint256 cliff, uint256 duration, uint256 amount);\n\tevent TokensStaked(address indexed vesting, uint256 amount);\n\tevent AdminAdded(address admin);\n\tevent AdminRemoved(address admin);\n\n\t/* Functions */\n\n\t/**\n\t * @notice Contract deployment settings.\n\t * @param _vestingFactory The address of vesting factory contract.\n\t * @param _SOV The SOV token address.\n\t * @param _CSOVtokens The array of cSOV tokens.\n\t * @param _priceSats The price of cSOV tokens in satoshis.\n\t * @param _staking The address of staking contract.\n\t * @param _feeSharingProxy The address of fee sharing proxy contract.\n\t * @param _vestingOwner The address of an owner of vesting contract.\n\t * @dev On Sovryn the vesting owner is Exchequer Multisig.\n\t * According to SIP-0007 The Exchequer Multisig is designated to hold\n\t * certain funds in the form of rBTC and SOV, in order to allow for\n\t * flexible deployment of such funds on:\n\t *  + facilitating rBTC redemptions for Genesis pre-sale participants.\n\t *  + deploying of SOV for the purposes of exchange listings, market\n\t *    making, and partnerships with third parties.\n\t * */\n\tconstructor(\n\t\taddress _vestingFactory,\n\t\taddress _SOV,\n\t\taddress[] memory _CSOVtokens,\n\t\tuint256 _priceSats,\n\t\taddress _staking,\n\t\taddress _feeSharingProxy,\n\t\taddress _vestingOwner\n\t) public {\n\t\trequire(_SOV != address(0), \"SOV address invalid\");\n\t\trequire(_staking != address(0), \"staking address invalid\");\n\t\trequire(_feeSharingProxy != address(0), \"feeSharingProxy address invalid\");\n\t\trequire(_vestingOwner != address(0), \"vestingOwner address invalid\");\n\n\t\t_setVestingFactory(_vestingFactory);\n\t\t_setCSOVtokens(_CSOVtokens);\n\n\t\tSOV = _SOV;\n\t\tpriceSats = _priceSats;\n\t\tstaking = _staking;\n\t\tfeeSharingProxy = _feeSharingProxy;\n\t\tvestingOwner = _vestingOwner;\n\t}\n\n\t//---ACL------------------------------------------------------------------\n\n\t/**\n\t * @dev Throws if called by any account other than the owner or admin.\n\t * TODO: This ACL logic should be available on OpenZeppeling Ownable.sol\n\t * or on our own overriding sovrynOwnable. This same logic is repeated\n\t * on OriginInvestorsClaim.sol, TokenSender.sol and VestingRegistry2.sol\n\t */\n\tmodifier onlyAuthorized() {\n\t\trequire(isOwner() || admins[msg.sender], \"unauthorized\");\n\t\t_;\n\t}\n\n\t/**\n\t * @notice Add account to ACL.\n\t * @param _admin The addresses of the account to grant permissions.\n\t * */\n\tfunction addAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = true;\n\t\temit AdminAdded(_admin);\n\t}\n\n\t/**\n\t * @notice Remove account from ACL.\n\t * @param _admin The addresses of the account to revoke permissions.\n\t * */\n\tfunction removeAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = false;\n\t\temit AdminRemoved(_admin);\n\t}\n\n\t//---PostCSOV--------------------------------------------------------------\n\n\tmodifier isNotProcessed() {\n\t\trequire(!processedList[msg.sender], \"Address cannot be processed twice\");\n\t\t_;\n\t}\n\n\tmodifier isNotBlacklisted() {\n\t\trequire(!blacklist[msg.sender], \"Address blacklisted\");\n\t\t_;\n\t}\n\n\t/**\n\t * @notice cSOV payout to sender with rBTC currency.\n\t * 1.- Check holder cSOV balance by adding up every cSOV token balance.\n\t * 2.- ReImburse rBTC if funds available.\n\t * 3.- And store holder address in processedList.\n\t */\n\tfunction reImburse() public isNotProcessed isNotBlacklisted {\n\t\tuint256 CSOVAmountWei = 0;\n\t\tfor (uint256 i = 0; i < CSOVtokens.length; i++) {\n\t\t\taddress CSOV = CSOVtokens[i];\n\t\t\tuint256 balance = IERC20(CSOV).balanceOf(msg.sender);\n\t\t\tCSOVAmountWei = CSOVAmountWei.add(balance);\n\t\t}\n\n\t\trequire(CSOVAmountWei > lockedAmount[msg.sender], \"holder has no CSOV\");\n\t\tCSOVAmountWei -= lockedAmount[msg.sender];\n\t\tprocessedList[msg.sender] = true;\n\n\t\t/**\n\t\t * @dev Found and fixed the SIP-0007 bug on VestingRegistry::reImburse formula.\n\t\t * More details at Documenting Code issues at point 11 in\n\t\t * https://docs.google.com/document/d/10idTD1K6JvoBmtPKGuJ2Ub_mMh6qTLLlTP693GQKMyU/\n\t\t * Previous buggy code: uint256 reImburseAmount = (CSOVAmountWei.mul(priceSats)).div(10**10);\n\t\t * */\n\t\tuint256 reImburseAmount = (CSOVAmountWei.mul(priceSats)).div(10**8);\n\t\trequire(address(this).balance >= reImburseAmount, \"Not enough funds to reimburse\");\n\t\tmsg.sender.transfer(reImburseAmount);\n\n\t\temit CSOVReImburse(msg.sender, CSOVAmountWei, reImburseAmount);\n\t}\n\n\t/**\n\t * @notice Get contract balance.\n\t * @return The token balance of the contract.\n\t * */\n\tfunction budget() external view returns (uint256) {\n\t\tuint256 SCBudget = address(this).balance;\n\t\treturn SCBudget;\n\t}\n\n\t/**\n\t * @notice Deposit function to receiving value (rBTC).\n\t * */\n\tfunction deposit() public payable {}\n\n\t/**\n\t * @notice Send all contract balance to an account.\n\t * @param to The account address to send the balance to.\n\t * */\n\tfunction withdrawAll(address payable to) public onlyOwner {\n\t\tto.transfer(address(this).balance);\n\t}\n\n\t//--------------------------------------------------------------------------------------------------------------------------------------\n\n\t/**\n\t * @notice Sets vesting factory address. High level endpoint.\n\t * @param _vestingFactory The address of vesting factory contract.\n\t *\n\t * @dev Splitting code on two functions: high level and low level\n\t * is a pattern that makes easy to extend functionality in a readable way,\n\t * without accidentally breaking the actual action being performed.\n\t * For example, checks should be done on high level endpoint, while core\n\t * functionality should be coded on the low level function.\n\t * */\n\tfunction setVestingFactory(address _vestingFactory) public onlyOwner {\n\t\t_setVestingFactory(_vestingFactory);\n\t}\n\n\t/**\n\t * @notice Sets vesting factory address. Low level core function.\n\t * @param _vestingFactory The address of vesting factory contract.\n\t * */\n\tfunction _setVestingFactory(address _vestingFactory) internal {\n\t\trequire(_vestingFactory != address(0), \"vestingFactory address invalid\");\n\t\tvestingFactory = IVestingFactory(_vestingFactory);\n\t}\n\n\t/**\n\t * @notice Sets cSOV tokens array. High level endpoint.\n\t * @param _CSOVtokens The array of cSOV tokens.\n\t * */\n\tfunction setCSOVtokens(address[] memory _CSOVtokens) public onlyOwner {\n\t\t_setCSOVtokens(_CSOVtokens);\n\t}\n\n\t/**\n\t * @notice Sets cSOV tokens array by looping through input. Low level function.\n\t * @param _CSOVtokens The array of cSOV tokens.\n\t * */\n\tfunction _setCSOVtokens(address[] memory _CSOVtokens) internal {\n\t\tfor (uint256 i = 0; i < _CSOVtokens.length; i++) {\n\t\t\trequire(_CSOVtokens[i] != address(0), \"CSOV address invalid\");\n\t\t}\n\t\tCSOVtokens = _CSOVtokens;\n\t}\n\n\t/**\n\t * @notice Set blacklist flag (true/false).\n\t * @param _account The address to be blacklisted.\n\t * @param _blacklisted The flag to add/remove to/from a blacklist.\n\t * */\n\tfunction setBlacklistFlag(address _account, bool _blacklisted) public onlyOwner {\n\t\trequire(_account != address(0), \"account address invalid\");\n\n\t\tblacklist[_account] = _blacklisted;\n\t}\n\n\t/**\n\t * @notice Set amount to be subtracted from user token balance.\n\t * @param _account The address with locked amount.\n\t * @param _amount The amount to be locked.\n\t * */\n\tfunction setLockedAmount(address _account, uint256 _amount) public onlyOwner {\n\t\trequire(_account != address(0), \"account address invalid\");\n\t\trequire(_amount != 0, \"amount invalid\");\n\n\t\tlockedAmount[_account] = _amount;\n\t}\n\n\t/**\n\t * @notice Transfer SOV tokens to given address.\n\t *\n\t * @dev This is a wrapper for ERC-20 transfer function w/\n\t * additional checks and triggering an event.\n\t *\n\t * @param _receiver The address of the SOV receiver.\n\t * @param _amount The amount to be transferred.\n\t * */\n\tfunction transferSOV(address _receiver, uint256 _amount) public onlyOwner {\n\t\trequire(_receiver != address(0), \"receiver address invalid\");\n\t\trequire(_amount != 0, \"amount invalid\");\n\n\t\tIERC20(SOV).transfer(_receiver, _amount);\n\t\temit SOVTransferred(_receiver, _amount);\n\t}\n\n\t/**\n\t * @notice Exchange cSOV to SOV with 1:1 rate\n\t */\n\tfunction exchangeAllCSOV() public isNotProcessed isNotBlacklisted {\n\t\tprocessedList[msg.sender] = true;\n\n\t\tuint256 amount = 0;\n\t\tfor (uint256 i = 0; i < CSOVtokens.length; i++) {\n\t\t\taddress CSOV = CSOVtokens[i];\n\t\t\tuint256 balance = IERC20(CSOV).balanceOf(msg.sender);\n\t\t\tamount += balance;\n\t\t}\n\n\t\trequire(amount > lockedAmount[msg.sender], \"amount invalid\");\n\t\tamount -= lockedAmount[msg.sender];\n\n\t\t_createVestingForCSOV(amount);\n\t}\n\n\t/**\n\t * @notice cSOV tokens are moved and staked on Vesting contract.\n\t * @param _amount The amount of tokens to be vested.\n\t * */\n\tfunction _createVestingForCSOV(uint256 _amount) internal {\n\t\taddress vesting = _getOrCreateVesting(msg.sender, CSOV_VESTING_CLIFF, CSOV_VESTING_DURATION);\n\n\t\tIERC20(SOV).approve(vesting, _amount);\n\t\tIVesting(vesting).stakeTokens(_amount);\n\n\t\temit CSOVTokensExchanged(msg.sender, _amount);\n\t}\n\n\t/**\n\t * @notice Check a token address is among the cSOV token addresses.\n\t * @param _CSOV The cSOV token address.\n\t * */\n\tfunction _validateCSOV(address _CSOV) internal view {\n\t\tbool isValid = false;\n\t\tfor (uint256 i = 0; i < CSOVtokens.length; i++) {\n\t\t\tif (_CSOV == CSOVtokens[i]) {\n\t\t\t\tisValid = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\trequire(isValid, \"wrong CSOV address\");\n\t}\n\n\t/**\n\t * @notice Create Vesting contract.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @param _amount The amount to be staked.\n\t * @param _cliff The time interval to the first withdraw in seconds.\n\t * @param _duration The total duration in seconds.\n\t * */\n\tfunction createVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _amount,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) public onlyAuthorized {\n\t\taddress vesting = _getOrCreateVesting(_tokenOwner, _cliff, _duration);\n\t\temit VestingCreated(_tokenOwner, vesting, _cliff, _duration, _amount);\n\t}\n\n\t/**\n\t * @notice Create Team Vesting contract.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @param _amount The amount to be staked.\n\t * @param _cliff The time interval to the first withdraw in seconds.\n\t * @param _duration The total duration in seconds.\n\t * */\n\tfunction createTeamVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _amount,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) public onlyAuthorized {\n\t\taddress vesting = _getOrCreateTeamVesting(_tokenOwner, _cliff, _duration);\n\t\temit TeamVestingCreated(_tokenOwner, vesting, _cliff, _duration, _amount);\n\t}\n\n\t/**\n\t * @notice Stake tokens according to the vesting schedule.\n\t * @param _vesting The address of Vesting contract.\n\t * @param _amount The amount of tokens to stake.\n\t * */\n\tfunction stakeTokens(address _vesting, uint256 _amount) public onlyAuthorized {\n\t\trequire(_vesting != address(0), \"vesting address invalid\");\n\t\trequire(_amount > 0, \"amount invalid\");\n\n\t\tIERC20(SOV).approve(_vesting, _amount);\n\t\tIVesting(_vesting).stakeTokens(_amount);\n\t\temit TokensStaked(_vesting, _amount);\n\t}\n\n\t/**\n\t * @notice Query the vesting contract for an account.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @return The vesting contract address for the given token owner.\n\t * */\n\tfunction getVesting(address _tokenOwner) public view returns (address) {\n\t\treturn vestingContracts[_tokenOwner][uint256(VestingType.Vesting)];\n\t}\n\n\t/**\n\t * @notice Query the team vesting contract for an account.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @return The team vesting contract address for the given token owner.\n\t * */\n\tfunction getTeamVesting(address _tokenOwner) public view returns (address) {\n\t\treturn vestingContracts[_tokenOwner][uint256(VestingType.TeamVesting)];\n\t}\n\n\t/**\n\t * @notice If not exists, deploy a vesting contract through factory.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @param _cliff The time interval to the first withdraw in seconds.\n\t * @param _duration The total duration in seconds.\n\t * @return The vesting contract address for the given token owner\n\t * whether it existed previously or not.\n\t * */\n\tfunction _getOrCreateVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) internal returns (address) {\n\t\tuint256 type_ = uint256(VestingType.Vesting);\n\t\tif (vestingContracts[_tokenOwner][type_] == address(0)) {\n\t\t\t/// @dev TODO: Owner of OwnerVesting contracts - the same address as tokenOwner.\n\t\t\taddress vesting = vestingFactory.deployVesting(SOV, staking, _tokenOwner, _cliff, _duration, feeSharingProxy, _tokenOwner);\n\t\t\tvestingContracts[_tokenOwner][type_] = vesting;\n\t\t}\n\t\treturn vestingContracts[_tokenOwner][type_];\n\t}\n\n\t/**\n\t * @notice If not exists, deploy a team vesting contract through factory.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @param _cliff The time interval to the first withdraw in seconds.\n\t * @param _duration The total duration in seconds.\n\t * @return The team vesting contract address for the given token owner\n\t * whether it existed previously or not.\n\t * */\n\tfunction _getOrCreateTeamVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) internal returns (address) {\n\t\tuint256 type_ = uint256(VestingType.TeamVesting);\n\t\tif (vestingContracts[_tokenOwner][type_] == address(0)) {\n\t\t\taddress vesting = vestingFactory.deployTeamVesting(SOV, staking, _tokenOwner, _cliff, _duration, feeSharingProxy, vestingOwner);\n\t\t\tvestingContracts[_tokenOwner][type_] = vesting;\n\t\t}\n\t\treturn vestingContracts[_tokenOwner][type_];\n\t}\n}\n"
      },
      "contracts/governance/Vesting/VestingLogic.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../../openzeppelin/Ownable.sol\";\nimport \"../../interfaces/IERC20.sol\";\nimport \"../Staking/Staking.sol\";\nimport \"../IFeeSharingProxy.sol\";\nimport \"./IVesting.sol\";\nimport \"../ApprovalReceiver.sol\";\nimport \"./VestingStorage.sol\";\n\n/**\n * @title Vesting Logic contract.\n * @notice Staking, delegating and withdrawal functionality.\n * @dev Deployed by a VestingFactory contract.\n * */\ncontract VestingLogic is IVesting, VestingStorage, ApprovalReceiver {\n\t/* Events */\n\n\tevent TokensStaked(address indexed caller, uint256 amount);\n\tevent VotesDelegated(address indexed caller, address delegatee);\n\tevent TokensWithdrawn(address indexed caller, address receiver);\n\tevent DividendsCollected(address indexed caller, address loanPoolToken, address receiver, uint32 maxCheckpoints);\n\tevent MigratedToNewStakingContract(address indexed caller, address newStakingContract);\n\n\t/* Modifiers */\n\n\t/**\n\t * @dev Throws if called by any account other than the token owner or the contract owner.\n\t */\n\tmodifier onlyOwners() {\n\t\trequire(msg.sender == tokenOwner || isOwner(), \"unauthorized\");\n\t\t_;\n\t}\n\n\t/**\n\t * @dev Throws if called by any account other than the token owner.\n\t */\n\tmodifier onlyTokenOwner() {\n\t\trequire(msg.sender == tokenOwner, \"unauthorized\");\n\t\t_;\n\t}\n\n\t/* Functions */\n\n\t/**\n\t * @notice Stakes tokens according to the vesting schedule.\n\t * @param _amount The amount of tokens to stake.\n\t * */\n\tfunction stakeTokens(uint256 _amount) public {\n\t\t_stakeTokens(msg.sender, _amount);\n\t}\n\n\t/**\n\t * @notice Stakes tokens according to the vesting schedule.\n\t * @dev This function will be invoked from receiveApproval.\n\t * @dev SOV.approveAndCall -> this.receiveApproval -> this.stakeTokensWithApproval\n\t * @param _sender The sender of SOV.approveAndCall\n\t * @param _amount The amount of tokens to stake.\n\t * */\n\tfunction stakeTokensWithApproval(address _sender, uint256 _amount) public onlyThisContract {\n\t\t_stakeTokens(_sender, _amount);\n\t}\n\n\t/**\n\t * @notice Stakes tokens according to the vesting schedule. Low level function.\n\t * @dev Once here the allowance of tokens is taken for granted.\n\t * @param _sender The sender of tokens to stake.\n\t * @param _amount The amount of tokens to stake.\n\t * */\n\tfunction _stakeTokens(address _sender, uint256 _amount) internal {\n\t\t/// @dev Maybe better to allow staking unil the cliff was reached.\n\t\tif (startDate == 0) {\n\t\t\tstartDate = staking.timestampToLockDate(block.timestamp);\n\t\t}\n\t\tendDate = staking.timestampToLockDate(block.timestamp + duration);\n\n\t\t/// @dev Transfer the tokens to this contract.\n\t\tbool success = SOV.transferFrom(_sender, address(this), _amount);\n\t\trequire(success);\n\n\t\t/// @dev Allow the staking contract to access them.\n\t\tSOV.approve(address(staking), _amount);\n\n\t\tstaking.stakesBySchedule(_amount, cliff, duration, FOUR_WEEKS, address(this), tokenOwner);\n\n\t\temit TokensStaked(_sender, _amount);\n\t}\n\n\t/**\n\t * @notice Delegate votes from `msg.sender` which are locked until lockDate\n\t * to `delegatee`.\n\t * @param _delegatee The address to delegate votes to.\n\t * */\n\tfunction delegate(address _delegatee) public onlyTokenOwner {\n\t\trequire(_delegatee != address(0), \"delegatee address invalid\");\n\n\t\t/// @dev Withdraw for each unlocked position.\n\t\t/// @dev Don't change FOUR_WEEKS to TWO_WEEKS, a lot of vestings already deployed with FOUR_WEEKS\n\t\t///\t\tworkaround found, but it doesn't work with TWO_WEEKS\n\t\tfor (uint256 i = startDate + cliff; i <= endDate; i += FOUR_WEEKS) {\n\t\t\tstaking.delegate(_delegatee, i);\n\t\t}\n\t\temit VotesDelegated(msg.sender, _delegatee);\n\t}\n\n\t/**\n\t * @notice Withdraws all tokens from the staking contract and\n\t * forwards them to an address specified by the token owner.\n\t * @param receiver The receiving address.\n\t * @dev Can be called only by owner.\n\t * */\n\tfunction governanceWithdrawTokens(address receiver) public {\n\t\trequire(msg.sender == address(staking), \"unauthorized\");\n\n\t\t_withdrawTokens(receiver, true);\n\t}\n\n\t/**\n\t * @notice Withdraws unlocked tokens from the staking contract and\n\t * forwards them to an address specified by the token owner.\n\t * @param receiver The receiving address.\n\t * */\n\tfunction withdrawTokens(address receiver) public onlyOwners {\n\t\t_withdrawTokens(receiver, false);\n\t}\n\n\t/**\n\t * @notice Withdraws tokens from the staking contract and forwards them\n\t * to an address specified by the token owner. Low level function.\n\t * @dev Once here the caller permission is taken for granted.\n\t * @param receiver The receiving address.\n\t * @param isGovernance Whether all tokens (true)\n\t * or just unlocked tokens (false).\n\t * */\n\tfunction _withdrawTokens(address receiver, bool isGovernance) internal {\n\t\trequire(receiver != address(0), \"receiver address invalid\");\n\n\t\tuint96 stake;\n\n\t\t/// @dev Usually we just need to iterate over the possible dates until now.\n\t\tuint256 end;\n\n\t\t/// @dev In the unlikely case that all tokens have been unlocked early,\n\t\t///   allow to withdraw all of them.\n\t\tif (staking.allUnlocked() || isGovernance) {\n\t\t\tend = endDate;\n\t\t} else {\n\t\t\tend = block.timestamp;\n\t\t}\n\n\t\t/// @dev Withdraw for each unlocked position.\n\t\t/// @dev Don't change FOUR_WEEKS to TWO_WEEKS, a lot of vestings already deployed with FOUR_WEEKS\n\t\t///\t\tworkaround found, but it doesn't work with TWO_WEEKS\n\t\tfor (uint256 i = startDate + cliff; i <= end; i += FOUR_WEEKS) {\n\t\t\t/// @dev Read amount to withdraw.\n\t\t\tstake = staking.getPriorUserStakeByDate(address(this), i, block.number - 1);\n\n\t\t\t/// @dev Withdraw if > 0\n\t\t\tif (stake > 0) {\n\t\t\t\tif (isGovernance) {\n\t\t\t\t\tstaking.governanceWithdraw(stake, i, receiver);\n\t\t\t\t} else {\n\t\t\t\t\tstaking.withdraw(stake, i, receiver);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\temit TokensWithdrawn(msg.sender, receiver);\n\t}\n\n\t/**\n\t * @notice Collect dividends from fee sharing proxy.\n\t * @param _loanPoolToken The loan pool token address.\n\t * @param _maxCheckpoints Maximum number of checkpoints to be processed.\n\t * @param _receiver The receiver of tokens or msg.sender\n\t * */\n\tfunction collectDividends(\n\t\taddress _loanPoolToken,\n\t\tuint32 _maxCheckpoints,\n\t\taddress _receiver\n\t) public onlyOwners {\n\t\trequire(_receiver != address(0), \"receiver address invalid\");\n\n\t\t/// @dev Invokes the fee sharing proxy.\n\t\tfeeSharingProxy.withdraw(_loanPoolToken, _maxCheckpoints, _receiver);\n\n\t\temit DividendsCollected(msg.sender, _loanPoolToken, _receiver, _maxCheckpoints);\n\t}\n\n\t/**\n\t * @notice Allows the owners to migrate the positions\n\t * to a new staking contract.\n\t * */\n\tfunction migrateToNewStakingContract() public onlyOwners {\n\t\tstaking.migrateToNewStakingContract();\n\t\tstaking = Staking(staking.newStakingContract());\n\t\temit MigratedToNewStakingContract(msg.sender, address(staking));\n\t}\n\n\t/**\n\t * @notice Overrides default ApprovalReceiver._getToken function to\n\t * register SOV token on this contract.\n\t * @return The address of SOV token.\n\t * */\n\tfunction _getToken() internal view returns (address) {\n\t\treturn address(SOV);\n\t}\n\n\t/**\n\t * @notice Overrides default ApprovalReceiver._getSelectors function to\n\t * register stakeTokensWithApproval selector on this contract.\n\t * @return The array of registered selectors on this contract.\n\t * */\n\tfunction _getSelectors() internal view returns (bytes4[] memory) {\n\t\tbytes4[] memory selectors = new bytes4[](1);\n\t\tselectors[0] = this.stakeTokensWithApproval.selector;\n\t\treturn selectors;\n\t}\n}\n"
      },
      "contracts/locked/ILockedSOV.sol": {
        "content": "pragma solidity ^0.5.17;\n\n/**\n *  @title The Locked SOV Interface.\n *  @author Franklin Richards - powerhousefrank@protonmail.com\n *  @notice This interface is an incomplete yet useful for future migration of LockedSOV Contract.\n *  @dev Only use it if you know what you are doing.\n */\ninterface ILockedSOV {\n\t/**\n\t * @notice Adds SOV to the user balance (Locked and Unlocked Balance based on `_basisPoint`).\n\t * @param _userAddress The user whose locked balance has to be updated with `_sovAmount`.\n\t * @param _sovAmount The amount of SOV to be added to the locked and/or unlocked balance.\n\t * @param _basisPoint The % (in Basis Point)which determines how much will be unlocked immediately.\n\t */\n\tfunction deposit(\n\t\taddress _userAddress,\n\t\tuint256 _sovAmount,\n\t\tuint256 _basisPoint\n\t) external;\n\n\t/**\n\t * @notice Adds SOV to the locked balance of a user.\n\t * @param _userAddress The user whose locked balance has to be updated with _sovAmount.\n\t * @param _sovAmount The amount of SOV to be added to the locked balance.\n\t */\n\tfunction depositSOV(address _userAddress, uint256 _sovAmount) external;\n\n\t/**\n\t * @notice Withdraws unlocked tokens and Stakes Locked tokens for a user who already have a vesting created.\n\t * @param _userAddress The address of user tokens will be withdrawn.\n\t */\n\tfunction withdrawAndStakeTokensFrom(address _userAddress) external;\n}\n"
      },
      "contracts/governance/Vesting/VestingStorage.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../../openzeppelin/Ownable.sol\";\nimport \"../../interfaces/IERC20.sol\";\nimport \"../Staking/Staking.sol\";\nimport \"../IFeeSharingProxy.sol\";\n\n/**\n * @title Vesting Storage Contract.\n *\n * @notice This contract is just the storage required for vesting.\n * It is parent of VestingLogic and TeamVesting.\n *\n * @dev Use Ownable as a parent to align storage structure for Logic and Proxy contracts.\n * */\ncontract VestingStorage is Ownable {\n\t/// @notice The SOV token contract.\n\tIERC20 public SOV;\n\n\t/// @notice The staking contract address.\n\tStaking public staking;\n\n\t/// @notice The owner of the vested tokens.\n\taddress public tokenOwner;\n\n\t/// @notice Fee sharing Proxy.\n\tIFeeSharingProxy public feeSharingProxy;\n\n\t/// @notice The cliff. After this time period the tokens begin to unlock.\n\tuint256 public cliff;\n\n\t/// @notice The duration. After this period all tokens will have been unlocked.\n\tuint256 public duration;\n\n\t/// @notice The start date of the vesting.\n\tuint256 public startDate;\n\n\t/// @notice The end date of the vesting.\n\tuint256 public endDate;\n\n\t/// @notice Constant used for computing the vesting dates.\n\tuint256 constant FOUR_WEEKS = 4 weeks;\n}\n"
      },
      "contracts/governance/ErrorDecoder.sol": {
        "content": "pragma solidity ^0.5.17;\n\n/**\n * @title Base contract to properly handle returned data on failed calls\n * @dev On EVM if the return data length of a call is less than 68,\n * then the transaction fails silently without a revert message!\n *\n * As described in the Solidity documentation\n * https://solidity.readthedocs.io/en/v0.5.17/control-structures.html#revert\n * the revert reason is an ABI-encoded string consisting of:\n * 0x08c379a0 // Function selector (method id) for \"Error(string)\" signature\n * 0x0000000000000000000000000000000000000000000000000000000000000020 // Data offset\n * 0x000000000000000000000000000000000000000000000000000000000000001a // String length\n * 0x4e6f7420656e6f7567682045746865722070726f76696465642e000000000000 // String data\n *\n * Another example, debug data from test:\n *   0x08c379a0\n *   0000000000000000000000000000000000000000000000000000000000000020\n *   0000000000000000000000000000000000000000000000000000000000000034\n *   54696d656c6f636b3a3a73657444656c61793a2044656c6179206d7573742065\n *   7863656564206d696e696d756d2064656c61792e000000000000000000000000\n *\n * Parsed into:\n *   Data offset: 20\n *   Length: 34\n *   Error message:\n *     54696d656c6f636b3a3a73657444656c61793a2044656c6179206d7573742065\n *     7863656564206d696e696d756d2064656c61792e000000000000000000000000\n */\ncontract ErrorDecoder {\n\tuint256 constant ERROR_MESSAGE_SHIFT = 68; // EVM silent revert error string length\n\n\t/**\n\t * @notice Concats two error strings taking into account ERROR_MESSAGE_SHIFT.\n\t * @param str1 First string, usually a hardcoded context written by dev.\n\t * @param str2 Second string, usually the error message from the reverted call.\n\t * @return The concatenated error string\n\t */\n\tfunction _addErrorMessage(string memory str1, string memory str2) internal pure returns (string memory) {\n\t\tbytes memory bytesStr1 = bytes(str1);\n\t\tbytes memory bytesStr2 = bytes(str2);\n\t\tstring memory str12 = new string(bytesStr1.length + bytesStr2.length - ERROR_MESSAGE_SHIFT);\n\t\tbytes memory bytesStr12 = bytes(str12);\n\t\tuint256 j = 0;\n\t\tfor (uint256 i = 0; i < bytesStr1.length; i++) {\n\t\t\tbytesStr12[j++] = bytesStr1[i];\n\t\t}\n\t\tfor (uint256 i = ERROR_MESSAGE_SHIFT; i < bytesStr2.length; i++) {\n\t\t\tbytesStr12[j++] = bytesStr2[i];\n\t\t}\n\t\treturn string(bytesStr12);\n\t}\n}\n"
      },
      "contracts/token/IApproveAndCall.sol": {
        "content": "pragma solidity ^0.5.17;\n\n/**\n * @title Interface for contract governance/ApprovalReceiver.sol\n * @dev Interfaces are used to cast a contract address into a callable instance.\n */\ninterface IApproveAndCall {\n\t/**\n\t * @notice Receives approval from SOV token.\n\t * @param _sender The sender of SOV.approveAndCall function.\n\t * @param _amount The amount was approved.\n\t * @param _token The address of token.\n\t * @param _data The data will be used for low level call.\n\t * */\n\tfunction receiveApproval(\n\t\taddress _sender,\n\t\tuint256 _amount,\n\t\taddress _token,\n\t\tbytes calldata _data\n\t) external;\n}\n"
      },
      "contracts/mockup/StakingMockup.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../governance/Staking/Staking.sol\";\n\ncontract StakingMockup is Staking {\n\tfunction balanceOf_MultipliedByTwo(address account) external view returns (uint256) {\n\t\treturn balanceOf(account) * 2;\n\t}\n\n\tuint96 priorTotalVotingPower;\n\n\tfunction MOCK_priorTotalVotingPower(uint96 _priorTotalVotingPower) public {\n\t\tpriorTotalVotingPower = _priorTotalVotingPower;\n\t}\n\n\tfunction getPriorTotalVotingPower(uint32 blockNumber, uint256 time) public view returns (uint96 totalVotingPower) {\n\t\treturn priorTotalVotingPower != 0 ? priorTotalVotingPower : super.getPriorTotalVotingPower(blockNumber, time);\n\t}\n\n\tuint96 priorWeightedStake;\n\n\tfunction MOCK_priorWeightedStake(uint96 _priorWeightedStake) public {\n\t\tpriorWeightedStake = _priorWeightedStake;\n\t}\n\n\tfunction getPriorWeightedStake(\n\t\taddress account,\n\t\tuint256 blockNumber,\n\t\tuint256 date\n\t) public view returns (uint96) {\n\t\treturn priorWeightedStake != 0 ? priorWeightedStake : super.getPriorWeightedStake(account, blockNumber, date);\n\t}\n\n\tfunction calculatePriorWeightedStake(\n\t\taddress account,\n\t\tuint256 blockNumber,\n\t\tuint256 date\n\t) public {\n\t\tsuper.getPriorWeightedStake(account, blockNumber, date);\n\t}\n\n\t/**\n\t * @dev We need this function to simulate zero delegate checkpoint value.\n\t */\n\tfunction setDelegateStake(\n\t\taddress delegatee,\n\t\tuint256 lockedTS,\n\t\tuint96 value\n\t) public {\n\t\tuint32 nCheckpoints = numDelegateStakingCheckpoints[delegatee][lockedTS];\n\t\tuint96 staked = delegateStakingCheckpoints[delegatee][lockedTS][nCheckpoints - 1].stake;\n\t\t_writeDelegateCheckpoint(delegatee, lockedTS, nCheckpoints, 0);\n\t}\n}\n"
      },
      "contracts/governance/Vesting/TeamVesting.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../../openzeppelin/Ownable.sol\";\nimport \"../../interfaces/IERC20.sol\";\nimport \"../Staking/Staking.sol\";\nimport \"../IFeeSharingProxy.sol\";\nimport \"./IVesting.sol\";\nimport \"../ApprovalReceiver.sol\";\nimport \"./VestingStorage.sol\";\nimport \"../../proxy/Proxy.sol\";\n\n/**\n * @title Team Vesting Contract.\n *\n * @notice A regular vesting contract, but the owner (governance) is able to\n * withdraw earlier without a slashing.\n *\n * @dev Vesting contracts shouldn't be upgradable,\n * use Proxy instead of UpgradableProxy.\n * */\ncontract TeamVesting is VestingStorage, Proxy {\n\t/**\n\t * @notice Setup the vesting schedule.\n\t * @param _logic The address of logic contract.\n\t * @param _SOV The SOV token address.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @param _cliff The time interval to the first withdraw in seconds.\n\t * @param _duration The total duration in seconds.\n\t * */\n\tconstructor(\n\t\taddress _logic,\n\t\taddress _SOV,\n\t\taddress _stakingAddress,\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration,\n\t\taddress _feeSharingProxy\n\t) public {\n\t\trequire(_SOV != address(0), \"SOV address invalid\");\n\t\trequire(_stakingAddress != address(0), \"staking address invalid\");\n\t\trequire(_tokenOwner != address(0), \"token owner address invalid\");\n\t\trequire(_duration >= _cliff, \"duration must be bigger than or equal to the cliff\");\n\t\trequire(_feeSharingProxy != address(0), \"feeSharingProxy address invalid\");\n\n\t\t_setImplementation(_logic);\n\t\tSOV = IERC20(_SOV);\n\t\tstaking = Staking(_stakingAddress);\n\t\trequire(_duration <= staking.MAX_DURATION(), \"duration may not exceed the max duration\");\n\t\ttokenOwner = _tokenOwner;\n\t\tcliff = _cliff;\n\t\tduration = _duration;\n\t\tfeeSharingProxy = IFeeSharingProxy(_feeSharingProxy);\n\t}\n}\n"
      },
      "contracts/proxy/Proxy.sol": {
        "content": "pragma solidity ^0.5.17;\n\n/**\n * @title Base Proxy contract.\n * @notice The proxy performs delegated calls to the contract implementation\n * it is pointing to. This way upgradable contracts are possible on blockchain.\n *\n * Delegating proxy contracts are widely used for both upgradeability and gas\n * savings. These proxies rely on a logic contract (also known as implementation\n * contract or master copy) that is called using delegatecall. This allows\n * proxies to keep a persistent state (storage and balance) while the code is\n * delegated to the logic contract.\n *\n * Proxy contract is meant to be inherited and its internal functions\n * _setImplementation and _setProxyOwner to be called when upgrades become\n * neccessary.\n *\n * The loan token (iToken) contract as well as the protocol contract act as\n * proxies, delegating all calls to underlying contracts. Therefore, if you\n * want to interact with them using web3, you need to use the ABIs from the\n * contracts containing the actual logic or the interface contract.\n *   ABI for LoanToken contracts: LoanTokenLogicStandard\n *   ABI for Protocol contract: ISovryn\n *\n * @dev UpgradableProxy is the contract that inherits Proxy and wraps these\n * functions.\n * */\ncontract Proxy {\n\tbytes32 private constant KEY_IMPLEMENTATION = keccak256(\"key.implementation\");\n\tbytes32 private constant KEY_OWNER = keccak256(\"key.proxy.owner\");\n\n\tevent OwnershipTransferred(address indexed _oldOwner, address indexed _newOwner);\n\tevent ImplementationChanged(address indexed _oldImplementation, address indexed _newImplementation);\n\n\t/**\n\t * @notice Set sender as an owner.\n\t * */\n\tconstructor() public {\n\t\t_setProxyOwner(msg.sender);\n\t}\n\n\t/**\n\t * @notice Throw error if called not by an owner.\n\t * */\n\tmodifier onlyProxyOwner() {\n\t\trequire(msg.sender == getProxyOwner(), \"Proxy:: access denied\");\n\t\t_;\n\t}\n\n\t/**\n\t * @notice Set address of the implementation.\n\t * @param _implementation Address of the implementation.\n\t * */\n\tfunction _setImplementation(address _implementation) internal {\n\t\trequire(_implementation != address(0), \"Proxy::setImplementation: invalid address\");\n\t\temit ImplementationChanged(getImplementation(), _implementation);\n\n\t\tbytes32 key = KEY_IMPLEMENTATION;\n\t\tassembly {\n\t\t\tsstore(key, _implementation)\n\t\t}\n\t}\n\n\t/**\n\t * @notice Return address of the implementation.\n\t * @return Address of the implementation.\n\t * */\n\tfunction getImplementation() public view returns (address _implementation) {\n\t\tbytes32 key = KEY_IMPLEMENTATION;\n\t\tassembly {\n\t\t\t_implementation := sload(key)\n\t\t}\n\t}\n\n\t/**\n\t * @notice Set address of the owner.\n\t * @param _owner Address of the owner.\n\t * */\n\tfunction _setProxyOwner(address _owner) internal {\n\t\trequire(_owner != address(0), \"Proxy::setProxyOwner: invalid address\");\n\t\temit OwnershipTransferred(getProxyOwner(), _owner);\n\n\t\tbytes32 key = KEY_OWNER;\n\t\tassembly {\n\t\t\tsstore(key, _owner)\n\t\t}\n\t}\n\n\t/**\n\t * @notice Return address of the owner.\n\t * @return Address of the owner.\n\t * */\n\tfunction getProxyOwner() public view returns (address _owner) {\n\t\tbytes32 key = KEY_OWNER;\n\t\tassembly {\n\t\t\t_owner := sload(key)\n\t\t}\n\t}\n\n\t/**\n\t * @notice Fallback function performs a delegate call\n\t * to the actual implementation address is pointing this proxy.\n\t * Returns whatever the implementation call returns.\n\t * */\n\tfunction() external payable {\n\t\taddress implementation = getImplementation();\n\t\trequire(implementation != address(0), \"Proxy::(): implementation not found\");\n\n\t\tassembly {\n\t\t\tlet pointer := mload(0x40)\n\t\t\tcalldatacopy(pointer, 0, calldatasize)\n\t\t\tlet result := delegatecall(gas, implementation, pointer, calldatasize, 0, 0)\n\t\t\tlet size := returndatasize\n\t\t\treturndatacopy(pointer, 0, size)\n\n\t\t\tswitch result\n\t\t\t\tcase 0 {\n\t\t\t\t\trevert(pointer, size)\n\t\t\t\t}\n\t\t\t\tdefault {\n\t\t\t\t\treturn(pointer, size)\n\t\t\t\t}\n\t\t}\n\t}\n}\n"
      },
      "contracts/governance/Vesting/VestingFactory.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../../openzeppelin/Ownable.sol\";\nimport \"./Vesting.sol\";\nimport \"./TeamVesting.sol\";\nimport \"./IVestingFactory.sol\";\n\n/**\n * @title Vesting Factory: Contract to deploy vesting contracts\n * of two types: vesting (TokenHolder) and team vesting (Multisig).\n * @notice Factory pattern allows to create multiple instances\n * of the same contract and keep track of them easier.\n * */\ncontract VestingFactory is IVestingFactory, Ownable {\n\taddress public vestingLogic;\n\n\tconstructor(address _vestingLogic) public {\n\t\trequire(_vestingLogic != address(0), \"invalid vesting logic address\");\n\t\tvestingLogic = _vestingLogic;\n\t}\n\n\t/**\n\t * @notice Deploys Vesting contract.\n\t * @param _SOV the address of SOV token.\n\t * @param _staking The address of staking contract.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @param _cliff The time interval to the first withdraw in seconds.\n\t * @param _duration The total duration in seconds.\n\t * @param _feeSharing The address of fee sharing contract.\n\t * @param _vestingOwner The address of an owner of vesting contract.\n\t * @return The vesting contract address.\n\t * */\n\tfunction deployVesting(\n\t\taddress _SOV,\n\t\taddress _staking,\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration,\n\t\taddress _feeSharing,\n\t\taddress _vestingOwner\n\t)\n\t\texternal\n\t\tonlyOwner /// @dev owner - VestingRegistry\n\t\treturns (address)\n\t{\n\t\taddress vesting = address(new Vesting(vestingLogic, _SOV, _staking, _tokenOwner, _cliff, _duration, _feeSharing));\n\t\tOwnable(vesting).transferOwnership(_vestingOwner);\n\t\treturn vesting;\n\t}\n\n\t/**\n\t * @notice Deploys Team Vesting contract.\n\t * @param _SOV The address of SOV token.\n\t * @param _staking The address of staking contract.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @param _cliff The time interval to the first withdraw in seconds.\n\t * @param _duration The total duration in seconds.\n\t * @param _feeSharing The address of fee sharing contract.\n\t * @param _vestingOwner The address of an owner of vesting contract.\n\t * @return The vesting contract address.\n\t * */\n\tfunction deployTeamVesting(\n\t\taddress _SOV,\n\t\taddress _staking,\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration,\n\t\taddress _feeSharing,\n\t\taddress _vestingOwner\n\t)\n\t\texternal\n\t\tonlyOwner //owner - VestingRegistry\n\t\treturns (address)\n\t{\n\t\taddress vesting = address(new TeamVesting(vestingLogic, _SOV, _staking, _tokenOwner, _cliff, _duration, _feeSharing));\n\t\tOwnable(vesting).transferOwnership(_vestingOwner);\n\t\treturn vesting;\n\t}\n}\n"
      },
      "contracts/governance/Vesting/Vesting.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"./TeamVesting.sol\";\n\n/**\n * @title Vesting Contract.\n * @notice Team tokens and investor tokens are vested. Therefore, a smart\n * contract needs to be developed to enforce the vesting schedule.\n *\n * @dev TODO add tests for governanceWithdrawTokens.\n * */\ncontract Vesting is TeamVesting {\n\t/**\n\t * @notice Setup the vesting schedule.\n\t * @param _logic The address of logic contract.\n\t * @param _SOV The SOV token address.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @param _cliff The time interval to the first withdraw in seconds.\n\t * @param _duration The total duration in seconds.\n\t * */\n\tconstructor(\n\t\taddress _logic,\n\t\taddress _SOV,\n\t\taddress _stakingAddress,\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration,\n\t\taddress _feeSharingProxy\n\t) public TeamVesting(_logic, _SOV, _stakingAddress, _tokenOwner, _cliff, _duration, _feeSharingProxy) {}\n\n\t/**\n\t * @dev We need to add this implementation to prevent proxy call VestingLogic.governanceWithdrawTokens\n\t * @param receiver The receiver of the token withdrawal.\n\t * */\n\tfunction governanceWithdrawTokens(address receiver) public {\n\t\trevert(\"operation not supported\");\n\t}\n}\n"
      },
      "contracts/governance/Vesting/VestingRegistry3.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../../openzeppelin/Ownable.sol\";\nimport \"../../interfaces/IERC20.sol\";\nimport \"../Staking/IStaking.sol\";\nimport \"../IFeeSharingProxy.sol\";\nimport \"./IVestingFactory.sol\";\nimport \"./IVesting.sol\";\nimport \"./ITeamVesting.sol\";\nimport \"../../openzeppelin/SafeMath.sol\";\n\ncontract VestingRegistry3 is Ownable {\n\tusing SafeMath for uint256;\n\n\tIVestingFactory public vestingFactory;\n\n\t///@notice the SOV token contract\n\taddress public SOV;\n\n\t///@notice the staking contract address\n\taddress public staking;\n\t//@notice fee sharing proxy\n\taddress public feeSharingProxy;\n\t//@notice the vesting owner (e.g. governance timelock address)\n\taddress public vestingOwner;\n\n\t//TODO add to the documentation: address can have only one vesting of each type\n\t//user => vesting type => vesting contract\n\tmapping(address => mapping(uint256 => address)) public vestingContracts;\n\n\t//user => flag whether user has admin role\n\tmapping(address => bool) public admins;\n\n\tenum VestingType {\n\t\tTeamVesting, //MultisigVesting\n\t\tVesting //TokenHolderVesting\n\t}\n\n\tevent SOVTransferred(address indexed receiver, uint256 amount);\n\tevent VestingCreated(address indexed tokenOwner, address vesting, uint256 cliff, uint256 duration, uint256 amount);\n\tevent TeamVestingCreated(address indexed tokenOwner, address vesting, uint256 cliff, uint256 duration, uint256 amount);\n\tevent TokensStaked(address indexed vesting, uint256 amount);\n\tevent AdminAdded(address admin);\n\tevent AdminRemoved(address admin);\n\n\tconstructor(\n\t\taddress _vestingFactory,\n\t\taddress _SOV,\n\t\taddress _staking,\n\t\taddress _feeSharingProxy,\n\t\taddress _vestingOwner\n\t) public {\n\t\trequire(_SOV != address(0), \"SOV address invalid\");\n\t\trequire(_staking != address(0), \"staking address invalid\");\n\t\trequire(_feeSharingProxy != address(0), \"feeSharingProxy address invalid\");\n\t\trequire(_vestingOwner != address(0), \"vestingOwner address invalid\");\n\n\t\t_setVestingFactory(_vestingFactory);\n\n\t\tSOV = _SOV;\n\t\tstaking = _staking;\n\t\tfeeSharingProxy = _feeSharingProxy;\n\t\tvestingOwner = _vestingOwner;\n\t}\n\n\t/**\n\t * @dev Throws if called by any account other than the owner or admin.\n\t */\n\tmodifier onlyAuthorized() {\n\t\trequire(isOwner() || admins[msg.sender], \"unauthorized\");\n\t\t_;\n\t}\n\n\tfunction addAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = true;\n\t\temit AdminAdded(_admin);\n\t}\n\n\tfunction removeAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = false;\n\t\temit AdminRemoved(_admin);\n\t}\n\n\t/**\n\t * @notice sets vesting factory address\n\t * @param _vestingFactory the address of vesting factory contract\n\t */\n\tfunction setVestingFactory(address _vestingFactory) public onlyOwner {\n\t\t_setVestingFactory(_vestingFactory);\n\t}\n\n\tfunction _setVestingFactory(address _vestingFactory) internal {\n\t\trequire(_vestingFactory != address(0), \"vestingFactory address invalid\");\n\t\tvestingFactory = IVestingFactory(_vestingFactory);\n\t}\n\n\t/**\n\t * @notice transfers SOV tokens to given address\n\t * @param _receiver the address of the SOV receiver\n\t * @param _amount the amount to be transferred\n\t */\n\tfunction transferSOV(address _receiver, uint256 _amount) public onlyOwner {\n\t\trequire(_receiver != address(0), \"receiver address invalid\");\n\t\trequire(_amount != 0, \"amount invalid\");\n\n\t\tIERC20(SOV).transfer(_receiver, _amount);\n\t\temit SOVTransferred(_receiver, _amount);\n\t}\n\n\t/**\n\t * @notice creates Vesting contract\n\t * @param _tokenOwner the owner of the tokens\n\t * @param _amount the amount to be staked\n\t * @param _cliff the cliff in seconds\n\t * @param _duration the total duration in seconds\n\t */\n\tfunction createVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _amount,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) public onlyAuthorized {\n\t\taddress vesting = _getOrCreateVesting(_tokenOwner, _cliff, _duration);\n\t\temit VestingCreated(_tokenOwner, vesting, _cliff, _duration, _amount);\n\t}\n\n\t/**\n\t * @notice creates Team Vesting contract\n\t * @param _tokenOwner the owner of the tokens\n\t * @param _amount the amount to be staked\n\t * @param _cliff the cliff in seconds\n\t * @param _duration the total duration in seconds\n\t */\n\tfunction createTeamVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _amount,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) public onlyAuthorized {\n\t\taddress vesting = _getOrCreateTeamVesting(_tokenOwner, _cliff, _duration);\n\t\temit TeamVestingCreated(_tokenOwner, vesting, _cliff, _duration, _amount);\n\t}\n\n\t/**\n\t * @notice stakes tokens according to the vesting schedule\n\t * @param _vesting the address of Vesting contract\n\t * @param _amount the amount of tokens to stake\n\t */\n\tfunction stakeTokens(address _vesting, uint256 _amount) public onlyAuthorized {\n\t\trequire(_vesting != address(0), \"vesting address invalid\");\n\t\trequire(_amount > 0, \"amount invalid\");\n\n\t\tIERC20(SOV).approve(_vesting, _amount);\n\t\tIVesting(_vesting).stakeTokens(_amount);\n\t\temit TokensStaked(_vesting, _amount);\n\t}\n\n\t/**\n\t * @notice returns vesting contract address for the given token owner\n\t * @param _tokenOwner the owner of the tokens\n\t */\n\tfunction getVesting(address _tokenOwner) public view returns (address) {\n\t\treturn vestingContracts[_tokenOwner][uint256(VestingType.Vesting)];\n\t}\n\n\t/**\n\t * @notice returns team vesting contract address for the given token owner\n\t * @param _tokenOwner the owner of the tokens\n\t */\n\tfunction getTeamVesting(address _tokenOwner) public view returns (address) {\n\t\treturn vestingContracts[_tokenOwner][uint256(VestingType.TeamVesting)];\n\t}\n\n\tfunction _getOrCreateVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) internal returns (address) {\n\t\tuint256 type_ = uint256(VestingType.Vesting);\n\t\tif (vestingContracts[_tokenOwner][type_] == address(0)) {\n\t\t\t//TODO Owner of OwnerVesting contracts - the same address as tokenOwner\n\t\t\taddress vesting = vestingFactory.deployVesting(SOV, staking, _tokenOwner, _cliff, _duration, feeSharingProxy, _tokenOwner);\n\t\t\tvestingContracts[_tokenOwner][type_] = vesting;\n\t\t}\n\t\treturn vestingContracts[_tokenOwner][type_];\n\t}\n\n\tfunction _getOrCreateTeamVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) internal returns (address) {\n\t\tuint256 type_ = uint256(VestingType.TeamVesting);\n\t\tif (vestingContracts[_tokenOwner][type_] == address(0)) {\n\t\t\taddress vesting = vestingFactory.deployTeamVesting(SOV, staking, _tokenOwner, _cliff, _duration, feeSharingProxy, vestingOwner);\n\t\t\tvestingContracts[_tokenOwner][type_] = vesting;\n\t\t}\n\t\treturn vestingContracts[_tokenOwner][type_];\n\t}\n}\n"
      },
      "contracts/testhelpers/TestSovrynSwap.sol": {
        "content": "/**\n * Test file simulating the SovrynSwap network\n * */\n\npragma solidity 0.5.17;\n\nimport \"../openzeppelin/SafeERC20.sol\";\nimport \"../feeds/IPriceFeeds.sol\";\nimport \"./TestToken.sol\";\nimport \"../openzeppelin/SafeMath.sol\";\n\ncontract TestSovrynSwap {\n\tusing SafeERC20 for IERC20;\n\tusing SafeMath for uint256;\n\n\taddress public priceFeeds;\n\n\tconstructor(address feed) public {\n\t\tpriceFeeds = feed;\n\t}\n\n\t/**\n\t * simulating the contract registry. always returns the address of this contract\n\t * */\n\tfunction addressOf(bytes32 contractName) public view returns (address) {\n\t\treturn address(this);\n\t}\n\n\t/**\n\t * calculates the return tokens when swapping _amount, makes sure the return is bigger than _minReturn,\n\t * mints and burns the test tokens accordingly.\n\t * */\n\tfunction convertByPath(\n\t\tIERC20[] calldata _path,\n\t\tuint256 _amount,\n\t\tuint256 _minReturn,\n\t\taddress _beneficiary,\n\t\taddress _affiliateAccount,\n\t\tuint256 _affiliateFee\n\t) external payable returns (uint256) {\n\t\t//compute the return for the amount of tokens provided\n\t\t(uint256 sourceToDestRate, uint256 sourceToDestPrecision) = IPriceFeeds(priceFeeds).queryRate(address(_path[0]), address(_path[1]));\n\t\tuint256 actualReturn = _amount.mul(sourceToDestRate).div(sourceToDestPrecision);\n\n\t\trequire(actualReturn >= _minReturn, \"insufficient source tokens provided\");\n\n\t\tTestToken(address(_path[0])).burn(address(msg.sender), _amount);\n\t\tTestToken(address(_path[1])).mint(address(_beneficiary), actualReturn);\n\t\treturn actualReturn;\n\t}\n\n\t/**\n\t * queries the rate from the Price Feed contract and computes the expected return amount based on the\n\t * amout of source tokens to be swapped.\n\t * */\n\tfunction rateByPath(IERC20[] calldata _path, uint256 _amount) external view returns (uint256) {\n\t\t(uint256 sourceToDestRate, uint256 sourceToDestPrecision) = IPriceFeeds(priceFeeds).queryRate(address(_path[0]), address(_path[1]));\n\n\t\treturn _amount.mul(sourceToDestRate).div(sourceToDestPrecision);\n\t}\n\n\t/**\n\t * returns the conversion path -> always a direct path\n\t * */\n\tfunction conversionPath(IERC20 _sourceToken, IERC20 _targetToken) external view returns (IERC20[] memory) {\n\t\tIERC20[] memory path = new IERC20[](2);\n\t\tpath[0] = _sourceToken;\n\t\tpath[1] = _targetToken;\n\t\treturn path;\n\t}\n}\n"
      },
      "contracts/openzeppelin/SafeERC20.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\n\nimport \"./SafeMath.sol\";\nimport \"./Address.sol\";\nimport \"../interfaces/IERC20.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n\tusing SafeMath for uint256;\n\tusing Address for address;\n\n\tfunction safeTransfer(\n\t\tIERC20 token,\n\t\taddress to,\n\t\tuint256 value\n\t) internal {\n\t\tcallOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n\t}\n\n\tfunction safeTransferFrom(\n\t\tIERC20 token,\n\t\taddress from,\n\t\taddress to,\n\t\tuint256 value\n\t) internal {\n\t\tcallOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n\t}\n\n\tfunction safeApprove(\n\t\tIERC20 token,\n\t\taddress spender,\n\t\tuint256 value\n\t) internal {\n\t\t// safeApprove should only be called when setting an initial allowance,\n\t\t// or when resetting it to zero. To increase and decrease it, use\n\t\t// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n\t\t// solhint-disable-next-line max-line-length\n\t\trequire((value == 0) || (token.allowance(address(this), spender) == 0), \"SafeERC20: approve from non-zero to non-zero allowance\");\n\t\tcallOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n\t}\n\n\tfunction safeIncreaseAllowance(\n\t\tIERC20 token,\n\t\taddress spender,\n\t\tuint256 value\n\t) internal {\n\t\tuint256 newAllowance = token.allowance(address(this), spender).add(value);\n\t\tcallOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n\t}\n\n\tfunction safeDecreaseAllowance(\n\t\tIERC20 token,\n\t\taddress spender,\n\t\tuint256 value\n\t) internal {\n\t\tuint256 newAllowance = token.allowance(address(this), spender).sub(value, \"SafeERC20: decreased allowance below zero\");\n\t\tcallOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n\t}\n\n\t/**\n\t * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n\t * on the return value: the return value is optional (but if data is returned, it must not be false).\n\t * @param token The token targeted by the call.\n\t * @param data The call data (encoded using abi.encode or one of its variants).\n\t */\n\tfunction callOptionalReturn(IERC20 token, bytes memory data) private {\n\t\t// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n\t\t// we're implementing it ourselves.\n\n\t\t// A Solidity high level call has three parts:\n\t\t//  1. The target address is checked to verify it contains contract code\n\t\t//  2. The call itself is made, and success asserted\n\t\t//  3. The return value is decoded, which in turn checks the size of the returned data.\n\t\t// solhint-disable-next-line max-line-length\n\t\trequire(address(token).isContract(), \"SafeERC20: call to non-contract\");\n\n\t\t// solhint-disable-next-line avoid-low-level-calls\n\t\t(bool success, bytes memory returndata) = address(token).call(data);\n\t\trequire(success, \"SafeERC20: low-level call failed\");\n\n\t\tif (returndata.length > 0) {\n\t\t\t// Return data is optional\n\t\t\t// solhint-disable-next-line max-line-length\n\t\t\trequire(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n\t\t}\n\t}\n}\n"
      },
      "contracts/feeds/IPriceFeeds.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\ninterface IPriceFeeds {\n\tfunction queryRate(address sourceToken, address destToken) external view returns (uint256 rate, uint256 precision);\n\n\tfunction queryPrecision(address sourceToken, address destToken) external view returns (uint256 precision);\n\n\tfunction queryReturn(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\tuint256 sourceAmount\n\t) external view returns (uint256 destAmount);\n\n\tfunction checkPriceDisagreement(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\tuint256 sourceAmount,\n\t\tuint256 destAmount,\n\t\tuint256 maxSlippage\n\t) external view returns (uint256 sourceToDestSwapRate);\n\n\tfunction amountInEth(address Token, uint256 amount) external view returns (uint256 ethAmount);\n\n\tfunction getMaxDrawdown(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 loanAmount,\n\t\tuint256 collateralAmount,\n\t\tuint256 maintenanceMargin\n\t) external view returns (uint256);\n\n\tfunction getCurrentMarginAndCollateralSize(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 loanAmount,\n\t\tuint256 collateralAmount\n\t) external view returns (uint256 currentMargin, uint256 collateralInEthAmount);\n\n\tfunction getCurrentMargin(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 loanAmount,\n\t\tuint256 collateralAmount\n\t) external view returns (uint256 currentMargin, uint256 collateralToLoanRate);\n\n\tfunction shouldLiquidate(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 loanAmount,\n\t\tuint256 collateralAmount,\n\t\tuint256 maintenanceMargin\n\t) external view returns (bool);\n\n\tfunction getFastGasPrice(address payToken) external view returns (uint256);\n}\n"
      },
      "contracts/testhelpers/TestToken.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"../openzeppelin/SafeMath.sol\";\n\ncontract TestToken {\n\tusing SafeMath for uint256;\n\n\tevent Transfer(address indexed from, address indexed to, uint256 value);\n\tevent Approval(address indexed owner, address indexed spender, uint256 value);\n\tevent Mint(address indexed minter, uint256 value);\n\tevent Burn(address indexed burner, uint256 value);\n\n\tstring public name;\n\tstring public symbol;\n\tuint8 public decimals;\n\n\tmapping(address => uint256) internal balances;\n\tmapping(address => mapping(address => uint256)) internal allowed;\n\tuint256 internal totalSupply_;\n\n\tconstructor(\n\t\tstring memory _name,\n\t\tstring memory _symbol,\n\t\tuint8 _decimals,\n\t\tuint256 _initialAmount\n\t) public {\n\t\tname = _name;\n\t\tsymbol = _symbol;\n\t\tdecimals = _decimals;\n\n\t\tif (_initialAmount != 0) {\n\t\t\tmint(msg.sender, _initialAmount);\n\t\t}\n\t}\n\n\tfunction approve(address _spender, uint256 _value) public returns (bool) {\n\t\tallowed[msg.sender][_spender] = _value;\n\t\temit Approval(msg.sender, _spender, _value);\n\t\treturn true;\n\t}\n\n\tfunction transfer(address _to, uint256 _value) public returns (bool) {\n\t\trequire(_value <= balances[msg.sender] && _to != address(0), \"invalid transfer\");\n\n\t\tbalances[msg.sender] = balances[msg.sender].sub(_value);\n\t\tbalances[_to] = balances[_to].add(_value);\n\n\t\temit Transfer(msg.sender, _to, _value);\n\t\treturn true;\n\t}\n\n\tfunction transferFrom(\n\t\taddress _from,\n\t\taddress _to,\n\t\tuint256 _value\n\t) public returns (bool) {\n\t\tuint256 allowanceAmount = allowed[_from][msg.sender];\n\t\trequire(_value <= balances[_from] && _value <= allowanceAmount && _to != address(0), \"invalid transfer\");\n\n\t\tbalances[_from] = balances[_from].sub(_value);\n\t\tbalances[_to] = balances[_to].add(_value);\n\t\tif (allowanceAmount < uint256(-1)) {\n\t\t\tallowed[_from][msg.sender] = allowanceAmount.sub(_value);\n\t\t}\n\n\t\temit Transfer(_from, _to, _value);\n\t\treturn true;\n\t}\n\n\tfunction mint(address _to, uint256 _value) public {\n\t\trequire(_to != address(0), \"no burn allowed\");\n\t\ttotalSupply_ = totalSupply_.add(_value);\n\t\tbalances[_to] = balances[_to].add(_value);\n\n\t\temit Mint(_to, _value);\n\t\temit Transfer(address(0), _to, _value);\n\t}\n\n\tfunction burn(address _who, uint256 _value) public {\n\t\trequire(_value <= balances[_who], \"balance too low\");\n\t\t// no need to require _value <= totalSupply, since that would imply the\n\t\t// sender's balance is greater than the totalSupply, which *should* be an assertion failure\n\n\t\tbalances[_who] = balances[_who].sub(_value);\n\t\ttotalSupply_ = totalSupply_.sub(_value);\n\n\t\temit Burn(_who, _value);\n\t\temit Transfer(_who, address(0), _value);\n\t}\n\n\tfunction totalSupply() public view returns (uint256) {\n\t\treturn totalSupply_;\n\t}\n\n\tfunction balanceOf(address _owner) public view returns (uint256) {\n\t\treturn balances[_owner];\n\t}\n\n\tfunction allowance(address _owner, address _spender) public view returns (uint256) {\n\t\treturn allowed[_owner][_spender];\n\t}\n}\n"
      },
      "contracts/swaps/connectors/testnet/SwapsImplLocal.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"../../../core/State.sol\";\nimport \"../../../openzeppelin/SafeERC20.sol\";\nimport \"../../ISwapsImpl.sol\";\nimport \"../../../feeds/IPriceFeeds.sol\";\nimport \"../../../testhelpers/TestToken.sol\";\n\n/**\n * @title Swaps Implementation Local contract.\n *\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the implementation of swap process and rate calculations.\n * */\ncontract SwapsImplLocal is State, ISwapsImpl {\n\tusing SafeERC20 for IERC20;\n\n\t/**\n\t * @notice Swap two tokens.\n\t *\n\t * @param sourceTokenAddress The address of the source tokens.\n\t * @param destTokenAddress The address of the destiny tokens.\n\t *\n\t * @return destTokenAmountReceived The amount of destiny tokens sent.\n\t * @return sourceTokenAmountUsed The amount of source tokens spent.\n\t * */\n\tfunction internalSwap(\n\t\taddress sourceTokenAddress,\n\t\taddress destTokenAddress,\n\t\taddress, /*receiverAddress*/\n\t\taddress returnToSenderAddress,\n\t\tuint256 minSourceTokenAmount,\n\t\tuint256 maxSourceTokenAmount,\n\t\tuint256 requiredDestTokenAmount\n\t) public payable returns (uint256 destTokenAmountReceived, uint256 sourceTokenAmountUsed) {\n\t\trequire(sourceTokenAddress != destTokenAddress, \"source == dest\");\n\n\t\t(uint256 tradeRate, uint256 precision) = IPriceFeeds(priceFeeds).queryRate(sourceTokenAddress, destTokenAddress);\n\n\t\tif (requiredDestTokenAmount == 0) {\n\t\t\tsourceTokenAmountUsed = minSourceTokenAmount;\n\t\t\tdestTokenAmountReceived = minSourceTokenAmount.mul(tradeRate).div(precision);\n\t\t} else {\n\t\t\tdestTokenAmountReceived = requiredDestTokenAmount;\n\t\t\tsourceTokenAmountUsed = requiredDestTokenAmount.mul(precision).div(tradeRate);\n\t\t\trequire(sourceTokenAmountUsed <= minSourceTokenAmount, \"destAmount too great\");\n\t\t}\n\n\t\tTestToken(sourceTokenAddress).burn(address(this), sourceTokenAmountUsed);\n\t\tTestToken(destTokenAddress).mint(address(this), destTokenAmountReceived);\n\n\t\tif (returnToSenderAddress != address(this)) {\n\t\t\tif (sourceTokenAmountUsed < maxSourceTokenAmount) {\n\t\t\t\t/// Send unused source token back.\n\t\t\t\tIERC20(sourceTokenAddress).safeTransfer(returnToSenderAddress, maxSourceTokenAmount - sourceTokenAmountUsed);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Calculate the expected price rate of swapping a given amount\n\t *   of tokens.\n\t *\n\t * @param sourceTokenAddress The address of the source tokens.\n\t * @param destTokenAddress The address of the destiny tokens.\n\t * @param sourceTokenAmount The amount of source tokens.\n\t * @param unused Fourth parameter ignored.\n\t *\n\t * @return precision The expected price rate.\n\t * */\n\tfunction internalExpectedRate(\n\t\taddress sourceTokenAddress,\n\t\taddress destTokenAddress,\n\t\tuint256 sourceTokenAmount,\n\t\taddress unused\n\t) public view returns (uint256) {\n\t\t(uint256 sourceToDestRate, uint256 sourceToDestPrecision) = IPriceFeeds(priceFeeds).queryRate(sourceTokenAddress, destTokenAddress);\n\n\t\treturn sourceTokenAmount.mul(sourceToDestRate).div(sourceToDestPrecision);\n\t}\n\n\t/**\n\t * @notice Calculate the expected return of swapping a given amount\n\t *   of tokens.\n\t *\n\t * @param sourceTokenAddress The address of the source tokens.\n\t * @param destTokenAddress The address of the destiny tokens.\n\t * @param sourceTokenAmount The amount of source tokens.\n\t * @param unused Fourth parameter ignored.\n\t *\n\t * @return precision The expected return.\n\t * */\n\tfunction internalExpectedReturn(\n\t\taddress sourceTokenAddress,\n\t\taddress destTokenAddress,\n\t\tuint256 sourceTokenAmount,\n\t\taddress unused\n\t) public view returns (uint256) {\n\t\t(uint256 sourceToDestRate, uint256 sourceToDestPrecision) = IPriceFeeds(priceFeeds).queryRate(sourceTokenAddress, destTokenAddress);\n\n\t\treturn sourceTokenAmount.mul(sourceToDestRate).div(sourceToDestPrecision);\n\t}\n}\n"
      },
      "contracts/core/State.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"./Objects.sol\";\nimport \"../mixins/EnumerableAddressSet.sol\";\nimport \"../mixins/EnumerableBytes32Set.sol\";\nimport \"../openzeppelin/ReentrancyGuard.sol\";\nimport \"../openzeppelin/Ownable.sol\";\nimport \"../openzeppelin/SafeMath.sol\";\nimport \"../interfaces/IWrbtcERC20.sol\";\n\n/**\n * @title State contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the storage values of the Protocol.\n * */\ncontract State is Objects, ReentrancyGuard, Ownable {\n\tusing SafeMath for uint256;\n\tusing EnumerableAddressSet for EnumerableAddressSet.AddressSet; // enumerable map of addresses\n\tusing EnumerableBytes32Set for EnumerableBytes32Set.Bytes32Set; // enumerable map of bytes32 or addresses\n\n\t/// Handles asset reference price lookups.\n\taddress public priceFeeds;\n\n\t/// Handles asset swaps using dex liquidity.\n\taddress public swapsImpl;\n\n\t/// Contract registry address of the Sovryn swap network.\n\taddress public sovrynSwapContractRegistryAddress;\n\n\t/// Implementations of protocol functions.\n\tmapping(bytes4 => address) public logicTargets;\n\n\t/// Loans: loanId => Loan\n\tmapping(bytes32 => Loan) public loans;\n\n\t/// Loan parameters: loanParamsId => LoanParams\n\tmapping(bytes32 => LoanParams) public loanParams;\n\n\t/// lender => orderParamsId => Order\n\tmapping(address => mapping(bytes32 => Order)) public lenderOrders;\n\n\t/// borrower => orderParamsId => Order\n\tmapping(address => mapping(bytes32 => Order)) public borrowerOrders;\n\n\t/// loanId => delegated => approved\n\tmapping(bytes32 => mapping(address => bool)) public delegatedManagers;\n\n\t/**\n\t *** Interest ***\n\t **/\n\n\t/// lender => loanToken => LenderInterest object\n\tmapping(address => mapping(address => LenderInterest)) public lenderInterest;\n\n\t/// loanId => LoanInterest object\n\tmapping(bytes32 => LoanInterest) public loanInterest;\n\n\t/**\n\t *** Internals ***\n\t **/\n\n\t/// Implementations set.\n\tEnumerableBytes32Set.Bytes32Set internal logicTargetsSet;\n\n\t/// Active loans set.\n\tEnumerableBytes32Set.Bytes32Set internal activeLoansSet;\n\n\t/// Lender loans set.\n\tmapping(address => EnumerableBytes32Set.Bytes32Set) internal lenderLoanSets;\n\n\t/// Borrow loans set.\n\tmapping(address => EnumerableBytes32Set.Bytes32Set) internal borrowerLoanSets;\n\n\t/// User loan params set.\n\tmapping(address => EnumerableBytes32Set.Bytes32Set) internal userLoanParamSets;\n\n\t/// Address controlling fee withdrawals.\n\taddress public feesController;\n\n\t/// 10% fee /// Fee taken from lender interest payments.\n\tuint256 public lendingFeePercent = 10**19;\n\n\t/// Total interest fees received and not withdrawn per asset.\n\tmapping(address => uint256) public lendingFeeTokensHeld;\n\n\t/// Total interest fees withdraw per asset.\n\t/// lifetime fees = lendingFeeTokensHeld + lendingFeeTokensPaid\n\tmapping(address => uint256) public lendingFeeTokensPaid;\n\n\t/// 0.15% fee /// Fee paid for each trade.\n\tuint256 public tradingFeePercent = 15 * 10**16;\n\n\t/// Total trading fees received and not withdrawn per asset.\n\tmapping(address => uint256) public tradingFeeTokensHeld;\n\n\t/// Total trading fees withdraw per asset\n\t/// lifetime fees = tradingFeeTokensHeld + tradingFeeTokensPaid\n\tmapping(address => uint256) public tradingFeeTokensPaid;\n\n\t/// 0.09% fee /// Origination fee paid for each loan.\n\tuint256 public borrowingFeePercent = 9 * 10**16;\n\n\t/// Total borrowing fees received and not withdrawn per asset.\n\tmapping(address => uint256) public borrowingFeeTokensHeld;\n\n\t/// Total borrowing fees withdraw per asset.\n\t/// lifetime fees = borrowingFeeTokensHeld + borrowingFeeTokensPaid\n\tmapping(address => uint256) public borrowingFeeTokensPaid;\n\n\t/// Current protocol token deposit balance.\n\tuint256 public protocolTokenHeld;\n\n\t/// Lifetime total payout of protocol token.\n\tuint256 public protocolTokenPaid;\n\n\t/// 5% fee share in form of SOV /// Fee share for affiliate program.\n\tuint256 public affiliateFeePercent = 5 * 10**18;\n\n\t/// 5% collateral discount /// Discount on collateral for liquidators.\n\tuint256 public liquidationIncentivePercent = 5 * 10**18;\n\n\t/// loanPool => underlying\n\tmapping(address => address) public loanPoolToUnderlying;\n\n\t/// underlying => loanPool\n\tmapping(address => address) public underlyingToLoanPool;\n\n\t/// Loan pools set.\n\tEnumerableBytes32Set.Bytes32Set internal loanPoolsSet;\n\n\t/// Supported tokens for swaps.\n\tmapping(address => bool) public supportedTokens;\n\n\t/// % disagreement between swap rate and reference rate.\n\tuint256 public maxDisagreement = 5 * 10**18;\n\n\t/// Used as buffer for swap source amount estimations.\n\tuint256 public sourceBuffer = 10000;\n\n\t/// Maximum support swap size in rBTC\n\tuint256 public maxSwapSize = 50 ether;\n\n\t/// Nonce per borrower. Used for loan id creation.\n\tmapping(address => uint256) public borrowerNonce;\n\n\t/// Rollover transaction costs around 0.0000168 rBTC, it is denominated in wrBTC.\n\tuint256 public rolloverBaseReward = 16800000000000;\n\tuint256 public rolloverFlexFeePercent = 0.1 ether; /// 0.1%\n\n\tIWrbtcERC20 public wrbtcToken;\n\taddress public protocolTokenAddress;\n\n\t/// 50% fee rebate\n\t/// potocolToken reward to user, it is worth % of trading/borrowing fee.\n\tuint256 public feeRebatePercent = 50 * 10**18;\n\n\taddress public admin;\n\n\t/// For modules interaction.\n\taddress public protocolAddress;\n\n\t/**\n\t *** Affiliates ***\n\t **/\n\n\t/// The flag is set on the user's first trade.\n\tmapping(address => bool) public userNotFirstTradeFlag;\n\n\t/// User => referrer (affiliate).\n\tmapping(address => address) public affiliatesUserReferrer;\n\n\t/// List of referral addresses affiliated to the referrer.\n\tmapping(address => EnumerableAddressSet.AddressSet) internal referralsList;\n\n\t/// @dev Referral threshold for paying out to the referrer.\n\t///   The referrer reward is being accumulated and locked until the threshold is passed.\n\tuint256 public minReferralsToPayout = 3;\n\n\t/// @dev Total affiliate SOV rewards that held in the protocol\n\t///   (Because the minimum referrals is less than the rule)\n\tmapping(address => uint256) public affiliateRewardsHeld;\n\n\t/// @dev For affiliates SOV Bonus proccess.\n\taddress public sovTokenAddress;\n\taddress public lockedSOVAddress;\n\n\t/// @dev 20% fee share of trading token fee.\n\t///   Fee share of trading token fee for affiliate program.\n\tuint256 public affiliateTradingTokenFeePercent = 20 * 10**18;\n\n\t/// @dev Addresses of tokens in which commissions were paid to referrers.\n\tmapping(address => EnumerableAddressSet.AddressSet) internal affiliatesReferrerTokensList;\n\n\t/// @dev [referrerAddress][tokenAddress] is a referrer's token balance of accrued fees.\n\tmapping(address => mapping(address => uint256)) public affiliatesReferrerBalances;\n\n\tmapping(address => mapping(address => uint256)) public specialRebates; // Special rate rebates for spesific pair -- if not set, then use the default one\n\tbool public pause; //Flag to pause all protocol modules\n\n\tuint256 internal swapExtrernalFeePercent; /// Fee percentage for protocol swap\n\n\t/// @dev Defines the portion of the trading rebate rewards (SOV) which is to be paid out in a liquid form in basis points. The rest is vested. The max value is 9999 (means 99.99% liquid, 0.01% vested)\n\tuint256 internal tradingRebateRewardsBasisPoint;\n\n\t/**\n\t * @notice Add signature and target to storage.\n\t * @dev Protocol is a proxy and requires a way to add every\n\t *   module function dynamically during deployment.\n\t * */\n\tfunction _setTarget(bytes4 sig, address target) internal {\n\t\tlogicTargets[sig] = target;\n\n\t\tif (target != address(0)) {\n\t\t\tlogicTargetsSet.addBytes32(bytes32(sig));\n\t\t} else {\n\t\t\tlogicTargetsSet.removeBytes32(bytes32(sig));\n\t\t}\n\t}\n}\n"
      },
      "contracts/swaps/ISwapsImpl.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC <https://bzx.network/>. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\ninterface ISwapsImpl {\n\tfunction internalSwap(\n\t\taddress sourceTokenAddress,\n\t\taddress destTokenAddress,\n\t\taddress receiverAddress,\n\t\taddress returnToSenderAddress,\n\t\tuint256 minSourceTokenAmount,\n\t\tuint256 maxSourceTokenAmount,\n\t\tuint256 requiredDestTokenAmount\n\t) external payable returns (uint256 destTokenAmountReceived, uint256 sourceTokenAmountUsed);\n\n\tfunction internalExpectedRate(\n\t\taddress sourceTokenAddress,\n\t\taddress destTokenAddress,\n\t\tuint256 sourceTokenAmount,\n\t\taddress optionalContractAddress\n\t) external view returns (uint256);\n\n\tfunction internalExpectedReturn(\n\t\taddress sourceTokenAddress,\n\t\taddress destTokenAddress,\n\t\tuint256 sourceTokenAmount,\n\t\taddress sovrynSwapContractRegistryAddress\n\t) external view returns (uint256 expectedReturn);\n}\n"
      },
      "contracts/core/Objects.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"./objects/LoanStruct.sol\";\nimport \"./objects/LoanParamsStruct.sol\";\nimport \"./objects/OrderStruct.sol\";\nimport \"./objects/LenderInterestStruct.sol\";\nimport \"./objects/LoanInterestStruct.sol\";\n\n/**\n * @title Objects contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract inherints and aggregates several structures needed to handle\n * loans on the protocol.\n * */\ncontract Objects is LoanStruct, LoanParamsStruct, OrderStruct, LenderInterestStruct, LoanInterestStruct {\n\n}\n"
      },
      "contracts/mixins/EnumerableAddressSet.sol": {
        "content": "pragma solidity ^0.5.0;\n\n/**\n * @dev Based on Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\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 * As of v2.5.0, only `address` sets are supported.\n *\n * Include with `using EnumerableSet for EnumerableSet.AddressSet;`.\n *\n * _Available since v2.5.0._\n */\nlibrary EnumerableAddressSet {\n\tstruct AddressSet {\n\t\t// Position of the value in the `values` array, plus 1 because index 0\n\t\t// means a value is not in the set.\n\t\tmapping(address => uint256) index;\n\t\taddress[] values;\n\t}\n\n\t/**\n\t * @dev Add a value to a set. O(1).\n\t * Returns false if the value was already in the set.\n\t */\n\tfunction add(AddressSet storage set, address value) internal returns (bool) {\n\t\tif (!contains(set, value)) {\n\t\t\tset.index[value] = set.values.push(value);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * @dev Removes a value from a set. O(1).\n\t * Returns false if the value was not present in the set.\n\t */\n\tfunction remove(AddressSet storage set, address value) internal returns (bool) {\n\t\tif (contains(set, value)) {\n\t\t\tuint256 toDeleteIndex = set.index[value] - 1;\n\t\t\tuint256 lastIndex = set.values.length - 1;\n\n\t\t\t// If the element we're deleting is the last one, we can just remove it without doing a swap\n\t\t\tif (lastIndex != toDeleteIndex) {\n\t\t\t\taddress lastValue = set.values[lastIndex];\n\n\t\t\t\t// Move the last value to the index where the deleted value is\n\t\t\t\tset.values[toDeleteIndex] = lastValue;\n\t\t\t\t// Update the index for the moved value\n\t\t\t\tset.index[lastValue] = toDeleteIndex + 1; // All indexes are 1-based\n\t\t\t}\n\n\t\t\t// Delete the index entry for the deleted value\n\t\t\tdelete set.index[value];\n\n\t\t\t// Delete the old entry for the moved value\n\t\t\tset.values.pop();\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * @dev Returns true if the value is in the set. O(1).\n\t */\n\tfunction contains(AddressSet storage set, address value) internal view returns (bool) {\n\t\treturn set.index[value] != 0;\n\t}\n\n\t/**\n     * @dev Returns an array with all values in the set. O(N).\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\n     * WARNING: This function may run out of gas on large sets: use {length} and\n     * {get} instead in these cases.\n     */\n\tfunction enumerate(AddressSet storage set) internal view returns (address[] memory) {\n\t\taddress[] memory output = new address[](set.values.length);\n\t\tfor (uint256 i; i < set.values.length; i++) {\n\t\t\toutput[i] = set.values[i];\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n     * @dev Returns a chunk of array as recommended in enumerate() to avoid running of gas.\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\n     * WARNING: This function may run out of gas on large sets: use {length} and\n     * {get} instead in these cases.\n     \n     * @param start start index of chunk\n     * @param count num of element to return; if count == 0 then returns all the elements from the @param start\n     */\n\tfunction enumerateChunk(\n\t\tAddressSet storage set,\n\t\tuint256 start,\n\t\tuint256 count\n\t) internal view returns (address[] memory output) {\n\t\tuint256 end = start + count;\n\t\trequire(end >= start, \"addition overflow\");\n\t\tend = (set.values.length < end || count == 0) ? set.values.length : end;\n\t\tif (end == 0 || start >= end) {\n\t\t\treturn output;\n\t\t}\n\n\t\toutput = new address[](end - start);\n\t\tfor (uint256 i; i < end - start; i++) {\n\t\t\toutput[i] = set.values[i + start];\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * @dev Returns the number of elements on the set. O(1).\n\t */\n\tfunction length(AddressSet storage set) internal view returns (uint256) {\n\t\treturn set.values.length;\n\t}\n\n\t/** @dev Returns the element stored at position `index` in the set. O(1).\n\t * Note that there are no guarantees on the ordering of values inside the\n\t * array, and it may change when more values are added or removed.\n\t *\n\t * Requirements:\n\t *\n\t * - `index` must be strictly less than {length}.\n\t */\n\tfunction get(AddressSet storage set, uint256 index) internal view returns (address) {\n\t\treturn set.values[index];\n\t}\n}\n"
      },
      "contracts/mixins/EnumerableBytes32Set.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\n/**\n * @title Library for managing loan sets.\n *\n * @notice Sets have the following properties:\n *\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 * Include with `using EnumerableBytes32Set for EnumerableBytes32Set.Bytes32Set;`.\n * */\nlibrary EnumerableBytes32Set {\n\tstruct Bytes32Set {\n\t\t/// Position of the value in the `values` array, plus 1 because index 0\n\t\t/// means a value is not in the set.\n\t\tmapping(bytes32 => uint256) index;\n\t\tbytes32[] values;\n\t}\n\n\t/**\n\t * @notice Add an address value to a set. O(1).\n\t *\n\t * @param set The set of values.\n\t * @param addrvalue The address to add.\n\t *\n\t * @return False if the value was already in the set.\n\t */\n\tfunction addAddress(Bytes32Set storage set, address addrvalue) internal returns (bool) {\n\t\tbytes32 value;\n\t\tassembly {\n\t\t\tvalue := addrvalue\n\t\t}\n\t\treturn addBytes32(set, value);\n\t}\n\n\t/**\n\t * @notice Add a value to a set. O(1).\n\t *\n\t * @param set The set of values.\n\t * @param value The new value to add.\n\t *\n\t * @return False if the value was already in the set.\n\t */\n\tfunction addBytes32(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n\t\tif (!contains(set, value)) {\n\t\t\tset.index[value] = set.values.push(value);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * @notice Remove an address value from a set. O(1).\n\t *\n\t * @param set The set of values.\n\t * @param addrvalue The address to remove.\n\t *\n\t * @return False if the address was not present in the set.\n\t */\n\tfunction removeAddress(Bytes32Set storage set, address addrvalue) internal returns (bool) {\n\t\tbytes32 value;\n\t\tassembly {\n\t\t\tvalue := addrvalue\n\t\t}\n\t\treturn removeBytes32(set, value);\n\t}\n\n\t/**\n\t * @notice Remove a value from a set. O(1).\n\t *\n\t * @param set The set of values.\n\t * @param value The value to remove.\n\t *\n\t * @return False if the value was not present in the set.\n\t */\n\tfunction removeBytes32(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n\t\tif (contains(set, value)) {\n\t\t\tuint256 toDeleteIndex = set.index[value] - 1;\n\t\t\tuint256 lastIndex = set.values.length - 1;\n\n\t\t\t/// If the element we're deleting is the last one,\n\t\t\t/// we can just remove it without doing a swap.\n\t\t\tif (lastIndex != toDeleteIndex) {\n\t\t\t\tbytes32 lastValue = set.values[lastIndex];\n\n\t\t\t\t/// Move the last value to the index where the deleted value is.\n\t\t\t\tset.values[toDeleteIndex] = lastValue;\n\n\t\t\t\t/// Update the index for the moved value.\n\t\t\t\tset.index[lastValue] = toDeleteIndex + 1; // All indexes are 1-based\n\t\t\t}\n\n\t\t\t/// Delete the index entry for the deleted value.\n\t\t\tdelete set.index[value];\n\n\t\t\t/// Delete the old entry for the moved value.\n\t\t\tset.values.pop();\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * @notice Find out whether a value exists in the set.\n\t *\n\t * @param set The set of values.\n\t * @param value The value to find.\n\t *\n\t * @return True if the value is in the set. O(1).\n\t */\n\tfunction contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n\t\treturn set.index[value] != 0;\n\t}\n\n\t/**\n\t * @dev Returns true if the value is in the set. O(1).\n\t */\n\tfunction containsAddress(Bytes32Set storage set, address addrvalue) internal view returns (bool) {\n\t\tbytes32 value;\n\t\tassembly {\n\t\t\tvalue := addrvalue\n\t\t}\n\t\treturn set.index[value] != 0;\n\t}\n\n\t/**\n\t * @notice Get all set values.\n\t *\n\t * @param set The set of values.\n\t * @param start The offset of the returning set.\n\t * @param count The limit of number of values to return.\n\t *\n\t * @return An array with all values in the set. O(N).\n\t *\n\t * @dev Note that there are no guarantees on the ordering of values inside the\n\t * array, and it may change when more values are added or removed.\n\t *\n\t * WARNING: This function may run out of gas on large sets: use {length} and\n\t * {get} instead in these cases.\n\t */\n\tfunction enumerate(\n\t\tBytes32Set storage set,\n\t\tuint256 start,\n\t\tuint256 count\n\t) internal view returns (bytes32[] memory output) {\n\t\tuint256 end = start + count;\n\t\trequire(end >= start, \"addition overflow\");\n\t\tend = set.values.length < end ? set.values.length : end;\n\t\tif (end == 0 || start >= end) {\n\t\t\treturn output;\n\t\t}\n\n\t\toutput = new bytes32[](end - start);\n\t\tfor (uint256 i; i < end - start; i++) {\n\t\t\toutput[i] = set.values[i + start];\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * @notice Get the legth of the set.\n\t *\n\t * @param set The set of values.\n\t *\n\t * @return the number of elements on the set. O(1).\n\t */\n\tfunction length(Bytes32Set storage set) internal view returns (uint256) {\n\t\treturn set.values.length;\n\t}\n\n\t/**\n\t * @notice Get an item from the set by its index.\n\t *\n\t * @dev Note that there are no guarantees on the ordering of values inside the\n\t * array, and it may change when more values are added or removed.\n\t *\n\t * Requirements:\n\t *\n\t * - `index` must be strictly less than {length}.\n\t *\n\t * @param set The set of values.\n\t * @param index The index of the value to return.\n\t *\n\t * @return the element stored at position `index` in the set. O(1).\n\t */\n\tfunction get(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n\t\treturn set.values[index];\n\t}\n}\n"
      },
      "contracts/core/objects/LoanStruct.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\n/**\n * @title The Loan Object.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the storage structure of the Loan Object.\n * */\ncontract LoanStruct {\n\tstruct Loan {\n\t\tbytes32 id; /// ID of the loan.\n\t\tbytes32 loanParamsId; /// The linked loan params ID.\n\t\tbytes32 pendingTradesId; /// The linked pending trades ID.\n\t\tbool active; /// If false, the loan has been fully closed.\n\t\tuint256 principal; /// Total borrowed amount outstanding.\n\t\tuint256 collateral; /// Total collateral escrowed for the loan.\n\t\tuint256 startTimestamp; /// Loan start time.\n\t\tuint256 endTimestamp; /// For active loans, this is the expected loan end time, for in-active loans, is the actual (past) end time.\n\t\tuint256 startMargin; /// Initial margin when the loan opened.\n\t\tuint256 startRate; /// Reference rate when the loan opened for converting collateralToken to loanToken.\n\t\taddress borrower; /// Borrower of this loan.\n\t\taddress lender; /// Lender of this loan.\n\t}\n}\n"
      },
      "contracts/core/objects/OrderStruct.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\n/**\n * @title The Loan Order.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the storage structure of the Loan Order.\n * */\ncontract OrderStruct {\n\tstruct Order {\n\t\tuint256 lockedAmount; /// Escrowed amount waiting for a counterparty.\n\t\tuint256 interestRate; /// Interest rate defined by the creator of this order.\n\t\tuint256 minLoanTerm; /// Minimum loan term allowed.\n\t\tuint256 maxLoanTerm; /// Maximum loan term allowed.\n\t\tuint256 createdTimestamp; /// Timestamp when this order was created.\n\t\tuint256 expirationTimestamp; /// Timestamp when this order expires.\n\t}\n}\n"
      },
      "contracts/core/objects/LenderInterestStruct.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\n/**\n * @title The Lender Interest.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the storage structure of the Lender Interest.\n * */\ncontract LenderInterestStruct {\n\tstruct LenderInterest {\n\t\tuint256 principalTotal; /// Total borrowed amount outstanding of asset.\n\t\tuint256 owedPerDay; /// Interest owed per day for all loans of asset.\n\t\tuint256 owedTotal; /// Total interest owed for all loans of asset (assuming they go to full term).\n\t\tuint256 paidTotal; /// Total interest paid so far for asset.\n\t\tuint256 updatedTimestamp; /// Last update.\n\t}\n}\n"
      },
      "contracts/core/objects/LoanInterestStruct.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\n/**\n * @title The Loan Interest.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the storage structure of the Loan Interest.\n * */\ncontract LoanInterestStruct {\n\tstruct LoanInterest {\n\t\tuint256 owedPerDay; /// Interest owed per day for loan.\n\t\tuint256 depositTotal; /// Total escrowed interest for loan.\n\t\tuint256 updatedTimestamp; /// Last update.\n\t}\n}\n"
      },
      "contracts/swaps/connectors/SwapsImplSovrynSwap.sol": {
        "content": "pragma solidity 0.5.17;\n\nimport \"../../core/State.sol\";\nimport \"../../feeds/IPriceFeeds.sol\";\nimport \"../../openzeppelin/SafeERC20.sol\";\nimport \"../ISwapsImpl.sol\";\nimport \"./interfaces/ISovrynSwapNetwork.sol\";\nimport \"./interfaces/IContractRegistry.sol\";\n\n/**\n * @title Swaps Implementation Sovryn contract.\n *\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the implementation of swap process and rate\n * calculations for Sovryn network.\n * */\ncontract SwapsImplSovrynSwap is State, ISwapsImpl {\n\tusing SafeERC20 for IERC20;\n\n\t/// bytes32 contractName = hex\"42616e636f724e6574776f726b\"; /// \"SovrynSwapNetwork\"\n\n\t/**\n\t * Get the hex name of a contract.\n\t * @param source The name of the contract.\n\t * */\n\tfunction getContractHexName(string memory source) public pure returns (bytes32 result) {\n\t\tassembly {\n\t\t\tresult := mload(add(source, 32))\n\t\t}\n\t}\n\n\t/**\n\t * Look up the Sovryn swap network contract registered at the given address.\n\t * @param sovrynSwapRegistryAddress The address of the registry.\n\t * */\n\tfunction getSovrynSwapNetworkContract(address sovrynSwapRegistryAddress) public view returns (ISovrynSwapNetwork) {\n\t\t/// State variable sovrynSwapContractRegistryAddress is part of\n\t\t/// State.sol and set in ProtocolSettings.sol and this function\n\t\t/// needs to work without delegate call as well -> therefore pass it.\n\t\tIContractRegistry contractRegistry = IContractRegistry(sovrynSwapRegistryAddress);\n\t\treturn ISovrynSwapNetwork(contractRegistry.addressOf(getContractHexName(\"SovrynSwapNetwork\")));\n\t}\n\n\t/**\n\t * Swap the source token for the destination token on the oracle based AMM.\n\t * On loan opening: minSourceTokenAmount = maxSourceTokenAmount and requiredDestTokenAmount = 0\n\t *      -> swap the minSourceTokenAmount\n\t * On loan rollover: (swap interest) minSourceTokenAmount = 0, maxSourceTokenAmount = complete collateral and requiredDestTokenAmount > 0\n\t *      -> amount of required source tokens to swap is estimated (want to fill requiredDestTokenAmount, not more). maxSourceTokenAMount is not exceeded.\n\t * On loan closure: minSourceTokenAmount <= maxSourceTokenAmount and requiredDestTokenAmount >= 0\n\t *      -> same as on rollover. minimum amount is not considered at all.\n\t *\n\t * @param sourceTokenAddress The address of the source tokens.\n\t * @param destTokenAddress The address of the destination tokens.\n\t * @param receiverAddress The address who will received the swap token results\n\t * @param returnToSenderAddress The address to return unspent tokens to (when called by the protocol, it's always the protocol contract).\n\t * @param minSourceTokenAmount The minimum amount of source tokens to swapped (only considered if requiredDestTokens == 0).\n\t * @param maxSourceTokenAmount The maximum amount of source tokens to swapped.\n\t * @param requiredDestTokenAmount The required amount of destination tokens.\n\t * */\n\tfunction internalSwap(\n\t\taddress sourceTokenAddress,\n\t\taddress destTokenAddress,\n\t\taddress receiverAddress,\n\t\taddress returnToSenderAddress,\n\t\tuint256 minSourceTokenAmount,\n\t\tuint256 maxSourceTokenAmount,\n\t\tuint256 requiredDestTokenAmount\n\t) public payable returns (uint256 destTokenAmountReceived, uint256 sourceTokenAmountUsed) {\n\t\trequire(sourceTokenAddress != destTokenAddress, \"source == dest\");\n\t\trequire(supportedTokens[sourceTokenAddress] && supportedTokens[destTokenAddress], \"invalid tokens\");\n\n\t\tISovrynSwapNetwork sovrynSwapNetwork = getSovrynSwapNetworkContract(sovrynSwapContractRegistryAddress);\n\t\tIERC20[] memory path = sovrynSwapNetwork.conversionPath(IERC20(sourceTokenAddress), IERC20(destTokenAddress));\n\n\t\tuint256 minReturn = 0;\n\t\tsourceTokenAmountUsed = minSourceTokenAmount;\n\n\t\t/// If the required amount of destination tokens is passed, we need to\n\t\t/// calculate the estimated amount of source tokens regardless of the\n\t\t/// minimum source token amount (name is misleading).\n\t\tif (requiredDestTokenAmount > 0) {\n\t\t\tsourceTokenAmountUsed = estimateSourceTokenAmount(\n\t\t\t\tsourceTokenAddress,\n\t\t\t\tdestTokenAddress,\n\t\t\t\trequiredDestTokenAmount,\n\t\t\t\tmaxSourceTokenAmount\n\t\t\t);\n\t\t\t/// sovrynSwapNetwork.rateByPath does not return a rate, but instead the amount of destination tokens returned.\n\t\t\trequire(\n\t\t\t\tsovrynSwapNetwork.rateByPath(path, sourceTokenAmountUsed) >= requiredDestTokenAmount,\n\t\t\t\t\"insufficient source tokens provided.\"\n\t\t\t);\n\t\t\tminReturn = requiredDestTokenAmount;\n\t\t} else if (sourceTokenAmountUsed > 0) {\n\t\t\t/// For some reason the Sovryn swap network tends to return a bit less than the expected rate.\n\t\t\tminReturn = sovrynSwapNetwork.rateByPath(path, sourceTokenAmountUsed).mul(995).div(1000);\n\t\t}\n\n\t\trequire(sourceTokenAmountUsed > 0, \"cannot swap 0 tokens\");\n\n\t\tallowTransfer(sourceTokenAmountUsed, sourceTokenAddress, address(sovrynSwapNetwork));\n\n\t\t/// @dev Note: the kyber connector uses .call() to interact with kyber\n\t\t/// to avoid bubbling up. here we allow bubbling up.\n\t\tdestTokenAmountReceived = sovrynSwapNetwork.convertByPath(path, sourceTokenAmountUsed, minReturn, receiverAddress, address(0), 0);\n\n\t\t/// If the sender is not the protocol (calling with delegatecall),\n\t\t/// return the remainder to the specified address.\n\t\t/// @dev Note: for the case that the swap is used without the\n\t\t/// protocol. Not sure if it should, though. needs to be discussed.\n\t\tif (returnToSenderAddress != address(this)) {\n\t\t\tif (sourceTokenAmountUsed < maxSourceTokenAmount) {\n\t\t\t\t/// Send unused source token back.\n\t\t\t\tIERC20(sourceTokenAddress).safeTransfer(returnToSenderAddress, maxSourceTokenAmount - sourceTokenAmountUsed);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Check whether the existing allowance suffices to transfer\n\t *   the needed amount of tokens.\n\t *   If not, allows the transfer of an arbitrary amount of tokens.\n\t *\n\t * @param tokenAmount The amount to transfer.\n\t * @param tokenAddress The address of the token to transfer.\n\t * @param sovrynSwapNetwork The address of the sovrynSwap network contract.\n\t * */\n\tfunction allowTransfer(\n\t\tuint256 tokenAmount,\n\t\taddress tokenAddress,\n\t\taddress sovrynSwapNetwork\n\t) internal {\n\t\tuint256 tempAllowance = IERC20(tokenAddress).allowance(address(this), sovrynSwapNetwork);\n\t\tif (tempAllowance < tokenAmount) {\n\t\t\tIERC20(tokenAddress).safeApprove(sovrynSwapNetwork, uint256(-1));\n\t\t}\n\t}\n\n\t/**\n\t * @notice Calculate the number of source tokens to provide in order to\n\t *   obtain the required destination amount.\n\t *\n\t * @param sourceTokenAddress The address of the source token address.\n\t * @param destTokenAddress The address of the destination token address.\n\t * @param requiredDestTokenAmount The number of destination tokens needed.\n\t * @param maxSourceTokenAmount The maximum number of source tokens to spend.\n\t *\n\t * @return The estimated amount of source tokens needed.\n\t *   Minimum: minSourceTokenAmount, maximum: maxSourceTokenAmount\n\t * */\n\tfunction estimateSourceTokenAmount(\n\t\taddress sourceTokenAddress,\n\t\taddress destTokenAddress,\n\t\tuint256 requiredDestTokenAmount,\n\t\tuint256 maxSourceTokenAmount\n\t) internal view returns (uint256 estimatedSourceAmount) {\n\t\tuint256 sourceToDestPrecision = IPriceFeeds(priceFeeds).queryPrecision(sourceTokenAddress, destTokenAddress);\n\t\tif (sourceToDestPrecision == 0) return maxSourceTokenAmount;\n\n\t\t/// Compute the expected rate for the maxSourceTokenAmount -> if spending less, we can't get a worse rate.\n\t\tuint256 expectedRate =\n\t\t\tinternalExpectedRate(sourceTokenAddress, destTokenAddress, maxSourceTokenAmount, sovrynSwapContractRegistryAddress);\n\n\t\t/// Compute the source tokens needed to get the required amount with the worst case rate.\n\t\testimatedSourceAmount = requiredDestTokenAmount.mul(sourceToDestPrecision).div(expectedRate);\n\n\t\t/// If the actual rate is exactly the same as the worst case rate, we get rounding issues. So, add a small buffer.\n\t\t/// buffer = min(estimatedSourceAmount/1000 , sourceBuffer) with sourceBuffer = 10000\n\t\tuint256 buffer = estimatedSourceAmount.div(1000);\n\t\tif (buffer > sourceBuffer) buffer = sourceBuffer;\n\t\testimatedSourceAmount = estimatedSourceAmount.add(buffer);\n\n\t\t/// Never spend more than the maximum.\n\t\tif (estimatedSourceAmount == 0 || estimatedSourceAmount > maxSourceTokenAmount) return maxSourceTokenAmount;\n\t}\n\n\t/**\n\t * @notice Get the expected rate for 1 source token when exchanging the\n\t *   given amount of source tokens.\n\t *\n\t * @param sourceTokenAddress The address of the source token contract.\n\t * @param destTokenAddress The address of the destination token contract.\n\t * @param sourceTokenAmount The amount of source tokens to get the rate for.\n\t * */\n\tfunction internalExpectedRate(\n\t\taddress sourceTokenAddress,\n\t\taddress destTokenAddress,\n\t\tuint256 sourceTokenAmount,\n\t\taddress sovrynSwapContractRegistryAddress\n\t) public view returns (uint256) {\n\t\tISovrynSwapNetwork sovrynSwapNetwork = getSovrynSwapNetworkContract(sovrynSwapContractRegistryAddress);\n\t\tIERC20[] memory path = sovrynSwapNetwork.conversionPath(IERC20(sourceTokenAddress), IERC20(destTokenAddress));\n\t\t/// Is returning the total amount of destination tokens.\n\t\tuint256 expectedReturn = sovrynSwapNetwork.rateByPath(path, sourceTokenAmount);\n\n\t\t/// Return the rate for 1 token with 18 decimals.\n\t\treturn expectedReturn.mul(10**18).div(sourceTokenAmount);\n\t}\n\n\t/**\n\t * @notice Get the expected return amount when exchanging the given\n\t *   amount of source tokens.\n\t *\n\t * @param sourceTokenAddress The address of the source token contract.\n\t * @param destTokenAddress The address of the destination token contract.\n\t * @param sourceTokenAmount The amount of source tokens to get the return for.\n\t * */\n\tfunction internalExpectedReturn(\n\t\taddress sourceTokenAddress,\n\t\taddress destTokenAddress,\n\t\tuint256 sourceTokenAmount,\n\t\taddress sovrynSwapContractRegistryAddress\n\t) public view returns (uint256 expectedReturn) {\n\t\tISovrynSwapNetwork sovrynSwapNetwork = getSovrynSwapNetworkContract(sovrynSwapContractRegistryAddress);\n\t\tIERC20[] memory path = sovrynSwapNetwork.conversionPath(IERC20(sourceTokenAddress), IERC20(destTokenAddress));\n\t\t/// Is returning the total amount of destination tokens.\n\t\texpectedReturn = sovrynSwapNetwork.rateByPath(path, sourceTokenAmount);\n\t}\n}\n"
      },
      "contracts/swaps/connectors/interfaces/ISovrynSwapNetwork.sol": {
        "content": "pragma solidity >=0.4.26 <=0.5.17;\n\nimport \"../../../interfaces/IERC20.sol\";\n\ncontract ISovrynSwapNetwork {\n\tfunction convertByPath(\n\t\tIERC20[] calldata _path,\n\t\tuint256 _amount,\n\t\tuint256 _minReturn,\n\t\taddress _beneficiary,\n\t\taddress _affiliateAccount,\n\t\tuint256 _affiliateFee\n\t) external payable returns (uint256);\n\n\tfunction rateByPath(IERC20[] calldata _path, uint256 _amount) external view returns (uint256);\n\n\tfunction conversionPath(IERC20 _sourceToken, IERC20 _targetToken) external view returns (IERC20[] memory);\n}\n"
      },
      "contracts/swaps/connectors/interfaces/IContractRegistry.sol": {
        "content": "pragma solidity 0.5.17;\n\ncontract IContractRegistry {\n\tfunction addressOf(bytes32 contractName) public view returns (address);\n}\n"
      },
      "contracts/testhelpers/FlashLoanerTest.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n// \"SPDX-License-Identifier: Apache-2.0\"\n\nimport \"../interfaces/IERC20.sol\";\nimport \"../openzeppelin/Ownable.sol\";\nimport \"./ITokenFlashLoanTest.sol\";\n\ncontract FlashLoanerTest is Ownable {\n\tfunction initiateFlashLoanTest(\n\t\taddress loanToken,\n\t\taddress iToken,\n\t\tuint256 flashLoanAmount\n\t) internal returns (bytes memory success) {\n\t\tITokenFlashLoanTest iTokenContract = ITokenFlashLoanTest(iToken);\n\t\treturn\n\t\t\tiTokenContract.flashBorrow(\n\t\t\t\tflashLoanAmount,\n\t\t\t\taddress(this),\n\t\t\t\taddress(this),\n\t\t\t\t\"\",\n\t\t\t\tabi.encodeWithSignature(\"executeOperation(address,address,uint256)\", loanToken, iToken, flashLoanAmount)\n\t\t\t);\n\t}\n\n\tfunction repayFlashLoan(\n\t\taddress loanToken,\n\t\taddress iToken,\n\t\tuint256 loanAmount\n\t) internal {\n\t\tIERC20(loanToken).transfer(iToken, loanAmount);\n\t}\n\n\tfunction executeOperation(\n\t\taddress loanToken,\n\t\taddress iToken,\n\t\tuint256 loanAmount\n\t) external returns (bytes memory success) {\n\t\temit BalanceOf(IERC20(loanToken).balanceOf(address(this)));\n\t\temit ExecuteOperation(loanToken, iToken, loanAmount);\n\t\trepayFlashLoan(loanToken, iToken, loanAmount);\n\t\treturn bytes(\"1\");\n\t}\n\n\tfunction doStuffWithFlashLoan(\n\t\taddress token,\n\t\taddress iToken,\n\t\tuint256 amount\n\t) external onlyOwner {\n\t\tbytes memory result;\n\t\temit BalanceOf(IERC20(token).balanceOf(address(this)));\n\n\t\tresult = initiateFlashLoanTest(token, iToken, amount);\n\n\t\temit BalanceOf(IERC20(token).balanceOf(address(this)));\n\n\t\t// after loan checks and what not.\n\t\tif (hashCompareWithLengthCheck(bytes(\"1\"), result)) {\n\t\t\trevert(\"failed executeOperation\");\n\t\t}\n\t}\n\n\tfunction hashCompareWithLengthCheck(bytes memory a, bytes memory b) internal pure returns (bool) {\n\t\tif (a.length != b.length) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn keccak256(a) == keccak256(b);\n\t\t}\n\t}\n\n\tevent ExecuteOperation(address loanToken, address iToken, uint256 loanAmount);\n\n\tevent BalanceOf(uint256 balance);\n}\n"
      },
      "contracts/testhelpers/ITokenFlashLoanTest.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\n// \"SPDX-License-Identifier: Apache-2.0\"\n\ninterface ITokenFlashLoanTest {\n\tfunction flashBorrow(\n\t\tuint256 borrowAmount,\n\t\taddress borrower,\n\t\taddress target,\n\t\tstring calldata signature,\n\t\tbytes calldata data\n\t) external payable returns (bytes memory);\n}\n"
      },
      "contracts/token/SOV.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../openzeppelin/ERC20Detailed.sol\";\nimport \"../openzeppelin/ERC20.sol\";\nimport \"../openzeppelin/Ownable.sol\";\nimport \"./IApproveAndCall.sol\";\n\n/**\n * @title Sovryn Token: SOV is an ERC-20 token contract for Sovryn governance.\n *\n * @notice This contract accounts for all holders' balances.\n *\n * @dev This contract represents a token with dynamic supply.\n *   The owner of the token contract can mint/burn tokens to/from any account\n *   based upon previous governance voting and approval.\n * */\ncontract SOV is ERC20, ERC20Detailed, Ownable {\n\tstring constant NAME = \"Sovryn Token\";\n\tstring constant SYMBOL = \"SOV\";\n\tuint8 constant DECIMALS = 18;\n\n\t/**\n\t * @notice Constructor called on deployment, initiates the contract.\n\t * @dev On deployment, some amount of tokens will be minted for the owner.\n\t * @param _initialAmount The amount of tokens to be minted on contract creation.\n\t * */\n\tconstructor(uint256 _initialAmount) public ERC20Detailed(NAME, SYMBOL, DECIMALS) {\n\t\tif (_initialAmount != 0) {\n\t\t\t_mint(msg.sender, _initialAmount);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Creates new tokens and sends them to the recipient.\n\t * @dev Don't create more than 2^96/10 tokens before updating the governance first.\n\t * @param _account The recipient address to get the minted tokens.\n\t * @param _amount The amount of tokens to be minted.\n\t * */\n\tfunction mint(address _account, uint256 _amount) public onlyOwner {\n\t\t_mint(_account, _amount);\n\t}\n\n\t/**\n\t * @notice Approves and then calls the receiving contract.\n\t * Useful to encapsulate sending tokens to a contract in one call.\n\t * Solidity has no native way to send tokens to contracts.\n\t * ERC-20 tokens require approval to be spent by third parties, such as a contract in this case.\n\t * @param _spender The contract address to spend the tokens.\n\t * @param _amount The amount of tokens to be sent.\n\t * @param _data Parameters for the contract call, such as endpoint signature.\n\t * */\n\tfunction approveAndCall(\n\t\taddress _spender,\n\t\tuint256 _amount,\n\t\tbytes memory _data\n\t) public {\n\t\tapprove(_spender, _amount);\n\t\tIApproveAndCall(_spender).receiveApproval(msg.sender, _amount, address(this), _data);\n\t}\n}\n"
      },
      "contracts/openzeppelin/ERC20Detailed.sol": {
        "content": "pragma solidity ^0.5.0;\n\nimport \"./IERC20_.sol\";\n\n/**\n * @dev Optional functions from the ERC20 standard.\n */\ncontract ERC20Detailed is IERC20_ {\n\tstring private _name;\n\tstring private _symbol;\n\tuint8 private _decimals;\n\n\t/**\n\t * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of\n\t * these values are immutable: they can only be set once during\n\t * construction.\n\t */\n\tconstructor(\n\t\tstring memory name,\n\t\tstring memory symbol,\n\t\tuint8 decimals\n\t) public {\n\t\t_name = name;\n\t\t_symbol = symbol;\n\t\t_decimals = decimals;\n\t}\n\n\t/**\n\t * @dev Returns the name of the token.\n\t */\n\tfunction name() public view returns (string memory) {\n\t\treturn _name;\n\t}\n\n\t/**\n\t * @dev Returns the symbol of the token, usually a shorter version of the\n\t * name.\n\t */\n\tfunction symbol() public view returns (string memory) {\n\t\treturn _symbol;\n\t}\n\n\t/**\n\t * @dev Returns the number of decimals used to get its user representation.\n\t * For example, if `decimals` equals `2`, a balance of `505` tokens should\n\t * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n\t *\n\t * Tokens usually opt for a value of 18, imitating the relationship between\n\t * Ether and Wei.\n\t *\n\t * NOTE: This information is only used for _display_ purposes: it in\n\t * no way affects any of the arithmetic of the contract, including\n\t * {IERC20-balanceOf} and {IERC20-transfer}.\n\t */\n\tfunction decimals() public view returns (uint8) {\n\t\treturn _decimals;\n\t}\n}\n"
      },
      "contracts/openzeppelin/ERC20.sol": {
        "content": "pragma solidity ^0.5.0;\n\nimport \"./Context.sol\";\nimport \"./IERC20_.sol\";\nimport \"./SafeMath.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 * For a generic mechanism see {ERC20Mintable}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 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 *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20_ {\n\tusing SafeMath for uint256;\n\n\tmapping(address => uint256) private _balances;\n\n\tmapping(address => mapping(address => uint256)) private _allowances;\n\n\tuint256 private _totalSupply;\n\n\t/**\n\t * @dev See {IERC20-totalSupply}.\n\t */\n\tfunction totalSupply() public view returns (uint256) {\n\t\treturn _totalSupply;\n\t}\n\n\t/**\n\t * @dev See {IERC20-balanceOf}.\n\t */\n\tfunction balanceOf(address account) public view returns (uint256) {\n\t\treturn _balances[account];\n\t}\n\n\t/**\n\t * @dev See {IERC20-transfer}.\n\t *\n\t * Requirements:\n\t *\n\t * - `recipient` cannot be the zero address.\n\t * - the caller must have a balance of at least `amount`.\n\t */\n\tfunction transfer(address recipient, uint256 amount) public returns (bool) {\n\t\t_transfer(_msgSender(), recipient, amount);\n\t\treturn true;\n\t}\n\n\t/**\n\t * @dev See {IERC20-allowance}.\n\t */\n\tfunction allowance(address owner, address spender) public view returns (uint256) {\n\t\treturn _allowances[owner][spender];\n\t}\n\n\t/**\n\t * @dev See {IERC20-approve}.\n\t *\n\t * Requirements:\n\t *\n\t * - `spender` cannot be the zero address.\n\t */\n\tfunction approve(address spender, uint256 amount) public returns (bool) {\n\t\t_approve(_msgSender(), spender, amount);\n\t\treturn true;\n\t}\n\n\t/**\n\t * @dev See {IERC20-transferFrom}.\n\t *\n\t * Emits an {Approval} event indicating the updated allowance. This is not\n\t * required by the EIP. See the note at the beginning of {ERC20};\n\t *\n\t * Requirements:\n\t * - `sender` and `recipient` cannot be the zero address.\n\t * - `sender` must have a balance of at least `amount`.\n\t * - the caller must have allowance for `sender`'s tokens of at least\n\t * `amount`.\n\t */\n\tfunction transferFrom(\n\t\taddress sender,\n\t\taddress recipient,\n\t\tuint256 amount\n\t) public returns (bool) {\n\t\t_transfer(sender, recipient, amount);\n\t\t_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\n\t\treturn true;\n\t}\n\n\t/**\n\t * @dev Atomically increases the allowance granted to `spender` by the caller.\n\t *\n\t * This is an alternative to {approve} that can be used as a mitigation for\n\t * problems described in {IERC20-approve}.\n\t *\n\t * Emits an {Approval} event indicating the updated allowance.\n\t *\n\t * Requirements:\n\t *\n\t * - `spender` cannot be the zero address.\n\t */\n\tfunction increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\n\t\t_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n\t\treturn true;\n\t}\n\n\t/**\n\t * @dev Atomically decreases the allowance granted to `spender` by the caller.\n\t *\n\t * This is an alternative to {approve} that can be used as a mitigation for\n\t * problems described in {IERC20-approve}.\n\t *\n\t * Emits an {Approval} event indicating the updated allowance.\n\t *\n\t * Requirements:\n\t *\n\t * - `spender` cannot be the zero address.\n\t * - `spender` must have allowance for the caller of at least\n\t * `subtractedValue`.\n\t */\n\tfunction decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\n\t\t_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\n\t\treturn true;\n\t}\n\n\t/**\n\t * @dev Moves tokens `amount` from `sender` to `recipient`.\n\t *\n\t * This is internal function is equivalent to {transfer}, and can be used to\n\t * e.g. implement automatic token fees, slashing mechanisms, etc.\n\t *\n\t * Emits a {Transfer} event.\n\t *\n\t * Requirements:\n\t *\n\t * - `sender` cannot be the zero address.\n\t * - `recipient` cannot be the zero address.\n\t * - `sender` must have a balance of at least `amount`.\n\t */\n\tfunction _transfer(\n\t\taddress sender,\n\t\taddress recipient,\n\t\tuint256 amount\n\t) internal {\n\t\trequire(sender != address(0), \"ERC20: transfer from the zero address\");\n\t\trequire(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n\t\t_balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\n\t\t_balances[recipient] = _balances[recipient].add(amount);\n\t\temit Transfer(sender, recipient, amount);\n\t}\n\n\t/** @dev Creates `amount` tokens and assigns them to `account`, increasing\n\t * the total supply.\n\t *\n\t * Emits a {Transfer} event with `from` set to the zero address.\n\t *\n\t * Requirements\n\t *\n\t * - `to` cannot be the zero address.\n\t */\n\tfunction _mint(address account, uint256 amount) internal {\n\t\trequire(account != address(0), \"ERC20: mint to the zero address\");\n\n\t\t_totalSupply = _totalSupply.add(amount);\n\t\t_balances[account] = _balances[account].add(amount);\n\t\temit Transfer(address(0), account, amount);\n\t}\n\n\t/**\n\t * @dev Destroys `amount` tokens from `account`, reducing the\n\t * total supply.\n\t *\n\t * Emits a {Transfer} event with `to` set to the zero address.\n\t *\n\t * Requirements\n\t *\n\t * - `account` cannot be the zero address.\n\t * - `account` must have at least `amount` tokens.\n\t */\n\tfunction _burn(address account, uint256 amount) internal {\n\t\trequire(account != address(0), \"ERC20: burn from the zero address\");\n\n\t\t_balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\n\t\t_totalSupply = _totalSupply.sub(amount);\n\t\temit Transfer(account, address(0), amount);\n\t}\n\n\t/**\n\t * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n\t *\n\t * This is internal function is equivalent to `approve`, and can be used to\n\t * e.g. set automatic allowances for certain subsystems, etc.\n\t *\n\t * Emits an {Approval} event.\n\t *\n\t * Requirements:\n\t *\n\t * - `owner` cannot be the zero address.\n\t * - `spender` cannot be the zero address.\n\t */\n\tfunction _approve(\n\t\taddress owner,\n\t\taddress spender,\n\t\tuint256 amount\n\t) internal {\n\t\trequire(owner != address(0), \"ERC20: approve from the zero address\");\n\t\trequire(spender != address(0), \"ERC20: approve to the zero address\");\n\n\t\t_allowances[owner][spender] = amount;\n\t\temit Approval(owner, spender, amount);\n\t}\n\n\t/**\n\t * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\n\t * from the caller's allowance.\n\t *\n\t * See {_burn} and {_approve}.\n\t */\n\tfunction _burnFrom(address account, uint256 amount) internal {\n\t\t_burn(account, amount);\n\t\t_approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \"ERC20: burn amount exceeds allowance\"));\n\t}\n}\n"
      },
      "contracts/openzeppelin/IERC20_.sol": {
        "content": "pragma solidity ^0.5.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\n * the optional functions; to access them see {ERC20Detailed}.\n */\ninterface IERC20_ {\n\t/**\n\t * @dev Returns the amount of tokens in existence.\n\t */\n\tfunction totalSupply() external view returns (uint256);\n\n\t/**\n\t * @dev Returns the amount of tokens owned by `account`.\n\t */\n\tfunction balanceOf(address account) external view returns (uint256);\n\n\t/**\n\t * @dev Moves `amount` tokens from the caller's account to `recipient`.\n\t *\n\t * Returns a boolean value indicating whether the operation succeeded.\n\t *\n\t * Emits a {Transfer} event.\n\t */\n\tfunction transfer(address recipient, uint256 amount) external returns (bool);\n\n\t/**\n\t * @dev Returns the remaining number of tokens that `spender` will be\n\t * allowed to spend on behalf of `owner` through {transferFrom}. This is\n\t * zero by default.\n\t *\n\t * This value changes when {approve} or {transferFrom} are called.\n\t */\n\tfunction allowance(address owner, address spender) external view returns (uint256);\n\n\t/**\n\t * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n\t *\n\t * Returns a boolean value indicating whether the operation succeeded.\n\t *\n\t * IMPORTANT: Beware that changing an allowance with this method brings the risk\n\t * that someone may use both the old and the new allowance by unfortunate\n\t * transaction ordering. One possible solution to mitigate this race\n\t * condition is to first reduce the spender's allowance to 0 and set the\n\t * desired value afterwards:\n\t * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n\t *\n\t * Emits an {Approval} event.\n\t */\n\tfunction approve(address spender, uint256 amount) external returns (bool);\n\n\t/**\n\t * @dev Moves `amount` tokens from `sender` to `recipient` using the\n\t * allowance mechanism. `amount` is then deducted from the caller's\n\t * allowance.\n\t *\n\t * Returns a boolean value indicating whether the operation succeeded.\n\t *\n\t * Emits a {Transfer} event.\n\t */\n\tfunction transferFrom(\n\t\taddress sender,\n\t\taddress recipient,\n\t\tuint256 amount\n\t) external returns (bool);\n\n\t/**\n\t * @dev Emitted when `value` tokens are moved from one account (`from`) to\n\t * another (`to`).\n\t *\n\t * Note that `value` may be zero.\n\t */\n\tevent Transfer(address indexed from, address indexed to, uint256 value);\n\n\t/**\n\t * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n\t * a call to {approve}. `value` is the new allowance.\n\t */\n\tevent Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"
      },
      "contracts/governance/Vesting/SVR.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../../openzeppelin/ERC20Detailed.sol\";\nimport \"../../openzeppelin/IERC20_.sol\";\nimport \"../../openzeppelin/ERC20.sol\";\nimport \"../../openzeppelin/Ownable.sol\";\nimport \"../Staking/SafeMath96.sol\";\nimport \"../Staking/IStaking.sol\";\nimport \"../../token/IApproveAndCall.sol\";\nimport \"../ApprovalReceiver.sol\";\n\n// TODO should be set as protocolTokenAddress (ProtocolSettings.setProtocolTokenAddress)\n// TODO PriceFeeds._protocolTokenAddress ?\n\n/**\n * @title Sovryn Reward Token.\n * @notice The RSOV token (Sovryn Vesting Reward Token) goal is to allow users to get\n * rewards through the generation of protocol fees. The mint function accepts\n * SOV tokens and mints the same amount of RSOV tokens. When burning RSOV\n * tokens, the user gets 1/14th of the tokens sent back to him and the rest\n * get staked in the user’s behalf with a schedule of 4 weeks cliff and period\n * 1 year duration.\n * */\ncontract SVR is ERC20, ERC20Detailed, Ownable, SafeMath96, ApprovalReceiver {\n\t/* Storage */\n\n\tstring constant NAME = \"Sovryn Vesting Reward Token\";\n\tstring constant SYMBOL = \"SVR\";\n\tuint8 constant DECIMALS = 18;\n\n\t/// @notice Constants used for computing the vesting dates.\n\tuint256 constant FOUR_WEEKS = 4 weeks;\n\tuint256 constant YEAR = 52 weeks;\n\t/// @notice Amount of tokens divided by this constant will be transferred.\n\tuint96 constant DIRECT_TRANSFER_PART = 14;\n\n\t/// @notice The SOV token contract.\n\tIERC20_ public SOV;\n\t/// @notice The staking contract.\n\tIStaking public staking;\n\n\t/* Events */\n\n\tevent Mint(address indexed sender, uint256 amount);\n\tevent Burn(address indexed sender, uint256 amount);\n\n\t/* Functions */\n\n\t/**\n\t * @notice Create reward token RSOV.\n\t * @param _SOV The SOV token address.\n\t * @param _staking The staking contract address.\n\t * */\n\tconstructor(address _SOV, address _staking) public ERC20Detailed(NAME, SYMBOL, DECIMALS) {\n\t\trequire(_SOV != address(0), \"SVR::SOV address invalid\");\n\t\trequire(_staking != address(0), \"SVR::staking address invalid\");\n\n\t\tSOV = IERC20_(_SOV);\n\t\tstaking = IStaking(_staking);\n\t}\n\n\t/**\n\t * @notice Hold SOV tokens and mint the respective amount of SVR tokens.\n\t * @param _amount The amount of tokens to be mint.\n\t * */\n\tfunction mint(uint96 _amount) public {\n\t\t_mintTo(msg.sender, _amount);\n\t}\n\n\t/**\n\t * @notice Hold SOV tokens and mint the respective amount of SVR tokens.\n\t * @dev This function will be invoked from receiveApproval.\n\t * @dev SOV.approveAndCall -> this.receiveApproval -> this.mintWithApproval\n\t * @param _sender The sender of SOV.approveAndCall\n\t * @param _amount The amount of tokens to be mint.\n\t * */\n\tfunction mintWithApproval(address _sender, uint96 _amount) public onlyThisContract {\n\t\t_mintTo(_sender, _amount);\n\t}\n\n\t/**\n\t * @notice The actual minting process, holding SOV and minting RSOV tokens.\n\t * @param _sender The recipient of the minted tokens.\n\t * @param _amount The amount of tokens to be minted.\n\t * */\n\tfunction _mintTo(address _sender, uint96 _amount) internal {\n\t\trequire(_amount > 0, \"SVR::mint: amount invalid\");\n\n\t\t/// @notice Holds SOV tokens.\n\t\tbool success = SOV.transferFrom(_sender, address(this), _amount);\n\t\trequire(success);\n\n\t\t/// @notice Mints SVR tokens.\n\t\t/// @dev uses openzeppelin/ERC20.sol internal _mint function\n\t\t_mint(_sender, _amount);\n\n\t\temit Mint(_sender, _amount);\n\t}\n\n\t/**\n\t * @notice burns SVR tokens and stakes the respective amount SOV tokens in the user's behalf\n\t * @param _amount the amount of tokens to be burnt\n\t */\n\tfunction burn(uint96 _amount) public {\n\t\trequire(_amount > 0, \"SVR:: burn: amount invalid\");\n\n\t\t/// @notice Burns RSOV tokens.\n\t\t_burn(msg.sender, _amount);\n\n\t\t/// @notice Transfer 1/14 of amount directly to the user.\n\t\t/// If amount is too small it won't be transferred.\n\t\tuint96 transferAmount = _amount / DIRECT_TRANSFER_PART;\n\t\tif (transferAmount > 0) {\n\t\t\tSOV.transfer(msg.sender, transferAmount);\n\t\t\t_amount -= transferAmount;\n\t\t}\n\n\t\t/// @notice Stakes SOV tokens in the user's behalf.\n\t\tSOV.approve(address(staking), _amount);\n\n\t\tstaking.stakesBySchedule(_amount, FOUR_WEEKS, YEAR, FOUR_WEEKS, msg.sender, msg.sender);\n\n\t\temit Burn(msg.sender, _amount);\n\t}\n\n\t/**\n\t * @notice Override default ApprovalReceiver._getToken function to\n\t * register SOV token on this contract.\n\t * @return The address of SOV token.\n\t * */\n\tfunction _getToken() internal view returns (address) {\n\t\treturn address(SOV);\n\t}\n\n\t/**\n\t * @notice Override default ApprovalReceiver._getSelectors function to\n\t * register mintWithApproval selector on this contract.\n\t * @return The array of registered selectors on this contract.\n\t * */\n\tfunction _getSelectors() internal view returns (bytes4[] memory) {\n\t\tbytes4[] memory selectors = new bytes4[](1);\n\t\tselectors[0] = this.mintWithApproval.selector;\n\t\treturn selectors;\n\t}\n}\n"
      },
      "contracts/mockup/VestingLogicMockup.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../governance/Vesting/VestingLogic.sol\";\n\ncontract VestingLogicMockup is VestingLogic {\n\t/**\n\t * @dev we had a bug in a loop: \"i < endDate\" instead of \"i <= endDate\"\n\t */\n\tfunction delegate(address _delegatee) public onlyTokenOwner {\n\t\trequire(_delegatee != address(0), \"delegatee address invalid\");\n\n\t\t/// @dev Withdraw for each unlocked position.\n\t\t/// @dev Don't change FOUR_WEEKS to TWO_WEEKS, a lot of vestings already deployed with FOUR_WEEKS\n\t\t///\t\tworkaround found, but it doesn't work with TWO_WEEKS\n\t\tfor (uint256 i = startDate + cliff; i < endDate; i += FOUR_WEEKS) {\n\t\t\tstaking.delegate(_delegatee, i);\n\t\t}\n\t\temit VotesDelegated(msg.sender, _delegatee);\n\t}\n}\n"
      },
      "contracts/governance/Vesting/VestingCreator.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../../interfaces/IERC20.sol\";\nimport \"../../utils/AdminRole.sol\";\nimport \"./VestingRegistryLogic.sol\";\nimport \"./VestingLogic.sol\";\nimport \"../../openzeppelin/SafeMath.sol\";\n\ncontract VestingCreator is AdminRole {\n\tusing SafeMath for uint256;\n\n\t///@notice Boolean to check both vesting creation and staking is completed for a record\n\tbool vestingCreated;\n\n\t/// @notice 2 weeks in seconds.\n\tuint256 public constant TWO_WEEKS = 1209600;\n\n\t///@notice the SOV token contract\n\tIERC20 public SOV;\n\n\t///@notice the vesting registry contract\n\tVestingRegistryLogic public vestingRegistryLogic;\n\n\t///@notice Holds Vesting Data\n\tstruct VestingData {\n\t\tuint256 amount;\n\t\tuint256 cliff;\n\t\tuint256 duration;\n\t\tbool governanceControl; ///@dev true - tokens can be withdrawn by governance\n\t\taddress tokenOwner;\n\t\tuint256 vestingCreationType;\n\t}\n\n\t///@notice list of vesting to be processed\n\tVestingData[] public vestingDataList;\n\n\tevent SOVTransferred(address indexed receiver, uint256 amount);\n\tevent TokensStaked(address indexed vesting, address indexed tokenOwner, uint256 amount);\n\tevent VestingDataRemoved(address indexed caller, address indexed tokenOwner);\n\tevent DataCleared(address indexed caller);\n\n\tconstructor(address _SOV, address _vestingRegistryProxy) public {\n\t\trequire(_SOV != address(0), \"SOV address invalid\");\n\t\trequire(_vestingRegistryProxy != address(0), \"Vesting registry address invalid\");\n\n\t\tSOV = IERC20(_SOV);\n\t\tvestingRegistryLogic = VestingRegistryLogic(_vestingRegistryProxy);\n\t}\n\n\t/**\n\t * @notice transfers SOV tokens to given address\n\t * @param _receiver the address of the SOV receiver\n\t * @param _amount the amount to be transferred\n\t */\n\tfunction transferSOV(address _receiver, uint256 _amount) external onlyOwner {\n\t\trequire(_amount != 0, \"amount invalid\");\n\t\trequire(SOV.transfer(_receiver, _amount), \"transfer failed\");\n\t\temit SOVTransferred(_receiver, _amount);\n\t}\n\n\t/**\n\t * @notice adds vestings to be processed to the list\n\t */\n\tfunction addVestings(\n\t\taddress[] calldata _tokenOwners,\n\t\tuint256[] calldata _amounts,\n\t\tuint256[] calldata _cliffs,\n\t\tuint256[] calldata _durations,\n\t\tbool[] calldata _governanceControls,\n\t\tuint256[] calldata _vestingCreationTypes\n\t) external onlyAuthorized {\n\t\trequire(\n\t\t\t_tokenOwners.length == _amounts.length &&\n\t\t\t\t_tokenOwners.length == _cliffs.length &&\n\t\t\t\t_tokenOwners.length == _durations.length &&\n\t\t\t\t_tokenOwners.length == _governanceControls.length,\n\t\t\t\"arrays mismatch\"\n\t\t);\n\n\t\tfor (uint256 i = 0; i < _tokenOwners.length; i++) {\n\t\t\trequire(_durations[i] >= _cliffs[i], \"duration must be bigger than or equal to the cliff\");\n\t\t\trequire(_amounts[i] > 0, \"vesting amount cannot be 0\");\n\t\t\trequire(_tokenOwners[i] != address(0), \"token owner cannot be 0 address\");\n\t\t\trequire(_cliffs[i].mod(TWO_WEEKS) == 0, \"cliffs should have intervals of two weeks\");\n\t\t\trequire(_durations[i].mod(TWO_WEEKS) == 0, \"durations should have intervals of two weeks\");\n\t\t\tVestingData memory vestingData =\n\t\t\t\tVestingData({\n\t\t\t\t\tamount: _amounts[i],\n\t\t\t\t\tcliff: _cliffs[i],\n\t\t\t\t\tduration: _durations[i],\n\t\t\t\t\tgovernanceControl: _governanceControls[i],\n\t\t\t\t\ttokenOwner: _tokenOwners[i],\n\t\t\t\t\tvestingCreationType: _vestingCreationTypes[i]\n\t\t\t\t});\n\t\t\tvestingDataList.push(vestingData);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Creates vesting contract and stakes tokens\n\t * @dev Vesting and Staking are merged for calls that fits the gas limit\n\t */\n\tfunction processNextVesting() external {\n\t\tprocessVestingCreation();\n\t\tprocessStaking();\n\t}\n\n\t/**\n\t * @notice Creates vesting contract without staking any tokens\n\t * @dev Separating the Vesting and Staking to tackle Block Gas Limit\n\t */\n\tfunction processVestingCreation() public {\n\t\trequire(!vestingCreated, \"staking not done for the previous vesting\");\n\t\tif (vestingDataList.length > 0) {\n\t\t\tVestingData storage vestingData = vestingDataList[vestingDataList.length - 1];\n\t\t\t_createAndGetVesting(vestingData);\n\t\t\tvestingCreated = true;\n\t\t}\n\t}\n\n\t/**\n\t * @notice Staking vested tokens\n\t * @dev it can be the case when vesting creation and tokens staking can't be done in one transaction because of block gas limit\n\t */\n\tfunction processStaking() public {\n\t\trequire(vestingCreated, \"cannot stake without vesting creation\");\n\t\tif (vestingDataList.length > 0) {\n\t\t\tVestingData storage vestingData = vestingDataList[vestingDataList.length - 1];\n\t\t\taddress vestingAddress =\n\t\t\t\t_getVesting(\n\t\t\t\t\tvestingData.tokenOwner,\n\t\t\t\t\tvestingData.cliff,\n\t\t\t\t\tvestingData.duration,\n\t\t\t\t\tvestingData.governanceControl,\n\t\t\t\t\tvestingData.vestingCreationType\n\t\t\t\t);\n\t\t\tif (vestingAddress != address(0)) {\n\t\t\t\tVestingLogic vesting = VestingLogic(vestingAddress);\n\t\t\t\trequire(SOV.approve(address(vesting), vestingData.amount), \"Approve failed\");\n\t\t\t\tvesting.stakeTokens(vestingData.amount);\n\t\t\t\temit TokensStaked(vestingAddress, vestingData.tokenOwner, vestingData.amount);\n\t\t\t\taddress tokenOwnerDetails = vestingData.tokenOwner;\n\t\t\t\tdelete vestingDataList[vestingDataList.length - 1];\n\t\t\t\tvestingDataList.length--;\n\t\t\t\temit VestingDataRemoved(msg.sender, tokenOwnerDetails);\n\t\t\t}\n\t\t}\n\t\tvestingCreated = false;\n\t}\n\n\t/**\n\t * @notice removes next vesting data from the list\n\t * @dev we process inverted list\n\t * @dev we should be able to remove incorrect vesting data that can't be processed\n\t */\n\tfunction removeNextVesting() external onlyAuthorized {\n\t\taddress tokenOwnerDetails;\n\t\tif (vestingDataList.length > 0) {\n\t\t\tVestingData storage vestingData = vestingDataList[vestingDataList.length - 1];\n\t\t\ttokenOwnerDetails = vestingData.tokenOwner;\n\t\t\tdelete vestingDataList[vestingDataList.length - 1];\n\t\t\tvestingDataList.length--;\n\t\t\temit VestingDataRemoved(msg.sender, tokenOwnerDetails);\n\t\t}\n\t}\n\n\t/**\n\t * @notice removes all data about unprocessed vestings to be processed\n\t */\n\tfunction clearVestingDataList() public onlyAuthorized {\n\t\tdelete vestingDataList;\n\t\temit DataCleared(msg.sender);\n\t}\n\n\t/**\n\t * @notice returns address after vesting creation\n\t */\n\tfunction getVestingAddress() external view returns (address) {\n\t\treturn\n\t\t\t_getVesting(\n\t\t\t\tvestingDataList[vestingDataList.length - 1].tokenOwner,\n\t\t\t\tvestingDataList[vestingDataList.length - 1].cliff,\n\t\t\t\tvestingDataList[vestingDataList.length - 1].duration,\n\t\t\t\tvestingDataList[vestingDataList.length - 1].governanceControl,\n\t\t\t\tvestingDataList[vestingDataList.length - 1].vestingCreationType\n\t\t\t);\n\t}\n\n\t/**\n\t * @notice returns period i.e. ((duration - cliff) / 4 WEEKS)\n\t * @dev will be used for deciding if vesting and staking needs to be processed\n\t * in a single transaction or separate transactions\n\t */\n\tfunction getVestingPeriod() external view returns (uint256) {\n\t\tuint256 duration = vestingDataList[vestingDataList.length - 1].duration;\n\t\tuint256 cliff = vestingDataList[vestingDataList.length - 1].cliff;\n\t\tuint256 fourWeeks = TWO_WEEKS.mul(2);\n\t\tuint256 period = duration.sub(cliff).div(fourWeeks);\n\t\treturn period;\n\t}\n\n\t/**\n\t * @notice returns count of vestings to be processed\n\t */\n\tfunction getUnprocessedCount() external view returns (uint256) {\n\t\treturn vestingDataList.length;\n\t}\n\n\t/**\n\t * @notice returns total amount of vestings to be processed\n\t */\n\tfunction getUnprocessedAmount() public view returns (uint256) {\n\t\tuint256 amount = 0;\n\t\tuint256 length = vestingDataList.length;\n\t\tfor (uint256 i = 0; i < length; i++) {\n\t\t\tamount = amount.add(vestingDataList[i].amount);\n\t\t}\n\t\treturn amount;\n\t}\n\n\t/**\n\t * @notice checks if contract balance is enough to process all vestings\n\t */\n\tfunction isEnoughBalance() public view returns (bool) {\n\t\treturn SOV.balanceOf(address(this)) >= getUnprocessedAmount();\n\t}\n\n\t/**\n\t * @notice returns missed balance to process all vestings\n\t */\n\tfunction getMissingBalance() external view returns (uint256) {\n\t\tif (isEnoughBalance()) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn getUnprocessedAmount() - SOV.balanceOf(address(this));\n\t}\n\n\t/**\n\t * @notice creates TeamVesting or Vesting contract\n\t * @dev new contract won't be created if account already has contract of the same type\n\t */\n\tfunction _createAndGetVesting(VestingData memory vestingData) internal returns (address vesting) {\n\t\tif (vestingData.governanceControl) {\n\t\t\tvestingRegistryLogic.createTeamVesting(\n\t\t\t\tvestingData.tokenOwner,\n\t\t\t\tvestingData.amount,\n\t\t\t\tvestingData.cliff,\n\t\t\t\tvestingData.duration,\n\t\t\t\tvestingData.vestingCreationType\n\t\t\t);\n\t\t} else {\n\t\t\tvestingRegistryLogic.createVestingAddr(\n\t\t\t\tvestingData.tokenOwner,\n\t\t\t\tvestingData.amount,\n\t\t\t\tvestingData.cliff,\n\t\t\t\tvestingData.duration,\n\t\t\t\tvestingData.vestingCreationType\n\t\t\t);\n\t\t}\n\t\treturn\n\t\t\t_getVesting(\n\t\t\t\tvestingData.tokenOwner,\n\t\t\t\tvestingData.cliff,\n\t\t\t\tvestingData.duration,\n\t\t\t\tvestingData.governanceControl,\n\t\t\t\tvestingData.vestingCreationType\n\t\t\t);\n\t}\n\n\t/**\n\t * @notice returns an address of TeamVesting or Vesting contract (depends on a governance control)\n\t */\n\tfunction _getVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration,\n\t\tbool _governanceControl,\n\t\tuint256 _vestingCreationType\n\t) internal view returns (address vestingAddress) {\n\t\tif (_governanceControl) {\n\t\t\tvestingAddress = vestingRegistryLogic.getTeamVesting(_tokenOwner, _cliff, _duration, _vestingCreationType);\n\t\t} else {\n\t\t\tvestingAddress = vestingRegistryLogic.getVestingAddr(_tokenOwner, _cliff, _duration, _vestingCreationType);\n\t\t}\n\t}\n}\n"
      },
      "contracts/mockup/VestingRegistryLogicMockUp.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\nimport \"../governance/Vesting/VestingRegistryLogic.sol\";\n\ncontract VestingRegistryLogicMockup is VestingRegistryLogic {\n\tfunction isVestingAdress(address _vestingAddress) external view returns (bool isVestingAddr) {\n\t\treturn true;\n\t}\n}\n"
      },
      "contracts/governance/Vesting/VestingRegistryProxy.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"./VestingRegistryStorage.sol\";\nimport \"../../proxy/UpgradableProxy.sol\";\n\n/**\n * @title Vesting Registry Proxy contract.\n * @dev Vesting Registry contract should be upgradable, use UpgradableProxy.\n * VestingRegistryStorage is deployed with the upgradable functionality\n * by using this contract instead, that inherits from UpgradableProxy\n * the possibility of being enhanced and re-deployed.\n * */\ncontract VestingRegistryProxy is VestingRegistryStorage, UpgradableProxy {\n\n}\n"
      },
      "contracts/proxy/UpgradableProxy.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"./Proxy.sol\";\n\n/**\n * @title Upgradable Proxy contract.\n * @notice A disadvantage of the immutable ledger is that nobody can change the\n * source code of a smart contract after it’s been deployed. In order to fix\n * bugs or introduce new features, smart contracts need to be upgradable somehow.\n *\n * Although it is not possible to upgrade the code of an already deployed smart\n * contract, it is possible to set-up a proxy contract architecture that will\n * allow to use new deployed contracts as if the main logic had been upgraded.\n *\n * A proxy architecture pattern is such that all message calls go through a\n * Proxy contract that will redirect them to the latest deployed contract logic.\n * To upgrade, a new version of the contract is deployed, and the Proxy is\n * updated to reference the new contract address.\n * */\ncontract UpgradableProxy is Proxy {\n\t/**\n\t * @notice Set address of the implementation.\n\t * @dev Wrapper for _setImplementation that exposes the function\n\t * as public for owner to be able to set a new version of the\n\t * contract as current pointing implementation.\n\t * @param _implementation Address of the implementation.\n\t * */\n\tfunction setImplementation(address _implementation) public onlyProxyOwner {\n\t\t_setImplementation(_implementation);\n\t}\n\n\t/**\n\t * @notice Set address of the owner.\n\t * @param _owner Address of the owner.\n\t * */\n\tfunction setProxyOwner(address _owner) public onlyProxyOwner {\n\t\t_setProxyOwner(_owner);\n\t}\n}\n"
      },
      "contracts/mockup/proxy/ProxyMockup.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"./StorageMockup.sol\";\nimport \"../../proxy/UpgradableProxy.sol\";\n\ncontract ProxyMockup is StorageMockup, UpgradableProxy {}\n"
      },
      "contracts/mockup/proxy/StorageMockup.sol": {
        "content": "pragma solidity ^0.5.17;\n\ncontract StorageMockup {\n\tuint256 value;\n\n\tevent ValueChanged(uint256 value);\n}\n"
      },
      "contracts/mockup/proxy/ImplementationMockup.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"./StorageMockup.sol\";\n\ncontract ImplementationMockup is StorageMockup {\n\tfunction setValue(uint256 _value) public {\n\t\tvalue = _value;\n\t\temit ValueChanged(_value);\n\t}\n\n\tfunction getValue() public view returns (uint256) {\n\t\treturn value;\n\t}\n}\n"
      },
      "contracts/governance/StakingRewards/StakingRewardsProxy.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"./StakingRewardsStorage.sol\";\nimport \"../../proxy/UpgradableProxy.sol\";\n\n/**\n * @title StakingRewards Proxy contract.\n * @dev StakingRewards contract should be upgradable. Used UpgradableProxy.\n * StakingRewardsStorage is deployed with the upgradable functionality\n * by using this contract instead, that inherits from UpgradableProxy with\n * the possibility of being enhanced and re-deployed.\n * */\ncontract StakingRewardsProxy is StakingRewardsStorage, UpgradableProxy {\n\n}\n"
      },
      "contracts/governance/Vesting/VestingRegistry2.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../../openzeppelin/Ownable.sol\";\nimport \"../../interfaces/IERC20.sol\";\nimport \"../Staking/IStaking.sol\";\nimport \"../IFeeSharingProxy.sol\";\nimport \"./IVestingFactory.sol\";\nimport \"./IVesting.sol\";\nimport \"./ITeamVesting.sol\";\nimport \"../../openzeppelin/SafeMath.sol\";\n\n/**\n * @title VestingRegistry 2 contract.\n * @notice One time contract needed to distribute tokens to origin sales investors.\n * */\ncontract VestingRegistry2 is Ownable {\n\tusing SafeMath for uint256;\n\n\t/* Storage */\n\n\t/// @notice Constant used for computing the vesting dates.\n\tuint256 public constant FOUR_WEEKS = 4 weeks;\n\n\tuint256 public constant CSOV_VESTING_CLIFF = FOUR_WEEKS;\n\tuint256 public constant CSOV_VESTING_DURATION = 10 * FOUR_WEEKS;\n\n\tIVestingFactory public vestingFactory;\n\n\t/// @notice The SOV token contract.\n\taddress public SOV;\n\n\t/// @notice The CSOV token contracts.\n\taddress[] public CSOVtokens;\n\n\tuint256 public priceSats;\n\n\t/// @notice The staking contract address.\n\taddress public staking;\n\n\t/// @notice Fee sharing proxy.\n\taddress public feeSharingProxy;\n\n\t/// @notice The vesting owner (e.g. governance timelock address).\n\taddress public vestingOwner;\n\n\t/// @dev TODO: Add to the documentation: address can have only one vesting of each type.\n\t/// @dev user => vesting type => vesting contract\n\tmapping(address => mapping(uint256 => address)) public vestingContracts;\n\n\t/**\n\t * @dev Struct can be created to save storage slots, but it doesn't make\n\t * sense. We don't have a lot of blacklisted accounts or account with\n\t * locked amount.\n\t * */\n\n\t/// @dev user => flag whether user has already exchange cSOV or got a reimbursement.\n\tmapping(address => bool) public processedList;\n\n\t/// @dev user => flag whether user shouldn't be able to exchange or reimburse.\n\tmapping(address => bool) public blacklist;\n\n\t/// @dev user => amount of tokens should not be processed.\n\tmapping(address => uint256) public lockedAmount;\n\n\t/// @dev user => flag whether user has admin role.\n\tmapping(address => bool) public admins;\n\n\tenum VestingType {\n\t\tTeamVesting, // MultisigVesting\n\t\tVesting // TokenHolderVesting\n\t}\n\n\t/* Events */\n\n\tevent CSOVTokensExchanged(address indexed caller, uint256 amount);\n\tevent SOVTransferred(address indexed receiver, uint256 amount);\n\tevent VestingCreated(address indexed tokenOwner, address vesting, uint256 cliff, uint256 duration, uint256 amount);\n\tevent TeamVestingCreated(address indexed tokenOwner, address vesting, uint256 cliff, uint256 duration, uint256 amount);\n\tevent TokensStaked(address indexed vesting, uint256 amount);\n\tevent AdminAdded(address admin);\n\tevent AdminRemoved(address admin);\n\n\t/* Functions */\n\n\t/**\n\t * @notice Contract deployment settings.\n\t * @param _vestingFactory The address of vesting factory contract.\n\t * @param _SOV The SOV token address.\n\t * @param _CSOVtokens The array of cSOV tokens.\n\t * @param _priceSats The price of cSOV tokens in satoshis.\n\t * @param _staking The address of staking contract.\n\t * @param _feeSharingProxy The address of fee sharing proxy contract.\n\t * @param _vestingOwner The address of an owner of vesting contract.\n\t * @dev On Sovryn the vesting owner is Exchequer Multisig.\n\t * According to SIP-0007 The Exchequer Multisig is designated to hold\n\t * certain funds in the form of rBTC and SOV, in order to allow for\n\t * flexible deployment of such funds on:\n\t *  + facilitating rBTC redemptions for Genesis pre-sale participants.\n\t *  + deploying of SOV for the purposes of exchange listings, market\n\t *    making, and partnerships with third parties.\n\t * */\n\tconstructor(\n\t\taddress _vestingFactory,\n\t\taddress _SOV,\n\t\taddress[] memory _CSOVtokens,\n\t\tuint256 _priceSats,\n\t\taddress _staking,\n\t\taddress _feeSharingProxy,\n\t\taddress _vestingOwner\n\t) public {\n\t\trequire(_SOV != address(0), \"SOV address invalid\");\n\t\trequire(_staking != address(0), \"staking address invalid\");\n\t\trequire(_feeSharingProxy != address(0), \"feeSharingProxy address invalid\");\n\t\trequire(_vestingOwner != address(0), \"vestingOwner address invalid\");\n\n\t\t_setVestingFactory(_vestingFactory);\n\t\t_setCSOVtokens(_CSOVtokens);\n\n\t\tSOV = _SOV;\n\t\tpriceSats = _priceSats;\n\t\tstaking = _staking;\n\t\tfeeSharingProxy = _feeSharingProxy;\n\t\tvestingOwner = _vestingOwner;\n\t}\n\n\t/**\n\t * @dev Throws if called by any account other than the owner or admin.\n\t */\n\tmodifier onlyAuthorized() {\n\t\trequire(isOwner() || admins[msg.sender], \"unauthorized\");\n\t\t_;\n\t}\n\n\t/**\n\t * @notice Add account to ACL.\n\t * @param _admin The addresses of the account to grant permissions.\n\t * */\n\tfunction addAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = true;\n\t\temit AdminAdded(_admin);\n\t}\n\n\t/**\n\t * @notice Remove account from ACL.\n\t * @param _admin The addresses of the account to revoke permissions.\n\t * */\n\tfunction removeAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = false;\n\t\temit AdminRemoved(_admin);\n\t}\n\n\t//---PostCSOV--------------------------------------------------------------\n\n\tmodifier isNotProcessed() {\n\t\trequire(!processedList[msg.sender], \"Address cannot be processed twice\");\n\t\t_;\n\t}\n\n\tmodifier isNotBlacklisted() {\n\t\trequire(!blacklist[msg.sender], \"Address blacklisted\");\n\t\t_;\n\t}\n\n\t/**\n\t * @notice Get contract balance.\n\t * @return The token balance of the contract.\n\t * */\n\tfunction budget() external view returns (uint256) {\n\t\tuint256 SCBudget = address(this).balance;\n\t\treturn SCBudget;\n\t}\n\n\t/**\n\t * @notice Deposit function to receiving value (rBTC).\n\t * */\n\tfunction deposit() public payable {}\n\n\t/**\n\t * @notice Send all contract balance to an account.\n\t * @param to The account address to send the balance to.\n\t * */\n\tfunction withdrawAll(address payable to) public onlyOwner {\n\t\tto.transfer(address(this).balance);\n\t}\n\n\t//--------------------------------------------------------------------------------------------------------------------------------------\n\n\t/**\n\t * @notice Sets vesting factory address. High level endpoint.\n\t * @param _vestingFactory The address of vesting factory contract.\n\t *\n\t * @dev Splitting code on two functions: high level and low level\n\t * is a pattern that makes easy to extend functionality in a readable way,\n\t * without accidentally breaking the actual action being performed.\n\t * For example, checks should be done on high level endpoint, while core\n\t * functionality should be coded on the low level function.\n\t * */\n\tfunction setVestingFactory(address _vestingFactory) public onlyOwner {\n\t\t_setVestingFactory(_vestingFactory);\n\t}\n\n\t/**\n\t * @notice Sets vesting factory address. Low level core function.\n\t * @param _vestingFactory The address of vesting factory contract.\n\t * */\n\tfunction _setVestingFactory(address _vestingFactory) internal {\n\t\trequire(_vestingFactory != address(0), \"vestingFactory address invalid\");\n\t\tvestingFactory = IVestingFactory(_vestingFactory);\n\t}\n\n\t/**\n\t * @notice Sets cSOV tokens array. High level endpoint.\n\t * @param _CSOVtokens The array of cSOV tokens.\n\t * */\n\tfunction setCSOVtokens(address[] memory _CSOVtokens) public onlyOwner {\n\t\t_setCSOVtokens(_CSOVtokens);\n\t}\n\n\t/**\n\t * @notice Sets cSOV tokens array by looping through input. Low level function.\n\t * @param _CSOVtokens The array of cSOV tokens.\n\t * */\n\tfunction _setCSOVtokens(address[] memory _CSOVtokens) internal {\n\t\tfor (uint256 i = 0; i < _CSOVtokens.length; i++) {\n\t\t\trequire(_CSOVtokens[i] != address(0), \"CSOV address invalid\");\n\t\t}\n\t\tCSOVtokens = _CSOVtokens;\n\t}\n\n\t/**\n\t * @notice Set blacklist flag (true/false).\n\t * @param _account The address to be blacklisted.\n\t * @param _blacklisted The flag to add/remove to/from a blacklist.\n\t * */\n\tfunction setBlacklistFlag(address _account, bool _blacklisted) public onlyOwner {\n\t\trequire(_account != address(0), \"account address invalid\");\n\n\t\tblacklist[_account] = _blacklisted;\n\t}\n\n\t/**\n\t * @notice Set amount to be subtracted from user token balance.\n\t * @param _account The address with locked amount.\n\t * @param _amount The amount to be locked.\n\t * */\n\tfunction setLockedAmount(address _account, uint256 _amount) public onlyOwner {\n\t\trequire(_account != address(0), \"account address invalid\");\n\t\trequire(_amount != 0, \"amount invalid\");\n\n\t\tlockedAmount[_account] = _amount;\n\t}\n\n\t/**\n\t * @notice Transfer SOV tokens to given address.\n\t *\n\t * @dev This is a wrapper for ERC-20 transfer function w/\n\t * additional checks and triggering an event.\n\t *\n\t * @param _receiver The address of the SOV receiver.\n\t * @param _amount The amount to be transferred.\n\t * */\n\tfunction transferSOV(address _receiver, uint256 _amount) public onlyOwner {\n\t\trequire(_receiver != address(0), \"receiver address invalid\");\n\t\trequire(_amount != 0, \"amount invalid\");\n\n\t\tIERC20(SOV).transfer(_receiver, _amount);\n\t\temit SOVTransferred(_receiver, _amount);\n\t}\n\n\t/**\n\t * @notice cSOV tokens are moved and staked on Vesting contract.\n\t * @param _amount The amount of tokens to be vested.\n\t * */\n\tfunction _createVestingForCSOV(uint256 _amount) internal {\n\t\taddress vesting = _getOrCreateVesting(msg.sender, CSOV_VESTING_CLIFF, CSOV_VESTING_DURATION);\n\n\t\tIERC20(SOV).approve(vesting, _amount);\n\t\tIVesting(vesting).stakeTokens(_amount);\n\n\t\temit CSOVTokensExchanged(msg.sender, _amount);\n\t}\n\n\t/**\n\t * @notice Check a token address is among the cSOV token addresses.\n\t * @param _CSOV The cSOV token address.\n\t * */\n\tfunction _validateCSOV(address _CSOV) internal view {\n\t\tbool isValid = false;\n\t\tfor (uint256 i = 0; i < CSOVtokens.length; i++) {\n\t\t\tif (_CSOV == CSOVtokens[i]) {\n\t\t\t\tisValid = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\trequire(isValid, \"wrong CSOV address\");\n\t}\n\n\t/**\n\t * @notice Create Vesting contract.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @param _amount The amount to be staked.\n\t * @param _cliff The time interval to the first withdraw in seconds.\n\t * @param _duration The total duration in seconds.\n\t * */\n\tfunction createVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _amount,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) public onlyAuthorized {\n\t\taddress vesting = _getOrCreateVesting(_tokenOwner, _cliff, _duration);\n\t\temit VestingCreated(_tokenOwner, vesting, _cliff, _duration, _amount);\n\t}\n\n\t/**\n\t * @notice Create Team Vesting contract.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @param _amount The amount to be staked.\n\t * @param _cliff The time interval to the first withdraw in seconds.\n\t * @param _duration The total duration in seconds.\n\t * */\n\tfunction createTeamVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _amount,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) public onlyAuthorized {\n\t\taddress vesting = _getOrCreateTeamVesting(_tokenOwner, _cliff, _duration);\n\t\temit TeamVestingCreated(_tokenOwner, vesting, _cliff, _duration, _amount);\n\t}\n\n\t/**\n\t * @notice Stake tokens according to the vesting schedule\n\t * @param _vesting the address of Vesting contract\n\t * @param _amount the amount of tokens to stake\n\t * */\n\tfunction stakeTokens(address _vesting, uint256 _amount) public onlyAuthorized {\n\t\trequire(_vesting != address(0), \"vesting address invalid\");\n\t\trequire(_amount > 0, \"amount invalid\");\n\n\t\tIERC20(SOV).approve(_vesting, _amount);\n\t\tIVesting(_vesting).stakeTokens(_amount);\n\t\temit TokensStaked(_vesting, _amount);\n\t}\n\n\t/**\n\t * @notice Query the vesting contract for an account.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @return The vesting contract address for the given token owner.\n\t * */\n\tfunction getVesting(address _tokenOwner) public view returns (address) {\n\t\treturn vestingContracts[_tokenOwner][uint256(VestingType.Vesting)];\n\t}\n\n\t/**\n\t * @notice Query the team vesting contract for an account.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @return The team vesting contract address for the given token owner.\n\t * */\n\tfunction getTeamVesting(address _tokenOwner) public view returns (address) {\n\t\treturn vestingContracts[_tokenOwner][uint256(VestingType.TeamVesting)];\n\t}\n\n\t/**\n\t * @notice If not exists, deploy a vesting contract through factory.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @param _cliff The time interval to the first withdraw in seconds.\n\t * @param _duration The total duration in seconds.\n\t * @return The vesting contract address for the given token owner\n\t * whether it existed previously or not.\n\t * */\n\tfunction _getOrCreateVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) internal returns (address) {\n\t\tuint256 type_ = uint256(VestingType.Vesting);\n\t\tif (vestingContracts[_tokenOwner][type_] == address(0)) {\n\t\t\t//TODO Owner of OwnerVesting contracts - the same address as tokenOwner\n\t\t\taddress vesting = vestingFactory.deployVesting(SOV, staking, _tokenOwner, _cliff, _duration, feeSharingProxy, _tokenOwner);\n\t\t\tvestingContracts[_tokenOwner][type_] = vesting;\n\t\t}\n\t\treturn vestingContracts[_tokenOwner][type_];\n\t}\n\n\t/**\n\t * @notice If not exists, deploy a team vesting contract through factory.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @param _cliff The time interval to the first withdraw in seconds.\n\t * @param _duration The total duration in seconds.\n\t * @return The team vesting contract address for the given token owner\n\t * whether it existed previously or not.\n\t * */\n\tfunction _getOrCreateTeamVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) internal returns (address) {\n\t\tuint256 type_ = uint256(VestingType.TeamVesting);\n\t\tif (vestingContracts[_tokenOwner][type_] == address(0)) {\n\t\t\taddress vesting = vestingFactory.deployTeamVesting(SOV, staking, _tokenOwner, _cliff, _duration, feeSharingProxy, vestingOwner);\n\t\t\tvestingContracts[_tokenOwner][type_] = vesting;\n\t\t}\n\t\treturn vestingContracts[_tokenOwner][type_];\n\t}\n}\n"
      },
      "contracts/governance/Vesting/OriginInvestorsClaim.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"./VestingRegistry.sol\";\nimport \"../Staking/Staking.sol\";\n\n/**\n * @title Origin investors claim vested cSOV tokens.\n * @notice // TODO: fund this contract with a total amount of SOV needed to distribute.\n * */\ncontract OriginInvestorsClaim is Ownable {\n\tusing SafeMath for uint256;\n\n\t/* Storage */\n\n\t/// VestingRegistry public constant vestingRegistry = VestingRegistry(0x80B036ae59B3e38B573837c01BB1DB95515b7E6B);\n\n\tuint256 public totalAmount;\n\n\t/// @notice Constant used for computing the vesting dates.\n\tuint256 public constant SOV_VESTING_CLIFF = 6 weeks;\n\n\tuint256 public kickoffTS;\n\tuint256 public vestingTerm;\n\tuint256 public investorsQty;\n\tbool public investorsListInitialized;\n\tVestingRegistry public vestingRegistry;\n\tStaking public staking;\n\tIERC20 public SOVToken;\n\n\t/// @dev user => flag : Whether user has admin role.\n\tmapping(address => bool) public admins;\n\n\t/// @dev investor => Amount : Origin investors entitled to claim SOV.\n\tmapping(address => uint256) public investorsAmountsList;\n\n\t/* Events */\n\n\tevent AdminAdded(address admin);\n\tevent AdminRemoved(address admin);\n\tevent InvestorsAmountsListAppended(uint256 qty, uint256 amount);\n\tevent ClaimVested(address indexed investor, uint256 amount);\n\tevent ClaimTransferred(address indexed investor, uint256 amount);\n\tevent InvestorsAmountsListInitialized(uint256 qty, uint256 totalAmount);\n\n\t/* Modifiers */\n\n\t/// @dev Throws if called by any account other than the owner or admin.\n\tmodifier onlyAuthorized() {\n\t\trequire(isOwner() || admins[msg.sender], \"OriginInvestorsClaim::onlyAuthorized: should be authorized\");\n\t\t_;\n\t}\n\n\t/// @dev Throws if called by any account not whitelisted.\n\tmodifier onlyWhitelisted() {\n\t\trequire(investorsAmountsList[msg.sender] != 0, \"OriginInvestorsClaim::onlyWhitelisted: not whitelisted or already claimed\");\n\t\t_;\n\t}\n\n\t/// @dev Throws if called w/ an initialized investors list.\n\tmodifier notInitialized() {\n\t\trequire(!investorsListInitialized, \"OriginInvestorsClaim::notInitialized: the investors list should not be set as initialized\");\n\t\t_;\n\t}\n\n\t/// @dev Throws if called w/ an uninitialized investors list.\n\tmodifier initialized() {\n\t\trequire(investorsListInitialized, \"OriginInvestorsClaim::initialized: the investors list has not been set yet\");\n\t\t_;\n\t}\n\n\t/* Functions */\n\n\t/**\n\t * @notice Contract deployment requires one parameter:\n\t * @param vestingRegistryAddress The vestingRegistry contract instance address.\n\t * */\n\tconstructor(address vestingRegistryAddress) public {\n\t\tvestingRegistry = VestingRegistry(vestingRegistryAddress);\n\t\tstaking = Staking(vestingRegistry.staking());\n\t\tkickoffTS = staking.kickoffTS();\n\t\tSOVToken = staking.SOVToken();\n\t\tvestingTerm = kickoffTS + SOV_VESTING_CLIFF;\n\t}\n\n\t/**\n\t * @notice Add account to ACL.\n\t * @param _admin The addresses of the account to grant permissions.\n\t * */\n\tfunction addAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = true;\n\t\temit AdminAdded(_admin);\n\t}\n\n\t/**\n\t * @notice Remove account from ACL.\n\t * @param _admin The addresses of the account to revoke permissions.\n\t * */\n\tfunction removeAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = false;\n\t\temit AdminRemoved(_admin);\n\t}\n\n\t/**\n\t * @notice In case we have unclaimed tokens or in emergency case\n\t * this function transfers all SOV tokens to a given address.\n\t * @param toAddress The recipient address of all this contract tokens.\n\t * */\n\tfunction authorizedBalanceWithdraw(address toAddress) public onlyAuthorized {\n\t\trequire(\n\t\t\tSOVToken.transfer(toAddress, SOVToken.balanceOf(address(this))),\n\t\t\t\"OriginInvestorsClaim::authorizedTransferBalance: transfer failed\"\n\t\t);\n\t}\n\n\t/**\n\t * @notice Should be called after the investors list setup completed.\n\t * This function checks whether the SOV token balance of the contract is\n\t * enough and sets status list to initialized.\n\t * */\n\tfunction setInvestorsAmountsListInitialized() public onlyAuthorized notInitialized {\n\t\trequire(\n\t\t\tSOVToken.balanceOf(address(this)) >= totalAmount,\n\t\t\t\"OriginInvestorsClaim::setInvestorsAmountsList: the contract is not enough financed\"\n\t\t);\n\n\t\tinvestorsListInitialized = true;\n\n\t\temit InvestorsAmountsListInitialized(investorsQty, totalAmount);\n\t}\n\n\t/**\n\t * @notice The contract should be approved or transferred necessary\n\t * amount of SOV prior to calling the function.\n\t * @param investors The list of investors addresses to add to the list.\n\t * Duplicates will be skipped.\n\t * @param claimAmounts The list of amounts for investors investors[i]\n\t * will receive claimAmounts[i] of SOV.\n\t * */\n\tfunction appendInvestorsAmountsList(address[] calldata investors, uint256[] calldata claimAmounts)\n\t\texternal\n\t\tonlyAuthorized\n\t\tnotInitialized\n\t{\n\t\tuint256 subQty;\n\t\tuint256 sumAmount;\n\t\trequire(\n\t\t\tinvestors.length == claimAmounts.length,\n\t\t\t\"OriginInvestorsClaim::appendInvestorsAmountsList: investors.length != claimAmounts.length\"\n\t\t);\n\n\t\tfor (uint256 i = 0; i < investors.length; i++) {\n\t\t\tif (investorsAmountsList[investors[i]] == 0) {\n\t\t\t\tinvestorsAmountsList[investors[i]] = claimAmounts[i];\n\t\t\t\tsumAmount = sumAmount.add(claimAmounts[i]);\n\t\t\t} else {\n\t\t\t\tsubQty = subQty.add(1);\n\t\t\t}\n\t\t}\n\n\t\tinvestorsQty = investorsQty.add(investors.length.sub(subQty));\n\t\ttotalAmount = totalAmount.add(sumAmount);\n\t\temit InvestorsAmountsListAppended(investors.length.sub(subQty), sumAmount);\n\t}\n\n\t/**\n\t * @notice Claim tokens from this contract.\n\t * If vestingTerm is not yet achieved a vesting is created.\n\t * Otherwise tokens are tranferred.\n\t * */\n\tfunction claim() external onlyWhitelisted initialized {\n\t\tif (now < vestingTerm) {\n\t\t\tcreateVesting();\n\t\t} else {\n\t\t\ttransfer();\n\t\t}\n\t}\n\n\t/**\n\t * @notice Transfer tokens from this contract to a vestingRegistry contract.\n\t * Sender is removed from investor list and all its unvested tokens\n\t * are sent to vesting contract.\n\t * */\n\tfunction createVesting() internal {\n\t\tuint256 cliff = vestingTerm.sub(now);\n\t\tuint256 duration = cliff;\n\t\tuint256 amount = investorsAmountsList[msg.sender];\n\t\taddress vestingContractAddress;\n\n\t\tvestingContractAddress = vestingRegistry.getVesting(msg.sender);\n\t\trequire(vestingContractAddress == address(0), \"OriginInvestorsClaim::withdraw: the claimer has an active vesting contract\");\n\n\t\tdelete investorsAmountsList[msg.sender];\n\n\t\tvestingRegistry.createVesting(msg.sender, amount, cliff, duration);\n\t\tvestingContractAddress = vestingRegistry.getVesting(msg.sender);\n\t\trequire(SOVToken.transfer(address(vestingRegistry), amount), \"OriginInvestorsClaim::withdraw: SOV transfer failed\");\n\t\tvestingRegistry.stakeTokens(vestingContractAddress, amount);\n\n\t\temit ClaimVested(msg.sender, amount);\n\t}\n\n\t/**\n\t * @notice Transfer tokens from this contract to the sender.\n\t * Sender is removed from investor list and all its unvested tokens\n\t * are sent to its account.\n\t * */\n\tfunction transfer() internal {\n\t\tuint256 amount = investorsAmountsList[msg.sender];\n\n\t\tdelete investorsAmountsList[msg.sender];\n\n\t\t/**\n\t\t * @dev Withdraw only for those claiming after the cliff, i.e. without vesting contracts.\n\t\t * Those with vestingContracts should withdraw using Vesting.withdrawTokens\n\t\t * from Vesting (VestingLogic) contract.\n\t\t * */\n\t\trequire(SOVToken.transfer(msg.sender, amount), \"OriginInvestorsClaim::withdraw: SOV transfer failed\");\n\n\t\temit ClaimTransferred(msg.sender, amount);\n\t}\n}\n"
      },
      "contracts/governance/Vesting/OrigingVestingCreator.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../../openzeppelin/Ownable.sol\";\nimport \"./VestingRegistry.sol\";\n\n/**\n * @title Temp contract for checking address, creating and staking tokens.\n * @notice It casts an instance of vestingRegistry and by using createVesting\n * function it creates a vesting, gets it and stakes some tokens w/ this vesting.\n * */\ncontract OrigingVestingCreator is Ownable {\n\tVestingRegistry public vestingRegistry;\n\n\tmapping(address => bool) processedList;\n\n\tconstructor(address _vestingRegistry) public {\n\t\tvestingRegistry = VestingRegistry(_vestingRegistry);\n\t}\n\n\t/**\n\t * @notice Create a vesting, get it and stake some tokens w/ this vesting.\n\t * @param _tokenOwner The owner of the tokens.\n\t * @param _amount The amount of tokens to be vested.\n\t * @param _cliff The time interval to the first withdraw in seconds.\n\t * @param _duration The total duration in seconds.\n\t * */\n\tfunction createVesting(\n\t\taddress _tokenOwner,\n\t\tuint256 _amount,\n\t\tuint256 _cliff,\n\t\tuint256 _duration\n\t) public onlyOwner {\n\t\trequire(_tokenOwner != address(0), \"Invalid address\");\n\t\trequire(!processedList[_tokenOwner], \"Already processed\");\n\n\t\tprocessedList[_tokenOwner] = true;\n\n\t\tvestingRegistry.createVesting(_tokenOwner, _amount, _cliff, _duration);\n\t\taddress vesting = vestingRegistry.getVesting(_tokenOwner);\n\t\tvestingRegistry.stakeTokens(vesting, _amount);\n\t}\n}\n"
      },
      "contracts/governance/Staking/StakingProxy.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"./StakingStorage.sol\";\nimport \"../../proxy/UpgradableProxy.sol\";\n\n/**\n * @title Staking Proxy contract.\n * @dev Staking contract should be upgradable, use UpgradableProxy.\n * StakingStorage is deployed with the upgradable functionality\n * by using this contract instead, that inherits from UpgradableProxy\n * the possibility of being enhanced and re-deployed.\n * */\ncontract StakingProxy is StakingStorage, UpgradableProxy {\n\t/**\n\t * @notice Construct a new staking contract.\n\t * @param SOV The address of the SOV token address.\n\t */\n\tconstructor(address SOV) public {\n\t\tSOVToken = IERC20(SOV);\n\t\tkickoffTS = block.timestamp;\n\t}\n}\n"
      },
      "contracts/governance/GovernorAlpha.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"./Staking/SafeMath96.sol\";\nimport \"./Timelock.sol\";\nimport \"./Staking/Staking.sol\";\nimport \"../rsk/RSKAddrValidator.sol\";\n\n/**\n * @title Governance Contract.\n * @notice This is an adapted clone of compound’s governance model. In general,\n * the process is the same: Token holders can make (executable) proposals if\n * they possess enough voting power, vote on proposals during a predefined\n * voting period and in the end evaluate the outcome. If successful, the\n * proposal will be scheduled on the timelock contract. Only after sufficient\n * time passed, it can be executed. A minimum voting power is required for\n * making a proposal as well as a minimum quorum.\n *\n * Voting power in the Bitocracy:\n * Stakers will receive voting power in the Bitocracy in return for their\n * staking commitment. This voting power is weighted by how much SOV is staked\n * and for how long the staking period is - staking more SOV over longer staking\n * periods results in higher voting power. With this voting power, users can\n * vote for or against any SIP in bitocracy.sovryn.app.\n * */\ncontract GovernorAlpha is SafeMath96 {\n\t/* Storage */\n\n\t/// @notice The name of this contract.\n\tstring public constant NAME = \"Sovryn Governor Alpha\";\n\n\t/// @notice The maximum number of actions that can be included in a proposal.\n\tfunction proposalMaxOperations() public pure returns (uint256) {\n\t\treturn 10;\n\t} // 10 actions\n\n\t/// @notice The delay before voting on a proposal may take place, once proposed.\n\tfunction votingDelay() public pure returns (uint256) {\n\t\treturn 1;\n\t} // 1 block\n\n\t/// @notice The duration of voting on a proposal, in blocks.\n\tfunction votingPeriod() public pure returns (uint256) {\n\t\treturn 2880;\n\t} // ~1 day in blocks (assuming 30s blocks)\n\n\t/// @notice The address of the Sovryn Protocol Timelock.\n\tITimelock public timelock;\n\n\t/// @notice The address of the Sovryn staking contract.\n\tIStaking public staking;\n\n\t/// @notice The address of the Governor Guardian.\n\taddress public guardian;\n\n\t/// @notice The total number of proposals.\n\tuint256 public proposalCount;\n\n\t/// @notice Percentage of current total voting power require to vote.\n\tuint96 public quorumPercentageVotes;\n\n\t// @notice Majority percentage.\n\tuint96 public majorityPercentageVotes;\n\n\tstruct Proposal {\n\t\t/// @notice Unique id for looking up a proposal.\n\t\tuint256 id;\n\t\t/// @notice The block at which voting begins: holders must delegate their votes prior to this block.\n\t\tuint32 startBlock;\n\t\t/// @notice The block at which voting ends: votes must be cast prior to this block.\n\t\tuint32 endBlock;\n\t\t/// @notice Current number of votes in favor of this proposal.\n\t\tuint96 forVotes;\n\t\t/// @notice Current number of votes in opposition to this proposal.\n\t\tuint96 againstVotes;\n\t\t///@notice the quorum required for this proposal.\n\t\tuint96 quorum;\n\t\t///@notice the majority percentage required for this proposal.\n\t\tuint96 majorityPercentage;\n\t\t/// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds.\n\t\tuint64 eta;\n\t\t/// @notice the start time is required for the staking contract.\n\t\tuint64 startTime;\n\t\t/// @notice Flag marking whether the proposal has been canceled.\n\t\tbool canceled;\n\t\t/// @notice Flag marking whether the proposal has been executed.\n\t\tbool executed;\n\t\t/// @notice Creator of the proposal.\n\t\taddress proposer;\n\t\t/// @notice the ordered list of target addresses for calls to be made.\n\t\taddress[] targets;\n\t\t/// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made.\n\t\tuint256[] values;\n\t\t/// @notice The ordered list of function signatures to be called.\n\t\tstring[] signatures;\n\t\t/// @notice The ordered list of calldata to be passed to each call.\n\t\tbytes[] calldatas;\n\t\t/// @notice Receipts of ballots for the entire set of voters.\n\t\tmapping(address => Receipt) receipts;\n\t}\n\n\t/// @notice Ballot receipt record for a voter\n\tstruct Receipt {\n\t\t/// @notice Whether or not a vote has been cast.\n\t\tbool hasVoted;\n\t\t/// @notice Whether or not the voter supports the proposal.\n\t\tbool support;\n\t\t/// @notice The number of votes the voter had, which were cast.\n\t\tuint96 votes;\n\t}\n\n\t/// @notice Possible states that a proposal may be in.\n\tenum ProposalState { Pending, Active, Canceled, Defeated, Succeeded, Queued, Expired, Executed }\n\n\t/// @notice The official record of all proposals ever proposed.\n\tmapping(uint256 => Proposal) public proposals;\n\n\t/// @notice The latest proposal for each proposer.\n\tmapping(address => uint256) public latestProposalIds;\n\n\t/// @notice The EIP-712 typehash for the contract's domain.\n\tbytes32 public constant DOMAIN_TYPEHASH = keccak256(\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\");\n\n\t/// @notice The EIP-712 typehash for the ballot struct used by the contract.\n\tbytes32 public constant BALLOT_TYPEHASH = keccak256(\"Ballot(uint256 proposalId,bool support)\");\n\n\t/* Events */\n\n\t/// @notice An event emitted when a new proposal is created.\n\tevent ProposalCreated(\n\t\tuint256 id,\n\t\taddress proposer,\n\t\taddress[] targets,\n\t\tuint256[] values,\n\t\tstring[] signatures,\n\t\tbytes[] calldatas,\n\t\tuint256 startBlock,\n\t\tuint256 endBlock,\n\t\tstring description\n\t);\n\n\t/// @notice An event emitted when a vote has been cast on a proposal.\n\tevent VoteCast(address voter, uint256 proposalId, bool support, uint256 votes);\n\n\t/// @notice An event emitted when a proposal has been canceled.\n\tevent ProposalCanceled(uint256 id);\n\n\t/// @notice An event emitted when a proposal has been queued in the Timelock.\n\tevent ProposalQueued(uint256 id, uint256 eta);\n\n\t/// @notice An event emitted when a proposal has been executed in the Timelock.\n\tevent ProposalExecuted(uint256 id);\n\n\t/* Functions */\n\n\tconstructor(\n\t\taddress timelock_,\n\t\taddress staking_,\n\t\taddress guardian_,\n\t\tuint96 _quorumPercentageVotes,\n\t\tuint96 _majorityPercentageVotes\n\t) public {\n\t\ttimelock = ITimelock(timelock_);\n\t\tstaking = IStaking(staking_);\n\t\tguardian = guardian_;\n\t\tquorumPercentageVotes = _quorumPercentageVotes;\n\t\tmajorityPercentageVotes = _majorityPercentageVotes;\n\t}\n\n\t/// @notice The number of votes required in order for a voter to become a proposer.\n\tfunction proposalThreshold() public view returns (uint96) {\n\t\tuint96 totalVotingPower =\n\t\t\tstaking.getPriorTotalVotingPower(\n\t\t\t\tsafe32(block.number - 1, \"GovernorAlpha::proposalThreshold: block number overflow\"),\n\t\t\t\tblock.timestamp\n\t\t\t);\n\t\t// 1% of current total voting power.\n\t\treturn totalVotingPower / 100;\n\t}\n\n\t/// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed.\n\tfunction quorumVotes() public view returns (uint96) {\n\t\tuint96 totalVotingPower =\n\t\t\tstaking.getPriorTotalVotingPower(\n\t\t\t\tsafe32(block.number - 1, \"GovernorAlpha::quorumVotes: block number overflow\"),\n\t\t\t\tblock.timestamp\n\t\t\t);\n\t\t// 4% of current total voting power.\n\t\treturn mul96(quorumPercentageVotes, totalVotingPower, \"GovernorAlpha::quorumVotes:multiplication overflow\") / 100;\n\t}\n\n\t/**\n\t * @notice Create a new proposal.\n\t * @param targets Array of contract addresses to perform proposal execution.\n\t * @param values Array of rBTC amounts to send on proposal execution.\n\t * @param signatures Array of function signatures to call on proposal execution.\n\t * @param calldatas Array of payloads for the calls on proposal execution.\n\t * @param description Text describing the purpose of the proposal.\n\t * */\n\tfunction propose(\n\t\taddress[] memory targets,\n\t\tuint256[] memory values,\n\t\tstring[] memory signatures,\n\t\tbytes[] memory calldatas,\n\t\tstring memory description\n\t) public returns (uint256) {\n\t\t// note: passing this block's timestamp, but the number of the previous block.\n\t\t// todo: think if it would be better to pass block.timestamp - 30 (average block time)\n\t\t// (probably not because proposal starts in 1 block from now).\n\t\tuint96 threshold = proposalThreshold();\n\t\trequire(\n\t\t\tstaking.getPriorVotes(msg.sender, sub256(block.number, 1), block.timestamp) > threshold,\n\t\t\t\"GovernorAlpha::propose: proposer votes below proposal threshold\"\n\t\t);\n\t\trequire(\n\t\t\ttargets.length == values.length && targets.length == signatures.length && targets.length == calldatas.length,\n\t\t\t\"GovernorAlpha::propose: proposal function information arity mismatch\"\n\t\t);\n\t\trequire(targets.length != 0, \"GovernorAlpha::propose: must provide actions\");\n\t\trequire(targets.length <= proposalMaxOperations(), \"GovernorAlpha::propose: too many actions\");\n\n\t\tuint256 latestProposalId = latestProposalIds[msg.sender];\n\t\tif (latestProposalId != 0) {\n\t\t\tProposalState proposersLatestProposalState = state(latestProposalId);\n\t\t\trequire(\n\t\t\t\tproposersLatestProposalState != ProposalState.Active,\n\t\t\t\t\"GovernorAlpha::propose: one live proposal per proposer, found an already active proposal\"\n\t\t\t);\n\t\t\trequire(\n\t\t\t\tproposersLatestProposalState != ProposalState.Pending,\n\t\t\t\t\"GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal\"\n\t\t\t);\n\t\t}\n\n\t\tuint256 startBlock = add256(block.number, votingDelay());\n\t\tuint256 endBlock = add256(startBlock, votingPeriod());\n\n\t\tproposalCount++;\n\n\t\t/// @dev quorum: proposalThreshold is 1% of total votes, we can save gas using this pre calculated value.\n\t\t/// @dev startTime: Required by the staking contract. not used by the governance contract itself.\n\t\tProposal memory newProposal =\n\t\t\tProposal({\n\t\t\t\tid: proposalCount,\n\t\t\t\tstartBlock: safe32(startBlock, \"GovernorAlpha::propose: start block number overflow\"),\n\t\t\t\tendBlock: safe32(endBlock, \"GovernorAlpha::propose: end block number overflow\"),\n\t\t\t\tforVotes: 0,\n\t\t\t\tagainstVotes: 0,\n\t\t\t\tquorum: mul96(quorumPercentageVotes, threshold, \"GovernorAlpha::propose: overflow on quorum computation\"),\n\t\t\t\tmajorityPercentage: mul96(\n\t\t\t\t\tmajorityPercentageVotes,\n\t\t\t\t\tthreshold,\n\t\t\t\t\t\"GovernorAlpha::propose: overflow on majorityPercentage computation\"\n\t\t\t\t),\n\t\t\t\teta: 0,\n\t\t\t\tstartTime: safe64(block.timestamp, \"GovernorAlpha::propose: startTime overflow\"),\n\t\t\t\tcanceled: false,\n\t\t\t\texecuted: false,\n\t\t\t\tproposer: msg.sender,\n\t\t\t\ttargets: targets,\n\t\t\t\tvalues: values,\n\t\t\t\tsignatures: signatures,\n\t\t\t\tcalldatas: calldatas\n\t\t\t});\n\n\t\tproposals[newProposal.id] = newProposal;\n\t\tlatestProposalIds[newProposal.proposer] = newProposal.id;\n\n\t\temit ProposalCreated(newProposal.id, msg.sender, targets, values, signatures, calldatas, startBlock, endBlock, description);\n\t\treturn newProposal.id;\n\t}\n\n\t/**\n\t * @notice Enqueue a proposal and everyone of its calls.\n\t * @param proposalId Proposal index to access the list proposals[] from storage.\n\t * */\n\tfunction queue(uint256 proposalId) public {\n\t\trequire(state(proposalId) == ProposalState.Succeeded, \"GovernorAlpha::queue: proposal can only be queued if it is succeeded\");\n\t\tProposal storage proposal = proposals[proposalId];\n\t\tuint256 eta = add256(block.timestamp, timelock.delay());\n\n\t\tfor (uint256 i = 0; i < proposal.targets.length; i++) {\n\t\t\t_queueOrRevert(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], eta);\n\t\t}\n\t\tproposal.eta = safe64(eta, \"GovernorAlpha::queue: ETA overflow\");\n\t\temit ProposalQueued(proposalId, eta);\n\t}\n\n\t/**\n\t * @notice Tries to enqueue a proposal, verifying it has not been previously queued.\n\t * @param target Contract addresses to perform proposal execution.\n\t * @param value rBTC amount to send on proposal execution.\n\t * @param signature Function signature to call on proposal execution.\n\t * @param data Payload for the call on proposal execution.\n\t * @param eta Estimated Time of Accomplishment. The timestamp that the\n\t * proposal will be available for execution, set once the vote succeeds.\n\t * */\n\tfunction _queueOrRevert(\n\t\taddress target,\n\t\tuint256 value,\n\t\tstring memory signature,\n\t\tbytes memory data,\n\t\tuint256 eta\n\t) internal {\n\t\trequire(\n\t\t\t!timelock.queuedTransactions(keccak256(abi.encode(target, value, signature, data, eta))),\n\t\t\t\"GovernorAlpha::_queueOrRevert: proposal action already queued at eta\"\n\t\t);\n\t\ttimelock.queueTransaction(target, value, signature, data, eta);\n\t}\n\n\t/**\n\t * @notice Execute a proposal by looping and performing everyone of its calls.\n\t * @param proposalId Proposal index to access the list proposals[] from storage.\n\t * */\n\tfunction execute(uint256 proposalId) public payable {\n\t\trequire(state(proposalId) == ProposalState.Queued, \"GovernorAlpha::execute: proposal can only be executed if it is queued\");\n\t\tProposal storage proposal = proposals[proposalId];\n\t\tproposal.executed = true;\n\n\t\tfor (uint256 i = 0; i < proposal.targets.length; i++) {\n\t\t\ttimelock.executeTransaction.value(proposal.values[i])(\n\t\t\t\tproposal.targets[i],\n\t\t\t\tproposal.values[i],\n\t\t\t\tproposal.signatures[i],\n\t\t\t\tproposal.calldatas[i],\n\t\t\t\tproposal.eta\n\t\t\t);\n\t\t}\n\t\temit ProposalExecuted(proposalId);\n\t}\n\n\t/**\n\t * @notice Cancel a proposal by looping and cancelling everyone of its calls.\n\t * @param proposalId Proposal index to access the list proposals[] from storage.\n\t * */\n\tfunction cancel(uint256 proposalId) public {\n\t\tProposalState state = state(proposalId);\n\t\trequire(state != ProposalState.Executed, \"GovernorAlpha::cancel: cannot cancel executed proposal\");\n\n\t\tProposal storage proposal = proposals[proposalId];\n\t\t/// @notice Cancel only if sent by the guardian.\n\t\trequire(msg.sender == guardian, \"GovernorAlpha::cancel: sender isn't a guardian\");\n\n\t\tproposal.canceled = true;\n\n\t\tfor (uint256 i = 0; i < proposal.targets.length; i++) {\n\t\t\ttimelock.cancelTransaction(\n\t\t\t\tproposal.targets[i],\n\t\t\t\tproposal.values[i],\n\t\t\t\tproposal.signatures[i],\n\t\t\t\tproposal.calldatas[i],\n\t\t\t\tproposal.eta\n\t\t\t);\n\t\t}\n\n\t\temit ProposalCanceled(proposalId);\n\t}\n\n\t/**\n\t * @notice Get a proposal list of its calls.\n\t * @param proposalId Proposal index to access the list proposals[] from storage.\n\t * @return Arrays of the 4 call parameters: targets, values, signatures, calldatas.\n\t * */\n\tfunction getActions(uint256 proposalId)\n\t\tpublic\n\t\tview\n\t\treturns (\n\t\t\taddress[] memory targets,\n\t\t\tuint256[] memory values,\n\t\t\tstring[] memory signatures,\n\t\t\tbytes[] memory calldatas\n\t\t)\n\t{\n\t\tProposal storage p = proposals[proposalId];\n\t\treturn (p.targets, p.values, p.signatures, p.calldatas);\n\t}\n\n\t/**\n\t * @notice Get a proposal receipt.\n\t * @param proposalId Proposal index to access the list proposals[] from storage.\n\t * @param voter A governance stakeholder with voting power.\n\t * @return The voter receipt of the proposal.\n\t * */\n\tfunction getReceipt(uint256 proposalId, address voter) public view returns (Receipt memory) {\n\t\treturn proposals[proposalId].receipts[voter];\n\t}\n\n\t/**\n\t * @notice Casts a vote by sender.\n\t * @param proposalId Proposal index to access the list proposals[] from storage.\n\t * @param support Vote value, yes or no.\n\t * */\n\tfunction castVote(uint256 proposalId, bool support) public {\n\t\treturn _castVote(msg.sender, proposalId, support);\n\t}\n\n\t/**\n\t * @notice Voting with EIP-712 Signatures.\n\t *\n\t * Voting power can be delegated to any address, and then can be used to\n\t * vote on proposals. A key benefit to users of by-signature functionality\n\t * is that they can create a signed vote transaction for free, and have a\n\t * trusted third-party spend rBTC(or ETH) on gas fees and write it to the\n\t * blockchain for them.\n\t *\n\t * The third party in this scenario, submitting the SOV-holder’s signed\n\t * transaction holds a voting power that is for only a single proposal.\n\t * The signatory still holds the power to vote on their own behalf in\n\t * the proposal if the third party has not yet published the signed\n\t * transaction that was given to them.\n\t *\n\t * @dev The signature needs to be broken up into 3 parameters, known as\n\t * v, r and s:\n\t * const r = '0x' + sig.substring(2).substring(0, 64);\n\t * const s = '0x' + sig.substring(2).substring(64, 128);\n\t * const v = '0x' + sig.substring(2).substring(128, 130);\n\t *\n\t * @param proposalId Proposal index to access the list proposals[] from storage.\n\t * @param support Vote value, yes or no.\n\t * @param v The recovery byte of the signature.\n\t * @param r Half of the ECDSA signature pair.\n\t * @param s Half of the ECDSA signature pair.\n\t * */\n\tfunction castVoteBySig(\n\t\tuint256 proposalId,\n\t\tbool support,\n\t\tuint8 v,\n\t\tbytes32 r,\n\t\tbytes32 s\n\t) public {\n\t\t/**\n\t\t * @dev The DOMAIN_SEPARATOR is a hash that uniquely identifies a\n\t\t * smart contract. It is built from a string denoting it as an\n\t\t * EIP712 Domain, the name of the token contract, the version,\n\t\t * the chainId in case it changes, and the address that the\n\t\t * contract is deployed at.\n\t\t * */\n\t\tbytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(NAME)), getChainId(), address(this)));\n\n\t\t/// @dev GovernorAlpha uses BALLOT_TYPEHASH, while Staking uses DELEGATION_TYPEHASH\n\t\tbytes32 structHash = keccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support));\n\n\t\tbytes32 digest = keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n\t\taddress signatory = ecrecover(digest, v, r, s);\n\n\t\t/// @dev Verify address is not null and PK is not null either.\n\t\trequire(RSKAddrValidator.checkPKNotZero(signatory), \"GovernorAlpha::castVoteBySig: invalid signature\");\n\t\treturn _castVote(signatory, proposalId, support);\n\t}\n\n\t/**\n\t * @notice Cast a vote, adding it to the total counting.\n\t * @param voter A governance stakeholder with voting power that is casting the vote.\n\t * @param proposalId Proposal index to access the list proposals[] from storage.\n\t * @param support Vote value, yes or no.\n\t * */\n\tfunction _castVote(\n\t\taddress voter,\n\t\tuint256 proposalId,\n\t\tbool support\n\t) internal {\n\t\trequire(state(proposalId) == ProposalState.Active, \"GovernorAlpha::_castVote: voting is closed\");\n\t\tProposal storage proposal = proposals[proposalId];\n\t\tReceipt storage receipt = proposal.receipts[voter];\n\t\trequire(receipt.hasVoted == false, \"GovernorAlpha::_castVote: voter already voted\");\n\t\tuint96 votes = staking.getPriorVotes(voter, proposal.startBlock, proposal.startTime);\n\n\t\tif (support) {\n\t\t\tproposal.forVotes = add96(proposal.forVotes, votes, \"GovernorAlpha::_castVote: vote overflow\");\n\t\t} else {\n\t\t\tproposal.againstVotes = add96(proposal.againstVotes, votes, \"GovernorAlpha::_castVote: vote overflow\");\n\t\t}\n\n\t\treceipt.hasVoted = true;\n\t\treceipt.support = support;\n\t\treceipt.votes = votes;\n\n\t\temit VoteCast(voter, proposalId, support, votes);\n\t}\n\n\t/// @dev Timelock wrapper w/ sender check.\n\tfunction __acceptAdmin() public {\n\t\trequire(msg.sender == guardian, \"GovernorAlpha::__acceptAdmin: sender must be gov guardian\");\n\t\ttimelock.acceptAdmin();\n\t}\n\n\t/// @notice Sets guardian address to zero.\n\tfunction __abdicate() public {\n\t\trequire(msg.sender == guardian, \"GovernorAlpha::__abdicate: sender must be gov guardian\");\n\t\tguardian = address(0);\n\t}\n\n\t/// @dev Timelock wrapper w/ sender check.\n\tfunction __queueSetTimelockPendingAdmin(address newPendingAdmin, uint256 eta) public {\n\t\trequire(msg.sender == guardian, \"GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian\");\n\t\ttimelock.queueTransaction(address(timelock), 0, \"setPendingAdmin(address)\", abi.encode(newPendingAdmin), eta);\n\t}\n\n\t/// @dev Timelock wrapper w/ sender check.\n\tfunction __executeSetTimelockPendingAdmin(address newPendingAdmin, uint256 eta) public {\n\t\trequire(msg.sender == guardian, \"GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian\");\n\t\ttimelock.executeTransaction(address(timelock), 0, \"setPendingAdmin(address)\", abi.encode(newPendingAdmin), eta);\n\t}\n\n\t/**\n\t * @notice Get a proposal state.\n\t * @param proposalId Proposal index to access the list proposals[] from storage.\n\t * @return The state of the proposal: Canceled, Pending, Active, Defeated,\n\t * Succeeded, Executed, Expired.\n\t * */\n\tfunction state(uint256 proposalId) public view returns (ProposalState) {\n\t\trequire(proposalCount >= proposalId && proposalId > 0, \"GovernorAlpha::state: invalid proposal id\");\n\t\tProposal storage proposal = proposals[proposalId];\n\n\t\tif (proposal.canceled) {\n\t\t\treturn ProposalState.Canceled;\n\t\t}\n\n\t\tif (block.number <= proposal.startBlock) {\n\t\t\treturn ProposalState.Pending;\n\t\t}\n\n\t\tif (block.number <= proposal.endBlock) {\n\t\t\treturn ProposalState.Active;\n\t\t}\n\n\t\tuint96 totalVotes = add96(proposal.forVotes, proposal.againstVotes, \"GovernorAlpha:: state: forVotes + againstVotes > uint96\");\n\t\tuint96 totalVotesMajorityPercentage = div96(totalVotes, 100, \"GovernorAlpha:: state: division error\");\n\t\ttotalVotesMajorityPercentage = mul96(\n\t\t\ttotalVotesMajorityPercentage,\n\t\t\tmajorityPercentageVotes,\n\t\t\t\"GovernorAlpha:: state: totalVotes * majorityPercentage > uint96\"\n\t\t);\n\t\tif (proposal.forVotes <= totalVotesMajorityPercentage || totalVotes < proposal.quorum) {\n\t\t\treturn ProposalState.Defeated;\n\t\t}\n\n\t\tif (proposal.eta == 0) {\n\t\t\treturn ProposalState.Succeeded;\n\t\t}\n\n\t\tif (proposal.executed) {\n\t\t\treturn ProposalState.Executed;\n\t\t}\n\n\t\tif (block.timestamp >= add256(proposal.eta, timelock.GRACE_PERIOD())) {\n\t\t\treturn ProposalState.Expired;\n\t\t}\n\n\t\treturn ProposalState.Queued;\n\t}\n\n\t/// @dev TODO: use OpenZeppelin's SafeMath function instead.\n\tfunction add256(uint256 a, uint256 b) internal pure returns (uint256) {\n\t\tuint256 c = a + b;\n\t\trequire(c >= a, \"addition overflow\");\n\t\treturn c;\n\t}\n\n\t/// @dev TODO: use OpenZeppelin's SafeMath function instead.\n\tfunction sub256(uint256 a, uint256 b) internal pure returns (uint256) {\n\t\trequire(b <= a, \"subtraction underflow\");\n\t\treturn a - b;\n\t}\n\n\t/**\n\t * @notice Retrieve CHAIN_ID of the executing chain.\n\t *\n\t * Chain identifier (chainID) introduced in EIP-155 protects transaction\n\t * included into one chain from being included into another chain.\n\t * Basically, chain identifier is an integer number being used in the\n\t * processes of signing transactions and verifying transaction signatures.\n\t *\n\t * @dev As of version 0.5.12, Solidity includes an assembly function\n\t * chainid() that provides access to the new CHAINID opcode.\n\t *\n\t * TODO: chainId is included in block. So you can get chain id like\n\t * block timestamp or block number: block.chainid;\n\t * */\n\tfunction getChainId() internal pure returns (uint256) {\n\t\tuint256 chainId;\n\t\tassembly {\n\t\t\tchainId := chainid()\n\t\t}\n\t\treturn chainId;\n\t}\n}\n\n/* Interfaces */\n\ninterface TimelockInterface {\n\tfunction delay() external view returns (uint256);\n\n\tfunction GRACE_PERIOD() external view returns (uint256);\n\n\tfunction acceptAdmin() external;\n\n\tfunction queuedTransactions(bytes32 hash) external view returns (bool);\n\n\tfunction queueTransaction(\n\t\taddress target,\n\t\tuint256 value,\n\t\tstring calldata signature,\n\t\tbytes calldata data,\n\t\tuint256 eta\n\t) external returns (bytes32);\n\n\tfunction cancelTransaction(\n\t\taddress target,\n\t\tuint256 value,\n\t\tstring calldata signature,\n\t\tbytes calldata data,\n\t\tuint256 eta\n\t) external;\n\n\tfunction executeTransaction(\n\t\taddress target,\n\t\tuint256 value,\n\t\tstring calldata signature,\n\t\tbytes calldata data,\n\t\tuint256 eta\n\t) external payable returns (bytes memory);\n}\n\ninterface StakingInterface {\n\tfunction getPriorVotes(\n\t\taddress account,\n\t\tuint256 blockNumber,\n\t\tuint256 date\n\t) external view returns (uint96);\n\n\tfunction getPriorTotalVotingPower(uint32 blockNumber, uint256 time) external view returns (uint96);\n}\n"
      },
      "contracts/governance/Timelock.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../openzeppelin/SafeMath.sol\";\nimport \"./ErrorDecoder.sol\";\n\ninterface ITimelock {\n\tfunction delay() external view returns (uint256);\n\n\tfunction GRACE_PERIOD() external view returns (uint256);\n\n\tfunction acceptAdmin() external;\n\n\tfunction queuedTransactions(bytes32 hash) external view returns (bool);\n\n\tfunction queueTransaction(\n\t\taddress target,\n\t\tuint256 value,\n\t\tstring calldata signature,\n\t\tbytes calldata data,\n\t\tuint256 eta\n\t) external returns (bytes32);\n\n\tfunction cancelTransaction(\n\t\taddress target,\n\t\tuint256 value,\n\t\tstring calldata signature,\n\t\tbytes calldata data,\n\t\tuint256 eta\n\t) external;\n\n\tfunction executeTransaction(\n\t\taddress target,\n\t\tuint256 value,\n\t\tstring calldata signature,\n\t\tbytes calldata data,\n\t\tuint256 eta\n\t) external payable returns (bytes memory);\n}\n\n/**\n * @title Sovryn Protocol Timelock contract, based on Compound system.\n *\n * @notice This contract lets Sovryn governance system set up its\n * own Time Lock instance to execute transactions proposed through the\n * GovernorAlpha contract instance.\n *\n * The Timelock contract allows its admin (Sovryn governance on\n * GovernorAlpha contract) to add arbitrary function calls to a\n * queue. This contract can only execute a function call if the\n * function call has been in the queue for at least 3 hours.\n *\n * Anytime the Timelock contract makes a function call, it must be the\n * case that the function call was first made public by having been publicly\n * added to the queue at least 3 hours prior.\n *\n * The intention is to provide GovernorAlpha contract the functionality to\n * queue proposal actions. This would mean that any changes made by Sovryn\n * governance of any contract would necessarily come with at least an\n * advanced warning. This makes the Sovryn system follow a “time-delayed,\n * opt-out” upgrade pattern (rather than an “instant, forced” upgrade pattern).\n *\n * Time-delaying admin actions gives users a chance to exit system if its\n * admins become malicious or compromised (or make a change that the users\n * do not like). Downside is that honest admins would be unable\n * to lock down functionality to protect users if a critical bug was found.\n *\n * Delayed transactions reduce the amount of trust required by users of Sovryn\n * and the overall risk for contracts building on top of it, as GovernorAlpha.\n * */\ncontract Timelock is ErrorDecoder, ITimelock {\n\tusing SafeMath for uint256;\n\n\tuint256 public constant GRACE_PERIOD = 14 days;\n\tuint256 public constant MINIMUM_DELAY = 3 hours;\n\tuint256 public constant MAXIMUM_DELAY = 30 days;\n\n\taddress public admin;\n\taddress public pendingAdmin;\n\tuint256 public delay;\n\n\tmapping(bytes32 => bool) public queuedTransactions;\n\n\tevent NewAdmin(address indexed newAdmin);\n\tevent NewPendingAdmin(address indexed newPendingAdmin);\n\tevent NewDelay(uint256 indexed newDelay);\n\tevent CancelTransaction(bytes32 indexed txHash, address indexed target, uint256 value, string signature, bytes data, uint256 eta);\n\tevent ExecuteTransaction(bytes32 indexed txHash, address indexed target, uint256 value, string signature, bytes data, uint256 eta);\n\tevent QueueTransaction(bytes32 indexed txHash, address indexed target, uint256 value, string signature, bytes data, uint256 eta);\n\n\t/**\n\t * @notice Function called on instance deployment of the contract.\n\t * @param admin_ Governance contract address.\n\t * @param delay_ Time to wait for queued transactions to be executed.\n\t * */\n\tconstructor(address admin_, uint256 delay_) public {\n\t\trequire(delay_ >= MINIMUM_DELAY, \"Timelock::constructor: Delay must exceed minimum delay.\");\n\t\trequire(delay_ <= MAXIMUM_DELAY, \"Timelock::setDelay: Delay must not exceed maximum delay.\");\n\n\t\tadmin = admin_;\n\t\tdelay = delay_;\n\t}\n\n\t/**\n\t * @notice Fallback function is to react to receiving value (rBTC).\n\t * */\n\tfunction() external payable {}\n\n\t/**\n\t * @notice Set a new delay when executing the contract calls.\n\t * @param delay_ The amount of time to wait until execution.\n\t * */\n\tfunction setDelay(uint256 delay_) public {\n\t\trequire(msg.sender == address(this), \"Timelock::setDelay: Call must come from Timelock.\");\n\t\trequire(delay_ >= MINIMUM_DELAY, \"Timelock::setDelay: Delay must exceed minimum delay.\");\n\t\trequire(delay_ <= MAXIMUM_DELAY, \"Timelock::setDelay: Delay must not exceed maximum delay.\");\n\t\tdelay = delay_;\n\n\t\temit NewDelay(delay);\n\t}\n\n\t/**\n\t * @notice Accept a new admin for the timelock.\n\t * */\n\tfunction acceptAdmin() public {\n\t\trequire(msg.sender == pendingAdmin, \"Timelock::acceptAdmin: Call must come from pendingAdmin.\");\n\t\tadmin = msg.sender;\n\t\tpendingAdmin = address(0);\n\n\t\temit NewAdmin(admin);\n\t}\n\n\t/**\n\t * @notice Set a new pending admin for the timelock.\n\t * @param pendingAdmin_ The new pending admin address.\n\t * */\n\tfunction setPendingAdmin(address pendingAdmin_) public {\n\t\trequire(msg.sender == address(this), \"Timelock::setPendingAdmin: Call must come from Timelock.\");\n\t\tpendingAdmin = pendingAdmin_;\n\n\t\temit NewPendingAdmin(pendingAdmin);\n\t}\n\n\t/**\n\t * @notice Queue a new transaction from the governance contract.\n\t * @param target The contract to call.\n\t * @param value The amount to send in the transaction.\n\t * @param signature The stanndard representation of the function called.\n\t * @param data The ethereum transaction input data payload.\n\t * @param eta Estimated Time of Accomplishment. The timestamp that the\n\t * proposal will be available for execution, set once the vote succeeds.\n\t * */\n\tfunction queueTransaction(\n\t\taddress target,\n\t\tuint256 value,\n\t\tstring memory signature,\n\t\tbytes memory data,\n\t\tuint256 eta\n\t) public returns (bytes32) {\n\t\trequire(msg.sender == admin, \"Timelock::queueTransaction: Call must come from admin.\");\n\t\trequire(eta >= getBlockTimestamp().add(delay), \"Timelock::queueTransaction: Estimated execution block must satisfy delay.\");\n\n\t\tbytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));\n\t\tqueuedTransactions[txHash] = true;\n\n\t\temit QueueTransaction(txHash, target, value, signature, data, eta);\n\t\treturn txHash;\n\t}\n\n\t/**\n\t * @notice Cancel a transaction.\n\t * @param target The contract to call.\n\t * @param value The amount to send in the transaction.\n\t * @param signature The stanndard representation of the function called.\n\t * @param data The ethereum transaction input data payload.\n\t * @param eta Estimated Time of Accomplishment. The timestamp that the\n\t * proposal will be available for execution, set once the vote succeeds.\n\t * */\n\tfunction cancelTransaction(\n\t\taddress target,\n\t\tuint256 value,\n\t\tstring memory signature,\n\t\tbytes memory data,\n\t\tuint256 eta\n\t) public {\n\t\trequire(msg.sender == admin, \"Timelock::cancelTransaction: Call must come from admin.\");\n\n\t\tbytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));\n\t\tqueuedTransactions[txHash] = false;\n\n\t\temit CancelTransaction(txHash, target, value, signature, data, eta);\n\t}\n\n\t/**\n\t * @notice Executes a previously queued transaction from the governance.\n\t * @param target The contract to call.\n\t * @param value The amount to send in the transaction.\n\t * @param signature The stanndard representation of the function called.\n\t * @param data The ethereum transaction input data payload.\n\t * @param eta Estimated Time of Accomplishment. The timestamp that the\n\t * proposal will be available for execution, set once the vote succeeds.\n\t * */\n\tfunction executeTransaction(\n\t\taddress target,\n\t\tuint256 value,\n\t\tstring memory signature,\n\t\tbytes memory data,\n\t\tuint256 eta\n\t) public payable returns (bytes memory) {\n\t\trequire(msg.sender == admin, \"Timelock::executeTransaction: Call must come from admin.\");\n\n\t\tbytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));\n\t\trequire(queuedTransactions[txHash], \"Timelock::executeTransaction: Transaction hasn't been queued.\");\n\t\trequire(getBlockTimestamp() >= eta, \"Timelock::executeTransaction: Transaction hasn't surpassed time lock.\");\n\t\trequire(getBlockTimestamp() <= eta.add(GRACE_PERIOD), \"Timelock::executeTransaction: Transaction is stale.\");\n\n\t\tqueuedTransactions[txHash] = false;\n\n\t\tbytes memory callData;\n\n\t\tif (bytes(signature).length == 0) {\n\t\t\tcallData = data;\n\t\t} else {\n\t\t\tcallData = abi.encodePacked(bytes4(keccak256(bytes(signature))), data);\n\t\t}\n\n\t\t// solium-disable-next-line security/no-call-value\n\t\t(bool success, bytes memory returnData) = target.call.value(value)(callData);\n\t\tif (!success) {\n\t\t\tif (returnData.length <= ERROR_MESSAGE_SHIFT) {\n\t\t\t\trevert(\"Timelock::executeTransaction: Transaction execution reverted.\");\n\t\t\t} else {\n\t\t\t\trevert(_addErrorMessage(\"Timelock::executeTransaction: \", string(returnData)));\n\t\t\t}\n\t\t}\n\n\t\temit ExecuteTransaction(txHash, target, value, signature, data, eta);\n\n\t\treturn returnData;\n\t}\n\n\t/**\n\t * @notice A function used to get the current Block Timestamp.\n\t * @dev Timestamp of the current block in seconds since the epoch.\n\t * It is a Unix time stamp. So, it has the complete information about\n\t * the date, hours, minutes, and seconds (in UTC) when the block was\n\t * created.\n\t * */\n\tfunction getBlockTimestamp() internal view returns (uint256) {\n\t\t// solium-disable-next-line security/no-block-members\n\t\treturn block.timestamp;\n\t}\n}\n"
      },
      "contracts/mockup/GovernorAlphaMockup.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../governance/GovernorAlpha.sol\";\n\ncontract GovernorAlphaMockup is GovernorAlpha {\n\tconstructor(\n\t\taddress timelock_,\n\t\taddress staking_,\n\t\taddress guardian_,\n\t\tuint96 quorumVotes_,\n\t\tuint96 _minPercentageVotes\n\t) public GovernorAlpha(timelock_, staking_, guardian_, quorumVotes_, _minPercentageVotes) {}\n\n\tfunction votingPeriod() public pure returns (uint256) {\n\t\treturn 10;\n\t}\n\n\tfunction queueProposals(uint256[] calldata proposalIds) external {\n\t\tfor (uint256 i = 0; i < proposalIds.length; i++) {\n\t\t\tqueue(proposalIds[i]);\n\t\t}\n\t}\n}\n"
      },
      "contracts/testhelpers/TestLibraries.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../rsk/RSKAddrValidator.sol\";\n\n// contract for testing libraries\ncontract TestLibraries {\n\t/*\n\t * @param addr it is an address to check that it does not originates from\n\t * signing with PK = ZERO. RSK has a small difference in which @ZERO_PK_ADDR is\n\t * also an address from PK = ZERO. So we check for both of them.\n\t */\n\tfunction RSKAddrValidator_checkPKNotZero(address addr) public pure returns (bool) {\n\t\treturn (RSKAddrValidator.checkPKNotZero(addr));\n\t}\n\n\t/*\n\t * Safely compares two addresses, checking they do not originate from\n\t * a zero private key\n\t */\n\tfunction RSKAddrValidator_safeEquals(address addr1, address addr2) public pure returns (bool) {\n\t\treturn (RSKAddrValidator.safeEquals(addr1, addr2));\n\t}\n}\n"
      },
      "contracts/mockup/TimelockHarness.sol": {
        "content": "pragma solidity ^0.5.16;\n\nimport \"../governance/Timelock.sol\";\n\ninterface Administered {\n\tfunction _acceptAdmin() external returns (uint256);\n}\n\ncontract TimelockHarness is Timelock {\n\tconstructor(address admin_, uint256 delay_) public Timelock(admin_, delay_) {}\n\n\tfunction setDelayWithoutChecking(uint256 delay_) public {\n\t\tdelay = delay_;\n\n\t\temit NewDelay(delay);\n\t}\n\n\tfunction harnessSetPendingAdmin(address pendingAdmin_) public {\n\t\tpendingAdmin = pendingAdmin_;\n\t}\n\n\tfunction harnessSetAdmin(address admin_) public {\n\t\tadmin = admin_;\n\t}\n}\n\ncontract TimelockTest is Timelock {\n\tconstructor(address admin_, uint256 delay_) public Timelock(admin_, 2 days) {\n\t\tdelay = delay_;\n\t}\n\n\tfunction harnessSetAdmin(address admin_) public {\n\t\trequire(msg.sender == admin);\n\t\tadmin = admin_;\n\t}\n\n\tfunction harnessAcceptAdmin(Administered administered) public {\n\t\tadministered._acceptAdmin();\n\t}\n}\n"
      },
      "contracts/governance/FeeSharingProxy.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"./Staking/SafeMath96.sol\";\nimport \"../openzeppelin/SafeMath.sol\";\nimport \"../openzeppelin/SafeERC20.sol\";\nimport \"./IFeeSharingProxy.sol\";\nimport \"./Staking/IStaking.sol\";\n\n/**\n * @title The FeeSharingProxy contract.\n * @notice Staking is not only granting voting rights, but also access to fee\n * sharing according to the own voting power in relation to the total. Whenever\n * somebody decides to collect the fees from the protocol, they get transferred\n * to a proxy contract which invests the funds in the lending pool and keeps\n * the pool tokens.\n *\n * The fee sharing proxy will be set as feesController of the protocol contract.\n * This allows the fee sharing proxy to withdraw the fees. The fee sharing\n * proxy holds the pool tokens and keeps track of which user owns how many\n * tokens. In order to know how many tokens a user owns, the fee sharing proxy\n * needs to know the user’s weighted stake in relation to the total weighted\n * stake (aka total voting power).\n *\n * Because both values are subject to change, they may be different on each fee\n * withdrawal. To be able to calculate a user’s share of tokens when he wants\n * to withdraw, we need checkpoints.\n *\n * This contract is intended to be set as the protocol fee collector.\n * Anybody can invoke the withdrawFees function which uses\n * protocol.withdrawFees to obtain available fees from operations on a\n * certain token. These fees are deposited in the corresponding loanPool.\n * Also, the staking contract sends slashed tokens to this contract. When a\n * user calls the withdraw function, the contract transfers the fee sharing\n * rewards in proportion to the user’s weighted stake since the last withdrawal.\n *\n * The protocol is collecting fees in all sorts of currencies and then automatically\n * supplies them to the respective lending pools. Therefore, all fees are\n * generating interest for the SOV holders. If one of them withdraws fees, it will\n * get pool tokens. It is planned to add the option to convert anything to rBTC\n * before withdrawing, but not yet implemented.\n * */\ncontract FeeSharingProxy is SafeMath96, IFeeSharingProxy {\n\tusing SafeMath for uint256;\n\tusing SafeERC20 for IERC20;\n\n\t/* Storage */\n\n\t/// @dev TODO FEE_WITHDRAWAL_INTERVAL, MAX_CHECKPOINTS\n\tuint256 constant FEE_WITHDRAWAL_INTERVAL = 86400;\n\n\tuint32 constant MAX_CHECKPOINTS = 100;\n\n\tIProtocol public protocol;\n\tIStaking public staking;\n\n\t/// @notice Checkpoints by index per pool token address\n\tmapping(address => mapping(uint256 => Checkpoint)) public tokenCheckpoints;\n\n\t/// @notice The number of checkpoints for each pool token address.\n\tmapping(address => uint32) public numTokenCheckpoints;\n\n\t/// @notice\n\t/// user => token => processed checkpoint\n\tmapping(address => mapping(address => uint32)) public processedCheckpoints;\n\n\t/// @notice Last time fees were withdrawn per pool token address:\n\t/// token => time\n\tmapping(address => uint256) public lastFeeWithdrawalTime;\n\n\t/// @notice Amount of tokens that were transferred, but not saved in checkpoints.\n\t/// token => amount\n\tmapping(address => uint96) public unprocessedAmount;\n\n\tstruct Checkpoint {\n\t\tuint32 blockNumber;\n\t\tuint32 timestamp;\n\t\tuint96 totalWeightedStake;\n\t\tuint96 numTokens;\n\t}\n\n\t/* Events */\n\n\t/// @notice An event emitted when fee get withdrawn.\n\tevent FeeWithdrawn(address indexed sender, address indexed token, uint256 amount);\n\n\t/// @notice An event emitted when tokens transferred.\n\tevent TokensTransferred(address indexed sender, address indexed token, uint256 amount);\n\n\t/// @notice An event emitted when checkpoint added.\n\tevent CheckpointAdded(address indexed sender, address indexed token, uint256 amount);\n\n\t/// @notice An event emitted when user fee get withdrawn.\n\tevent UserFeeWithdrawn(address indexed sender, address indexed receiver, address indexed token, uint256 amount);\n\n\t/* Functions */\n\n\tconstructor(IProtocol _protocol, IStaking _staking) public {\n\t\tprotocol = _protocol;\n\t\tstaking = _staking;\n\t}\n\n\t/**\n\t * @notice Withdraw fees for the given token:\n\t * lendingFee + tradingFee + borrowingFee\n\t * @param _token Address of the token\n\t * */\n\tfunction withdrawFees(address _token) public {\n\t\trequire(_token != address(0), \"FeeSharingProxy::withdrawFees: invalid address\");\n\n\t\taddress loanPoolToken = protocol.underlyingToLoanPool(_token);\n\t\trequire(loanPoolToken != address(0), \"FeeSharingProxy::withdrawFees: loan token not found\");\n\n\t\tuint256 amount = protocol.withdrawFees(_token, address(this));\n\t\trequire(amount > 0, \"FeeSharingProxy::withdrawFees: no tokens to withdraw\");\n\n\t\t/// @dev TODO can be also used - function addLiquidity(IERC20Token _reserveToken, uint256 _amount, uint256 _minReturn)\n\t\tIERC20(_token).approve(loanPoolToken, amount);\n\t\tuint256 poolTokenAmount = ILoanToken(loanPoolToken).mint(address(this), amount);\n\n\t\t/// @notice Update unprocessed amount of tokens\n\t\tuint96 amount96 = safe96(poolTokenAmount, \"FeeSharingProxy::withdrawFees: pool token amount exceeds 96 bits\");\n\t\tunprocessedAmount[loanPoolToken] = add96(\n\t\t\tunprocessedAmount[loanPoolToken],\n\t\t\tamount96,\n\t\t\t\"FeeSharingProxy::withdrawFees: unprocessedAmount exceeds 96 bits\"\n\t\t);\n\n\t\t_addCheckpoint(loanPoolToken);\n\n\t\temit FeeWithdrawn(msg.sender, loanPoolToken, poolTokenAmount);\n\t}\n\n\t/**\n\t * @notice Transfer tokens to this contract.\n\t * @dev We just update amount of tokens here and write checkpoint in a separate methods\n\t * in order to prevent adding checkpoints too often.\n\t * @param _token Address of the token.\n\t * @param _amount Amount to be transferred.\n\t * */\n\tfunction transferTokens(address _token, uint96 _amount) public {\n\t\trequire(_token != address(0), \"FeeSharingProxy::transferTokens: invalid address\");\n\t\trequire(_amount > 0, \"FeeSharingProxy::transferTokens: invalid amount\");\n\n\t\t/// @notice Transfer tokens from msg.sender\n\t\tbool success = IERC20(_token).transferFrom(address(msg.sender), address(this), _amount);\n\t\trequire(success, \"Staking::transferTokens: token transfer failed\");\n\n\t\t/// @notice Update unprocessed amount of tokens.\n\t\tunprocessedAmount[_token] = add96(unprocessedAmount[_token], _amount, \"FeeSharingProxy::transferTokens: amount exceeds 96 bits\");\n\n\t\t_addCheckpoint(_token);\n\n\t\temit TokensTransferred(msg.sender, _token, _amount);\n\t}\n\n\t/**\n\t * @notice Add checkpoint with accumulated amount by function invocation.\n\t * @param _token Address of the token.\n\t * */\n\tfunction _addCheckpoint(address _token) internal {\n\t\tif (block.timestamp - lastFeeWithdrawalTime[_token] >= FEE_WITHDRAWAL_INTERVAL) {\n\t\t\tlastFeeWithdrawalTime[_token] = block.timestamp;\n\t\t\tuint96 amount = unprocessedAmount[_token];\n\n\t\t\t/// @notice Reset unprocessed amount of tokens to zero.\n\t\t\tunprocessedAmount[_token] = 0;\n\n\t\t\t/// @notice Write a regular checkpoint.\n\t\t\t_writeTokenCheckpoint(_token, amount);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Withdraw accumulated fee to the message sender.\n\t *\n\t * The Sovryn protocol collects fees on every trade/swap and loan.\n\t * These fees will be distributed to SOV stakers based on their voting\n\t * power as a percentage of total voting power. Therefore, staking more\n\t * SOV and/or staking for longer will increase your share of the fees\n\t * generated, meaning you will earn more from staking.\n\t *\n\t * @param _loanPoolToken Address of the pool token.\n\t * @param _maxCheckpoints Maximum number of checkpoints to be processed.\n\t * @param _receiver The receiver of tokens or msg.sender\n\t * */\n\tfunction withdraw(\n\t\taddress _loanPoolToken,\n\t\tuint32 _maxCheckpoints,\n\t\taddress _receiver\n\t) public {\n\t\t/// @dev Prevents processing all checkpoints because of block gas limit.\n\t\trequire(_maxCheckpoints > 0, \"FeeSharingProxy::withdraw: _maxCheckpoints should be positive\");\n\n\t\taddress user = msg.sender;\n\t\tif (_receiver == address(0)) {\n\t\t\t_receiver = msg.sender;\n\t\t}\n\n\t\tuint256 amount;\n\t\tuint32 end;\n\t\t(amount, end) = _getAccumulatedFees(user, _loanPoolToken, _maxCheckpoints);\n\n\t\tprocessedCheckpoints[user][_loanPoolToken] = end;\n\n\t\trequire(IERC20(_loanPoolToken).transfer(user, amount), \"FeeSharingProxy::withdraw: withdrawal failed\");\n\n\t\temit UserFeeWithdrawn(msg.sender, _receiver, _loanPoolToken, amount);\n\t}\n\n\t/**\n\t * @notice Get the accumulated loan pool fee of the message sender.\n\t * @param _user The address of the user or contract.\n\t * @param _loanPoolToken Address of the pool token.\n\t * @return The accumulated fee for the message sender.\n\t * */\n\tfunction getAccumulatedFees(address _user, address _loanPoolToken) public view returns (uint256) {\n\t\tuint256 amount;\n\t\t(amount, ) = _getAccumulatedFees(_user, _loanPoolToken, 0);\n\t\treturn amount;\n\t}\n\n\t/**\n\t * @notice Whenever fees are withdrawn, the staking contract needs to\n\t * checkpoint the block number, the number of pool tokens and the\n\t * total voting power at that time (read from the staking contract).\n\t * While the total voting power would not necessarily need to be\n\t * checkpointed, it makes sense to save gas cost on withdrawal.\n\t *\n\t * When the user wants to withdraw its share of tokens, we need\n\t * to iterate over all of the checkpoints since the users last\n\t * withdrawal (note: remember last withdrawal block), query the\n\t * user’s balance at the checkpoint blocks from the staking contract,\n\t * compute his share of the checkpointed tokens and add them up.\n\t * The maximum number of checkpoints to process at once should be limited.\n\t *\n\t * @param _user Address of the user's account.\n\t * @param _loanPoolToken Loan pool token address.\n\t * @param _maxCheckpoints Checkpoint index incremental.\n\t * */\n\tfunction _getAccumulatedFees(\n\t\taddress _user,\n\t\taddress _loanPoolToken,\n\t\tuint32 _maxCheckpoints\n\t) internal view returns (uint256, uint32) {\n\t\tuint32 start = processedCheckpoints[_user][_loanPoolToken];\n\t\tuint32 end;\n\t\t/// @dev Additional bool param can't be used because of stack too deep error.\n\t\tif (_maxCheckpoints > 0) {\n\t\t\t/// @dev withdraw -> _getAccumulatedFees\n\t\t\trequire(start < numTokenCheckpoints[_loanPoolToken], \"FeeSharingProxy::withdrawFees: no tokens for a withdrawal\");\n\t\t\tend = _getEndOfRange(start, _loanPoolToken, _maxCheckpoints);\n\t\t} else {\n\t\t\t/// @dev getAccumulatedFees -> _getAccumulatedFees\n\t\t\t/// Don't throw error for getter invocation outside of transaction.\n\t\t\tif (start >= numTokenCheckpoints[_loanPoolToken]) {\n\t\t\t\treturn (0, numTokenCheckpoints[_loanPoolToken]);\n\t\t\t}\n\t\t\tend = numTokenCheckpoints[_loanPoolToken];\n\t\t}\n\n\t\tuint256 amount = 0;\n\t\tuint256 cachedLockDate = 0;\n\t\tuint96 cachedWeightedStake = 0;\n\t\tfor (uint32 i = start; i < end; i++) {\n\t\t\tCheckpoint storage checkpoint = tokenCheckpoints[_loanPoolToken][i];\n\t\t\tuint256 lockDate = staking.timestampToLockDate(checkpoint.timestamp);\n\t\t\tuint96 weightedStake;\n\t\t\tif (lockDate == cachedLockDate) {\n\t\t\t\tweightedStake = cachedWeightedStake;\n\t\t\t} else {\n\t\t\t\t/// @dev We need to use \"checkpoint.blockNumber - 1\" here to calculate weighted stake\n\t\t\t\t/// For the same block like we did for total voting power in _writeTokenCheckpoint\n\t\t\t\tweightedStake = staking.getPriorWeightedStake(_user, checkpoint.blockNumber - 1, checkpoint.timestamp);\n\t\t\t\tcachedWeightedStake = weightedStake;\n\t\t\t\tcachedLockDate = lockDate;\n\t\t\t}\n\t\t\tuint256 share = uint256(checkpoint.numTokens).mul(weightedStake).div(uint256(checkpoint.totalWeightedStake));\n\t\t\tamount = amount.add(share);\n\t\t}\n\t\treturn (amount, end);\n\t}\n\n\t/**\n\t * @notice Withdrawal should only be possible for blocks which were already\n\t * mined. If the fees are withdrawn in the same block as the user withdrawal\n\t * they are not considered by the withdrawing logic (to avoid inconsistencies).\n\t *\n\t * @param start Start of the range.\n\t * @param _loanPoolToken Loan pool token address.\n\t * @param _maxCheckpoints Checkpoint index incremental.\n\t * */\n\tfunction _getEndOfRange(\n\t\tuint32 start,\n\t\taddress _loanPoolToken,\n\t\tuint32 _maxCheckpoints\n\t) internal view returns (uint32) {\n\t\tuint32 nCheckpoints = numTokenCheckpoints[_loanPoolToken];\n\t\tuint32 end;\n\t\tif (_maxCheckpoints == 0) {\n\t\t\t/// @dev All checkpoints will be processed (only for getter outside of a transaction).\n\t\t\tend = nCheckpoints;\n\t\t} else {\n\t\t\tif (_maxCheckpoints > MAX_CHECKPOINTS) {\n\t\t\t\t_maxCheckpoints = MAX_CHECKPOINTS;\n\t\t\t}\n\t\t\tend = safe32(start + _maxCheckpoints, \"FeeSharingProxy::withdraw: checkpoint index exceeds 32 bits\");\n\t\t\tif (end > nCheckpoints) {\n\t\t\t\tend = nCheckpoints;\n\t\t\t}\n\t\t}\n\n\t\t/// @dev Withdrawal should only be possible for blocks which were already mined.\n\t\tuint32 lastBlockNumber = tokenCheckpoints[_loanPoolToken][end - 1].blockNumber;\n\t\tif (block.number == lastBlockNumber) {\n\t\t\tend--;\n\t\t}\n\t\treturn end;\n\t}\n\n\t/**\n\t * @notice Write a regular checkpoint w/ the foolowing data:\n\t * block number, block timestamp, total weighted stake and num of tokens.\n\t * @param _token The pool token address.\n\t * @param _numTokens The amount of pool tokens.\n\t * */\n\tfunction _writeTokenCheckpoint(address _token, uint96 _numTokens) internal {\n\t\tuint32 blockNumber = safe32(block.number, \"FeeSharingProxy::_writeCheckpoint: block number exceeds 32 bits\");\n\t\tuint32 blockTimestamp = safe32(block.timestamp, \"FeeSharingProxy::_writeCheckpoint: block timestamp exceeds 32 bits\");\n\t\tuint32 nCheckpoints = numTokenCheckpoints[_token];\n\n\t\tuint96 totalWeightedStake = staking.getPriorTotalVotingPower(blockNumber - 1, block.timestamp);\n\t\tif (nCheckpoints > 0 && tokenCheckpoints[_token][nCheckpoints - 1].blockNumber == blockNumber) {\n\t\t\ttokenCheckpoints[_token][nCheckpoints - 1].totalWeightedStake = totalWeightedStake;\n\t\t\ttokenCheckpoints[_token][nCheckpoints - 1].numTokens = _numTokens;\n\t\t} else {\n\t\t\ttokenCheckpoints[_token][nCheckpoints] = Checkpoint(blockNumber, blockTimestamp, totalWeightedStake, _numTokens);\n\t\t\tnumTokenCheckpoints[_token] = nCheckpoints + 1;\n\t\t}\n\t\temit CheckpointAdded(msg.sender, _token, _numTokens);\n\t}\n}\n\n/* Interfaces */\n\ninterface IProtocol {\n\tfunction withdrawFees(address token, address receiver) external returns (uint256);\n\n\tfunction underlyingToLoanPool(address token) external returns (address);\n}\n\ninterface ILoanToken {\n\tfunction mint(address receiver, uint256 depositAmount) external returns (uint256 mintAmount);\n}\n"
      },
      "contracts/mockup/FeeSharingProxyMockup.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../governance/FeeSharingProxy.sol\";\n\ncontract FeeSharingProxyMockup is FeeSharingProxy {\n\tstruct TestData {\n\t\taddress loanPoolToken;\n\t\tuint32 maxCheckpoints;\n\t\taddress receiver;\n\t}\n\n\tTestData public testData;\n\n\tconstructor(IProtocol _protocol, IStaking _staking) public FeeSharingProxy(_protocol, _staking) {}\n\n\tfunction withdraw(\n\t\taddress _loanPoolToken,\n\t\tuint32 _maxCheckpoints,\n\t\taddress _receiver\n\t) public {\n\t\ttestData = TestData(_loanPoolToken, _maxCheckpoints, _receiver);\n\t}\n}\n"
      },
      "contracts/modules/ProtocolSettings.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../core/State.sol\";\nimport \"../events/ProtocolSettingsEvents.sol\";\nimport \"../openzeppelin/SafeERC20.sol\";\nimport \"../mixins/ProtocolTokenUser.sol\";\nimport \"../mixins/ModuleCommonFunctionalities.sol\";\n\n/**\n * @title Protocol Settings contract.\n *\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains functions to customize protocol settings.\n * */\ncontract ProtocolSettings is State, ProtocolTokenUser, ProtocolSettingsEvents, ModuleCommonFunctionalities {\n\tusing SafeERC20 for IERC20;\n\tusing SafeMath for uint256;\n\n\t/**\n\t * @notice Empty public constructor.\n\t * */\n\tconstructor() public {}\n\n\t/**\n\t * @notice Fallback function is to react to receiving value (rBTC).\n\t * */\n\tfunction() external {\n\t\trevert(\"fallback not allowed\");\n\t}\n\n\t/**\n\t * @notice Set function selectors on target contract.\n\t *\n\t * @param target The address of the target contract.\n\t * */\n\tfunction initialize(address target) external onlyOwner {\n\t\taddress prevModuleContractAddress = logicTargets[this.setPriceFeedContract.selector];\n\t\t_setTarget(this.setPriceFeedContract.selector, target);\n\t\t_setTarget(this.setSwapsImplContract.selector, target);\n\t\t_setTarget(this.setLoanPool.selector, target);\n\t\t_setTarget(this.setSupportedTokens.selector, target);\n\t\t_setTarget(this.setLendingFeePercent.selector, target);\n\t\t_setTarget(this.setTradingFeePercent.selector, target);\n\t\t_setTarget(this.setBorrowingFeePercent.selector, target);\n\t\t_setTarget(this.setSwapExternalFeePercent.selector, target);\n\t\t_setTarget(this.setAffiliateFeePercent.selector, target);\n\t\t_setTarget(this.setAffiliateTradingTokenFeePercent.selector, target);\n\t\t_setTarget(this.setLiquidationIncentivePercent.selector, target);\n\t\t_setTarget(this.setMaxDisagreement.selector, target);\n\t\t_setTarget(this.setSourceBuffer.selector, target);\n\t\t_setTarget(this.setMaxSwapSize.selector, target);\n\t\t_setTarget(this.setFeesController.selector, target);\n\t\t_setTarget(this.withdrawFees.selector, target);\n\t\t_setTarget(this.withdrawLendingFees.selector, target);\n\t\t_setTarget(this.withdrawTradingFees.selector, target);\n\t\t_setTarget(this.withdrawBorrowingFees.selector, target);\n\t\t_setTarget(this.withdrawProtocolToken.selector, target);\n\t\t_setTarget(this.depositProtocolToken.selector, target);\n\t\t_setTarget(this.getLoanPoolsList.selector, target);\n\t\t_setTarget(this.isLoanPool.selector, target);\n\t\t_setTarget(this.setSovrynSwapContractRegistryAddress.selector, target);\n\t\t_setTarget(this.setWrbtcToken.selector, target);\n\t\t_setTarget(this.setProtocolTokenAddress.selector, target);\n\t\t_setTarget(this.setRolloverBaseReward.selector, target);\n\t\t_setTarget(this.setRebatePercent.selector, target);\n\t\t_setTarget(this.setSpecialRebates.selector, target);\n\t\t_setTarget(this.setSovrynProtocolAddress.selector, target);\n\t\t_setTarget(this.setSOVTokenAddress.selector, target);\n\t\t_setTarget(this.setLockedSOVAddress.selector, target);\n\t\t_setTarget(this.setMinReferralsToPayoutAffiliates.selector, target);\n\t\t_setTarget(this.getSpecialRebates.selector, target);\n\t\t_setTarget(this.getProtocolAddress.selector, target);\n\t\t_setTarget(this.getSovTokenAddress.selector, target);\n\t\t_setTarget(this.getLockedSOVAddress.selector, target);\n\t\t_setTarget(this.getFeeRebatePercent.selector, target);\n\t\t_setTarget(this.togglePaused.selector, target);\n\t\t_setTarget(this.isProtocolPaused.selector, target);\n\t\t_setTarget(this.getSwapExternalFeePercent.selector, target);\n\t\t_setTarget(this.setTradingRebateRewardsBasisPoint.selector, target);\n\t\t_setTarget(this.getTradingRebateRewardsBasisPoint.selector, target);\n\t\temit ProtocolModuleContractReplaced(prevModuleContractAddress, target, \"ProtocolSettings\");\n\t}\n\n\t/**\n\t * setting wrong address will break inter module functions calling\n\t * should be set once\n\t */\n\tfunction setSovrynProtocolAddress(address newProtocolAddress) external onlyOwner whenNotPaused {\n\t\taddress oldProtocolAddress = protocolAddress;\n\t\tprotocolAddress = newProtocolAddress;\n\n\t\temit SetProtocolAddress(msg.sender, oldProtocolAddress, newProtocolAddress);\n\t}\n\n\tfunction setSOVTokenAddress(address newSovTokenAddress) external onlyOwner whenNotPaused {\n\t\trequire(Address.isContract(newSovTokenAddress), \"newSovTokenAddress not a contract\");\n\n\t\taddress oldTokenAddress = sovTokenAddress;\n\t\tsovTokenAddress = newSovTokenAddress;\n\n\t\temit SetSOVTokenAddress(msg.sender, oldTokenAddress, newSovTokenAddress);\n\t}\n\n\tfunction setLockedSOVAddress(address newLockedSOVAddress) external onlyOwner whenNotPaused {\n\t\trequire(Address.isContract(newLockedSOVAddress), \"newLockSOVAddress not a contract\");\n\n\t\taddress oldLockedSOVAddress = lockedSOVAddress;\n\t\tlockedSOVAddress = newLockedSOVAddress;\n\n\t\temit SetLockedSOVAddress(msg.sender, oldLockedSOVAddress, newLockedSOVAddress);\n\t}\n\n\t/**\n\t * @notice Set the basis point of trading rebate rewards (SOV), max value is 9999 (99.99% liquid, 0.01% vested).\n\t *\n\t * @param newBasisPoint Basis point value.\n\t */\n\tfunction setTradingRebateRewardsBasisPoint(uint256 newBasisPoint) external onlyOwner whenNotPaused {\n\t\trequire(newBasisPoint <= 9999, \"value too high\");\n\n\t\tuint256 oldBasisPoint = tradingRebateRewardsBasisPoint;\n\t\ttradingRebateRewardsBasisPoint = newBasisPoint;\n\n\t\temit SetTradingRebateRewardsBasisPoint(msg.sender, oldBasisPoint, newBasisPoint);\n\t}\n\n\t/**\n\t * @notice Update the minimum number of referrals to get affiliates rewards.\n\t *\n\t * @param newMinReferrals The new minimum number of referrals.\n\t * */\n\tfunction setMinReferralsToPayoutAffiliates(uint256 newMinReferrals) external onlyOwner whenNotPaused {\n\t\tuint256 oldMinReferrals = minReferralsToPayout;\n\t\tminReferralsToPayout = newMinReferrals;\n\n\t\temit SetMinReferralsToPayoutAffiliates(msg.sender, oldMinReferrals, newMinReferrals);\n\t}\n\n\t/**\n\t * @notice Set the address of the Price Feed instance.\n\t *\n\t * @param newContract The address of the Price Feed new instance.\n\t * */\n\tfunction setPriceFeedContract(address newContract) external onlyOwner whenNotPaused {\n\t\taddress oldContract = priceFeeds;\n\t\tpriceFeeds = newContract;\n\n\t\temit SetPriceFeedContract(msg.sender, oldContract, newContract);\n\t}\n\n\t/**\n\t * @notice Set the address of the asset swapper instance.\n\t *\n\t * @param newContract The address of the asset swapper new instance.\n\t * */\n\tfunction setSwapsImplContract(address newContract) external onlyOwner whenNotPaused {\n\t\taddress oldContract = swapsImpl;\n\t\tswapsImpl = newContract;\n\n\t\temit SetSwapsImplContract(msg.sender, oldContract, newContract);\n\t}\n\n\t/**\n\t * @notice Set a list of loan pools and its tokens.\n\t *\n\t * @param pools The array of addresses of new loan pool instances.\n\t * @param assets The array of addresses of the corresponding underlying tokens.\n\t * */\n\tfunction setLoanPool(address[] calldata pools, address[] calldata assets) external onlyOwner whenNotPaused {\n\t\trequire(pools.length == assets.length, \"count mismatch\");\n\n\t\tfor (uint256 i = 0; i < pools.length; i++) {\n\t\t\trequire(pools[i] != assets[i], \"pool == asset\");\n\t\t\trequire(pools[i] != address(0), \"pool == 0\");\n\t\t\trequire(assets[i] != address(0) || loanPoolToUnderlying[pools[i]] != address(0), \"pool not exists\");\n\t\t\tif (assets[i] == address(0)) {\n\t\t\t\tunderlyingToLoanPool[loanPoolToUnderlying[pools[i]]] = address(0);\n\t\t\t\tloanPoolToUnderlying[pools[i]] = address(0);\n\t\t\t\tloanPoolsSet.removeAddress(pools[i]);\n\t\t\t} else {\n\t\t\t\tloanPoolToUnderlying[pools[i]] = assets[i];\n\t\t\t\tunderlyingToLoanPool[assets[i]] = pools[i];\n\t\t\t\tloanPoolsSet.addAddress(pools[i]);\n\t\t\t}\n\n\t\t\temit SetLoanPool(msg.sender, pools[i], assets[i]);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Set a list of supported tokens by populating the\n\t *   storage supportedTokens mapping.\n\t *\n\t * @param addrs The array of addresses of the tokens.\n\t * @param toggles The array of flags indicating whether\n\t *   the corresponding token is supported or not.\n\t * */\n\tfunction setSupportedTokens(address[] calldata addrs, bool[] calldata toggles) external onlyOwner whenNotPaused {\n\t\trequire(addrs.length == toggles.length, \"count mismatch\");\n\n\t\tfor (uint256 i = 0; i < addrs.length; i++) {\n\t\t\tsupportedTokens[addrs[i]] = toggles[i];\n\n\t\t\temit SetSupportedTokens(msg.sender, addrs[i], toggles[i]);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Set the value of lendingFeePercent storage variable.\n\t *\n\t * @param newValue The new value for lendingFeePercent.\n\t * */\n\tfunction setLendingFeePercent(uint256 newValue) external onlyOwner whenNotPaused {\n\t\trequire(newValue <= 10**20, \"value too high\");\n\t\tuint256 oldValue = lendingFeePercent;\n\t\tlendingFeePercent = newValue;\n\n\t\temit SetLendingFeePercent(msg.sender, oldValue, newValue);\n\t}\n\n\t/**\n\t * @notice Set the value of tradingFeePercent storage variable.\n\t *\n\t * @param newValue The new value for tradingFeePercent.\n\t * */\n\tfunction setTradingFeePercent(uint256 newValue) external onlyOwner whenNotPaused {\n\t\trequire(newValue <= 10**20, \"value too high\");\n\t\tuint256 oldValue = tradingFeePercent;\n\t\ttradingFeePercent = newValue;\n\n\t\temit SetTradingFeePercent(msg.sender, oldValue, newValue);\n\t}\n\n\t/**\n\t * @notice Set the value of borrowingFeePercent storage variable.\n\t *\n\t * @param newValue The new value for borrowingFeePercent.\n\t * */\n\tfunction setBorrowingFeePercent(uint256 newValue) external onlyOwner whenNotPaused {\n\t\trequire(newValue <= 10**20, \"value too high\");\n\t\tuint256 oldValue = borrowingFeePercent;\n\t\tborrowingFeePercent = newValue;\n\n\t\temit SetBorrowingFeePercent(msg.sender, oldValue, newValue);\n\t}\n\n\t/**\n\t * @notice Set the value of swapExtrernalFeePercent storage variable\n\t *\n\t * @param newValue the new value for swapExternalFeePercent\n\t */\n\tfunction setSwapExternalFeePercent(uint256 newValue) external onlyOwner whenNotPaused {\n\t\trequire(newValue <= 10**20, \"value too high\");\n\t\tuint256 oldValue = swapExtrernalFeePercent;\n\t\tswapExtrernalFeePercent = newValue;\n\n\t\temit SetSwapExternalFeePercent(msg.sender, oldValue, newValue);\n\t}\n\n\t/**\n\t * @notice Set the value of affiliateFeePercent storage variable.\n\t *\n\t * @param newValue The new value for affiliateFeePercent.\n\t * */\n\tfunction setAffiliateFeePercent(uint256 newValue) external onlyOwner whenNotPaused {\n\t\trequire(newValue <= 10**20, \"value too high\");\n\t\tuint256 oldValue = affiliateFeePercent;\n\t\taffiliateFeePercent = newValue;\n\n\t\temit SetAffiliateFeePercent(msg.sender, oldValue, newValue);\n\t}\n\n\t/**\n\t * @notice Set the value of affiliateTradingTokenFeePercent storage variable.\n\t *\n\t * @param newValue The new value for affiliateTradingTokenFeePercent.\n\t * */\n\tfunction setAffiliateTradingTokenFeePercent(uint256 newValue) external onlyOwner whenNotPaused {\n\t\trequire(newValue <= 10**20, \"value too high\");\n\t\tuint256 oldValue = affiliateTradingTokenFeePercent;\n\t\taffiliateTradingTokenFeePercent = newValue;\n\n\t\temit SetAffiliateTradingTokenFeePercent(msg.sender, oldValue, newValue);\n\t}\n\n\t/**\n\t * @notice Set the value of liquidationIncentivePercent storage variable.\n\t *\n\t * @param newValue The new value for liquidationIncentivePercent.\n\t * */\n\tfunction setLiquidationIncentivePercent(uint256 newValue) external onlyOwner whenNotPaused {\n\t\trequire(newValue <= 10**20, \"value too high\");\n\t\tuint256 oldValue = liquidationIncentivePercent;\n\t\tliquidationIncentivePercent = newValue;\n\n\t\temit SetLiquidationIncentivePercent(msg.sender, oldValue, newValue);\n\t}\n\n\t/**\n\t * @notice Set the value of the maximum swap spread.\n\t *\n\t * @param newValue The new value for maxDisagreement.\n\t * */\n\tfunction setMaxDisagreement(uint256 newValue) external onlyOwner whenNotPaused {\n\t\tmaxDisagreement = newValue;\n\t}\n\n\t/**\n\t * @notice Set the value of the maximum source buffer.\n\t *\n\t * @dev To avoid rounding issues on the swap rate a small buffer is implemented.\n\t *\n\t * @param newValue The new value for the maximum source buffer.\n\t * */\n\tfunction setSourceBuffer(uint256 newValue) external onlyOwner whenNotPaused {\n\t\tsourceBuffer = newValue;\n\t}\n\n\t/**\n\t * @notice Set the value of the swap size limit.\n\t *\n\t * @param newValue The new value for the maximum swap size.\n\t * */\n\tfunction setMaxSwapSize(uint256 newValue) external onlyOwner whenNotPaused {\n\t\tuint256 oldValue = maxSwapSize;\n\t\tmaxSwapSize = newValue;\n\n\t\temit SetMaxSwapSize(msg.sender, oldValue, newValue);\n\t}\n\n\t/**\n\t * @notice Set the address of the feesController instance.\n\t *\n\t * @dev The fee sharing proxy must be the feesController of the\n\t * protocol contract. This allows the fee sharing proxy\n\t * to withdraw the fees.\n\t *\n\t * @param newController The new address of the feesController.\n\t * */\n\tfunction setFeesController(address newController) external onlyOwner whenNotPaused {\n\t\taddress oldController = feesController;\n\t\tfeesController = newController;\n\n\t\temit SetFeesController(msg.sender, oldController, newController);\n\t}\n\n\t/**\n\t * @notice The feesController calls this function to withdraw fees\n\t * from three sources: lending, trading and borrowing.\n\t *\n\t * @param token The address of the token instance.\n\t * @param receiver The address of the withdrawal recipient.\n\t *\n\t * @return The withdrawn amount.\n\t * */\n\tfunction withdrawFees(address token, address receiver) external whenNotPaused returns (uint256) {\n\t\trequire(msg.sender == feesController, \"unauthorized\");\n\n\t\tuint256 lendingBalance = lendingFeeTokensHeld[token];\n\t\tif (lendingBalance > 0) {\n\t\t\tlendingFeeTokensHeld[token] = 0;\n\t\t\tlendingFeeTokensPaid[token] = lendingFeeTokensPaid[token].add(lendingBalance);\n\t\t}\n\n\t\tuint256 tradingBalance = tradingFeeTokensHeld[token];\n\t\tif (tradingBalance > 0) {\n\t\t\ttradingFeeTokensHeld[token] = 0;\n\t\t\ttradingFeeTokensPaid[token] = tradingFeeTokensPaid[token].add(tradingBalance);\n\t\t}\n\n\t\tuint256 borrowingBalance = borrowingFeeTokensHeld[token];\n\t\tif (borrowingBalance > 0) {\n\t\t\tborrowingFeeTokensHeld[token] = 0;\n\t\t\tborrowingFeeTokensPaid[token] = borrowingFeeTokensPaid[token].add(borrowingBalance);\n\t\t}\n\n\t\tuint256 amount = lendingBalance.add(tradingBalance).add(borrowingBalance);\n\t\tif (amount == 0) {\n\t\t\treturn amount;\n\t\t}\n\n\t\tIERC20(token).safeTransfer(receiver, amount);\n\n\t\temit WithdrawFees(msg.sender, token, receiver, lendingBalance, tradingBalance, borrowingBalance);\n\n\t\treturn amount;\n\t}\n\n\t/**\n\t * @notice The feesController calls this function to withdraw fees\n\t * accrued from lending operations.\n\t *\n\t * @param token The address of the token instance.\n\t * @param receiver The address of the withdrawal recipient.\n\t * @param amount The amount of fees to get, ignored if greater than balance.\n\t *\n\t * @return Whether withdrawal was successful.\n\t * */\n\tfunction withdrawLendingFees(\n\t\taddress token,\n\t\taddress receiver,\n\t\tuint256 amount\n\t) external whenNotPaused returns (bool) {\n\t\trequire(msg.sender == feesController, \"unauthorized\");\n\n\t\tuint256 withdrawAmount = amount;\n\n\t\tuint256 balance = lendingFeeTokensHeld[token];\n\t\tif (withdrawAmount > balance) {\n\t\t\twithdrawAmount = balance;\n\t\t}\n\t\tif (withdrawAmount == 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlendingFeeTokensHeld[token] = balance.sub(withdrawAmount);\n\t\tlendingFeeTokensPaid[token] = lendingFeeTokensPaid[token].add(withdrawAmount);\n\n\t\tIERC20(token).safeTransfer(receiver, withdrawAmount);\n\n\t\temit WithdrawLendingFees(msg.sender, token, receiver, withdrawAmount);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * @notice The feesController calls this function to withdraw fees\n\t * accrued from trading operations.\n\t *\n\t * @param token The address of the token instance.\n\t * @param receiver The address of the withdrawal recipient.\n\t * @param amount The amount of fees to get, ignored if greater than balance.\n\t *\n\t * @return Whether withdrawal was successful.\n\t * */\n\tfunction withdrawTradingFees(\n\t\taddress token,\n\t\taddress receiver,\n\t\tuint256 amount\n\t) external whenNotPaused returns (bool) {\n\t\trequire(msg.sender == feesController, \"unauthorized\");\n\n\t\tuint256 withdrawAmount = amount;\n\n\t\tuint256 balance = tradingFeeTokensHeld[token];\n\t\tif (withdrawAmount > balance) {\n\t\t\twithdrawAmount = balance;\n\t\t}\n\t\tif (withdrawAmount == 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttradingFeeTokensHeld[token] = balance.sub(withdrawAmount);\n\t\ttradingFeeTokensPaid[token] = tradingFeeTokensPaid[token].add(withdrawAmount);\n\n\t\tIERC20(token).safeTransfer(receiver, withdrawAmount);\n\n\t\temit WithdrawTradingFees(msg.sender, token, receiver, withdrawAmount);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * @notice The feesController calls this function to withdraw fees\n\t * accrued from borrowing operations.\n\t *\n\t * @param token The address of the token instance.\n\t * @param receiver The address of the withdrawal recipient.\n\t * @param amount The amount of fees to get, ignored if greater than balance.\n\t *\n\t * @return Whether withdrawal was successful.\n\t * */\n\tfunction withdrawBorrowingFees(\n\t\taddress token,\n\t\taddress receiver,\n\t\tuint256 amount\n\t) external whenNotPaused returns (bool) {\n\t\trequire(msg.sender == feesController, \"unauthorized\");\n\n\t\tuint256 withdrawAmount = amount;\n\n\t\tuint256 balance = borrowingFeeTokensHeld[token];\n\t\tif (withdrawAmount > balance) {\n\t\t\twithdrawAmount = balance;\n\t\t}\n\t\tif (withdrawAmount == 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tborrowingFeeTokensHeld[token] = balance.sub(withdrawAmount);\n\t\tborrowingFeeTokensPaid[token] = borrowingFeeTokensPaid[token].add(withdrawAmount);\n\n\t\tIERC20(token).safeTransfer(receiver, withdrawAmount);\n\n\t\temit WithdrawBorrowingFees(msg.sender, token, receiver, withdrawAmount);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * @notice The owner calls this function to withdraw protocol tokens.\n\t *\n\t * @dev Wrapper for ProtocolTokenUser::_withdrawProtocolToken internal function.\n\t *\n\t * @param receiver The address of the withdrawal recipient.\n\t * @param amount The amount of tokens to get.\n\t *\n\t * @return The protocol token address.\n\t * @return Withdrawal success (true/false).\n\t * */\n\tfunction withdrawProtocolToken(address receiver, uint256 amount) external onlyOwner whenNotPaused returns (address, bool) {\n\t\treturn _withdrawProtocolToken(receiver, amount);\n\t}\n\n\t/**\n\t * @notice The owner calls this function to deposit protocol tokens.\n\t *\n\t * @param amount The tokens of fees to send.\n\t * */\n\tfunction depositProtocolToken(uint256 amount) external onlyOwner whenNotPaused {\n\t\t/// @dev Update local balance\n\t\tprotocolTokenHeld = protocolTokenHeld.add(amount);\n\n\t\t/// @dev Send the tokens\n\t\tIERC20(protocolTokenAddress).safeTransferFrom(msg.sender, address(this), amount);\n\t}\n\n\t/**\n\t * @notice Get a list of loan pools.\n\t *\n\t * @param start The offset.\n\t * @param count The limit.\n\t *\n\t * @return The array of loan pools.\n\t * */\n\tfunction getLoanPoolsList(uint256 start, uint256 count) external view returns (bytes32[] memory) {\n\t\treturn loanPoolsSet.enumerate(start, count);\n\t}\n\n\t/**\n\t * @notice Check whether a token is a pool token.\n\t *\n\t * @dev By querying its underlying token.\n\t *\n\t * @param loanPool The token address to check.\n\t * */\n\tfunction isLoanPool(address loanPool) external view returns (bool) {\n\t\treturn loanPoolToUnderlying[loanPool] != address(0);\n\t}\n\n\t/**\n\t * @notice Set the contract registry address of the SovrynSwap network.\n\t *\n\t * @param registryAddress the address of the registry contract.\n\t * */\n\tfunction setSovrynSwapContractRegistryAddress(address registryAddress) external onlyOwner whenNotPaused {\n\t\trequire(Address.isContract(registryAddress), \"registryAddress not a contract\");\n\n\t\taddress oldSovrynSwapContractRegistryAddress = sovrynSwapContractRegistryAddress;\n\t\tsovrynSwapContractRegistryAddress = registryAddress;\n\n\t\temit SetSovrynSwapContractRegistryAddress(msg.sender, oldSovrynSwapContractRegistryAddress, sovrynSwapContractRegistryAddress);\n\t}\n\n\t/**\n\t * @notice Set the wrBTC contract address.\n\t *\n\t * @param wrbtcTokenAddress The address of the wrBTC contract.\n\t * */\n\tfunction setWrbtcToken(address wrbtcTokenAddress) external onlyOwner whenNotPaused {\n\t\trequire(Address.isContract(wrbtcTokenAddress), \"wrbtcTokenAddress not a contract\");\n\n\t\taddress oldwrbtcToken = address(wrbtcToken);\n\t\twrbtcToken = IWrbtcERC20(wrbtcTokenAddress);\n\n\t\temit SetWrbtcToken(msg.sender, oldwrbtcToken, wrbtcTokenAddress);\n\t}\n\n\t/**\n\t * @notice Set the protocol token contract address.\n\t *\n\t * @param _protocolTokenAddress The address of the protocol token contract.\n\t * */\n\tfunction setProtocolTokenAddress(address _protocolTokenAddress) external onlyOwner whenNotPaused {\n\t\trequire(Address.isContract(_protocolTokenAddress), \"_protocolTokenAddress not a contract\");\n\n\t\taddress oldProtocolTokenAddress = protocolTokenAddress;\n\t\tprotocolTokenAddress = _protocolTokenAddress;\n\n\t\temit SetProtocolTokenAddress(msg.sender, oldProtocolTokenAddress, _protocolTokenAddress);\n\t}\n\n\t/**\n\t * @notice Set rollover base reward. It should be denominated in wrBTC.\n\t *\n\t * @param baseRewardValue The base reward.\n\t * */\n\tfunction setRolloverBaseReward(uint256 baseRewardValue) external onlyOwner whenNotPaused {\n\t\trequire(baseRewardValue > 0, \"Base reward is zero\");\n\n\t\tuint256 oldValue = rolloverBaseReward;\n\t\trolloverBaseReward = baseRewardValue;\n\n\t\temit SetRolloverBaseReward(msg.sender, oldValue, rolloverBaseReward);\n\t}\n\n\t/**\n\t * @notice Set the fee rebate percent.\n\t *\n\t * @param rebatePercent The fee rebate percent.\n\t * */\n\tfunction setRebatePercent(uint256 rebatePercent) external onlyOwner whenNotPaused {\n\t\trequire(rebatePercent <= 10**20, \"Fee rebate is too high\");\n\n\t\tuint256 oldRebatePercent = feeRebatePercent;\n\t\tfeeRebatePercent = rebatePercent;\n\n\t\temit SetRebatePercent(msg.sender, oldRebatePercent, rebatePercent);\n\t}\n\n\t/**\n\t * @notice Set the special fee rebate percent for specific pair\n\t *\n\t * @param specialRebatesPercent The new special fee rebate percent.\n\t * */\n\tfunction setSpecialRebates(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\tuint256 specialRebatesPercent\n\t) external onlyOwner whenNotPaused {\n\t\t// Set max special rebates to 1000%\n\t\trequire(specialRebatesPercent <= 1000e18, \"Special fee rebate is too high\");\n\n\t\tuint256 oldSpecialRebatesPercent = specialRebates[sourceToken][destToken];\n\t\tspecialRebates[sourceToken][destToken] = specialRebatesPercent;\n\n\t\temit SetSpecialRebates(msg.sender, sourceToken, destToken, oldSpecialRebatesPercent, specialRebatesPercent);\n\t}\n\n\t/**\n\t * @notice Get a rebate percent of specific pairs.\n\t *\n\t * @param sourceTokenAddress The source of pairs.\n\t * @param destTokenAddress The dest of pairs.\n\t *\n\t * @return The percent rebates of the pairs.\n\t * */\n\tfunction getSpecialRebates(address sourceTokenAddress, address destTokenAddress) external view returns (uint256 specialRebatesPercent) {\n\t\treturn specialRebates[sourceTokenAddress][destTokenAddress];\n\t}\n\n\tfunction getProtocolAddress() external view returns (address) {\n\t\treturn protocolAddress;\n\t}\n\n\tfunction getSovTokenAddress() external view returns (address) {\n\t\treturn sovTokenAddress;\n\t}\n\n\tfunction getLockedSOVAddress() external view returns (address) {\n\t\treturn lockedSOVAddress;\n\t}\n\n\tfunction getFeeRebatePercent() external view returns (uint256) {\n\t\treturn feeRebatePercent;\n\t}\n\n\tfunction togglePaused(bool paused) external onlyOwner {\n\t\trequire(paused != pause, \"Can't toggle\");\n\t\tpause = paused;\n\t\temit TogglePaused(msg.sender, !paused, paused);\n\t}\n\n\tfunction isProtocolPaused() external view returns (bool) {\n\t\treturn pause;\n\t}\n\n\tfunction getSwapExternalFeePercent() external view returns (uint256) {\n\t\treturn swapExtrernalFeePercent;\n\t}\n\n\t/**\n\t * @notice Get the basis point of trading rebate rewards.\n\t *\n\t * @return The basis point value.\n\t */\n\tfunction getTradingRebateRewardsBasisPoint() external view returns (uint256) {\n\t\treturn tradingRebateRewardsBasisPoint;\n\t}\n}\n"
      },
      "contracts/events/ProtocolSettingsEvents.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"./ModulesCommonEvents.sol\";\n\n/**\n * @title The Protocol Settings Events contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the events for protocol settings operations.\n * */\ncontract ProtocolSettingsEvents is ModulesCommonEvents {\n\tevent SetPriceFeedContract(address indexed sender, address oldValue, address newValue);\n\n\tevent SetSwapsImplContract(address indexed sender, address oldValue, address newValue);\n\n\tevent SetLoanPool(address indexed sender, address indexed loanPool, address indexed underlying);\n\n\tevent SetSupportedTokens(address indexed sender, address indexed token, bool isActive);\n\n\tevent SetLendingFeePercent(address indexed sender, uint256 oldValue, uint256 newValue);\n\n\tevent SetTradingFeePercent(address indexed sender, uint256 oldValue, uint256 newValue);\n\n\tevent SetBorrowingFeePercent(address indexed sender, uint256 oldValue, uint256 newValue);\n\n\tevent SetSwapExternalFeePercent(address indexed sender, uint256 oldValue, uint256 newValue);\n\n\tevent SetAffiliateFeePercent(address indexed sender, uint256 oldValue, uint256 newValue);\n\n\tevent SetAffiliateTradingTokenFeePercent(address indexed sender, uint256 oldValue, uint256 newValue);\n\n\tevent SetLiquidationIncentivePercent(address indexed sender, uint256 oldValue, uint256 newValue);\n\n\tevent SetMaxSwapSize(address indexed sender, uint256 oldValue, uint256 newValue);\n\n\tevent SetFeesController(address indexed sender, address indexed oldController, address indexed newController);\n\n\tevent SetWrbtcToken(address indexed sender, address indexed oldWethToken, address indexed newWethToken);\n\n\tevent SetSovrynSwapContractRegistryAddress(\n\t\taddress indexed sender,\n\t\taddress indexed oldSovrynSwapContractRegistryAddress,\n\t\taddress indexed newSovrynSwapContractRegistryAddress\n\t);\n\n\tevent SetProtocolTokenAddress(address indexed sender, address indexed oldProtocolToken, address indexed newProtocolToken);\n\n\tevent WithdrawFees(\n\t\taddress indexed sender,\n\t\taddress indexed token,\n\t\taddress indexed receiver,\n\t\tuint256 lendingAmount,\n\t\tuint256 tradingAmount,\n\t\tuint256 borrowingAmount\n\t);\n\n\tevent WithdrawLendingFees(address indexed sender, address indexed token, address indexed receiver, uint256 amount);\n\n\tevent WithdrawTradingFees(address indexed sender, address indexed token, address indexed receiver, uint256 amount);\n\n\tevent WithdrawBorrowingFees(address indexed sender, address indexed token, address indexed receiver, uint256 amount);\n\n\tevent SetRolloverBaseReward(address indexed sender, uint256 oldValue, uint256 newValue);\n\n\tevent SetRebatePercent(address indexed sender, uint256 oldRebatePercent, uint256 newRebatePercent);\n\n\tevent SetSpecialRebates(\n\t\taddress indexed sender,\n\t\taddress indexed sourceToken,\n\t\taddress indexed destToken,\n\t\tuint256 oldSpecialRebatesPercent,\n\t\tuint256 newSpecialRebatesPercent\n\t);\n\n\tevent SetProtocolAddress(address indexed sender, address indexed oldProtocol, address indexed newProtocol);\n\n\tevent SetMinReferralsToPayoutAffiliates(address indexed sender, uint256 oldMinReferrals, uint256 newMinReferrals);\n\n\tevent SetSOVTokenAddress(address indexed sender, address indexed oldTokenAddress, address indexed newTokenAddress);\n\n\tevent SetLockedSOVAddress(address indexed sender, address indexed oldAddress, address indexed newAddress);\n\n\tevent TogglePaused(address indexed sender, bool indexed oldFlag, bool indexed newFlag);\n\n\tevent SetTradingRebateRewardsBasisPoint(address indexed sender, uint256 oldBasisPoint, uint256 newBasisPoint);\n}\n"
      },
      "contracts/mixins/ProtocolTokenUser.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"../core/State.sol\";\nimport \"../openzeppelin/SafeERC20.sol\";\n\n/**\n * @title The Protocol Token User contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized margin\n * trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract implements functionality to withdraw protocol tokens.\n * */\ncontract ProtocolTokenUser is State {\n\tusing SafeERC20 for IERC20;\n\n\t/**\n\t * @notice Internal function to withdraw an amount of protocol tokens from this contract.\n\t *\n\t * @param receiver The address of the recipient.\n\t * @param amount The amount of tokens to withdraw.\n\t *\n\t * @return The protocol token address.\n\t * @return Withdrawal success (true/false).\n\t * */\n\tfunction _withdrawProtocolToken(address receiver, uint256 amount) internal returns (address, bool) {\n\t\tuint256 withdrawAmount = amount;\n\n\t\tuint256 tokenBalance = protocolTokenHeld;\n\t\tif (withdrawAmount > tokenBalance) {\n\t\t\twithdrawAmount = tokenBalance;\n\t\t}\n\t\tif (withdrawAmount == 0) {\n\t\t\treturn (protocolTokenAddress, false);\n\t\t}\n\n\t\tprotocolTokenHeld = tokenBalance.sub(withdrawAmount);\n\n\t\tIERC20(protocolTokenAddress).safeTransfer(receiver, withdrawAmount);\n\n\t\treturn (protocolTokenAddress, true);\n\t}\n}\n"
      },
      "contracts/mixins/ModuleCommonFunctionalities.sol": {
        "content": "pragma solidity 0.5.17;\n\nimport \"../core/State.sol\";\n\ncontract ModuleCommonFunctionalities is State {\n\tmodifier whenNotPaused() {\n\t\trequire(!pause, \"Paused\");\n\t\t_;\n\t}\n}\n"
      },
      "contracts/events/ModulesCommonEvents.sol": {
        "content": "pragma solidity 0.5.17;\n\n/**\n * @title The common events for all modules\n * @notice This contract contains the events which will be used by all modules\n **/\n\ncontract ModulesCommonEvents {\n\tevent ProtocolModuleContractReplaced(\n\t\taddress indexed prevModuleContractAddress,\n\t\taddress indexed newModuleContractAddress,\n\t\tbytes32 indexed module\n\t);\n}\n"
      },
      "contracts/modules/SwapsExternal.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../core/State.sol\";\nimport \"../mixins/VaultController.sol\";\nimport \"../swaps/SwapsUser.sol\";\nimport \"../swaps/ISwapsImpl.sol\";\nimport \"../mixins/ModuleCommonFunctionalities.sol\";\n\n/**\n * @title Swaps External contract.\n *\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains functions to calculate and execute swaps.\n * */\ncontract SwapsExternal is VaultController, SwapsUser, ModuleCommonFunctionalities {\n\t/**\n\t * @notice Empty public constructor.\n\t * */\n\tconstructor() public {}\n\n\t/**\n\t * @notice Fallback function is to react to receiving value (rBTC).\n\t * */\n\tfunction() external {\n\t\trevert(\"fallback not allowed\");\n\t}\n\n\t/**\n\t * @notice Set function selectors on target contract.\n\t *\n\t * @param target The address of the target contract.\n\t * */\n\tfunction initialize(address target) external onlyOwner {\n\t\taddress prevModuleContractAddress = logicTargets[this.swapExternal.selector];\n\t\t_setTarget(this.swapExternal.selector, target);\n\t\t_setTarget(this.getSwapExpectedReturn.selector, target);\n\t\t_setTarget(this.checkPriceDivergence.selector, target);\n\t\temit ProtocolModuleContractReplaced(prevModuleContractAddress, target, \"SwapsExternal\");\n\t}\n\n\t/**\n\t * @notice Perform a swap w/ tokens or rBTC as source currency.\n\t *\n\t * @dev External wrapper that calls SwapsUser::_swapsCall\n\t * after turning potential incoming rBTC into wrBTC tokens.\n\t *\n\t * @param sourceToken The address of the source token instance.\n\t * @param destToken The address of the destiny token instance.\n\t * @param receiver The address of the recipient account.\n\t * @param returnToSender The address of the sender account.\n\t * @param sourceTokenAmount The amount of source tokens.\n\t * @param requiredDestTokenAmount The amount of required destiny tokens.\n\t * @param swapData Additional swap data (not in use yet).\n\t *\n\t * @return destTokenAmountReceived The amount of destiny tokens sent.\n\t * @return sourceTokenAmountUsed The amount of source tokens spent.\n\t * */\n\tfunction swapExternal(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\taddress receiver,\n\t\taddress returnToSender,\n\t\tuint256 sourceTokenAmount,\n\t\tuint256 requiredDestTokenAmount,\n\t\tuint256 minReturn,\n\t\tbytes memory swapData\n\t) public payable nonReentrant whenNotPaused returns (uint256 destTokenAmountReceived, uint256 sourceTokenAmountUsed) {\n\t\trequire(sourceTokenAmount != 0, \"sourceTokenAmount == 0\");\n\t\tcheckPriceDivergence(sourceToken, destToken, sourceTokenAmount, minReturn);\n\n\t\t/// @dev Get payed value, be it rBTC or tokenized.\n\t\tif (msg.value != 0) {\n\t\t\tif (sourceToken == address(0)) {\n\t\t\t\tsourceToken = address(wrbtcToken);\n\t\t\t}\n\t\t\trequire(sourceToken == address(wrbtcToken), \"sourceToken mismatch\");\n\t\t\trequire(msg.value == sourceTokenAmount, \"sourceTokenAmount mismatch\");\n\n\t\t\t/// @dev Update wrBTC balance for this contract.\n\t\t\twrbtcToken.deposit.value(sourceTokenAmount)();\n\t\t} else {\n\t\t\t/// @dev Transfer tokens from sender to this contract.\n\t\t\tIERC20 sourceTokenContract = IERC20(sourceToken);\n\n\t\t\tuint256 balanceBefore = sourceTokenContract.balanceOf(address(this));\n\n\t\t\tIERC20(sourceToken).safeTransferFrom(msg.sender, address(this), sourceTokenAmount);\n\n\t\t\t// explicit balance check so that we can support deflationary tokens\n\t\t\tsourceTokenAmount = sourceTokenContract.balanceOf(address(this)).sub(balanceBefore);\n\t\t}\n\n\t\t/// @dev Perform the swap w/ tokens.\n\t\t(destTokenAmountReceived, sourceTokenAmountUsed) = _swapsCall(\n\t\t\t[\n\t\t\t\tsourceToken,\n\t\t\t\tdestToken,\n\t\t\t\treceiver,\n\t\t\t\treturnToSender,\n\t\t\t\tmsg.sender /// user\n\t\t\t],\n\t\t\t[\n\t\t\t\tsourceTokenAmount, /// minSourceTokenAmount\n\t\t\t\tsourceTokenAmount, /// maxSourceTokenAmount\n\t\t\t\trequiredDestTokenAmount\n\t\t\t],\n\t\t\t0, /// loanId (not tied to a specific loan)\n\t\t\tfalse, /// bypassFee\n\t\t\tswapData,\n\t\t\ttrue // the flag for swapExternal (so that it will use the swapExternalFeePercent)\n\t\t);\n\n\t\temit ExternalSwap(\n\t\t\tmsg.sender, /// user\n\t\t\tsourceToken,\n\t\t\tdestToken,\n\t\t\tsourceTokenAmountUsed,\n\t\t\tdestTokenAmountReceived\n\t\t);\n\t}\n\n\t/**\n\t * @notice Get the swap expected return value.\n\t *\n\t * @dev External wrapper that calls SwapsUser::_swapsExpectedReturn\n\t *\n\t * @param sourceToken The address of the source token instance.\n\t * @param destToken The address of the destiny token instance.\n\t * @param sourceTokenAmount The amount of source tokens.\n\t *\n\t * @return The expected return value.\n\t * */\n\tfunction getSwapExpectedReturn(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\tuint256 sourceTokenAmount\n\t) external view returns (uint256) {\n\t\treturn _swapsExpectedReturn(sourceToken, destToken, sourceTokenAmount);\n\t}\n\n\t/**\n\t * @notice Check the slippage based on the swapExpectedReturn.\n\t *\n\t * @param sourceToken The address of the source token instance.\n\t * @param destToken The address of the destiny token instance.\n\t * @param sourceTokenAmount The amount of source tokens.\n\t * @param minReturn The amount (max slippage) that will be compared to the swapsExpectedReturn.\n\t *\n\t */\n\tfunction checkPriceDivergence(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\tuint256 sourceTokenAmount,\n\t\tuint256 minReturn\n\t) public view {\n\t\tuint256 destTokenAmount = _swapsExpectedReturn(sourceToken, destToken, sourceTokenAmount);\n\t\trequire(destTokenAmount >= minReturn, \"destTokenAmountReceived too low\");\n\t}\n}\n"
      },
      "contracts/mixins/VaultController.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"../openzeppelin/SafeERC20.sol\";\nimport \"../core/State.sol\";\n\n/**\n * @title The Vault Controller contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized margin\n * trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract implements functionality to deposit and withdraw wrBTC and\n * other tokens from the vault.\n * */\ncontract VaultController is State {\n\tusing SafeERC20 for IERC20;\n\n\tevent VaultDeposit(address indexed asset, address indexed from, uint256 amount);\n\tevent VaultWithdraw(address indexed asset, address indexed to, uint256 amount);\n\n\t/**\n\t * @notice Deposit wrBTC into the vault.\n\t *\n\t * @param from The address of the account paying the deposit.\n\t * @param value The amount of wrBTC tokens to transfer.\n\t */\n\tfunction vaultEtherDeposit(address from, uint256 value) internal {\n\t\tIWrbtcERC20 _wrbtcToken = wrbtcToken;\n\t\t_wrbtcToken.deposit.value(value)();\n\n\t\temit VaultDeposit(address(_wrbtcToken), from, value);\n\t}\n\n\t/**\n\t * @notice Withdraw wrBTC from the vault.\n\t *\n\t * @param to The address of the recipient.\n\t * @param value The amount of wrBTC tokens to transfer.\n\t */\n\tfunction vaultEtherWithdraw(address to, uint256 value) internal {\n\t\tif (value != 0) {\n\t\t\tIWrbtcERC20 _wrbtcToken = wrbtcToken;\n\t\t\tuint256 balance = address(this).balance;\n\t\t\tif (value > balance) {\n\t\t\t\t_wrbtcToken.withdraw(value - balance);\n\t\t\t}\n\t\t\tAddress.sendValue(to, value);\n\n\t\t\temit VaultWithdraw(address(_wrbtcToken), to, value);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Deposit tokens into the vault.\n\t *\n\t * @param token The address of the token instance.\n\t * @param from The address of the account paying the deposit.\n\t * @param value The amount of tokens to transfer.\n\t */\n\tfunction vaultDeposit(\n\t\taddress token,\n\t\taddress from,\n\t\tuint256 value\n\t) internal {\n\t\tif (value != 0) {\n\t\t\tIERC20(token).safeTransferFrom(from, address(this), value);\n\n\t\t\temit VaultDeposit(token, from, value);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Withdraw tokens from the vault.\n\t *\n\t * @param token The address of the token instance.\n\t * @param to The address of the recipient.\n\t * @param value The amount of tokens to transfer.\n\t */\n\tfunction vaultWithdraw(\n\t\taddress token,\n\t\taddress to,\n\t\tuint256 value\n\t) internal {\n\t\tif (value != 0) {\n\t\t\tIERC20(token).safeTransfer(to, value);\n\n\t\t\temit VaultWithdraw(token, to, value);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Transfer tokens from an account into another one.\n\t *\n\t * @param token The address of the token instance.\n\t * @param from The address of the account paying.\n\t * @param to The address of the recipient.\n\t * @param value The amount of tokens to transfer.\n\t */\n\tfunction vaultTransfer(\n\t\taddress token,\n\t\taddress from,\n\t\taddress to,\n\t\tuint256 value\n\t) internal {\n\t\tif (value != 0) {\n\t\t\tif (from == address(this)) {\n\t\t\t\tIERC20(token).safeTransfer(to, value);\n\t\t\t} else {\n\t\t\t\tIERC20(token).safeTransferFrom(from, to, value);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Approve an allowance of tokens to be spent by an account.\n\t *\n\t * @param token The address of the token instance.\n\t * @param to The address of the spender.\n\t * @param value The amount of tokens to allow.\n\t */\n\tfunction vaultApprove(\n\t\taddress token,\n\t\taddress to,\n\t\tuint256 value\n\t) internal {\n\t\tif (value != 0 && IERC20(token).allowance(address(this), to) != 0) {\n\t\t\tIERC20(token).safeApprove(to, 0);\n\t\t}\n\t\tIERC20(token).safeApprove(to, value);\n\t}\n}\n"
      },
      "contracts/swaps/SwapsUser.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC <https://bzx.network/>. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"../core/State.sol\";\nimport \"../feeds/IPriceFeeds.sol\";\nimport \"../events/SwapsEvents.sol\";\nimport \"../mixins/FeesHelper.sol\";\nimport \"./ISwapsImpl.sol\";\n\n/**\n * @title Perform token swaps for loans and trades.\n * */\ncontract SwapsUser is State, SwapsEvents, FeesHelper {\n\t/**\n\t * @notice Internal loan swap.\n\t *\n\t * @param loanId The ID of the loan.\n\t * @param sourceToken The address of the source tokens.\n\t * @param destToken The address of destiny tokens.\n\t * @param user The user address.\n\t * @param minSourceTokenAmount The minimum amount of source tokens to swap.\n\t * @param maxSourceTokenAmount The maximum amount of source tokens to swap.\n\t * @param requiredDestTokenAmount The required amount of destination tokens.\n\t * @param bypassFee To bypass or not the fee.\n\t * @param loanDataBytes The payload for the call. These loan DataBytes are\n\t *   additional loan data (not in use for token swaps).\n\t *\n\t * @return destTokenAmountReceived\n\t * @return sourceTokenAmountUsed\n\t * @return sourceToDestSwapRate\n\t * */\n\tfunction _loanSwap(\n\t\tbytes32 loanId,\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\taddress user,\n\t\tuint256 minSourceTokenAmount,\n\t\tuint256 maxSourceTokenAmount,\n\t\tuint256 requiredDestTokenAmount,\n\t\tbool bypassFee,\n\t\tbytes memory loanDataBytes\n\t)\n\t\tinternal\n\t\treturns (\n\t\t\tuint256 destTokenAmountReceived,\n\t\t\tuint256 sourceTokenAmountUsed,\n\t\t\tuint256 sourceToDestSwapRate\n\t\t)\n\t{\n\t\t(destTokenAmountReceived, sourceTokenAmountUsed) = _swapsCall(\n\t\t\t[\n\t\t\t\tsourceToken,\n\t\t\t\tdestToken,\n\t\t\t\taddress(this), // receiver\n\t\t\t\taddress(this), // returnToSender\n\t\t\t\tuser\n\t\t\t],\n\t\t\t[minSourceTokenAmount, maxSourceTokenAmount, requiredDestTokenAmount],\n\t\t\tloanId,\n\t\t\tbypassFee,\n\t\t\tloanDataBytes,\n\t\t\tfalse // swap external flag, set to false so that it will use the tradingFeePercent\n\t\t);\n\n\t\t/// Will revert if swap size too large.\n\t\t_checkSwapSize(sourceToken, sourceTokenAmountUsed);\n\n\t\t/// Will revert if disagreement found.\n\t\tsourceToDestSwapRate = IPriceFeeds(priceFeeds).checkPriceDisagreement(\n\t\t\tsourceToken,\n\t\t\tdestToken,\n\t\t\tsourceTokenAmountUsed,\n\t\t\tdestTokenAmountReceived,\n\t\t\tmaxDisagreement\n\t\t);\n\n\t\temit LoanSwap(loanId, sourceToken, destToken, user, sourceTokenAmountUsed, destTokenAmountReceived);\n\t}\n\n\t/**\n\t * @notice Calculate amount of source and destiny tokens.\n\t *\n\t * @dev Wrapper for _swapsCall_internal function.\n\t *\n\t * @param addrs The array of addresses.\n\t * @param vals The array of values.\n\t * @param loanId The Id of the associated loan.\n\t * @param miscBool True/false to bypassFee.\n\t * @param loanDataBytes Additional loan data (not in use yet).\n\t *\n\t * @return destTokenAmountReceived The amount of destiny tokens received.\n\t * @return sourceTokenAmountUsed The amount of source tokens used.\n\t * */\n\tfunction _swapsCall(\n\t\taddress[5] memory addrs,\n\t\tuint256[3] memory vals,\n\t\tbytes32 loanId,\n\t\tbool miscBool, /// bypassFee\n\t\tbytes memory loanDataBytes,\n\t\tbool isSwapExternal\n\t) internal returns (uint256, uint256) {\n\t\t/// addrs[0]: sourceToken\n\t\t/// addrs[1]: destToken\n\t\t/// addrs[2]: receiver\n\t\t/// addrs[3]: returnToSender\n\t\t/// addrs[4]: user\n\t\t/// vals[0]:  minSourceTokenAmount\n\t\t/// vals[1]:  maxSourceTokenAmount\n\t\t/// vals[2]:  requiredDestTokenAmount\n\n\t\trequire(vals[0] != 0 || vals[1] != 0, \"min or max source token amount needs to be set\");\n\n\t\tif (vals[1] == 0) {\n\t\t\tvals[1] = vals[0];\n\t\t}\n\t\trequire(vals[0] <= vals[1], \"sourceAmount larger than max\");\n\n\t\tuint256 destTokenAmountReceived;\n\t\tuint256 sourceTokenAmountUsed;\n\n\t\tuint256 tradingFee;\n\t\tif (!miscBool) {\n\t\t\t/// bypassFee\n\t\t\tif (vals[2] == 0) {\n\t\t\t\t/// condition: vals[0] will always be used as sourceAmount\n\n\t\t\t\tif (isSwapExternal) {\n\t\t\t\t\ttradingFee = _getSwapExternalFee(vals[0]);\n\t\t\t\t} else {\n\t\t\t\t\ttradingFee = _getTradingFee(vals[0]);\n\t\t\t\t}\n\n\t\t\t\tif (tradingFee != 0) {\n\t\t\t\t\t_payTradingFee(\n\t\t\t\t\t\taddrs[4], /// user\n\t\t\t\t\t\tloanId,\n\t\t\t\t\t\taddrs[0], /// sourceToken (feeToken)\n\t\t\t\t\t\taddrs[1], /// pairToken (used to check if there is any special rebates or not) -- to pay fee reward\n\t\t\t\t\t\ttradingFee\n\t\t\t\t\t);\n\n\t\t\t\t\tvals[0] = vals[0].sub(tradingFee);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t/// Condition: unknown sourceAmount will be used.\n\n\t\t\t\tif (isSwapExternal) {\n\t\t\t\t\ttradingFee = _getSwapExternalFee(vals[2]);\n\t\t\t\t} else {\n\t\t\t\t\ttradingFee = _getTradingFee(vals[2]);\n\t\t\t\t}\n\n\t\t\t\tif (tradingFee != 0) {\n\t\t\t\t\tvals[2] = vals[2].add(tradingFee);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\trequire(loanDataBytes.length == 0, \"invalid state\");\n\n\t\t(destTokenAmountReceived, sourceTokenAmountUsed) = _swapsCall_internal(addrs, vals);\n\n\t\tif (vals[2] == 0) {\n\t\t\t/// There's no minimum destTokenAmount, but all of vals[0]\n\t\t\t/// (minSourceTokenAmount) must be spent.\n\t\t\trequire(sourceTokenAmountUsed == vals[0], \"swap too large to fill\");\n\n\t\t\tif (tradingFee != 0) {\n\t\t\t\tsourceTokenAmountUsed = sourceTokenAmountUsed.add(tradingFee);\n\t\t\t}\n\t\t} else {\n\t\t\t/// There's a minimum destTokenAmount required, but\n\t\t\t/// sourceTokenAmountUsed won't be greater\n\t\t\t/// than vals[1] (maxSourceTokenAmount)\n\t\t\trequire(sourceTokenAmountUsed <= vals[1], \"swap fill too large\");\n\t\t\trequire(destTokenAmountReceived >= vals[2], \"insufficient swap liquidity\");\n\n\t\t\tif (tradingFee != 0) {\n\t\t\t\t_payTradingFee(\n\t\t\t\t\taddrs[4], /// user\n\t\t\t\t\tloanId, /// loanId,\n\t\t\t\t\taddrs[1], /// destToken (feeToken)\n\t\t\t\t\taddrs[0], /// pairToken (used to check if there is any special rebates or not) -- to pay fee reward\n\t\t\t\t\ttradingFee\n\t\t\t\t);\n\n\t\t\t\tdestTokenAmountReceived = destTokenAmountReceived.sub(tradingFee);\n\t\t\t}\n\t\t}\n\n\t\treturn (destTokenAmountReceived, sourceTokenAmountUsed);\n\t}\n\n\t/**\n\t * @notice Calculate amount of source and destiny tokens.\n\t *\n\t * @dev Calls swapsImpl::internalSwap\n\t *\n\t * @param addrs The array of addresses.\n\t * @param vals The array of values.\n\t *\n\t * @return destTokenAmountReceived The amount of destiny tokens received.\n\t * @return sourceTokenAmountUsed The amount of source tokens used.\n\t * */\n\tfunction _swapsCall_internal(address[5] memory addrs, uint256[3] memory vals)\n\t\tinternal\n\t\treturns (uint256 destTokenAmountReceived, uint256 sourceTokenAmountUsed)\n\t{\n\t\tbytes memory data =\n\t\t\tabi.encodeWithSelector(\n\t\t\t\tISwapsImpl(swapsImpl).internalSwap.selector,\n\t\t\t\taddrs[0], /// sourceToken\n\t\t\t\taddrs[1], /// destToken\n\t\t\t\taddrs[2], /// receiverAddress\n\t\t\t\taddrs[3], /// returnToSenderAddress\n\t\t\t\tvals[0], /// minSourceTokenAmount\n\t\t\t\tvals[1], /// maxSourceTokenAmount\n\t\t\t\tvals[2] /// requiredDestTokenAmount\n\t\t\t);\n\n\t\tbool success;\n\t\t(success, data) = swapsImpl.delegatecall(data);\n\t\trequire(success, \"swap failed\");\n\n\t\tassembly {\n\t\t\tdestTokenAmountReceived := mload(add(data, 32))\n\t\t\tsourceTokenAmountUsed := mload(add(data, 64))\n\t\t}\n\t}\n\n\t/**\n\t * @notice Calculate expected amount of destiny tokens.\n\t *\n\t * @dev Calls swapsImpl::internalExpectedReturn\n\t *\n\t * @param sourceToken The address of the source tokens.\n\t * @param destToken The address of the destiny tokens.\n\t * @param sourceTokenAmount The amount of the source tokens.\n\t *\n\t * @param destTokenAmount The amount of destiny tokens.\n\t * */\n\tfunction _swapsExpectedReturn(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\tuint256 sourceTokenAmount\n\t) internal view returns (uint256 destTokenAmount) {\n\t\tdestTokenAmount = ISwapsImpl(swapsImpl).internalExpectedReturn(\n\t\t\tsourceToken,\n\t\t\tdestToken,\n\t\t\tsourceTokenAmount,\n\t\t\tsovrynSwapContractRegistryAddress\n\t\t);\n\t}\n\n\t/**\n\t * @notice Verify that the amount of tokens are under the swap limit.\n\t *\n\t * @dev Calls priceFeeds::amountInEth\n\t *\n\t * @param tokenAddress The address of the token to calculate price.\n\t * @param amount The amount of tokens to calculate price.\n\t * */\n\tfunction _checkSwapSize(address tokenAddress, uint256 amount) internal view {\n\t\tuint256 _maxSwapSize = maxSwapSize;\n\t\tif (_maxSwapSize != 0) {\n\t\t\tuint256 amountInEth;\n\t\t\tif (tokenAddress == address(wrbtcToken)) {\n\t\t\t\tamountInEth = amount;\n\t\t\t} else {\n\t\t\t\tamountInEth = IPriceFeeds(priceFeeds).amountInEth(tokenAddress, amount);\n\t\t\t}\n\t\t\trequire(amountInEth <= _maxSwapSize, \"swap too large\");\n\t\t}\n\t}\n}\n"
      },
      "contracts/events/SwapsEvents.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"./ModulesCommonEvents.sol\";\n\n/**\n * @title The Swaps Events contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the events for swap operations.\n * */\ncontract SwapsEvents is ModulesCommonEvents {\n\tevent LoanSwap(\n\t\tbytes32 indexed loanId,\n\t\taddress indexed sourceToken,\n\t\taddress indexed destToken,\n\t\taddress borrower,\n\t\tuint256 sourceAmount,\n\t\tuint256 destAmount\n\t);\n\n\tevent ExternalSwap(\n\t\taddress indexed user,\n\t\taddress indexed sourceToken,\n\t\taddress indexed destToken,\n\t\tuint256 sourceAmount,\n\t\tuint256 destAmount\n\t);\n}\n"
      },
      "contracts/mixins/FeesHelper.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"../core/State.sol\";\nimport \"../openzeppelin/SafeERC20.sol\";\nimport \"../feeds/IPriceFeeds.sol\";\nimport \"../events/FeesEvents.sol\";\nimport \"../modules/interfaces/ProtocolAffiliatesInterface.sol\";\nimport \"../core/objects/LoanParamsStruct.sol\";\n\n/**\n * @title The Fees Helper contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized margin\n * trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract calculates and pays lending/borrow fees and rewards.\n * */\ncontract FeesHelper is State, FeesEvents {\n\tusing SafeERC20 for IERC20;\n\n\t/**\n\t * @notice Calculate trading fee.\n\t * @param feeTokenAmount The amount of tokens to trade.\n\t * @return The fee of the trade.\n\t * */\n\tfunction _getTradingFee(uint256 feeTokenAmount) internal view returns (uint256) {\n\t\treturn feeTokenAmount.mul(tradingFeePercent).divCeil(10**20);\n\t}\n\n\t/**\n\t * @notice Calculate swap external fee.\n\t * @param feeTokenAmount The amount of token to swap.\n\t * @return The fee of the swap.\n\t */\n\tfunction _getSwapExternalFee(uint256 feeTokenAmount) internal view returns (uint256) {\n\t\treturn feeTokenAmount.mul(swapExtrernalFeePercent).divCeil(10**20);\n\t}\n\n\t/*\n\t// p3.9 from bzx peckshield-audit-report-bZxV2-v1.0rc1.pdf\n\t// cannot be applied solely nor with LoanOpenings.sol as it drives to some other tests failure\n\tfunction _getTradingFee(uint256 feeTokenAmount) internal view returns (uint256) {\n\t\tuint256 collateralAmountRequired =\n\t\t\tfeeTokenAmount.mul(10**20).divCeil(\n\t\t\t\t10**20 - tradingFeePercent // never will overflow\n\t\t\t);\n\t\treturn collateralAmountRequired.sub(feeTokenAmount);\n\t}*/\n\n\t/**\n\t * @notice Calculate the loan origination fee.\n\t * @param feeTokenAmount The amount of tokens to borrow.\n\t * @return The fee of the loan.\n\t * */\n\tfunction _getBorrowingFee(uint256 feeTokenAmount) internal view returns (uint256) {\n\t\treturn feeTokenAmount.mul(borrowingFeePercent).divCeil(10**20);\n\t\t/*\n\t\t// p3.9 from bzx peckshield-audit-report-bZxV2-v1.0rc1.pdf\n\t\t// cannot be applied solely nor with LoanOpenings.sol as it drives to some other tests failure\n\t\tuint256 collateralAmountRequired =\n\t\t\tfeeTokenAmount.mul(10**20).divCeil(\n\t\t\t\t10**20 - borrowingFeePercent // never will overflow\n\t\t\t);\n\t\treturn collateralAmountRequired.sub(feeTokenAmount);*/\n\t}\n\n\t/**\n\t * @notice Settle the trading fee and pay the token reward to the affiliates referrer.\n\t *\n\t * @param referrer The affiliate referrer address to send the reward to.\n\t * @param trader The account that performs this trade.\n\t * @param feeToken The address of the token in which the trading fee is paid.\n\t * @param tradingFee The amount of tokens accrued as fees on the trading.\n\t *\n\t * @return affiliatesBonusSOVAmount the total SOV amount that is distributed to the referrer\n\t * @return affiliatesBonusTokenAmount the total Token Base on the trading fee pairs that is distributed to the referrer\n\t * */\n\tfunction _payTradingFeeToAffiliate(\n\t\taddress referrer,\n\t\taddress trader,\n\t\taddress feeToken,\n\t\tuint256 tradingFee\n\t) internal returns (uint256 affiliatesBonusSOVAmount, uint256 affiliatesBonusTokenAmount) {\n\t\t(affiliatesBonusSOVAmount, affiliatesBonusTokenAmount) = ProtocolAffiliatesInterface(protocolAddress)\n\t\t\t.payTradingFeeToAffiliatesReferrer(referrer, trader, feeToken, tradingFee);\n\t}\n\n\t/**\n\t * @notice Settle the trading fee and pay the token reward to the user.\n\t * @param user The address to send the reward to.\n\t * @param loanId The Id of the associated loan - used for logging only.\n\t * @param feeToken The address of the token in which the trading fee is paid.\n\t * @param tradingFee The amount of tokens accrued as fees on the trading.\n\t * */\n\tfunction _payTradingFee(\n\t\taddress user,\n\t\tbytes32 loanId,\n\t\taddress feeToken,\n\t\taddress feeTokenPair,\n\t\tuint256 tradingFee\n\t) internal {\n\t\tuint256 protocolTradingFee = tradingFee; /// Trading fee paid to protocol.\n\t\tif (tradingFee != 0) {\n\t\t\tif (affiliatesUserReferrer[user] != address(0)) {\n\t\t\t\t_payTradingFeeToAffiliate(affiliatesUserReferrer[user], user, feeToken, protocolTradingFee);\n\t\t\t\tprotocolTradingFee = (protocolTradingFee.sub(protocolTradingFee.mul(affiliateFeePercent).div(10**20))).sub(\n\t\t\t\t\tprotocolTradingFee.mul(affiliateTradingTokenFeePercent).div(10**20)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t/// Increase the storage variable keeping track of the accumulated fees.\n\t\t\ttradingFeeTokensHeld[feeToken] = tradingFeeTokensHeld[feeToken].add(protocolTradingFee);\n\n\t\t\temit PayTradingFee(user, feeToken, loanId, protocolTradingFee);\n\n\t\t\t/// Pay the token reward to the user.\n\t\t\t_payFeeReward(user, loanId, feeToken, feeTokenPair, tradingFee);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Settle the borrowing fee and pay the token reward to the user.\n\t * @param user The address to send the reward to.\n\t * @param loanId The Id of the associated loan - used for logging only.\n\t * @param feeToken The address of the token in which the borrowig fee is paid.\n\t * @param borrowingFee The height of the fee.\n\t * */\n\tfunction _payBorrowingFee(\n\t\taddress user,\n\t\tbytes32 loanId,\n\t\taddress feeToken,\n\t\taddress feeTokenPair,\n\t\tuint256 borrowingFee\n\t) internal {\n\t\tif (borrowingFee != 0) {\n\t\t\t/// Increase the storage variable keeping track of the accumulated fees.\n\t\t\tborrowingFeeTokensHeld[feeToken] = borrowingFeeTokensHeld[feeToken].add(borrowingFee);\n\n\t\t\temit PayBorrowingFee(user, feeToken, loanId, borrowingFee);\n\n\t\t\t/// Pay the token reward to the user.\n\t\t\t_payFeeReward(user, loanId, feeToken, feeTokenPair, borrowingFee);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Settle the lending fee (based on the interest). Pay no token reward to the user.\n\t * @param user The address to send the reward to.\n\t * @param feeToken The address of the token in which the lending fee is paid.\n\t * @param lendingFee The height of the fee.\n\t * */\n\tfunction _payLendingFee(\n\t\taddress user,\n\t\taddress feeToken,\n\t\tuint256 lendingFee\n\t) internal {\n\t\tif (lendingFee != 0) {\n\t\t\t/// Increase the storage variable keeping track of the accumulated fees.\n\t\t\tlendingFeeTokensHeld[feeToken] = lendingFeeTokensHeld[feeToken].add(lendingFee);\n\n\t\t\temit PayLendingFee(user, feeToken, lendingFee);\n\n\t\t\t//// NOTE: Lenders do not receive a fee reward ////\n\t\t}\n\t}\n\n\t/// Settle and pay borrowers based on the fees generated by their interest payments.\n\tfunction _settleFeeRewardForInterestExpense(\n\t\tLoanInterest storage loanInterestLocal,\n\t\tbytes32 loanId,\n\t\taddress feeToken,\n\t\taddress feeTokenPair,\n\t\taddress user,\n\t\tuint256 interestTime\n\t) internal {\n\t\t/// This represents the fee generated by a borrower's interest payment.\n\t\tuint256 interestExpenseFee =\n\t\t\tinterestTime.sub(loanInterestLocal.updatedTimestamp).mul(loanInterestLocal.owedPerDay).mul(lendingFeePercent).div(\n\t\t\t\t1 days * 10**20\n\t\t\t);\n\n\t\tloanInterestLocal.updatedTimestamp = interestTime;\n\n\t\tif (interestExpenseFee != 0) {\n\t\t\t_payFeeReward(user, loanId, feeToken, feeTokenPair, interestExpenseFee);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Pay the potocolToken reward to user. The reward is worth 50% of the trading/borrowing fee.\n\t * @param user The address to send the reward to.\n\t * @param loanId The Id of the associeated loan - used for logging only.\n\t * @param feeToken The address of the token in which the trading/borrowing fee was paid.\n\t * @param feeAmount The height of the fee.\n\t * */\n\tfunction _payFeeReward(\n\t\taddress user,\n\t\tbytes32 loanId,\n\t\taddress feeToken,\n\t\taddress feeTokenPair,\n\t\tuint256 feeAmount\n\t) internal {\n\t\tuint256 rewardAmount;\n\t\tuint256 _feeRebatePercent = feeRebatePercent;\n\t\taddress _priceFeeds = priceFeeds;\n\n\t\tif (specialRebates[feeToken][feeTokenPair] > 0) {\n\t\t\t_feeRebatePercent = specialRebates[feeToken][feeTokenPair];\n\t\t}\n\n\t\t/// Note: this should be refactored.\n\t\t/// Calculate the reward amount, querying the price feed.\n\t\t(bool success, bytes memory data) =\n\t\t\t_priceFeeds.staticcall(\n\t\t\t\tabi.encodeWithSelector(\n\t\t\t\t\tIPriceFeeds(_priceFeeds).queryReturn.selector,\n\t\t\t\t\tfeeToken,\n\t\t\t\t\tsovTokenAddress, /// Price rewards using BZRX price rather than vesting token price.\n\t\t\t\t\tfeeAmount.mul(_feeRebatePercent).div(10**20)\n\t\t\t\t)\n\t\t\t);\n\t\t// solhint-disable-next-line no-inline-assembly\n\t\tassembly {\n\t\t\tif eq(success, 1) {\n\t\t\t\trewardAmount := mload(add(data, 32))\n\t\t\t}\n\t\t}\n\n\t\tif (rewardAmount != 0) {\n\t\t\tIERC20(sovTokenAddress).approve(lockedSOVAddress, rewardAmount);\n\n\t\t\t(bool success, ) =\n\t\t\t\tlockedSOVAddress.call(\n\t\t\t\t\tabi.encodeWithSignature(\"deposit(address,uint256,uint256)\", user, rewardAmount, tradingRebateRewardsBasisPoint)\n\t\t\t\t);\n\n\t\t\tif (success) {\n\t\t\t\tprotocolTokenPaid = protocolTokenPaid.add(rewardAmount);\n\n\t\t\t\temit EarnReward(user, sovTokenAddress, loanId, _feeRebatePercent, rewardAmount, tradingRebateRewardsBasisPoint);\n\t\t\t} else {\n\t\t\t\temit EarnRewardFail(user, sovTokenAddress, loanId, _feeRebatePercent, rewardAmount, tradingRebateRewardsBasisPoint);\n\t\t\t}\n\t\t}\n\t}\n}\n"
      },
      "contracts/events/FeesEvents.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\n/**\n * @title The Fees Events contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the events for fee payments.\n * */\ncontract FeesEvents {\n\tevent PayLendingFee(address indexed payer, address indexed token, uint256 amount);\n\n\tevent PayTradingFee(address indexed payer, address indexed token, bytes32 indexed loanId, uint256 amount);\n\n\tevent PayBorrowingFee(address indexed payer, address indexed token, bytes32 indexed loanId, uint256 amount);\n\n\tevent EarnReward(\n\t\taddress indexed receiver,\n\t\taddress indexed token,\n\t\tbytes32 indexed loanId,\n\t\tuint256 feeRebatePercent,\n\t\tuint256 amount,\n\t\tuint256 basisPoint\n\t);\n\n\tevent EarnRewardFail(\n\t\taddress indexed receiver,\n\t\taddress indexed token,\n\t\tbytes32 indexed loanId,\n\t\tuint256 feeRebatePercent,\n\t\tuint256 amount,\n\t\tuint256 basisPoint\n\t);\n}\n"
      },
      "contracts/modules/interfaces/ProtocolAffiliatesInterface.sol": {
        "content": "/**\n * Copyright 2020, Denis Savelev. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\ninterface ProtocolAffiliatesInterface {\n\tfunction setAffiliatesReferrer(address user, address referrer) external;\n\n\tfunction setUserNotFirstTradeFlag(address user_) external;\n\n\tfunction getUserNotFirstTradeFlag(address user_) external returns (bool);\n\n\tfunction payTradingFeeToAffiliatesReferrer(\n\t\taddress affiliate,\n\t\taddress trader,\n\t\taddress token,\n\t\tuint256 amount\n\t) external returns (uint256 affiliatesBonusSOVAmount, uint256 affiliatesBonusTokenAmount);\n}\n"
      },
      "contracts/modules/LoanOpenings.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../core/State.sol\";\nimport \"../events/LoanOpeningsEvents.sol\";\nimport \"../mixins/VaultController.sol\";\nimport \"../mixins/InterestUser.sol\";\nimport \"../swaps/SwapsUser.sol\";\nimport \"../mixins/ModuleCommonFunctionalities.sol\";\n\n/**\n * @title Loan Openings contract.\n *\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains functions to borrow and trade.\n * */\ncontract LoanOpenings is LoanOpeningsEvents, VaultController, InterestUser, SwapsUser, ModuleCommonFunctionalities {\n\tconstructor() public {}\n\n\t/**\n\t * @notice Fallback function is to react to receiving value (rBTC).\n\t * */\n\tfunction() external {\n\t\trevert(\"fallback not allowed\");\n\t}\n\n\t/**\n\t * @notice Set function selectors on target contract.\n\t *\n\t * @param target The address of the target contract.\n\t * */\n\tfunction initialize(address target) external onlyOwner {\n\t\taddress prevModuleContractAddress = logicTargets[this.borrowOrTradeFromPool.selector];\n\t\t_setTarget(this.borrowOrTradeFromPool.selector, target);\n\t\t_setTarget(this.setDelegatedManager.selector, target);\n\t\t_setTarget(this.getEstimatedMarginExposure.selector, target);\n\t\t_setTarget(this.getRequiredCollateral.selector, target);\n\t\t_setTarget(this.getBorrowAmount.selector, target);\n\t\temit ProtocolModuleContractReplaced(prevModuleContractAddress, target, \"LoanOpenings\");\n\t}\n\n\t/**\n\t * @notice Borrow or trade from pool.\n\t *\n\t * @dev Note: Only callable by loan pools (iTokens).\n\t * Wrapper to _borrowOrTrade internal function.\n\t *\n\t * @param loanParamsId The ID of the loan parameters.\n\t * @param loanId The ID of the loan. If 0, start a new loan.\n\t * @param isTorqueLoan Whether the loan is a Torque loan.\n\t * @param initialMargin The initial amount of margin.\n\t * @param sentAddresses The addresses to send tokens: lender, borrower,\n\t *   receiver and manager:\n\t *     lender: must match loan if loanId provided.\n\t *     borrower: must match loan if loanId provided.\n\t *     receiver: receiver of funds (address(0) assumes borrower address).\n\t *     manager: delegated manager of loan unless address(0).\n\t * @param sentValues The values to send:\n\t *     newRate: New loan interest rate.\n\t *     newPrincipal: New loan size (borrowAmount + any borrowed interest).\n\t *     torqueInterest: New amount of interest to escrow for Torque loan (determines initial loan length).\n\t *     loanTokenReceived: Total loanToken deposit (amount not sent to borrower in the case of Torque loans).\n\t *     collateralTokenReceived: Total collateralToken deposit.\n\t * @param loanDataBytes The payload for the call. These loan DataBytes are\n\t *   additional loan data (not in use for token swaps).\n\t *\n\t * @return newPrincipal The new loan size.\n\t * @return newCollateral The new collateral amount.\n\t * */\n\tfunction borrowOrTradeFromPool(\n\t\tbytes32 loanParamsId,\n\t\tbytes32 loanId,\n\t\tbool isTorqueLoan,\n\t\tuint256 initialMargin,\n\t\taddress[4] calldata sentAddresses,\n\t\tuint256[5] calldata sentValues,\n\t\tbytes calldata loanDataBytes\n\t) external payable nonReentrant whenNotPaused returns (uint256 newPrincipal, uint256 newCollateral) {\n\t\trequire(msg.value == 0 || loanDataBytes.length != 0, \"loanDataBytes required with ether\");\n\n\t\t/// Only callable by loan pools.\n\t\trequire(loanPoolToUnderlying[msg.sender] != address(0), \"not authorized\");\n\n\t\tLoanParams memory loanParamsLocal = loanParams[loanParamsId];\n\t\trequire(loanParamsLocal.id != 0, \"loanParams not exists\");\n\n\t\t/// Get required collateral.\n\t\tuint256 collateralAmountRequired =\n\t\t\t_getRequiredCollateral(loanParamsLocal.loanToken, loanParamsLocal.collateralToken, sentValues[1], initialMargin, isTorqueLoan);\n\t\trequire(collateralAmountRequired != 0, \"collateral is 0\");\n\n\t\treturn\n\t\t\t_borrowOrTrade(\n\t\t\t\tloanParamsLocal,\n\t\t\t\tloanId,\n\t\t\t\tisTorqueLoan,\n\t\t\t\tcollateralAmountRequired,\n\t\t\t\tinitialMargin,\n\t\t\t\tsentAddresses,\n\t\t\t\tsentValues,\n\t\t\t\tloanDataBytes\n\t\t\t);\n\t}\n\n\t/**\n\t * @notice Set the delegated manager.\n\t *\n\t * @dev Wrapper for _setDelegatedManager internal function.\n\t *\n\t * @param loanId The ID of the loan. If 0, start a new loan.\n\t * @param delegated The address of the delegated manager.\n\t * @param toggle The flag true/false for the delegated manager.\n\t * */\n\tfunction setDelegatedManager(\n\t\tbytes32 loanId,\n\t\taddress delegated,\n\t\tbool toggle\n\t) external whenNotPaused {\n\t\trequire(loans[loanId].borrower == msg.sender, \"unauthorized\");\n\n\t\t_setDelegatedManager(loanId, msg.sender, delegated, toggle);\n\t}\n\n\t/**\n\t * @notice Get the estimated margin exposure.\n\t *\n\t * Margin is the money borrowed from a broker to purchase an investment\n\t * and is the difference between the total value of investment and the\n\t * loan amount. Margin trading refers to the practice of using borrowed\n\t * funds from a broker to trade a financial asset, which forms the\n\t * collateral for the loan from the broker.\n\t *\n\t * @param loanToken The loan token instance address.\n\t * @param collateralToken The collateral token instance address.\n\t * @param loanTokenSent The amount of loan tokens sent.\n\t * @param collateralTokenSent The amount of collateral tokens sent.\n\t * @param interestRate The interest rate. Percentage w/ 18 decimals.\n\t * @param newPrincipal The updated amount of principal (current debt).\n\t *\n\t * @return The margin exposure.\n\t * */\n\tfunction getEstimatedMarginExposure(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 loanTokenSent,\n\t\tuint256 collateralTokenSent,\n\t\tuint256 interestRate,\n\t\tuint256 newPrincipal\n\t) external view returns (uint256) {\n\t\tuint256 maxLoanTerm = 2419200; // 28 days\n\n\t\tuint256 owedPerDay = newPrincipal.mul(interestRate).div(365 * 10**20);\n\n\t\tuint256 interestAmountRequired = maxLoanTerm.mul(owedPerDay).div(86400);\n\n\t\tuint256 swapAmount = loanTokenSent.sub(interestAmountRequired);\n\t\tuint256 tradingFee = _getTradingFee(swapAmount);\n\t\tif (tradingFee != 0) {\n\t\t\tswapAmount = swapAmount.sub(tradingFee);\n\t\t}\n\n\t\tuint256 receivedAmount = _swapsExpectedReturn(loanToken, collateralToken, swapAmount);\n\t\tif (receivedAmount == 0) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\treturn collateralTokenSent.add(receivedAmount);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Get the required collateral.\n\t *\n\t * @dev Calls internal _getRequiredCollateral and add fees.\n\t *\n\t * @param loanToken The loan token instance address.\n\t * @param collateralToken The collateral token instance address.\n\t * @param newPrincipal The updated amount of principal (current debt).\n\t * @param marginAmount The amount of margin of the trade.\n\t * @param isTorqueLoan Whether the loan is a Torque loan.\n\t *\n\t * @return collateralAmountRequired The required collateral.\n\t * */\n\tfunction getRequiredCollateral(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 newPrincipal,\n\t\tuint256 marginAmount,\n\t\tbool isTorqueLoan\n\t) public view returns (uint256 collateralAmountRequired) {\n\t\tif (marginAmount != 0) {\n\t\t\tcollateralAmountRequired = _getRequiredCollateral(loanToken, collateralToken, newPrincipal, marginAmount, isTorqueLoan);\n\n\t\t\t// p3.9 from bzx peckshield-audit-report-bZxV2-v1.0rc1.pdf\n\t\t\t// cannot be applied solely as it drives to some other tests failure\n\t\t\t/*\n\t\t\tuint256 feePercent = isTorqueLoan ? borrowingFeePercent : tradingFeePercent;\n\t\t\tif (collateralAmountRequired != 0 && feePercent != 0) {\n\t\t\t\tcollateralAmountRequired = collateralAmountRequired.mul(10**20).divCeil(\n\t\t\t\t\t10**20 - feePercent // never will overflow\n\t\t\t\t);\n\t\t\t}*/\n\n\t\t\tuint256 fee = isTorqueLoan ? _getBorrowingFee(collateralAmountRequired) : _getTradingFee(collateralAmountRequired);\n\t\t\tif (fee != 0) {\n\t\t\t\tcollateralAmountRequired = collateralAmountRequired.add(fee);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Get the borrow amount of a trade loan.\n\t *\n\t * @dev Basically borrowAmount = collateral / marginAmount\n\t *\n\t * Collateral is something that helps secure a loan. When you borrow money,\n\t * you agree that your lender can take something and sell it to get their\n\t * money back if you fail to repay the loan. That's the collateral.\n\t *\n\t * @param loanToken The loan token instance address.\n\t * @param collateralToken The collateral token instance address.\n\t * @param collateralTokenAmount The amount of collateral.\n\t * @param marginAmount The amount of margin of the trade.\n\t * @param isTorqueLoan Whether the loan is a Torque loan.\n\t *\n\t * @return borrowAmount The borrow amount.\n\t * */\n\tfunction getBorrowAmount(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 collateralTokenAmount,\n\t\tuint256 marginAmount,\n\t\tbool isTorqueLoan\n\t) public view returns (uint256 borrowAmount) {\n\t\tif (marginAmount != 0) {\n\t\t\tif (isTorqueLoan) {\n\t\t\t\tmarginAmount = marginAmount.add(10**20); /// Adjust for over-collateralized loan.\n\t\t\t}\n\t\t\tuint256 collateral = collateralTokenAmount;\n\t\t\tuint256 fee = isTorqueLoan ? _getBorrowingFee(collateral) : _getTradingFee(collateral);\n\t\t\tif (fee != 0) {\n\t\t\t\tcollateral = collateral.sub(fee);\n\t\t\t}\n\t\t\tif (loanToken == collateralToken) {\n\t\t\t\tborrowAmount = collateral.mul(10**20).div(marginAmount);\n\t\t\t} else {\n\t\t\t\t(uint256 sourceToDestRate, uint256 sourceToDestPrecision) = IPriceFeeds(priceFeeds).queryRate(collateralToken, loanToken);\n\t\t\t\tif (sourceToDestPrecision != 0) {\n\t\t\t\t\tborrowAmount = collateral.mul(10**20).mul(sourceToDestRate).div(marginAmount).div(sourceToDestPrecision);\n\t\t\t\t}\n\t\t\t}\n\t\t\t/*\n\t\t\t// p3.9 from bzx peckshield-audit-report-bZxV2-v1.0rc1.pdf\n\t\t\t// cannot be applied solely as it drives to some other tests failure\n\t\t\tuint256 feePercent = isTorqueLoan ? borrowingFeePercent : tradingFeePercent;\n\t\t\tif (borrowAmount != 0 && feePercent != 0) {\n\t\t\t\tborrowAmount = borrowAmount\n\t\t\t\t\t.mul(\n\t\t\t\t\t10**20 - feePercent // never will overflow\n\t\t\t\t)\n\t\t\t\t\t.divCeil(10**20);\n\t\t\t}*/\n\t\t}\n\t}\n\n\t/**\n\t * @notice Borrow or trade.\n\t *\n\t * @param loanParamsLocal The loan parameters.\n\t * @param loanId The ID of the loan. If 0, start a new loan.\n\t * @param isTorqueLoan Whether the loan is a Torque loan.\n\t * @param collateralAmountRequired The required amount of collateral.\n\t * @param initialMargin The initial amount of margin.\n\t * @param sentAddresses The addresses to send tokens: lender, borrower,\n\t *   receiver and manager:\n\t *     lender: must match loan if loanId provided.\n\t *     borrower: must match loan if loanId provided.\n\t *     receiver: receiver of funds (address(0) assumes borrower address).\n\t *     manager: delegated manager of loan unless address(0).\n\t * @param sentValues The values to send:\n\t *     newRate: New loan interest rate.\n\t *     newPrincipal: New loan size (borrowAmount + any borrowed interest).\n\t *     torqueInterest: New amount of interest to escrow for Torque loan (determines initial loan length).\n\t *     loanTokenReceived: Total loanToken deposit (amount not sent to borrower in the case of Torque loans).\n\t *     collateralTokenReceived: Total collateralToken deposit.\n\t * @param loanDataBytes The payload for the call. These loan DataBytes are\n\t *   additional loan data (not in use for token swaps).\n\t *\n\t * @return The new loan size.\n\t * @return The new collateral amount.\n\t * */\n\tfunction _borrowOrTrade(\n\t\tLoanParams memory loanParamsLocal,\n\t\tbytes32 loanId,\n\t\tbool isTorqueLoan,\n\t\tuint256 collateralAmountRequired,\n\t\tuint256 initialMargin,\n\t\taddress[4] memory sentAddresses,\n\t\tuint256[5] memory sentValues,\n\t\tbytes memory loanDataBytes\n\t) internal returns (uint256, uint256) {\n\t\trequire(loanParamsLocal.collateralToken != loanParamsLocal.loanToken, \"collateral/loan match\");\n\t\trequire(initialMargin >= loanParamsLocal.minInitialMargin, \"initialMargin too low\");\n\n\t\t/// maxLoanTerm == 0 indicates a Torque loan and requires that torqueInterest != 0\n\t\trequire(\n\t\t\tloanParamsLocal.maxLoanTerm != 0 || sentValues[2] != 0, /// torqueInterest\n\t\t\t\"invalid interest\"\n\t\t);\n\n\t\t/// Initialize loan.\n\t\tLoan storage loanLocal = loans[_initializeLoan(loanParamsLocal, loanId, initialMargin, sentAddresses, sentValues)];\n\n\t\t// Get required interest.\n\t\tuint256 amount =\n\t\t\t_initializeInterest(\n\t\t\t\tloanParamsLocal,\n\t\t\t\tloanLocal,\n\t\t\t\tsentValues[0], /// newRate\n\t\t\t\tsentValues[1], /// newPrincipal,\n\t\t\t\tsentValues[2] /// torqueInterest\n\t\t\t);\n\n\t\t/// substract out interest from usable loanToken sent.\n\t\tsentValues[3] = sentValues[3].sub(amount);\n\n\t\tif (isTorqueLoan) {\n\t\t\trequire(sentValues[3] == 0, \"surplus loan token\");\n\n\t\t\tuint256 borrowingFee = _getBorrowingFee(sentValues[4]);\n\t\t\t// need to temp into local state to avoid\n\t\t\taddress _collateralToken = loanParamsLocal.collateralToken;\n\t\t\taddress _loanToken = loanParamsLocal.loanToken;\n\t\t\tif (borrowingFee != 0) {\n\t\t\t\t_payBorrowingFee(\n\t\t\t\t\tsentAddresses[1], /// borrower\n\t\t\t\t\tloanLocal.id,\n\t\t\t\t\t_collateralToken, /// fee token\n\t\t\t\t\t_loanToken, /// pairToken (used to check if there is any special rebates or not) -- to pay fee reward\n\t\t\t\t\tborrowingFee\n\t\t\t\t);\n\n\t\t\t\tsentValues[4] = sentValues[4] /// collateralTokenReceived\n\t\t\t\t\t.sub(borrowingFee);\n\t\t\t}\n\t\t} else {\n\t\t\t/// Update collateral after trade.\n\t\t\t/// sentValues[3] is repurposed to hold loanToCollateralSwapRate to avoid stack too deep error.\n\t\t\tuint256 receivedAmount;\n\t\t\t(receivedAmount, , sentValues[3]) = _loanSwap(\n\t\t\t\tloanId,\n\t\t\t\tloanParamsLocal.loanToken,\n\t\t\t\tloanParamsLocal.collateralToken,\n\t\t\t\tsentAddresses[1], /// borrower\n\t\t\t\tsentValues[3], /// loanTokenUsable (minSourceTokenAmount)\n\t\t\t\t0, /// maxSourceTokenAmount (0 means minSourceTokenAmount)\n\t\t\t\t0, /// requiredDestTokenAmount (enforces that all of loanTokenUsable is swapped)\n\t\t\t\tfalse, /// bypassFee\n\t\t\t\tloanDataBytes\n\t\t\t);\n\t\t\tsentValues[4] = sentValues[4] /// collateralTokenReceived\n\t\t\t\t.add(receivedAmount);\n\t\t}\n\n\t\t/// Settle collateral.\n\t\trequire(\n\t\t\t_isCollateralSatisfied(loanParamsLocal, loanLocal, initialMargin, sentValues[4], collateralAmountRequired),\n\t\t\t\"collateral insufficient\"\n\t\t);\n\n\t\tloanLocal.collateral = loanLocal.collateral.add(sentValues[4]);\n\n\t\tif (isTorqueLoan) {\n\t\t\t/// reclaiming varaible -> interestDuration\n\t\t\tsentValues[2] = loanLocal.endTimestamp.sub(block.timestamp);\n\t\t} else {\n\t\t\t/// reclaiming varaible -> entryLeverage = 100 / initialMargin\n\t\t\tsentValues[2] = SafeMath.div(10**38, initialMargin);\n\t\t}\n\n\t\t_finalizeOpen(loanParamsLocal, loanLocal, sentAddresses, sentValues, isTorqueLoan);\n\n\t\treturn (sentValues[1], sentValues[4]); /// newPrincipal, newCollateral\n\t}\n\n\t/**\n\t * @notice Finalize an open loan.\n\t *\n\t * @dev Finalize it by updating local parameters of the loan.\n\t *\n\t * @param loanParamsLocal The loan parameters.\n\t * @param loanLocal The loan object.\n\t * @param sentAddresses The addresses to send tokens: lender, borrower,\n\t *   receiver and manager:\n\t *     lender: must match loan if loanId provided.\n\t *     borrower: must match loan if loanId provided.\n\t *     receiver: receiver of funds (address(0) assumes borrower address).\n\t *     manager: delegated manager of loan unless address(0).\n\t * @param sentValues The values to send:\n\t *     newRate: New loan interest rate.\n\t *     newPrincipal: New loan size (borrowAmount + any borrowed interest).\n\t *     torqueInterest: New amount of interest to escrow for Torque loan (determines initial loan length).\n\t *     loanTokenReceived: Total loanToken deposit (amount not sent to borrower in the case of Torque loans).\n\t *     collateralTokenReceived: Total collateralToken deposit.\n\t * @param isTorqueLoan Whether the loan is a Torque loan.\n\t * */\n\tfunction _finalizeOpen(\n\t\tLoanParams memory loanParamsLocal,\n\t\tLoan storage loanLocal,\n\t\taddress[4] memory sentAddresses,\n\t\tuint256[5] memory sentValues,\n\t\tbool isTorqueLoan\n\t) internal {\n\t\t/// @dev TODO: here the actual used rate and margin should go.\n\t\t(uint256 initialMargin, uint256 collateralToLoanRate) =\n\t\t\tIPriceFeeds(priceFeeds).getCurrentMargin(\n\t\t\t\tloanParamsLocal.loanToken,\n\t\t\t\tloanParamsLocal.collateralToken,\n\t\t\t\tloanLocal.principal,\n\t\t\t\tloanLocal.collateral\n\t\t\t);\n\t\trequire(initialMargin > loanParamsLocal.maintenanceMargin, \"unhealthy position\");\n\n\t\tif (loanLocal.startTimestamp == block.timestamp) {\n\t\t\tuint256 loanToCollateralPrecision =\n\t\t\t\tIPriceFeeds(priceFeeds).queryPrecision(loanParamsLocal.loanToken, loanParamsLocal.collateralToken);\n\t\t\tuint256 collateralToLoanPrecision =\n\t\t\t\tIPriceFeeds(priceFeeds).queryPrecision(loanParamsLocal.collateralToken, loanParamsLocal.loanToken);\n\t\t\tuint256 totalSwapRate = loanToCollateralPrecision.mul(collateralToLoanPrecision);\n\t\t\tloanLocal.startRate = isTorqueLoan ? collateralToLoanRate : totalSwapRate.div(sentValues[3]);\n\t\t}\n\n\t\t_emitOpeningEvents(loanParamsLocal, loanLocal, sentAddresses, sentValues, collateralToLoanRate, initialMargin, isTorqueLoan);\n\t}\n\n\t/**\n\t * @notice Emit the opening events.\n\t *\n\t * @param loanParamsLocal The loan parameters.\n\t * @param loanLocal The loan object.\n\t * @param sentAddresses The addresses to send tokens: lender, borrower,\n\t *   receiver and manager:\n\t *     lender: must match loan if loanId provided.\n\t *     borrower: must match loan if loanId provided.\n\t *     receiver: receiver of funds (address(0) assumes borrower address).\n\t *     manager: delegated manager of loan unless address(0).\n\t * @param sentValues The values to send:\n\t *     newRate: New loan interest rate.\n\t *     newPrincipal: New loan size (borrowAmount + any borrowed interest).\n\t *     torqueInterest: New amount of interest to escrow for Torque loan (determines initial loan length).\n\t *     loanTokenReceived: Total loanToken deposit (amount not sent to borrower in the case of Torque loans).\n\t *     collateralTokenReceived: Total collateralToken deposit.\n\t * @param collateralToLoanRate The exchange rate from collateral to loan\n\t *   tokens.\n\t * @param margin The amount of margin of the trade.\n\t * @param isTorqueLoan Whether the loan is a Torque loan.\n\t * */\n\tfunction _emitOpeningEvents(\n\t\tLoanParams memory loanParamsLocal,\n\t\tLoan memory loanLocal,\n\t\taddress[4] memory sentAddresses,\n\t\tuint256[5] memory sentValues,\n\t\tuint256 collateralToLoanRate,\n\t\tuint256 margin,\n\t\tbool isTorqueLoan\n\t) internal {\n\t\tif (isTorqueLoan) {\n\t\t\temit Borrow(\n\t\t\t\tsentAddresses[1], /// user (borrower)\n\t\t\t\tsentAddresses[0], /// lender\n\t\t\t\tloanLocal.id, /// loanId\n\t\t\t\tloanParamsLocal.loanToken, /// loanToken\n\t\t\t\tloanParamsLocal.collateralToken, /// collateralToken\n\t\t\t\tsentValues[1], /// newPrincipal\n\t\t\t\tsentValues[4], /// newCollateral\n\t\t\t\tsentValues[0], /// interestRate\n\t\t\t\tsentValues[2], /// interestDuration\n\t\t\t\tcollateralToLoanRate, /// collateralToLoanRate,\n\t\t\t\tmargin /// currentMargin\n\t\t\t);\n\t\t} else {\n\t\t\t/// currentLeverage = 100 / currentMargin\n\t\t\tmargin = SafeMath.div(10**38, margin);\n\n\t\t\temit Trade(\n\t\t\t\tsentAddresses[1], /// user (trader)\n\t\t\t\tsentAddresses[0], /// lender\n\t\t\t\tloanLocal.id, /// loanId\n\t\t\t\tloanParamsLocal.collateralToken, /// collateralToken\n\t\t\t\tloanParamsLocal.loanToken, /// loanToken\n\t\t\t\tsentValues[4], /// positionSize\n\t\t\t\tsentValues[1], /// borrowedAmount\n\t\t\t\tsentValues[0], /// interestRate,\n\t\t\t\tloanLocal.endTimestamp, /// settlementDate\n\t\t\t\tsentValues[3], /// entryPrice (loanToCollateralSwapRate)\n\t\t\t\tsentValues[2], /// entryLeverage\n\t\t\t\tmargin /// currentLeverage\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Set the delegated manager.\n\t *\n\t * @param loanId The ID of the loan. If 0, start a new loan.\n\t * @param delegator The address of previous manager.\n\t * @param delegated The address of the delegated manager.\n\t * @param toggle The flag true/false for the delegated manager.\n\t * */\n\tfunction _setDelegatedManager(\n\t\tbytes32 loanId,\n\t\taddress delegator,\n\t\taddress delegated,\n\t\tbool toggle\n\t) internal {\n\t\tdelegatedManagers[loanId][delegated] = toggle;\n\n\t\temit DelegatedManagerSet(loanId, delegator, delegated, toggle);\n\t}\n\n\t/**\n\t * @notice Calculate whether the collateral is satisfied.\n\t *\n\t * @dev Basically check collateral + drawdown >= 98% of required.\n\t *\n\t * @param loanParamsLocal The loan parameters.\n\t * @param loanLocal The loan object.\n\t * @param initialMargin The initial amount of margin.\n\t * @param newCollateral The amount of new collateral.\n\t * @param collateralAmountRequired The amount of required collateral.\n\t *\n\t * @return Whether the collateral is satisfied.\n\t * */\n\tfunction _isCollateralSatisfied(\n\t\tLoanParams memory loanParamsLocal,\n\t\tLoan memory loanLocal,\n\t\tuint256 initialMargin,\n\t\tuint256 newCollateral,\n\t\tuint256 collateralAmountRequired\n\t) internal view returns (bool) {\n\t\t/// Allow at most 2% under-collateralized.\n\t\tcollateralAmountRequired = collateralAmountRequired.mul(98 ether).div(100 ether);\n\n\t\tif (newCollateral < collateralAmountRequired) {\n\t\t\t/// Check that existing collateral is sufficient coverage.\n\t\t\tif (loanLocal.collateral != 0) {\n\t\t\t\tuint256 maxDrawdown =\n\t\t\t\t\tIPriceFeeds(priceFeeds).getMaxDrawdown(\n\t\t\t\t\t\tloanParamsLocal.loanToken,\n\t\t\t\t\t\tloanParamsLocal.collateralToken,\n\t\t\t\t\t\tloanLocal.principal,\n\t\t\t\t\t\tloanLocal.collateral,\n\t\t\t\t\t\tinitialMargin\n\t\t\t\t\t);\n\t\t\t\treturn newCollateral.add(maxDrawdown) >= collateralAmountRequired;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * @notice Initialize a loan.\n\t *\n\t * @param loanParamsLocal The loan parameters.\n\t * @param loanId The ID of the loan.\n\t * @param initialMargin The amount of margin of the trade.\n\t * @param sentAddresses The addresses to send tokens: lender, borrower,\n\t *   receiver and manager:\n\t *     lender: must match loan if loanId provided.\n\t *     borrower: must match loan if loanId provided.\n\t *     receiver: receiver of funds (address(0) assumes borrower address).\n\t *     manager: delegated manager of loan unless address(0).\n\t * @param sentValues The values to send:\n\t *     newRate: New loan interest rate.\n\t *     newPrincipal: New loan size (borrowAmount + any borrowed interest).\n\t *     torqueInterest: New amount of interest to escrow for Torque loan (determines initial loan length).\n\t *     loanTokenReceived: Total loanToken deposit (amount not sent to borrower in the case of Torque loans).\n\t *     collateralTokenReceived: Total collateralToken deposit.\n\t * @return The loanId.\n\t * */\n\tfunction _initializeLoan(\n\t\tLoanParams memory loanParamsLocal,\n\t\tbytes32 loanId,\n\t\tuint256 initialMargin,\n\t\taddress[4] memory sentAddresses,\n\t\tuint256[5] memory sentValues\n\t) internal returns (bytes32) {\n\t\trequire(loanParamsLocal.active, \"loanParams disabled\");\n\n\t\taddress lender = sentAddresses[0];\n\t\taddress borrower = sentAddresses[1];\n\t\taddress manager = sentAddresses[3];\n\t\tuint256 newPrincipal = sentValues[1];\n\n\t\tLoan memory loanLocal;\n\n\t\tif (loanId == 0) {\n\t\t\tborrowerNonce[borrower]++;\n\t\t\tloanId = keccak256(abi.encodePacked(loanParamsLocal.id, lender, borrower, borrowerNonce[borrower]));\n\t\t\trequire(loans[loanId].id == 0, \"loan exists\");\n\n\t\t\tloanLocal = Loan({\n\t\t\t\tid: loanId,\n\t\t\t\tloanParamsId: loanParamsLocal.id,\n\t\t\t\tpendingTradesId: 0,\n\t\t\t\tactive: true,\n\t\t\t\tprincipal: newPrincipal,\n\t\t\t\tcollateral: 0, /// calculated later\n\t\t\t\tstartTimestamp: block.timestamp,\n\t\t\t\tendTimestamp: 0, /// calculated later\n\t\t\t\tstartMargin: initialMargin,\n\t\t\t\tstartRate: 0, /// queried later\n\t\t\t\tborrower: borrower,\n\t\t\t\tlender: lender\n\t\t\t});\n\n\t\t\tactiveLoansSet.addBytes32(loanId);\n\t\t\tlenderLoanSets[lender].addBytes32(loanId);\n\t\t\tborrowerLoanSets[borrower].addBytes32(loanId);\n\t\t} else {\n\t\t\tloanLocal = loans[loanId];\n\t\t\trequire(loanLocal.active && block.timestamp < loanLocal.endTimestamp, \"loan has ended\");\n\t\t\trequire(loanLocal.borrower == borrower, \"borrower mismatch\");\n\t\t\trequire(loanLocal.lender == lender, \"lender mismatch\");\n\t\t\trequire(loanLocal.loanParamsId == loanParamsLocal.id, \"loanParams mismatch\");\n\n\t\t\tloanLocal.principal = loanLocal.principal.add(newPrincipal);\n\t\t}\n\n\t\tif (manager != address(0)) {\n\t\t\t_setDelegatedManager(loanId, borrower, manager, true);\n\t\t}\n\n\t\tloans[loanId] = loanLocal;\n\n\t\treturn loanId;\n\t}\n\n\t/**\n\t * @notice Initialize a loan interest.\n\t *\n\t * @dev A Torque loan is an indefinite-term loan.\n\t *\n\t * @param loanParamsLocal The loan parameters.\n\t * @param loanLocal The loan object.\n\t * @param newRate The new interest rate of the loan.\n\t * @param newPrincipal The new principal amount of the loan.\n\t * @param torqueInterest The interest rate of the Torque loan.\n\t *\n\t * @return interestAmountRequired The interest amount required.\n\t * */\n\tfunction _initializeInterest(\n\t\tLoanParams memory loanParamsLocal,\n\t\tLoan storage loanLocal,\n\t\tuint256 newRate,\n\t\tuint256 newPrincipal,\n\t\tuint256 torqueInterest /// ignored for fixed-term loans\n\t) internal returns (uint256 interestAmountRequired) {\n\t\t/// Pay outstanding interest to lender.\n\t\t_payInterest(loanLocal.lender, loanParamsLocal.loanToken);\n\n\t\tLoanInterest storage loanInterestLocal = loanInterest[loanLocal.id];\n\t\tLenderInterest storage lenderInterestLocal = lenderInterest[loanLocal.lender][loanParamsLocal.loanToken];\n\n\t\tuint256 maxLoanTerm = loanParamsLocal.maxLoanTerm;\n\n\t\t_settleFeeRewardForInterestExpense(\n\t\t\tloanInterestLocal,\n\t\t\tloanLocal.id,\n\t\t\tloanParamsLocal.loanToken, /// fee token\n\t\t\tloanParamsLocal.collateralToken, /// pairToken (used to check if there is any special rebates or not) -- to pay fee reward\n\t\t\tloanLocal.borrower,\n\t\t\tblock.timestamp\n\t\t);\n\n\t\tuint256 previousDepositRemaining;\n\t\tif (maxLoanTerm == 0 && loanLocal.endTimestamp != 0) {\n\t\t\tpreviousDepositRemaining = loanLocal\n\t\t\t\t.endTimestamp\n\t\t\t\t.sub(block.timestamp) /// block.timestamp < endTimestamp was confirmed earlier.\n\t\t\t\t.mul(loanInterestLocal.owedPerDay)\n\t\t\t\t.div(86400);\n\t\t}\n\n\t\tuint256 owedPerDay = newPrincipal.mul(newRate).div(365 * 10**20);\n\n\t\t/// Update stored owedPerDay\n\t\tloanInterestLocal.owedPerDay = loanInterestLocal.owedPerDay.add(owedPerDay);\n\t\tlenderInterestLocal.owedPerDay = lenderInterestLocal.owedPerDay.add(owedPerDay);\n\n\t\tif (maxLoanTerm == 0) {\n\t\t\t/// Indefinite-term (Torque) loan.\n\n\t\t\t/// torqueInterest != 0 was confirmed earlier.\n\t\t\tloanLocal.endTimestamp = torqueInterest.add(previousDepositRemaining).mul(86400).div(loanInterestLocal.owedPerDay).add(\n\t\t\t\tblock.timestamp\n\t\t\t);\n\n\t\t\tmaxLoanTerm = loanLocal.endTimestamp.sub(block.timestamp);\n\n\t\t\t/// Loan term has to at least be greater than one hour.\n\t\t\trequire(maxLoanTerm > 3600, \"loan too short\");\n\n\t\t\tinterestAmountRequired = torqueInterest;\n\t\t} else {\n\t\t\t/// Fixed-term loan.\n\n\t\t\tif (loanLocal.endTimestamp == 0) {\n\t\t\t\tloanLocal.endTimestamp = block.timestamp.add(maxLoanTerm);\n\t\t\t}\n\n\t\t\tinterestAmountRequired = loanLocal.endTimestamp.sub(block.timestamp).mul(owedPerDay).div(86400);\n\t\t}\n\n\t\tloanInterestLocal.depositTotal = loanInterestLocal.depositTotal.add(interestAmountRequired);\n\n\t\t/// Update remaining lender interest values.\n\t\tlenderInterestLocal.principalTotal = lenderInterestLocal.principalTotal.add(newPrincipal);\n\t\tlenderInterestLocal.owedTotal = lenderInterestLocal.owedTotal.add(interestAmountRequired);\n\t}\n\n\t/**\n\t * @notice Get the required collateral.\n\t *\n\t * @dev Basically collateral = newPrincipal * marginAmount\n\t *\n\t * @param loanToken The loan token instance address.\n\t * @param collateralToken The collateral token instance address.\n\t * @param newPrincipal The updated amount of principal (current debt).\n\t * @param marginAmount The amount of margin of the trade.\n\t * @param isTorqueLoan Whether the loan is a Torque loan.\n\t *\n\t * @return collateralTokenAmount The required collateral.\n\t * */\n\tfunction _getRequiredCollateral(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 newPrincipal,\n\t\tuint256 marginAmount,\n\t\tbool isTorqueLoan\n\t) internal view returns (uint256 collateralTokenAmount) {\n\t\tif (loanToken == collateralToken) {\n\t\t\tcollateralTokenAmount = newPrincipal.mul(marginAmount).div(10**20);\n\t\t} else {\n\t\t\t/// Using the price feed instead of the swap expected return\n\t\t\t/// because we need the rate in the inverse direction\n\t\t\t/// so the swap is probably farther off than the price feed.\n\t\t\t(uint256 sourceToDestRate, uint256 sourceToDestPrecision) = IPriceFeeds(priceFeeds).queryRate(collateralToken, loanToken);\n\t\t\tif (sourceToDestRate != 0) {\n\t\t\t\tcollateralTokenAmount = newPrincipal.mul(sourceToDestPrecision).div(sourceToDestRate).mul(marginAmount).div(10**20);\n\t\t\t\t/*TODO: review\n\t\t\t\tcollateralTokenAmount = newPrincipal.mul(sourceToDestPrecision).mul(marginAmount).div(sourceToDestRate).div(10**20);*/\n\t\t\t}\n\t\t}\n\t\t// ./tests/loan-token/TradingTestToken.test.js\n\t\tif (isTorqueLoan && collateralTokenAmount != 0) {\n\t\t\tcollateralTokenAmount = collateralTokenAmount.mul(10**20).div(marginAmount).add(collateralTokenAmount);\n\t\t}\n\t}\n}\n"
      },
      "contracts/events/LoanOpeningsEvents.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"./ModulesCommonEvents.sol\";\n\n/**\n * @title The Loan Openings Events contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the events for loan openings operations.\n * */\ncontract LoanOpeningsEvents is ModulesCommonEvents {\n\t/// topic0: 0x7bd8cbb7ba34b33004f3deda0fd36c92fc0360acbd97843360037b467a538f90\n\tevent Borrow(\n\t\taddress indexed user,\n\t\taddress indexed lender,\n\t\tbytes32 indexed loanId,\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 newPrincipal,\n\t\tuint256 newCollateral,\n\t\tuint256 interestRate,\n\t\tuint256 interestDuration,\n\t\tuint256 collateralToLoanRate,\n\t\tuint256 currentMargin\n\t);\n\n\t/// topic0: 0xf640c1cfe1a912a0b0152b5a542e5c2403142eed75b06cde526cee54b1580e5c\n\tevent Trade(\n\t\taddress indexed user,\n\t\taddress indexed lender,\n\t\tbytes32 indexed loanId,\n\t\taddress collateralToken,\n\t\taddress loanToken,\n\t\tuint256 positionSize,\n\t\tuint256 borrowedAmount,\n\t\tuint256 interestRate,\n\t\tuint256 settlementDate,\n\t\tuint256 entryPrice, /// one unit of collateralToken, denominated in loanToken\n\t\tuint256 entryLeverage,\n\t\tuint256 currentLeverage\n\t);\n\n\t/// topic0: 0x0eef4f90457a741c97d76fcf13fa231fefdcc7649bdb3cb49157c37111c98433\n\tevent DelegatedManagerSet(bytes32 indexed loanId, address indexed delegator, address indexed delegated, bool isActive);\n}\n"
      },
      "contracts/mixins/InterestUser.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"../openzeppelin/SafeERC20.sol\";\nimport \"../core/State.sol\";\nimport \"../mixins/VaultController.sol\";\nimport \"./FeesHelper.sol\";\n\n/**\n * @title The Interest User contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized margin\n * trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract pays loan interests.\n * */\ncontract InterestUser is VaultController, FeesHelper {\n\tusing SafeERC20 for IERC20;\n\n\t/// Triggered whenever interest is paid to lender.\n\tevent PayInterestTransfer(address indexed interestToken, address indexed lender, uint256 effectiveInterest);\n\n\t/**\n\t * @notice Internal function to pay interest of a loan.\n\t * @dev Calls _payInterestTransfer internal function to transfer tokens.\n\t * @param lender The account address of the lender.\n\t * @param interestToken The token address to pay interest with.\n\t * */\n\tfunction _payInterest(address lender, address interestToken) internal {\n\t\tLenderInterest storage lenderInterestLocal = lenderInterest[lender][interestToken];\n\n\t\tuint256 interestOwedNow = 0;\n\t\tif (lenderInterestLocal.owedPerDay != 0 && lenderInterestLocal.updatedTimestamp != 0) {\n\t\t\tinterestOwedNow = block.timestamp.sub(lenderInterestLocal.updatedTimestamp).mul(lenderInterestLocal.owedPerDay).div(1 days);\n\n\t\t\tlenderInterestLocal.updatedTimestamp = block.timestamp;\n\n\t\t\tif (interestOwedNow > lenderInterestLocal.owedTotal) interestOwedNow = lenderInterestLocal.owedTotal;\n\n\t\t\tif (interestOwedNow != 0) {\n\t\t\t\tlenderInterestLocal.paidTotal = lenderInterestLocal.paidTotal.add(interestOwedNow);\n\t\t\t\tlenderInterestLocal.owedTotal = lenderInterestLocal.owedTotal.sub(interestOwedNow);\n\n\t\t\t\t_payInterestTransfer(lender, interestToken, interestOwedNow);\n\t\t\t}\n\t\t} else {\n\t\t\tlenderInterestLocal.updatedTimestamp = block.timestamp;\n\t\t}\n\t}\n\n\t/**\n\t * @notice Internal function to transfer tokens for the interest of a loan.\n\t * @param lender The account address of the lender.\n\t * @param interestToken The token address to pay interest with.\n\t * @param interestOwedNow The amount of interest to pay.\n\t * */\n\tfunction _payInterestTransfer(\n\t\taddress lender,\n\t\taddress interestToken,\n\t\tuint256 interestOwedNow\n\t) internal {\n\t\tuint256 lendingFee = interestOwedNow.mul(lendingFeePercent).div(10**20);\n\t\t/// TODO: refactor: data incapsulation violation and DRY design principles\n\t\t/// uint256 lendingFee = interestOwedNow.mul(lendingFeePercent).divCeil(10**20); is better but produces errors in tests because of this\n\n\t\t_payLendingFee(lender, interestToken, lendingFee);\n\n\t\t/// Transfers the interest to the lender, less the interest fee.\n\t\tvaultWithdraw(interestToken, lender, interestOwedNow.sub(lendingFee));\n\n\t\t/// Event Log\n\t\temit PayInterestTransfer(interestToken, lender, interestOwedNow.sub(lendingFee));\n\t}\n}\n"
      },
      "contracts/modules/LoanMaintenance.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../core/State.sol\";\nimport \"../events/LoanOpeningsEvents.sol\";\nimport \"../events/LoanMaintenanceEvents.sol\";\nimport \"../mixins/VaultController.sol\";\nimport \"../mixins/InterestUser.sol\";\nimport \"../mixins/LiquidationHelper.sol\";\nimport \"../swaps/SwapsUser.sol\";\nimport \"../mixins/ModuleCommonFunctionalities.sol\";\n\n/**\n * @title Loan Maintenance contract.\n *\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains functions to query loan data and to modify its status\n * by withdrawing or depositing collateral.\n * */\ncontract LoanMaintenance is\n\tLoanOpeningsEvents,\n\tLoanMaintenanceEvents,\n\tVaultController,\n\tInterestUser,\n\tSwapsUser,\n\tLiquidationHelper,\n\tModuleCommonFunctionalities\n{\n\tstruct LoanReturnData {\n\t\tbytes32 loanId;\n\t\taddress loanToken;\n\t\taddress collateralToken;\n\t\tuint256 principal;\n\t\tuint256 collateral;\n\t\tuint256 interestOwedPerDay;\n\t\tuint256 interestDepositRemaining;\n\t\tuint256 startRate; /// collateralToLoanRate\n\t\tuint256 startMargin;\n\t\tuint256 maintenanceMargin;\n\t\tuint256 currentMargin;\n\t\tuint256 maxLoanTerm;\n\t\tuint256 endTimestamp;\n\t\tuint256 maxLiquidatable;\n\t\tuint256 maxSeizable;\n\t}\n\n\t/**\n\t * @notice Empty public constructor.\n\t * */\n\tconstructor() public {}\n\n\t/**\n\t * @notice Fallback function is to react to receiving value (rBTC).\n\t * */\n\tfunction() external {\n\t\trevert(\"fallback not allowed\");\n\t}\n\n\t/**\n\t * @notice Set initial values of proxy targets.\n\t *\n\t * @param target The address of the logic contract instance.\n\t * */\n\tfunction initialize(address target) external onlyOwner {\n\t\taddress prevModuleContractAddress = logicTargets[this.depositCollateral.selector];\n\t\t_setTarget(this.depositCollateral.selector, target);\n\t\t_setTarget(this.withdrawCollateral.selector, target);\n\t\t_setTarget(this.withdrawAccruedInterest.selector, target);\n\t\t_setTarget(this.extendLoanDuration.selector, target);\n\t\t_setTarget(this.reduceLoanDuration.selector, target);\n\t\t_setTarget(this.getLenderInterestData.selector, target);\n\t\t_setTarget(this.getLoanInterestData.selector, target);\n\t\t_setTarget(this.getUserLoans.selector, target);\n\t\t_setTarget(this.getLoan.selector, target);\n\t\t_setTarget(this.getActiveLoans.selector, target);\n\t\temit ProtocolModuleContractReplaced(prevModuleContractAddress, target, \"LoanMaintenance\");\n\t}\n\n\t/**\n\t * @notice Increase the margin of a position by depositing additional collateral.\n\t *\n\t * @param loanId A unique ID representing the loan.\n\t * @param depositAmount The amount to be deposited in collateral tokens.\n\t *\n\t * @return actualWithdrawAmount The amount withdrawn taking into account drawdowns.\n\t * */\n\tfunction depositCollateral(\n\t\tbytes32 loanId,\n\t\tuint256 depositAmount /// must match msg.value if ether is sent\n\t) external payable nonReentrant whenNotPaused {\n\t\trequire(depositAmount != 0, \"depositAmount is 0\");\n\t\tLoan storage loanLocal = loans[loanId];\n\t\tLoanParams storage loanParamsLocal = loanParams[loanLocal.loanParamsId];\n\n\t\trequire(loanLocal.active, \"loan is closed\");\n\t\trequire(msg.value == 0 || loanParamsLocal.collateralToken == address(wrbtcToken), \"wrong asset sent\");\n\n\t\tloanLocal.collateral = loanLocal.collateral.add(depositAmount);\n\n\t\tif (msg.value == 0) {\n\t\t\tvaultDeposit(loanParamsLocal.collateralToken, msg.sender, depositAmount);\n\t\t} else {\n\t\t\trequire(msg.value == depositAmount, \"ether deposit mismatch\");\n\t\t\tvaultEtherDeposit(msg.sender, msg.value);\n\t\t}\n\n\t\t(uint256 collateralToLoanRate, ) = IPriceFeeds(priceFeeds).queryRate(loanParamsLocal.collateralToken, loanParamsLocal.loanToken);\n\n\t\temit DepositCollateral(loanId, depositAmount, collateralToLoanRate);\n\t}\n\n\t/**\n\t * @notice Withdraw from the collateral. This reduces the margin of a position.\n\t *\n\t * @param loanId A unique ID representing the loan.\n\t * @param receiver The account getting the withdrawal.\n\t * @param withdrawAmount The amount to be withdrawn in collateral tokens.\n\t *\n\t * @return actualWithdrawAmount The amount withdrawn taking into account drawdowns.\n\t * */\n\tfunction withdrawCollateral(\n\t\tbytes32 loanId,\n\t\taddress receiver,\n\t\tuint256 withdrawAmount\n\t) external nonReentrant whenNotPaused returns (uint256 actualWithdrawAmount) {\n\t\trequire(withdrawAmount != 0, \"withdrawAmount is 0\");\n\t\tLoan storage loanLocal = loans[loanId];\n\t\tLoanParams storage loanParamsLocal = loanParams[loanLocal.loanParamsId];\n\n\t\trequire(loanLocal.active, \"loan is closed\");\n\t\trequire(msg.sender == loanLocal.borrower || delegatedManagers[loanLocal.id][msg.sender], \"unauthorized\");\n\n\t\tuint256 maxDrawdown =\n\t\t\tIPriceFeeds(priceFeeds).getMaxDrawdown(\n\t\t\t\tloanParamsLocal.loanToken,\n\t\t\t\tloanParamsLocal.collateralToken,\n\t\t\t\tloanLocal.principal,\n\t\t\t\tloanLocal.collateral,\n\t\t\t\tloanParamsLocal.maintenanceMargin\n\t\t\t);\n\n\t\tif (withdrawAmount > maxDrawdown) {\n\t\t\tactualWithdrawAmount = maxDrawdown;\n\t\t} else {\n\t\t\tactualWithdrawAmount = withdrawAmount;\n\t\t}\n\n\t\tloanLocal.collateral = loanLocal.collateral.sub(actualWithdrawAmount);\n\n\t\tif (loanParamsLocal.collateralToken == address(wrbtcToken)) {\n\t\t\tvaultEtherWithdraw(receiver, actualWithdrawAmount);\n\t\t} else {\n\t\t\tvaultWithdraw(loanParamsLocal.collateralToken, receiver, actualWithdrawAmount);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Withdraw accrued loan interest.\n\t *\n\t * @dev Wrapper for _payInterest internal function.\n\t *\n\t * @param loanToken The loan token address.\n\t * */\n\tfunction withdrawAccruedInterest(address loanToken) external whenNotPaused {\n\t\t/// Pay outstanding interest to lender.\n\t\t_payInterest(\n\t\t\tmsg.sender, /// Lender.\n\t\t\tloanToken\n\t\t);\n\t}\n\n\t/**\n\t * @notice Extend the loan duration by as much time as depositAmount can buy.\n\t *\n\t * @param loanId A unique ID representing the loan.\n\t * @param depositAmount The amount to be deposited in loan tokens. Used to pay the interest for the new duration.\n\t * @param useCollateral Whether pay interests w/ the collateral. If true, depositAmount of loan tokens\n\t *\t\t\t\t\t\twill be purchased with the collateral.\n\t * // param calldata The payload for the call. These loan DataBytes are additional loan data (not in use for token swaps).\n\t *\n\t * @return secondsExtended The amount of time in seconds the loan is extended.\n\t * */\n\tfunction extendLoanDuration(\n\t\tbytes32 loanId,\n\t\tuint256 depositAmount,\n\t\tbool useCollateral,\n\t\tbytes calldata /// loanDataBytes, for future use.\n\t) external payable nonReentrant whenNotPaused returns (uint256 secondsExtended) {\n\t\trequire(depositAmount != 0, \"depositAmount is 0\");\n\t\tLoan storage loanLocal = loans[loanId];\n\t\tLoanParams storage loanParamsLocal = loanParams[loanLocal.loanParamsId];\n\n\t\trequire(loanLocal.active, \"loan is closed\");\n\t\trequire(!useCollateral || msg.sender == loanLocal.borrower || delegatedManagers[loanLocal.id][msg.sender], \"unauthorized\");\n\t\trequire(loanParamsLocal.maxLoanTerm == 0, \"indefinite-term only\");\n\t\trequire(msg.value == 0 || (!useCollateral && loanParamsLocal.loanToken == address(wrbtcToken)), \"wrong asset sent\");\n\n\t\t/// Pay outstanding interest to lender.\n\t\t_payInterest(loanLocal.lender, loanParamsLocal.loanToken);\n\n\t\tLoanInterest storage loanInterestLocal = loanInterest[loanLocal.id];\n\n\t\t_settleFeeRewardForInterestExpense(\n\t\t\tloanInterestLocal,\n\t\t\tloanLocal.id,\n\t\t\tloanParamsLocal.loanToken, /// fee token\n\t\t\tloanParamsLocal.collateralToken, /// pairToken (used to check if there is any special rebates or not) -- to pay fee reward\n\t\t\tloanLocal.borrower,\n\t\t\tblock.timestamp\n\t\t);\n\n\t\t/// Handle back interest: calculates interest owned since the loan\n\t\t/// endtime passed but the loan remained open.\n\t\tuint256 backInterestOwed;\n\t\tif (block.timestamp > loanLocal.endTimestamp) {\n\t\t\tbackInterestOwed = block.timestamp.sub(loanLocal.endTimestamp);\n\t\t\tbackInterestOwed = backInterestOwed.mul(loanInterestLocal.owedPerDay);\n\t\t\tbackInterestOwed = backInterestOwed.div(86400);\n\n\t\t\trequire(depositAmount > backInterestOwed, \"deposit cannot cover back interest\");\n\t\t}\n\n\t\t/// Deposit interest.\n\t\tif (useCollateral) {\n\t\t\t_doCollateralSwap(loanLocal, loanParamsLocal, depositAmount);\n\t\t} else {\n\t\t\tif (msg.value == 0) {\n\t\t\t\tvaultDeposit(loanParamsLocal.loanToken, msg.sender, depositAmount);\n\t\t\t} else {\n\t\t\t\trequire(msg.value == depositAmount, \"ether deposit mismatch\");\n\t\t\t\tvaultEtherDeposit(msg.sender, msg.value);\n\t\t\t}\n\t\t}\n\n\t\tif (backInterestOwed != 0) {\n\t\t\tdepositAmount = depositAmount.sub(backInterestOwed);\n\n\t\t\t/// Pay out backInterestOwed\n\t\t\t_payInterestTransfer(loanLocal.lender, loanParamsLocal.loanToken, backInterestOwed);\n\t\t}\n\n\t\tsecondsExtended = depositAmount.mul(86400).div(loanInterestLocal.owedPerDay);\n\n\t\tloanLocal.endTimestamp = loanLocal.endTimestamp.add(secondsExtended);\n\n\t\trequire(loanLocal.endTimestamp > block.timestamp, \"loan too short\");\n\n\t\tuint256 maxDuration = loanLocal.endTimestamp.sub(block.timestamp);\n\n\t\t/// Loan term has to at least be greater than one hour.\n\t\trequire(maxDuration > 3600, \"loan too short\");\n\n\t\tloanInterestLocal.depositTotal = loanInterestLocal.depositTotal.add(depositAmount);\n\n\t\tlenderInterest[loanLocal.lender][loanParamsLocal.loanToken].owedTotal = lenderInterest[loanLocal.lender][loanParamsLocal.loanToken]\n\t\t\t.owedTotal\n\t\t\t.add(depositAmount);\n\t}\n\n\t/**\n\t * @notice Reduce the loan duration by withdrawing from the deposited interest.\n\t *\n\t * @param loanId A unique ID representing the loan.\n\t * @param receiver The account getting the withdrawal.\n\t * @param withdrawAmount The amount to be withdrawn in loan tokens.\n\t *\n\t * @return secondsReduced The amount of time in seconds the loan is reduced.\n\t * */\n\tfunction reduceLoanDuration(\n\t\tbytes32 loanId,\n\t\taddress receiver,\n\t\tuint256 withdrawAmount\n\t) external nonReentrant whenNotPaused returns (uint256 secondsReduced) {\n\t\trequire(withdrawAmount != 0, \"withdrawAmount is 0\");\n\t\tLoan storage loanLocal = loans[loanId];\n\t\tLoanParams storage loanParamsLocal = loanParams[loanLocal.loanParamsId];\n\n\t\trequire(loanLocal.active, \"loan is closed\");\n\t\trequire(msg.sender == loanLocal.borrower || delegatedManagers[loanLocal.id][msg.sender], \"unauthorized\");\n\t\trequire(loanParamsLocal.maxLoanTerm == 0, \"indefinite-term only\");\n\t\trequire(loanLocal.endTimestamp > block.timestamp, \"loan term has ended\");\n\n\t\t/// Pay outstanding interest to lender.\n\t\t_payInterest(loanLocal.lender, loanParamsLocal.loanToken);\n\n\t\tLoanInterest storage loanInterestLocal = loanInterest[loanLocal.id];\n\n\t\t_settleFeeRewardForInterestExpense(\n\t\t\tloanInterestLocal,\n\t\t\tloanLocal.id,\n\t\t\tloanParamsLocal.loanToken, /// fee token\n\t\t\tloanParamsLocal.collateralToken, /// pairToken (used to check if there is any special rebates or not) -- to pay fee reward\n\t\t\tloanLocal.borrower,\n\t\t\tblock.timestamp\n\t\t);\n\n\t\tuint256 interestDepositRemaining = loanLocal.endTimestamp.sub(block.timestamp).mul(loanInterestLocal.owedPerDay).div(86400);\n\t\trequire(withdrawAmount < interestDepositRemaining, \"withdraw amount too high\");\n\n\t\t/// Withdraw interest.\n\t\tif (loanParamsLocal.loanToken == address(wrbtcToken)) {\n\t\t\tvaultEtherWithdraw(receiver, withdrawAmount);\n\t\t} else {\n\t\t\tvaultWithdraw(loanParamsLocal.loanToken, receiver, withdrawAmount);\n\t\t}\n\n\t\tsecondsReduced = withdrawAmount.mul(86400).div(loanInterestLocal.owedPerDay);\n\n\t\trequire(loanLocal.endTimestamp > secondsReduced, \"loan too short\");\n\n\t\tloanLocal.endTimestamp = loanLocal.endTimestamp.sub(secondsReduced);\n\n\t\trequire(loanLocal.endTimestamp > block.timestamp, \"loan too short\");\n\n\t\tuint256 maxDuration = loanLocal.endTimestamp.sub(block.timestamp);\n\n\t\t/// Loan term has to at least be greater than one hour.\n\t\trequire(maxDuration > 3600, \"loan too short\");\n\n\t\tloanInterestLocal.depositTotal = loanInterestLocal.depositTotal.sub(withdrawAmount);\n\n\t\tlenderInterest[loanLocal.lender][loanParamsLocal.loanToken].owedTotal = lenderInterest[loanLocal.lender][loanParamsLocal.loanToken]\n\t\t\t.owedTotal\n\t\t\t.sub(withdrawAmount);\n\t}\n\n\t/**\n\t * @notice Get current lender interest data totals for all loans\n\t *   with a specific oracle and interest token.\n\t *\n\t * @param lender The lender address.\n\t * @param loanToken The loan token address.\n\t *\n\t * @return interestPaid The total amount of interest that has been paid to a lender so far.\n\t * @return interestPaidDate The date of the last interest pay out, or 0 if no interest has been withdrawn yet.\n\t * @return interestOwedPerDay The amount of interest the lender is earning per day.\n\t * @return interestUnPaid The total amount of interest the lender is owned and not yet withdrawn.\n\t * @return interestFeePercent The fee retained by the protocol before interest is paid to the lender.\n\t * @return principalTotal The total amount of outstanding principal the lender has loaned.\n\t * */\n\tfunction getLenderInterestData(address lender, address loanToken)\n\t\texternal\n\t\tview\n\t\treturns (\n\t\t\tuint256 interestPaid,\n\t\t\tuint256 interestPaidDate,\n\t\t\tuint256 interestOwedPerDay,\n\t\t\tuint256 interestUnPaid,\n\t\t\tuint256 interestFeePercent,\n\t\t\tuint256 principalTotal\n\t\t)\n\t{\n\t\tLenderInterest memory lenderInterestLocal = lenderInterest[lender][loanToken];\n\n\t\tinterestUnPaid = block.timestamp.sub(lenderInterestLocal.updatedTimestamp).mul(lenderInterestLocal.owedPerDay).div(86400);\n\t\tif (interestUnPaid > lenderInterestLocal.owedTotal) interestUnPaid = lenderInterestLocal.owedTotal;\n\n\t\treturn (\n\t\t\tlenderInterestLocal.paidTotal,\n\t\t\tlenderInterestLocal.paidTotal != 0 ? lenderInterestLocal.updatedTimestamp : 0,\n\t\t\tlenderInterestLocal.owedPerDay,\n\t\t\tlenderInterestLocal.updatedTimestamp != 0 ? interestUnPaid : 0,\n\t\t\tlendingFeePercent,\n\t\t\tlenderInterestLocal.principalTotal\n\t\t);\n\t}\n\n\t/**\n\t * @notice Get current interest data for a loan.\n\t *\n\t * @param loanId A unique ID representing the loan.\n\t *\n\t * @return loanToken The loan token that interest is paid in.\n\t * @return interestOwedPerDay The amount of interest the borrower is paying per day.\n\t * @return interestDepositTotal The total amount of interest the borrower has deposited.\n\t * @return interestDepositRemaining The amount of deposited interest that is not yet owed to a lender.\n\t * */\n\tfunction getLoanInterestData(bytes32 loanId)\n\t\texternal\n\t\tview\n\t\treturns (\n\t\t\taddress loanToken,\n\t\t\tuint256 interestOwedPerDay,\n\t\t\tuint256 interestDepositTotal,\n\t\t\tuint256 interestDepositRemaining\n\t\t)\n\t{\n\t\tloanToken = loanParams[loans[loanId].loanParamsId].loanToken;\n\t\tinterestOwedPerDay = loanInterest[loanId].owedPerDay;\n\t\tinterestDepositTotal = loanInterest[loanId].depositTotal;\n\n\t\tuint256 endTimestamp = loans[loanId].endTimestamp;\n\t\tuint256 interestTime = block.timestamp > endTimestamp ? endTimestamp : block.timestamp;\n\t\tinterestDepositRemaining = endTimestamp > interestTime ? endTimestamp.sub(interestTime).mul(interestOwedPerDay).div(86400) : 0;\n\t}\n\n\t/**\n\t * @notice Get all user loans.\n\t *\n\t * Only returns data for loans that are active.\n\t *\n\t * @param user The user address.\n\t * @param start The lower loan ID to start with.\n\t * @param count The maximum number of results.\n\t * @param loanType The type of loan.\n\t *   loanType 0: all loans.\n\t *   loanType 1: margin trade loans.\n\t *   loanType 2: non-margin trade loans.\n\t * @param isLender Whether the user is lender or borrower.\n\t * @param unsafeOnly The safe filter (True/False).\n\t *\n\t * @return loansData The array of loans as query result.\n\t * */\n\tfunction getUserLoans(\n\t\taddress user,\n\t\tuint256 start,\n\t\tuint256 count,\n\t\tuint256 loanType,\n\t\tbool isLender,\n\t\tbool unsafeOnly\n\t) external view returns (LoanReturnData[] memory loansData) {\n\t\tEnumerableBytes32Set.Bytes32Set storage set = isLender ? lenderLoanSets[user] : borrowerLoanSets[user];\n\n\t\tuint256 end = start.add(count).min256(set.length());\n\t\tif (start >= end) {\n\t\t\treturn loansData;\n\t\t}\n\n\t\tloansData = new LoanReturnData[](count);\n\t\tuint256 itemCount;\n\t\tfor (uint256 i = end - start; i > 0; i--) {\n\t\t\tif (itemCount == count) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tLoanReturnData memory loanData =\n\t\t\t\t_getLoan(\n\t\t\t\t\tset.get(i + start - 1), /// loanId\n\t\t\t\t\tloanType,\n\t\t\t\t\tunsafeOnly\n\t\t\t\t);\n\t\t\tif (loanData.loanId == 0) continue;\n\n\t\t\tloansData[itemCount] = loanData;\n\t\t\titemCount++;\n\t\t}\n\n\t\tif (itemCount < count) {\n\t\t\tassembly {\n\t\t\t\tmstore(loansData, itemCount)\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Get one loan data structure by matching ID.\n\t *\n\t * Wrapper to internal _getLoan call.\n\t *\n\t * @param loanId A unique ID representing the loan.\n\t *\n\t * @return loansData The data structure w/ loan information.\n\t * */\n\tfunction getLoan(bytes32 loanId) external view returns (LoanReturnData memory loanData) {\n\t\treturn\n\t\t\t_getLoan(\n\t\t\t\tloanId,\n\t\t\t\t0, /// loanType\n\t\t\t\tfalse /// unsafeOnly\n\t\t\t);\n\t}\n\n\t/**\n\t * @notice Get all active loans.\n\t *\n\t * @param start The lower loan ID to start with.\n\t * @param count The maximum number of results.\n\t * @param unsafeOnly The safe filter (True/False).\n\t *\n\t * @return loansData The data structure w/ loan information.\n\t * */\n\tfunction getActiveLoans(\n\t\tuint256 start,\n\t\tuint256 count,\n\t\tbool unsafeOnly\n\t) external view returns (LoanReturnData[] memory loansData) {\n\t\tuint256 end = start.add(count).min256(activeLoansSet.length());\n\t\tif (start >= end) {\n\t\t\treturn loansData;\n\t\t}\n\n\t\tloansData = new LoanReturnData[](count);\n\t\tuint256 itemCount;\n\t\tfor (uint256 i = end - start; i > 0; i--) {\n\t\t\tif (itemCount == count) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tLoanReturnData memory loanData =\n\t\t\t\t_getLoan(\n\t\t\t\t\tactiveLoansSet.get(i + start - 1), /// loanId\n\t\t\t\t\t0, /// loanType\n\t\t\t\t\tunsafeOnly\n\t\t\t\t);\n\t\t\tif (loanData.loanId == 0) continue;\n\n\t\t\tloansData[itemCount] = loanData;\n\t\t\titemCount++;\n\t\t}\n\n\t\tif (itemCount < count) {\n\t\t\tassembly {\n\t\t\t\tmstore(loansData, itemCount)\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Internal function to get one loan data structure.\n\t *\n\t * @param loanId A unique ID representing the loan.\n\t * @param loanType The type of loan.\n\t *   loanType 0: all loans.\n\t *   loanType 1: margin trade loans.\n\t *   loanType 2: non-margin trade loans.\n\t * @param unsafeOnly The safe filter (True/False).\n\t *\n\t * @return loansData The data structure w/ the loan information.\n\t * */\n\tfunction _getLoan(\n\t\tbytes32 loanId,\n\t\tuint256 loanType,\n\t\tbool unsafeOnly\n\t) internal view returns (LoanReturnData memory loanData) {\n\t\tLoan memory loanLocal = loans[loanId];\n\t\tLoanParams memory loanParamsLocal = loanParams[loanLocal.loanParamsId];\n\n\t\tif (loanType != 0) {\n\t\t\tif (!((loanType == 1 && loanParamsLocal.maxLoanTerm != 0) || (loanType == 2 && loanParamsLocal.maxLoanTerm == 0))) {\n\t\t\t\treturn loanData;\n\t\t\t}\n\t\t}\n\n\t\tLoanInterest memory loanInterestLocal = loanInterest[loanId];\n\n\t\t(uint256 currentMargin, uint256 collateralToLoanRate) =\n\t\t\tIPriceFeeds(priceFeeds).getCurrentMargin(\n\t\t\t\tloanParamsLocal.loanToken,\n\t\t\t\tloanParamsLocal.collateralToken,\n\t\t\t\tloanLocal.principal,\n\t\t\t\tloanLocal.collateral\n\t\t\t);\n\n\t\tuint256 maxLiquidatable;\n\t\tuint256 maxSeizable;\n\t\tif (currentMargin <= loanParamsLocal.maintenanceMargin) {\n\t\t\t(maxLiquidatable, maxSeizable, ) = _getLiquidationAmounts(\n\t\t\t\tloanLocal.principal,\n\t\t\t\tloanLocal.collateral,\n\t\t\t\tcurrentMargin,\n\t\t\t\tloanParamsLocal.maintenanceMargin,\n\t\t\t\tcollateralToLoanRate\n\t\t\t);\n\t\t} else if (unsafeOnly) {\n\t\t\treturn loanData;\n\t\t}\n\n\t\treturn\n\t\t\tLoanReturnData({\n\t\t\t\tloanId: loanId,\n\t\t\t\tloanToken: loanParamsLocal.loanToken,\n\t\t\t\tcollateralToken: loanParamsLocal.collateralToken,\n\t\t\t\tprincipal: loanLocal.principal,\n\t\t\t\tcollateral: loanLocal.collateral,\n\t\t\t\tinterestOwedPerDay: loanInterestLocal.owedPerDay,\n\t\t\t\tinterestDepositRemaining: loanLocal.endTimestamp >= block.timestamp\n\t\t\t\t\t? loanLocal.endTimestamp.sub(block.timestamp).mul(loanInterestLocal.owedPerDay).div(86400)\n\t\t\t\t\t: 0,\n\t\t\t\tstartRate: loanLocal.startRate,\n\t\t\t\tstartMargin: loanLocal.startMargin,\n\t\t\t\tmaintenanceMargin: loanParamsLocal.maintenanceMargin,\n\t\t\t\tcurrentMargin: currentMargin,\n\t\t\t\tmaxLoanTerm: loanParamsLocal.maxLoanTerm,\n\t\t\t\tendTimestamp: loanLocal.endTimestamp,\n\t\t\t\tmaxLiquidatable: maxLiquidatable,\n\t\t\t\tmaxSeizable: maxSeizable\n\t\t\t});\n\t}\n\n\t/**\n\t * @notice Internal function to collect interest from the collateral.\n\t *\n\t * @param loanLocal The loan object.\n\t * @param loanParamsLocal The loan parameters.\n\t * @param depositAmount The amount of underlying tokens provided on the loan.\n\t * */\n\tfunction _doCollateralSwap(\n\t\tLoan storage loanLocal,\n\t\tLoanParams memory loanParamsLocal,\n\t\tuint256 depositAmount\n\t) internal {\n\t\t/// Reverts in _loanSwap if amountNeeded can't be bought.\n\t\t(, uint256 sourceTokenAmountUsed, ) =\n\t\t\t_loanSwap(\n\t\t\t\tloanLocal.id,\n\t\t\t\tloanParamsLocal.collateralToken,\n\t\t\t\tloanParamsLocal.loanToken,\n\t\t\t\tloanLocal.borrower,\n\t\t\t\tloanLocal.collateral, /// minSourceTokenAmount\n\t\t\t\t0, /// maxSourceTokenAmount (0 means minSourceTokenAmount)\n\t\t\t\tdepositAmount, /// requiredDestTokenAmount (partial spend of loanLocal.collateral to fill this amount)\n\t\t\t\ttrue, /// bypassFee\n\t\t\t\t\"\" /// loanDataBytes\n\t\t\t);\n\t\tloanLocal.collateral = loanLocal.collateral.sub(sourceTokenAmountUsed);\n\n\t\t/// Ensure the loan is still healthy.\n\t\t(uint256 currentMargin, ) =\n\t\t\tIPriceFeeds(priceFeeds).getCurrentMargin(\n\t\t\t\tloanParamsLocal.loanToken,\n\t\t\t\tloanParamsLocal.collateralToken,\n\t\t\t\tloanLocal.principal,\n\t\t\t\tloanLocal.collateral\n\t\t\t);\n\t\trequire(currentMargin > loanParamsLocal.maintenanceMargin, \"unhealthy position\");\n\t}\n}\n"
      },
      "contracts/events/LoanMaintenanceEvents.sol": {
        "content": "pragma solidity 0.5.17;\n\nimport \"./ModulesCommonEvents.sol\";\n\n/**\n * @title The Loan Maintenance Events contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the events for loan maintenance operations.\n * */\ncontract LoanMaintenanceEvents is ModulesCommonEvents {\n\tevent DepositCollateral(bytes32 loanId, uint256 depositAmount, uint256 rate);\n}\n"
      },
      "contracts/mixins/LiquidationHelper.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"../core/State.sol\";\n\n/**\n * @title The Liquidation Helper contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized margin\n * trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract computes the liquidation amount.\n * */\ncontract LiquidationHelper is State {\n\t/**\n\t * @notice Compute how much needs to be liquidated in order to restore the\n\t * desired margin (maintenance + 5%).\n\t *\n\t * @param principal The total borrowed amount (in loan tokens).\n\t * @param collateral The collateral (in collateral tokens).\n\t * @param currentMargin The current margin.\n\t * @param maintenanceMargin The maintenance (minimum) margin.\n\t * @param collateralToLoanRate The exchange rate from collateral to loan\n\t *   tokens.\n\t *\n\t * @return maxLiquidatable The collateral you can get liquidating.\n\t * @return maxSeizable The loan you available for liquidation.\n\t * @return incentivePercent The discount on collateral.\n\t * */\n\tfunction _getLiquidationAmounts(\n\t\tuint256 principal,\n\t\tuint256 collateral,\n\t\tuint256 currentMargin,\n\t\tuint256 maintenanceMargin,\n\t\tuint256 collateralToLoanRate\n\t)\n\t\tinternal\n\t\tview\n\t\treturns (\n\t\t\tuint256 maxLiquidatable,\n\t\t\tuint256 maxSeizable,\n\t\t\tuint256 incentivePercent\n\t\t)\n\t{\n\t\tincentivePercent = liquidationIncentivePercent;\n\t\tif (currentMargin > maintenanceMargin || collateralToLoanRate == 0) {\n\t\t\treturn (maxLiquidatable, maxSeizable, incentivePercent);\n\t\t} else if (currentMargin <= incentivePercent) {\n\t\t\treturn (principal, collateral, currentMargin);\n\t\t}\n\n\t\t/// 5 percentage points above maintenance.\n\t\tuint256 desiredMargin = maintenanceMargin.add(5 ether);\n\n\t\t/// maxLiquidatable = ((1 + desiredMargin)*principal - collateralToLoanRate*collateral) / (desiredMargin - 0.05)\n\t\tmaxLiquidatable = desiredMargin.add(10**20).mul(principal).div(10**20);\n\t\tmaxLiquidatable = maxLiquidatable.sub(collateral.mul(collateralToLoanRate).div(10**18));\n\t\tmaxLiquidatable = maxLiquidatable.mul(10**20).div(desiredMargin.sub(incentivePercent));\n\t\tif (maxLiquidatable > principal) {\n\t\t\tmaxLiquidatable = principal;\n\t\t}\n\n\t\t/// maxSeizable = maxLiquidatable * (1 + incentivePercent) / collateralToLoanRate\n\t\tmaxSeizable = maxLiquidatable.mul(incentivePercent.add(10**20));\n\t\tmaxSeizable = maxSeizable.div(collateralToLoanRate).div(100);\n\t\tif (maxSeizable > collateral) {\n\t\t\tmaxSeizable = collateral;\n\t\t}\n\n\t\treturn (maxLiquidatable, maxSeizable, incentivePercent);\n\t}\n}\n"
      },
      "contracts/modules/LoanClosingsWith.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../core/State.sol\";\nimport \"../events/LoanClosingsEvents.sol\";\nimport \"../mixins/VaultController.sol\";\nimport \"../mixins/InterestUser.sol\";\nimport \"../mixins/LiquidationHelper.sol\";\nimport \"../swaps/SwapsUser.sol\";\nimport \"../interfaces/ILoanPool.sol\";\nimport \"../mixins/RewardHelper.sol\";\nimport \"../mixins/ModuleCommonFunctionalities.sol\";\n\n/**\n * @title LoanClosingsWith contract.\n * @notice Close a loan w/deposit, close w/swap. There are 2 functions for ending a loan on the\n *   protocol contract: closeWithSwap and closeWithDeposit. Margin trade\n *   positions are always closed with a swap.\n *\n * Loans are liquidated if the position goes below margin maintenance.\n * */\ncontract LoanClosingsWith is\n\tLoanClosingsEvents,\n\tVaultController,\n\tInterestUser,\n\tSwapsUser, /*LiquidationHelper,*/\n\tRewardHelper,\n\tModuleCommonFunctionalities\n{\n\t//0.00001 BTC, would be nicer in State.sol, but would require a redeploy of the complete protocol, so adding it here instead\n\t//because it's not shared state anyway and only used by this contract\n\tuint256 public constant paySwapExcessToBorrowerThreshold = 10000000000000;\n\n\tenum CloseTypes { Deposit, Swap, Liquidation }\n\n\tconstructor() public {}\n\n\tfunction() external {\n\t\trevert(\"fallback not allowed\");\n\t}\n\n\tfunction initialize(address target) external onlyOwner {\n\t\taddress prevModuleContractAddress = logicTargets[this.closeWithDeposit.selector];\n\t\t_setTarget(this.closeWithDeposit.selector, target);\n\t\t_setTarget(this.closeWithSwap.selector, target);\n\t\temit ProtocolModuleContractReplaced(prevModuleContractAddress, target, \"LoanClosingsWith\");\n\t}\n\n\t/**\n\t * @notice Closes a loan by doing a deposit.\n\t *\n\t * @dev Public wrapper for _closeWithDeposit internal function.\n\t *\n\t * @param loanId The id of the loan.\n\t * @param receiver The receiver of the remainder.\n\t * @param depositAmount Defines how much of the position should be closed.\n\t *   It is denominated in loan tokens. (e.g. rBTC on a iSUSD contract).\n\t *     If depositAmount > principal, the complete loan will be closed\n\t *     else deposit amount (partial closure).\n\t *\n\t * @return loanCloseAmount The amount of the collateral token of the loan.\n\t * @return withdrawAmount The withdraw amount in the collateral token.\n\t * @return withdrawToken The loan token address.\n\t * */\n\tfunction closeWithDeposit(\n\t\tbytes32 loanId,\n\t\taddress receiver,\n\t\tuint256 depositAmount /// Denominated in loanToken.\n\t)\n\t\tpublic\n\t\tpayable\n\t\tnonReentrant\n\t\twhenNotPaused\n\t\treturns (\n\t\t\tuint256 loanCloseAmount,\n\t\t\tuint256 withdrawAmount,\n\t\t\taddress withdrawToken\n\t\t)\n\t{\n\t\treturn _closeWithDeposit(loanId, receiver, depositAmount);\n\t}\n\n\t/**\n\t * @notice Close a position by swapping the collateral back to loan tokens\n\t * paying the lender and withdrawing the remainder.\n\t *\n\t * @dev Public wrapper for _closeWithSwap internal function.\n\t *\n\t * @param loanId The id of the loan.\n\t * @param receiver The receiver of the remainder (unused collateral + profit).\n\t * @param swapAmount Defines how much of the position should be closed and\n\t *   is denominated in collateral tokens.\n\t *      If swapAmount >= collateral, the complete position will be closed.\n\t *      Else if returnTokenIsCollateral, (swapAmount/collateral) * principal will be swapped (partial closure).\n\t *      Else coveredPrincipal\n\t * @param returnTokenIsCollateral Defines if the remainder should be paid out\n\t *   in collateral tokens or underlying loan tokens.\n\t *\n\t * @return loanCloseAmount The amount of the collateral token of the loan.\n\t * @return withdrawAmount The withdraw amount in the collateral token.\n\t * @return withdrawToken The loan token address.\n\t * */\n\tfunction closeWithSwap(\n\t\tbytes32 loanId,\n\t\taddress receiver,\n\t\tuint256 swapAmount, // denominated in collateralToken\n\t\tbool returnTokenIsCollateral, // true: withdraws collateralToken, false: withdraws loanToken\n\t\tbytes memory // for future use /*loanDataBytes*/\n\t)\n\t\tpublic\n\t\tnonReentrant\n\t\twhenNotPaused\n\t\treturns (\n\t\t\tuint256 loanCloseAmount,\n\t\t\tuint256 withdrawAmount,\n\t\t\taddress withdrawToken\n\t\t)\n\t{\n\t\treturn\n\t\t\t_closeWithSwap(\n\t\t\t\tloanId,\n\t\t\t\treceiver,\n\t\t\t\tswapAmount,\n\t\t\t\treturnTokenIsCollateral,\n\t\t\t\t\"\" /// loanDataBytes\n\t\t\t);\n\t}\n\n\t/**\n\t * @notice Internal function for closing a loan by doing a deposit.\n\t *\n\t * @param loanId The id of the loan.\n\t * @param receiver The receiver of the remainder.\n\t * @param depositAmount Defines how much of the position should be closed.\n\t *   It is denominated in loan tokens.\n\t *     If depositAmount > principal, the complete loan will be closed\n\t *     else deposit amount (partial closure).\n\t *\n\t * @return loanCloseAmount The amount of the collateral token of the loan.\n\t * @return withdrawAmount The withdraw amount in the collateral token.\n\t * @return withdrawToken The loan token address.\n\t * */\n\tfunction _closeWithDeposit(\n\t\tbytes32 loanId,\n\t\taddress receiver,\n\t\tuint256 depositAmount /// Denominated in loanToken.\n\t)\n\t\tinternal\n\t\treturns (\n\t\t\tuint256 loanCloseAmount,\n\t\t\tuint256 withdrawAmount,\n\t\t\taddress withdrawToken\n\t\t)\n\t{\n\t\trequire(depositAmount != 0, \"depositAmount == 0\");\n\n\t\tLoan storage loanLocal = loans[loanId];\n\t\tLoanParams storage loanParamsLocal = loanParams[loanLocal.loanParamsId];\n\t\t_checkAuthorized(loanLocal, loanParamsLocal);\n\n\t\t/// Can't close more than the full principal.\n\t\tloanCloseAmount = depositAmount > loanLocal.principal ? loanLocal.principal : depositAmount;\n\n\t\tuint256 loanCloseAmountLessInterest = _settleInterestToPrincipal(loanLocal, loanParamsLocal, loanCloseAmount, receiver);\n\n\t\tif (loanCloseAmountLessInterest != 0) {\n\t\t\t_returnPrincipalWithDeposit(loanParamsLocal.loanToken, loanLocal.lender, loanCloseAmountLessInterest);\n\t\t}\n\n\t\tif (loanCloseAmount == loanLocal.principal) {\n\t\t\twithdrawAmount = loanLocal.collateral;\n\t\t} else {\n\t\t\twithdrawAmount = loanLocal.collateral.mul(loanCloseAmount).div(loanLocal.principal);\n\t\t}\n\n\t\twithdrawToken = loanParamsLocal.collateralToken;\n\n\t\tif (withdrawAmount != 0) {\n\t\t\tloanLocal.collateral = loanLocal.collateral.sub(withdrawAmount);\n\n\t\t\t_withdrawAsset(withdrawToken, receiver, withdrawAmount);\n\t\t}\n\n\t\t_finalizeClose(\n\t\t\tloanLocal,\n\t\t\tloanParamsLocal,\n\t\t\tloanCloseAmount,\n\t\t\twithdrawAmount, /// collateralCloseAmount\n\t\t\t0, /// collateralToLoanSwapRate\n\t\t\tCloseTypes.Deposit\n\t\t);\n\t}\n\n\t/**\n\t * @notice Internal function for closing a position by swapping the\n\t * collateral back to loan tokens, paying the lender and withdrawing\n\t * the remainder.\n\t *\n\t * @param loanId The id of the loan.\n\t * @param receiver The receiver of the remainder (unused collatral + profit).\n\t * @param swapAmount Defines how much of the position should be closed and\n\t *   is denominated in collateral tokens.\n\t *     If swapAmount >= collateral, the complete position will be closed.\n\t *     Else if returnTokenIsCollateral, (swapAmount/collateral) * principal will be swapped (partial closure).\n\t *     Else coveredPrincipal\n\t * @param returnTokenIsCollateral Defines if the remainder should be paid\n\t *   out in collateral tokens or underlying loan tokens.\n\t *\n\t * @return loanCloseAmount The amount of the collateral token of the loan.\n\t * @return withdrawAmount The withdraw amount in the collateral token.\n\t * @return withdrawToken The loan token address.\n\t * */\n\tfunction _closeWithSwap(\n\t\tbytes32 loanId,\n\t\taddress receiver,\n\t\tuint256 swapAmount,\n\t\tbool returnTokenIsCollateral,\n\t\tbytes memory loanDataBytes\n\t)\n\t\tinternal\n\t\treturns (\n\t\t\tuint256 loanCloseAmount,\n\t\t\tuint256 withdrawAmount,\n\t\t\taddress withdrawToken\n\t\t)\n\t{\n\t\trequire(swapAmount != 0, \"swapAmount == 0\");\n\n\t\tLoan storage loanLocal = loans[loanId];\n\t\tLoanParams storage loanParamsLocal = loanParams[loanLocal.loanParamsId];\n\t\t_checkAuthorized(loanLocal, loanParamsLocal);\n\n\t\t/// Can't swap more than collateral.\n\t\tswapAmount = swapAmount > loanLocal.collateral ? loanLocal.collateral : swapAmount;\n\n\t\tuint256 loanCloseAmountLessInterest;\n\t\tif (swapAmount == loanLocal.collateral || returnTokenIsCollateral) {\n\t\t\t/// loanCloseAmountLessInterest will be passed as required amount amount of destination tokens.\n\t\t\t/// this means, the actual swapAmount passed to the swap contract does not matter at all.\n\t\t\t/// the source token amount will be computed depending on the required amount amount of destination tokens.\n\t\t\tloanCloseAmount = swapAmount == loanLocal.collateral\n\t\t\t\t? loanLocal.principal\n\t\t\t\t: loanLocal.principal.mul(swapAmount).div(loanLocal.collateral);\n\t\t\trequire(loanCloseAmount != 0, \"loanCloseAmount == 0\");\n\n\t\t\t/// Computes the interest refund for the borrower and sends it to the lender to cover part of the principal.\n\t\t\tloanCloseAmountLessInterest = _settleInterestToPrincipal(loanLocal, loanParamsLocal, loanCloseAmount, receiver);\n\t\t} else {\n\t\t\t/// loanCloseAmount is calculated after swap; for this case we want to swap the entire source amount\n\t\t\t/// and determine the loanCloseAmount and withdraw amount based on that.\n\t\t\tloanCloseAmountLessInterest = 0;\n\t\t}\n\n\t\tuint256 coveredPrincipal;\n\t\tuint256 usedCollateral;\n\t\t/// swapAmount repurposed for collateralToLoanSwapRate to avoid stack too deep error.\n\t\t(coveredPrincipal, usedCollateral, withdrawAmount, swapAmount) = _coverPrincipalWithSwap(\n\t\t\tloanLocal,\n\t\t\tloanParamsLocal,\n\t\t\tswapAmount, /// The amount of source tokens to swap (only matters if !returnTokenIsCollateral or loanCloseAmountLessInterest = 0)\n\t\t\tloanCloseAmountLessInterest, /// This is the amount of destination tokens we want to receive (only matters if returnTokenIsCollateral)\n\t\t\treturnTokenIsCollateral,\n\t\t\tloanDataBytes\n\t\t);\n\n\t\tif (loanCloseAmountLessInterest == 0) {\n\t\t\t/// Condition prior to swap: swapAmount != loanLocal.collateral && !returnTokenIsCollateral\n\n\t\t\t/// Amounts that is closed.\n\t\t\tloanCloseAmount = coveredPrincipal;\n\t\t\tif (coveredPrincipal != loanLocal.principal) {\n\t\t\t\tloanCloseAmount = loanCloseAmount.mul(usedCollateral).div(loanLocal.collateral);\n\t\t\t}\n\t\t\trequire(loanCloseAmount != 0, \"loanCloseAmount == 0\");\n\n\t\t\t/// Amount that is returned to the lender.\n\t\t\tloanCloseAmountLessInterest = _settleInterestToPrincipal(loanLocal, loanParamsLocal, loanCloseAmount, receiver);\n\n\t\t\t/// Remaining amount withdrawn to the receiver.\n\t\t\twithdrawAmount = withdrawAmount.add(coveredPrincipal).sub(loanCloseAmountLessInterest);\n\t\t} else {\n\t\t\t/// Pay back the amount which was covered by the swap.\n\t\t\tloanCloseAmountLessInterest = coveredPrincipal;\n\t\t}\n\n\t\trequire(loanCloseAmountLessInterest != 0, \"closeAmount is 0 after swap\");\n\n\t\t/// Reduce the collateral by the amount which was swapped for the closure.\n\t\tif (usedCollateral != 0) {\n\t\t\tloanLocal.collateral = loanLocal.collateral.sub(usedCollateral);\n\t\t}\n\n\t\t/// Repays principal to lender.\n\t\t/// The lender always gets back an ERC20 (even wrbtc), so we call\n\t\t/// withdraw directly rather than use the _withdrawAsset helper function.\n\t\tvaultWithdraw(loanParamsLocal.loanToken, loanLocal.lender, loanCloseAmountLessInterest);\n\n\t\twithdrawToken = returnTokenIsCollateral ? loanParamsLocal.collateralToken : loanParamsLocal.loanToken;\n\n\t\tif (withdrawAmount != 0) {\n\t\t\t_withdrawAsset(withdrawToken, receiver, withdrawAmount);\n\t\t}\n\n\t\t_finalizeClose(\n\t\t\tloanLocal,\n\t\t\tloanParamsLocal,\n\t\t\tloanCloseAmount,\n\t\t\tusedCollateral,\n\t\t\tswapAmount, /// collateralToLoanSwapRate\n\t\t\tCloseTypes.Swap\n\t\t);\n\t}\n\n\t/**\n\t * @notice Check sender is borrower or delegatee and loan id exists.\n\t *\n\t * @param loanLocal The loan object.\n\t * @param loanParamsLocal The loan params.\n\t * */\n\tfunction _checkAuthorized(Loan memory loanLocal, LoanParams memory loanParamsLocal) internal view {\n\t\trequire(loanLocal.active, \"loan is closed\");\n\t\trequire(msg.sender == loanLocal.borrower || delegatedManagers[loanLocal.id][msg.sender], \"unauthorized\");\n\t\trequire(loanParamsLocal.id != 0, \"loanParams not exists\");\n\t}\n\n\t/**\n\t * @notice Compute the interest which needs to be refunded to the borrower\n\t * based on the amount he's closing and either subtracts it from the\n\t * amount which still needs to be paid back (in case outstanding\n\t * amount > interest) or withdraws the excess to the borrower\n\t * (in case interest > outstanding).\n\t *\n\t * @param loanLocal The loan object.\n\t * @param loanParamsLocal The loan params.\n\t * @param loanCloseAmount The amount to be closed (base for the computation).\n\t * @param receiver The address of the receiver (usually the borrower).\n\t *\n\t * @return loanCloseAmountLessInterest The outstanding loan.\n\t * */\n\tfunction _settleInterestToPrincipal(\n\t\tLoan memory loanLocal,\n\t\tLoanParams memory loanParamsLocal,\n\t\tuint256 loanCloseAmount,\n\t\taddress receiver\n\t) internal returns (uint256) {\n\t\tuint256 loanCloseAmountLessInterest = loanCloseAmount;\n\n\t\t/// Compute the interest which neeeds to be refunded to the borrower (because full interest is paid on loan).\n\t\tuint256 interestRefundToBorrower = _settleInterest(loanParamsLocal, loanLocal, loanCloseAmountLessInterest);\n\n\t\tuint256 interestAppliedToPrincipal;\n\t\t/// If the outstanding loan is bigger than the interest to be refunded, reduce the amount to be paid back / closed by the interest.\n\t\tif (loanCloseAmountLessInterest >= interestRefundToBorrower) {\n\t\t\t/// Apply all of borrower interest refund torwards principal.\n\t\t\tinterestAppliedToPrincipal = interestRefundToBorrower;\n\n\t\t\t/// Principal needed is reduced by this amount.\n\t\t\tloanCloseAmountLessInterest -= interestRefundToBorrower;\n\n\t\t\t/// No interest refund remaining.\n\t\t\tinterestRefundToBorrower = 0;\n\t\t} else {\n\t\t\t/// If the interest refund is bigger than the outstanding loan, the user needs to get back the interest.\n\t\t\t/// Principal fully covered by excess interest.\n\t\t\tinterestAppliedToPrincipal = loanCloseAmountLessInterest;\n\n\t\t\t/// Amount refunded is reduced by this amount.\n\t\t\tinterestRefundToBorrower -= loanCloseAmountLessInterest;\n\n\t\t\t/// Principal fully covered by excess interest.\n\t\t\tloanCloseAmountLessInterest = 0;\n\n\t\t\tif (interestRefundToBorrower != 0) {\n\t\t\t\t/// Refund overage.\n\t\t\t\t_withdrawAsset(loanParamsLocal.loanToken, receiver, interestRefundToBorrower);\n\t\t\t}\n\t\t}\n\n\t\t/// Pay the interest to the lender.\n\t\t/// Note: this is a waste of gas, because the loanCloseAmountLessInterest\n\t\t/// is withdrawn to the lender, too. It could be done at once.\n\t\tif (interestAppliedToPrincipal != 0) {\n\t\t\t/// The lender always gets back an ERC20 (even wrbtc),\n\t\t\t/// so we call withdraw directly rather than\n\t\t\t/// use the _withdrawAsset helper function.\n\t\t\tvaultWithdraw(loanParamsLocal.loanToken, loanLocal.lender, interestAppliedToPrincipal);\n\t\t}\n\n\t\treturn loanCloseAmountLessInterest;\n\t}\n\n\t/**\n\t * @notice Transfer principal with deposit to receiver.\n\t *\n\t * @dev The receiver always gets back an ERC20 (even wrBTC).\n\t *\n\t * @param loanToken The address of the loan token.\n\t * @param receiver The recipient address.\n\t * @param principalNeeded The required amount of destination tokens in order to cover the principle.\n\t * */\n\tfunction _returnPrincipalWithDeposit(\n\t\taddress loanToken,\n\t\taddress receiver,\n\t\tuint256 principalNeeded\n\t) internal {\n\t\tif (principalNeeded != 0) {\n\t\t\tif (msg.value == 0) {\n\t\t\t\tvaultTransfer(loanToken, msg.sender, receiver, principalNeeded);\n\t\t\t} else {\n\t\t\t\trequire(loanToken == address(wrbtcToken), \"wrong asset sent\");\n\t\t\t\trequire(msg.value >= principalNeeded, \"not enough ether\");\n\t\t\t\twrbtcToken.deposit.value(principalNeeded)();\n\t\t\t\tif (receiver != address(this)) {\n\t\t\t\t\tvaultTransfer(loanToken, address(this), receiver, principalNeeded);\n\t\t\t\t}\n\t\t\t\tif (msg.value > principalNeeded) {\n\t\t\t\t\t/// Refund overage.\n\t\t\t\t\tAddress.sendValue(msg.sender, msg.value - principalNeeded);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\trequire(msg.value == 0, \"wrong asset sent\");\n\t\t}\n\t}\n\n\t/**\n\t * @notice Check if the amount of the asset to be transfered is worth the transfer fee.\n\t * @param asset The asset to be transfered.\n\t * @param amount The amount to be transfered.\n\t * @return True if the amount is bigger than the threshold.\n\t * */\n\tfunction worthTheTransfer(address asset, uint256 amount) internal returns (bool) {\n\t\t(uint256 rbtcRate, uint256 rbtcPrecision) = IPriceFeeds(priceFeeds).queryRate(asset, address(wrbtcToken));\n\t\tuint256 amountInRbtc = amount.mul(rbtcRate).div(rbtcPrecision);\n\t\temit swapExcess(amountInRbtc > paySwapExcessToBorrowerThreshold, amount, amountInRbtc, paySwapExcessToBorrowerThreshold);\n\t\treturn amountInRbtc > paySwapExcessToBorrowerThreshold;\n\t}\n\n\t/**\n\t * @notice Swaps a share of a loan's collateral or the complete collateral\n\t *   in order to cover the principle.\n\t *\n\t * @param loanLocal The loan object.\n\t * @param loanParamsLocal The loan parameters.\n\t * @param swapAmount In case principalNeeded == 0 or !returnTokenIsCollateral,\n\t *   this is the amount which is going to be swapped.\n\t *   Else, swapAmount doesn't matter, because the amount of source tokens\n\t *   needed for the swap is estimated by the connector.\n\t * @param principalNeeded The required amount of destination tokens in order to\n\t *   cover the principle (only used if returnTokenIsCollateral).\n\t * @param returnTokenIsCollateral Tells if the user wants to withdraw his\n\t *   remaining collateral + profit in collateral tokens.\n\t *\n\t * @return coveredPrincipal The amount of principal that is covered.\n\t * @return usedCollateral The amount of collateral used.\n\t * @return withdrawAmount The withdraw amount in the collateral token.\n\t * @return collateralToLoanSwapRate The swap rate of collateral.\n\t * */\n\tfunction _coverPrincipalWithSwap(\n\t\tLoan memory loanLocal,\n\t\tLoanParams memory loanParamsLocal,\n\t\tuint256 swapAmount,\n\t\tuint256 principalNeeded,\n\t\tbool returnTokenIsCollateral,\n\t\tbytes memory loanDataBytes\n\t)\n\t\tinternal\n\t\treturns (\n\t\t\tuint256 coveredPrincipal,\n\t\t\tuint256 usedCollateral,\n\t\t\tuint256 withdrawAmount,\n\t\t\tuint256 collateralToLoanSwapRate\n\t\t)\n\t{\n\t\tuint256 destTokenAmountReceived;\n\t\tuint256 sourceTokenAmountUsed;\n\t\t(destTokenAmountReceived, sourceTokenAmountUsed, collateralToLoanSwapRate) = _doCollateralSwap(\n\t\t\tloanLocal,\n\t\t\tloanParamsLocal,\n\t\t\tswapAmount,\n\t\t\tprincipalNeeded,\n\t\t\treturnTokenIsCollateral,\n\t\t\tloanDataBytes\n\t\t);\n\n\t\tif (returnTokenIsCollateral) {\n\t\t\tcoveredPrincipal = principalNeeded;\n\n\t\t\t/// Better fill than expected.\n\t\t\tif (destTokenAmountReceived > coveredPrincipal) {\n\t\t\t\t/// Send excess to borrower if the amount is big enough to be\n\t\t\t\t/// worth the gas fees.\n\t\t\t\tif (worthTheTransfer(loanParamsLocal.loanToken, destTokenAmountReceived - coveredPrincipal)) {\n\t\t\t\t\t_withdrawAsset(loanParamsLocal.loanToken, loanLocal.borrower, destTokenAmountReceived - coveredPrincipal);\n\t\t\t\t}\n\t\t\t\t/// Else, give the excess to the lender (if it goes to the\n\t\t\t\t/// borrower, they're very confused. causes more trouble than it's worth)\n\t\t\t\telse {\n\t\t\t\t\tcoveredPrincipal = destTokenAmountReceived;\n\t\t\t\t}\n\t\t\t}\n\t\t\twithdrawAmount = swapAmount > sourceTokenAmountUsed ? swapAmount - sourceTokenAmountUsed : 0;\n\t\t} else {\n\t\t\trequire(sourceTokenAmountUsed == swapAmount, \"swap error\");\n\n\t\t\tif (swapAmount == loanLocal.collateral) {\n\t\t\t\t/// sourceTokenAmountUsed == swapAmount == loanLocal.collateral\n\n\t\t\t\tcoveredPrincipal = principalNeeded;\n\t\t\t\twithdrawAmount = destTokenAmountReceived - principalNeeded;\n\t\t\t} else {\n\t\t\t\t/// sourceTokenAmountUsed == swapAmount < loanLocal.collateral\n\n\t\t\t\tif (destTokenAmountReceived >= loanLocal.principal) {\n\t\t\t\t\t/// Edge case where swap covers full principal.\n\n\t\t\t\t\tcoveredPrincipal = loanLocal.principal;\n\t\t\t\t\twithdrawAmount = destTokenAmountReceived - loanLocal.principal;\n\n\t\t\t\t\t/// Excess collateral refunds to the borrower.\n\t\t\t\t\t_withdrawAsset(loanParamsLocal.collateralToken, loanLocal.borrower, loanLocal.collateral - sourceTokenAmountUsed);\n\t\t\t\t\tsourceTokenAmountUsed = loanLocal.collateral;\n\t\t\t\t} else {\n\t\t\t\t\tcoveredPrincipal = destTokenAmountReceived;\n\t\t\t\t\twithdrawAmount = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tusedCollateral = sourceTokenAmountUsed > swapAmount ? sourceTokenAmountUsed : swapAmount;\n\t}\n\n\t/**\n\t * @notice Swap collateral tokens for loan tokens.\n\t *\n\t * @param loanLocal The loan object.\n\t * @param loanParamsLocal The loan parameters.\n\t * @param swapAmount The amount to be swapped.\n\t * @param principalNeeded The required destination token amount.\n\t * @param returnTokenIsCollateral if true -> required destination\n\t *   token amount will be passed on, else not\n\t *     note: quite dirty. should be refactored.\n\t * @param loanDataBytes Additional loan data (not in use for token swaps).\n\t * */\n\tfunction _doCollateralSwap(\n\t\tLoan memory loanLocal,\n\t\tLoanParams memory loanParamsLocal,\n\t\tuint256 swapAmount,\n\t\tuint256 principalNeeded,\n\t\tbool returnTokenIsCollateral,\n\t\tbytes memory loanDataBytes\n\t)\n\t\tinternal\n\t\treturns (\n\t\t\tuint256 destTokenAmountReceived,\n\t\t\tuint256 sourceTokenAmountUsed,\n\t\t\tuint256 collateralToLoanSwapRate\n\t\t)\n\t{\n\t\t(destTokenAmountReceived, sourceTokenAmountUsed, collateralToLoanSwapRate) = _loanSwap(\n\t\t\tloanLocal.id,\n\t\t\tloanParamsLocal.collateralToken,\n\t\t\tloanParamsLocal.loanToken,\n\t\t\tloanLocal.borrower,\n\t\t\tswapAmount, /// minSourceTokenAmount\n\t\t\tloanLocal.collateral, /// maxSourceTokenAmount\n\t\t\treturnTokenIsCollateral\n\t\t\t\t? principalNeeded /// requiredDestTokenAmount\n\t\t\t\t: 0,\n\t\t\tfalse, // bypassFee\n\t\t\tloanDataBytes\n\t\t);\n\t\trequire(destTokenAmountReceived >= principalNeeded, \"insufficient dest amount\");\n\t\trequire(sourceTokenAmountUsed <= loanLocal.collateral, \"excessive source amount\");\n\t}\n\n\t/**\n\t * @notice Withdraw asset to receiver.\n\t *\n\t * @param assetToken The loan token.\n\t * @param receiver The address of the receiver.\n\t * @param assetAmount The loan token amount.\n\t * */\n\tfunction _withdrawAsset(\n\t\taddress assetToken,\n\t\taddress receiver,\n\t\tuint256 assetAmount\n\t) internal {\n\t\tif (assetAmount != 0) {\n\t\t\tif (assetToken == address(wrbtcToken)) {\n\t\t\t\tvaultEtherWithdraw(receiver, assetAmount);\n\t\t\t} else {\n\t\t\t\tvaultWithdraw(assetToken, receiver, assetAmount);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Close a loan.\n\t *\n\t * @dev Wrapper for _closeLoan internal function.\n\t *\n\t * @param loanLocal The loan object.\n\t * @param loanParamsLocal The loan params.\n\t * @param loanCloseAmount The amount to close: principal or lower.\n\t * @param collateralCloseAmount The amount of collateral to close.\n\t * @param collateralToLoanSwapRate The price rate collateral/loan token.\n\t * @param closeType The type of loan close.\n\t * */\n\tfunction _finalizeClose(\n\t\tLoan storage loanLocal,\n\t\tLoanParams storage loanParamsLocal,\n\t\tuint256 loanCloseAmount,\n\t\tuint256 collateralCloseAmount,\n\t\tuint256 collateralToLoanSwapRate,\n\t\tCloseTypes closeType\n\t) internal {\n\t\t_closeLoan(loanLocal, loanCloseAmount);\n\n\t\taddress _priceFeeds = priceFeeds;\n\t\tuint256 currentMargin;\n\t\tuint256 collateralToLoanRate;\n\n\t\t/// This is still called even with full loan close to return collateralToLoanRate\n\t\t(bool success, bytes memory data) =\n\t\t\t_priceFeeds.staticcall(\n\t\t\t\tabi.encodeWithSelector(\n\t\t\t\t\tIPriceFeeds(_priceFeeds).getCurrentMargin.selector,\n\t\t\t\t\tloanParamsLocal.loanToken,\n\t\t\t\t\tloanParamsLocal.collateralToken,\n\t\t\t\t\tloanLocal.principal,\n\t\t\t\t\tloanLocal.collateral\n\t\t\t\t)\n\t\t\t);\n\t\tassembly {\n\t\t\tif eq(success, 1) {\n\t\t\t\tcurrentMargin := mload(add(data, 32))\n\t\t\t\tcollateralToLoanRate := mload(add(data, 64))\n\t\t\t}\n\t\t}\n\t\t/// Note: We can safely skip the margin check if closing\n\t\t/// via closeWithDeposit or if closing the loan in full by any method.\n\t\trequire(\n\t\t\tcloseType == CloseTypes.Deposit ||\n\t\t\t\tloanLocal.principal == 0 || /// loan fully closed\n\t\t\t\tcurrentMargin > loanParamsLocal.maintenanceMargin,\n\t\t\t\"unhealthy position\"\n\t\t);\n\n\t\t_emitClosingEvents(\n\t\t\tloanParamsLocal,\n\t\t\tloanLocal,\n\t\t\tloanCloseAmount,\n\t\t\tcollateralCloseAmount,\n\t\t\tcollateralToLoanRate,\n\t\t\tcollateralToLoanSwapRate,\n\t\t\tcurrentMargin,\n\t\t\tcloseType\n\t\t);\n\t}\n\n\t/**\n\t * @notice Internal function to close a loan.\n\t *\n\t * @param loanLocal The loan object.\n\t * @param loanCloseAmount The amount to close: principal or lower.\n\t *\n\t * */\n\tfunction _closeLoan(Loan storage loanLocal, uint256 loanCloseAmount) internal {\n\t\trequire(loanCloseAmount != 0, \"nothing to close\");\n\n\t\tif (loanCloseAmount == loanLocal.principal) {\n\t\t\tloanLocal.principal = 0;\n\t\t\tloanLocal.active = false;\n\t\t\tloanLocal.endTimestamp = block.timestamp;\n\t\t\tloanLocal.pendingTradesId = 0;\n\t\t\tactiveLoansSet.removeBytes32(loanLocal.id);\n\t\t\tlenderLoanSets[loanLocal.lender].removeBytes32(loanLocal.id);\n\t\t\tborrowerLoanSets[loanLocal.borrower].removeBytes32(loanLocal.id);\n\t\t} else {\n\t\t\tloanLocal.principal = loanLocal.principal.sub(loanCloseAmount);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Compute the interest which neeeds to be refunded to the borrower\n\t *   (because full interest is paid on loan).\n\t *\n\t * @param loanParamsLocal The loan params.\n\t * @param loanLocal The loan object.\n\t * @param closePrincipal The amount of principal to close.\n\t *\n\t * @return interestRefundToBorrower The interest refund to the borrower.\n\t * */\n\tfunction _settleInterest(\n\t\tLoanParams memory loanParamsLocal,\n\t\tLoan memory loanLocal,\n\t\tuint256 closePrincipal\n\t) internal returns (uint256) {\n\t\t/// pay outstanding interest to lender\n\t\t_payInterest(loanLocal.lender, loanParamsLocal.loanToken);\n\n\t\tLoanInterest storage loanInterestLocal = loanInterest[loanLocal.id];\n\t\tLenderInterest storage lenderInterestLocal = lenderInterest[loanLocal.lender][loanParamsLocal.loanToken];\n\n\t\tuint256 interestTime = block.timestamp;\n\t\tif (interestTime > loanLocal.endTimestamp) {\n\t\t\tinterestTime = loanLocal.endTimestamp;\n\t\t}\n\n\t\t_settleFeeRewardForInterestExpense(\n\t\t\tloanInterestLocal,\n\t\t\tloanLocal.id,\n\t\t\tloanParamsLocal.loanToken, /// fee token\n\t\t\tloanParamsLocal.collateralToken, /// pairToken (used to check if there is any special rebates or not) -- to pay fee reward\n\t\t\tloanLocal.borrower,\n\t\t\tinterestTime\n\t\t);\n\n\t\tuint256 owedPerDayRefund;\n\t\tif (closePrincipal < loanLocal.principal) {\n\t\t\towedPerDayRefund = loanInterestLocal.owedPerDay.mul(closePrincipal).div(loanLocal.principal);\n\t\t} else {\n\t\t\towedPerDayRefund = loanInterestLocal.owedPerDay;\n\t\t}\n\n\t\t/// update stored owedPerDay\n\t\tloanInterestLocal.owedPerDay = loanInterestLocal.owedPerDay.sub(owedPerDayRefund);\n\t\tlenderInterestLocal.owedPerDay = lenderInterestLocal.owedPerDay.sub(owedPerDayRefund);\n\n\t\t/// update borrower interest\n\t\tuint256 interestRefundToBorrower = loanLocal.endTimestamp.sub(interestTime);\n\t\tinterestRefundToBorrower = interestRefundToBorrower.mul(owedPerDayRefund);\n\t\tinterestRefundToBorrower = interestRefundToBorrower.div(1 days);\n\n\t\tif (closePrincipal < loanLocal.principal) {\n\t\t\tloanInterestLocal.depositTotal = loanInterestLocal.depositTotal.sub(interestRefundToBorrower);\n\t\t} else {\n\t\t\tloanInterestLocal.depositTotal = 0;\n\t\t}\n\n\t\t/// update remaining lender interest values\n\t\tlenderInterestLocal.principalTotal = lenderInterestLocal.principalTotal.sub(closePrincipal);\n\n\t\tuint256 owedTotal = lenderInterestLocal.owedTotal;\n\t\tlenderInterestLocal.owedTotal = owedTotal > interestRefundToBorrower ? owedTotal - interestRefundToBorrower : 0;\n\n\t\treturn interestRefundToBorrower;\n\t}\n\n\tfunction _emitClosingEvents(\n\t\tLoanParams memory loanParamsLocal,\n\t\tLoan memory loanLocal,\n\t\tuint256 loanCloseAmount,\n\t\tuint256 collateralCloseAmount,\n\t\tuint256 collateralToLoanRate,\n\t\tuint256 collateralToLoanSwapRate,\n\t\tuint256 currentMargin,\n\t\tCloseTypes closeType\n\t) internal {\n\t\tif (closeType == CloseTypes.Deposit) {\n\t\t\temit CloseWithDeposit(\n\t\t\t\tloanLocal.borrower, /// user (borrower)\n\t\t\t\tloanLocal.lender, /// lender\n\t\t\t\tloanLocal.id, /// loanId\n\t\t\t\tmsg.sender, /// closer\n\t\t\t\tloanParamsLocal.loanToken, /// loanToken\n\t\t\t\tloanParamsLocal.collateralToken, /// collateralToken\n\t\t\t\tloanCloseAmount, /// loanCloseAmount\n\t\t\t\tcollateralCloseAmount, /// collateralCloseAmount\n\t\t\t\tcollateralToLoanRate, /// collateralToLoanRate\n\t\t\t\tcurrentMargin /// currentMargin\n\t\t\t);\n\t\t} else if (closeType == CloseTypes.Swap) {\n\t\t\t/// exitPrice = 1 / collateralToLoanSwapRate\n\t\t\tif (collateralToLoanSwapRate != 0) {\n\t\t\t\tcollateralToLoanSwapRate = SafeMath.div(10**36, collateralToLoanSwapRate);\n\t\t\t}\n\n\t\t\t/// currentLeverage = 100 / currentMargin\n\t\t\tif (currentMargin != 0) {\n\t\t\t\tcurrentMargin = SafeMath.div(10**38, currentMargin);\n\t\t\t}\n\n\t\t\temit CloseWithSwap(\n\t\t\t\tloanLocal.borrower, /// user (trader)\n\t\t\t\tloanLocal.lender, /// lender\n\t\t\t\tloanLocal.id, /// loanId\n\t\t\t\tloanParamsLocal.collateralToken, /// collateralToken\n\t\t\t\tloanParamsLocal.loanToken, /// loanToken\n\t\t\t\tmsg.sender, /// closer\n\t\t\t\tcollateralCloseAmount, /// positionCloseSize\n\t\t\t\tloanCloseAmount, /// loanCloseAmount\n\t\t\t\tcollateralToLoanSwapRate, /// exitPrice (1 / collateralToLoanSwapRate)\n\t\t\t\tcurrentMargin /// currentLeverage\n\t\t\t);\n\t\t}\n\t}\n}\n"
      },
      "contracts/events/LoanClosingsEvents.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"./ModulesCommonEvents.sol\";\n\n/**\n * @title The Loan Closing Events contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the events for loan closing operations.\n * */\ncontract LoanClosingsEvents is ModulesCommonEvents {\n\t/// topic0: 0x6349c1a02ec126f7f4fc6e6837e1859006e90e9901635c442d29271e77b96fb6\n\tevent CloseWithDeposit(\n\t\taddress indexed user,\n\t\taddress indexed lender,\n\t\tbytes32 indexed loanId,\n\t\taddress closer,\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 repayAmount,\n\t\tuint256 collateralWithdrawAmount,\n\t\tuint256 collateralToLoanRate,\n\t\tuint256 currentMargin\n\t);\n\n\t/// topic0: 0x2ed7b29b4ca95cf3bb9a44f703872a66e6aa5e8f07b675fa9a5c124a1e5d7352\n\tevent CloseWithSwap(\n\t\taddress indexed user,\n\t\taddress indexed lender,\n\t\tbytes32 indexed loanId,\n\t\taddress collateralToken,\n\t\taddress loanToken,\n\t\taddress closer,\n\t\tuint256 positionCloseSize,\n\t\tuint256 loanCloseAmount,\n\t\tuint256 exitPrice, // one unit of collateralToken, denominated in loanToken\n\t\tuint256 currentLeverage\n\t);\n\n\t/// topic0: 0x46fa03303782eb2f686515f6c0100f9a62dabe587b0d3f5a4fc0c822d6e532d3\n\tevent Liquidate(\n\t\taddress indexed user,\n\t\taddress indexed liquidator,\n\t\tbytes32 indexed loanId,\n\t\taddress lender,\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 repayAmount,\n\t\tuint256 collateralWithdrawAmount,\n\t\tuint256 collateralToLoanRate,\n\t\tuint256 currentMargin\n\t);\n\n\tevent swapExcess(bool shouldRefund, uint256 amount, uint256 amountInRbtc, uint256 threshold);\n}\n"
      },
      "contracts/interfaces/ILoanPool.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity >=0.5.0 <0.6.0;\n\ninterface ILoanPool {\n\tfunction tokenPrice() external view returns (uint256 price);\n\n\tfunction borrowInterestRate() external view returns (uint256);\n\n\tfunction totalAssetSupply() external view returns (uint256);\n}\n"
      },
      "contracts/mixins/RewardHelper.sol": {
        "content": "pragma solidity 0.5.17;\n\nimport \"../core/State.sol\";\nimport \"../feeds/IPriceFeeds.sol\";\n\n/**\n * @title The Reward Helper contract.\n * @notice This contract calculates the reward for rollover transactions.\n *\n * A rollover is a renewal of a deposit. Instead of liquidating a deposit\n * on maturity, you can roll it over into a new deposit. The outstanding\n * principal of the old deposit is rolled over with or without the interest\n * outstanding on it.\n * */\ncontract RewardHelper is State {\n\tusing SafeMath for uint256;\n\n\t/**\n\t * @notice Calculate the reward of a rollover transaction.\n\t *\n\t * @param collateralToken The address of the collateral token.\n\t * @param loanToken The address of the loan token.\n\t * @param positionSize The amount of value of the position.\n\t *\n\t * @return The base fee + the flex fee.\n\t */\n\tfunction _getRolloverReward(\n\t\taddress collateralToken,\n\t\taddress loanToken,\n\t\tuint256 positionSize\n\t) internal view returns (uint256 reward) {\n\t\tuint256 positionSizeInCollateralToken = IPriceFeeds(priceFeeds).queryReturn(loanToken, collateralToken, positionSize);\n\t\tuint256 rolloverBaseRewardInCollateralToken =\n\t\t\tIPriceFeeds(priceFeeds).queryReturn(address(wrbtcToken), collateralToken, rolloverBaseReward);\n\n\t\treturn\n\t\t\trolloverBaseRewardInCollateralToken\n\t\t\t\t.mul(2) /// baseFee\n\t\t\t\t.add(positionSizeInCollateralToken.mul(rolloverFlexFeePercent).div(10**20)); /// flexFee = 0.1% of position size\n\t}\n}\n"
      },
      "contracts/modules/LoanClosingsBase.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../core/State.sol\";\nimport \"../events/LoanClosingsEvents.sol\";\nimport \"../mixins/VaultController.sol\";\nimport \"../mixins/InterestUser.sol\";\nimport \"../mixins/LiquidationHelper.sol\";\nimport \"../swaps/SwapsUser.sol\";\nimport \"../interfaces/ILoanPool.sol\";\nimport \"../mixins/RewardHelper.sol\";\nimport \"../mixins/ModuleCommonFunctionalities.sol\";\n\n/**\n * @title LoanClosingsBase contract.\n * @notice Ways to close a loan: liquidation, rollover. Margin trade\n *   positions are always closed with a swap.\n *\n * Loans are liquidated if the position goes below margin maintenance.\n * */\ncontract LoanClosingsBase is\n\tLoanClosingsEvents,\n\tVaultController,\n\tInterestUser,\n\tSwapsUser,\n\tLiquidationHelper,\n\tRewardHelper,\n\tModuleCommonFunctionalities\n{\n\tuint256 internal constant MONTH = 365 days / 12;\n\t//0.00001 BTC, would be nicer in State.sol, but would require a redeploy of the complete protocol, so adding it here instead\n\t//because it's not shared state anyway and only used by this contract\n\tuint256 public constant paySwapExcessToBorrowerThreshold = 10000000000000;\n\n\tenum CloseTypes { Deposit, Swap, Liquidation }\n\n\tconstructor() public {}\n\n\tfunction() external {\n\t\trevert(\"fallback not allowed\");\n\t}\n\n\tfunction initialize(address target) external onlyOwner {\n\t\taddress prevModuleContractAddress = logicTargets[this.liquidate.selector];\n\t\t_setTarget(this.liquidate.selector, target);\n\t\t_setTarget(this.rollover.selector, target);\n\t\temit ProtocolModuleContractReplaced(prevModuleContractAddress, target, \"LoanClosingsBase\");\n\t}\n\n\t/**\n\t * @notice Liquidate an unhealty loan.\n\t *\n\t * @dev Public wrapper for _liquidate internal function.\n\t *\n\t * The caller needs to approve the closeAmount prior to calling. Will\n\t * not liquidate more than is needed to restore the desired margin\n\t * (maintenance +5%).\n\t *\n\t * Whenever the current margin of a loan falls below maintenance margin,\n\t * it needs to be liquidated. Anybody can initiate a liquidation and buy\n\t * the collateral tokens at a discounted rate (5%).\n\t *\n\t * @param loanId The ID of the loan to liquidate.\n\t *   loanId is the ID of the loan, which is created on loan opening.\n\t *   It can be obtained either by parsing the Trade event or by reading\n\t *   the open loans from the contract by calling getActiveLoans or getUserLoans.\n\t * @param receiver The receiver of the seized amount.\n\t * @param closeAmount The amount to close in loanTokens.\n\t *\n\t * @return loanCloseAmount The amount of the collateral token of the loan.\n\t * @return seizedAmount The seized amount in the collateral token.\n\t * @return seizedToken The loan token address.\n\t * */\n\tfunction liquidate(\n\t\tbytes32 loanId,\n\t\taddress receiver,\n\t\tuint256 closeAmount // denominated in loanToken\n\t)\n\t\texternal\n\t\tpayable\n\t\tnonReentrant\n\t\twhenNotPaused\n\t\treturns (\n\t\t\tuint256 loanCloseAmount,\n\t\t\tuint256 seizedAmount,\n\t\t\taddress seizedToken\n\t\t)\n\t{\n\t\treturn _liquidate(loanId, receiver, closeAmount);\n\t}\n\n\t/**\n\t * @notice Roll over a loan.\n\t *\n\t * @dev Public wrapper for _rollover internal function.\n\t *\n\t * Each loan has a duration. In case of a margin trade it is set to 28\n\t * days, in case of borrowing, it can be set by the user. On loan\n\t * openning, the user pays the interest for this duration in advance.\n\t * If closing early, he gets the excess refunded. If it is not closed\n\t * before the end date, it needs to be rolled over. On rollover the\n\t * interest is paid for the next period. In case of margin trading\n\t * it's 28 days, in case of borrowing it's a month.\n\t *\n\t * The function rollover on the protocol contract extends the loan\n\t * duration by the maximum term (28 days for margin trades at the moment\n\t * of writing), pays the interest to the lender and refunds the caller\n\t * for the gas cost by sending 2 * the gas cost using the fast gas price\n\t * as base for the calculation.\n\t *\n\t * @param loanId The ID of the loan to roll over.\n\t * // param calldata The payload for the call. These loan DataBytes are additional loan data (not in use for token swaps).\n\t * */\n\tfunction rollover(\n\t\tbytes32 loanId,\n\t\tbytes calldata // for future use /*loanDataBytes*/\n\t) external nonReentrant whenNotPaused {\n\t\t// restrict to EOAs to prevent griefing attacks, during interest rate recalculation\n\t\trequire(msg.sender == tx.origin, \"only EOAs can call\");\n\n\t\treturn\n\t\t\t_rollover(\n\t\t\t\tloanId,\n\t\t\t\t\"\" // loanDataBytes\n\t\t\t);\n\t}\n\n\t/**\n\t * @notice Internal function for liquidating an unhealthy loan.\n\t *\n\t * The caller needs to approve the closeAmount prior to calling. Will\n\t * not liquidate more than is needed to restore the desired margin\n\t * (maintenance +5%).\n\t *\n\t * Whenever the current margin of a loan falls below maintenance margin,\n\t * it needs to be liquidated. Anybody can initiate a liquidation and buy\n\t * the collateral tokens at a discounted rate (5%).\n\t *\n\t * @param loanId The ID of the loan to liquidate.\n\t * @param receiver The receiver of the seized amount.\n\t * @param closeAmount The amount to close in loanTokens.\n\t *\n\t * @return loanCloseAmount The amount of the collateral token of the loan.\n\t * @return seizedAmount The seized amount in the collateral token.\n\t * @return seizedToken The loan token address.\n\t * */\n\tfunction _liquidate(\n\t\tbytes32 loanId,\n\t\taddress receiver,\n\t\tuint256 closeAmount\n\t)\n\t\tinternal\n\t\treturns (\n\t\t\tuint256 loanCloseAmount,\n\t\t\tuint256 seizedAmount,\n\t\t\taddress seizedToken\n\t\t)\n\t{\n\t\tLoan storage loanLocal = loans[loanId];\n\t\tLoanParams storage loanParamsLocal = loanParams[loanLocal.loanParamsId];\n\n\t\trequire(loanLocal.active, \"loan is closed\");\n\t\trequire(loanParamsLocal.id != 0, \"loanParams not exists\");\n\n\t\t(uint256 currentMargin, uint256 collateralToLoanRate) =\n\t\t\tIPriceFeeds(priceFeeds).getCurrentMargin(\n\t\t\t\tloanParamsLocal.loanToken,\n\t\t\t\tloanParamsLocal.collateralToken,\n\t\t\t\tloanLocal.principal,\n\t\t\t\tloanLocal.collateral\n\t\t\t);\n\t\trequire(currentMargin <= loanParamsLocal.maintenanceMargin, \"healthy position\");\n\n\t\tloanCloseAmount = closeAmount;\n\n\t\t//amounts to restore the desired margin (maintencance + 5%)\n\t\t(uint256 maxLiquidatable, uint256 maxSeizable, ) =\n\t\t\t_getLiquidationAmounts(\n\t\t\t\tloanLocal.principal,\n\t\t\t\tloanLocal.collateral,\n\t\t\t\tcurrentMargin,\n\t\t\t\tloanParamsLocal.maintenanceMargin,\n\t\t\t\tcollateralToLoanRate\n\t\t\t);\n\n\t\tif (loanCloseAmount < maxLiquidatable) {\n\t\t\tseizedAmount = maxSeizable.mul(loanCloseAmount).div(maxLiquidatable);\n\t\t} else if (loanCloseAmount > maxLiquidatable) {\n\t\t\t// adjust down the close amount to the max\n\t\t\tloanCloseAmount = maxLiquidatable;\n\t\t\tseizedAmount = maxSeizable;\n\t\t} else {\n\t\t\tseizedAmount = maxSeizable;\n\t\t}\n\n\t\trequire(loanCloseAmount != 0, \"nothing to liquidate\");\n\n\t\t// liquidator deposits the principal being closed\n\t\t_returnPrincipalWithDeposit(loanParamsLocal.loanToken, address(this), loanCloseAmount);\n\n\t\t// a portion of the principal is repaid to the lender out of interest refunded\n\t\tuint256 loanCloseAmountLessInterest = _settleInterestToPrincipal(loanLocal, loanParamsLocal, loanCloseAmount, loanLocal.borrower);\n\n\t\tif (loanCloseAmount > loanCloseAmountLessInterest) {\n\t\t\t// full interest refund goes to the borrower\n\t\t\t_withdrawAsset(loanParamsLocal.loanToken, loanLocal.borrower, loanCloseAmount - loanCloseAmountLessInterest);\n\t\t}\n\n\t\tif (loanCloseAmountLessInterest != 0) {\n\t\t\t// The lender always gets back an ERC20 (even wrbtc), so we call withdraw directly rather than\n\t\t\t// use the _withdrawAsset helper function\n\t\t\tvaultWithdraw(loanParamsLocal.loanToken, loanLocal.lender, loanCloseAmountLessInterest);\n\t\t}\n\n\t\tseizedToken = loanParamsLocal.collateralToken;\n\n\t\tif (seizedAmount != 0) {\n\t\t\tloanLocal.collateral = loanLocal.collateral.sub(seizedAmount);\n\n\t\t\t_withdrawAsset(seizedToken, receiver, seizedAmount);\n\t\t}\n\n\t\t_closeLoan(loanLocal, loanCloseAmount);\n\n\t\t_emitClosingEvents(\n\t\t\tloanParamsLocal,\n\t\t\tloanLocal,\n\t\t\tloanCloseAmount,\n\t\t\tseizedAmount,\n\t\t\tcollateralToLoanRate,\n\t\t\tcurrentMargin,\n\t\t\tCloseTypes.Liquidation\n\t\t);\n\t}\n\n\t/**\n\t * @notice Internal function for roll over a loan.\n\t *\n\t * Each loan has a duration. In case of a margin trade it is set to 28\n\t * days, in case of borrowing, it can be set by the user. On loan\n\t * openning, the user pays the interest for this duration in advance.\n\t * If closing early, he gets the excess refunded. If it is not closed\n\t * before the end date, it needs to be rolled over. On rollover the\n\t * interest is paid for the next period. In case of margin trading\n\t * it's 28 days, in case of borrowing it's a month.\n\t *\n\t * @param loanId The ID of the loan to roll over.\n\t * @param loanDataBytes The payload for the call. These loan DataBytes are\n\t *   additional loan data (not in use for token swaps).\n\t * */\n\tfunction _rollover(bytes32 loanId, bytes memory loanDataBytes) internal {\n\t\tLoan storage loanLocal = loans[loanId];\n\t\tLoanParams storage loanParamsLocal = loanParams[loanLocal.loanParamsId];\n\n\t\trequire(loanLocal.active, \"loan is closed\");\n\t\trequire(loanParamsLocal.id != 0, \"loanParams not exists\");\n\t\trequire(block.timestamp > loanLocal.endTimestamp.sub(3600), \"healthy position\");\n\t\trequire(loanPoolToUnderlying[loanLocal.lender] != address(0), \"invalid lender\");\n\n\t\t// pay outstanding interest to lender\n\t\t_payInterest(loanLocal.lender, loanParamsLocal.loanToken);\n\n\t\tLoanInterest storage loanInterestLocal = loanInterest[loanLocal.id];\n\t\tLenderInterest storage lenderInterestLocal = lenderInterest[loanLocal.lender][loanParamsLocal.loanToken];\n\n\t\t_settleFeeRewardForInterestExpense(\n\t\t\tloanInterestLocal,\n\t\t\tloanLocal.id,\n\t\t\tloanParamsLocal.loanToken, /// fee token\n\t\t\tloanParamsLocal.collateralToken, /// pairToken (used to check if there is any special rebates or not) -- to pay fee reward\n\t\t\tloanLocal.borrower,\n\t\t\tblock.timestamp\n\t\t);\n\n\t\t// Handle back interest: calculates interest owned since the loan endtime passed but the loan remained open\n\t\tuint256 backInterestTime;\n\t\tuint256 backInterestOwed;\n\t\tif (block.timestamp > loanLocal.endTimestamp) {\n\t\t\tbackInterestTime = block.timestamp.sub(loanLocal.endTimestamp);\n\t\t\tbackInterestOwed = backInterestTime.mul(loanInterestLocal.owedPerDay);\n\t\t\tbackInterestOwed = backInterestOwed.div(1 days);\n\t\t}\n\n\t\t//note: to avoid code duplication, it would be nicer to store loanParamsLocal.maxLoanTerm in a local variable\n\t\t//however, we've got stack too deep issues if we do so.\n\t\tif (loanParamsLocal.maxLoanTerm != 0) {\n\t\t\t// fixed-term loan, so need to query iToken for latest variable rate\n\t\t\tuint256 owedPerDay = loanLocal.principal.mul(ILoanPool(loanLocal.lender).borrowInterestRate()).div(365 * 10**20);\n\n\t\t\tlenderInterestLocal.owedPerDay = lenderInterestLocal.owedPerDay.add(owedPerDay);\n\t\t\tlenderInterestLocal.owedPerDay = lenderInterestLocal.owedPerDay.sub(loanInterestLocal.owedPerDay);\n\n\t\t\tloanInterestLocal.owedPerDay = owedPerDay;\n\n\t\t\t//if the loan has been open for longer than an additional period, add at least 1 additional day\n\t\t\tif (backInterestTime >= loanParamsLocal.maxLoanTerm) {\n\t\t\t\tloanLocal.endTimestamp = loanLocal.endTimestamp.add(backInterestTime).add(1 days);\n\t\t\t}\n\t\t\t//extend by the max loan term\n\t\t\telse {\n\t\t\t\tloanLocal.endTimestamp = loanLocal.endTimestamp.add(loanParamsLocal.maxLoanTerm);\n\t\t\t}\n\t\t} else {\n\t\t\t// loanInterestLocal.owedPerDay doesn't change\n\t\t\tif (backInterestTime >= MONTH) {\n\t\t\t\tloanLocal.endTimestamp = loanLocal.endTimestamp.add(backInterestTime).add(1 days);\n\t\t\t} else {\n\t\t\t\tloanLocal.endTimestamp = loanLocal.endTimestamp.add(MONTH);\n\t\t\t}\n\t\t}\n\n\t\tuint256 interestAmountRequired = loanLocal.endTimestamp.sub(block.timestamp);\n\t\tinterestAmountRequired = interestAmountRequired.mul(loanInterestLocal.owedPerDay);\n\t\tinterestAmountRequired = interestAmountRequired.div(1 days);\n\n\t\tloanInterestLocal.depositTotal = loanInterestLocal.depositTotal.add(interestAmountRequired);\n\n\t\tlenderInterestLocal.owedTotal = lenderInterestLocal.owedTotal.add(interestAmountRequired);\n\n\t\t// add backInterestOwed\n\t\tinterestAmountRequired = interestAmountRequired.add(backInterestOwed);\n\n\t\t// collect interest (needs to be converted from the collateral)\n\t\t(uint256 destTokenAmountReceived, uint256 sourceTokenAmountUsed, ) =\n\t\t\t_doCollateralSwap(\n\t\t\t\tloanLocal,\n\t\t\t\tloanParamsLocal,\n\t\t\t\t0, //min swap 0 -> swap connector estimates the amount of source tokens to use\n\t\t\t\tinterestAmountRequired, //required destination tokens\n\t\t\t\ttrue, // returnTokenIsCollateral\n\t\t\t\tloanDataBytes\n\t\t\t);\n\n\t\t//received more tokens than needed to pay the interest\n\t\tif (destTokenAmountReceived > interestAmountRequired) {\n\t\t\t// swap rest back to collateral, if the amount is big enough to cover gas cost\n\t\t\tif (worthTheTransfer(loanParamsLocal.loanToken, destTokenAmountReceived - interestAmountRequired)) {\n\t\t\t\t(destTokenAmountReceived, , ) = _swapBackExcess(\n\t\t\t\t\tloanLocal,\n\t\t\t\t\tloanParamsLocal,\n\t\t\t\t\tdestTokenAmountReceived - interestAmountRequired, //amount to be swapped\n\t\t\t\t\tloanDataBytes\n\t\t\t\t);\n\t\t\t\tsourceTokenAmountUsed = sourceTokenAmountUsed.sub(destTokenAmountReceived);\n\t\t\t}\n\t\t\t//else give it to the protocol as a lending fee\n\t\t\telse {\n\t\t\t\t_payLendingFee(loanLocal.borrower, loanParamsLocal.loanToken, destTokenAmountReceived - interestAmountRequired);\n\t\t\t}\n\t\t}\n\n\t\t//subtract the interest from the collateral\n\t\tloanLocal.collateral = loanLocal.collateral.sub(sourceTokenAmountUsed);\n\n\t\tif (backInterestOwed != 0) {\n\t\t\t// pay out backInterestOwed\n\n\t\t\t_payInterestTransfer(loanLocal.lender, loanParamsLocal.loanToken, backInterestOwed);\n\t\t}\n\n\t\tuint256 rolloverReward = _getRolloverReward(loanParamsLocal.collateralToken, loanParamsLocal.loanToken, loanLocal.principal);\n\n\t\tif (rolloverReward != 0) {\n\t\t\t// pay out reward to caller\n\t\t\tloanLocal.collateral = loanLocal.collateral.sub(rolloverReward);\n\n\t\t\t_withdrawAsset(loanParamsLocal.collateralToken, msg.sender, rolloverReward);\n\t\t}\n\n\t\t(uint256 currentMargin, ) =\n\t\t\tIPriceFeeds(priceFeeds).getCurrentMargin(\n\t\t\t\tloanParamsLocal.loanToken,\n\t\t\t\tloanParamsLocal.collateralToken,\n\t\t\t\tloanLocal.principal,\n\t\t\t\tloanLocal.collateral\n\t\t\t);\n\t\trequire(\n\t\t\tcurrentMargin > 3 ether, // ensure there's more than 3% margin remaining\n\t\t\t\"unhealthy position\"\n\t\t);\n\t}\n\n\t/**\n\t * @dev computes the interest which needs to be refunded to the borrower based on the amount he's closing and either\n\t * subtracts it from the amount which still needs to be paid back (in case outstanding amount > interest) or withdraws the\n\t * excess to the borrower (in case interest > outstanding).\n\t * @param loanLocal the loan\n\t * @param loanParamsLocal the loan params\n\t * @param loanCloseAmount the amount to be closed (base for the computation)\n\t * @param receiver the address of the receiver (usually the borrower)\n\t * */\n\tfunction _settleInterestToPrincipal(\n\t\tLoan memory loanLocal,\n\t\tLoanParams memory loanParamsLocal,\n\t\tuint256 loanCloseAmount,\n\t\taddress receiver\n\t) internal returns (uint256) {\n\t\tuint256 loanCloseAmountLessInterest = loanCloseAmount;\n\n\t\t//compute the interest which neeeds to be refunded to the borrower (because full interest is paid on loan )\n\t\tuint256 interestRefundToBorrower = _settleInterest(loanParamsLocal, loanLocal, loanCloseAmountLessInterest);\n\n\t\tuint256 interestAppliedToPrincipal;\n\t\t//if the outstanding loan is bigger than the interest to be refunded, reduce the amount to be paid back / closed by the interest\n\t\tif (loanCloseAmountLessInterest >= interestRefundToBorrower) {\n\t\t\t// apply all of borrower interest refund torwards principal\n\t\t\tinterestAppliedToPrincipal = interestRefundToBorrower;\n\n\t\t\t// principal needed is reduced by this amount\n\t\t\tloanCloseAmountLessInterest -= interestRefundToBorrower;\n\n\t\t\t// no interest refund remaining\n\t\t\tinterestRefundToBorrower = 0;\n\t\t} else {\n\t\t\t//if the interest refund is bigger than the outstanding loan, the user needs to get back the interest\n\t\t\t// principal fully covered by excess interest\n\t\t\tinterestAppliedToPrincipal = loanCloseAmountLessInterest;\n\n\t\t\t// amount refunded is reduced by this amount\n\t\t\tinterestRefundToBorrower -= loanCloseAmountLessInterest;\n\n\t\t\t// principal fully covered by excess interest\n\t\t\tloanCloseAmountLessInterest = 0;\n\n\t\t\tif (interestRefundToBorrower != 0) {\n\t\t\t\t// refund overage\n\t\t\t\t_withdrawAsset(loanParamsLocal.loanToken, receiver, interestRefundToBorrower);\n\t\t\t}\n\t\t}\n\n\t\t//pay the interest to the lender\n\t\t//note: this is a waste of gas, because the loanCloseAmountLessInterest is withdrawn to the lender, too. It could be done at once.\n\t\tif (interestAppliedToPrincipal != 0) {\n\t\t\t// The lender always gets back an ERC20 (even wrbtc), so we call withdraw directly rather than\n\t\t\t// use the _withdrawAsset helper function\n\t\t\tvaultWithdraw(loanParamsLocal.loanToken, loanLocal.lender, interestAppliedToPrincipal);\n\t\t}\n\n\t\treturn loanCloseAmountLessInterest;\n\t}\n\n\t// The receiver always gets back an ERC20 (even wrbtc)\n\tfunction _returnPrincipalWithDeposit(\n\t\taddress loanToken,\n\t\taddress receiver,\n\t\tuint256 principalNeeded\n\t) internal {\n\t\tif (principalNeeded != 0) {\n\t\t\tif (msg.value == 0) {\n\t\t\t\tvaultTransfer(loanToken, msg.sender, receiver, principalNeeded);\n\t\t\t} else {\n\t\t\t\trequire(loanToken == address(wrbtcToken), \"wrong asset sent\");\n\t\t\t\trequire(msg.value >= principalNeeded, \"not enough ether\");\n\t\t\t\twrbtcToken.deposit.value(principalNeeded)();\n\t\t\t\tif (receiver != address(this)) {\n\t\t\t\t\tvaultTransfer(loanToken, address(this), receiver, principalNeeded);\n\t\t\t\t}\n\t\t\t\tif (msg.value > principalNeeded) {\n\t\t\t\t\t// refund overage\n\t\t\t\t\tAddress.sendValue(msg.sender, msg.value - principalNeeded);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\trequire(msg.value == 0, \"wrong asset sent\");\n\t\t}\n\t}\n\n\t/**\n\t * @dev checks if the amount of the asset to be transfered is worth the transfer fee\n\t * @param asset the asset to be transfered\n\t * @param amount the amount to be transfered\n\t * @return True if the amount is bigger than the threshold\n\t * */\n\tfunction worthTheTransfer(address asset, uint256 amount) internal returns (bool) {\n\t\t(uint256 rbtcRate, uint256 rbtcPrecision) = IPriceFeeds(priceFeeds).queryRate(asset, address(wrbtcToken));\n\t\tuint256 amountInRbtc = amount.mul(rbtcRate).div(rbtcPrecision);\n\t\temit swapExcess(amountInRbtc > paySwapExcessToBorrowerThreshold, amount, amountInRbtc, paySwapExcessToBorrowerThreshold);\n\t\treturn amountInRbtc > paySwapExcessToBorrowerThreshold;\n\t}\n\n\t/**\n\t * swaps collateral tokens for loan tokens\n\t * @param loanLocal the loan object\n\t * @param loanParamsLocal the loan parameters\n\t * @param swapAmount the amount to be swapped\n\t * @param principalNeeded the required destination token amount\n\t * @param returnTokenIsCollateral if true -> required destination token amount will be passed on, else not\n\t *          note: quite dirty. should be refactored.\n\t * @param loanDataBytes additional loan data (not in use for token swaps)\n\t * */\n\tfunction _doCollateralSwap(\n\t\tLoan memory loanLocal,\n\t\tLoanParams memory loanParamsLocal,\n\t\tuint256 swapAmount,\n\t\tuint256 principalNeeded,\n\t\tbool returnTokenIsCollateral,\n\t\tbytes memory loanDataBytes\n\t)\n\t\tinternal\n\t\treturns (\n\t\t\tuint256 destTokenAmountReceived,\n\t\t\tuint256 sourceTokenAmountUsed,\n\t\t\tuint256 collateralToLoanSwapRate\n\t\t)\n\t{\n\t\t(destTokenAmountReceived, sourceTokenAmountUsed, collateralToLoanSwapRate) = _loanSwap(\n\t\t\tloanLocal.id,\n\t\t\tloanParamsLocal.collateralToken,\n\t\t\tloanParamsLocal.loanToken,\n\t\t\tloanLocal.borrower,\n\t\t\tswapAmount, // minSourceTokenAmount\n\t\t\tloanLocal.collateral, // maxSourceTokenAmount\n\t\t\treturnTokenIsCollateral\n\t\t\t\t? principalNeeded // requiredDestTokenAmount\n\t\t\t\t: 0,\n\t\t\tfalse, // bypassFee\n\t\t\tloanDataBytes\n\t\t);\n\t\trequire(destTokenAmountReceived >= principalNeeded, \"insufficient dest amount\");\n\t\trequire(sourceTokenAmountUsed <= loanLocal.collateral, \"excessive source amount\");\n\t}\n\n\t/**\n\t * @notice Swap back excessive loan tokens to collateral tokens.\n\t *\n\t * @param loanLocal The loan object.\n\t * @param loanParamsLocal The loan parameters.\n\t * @param swapAmount The amount to be swapped.\n\t * @param loanDataBytes Additional loan data (not in use for token swaps).\n\t *\n\t * @return destTokenAmountReceived The amount of destiny tokens received.\n\t * @return sourceTokenAmountUsed The amount of source tokens used.\n\t * @return collateralToLoanSwapRate The swap rate of collateral.\n\t * */\n\tfunction _swapBackExcess(\n\t\tLoan memory loanLocal,\n\t\tLoanParams memory loanParamsLocal,\n\t\tuint256 swapAmount,\n\t\tbytes memory loanDataBytes\n\t)\n\t\tinternal\n\t\treturns (\n\t\t\tuint256 destTokenAmountReceived,\n\t\t\tuint256 sourceTokenAmountUsed,\n\t\t\tuint256 collateralToLoanSwapRate\n\t\t)\n\t{\n\t\t(destTokenAmountReceived, sourceTokenAmountUsed, collateralToLoanSwapRate) = _loanSwap(\n\t\t\tloanLocal.id,\n\t\t\tloanParamsLocal.loanToken,\n\t\t\tloanParamsLocal.collateralToken,\n\t\t\tloanLocal.borrower,\n\t\t\tswapAmount, // minSourceTokenAmount\n\t\t\tswapAmount, // maxSourceTokenAmount\n\t\t\t0, // requiredDestTokenAmount\n\t\t\tfalse, // bypassFee\n\t\t\tloanDataBytes\n\t\t);\n\t\trequire(sourceTokenAmountUsed <= swapAmount, \"excessive source amount\");\n\t}\n\n\t/**\n\t * @notice Withdraw asset to receiver.\n\t *\n\t * @param assetToken The loan token.\n\t * @param receiver The address of the receiver.\n\t * @param assetAmount The loan token amount.\n\t * */\n\tfunction _withdrawAsset(\n\t\taddress assetToken,\n\t\taddress receiver,\n\t\tuint256 assetAmount\n\t) internal {\n\t\tif (assetAmount != 0) {\n\t\t\tif (assetToken == address(wrbtcToken)) {\n\t\t\t\tvaultEtherWithdraw(receiver, assetAmount);\n\t\t\t} else {\n\t\t\t\tvaultWithdraw(assetToken, receiver, assetAmount);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Internal function to close a loan.\n\t *\n\t * @param loanLocal The loan object.\n\t * @param loanCloseAmount The amount to close: principal or lower.\n\t *\n\t * */\n\tfunction _closeLoan(Loan storage loanLocal, uint256 loanCloseAmount) internal {\n\t\trequire(loanCloseAmount != 0, \"nothing to close\");\n\n\t\tif (loanCloseAmount == loanLocal.principal) {\n\t\t\tloanLocal.principal = 0;\n\t\t\tloanLocal.active = false;\n\t\t\tloanLocal.endTimestamp = block.timestamp;\n\t\t\tloanLocal.pendingTradesId = 0;\n\t\t\tactiveLoansSet.removeBytes32(loanLocal.id);\n\t\t\tlenderLoanSets[loanLocal.lender].removeBytes32(loanLocal.id);\n\t\t\tborrowerLoanSets[loanLocal.borrower].removeBytes32(loanLocal.id);\n\t\t} else {\n\t\t\tloanLocal.principal = loanLocal.principal.sub(loanCloseAmount);\n\t\t}\n\t}\n\n\tfunction _settleInterest(\n\t\tLoanParams memory loanParamsLocal,\n\t\tLoan memory loanLocal,\n\t\tuint256 closePrincipal\n\t) internal returns (uint256) {\n\t\t// pay outstanding interest to lender\n\t\t_payInterest(loanLocal.lender, loanParamsLocal.loanToken);\n\n\t\tLoanInterest storage loanInterestLocal = loanInterest[loanLocal.id];\n\t\tLenderInterest storage lenderInterestLocal = lenderInterest[loanLocal.lender][loanParamsLocal.loanToken];\n\n\t\tuint256 interestTime = block.timestamp;\n\t\tif (interestTime > loanLocal.endTimestamp) {\n\t\t\tinterestTime = loanLocal.endTimestamp;\n\t\t}\n\n\t\t_settleFeeRewardForInterestExpense(\n\t\t\tloanInterestLocal,\n\t\t\tloanLocal.id,\n\t\t\tloanParamsLocal.loanToken, /// fee token\n\t\t\tloanParamsLocal.collateralToken, /// pairToken (used to check if there is any special rebates or not) -- to pay fee reward\n\t\t\tloanLocal.borrower,\n\t\t\tinterestTime\n\t\t);\n\n\t\tuint256 owedPerDayRefund;\n\t\tif (closePrincipal < loanLocal.principal) {\n\t\t\towedPerDayRefund = loanInterestLocal.owedPerDay.mul(closePrincipal).div(loanLocal.principal);\n\t\t} else {\n\t\t\towedPerDayRefund = loanInterestLocal.owedPerDay;\n\t\t}\n\n\t\t// update stored owedPerDay\n\t\tloanInterestLocal.owedPerDay = loanInterestLocal.owedPerDay.sub(owedPerDayRefund);\n\t\tlenderInterestLocal.owedPerDay = lenderInterestLocal.owedPerDay.sub(owedPerDayRefund);\n\n\t\t// update borrower interest\n\t\tuint256 interestRefundToBorrower = loanLocal.endTimestamp.sub(interestTime);\n\t\tinterestRefundToBorrower = interestRefundToBorrower.mul(owedPerDayRefund);\n\t\tinterestRefundToBorrower = interestRefundToBorrower.div(1 days);\n\n\t\tif (closePrincipal < loanLocal.principal) {\n\t\t\tloanInterestLocal.depositTotal = loanInterestLocal.depositTotal.sub(interestRefundToBorrower);\n\t\t} else {\n\t\t\tloanInterestLocal.depositTotal = 0;\n\t\t}\n\n\t\t// update remaining lender interest values\n\t\tlenderInterestLocal.principalTotal = lenderInterestLocal.principalTotal.sub(closePrincipal);\n\n\t\tuint256 owedTotal = lenderInterestLocal.owedTotal;\n\t\tlenderInterestLocal.owedTotal = owedTotal > interestRefundToBorrower ? owedTotal - interestRefundToBorrower : 0;\n\n\t\treturn interestRefundToBorrower;\n\t}\n\n\tfunction _emitClosingEvents(\n\t\tLoanParams memory loanParamsLocal,\n\t\tLoan memory loanLocal,\n\t\tuint256 loanCloseAmount,\n\t\tuint256 collateralCloseAmount,\n\t\tuint256 collateralToLoanRate,\n\t\tuint256 currentMargin,\n\t\tCloseTypes closeType\n\t) internal {\n\t\tif (closeType == CloseTypes.Liquidation)\n\t\t\temit Liquidate(\n\t\t\t\tloanLocal.borrower, // user (borrower)\n\t\t\t\tmsg.sender, // liquidator\n\t\t\t\tloanLocal.id, // loanId\n\t\t\t\tloanLocal.lender, // lender\n\t\t\t\tloanParamsLocal.loanToken, // loanToken\n\t\t\t\tloanParamsLocal.collateralToken, // collateralToken\n\t\t\t\tloanCloseAmount, // loanCloseAmount\n\t\t\t\tcollateralCloseAmount, // collateralCloseAmount\n\t\t\t\tcollateralToLoanRate, // collateralToLoanRate\n\t\t\t\tcurrentMargin // currentMargin\n\t\t\t);\n\t}\n}\n"
      },
      "contracts/modules/LoanSettings.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../core/State.sol\";\nimport \"../events/LoanSettingsEvents.sol\";\nimport \"../mixins/ModuleCommonFunctionalities.sol\";\n\n/**\n * @title Loan Settings contract.\n *\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains functions to get and set loan parameters.\n * */\ncontract LoanSettings is State, LoanSettingsEvents, ModuleCommonFunctionalities {\n\t/**\n\t * @notice Empty public constructor.\n\t * */\n\tconstructor() public {}\n\n\t/**\n\t * @notice Fallback function is to react to receiving value (rBTC).\n\t * */\n\tfunction() external {\n\t\trevert(\"LoanSettings - fallback not allowed\");\n\t}\n\n\t/**\n\t * @notice Set function selectors on target contract.\n\t *\n\t * @param target The address of the target contract.\n\t * */\n\tfunction initialize(address target) external onlyOwner {\n\t\taddress prevModuleContractAddress = logicTargets[this.setupLoanParams.selector];\n\t\t_setTarget(this.setupLoanParams.selector, target);\n\t\t_setTarget(this.disableLoanParams.selector, target);\n\t\t_setTarget(this.getLoanParams.selector, target);\n\t\t_setTarget(this.getLoanParamsList.selector, target);\n\t\t_setTarget(this.getTotalPrincipal.selector, target);\n\t\t_setTarget(this.minInitialMargin.selector, target);\n\t\temit ProtocolModuleContractReplaced(prevModuleContractAddress, target, \"LoanSettings\");\n\t}\n\n\t/**\n\t * @notice Setup loan parameters, by looping every loan\n\t * and populating its parameters.\n\t *\n\t * @dev For each loan calls _setupLoanParams internal function.\n\t *\n\t * @param loanParamsList The array of loan parameters.\n\t *\n\t * @return loanParamsIdList The array of loan parameters IDs.\n\t * */\n\tfunction setupLoanParams(LoanParams[] calldata loanParamsList) external whenNotPaused returns (bytes32[] memory loanParamsIdList) {\n\t\tloanParamsIdList = new bytes32[](loanParamsList.length);\n\t\tfor (uint256 i = 0; i < loanParamsList.length; i++) {\n\t\t\tloanParamsIdList[i] = _setupLoanParams(loanParamsList[i]);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Deactivate LoanParams for future loans. Active loans\n\t * using it are unaffected.\n\t *\n\t * @param loanParamsIdList The array of loan parameters IDs to deactivate.\n\t * */\n\tfunction disableLoanParams(bytes32[] calldata loanParamsIdList) external whenNotPaused {\n\t\tfor (uint256 i = 0; i < loanParamsIdList.length; i++) {\n\t\t\trequire(msg.sender == loanParams[loanParamsIdList[i]].owner, \"unauthorized owner\");\n\t\t\tloanParams[loanParamsIdList[i]].active = false;\n\n\t\t\tLoanParams memory loanParamsLocal = loanParams[loanParamsIdList[i]];\n\t\t\temit LoanParamsDisabled(\n\t\t\t\tloanParamsLocal.id,\n\t\t\t\tloanParamsLocal.owner,\n\t\t\t\tloanParamsLocal.loanToken,\n\t\t\t\tloanParamsLocal.collateralToken,\n\t\t\t\tloanParamsLocal.minInitialMargin,\n\t\t\t\tloanParamsLocal.maintenanceMargin,\n\t\t\t\tloanParamsLocal.maxLoanTerm\n\t\t\t);\n\t\t\temit LoanParamsIdDisabled(loanParamsLocal.id, loanParamsLocal.owner);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Get loan parameters for every matching IDs.\n\t *\n\t * @param loanParamsIdList The array of loan parameters IDs to match.\n\t *\n\t * @return loanParamsList The result array of loan parameters.\n\t * */\n\tfunction getLoanParams(bytes32[] memory loanParamsIdList) public view returns (LoanParams[] memory loanParamsList) {\n\t\tloanParamsList = new LoanParams[](loanParamsIdList.length);\n\t\tuint256 itemCount;\n\n\t\tfor (uint256 i = 0; i < loanParamsIdList.length; i++) {\n\t\t\tLoanParams memory loanParamsLocal = loanParams[loanParamsIdList[i]];\n\t\t\tif (loanParamsLocal.id == 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tloanParamsList[itemCount] = loanParamsLocal;\n\t\t\titemCount++;\n\t\t}\n\n\t\tif (itemCount < loanParamsList.length) {\n\t\t\tassembly {\n\t\t\t\tmstore(loanParamsList, itemCount)\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Get loan parameters for an owner and a given page\n\t * defined by an offset and a limit.\n\t *\n\t * @param owner The address of the loan owner.\n\t * @param start The page offset.\n\t * @param count The page limit.\n\t *\n\t * @return loanParamsList The result array of loan parameters.\n\t * */\n\tfunction getLoanParamsList(\n\t\taddress owner,\n\t\tuint256 start,\n\t\tuint256 count\n\t) external view returns (bytes32[] memory loanParamsList) {\n\t\tEnumerableBytes32Set.Bytes32Set storage set = userLoanParamSets[owner];\n\t\tuint256 end = start.add(count).min256(set.length());\n\t\tif (start >= end) {\n\t\t\treturn loanParamsList;\n\t\t}\n\n\t\tloanParamsList = new bytes32[](count);\n\t\tuint256 itemCount;\n\t\tfor (uint256 i = end - start; i > 0; i--) {\n\t\t\tif (itemCount == count) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tloanParamsList[itemCount] = set.get(i + start - 1);\n\t\t\titemCount++;\n\t\t}\n\n\t\tif (itemCount < count) {\n\t\t\tassembly {\n\t\t\t\tmstore(loanParamsList, itemCount)\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Get the total principal of the loans by a lender.\n\t *\n\t * @param lender The address of the lender.\n\t * @param loanToken The address of the token instance.\n\t *\n\t * @return The total principal of the loans.\n\t * */\n\tfunction getTotalPrincipal(address lender, address loanToken) external view returns (uint256) {\n\t\treturn lenderInterest[lender][loanToken].principalTotal;\n\t}\n\n\t/**\n\t * @notice Setup a loan parameters.\n\t *\n\t * @param loanParamsLocal The loan parameters.\n\t *\n\t * @return loanParamsId The loan parameters ID.\n\t * */\n\tfunction _setupLoanParams(LoanParams memory loanParamsLocal) internal returns (bytes32) {\n\t\tbytes32 loanParamsId =\n\t\t\tkeccak256(\n\t\t\t\tabi.encodePacked(\n\t\t\t\t\tloanParamsLocal.loanToken,\n\t\t\t\t\tloanParamsLocal.collateralToken,\n\t\t\t\t\tloanParamsLocal.minInitialMargin,\n\t\t\t\t\tloanParamsLocal.maintenanceMargin,\n\t\t\t\t\tloanParamsLocal.maxLoanTerm,\n\t\t\t\t\tblock.timestamp\n\t\t\t\t)\n\t\t\t);\n\t\trequire(loanParams[loanParamsId].id == 0, \"loanParams exists\");\n\n\t\trequire(\n\t\t\tloanParamsLocal.loanToken != address(0) &&\n\t\t\t\tloanParamsLocal.collateralToken != address(0) &&\n\t\t\t\tloanParamsLocal.minInitialMargin > loanParamsLocal.maintenanceMargin &&\n\t\t\t\t(loanParamsLocal.maxLoanTerm == 0 || loanParamsLocal.maxLoanTerm > 3600), /// A defined maxLoanTerm has to be greater than one hour.\n\t\t\t\"invalid params\"\n\t\t);\n\n\t\tloanParamsLocal.id = loanParamsId;\n\t\tloanParamsLocal.active = true;\n\t\tloanParamsLocal.owner = msg.sender;\n\n\t\tloanParams[loanParamsId] = loanParamsLocal;\n\t\tuserLoanParamSets[msg.sender].addBytes32(loanParamsId);\n\n\t\temit LoanParamsSetup(\n\t\t\tloanParamsId,\n\t\t\tloanParamsLocal.owner,\n\t\t\tloanParamsLocal.loanToken,\n\t\t\tloanParamsLocal.collateralToken,\n\t\t\tloanParamsLocal.minInitialMargin,\n\t\t\tloanParamsLocal.maintenanceMargin,\n\t\t\tloanParamsLocal.maxLoanTerm\n\t\t);\n\t\temit LoanParamsIdSetup(loanParamsId, loanParamsLocal.owner);\n\n\t\treturn loanParamsId;\n\t}\n\n\tfunction minInitialMargin(bytes32 loanParamsId) external view returns (uint256) {\n\t\treturn loanParams[loanParamsId].minInitialMargin;\n\t}\n}\n"
      },
      "contracts/events/LoanSettingsEvents.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"./ModulesCommonEvents.sol\";\n\n/**\n * @title The Loan Settings Events contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the events for loan settings operations.\n * */\ncontract LoanSettingsEvents is ModulesCommonEvents {\n\tevent LoanParamsSetup(\n\t\tbytes32 indexed id,\n\t\taddress owner,\n\t\taddress indexed loanToken,\n\t\taddress indexed collateralToken,\n\t\tuint256 minInitialMargin,\n\t\tuint256 maintenanceMargin,\n\t\tuint256 maxLoanTerm\n\t);\n\tevent LoanParamsIdSetup(bytes32 indexed id, address indexed owner);\n\n\tevent LoanParamsDisabled(\n\t\tbytes32 indexed id,\n\t\taddress owner,\n\t\taddress indexed loanToken,\n\t\taddress indexed collateralToken,\n\t\tuint256 minInitialMargin,\n\t\tuint256 maintenanceMargin,\n\t\tuint256 maxLoanTerm\n\t);\n\tevent LoanParamsIdDisabled(bytes32 indexed id, address indexed owner);\n}\n"
      },
      "contracts/interfaces/ISovryn.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity >=0.5.0 <0.6.0;\npragma experimental ABIEncoderV2;\n//TODO: stored in ./interfaces only while brownie isn't removed\n//TODO: move to contracts/interfaces after with brownie is removed\n\nimport \"../core/State.sol\";\nimport \"../events/ProtocolSettingsEvents.sol\";\nimport \"../events/LoanSettingsEvents.sol\";\nimport \"../events/LoanOpeningsEvents.sol\";\nimport \"../events/LoanMaintenanceEvents.sol\";\nimport \"../events/LoanClosingsEvents.sol\";\nimport \"../events/FeesEvents.sol\";\nimport \"../events/SwapsEvents.sol\";\nimport \"../events/AffiliatesEvents.sol\";\n\ncontract ISovryn is\n\tState,\n\tProtocolSettingsEvents,\n\tLoanSettingsEvents,\n\tLoanOpeningsEvents,\n\tLoanMaintenanceEvents,\n\tLoanClosingsEvents,\n\tSwapsEvents,\n\tAffiliatesEvents,\n\tFeesEvents\n{\n\t////// Protocol //////\n\n\tfunction replaceContract(address target) external;\n\n\tfunction setTargets(string[] calldata sigsArr, address[] calldata targetsArr) external;\n\n\tfunction getTarget(string calldata sig) external view returns (address);\n\n\t////// Protocol Settings //////\n\n\tfunction setSovrynProtocolAddress(address newProtocolAddress) external;\n\n\tfunction setSOVTokenAddress(address newSovTokenAddress) external;\n\n\tfunction setLockedSOVAddress(address newSOVLockedAddress) external;\n\n\tfunction setMinReferralsToPayoutAffiliates(uint256 newMinReferrals) external;\n\n\tfunction setPriceFeedContract(address newContract) external;\n\n\tfunction setSwapsImplContract(address newContract) external;\n\n\tfunction setLoanPool(address[] calldata pools, address[] calldata assets) external;\n\n\tfunction setSupportedTokens(address[] calldata addrs, bool[] calldata toggles) external;\n\n\tfunction setLendingFeePercent(uint256 newValue) external;\n\n\tfunction setTradingFeePercent(uint256 newValue) external;\n\n\tfunction setBorrowingFeePercent(uint256 newValue) external;\n\n\tfunction setSwapExternalFeePercent(uint256 newValue) external;\n\n\tfunction setAffiliateFeePercent(uint256 newValue) external;\n\n\tfunction setAffiliateTradingTokenFeePercent(uint256 newValue) external;\n\n\tfunction setLiquidationIncentivePercent(uint256 newAmount) external;\n\n\tfunction setMaxDisagreement(uint256 newAmount) external;\n\n\tfunction setSourceBuffer(uint256 newAmount) external;\n\n\tfunction setMaxSwapSize(uint256 newAmount) external;\n\n\tfunction setFeesController(address newController) external;\n\n\tfunction withdrawLendingFees(\n\t\taddress token,\n\t\taddress receiver,\n\t\tuint256 amount\n\t) external returns (bool);\n\n\tfunction withdrawTradingFees(\n\t\taddress token,\n\t\taddress receiver,\n\t\tuint256 amount\n\t) external returns (bool);\n\n\tfunction withdrawBorrowingFees(\n\t\taddress token,\n\t\taddress receiver,\n\t\tuint256 amount\n\t) external returns (bool);\n\n\tfunction withdrawProtocolToken(address receiver, uint256 amount) external returns (address, bool);\n\n\tfunction depositProtocolToken(uint256 amount) external;\n\n\tfunction getLoanPoolsList(uint256 start, uint256 count) external;\n\n\tfunction isLoanPool(address loanPool) external view returns (bool);\n\n\tfunction setWrbtcToken(address wrbtcTokenAddress) external;\n\n\tfunction setSovrynSwapContractRegistryAddress(address registryAddress) external;\n\n\tfunction setProtocolTokenAddress(address _protocolTokenAddress) external;\n\n\tfunction setRolloverBaseReward(uint256 transactionCost) external;\n\n\tfunction setRebatePercent(uint256 rebatePercent) external;\n\n\tfunction setSpecialRebates(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\tuint256 specialRebatesPercent\n\t) external;\n\n\tfunction getSpecialRebates(address sourceToken, address destToken) external view returns (uint256 specialRebatesPercent);\n\n\tfunction togglePaused(bool paused) external;\n\n\tfunction isProtocolPaused() external view returns (bool);\n\n\t////// Loan Settings //////\n\n\tfunction setupLoanParams(LoanParams[] calldata loanParamsList) external returns (bytes32[] memory loanParamsIdList);\n\n\t// Deactivates LoanParams for future loans. Active loans using it are unaffected.\n\tfunction disableLoanParams(bytes32[] calldata loanParamsIdList) external;\n\n\tfunction getLoanParams(bytes32[] calldata loanParamsIdList) external view returns (LoanParams[] memory loanParamsList);\n\n\tfunction getLoanParamsList(\n\t\taddress owner,\n\t\tuint256 start,\n\t\tuint256 count\n\t) external view returns (bytes32[] memory loanParamsList);\n\n\tfunction getTotalPrincipal(address lender, address loanToken) external view returns (uint256);\n\n\tfunction minInitialMargin(bytes32 loanParamsId) external view returns (uint256);\n\n\t////// Loan Openings //////\n\n\tfunction borrowOrTradeFromPool(\n\t\tbytes32 loanParamsId,\n\t\tbytes32 loanId, // if 0, start a new loan\n\t\tbool isTorqueLoan,\n\t\tuint256 initialMargin,\n\t\taddress[4] calldata sentAddresses,\n\t\t// lender: must match loan if loanId provided\n\t\t// borrower: must match loan if loanId provided\n\t\t// receiver: receiver of funds (address(0) assumes borrower address)\n\t\t// manager: delegated manager of loan unless address(0)\n\t\tuint256[5] calldata sentValues,\n\t\t// newRate: new loan interest rate\n\t\t// newPrincipal: new loan size (borrowAmount + any borrowed interest)\n\t\t// torqueInterest: new amount of interest to escrow for Torque loan (determines initial loan length)\n\t\t// loanTokenReceived: total loanToken deposit (amount not sent to borrower in the case of Torque loans)\n\t\t// collateralTokenReceived: total collateralToken deposit\n\t\tbytes calldata loanDataBytes\n\t) external payable returns (uint256);\n\n\tfunction setDelegatedManager(\n\t\tbytes32 loanId,\n\t\taddress delegated,\n\t\tbool toggle\n\t) external;\n\n\tfunction getEstimatedMarginExposure(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 loanTokenSent,\n\t\tuint256 collateralTokenSent,\n\t\tuint256 interestRate,\n\t\tuint256 newPrincipal\n\t) external view returns (uint256);\n\n\tfunction getRequiredCollateral(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 newPrincipal,\n\t\tuint256 marginAmount,\n\t\tbool isTorqueLoan\n\t) external view returns (uint256 collateralAmountRequired);\n\n\tfunction getBorrowAmount(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 collateralTokenAmount,\n\t\tuint256 marginAmount,\n\t\tbool isTorqueLoan\n\t) external view returns (uint256 borrowAmount);\n\n\t////// Loan Closings //////\n\n\tfunction liquidate(\n\t\tbytes32 loanId,\n\t\taddress receiver,\n\t\tuint256 closeAmount // denominated in loanToken\n\t)\n\t\texternal\n\t\tpayable\n\t\treturns (\n\t\t\tuint256 loanCloseAmount,\n\t\t\tuint256 seizedAmount,\n\t\t\taddress seizedToken\n\t\t);\n\n\tfunction rollover(bytes32 loanId, bytes calldata loanDataBytes) external;\n\n\tfunction closeWithDeposit(\n\t\tbytes32 loanId,\n\t\taddress receiver,\n\t\tuint256 depositAmount // denominated in loanToken\n\t)\n\t\texternal\n\t\tpayable\n\t\treturns (\n\t\t\tuint256 loanCloseAmount,\n\t\t\tuint256 withdrawAmount,\n\t\t\taddress withdrawToken\n\t\t);\n\n\tfunction closeWithSwap(\n\t\tbytes32 loanId,\n\t\taddress receiver,\n\t\tuint256 swapAmount, // denominated in collateralToken\n\t\tbool returnTokenIsCollateral, // true: withdraws collateralToken, false: withdraws loanToken\n\t\tbytes calldata loanDataBytes\n\t)\n\t\texternal\n\t\treturns (\n\t\t\tuint256 loanCloseAmount,\n\t\t\tuint256 withdrawAmount,\n\t\t\taddress withdrawToken\n\t\t);\n\n\t////// Loan Maintenance //////\n\n\tfunction depositCollateral(\n\t\tbytes32 loanId,\n\t\tuint256 depositAmount // must match msg.value if ether is sent\n\t) external payable;\n\n\tfunction withdrawCollateral(\n\t\tbytes32 loanId,\n\t\taddress receiver,\n\t\tuint256 withdrawAmount\n\t) external returns (uint256 actualWithdrawAmount);\n\n\tfunction extendLoanByInterest(\n\t\tbytes32 loanId,\n\t\taddress payer,\n\t\tuint256 depositAmount,\n\t\tbool useCollateral,\n\t\tbytes calldata loanDataBytes\n\t) external payable returns (uint256 secondsExtended);\n\n\tfunction reduceLoanByInterest(\n\t\tbytes32 loanId,\n\t\taddress receiver,\n\t\tuint256 withdrawAmount\n\t) external returns (uint256 secondsReduced);\n\n\tfunction withdrawAccruedInterest(address loanToken) external;\n\n\tfunction getLenderInterestData(address lender, address loanToken)\n\t\texternal\n\t\tview\n\t\treturns (\n\t\t\tuint256 interestPaid,\n\t\t\tuint256 interestPaidDate,\n\t\t\tuint256 interestOwedPerDay,\n\t\t\tuint256 interestUnPaid,\n\t\t\tuint256 interestFeePercent,\n\t\t\tuint256 principalTotal\n\t\t);\n\n\tfunction getLoanInterestData(bytes32 loanId)\n\t\texternal\n\t\tview\n\t\treturns (\n\t\t\taddress loanToken,\n\t\t\tuint256 interestOwedPerDay,\n\t\t\tuint256 interestDepositTotal,\n\t\t\tuint256 interestDepositRemaining\n\t\t);\n\n\tstruct LoanReturnData {\n\t\tbytes32 loanId;\n\t\taddress loanToken;\n\t\taddress collateralToken;\n\t\tuint256 principal;\n\t\tuint256 collateral;\n\t\tuint256 interestOwedPerDay;\n\t\tuint256 interestDepositRemaining;\n\t\tuint256 startRate; // collateralToLoanRate\n\t\tuint256 startMargin;\n\t\tuint256 maintenanceMargin;\n\t\tuint256 currentMargin;\n\t\tuint256 maxLoanTerm;\n\t\tuint256 endTimestamp;\n\t\tuint256 maxLiquidatable;\n\t\tuint256 maxSeizable;\n\t}\n\n\tfunction getUserLoans(\n\t\taddress user,\n\t\tuint256 start,\n\t\tuint256 count,\n\t\tuint256 loanType,\n\t\tbool isLender,\n\t\tbool unsafeOnly\n\t) external view returns (LoanReturnData[] memory loansData);\n\n\tfunction getLoan(bytes32 loanId) external view returns (LoanReturnData memory loanData);\n\n\tfunction getActiveLoans(\n\t\tuint256 start,\n\t\tuint256 count,\n\t\tbool unsafeOnly\n\t) external view returns (LoanReturnData[] memory loansData);\n\n\t////// Protocol Migration //////\n\n\tfunction setLegacyOracles(address[] calldata refs, address[] calldata oracles) external;\n\n\tfunction getLegacyOracle(address ref) external view returns (address);\n\n\t////// Swaps External //////\n\tfunction swapExternal(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\taddress receiver,\n\t\taddress returnToSender,\n\t\tuint256 sourceTokenAmount,\n\t\tuint256 requiredDestTokenAmount,\n\t\tuint256 minReturn,\n\t\tbytes calldata swapData\n\t) external returns (uint256 destTokenAmountReceived, uint256 sourceTokenAmountUsed);\n\n\tfunction getSwapExpectedReturn(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\tuint256 sourceTokenAmount\n\t) external view returns (uint256);\n\n\tfunction checkPriceDivergence(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\tuint256 sourceTokenAmount,\n\t\tuint256 minReturn\n\t) public view;\n\n\t////// Affiliates Module //////\n\n\tfunction getUserNotFirstTradeFlag(address user) external view returns (bool);\n\n\tfunction setUserNotFirstTradeFlag(address user) external view returns (bool);\n\n\tfunction payTradingFeeToAffiliatesReferrer(\n\t\taddress referrer,\n\t\taddress trader,\n\t\taddress token,\n\t\tuint256 tradingFeeTokenBaseAmount\n\t) external returns (uint256 affiliatesBonusSOVAmount, uint256 affiliatesBonusTokenAmount);\n\n\tfunction setAffiliatesReferrer(address user, address referrer) external; //onlyCallableByLoanPools\n\n\tfunction getReferralsList(address referrer) external view returns (address[] memory refList);\n\n\tfunction getAffiliatesReferrerBalances(address referrer)\n\t\texternal\n\t\tview\n\t\treturns (address[] memory referrerTokensList, uint256[] memory referrerTokensBalances);\n\n\tfunction getAffiliatesReferrerTokensList(address referrer) external view returns (address[] memory tokensList);\n\n\tfunction getAffiliatesReferrerTokenBalance(address referrer, address token) external view returns (uint256);\n\n\tfunction withdrawAffiliatesReferrerTokenFees(\n\t\taddress token,\n\t\taddress receiver,\n\t\tuint256 amount\n\t) external returns (uint256 withdrawAmount);\n\n\tfunction withdrawAllAffiliatesReferrerTokenFees(address receiver) external;\n\n\tfunction getProtocolAddress() external view returns (address);\n\n\tfunction getSovTokenAddress() external view returns (address);\n\n\tfunction getLockedSOVAddress() external view returns (address);\n\n\tfunction getFeeRebatePercent() external view returns (uint256);\n\n\tfunction getMinReferralsToPayout() external view returns (uint256);\n\n\tfunction getAffiliatesUserReferrer(address user) external view returns (address referrer);\n\n\tfunction getAffiliateRewardsHeld(address referrer) external view returns (uint256);\n\n\tfunction getAffiliateTradingTokenFeePercent() external view returns (uint256 affiliateTradingTokenFeePercent);\n\n\tfunction getAffiliatesTokenRewardsValueInRbtc(address referrer) external view returns (uint256 rbtcTotalAmount);\n\n\tfunction getSwapExternalFeePercent() external view returns (uint256 swapExternalFeePercent);\n\n\tfunction setTradingRebateRewardsBasisPoint(uint256 newBasisPoint) external;\n\n\tfunction getTradingRebateRewardsBasisPoint() external view returns (uint256);\n}\n"
      },
      "contracts/events/AffiliatesEvents.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"./ModulesCommonEvents.sol\";\n\ncontract AffiliatesEvents is ModulesCommonEvents {\n\tevent SetAffiliatesReferrer(address indexed user, address indexed referrer);\n\n\tevent SetAffiliatesReferrerFail(address indexed user, address indexed referrer, bool alreadySet, bool userNotFirstTrade);\n\n\tevent SetUserNotFirstTradeFlag(address indexed user);\n\n\tevent PayTradingFeeToAffiliate(\n\t\taddress indexed referrer,\n\t\taddress trader,\n\t\taddress indexed token,\n\t\tbool indexed isHeld,\n\t\tuint256 tradingFeeTokenAmount,\n\t\tuint256 tokenBonusAmount,\n\t\tuint256 sovBonusAmount,\n\t\tuint256 sovBonusAmountPaid\n\t);\n\n\tevent PayTradingFeeToAffiliateFail(\n\t\taddress indexed referrer,\n\t\taddress trader,\n\t\taddress indexed token,\n\t\tuint256 tradingFeeTokenAmount,\n\t\tuint256 tokenBonusAmount,\n\t\tuint256 sovBonusAmount,\n\t\tuint256 sovBonusAmountTryingToPaid\n\t);\n\n\tevent WithdrawAffiliatesReferrerTokenFees(\n\t\taddress indexed referrer,\n\t\taddress indexed receiver,\n\t\taddress indexed tokenAddress,\n\t\tuint256 amount\n\t);\n}\n"
      },
      "contracts/modules/Affiliates.sol": {
        "content": "/**\n * Copyright 2017-2020, Sovryn, All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../core/State.sol\";\nimport \"../mixins/EnumerableBytes32Set.sol\";\nimport \"../openzeppelin/SafeERC20.sol\";\nimport \"../events/AffiliatesEvents.sol\";\nimport \"../feeds/IPriceFeeds.sol\";\nimport \"../locked/ILockedSOV.sol\";\nimport \"../mixins/ModuleCommonFunctionalities.sol\";\n\n/**\n * @title Affiliates contract.\n * @notice Track referrals and reward referrers (affiliates) with tokens.\n *   In-detail specifications are found at https://wiki.sovryn.app/en/community/Affiliates\n * @dev Module: Affiliates upgradable\n *   Storage: from State, functions called from Protocol by delegatecall\n */\ncontract Affiliates is State, AffiliatesEvents, ModuleCommonFunctionalities {\n\tusing SafeERC20 for IERC20;\n\n\t/**\n\t * @notice Void constructor.\n\t */\n\t// solhint-disable-next-line no-empty-blocks\n\tconstructor() public {}\n\n\t/**\n\t * @notice Avoid calls to this contract except for those explicitly declared.\n\t */\n\tfunction() external {\n\t\trevert(\"Affiliates - fallback not allowed\");\n\t}\n\n\t/**\n\t * @notice Set delegate callable functions by proxy contract.\n\t * @dev This contract is designed as a module, this way logic can be\n\t *   expanded and upgraded w/o losing storage that is kept in the protocol (State.sol)\n\t *   initialize() is used to register in the proxy external (module) functions\n\t *   to be called via the proxy.\n\t * @param target The address of a new logic implementation.\n\t */\n\tfunction initialize(address target) external onlyOwner {\n\t\taddress prevModuleContractAddress = logicTargets[this.setAffiliatesReferrer.selector];\n\t\t_setTarget(this.setAffiliatesReferrer.selector, target);\n\t\t_setTarget(this.getUserNotFirstTradeFlag.selector, target);\n\t\t_setTarget(this.getReferralsList.selector, target);\n\t\t_setTarget(this.setUserNotFirstTradeFlag.selector, target);\n\t\t_setTarget(this.payTradingFeeToAffiliatesReferrer.selector, target);\n\t\t_setTarget(this.getAffiliatesReferrerBalances.selector, target);\n\t\t_setTarget(this.getAffiliatesReferrerTokenBalance.selector, target);\n\t\t_setTarget(this.getAffiliatesReferrerTokensList.selector, target);\n\t\t_setTarget(this.withdrawAffiliatesReferrerTokenFees.selector, target);\n\t\t_setTarget(this.withdrawAllAffiliatesReferrerTokenFees.selector, target);\n\t\t_setTarget(this.getMinReferralsToPayout.selector, target);\n\t\t_setTarget(this.getAffiliatesUserReferrer.selector, target);\n\t\t_setTarget(this.getAffiliateRewardsHeld.selector, target);\n\t\t_setTarget(this.getAffiliateTradingTokenFeePercent.selector, target);\n\t\t_setTarget(this.getAffiliatesTokenRewardsValueInRbtc.selector, target);\n\t\temit ProtocolModuleContractReplaced(prevModuleContractAddress, target, \"Affiliates\");\n\t}\n\n\t/**\n\t * @notice Function modifier to avoid any other calls not coming from loan pools.\n\t */\n\tmodifier onlyCallableByLoanPools() {\n\t\trequire(loanPoolToUnderlying[msg.sender] != address(0), \"Affiliates: not authorized\");\n\t\t_;\n\t}\n\n\t/**\n\t * @notice Function modifier to avoid any other calls not coming from within protocol functions.\n\t */\n\tmodifier onlyCallableInternal() {\n\t\trequire(msg.sender == protocolAddress, \"Affiliates: not authorized\");\n\t\t_;\n\t}\n\n\t/**\n\t * @notice Data structure comprised of 3 flags to compute the result of setting a referrer.\n\t */\n\tstruct SetAffiliatesReferrerResult {\n\t\tbool success;\n\t\tbool alreadySet;\n\t\tbool userNotFirstTradeFlag;\n\t}\n\n\t/**\n\t * @notice Loan pool calls this function to tell affiliates\n\t *   a user coming from a referrer is trading and should be registered if not yet.\n\t *   Taking into account some user status flags may lead to the user and referrer\n\t *   become added or not to the affiliates record.\n\t *\n\t * @param user The address of the user that is trading on loan pools.\n\t * @param referrer The address of the referrer the user is coming from.\n\t */\n\tfunction setAffiliatesReferrer(address user, address referrer) external onlyCallableByLoanPools whenNotPaused {\n\t\tSetAffiliatesReferrerResult memory result;\n\n\t\tresult.userNotFirstTradeFlag = getUserNotFirstTradeFlag(user);\n\t\tresult.alreadySet = affiliatesUserReferrer[user] != address(0);\n\t\tresult.success = !(result.userNotFirstTradeFlag || result.alreadySet || user == referrer);\n\t\tif (result.success) {\n\t\t\taffiliatesUserReferrer[user] = referrer;\n\t\t\treferralsList[referrer].add(user);\n\t\t\temit SetAffiliatesReferrer(user, referrer);\n\t\t} else {\n\t\t\temit SetAffiliatesReferrerFail(user, referrer, result.alreadySet, result.userNotFirstTradeFlag);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Getter to query the referrals coming from a referrer.\n\t * @param referrer The address of a given referrer.\n\t * @return The referralsList mapping value by referrer.\n\t */\n\tfunction getReferralsList(address referrer) external view returns (address[] memory refList) {\n\t\trefList = referralsList[referrer].enumerate();\n\t\treturn refList;\n\t}\n\n\t/**\n\t * @notice Getter to query the not-first-trade flag of a user.\n\t * @param user The address of a given user.\n\t * @return The userNotFirstTradeFlag mapping value by user.\n\t */\n\tfunction getUserNotFirstTradeFlag(address user) public view returns (bool) {\n\t\treturn userNotFirstTradeFlag[user];\n\t}\n\n\t/**\n\t * @notice Setter to toggle on the not-first-trade flag of a user.\n\t * @param user The address of a given user.\n\t */\n\tfunction setUserNotFirstTradeFlag(address user) external onlyCallableByLoanPools whenNotPaused {\n\t\tif (!userNotFirstTradeFlag[user]) {\n\t\t\tuserNotFirstTradeFlag[user] = true;\n\t\t\temit SetUserNotFirstTradeFlag(user);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Internal getter to query the fee share for affiliate program.\n\t * @dev It returns a value defined at protocol storage (State.sol)\n\t * @return The percentage of fee share w/ 18 decimals.\n\t */\n\tfunction _getAffiliatesTradingFeePercentForSOV() internal view returns (uint256) {\n\t\treturn affiliateFeePercent;\n\t}\n\n\t/**\n\t * @notice Internal to calculate the affiliates trading token fee amount.\n\t *   Affiliates program has 2 kind of rewards:\n\t *     1. x% based on the fee of the token that is traded (in form of the token itself).\n\t *     2. x% based on the fee of the token that is traded (in form of SOV).\n\t *   This _getReferrerTradingFeeForToken calculates the first one\n\t *   by applying a custom percentage multiplier.\n\t * @param feeTokenAmount The trading token fee amount.\n\t * @return The affiliates share of the trading token fee amount.\n\t */\n\tfunction _getReferrerTradingFeeForToken(uint256 feeTokenAmount) internal view returns (uint256) {\n\t\treturn feeTokenAmount.mul(getAffiliateTradingTokenFeePercent()).div(10**20);\n\t}\n\n\t/**\n\t * @notice Getter to query the fee share of trading token fee for affiliate program.\n\t * @dev It returns a value defined at protocol storage (State.sol)\n\t * @return The percentage of fee share w/ 18 decimals.\n\t */\n\tfunction getAffiliateTradingTokenFeePercent() public view returns (uint256) {\n\t\treturn affiliateTradingTokenFeePercent;\n\t}\n\n\t/**\n\t * @notice Getter to query referral threshold for paying out to the referrer.\n\t * @dev It returns a value defined at protocol storage (State.sol)\n\t * @return The minimum number of referrals set by Protocol.\n\t */\n\tfunction getMinReferralsToPayout() public view returns (uint256) {\n\t\treturn minReferralsToPayout;\n\t}\n\n\t/**\n\t * @notice Get the sovToken reward of a trade.\n\t * @dev The reward is worth x% of the trading fee.\n\t * @param feeToken The address of the token in which the trading/borrowing fee was paid.\n\t * @param feeAmount The height of the fee.\n\t * @return The reward amount.\n\t * */\n\tfunction _getSovBonusAmount(address feeToken, uint256 feeAmount) internal view returns (uint256) {\n\t\tuint256 rewardAmount;\n\t\taddress _priceFeeds = priceFeeds;\n\n\t\t/// @dev Calculate the reward amount, querying the price feed.\n\t\t(bool success, bytes memory data) =\n\t\t\t_priceFeeds.staticcall(\n\t\t\t\tabi.encodeWithSelector(\n\t\t\t\t\tIPriceFeeds(_priceFeeds).queryReturn.selector,\n\t\t\t\t\tfeeToken,\n\t\t\t\t\tsovTokenAddress, /// dest token = SOV\n\t\t\t\t\tfeeAmount.mul(_getAffiliatesTradingFeePercentForSOV()).div(1e20)\n\t\t\t\t)\n\t\t\t);\n\t\t// solhint-disable-next-line no-inline-assembly\n\t\tassembly {\n\t\t\tif eq(success, 1) {\n\t\t\t\trewardAmount := mload(add(data, 32))\n\t\t\t}\n\t\t}\n\n\t\treturn rewardAmount;\n\t}\n\n\t/**\n\t * @notice Protocol calls this function to pay the affiliates rewards to a user (referrer).\n\t *\n\t * @dev Affiliates program has 2 kind of rewards:\n\t *     1. x% based on the fee of the token that is traded (in form of the token itself).\n\t *     2. x% based on the fee of the token that is traded (in form of SOV).\n\t *   Both are paid in this function.\n\t *\n\t * @dev Actually they are not paid, but just holded by protocol until user claims them by\n\t *   actively calling withdrawAffiliatesReferrerTokenFees() function,\n\t *   and/or when unvesting lockedSOV.\n\t *\n\t * @dev To be precise, what this function does is updating the registers of the rewards\n\t *   for the referrer including the assignment of the SOV tokens as rewards to the\n\t *   referrer's vesting contract.\n\t *\n\t * @param referrer The address of the referrer.\n\t * @param trader The address of the trader.\n\t * @param token The address of the token in which the trading/borrowing fee was paid.\n\t * @param tradingFeeTokenBaseAmount Total trading fee amount, the base for calculating referrer's fees.\n\t *\n\t * @return referrerBonusSovAmount The amount of SOV tokens paid to the referrer (through a vesting contract, lockedSOV).\n\t * @return referrerBonusTokenAmount The amount of trading tokens paid directly to the referrer.\n\t */\n\tfunction payTradingFeeToAffiliatesReferrer(\n\t\taddress referrer,\n\t\taddress trader,\n\t\taddress token,\n\t\tuint256 tradingFeeTokenBaseAmount\n\t) external onlyCallableInternal whenNotPaused returns (uint256 referrerBonusSovAmount, uint256 referrerBonusTokenAmount) {\n\t\tbool isHeld = referralsList[referrer].length() < getMinReferralsToPayout();\n\t\tbool bonusPaymentIsSuccess = true;\n\t\tuint256 paidReferrerBonusSovAmount;\n\n\t\t/// Process token fee rewards first.\n\t\treferrerBonusTokenAmount = _getReferrerTradingFeeForToken(tradingFeeTokenBaseAmount);\n\t\tif (!affiliatesReferrerTokensList[referrer].contains(token)) affiliatesReferrerTokensList[referrer].add(token);\n\t\taffiliatesReferrerBalances[referrer][token] = affiliatesReferrerBalances[referrer][token].add(referrerBonusTokenAmount);\n\n\t\t/// Then process SOV rewards.\n\t\treferrerBonusSovAmount = _getSovBonusAmount(token, tradingFeeTokenBaseAmount);\n\t\tuint256 rewardsHeldByProtocol = affiliateRewardsHeld[referrer];\n\n\t\tif (isHeld) {\n\t\t\t/// If referrals less than minimum, temp the rewards SOV to the storage\n\t\t\taffiliateRewardsHeld[referrer] = rewardsHeldByProtocol.add(referrerBonusSovAmount);\n\t\t} else {\n\t\t\t/// If referrals >= minimum, directly send all of the remain rewards to locked sov\n\t\t\t/// Call depositSOV() in LockedSov contract\n\t\t\t/// Set the affiliaterewardsheld = 0\n\t\t\tif (affiliateRewardsHeld[referrer] > 0) {\n\t\t\t\taffiliateRewardsHeld[referrer] = 0;\n\t\t\t}\n\n\t\t\tpaidReferrerBonusSovAmount = referrerBonusSovAmount.add(rewardsHeldByProtocol);\n\t\t\tIERC20(sovTokenAddress).approve(lockedSOVAddress, paidReferrerBonusSovAmount);\n\n\t\t\t(bool success, ) =\n\t\t\t\tlockedSOVAddress.call(abi.encodeWithSignature(\"depositSOV(address,uint256)\", referrer, paidReferrerBonusSovAmount));\n\n\t\t\tif (!success) {\n\t\t\t\tbonusPaymentIsSuccess = false;\n\t\t\t}\n\t\t}\n\n\t\tif (bonusPaymentIsSuccess) {\n\t\t\temit PayTradingFeeToAffiliate(\n\t\t\t\treferrer,\n\t\t\t\ttrader, // trader\n\t\t\t\ttoken,\n\t\t\t\tisHeld,\n\t\t\t\ttradingFeeTokenBaseAmount,\n\t\t\t\treferrerBonusTokenAmount,\n\t\t\t\treferrerBonusSovAmount,\n\t\t\t\tpaidReferrerBonusSovAmount\n\t\t\t);\n\t\t} else {\n\t\t\temit PayTradingFeeToAffiliateFail(\n\t\t\t\treferrer,\n\t\t\t\ttrader, // trader\n\t\t\t\ttoken,\n\t\t\t\ttradingFeeTokenBaseAmount,\n\t\t\t\treferrerBonusTokenAmount,\n\t\t\t\treferrerBonusSovAmount,\n\t\t\t\tpaidReferrerBonusSovAmount\n\t\t\t);\n\t\t}\n\n\t\treturn (referrerBonusSovAmount, referrerBonusTokenAmount);\n\t}\n\n\t/**\n\t * @notice Referrer calls this function to receive its reward in a given token.\n\t *   It will send the other (non-SOV) reward tokens from trading protocol fees,\n\t *   to the referrer’s wallet.\n\t * @dev Rewards are held by protocol in different tokens coming from trading fees.\n\t *   Referrer has to claim them one by one for every token with accumulated balance.\n\t * @param token The address of the token to withdraw.\n\t * @param receiver The address of the withdrawal beneficiary.\n\t * @param amount The amount of tokens to claim. If greater than balance, just sends balance.\n\t */\n\tfunction withdrawAffiliatesReferrerTokenFees(\n\t\taddress token,\n\t\taddress receiver,\n\t\tuint256 amount\n\t) public whenNotPaused {\n\t\trequire(receiver != address(0), \"Affiliates: cannot withdraw to zero address\");\n\t\taddress referrer = msg.sender;\n\t\tuint256 referrerTokenBalance = affiliatesReferrerBalances[referrer][token];\n\t\tuint256 withdrawAmount = referrerTokenBalance > amount ? amount : referrerTokenBalance;\n\n\t\trequire(withdrawAmount > 0, \"Affiliates: cannot withdraw zero amount\");\n\n\t\trequire(referralsList[referrer].length() >= getMinReferralsToPayout(), \"Your referrals has not reached the minimum request\");\n\n\t\tuint256 newReferrerTokenBalance = referrerTokenBalance.sub(withdrawAmount);\n\n\t\tif (newReferrerTokenBalance == 0) {\n\t\t\t_removeAffiliatesReferrerToken(referrer, token);\n\t\t} else {\n\t\t\taffiliatesReferrerBalances[referrer][token] = newReferrerTokenBalance;\n\t\t}\n\n\t\tIERC20(token).safeTransfer(receiver, withdrawAmount);\n\n\t\temit WithdrawAffiliatesReferrerTokenFees(referrer, receiver, token, withdrawAmount);\n\t}\n\n\t/**\n\t * @notice Withdraw to msg.sender all token fees for a referrer.\n\t * @dev It's done by looping through its available tokens.\n\t * @param receiver The address of the withdrawal beneficiary.\n\t */\n\tfunction withdrawAllAffiliatesReferrerTokenFees(address receiver) external whenNotPaused {\n\t\trequire(receiver != address(0), \"Affiliates: cannot withdraw to zero address\");\n\t\taddress referrer = msg.sender;\n\n\t\trequire(referralsList[referrer].length() >= getMinReferralsToPayout(), \"Your referrals has not reached the minimum request\");\n\n\t\t(address[] memory tokenAddresses, uint256[] memory tokenBalances) = getAffiliatesReferrerBalances(referrer);\n\t\tfor (uint256 i; i < tokenAddresses.length; i++) {\n\t\t\twithdrawAffiliatesReferrerTokenFees(tokenAddresses[i], receiver, tokenBalances[i]);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Internal function to delete a referrer's token balance.\n\t * @param referrer The address of the referrer.\n\t * @param token The address of the token specifying the balance to remove.\n\t */\n\tfunction _removeAffiliatesReferrerToken(address referrer, address token) internal {\n\t\tdelete affiliatesReferrerBalances[referrer][token];\n\t\taffiliatesReferrerTokensList[referrer].remove(token);\n\t}\n\n\t/**\n\t * @notice Get all token balances of a referrer.\n\t * @param referrer The address of the referrer.\n\t * @return referrerTokensList The array of available tokens (keys).\n\t * @return referrerTokensBalances The array of token balances (values).\n\t */\n\tfunction getAffiliatesReferrerBalances(address referrer)\n\t\tpublic\n\t\tview\n\t\treturns (address[] memory referrerTokensList, uint256[] memory referrerTokensBalances)\n\t{\n\t\treferrerTokensList = getAffiliatesReferrerTokensList(referrer);\n\t\treferrerTokensBalances = new uint256[](referrerTokensList.length);\n\t\tfor (uint256 i; i < referrerTokensList.length; i++) {\n\t\t\treferrerTokensBalances[i] = getAffiliatesReferrerTokenBalance(referrer, referrerTokensList[i]);\n\t\t}\n\t\treturn (referrerTokensList, referrerTokensBalances);\n\t}\n\n\t/**\n\t * @dev Get all token rewards estimation value in rbtc.\n\t *\n\t * @param referrer Address of referrer.\n\t *\n\t * @return The value estimation in rbtc.\n\t */\n\tfunction getAffiliatesTokenRewardsValueInRbtc(address referrer) external view returns (uint256 rbtcTotalAmount) {\n\t\taddress[] memory tokensList = getAffiliatesReferrerTokensList(referrer);\n\t\taddress _priceFeeds = priceFeeds;\n\n\t\tfor (uint256 i; i < tokensList.length; i++) {\n\t\t\t// Get the value of each token in rbtc\n\n\t\t\t(bool success, bytes memory data) =\n\t\t\t\t_priceFeeds.staticcall(\n\t\t\t\t\tabi.encodeWithSelector(\n\t\t\t\t\t\tIPriceFeeds(_priceFeeds).queryReturn.selector,\n\t\t\t\t\t\ttokensList[i], // source token\n\t\t\t\t\t\taddress(wrbtcToken), // dest token = SOV\n\t\t\t\t\t\taffiliatesReferrerBalances[referrer][tokensList[i]] // total token rewards\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\tassembly {\n\t\t\t\tif eq(success, 1) {\n\t\t\t\t\trbtcTotalAmount := add(rbtcTotalAmount, mload(add(data, 32)))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Get all available tokens at the affiliates program for a given referrer.\n\t * @param referrer The address of a given referrer.\n\t * @return tokensList The list of available tokens.\n\t */\n\tfunction getAffiliatesReferrerTokensList(address referrer) public view returns (address[] memory tokensList) {\n\t\ttokensList = affiliatesReferrerTokensList[referrer].enumerate();\n\t\treturn tokensList;\n\t}\n\n\t/**\n\t * @notice Getter to query the affiliate balance for a given referrer and token.\n\t * @param referrer The address of the referrer.\n\t * @param token The address of the token to get balance for.\n\t * @return The affiliatesReferrerBalances mapping value by referrer and token keys.\n\t */\n\tfunction getAffiliatesReferrerTokenBalance(address referrer, address token) public view returns (uint256) {\n\t\treturn affiliatesReferrerBalances[referrer][token];\n\t}\n\n\t/**\n\t * @notice Getter to query the address of referrer for a given user.\n\t * @param user The address of the user.\n\t * @return The address on affiliatesUserReferrer mapping value by user key.\n\t */\n\tfunction getAffiliatesUserReferrer(address user) public view returns (address) {\n\t\treturn affiliatesUserReferrer[user];\n\t}\n\n\t/**\n\t * @notice Getter to query the reward amount held for a given referrer.\n\t * @param referrer The address of the referrer.\n\t * @return The affiliateRewardsHeld mapping value by referrer key.\n\t */\n\tfunction getAffiliateRewardsHeld(address referrer) public view returns (uint256) {\n\t\treturn affiliateRewardsHeld[referrer];\n\t}\n}\n"
      },
      "contracts/mockup/MockLoanTokenLogic.sol": {
        "content": "pragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../modules/Affiliates.sol\";\nimport \"../connectors/loantoken/LoanTokenLogicLM.sol\";\nimport \"../modules/interfaces/ProtocolAffiliatesInterface.sol\";\n\ncontract MockLoanTokenLogic is LoanTokenLogicLM {\n\t/*function getAffiliatesUserReferrer(address user) public view returns (address) {\n\t\treturn affiliatesUserReferrer[user]; // REFACTOR: will be useful if affiliatesUserReferrer visibillity is not public\n\t}*/\n\n\tfunction setAffiliatesReferrer(address user, address referrer) public {\n\t\tProtocolAffiliatesInterface(sovrynContractAddress).setAffiliatesReferrer(user, referrer);\n\t}\n\n\tfunction setUserNotFirstTradeFlag(address user) public {\n\t\tProtocolAffiliatesInterface(sovrynContractAddress).setUserNotFirstTradeFlag(user);\n\t}\n\n\t/*function initialize(address target) external onlyOwner {\n\t\t_setTarget(this.setAffiliatesUserReferrer.selector, target);\n\t}*/\n}\n"
      },
      "contracts/connectors/loantoken/LoanTokenLogicLM.sol": {
        "content": "pragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"./LoanTokenLogicStandard.sol\";\n\ncontract LoanTokenLogicLM is LoanTokenLogicStandard {\n\t/**\n\t * @notice deposit into the lending pool and optionally participate at the Liquidity Mining Program\n\t * @param receiver the receiver of the tokens\n\t * @param depositAmount The amount of underlying tokens provided on the loan.\n\t *\t\t\t\t\t\t(Not the number of loan tokens to mint).\n\t * @param useLM if true -> deposit the pool tokens into the Liquidity Mining contract\n\t */\n\tfunction mint(\n\t\taddress receiver,\n\t\tuint256 depositAmount,\n\t\tbool useLM\n\t) external nonReentrant returns (uint256 minted) {\n\t\tif (useLM) return _mintWithLM(receiver, depositAmount);\n\t\telse return _mintToken(receiver, depositAmount);\n\t}\n\n\t/**\n\t * @notice withdraws from the lending pool and optionally retrieves the pool tokens from the\n\t *         Liquidity Mining Contract\n\t * @param receiver the receiver of the underlying tokens. note: potetial LM rewards are always sent to the msg.sender\n\t * @param burnAmount The amount of pool tokens to redeem.\n\t * @param useLM if true -> deposit the pool tokens into the Liquidity Mining contract\n\t */\n\tfunction burn(\n\t\taddress receiver,\n\t\tuint256 burnAmount,\n\t\tbool useLM\n\t) external nonReentrant returns (uint256 redeemed) {\n\t\tif (useLM) redeemed = _burnFromLM(burnAmount);\n\t\telse redeemed = _burnToken(burnAmount);\n\t\t//this needs to be here and not in _burnTokens because of the WRBTC implementation\n\t\tif (redeemed != 0) {\n\t\t\t_safeTransfer(loanTokenAddress, receiver, redeemed, \"asset transfer failed\");\n\t\t}\n\t}\n}\n"
      },
      "contracts/connectors/loantoken/LoanTokenLogicStandard.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"./LoanTokenSettingsLowerAdmin.sol\";\nimport \"./interfaces/ProtocolLike.sol\";\nimport \"./interfaces/FeedsLike.sol\";\nimport \"../../modules/interfaces/ProtocolAffiliatesInterface.sol\";\nimport \"../../farm/ILiquidityMining.sol\";\n\n/**\n * @title Loan Token Logic Standard contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized margin\n * trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * Logic around loan tokens (iTokens) required to operate borrowing,\n * and margin trading financial processes.\n *\n * The user provides funds to the lending pool using the mint function and\n * withdraws funds from the lending pool using the burn function. Mint and\n * burn refer to minting and burning loan tokens. Loan tokens represent a\n * share of the pool and gather interest over time.\n *\n * Interest rates are determined by supply and demand. When a lender deposits\n * funds, the interest rates go down. When a trader borrows funds, the\n * interest rates go up. Fulcrum uses a simple linear interest rate formula\n * of the form y = mx + b. The interest rate starts at 1% when loans aren't\n * being utilized and scales up to 40% when all the funds in the loan pool\n * are being borrowed.\n *\n * The borrow rate is determined at the time of the loan and represents the\n * net contribution of each borrower. Each borrower's interest contribution\n * is determined by the utilization rate of the pool and is netted against\n * all prior borrows. This means that the total amount of interest flowing\n * into the lending pool is not directly changed by lenders entering or\n * exiting the pool. The entrance or exit of lenders only impacts how the\n * interest payments are split up.\n *\n * For example, if there are 2 lenders with equal holdings each earning\n * 5% APR, but one of the lenders leave, then the remaining lender will earn\n * 10% APR since the interest payments don't have to be split between two\n * individuals.\n * */\ncontract LoanTokenLogicStandard is LoanTokenSettingsLowerAdmin {\n\tusing SafeMath for uint256;\n\tusing SignedSafeMath for int256;\n\n\t/// DON'T ADD VARIABLES HERE, PLEASE\n\n\t/// @dev Used by flashBorrow function.\n\tuint256 public constant VERSION = 6;\n\t/// @dev Used by flashBorrow function.\n\taddress internal constant arbitraryCaller = 0x000F400e6818158D541C3EBE45FE3AA0d47372FF;\n\tbytes32 internal constant iToken_ProfitSoFar = 0x37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb6; // keccak256(\"iToken_ProfitSoFar\")\n\n\t/**\n\t * @notice Fallback function is to react to receiving value (rBTC).\n\t * */\n\tfunction() external {\n\t\t// Due to contract size issue, need to keep the error message to 32 bytes length / we remove the revert function\n\t\t// Remove revert function is fine as this fallback function is not payable, but the trade off is we cannot have the custom message for the fallback function error\n\t\t// revert(\"loan token-fallback not allowed\");\n\t}\n\n\t/* Public functions */\n\n\t/**\n\t * @notice Mint loan token wrapper.\n\t * Adds a check before calling low level _mintToken function.\n\t * The function retrieves the tokens from the message sender, so make sure\n\t * to first approve the loan token contract to access your funds. This is\n\t * done by calling approve(address spender, uint amount) on the ERC20\n\t * token contract, where spender is the loan token contract address and\n\t * amount is the amount to be deposited.\n\t *\n\t * @param receiver The account getting the minted tokens.\n\t * @param depositAmount The amount of underlying tokens provided on the\n\t *   loan. (Not the number of loan tokens to mint).\n\t *\n\t * @return The amount of loan tokens minted.\n\t * */\n\tfunction mint(address receiver, uint256 depositAmount) external nonReentrant returns (uint256 mintAmount) {\n\t\treturn _mintToken(receiver, depositAmount);\n\t}\n\n\t/**\n\t * @notice Burn loan token wrapper.\n\t * Adds a pay-out transfer after calling low level _burnToken function.\n\t * In order to withdraw funds to the pool, call burn on the respective\n\t * loan token contract. This will burn your loan tokens and send you the\n\t * underlying token in exchange.\n\t *\n\t * @param receiver The account getting the minted tokens.\n\t * @param burnAmount The amount of loan tokens to redeem.\n\t *\n\t * @return The amount of underlying tokens payed to lender.\n\t * */\n\tfunction burn(address receiver, uint256 burnAmount) external nonReentrant returns (uint256 loanAmountPaid) {\n\t\tloanAmountPaid = _burnToken(burnAmount);\n\n\t\t//this needs to be here and not in _burnTokens because of the WRBTC implementation\n\t\tif (loanAmountPaid != 0) {\n\t\t\t_safeTransfer(loanTokenAddress, receiver, loanAmountPaid, \"5\");\n\t\t}\n\t}\n\n\t/*\n    flashBorrow is disabled for the MVP, but is going to be added later.\n    therefore, it needs to be revised\n    \n    function flashBorrow(\n        uint256 borrowAmount,\n        address borrower,\n        address target,\n        string calldata signature,\n        bytes calldata data)\n        external\n        payable\n        nonReentrant\n        pausable(msg.sig)\n        returns (bytes memory)\n    {\n        require(borrowAmount != 0, \"38\");\n\n        _checkPause();\n\n        _settleInterest();\n\n        /// @dev Save before balances.\n        uint256 beforeRbtcBalance = address(this).balance.sub(msg.value);\n        uint256 beforeAssetsBalance = _underlyingBalance()\n            .add(totalAssetBorrow());\n\n        /// @dev Lock totalAssetSupply for duration of flash loan.\n        _flTotalAssetSupply = beforeAssetsBalance;\n\n        /// @dev Transfer assets to calling contract.\n        _safeTransfer(loanTokenAddress, borrower, borrowAmount, \"39\");\n\n\t\temit FlashBorrow(borrower, target, loanTokenAddress, borrowAmount);\n\n        bytes memory callData;\n        if (bytes(signature).length == 0) {\n            callData = data;\n        } else {\n            callData = abi.encodePacked(bytes4(keccak256(bytes(signature))), data);\n        }\n\n        /// @dev Arbitrary call.\n        (bool success, bytes memory returnData) = arbitraryCaller.call.value(msg.value)(\n            abi.encodeWithSelector(\n                0xde064e0d, /// sendCall(address,bytes)\n                target,\n                callData\n            )\n        );\n        require(success, \"call failed\");\n\n        /// @dev Unlock totalAssetSupply\n        _flTotalAssetSupply = 0;\n\n        /// @dev Verifies return of flash loan.\n        require(\n            address(this).balance >= beforeRbtcBalance &&\n            _underlyingBalance()\n                .add(totalAssetBorrow()) >= beforeAssetsBalance,\n            \"40\"\n        );\n\n        return returnData;\n    }\n    */\n\n\t/**\n\t * @notice Borrow funds from the pool.\n\t * The underlying loan token may not be used as collateral.\n\t *\n\t * @param loanId The ID of the loan, 0 for a new loan.\n\t * @param withdrawAmount The amount to be withdrawn (actually borrowed).\n\t * @param initialLoanDuration The duration of the loan in seconds.\n\t *   If the loan is not paid back until then, it'll need to be rolled over.\n\t * @param collateralTokenSent The amount of collateral tokens provided by the user.\n\t *   (150% of the withdrawn amount worth in collateral tokens).\n\t * @param collateralTokenAddress The address of the token to be used as\n\t *   collateral. Cannot be the loan token address.\n\t * @param borrower The one paying for the collateral.\n\t * @param receiver The one receiving the withdrawn amount.\n\t *\n\t * @return New principal and new collateral added to loan.\n\t * */\n\tfunction borrow(\n\t\tbytes32 loanId, /// 0 if new loan.\n\t\tuint256 withdrawAmount,\n\t\tuint256 initialLoanDuration, /// Duration in seconds.\n\t\tuint256 collateralTokenSent, /// If 0, loanId must be provided; any rBTC sent must equal this value.\n\t\taddress collateralTokenAddress, /// If address(0), this means rBTC and rBTC must be sent with the call or loanId must be provided.\n\t\taddress borrower,\n\t\taddress receiver,\n\t\tbytes memory /// loanDataBytes: arbitrary order data (for future use).\n\t)\n\t\tpublic\n\t\tpayable\n\t\tnonReentrant /// Note: needs to be removed to allow flashloan use cases.\n\t\treturns (\n\t\t\tuint256,\n\t\t\tuint256 /// Returns new principal and new collateral added to loan.\n\t\t)\n\t{\n\t\trequire(withdrawAmount != 0, \"6\");\n\n\t\t_checkPause();\n\n\t\t/// Temporary: limit transaction size.\n\t\tif (transactionLimit[collateralTokenAddress] > 0) require(collateralTokenSent <= transactionLimit[collateralTokenAddress]);\n\n\t\trequire(\n\t\t\t(msg.value == 0 || msg.value == collateralTokenSent) &&\n\t\t\t\t(collateralTokenSent != 0 || loanId != 0) &&\n\t\t\t\t(collateralTokenAddress != address(0) || msg.value != 0 || loanId != 0) &&\n\t\t\t\t(loanId == 0 || msg.sender == borrower),\n\t\t\t\"7\"\n\t\t);\n\n\t\t/// @dev We have an issue regarding contract size code is too big. 1 of the solution is need to keep the error message 32 bytes length\n\t\t// Temporarily, we combine this require to the above, so can save the contract size code\n\t\t// require(collateralTokenSent != 0 || loanId != 0, \"8\");\n\t\t// require(collateralTokenAddress != address(0) || msg.value != 0 || loanId != 0, \"9\");\n\n\t\t/// @dev Ensure authorized use of existing loan.\n\t\t// require(loanId == 0 || msg.sender == borrower, \"401 use of existing loan\");\n\n\t\tif (collateralTokenAddress == address(0)) {\n\t\t\tcollateralTokenAddress = wrbtcTokenAddress;\n\t\t}\n\t\trequire(collateralTokenAddress != loanTokenAddress, \"10\");\n\n\t\t_settleInterest();\n\n\t\taddress[4] memory sentAddresses;\n\t\tuint256[5] memory sentAmounts;\n\n\t\tsentAddresses[0] = address(this); /// The lender.\n\t\tsentAddresses[1] = borrower;\n\t\tsentAddresses[2] = receiver;\n\t\t/// sentAddresses[3] = address(0); /// The manager.\n\n\t\tsentAmounts[1] = withdrawAmount;\n\n\t\t/// interestRate, interestInitialAmount, borrowAmount (newBorrowAmount).\n\t\t(sentAmounts[0], sentAmounts[2], sentAmounts[1]) = _getInterestRateAndBorrowAmount(\n\t\t\tsentAmounts[1],\n\t\t\t_totalAssetSupply(0), /// Interest is settled above.\n\t\t\tinitialLoanDuration\n\t\t);\n\n\t\t/// sentAmounts[3] = 0; /// loanTokenSent\n\t\tsentAmounts[4] = collateralTokenSent;\n\n\t\treturn\n\t\t\t_borrowOrTrade(\n\t\t\t\tloanId,\n\t\t\t\twithdrawAmount,\n\t\t\t\tProtocolSettingsLike(sovrynContractAddress).minInitialMargin(\n\t\t\t\t\tloanParamsIds[uint256(keccak256(abi.encodePacked(collateralTokenAddress, true)))]\n\t\t\t\t),\n\t\t\t\tcollateralTokenAddress,\n\t\t\t\tsentAddresses,\n\t\t\t\tsentAmounts,\n\t\t\t\t\"\" /// loanDataBytes\n\t\t\t);\n\t}\n\n\t/**\n\t * @notice Borrow and immediately get into a position.\n\t *\n\t * Trading on margin is used to increase an investor's buying power.\n\t * Margin is the amount of money required to open a position, while\n\t * leverage is the multiple of exposure to account equity.\n\t *\n\t * Leverage allows you to trade positions LARGER than the amount\n\t * of money in your trading account. Leverage is expressed as a ratio.\n\t *\n\t * When trading on margin, investors first deposit some token that then\n\t * serves as collateral for the loan, and then pay ongoing interest\n\t * payments on the money they borrow.\n\t *\n\t * Margin trading = taking a loan and swapping it:\n\t * In order to open a margin trade position,\n\t *  1.- The user calls marginTrade on the loan token contract.\n\t *  2.- The loan token contract provides the loan and sends it for processing\n\t *    to the protocol proxy contract.\n\t *  3.- The protocol proxy contract uses the module LoanOpening to create a\n\t *    position and swaps the loan tokens to collateral tokens.\n\t *  4.- The Sovryn Swap network looks up the correct converter and swaps the\n\t *    tokens.\n\t * If successful, the position is being held by the protocol proxy contract,\n\t * which is why positions need to be closed at the protocol proxy contract.\n\t *\n\t * @param loanId The ID of the loan, 0 for a new loan.\n\t * @param leverageAmount The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.\n\t * @param loanTokenSent The number of loan tokens provided by the user.\n\t * @param collateralTokenSent The amount of collateral tokens provided by the user.\n\t * @param collateralTokenAddress The token address of collateral.\n\t * @param trader The account that performs this trade.\n\t * @param loanDataBytes Additional loan data (not in use for token swaps).\n\t *\n\t * @return New principal and new collateral added to trade.\n\t * */\n\tfunction marginTrade(\n\t\tbytes32 loanId, /// 0 if new loan\n\t\tuint256 leverageAmount, /// Expected in x * 10**18 where x is the actual leverage (2, 3, 4, or 5).\n\t\tuint256 loanTokenSent,\n\t\tuint256 collateralTokenSent,\n\t\taddress collateralTokenAddress,\n\t\taddress trader,\n\t\tuint256 minReturn, // minimum position size in the collateral tokens\n\t\tbytes memory loanDataBytes /// Arbitrary order data.\n\t)\n\t\tpublic\n\t\tpayable\n\t\tnonReentrant /// Note: needs to be removed to allow flashloan use cases.\n\t\treturns (\n\t\t\tuint256,\n\t\t\tuint256 /// Returns new principal and new collateral added to trade.\n\t\t)\n\t{\n\t\t_checkPause();\n\n\t\tcheckPriceDivergence(leverageAmount, loanTokenSent, collateralTokenSent, collateralTokenAddress, minReturn);\n\n\t\tif (collateralTokenAddress == address(0)) {\n\t\t\tcollateralTokenAddress = wrbtcTokenAddress;\n\t\t}\n\n\t\trequire(collateralTokenAddress != loanTokenAddress, \"11\");\n\n\t\t/// @dev Ensure authorized use of existing loan.\n\t\trequire(loanId == 0 || msg.sender == trader, \"401 use of existing loan\");\n\n\t\t/// Temporary: limit transaction size.\n\t\tif (transactionLimit[collateralTokenAddress] > 0) require(collateralTokenSent <= transactionLimit[collateralTokenAddress]);\n\t\tif (transactionLimit[loanTokenAddress] > 0) require(loanTokenSent <= transactionLimit[loanTokenAddress]);\n\n\t\t/// @dev Compute the worth of the total deposit in loan tokens.\n\t\t/// (loanTokenSent + convert(collateralTokenSent))\n\t\t/// No actual swap happening here.\n\t\tuint256 totalDeposit = _totalDeposit(collateralTokenAddress, collateralTokenSent, loanTokenSent);\n\t\trequire(totalDeposit != 0, \"12\");\n\n\t\taddress[4] memory sentAddresses;\n\t\tuint256[5] memory sentAmounts;\n\n\t\tsentAddresses[0] = address(this); /// The lender.\n\t\tsentAddresses[1] = trader;\n\t\tsentAddresses[2] = trader;\n\t\t/// sentAddresses[3] = address(0); /// The manager.\n\n\t\t/// sentAmounts[0] = 0; /// interestRate (found later).\n\t\tsentAmounts[1] = totalDeposit; /// Total amount of deposit.\n\t\t/// sentAmounts[2] = 0; /// interestInitialAmount (interest is calculated based on fixed-term loan).\n\t\tsentAmounts[3] = loanTokenSent;\n\t\tsentAmounts[4] = collateralTokenSent;\n\n\t\t_settleInterest();\n\n\t\t(sentAmounts[1], sentAmounts[0]) = _getMarginBorrowAmountAndRate( /// borrowAmount, interestRate\n\t\t\tleverageAmount,\n\t\t\tsentAmounts[1] /// depositAmount\n\t\t);\n\n\t\t/// @dev Converting to initialMargin\n\t\tleverageAmount = SafeMath.div(10**38, leverageAmount);\n\t\treturn\n\t\t\t_borrowOrTrade(\n\t\t\t\tloanId,\n\t\t\t\t0, /// withdrawAmount\n\t\t\t\tleverageAmount, //initial margin\n\t\t\t\tcollateralTokenAddress,\n\t\t\t\tsentAddresses,\n\t\t\t\tsentAmounts,\n\t\t\t\tloanDataBytes\n\t\t\t);\n\t}\n\n\t/**\n\t * @notice Wrapper for marginTrade invoking setAffiliatesReferrer to track\n\t *   referral trade by affiliates program.\n\t *\n\t * @param loanId The ID of the loan, 0 for a new loan.\n\t * @param leverageAmount The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.\n\t * @param loanTokenSent The number of loan tokens provided by the user.\n\t * @param collateralTokenSent The amount of collateral tokens provided by the user.\n\t * @param collateralTokenAddress The token address of collateral.\n\t * @param trader The account that performs this trade.\n\t * @param minReturn Minimum position size in the collateral tokens\n\t * @param affiliateReferrer The address of the referrer from affiliates program.\n\t * @param loanDataBytes Additional loan data (not in use for token swaps).\n\t *\n\t * @return New principal and new collateral added to trade.\n\t */\n\tfunction marginTradeAffiliate(\n\t\tbytes32 loanId, // 0 if new loan\n\t\tuint256 leverageAmount, // expected in x * 10**18 where x is the actual leverage (2, 3, 4, or 5)\n\t\tuint256 loanTokenSent,\n\t\tuint256 collateralTokenSent,\n\t\taddress collateralTokenAddress,\n\t\taddress trader,\n\t\tuint256 minReturn, /// Minimum position size in the collateral tokens.\n\t\taddress affiliateReferrer, /// The user was brought by the affiliate (referrer).\n\t\tbytes calldata loanDataBytes /// Arbitrary order data.\n\t)\n\t\texternal\n\t\tpayable\n\t\treturns (\n\t\t\tuint256,\n\t\t\tuint256 /// Returns new principal and new collateral added to trade.\n\t\t)\n\t{\n\t\tif (affiliateReferrer != address(0))\n\t\t\tProtocolAffiliatesInterface(sovrynContractAddress).setAffiliatesReferrer(trader, affiliateReferrer);\n\t\treturn\n\t\t\tmarginTrade(\n\t\t\t\tloanId,\n\t\t\t\tleverageAmount,\n\t\t\t\tloanTokenSent,\n\t\t\t\tcollateralTokenSent,\n\t\t\t\tcollateralTokenAddress,\n\t\t\t\ttrader,\n\t\t\t\tminReturn,\n\t\t\t\tloanDataBytes\n\t\t\t);\n\t}\n\n\t/**\n\t * @notice Transfer tokens wrapper.\n\t * Sets token owner the msg.sender.\n\t * Sets maximun allowance uint256(-1) to ensure tokens are always transferred.\n\t *\n\t * @param _to The recipient of the tokens.\n\t * @param _value The amount of tokens sent.\n\t * @return Success true/false.\n\t * */\n\tfunction transfer(address _to, uint256 _value) external returns (bool) {\n\t\treturn _internalTransferFrom(msg.sender, _to, _value, uint256(-1));\n\t}\n\n\t/**\n\t * @notice Moves `_value` loan tokens from `_from` to `_to` using the\n\t * allowance mechanism. Calls internal _internalTransferFrom function.\n\t *\n\t * @return A boolean value indicating whether the operation succeeded.\n\t */\n\tfunction transferFrom(\n\t\taddress _from,\n\t\taddress _to,\n\t\tuint256 _value\n\t) external returns (bool) {\n\t\treturn\n\t\t\t_internalTransferFrom(\n\t\t\t\t_from,\n\t\t\t\t_to,\n\t\t\t\t_value,\n\t\t\t\t//allowed[_from][msg.sender]\n\t\t\t\tProtocolLike(sovrynContractAddress).isLoanPool(msg.sender) ? uint256(-1) : allowed[_from][msg.sender]\n\t\t\t);\n\t}\n\n\t/**\n\t * @notice Transfer tokens, low level.\n\t * Checks allowance, updates sender and recipient balances\n\t * and updates checkpoints too.\n\t *\n\t * @param _from The tokens' owner.\n\t * @param _to The recipient of the tokens.\n\t * @param _value The amount of tokens sent.\n\t * @param _allowanceAmount The amount of tokens allowed to transfer.\n\t *\n\t * @return Success true/false.\n\t * */\n\tfunction _internalTransferFrom(\n\t\taddress _from,\n\t\taddress _to,\n\t\tuint256 _value,\n\t\tuint256 _allowanceAmount\n\t) internal returns (bool) {\n\t\tif (_allowanceAmount != uint256(-1)) {\n\t\t\tallowed[_from][msg.sender] = _allowanceAmount.sub(_value, \"14\");\n\t\t}\n\n\t\trequire(_to != address(0), \"15\");\n\n\t\tuint256 _balancesFrom = balances[_from];\n\t\tuint256 _balancesFromNew = _balancesFrom.sub(_value, \"16\");\n\t\tbalances[_from] = _balancesFromNew;\n\n\t\tuint256 _balancesTo = balances[_to];\n\t\tuint256 _balancesToNew = _balancesTo.add(_value);\n\t\tbalances[_to] = _balancesToNew;\n\n\t\t/// @dev Handle checkpoint update.\n\t\tuint256 _currentPrice = tokenPrice();\n\n\t\t//checkpoints are not being used by the smart contract logic itself, but just for external use (query the profit)\n\t\t//only update the checkpoints of a user if he's not depositing to / withdrawing from the lending pool\n\t\tif (_from != liquidityMiningAddress && _to != liquidityMiningAddress) {\n\t\t\t_updateCheckpoints(_from, _balancesFrom, _balancesFromNew, _currentPrice);\n\t\t\t_updateCheckpoints(_to, _balancesTo, _balancesToNew, _currentPrice);\n\t\t}\n\n\t\temit Transfer(_from, _to, _value);\n\t\treturn true;\n\t}\n\n\t/**\n\t * @notice Update the user's checkpoint price and profit so far.\n\t * In this loan token contract, whenever some tokens are minted or burned,\n\t * the _updateCheckpoints() function is invoked to update the stats to\n\t * reflect the balance changes.\n\t *\n\t * @param _user The user address.\n\t * @param _oldBalance The user's previous balance.\n\t * @param _newBalance The user's updated balance.\n\t * @param _currentPrice The current loan token price.\n\t * */\n\tfunction _updateCheckpoints(\n\t\taddress _user,\n\t\tuint256 _oldBalance,\n\t\tuint256 _newBalance,\n\t\tuint256 _currentPrice\n\t) internal {\n\t\t/// @dev keccak256(\"iToken_ProfitSoFar\")\n\t\tbytes32 slot = keccak256(abi.encodePacked(_user, iToken_ProfitSoFar));\n\n\t\tint256 _currentProfit;\n\t\tif (_newBalance == 0) {\n\t\t\t_currentPrice = 0;\n\t\t} else if (_oldBalance != 0) {\n\t\t\t_currentProfit = _profitOf(slot, _oldBalance, _currentPrice, checkpointPrices_[_user]);\n\t\t}\n\n\t\tassembly {\n\t\t\tsstore(slot, _currentProfit)\n\t\t}\n\n\t\tcheckpointPrices_[_user] = _currentPrice;\n\t}\n\n\t/* Public View functions */\n\n\t/**\n\t * @notice Wrapper for internal _profitOf low level function.\n\t * @param user The user address.\n\t * @return The profit of a user.\n\t * */\n\tfunction profitOf(address user) external view returns (int256) {\n\t\t/// @dev keccak256(\"iToken_ProfitSoFar\")\n\t\tbytes32 slot = keccak256(abi.encodePacked(user, iToken_ProfitSoFar));\n\t\t//TODO + LM balance\n\t\treturn _profitOf(slot, balances[user], tokenPrice(), checkpointPrices_[user]);\n\t}\n\n\t/**\n\t * @notice Profit calculation based on checkpoints of price.\n\t * @param slot The user slot.\n\t * @param _balance The user balance.\n\t * @param _currentPrice The current price of the loan token.\n\t * @param _checkpointPrice The price of the loan token on checkpoint.\n\t * @return The profit of a user.\n\t * */\n\tfunction _profitOf(\n\t\tbytes32 slot,\n\t\tuint256 _balance,\n\t\tuint256 _currentPrice,\n\t\tuint256 _checkpointPrice\n\t) internal view returns (int256 profitSoFar) {\n\t\tif (_checkpointPrice == 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tassembly {\n\t\t\tprofitSoFar := sload(slot)\n\t\t}\n\n\t\tprofitSoFar = int256(_currentPrice).sub(int256(_checkpointPrice)).mul(int256(_balance)).div(sWEI_PRECISION).add(profitSoFar);\n\t}\n\n\t/**\n\t * @notice Loan token price calculation considering unpaid interests.\n\t * @return The loan token price.\n\t * */\n\tfunction tokenPrice() public view returns (uint256 price) {\n\t\tuint256 interestUnPaid;\n\t\tif (lastSettleTime_ != uint88(block.timestamp)) {\n\t\t\t(, interestUnPaid) = _getAllInterest();\n\t\t}\n\n\t\treturn _tokenPrice(_totalAssetSupply(interestUnPaid));\n\t}\n\n\t/**\n\t * @notice Getter for the price checkpoint mapping.\n\t * @param _user The user account as the mapping index.\n\t * @return The price on the checkpoint for this user.\n\t * */\n\tfunction checkpointPrice(address _user) public view returns (uint256 price) {\n\t\treturn checkpointPrices_[_user];\n\t}\n\n\t/**\n\t * @notice Get current liquidity.\n\t * A part of total funds supplied are borrowed. Liquidity = supply - borrow\n\t * @return The market liquidity.\n\t * */\n\tfunction marketLiquidity() public view returns (uint256) {\n\t\tuint256 totalSupply = _totalAssetSupply(0);\n\t\tuint256 totalBorrow = totalAssetBorrow();\n\t\tif (totalSupply > totalBorrow) {\n\t\t\treturn totalSupply - totalBorrow;\n\t\t}\n\t}\n\n\t/**\n\t * @notice Wrapper for average borrow interest.\n\t * @return The average borrow interest.\n\t * */\n\tfunction avgBorrowInterestRate() public view returns (uint256) {\n\t\treturn _avgBorrowInterestRate(totalAssetBorrow());\n\t}\n\n\t/**\n\t * @notice Get borrow interest rate.\n\t * The minimum rate the next base protocol borrower will receive\n\t * for variable-rate loans.\n\t * @return The borrow interest rate.\n\t * */\n\tfunction borrowInterestRate() public view returns (uint256) {\n\t\treturn _nextBorrowInterestRate(0);\n\t}\n\n\t/**\n\t * @notice Public wrapper for internal call.\n\t * @param borrowAmount The amount of tokens to borrow.\n\t * @return The next borrow interest rate.\n\t * */\n\tfunction nextBorrowInterestRate(uint256 borrowAmount) public view returns (uint256) {\n\t\treturn _nextBorrowInterestRate(borrowAmount);\n\t}\n\n\t/**\n\t * @notice Get interest rate.\n\t *\n\t * @return Interest that lenders are currently receiving when supplying to\n\t * the pool.\n\t * */\n\tfunction supplyInterestRate() public view returns (uint256) {\n\t\treturn totalSupplyInterestRate(_totalAssetSupply(0));\n\t}\n\n\t/**\n\t * @notice Get interest rate w/ added supply.\n\t * @param supplyAmount The amount of tokens supplied.\n\t * @return Interest that lenders are currently receiving when supplying\n\t * a given amount of tokens to the pool.\n\t * */\n\tfunction nextSupplyInterestRate(uint256 supplyAmount) public view returns (uint256) {\n\t\treturn totalSupplyInterestRate(_totalAssetSupply(0).add(supplyAmount));\n\t}\n\n\t/**\n\t * @notice Get interest rate w/ added supply assets.\n\t * @param assetSupply The amount of loan tokens supplied.\n\t * @return Interest that lenders are currently receiving when supplying\n\t * a given amount of loan tokens to the pool.\n\t * */\n\tfunction totalSupplyInterestRate(uint256 assetSupply) public view returns (uint256) {\n\t\tuint256 assetBorrow = totalAssetBorrow();\n\t\tif (assetBorrow != 0) {\n\t\t\treturn _supplyInterestRate(assetBorrow, assetSupply);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Get the total amount of loan tokens on debt.\n\t * Calls protocol getTotalPrincipal function.\n\t * In the context of borrowing, principal is the initial size of a loan.\n\t * It can also be the amount still owed on a loan. If you take out a\n\t * $50,000 mortgage, for example, the principal is $50,000. If you pay off\n\t * $30,000, the principal balance now consists of the remaining $20,000.\n\t *\n\t * @return The total amount of loan tokens on debt.\n\t * */\n\tfunction totalAssetBorrow() public view returns (uint256) {\n\t\treturn ProtocolLike(sovrynContractAddress).getTotalPrincipal(address(this), loanTokenAddress);\n\t}\n\n\t/**\n\t * @notice Get the total amount of loan tokens on supply.\n\t * @dev Wrapper for internal _totalAssetSupply function.\n\t * @return The total amount of loan tokens on supply.\n\t * */\n\tfunction totalAssetSupply() public view returns (uint256) {\n\t\tuint256 interestUnPaid;\n\t\tif (lastSettleTime_ != uint88(block.timestamp)) {\n\t\t\t(, interestUnPaid) = _getAllInterest();\n\t\t}\n\n\t\treturn _totalAssetSupply(interestUnPaid);\n\t}\n\n\t/**\n\t * @notice Compute the maximum deposit amount under current market conditions.\n\t * @dev maxEscrowAmount = liquidity * (100 - interestForDuration) / 100\n\t * @param leverageAmount The chosen multiplier with 18 decimals.\n\t * */\n\tfunction getMaxEscrowAmount(uint256 leverageAmount) public view returns (uint256 maxEscrowAmount) {\n\t\t/**\n\t\t * @dev Mathematical imperfection: depending on liquidity we might be able\n\t\t * to borrow more if utilization is below the kink level.\n\t\t * */\n\t\tuint256 interestForDuration = maxScaleRate.mul(28).div(365);\n\t\tuint256 factor = uint256(10**20).sub(interestForDuration);\n\t\tuint256 maxLoanSize = marketLiquidity().mul(factor).div(10**20);\n\t\tmaxEscrowAmount = maxLoanSize.mul(10**18).div(leverageAmount);\n\t}\n\n\t/**\n\t * @notice Get loan token balance.\n\t * @return The user's balance of underlying token.\n\t * */\n\tfunction assetBalanceOf(address _owner) public view returns (uint256) {\n\t\tuint256 balanceOnLM = 0;\n\t\tif (liquidityMiningAddress != address(0)) {\n\t\t\tbalanceOnLM = ILiquidityMining(liquidityMiningAddress).getUserPoolTokenBalance(address(this), _owner);\n\t\t}\n\t\treturn balanceOf(_owner).add(balanceOnLM).mul(tokenPrice()).div(10**18);\n\t}\n\n\t/**\n\t * @notice Get margin information on a trade.\n\t *\n\t * @param leverageAmount The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.\n\t * @param loanTokenSent The number of loan tokens provided by the user.\n\t * @param collateralTokenSent The amount of collateral tokens provided by the user.\n\t * @param collateralTokenAddress The token address of collateral.\n\t *\n\t * @return The principal, the collateral and the interestRate.\n\t * */\n\tfunction getEstimatedMarginDetails(\n\t\tuint256 leverageAmount,\n\t\tuint256 loanTokenSent,\n\t\tuint256 collateralTokenSent,\n\t\taddress collateralTokenAddress // address(0) means ETH\n\t)\n\t\tpublic\n\t\tview\n\t\treturns (\n\t\t\tuint256 principal,\n\t\t\tuint256 collateral,\n\t\t\tuint256 interestRate\n\t\t)\n\t{\n\t\tif (collateralTokenAddress == address(0)) {\n\t\t\tcollateralTokenAddress = wrbtcTokenAddress;\n\t\t}\n\n\t\tuint256 totalDeposit = _totalDeposit(collateralTokenAddress, collateralTokenSent, loanTokenSent);\n\n\t\t(principal, interestRate) = _getMarginBorrowAmountAndRate(leverageAmount, totalDeposit);\n\t\tif (principal > _underlyingBalance()) {\n\t\t\treturn (0, 0, 0);\n\t\t}\n\n\t\tloanTokenSent = loanTokenSent.add(principal);\n\n\t\tcollateral = ProtocolLike(sovrynContractAddress).getEstimatedMarginExposure(\n\t\t\tloanTokenAddress,\n\t\t\tcollateralTokenAddress,\n\t\t\tloanTokenSent,\n\t\t\tcollateralTokenSent,\n\t\t\tinterestRate,\n\t\t\tprincipal\n\t\t);\n\t}\n\n\t/**\n\t * @notice Calculate the deposit required to a given borrow.\n\t *\n\t * The function for doing over-collateralized borrows against loan tokens\n\t * expects a minimum amount of collateral be sent to satisfy collateral\n\t * requirements of the loan, for borrow amount, interest rate, and\n\t * initial loan duration. To determine appropriate values to pass to this\n\t * function for a given loan, `getDepositAmountForBorrow` and\n\t * 'getBorrowAmountForDeposit` are required.\n\t *\n\t * @param borrowAmount The amount of borrow.\n\t * @param initialLoanDuration The duration of the loan.\n\t * @param collateralTokenAddress The token address of collateral.\n\t *\n\t * @return The amount of deposit required.\n\t * */\n\tfunction getDepositAmountForBorrow(\n\t\tuint256 borrowAmount,\n\t\tuint256 initialLoanDuration, /// Duration in seconds.\n\t\taddress collateralTokenAddress /// address(0) means rBTC\n\t) public view returns (uint256 depositAmount) {\n\t\tif (borrowAmount != 0) {\n\t\t\t(, , uint256 newBorrowAmount) = _getInterestRateAndBorrowAmount(borrowAmount, totalAssetSupply(), initialLoanDuration);\n\n\t\t\tif (newBorrowAmount <= _underlyingBalance()) {\n\t\t\t\tif (collateralTokenAddress == address(0)) collateralTokenAddress = wrbtcTokenAddress;\n\t\t\t\tbytes32 loanParamsId = loanParamsIds[uint256(keccak256(abi.encodePacked(collateralTokenAddress, true)))];\n\t\t\t\treturn\n\t\t\t\t\tProtocolLike(sovrynContractAddress)\n\t\t\t\t\t\t.getRequiredCollateral(\n\t\t\t\t\t\tloanTokenAddress,\n\t\t\t\t\t\tcollateralTokenAddress,\n\t\t\t\t\t\tnewBorrowAmount,\n\t\t\t\t\t\tProtocolSettingsLike(sovrynContractAddress).minInitialMargin(loanParamsId), /// initialMargin\n\t\t\t\t\t\ttrue /// isTorqueLoan\n\t\t\t\t\t)\n\t\t\t\t\t\t.add(10); /// Some dust to compensate for rounding errors.\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice Calculate the borrow allowed for a given deposit.\n\t *\n\t * The function for doing over-collateralized borrows against loan tokens\n\t * expects a minimum amount of collateral be sent to satisfy collateral\n\t * requirements of the loan, for borrow amount, interest rate, and\n\t * initial loan duration. To determine appropriate values to pass to this\n\t * function for a given loan, `getDepositAmountForBorrow` and\n\t * 'getBorrowAmountForDeposit` are required.\n\t *\n\t * @param depositAmount The amount of deposit.\n\t * @param initialLoanDuration The duration of the loan.\n\t * @param collateralTokenAddress The token address of collateral.\n\t *\n\t * @return The amount of borrow allowed.\n\t * */\n\tfunction getBorrowAmountForDeposit(\n\t\tuint256 depositAmount,\n\t\tuint256 initialLoanDuration, /// Duration in seconds.\n\t\taddress collateralTokenAddress /// address(0) means rBTC\n\t) public view returns (uint256 borrowAmount) {\n\t\tif (depositAmount != 0) {\n\t\t\tif (collateralTokenAddress == address(0)) collateralTokenAddress = wrbtcTokenAddress;\n\t\t\tbytes32 loanParamsId = loanParamsIds[uint256(keccak256(abi.encodePacked(collateralTokenAddress, true)))];\n\t\t\tborrowAmount = ProtocolLike(sovrynContractAddress).getBorrowAmount(\n\t\t\t\tloanTokenAddress,\n\t\t\t\tcollateralTokenAddress,\n\t\t\t\tdepositAmount,\n\t\t\t\tProtocolSettingsLike(sovrynContractAddress).minInitialMargin(loanParamsId), /// initialMargin,\n\t\t\t\ttrue /// isTorqueLoan\n\t\t\t);\n\n\t\t\t(, , borrowAmount) = _getInterestRateAndBorrowAmount(borrowAmount, totalAssetSupply(), initialLoanDuration);\n\n\t\t\tif (borrowAmount > _underlyingBalance()) {\n\t\t\t\tborrowAmount = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction checkPriceDivergence(\n\t\tuint256 leverageAmount,\n\t\tuint256 loanTokenSent,\n\t\tuint256 collateralTokenSent,\n\t\taddress collateralTokenAddress,\n\t\tuint256 minReturn\n\t) public view {\n\t\t(, uint256 estimatedCollateral, ) =\n\t\t\tgetEstimatedMarginDetails(leverageAmount, loanTokenSent, collateralTokenSent, collateralTokenAddress);\n\t\trequire(estimatedCollateral >= minReturn, \"coll too low\");\n\t}\n\n\t/* Internal functions */\n\n\t/**\n\t * @notice transfers the underlying asset from the msg.sender and mints tokens for the receiver\n\t * @param receiver the address of the iToken receiver\n\t * @param depositAmount the amount of underlying assets to be deposited\n\t * @return the amount of iTokens issued\n\t */\n\tfunction _mintToken(address receiver, uint256 depositAmount) internal returns (uint256 mintAmount) {\n\t\tuint256 currentPrice;\n\n\t\t//calculate amount to mint and transfer the underlying asset\n\t\t(mintAmount, currentPrice) = _prepareMinting(depositAmount);\n\n\t\t//compute balances needed for checkpoint update, considering that the user might have a pool token balance\n\t\t//on the liquidity mining contract\n\t\tuint256 balanceOnLM = 0;\n\t\tif (liquidityMiningAddress != address(0))\n\t\t\tbalanceOnLM = ILiquidityMining(liquidityMiningAddress).getUserPoolTokenBalance(address(this), receiver);\n\t\tuint256 oldBalance = balances[receiver].add(balanceOnLM);\n\t\tuint256 newBalance = oldBalance.add(mintAmount);\n\n\t\t//mint the tokens to the receiver\n\t\t_mint(receiver, mintAmount, depositAmount, currentPrice);\n\n\t\t//update the checkpoint of the receiver\n\t\t_updateCheckpoints(receiver, oldBalance, newBalance, currentPrice);\n\t}\n\n\t/**\n\t * calculates the amount of tokens to mint and transfers the underlying asset to this contract\n\t * @param depositAmount the amount of the underyling asset deposited\n\t * @return the amount to be minted\n\t */\n\tfunction _prepareMinting(uint256 depositAmount) internal returns (uint256 mintAmount, uint256 currentPrice) {\n\t\trequire(depositAmount != 0, \"17\");\n\n\t\t_settleInterest();\n\n\t\tcurrentPrice = _tokenPrice(_totalAssetSupply(0));\n\t\tmintAmount = depositAmount.mul(10**18).div(currentPrice);\n\n\t\tif (msg.value == 0) {\n\t\t\t_safeTransferFrom(loanTokenAddress, msg.sender, address(this), depositAmount, \"18\");\n\t\t} else {\n\t\t\tIWrbtc(wrbtcTokenAddress).deposit.value(depositAmount)();\n\t\t}\n\t}\n\n\t/**\n\t * @notice A wrapper for AdvancedToken::_burn\n\t *\n\t * @param burnAmount The amount of loan tokens to redeem.\n\t *\n\t * @return The amount of underlying tokens payed to lender.\n\t * */\n\tfunction _burnToken(uint256 burnAmount) internal returns (uint256 loanAmountPaid) {\n\t\trequire(burnAmount != 0, \"19\");\n\n\t\tif (burnAmount > balanceOf(msg.sender)) {\n\t\t\trequire(burnAmount == uint256(-1), \"32\");\n\t\t\tburnAmount = balanceOf(msg.sender);\n\t\t}\n\n\t\t_settleInterest();\n\n\t\tuint256 currentPrice = _tokenPrice(_totalAssetSupply(0));\n\n\t\tuint256 loanAmountOwed = burnAmount.mul(currentPrice).div(10**18);\n\t\tuint256 loanAmountAvailableInContract = _underlyingBalance();\n\n\t\tloanAmountPaid = loanAmountOwed;\n\t\trequire(loanAmountPaid <= loanAmountAvailableInContract, \"37\");\n\n\t\t//compute balances needed for checkpoint update, considering that the user might have a pool token balance\n\t\t//on the liquidity mining contract\n\t\tuint256 balanceOnLM = 0;\n\t\tif (liquidityMiningAddress != address(0))\n\t\t\tbalanceOnLM = ILiquidityMining(liquidityMiningAddress).getUserPoolTokenBalance(address(this), msg.sender);\n\t\tuint256 oldBalance = balances[msg.sender].add(balanceOnLM);\n\t\tuint256 newBalance = oldBalance.sub(burnAmount);\n\n\t\t_burn(msg.sender, burnAmount, loanAmountPaid, currentPrice);\n\n\t\t//this function does not only update the checkpoints but also the current profit of the user\n\t\t//all for external use only\n\t\t_updateCheckpoints(msg.sender, oldBalance, newBalance, currentPrice);\n\t}\n\n\t/**\n\t * @notice Withdraw loan token interests from protocol.\n\t * This function only operates once per block.\n\t * It asks protocol to withdraw accrued interests for the loan token.\n\t *\n\t * @dev Internal sync required on every loan trade before starting.\n\t * */\n\tfunction _settleInterest() internal {\n\t\tuint88 ts = uint88(block.timestamp);\n\t\tif (lastSettleTime_ != ts) {\n\t\t\tProtocolLike(sovrynContractAddress).withdrawAccruedInterest(loanTokenAddress);\n\n\t\t\tlastSettleTime_ = ts;\n\t\t}\n\t}\n\n\t/**\n\t * @notice Compute what the deposit is worth in loan tokens using the swap rate\n\t *      used for loan size computation.\n\t *\n\t * @param collateralTokenAddress The token address of the collateral.\n\t * @param collateralTokenSent The amount of collateral tokens provided by the user.\n\t * @param loanTokenSent The number of loan tokens provided by the user.\n\t *\n\t * @return The value of the deposit in loan tokens.\n\t * */\n\tfunction _totalDeposit(\n\t\taddress collateralTokenAddress,\n\t\tuint256 collateralTokenSent,\n\t\tuint256 loanTokenSent\n\t) internal view returns (uint256 totalDeposit) {\n\t\ttotalDeposit = loanTokenSent;\n\n\t\tif (collateralTokenSent != 0) {\n\t\t\t/// @dev Get the oracle rate from collateral -> loan\n\t\t\t(uint256 collateralToLoanRate, uint256 collateralToLoanPrecision) =\n\t\t\t\tFeedsLike(ProtocolLike(sovrynContractAddress).priceFeeds()).queryRate(collateralTokenAddress, loanTokenAddress);\n\t\t\trequire((collateralToLoanRate != 0) && (collateralToLoanPrecision != 0), \"invalid rate collateral token\");\n\n\t\t\t/// @dev Compute the loan token amount with the oracle rate.\n\t\t\tuint256 loanTokenAmount = collateralTokenSent.mul(collateralToLoanRate).div(collateralToLoanPrecision);\n\n\t\t\t/// @dev See how many collateralTokens we would get if exchanging this amount of loan tokens to collateral tokens.\n\t\t\tuint256 collateralTokenAmount =\n\t\t\t\tProtocolLike(sovrynContractAddress).getSwapExpectedReturn(loanTokenAddress, collateralTokenAddress, loanTokenAmount);\n\n\t\t\t/// @dev Probably not the same due to the price difference.\n\t\t\tif (collateralTokenAmount != collateralTokenSent) {\n\t\t\t\t//scale the loan token amount accordingly, so we'll get the expected position size in the end\n\t\t\t\tloanTokenAmount = loanTokenAmount.mul(collateralTokenAmount).div(collateralTokenSent);\n\t\t\t}\n\n\t\t\ttotalDeposit = loanTokenAmount.add(totalDeposit);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Compute interest rate and other loan parameters.\n\t *\n\t * @param borrowAmount The amount of tokens to borrow.\n\t * @param assetSupply The amount of loan tokens supplied.\n\t * @param initialLoanDuration The duration of the loan in seconds.\n\t *   If the loan is not paid back until then, it'll need to be rolled over.\n\t *\n\t * @return The interest rate, the interest calculated based on fixed-term\n\t *   loan, and the new borrow amount.\n\t * */\n\tfunction _getInterestRateAndBorrowAmount(\n\t\tuint256 borrowAmount,\n\t\tuint256 assetSupply,\n\t\tuint256 initialLoanDuration /// Duration in seconds.\n\t)\n\t\tinternal\n\t\tview\n\t\treturns (\n\t\t\tuint256 interestRate,\n\t\t\tuint256 interestInitialAmount,\n\t\t\tuint256 newBorrowAmount\n\t\t)\n\t{\n\t\tinterestRate = _nextBorrowInterestRate2(borrowAmount, assetSupply);\n\n\t\t/// newBorrowAmount = borrowAmount * 10^18 / (10^18 - interestRate * 7884000 * 10^18 / 31536000 / 10^20)\n\t\tnewBorrowAmount = borrowAmount.mul(10**18).div(\n\t\t\tSafeMath.sub(\n\t\t\t\t10**18,\n\t\t\t\tinterestRate.mul(initialLoanDuration).mul(10**18).div(31536000 * 10**20) /// 365 * 86400 * 10**20\n\t\t\t)\n\t\t);\n\n\t\tinterestInitialAmount = newBorrowAmount.sub(borrowAmount);\n\t}\n\n\t/**\n\t * @notice Compute principal and collateral.\n\t *\n\t * @param loanId The ID of the loan, 0 for a new loan.\n\t * @param withdrawAmount The amount to be withdrawn (actually borrowed).\n\t * @param initialMargin The initial margin with 18 decimals\n\t * @param collateralTokenAddress  The address of the token to be used as\n\t *   collateral. Cannot be the loan token address.\n\t * @param sentAddresses The addresses to send tokens: lender, borrower,\n\t *   receiver and manager.\n\t * @param sentAmounts The amounts to send to each address.\n\t * @param loanDataBytes Additional loan data (not in use for token swaps).\n\t *\n\t * @return The new principal and the new collateral. Principal is the\n\t *   complete borrowed amount (in loan tokens). Collateral is the complete\n\t *   position size (loan + margin) (in collateral tokens).\n\t * */\n\tfunction _borrowOrTrade(\n\t\tbytes32 loanId,\n\t\tuint256 withdrawAmount,\n\t\tuint256 initialMargin,\n\t\taddress collateralTokenAddress,\n\t\taddress[4] memory sentAddresses,\n\t\tuint256[5] memory sentAmounts,\n\t\tbytes memory loanDataBytes\n\t) internal returns (uint256, uint256) {\n\t\t_checkPause();\n\t\trequire(\n\t\t\tsentAmounts[1] <= _underlyingBalance() && /// newPrincipal (borrowed amount + fees)\n\t\t\t\tsentAddresses[1] != address(0), /// The borrower.\n\t\t\t\"24\"\n\t\t);\n\n\t\tif (sentAddresses[2] == address(0)) {\n\t\t\tsentAddresses[2] = sentAddresses[1]; /// The receiver = the borrower.\n\t\t}\n\n\t\t/// @dev Handle transfers prior to adding newPrincipal to loanTokenSent\n\t\tuint256 msgValue = _verifyTransfers(collateralTokenAddress, sentAddresses, sentAmounts, withdrawAmount);\n\n\t\t/**\n\t\t * @dev Adding the loan token portion from the lender to loanTokenSent\n\t\t * (add the loan to the loan tokens sent from the user).\n\t\t * */\n\t\tsentAmounts[3] = sentAmounts[3].add(sentAmounts[1]); /// newPrincipal\n\n\t\tif (withdrawAmount != 0) {\n\t\t\t/// @dev withdrawAmount already sent to the borrower, so we aren't sending it to the protocol.\n\t\t\tsentAmounts[3] = sentAmounts[3].sub(withdrawAmount);\n\t\t}\n\n\t\tbool withdrawAmountExist = false; /// Default is false, but added just as to make sure.\n\n\t\tif (withdrawAmount != 0) {\n\t\t\twithdrawAmountExist = true;\n\t\t}\n\n\t\tbytes32 loanParamsId = loanParamsIds[uint256(keccak256(abi.encodePacked(collateralTokenAddress, withdrawAmountExist)))];\n\n\t\t(sentAmounts[1], sentAmounts[4]) = ProtocolLike(sovrynContractAddress).borrowOrTradeFromPool.value(msgValue)( /// newPrincipal, newCollateral\n\t\t\tloanParamsId,\n\t\t\tloanId,\n\t\t\twithdrawAmountExist,\n\t\t\tinitialMargin,\n\t\t\tsentAddresses,\n\t\t\tsentAmounts,\n\t\t\tloanDataBytes\n\t\t);\n\t\trequire(sentAmounts[1] != 0, \"25\");\n\n\t\t/// @dev Setting not-first-trade flag to prevent binding to an affiliate existing users post factum.\n\t\t/// @dev REFACTOR: move to a general interface: ProtocolSettingsLike?\n\t\tProtocolAffiliatesInterface(sovrynContractAddress).setUserNotFirstTradeFlag(sentAddresses[1]);\n\n\t\treturn (sentAmounts[1], sentAmounts[4]); // newPrincipal, newCollateral\n\t}\n\n\t/// sentAddresses[0]: lender\n\t/// sentAddresses[1]: borrower\n\t/// sentAddresses[2]: receiver\n\t/// sentAddresses[3]: manager\n\t/// sentAmounts[0]: interestRate\n\t/// sentAmounts[1]: newPrincipal\n\t/// sentAmounts[2]: interestInitialAmount\n\t/// sentAmounts[3]: loanTokenSent\n\t/// sentAmounts[4]: collateralTokenSent\n\t/**\n\t * @notice .\n\t *\n\t * @param collateralTokenAddress The address of the token to be used as\n\t *   collateral. Cannot be the loan token address.\n\t * @param sentAddresses The addresses to send tokens: lender, borrower,\n\t *   receiver and manager.\n\t * @param sentAmounts The amounts to send to each address.\n\t * @param withdrawalAmount The amount of tokens to withdraw.\n\t *\n\t * @return msgValue The amount of rBTC sent minus the collateral on tokens.\n\t * */\n\tfunction _verifyTransfers(\n\t\taddress collateralTokenAddress,\n\t\taddress[4] memory sentAddresses,\n\t\tuint256[5] memory sentAmounts,\n\t\tuint256 withdrawalAmount\n\t) internal returns (uint256 msgValue) {\n\t\taddress _wrbtcToken = wrbtcTokenAddress;\n\t\taddress _loanTokenAddress = loanTokenAddress;\n\t\taddress receiver = sentAddresses[2];\n\t\tuint256 newPrincipal = sentAmounts[1];\n\t\tuint256 loanTokenSent = sentAmounts[3];\n\t\tuint256 collateralTokenSent = sentAmounts[4];\n\n\t\trequire(_loanTokenAddress != collateralTokenAddress, \"26\");\n\n\t\tmsgValue = msg.value;\n\n\t\tif (withdrawalAmount != 0) {\n\t\t\t/// withdrawOnOpen == true\n\t\t\t_safeTransfer(_loanTokenAddress, receiver, withdrawalAmount, \"\");\n\t\t\tif (newPrincipal > withdrawalAmount) {\n\t\t\t\t_safeTransfer(_loanTokenAddress, sovrynContractAddress, newPrincipal - withdrawalAmount, \"\");\n\t\t\t}\n\t\t} else {\n\t\t\t_safeTransfer(_loanTokenAddress, sovrynContractAddress, newPrincipal, \"27\");\n\t\t}\n\t\t/**\n\t\t * This is a critical piece of code!\n\t\t * rBTC are supposed to be held by the contract itself, while other tokens are being transfered from the sender directly.\n\t\t * */\n\t\tif (collateralTokenSent != 0) {\n\t\t\tif (collateralTokenAddress == _wrbtcToken && msgValue != 0 && msgValue >= collateralTokenSent) {\n\t\t\t\tIWrbtc(_wrbtcToken).deposit.value(collateralTokenSent)();\n\t\t\t\t_safeTransfer(collateralTokenAddress, sovrynContractAddress, collateralTokenSent, \"28-a\");\n\t\t\t\tmsgValue -= collateralTokenSent;\n\t\t\t} else {\n\t\t\t\t_safeTransferFrom(collateralTokenAddress, msg.sender, sovrynContractAddress, collateralTokenSent, \"28-b\");\n\t\t\t}\n\t\t}\n\n\t\tif (loanTokenSent != 0) {\n\t\t\t_safeTransferFrom(_loanTokenAddress, msg.sender, sovrynContractAddress, loanTokenSent, \"29\");\n\t\t}\n\t}\n\n\t/**\n\t * @notice Execute the ERC20 token's `transfer` function and reverts\n\t * upon failure the main purpose of this function is to prevent a non\n\t * standard ERC20 token from failing silently.\n\t *\n\t * @dev Wrappers around ERC20 operations that throw on failure (when the\n\t * token contract returns false). Tokens that return no value (and instead\n\t * revert or throw on failure) are also supported, non-reverting calls are\n\t * assumed to be successful.\n\t *\n\t * @param token The ERC20 token address.\n\t * @param to The target address.\n\t * @param amount The transfer amount.\n\t * @param errorMsg The error message on failure.\n\t */\n\tfunction _safeTransfer(\n\t\taddress token,\n\t\taddress to,\n\t\tuint256 amount,\n\t\tstring memory errorMsg\n\t) internal {\n\t\t_callOptionalReturn(token, abi.encodeWithSelector(IERC20(token).transfer.selector, to, amount), errorMsg);\n\t}\n\n\t/**\n\t * @notice Execute the ERC20 token's `transferFrom` function and reverts\n\t * upon failure the main purpose of this function is to prevent a non\n\t * standard ERC20 token from failing silently.\n\t *\n\t * @dev Wrappers around ERC20 operations that throw on failure (when the\n\t * token contract returns false). Tokens that return no value (and instead\n\t * revert or throw on failure) are also supported, non-reverting calls are\n\t * assumed to be successful.\n\t *\n\t * @param token The ERC20 token address.\n\t * @param from The source address.\n\t * @param to The target address.\n\t * @param amount The transfer amount.\n\t * @param errorMsg The error message on failure.\n\t */\n\tfunction _safeTransferFrom(\n\t\taddress token,\n\t\taddress from,\n\t\taddress to,\n\t\tuint256 amount,\n\t\tstring memory errorMsg\n\t) internal {\n\t\t_callOptionalReturn(token, abi.encodeWithSelector(IERC20(token).transferFrom.selector, from, to, amount), errorMsg);\n\t}\n\n\t/**\n\t * @notice Imitate a Solidity high-level call (i.e. a regular function\n\t * call to a contract), relaxing the requirement on the return value:\n\t * the return value is optional (but if data is returned, it must not be\n\t * false).\n\t *\n\t * @param token The token targeted by the call.\n\t * @param data The call data (encoded using abi.encode or one of its variants).\n\t * @param errorMsg The error message on failure.\n\t * */\n\tfunction _callOptionalReturn(\n\t\taddress token,\n\t\tbytes memory data,\n\t\tstring memory errorMsg\n\t) internal {\n\t\t(bool success, bytes memory returndata) = token.call(data);\n\t\trequire(success, errorMsg);\n\n\t\tif (returndata.length != 0) {\n\t\t\trequire(abi.decode(returndata, (bool)), errorMsg);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Get the loan contract balance.\n\t * @return The balance of the loan token for this contract.\n\t * */\n\tfunction _underlyingBalance() internal view returns (uint256) {\n\t\treturn IERC20(loanTokenAddress).balanceOf(address(this));\n\t}\n\n\t/* Internal View functions */\n\n\t/**\n\t * @notice Compute the token price.\n\t * @param assetSupply The amount of loan tokens supplied.\n\t * @return The token price.\n\t * */\n\tfunction _tokenPrice(uint256 assetSupply) internal view returns (uint256) {\n\t\tuint256 totalTokenSupply = totalSupply_;\n\n\t\treturn totalTokenSupply != 0 ? assetSupply.mul(10**18).div(totalTokenSupply) : initialPrice;\n\t}\n\n\t/**\n\t * @notice Compute the average borrow interest rate.\n\t * @param assetBorrow The amount of loan tokens on debt.\n\t * @return The average borrow interest rate.\n\t * */\n\tfunction _avgBorrowInterestRate(uint256 assetBorrow) internal view returns (uint256) {\n\t\tif (assetBorrow != 0) {\n\t\t\t(uint256 interestOwedPerDay, ) = _getAllInterest();\n\t\t\treturn interestOwedPerDay.mul(10**20).mul(365).div(assetBorrow);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Compute the next supply interest adjustment.\n\t * @param assetBorrow The amount of loan tokens on debt.\n\t * @param assetSupply The amount of loan tokens supplied.\n\t * @return The next supply interest adjustment.\n\t * */\n\tfunction _supplyInterestRate(uint256 assetBorrow, uint256 assetSupply) public view returns (uint256) {\n\t\tif (assetBorrow != 0 && assetSupply >= assetBorrow) {\n\t\t\treturn\n\t\t\t\t_avgBorrowInterestRate(assetBorrow)\n\t\t\t\t\t.mul(_utilizationRate(assetBorrow, assetSupply))\n\t\t\t\t\t.mul(SafeMath.sub(10**20, ProtocolLike(sovrynContractAddress).lendingFeePercent()))\n\t\t\t\t\t.div(10**40);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Compute the next borrow interest adjustment.\n\t * @param borrowAmount The amount of tokens to borrow.\n\t * @return The next borrow interest adjustment.\n\t * */\n\tfunction _nextBorrowInterestRate(uint256 borrowAmount) internal view returns (uint256) {\n\t\tuint256 interestUnPaid;\n\t\tif (borrowAmount != 0) {\n\t\t\tif (lastSettleTime_ != uint88(block.timestamp)) {\n\t\t\t\t(, interestUnPaid) = _getAllInterest();\n\t\t\t}\n\n\t\t\tuint256 balance = _underlyingBalance().add(interestUnPaid);\n\t\t\tif (borrowAmount > balance) {\n\t\t\t\tborrowAmount = balance;\n\t\t\t}\n\t\t}\n\n\t\treturn _nextBorrowInterestRate2(borrowAmount, _totalAssetSupply(interestUnPaid));\n\t}\n\n\t/**\n\t * @notice Compute the next borrow interest adjustment under target-kink\n\t * level analysis.\n\t *\n\t * The \"kink\" in the cDAI interest rate model reflects the utilization rate\n\t * at which the slope of the interest rate goes from \"gradual\" to \"steep\".\n\t * That is, below this utilization rate, the slope of the interest rate\n\t * curve is gradual. Above this utilization rate, it is steep.\n\t *\n\t * Because of this dynamic between the interest rate curves before and\n\t * after the \"kink\", the \"kink\" can be thought of as the target utilization\n\t * rate. Above that rate, it quickly becomes expensive to borrow (and\n\t * commensurately lucrative for suppliers).\n\t *\n\t * @param newBorrowAmount The new amount of tokens to borrow.\n\t * @param assetSupply The amount of loan tokens supplied.\n\t * @return The next borrow interest adjustment.\n\t * */\n\tfunction _nextBorrowInterestRate2(uint256 newBorrowAmount, uint256 assetSupply) internal view returns (uint256 nextRate) {\n\t\tuint256 utilRate = _utilizationRate(totalAssetBorrow().add(newBorrowAmount), assetSupply);\n\n\t\tuint256 thisMinRate;\n\t\tuint256 thisMaxRate;\n\t\tuint256 thisBaseRate = baseRate;\n\t\tuint256 thisRateMultiplier = rateMultiplier;\n\t\tuint256 thisTargetLevel = targetLevel;\n\t\tuint256 thisKinkLevel = kinkLevel;\n\t\tuint256 thisMaxScaleRate = maxScaleRate;\n\n\t\tif (utilRate < thisTargetLevel) {\n\t\t\t// target targetLevel utilization when utilization is under targetLevel\n\t\t\tutilRate = thisTargetLevel;\n\t\t}\n\n\t\tif (utilRate > thisKinkLevel) {\n\t\t\t/// @dev Scale rate proportionally up to 100%\n\t\t\tuint256 thisMaxRange = WEI_PERCENT_PRECISION - thisKinkLevel; /// Will not overflow.\n\n\t\t\tutilRate -= thisKinkLevel;\n\t\t\tif (utilRate > thisMaxRange) utilRate = thisMaxRange;\n\n\t\t\tthisMaxRate = thisRateMultiplier.add(thisBaseRate).mul(thisKinkLevel).div(WEI_PERCENT_PRECISION);\n\n\t\t\tnextRate = utilRate.mul(SafeMath.sub(thisMaxScaleRate, thisMaxRate)).div(thisMaxRange).add(thisMaxRate);\n\t\t} else {\n\t\t\tnextRate = utilRate.mul(thisRateMultiplier).div(WEI_PERCENT_PRECISION).add(thisBaseRate);\n\n\t\t\tthisMinRate = thisBaseRate;\n\t\t\tthisMaxRate = thisRateMultiplier.add(thisBaseRate);\n\n\t\t\tif (nextRate < thisMinRate) nextRate = thisMinRate;\n\t\t\telse if (nextRate > thisMaxRate) nextRate = thisMaxRate;\n\t\t}\n\t}\n\n\t/**\n\t * @notice Get two kind of interests: owed per day and yet to be paid.\n\t * @return interestOwedPerDay The interest per day.\n\t * @return interestUnPaid The interest not yet paid.\n\t * */\n\tfunction _getAllInterest() internal view returns (uint256 interestOwedPerDay, uint256 interestUnPaid) {\n\t\t/// interestPaid, interestPaidDate, interestOwedPerDay, interestUnPaid, interestFeePercent, principalTotal\n\t\tuint256 interestFeePercent;\n\t\t(, , interestOwedPerDay, interestUnPaid, interestFeePercent, ) = ProtocolLike(sovrynContractAddress).getLenderInterestData(\n\t\t\taddress(this),\n\t\t\tloanTokenAddress\n\t\t);\n\n\t\tinterestUnPaid = interestUnPaid.mul(SafeMath.sub(10**20, interestFeePercent)).div(10**20);\n\t}\n\n\t/**\n\t * @notice Compute the loan size and interest rate.\n\t * @param leverageAmount The leverage with 18 decimals.\n\t * @param depositAmount The amount the user deposited in underlying loan tokens.\n\t * @return borrowAmount The amount of tokens to borrow.\n\t * @return interestRate The interest rate to pay on the position.\n\t * */\n\tfunction _getMarginBorrowAmountAndRate(uint256 leverageAmount, uint256 depositAmount)\n\t\tinternal\n\t\tview\n\t\treturns (uint256 borrowAmount, uint256 interestRate)\n\t{\n\t\tuint256 loanSizeBeforeInterest = depositAmount.mul(leverageAmount).div(10**18);\n\t\t/**\n\t\t * @dev Mathematical imperfection. we calculate the interest rate based on\n\t\t * the loanSizeBeforeInterest, but the actual borrowed amount will be bigger.\n\t\t * */\n\t\tinterestRate = _nextBorrowInterestRate2(loanSizeBeforeInterest, _totalAssetSupply(0));\n\t\t/// @dev Assumes that loan, collateral, and interest token are the same.\n\t\tborrowAmount = _adjustLoanSize(interestRate, 28 days, loanSizeBeforeInterest);\n\t}\n\n\t/**\n\t * @notice Compute the total amount of loan tokens on supply.\n\t * @param interestUnPaid The interest not yet paid.\n\t * @return assetSupply The total amount of loan tokens on supply.\n\t * */\n\tfunction _totalAssetSupply(uint256 interestUnPaid) internal view returns (uint256 assetSupply) {\n\t\tif (totalSupply_ != 0) {\n\t\t\tuint256 assetsBalance = _flTotalAssetSupply; /// Temporary locked totalAssetSupply during a flash loan transaction.\n\t\t\tif (assetsBalance == 0) {\n\t\t\t\tassetsBalance = _underlyingBalance().add(totalAssetBorrow());\n\t\t\t}\n\n\t\t\treturn assetsBalance.add(interestUnPaid);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Check whether a function is paused.\n\t *\n\t * @dev Used to read externally from the smart contract to see if a\n\t *   function is paused.\n\t *\n\t * @param funcId The function ID, the selector.\n\t *\n\t * @return isPaused Whether the function is paused: true or false.\n\t * */\n\tfunction checkPause(string memory funcId) public view returns (bool isPaused) {\n\t\tbytes4 sig = bytes4(keccak256(abi.encodePacked(funcId)));\n\t\tbytes32 slot = keccak256(abi.encodePacked(sig, uint256(0xd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2)));\n\t\tassembly {\n\t\t\tisPaused := sload(slot)\n\t\t}\n\t\treturn isPaused;\n\t}\n\n\t/**\n\t * @notice Make sure call is not paused.\n\t * @dev Used for internal verification if the called function is paused.\n\t *   It throws an exception in case it's not.\n\t * */\n\tfunction _checkPause() internal view {\n\t\t/// keccak256(\"iToken_FunctionPause\")\n\t\tbytes32 slot = keccak256(abi.encodePacked(msg.sig, uint256(0xd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2)));\n\t\tbool isPaused;\n\t\tassembly {\n\t\t\tisPaused := sload(slot)\n\t\t}\n\t\trequire(!isPaused, \"unauthorized\");\n\t}\n\n\t/**\n\t * @notice Adjusts the loan size to make sure the expected exposure remains after prepaying the interest.\n\t * @dev loanSizeWithInterest = loanSizeBeforeInterest * 100 / (100 - interestForDuration)\n\t * @param interestRate The interest rate to pay on the position.\n\t * @param maxDuration The maximum duration of the position (until rollover).\n\t * @param loanSizeBeforeInterest The loan size before interest is added.\n\t * */\n\tfunction _adjustLoanSize(\n\t\tuint256 interestRate,\n\t\tuint256 maxDuration,\n\t\tuint256 loanSizeBeforeInterest\n\t) internal pure returns (uint256 loanSizeWithInterest) {\n\t\tuint256 interestForDuration = interestRate.mul(maxDuration).div(365 days);\n\t\tuint256 divisor = uint256(10**20).sub(interestForDuration);\n\t\tloanSizeWithInterest = loanSizeBeforeInterest.mul(10**20).div(divisor);\n\t}\n\n\t/**\n\t * @notice Calculate the utilization rate.\n\t * @dev Utilization rate = assetBorrow / assetSupply\n\t * @param assetBorrow The amount of loan tokens on debt.\n\t * @param assetSupply The amount of loan tokens supplied.\n\t * @return The utilization rate.\n\t * */\n\tfunction _utilizationRate(uint256 assetBorrow, uint256 assetSupply) internal pure returns (uint256) {\n\t\tif (assetBorrow != 0 && assetSupply != 0) {\n\t\t\t/// U = total_borrow / total_supply\n\t\t\treturn assetBorrow.mul(10**20).div(assetSupply);\n\t\t}\n\t}\n\n\t/**\n\t * @notice sets the liquidity mining contract address\n\t * @param LMAddress the address of the liquidity mining contract\n\t */\n\tfunction setLiquidityMiningAddress(address LMAddress) external onlyOwner {\n\t\tliquidityMiningAddress = LMAddress;\n\t}\n\n\tfunction _mintWithLM(address receiver, uint256 depositAmount) internal returns (uint256 minted) {\n\t\t//mint the tokens for the receiver\n\t\tminted = _mintToken(receiver, depositAmount);\n\n\t\t//transfer the tokens from the receiver to the LM address\n\t\t_internalTransferFrom(receiver, liquidityMiningAddress, minted, minted);\n\n\t\t//inform the LM mining contract\n\t\tILiquidityMining(liquidityMiningAddress).onTokensDeposited(receiver, minted);\n\t}\n\n\tfunction _burnFromLM(uint256 burnAmount) internal returns (uint256) {\n\t\tuint256 balanceOnLM = ILiquidityMining(liquidityMiningAddress).getUserPoolTokenBalance(address(this), msg.sender);\n\t\trequire(balanceOnLM.add(balanceOf(msg.sender)) >= burnAmount, \"not enough balance\");\n\n\t\tif (balanceOnLM > 0) {\n\t\t\t//withdraw pool tokens and LM rewards to the passed address\n\t\t\tif (balanceOnLM < burnAmount) {\n\t\t\t\tILiquidityMining(liquidityMiningAddress).withdraw(address(this), balanceOnLM, msg.sender);\n\t\t\t} else {\n\t\t\t\tILiquidityMining(liquidityMiningAddress).withdraw(address(this), burnAmount, msg.sender);\n\t\t\t}\n\t\t}\n\t\t//burn the tokens of the msg.sender\n\t\treturn _burnToken(burnAmount);\n\t}\n}\n"
      },
      "contracts/connectors/loantoken/interfaces/ProtocolLike.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\ninterface ProtocolLike {\n\tfunction borrowOrTradeFromPool(\n\t\tbytes32 loanParamsId,\n\t\tbytes32 loanId, // if 0, start a new loan\n\t\tbool isTorqueLoan,\n\t\tuint256 initialMargin,\n\t\taddress[4] calldata sentAddresses,\n\t\t// lender: must match loan if loanId provided\n\t\t// borrower: must match loan if loanId provided\n\t\t// receiver: receiver of funds (address(0) assumes borrower address)\n\t\t// manager: delegated manager of loan unless address(0)\n\t\tuint256[5] calldata sentValues,\n\t\t// newRate: new loan interest rate\n\t\t// newPrincipal: new loan size (borrowAmount + any borrowed interest)\n\t\t// torqueInterest: new amount of interest to escrow for Torque loan (determines initial loan length)\n\t\t// loanTokenReceived: total loanToken deposit (amount not sent to borrower in the case of Torque loans)\n\t\t// collateralTokenReceived: total collateralToken deposit\n\t\tbytes calldata loanDataBytes\n\t) external payable returns (uint256 newPrincipal, uint256 newCollateral);\n\n\tfunction getTotalPrincipal(address lender, address loanToken) external view returns (uint256);\n\n\tfunction withdrawAccruedInterest(address loanToken) external;\n\n\tfunction getLenderInterestData(address lender, address loanToken)\n\t\texternal\n\t\tview\n\t\treturns (\n\t\t\tuint256 interestPaid,\n\t\t\tuint256 interestPaidDate,\n\t\t\tuint256 interestOwedPerDay,\n\t\t\tuint256 interestUnPaid,\n\t\t\tuint256 interestFeePercent,\n\t\t\tuint256 principalTotal\n\t\t);\n\n\tfunction priceFeeds() external view returns (address);\n\n\tfunction getEstimatedMarginExposure(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 loanTokenSent,\n\t\tuint256 collateralTokenSent,\n\t\tuint256 interestRate,\n\t\tuint256 newPrincipal\n\t) external view returns (uint256);\n\n\tfunction getRequiredCollateral(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 newPrincipal,\n\t\tuint256 marginAmount,\n\t\tbool isTorqueLoan\n\t) external view returns (uint256 collateralAmountRequired);\n\n\tfunction getBorrowAmount(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 collateralTokenAmount,\n\t\tuint256 marginAmount,\n\t\tbool isTorqueLoan\n\t) external view returns (uint256 borrowAmount);\n\n\tfunction isLoanPool(address loanPool) external view returns (bool);\n\n\tfunction lendingFeePercent() external view returns (uint256);\n\n\tfunction getSwapExpectedReturn(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\tuint256 sourceTokenAmount\n\t) external view returns (uint256);\n}\n"
      },
      "contracts/connectors/loantoken/interfaces/FeedsLike.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\ninterface FeedsLike {\n\tfunction queryRate(address sourceTokenAddress, address destTokenAddress) external view returns (uint256 rate, uint256 precision);\n}\n"
      },
      "contracts/farm/ILiquidityMining.sol": {
        "content": "pragma solidity 0.5.17;\n\ninterface ILiquidityMining {\n\tfunction withdraw(\n\t\taddress _poolToken,\n\t\tuint256 _amount,\n\t\taddress _user\n\t) external;\n\n\tfunction onTokensDeposited(address _user, uint256 _amount) external;\n\n\tfunction getUserPoolTokenBalance(address _poolToken, address _user) external view returns (uint256);\n}\n"
      },
      "contracts/connectors/loantoken/LoanTokenLogicWrbtc.sol": {
        "content": "/**\n * Copyright 2017-2020, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"./LoanTokenLogicStandard.sol\";\n\ncontract LoanTokenLogicWrbtc is LoanTokenLogicStandard {\n\tfunction mintWithBTC(address receiver, bool useLM) external payable nonReentrant returns (uint256 mintAmount) {\n\t\tif (useLM) return _mintWithLM(receiver, msg.value);\n\t\telse return _mintToken(receiver, msg.value);\n\t}\n\n\tfunction burnToBTC(\n\t\taddress receiver,\n\t\tuint256 burnAmount,\n\t\tbool useLM\n\t) external nonReentrant returns (uint256 loanAmountPaid) {\n\t\tif (useLM) loanAmountPaid = _burnFromLM(burnAmount);\n\t\telse loanAmountPaid = _burnToken(burnAmount);\n\n\t\tif (loanAmountPaid != 0) {\n\t\t\tIWrbtcERC20(wrbtcTokenAddress).withdraw(loanAmountPaid);\n\t\t\tAddress.sendValue(receiver, loanAmountPaid);\n\t\t}\n\t}\n\n\t/* Internal functions */\n\n\t/**\n\t * @notice Handle transfers prior to adding newPrincipal to loanTokenSent.\n\t *\n\t * @param collateralTokenAddress The address of the collateral token.\n\t * @param sentAddresses The array of addresses:\n\t *   sentAddresses[0]: lender\n\t *   sentAddresses[1]: borrower\n\t *   sentAddresses[2]: receiver\n\t *   sentAddresses[3]: manager\n\t *\n\t * @param sentAmounts The array of amounts:\n\t *   sentAmounts[0]: interestRate\n\t *   sentAmounts[1]: newPrincipal\n\t *   sentAmounts[2]: interestInitialAmount\n\t *   sentAmounts[3]: loanTokenSent\n\t *   sentAmounts[4]: collateralTokenSent\n\t *\n\t * @param withdrawalAmount The amount to withdraw.\n\t *\n\t * @return msgValue The amount of value sent.\n\t * */\n\tfunction _verifyTransfers(\n\t\taddress collateralTokenAddress,\n\t\taddress[4] memory sentAddresses,\n\t\tuint256[5] memory sentAmounts,\n\t\tuint256 withdrawalAmount\n\t) internal returns (uint256 msgValue) {\n\t\taddress _wrbtcToken = wrbtcTokenAddress;\n\t\taddress _loanTokenAddress = _wrbtcToken;\n\t\taddress receiver = sentAddresses[2];\n\t\tuint256 newPrincipal = sentAmounts[1];\n\t\tuint256 loanTokenSent = sentAmounts[3];\n\t\tuint256 collateralTokenSent = sentAmounts[4];\n\n\t\trequire(_loanTokenAddress != collateralTokenAddress, \"26\");\n\n\t\tmsgValue = msg.value;\n\n\t\tif (withdrawalAmount != 0) {\n\t\t\t/// withdrawOnOpen == true\n\t\t\tIWrbtcERC20(_wrbtcToken).withdraw(withdrawalAmount);\n\t\t\tAddress.sendValue(receiver, withdrawalAmount);\n\t\t\tif (newPrincipal > withdrawalAmount) {\n\t\t\t\t_safeTransfer(_loanTokenAddress, sovrynContractAddress, newPrincipal - withdrawalAmount, \"\");\n\t\t\t}\n\t\t} else {\n\t\t\t_safeTransfer(_loanTokenAddress, sovrynContractAddress, newPrincipal, \"27\");\n\t\t}\n\n\t\tif (collateralTokenSent != 0) {\n\t\t\t_safeTransferFrom(collateralTokenAddress, msg.sender, sovrynContractAddress, collateralTokenSent, \"28\");\n\t\t}\n\n\t\tif (loanTokenSent != 0) {\n\t\t\tif (msgValue != 0 && msgValue >= loanTokenSent) {\n\t\t\t\tIWrbtc(_wrbtcToken).deposit.value(loanTokenSent)();\n\t\t\t\t_safeTransfer(_loanTokenAddress, sovrynContractAddress, loanTokenSent, \"29\");\n\t\t\t\tmsgValue -= loanTokenSent;\n\t\t\t} else {\n\t\t\t\t_safeTransferFrom(_loanTokenAddress, msg.sender, sovrynContractAddress, loanTokenSent, \"29\");\n\t\t\t}\n\t\t}\n\t}\n}\n"
      },
      "contracts/farm/LiquidityMining.sol": {
        "content": "pragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../openzeppelin/ERC20.sol\";\nimport \"../openzeppelin/SafeERC20.sol\";\nimport \"../openzeppelin/SafeMath.sol\";\nimport \"./LiquidityMiningStorage.sol\";\nimport \"./ILiquidityMining.sol\";\n\ncontract LiquidityMining is ILiquidityMining, LiquidityMiningStorage {\n\tusing SafeMath for uint256;\n\tusing SafeERC20 for IERC20;\n\n\t/* Constants */\n\n\tuint256 public constant PRECISION = 1e12;\n\t// Bonus multiplier for early liquidity providers.\n\t// During bonus period each passed block will be calculated like N passed blocks, where N = BONUS_MULTIPLIER\n\tuint256 public constant BONUS_BLOCK_MULTIPLIER = 10;\n\n\tuint256 public constant SECONDS_PER_BLOCK = 30;\n\n\t/* Events */\n\n\tevent SOVTransferred(address indexed receiver, uint256 amount);\n\tevent PoolTokenAdded(address indexed user, address indexed poolToken, uint256 allocationPoint);\n\tevent PoolTokenUpdated(address indexed user, address indexed poolToken, uint256 newAllocationPoint, uint256 oldAllocationPoint);\n\tevent Deposit(address indexed user, address indexed poolToken, uint256 amount);\n\tevent RewardClaimed(address indexed user, address indexed poolToken, uint256 amount);\n\tevent Withdraw(address indexed user, address indexed poolToken, uint256 amount);\n\tevent EmergencyWithdraw(address indexed user, address indexed poolToken, uint256 amount, uint256 accumulatedReward);\n\n\t/* Functions */\n\n\t/**\n\t * @notice Initialize mining.\n\t *\n\t * @param _SOV The SOV token.\n\t * @param _rewardTokensPerBlock The number of reward tokens per block.\n\t * @param _startDelayBlocks The number of blocks should be passed to start\n\t *   mining.\n\t * @param _numberOfBonusBlocks The number of blocks when each block will\n\t *   be calculated as N blocks (BONUS_BLOCK_MULTIPLIER).\n\t * @param _lockedSOV The contract instance address of the lockedSOV vault.\n\t *   SOV rewards are not paid directly to liquidity providers. Instead they\n\t *   are deposited into a lockedSOV vault contract.\n\t * @param _unlockedImmediatelyPercent The % which determines how much will be unlocked immediately.\n\t */\n\tfunction initialize(\n\t\tIERC20 _SOV,\n\t\tuint256 _rewardTokensPerBlock,\n\t\tuint256 _startDelayBlocks,\n\t\tuint256 _numberOfBonusBlocks,\n\t\taddress _wrapper,\n\t\tILockedSOV _lockedSOV,\n\t\tuint256 _unlockedImmediatelyPercent\n\t) external onlyAuthorized {\n\t\t/// @dev Non-idempotent function. Must be called just once.\n\t\trequire(address(SOV) == address(0), \"Already initialized\");\n\t\trequire(address(_SOV) != address(0), \"Invalid token address\");\n\t\trequire(_startDelayBlocks > 0, \"Invalid start block\");\n\t\trequire(_unlockedImmediatelyPercent < 10000, \"Unlocked immediately percent has to be less than 10000.\");\n\n\t\tSOV = _SOV;\n\t\trewardTokensPerBlock = _rewardTokensPerBlock;\n\t\tstartBlock = block.number + _startDelayBlocks;\n\t\tbonusEndBlock = startBlock + _numberOfBonusBlocks;\n\t\twrapper = _wrapper;\n\t\tlockedSOV = _lockedSOV;\n\t\tunlockedImmediatelyPercent = _unlockedImmediatelyPercent;\n\t}\n\n\t/**\n\t * @notice Sets lockedSOV contract.\n\t * @param _lockedSOV The contract instance address of the lockedSOV vault.\n\t */\n\tfunction setLockedSOV(ILockedSOV _lockedSOV) external onlyAuthorized {\n\t\trequire(address(_lockedSOV) != address(0), \"Invalid lockedSOV Address.\");\n\t\tlockedSOV = _lockedSOV;\n\t}\n\n\t/**\n\t * @notice Sets unlocked immediately percent.\n\t * @param _unlockedImmediatelyPercent The % which determines how much will be unlocked immediately.\n\t * @dev @dev 10000 is 100%\n\t */\n\tfunction setUnlockedImmediatelyPercent(uint256 _unlockedImmediatelyPercent) external onlyAuthorized {\n\t\trequire(_unlockedImmediatelyPercent < 10000, \"Unlocked immediately percent has to be less than 10000.\");\n\t\tunlockedImmediatelyPercent = _unlockedImmediatelyPercent;\n\t}\n\n\t/**\n\t * @notice sets wrapper proxy contract\n\t * @dev can be set to zero address to remove wrapper\n\t */\n\tfunction setWrapper(address _wrapper) external onlyAuthorized {\n\t\twrapper = _wrapper;\n\t}\n\n\t/**\n\t * @notice stops mining by setting end block\n\t */\n\tfunction stopMining() external onlyAuthorized {\n\t\trequire(endBlock == 0, \"Already stopped\");\n\n\t\tendBlock = block.number;\n\t}\n\n\t/**\n\t * @notice Transfers SOV tokens to given address.\n\t *   Owner use this function to withdraw SOV from LM contract\n\t *   into another account.\n\t * @param _receiver The address of the SOV receiver.\n\t * @param _amount The amount to be transferred.\n\t * */\n\tfunction transferSOV(address _receiver, uint256 _amount) external onlyAuthorized {\n\t\trequire(_receiver != address(0), \"Receiver address invalid\");\n\t\trequire(_amount != 0, \"Amount invalid\");\n\n\t\t/// @dev Do not transfer more SOV than available.\n\t\tuint256 SOVBal = SOV.balanceOf(address(this));\n\t\tif (_amount > SOVBal) {\n\t\t\t_amount = SOVBal;\n\t\t}\n\n\t\t/// @dev The actual transfer.\n\t\trequire(SOV.transfer(_receiver, _amount), \"Transfer failed\");\n\n\t\t/// @dev Event log.\n\t\temit SOVTransferred(_receiver, _amount);\n\t}\n\n\t/**\n\t * @notice Get the missed SOV balance of LM contract.\n\t *\n\t * @return The amount of SOV tokens according to totalUsersBalance\n\t *   in excess of actual SOV balance of the LM contract.\n\t * */\n\tfunction getMissedBalance() external view returns (uint256) {\n\t\tuint256 balance = SOV.balanceOf(address(this));\n\t\treturn balance >= totalUsersBalance ? 0 : totalUsersBalance.sub(balance);\n\t}\n\n\t/**\n\t * @notice adds a new lp to the pool. Can only be called by the owner or an admin\n\t * @param _poolToken the address of pool token\n\t * @param _allocationPoint the allocation point (weight) for the given pool\n\t * @param _withUpdate the flag whether we need to update all pools\n\t */\n\tfunction add(\n\t\taddress _poolToken,\n\t\tuint96 _allocationPoint,\n\t\tbool _withUpdate\n\t) external onlyAuthorized {\n\t\trequire(_allocationPoint > 0, \"Invalid allocation point\");\n\t\trequire(_poolToken != address(0), \"Invalid token address\");\n\t\trequire(poolIdList[_poolToken] == 0, \"Token already added\");\n\n\t\tif (_withUpdate) {\n\t\t\tupdateAllPools();\n\t\t}\n\n\t\tuint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock;\n\t\ttotalAllocationPoint = totalAllocationPoint.add(_allocationPoint);\n\n\t\tpoolInfoList.push(\n\t\t\tPoolInfo({\n\t\t\t\tpoolToken: IERC20(_poolToken),\n\t\t\t\tallocationPoint: _allocationPoint,\n\t\t\t\tlastRewardBlock: lastRewardBlock,\n\t\t\t\taccumulatedRewardPerShare: 0\n\t\t\t})\n\t\t);\n\t\t//indexing starts from 1 in order to check whether token was already added\n\t\tpoolIdList[_poolToken] = poolInfoList.length;\n\n\t\temit PoolTokenAdded(msg.sender, _poolToken, _allocationPoint);\n\t}\n\n\t/**\n\t * @notice updates the given pool's reward tokens allocation point\n\t * @param _poolToken the address of pool token\n\t * @param _allocationPoint the allocation point (weight) for the given pool\n\t * @param _updateAllFlag the flag whether we need to update all pools\n\t */\n\tfunction update(\n\t\taddress _poolToken,\n\t\tuint96 _allocationPoint,\n\t\tbool _updateAllFlag\n\t) external onlyAuthorized {\n\t\tif (_updateAllFlag) {\n\t\t\tupdateAllPools();\n\t\t} else {\n\t\t\tupdatePool(_poolToken);\n\t\t}\n\t\t_updateToken(_poolToken, _allocationPoint);\n\t}\n\n\tfunction _updateToken(address _poolToken, uint96 _allocationPoint) internal {\n\t\tuint256 poolId = _getPoolId(_poolToken);\n\n\t\tuint256 previousAllocationPoint = poolInfoList[poolId].allocationPoint;\n\t\ttotalAllocationPoint = totalAllocationPoint.sub(previousAllocationPoint).add(_allocationPoint);\n\t\tpoolInfoList[poolId].allocationPoint = _allocationPoint;\n\n\t\temit PoolTokenUpdated(msg.sender, _poolToken, _allocationPoint, previousAllocationPoint);\n\t}\n\n\t/**\n\t * @notice updates the given pools' reward tokens allocation points\n\t * @param _poolTokens array of addresses of pool tokens\n\t * @param _allocationPoints array of allocation points (weight) for the given pools\n\t * @param _updateAllFlag the flag whether we need to update all pools\n\t */\n\tfunction updateTokens(\n\t\taddress[] calldata _poolTokens,\n\t\tuint96[] calldata _allocationPoints,\n\t\tbool _updateAllFlag\n\t) external onlyAuthorized {\n\t\trequire(_poolTokens.length == _allocationPoints.length, \"Arrays mismatch\");\n\n\t\tif (_updateAllFlag) {\n\t\t\tupdateAllPools();\n\t\t}\n\t\tuint256 length = _poolTokens.length;\n\t\tfor (uint256 i = 0; i < length; i++) {\n\t\t\tif (!_updateAllFlag) {\n\t\t\t\tupdatePool(_poolTokens[i]);\n\t\t\t}\n\t\t\t_updateToken(_poolTokens[i], _allocationPoints[i]);\n\t\t}\n\t}\n\n\t/**\n\t * @notice returns reward multiplier over the given _from to _to block\n\t * @param _from the first block for a calculation\n\t * @param _to the last block for a calculation\n\t */\n\tfunction _getPassedBlocksWithBonusMultiplier(uint256 _from, uint256 _to) internal view returns (uint256) {\n\t\tif (_from < startBlock) {\n\t\t\t_from = startBlock;\n\t\t}\n\t\tif (endBlock > 0 && _to > endBlock) {\n\t\t\t_to = endBlock;\n\t\t}\n\t\tif (_to <= bonusEndBlock) {\n\t\t\treturn _to.sub(_from).mul(BONUS_BLOCK_MULTIPLIER);\n\t\t} else if (_from >= bonusEndBlock) {\n\t\t\treturn _to.sub(_from);\n\t\t} else {\n\t\t\treturn bonusEndBlock.sub(_from).mul(BONUS_BLOCK_MULTIPLIER).add(_to.sub(bonusEndBlock));\n\t\t}\n\t}\n\n\tfunction _getUserAccumulatedReward(uint256 _poolId, address _user) internal view returns (uint256) {\n\t\tPoolInfo storage pool = poolInfoList[_poolId];\n\t\tUserInfo storage user = userInfoMap[_poolId][_user];\n\n\t\tuint256 accumulatedRewardPerShare = pool.accumulatedRewardPerShare;\n\t\tuint256 poolTokenBalance = pool.poolToken.balanceOf(address(this));\n\t\tif (block.number > pool.lastRewardBlock && poolTokenBalance != 0) {\n\t\t\t(, uint256 accumulatedRewardPerShare_) = _getPoolAccumulatedReward(pool);\n\t\t\taccumulatedRewardPerShare = accumulatedRewardPerShare.add(accumulatedRewardPerShare_);\n\t\t}\n\t\treturn user.amount.mul(accumulatedRewardPerShare).div(PRECISION).sub(user.rewardDebt);\n\t}\n\n\t/**\n\t * @notice returns accumulated reward\n\t * @param _poolToken the address of pool token\n\t * @param _user the user address\n\t */\n\tfunction getUserAccumulatedReward(address _poolToken, address _user) external view returns (uint256) {\n\t\tuint256 poolId = _getPoolId(_poolToken);\n\t\treturn _getUserAccumulatedReward(poolId, _user);\n\t}\n\n\t/**\n\t * @notice returns estimated reward\n\t * @param _poolToken the address of pool token\n\t * @param _amount the amount of tokens to be deposited\n\t * @param _duration the duration of liquidity providing in seconds\n\t */\n\tfunction getEstimatedReward(\n\t\taddress _poolToken,\n\t\tuint256 _amount,\n\t\tuint256 _duration\n\t) external view returns (uint256) {\n\t\tuint256 poolId = _getPoolId(_poolToken);\n\t\tPoolInfo storage pool = poolInfoList[poolId];\n\t\tuint256 start = block.number;\n\t\tuint256 end = start.add(_duration.div(SECONDS_PER_BLOCK));\n\t\t(, uint256 accumulatedRewardPerShare) = _getPoolAccumulatedReward(pool, _amount, start, end);\n\t\treturn _amount.mul(accumulatedRewardPerShare).div(PRECISION);\n\t}\n\n\t/**\n\t * @notice Updates reward variables for all pools.\n\t * @dev Be careful of gas spending!\n\t */\n\tfunction updateAllPools() public {\n\t\tuint256 length = poolInfoList.length;\n\t\tfor (uint256 i = 0; i < length; i++) {\n\t\t\t_updatePool(i);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Updates reward variables of the given pool to be up-to-date\n\t * @param _poolToken the address of pool token\n\t */\n\tfunction updatePool(address _poolToken) public {\n\t\tuint256 poolId = _getPoolId(_poolToken);\n\t\t_updatePool(poolId);\n\t}\n\n\tfunction _updatePool(uint256 _poolId) internal {\n\t\tPoolInfo storage pool = poolInfoList[_poolId];\n\n\t\t//this pool has been updated recently\n\t\tif (block.number <= pool.lastRewardBlock) {\n\t\t\treturn;\n\t\t}\n\n\t\tuint256 poolTokenBalance = pool.poolToken.balanceOf(address(this));\n\t\tif (poolTokenBalance == 0) {\n\t\t\tpool.lastRewardBlock = block.number;\n\t\t\treturn;\n\t\t}\n\n\t\t(uint256 accumulatedReward_, uint256 accumulatedRewardPerShare_) = _getPoolAccumulatedReward(pool);\n\t\tpool.accumulatedRewardPerShare = pool.accumulatedRewardPerShare.add(accumulatedRewardPerShare_);\n\t\tpool.lastRewardBlock = block.number;\n\n\t\ttotalUsersBalance = totalUsersBalance.add(accumulatedReward_);\n\t}\n\n\tfunction _getPoolAccumulatedReward(PoolInfo storage _pool) internal view returns (uint256, uint256) {\n\t\treturn _getPoolAccumulatedReward(_pool, 0, _pool.lastRewardBlock, block.number);\n\t}\n\n\tfunction _getPoolAccumulatedReward(\n\t\tPoolInfo storage _pool,\n\t\tuint256 _additionalAmount,\n\t\tuint256 _startBlock,\n\t\tuint256 _endBlock\n\t) internal view returns (uint256, uint256) {\n\t\tuint256 passedBlocks = _getPassedBlocksWithBonusMultiplier(_startBlock, _endBlock);\n\t\tuint256 accumulatedReward = passedBlocks.mul(rewardTokensPerBlock).mul(_pool.allocationPoint).div(totalAllocationPoint);\n\n\t\tuint256 poolTokenBalance = _pool.poolToken.balanceOf(address(this));\n\t\tpoolTokenBalance = poolTokenBalance.add(_additionalAmount);\n\t\tuint256 accumulatedRewardPerShare = accumulatedReward.mul(PRECISION).div(poolTokenBalance);\n\t\treturn (accumulatedReward, accumulatedRewardPerShare);\n\t}\n\n\t/**\n\t * @notice deposits pool tokens\n\t * @param _poolToken the address of pool token\n\t * @param _amount the amount of pool tokens\n\t * @param _user the address of user, tokens will be deposited to it or to msg.sender\n\t */\n\tfunction deposit(\n\t\taddress _poolToken,\n\t\tuint256 _amount,\n\t\taddress _user\n\t) external {\n\t\t_deposit(_poolToken, _amount, _user, false);\n\t}\n\n\t/**\n\t * @notice if the lending pools directly mint/transfer tokens to this address, process it like a user deposit\n\t * @dev only callable by the pool which issues the tokens\n\t * @param _user the user address\n\t * @param _amount the minted amount\n\t */\n\tfunction onTokensDeposited(address _user, uint256 _amount) external {\n\t\t//the msg.sender is the pool token. if the msg.sender is not a valid pool token, _deposit will revert\n\t\t_deposit(msg.sender, _amount, _user, true);\n\t}\n\n\t/**\n\t * @notice internal function for depositing pool tokens\n\t * @param _poolToken the address of pool token\n\t * @param _amount the amount of pool tokens\n\t * @param _user the address of user, tokens will be deposited to it\n\t * @param alreadyTransferred true if the pool tokens have already been transferred\n\t */\n\tfunction _deposit(\n\t\taddress _poolToken,\n\t\tuint256 _amount,\n\t\taddress _user,\n\t\tbool alreadyTransferred\n\t) internal {\n\t\trequire(poolIdList[_poolToken] != 0, \"Pool token not found\");\n\t\taddress userAddress = _user != address(0) ? _user : msg.sender;\n\n\t\tuint256 poolId = _getPoolId(_poolToken);\n\t\tPoolInfo storage pool = poolInfoList[poolId];\n\t\tUserInfo storage user = userInfoMap[poolId][userAddress];\n\n\t\t_updatePool(poolId);\n\t\t//sends reward directly to the user\n\t\t_updateReward(pool, user);\n\n\t\tif (_amount > 0) {\n\t\t\t//receives pool tokens from msg.sender, it can be user or WrapperProxy contract\n\t\t\tif (!alreadyTransferred) pool.poolToken.safeTransferFrom(address(msg.sender), address(this), _amount);\n\t\t\tuser.amount = user.amount.add(_amount);\n\t\t}\n\t\t_updateRewardDebt(pool, user);\n\t\temit Deposit(userAddress, _poolToken, _amount);\n\t}\n\n\t/**\n\t * @notice transfers reward tokens\n\t * @param _poolToken the address of pool token\n\t * @param _user the address of user to claim reward from (can be passed only by wrapper contract)\n\t */\n\tfunction claimReward(address _poolToken, address _user) external {\n\t\taddress userAddress = _getUserAddress(_user);\n\n\t\tuint256 poolId = _getPoolId(_poolToken);\n\t\t_claimReward(poolId, userAddress, true);\n\t}\n\n\tfunction _claimReward(\n\t\tuint256 _poolId,\n\t\taddress _userAddress,\n\t\tbool _isStakingTokens\n\t) internal {\n\t\tPoolInfo storage pool = poolInfoList[_poolId];\n\t\tUserInfo storage user = userInfoMap[_poolId][_userAddress];\n\n\t\t_updatePool(_poolId);\n\t\t_updateReward(pool, user);\n\t\t_transferReward(address(pool.poolToken), user, _userAddress, _isStakingTokens, true);\n\t\t_updateRewardDebt(pool, user);\n\t}\n\n\t/**\n\t * @notice transfers reward tokens from all pools\n\t * @param _user the address of user to claim reward from (can be passed only by wrapper contract)\n\t */\n\tfunction claimRewardFromAllPools(address _user) external {\n\t\taddress userAddress = _getUserAddress(_user);\n\n\t\tuint256 length = poolInfoList.length;\n\t\tfor (uint256 i = 0; i < length; i++) {\n\t\t\tuint256 poolId = i;\n\t\t\t_claimReward(poolId, userAddress, false);\n\t\t}\n\t\tlockedSOV.withdrawAndStakeTokensFrom(userAddress);\n\t}\n\n\t/**\n\t * @notice withdraws pool tokens and transfers reward tokens\n\t * @param _poolToken the address of pool token\n\t * @param _amount the amount of pool tokens\n\t * @param _user the user address will be used to process a withdrawal (can be passed only by wrapper contract)\n\t */\n\tfunction withdraw(\n\t\taddress _poolToken,\n\t\tuint256 _amount,\n\t\taddress _user\n\t) external {\n\t\trequire(poolIdList[_poolToken] != 0, \"Pool token not found\");\n\t\taddress userAddress = _getUserAddress(_user);\n\n\t\tuint256 poolId = _getPoolId(_poolToken);\n\t\tPoolInfo storage pool = poolInfoList[poolId];\n\t\tUserInfo storage user = userInfoMap[poolId][userAddress];\n\t\trequire(user.amount >= _amount, \"Not enough balance\");\n\n\t\t_updatePool(poolId);\n\t\t_updateReward(pool, user);\n\t\t_transferReward(_poolToken, user, userAddress, false, false);\n\n\t\tuser.amount = user.amount.sub(_amount);\n\n\t\t//msg.sender is wrapper -> send to wrapper\n\t\tif (msg.sender == wrapper) {\n\t\t\tpool.poolToken.safeTransfer(address(msg.sender), _amount);\n\t\t}\n\t\t//msg.sender is user or pool token (lending pool) -> send to user\n\t\telse {\n\t\t\tpool.poolToken.safeTransfer(userAddress, _amount);\n\t\t}\n\n\t\t_updateRewardDebt(pool, user);\n\t\temit Withdraw(userAddress, _poolToken, _amount);\n\t}\n\n\tfunction _getUserAddress(address _user) internal view returns (address) {\n\t\taddress userAddress = msg.sender;\n\t\tif (_user != address(0)) {\n\t\t\t//only wrapper can pass _user parameter\n\t\t\trequire(msg.sender == wrapper || poolIdList[msg.sender] != 0, \"only wrapper or pools may withdraw for a user\");\n\t\t\tuserAddress = _user;\n\t\t}\n\t\treturn userAddress;\n\t}\n\n\tfunction _updateReward(PoolInfo storage pool, UserInfo storage user) internal {\n\t\t//update user accumulated reward\n\t\tif (user.amount > 0) {\n\t\t\t//add reward for the previous amount of deposited tokens\n\t\t\tuint256 accumulatedReward = user.amount.mul(pool.accumulatedRewardPerShare).div(PRECISION).sub(user.rewardDebt);\n\t\t\tuser.accumulatedReward = user.accumulatedReward.add(accumulatedReward);\n\t\t}\n\t}\n\n\tfunction _updateRewardDebt(PoolInfo storage pool, UserInfo storage user) internal {\n\t\t//reward accumulated before amount update (should be subtracted during next reward calculation)\n\t\tuser.rewardDebt = user.amount.mul(pool.accumulatedRewardPerShare).div(PRECISION);\n\t}\n\n\t/**\n\t * @notice Send reward in SOV to the lockedSOV vault.\n\t * @param _user The user info, to get its reward share.\n\t * @param _userAddress The address of the user, to send SOV in its behalf.\n\t * @param _isStakingTokens The flag whether we need to stake tokens\n\t * @param _isCheckingBalance The flag whether we need to throw error or don't process reward if SOV balance isn't enough\n\t */\n\tfunction _transferReward(\n\t\taddress _poolToken,\n\t\tUserInfo storage _user,\n\t\taddress _userAddress,\n\t\tbool _isStakingTokens,\n\t\tbool _isCheckingBalance\n\t) internal {\n\t\tuint256 userAccumulatedReward = _user.accumulatedReward;\n\n\t\t/// @dev Transfer if enough SOV balance on this LM contract.\n\t\tuint256 balance = SOV.balanceOf(address(this));\n\t\tif (balance >= userAccumulatedReward) {\n\t\t\ttotalUsersBalance = totalUsersBalance.sub(userAccumulatedReward);\n\t\t\t_user.accumulatedReward = 0;\n\n\t\t\t/// @dev Instead of transferring the reward to the LP (user),\n\t\t\t///   deposit it into lockedSOV vault contract, but first\n\t\t\t///   SOV deposit must be approved to move the SOV tokens\n\t\t\t///   from this LM contract into the lockedSOV vault.\n\t\t\trequire(SOV.approve(address(lockedSOV), userAccumulatedReward), \"Approve failed\");\n\t\t\tlockedSOV.deposit(_userAddress, userAccumulatedReward, unlockedImmediatelyPercent);\n\n\t\t\tif (_isStakingTokens) {\n\t\t\t\tlockedSOV.withdrawAndStakeTokensFrom(_userAddress);\n\t\t\t}\n\n\t\t\t/// @dev Event log.\n\t\t\temit RewardClaimed(_userAddress, _poolToken, userAccumulatedReward);\n\t\t} else {\n\t\t\trequire(!_isCheckingBalance, \"Claiming reward failed\");\n\t\t}\n\t}\n\n\t/**\n\t * @notice withdraws pool tokens without transferring reward tokens\n\t * @param _poolToken the address of pool token\n\t * @dev EMERGENCY ONLY\n\t */\n\tfunction emergencyWithdraw(address _poolToken) external {\n\t\tuint256 poolId = _getPoolId(_poolToken);\n\t\tPoolInfo storage pool = poolInfoList[poolId];\n\t\tUserInfo storage user = userInfoMap[poolId][msg.sender];\n\n\t\t_updatePool(poolId);\n\t\t_updateReward(pool, user);\n\n\t\ttotalUsersBalance = totalUsersBalance.sub(user.accumulatedReward);\n\t\tuint256 userAmount = user.amount;\n\t\tuint256 userAccumulatedReward = user.accumulatedReward;\n\t\tuser.amount = 0;\n\t\tuser.rewardDebt = 0;\n\t\tuser.accumulatedReward = 0;\n\t\tpool.poolToken.safeTransfer(address(msg.sender), userAmount);\n\n\t\t_updateRewardDebt(pool, user);\n\n\t\temit EmergencyWithdraw(msg.sender, _poolToken, userAmount, userAccumulatedReward);\n\t}\n\n\t/**\n\t * @notice returns pool id\n\t * @param _poolToken the address of pool token\n\t */\n\tfunction getPoolId(address _poolToken) external view returns (uint256) {\n\t\treturn _getPoolId(_poolToken);\n\t}\n\n\tfunction _getPoolId(address _poolToken) internal view returns (uint256) {\n\t\tuint256 poolId = poolIdList[_poolToken];\n\t\trequire(poolId > 0, \"Pool token not found\");\n\t\treturn poolId - 1;\n\t}\n\n\t/**\n\t * @notice returns count of pool tokens\n\t */\n\tfunction getPoolLength() external view returns (uint256) {\n\t\treturn poolInfoList.length;\n\t}\n\n\t/**\n\t * @notice returns list of pool token's info\n\t */\n\tfunction getPoolInfoList() external view returns (PoolInfo[] memory) {\n\t\treturn poolInfoList;\n\t}\n\n\t/**\n\t * @notice returns pool info for the given token\n\t * @param _poolToken the address of pool token\n\t */\n\tfunction getPoolInfo(address _poolToken) external view returns (PoolInfo memory) {\n\t\tuint256 poolId = _getPoolId(_poolToken);\n\t\treturn poolInfoList[poolId];\n\t}\n\n\t/**\n\t * @notice returns list of [amount, accumulatedReward] for the given user for each pool token\n\t * @param _user the address of the user\n\t */\n\tfunction getUserBalanceList(address _user) external view returns (uint256[2][] memory) {\n\t\tuint256 length = poolInfoList.length;\n\t\tuint256[2][] memory userBalanceList = new uint256[2][](length);\n\t\tfor (uint256 i = 0; i < length; i++) {\n\t\t\tuserBalanceList[i][0] = userInfoMap[i][_user].amount;\n\t\t\tuserBalanceList[i][1] = _getUserAccumulatedReward(i, _user);\n\t\t}\n\t\treturn userBalanceList;\n\t}\n\n\t/**\n\t * @notice returns UserInfo for the given pool and user\n\t * @param _poolToken the address of pool token\n\t * @param _user the address of the user\n\t */\n\tfunction getUserInfo(address _poolToken, address _user) public view returns (UserInfo memory) {\n\t\tuint256 poolId = _getPoolId(_poolToken);\n\t\treturn userInfoMap[poolId][_user];\n\t}\n\n\t/**\n\t * @notice returns list of UserInfo for the given user for each pool token\n\t * @param _user the address of the user\n\t */\n\tfunction getUserInfoList(address _user) external view returns (UserInfo[] memory) {\n\t\tuint256 length = poolInfoList.length;\n\t\tUserInfo[] memory userInfoList = new UserInfo[](length);\n\t\tfor (uint256 i = 0; i < length; i++) {\n\t\t\tuserInfoList[i] = userInfoMap[i][_user];\n\t\t}\n\t\treturn userInfoList;\n\t}\n\n\t/**\n\t * @notice returns accumulated reward for the given user for each pool token\n\t * @param _user the address of the user\n\t */\n\tfunction getUserAccumulatedRewardList(address _user) external view returns (uint256[] memory) {\n\t\tuint256 length = poolInfoList.length;\n\t\tuint256[] memory rewardList = new uint256[](length);\n\t\tfor (uint256 i = 0; i < length; i++) {\n\t\t\trewardList[i] = _getUserAccumulatedReward(i, _user);\n\t\t}\n\t\treturn rewardList;\n\t}\n\n\t/**\n\t * @notice returns the pool token balance a user has on the contract\n\t * @param _poolToken the address of pool token\n\t * @param _user the address of the user\n\t */\n\tfunction getUserPoolTokenBalance(address _poolToken, address _user) external view returns (uint256) {\n\t\tUserInfo memory ui = getUserInfo(_poolToken, _user);\n\t\treturn ui.amount;\n\t}\n}\n"
      },
      "contracts/farm/LiquidityMiningStorage.sol": {
        "content": "pragma solidity 0.5.17;\n\nimport \"../openzeppelin/ERC20.sol\";\nimport \"../openzeppelin/SafeERC20.sol\";\nimport \"../openzeppelin/SafeMath.sol\";\nimport \"../locked/ILockedSOV.sol\";\nimport \"../utils/AdminRole.sol\";\n\ncontract LiquidityMiningStorage is AdminRole {\n\t// Info of each user.\n\tstruct UserInfo {\n\t\tuint256 amount; // How many pool tokens the user has provided.\n\t\tuint256 rewardDebt; // Reward debt. See explanation below.\n\t\tuint256 accumulatedReward; //Reward that's ready to be transferred\n\t\t//\n\t\t// We do some fancy math here. Basically, any point in time, the amount of reward tokens\n\t\t// entitled to a user but is accumulated to be distributed is:\n\t\t//\n\t\t//   accumulated reward = (user.amount * pool.accumulatedRewardPerShare) - user.rewardDebt\n\t\t//\n\t\t// Whenever a user deposits or withdraws LP tokens to a pool. Here's what happens:\n\t\t//   1. The pool's `accumulatedRewardPerShare` (and `lastRewardBlock`) gets updated.\n\t\t//   2. User receives the accumulated reward sent to his/her address.\n\t\t//   3. User's `amount` gets updated.\n\t\t//   4. User's `rewardDebt` gets updated.\n\t}\n\n\t// Info of each pool.\n\tstruct PoolInfo {\n\t\tIERC20 poolToken; // Address of LP token contract.\n\t\tuint96 allocationPoint; // How many allocation points assigned to this pool. Amount of reward tokens to distribute per block.\n\t\tuint256 lastRewardBlock; // Last block number that reward tokens distribution occurs.\n\t\tuint256 accumulatedRewardPerShare; // Accumulated amount of reward tokens per share, times 1e12. See below.\n\t}\n\n\t// SVR tokens created per block.\n\tuint256 public rewardTokensPerBlock;\n\t// The block number when reward token mining starts.\n\tuint256 public startBlock;\n\t// Block number when bonus reward token period ends.\n\tuint256 public bonusEndBlock;\n\t// Block number when reward token period ends.\n\tuint256 public endBlock;\n\n\t//Wrapper contract which will be a proxy between user and LM\n\taddress public wrapper;\n\n\t// Info of each pool.\n\tPoolInfo[] public poolInfoList;\n\t// Mapping pool token address => pool id\n\tmapping(address => uint256) poolIdList;\n\t// Total allocation points. Must be the sum of all allocation points in all pools.\n\tuint256 public totalAllocationPoint;\n\n\t// Info of each user that stakes LP tokens.\n\tmapping(uint256 => mapping(address => UserInfo)) public userInfoMap;\n\t// Total balance this contract should have to handle withdrawal for all users\n\tuint256 public totalUsersBalance;\n\n\t/// @dev The SOV token\n\tIERC20 public SOV;\n\n\t/// @dev The locked vault contract to deposit LP's rewards into.\n\tILockedSOV public lockedSOV;\n\n\t// The % which determines how much will be unlocked immediately.\n\t/// @dev 10000 is 100%\n\tuint256 public unlockedImmediatelyPercent;\n}\n"
      },
      "contracts/mockup/RBTCWrapperProxyMockup.sol": {
        "content": "pragma solidity 0.5.17;\n\nimport \"../farm/LiquidityMining.sol\";\n\ncontract RBTCWrapperProxyMockup {\n\tLiquidityMining public liquidityMining;\n\n\tconstructor(LiquidityMining _liquidityMining) public {\n\t\tliquidityMining = _liquidityMining;\n\t}\n\n\tfunction claimReward(address _poolToken) public {\n\t\tliquidityMining.claimReward(_poolToken, msg.sender);\n\t}\n\n\tfunction claimRewardFromAllPools() public {\n\t\tliquidityMining.claimRewardFromAllPools(msg.sender);\n\t}\n\n\tfunction withdraw(address _poolToken, uint256 _amount) public {\n\t\tliquidityMining.withdraw(_poolToken, _amount, msg.sender);\n\t}\n}\n"
      },
      "contracts/mockup/LiquidityMiningMockup.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../farm/LiquidityMining.sol\";\n\ncontract LiquidityMiningMockup is LiquidityMining {\n\tfunction getPassedBlocksWithBonusMultiplier(uint256 _from, uint256 _to) public view returns (uint256) {\n\t\treturn _getPassedBlocksWithBonusMultiplier(_from, _to);\n\t}\n\n\tfunction getPoolAccumulatedReward(address _poolToken) public view returns (uint256, uint256) {\n\t\tuint256 poolId = _getPoolId(_poolToken);\n\t\tPoolInfo storage pool = poolInfoList[poolId];\n\t\treturn _getPoolAccumulatedReward(pool);\n\t}\n}\n"
      },
      "contracts/farm/LiquidityMiningProxy.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"./LiquidityMiningStorage.sol\";\nimport \"../proxy/UpgradableProxy.sol\";\n\n/**\n * @dev LiquidityMining contract should be upgradable, use UpgradableProxy\n */\ncontract LiquidityMiningProxy is LiquidityMiningStorage, UpgradableProxy {\n\n}\n"
      },
      "contracts/escrow/EscrowReward.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"./Escrow.sol\";\nimport \"../locked/ILockedSOV.sol\";\n\n/**\n *  @title A reward distribution contract for Sovryn Ethereum Pool Escrow Contract.\n *  @author Franklin Richards - powerhousefrank@protonmail.com\n *  @notice Multisig can use this contract for depositing of Reward tokens based on the total token deposit.\n */\ncontract EscrowReward is Escrow {\n\tusing SafeMath for uint256;\n\n\t/* Storage */\n\n\t/// @notice The total reward tokens deposited.\n\t/// @dev Used for calculating the reward % share of users related to total deposit.\n\tuint256 public totalRewardDeposit;\n\n\t/// @notice The Locked SOV contract.\n\tILockedSOV public lockedSOV;\n\n\t/* Events */\n\n\t/// @notice Emitted when the Locked SOV Contract address is updated.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _lockedSOV The address of the Locked SOV Contract.\n\tevent LockedSOVUpdated(address indexed _initiator, address indexed _lockedSOV);\n\n\t/// @notice Emitted when a new reward token deposit is done by Multisig.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _amount The amount of token deposited.\n\tevent RewardDepositByMultisig(address indexed _initiator, uint256 _amount);\n\n\t/// @notice Emitted when a Reward token withdraw is done by User.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _amount The amount of token withdrawed.\n\tevent RewardTokenWithdraw(address indexed _initiator, uint256 _amount);\n\n\t/* Functions */\n\n\t/**\n\t * @notice Setup the required parameters.\n\t * @param _lockedSOV The Locked SOV Contract address.\n\t * @param _SOV The SOV token address.\n\t * @param _multisig The owner of the tokens & contract.\n\t * @param _releaseTime The token release time, zero if undecided.\n\t * @param _depositLimit The amount of tokens we will be accepting.\n\t */\n\tconstructor(\n\t\taddress _lockedSOV,\n\t\taddress _SOV,\n\t\taddress _multisig,\n\t\tuint256 _releaseTime,\n\t\tuint256 _depositLimit\n\t) public Escrow(_SOV, _multisig, _releaseTime, _depositLimit) {\n\t\tif (_lockedSOV != address(0)) {\n\t\t\tlockedSOV = ILockedSOV(_lockedSOV);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Set the Locked SOV Contract Address if not already done.\n\t * @param _lockedSOV The Locked SOV Contract address.\n\t */\n\tfunction updateLockedSOV(address _lockedSOV) external onlyMultisig {\n\t\trequire(_lockedSOV != address(0), \"Invalid Reward Token Address.\");\n\n\t\tlockedSOV = ILockedSOV(_lockedSOV);\n\n\t\temit LockedSOVUpdated(msg.sender, _lockedSOV);\n\t}\n\n\t/**\n\t * @notice Deposit tokens to this contract by the Multisig.\n\t * @param _amount the amount of tokens deposited.\n\t * @dev The contract has to be approved by the multisig inorder for this function to work.\n\t */\n\tfunction depositRewardByMultisig(uint256 _amount) external onlyMultisig {\n\t\trequire(status != Status.Withdraw, \"Reward Token deposit is only allowed before User Withdraw starts.\");\n\t\trequire(_amount > 0, \"Amount needs to be bigger than zero.\");\n\n\t\tbool txStatus = SOV.transferFrom(msg.sender, address(this), _amount);\n\t\trequire(txStatus, \"Token transfer was not successful.\");\n\n\t\ttotalRewardDeposit = totalRewardDeposit.add(_amount);\n\t\ttxStatus = SOV.approve(address(lockedSOV), totalRewardDeposit);\n\t\trequire(txStatus, \"Token Approval was not successful.\");\n\n\t\temit RewardDepositByMultisig(msg.sender, _amount);\n\t}\n\n\t/**\n\t * @notice Withdraws token and reward from the contract by User. Reward is gone to lockedSOV contract for future vesting.\n\t * @dev Only works after the contract state is in Withdraw.\n\t */\n\tfunction withdrawTokensAndReward() external checkRelease checkStatus(Status.Withdraw) {\n\t\t// Reward calculation have to be done initially as the User Balance is zeroed out .\n\t\tuint256 reward = userBalances[msg.sender].mul(totalRewardDeposit).div(totalDeposit);\n\t\twithdrawTokens();\n\n\t\tlockedSOV.depositSOV(msg.sender, reward);\n\n\t\temit RewardTokenWithdraw(msg.sender, reward);\n\t}\n\n\t/* Getter Functions */\n\n\t/**\n\t * @notice Function to read the reward a particular user can get.\n\t * @param _addr The address of the user whose reward is to be read.\n\t * @return reward The reward received by the user.\n\t */\n\tfunction getReward(address _addr) external view returns (uint256 reward) {\n\t\tif (userBalances[_addr].mul(totalRewardDeposit) == 0) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn userBalances[_addr].mul(totalRewardDeposit).div(totalDeposit);\n\t}\n}\n"
      },
      "contracts/escrow/Escrow.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../openzeppelin/SafeMath.sol\";\nimport \"../interfaces/IERC20.sol\";\n\n/**\n *  @title A holding contract for Sovryn Ethereum Pool to accept SOV Token.\n *  @author Franklin Richards - powerhousefrank@protonmail.com\n *  @notice You can use this contract for deposit of SOV tokens for some time and withdraw later.\n */\ncontract Escrow {\n\tusing SafeMath for uint256;\n\n\t/* Storage */\n\n\t/// @notice The total tokens deposited.\n\t/// @dev Used for calculating the reward % share of users related to total deposit.\n\tuint256 public totalDeposit;\n\t/// @notice The release timestamp for the tokens deposited.\n\tuint256 public releaseTime;\n\t/// @notice The amount of token we would be accepting as deposit at max.\n\tuint256 public depositLimit;\n\n\t/// @notice The SOV token contract.\n\tIERC20 public SOV;\n\n\t/// @notice The multisig contract which handles the fund.\n\taddress public multisig;\n\n\t/// @notice The user balances.\n\tmapping(address => uint256) userBalances;\n\n\t/// @notice The current contract status.\n\t/// @notice Deployed - Deployed the contract.\n\t/// @notice Deposit - Time to deposit in the contract by the users.\n\t/// @notice Holding - Deposit is closed and now the holding period starts.\n\t/// @notice Withdraw - Time to withdraw in the contract by the users.\n\t/// @notice Expired - The contract is now closed completely.\n\tenum Status { Deployed, Deposit, Holding, Withdraw, Expired }\n\tStatus public status;\n\n\t/* Events */\n\n\t/// @notice Emitted when the contract deposit starts.\n\tevent EscrowActivated();\n\n\t/// @notice Emitted when the contract is put in holding state. No new token deposit accepted by User.\n\tevent EscrowInHoldingState();\n\n\t/// @notice Emitted when the contract is put in withdraw state. Users can now withdraw tokens.\n\tevent EscrowInWithdrawState();\n\n\t/// @notice Emitted when the contract is expired after withdraws are made/total token transfer.\n\tevent EscrowFundExpired();\n\n\t/// @notice Emitted when a new multisig is added to the contract.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _newMultisig The address which is added as the new multisig.\n\t/// @dev Can only be initiated by the current multisig.\n\tevent NewMultisig(address indexed _initiator, address indexed _newMultisig);\n\n\t/// @notice Emitted when the release timestamp is updated.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _releaseTimestamp The updated release timestamp for the withdraw.\n\tevent TokenReleaseUpdated(address indexed _initiator, uint256 _releaseTimestamp);\n\n\t/// @notice Emitted when the deposit limit is updated.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _depositLimit The updated deposit limit.\n\tevent TokenDepositLimitUpdated(address indexed _initiator, uint256 _depositLimit);\n\n\t/// @notice Emitted when a new token deposit is done by User.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _amount The amount of token deposited.\n\tevent TokenDeposit(address indexed _initiator, uint256 _amount);\n\n\t/// @notice Emitted when we reach the token deposit limit.\n\tevent DepositLimitReached();\n\n\t/// @notice Emitted when a token withdraw is done by Multisig.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _amount The amount of token withdrawed.\n\tevent TokenWithdrawByMultisig(address indexed _initiator, uint256 _amount);\n\n\t/// @notice Emitted when a new token deposit is done by Multisig.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _amount The amount of token deposited.\n\tevent TokenDepositByMultisig(address indexed _initiator, uint256 _amount);\n\n\t/// @notice Emitted when a token withdraw is done by User.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _amount The amount of token withdrawed.\n\tevent TokenWithdraw(address indexed _initiator, uint256 _amount);\n\n\t/* Modifiers */\n\n\tmodifier onlyMultisig() {\n\t\trequire(msg.sender == multisig, \"Only Multisig can call this.\");\n\t\t_;\n\t}\n\n\tmodifier checkStatus(Status s) {\n\t\trequire(status == s, \"The contract is not in the right state.\");\n\t\t_;\n\t}\n\n\tmodifier checkRelease() {\n\t\trequire(releaseTime != 0 && releaseTime <= block.timestamp, \"The release time has not started yet.\");\n\t\t_;\n\t}\n\n\t/* Functions */\n\n\t/**\n\t * @notice Setup the required parameters.\n\t * @param _SOV The SOV token address.\n\t * @param _multisig The owner of the tokens & contract.\n\t * @param _releaseTime The token release time, zero if undecided.\n\t * @param _depositLimit The amount of tokens we will be accepting.\n\t */\n\tconstructor(\n\t\taddress _SOV,\n\t\taddress _multisig,\n\t\tuint256 _releaseTime,\n\t\tuint256 _depositLimit\n\t) public {\n\t\trequire(_SOV != address(0), \"Invalid SOV Address.\");\n\t\trequire(_multisig != address(0), \"Invalid Multisig Address.\");\n\n\t\tSOV = IERC20(_SOV);\n\t\tmultisig = _multisig;\n\n\t\temit NewMultisig(msg.sender, _multisig);\n\n\t\treleaseTime = _releaseTime;\n\t\tdepositLimit = _depositLimit;\n\n\t\tstatus = Status.Deployed;\n\t}\n\n\t/**\n\t * @notice This function is called once after deployment for starting the deposit action.\n\t * @dev Without calling this function, the contract will not start accepting tokens.\n\t */\n\tfunction init() external onlyMultisig checkStatus(Status.Deployed) {\n\t\tstatus = Status.Deposit;\n\n\t\temit EscrowActivated();\n\t}\n\n\t/**\n\t * @notice Update Multisig.\n\t * @param _newMultisig The new owner of the tokens & contract.\n\t */\n\tfunction updateMultisig(address _newMultisig) external onlyMultisig {\n\t\trequire(_newMultisig != address(0), \"New Multisig address invalid.\");\n\n\t\tmultisig = _newMultisig;\n\n\t\temit NewMultisig(msg.sender, _newMultisig);\n\t}\n\n\t/**\n\t * @notice Update Release Timestamp.\n\t * @param _newReleaseTime The new release timestamp for token release.\n\t * @dev Zero is also a valid timestamp, if the release time is not scheduled yet.\n\t */\n\tfunction updateReleaseTimestamp(uint256 _newReleaseTime) external onlyMultisig {\n\t\treleaseTime = _newReleaseTime;\n\n\t\temit TokenReleaseUpdated(msg.sender, _newReleaseTime);\n\t}\n\n\t/**\n\t * @notice Update Deposit Limit.\n\t * @param _newDepositLimit The new deposit limit.\n\t * @dev IMPORTANT: Should not decrease than already deposited.\n\t */\n\tfunction updateDepositLimit(uint256 _newDepositLimit) external onlyMultisig {\n\t\trequire(_newDepositLimit >= totalDeposit, \"Deposit already higher than the limit trying to be set.\");\n\t\tdepositLimit = _newDepositLimit;\n\n\t\temit TokenDepositLimitUpdated(msg.sender, _newDepositLimit);\n\t}\n\n\t/**\n\t * @notice Deposit tokens to this contract by User.\n\t * @param _amount the amount of tokens deposited.\n\t * @dev The contract has to be approved by the user inorder for this function to work.\n\t * These tokens can be withdrawn/transferred during Holding State by the Multisig.\n\t */\n\tfunction depositTokens(uint256 _amount) external checkStatus(Status.Deposit) {\n\t\trequire(_amount > 0, \"Amount needs to be bigger than zero.\");\n\t\tuint256 amount = _amount;\n\n\t\tif (totalDeposit.add(_amount) >= depositLimit) {\n\t\t\tamount = depositLimit.sub(totalDeposit);\n\t\t\temit DepositLimitReached();\n\t\t}\n\n\t\tbool txStatus = SOV.transferFrom(msg.sender, address(this), amount);\n\t\trequire(txStatus, \"Token transfer was not successful.\");\n\n\t\tuserBalances[msg.sender] = userBalances[msg.sender].add(amount);\n\t\ttotalDeposit = totalDeposit.add(amount);\n\n\t\temit TokenDeposit(msg.sender, amount);\n\t}\n\n\t/**\n\t * @notice Update contract state to Holding.\n\t * @dev Once called, the contract no longer accepts any more deposits.\n\t * The multisig can now withdraw tokens from the contract after the contract is in Holding State.\n\t */\n\tfunction changeStateToHolding() external onlyMultisig checkStatus(Status.Deposit) {\n\t\tstatus = Status.Holding;\n\n\t\temit EscrowInHoldingState();\n\t}\n\n\t/**\n\t * @notice Withdraws all token from the contract by Multisig.\n\t * @param _receiverAddress The address where the tokens has to be transferred. Zero address if the withdraw is to be done in Multisig.\n\t * @dev Can only be called after the token state is changed to Holding.\n\t */\n\tfunction withdrawTokensByMultisig(address _receiverAddress) external onlyMultisig checkStatus(Status.Holding) {\n\t\taddress receiverAddress = msg.sender;\n\t\tif (_receiverAddress != address(0)) {\n\t\t\treceiverAddress = _receiverAddress;\n\t\t}\n\n\t\tuint256 value = SOV.balanceOf(address(this));\n\t\t/// Sending the amount to multisig.\n\t\tbool txStatus = SOV.transfer(receiverAddress, value);\n\t\trequire(txStatus, \"Token transfer was not successful. Check receiver address.\");\n\n\t\temit TokenWithdrawByMultisig(msg.sender, value);\n\t}\n\n\t/**\n\t * @notice Deposit tokens to this contract by the Multisig.\n\t * @param _amount the amount of tokens deposited.\n\t * @dev The contract has to be approved by the multisig inorder for this function to work.\n\t * Once the token deposit is higher than the total deposits done, the contract state is changed to Withdraw.\n\t */\n\tfunction depositTokensByMultisig(uint256 _amount) external onlyMultisig checkStatus(Status.Holding) {\n\t\trequire(_amount > 0, \"Amount needs to be bigger than zero.\");\n\n\t\tbool txStatus = SOV.transferFrom(msg.sender, address(this), _amount);\n\t\trequire(txStatus, \"Token transfer was not successful.\");\n\n\t\temit TokenDepositByMultisig(msg.sender, _amount);\n\n\t\tif (SOV.balanceOf(address(this)) >= totalDeposit) {\n\t\t\tstatus = Status.Withdraw;\n\t\t\temit EscrowInWithdrawState();\n\t\t}\n\t}\n\n\t/**\n\t * @notice Withdraws token from the contract by User.\n\t * @dev Only works after the contract state is in Withdraw.\n\t */\n\tfunction withdrawTokens() public checkRelease checkStatus(Status.Withdraw) {\n\t\tuint256 amount = userBalances[msg.sender];\n\t\tuserBalances[msg.sender] = 0;\n\t\tbool txStatus = SOV.transfer(msg.sender, amount);\n\t\trequire(txStatus, \"Token transfer was not successful. Check receiver address.\");\n\n\t\temit TokenWithdraw(msg.sender, amount);\n\t}\n\n\t/* Getter Functions */\n\n\t/**\n\t * @notice Function to read the current token balance of a particular user.\n\t * @return _addr The user address whose balance has to be checked.\n\t */\n\tfunction getUserBalance(address _addr) external view returns (uint256 balance) {\n\t\treturn userBalances[_addr];\n\t}\n}\n"
      },
      "contracts/farm/LiquidityMiningConfigToken.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../openzeppelin/IERC20_.sol\";\n\n/**\n * @title Dummy token with 0 total supply.\n *\n * @dev We need this token for having a flexibility with LiquidityMining configuration\n */\ncontract LiquidityMiningConfigToken is IERC20_ {\n\tfunction totalSupply() external view returns (uint256) {\n\t\treturn 0;\n\t}\n\n\tfunction balanceOf(address account) external view returns (uint256) {\n\t\treturn 0;\n\t}\n\n\tfunction transfer(address recipient, uint256 amount) external returns (bool) {\n\t\treturn false;\n\t}\n\n\tfunction allowance(address owner, address spender) external view returns (uint256) {\n\t\treturn 0;\n\t}\n\n\tfunction approve(address spender, uint256 amount) external returns (bool) {\n\t\treturn false;\n\t}\n\n\tfunction transferFrom(\n\t\taddress sender,\n\t\taddress recipient,\n\t\tuint256 amount\n\t) external returns (bool) {\n\t\treturn false;\n\t}\n}\n"
      },
      "contracts/testhelpers/LoanTokenLogicTest.sol": {
        "content": "pragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../connectors/loantoken/LoanTokenLogicLM.sol\";\n\ncontract LoanTokenLogicTest is LoanTokenLogicLM {\n\tfunction getMarginBorrowAmountAndRate(uint256 leverageAmount, uint256 depositAmount) public view returns (uint256, uint256) {\n\t\treturn _getMarginBorrowAmountAndRate(leverageAmount, depositAmount);\n\t}\n}\n"
      },
      "contracts/mockup/MockAffiliates.sol": {
        "content": "pragma solidity 0.5.17;\n\nimport \"../modules/Affiliates.sol\";\n\ncontract MockAffiliates is Affiliates {\n\tfunction getAffiliatesUserReferrer(address user) public view returns (address) {\n\t\treturn affiliatesUserReferrer[user]; // REFACTOR: will be useful if affiliatesUserReferrer visibillity is not public\n\t}\n\n\tfunction initialize(address target) external onlyOwner {\n\t\t_setTarget(this.getAffiliatesUserReferrer.selector, target);\n\t}\n}\n"
      },
      "contracts/core/Protocol.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"./State.sol\";\n\n/**\n * @title Sovryn Protocol contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the proxy functionality to deploy Protocol anchor\n * and logic apart, turning it upgradable.\n *\n * @dev TODO: can I change this proxy to EIP-1822 proxy standard, please.\n *   https://eips.ethereum.org/EIPS/eip-1822\n * */\ncontract sovrynProtocol is State {\n\t/**\n\t * @notice Fallback function performs a delegate call\n\t * to the actual implementation address is pointing this proxy.\n\t * Returns whatever the implementation call returns.\n\t * */\n\tfunction() external payable {\n\t\tif (gasleft() <= 2300) {\n\t\t\treturn;\n\t\t}\n\n\t\taddress target = logicTargets[msg.sig];\n\t\trequire(target != address(0), \"target not active\");\n\n\t\tbytes memory data = msg.data;\n\t\tassembly {\n\t\t\tlet result := delegatecall(gas, target, add(data, 0x20), mload(data), 0, 0)\n\t\t\tlet size := returndatasize\n\t\t\tlet ptr := mload(0x40)\n\t\t\treturndatacopy(ptr, 0, size)\n\t\t\tswitch result\n\t\t\t\tcase 0 {\n\t\t\t\t\trevert(ptr, size)\n\t\t\t\t}\n\t\t\t\tdefault {\n\t\t\t\t\treturn(ptr, size)\n\t\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @notice External owner target initializer.\n\t * @param target The target addresses.\n\t * */\n\tfunction replaceContract(address target) external onlyOwner {\n\t\t(bool success, ) = target.delegatecall(abi.encodeWithSignature(\"initialize(address)\", target));\n\t\trequire(success, \"setup failed\");\n\t}\n\n\t/**\n\t * @notice External owner setter for target addresses.\n\t * @param sigsArr The array of signatures.\n\t * @param targetsArr The array of addresses.\n\t * */\n\tfunction setTargets(string[] calldata sigsArr, address[] calldata targetsArr) external onlyOwner {\n\t\trequire(sigsArr.length == targetsArr.length, \"count mismatch\");\n\n\t\tfor (uint256 i = 0; i < sigsArr.length; i++) {\n\t\t\t_setTarget(bytes4(keccak256(abi.encodePacked(sigsArr[i]))), targetsArr[i]);\n\t\t}\n\t}\n\n\t/**\n\t * @notice External getter for target addresses.\n\t * @param sig The signature.\n\t * @return The address for a given signature.\n\t * */\n\tfunction getTarget(string calldata sig) external view returns (address) {\n\t\treturn logicTargets[bytes4(keccak256(abi.encodePacked(sig)))];\n\t}\n}\n"
      },
      "contracts/mockup/ProtocolSettingsMockup.sol": {
        "content": "pragma solidity 0.5.17;\n\nimport \"../modules/ProtocolSettings.sol\";\n\ncontract ProtocolSettingsMockup is ProtocolSettings {\n\tfunction setLendingFeeTokensHeld(address token, uint256 amout) public {\n\t\tlendingFeeTokensHeld[token] = amout;\n\t}\n\n\tfunction setTradingFeeTokensHeld(address token, uint256 amout) public {\n\t\ttradingFeeTokensHeld[token] = amout;\n\t}\n\n\tfunction setBorrowingFeeTokensHeld(address token, uint256 amout) public {\n\t\tborrowingFeeTokensHeld[token] = amout;\n\t}\n\n\tfunction initialize(address target) external onlyOwner {\n\t\t_setTarget(this.setPriceFeedContract.selector, target);\n\t\t_setTarget(this.setSwapsImplContract.selector, target);\n\t\t_setTarget(this.setLoanPool.selector, target);\n\t\t_setTarget(this.setSupportedTokens.selector, target);\n\t\t_setTarget(this.setLendingFeePercent.selector, target);\n\t\t_setTarget(this.setTradingFeePercent.selector, target);\n\t\t_setTarget(this.setBorrowingFeePercent.selector, target);\n\t\t_setTarget(this.setSwapExternalFeePercent.selector, target);\n\t\t_setTarget(this.setAffiliateFeePercent.selector, target);\n\t\t_setTarget(this.setAffiliateTradingTokenFeePercent.selector, target);\n\t\t_setTarget(this.setLiquidationIncentivePercent.selector, target);\n\t\t_setTarget(this.setMaxDisagreement.selector, target);\n\t\t_setTarget(this.setSourceBuffer.selector, target);\n\t\t_setTarget(this.setMaxSwapSize.selector, target);\n\t\t_setTarget(this.setFeesController.selector, target);\n\t\t_setTarget(this.withdrawFees.selector, target);\n\t\t_setTarget(this.withdrawLendingFees.selector, target);\n\t\t_setTarget(this.withdrawTradingFees.selector, target);\n\t\t_setTarget(this.withdrawBorrowingFees.selector, target);\n\t\t_setTarget(this.withdrawProtocolToken.selector, target);\n\t\t_setTarget(this.depositProtocolToken.selector, target);\n\t\t_setTarget(this.getLoanPoolsList.selector, target);\n\t\t_setTarget(this.isLoanPool.selector, target);\n\t\t_setTarget(this.setSovrynSwapContractRegistryAddress.selector, target);\n\t\t_setTarget(this.setWrbtcToken.selector, target);\n\t\t_setTarget(this.setProtocolTokenAddress.selector, target);\n\t\t_setTarget(this.setSOVTokenAddress.selector, target);\n\t\t_setTarget(this.setLockedSOVAddress.selector, target);\n\t\t_setTarget(this.setMinReferralsToPayoutAffiliates.selector, target);\n\t\t_setTarget(this.setRolloverBaseReward.selector, target);\n\n\t\t_setTarget(this.setLendingFeeTokensHeld.selector, target);\n\t\t_setTarget(this.setTradingFeeTokensHeld.selector, target);\n\t\t_setTarget(this.setBorrowingFeeTokensHeld.selector, target);\n\t\t_setTarget(this.getSpecialRebates.selector, target);\n\n\t\t_setTarget(this.getProtocolAddress.selector, target);\n\t\t_setTarget(this.getSovTokenAddress.selector, target);\n\t\t_setTarget(this.getLockedSOVAddress.selector, target);\n\t\t_setTarget(this.getFeeRebatePercent.selector, target);\n\t\t_setTarget(this.getSwapExternalFeePercent.selector, target);\n\n\t\t_setTarget(this.setTradingRebateRewardsBasisPoint.selector, target);\n\t\t_setTarget(this.getTradingRebateRewardsBasisPoint.selector, target);\n\t}\n}\n"
      },
      "contracts/multisig/MultiSigKeyHolders.sol": {
        "content": "pragma solidity ^0.5.17;\npragma experimental ABIEncoderV2;\n\nimport \"../openzeppelin/Ownable.sol\";\n\n/**\n * @title Multi Signature Key Holders contract.\n *\n * This contract contains the implementation of functions to add and remove\n * key holders w/ rBTC and BTC addresses.\n * */\ncontract MultiSigKeyHolders is Ownable {\n\t/* Storage */\n\n\tuint256 public constant MAX_OWNER_COUNT = 50;\n\n\tstring private constant ERROR_INVALID_ADDRESS = \"Invalid address\";\n\tstring private constant ERROR_INVALID_REQUIRED = \"Invalid required\";\n\n\t/// Flag and index for Ethereum address.\n\tmapping(address => Data) private isEthereumAddressAdded;\n\n\t/// List of Ethereum addresses.\n\taddress[] private ethereumAddresses;\n\n\t/// Required number of signatures for the Ethereum multisig.\n\tuint256 public ethereumRequired = 2;\n\n\t/// Flag and index for Bitcoin address.\n\tmapping(string => Data) private isBitcoinAddressAdded;\n\n\t/// List of Bitcoin addresses.\n\tstring[] private bitcoinAddresses;\n\n\t/// Required number of signatures for the Bitcoin multisig.\n\tuint256 public bitcoinRequired = 2;\n\n\t/// Helps removing items from array.\n\tstruct Data {\n\t\tbool added;\n\t\tuint248 index;\n\t}\n\n\t/* Events */\n\n\tevent EthereumAddressAdded(address indexed account);\n\tevent EthereumAddressRemoved(address indexed account);\n\tevent EthereumRequirementChanged(uint256 required);\n\tevent BitcoinAddressAdded(string account);\n\tevent BitcoinAddressRemoved(string account);\n\tevent BitcoinRequirementChanged(uint256 required);\n\n\t/* Modifiers */\n\n\tmodifier validRequirement(uint256 ownerCount, uint256 _required) {\n\t\trequire(ownerCount <= MAX_OWNER_COUNT && _required <= ownerCount && _required != 0 && ownerCount != 0, ERROR_INVALID_REQUIRED);\n\t\t_;\n\t}\n\n\t/* Functions */\n\n\t/**\n\t * @notice Add rBTC address to the key holders.\n\t * @param _address The address to be added.\n\t * */\n\tfunction addEthereumAddress(address _address) public onlyOwner {\n\t\t_addEthereumAddress(_address);\n\t}\n\n\t/**\n\t * @notice Add rBTC addresses to the key holders.\n\t * @param _address The addresses to be added.\n\t * */\n\tfunction addEthereumAddresses(address[] memory _address) public onlyOwner {\n\t\tfor (uint256 i = 0; i < _address.length; i++) {\n\t\t\t_addEthereumAddress(_address[i]);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Internal function to add rBTC address to the key holders.\n\t * @param _address The address to be added.\n\t * */\n\tfunction _addEthereumAddress(address _address) internal {\n\t\trequire(_address != address(0), ERROR_INVALID_ADDRESS);\n\n\t\tif (!isEthereumAddressAdded[_address].added) {\n\t\t\tisEthereumAddressAdded[_address] = Data({ added: true, index: uint248(ethereumAddresses.length) });\n\t\t\tethereumAddresses.push(_address);\n\t\t}\n\n\t\temit EthereumAddressAdded(_address);\n\t}\n\n\t/**\n\t * @notice Remove rBTC address to the key holders.\n\t * @param _address The address to be removed.\n\t * */\n\tfunction removeEthereumAddress(address _address) public onlyOwner {\n\t\t_removeEthereumAddress(_address);\n\t}\n\n\t/**\n\t * @notice Remove rBTC addresses to the key holders.\n\t * @param _address The addresses to be removed.\n\t * */\n\tfunction removeEthereumAddresses(address[] memory _address) public onlyOwner {\n\t\tfor (uint256 i = 0; i < _address.length; i++) {\n\t\t\t_removeEthereumAddress(_address[i]);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Internal function to remove rBTC address to the key holders.\n\t * @param _address The address to be removed.\n\t * */\n\tfunction _removeEthereumAddress(address _address) internal {\n\t\trequire(_address != address(0), ERROR_INVALID_ADDRESS);\n\n\t\tif (isEthereumAddressAdded[_address].added) {\n\t\t\tuint248 index = isEthereumAddressAdded[_address].index;\n\t\t\tif (index != ethereumAddresses.length - 1) {\n\t\t\t\tethereumAddresses[index] = ethereumAddresses[ethereumAddresses.length - 1];\n\t\t\t\tisEthereumAddressAdded[ethereumAddresses[index]].index = index;\n\t\t\t}\n\t\t\tethereumAddresses.length--;\n\t\t\tdelete isEthereumAddressAdded[_address];\n\t\t}\n\n\t\temit EthereumAddressRemoved(_address);\n\t}\n\n\t/**\n\t * @notice Get whether rBTC address is a key holder.\n\t * @param _address The rBTC address to be checked.\n\t * */\n\tfunction isEthereumAddressOwner(address _address) public view returns (bool) {\n\t\treturn isEthereumAddressAdded[_address].added;\n\t}\n\n\t/**\n\t * @notice Get array of rBTC key holders.\n\t * */\n\tfunction getEthereumAddresses() public view returns (address[] memory) {\n\t\treturn ethereumAddresses;\n\t}\n\n\t/**\n\t * @notice Set flag ethereumRequired to true/false.\n\t * @param _required The new value of the ethereumRequired flag.\n\t * */\n\tfunction changeEthereumRequirement(uint256 _required) public onlyOwner validRequirement(ethereumAddresses.length, _required) {\n\t\tethereumRequired = _required;\n\t\temit EthereumRequirementChanged(_required);\n\t}\n\n\t/**\n\t * @notice Add bitcoin address to the key holders.\n\t * @param _address The address to be added.\n\t * */\n\tfunction addBitcoinAddress(string memory _address) public onlyOwner {\n\t\t_addBitcoinAddress(_address);\n\t}\n\n\t/**\n\t * @notice Add bitcoin addresses to the key holders.\n\t * @param _address The addresses to be added.\n\t * */\n\tfunction addBitcoinAddresses(string[] memory _address) public onlyOwner {\n\t\tfor (uint256 i = 0; i < _address.length; i++) {\n\t\t\t_addBitcoinAddress(_address[i]);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Internal function to add bitcoin address to the key holders.\n\t * @param _address The address to be added.\n\t * */\n\tfunction _addBitcoinAddress(string memory _address) internal {\n\t\trequire(bytes(_address).length != 0, ERROR_INVALID_ADDRESS);\n\n\t\tif (!isBitcoinAddressAdded[_address].added) {\n\t\t\tisBitcoinAddressAdded[_address] = Data({ added: true, index: uint248(bitcoinAddresses.length) });\n\t\t\tbitcoinAddresses.push(_address);\n\t\t}\n\n\t\temit BitcoinAddressAdded(_address);\n\t}\n\n\t/**\n\t * @notice Remove bitcoin address to the key holders.\n\t * @param _address The address to be removed.\n\t * */\n\tfunction removeBitcoinAddress(string memory _address) public onlyOwner {\n\t\t_removeBitcoinAddress(_address);\n\t}\n\n\t/**\n\t * @notice Remove bitcoin addresses to the key holders.\n\t * @param _address The addresses to be removed.\n\t * */\n\tfunction removeBitcoinAddresses(string[] memory _address) public onlyOwner {\n\t\tfor (uint256 i = 0; i < _address.length; i++) {\n\t\t\t_removeBitcoinAddress(_address[i]);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Internal function to remove bitcoin address to the key holders.\n\t * @param _address The address to be removed.\n\t * */\n\tfunction _removeBitcoinAddress(string memory _address) internal {\n\t\trequire(bytes(_address).length != 0, ERROR_INVALID_ADDRESS);\n\n\t\tif (isBitcoinAddressAdded[_address].added) {\n\t\t\tuint248 index = isBitcoinAddressAdded[_address].index;\n\t\t\tif (index != bitcoinAddresses.length - 1) {\n\t\t\t\tbitcoinAddresses[index] = bitcoinAddresses[bitcoinAddresses.length - 1];\n\t\t\t\tisBitcoinAddressAdded[bitcoinAddresses[index]].index = index;\n\t\t\t}\n\t\t\tbitcoinAddresses.length--;\n\t\t\tdelete isBitcoinAddressAdded[_address];\n\t\t}\n\n\t\temit BitcoinAddressRemoved(_address);\n\t}\n\n\t/**\n\t * @notice Get whether bitcoin address is a key holder.\n\t * @param _address The bitcoin address to be checked.\n\t * */\n\tfunction isBitcoinAddressOwner(string memory _address) public view returns (bool) {\n\t\treturn isBitcoinAddressAdded[_address].added;\n\t}\n\n\t/**\n\t * @notice Get array of bitcoin key holders.\n\t * */\n\tfunction getBitcoinAddresses() public view returns (string[] memory) {\n\t\treturn bitcoinAddresses;\n\t}\n\n\t/**\n\t * @notice Set flag bitcoinRequired to true/false.\n\t * @param _required The new value of the bitcoinRequired flag.\n\t * */\n\tfunction changeBitcoinRequirement(uint256 _required) public onlyOwner validRequirement(bitcoinAddresses.length, _required) {\n\t\tbitcoinRequired = _required;\n\t\temit BitcoinRequirementChanged(_required);\n\t}\n\n\t/**\n\t * @notice Add rBTC and bitcoin addresses to the key holders.\n\t * @param _ethereumAddress the rBTC addresses to be added.\n\t * @param _bitcoinAddress the bitcoin addresses to be added.\n\t * */\n\tfunction addEthereumAndBitcoinAddresses(address[] memory _ethereumAddress, string[] memory _bitcoinAddress) public onlyOwner {\n\t\tfor (uint256 i = 0; i < _ethereumAddress.length; i++) {\n\t\t\t_addEthereumAddress(_ethereumAddress[i]);\n\t\t}\n\t\tfor (uint256 i = 0; i < _bitcoinAddress.length; i++) {\n\t\t\t_addBitcoinAddress(_bitcoinAddress[i]);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Remove rBTC and bitcoin addresses to the key holders.\n\t * @param _ethereumAddress The rBTC addresses to be removed.\n\t * @param _bitcoinAddress The bitcoin addresses to be removed.\n\t * */\n\tfunction removeEthereumAndBitcoinAddresses(address[] memory _ethereumAddress, string[] memory _bitcoinAddress) public onlyOwner {\n\t\tfor (uint256 i = 0; i < _ethereumAddress.length; i++) {\n\t\t\t_removeEthereumAddress(_ethereumAddress[i]);\n\t\t}\n\t\tfor (uint256 i = 0; i < _bitcoinAddress.length; i++) {\n\t\t\t_removeBitcoinAddress(_bitcoinAddress[i]);\n\t\t}\n\t}\n}\n"
      },
      "contracts/governance/Vesting/TokenSender.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../../openzeppelin/Ownable.sol\";\nimport \"../../interfaces/IERC20.sol\";\n\n/**\n * @title SOV Token sender contract.\n *\n * @notice This contract includes functions to transfer SOV tokens\n * to a recipient or to several recipients in a list. There is\n * an ACL control check by modifier.\n *\n * @dev TODO: Maybe this token transfer functionality should be included\n * in the SOV token contract, because other contracts are requiring it too:\n * VestingRegistry.sol and VestingRegistry2.sol\n * */\ncontract TokenSender is Ownable {\n\t/* Storage */\n\n\t/// @notice The SOV token contract.\n\taddress public SOV;\n\n\t/// @dev user => flag whether user has admin role\n\tmapping(address => bool) public admins;\n\n\t/* Events */\n\n\tevent SOVTransferred(address indexed receiver, uint256 amount);\n\tevent AdminAdded(address admin);\n\tevent AdminRemoved(address admin);\n\n\t/* Functions */\n\n\tconstructor(address _SOV) public {\n\t\trequire(_SOV != address(0), \"SOV address invalid\");\n\n\t\tSOV = _SOV;\n\t}\n\n\t/* Modifiers */\n\n\t/**\n\t * @dev Throws if called by any account other than the owner or admin.\n\t * */\n\tmodifier onlyAuthorized() {\n\t\trequire(isOwner() || admins[msg.sender], \"unauthorized\");\n\t\t_;\n\t}\n\n\t/* Functions */\n\n\t/**\n\t * @notice Add account to ACL.\n\t * @param _admin The addresses of the account to grant permissions.\n\t * */\n\tfunction addAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = true;\n\t\temit AdminAdded(_admin);\n\t}\n\n\t/**\n\t * @notice Remove account from ACL.\n\t * @param _admin The addresses of the account to revoke permissions.\n\t * */\n\tfunction removeAdmin(address _admin) public onlyOwner {\n\t\tadmins[_admin] = false;\n\t\temit AdminRemoved(_admin);\n\t}\n\n\t/**\n\t * @notice Transfer given amounts of SOV to the given addresses.\n\t * @param _receivers The addresses of the SOV receivers.\n\t * @param _amounts The amounts to be transferred.\n\t * */\n\tfunction transferSOVusingList(address[] memory _receivers, uint256[] memory _amounts) public onlyAuthorized {\n\t\trequire(_receivers.length == _amounts.length, \"arrays mismatch\");\n\n\t\tfor (uint256 i = 0; i < _receivers.length; i++) {\n\t\t\t_transferSOV(_receivers[i], _amounts[i]);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Transfer SOV tokens to given address.\n\t * @param _receiver The address of the SOV receiver.\n\t * @param _amount The amount to be transferred.\n\t * */\n\tfunction transferSOV(address _receiver, uint256 _amount) public onlyAuthorized {\n\t\t_transferSOV(_receiver, _amount);\n\t}\n\n\tfunction _transferSOV(address _receiver, uint256 _amount) internal {\n\t\trequire(_receiver != address(0), \"receiver address invalid\");\n\t\trequire(_amount != 0, \"amount invalid\");\n\n\t\trequire(IERC20(SOV).transfer(_receiver, _amount), \"transfer failed\");\n\t\temit SOVTransferred(_receiver, _amount);\n\t}\n}\n"
      },
      "contracts/governance/GovernorVault.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../openzeppelin/Ownable.sol\";\nimport \"../interfaces/IERC20.sol\";\n\n/**\n * @title Governance Vault.\n * @notice This contract stores tokens and rBTC only transfereble by owner,\n * i.e. Sovryn governance.\n * */\ncontract GovernorVault is Ownable {\n\t/* Events */\n\n\tevent Deposited(address indexed sender, uint256 amount);\n\tevent TokensTransferred(address indexed receiver, address indexed token, uint256 amount);\n\tevent RbtcTransferred(address indexed receiver, uint256 amount);\n\n\t/* Functions */\n\n\t/**\n\t * @notice Transfer tokens.\n\t * @param _receiver The receiver of tokens.\n\t * @param _token The address of token contract.\n\t * @param _amount The amount to be transferred.\n\t * */\n\tfunction transferTokens(\n\t\taddress _receiver,\n\t\taddress _token,\n\t\tuint256 _amount\n\t) public onlyOwner {\n\t\trequire(_receiver != address(0), \"Invalid receiver address\");\n\t\trequire(_token != address(0), \"Invalid token address\");\n\n\t\trequire(IERC20(_token).transfer(_receiver, _amount), \"Transfer failed\");\n\t\temit TokensTransferred(_receiver, _token, _amount);\n\t}\n\n\t/**\n\t * @notice Transfer RBTC.\n\t * @param _receiver The receiver of RBTC.\n\t * @param _amount The amount to be transferred.\n\t * */\n\tfunction transferRbtc(address payable _receiver, uint256 _amount) public onlyOwner {\n\t\trequire(_receiver != address(0), \"Invalid receiver address\");\n\n\t\taddress(_receiver).transfer(_amount);\n\t\temit RbtcTransferred(_receiver, _amount);\n\t}\n\n\t/**\n\t * @notice Fallback function is to react to receiving value (rBTC).\n\t * */\n\tfunction() external payable {\n\t\tif (msg.value > 0) {\n\t\t\temit Deposited(msg.sender, msg.value);\n\t\t}\n\t}\n}\n"
      },
      "contracts/feeds/PriceFeedV1PoolOracle.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\n\nimport \"./PriceFeeds.sol\";\nimport \"./IV1PoolOracle.sol\";\nimport \"../openzeppelin/Ownable.sol\";\nimport \"../openzeppelin/Address.sol\";\nimport \"../openzeppelin/SafeMath.sol\";\nimport \"./IPriceFeeds.sol\";\n\n/**\n * @notice The Price Feed V1 Pool Oracle contract.\n *\n * This contract implements V1 Pool Oracle query functionality,\n * getting the price from v1 pool oracle.\n * */\ncontract PriceFeedV1PoolOracle is IPriceFeedsExt, Ownable {\n\tusing SafeMath for uint256;\n\t/* Storage */\n\n\taddress public v1PoolOracleAddress;\n\taddress public wRBTCAddress;\n\taddress public docAddress;\n\taddress public baseCurrency;\n\n\t/* Events */\n\tevent SetV1PoolOracleAddress(address indexed v1PoolOracleAddress, address changerAddress);\n\tevent SetWRBTCAddress(address indexed wRBTCAddress, address changerAddress);\n\tevent SetDOCAddress(address indexed docAddress, address changerAddress);\n\tevent SetBaseCurrency(address indexed baseCurrency, address changerAddress);\n\n\t/* Functions */\n\n\t/**\n\t * @notice Initialize a new V1 Pool Oracle.\n\t *\n\t * @param _v1PoolOracleAddress The V1 Pool Oracle address.\n\t * @param _wRBTCAddress The wrbtc token address.\n\t * @param _docAddress The doc token address.\n\t * */\n\tconstructor(\n\t\taddress _v1PoolOracleAddress,\n\t\taddress _wRBTCAddress,\n\t\taddress _docAddress,\n\t\taddress _baseCurrency\n\t) public {\n\t\tsetRBTCAddress(_wRBTCAddress);\n\t\tsetDOCAddress(_docAddress);\n\t\tsetV1PoolOracleAddress(_v1PoolOracleAddress);\n\t\tsetBaseCurrency(_baseCurrency);\n\t}\n\n\t/**\n\t * @notice Get the oracle price.\n\t * @return The price from Oracle.\n\t * */\n\tfunction latestAnswer() external view returns (uint256) {\n\t\tIV1PoolOracle _v1PoolOracle = IV1PoolOracle(v1PoolOracleAddress);\n\n\t\tuint256 _price = _v1PoolOracle.latestPrice(baseCurrency);\n\n\t\t// Need to convert to USD, since the V1 pool return value is based on BTC\n\t\tuint256 priceInUSD = _convertAnswerToUsd(_price);\n\t\trequire(priceInUSD != 0, \"price error\");\n\n\t\treturn priceInUSD;\n\t}\n\n\tfunction _convertAnswerToUsd(uint256 _valueInBTC) private view returns (uint256) {\n\t\taddress _priceFeeds = msg.sender;\n\n\t\tuint256 precision = IPriceFeeds(_priceFeeds).queryPrecision(wRBTCAddress, docAddress);\n\t\tuint256 valueInUSD = IPriceFeeds(_priceFeeds).queryReturn(wRBTCAddress, docAddress, _valueInBTC);\n\n\t\t/// Need to multiply by query precision (doc's precision) and divide by 1*10^18 (Because the based price in v1 pool is using 18 decimals)\n\t\treturn valueInUSD.mul(precision).div(1e18);\n\t}\n\n\t/**\n\t * @notice Set the V1 Pool Oracle address.\n\t *\n\t * @param _v1PoolOracleAddress The V1 Pool Oracle address.\n\t */\n\tfunction setV1PoolOracleAddress(address _v1PoolOracleAddress) public onlyOwner {\n\t\trequire(Address.isContract(_v1PoolOracleAddress), \"_v1PoolOracleAddress not a contract\");\n\t\tIV1PoolOracle _v1PoolOracle = IV1PoolOracle(_v1PoolOracleAddress);\n\t\taddress liquidityPool = _v1PoolOracle.liquidityPool();\n\t\trequire(\n\t\t\tILiquidityPoolV1Converter(liquidityPool).reserveTokens(0) == wRBTCAddress ||\n\t\t\t\tILiquidityPoolV1Converter(liquidityPool).reserveTokens(1) == wRBTCAddress,\n\t\t\t\"one of the two reserves needs to be wrbtc\"\n\t\t);\n\t\tv1PoolOracleAddress = _v1PoolOracleAddress;\n\t\temit SetV1PoolOracleAddress(v1PoolOracleAddress, msg.sender);\n\t}\n\n\t/**\n\t * @notice Set the rBtc address. V1 pool based price is BTC, so need to convert the value from v1 pool to USD. That's why we need to get the price of the rBtc\n\t *\n\t * @param _wRBTCAddress The rBTC address\n\t */\n\tfunction setRBTCAddress(address _wRBTCAddress) public onlyOwner {\n\t\trequire(_wRBTCAddress != address(0), \"wRBTC address cannot be zero address\");\n\t\twRBTCAddress = _wRBTCAddress;\n\t\temit SetWRBTCAddress(wRBTCAddress, msg.sender);\n\t}\n\n\t/**\n\t * @notice Set the DoC address. V1 pool based price is BTC, so need to convert the value from v1 pool to USD. That's why we need to get the price of the DoC\n\t *\n\t * @param _docAddress The DoC address\n\t */\n\tfunction setDOCAddress(address _docAddress) public onlyOwner {\n\t\trequire(_docAddress != address(0), \"DOC address cannot be zero address\");\n\t\tdocAddress = _docAddress;\n\t\temit SetDOCAddress(_docAddress, msg.sender);\n\t}\n\n\t/**\n\t * @notice Set the base currency address. That's the reserve address which is not WRBTC\n\t *\n\t * @param _baseCurrency The base currency address\n\t */\n\tfunction setBaseCurrency(address _baseCurrency) public onlyOwner {\n\t\trequire(_baseCurrency != address(0), \"Base currency address cannot be zero address\");\n\t\tbaseCurrency = _baseCurrency;\n\t\temit SetBaseCurrency(_baseCurrency, msg.sender);\n\t}\n}\n"
      },
      "contracts/feeds/PriceFeeds.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"../openzeppelin/SafeMath.sol\";\nimport \"../openzeppelin/Ownable.sol\";\nimport \"../interfaces/IERC20.sol\";\nimport \"./PriceFeedsConstants.sol\";\n\ninterface IPriceFeedsExt {\n\tfunction latestAnswer() external view returns (uint256);\n}\n\n/**\n * @title The Price Feeds contract.\n *\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract queries the price feeds contracts where\n * oracles updates token prices computing relative token prices.\n * And besides it includes some calculations about loans such as\n * drawdown, margin and collateral.\n * */\ncontract PriceFeeds is Constants, Ownable {\n\tusing SafeMath for uint256;\n\n\t/* Events */\n\n\tevent GlobalPricingPaused(address indexed sender, bool indexed isPaused);\n\n\t/* Storage */\n\n\t/// Mapping of PriceFeedsExt instances.\n\t/// token => pricefeed\n\tmapping(address => IPriceFeedsExt) public pricesFeeds;\n\n\t/// Decimals of supported tokens.\n\tmapping(address => uint256) public decimals;\n\n\t/// Value on rBTC weis for the protocol token.\n\tuint256 public protocolTokenEthPrice = 0.0002 ether;\n\n\t/// Flag to pause pricings.\n\tbool public globalPricingPaused = false;\n\n\t/* Functions */\n\n\t/**\n\t * @notice Contract deployment requires 3 parameters.\n\t *\n\t * @param _wrbtcTokenAddress The address of the wrapped wrBTC token.\n\t * @param _protocolTokenAddress The address of the protocol token.\n\t * @param _baseTokenAddress The address of the base token.\n\t * */\n\tconstructor(\n\t\taddress _wrbtcTokenAddress,\n\t\taddress _protocolTokenAddress,\n\t\taddress _baseTokenAddress\n\t) public {\n\t\t/// Set decimals for this token.\n\t\tdecimals[address(0)] = 18;\n\t\tdecimals[_wrbtcTokenAddress] = 18;\n\t\t_setWrbtcToken(_wrbtcTokenAddress);\n\t\t_setProtocolTokenAddress(_protocolTokenAddress);\n\t\t_setBaseToken(_baseTokenAddress);\n\t}\n\n\t/**\n\t * @notice Calculate the price ratio between two tokens.\n\t *\n\t * @dev Public wrapper for _queryRate internal function.\n\t *\n\t * @param sourceToken The address of the source tokens.\n\t * @param destToken The address of the destiny tokens.\n\t *\n\t * @return rate The price ratio source/dest.\n\t * @return precision The ratio precision.\n\t * */\n\tfunction queryRate(address sourceToken, address destToken) public view returns (uint256 rate, uint256 precision) {\n\t\treturn _queryRate(sourceToken, destToken);\n\t}\n\n\t/**\n\t * @notice Calculate the relative precision between two tokens.\n\t *\n\t * @dev Public wrapper for _getDecimalPrecision internal function.\n\t *\n\t * @param sourceToken The address of the source tokens.\n\t * @param destToken The address of the destiny tokens.\n\t *\n\t * @return The precision ratio source/dest.\n\t * */\n\tfunction queryPrecision(address sourceToken, address destToken) public view returns (uint256) {\n\t\treturn sourceToken != destToken ? _getDecimalPrecision(sourceToken, destToken) : 10**18;\n\t}\n\n\t/**\n\t * @notice Price conversor: Calculate the price of an amount of source\n\t * tokens in destiny token units.\n\t *\n\t * @dev NOTE: This function returns 0 during a pause, rather than a revert.\n\t * Ensure calling contracts handle correctly.\n\t *\n\t * @param sourceToken The address of the source tokens.\n\t * @param destToken The address of the destiny tokens.\n\t * @param sourceAmount The amount of the source tokens.\n\t *\n\t * @return destAmount The amount of destiny tokens equivalent in price\n\t *   to the amount of source tokens.\n\t * */\n\tfunction queryReturn(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\tuint256 sourceAmount\n\t) public view returns (uint256 destAmount) {\n\t\tif (globalPricingPaused) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t(uint256 rate, uint256 precision) = _queryRate(sourceToken, destToken);\n\n\t\tdestAmount = sourceAmount.mul(rate).div(precision);\n\t}\n\n\t/**\n\t * @notice Calculate the swap rate between two tokens.\n\t *\n\t * Regarding slippage, there is a hardcoded slippage limit of 5%, enforced\n\t * by this function for all borrowing, lending and margin trading\n\t * originated swaps performed in the Sovryn exchange.\n\t *\n\t * This means all operations in the Sovryn exchange are subject to losing\n\t * up to 5% from the internal swap performed.\n\t *\n\t * @param sourceToken The address of the source tokens.\n\t * @param destToken The address of the destiny tokens.\n\t * @param sourceAmount The amount of source tokens.\n\t * @param destAmount The amount of destiny tokens.\n\t * @param maxSlippage The maximum slippage limit.\n\t *\n\t * @return sourceToDestSwapRate The swap rate between tokens.\n\t * */\n\tfunction checkPriceDisagreement(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\tuint256 sourceAmount,\n\t\tuint256 destAmount,\n\t\tuint256 maxSlippage\n\t) public view returns (uint256 sourceToDestSwapRate) {\n\t\trequire(!globalPricingPaused, \"pricing is paused\");\n\t\t(uint256 rate, uint256 precision) = _queryRate(sourceToken, destToken);\n\n\t\tsourceToDestSwapRate = destAmount.mul(precision).div(sourceAmount);\n\n\t\tif (rate > sourceToDestSwapRate) {\n\t\t\tuint256 spreadValue = rate - sourceToDestSwapRate;\n\t\t\tspreadValue = spreadValue.mul(10**20).div(sourceToDestSwapRate);\n\t\t\trequire(spreadValue <= maxSlippage, \"price disagreement\");\n\t\t}\n\t}\n\n\t/**\n\t * @notice Calculate the rBTC amount equivalent to a given token amount.\n\t * Native coin on RSK is rBTC. This code comes from Ethereum applications,\n\t * so Eth refers to 10**18 weis of native coin, i.e.: 1 rBTC.\n\t *\n\t * @param tokenAddress The address of the token to calculate price.\n\t * @param amount The amount of tokens to calculate price.\n\t *\n\t * @return ethAmount The amount of rBTC equivalent.\n\t * */\n\tfunction amountInEth(address tokenAddress, uint256 amount) public view returns (uint256 ethAmount) {\n\t\t/// Token is wrBTC, amount in rBTC is the same.\n\t\tif (tokenAddress == address(wrbtcToken)) {\n\t\t\tethAmount = amount;\n\t\t} else {\n\t\t\t(uint256 toEthRate, uint256 toEthPrecision) = queryRate(tokenAddress, address(wrbtcToken));\n\t\t\tethAmount = amount.mul(toEthRate).div(toEthPrecision);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Calculate the maximum drawdown of a loan.\n\t *\n\t * A drawdown is commonly defined as the decline from a high peak to a\n\t * pullback low of a specific investment or equity in an account.\n\t *\n\t * Drawdown magnitude refers to the amount of value that a user loses\n\t * during the drawdown period.\n\t *\n\t * @param loanToken The address of the loan token.\n\t * @param collateralToken The address of the collateral token.\n\t * @param loanAmount The amount of the loan.\n\t * @param collateralAmount The amount of the collateral.\n\t * @param margin The relation between the position size and the loan.\n\t *   margin = (total position size - loan) / loan\n\t *\n\t * @return maxDrawdown The maximum drawdown.\n\t * */\n\tfunction getMaxDrawdown(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 loanAmount,\n\t\tuint256 collateralAmount,\n\t\tuint256 margin\n\t) public view returns (uint256 maxDrawdown) {\n\t\tuint256 loanToCollateralAmount;\n\t\tif (collateralToken == loanToken) {\n\t\t\tloanToCollateralAmount = loanAmount;\n\t\t} else {\n\t\t\t(uint256 rate, uint256 precision) = queryRate(loanToken, collateralToken);\n\t\t\tloanToCollateralAmount = loanAmount.mul(rate).div(precision);\n\t\t}\n\n\t\tuint256 combined = loanToCollateralAmount.add(loanToCollateralAmount.mul(margin).div(10**20));\n\n\t\tmaxDrawdown = collateralAmount > combined ? collateralAmount - combined : 0;\n\t}\n\n\t/**\n\t * @notice Calculate the margin and the collateral on rBTC.\n\t *\n\t * @param loanToken The address of the loan token.\n\t * @param collateralToken The address of the collateral token.\n\t * @param loanAmount The amount of the loan.\n\t * @param collateralAmount The amount of the collateral.\n\t *\n\t * @return currentMargin The margin of the loan.\n\t * @return collateralInEthAmount The amount of collateral on rBTC.\n\t * */\n\tfunction getCurrentMarginAndCollateralSize(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 loanAmount,\n\t\tuint256 collateralAmount\n\t) public view returns (uint256 currentMargin, uint256 collateralInEthAmount) {\n\t\t(currentMargin, ) = getCurrentMargin(loanToken, collateralToken, loanAmount, collateralAmount);\n\n\t\tcollateralInEthAmount = amountInEth(collateralToken, collateralAmount);\n\t}\n\n\t/**\n\t * @notice Calculate the margin of a loan.\n\t *\n\t * @dev current margin = (total position size - loan) / loan\n\t * The collateral amount passed as parameter equals the total position size.\n\t *\n\t * @param loanToken The address of the loan token.\n\t * @param collateralToken The address of the collateral token.\n\t * @param loanAmount The amount of the loan.\n\t * @param collateralAmount The amount of the collateral.\n\t *\n\t * @return currentMargin The margin of the loan.\n\t * @return collateralToLoanRate The price ratio between collateral and\n\t *   loan tokens.\n\t * */\n\tfunction getCurrentMargin(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 loanAmount,\n\t\tuint256 collateralAmount\n\t) public view returns (uint256 currentMargin, uint256 collateralToLoanRate) {\n\t\tuint256 collateralToLoanAmount;\n\t\tif (collateralToken == loanToken) {\n\t\t\tcollateralToLoanAmount = collateralAmount;\n\t\t\tcollateralToLoanRate = 10**18;\n\t\t} else {\n\t\t\tuint256 collateralToLoanPrecision;\n\t\t\t(collateralToLoanRate, collateralToLoanPrecision) = queryRate(collateralToken, loanToken);\n\n\t\t\tcollateralToLoanRate = collateralToLoanRate.mul(10**18).div(collateralToLoanPrecision);\n\n\t\t\tcollateralToLoanAmount = collateralAmount.mul(collateralToLoanRate).div(10**18);\n\t\t}\n\n\t\tif (loanAmount != 0 && collateralToLoanAmount >= loanAmount) {\n\t\t\treturn (collateralToLoanAmount.sub(loanAmount).mul(10**20).div(loanAmount), collateralToLoanRate);\n\t\t} else {\n\t\t\treturn (0, collateralToLoanRate);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Get assessment about liquidating a loan.\n\t *\n\t * @param loanToken The address of the loan token.\n\t * @param collateralToken The address of the collateral token.\n\t * @param loanAmount The amount of the loan.\n\t * @param collateralAmount The amount of the collateral.\n\t * @param maintenanceMargin The minimum margin before liquidation.\n\t *\n\t * @return True/false to liquidate the loan.\n\t * */\n\tfunction shouldLiquidate(\n\t\taddress loanToken,\n\t\taddress collateralToken,\n\t\tuint256 loanAmount,\n\t\tuint256 collateralAmount,\n\t\tuint256 maintenanceMargin\n\t) public view returns (bool) {\n\t\t(uint256 currentMargin, ) = getCurrentMargin(loanToken, collateralToken, loanAmount, collateralAmount);\n\n\t\treturn currentMargin <= maintenanceMargin;\n\t}\n\n\t/*\n\t * Owner functions\n\t */\n\n\t/**\n\t * @notice Set new value for protocolTokenEthPrice\n\t *\n\t * @param newPrice The new value for protocolTokenEthPrice\n\t * */\n\tfunction setProtocolTokenEthPrice(uint256 newPrice) external onlyOwner {\n\t\trequire(newPrice != 0, \"invalid price\");\n\t\tprotocolTokenEthPrice = newPrice;\n\t}\n\n\t/**\n\t * @notice Populate pricesFeeds mapping w/ values from feeds[]\n\t *\n\t * @param tokens The array of tokens to loop and get addresses.\n\t * @param feeds The array of contract instances for every token.\n\t * */\n\tfunction setPriceFeed(address[] calldata tokens, IPriceFeedsExt[] calldata feeds) external onlyOwner {\n\t\trequire(tokens.length == feeds.length, \"count mismatch\");\n\n\t\tfor (uint256 i = 0; i < tokens.length; i++) {\n\t\t\tpricesFeeds[tokens[i]] = feeds[i];\n\t\t}\n\t}\n\n\t/**\n\t * @notice Populate decimals mapping w/ values from tokens[].decimals\n\t *\n\t * @param tokens The array of tokens to loop and get values from.\n\t * */\n\tfunction setDecimals(IERC20[] calldata tokens) external onlyOwner {\n\t\tfor (uint256 i = 0; i < tokens.length; i++) {\n\t\t\tdecimals[address(tokens[i])] = tokens[i].decimals();\n\t\t}\n\t}\n\n\t/**\n\t * @notice Set flag globalPricingPaused\n\t *\n\t * @param isPaused The new status of pause (true/false).\n\t * */\n\tfunction setGlobalPricingPaused(bool isPaused) external onlyOwner {\n\t\tif (globalPricingPaused != isPaused) {\n\t\t\tglobalPricingPaused = isPaused;\n\n\t\t\temit GlobalPricingPaused(msg.sender, isPaused);\n\t\t}\n\t}\n\n\t/*\n\t * Internal functions\n\t */\n\n\t/**\n\t * @notice Calculate the price ratio between two tokens.\n\t *\n\t * @param sourceToken The address of the source tokens.\n\t * @param destToken The address of the destiny tokens.\n\t *\n\t * @return rate The price ratio source/dest.\n\t * @return precision The ratio precision.\n\t * */\n\tfunction _queryRate(address sourceToken, address destToken) internal view returns (uint256 rate, uint256 precision) {\n\t\trequire(!globalPricingPaused, \"pricing is paused\");\n\n\t\t/// Different tokens, query prices and perform division.\n\t\tif (sourceToken != destToken) {\n\t\t\tuint256 sourceRate;\n\t\t\tif (sourceToken != address(baseToken) && sourceToken != protocolTokenAddress) {\n\t\t\t\tIPriceFeedsExt _sourceFeed = pricesFeeds[sourceToken];\n\t\t\t\trequire(address(_sourceFeed) != address(0), \"unsupported src feed\");\n\n\t\t\t\t/// Query token price on priceFeedsExt instance.\n\t\t\t\tsourceRate = _sourceFeed.latestAnswer();\n\t\t\t\trequire(sourceRate != 0 && (sourceRate >> 128) == 0, \"price error\");\n\t\t\t} else {\n\t\t\t\tsourceRate = sourceToken == protocolTokenAddress ? protocolTokenEthPrice : 10**18;\n\t\t\t}\n\n\t\t\tuint256 destRate;\n\t\t\tif (destToken != address(baseToken) && destToken != protocolTokenAddress) {\n\t\t\t\tIPriceFeedsExt _destFeed = pricesFeeds[destToken];\n\t\t\t\trequire(address(_destFeed) != address(0), \"unsupported dst feed\");\n\n\t\t\t\t/// Query token price on priceFeedsExt instance.\n\t\t\t\tdestRate = _destFeed.latestAnswer();\n\t\t\t\trequire(destRate != 0 && (destRate >> 128) == 0, \"price error\");\n\t\t\t} else {\n\t\t\t\tdestRate = destToken == protocolTokenAddress ? protocolTokenEthPrice : 10**18;\n\t\t\t}\n\n\t\t\trate = sourceRate.mul(10**18).div(destRate);\n\n\t\t\tprecision = _getDecimalPrecision(sourceToken, destToken);\n\n\t\t\t/// Same tokens, return 1 with decimals.\n\t\t} else {\n\t\t\trate = 10**18;\n\t\t\tprecision = 10**18;\n\t\t}\n\t}\n\n\t/**\n\t * @notice Calculate the relative precision between two tokens.\n\t *\n\t * @param sourceToken The address of the source tokens.\n\t * @param destToken The address of the destiny tokens.\n\t *\n\t * @return The precision ratio source/dest.\n\t * */\n\tfunction _getDecimalPrecision(address sourceToken, address destToken) internal view returns (uint256) {\n\t\t/// Same tokens, return 1 with decimals.\n\t\tif (sourceToken == destToken) {\n\t\t\treturn 10**18;\n\n\t\t\t/// Different tokens, query ERC20 precisions and return 18 +- diff.\n\t\t} else {\n\t\t\tuint256 sourceTokenDecimals = decimals[sourceToken];\n\t\t\tif (sourceTokenDecimals == 0) sourceTokenDecimals = IERC20(sourceToken).decimals();\n\n\t\t\tuint256 destTokenDecimals = decimals[destToken];\n\t\t\tif (destTokenDecimals == 0) destTokenDecimals = IERC20(destToken).decimals();\n\n\t\t\tif (destTokenDecimals >= sourceTokenDecimals) return 10**(SafeMath.sub(18, destTokenDecimals - sourceTokenDecimals));\n\t\t\telse return 10**(SafeMath.add(18, sourceTokenDecimals - destTokenDecimals));\n\t\t}\n\t}\n}\n"
      },
      "contracts/feeds/IV1PoolOracle.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\n\ninterface IV1PoolOracle {\n\tfunction read(uint256 price, uint256 timestamp)\n\t\texternal\n\t\tview\n\t\treturns (\n\t\t\tuint256,\n\t\t\tuint256,\n\t\t\tuint256,\n\t\t\tuint256,\n\t\t\tuint256,\n\t\t\tuint256\n\t\t);\n\n\tfunction latestAnswer() external view returns (uint256);\n\n\tfunction liquidityPool() external view returns (address);\n\n\tfunction latestPrice(address _baseToken) external view returns (uint256 answer);\n}\n\ninterface ILiquidityPoolV1Converter {\n\tfunction reserveTokens(uint256 index) external view returns (address);\n}\n"
      },
      "contracts/feeds/USDTPriceFeed.sol": {
        "content": "pragma solidity 0.5.17;\n\nimport \"./PriceFeeds.sol\";\n\n/**\n * @notice The Price Feed USDT contract.\n *\n * This contract implements USDT query functionality,\n * getting the price and the last timestamp from a\n * trivial formula, always returning 1 and now.\n * */\ncontract USDTPriceFeed is IPriceFeedsExt {\n\tuint256 private constant USDT_RATE = 1 ether;\n\n\t/**\n\t * @notice Get the USDT price.\n\t *\n\t * @return Always returns the trivial rate of 1.\n\t * */\n\tfunction latestAnswer() external view returns (uint256) {\n\t\treturn USDT_RATE;\n\t}\n\n\t/**\n\t * @notice Get the las time the price was updated.\n\t * @return Always trivial current block's timestamp.\n\t */\n\tfunction latestTimestamp() external view returns (uint256) {\n\t\treturn now;\n\t}\n}\n"
      },
      "contracts/feeds/testnet/PriceFeedsMoC.sol": {
        "content": "pragma solidity 0.5.17;\n\nimport \"../PriceFeeds.sol\";\nimport \"../IRSKOracle.sol\";\nimport \"../../openzeppelin/Address.sol\";\n\ninterface Medianizer {\n\tfunction peek() external view returns (bytes32, bool);\n}\n\n/**\n * @title Price Feed of MoC (Money on Chain) contract.\n *\n * This contract contains the logic to set MoC oracles\n * and query last price update.\n * */\ncontract PriceFeedsMoC is IPriceFeedsExt, Ownable {\n\t/* Storage */\n\n\taddress public mocOracleAddress;\n\taddress public rskOracleAddress;\n\n\t/* Events */\n\n\tevent SetMoCOracleAddress(address indexed mocOracleAddress, address changerAddress);\n\tevent SetRSKOracleAddress(address indexed rskOracleAddress, address changerAddress);\n\n\t/* Functions */\n\n\t/**\n\t * @notice Initialize a new MoC Oracle.\n\t *\n\t * @param _mocOracleAddress The MoC Oracle address.\n\t * @param _rskOracleAddress The RSK Oracle address.\n\t * */\n\tconstructor(address _mocOracleAddress, address _rskOracleAddress) public {\n\t\tsetMoCOracleAddress(_mocOracleAddress);\n\t\tsetRSKOracleAddress(_rskOracleAddress);\n\t}\n\n\t/**\n\t * @notice Get the las time oracle updated the price.\n\t * @return The latest time.\n\t */\n\tfunction latestAnswer() external view returns (uint256) {\n\t\t(bytes32 value, bool hasValue) = Medianizer(mocOracleAddress).peek();\n\t\tif (hasValue) {\n\t\t\treturn uint256(value);\n\t\t} else {\n\t\t\t(uint256 price, ) = IRSKOracle(rskOracleAddress).getPricing();\n\t\t\treturn price;\n\t\t}\n\t}\n\n\t/**\n\t * @notice Set the MoC Oracle address.\n\t *\n\t * @param _mocOracleAddress The MoC Oracle address.\n\t */\n\tfunction setMoCOracleAddress(address _mocOracleAddress) public onlyOwner {\n\t\trequire(Address.isContract(_mocOracleAddress), \"_mocOracleAddress not a contract\");\n\t\tmocOracleAddress = _mocOracleAddress;\n\t\temit SetMoCOracleAddress(mocOracleAddress, msg.sender);\n\t}\n\n\t/**\n\t * @notice Set the RSK Oracle address.\n\t *\n\t * @param _rskOracleAddress The RSK Oracle address.\n\t */\n\tfunction setRSKOracleAddress(address _rskOracleAddress) public onlyOwner {\n\t\trequire(Address.isContract(_rskOracleAddress), \"_rskOracleAddress not a contract\");\n\t\trskOracleAddress = _rskOracleAddress;\n\t\temit SetRSKOracleAddress(rskOracleAddress, msg.sender);\n\t}\n}\n"
      },
      "contracts/feeds/IRSKOracle.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\n\ninterface IRSKOracle {\n\tfunction updatePrice(uint256 price, uint256 timestamp) external;\n\n\tfunction getPricing() external view returns (uint256, uint256);\n\n\tfunction setOracleAddress(address addr) external;\n\n\tfunction clearOracleAddress() external;\n}\n"
      },
      "contracts/mockup/PriceFeedsMoCMockup.sol": {
        "content": "pragma solidity 0.5.17;\n\nimport \"../feeds/testnet/PriceFeedsMoC.sol\";\n\n// This contract is only for test purposes\n// https://github.com/money-on-chain/Amphiraos-Oracle/blob/master/contracts/medianizer/medianizer.sol\ncontract PriceFeedsMoCMockup is Medianizer {\n\tuint256 public value;\n\tbool public has;\n\n\tfunction peek() external view returns (bytes32, bool) {\n\t\treturn (bytes32(value), has);\n\t}\n\n\tfunction setValue(uint256 _value) public {\n\t\tvalue = _value;\n\t}\n\n\tfunction setHas(bool _has) public {\n\t\thas = _has;\n\t}\n}\n"
      },
      "contracts/feeds/PriceFeedRSKOracle.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\n\nimport \"./PriceFeeds.sol\";\nimport \"./IRSKOracle.sol\";\nimport \"../openzeppelin/Ownable.sol\";\nimport \"../openzeppelin/Address.sol\";\n\n/**\n * @notice The Price Feed RSK Oracle contract.\n *\n * This contract implements RSK Oracle query functionality,\n * getting the price and the last timestamp from an external oracle contract.\n * */\ncontract PriceFeedRSKOracle is IPriceFeedsExt, Ownable {\n\t/* Storage */\n\n\taddress public rskOracleAddress;\n\n\t/* Events */\n\n\tevent SetRSKOracleAddress(address indexed rskOracleAddress, address changerAddress);\n\n\t/* Functions */\n\n\t/**\n\t * @notice Initialize a new RSK Oracle.\n\t *\n\t * @param _rskOracleAddress The RSK Oracle address.\n\t * */\n\tconstructor(address _rskOracleAddress) public {\n\t\tsetRSKOracleAddress(_rskOracleAddress);\n\t}\n\n\t/**\n\t * @notice Get the oracle price.\n\t * @return The price from Oracle.\n\t * */\n\tfunction latestAnswer() external view returns (uint256 _price) {\n\t\tIRSKOracle _rskOracle = IRSKOracle(rskOracleAddress);\n\t\t(_price, ) = _rskOracle.getPricing();\n\t}\n\n\t/**\n\t * @notice Get the las time oracle updated the price.\n\t * @return The latest time.\n\t */\n\tfunction latestTimestamp() external view returns (uint256 _timestamp) {\n\t\tIRSKOracle _rskOracle = IRSKOracle(rskOracleAddress);\n\t\t(, _timestamp) = _rskOracle.getPricing();\n\t}\n\n\t/**\n\t * @notice Set the RSK Oracle address.\n\t *\n\t * @param _rskOracleAddress The RSK Oracle address.\n\t */\n\tfunction setRSKOracleAddress(address _rskOracleAddress) public onlyOwner {\n\t\trequire(Address.isContract(_rskOracleAddress), \"_rskOracleAddress not a contract\");\n\t\trskOracleAddress = _rskOracleAddress;\n\t\temit SetRSKOracleAddress(rskOracleAddress, msg.sender);\n\t}\n}\n"
      },
      "contracts/feeds/testnet/PriceFeedsLocal.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity 0.5.17;\n\nimport \"../PriceFeeds.sol\";\n\n/**\n * @title Price Feeds Local contract.\n *\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\n * margin trading and lending https://bzx.network similar to the dYdX protocol.\n *\n * This contract contains the logic of setting and getting rates between two tokens.\n * */\ncontract PriceFeedsLocal is PriceFeeds {\n\tmapping(address => mapping(address => uint256)) public rates;\n\n\t/// uint256 public slippageMultiplier = 100 ether;\n\n\t/**\n\t * @notice Deploy local price feed contract.\n\t *\n\t * @param _wrbtcTokenAddress The address of the wrBTC instance.\n\t * @param _protocolTokenAddress The address of the protocol token instance.\n\t * */\n\tconstructor(address _wrbtcTokenAddress, address _protocolTokenAddress)\n\t\tpublic\n\t\tPriceFeeds(_wrbtcTokenAddress, _protocolTokenAddress, _wrbtcTokenAddress)\n\t{}\n\n\t/**\n\t * @notice Calculate the price ratio between two tokens.\n\t *\n\t * @param sourceToken The address of the source tokens.\n\t * @param destToken The address of the destiny tokens.\n\t *\n\t * @return rate The price ratio source/dest.\n\t * @return precision The ratio precision.\n\t * */\n\tfunction _queryRate(address sourceToken, address destToken) internal view returns (uint256 rate, uint256 precision) {\n\t\trequire(!globalPricingPaused, \"pricing is paused\");\n\n\t\tif (sourceToken == destToken) {\n\t\t\trate = 10**18;\n\t\t\tprecision = 10**18;\n\t\t} else {\n\t\t\tif (sourceToken == protocolTokenAddress) {\n\t\t\t\t/// Hack for testnet; only returns price in rBTC.\n\t\t\t\trate = protocolTokenEthPrice;\n\t\t\t} else if (destToken == protocolTokenAddress) {\n\t\t\t\t/// Hack for testnet; only returns price in rBTC.\n\t\t\t\trate = SafeMath.div(10**36, protocolTokenEthPrice);\n\t\t\t} else {\n\t\t\t\tif (rates[sourceToken][destToken] != 0) {\n\t\t\t\t\trate = rates[sourceToken][destToken];\n\t\t\t\t} else {\n\t\t\t\t\tuint256 sourceToEther = rates[sourceToken][address(wrbtcToken)] != 0 ? rates[sourceToken][address(wrbtcToken)] : 10**18;\n\t\t\t\t\tuint256 etherToDest = rates[address(wrbtcToken)][destToken] != 0 ? rates[address(wrbtcToken)][destToken] : 10**18;\n\n\t\t\t\t\trate = sourceToEther.mul(etherToDest).div(10**18);\n\t\t\t\t}\n\t\t\t}\n\t\t\tprecision = _getDecimalPrecision(sourceToken, destToken);\n\t\t}\n\t}\n\n\t/**\n\t * @notice Owner set price ratio between two tokens.\n\t *\n\t * @param sourceToken The address of the source tokens.\n\t * @param destToken The address of the destiny tokens.\n\t * @param rate The price ratio source/dest.\n\t * */\n\tfunction setRates(\n\t\taddress sourceToken,\n\t\taddress destToken,\n\t\tuint256 rate\n\t) public onlyOwner {\n\t\tif (sourceToken != destToken) {\n\t\t\trates[sourceToken][destToken] = rate;\n\t\t\trates[destToken][sourceToken] = SafeMath.div(10**36, rate);\n\t\t}\n\t}\n\n\t/*function setSlippageMultiplier(\n        uint256 _slippageMultiplier)\n        public\n        onlyOwner\n    {\n        require (slippageMultiplier != _slippageMultiplier && _slippageMultiplier <= 100 ether);\n        slippageMultiplier = _slippageMultiplier;\n    }*/\n}\n"
      },
      "contracts/feeds/BProPriceFeed.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\n\nimport \"./PriceFeeds.sol\";\nimport \"./IMoCState.sol\";\nimport \"../openzeppelin/Ownable.sol\";\nimport \"../openzeppelin/Address.sol\";\n\n/**\n * @title The BPro Price Feed contract.\n *\n * This contract gets/sets the MoC (Money on Chain) address of its state\n * contract and queries its method bproUsdPrice to get bPro/USD valuation.\n * */\ncontract BProPriceFeed is IPriceFeedsExt, Ownable {\n\taddress public mocStateAddress;\n\n\tevent SetMoCStateAddress(address indexed mocStateAddress, address changerAddress);\n\n\t/**\n\t * @notice Initializes a new MoC state.\n\t *\n\t * @param _mocStateAddress MoC state address\n\t * */\n\tconstructor(address _mocStateAddress) public {\n\t\tsetMoCStateAddress(_mocStateAddress);\n\t}\n\n\t/**\n\t * @notice Get BPro USD price.\n\t *\n\t * @return the BPro USD Price [using mocPrecision]\n\t */\n\tfunction latestAnswer() external view returns (uint256) {\n\t\tIMoCState _mocState = IMoCState(mocStateAddress);\n\t\treturn _mocState.bproUsdPrice();\n\t}\n\n\t/**\n\t * @notice Supposed to get the MoC update time, but instead\n\t * get the current timestamp.\n\t *\n\t * @return Always returns current block's timestamp.\n\t * */\n\tfunction latestTimestamp() external view returns (uint256) {\n\t\treturn now; /// MoC state doesn't return update timestamp.\n\t}\n\n\t/**\n\t * @notice Set MoC state address.\n\t *\n\t * @param _mocStateAddress The MoC state address.\n\t * */\n\tfunction setMoCStateAddress(address _mocStateAddress) public onlyOwner {\n\t\trequire(Address.isContract(_mocStateAddress), \"_mocStateAddress not a contract\");\n\t\tmocStateAddress = _mocStateAddress;\n\t\temit SetMoCStateAddress(mocStateAddress, msg.sender);\n\t}\n}\n"
      },
      "contracts/feeds/IMoCState.sol": {
        "content": "pragma solidity >=0.5.0 <0.6.0;\n\ninterface IMoCState {\n\tfunction getRbtcInBitPro(bytes32 bucket) external view returns (uint256);\n\n\tfunction globalMaxBPro() external view returns (uint256);\n\n\tfunction maxBPro(bytes32 bucket) external view returns (uint256);\n\n\tfunction absoluteMaxBPro() external view returns (uint256);\n\n\tfunction maxBProWithDiscount() external view returns (uint256);\n\n\tfunction bproTecPrice() external view returns (uint256);\n\n\tfunction bucketBProTecPrice(bytes32 bucket) external view returns (uint256);\n\n\tfunction bproDiscountPrice() external view returns (uint256);\n\n\tfunction bproUsdPrice() external view returns (uint256);\n\n\tfunction bproSpotDiscountRate() external view returns (uint256);\n\n\tfunction getBucketNBPro(bytes32 bucket) external view returns (uint256);\n}\n"
      },
      "contracts/mockup/LockedSOVMockup.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../openzeppelin/SafeMath.sol\";\nimport \"../interfaces/IERC20.sol\";\n\n/**\n *  @title An mockup for the Locked SOV Contract.\n *  @author Franklin Richards - powerhousefrank@protonmail.com\n *  @dev This is not a complete mockup of the Locked SOV Contract.\n */\ncontract LockedSOVMockup {\n\tusing SafeMath for uint256;\n\n\t/* Storage */\n\n\t/// @notice The SOV token contract.\n\tIERC20 public SOV;\n\n\t/// @notice The locked user balances.\n\tmapping(address => uint256) lockedBalances;\n\t/// @notice The unlocked user balances.\n\tmapping(address => uint256) unlockedBalances;\n\t/// @notice The contracts/wallets with admin power.\n\tmapping(address => bool) isAdmin;\n\n\t/* Events */\n\n\t/// @notice Emitted when a new Admin is added to the admin list.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _newAdmin The address of the new admin.\n\tevent AdminAdded(address indexed _initiator, address indexed _newAdmin);\n\n\t/// @notice Emitted when an admin is removed from the admin list.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _removedAdmin The address of the removed admin.\n\tevent AdminRemoved(address indexed _initiator, address indexed _removedAdmin);\n\n\tevent Deposited(address indexed _initiator, address indexed _userAddress, uint256 _sovAmount, uint256 _basisPoint);\n\n\tevent Withdrawn(address indexed _initiator, address indexed _userAddress, uint256 _sovAmount);\n\n\tevent TokensStaked(address indexed _initiator, address indexed _vesting, uint256 _amount);\n\n\t/* Modifiers */\n\n\tmodifier onlyAdmin {\n\t\trequire(isAdmin[msg.sender], \"Only admin can call this.\");\n\t\t_;\n\t}\n\n\t/* Functions */\n\n\t/**\n\t * @notice Setup the required parameters.\n\t * @param _SOV The SOV token address.\n\t * @param _admins The list of admins to be added.\n\t */\n\tconstructor(address _SOV, address[] memory _admins) public {\n\t\trequire(_SOV != address(0), \"Invalid SOV Address.\");\n\t\tSOV = IERC20(_SOV);\n\t\tfor (uint256 index = 0; index < _admins.length; index++) {\n\t\t\tisAdmin[_admins[index]] = true;\n\t\t}\n\t}\n\n\t/**\n\t * @notice The function to add a new admin.\n\t * @param _newAdmin The address of the new admin.\n\t */\n\tfunction addAdmin(address _newAdmin) public onlyAdmin {\n\t\trequire(_newAdmin != address(0), \"Invalid Address\");\n\t\trequire(!isAdmin[_newAdmin], \"Address is already admin\");\n\t\tisAdmin[_newAdmin] = true;\n\n\t\temit AdminAdded(msg.sender, _newAdmin);\n\t}\n\n\t/**\n\t * @notice The function to remove an admin.\n\t * @param _adminToRemove The address of the admin which should be removed.\n\t */\n\tfunction removeAdmin(address _adminToRemove) public onlyAdmin {\n\t\trequire(isAdmin[_adminToRemove], \"Address is not an admin\");\n\t\tisAdmin[_adminToRemove] = false;\n\n\t\temit AdminRemoved(msg.sender, _adminToRemove);\n\t}\n\n\t/**\n\t * @notice Adds SOV to the user balance (Locked and Unlocked Balance based on `_basisPoint`).\n\t * @param _userAddress The user whose locked balance has to be updated with `_sovAmount`.\n\t * @param _sovAmount The amount of SOV to be added to the locked and/or unlocked balance.\n\t * @param _basisPoint The % (in Basis Point)which determines how much will be unlocked immediately.\n\t */\n\tfunction deposit(\n\t\taddress _userAddress,\n\t\tuint256 _sovAmount,\n\t\tuint256 _basisPoint\n\t) external {\n\t\t_deposit(_userAddress, _sovAmount, _basisPoint);\n\t}\n\n\t/**\n\t * @notice Adds SOV to the locked balance of a user.\n\t * @param _userAddress The user whose locked balance has to be updated with _sovAmount.\n\t * @param _sovAmount The amount of SOV to be added to the locked balance.\n\t * @dev This is here because there are dependency with other contracts.\n\t */\n\tfunction depositSOV(address _userAddress, uint256 _sovAmount) external {\n\t\t_deposit(_userAddress, _sovAmount, 0);\n\t}\n\n\tfunction _deposit(\n\t\taddress _userAddress,\n\t\tuint256 _sovAmount,\n\t\tuint256 _basisPoint\n\t) private {\n\t\t// 10000 is not included because if 100% is unlocked, then LockedSOV is not required to be used.\n\t\trequire(_basisPoint < 10000, \"Basis Point has to be less than 10000.\");\n\t\tbool txStatus = SOV.transferFrom(msg.sender, address(this), _sovAmount);\n\t\trequire(txStatus, \"Token transfer was not successful. Check receiver address.\");\n\n\t\tuint256 unlockedBal = _sovAmount.mul(_basisPoint).div(10000);\n\n\t\tunlockedBalances[_userAddress] = unlockedBalances[_userAddress].add(unlockedBal);\n\t\tlockedBalances[_userAddress] = lockedBalances[_userAddress].add(_sovAmount).sub(unlockedBal);\n\n\t\temit Deposited(msg.sender, _userAddress, _sovAmount, _basisPoint);\n\t}\n\n\t/**\n\t * @notice Withdraws unlocked tokens and Stakes Locked tokens for a user who already have a vesting created.\n\t * @param _userAddress The address of user tokens will be withdrawn.\n\t */\n\tfunction withdrawAndStakeTokensFrom(address _userAddress) external {\n\t\t_withdraw(_userAddress, _userAddress);\n\t\t_createVestingAndStake(_userAddress);\n\t}\n\n\tfunction _withdraw(address _sender, address _receiverAddress) private {\n\t\taddress userAddr = _receiverAddress;\n\t\tif (_receiverAddress == address(0)) {\n\t\t\tuserAddr = _sender;\n\t\t}\n\n\t\tuint256 amount = unlockedBalances[_sender];\n\t\tunlockedBalances[_sender] = 0;\n\n\t\tbool txStatus = SOV.transfer(userAddr, amount);\n\t\trequire(txStatus, \"Token transfer was not successful. Check receiver address.\");\n\n\t\temit Withdrawn(_sender, userAddr, amount);\n\t}\n\n\tfunction _createVestingAndStake(address _sender) private {\n\t\tuint256 amount = lockedBalances[_sender];\n\t\tlockedBalances[_sender] = 0;\n\n\t\temit TokensStaked(_sender, address(0), amount);\n\t}\n\n\t/**\n\t * @notice The function to get the locked balance of a user.\n\t * @param _addr The address of the user to check the locked balance.\n\t * @return _balance The locked balance of the address `_addr`.\n\t */\n\tfunction getLockedBalance(address _addr) public view returns (uint256 _balance) {\n\t\treturn lockedBalances[_addr];\n\t}\n\n\t/**\n\t * @notice The function to get the unlocked balance of a user.\n\t * @param _addr The address of the user to check the unlocked balance.\n\t * @return _balance The unlocked balance of the address `_addr`.\n\t */\n\tfunction getUnlockedBalance(address _addr) external view returns (uint256 _balance) {\n\t\treturn unlockedBalances[_addr];\n\t}\n}\n"
      },
      "contracts/mockup/lockedSOVFailedMockup.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../openzeppelin/SafeMath.sol\";\nimport \"../interfaces/IERC20.sol\";\n\n/**\n *  @title An interface for the Locked SOV Contract.\n *  @author Franklin Richards - powerhousefrank@protonmail.com\n *  @dev This is not a complete interface of the Locked SOV Contract.\n */\ncontract LockedSOVFailedMockup {\n\tusing SafeMath for uint256;\n\n\t/* Storage */\n\n\t/// @notice The SOV token contract.\n\tIERC20 public SOV;\n\n\t/// @notice The user balances.\n\tmapping(address => uint256) lockedBalances;\n\t/// @notice The user balances.\n\tmapping(address => bool) isAdmin;\n\n\t/* Events */\n\n\t/// @notice Emitted when a new Admin is added to the admin list.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _newAdmin The address of the new admin.\n\tevent AdminAdded(address indexed _initiator, address indexed _newAdmin);\n\n\t/// @notice Emitted when an admin is removed from the admin list.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _removedAdmin The address of the removed admin.\n\tevent AdminRemoved(address indexed _initiator, address indexed _removedAdmin);\n\n\t/* Modifiers */\n\n\tmodifier onlyAdmin {\n\t\trequire(isAdmin[msg.sender], \"Only admin can call this.\");\n\t\t_;\n\t}\n\n\t/* Functions */\n\n\t/**\n\t * @notice Setup the required parameters.\n\t * @param _SOV The SOV token address.\n\t * @param _admins The list of admins to be added.\n\t */\n\tconstructor(address _SOV, address[] memory _admins) public {\n\t\trequire(_SOV != address(0), \"Invalid SOV Address.\");\n\t\tSOV = IERC20(_SOV);\n\t\tfor (uint256 index = 0; index < _admins.length; index++) {\n\t\t\tisAdmin[_admins[index]] = true;\n\t\t}\n\t}\n\n\t/**\n\t * @notice The function to add a new admin.\n\t * @param _newAdmin The address of the new admin.\n\t */\n\tfunction addAdmin(address _newAdmin) public onlyAdmin {\n\t\trequire(_newAdmin != address(0), \"Invalid Address\");\n\t\trequire(!isAdmin[_newAdmin], \"Address is already admin\");\n\t\tisAdmin[_newAdmin] = true;\n\n\t\temit AdminAdded(msg.sender, _newAdmin);\n\t}\n\n\t/**\n\t * @notice The function to remove an admin.\n\t * @param _adminToRemove The address of the admin which should be removed.\n\t */\n\tfunction removeAdmin(address _adminToRemove) public onlyAdmin {\n\t\trequire(isAdmin[_adminToRemove], \"Address is not an admin\");\n\t\tisAdmin[_adminToRemove] = false;\n\n\t\temit AdminRemoved(msg.sender, _adminToRemove);\n\t}\n\n\t/**\n\t * @notice Adds SOV to the locked balance of a user.\n\t * @param _userAddress The user whose locked balance has to be updated with _sovAmount.\n\t * @param _sovAmount The amount of SOV to be added to the locked balance.\n\t */\n\tfunction depositSOV(address _userAddress, uint256 _sovAmount) external {\n\t\trevert(\"For testing purposes\");\n\t\tbool txStatus = SOV.transferFrom(msg.sender, address(this), _sovAmount);\n\t\trequire(txStatus, \"Token transfer was not successful. Check receiver address.\");\n\n\t\tlockedBalances[_userAddress] = lockedBalances[_userAddress].add(_sovAmount);\n\t}\n\n\t/**\n\t * @notice The function to get the locked balance of a user.\n\t * @param _addr The address of the user to check the locked balance.\n\t * @return _balance The locked balance of the address `_addr`.\n\t */\n\tfunction getLockedBalance(address _addr) public view returns (uint256 _balance) {\n\t\treturn lockedBalances[_addr];\n\t}\n}\n"
      },
      "contracts/mockup/LiquidityPoolV1ConverterMockup.sol": {
        "content": "pragma solidity 0.5.17;\n\nimport \"../interfaces/IERC20.sol\";\n\ncontract LiquidityPoolV1ConverterMockup {\n\tIERC20[] public reserveTokens;\n\n\tconstructor(IERC20 _token0, IERC20 _token1) public {\n\t\treserveTokens.push(_token0);\n\t\treserveTokens.push(_token1);\n\t}\n}\n"
      },
      "contracts/interfaces/IChai.sol": {
        "content": "/**\n * Copyright 2017-2021, bZeroX, LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0.\n */\n\npragma solidity >=0.5.0 <0.6.0;\n\nimport \"./IERC20.sol\";\n\ninterface IPot {\n\tfunction dsr() external view returns (uint256);\n\n\tfunction chi() external view returns (uint256);\n\n\tfunction rho() external view returns (uint256);\n}\n\ncontract IChai is IERC20 {\n\tfunction move(\n\t\taddress src,\n\t\taddress dst,\n\t\tuint256 wad\n\t) external returns (bool);\n\n\tfunction join(address dst, uint256 wad) external;\n\n\tfunction draw(address src, uint256 wad) external;\n\n\tfunction exit(address src, uint256 wad) external;\n}\n"
      },
      "contracts/governance/Vesting/DevelopmentFund.sol": {
        "content": "pragma solidity ^0.5.17;\n\nimport \"../../openzeppelin/SafeMath.sol\";\nimport \"../../interfaces/IERC20.sol\";\n\n/**\n *  @title A holding contract for Sovryn Development Fund.\n *  @author Franklin Richards\n *  @notice You can use this contract for timed token release from Dev Fund.\n */\ncontract DevelopmentFund {\n\tusing SafeMath for uint256;\n\n\t/* Storage */\n\n\t/// @notice The SOV token contract.\n\tIERC20 public SOV;\n\n\t/// @notice The current contract status.\n\tenum Status { Deployed, Active, Expired }\n\tStatus public status;\n\n\t/// @notice The owner of the locked tokens (usually Governance).\n\taddress public lockedTokenOwner;\n\t/// @notice The owner of the unlocked tokens (usually MultiSig).\n\taddress public unlockedTokenOwner;\n\t/// @notice The emergency transfer wallet/contract.\n\taddress public safeVault;\n\t/// @notice The new locked token owner waiting to be approved.\n\taddress public newLockedTokenOwner;\n\n\t/// @notice The last token release timestamp or the time of contract creation.\n\tuint256 public lastReleaseTime;\n\n\t/// @notice The release duration array in seconds.\n\tuint256[] public releaseDuration;\n\t/// @notice The release token amount.\n\tuint256[] public releaseTokenAmount;\n\n\t/* Events */\n\n\t/// @notice Emitted when the contract is activated.\n\tevent DevelopmentFundActivated();\n\n\t/// @notice Emitted when the contract is expired due to total token transfer.\n\tevent DevelopmentFundExpired();\n\n\t/// @notice Emitted when a new locked owner is added to the contract.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _newLockedOwner The address which is added as the new locked owner.\n\t/// @dev Can only be initiated by the current locked owner.\n\tevent NewLockedOwnerAdded(address indexed _initiator, address indexed _newLockedOwner);\n\n\t/// @notice Emitted when a new locked owner is approved to the contract.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _oldLockedOwner The address of the previous locked owner.\n\t/// @param _newLockedOwner The address which is added as the new locked owner.\n\t/// @dev Can only be initiated by the current unlocked owner.\n\tevent NewLockedOwnerApproved(address indexed _initiator, address indexed _oldLockedOwner, address indexed _newLockedOwner);\n\n\t/// @notice Emitted when a new unlocked owner is updated in the contract.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _newUnlockedOwner The address which is updated as the new unlocked owner.\n\t/// @dev Can only be initiated by the current locked owner.\n\tevent UnlockedOwnerUpdated(address indexed _initiator, address indexed _newUnlockedOwner);\n\n\t/// @notice Emitted when a new token deposit is done.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _amount The total amount of token deposited.\n\tevent TokenDeposit(address indexed _initiator, uint256 _amount);\n\n\t/// @notice Emitted when a new release schedule is created.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _releaseCount The number of releases planned in the schedule.\n\tevent TokenReleaseChanged(address indexed _initiator, uint256 _releaseCount);\n\n\t/// @notice Emitted when a unlocked owner transfers all the tokens to a safe vault.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _receiver The address which receives this token withdrawn.\n\t/// @param _amount The total amount of token transferred.\n\t/// @dev This is done in an emergency situation only to a predetermined wallet by locked token owner.\n\tevent LockedTokenTransferByUnlockedOwner(address indexed _initiator, address indexed _receiver, uint256 _amount);\n\n\t/// @notice Emitted when a unlocked owner withdraws the released tokens.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _amount The total amount of token withdrawn.\n\t/// @param _releaseCount The total number of releases done based on duration.\n\tevent UnlockedTokenWithdrawalByUnlockedOwner(address indexed _initiator, uint256 _amount, uint256 _releaseCount);\n\n\t/// @notice Emitted when a locked owner transfers all the tokens to a receiver.\n\t/// @param _initiator The address which initiated this event to be emitted.\n\t/// @param _receiver The address which receives this token transfer.\n\t/// @param _amount The total amount of token transferred.\n\t/// @dev This is done only by locked token owner.\n\tevent LockedTokenTransferByLockedOwner(address indexed _initiator, address indexed _receiver, uint256 _amount);\n\n\t/* Modifiers */\n\n\tmodifier onlyLockedTokenOwner() {\n\t\trequire(msg.sender == lockedTokenOwner, \"Only Locked Token Owner can call this.\");\n\t\t_;\n\t}\n\n\tmodifier onlyUnlockedTokenOwner() {\n\t\trequire(msg.sender == unlockedTokenOwner, \"Only Unlocked Token Owner can call this.\");\n\t\t_;\n\t}\n\n\tmodifier checkStatus(Status s) {\n\t\trequire(status == s, \"The contract is not in the right state.\");\n\t\t_;\n\t}\n\n\t/* Functions */\n\n\t/**\n\t * @notice Setup the required parameters.\n\t * @param _SOV The SOV token address.\n\t * @param _lockedTokenOwner The owner of the locked tokens & contract.\n\t * @param _safeVault The emergency wallet/contract to transfer token.\n\t * @param _unlockedTokenOwner The owner of the unlocked tokens.\n\t * @param _lastReleaseTime If the last release time is to be changed, zero if no change required.\n\t * @param _releaseDuration The time duration between each release calculated from `lastReleaseTime` in seconds.\n\t * @param _releaseTokenAmount The amount of token to be released in each duration/interval.\n\t * @dev Initial release schedule should be verified, error will result in either redeployment or calling changeTokenReleaseSchedule() after init() along with token transfer.\n\t */\n\tconstructor(\n\t\taddress _SOV,\n\t\taddress _lockedTokenOwner,\n\t\taddress _safeVault,\n\t\taddress _unlockedTokenOwner,\n\t\tuint256 _lastReleaseTime,\n\t\tuint256[] memory _releaseDuration,\n\t\tuint256[] memory _releaseTokenAmount\n\t) public {\n\t\trequire(_SOV != address(0), \"Invalid SOV Address.\");\n\t\trequire(_lockedTokenOwner != address(0), \"Locked token & contract owner address invalid.\");\n\t\trequire(_safeVault != address(0), \"Safe Vault address invalid.\");\n\t\trequire(_unlockedTokenOwner != address(0), \"Unlocked token address invalid.\");\n\n\t\tSOV = IERC20(_SOV);\n\t\tlockedTokenOwner = _lockedTokenOwner;\n\t\tsafeVault = _safeVault;\n\t\tunlockedTokenOwner = _unlockedTokenOwner;\n\n\t\tlastReleaseTime = _lastReleaseTime;\n\t\t/// If last release time passed is zero, then current time stamp will be used as the last release time.\n\t\tif (_lastReleaseTime == 0) {\n\t\t\tlastReleaseTime = block.timestamp;\n\t\t}\n\n\t\t/// Checking if the schedule duration and token allocation length matches.\n\t\trequire(_releaseDuration.length == _releaseTokenAmount.length, \"Release Schedule does not match.\");\n\n\t\t/// Finally we update the token release schedule.\n\t\treleaseDuration = _releaseDuration;\n\t\treleaseTokenAmount = _releaseTokenAmount;\n\t}\n\n\t/**\n\t * @notice This function is called once after deployment for token transfer based on schedule.\n\t * @dev Without calling this function, the contract will not work.\n\t */\n\tfunction init() public checkStatus(Status.Deployed) {\n\t\tuint256[] memory _releaseTokenAmount = releaseTokenAmount;\n\t\trequire(_releaseTokenAmount.length != 0, \"Release Schedule not set.\");\n\n\t\t/// Getting the current release schedule total token amount.\n\t\tuint256 _releaseTotalTokenAmount;\n\t\tfor (uint256 amountIndex = 0; amountIndex < _releaseTokenAmount.length; amountIndex++) {\n\t\t\t_releaseTotalTokenAmount = _releaseTotalTokenAmount.add(_releaseTokenAmount[amountIndex]);\n\t\t}\n\n\t\tbool txStatus = SOV.transferFrom(msg.sender, address(this), _releaseTotalTokenAmount);\n\t\trequire(txStatus, \"Not enough token sent to change release schedule.\");\n\n\t\tstatus = Status.Active;\n\n\t\temit DevelopmentFundActivated();\n\t}\n\n\t/**\n\t * @notice Update Locked Token Owner.\n\t * @param _newLockedTokenOwner The owner of the locked tokens & contract.\n\t */\n\tfunction updateLockedTokenOwner(address _newLockedTokenOwner) public onlyLockedTokenOwner checkStatus(Status.Active) {\n\t\trequire(_newLockedTokenOwner != address(0), \"New locked token owner address invalid.\");\n\n\t\tnewLockedTokenOwner = _newLockedTokenOwner;\n\n\t\temit NewLockedOwnerAdded(msg.sender, _newLockedTokenOwner);\n\t}\n\n\t/**\n\t * @notice Approve Locked Token Owner.\n\t * @dev This approval is an added security to avoid development fund takeover by a compromised locked token owner.\n\t */\n\tfunction approveLockedTokenOwner() public onlyUnlockedTokenOwner checkStatus(Status.Active) {\n\t\trequire(newLockedTokenOwner != address(0), \"No new locked owner added.\");\n\n\t\temit NewLockedOwnerApproved(msg.sender, lockedTokenOwner, newLockedTokenOwner);\n\n\t\tlockedTokenOwner = newLockedTokenOwner;\n\n\t\tnewLockedTokenOwner = address(0);\n\t}\n\n\t/**\n\t * @notice Update Unlocked Token Owner.\n\t * @param _newUnlockedTokenOwner The new unlocked token owner.\n\t */\n\tfunction updateUnlockedTokenOwner(address _newUnlockedTokenOwner) public onlyLockedTokenOwner checkStatus(Status.Active) {\n\t\trequire(_newUnlockedTokenOwner != address(0), \"New unlocked token owner address invalid.\");\n\n\t\tunlockedTokenOwner = _newUnlockedTokenOwner;\n\n\t\temit UnlockedOwnerUpdated(msg.sender, _newUnlockedTokenOwner);\n\t}\n\n\t/**\n\t * @notice Deposit tokens to this contract.\n\t * @param _amount the amount of tokens deposited.\n\t * @dev These tokens can be withdrawn/transferred any time by the lockedTokenOwner.\n\t */\n\tfunction depositTokens(uint256 _amount) public checkStatus(Status.Active) {\n\t\trequire(_amount > 0, \"Amount needs to be bigger than zero.\");\n\n\t\tbool txStatus = SOV.transferFrom(msg.sender, address(this), _amount);\n\t\trequire(txStatus, \"Token transfer was not successful.\");\n\n\t\temit TokenDeposit(msg.sender, _amount);\n\t}\n\n\t/**\n\t * @notice Change the Token release schedule. It creates a completely new schedule, and does not append on the previous one.\n\t * @param _newLastReleaseTime If the last release time is to be changed, zero if no change required.\n\t * @param _releaseDuration The time duration between each release calculated from `lastReleaseTime` in seconds.\n\t * @param _releaseTokenAmount The amount of token to be released in each duration/interval.\n\t * @dev _releaseDuration and _releaseTokenAmount should be specified in reverse order of release.\n\t */\n\tfunction changeTokenReleaseSchedule(\n\t\tuint256 _newLastReleaseTime,\n\t\tuint256[] memory _releaseDuration,\n\t\tuint256[] memory _releaseTokenAmount\n\t) public onlyLockedTokenOwner checkStatus(Status.Active) {\n\t\t/// Checking if the schedule duration and token allocation length matches.\n\t\trequire(_releaseDuration.length == _releaseTokenAmount.length, \"Release Schedule does not match.\");\n\n\t\t/// If the last release time has to be changed, then you can pass a new one here.\n\t\t/// Or else, the duration of release will be calculated based on this timestamp.\n\t\t/// Even a future timestamp can be mentioned here.\n\t\tif (_newLastReleaseTime != 0) {\n\t\t\tlastReleaseTime = _newLastReleaseTime;\n\t\t}\n\n\t\t/// Checking if the contract have enough token balance for the release.\n\t\tuint256 _releaseTotalTokenAmount;\n\t\tfor (uint256 amountIndex = 0; amountIndex < _releaseTokenAmount.length; amountIndex++) {\n\t\t\t_releaseTotalTokenAmount = _releaseTotalTokenAmount.add(_releaseTokenAmount[amountIndex]);\n\t\t}\n\n\t\t/// Getting the current token balance of the contract.\n\t\tuint256 remainingTokens = SOV.balanceOf(address(this));\n\n\t\t/// If the token balance is not sufficient, then we transfer the change to contract.\n\t\tif (remainingTokens < _releaseTotalTokenAmount) {\n\t\t\tbool txStatus = SOV.transferFrom(msg.sender, address(this), _releaseTotalTokenAmount.sub(remainingTokens));\n\t\t\trequire(txStatus, \"Not enough token sent to change release schedule.\");\n\t\t} else if (remainingTokens > _releaseTotalTokenAmount) {\n\t\t\t/// If there are more tokens than required, send the extra tokens back.\n\t\t\tbool txStatus = SOV.transfer(msg.sender, remainingTokens.sub(_releaseTotalTokenAmount));\n\t\t\trequire(txStatus, \"Token not received by the Locked Owner.\");\n\t\t}\n\n\t\t/// Finally we update the token release schedule.\n\t\treleaseDuration = _releaseDuration;\n\t\treleaseTokenAmount = _releaseTokenAmount;\n\n\t\temit TokenReleaseChanged(msg.sender, _releaseDuration.length);\n\t}\n\n\t/**\n\t * @notice Transfers all of the remaining tokens in an emergency situation.\n\t * @dev This could be called when governance or development fund might be compromised.\n\t */\n\tfunction transferTokensByUnlockedTokenOwner() public onlyUnlockedTokenOwner checkStatus(Status.Active) {\n\t\tuint256 remainingTokens = SOV.balanceOf(address(this));\n\t\tbool txStatus = SOV.transfer(safeVault, remainingTokens);\n\t\trequire(txStatus, \"Token transfer was not successful. Check receiver address.\");\n\t\tstatus = Status.Expired;\n\n\t\temit LockedTokenTransferByUnlockedOwner(msg.sender, safeVault, remainingTokens);\n\t\temit DevelopmentFundExpired();\n\t}\n\n\t/**\n\t * @notice Withdraws all unlocked/released token.\n\t * @param _amount The amount to be withdrawn.\n\t */\n\tfunction withdrawTokensByUnlockedTokenOwner(uint256 _amount) public onlyUnlockedTokenOwner checkStatus(Status.Active) {\n\t\trequire(_amount > 0, \"Zero can't be withdrawn.\");\n\n\t\tuint256 count; /// To know how many elements to be removed from the release schedule.\n\t\tuint256 amount = _amount; /// To know the total amount to be transferred.\n\t\tuint256 newLastReleaseTimeMemory = lastReleaseTime; /// Better to use memory than storage.\n\t\tuint256 releaseLength = releaseDuration.length.sub(1); /// Also checks if there are any elements in the release schedule.\n\n\t\t/// Getting the amount of tokens, the number of releases and calculating the total duration.\n\t\twhile (amount > 0 && newLastReleaseTimeMemory.add(releaseDuration[releaseLength]) < block.timestamp) {\n\t\t\tif (amount >= releaseTokenAmount[releaseLength]) {\n\t\t\t\tamount = amount.sub(releaseTokenAmount[releaseLength]);\n\t\t\t\tnewLastReleaseTimeMemory = newLastReleaseTimeMemory.add(releaseDuration[releaseLength]);\n\t\t\t\tcount++;\n\t\t\t} else {\n\t\t\t\t/// This will be the last case, if correct amount is passed.\n\t\t\t\treleaseTokenAmount[releaseLength] = releaseTokenAmount[releaseLength].sub(amount);\n\t\t\t\tamount = 0;\n\t\t\t}\n\t\t\treleaseLength--;\n\t\t}\n\n\t\t/// Checking to see if atleast a single schedule was reached or not.\n\t\trequire(count > 0 || amount == 0, \"No release schedule reached.\");\n\n\t\t/// If locked token owner tries to send a higher amount that schedule\n\t\tuint256 value = _amount.sub(amount);\n\n\t\t/// Now clearing up the release schedule.\n\t\treleaseDuration.length -= count;\n\t\treleaseTokenAmount.length -= count;\n\n\t\t/// Updating the last release time.\n\t\tlastReleaseTime = newLastReleaseTimeMemory;\n\n\t\t/// Sending the amount to unlocked token owner.\n\t\tbool txStatus = SOV.transfer(msg.sender, value);\n\t\trequire(txStatus, \"Token transfer was not successful. Check receiver address.\");\n\n\t\temit UnlockedTokenWithdrawalByUnlockedOwner(msg.sender, value, count);\n\t}\n\n\t/**\n\t * @notice Transfers all of the remaining tokens by the owner maybe for an upgrade.\n\t * @dev This could be called when the current development fund has to be upgraded.\n\t * @param _receiver The address which receives this token transfer.\n\t */\n\tfunction transferTokensByLockedTokenOwner(address _receiver) public onlyLockedTokenOwner checkStatus(Status.Active) {\n\t\tuint256 remainingTokens = SOV.balanceOf(address(this));\n\t\tbool txStatus = SOV.transfer(_receiver, remainingTokens);\n\t\trequire(txStatus, \"Token transfer was not successful. Check receiver address.\");\n\t\tstatus = Status.Expired;\n\n\t\temit LockedTokenTransferByLockedOwner(msg.sender, _receiver, remainingTokens);\n\t\temit DevelopmentFundExpired();\n\t}\n\n\t/* Getter Functions */\n\n\t/**\n\t * @notice Function to read the current token release duration.\n\t * @return _currentReleaseDuration The current release duration.\n\t */\n\tfunction getReleaseDuration() public view returns (uint256[] memory _releaseTokenDuration) {\n\t\treturn releaseDuration;\n\t}\n\n\t/**\n\t * @notice Function to read the current token release amount.\n\t * @return _currentReleaseTokenAmount The current release token amount.\n\t */\n\tfunction getReleaseTokenAmount() public view returns (uint256[] memory _currentReleaseTokenAmount) {\n\t\treturn releaseTokenAmount;\n\t}\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "devdoc",
            "userdoc"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/connectors/loantoken/AdvancedToken.sol": {
        "AdvancedToken": {
          "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": "burner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                }
              ],
              "name": "FlashBorrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "minter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "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"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "checkpointSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "initialPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kinkLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "loanParamsIds",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "loanTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilBaseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilRateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxScaleRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "targetLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "transactionLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "allowance(address,address)": {
                "params": {
                  "_owner": "The account owner of the iTokens.",
                  "_spender": "The account allowed to send the iTokens."
                },
                "return": "The number of iTokens an account is allowing the spender  to send on its behalf."
              },
              "approve(address,uint256)": {
                "params": {
                  "_spender": "The account address that will be able to spend the tokens.",
                  "_value": "The amount of tokens allowed to spend."
                }
              },
              "balanceOf(address)": {
                "params": {
                  "_owner": "The account owner of the iTokens."
                },
                "return": "The number of iTokens an account owns."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "totalSupply()": {
                "return": "The total number of iTokens in existence as of now."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Advanced Token contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600090815561001c6001600160e01b0361006f16565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610073565b3390565b610717806100826000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80637b7933b4116100b8578063ba0e43bf1161007c578063ba0e43bf146102eb578063d759dbeb146102f3578063dd62ed3e146102fb578063e41b07e314610329578063ef2b0b391461034f578063f2fde38b1461035757610142565b80637b7933b4146102c35780637e37c08c146102cb5780638da5cb5b146102d35780638f32d59b146102db57806395d89b41146102e357610142565b8063313ce5671161010a578063313ce5671461022e5780633291c11a1461024c578063330691ac1461026957806356e07d701461027157806370a0823114610279578063797bf3851461029f57610142565b806306fdde0314610147578063095ea7b3146101c457806318160ddd146102045780631d0806ae1461021e5780631f68f20a14610226575b600080fd5b61014f61037f565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610189578181015183820152602001610171565b50505050905090810190601f1680156101b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f0600480360360408110156101da57600080fd5b506001600160a01b03813516906020013561040a565b604080519115158252519081900360200190f35b61020c610470565b60408051918252519081900360200190f35b61020c610476565b61020c61047c565b610236610482565b6040805160ff9092168252519081900360200190f35b61020c6004803603602081101561026257600080fd5b503561048b565b61020c61049d565b61020c6104a3565b61020c6004803603602081101561028f57600080fd5b50356001600160a01b03166104a9565b6102a76104c4565b604080516001600160a01b039092168252519081900360200190f35b61020c6104d8565b61020c6104de565b6102a76104e4565b6101f06104f3565b61014f610519565b61020c610574565b61020c61057a565b61020c6004803603604081101561031157600080fd5b506001600160a01b0381358116916020013516610580565b61020c6004803603602081101561033f57600080fd5b50356001600160a01b03166105ab565b61020c6105bd565b61037d6004803603602081101561036d57600080fd5b50356001600160a01b03166105c3565b005b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60155490565b600e5481565b60055481565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526013602052604090205490565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b031661050a610617565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b60095481565b60075481565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b60126020526000908152604090205481565b600b5481565b6105cb6104f3565b61060b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6106148161061b565b50565b3390565b6001600160a01b0381166106605760405162461bcd60e51b81526004018080602001828103825260268152602001806106bd6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158208575b206b70405c75986fff7a1f9776ac50bfe1f72febfc77909b918860b814a64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH2 0x1C PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x6F AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x73 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x717 DUP1 PUSH2 0x82 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B7933B4 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xBA0E43BF GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x357 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x2CB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2E3 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x269 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x29F JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x226 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x37F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x189 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x171 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1B6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x40A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH2 0x476 JUMP JUMPDEST PUSH2 0x20C PUSH2 0x47C JUMP JUMPDEST PUSH2 0x236 PUSH2 0x482 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x48B JUMP JUMPDEST PUSH2 0x20C PUSH2 0x49D JUMP JUMPDEST PUSH2 0x20C PUSH2 0x4A3 JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4A9 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x4C4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH2 0x4D8 JUMP JUMPDEST PUSH2 0x20C PUSH2 0x4DE JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x4E4 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x4F3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x519 JUMP JUMPDEST PUSH2 0x20C PUSH2 0x574 JUMP JUMPDEST PUSH2 0x20C PUSH2 0x57A JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x580 JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5AB JUMP JUMPDEST PUSH2 0x20C PUSH2 0x5BD JUMP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5C3 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x50A PUSH2 0x617 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x5CB PUSH2 0x4F3 JUMP JUMPDEST PUSH2 0x60B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x614 DUP2 PUSH2 0x61B JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6BD PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158208575B206B70405 0xC7 MSIZE DUP7 SELFDESTRUCT 0xF7 LOG1 0xF9 PUSH24 0x6AC50BFE1F72FEBFC77909B918860B814A64736F6C634300 SDIV GT STOP ORIGIN ",
              "sourceMap": "659:3054:0:-;;;493:1:143;661:55;;;;697:12:142;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;659:3054:0;;780:87:137;853:10;780:87;:::o;659:3054:0:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101425760003560e01c80637b7933b4116100b8578063ba0e43bf1161007c578063ba0e43bf146102eb578063d759dbeb146102f3578063dd62ed3e146102fb578063e41b07e314610329578063ef2b0b391461034f578063f2fde38b1461035757610142565b80637b7933b4146102c35780637e37c08c146102cb5780638da5cb5b146102d35780638f32d59b146102db57806395d89b41146102e357610142565b8063313ce5671161010a578063313ce5671461022e5780633291c11a1461024c578063330691ac1461026957806356e07d701461027157806370a0823114610279578063797bf3851461029f57610142565b806306fdde0314610147578063095ea7b3146101c457806318160ddd146102045780631d0806ae1461021e5780631f68f20a14610226575b600080fd5b61014f61037f565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610189578181015183820152602001610171565b50505050905090810190601f1680156101b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f0600480360360408110156101da57600080fd5b506001600160a01b03813516906020013561040a565b604080519115158252519081900360200190f35b61020c610470565b60408051918252519081900360200190f35b61020c610476565b61020c61047c565b610236610482565b6040805160ff9092168252519081900360200190f35b61020c6004803603602081101561026257600080fd5b503561048b565b61020c61049d565b61020c6104a3565b61020c6004803603602081101561028f57600080fd5b50356001600160a01b03166104a9565b6102a76104c4565b604080516001600160a01b039092168252519081900360200190f35b61020c6104d8565b61020c6104de565b6102a76104e4565b6101f06104f3565b61014f610519565b61020c610574565b61020c61057a565b61020c6004803603604081101561031157600080fd5b506001600160a01b0381358116916020013516610580565b61020c6004803603602081101561033f57600080fd5b50356001600160a01b03166105ab565b61020c6105bd565b61037d6004803603602081101561036d57600080fd5b50356001600160a01b03166105c3565b005b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60155490565b600e5481565b60055481565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526013602052604090205490565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b031661050a610617565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b60095481565b60075481565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b60126020526000908152604090205481565b600b5481565b6105cb6104f3565b61060b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6106148161061b565b50565b3390565b6001600160a01b0381166106605760405162461bcd60e51b81526004018080602001828103825260268152602001806106bd6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158208575b206b70405c75986fff7a1f9776ac50bfe1f72febfc77909b918860b814a64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B7933B4 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xBA0E43BF GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x357 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x2CB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2E3 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x269 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x29F JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x226 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x37F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x189 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x171 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1B6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x40A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH2 0x476 JUMP JUMPDEST PUSH2 0x20C PUSH2 0x47C JUMP JUMPDEST PUSH2 0x236 PUSH2 0x482 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x48B JUMP JUMPDEST PUSH2 0x20C PUSH2 0x49D JUMP JUMPDEST PUSH2 0x20C PUSH2 0x4A3 JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4A9 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x4C4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH2 0x4D8 JUMP JUMPDEST PUSH2 0x20C PUSH2 0x4DE JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x4E4 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x4F3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x519 JUMP JUMPDEST PUSH2 0x20C PUSH2 0x574 JUMP JUMPDEST PUSH2 0x20C PUSH2 0x57A JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x580 JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5AB JUMP JUMPDEST PUSH2 0x20C PUSH2 0x5BD JUMP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5C3 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x50A PUSH2 0x617 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x5CB PUSH2 0x4F3 JUMP JUMPDEST PUSH2 0x60B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x614 DUP2 PUSH2 0x61B JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x6BD PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158208575B206B70405 0xC7 MSIZE DUP7 SELFDESTRUCT 0xF7 LOG1 0xF9 PUSH24 0x6AC50BFE1F72FEBFC77909B918860B814A64736F6C634300 SDIV GT STOP ORIGIN ",
              "sourceMap": "659:3054:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;659:3054:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1977:18:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:181:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1489:181:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1778:80:1;;;:::i;:::-;;;;;;;;;;;;;;;;2441:27:3;;;:::i;2150:23::-;;;:::i;2021:21::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2633:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2633:48:3;;:::i;2176:29::-;;;:::i;2310:24::-;;;:::i;2035:96:1:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2035:96:1;-1:-1:-1;;;;;2035:96:1;;:::i;2115:31:3:-;;;:::i;:::-;;;;-1:-1:-1;;;;;2115:31:3;;;;;;;;;;;;;;2407;;;:::i;2241:36::-;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;1998:20:3:-;;;:::i;2281:26::-;;;:::i;2208:30::-;;;:::i;2464:123:1:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2464:123:1;;;;;;;;;;:::i;2854:51:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2854:51:3;-1:-1:-1;;;;;2854:51:3;;:::i;2337:27::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;1977:18:3;;;;;;;;;;;;;;-1:-1:-1;;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1489:181:0:-;1574:10;1556:4;1566:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1566:29:0;;;;;;;;;;;:38;;;1613;;;;;;;1556:4;;1566:29;;1574:10;;1613:38;;;;;;;;-1:-1:-1;1662:4:0;1489:181;;;;:::o;1778:80:1:-;1842:12;;1778:80;:::o;2441:27:3:-;;;;:::o;2150:23::-;;;;:::o;2021:21::-;;;;;;:::o;2633:48::-;;;;;;;;;;;;;:::o;2176:29::-;;;;:::o;2310:24::-;;;;:::o;2035:96:1:-;-1:-1:-1;;;;;2111:16:1;2091:7;2111:16;;;:8;:16;;;;;;;2035:96::o;2115:31:3:-;;;;;;-1:-1:-1;;;;;2115:31:3;;:::o;2407:::-;;;;:::o;2241:36::-;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1998:20:3:-;;;;;;;;;;;;;;;-1:-1:-1;;1998:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2281:26;;;;:::o;2208:30::-;;;;:::o;2464:123:1:-;-1:-1:-1;;;;;2558:15:1;;;2538:7;2558:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2464:123::o;2854:51:3:-;;;;;;;;;;;;;:::o;2337:27::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "baseRate()": "1f68f20a",
              "checkpointSupply()": "7b7933b4",
              "decimals()": "313ce567",
              "initialPrice()": "1d0806ae",
              "isOwner()": "8f32d59b",
              "kinkLevel()": "56e07d70",
              "loanParamsIds(uint256)": "3291c11a",
              "loanTokenAddress()": "797bf385",
              "lowUtilBaseRate()": "d759dbeb",
              "lowUtilRateMultiplier()": "7e37c08c",
              "maxScaleRate()": "ef2b0b39",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "rateMultiplier()": "330691ac",
              "symbol()": "95d89b41",
              "targetLevel()": "ba0e43bf",
              "totalSupply()": "18160ddd",
              "transactionLimit(address)": "e41b07e3",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {
              "allowance(address,address)": {
                "notice": "Get the amount of iTokens allowed to be spent by a  given account on behalf of the owner."
              },
              "approve(address,uint256)": {
                "notice": "Set an amount as the allowance of `spender` over the caller's tokens.\t * Returns a boolean value indicating whether the operation succeeded.\t * 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\t * Emits an {Approval} event."
              },
              "balanceOf(address)": {
                "notice": "Get the amount of iTokens owned by an account."
              },
              "totalSupply()": {
                "notice": "Get the total supply of iTokens."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * AdvancedToken implements standard ERC-20 approval, mint and burn token functionality. Logic (AdvancedToken) is kept aside from storage (AdvancedTokenStorage). * For example, LoanTokenLogicDai contract uses AdvancedToken::_mint() to mint its Loan Dai iTokens."
          }
        }
      },
      "contracts/connectors/loantoken/AdvancedTokenStorage.sol": {
        "AdvancedTokenStorage": {
          "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": "burner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                }
              ],
              "name": "FlashBorrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "minter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "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"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "checkpointSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "initialPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kinkLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "loanParamsIds",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "loanTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilBaseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilRateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxScaleRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "targetLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "transactionLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "allowance(address,address)": {
                "params": {
                  "_owner": "The account owner of the iTokens.",
                  "_spender": "The account allowed to send the iTokens."
                },
                "return": "The number of iTokens an account is allowing the spender  to send on its behalf."
              },
              "balanceOf(address)": {
                "params": {
                  "_owner": "The account owner of the iTokens."
                },
                "return": "The number of iTokens an account owns."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "totalSupply()": {
                "return": "The total number of iTokens in existence as of now."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Advanced Token Storage contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600090815561001c6001600160e01b0361006f16565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610073565b3390565b61067a806100826000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80637b7933b4116100b8578063ba0e43bf1161007c578063ba0e43bf146102b4578063d759dbeb146102bc578063dd62ed3e146102c4578063e41b07e3146102f2578063ef2b0b3914610318578063f2fde38b1461032057610137565b80637b7933b4146102785780637e37c08c146102805780638da5cb5b146102885780638f32d59b1461029057806395d89b41146102ac57610137565b80633291c11a116100ff5780633291c11a14610201578063330691ac1461021e57806356e07d701461022657806370a082311461022e578063797bf3851461025457610137565b806306fdde031461013c57806318160ddd146101b95780631d0806ae146101d35780631f68f20a146101db578063313ce567146101e3575b600080fd5b610144610348565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c16103d3565b60408051918252519081900360200190f35b6101c16103d9565b6101c16103df565b6101eb6103e5565b6040805160ff9092168252519081900360200190f35b6101c16004803603602081101561021757600080fd5b50356103ee565b6101c1610400565b6101c1610406565b6101c16004803603602081101561024457600080fd5b50356001600160a01b031661040c565b61025c610427565b604080516001600160a01b039092168252519081900360200190f35b6101c161043b565b6101c1610441565b61025c610447565b610298610456565b604080519115158252519081900360200190f35b61014461047c565b6101c16104d7565b6101c16104dd565b6101c1600480360360408110156102da57600080fd5b506001600160a01b03813581169160200135166104e3565b6101c16004803603602081101561030857600080fd5b50356001600160a01b031661050e565b6101c1610520565b6103466004803603602081101561033657600080fd5b50356001600160a01b0316610526565b005b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156103cb5780601f106103a0576101008083540402835291602001916103cb565b820191906000526020600020905b8154815290600101906020018083116103ae57829003601f168201915b505050505081565b60155490565b600e5481565b60055481565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526013602052604090205490565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b031661046d61057a565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103cb5780601f106103a0576101008083540402835291602001916103cb565b60095481565b60075481565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b60126020526000908152604090205481565b600b5481565b61052e610456565b61056e576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6105778161057e565b50565b3390565b6001600160a01b0381166105c35760405162461bcd60e51b81526004018080602001828103825260268152602001806106206026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a7231582017f01183fb7048d57601ca496abff64bf20a1f453ed77f4467c603b11c89a91e64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH2 0x1C PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x6F AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x73 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x67A DUP1 PUSH2 0x82 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B7933B4 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xBA0E43BF GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x2F2 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x320 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x290 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2AC JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x3291C11A GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x254 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1B9 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1E3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x144 PUSH2 0x348 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x17E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x166 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1AB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x3D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x3D9 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x3DF JUMP JUMPDEST PUSH2 0x1EB PUSH2 0x3E5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3EE JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x400 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x406 JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x40C JUMP JUMPDEST PUSH2 0x25C PUSH2 0x427 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x441 JUMP JUMPDEST PUSH2 0x25C PUSH2 0x447 JUMP JUMPDEST PUSH2 0x298 PUSH2 0x456 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x144 PUSH2 0x47C JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x4D7 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x4DD JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x4E3 JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x50E JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x520 JUMP JUMPDEST PUSH2 0x346 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x526 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3CB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3A0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3CB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3AE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x46D PUSH2 0x57A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3CB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3A0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x52E PUSH2 0x456 JUMP JUMPDEST PUSH2 0x56E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x577 DUP2 PUSH2 0x57E JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x620 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A7231582017F01183FB7048 0xD5 PUSH23 0x1CA496ABFF64BF20A1F453ED77F4467C603B11C89A91E PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "624:1965:1:-;;;493:1:143;661:55;;;;697:12:142;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;624:1965:1;;780:87:137;853:10;780:87;:::o;624:1965:1:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101375760003560e01c80637b7933b4116100b8578063ba0e43bf1161007c578063ba0e43bf146102b4578063d759dbeb146102bc578063dd62ed3e146102c4578063e41b07e3146102f2578063ef2b0b3914610318578063f2fde38b1461032057610137565b80637b7933b4146102785780637e37c08c146102805780638da5cb5b146102885780638f32d59b1461029057806395d89b41146102ac57610137565b80633291c11a116100ff5780633291c11a14610201578063330691ac1461021e57806356e07d701461022657806370a082311461022e578063797bf3851461025457610137565b806306fdde031461013c57806318160ddd146101b95780631d0806ae146101d35780631f68f20a146101db578063313ce567146101e3575b600080fd5b610144610348565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c16103d3565b60408051918252519081900360200190f35b6101c16103d9565b6101c16103df565b6101eb6103e5565b6040805160ff9092168252519081900360200190f35b6101c16004803603602081101561021757600080fd5b50356103ee565b6101c1610400565b6101c1610406565b6101c16004803603602081101561024457600080fd5b50356001600160a01b031661040c565b61025c610427565b604080516001600160a01b039092168252519081900360200190f35b6101c161043b565b6101c1610441565b61025c610447565b610298610456565b604080519115158252519081900360200190f35b61014461047c565b6101c16104d7565b6101c16104dd565b6101c1600480360360408110156102da57600080fd5b506001600160a01b03813581169160200135166104e3565b6101c16004803603602081101561030857600080fd5b50356001600160a01b031661050e565b6101c1610520565b6103466004803603602081101561033657600080fd5b50356001600160a01b0316610526565b005b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156103cb5780601f106103a0576101008083540402835291602001916103cb565b820191906000526020600020905b8154815290600101906020018083116103ae57829003601f168201915b505050505081565b60155490565b600e5481565b60055481565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526013602052604090205490565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b031661046d61057a565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103cb5780601f106103a0576101008083540402835291602001916103cb565b60095481565b60075481565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b60126020526000908152604090205481565b600b5481565b61052e610456565b61056e576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6105778161057e565b50565b3390565b6001600160a01b0381166105c35760405162461bcd60e51b81526004018080602001828103825260268152602001806106206026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a7231582017f01183fb7048d57601ca496abff64bf20a1f453ed77f4467c603b11c89a91e64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B7933B4 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xBA0E43BF GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x2F2 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x320 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x290 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2AC JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x3291C11A GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x254 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1B9 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1E3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x144 PUSH2 0x348 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x17E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x166 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1AB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x3D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x3D9 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x3DF JUMP JUMPDEST PUSH2 0x1EB PUSH2 0x3E5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3EE JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x400 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x406 JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x40C JUMP JUMPDEST PUSH2 0x25C PUSH2 0x427 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x441 JUMP JUMPDEST PUSH2 0x25C PUSH2 0x447 JUMP JUMPDEST PUSH2 0x298 PUSH2 0x456 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x144 PUSH2 0x47C JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x4D7 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x4DD JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x4E3 JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x50E JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x520 JUMP JUMPDEST PUSH2 0x346 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x526 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3CB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3A0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3CB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3AE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x46D PUSH2 0x57A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3CB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3A0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x52E PUSH2 0x456 JUMP JUMPDEST PUSH2 0x56E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x577 DUP2 PUSH2 0x57E JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x620 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A7231582017F01183FB7048 0xD5 PUSH23 0x1CA496ABFF64BF20A1F453ED77F4467C603B11C89A91E PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "624:1965:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;624:1965:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1977:18:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1778:80:1;;;:::i;:::-;;;;;;;;;;;;;;;;2441:27:3;;;:::i;2150:23::-;;;:::i;2021:21::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2633:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2633:48:3;;:::i;2176:29::-;;;:::i;2310:24::-;;;:::i;2035:96:1:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2035:96:1;-1:-1:-1;;;;;2035:96:1;;:::i;2115:31:3:-;;;:::i;:::-;;;;-1:-1:-1;;;;;2115:31:3;;;;;;;;;;;;;;2407;;;:::i;2241:36::-;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;1998:20:3;;;:::i;2281:26::-;;;:::i;2208:30::-;;;:::i;2464:123:1:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2464:123:1;;;;;;;;;;:::i;2854:51:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2854:51:3;-1:-1:-1;;;;;2854:51:3;;:::i;2337:27::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;1977:18:3;;;;;;;;;;;;;;-1:-1:-1;;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1778:80:1:-;1842:12;;1778:80;:::o;2441:27:3:-;;;;:::o;2150:23::-;;;;:::o;2021:21::-;;;;;;:::o;2633:48::-;;;;;;;;;;;;;:::o;2176:29::-;;;;:::o;2310:24::-;;;;:::o;2035:96:1:-;-1:-1:-1;;;;;2111:16:1;2091:7;2111:16;;;:8;:16;;;;;;;2035:96::o;2115:31:3:-;;;;;;-1:-1:-1;;;;;2115:31:3;;:::o;2407:::-;;;;:::o;2241:36::-;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1998:20:3:-;;;;;;;;;;;;;;;-1:-1:-1;;1998:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2281:26;;;;:::o;2208:30::-;;;;:::o;2464:123:1:-;-1:-1:-1;;;;;2558:15:1;;;2538:7;2558:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2464:123::o;2854:51:3:-;;;;;;;;;;;;;:::o;2337:27::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "balanceOf(address)": "70a08231",
              "baseRate()": "1f68f20a",
              "checkpointSupply()": "7b7933b4",
              "decimals()": "313ce567",
              "initialPrice()": "1d0806ae",
              "isOwner()": "8f32d59b",
              "kinkLevel()": "56e07d70",
              "loanParamsIds(uint256)": "3291c11a",
              "loanTokenAddress()": "797bf385",
              "lowUtilBaseRate()": "d759dbeb",
              "lowUtilRateMultiplier()": "7e37c08c",
              "maxScaleRate()": "ef2b0b39",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "rateMultiplier()": "330691ac",
              "symbol()": "95d89b41",
              "targetLevel()": "ba0e43bf",
              "totalSupply()": "18160ddd",
              "transactionLimit(address)": "e41b07e3",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {
              "allowance(address,address)": {
                "notice": "Get the amount of iTokens allowed to be spent by a  given account on behalf of the owner."
              },
              "balanceOf(address)": {
                "notice": "Get the amount of iTokens owned by an account."
              },
              "totalSupply()": {
                "notice": "Get the total supply of iTokens."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * AdvancedTokenStorage implements standard ERC-20 getters functionality: totalSupply, balanceOf, allowance and some events. iToken logic is divided into several contracts AdvancedToken, AdvancedTokenStorage and LoanTokenBase."
          }
        }
      },
      "contracts/connectors/loantoken/LoanToken.sol": {
        "LoanToken": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_newTarget",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_sovrynContractAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_wrbtcTokenAddress",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": "burner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                }
              ],
              "name": "FlashBorrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "minter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "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"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "checkpointSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "initialPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_loanTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kinkLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "loanParamsIds",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "loanTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilBaseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilRateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxScaleRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newTarget",
                  "type": "address"
                }
              ],
              "name": "setTarget",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynContractAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "targetLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "transactionLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "TODO: can I change this proxy to EIP-1822 proxy standard, please.  https://eips.ethereum.org/EIPS/eip-1822. It's really hard to work with this.",
            "methods": {
              "allowance(address,address)": {
                "params": {
                  "_owner": "The account owner of the iTokens.",
                  "_spender": "The account allowed to send the iTokens."
                },
                "return": "The number of iTokens an account is allowing the spender  to send on its behalf."
              },
              "balanceOf(address)": {
                "params": {
                  "_owner": "The account owner of the iTokens."
                },
                "return": "The number of iTokens an account owns."
              },
              "constructor": {
                "params": {
                  "_newOwner": "The address of the new owner.",
                  "_newTarget": "The address of the new target contract instance.",
                  "_sovrynContractAddress": "The address of the new sovrynContract instance.",
                  "_wrbtcTokenAddress": "The address of the new wrBTC instance."
                }
              },
              "initialize(address,string,string)": {
                "details": "TODO: add check for double init.  idk but init usually can be called only once.",
                "params": {
                  "_loanTokenAddress": "The address of the pointed loan token instance.",
                  "_name": "The ERC20 token name.",
                  "_symbol": "The ERC20 token symbol."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setTarget(address)": {
                "details": "Calls internal setter.",
                "params": {
                  "_newTarget": "The address of the new target contract instance."
                }
              },
              "totalSupply()": {
                "return": "The total number of iTokens in existence as of now."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Loan Token contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260016000553480156200001657600080fd5b506040516200115d3803806200115d833981810160405260808110156200003c57600080fd5b50805160208201516040830151606090930151919290916000620000686001600160e01b03620000ff16565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000906000805160206200113d833981519152908290a350620000b9846001600160e01b036200010316565b620000cd836001600160e01b036200016e16565b620000e1826001600160e01b03620001f816565b620000f5816001600160e01b036200028216565b505050506200040c565b3390565b620001166001600160e01b036200030c16565b62000157576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6200016b816001600160e01b036200033d16565b50565b6200018481620003cf60201b62000bcc1760201c565b620001d6576040805162461bcd60e51b815260206004820152601560248201527f746172676574206e6f74206120636f6e74726163740000000000000000000000604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6200020e81620003cf60201b62000bcc1760201c565b62000260576040805162461bcd60e51b815260206004820152601560248201527f736f7672796e206e6f74206120636f6e74726163740000000000000000000000604482015290519081900360640190fd5b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6200029881620003cf60201b62000bcc1760201c565b620002ea576040805162461bcd60e51b815260206004820152601460248201527f7772627463206e6f74206120636f6e7472616374000000000000000000000000604482015290519081900360640190fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b03166200032e6001600160e01b03620000ff16565b6001600160a01b031614905090565b6001600160a01b038116620003845760405162461bcd60e51b8152600401808060200182810382526026815260200180620011176026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216906000805160206200113d83398151915290600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906200040457508115155b949350505050565b610cfb806200041c6000396000f3fe6080604052600436106101815760003560e01c80637b7933b4116100d1578063ba0e43bf1161008a578063e41b07e311610064578063e41b07e314610644578063ef2b0b3914610677578063f2fde38b1461068c578063f851a440146106bf57610181565b8063ba0e43bf146105df578063d759dbeb146105f4578063dd62ed3e1461060957610181565b80637b7933b4146104185780637e37c08c1461042d5780638da5cb5b146104425780638f32d59b14610457578063906571471461048057806395d89b41146105ca57610181565b8063313ce5671161013e57806356e07d701161011857806356e07d701461038857806370a082311461039d578063776d1a01146103d0578063797bf3851461040357610181565b8063313ce5671461031e5780633291c11a14610349578063330691ac1461037357610181565b806306947a3a146101fd57806306fdde031461022e57806318160ddd146102b85780631d0806ae146102df5780631f68f20a146102f45780632f6b600d14610309575b6108fc5a1161018f576101fb565b60185460408051602036601f81018290048202830182019093528282526001600160a01b039093169260609260009181908401838280828437600092018290525084519495509384935091505060208401855af43d604051816000823e8280156101f7578282f35b8282fd5b005b34801561020957600080fd5b506102126106d4565b604080516001600160a01b039092168252519081900360200190f35b34801561023a57600080fd5b506102436106e3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027d578181015183820152602001610265565b50505050905090810190601f1680156102aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c457600080fd5b506102cd61076e565b60408051918252519081900360200190f35b3480156102eb57600080fd5b506102cd610775565b34801561030057600080fd5b506102cd61077b565b34801561031557600080fd5b50610212610781565b34801561032a57600080fd5b50610333610790565b6040805160ff9092168252519081900360200190f35b34801561035557600080fd5b506102cd6004803603602081101561036c57600080fd5b5035610799565b34801561037f57600080fd5b506102cd6107ab565b34801561039457600080fd5b506102cd6107b1565b3480156103a957600080fd5b506102cd600480360360208110156103c057600080fd5b50356001600160a01b03166107b7565b3480156103dc57600080fd5b506101fb600480360360208110156103f357600080fd5b50356001600160a01b03166107d2565b34801561040f57600080fd5b50610212610826565b34801561042457600080fd5b506102cd61083a565b34801561043957600080fd5b506102cd610840565b34801561044e57600080fd5b50610212610846565b34801561046357600080fd5b5061046c610855565b604080519115158252519081900360200190f35b34801561048c57600080fd5b506101fb600480360360608110156104a357600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156104ce57600080fd5b8201836020820111156104e057600080fd5b8035906020019184600183028401116401000000008311171561050257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561055557600080fd5b82018360208201111561056757600080fd5b8035906020019184600183028401116401000000008311171561058957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061087b945050505050565b3480156105d657600080fd5b506102436109a9565b3480156105eb57600080fd5b506102cd610a04565b34801561060057600080fd5b506102cd610a0a565b34801561061557600080fd5b506102cd6004803603604081101561062c57600080fd5b506001600160a01b0381358116916020013516610a10565b34801561065057600080fd5b506102cd6004803603602081101561066757600080fd5b50356001600160a01b0316610a3b565b34801561068357600080fd5b506102cd610a4d565b34801561069857600080fd5b506101fb600480360360208110156106af57600080fd5b50356001600160a01b0316610a53565b3480156106cb57600080fd5b50610212610aa4565b6016546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156107665780601f1061073b57610100808354040283529160200191610766565b820191906000526020600020905b81548152906001019060200180831161074957829003601f168201915b505050505081565b6015545b90565b600e5481565b60055481565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526013602052604090205490565b6107da610855565b61081a576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61082381610ab3565b50565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b031661086c610b27565b6001600160a01b031614905090565b610883610855565b6108c3576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60048054610100600160a81b0319166101006001600160a01b0386160217905581516108f6906002906020850190610c08565b50805161090a906003906020840190610c08565b50600460019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561095957600080fd5b505afa15801561096d573d6000803e3d6000fd5b505050506040513d602081101561098357600080fd5b50516004805460ff191660ff9092169190911790555050670de0b6b3a7640000600e5550565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107665780601f1061073b57610100808354040283529160200191610766565b60095481565b60075481565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b60126020526000908152604090205481565b600b5481565b610a5b610855565b610a9b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61082381610b2b565b6019546001600160a01b031681565b610abc81610bcc565b610b05576040805162461bcd60e51b81526020600482015260156024820152741d185c99d95d081b9bdd08184818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b038116610b705760405162461bcd60e51b8152600401808060200182810382526026815260200180610ca16026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610c0057508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610c4957805160ff1916838001178555610c76565b82800160010185558215610c76579182015b82811115610c76578251825591602001919060010190610c5b565b50610c82929150610c86565b5090565b61077291905b80821115610c825760008155600101610c8c56fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820239aa42488893aca48ea62104c155a0b73de09e11e4f5d9a846b5166803ae93e64736f6c634300051100324f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x115D CODESIZE SUB DUP1 PUSH3 0x115D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH3 0x3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x0 PUSH3 0x68 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0xFF AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x113D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0xB9 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x103 AND JUMP JUMPDEST PUSH3 0xCD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x16E AND JUMP JUMPDEST PUSH3 0xE1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x1F8 AND JUMP JUMPDEST PUSH3 0xF5 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x282 AND JUMP JUMPDEST POP POP POP POP PUSH3 0x40C JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH3 0x116 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x30C AND JUMP JUMPDEST PUSH3 0x157 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0x16B DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x33D AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x184 DUP2 PUSH3 0x3CF PUSH1 0x20 SHL PUSH3 0xBCC OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746172676574206E6F74206120636F6E74726163740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x18 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x20E DUP2 PUSH3 0x3CF PUSH1 0x20 SHL PUSH3 0xBCC OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x260 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736F7672796E206E6F74206120636F6E74726163740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x16 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x298 DUP2 PUSH3 0x3CF PUSH1 0x20 SHL PUSH3 0xBCC OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x2EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7772627463206E6F74206120636F6E7472616374000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x17 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x32E PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0xFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x384 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x1117 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x113D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH3 0x404 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xCFB DUP1 PUSH3 0x41C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x181 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B7933B4 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xBA0E43BF GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xE41B07E3 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x644 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x677 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x68C JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x6BF JUMPI PUSH2 0x181 JUMP JUMPDEST DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x5DF JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x5F4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x609 JUMPI PUSH2 0x181 JUMP JUMPDEST DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x42D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x442 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x90657147 EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5CA JUMPI PUSH2 0x181 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x56E07D70 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x39D JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x403 JUMPI PUSH2 0x181 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x373 JUMPI PUSH2 0x181 JUMP JUMPDEST DUP1 PUSH4 0x6947A3A EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2B8 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x2F4 JUMPI DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x309 JUMPI JUMPDEST PUSH2 0x8FC GAS GT PUSH2 0x18F JUMPI PUSH2 0x1FB JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 CALLDATASIZE PUSH1 0x1F DUP2 ADD DUP3 SWAP1 DIV DUP3 MUL DUP4 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP3 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH1 0x60 SWAP3 PUSH1 0x0 SWAP2 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP DUP5 MLOAD SWAP5 SWAP6 POP SWAP4 DUP5 SWAP4 POP SWAP2 POP POP PUSH1 0x20 DUP5 ADD DUP6 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x40 MLOAD DUP2 PUSH1 0x0 DUP3 RETURNDATACOPY DUP3 DUP1 ISZERO PUSH2 0x1F7 JUMPI DUP3 DUP3 RETURN JUMPDEST DUP3 DUP3 REVERT JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x212 PUSH2 0x6D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x243 PUSH2 0x6E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x27D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x265 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2AA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x76E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x775 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x77B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x212 PUSH2 0x781 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x333 PUSH2 0x790 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x799 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x7AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x7B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x212 PUSH2 0x826 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x83A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x840 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x212 PUSH2 0x846 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46C PUSH2 0x855 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x87B SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x243 PUSH2 0x9A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0xA04 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0xA0A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x62C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0xA4D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x212 PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x766 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x73B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x766 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x749 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x7DA PUSH2 0x855 JUMP JUMPDEST PUSH2 0x81A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x823 DUP2 PUSH2 0xAB3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x86C PUSH2 0xB27 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x883 PUSH2 0x855 JUMP JUMPDEST PUSH2 0x8C3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH2 0x8F6 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0xC08 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x90A SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xC08 JUMP JUMPDEST POP PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x959 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x96D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP PUSH8 0xDE0B6B3A7640000 PUSH1 0xE SSTORE POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x766 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x73B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x766 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0xA5B PUSH2 0x855 JUMP JUMPDEST PUSH2 0xA9B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x823 DUP2 PUSH2 0xB2B JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xABC DUP2 PUSH2 0xBCC JUMP JUMPDEST PUSH2 0xB05 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1D185C99D95D081B9BDD08184818DBDB9D1C9858DD PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x18 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB70 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCA1 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0xC00 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xC49 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xC76 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xC76 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xC76 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xC5B JUMP JUMPDEST POP PUSH2 0xC82 SWAP3 SWAP2 POP PUSH2 0xC86 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x772 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xC82 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xC8C JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820239AA42488893A 0xCA 0x48 0xEA PUSH3 0x104C15 GAS SIGNEXTEND PUSH20 0xDE09E11E4F5D9A846B5166803AE93E64736F6C63 NUMBER STOP SDIV GT STOP ORIGIN 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573738BE0079C531659141344CD1FD0A4F284 NOT 0x49 PUSH32 0x9722A3DAAFE3B4186F6B6457E000000000000000000000000000000000000000 ",
              "sourceMap": "1008:3470:2:-;;;493:1:143;661:55;;1687:289:2;8:9:-1;5:2;;;30:1;27;20:12;5:2;1687:289:2;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1687:289:2;;;;;;;;;;;;;;;;;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;;;;;;;;;;;;740:43:142;-1:-1:-1;;740:43:142;-1:-1:-1;1820:28:2;1838:9;-1:-1:-1;;;;;1820:17:2;:28;:::i;:::-;1852:22;1863:10;-1:-1:-1;;;;;1852:10:2;:22;:::i;:::-;1878:49;1904:22;-1:-1:-1;;;;;1878:25:2;:49;:::i;:::-;1931:41;1953:18;-1:-1:-1;;;;;1931:21:2;:41;:::i;:::-;1687:289;;;;1008:3470;;780:87:137;853:10;780:87;:::o;1351:98:142:-;1028:9;-1:-1:-1;;;;;1028:7:142;:9;:::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;-1:-1:-1;;;;;1417:18:142;:28;:::i;:::-;1351:98;:::o;2976:145:2:-;3037:30;3056:10;3037:18;;;;;:30;;:::i;:::-;3029:64;;;;;-1:-1:-1;;;3029:64:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;3097:7;:20;;-1:-1:-1;;;;;;3097:20:2;-1:-1:-1;;;;;3097:20:2;;;;;;;;;;2976:145::o;3274:210::-;3362:42;3381:22;3362:18;;;;;:42;;:::i;:::-;3354:76;;;;;-1:-1:-1;;;3354:76:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;3434:21;:46;;-1:-1:-1;;;;;;3434:46:2;-1:-1:-1;;;;;3434:46:2;;;;;;;;;;3274:210::o;3615:189::-;3695:38;3714:18;3695;;;;;:38;;:::i;:::-;3687:71;;;;;-1:-1:-1;;;3687:71:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;3762:17;:38;;-1:-1:-1;;;;;;3762:38:2;-1:-1:-1;;;;;3762:38:2;;;;;;;;;;3615:189::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;-1:-1:-1;;;;;1191:10:142;:12;:::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1538:204::-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;-1:-1:-1;;;;;;;;;;;1679:38:142;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;1008:3470:2:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106101815760003560e01c80637b7933b4116100d1578063ba0e43bf1161008a578063e41b07e311610064578063e41b07e314610644578063ef2b0b3914610677578063f2fde38b1461068c578063f851a440146106bf57610181565b8063ba0e43bf146105df578063d759dbeb146105f4578063dd62ed3e1461060957610181565b80637b7933b4146104185780637e37c08c1461042d5780638da5cb5b146104425780638f32d59b14610457578063906571471461048057806395d89b41146105ca57610181565b8063313ce5671161013e57806356e07d701161011857806356e07d701461038857806370a082311461039d578063776d1a01146103d0578063797bf3851461040357610181565b8063313ce5671461031e5780633291c11a14610349578063330691ac1461037357610181565b806306947a3a146101fd57806306fdde031461022e57806318160ddd146102b85780631d0806ae146102df5780631f68f20a146102f45780632f6b600d14610309575b6108fc5a1161018f576101fb565b60185460408051602036601f81018290048202830182019093528282526001600160a01b039093169260609260009181908401838280828437600092018290525084519495509384935091505060208401855af43d604051816000823e8280156101f7578282f35b8282fd5b005b34801561020957600080fd5b506102126106d4565b604080516001600160a01b039092168252519081900360200190f35b34801561023a57600080fd5b506102436106e3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027d578181015183820152602001610265565b50505050905090810190601f1680156102aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c457600080fd5b506102cd61076e565b60408051918252519081900360200190f35b3480156102eb57600080fd5b506102cd610775565b34801561030057600080fd5b506102cd61077b565b34801561031557600080fd5b50610212610781565b34801561032a57600080fd5b50610333610790565b6040805160ff9092168252519081900360200190f35b34801561035557600080fd5b506102cd6004803603602081101561036c57600080fd5b5035610799565b34801561037f57600080fd5b506102cd6107ab565b34801561039457600080fd5b506102cd6107b1565b3480156103a957600080fd5b506102cd600480360360208110156103c057600080fd5b50356001600160a01b03166107b7565b3480156103dc57600080fd5b506101fb600480360360208110156103f357600080fd5b50356001600160a01b03166107d2565b34801561040f57600080fd5b50610212610826565b34801561042457600080fd5b506102cd61083a565b34801561043957600080fd5b506102cd610840565b34801561044e57600080fd5b50610212610846565b34801561046357600080fd5b5061046c610855565b604080519115158252519081900360200190f35b34801561048c57600080fd5b506101fb600480360360608110156104a357600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156104ce57600080fd5b8201836020820111156104e057600080fd5b8035906020019184600183028401116401000000008311171561050257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561055557600080fd5b82018360208201111561056757600080fd5b8035906020019184600183028401116401000000008311171561058957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061087b945050505050565b3480156105d657600080fd5b506102436109a9565b3480156105eb57600080fd5b506102cd610a04565b34801561060057600080fd5b506102cd610a0a565b34801561061557600080fd5b506102cd6004803603604081101561062c57600080fd5b506001600160a01b0381358116916020013516610a10565b34801561065057600080fd5b506102cd6004803603602081101561066757600080fd5b50356001600160a01b0316610a3b565b34801561068357600080fd5b506102cd610a4d565b34801561069857600080fd5b506101fb600480360360208110156106af57600080fd5b50356001600160a01b0316610a53565b3480156106cb57600080fd5b50610212610aa4565b6016546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156107665780601f1061073b57610100808354040283529160200191610766565b820191906000526020600020905b81548152906001019060200180831161074957829003601f168201915b505050505081565b6015545b90565b600e5481565b60055481565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526013602052604090205490565b6107da610855565b61081a576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61082381610ab3565b50565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b031661086c610b27565b6001600160a01b031614905090565b610883610855565b6108c3576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60048054610100600160a81b0319166101006001600160a01b0386160217905581516108f6906002906020850190610c08565b50805161090a906003906020840190610c08565b50600460019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561095957600080fd5b505afa15801561096d573d6000803e3d6000fd5b505050506040513d602081101561098357600080fd5b50516004805460ff191660ff9092169190911790555050670de0b6b3a7640000600e5550565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107665780601f1061073b57610100808354040283529160200191610766565b60095481565b60075481565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b60126020526000908152604090205481565b600b5481565b610a5b610855565b610a9b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61082381610b2b565b6019546001600160a01b031681565b610abc81610bcc565b610b05576040805162461bcd60e51b81526020600482015260156024820152741d185c99d95d081b9bdd08184818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b038116610b705760405162461bcd60e51b8152600401808060200182810382526026815260200180610ca16026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610c0057508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610c4957805160ff1916838001178555610c76565b82800160010185558215610c76579182015b82811115610c76578251825591602001919060010190610c5b565b50610c82929150610c86565b5090565b61077291905b80821115610c825760008155600101610c8c56fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820239aa42488893aca48ea62104c155a0b73de09e11e4f5d9a846b5166803ae93e64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x181 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B7933B4 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xBA0E43BF GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xE41B07E3 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x644 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x677 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x68C JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x6BF JUMPI PUSH2 0x181 JUMP JUMPDEST DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x5DF JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x5F4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x609 JUMPI PUSH2 0x181 JUMP JUMPDEST DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x42D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x442 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x90657147 EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5CA JUMPI PUSH2 0x181 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x56E07D70 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x39D JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x403 JUMPI PUSH2 0x181 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x373 JUMPI PUSH2 0x181 JUMP JUMPDEST DUP1 PUSH4 0x6947A3A EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2B8 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x2F4 JUMPI DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x309 JUMPI JUMPDEST PUSH2 0x8FC GAS GT PUSH2 0x18F JUMPI PUSH2 0x1FB JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 CALLDATASIZE PUSH1 0x1F DUP2 ADD DUP3 SWAP1 DIV DUP3 MUL DUP4 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP3 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH1 0x60 SWAP3 PUSH1 0x0 SWAP2 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP DUP5 MLOAD SWAP5 SWAP6 POP SWAP4 DUP5 SWAP4 POP SWAP2 POP POP PUSH1 0x20 DUP5 ADD DUP6 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x40 MLOAD DUP2 PUSH1 0x0 DUP3 RETURNDATACOPY DUP3 DUP1 ISZERO PUSH2 0x1F7 JUMPI DUP3 DUP3 RETURN JUMPDEST DUP3 DUP3 REVERT JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x212 PUSH2 0x6D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x243 PUSH2 0x6E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x27D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x265 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2AA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x76E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x775 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x77B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x212 PUSH2 0x781 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x333 PUSH2 0x790 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x799 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x7AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x7B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x212 PUSH2 0x826 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x83A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x840 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x212 PUSH2 0x846 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46C PUSH2 0x855 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x87B SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x243 PUSH2 0x9A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0xA04 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0xA0A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x62C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0xA4D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x212 PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x766 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x73B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x766 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x749 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x7DA PUSH2 0x855 JUMP JUMPDEST PUSH2 0x81A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x823 DUP2 PUSH2 0xAB3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x86C PUSH2 0xB27 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x883 PUSH2 0x855 JUMP JUMPDEST PUSH2 0x8C3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH2 0x8F6 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0xC08 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x90A SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xC08 JUMP JUMPDEST POP PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x959 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x96D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP PUSH8 0xDE0B6B3A7640000 PUSH1 0xE SSTORE POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x766 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x73B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x766 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0xA5B PUSH2 0x855 JUMP JUMPDEST PUSH2 0xA9B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x823 DUP2 PUSH2 0xB2B JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xABC DUP2 PUSH2 0xBCC JUMP JUMPDEST PUSH2 0xB05 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1D185C99D95D081B9BDD08184818DBDB9D1C9858DD PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x18 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB70 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCA1 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0xC00 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xC49 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xC76 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xC76 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xC76 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xC5B JUMP JUMPDEST POP PUSH2 0xC82 SWAP3 SWAP2 POP PUSH2 0xC86 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x772 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xC82 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xC8C JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820239AA42488893A 0xCA 0x48 0xEA PUSH3 0x104C15 GAS SIGNEXTEND PUSH20 0xDE09E11E4F5D9A846B5166803AE93E64736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "1008:3470:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2214:4;2201:9;:17;2197:39;;2225:7;;2197:39;2257:7;;2268:28;;;;2288:8;2268:28;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2257:7:2;;;;2268:17;;-1:-1:-1;;2288:8:2;;2268:28;;-1:-1:-1;2288:8:2;;-1:-1:-1;2268:28:2;1:33:-1;99:1;81:16;;74:27;;;-1:-1;2371:11:2;;2268:28;;-1:-1:-1;99:1;;;-1:-1;2371:11:2;-1:-1:-1;;2364:4:2;2354:15;;2346:6;2341:3;2328:61;2405:14;2440:4;2434:11;2472:4;2469:1;2464:3;2449:28;2488:6;2499:37;;;;2568:4;2563:3;2556:17;2499:37;2525:4;2520:3;2513:17;2309:274;1008:3470;1194:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1194:36:2;;;:::i;:::-;;;;-1:-1:-1;;;;;1194:36:2;;;;;;;;;;;;;;1977:18:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1977:18:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1778:80:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1778:80:1;;;:::i;:::-;;;;;;;;;;;;;;;;2441:27:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2441:27:3;;;:::i;2150:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2150:23:3;;;:::i;1233:32:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1233:32:2;;;:::i;2021:21:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2021:21:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2633:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2633:48:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2633:48:3;;:::i;2176:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:29:3;;;:::i;2310:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2310:24:3;;;:::i;2035:96:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2035:96:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2035:96:1;-1:-1:-1;;;;;2035:96:1;;:::i;2756:86:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2756:86:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2756:86:2;-1:-1:-1;;;;;2756:86:2;;:::i;2115:31:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2115:31:3;;;:::i;2407:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2407:31:3;;;:::i;2241:36::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2241:36:3;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;1134:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;:::-;;;;;;;;;;;;;;;;;;4178:298:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4178:298:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;4178:298:2;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;4178:298:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4178:298:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4178:298:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4178:298:2;;;;;;;;-1:-1:-1;4178:298:2;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;4178:298:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4178:298:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4178:298:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4178:298:2;;-1:-1:-1;4178:298:2;;-1:-1:-1;;;;;4178:298:2:i;1998:20:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1998:20:3;;;:::i;2281:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2281:26:3;;;:::i;2208:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2208:30:3;;;:::i;2464:123:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2464:123:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2464:123:1;;;;;;;;;;:::i;2854:51:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2854:51:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2854:51:3;-1:-1:-1;;;;;2854:51:3;;:::i;2337:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2337:27:3;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1351:98:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;1295:20:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1295:20:2;;;:::i;1194:36::-;;;-1:-1:-1;;;;;1194:36:2;;:::o;1977:18:3:-;;;;;;;;;;;;;;-1:-1:-1;;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1778:80:1:-;1842:12;;1778:80;;:::o;2441:27:3:-;;;;:::o;2150:23::-;;;;:::o;1233:32:2:-;;;-1:-1:-1;;;;;1233:32:2;;:::o;2021:21:3:-;;;;;;:::o;2633:48::-;;;;;;;;;;;;;:::o;2176:29::-;;;;:::o;2310:24::-;;;;:::o;2035:96:1:-;-1:-1:-1;;;;;2111:16:1;2091:7;2111:16;;;:8;:16;;;;;;;2035:96::o;2756:86:2:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;2816:22:2;2827:10;2816;:22::i;:::-;2756:86;:::o;2115:31:3:-;;;;;;-1:-1:-1;;;;;2115:31:3;;:::o;2407:::-;;;;:::o;2241:36::-;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;4178:298:2:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;4299:16:2;:36;;-1:-1:-1;;;;;;4299:36:2;;-1:-1:-1;;;;;4299:36:2;;;;;;4340:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;4356:16:2;;;;:6;;:16;;;;;:::i;:::-;;4394;;;;;;;;;-1:-1:-1;;;;;4394:16:2;-1:-1:-1;;;;;4387:33:2;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4387:35:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4387:35:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4387:35:2;4376:8;:46;;-1:-1:-1;;4376:46:2;;;;;;;;;;;-1:-1:-1;;4442:6:2;4427:12;:21;-1:-1:-1;4178:298:2:o;1998:20:3:-;;;;;;;;;;;;;;;-1:-1:-1;;1998:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2281:26;;;;:::o;2208:30::-;;;;:::o;2464:123:1:-;-1:-1:-1;;;;;2558:15:1;;;2538:7;2558:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2464:123::o;2854:51:3:-;;;;;;;;;;;;;:::o;2337:27::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;1295:20:2:-;;;-1:-1:-1;;;;;1295:20:2;;:::o;2976:145::-;3037:30;3056:10;3037:18;:30::i;:::-;3029:64;;;;;-1:-1:-1;;;3029:64:2;;;;;;;;;;;;-1:-1:-1;;;3029:64:2;;;;;;;;;;;;;;;3097:7;:20;;-1:-1:-1;;;;;;3097:20:2;-1:-1:-1;;;;;3097:20:2;;;;;;;;;;2976:145::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;1008:3470:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1008:3470:2;;;-1:-1:-1;1008:3470:2;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "allowance(address,address)": "dd62ed3e",
              "balanceOf(address)": "70a08231",
              "baseRate()": "1f68f20a",
              "checkpointSupply()": "7b7933b4",
              "decimals()": "313ce567",
              "initialPrice()": "1d0806ae",
              "initialize(address,string,string)": "90657147",
              "isOwner()": "8f32d59b",
              "kinkLevel()": "56e07d70",
              "loanParamsIds(uint256)": "3291c11a",
              "loanTokenAddress()": "797bf385",
              "lowUtilBaseRate()": "d759dbeb",
              "lowUtilRateMultiplier()": "7e37c08c",
              "maxScaleRate()": "ef2b0b39",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "rateMultiplier()": "330691ac",
              "setTarget(address)": "776d1a01",
              "sovrynContractAddress()": "06947a3a",
              "symbol()": "95d89b41",
              "targetLevel()": "ba0e43bf",
              "totalSupply()": "18160ddd",
              "transactionLimit(address)": "e41b07e3",
              "transferOwnership(address)": "f2fde38b",
              "wrbtcTokenAddress()": "2f6b600d"
            }
          },
          "userdoc": {
            "methods": {
              "allowance(address,address)": {
                "notice": "Get the amount of iTokens allowed to be spent by a  given account on behalf of the owner."
              },
              "balanceOf(address)": {
                "notice": "Get the amount of iTokens owned by an account."
              },
              "constructor": "Deploy loan token proxy.  Sets ERC20 parameters of the token.",
              "initialize(address,string,string)": {
                "notice": "Public owner cloner for pointed loan token.  Sets ERC20 parameters of the token."
              },
              "setTarget(address)": {
                "notice": "Public owner setter for target address."
              },
              "totalSupply()": {
                "notice": "Get the total supply of iTokens."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * A loan token (iToken) is created as a proxy to an upgradable token contract. * Examples of loan tokens on Sovryn are iRBTC, iDOC, iUSDT, iBPro, iSOV (near future). * Lenders receive iTokens that collect interest from the lending pool which they can redeem by withdrawing them. The i in iToken stands for interest. * Do not confuse iTokens with underlying tokens. iDOC is an iToken (loan token) whilest DOC is the underlying token (currency)."
          }
        }
      },
      "contracts/connectors/loantoken/LoanTokenBase.sol": {
        "LoanTokenBase": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "checkpointSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "initialPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kinkLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "loanParamsIds",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "loanTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilBaseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilRateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxScaleRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "targetLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "transactionLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Loan Token Base contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600090815561001c6001600160e01b0361006f16565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610073565b3390565b6105b1806100826000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80637e37c08c116100a2578063ba0e43bf11610071578063ba0e43bf14610265578063d759dbeb1461026d578063e41b07e314610275578063ef2b0b391461029b578063f2fde38b146102a357610116565b80637e37c08c146102315780638da5cb5b146102395780638f32d59b1461024157806395d89b411461025d57610116565b80633291c11a116100e95780633291c11a146101d8578063330691ac146101f557806356e07d70146101fd578063797bf385146102055780637b7933b41461022957610116565b806306fdde031461011b5780631d0806ae146101985780631f68f20a146101b2578063313ce567146101ba575b600080fd5b6101236102cb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a0610356565b60408051918252519081900360200190f35b6101a061035c565b6101c2610362565b6040805160ff9092168252519081900360200190f35b6101a0600480360360208110156101ee57600080fd5b503561036b565b6101a061037d565b6101a0610383565b61020d610389565b604080516001600160a01b039092168252519081900360200190f35b6101a061039d565b6101a06103a3565b61020d6103a9565b6102496103b8565b604080519115158252519081900360200190f35b6101236103de565b6101a0610439565b6101a061043f565b6101a06004803603602081101561028b57600080fd5b50356001600160a01b0316610445565b6101a0610457565b6102c9600480360360208110156102b957600080fd5b50356001600160a01b031661045d565b005b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561034e5780601f106103235761010080835404028352916020019161034e565b820191906000526020600020905b81548152906001019060200180831161033157829003601f168201915b505050505081565b600e5481565b60055481565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b03166103cf6104b1565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561034e5780601f106103235761010080835404028352916020019161034e565b60095481565b60075481565b60126020526000908152604090205481565b600b5481565b6104656103b8565b6104a5576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6104ae816104b5565b50565b3390565b6001600160a01b0381166104fa5760405162461bcd60e51b81526004018080602001828103825260268152602001806105576026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820db1f775504900bcdd29f613cf6b93b693a0edc3f4a89487f54c567702560fc1864736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH2 0x1C PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x6F AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x73 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x5B1 DUP1 PUSH2 0x82 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x116 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E37C08C GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xBA0E43BF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x29B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2A3 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x25D JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x3291C11A GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x229 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1BA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x356 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x35C JUMP JUMPDEST PUSH2 0x1C2 PUSH2 0x362 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x36B JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x37D JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x383 JUMP JUMPDEST PUSH2 0x20D PUSH2 0x389 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x39D JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x20D PUSH2 0x3A9 JUMP JUMPDEST PUSH2 0x249 PUSH2 0x3B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x123 PUSH2 0x3DE JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x43F JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x445 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x457 JUMP JUMPDEST PUSH2 0x2C9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x45D JUMP JUMPDEST STOP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x34E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x323 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x34E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x331 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3CF PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x34E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x323 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x34E JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x465 PUSH2 0x3B8 JUMP JUMPDEST PUSH2 0x4A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4AE DUP2 PUSH2 0x4B5 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x4FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x557 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820DB1F775504900B 0xCD 0xD2 SWAP16 PUSH2 0x3CF6 0xB9 EXTCODESIZE PUSH10 0x3A0EDC3F4A89487F54C5 PUSH8 0x702560FC1864736F PUSH13 0x63430005110032000000000000 ",
              "sourceMap": "1710:1216:3:-;;;493:1:143;661:55;;;;697:12:142;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;1710:1216:3;;780:87:137;853:10;780:87;:::o;1710:1216:3:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101165760003560e01c80637e37c08c116100a2578063ba0e43bf11610071578063ba0e43bf14610265578063d759dbeb1461026d578063e41b07e314610275578063ef2b0b391461029b578063f2fde38b146102a357610116565b80637e37c08c146102315780638da5cb5b146102395780638f32d59b1461024157806395d89b411461025d57610116565b80633291c11a116100e95780633291c11a146101d8578063330691ac146101f557806356e07d70146101fd578063797bf385146102055780637b7933b41461022957610116565b806306fdde031461011b5780631d0806ae146101985780631f68f20a146101b2578063313ce567146101ba575b600080fd5b6101236102cb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a0610356565b60408051918252519081900360200190f35b6101a061035c565b6101c2610362565b6040805160ff9092168252519081900360200190f35b6101a0600480360360208110156101ee57600080fd5b503561036b565b6101a061037d565b6101a0610383565b61020d610389565b604080516001600160a01b039092168252519081900360200190f35b6101a061039d565b6101a06103a3565b61020d6103a9565b6102496103b8565b604080519115158252519081900360200190f35b6101236103de565b6101a0610439565b6101a061043f565b6101a06004803603602081101561028b57600080fd5b50356001600160a01b0316610445565b6101a0610457565b6102c9600480360360208110156102b957600080fd5b50356001600160a01b031661045d565b005b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561034e5780601f106103235761010080835404028352916020019161034e565b820191906000526020600020905b81548152906001019060200180831161033157829003601f168201915b505050505081565b600e5481565b60055481565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b03166103cf6104b1565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561034e5780601f106103235761010080835404028352916020019161034e565b60095481565b60075481565b60126020526000908152604090205481565b600b5481565b6104656103b8565b6104a5576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6104ae816104b5565b50565b3390565b6001600160a01b0381166104fa5760405162461bcd60e51b81526004018080602001828103825260268152602001806105576026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820db1f775504900bcdd29f613cf6b93b693a0edc3f4a89487f54c567702560fc1864736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x116 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E37C08C GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xBA0E43BF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x29B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2A3 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x25D JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x3291C11A GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x229 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1BA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x356 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x35C JUMP JUMPDEST PUSH2 0x1C2 PUSH2 0x362 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x36B JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x37D JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x383 JUMP JUMPDEST PUSH2 0x20D PUSH2 0x389 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x39D JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x20D PUSH2 0x3A9 JUMP JUMPDEST PUSH2 0x249 PUSH2 0x3B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x123 PUSH2 0x3DE JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x43F JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x445 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x457 JUMP JUMPDEST PUSH2 0x2C9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x45D JUMP JUMPDEST STOP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x34E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x323 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x34E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x331 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3CF PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x34E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x323 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x34E JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x465 PUSH2 0x3B8 JUMP JUMPDEST PUSH2 0x4A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4AE DUP2 PUSH2 0x4B5 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x4FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x557 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820DB1F775504900B 0xCD 0xD2 SWAP16 PUSH2 0x3CF6 0xB9 EXTCODESIZE PUSH10 0x3A0EDC3F4A89487F54C5 PUSH8 0x702560FC1864736F PUSH13 0x63430005110032000000000000 ",
              "sourceMap": "1710:1216:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1710:1216:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1977:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2441:27;;;:::i;:::-;;;;;;;;;;;;;;;;2150:23;;;:::i;2021:21::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2633:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2633:48:3;;:::i;2176:29::-;;;:::i;2310:24::-;;;:::i;2115:31::-;;;:::i;:::-;;;;-1:-1:-1;;;;;2115:31:3;;;;;;;;;;;;;;2407;;;:::i;2241:36::-;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;1998:20:3;;;:::i;2281:26::-;;;:::i;2208:30::-;;;:::i;2854:51::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2854:51:3;-1:-1:-1;;;;;2854:51:3;;:::i;2337:27::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;1977:18:3;;;;;;;;;;;;;;-1:-1:-1;;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2441:27::-;;;;:::o;2150:23::-;;;;:::o;2021:21::-;;;;;;:::o;2633:48::-;;;;;;;;;;;;;:::o;2176:29::-;;;;:::o;2310:24::-;;;;:::o;2115:31::-;;;;;;-1:-1:-1;;;;;2115:31:3;;:::o;2407:::-;;;;:::o;2241:36::-;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1998:20:3:-;;;;;;;;;;;;;;;-1:-1:-1;;1998:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2281:26;;;;:::o;2208:30::-;;;;:::o;2854:51::-;;;;;;;;;;;;;:::o;2337:27::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "baseRate()": "1f68f20a",
              "checkpointSupply()": "7b7933b4",
              "decimals()": "313ce567",
              "initialPrice()": "1d0806ae",
              "isOwner()": "8f32d59b",
              "kinkLevel()": "56e07d70",
              "loanParamsIds(uint256)": "3291c11a",
              "loanTokenAddress()": "797bf385",
              "lowUtilBaseRate()": "d759dbeb",
              "lowUtilRateMultiplier()": "7e37c08c",
              "maxScaleRate()": "ef2b0b39",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "rateMultiplier()": "330691ac",
              "symbol()": "95d89b41",
              "targetLevel()": "ba0e43bf",
              "transactionLimit(address)": "e41b07e3",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * Specific loan related storage for iTokens. * An loan token or iToken is a representation of a user funds in the pool and the interest they've earned. The redemption value of iTokens continually increase from the accretion of interest paid into the lending pool by borrowers. The user can sell iTokens to exit its position. The user might potentially use them as collateral wherever applicable. * There are three main tokens in the bZx system, iTokens, pTokens, and BZRX tokens. The bZx system of lending and borrowing depends on iTokens and pTokens, and when users lend or borrow money on bZx, their crypto assets go into or come out of global liquidity pools, which are pools of funds shared between many different exchanges. When lenders supply funds into the global liquidity pools, they automatically receive iTokens; When users borrow money to open margin trading positions, they automatically receive pTokens. The system is also designed to use the BZRX tokens, which are only used to pay fees on the network currently."
          }
        }
      },
      "contracts/connectors/loantoken/LoanTokenLogicLM.sol": {
        "LoanTokenLogicLM": {
          "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": "burner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                }
              ],
              "name": "FlashBorrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "minter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "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": false,
                  "internalType": "address[]",
                  "name": "addresses",
                  "type": "address[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "limits",
                  "type": "uint256[]"
                }
              ],
              "name": "SetTransactionLimits",
              "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"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "VERSION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assetBorrow",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "assetSupply",
                  "type": "uint256"
                }
              ],
              "name": "_supplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "assetBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "avgBorrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "borrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "burnAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "useLM",
                  "type": "bool"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "redeemed",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "burnAmount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "loanAmountPaid",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "funcId",
                  "type": "string"
                }
              ],
              "name": "checkPause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                }
              ],
              "name": "checkPriceDivergence",
              "outputs": [],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "checkpointPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "checkpointSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "collateralTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "bool[]",
                  "name": "isTorqueLoans",
                  "type": "bool[]"
                }
              ],
              "name": "disableLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "earlyAccessToken",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getBorrowAmountForDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getDepositAmountForBorrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getEstimatedMarginDetails",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                }
              ],
              "name": "getMaxEscrowAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxEscrowAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "initialPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kinkLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidityMiningAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "loanParamsIds",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "loanTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilBaseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilRateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "marginTrade",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "affiliateReferrer",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "marginTradeAffiliate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "marketLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxScaleRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "mintAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "useLM",
                  "type": "bool"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "minted",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                }
              ],
              "name": "nextBorrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "supplyAmount",
                  "type": "uint256"
                }
              ],
              "name": "nextSupplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pauser",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "profitOf",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "setAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_baseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_rateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilBaseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilRateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_targetLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_kinkLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_maxScaleRate",
                  "type": "uint256"
                }
              ],
              "name": "setDemandCurve",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "LMAddress",
                  "type": "address"
                }
              ],
              "name": "setLiquidityMiningAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_pauser",
                  "type": "address"
                }
              ],
              "name": "setPauser",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "id",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bool",
                      "name": "active",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "minInitialMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanParamsStruct.LoanParams[]",
                  "name": "loanParamsList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bool",
                  "name": "areTorqueLoans",
                  "type": "bool"
                }
              ],
              "name": "setupLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynContractAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "supplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "targetLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "target_",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "funcId",
                  "type": "string"
                },
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "name": "toggleFunctionPause",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tokenPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAssetBorrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAssetSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assetSupply",
                  "type": "uint256"
                }
              ],
              "name": "totalSupplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "transactionLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "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"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "_supplyInterestRate(uint256,uint256)": {
                "params": {
                  "assetBorrow": "The amount of loan tokens on debt.",
                  "assetSupply": "The amount of loan tokens supplied."
                },
                "return": "The next supply interest adjustment."
              },
              "allowance(address,address)": {
                "params": {
                  "_owner": "The account owner of the iTokens.",
                  "_spender": "The account allowed to send the iTokens."
                },
                "return": "The number of iTokens an account is allowing the spender  to send on its behalf."
              },
              "approve(address,uint256)": {
                "params": {
                  "_spender": "The account address that will be able to spend the tokens.",
                  "_value": "The amount of tokens allowed to spend."
                }
              },
              "assetBalanceOf(address)": {
                "return": "The user's balance of underlying token."
              },
              "avgBorrowInterestRate()": {
                "return": "The average borrow interest."
              },
              "balanceOf(address)": {
                "params": {
                  "_owner": "The account owner of the iTokens."
                },
                "return": "The number of iTokens an account owns."
              },
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": {
                "params": {
                  "borrower": "The one paying for the collateral.",
                  "collateralTokenAddress": "The address of the token to be used as  collateral. Cannot be the loan token address.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.  (150% of the withdrawn amount worth in collateral tokens).",
                  "initialLoanDuration": "The duration of the loan in seconds.  If the loan is not paid back until then, it'll need to be rolled over.",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "receiver": "The one receiving the withdrawn amount.",
                  "withdrawAmount": "The amount to be withdrawn (actually borrowed)."
                },
                "return": "New principal and new collateral added to loan."
              },
              "borrowInterestRate()": {
                "return": "The borrow interest rate."
              },
              "burn(address,uint256)": {
                "params": {
                  "burnAmount": "The amount of loan tokens to redeem.",
                  "receiver": "The account getting the minted tokens."
                },
                "return": "The amount of underlying tokens payed to lender."
              },
              "burn(address,uint256,bool)": {
                "params": {
                  "burnAmount": "The amount of pool tokens to redeem.",
                  "receiver": "the receiver of the underlying tokens. note: potetial LM rewards are always sent to the msg.sender",
                  "useLM": "if true -> deposit the pool tokens into the Liquidity Mining contract"
                }
              },
              "checkPause(string)": {
                "details": "Used to read externally from the smart contract to see if a  function is paused.",
                "params": {
                  "funcId": "The function ID, the selector."
                },
                "return": "isPaused Whether the function is paused: true or false."
              },
              "checkpointPrice(address)": {
                "params": {
                  "_user": "The user account as the mapping index."
                },
                "return": "The price on the checkpoint for this user."
              },
              "disableLoanParams(address[],bool[])": {
                "params": {
                  "collateralTokens": "The array of collateral tokens.",
                  "isTorqueLoans": "Whether the loan is a torque loan."
                }
              },
              "getBorrowAmountForDeposit(uint256,uint256,address)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "depositAmount": "The amount of deposit.",
                  "initialLoanDuration": "The duration of the loan."
                },
                "return": "The amount of borrow allowed."
              },
              "getDepositAmountForBorrow(uint256,uint256,address)": {
                "params": {
                  "borrowAmount": "The amount of borrow.",
                  "collateralTokenAddress": "The token address of collateral.",
                  "initialLoanDuration": "The duration of the loan."
                },
                "return": "The amount of deposit required."
              },
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanTokenSent": "The number of loan tokens provided by the user."
                },
                "return": "The principal, the collateral and the interestRate."
              },
              "getMaxEscrowAmount(uint256)": {
                "details": "maxEscrowAmount = liquidity * (100 - interestForDuration) / 100",
                "params": {
                  "leverageAmount": "The chosen multiplier with 18 decimals."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanDataBytes": "Additional loan data (not in use for token swaps).",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "loanTokenSent": "The number of loan tokens provided by the user.",
                  "trader": "The account that performs this trade."
                },
                "return": "New principal and new collateral added to trade."
              },
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": {
                "params": {
                  "affiliateReferrer": "The address of the referrer from affiliates program.",
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanDataBytes": "Additional loan data (not in use for token swaps).",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "loanTokenSent": "The number of loan tokens provided by the user.",
                  "minReturn": "Minimum position size in the collateral tokens",
                  "trader": "The account that performs this trade."
                },
                "return": "New principal and new collateral added to trade."
              },
              "marketLiquidity()": {
                "return": "The market liquidity."
              },
              "mint(address,uint256)": {
                "params": {
                  "depositAmount": "The amount of underlying tokens provided on the  loan. (Not the number of loan tokens to mint).",
                  "receiver": "The account getting the minted tokens."
                },
                "return": "The amount of loan tokens minted."
              },
              "mint(address,uint256,bool)": {
                "params": {
                  "depositAmount": "The amount of underlying tokens provided on the loan.\t\t\t\t\t(Not the number of loan tokens to mint).",
                  "receiver": "the receiver of the tokens",
                  "useLM": "if true -> deposit the pool tokens into the Liquidity Mining contract"
                }
              },
              "nextBorrowInterestRate(uint256)": {
                "params": {
                  "borrowAmount": "The amount of tokens to borrow."
                },
                "return": "The next borrow interest rate."
              },
              "nextSupplyInterestRate(uint256)": {
                "params": {
                  "supplyAmount": "The amount of tokens supplied."
                },
                "return": "Interest that lenders are currently receiving when supplying a given amount of tokens to the pool."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "profitOf(address)": {
                "params": {
                  "user": "The user address."
                },
                "return": "The profit of a user."
              },
              "setAdmin(address)": {
                "params": {
                  "_admin": "The address of the account to grant admin permissions."
                }
              },
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": {
                "details": "These params should be percentages represented  like so: 5% = 5000000000000000000 /// 18 digits precision. rateMultiplier + baseRate can't exceed 100%\t * To maintain a healthy credit score, it's important to keep your credit utilization rate (CUR) low (_lowUtilBaseRate). In general you don't want your CUR to exceed 30%, but increasingly financial experts are recommending that you don't want to go above 10% if you really want an excellent credit score.\t * Interest rates tend to cluster around the kink level of a kinked interest rate model. More info at https://arxiv.org/pdf/2006.13922.pdf and https://compound.finance/governance/proposals/12",
                "params": {
                  "_baseRate": "The interest rate.",
                  "_kinkLevel": "The level that interest rates cluster on kinked model.",
                  "_lowUtilBaseRate": "The credit utilization rate (CUR) low value.",
                  "_lowUtilRateMultiplier": "The precision multiplier for low util base rate.",
                  "_maxScaleRate": "The maximum rate of the scale.",
                  "_rateMultiplier": "The precision multiplier for base rate.",
                  "_targetLevel": "The target level."
                }
              },
              "setLiquidityMiningAddress(address)": {
                "params": {
                  "LMAddress": "the address of the liquidity mining contract"
                }
              },
              "setPauser(address)": {
                "params": {
                  "_pauser": "The address of the account to grant pause permissions."
                }
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": {
                "params": {
                  "areTorqueLoans": "Whether the loan is a torque loan.",
                  "loanParamsList": "The array of loan parameters."
                }
              },
              "supplyInterestRate()": {
                "return": "Interest that lenders are currently receiving when supplying to the pool."
              },
              "toggleFunctionPause(string,bool)": {
                "details": "Combining the hash of \"iToken_FunctionPause\" string and a function  selector gets a slot to write a flag for pause state.",
                "params": {
                  "funcId": "The ID of a function, the selector.",
                  "isPaused": "true/false value of the flag."
                }
              },
              "tokenPrice()": {
                "return": "The loan token price."
              },
              "totalAssetBorrow()": {
                "return": "The total amount of loan tokens on debt."
              },
              "totalAssetSupply()": {
                "details": "Wrapper for internal _totalAssetSupply function.",
                "return": "The total amount of loan tokens on supply."
              },
              "totalSupply()": {
                "return": "The total number of iTokens in existence as of now."
              },
              "totalSupplyInterestRate(uint256)": {
                "params": {
                  "assetSupply": "The amount of loan tokens supplied."
                },
                "return": "Interest that lenders are currently receiving when supplying a given amount of loan tokens to the pool."
              },
              "transfer(address,uint256)": {
                "params": {
                  "_to": "The recipient of the tokens.",
                  "_value": "The amount of tokens sent."
                },
                "return": "Success true/false."
              },
              "transferFrom(address,address,uint256)": {
                "return": "A boolean value indicating whether the operation succeeded."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052600160009081556200001e6001600160e01b036200007216565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000076565b3390565b615b6680620000866000396000f3fe6080604052600436106103d95760003560e01c80637e37c08c116101fd578063ca37e66611610118578063e3cded61116100ab578063ef2b0b391161007a578063ef2b0b3914610aa3578063f2fde38b14610ab8578063f6b69f9914610ad8578063f851a44014610aeb578063ffa1ad7414610b00576103d9565b8063e3cded6114610a23578063e41b07e314610a43578063e697d2ee14610a63578063eebc508114610a83576103d9565b8063d759dbeb116100e7578063d759dbeb146109ae578063d8f06c83146109c3578063d97206a4146109e3578063dd62ed3e14610a03576103d9565b8063ca37e66614610939578063cb926cb31461094e578063d1a1beb41461096e578063d65a50211461098e576103d9565b806395d89b4111610190578063a9059cbb1161015f578063a9059cbb146108c4578063b9fe1a8f146108e4578063ba0e43bf14610904578063be19421714610919576103d9565b806395d89b41146108655780639bda3a981461087a5780639dc29fac1461088f5780639fd0506d146108af576103d9565b80638da5cb5b116101cc5780638da5cb5b146108115780638ee6c4e6146108265780638f32d59b1461083b5780638fb807c514610850576103d9565b80637e37c08c146107b25780637ff9b596146107c7578063829b38f4146107dc5780638325a1c0146107fc576103d9565b80632f6b600d116102f8578063612ef80b1161028b57806370a082311161025a57806370a08231146107285780637288b3441461074857806376fd4fdf14610768578063797bf385146107885780637b7933b41461079d576103d9565b8063612ef80b146106a4578063631a3ef8146106b95780636b40cd40146106d9578063704b6c0214610708576103d9565b806340c10f19116102c757806340c10f191461063a57806344a4a0031461065a57806354198ce91461066f57806356e07d701461068f576103d9565b80632f6b600d146105ce578063313ce567146105e35780633291c11a14610605578063330691ac14610625576103d9565b806318498b1d1161037057806323b872dd1161033f57806323b872dd1461055a57806328a02f191461057a5780632d88af4a1461059b5780632ea295fa146105bb576103d9565b806318498b1d146104f95780631d0806ae1461051b5780631f68f20a1461053057806320f6d07c14610545576103d9565b8063095ea7b3116103ac578063095ea7b31461048257806309ec6b6b146104af57806312416898146104c457806318160ddd146104e4576103d9565b806304797930146103e857806306947a3a1461041e57806306b3efd61461044057806306fdde0314610460575b3480156103e557600080fd5b50005b3480156103f457600080fd5b50610408610403366004614a89565b610b15565b6040516104159190615700565b60405180910390f35b34801561042a57600080fd5b50610433610cbe565b6040516104159190615577565b34801561044c57600080fd5b5061040861045b366004614505565b610ccd565b34801561046c57600080fd5b50610475610db9565b604051610415919061577f565b34801561048e57600080fd5b506104a261049d3660046145c8565b610e44565b60405161041591906156f2565b3480156104bb57600080fd5b50610408610eaf565b3480156104d057600080fd5b506104086104df3660046149fe565b610ec4565b3480156104f057600080fd5b50610408610eef565b34801561050557600080fd5b50610519610514366004614b2d565b610ef5565b005b34801561052757600080fd5b50610408610f38565b34801561053c57600080fd5b50610408610f3e565b34801561055157600080fd5b50610408610f44565b34801561056657600080fd5b506104a261057536600461457b565b610fd3565b61058d610588366004614906565b61109c565b604051610415929190615980565b3480156105a757600080fd5b506105196105b6366004614505565b6112c1565b61058d6105c936600461475f565b611307565b3480156105da57600080fd5b506104336115e7565b3480156105ef57600080fd5b506105f86115f6565b60405161041591906159a9565b34801561061157600080fd5b506104086106203660046149fe565b6115ff565b34801561063157600080fd5b50610408611611565b34801561064657600080fd5b506104086106553660046145c8565b611617565b34801561066657600080fd5b50610408611658565b34801561067b57600080fd5b5061040861068a366004614505565b61166a565b34801561069b57600080fd5b5061040861170b565b3480156106b057600080fd5b50610408611711565b3480156106c557600080fd5b506104086106d4366004614a89565b611742565b3480156106e557600080fd5b506106f96106f4366004614acc565b6118e2565b6040516104159392919061598e565b34801561071457600080fd5b50610519610723366004614505565b6119f3565b34801561073457600080fd5b50610408610743366004614505565b611a39565b34801561075457600080fd5b50610408610763366004614a3a565b611a54565b34801561077457600080fd5b506104086107833660046145f8565b611b37565b34801561079457600080fd5b50610433611be2565b3480156107a957600080fd5b50610408611bf6565b3480156107be57600080fd5b50610408611bfc565b3480156107d357600080fd5b50610408611c02565b3480156107e857600080fd5b506104086107f73660046149fe565b611c40565b34801561080857600080fd5b50610408611cc0565b34801561081d57600080fd5b50610433611ccc565b34801561083257600080fd5b50610433611cdb565b34801561084757600080fd5b506104a2611cea565b34801561085c57600080fd5b50610408611d10565b34801561087157600080fd5b50610475611d40565b34801561088657600080fd5b50610433611d9b565b34801561089b57600080fd5b506104086108aa3660046145c8565b611daa565b3480156108bb57600080fd5b50610433611e1e565b3480156108d057600080fd5b506104a26108df3660046145c8565b611e2d565b3480156108f057600080fd5b506104086108ff3660046149fe565b611e3d565b34801561091057600080fd5b50610408611e48565b34801561092557600080fd5b506104a2610934366004614995565b611e4e565b34801561094557600080fd5b50610433611ed0565b34801561095a57600080fd5b50610519610969366004614505565b611edf565b34801561097a57600080fd5b506104086109893660046145f8565b611f25565b34801561099a57600080fd5b506104086109a93660046149fe565b611f6f565b3480156109ba57600080fd5b50610408611f82565b3480156109cf57600080fd5b506105196109de3660046146dd565b611f88565b3480156109ef57600080fd5b506105196109fe366004614c29565b612157565b348015610a0f57600080fd5b50610408610a1e366004614541565b61225e565b348015610a2f57600080fd5b50610519610a3e3660046149c9565b612289565b348015610a4f57600080fd5b50610408610a5e366004614505565b61232e565b348015610a6f57600080fd5b50610519610a7e36600461463b565b612340565b348015610a8f57600080fd5b50610408610a9e366004614505565b6124f1565b348015610aaf57600080fd5b5061040861250c565b348015610ac457600080fd5b50610519610ad3366004614505565b612512565b61058d610ae6366004614826565b612542565b348015610af757600080fd5b50610433612612565b348015610b0c57600080fd5b50610408612621565b60008315610cb7576001600160a01b038216610b3a576017546001600160a01b031691505b600060106000846001604051602001610b54929190615503565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506001600160a01b039182169363e762319f936101009091049092169187918a91869163ca74a5d991610bc5918a9101615700565b60206040518083038186803b158015610bdd57600080fd5b505afa158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c159190810190614a1c565b60016040518663ffffffff1660e01b8152600401610c379594939291906155f1565b60206040518083038186803b158015610c4f57600080fd5b505afa158015610c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c879190810190614a1c565b9150610c9b82610c95611d10565b86612626565b9350610ca9915061269f9050565b821115610cb557600091505b505b9392505050565b6016546001600160a01b031681565b601c5460009081906001600160a01b031615610d6857601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690610d159030908790600401615593565b60206040518083038186803b158015610d2d57600080fd5b505afa158015610d41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d659190810190614a1c565b90505b610db0670de0b6b3a7640000610da4610d7f611c02565b610d9885610d8c89611a39565b9063ffffffff6126d516565b9063ffffffff6126fa16565b9063ffffffff61273416565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610e3c5780601f10610e1157610100808354040283529160200191610e3c565b820191906000526020600020905b815481529060010190602001808311610e1f57829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e9d908690615700565b60405180910390a35060015b92915050565b6000610ebe6104df6000612776565b90505b90565b600080610ecf610f44565b90508015610ee957610ee18184611a54565b915050610db4565b50919050565b60155490565b6000610f03868686866118e2565b5091505081811015610f305760405162461bcd60e51b8152600401610f2790615790565b60405180910390fd5b505050505050565b600e5481565b60055481565b6016546004805460405163250f447f60e11b81526000936001600160a01b0390811693634a1e88fe93610f839330936101009092049091169101615593565b60206040518083038186803b158015610f9b57600080fd5b505afa158015610faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ebe9190810190614a1c565b60165460405163115dd4b160e01b8152600091611094918691869186916001600160a01b03169063115dd4b19061100e903390600401615585565b60206040518083038186803b15801561102657600080fd5b505afa15801561103a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061105e9190810190614741565b61108b576001600160a01b038816600090815260146020908152604080832033845290915290205461108f565b6000195b6127b0565b949350505050565b6000806001600054146110c15760405162461bcd60e51b8152600401610f2790615930565b60026000556110ce612983565b6110db8989898988610ef5565b6001600160a01b0386166110f8576017546001600160a01b031695505b6004546001600160a01b0387811661010090920416141561112b5760405162461bcd60e51b8152600401610f2790615840565b8915806111405750336001600160a01b038616145b61115c5760405162461bcd60e51b8152600401610f2790615950565b6001600160a01b0386166000908152601260205260409020541561119f576001600160a01b03861660009081526012602052604090205487111561119f57600080fd5b60045461010090046001600160a01b0316600090815260126020526040902054156111f05760045461010090046001600160a01b03166000908152601260205260409020548811156111f057600080fd5b60006111fd87898b612a03565b90508061121c5760405162461bcd60e51b8152600401610f2790615870565b611224614205565b61122c614223565b3082526001600160a01b038816602080840182905260408401919091528101839052606081018b9052608081018a9052611264612c30565b6112758c8260016020020151612cd6565b825260208201526112966f4b3b4ca85a86c47a098a2240000000008d612734565b9b506112a88d60008e8c86868c612d25565b6001600055909e909d509b505050505050505050505050565b6112c9611cea565b6112e55760405162461bcd60e51b8152600401610f27906158d0565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b60008060016000541461132c5760405162461bcd60e51b8152600401610f2790615930565b60026000558861134e5760405162461bcd60e51b8152600401610f2790615960565b611356612983565b6001600160a01b03861660009081526012602052604090205415611399576001600160a01b03861660009081526012602052604090205487111561139957600080fd5b3415806113a557508634145b80156113b95750861515806113b957508915155b80156113e057506001600160a01b0386161515806113d657503415155b806113e057508915155b80156113fc57508915806113fc5750336001600160a01b038616145b6114185760405162461bcd60e51b8152600401610f2790615800565b6001600160a01b038616611435576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156114685760405162461bcd60e51b8152600401610f27906157a0565b611470612c30565b611478614205565b611480614223565b3082526001600160a01b03878116602080850191909152908716604084015281018b90526114b88b6114b26000612776565b8c612626565b8360006020020184600260200201856001602002019290925291905252888160046020020181815250506115cf8c8c601660009054906101000a90046001600160a01b03166001600160a01b031663ca74a5d9601060008e6001604051602001611523929190615503565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020546040518263ffffffff1660e01b81526004016115679190615700565b60206040518083038186803b15801561157f57600080fd5b505afa158015611593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115b79190810190614a1c565b8b868660405180602001604052806000815250612d25565b6001600055909d909c509a5050505050505050505050565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600060016000541461163b5760405162461bcd60e51b8152600401610f2790615930565b600260005561164a8383612f84565b90505b600160005592915050565b6000610ebe611665610f44565b613090565b600080827f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb660001b6040516020016116a3929190615529565b604051602081830303815290604052805190602001209050610db08160136000866001600160a01b03166001600160a01b03168152602001908152602001600020546116ed611c02565b6001600160a01b0387166000908152601160205260409020546130c8565b600a5481565b60008061171e6000612776565b9050600061172a610f44565b90508082111561173d5790039050610ec1565b505090565b60008315610cb757600061175885610c95611d10565b9250505061176461269f565b8111610cb5576001600160a01b038316611787576017546001600160a01b031692505b6000601060008560016040516020016117a1929190615503565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506118d993600a936001600160a01b03938416936325decac09361010090930416918a918991869163ca74a5d991611817918c9101615700565b60206040518083038186803b15801561182f57600080fd5b505afa158015611843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118679190810190614a1c565b60016040518663ffffffff1660e01b81526004016118899594939291906155f1565b60206040518083038186803b1580156118a157600080fd5b505afa1580156118b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d8c9190810190614a1c565b92505050610cb7565b600080806001600160a01b038416611903576017546001600160a01b031693505b6000611910858789612a03565b905061191c8882612cd6565b909450915061192961269f565b8411156119405750600092508291508190506119e9565b611950878563ffffffff6126d516565b6016546004805460405163d67f707760e01b8152939a506001600160a01b039283169363d67f7077936119959361010090930416918a918d918d918a918d9101615633565b60206040518083038186803b1580156119ad57600080fd5b505afa1580156119c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119e59190810190614a1c565b9250505b9450945094915050565b6119fb611cea565b611a175760405162461bcd60e51b8152600401610f27906158d0565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60008215801590611a655750828210155b15610ea957611b30701d6329f1c35ca4bfabb9f5610000000000610da4611b1a68056bc75e2d63100000601660009054906101000a90046001600160a01b03166001600160a01b0316634699f8466040518163ffffffff1660e01b815260040160206040518083038186803b158015611add57600080fd5b505afa158015611af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b159190810190614a1c565b613122565b610d98611b278888613164565b610d9889613090565b9050610ea9565b6000600160005414611b5b5760405162461bcd60e51b8152600401610f2790615930565b60026000558115611b7657611b6f83613196565b9050611b82565b611b7f8361333c565b90505b8015611bd657611bd6600460019054906101000a90046001600160a01b0316858360405180604001604052806015815260200174185cdcd95d081d1c985b9cd9995c8819985a5b1959605a1b8152506134f3565b60016000559392505050565b60045461010090046001600160a01b031681565b600d5481565b60085481565b600f546000908190426001600160581b03908116911614611c2957611c25613553565b9150505b611c3a611c3582612776565b61361f565b91505090565b600080611c5f61016d610da4601c600b546126fa90919063ffffffff16565b90506000611c7c68056bc75e2d631000008363ffffffff61312216565b90506000611c9968056bc75e2d63100000610da484610d98611711565b9050611cb785610da483670de0b6b3a764000063ffffffff6126fa16565b95945050505050565b6000610ebe600061364e565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316611d016136a4565b6001600160a01b031614905090565b600f546000908190426001600160581b03908116911614611d3757611d33613553565b9150505b611c3a81612776565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e3c5780601f10610e1157610100808354040283529160200191610e3c565b6018546001600160a01b031681565b6000600160005414611dce5760405162461bcd60e51b8152600401610f2790615930565b6002600055611ddc8261333c565b9050801561164d5761164d600460019054906101000a90046001600160a01b03168483604051806040016040528060018152602001603560f81b8152506134f3565b601b546001600160a01b031681565b6000610cb73384846000196127b0565b6000610ea98261364e565b60095481565b60008082604051602001611e62919061556b565b6040516020818303038152906040528051906020012090506000817fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001611eaf92919061554f565b60408051808303601f19018152919052805160209091012054949350505050565b601a546001600160a01b031681565b611ee7611cea565b611f035760405162461bcd60e51b8152600401610f27906158d0565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000600160005414611f495760405162461bcd60e51b8152600401610f2790615930565b60026000558115611f6557611f5e84846136a8565b9050611bd6565b611f5e8484612f84565b6000610ea96104df83610d8c6000612776565b60075481565b611f90611cea565b80611fa557506019546001600160a01b031633145b611fc15760405162461bcd60e51b8152600401610f27906158d0565b60045460609061010090046001600160a01b031660005b845181101561204b5781858281518110611fee57fe5b6020026020010151606001906001600160a01b031690816001600160a01b03168152505083612020576224ea00612023565b60005b62ffffff1685828151811061203457fe5b602090810291909101015160e00152600101611fd8565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e9061207c9087906004016156e1565b600060405180830381600087803b15801561209657600080fd5b505af11580156120aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120d291908101906146a9565b915060005b8251811015612150578281815181106120ec57fe5b60200260200101516010600087848151811061210457fe5b60200260200101516080015187604051602001612122929190615503565b60408051601f19818403018152918152815160209283012083529082019290925201600020556001016120d7565b5050505050565b61215f611cea565b8061217457506019546001600160a01b031633145b6121905760405162461bcd60e51b8152600401610f27906158d0565b68056bc75e2d631000006121aa878963ffffffff6126d516565b11156121c85760405162461bcd60e51b8152600401610f2790615860565b68056bc75e2d631000006121e2858763ffffffff6126d516565b11156122005760405162461bcd60e51b8152600401610f2790615860565b68056bc75e2d631000008311158015612222575068056bc75e2d631000008211155b61223e5760405162461bcd60e51b8152600401610f2790615890565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b031633146122b35760405162461bcd60e51b8152600401610f2790615920565b6000826040516020016122c6919061556b565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f260405160200161230e92919061554f565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b612348611cea565b8061235d57506019546001600160a01b031633145b6123795760405162461bcd60e51b8152600401610f27906158d0565b8281146123985760405162461bcd60e51b8152600401610f27906157f0565b6040805184815260208086028201019091526060908480156123c4578160200160208202803883390190505b50905060005b848110156124875760008686838181106123e057fe5b90506020020160206123f59190810190614505565b85858481811061240157fe5b90506020020160206124169190810190614723565b604051602001612427929190615503565b6040516020818303038152906040528051906020012060001c9050601060008281526020019081526020016000205483838151811061246257fe5b60209081029190910181019190915260009182526010905260408120556001016123ca565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a906124b89084906004016156d0565b600060405180830381600087803b1580156124d257600080fd5b505af11580156124e6573d6000803e3d6000fd5b505050505050505050565b6001600160a01b031660009081526011602052604090205490565b600b5481565b61251a611cea565b6125365760405162461bcd60e51b8152600401610f27906158d0565b61253f81613731565b50565b6000806001600160a01b038516156125b95760165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf44890612586908a908990600401615593565b600060405180830381600087803b1580156125a057600080fd5b505af11580156125b4573d6000803e3d6000fd5b505050505b6125ff8c8c8c8c8c8c8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061109c92505050565b915091509a509a98505050505050505050565b6019546001600160a01b031681565b600681565b600080600061263586866137b3565b925061268261266a670de0b6b3a7640000611b156b0a3098c68eb9427db8000000610da483610d988a8c63ffffffff6126fa16565b610da488670de0b6b3a764000063ffffffff6126fa16565b9050612694818763ffffffff61312216565b915093509350939050565b600480546040516370a0823160e01b81526000926101009092046001600160a01b0316916370a0823191610f8391309101615577565b600082820183811015610cb75760405162461bcd60e51b8152600401610f27906157d0565b60008261270957506000610ea9565b8282028284828161271657fe5b0414610cb75760405162461bcd60e51b8152600401610f27906158c0565b6000610cb783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138c9565b6000601554600014610db457600c54806127a05761279d612795610f44565b610d8c61269f565b90505b610ee1818463ffffffff6126d516565b6000600019821461280c576040805180820190915260028152610c4d60f21b60208201526127e7908390859063ffffffff61390016565b6001600160a01b03861660009081526014602090815260408083203384529091529020555b6001600160a01b0384166128325760405162461bcd60e51b8152600401610f27906157b0565b6001600160a01b03851660009081526013602090815260408083205481518083019092526002825261189b60f11b9282019290925290919061287d908390879063ffffffff61390016565b6001600160a01b038089166000908152601360205260408082208490559189168152908120549192506128b6828863ffffffff6126d516565b6001600160a01b03891660009081526013602052604081208290559091506128dc611c02565b601c549091506001600160a01b038b811691161480159061290b5750601c546001600160a01b038a8116911614155b156129285761291c8a86868461392c565b6129288984848461392c565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a60405161296b9190615700565b60405180910390a35060019998505050505050505050565b600080356001600160e01b0319167fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f26040516020016129c392919061554f565b60405160208183030381529060405280519060200120905060008154905080156129ff5760405162461bcd60e51b8152600401610f27906158d0565b5050565b808215610cb757600080601660009054906101000a90046001600160a01b03166001600160a01b03166378d849ed6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a5b57600080fd5b505afa158015612a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a939190810190614523565b60048054604051630a7549df60e21b81526001600160a01b03938416936329d5277c93612acc938c936101009091049092169101615593565b604080518083038186803b158015612ae357600080fd5b505afa158015612af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b1b9190810190614a59565b9150915081600014158015612b2f57508015155b612b4b5760405162461bcd60e51b8152600401610f2790615910565b6000612b6182610da4888663ffffffff6126fa16565b60165460048054604051631a51577760e21b81529394506000936001600160a01b03938416936369455ddc93612ba4936101009004909116918d918891016155c9565b60206040518083038186803b158015612bbc57600080fd5b505afa158015612bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612bf49190810190614a1c565b9050868114612c1457612c1187610da4848463ffffffff6126fa16565b91505b612c24828663ffffffff6126d516565b98975050505050505050565b600f5442906001600160581b0380831691161461253f5760165460048054604051630740ff7d60e51b81526001600160a01b039384169363e81fefa093612c809361010090049091169101615577565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b5050600f80546001600160581b0385166affffffffffffffffffffff19909116179055505050565b60008080612cf6670de0b6b3a7640000610da4868863ffffffff6126fa16565b9050612d0b81612d066000612776565b6137b3565b9150612d1b826224ea00836139e2565b9250509250929050565b600080612d30612983565b612d3861269f565b602085015111801590612d57575060208501516001600160a01b031615155b612d735760405162461bcd60e51b8152600401610f2790615830565b60408501516001600160a01b0316612d995760208501516001600160a01b031660408601525b6000612da78787878c613a43565b60208601516060870151919250612dbe91906126d5565b60608601528815612dde576060850151612dd8908a613122565b60608601525b60008915612dea575060015b6000601060008a84604051602001612e03929190615503565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020549050601660009054906101000a90046001600160a01b03166001600160a01b031663585314cf84838f868f8e8e8e6040518963ffffffff1660e01b8152600401612e7b979695949392919061570e565b60408051808303818588803b158015612e9357600080fd5b505af1158015612ea7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250612ecc9190810190614a59565b608089015260208801819052612ef45760405162461bcd60e51b8152600401610f2790615880565b601654602089015160405163f06a9c6b60e01b81526001600160a01b039092169163f06a9c6b91612f2791600401615577565b600060405180830381600087803b158015612f4157600080fd5b505af1158015612f55573d6000803e3d6000fd5b5050505086600160058110612f6657fe5b6020020151608090970151969c969b50959950505050505050505050565b600080612f9083613c78565b601c5491935091506000906001600160a01b03161561302e57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690612fdb9030908990600401615593565b60206040518083038186803b158015612ff357600080fd5b505afa158015613007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061302b9190810190614a1c565b90505b6001600160a01b038516600090815260136020526040812054613057908363ffffffff6126d516565b9050600061306b828663ffffffff6126d516565b905061307987868887613d82565b506130868783838761392c565b5050505092915050565b60008115610db45760006130a2613553565b509050610ee183610da461016d610d988568056bc75e2d6310000063ffffffff6126fa16565b6000816130d757506000611094565b508354611cb781613116670de0b6b3a764000061310a886130fe898963ffffffff613ea316565b9063ffffffff613ee916565b9063ffffffff613f5416565b9063ffffffff613fb816565b6000610cb783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613900565b6000821580159061317457508115155b15610ea957611b3082610da48568056bc75e2d6310000063ffffffff6126fa16565b601c54604051636822955360e11b815260009182916001600160a01b039091169063d0452aa6906131cd90309033906004016155ae565b60206040518083038186803b1580156131e557600080fd5b505afa1580156131f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061321d9190810190614a1c565b90508261323961322c33611a39565b839063ffffffff6126d516565b10156132575760405162461bcd60e51b8152600401610f2790615810565b801561333757828110156132d057601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec90613299903090859033906004016156a8565b600060405180830381600087803b1580156132b357600080fd5b505af11580156132c7573d6000803e3d6000fd5b50505050613337565b601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec90613304903090879033906004016156a8565b600060405180830381600087803b15801561331e57600080fd5b505af1158015613332573d6000803e3d6000fd5b505050505b610db0835b60008161335b5760405162461bcd60e51b8152600401610f27906158e0565b61336433611a39565b82111561339857600019821461338c5760405162461bcd60e51b8152600401610f27906158a0565b61339533611a39565b91505b6133a0612c30565b60006133af611c356000612776565b905060006133cf670de0b6b3a7640000610da4868563ffffffff6126fa16565b905060006133db61269f565b9050819350808411156134005760405162461bcd60e51b8152600401610f2790615820565b601c546000906001600160a01b03161561349957601c54604051636822955360e11b81526001600160a01b039091169063d0452aa69061344690309033906004016155ae565b60206040518083038186803b15801561345e57600080fd5b505afa158015613472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134969190810190614a1c565b90505b336000908152601360205260408120546134b9908363ffffffff6126d516565b905060006134cd828963ffffffff61312216565b90506134db33898989613ffe565b506134e83383838961392c565b505050505050919050565b60405161354d90859063a9059cbb60e01b90613515908790879060240161568d565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915283614123565b50505050565b60165460048054604051630d1979fb60e41b8152600093849384936001600160a01b039283169363d1979fb09361359593309361010090049091169101615593565b60c06040518083038186803b1580156135ad57600080fd5b505afa1580156135c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506135e59190810190614ba2565b5091965094509250613618915068056bc75e2d631000009050610da461360b8285613122565b859063ffffffff6126fa16565b9150509091565b6015546000908061363257600e54610db0565b610db081610da485670de0b6b3a764000063ffffffff6126fa16565b600080821561369757600f54426001600160581b0390811691161461367957613675613553565b9150505b600061368782610d8c61269f565b905080841115613695578093505b505b610db083612d0683612776565b3390565b60006136b48383612f84565b601c549091506136d09084906001600160a01b031683806127b0565b50601c546040516336305cf160e21b81526001600160a01b039091169063d8c173c490613703908690859060040161568d565b600060405180830381600087803b15801561371d57600080fd5b505af1158015613086573d6000803e3d6000fd5b6001600160a01b0381166137575760405162461bcd60e51b8152600401610f27906157c0565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000806137cb6137c585610d8c610f44565b84613164565b600554600654600954600a54600b54949550600094859493929190828810156137f2578297505b8188111561386557968190039668056bc75e2d6310000082900380891115613818578098505b61383968056bc75e2d63100000610da485610d98898b63ffffffff6126d516565b965061385d87610d8c83610da4613850878d613122565b8e9063ffffffff6126fa16565b9950506138bb565b61388685610d8c68056bc75e2d63100000610da48c8963ffffffff6126fa16565b9850939550859361389d848663ffffffff6126d516565b9550868910156138af578698506138bb565b858911156138bb578598505b505050505050505092915050565b600081836138ea5760405162461bcd60e51b8152600401610f27919061577f565b5060008385816138f657fe5b0495945050505050565b600081848411156139245760405162461bcd60e51b8152600401610f27919061577f565b505050900390565b6040516000906139629086907f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb690602001615529565b6040516020818303038152906040528051906020012090506000836000141561398e57600092506139bf565b84156139bf576001600160a01b0386166000908152601160205260409020546139bc908390879086906130c8565b90505b90556001600160a01b039093166000908152601160205260409020929092555050565b6000806139fd6301e13380610da4878763ffffffff6126fa16565b90506000613a1a68056bc75e2d631000008363ffffffff61312216565b9050613a3981610da48668056bc75e2d6310000063ffffffff6126fa16565b9695505050505050565b60175460045460408501516020850151606086015160808701516000956001600160a01b03908116956101009004811694939291908b16851415613a995760405162461bcd60e51b8152600401610f27906158f0565b3496508715613af757613abd85858a604051806020016040528060008152506134f3565b87831115613af257601654604080516020810190915260008152613af29187916001600160a01b03909116908b8703906134f3565b613b2c565b601654604080518082019091526002815261323760f01b6020820152613b2c9187916001600160a01b039091169086906134f3565b8015613c2f57856001600160a01b03168b6001600160a01b0316148015613b5257508615155b8015613b5e5750808710155b15613bf857856001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613b9e57600080fd5b505af1158015613bb2573d6000803e3d6000fd5b505060165460408051808201909152600481526332382d6160e01b6020820152613bee94508f93506001600160a01b03909116915084906134f3565b8087039650613c2f565b601654604080518082019091526004815263191c16b160e11b6020820152613c2f918d9133916001600160a01b03169085906141e1565b8115613c6a57601654604080518082019091526002815261323960f01b6020820152613c6a91879133916001600160a01b03169086906141e1565b505050505050949350505050565b60008082613c985760405162461bcd60e51b8152600401610f27906158b0565b613ca0612c30565b613cad611c356000612776565b9050613ccb81610da485670de0b6b3a764000063ffffffff6126fa16565b915034613d1357613d0e600460019054906101000a90046001600160a01b031633308660405180604001604052806002815260200161062760f31b8152506141e1565b613d7d565b601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613d6357600080fd5b505af1158015613d77573d6000803e3d6000fd5b50505050505b915091565b60006001600160a01b038516613daa5760405162461bcd60e51b8152600401610f27906157b0565b6001600160a01b038516600090815260136020526040812054613dd3908663ffffffff6126d516565b6001600160a01b0387166000908152601360205260409020819055601554909150613e04908663ffffffff6126d516565b6015556040516001600160a01b038716907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb90613e469088908890889061598e565b60405180910390a2856001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613e929190615700565b60405180910390a395945050505050565b6000818303818312801590613eb85750838113155b80613ecd5750600083128015613ecd57508381135b610cb75760405162461bcd60e51b8152600401610f2790615940565b600082613ef857506000610ea9565b82600019148015613f0c5750600160ff1b82145b15613f295760405162461bcd60e51b8152600401610f2790615900565b82820282848281613f3657fe5b0514610cb75760405162461bcd60e51b8152600401610f2790615900565b600081613f735760405162461bcd60e51b8152600401610f2790615970565b81600019148015613f875750600160ff1b83145b15613fa45760405162461bcd60e51b8152600401610f2790615850565b6000828481613faf57fe5b05949350505050565b6000828201818312801590613fcd5750838112155b80613fe25750600083128015613fe257508381125b610cb75760405162461bcd60e51b8152600401610f27906157e0565b6040805180820182526002815261189b60f11b6020808301919091526001600160a01b038716600090815260139091529182205482916140469190879063ffffffff61390016565b9050600a811161406757614060858263ffffffff6126d516565b9450600090505b6001600160a01b0386166000908152601360205260409020819055601554614095908663ffffffff61312216565b6015556040516001600160a01b038716907f743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b4644906140d79088908890889061598e565b60405180910390a260006001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613e929190615700565b60006060846001600160a01b03168460405161413f919061556b565b6000604051808303816000865af19150503d806000811461417c576040519150601f19603f3d011682016040523d82523d6000602084013e614181565b606091505b50915091508183906141a65760405162461bcd60e51b8152600401610f27919061577f565b5080511561215057808060200190516141c29190810190614741565b8390610f305760405162461bcd60e51b8152600401610f27919061577f565b6040516121509086906323b872dd60e01b90613515908890889088906024016155c9565b60405180608001604052806004906020820280388339509192915050565b6040518060a001604052806005906020820280388339509192915050565b8035610ea981615afd565b8051610ea981615afd565b60008083601f84011261426957600080fd5b5081356001600160401b0381111561428057600080fd5b60208301915083602082028301111561429857600080fd5b9250929050565b600082601f8301126142b057600080fd5b81516142c36142be826159dd565b6159b7565b915081818352602084019350602081019050838560208402820111156142e857600080fd5b60005b8381101561308657816142fe88826143a9565b84525060209283019291909101906001016142eb565b600082601f83011261432557600080fd5b81356143336142be826159dd565b915081818352602084019350602081019050838561010084028201111561435957600080fd5b60005b83811015613086578161436f8882614444565b845250602090920191610100919091019060010161435c565b8035610ea981615b11565b8051610ea981615b11565b8035610ea981615b1a565b8051610ea981615b1a565b60008083601f8401126143c657600080fd5b5081356001600160401b038111156143dd57600080fd5b60208301915083600182028301111561429857600080fd5b600082601f83011261440657600080fd5b81356144146142be826159fd565b9150808252602083016020830185838301111561443057600080fd5b61443b838284615a83565b50505092915050565b6000610100828403121561445757600080fd5b6144626101006159b7565b90506000614470848461439e565b825250602061448184848301614388565b602083015250604061449584828501614241565b60408301525060606144a984828501614241565b60608301525060806144bd84828501614241565b60808301525060a06144d18482850161439e565b60a08301525060c06144e58482850161439e565b60c08301525060e06144f98482850161439e565b60e08301525092915050565b60006020828403121561451757600080fd5b60006110948484614241565b60006020828403121561453557600080fd5b6000611094848461424c565b6000806040838503121561455457600080fd5b60006145608585614241565b925050602061457185828601614241565b9150509250929050565b60008060006060848603121561459057600080fd5b600061459c8686614241565b93505060206145ad86828701614241565b92505060406145be8682870161439e565b9150509250925092565b600080604083850312156145db57600080fd5b60006145e78585614241565b92505060206145718582860161439e565b60008060006060848603121561460d57600080fd5b60006146198686614241565b935050602061462a8682870161439e565b92505060406145be86828701614388565b6000806000806040858703121561465157600080fd5b84356001600160401b0381111561466757600080fd5b61467387828801614257565b945094505060208501356001600160401b0381111561469157600080fd5b61469d87828801614257565b95989497509550505050565b6000602082840312156146bb57600080fd5b81516001600160401b038111156146d157600080fd5b6110948482850161429f565b600080604083850312156146f057600080fd5b82356001600160401b0381111561470657600080fd5b61471285828601614314565b925050602061457185828601614388565b60006020828403121561473557600080fd5b60006110948484614388565b60006020828403121561475357600080fd5b60006110948484614393565b600080600080600080600080610100898b03121561477c57600080fd5b60006147888b8b61439e565b98505060206147998b828c0161439e565b97505060406147aa8b828c0161439e565b96505060606147bb8b828c0161439e565b95505060806147cc8b828c01614241565b94505060a06147dd8b828c01614241565b93505060c06147ee8b828c01614241565b92505060e08901356001600160401b0381111561480a57600080fd5b6148168b828c016143f5565b9150509295985092959890939650565b6000806000806000806000806000806101208b8d03121561484657600080fd5b60006148528d8d61439e565b9a505060206148638d828e0161439e565b99505060406148748d828e0161439e565b98505060606148858d828e0161439e565b97505060806148968d828e01614241565b96505060a06148a78d828e01614241565b95505060c06148b88d828e0161439e565b94505060e06148c98d828e01614241565b9350506101008b01356001600160401b038111156148e657600080fd5b6148f28d828e016143b4565b92509250509295989b9194979a5092959850565b600080600080600080600080610100898b03121561492357600080fd5b600061492f8b8b61439e565b98505060206149408b828c0161439e565b97505060406149518b828c0161439e565b96505060606149628b828c0161439e565b95505060806149738b828c01614241565b94505060a06149848b828c01614241565b93505060c06147ee8b828c0161439e565b6000602082840312156149a757600080fd5b81356001600160401b038111156149bd57600080fd5b611094848285016143f5565b600080604083850312156149dc57600080fd5b82356001600160401b038111156149f257600080fd5b614712858286016143f5565b600060208284031215614a1057600080fd5b6000611094848461439e565b600060208284031215614a2e57600080fd5b600061109484846143a9565b60008060408385031215614a4d57600080fd5b60006145e7858561439e565b60008060408385031215614a6c57600080fd5b6000614a7885856143a9565b9250506020614571858286016143a9565b600080600060608486031215614a9e57600080fd5b6000614aaa868661439e565b9350506020614abb8682870161439e565b92505060406145be86828701614241565b60008060008060808587031215614ae257600080fd5b6000614aee878761439e565b9450506020614aff8782880161439e565b9350506040614b108782880161439e565b9250506060614b2187828801614241565b91505092959194509250565b600080600080600060a08688031215614b4557600080fd5b6000614b51888861439e565b9550506020614b628882890161439e565b9450506040614b738882890161439e565b9350506060614b8488828901614241565b9250506080614b958882890161439e565b9150509295509295909350565b60008060008060008060c08789031215614bbb57600080fd5b6000614bc789896143a9565b9650506020614bd889828a016143a9565b9550506040614be989828a016143a9565b9450506060614bfa89828a016143a9565b9350506080614c0b89828a016143a9565b92505060a0614c1c89828a016143a9565b9150509295509295509295565b600080600080600080600060e0888a031215614c4457600080fd5b6000614c508a8a61439e565b9750506020614c618a828b0161439e565b9650506040614c728a828b0161439e565b9550506060614c838a828b0161439e565b9450506080614c948a828b0161439e565b93505060a0614ca58a828b0161439e565b92505060c0614cb68a828b0161439e565b91505092959891949750929550565b6000614cd18383614d09565b505060200190565b6000614cd18383614e7c565b6000614cf18383615463565b50506101000190565b614d0381615a72565b82525050565b614d0381615a43565b614d03614d1e82615a43565b615abb565b614d2c81615a2a565b614d368184610db4565b9250614d4182610ec1565b8060005b83811015610f30578151614d598782614cc5565b9650614d6483615a24565b925050600101614d45565b6000614d7a82615a30565b614d848185615a3a565b9350614d8f83615a24565b8060005b83811015614dbd578151614da78882614cd9565b9750614db283615a24565b925050600101614d93565b509495945050505050565b6000614dd382615a30565b614ddd8185615a3a565b9350614de883615a24565b8060005b83811015614dbd578151614e008882614ce5565b9750614e0b83615a24565b925050600101614dec565b614e1f81615a34565b614e298184610db4565b9250614e3482610ec1565b8060005b83811015610f30578151614e4c8782614cd9565b9650614e5783615a24565b925050600101614e38565b614d0381615a4e565b614d03614e7782615a4e565b615ac6565b614d0381610ec1565b614d03614e9182610ec1565b610ec1565b614d03614e9182615a53565b6000614ead82615a30565b614eb78185615a3a565b9350614ec7818560208601615a8f565b614ed081615ae7565b9093019392505050565b6000614ee582615a30565b614eef8185610db4565b9350614eff818560208601615a8f565b9290920192915050565b6000614f16600c83615a3a565b6b636f6c6c20746f6f206c6f7760a01b815260200192915050565b6000614f3e600283615a3a565b61031360f41b815260200192915050565b6000614f5c600283615a3a565b61313560f01b815260200192915050565b6000614f7a602683615a3a565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000614fc2601b83615a3a565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614ffb602183615a3a565b7f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061503e600e83615a3a565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000615068600183615a3a565b603760f81b815260200192915050565b6000615085601283615a3a565b716e6f7420656e6f7567682062616c616e636560701b815260200192915050565b60006150b3600283615a3a565b61333760f01b815260200192915050565b60006150d1600283615a3a565b610c8d60f21b815260200192915050565b60006150ef600283615a3a565b61313160f01b815260200192915050565b600061510d602183615a3a565b7f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000615150601583615a3a565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000615181600283615a3a565b61189960f11b815260200192915050565b600061519f600283615a3a565b61323560f01b815260200192915050565b60006151bd600f83615a3a565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b60006151e8600283615a3a565b61199960f11b815260200192915050565b6000615206600283615a3a565b61313760f01b815260200192915050565b6000615224602183615a3a565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000615267600c83615a3a565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061528f600283615a3a565b61313960f01b815260200192915050565b60006152ad600283615a3a565b61191b60f11b815260200192915050565b60006152cb602783615a3a565b7f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f815266766572666c6f7760c81b602082015260400192915050565b6000615314601d83615a3a565b7f696e76616c6964207261746520636f6c6c61746572616c20746f6b656e000000815260200192915050565b600061534d600a83615a3a565b6937b7363ca830bab9b2b960b11b815260200192915050565b6000615373600c83615a3a565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b600061539b602483615a3a565b7f5369676e6564536166654d6174683a207375627472616374696f6e206f766572815263666c6f7760e01b602082015260400192915050565b60006153e1601883615a3a565b7f34303120757365206f66206578697374696e67206c6f616e0000000000000000815260200192915050565b600061541a600183615a3a565b601b60f91b815260200192915050565b6000615437602083615a3a565b7f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f815260200192915050565b80516101008301906154758482614e7c565b5060208201516154886020850182614e62565b50604082015161549b6040850182614d09565b5060608201516154ae6060850182614d09565b5060808201516154c16080850182614d09565b5060a08201516154d460a0850182614e7c565b5060c08201516154e760c0850182614e7c565b5060e082015161354d60e0850182614e7c565b614d0381615a6c565b600061550f8285614d12565b60148201915061551f8284614e6b565b5060010192915050565b60006155358285614d12565b6014820191506155458284614e85565b5060200192915050565b600061555b8285614e96565b6004820191506155458284614e85565b6000610cb78284614eda565b60208101610ea98284614d09565b60208101610ea98284614cfa565b604081016155a18285614d09565b610cb76020830184614d09565b604081016155bc8285614d09565b610cb76020830184614cfa565b606081016155d78286614d09565b6155e46020830185614d09565b6110946040830184614e7c565b60a081016155ff8288614d09565b61560c6020830187614d09565b6156196040830186614e7c565b6156266060830185614e7c565b613a396080830184614e62565b60c081016156418289614d09565b61564e6020830188614d09565b61565b6040830187614e7c565b6156686060830186614e7c565b6156756080830185614e7c565b61568260a0830184614e7c565b979650505050505050565b6040810161569b8285614d09565b610cb76020830184614e7c565b606081016156b68286614d09565b6156c36020830185614e7c565b6110946040830184614cfa565b60208082528101610cb78184614d6f565b60208082528101610cb78184614dc8565b60208101610ea98284614e62565b60208101610ea98284614e7c565b6101c0810161571d828a614e7c565b61572a6020830189614e7c565b6157376040830188614e62565b6157446060830187614e7c565b6157516080830186614d23565b61575f610100830185614e16565b8181036101a08301526157728184614ea2565b9998505050505050505050565b60208082528101610cb78184614ea2565b60208082528101610ea981614f09565b60208082528101610ea981614f31565b60208082528101610ea981614f4f565b60208082528101610ea981614f6d565b60208082528101610ea981614fb5565b60208082528101610ea981614fee565b60208082528101610ea981615031565b60208082528101610ea98161505b565b60208082528101610ea981615078565b60208082528101610ea9816150a6565b60208082528101610ea9816150c4565b60208082528101610ea9816150e2565b60208082528101610ea981615100565b60208082528101610ea981615143565b60208082528101610ea981615174565b60208082528101610ea981615192565b60208082528101610ea9816151b0565b60208082528101610ea9816151db565b60208082528101610ea9816151f9565b60208082528101610ea981615217565b60208082528101610ea98161525a565b60208082528101610ea981615282565b60208082528101610ea9816152a0565b60208082528101610ea9816152be565b60208082528101610ea981615307565b60208082528101610ea981615340565b60208082528101610ea981615366565b60208082528101610ea98161538e565b60208082528101610ea9816153d4565b60208082528101610ea98161540d565b60208082528101610ea98161542a565b6040810161569b8285614e7c565b6060810161599c8286614e7c565b6155e46020830185614e7c565b60208101610ea982846154fa565b6040518181016001600160401b03811182821017156159d557600080fd5b604052919050565b60006001600160401b038211156159f357600080fd5b5060209081020190565b60006001600160401b03821115615a1357600080fd5b506020601f91909101601f19160190565b60200190565b50600490565b5190565b50600590565b90815260200190565b6000610ea982615a60565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b6000610ea9826000610ea982615a43565b82818337506000910152565b60005b83811015615aaa578181015183820152602001615a92565b8381111561354d5750506000910152565b6000610ea982615ad1565b6000610ea982615adc565b6000610ea982615af7565b6000610ea982615af1565b601f01601f191690565b60f81b90565b60601b90565b615b0681615a43565b811461253f57600080fd5b615b0681615a4e565b615b0681610ec156fea365627a7a723158206556ce952bb918dee3ec740a136beee857ddfddbf2cd1a94ff2cac96ca9a45c06c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH3 0x1E PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x72 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x76 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x5B66 DUP1 PUSH3 0x86 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3D9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E37C08C GT PUSH2 0x1FD JUMPI DUP1 PUSH4 0xCA37E666 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0xE3CDED61 GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xEF2B0B39 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0xAA3 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xAB8 JUMPI DUP1 PUSH4 0xF6B69F99 EQ PUSH2 0xAD8 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xAEB JUMPI DUP1 PUSH4 0xFFA1AD74 EQ PUSH2 0xB00 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0xA23 JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0xA43 JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0xA63 JUMPI DUP1 PUSH4 0xEEBC5081 EQ PUSH2 0xA83 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0xD759DBEB GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x9AE JUMPI DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x9C3 JUMPI DUP1 PUSH4 0xD97206A4 EQ PUSH2 0x9E3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xA03 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0xCA37E666 EQ PUSH2 0x939 JUMPI DUP1 PUSH4 0xCB926CB3 EQ PUSH2 0x94E JUMPI DUP1 PUSH4 0xD1A1BEB4 EQ PUSH2 0x96E JUMPI DUP1 PUSH4 0xD65A5021 EQ PUSH2 0x98E JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x190 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x15F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x8C4 JUMPI DUP1 PUSH4 0xB9FE1A8F EQ PUSH2 0x8E4 JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x904 JUMPI DUP1 PUSH4 0xBE194217 EQ PUSH2 0x919 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x865 JUMPI DUP1 PUSH4 0x9BDA3A98 EQ PUSH2 0x87A JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x88F JUMPI DUP1 PUSH4 0x9FD0506D EQ PUSH2 0x8AF JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x1CC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x811 JUMPI DUP1 PUSH4 0x8EE6C4E6 EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x83B JUMPI DUP1 PUSH4 0x8FB807C5 EQ PUSH2 0x850 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x7B2 JUMPI DUP1 PUSH4 0x7FF9B596 EQ PUSH2 0x7C7 JUMPI DUP1 PUSH4 0x829B38F4 EQ PUSH2 0x7DC JUMPI DUP1 PUSH4 0x8325A1C0 EQ PUSH2 0x7FC JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x2F6B600D GT PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x612EF80B GT PUSH2 0x28B JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x25A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x728 JUMPI DUP1 PUSH4 0x7288B344 EQ PUSH2 0x748 JUMPI DUP1 PUSH4 0x76FD4FDF EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x788 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x79D JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x612EF80B EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0x631A3EF8 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0x6B40CD40 EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH2 0x708 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 GT PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x63A JUMPI DUP1 PUSH4 0x44A4A003 EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0x54198CE9 EQ PUSH2 0x66F JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x68F JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x5CE JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x5E3 JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x605 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x625 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x18498B1D GT PUSH2 0x370 JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x33F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x55A JUMPI DUP1 PUSH4 0x28A02F19 EQ PUSH2 0x57A JUMPI DUP1 PUSH4 0x2D88AF4A EQ PUSH2 0x59B JUMPI DUP1 PUSH4 0x2EA295FA EQ PUSH2 0x5BB JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x18498B1D EQ PUSH2 0x4F9 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x51B JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x530 JUMPI DUP1 PUSH4 0x20F6D07C EQ PUSH2 0x545 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x3AC JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x482 JUMPI DUP1 PUSH4 0x9EC6B6B EQ PUSH2 0x4AF JUMPI DUP1 PUSH4 0x12416898 EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x4E4 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x4797930 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x6947A3A EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x6B3EFD6 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x460 JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A89 JUMP JUMPDEST PUSH2 0xB15 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0xCBE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x5577 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x45B CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0xCCD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x475 PUSH2 0xDB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x577F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A2 PUSH2 0x49D CALLDATASIZE PUSH1 0x4 PUSH2 0x45C8 JUMP JUMPDEST PUSH2 0xE44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x56F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xEAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x4DF CALLDATASIZE PUSH1 0x4 PUSH2 0x49FE JUMP JUMPDEST PUSH2 0xEC4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xEEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x514 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B2D JUMP JUMPDEST PUSH2 0xEF5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xF38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xF3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xF44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A2 PUSH2 0x575 CALLDATASIZE PUSH1 0x4 PUSH2 0x457B JUMP JUMPDEST PUSH2 0xFD3 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x588 CALLDATASIZE PUSH1 0x4 PUSH2 0x4906 JUMP JUMPDEST PUSH2 0x109C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP3 SWAP2 SWAP1 PUSH2 0x5980 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x5B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x5C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x475F JUMP JUMPDEST PUSH2 0x1307 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x15E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F8 PUSH2 0x15F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x59A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x611 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x620 CALLDATASIZE PUSH1 0x4 PUSH2 0x49FE JUMP JUMPDEST PUSH2 0x15FF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1611 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x655 CALLDATASIZE PUSH1 0x4 PUSH2 0x45C8 JUMP JUMPDEST PUSH2 0x1617 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1658 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x68A CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x166A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x170B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1711 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x6D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A89 JUMP JUMPDEST PUSH2 0x1742 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6F9 PUSH2 0x6F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ACC JUMP JUMPDEST PUSH2 0x18E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x598E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x723 CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x19F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x743 CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x1A39 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x763 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x1A54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x783 CALLDATASIZE PUSH1 0x4 PUSH2 0x45F8 JUMP JUMPDEST PUSH2 0x1B37 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1BE2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1BF6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1BFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1C02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x7F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x49FE JUMP JUMPDEST PUSH2 0x1C40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1CC0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1CCC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1CDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A2 PUSH2 0x1CEA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1D10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x475 PUSH2 0x1D40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1D9B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x8AA CALLDATASIZE PUSH1 0x4 PUSH2 0x45C8 JUMP JUMPDEST PUSH2 0x1DAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1E1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A2 PUSH2 0x8DF CALLDATASIZE PUSH1 0x4 PUSH2 0x45C8 JUMP JUMPDEST PUSH2 0x1E2D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x8FF CALLDATASIZE PUSH1 0x4 PUSH2 0x49FE JUMP JUMPDEST PUSH2 0x1E3D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1E48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A2 PUSH2 0x934 CALLDATASIZE PUSH1 0x4 PUSH2 0x4995 JUMP JUMPDEST PUSH2 0x1E4E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x945 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1ED0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x969 CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x1EDF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x97A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x989 CALLDATASIZE PUSH1 0x4 PUSH2 0x45F8 JUMP JUMPDEST PUSH2 0x1F25 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x9A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x49FE JUMP JUMPDEST PUSH2 0x1F6F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1F82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x9DE CALLDATASIZE PUSH1 0x4 PUSH2 0x46DD JUMP JUMPDEST PUSH2 0x1F88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x9FE CALLDATASIZE PUSH1 0x4 PUSH2 0x4C29 JUMP JUMPDEST PUSH2 0x2157 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xA1E CALLDATASIZE PUSH1 0x4 PUSH2 0x4541 JUMP JUMPDEST PUSH2 0x225E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0xA3E CALLDATASIZE PUSH1 0x4 PUSH2 0x49C9 JUMP JUMPDEST PUSH2 0x2289 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xA5E CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x232E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0xA7E CALLDATASIZE PUSH1 0x4 PUSH2 0x463B JUMP JUMPDEST PUSH2 0x2340 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xA9E CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x24F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x250C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0xAD3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x2512 JUMP JUMPDEST PUSH2 0x58D PUSH2 0xAE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4826 JUMP JUMPDEST PUSH2 0x2542 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x2612 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x2621 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xCB7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB3A JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB54 SWAP3 SWAP2 SWAP1 PUSH2 0x5503 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 PUSH4 0xE762319F SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 DUP8 SWAP2 DUP11 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0xBC5 SWAP2 DUP11 SWAP2 ADD PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBF1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC15 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC37 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x55F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC63 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC87 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP2 POP PUSH2 0xC9B DUP3 PUSH2 0xC95 PUSH2 0x1D10 JUMP JUMPDEST DUP7 PUSH2 0x2626 JUMP JUMPDEST SWAP4 POP PUSH2 0xCA9 SWAP2 POP PUSH2 0x269F SWAP1 POP JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0xCB5 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xD68 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0xD15 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5593 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD65 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xDB0 PUSH8 0xDE0B6B3A7640000 PUSH2 0xDA4 PUSH2 0xD7F PUSH2 0x1C02 JUMP JUMPDEST PUSH2 0xD98 DUP6 PUSH2 0xD8C DUP10 PUSH2 0x1A39 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2734 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE3C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE11 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE3C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE1F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xE9D SWAP1 DUP7 SWAP1 PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEBE PUSH2 0x4DF PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xECF PUSH2 0xF44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xEE9 JUMPI PUSH2 0xEE1 DUP2 DUP5 PUSH2 0x1A54 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xDB4 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF03 DUP7 DUP7 DUP7 DUP7 PUSH2 0x18E2 JUMP JUMPDEST POP SWAP2 POP POP DUP2 DUP2 LT ISZERO PUSH2 0xF30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5790 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x250F447F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0x4A1E88FE SWAP4 PUSH2 0xF83 SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x5593 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFAF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xEBE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH2 0x1094 SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x115DD4B1 SWAP1 PUSH2 0x100E SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x5585 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1026 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x103A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x105E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4741 JUMP JUMPDEST PUSH2 0x108B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x108F JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH2 0x27B0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x10C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5930 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x10CE PUSH2 0x2983 JUMP JUMPDEST PUSH2 0x10DB DUP10 DUP10 DUP10 DUP10 DUP9 PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x10F8 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x112B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5840 JUMP JUMPDEST DUP10 ISZERO DUP1 PUSH2 0x1140 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x115C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5950 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x119F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x119F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x11F0 JUMPI PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP9 GT ISZERO PUSH2 0x11F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11FD DUP8 DUP10 DUP12 PUSH2 0x2A03 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x121C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5870 JUMP JUMPDEST PUSH2 0x1224 PUSH2 0x4205 JUMP JUMPDEST PUSH2 0x122C PUSH2 0x4223 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP11 SWAP1 MSTORE PUSH2 0x1264 PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x1275 DUP13 DUP3 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x2CD6 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1296 PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP14 PUSH2 0x2734 JUMP JUMPDEST SWAP12 POP PUSH2 0x12A8 DUP14 PUSH1 0x0 DUP15 DUP13 DUP7 DUP7 DUP13 PUSH2 0x2D25 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP15 SWAP1 SWAP14 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12C9 PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x12E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x132C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5930 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP9 PUSH2 0x134E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5960 JUMP JUMPDEST PUSH2 0x1356 PUSH2 0x2983 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1399 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x1399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x13A5 JUMPI POP DUP7 CALLVALUE EQ JUMPDEST DUP1 ISZERO PUSH2 0x13B9 JUMPI POP DUP7 ISZERO ISZERO DUP1 PUSH2 0x13B9 JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x13E0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO DUP1 PUSH2 0x13D6 JUMPI POP CALLVALUE ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x13E0 JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x13FC JUMPI POP DUP10 ISZERO DUP1 PUSH2 0x13FC JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x1418 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5800 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x1435 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x1468 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57A0 JUMP JUMPDEST PUSH2 0x1470 PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x1478 PUSH2 0x4205 JUMP JUMPDEST PUSH2 0x1480 PUSH2 0x4223 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 AND PUSH1 0x40 DUP5 ADD MSTORE DUP2 ADD DUP12 SWAP1 MSTORE PUSH2 0x14B8 DUP12 PUSH2 0x14B2 PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST DUP13 PUSH2 0x2626 JUMP JUMPDEST DUP4 PUSH1 0x0 PUSH1 0x20 MUL ADD DUP5 PUSH1 0x2 PUSH1 0x20 MUL ADD DUP6 PUSH1 0x1 PUSH1 0x20 MUL ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 MSTORE MSTORE DUP9 DUP2 PUSH1 0x4 PUSH1 0x20 MUL ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x15CF DUP13 DUP13 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCA74A5D9 PUSH1 0x10 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1523 SWAP3 SWAP2 SWAP1 PUSH2 0x5503 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1567 SWAP2 SWAP1 PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x157F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1593 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x15B7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST DUP12 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2D25 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP14 SWAP1 SWAP13 POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x163B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5930 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x164A DUP4 DUP4 PUSH2 0x2F84 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEBE PUSH2 0x1665 PUSH2 0xF44 JUMP JUMPDEST PUSH2 0x3090 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 PUSH1 0x0 SHL PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x16A3 SWAP3 SWAP2 SWAP1 PUSH2 0x5529 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xDB0 DUP2 PUSH1 0x13 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x16ED PUSH2 0x1C02 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x30C8 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x171E PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x172A PUSH2 0xF44 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x173D JUMPI SWAP1 SUB SWAP1 POP PUSH2 0xEC1 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xCB7 JUMPI PUSH1 0x0 PUSH2 0x1758 DUP6 PUSH2 0xC95 PUSH2 0x1D10 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1764 PUSH2 0x269F JUMP JUMPDEST DUP2 GT PUSH2 0xCB5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1787 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x17A1 SWAP3 SWAP2 SWAP1 PUSH2 0x5503 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH2 0x18D9 SWAP4 PUSH1 0xA SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x25DECAC0 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0x1817 SWAP2 DUP13 SWAP2 ADD PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x182F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1843 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1867 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1889 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x55F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD8C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xCB7 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1903 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x1910 DUP6 DUP8 DUP10 PUSH2 0x2A03 JUMP JUMPDEST SWAP1 POP PUSH2 0x191C DUP9 DUP3 PUSH2 0x2CD6 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH2 0x1929 PUSH2 0x269F JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1940 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x19E9 JUMP JUMPDEST PUSH2 0x1950 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD67F7077 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD67F7077 SWAP4 PUSH2 0x1995 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP14 SWAP2 DUP14 SWAP2 DUP11 SWAP2 DUP14 SWAP2 ADD PUSH2 0x5633 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x19E5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP3 POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x19FB PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x1A17 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x19 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1A65 JUMPI POP DUP3 DUP3 LT ISZERO JUMPDEST ISZERO PUSH2 0xEA9 JUMPI PUSH2 0x1B30 PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 PUSH2 0xDA4 PUSH2 0x1B1A PUSH9 0x56BC75E2D63100000 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4699F846 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ADD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AF1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B15 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST PUSH2 0x3122 JUMP JUMPDEST PUSH2 0xD98 PUSH2 0x1B27 DUP9 DUP9 PUSH2 0x3164 JUMP JUMPDEST PUSH2 0xD98 DUP10 PUSH2 0x3090 JUMP JUMPDEST SWAP1 POP PUSH2 0xEA9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1B5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5930 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x1B76 JUMPI PUSH2 0x1B6F DUP4 PUSH2 0x3196 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B82 JUMP JUMPDEST PUSH2 0x1B7F DUP4 PUSH2 0x333C JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x1BD6 JUMPI PUSH2 0x1BD6 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x185CDCD95D081D1C985B9CD9995C8819985A5B1959 PUSH1 0x5A SHL DUP2 MSTORE POP PUSH2 0x34F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1C29 JUMPI PUSH2 0x1C25 PUSH2 0x3553 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C3A PUSH2 0x1C35 DUP3 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x361F JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C5F PUSH2 0x16D PUSH2 0xDA4 PUSH1 0x1C PUSH1 0xB SLOAD PUSH2 0x26FA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C7C PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3122 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C99 PUSH9 0x56BC75E2D63100000 PUSH2 0xDA4 DUP5 PUSH2 0xD98 PUSH2 0x1711 JUMP JUMPDEST SWAP1 POP PUSH2 0x1CB7 DUP6 PUSH2 0xDA4 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEBE PUSH1 0x0 PUSH2 0x364E JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D01 PUSH2 0x36A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1D37 JUMPI PUSH2 0x1D33 PUSH2 0x3553 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C3A DUP2 PUSH2 0x2776 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE3C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE11 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE3C JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1DCE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5930 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1DDC DUP3 PUSH2 0x333C JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x164D JUMPI PUSH2 0x164D PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH2 0x34F3 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 CALLER DUP5 DUP5 PUSH1 0x0 NOT PUSH2 0x27B0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x364E JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E62 SWAP2 SWAP1 PUSH2 0x556B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EAF SWAP3 SWAP2 SWAP1 PUSH2 0x554F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1EE7 PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x1F03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x1C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1F49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5930 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x1F65 JUMPI PUSH2 0x1F5E DUP5 DUP5 PUSH2 0x36A8 JUMP JUMPDEST SWAP1 POP PUSH2 0x1BD6 JUMP JUMPDEST PUSH2 0x1F5E DUP5 DUP5 PUSH2 0x2F84 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 PUSH2 0x4DF DUP4 PUSH2 0xD8C PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1F90 PUSH2 0x1CEA JUMP JUMPDEST DUP1 PUSH2 0x1FA5 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x1FC1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x204B JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1FEE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x2020 JUMPI PUSH3 0x24EA00 PUSH2 0x2023 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2034 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1FD8 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x207C SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x56E1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2096 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x20D2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x46A9 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2150 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x20EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2104 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2122 SWAP3 SWAP2 SWAP1 PUSH2 0x5503 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x20D7 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x215F PUSH2 0x1CEA JUMP JUMPDEST DUP1 PUSH2 0x2174 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2190 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x21AA DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST GT ISZERO PUSH2 0x21C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5860 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x21E2 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST GT ISZERO PUSH2 0x2200 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5860 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x2222 JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x223E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5890 JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x22B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5920 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x22C6 SWAP2 SWAP1 PUSH2 0x556B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x230E SWAP3 SWAP2 SWAP1 PUSH2 0x554F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2348 PUSH2 0x1CEA JUMP JUMPDEST DUP1 PUSH2 0x235D JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2379 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x2398 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0x23C4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2487 JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x23E0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x23F5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4505 JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x2401 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x2416 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4723 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2427 SWAP3 SWAP2 SWAP1 PUSH2 0x5503 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2462 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x23CA JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0x24B8 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x56D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x251A PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x2536 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH2 0x253F DUP2 PUSH2 0x3731 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x25B9 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x193BBE89 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC9DDF448 SWAP1 PUSH2 0x2586 SWAP1 DUP11 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5593 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x25FF DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x109C SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP11 POP SWAP11 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2635 DUP7 DUP7 PUSH2 0x37B3 JUMP JUMPDEST SWAP3 POP PUSH2 0x2682 PUSH2 0x266A PUSH8 0xDE0B6B3A7640000 PUSH2 0x1B15 PUSH12 0xA3098C68EB9427DB8000000 PUSH2 0xDA4 DUP4 PUSH2 0xD98 DUP11 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST PUSH2 0xDA4 DUP9 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2694 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x3122 AND JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xF83 SWAP2 ADDRESS SWAP2 ADD PUSH2 0x5577 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xCB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57D0 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2709 JUMPI POP PUSH1 0x0 PUSH2 0xEA9 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2716 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xCB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x38C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x15 SLOAD PUSH1 0x0 EQ PUSH2 0xDB4 JUMPI PUSH1 0xC SLOAD DUP1 PUSH2 0x27A0 JUMPI PUSH2 0x279D PUSH2 0x2795 PUSH2 0xF44 JUMP JUMPDEST PUSH2 0xD8C PUSH2 0x269F JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xEE1 DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ PUSH2 0x280C JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xC4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x27E7 SWAP1 DUP4 SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3900 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2832 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 SWAP1 PUSH2 0x287D SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3900 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x28B6 DUP3 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP3 SWAP1 SSTORE SWAP1 SWAP2 POP PUSH2 0x28DC PUSH2 0x1C02 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x290B JUMPI POP PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x2928 JUMPI PUSH2 0x291C DUP11 DUP7 DUP7 DUP5 PUSH2 0x392C JUMP JUMPDEST PUSH2 0x2928 DUP10 DUP5 DUP5 DUP5 PUSH2 0x392C JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP11 PUSH1 0x40 MLOAD PUSH2 0x296B SWAP2 SWAP1 PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x29C3 SWAP3 SWAP2 SWAP1 PUSH2 0x554F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 SLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x29FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 DUP3 ISZERO PUSH2 0xCB7 JUMPI PUSH1 0x0 DUP1 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x78D849ED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A6F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2A93 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4523 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x29D5277C SWAP4 PUSH2 0x2ACC SWAP4 DUP13 SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 ADD PUSH2 0x5593 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2B1B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x2B2F JUMPI POP DUP1 ISZERO ISZERO JUMPDEST PUSH2 0x2B4B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5910 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B61 DUP3 PUSH2 0xDA4 DUP9 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A515777 PUSH1 0xE2 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x69455DDC SWAP4 PUSH2 0x2BA4 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 DUP14 SWAP2 DUP9 SWAP2 ADD PUSH2 0x55C9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2BF4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ PUSH2 0x2C14 JUMPI PUSH2 0x2C11 DUP8 PUSH2 0xDA4 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x2C24 DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF SLOAD TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x253F JUMPI PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x740FF7D PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0xE81FEFA0 SWAP4 PUSH2 0x2C80 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x5577 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP6 AND PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2CF6 PUSH8 0xDE0B6B3A7640000 PUSH2 0xDA4 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D0B DUP2 PUSH2 0x2D06 PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x37B3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2D1B DUP3 PUSH3 0x24EA00 DUP4 PUSH2 0x39E2 JUMP JUMPDEST SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2D30 PUSH2 0x2983 JUMP JUMPDEST PUSH2 0x2D38 PUSH2 0x269F JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD GT DUP1 ISZERO SWAP1 PUSH2 0x2D57 JUMPI POP PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST PUSH2 0x2D73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5830 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2D99 JUMPI PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x2DA7 DUP8 DUP8 DUP8 DUP13 PUSH2 0x3A43 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP3 POP PUSH2 0x2DBE SWAP2 SWAP1 PUSH2 0x26D5 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP9 ISZERO PUSH2 0x2DDE JUMPI PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x2DD8 SWAP1 DUP11 PUSH2 0x3122 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 DUP10 ISZERO PUSH2 0x2DEA JUMPI POP PUSH1 0x1 JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2E03 SWAP3 SWAP2 SWAP1 PUSH2 0x5503 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x585314CF DUP5 DUP4 DUP16 DUP7 DUP16 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E7B SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x570E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2ECC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0x20 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x2EF4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5880 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF06A9C6B SWAP2 PUSH2 0x2F27 SWAP2 PUSH1 0x4 ADD PUSH2 0x5577 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F55 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP7 PUSH1 0x1 PUSH1 0x5 DUP2 LT PUSH2 0x2F66 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 SWAP1 SWAP8 ADD MLOAD SWAP7 SWAP13 SWAP7 SWAP12 POP SWAP6 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2F90 DUP4 PUSH2 0x3C78 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x302E JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x2FDB SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5593 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3007 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x302B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3057 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x306B DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3079 DUP8 DUP7 DUP9 DUP8 PUSH2 0x3D82 JUMP JUMPDEST POP PUSH2 0x3086 DUP8 DUP4 DUP4 DUP8 PUSH2 0x392C JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0xDB4 JUMPI PUSH1 0x0 PUSH2 0x30A2 PUSH2 0x3553 JUMP JUMPDEST POP SWAP1 POP PUSH2 0xEE1 DUP4 PUSH2 0xDA4 PUSH2 0x16D PUSH2 0xD98 DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x30D7 JUMPI POP PUSH1 0x0 PUSH2 0x1094 JUMP JUMPDEST POP DUP4 SLOAD PUSH2 0x1CB7 DUP2 PUSH2 0x3116 PUSH8 0xDE0B6B3A7640000 PUSH2 0x310A DUP9 PUSH2 0x30FE DUP10 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3EA3 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3EE9 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3F54 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3FB8 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3900 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3174 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xEA9 JUMPI PUSH2 0x1B30 DUP3 PUSH2 0xDA4 DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x31CD SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x55AE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x321D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x3239 PUSH2 0x322C CALLER PUSH2 0x1A39 JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST LT ISZERO PUSH2 0x3257 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5810 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3337 JUMPI DUP3 DUP2 LT ISZERO PUSH2 0x32D0 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x3299 SWAP1 ADDRESS SWAP1 DUP6 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x56A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3337 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x3304 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x56A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x331E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3332 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xDB0 DUP4 JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x335B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58E0 JUMP JUMPDEST PUSH2 0x3364 CALLER PUSH2 0x1A39 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x3398 JUMPI PUSH1 0x0 NOT DUP3 EQ PUSH2 0x338C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58A0 JUMP JUMPDEST PUSH2 0x3395 CALLER PUSH2 0x1A39 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x33A0 PUSH2 0x2C30 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33AF PUSH2 0x1C35 PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x33CF PUSH8 0xDE0B6B3A7640000 PUSH2 0xDA4 DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x33DB PUSH2 0x269F JUMP JUMPDEST SWAP1 POP DUP2 SWAP4 POP DUP1 DUP5 GT ISZERO PUSH2 0x3400 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5820 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x3499 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x3446 SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x55AE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x345E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3472 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3496 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x34B9 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34CD DUP3 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3122 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x34DB CALLER DUP10 DUP10 DUP10 PUSH2 0x3FFE JUMP JUMPDEST POP PUSH2 0x34E8 CALLER DUP4 DUP4 DUP10 PUSH2 0x392C JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x354D SWAP1 DUP6 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3515 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x568D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE DUP4 PUSH2 0x4123 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD1979FB PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD1979FB0 SWAP4 PUSH2 0x3595 SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x5593 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x35E5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4BA2 JUMP JUMPDEST POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP PUSH2 0x3618 SWAP2 POP PUSH9 0x56BC75E2D63100000 SWAP1 POP PUSH2 0xDA4 PUSH2 0x360B DUP3 DUP6 PUSH2 0x3122 JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP2 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x0 SWAP1 DUP1 PUSH2 0x3632 JUMPI PUSH1 0xE SLOAD PUSH2 0xDB0 JUMP JUMPDEST PUSH2 0xDB0 DUP2 PUSH2 0xDA4 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x3697 JUMPI PUSH1 0xF SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3679 JUMPI PUSH2 0x3675 PUSH2 0x3553 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x3687 DUP3 PUSH2 0xD8C PUSH2 0x269F JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x3695 JUMPI DUP1 SWAP4 POP JUMPDEST POP JUMPDEST PUSH2 0xDB0 DUP4 PUSH2 0x2D06 DUP4 PUSH2 0x2776 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36B4 DUP4 DUP4 PUSH2 0x2F84 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH2 0x36D0 SWAP1 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP1 PUSH2 0x27B0 JUMP JUMPDEST POP PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x36305CF1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD8C173C4 SWAP1 PUSH2 0x3703 SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x568D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x371D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3086 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3757 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57C0 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x37CB PUSH2 0x37C5 DUP6 PUSH2 0xD8C PUSH2 0xF44 JUMP JUMPDEST DUP5 PUSH2 0x3164 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD PUSH1 0xB SLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP3 DUP9 LT ISZERO PUSH2 0x37F2 JUMPI DUP3 SWAP8 POP JUMPDEST DUP2 DUP9 GT ISZERO PUSH2 0x3865 JUMPI SWAP7 DUP2 SWAP1 SUB SWAP7 PUSH9 0x56BC75E2D63100000 DUP3 SWAP1 SUB DUP1 DUP10 GT ISZERO PUSH2 0x3818 JUMPI DUP1 SWAP9 POP JUMPDEST PUSH2 0x3839 PUSH9 0x56BC75E2D63100000 PUSH2 0xDA4 DUP6 PUSH2 0xD98 DUP10 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP7 POP PUSH2 0x385D DUP8 PUSH2 0xD8C DUP4 PUSH2 0xDA4 PUSH2 0x3850 DUP8 DUP14 PUSH2 0x3122 JUMP JUMPDEST DUP15 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP10 POP POP PUSH2 0x38BB JUMP JUMPDEST PUSH2 0x3886 DUP6 PUSH2 0xD8C PUSH9 0x56BC75E2D63100000 PUSH2 0xDA4 DUP13 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP9 POP SWAP4 SWAP6 POP DUP6 SWAP4 PUSH2 0x389D DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP6 POP DUP7 DUP10 LT ISZERO PUSH2 0x38AF JUMPI DUP7 SWAP9 POP PUSH2 0x38BB JUMP JUMPDEST DUP6 DUP10 GT ISZERO PUSH2 0x38BB JUMPI DUP6 SWAP9 POP JUMPDEST POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x38EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP2 SWAP1 PUSH2 0x577F JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x38F6 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3924 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP2 SWAP1 PUSH2 0x577F JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3962 SWAP1 DUP7 SWAP1 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 SWAP1 PUSH1 0x20 ADD PUSH2 0x5529 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 EQ ISZERO PUSH2 0x398E JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x39BF JUMP JUMPDEST DUP5 ISZERO PUSH2 0x39BF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x39BC SWAP1 DUP4 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x30C8 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x39FD PUSH4 0x1E13380 PUSH2 0xDA4 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A1A PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3122 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3A39 DUP2 PUSH2 0xDA4 DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x0 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 PUSH2 0x100 SWAP1 DIV DUP2 AND SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP12 AND DUP6 EQ ISZERO PUSH2 0x3A99 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58F0 JUMP JUMPDEST CALLVALUE SWAP7 POP DUP8 ISZERO PUSH2 0x3AF7 JUMPI PUSH2 0x3ABD DUP6 DUP6 DUP11 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x34F3 JUMP JUMPDEST DUP8 DUP4 GT ISZERO PUSH2 0x3AF2 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x3AF2 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP12 DUP8 SUB SWAP1 PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x3B2C JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3237 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3B2C SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH2 0x34F3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3C2F JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x3B52 JUMPI POP DUP7 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3B5E JUMPI POP DUP1 DUP8 LT ISZERO JUMPDEST ISZERO PUSH2 0x3BF8 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x32382D61 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3BEE SWAP5 POP DUP16 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP5 SWAP1 PUSH2 0x34F3 JUMP JUMPDEST DUP1 DUP8 SUB SWAP7 POP PUSH2 0x3C2F JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x191C16B1 PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3C2F SWAP2 DUP14 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH2 0x41E1 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3C6A JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3239 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3C6A SWAP2 DUP8 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x41E1 JUMP JUMPDEST POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x3C98 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58B0 JUMP JUMPDEST PUSH2 0x3CA0 PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x3CAD PUSH2 0x1C35 PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST SWAP1 POP PUSH2 0x3CCB DUP2 PUSH2 0xDA4 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x3D13 JUMPI PUSH2 0x3D0E PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x3D7D JUMP JUMPDEST PUSH1 0x17 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D77 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3DAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3DD3 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH2 0x3E04 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xB4C03061FB5B7FED76389D5AF8F2E0DDB09F8C70D1333ABBB62582835E10ACCB SWAP1 PUSH2 0x3E46 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x598E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3E92 SWAP2 SWAP1 PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x3EB8 JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x3ECD JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3ECD JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0xCB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5940 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3EF8 JUMPI POP PUSH1 0x0 PUSH2 0xEA9 JUMP JUMPDEST DUP3 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x3F0C JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ JUMPDEST ISZERO PUSH2 0x3F29 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5900 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x3F36 JUMPI INVALID JUMPDEST SDIV EQ PUSH2 0xCB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5900 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3F73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5970 JUMP JUMPDEST DUP2 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x3F87 JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP4 EQ JUMPDEST ISZERO PUSH2 0x3FA4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5850 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x3FAF JUMPI INVALID JUMPDEST SDIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x3FCD JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x3FE2 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3FE2 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0xCB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD DUP3 SWAP2 PUSH2 0x4046 SWAP2 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3900 AND JUMP JUMPDEST SWAP1 POP PUSH1 0xA DUP2 GT PUSH2 0x4067 JUMPI PUSH2 0x4060 DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD PUSH2 0x4095 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x3122 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0x743033787F4738FF4D6A7225CE2BD0977EE5F86B91A902A58F5E4D0B297B4644 SWAP1 PUSH2 0x40D7 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x598E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3E92 SWAP2 SWAP1 PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x413F SWAP2 SWAP1 PUSH2 0x556B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x417C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4181 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP4 SWAP1 PUSH2 0x41A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP2 SWAP1 PUSH2 0x577F JUMP JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x2150 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x41C2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4741 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0xF30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP2 SWAP1 PUSH2 0x577F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2150 SWAP1 DUP7 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x3515 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0x55C9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xEA9 DUP2 PUSH2 0x5AFD JUMP JUMPDEST DUP1 MLOAD PUSH2 0xEA9 DUP2 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x4298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x42B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x42C3 PUSH2 0x42BE DUP3 PUSH2 0x59DD JUMP JUMPDEST PUSH2 0x59B7 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x42E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3086 JUMPI DUP2 PUSH2 0x42FE DUP9 DUP3 PUSH2 0x43A9 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x42EB JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4333 PUSH2 0x42BE DUP3 PUSH2 0x59DD JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x4359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3086 JUMPI DUP2 PUSH2 0x436F DUP9 DUP3 PUSH2 0x4444 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x435C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xEA9 DUP2 PUSH2 0x5B11 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xEA9 DUP2 PUSH2 0x5B11 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xEA9 DUP2 PUSH2 0x5B1A JUMP JUMPDEST DUP1 MLOAD PUSH2 0xEA9 DUP2 PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x43C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x43DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x4298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4414 PUSH2 0x42BE DUP3 PUSH2 0x59FD JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x4430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x443B DUP4 DUP3 DUP5 PUSH2 0x5A83 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4462 PUSH2 0x100 PUSH2 0x59B7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4470 DUP5 DUP5 PUSH2 0x439E JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x4481 DUP5 DUP5 DUP4 ADD PUSH2 0x4388 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x4495 DUP5 DUP3 DUP6 ADD PUSH2 0x4241 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x44A9 DUP5 DUP3 DUP6 ADD PUSH2 0x4241 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x44BD DUP5 DUP3 DUP6 ADD PUSH2 0x4241 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x44D1 DUP5 DUP3 DUP6 ADD PUSH2 0x439E JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x44E5 DUP5 DUP3 DUP6 ADD PUSH2 0x439E JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x44F9 DUP5 DUP3 DUP6 ADD PUSH2 0x439E JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1094 DUP5 DUP5 PUSH2 0x4241 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1094 DUP5 DUP5 PUSH2 0x424C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4560 DUP6 DUP6 PUSH2 0x4241 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4571 DUP6 DUP3 DUP7 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x459C DUP7 DUP7 PUSH2 0x4241 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x45AD DUP7 DUP3 DUP8 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x45BE DUP7 DUP3 DUP8 ADD PUSH2 0x439E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x45E7 DUP6 DUP6 PUSH2 0x4241 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4571 DUP6 DUP3 DUP7 ADD PUSH2 0x439E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x460D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4619 DUP7 DUP7 PUSH2 0x4241 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x462A DUP7 DUP3 DUP8 ADD PUSH2 0x439E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x45BE DUP7 DUP3 DUP8 ADD PUSH2 0x4388 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4673 DUP8 DUP3 DUP9 ADD PUSH2 0x4257 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x469D DUP8 DUP3 DUP9 ADD PUSH2 0x4257 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1094 DUP5 DUP3 DUP6 ADD PUSH2 0x429F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4706 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4712 DUP6 DUP3 DUP7 ADD PUSH2 0x4314 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4571 DUP6 DUP3 DUP7 ADD PUSH2 0x4388 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1094 DUP5 DUP5 PUSH2 0x4388 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1094 DUP5 DUP5 PUSH2 0x4393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x477C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4788 DUP12 DUP12 PUSH2 0x439E JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x4799 DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x47AA DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x47BB DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x47CC DUP12 DUP3 DUP13 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x47DD DUP12 DUP3 DUP13 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x47EE DUP12 DUP3 DUP13 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x480A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4816 DUP12 DUP3 DUP13 ADD PUSH2 0x43F5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x4846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4852 DUP14 DUP14 PUSH2 0x439E JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x4863 DUP14 DUP3 DUP15 ADD PUSH2 0x439E JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x4874 DUP14 DUP3 DUP15 ADD PUSH2 0x439E JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x4885 DUP14 DUP3 DUP15 ADD PUSH2 0x439E JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x4896 DUP14 DUP3 DUP15 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x48A7 DUP14 DUP3 DUP15 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x48B8 DUP14 DUP3 DUP15 ADD PUSH2 0x439E JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x48C9 DUP14 DUP3 DUP15 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x48E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48F2 DUP14 DUP3 DUP15 ADD PUSH2 0x43B4 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4923 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x492F DUP12 DUP12 PUSH2 0x439E JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x4940 DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x4951 DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x4962 DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x4973 DUP12 DUP3 DUP13 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x4984 DUP12 DUP3 DUP13 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x47EE DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1094 DUP5 DUP3 DUP6 ADD PUSH2 0x43F5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x49DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4712 DUP6 DUP3 DUP7 ADD PUSH2 0x43F5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1094 DUP5 DUP5 PUSH2 0x439E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1094 DUP5 DUP5 PUSH2 0x43A9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x45E7 DUP6 DUP6 PUSH2 0x439E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4A78 DUP6 DUP6 PUSH2 0x43A9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4571 DUP6 DUP3 DUP7 ADD PUSH2 0x43A9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4AAA DUP7 DUP7 PUSH2 0x439E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4ABB DUP7 DUP3 DUP8 ADD PUSH2 0x439E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x45BE DUP7 DUP3 DUP8 ADD PUSH2 0x4241 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4AE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4AEE DUP8 DUP8 PUSH2 0x439E JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4AFF DUP8 DUP3 DUP9 ADD PUSH2 0x439E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4B10 DUP8 DUP3 DUP9 ADD PUSH2 0x439E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4B21 DUP8 DUP3 DUP9 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4B45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4B51 DUP9 DUP9 PUSH2 0x439E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4B62 DUP9 DUP3 DUP10 ADD PUSH2 0x439E JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4B73 DUP9 DUP3 DUP10 ADD PUSH2 0x439E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4B84 DUP9 DUP3 DUP10 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x4B95 DUP9 DUP3 DUP10 ADD PUSH2 0x439E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4BBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4BC7 DUP10 DUP10 PUSH2 0x43A9 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x4BD8 DUP10 DUP3 DUP11 ADD PUSH2 0x43A9 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x4BE9 DUP10 DUP3 DUP11 ADD PUSH2 0x43A9 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x4BFA DUP10 DUP3 DUP11 ADD PUSH2 0x43A9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x4C0B DUP10 DUP3 DUP11 ADD PUSH2 0x43A9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x4C1C DUP10 DUP3 DUP11 ADD PUSH2 0x43A9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4C44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C50 DUP11 DUP11 PUSH2 0x439E JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x4C61 DUP11 DUP3 DUP12 ADD PUSH2 0x439E JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x4C72 DUP11 DUP3 DUP12 ADD PUSH2 0x439E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x4C83 DUP11 DUP3 DUP12 ADD PUSH2 0x439E JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x4C94 DUP11 DUP3 DUP12 ADD PUSH2 0x439E JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x4CA5 DUP11 DUP3 DUP12 ADD PUSH2 0x439E JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x4CB6 DUP11 DUP3 DUP12 ADD PUSH2 0x439E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CD1 DUP4 DUP4 PUSH2 0x4D09 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CD1 DUP4 DUP4 PUSH2 0x4E7C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CF1 DUP4 DUP4 PUSH2 0x5463 JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x4D03 DUP2 PUSH2 0x5A72 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4D03 DUP2 PUSH2 0x5A43 JUMP JUMPDEST PUSH2 0x4D03 PUSH2 0x4D1E DUP3 PUSH2 0x5A43 JUMP JUMPDEST PUSH2 0x5ABB JUMP JUMPDEST PUSH2 0x4D2C DUP2 PUSH2 0x5A2A JUMP JUMPDEST PUSH2 0x4D36 DUP2 DUP5 PUSH2 0xDB4 JUMP JUMPDEST SWAP3 POP PUSH2 0x4D41 DUP3 PUSH2 0xEC1 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF30 JUMPI DUP2 MLOAD PUSH2 0x4D59 DUP8 DUP3 PUSH2 0x4CC5 JUMP JUMPDEST SWAP7 POP PUSH2 0x4D64 DUP4 PUSH2 0x5A24 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4D45 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D7A DUP3 PUSH2 0x5A30 JUMP JUMPDEST PUSH2 0x4D84 DUP2 DUP6 PUSH2 0x5A3A JUMP JUMPDEST SWAP4 POP PUSH2 0x4D8F DUP4 PUSH2 0x5A24 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DBD JUMPI DUP2 MLOAD PUSH2 0x4DA7 DUP9 DUP3 PUSH2 0x4CD9 JUMP JUMPDEST SWAP8 POP PUSH2 0x4DB2 DUP4 PUSH2 0x5A24 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4D93 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DD3 DUP3 PUSH2 0x5A30 JUMP JUMPDEST PUSH2 0x4DDD DUP2 DUP6 PUSH2 0x5A3A JUMP JUMPDEST SWAP4 POP PUSH2 0x4DE8 DUP4 PUSH2 0x5A24 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DBD JUMPI DUP2 MLOAD PUSH2 0x4E00 DUP9 DUP3 PUSH2 0x4CE5 JUMP JUMPDEST SWAP8 POP PUSH2 0x4E0B DUP4 PUSH2 0x5A24 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4DEC JUMP JUMPDEST PUSH2 0x4E1F DUP2 PUSH2 0x5A34 JUMP JUMPDEST PUSH2 0x4E29 DUP2 DUP5 PUSH2 0xDB4 JUMP JUMPDEST SWAP3 POP PUSH2 0x4E34 DUP3 PUSH2 0xEC1 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF30 JUMPI DUP2 MLOAD PUSH2 0x4E4C DUP8 DUP3 PUSH2 0x4CD9 JUMP JUMPDEST SWAP7 POP PUSH2 0x4E57 DUP4 PUSH2 0x5A24 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4E38 JUMP JUMPDEST PUSH2 0x4D03 DUP2 PUSH2 0x5A4E JUMP JUMPDEST PUSH2 0x4D03 PUSH2 0x4E77 DUP3 PUSH2 0x5A4E JUMP JUMPDEST PUSH2 0x5AC6 JUMP JUMPDEST PUSH2 0x4D03 DUP2 PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0x4D03 PUSH2 0x4E91 DUP3 PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0x4D03 PUSH2 0x4E91 DUP3 PUSH2 0x5A53 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EAD DUP3 PUSH2 0x5A30 JUMP JUMPDEST PUSH2 0x4EB7 DUP2 DUP6 PUSH2 0x5A3A JUMP JUMPDEST SWAP4 POP PUSH2 0x4EC7 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5A8F JUMP JUMPDEST PUSH2 0x4ED0 DUP2 PUSH2 0x5AE7 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EE5 DUP3 PUSH2 0x5A30 JUMP JUMPDEST PUSH2 0x4EEF DUP2 DUP6 PUSH2 0xDB4 JUMP JUMPDEST SWAP4 POP PUSH2 0x4EFF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5A8F JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F16 PUSH1 0xC DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH12 0x636F6C6C20746F6F206C6F77 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F3E PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F5C PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F7A PUSH1 0x26 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FC2 PUSH1 0x1B DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FFB PUSH1 0x21 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x503E PUSH1 0xE DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5068 PUSH1 0x1 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5085 PUSH1 0x12 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH18 0x6E6F7420656E6F7567682062616C616E6365 PUSH1 0x70 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50B3 PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50D1 PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50EF PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x510D PUSH1 0x21 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5150 PUSH1 0x15 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5181 PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519F PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51BD PUSH1 0xF DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51E8 PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5206 PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5224 PUSH1 0x21 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5267 PUSH1 0xC DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528F PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52AD PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52CB PUSH1 0x27 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206D756C7469706C69636174696F6E206F DUP2 MSTORE PUSH7 0x766572666C6F77 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5314 PUSH1 0x1D DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x696E76616C6964207261746520636F6C6C61746572616C20746F6B656E000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x534D PUSH1 0xA DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH10 0x37B7363CA830BAB9B2B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5373 PUSH1 0xC DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x539B PUSH1 0x24 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 DUP2 MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53E1 PUSH1 0x18 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x34303120757365206F66206578697374696E67206C6F616E0000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x541A PUSH1 0x1 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5437 PUSH1 0x20 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206279207A65726F DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x5475 DUP5 DUP3 PUSH2 0x4E7C JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x5488 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4E62 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x549B PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4D09 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x54AE PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4D09 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x54C1 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x4D09 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x54D4 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4E7C JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x54E7 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x4E7C JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x354D PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x4D03 DUP2 PUSH2 0x5A6C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x550F DUP3 DUP6 PUSH2 0x4D12 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x551F DUP3 DUP5 PUSH2 0x4E6B JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5535 DUP3 DUP6 PUSH2 0x4D12 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x5545 DUP3 DUP5 PUSH2 0x4E85 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x555B DUP3 DUP6 PUSH2 0x4E96 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x5545 DUP3 DUP5 PUSH2 0x4E85 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 DUP3 DUP5 PUSH2 0x4EDA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEA9 DUP3 DUP5 PUSH2 0x4D09 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEA9 DUP3 DUP5 PUSH2 0x4CFA JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x55A1 DUP3 DUP6 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0xCB7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D09 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x55BC DUP3 DUP6 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0xCB7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4CFA JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x55D7 DUP3 DUP7 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x55E4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x1094 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4E7C JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x55FF DUP3 DUP9 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x560C PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x5619 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x5626 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x3A39 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4E62 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x5641 DUP3 DUP10 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x564E PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x565B PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x5668 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x5675 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x5682 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4E7C JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x569B DUP3 DUP6 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0xCB7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4E7C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x56B6 DUP3 DUP7 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x56C3 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x1094 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4CFA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCB7 DUP2 DUP5 PUSH2 0x4D6F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCB7 DUP2 DUP5 PUSH2 0x4DC8 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEA9 DUP3 DUP5 PUSH2 0x4E62 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEA9 DUP3 DUP5 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x1C0 DUP2 ADD PUSH2 0x571D DUP3 DUP11 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x572A PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x5737 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4E62 JUMP JUMPDEST PUSH2 0x5744 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x5751 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4D23 JUMP JUMPDEST PUSH2 0x575F PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4E16 JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x1A0 DUP4 ADD MSTORE PUSH2 0x5772 DUP2 DUP5 PUSH2 0x4EA2 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCB7 DUP2 DUP5 PUSH2 0x4EA2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x4F09 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x4F31 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x4F4F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x4F6D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x4FB5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x4FEE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5031 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x505B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5078 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x50A6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x50C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x50E2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5100 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5143 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5174 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5192 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x51B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x51DB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x51F9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5217 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x525A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5282 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x52BE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5307 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5366 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x538E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x53D4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x540D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x542A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x569B DUP3 DUP6 PUSH2 0x4E7C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x599C DUP3 DUP7 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x55E4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4E7C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEA9 DUP3 DUP5 PUSH2 0x54FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x59D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x59F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5A13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST POP PUSH1 0x4 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x5 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x5A60 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x5A43 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5AAA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5A92 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x354D JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x5AD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x5ADC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x5AF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x5AF1 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x5B06 DUP2 PUSH2 0x5A43 JUMP JUMPDEST DUP2 EQ PUSH2 0x253F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5B06 DUP2 PUSH2 0x5A4E JUMP JUMPDEST PUSH2 0x5B06 DUP2 PUSH2 0xEC1 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH6 0x56CE952BB918 0xDE 0xE3 0xEC PUSH21 0xA136BEEE857DDFDDBF2CD1A94FF2CAC96CA9A45C0 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "99:1487:4:-;;;493:1:143;661:55;;;;697:12:142;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;99:1487:4;;780:87:137;853:10;780:87;:::o;99:1487:4:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106103d95760003560e01c80637e37c08c116101fd578063ca37e66611610118578063e3cded61116100ab578063ef2b0b391161007a578063ef2b0b3914610aa3578063f2fde38b14610ab8578063f6b69f9914610ad8578063f851a44014610aeb578063ffa1ad7414610b00576103d9565b8063e3cded6114610a23578063e41b07e314610a43578063e697d2ee14610a63578063eebc508114610a83576103d9565b8063d759dbeb116100e7578063d759dbeb146109ae578063d8f06c83146109c3578063d97206a4146109e3578063dd62ed3e14610a03576103d9565b8063ca37e66614610939578063cb926cb31461094e578063d1a1beb41461096e578063d65a50211461098e576103d9565b806395d89b4111610190578063a9059cbb1161015f578063a9059cbb146108c4578063b9fe1a8f146108e4578063ba0e43bf14610904578063be19421714610919576103d9565b806395d89b41146108655780639bda3a981461087a5780639dc29fac1461088f5780639fd0506d146108af576103d9565b80638da5cb5b116101cc5780638da5cb5b146108115780638ee6c4e6146108265780638f32d59b1461083b5780638fb807c514610850576103d9565b80637e37c08c146107b25780637ff9b596146107c7578063829b38f4146107dc5780638325a1c0146107fc576103d9565b80632f6b600d116102f8578063612ef80b1161028b57806370a082311161025a57806370a08231146107285780637288b3441461074857806376fd4fdf14610768578063797bf385146107885780637b7933b41461079d576103d9565b8063612ef80b146106a4578063631a3ef8146106b95780636b40cd40146106d9578063704b6c0214610708576103d9565b806340c10f19116102c757806340c10f191461063a57806344a4a0031461065a57806354198ce91461066f57806356e07d701461068f576103d9565b80632f6b600d146105ce578063313ce567146105e35780633291c11a14610605578063330691ac14610625576103d9565b806318498b1d1161037057806323b872dd1161033f57806323b872dd1461055a57806328a02f191461057a5780632d88af4a1461059b5780632ea295fa146105bb576103d9565b806318498b1d146104f95780631d0806ae1461051b5780631f68f20a1461053057806320f6d07c14610545576103d9565b8063095ea7b3116103ac578063095ea7b31461048257806309ec6b6b146104af57806312416898146104c457806318160ddd146104e4576103d9565b806304797930146103e857806306947a3a1461041e57806306b3efd61461044057806306fdde0314610460575b3480156103e557600080fd5b50005b3480156103f457600080fd5b50610408610403366004614a89565b610b15565b6040516104159190615700565b60405180910390f35b34801561042a57600080fd5b50610433610cbe565b6040516104159190615577565b34801561044c57600080fd5b5061040861045b366004614505565b610ccd565b34801561046c57600080fd5b50610475610db9565b604051610415919061577f565b34801561048e57600080fd5b506104a261049d3660046145c8565b610e44565b60405161041591906156f2565b3480156104bb57600080fd5b50610408610eaf565b3480156104d057600080fd5b506104086104df3660046149fe565b610ec4565b3480156104f057600080fd5b50610408610eef565b34801561050557600080fd5b50610519610514366004614b2d565b610ef5565b005b34801561052757600080fd5b50610408610f38565b34801561053c57600080fd5b50610408610f3e565b34801561055157600080fd5b50610408610f44565b34801561056657600080fd5b506104a261057536600461457b565b610fd3565b61058d610588366004614906565b61109c565b604051610415929190615980565b3480156105a757600080fd5b506105196105b6366004614505565b6112c1565b61058d6105c936600461475f565b611307565b3480156105da57600080fd5b506104336115e7565b3480156105ef57600080fd5b506105f86115f6565b60405161041591906159a9565b34801561061157600080fd5b506104086106203660046149fe565b6115ff565b34801561063157600080fd5b50610408611611565b34801561064657600080fd5b506104086106553660046145c8565b611617565b34801561066657600080fd5b50610408611658565b34801561067b57600080fd5b5061040861068a366004614505565b61166a565b34801561069b57600080fd5b5061040861170b565b3480156106b057600080fd5b50610408611711565b3480156106c557600080fd5b506104086106d4366004614a89565b611742565b3480156106e557600080fd5b506106f96106f4366004614acc565b6118e2565b6040516104159392919061598e565b34801561071457600080fd5b50610519610723366004614505565b6119f3565b34801561073457600080fd5b50610408610743366004614505565b611a39565b34801561075457600080fd5b50610408610763366004614a3a565b611a54565b34801561077457600080fd5b506104086107833660046145f8565b611b37565b34801561079457600080fd5b50610433611be2565b3480156107a957600080fd5b50610408611bf6565b3480156107be57600080fd5b50610408611bfc565b3480156107d357600080fd5b50610408611c02565b3480156107e857600080fd5b506104086107f73660046149fe565b611c40565b34801561080857600080fd5b50610408611cc0565b34801561081d57600080fd5b50610433611ccc565b34801561083257600080fd5b50610433611cdb565b34801561084757600080fd5b506104a2611cea565b34801561085c57600080fd5b50610408611d10565b34801561087157600080fd5b50610475611d40565b34801561088657600080fd5b50610433611d9b565b34801561089b57600080fd5b506104086108aa3660046145c8565b611daa565b3480156108bb57600080fd5b50610433611e1e565b3480156108d057600080fd5b506104a26108df3660046145c8565b611e2d565b3480156108f057600080fd5b506104086108ff3660046149fe565b611e3d565b34801561091057600080fd5b50610408611e48565b34801561092557600080fd5b506104a2610934366004614995565b611e4e565b34801561094557600080fd5b50610433611ed0565b34801561095a57600080fd5b50610519610969366004614505565b611edf565b34801561097a57600080fd5b506104086109893660046145f8565b611f25565b34801561099a57600080fd5b506104086109a93660046149fe565b611f6f565b3480156109ba57600080fd5b50610408611f82565b3480156109cf57600080fd5b506105196109de3660046146dd565b611f88565b3480156109ef57600080fd5b506105196109fe366004614c29565b612157565b348015610a0f57600080fd5b50610408610a1e366004614541565b61225e565b348015610a2f57600080fd5b50610519610a3e3660046149c9565b612289565b348015610a4f57600080fd5b50610408610a5e366004614505565b61232e565b348015610a6f57600080fd5b50610519610a7e36600461463b565b612340565b348015610a8f57600080fd5b50610408610a9e366004614505565b6124f1565b348015610aaf57600080fd5b5061040861250c565b348015610ac457600080fd5b50610519610ad3366004614505565b612512565b61058d610ae6366004614826565b612542565b348015610af757600080fd5b50610433612612565b348015610b0c57600080fd5b50610408612621565b60008315610cb7576001600160a01b038216610b3a576017546001600160a01b031691505b600060106000846001604051602001610b54929190615503565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506001600160a01b039182169363e762319f936101009091049092169187918a91869163ca74a5d991610bc5918a9101615700565b60206040518083038186803b158015610bdd57600080fd5b505afa158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c159190810190614a1c565b60016040518663ffffffff1660e01b8152600401610c379594939291906155f1565b60206040518083038186803b158015610c4f57600080fd5b505afa158015610c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c879190810190614a1c565b9150610c9b82610c95611d10565b86612626565b9350610ca9915061269f9050565b821115610cb557600091505b505b9392505050565b6016546001600160a01b031681565b601c5460009081906001600160a01b031615610d6857601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690610d159030908790600401615593565b60206040518083038186803b158015610d2d57600080fd5b505afa158015610d41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d659190810190614a1c565b90505b610db0670de0b6b3a7640000610da4610d7f611c02565b610d9885610d8c89611a39565b9063ffffffff6126d516565b9063ffffffff6126fa16565b9063ffffffff61273416565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610e3c5780601f10610e1157610100808354040283529160200191610e3c565b820191906000526020600020905b815481529060010190602001808311610e1f57829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e9d908690615700565b60405180910390a35060015b92915050565b6000610ebe6104df6000612776565b90505b90565b600080610ecf610f44565b90508015610ee957610ee18184611a54565b915050610db4565b50919050565b60155490565b6000610f03868686866118e2565b5091505081811015610f305760405162461bcd60e51b8152600401610f2790615790565b60405180910390fd5b505050505050565b600e5481565b60055481565b6016546004805460405163250f447f60e11b81526000936001600160a01b0390811693634a1e88fe93610f839330936101009092049091169101615593565b60206040518083038186803b158015610f9b57600080fd5b505afa158015610faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ebe9190810190614a1c565b60165460405163115dd4b160e01b8152600091611094918691869186916001600160a01b03169063115dd4b19061100e903390600401615585565b60206040518083038186803b15801561102657600080fd5b505afa15801561103a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061105e9190810190614741565b61108b576001600160a01b038816600090815260146020908152604080832033845290915290205461108f565b6000195b6127b0565b949350505050565b6000806001600054146110c15760405162461bcd60e51b8152600401610f2790615930565b60026000556110ce612983565b6110db8989898988610ef5565b6001600160a01b0386166110f8576017546001600160a01b031695505b6004546001600160a01b0387811661010090920416141561112b5760405162461bcd60e51b8152600401610f2790615840565b8915806111405750336001600160a01b038616145b61115c5760405162461bcd60e51b8152600401610f2790615950565b6001600160a01b0386166000908152601260205260409020541561119f576001600160a01b03861660009081526012602052604090205487111561119f57600080fd5b60045461010090046001600160a01b0316600090815260126020526040902054156111f05760045461010090046001600160a01b03166000908152601260205260409020548811156111f057600080fd5b60006111fd87898b612a03565b90508061121c5760405162461bcd60e51b8152600401610f2790615870565b611224614205565b61122c614223565b3082526001600160a01b038816602080840182905260408401919091528101839052606081018b9052608081018a9052611264612c30565b6112758c8260016020020151612cd6565b825260208201526112966f4b3b4ca85a86c47a098a2240000000008d612734565b9b506112a88d60008e8c86868c612d25565b6001600055909e909d509b505050505050505050505050565b6112c9611cea565b6112e55760405162461bcd60e51b8152600401610f27906158d0565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b60008060016000541461132c5760405162461bcd60e51b8152600401610f2790615930565b60026000558861134e5760405162461bcd60e51b8152600401610f2790615960565b611356612983565b6001600160a01b03861660009081526012602052604090205415611399576001600160a01b03861660009081526012602052604090205487111561139957600080fd5b3415806113a557508634145b80156113b95750861515806113b957508915155b80156113e057506001600160a01b0386161515806113d657503415155b806113e057508915155b80156113fc57508915806113fc5750336001600160a01b038616145b6114185760405162461bcd60e51b8152600401610f2790615800565b6001600160a01b038616611435576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156114685760405162461bcd60e51b8152600401610f27906157a0565b611470612c30565b611478614205565b611480614223565b3082526001600160a01b03878116602080850191909152908716604084015281018b90526114b88b6114b26000612776565b8c612626565b8360006020020184600260200201856001602002019290925291905252888160046020020181815250506115cf8c8c601660009054906101000a90046001600160a01b03166001600160a01b031663ca74a5d9601060008e6001604051602001611523929190615503565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020546040518263ffffffff1660e01b81526004016115679190615700565b60206040518083038186803b15801561157f57600080fd5b505afa158015611593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115b79190810190614a1c565b8b868660405180602001604052806000815250612d25565b6001600055909d909c509a5050505050505050505050565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600060016000541461163b5760405162461bcd60e51b8152600401610f2790615930565b600260005561164a8383612f84565b90505b600160005592915050565b6000610ebe611665610f44565b613090565b600080827f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb660001b6040516020016116a3929190615529565b604051602081830303815290604052805190602001209050610db08160136000866001600160a01b03166001600160a01b03168152602001908152602001600020546116ed611c02565b6001600160a01b0387166000908152601160205260409020546130c8565b600a5481565b60008061171e6000612776565b9050600061172a610f44565b90508082111561173d5790039050610ec1565b505090565b60008315610cb757600061175885610c95611d10565b9250505061176461269f565b8111610cb5576001600160a01b038316611787576017546001600160a01b031692505b6000601060008560016040516020016117a1929190615503565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506118d993600a936001600160a01b03938416936325decac09361010090930416918a918991869163ca74a5d991611817918c9101615700565b60206040518083038186803b15801561182f57600080fd5b505afa158015611843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118679190810190614a1c565b60016040518663ffffffff1660e01b81526004016118899594939291906155f1565b60206040518083038186803b1580156118a157600080fd5b505afa1580156118b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d8c9190810190614a1c565b92505050610cb7565b600080806001600160a01b038416611903576017546001600160a01b031693505b6000611910858789612a03565b905061191c8882612cd6565b909450915061192961269f565b8411156119405750600092508291508190506119e9565b611950878563ffffffff6126d516565b6016546004805460405163d67f707760e01b8152939a506001600160a01b039283169363d67f7077936119959361010090930416918a918d918d918a918d9101615633565b60206040518083038186803b1580156119ad57600080fd5b505afa1580156119c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119e59190810190614a1c565b9250505b9450945094915050565b6119fb611cea565b611a175760405162461bcd60e51b8152600401610f27906158d0565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60008215801590611a655750828210155b15610ea957611b30701d6329f1c35ca4bfabb9f5610000000000610da4611b1a68056bc75e2d63100000601660009054906101000a90046001600160a01b03166001600160a01b0316634699f8466040518163ffffffff1660e01b815260040160206040518083038186803b158015611add57600080fd5b505afa158015611af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b159190810190614a1c565b613122565b610d98611b278888613164565b610d9889613090565b9050610ea9565b6000600160005414611b5b5760405162461bcd60e51b8152600401610f2790615930565b60026000558115611b7657611b6f83613196565b9050611b82565b611b7f8361333c565b90505b8015611bd657611bd6600460019054906101000a90046001600160a01b0316858360405180604001604052806015815260200174185cdcd95d081d1c985b9cd9995c8819985a5b1959605a1b8152506134f3565b60016000559392505050565b60045461010090046001600160a01b031681565b600d5481565b60085481565b600f546000908190426001600160581b03908116911614611c2957611c25613553565b9150505b611c3a611c3582612776565b61361f565b91505090565b600080611c5f61016d610da4601c600b546126fa90919063ffffffff16565b90506000611c7c68056bc75e2d631000008363ffffffff61312216565b90506000611c9968056bc75e2d63100000610da484610d98611711565b9050611cb785610da483670de0b6b3a764000063ffffffff6126fa16565b95945050505050565b6000610ebe600061364e565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316611d016136a4565b6001600160a01b031614905090565b600f546000908190426001600160581b03908116911614611d3757611d33613553565b9150505b611c3a81612776565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e3c5780601f10610e1157610100808354040283529160200191610e3c565b6018546001600160a01b031681565b6000600160005414611dce5760405162461bcd60e51b8152600401610f2790615930565b6002600055611ddc8261333c565b9050801561164d5761164d600460019054906101000a90046001600160a01b03168483604051806040016040528060018152602001603560f81b8152506134f3565b601b546001600160a01b031681565b6000610cb73384846000196127b0565b6000610ea98261364e565b60095481565b60008082604051602001611e62919061556b565b6040516020818303038152906040528051906020012090506000817fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001611eaf92919061554f565b60408051808303601f19018152919052805160209091012054949350505050565b601a546001600160a01b031681565b611ee7611cea565b611f035760405162461bcd60e51b8152600401610f27906158d0565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000600160005414611f495760405162461bcd60e51b8152600401610f2790615930565b60026000558115611f6557611f5e84846136a8565b9050611bd6565b611f5e8484612f84565b6000610ea96104df83610d8c6000612776565b60075481565b611f90611cea565b80611fa557506019546001600160a01b031633145b611fc15760405162461bcd60e51b8152600401610f27906158d0565b60045460609061010090046001600160a01b031660005b845181101561204b5781858281518110611fee57fe5b6020026020010151606001906001600160a01b031690816001600160a01b03168152505083612020576224ea00612023565b60005b62ffffff1685828151811061203457fe5b602090810291909101015160e00152600101611fd8565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e9061207c9087906004016156e1565b600060405180830381600087803b15801561209657600080fd5b505af11580156120aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120d291908101906146a9565b915060005b8251811015612150578281815181106120ec57fe5b60200260200101516010600087848151811061210457fe5b60200260200101516080015187604051602001612122929190615503565b60408051601f19818403018152918152815160209283012083529082019290925201600020556001016120d7565b5050505050565b61215f611cea565b8061217457506019546001600160a01b031633145b6121905760405162461bcd60e51b8152600401610f27906158d0565b68056bc75e2d631000006121aa878963ffffffff6126d516565b11156121c85760405162461bcd60e51b8152600401610f2790615860565b68056bc75e2d631000006121e2858763ffffffff6126d516565b11156122005760405162461bcd60e51b8152600401610f2790615860565b68056bc75e2d631000008311158015612222575068056bc75e2d631000008211155b61223e5760405162461bcd60e51b8152600401610f2790615890565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b031633146122b35760405162461bcd60e51b8152600401610f2790615920565b6000826040516020016122c6919061556b565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f260405160200161230e92919061554f565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b612348611cea565b8061235d57506019546001600160a01b031633145b6123795760405162461bcd60e51b8152600401610f27906158d0565b8281146123985760405162461bcd60e51b8152600401610f27906157f0565b6040805184815260208086028201019091526060908480156123c4578160200160208202803883390190505b50905060005b848110156124875760008686838181106123e057fe5b90506020020160206123f59190810190614505565b85858481811061240157fe5b90506020020160206124169190810190614723565b604051602001612427929190615503565b6040516020818303038152906040528051906020012060001c9050601060008281526020019081526020016000205483838151811061246257fe5b60209081029190910181019190915260009182526010905260408120556001016123ca565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a906124b89084906004016156d0565b600060405180830381600087803b1580156124d257600080fd5b505af11580156124e6573d6000803e3d6000fd5b505050505050505050565b6001600160a01b031660009081526011602052604090205490565b600b5481565b61251a611cea565b6125365760405162461bcd60e51b8152600401610f27906158d0565b61253f81613731565b50565b6000806001600160a01b038516156125b95760165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf44890612586908a908990600401615593565b600060405180830381600087803b1580156125a057600080fd5b505af11580156125b4573d6000803e3d6000fd5b505050505b6125ff8c8c8c8c8c8c8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061109c92505050565b915091509a509a98505050505050505050565b6019546001600160a01b031681565b600681565b600080600061263586866137b3565b925061268261266a670de0b6b3a7640000611b156b0a3098c68eb9427db8000000610da483610d988a8c63ffffffff6126fa16565b610da488670de0b6b3a764000063ffffffff6126fa16565b9050612694818763ffffffff61312216565b915093509350939050565b600480546040516370a0823160e01b81526000926101009092046001600160a01b0316916370a0823191610f8391309101615577565b600082820183811015610cb75760405162461bcd60e51b8152600401610f27906157d0565b60008261270957506000610ea9565b8282028284828161271657fe5b0414610cb75760405162461bcd60e51b8152600401610f27906158c0565b6000610cb783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138c9565b6000601554600014610db457600c54806127a05761279d612795610f44565b610d8c61269f565b90505b610ee1818463ffffffff6126d516565b6000600019821461280c576040805180820190915260028152610c4d60f21b60208201526127e7908390859063ffffffff61390016565b6001600160a01b03861660009081526014602090815260408083203384529091529020555b6001600160a01b0384166128325760405162461bcd60e51b8152600401610f27906157b0565b6001600160a01b03851660009081526013602090815260408083205481518083019092526002825261189b60f11b9282019290925290919061287d908390879063ffffffff61390016565b6001600160a01b038089166000908152601360205260408082208490559189168152908120549192506128b6828863ffffffff6126d516565b6001600160a01b03891660009081526013602052604081208290559091506128dc611c02565b601c549091506001600160a01b038b811691161480159061290b5750601c546001600160a01b038a8116911614155b156129285761291c8a86868461392c565b6129288984848461392c565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a60405161296b9190615700565b60405180910390a35060019998505050505050505050565b600080356001600160e01b0319167fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f26040516020016129c392919061554f565b60405160208183030381529060405280519060200120905060008154905080156129ff5760405162461bcd60e51b8152600401610f27906158d0565b5050565b808215610cb757600080601660009054906101000a90046001600160a01b03166001600160a01b03166378d849ed6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a5b57600080fd5b505afa158015612a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a939190810190614523565b60048054604051630a7549df60e21b81526001600160a01b03938416936329d5277c93612acc938c936101009091049092169101615593565b604080518083038186803b158015612ae357600080fd5b505afa158015612af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b1b9190810190614a59565b9150915081600014158015612b2f57508015155b612b4b5760405162461bcd60e51b8152600401610f2790615910565b6000612b6182610da4888663ffffffff6126fa16565b60165460048054604051631a51577760e21b81529394506000936001600160a01b03938416936369455ddc93612ba4936101009004909116918d918891016155c9565b60206040518083038186803b158015612bbc57600080fd5b505afa158015612bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612bf49190810190614a1c565b9050868114612c1457612c1187610da4848463ffffffff6126fa16565b91505b612c24828663ffffffff6126d516565b98975050505050505050565b600f5442906001600160581b0380831691161461253f5760165460048054604051630740ff7d60e51b81526001600160a01b039384169363e81fefa093612c809361010090049091169101615577565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b5050600f80546001600160581b0385166affffffffffffffffffffff19909116179055505050565b60008080612cf6670de0b6b3a7640000610da4868863ffffffff6126fa16565b9050612d0b81612d066000612776565b6137b3565b9150612d1b826224ea00836139e2565b9250509250929050565b600080612d30612983565b612d3861269f565b602085015111801590612d57575060208501516001600160a01b031615155b612d735760405162461bcd60e51b8152600401610f2790615830565b60408501516001600160a01b0316612d995760208501516001600160a01b031660408601525b6000612da78787878c613a43565b60208601516060870151919250612dbe91906126d5565b60608601528815612dde576060850151612dd8908a613122565b60608601525b60008915612dea575060015b6000601060008a84604051602001612e03929190615503565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020549050601660009054906101000a90046001600160a01b03166001600160a01b031663585314cf84838f868f8e8e8e6040518963ffffffff1660e01b8152600401612e7b979695949392919061570e565b60408051808303818588803b158015612e9357600080fd5b505af1158015612ea7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250612ecc9190810190614a59565b608089015260208801819052612ef45760405162461bcd60e51b8152600401610f2790615880565b601654602089015160405163f06a9c6b60e01b81526001600160a01b039092169163f06a9c6b91612f2791600401615577565b600060405180830381600087803b158015612f4157600080fd5b505af1158015612f55573d6000803e3d6000fd5b5050505086600160058110612f6657fe5b6020020151608090970151969c969b50959950505050505050505050565b600080612f9083613c78565b601c5491935091506000906001600160a01b03161561302e57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690612fdb9030908990600401615593565b60206040518083038186803b158015612ff357600080fd5b505afa158015613007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061302b9190810190614a1c565b90505b6001600160a01b038516600090815260136020526040812054613057908363ffffffff6126d516565b9050600061306b828663ffffffff6126d516565b905061307987868887613d82565b506130868783838761392c565b5050505092915050565b60008115610db45760006130a2613553565b509050610ee183610da461016d610d988568056bc75e2d6310000063ffffffff6126fa16565b6000816130d757506000611094565b508354611cb781613116670de0b6b3a764000061310a886130fe898963ffffffff613ea316565b9063ffffffff613ee916565b9063ffffffff613f5416565b9063ffffffff613fb816565b6000610cb783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613900565b6000821580159061317457508115155b15610ea957611b3082610da48568056bc75e2d6310000063ffffffff6126fa16565b601c54604051636822955360e11b815260009182916001600160a01b039091169063d0452aa6906131cd90309033906004016155ae565b60206040518083038186803b1580156131e557600080fd5b505afa1580156131f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061321d9190810190614a1c565b90508261323961322c33611a39565b839063ffffffff6126d516565b10156132575760405162461bcd60e51b8152600401610f2790615810565b801561333757828110156132d057601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec90613299903090859033906004016156a8565b600060405180830381600087803b1580156132b357600080fd5b505af11580156132c7573d6000803e3d6000fd5b50505050613337565b601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec90613304903090879033906004016156a8565b600060405180830381600087803b15801561331e57600080fd5b505af1158015613332573d6000803e3d6000fd5b505050505b610db0835b60008161335b5760405162461bcd60e51b8152600401610f27906158e0565b61336433611a39565b82111561339857600019821461338c5760405162461bcd60e51b8152600401610f27906158a0565b61339533611a39565b91505b6133a0612c30565b60006133af611c356000612776565b905060006133cf670de0b6b3a7640000610da4868563ffffffff6126fa16565b905060006133db61269f565b9050819350808411156134005760405162461bcd60e51b8152600401610f2790615820565b601c546000906001600160a01b03161561349957601c54604051636822955360e11b81526001600160a01b039091169063d0452aa69061344690309033906004016155ae565b60206040518083038186803b15801561345e57600080fd5b505afa158015613472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134969190810190614a1c565b90505b336000908152601360205260408120546134b9908363ffffffff6126d516565b905060006134cd828963ffffffff61312216565b90506134db33898989613ffe565b506134e83383838961392c565b505050505050919050565b60405161354d90859063a9059cbb60e01b90613515908790879060240161568d565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915283614123565b50505050565b60165460048054604051630d1979fb60e41b8152600093849384936001600160a01b039283169363d1979fb09361359593309361010090049091169101615593565b60c06040518083038186803b1580156135ad57600080fd5b505afa1580156135c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506135e59190810190614ba2565b5091965094509250613618915068056bc75e2d631000009050610da461360b8285613122565b859063ffffffff6126fa16565b9150509091565b6015546000908061363257600e54610db0565b610db081610da485670de0b6b3a764000063ffffffff6126fa16565b600080821561369757600f54426001600160581b0390811691161461367957613675613553565b9150505b600061368782610d8c61269f565b905080841115613695578093505b505b610db083612d0683612776565b3390565b60006136b48383612f84565b601c549091506136d09084906001600160a01b031683806127b0565b50601c546040516336305cf160e21b81526001600160a01b039091169063d8c173c490613703908690859060040161568d565b600060405180830381600087803b15801561371d57600080fd5b505af1158015613086573d6000803e3d6000fd5b6001600160a01b0381166137575760405162461bcd60e51b8152600401610f27906157c0565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000806137cb6137c585610d8c610f44565b84613164565b600554600654600954600a54600b54949550600094859493929190828810156137f2578297505b8188111561386557968190039668056bc75e2d6310000082900380891115613818578098505b61383968056bc75e2d63100000610da485610d98898b63ffffffff6126d516565b965061385d87610d8c83610da4613850878d613122565b8e9063ffffffff6126fa16565b9950506138bb565b61388685610d8c68056bc75e2d63100000610da48c8963ffffffff6126fa16565b9850939550859361389d848663ffffffff6126d516565b9550868910156138af578698506138bb565b858911156138bb578598505b505050505050505092915050565b600081836138ea5760405162461bcd60e51b8152600401610f27919061577f565b5060008385816138f657fe5b0495945050505050565b600081848411156139245760405162461bcd60e51b8152600401610f27919061577f565b505050900390565b6040516000906139629086907f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb690602001615529565b6040516020818303038152906040528051906020012090506000836000141561398e57600092506139bf565b84156139bf576001600160a01b0386166000908152601160205260409020546139bc908390879086906130c8565b90505b90556001600160a01b039093166000908152601160205260409020929092555050565b6000806139fd6301e13380610da4878763ffffffff6126fa16565b90506000613a1a68056bc75e2d631000008363ffffffff61312216565b9050613a3981610da48668056bc75e2d6310000063ffffffff6126fa16565b9695505050505050565b60175460045460408501516020850151606086015160808701516000956001600160a01b03908116956101009004811694939291908b16851415613a995760405162461bcd60e51b8152600401610f27906158f0565b3496508715613af757613abd85858a604051806020016040528060008152506134f3565b87831115613af257601654604080516020810190915260008152613af29187916001600160a01b03909116908b8703906134f3565b613b2c565b601654604080518082019091526002815261323760f01b6020820152613b2c9187916001600160a01b039091169086906134f3565b8015613c2f57856001600160a01b03168b6001600160a01b0316148015613b5257508615155b8015613b5e5750808710155b15613bf857856001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613b9e57600080fd5b505af1158015613bb2573d6000803e3d6000fd5b505060165460408051808201909152600481526332382d6160e01b6020820152613bee94508f93506001600160a01b03909116915084906134f3565b8087039650613c2f565b601654604080518082019091526004815263191c16b160e11b6020820152613c2f918d9133916001600160a01b03169085906141e1565b8115613c6a57601654604080518082019091526002815261323960f01b6020820152613c6a91879133916001600160a01b03169086906141e1565b505050505050949350505050565b60008082613c985760405162461bcd60e51b8152600401610f27906158b0565b613ca0612c30565b613cad611c356000612776565b9050613ccb81610da485670de0b6b3a764000063ffffffff6126fa16565b915034613d1357613d0e600460019054906101000a90046001600160a01b031633308660405180604001604052806002815260200161062760f31b8152506141e1565b613d7d565b601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613d6357600080fd5b505af1158015613d77573d6000803e3d6000fd5b50505050505b915091565b60006001600160a01b038516613daa5760405162461bcd60e51b8152600401610f27906157b0565b6001600160a01b038516600090815260136020526040812054613dd3908663ffffffff6126d516565b6001600160a01b0387166000908152601360205260409020819055601554909150613e04908663ffffffff6126d516565b6015556040516001600160a01b038716907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb90613e469088908890889061598e565b60405180910390a2856001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613e929190615700565b60405180910390a395945050505050565b6000818303818312801590613eb85750838113155b80613ecd5750600083128015613ecd57508381135b610cb75760405162461bcd60e51b8152600401610f2790615940565b600082613ef857506000610ea9565b82600019148015613f0c5750600160ff1b82145b15613f295760405162461bcd60e51b8152600401610f2790615900565b82820282848281613f3657fe5b0514610cb75760405162461bcd60e51b8152600401610f2790615900565b600081613f735760405162461bcd60e51b8152600401610f2790615970565b81600019148015613f875750600160ff1b83145b15613fa45760405162461bcd60e51b8152600401610f2790615850565b6000828481613faf57fe5b05949350505050565b6000828201818312801590613fcd5750838112155b80613fe25750600083128015613fe257508381125b610cb75760405162461bcd60e51b8152600401610f27906157e0565b6040805180820182526002815261189b60f11b6020808301919091526001600160a01b038716600090815260139091529182205482916140469190879063ffffffff61390016565b9050600a811161406757614060858263ffffffff6126d516565b9450600090505b6001600160a01b0386166000908152601360205260409020819055601554614095908663ffffffff61312216565b6015556040516001600160a01b038716907f743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b4644906140d79088908890889061598e565b60405180910390a260006001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613e929190615700565b60006060846001600160a01b03168460405161413f919061556b565b6000604051808303816000865af19150503d806000811461417c576040519150601f19603f3d011682016040523d82523d6000602084013e614181565b606091505b50915091508183906141a65760405162461bcd60e51b8152600401610f27919061577f565b5080511561215057808060200190516141c29190810190614741565b8390610f305760405162461bcd60e51b8152600401610f27919061577f565b6040516121509086906323b872dd60e01b90613515908890889088906024016155c9565b60405180608001604052806004906020820280388339509192915050565b6040518060a001604052806005906020820280388339509192915050565b8035610ea981615afd565b8051610ea981615afd565b60008083601f84011261426957600080fd5b5081356001600160401b0381111561428057600080fd5b60208301915083602082028301111561429857600080fd5b9250929050565b600082601f8301126142b057600080fd5b81516142c36142be826159dd565b6159b7565b915081818352602084019350602081019050838560208402820111156142e857600080fd5b60005b8381101561308657816142fe88826143a9565b84525060209283019291909101906001016142eb565b600082601f83011261432557600080fd5b81356143336142be826159dd565b915081818352602084019350602081019050838561010084028201111561435957600080fd5b60005b83811015613086578161436f8882614444565b845250602090920191610100919091019060010161435c565b8035610ea981615b11565b8051610ea981615b11565b8035610ea981615b1a565b8051610ea981615b1a565b60008083601f8401126143c657600080fd5b5081356001600160401b038111156143dd57600080fd5b60208301915083600182028301111561429857600080fd5b600082601f83011261440657600080fd5b81356144146142be826159fd565b9150808252602083016020830185838301111561443057600080fd5b61443b838284615a83565b50505092915050565b6000610100828403121561445757600080fd5b6144626101006159b7565b90506000614470848461439e565b825250602061448184848301614388565b602083015250604061449584828501614241565b60408301525060606144a984828501614241565b60608301525060806144bd84828501614241565b60808301525060a06144d18482850161439e565b60a08301525060c06144e58482850161439e565b60c08301525060e06144f98482850161439e565b60e08301525092915050565b60006020828403121561451757600080fd5b60006110948484614241565b60006020828403121561453557600080fd5b6000611094848461424c565b6000806040838503121561455457600080fd5b60006145608585614241565b925050602061457185828601614241565b9150509250929050565b60008060006060848603121561459057600080fd5b600061459c8686614241565b93505060206145ad86828701614241565b92505060406145be8682870161439e565b9150509250925092565b600080604083850312156145db57600080fd5b60006145e78585614241565b92505060206145718582860161439e565b60008060006060848603121561460d57600080fd5b60006146198686614241565b935050602061462a8682870161439e565b92505060406145be86828701614388565b6000806000806040858703121561465157600080fd5b84356001600160401b0381111561466757600080fd5b61467387828801614257565b945094505060208501356001600160401b0381111561469157600080fd5b61469d87828801614257565b95989497509550505050565b6000602082840312156146bb57600080fd5b81516001600160401b038111156146d157600080fd5b6110948482850161429f565b600080604083850312156146f057600080fd5b82356001600160401b0381111561470657600080fd5b61471285828601614314565b925050602061457185828601614388565b60006020828403121561473557600080fd5b60006110948484614388565b60006020828403121561475357600080fd5b60006110948484614393565b600080600080600080600080610100898b03121561477c57600080fd5b60006147888b8b61439e565b98505060206147998b828c0161439e565b97505060406147aa8b828c0161439e565b96505060606147bb8b828c0161439e565b95505060806147cc8b828c01614241565b94505060a06147dd8b828c01614241565b93505060c06147ee8b828c01614241565b92505060e08901356001600160401b0381111561480a57600080fd5b6148168b828c016143f5565b9150509295985092959890939650565b6000806000806000806000806000806101208b8d03121561484657600080fd5b60006148528d8d61439e565b9a505060206148638d828e0161439e565b99505060406148748d828e0161439e565b98505060606148858d828e0161439e565b97505060806148968d828e01614241565b96505060a06148a78d828e01614241565b95505060c06148b88d828e0161439e565b94505060e06148c98d828e01614241565b9350506101008b01356001600160401b038111156148e657600080fd5b6148f28d828e016143b4565b92509250509295989b9194979a5092959850565b600080600080600080600080610100898b03121561492357600080fd5b600061492f8b8b61439e565b98505060206149408b828c0161439e565b97505060406149518b828c0161439e565b96505060606149628b828c0161439e565b95505060806149738b828c01614241565b94505060a06149848b828c01614241565b93505060c06147ee8b828c0161439e565b6000602082840312156149a757600080fd5b81356001600160401b038111156149bd57600080fd5b611094848285016143f5565b600080604083850312156149dc57600080fd5b82356001600160401b038111156149f257600080fd5b614712858286016143f5565b600060208284031215614a1057600080fd5b6000611094848461439e565b600060208284031215614a2e57600080fd5b600061109484846143a9565b60008060408385031215614a4d57600080fd5b60006145e7858561439e565b60008060408385031215614a6c57600080fd5b6000614a7885856143a9565b9250506020614571858286016143a9565b600080600060608486031215614a9e57600080fd5b6000614aaa868661439e565b9350506020614abb8682870161439e565b92505060406145be86828701614241565b60008060008060808587031215614ae257600080fd5b6000614aee878761439e565b9450506020614aff8782880161439e565b9350506040614b108782880161439e565b9250506060614b2187828801614241565b91505092959194509250565b600080600080600060a08688031215614b4557600080fd5b6000614b51888861439e565b9550506020614b628882890161439e565b9450506040614b738882890161439e565b9350506060614b8488828901614241565b9250506080614b958882890161439e565b9150509295509295909350565b60008060008060008060c08789031215614bbb57600080fd5b6000614bc789896143a9565b9650506020614bd889828a016143a9565b9550506040614be989828a016143a9565b9450506060614bfa89828a016143a9565b9350506080614c0b89828a016143a9565b92505060a0614c1c89828a016143a9565b9150509295509295509295565b600080600080600080600060e0888a031215614c4457600080fd5b6000614c508a8a61439e565b9750506020614c618a828b0161439e565b9650506040614c728a828b0161439e565b9550506060614c838a828b0161439e565b9450506080614c948a828b0161439e565b93505060a0614ca58a828b0161439e565b92505060c0614cb68a828b0161439e565b91505092959891949750929550565b6000614cd18383614d09565b505060200190565b6000614cd18383614e7c565b6000614cf18383615463565b50506101000190565b614d0381615a72565b82525050565b614d0381615a43565b614d03614d1e82615a43565b615abb565b614d2c81615a2a565b614d368184610db4565b9250614d4182610ec1565b8060005b83811015610f30578151614d598782614cc5565b9650614d6483615a24565b925050600101614d45565b6000614d7a82615a30565b614d848185615a3a565b9350614d8f83615a24565b8060005b83811015614dbd578151614da78882614cd9565b9750614db283615a24565b925050600101614d93565b509495945050505050565b6000614dd382615a30565b614ddd8185615a3a565b9350614de883615a24565b8060005b83811015614dbd578151614e008882614ce5565b9750614e0b83615a24565b925050600101614dec565b614e1f81615a34565b614e298184610db4565b9250614e3482610ec1565b8060005b83811015610f30578151614e4c8782614cd9565b9650614e5783615a24565b925050600101614e38565b614d0381615a4e565b614d03614e7782615a4e565b615ac6565b614d0381610ec1565b614d03614e9182610ec1565b610ec1565b614d03614e9182615a53565b6000614ead82615a30565b614eb78185615a3a565b9350614ec7818560208601615a8f565b614ed081615ae7565b9093019392505050565b6000614ee582615a30565b614eef8185610db4565b9350614eff818560208601615a8f565b9290920192915050565b6000614f16600c83615a3a565b6b636f6c6c20746f6f206c6f7760a01b815260200192915050565b6000614f3e600283615a3a565b61031360f41b815260200192915050565b6000614f5c600283615a3a565b61313560f01b815260200192915050565b6000614f7a602683615a3a565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000614fc2601b83615a3a565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614ffb602183615a3a565b7f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061503e600e83615a3a565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000615068600183615a3a565b603760f81b815260200192915050565b6000615085601283615a3a565b716e6f7420656e6f7567682062616c616e636560701b815260200192915050565b60006150b3600283615a3a565b61333760f01b815260200192915050565b60006150d1600283615a3a565b610c8d60f21b815260200192915050565b60006150ef600283615a3a565b61313160f01b815260200192915050565b600061510d602183615a3a565b7f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000615150601583615a3a565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000615181600283615a3a565b61189960f11b815260200192915050565b600061519f600283615a3a565b61323560f01b815260200192915050565b60006151bd600f83615a3a565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b60006151e8600283615a3a565b61199960f11b815260200192915050565b6000615206600283615a3a565b61313760f01b815260200192915050565b6000615224602183615a3a565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000615267600c83615a3a565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061528f600283615a3a565b61313960f01b815260200192915050565b60006152ad600283615a3a565b61191b60f11b815260200192915050565b60006152cb602783615a3a565b7f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f815266766572666c6f7760c81b602082015260400192915050565b6000615314601d83615a3a565b7f696e76616c6964207261746520636f6c6c61746572616c20746f6b656e000000815260200192915050565b600061534d600a83615a3a565b6937b7363ca830bab9b2b960b11b815260200192915050565b6000615373600c83615a3a565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b600061539b602483615a3a565b7f5369676e6564536166654d6174683a207375627472616374696f6e206f766572815263666c6f7760e01b602082015260400192915050565b60006153e1601883615a3a565b7f34303120757365206f66206578697374696e67206c6f616e0000000000000000815260200192915050565b600061541a600183615a3a565b601b60f91b815260200192915050565b6000615437602083615a3a565b7f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f815260200192915050565b80516101008301906154758482614e7c565b5060208201516154886020850182614e62565b50604082015161549b6040850182614d09565b5060608201516154ae6060850182614d09565b5060808201516154c16080850182614d09565b5060a08201516154d460a0850182614e7c565b5060c08201516154e760c0850182614e7c565b5060e082015161354d60e0850182614e7c565b614d0381615a6c565b600061550f8285614d12565b60148201915061551f8284614e6b565b5060010192915050565b60006155358285614d12565b6014820191506155458284614e85565b5060200192915050565b600061555b8285614e96565b6004820191506155458284614e85565b6000610cb78284614eda565b60208101610ea98284614d09565b60208101610ea98284614cfa565b604081016155a18285614d09565b610cb76020830184614d09565b604081016155bc8285614d09565b610cb76020830184614cfa565b606081016155d78286614d09565b6155e46020830185614d09565b6110946040830184614e7c565b60a081016155ff8288614d09565b61560c6020830187614d09565b6156196040830186614e7c565b6156266060830185614e7c565b613a396080830184614e62565b60c081016156418289614d09565b61564e6020830188614d09565b61565b6040830187614e7c565b6156686060830186614e7c565b6156756080830185614e7c565b61568260a0830184614e7c565b979650505050505050565b6040810161569b8285614d09565b610cb76020830184614e7c565b606081016156b68286614d09565b6156c36020830185614e7c565b6110946040830184614cfa565b60208082528101610cb78184614d6f565b60208082528101610cb78184614dc8565b60208101610ea98284614e62565b60208101610ea98284614e7c565b6101c0810161571d828a614e7c565b61572a6020830189614e7c565b6157376040830188614e62565b6157446060830187614e7c565b6157516080830186614d23565b61575f610100830185614e16565b8181036101a08301526157728184614ea2565b9998505050505050505050565b60208082528101610cb78184614ea2565b60208082528101610ea981614f09565b60208082528101610ea981614f31565b60208082528101610ea981614f4f565b60208082528101610ea981614f6d565b60208082528101610ea981614fb5565b60208082528101610ea981614fee565b60208082528101610ea981615031565b60208082528101610ea98161505b565b60208082528101610ea981615078565b60208082528101610ea9816150a6565b60208082528101610ea9816150c4565b60208082528101610ea9816150e2565b60208082528101610ea981615100565b60208082528101610ea981615143565b60208082528101610ea981615174565b60208082528101610ea981615192565b60208082528101610ea9816151b0565b60208082528101610ea9816151db565b60208082528101610ea9816151f9565b60208082528101610ea981615217565b60208082528101610ea98161525a565b60208082528101610ea981615282565b60208082528101610ea9816152a0565b60208082528101610ea9816152be565b60208082528101610ea981615307565b60208082528101610ea981615340565b60208082528101610ea981615366565b60208082528101610ea98161538e565b60208082528101610ea9816153d4565b60208082528101610ea98161540d565b60208082528101610ea98161542a565b6040810161569b8285614e7c565b6060810161599c8286614e7c565b6155e46020830185614e7c565b60208101610ea982846154fa565b6040518181016001600160401b03811182821017156159d557600080fd5b604052919050565b60006001600160401b038211156159f357600080fd5b5060209081020190565b60006001600160401b03821115615a1357600080fd5b506020601f91909101601f19160190565b60200190565b50600490565b5190565b50600590565b90815260200190565b6000610ea982615a60565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b6000610ea9826000610ea982615a43565b82818337506000910152565b60005b83811015615aaa578181015183820152602001615a92565b8381111561354d5750506000910152565b6000610ea982615ad1565b6000610ea982615adc565b6000610ea982615af7565b6000610ea982615af1565b601f01601f191690565b60f81b90565b60601b90565b615b0681615a43565b811461253f57600080fd5b615b0681615a4e565b615b0681610ec156fea365627a7a723158206556ce952bb918dee3ec740a136beee857ddfddbf2cd1a94ff2cac96ca9a45c06c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3D9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E37C08C GT PUSH2 0x1FD JUMPI DUP1 PUSH4 0xCA37E666 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0xE3CDED61 GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xEF2B0B39 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0xAA3 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xAB8 JUMPI DUP1 PUSH4 0xF6B69F99 EQ PUSH2 0xAD8 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xAEB JUMPI DUP1 PUSH4 0xFFA1AD74 EQ PUSH2 0xB00 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0xA23 JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0xA43 JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0xA63 JUMPI DUP1 PUSH4 0xEEBC5081 EQ PUSH2 0xA83 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0xD759DBEB GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x9AE JUMPI DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x9C3 JUMPI DUP1 PUSH4 0xD97206A4 EQ PUSH2 0x9E3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xA03 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0xCA37E666 EQ PUSH2 0x939 JUMPI DUP1 PUSH4 0xCB926CB3 EQ PUSH2 0x94E JUMPI DUP1 PUSH4 0xD1A1BEB4 EQ PUSH2 0x96E JUMPI DUP1 PUSH4 0xD65A5021 EQ PUSH2 0x98E JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x190 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x15F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x8C4 JUMPI DUP1 PUSH4 0xB9FE1A8F EQ PUSH2 0x8E4 JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x904 JUMPI DUP1 PUSH4 0xBE194217 EQ PUSH2 0x919 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x865 JUMPI DUP1 PUSH4 0x9BDA3A98 EQ PUSH2 0x87A JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x88F JUMPI DUP1 PUSH4 0x9FD0506D EQ PUSH2 0x8AF JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x1CC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x811 JUMPI DUP1 PUSH4 0x8EE6C4E6 EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x83B JUMPI DUP1 PUSH4 0x8FB807C5 EQ PUSH2 0x850 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x7B2 JUMPI DUP1 PUSH4 0x7FF9B596 EQ PUSH2 0x7C7 JUMPI DUP1 PUSH4 0x829B38F4 EQ PUSH2 0x7DC JUMPI DUP1 PUSH4 0x8325A1C0 EQ PUSH2 0x7FC JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x2F6B600D GT PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x612EF80B GT PUSH2 0x28B JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x25A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x728 JUMPI DUP1 PUSH4 0x7288B344 EQ PUSH2 0x748 JUMPI DUP1 PUSH4 0x76FD4FDF EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x788 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x79D JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x612EF80B EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0x631A3EF8 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0x6B40CD40 EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH2 0x708 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 GT PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x63A JUMPI DUP1 PUSH4 0x44A4A003 EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0x54198CE9 EQ PUSH2 0x66F JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x68F JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x5CE JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x5E3 JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x605 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x625 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x18498B1D GT PUSH2 0x370 JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x33F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x55A JUMPI DUP1 PUSH4 0x28A02F19 EQ PUSH2 0x57A JUMPI DUP1 PUSH4 0x2D88AF4A EQ PUSH2 0x59B JUMPI DUP1 PUSH4 0x2EA295FA EQ PUSH2 0x5BB JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x18498B1D EQ PUSH2 0x4F9 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x51B JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x530 JUMPI DUP1 PUSH4 0x20F6D07C EQ PUSH2 0x545 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x3AC JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x482 JUMPI DUP1 PUSH4 0x9EC6B6B EQ PUSH2 0x4AF JUMPI DUP1 PUSH4 0x12416898 EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x4E4 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x4797930 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x6947A3A EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x6B3EFD6 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x460 JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A89 JUMP JUMPDEST PUSH2 0xB15 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0xCBE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x5577 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x45B CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0xCCD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x475 PUSH2 0xDB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x577F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A2 PUSH2 0x49D CALLDATASIZE PUSH1 0x4 PUSH2 0x45C8 JUMP JUMPDEST PUSH2 0xE44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x56F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xEAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x4DF CALLDATASIZE PUSH1 0x4 PUSH2 0x49FE JUMP JUMPDEST PUSH2 0xEC4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xEEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x514 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B2D JUMP JUMPDEST PUSH2 0xEF5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xF38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xF3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xF44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A2 PUSH2 0x575 CALLDATASIZE PUSH1 0x4 PUSH2 0x457B JUMP JUMPDEST PUSH2 0xFD3 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x588 CALLDATASIZE PUSH1 0x4 PUSH2 0x4906 JUMP JUMPDEST PUSH2 0x109C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP3 SWAP2 SWAP1 PUSH2 0x5980 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x5B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x5C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x475F JUMP JUMPDEST PUSH2 0x1307 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x15E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F8 PUSH2 0x15F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x59A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x611 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x620 CALLDATASIZE PUSH1 0x4 PUSH2 0x49FE JUMP JUMPDEST PUSH2 0x15FF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1611 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x655 CALLDATASIZE PUSH1 0x4 PUSH2 0x45C8 JUMP JUMPDEST PUSH2 0x1617 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1658 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x68A CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x166A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x170B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1711 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x6D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A89 JUMP JUMPDEST PUSH2 0x1742 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6F9 PUSH2 0x6F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ACC JUMP JUMPDEST PUSH2 0x18E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x598E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x723 CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x19F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x743 CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x1A39 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x763 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x1A54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x783 CALLDATASIZE PUSH1 0x4 PUSH2 0x45F8 JUMP JUMPDEST PUSH2 0x1B37 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1BE2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1BF6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1BFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1C02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x7F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x49FE JUMP JUMPDEST PUSH2 0x1C40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1CC0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1CCC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1CDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A2 PUSH2 0x1CEA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1D10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x475 PUSH2 0x1D40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1D9B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x8AA CALLDATASIZE PUSH1 0x4 PUSH2 0x45C8 JUMP JUMPDEST PUSH2 0x1DAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1E1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A2 PUSH2 0x8DF CALLDATASIZE PUSH1 0x4 PUSH2 0x45C8 JUMP JUMPDEST PUSH2 0x1E2D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x8FF CALLDATASIZE PUSH1 0x4 PUSH2 0x49FE JUMP JUMPDEST PUSH2 0x1E3D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1E48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A2 PUSH2 0x934 CALLDATASIZE PUSH1 0x4 PUSH2 0x4995 JUMP JUMPDEST PUSH2 0x1E4E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x945 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1ED0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x969 CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x1EDF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x97A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x989 CALLDATASIZE PUSH1 0x4 PUSH2 0x45F8 JUMP JUMPDEST PUSH2 0x1F25 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x9A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x49FE JUMP JUMPDEST PUSH2 0x1F6F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1F82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x9DE CALLDATASIZE PUSH1 0x4 PUSH2 0x46DD JUMP JUMPDEST PUSH2 0x1F88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x9FE CALLDATASIZE PUSH1 0x4 PUSH2 0x4C29 JUMP JUMPDEST PUSH2 0x2157 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xA1E CALLDATASIZE PUSH1 0x4 PUSH2 0x4541 JUMP JUMPDEST PUSH2 0x225E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0xA3E CALLDATASIZE PUSH1 0x4 PUSH2 0x49C9 JUMP JUMPDEST PUSH2 0x2289 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xA5E CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x232E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0xA7E CALLDATASIZE PUSH1 0x4 PUSH2 0x463B JUMP JUMPDEST PUSH2 0x2340 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xA9E CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x24F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x250C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0xAD3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x2512 JUMP JUMPDEST PUSH2 0x58D PUSH2 0xAE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4826 JUMP JUMPDEST PUSH2 0x2542 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x2612 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x2621 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xCB7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB3A JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB54 SWAP3 SWAP2 SWAP1 PUSH2 0x5503 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 PUSH4 0xE762319F SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 DUP8 SWAP2 DUP11 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0xBC5 SWAP2 DUP11 SWAP2 ADD PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBF1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC15 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC37 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x55F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC63 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC87 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP2 POP PUSH2 0xC9B DUP3 PUSH2 0xC95 PUSH2 0x1D10 JUMP JUMPDEST DUP7 PUSH2 0x2626 JUMP JUMPDEST SWAP4 POP PUSH2 0xCA9 SWAP2 POP PUSH2 0x269F SWAP1 POP JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0xCB5 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xD68 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0xD15 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5593 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD65 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xDB0 PUSH8 0xDE0B6B3A7640000 PUSH2 0xDA4 PUSH2 0xD7F PUSH2 0x1C02 JUMP JUMPDEST PUSH2 0xD98 DUP6 PUSH2 0xD8C DUP10 PUSH2 0x1A39 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2734 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE3C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE11 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE3C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE1F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xE9D SWAP1 DUP7 SWAP1 PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEBE PUSH2 0x4DF PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xECF PUSH2 0xF44 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xEE9 JUMPI PUSH2 0xEE1 DUP2 DUP5 PUSH2 0x1A54 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xDB4 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF03 DUP7 DUP7 DUP7 DUP7 PUSH2 0x18E2 JUMP JUMPDEST POP SWAP2 POP POP DUP2 DUP2 LT ISZERO PUSH2 0xF30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5790 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x250F447F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0x4A1E88FE SWAP4 PUSH2 0xF83 SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x5593 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFAF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xEBE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH2 0x1094 SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x115DD4B1 SWAP1 PUSH2 0x100E SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x5585 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1026 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x103A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x105E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4741 JUMP JUMPDEST PUSH2 0x108B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x108F JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH2 0x27B0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x10C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5930 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x10CE PUSH2 0x2983 JUMP JUMPDEST PUSH2 0x10DB DUP10 DUP10 DUP10 DUP10 DUP9 PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x10F8 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x112B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5840 JUMP JUMPDEST DUP10 ISZERO DUP1 PUSH2 0x1140 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x115C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5950 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x119F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x119F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x11F0 JUMPI PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP9 GT ISZERO PUSH2 0x11F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11FD DUP8 DUP10 DUP12 PUSH2 0x2A03 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x121C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5870 JUMP JUMPDEST PUSH2 0x1224 PUSH2 0x4205 JUMP JUMPDEST PUSH2 0x122C PUSH2 0x4223 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP11 SWAP1 MSTORE PUSH2 0x1264 PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x1275 DUP13 DUP3 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x2CD6 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1296 PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP14 PUSH2 0x2734 JUMP JUMPDEST SWAP12 POP PUSH2 0x12A8 DUP14 PUSH1 0x0 DUP15 DUP13 DUP7 DUP7 DUP13 PUSH2 0x2D25 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP15 SWAP1 SWAP14 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12C9 PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x12E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x132C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5930 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP9 PUSH2 0x134E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5960 JUMP JUMPDEST PUSH2 0x1356 PUSH2 0x2983 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1399 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x1399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x13A5 JUMPI POP DUP7 CALLVALUE EQ JUMPDEST DUP1 ISZERO PUSH2 0x13B9 JUMPI POP DUP7 ISZERO ISZERO DUP1 PUSH2 0x13B9 JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x13E0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO DUP1 PUSH2 0x13D6 JUMPI POP CALLVALUE ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x13E0 JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x13FC JUMPI POP DUP10 ISZERO DUP1 PUSH2 0x13FC JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x1418 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5800 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x1435 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x1468 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57A0 JUMP JUMPDEST PUSH2 0x1470 PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x1478 PUSH2 0x4205 JUMP JUMPDEST PUSH2 0x1480 PUSH2 0x4223 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 AND PUSH1 0x40 DUP5 ADD MSTORE DUP2 ADD DUP12 SWAP1 MSTORE PUSH2 0x14B8 DUP12 PUSH2 0x14B2 PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST DUP13 PUSH2 0x2626 JUMP JUMPDEST DUP4 PUSH1 0x0 PUSH1 0x20 MUL ADD DUP5 PUSH1 0x2 PUSH1 0x20 MUL ADD DUP6 PUSH1 0x1 PUSH1 0x20 MUL ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 MSTORE MSTORE DUP9 DUP2 PUSH1 0x4 PUSH1 0x20 MUL ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x15CF DUP13 DUP13 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCA74A5D9 PUSH1 0x10 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1523 SWAP3 SWAP2 SWAP1 PUSH2 0x5503 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1567 SWAP2 SWAP1 PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x157F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1593 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x15B7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST DUP12 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2D25 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP14 SWAP1 SWAP13 POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x163B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5930 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x164A DUP4 DUP4 PUSH2 0x2F84 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEBE PUSH2 0x1665 PUSH2 0xF44 JUMP JUMPDEST PUSH2 0x3090 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 PUSH1 0x0 SHL PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x16A3 SWAP3 SWAP2 SWAP1 PUSH2 0x5529 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xDB0 DUP2 PUSH1 0x13 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x16ED PUSH2 0x1C02 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x30C8 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x171E PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x172A PUSH2 0xF44 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x173D JUMPI SWAP1 SUB SWAP1 POP PUSH2 0xEC1 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xCB7 JUMPI PUSH1 0x0 PUSH2 0x1758 DUP6 PUSH2 0xC95 PUSH2 0x1D10 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1764 PUSH2 0x269F JUMP JUMPDEST DUP2 GT PUSH2 0xCB5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1787 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x17A1 SWAP3 SWAP2 SWAP1 PUSH2 0x5503 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH2 0x18D9 SWAP4 PUSH1 0xA SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x25DECAC0 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0x1817 SWAP2 DUP13 SWAP2 ADD PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x182F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1843 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1867 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1889 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x55F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD8C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xCB7 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1903 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x1910 DUP6 DUP8 DUP10 PUSH2 0x2A03 JUMP JUMPDEST SWAP1 POP PUSH2 0x191C DUP9 DUP3 PUSH2 0x2CD6 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH2 0x1929 PUSH2 0x269F JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1940 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x19E9 JUMP JUMPDEST PUSH2 0x1950 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD67F7077 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD67F7077 SWAP4 PUSH2 0x1995 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP14 SWAP2 DUP14 SWAP2 DUP11 SWAP2 DUP14 SWAP2 ADD PUSH2 0x5633 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x19E5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP3 POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x19FB PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x1A17 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x19 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1A65 JUMPI POP DUP3 DUP3 LT ISZERO JUMPDEST ISZERO PUSH2 0xEA9 JUMPI PUSH2 0x1B30 PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 PUSH2 0xDA4 PUSH2 0x1B1A PUSH9 0x56BC75E2D63100000 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4699F846 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ADD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AF1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B15 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST PUSH2 0x3122 JUMP JUMPDEST PUSH2 0xD98 PUSH2 0x1B27 DUP9 DUP9 PUSH2 0x3164 JUMP JUMPDEST PUSH2 0xD98 DUP10 PUSH2 0x3090 JUMP JUMPDEST SWAP1 POP PUSH2 0xEA9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1B5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5930 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x1B76 JUMPI PUSH2 0x1B6F DUP4 PUSH2 0x3196 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B82 JUMP JUMPDEST PUSH2 0x1B7F DUP4 PUSH2 0x333C JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x1BD6 JUMPI PUSH2 0x1BD6 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x185CDCD95D081D1C985B9CD9995C8819985A5B1959 PUSH1 0x5A SHL DUP2 MSTORE POP PUSH2 0x34F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1C29 JUMPI PUSH2 0x1C25 PUSH2 0x3553 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C3A PUSH2 0x1C35 DUP3 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x361F JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C5F PUSH2 0x16D PUSH2 0xDA4 PUSH1 0x1C PUSH1 0xB SLOAD PUSH2 0x26FA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C7C PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3122 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C99 PUSH9 0x56BC75E2D63100000 PUSH2 0xDA4 DUP5 PUSH2 0xD98 PUSH2 0x1711 JUMP JUMPDEST SWAP1 POP PUSH2 0x1CB7 DUP6 PUSH2 0xDA4 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEBE PUSH1 0x0 PUSH2 0x364E JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D01 PUSH2 0x36A4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1D37 JUMPI PUSH2 0x1D33 PUSH2 0x3553 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C3A DUP2 PUSH2 0x2776 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE3C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE11 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE3C JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1DCE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5930 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1DDC DUP3 PUSH2 0x333C JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x164D JUMPI PUSH2 0x164D PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH2 0x34F3 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 CALLER DUP5 DUP5 PUSH1 0x0 NOT PUSH2 0x27B0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x364E JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E62 SWAP2 SWAP1 PUSH2 0x556B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EAF SWAP3 SWAP2 SWAP1 PUSH2 0x554F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1EE7 PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x1F03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x1C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1F49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5930 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x1F65 JUMPI PUSH2 0x1F5E DUP5 DUP5 PUSH2 0x36A8 JUMP JUMPDEST SWAP1 POP PUSH2 0x1BD6 JUMP JUMPDEST PUSH2 0x1F5E DUP5 DUP5 PUSH2 0x2F84 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 PUSH2 0x4DF DUP4 PUSH2 0xD8C PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1F90 PUSH2 0x1CEA JUMP JUMPDEST DUP1 PUSH2 0x1FA5 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x1FC1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x204B JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1FEE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x2020 JUMPI PUSH3 0x24EA00 PUSH2 0x2023 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2034 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1FD8 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x207C SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x56E1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2096 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x20D2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x46A9 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2150 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x20EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2104 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2122 SWAP3 SWAP2 SWAP1 PUSH2 0x5503 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x20D7 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x215F PUSH2 0x1CEA JUMP JUMPDEST DUP1 PUSH2 0x2174 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2190 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x21AA DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST GT ISZERO PUSH2 0x21C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5860 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x21E2 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST GT ISZERO PUSH2 0x2200 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5860 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x2222 JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x223E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5890 JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x22B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5920 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x22C6 SWAP2 SWAP1 PUSH2 0x556B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x230E SWAP3 SWAP2 SWAP1 PUSH2 0x554F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2348 PUSH2 0x1CEA JUMP JUMPDEST DUP1 PUSH2 0x235D JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2379 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x2398 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0x23C4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2487 JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x23E0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x23F5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4505 JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x2401 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x2416 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4723 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2427 SWAP3 SWAP2 SWAP1 PUSH2 0x5503 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2462 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x23CA JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0x24B8 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x56D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x251A PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x2536 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH2 0x253F DUP2 PUSH2 0x3731 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x25B9 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x193BBE89 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC9DDF448 SWAP1 PUSH2 0x2586 SWAP1 DUP11 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5593 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x25FF DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x109C SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP11 POP SWAP11 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2635 DUP7 DUP7 PUSH2 0x37B3 JUMP JUMPDEST SWAP3 POP PUSH2 0x2682 PUSH2 0x266A PUSH8 0xDE0B6B3A7640000 PUSH2 0x1B15 PUSH12 0xA3098C68EB9427DB8000000 PUSH2 0xDA4 DUP4 PUSH2 0xD98 DUP11 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST PUSH2 0xDA4 DUP9 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2694 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x3122 AND JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xF83 SWAP2 ADDRESS SWAP2 ADD PUSH2 0x5577 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xCB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57D0 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2709 JUMPI POP PUSH1 0x0 PUSH2 0xEA9 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2716 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xCB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x38C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x15 SLOAD PUSH1 0x0 EQ PUSH2 0xDB4 JUMPI PUSH1 0xC SLOAD DUP1 PUSH2 0x27A0 JUMPI PUSH2 0x279D PUSH2 0x2795 PUSH2 0xF44 JUMP JUMPDEST PUSH2 0xD8C PUSH2 0x269F JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xEE1 DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ PUSH2 0x280C JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xC4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x27E7 SWAP1 DUP4 SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3900 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2832 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 SWAP1 PUSH2 0x287D SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3900 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x28B6 DUP3 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP3 SWAP1 SSTORE SWAP1 SWAP2 POP PUSH2 0x28DC PUSH2 0x1C02 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x290B JUMPI POP PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x2928 JUMPI PUSH2 0x291C DUP11 DUP7 DUP7 DUP5 PUSH2 0x392C JUMP JUMPDEST PUSH2 0x2928 DUP10 DUP5 DUP5 DUP5 PUSH2 0x392C JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP11 PUSH1 0x40 MLOAD PUSH2 0x296B SWAP2 SWAP1 PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x29C3 SWAP3 SWAP2 SWAP1 PUSH2 0x554F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 SLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x29FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 DUP3 ISZERO PUSH2 0xCB7 JUMPI PUSH1 0x0 DUP1 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x78D849ED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A6F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2A93 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4523 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x29D5277C SWAP4 PUSH2 0x2ACC SWAP4 DUP13 SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 ADD PUSH2 0x5593 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2B1B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x2B2F JUMPI POP DUP1 ISZERO ISZERO JUMPDEST PUSH2 0x2B4B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5910 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B61 DUP3 PUSH2 0xDA4 DUP9 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A515777 PUSH1 0xE2 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x69455DDC SWAP4 PUSH2 0x2BA4 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 DUP14 SWAP2 DUP9 SWAP2 ADD PUSH2 0x55C9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2BF4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ PUSH2 0x2C14 JUMPI PUSH2 0x2C11 DUP8 PUSH2 0xDA4 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x2C24 DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF SLOAD TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x253F JUMPI PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x740FF7D PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0xE81FEFA0 SWAP4 PUSH2 0x2C80 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x5577 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP6 AND PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2CF6 PUSH8 0xDE0B6B3A7640000 PUSH2 0xDA4 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D0B DUP2 PUSH2 0x2D06 PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x37B3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2D1B DUP3 PUSH3 0x24EA00 DUP4 PUSH2 0x39E2 JUMP JUMPDEST SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2D30 PUSH2 0x2983 JUMP JUMPDEST PUSH2 0x2D38 PUSH2 0x269F JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD GT DUP1 ISZERO SWAP1 PUSH2 0x2D57 JUMPI POP PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST PUSH2 0x2D73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5830 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2D99 JUMPI PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x2DA7 DUP8 DUP8 DUP8 DUP13 PUSH2 0x3A43 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP3 POP PUSH2 0x2DBE SWAP2 SWAP1 PUSH2 0x26D5 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP9 ISZERO PUSH2 0x2DDE JUMPI PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x2DD8 SWAP1 DUP11 PUSH2 0x3122 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 DUP10 ISZERO PUSH2 0x2DEA JUMPI POP PUSH1 0x1 JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2E03 SWAP3 SWAP2 SWAP1 PUSH2 0x5503 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x585314CF DUP5 DUP4 DUP16 DUP7 DUP16 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E7B SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x570E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2ECC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0x20 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x2EF4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5880 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF06A9C6B SWAP2 PUSH2 0x2F27 SWAP2 PUSH1 0x4 ADD PUSH2 0x5577 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F55 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP7 PUSH1 0x1 PUSH1 0x5 DUP2 LT PUSH2 0x2F66 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 SWAP1 SWAP8 ADD MLOAD SWAP7 SWAP13 SWAP7 SWAP12 POP SWAP6 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2F90 DUP4 PUSH2 0x3C78 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x302E JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x2FDB SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5593 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3007 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x302B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3057 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x306B DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3079 DUP8 DUP7 DUP9 DUP8 PUSH2 0x3D82 JUMP JUMPDEST POP PUSH2 0x3086 DUP8 DUP4 DUP4 DUP8 PUSH2 0x392C JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0xDB4 JUMPI PUSH1 0x0 PUSH2 0x30A2 PUSH2 0x3553 JUMP JUMPDEST POP SWAP1 POP PUSH2 0xEE1 DUP4 PUSH2 0xDA4 PUSH2 0x16D PUSH2 0xD98 DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x30D7 JUMPI POP PUSH1 0x0 PUSH2 0x1094 JUMP JUMPDEST POP DUP4 SLOAD PUSH2 0x1CB7 DUP2 PUSH2 0x3116 PUSH8 0xDE0B6B3A7640000 PUSH2 0x310A DUP9 PUSH2 0x30FE DUP10 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3EA3 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3EE9 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3F54 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3FB8 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3900 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3174 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xEA9 JUMPI PUSH2 0x1B30 DUP3 PUSH2 0xDA4 DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x31CD SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x55AE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x321D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x3239 PUSH2 0x322C CALLER PUSH2 0x1A39 JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST LT ISZERO PUSH2 0x3257 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5810 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3337 JUMPI DUP3 DUP2 LT ISZERO PUSH2 0x32D0 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x3299 SWAP1 ADDRESS SWAP1 DUP6 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x56A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3337 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x3304 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x56A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x331E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3332 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xDB0 DUP4 JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x335B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58E0 JUMP JUMPDEST PUSH2 0x3364 CALLER PUSH2 0x1A39 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x3398 JUMPI PUSH1 0x0 NOT DUP3 EQ PUSH2 0x338C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58A0 JUMP JUMPDEST PUSH2 0x3395 CALLER PUSH2 0x1A39 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x33A0 PUSH2 0x2C30 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33AF PUSH2 0x1C35 PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x33CF PUSH8 0xDE0B6B3A7640000 PUSH2 0xDA4 DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x33DB PUSH2 0x269F JUMP JUMPDEST SWAP1 POP DUP2 SWAP4 POP DUP1 DUP5 GT ISZERO PUSH2 0x3400 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5820 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x3499 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x3446 SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x55AE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x345E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3472 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3496 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A1C JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x34B9 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34CD DUP3 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3122 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x34DB CALLER DUP10 DUP10 DUP10 PUSH2 0x3FFE JUMP JUMPDEST POP PUSH2 0x34E8 CALLER DUP4 DUP4 DUP10 PUSH2 0x392C JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x354D SWAP1 DUP6 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3515 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x568D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE DUP4 PUSH2 0x4123 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD1979FB PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD1979FB0 SWAP4 PUSH2 0x3595 SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x5593 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x35E5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4BA2 JUMP JUMPDEST POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP PUSH2 0x3618 SWAP2 POP PUSH9 0x56BC75E2D63100000 SWAP1 POP PUSH2 0xDA4 PUSH2 0x360B DUP3 DUP6 PUSH2 0x3122 JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP2 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x0 SWAP1 DUP1 PUSH2 0x3632 JUMPI PUSH1 0xE SLOAD PUSH2 0xDB0 JUMP JUMPDEST PUSH2 0xDB0 DUP2 PUSH2 0xDA4 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x3697 JUMPI PUSH1 0xF SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3679 JUMPI PUSH2 0x3675 PUSH2 0x3553 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x3687 DUP3 PUSH2 0xD8C PUSH2 0x269F JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x3695 JUMPI DUP1 SWAP4 POP JUMPDEST POP JUMPDEST PUSH2 0xDB0 DUP4 PUSH2 0x2D06 DUP4 PUSH2 0x2776 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36B4 DUP4 DUP4 PUSH2 0x2F84 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH2 0x36D0 SWAP1 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP1 PUSH2 0x27B0 JUMP JUMPDEST POP PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x36305CF1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD8C173C4 SWAP1 PUSH2 0x3703 SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x568D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x371D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3086 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3757 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57C0 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x37CB PUSH2 0x37C5 DUP6 PUSH2 0xD8C PUSH2 0xF44 JUMP JUMPDEST DUP5 PUSH2 0x3164 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD PUSH1 0xB SLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP3 DUP9 LT ISZERO PUSH2 0x37F2 JUMPI DUP3 SWAP8 POP JUMPDEST DUP2 DUP9 GT ISZERO PUSH2 0x3865 JUMPI SWAP7 DUP2 SWAP1 SUB SWAP7 PUSH9 0x56BC75E2D63100000 DUP3 SWAP1 SUB DUP1 DUP10 GT ISZERO PUSH2 0x3818 JUMPI DUP1 SWAP9 POP JUMPDEST PUSH2 0x3839 PUSH9 0x56BC75E2D63100000 PUSH2 0xDA4 DUP6 PUSH2 0xD98 DUP10 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP7 POP PUSH2 0x385D DUP8 PUSH2 0xD8C DUP4 PUSH2 0xDA4 PUSH2 0x3850 DUP8 DUP14 PUSH2 0x3122 JUMP JUMPDEST DUP15 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP10 POP POP PUSH2 0x38BB JUMP JUMPDEST PUSH2 0x3886 DUP6 PUSH2 0xD8C PUSH9 0x56BC75E2D63100000 PUSH2 0xDA4 DUP13 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP9 POP SWAP4 SWAP6 POP DUP6 SWAP4 PUSH2 0x389D DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP6 POP DUP7 DUP10 LT ISZERO PUSH2 0x38AF JUMPI DUP7 SWAP9 POP PUSH2 0x38BB JUMP JUMPDEST DUP6 DUP10 GT ISZERO PUSH2 0x38BB JUMPI DUP6 SWAP9 POP JUMPDEST POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x38EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP2 SWAP1 PUSH2 0x577F JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x38F6 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3924 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP2 SWAP1 PUSH2 0x577F JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3962 SWAP1 DUP7 SWAP1 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 SWAP1 PUSH1 0x20 ADD PUSH2 0x5529 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 EQ ISZERO PUSH2 0x398E JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x39BF JUMP JUMPDEST DUP5 ISZERO PUSH2 0x39BF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x39BC SWAP1 DUP4 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x30C8 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x39FD PUSH4 0x1E13380 PUSH2 0xDA4 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A1A PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3122 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3A39 DUP2 PUSH2 0xDA4 DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x0 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 PUSH2 0x100 SWAP1 DIV DUP2 AND SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP12 AND DUP6 EQ ISZERO PUSH2 0x3A99 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58F0 JUMP JUMPDEST CALLVALUE SWAP7 POP DUP8 ISZERO PUSH2 0x3AF7 JUMPI PUSH2 0x3ABD DUP6 DUP6 DUP11 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x34F3 JUMP JUMPDEST DUP8 DUP4 GT ISZERO PUSH2 0x3AF2 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x3AF2 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP12 DUP8 SUB SWAP1 PUSH2 0x34F3 JUMP JUMPDEST PUSH2 0x3B2C JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3237 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3B2C SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH2 0x34F3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3C2F JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x3B52 JUMPI POP DUP7 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3B5E JUMPI POP DUP1 DUP8 LT ISZERO JUMPDEST ISZERO PUSH2 0x3BF8 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x32382D61 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3BEE SWAP5 POP DUP16 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP5 SWAP1 PUSH2 0x34F3 JUMP JUMPDEST DUP1 DUP8 SUB SWAP7 POP PUSH2 0x3C2F JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x191C16B1 PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3C2F SWAP2 DUP14 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH2 0x41E1 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3C6A JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3239 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3C6A SWAP2 DUP8 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x41E1 JUMP JUMPDEST POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x3C98 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x58B0 JUMP JUMPDEST PUSH2 0x3CA0 PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x3CAD PUSH2 0x1C35 PUSH1 0x0 PUSH2 0x2776 JUMP JUMPDEST SWAP1 POP PUSH2 0x3CCB DUP2 PUSH2 0xDA4 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x26FA AND JUMP JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x3D13 JUMPI PUSH2 0x3D0E PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x3D7D JUMP JUMPDEST PUSH1 0x17 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D77 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3DAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3DD3 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH2 0x3E04 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xB4C03061FB5B7FED76389D5AF8F2E0DDB09F8C70D1333ABBB62582835E10ACCB SWAP1 PUSH2 0x3E46 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x598E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3E92 SWAP2 SWAP1 PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x3EB8 JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x3ECD JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3ECD JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0xCB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5940 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3EF8 JUMPI POP PUSH1 0x0 PUSH2 0xEA9 JUMP JUMPDEST DUP3 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x3F0C JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ JUMPDEST ISZERO PUSH2 0x3F29 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5900 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x3F36 JUMPI INVALID JUMPDEST SDIV EQ PUSH2 0xCB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5900 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3F73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5970 JUMP JUMPDEST DUP2 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x3F87 JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP4 EQ JUMPDEST ISZERO PUSH2 0x3FA4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x5850 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x3FAF JUMPI INVALID JUMPDEST SDIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x3FCD JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x3FE2 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3FE2 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0xCB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP1 PUSH2 0x57E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD DUP3 SWAP2 PUSH2 0x4046 SWAP2 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3900 AND JUMP JUMPDEST SWAP1 POP PUSH1 0xA DUP2 GT PUSH2 0x4067 JUMPI PUSH2 0x4060 DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x26D5 AND JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD PUSH2 0x4095 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x3122 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0x743033787F4738FF4D6A7225CE2BD0977EE5F86B91A902A58F5E4D0B297B4644 SWAP1 PUSH2 0x40D7 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x598E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3E92 SWAP2 SWAP1 PUSH2 0x5700 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x413F SWAP2 SWAP1 PUSH2 0x556B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x417C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4181 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP4 SWAP1 PUSH2 0x41A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP2 SWAP1 PUSH2 0x577F JUMP JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x2150 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x41C2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4741 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0xF30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF27 SWAP2 SWAP1 PUSH2 0x577F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2150 SWAP1 DUP7 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x3515 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0x55C9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xEA9 DUP2 PUSH2 0x5AFD JUMP JUMPDEST DUP1 MLOAD PUSH2 0xEA9 DUP2 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x4298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x42B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x42C3 PUSH2 0x42BE DUP3 PUSH2 0x59DD JUMP JUMPDEST PUSH2 0x59B7 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x42E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3086 JUMPI DUP2 PUSH2 0x42FE DUP9 DUP3 PUSH2 0x43A9 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x42EB JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4333 PUSH2 0x42BE DUP3 PUSH2 0x59DD JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x4359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3086 JUMPI DUP2 PUSH2 0x436F DUP9 DUP3 PUSH2 0x4444 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x435C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xEA9 DUP2 PUSH2 0x5B11 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xEA9 DUP2 PUSH2 0x5B11 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xEA9 DUP2 PUSH2 0x5B1A JUMP JUMPDEST DUP1 MLOAD PUSH2 0xEA9 DUP2 PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x43C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x43DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x4298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4414 PUSH2 0x42BE DUP3 PUSH2 0x59FD JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x4430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x443B DUP4 DUP3 DUP5 PUSH2 0x5A83 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4462 PUSH2 0x100 PUSH2 0x59B7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4470 DUP5 DUP5 PUSH2 0x439E JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x4481 DUP5 DUP5 DUP4 ADD PUSH2 0x4388 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x4495 DUP5 DUP3 DUP6 ADD PUSH2 0x4241 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x44A9 DUP5 DUP3 DUP6 ADD PUSH2 0x4241 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x44BD DUP5 DUP3 DUP6 ADD PUSH2 0x4241 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x44D1 DUP5 DUP3 DUP6 ADD PUSH2 0x439E JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x44E5 DUP5 DUP3 DUP6 ADD PUSH2 0x439E JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x44F9 DUP5 DUP3 DUP6 ADD PUSH2 0x439E JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1094 DUP5 DUP5 PUSH2 0x4241 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1094 DUP5 DUP5 PUSH2 0x424C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4560 DUP6 DUP6 PUSH2 0x4241 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4571 DUP6 DUP3 DUP7 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x459C DUP7 DUP7 PUSH2 0x4241 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x45AD DUP7 DUP3 DUP8 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x45BE DUP7 DUP3 DUP8 ADD PUSH2 0x439E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x45E7 DUP6 DUP6 PUSH2 0x4241 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4571 DUP6 DUP3 DUP7 ADD PUSH2 0x439E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x460D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4619 DUP7 DUP7 PUSH2 0x4241 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x462A DUP7 DUP3 DUP8 ADD PUSH2 0x439E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x45BE DUP7 DUP3 DUP8 ADD PUSH2 0x4388 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4673 DUP8 DUP3 DUP9 ADD PUSH2 0x4257 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x469D DUP8 DUP3 DUP9 ADD PUSH2 0x4257 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1094 DUP5 DUP3 DUP6 ADD PUSH2 0x429F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4706 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4712 DUP6 DUP3 DUP7 ADD PUSH2 0x4314 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4571 DUP6 DUP3 DUP7 ADD PUSH2 0x4388 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1094 DUP5 DUP5 PUSH2 0x4388 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1094 DUP5 DUP5 PUSH2 0x4393 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x477C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4788 DUP12 DUP12 PUSH2 0x439E JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x4799 DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x47AA DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x47BB DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x47CC DUP12 DUP3 DUP13 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x47DD DUP12 DUP3 DUP13 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x47EE DUP12 DUP3 DUP13 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x480A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4816 DUP12 DUP3 DUP13 ADD PUSH2 0x43F5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x4846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4852 DUP14 DUP14 PUSH2 0x439E JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x4863 DUP14 DUP3 DUP15 ADD PUSH2 0x439E JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x4874 DUP14 DUP3 DUP15 ADD PUSH2 0x439E JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x4885 DUP14 DUP3 DUP15 ADD PUSH2 0x439E JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x4896 DUP14 DUP3 DUP15 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x48A7 DUP14 DUP3 DUP15 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x48B8 DUP14 DUP3 DUP15 ADD PUSH2 0x439E JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x48C9 DUP14 DUP3 DUP15 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x48E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48F2 DUP14 DUP3 DUP15 ADD PUSH2 0x43B4 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4923 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x492F DUP12 DUP12 PUSH2 0x439E JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x4940 DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x4951 DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x4962 DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x4973 DUP12 DUP3 DUP13 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x4984 DUP12 DUP3 DUP13 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x47EE DUP12 DUP3 DUP13 ADD PUSH2 0x439E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1094 DUP5 DUP3 DUP6 ADD PUSH2 0x43F5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x49DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4712 DUP6 DUP3 DUP7 ADD PUSH2 0x43F5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1094 DUP5 DUP5 PUSH2 0x439E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1094 DUP5 DUP5 PUSH2 0x43A9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x45E7 DUP6 DUP6 PUSH2 0x439E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4A78 DUP6 DUP6 PUSH2 0x43A9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4571 DUP6 DUP3 DUP7 ADD PUSH2 0x43A9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4AAA DUP7 DUP7 PUSH2 0x439E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4ABB DUP7 DUP3 DUP8 ADD PUSH2 0x439E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x45BE DUP7 DUP3 DUP8 ADD PUSH2 0x4241 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4AE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4AEE DUP8 DUP8 PUSH2 0x439E JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4AFF DUP8 DUP3 DUP9 ADD PUSH2 0x439E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4B10 DUP8 DUP3 DUP9 ADD PUSH2 0x439E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4B21 DUP8 DUP3 DUP9 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4B45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4B51 DUP9 DUP9 PUSH2 0x439E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4B62 DUP9 DUP3 DUP10 ADD PUSH2 0x439E JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4B73 DUP9 DUP3 DUP10 ADD PUSH2 0x439E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4B84 DUP9 DUP3 DUP10 ADD PUSH2 0x4241 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x4B95 DUP9 DUP3 DUP10 ADD PUSH2 0x439E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4BBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4BC7 DUP10 DUP10 PUSH2 0x43A9 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x4BD8 DUP10 DUP3 DUP11 ADD PUSH2 0x43A9 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x4BE9 DUP10 DUP3 DUP11 ADD PUSH2 0x43A9 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x4BFA DUP10 DUP3 DUP11 ADD PUSH2 0x43A9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x4C0B DUP10 DUP3 DUP11 ADD PUSH2 0x43A9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x4C1C DUP10 DUP3 DUP11 ADD PUSH2 0x43A9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4C44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C50 DUP11 DUP11 PUSH2 0x439E JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x4C61 DUP11 DUP3 DUP12 ADD PUSH2 0x439E JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x4C72 DUP11 DUP3 DUP12 ADD PUSH2 0x439E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x4C83 DUP11 DUP3 DUP12 ADD PUSH2 0x439E JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x4C94 DUP11 DUP3 DUP12 ADD PUSH2 0x439E JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x4CA5 DUP11 DUP3 DUP12 ADD PUSH2 0x439E JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x4CB6 DUP11 DUP3 DUP12 ADD PUSH2 0x439E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CD1 DUP4 DUP4 PUSH2 0x4D09 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CD1 DUP4 DUP4 PUSH2 0x4E7C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CF1 DUP4 DUP4 PUSH2 0x5463 JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x4D03 DUP2 PUSH2 0x5A72 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4D03 DUP2 PUSH2 0x5A43 JUMP JUMPDEST PUSH2 0x4D03 PUSH2 0x4D1E DUP3 PUSH2 0x5A43 JUMP JUMPDEST PUSH2 0x5ABB JUMP JUMPDEST PUSH2 0x4D2C DUP2 PUSH2 0x5A2A JUMP JUMPDEST PUSH2 0x4D36 DUP2 DUP5 PUSH2 0xDB4 JUMP JUMPDEST SWAP3 POP PUSH2 0x4D41 DUP3 PUSH2 0xEC1 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF30 JUMPI DUP2 MLOAD PUSH2 0x4D59 DUP8 DUP3 PUSH2 0x4CC5 JUMP JUMPDEST SWAP7 POP PUSH2 0x4D64 DUP4 PUSH2 0x5A24 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4D45 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D7A DUP3 PUSH2 0x5A30 JUMP JUMPDEST PUSH2 0x4D84 DUP2 DUP6 PUSH2 0x5A3A JUMP JUMPDEST SWAP4 POP PUSH2 0x4D8F DUP4 PUSH2 0x5A24 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DBD JUMPI DUP2 MLOAD PUSH2 0x4DA7 DUP9 DUP3 PUSH2 0x4CD9 JUMP JUMPDEST SWAP8 POP PUSH2 0x4DB2 DUP4 PUSH2 0x5A24 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4D93 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DD3 DUP3 PUSH2 0x5A30 JUMP JUMPDEST PUSH2 0x4DDD DUP2 DUP6 PUSH2 0x5A3A JUMP JUMPDEST SWAP4 POP PUSH2 0x4DE8 DUP4 PUSH2 0x5A24 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DBD JUMPI DUP2 MLOAD PUSH2 0x4E00 DUP9 DUP3 PUSH2 0x4CE5 JUMP JUMPDEST SWAP8 POP PUSH2 0x4E0B DUP4 PUSH2 0x5A24 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4DEC JUMP JUMPDEST PUSH2 0x4E1F DUP2 PUSH2 0x5A34 JUMP JUMPDEST PUSH2 0x4E29 DUP2 DUP5 PUSH2 0xDB4 JUMP JUMPDEST SWAP3 POP PUSH2 0x4E34 DUP3 PUSH2 0xEC1 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF30 JUMPI DUP2 MLOAD PUSH2 0x4E4C DUP8 DUP3 PUSH2 0x4CD9 JUMP JUMPDEST SWAP7 POP PUSH2 0x4E57 DUP4 PUSH2 0x5A24 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4E38 JUMP JUMPDEST PUSH2 0x4D03 DUP2 PUSH2 0x5A4E JUMP JUMPDEST PUSH2 0x4D03 PUSH2 0x4E77 DUP3 PUSH2 0x5A4E JUMP JUMPDEST PUSH2 0x5AC6 JUMP JUMPDEST PUSH2 0x4D03 DUP2 PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0x4D03 PUSH2 0x4E91 DUP3 PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0x4D03 PUSH2 0x4E91 DUP3 PUSH2 0x5A53 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EAD DUP3 PUSH2 0x5A30 JUMP JUMPDEST PUSH2 0x4EB7 DUP2 DUP6 PUSH2 0x5A3A JUMP JUMPDEST SWAP4 POP PUSH2 0x4EC7 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5A8F JUMP JUMPDEST PUSH2 0x4ED0 DUP2 PUSH2 0x5AE7 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EE5 DUP3 PUSH2 0x5A30 JUMP JUMPDEST PUSH2 0x4EEF DUP2 DUP6 PUSH2 0xDB4 JUMP JUMPDEST SWAP4 POP PUSH2 0x4EFF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5A8F JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F16 PUSH1 0xC DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH12 0x636F6C6C20746F6F206C6F77 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F3E PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F5C PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F7A PUSH1 0x26 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FC2 PUSH1 0x1B DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FFB PUSH1 0x21 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x503E PUSH1 0xE DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5068 PUSH1 0x1 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5085 PUSH1 0x12 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH18 0x6E6F7420656E6F7567682062616C616E6365 PUSH1 0x70 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50B3 PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50D1 PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50EF PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x510D PUSH1 0x21 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5150 PUSH1 0x15 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5181 PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519F PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51BD PUSH1 0xF DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51E8 PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5206 PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5224 PUSH1 0x21 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5267 PUSH1 0xC DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528F PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52AD PUSH1 0x2 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52CB PUSH1 0x27 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206D756C7469706C69636174696F6E206F DUP2 MSTORE PUSH7 0x766572666C6F77 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5314 PUSH1 0x1D DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x696E76616C6964207261746520636F6C6C61746572616C20746F6B656E000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x534D PUSH1 0xA DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH10 0x37B7363CA830BAB9B2B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5373 PUSH1 0xC DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x539B PUSH1 0x24 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 DUP2 MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53E1 PUSH1 0x18 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x34303120757365206F66206578697374696E67206C6F616E0000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x541A PUSH1 0x1 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5437 PUSH1 0x20 DUP4 PUSH2 0x5A3A JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206279207A65726F DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x5475 DUP5 DUP3 PUSH2 0x4E7C JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x5488 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4E62 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x549B PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4D09 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x54AE PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4D09 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x54C1 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x4D09 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x54D4 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4E7C JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x54E7 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x4E7C JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x354D PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x4D03 DUP2 PUSH2 0x5A6C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x550F DUP3 DUP6 PUSH2 0x4D12 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x551F DUP3 DUP5 PUSH2 0x4E6B JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5535 DUP3 DUP6 PUSH2 0x4D12 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x5545 DUP3 DUP5 PUSH2 0x4E85 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x555B DUP3 DUP6 PUSH2 0x4E96 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x5545 DUP3 DUP5 PUSH2 0x4E85 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 DUP3 DUP5 PUSH2 0x4EDA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEA9 DUP3 DUP5 PUSH2 0x4D09 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEA9 DUP3 DUP5 PUSH2 0x4CFA JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x55A1 DUP3 DUP6 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0xCB7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D09 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x55BC DUP3 DUP6 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0xCB7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4CFA JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x55D7 DUP3 DUP7 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x55E4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x1094 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4E7C JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x55FF DUP3 DUP9 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x560C PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x5619 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x5626 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x3A39 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4E62 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x5641 DUP3 DUP10 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x564E PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x565B PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x5668 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x5675 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x5682 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4E7C JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x569B DUP3 DUP6 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0xCB7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4E7C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x56B6 DUP3 DUP7 PUSH2 0x4D09 JUMP JUMPDEST PUSH2 0x56C3 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x1094 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4CFA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCB7 DUP2 DUP5 PUSH2 0x4D6F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCB7 DUP2 DUP5 PUSH2 0x4DC8 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEA9 DUP3 DUP5 PUSH2 0x4E62 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEA9 DUP3 DUP5 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x1C0 DUP2 ADD PUSH2 0x571D DUP3 DUP11 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x572A PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x5737 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4E62 JUMP JUMPDEST PUSH2 0x5744 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x5751 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4D23 JUMP JUMPDEST PUSH2 0x575F PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4E16 JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x1A0 DUP4 ADD MSTORE PUSH2 0x5772 DUP2 DUP5 PUSH2 0x4EA2 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCB7 DUP2 DUP5 PUSH2 0x4EA2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x4F09 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x4F31 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x4F4F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x4F6D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x4FB5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x4FEE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5031 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x505B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5078 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x50A6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x50C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x50E2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5100 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5143 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5174 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5192 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x51B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x51DB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x51F9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5217 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x525A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5282 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x52BE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5307 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x5366 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x538E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x53D4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x540D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEA9 DUP2 PUSH2 0x542A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x569B DUP3 DUP6 PUSH2 0x4E7C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x599C DUP3 DUP7 PUSH2 0x4E7C JUMP JUMPDEST PUSH2 0x55E4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4E7C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEA9 DUP3 DUP5 PUSH2 0x54FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x59D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x59F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5A13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST POP PUSH1 0x4 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x5 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x5A60 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x5A43 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5AAA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5A92 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x354D JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x5AD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x5ADC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x5AF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP3 PUSH2 0x5AF1 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x5B06 DUP2 PUSH2 0x5A43 JUMP JUMPDEST DUP2 EQ PUSH2 0x253F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5B06 DUP2 PUSH2 0x5A4E JUMP JUMPDEST PUSH2 0x5B06 DUP2 PUSH2 0xEC1 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH6 0x56CE952BB918 0xDE 0xE3 0xEC PUSH21 0xA136BEEE857DDFDDBF2CD1A94FF2CAC96CA9A45C0 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "99:1487:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;99:1487:4;;30250:914:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;30250:914:5;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;559:36:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;559:36:7;;;:::i;:::-;;;;;;;;26169:332:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26169:332:5;;;;;;;;:::i;1977:18:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1977:18:3;;;:::i;:::-;;;;;;;;1489:181:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1489:181:0;;;;;;;;:::i;:::-;;;;;;;;23294:120:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23294:120:5;;;:::i;24056:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24056:219:5;;;;;;;;:::i;1778:80:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1778:80:1;;;:::i;31167:391:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;31167:391:5;;;;;;;;:::i;:::-;;2441:27:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2441:27:3;;;:::i;2150:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2150:23:3;;;:::i;24745:159:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24745:159:5;;;:::i;17300:315::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17300:315:5;;;;;;;;:::i;12249:2583::-;;;;;;;;;:::i;:::-;;;;;;;;;1580:77:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1580:77:7;;;;;;;;:::i;7601:2798:5:-;;;;;;;;;:::i;598:32:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;598:32:7;;;:::i;2021:21:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2021:21:3;;;:::i;:::-;;;;;;;;2633:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2633:48:3;;;;;;;;:::i;2176:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:29:3;;;:::i;3823:156:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3823:156:5;;;;;;;;:::i;22451:120::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22451:120:5;;;:::i;20318:285::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20318:285:5;;;;;;;;:::i;2310:24:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2310:24:3;;;:::i;22119:227:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22119:227:5;;;:::i;28552:995::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;28552:995:5;;;;;;;;:::i;26954:895::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26954:895:5;;;;;;;;:::i;:::-;;;;;;;;;;1386:73:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1386:73:7;;;;;;;;:::i;2035:96:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2035:96:1;;;;;;;;:::i;47566:377:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;47566:377:5;;;;;;;;:::i;1174:410:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1174:410:4;;;;;;;;:::i;2115:31:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2115:31:3;;;:::i;2407:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2407:31:3;;;:::i;2241:36::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2241:36:3;;;:::i;21419:245:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21419:245:5;;;:::i;25557:509::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25557:509:5;;;;;;;;:::i;22757:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22757:101:5;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;976:37:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;976:37:7;;;:::i;1134:83:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;25091:232:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25091:232:5;;;:::i;1998:20:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1998:20:3;;;:::i;633:22:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;633:22:7;;;:::i;4471:340:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4471:340:5;;;;;;;;:::i;899:21:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;899:21:7;;;:::i;16923:145:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16923:145:5;;;;;;;;:::i;23018:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23018:136:5;;;;;;;;:::i;2281:26:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2281:26:3;;;:::i;53404:333:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;53404:333:5;;;;;;;;:::i;815:31:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:31:7;;;:::i;55680:115:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;55680:115:5;;;;;;;;:::i;528:236:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;528:236:4;;;;;;;;:::i;23646:162:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23646:162:5;;;;;;;;:::i;2208:30:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2208:30:3;;;:::i;1977:745:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1977:745:7;;;;;;;;:::i;4714:816::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4714:816:7;;;;;;;;:::i;2464:123:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2464:123:1;;;;;;;;:::i;5857:447:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5857:447:7;;;;;;;;:::i;2854:51:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2854:51:3;;;;;;;;:::i;2904:587:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2904:587:7;;;;;;;;:::i;21843:115:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21843:115:5;;;;;;;;:::i;2337:27:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2337:27:3;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1351:98:142;;;;;;;;:::i;15691:938:5:-;;;;;;;;;:::i;658:20:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;658:20:7;;;:::i;2355:35:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2355:35:5;;;:::i;30250:914::-;30450:20;30480:18;;30476:685;;-1:-1:-1;;;;;30509:36:5;;30505:84;;30572:17;;-1:-1:-1;;;;;30572:17:5;;-1:-1:-1;30505:84:5;30594:20;30617:13;:81;30666:22;30690:4;30649:46;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;30649:46:5;;;30639:57;;49:4:-1;30639:57:5;;;;30617:81;;;;;;;;;;;30631:66;30617:81;;30731:21;;30775:16;;;30844:74;;-1:-1:-1;;;30844:74:5;;30617:81;;-1:-1:-1;;;;;;30731:21:5;;;;30718:51;;30731:21;30775:16;;;;;;;30797:22;;30825:13;;30731:21;;30844:60;;:74;;30617:81;;30844:74;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30844:74:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30844:74:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30844:74:5;;;;;;;;;30943:4;30718:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30718:251:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30718:251:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30718:251:5;;;;;;;;;30703:266;;30996:86;31028:12;31042:18;:16;:18::i;:::-;31062:19;30996:31;:86::i;:::-;30975:107;-1:-1:-1;31107:20:5;;-1:-1:-1;31107:18:5;;-1:-1:-1;31107:20:5:i;:::-;31092:12;:35;31088:69;;;31150:1;31135:16;;31088:69;30476:685;;30250:914;;;;;:::o;559:36:7:-;;;-1:-1:-1;;;;;559:36:7;;:::o;26169:332:5:-;26274:22;;26230:7;;;;-1:-1:-1;;;;;26274:22:5;:36;26270:153;;26348:22;;26331:87;;-1:-1:-1;;;26331:87:5;;-1:-1:-1;;;;;26348:22:5;;;;26331:64;;:87;;26404:4;;26411:6;;26331:87;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26331:87:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26331:87:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;26331:87:5;;;;;;;;;26317:101;;26270:153;26433:64;26490:6;26433:52;26472:12;:10;:12::i;:::-;26433:34;26455:11;26433:17;26443:6;26433:9;:17::i;:::-;:21;:34;:21;:34;:::i;:::-;:38;:52;:38;:52;:::i;:::-;:56;:64;:56;:64;:::i;:::-;26426:71;;;26169:332;;;;:::o;1977:18:3:-;;;;;;;;;;;;;;-1:-1:-1;;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1489:181:0:-;1574:10;1556:4;1566:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1566:29:0;;;;;;;;;;:38;;;1613;1556:4;;1566:29;;1613:38;;;;1598:6;;1613:38;;;;;;;;;;-1:-1:-1;1662:4:0;1489:181;;;;;:::o;23294:120:5:-;23345:7;23365:45;23389:20;23407:1;23389:17;:20::i;23365:45::-;23358:52;;23294:120;;:::o;24056:219::-;24131:7;24144:19;24166:18;:16;:18::i;:::-;24144:40;-1:-1:-1;24192:16:5;;24188:84;;24222:45;24242:11;24255;24222:19;:45::i;:::-;24215:52;;;;;24188:84;24056:219;;;;:::o;1778:80:1:-;1842:12;;1778:80;:::o;31167:391:5:-;31356:27;31392:101;31418:14;31434:13;31449:19;31470:22;31392:25;:101::i;:::-;31353:140;;;;31528:9;31505:19;:32;;31497:57;;;;-1:-1:-1;;;31497:57:5;;;;;;;;;;;;;;;;;31167:391;;;;;;:::o;2441:27:3:-;;;;:::o;2150:23::-;;;;:::o;24745:159:5:-;24827:21;;24883:16;;;24814:86;;-1:-1:-1;;;24814:86:5;;24794:7;;-1:-1:-1;;;;;24827:21:5;;;;24814:53;;:86;;24876:4;;24827:21;24883:16;;;;;;;24814:86;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24814:86:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24814:86:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;24814:86:5;;;;;;;;17300:315;17518:21;;17505:58;;-1:-1:-1;;;17505:58:5;;17393:4;;17413:198;;17440:5;;17451:3;;17460:6;;-1:-1:-1;;;;;17518:21:5;;17505:46;;:58;;17552:10;;17505:58;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17505:58:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17505:58:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17505:58:5;;;;;;;;;:101;;-1:-1:-1;;;;;17580:14:5;;;;;;:7;:14;;;;;;;;17595:10;17580:26;;;;;;;;17505:101;;;-1:-1:-1;;17505:101:5;17413:21;:198::i;:::-;17403:208;17300:315;-1:-1:-1;;;;17300:315:5:o;12249:2583::-;12754:7;12766;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;12844:13:5;:11;:13::i;:::-;12862:107;12883:14;12899:13;12914:19;12935:22;12959:9;12862:20;:107::i;:::-;-1:-1:-1;;;;;12978:36:5;;12974:94;;13046:17;;-1:-1:-1;;;;;13046:17:5;;-1:-1:-1;12974:94:5;13106:16;;-1:-1:-1;;;;;13080:42:5;;;13106:16;;;;;13080:42;;13072:57;;;;-1:-1:-1;;;13072:57:5;;;;;;;;;13193:11;;;:35;;-1:-1:-1;13208:10:5;-1:-1:-1;;;;;13208:20:5;;;13193:35;13185:72;;;;-1:-1:-1;;;13185:72:5;;;;;;;;;-1:-1:-1;;;;;13307:40:5;;13350:1;13307:40;;;:16;:40;;;;;;:44;13303:122;;-1:-1:-1;;;;;13384:40:5;;;;;;:16;:40;;;;;;13361:63;;;13353:72;;;;;;13450:16;;;;;-1:-1:-1;;;;;13450:16:5;13470:1;13433:34;;;:16;:34;;;;;;:38;13429:104;;13515:16;;;;;-1:-1:-1;;;;;13515:16:5;13498:34;;;;:16;:34;;;;;;13481:51;;;13473:60;;;;;;13694:20;13717:73;13731:22;13755:19;13776:13;13717;:73::i;:::-;13694:96;-1:-1:-1;13802:17:5;13794:32;;;;-1:-1:-1;;;13794:32:5;;;;;;;;;13831:31;;:::i;:::-;13866:29;;:::i;:::-;13927:4;13900:32;;-1:-1:-1;;;;;13952:25:5;;13900:16;13952;;;:25;;;13981:16;;;:25;;;;14123:14;;:29;;;14288:14;;;:30;;;14322:14;;;:36;;;14363:17;:15;:17::i;:::-;14420:120;14485:14;14504:11;14516:1;14504:14;;;;14420:29;:120::i;:::-;14385:155;;14386:14;;;14385:155;14601:36;14614:6;14622:14;14601:12;:36::i;:::-;14584:53;;14651:177;14671:6;14683:1;14709:14;14746:22;14774:13;14793:11;14810:13;14651:14;:177::i;:::-;493:1:143;1234:14;:38;14641:187:5;;;;-1:-1:-1;12249:2583:5;-1:-1:-1;;;;;;;;;;;;12249:2583:5:o;1580:77:7:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1637:6:7;:16;;-1:-1:-1;;;;;;1637:16:7;-1:-1:-1;;;;;1637:16:7;;;;;;;;;;1580:77::o;7601:2798:5:-;8198:7;8210;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;8295:19:5;8287:33;;;;-1:-1:-1;;;8287:33:5;;;;;;;;;8325:13;:11;:13::i;:::-;-1:-1:-1;;;;;8388:40:5;;8431:1;8388:40;;;:16;:40;;;;;;:44;8384:122;;-1:-1:-1;;;;;8465:40:5;;;;;;:16;:40;;;;;;8442:63;;;8434:72;;;;;;8524:9;:14;;:50;;;8555:19;8542:9;:32;8524:50;8523:101;;;;-1:-1:-1;8584:24:5;;;;:39;;-1:-1:-1;8612:11:5;;;8584:39;8523:180;;;;-1:-1:-1;;;;;;8633:36:5;;;;;:54;;-1:-1:-1;8673:9:5;:14;;8633:54;:69;;;-1:-1:-1;8691:11:5;;;8633:69;8523:227;;;;-1:-1:-1;8712:11:5;;;:37;;-1:-1:-1;8727:10:5;-1:-1:-1;;;;;8727:22:5;;;8712:37;8511:251;;;;-1:-1:-1;;;8511:251:5;;;;;;;;;-1:-1:-1;;;;;9283:36:5;;9279:94;;9351:17;;-1:-1:-1;;;;;9351:17:5;;-1:-1:-1;9279:94:5;9410:16;;-1:-1:-1;;;;;9384:42:5;;;9410:16;;;;;9384:42;;9376:57;;;;-1:-1:-1;;;9376:57:5;;;;;;;;;9438:17;:15;:17::i;:::-;9460:31;;:::i;:::-;9495:29;;:::i;:::-;9556:4;9529:32;;-1:-1:-1;;;;;9581:27:5;;;9529:16;9581;;;:27;;;;9612;;;:16;;;:27;9698:14;;:31;;;9860:134;9715:14;9915:20;9543:1;9915:17;:20::i;:::-;9971:19;9860:31;:134::i;:::-;9810:11;9822:1;9810:14;;;9826:11;9838:1;9826:14;;;9842:11;9854:1;9842:14;;;9809:185;;;;;;;;10060:19;10043:11;10055:1;10043:14;;;:36;;;;;10094:301;10114:6;10126:14;10167:21;;;;;;;;;-1:-1:-1;;;;;10167:21:5;-1:-1:-1;;;;;10146:60:5;;10213:13;:81;10262:22;10286:4;10245:46;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10245:46:5;;;10235:57;;;;;;10227:66;;10213:81;;;;;;;;;;;;10146:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10146:154:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10146:154:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10146:154:5;;;;;;;;;10306:22;10334:13;10353:11;10094:301;;;;;;;;;;;;:14;:301::i;:::-;493:1:143;1234:14;:38;10084:311:5;;;;-1:-1:-1;7601:2798:5;-1:-1:-1;;;;;;;;;;;7601:2798:5:o;598:32:7:-;;;-1:-1:-1;;;;;598:32:7;;:::o;2021:21:3:-;;;;;;:::o;2633:48::-;;;;;;;;;;;;;:::o;2176:29::-;;;;:::o;3823:156:5:-;3909:18;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;3940:35:5;3951:8;3961:13;3940:10;:35::i;:::-;3933:42;;1229:1:143;493;1234:14;:38;3823:156:5;;-1:-1:-1;;3823:156:5:o;22451:120::-;22505:7;22525:42;22548:18;:16;:18::i;:::-;22525:22;:42::i;20318:285::-;20373:6;20428:12;20470:4;2569:66;20476:18;;20453:42;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20453:42:5;;;20443:53;;;;;;20428:68;;20529:70;20539:4;20545:8;:14;20554:4;-1:-1:-1;;;;;20545:14:5;-1:-1:-1;;;;;20545:14:5;;;;;;;;;;;;;20561:12;:10;:12::i;:::-;-1:-1:-1;;;;;20575:23:5;;;;;;:17;:23;;;;;;20529:9;:70::i;2310:24:3:-;;;;:::o;22119:227:5:-;22167:7;22180:19;22202:20;22220:1;22202:17;:20::i;:::-;22180:42;;22226:19;22248:18;:16;:18::i;:::-;22226:40;;22288:11;22274;:25;22270:73;;;22313:25;;;-1:-1:-1;22306:32:5;;22270:73;22119:227;;;:::o;28552:995::-;28751:21;28782:17;;28778:766;;28811:23;28838:86;28870:12;28884:18;:16;:18::i;28838:86::-;28806:118;;;;28953:20;:18;:20::i;:::-;28934:15;:39;28930:610;;-1:-1:-1;;;;;28985:36:5;;28981:84;;29048:17;;-1:-1:-1;;;;;29048:17:5;;-1:-1:-1;28981:84:5;29071:20;29094:13;:81;29143:22;29167:4;29126:46;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;29126:46:5;;;29116:57;;49:4:-1;29116:57:5;;;;29094:81;;;;;;;;;;;29108:66;29094:81;;29206:21;;29265:16;;;29342:74;;-1:-1:-1;;;29342:74:5;;29094:81;;-1:-1:-1;29193:292:5;;29482:2;;-1:-1:-1;;;;;29206:21:5;;;;29193:64;;29206:21;29265:16;;;;;29289:22;;29319:15;;29206:21;;29342:60;;:74;;29094:81;;29342:74;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29342:74:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29342:74:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;29342:74:5;;;;;;;;;29442:4;29193:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29193:277:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29193:277:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;29193:277:5;;;;;;;;:292;29181:304;;;;;;26954:895;27163:17;;;-1:-1:-1;;;;;27242:36:5;;27238:94;;27310:17;;-1:-1:-1;;;;;27310:17:5;;-1:-1:-1;27238:94:5;27336:20;27359:73;27373:22;27397:19;27418:13;27359;:73::i;:::-;27336:96;;27465:59;27495:14;27511:12;27465:29;:59::i;:::-;27437:87;;-1:-1:-1;27437:87:5;-1:-1:-1;27544:20:5;:18;:20::i;:::-;27532:9;:32;27528:64;;;-1:-1:-1;27579:1:5;;-1:-1:-1;27579:1:5;;-1:-1:-1;27579:1:5;;-1:-1:-1;27571:16:5;;27528:64;27612:28;:13;27630:9;27612:28;:17;:28;:::i;:::-;27671:21;;27725:16;;;27658:187;;-1:-1:-1;;;27658:187:5;;27596:44;;-1:-1:-1;;;;;;27671:21:5;;;;27658:62;;:187;;27671:21;27725:16;;;;;27746:22;;27596:44;;27791:19;;27815:12;;27832:9;;27658:187;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27658:187:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27658:187:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;27658:187:5;;;;;;;;;27645:200;;26954:895;;;;;;;;;;:::o;1386:73:7:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1441:5:7;:14;;-1:-1:-1;;;;;;1441:14:7;-1:-1:-1;;;;;1441:14:7;;;;;;;;;;1386:73::o;2035:96:1:-;-1:-1:-1;;;;;2111:16:1;2091:7;2111:16;;;:8;:16;;;;;;;2035:96::o;47566:377:5:-;47658:7;47675:16;;;;;:46;;;47710:11;47695;:26;;47675:46;47671:269;;;47739:196;47928:6;47739:178;47839:77;47852:6;47873:21;;;;;;;;;-1:-1:-1;;;;;47873:21:5;-1:-1:-1;;;;;47860:53:5;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;47860:55:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47860:55:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;47860:55:5;;;;;;;;;47839:12;:77::i;:::-;47739:89;47785:42;47802:11;47815;47785:16;:42::i;:::-;47739:35;47762:11;47739:22;:35::i;:196::-;47728:207;;;;1174:410:4;1278:16;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;1300:87:4;;;;1322:23;1334:10;1322:11;:23::i;:::-;1311:34;;1300:87;;;1365:22;1376:10;1365;:22::i;:::-;1354:33;;1300:87;1480:13;;1476:105;;1500:76;1514:16;;;;;;;;;-1:-1:-1;;;;;1514:16:4;1532:8;1542;1500:76;;;;;;;;;;;;;-1:-1:-1;;;1500:76:4;;;:13;:76::i;:::-;493:1:143;1234:14;:38;1174:410:4;;-1:-1:-1;;;1174:410:4:o;2115:31:3:-;;;;;;-1:-1:-1;;;;;2115:31:3;;:::o;2407:::-;;;;:::o;2241:36::-;;;;:::o;21419:245:5:-;21511:15;;21462:13;;;;21537:15;-1:-1:-1;;;;;21511:42:5;;;:15;;:42;21507:96;;21581:17;:15;:17::i;:::-;21560:38;-1:-1:-1;;21507:96:5;21614:46;21626:33;21644:14;21626:17;:33::i;:::-;21614:11;:46::i;:::-;21607:53;;;21419:245;:::o;25557:509::-;25630:23;25810:27;25840:29;25865:3;25840:20;25857:2;25840:12;;:16;;:20;;;;:::i;:29::-;25810:59;-1:-1:-1;25873:14:5;25890:40;25898:6;25810:59;25890:40;:19;:40;:::i;:::-;25873:57;;25934:19;25956:41;25990:6;25956:29;25978:6;25956:17;:15;:17::i;:41::-;25934:63;-1:-1:-1;26019:43:5;26047:14;26019:23;25934:63;26035:6;26019:23;:15;:23;:::i;:43::-;26001:61;25557:509;-1:-1:-1;;;;;25557:509:5:o;22757:101::-;22808:7;22828:26;22852:1;22828:23;:26::i;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;976:37:7:-;;;-1:-1:-1;;;;;976:37:7;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;25091:232:5:-;25183:15;;25140:7;;;;25209:15;-1:-1:-1;;;;;25183:42:5;;;:15;;:42;25179:96;;25253:17;:15;:17::i;:::-;25232:38;-1:-1:-1;;25179:96:5;25286:33;25304:14;25286:17;:33::i;1998:20:3:-;;;;;;;;;;;;;;;-1:-1:-1;;1998:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;633:22:7;;;-1:-1:-1;;;;;633:22:7;;:::o;4471:340:5:-;4554:22;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;4599:22:5;4610:10;4599;:22::i;:::-;4582:39;-1:-1:-1;4715:19:5;;4711:97;;4741:62;4755:16;;;;;;;;;-1:-1:-1;;;;;4755:16:5;4773:8;4783:14;4741:62;;;;;;;;;;;;;-1:-1:-1;;;4741:62:5;;;:13;:62::i;899:21:7:-;;;-1:-1:-1;;;;;899:21:7;;:::o;16923:145:5:-;16988:4;17005:59;17027:10;17039:3;17044:6;-1:-1:-1;;17005:21:5;:59::i;23018:136::-;23093:7;23113:37;23137:12;23113:23;:37::i;2281:26:3:-;;;;:::o;53404:333:5:-;53467:13;53486:10;53533:6;53516:24;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;53516:24:5;;;53506:35;;;;;;53486:56;;53546:12;53588:3;53601:66;53571:98;;;;;;;;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;53571:98:5;;;53561:109;;49:4:-1;53561:109:5;;;;53700:11;;53404:333;-1:-1:-1;;;;53404:333:5:o;815:31:7:-;;;-1:-1:-1;;;;;815:31:7;;:::o;55680:115:5:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;55757:22:5;:34;;-1:-1:-1;;;;;;55757:34:5;-1:-1:-1;;;;;55757:34:5;;;;;;;;;;55680:115::o;528:236:4:-;635:14;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;655:105:4;;;;673:36;685:8;695:13;673:11;:36::i;:::-;666:43;;;;655:105;725:35;736:8;746:13;725:10;:35::i;23646:162:5:-;23721:7;23741:63;23765:38;23790:12;23765:20;23783:1;23765:17;:20::i;2208:30:3:-;;;;:::o;1977:745:7:-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;2162:16;;2097:33;;2162:16;;;-1:-1:-1;;;;;2162:16:7;2134:25;2183:174;2207:14;:21;2203:1;:25;2183:174;;;2270:17;2240:14;2255:1;2240:17;;;;;;;;;;;;;;:27;;:47;-1:-1:-1;;;;;2240:47:7;;;-1:-1:-1;;;;;2240:47:7;;;;;2324:14;:28;;2345:7;2324:28;;;2341:1;2324:28;2292:60;;:14;2307:1;2292:17;;;;;;;;;;;;;;;;;;:29;;:60;2230:3;;2183:174;;;-1:-1:-1;2401:21:7;;2380:75;;-1:-1:-1;;;2380:75:7;;-1:-1:-1;;;;;2401:21:7;;;;2380:59;;:75;;2440:14;;2380:75;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2380:75:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2380:75:7;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2380:75:7;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;2380:75:7;;;;;;;;;2361:94;-1:-1:-1;2464:9:7;2459:260;2483:16;:23;2479:1;:27;2459:260;;;2695:16;2712:1;2695:19;;;;;;;;;;;;;;2518:13;:174;2593:14;2608:1;2593:17;;;;;;;;;;;;;;:33;;;2635:14;2568:106;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2568:106:7;;;2551:130;;49:4:-1;2551:130:7;;;;2518:174;;;;;;;;;;2537:150;2518:174;:196;2508:3;;2459:260;;;;1160:1;;1977:745;;:::o;4714:816::-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;1875:6:3;4951:30:7;:15;4971:9;4951:30;:19;:30;:::i;:::-;:55;;4943:89;;;;-1:-1:-1;;;4943:89:7;;;;;;;;;1875:6:3;5044:44:7;:22;5071:16;5044:44;:26;:44;:::i;:::-;:69;;5036:103;;;;-1:-1:-1;;;5036:103:7;;;;;;;;;1875:6:3;5152:12:7;:37;;:76;;;;;1875:6:3;5193:10:7;:35;;5152:76;5144:104;;;;-1:-1:-1;;;5144:104:7;;;;;;;;;5253:8;:20;;;;5277:14;:32;;;;5313:15;:34;;;;5351:21;:46;5402:11;:26;5445:9;:22;5484:12;:28;4714:816::o;2464:123:1:-;-1:-1:-1;;;;;2558:15:1;;;2538:7;2558:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2464:123::o;5857:447:7:-;6000:6;;-1:-1:-1;;;;;6000:6:7;5986:10;:20;5978:43;;;;-1:-1:-1;;;5978:43:7;;;;;;;;;6065:12;6155:6;6138:24;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6138:24:7;;;6128:35;;;;;;6179:66;6098:154;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6098:154:7;;;6083:174;;;;;;6065:192;;6288:8;6282:4;6275:22;6270:31;;;:::o;2854:51:3:-;;;;;;;;;;;;;:::o;2904:587:7:-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;3030:47;;;3022:74;;;;-1:-1:-1;;;3022:74:7;;;;;;;;;3137:38;;;;;;;;;;;;;;;;3101:33;;3151:16;3137:38;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;3137:38:7;-1:-1:-1;3101:74:7;-1:-1:-1;3184:9:7;3179:225;3199:27;;;3179:225;;;3238:10;3286:16;;3303:1;3286:19;;;;;;;;;;;;;;;;;;;;;;3307:13;;3321:1;3307:16;;;;;;;;;;;;;;;;;;;;;;3269:55;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3269:55:7;;;3259:66;;;;;;3251:75;;3238:88;;3353:13;:17;3367:2;3353:17;;;;;;;;;;;;3331:16;3348:1;3331:19;;;;;;;;;;;;;;;;;;:39;;;;3382:17;;;;:13;:17;;;;;3375:24;3228:3;;3179:225;;;-1:-1:-1;3429:21:7;;3408:79;;-1:-1:-1;;;3408:79:7;;-1:-1:-1;;;;;3429:21:7;;;;3408:61;;:79;;3470:16;;3408:79;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3408:79:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3408:79:7;;;;1160:1;2904:587;;;;:::o;21843:115:5:-;-1:-1:-1;;;;;21930:24:5;21904:13;21930:24;;;:17;:24;;;;;;;21843:115::o;2337:27:3:-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;15691:938:5:-;16216:7;;-1:-1:-1;;;;;16310:31:5;;;16306:139;;16374:21;;16346:99;;-1:-1:-1;;;16346:99:5;;-1:-1:-1;;;;;16374:21:5;;;;16346:72;;:99;;16419:6;;16427:17;;16346:99;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16346:99:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16346:99:5;;;;16306:139;16459:166;16476:6;16488:14;16508:13;16527:19;16552:22;16580:6;16592:9;16607:13;;16459:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16459:11:5;;-1:-1:-1;;;16459:166:5:i;:::-;16449:176;;;;15691:938;;;;;;;;;;;;;:::o;658:20:7:-;;;-1:-1:-1;;;;;658:20:7;;:::o;2355:35:5:-;2389:1;2355:35;:::o;37694:703::-;37874:20;37899:29;37933:23;37981:51;38006:12;38020:11;37981:24;:51::i;:::-;37966:66;-1:-1:-1;38162:169:5;38195:132;38213:6;38225:72;38279:17;38225:49;38213:6;38225:37;37966:66;38242:19;38225:37;:16;:37;:::i;38195:132::-;38162:24;:12;38179:6;38162:24;:16;:24;:::i;:169::-;38144:187;-1:-1:-1;38360:33:5;38144:187;38380:12;38360:33;:19;:33;:::i;:::-;38336:57;;37694:703;;;;;;;:::o;46398:126::-;46478:16;;;46471:49;;-1:-1:-1;;;46471:49:5;;46451:7;;46478:16;;;;-1:-1:-1;;;;;46478:16:5;;46471:34;;:49;;46514:4;;46471:49;;;812:155:145;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;1999:399;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;2817:121;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;52722:395:5:-;52796:19;52825:12;;52841:1;52825:17;52821:293;;52873:19;;52972:18;52968:96;;53014:44;53039:18;:16;:18::i;:::-;53014:20;:18;:20::i;:44::-;52998:60;;52968:96;53076:33;:13;53094:14;53076:33;:17;:33;:::i;17998:1140::-;18128:4;-1:-1:-1;;18142:16:5;:31;18138:110;;18209:34;;;;;;;;;;;;-1:-1:-1;;;18209:34:5;;;;;;:16;;18230:6;;18209:34;:20;:34;:::i;:::-;-1:-1:-1;;;;;18180:14:5;;;;;;:7;:14;;;;;;;;18195:10;18180:26;;;;;;;:63;18138:110;-1:-1:-1;;;;;18260:17:5;;18252:32;;;;-1:-1:-1;;;18252:32:5;;;;;;;;;-1:-1:-1;;;;;18313:15:5;;18289:21;18313:15;;;:8;:15;;;;;;;;;18359:31;;;;;;;;;;;-1:-1:-1;;;18359:31:5;;;;;;;18313:15;;18289:21;18359:31;;18313:15;;18377:6;;18359:31;:17;:31;:::i;:::-;-1:-1:-1;;;;;18394:15:5;;;;;;;:8;:15;;;;;;:34;;;18455:13;;;;;;;;;18332:58;;-1:-1:-1;18497:23:5;18455:13;18513:6;18497:23;:15;:23;:::i;:::-;-1:-1:-1;;;;;18524:13:5;;;;;;:8;:13;;;;;:30;;;18472:48;;-1:-1:-1;18620:12:5;:10;:12::i;:::-;18870:22;;18596:36;;-1:-1:-1;;;;;;18861:31:5;;;18870:22;;18861:31;;;;:64;;-1:-1:-1;18903:22:5;;-1:-1:-1;;;;;18896:29:5;;;18903:22;;18896:29;;18861:64;18857:225;;;18932:73;18951:5;18958:13;18973:16;18991:13;18932:18;:73::i;:::-;19010:67;19029:3;19034:11;19047:14;19063:13;19010:18;:67::i;:::-;19107:3;-1:-1:-1;;;;;19091:28:5;19100:5;-1:-1:-1;;;;;19091:28:5;;19112:6;19091:28;;;;;;;;;;;;;;;-1:-1:-1;19130:4:5;;17998:1140;-1:-1:-1;;;;;;;;;17998:1140:5:o;53915:312::-;53996:12;54038:7;;-1:-1:-1;;;;;;54038:7:5;54055:66;54021:102;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;54021:102:5;;;54011:113;;;;;;53996:128;;54128:13;54177:4;54171:11;54159:23;;54198:8;54197:9;54189:34;;;;-1:-1:-1;;;54189:34:5;;;;;;;;;53915:312;;:::o;35831:1405::-;36011:13;36033:24;;36029:1204;;36121:28;36151:33;36215:21;;;;;;;;;-1:-1:-1;;;;;36215:21:5;-1:-1:-1;;;;;36202:46:5;;:48;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36202:48:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36202:48:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36202:48:5;;;;;;;;;36286:16;;;36192:111;;-1:-1:-1;;;36192:111:5;;-1:-1:-1;;;;;36192:69:5;;;;;;:111;;36262:22;;36286:16;;;;;;;;36192:111;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36192:111:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36192:111:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36192:111:5;;;;;;;;;36120:183;;;;36317:20;36341:1;36317:25;;36316:63;;;;-1:-1:-1;36348:30:5;;;36316:63;36308:105;;;;-1:-1:-1;;;36308:105:5;;;;;;;;;36483:23;36509:76;36559:25;36509:45;:19;36533:20;36509:45;:23;:45;:::i;:76::-;36758:21;;36803:16;;;36745:116;;-1:-1:-1;;;36745:116:5;;36483:102;;-1:-1:-1;36709:29:5;;-1:-1:-1;;;;;36758:21:5;;;;36745:57;;:116;;36758:21;36803:16;;;;;;36821:22;;36483:102;;36745:116;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36745:116:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36745:116:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36745:116:5;;;;;;;;;36709:152;;36959:19;36934:21;:44;36930:245;;37102:67;37149:19;37102:42;:15;37122:21;37102:42;:19;:42;:::i;:67::-;37084:85;;36930:245;37195:33;:15;37215:12;37195:33;:19;:33;:::i;:::-;37180:48;35831:1405;-1:-1:-1;;;;;;;;35831:1405:5:o;35182:222::-;35265:15;;35241;;-1:-1:-1;;;;;35265:21:5;;;:15;;:21;35261:140;;35306:21;;35353:16;;;35293:77;;-1:-1:-1;;;35293:77:5;;-1:-1:-1;;;;;35306:21:5;;;;35293:59;;:77;;35306:21;35353:16;;;;;;35293:77;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35293:77:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;35376:15:5;:20;;-1:-1:-1;;;;;35376:20:5;;-1:-1:-1;;35376:20:5;;;;;;-1:-1:-1;;35182:222:5;:::o;51862:662::-;51977:20;;;52059:45;52097:6;52059:33;:13;52077:14;52059:33;:17;:33;:::i;:45::-;52026:78;;52294:70;52319:22;52343:20;52361:1;52343:17;:20::i;:::-;52294:24;:70::i;:::-;52279:85;;52458:62;52474:12;52488:7;52497:22;52458:15;:62::i;:::-;52443:77;;51862:662;;;;;;:::o;39227:2094::-;39473:7;39482;39495:13;:11;:13::i;:::-;39542:20;:18;:20::i;:::-;39524:14;;;;:38;;;;:118;;-1:-1:-1;39612:16:5;;;;-1:-1:-1;;;;;39612:30:5;;;39524:118;39512:161;;;;-1:-1:-1;;;39512:161:5;;;;;;;;;39682:16;;;;-1:-1:-1;;;;;39682:30:5;39678:114;;39738:16;;;;-1:-1:-1;;;;;39719:35:5;:16;;;:35;39678:114;39870:16;39889:84;39906:22;39930:13;39945:11;39958:14;39889:16;:84::i;:::-;40160:14;;;;40141;;;;39870:103;;-1:-1:-1;40141:34:5;;:14;:18;:34::i;:::-;40124:14;;;:51;40201:19;;40197:184;;40342:14;;;;:34;;40361:14;40342:18;:34::i;:::-;40325:14;;;:51;40197:184;40385:24;40480:19;;40476:61;;-1:-1:-1;40528:4:5;40476:61;40541:20;40564:13;:96;40613:22;40637:19;40596:61;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;40596:61:5;;;40586:72;;;;;;40578:81;;40564:96;;;;;;;;;;;;40541:119;;40713:21;;;;;;;;;-1:-1:-1;;;;;40713:21:5;-1:-1:-1;;;;;40700:57:5;;40764:8;40810:12;40827:6;40838:19;40862:13;40880;40898:11;40914:13;40700:231;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40700:231:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40700:231:5;;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;40700:231:5;;;;;;;;;40682:14;;;40665:266;40666:14;;;40665:266;;;40935:34;;;;-1:-1:-1;;;40935:34:5;;;;;;;;;41177:21;;41225:16;;;;41149:93;;-1:-1:-1;;;41149:93:5;;-1:-1:-1;;;;;41177:21:5;;;;41149:75;;:93;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41149:93:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41149:93:5;;;;41255:11;41267:1;41255:14;;;;;;;;;;;41271;;;;;41255;;41271;;-1:-1:-1;39227:2094:5;;-1:-1:-1;;;;;;;;;;39227:2094:5:o;31864:901::-;31943:18;31967:20;32084:30;32100:13;32084:15;:30::i;:::-;32296:22;;32055:59;;-1:-1:-1;32055:59:5;-1:-1:-1;32265:19:5;;-1:-1:-1;;;;;32296:22:5;:36;32292:148;;32368:22;;32351:89;;-1:-1:-1;;;32351:89:5;;-1:-1:-1;;;;;32368:22:5;;;;32351:64;;:89;;32424:4;;32431:8;;32351:89;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32351:89:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32351:89:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;32351:89:5;;;;;;;;;32337:103;;32292:148;-1:-1:-1;;;;;32465:18:5;;32444;32465;;;:8;:18;;;;;;:35;;32488:11;32465:35;:22;:35;:::i;:::-;32444:56;-1:-1:-1;32504:18:5;32525:26;32444:56;32540:10;32525:26;:14;:26;:::i;:::-;32504:47;;32592:56;32598:8;32608:10;32620:13;32635:12;32592:5;:56::i;:::-;;32695:66;32714:8;32724:10;32736;32748:12;32695:18;:66::i;:::-;31864:901;;;;;;;;:::o;47086:242::-;47162:7;47179:16;;47175:150;;47203:26;47235:17;:15;:17::i;:::-;-1:-1:-1;47202:50:5;-1:-1:-1;47264:56:5;47308:11;47264:39;47299:3;47264:30;47202:50;47287:6;47264:30;:22;:30;:::i;20916:383::-;21050:18;21078:21;21074:45;;-1:-1:-1;21113:1:5;21106:8;;21074:45;-1:-1:-1;21152:11:5;;21185:110;21152:11;21185:93;1927:6:3;21185:73:5;21248:8;21185:51;21192:13;21218:16;21185:51;:25;:51;:::i;:::-;:55;:73;:55;:73;:::i;:::-;:77;:93;:77;:93;:::i;:::-;:97;:110;:97;:110;:::i;1201:125:145:-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;55301:245:5:-;55392:7;55409:16;;;;;:36;;-1:-1:-1;55429:16:5;;;55409:36;55405:138;;;55498:40;55526:11;55498:23;:11;55514:6;55498:23;:15;:23;:::i;56237:681::-;56348:22;;56331:91;;-1:-1:-1;;;56331:91:5;;56296:7;;;;-1:-1:-1;;;;;56348:22:5;;;;56331:64;;:91;;56404:4;;56411:10;;56331:91;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56331:91:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;56331:91:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;56331:91:5;;;;;;;;;56309:113;;56476:10;56434:38;56450:21;56460:10;56450:9;:21::i;:::-;56434:11;;:38;:15;:38;:::i;:::-;:52;;56426:83;;;;-1:-1:-1;;;56426:83:5;;;;;;;;;56518:15;;56514:330;;56621:10;56607:11;:24;56603:237;;;56656:22;;56639:89;;-1:-1:-1;;;56639:89:5;;-1:-1:-1;;;;;56656:22:5;;;;56639:49;;:89;;56697:4;;56704:11;;56717:10;;56639:89;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56639:89:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;56639:89:5;;;;56603:237;;;56763:22;;56746:88;;-1:-1:-1;;;56746:88:5;;-1:-1:-1;;;;;56763:22:5;;;;56746:49;;:88;;56804:4;;56811:10;;56823;;56746:88;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56746:88:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;56746:88:5;;;;56603:237;56892:22;56903:10;33643:1275;33701:22;33737:15;33729:30;;;;-1:-1:-1;;;33729:30:5;;;;;;;;;33781:21;33791:10;33781:9;:21::i;:::-;33768:10;:34;33764:129;;;-1:-1:-1;;33817:10:5;:25;33809:40;;;;-1:-1:-1;;;33809:40:5;;;;;;;;;33867:21;33877:10;33867:9;:21::i;:::-;33854:34;;33764:129;33897:17;:15;:17::i;:::-;33919:20;33942:33;33954:20;33972:1;33954:17;:20::i;33942:33::-;33919:56;-1:-1:-1;33980:22:5;34005:40;34038:6;34005:28;:10;33919:56;34005:28;:14;:28;:::i;:40::-;33980:65;;34049:37;34089:20;:18;:20::i;:::-;34049:60;;34131:14;34114:31;;34175:29;34157:14;:47;;34149:62;;;;-1:-1:-1;;;34149:62:5;;;;;;;;;34393:22;;34362:19;;-1:-1:-1;;;;;34393:22:5;:36;34389:150;;34465:22;;34448:91;;-1:-1:-1;;;34448:91:5;;-1:-1:-1;;;;;34465:22:5;;;;34448:64;;:91;;34521:4;;34528:10;;34448:91;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34448:91:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34448:91:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;34448:91:5;;;;;;;;;34434:105;;34389:150;34573:10;34543:18;34564:20;;;:8;:20;;;;;;:37;;34589:11;34564:37;:24;:37;:::i;:::-;34543:58;-1:-1:-1;34605:18:5;34626:26;34543:58;34641:10;34626:26;:14;:26;:::i;:::-;34605:47;;34657:59;34663:10;34675;34687:14;34703:12;34657:5;:59::i;:::-;;34846:68;34865:10;34877;34889;34901:12;34846:18;:68::i;:::-;33643:1275;;;;;;;;;:::o;44412:223::-;44553:67;;44526:105;;44546:5;;-1:-1:-1;;;44576:31:5;44553:67;;44609:2;;44613:6;;44553:67;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;44553:67:5;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;44553:67:5;;;179:29:-1;;;;160:49;;;44622:8:5;44526:19;:105::i;:::-;44412:223;;;;:::o;51023:508::-;51346:21;;51413:16;;;51333:100;;-1:-1:-1;;;51333:100:5;;51073:26;;;;;;-1:-1:-1;;;;;51346:21:5;;;;51333:57;;:100;;51403:4;;51346:21;51413:16;;;;;;51333:100;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51333:100:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;51333:100:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;51333:100:5;;;;;;;;;-1:-1:-1;51268:165:5;;-1:-1:-1;51268:165:5;-1:-1:-1;51268:165:5;-1:-1:-1;51455:72:5;;-1:-1:-1;51520:6:5;;-1:-1:-1;51455:60:5;51474:40;51520:6;51268:165;51474:12;:40::i;:::-;51455:14;;:60;:18;:60;:::i;:72::-;51438:89;;51023:508;;;:::o;46696:217::-;46801:12;;46761:7;;46825:21;:84;;46897:12;;46825:84;;;46849:45;46877:16;46849:23;:11;46865:6;46849:23;:15;:23;:::i;48120:465::-;48198:7;;48241:17;;48237:260;;48269:15;;48295;-1:-1:-1;;;;;48269:42:5;;;:15;;:42;48265:98;;48340:17;:15;:17::i;:::-;48319:38;-1:-1:-1;;48265:98:5;48368:15;48386:40;48411:14;48386:20;:18;:20::i;:40::-;48368:58;;48450:7;48435:12;:22;48431:62;;;48480:7;48465:22;;48431:62;48237:260;;48508:73;48533:12;48547:33;48565:14;48547:17;:33::i;780:87:137:-;853:10;780:87;:::o;55798:436:5:-;55878:14;55944:35;55955:8;55965:13;55944:10;:35::i;:::-;56076:22;;55935:44;;-1:-1:-1;56044:71:5;;56066:8;;-1:-1:-1;;;;;56076:22:5;55935:44;;56044:21;:71::i;:::-;-1:-1:-1;56171:22:5;;56154:76;;-1:-1:-1;;;56154:76:5;;-1:-1:-1;;;;;56171:22:5;;;;56154:58;;:76;;56213:8;;56223:6;;56154:76;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56154:76:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;1538:204:142;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;49432:1397:5:-;49535:16;49557;49576:70;49593:39;49616:15;49593:18;:16;:18::i;:39::-;49634:11;49576:16;:70::i;:::-;49720:8;;49761:14;;49805:11;;49844:9;;49884:12;;49557:89;;-1:-1:-1;49651:19:5;;;;49720:8;49761:14;49805:11;49844:9;49905:26;;;49901:143;;;50024:15;50013:26;;49901:143;50063:13;50052:8;:24;50048:778;;;50221:25;;;;;1875:6:3;50155:37:5;;;50255:23;;;50251:52;;;50291:12;50280:23;;50251:52;50323:82;1875:6:3;50323:55:5;50364:13;50323:36;:18;50346:12;50323:36;:22;:36;:::i;:82::-;50309:96;;50422:92;50502:11;50422:75;50484:12;50422:57;50435:43;50448:16;50466:11;50435:12;:43::i;:::-;50422:8;;:57;:12;:57;:::i;:92::-;50411:103;;50048:778;;;;50541:77;50605:12;50541:59;1875:6:3;50541:32:5;:8;50554:18;50541:32;:12;:32;:::i;:77::-;50530:88;-1:-1:-1;50638:12:5;;-1:-1:-1;50638:12:5;;50669:36;:18;50638:12;50669:36;:22;:36;:::i;:::-;50655:50;;50726:11;50715:8;:22;50711:110;;;50750:11;50739:22;;50711:110;;;50786:11;50775:8;:22;50771:50;;;50810:11;50799:22;;50771:50;49432:1397;;;;;;;;;;;;:::o;3411:315:145:-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1614:175::-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;19597:545:5:-;19797:43;;19772:12;;19797:43;;19814:5;;2569:66;;19797:43;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19797:43:5;;;19787:54;;;;;;19772:69;;19846:21;19875:11;19890:1;19875:16;19871:173;;;19914:1;19898:17;;19871:173;;;19930:16;;19926:118;;-1:-1:-1;;;;;20014:24:5;;;;;;:17;:24;;;;;;19970:69;;19980:4;;19986:11;;19999:13;;19970:9;:69::i;:::-;19953:86;;19926:118;20062:28;;-1:-1:-1;;;;;20098:24:5;;;;;;;:17;:24;;;;;:40;;;;-1:-1:-1;;19597:545:5:o;54658:379::-;54790:28;;54854:43;54888:8;54854:29;:12;54871:11;54854:29;:16;:29;:::i;:43::-;54824:73;-1:-1:-1;54901:15:5;54919:40;54927:6;54824:73;54919:40;:19;:40;:::i;:::-;54901:58;-1:-1:-1;54986:47:5;54901:58;54986:34;:22;55013:6;54986:34;:26;:34;:::i;:47::-;54963:70;54658:379;-1:-1:-1;;;;;;54658:379:5:o;42095:1686::-;42316:17;;42365:16;;42404;;;;;42447:14;;;42489;;;;42537;;;;42272:16;;-1:-1:-1;;;;;42316:17:5;;;;;42365:16;;;;;42404;42447:14;42489;42537;42564:43;;;;;42556:58;;;;-1:-1:-1;;;42556:58:5;;;;;;;;;42630:9;;-1:-1:-1;42648:21:5;;42644:367;;42706:64;42720:17;42739:8;42749:16;42706:64;;;;;;;;;;;;:13;:64::i;:::-;42794:16;42779:12;:31;42775:141;;;42851:21;;42818:92;;;;;;;;;42851:21;42818:92;;;;42832:17;;-1:-1:-1;;;;;42851:21:5;;;;42874:31;;;;42818:13;:92::i;:::-;42644:367;;;42964:21;;42931:75;;;;;;;;;;;;-1:-1:-1;;;42931:75:5;;;;;;42945:17;;-1:-1:-1;;;;;42964:21:5;;;;42987:12;;42931:13;:75::i;:::-;43195:24;;43191:457;;43256:11;-1:-1:-1;;;;;43230:37:5;:22;-1:-1:-1;;;;;43230:37:5;;:54;;;;-1:-1:-1;43271:13:5;;;43230:54;:89;;;;;43300:19;43288:8;:31;;43230:89;43226:418;;;43334:11;-1:-1:-1;;;;;43327:27:5;;43361:19;43327:56;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43327:56:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;43427:21:5;;43389:89;;;;;;;;;;;;-1:-1:-1;;;43389:89:5;;;;;;-1:-1:-1;43403:22:5;;-1:-1:-1;;;;;;43427:21:5;;;;-1:-1:-1;43450:19:5;;43389:13;:89::i;:::-;43496:19;43484:31;;;;43226:418;;;43587:21;;43533:105;;;;;;;;;;;;-1:-1:-1;;;43533:105:5;;;;;;43551:22;;43575:10;;-1:-1:-1;;;;;43587:21:5;;43610:19;;43533:17;:105::i;:::-;43656:18;;43652:126;;43730:21;;43681:92;;;;;;;;;;;;-1:-1:-1;;;43681:92:5;;;;;;43699:17;;43718:10;;-1:-1:-1;;;;;43730:21:5;;43753:13;;43681:17;:92::i;:::-;42095:1686;;;;;;;;;;;;:::o;32980:473::-;33046:18;;33100;33092:33;;;;-1:-1:-1;;;33092:33:5;;;;;;;;;33130:17;:15;:17::i;:::-;33167:33;33179:20;33197:1;33179:17;:20::i;33167:33::-;33152:48;-1:-1:-1;33217:43:5;33152:48;33217:25;:13;33235:6;33217:25;:17;:25;:::i;:43::-;33204:56;-1:-1:-1;33269:9:5;33265:185;;33290:83;33308:16;;;;;;;;;-1:-1:-1;;;;;33308:16:5;33326:10;33346:4;33353:13;33290:83;;;;;;;;;;;;;-1:-1:-1;;;33290:83:5;;;:17;:83::i;:::-;33265:185;;;33396:17;;;;;;;;;-1:-1:-1;;;;;33396:17:5;-1:-1:-1;;;;;33389:33:5;;33429:13;33389:56;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33389:56:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33389:56:5;;;;;33265:185;32980:473;;;:::o;2167:422:0:-;2284:7;-1:-1:-1;;;;;2305:17:0;;2297:32;;;;-1:-1:-1;;;2297:32:0;;;;;;;;;-1:-1:-1;;;;;2353:13:0;;2334:16;2353:13;;;:8;:13;;;;;;:31;;2371:12;2353:31;:17;:31;:::i;:::-;-1:-1:-1;;;;;2388:13:0;;;;;;:8;:13;;;;;:24;;;2432:12;;2334:50;;-1:-1:-1;2432:30:0;;2449:12;2432:30;:16;:30;:::i;:::-;2417:12;:45;2472;;-1:-1:-1;;;;;2472:45:0;;;;;;;2482:12;;2496;;2510:6;;2472:45;;;;;;;;;;2547:3;-1:-1:-1;;;;;2526:39:0;2543:1;-1:-1:-1;;;;;2526:39:0;;2552:12;2526:39;;;;;;;;;;;;;;;2577:8;2167:422;-1:-1:-1;;;;;2167:422:0:o;1774:192:146:-;1830:6;1853:5;;;1871:6;;;;;;:16;;;1886:1;1881;:6;;1871:16;1870:38;;;;1897:1;1893;:5;:14;;;;;1906:1;1902;:5;1893:14;1862:87;;;;-1:-1:-1;;;1862:87:146;;;;;;;;422:488;478:6;694;690:30;;-1:-1:-1;714:1:146;707:8;;690:30;734:1;-1:-1:-1;;734:7:146;:27;;;;;-1:-1:-1;;;745:1:146;:16;734:27;732:30;724:82;;;;-1:-1:-1;;;724:82:146;;;;;;;;;822:5;;;826:1;822;:5;:1;839:5;;;;;:10;831:62;;;;-1:-1:-1;;;831:62:146;;;;;;;;1331:237;1387:6;1407;1399:51;;;;-1:-1:-1;;;1399:51:146;;;;;;;;;1464:1;-1:-1:-1;;1464:7:146;:27;;;;;-1:-1:-1;;;1475:1:146;:16;1464:27;1462:30;1454:76;;;;-1:-1:-1;;;1454:76:146;;;;;;;;;1535:8;1550:1;1546;:5;;;;;;;1331:237;-1:-1:-1;;;;1331:237:146:o;2166:189::-;2222:6;2245:5;;;2263:6;;;;;;:16;;;2278:1;2273;:6;;2263:16;2262:38;;;;2289:1;2285;:5;:14;;;;;2298:1;2294;:5;2285:14;2254:84;;;;-1:-1:-1;;;2254:84:146;;;;;;;;3070:641:0;3256:38;;;;;;;;;;;-1:-1:-1;;;3256:38:0;;;;;;;;-1:-1:-1;;;;;3256:14:0;;3188:7;3256:14;;;:8;:14;;;;;;;3188:7;;3256:38;;:14;3275:12;;3256:38;:18;:38;:::i;:::-;3237:57;;3381:2;3369:8;:14;3365:140;;3457:26;:12;3474:8;3457:26;:16;:26;:::i;:::-;3442:41;;3499:1;3488:12;;3365:140;-1:-1:-1;;;;;3508:14:0;;;;;;:8;:14;;;;;:25;;;3553:12;;:30;;3570:12;3553:30;:16;:30;:::i;:::-;3538:12;:45;3593:46;;-1:-1:-1;;;;;3593:46:0;;;;;;;3604:12;;3618;;3632:6;;3593:46;;;;;;;;;;3671:1;-1:-1:-1;;;;;3648:40:0;3657:4;-1:-1:-1;;;;;3648:40:0;;3675:12;3648:40;;;;;;;45987:292:5;46097:12;46111:23;46138:5;-1:-1:-1;;;;;46138:10:5;46149:4;46138:16;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;46096:58:5;;;;46166:7;46175:8;46158:26;;;;;-1:-1:-1;;;46158:26:5;;;;;;;;;;-1:-1:-1;46193:17:5;;:22;46189:87;;46241:10;46230:30;;;;;;;;;;;;;;46262:8;46222:49;;;;;-1:-1:-1;;;46222:49:5;;;;;;;;;45306:253;45467:77;;45440:115;;45460:5;;-1:-1:-1;;;45490:35:5;45467:77;;45527:4;;45533:2;;45537:6;;45467:77;;;;99:1487:4;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;99:1487:4;;;-1:-1:-1;;99:1487:4:o;:::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;99:1487:4;;;-1:-1:-1;;99:1487:4:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;301:352;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;-1:-1;469:20;;-1:-1;;;;;498:30;;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;586:2;391:262;;;;;;1051:722;;1179:3;1172:4;1164:6;1160:17;1156:27;1146:2;;1197:1;1194;1187:12;1146:2;1227:6;1221:13;1249:80;1264:64;1321:6;1264:64;;;1249:80;;;1240:89;;1346:5;1371:6;1364:5;1357:21;1401:4;1393:6;1389:17;1379:27;;1423:4;1418:3;1414:14;1407:21;;1476:6;1523:3;1515:4;1507:6;1503:17;1498:3;1494:27;1491:36;1488:2;;;1540:1;1537;1530:12;1488:2;1565:1;1550:217;1575:6;1572:1;1569:13;1550:217;;;1633:3;1655:48;1699:3;1687:10;1655:48;;;1643:61;;-1:-1;1727:4;1718:14;;;;1746;;;;;1597:1;1590:9;1550:217;;1826:783;;1967:3;1960:4;1952:6;1948:17;1944:27;1934:2;;1985:1;1982;1975:12;1934:2;2022:6;2009:20;2044:104;2059:88;2140:6;2059:88;;2044:104;2035:113;;2165:5;2190:6;2183:5;2176:21;2220:4;2212:6;2208:17;2198:27;;2242:4;2237:3;2233:14;2226:21;;2295:6;2344:3;2334:6;2326;2322:19;2317:3;2313:29;2310:38;2307:2;;;2361:1;2358;2351:12;2307:2;2386:1;2371:232;2396:6;2393:1;2390:13;2371:232;;;2454:3;2476:61;2533:3;2521:10;2476:61;;;2464:74;;-1:-1;2561:4;2552:14;;;;2589:6;2580:16;;;;;2418:1;2411:9;2371:232;;2617:124;2681:20;;2706:30;2681:20;2706:30;;2748:128;2823:13;;2841:30;2823:13;2841:30;;2883:130;2950:20;;2975:33;2950:20;2975:33;;3020:134;3098:13;;3116:33;3098:13;3116:33;;3175:336;;;3289:3;3282:4;3274:6;3270:17;3266:27;3256:2;;3307:1;3304;3297:12;3256:2;-1:-1;3327:20;;-1:-1;;;;;3356:30;;3353:2;;;3399:1;3396;3389:12;3353:2;3433:4;3425:6;3421:17;3409:29;;3484:3;3476:4;3468:6;3464:17;3454:8;3450:32;3447:41;3444:2;;;3501:1;3498;3491:12;3520:440;;3621:3;3614:4;3606:6;3602:17;3598:27;3588:2;;3639:1;3636;3629:12;3588:2;3676:6;3663:20;3698:64;3713:48;3754:6;3713:48;;3698:64;3689:73;;3782:6;3775:5;3768:21;3818:4;3810:6;3806:17;3851:4;3844:5;3840:16;3886:3;3877:6;3872:3;3868:16;3865:25;3862:2;;;3903:1;3900;3893:12;3862:2;3913:41;3947:6;3942:3;3937;3913:41;;;3581:379;;;;;;;;4460:1384;;4573:6;4561:9;4556:3;4552:19;4548:32;4545:2;;;4593:1;4590;4583:12;4545:2;4611:22;4626:6;4611:22;;;4602:31;-1:-1;4681:1;4713:49;4758:3;4738:9;4713:49;;;4688:75;;-1:-1;4826:2;4859:46;4901:3;4877:22;;;4859:46;;;4852:4;4845:5;4841:16;4834:72;4784:133;4968:2;5001:49;5046:3;5037:6;5026:9;5022:22;5001:49;;;4994:4;4987:5;4983:16;4976:75;4927:135;5117:2;5150:49;5195:3;5186:6;5175:9;5171:22;5150:49;;;5143:4;5136:5;5132:16;5125:75;5072:139;5272:3;5306:49;5351:3;5342:6;5331:9;5327:22;5306:49;;;5299:4;5292:5;5288:16;5281:75;5221:146;5429:3;5463:49;5508:3;5499:6;5488:9;5484:22;5463:49;;;5456:4;5449:5;5445:16;5438:75;5377:147;5587:3;5621:49;5666:3;5657:6;5646:9;5642:22;5621:49;;;5614:4;5607:5;5603:16;5596:75;5534:148;5739:3;5773:49;5818:3;5809:6;5798:9;5794:22;5773:49;;;5766:4;5759:5;5755:16;5748:75;5692:142;4539:1305;;;;;6129:241;;6233:2;6221:9;6212:7;6208:23;6204:32;6201:2;;;6249:1;6246;6239:12;6201:2;6284:1;6301:53;6346:7;6326:9;6301:53;;6377:263;;6492:2;6480:9;6471:7;6467:23;6463:32;6460:2;;;6508:1;6505;6498:12;6460:2;6543:1;6560:64;6616:7;6596:9;6560:64;;6647:366;;;6768:2;6756:9;6747:7;6743:23;6739:32;6736:2;;;6784:1;6781;6774:12;6736:2;6819:1;6836:53;6881:7;6861:9;6836:53;;;6826:63;;6798:97;6926:2;6944:53;6989:7;6980:6;6969:9;6965:22;6944:53;;;6934:63;;6905:98;6730:283;;;;;;7020:491;;;;7158:2;7146:9;7137:7;7133:23;7129:32;7126:2;;;7174:1;7171;7164:12;7126:2;7209:1;7226:53;7271:7;7251:9;7226:53;;;7216:63;;7188:97;7316:2;7334:53;7379:7;7370:6;7359:9;7355:22;7334:53;;;7324:63;;7295:98;7424:2;7442:53;7487:7;7478:6;7467:9;7463:22;7442:53;;;7432:63;;7403:98;7120:391;;;;;;7518:366;;;7639:2;7627:9;7618:7;7614:23;7610:32;7607:2;;;7655:1;7652;7645:12;7607:2;7690:1;7707:53;7752:7;7732:9;7707:53;;;7697:63;;7669:97;7797:2;7815:53;7860:7;7851:6;7840:9;7836:22;7815:53;;7891:485;;;;8026:2;8014:9;8005:7;8001:23;7997:32;7994:2;;;8042:1;8039;8032:12;7994:2;8077:1;8094:53;8139:7;8119:9;8094:53;;;8084:63;;8056:97;8184:2;8202:53;8247:7;8238:6;8227:9;8223:22;8202:53;;;8192:63;;8163:98;8292:2;8310:50;8352:7;8343:6;8332:9;8328:22;8310:50;;8383:672;;;;;8571:2;8559:9;8550:7;8546:23;8542:32;8539:2;;;8587:1;8584;8577:12;8539:2;8622:31;;-1:-1;;;;;8662:30;;8659:2;;;8705:1;8702;8695:12;8659:2;8733:80;8805:7;8796:6;8785:9;8781:22;8733:80;;;8723:90;;;;8601:218;8878:2;8867:9;8863:18;8850:32;-1:-1;;;;;8894:6;8891:30;8888:2;;;8934:1;8931;8924:12;8888:2;8962:77;9031:7;9022:6;9011:9;9007:22;8962:77;;;8533:522;;;;-1:-1;8952:87;-1:-1;;;;8533:522;9062:392;;9202:2;9190:9;9181:7;9177:23;9173:32;9170:2;;;9218:1;9215;9208:12;9170:2;9253:24;;-1:-1;;;;;9286:30;;9283:2;;;9329:1;9326;9319:12;9283:2;9349:89;9430:7;9421:6;9410:9;9406:22;9349:89;;9461:544;;;9628:2;9616:9;9607:7;9603:23;9599:32;9596:2;;;9644:1;9641;9634:12;9596:2;9679:31;;-1:-1;;;;;9719:30;;9716:2;;;9762:1;9759;9752:12;9716:2;9782:102;9876:7;9867:6;9856:9;9852:22;9782:102;;;9772:112;;9658:232;9921:2;9939:50;9981:7;9972:6;9961:9;9957:22;9939:50;;10012:235;;10113:2;10101:9;10092:7;10088:23;10084:32;10081:2;;;10129:1;10126;10119:12;10081:2;10164:1;10181:50;10223:7;10203:9;10181:50;;10254:257;;10366:2;10354:9;10345:7;10341:23;10337:32;10334:2;;;10382:1;10379;10372:12;10334:2;10417:1;10434:61;10487:7;10467:9;10434:61;;10518:1225;;;;;;;;;10750:3;10738:9;10729:7;10725:23;10721:33;10718:2;;;10767:1;10764;10757:12;10718:2;10802:1;10819:53;10864:7;10844:9;10819:53;;;10809:63;;10781:97;10909:2;10927:53;10972:7;10963:6;10952:9;10948:22;10927:53;;;10917:63;;10888:98;11017:2;11035:53;11080:7;11071:6;11060:9;11056:22;11035:53;;;11025:63;;10996:98;11125:2;11143:53;11188:7;11179:6;11168:9;11164:22;11143:53;;;11133:63;;11104:98;11233:3;11252:53;11297:7;11288:6;11277:9;11273:22;11252:53;;;11242:63;;11212:99;11342:3;11361:53;11406:7;11397:6;11386:9;11382:22;11361:53;;;11351:63;;11321:99;11451:3;11470:53;11515:7;11506:6;11495:9;11491:22;11470:53;;;11460:63;;11430:99;11588:3;11577:9;11573:19;11560:33;-1:-1;;;;;11605:6;11602:30;11599:2;;;11645:1;11642;11635:12;11599:2;11665:62;11719:7;11710:6;11699:9;11695:22;11665:62;;;11655:72;;11539:194;10712:1031;;;;;;;;;;;;11750:1371;;;;;;;;;;;12009:3;11997:9;11988:7;11984:23;11980:33;11977:2;;;12026:1;12023;12016:12;11977:2;12061:1;12078:53;12123:7;12103:9;12078:53;;;12068:63;;12040:97;12168:2;12186:53;12231:7;12222:6;12211:9;12207:22;12186:53;;;12176:63;;12147:98;12276:2;12294:53;12339:7;12330:6;12319:9;12315:22;12294:53;;;12284:63;;12255:98;12384:2;12402:53;12447:7;12438:6;12427:9;12423:22;12402:53;;;12392:63;;12363:98;12492:3;12511:53;12556:7;12547:6;12536:9;12532:22;12511:53;;;12501:63;;12471:99;12601:3;12620:53;12665:7;12656:6;12645:9;12641:22;12620:53;;;12610:63;;12580:99;12710:3;12729:53;12774:7;12765:6;12754:9;12750:22;12729:53;;;12719:63;;12689:99;12819:3;12838:53;12883:7;12874:6;12863:9;12859:22;12838:53;;;12828:63;;12798:99;12956:3;12945:9;12941:19;12928:33;-1:-1;;;;;12973:6;12970:30;12967:2;;;13013:1;13010;13003:12;12967:2;13041:64;13097:7;13088:6;13077:9;13073:22;13041:64;;;13031:74;;;;12907:204;11971:1150;;;;;;;;;;;;;;13128:1225;;;;;;;;;13360:3;13348:9;13339:7;13335:23;13331:33;13328:2;;;13377:1;13374;13367:12;13328:2;13412:1;13429:53;13474:7;13454:9;13429:53;;;13419:63;;13391:97;13519:2;13537:53;13582:7;13573:6;13562:9;13558:22;13537:53;;;13527:63;;13498:98;13627:2;13645:53;13690:7;13681:6;13670:9;13666:22;13645:53;;;13635:63;;13606:98;13735:2;13753:53;13798:7;13789:6;13778:9;13774:22;13753:53;;;13743:63;;13714:98;13843:3;13862:53;13907:7;13898:6;13887:9;13883:22;13862:53;;;13852:63;;13822:99;13952:3;13971:53;14016:7;14007:6;13996:9;13992:22;13971:53;;;13961:63;;13931:99;14061:3;14080:53;14125:7;14116:6;14105:9;14101:22;14080:53;;14360:347;;14474:2;14462:9;14453:7;14449:23;14445:32;14442:2;;;14490:1;14487;14480:12;14442:2;14525:31;;-1:-1;;;;;14565:30;;14562:2;;;14608:1;14605;14598:12;14562:2;14628:63;14683:7;14674:6;14663:9;14659:22;14628:63;;14714:466;;;14842:2;14830:9;14821:7;14817:23;14813:32;14810:2;;;14858:1;14855;14848:12;14810:2;14893:31;;-1:-1;;;;;14933:30;;14930:2;;;14976:1;14973;14966:12;14930:2;14996:63;15051:7;15042:6;15031:9;15027:22;14996:63;;15187:241;;15291:2;15279:9;15270:7;15266:23;15262:32;15259:2;;;15307:1;15304;15297:12;15259:2;15342:1;15359:53;15404:7;15384:9;15359:53;;15435:263;;15550:2;15538:9;15529:7;15525:23;15521:32;15518:2;;;15566:1;15563;15556:12;15518:2;15601:1;15618:64;15674:7;15654:9;15618:64;;15705:366;;;15826:2;15814:9;15805:7;15801:23;15797:32;15794:2;;;15842:1;15839;15832:12;15794:2;15877:1;15894:53;15939:7;15919:9;15894:53;;16078:399;;;16210:2;16198:9;16189:7;16185:23;16181:32;16178:2;;;16226:1;16223;16216:12;16178:2;16261:1;16278:64;16334:7;16314:9;16278:64;;;16268:74;;16240:108;16379:2;16397:64;16453:7;16444:6;16433:9;16429:22;16397:64;;16484:491;;;;16622:2;16610:9;16601:7;16597:23;16593:32;16590:2;;;16638:1;16635;16628:12;16590:2;16673:1;16690:53;16735:7;16715:9;16690:53;;;16680:63;;16652:97;16780:2;16798:53;16843:7;16834:6;16823:9;16819:22;16798:53;;;16788:63;;16759:98;16888:2;16906:53;16951:7;16942:6;16931:9;16927:22;16906:53;;16982:617;;;;;17137:3;17125:9;17116:7;17112:23;17108:33;17105:2;;;17154:1;17151;17144:12;17105:2;17189:1;17206:53;17251:7;17231:9;17206:53;;;17196:63;;17168:97;17296:2;17314:53;17359:7;17350:6;17339:9;17335:22;17314:53;;;17304:63;;17275:98;17404:2;17422:53;17467:7;17458:6;17447:9;17443:22;17422:53;;;17412:63;;17383:98;17512:2;17530:53;17575:7;17566:6;17555:9;17551:22;17530:53;;;17520:63;;17491:98;17099:500;;;;;;;;17606:743;;;;;;17778:3;17766:9;17757:7;17753:23;17749:33;17746:2;;;17795:1;17792;17785:12;17746:2;17830:1;17847:53;17892:7;17872:9;17847:53;;;17837:63;;17809:97;17937:2;17955:53;18000:7;17991:6;17980:9;17976:22;17955:53;;;17945:63;;17916:98;18045:2;18063:53;18108:7;18099:6;18088:9;18084:22;18063:53;;;18053:63;;18024:98;18153:2;18171:53;18216:7;18207:6;18196:9;18192:22;18171:53;;;18161:63;;18132:98;18261:3;18280:53;18325:7;18316:6;18305:9;18301:22;18280:53;;;18270:63;;18240:99;17740:609;;;;;;;;;18356:946;;;;;;;18556:3;18544:9;18535:7;18531:23;18527:33;18524:2;;;18573:1;18570;18563:12;18524:2;18608:1;18625:64;18681:7;18661:9;18625:64;;;18615:74;;18587:108;18726:2;18744:64;18800:7;18791:6;18780:9;18776:22;18744:64;;;18734:74;;18705:109;18845:2;18863:64;18919:7;18910:6;18899:9;18895:22;18863:64;;;18853:74;;18824:109;18964:2;18982:64;19038:7;19029:6;19018:9;19014:22;18982:64;;;18972:74;;18943:109;19083:3;19102:64;19158:7;19149:6;19138:9;19134:22;19102:64;;;19092:74;;19062:110;19203:3;19222:64;19278:7;19269:6;19258:9;19254:22;19222:64;;;19212:74;;19182:110;18518:784;;;;;;;;;19309:995;;;;;;;;19515:3;19503:9;19494:7;19490:23;19486:33;19483:2;;;19532:1;19529;19522:12;19483:2;19567:1;19584:53;19629:7;19609:9;19584:53;;;19574:63;;19546:97;19674:2;19692:53;19737:7;19728:6;19717:9;19713:22;19692:53;;;19682:63;;19653:98;19782:2;19800:53;19845:7;19836:6;19825:9;19821:22;19800:53;;;19790:63;;19761:98;19890:2;19908:53;19953:7;19944:6;19933:9;19929:22;19908:53;;;19898:63;;19869:98;19998:3;20017:53;20062:7;20053:6;20042:9;20038:22;20017:53;;;20007:63;;19977:99;20107:3;20126:53;20171:7;20162:6;20151:9;20147:22;20126:53;;;20116:63;;20086:99;20216:3;20235:53;20280:7;20271:6;20260:9;20256:22;20235:53;;;20225:63;;20195:99;19477:827;;;;;;;;;;;20312:173;;20399:46;20441:3;20433:6;20399:46;;;-1:-1;;20474:4;20465:14;;20392:93;20494:173;;20581:46;20623:3;20615:6;20581:46;;20676:275;;20811:98;20905:3;20897:6;20811:98;;;-1:-1;;20938:6;20929:16;;20804:147;21141:142;21232:45;21271:5;21232:45;;;21227:3;21220:58;21214:69;;;21290:103;21363:24;21381:5;21363:24;;21520:152;21621:45;21641:24;21659:5;21641:24;;;21621:45;;21712:660;21845:52;21891:5;21845:52;;;21910:84;21987:6;21982:3;21910:84;;;21903:91;;22015:54;22063:5;22015:54;;;22089:7;22117:1;22102:258;22127:6;22124:1;22121:13;22102:258;;;22194:6;22188:13;22215:63;22274:3;22259:13;22215:63;;;22208:70;;22295:58;22346:6;22295:58;;;22285:68;-1:-1;;22149:1;22142:9;22102:258;;22411:690;;22556:54;22604:5;22556:54;;;22623:86;22702:6;22697:3;22623:86;;;22616:93;;22730:56;22780:5;22730:56;;;22806:7;22834:1;22819:260;22844:6;22841:1;22838:13;22819:260;;;22911:6;22905:13;22932:63;22991:3;22976:13;22932:63;;;22925:70;;23012:60;23065:6;23012:60;;;23002:70;-1:-1;;22866:1;22859:9;22819:260;;;-1:-1;23092:3;;22535:566;-1:-1;;;;;22535:566;23194:882;;23387:78;23459:5;23387:78;;;23478:110;23581:6;23576:3;23478:110;;;23471:117;;23609:80;23683:5;23609:80;;;23709:7;23737:1;23722:332;23747:6;23744:1;23741:13;23722:332;;;23814:6;23808:13;23835:111;23942:3;23927:13;23835:111;;;23828:118;;23963:84;24040:6;23963:84;;;23953:94;-1:-1;;23769:1;23762:9;23722:332;;24117:660;24250:52;24296:5;24250:52;;;24315:84;24392:6;24387:3;24315:84;;;24308:91;;24420:54;24468:5;24420:54;;;24494:7;24522:1;24507:258;24532:6;24529:1;24526:13;24507:258;;;24599:6;24593:13;24620:63;24679:3;24664:13;24620:63;;;24613:70;;24700:58;24751:6;24700:58;;;24690:68;-1:-1;;24554:1;24547:9;24507:258;;24785:94;24852:21;24867:5;24852:21;;24997:140;25092:39;25109:21;25124:5;25109:21;;;25092:39;;25144:103;25217:24;25235:5;25217:24;;25374:152;25475:45;25495:24;25513:5;25495:24;;;25475:45;;25533:148;25632:43;25651:23;25668:5;25651:23;;25688:343;;25798:38;25830:5;25798:38;;;25848:70;25911:6;25906:3;25848:70;;;25841:77;;25923:52;25968:6;25963:3;25956:4;25949:5;25945:16;25923:52;;;25996:29;26018:6;25996:29;;;25987:39;;;;25778:253;-1:-1;;;25778:253;26038:356;;26166:38;26198:5;26166:38;;;26216:88;26297:6;26292:3;26216:88;;;26209:95;;26309:52;26354:6;26349:3;26342:4;26335:5;26331:16;26309:52;;;26373:16;;;;;26146:248;-1:-1;;26146:248;27586:312;;27746:67;27810:2;27805:3;27746:67;;;-1:-1;;;27826:35;;27889:2;27880:12;;27732:166;-1:-1;;27732:166;27907:301;;28067:66;28131:1;28126:3;28067:66;;;-1:-1;;;28146:25;;28199:2;28190:12;;28053:155;-1:-1;;28053:155;28217:301;;28377:66;28441:1;28436:3;28377:66;;;-1:-1;;;28456:25;;28509:2;28500:12;;28363:155;-1:-1;;28363:155;28527:375;;28687:67;28751:2;28746:3;28687:67;;;28787:34;28767:55;;-1:-1;;;28851:2;28842:12;;28835:30;28893:2;28884:12;;28673:229;-1:-1;;28673:229;28911:327;;29071:67;29135:2;29130:3;29071:67;;;29171:29;29151:50;;29229:2;29220:12;;29057:181;-1:-1;;29057:181;29247:370;;29407:67;29471:2;29466:3;29407:67;;;29507:34;29487:55;;-1:-1;;;29571:2;29562:12;;29555:25;29608:2;29599:12;;29393:224;-1:-1;;29393:224;29626:314;;29786:67;29850:2;29845:3;29786:67;;;-1:-1;;;29866:37;;29931:2;29922:12;;29772:168;-1:-1;;29772:168;29949:300;;30109:66;30173:1;30168:3;30109:66;;;-1:-1;;;30188:24;;30240:2;30231:12;;30095:154;-1:-1;;30095:154;30258:318;;30418:67;30482:2;30477:3;30418:67;;;-1:-1;;;30498:41;;30567:2;30558:12;;30404:172;-1:-1;;30404:172;30585:301;;30745:66;30809:1;30804:3;30745:66;;;-1:-1;;;30824:25;;30877:2;30868:12;;30731:155;-1:-1;;30731:155;30895:301;;31055:66;31119:1;31114:3;31055:66;;;-1:-1;;;31134:25;;31187:2;31178:12;;31041:155;-1:-1;;31041:155;31205:301;;31365:66;31429:1;31424:3;31365:66;;;-1:-1;;;31444:25;;31497:2;31488:12;;31351:155;-1:-1;;31351:155;31515:370;;31675:67;31739:2;31734:3;31675:67;;;31775:34;31755:55;;-1:-1;;;31839:2;31830:12;;31823:25;31876:2;31867:12;;31661:224;-1:-1;;31661:224;31894:321;;32054:67;32118:2;32113:3;32054:67;;;-1:-1;;;32134:44;;32206:2;32197:12;;32040:175;-1:-1;;32040:175;32224:301;;32384:66;32448:1;32443:3;32384:66;;;-1:-1;;;32463:25;;32516:2;32507:12;;32370:155;-1:-1;;32370:155;32534:301;;32694:66;32758:1;32753:3;32694:66;;;-1:-1;;;32773:25;;32826:2;32817:12;;32680:155;-1:-1;;32680:155;32844:315;;33004:67;33068:2;33063:3;33004:67;;;-1:-1;;;33084:38;;33150:2;33141:12;;32990:169;-1:-1;;32990:169;33168:301;;33328:66;33392:1;33387:3;33328:66;;;-1:-1;;;33407:25;;33460:2;33451:12;;33314:155;-1:-1;;33314:155;33478:301;;33638:66;33702:1;33697:3;33638:66;;;-1:-1;;;33717:25;;33770:2;33761:12;;33624:155;-1:-1;;33624:155;33788:370;;33948:67;34012:2;34007:3;33948:67;;;34048:34;34028:55;;-1:-1;;;34112:2;34103:12;;34096:25;34149:2;34140:12;;33934:224;-1:-1;;33934:224;34167:312;;34327:67;34391:2;34386:3;34327:67;;;-1:-1;;;34407:35;;34470:2;34461:12;;34313:166;-1:-1;;34313:166;34488:301;;34648:66;34712:1;34707:3;34648:66;;;-1:-1;;;34727:25;;34780:2;34771:12;;34634:155;-1:-1;;34634:155;34798:301;;34958:66;35022:1;35017:3;34958:66;;;-1:-1;;;35037:25;;35090:2;35081:12;;34944:155;-1:-1;;34944:155;35108:376;;35268:67;35332:2;35327:3;35268:67;;;35368:34;35348:55;;-1:-1;;;35432:2;35423:12;;35416:31;35475:2;35466:12;;35254:230;-1:-1;;35254:230;35493:329;;35653:67;35717:2;35712:3;35653:67;;;35753:31;35733:52;;35813:2;35804:12;;35639:183;-1:-1;;35639:183;35831:310;;35991:67;36055:2;36050:3;35991:67;;;-1:-1;;;36071:33;;36132:2;36123:12;;35977:164;-1:-1;;35977:164;36150:312;;36310:67;36374:2;36369:3;36310:67;;;-1:-1;;;36390:35;;36453:2;36444:12;;36296:166;-1:-1;;36296:166;36471:373;;36631:67;36695:2;36690:3;36631:67;;;36731:34;36711:55;;-1:-1;;;36795:2;36786:12;;36779:28;36835:2;36826:12;;36617:227;-1:-1;;36617:227;36853:324;;37013:67;37077:2;37072:3;37013:67;;;37113:26;37093:47;;37168:2;37159:12;;36999:178;-1:-1;;36999:178;37186:300;;37346:66;37410:1;37405:3;37346:66;;;-1:-1;;;37425:24;;37477:2;37468:12;;37332:154;-1:-1;;37332:154;37495:332;;37655:67;37719:2;37714:3;37655:67;;;37755:34;37735:55;;37818:2;37809:12;;37641:186;-1:-1;;37641:186;37914:1437;38115:23;;38049:6;38040:16;;;38144:63;38044:3;38115:23;38144:63;;;38071:142;38288:4;38281:5;38277:16;38271:23;38300:57;38351:4;38346:3;38342:14;38328:12;38300:57;;;38223:140;38437:4;38430:5;38426:16;38420:23;38449:63;38506:4;38501:3;38497:14;38483:12;38449:63;;;38373:145;38596:4;38589:5;38585:16;38579:23;38608:63;38665:4;38660:3;38656:14;38642:12;38608:63;;;38528:149;38761:4;38754:5;38750:16;38744:23;38773:63;38830:4;38825:3;38821:14;38807:12;38773:63;;;38687:155;38927:4;38920:5;38916:16;38910:23;38939:63;38996:4;38991:3;38987:14;38973:12;38939:63;;;38852:156;39094:4;39087:5;39083:16;39077:23;39106:63;39163:4;39158:3;39154:14;39140:12;39106:63;;;39018:157;39255:4;39248:5;39244:16;39238:23;39267:63;39324:4;39319:3;39315:14;39301:12;39267:63;;39747:107;39826:22;39842:5;39826:22;;39861:370;;40002:75;40073:3;40064:6;40002:75;;;40099:2;40094:3;40090:12;40083:19;;40113:69;40178:3;40169:6;40113:69;;;-1:-1;40204:1;40195:11;;39990:241;-1:-1;;39990:241;40238:383;;40385:75;40456:3;40447:6;40385:75;;;40482:2;40477:3;40473:12;40466:19;;40496:75;40567:3;40558:6;40496:75;;;-1:-1;40593:2;40584:12;;40373:248;-1:-1;;40373:248;40628:378;;40773:73;40842:3;40833:6;40773:73;;;40868:1;40863:3;40859:11;40852:18;;40881:75;40952:3;40943:6;40881:75;;41013:262;;41157:93;41246:3;41237:6;41157:93;;41555:213;41673:2;41658:18;;41687:71;41662:9;41731:6;41687:71;;41775:229;41901:2;41886:18;;41915:79;41890:9;41967:6;41915:79;;42011:324;42157:2;42142:18;;42171:71;42146:9;42215:6;42171:71;;;42253:72;42321:2;42310:9;42306:18;42297:6;42253:72;;42342:340;42496:2;42481:18;;42510:71;42485:9;42554:6;42510:71;;;42592:80;42668:2;42657:9;42653:18;42644:6;42592:80;;42689:435;42863:2;42848:18;;42877:71;42852:9;42921:6;42877:71;;;42959:72;43027:2;43016:9;43012:18;43003:6;42959:72;;;43042;43110:2;43099:9;43095:18;43086:6;43042:72;;43131:647;43355:3;43340:19;;43370:71;43344:9;43414:6;43370:71;;;43452:72;43520:2;43509:9;43505:18;43496:6;43452:72;;;43535;43603:2;43592:9;43588:18;43579:6;43535:72;;;43618;43686:2;43675:9;43671:18;43662:6;43618:72;;;43701:67;43763:3;43752:9;43748:19;43739:6;43701:67;;43785:771;44043:3;44028:19;;44058:71;44032:9;44102:6;44058:71;;;44140:72;44208:2;44197:9;44193:18;44184:6;44140:72;;;44223;44291:2;44280:9;44276:18;44267:6;44223:72;;;44306;44374:2;44363:9;44359:18;44350:6;44306:72;;;44389:73;44457:3;44446:9;44442:19;44433:6;44389:73;;;44473;44541:3;44530:9;44526:19;44517:6;44473:73;;;44014:542;;;;;;;;;;44563:324;44709:2;44694:18;;44723:71;44698:9;44767:6;44723:71;;;44805:72;44873:2;44862:9;44858:18;44849:6;44805:72;;44894:451;45076:2;45061:18;;45090:71;45065:9;45134:6;45090:71;;;45172:72;45240:2;45229:9;45225:18;45216:6;45172:72;;;45255:80;45331:2;45320:9;45316:18;45307:6;45255:80;;45352:361;45520:2;45534:47;;;45505:18;;45595:108;45505:18;45689:6;45595:108;;45720:457;45936:2;45950:47;;;45921:18;;46011:156;45921:18;46153:6;46011:156;;46184:201;46296:2;46281:18;;46310:65;46285:9;46348:6;46310:65;;46392:213;46510:2;46495:18;;46524:71;46499:9;46568:6;46524:71;;46612:1139;47002:3;46987:19;;47017:71;46991:9;47061:6;47017:71;;;47099:72;47167:2;47156:9;47152:18;47143:6;47099:72;;;47182:66;47244:2;47233:9;47229:18;47220:6;47182:66;;;47259:72;47327:2;47316:9;47312:18;47303:6;47259:72;;;47342:119;47456:3;47445:9;47441:19;47432:6;47342:119;;;47472;47586:3;47575:9;47571:19;47562:6;47472:119;;;47640:9;47634:4;47630:20;47624:3;47613:9;47609:19;47602:49;47665:76;47736:4;47727:6;47665:76;;;47657:84;46973:778;-1:-1;;;;;;;;;46973:778;47974:293;48108:2;48122:47;;;48093:18;;48183:74;48093:18;48243:6;48183:74;;48582:407;48773:2;48787:47;;;48758:18;;48848:131;48758:18;48848:131;;48996:407;49187:2;49201:47;;;49172:18;;49262:131;49172:18;49262:131;;49410:407;49601:2;49615:47;;;49586:18;;49676:131;49586:18;49676:131;;49824:407;50015:2;50029:47;;;50000:18;;50090:131;50000:18;50090:131;;50238:407;50429:2;50443:47;;;50414:18;;50504:131;50414:18;50504:131;;50652:407;50843:2;50857:47;;;50828:18;;50918:131;50828:18;50918:131;;51066:407;51257:2;51271:47;;;51242:18;;51332:131;51242:18;51332:131;;51480:407;51671:2;51685:47;;;51656:18;;51746:131;51656:18;51746:131;;51894:407;52085:2;52099:47;;;52070:18;;52160:131;52070:18;52160:131;;52308:407;52499:2;52513:47;;;52484:18;;52574:131;52484:18;52574:131;;52722:407;52913:2;52927:47;;;52898:18;;52988:131;52898:18;52988:131;;53136:407;53327:2;53341:47;;;53312:18;;53402:131;53312:18;53402:131;;53550:407;53741:2;53755:47;;;53726:18;;53816:131;53726:18;53816:131;;53964:407;54155:2;54169:47;;;54140:18;;54230:131;54140:18;54230:131;;54378:407;54569:2;54583:47;;;54554:18;;54644:131;54554:18;54644:131;;54792:407;54983:2;54997:47;;;54968:18;;55058:131;54968:18;55058:131;;55206:407;55397:2;55411:47;;;55382:18;;55472:131;55382:18;55472:131;;55620:407;55811:2;55825:47;;;55796:18;;55886:131;55796:18;55886:131;;56034:407;56225:2;56239:47;;;56210:18;;56300:131;56210:18;56300:131;;56448:407;56639:2;56653:47;;;56624:18;;56714:131;56624:18;56714:131;;56862:407;57053:2;57067:47;;;57038:18;;57128:131;57038:18;57128:131;;57276:407;57467:2;57481:47;;;57452:18;;57542:131;57452:18;57542:131;;57690:407;57881:2;57895:47;;;57866:18;;57956:131;57866:18;57956:131;;58104:407;58295:2;58309:47;;;58280:18;;58370:131;58280:18;58370:131;;58518:407;58709:2;58723:47;;;58694:18;;58784:131;58694:18;58784:131;;58932:407;59123:2;59137:47;;;59108:18;;59198:131;59108:18;59198:131;;59346:407;59537:2;59551:47;;;59522:18;;59612:131;59522:18;59612:131;;59760:407;59951:2;59965:47;;;59936:18;;60026:131;59936:18;60026:131;;60174:407;60365:2;60379:47;;;60350:18;;60440:131;60350:18;60440:131;;60588:407;60779:2;60793:47;;;60764:18;;60854:131;60764:18;60854:131;;61002:407;61193:2;61207:47;;;61178:18;;61268:131;61178:18;61268:131;;61636:324;61782:2;61767:18;;61796:71;61771:9;61840:6;61796:71;;61967:435;62141:2;62126:18;;62155:71;62130:9;62199:6;62155:71;;;62237:72;62305:2;62294:9;62290:18;62281:6;62237:72;;62409:205;62523:2;62508:18;;62537:67;62512:9;62577:6;62537:67;;62621:256;62683:2;62677:9;62709:17;;;-1:-1;;;;;62769:34;;62805:22;;;62766:62;62763:2;;;62841:1;62838;62831:12;62763:2;62857;62850:22;62661:216;;-1:-1;62661:216;62884:304;;-1:-1;;;;;63035:6;63032:30;63029:2;;;63075:1;63072;63065:12;63029:2;-1:-1;63110:4;63098:17;;;63163:15;;62966:222;63530:321;;-1:-1;;;;;63665:6;63662:30;63659:2;;;63705:1;63702;63695:12;63659:2;-1:-1;63836:4;63772;63749:17;;;;-1:-1;;63745:33;63826:15;;63596:255;64291:151;64415:4;64406:14;;64363:79;64735:108;-1:-1;64829:4;;64807:36;64850:137;64953:12;;64924:63;65162:108;-1:-1;65256:4;;65234:36;66289:178;66407:19;;;66456:4;66447:14;;66400:67;67485:91;;67547:24;67565:5;67547:24;;67583:85;67649:13;67642:21;;67625:43;67754:144;-1:-1;;;;;;67815:78;;67798:100;67983:121;-1:-1;;;;;68045:54;;68028:76;68190:81;68261:4;68250:16;;68233:38;68278:129;;68365:37;68396:5;68414:121;68493:37;68524:5;68493:37;;68658:145;68739:6;68734:3;68729;68716:30;-1:-1;68795:1;68777:16;;68770:27;68709:94;68812:268;68877:1;68884:101;68898:6;68895:1;68892:13;68884:101;;;68965:11;;;68959:18;68946:11;;;68939:39;68920:2;68913:10;68884:101;;;69000:6;68997:1;68994:13;68991:2;;;-1:-1;;69065:1;69047:16;;69040:27;68861:219;69088:95;;69152:26;69172:5;69152:26;;69190:90;;69251:24;69269:5;69251:24;;69448:89;;69512:20;69526:5;69512:20;;69625:88;;69687:21;69702:5;69687:21;;69720:97;69808:2;69788:14;-1:-1;;69784:28;;69768:49;69825:96;69900:3;69896:15;;69868:53;69929:94;70003:2;69999:14;;69971:52;70031:117;70100:24;70118:5;70100:24;;;70093:5;70090:35;70080:2;;70139:1;70136;70129:12;70155:111;70221:21;70236:5;70221:21;;70273:117;70342:24;70360:5;70342:24;"
            },
            "methodIdentifiers": {
              "VERSION()": "ffa1ad74",
              "_supplyInterestRate(uint256,uint256)": "7288b344",
              "admin()": "f851a440",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "assetBalanceOf(address)": "06b3efd6",
              "avgBorrowInterestRate()": "44a4a003",
              "balanceOf(address)": "70a08231",
              "baseRate()": "1f68f20a",
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": "2ea295fa",
              "borrowInterestRate()": "8325a1c0",
              "burn(address,uint256)": "9dc29fac",
              "burn(address,uint256,bool)": "76fd4fdf",
              "checkPause(string)": "be194217",
              "checkPriceDivergence(uint256,uint256,uint256,address,uint256)": "18498b1d",
              "checkpointPrice(address)": "eebc5081",
              "checkpointSupply()": "7b7933b4",
              "decimals()": "313ce567",
              "disableLoanParams(address[],bool[])": "e697d2ee",
              "earlyAccessToken()": "ca37e666",
              "getBorrowAmountForDeposit(uint256,uint256,address)": "04797930",
              "getDepositAmountForBorrow(uint256,uint256,address)": "631a3ef8",
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": "6b40cd40",
              "getMaxEscrowAmount(uint256)": "829b38f4",
              "initialPrice()": "1d0806ae",
              "isOwner()": "8f32d59b",
              "kinkLevel()": "56e07d70",
              "liquidityMiningAddress()": "8ee6c4e6",
              "loanParamsIds(uint256)": "3291c11a",
              "loanTokenAddress()": "797bf385",
              "lowUtilBaseRate()": "d759dbeb",
              "lowUtilRateMultiplier()": "7e37c08c",
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": "28a02f19",
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": "f6b69f99",
              "marketLiquidity()": "612ef80b",
              "maxScaleRate()": "ef2b0b39",
              "mint(address,uint256)": "40c10f19",
              "mint(address,uint256,bool)": "d1a1beb4",
              "name()": "06fdde03",
              "nextBorrowInterestRate(uint256)": "b9fe1a8f",
              "nextSupplyInterestRate(uint256)": "d65a5021",
              "owner()": "8da5cb5b",
              "pauser()": "9fd0506d",
              "profitOf(address)": "54198ce9",
              "rateMultiplier()": "330691ac",
              "setAdmin(address)": "704b6c02",
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "d97206a4",
              "setLiquidityMiningAddress(address)": "cb926cb3",
              "setPauser(address)": "2d88af4a",
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": "d8f06c83",
              "sovrynContractAddress()": "06947a3a",
              "supplyInterestRate()": "09ec6b6b",
              "symbol()": "95d89b41",
              "targetLevel()": "ba0e43bf",
              "target_()": "9bda3a98",
              "toggleFunctionPause(string,bool)": "e3cded61",
              "tokenPrice()": "7ff9b596",
              "totalAssetBorrow()": "20f6d07c",
              "totalAssetSupply()": "8fb807c5",
              "totalSupply()": "18160ddd",
              "totalSupplyInterestRate(uint256)": "12416898",
              "transactionLimit(address)": "e41b07e3",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "wrbtcTokenAddress()": "2f6b600d"
            }
          },
          "userdoc": {
            "methods": {
              "_supplyInterestRate(uint256,uint256)": {
                "notice": "Compute the next supply interest adjustment."
              },
              "allowance(address,address)": {
                "notice": "Get the amount of iTokens allowed to be spent by a  given account on behalf of the owner."
              },
              "approve(address,uint256)": {
                "notice": "Set an amount as the allowance of `spender` over the caller's tokens.\t * Returns a boolean value indicating whether the operation succeeded.\t * 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\t * Emits an {Approval} event."
              },
              "assetBalanceOf(address)": {
                "notice": "Get loan token balance."
              },
              "avgBorrowInterestRate()": {
                "notice": "Wrapper for average borrow interest."
              },
              "balanceOf(address)": {
                "notice": "Get the amount of iTokens owned by an account."
              },
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": {
                "notice": "Borrow funds from the pool. The underlying loan token may not be used as collateral."
              },
              "borrowInterestRate()": {
                "notice": "Get borrow interest rate. The minimum rate the next base protocol borrower will receive for variable-rate loans."
              },
              "burn(address,uint256)": {
                "notice": "Burn loan token wrapper. Adds a pay-out transfer after calling low level _burnToken function. In order to withdraw funds to the pool, call burn on the respective loan token contract. This will burn your loan tokens and send you the underlying token in exchange."
              },
              "burn(address,uint256,bool)": {
                "notice": "withdraws from the lending pool and optionally retrieves the pool tokens from the        Liquidity Mining Contract"
              },
              "checkPause(string)": {
                "notice": "Check whether a function is paused."
              },
              "checkpointPrice(address)": {
                "notice": "Getter for the price checkpoint mapping."
              },
              "disableLoanParams(address[],bool[])": {
                "notice": "Disable loan token parameters."
              },
              "getBorrowAmountForDeposit(uint256,uint256,address)": {
                "notice": "Calculate the borrow allowed for a given deposit.\t * The function for doing over-collateralized borrows against loan tokens expects a minimum amount of collateral be sent to satisfy collateral requirements of the loan, for borrow amount, interest rate, and initial loan duration. To determine appropriate values to pass to this function for a given loan, `getDepositAmountForBorrow` and 'getBorrowAmountForDeposit` are required."
              },
              "getDepositAmountForBorrow(uint256,uint256,address)": {
                "notice": "Calculate the deposit required to a given borrow.\t * The function for doing over-collateralized borrows against loan tokens expects a minimum amount of collateral be sent to satisfy collateral requirements of the loan, for borrow amount, interest rate, and initial loan duration. To determine appropriate values to pass to this function for a given loan, `getDepositAmountForBorrow` and 'getBorrowAmountForDeposit` are required."
              },
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": {
                "notice": "Get margin information on a trade."
              },
              "getMaxEscrowAmount(uint256)": {
                "notice": "Compute the maximum deposit amount under current market conditions."
              },
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": {
                "notice": "Borrow and immediately get into a position.\t * Trading on margin is used to increase an investor's buying power. Margin is the amount of money required to open a position, while leverage is the multiple of exposure to account equity.\t * Leverage allows you to trade positions LARGER than the amount of money in your trading account. Leverage is expressed as a ratio.\t * When trading on margin, investors first deposit some token that then serves as collateral for the loan, and then pay ongoing interest payments on the money they borrow.\t * Margin trading = taking a loan and swapping it: In order to open a margin trade position, 1.- The user calls marginTrade on the loan token contract. 2.- The loan token contract provides the loan and sends it for processing   to the protocol proxy contract. 3.- The protocol proxy contract uses the module LoanOpening to create a   position and swaps the loan tokens to collateral tokens. 4.- The Sovryn Swap network looks up the correct converter and swaps the   tokens. If successful, the position is being held by the protocol proxy contract, which is why positions need to be closed at the protocol proxy contract."
              },
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": {
                "notice": "Wrapper for marginTrade invoking setAffiliatesReferrer to track  referral trade by affiliates program."
              },
              "marketLiquidity()": {
                "notice": "Get current liquidity. A part of total funds supplied are borrowed. Liquidity = supply - borrow"
              },
              "mint(address,uint256)": {
                "notice": "Mint loan token wrapper. Adds a check before calling low level _mintToken function. The function retrieves the tokens from the message sender, so make sure to first approve the loan token contract to access your funds. This is done by calling approve(address spender, uint amount) on the ERC20 token contract, where spender is the loan token contract address and amount is the amount to be deposited."
              },
              "mint(address,uint256,bool)": {
                "notice": "deposit into the lending pool and optionally participate at the Liquidity Mining Program"
              },
              "nextBorrowInterestRate(uint256)": {
                "notice": "Public wrapper for internal call."
              },
              "nextSupplyInterestRate(uint256)": {
                "notice": "Get interest rate w/ added supply."
              },
              "profitOf(address)": {
                "notice": "Wrapper for internal _profitOf low level function."
              },
              "setAdmin(address)": {
                "notice": "Set admin account."
              },
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": {
                "notice": "Set loan token parameters about the demand curve."
              },
              "setLiquidityMiningAddress(address)": {
                "notice": "sets the liquidity mining contract address"
              },
              "setPauser(address)": {
                "notice": "Set pauser account."
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": {
                "notice": "Set loan token parameters."
              },
              "supplyInterestRate()": {
                "notice": "Get interest rate."
              },
              "toggleFunctionPause(string,bool)": {
                "notice": "Set the pause flag for a function to true or false."
              },
              "tokenPrice()": {
                "notice": "Loan token price calculation considering unpaid interests."
              },
              "totalAssetBorrow()": {
                "notice": "Get the total amount of loan tokens on debt. Calls protocol getTotalPrincipal function. In the context of borrowing, principal is the initial size of a loan. It can also be the amount still owed on a loan. If you take out a $50,000 mortgage, for example, the principal is $50,000. If you pay off $30,000, the principal balance now consists of the remaining $20,000."
              },
              "totalAssetSupply()": {
                "notice": "Get the total amount of loan tokens on supply."
              },
              "totalSupply()": {
                "notice": "Get the total supply of iTokens."
              },
              "totalSupplyInterestRate(uint256)": {
                "notice": "Get interest rate w/ added supply assets."
              },
              "transfer(address,uint256)": {
                "notice": "Transfer tokens wrapper. Sets token owner the msg.sender. Sets maximun allowance uint256(-1) to ensure tokens are always transferred."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Moves `_value` loan tokens from `_from` to `_to` using the allowance mechanism. Calls internal _internalTransferFrom function."
              }
            }
          }
        }
      },
      "contracts/connectors/loantoken/LoanTokenLogicStandard.sol": {
        "LoanTokenLogicStandard": {
          "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": "burner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                }
              ],
              "name": "FlashBorrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "minter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "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": false,
                  "internalType": "address[]",
                  "name": "addresses",
                  "type": "address[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "limits",
                  "type": "uint256[]"
                }
              ],
              "name": "SetTransactionLimits",
              "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"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "VERSION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assetBorrow",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "assetSupply",
                  "type": "uint256"
                }
              ],
              "name": "_supplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "assetBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "avgBorrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "borrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "burnAmount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "loanAmountPaid",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "funcId",
                  "type": "string"
                }
              ],
              "name": "checkPause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                }
              ],
              "name": "checkPriceDivergence",
              "outputs": [],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "checkpointPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "checkpointSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "collateralTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "bool[]",
                  "name": "isTorqueLoans",
                  "type": "bool[]"
                }
              ],
              "name": "disableLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "earlyAccessToken",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getBorrowAmountForDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getDepositAmountForBorrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getEstimatedMarginDetails",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                }
              ],
              "name": "getMaxEscrowAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxEscrowAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "initialPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kinkLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidityMiningAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "loanParamsIds",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "loanTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilBaseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilRateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "marginTrade",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "affiliateReferrer",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "marginTradeAffiliate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "marketLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxScaleRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "mintAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                }
              ],
              "name": "nextBorrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "supplyAmount",
                  "type": "uint256"
                }
              ],
              "name": "nextSupplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pauser",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "profitOf",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "setAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_baseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_rateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilBaseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilRateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_targetLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_kinkLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_maxScaleRate",
                  "type": "uint256"
                }
              ],
              "name": "setDemandCurve",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "LMAddress",
                  "type": "address"
                }
              ],
              "name": "setLiquidityMiningAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_pauser",
                  "type": "address"
                }
              ],
              "name": "setPauser",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "id",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bool",
                      "name": "active",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "minInitialMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanParamsStruct.LoanParams[]",
                  "name": "loanParamsList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bool",
                  "name": "areTorqueLoans",
                  "type": "bool"
                }
              ],
              "name": "setupLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynContractAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "supplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "targetLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "target_",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "funcId",
                  "type": "string"
                },
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "name": "toggleFunctionPause",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tokenPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAssetBorrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAssetSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assetSupply",
                  "type": "uint256"
                }
              ],
              "name": "totalSupplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "transactionLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "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"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "_supplyInterestRate(uint256,uint256)": {
                "params": {
                  "assetBorrow": "The amount of loan tokens on debt.",
                  "assetSupply": "The amount of loan tokens supplied."
                },
                "return": "The next supply interest adjustment."
              },
              "allowance(address,address)": {
                "params": {
                  "_owner": "The account owner of the iTokens.",
                  "_spender": "The account allowed to send the iTokens."
                },
                "return": "The number of iTokens an account is allowing the spender  to send on its behalf."
              },
              "approve(address,uint256)": {
                "params": {
                  "_spender": "The account address that will be able to spend the tokens.",
                  "_value": "The amount of tokens allowed to spend."
                }
              },
              "assetBalanceOf(address)": {
                "return": "The user's balance of underlying token."
              },
              "avgBorrowInterestRate()": {
                "return": "The average borrow interest."
              },
              "balanceOf(address)": {
                "params": {
                  "_owner": "The account owner of the iTokens."
                },
                "return": "The number of iTokens an account owns."
              },
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": {
                "params": {
                  "borrower": "The one paying for the collateral.",
                  "collateralTokenAddress": "The address of the token to be used as  collateral. Cannot be the loan token address.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.  (150% of the withdrawn amount worth in collateral tokens).",
                  "initialLoanDuration": "The duration of the loan in seconds.  If the loan is not paid back until then, it'll need to be rolled over.",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "receiver": "The one receiving the withdrawn amount.",
                  "withdrawAmount": "The amount to be withdrawn (actually borrowed)."
                },
                "return": "New principal and new collateral added to loan."
              },
              "borrowInterestRate()": {
                "return": "The borrow interest rate."
              },
              "burn(address,uint256)": {
                "params": {
                  "burnAmount": "The amount of loan tokens to redeem.",
                  "receiver": "The account getting the minted tokens."
                },
                "return": "The amount of underlying tokens payed to lender."
              },
              "checkPause(string)": {
                "details": "Used to read externally from the smart contract to see if a  function is paused.",
                "params": {
                  "funcId": "The function ID, the selector."
                },
                "return": "isPaused Whether the function is paused: true or false."
              },
              "checkpointPrice(address)": {
                "params": {
                  "_user": "The user account as the mapping index."
                },
                "return": "The price on the checkpoint for this user."
              },
              "disableLoanParams(address[],bool[])": {
                "params": {
                  "collateralTokens": "The array of collateral tokens.",
                  "isTorqueLoans": "Whether the loan is a torque loan."
                }
              },
              "getBorrowAmountForDeposit(uint256,uint256,address)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "depositAmount": "The amount of deposit.",
                  "initialLoanDuration": "The duration of the loan."
                },
                "return": "The amount of borrow allowed."
              },
              "getDepositAmountForBorrow(uint256,uint256,address)": {
                "params": {
                  "borrowAmount": "The amount of borrow.",
                  "collateralTokenAddress": "The token address of collateral.",
                  "initialLoanDuration": "The duration of the loan."
                },
                "return": "The amount of deposit required."
              },
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanTokenSent": "The number of loan tokens provided by the user."
                },
                "return": "The principal, the collateral and the interestRate."
              },
              "getMaxEscrowAmount(uint256)": {
                "details": "maxEscrowAmount = liquidity * (100 - interestForDuration) / 100",
                "params": {
                  "leverageAmount": "The chosen multiplier with 18 decimals."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanDataBytes": "Additional loan data (not in use for token swaps).",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "loanTokenSent": "The number of loan tokens provided by the user.",
                  "trader": "The account that performs this trade."
                },
                "return": "New principal and new collateral added to trade."
              },
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": {
                "params": {
                  "affiliateReferrer": "The address of the referrer from affiliates program.",
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanDataBytes": "Additional loan data (not in use for token swaps).",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "loanTokenSent": "The number of loan tokens provided by the user.",
                  "minReturn": "Minimum position size in the collateral tokens",
                  "trader": "The account that performs this trade."
                },
                "return": "New principal and new collateral added to trade."
              },
              "marketLiquidity()": {
                "return": "The market liquidity."
              },
              "mint(address,uint256)": {
                "params": {
                  "depositAmount": "The amount of underlying tokens provided on the  loan. (Not the number of loan tokens to mint).",
                  "receiver": "The account getting the minted tokens."
                },
                "return": "The amount of loan tokens minted."
              },
              "nextBorrowInterestRate(uint256)": {
                "params": {
                  "borrowAmount": "The amount of tokens to borrow."
                },
                "return": "The next borrow interest rate."
              },
              "nextSupplyInterestRate(uint256)": {
                "params": {
                  "supplyAmount": "The amount of tokens supplied."
                },
                "return": "Interest that lenders are currently receiving when supplying a given amount of tokens to the pool."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "profitOf(address)": {
                "params": {
                  "user": "The user address."
                },
                "return": "The profit of a user."
              },
              "setAdmin(address)": {
                "params": {
                  "_admin": "The address of the account to grant admin permissions."
                }
              },
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": {
                "details": "These params should be percentages represented  like so: 5% = 5000000000000000000 /// 18 digits precision. rateMultiplier + baseRate can't exceed 100%\t * To maintain a healthy credit score, it's important to keep your credit utilization rate (CUR) low (_lowUtilBaseRate). In general you don't want your CUR to exceed 30%, but increasingly financial experts are recommending that you don't want to go above 10% if you really want an excellent credit score.\t * Interest rates tend to cluster around the kink level of a kinked interest rate model. More info at https://arxiv.org/pdf/2006.13922.pdf and https://compound.finance/governance/proposals/12",
                "params": {
                  "_baseRate": "The interest rate.",
                  "_kinkLevel": "The level that interest rates cluster on kinked model.",
                  "_lowUtilBaseRate": "The credit utilization rate (CUR) low value.",
                  "_lowUtilRateMultiplier": "The precision multiplier for low util base rate.",
                  "_maxScaleRate": "The maximum rate of the scale.",
                  "_rateMultiplier": "The precision multiplier for base rate.",
                  "_targetLevel": "The target level."
                }
              },
              "setLiquidityMiningAddress(address)": {
                "params": {
                  "LMAddress": "the address of the liquidity mining contract"
                }
              },
              "setPauser(address)": {
                "params": {
                  "_pauser": "The address of the account to grant pause permissions."
                }
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": {
                "params": {
                  "areTorqueLoans": "Whether the loan is a torque loan.",
                  "loanParamsList": "The array of loan parameters."
                }
              },
              "supplyInterestRate()": {
                "return": "Interest that lenders are currently receiving when supplying to the pool."
              },
              "toggleFunctionPause(string,bool)": {
                "details": "Combining the hash of \"iToken_FunctionPause\" string and a function  selector gets a slot to write a flag for pause state.",
                "params": {
                  "funcId": "The ID of a function, the selector.",
                  "isPaused": "true/false value of the flag."
                }
              },
              "tokenPrice()": {
                "return": "The loan token price."
              },
              "totalAssetBorrow()": {
                "return": "The total amount of loan tokens on debt."
              },
              "totalAssetSupply()": {
                "details": "Wrapper for internal _totalAssetSupply function.",
                "return": "The total amount of loan tokens on supply."
              },
              "totalSupply()": {
                "return": "The total number of iTokens in existence as of now."
              },
              "totalSupplyInterestRate(uint256)": {
                "params": {
                  "assetSupply": "The amount of loan tokens supplied."
                },
                "return": "Interest that lenders are currently receiving when supplying a given amount of loan tokens to the pool."
              },
              "transfer(address,uint256)": {
                "params": {
                  "_to": "The recipient of the tokens.",
                  "_value": "The amount of tokens sent."
                },
                "return": "Success true/false."
              },
              "transferFrom(address,address,uint256)": {
                "return": "A boolean value indicating whether the operation succeeded."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Loan Token Logic Standard contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052600160009081556200001e6001600160e01b036200007216565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000076565b3390565b61574380620000866000396000f3fe6080604052600436106103c35760003560e01c80637e37c08c116101f2578063ca37e6661161010d578063e41b07e3116100a0578063f2fde38b1161006f578063f2fde38b14610a62578063f6b69f9914610a82578063f851a44014610a95578063ffa1ad7414610aaa576103c3565b8063e41b07e3146109ed578063e697d2ee14610a0d578063eebc508114610a2d578063ef2b0b3914610a4d576103c3565b8063d8f06c83116100dc578063d8f06c831461096d578063d97206a41461098d578063dd62ed3e146109ad578063e3cded61146109cd576103c3565b8063ca37e66614610903578063cb926cb314610918578063d65a502114610938578063d759dbeb14610958576103c3565b806395d89b4111610185578063a9059cbb11610154578063a9059cbb1461088e578063b9fe1a8f146108ae578063ba0e43bf146108ce578063be194217146108e3576103c3565b806395d89b411461082f5780639bda3a98146108445780639dc29fac146108595780639fd0506d14610879576103c3565b80638da5cb5b116101c15780638da5cb5b146107db5780638ee6c4e6146107f05780638f32d59b146108055780638fb807c51461081a576103c3565b80637e37c08c1461077c5780637ff9b59614610791578063829b38f4146107a65780638325a1c0146107c6576103c3565b80632f6b600d116102e2578063612ef80b1161027557806370a082311161024457806370a08231146107125780637288b34414610732578063797bf385146107525780637b7933b414610767576103c3565b8063612ef80b1461068e578063631a3ef8146106a35780636b40cd40146106c3578063704b6c02146106f2576103c3565b806340c10f19116102b157806340c10f191461062457806344a4a0031461064457806354198ce91461065957806356e07d7014610679576103c3565b80632f6b600d146105b8578063313ce567146105cd5780633291c11a146105ef578063330691ac1461060f576103c3565b806318498b1d1161035a57806323b872dd1161032957806323b872dd1461054457806328a02f19146105645780632d88af4a146105855780632ea295fa146105a5576103c3565b806318498b1d146104e35780631d0806ae146105055780631f68f20a1461051a57806320f6d07c1461052f576103c3565b8063095ea7b311610396578063095ea7b31461046c57806309ec6b6b1461049957806312416898146104ae57806318160ddd146104ce576103c3565b806304797930146103d257806306947a3a1461040857806306b3efd61461042a57806306fdde031461044a575b3480156103cf57600080fd5b50005b3480156103de57600080fd5b506103f26103ed3660046146cc565b610abf565b6040516103ff91906152ed565b60405180910390f35b34801561041457600080fd5b5061041d610c68565b6040516103ff919061518c565b34801561043657600080fd5b506103f261044536600461418b565b610c77565b34801561045657600080fd5b5061045f610d63565b6040516103ff919061536c565b34801561047857600080fd5b5061048c61048736600461424e565b610dee565b6040516103ff91906152df565b3480156104a557600080fd5b506103f2610e59565b3480156104ba57600080fd5b506103f26104c9366004614641565b610e6e565b3480156104da57600080fd5b506103f2610e99565b3480156104ef57600080fd5b506105036104fe366004614770565b610e9f565b005b34801561051157600080fd5b506103f2610ee2565b34801561052657600080fd5b506103f2610ee8565b34801561053b57600080fd5b506103f2610eee565b34801561055057600080fd5b5061048c61055f366004614201565b610f7d565b610577610572366004614549565b611046565b6040516103ff92919061555d565b34801561059157600080fd5b506105036105a036600461418b565b61126b565b6105776105b33660046143a2565b6112b1565b3480156105c457600080fd5b5061041d611591565b3480156105d957600080fd5b506105e26115a0565b6040516103ff9190615586565b3480156105fb57600080fd5b506103f261060a366004614641565b6115a9565b34801561061b57600080fd5b506103f26115bb565b34801561063057600080fd5b506103f261063f36600461424e565b6115c1565b34801561065057600080fd5b506103f2611602565b34801561066557600080fd5b506103f261067436600461418b565b611614565b34801561068557600080fd5b506103f26116b5565b34801561069a57600080fd5b506103f26116bb565b3480156106af57600080fd5b506103f26106be3660046146cc565b6116ec565b3480156106cf57600080fd5b506106e36106de36600461470f565b61188c565b6040516103ff9392919061556b565b3480156106fe57600080fd5b5061050361070d36600461418b565b61199d565b34801561071e57600080fd5b506103f261072d36600461418b565b6119e3565b34801561073e57600080fd5b506103f261074d36600461467d565b6119fe565b34801561075e57600080fd5b5061041d611ae1565b34801561077357600080fd5b506103f2611af5565b34801561078857600080fd5b506103f2611afb565b34801561079d57600080fd5b506103f2611b01565b3480156107b257600080fd5b506103f26107c1366004614641565b611b3f565b3480156107d257600080fd5b506103f2611bbf565b3480156107e757600080fd5b5061041d611bcb565b3480156107fc57600080fd5b5061041d611bda565b34801561081157600080fd5b5061048c611be9565b34801561082657600080fd5b506103f2611c0f565b34801561083b57600080fd5b5061045f611c3f565b34801561085057600080fd5b5061041d611c9a565b34801561086557600080fd5b506103f261087436600461424e565b611ca9565b34801561088557600080fd5b5061041d611d1d565b34801561089a57600080fd5b5061048c6108a936600461424e565b611d2c565b3480156108ba57600080fd5b506103f26108c9366004614641565b611d3c565b3480156108da57600080fd5b506103f2611d47565b3480156108ef57600080fd5b5061048c6108fe3660046145d8565b611d4d565b34801561090f57600080fd5b5061041d611dcf565b34801561092457600080fd5b5061050361093336600461418b565b611dde565b34801561094457600080fd5b506103f2610953366004614641565b611e24565b34801561096457600080fd5b506103f2611e37565b34801561097957600080fd5b50610503610988366004614320565b611e3d565b34801561099957600080fd5b506105036109a836600461486c565b61200c565b3480156109b957600080fd5b506103f26109c83660046141c7565b612113565b3480156109d957600080fd5b506105036109e836600461460c565b61213e565b3480156109f957600080fd5b506103f2610a0836600461418b565b6121e3565b348015610a1957600080fd5b50610503610a2836600461427e565b6121f5565b348015610a3957600080fd5b506103f2610a4836600461418b565b6123a6565b348015610a5957600080fd5b506103f26123c1565b348015610a6e57600080fd5b50610503610a7d36600461418b565b6123c7565b610577610a90366004614469565b6123f7565b348015610aa157600080fd5b5061041d6124c7565b348015610ab657600080fd5b506103f26124d6565b60008315610c61576001600160a01b038216610ae4576017546001600160a01b031691505b600060106000846001604051602001610afe929190615118565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506001600160a01b039182169363e762319f936101009091049092169187918a91869163ca74a5d991610b6f918a91016152ed565b60206040518083038186803b158015610b8757600080fd5b505afa158015610b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bbf919081019061465f565b60016040518663ffffffff1660e01b8152600401610be1959493929190615206565b60206040518083038186803b158015610bf957600080fd5b505afa158015610c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c31919081019061465f565b9150610c4582610c3f611c0f565b866124db565b9350610c5391506125549050565b821115610c5f57600091505b505b9392505050565b6016546001600160a01b031681565b601c5460009081906001600160a01b031615610d1257601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690610cbf90309087906004016151a8565b60206040518083038186803b158015610cd757600080fd5b505afa158015610ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d0f919081019061465f565b90505b610d5a670de0b6b3a7640000610d4e610d29611b01565b610d4285610d36896119e3565b9063ffffffff61258a16565b9063ffffffff6125af16565b9063ffffffff6125e916565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610de65780601f10610dbb57610100808354040283529160200191610de6565b820191906000526020600020905b815481529060010190602001808311610dc957829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e479086906152ed565b60405180910390a35060015b92915050565b6000610e686104c9600061262b565b90505b90565b600080610e79610eee565b90508015610e9357610e8b81846119fe565b915050610d5e565b50919050565b60155490565b6000610ead8686868661188c565b5091505081811015610eda5760405162461bcd60e51b8152600401610ed19061537d565b60405180910390fd5b505050505050565b600e5481565b60055481565b6016546004805460405163250f447f60e11b81526000936001600160a01b0390811693634a1e88fe93610f2d93309361010090920490911691016151a8565b60206040518083038186803b158015610f4557600080fd5b505afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e68919081019061465f565b60165460405163115dd4b160e01b815260009161103e918691869186916001600160a01b03169063115dd4b190610fb890339060040161519a565b60206040518083038186803b158015610fd057600080fd5b505afa158015610fe4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110089190810190614384565b611035576001600160a01b0388166000908152601460209081526040808320338452909152902054611039565b6000195b612665565b949350505050565b60008060016000541461106b5760405162461bcd60e51b8152600401610ed19061550d565b6002600055611078612838565b6110858989898988610e9f565b6001600160a01b0386166110a2576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156110d55760405162461bcd60e51b8152600401610ed19061541d565b8915806110ea5750336001600160a01b038616145b6111065760405162461bcd60e51b8152600401610ed19061552d565b6001600160a01b03861660009081526012602052604090205415611149576001600160a01b03861660009081526012602052604090205487111561114957600080fd5b60045461010090046001600160a01b03166000908152601260205260409020541561119a5760045461010090046001600160a01b031660009081526012602052604090205488111561119a57600080fd5b60006111a787898b6128b8565b9050806111c65760405162461bcd60e51b8152600401610ed19061544d565b6111ce613e8b565b6111d6613ea9565b3082526001600160a01b038816602080840182905260408401919091528101839052606081018b9052608081018a905261120e612ae5565b61121f8c8260016020020151612b8b565b825260208201526112406f4b3b4ca85a86c47a098a2240000000008d6125e9565b9b506112528d60008e8c86868c612bda565b6001600055909e909d509b505050505050505050505050565b611273611be9565b61128f5760405162461bcd60e51b8152600401610ed1906154ad565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806001600054146112d65760405162461bcd60e51b8152600401610ed19061550d565b6002600055886112f85760405162461bcd60e51b8152600401610ed19061553d565b611300612838565b6001600160a01b03861660009081526012602052604090205415611343576001600160a01b03861660009081526012602052604090205487111561134357600080fd5b34158061134f57508634145b801561136357508615158061136357508915155b801561138a57506001600160a01b03861615158061138057503415155b8061138a57508915155b80156113a657508915806113a65750336001600160a01b038616145b6113c25760405162461bcd60e51b8152600401610ed1906153ed565b6001600160a01b0386166113df576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156114125760405162461bcd60e51b8152600401610ed19061538d565b61141a612ae5565b611422613e8b565b61142a613ea9565b3082526001600160a01b03878116602080850191909152908716604084015281018b90526114628b61145c600061262b565b8c6124db565b8360006020020184600260200201856001602002019290925291905252888160046020020181815250506115798c8c601660009054906101000a90046001600160a01b03166001600160a01b031663ca74a5d9601060008e60016040516020016114cd929190615118565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020546040518263ffffffff1660e01b815260040161151191906152ed565b60206040518083038186803b15801561152957600080fd5b505afa15801561153d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611561919081019061465f565b8b868660405180602001604052806000815250612bda565b6001600055909d909c509a5050505050505050505050565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b60006001600054146115e55760405162461bcd60e51b8152600401610ed19061550d565b60026000556115f48383612e39565b90505b600160005592915050565b6000610e6861160f610eee565b612f45565b600080827f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb660001b60405160200161164d92919061513e565b604051602081830303815290604052805190602001209050610d5a8160136000866001600160a01b03166001600160a01b0316815260200190815260200160002054611697611b01565b6001600160a01b038716600090815260116020526040902054612f7d565b600a5481565b6000806116c8600061262b565b905060006116d4610eee565b9050808211156116e75790039050610e6b565b505090565b60008315610c6157600061170285610c3f611c0f565b9250505061170e612554565b8111610c5f576001600160a01b038316611731576017546001600160a01b031692505b60006010600085600160405160200161174b929190615118565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b815292945061188393600a936001600160a01b03938416936325decac09361010090930416918a918991869163ca74a5d9916117c1918c91016152ed565b60206040518083038186803b1580156117d957600080fd5b505afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611811919081019061465f565b60016040518663ffffffff1660e01b8152600401611833959493929190615206565b60206040518083038186803b15801561184b57600080fd5b505afa15801561185f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d36919081019061465f565b92505050610c61565b600080806001600160a01b0384166118ad576017546001600160a01b031693505b60006118ba8587896128b8565b90506118c68882612b8b565b90945091506118d3612554565b8411156118ea575060009250829150819050611993565b6118fa878563ffffffff61258a16565b6016546004805460405163d67f707760e01b8152939a506001600160a01b039283169363d67f70779361193f9361010090930416918a918d918d918a918d9101615248565b60206040518083038186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061198f919081019061465f565b9250505b9450945094915050565b6119a5611be9565b6119c15760405162461bcd60e51b8152600401610ed1906154ad565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60008215801590611a0f5750828210155b15610e5357611ada701d6329f1c35ca4bfabb9f5610000000000610d4e611ac468056bc75e2d63100000601660009054906101000a90046001600160a01b03166001600160a01b0316634699f8466040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8757600080fd5b505afa158015611a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611abf919081019061465f565b612fd7565b610d42611ad18888613019565b610d4289612f45565b9050610e53565b60045461010090046001600160a01b031681565b600d5481565b60085481565b600f546000908190426001600160581b03908116911614611b2857611b2461304b565b9150505b611b39611b348261262b565b613117565b91505090565b600080611b5e61016d610d4e601c600b546125af90919063ffffffff16565b90506000611b7b68056bc75e2d631000008363ffffffff612fd716565b90506000611b9868056bc75e2d63100000610d4e84610d426116bb565b9050611bb685610d4e83670de0b6b3a764000063ffffffff6125af16565b95945050505050565b6000610e686000613146565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316611c0061319c565b6001600160a01b031614905090565b600f546000908190426001600160581b03908116911614611c3657611c3261304b565b9150505b611b398161262b565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610de65780601f10610dbb57610100808354040283529160200191610de6565b6018546001600160a01b031681565b6000600160005414611ccd5760405162461bcd60e51b8152600401610ed19061550d565b6002600055611cdb826131a0565b905080156115f7576115f7600460019054906101000a90046001600160a01b03168483604051806040016040528060018152602001603560f81b815250613357565b601b546001600160a01b031681565b6000610c61338484600019612665565b6000610e5382613146565b60095481565b60008082604051602001611d619190615180565b6040516020818303038152906040528051906020012090506000817fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001611dae929190615164565b60408051808303601f19018152919052805160209091012054949350505050565b601a546001600160a01b031681565b611de6611be9565b611e025760405162461bcd60e51b8152600401610ed1906154ad565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e536104c983610d36600061262b565b60075481565b611e45611be9565b80611e5a57506019546001600160a01b031633145b611e765760405162461bcd60e51b8152600401610ed1906154ad565b60045460609061010090046001600160a01b031660005b8451811015611f005781858281518110611ea357fe5b6020026020010151606001906001600160a01b031690816001600160a01b03168152505083611ed5576224ea00611ed8565b60005b62ffffff16858281518110611ee957fe5b602090810291909101015160e00152600101611e8d565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e90611f319087906004016152ce565b600060405180830381600087803b158015611f4b57600080fd5b505af1158015611f5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f8791908101906142ec565b915060005b825181101561200557828181518110611fa157fe5b602002602001015160106000878481518110611fb957fe5b60200260200101516080015187604051602001611fd7929190615118565b60408051601f1981840301815291815281516020928301208352908201929092520160002055600101611f8c565b5050505050565b612014611be9565b8061202957506019546001600160a01b031633145b6120455760405162461bcd60e51b8152600401610ed1906154ad565b68056bc75e2d6310000061205f878963ffffffff61258a16565b111561207d5760405162461bcd60e51b8152600401610ed19061543d565b68056bc75e2d63100000612097858763ffffffff61258a16565b11156120b55760405162461bcd60e51b8152600401610ed19061543d565b68056bc75e2d6310000083111580156120d7575068056bc75e2d631000008211155b6120f35760405162461bcd60e51b8152600401610ed19061546d565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b031633146121685760405162461bcd60e51b8152600401610ed1906154fd565b60008260405160200161217b9190615180565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f26040516020016121c3929190615164565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b6121fd611be9565b8061221257506019546001600160a01b031633145b61222e5760405162461bcd60e51b8152600401610ed1906154ad565b82811461224d5760405162461bcd60e51b8152600401610ed1906153dd565b604080518481526020808602820101909152606090848015612279578160200160208202803883390190505b50905060005b8481101561233c57600086868381811061229557fe5b90506020020160206122aa919081019061418b565b8585848181106122b657fe5b90506020020160206122cb9190810190614366565b6040516020016122dc929190615118565b6040516020818303038152906040528051906020012060001c9050601060008281526020019081526020016000205483838151811061231757fe5b602090810291909101810191909152600091825260109052604081205560010161227f565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a9061236d9084906004016152bd565b600060405180830381600087803b15801561238757600080fd5b505af115801561239b573d6000803e3d6000fd5b505050505050505050565b6001600160a01b031660009081526011602052604090205490565b600b5481565b6123cf611be9565b6123eb5760405162461bcd60e51b8152600401610ed1906154ad565b6123f4816133b7565b50565b6000806001600160a01b0385161561246e5760165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf4489061243b908a9089906004016151a8565b600060405180830381600087803b15801561245557600080fd5b505af1158015612469573d6000803e3d6000fd5b505050505b6124b48c8c8c8c8c8c8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061104692505050565b915091509a509a98505050505050505050565b6019546001600160a01b031681565b600681565b60008060006124ea8686613439565b925061253761251f670de0b6b3a7640000611abf6b0a3098c68eb9427db8000000610d4e83610d428a8c63ffffffff6125af16565b610d4e88670de0b6b3a764000063ffffffff6125af16565b9050612549818763ffffffff612fd716565b915093509350939050565b600480546040516370a0823160e01b81526000926101009092046001600160a01b0316916370a0823191610f2d9130910161518c565b600082820183811015610c615760405162461bcd60e51b8152600401610ed1906153bd565b6000826125be57506000610e53565b828202828482816125cb57fe5b0414610c615760405162461bcd60e51b8152600401610ed19061549d565b6000610c6183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061354f565b6000601554600014610d5e57600c54806126555761265261264a610eee565b610d36612554565b90505b610e8b818463ffffffff61258a16565b600060001982146126c1576040805180820190915260028152610c4d60f21b602082015261269c908390859063ffffffff61358616565b6001600160a01b03861660009081526014602090815260408083203384529091529020555b6001600160a01b0384166126e75760405162461bcd60e51b8152600401610ed19061539d565b6001600160a01b03851660009081526013602090815260408083205481518083019092526002825261189b60f11b92820192909252909190612732908390879063ffffffff61358616565b6001600160a01b0380891660009081526013602052604080822084905591891681529081205491925061276b828863ffffffff61258a16565b6001600160a01b0389166000908152601360205260408120829055909150612791611b01565b601c549091506001600160a01b038b81169116148015906127c05750601c546001600160a01b038a8116911614155b156127dd576127d18a8686846135b2565b6127dd898484846135b2565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a60405161282091906152ed565b60405180910390a35060019998505050505050505050565b600080356001600160e01b0319167fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001612878929190615164565b60405160208183030381529060405280519060200120905060008154905080156128b45760405162461bcd60e51b8152600401610ed1906154ad565b5050565b808215610c6157600080601660009054906101000a90046001600160a01b03166001600160a01b03166378d849ed6040518163ffffffff1660e01b815260040160206040518083038186803b15801561291057600080fd5b505afa158015612924573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061294891908101906141a9565b60048054604051630a7549df60e21b81526001600160a01b03938416936329d5277c93612981938c9361010090910490921691016151a8565b604080518083038186803b15801561299857600080fd5b505afa1580156129ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129d0919081019061469c565b91509150816000141580156129e457508015155b612a005760405162461bcd60e51b8152600401610ed1906154ed565b6000612a1682610d4e888663ffffffff6125af16565b60165460048054604051631a51577760e21b81529394506000936001600160a01b03938416936369455ddc93612a59936101009004909116918d918891016151de565b60206040518083038186803b158015612a7157600080fd5b505afa158015612a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612aa9919081019061465f565b9050868114612ac957612ac687610d4e848463ffffffff6125af16565b91505b612ad9828663ffffffff61258a16565b98975050505050505050565b600f5442906001600160581b038083169116146123f45760165460048054604051630740ff7d60e51b81526001600160a01b039384169363e81fefa093612b35936101009004909116910161518c565b600060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b5050600f80546001600160581b0385166affffffffffffffffffffff19909116179055505050565b60008080612bab670de0b6b3a7640000610d4e868863ffffffff6125af16565b9050612bc081612bbb600061262b565b613439565b9150612bd0826224ea0083613668565b9250509250929050565b600080612be5612838565b612bed612554565b602085015111801590612c0c575060208501516001600160a01b031615155b612c285760405162461bcd60e51b8152600401610ed19061540d565b60408501516001600160a01b0316612c4e5760208501516001600160a01b031660408601525b6000612c5c8787878c6136c9565b60208601516060870151919250612c73919061258a565b60608601528815612c93576060850151612c8d908a612fd7565b60608601525b60008915612c9f575060015b6000601060008a84604051602001612cb8929190615118565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020549050601660009054906101000a90046001600160a01b03166001600160a01b031663585314cf84838f868f8e8e8e6040518963ffffffff1660e01b8152600401612d3097969594939291906152fb565b60408051808303818588803b158015612d4857600080fd5b505af1158015612d5c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250612d81919081019061469c565b608089015260208801819052612da95760405162461bcd60e51b8152600401610ed19061545d565b601654602089015160405163f06a9c6b60e01b81526001600160a01b039092169163f06a9c6b91612ddc9160040161518c565b600060405180830381600087803b158015612df657600080fd5b505af1158015612e0a573d6000803e3d6000fd5b5050505086600160058110612e1b57fe5b6020020151608090970151969c969b50959950505050505050505050565b600080612e45836138fe565b601c5491935091506000906001600160a01b031615612ee357601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690612e9090309089906004016151a8565b60206040518083038186803b158015612ea857600080fd5b505afa158015612ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ee0919081019061465f565b90505b6001600160a01b038516600090815260136020526040812054612f0c908363ffffffff61258a16565b90506000612f20828663ffffffff61258a16565b9050612f2e87868887613a08565b50612f3b878383876135b2565b5050505092915050565b60008115610d5e576000612f5761304b565b509050610e8b83610d4e61016d610d428568056bc75e2d6310000063ffffffff6125af16565b600081612f8c5750600061103e565b508354611bb681612fcb670de0b6b3a7640000612fbf88612fb3898963ffffffff613b2916565b9063ffffffff613b6f16565b9063ffffffff613bda16565b9063ffffffff613c3e16565b6000610c6183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613586565b6000821580159061302957508115155b15610e5357611ada82610d4e8568056bc75e2d6310000063ffffffff6125af16565b60165460048054604051630d1979fb60e41b8152600093849384936001600160a01b039283169363d1979fb09361308d933093610100900490911691016151a8565b60c06040518083038186803b1580156130a557600080fd5b505afa1580156130b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130dd91908101906147e5565b5091965094509250613110915068056bc75e2d631000009050610d4e6131038285612fd7565b859063ffffffff6125af16565b9150509091565b6015546000908061312a57600e54610d5a565b610d5a81610d4e85670de0b6b3a764000063ffffffff6125af16565b600080821561318f57600f54426001600160581b039081169116146131715761316d61304b565b9150505b600061317f82610d36612554565b90508084111561318d578093505b505b610d5a83612bbb8361262b565b3390565b6000816131bf5760405162461bcd60e51b8152600401610ed1906154bd565b6131c8336119e3565b8211156131fc5760001982146131f05760405162461bcd60e51b8152600401610ed19061547d565b6131f9336119e3565b91505b613204612ae5565b6000613213611b34600061262b565b90506000613233670de0b6b3a7640000610d4e868563ffffffff6125af16565b9050600061323f612554565b9050819350808411156132645760405162461bcd60e51b8152600401610ed1906153fd565b601c546000906001600160a01b0316156132fd57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa6906132aa90309033906004016151c3565b60206040518083038186803b1580156132c257600080fd5b505afa1580156132d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506132fa919081019061465f565b90505b3360009081526013602052604081205461331d908363ffffffff61258a16565b90506000613331828963ffffffff612fd716565b905061333f33898989613c84565b5061334c338383896135b2565b505050505050919050565b6040516133b190859063a9059cbb60e01b9061337990879087906024016152a2565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915283613da9565b50505050565b6001600160a01b0381166133dd5760405162461bcd60e51b8152600401610ed1906153ad565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008061345161344b85610d36610eee565b84613019565b600554600654600954600a54600b5494955060009485949392919082881015613478578297505b818811156134eb57968190039668056bc75e2d631000008290038089111561349e578098505b6134bf68056bc75e2d63100000610d4e85610d42898b63ffffffff61258a16565b96506134e387610d3683610d4e6134d6878d612fd7565b8e9063ffffffff6125af16565b995050613541565b61350c85610d3668056bc75e2d63100000610d4e8c8963ffffffff6125af16565b98509395508593613523848663ffffffff61258a16565b95508689101561353557869850613541565b85891115613541578598505b505050505050505092915050565b600081836135705760405162461bcd60e51b8152600401610ed1919061536c565b50600083858161357c57fe5b0495945050505050565b600081848411156135aa5760405162461bcd60e51b8152600401610ed1919061536c565b505050900390565b6040516000906135e89086907f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb69060200161513e565b604051602081830303815290604052805190602001209050600083600014156136145760009250613645565b8415613645576001600160a01b03861660009081526011602052604090205461364290839087908690612f7d565b90505b90556001600160a01b039093166000908152601160205260409020929092555050565b6000806136836301e13380610d4e878763ffffffff6125af16565b905060006136a068056bc75e2d631000008363ffffffff612fd716565b90506136bf81610d4e8668056bc75e2d6310000063ffffffff6125af16565b9695505050505050565b60175460045460408501516020850151606086015160808701516000956001600160a01b03908116956101009004811694939291908b1685141561371f5760405162461bcd60e51b8152600401610ed1906154cd565b349650871561377d5761374385858a60405180602001604052806000815250613357565b87831115613778576016546040805160208101909152600081526137789187916001600160a01b03909116908b870390613357565b6137b2565b601654604080518082019091526002815261323760f01b60208201526137b29187916001600160a01b03909116908690613357565b80156138b557856001600160a01b03168b6001600160a01b03161480156137d857508615155b80156137e45750808710155b1561387e57856001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561382457600080fd5b505af1158015613838573d6000803e3d6000fd5b505060165460408051808201909152600481526332382d6160e01b602082015261387494508f93506001600160a01b0390911691508490613357565b80870396506138b5565b601654604080518082019091526004815263191c16b160e11b60208201526138b5918d9133916001600160a01b0316908590613e67565b81156138f057601654604080518082019091526002815261323960f01b60208201526138f091879133916001600160a01b0316908690613e67565b505050505050949350505050565b6000808261391e5760405162461bcd60e51b8152600401610ed19061548d565b613926612ae5565b613933611b34600061262b565b905061395181610d4e85670de0b6b3a764000063ffffffff6125af16565b91503461399957613994600460019054906101000a90046001600160a01b031633308660405180604001604052806002815260200161062760f31b815250613e67565b613a03565b601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156139e957600080fd5b505af11580156139fd573d6000803e3d6000fd5b50505050505b915091565b60006001600160a01b038516613a305760405162461bcd60e51b8152600401610ed19061539d565b6001600160a01b038516600090815260136020526040812054613a59908663ffffffff61258a16565b6001600160a01b0387166000908152601360205260409020819055601554909150613a8a908663ffffffff61258a16565b6015556040516001600160a01b038716907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb90613acc9088908890889061556b565b60405180910390a2856001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613b1891906152ed565b60405180910390a395945050505050565b6000818303818312801590613b3e5750838113155b80613b535750600083128015613b5357508381135b610c615760405162461bcd60e51b8152600401610ed19061551d565b600082613b7e57506000610e53565b82600019148015613b925750600160ff1b82145b15613baf5760405162461bcd60e51b8152600401610ed1906154dd565b82820282848281613bbc57fe5b0514610c615760405162461bcd60e51b8152600401610ed1906154dd565b600081613bf95760405162461bcd60e51b8152600401610ed19061554d565b81600019148015613c0d5750600160ff1b83145b15613c2a5760405162461bcd60e51b8152600401610ed19061542d565b6000828481613c3557fe5b05949350505050565b6000828201818312801590613c535750838112155b80613c685750600083128015613c6857508381125b610c615760405162461bcd60e51b8152600401610ed1906153cd565b6040805180820182526002815261189b60f11b6020808301919091526001600160a01b03871660009081526013909152918220548291613ccc9190879063ffffffff61358616565b9050600a8111613ced57613ce6858263ffffffff61258a16565b9450600090505b6001600160a01b0386166000908152601360205260409020819055601554613d1b908663ffffffff612fd716565b6015556040516001600160a01b038716907f743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b464490613d5d9088908890889061556b565b60405180910390a260006001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613b1891906152ed565b60006060846001600160a01b031684604051613dc59190615180565b6000604051808303816000865af19150503d8060008114613e02576040519150601f19603f3d011682016040523d82523d6000602084013e613e07565b606091505b5091509150818390613e2c5760405162461bcd60e51b8152600401610ed1919061536c565b508051156120055780806020019051613e489190810190614384565b8390610eda5760405162461bcd60e51b8152600401610ed1919061536c565b6040516120059086906323b872dd60e01b90613379908890889088906024016151de565b60405180608001604052806004906020820280388339509192915050565b6040518060a001604052806005906020820280388339509192915050565b8035610e53816156da565b8051610e53816156da565b60008083601f840112613eef57600080fd5b5081356001600160401b03811115613f0657600080fd5b602083019150836020820283011115613f1e57600080fd5b9250929050565b600082601f830112613f3657600080fd5b8151613f49613f44826155ba565b615594565b91508181835260208401935060208101905083856020840282011115613f6e57600080fd5b60005b83811015612f3b5781613f84888261402f565b8452506020928301929190910190600101613f71565b600082601f830112613fab57600080fd5b8135613fb9613f44826155ba565b9150818183526020840193506020810190508385610100840282011115613fdf57600080fd5b60005b83811015612f3b5781613ff588826140ca565b8452506020909201916101009190910190600101613fe2565b8035610e53816156ee565b8051610e53816156ee565b8035610e53816156f7565b8051610e53816156f7565b60008083601f84011261404c57600080fd5b5081356001600160401b0381111561406357600080fd5b602083019150836001820283011115613f1e57600080fd5b600082601f83011261408c57600080fd5b813561409a613f44826155da565b915080825260208301602083018583830111156140b657600080fd5b6140c1838284615660565b50505092915050565b600061010082840312156140dd57600080fd5b6140e8610100615594565b905060006140f68484614024565b82525060206141078484830161400e565b602083015250604061411b84828501613ec7565b604083015250606061412f84828501613ec7565b606083015250608061414384828501613ec7565b60808301525060a061415784828501614024565b60a08301525060c061416b84828501614024565b60c08301525060e061417f84828501614024565b60e08301525092915050565b60006020828403121561419d57600080fd5b600061103e8484613ec7565b6000602082840312156141bb57600080fd5b600061103e8484613ed2565b600080604083850312156141da57600080fd5b60006141e68585613ec7565b92505060206141f785828601613ec7565b9150509250929050565b60008060006060848603121561421657600080fd5b60006142228686613ec7565b935050602061423386828701613ec7565b925050604061424486828701614024565b9150509250925092565b6000806040838503121561426157600080fd5b600061426d8585613ec7565b92505060206141f785828601614024565b6000806000806040858703121561429457600080fd5b84356001600160401b038111156142aa57600080fd5b6142b687828801613edd565b945094505060208501356001600160401b038111156142d457600080fd5b6142e087828801613edd565b95989497509550505050565b6000602082840312156142fe57600080fd5b81516001600160401b0381111561431457600080fd5b61103e84828501613f25565b6000806040838503121561433357600080fd5b82356001600160401b0381111561434957600080fd5b61435585828601613f9a565b92505060206141f78582860161400e565b60006020828403121561437857600080fd5b600061103e848461400e565b60006020828403121561439657600080fd5b600061103e8484614019565b600080600080600080600080610100898b0312156143bf57600080fd5b60006143cb8b8b614024565b98505060206143dc8b828c01614024565b97505060406143ed8b828c01614024565b96505060606143fe8b828c01614024565b955050608061440f8b828c01613ec7565b94505060a06144208b828c01613ec7565b93505060c06144318b828c01613ec7565b92505060e08901356001600160401b0381111561444d57600080fd5b6144598b828c0161407b565b9150509295985092959890939650565b6000806000806000806000806000806101208b8d03121561448957600080fd5b60006144958d8d614024565b9a505060206144a68d828e01614024565b99505060406144b78d828e01614024565b98505060606144c88d828e01614024565b97505060806144d98d828e01613ec7565b96505060a06144ea8d828e01613ec7565b95505060c06144fb8d828e01614024565b94505060e061450c8d828e01613ec7565b9350506101008b01356001600160401b0381111561452957600080fd5b6145358d828e0161403a565b92509250509295989b9194979a5092959850565b600080600080600080600080610100898b03121561456657600080fd5b60006145728b8b614024565b98505060206145838b828c01614024565b97505060406145948b828c01614024565b96505060606145a58b828c01614024565b95505060806145b68b828c01613ec7565b94505060a06145c78b828c01613ec7565b93505060c06144318b828c01614024565b6000602082840312156145ea57600080fd5b81356001600160401b0381111561460057600080fd5b61103e8482850161407b565b6000806040838503121561461f57600080fd5b82356001600160401b0381111561463557600080fd5b6143558582860161407b565b60006020828403121561465357600080fd5b600061103e8484614024565b60006020828403121561467157600080fd5b600061103e848461402f565b6000806040838503121561469057600080fd5b600061426d8585614024565b600080604083850312156146af57600080fd5b60006146bb858561402f565b92505060206141f78582860161402f565b6000806000606084860312156146e157600080fd5b60006146ed8686614024565b93505060206146fe86828701614024565b925050604061424486828701613ec7565b6000806000806080858703121561472557600080fd5b60006147318787614024565b945050602061474287828801614024565b935050604061475387828801614024565b925050606061476487828801613ec7565b91505092959194509250565b600080600080600060a0868803121561478857600080fd5b60006147948888614024565b95505060206147a588828901614024565b94505060406147b688828901614024565b93505060606147c788828901613ec7565b92505060806147d888828901614024565b9150509295509295909350565b60008060008060008060c087890312156147fe57600080fd5b600061480a898961402f565b965050602061481b89828a0161402f565b955050604061482c89828a0161402f565b945050606061483d89828a0161402f565b935050608061484e89828a0161402f565b92505060a061485f89828a0161402f565b9150509295509295509295565b600080600080600080600060e0888a03121561488757600080fd5b60006148938a8a614024565b97505060206148a48a828b01614024565b96505060406148b58a828b01614024565b95505060606148c68a828b01614024565b94505060806148d78a828b01614024565b93505060a06148e88a828b01614024565b92505060c06148f98a828b01614024565b91505092959891949750929550565b6000614914838361494c565b505060200190565b60006149148383614abf565b60006149348383615078565b50506101000190565b6149468161564f565b82525050565b61494681615620565b61494661496182615620565b615698565b61496f81615607565b6149798184610d5e565b925061498482610e6b565b8060005b83811015610eda57815161499c8782614908565b96506149a783615601565b925050600101614988565b60006149bd8261560d565b6149c78185615617565b93506149d283615601565b8060005b83811015614a005781516149ea888261491c565b97506149f583615601565b9250506001016149d6565b509495945050505050565b6000614a168261560d565b614a208185615617565b9350614a2b83615601565b8060005b83811015614a00578151614a438882614928565b9750614a4e83615601565b925050600101614a2f565b614a6281615611565b614a6c8184610d5e565b9250614a7782610e6b565b8060005b83811015610eda578151614a8f878261491c565b9650614a9a83615601565b925050600101614a7b565b6149468161562b565b614946614aba8261562b565b6156a3565b61494681610e6b565b614946614ad482610e6b565b610e6b565b614946614ad482615630565b6000614af08261560d565b614afa8185615617565b9350614b0a81856020860161566c565b614b13816156c4565b9093019392505050565b6000614b288261560d565b614b328185610d5e565b9350614b4281856020860161566c565b9290920192915050565b6000614b59600c83615617565b6b636f6c6c20746f6f206c6f7760a01b815260200192915050565b6000614b81600283615617565b61031360f41b815260200192915050565b6000614b9f600283615617565b61313560f01b815260200192915050565b6000614bbd602683615617565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000614c05601b83615617565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614c3e602183615617565b7f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000614c81600e83615617565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000614cab600183615617565b603760f81b815260200192915050565b6000614cc8600283615617565b61333760f01b815260200192915050565b6000614ce6600283615617565b610c8d60f21b815260200192915050565b6000614d04600283615617565b61313160f01b815260200192915050565b6000614d22602183615617565b7f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000614d65601583615617565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000614d96600283615617565b61189960f11b815260200192915050565b6000614db4600283615617565b61323560f01b815260200192915050565b6000614dd2600f83615617565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b6000614dfd600283615617565b61199960f11b815260200192915050565b6000614e1b600283615617565b61313760f01b815260200192915050565b6000614e39602183615617565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000614e7c600c83615617565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000614ea4600283615617565b61313960f01b815260200192915050565b6000614ec2600283615617565b61191b60f11b815260200192915050565b6000614ee0602783615617565b7f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f815266766572666c6f7760c81b602082015260400192915050565b6000614f29601d83615617565b7f696e76616c6964207261746520636f6c6c61746572616c20746f6b656e000000815260200192915050565b6000614f62600a83615617565b6937b7363ca830bab9b2b960b11b815260200192915050565b6000614f88600c83615617565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b6000614fb0602483615617565b7f5369676e6564536166654d6174683a207375627472616374696f6e206f766572815263666c6f7760e01b602082015260400192915050565b6000614ff6601883615617565b7f34303120757365206f66206578697374696e67206c6f616e0000000000000000815260200192915050565b600061502f600183615617565b601b60f91b815260200192915050565b600061504c602083615617565b7f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f815260200192915050565b805161010083019061508a8482614abf565b50602082015161509d6020850182614aa5565b5060408201516150b0604085018261494c565b5060608201516150c3606085018261494c565b5060808201516150d6608085018261494c565b5060a08201516150e960a0850182614abf565b5060c08201516150fc60c0850182614abf565b5060e08201516133b160e0850182614abf565b61494681615649565b60006151248285614955565b6014820191506151348284614aae565b5060010192915050565b600061514a8285614955565b60148201915061515a8284614ac8565b5060200192915050565b60006151708285614ad9565b60048201915061515a8284614ac8565b6000610c618284614b1d565b60208101610e53828461494c565b60208101610e53828461493d565b604081016151b6828561494c565b610c61602083018461494c565b604081016151d1828561494c565b610c61602083018461493d565b606081016151ec828661494c565b6151f9602083018561494c565b61103e6040830184614abf565b60a08101615214828861494c565b615221602083018761494c565b61522e6040830186614abf565b61523b6060830185614abf565b6136bf6080830184614aa5565b60c08101615256828961494c565b615263602083018861494c565b6152706040830187614abf565b61527d6060830186614abf565b61528a6080830185614abf565b61529760a0830184614abf565b979650505050505050565b604081016152b0828561494c565b610c616020830184614abf565b60208082528101610c6181846149b2565b60208082528101610c618184614a0b565b60208101610e538284614aa5565b60208101610e538284614abf565b6101c0810161530a828a614abf565b6153176020830189614abf565b6153246040830188614aa5565b6153316060830187614abf565b61533e6080830186614966565b61534c610100830185614a59565b8181036101a083015261535f8184614ae5565b9998505050505050505050565b60208082528101610c618184614ae5565b60208082528101610e5381614b4c565b60208082528101610e5381614b74565b60208082528101610e5381614b92565b60208082528101610e5381614bb0565b60208082528101610e5381614bf8565b60208082528101610e5381614c31565b60208082528101610e5381614c74565b60208082528101610e5381614c9e565b60208082528101610e5381614cbb565b60208082528101610e5381614cd9565b60208082528101610e5381614cf7565b60208082528101610e5381614d15565b60208082528101610e5381614d58565b60208082528101610e5381614d89565b60208082528101610e5381614da7565b60208082528101610e5381614dc5565b60208082528101610e5381614df0565b60208082528101610e5381614e0e565b60208082528101610e5381614e2c565b60208082528101610e5381614e6f565b60208082528101610e5381614e97565b60208082528101610e5381614eb5565b60208082528101610e5381614ed3565b60208082528101610e5381614f1c565b60208082528101610e5381614f55565b60208082528101610e5381614f7b565b60208082528101610e5381614fa3565b60208082528101610e5381614fe9565b60208082528101610e5381615022565b60208082528101610e538161503f565b604081016152b08285614abf565b606081016155798286614abf565b6151f96020830185614abf565b60208101610e53828461510f565b6040518181016001600160401b03811182821017156155b257600080fd5b604052919050565b60006001600160401b038211156155d057600080fd5b5060209081020190565b60006001600160401b038211156155f057600080fd5b506020601f91909101601f19160190565b60200190565b50600490565b5190565b50600590565b90815260200190565b6000610e538261563d565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b6000610e53826000610e5382615620565b82818337506000910152565b60005b8381101561568757818101518382015260200161566f565b838111156133b15750506000910152565b6000610e53826156ae565b6000610e53826156b9565b6000610e53826156d4565b6000610e53826156ce565b601f01601f191690565b60f81b90565b60601b90565b6156e381615620565b81146123f457600080fd5b6156e38161562b565b6156e381610e6b56fea365627a7a7231582067b5b5f2c3a4d60367dcbf6ad233bf9b3ef127defcbbe64f2de20fbdeeba22f16c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH3 0x1E PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x72 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x76 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x5743 DUP1 PUSH3 0x86 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3C3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E37C08C GT PUSH2 0x1F2 JUMPI DUP1 PUSH4 0xCA37E666 GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xE41B07E3 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xA62 JUMPI DUP1 PUSH4 0xF6B69F99 EQ PUSH2 0xA82 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xA95 JUMPI DUP1 PUSH4 0xFFA1AD74 EQ PUSH2 0xAAA JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x9ED JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0xA0D JUMPI DUP1 PUSH4 0xEEBC5081 EQ PUSH2 0xA2D JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0xA4D JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0xD8F06C83 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x96D JUMPI DUP1 PUSH4 0xD97206A4 EQ PUSH2 0x98D JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x9AD JUMPI DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0x9CD JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0xCA37E666 EQ PUSH2 0x903 JUMPI DUP1 PUSH4 0xCB926CB3 EQ PUSH2 0x918 JUMPI DUP1 PUSH4 0xD65A5021 EQ PUSH2 0x938 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x958 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x185 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x154 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x88E JUMPI DUP1 PUSH4 0xB9FE1A8F EQ PUSH2 0x8AE JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x8CE JUMPI DUP1 PUSH4 0xBE194217 EQ PUSH2 0x8E3 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x82F JUMPI DUP1 PUSH4 0x9BDA3A98 EQ PUSH2 0x844 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x859 JUMPI DUP1 PUSH4 0x9FD0506D EQ PUSH2 0x879 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0x8EE6C4E6 EQ PUSH2 0x7F0 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x805 JUMPI DUP1 PUSH4 0x8FB807C5 EQ PUSH2 0x81A JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x77C JUMPI DUP1 PUSH4 0x7FF9B596 EQ PUSH2 0x791 JUMPI DUP1 PUSH4 0x829B38F4 EQ PUSH2 0x7A6 JUMPI DUP1 PUSH4 0x8325A1C0 EQ PUSH2 0x7C6 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x2F6B600D GT PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x612EF80B GT PUSH2 0x275 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x244 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x712 JUMPI DUP1 PUSH4 0x7288B344 EQ PUSH2 0x732 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x752 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x767 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x612EF80B EQ PUSH2 0x68E JUMPI DUP1 PUSH4 0x631A3EF8 EQ PUSH2 0x6A3 JUMPI DUP1 PUSH4 0x6B40CD40 EQ PUSH2 0x6C3 JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH2 0x6F2 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0x44A4A003 EQ PUSH2 0x644 JUMPI DUP1 PUSH4 0x54198CE9 EQ PUSH2 0x659 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x679 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x5B8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x5CD JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x5EF JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x60F JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x18498B1D GT PUSH2 0x35A JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x329 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x544 JUMPI DUP1 PUSH4 0x28A02F19 EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x2D88AF4A EQ PUSH2 0x585 JUMPI DUP1 PUSH4 0x2EA295FA EQ PUSH2 0x5A5 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x18498B1D EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x20F6D07C EQ PUSH2 0x52F JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x396 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0x9EC6B6B EQ PUSH2 0x499 JUMPI DUP1 PUSH4 0x12416898 EQ PUSH2 0x4AE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x4CE JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x4797930 EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0x6947A3A EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x6B3EFD6 EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x44A JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x3ED CALLDATASIZE PUSH1 0x4 PUSH2 0x46CC JUMP JUMPDEST PUSH2 0xABF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0xC68 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x518C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x445 CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0xC77 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH2 0xD63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x536C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48C PUSH2 0x487 CALLDATASIZE PUSH1 0x4 PUSH2 0x424E JUMP JUMPDEST PUSH2 0xDEE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x52DF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xE59 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x4C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4641 JUMP JUMPDEST PUSH2 0xE6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xE99 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x4FE CALLDATASIZE PUSH1 0x4 PUSH2 0x4770 JUMP JUMPDEST PUSH2 0xE9F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xEE2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xEE8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xEEE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48C PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x4201 JUMP JUMPDEST PUSH2 0xF7D JUMP JUMPDEST PUSH2 0x577 PUSH2 0x572 CALLDATASIZE PUSH1 0x4 PUSH2 0x4549 JUMP JUMPDEST PUSH2 0x1046 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP3 SWAP2 SWAP1 PUSH2 0x555D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x5A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x126B JUMP JUMPDEST PUSH2 0x577 PUSH2 0x5B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x43A2 JUMP JUMPDEST PUSH2 0x12B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1591 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E2 PUSH2 0x15A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x5586 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x60A CALLDATASIZE PUSH1 0x4 PUSH2 0x4641 JUMP JUMPDEST PUSH2 0x15A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x15BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x630 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x63F CALLDATASIZE PUSH1 0x4 PUSH2 0x424E JUMP JUMPDEST PUSH2 0x15C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1602 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x674 CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x1614 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x685 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x16B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x16BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x6BE CALLDATASIZE PUSH1 0x4 PUSH2 0x46CC JUMP JUMPDEST PUSH2 0x16EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6E3 PUSH2 0x6DE CALLDATASIZE PUSH1 0x4 PUSH2 0x470F JUMP JUMPDEST PUSH2 0x188C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x556B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x70D CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x199D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x72D CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x19E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x74D CALLDATASIZE PUSH1 0x4 PUSH2 0x467D JUMP JUMPDEST PUSH2 0x19FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1AE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1AF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1AFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1B01 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x7C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4641 JUMP JUMPDEST PUSH2 0x1B3F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1BBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1BCB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1BDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x811 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48C PUSH2 0x1BE9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x826 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1C0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x83B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH2 0x1C3F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x850 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1C9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x865 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x874 CALLDATASIZE PUSH1 0x4 PUSH2 0x424E JUMP JUMPDEST PUSH2 0x1CA9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1D1D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48C PUSH2 0x8A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x424E JUMP JUMPDEST PUSH2 0x1D2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x8C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4641 JUMP JUMPDEST PUSH2 0x1D3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1D47 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48C PUSH2 0x8FE CALLDATASIZE PUSH1 0x4 PUSH2 0x45D8 JUMP JUMPDEST PUSH2 0x1D4D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x90F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1DCF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x933 CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x1DDE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x953 CALLDATASIZE PUSH1 0x4 PUSH2 0x4641 JUMP JUMPDEST PUSH2 0x1E24 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x964 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1E37 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x988 CALLDATASIZE PUSH1 0x4 PUSH2 0x4320 JUMP JUMPDEST PUSH2 0x1E3D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x9A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x486C JUMP JUMPDEST PUSH2 0x200C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x9C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x41C7 JUMP JUMPDEST PUSH2 0x2113 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x9E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x460C JUMP JUMPDEST PUSH2 0x213E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xA08 CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x21E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0xA28 CALLDATASIZE PUSH1 0x4 PUSH2 0x427E JUMP JUMPDEST PUSH2 0x21F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xA48 CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x23A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x23C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0xA7D CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x23C7 JUMP JUMPDEST PUSH2 0x577 PUSH2 0xA90 CALLDATASIZE PUSH1 0x4 PUSH2 0x4469 JUMP JUMPDEST PUSH2 0x23F7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x24C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x24D6 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xC61 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xAE4 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xAFE SWAP3 SWAP2 SWAP1 PUSH2 0x5118 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 PUSH4 0xE762319F SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 DUP8 SWAP2 DUP11 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0xB6F SWAP2 DUP11 SWAP2 ADD PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xBBF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBE1 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5206 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC31 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP2 POP PUSH2 0xC45 DUP3 PUSH2 0xC3F PUSH2 0x1C0F JUMP JUMPDEST DUP7 PUSH2 0x24DB JUMP JUMPDEST SWAP4 POP PUSH2 0xC53 SWAP2 POP PUSH2 0x2554 SWAP1 POP JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0xC5F JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xD12 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0xCBF SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD0F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xD5A PUSH8 0xDE0B6B3A7640000 PUSH2 0xD4E PUSH2 0xD29 PUSH2 0x1B01 JUMP JUMPDEST PUSH2 0xD42 DUP6 PUSH2 0xD36 DUP10 PUSH2 0x19E3 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x25E9 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xDE6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xDBB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xDE6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xDC9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xE47 SWAP1 DUP7 SWAP1 PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE68 PUSH2 0x4C9 PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE79 PUSH2 0xEEE JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xE93 JUMPI PUSH2 0xE8B DUP2 DUP5 PUSH2 0x19FE JUMP JUMPDEST SWAP2 POP POP PUSH2 0xD5E JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAD DUP7 DUP7 DUP7 DUP7 PUSH2 0x188C JUMP JUMPDEST POP SWAP2 POP POP DUP2 DUP2 LT ISZERO PUSH2 0xEDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x537D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x250F447F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0x4A1E88FE SWAP4 PUSH2 0xF2D SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF59 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xE68 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH2 0x103E SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x115DD4B1 SWAP1 PUSH2 0xFB8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x519A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1008 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4384 JUMP JUMPDEST PUSH2 0x1035 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1039 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH2 0x2665 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x106B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x550D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1078 PUSH2 0x2838 JUMP JUMPDEST PUSH2 0x1085 DUP10 DUP10 DUP10 DUP10 DUP9 PUSH2 0xE9F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x10A2 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x541D JUMP JUMPDEST DUP10 ISZERO DUP1 PUSH2 0x10EA JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x1106 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x552D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1149 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x1149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x119A JUMPI PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP9 GT ISZERO PUSH2 0x119A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11A7 DUP8 DUP10 DUP12 PUSH2 0x28B8 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x11C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x544D JUMP JUMPDEST PUSH2 0x11CE PUSH2 0x3E8B JUMP JUMPDEST PUSH2 0x11D6 PUSH2 0x3EA9 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP11 SWAP1 MSTORE PUSH2 0x120E PUSH2 0x2AE5 JUMP JUMPDEST PUSH2 0x121F DUP13 DUP3 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x2B8B JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1240 PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP14 PUSH2 0x25E9 JUMP JUMPDEST SWAP12 POP PUSH2 0x1252 DUP14 PUSH1 0x0 DUP15 DUP13 DUP7 DUP7 DUP13 PUSH2 0x2BDA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP15 SWAP1 SWAP14 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1273 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x128F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x12D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x550D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP9 PUSH2 0x12F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x553D JUMP JUMPDEST PUSH2 0x1300 PUSH2 0x2838 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1343 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x1343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x134F JUMPI POP DUP7 CALLVALUE EQ JUMPDEST DUP1 ISZERO PUSH2 0x1363 JUMPI POP DUP7 ISZERO ISZERO DUP1 PUSH2 0x1363 JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x138A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO DUP1 PUSH2 0x1380 JUMPI POP CALLVALUE ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x138A JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x13A6 JUMPI POP DUP10 ISZERO DUP1 PUSH2 0x13A6 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x13C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x53ED JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x13DF JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x1412 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x538D JUMP JUMPDEST PUSH2 0x141A PUSH2 0x2AE5 JUMP JUMPDEST PUSH2 0x1422 PUSH2 0x3E8B JUMP JUMPDEST PUSH2 0x142A PUSH2 0x3EA9 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 AND PUSH1 0x40 DUP5 ADD MSTORE DUP2 ADD DUP12 SWAP1 MSTORE PUSH2 0x1462 DUP12 PUSH2 0x145C PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST DUP13 PUSH2 0x24DB JUMP JUMPDEST DUP4 PUSH1 0x0 PUSH1 0x20 MUL ADD DUP5 PUSH1 0x2 PUSH1 0x20 MUL ADD DUP6 PUSH1 0x1 PUSH1 0x20 MUL ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 MSTORE MSTORE DUP9 DUP2 PUSH1 0x4 PUSH1 0x20 MUL ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x1579 DUP13 DUP13 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCA74A5D9 PUSH1 0x10 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14CD SWAP3 SWAP2 SWAP1 PUSH2 0x5118 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1511 SWAP2 SWAP1 PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x153D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1561 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST DUP12 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2BDA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP14 SWAP1 SWAP13 POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x15E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x550D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x15F4 DUP4 DUP4 PUSH2 0x2E39 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE68 PUSH2 0x160F PUSH2 0xEEE JUMP JUMPDEST PUSH2 0x2F45 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 PUSH1 0x0 SHL PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x164D SWAP3 SWAP2 SWAP1 PUSH2 0x513E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xD5A DUP2 PUSH1 0x13 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1697 PUSH2 0x1B01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2F7D JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16C8 PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16D4 PUSH2 0xEEE JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x16E7 JUMPI SWAP1 SUB SWAP1 POP PUSH2 0xE6B JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xC61 JUMPI PUSH1 0x0 PUSH2 0x1702 DUP6 PUSH2 0xC3F PUSH2 0x1C0F JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x170E PUSH2 0x2554 JUMP JUMPDEST DUP2 GT PUSH2 0xC5F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1731 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x174B SWAP3 SWAP2 SWAP1 PUSH2 0x5118 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH2 0x1883 SWAP4 PUSH1 0xA SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x25DECAC0 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0x17C1 SWAP2 DUP13 SWAP2 ADD PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1811 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1833 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5206 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x184B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x185F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD36 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xC61 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x18AD JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x18BA DUP6 DUP8 DUP10 PUSH2 0x28B8 JUMP JUMPDEST SWAP1 POP PUSH2 0x18C6 DUP9 DUP3 PUSH2 0x2B8B JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH2 0x18D3 PUSH2 0x2554 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x18EA JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1993 JUMP JUMPDEST PUSH2 0x18FA DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD67F7077 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD67F7077 SWAP4 PUSH2 0x193F SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP14 SWAP2 DUP14 SWAP2 DUP11 SWAP2 DUP14 SWAP2 ADD PUSH2 0x5248 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x196B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x198F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP3 POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x19A5 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x19C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST PUSH1 0x19 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1A0F JUMPI POP DUP3 DUP3 LT ISZERO JUMPDEST ISZERO PUSH2 0xE53 JUMPI PUSH2 0x1ADA PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 PUSH2 0xD4E PUSH2 0x1AC4 PUSH9 0x56BC75E2D63100000 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4699F846 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1ABF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST PUSH2 0x2FD7 JUMP JUMPDEST PUSH2 0xD42 PUSH2 0x1AD1 DUP9 DUP9 PUSH2 0x3019 JUMP JUMPDEST PUSH2 0xD42 DUP10 PUSH2 0x2F45 JUMP JUMPDEST SWAP1 POP PUSH2 0xE53 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1B28 JUMPI PUSH2 0x1B24 PUSH2 0x304B JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1B39 PUSH2 0x1B34 DUP3 PUSH2 0x262B JUMP JUMPDEST PUSH2 0x3117 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B5E PUSH2 0x16D PUSH2 0xD4E PUSH1 0x1C PUSH1 0xB SLOAD PUSH2 0x25AF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B7B PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2FD7 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B98 PUSH9 0x56BC75E2D63100000 PUSH2 0xD4E DUP5 PUSH2 0xD42 PUSH2 0x16BB JUMP JUMPDEST SWAP1 POP PUSH2 0x1BB6 DUP6 PUSH2 0xD4E DUP4 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE68 PUSH1 0x0 PUSH2 0x3146 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C00 PUSH2 0x319C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1C36 JUMPI PUSH2 0x1C32 PUSH2 0x304B JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1B39 DUP2 PUSH2 0x262B JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xDE6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xDBB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xDE6 JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1CCD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x550D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1CDB DUP3 PUSH2 0x31A0 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x15F7 JUMPI PUSH2 0x15F7 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH2 0x3357 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC61 CALLER DUP5 DUP5 PUSH1 0x0 NOT PUSH2 0x2665 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x3146 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1D61 SWAP2 SWAP1 PUSH2 0x5180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DAE SWAP3 SWAP2 SWAP1 PUSH2 0x5164 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1DE6 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x1E02 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST PUSH1 0x1C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 PUSH2 0x4C9 DUP4 PUSH2 0xD36 PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1E45 PUSH2 0x1BE9 JUMP JUMPDEST DUP1 PUSH2 0x1E5A JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x1E76 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1F00 JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1EA3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x1ED5 JUMPI PUSH3 0x24EA00 PUSH2 0x1ED8 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1EE9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1E8D JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x1F31 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x52CE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F5F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1F87 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2005 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1FA1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1FB9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1FD7 SWAP3 SWAP2 SWAP1 PUSH2 0x5118 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1F8C JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2014 PUSH2 0x1BE9 JUMP JUMPDEST DUP1 PUSH2 0x2029 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2045 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x205F DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST GT ISZERO PUSH2 0x207D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x543D JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x2097 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST GT ISZERO PUSH2 0x20B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x543D JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x20D7 JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x20F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x546D JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2168 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54FD JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x217B SWAP2 SWAP1 PUSH2 0x5180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x21C3 SWAP3 SWAP2 SWAP1 PUSH2 0x5164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x21FD PUSH2 0x1BE9 JUMP JUMPDEST DUP1 PUSH2 0x2212 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x222E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x224D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x53DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0x2279 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x233C JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x2295 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x22AA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x418B JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x22B6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x22CB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4366 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x22DC SWAP3 SWAP2 SWAP1 PUSH2 0x5118 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2317 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x227F JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0x236D SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x52BD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x239B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x23CF PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x23EB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST PUSH2 0x23F4 DUP2 PUSH2 0x33B7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x246E JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x193BBE89 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC9DDF448 SWAP1 PUSH2 0x243B SWAP1 DUP11 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2469 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x24B4 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1046 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP11 POP SWAP11 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x24EA DUP7 DUP7 PUSH2 0x3439 JUMP JUMPDEST SWAP3 POP PUSH2 0x2537 PUSH2 0x251F PUSH8 0xDE0B6B3A7640000 PUSH2 0x1ABF PUSH12 0xA3098C68EB9427DB8000000 PUSH2 0xD4E DUP4 PUSH2 0xD42 DUP11 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST PUSH2 0xD4E DUP9 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2549 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2FD7 AND JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xF2D SWAP2 ADDRESS SWAP2 ADD PUSH2 0x518C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xC61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x53BD JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x25BE JUMPI POP PUSH1 0x0 PUSH2 0xE53 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x25CB JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xC61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x549D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC61 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x354F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x15 SLOAD PUSH1 0x0 EQ PUSH2 0xD5E JUMPI PUSH1 0xC SLOAD DUP1 PUSH2 0x2655 JUMPI PUSH2 0x2652 PUSH2 0x264A PUSH2 0xEEE JUMP JUMPDEST PUSH2 0xD36 PUSH2 0x2554 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xE8B DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ PUSH2 0x26C1 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xC4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x269C SWAP1 DUP4 SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3586 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x26E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x539D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 SWAP1 PUSH2 0x2732 SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3586 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x276B DUP3 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP3 SWAP1 SSTORE SWAP1 SWAP2 POP PUSH2 0x2791 PUSH2 0x1B01 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x27C0 JUMPI POP PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x27DD JUMPI PUSH2 0x27D1 DUP11 DUP7 DUP7 DUP5 PUSH2 0x35B2 JUMP JUMPDEST PUSH2 0x27DD DUP10 DUP5 DUP5 DUP5 PUSH2 0x35B2 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP11 PUSH1 0x40 MLOAD PUSH2 0x2820 SWAP2 SWAP1 PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2878 SWAP3 SWAP2 SWAP1 PUSH2 0x5164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 SLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x28B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 DUP3 ISZERO PUSH2 0xC61 JUMPI PUSH1 0x0 DUP1 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x78D849ED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2924 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2948 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41A9 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x29D5277C SWAP4 PUSH2 0x2981 SWAP4 DUP13 SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 ADD PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2998 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x29D0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x469C JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x29E4 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST PUSH2 0x2A00 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54ED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A16 DUP3 PUSH2 0xD4E DUP9 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A515777 PUSH1 0xE2 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x69455DDC SWAP4 PUSH2 0x2A59 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 DUP14 SWAP2 DUP9 SWAP2 ADD PUSH2 0x51DE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2AA9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ PUSH2 0x2AC9 JUMPI PUSH2 0x2AC6 DUP8 PUSH2 0xD4E DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x2AD9 DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF SLOAD TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x23F4 JUMPI PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x740FF7D PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0xE81FEFA0 SWAP4 PUSH2 0x2B35 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x518C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B63 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP6 AND PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2BAB PUSH8 0xDE0B6B3A7640000 PUSH2 0xD4E DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2BC0 DUP2 PUSH2 0x2BBB PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST PUSH2 0x3439 JUMP JUMPDEST SWAP2 POP PUSH2 0x2BD0 DUP3 PUSH3 0x24EA00 DUP4 PUSH2 0x3668 JUMP JUMPDEST SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2BE5 PUSH2 0x2838 JUMP JUMPDEST PUSH2 0x2BED PUSH2 0x2554 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD GT DUP1 ISZERO SWAP1 PUSH2 0x2C0C JUMPI POP PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST PUSH2 0x2C28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x540D JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C4E JUMPI PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x2C5C DUP8 DUP8 DUP8 DUP13 PUSH2 0x36C9 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP3 POP PUSH2 0x2C73 SWAP2 SWAP1 PUSH2 0x258A JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP9 ISZERO PUSH2 0x2C93 JUMPI PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x2C8D SWAP1 DUP11 PUSH2 0x2FD7 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 DUP10 ISZERO PUSH2 0x2C9F JUMPI POP PUSH1 0x1 JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2CB8 SWAP3 SWAP2 SWAP1 PUSH2 0x5118 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x585314CF DUP5 DUP4 DUP16 DUP7 DUP16 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D30 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x52FB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2D81 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x469C JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0x20 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x2DA9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x545D JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF06A9C6B SWAP2 PUSH2 0x2DDC SWAP2 PUSH1 0x4 ADD PUSH2 0x518C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP7 PUSH1 0x1 PUSH1 0x5 DUP2 LT PUSH2 0x2E1B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 SWAP1 SWAP8 ADD MLOAD SWAP7 SWAP13 SWAP7 SWAP12 POP SWAP6 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E45 DUP4 PUSH2 0x38FE JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2EE3 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x2E90 SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2EBC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2EE0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x2F0C SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2F20 DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2F2E DUP8 DUP7 DUP9 DUP8 PUSH2 0x3A08 JUMP JUMPDEST POP PUSH2 0x2F3B DUP8 DUP4 DUP4 DUP8 PUSH2 0x35B2 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0xD5E JUMPI PUSH1 0x0 PUSH2 0x2F57 PUSH2 0x304B JUMP JUMPDEST POP SWAP1 POP PUSH2 0xE8B DUP4 PUSH2 0xD4E PUSH2 0x16D PUSH2 0xD42 DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x2F8C JUMPI POP PUSH1 0x0 PUSH2 0x103E JUMP JUMPDEST POP DUP4 SLOAD PUSH2 0x1BB6 DUP2 PUSH2 0x2FCB PUSH8 0xDE0B6B3A7640000 PUSH2 0x2FBF DUP9 PUSH2 0x2FB3 DUP10 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3B29 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3B6F AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3BDA AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3C3E AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC61 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3586 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3029 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xE53 JUMPI PUSH2 0x1ADA DUP3 PUSH2 0xD4E DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD1979FB PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD1979FB0 SWAP4 PUSH2 0x308D SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30B9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x30DD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x47E5 JUMP JUMPDEST POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP PUSH2 0x3110 SWAP2 POP PUSH9 0x56BC75E2D63100000 SWAP1 POP PUSH2 0xD4E PUSH2 0x3103 DUP3 DUP6 PUSH2 0x2FD7 JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP2 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x0 SWAP1 DUP1 PUSH2 0x312A JUMPI PUSH1 0xE SLOAD PUSH2 0xD5A JUMP JUMPDEST PUSH2 0xD5A DUP2 PUSH2 0xD4E DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x318F JUMPI PUSH1 0xF SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3171 JUMPI PUSH2 0x316D PUSH2 0x304B JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x317F DUP3 PUSH2 0xD36 PUSH2 0x2554 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x318D JUMPI DUP1 SWAP4 POP JUMPDEST POP JUMPDEST PUSH2 0xD5A DUP4 PUSH2 0x2BBB DUP4 PUSH2 0x262B JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x31BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54BD JUMP JUMPDEST PUSH2 0x31C8 CALLER PUSH2 0x19E3 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x31FC JUMPI PUSH1 0x0 NOT DUP3 EQ PUSH2 0x31F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x547D JUMP JUMPDEST PUSH2 0x31F9 CALLER PUSH2 0x19E3 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x3204 PUSH2 0x2AE5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3213 PUSH2 0x1B34 PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3233 PUSH8 0xDE0B6B3A7640000 PUSH2 0xD4E DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x323F PUSH2 0x2554 JUMP JUMPDEST SWAP1 POP DUP2 SWAP4 POP DUP1 DUP5 GT ISZERO PUSH2 0x3264 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x53FD JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x32FD JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x32AA SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x51C3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x32FA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x331D SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3331 DUP3 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x2FD7 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x333F CALLER DUP10 DUP10 DUP10 PUSH2 0x3C84 JUMP JUMPDEST POP PUSH2 0x334C CALLER DUP4 DUP4 DUP10 PUSH2 0x35B2 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33B1 SWAP1 DUP6 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3379 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x52A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE DUP4 PUSH2 0x3DA9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x33DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x53AD JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3451 PUSH2 0x344B DUP6 PUSH2 0xD36 PUSH2 0xEEE JUMP JUMPDEST DUP5 PUSH2 0x3019 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD PUSH1 0xB SLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP3 DUP9 LT ISZERO PUSH2 0x3478 JUMPI DUP3 SWAP8 POP JUMPDEST DUP2 DUP9 GT ISZERO PUSH2 0x34EB JUMPI SWAP7 DUP2 SWAP1 SUB SWAP7 PUSH9 0x56BC75E2D63100000 DUP3 SWAP1 SUB DUP1 DUP10 GT ISZERO PUSH2 0x349E JUMPI DUP1 SWAP9 POP JUMPDEST PUSH2 0x34BF PUSH9 0x56BC75E2D63100000 PUSH2 0xD4E DUP6 PUSH2 0xD42 DUP10 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP7 POP PUSH2 0x34E3 DUP8 PUSH2 0xD36 DUP4 PUSH2 0xD4E PUSH2 0x34D6 DUP8 DUP14 PUSH2 0x2FD7 JUMP JUMPDEST DUP15 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP10 POP POP PUSH2 0x3541 JUMP JUMPDEST PUSH2 0x350C DUP6 PUSH2 0xD36 PUSH9 0x56BC75E2D63100000 PUSH2 0xD4E DUP13 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP9 POP SWAP4 SWAP6 POP DUP6 SWAP4 PUSH2 0x3523 DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP6 POP DUP7 DUP10 LT ISZERO PUSH2 0x3535 JUMPI DUP7 SWAP9 POP PUSH2 0x3541 JUMP JUMPDEST DUP6 DUP10 GT ISZERO PUSH2 0x3541 JUMPI DUP6 SWAP9 POP JUMPDEST POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x3570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP2 SWAP1 PUSH2 0x536C JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x357C JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x35AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP2 SWAP1 PUSH2 0x536C JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x35E8 SWAP1 DUP7 SWAP1 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 SWAP1 PUSH1 0x20 ADD PUSH2 0x513E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 EQ ISZERO PUSH2 0x3614 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x3645 JUMP JUMPDEST DUP5 ISZERO PUSH2 0x3645 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3642 SWAP1 DUP4 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x2F7D JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3683 PUSH4 0x1E13380 PUSH2 0xD4E DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x36A0 PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2FD7 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x36BF DUP2 PUSH2 0xD4E DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x0 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 PUSH2 0x100 SWAP1 DIV DUP2 AND SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP12 AND DUP6 EQ ISZERO PUSH2 0x371F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54CD JUMP JUMPDEST CALLVALUE SWAP7 POP DUP8 ISZERO PUSH2 0x377D JUMPI PUSH2 0x3743 DUP6 DUP6 DUP11 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3357 JUMP JUMPDEST DUP8 DUP4 GT ISZERO PUSH2 0x3778 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x3778 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP12 DUP8 SUB SWAP1 PUSH2 0x3357 JUMP JUMPDEST PUSH2 0x37B2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3237 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x37B2 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH2 0x3357 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x38B5 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x37D8 JUMPI POP DUP7 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x37E4 JUMPI POP DUP1 DUP8 LT ISZERO JUMPDEST ISZERO PUSH2 0x387E JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3824 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3838 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x32382D61 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3874 SWAP5 POP DUP16 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP5 SWAP1 PUSH2 0x3357 JUMP JUMPDEST DUP1 DUP8 SUB SWAP7 POP PUSH2 0x38B5 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x191C16B1 PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x38B5 SWAP2 DUP14 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH2 0x3E67 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x38F0 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3239 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x38F0 SWAP2 DUP8 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x3E67 JUMP JUMPDEST POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x391E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x548D JUMP JUMPDEST PUSH2 0x3926 PUSH2 0x2AE5 JUMP JUMPDEST PUSH2 0x3933 PUSH2 0x1B34 PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST SWAP1 POP PUSH2 0x3951 DUP2 PUSH2 0xD4E DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x3999 JUMPI PUSH2 0x3994 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP PUSH2 0x3E67 JUMP JUMPDEST PUSH2 0x3A03 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x39FD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3A30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x539D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3A59 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH2 0x3A8A SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xB4C03061FB5B7FED76389D5AF8F2E0DDB09F8C70D1333ABBB62582835E10ACCB SWAP1 PUSH2 0x3ACC SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x556B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3B18 SWAP2 SWAP1 PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x3B3E JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x3B53 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3B53 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0xC61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x551D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3B7E JUMPI POP PUSH1 0x0 PUSH2 0xE53 JUMP JUMPDEST DUP3 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x3B92 JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ JUMPDEST ISZERO PUSH2 0x3BAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54DD JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x3BBC JUMPI INVALID JUMPDEST SDIV EQ PUSH2 0xC61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54DD JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3BF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x554D JUMP JUMPDEST DUP2 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x3C0D JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP4 EQ JUMPDEST ISZERO PUSH2 0x3C2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x542D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x3C35 JUMPI INVALID JUMPDEST SDIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x3C53 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x3C68 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3C68 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0xC61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x53CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD DUP3 SWAP2 PUSH2 0x3CCC SWAP2 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3586 AND JUMP JUMPDEST SWAP1 POP PUSH1 0xA DUP2 GT PUSH2 0x3CED JUMPI PUSH2 0x3CE6 DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD PUSH2 0x3D1B SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2FD7 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0x743033787F4738FF4D6A7225CE2BD0977EE5F86B91A902A58F5E4D0B297B4644 SWAP1 PUSH2 0x3D5D SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x556B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3B18 SWAP2 SWAP1 PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3DC5 SWAP2 SWAP1 PUSH2 0x5180 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3E02 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3E07 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP4 SWAP1 PUSH2 0x3E2C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP2 SWAP1 PUSH2 0x536C JUMP JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x2005 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x3E48 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4384 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0xEDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP2 SWAP1 PUSH2 0x536C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2005 SWAP1 DUP7 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x3379 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0x51DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE53 DUP2 PUSH2 0x56DA JUMP JUMPDEST DUP1 MLOAD PUSH2 0xE53 DUP2 PUSH2 0x56DA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3EEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3F06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3F1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3F36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3F49 PUSH2 0x3F44 DUP3 PUSH2 0x55BA JUMP JUMPDEST PUSH2 0x5594 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x3F6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F3B JUMPI DUP2 PUSH2 0x3F84 DUP9 DUP3 PUSH2 0x402F JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3F71 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3FAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3FB9 PUSH2 0x3F44 DUP3 PUSH2 0x55BA JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x3FDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F3B JUMPI DUP2 PUSH2 0x3FF5 DUP9 DUP3 PUSH2 0x40CA JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3FE2 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE53 DUP2 PUSH2 0x56EE JUMP JUMPDEST DUP1 MLOAD PUSH2 0xE53 DUP2 PUSH2 0x56EE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE53 DUP2 PUSH2 0x56F7 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xE53 DUP2 PUSH2 0x56F7 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x404C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3F1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x408C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x409A PUSH2 0x3F44 DUP3 PUSH2 0x55DA JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x40B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x40C1 DUP4 DUP3 DUP5 PUSH2 0x5660 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x40E8 PUSH2 0x100 PUSH2 0x5594 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x40F6 DUP5 DUP5 PUSH2 0x4024 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x4107 DUP5 DUP5 DUP4 ADD PUSH2 0x400E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x411B DUP5 DUP3 DUP6 ADD PUSH2 0x3EC7 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x412F DUP5 DUP3 DUP6 ADD PUSH2 0x3EC7 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x4143 DUP5 DUP3 DUP6 ADD PUSH2 0x3EC7 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x4157 DUP5 DUP3 DUP6 ADD PUSH2 0x4024 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x416B DUP5 DUP3 DUP6 ADD PUSH2 0x4024 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x417F DUP5 DUP3 DUP6 ADD PUSH2 0x4024 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x419D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP5 DUP5 PUSH2 0x3EC7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP5 DUP5 PUSH2 0x3ED2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x41E6 DUP6 DUP6 PUSH2 0x3EC7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x41F7 DUP6 DUP3 DUP7 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4222 DUP7 DUP7 PUSH2 0x3EC7 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4233 DUP7 DUP3 DUP8 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4244 DUP7 DUP3 DUP8 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4261 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x426D DUP6 DUP6 PUSH2 0x3EC7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x41F7 DUP6 DUP3 DUP7 ADD PUSH2 0x4024 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x42B6 DUP8 DUP3 DUP9 ADD PUSH2 0x3EDD JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x42E0 DUP8 DUP3 DUP9 ADD PUSH2 0x3EDD JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x42FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x103E DUP5 DUP3 DUP6 ADD PUSH2 0x3F25 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4355 DUP6 DUP3 DUP7 ADD PUSH2 0x3F9A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x41F7 DUP6 DUP3 DUP7 ADD PUSH2 0x400E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP5 DUP5 PUSH2 0x400E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP5 DUP5 PUSH2 0x4019 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x43BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x43CB DUP12 DUP12 PUSH2 0x4024 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x43DC DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x43ED DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x43FE DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x440F DUP12 DUP3 DUP13 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x4420 DUP12 DUP3 DUP13 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x4431 DUP12 DUP3 DUP13 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x444D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4459 DUP12 DUP3 DUP13 ADD PUSH2 0x407B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x4489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4495 DUP14 DUP14 PUSH2 0x4024 JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x44A6 DUP14 DUP3 DUP15 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x44B7 DUP14 DUP3 DUP15 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x44C8 DUP14 DUP3 DUP15 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x44D9 DUP14 DUP3 DUP15 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x44EA DUP14 DUP3 DUP15 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x44FB DUP14 DUP3 DUP15 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x450C DUP14 DUP3 DUP15 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4535 DUP14 DUP3 DUP15 ADD PUSH2 0x403A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4572 DUP12 DUP12 PUSH2 0x4024 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x4583 DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x4594 DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x45A5 DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x45B6 DUP12 DUP3 DUP13 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x45C7 DUP12 DUP3 DUP13 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x4431 DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x103E DUP5 DUP3 DUP6 ADD PUSH2 0x407B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x461F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4355 DUP6 DUP3 DUP7 ADD PUSH2 0x407B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP5 DUP5 PUSH2 0x4024 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP5 DUP5 PUSH2 0x402F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x426D DUP6 DUP6 PUSH2 0x4024 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46BB DUP6 DUP6 PUSH2 0x402F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x41F7 DUP6 DUP3 DUP7 ADD PUSH2 0x402F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x46E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46ED DUP7 DUP7 PUSH2 0x4024 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x46FE DUP7 DUP3 DUP8 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4244 DUP7 DUP3 DUP8 ADD PUSH2 0x3EC7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4731 DUP8 DUP8 PUSH2 0x4024 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4742 DUP8 DUP3 DUP9 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4753 DUP8 DUP3 DUP9 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4764 DUP8 DUP3 DUP9 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4794 DUP9 DUP9 PUSH2 0x4024 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x47A5 DUP9 DUP3 DUP10 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x47B6 DUP9 DUP3 DUP10 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x47C7 DUP9 DUP3 DUP10 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x47D8 DUP9 DUP3 DUP10 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x47FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x480A DUP10 DUP10 PUSH2 0x402F JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x481B DUP10 DUP3 DUP11 ADD PUSH2 0x402F JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x482C DUP10 DUP3 DUP11 ADD PUSH2 0x402F JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x483D DUP10 DUP3 DUP11 ADD PUSH2 0x402F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x484E DUP10 DUP3 DUP11 ADD PUSH2 0x402F JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x485F DUP10 DUP3 DUP11 ADD PUSH2 0x402F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4893 DUP11 DUP11 PUSH2 0x4024 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x48A4 DUP11 DUP3 DUP12 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x48B5 DUP11 DUP3 DUP12 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x48C6 DUP11 DUP3 DUP12 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x48D7 DUP11 DUP3 DUP12 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x48E8 DUP11 DUP3 DUP12 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x48F9 DUP11 DUP3 DUP12 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4914 DUP4 DUP4 PUSH2 0x494C JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4914 DUP4 DUP4 PUSH2 0x4ABF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4934 DUP4 DUP4 PUSH2 0x5078 JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x4946 DUP2 PUSH2 0x564F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4946 DUP2 PUSH2 0x5620 JUMP JUMPDEST PUSH2 0x4946 PUSH2 0x4961 DUP3 PUSH2 0x5620 JUMP JUMPDEST PUSH2 0x5698 JUMP JUMPDEST PUSH2 0x496F DUP2 PUSH2 0x5607 JUMP JUMPDEST PUSH2 0x4979 DUP2 DUP5 PUSH2 0xD5E JUMP JUMPDEST SWAP3 POP PUSH2 0x4984 DUP3 PUSH2 0xE6B JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEDA JUMPI DUP2 MLOAD PUSH2 0x499C DUP8 DUP3 PUSH2 0x4908 JUMP JUMPDEST SWAP7 POP PUSH2 0x49A7 DUP4 PUSH2 0x5601 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4988 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49BD DUP3 PUSH2 0x560D JUMP JUMPDEST PUSH2 0x49C7 DUP2 DUP6 PUSH2 0x5617 JUMP JUMPDEST SWAP4 POP PUSH2 0x49D2 DUP4 PUSH2 0x5601 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4A00 JUMPI DUP2 MLOAD PUSH2 0x49EA DUP9 DUP3 PUSH2 0x491C JUMP JUMPDEST SWAP8 POP PUSH2 0x49F5 DUP4 PUSH2 0x5601 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x49D6 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A16 DUP3 PUSH2 0x560D JUMP JUMPDEST PUSH2 0x4A20 DUP2 DUP6 PUSH2 0x5617 JUMP JUMPDEST SWAP4 POP PUSH2 0x4A2B DUP4 PUSH2 0x5601 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4A00 JUMPI DUP2 MLOAD PUSH2 0x4A43 DUP9 DUP3 PUSH2 0x4928 JUMP JUMPDEST SWAP8 POP PUSH2 0x4A4E DUP4 PUSH2 0x5601 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4A2F JUMP JUMPDEST PUSH2 0x4A62 DUP2 PUSH2 0x5611 JUMP JUMPDEST PUSH2 0x4A6C DUP2 DUP5 PUSH2 0xD5E JUMP JUMPDEST SWAP3 POP PUSH2 0x4A77 DUP3 PUSH2 0xE6B JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEDA JUMPI DUP2 MLOAD PUSH2 0x4A8F DUP8 DUP3 PUSH2 0x491C JUMP JUMPDEST SWAP7 POP PUSH2 0x4A9A DUP4 PUSH2 0x5601 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4A7B JUMP JUMPDEST PUSH2 0x4946 DUP2 PUSH2 0x562B JUMP JUMPDEST PUSH2 0x4946 PUSH2 0x4ABA DUP3 PUSH2 0x562B JUMP JUMPDEST PUSH2 0x56A3 JUMP JUMPDEST PUSH2 0x4946 DUP2 PUSH2 0xE6B JUMP JUMPDEST PUSH2 0x4946 PUSH2 0x4AD4 DUP3 PUSH2 0xE6B JUMP JUMPDEST PUSH2 0xE6B JUMP JUMPDEST PUSH2 0x4946 PUSH2 0x4AD4 DUP3 PUSH2 0x5630 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AF0 DUP3 PUSH2 0x560D JUMP JUMPDEST PUSH2 0x4AFA DUP2 DUP6 PUSH2 0x5617 JUMP JUMPDEST SWAP4 POP PUSH2 0x4B0A DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x566C JUMP JUMPDEST PUSH2 0x4B13 DUP2 PUSH2 0x56C4 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B28 DUP3 PUSH2 0x560D JUMP JUMPDEST PUSH2 0x4B32 DUP2 DUP6 PUSH2 0xD5E JUMP JUMPDEST SWAP4 POP PUSH2 0x4B42 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x566C JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B59 PUSH1 0xC DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH12 0x636F6C6C20746F6F206C6F77 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B81 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9F PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BBD PUSH1 0x26 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C05 PUSH1 0x1B DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C3E PUSH1 0x21 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C81 PUSH1 0xE DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CAB PUSH1 0x1 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CC8 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CE6 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D04 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D22 PUSH1 0x21 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D65 PUSH1 0x15 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D96 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DB4 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DD2 PUSH1 0xF DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DFD PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E1B PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E39 PUSH1 0x21 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E7C PUSH1 0xC DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EA4 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EC2 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EE0 PUSH1 0x27 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206D756C7469706C69636174696F6E206F DUP2 MSTORE PUSH7 0x766572666C6F77 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F29 PUSH1 0x1D DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x696E76616C6964207261746520636F6C6C61746572616C20746F6B656E000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F62 PUSH1 0xA DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH10 0x37B7363CA830BAB9B2B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F88 PUSH1 0xC DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FB0 PUSH1 0x24 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 DUP2 MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FF6 PUSH1 0x18 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x34303120757365206F66206578697374696E67206C6F616E0000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x502F PUSH1 0x1 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x504C PUSH1 0x20 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206279207A65726F DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x508A DUP5 DUP3 PUSH2 0x4ABF JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x509D PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4AA5 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x50B0 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x494C JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x50C3 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x494C JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x50D6 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x494C JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x50E9 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4ABF JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x50FC PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x4ABF JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x33B1 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x4946 DUP2 PUSH2 0x5649 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5124 DUP3 DUP6 PUSH2 0x4955 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x5134 DUP3 DUP5 PUSH2 0x4AAE JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x514A DUP3 DUP6 PUSH2 0x4955 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x515A DUP3 DUP5 PUSH2 0x4AC8 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5170 DUP3 DUP6 PUSH2 0x4AD9 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x515A DUP3 DUP5 PUSH2 0x4AC8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC61 DUP3 DUP5 PUSH2 0x4B1D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE53 DUP3 DUP5 PUSH2 0x494C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE53 DUP3 DUP5 PUSH2 0x493D JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x51B6 DUP3 DUP6 PUSH2 0x494C JUMP JUMPDEST PUSH2 0xC61 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x494C JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x51D1 DUP3 DUP6 PUSH2 0x494C JUMP JUMPDEST PUSH2 0xC61 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x493D JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x51EC DUP3 DUP7 PUSH2 0x494C JUMP JUMPDEST PUSH2 0x51F9 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x494C JUMP JUMPDEST PUSH2 0x103E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4ABF JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x5214 DUP3 DUP9 PUSH2 0x494C JUMP JUMPDEST PUSH2 0x5221 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x494C JUMP JUMPDEST PUSH2 0x522E PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x523B PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x36BF PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4AA5 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x5256 DUP3 DUP10 PUSH2 0x494C JUMP JUMPDEST PUSH2 0x5263 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x494C JUMP JUMPDEST PUSH2 0x5270 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x527D PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x528A PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x5297 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4ABF JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x52B0 DUP3 DUP6 PUSH2 0x494C JUMP JUMPDEST PUSH2 0xC61 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4ABF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xC61 DUP2 DUP5 PUSH2 0x49B2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xC61 DUP2 DUP5 PUSH2 0x4A0B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE53 DUP3 DUP5 PUSH2 0x4AA5 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE53 DUP3 DUP5 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x1C0 DUP2 ADD PUSH2 0x530A DUP3 DUP11 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x5317 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x5324 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4AA5 JUMP JUMPDEST PUSH2 0x5331 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x533E PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4966 JUMP JUMPDEST PUSH2 0x534C PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4A59 JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x1A0 DUP4 ADD MSTORE PUSH2 0x535F DUP2 DUP5 PUSH2 0x4AE5 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xC61 DUP2 DUP5 PUSH2 0x4AE5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4B4C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4B74 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4B92 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4BB0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4BF8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4C31 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4C74 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4C9E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4CBB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4CD9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4CF7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4D15 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4D58 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4D89 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4DC5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4DF0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4E2C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4E6F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4E97 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4EB5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4ED3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4F1C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4F55 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4F7B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4FA3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4FE9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x5022 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x503F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x52B0 DUP3 DUP6 PUSH2 0x4ABF JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x5579 DUP3 DUP7 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x51F9 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4ABF JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE53 DUP3 DUP5 PUSH2 0x510F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x55B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x55D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x55F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST POP PUSH1 0x4 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x5 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x563D JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x5620 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5687 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x566F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x33B1 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x56AE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x56B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x56D4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x56CE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x56E3 DUP2 PUSH2 0x5620 JUMP JUMPDEST DUP2 EQ PUSH2 0x23F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56E3 DUP2 PUSH2 0x562B JUMP JUMPDEST PUSH2 0x56E3 DUP2 PUSH2 0xE6B JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH8 0xB5B5F2C3A4D60367 0xDC 0xBF PUSH11 0xD233BF9B3EF127DEFCBBE6 0x4F 0x2D 0xE2 0xF 0xBD 0xEE 0xBA 0x22 CALL PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "2146:54774:5:-;;;493:1:143;661:55;;;;697:12:142;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;2146:54774:5;;780:87:137;853:10;780:87;:::o;2146:54774:5:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106103c35760003560e01c80637e37c08c116101f2578063ca37e6661161010d578063e41b07e3116100a0578063f2fde38b1161006f578063f2fde38b14610a62578063f6b69f9914610a82578063f851a44014610a95578063ffa1ad7414610aaa576103c3565b8063e41b07e3146109ed578063e697d2ee14610a0d578063eebc508114610a2d578063ef2b0b3914610a4d576103c3565b8063d8f06c83116100dc578063d8f06c831461096d578063d97206a41461098d578063dd62ed3e146109ad578063e3cded61146109cd576103c3565b8063ca37e66614610903578063cb926cb314610918578063d65a502114610938578063d759dbeb14610958576103c3565b806395d89b4111610185578063a9059cbb11610154578063a9059cbb1461088e578063b9fe1a8f146108ae578063ba0e43bf146108ce578063be194217146108e3576103c3565b806395d89b411461082f5780639bda3a98146108445780639dc29fac146108595780639fd0506d14610879576103c3565b80638da5cb5b116101c15780638da5cb5b146107db5780638ee6c4e6146107f05780638f32d59b146108055780638fb807c51461081a576103c3565b80637e37c08c1461077c5780637ff9b59614610791578063829b38f4146107a65780638325a1c0146107c6576103c3565b80632f6b600d116102e2578063612ef80b1161027557806370a082311161024457806370a08231146107125780637288b34414610732578063797bf385146107525780637b7933b414610767576103c3565b8063612ef80b1461068e578063631a3ef8146106a35780636b40cd40146106c3578063704b6c02146106f2576103c3565b806340c10f19116102b157806340c10f191461062457806344a4a0031461064457806354198ce91461065957806356e07d7014610679576103c3565b80632f6b600d146105b8578063313ce567146105cd5780633291c11a146105ef578063330691ac1461060f576103c3565b806318498b1d1161035a57806323b872dd1161032957806323b872dd1461054457806328a02f19146105645780632d88af4a146105855780632ea295fa146105a5576103c3565b806318498b1d146104e35780631d0806ae146105055780631f68f20a1461051a57806320f6d07c1461052f576103c3565b8063095ea7b311610396578063095ea7b31461046c57806309ec6b6b1461049957806312416898146104ae57806318160ddd146104ce576103c3565b806304797930146103d257806306947a3a1461040857806306b3efd61461042a57806306fdde031461044a575b3480156103cf57600080fd5b50005b3480156103de57600080fd5b506103f26103ed3660046146cc565b610abf565b6040516103ff91906152ed565b60405180910390f35b34801561041457600080fd5b5061041d610c68565b6040516103ff919061518c565b34801561043657600080fd5b506103f261044536600461418b565b610c77565b34801561045657600080fd5b5061045f610d63565b6040516103ff919061536c565b34801561047857600080fd5b5061048c61048736600461424e565b610dee565b6040516103ff91906152df565b3480156104a557600080fd5b506103f2610e59565b3480156104ba57600080fd5b506103f26104c9366004614641565b610e6e565b3480156104da57600080fd5b506103f2610e99565b3480156104ef57600080fd5b506105036104fe366004614770565b610e9f565b005b34801561051157600080fd5b506103f2610ee2565b34801561052657600080fd5b506103f2610ee8565b34801561053b57600080fd5b506103f2610eee565b34801561055057600080fd5b5061048c61055f366004614201565b610f7d565b610577610572366004614549565b611046565b6040516103ff92919061555d565b34801561059157600080fd5b506105036105a036600461418b565b61126b565b6105776105b33660046143a2565b6112b1565b3480156105c457600080fd5b5061041d611591565b3480156105d957600080fd5b506105e26115a0565b6040516103ff9190615586565b3480156105fb57600080fd5b506103f261060a366004614641565b6115a9565b34801561061b57600080fd5b506103f26115bb565b34801561063057600080fd5b506103f261063f36600461424e565b6115c1565b34801561065057600080fd5b506103f2611602565b34801561066557600080fd5b506103f261067436600461418b565b611614565b34801561068557600080fd5b506103f26116b5565b34801561069a57600080fd5b506103f26116bb565b3480156106af57600080fd5b506103f26106be3660046146cc565b6116ec565b3480156106cf57600080fd5b506106e36106de36600461470f565b61188c565b6040516103ff9392919061556b565b3480156106fe57600080fd5b5061050361070d36600461418b565b61199d565b34801561071e57600080fd5b506103f261072d36600461418b565b6119e3565b34801561073e57600080fd5b506103f261074d36600461467d565b6119fe565b34801561075e57600080fd5b5061041d611ae1565b34801561077357600080fd5b506103f2611af5565b34801561078857600080fd5b506103f2611afb565b34801561079d57600080fd5b506103f2611b01565b3480156107b257600080fd5b506103f26107c1366004614641565b611b3f565b3480156107d257600080fd5b506103f2611bbf565b3480156107e757600080fd5b5061041d611bcb565b3480156107fc57600080fd5b5061041d611bda565b34801561081157600080fd5b5061048c611be9565b34801561082657600080fd5b506103f2611c0f565b34801561083b57600080fd5b5061045f611c3f565b34801561085057600080fd5b5061041d611c9a565b34801561086557600080fd5b506103f261087436600461424e565b611ca9565b34801561088557600080fd5b5061041d611d1d565b34801561089a57600080fd5b5061048c6108a936600461424e565b611d2c565b3480156108ba57600080fd5b506103f26108c9366004614641565b611d3c565b3480156108da57600080fd5b506103f2611d47565b3480156108ef57600080fd5b5061048c6108fe3660046145d8565b611d4d565b34801561090f57600080fd5b5061041d611dcf565b34801561092457600080fd5b5061050361093336600461418b565b611dde565b34801561094457600080fd5b506103f2610953366004614641565b611e24565b34801561096457600080fd5b506103f2611e37565b34801561097957600080fd5b50610503610988366004614320565b611e3d565b34801561099957600080fd5b506105036109a836600461486c565b61200c565b3480156109b957600080fd5b506103f26109c83660046141c7565b612113565b3480156109d957600080fd5b506105036109e836600461460c565b61213e565b3480156109f957600080fd5b506103f2610a0836600461418b565b6121e3565b348015610a1957600080fd5b50610503610a2836600461427e565b6121f5565b348015610a3957600080fd5b506103f2610a4836600461418b565b6123a6565b348015610a5957600080fd5b506103f26123c1565b348015610a6e57600080fd5b50610503610a7d36600461418b565b6123c7565b610577610a90366004614469565b6123f7565b348015610aa157600080fd5b5061041d6124c7565b348015610ab657600080fd5b506103f26124d6565b60008315610c61576001600160a01b038216610ae4576017546001600160a01b031691505b600060106000846001604051602001610afe929190615118565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506001600160a01b039182169363e762319f936101009091049092169187918a91869163ca74a5d991610b6f918a91016152ed565b60206040518083038186803b158015610b8757600080fd5b505afa158015610b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bbf919081019061465f565b60016040518663ffffffff1660e01b8152600401610be1959493929190615206565b60206040518083038186803b158015610bf957600080fd5b505afa158015610c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c31919081019061465f565b9150610c4582610c3f611c0f565b866124db565b9350610c5391506125549050565b821115610c5f57600091505b505b9392505050565b6016546001600160a01b031681565b601c5460009081906001600160a01b031615610d1257601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690610cbf90309087906004016151a8565b60206040518083038186803b158015610cd757600080fd5b505afa158015610ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d0f919081019061465f565b90505b610d5a670de0b6b3a7640000610d4e610d29611b01565b610d4285610d36896119e3565b9063ffffffff61258a16565b9063ffffffff6125af16565b9063ffffffff6125e916565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610de65780601f10610dbb57610100808354040283529160200191610de6565b820191906000526020600020905b815481529060010190602001808311610dc957829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e479086906152ed565b60405180910390a35060015b92915050565b6000610e686104c9600061262b565b90505b90565b600080610e79610eee565b90508015610e9357610e8b81846119fe565b915050610d5e565b50919050565b60155490565b6000610ead8686868661188c565b5091505081811015610eda5760405162461bcd60e51b8152600401610ed19061537d565b60405180910390fd5b505050505050565b600e5481565b60055481565b6016546004805460405163250f447f60e11b81526000936001600160a01b0390811693634a1e88fe93610f2d93309361010090920490911691016151a8565b60206040518083038186803b158015610f4557600080fd5b505afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e68919081019061465f565b60165460405163115dd4b160e01b815260009161103e918691869186916001600160a01b03169063115dd4b190610fb890339060040161519a565b60206040518083038186803b158015610fd057600080fd5b505afa158015610fe4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110089190810190614384565b611035576001600160a01b0388166000908152601460209081526040808320338452909152902054611039565b6000195b612665565b949350505050565b60008060016000541461106b5760405162461bcd60e51b8152600401610ed19061550d565b6002600055611078612838565b6110858989898988610e9f565b6001600160a01b0386166110a2576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156110d55760405162461bcd60e51b8152600401610ed19061541d565b8915806110ea5750336001600160a01b038616145b6111065760405162461bcd60e51b8152600401610ed19061552d565b6001600160a01b03861660009081526012602052604090205415611149576001600160a01b03861660009081526012602052604090205487111561114957600080fd5b60045461010090046001600160a01b03166000908152601260205260409020541561119a5760045461010090046001600160a01b031660009081526012602052604090205488111561119a57600080fd5b60006111a787898b6128b8565b9050806111c65760405162461bcd60e51b8152600401610ed19061544d565b6111ce613e8b565b6111d6613ea9565b3082526001600160a01b038816602080840182905260408401919091528101839052606081018b9052608081018a905261120e612ae5565b61121f8c8260016020020151612b8b565b825260208201526112406f4b3b4ca85a86c47a098a2240000000008d6125e9565b9b506112528d60008e8c86868c612bda565b6001600055909e909d509b505050505050505050505050565b611273611be9565b61128f5760405162461bcd60e51b8152600401610ed1906154ad565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806001600054146112d65760405162461bcd60e51b8152600401610ed19061550d565b6002600055886112f85760405162461bcd60e51b8152600401610ed19061553d565b611300612838565b6001600160a01b03861660009081526012602052604090205415611343576001600160a01b03861660009081526012602052604090205487111561134357600080fd5b34158061134f57508634145b801561136357508615158061136357508915155b801561138a57506001600160a01b03861615158061138057503415155b8061138a57508915155b80156113a657508915806113a65750336001600160a01b038616145b6113c25760405162461bcd60e51b8152600401610ed1906153ed565b6001600160a01b0386166113df576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156114125760405162461bcd60e51b8152600401610ed19061538d565b61141a612ae5565b611422613e8b565b61142a613ea9565b3082526001600160a01b03878116602080850191909152908716604084015281018b90526114628b61145c600061262b565b8c6124db565b8360006020020184600260200201856001602002019290925291905252888160046020020181815250506115798c8c601660009054906101000a90046001600160a01b03166001600160a01b031663ca74a5d9601060008e60016040516020016114cd929190615118565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020546040518263ffffffff1660e01b815260040161151191906152ed565b60206040518083038186803b15801561152957600080fd5b505afa15801561153d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611561919081019061465f565b8b868660405180602001604052806000815250612bda565b6001600055909d909c509a5050505050505050505050565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b60006001600054146115e55760405162461bcd60e51b8152600401610ed19061550d565b60026000556115f48383612e39565b90505b600160005592915050565b6000610e6861160f610eee565b612f45565b600080827f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb660001b60405160200161164d92919061513e565b604051602081830303815290604052805190602001209050610d5a8160136000866001600160a01b03166001600160a01b0316815260200190815260200160002054611697611b01565b6001600160a01b038716600090815260116020526040902054612f7d565b600a5481565b6000806116c8600061262b565b905060006116d4610eee565b9050808211156116e75790039050610e6b565b505090565b60008315610c6157600061170285610c3f611c0f565b9250505061170e612554565b8111610c5f576001600160a01b038316611731576017546001600160a01b031692505b60006010600085600160405160200161174b929190615118565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b815292945061188393600a936001600160a01b03938416936325decac09361010090930416918a918991869163ca74a5d9916117c1918c91016152ed565b60206040518083038186803b1580156117d957600080fd5b505afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611811919081019061465f565b60016040518663ffffffff1660e01b8152600401611833959493929190615206565b60206040518083038186803b15801561184b57600080fd5b505afa15801561185f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d36919081019061465f565b92505050610c61565b600080806001600160a01b0384166118ad576017546001600160a01b031693505b60006118ba8587896128b8565b90506118c68882612b8b565b90945091506118d3612554565b8411156118ea575060009250829150819050611993565b6118fa878563ffffffff61258a16565b6016546004805460405163d67f707760e01b8152939a506001600160a01b039283169363d67f70779361193f9361010090930416918a918d918d918a918d9101615248565b60206040518083038186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061198f919081019061465f565b9250505b9450945094915050565b6119a5611be9565b6119c15760405162461bcd60e51b8152600401610ed1906154ad565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60008215801590611a0f5750828210155b15610e5357611ada701d6329f1c35ca4bfabb9f5610000000000610d4e611ac468056bc75e2d63100000601660009054906101000a90046001600160a01b03166001600160a01b0316634699f8466040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8757600080fd5b505afa158015611a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611abf919081019061465f565b612fd7565b610d42611ad18888613019565b610d4289612f45565b9050610e53565b60045461010090046001600160a01b031681565b600d5481565b60085481565b600f546000908190426001600160581b03908116911614611b2857611b2461304b565b9150505b611b39611b348261262b565b613117565b91505090565b600080611b5e61016d610d4e601c600b546125af90919063ffffffff16565b90506000611b7b68056bc75e2d631000008363ffffffff612fd716565b90506000611b9868056bc75e2d63100000610d4e84610d426116bb565b9050611bb685610d4e83670de0b6b3a764000063ffffffff6125af16565b95945050505050565b6000610e686000613146565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316611c0061319c565b6001600160a01b031614905090565b600f546000908190426001600160581b03908116911614611c3657611c3261304b565b9150505b611b398161262b565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610de65780601f10610dbb57610100808354040283529160200191610de6565b6018546001600160a01b031681565b6000600160005414611ccd5760405162461bcd60e51b8152600401610ed19061550d565b6002600055611cdb826131a0565b905080156115f7576115f7600460019054906101000a90046001600160a01b03168483604051806040016040528060018152602001603560f81b815250613357565b601b546001600160a01b031681565b6000610c61338484600019612665565b6000610e5382613146565b60095481565b60008082604051602001611d619190615180565b6040516020818303038152906040528051906020012090506000817fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001611dae929190615164565b60408051808303601f19018152919052805160209091012054949350505050565b601a546001600160a01b031681565b611de6611be9565b611e025760405162461bcd60e51b8152600401610ed1906154ad565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e536104c983610d36600061262b565b60075481565b611e45611be9565b80611e5a57506019546001600160a01b031633145b611e765760405162461bcd60e51b8152600401610ed1906154ad565b60045460609061010090046001600160a01b031660005b8451811015611f005781858281518110611ea357fe5b6020026020010151606001906001600160a01b031690816001600160a01b03168152505083611ed5576224ea00611ed8565b60005b62ffffff16858281518110611ee957fe5b602090810291909101015160e00152600101611e8d565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e90611f319087906004016152ce565b600060405180830381600087803b158015611f4b57600080fd5b505af1158015611f5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f8791908101906142ec565b915060005b825181101561200557828181518110611fa157fe5b602002602001015160106000878481518110611fb957fe5b60200260200101516080015187604051602001611fd7929190615118565b60408051601f1981840301815291815281516020928301208352908201929092520160002055600101611f8c565b5050505050565b612014611be9565b8061202957506019546001600160a01b031633145b6120455760405162461bcd60e51b8152600401610ed1906154ad565b68056bc75e2d6310000061205f878963ffffffff61258a16565b111561207d5760405162461bcd60e51b8152600401610ed19061543d565b68056bc75e2d63100000612097858763ffffffff61258a16565b11156120b55760405162461bcd60e51b8152600401610ed19061543d565b68056bc75e2d6310000083111580156120d7575068056bc75e2d631000008211155b6120f35760405162461bcd60e51b8152600401610ed19061546d565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b031633146121685760405162461bcd60e51b8152600401610ed1906154fd565b60008260405160200161217b9190615180565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f26040516020016121c3929190615164565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b6121fd611be9565b8061221257506019546001600160a01b031633145b61222e5760405162461bcd60e51b8152600401610ed1906154ad565b82811461224d5760405162461bcd60e51b8152600401610ed1906153dd565b604080518481526020808602820101909152606090848015612279578160200160208202803883390190505b50905060005b8481101561233c57600086868381811061229557fe5b90506020020160206122aa919081019061418b565b8585848181106122b657fe5b90506020020160206122cb9190810190614366565b6040516020016122dc929190615118565b6040516020818303038152906040528051906020012060001c9050601060008281526020019081526020016000205483838151811061231757fe5b602090810291909101810191909152600091825260109052604081205560010161227f565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a9061236d9084906004016152bd565b600060405180830381600087803b15801561238757600080fd5b505af115801561239b573d6000803e3d6000fd5b505050505050505050565b6001600160a01b031660009081526011602052604090205490565b600b5481565b6123cf611be9565b6123eb5760405162461bcd60e51b8152600401610ed1906154ad565b6123f4816133b7565b50565b6000806001600160a01b0385161561246e5760165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf4489061243b908a9089906004016151a8565b600060405180830381600087803b15801561245557600080fd5b505af1158015612469573d6000803e3d6000fd5b505050505b6124b48c8c8c8c8c8c8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061104692505050565b915091509a509a98505050505050505050565b6019546001600160a01b031681565b600681565b60008060006124ea8686613439565b925061253761251f670de0b6b3a7640000611abf6b0a3098c68eb9427db8000000610d4e83610d428a8c63ffffffff6125af16565b610d4e88670de0b6b3a764000063ffffffff6125af16565b9050612549818763ffffffff612fd716565b915093509350939050565b600480546040516370a0823160e01b81526000926101009092046001600160a01b0316916370a0823191610f2d9130910161518c565b600082820183811015610c615760405162461bcd60e51b8152600401610ed1906153bd565b6000826125be57506000610e53565b828202828482816125cb57fe5b0414610c615760405162461bcd60e51b8152600401610ed19061549d565b6000610c6183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061354f565b6000601554600014610d5e57600c54806126555761265261264a610eee565b610d36612554565b90505b610e8b818463ffffffff61258a16565b600060001982146126c1576040805180820190915260028152610c4d60f21b602082015261269c908390859063ffffffff61358616565b6001600160a01b03861660009081526014602090815260408083203384529091529020555b6001600160a01b0384166126e75760405162461bcd60e51b8152600401610ed19061539d565b6001600160a01b03851660009081526013602090815260408083205481518083019092526002825261189b60f11b92820192909252909190612732908390879063ffffffff61358616565b6001600160a01b0380891660009081526013602052604080822084905591891681529081205491925061276b828863ffffffff61258a16565b6001600160a01b0389166000908152601360205260408120829055909150612791611b01565b601c549091506001600160a01b038b81169116148015906127c05750601c546001600160a01b038a8116911614155b156127dd576127d18a8686846135b2565b6127dd898484846135b2565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a60405161282091906152ed565b60405180910390a35060019998505050505050505050565b600080356001600160e01b0319167fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001612878929190615164565b60405160208183030381529060405280519060200120905060008154905080156128b45760405162461bcd60e51b8152600401610ed1906154ad565b5050565b808215610c6157600080601660009054906101000a90046001600160a01b03166001600160a01b03166378d849ed6040518163ffffffff1660e01b815260040160206040518083038186803b15801561291057600080fd5b505afa158015612924573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061294891908101906141a9565b60048054604051630a7549df60e21b81526001600160a01b03938416936329d5277c93612981938c9361010090910490921691016151a8565b604080518083038186803b15801561299857600080fd5b505afa1580156129ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129d0919081019061469c565b91509150816000141580156129e457508015155b612a005760405162461bcd60e51b8152600401610ed1906154ed565b6000612a1682610d4e888663ffffffff6125af16565b60165460048054604051631a51577760e21b81529394506000936001600160a01b03938416936369455ddc93612a59936101009004909116918d918891016151de565b60206040518083038186803b158015612a7157600080fd5b505afa158015612a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612aa9919081019061465f565b9050868114612ac957612ac687610d4e848463ffffffff6125af16565b91505b612ad9828663ffffffff61258a16565b98975050505050505050565b600f5442906001600160581b038083169116146123f45760165460048054604051630740ff7d60e51b81526001600160a01b039384169363e81fefa093612b35936101009004909116910161518c565b600060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b5050600f80546001600160581b0385166affffffffffffffffffffff19909116179055505050565b60008080612bab670de0b6b3a7640000610d4e868863ffffffff6125af16565b9050612bc081612bbb600061262b565b613439565b9150612bd0826224ea0083613668565b9250509250929050565b600080612be5612838565b612bed612554565b602085015111801590612c0c575060208501516001600160a01b031615155b612c285760405162461bcd60e51b8152600401610ed19061540d565b60408501516001600160a01b0316612c4e5760208501516001600160a01b031660408601525b6000612c5c8787878c6136c9565b60208601516060870151919250612c73919061258a565b60608601528815612c93576060850151612c8d908a612fd7565b60608601525b60008915612c9f575060015b6000601060008a84604051602001612cb8929190615118565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020549050601660009054906101000a90046001600160a01b03166001600160a01b031663585314cf84838f868f8e8e8e6040518963ffffffff1660e01b8152600401612d3097969594939291906152fb565b60408051808303818588803b158015612d4857600080fd5b505af1158015612d5c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250612d81919081019061469c565b608089015260208801819052612da95760405162461bcd60e51b8152600401610ed19061545d565b601654602089015160405163f06a9c6b60e01b81526001600160a01b039092169163f06a9c6b91612ddc9160040161518c565b600060405180830381600087803b158015612df657600080fd5b505af1158015612e0a573d6000803e3d6000fd5b5050505086600160058110612e1b57fe5b6020020151608090970151969c969b50959950505050505050505050565b600080612e45836138fe565b601c5491935091506000906001600160a01b031615612ee357601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690612e9090309089906004016151a8565b60206040518083038186803b158015612ea857600080fd5b505afa158015612ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ee0919081019061465f565b90505b6001600160a01b038516600090815260136020526040812054612f0c908363ffffffff61258a16565b90506000612f20828663ffffffff61258a16565b9050612f2e87868887613a08565b50612f3b878383876135b2565b5050505092915050565b60008115610d5e576000612f5761304b565b509050610e8b83610d4e61016d610d428568056bc75e2d6310000063ffffffff6125af16565b600081612f8c5750600061103e565b508354611bb681612fcb670de0b6b3a7640000612fbf88612fb3898963ffffffff613b2916565b9063ffffffff613b6f16565b9063ffffffff613bda16565b9063ffffffff613c3e16565b6000610c6183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613586565b6000821580159061302957508115155b15610e5357611ada82610d4e8568056bc75e2d6310000063ffffffff6125af16565b60165460048054604051630d1979fb60e41b8152600093849384936001600160a01b039283169363d1979fb09361308d933093610100900490911691016151a8565b60c06040518083038186803b1580156130a557600080fd5b505afa1580156130b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130dd91908101906147e5565b5091965094509250613110915068056bc75e2d631000009050610d4e6131038285612fd7565b859063ffffffff6125af16565b9150509091565b6015546000908061312a57600e54610d5a565b610d5a81610d4e85670de0b6b3a764000063ffffffff6125af16565b600080821561318f57600f54426001600160581b039081169116146131715761316d61304b565b9150505b600061317f82610d36612554565b90508084111561318d578093505b505b610d5a83612bbb8361262b565b3390565b6000816131bf5760405162461bcd60e51b8152600401610ed1906154bd565b6131c8336119e3565b8211156131fc5760001982146131f05760405162461bcd60e51b8152600401610ed19061547d565b6131f9336119e3565b91505b613204612ae5565b6000613213611b34600061262b565b90506000613233670de0b6b3a7640000610d4e868563ffffffff6125af16565b9050600061323f612554565b9050819350808411156132645760405162461bcd60e51b8152600401610ed1906153fd565b601c546000906001600160a01b0316156132fd57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa6906132aa90309033906004016151c3565b60206040518083038186803b1580156132c257600080fd5b505afa1580156132d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506132fa919081019061465f565b90505b3360009081526013602052604081205461331d908363ffffffff61258a16565b90506000613331828963ffffffff612fd716565b905061333f33898989613c84565b5061334c338383896135b2565b505050505050919050565b6040516133b190859063a9059cbb60e01b9061337990879087906024016152a2565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915283613da9565b50505050565b6001600160a01b0381166133dd5760405162461bcd60e51b8152600401610ed1906153ad565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008061345161344b85610d36610eee565b84613019565b600554600654600954600a54600b5494955060009485949392919082881015613478578297505b818811156134eb57968190039668056bc75e2d631000008290038089111561349e578098505b6134bf68056bc75e2d63100000610d4e85610d42898b63ffffffff61258a16565b96506134e387610d3683610d4e6134d6878d612fd7565b8e9063ffffffff6125af16565b995050613541565b61350c85610d3668056bc75e2d63100000610d4e8c8963ffffffff6125af16565b98509395508593613523848663ffffffff61258a16565b95508689101561353557869850613541565b85891115613541578598505b505050505050505092915050565b600081836135705760405162461bcd60e51b8152600401610ed1919061536c565b50600083858161357c57fe5b0495945050505050565b600081848411156135aa5760405162461bcd60e51b8152600401610ed1919061536c565b505050900390565b6040516000906135e89086907f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb69060200161513e565b604051602081830303815290604052805190602001209050600083600014156136145760009250613645565b8415613645576001600160a01b03861660009081526011602052604090205461364290839087908690612f7d565b90505b90556001600160a01b039093166000908152601160205260409020929092555050565b6000806136836301e13380610d4e878763ffffffff6125af16565b905060006136a068056bc75e2d631000008363ffffffff612fd716565b90506136bf81610d4e8668056bc75e2d6310000063ffffffff6125af16565b9695505050505050565b60175460045460408501516020850151606086015160808701516000956001600160a01b03908116956101009004811694939291908b1685141561371f5760405162461bcd60e51b8152600401610ed1906154cd565b349650871561377d5761374385858a60405180602001604052806000815250613357565b87831115613778576016546040805160208101909152600081526137789187916001600160a01b03909116908b870390613357565b6137b2565b601654604080518082019091526002815261323760f01b60208201526137b29187916001600160a01b03909116908690613357565b80156138b557856001600160a01b03168b6001600160a01b03161480156137d857508615155b80156137e45750808710155b1561387e57856001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561382457600080fd5b505af1158015613838573d6000803e3d6000fd5b505060165460408051808201909152600481526332382d6160e01b602082015261387494508f93506001600160a01b0390911691508490613357565b80870396506138b5565b601654604080518082019091526004815263191c16b160e11b60208201526138b5918d9133916001600160a01b0316908590613e67565b81156138f057601654604080518082019091526002815261323960f01b60208201526138f091879133916001600160a01b0316908690613e67565b505050505050949350505050565b6000808261391e5760405162461bcd60e51b8152600401610ed19061548d565b613926612ae5565b613933611b34600061262b565b905061395181610d4e85670de0b6b3a764000063ffffffff6125af16565b91503461399957613994600460019054906101000a90046001600160a01b031633308660405180604001604052806002815260200161062760f31b815250613e67565b613a03565b601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156139e957600080fd5b505af11580156139fd573d6000803e3d6000fd5b50505050505b915091565b60006001600160a01b038516613a305760405162461bcd60e51b8152600401610ed19061539d565b6001600160a01b038516600090815260136020526040812054613a59908663ffffffff61258a16565b6001600160a01b0387166000908152601360205260409020819055601554909150613a8a908663ffffffff61258a16565b6015556040516001600160a01b038716907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb90613acc9088908890889061556b565b60405180910390a2856001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613b1891906152ed565b60405180910390a395945050505050565b6000818303818312801590613b3e5750838113155b80613b535750600083128015613b5357508381135b610c615760405162461bcd60e51b8152600401610ed19061551d565b600082613b7e57506000610e53565b82600019148015613b925750600160ff1b82145b15613baf5760405162461bcd60e51b8152600401610ed1906154dd565b82820282848281613bbc57fe5b0514610c615760405162461bcd60e51b8152600401610ed1906154dd565b600081613bf95760405162461bcd60e51b8152600401610ed19061554d565b81600019148015613c0d5750600160ff1b83145b15613c2a5760405162461bcd60e51b8152600401610ed19061542d565b6000828481613c3557fe5b05949350505050565b6000828201818312801590613c535750838112155b80613c685750600083128015613c6857508381125b610c615760405162461bcd60e51b8152600401610ed1906153cd565b6040805180820182526002815261189b60f11b6020808301919091526001600160a01b03871660009081526013909152918220548291613ccc9190879063ffffffff61358616565b9050600a8111613ced57613ce6858263ffffffff61258a16565b9450600090505b6001600160a01b0386166000908152601360205260409020819055601554613d1b908663ffffffff612fd716565b6015556040516001600160a01b038716907f743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b464490613d5d9088908890889061556b565b60405180910390a260006001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613b1891906152ed565b60006060846001600160a01b031684604051613dc59190615180565b6000604051808303816000865af19150503d8060008114613e02576040519150601f19603f3d011682016040523d82523d6000602084013e613e07565b606091505b5091509150818390613e2c5760405162461bcd60e51b8152600401610ed1919061536c565b508051156120055780806020019051613e489190810190614384565b8390610eda5760405162461bcd60e51b8152600401610ed1919061536c565b6040516120059086906323b872dd60e01b90613379908890889088906024016151de565b60405180608001604052806004906020820280388339509192915050565b6040518060a001604052806005906020820280388339509192915050565b8035610e53816156da565b8051610e53816156da565b60008083601f840112613eef57600080fd5b5081356001600160401b03811115613f0657600080fd5b602083019150836020820283011115613f1e57600080fd5b9250929050565b600082601f830112613f3657600080fd5b8151613f49613f44826155ba565b615594565b91508181835260208401935060208101905083856020840282011115613f6e57600080fd5b60005b83811015612f3b5781613f84888261402f565b8452506020928301929190910190600101613f71565b600082601f830112613fab57600080fd5b8135613fb9613f44826155ba565b9150818183526020840193506020810190508385610100840282011115613fdf57600080fd5b60005b83811015612f3b5781613ff588826140ca565b8452506020909201916101009190910190600101613fe2565b8035610e53816156ee565b8051610e53816156ee565b8035610e53816156f7565b8051610e53816156f7565b60008083601f84011261404c57600080fd5b5081356001600160401b0381111561406357600080fd5b602083019150836001820283011115613f1e57600080fd5b600082601f83011261408c57600080fd5b813561409a613f44826155da565b915080825260208301602083018583830111156140b657600080fd5b6140c1838284615660565b50505092915050565b600061010082840312156140dd57600080fd5b6140e8610100615594565b905060006140f68484614024565b82525060206141078484830161400e565b602083015250604061411b84828501613ec7565b604083015250606061412f84828501613ec7565b606083015250608061414384828501613ec7565b60808301525060a061415784828501614024565b60a08301525060c061416b84828501614024565b60c08301525060e061417f84828501614024565b60e08301525092915050565b60006020828403121561419d57600080fd5b600061103e8484613ec7565b6000602082840312156141bb57600080fd5b600061103e8484613ed2565b600080604083850312156141da57600080fd5b60006141e68585613ec7565b92505060206141f785828601613ec7565b9150509250929050565b60008060006060848603121561421657600080fd5b60006142228686613ec7565b935050602061423386828701613ec7565b925050604061424486828701614024565b9150509250925092565b6000806040838503121561426157600080fd5b600061426d8585613ec7565b92505060206141f785828601614024565b6000806000806040858703121561429457600080fd5b84356001600160401b038111156142aa57600080fd5b6142b687828801613edd565b945094505060208501356001600160401b038111156142d457600080fd5b6142e087828801613edd565b95989497509550505050565b6000602082840312156142fe57600080fd5b81516001600160401b0381111561431457600080fd5b61103e84828501613f25565b6000806040838503121561433357600080fd5b82356001600160401b0381111561434957600080fd5b61435585828601613f9a565b92505060206141f78582860161400e565b60006020828403121561437857600080fd5b600061103e848461400e565b60006020828403121561439657600080fd5b600061103e8484614019565b600080600080600080600080610100898b0312156143bf57600080fd5b60006143cb8b8b614024565b98505060206143dc8b828c01614024565b97505060406143ed8b828c01614024565b96505060606143fe8b828c01614024565b955050608061440f8b828c01613ec7565b94505060a06144208b828c01613ec7565b93505060c06144318b828c01613ec7565b92505060e08901356001600160401b0381111561444d57600080fd5b6144598b828c0161407b565b9150509295985092959890939650565b6000806000806000806000806000806101208b8d03121561448957600080fd5b60006144958d8d614024565b9a505060206144a68d828e01614024565b99505060406144b78d828e01614024565b98505060606144c88d828e01614024565b97505060806144d98d828e01613ec7565b96505060a06144ea8d828e01613ec7565b95505060c06144fb8d828e01614024565b94505060e061450c8d828e01613ec7565b9350506101008b01356001600160401b0381111561452957600080fd5b6145358d828e0161403a565b92509250509295989b9194979a5092959850565b600080600080600080600080610100898b03121561456657600080fd5b60006145728b8b614024565b98505060206145838b828c01614024565b97505060406145948b828c01614024565b96505060606145a58b828c01614024565b95505060806145b68b828c01613ec7565b94505060a06145c78b828c01613ec7565b93505060c06144318b828c01614024565b6000602082840312156145ea57600080fd5b81356001600160401b0381111561460057600080fd5b61103e8482850161407b565b6000806040838503121561461f57600080fd5b82356001600160401b0381111561463557600080fd5b6143558582860161407b565b60006020828403121561465357600080fd5b600061103e8484614024565b60006020828403121561467157600080fd5b600061103e848461402f565b6000806040838503121561469057600080fd5b600061426d8585614024565b600080604083850312156146af57600080fd5b60006146bb858561402f565b92505060206141f78582860161402f565b6000806000606084860312156146e157600080fd5b60006146ed8686614024565b93505060206146fe86828701614024565b925050604061424486828701613ec7565b6000806000806080858703121561472557600080fd5b60006147318787614024565b945050602061474287828801614024565b935050604061475387828801614024565b925050606061476487828801613ec7565b91505092959194509250565b600080600080600060a0868803121561478857600080fd5b60006147948888614024565b95505060206147a588828901614024565b94505060406147b688828901614024565b93505060606147c788828901613ec7565b92505060806147d888828901614024565b9150509295509295909350565b60008060008060008060c087890312156147fe57600080fd5b600061480a898961402f565b965050602061481b89828a0161402f565b955050604061482c89828a0161402f565b945050606061483d89828a0161402f565b935050608061484e89828a0161402f565b92505060a061485f89828a0161402f565b9150509295509295509295565b600080600080600080600060e0888a03121561488757600080fd5b60006148938a8a614024565b97505060206148a48a828b01614024565b96505060406148b58a828b01614024565b95505060606148c68a828b01614024565b94505060806148d78a828b01614024565b93505060a06148e88a828b01614024565b92505060c06148f98a828b01614024565b91505092959891949750929550565b6000614914838361494c565b505060200190565b60006149148383614abf565b60006149348383615078565b50506101000190565b6149468161564f565b82525050565b61494681615620565b61494661496182615620565b615698565b61496f81615607565b6149798184610d5e565b925061498482610e6b565b8060005b83811015610eda57815161499c8782614908565b96506149a783615601565b925050600101614988565b60006149bd8261560d565b6149c78185615617565b93506149d283615601565b8060005b83811015614a005781516149ea888261491c565b97506149f583615601565b9250506001016149d6565b509495945050505050565b6000614a168261560d565b614a208185615617565b9350614a2b83615601565b8060005b83811015614a00578151614a438882614928565b9750614a4e83615601565b925050600101614a2f565b614a6281615611565b614a6c8184610d5e565b9250614a7782610e6b565b8060005b83811015610eda578151614a8f878261491c565b9650614a9a83615601565b925050600101614a7b565b6149468161562b565b614946614aba8261562b565b6156a3565b61494681610e6b565b614946614ad482610e6b565b610e6b565b614946614ad482615630565b6000614af08261560d565b614afa8185615617565b9350614b0a81856020860161566c565b614b13816156c4565b9093019392505050565b6000614b288261560d565b614b328185610d5e565b9350614b4281856020860161566c565b9290920192915050565b6000614b59600c83615617565b6b636f6c6c20746f6f206c6f7760a01b815260200192915050565b6000614b81600283615617565b61031360f41b815260200192915050565b6000614b9f600283615617565b61313560f01b815260200192915050565b6000614bbd602683615617565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000614c05601b83615617565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614c3e602183615617565b7f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000614c81600e83615617565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000614cab600183615617565b603760f81b815260200192915050565b6000614cc8600283615617565b61333760f01b815260200192915050565b6000614ce6600283615617565b610c8d60f21b815260200192915050565b6000614d04600283615617565b61313160f01b815260200192915050565b6000614d22602183615617565b7f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000614d65601583615617565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000614d96600283615617565b61189960f11b815260200192915050565b6000614db4600283615617565b61323560f01b815260200192915050565b6000614dd2600f83615617565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b6000614dfd600283615617565b61199960f11b815260200192915050565b6000614e1b600283615617565b61313760f01b815260200192915050565b6000614e39602183615617565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000614e7c600c83615617565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000614ea4600283615617565b61313960f01b815260200192915050565b6000614ec2600283615617565b61191b60f11b815260200192915050565b6000614ee0602783615617565b7f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f815266766572666c6f7760c81b602082015260400192915050565b6000614f29601d83615617565b7f696e76616c6964207261746520636f6c6c61746572616c20746f6b656e000000815260200192915050565b6000614f62600a83615617565b6937b7363ca830bab9b2b960b11b815260200192915050565b6000614f88600c83615617565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b6000614fb0602483615617565b7f5369676e6564536166654d6174683a207375627472616374696f6e206f766572815263666c6f7760e01b602082015260400192915050565b6000614ff6601883615617565b7f34303120757365206f66206578697374696e67206c6f616e0000000000000000815260200192915050565b600061502f600183615617565b601b60f91b815260200192915050565b600061504c602083615617565b7f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f815260200192915050565b805161010083019061508a8482614abf565b50602082015161509d6020850182614aa5565b5060408201516150b0604085018261494c565b5060608201516150c3606085018261494c565b5060808201516150d6608085018261494c565b5060a08201516150e960a0850182614abf565b5060c08201516150fc60c0850182614abf565b5060e08201516133b160e0850182614abf565b61494681615649565b60006151248285614955565b6014820191506151348284614aae565b5060010192915050565b600061514a8285614955565b60148201915061515a8284614ac8565b5060200192915050565b60006151708285614ad9565b60048201915061515a8284614ac8565b6000610c618284614b1d565b60208101610e53828461494c565b60208101610e53828461493d565b604081016151b6828561494c565b610c61602083018461494c565b604081016151d1828561494c565b610c61602083018461493d565b606081016151ec828661494c565b6151f9602083018561494c565b61103e6040830184614abf565b60a08101615214828861494c565b615221602083018761494c565b61522e6040830186614abf565b61523b6060830185614abf565b6136bf6080830184614aa5565b60c08101615256828961494c565b615263602083018861494c565b6152706040830187614abf565b61527d6060830186614abf565b61528a6080830185614abf565b61529760a0830184614abf565b979650505050505050565b604081016152b0828561494c565b610c616020830184614abf565b60208082528101610c6181846149b2565b60208082528101610c618184614a0b565b60208101610e538284614aa5565b60208101610e538284614abf565b6101c0810161530a828a614abf565b6153176020830189614abf565b6153246040830188614aa5565b6153316060830187614abf565b61533e6080830186614966565b61534c610100830185614a59565b8181036101a083015261535f8184614ae5565b9998505050505050505050565b60208082528101610c618184614ae5565b60208082528101610e5381614b4c565b60208082528101610e5381614b74565b60208082528101610e5381614b92565b60208082528101610e5381614bb0565b60208082528101610e5381614bf8565b60208082528101610e5381614c31565b60208082528101610e5381614c74565b60208082528101610e5381614c9e565b60208082528101610e5381614cbb565b60208082528101610e5381614cd9565b60208082528101610e5381614cf7565b60208082528101610e5381614d15565b60208082528101610e5381614d58565b60208082528101610e5381614d89565b60208082528101610e5381614da7565b60208082528101610e5381614dc5565b60208082528101610e5381614df0565b60208082528101610e5381614e0e565b60208082528101610e5381614e2c565b60208082528101610e5381614e6f565b60208082528101610e5381614e97565b60208082528101610e5381614eb5565b60208082528101610e5381614ed3565b60208082528101610e5381614f1c565b60208082528101610e5381614f55565b60208082528101610e5381614f7b565b60208082528101610e5381614fa3565b60208082528101610e5381614fe9565b60208082528101610e5381615022565b60208082528101610e538161503f565b604081016152b08285614abf565b606081016155798286614abf565b6151f96020830185614abf565b60208101610e53828461510f565b6040518181016001600160401b03811182821017156155b257600080fd5b604052919050565b60006001600160401b038211156155d057600080fd5b5060209081020190565b60006001600160401b038211156155f057600080fd5b506020601f91909101601f19160190565b60200190565b50600490565b5190565b50600590565b90815260200190565b6000610e538261563d565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b6000610e53826000610e5382615620565b82818337506000910152565b60005b8381101561568757818101518382015260200161566f565b838111156133b15750506000910152565b6000610e53826156ae565b6000610e53826156b9565b6000610e53826156d4565b6000610e53826156ce565b601f01601f191690565b60f81b90565b60601b90565b6156e381615620565b81146123f457600080fd5b6156e38161562b565b6156e381610e6b56fea365627a7a7231582067b5b5f2c3a4d60367dcbf6ad233bf9b3ef127defcbbe64f2de20fbdeeba22f16c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3C3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E37C08C GT PUSH2 0x1F2 JUMPI DUP1 PUSH4 0xCA37E666 GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xE41B07E3 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xA62 JUMPI DUP1 PUSH4 0xF6B69F99 EQ PUSH2 0xA82 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xA95 JUMPI DUP1 PUSH4 0xFFA1AD74 EQ PUSH2 0xAAA JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x9ED JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0xA0D JUMPI DUP1 PUSH4 0xEEBC5081 EQ PUSH2 0xA2D JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0xA4D JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0xD8F06C83 GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x96D JUMPI DUP1 PUSH4 0xD97206A4 EQ PUSH2 0x98D JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x9AD JUMPI DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0x9CD JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0xCA37E666 EQ PUSH2 0x903 JUMPI DUP1 PUSH4 0xCB926CB3 EQ PUSH2 0x918 JUMPI DUP1 PUSH4 0xD65A5021 EQ PUSH2 0x938 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x958 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x185 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x154 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x88E JUMPI DUP1 PUSH4 0xB9FE1A8F EQ PUSH2 0x8AE JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x8CE JUMPI DUP1 PUSH4 0xBE194217 EQ PUSH2 0x8E3 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x82F JUMPI DUP1 PUSH4 0x9BDA3A98 EQ PUSH2 0x844 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x859 JUMPI DUP1 PUSH4 0x9FD0506D EQ PUSH2 0x879 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0x8EE6C4E6 EQ PUSH2 0x7F0 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x805 JUMPI DUP1 PUSH4 0x8FB807C5 EQ PUSH2 0x81A JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x77C JUMPI DUP1 PUSH4 0x7FF9B596 EQ PUSH2 0x791 JUMPI DUP1 PUSH4 0x829B38F4 EQ PUSH2 0x7A6 JUMPI DUP1 PUSH4 0x8325A1C0 EQ PUSH2 0x7C6 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x2F6B600D GT PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x612EF80B GT PUSH2 0x275 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x244 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x712 JUMPI DUP1 PUSH4 0x7288B344 EQ PUSH2 0x732 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x752 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x767 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x612EF80B EQ PUSH2 0x68E JUMPI DUP1 PUSH4 0x631A3EF8 EQ PUSH2 0x6A3 JUMPI DUP1 PUSH4 0x6B40CD40 EQ PUSH2 0x6C3 JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH2 0x6F2 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0x44A4A003 EQ PUSH2 0x644 JUMPI DUP1 PUSH4 0x54198CE9 EQ PUSH2 0x659 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x679 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x5B8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x5CD JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x5EF JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x60F JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x18498B1D GT PUSH2 0x35A JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x329 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x544 JUMPI DUP1 PUSH4 0x28A02F19 EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x2D88AF4A EQ PUSH2 0x585 JUMPI DUP1 PUSH4 0x2EA295FA EQ PUSH2 0x5A5 JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x18498B1D EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x20F6D07C EQ PUSH2 0x52F JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x396 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0x9EC6B6B EQ PUSH2 0x499 JUMPI DUP1 PUSH4 0x12416898 EQ PUSH2 0x4AE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x4CE JUMPI PUSH2 0x3C3 JUMP JUMPDEST DUP1 PUSH4 0x4797930 EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0x6947A3A EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x6B3EFD6 EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x44A JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x3ED CALLDATASIZE PUSH1 0x4 PUSH2 0x46CC JUMP JUMPDEST PUSH2 0xABF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0xC68 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x518C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x445 CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0xC77 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH2 0xD63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x536C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48C PUSH2 0x487 CALLDATASIZE PUSH1 0x4 PUSH2 0x424E JUMP JUMPDEST PUSH2 0xDEE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x52DF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xE59 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x4C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4641 JUMP JUMPDEST PUSH2 0xE6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xE99 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x4FE CALLDATASIZE PUSH1 0x4 PUSH2 0x4770 JUMP JUMPDEST PUSH2 0xE9F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xEE2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xEE8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xEEE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48C PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x4201 JUMP JUMPDEST PUSH2 0xF7D JUMP JUMPDEST PUSH2 0x577 PUSH2 0x572 CALLDATASIZE PUSH1 0x4 PUSH2 0x4549 JUMP JUMPDEST PUSH2 0x1046 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP3 SWAP2 SWAP1 PUSH2 0x555D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x5A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x126B JUMP JUMPDEST PUSH2 0x577 PUSH2 0x5B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x43A2 JUMP JUMPDEST PUSH2 0x12B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1591 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E2 PUSH2 0x15A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x5586 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x60A CALLDATASIZE PUSH1 0x4 PUSH2 0x4641 JUMP JUMPDEST PUSH2 0x15A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x15BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x630 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x63F CALLDATASIZE PUSH1 0x4 PUSH2 0x424E JUMP JUMPDEST PUSH2 0x15C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1602 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x674 CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x1614 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x685 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x16B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x16BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x6BE CALLDATASIZE PUSH1 0x4 PUSH2 0x46CC JUMP JUMPDEST PUSH2 0x16EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6E3 PUSH2 0x6DE CALLDATASIZE PUSH1 0x4 PUSH2 0x470F JUMP JUMPDEST PUSH2 0x188C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x556B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x70D CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x199D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x72D CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x19E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x74D CALLDATASIZE PUSH1 0x4 PUSH2 0x467D JUMP JUMPDEST PUSH2 0x19FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1AE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1AF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1AFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1B01 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x7C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4641 JUMP JUMPDEST PUSH2 0x1B3F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1BBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1BCB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1BDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x811 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48C PUSH2 0x1BE9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x826 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1C0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x83B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH2 0x1C3F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x850 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1C9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x865 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x874 CALLDATASIZE PUSH1 0x4 PUSH2 0x424E JUMP JUMPDEST PUSH2 0x1CA9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1D1D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48C PUSH2 0x8A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x424E JUMP JUMPDEST PUSH2 0x1D2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x8C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4641 JUMP JUMPDEST PUSH2 0x1D3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1D47 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48C PUSH2 0x8FE CALLDATASIZE PUSH1 0x4 PUSH2 0x45D8 JUMP JUMPDEST PUSH2 0x1D4D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x90F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x1DCF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x933 CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x1DDE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x953 CALLDATASIZE PUSH1 0x4 PUSH2 0x4641 JUMP JUMPDEST PUSH2 0x1E24 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x964 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1E37 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x988 CALLDATASIZE PUSH1 0x4 PUSH2 0x4320 JUMP JUMPDEST PUSH2 0x1E3D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x9A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x486C JUMP JUMPDEST PUSH2 0x200C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x9C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x41C7 JUMP JUMPDEST PUSH2 0x2113 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x9E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x460C JUMP JUMPDEST PUSH2 0x213E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xA08 CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x21E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0xA28 CALLDATASIZE PUSH1 0x4 PUSH2 0x427E JUMP JUMPDEST PUSH2 0x21F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0xA48 CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x23A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x23C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0xA7D CALLDATASIZE PUSH1 0x4 PUSH2 0x418B JUMP JUMPDEST PUSH2 0x23C7 JUMP JUMPDEST PUSH2 0x577 PUSH2 0xA90 CALLDATASIZE PUSH1 0x4 PUSH2 0x4469 JUMP JUMPDEST PUSH2 0x23F7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x24C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x24D6 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xC61 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xAE4 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xAFE SWAP3 SWAP2 SWAP1 PUSH2 0x5118 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 PUSH4 0xE762319F SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 DUP8 SWAP2 DUP11 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0xB6F SWAP2 DUP11 SWAP2 ADD PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xBBF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBE1 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5206 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC31 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP2 POP PUSH2 0xC45 DUP3 PUSH2 0xC3F PUSH2 0x1C0F JUMP JUMPDEST DUP7 PUSH2 0x24DB JUMP JUMPDEST SWAP4 POP PUSH2 0xC53 SWAP2 POP PUSH2 0x2554 SWAP1 POP JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0xC5F JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xD12 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0xCBF SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD0F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xD5A PUSH8 0xDE0B6B3A7640000 PUSH2 0xD4E PUSH2 0xD29 PUSH2 0x1B01 JUMP JUMPDEST PUSH2 0xD42 DUP6 PUSH2 0xD36 DUP10 PUSH2 0x19E3 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x25E9 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xDE6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xDBB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xDE6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xDC9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xE47 SWAP1 DUP7 SWAP1 PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE68 PUSH2 0x4C9 PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE79 PUSH2 0xEEE JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xE93 JUMPI PUSH2 0xE8B DUP2 DUP5 PUSH2 0x19FE JUMP JUMPDEST SWAP2 POP POP PUSH2 0xD5E JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAD DUP7 DUP7 DUP7 DUP7 PUSH2 0x188C JUMP JUMPDEST POP SWAP2 POP POP DUP2 DUP2 LT ISZERO PUSH2 0xEDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x537D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x250F447F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0x4A1E88FE SWAP4 PUSH2 0xF2D SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF59 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xE68 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH2 0x103E SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x115DD4B1 SWAP1 PUSH2 0xFB8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x519A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1008 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4384 JUMP JUMPDEST PUSH2 0x1035 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1039 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH2 0x2665 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x106B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x550D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1078 PUSH2 0x2838 JUMP JUMPDEST PUSH2 0x1085 DUP10 DUP10 DUP10 DUP10 DUP9 PUSH2 0xE9F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x10A2 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x541D JUMP JUMPDEST DUP10 ISZERO DUP1 PUSH2 0x10EA JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x1106 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x552D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1149 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x1149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x119A JUMPI PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP9 GT ISZERO PUSH2 0x119A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11A7 DUP8 DUP10 DUP12 PUSH2 0x28B8 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x11C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x544D JUMP JUMPDEST PUSH2 0x11CE PUSH2 0x3E8B JUMP JUMPDEST PUSH2 0x11D6 PUSH2 0x3EA9 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP11 SWAP1 MSTORE PUSH2 0x120E PUSH2 0x2AE5 JUMP JUMPDEST PUSH2 0x121F DUP13 DUP3 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x2B8B JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1240 PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP14 PUSH2 0x25E9 JUMP JUMPDEST SWAP12 POP PUSH2 0x1252 DUP14 PUSH1 0x0 DUP15 DUP13 DUP7 DUP7 DUP13 PUSH2 0x2BDA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP15 SWAP1 SWAP14 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1273 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x128F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x12D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x550D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP9 PUSH2 0x12F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x553D JUMP JUMPDEST PUSH2 0x1300 PUSH2 0x2838 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1343 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x1343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x134F JUMPI POP DUP7 CALLVALUE EQ JUMPDEST DUP1 ISZERO PUSH2 0x1363 JUMPI POP DUP7 ISZERO ISZERO DUP1 PUSH2 0x1363 JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x138A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO DUP1 PUSH2 0x1380 JUMPI POP CALLVALUE ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x138A JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x13A6 JUMPI POP DUP10 ISZERO DUP1 PUSH2 0x13A6 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x13C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x53ED JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x13DF JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x1412 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x538D JUMP JUMPDEST PUSH2 0x141A PUSH2 0x2AE5 JUMP JUMPDEST PUSH2 0x1422 PUSH2 0x3E8B JUMP JUMPDEST PUSH2 0x142A PUSH2 0x3EA9 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 AND PUSH1 0x40 DUP5 ADD MSTORE DUP2 ADD DUP12 SWAP1 MSTORE PUSH2 0x1462 DUP12 PUSH2 0x145C PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST DUP13 PUSH2 0x24DB JUMP JUMPDEST DUP4 PUSH1 0x0 PUSH1 0x20 MUL ADD DUP5 PUSH1 0x2 PUSH1 0x20 MUL ADD DUP6 PUSH1 0x1 PUSH1 0x20 MUL ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 MSTORE MSTORE DUP9 DUP2 PUSH1 0x4 PUSH1 0x20 MUL ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x1579 DUP13 DUP13 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCA74A5D9 PUSH1 0x10 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14CD SWAP3 SWAP2 SWAP1 PUSH2 0x5118 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1511 SWAP2 SWAP1 PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x153D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1561 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST DUP12 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2BDA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP14 SWAP1 SWAP13 POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x15E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x550D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x15F4 DUP4 DUP4 PUSH2 0x2E39 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE68 PUSH2 0x160F PUSH2 0xEEE JUMP JUMPDEST PUSH2 0x2F45 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 PUSH1 0x0 SHL PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x164D SWAP3 SWAP2 SWAP1 PUSH2 0x513E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xD5A DUP2 PUSH1 0x13 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1697 PUSH2 0x1B01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2F7D JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16C8 PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16D4 PUSH2 0xEEE JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x16E7 JUMPI SWAP1 SUB SWAP1 POP PUSH2 0xE6B JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xC61 JUMPI PUSH1 0x0 PUSH2 0x1702 DUP6 PUSH2 0xC3F PUSH2 0x1C0F JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x170E PUSH2 0x2554 JUMP JUMPDEST DUP2 GT PUSH2 0xC5F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1731 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x174B SWAP3 SWAP2 SWAP1 PUSH2 0x5118 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH2 0x1883 SWAP4 PUSH1 0xA SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x25DECAC0 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0x17C1 SWAP2 DUP13 SWAP2 ADD PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1811 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1833 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5206 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x184B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x185F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD36 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xC61 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x18AD JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x18BA DUP6 DUP8 DUP10 PUSH2 0x28B8 JUMP JUMPDEST SWAP1 POP PUSH2 0x18C6 DUP9 DUP3 PUSH2 0x2B8B JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH2 0x18D3 PUSH2 0x2554 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x18EA JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1993 JUMP JUMPDEST PUSH2 0x18FA DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD67F7077 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD67F7077 SWAP4 PUSH2 0x193F SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP14 SWAP2 DUP14 SWAP2 DUP11 SWAP2 DUP14 SWAP2 ADD PUSH2 0x5248 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x196B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x198F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP3 POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x19A5 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x19C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST PUSH1 0x19 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1A0F JUMPI POP DUP3 DUP3 LT ISZERO JUMPDEST ISZERO PUSH2 0xE53 JUMPI PUSH2 0x1ADA PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 PUSH2 0xD4E PUSH2 0x1AC4 PUSH9 0x56BC75E2D63100000 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4699F846 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1ABF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST PUSH2 0x2FD7 JUMP JUMPDEST PUSH2 0xD42 PUSH2 0x1AD1 DUP9 DUP9 PUSH2 0x3019 JUMP JUMPDEST PUSH2 0xD42 DUP10 PUSH2 0x2F45 JUMP JUMPDEST SWAP1 POP PUSH2 0xE53 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1B28 JUMPI PUSH2 0x1B24 PUSH2 0x304B JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1B39 PUSH2 0x1B34 DUP3 PUSH2 0x262B JUMP JUMPDEST PUSH2 0x3117 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B5E PUSH2 0x16D PUSH2 0xD4E PUSH1 0x1C PUSH1 0xB SLOAD PUSH2 0x25AF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B7B PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2FD7 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B98 PUSH9 0x56BC75E2D63100000 PUSH2 0xD4E DUP5 PUSH2 0xD42 PUSH2 0x16BB JUMP JUMPDEST SWAP1 POP PUSH2 0x1BB6 DUP6 PUSH2 0xD4E DUP4 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE68 PUSH1 0x0 PUSH2 0x3146 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C00 PUSH2 0x319C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1C36 JUMPI PUSH2 0x1C32 PUSH2 0x304B JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1B39 DUP2 PUSH2 0x262B JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xDE6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xDBB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xDE6 JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1CCD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x550D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1CDB DUP3 PUSH2 0x31A0 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x15F7 JUMPI PUSH2 0x15F7 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH2 0x3357 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC61 CALLER DUP5 DUP5 PUSH1 0x0 NOT PUSH2 0x2665 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x3146 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1D61 SWAP2 SWAP1 PUSH2 0x5180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DAE SWAP3 SWAP2 SWAP1 PUSH2 0x5164 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1DE6 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x1E02 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST PUSH1 0x1C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 PUSH2 0x4C9 DUP4 PUSH2 0xD36 PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1E45 PUSH2 0x1BE9 JUMP JUMPDEST DUP1 PUSH2 0x1E5A JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x1E76 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1F00 JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1EA3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x1ED5 JUMPI PUSH3 0x24EA00 PUSH2 0x1ED8 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1EE9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1E8D JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x1F31 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x52CE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F5F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1F87 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2005 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1FA1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1FB9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1FD7 SWAP3 SWAP2 SWAP1 PUSH2 0x5118 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1F8C JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2014 PUSH2 0x1BE9 JUMP JUMPDEST DUP1 PUSH2 0x2029 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2045 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x205F DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST GT ISZERO PUSH2 0x207D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x543D JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x2097 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST GT ISZERO PUSH2 0x20B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x543D JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x20D7 JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x20F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x546D JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2168 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54FD JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x217B SWAP2 SWAP1 PUSH2 0x5180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x21C3 SWAP3 SWAP2 SWAP1 PUSH2 0x5164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x21FD PUSH2 0x1BE9 JUMP JUMPDEST DUP1 PUSH2 0x2212 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x222E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x224D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x53DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0x2279 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x233C JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x2295 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x22AA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x418B JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x22B6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x22CB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4366 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x22DC SWAP3 SWAP2 SWAP1 PUSH2 0x5118 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2317 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x227F JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0x236D SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x52BD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x239B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x23CF PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x23EB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST PUSH2 0x23F4 DUP2 PUSH2 0x33B7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x246E JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x193BBE89 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC9DDF448 SWAP1 PUSH2 0x243B SWAP1 DUP11 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2469 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x24B4 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1046 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP11 POP SWAP11 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x24EA DUP7 DUP7 PUSH2 0x3439 JUMP JUMPDEST SWAP3 POP PUSH2 0x2537 PUSH2 0x251F PUSH8 0xDE0B6B3A7640000 PUSH2 0x1ABF PUSH12 0xA3098C68EB9427DB8000000 PUSH2 0xD4E DUP4 PUSH2 0xD42 DUP11 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST PUSH2 0xD4E DUP9 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2549 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2FD7 AND JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xF2D SWAP2 ADDRESS SWAP2 ADD PUSH2 0x518C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xC61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x53BD JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x25BE JUMPI POP PUSH1 0x0 PUSH2 0xE53 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x25CB JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xC61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x549D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC61 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x354F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x15 SLOAD PUSH1 0x0 EQ PUSH2 0xD5E JUMPI PUSH1 0xC SLOAD DUP1 PUSH2 0x2655 JUMPI PUSH2 0x2652 PUSH2 0x264A PUSH2 0xEEE JUMP JUMPDEST PUSH2 0xD36 PUSH2 0x2554 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xE8B DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ PUSH2 0x26C1 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xC4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x269C SWAP1 DUP4 SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3586 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x26E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x539D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 SWAP1 PUSH2 0x2732 SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3586 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x276B DUP3 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP3 SWAP1 SSTORE SWAP1 SWAP2 POP PUSH2 0x2791 PUSH2 0x1B01 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x27C0 JUMPI POP PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x27DD JUMPI PUSH2 0x27D1 DUP11 DUP7 DUP7 DUP5 PUSH2 0x35B2 JUMP JUMPDEST PUSH2 0x27DD DUP10 DUP5 DUP5 DUP5 PUSH2 0x35B2 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP11 PUSH1 0x40 MLOAD PUSH2 0x2820 SWAP2 SWAP1 PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2878 SWAP3 SWAP2 SWAP1 PUSH2 0x5164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 SLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x28B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54AD JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 DUP3 ISZERO PUSH2 0xC61 JUMPI PUSH1 0x0 DUP1 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x78D849ED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2924 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2948 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41A9 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x29D5277C SWAP4 PUSH2 0x2981 SWAP4 DUP13 SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 ADD PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2998 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x29D0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x469C JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x29E4 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST PUSH2 0x2A00 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54ED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A16 DUP3 PUSH2 0xD4E DUP9 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A515777 PUSH1 0xE2 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x69455DDC SWAP4 PUSH2 0x2A59 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 DUP14 SWAP2 DUP9 SWAP2 ADD PUSH2 0x51DE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2AA9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ PUSH2 0x2AC9 JUMPI PUSH2 0x2AC6 DUP8 PUSH2 0xD4E DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x2AD9 DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF SLOAD TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x23F4 JUMPI PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x740FF7D PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0xE81FEFA0 SWAP4 PUSH2 0x2B35 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x518C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B63 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP6 AND PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2BAB PUSH8 0xDE0B6B3A7640000 PUSH2 0xD4E DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2BC0 DUP2 PUSH2 0x2BBB PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST PUSH2 0x3439 JUMP JUMPDEST SWAP2 POP PUSH2 0x2BD0 DUP3 PUSH3 0x24EA00 DUP4 PUSH2 0x3668 JUMP JUMPDEST SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2BE5 PUSH2 0x2838 JUMP JUMPDEST PUSH2 0x2BED PUSH2 0x2554 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD GT DUP1 ISZERO SWAP1 PUSH2 0x2C0C JUMPI POP PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST PUSH2 0x2C28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x540D JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C4E JUMPI PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x2C5C DUP8 DUP8 DUP8 DUP13 PUSH2 0x36C9 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP3 POP PUSH2 0x2C73 SWAP2 SWAP1 PUSH2 0x258A JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP9 ISZERO PUSH2 0x2C93 JUMPI PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x2C8D SWAP1 DUP11 PUSH2 0x2FD7 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 DUP10 ISZERO PUSH2 0x2C9F JUMPI POP PUSH1 0x1 JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2CB8 SWAP3 SWAP2 SWAP1 PUSH2 0x5118 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x585314CF DUP5 DUP4 DUP16 DUP7 DUP16 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D30 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x52FB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2D81 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x469C JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0x20 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x2DA9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x545D JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF06A9C6B SWAP2 PUSH2 0x2DDC SWAP2 PUSH1 0x4 ADD PUSH2 0x518C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP7 PUSH1 0x1 PUSH1 0x5 DUP2 LT PUSH2 0x2E1B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 SWAP1 SWAP8 ADD MLOAD SWAP7 SWAP13 SWAP7 SWAP12 POP SWAP6 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E45 DUP4 PUSH2 0x38FE JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2EE3 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x2E90 SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2EBC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2EE0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x2F0C SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2F20 DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2F2E DUP8 DUP7 DUP9 DUP8 PUSH2 0x3A08 JUMP JUMPDEST POP PUSH2 0x2F3B DUP8 DUP4 DUP4 DUP8 PUSH2 0x35B2 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0xD5E JUMPI PUSH1 0x0 PUSH2 0x2F57 PUSH2 0x304B JUMP JUMPDEST POP SWAP1 POP PUSH2 0xE8B DUP4 PUSH2 0xD4E PUSH2 0x16D PUSH2 0xD42 DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x2F8C JUMPI POP PUSH1 0x0 PUSH2 0x103E JUMP JUMPDEST POP DUP4 SLOAD PUSH2 0x1BB6 DUP2 PUSH2 0x2FCB PUSH8 0xDE0B6B3A7640000 PUSH2 0x2FBF DUP9 PUSH2 0x2FB3 DUP10 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3B29 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3B6F AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3BDA AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3C3E AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC61 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3586 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3029 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xE53 JUMPI PUSH2 0x1ADA DUP3 PUSH2 0xD4E DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD1979FB PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD1979FB0 SWAP4 PUSH2 0x308D SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30B9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x30DD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x47E5 JUMP JUMPDEST POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP PUSH2 0x3110 SWAP2 POP PUSH9 0x56BC75E2D63100000 SWAP1 POP PUSH2 0xD4E PUSH2 0x3103 DUP3 DUP6 PUSH2 0x2FD7 JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP2 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x0 SWAP1 DUP1 PUSH2 0x312A JUMPI PUSH1 0xE SLOAD PUSH2 0xD5A JUMP JUMPDEST PUSH2 0xD5A DUP2 PUSH2 0xD4E DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x318F JUMPI PUSH1 0xF SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3171 JUMPI PUSH2 0x316D PUSH2 0x304B JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x317F DUP3 PUSH2 0xD36 PUSH2 0x2554 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x318D JUMPI DUP1 SWAP4 POP JUMPDEST POP JUMPDEST PUSH2 0xD5A DUP4 PUSH2 0x2BBB DUP4 PUSH2 0x262B JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x31BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54BD JUMP JUMPDEST PUSH2 0x31C8 CALLER PUSH2 0x19E3 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x31FC JUMPI PUSH1 0x0 NOT DUP3 EQ PUSH2 0x31F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x547D JUMP JUMPDEST PUSH2 0x31F9 CALLER PUSH2 0x19E3 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x3204 PUSH2 0x2AE5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3213 PUSH2 0x1B34 PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3233 PUSH8 0xDE0B6B3A7640000 PUSH2 0xD4E DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x323F PUSH2 0x2554 JUMP JUMPDEST SWAP1 POP DUP2 SWAP4 POP DUP1 DUP5 GT ISZERO PUSH2 0x3264 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x53FD JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x32FD JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x32AA SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x51C3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x32FA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x331D SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3331 DUP3 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x2FD7 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x333F CALLER DUP10 DUP10 DUP10 PUSH2 0x3C84 JUMP JUMPDEST POP PUSH2 0x334C CALLER DUP4 DUP4 DUP10 PUSH2 0x35B2 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33B1 SWAP1 DUP6 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3379 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x52A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE DUP4 PUSH2 0x3DA9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x33DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x53AD JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3451 PUSH2 0x344B DUP6 PUSH2 0xD36 PUSH2 0xEEE JUMP JUMPDEST DUP5 PUSH2 0x3019 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD PUSH1 0xB SLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP3 DUP9 LT ISZERO PUSH2 0x3478 JUMPI DUP3 SWAP8 POP JUMPDEST DUP2 DUP9 GT ISZERO PUSH2 0x34EB JUMPI SWAP7 DUP2 SWAP1 SUB SWAP7 PUSH9 0x56BC75E2D63100000 DUP3 SWAP1 SUB DUP1 DUP10 GT ISZERO PUSH2 0x349E JUMPI DUP1 SWAP9 POP JUMPDEST PUSH2 0x34BF PUSH9 0x56BC75E2D63100000 PUSH2 0xD4E DUP6 PUSH2 0xD42 DUP10 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP7 POP PUSH2 0x34E3 DUP8 PUSH2 0xD36 DUP4 PUSH2 0xD4E PUSH2 0x34D6 DUP8 DUP14 PUSH2 0x2FD7 JUMP JUMPDEST DUP15 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP10 POP POP PUSH2 0x3541 JUMP JUMPDEST PUSH2 0x350C DUP6 PUSH2 0xD36 PUSH9 0x56BC75E2D63100000 PUSH2 0xD4E DUP13 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP9 POP SWAP4 SWAP6 POP DUP6 SWAP4 PUSH2 0x3523 DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP6 POP DUP7 DUP10 LT ISZERO PUSH2 0x3535 JUMPI DUP7 SWAP9 POP PUSH2 0x3541 JUMP JUMPDEST DUP6 DUP10 GT ISZERO PUSH2 0x3541 JUMPI DUP6 SWAP9 POP JUMPDEST POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x3570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP2 SWAP1 PUSH2 0x536C JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x357C JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x35AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP2 SWAP1 PUSH2 0x536C JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x35E8 SWAP1 DUP7 SWAP1 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 SWAP1 PUSH1 0x20 ADD PUSH2 0x513E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 EQ ISZERO PUSH2 0x3614 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x3645 JUMP JUMPDEST DUP5 ISZERO PUSH2 0x3645 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3642 SWAP1 DUP4 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x2F7D JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3683 PUSH4 0x1E13380 PUSH2 0xD4E DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x36A0 PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2FD7 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x36BF DUP2 PUSH2 0xD4E DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x0 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 PUSH2 0x100 SWAP1 DIV DUP2 AND SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP12 AND DUP6 EQ ISZERO PUSH2 0x371F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54CD JUMP JUMPDEST CALLVALUE SWAP7 POP DUP8 ISZERO PUSH2 0x377D JUMPI PUSH2 0x3743 DUP6 DUP6 DUP11 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3357 JUMP JUMPDEST DUP8 DUP4 GT ISZERO PUSH2 0x3778 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x3778 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP12 DUP8 SUB SWAP1 PUSH2 0x3357 JUMP JUMPDEST PUSH2 0x37B2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3237 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x37B2 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH2 0x3357 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x38B5 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x37D8 JUMPI POP DUP7 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x37E4 JUMPI POP DUP1 DUP8 LT ISZERO JUMPDEST ISZERO PUSH2 0x387E JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3824 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3838 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x32382D61 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3874 SWAP5 POP DUP16 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP5 SWAP1 PUSH2 0x3357 JUMP JUMPDEST DUP1 DUP8 SUB SWAP7 POP PUSH2 0x38B5 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x191C16B1 PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x38B5 SWAP2 DUP14 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH2 0x3E67 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x38F0 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3239 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x38F0 SWAP2 DUP8 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x3E67 JUMP JUMPDEST POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x391E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x548D JUMP JUMPDEST PUSH2 0x3926 PUSH2 0x2AE5 JUMP JUMPDEST PUSH2 0x3933 PUSH2 0x1B34 PUSH1 0x0 PUSH2 0x262B JUMP JUMPDEST SWAP1 POP PUSH2 0x3951 DUP2 PUSH2 0xD4E DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x25AF AND JUMP JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x3999 JUMPI PUSH2 0x3994 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP PUSH2 0x3E67 JUMP JUMPDEST PUSH2 0x3A03 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x39FD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3A30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x539D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3A59 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH2 0x3A8A SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xB4C03061FB5B7FED76389D5AF8F2E0DDB09F8C70D1333ABBB62582835E10ACCB SWAP1 PUSH2 0x3ACC SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x556B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3B18 SWAP2 SWAP1 PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x3B3E JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x3B53 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3B53 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0xC61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x551D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3B7E JUMPI POP PUSH1 0x0 PUSH2 0xE53 JUMP JUMPDEST DUP3 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x3B92 JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ JUMPDEST ISZERO PUSH2 0x3BAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54DD JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x3BBC JUMPI INVALID JUMPDEST SDIV EQ PUSH2 0xC61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x54DD JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3BF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x554D JUMP JUMPDEST DUP2 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x3C0D JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP4 EQ JUMPDEST ISZERO PUSH2 0x3C2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x542D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x3C35 JUMPI INVALID JUMPDEST SDIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x3C53 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x3C68 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3C68 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0xC61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP1 PUSH2 0x53CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD DUP3 SWAP2 PUSH2 0x3CCC SWAP2 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3586 AND JUMP JUMPDEST SWAP1 POP PUSH1 0xA DUP2 GT PUSH2 0x3CED JUMPI PUSH2 0x3CE6 DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x258A AND JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD PUSH2 0x3D1B SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2FD7 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0x743033787F4738FF4D6A7225CE2BD0977EE5F86B91A902A58F5E4D0B297B4644 SWAP1 PUSH2 0x3D5D SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x556B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3B18 SWAP2 SWAP1 PUSH2 0x52ED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3DC5 SWAP2 SWAP1 PUSH2 0x5180 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3E02 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3E07 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP4 SWAP1 PUSH2 0x3E2C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP2 SWAP1 PUSH2 0x536C JUMP JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x2005 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x3E48 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4384 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0xEDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED1 SWAP2 SWAP1 PUSH2 0x536C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2005 SWAP1 DUP7 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x3379 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0x51DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE53 DUP2 PUSH2 0x56DA JUMP JUMPDEST DUP1 MLOAD PUSH2 0xE53 DUP2 PUSH2 0x56DA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3EEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3F06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3F1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3F36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3F49 PUSH2 0x3F44 DUP3 PUSH2 0x55BA JUMP JUMPDEST PUSH2 0x5594 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x3F6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F3B JUMPI DUP2 PUSH2 0x3F84 DUP9 DUP3 PUSH2 0x402F JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3F71 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3FAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3FB9 PUSH2 0x3F44 DUP3 PUSH2 0x55BA JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x3FDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F3B JUMPI DUP2 PUSH2 0x3FF5 DUP9 DUP3 PUSH2 0x40CA JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3FE2 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE53 DUP2 PUSH2 0x56EE JUMP JUMPDEST DUP1 MLOAD PUSH2 0xE53 DUP2 PUSH2 0x56EE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE53 DUP2 PUSH2 0x56F7 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xE53 DUP2 PUSH2 0x56F7 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x404C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3F1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x408C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x409A PUSH2 0x3F44 DUP3 PUSH2 0x55DA JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x40B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x40C1 DUP4 DUP3 DUP5 PUSH2 0x5660 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x40E8 PUSH2 0x100 PUSH2 0x5594 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x40F6 DUP5 DUP5 PUSH2 0x4024 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x4107 DUP5 DUP5 DUP4 ADD PUSH2 0x400E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x411B DUP5 DUP3 DUP6 ADD PUSH2 0x3EC7 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x412F DUP5 DUP3 DUP6 ADD PUSH2 0x3EC7 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x4143 DUP5 DUP3 DUP6 ADD PUSH2 0x3EC7 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x4157 DUP5 DUP3 DUP6 ADD PUSH2 0x4024 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x416B DUP5 DUP3 DUP6 ADD PUSH2 0x4024 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x417F DUP5 DUP3 DUP6 ADD PUSH2 0x4024 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x419D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP5 DUP5 PUSH2 0x3EC7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP5 DUP5 PUSH2 0x3ED2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x41E6 DUP6 DUP6 PUSH2 0x3EC7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x41F7 DUP6 DUP3 DUP7 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4222 DUP7 DUP7 PUSH2 0x3EC7 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4233 DUP7 DUP3 DUP8 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4244 DUP7 DUP3 DUP8 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4261 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x426D DUP6 DUP6 PUSH2 0x3EC7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x41F7 DUP6 DUP3 DUP7 ADD PUSH2 0x4024 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x42B6 DUP8 DUP3 DUP9 ADD PUSH2 0x3EDD JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x42E0 DUP8 DUP3 DUP9 ADD PUSH2 0x3EDD JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x42FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x103E DUP5 DUP3 DUP6 ADD PUSH2 0x3F25 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4355 DUP6 DUP3 DUP7 ADD PUSH2 0x3F9A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x41F7 DUP6 DUP3 DUP7 ADD PUSH2 0x400E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP5 DUP5 PUSH2 0x400E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP5 DUP5 PUSH2 0x4019 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x43BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x43CB DUP12 DUP12 PUSH2 0x4024 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x43DC DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x43ED DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x43FE DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x440F DUP12 DUP3 DUP13 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x4420 DUP12 DUP3 DUP13 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x4431 DUP12 DUP3 DUP13 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x444D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4459 DUP12 DUP3 DUP13 ADD PUSH2 0x407B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x4489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4495 DUP14 DUP14 PUSH2 0x4024 JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x44A6 DUP14 DUP3 DUP15 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x44B7 DUP14 DUP3 DUP15 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x44C8 DUP14 DUP3 DUP15 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x44D9 DUP14 DUP3 DUP15 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x44EA DUP14 DUP3 DUP15 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x44FB DUP14 DUP3 DUP15 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x450C DUP14 DUP3 DUP15 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4535 DUP14 DUP3 DUP15 ADD PUSH2 0x403A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4572 DUP12 DUP12 PUSH2 0x4024 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x4583 DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x4594 DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x45A5 DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x45B6 DUP12 DUP3 DUP13 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x45C7 DUP12 DUP3 DUP13 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x4431 DUP12 DUP3 DUP13 ADD PUSH2 0x4024 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x103E DUP5 DUP3 DUP6 ADD PUSH2 0x407B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x461F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4355 DUP6 DUP3 DUP7 ADD PUSH2 0x407B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP5 DUP5 PUSH2 0x4024 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP5 DUP5 PUSH2 0x402F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x426D DUP6 DUP6 PUSH2 0x4024 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46BB DUP6 DUP6 PUSH2 0x402F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x41F7 DUP6 DUP3 DUP7 ADD PUSH2 0x402F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x46E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46ED DUP7 DUP7 PUSH2 0x4024 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x46FE DUP7 DUP3 DUP8 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4244 DUP7 DUP3 DUP8 ADD PUSH2 0x3EC7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4731 DUP8 DUP8 PUSH2 0x4024 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4742 DUP8 DUP3 DUP9 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4753 DUP8 DUP3 DUP9 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4764 DUP8 DUP3 DUP9 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4794 DUP9 DUP9 PUSH2 0x4024 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x47A5 DUP9 DUP3 DUP10 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x47B6 DUP9 DUP3 DUP10 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x47C7 DUP9 DUP3 DUP10 ADD PUSH2 0x3EC7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x47D8 DUP9 DUP3 DUP10 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x47FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x480A DUP10 DUP10 PUSH2 0x402F JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x481B DUP10 DUP3 DUP11 ADD PUSH2 0x402F JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x482C DUP10 DUP3 DUP11 ADD PUSH2 0x402F JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x483D DUP10 DUP3 DUP11 ADD PUSH2 0x402F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x484E DUP10 DUP3 DUP11 ADD PUSH2 0x402F JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x485F DUP10 DUP3 DUP11 ADD PUSH2 0x402F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4893 DUP11 DUP11 PUSH2 0x4024 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x48A4 DUP11 DUP3 DUP12 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x48B5 DUP11 DUP3 DUP12 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x48C6 DUP11 DUP3 DUP12 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x48D7 DUP11 DUP3 DUP12 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x48E8 DUP11 DUP3 DUP12 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x48F9 DUP11 DUP3 DUP12 ADD PUSH2 0x4024 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4914 DUP4 DUP4 PUSH2 0x494C JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4914 DUP4 DUP4 PUSH2 0x4ABF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4934 DUP4 DUP4 PUSH2 0x5078 JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x4946 DUP2 PUSH2 0x564F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4946 DUP2 PUSH2 0x5620 JUMP JUMPDEST PUSH2 0x4946 PUSH2 0x4961 DUP3 PUSH2 0x5620 JUMP JUMPDEST PUSH2 0x5698 JUMP JUMPDEST PUSH2 0x496F DUP2 PUSH2 0x5607 JUMP JUMPDEST PUSH2 0x4979 DUP2 DUP5 PUSH2 0xD5E JUMP JUMPDEST SWAP3 POP PUSH2 0x4984 DUP3 PUSH2 0xE6B JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEDA JUMPI DUP2 MLOAD PUSH2 0x499C DUP8 DUP3 PUSH2 0x4908 JUMP JUMPDEST SWAP7 POP PUSH2 0x49A7 DUP4 PUSH2 0x5601 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4988 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49BD DUP3 PUSH2 0x560D JUMP JUMPDEST PUSH2 0x49C7 DUP2 DUP6 PUSH2 0x5617 JUMP JUMPDEST SWAP4 POP PUSH2 0x49D2 DUP4 PUSH2 0x5601 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4A00 JUMPI DUP2 MLOAD PUSH2 0x49EA DUP9 DUP3 PUSH2 0x491C JUMP JUMPDEST SWAP8 POP PUSH2 0x49F5 DUP4 PUSH2 0x5601 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x49D6 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A16 DUP3 PUSH2 0x560D JUMP JUMPDEST PUSH2 0x4A20 DUP2 DUP6 PUSH2 0x5617 JUMP JUMPDEST SWAP4 POP PUSH2 0x4A2B DUP4 PUSH2 0x5601 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4A00 JUMPI DUP2 MLOAD PUSH2 0x4A43 DUP9 DUP3 PUSH2 0x4928 JUMP JUMPDEST SWAP8 POP PUSH2 0x4A4E DUP4 PUSH2 0x5601 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4A2F JUMP JUMPDEST PUSH2 0x4A62 DUP2 PUSH2 0x5611 JUMP JUMPDEST PUSH2 0x4A6C DUP2 DUP5 PUSH2 0xD5E JUMP JUMPDEST SWAP3 POP PUSH2 0x4A77 DUP3 PUSH2 0xE6B JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEDA JUMPI DUP2 MLOAD PUSH2 0x4A8F DUP8 DUP3 PUSH2 0x491C JUMP JUMPDEST SWAP7 POP PUSH2 0x4A9A DUP4 PUSH2 0x5601 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4A7B JUMP JUMPDEST PUSH2 0x4946 DUP2 PUSH2 0x562B JUMP JUMPDEST PUSH2 0x4946 PUSH2 0x4ABA DUP3 PUSH2 0x562B JUMP JUMPDEST PUSH2 0x56A3 JUMP JUMPDEST PUSH2 0x4946 DUP2 PUSH2 0xE6B JUMP JUMPDEST PUSH2 0x4946 PUSH2 0x4AD4 DUP3 PUSH2 0xE6B JUMP JUMPDEST PUSH2 0xE6B JUMP JUMPDEST PUSH2 0x4946 PUSH2 0x4AD4 DUP3 PUSH2 0x5630 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AF0 DUP3 PUSH2 0x560D JUMP JUMPDEST PUSH2 0x4AFA DUP2 DUP6 PUSH2 0x5617 JUMP JUMPDEST SWAP4 POP PUSH2 0x4B0A DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x566C JUMP JUMPDEST PUSH2 0x4B13 DUP2 PUSH2 0x56C4 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B28 DUP3 PUSH2 0x560D JUMP JUMPDEST PUSH2 0x4B32 DUP2 DUP6 PUSH2 0xD5E JUMP JUMPDEST SWAP4 POP PUSH2 0x4B42 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x566C JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B59 PUSH1 0xC DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH12 0x636F6C6C20746F6F206C6F77 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B81 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9F PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BBD PUSH1 0x26 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C05 PUSH1 0x1B DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C3E PUSH1 0x21 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C81 PUSH1 0xE DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CAB PUSH1 0x1 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CC8 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CE6 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D04 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D22 PUSH1 0x21 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D65 PUSH1 0x15 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D96 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DB4 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DD2 PUSH1 0xF DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DFD PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E1B PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E39 PUSH1 0x21 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E7C PUSH1 0xC DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EA4 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EC2 PUSH1 0x2 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EE0 PUSH1 0x27 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206D756C7469706C69636174696F6E206F DUP2 MSTORE PUSH7 0x766572666C6F77 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F29 PUSH1 0x1D DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x696E76616C6964207261746520636F6C6C61746572616C20746F6B656E000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F62 PUSH1 0xA DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH10 0x37B7363CA830BAB9B2B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F88 PUSH1 0xC DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FB0 PUSH1 0x24 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 DUP2 MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FF6 PUSH1 0x18 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x34303120757365206F66206578697374696E67206C6F616E0000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x502F PUSH1 0x1 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x504C PUSH1 0x20 DUP4 PUSH2 0x5617 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206279207A65726F DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x508A DUP5 DUP3 PUSH2 0x4ABF JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x509D PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4AA5 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x50B0 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x494C JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x50C3 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x494C JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x50D6 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x494C JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x50E9 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4ABF JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x50FC PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x4ABF JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x33B1 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x4946 DUP2 PUSH2 0x5649 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5124 DUP3 DUP6 PUSH2 0x4955 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x5134 DUP3 DUP5 PUSH2 0x4AAE JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x514A DUP3 DUP6 PUSH2 0x4955 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x515A DUP3 DUP5 PUSH2 0x4AC8 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5170 DUP3 DUP6 PUSH2 0x4AD9 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x515A DUP3 DUP5 PUSH2 0x4AC8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC61 DUP3 DUP5 PUSH2 0x4B1D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE53 DUP3 DUP5 PUSH2 0x494C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE53 DUP3 DUP5 PUSH2 0x493D JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x51B6 DUP3 DUP6 PUSH2 0x494C JUMP JUMPDEST PUSH2 0xC61 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x494C JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x51D1 DUP3 DUP6 PUSH2 0x494C JUMP JUMPDEST PUSH2 0xC61 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x493D JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x51EC DUP3 DUP7 PUSH2 0x494C JUMP JUMPDEST PUSH2 0x51F9 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x494C JUMP JUMPDEST PUSH2 0x103E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4ABF JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x5214 DUP3 DUP9 PUSH2 0x494C JUMP JUMPDEST PUSH2 0x5221 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x494C JUMP JUMPDEST PUSH2 0x522E PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x523B PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x36BF PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4AA5 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x5256 DUP3 DUP10 PUSH2 0x494C JUMP JUMPDEST PUSH2 0x5263 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x494C JUMP JUMPDEST PUSH2 0x5270 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x527D PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x528A PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x5297 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4ABF JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x52B0 DUP3 DUP6 PUSH2 0x494C JUMP JUMPDEST PUSH2 0xC61 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4ABF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xC61 DUP2 DUP5 PUSH2 0x49B2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xC61 DUP2 DUP5 PUSH2 0x4A0B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE53 DUP3 DUP5 PUSH2 0x4AA5 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE53 DUP3 DUP5 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x1C0 DUP2 ADD PUSH2 0x530A DUP3 DUP11 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x5317 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x5324 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4AA5 JUMP JUMPDEST PUSH2 0x5331 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x533E PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4966 JUMP JUMPDEST PUSH2 0x534C PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4A59 JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x1A0 DUP4 ADD MSTORE PUSH2 0x535F DUP2 DUP5 PUSH2 0x4AE5 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xC61 DUP2 DUP5 PUSH2 0x4AE5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4B4C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4B74 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4B92 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4BB0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4BF8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4C31 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4C74 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4C9E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4CBB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4CD9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4CF7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4D15 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4D58 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4D89 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4DC5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4DF0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4E2C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4E6F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4E97 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4EB5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4ED3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4F1C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4F55 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4F7B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4FA3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x4FE9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x5022 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE53 DUP2 PUSH2 0x503F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x52B0 DUP3 DUP6 PUSH2 0x4ABF JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x5579 DUP3 DUP7 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x51F9 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4ABF JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE53 DUP3 DUP5 PUSH2 0x510F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x55B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x55D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x55F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST POP PUSH1 0x4 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x5 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x563D JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x5620 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5687 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x566F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x33B1 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x56AE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x56B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x56D4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE53 DUP3 PUSH2 0x56CE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x56E3 DUP2 PUSH2 0x5620 JUMP JUMPDEST DUP2 EQ PUSH2 0x23F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56E3 DUP2 PUSH2 0x562B JUMP JUMPDEST PUSH2 0x56E3 DUP2 PUSH2 0xE6B JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH8 0xB5B5F2C3A4D60367 0xDC 0xBF PUSH11 0xD233BF9B3EF127DEFCBBE6 0x4F 0x2D 0xE2 0xF 0xBD 0xEE 0xBA 0x22 CALL PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "2146:54774:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2146:54774:5;;30250:914;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;30250:914:5;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;559:36:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;559:36:7;;;:::i;:::-;;;;;;;;26169:332:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26169:332:5;;;;;;;;:::i;1977:18:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1977:18:3;;;:::i;:::-;;;;;;;;1489:181:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1489:181:0;;;;;;;;:::i;:::-;;;;;;;;23294:120:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23294:120:5;;;:::i;24056:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24056:219:5;;;;;;;;:::i;1778:80:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1778:80:1;;;:::i;31167:391:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;31167:391:5;;;;;;;;:::i;:::-;;2441:27:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2441:27:3;;;:::i;2150:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2150:23:3;;;:::i;24745:159:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24745:159:5;;;:::i;17300:315::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17300:315:5;;;;;;;;:::i;12249:2583::-;;;;;;;;;:::i;:::-;;;;;;;;;1580:77:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1580:77:7;;;;;;;;:::i;7601:2798:5:-;;;;;;;;;:::i;598:32:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;598:32:7;;;:::i;2021:21:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2021:21:3;;;:::i;:::-;;;;;;;;2633:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2633:48:3;;;;;;;;:::i;2176:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:29:3;;;:::i;3823:156:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3823:156:5;;;;;;;;:::i;22451:120::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22451:120:5;;;:::i;20318:285::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20318:285:5;;;;;;;;:::i;2310:24:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2310:24:3;;;:::i;22119:227:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22119:227:5;;;:::i;28552:995::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;28552:995:5;;;;;;;;:::i;26954:895::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26954:895:5;;;;;;;;:::i;:::-;;;;;;;;;;1386:73:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1386:73:7;;;;;;;;:::i;2035:96:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2035:96:1;;;;;;;;:::i;47566:377:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;47566:377:5;;;;;;;;:::i;2115:31:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2115:31:3;;;:::i;2407:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2407:31:3;;;:::i;2241:36::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2241:36:3;;;:::i;21419:245:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21419:245:5;;;:::i;25557:509::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25557:509:5;;;;;;;;:::i;22757:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22757:101:5;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;976:37:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;976:37:7;;;:::i;1134:83:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;25091:232:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25091:232:5;;;:::i;1998:20:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1998:20:3;;;:::i;633:22:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;633:22:7;;;:::i;4471:340:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4471:340:5;;;;;;;;:::i;899:21:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;899:21:7;;;:::i;16923:145:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16923:145:5;;;;;;;;:::i;23018:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23018:136:5;;;;;;;;:::i;2281:26:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2281:26:3;;;:::i;53404:333:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;53404:333:5;;;;;;;;:::i;815:31:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:31:7;;;:::i;55680:115:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;55680:115:5;;;;;;;;:::i;23646:162::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23646:162:5;;;;;;;;:::i;2208:30:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2208:30:3;;;:::i;1977:745:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1977:745:7;;;;;;;;:::i;4714:816::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4714:816:7;;;;;;;;:::i;2464:123:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2464:123:1;;;;;;;;:::i;5857:447:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5857:447:7;;;;;;;;:::i;2854:51:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2854:51:3;;;;;;;;:::i;2904:587:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2904:587:7;;;;;;;;:::i;21843:115:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21843:115:5;;;;;;;;:::i;2337:27:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2337:27:3;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1351:98:142;;;;;;;;:::i;15691:938:5:-;;;;;;;;;:::i;658:20:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;658:20:7;;;:::i;2355:35:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2355:35:5;;;:::i;30250:914::-;30450:20;30480:18;;30476:685;;-1:-1:-1;;;;;30509:36:5;;30505:84;;30572:17;;-1:-1:-1;;;;;30572:17:5;;-1:-1:-1;30505:84:5;30594:20;30617:13;:81;30666:22;30690:4;30649:46;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;30649:46:5;;;30639:57;;49:4:-1;30639:57:5;;;;30617:81;;;;;;;;;;;30631:66;30617:81;;30731:21;;30775:16;;;30844:74;;-1:-1:-1;;;30844:74:5;;30617:81;;-1:-1:-1;;;;;;30731:21:5;;;;30718:51;;30731:21;30775:16;;;;;;;30797:22;;30825:13;;30731:21;;30844:60;;:74;;30617:81;;30844:74;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30844:74:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30844:74:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30844:74:5;;;;;;;;;30943:4;30718:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30718:251:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30718:251:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30718:251:5;;;;;;;;;30703:266;;30996:86;31028:12;31042:18;:16;:18::i;:::-;31062:19;30996:31;:86::i;:::-;30975:107;-1:-1:-1;31107:20:5;;-1:-1:-1;31107:18:5;;-1:-1:-1;31107:20:5:i;:::-;31092:12;:35;31088:69;;;31150:1;31135:16;;31088:69;30476:685;;30250:914;;;;;:::o;559:36:7:-;;;-1:-1:-1;;;;;559:36:7;;:::o;26169:332:5:-;26274:22;;26230:7;;;;-1:-1:-1;;;;;26274:22:5;:36;26270:153;;26348:22;;26331:87;;-1:-1:-1;;;26331:87:5;;-1:-1:-1;;;;;26348:22:5;;;;26331:64;;:87;;26404:4;;26411:6;;26331:87;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26331:87:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26331:87:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;26331:87:5;;;;;;;;;26317:101;;26270:153;26433:64;26490:6;26433:52;26472:12;:10;:12::i;:::-;26433:34;26455:11;26433:17;26443:6;26433:9;:17::i;:::-;:21;:34;:21;:34;:::i;:::-;:38;:52;:38;:52;:::i;:::-;:56;:64;:56;:64;:::i;:::-;26426:71;;;26169:332;;;;:::o;1977:18:3:-;;;;;;;;;;;;;;-1:-1:-1;;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1489:181:0:-;1574:10;1556:4;1566:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1566:29:0;;;;;;;;;;:38;;;1613;1556:4;;1566:29;;1613:38;;;;1598:6;;1613:38;;;;;;;;;;-1:-1:-1;1662:4:0;1489:181;;;;;:::o;23294:120:5:-;23345:7;23365:45;23389:20;23407:1;23389:17;:20::i;23365:45::-;23358:52;;23294:120;;:::o;24056:219::-;24131:7;24144:19;24166:18;:16;:18::i;:::-;24144:40;-1:-1:-1;24192:16:5;;24188:84;;24222:45;24242:11;24255;24222:19;:45::i;:::-;24215:52;;;;;24188:84;24056:219;;;;:::o;1778:80:1:-;1842:12;;1778:80;:::o;31167:391:5:-;31356:27;31392:101;31418:14;31434:13;31449:19;31470:22;31392:25;:101::i;:::-;31353:140;;;;31528:9;31505:19;:32;;31497:57;;;;-1:-1:-1;;;31497:57:5;;;;;;;;;;;;;;;;;31167:391;;;;;;:::o;2441:27:3:-;;;;:::o;2150:23::-;;;;:::o;24745:159:5:-;24827:21;;24883:16;;;24814:86;;-1:-1:-1;;;24814:86:5;;24794:7;;-1:-1:-1;;;;;24827:21:5;;;;24814:53;;:86;;24876:4;;24827:21;24883:16;;;;;;;24814:86;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24814:86:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24814:86:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;24814:86:5;;;;;;;;17300:315;17518:21;;17505:58;;-1:-1:-1;;;17505:58:5;;17393:4;;17413:198;;17440:5;;17451:3;;17460:6;;-1:-1:-1;;;;;17518:21:5;;17505:46;;:58;;17552:10;;17505:58;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17505:58:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17505:58:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17505:58:5;;;;;;;;;:101;;-1:-1:-1;;;;;17580:14:5;;;;;;:7;:14;;;;;;;;17595:10;17580:26;;;;;;;;17505:101;;;-1:-1:-1;;17505:101:5;17413:21;:198::i;:::-;17403:208;17300:315;-1:-1:-1;;;;17300:315:5:o;12249:2583::-;12754:7;12766;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;12844:13:5;:11;:13::i;:::-;12862:107;12883:14;12899:13;12914:19;12935:22;12959:9;12862:20;:107::i;:::-;-1:-1:-1;;;;;12978:36:5;;12974:94;;13046:17;;-1:-1:-1;;;;;13046:17:5;;-1:-1:-1;12974:94:5;13106:16;;-1:-1:-1;;;;;13080:42:5;;;13106:16;;;;;13080:42;;13072:57;;;;-1:-1:-1;;;13072:57:5;;;;;;;;;13193:11;;;:35;;-1:-1:-1;13208:10:5;-1:-1:-1;;;;;13208:20:5;;;13193:35;13185:72;;;;-1:-1:-1;;;13185:72:5;;;;;;;;;-1:-1:-1;;;;;13307:40:5;;13350:1;13307:40;;;:16;:40;;;;;;:44;13303:122;;-1:-1:-1;;;;;13384:40:5;;;;;;:16;:40;;;;;;13361:63;;;13353:72;;;;;;13450:16;;;;;-1:-1:-1;;;;;13450:16:5;13470:1;13433:34;;;:16;:34;;;;;;:38;13429:104;;13515:16;;;;;-1:-1:-1;;;;;13515:16:5;13498:34;;;;:16;:34;;;;;;13481:51;;;13473:60;;;;;;13694:20;13717:73;13731:22;13755:19;13776:13;13717;:73::i;:::-;13694:96;-1:-1:-1;13802:17:5;13794:32;;;;-1:-1:-1;;;13794:32:5;;;;;;;;;13831:31;;:::i;:::-;13866:29;;:::i;:::-;13927:4;13900:32;;-1:-1:-1;;;;;13952:25:5;;13900:16;13952;;;:25;;;13981:16;;;:25;;;;14123:14;;:29;;;14288:14;;;:30;;;14322:14;;;:36;;;14363:17;:15;:17::i;:::-;14420:120;14485:14;14504:11;14516:1;14504:14;;;;14420:29;:120::i;:::-;14385:155;;14386:14;;;14385:155;14601:36;14614:6;14622:14;14601:12;:36::i;:::-;14584:53;;14651:177;14671:6;14683:1;14709:14;14746:22;14774:13;14793:11;14810:13;14651:14;:177::i;:::-;493:1:143;1234:14;:38;14641:187:5;;;;-1:-1:-1;12249:2583:5;-1:-1:-1;;;;;;;;;;;;12249:2583:5:o;1580:77:7:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1637:6:7;:16;;-1:-1:-1;;;;;;1637:16:7;-1:-1:-1;;;;;1637:16:7;;;;;;;;;;1580:77::o;7601:2798:5:-;8198:7;8210;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;8295:19:5;8287:33;;;;-1:-1:-1;;;8287:33:5;;;;;;;;;8325:13;:11;:13::i;:::-;-1:-1:-1;;;;;8388:40:5;;8431:1;8388:40;;;:16;:40;;;;;;:44;8384:122;;-1:-1:-1;;;;;8465:40:5;;;;;;:16;:40;;;;;;8442:63;;;8434:72;;;;;;8524:9;:14;;:50;;;8555:19;8542:9;:32;8524:50;8523:101;;;;-1:-1:-1;8584:24:5;;;;:39;;-1:-1:-1;8612:11:5;;;8584:39;8523:180;;;;-1:-1:-1;;;;;;8633:36:5;;;;;:54;;-1:-1:-1;8673:9:5;:14;;8633:54;:69;;;-1:-1:-1;8691:11:5;;;8633:69;8523:227;;;;-1:-1:-1;8712:11:5;;;:37;;-1:-1:-1;8727:10:5;-1:-1:-1;;;;;8727:22:5;;;8712:37;8511:251;;;;-1:-1:-1;;;8511:251:5;;;;;;;;;-1:-1:-1;;;;;9283:36:5;;9279:94;;9351:17;;-1:-1:-1;;;;;9351:17:5;;-1:-1:-1;9279:94:5;9410:16;;-1:-1:-1;;;;;9384:42:5;;;9410:16;;;;;9384:42;;9376:57;;;;-1:-1:-1;;;9376:57:5;;;;;;;;;9438:17;:15;:17::i;:::-;9460:31;;:::i;:::-;9495:29;;:::i;:::-;9556:4;9529:32;;-1:-1:-1;;;;;9581:27:5;;;9529:16;9581;;;:27;;;;9612;;;:16;;;:27;9698:14;;:31;;;9860:134;9715:14;9915:20;9543:1;9915:17;:20::i;:::-;9971:19;9860:31;:134::i;:::-;9810:11;9822:1;9810:14;;;9826:11;9838:1;9826:14;;;9842:11;9854:1;9842:14;;;9809:185;;;;;;;;10060:19;10043:11;10055:1;10043:14;;;:36;;;;;10094:301;10114:6;10126:14;10167:21;;;;;;;;;-1:-1:-1;;;;;10167:21:5;-1:-1:-1;;;;;10146:60:5;;10213:13;:81;10262:22;10286:4;10245:46;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10245:46:5;;;10235:57;;;;;;10227:66;;10213:81;;;;;;;;;;;;10146:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10146:154:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10146:154:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10146:154:5;;;;;;;;;10306:22;10334:13;10353:11;10094:301;;;;;;;;;;;;:14;:301::i;:::-;493:1:143;1234:14;:38;10084:311:5;;;;-1:-1:-1;7601:2798:5;-1:-1:-1;;;;;;;;;;;7601:2798:5:o;598:32:7:-;;;-1:-1:-1;;;;;598:32:7;;:::o;2021:21:3:-;;;;;;:::o;2633:48::-;;;;;;;;;;;;;:::o;2176:29::-;;;;:::o;3823:156:5:-;3909:18;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;3940:35:5;3951:8;3961:13;3940:10;:35::i;:::-;3933:42;;1229:1:143;493;1234:14;:38;3823:156:5;;-1:-1:-1;;3823:156:5:o;22451:120::-;22505:7;22525:42;22548:18;:16;:18::i;:::-;22525:22;:42::i;20318:285::-;20373:6;20428:12;20470:4;2569:66;20476:18;;20453:42;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20453:42:5;;;20443:53;;;;;;20428:68;;20529:70;20539:4;20545:8;:14;20554:4;-1:-1:-1;;;;;20545:14:5;-1:-1:-1;;;;;20545:14:5;;;;;;;;;;;;;20561:12;:10;:12::i;:::-;-1:-1:-1;;;;;20575:23:5;;;;;;:17;:23;;;;;;20529:9;:70::i;2310:24:3:-;;;;:::o;22119:227:5:-;22167:7;22180:19;22202:20;22220:1;22202:17;:20::i;:::-;22180:42;;22226:19;22248:18;:16;:18::i;:::-;22226:40;;22288:11;22274;:25;22270:73;;;22313:25;;;-1:-1:-1;22306:32:5;;22270:73;22119:227;;;:::o;28552:995::-;28751:21;28782:17;;28778:766;;28811:23;28838:86;28870:12;28884:18;:16;:18::i;28838:86::-;28806:118;;;;28953:20;:18;:20::i;:::-;28934:15;:39;28930:610;;-1:-1:-1;;;;;28985:36:5;;28981:84;;29048:17;;-1:-1:-1;;;;;29048:17:5;;-1:-1:-1;28981:84:5;29071:20;29094:13;:81;29143:22;29167:4;29126:46;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;29126:46:5;;;29116:57;;49:4:-1;29116:57:5;;;;29094:81;;;;;;;;;;;29108:66;29094:81;;29206:21;;29265:16;;;29342:74;;-1:-1:-1;;;29342:74:5;;29094:81;;-1:-1:-1;29193:292:5;;29482:2;;-1:-1:-1;;;;;29206:21:5;;;;29193:64;;29206:21;29265:16;;;;;29289:22;;29319:15;;29206:21;;29342:60;;:74;;29094:81;;29342:74;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29342:74:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29342:74:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;29342:74:5;;;;;;;;;29442:4;29193:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29193:277:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29193:277:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;29193:277:5;;;;;;;;:292;29181:304;;;;;;26954:895;27163:17;;;-1:-1:-1;;;;;27242:36:5;;27238:94;;27310:17;;-1:-1:-1;;;;;27310:17:5;;-1:-1:-1;27238:94:5;27336:20;27359:73;27373:22;27397:19;27418:13;27359;:73::i;:::-;27336:96;;27465:59;27495:14;27511:12;27465:29;:59::i;:::-;27437:87;;-1:-1:-1;27437:87:5;-1:-1:-1;27544:20:5;:18;:20::i;:::-;27532:9;:32;27528:64;;;-1:-1:-1;27579:1:5;;-1:-1:-1;27579:1:5;;-1:-1:-1;27579:1:5;;-1:-1:-1;27571:16:5;;27528:64;27612:28;:13;27630:9;27612:28;:17;:28;:::i;:::-;27671:21;;27725:16;;;27658:187;;-1:-1:-1;;;27658:187:5;;27596:44;;-1:-1:-1;;;;;;27671:21:5;;;;27658:62;;:187;;27671:21;27725:16;;;;;27746:22;;27596:44;;27791:19;;27815:12;;27832:9;;27658:187;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27658:187:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27658:187:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;27658:187:5;;;;;;;;;27645:200;;26954:895;;;;;;;;;;:::o;1386:73:7:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1441:5:7;:14;;-1:-1:-1;;;;;;1441:14:7;-1:-1:-1;;;;;1441:14:7;;;;;;;;;;1386:73::o;2035:96:1:-;-1:-1:-1;;;;;2111:16:1;2091:7;2111:16;;;:8;:16;;;;;;;2035:96::o;47566:377:5:-;47658:7;47675:16;;;;;:46;;;47710:11;47695;:26;;47675:46;47671:269;;;47739:196;47928:6;47739:178;47839:77;47852:6;47873:21;;;;;;;;;-1:-1:-1;;;;;47873:21:5;-1:-1:-1;;;;;47860:53:5;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;47860:55:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47860:55:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;47860:55:5;;;;;;;;;47839:12;:77::i;:::-;47739:89;47785:42;47802:11;47815;47785:16;:42::i;:::-;47739:35;47762:11;47739:22;:35::i;:196::-;47728:207;;;;2115:31:3;;;;;;-1:-1:-1;;;;;2115:31:3;;:::o;2407:::-;;;;:::o;2241:36::-;;;;:::o;21419:245:5:-;21511:15;;21462:13;;;;21537:15;-1:-1:-1;;;;;21511:42:5;;;:15;;:42;21507:96;;21581:17;:15;:17::i;:::-;21560:38;-1:-1:-1;;21507:96:5;21614:46;21626:33;21644:14;21626:17;:33::i;:::-;21614:11;:46::i;:::-;21607:53;;;21419:245;:::o;25557:509::-;25630:23;25810:27;25840:29;25865:3;25840:20;25857:2;25840:12;;:16;;:20;;;;:::i;:29::-;25810:59;-1:-1:-1;25873:14:5;25890:40;25898:6;25810:59;25890:40;:19;:40;:::i;:::-;25873:57;;25934:19;25956:41;25990:6;25956:29;25978:6;25956:17;:15;:17::i;:41::-;25934:63;-1:-1:-1;26019:43:5;26047:14;26019:23;25934:63;26035:6;26019:23;:15;:23;:::i;:43::-;26001:61;25557:509;-1:-1:-1;;;;;25557:509:5:o;22757:101::-;22808:7;22828:26;22852:1;22828:23;:26::i;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;976:37:7:-;;;-1:-1:-1;;;;;976:37:7;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;25091:232:5:-;25183:15;;25140:7;;;;25209:15;-1:-1:-1;;;;;25183:42:5;;;:15;;:42;25179:96;;25253:17;:15;:17::i;:::-;25232:38;-1:-1:-1;;25179:96:5;25286:33;25304:14;25286:17;:33::i;1998:20:3:-;;;;;;;;;;;;;;;-1:-1:-1;;1998:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;633:22:7;;;-1:-1:-1;;;;;633:22:7;;:::o;4471:340:5:-;4554:22;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;4599:22:5;4610:10;4599;:22::i;:::-;4582:39;-1:-1:-1;4715:19:5;;4711:97;;4741:62;4755:16;;;;;;;;;-1:-1:-1;;;;;4755:16:5;4773:8;4783:14;4741:62;;;;;;;;;;;;;-1:-1:-1;;;4741:62:5;;;:13;:62::i;899:21:7:-;;;-1:-1:-1;;;;;899:21:7;;:::o;16923:145:5:-;16988:4;17005:59;17027:10;17039:3;17044:6;-1:-1:-1;;17005:21:5;:59::i;23018:136::-;23093:7;23113:37;23137:12;23113:23;:37::i;2281:26:3:-;;;;:::o;53404:333:5:-;53467:13;53486:10;53533:6;53516:24;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;53516:24:5;;;53506:35;;;;;;53486:56;;53546:12;53588:3;53601:66;53571:98;;;;;;;;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;53571:98:5;;;53561:109;;49:4:-1;53561:109:5;;;;53700:11;;53404:333;-1:-1:-1;;;;53404:333:5:o;815:31:7:-;;;-1:-1:-1;;;;;815:31:7;;:::o;55680:115:5:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;55757:22:5;:34;;-1:-1:-1;;;;;;55757:34:5;-1:-1:-1;;;;;55757:34:5;;;;;;;;;;55680:115::o;23646:162::-;23721:7;23741:63;23765:38;23790:12;23765:20;23783:1;23765:17;:20::i;2208:30:3:-;;;;:::o;1977:745:7:-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;2162:16;;2097:33;;2162:16;;;-1:-1:-1;;;;;2162:16:7;2134:25;2183:174;2207:14;:21;2203:1;:25;2183:174;;;2270:17;2240:14;2255:1;2240:17;;;;;;;;;;;;;;:27;;:47;-1:-1:-1;;;;;2240:47:7;;;-1:-1:-1;;;;;2240:47:7;;;;;2324:14;:28;;2345:7;2324:28;;;2341:1;2324:28;2292:60;;:14;2307:1;2292:17;;;;;;;;;;;;;;;;;;:29;;:60;2230:3;;2183:174;;;-1:-1:-1;2401:21:7;;2380:75;;-1:-1:-1;;;2380:75:7;;-1:-1:-1;;;;;2401:21:7;;;;2380:59;;:75;;2440:14;;2380:75;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2380:75:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2380:75:7;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2380:75:7;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;2380:75:7;;;;;;;;;2361:94;-1:-1:-1;2464:9:7;2459:260;2483:16;:23;2479:1;:27;2459:260;;;2695:16;2712:1;2695:19;;;;;;;;;;;;;;2518:13;:174;2593:14;2608:1;2593:17;;;;;;;;;;;;;;:33;;;2635:14;2568:106;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2568:106:7;;;2551:130;;49:4:-1;2551:130:7;;;;2518:174;;;;;;;;;;2537:150;2518:174;:196;2508:3;;2459:260;;;;1160:1;;1977:745;;:::o;4714:816::-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;1875:6:3;4951:30:7;:15;4971:9;4951:30;:19;:30;:::i;:::-;:55;;4943:89;;;;-1:-1:-1;;;4943:89:7;;;;;;;;;1875:6:3;5044:44:7;:22;5071:16;5044:44;:26;:44;:::i;:::-;:69;;5036:103;;;;-1:-1:-1;;;5036:103:7;;;;;;;;;1875:6:3;5152:12:7;:37;;:76;;;;;1875:6:3;5193:10:7;:35;;5152:76;5144:104;;;;-1:-1:-1;;;5144:104:7;;;;;;;;;5253:8;:20;;;;5277:14;:32;;;;5313:15;:34;;;;5351:21;:46;5402:11;:26;5445:9;:22;5484:12;:28;4714:816::o;2464:123:1:-;-1:-1:-1;;;;;2558:15:1;;;2538:7;2558:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2464:123::o;5857:447:7:-;6000:6;;-1:-1:-1;;;;;6000:6:7;5986:10;:20;5978:43;;;;-1:-1:-1;;;5978:43:7;;;;;;;;;6065:12;6155:6;6138:24;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6138:24:7;;;6128:35;;;;;;6179:66;6098:154;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6098:154:7;;;6083:174;;;;;;6065:192;;6288:8;6282:4;6275:22;6270:31;;;:::o;2854:51:3:-;;;;;;;;;;;;;:::o;2904:587:7:-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;3030:47;;;3022:74;;;;-1:-1:-1;;;3022:74:7;;;;;;;;;3137:38;;;;;;;;;;;;;;;;3101:33;;3151:16;3137:38;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;3137:38:7;-1:-1:-1;3101:74:7;-1:-1:-1;3184:9:7;3179:225;3199:27;;;3179:225;;;3238:10;3286:16;;3303:1;3286:19;;;;;;;;;;;;;;;;;;;;;;3307:13;;3321:1;3307:16;;;;;;;;;;;;;;;;;;;;;;3269:55;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3269:55:7;;;3259:66;;;;;;3251:75;;3238:88;;3353:13;:17;3367:2;3353:17;;;;;;;;;;;;3331:16;3348:1;3331:19;;;;;;;;;;;;;;;;;;:39;;;;3382:17;;;;:13;:17;;;;;3375:24;3228:3;;3179:225;;;-1:-1:-1;3429:21:7;;3408:79;;-1:-1:-1;;;3408:79:7;;-1:-1:-1;;;;;3429:21:7;;;;3408:61;;:79;;3470:16;;3408:79;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3408:79:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3408:79:7;;;;1160:1;2904:587;;;;:::o;21843:115:5:-;-1:-1:-1;;;;;21930:24:5;21904:13;21930:24;;;:17;:24;;;;;;;21843:115::o;2337:27:3:-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;15691:938:5:-;16216:7;;-1:-1:-1;;;;;16310:31:5;;;16306:139;;16374:21;;16346:99;;-1:-1:-1;;;16346:99:5;;-1:-1:-1;;;;;16374:21:5;;;;16346:72;;:99;;16419:6;;16427:17;;16346:99;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16346:99:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16346:99:5;;;;16306:139;16459:166;16476:6;16488:14;16508:13;16527:19;16552:22;16580:6;16592:9;16607:13;;16459:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16459:11:5;;-1:-1:-1;;;16459:166:5:i;:::-;16449:176;;;;15691:938;;;;;;;;;;;;;:::o;658:20:7:-;;;-1:-1:-1;;;;;658:20:7;;:::o;2355:35:5:-;2389:1;2355:35;:::o;37694:703::-;37874:20;37899:29;37933:23;37981:51;38006:12;38020:11;37981:24;:51::i;:::-;37966:66;-1:-1:-1;38162:169:5;38195:132;38213:6;38225:72;38279:17;38225:49;38213:6;38225:37;37966:66;38242:19;38225:37;:16;:37;:::i;38195:132::-;38162:24;:12;38179:6;38162:24;:16;:24;:::i;:169::-;38144:187;-1:-1:-1;38360:33:5;38144:187;38380:12;38360:33;:19;:33;:::i;:::-;38336:57;;37694:703;;;;;;;:::o;46398:126::-;46478:16;;;46471:49;;-1:-1:-1;;;46471:49:5;;46451:7;;46478:16;;;;-1:-1:-1;;;;;46478:16:5;;46471:34;;:49;;46514:4;;46471:49;;;812:155:145;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;1999:399;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;2817:121;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;52722:395:5:-;52796:19;52825:12;;52841:1;52825:17;52821:293;;52873:19;;52972:18;52968:96;;53014:44;53039:18;:16;:18::i;:::-;53014:20;:18;:20::i;:44::-;52998:60;;52968:96;53076:33;:13;53094:14;53076:33;:17;:33;:::i;17998:1140::-;18128:4;-1:-1:-1;;18142:16:5;:31;18138:110;;18209:34;;;;;;;;;;;;-1:-1:-1;;;18209:34:5;;;;;;:16;;18230:6;;18209:34;:20;:34;:::i;:::-;-1:-1:-1;;;;;18180:14:5;;;;;;:7;:14;;;;;;;;18195:10;18180:26;;;;;;;:63;18138:110;-1:-1:-1;;;;;18260:17:5;;18252:32;;;;-1:-1:-1;;;18252:32:5;;;;;;;;;-1:-1:-1;;;;;18313:15:5;;18289:21;18313:15;;;:8;:15;;;;;;;;;18359:31;;;;;;;;;;;-1:-1:-1;;;18359:31:5;;;;;;;18313:15;;18289:21;18359:31;;18313:15;;18377:6;;18359:31;:17;:31;:::i;:::-;-1:-1:-1;;;;;18394:15:5;;;;;;;:8;:15;;;;;;:34;;;18455:13;;;;;;;;;18332:58;;-1:-1:-1;18497:23:5;18455:13;18513:6;18497:23;:15;:23;:::i;:::-;-1:-1:-1;;;;;18524:13:5;;;;;;:8;:13;;;;;:30;;;18472:48;;-1:-1:-1;18620:12:5;:10;:12::i;:::-;18870:22;;18596:36;;-1:-1:-1;;;;;;18861:31:5;;;18870:22;;18861:31;;;;:64;;-1:-1:-1;18903:22:5;;-1:-1:-1;;;;;18896:29:5;;;18903:22;;18896:29;;18861:64;18857:225;;;18932:73;18951:5;18958:13;18973:16;18991:13;18932:18;:73::i;:::-;19010:67;19029:3;19034:11;19047:14;19063:13;19010:18;:67::i;:::-;19107:3;-1:-1:-1;;;;;19091:28:5;19100:5;-1:-1:-1;;;;;19091:28:5;;19112:6;19091:28;;;;;;;;;;;;;;;-1:-1:-1;19130:4:5;;17998:1140;-1:-1:-1;;;;;;;;;17998:1140:5:o;53915:312::-;53996:12;54038:7;;-1:-1:-1;;;;;;54038:7:5;54055:66;54021:102;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;54021:102:5;;;54011:113;;;;;;53996:128;;54128:13;54177:4;54171:11;54159:23;;54198:8;54197:9;54189:34;;;;-1:-1:-1;;;54189:34:5;;;;;;;;;53915:312;;:::o;35831:1405::-;36011:13;36033:24;;36029:1204;;36121:28;36151:33;36215:21;;;;;;;;;-1:-1:-1;;;;;36215:21:5;-1:-1:-1;;;;;36202:46:5;;:48;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36202:48:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36202:48:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36202:48:5;;;;;;;;;36286:16;;;36192:111;;-1:-1:-1;;;36192:111:5;;-1:-1:-1;;;;;36192:69:5;;;;;;:111;;36262:22;;36286:16;;;;;;;;36192:111;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36192:111:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36192:111:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36192:111:5;;;;;;;;;36120:183;;;;36317:20;36341:1;36317:25;;36316:63;;;;-1:-1:-1;36348:30:5;;;36316:63;36308:105;;;;-1:-1:-1;;;36308:105:5;;;;;;;;;36483:23;36509:76;36559:25;36509:45;:19;36533:20;36509:45;:23;:45;:::i;:76::-;36758:21;;36803:16;;;36745:116;;-1:-1:-1;;;36745:116:5;;36483:102;;-1:-1:-1;36709:29:5;;-1:-1:-1;;;;;36758:21:5;;;;36745:57;;:116;;36758:21;36803:16;;;;;;36821:22;;36483:102;;36745:116;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36745:116:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36745:116:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36745:116:5;;;;;;;;;36709:152;;36959:19;36934:21;:44;36930:245;;37102:67;37149:19;37102:42;:15;37122:21;37102:42;:19;:42;:::i;:67::-;37084:85;;36930:245;37195:33;:15;37215:12;37195:33;:19;:33;:::i;:::-;37180:48;35831:1405;-1:-1:-1;;;;;;;;35831:1405:5:o;35182:222::-;35265:15;;35241;;-1:-1:-1;;;;;35265:21:5;;;:15;;:21;35261:140;;35306:21;;35353:16;;;35293:77;;-1:-1:-1;;;35293:77:5;;-1:-1:-1;;;;;35306:21:5;;;;35293:59;;:77;;35306:21;35353:16;;;;;;35293:77;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35293:77:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;35376:15:5;:20;;-1:-1:-1;;;;;35376:20:5;;-1:-1:-1;;35376:20:5;;;;;;-1:-1:-1;;35182:222:5;:::o;51862:662::-;51977:20;;;52059:45;52097:6;52059:33;:13;52077:14;52059:33;:17;:33;:::i;:45::-;52026:78;;52294:70;52319:22;52343:20;52361:1;52343:17;:20::i;:::-;52294:24;:70::i;:::-;52279:85;;52458:62;52474:12;52488:7;52497:22;52458:15;:62::i;:::-;52443:77;;51862:662;;;;;;:::o;39227:2094::-;39473:7;39482;39495:13;:11;:13::i;:::-;39542:20;:18;:20::i;:::-;39524:14;;;;:38;;;;:118;;-1:-1:-1;39612:16:5;;;;-1:-1:-1;;;;;39612:30:5;;;39524:118;39512:161;;;;-1:-1:-1;;;39512:161:5;;;;;;;;;39682:16;;;;-1:-1:-1;;;;;39682:30:5;39678:114;;39738:16;;;;-1:-1:-1;;;;;39719:35:5;:16;;;:35;39678:114;39870:16;39889:84;39906:22;39930:13;39945:11;39958:14;39889:16;:84::i;:::-;40160:14;;;;40141;;;;39870:103;;-1:-1:-1;40141:34:5;;:14;:18;:34::i;:::-;40124:14;;;:51;40201:19;;40197:184;;40342:14;;;;:34;;40361:14;40342:18;:34::i;:::-;40325:14;;;:51;40197:184;40385:24;40480:19;;40476:61;;-1:-1:-1;40528:4:5;40476:61;40541:20;40564:13;:96;40613:22;40637:19;40596:61;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;40596:61:5;;;40586:72;;;;;;40578:81;;40564:96;;;;;;;;;;;;40541:119;;40713:21;;;;;;;;;-1:-1:-1;;;;;40713:21:5;-1:-1:-1;;;;;40700:57:5;;40764:8;40810:12;40827:6;40838:19;40862:13;40880;40898:11;40914:13;40700:231;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40700:231:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40700:231:5;;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;40700:231:5;;;;;;;;;40682:14;;;40665:266;40666:14;;;40665:266;;;40935:34;;;;-1:-1:-1;;;40935:34:5;;;;;;;;;41177:21;;41225:16;;;;41149:93;;-1:-1:-1;;;41149:93:5;;-1:-1:-1;;;;;41177:21:5;;;;41149:75;;:93;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41149:93:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41149:93:5;;;;41255:11;41267:1;41255:14;;;;;;;;;;;41271;;;;;41255;;41271;;-1:-1:-1;39227:2094:5;;-1:-1:-1;;;;;;;;;;39227:2094:5:o;31864:901::-;31943:18;31967:20;32084:30;32100:13;32084:15;:30::i;:::-;32296:22;;32055:59;;-1:-1:-1;32055:59:5;-1:-1:-1;32265:19:5;;-1:-1:-1;;;;;32296:22:5;:36;32292:148;;32368:22;;32351:89;;-1:-1:-1;;;32351:89:5;;-1:-1:-1;;;;;32368:22:5;;;;32351:64;;:89;;32424:4;;32431:8;;32351:89;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32351:89:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32351:89:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;32351:89:5;;;;;;;;;32337:103;;32292:148;-1:-1:-1;;;;;32465:18:5;;32444;32465;;;:8;:18;;;;;;:35;;32488:11;32465:35;:22;:35;:::i;:::-;32444:56;-1:-1:-1;32504:18:5;32525:26;32444:56;32540:10;32525:26;:14;:26;:::i;:::-;32504:47;;32592:56;32598:8;32608:10;32620:13;32635:12;32592:5;:56::i;:::-;;32695:66;32714:8;32724:10;32736;32748:12;32695:18;:66::i;:::-;31864:901;;;;;;;;:::o;47086:242::-;47162:7;47179:16;;47175:150;;47203:26;47235:17;:15;:17::i;:::-;-1:-1:-1;47202:50:5;-1:-1:-1;47264:56:5;47308:11;47264:39;47299:3;47264:30;47202:50;47287:6;47264:30;:22;:30;:::i;20916:383::-;21050:18;21078:21;21074:45;;-1:-1:-1;21113:1:5;21106:8;;21074:45;-1:-1:-1;21152:11:5;;21185:110;21152:11;21185:93;1927:6:3;21185:73:5;21248:8;21185:51;21192:13;21218:16;21185:51;:25;:51;:::i;:::-;:55;:73;:55;:73;:::i;:::-;:77;:93;:77;:93;:::i;:::-;:97;:110;:97;:110;:::i;1201:125:145:-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;55301:245:5:-;55392:7;55409:16;;;;;:36;;-1:-1:-1;55429:16:5;;;55409:36;55405:138;;;55498:40;55526:11;55498:23;:11;55514:6;55498:23;:15;:23;:::i;51023:508::-;51346:21;;51413:16;;;51333:100;;-1:-1:-1;;;51333:100:5;;51073:26;;;;;;-1:-1:-1;;;;;51346:21:5;;;;51333:57;;:100;;51403:4;;51346:21;51413:16;;;;;;51333:100;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51333:100:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;51333:100:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;51333:100:5;;;;;;;;;-1:-1:-1;51268:165:5;;-1:-1:-1;51268:165:5;-1:-1:-1;51268:165:5;-1:-1:-1;51455:72:5;;-1:-1:-1;51520:6:5;;-1:-1:-1;51455:60:5;51474:40;51520:6;51268:165;51474:12;:40::i;:::-;51455:14;;:60;:18;:60;:::i;:72::-;51438:89;;51023:508;;;:::o;46696:217::-;46801:12;;46761:7;;46825:21;:84;;46897:12;;46825:84;;;46849:45;46877:16;46849:23;:11;46865:6;46849:23;:15;:23;:::i;48120:465::-;48198:7;;48241:17;;48237:260;;48269:15;;48295;-1:-1:-1;;;;;48269:42:5;;;:15;;:42;48265:98;;48340:17;:15;:17::i;:::-;48319:38;-1:-1:-1;;48265:98:5;48368:15;48386:40;48411:14;48386:20;:18;:20::i;:40::-;48368:58;;48450:7;48435:12;:22;48431:62;;;48480:7;48465:22;;48431:62;48237:260;;48508:73;48533:12;48547:33;48565:14;48547:17;:33::i;780:87:137:-;853:10;780:87;:::o;33643:1275:5:-;33701:22;33737:15;33729:30;;;;-1:-1:-1;;;33729:30:5;;;;;;;;;33781:21;33791:10;33781:9;:21::i;:::-;33768:10;:34;33764:129;;;-1:-1:-1;;33817:10:5;:25;33809:40;;;;-1:-1:-1;;;33809:40:5;;;;;;;;;33867:21;33877:10;33867:9;:21::i;:::-;33854:34;;33764:129;33897:17;:15;:17::i;:::-;33919:20;33942:33;33954:20;33972:1;33954:17;:20::i;33942:33::-;33919:56;-1:-1:-1;33980:22:5;34005:40;34038:6;34005:28;:10;33919:56;34005:28;:14;:28;:::i;:40::-;33980:65;;34049:37;34089:20;:18;:20::i;:::-;34049:60;;34131:14;34114:31;;34175:29;34157:14;:47;;34149:62;;;;-1:-1:-1;;;34149:62:5;;;;;;;;;34393:22;;34362:19;;-1:-1:-1;;;;;34393:22:5;:36;34389:150;;34465:22;;34448:91;;-1:-1:-1;;;34448:91:5;;-1:-1:-1;;;;;34465:22:5;;;;34448:64;;:91;;34521:4;;34528:10;;34448:91;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34448:91:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34448:91:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;34448:91:5;;;;;;;;;34434:105;;34389:150;34573:10;34543:18;34564:20;;;:8;:20;;;;;;:37;;34589:11;34564:37;:24;:37;:::i;:::-;34543:58;-1:-1:-1;34605:18:5;34626:26;34543:58;34641:10;34626:26;:14;:26;:::i;:::-;34605:47;;34657:59;34663:10;34675;34687:14;34703:12;34657:5;:59::i;:::-;;34846:68;34865:10;34877;34889;34901:12;34846:18;:68::i;:::-;33643:1275;;;;;;;;;:::o;44412:223::-;44553:67;;44526:105;;44546:5;;-1:-1:-1;;;44576:31:5;44553:67;;44609:2;;44613:6;;44553:67;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;44553:67:5;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;44553:67:5;;;179:29:-1;;;;160:49;;;44622:8:5;44526:19;:105::i;:::-;44412:223;;;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;49432:1397:5:-;49535:16;49557;49576:70;49593:39;49616:15;49593:18;:16;:18::i;:39::-;49634:11;49576:16;:70::i;:::-;49720:8;;49761:14;;49805:11;;49844:9;;49884:12;;49557:89;;-1:-1:-1;49651:19:5;;;;49720:8;49761:14;49805:11;49844:9;49905:26;;;49901:143;;;50024:15;50013:26;;49901:143;50063:13;50052:8;:24;50048:778;;;50221:25;;;;;1875:6:3;50155:37:5;;;50255:23;;;50251:52;;;50291:12;50280:23;;50251:52;50323:82;1875:6:3;50323:55:5;50364:13;50323:36;:18;50346:12;50323:36;:22;:36;:::i;:82::-;50309:96;;50422:92;50502:11;50422:75;50484:12;50422:57;50435:43;50448:16;50466:11;50435:12;:43::i;:::-;50422:8;;:57;:12;:57;:::i;:92::-;50411:103;;50048:778;;;;50541:77;50605:12;50541:59;1875:6:3;50541:32:5;:8;50554:18;50541:32;:12;:32;:::i;:77::-;50530:88;-1:-1:-1;50638:12:5;;-1:-1:-1;50638:12:5;;50669:36;:18;50638:12;50669:36;:22;:36;:::i;:::-;50655:50;;50726:11;50715:8;:22;50711:110;;;50750:11;50739:22;;50711:110;;;50786:11;50775:8;:22;50771:50;;;50810:11;50799:22;;50771:50;49432:1397;;;;;;;;;;;;:::o;3411:315:145:-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1614:175::-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;19597:545:5:-;19797:43;;19772:12;;19797:43;;19814:5;;2569:66;;19797:43;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19797:43:5;;;19787:54;;;;;;19772:69;;19846:21;19875:11;19890:1;19875:16;19871:173;;;19914:1;19898:17;;19871:173;;;19930:16;;19926:118;;-1:-1:-1;;;;;20014:24:5;;;;;;:17;:24;;;;;;19970:69;;19980:4;;19986:11;;19999:13;;19970:9;:69::i;:::-;19953:86;;19926:118;20062:28;;-1:-1:-1;;;;;20098:24:5;;;;;;;:17;:24;;;;;:40;;;;-1:-1:-1;;19597:545:5:o;54658:379::-;54790:28;;54854:43;54888:8;54854:29;:12;54871:11;54854:29;:16;:29;:::i;:43::-;54824:73;-1:-1:-1;54901:15:5;54919:40;54927:6;54824:73;54919:40;:19;:40;:::i;:::-;54901:58;-1:-1:-1;54986:47:5;54901:58;54986:34;:22;55013:6;54986:34;:26;:34;:::i;:47::-;54963:70;54658:379;-1:-1:-1;;;;;;54658:379:5:o;42095:1686::-;42316:17;;42365:16;;42404;;;;;42447:14;;;42489;;;;42537;;;;42272:16;;-1:-1:-1;;;;;42316:17:5;;;;;42365:16;;;;;42404;42447:14;42489;42537;42564:43;;;;;42556:58;;;;-1:-1:-1;;;42556:58:5;;;;;;;;;42630:9;;-1:-1:-1;42648:21:5;;42644:367;;42706:64;42720:17;42739:8;42749:16;42706:64;;;;;;;;;;;;:13;:64::i;:::-;42794:16;42779:12;:31;42775:141;;;42851:21;;42818:92;;;;;;;;;42851:21;42818:92;;;;42832:17;;-1:-1:-1;;;;;42851:21:5;;;;42874:31;;;;42818:13;:92::i;:::-;42644:367;;;42964:21;;42931:75;;;;;;;;;;;;-1:-1:-1;;;42931:75:5;;;;;;42945:17;;-1:-1:-1;;;;;42964:21:5;;;;42987:12;;42931:13;:75::i;:::-;43195:24;;43191:457;;43256:11;-1:-1:-1;;;;;43230:37:5;:22;-1:-1:-1;;;;;43230:37:5;;:54;;;;-1:-1:-1;43271:13:5;;;43230:54;:89;;;;;43300:19;43288:8;:31;;43230:89;43226:418;;;43334:11;-1:-1:-1;;;;;43327:27:5;;43361:19;43327:56;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43327:56:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;43427:21:5;;43389:89;;;;;;;;;;;;-1:-1:-1;;;43389:89:5;;;;;;-1:-1:-1;43403:22:5;;-1:-1:-1;;;;;;43427:21:5;;;;-1:-1:-1;43450:19:5;;43389:13;:89::i;:::-;43496:19;43484:31;;;;43226:418;;;43587:21;;43533:105;;;;;;;;;;;;-1:-1:-1;;;43533:105:5;;;;;;43551:22;;43575:10;;-1:-1:-1;;;;;43587:21:5;;43610:19;;43533:17;:105::i;:::-;43656:18;;43652:126;;43730:21;;43681:92;;;;;;;;;;;;-1:-1:-1;;;43681:92:5;;;;;;43699:17;;43718:10;;-1:-1:-1;;;;;43730:21:5;;43753:13;;43681:17;:92::i;:::-;42095:1686;;;;;;;;;;;;:::o;32980:473::-;33046:18;;33100;33092:33;;;;-1:-1:-1;;;33092:33:5;;;;;;;;;33130:17;:15;:17::i;:::-;33167:33;33179:20;33197:1;33179:17;:20::i;33167:33::-;33152:48;-1:-1:-1;33217:43:5;33152:48;33217:25;:13;33235:6;33217:25;:17;:25;:::i;:43::-;33204:56;-1:-1:-1;33269:9:5;33265:185;;33290:83;33308:16;;;;;;;;;-1:-1:-1;;;;;33308:16:5;33326:10;33346:4;33353:13;33290:83;;;;;;;;;;;;;-1:-1:-1;;;33290:83:5;;;:17;:83::i;:::-;33265:185;;;33396:17;;;;;;;;;-1:-1:-1;;;;;33396:17:5;-1:-1:-1;;;;;33389:33:5;;33429:13;33389:56;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33389:56:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33389:56:5;;;;;33265:185;32980:473;;;:::o;2167:422:0:-;2284:7;-1:-1:-1;;;;;2305:17:0;;2297:32;;;;-1:-1:-1;;;2297:32:0;;;;;;;;;-1:-1:-1;;;;;2353:13:0;;2334:16;2353:13;;;:8;:13;;;;;;:31;;2371:12;2353:31;:17;:31;:::i;:::-;-1:-1:-1;;;;;2388:13:0;;;;;;:8;:13;;;;;:24;;;2432:12;;2334:50;;-1:-1:-1;2432:30:0;;2449:12;2432:30;:16;:30;:::i;:::-;2417:12;:45;2472;;-1:-1:-1;;;;;2472:45:0;;;;;;;2482:12;;2496;;2510:6;;2472:45;;;;;;;;;;2547:3;-1:-1:-1;;;;;2526:39:0;2543:1;-1:-1:-1;;;;;2526:39:0;;2552:12;2526:39;;;;;;;;;;;;;;;2577:8;2167:422;-1:-1:-1;;;;;2167:422:0:o;1774:192:146:-;1830:6;1853:5;;;1871:6;;;;;;:16;;;1886:1;1881;:6;;1871:16;1870:38;;;;1897:1;1893;:5;:14;;;;;1906:1;1902;:5;1893:14;1862:87;;;;-1:-1:-1;;;1862:87:146;;;;;;;;422:488;478:6;694;690:30;;-1:-1:-1;714:1:146;707:8;;690:30;734:1;-1:-1:-1;;734:7:146;:27;;;;;-1:-1:-1;;;745:1:146;:16;734:27;732:30;724:82;;;;-1:-1:-1;;;724:82:146;;;;;;;;;822:5;;;826:1;822;:5;:1;839:5;;;;;:10;831:62;;;;-1:-1:-1;;;831:62:146;;;;;;;;1331:237;1387:6;1407;1399:51;;;;-1:-1:-1;;;1399:51:146;;;;;;;;;1464:1;-1:-1:-1;;1464:7:146;:27;;;;;-1:-1:-1;;;1475:1:146;:16;1464:27;1462:30;1454:76;;;;-1:-1:-1;;;1454:76:146;;;;;;;;;1535:8;1550:1;1546;:5;;;;;;;1331:237;-1:-1:-1;;;;1331:237:146:o;2166:189::-;2222:6;2245:5;;;2263:6;;;;;;:16;;;2278:1;2273;:6;;2263:16;2262:38;;;;2289:1;2285;:5;:14;;;;;2298:1;2294;:5;2285:14;2254:84;;;;-1:-1:-1;;;2254:84:146;;;;;;;;3070:641:0;3256:38;;;;;;;;;;;-1:-1:-1;;;3256:38:0;;;;;;;;-1:-1:-1;;;;;3256:14:0;;3188:7;3256:14;;;:8;:14;;;;;;;3188:7;;3256:38;;:14;3275:12;;3256:38;:18;:38;:::i;:::-;3237:57;;3381:2;3369:8;:14;3365:140;;3457:26;:12;3474:8;3457:26;:16;:26;:::i;:::-;3442:41;;3499:1;3488:12;;3365:140;-1:-1:-1;;;;;3508:14:0;;;;;;:8;:14;;;;;:25;;;3553:12;;:30;;3570:12;3553:30;:16;:30;:::i;:::-;3538:12;:45;3593:46;;-1:-1:-1;;;;;3593:46:0;;;;;;;3604:12;;3618;;3632:6;;3593:46;;;;;;;;;;3671:1;-1:-1:-1;;;;;3648:40:0;3657:4;-1:-1:-1;;;;;3648:40:0;;3675:12;3648:40;;;;;;;45987:292:5;46097:12;46111:23;46138:5;-1:-1:-1;;;;;46138:10:5;46149:4;46138:16;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;46096:58:5;;;;46166:7;46175:8;46158:26;;;;;-1:-1:-1;;;46158:26:5;;;;;;;;;;-1:-1:-1;46193:17:5;;:22;46189:87;;46241:10;46230:30;;;;;;;;;;;;;;46262:8;46222:49;;;;;-1:-1:-1;;;46222:49:5;;;;;;;;;45306:253;45467:77;;45440:115;;45460:5;;-1:-1:-1;;;45490:35:5;45467:77;;45527:4;;45533:2;;45537:6;;45467:77;;;;2146:54774;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;2146:54774:5;;;-1:-1:-1;;2146:54774:5:o;:::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;2146:54774:5;;;-1:-1:-1;;2146:54774:5:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;301:352;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;-1:-1;469:20;;-1:-1;;;;;498:30;;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;586:2;391:262;;;;;;1051:722;;1179:3;1172:4;1164:6;1160:17;1156:27;1146:2;;1197:1;1194;1187:12;1146:2;1227:6;1221:13;1249:80;1264:64;1321:6;1264:64;;;1249:80;;;1240:89;;1346:5;1371:6;1364:5;1357:21;1401:4;1393:6;1389:17;1379:27;;1423:4;1418:3;1414:14;1407:21;;1476:6;1523:3;1515:4;1507:6;1503:17;1498:3;1494:27;1491:36;1488:2;;;1540:1;1537;1530:12;1488:2;1565:1;1550:217;1575:6;1572:1;1569:13;1550:217;;;1633:3;1655:48;1699:3;1687:10;1655:48;;;1643:61;;-1:-1;1727:4;1718:14;;;;1746;;;;;1597:1;1590:9;1550:217;;1826:783;;1967:3;1960:4;1952:6;1948:17;1944:27;1934:2;;1985:1;1982;1975:12;1934:2;2022:6;2009:20;2044:104;2059:88;2140:6;2059:88;;2044:104;2035:113;;2165:5;2190:6;2183:5;2176:21;2220:4;2212:6;2208:17;2198:27;;2242:4;2237:3;2233:14;2226:21;;2295:6;2344:3;2334:6;2326;2322:19;2317:3;2313:29;2310:38;2307:2;;;2361:1;2358;2351:12;2307:2;2386:1;2371:232;2396:6;2393:1;2390:13;2371:232;;;2454:3;2476:61;2533:3;2521:10;2476:61;;;2464:74;;-1:-1;2561:4;2552:14;;;;2589:6;2580:16;;;;;2418:1;2411:9;2371:232;;2617:124;2681:20;;2706:30;2681:20;2706:30;;2748:128;2823:13;;2841:30;2823:13;2841:30;;2883:130;2950:20;;2975:33;2950:20;2975:33;;3020:134;3098:13;;3116:33;3098:13;3116:33;;3175:336;;;3289:3;3282:4;3274:6;3270:17;3266:27;3256:2;;3307:1;3304;3297:12;3256:2;-1:-1;3327:20;;-1:-1;;;;;3356:30;;3353:2;;;3399:1;3396;3389:12;3353:2;3433:4;3425:6;3421:17;3409:29;;3484:3;3476:4;3468:6;3464:17;3454:8;3450:32;3447:41;3444:2;;;3501:1;3498;3491:12;3520:440;;3621:3;3614:4;3606:6;3602:17;3598:27;3588:2;;3639:1;3636;3629:12;3588:2;3676:6;3663:20;3698:64;3713:48;3754:6;3713:48;;3698:64;3689:73;;3782:6;3775:5;3768:21;3818:4;3810:6;3806:17;3851:4;3844:5;3840:16;3886:3;3877:6;3872:3;3868:16;3865:25;3862:2;;;3903:1;3900;3893:12;3862:2;3913:41;3947:6;3942:3;3937;3913:41;;;3581:379;;;;;;;;4460:1384;;4573:6;4561:9;4556:3;4552:19;4548:32;4545:2;;;4593:1;4590;4583:12;4545:2;4611:22;4626:6;4611:22;;;4602:31;-1:-1;4681:1;4713:49;4758:3;4738:9;4713:49;;;4688:75;;-1:-1;4826:2;4859:46;4901:3;4877:22;;;4859:46;;;4852:4;4845:5;4841:16;4834:72;4784:133;4968:2;5001:49;5046:3;5037:6;5026:9;5022:22;5001:49;;;4994:4;4987:5;4983:16;4976:75;4927:135;5117:2;5150:49;5195:3;5186:6;5175:9;5171:22;5150:49;;;5143:4;5136:5;5132:16;5125:75;5072:139;5272:3;5306:49;5351:3;5342:6;5331:9;5327:22;5306:49;;;5299:4;5292:5;5288:16;5281:75;5221:146;5429:3;5463:49;5508:3;5499:6;5488:9;5484:22;5463:49;;;5456:4;5449:5;5445:16;5438:75;5377:147;5587:3;5621:49;5666:3;5657:6;5646:9;5642:22;5621:49;;;5614:4;5607:5;5603:16;5596:75;5534:148;5739:3;5773:49;5818:3;5809:6;5798:9;5794:22;5773:49;;;5766:4;5759:5;5755:16;5748:75;5692:142;4539:1305;;;;;6129:241;;6233:2;6221:9;6212:7;6208:23;6204:32;6201:2;;;6249:1;6246;6239:12;6201:2;6284:1;6301:53;6346:7;6326:9;6301:53;;6377:263;;6492:2;6480:9;6471:7;6467:23;6463:32;6460:2;;;6508:1;6505;6498:12;6460:2;6543:1;6560:64;6616:7;6596:9;6560:64;;6647:366;;;6768:2;6756:9;6747:7;6743:23;6739:32;6736:2;;;6784:1;6781;6774:12;6736:2;6819:1;6836:53;6881:7;6861:9;6836:53;;;6826:63;;6798:97;6926:2;6944:53;6989:7;6980:6;6969:9;6965:22;6944:53;;;6934:63;;6905:98;6730:283;;;;;;7020:491;;;;7158:2;7146:9;7137:7;7133:23;7129:32;7126:2;;;7174:1;7171;7164:12;7126:2;7209:1;7226:53;7271:7;7251:9;7226:53;;;7216:63;;7188:97;7316:2;7334:53;7379:7;7370:6;7359:9;7355:22;7334:53;;;7324:63;;7295:98;7424:2;7442:53;7487:7;7478:6;7467:9;7463:22;7442:53;;;7432:63;;7403:98;7120:391;;;;;;7518:366;;;7639:2;7627:9;7618:7;7614:23;7610:32;7607:2;;;7655:1;7652;7645:12;7607:2;7690:1;7707:53;7752:7;7732:9;7707:53;;;7697:63;;7669:97;7797:2;7815:53;7860:7;7851:6;7840:9;7836:22;7815:53;;7891:672;;;;;8079:2;8067:9;8058:7;8054:23;8050:32;8047:2;;;8095:1;8092;8085:12;8047:2;8130:31;;-1:-1;;;;;8170:30;;8167:2;;;8213:1;8210;8203:12;8167:2;8241:80;8313:7;8304:6;8293:9;8289:22;8241:80;;;8231:90;;;;8109:218;8386:2;8375:9;8371:18;8358:32;-1:-1;;;;;8402:6;8399:30;8396:2;;;8442:1;8439;8432:12;8396:2;8470:77;8539:7;8530:6;8519:9;8515:22;8470:77;;;8041:522;;;;-1:-1;8460:87;-1:-1;;;;8041:522;8570:392;;8710:2;8698:9;8689:7;8685:23;8681:32;8678:2;;;8726:1;8723;8716:12;8678:2;8761:24;;-1:-1;;;;;8794:30;;8791:2;;;8837:1;8834;8827:12;8791:2;8857:89;8938:7;8929:6;8918:9;8914:22;8857:89;;8969:544;;;9136:2;9124:9;9115:7;9111:23;9107:32;9104:2;;;9152:1;9149;9142:12;9104:2;9187:31;;-1:-1;;;;;9227:30;;9224:2;;;9270:1;9267;9260:12;9224:2;9290:102;9384:7;9375:6;9364:9;9360:22;9290:102;;;9280:112;;9166:232;9429:2;9447:50;9489:7;9480:6;9469:9;9465:22;9447:50;;9520:235;;9621:2;9609:9;9600:7;9596:23;9592:32;9589:2;;;9637:1;9634;9627:12;9589:2;9672:1;9689:50;9731:7;9711:9;9689:50;;9762:257;;9874:2;9862:9;9853:7;9849:23;9845:32;9842:2;;;9890:1;9887;9880:12;9842:2;9925:1;9942:61;9995:7;9975:9;9942:61;;10026:1225;;;;;;;;;10258:3;10246:9;10237:7;10233:23;10229:33;10226:2;;;10275:1;10272;10265:12;10226:2;10310:1;10327:53;10372:7;10352:9;10327:53;;;10317:63;;10289:97;10417:2;10435:53;10480:7;10471:6;10460:9;10456:22;10435:53;;;10425:63;;10396:98;10525:2;10543:53;10588:7;10579:6;10568:9;10564:22;10543:53;;;10533:63;;10504:98;10633:2;10651:53;10696:7;10687:6;10676:9;10672:22;10651:53;;;10641:63;;10612:98;10741:3;10760:53;10805:7;10796:6;10785:9;10781:22;10760:53;;;10750:63;;10720:99;10850:3;10869:53;10914:7;10905:6;10894:9;10890:22;10869:53;;;10859:63;;10829:99;10959:3;10978:53;11023:7;11014:6;11003:9;10999:22;10978:53;;;10968:63;;10938:99;11096:3;11085:9;11081:19;11068:33;-1:-1;;;;;11113:6;11110:30;11107:2;;;11153:1;11150;11143:12;11107:2;11173:62;11227:7;11218:6;11207:9;11203:22;11173:62;;;11163:72;;11047:194;10220:1031;;;;;;;;;;;;11258:1371;;;;;;;;;;;11517:3;11505:9;11496:7;11492:23;11488:33;11485:2;;;11534:1;11531;11524:12;11485:2;11569:1;11586:53;11631:7;11611:9;11586:53;;;11576:63;;11548:97;11676:2;11694:53;11739:7;11730:6;11719:9;11715:22;11694:53;;;11684:63;;11655:98;11784:2;11802:53;11847:7;11838:6;11827:9;11823:22;11802:53;;;11792:63;;11763:98;11892:2;11910:53;11955:7;11946:6;11935:9;11931:22;11910:53;;;11900:63;;11871:98;12000:3;12019:53;12064:7;12055:6;12044:9;12040:22;12019:53;;;12009:63;;11979:99;12109:3;12128:53;12173:7;12164:6;12153:9;12149:22;12128:53;;;12118:63;;12088:99;12218:3;12237:53;12282:7;12273:6;12262:9;12258:22;12237:53;;;12227:63;;12197:99;12327:3;12346:53;12391:7;12382:6;12371:9;12367:22;12346:53;;;12336:63;;12306:99;12464:3;12453:9;12449:19;12436:33;-1:-1;;;;;12481:6;12478:30;12475:2;;;12521:1;12518;12511:12;12475:2;12549:64;12605:7;12596:6;12585:9;12581:22;12549:64;;;12539:74;;;;12415:204;11479:1150;;;;;;;;;;;;;;12636:1225;;;;;;;;;12868:3;12856:9;12847:7;12843:23;12839:33;12836:2;;;12885:1;12882;12875:12;12836:2;12920:1;12937:53;12982:7;12962:9;12937:53;;;12927:63;;12899:97;13027:2;13045:53;13090:7;13081:6;13070:9;13066:22;13045:53;;;13035:63;;13006:98;13135:2;13153:53;13198:7;13189:6;13178:9;13174:22;13153:53;;;13143:63;;13114:98;13243:2;13261:53;13306:7;13297:6;13286:9;13282:22;13261:53;;;13251:63;;13222:98;13351:3;13370:53;13415:7;13406:6;13395:9;13391:22;13370:53;;;13360:63;;13330:99;13460:3;13479:53;13524:7;13515:6;13504:9;13500:22;13479:53;;;13469:63;;13439:99;13569:3;13588:53;13633:7;13624:6;13613:9;13609:22;13588:53;;13868:347;;13982:2;13970:9;13961:7;13957:23;13953:32;13950:2;;;13998:1;13995;13988:12;13950:2;14033:31;;-1:-1;;;;;14073:30;;14070:2;;;14116:1;14113;14106:12;14070:2;14136:63;14191:7;14182:6;14171:9;14167:22;14136:63;;14222:466;;;14350:2;14338:9;14329:7;14325:23;14321:32;14318:2;;;14366:1;14363;14356:12;14318:2;14401:31;;-1:-1;;;;;14441:30;;14438:2;;;14484:1;14481;14474:12;14438:2;14504:63;14559:7;14550:6;14539:9;14535:22;14504:63;;14695:241;;14799:2;14787:9;14778:7;14774:23;14770:32;14767:2;;;14815:1;14812;14805:12;14767:2;14850:1;14867:53;14912:7;14892:9;14867:53;;14943:263;;15058:2;15046:9;15037:7;15033:23;15029:32;15026:2;;;15074:1;15071;15064:12;15026:2;15109:1;15126:64;15182:7;15162:9;15126:64;;15213:366;;;15334:2;15322:9;15313:7;15309:23;15305:32;15302:2;;;15350:1;15347;15340:12;15302:2;15385:1;15402:53;15447:7;15427:9;15402:53;;15586:399;;;15718:2;15706:9;15697:7;15693:23;15689:32;15686:2;;;15734:1;15731;15724:12;15686:2;15769:1;15786:64;15842:7;15822:9;15786:64;;;15776:74;;15748:108;15887:2;15905:64;15961:7;15952:6;15941:9;15937:22;15905:64;;15992:491;;;;16130:2;16118:9;16109:7;16105:23;16101:32;16098:2;;;16146:1;16143;16136:12;16098:2;16181:1;16198:53;16243:7;16223:9;16198:53;;;16188:63;;16160:97;16288:2;16306:53;16351:7;16342:6;16331:9;16327:22;16306:53;;;16296:63;;16267:98;16396:2;16414:53;16459:7;16450:6;16439:9;16435:22;16414:53;;16490:617;;;;;16645:3;16633:9;16624:7;16620:23;16616:33;16613:2;;;16662:1;16659;16652:12;16613:2;16697:1;16714:53;16759:7;16739:9;16714:53;;;16704:63;;16676:97;16804:2;16822:53;16867:7;16858:6;16847:9;16843:22;16822:53;;;16812:63;;16783:98;16912:2;16930:53;16975:7;16966:6;16955:9;16951:22;16930:53;;;16920:63;;16891:98;17020:2;17038:53;17083:7;17074:6;17063:9;17059:22;17038:53;;;17028:63;;16999:98;16607:500;;;;;;;;17114:743;;;;;;17286:3;17274:9;17265:7;17261:23;17257:33;17254:2;;;17303:1;17300;17293:12;17254:2;17338:1;17355:53;17400:7;17380:9;17355:53;;;17345:63;;17317:97;17445:2;17463:53;17508:7;17499:6;17488:9;17484:22;17463:53;;;17453:63;;17424:98;17553:2;17571:53;17616:7;17607:6;17596:9;17592:22;17571:53;;;17561:63;;17532:98;17661:2;17679:53;17724:7;17715:6;17704:9;17700:22;17679:53;;;17669:63;;17640:98;17769:3;17788:53;17833:7;17824:6;17813:9;17809:22;17788:53;;;17778:63;;17748:99;17248:609;;;;;;;;;17864:946;;;;;;;18064:3;18052:9;18043:7;18039:23;18035:33;18032:2;;;18081:1;18078;18071:12;18032:2;18116:1;18133:64;18189:7;18169:9;18133:64;;;18123:74;;18095:108;18234:2;18252:64;18308:7;18299:6;18288:9;18284:22;18252:64;;;18242:74;;18213:109;18353:2;18371:64;18427:7;18418:6;18407:9;18403:22;18371:64;;;18361:74;;18332:109;18472:2;18490:64;18546:7;18537:6;18526:9;18522:22;18490:64;;;18480:74;;18451:109;18591:3;18610:64;18666:7;18657:6;18646:9;18642:22;18610:64;;;18600:74;;18570:110;18711:3;18730:64;18786:7;18777:6;18766:9;18762:22;18730:64;;;18720:74;;18690:110;18026:784;;;;;;;;;18817:995;;;;;;;;19023:3;19011:9;19002:7;18998:23;18994:33;18991:2;;;19040:1;19037;19030:12;18991:2;19075:1;19092:53;19137:7;19117:9;19092:53;;;19082:63;;19054:97;19182:2;19200:53;19245:7;19236:6;19225:9;19221:22;19200:53;;;19190:63;;19161:98;19290:2;19308:53;19353:7;19344:6;19333:9;19329:22;19308:53;;;19298:63;;19269:98;19398:2;19416:53;19461:7;19452:6;19441:9;19437:22;19416:53;;;19406:63;;19377:98;19506:3;19525:53;19570:7;19561:6;19550:9;19546:22;19525:53;;;19515:63;;19485:99;19615:3;19634:53;19679:7;19670:6;19659:9;19655:22;19634:53;;;19624:63;;19594:99;19724:3;19743:53;19788:7;19779:6;19768:9;19764:22;19743:53;;;19733:63;;19703:99;18985:827;;;;;;;;;;;19820:173;;19907:46;19949:3;19941:6;19907:46;;;-1:-1;;19982:4;19973:14;;19900:93;20002:173;;20089:46;20131:3;20123:6;20089:46;;20184:275;;20319:98;20413:3;20405:6;20319:98;;;-1:-1;;20446:6;20437:16;;20312:147;20649:142;20740:45;20779:5;20740:45;;;20735:3;20728:58;20722:69;;;20798:103;20871:24;20889:5;20871:24;;21028:152;21129:45;21149:24;21167:5;21149:24;;;21129:45;;21220:660;21353:52;21399:5;21353:52;;;21418:84;21495:6;21490:3;21418:84;;;21411:91;;21523:54;21571:5;21523:54;;;21597:7;21625:1;21610:258;21635:6;21632:1;21629:13;21610:258;;;21702:6;21696:13;21723:63;21782:3;21767:13;21723:63;;;21716:70;;21803:58;21854:6;21803:58;;;21793:68;-1:-1;;21657:1;21650:9;21610:258;;21919:690;;22064:54;22112:5;22064:54;;;22131:86;22210:6;22205:3;22131:86;;;22124:93;;22238:56;22288:5;22238:56;;;22314:7;22342:1;22327:260;22352:6;22349:1;22346:13;22327:260;;;22419:6;22413:13;22440:63;22499:3;22484:13;22440:63;;;22433:70;;22520:60;22573:6;22520:60;;;22510:70;-1:-1;;22374:1;22367:9;22327:260;;;-1:-1;22600:3;;22043:566;-1:-1;;;;;22043:566;22702:882;;22895:78;22967:5;22895:78;;;22986:110;23089:6;23084:3;22986:110;;;22979:117;;23117:80;23191:5;23117:80;;;23217:7;23245:1;23230:332;23255:6;23252:1;23249:13;23230:332;;;23322:6;23316:13;23343:111;23450:3;23435:13;23343:111;;;23336:118;;23471:84;23548:6;23471:84;;;23461:94;-1:-1;;23277:1;23270:9;23230:332;;23625:660;23758:52;23804:5;23758:52;;;23823:84;23900:6;23895:3;23823:84;;;23816:91;;23928:54;23976:5;23928:54;;;24002:7;24030:1;24015:258;24040:6;24037:1;24034:13;24015:258;;;24107:6;24101:13;24128:63;24187:3;24172:13;24128:63;;;24121:70;;24208:58;24259:6;24208:58;;;24198:68;-1:-1;;24062:1;24055:9;24015:258;;24293:94;24360:21;24375:5;24360:21;;24505:140;24600:39;24617:21;24632:5;24617:21;;;24600:39;;24652:103;24725:24;24743:5;24725:24;;24882:152;24983:45;25003:24;25021:5;25003:24;;;24983:45;;25041:148;25140:43;25159:23;25176:5;25159:23;;25196:343;;25306:38;25338:5;25306:38;;;25356:70;25419:6;25414:3;25356:70;;;25349:77;;25431:52;25476:6;25471:3;25464:4;25457:5;25453:16;25431:52;;;25504:29;25526:6;25504:29;;;25495:39;;;;25286:253;-1:-1;;;25286:253;25546:356;;25674:38;25706:5;25674:38;;;25724:88;25805:6;25800:3;25724:88;;;25717:95;;25817:52;25862:6;25857:3;25850:4;25843:5;25839:16;25817:52;;;25881:16;;;;;25654:248;-1:-1;;25654:248;27094:312;;27254:67;27318:2;27313:3;27254:67;;;-1:-1;;;27334:35;;27397:2;27388:12;;27240:166;-1:-1;;27240:166;27415:301;;27575:66;27639:1;27634:3;27575:66;;;-1:-1;;;27654:25;;27707:2;27698:12;;27561:155;-1:-1;;27561:155;27725:301;;27885:66;27949:1;27944:3;27885:66;;;-1:-1;;;27964:25;;28017:2;28008:12;;27871:155;-1:-1;;27871:155;28035:375;;28195:67;28259:2;28254:3;28195:67;;;28295:34;28275:55;;-1:-1;;;28359:2;28350:12;;28343:30;28401:2;28392:12;;28181:229;-1:-1;;28181:229;28419:327;;28579:67;28643:2;28638:3;28579:67;;;28679:29;28659:50;;28737:2;28728:12;;28565:181;-1:-1;;28565:181;28755:370;;28915:67;28979:2;28974:3;28915:67;;;29015:34;28995:55;;-1:-1;;;29079:2;29070:12;;29063:25;29116:2;29107:12;;28901:224;-1:-1;;28901:224;29134:314;;29294:67;29358:2;29353:3;29294:67;;;-1:-1;;;29374:37;;29439:2;29430:12;;29280:168;-1:-1;;29280:168;29457:300;;29617:66;29681:1;29676:3;29617:66;;;-1:-1;;;29696:24;;29748:2;29739:12;;29603:154;-1:-1;;29603:154;29766:301;;29926:66;29990:1;29985:3;29926:66;;;-1:-1;;;30005:25;;30058:2;30049:12;;29912:155;-1:-1;;29912:155;30076:301;;30236:66;30300:1;30295:3;30236:66;;;-1:-1;;;30315:25;;30368:2;30359:12;;30222:155;-1:-1;;30222:155;30386:301;;30546:66;30610:1;30605:3;30546:66;;;-1:-1;;;30625:25;;30678:2;30669:12;;30532:155;-1:-1;;30532:155;30696:370;;30856:67;30920:2;30915:3;30856:67;;;30956:34;30936:55;;-1:-1;;;31020:2;31011:12;;31004:25;31057:2;31048:12;;30842:224;-1:-1;;30842:224;31075:321;;31235:67;31299:2;31294:3;31235:67;;;-1:-1;;;31315:44;;31387:2;31378:12;;31221:175;-1:-1;;31221:175;31405:301;;31565:66;31629:1;31624:3;31565:66;;;-1:-1;;;31644:25;;31697:2;31688:12;;31551:155;-1:-1;;31551:155;31715:301;;31875:66;31939:1;31934:3;31875:66;;;-1:-1;;;31954:25;;32007:2;31998:12;;31861:155;-1:-1;;31861:155;32025:315;;32185:67;32249:2;32244:3;32185:67;;;-1:-1;;;32265:38;;32331:2;32322:12;;32171:169;-1:-1;;32171:169;32349:301;;32509:66;32573:1;32568:3;32509:66;;;-1:-1;;;32588:25;;32641:2;32632:12;;32495:155;-1:-1;;32495:155;32659:301;;32819:66;32883:1;32878:3;32819:66;;;-1:-1;;;32898:25;;32951:2;32942:12;;32805:155;-1:-1;;32805:155;32969:370;;33129:67;33193:2;33188:3;33129:67;;;33229:34;33209:55;;-1:-1;;;33293:2;33284:12;;33277:25;33330:2;33321:12;;33115:224;-1:-1;;33115:224;33348:312;;33508:67;33572:2;33567:3;33508:67;;;-1:-1;;;33588:35;;33651:2;33642:12;;33494:166;-1:-1;;33494:166;33669:301;;33829:66;33893:1;33888:3;33829:66;;;-1:-1;;;33908:25;;33961:2;33952:12;;33815:155;-1:-1;;33815:155;33979:301;;34139:66;34203:1;34198:3;34139:66;;;-1:-1;;;34218:25;;34271:2;34262:12;;34125:155;-1:-1;;34125:155;34289:376;;34449:67;34513:2;34508:3;34449:67;;;34549:34;34529:55;;-1:-1;;;34613:2;34604:12;;34597:31;34656:2;34647:12;;34435:230;-1:-1;;34435:230;34674:329;;34834:67;34898:2;34893:3;34834:67;;;34934:31;34914:52;;34994:2;34985:12;;34820:183;-1:-1;;34820:183;35012:310;;35172:67;35236:2;35231:3;35172:67;;;-1:-1;;;35252:33;;35313:2;35304:12;;35158:164;-1:-1;;35158:164;35331:312;;35491:67;35555:2;35550:3;35491:67;;;-1:-1;;;35571:35;;35634:2;35625:12;;35477:166;-1:-1;;35477:166;35652:373;;35812:67;35876:2;35871:3;35812:67;;;35912:34;35892:55;;-1:-1;;;35976:2;35967:12;;35960:28;36016:2;36007:12;;35798:227;-1:-1;;35798:227;36034:324;;36194:67;36258:2;36253:3;36194:67;;;36294:26;36274:47;;36349:2;36340:12;;36180:178;-1:-1;;36180:178;36367:300;;36527:66;36591:1;36586:3;36527:66;;;-1:-1;;;36606:24;;36658:2;36649:12;;36513:154;-1:-1;;36513:154;36676:332;;36836:67;36900:2;36895:3;36836:67;;;36936:34;36916:55;;36999:2;36990:12;;36822:186;-1:-1;;36822:186;37095:1437;37296:23;;37230:6;37221:16;;;37325:63;37225:3;37296:23;37325:63;;;37252:142;37469:4;37462:5;37458:16;37452:23;37481:57;37532:4;37527:3;37523:14;37509:12;37481:57;;;37404:140;37618:4;37611:5;37607:16;37601:23;37630:63;37687:4;37682:3;37678:14;37664:12;37630:63;;;37554:145;37777:4;37770:5;37766:16;37760:23;37789:63;37846:4;37841:3;37837:14;37823:12;37789:63;;;37709:149;37942:4;37935:5;37931:16;37925:23;37954:63;38011:4;38006:3;38002:14;37988:12;37954:63;;;37868:155;38108:4;38101:5;38097:16;38091:23;38120:63;38177:4;38172:3;38168:14;38154:12;38120:63;;;38033:156;38275:4;38268:5;38264:16;38258:23;38287:63;38344:4;38339:3;38335:14;38321:12;38287:63;;;38199:157;38436:4;38429:5;38425:16;38419:23;38448:63;38505:4;38500:3;38496:14;38482:12;38448:63;;38928:107;39007:22;39023:5;39007:22;;39042:370;;39183:75;39254:3;39245:6;39183:75;;;39280:2;39275:3;39271:12;39264:19;;39294:69;39359:3;39350:6;39294:69;;;-1:-1;39385:1;39376:11;;39171:241;-1:-1;;39171:241;39419:383;;39566:75;39637:3;39628:6;39566:75;;;39663:2;39658:3;39654:12;39647:19;;39677:75;39748:3;39739:6;39677:75;;;-1:-1;39774:2;39765:12;;39554:248;-1:-1;;39554:248;39809:378;;39954:73;40023:3;40014:6;39954:73;;;40049:1;40044:3;40040:11;40033:18;;40062:75;40133:3;40124:6;40062:75;;40194:262;;40338:93;40427:3;40418:6;40338:93;;40736:213;40854:2;40839:18;;40868:71;40843:9;40912:6;40868:71;;40956:229;41082:2;41067:18;;41096:79;41071:9;41148:6;41096:79;;41192:324;41338:2;41323:18;;41352:71;41327:9;41396:6;41352:71;;;41434:72;41502:2;41491:9;41487:18;41478:6;41434:72;;41523:340;41677:2;41662:18;;41691:71;41666:9;41735:6;41691:71;;;41773:80;41849:2;41838:9;41834:18;41825:6;41773:80;;41870:435;42044:2;42029:18;;42058:71;42033:9;42102:6;42058:71;;;42140:72;42208:2;42197:9;42193:18;42184:6;42140:72;;;42223;42291:2;42280:9;42276:18;42267:6;42223:72;;42312:647;42536:3;42521:19;;42551:71;42525:9;42595:6;42551:71;;;42633:72;42701:2;42690:9;42686:18;42677:6;42633:72;;;42716;42784:2;42773:9;42769:18;42760:6;42716:72;;;42799;42867:2;42856:9;42852:18;42843:6;42799:72;;;42882:67;42944:3;42933:9;42929:19;42920:6;42882:67;;42966:771;43224:3;43209:19;;43239:71;43213:9;43283:6;43239:71;;;43321:72;43389:2;43378:9;43374:18;43365:6;43321:72;;;43404;43472:2;43461:9;43457:18;43448:6;43404:72;;;43487;43555:2;43544:9;43540:18;43531:6;43487:72;;;43570:73;43638:3;43627:9;43623:19;43614:6;43570:73;;;43654;43722:3;43711:9;43707:19;43698:6;43654:73;;;43195:542;;;;;;;;;;43744:324;43890:2;43875:18;;43904:71;43879:9;43948:6;43904:71;;;43986:72;44054:2;44043:9;44039:18;44030:6;43986:72;;44075:361;44243:2;44257:47;;;44228:18;;44318:108;44228:18;44412:6;44318:108;;44443:457;44659:2;44673:47;;;44644:18;;44734:156;44644:18;44876:6;44734:156;;44907:201;45019:2;45004:18;;45033:65;45008:9;45071:6;45033:65;;45115:213;45233:2;45218:18;;45247:71;45222:9;45291:6;45247:71;;45335:1139;45725:3;45710:19;;45740:71;45714:9;45784:6;45740:71;;;45822:72;45890:2;45879:9;45875:18;45866:6;45822:72;;;45905:66;45967:2;45956:9;45952:18;45943:6;45905:66;;;45982:72;46050:2;46039:9;46035:18;46026:6;45982:72;;;46065:119;46179:3;46168:9;46164:19;46155:6;46065:119;;;46195;46309:3;46298:9;46294:19;46285:6;46195:119;;;46363:9;46357:4;46353:20;46347:3;46336:9;46332:19;46325:49;46388:76;46459:4;46450:6;46388:76;;;46380:84;45696:778;-1:-1;;;;;;;;;45696:778;46697:293;46831:2;46845:47;;;46816:18;;46906:74;46816:18;46966:6;46906:74;;47305:407;47496:2;47510:47;;;47481:18;;47571:131;47481:18;47571:131;;47719:407;47910:2;47924:47;;;47895:18;;47985:131;47895:18;47985:131;;48133:407;48324:2;48338:47;;;48309:18;;48399:131;48309:18;48399:131;;48547:407;48738:2;48752:47;;;48723:18;;48813:131;48723:18;48813:131;;48961:407;49152:2;49166:47;;;49137:18;;49227:131;49137:18;49227:131;;49375:407;49566:2;49580:47;;;49551:18;;49641:131;49551:18;49641:131;;49789:407;49980:2;49994:47;;;49965:18;;50055:131;49965:18;50055:131;;50203:407;50394:2;50408:47;;;50379:18;;50469:131;50379:18;50469:131;;50617:407;50808:2;50822:47;;;50793:18;;50883:131;50793:18;50883:131;;51031:407;51222:2;51236:47;;;51207:18;;51297:131;51207:18;51297:131;;51445:407;51636:2;51650:47;;;51621:18;;51711:131;51621:18;51711:131;;51859:407;52050:2;52064:47;;;52035:18;;52125:131;52035:18;52125:131;;52273:407;52464:2;52478:47;;;52449:18;;52539:131;52449:18;52539:131;;52687:407;52878:2;52892:47;;;52863:18;;52953:131;52863:18;52953:131;;53101:407;53292:2;53306:47;;;53277:18;;53367:131;53277:18;53367:131;;53515:407;53706:2;53720:47;;;53691:18;;53781:131;53691:18;53781:131;;53929:407;54120:2;54134:47;;;54105:18;;54195:131;54105:18;54195:131;;54343:407;54534:2;54548:47;;;54519:18;;54609:131;54519:18;54609:131;;54757:407;54948:2;54962:47;;;54933:18;;55023:131;54933:18;55023:131;;55171:407;55362:2;55376:47;;;55347:18;;55437:131;55347:18;55437:131;;55585:407;55776:2;55790:47;;;55761:18;;55851:131;55761:18;55851:131;;55999:407;56190:2;56204:47;;;56175:18;;56265:131;56175:18;56265:131;;56413:407;56604:2;56618:47;;;56589:18;;56679:131;56589:18;56679:131;;56827:407;57018:2;57032:47;;;57003:18;;57093:131;57003:18;57093:131;;57241:407;57432:2;57446:47;;;57417:18;;57507:131;57417:18;57507:131;;57655:407;57846:2;57860:47;;;57831:18;;57921:131;57831:18;57921:131;;58069:407;58260:2;58274:47;;;58245:18;;58335:131;58245:18;58335:131;;58483:407;58674:2;58688:47;;;58659:18;;58749:131;58659:18;58749:131;;58897:407;59088:2;59102:47;;;59073:18;;59163:131;59073:18;59163:131;;59311:407;59502:2;59516:47;;;59487:18;;59577:131;59487:18;59577:131;;59945:324;60091:2;60076:18;;60105:71;60080:9;60149:6;60105:71;;60276:435;60450:2;60435:18;;60464:71;60439:9;60508:6;60464:71;;;60546:72;60614:2;60603:9;60599:18;60590:6;60546:72;;60718:205;60832:2;60817:18;;60846:67;60821:9;60886:6;60846:67;;60930:256;60992:2;60986:9;61018:17;;;-1:-1;;;;;61078:34;;61114:22;;;61075:62;61072:2;;;61150:1;61147;61140:12;61072:2;61166;61159:22;60970:216;;-1:-1;60970:216;61193:304;;-1:-1;;;;;61344:6;61341:30;61338:2;;;61384:1;61381;61374:12;61338:2;-1:-1;61419:4;61407:17;;;61472:15;;61275:222;61839:321;;-1:-1;;;;;61974:6;61971:30;61968:2;;;62014:1;62011;62004:12;61968:2;-1:-1;62145:4;62081;62058:17;;;;-1:-1;;62054:33;62135:15;;61905:255;62600:151;62724:4;62715:14;;62672:79;63044:108;-1:-1;63138:4;;63116:36;63159:137;63262:12;;63233:63;63471:108;-1:-1;63565:4;;63543:36;64598:178;64716:19;;;64765:4;64756:14;;64709:67;65794:91;;65856:24;65874:5;65856:24;;65892:85;65958:13;65951:21;;65934:43;66063:144;-1:-1;;;;;;66124:78;;66107:100;66292:121;-1:-1;;;;;66354:54;;66337:76;66499:81;66570:4;66559:16;;66542:38;66587:129;;66674:37;66705:5;66723:121;66802:37;66833:5;66802:37;;66967:145;67048:6;67043:3;67038;67025:30;-1:-1;67104:1;67086:16;;67079:27;67018:94;67121:268;67186:1;67193:101;67207:6;67204:1;67201:13;67193:101;;;67274:11;;;67268:18;67255:11;;;67248:39;67229:2;67222:10;67193:101;;;67309:6;67306:1;67303:13;67300:2;;;-1:-1;;67374:1;67356:16;;67349:27;67170:219;67397:95;;67461:26;67481:5;67461:26;;67499:90;;67560:24;67578:5;67560:24;;67757:89;;67821:20;67835:5;67821:20;;67934:88;;67996:21;68011:5;67996:21;;68029:97;68117:2;68097:14;-1:-1;;68093:28;;68077:49;68134:96;68209:3;68205:15;;68177:53;68238:94;68312:2;68308:14;;68280:52;68340:117;68409:24;68427:5;68409:24;;;68402:5;68399:35;68389:2;;68448:1;68445;68438:12;68464:111;68530:21;68545:5;68530:21;;68582:117;68651:24;68669:5;68651:24;"
            },
            "methodIdentifiers": {
              "VERSION()": "ffa1ad74",
              "_supplyInterestRate(uint256,uint256)": "7288b344",
              "admin()": "f851a440",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "assetBalanceOf(address)": "06b3efd6",
              "avgBorrowInterestRate()": "44a4a003",
              "balanceOf(address)": "70a08231",
              "baseRate()": "1f68f20a",
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": "2ea295fa",
              "borrowInterestRate()": "8325a1c0",
              "burn(address,uint256)": "9dc29fac",
              "checkPause(string)": "be194217",
              "checkPriceDivergence(uint256,uint256,uint256,address,uint256)": "18498b1d",
              "checkpointPrice(address)": "eebc5081",
              "checkpointSupply()": "7b7933b4",
              "decimals()": "313ce567",
              "disableLoanParams(address[],bool[])": "e697d2ee",
              "earlyAccessToken()": "ca37e666",
              "getBorrowAmountForDeposit(uint256,uint256,address)": "04797930",
              "getDepositAmountForBorrow(uint256,uint256,address)": "631a3ef8",
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": "6b40cd40",
              "getMaxEscrowAmount(uint256)": "829b38f4",
              "initialPrice()": "1d0806ae",
              "isOwner()": "8f32d59b",
              "kinkLevel()": "56e07d70",
              "liquidityMiningAddress()": "8ee6c4e6",
              "loanParamsIds(uint256)": "3291c11a",
              "loanTokenAddress()": "797bf385",
              "lowUtilBaseRate()": "d759dbeb",
              "lowUtilRateMultiplier()": "7e37c08c",
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": "28a02f19",
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": "f6b69f99",
              "marketLiquidity()": "612ef80b",
              "maxScaleRate()": "ef2b0b39",
              "mint(address,uint256)": "40c10f19",
              "name()": "06fdde03",
              "nextBorrowInterestRate(uint256)": "b9fe1a8f",
              "nextSupplyInterestRate(uint256)": "d65a5021",
              "owner()": "8da5cb5b",
              "pauser()": "9fd0506d",
              "profitOf(address)": "54198ce9",
              "rateMultiplier()": "330691ac",
              "setAdmin(address)": "704b6c02",
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "d97206a4",
              "setLiquidityMiningAddress(address)": "cb926cb3",
              "setPauser(address)": "2d88af4a",
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": "d8f06c83",
              "sovrynContractAddress()": "06947a3a",
              "supplyInterestRate()": "09ec6b6b",
              "symbol()": "95d89b41",
              "targetLevel()": "ba0e43bf",
              "target_()": "9bda3a98",
              "toggleFunctionPause(string,bool)": "e3cded61",
              "tokenPrice()": "7ff9b596",
              "totalAssetBorrow()": "20f6d07c",
              "totalAssetSupply()": "8fb807c5",
              "totalSupply()": "18160ddd",
              "totalSupplyInterestRate(uint256)": "12416898",
              "transactionLimit(address)": "e41b07e3",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "wrbtcTokenAddress()": "2f6b600d"
            }
          },
          "userdoc": {
            "methods": {
              "_supplyInterestRate(uint256,uint256)": {
                "notice": "Compute the next supply interest adjustment."
              },
              "allowance(address,address)": {
                "notice": "Get the amount of iTokens allowed to be spent by a  given account on behalf of the owner."
              },
              "approve(address,uint256)": {
                "notice": "Set an amount as the allowance of `spender` over the caller's tokens.\t * Returns a boolean value indicating whether the operation succeeded.\t * 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\t * Emits an {Approval} event."
              },
              "assetBalanceOf(address)": {
                "notice": "Get loan token balance."
              },
              "avgBorrowInterestRate()": {
                "notice": "Wrapper for average borrow interest."
              },
              "balanceOf(address)": {
                "notice": "Get the amount of iTokens owned by an account."
              },
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": {
                "notice": "Borrow funds from the pool. The underlying loan token may not be used as collateral."
              },
              "borrowInterestRate()": {
                "notice": "Get borrow interest rate. The minimum rate the next base protocol borrower will receive for variable-rate loans."
              },
              "burn(address,uint256)": {
                "notice": "Burn loan token wrapper. Adds a pay-out transfer after calling low level _burnToken function. In order to withdraw funds to the pool, call burn on the respective loan token contract. This will burn your loan tokens and send you the underlying token in exchange."
              },
              "checkPause(string)": {
                "notice": "Check whether a function is paused."
              },
              "checkpointPrice(address)": {
                "notice": "Getter for the price checkpoint mapping."
              },
              "disableLoanParams(address[],bool[])": {
                "notice": "Disable loan token parameters."
              },
              "getBorrowAmountForDeposit(uint256,uint256,address)": {
                "notice": "Calculate the borrow allowed for a given deposit.\t * The function for doing over-collateralized borrows against loan tokens expects a minimum amount of collateral be sent to satisfy collateral requirements of the loan, for borrow amount, interest rate, and initial loan duration. To determine appropriate values to pass to this function for a given loan, `getDepositAmountForBorrow` and 'getBorrowAmountForDeposit` are required."
              },
              "getDepositAmountForBorrow(uint256,uint256,address)": {
                "notice": "Calculate the deposit required to a given borrow.\t * The function for doing over-collateralized borrows against loan tokens expects a minimum amount of collateral be sent to satisfy collateral requirements of the loan, for borrow amount, interest rate, and initial loan duration. To determine appropriate values to pass to this function for a given loan, `getDepositAmountForBorrow` and 'getBorrowAmountForDeposit` are required."
              },
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": {
                "notice": "Get margin information on a trade."
              },
              "getMaxEscrowAmount(uint256)": {
                "notice": "Compute the maximum deposit amount under current market conditions."
              },
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": {
                "notice": "Borrow and immediately get into a position.\t * Trading on margin is used to increase an investor's buying power. Margin is the amount of money required to open a position, while leverage is the multiple of exposure to account equity.\t * Leverage allows you to trade positions LARGER than the amount of money in your trading account. Leverage is expressed as a ratio.\t * When trading on margin, investors first deposit some token that then serves as collateral for the loan, and then pay ongoing interest payments on the money they borrow.\t * Margin trading = taking a loan and swapping it: In order to open a margin trade position, 1.- The user calls marginTrade on the loan token contract. 2.- The loan token contract provides the loan and sends it for processing   to the protocol proxy contract. 3.- The protocol proxy contract uses the module LoanOpening to create a   position and swaps the loan tokens to collateral tokens. 4.- The Sovryn Swap network looks up the correct converter and swaps the   tokens. If successful, the position is being held by the protocol proxy contract, which is why positions need to be closed at the protocol proxy contract."
              },
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": {
                "notice": "Wrapper for marginTrade invoking setAffiliatesReferrer to track  referral trade by affiliates program."
              },
              "marketLiquidity()": {
                "notice": "Get current liquidity. A part of total funds supplied are borrowed. Liquidity = supply - borrow"
              },
              "mint(address,uint256)": {
                "notice": "Mint loan token wrapper. Adds a check before calling low level _mintToken function. The function retrieves the tokens from the message sender, so make sure to first approve the loan token contract to access your funds. This is done by calling approve(address spender, uint amount) on the ERC20 token contract, where spender is the loan token contract address and amount is the amount to be deposited."
              },
              "nextBorrowInterestRate(uint256)": {
                "notice": "Public wrapper for internal call."
              },
              "nextSupplyInterestRate(uint256)": {
                "notice": "Get interest rate w/ added supply."
              },
              "profitOf(address)": {
                "notice": "Wrapper for internal _profitOf low level function."
              },
              "setAdmin(address)": {
                "notice": "Set admin account."
              },
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": {
                "notice": "Set loan token parameters about the demand curve."
              },
              "setLiquidityMiningAddress(address)": {
                "notice": "sets the liquidity mining contract address"
              },
              "setPauser(address)": {
                "notice": "Set pauser account."
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": {
                "notice": "Set loan token parameters."
              },
              "supplyInterestRate()": {
                "notice": "Get interest rate."
              },
              "toggleFunctionPause(string,bool)": {
                "notice": "Set the pause flag for a function to true or false."
              },
              "tokenPrice()": {
                "notice": "Loan token price calculation considering unpaid interests."
              },
              "totalAssetBorrow()": {
                "notice": "Get the total amount of loan tokens on debt. Calls protocol getTotalPrincipal function. In the context of borrowing, principal is the initial size of a loan. It can also be the amount still owed on a loan. If you take out a $50,000 mortgage, for example, the principal is $50,000. If you pay off $30,000, the principal balance now consists of the remaining $20,000."
              },
              "totalAssetSupply()": {
                "notice": "Get the total amount of loan tokens on supply."
              },
              "totalSupply()": {
                "notice": "Get the total supply of iTokens."
              },
              "totalSupplyInterestRate(uint256)": {
                "notice": "Get interest rate w/ added supply assets."
              },
              "transfer(address,uint256)": {
                "notice": "Transfer tokens wrapper. Sets token owner the msg.sender. Sets maximun allowance uint256(-1) to ensure tokens are always transferred."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Moves `_value` loan tokens from `_from` to `_to` using the allowance mechanism. Calls internal _internalTransferFrom function."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * Logic around loan tokens (iTokens) required to operate borrowing, and margin trading financial processes. * The user provides funds to the lending pool using the mint function and withdraws funds from the lending pool using the burn function. Mint and burn refer to minting and burning loan tokens. Loan tokens represent a share of the pool and gather interest over time. * Interest rates are determined by supply and demand. When a lender deposits funds, the interest rates go down. When a trader borrows funds, the interest rates go up. Fulcrum uses a simple linear interest rate formula of the form y = mx + b. The interest rate starts at 1% when loans aren't being utilized and scales up to 40% when all the funds in the loan pool are being borrowed. * The borrow rate is determined at the time of the loan and represents the net contribution of each borrower. Each borrower's interest contribution is determined by the utilization rate of the pool and is netted against all prior borrows. This means that the total amount of interest flowing into the lending pool is not directly changed by lenders entering or exiting the pool. The entrance or exit of lenders only impacts how the interest payments are split up. * For example, if there are 2 lenders with equal holdings each earning 5% APR, but one of the lenders leave, then the remaining lender will earn 10% APR since the interest payments don't have to be split between two individuals."
          }
        }
      },
      "contracts/connectors/loantoken/LoanTokenLogicWrbtc.sol": {
        "LoanTokenLogicWrbtc": {
          "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": "burner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                }
              ],
              "name": "FlashBorrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "minter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "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": false,
                  "internalType": "address[]",
                  "name": "addresses",
                  "type": "address[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "limits",
                  "type": "uint256[]"
                }
              ],
              "name": "SetTransactionLimits",
              "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"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "VERSION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assetBorrow",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "assetSupply",
                  "type": "uint256"
                }
              ],
              "name": "_supplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "assetBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "avgBorrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "borrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "burnAmount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "loanAmountPaid",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "burnAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "useLM",
                  "type": "bool"
                }
              ],
              "name": "burnToBTC",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "loanAmountPaid",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "funcId",
                  "type": "string"
                }
              ],
              "name": "checkPause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                }
              ],
              "name": "checkPriceDivergence",
              "outputs": [],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "checkpointPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "checkpointSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "collateralTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "bool[]",
                  "name": "isTorqueLoans",
                  "type": "bool[]"
                }
              ],
              "name": "disableLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "earlyAccessToken",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getBorrowAmountForDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getDepositAmountForBorrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getEstimatedMarginDetails",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                }
              ],
              "name": "getMaxEscrowAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxEscrowAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "initialPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kinkLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidityMiningAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "loanParamsIds",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "loanTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilBaseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilRateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "marginTrade",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "affiliateReferrer",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "marginTradeAffiliate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "marketLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxScaleRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "mintAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "useLM",
                  "type": "bool"
                }
              ],
              "name": "mintWithBTC",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "mintAmount",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                }
              ],
              "name": "nextBorrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "supplyAmount",
                  "type": "uint256"
                }
              ],
              "name": "nextSupplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pauser",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "profitOf",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "setAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_baseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_rateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilBaseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilRateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_targetLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_kinkLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_maxScaleRate",
                  "type": "uint256"
                }
              ],
              "name": "setDemandCurve",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "LMAddress",
                  "type": "address"
                }
              ],
              "name": "setLiquidityMiningAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_pauser",
                  "type": "address"
                }
              ],
              "name": "setPauser",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "id",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bool",
                      "name": "active",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "minInitialMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanParamsStruct.LoanParams[]",
                  "name": "loanParamsList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bool",
                  "name": "areTorqueLoans",
                  "type": "bool"
                }
              ],
              "name": "setupLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynContractAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "supplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "targetLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "target_",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "funcId",
                  "type": "string"
                },
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "name": "toggleFunctionPause",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tokenPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAssetBorrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAssetSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assetSupply",
                  "type": "uint256"
                }
              ],
              "name": "totalSupplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "transactionLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "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"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "_supplyInterestRate(uint256,uint256)": {
                "params": {
                  "assetBorrow": "The amount of loan tokens on debt.",
                  "assetSupply": "The amount of loan tokens supplied."
                },
                "return": "The next supply interest adjustment."
              },
              "allowance(address,address)": {
                "params": {
                  "_owner": "The account owner of the iTokens.",
                  "_spender": "The account allowed to send the iTokens."
                },
                "return": "The number of iTokens an account is allowing the spender  to send on its behalf."
              },
              "approve(address,uint256)": {
                "params": {
                  "_spender": "The account address that will be able to spend the tokens.",
                  "_value": "The amount of tokens allowed to spend."
                }
              },
              "assetBalanceOf(address)": {
                "return": "The user's balance of underlying token."
              },
              "avgBorrowInterestRate()": {
                "return": "The average borrow interest."
              },
              "balanceOf(address)": {
                "params": {
                  "_owner": "The account owner of the iTokens."
                },
                "return": "The number of iTokens an account owns."
              },
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": {
                "params": {
                  "borrower": "The one paying for the collateral.",
                  "collateralTokenAddress": "The address of the token to be used as  collateral. Cannot be the loan token address.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.  (150% of the withdrawn amount worth in collateral tokens).",
                  "initialLoanDuration": "The duration of the loan in seconds.  If the loan is not paid back until then, it'll need to be rolled over.",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "receiver": "The one receiving the withdrawn amount.",
                  "withdrawAmount": "The amount to be withdrawn (actually borrowed)."
                },
                "return": "New principal and new collateral added to loan."
              },
              "borrowInterestRate()": {
                "return": "The borrow interest rate."
              },
              "burn(address,uint256)": {
                "params": {
                  "burnAmount": "The amount of loan tokens to redeem.",
                  "receiver": "The account getting the minted tokens."
                },
                "return": "The amount of underlying tokens payed to lender."
              },
              "checkPause(string)": {
                "details": "Used to read externally from the smart contract to see if a  function is paused.",
                "params": {
                  "funcId": "The function ID, the selector."
                },
                "return": "isPaused Whether the function is paused: true or false."
              },
              "checkpointPrice(address)": {
                "params": {
                  "_user": "The user account as the mapping index."
                },
                "return": "The price on the checkpoint for this user."
              },
              "disableLoanParams(address[],bool[])": {
                "params": {
                  "collateralTokens": "The array of collateral tokens.",
                  "isTorqueLoans": "Whether the loan is a torque loan."
                }
              },
              "getBorrowAmountForDeposit(uint256,uint256,address)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "depositAmount": "The amount of deposit.",
                  "initialLoanDuration": "The duration of the loan."
                },
                "return": "The amount of borrow allowed."
              },
              "getDepositAmountForBorrow(uint256,uint256,address)": {
                "params": {
                  "borrowAmount": "The amount of borrow.",
                  "collateralTokenAddress": "The token address of collateral.",
                  "initialLoanDuration": "The duration of the loan."
                },
                "return": "The amount of deposit required."
              },
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanTokenSent": "The number of loan tokens provided by the user."
                },
                "return": "The principal, the collateral and the interestRate."
              },
              "getMaxEscrowAmount(uint256)": {
                "details": "maxEscrowAmount = liquidity * (100 - interestForDuration) / 100",
                "params": {
                  "leverageAmount": "The chosen multiplier with 18 decimals."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanDataBytes": "Additional loan data (not in use for token swaps).",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "loanTokenSent": "The number of loan tokens provided by the user.",
                  "trader": "The account that performs this trade."
                },
                "return": "New principal and new collateral added to trade."
              },
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": {
                "params": {
                  "affiliateReferrer": "The address of the referrer from affiliates program.",
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanDataBytes": "Additional loan data (not in use for token swaps).",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "loanTokenSent": "The number of loan tokens provided by the user.",
                  "minReturn": "Minimum position size in the collateral tokens",
                  "trader": "The account that performs this trade."
                },
                "return": "New principal and new collateral added to trade."
              },
              "marketLiquidity()": {
                "return": "The market liquidity."
              },
              "mint(address,uint256)": {
                "params": {
                  "depositAmount": "The amount of underlying tokens provided on the  loan. (Not the number of loan tokens to mint).",
                  "receiver": "The account getting the minted tokens."
                },
                "return": "The amount of loan tokens minted."
              },
              "nextBorrowInterestRate(uint256)": {
                "params": {
                  "borrowAmount": "The amount of tokens to borrow."
                },
                "return": "The next borrow interest rate."
              },
              "nextSupplyInterestRate(uint256)": {
                "params": {
                  "supplyAmount": "The amount of tokens supplied."
                },
                "return": "Interest that lenders are currently receiving when supplying a given amount of tokens to the pool."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "profitOf(address)": {
                "params": {
                  "user": "The user address."
                },
                "return": "The profit of a user."
              },
              "setAdmin(address)": {
                "params": {
                  "_admin": "The address of the account to grant admin permissions."
                }
              },
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": {
                "details": "These params should be percentages represented  like so: 5% = 5000000000000000000 /// 18 digits precision. rateMultiplier + baseRate can't exceed 100%\t * To maintain a healthy credit score, it's important to keep your credit utilization rate (CUR) low (_lowUtilBaseRate). In general you don't want your CUR to exceed 30%, but increasingly financial experts are recommending that you don't want to go above 10% if you really want an excellent credit score.\t * Interest rates tend to cluster around the kink level of a kinked interest rate model. More info at https://arxiv.org/pdf/2006.13922.pdf and https://compound.finance/governance/proposals/12",
                "params": {
                  "_baseRate": "The interest rate.",
                  "_kinkLevel": "The level that interest rates cluster on kinked model.",
                  "_lowUtilBaseRate": "The credit utilization rate (CUR) low value.",
                  "_lowUtilRateMultiplier": "The precision multiplier for low util base rate.",
                  "_maxScaleRate": "The maximum rate of the scale.",
                  "_rateMultiplier": "The precision multiplier for base rate.",
                  "_targetLevel": "The target level."
                }
              },
              "setLiquidityMiningAddress(address)": {
                "params": {
                  "LMAddress": "the address of the liquidity mining contract"
                }
              },
              "setPauser(address)": {
                "params": {
                  "_pauser": "The address of the account to grant pause permissions."
                }
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": {
                "params": {
                  "areTorqueLoans": "Whether the loan is a torque loan.",
                  "loanParamsList": "The array of loan parameters."
                }
              },
              "supplyInterestRate()": {
                "return": "Interest that lenders are currently receiving when supplying to the pool."
              },
              "toggleFunctionPause(string,bool)": {
                "details": "Combining the hash of \"iToken_FunctionPause\" string and a function  selector gets a slot to write a flag for pause state.",
                "params": {
                  "funcId": "The ID of a function, the selector.",
                  "isPaused": "true/false value of the flag."
                }
              },
              "tokenPrice()": {
                "return": "The loan token price."
              },
              "totalAssetBorrow()": {
                "return": "The total amount of loan tokens on debt."
              },
              "totalAssetSupply()": {
                "details": "Wrapper for internal _totalAssetSupply function.",
                "return": "The total amount of loan tokens on supply."
              },
              "totalSupply()": {
                "return": "The total number of iTokens in existence as of now."
              },
              "totalSupplyInterestRate(uint256)": {
                "params": {
                  "assetSupply": "The amount of loan tokens supplied."
                },
                "return": "Interest that lenders are currently receiving when supplying a given amount of loan tokens to the pool."
              },
              "transfer(address,uint256)": {
                "params": {
                  "_to": "The recipient of the tokens.",
                  "_value": "The amount of tokens sent."
                },
                "return": "Success true/false."
              },
              "transferFrom(address,address,uint256)": {
                "return": "A boolean value indicating whether the operation succeeded."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052600160009081556200001e6001600160e01b036200007216565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000076565b3390565b615d2c80620000866000396000f3fe6080604052600436106103d95760003560e01c80637e37c08c116101fd578063ca37e66611610118578063e41b07e3116100ab578063f2fde38b1161007a578063f2fde38b14610a98578063f6b69f9914610ab8578063f851a44014610acb578063fb5f83df14610ae0578063ffa1ad7414610af3576103d9565b8063e41b07e314610a23578063e697d2ee14610a43578063eebc508114610a63578063ef2b0b3914610a83576103d9565b8063d8f06c83116100e7578063d8f06c83146109a3578063d97206a4146109c3578063dd62ed3e146109e3578063e3cded6114610a03576103d9565b8063ca37e66614610939578063cb926cb31461094e578063d65a50211461096e578063d759dbeb1461098e576103d9565b806395d89b4111610190578063a9059cbb1161015f578063a9059cbb146108c4578063b9fe1a8f146108e4578063ba0e43bf14610904578063be19421714610919576103d9565b806395d89b41146108655780639bda3a981461087a5780639dc29fac1461088f5780639fd0506d146108af576103d9565b80638da5cb5b116101cc5780638da5cb5b146108115780638ee6c4e6146108265780638f32d59b1461083b5780638fb807c514610850576103d9565b80637e37c08c146107b25780637ff9b596146107c7578063829b38f4146107dc5780638325a1c0146107fc576103d9565b80632ea295fa116102f857806356e07d701161028b578063704b6c021161025a578063704b6c021461072857806370a08231146107485780637288b34414610768578063797bf385146107885780637b7933b41461079d576103d9565b806356e07d70146106af578063612ef80b146106c4578063631a3ef8146106d95780636b40cd40146106f9576103d9565b8063330691ac116102c7578063330691ac1461064557806340c10f191461065a57806344a4a0031461067a57806354198ce91461068f576103d9565b80632ea295fa146105db5780632f6b600d146105ee578063313ce567146106035780633291c11a14610625576103d9565b806318160ddd1161037057806320f6d07c1161033f57806320f6d07c1461056557806323b872dd1461057a57806328a02f191461059a5780632d88af4a146105bb576103d9565b806318160ddd1461050457806318498b1d146105195780631d0806ae1461053b5780631f68f20a14610550576103d9565b806306fdde03116103ac57806306fdde0314610480578063095ea7b3146104a257806309ec6b6b146104cf57806312416898146104e4576103d9565b806304797930146103e85780630506af041461041e57806306947a3a1461043e57806306b3efd614610460575b3480156103e557600080fd5b50005b3480156103f457600080fd5b50610408610403366004614b7f565b610b08565b60405161041591906158a6565b60405180910390f35b34801561042a57600080fd5b506104086104393660046146ff565b610cb1565b34801561044a57600080fd5b50610453610d83565b604051610415919061571d565b34801561046c57600080fd5b5061040861047b3660046145dc565b610d92565b34801561048c57600080fd5b50610495610e7e565b6040516104159190615925565b3480156104ae57600080fd5b506104c26104bd3660046146cf565b610f09565b6040516104159190615898565b3480156104db57600080fd5b50610408610f74565b3480156104f057600080fd5b506104086104ff366004614af4565b610f89565b34801561051057600080fd5b50610408610fb4565b34801561052557600080fd5b50610539610534366004614c23565b610fba565b005b34801561054757600080fd5b50610408610ff4565b34801561055c57600080fd5b50610408610ffa565b34801561057157600080fd5b50610408611000565b34801561058657600080fd5b506104c2610595366004614652565b61108f565b6105ad6105a83660046149fc565b611158565b604051610415929190615b46565b3480156105c757600080fd5b506105396105d63660046145dc565b61137d565b6105ad6105e9366004614855565b6113c3565b3480156105fa57600080fd5b506104536116a3565b34801561060f57600080fd5b506106186116b2565b6040516104159190615b6f565b34801561063157600080fd5b50610408610640366004614af4565b6116bb565b34801561065157600080fd5b506104086116cd565b34801561066657600080fd5b506104086106753660046146cf565b6116d3565b34801561068657600080fd5b50610408611714565b34801561069b57600080fd5b506104086106aa3660046145dc565b611726565b3480156106bb57600080fd5b506104086117c7565b3480156106d057600080fd5b506104086117cd565b3480156106e557600080fd5b506104086106f4366004614b7f565b6117fe565b34801561070557600080fd5b50610719610714366004614bc2565b61199e565b60405161041593929190615b54565b34801561073457600080fd5b506105396107433660046145dc565b611aaf565b34801561075457600080fd5b506104086107633660046145dc565b611af5565b34801561077457600080fd5b50610408610783366004614b30565b611b10565b34801561079457600080fd5b50610453611bf3565b3480156107a957600080fd5b50610408611c07565b3480156107be57600080fd5b50610408611c0d565b3480156107d357600080fd5b50610408611c13565b3480156107e857600080fd5b506104086107f7366004614af4565b611c51565b34801561080857600080fd5b50610408611cd1565b34801561081d57600080fd5b50610453611cdd565b34801561083257600080fd5b50610453611cec565b34801561084757600080fd5b506104c2611cfb565b34801561085c57600080fd5b50610408611d21565b34801561087157600080fd5b50610495611d51565b34801561088657600080fd5b50610453611dac565b34801561089b57600080fd5b506104086108aa3660046146cf565b611dbb565b3480156108bb57600080fd5b50610453611e2f565b3480156108d057600080fd5b506104c26108df3660046146cf565b611e3e565b3480156108f057600080fd5b506104086108ff366004614af4565b611e4e565b34801561091057600080fd5b50610408611e59565b34801561092557600080fd5b506104c2610934366004614a8b565b611e5f565b34801561094557600080fd5b50610453611ee1565b34801561095a57600080fd5b506105396109693660046145dc565b611ef0565b34801561097a57600080fd5b50610408610989366004614af4565b611f36565b34801561099a57600080fd5b50610408611f49565b3480156109af57600080fd5b506105396109be3660046147e4565b611f4f565b3480156109cf57600080fd5b506105396109de366004614d1f565b61211e565b3480156109ef57600080fd5b506104086109fe366004614618565b612225565b348015610a0f57600080fd5b50610539610a1e366004614abf565b612250565b348015610a2f57600080fd5b50610408610a3e3660046145dc565b6122f5565b348015610a4f57600080fd5b50610539610a5e366004614742565b612307565b348015610a6f57600080fd5b50610408610a7e3660046145dc565b6124b8565b348015610a8f57600080fd5b506104086124d3565b348015610aa457600080fd5b50610539610ab33660046145dc565b6124d9565b6105ad610ac636600461491c565b612509565b348015610ad757600080fd5b506104536125d9565b610408610aee36600461469f565b6125e8565b348015610aff57600080fd5b50610408612632565b60008315610caa576001600160a01b038216610b2d576017546001600160a01b031691505b600060106000846001604051602001610b4792919061569e565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506001600160a01b039182169363e762319f936101009091049092169187918a91869163ca74a5d991610bb8918a91016158a6565b60206040518083038186803b158015610bd057600080fd5b505afa158015610be4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c089190810190614b12565b60016040518663ffffffff1660e01b8152600401610c2a959493929190615797565b60206040518083038186803b158015610c4257600080fd5b505afa158015610c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7a9190810190614b12565b9150610c8e82610c88611d21565b86612637565b9350610c9c91506126b09050565b821115610ca857600091505b505b9392505050565b6000600160005414610cde5760405162461bcd60e51b8152600401610cd590615af6565b60405180910390fd5b60026000558115610cf957610cf2836126e6565b9050610d05565b610d028361288c565b90505b8015610d7757601754604051632e1a7d4d60e01b81526001600160a01b0390911690632e1a7d4d90610d3b9084906004016158a6565b600060405180830381600087803b158015610d5557600080fd5b505af1158015610d69573d6000803e3d6000fd5b50505050610d778482612a43565b60016000559392505050565b6016546001600160a01b031681565b601c5460009081906001600160a01b031615610e2d57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690610dda9030908790600401615739565b60206040518083038186803b158015610df257600080fd5b505afa158015610e06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2a9190810190614b12565b90505b610e75670de0b6b3a7640000610e69610e44611c13565b610e5d85610e5189611af5565b9063ffffffff612ae416565b9063ffffffff612b0916565b9063ffffffff612b4316565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610f015780601f10610ed657610100808354040283529160200191610f01565b820191906000526020600020905b815481529060010190602001808311610ee457829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610f629086906158a6565b60405180910390a35060015b92915050565b6000610f836104ff6000612b85565b90505b90565b600080610f94611000565b90508015610fae57610fa68184611b10565b915050610e79565b50919050565b60155490565b6000610fc88686868661199e565b5091505081811015610fec5760405162461bcd60e51b8152600401610cd590615936565b505050505050565b600e5481565b60055481565b6016546004805460405163250f447f60e11b81526000936001600160a01b0390811693634a1e88fe9361103f9330936101009092049091169101615739565b60206040518083038186803b15801561105757600080fd5b505afa15801561106b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f839190810190614b12565b60165460405163115dd4b160e01b8152600091611150918691869186916001600160a01b03169063115dd4b1906110ca90339060040161572b565b60206040518083038186803b1580156110e257600080fd5b505afa1580156110f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061111a9190810190614837565b611147576001600160a01b038816600090815260146020908152604080832033845290915290205461114b565b6000195b612bbf565b949350505050565b60008060016000541461117d5760405162461bcd60e51b8152600401610cd590615af6565b600260005561118a612d92565b6111978989898988610fba565b6001600160a01b0386166111b4576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156111e75760405162461bcd60e51b8152600401610cd590615a06565b8915806111fc5750336001600160a01b038616145b6112185760405162461bcd60e51b8152600401610cd590615b16565b6001600160a01b0386166000908152601260205260409020541561125b576001600160a01b03861660009081526012602052604090205487111561125b57600080fd5b60045461010090046001600160a01b0316600090815260126020526040902054156112ac5760045461010090046001600160a01b03166000908152601260205260409020548811156112ac57600080fd5b60006112b987898b612e12565b9050806112d85760405162461bcd60e51b8152600401610cd590615a36565b6112e06142dc565b6112e86142fa565b3082526001600160a01b038816602080840182905260408401919091528101839052606081018b9052608081018a905261132061303f565b6113318c82600160200201516130e5565b825260208201526113526f4b3b4ca85a86c47a098a2240000000008d612b43565b9b506113648d60008e8c86868c613134565b6001600055909e909d509b505050505050505050505050565b611385611cfb565b6113a15760405162461bcd60e51b8152600401610cd590615a96565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806001600054146113e85760405162461bcd60e51b8152600401610cd590615af6565b60026000558861140a5760405162461bcd60e51b8152600401610cd590615b26565b611412612d92565b6001600160a01b03861660009081526012602052604090205415611455576001600160a01b03861660009081526012602052604090205487111561145557600080fd5b34158061146157508634145b801561147557508615158061147557508915155b801561149c57506001600160a01b03861615158061149257503415155b8061149c57508915155b80156114b857508915806114b85750336001600160a01b038616145b6114d45760405162461bcd60e51b8152600401610cd5906159b6565b6001600160a01b0386166114f1576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156115245760405162461bcd60e51b8152600401610cd590615946565b61152c61303f565b6115346142dc565b61153c6142fa565b3082526001600160a01b03878116602080850191909152908716604084015281018b90526115748b61156e6000612b85565b8c612637565b83600060200201846002602002018560016020020192909252919052528881600460200201818152505061168b8c8c601660009054906101000a90046001600160a01b03166001600160a01b031663ca74a5d9601060008e60016040516020016115df92919061569e565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020546040518263ffffffff1660e01b815260040161162391906158a6565b60206040518083038186803b15801561163b57600080fd5b505afa15801561164f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116739190810190614b12565b8b868660405180602001604052806000815250613134565b6001600055909d909c509a5050505050505050505050565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b60006001600054146116f75760405162461bcd60e51b8152600401610cd590615af6565b60026000556117068383613393565b90505b600160005592915050565b6000610f83611721611000565b61349f565b600080827f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb660001b60405160200161175f9291906156c4565b604051602081830303815290604052805190602001209050610e758160136000866001600160a01b03166001600160a01b03168152602001908152602001600020546117a9611c13565b6001600160a01b0387166000908152601160205260409020546134d7565b600a5481565b6000806117da6000612b85565b905060006117e6611000565b9050808211156117f95790039050610f86565b505090565b60008315610caa57600061181485610c88611d21565b925050506118206126b0565b8111610ca8576001600160a01b038316611843576017546001600160a01b031692505b60006010600085600160405160200161185d92919061569e565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b815292945061199593600a936001600160a01b03938416936325decac09361010090930416918a918991869163ca74a5d9916118d3918c91016158a6565b60206040518083038186803b1580156118eb57600080fd5b505afa1580156118ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119239190810190614b12565b60016040518663ffffffff1660e01b8152600401611945959493929190615797565b60206040518083038186803b15801561195d57600080fd5b505afa158015611971573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e519190810190614b12565b92505050610caa565b600080806001600160a01b0384166119bf576017546001600160a01b031693505b60006119cc858789612e12565b90506119d888826130e5565b90945091506119e56126b0565b8411156119fc575060009250829150819050611aa5565b611a0c878563ffffffff612ae416565b6016546004805460405163d67f707760e01b8152939a506001600160a01b039283169363d67f707793611a519361010090930416918a918d918d918a918d91016157d9565b60206040518083038186803b158015611a6957600080fd5b505afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aa19190810190614b12565b9250505b9450945094915050565b611ab7611cfb565b611ad35760405162461bcd60e51b8152600401610cd590615a96565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60008215801590611b215750828210155b15610f6e57611bec701d6329f1c35ca4bfabb9f5610000000000610e69611bd668056bc75e2d63100000601660009054906101000a90046001600160a01b03166001600160a01b0316634699f8466040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9957600080fd5b505afa158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bd19190810190614b12565b613531565b610e5d611be38888613573565b610e5d8961349f565b9050610f6e565b60045461010090046001600160a01b031681565b600d5481565b60085481565b600f546000908190426001600160581b03908116911614611c3a57611c366135a5565b9150505b611c4b611c4682612b85565b613671565b91505090565b600080611c7061016d610e69601c600b54612b0990919063ffffffff16565b90506000611c8d68056bc75e2d631000008363ffffffff61353116565b90506000611caa68056bc75e2d63100000610e6984610e5d6117cd565b9050611cc885610e6983670de0b6b3a764000063ffffffff612b0916565b95945050505050565b6000610f8360006136a0565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316611d126136f6565b6001600160a01b031614905090565b600f546000908190426001600160581b03908116911614611d4857611d446135a5565b9150505b611c4b81612b85565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610f015780601f10610ed657610100808354040283529160200191610f01565b6018546001600160a01b031681565b6000600160005414611ddf5760405162461bcd60e51b8152600401610cd590615af6565b6002600055611ded8261288c565b9050801561170957611709600460019054906101000a90046001600160a01b03168483604051806040016040528060018152602001603560f81b8152506136fa565b601b546001600160a01b031681565b6000610caa338484600019612bbf565b6000610f6e826136a0565b60095481565b60008082604051602001611e739190615706565b6040516020818303038152906040528051906020012090506000817fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001611ec09291906156ea565b60408051808303601f19018152919052805160209091012054949350505050565b601a546001600160a01b031681565b611ef8611cfb565b611f145760405162461bcd60e51b8152600401610cd590615a96565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f6e6104ff83610e516000612b85565b60075481565b611f57611cfb565b80611f6c57506019546001600160a01b031633145b611f885760405162461bcd60e51b8152600401610cd590615a96565b60045460609061010090046001600160a01b031660005b84518110156120125781858281518110611fb557fe5b6020026020010151606001906001600160a01b031690816001600160a01b03168152505083611fe7576224ea00611fea565b60005b62ffffff16858281518110611ffb57fe5b602090810291909101015160e00152600101611f9f565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e90612043908790600401615887565b600060405180830381600087803b15801561205d57600080fd5b505af1158015612071573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261209991908101906147b0565b915060005b8251811015612117578281815181106120b357fe5b6020026020010151601060008784815181106120cb57fe5b602002602001015160800151876040516020016120e992919061569e565b60408051601f198184030181529181528151602092830120835290820192909252016000205560010161209e565b5050505050565b612126611cfb565b8061213b57506019546001600160a01b031633145b6121575760405162461bcd60e51b8152600401610cd590615a96565b68056bc75e2d63100000612171878963ffffffff612ae416565b111561218f5760405162461bcd60e51b8152600401610cd590615a26565b68056bc75e2d631000006121a9858763ffffffff612ae416565b11156121c75760405162461bcd60e51b8152600401610cd590615a26565b68056bc75e2d6310000083111580156121e9575068056bc75e2d631000008211155b6122055760405162461bcd60e51b8152600401610cd590615a56565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b0316331461227a5760405162461bcd60e51b8152600401610cd590615ae6565b60008260405160200161228d9190615706565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f26040516020016122d59291906156ea565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b61230f611cfb565b8061232457506019546001600160a01b031633145b6123405760405162461bcd60e51b8152600401610cd590615a96565b82811461235f5760405162461bcd60e51b8152600401610cd590615996565b60408051848152602080860282010190915260609084801561238b578160200160208202803883390190505b50905060005b8481101561244e5760008686838181106123a757fe5b90506020020160206123bc91908101906145dc565b8585848181106123c857fe5b90506020020160206123dd9190810190614819565b6040516020016123ee92919061569e565b6040516020818303038152906040528051906020012060001c9050601060008281526020019081526020016000205483838151811061242957fe5b6020908102919091018101919091526000918252601090526040812055600101612391565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a9061247f908490600401615876565b600060405180830381600087803b15801561249957600080fd5b505af11580156124ad573d6000803e3d6000fd5b505050505050505050565b6001600160a01b031660009081526011602052604090205490565b600b5481565b6124e1611cfb565b6124fd5760405162461bcd60e51b8152600401610cd590615a96565b6125068161375a565b50565b6000806001600160a01b038516156125805760165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf4489061254d908a908990600401615739565b600060405180830381600087803b15801561256757600080fd5b505af115801561257b573d6000803e3d6000fd5b505050505b6125c68c8c8c8c8c8c8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061115892505050565b915091509a509a98505050505050505050565b6019546001600160a01b031681565b600060016000541461260c5760405162461bcd60e51b8152600401610cd590615af6565b600260005581156126285761262183346137dc565b9050611709565b6126218334613393565b600681565b60008060006126468686613865565b925061269361267b670de0b6b3a7640000611bd16b0a3098c68eb9427db8000000610e6983610e5d8a8c63ffffffff612b0916565b610e6988670de0b6b3a764000063ffffffff612b0916565b90506126a5818763ffffffff61353116565b915093509350939050565b600480546040516370a0823160e01b81526000926101009092046001600160a01b0316916370a082319161103f9130910161571d565b601c54604051636822955360e11b815260009182916001600160a01b039091169063d0452aa69061271d9030903390600401615754565b60206040518083038186803b15801561273557600080fd5b505afa158015612749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061276d9190810190614b12565b90508261278961277c33611af5565b839063ffffffff612ae416565b10156127a75760405162461bcd60e51b8152600401610cd5906159d6565b8015612887578281101561282057601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec906127e99030908590339060040161584e565b600060405180830381600087803b15801561280357600080fd5b505af1158015612817573d6000803e3d6000fd5b50505050612887565b601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec906128549030908790339060040161584e565b600060405180830381600087803b15801561286e57600080fd5b505af1158015612882573d6000803e3d6000fd5b505050505b610e75835b6000816128ab5760405162461bcd60e51b8152600401610cd590615aa6565b6128b433611af5565b8211156128e85760001982146128dc5760405162461bcd60e51b8152600401610cd590615a66565b6128e533611af5565b91505b6128f061303f565b60006128ff611c466000612b85565b9050600061291f670de0b6b3a7640000610e69868563ffffffff612b0916565b9050600061292b6126b0565b9050819350808411156129505760405162461bcd60e51b8152600401610cd5906159e6565b601c546000906001600160a01b0316156129e957601c54604051636822955360e11b81526001600160a01b039091169063d0452aa6906129969030903390600401615754565b60206040518083038186803b1580156129ae57600080fd5b505afa1580156129c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129e69190810190614b12565b90505b33600090815260136020526040812054612a09908363ffffffff612ae416565b90506000612a1d828963ffffffff61353116565b9050612a2b3389898961397b565b50612a3833838389613ab1565b505050505050919050565b80471015612a635760405162461bcd60e51b8152600401610cd5906159c6565b6000826001600160a01b031682604051612a7c90615712565b60006040518083038185875af1925050503d8060008114612ab9576040519150601f19603f3d011682016040523d82523d6000602084013e612abe565b606091505b5050905080612adf5760405162461bcd60e51b8152600401610cd5906159a6565b505050565b600082820183811015610caa5760405162461bcd60e51b8152600401610cd590615976565b600082612b1857506000610f6e565b82820282848281612b2557fe5b0414610caa5760405162461bcd60e51b8152600401610cd590615a86565b6000610caa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b67565b6000601554600014610e7957600c5480612baf57612bac612ba4611000565b610e516126b0565b90505b610fa6818463ffffffff612ae416565b60006000198214612c1b576040805180820190915260028152610c4d60f21b6020820152612bf6908390859063ffffffff613b9e16565b6001600160a01b03861660009081526014602090815260408083203384529091529020555b6001600160a01b038416612c415760405162461bcd60e51b8152600401610cd590615956565b6001600160a01b03851660009081526013602090815260408083205481518083019092526002825261189b60f11b92820192909252909190612c8c908390879063ffffffff613b9e16565b6001600160a01b03808916600090815260136020526040808220849055918916815290812054919250612cc5828863ffffffff612ae416565b6001600160a01b0389166000908152601360205260408120829055909150612ceb611c13565b601c549091506001600160a01b038b8116911614801590612d1a5750601c546001600160a01b038a8116911614155b15612d3757612d2b8a868684613ab1565b612d3789848484613ab1565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a604051612d7a91906158a6565b60405180910390a35060019998505050505050505050565b600080356001600160e01b0319167fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001612dd29291906156ea565b6040516020818303038152906040528051906020012090506000815490508015612e0e5760405162461bcd60e51b8152600401610cd590615a96565b5050565b808215610caa57600080601660009054906101000a90046001600160a01b03166001600160a01b03166378d849ed6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e6a57600080fd5b505afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ea291908101906145fa565b60048054604051630a7549df60e21b81526001600160a01b03938416936329d5277c93612edb938c936101009091049092169101615739565b604080518083038186803b158015612ef257600080fd5b505afa158015612f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f2a9190810190614b4f565b9150915081600014158015612f3e57508015155b612f5a5760405162461bcd60e51b8152600401610cd590615ad6565b6000612f7082610e69888663ffffffff612b0916565b60165460048054604051631a51577760e21b81529394506000936001600160a01b03938416936369455ddc93612fb3936101009004909116918d9188910161576f565b60206040518083038186803b158015612fcb57600080fd5b505afa158015612fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130039190810190614b12565b90508681146130235761302087610e69848463ffffffff612b0916565b91505b613033828663ffffffff612ae416565b98975050505050505050565b600f5442906001600160581b038083169116146125065760165460048054604051630740ff7d60e51b81526001600160a01b039384169363e81fefa09361308f936101009004909116910161571d565b600060405180830381600087803b1580156130a957600080fd5b505af11580156130bd573d6000803e3d6000fd5b5050600f80546001600160581b0385166affffffffffffffffffffff19909116179055505050565b60008080613105670de0b6b3a7640000610e69868863ffffffff612b0916565b905061311a816131156000612b85565b613865565b915061312a826224ea0083613bca565b9250509250929050565b60008061313f612d92565b6131476126b0565b602085015111801590613166575060208501516001600160a01b031615155b6131825760405162461bcd60e51b8152600401610cd5906159f6565b60408501516001600160a01b03166131a85760208501516001600160a01b031660408601525b60006131b68787878c613c2b565b602086015160608701519192506131cd9190612ae4565b606086015288156131ed5760608501516131e7908a613531565b60608601525b600089156131f9575060015b6000601060008a8460405160200161321292919061569e565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020549050601660009054906101000a90046001600160a01b03166001600160a01b031663585314cf84838f868f8e8e8e6040518963ffffffff1660e01b815260040161328a97969594939291906158b4565b60408051808303818588803b1580156132a257600080fd5b505af11580156132b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506132db9190810190614b4f565b6080890152602088018190526133035760405162461bcd60e51b8152600401610cd590615a46565b601654602089015160405163f06a9c6b60e01b81526001600160a01b039092169163f06a9c6b916133369160040161571d565b600060405180830381600087803b15801561335057600080fd5b505af1158015613364573d6000803e3d6000fd5b505050508660016005811061337557fe5b6020020151608090970151969c969b50959950505050505050505050565b60008061339f83613e85565b601c5491935091506000906001600160a01b03161561343d57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa6906133ea9030908990600401615739565b60206040518083038186803b15801561340257600080fd5b505afa158015613416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061343a9190810190614b12565b90505b6001600160a01b038516600090815260136020526040812054613466908363ffffffff612ae416565b9050600061347a828663ffffffff612ae416565b905061348887868887613f8f565b5061349587838387613ab1565b5050505092915050565b60008115610e795760006134b16135a5565b509050610fa683610e6961016d610e5d8568056bc75e2d6310000063ffffffff612b0916565b6000816134e657506000611150565b508354611cc881613525670de0b6b3a76400006135198861350d898963ffffffff61409f16565b9063ffffffff6140e516565b9063ffffffff61415016565b9063ffffffff6141b416565b6000610caa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b9e565b6000821580159061358357508115155b15610f6e57611bec82610e698568056bc75e2d6310000063ffffffff612b0916565b60165460048054604051630d1979fb60e41b8152600093849384936001600160a01b039283169363d1979fb0936135e793309361010090049091169101615739565b60c06040518083038186803b1580156135ff57600080fd5b505afa158015613613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136379190810190614c98565b509196509450925061366a915068056bc75e2d631000009050610e6961365d8285613531565b859063ffffffff612b0916565b9150509091565b6015546000908061368457600e54610e75565b610e7581610e6985670de0b6b3a764000063ffffffff612b0916565b60008082156136e957600f54426001600160581b039081169116146136cb576136c76135a5565b9150505b60006136d982610e516126b0565b9050808411156136e7578093505b505b610e758361311583612b85565b3390565b60405161375490859063a9059cbb60e01b9061371c9087908790602401615833565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152836141fa565b50505050565b6001600160a01b0381166137805760405162461bcd60e51b8152600401610cd590615966565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006137e88383613393565b601c549091506138049084906001600160a01b03168380612bbf565b50601c546040516336305cf160e21b81526001600160a01b039091169063d8c173c4906138379086908590600401615833565b600060405180830381600087803b15801561385157600080fd5b505af1158015613495573d6000803e3d6000fd5b60008061387d61387785610e51611000565b84613573565b600554600654600954600a54600b54949550600094859493929190828810156138a4578297505b8188111561391757968190039668056bc75e2d63100000829003808911156138ca578098505b6138eb68056bc75e2d63100000610e6985610e5d898b63ffffffff612ae416565b965061390f87610e5183610e69613902878d613531565b8e9063ffffffff612b0916565b99505061396d565b61393885610e5168056bc75e2d63100000610e698c8963ffffffff612b0916565b9850939550859361394f848663ffffffff612ae416565b9550868910156139615786985061396d565b8589111561396d578598505b505050505050505092915050565b6040805180820182526002815261189b60f11b6020808301919091526001600160a01b038716600090815260139091529182205482916139c39190879063ffffffff613b9e16565b9050600a81116139e4576139dd858263ffffffff612ae416565b9450600090505b6001600160a01b0386166000908152601360205260409020819055601554613a12908663ffffffff61353116565b6015556040516001600160a01b038716907f743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b464490613a5490889088908890615b54565b60405180910390a260006001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613aa091906158a6565b60405180910390a395945050505050565b604051600090613ae79086907f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb6906020016156c4565b60405160208183030381529060405280519060200120905060008360001415613b135760009250613b44565b8415613b44576001600160a01b038616600090815260116020526040902054613b41908390879086906134d7565b90505b90556001600160a01b039093166000908152601160205260409020929092555050565b60008183613b885760405162461bcd60e51b8152600401610cd59190615925565b506000838581613b9457fe5b0495945050505050565b60008184841115613bc25760405162461bcd60e51b8152600401610cd59190615925565b505050900390565b600080613be56301e13380610e69878763ffffffff612b0916565b90506000613c0268056bc75e2d631000008363ffffffff61353116565b9050613c2181610e698668056bc75e2d6310000063ffffffff612b0916565b9695505050505050565b60175460408401516020840151606085015160808601516000946001600160a01b039081169485949093909290918b16851415613c7a5760405162461bcd60e51b8152600401610cd590615ab6565b3496508715613d2557604051632e1a7d4d60e01b81526001600160a01b03871690632e1a7d4d90613caf908b906004016158a6565b600060405180830381600087803b158015613cc957600080fd5b505af1158015613cdd573d6000803e3d6000fd5b50505050613ceb8489612a43565b87831115613d2057601654604080516020810190915260008152613d209187916001600160a01b03909116908b8703906136fa565b613d5a565b601654604080518082019091526002815261323760f01b6020820152613d5a9187916001600160a01b039091169086906136fa565b8015613d9557601654604080518082019091526002815261064760f31b6020820152613d95918d9133916001600160a01b03169085906142b8565b8115613e77578615801590613daa5750818710155b15613e4257856001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613dea57600080fd5b505af1158015613dfe573d6000803e3d6000fd5b5050601654604080518082019091526002815261323960f01b6020820152613e3894508993506001600160a01b03909116915085906136fa565b8187039650613e77565b601654604080518082019091526002815261323960f01b6020820152613e7791879133916001600160a01b03169086906142b8565b505050505050949350505050565b60008082613ea55760405162461bcd60e51b8152600401610cd590615a76565b613ead61303f565b613eba611c466000612b85565b9050613ed881610e6985670de0b6b3a764000063ffffffff612b0916565b915034613f2057613f1b600460019054906101000a90046001600160a01b031633308660405180604001604052806002815260200161062760f31b8152506142b8565b613f8a565b601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613f7057600080fd5b505af1158015613f84573d6000803e3d6000fd5b50505050505b915091565b60006001600160a01b038516613fb75760405162461bcd60e51b8152600401610cd590615956565b6001600160a01b038516600090815260136020526040812054613fe0908663ffffffff612ae416565b6001600160a01b0387166000908152601360205260409020819055601554909150614011908663ffffffff612ae416565b6015556040516001600160a01b038716907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb9061405390889088908890615b54565b60405180910390a2856001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613aa091906158a6565b60008183038183128015906140b45750838113155b806140c957506000831280156140c957508381135b610caa5760405162461bcd60e51b8152600401610cd590615b06565b6000826140f457506000610f6e565b826000191480156141085750600160ff1b82145b156141255760405162461bcd60e51b8152600401610cd590615ac6565b8282028284828161413257fe5b0514610caa5760405162461bcd60e51b8152600401610cd590615ac6565b60008161416f5760405162461bcd60e51b8152600401610cd590615b36565b816000191480156141835750600160ff1b83145b156141a05760405162461bcd60e51b8152600401610cd590615a16565b60008284816141ab57fe5b05949350505050565b60008282018183128015906141c95750838112155b806141de57506000831280156141de57508381125b610caa5760405162461bcd60e51b8152600401610cd590615986565b60006060846001600160a01b0316846040516142169190615706565b6000604051808303816000865af19150503d8060008114614253576040519150601f19603f3d011682016040523d82523d6000602084013e614258565b606091505b509150915081839061427d5760405162461bcd60e51b8152600401610cd59190615925565b5080511561211757808060200190516142999190810190614837565b8390610fec5760405162461bcd60e51b8152600401610cd59190615925565b6040516121179086906323b872dd60e01b9061371c9088908890889060240161576f565b60405180608001604052806004906020820280388339509192915050565b6040518060a001604052806005906020820280388339509192915050565b8035610f6e81615cc3565b8051610f6e81615cc3565b60008083601f84011261434057600080fd5b5081356001600160401b0381111561435757600080fd5b60208301915083602082028301111561436f57600080fd5b9250929050565b600082601f83011261438757600080fd5b815161439a61439582615ba3565b615b7d565b915081818352602084019350602081019050838560208402820111156143bf57600080fd5b60005b8381101561349557816143d58882614480565b84525060209283019291909101906001016143c2565b600082601f8301126143fc57600080fd5b813561440a61439582615ba3565b915081818352602084019350602081019050838561010084028201111561443057600080fd5b60005b838110156134955781614446888261451b565b8452506020909201916101009190910190600101614433565b8035610f6e81615cd7565b8051610f6e81615cd7565b8035610f6e81615ce0565b8051610f6e81615ce0565b60008083601f84011261449d57600080fd5b5081356001600160401b038111156144b457600080fd5b60208301915083600182028301111561436f57600080fd5b600082601f8301126144dd57600080fd5b81356144eb61439582615bc3565b9150808252602083016020830185838301111561450757600080fd5b614512838284615c49565b50505092915050565b6000610100828403121561452e57600080fd5b614539610100615b7d565b905060006145478484614475565b82525060206145588484830161445f565b602083015250604061456c84828501614318565b604083015250606061458084828501614318565b606083015250608061459484828501614318565b60808301525060a06145a884828501614475565b60a08301525060c06145bc84828501614475565b60c08301525060e06145d084828501614475565b60e08301525092915050565b6000602082840312156145ee57600080fd5b60006111508484614318565b60006020828403121561460c57600080fd5b60006111508484614323565b6000806040838503121561462b57600080fd5b60006146378585614318565b925050602061464885828601614318565b9150509250929050565b60008060006060848603121561466757600080fd5b60006146738686614318565b935050602061468486828701614318565b925050604061469586828701614475565b9150509250925092565b600080604083850312156146b257600080fd5b60006146be8585614318565b92505060206146488582860161445f565b600080604083850312156146e257600080fd5b60006146ee8585614318565b925050602061464885828601614475565b60008060006060848603121561471457600080fd5b60006147208686614318565b935050602061473186828701614475565b92505060406146958682870161445f565b6000806000806040858703121561475857600080fd5b84356001600160401b0381111561476e57600080fd5b61477a8782880161432e565b945094505060208501356001600160401b0381111561479857600080fd5b6147a48782880161432e565b95989497509550505050565b6000602082840312156147c257600080fd5b81516001600160401b038111156147d857600080fd5b61115084828501614376565b600080604083850312156147f757600080fd5b82356001600160401b0381111561480d57600080fd5b6146be858286016143eb565b60006020828403121561482b57600080fd5b6000611150848461445f565b60006020828403121561484957600080fd5b6000611150848461446a565b600080600080600080600080610100898b03121561487257600080fd5b600061487e8b8b614475565b985050602061488f8b828c01614475565b97505060406148a08b828c01614475565b96505060606148b18b828c01614475565b95505060806148c28b828c01614318565b94505060a06148d38b828c01614318565b93505060c06148e48b828c01614318565b92505060e08901356001600160401b0381111561490057600080fd5b61490c8b828c016144cc565b9150509295985092959890939650565b6000806000806000806000806000806101208b8d03121561493c57600080fd5b60006149488d8d614475565b9a505060206149598d828e01614475565b995050604061496a8d828e01614475565b985050606061497b8d828e01614475565b975050608061498c8d828e01614318565b96505060a061499d8d828e01614318565b95505060c06149ae8d828e01614475565b94505060e06149bf8d828e01614318565b9350506101008b01356001600160401b038111156149dc57600080fd5b6149e88d828e0161448b565b92509250509295989b9194979a5092959850565b600080600080600080600080610100898b031215614a1957600080fd5b6000614a258b8b614475565b9850506020614a368b828c01614475565b9750506040614a478b828c01614475565b9650506060614a588b828c01614475565b9550506080614a698b828c01614318565b94505060a0614a7a8b828c01614318565b93505060c06148e48b828c01614475565b600060208284031215614a9d57600080fd5b81356001600160401b03811115614ab357600080fd5b611150848285016144cc565b60008060408385031215614ad257600080fd5b82356001600160401b03811115614ae857600080fd5b6146be858286016144cc565b600060208284031215614b0657600080fd5b60006111508484614475565b600060208284031215614b2457600080fd5b60006111508484614480565b60008060408385031215614b4357600080fd5b60006146ee8585614475565b60008060408385031215614b6257600080fd5b6000614b6e8585614480565b925050602061464885828601614480565b600080600060608486031215614b9457600080fd5b6000614ba08686614475565b9350506020614bb186828701614475565b925050604061469586828701614318565b60008060008060808587031215614bd857600080fd5b6000614be48787614475565b9450506020614bf587828801614475565b9350506040614c0687828801614475565b9250506060614c1787828801614318565b91505092959194509250565b600080600080600060a08688031215614c3b57600080fd5b6000614c478888614475565b9550506020614c5888828901614475565b9450506040614c6988828901614475565b9350506060614c7a88828901614318565b9250506080614c8b88828901614475565b9150509295509295909350565b60008060008060008060c08789031215614cb157600080fd5b6000614cbd8989614480565b9650506020614cce89828a01614480565b9550506040614cdf89828a01614480565b9450506060614cf089828a01614480565b9350506080614d0189828a01614480565b92505060a0614d1289828a01614480565b9150509295509295509295565b600080600080600080600060e0888a031215614d3a57600080fd5b6000614d468a8a614475565b9750506020614d578a828b01614475565b9650506040614d688a828b01614475565b9550506060614d798a828b01614475565b9450506080614d8a8a828b01614475565b93505060a0614d9b8a828b01614475565b92505060c0614dac8a828b01614475565b91505092959891949750929550565b6000614dc78383614dff565b505060200190565b6000614dc78383614f72565b6000614de783836155fe565b50506101000190565b614df981615c38565b82525050565b614df981615c09565b614df9614e1482615c09565b615c81565b614e2281615bf0565b614e2c8184610e79565b9250614e3782610f86565b8060005b83811015610fec578151614e4f8782614dbb565b9650614e5a83615bea565b925050600101614e3b565b6000614e7082615bf6565b614e7a8185615c00565b9350614e8583615bea565b8060005b83811015614eb3578151614e9d8882614dcf565b9750614ea883615bea565b925050600101614e89565b509495945050505050565b6000614ec982615bf6565b614ed38185615c00565b9350614ede83615bea565b8060005b83811015614eb3578151614ef68882614ddb565b9750614f0183615bea565b925050600101614ee2565b614f1581615bfa565b614f1f8184610e79565b9250614f2a82610f86565b8060005b83811015610fec578151614f428782614dcf565b9650614f4d83615bea565b925050600101614f2e565b614df981615c14565b614df9614f6d82615c14565b615c8c565b614df981610f86565b614df9614f8782610f86565b610f86565b614df9614f8782615c19565b6000614fa382615bf6565b614fad8185615c00565b9350614fbd818560208601615c55565b614fc681615cad565b9093019392505050565b6000614fdb82615bf6565b614fe58185610e79565b9350614ff5818560208601615c55565b9290920192915050565b600061500c600c83615c00565b6b636f6c6c20746f6f206c6f7760a01b815260200192915050565b6000615034600283615c00565b61031360f41b815260200192915050565b6000615052600283615c00565b61313560f01b815260200192915050565b6000615070602683615c00565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006150b8601b83615c00565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006150f1602183615c00565b7f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000615134600e83615c00565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b600061515e603a83615c00565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b60006151bd600183615c00565b603760f81b815260200192915050565b60006151da601d83615c00565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b6000615213601283615c00565b716e6f7420656e6f7567682062616c616e636560701b815260200192915050565b6000615241600283615c00565b61333760f01b815260200192915050565b600061525f600283615c00565b610c8d60f21b815260200192915050565b600061527d600283615c00565b61313160f01b815260200192915050565b600061529b602183615c00565b7f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006152de601583615c00565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b600061530f600283615c00565b61189960f11b815260200192915050565b600061532d600283615c00565b61323560f01b815260200192915050565b600061534b600f83615c00565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b6000615376600283615c00565b61199960f11b815260200192915050565b6000615394600283615c00565b61313760f01b815260200192915050565b60006153b2602183615c00565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006153f5600c83615c00565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061541d600283615c00565b61313960f01b815260200192915050565b600061543b600283615c00565b61191b60f11b815260200192915050565b6000615459602783615c00565b7f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f815266766572666c6f7760c81b602082015260400192915050565b60006154a2601d83615c00565b7f696e76616c6964207261746520636f6c6c61746572616c20746f6b656e000000815260200192915050565b6000610f6e600083610e79565b60006154e8600a83615c00565b6937b7363ca830bab9b2b960b11b815260200192915050565b600061550e600c83615c00565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b6000615536602483615c00565b7f5369676e6564536166654d6174683a207375627472616374696f6e206f766572815263666c6f7760e01b602082015260400192915050565b600061557c601883615c00565b7f34303120757365206f66206578697374696e67206c6f616e0000000000000000815260200192915050565b60006155b5600183615c00565b601b60f91b815260200192915050565b60006155d2602083615c00565b7f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f815260200192915050565b80516101008301906156108482614f72565b5060208201516156236020850182614f58565b5060408201516156366040850182614dff565b5060608201516156496060850182614dff565b50608082015161565c6080850182614dff565b5060a082015161566f60a0850182614f72565b5060c082015161568260c0850182614f72565b5060e082015161375460e0850182614f72565b614df981615c32565b60006156aa8285614e08565b6014820191506156ba8284614f61565b5060010192915050565b60006156d08285614e08565b6014820191506156e08284614f7b565b5060200192915050565b60006156f68285614f8c565b6004820191506156e08284614f7b565b6000610caa8284614fd0565b6000610f6e826154ce565b60208101610f6e8284614dff565b60208101610f6e8284614df0565b604081016157478285614dff565b610caa6020830184614dff565b604081016157628285614dff565b610caa6020830184614df0565b6060810161577d8286614dff565b61578a6020830185614dff565b6111506040830184614f72565b60a081016157a58288614dff565b6157b26020830187614dff565b6157bf6040830186614f72565b6157cc6060830185614f72565b613c216080830184614f58565b60c081016157e78289614dff565b6157f46020830188614dff565b6158016040830187614f72565b61580e6060830186614f72565b61581b6080830185614f72565b61582860a0830184614f72565b979650505050505050565b604081016158418285614dff565b610caa6020830184614f72565b6060810161585c8286614dff565b6158696020830185614f72565b6111506040830184614df0565b60208082528101610caa8184614e65565b60208082528101610caa8184614ebe565b60208101610f6e8284614f58565b60208101610f6e8284614f72565b6101c081016158c3828a614f72565b6158d06020830189614f72565b6158dd6040830188614f58565b6158ea6060830187614f72565b6158f76080830186614e19565b615905610100830185614f0c565b8181036101a08301526159188184614f98565b9998505050505050505050565b60208082528101610caa8184614f98565b60208082528101610f6e81614fff565b60208082528101610f6e81615027565b60208082528101610f6e81615045565b60208082528101610f6e81615063565b60208082528101610f6e816150ab565b60208082528101610f6e816150e4565b60208082528101610f6e81615127565b60208082528101610f6e81615151565b60208082528101610f6e816151b0565b60208082528101610f6e816151cd565b60208082528101610f6e81615206565b60208082528101610f6e81615234565b60208082528101610f6e81615252565b60208082528101610f6e81615270565b60208082528101610f6e8161528e565b60208082528101610f6e816152d1565b60208082528101610f6e81615302565b60208082528101610f6e81615320565b60208082528101610f6e8161533e565b60208082528101610f6e81615369565b60208082528101610f6e81615387565b60208082528101610f6e816153a5565b60208082528101610f6e816153e8565b60208082528101610f6e81615410565b60208082528101610f6e8161542e565b60208082528101610f6e8161544c565b60208082528101610f6e81615495565b60208082528101610f6e816154db565b60208082528101610f6e81615501565b60208082528101610f6e81615529565b60208082528101610f6e8161556f565b60208082528101610f6e816155a8565b60208082528101610f6e816155c5565b604081016158418285614f72565b60608101615b628286614f72565b61578a6020830185614f72565b60208101610f6e8284615695565b6040518181016001600160401b0381118282101715615b9b57600080fd5b604052919050565b60006001600160401b03821115615bb957600080fd5b5060209081020190565b60006001600160401b03821115615bd957600080fd5b506020601f91909101601f19160190565b60200190565b50600490565b5190565b50600590565b90815260200190565b6000610f6e82615c26565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b6000610f6e826000610f6e82615c09565b82818337506000910152565b60005b83811015615c70578181015183820152602001615c58565b838111156137545750506000910152565b6000610f6e82615c97565b6000610f6e82615ca2565b6000610f6e82615cbd565b6000610f6e82615cb7565b601f01601f191690565b60f81b90565b60601b90565b615ccc81615c09565b811461250657600080fd5b615ccc81615c14565b615ccc81610f8656fea365627a7a72315820fa60c47178ad0e720462a422164c216505b66504ef874aebac255e9d3cf9c3736c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH3 0x1E PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x72 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x76 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x5D2C DUP1 PUSH3 0x86 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3D9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E37C08C GT PUSH2 0x1FD JUMPI DUP1 PUSH4 0xCA37E666 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0xE41B07E3 GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xA98 JUMPI DUP1 PUSH4 0xF6B69F99 EQ PUSH2 0xAB8 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xACB JUMPI DUP1 PUSH4 0xFB5F83DF EQ PUSH2 0xAE0 JUMPI DUP1 PUSH4 0xFFA1AD74 EQ PUSH2 0xAF3 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0xA23 JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0xA43 JUMPI DUP1 PUSH4 0xEEBC5081 EQ PUSH2 0xA63 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0xA83 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0xD8F06C83 GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x9A3 JUMPI DUP1 PUSH4 0xD97206A4 EQ PUSH2 0x9C3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x9E3 JUMPI DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0xA03 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0xCA37E666 EQ PUSH2 0x939 JUMPI DUP1 PUSH4 0xCB926CB3 EQ PUSH2 0x94E JUMPI DUP1 PUSH4 0xD65A5021 EQ PUSH2 0x96E JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x98E JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x190 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x15F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x8C4 JUMPI DUP1 PUSH4 0xB9FE1A8F EQ PUSH2 0x8E4 JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x904 JUMPI DUP1 PUSH4 0xBE194217 EQ PUSH2 0x919 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x865 JUMPI DUP1 PUSH4 0x9BDA3A98 EQ PUSH2 0x87A JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x88F JUMPI DUP1 PUSH4 0x9FD0506D EQ PUSH2 0x8AF JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x1CC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x811 JUMPI DUP1 PUSH4 0x8EE6C4E6 EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x83B JUMPI DUP1 PUSH4 0x8FB807C5 EQ PUSH2 0x850 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x7B2 JUMPI DUP1 PUSH4 0x7FF9B596 EQ PUSH2 0x7C7 JUMPI DUP1 PUSH4 0x829B38F4 EQ PUSH2 0x7DC JUMPI DUP1 PUSH4 0x8325A1C0 EQ PUSH2 0x7FC JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x2EA295FA GT PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x56E07D70 GT PUSH2 0x28B JUMPI DUP1 PUSH4 0x704B6C02 GT PUSH2 0x25A JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH2 0x728 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x748 JUMPI DUP1 PUSH4 0x7288B344 EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x788 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x79D JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x6AF JUMPI DUP1 PUSH4 0x612EF80B EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0x631A3EF8 EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0x6B40CD40 EQ PUSH2 0x6F9 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x330691AC GT PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0x44A4A003 EQ PUSH2 0x67A JUMPI DUP1 PUSH4 0x54198CE9 EQ PUSH2 0x68F JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x2EA295FA EQ PUSH2 0x5DB JUMPI DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x603 JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x625 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x370 JUMPI DUP1 PUSH4 0x20F6D07C GT PUSH2 0x33F JUMPI DUP1 PUSH4 0x20F6D07C EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x57A JUMPI DUP1 PUSH4 0x28A02F19 EQ PUSH2 0x59A JUMPI DUP1 PUSH4 0x2D88AF4A EQ PUSH2 0x5BB JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD EQ PUSH2 0x504 JUMPI DUP1 PUSH4 0x18498B1D EQ PUSH2 0x519 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x53B JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x550 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 GT PUSH2 0x3AC JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x4A2 JUMPI DUP1 PUSH4 0x9EC6B6B EQ PUSH2 0x4CF JUMPI DUP1 PUSH4 0x12416898 EQ PUSH2 0x4E4 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x4797930 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x506AF04 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x6947A3A EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x6B3EFD6 EQ PUSH2 0x460 JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B7F JUMP JUMPDEST PUSH2 0xB08 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x439 CALLDATASIZE PUSH1 0x4 PUSH2 0x46FF JUMP JUMPDEST PUSH2 0xCB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0xD83 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x571D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x47B CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0xD92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x495 PUSH2 0xE7E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x5925 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C2 PUSH2 0x4BD CALLDATASIZE PUSH1 0x4 PUSH2 0x46CF JUMP JUMPDEST PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x5898 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xF74 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x4FF CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF4 JUMP JUMPDEST PUSH2 0xF89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xFB4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0x534 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C23 JUMP JUMPDEST PUSH2 0xFBA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x547 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xFF4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xFFA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1000 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C2 PUSH2 0x595 CALLDATASIZE PUSH1 0x4 PUSH2 0x4652 JUMP JUMPDEST PUSH2 0x108F JUMP JUMPDEST PUSH2 0x5AD PUSH2 0x5A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x49FC JUMP JUMPDEST PUSH2 0x1158 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP3 SWAP2 SWAP1 PUSH2 0x5B46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0x5D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x137D JUMP JUMPDEST PUSH2 0x5AD PUSH2 0x5E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4855 JUMP JUMPDEST PUSH2 0x13C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x16A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x618 PUSH2 0x16B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x5B6F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x640 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF4 JUMP JUMPDEST PUSH2 0x16BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x16CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x675 CALLDATASIZE PUSH1 0x4 PUSH2 0x46CF JUMP JUMPDEST PUSH2 0x16D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1714 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x6AA CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x1726 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x17C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x17CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x6F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B7F JUMP JUMPDEST PUSH2 0x17FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x719 PUSH2 0x714 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BC2 JUMP JUMPDEST PUSH2 0x199E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0x743 CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x1AAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x763 CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x1AF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x783 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B30 JUMP JUMPDEST PUSH2 0x1B10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x1BF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1C07 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1C0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1C13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x7F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF4 JUMP JUMPDEST PUSH2 0x1C51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1CD1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x1CDD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x1CEC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C2 PUSH2 0x1CFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1D21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x495 PUSH2 0x1D51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x1DAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x8AA CALLDATASIZE PUSH1 0x4 PUSH2 0x46CF JUMP JUMPDEST PUSH2 0x1DBB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x1E2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C2 PUSH2 0x8DF CALLDATASIZE PUSH1 0x4 PUSH2 0x46CF JUMP JUMPDEST PUSH2 0x1E3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x8FF CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF4 JUMP JUMPDEST PUSH2 0x1E4E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1E59 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C2 PUSH2 0x934 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A8B JUMP JUMPDEST PUSH2 0x1E5F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x945 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x1EE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0x969 CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x1EF0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x97A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x989 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF4 JUMP JUMPDEST PUSH2 0x1F36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1F49 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0x9BE CALLDATASIZE PUSH1 0x4 PUSH2 0x47E4 JUMP JUMPDEST PUSH2 0x1F4F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0x9DE CALLDATASIZE PUSH1 0x4 PUSH2 0x4D1F JUMP JUMPDEST PUSH2 0x211E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x9FE CALLDATASIZE PUSH1 0x4 PUSH2 0x4618 JUMP JUMPDEST PUSH2 0x2225 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0xA1E CALLDATASIZE PUSH1 0x4 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x2250 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xA3E CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x22F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0xA5E CALLDATASIZE PUSH1 0x4 PUSH2 0x4742 JUMP JUMPDEST PUSH2 0x2307 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xA7E CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x24B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x24D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0xAB3 CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x24D9 JUMP JUMPDEST PUSH2 0x5AD PUSH2 0xAC6 CALLDATASIZE PUSH1 0x4 PUSH2 0x491C JUMP JUMPDEST PUSH2 0x2509 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x25D9 JUMP JUMPDEST PUSH2 0x408 PUSH2 0xAEE CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0x25E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x2632 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xCAA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB2D JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB47 SWAP3 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 PUSH4 0xE762319F SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 DUP8 SWAP2 DUP11 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0xBB8 SWAP2 DUP11 SWAP2 ADD PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBE4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC08 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC2A SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5797 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC56 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC7A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP2 POP PUSH2 0xC8E DUP3 PUSH2 0xC88 PUSH2 0x1D21 JUMP JUMPDEST DUP7 PUSH2 0x2637 JUMP JUMPDEST SWAP4 POP PUSH2 0xC9C SWAP2 POP PUSH2 0x26B0 SWAP1 POP JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0xCA8 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xCDE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0xCF9 JUMPI PUSH2 0xCF2 DUP4 PUSH2 0x26E6 JUMP JUMPDEST SWAP1 POP PUSH2 0xD05 JUMP JUMPDEST PUSH2 0xD02 DUP4 PUSH2 0x288C JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0xD77 JUMPI PUSH1 0x17 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0xD3B SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD69 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xD77 DUP5 DUP3 PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xE2D JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0xDDA SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5739 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE06 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xE2A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xE75 PUSH8 0xDE0B6B3A7640000 PUSH2 0xE69 PUSH2 0xE44 PUSH2 0x1C13 JUMP JUMPDEST PUSH2 0xE5D DUP6 PUSH2 0xE51 DUP10 PUSH2 0x1AF5 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2B43 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xF01 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xED6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF01 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xEE4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xF62 SWAP1 DUP7 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF83 PUSH2 0x4FF PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF94 PUSH2 0x1000 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xFAE JUMPI PUSH2 0xFA6 DUP2 DUP5 PUSH2 0x1B10 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE79 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFC8 DUP7 DUP7 DUP7 DUP7 PUSH2 0x199E JUMP JUMPDEST POP SWAP2 POP POP DUP2 DUP2 LT ISZERO PUSH2 0xFEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5936 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x250F447F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0x4A1E88FE SWAP4 PUSH2 0x103F SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x5739 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1057 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x106B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xF83 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH2 0x1150 SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x115DD4B1 SWAP1 PUSH2 0x10CA SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x572B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x111A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4837 JUMP JUMPDEST PUSH2 0x1147 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x114B JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH2 0x2BBF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x117D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x118A PUSH2 0x2D92 JUMP JUMPDEST PUSH2 0x1197 DUP10 DUP10 DUP10 DUP10 DUP9 PUSH2 0xFBA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x11B4 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x11E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A06 JUMP JUMPDEST DUP10 ISZERO DUP1 PUSH2 0x11FC JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x1218 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5B16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x125B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x125B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x12AC JUMPI PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP9 GT ISZERO PUSH2 0x12AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12B9 DUP8 DUP10 DUP12 PUSH2 0x2E12 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x12D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A36 JUMP JUMPDEST PUSH2 0x12E0 PUSH2 0x42DC JUMP JUMPDEST PUSH2 0x12E8 PUSH2 0x42FA JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP11 SWAP1 MSTORE PUSH2 0x1320 PUSH2 0x303F JUMP JUMPDEST PUSH2 0x1331 DUP13 DUP3 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x30E5 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1352 PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP14 PUSH2 0x2B43 JUMP JUMPDEST SWAP12 POP PUSH2 0x1364 DUP14 PUSH1 0x0 DUP15 DUP13 DUP7 DUP7 DUP13 PUSH2 0x3134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP15 SWAP1 SWAP14 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1385 PUSH2 0x1CFB JUMP JUMPDEST PUSH2 0x13A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x13E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP9 PUSH2 0x140A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5B26 JUMP JUMPDEST PUSH2 0x1412 PUSH2 0x2D92 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1455 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x1455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x1461 JUMPI POP DUP7 CALLVALUE EQ JUMPDEST DUP1 ISZERO PUSH2 0x1475 JUMPI POP DUP7 ISZERO ISZERO DUP1 PUSH2 0x1475 JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x149C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO DUP1 PUSH2 0x1492 JUMPI POP CALLVALUE ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x149C JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x14B8 JUMPI POP DUP10 ISZERO DUP1 PUSH2 0x14B8 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x14D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x59B6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x14F1 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x1524 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5946 JUMP JUMPDEST PUSH2 0x152C PUSH2 0x303F JUMP JUMPDEST PUSH2 0x1534 PUSH2 0x42DC JUMP JUMPDEST PUSH2 0x153C PUSH2 0x42FA JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 AND PUSH1 0x40 DUP5 ADD MSTORE DUP2 ADD DUP12 SWAP1 MSTORE PUSH2 0x1574 DUP12 PUSH2 0x156E PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST DUP13 PUSH2 0x2637 JUMP JUMPDEST DUP4 PUSH1 0x0 PUSH1 0x20 MUL ADD DUP5 PUSH1 0x2 PUSH1 0x20 MUL ADD DUP6 PUSH1 0x1 PUSH1 0x20 MUL ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 MSTORE MSTORE DUP9 DUP2 PUSH1 0x4 PUSH1 0x20 MUL ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x168B DUP13 DUP13 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCA74A5D9 PUSH1 0x10 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x15DF SWAP3 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1623 SWAP2 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x163B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x164F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1673 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST DUP12 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP14 SWAP1 SWAP13 POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x16F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1706 DUP4 DUP4 PUSH2 0x3393 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF83 PUSH2 0x1721 PUSH2 0x1000 JUMP JUMPDEST PUSH2 0x349F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 PUSH1 0x0 SHL PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x175F SWAP3 SWAP2 SWAP1 PUSH2 0x56C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xE75 DUP2 PUSH1 0x13 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x17A9 PUSH2 0x1C13 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x34D7 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17DA PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x17E6 PUSH2 0x1000 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x17F9 JUMPI SWAP1 SUB SWAP1 POP PUSH2 0xF86 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xCAA JUMPI PUSH1 0x0 PUSH2 0x1814 DUP6 PUSH2 0xC88 PUSH2 0x1D21 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1820 PUSH2 0x26B0 JUMP JUMPDEST DUP2 GT PUSH2 0xCA8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1843 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x185D SWAP3 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH2 0x1995 SWAP4 PUSH1 0xA SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x25DECAC0 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0x18D3 SWAP2 DUP13 SWAP2 ADD PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1923 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1945 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5797 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x195D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1971 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xE51 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xCAA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x19BF JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x19CC DUP6 DUP8 DUP10 PUSH2 0x2E12 JUMP JUMPDEST SWAP1 POP PUSH2 0x19D8 DUP9 DUP3 PUSH2 0x30E5 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH2 0x19E5 PUSH2 0x26B0 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x19FC JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1AA5 JUMP JUMPDEST PUSH2 0x1A0C DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD67F7077 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD67F7077 SWAP4 PUSH2 0x1A51 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP14 SWAP2 DUP14 SWAP2 DUP11 SWAP2 DUP14 SWAP2 ADD PUSH2 0x57D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1AA1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP3 POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AB7 PUSH2 0x1CFB JUMP JUMPDEST PUSH2 0x1AD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST PUSH1 0x19 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1B21 JUMPI POP DUP3 DUP3 LT ISZERO JUMPDEST ISZERO PUSH2 0xF6E JUMPI PUSH2 0x1BEC PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 PUSH2 0xE69 PUSH2 0x1BD6 PUSH9 0x56BC75E2D63100000 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4699F846 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BAD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1BD1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST PUSH2 0x3531 JUMP JUMPDEST PUSH2 0xE5D PUSH2 0x1BE3 DUP9 DUP9 PUSH2 0x3573 JUMP JUMPDEST PUSH2 0xE5D DUP10 PUSH2 0x349F JUMP JUMPDEST SWAP1 POP PUSH2 0xF6E JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1C3A JUMPI PUSH2 0x1C36 PUSH2 0x35A5 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C4B PUSH2 0x1C46 DUP3 PUSH2 0x2B85 JUMP JUMPDEST PUSH2 0x3671 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C70 PUSH2 0x16D PUSH2 0xE69 PUSH1 0x1C PUSH1 0xB SLOAD PUSH2 0x2B09 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C8D PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3531 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1CAA PUSH9 0x56BC75E2D63100000 PUSH2 0xE69 DUP5 PUSH2 0xE5D PUSH2 0x17CD JUMP JUMPDEST SWAP1 POP PUSH2 0x1CC8 DUP6 PUSH2 0xE69 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF83 PUSH1 0x0 PUSH2 0x36A0 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D12 PUSH2 0x36F6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1D48 JUMPI PUSH2 0x1D44 PUSH2 0x35A5 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C4B DUP2 PUSH2 0x2B85 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xF01 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xED6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF01 JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1DDF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1DED DUP3 PUSH2 0x288C JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1709 JUMPI PUSH2 0x1709 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH2 0x36FA JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCAA CALLER DUP5 DUP5 PUSH1 0x0 NOT PUSH2 0x2BBF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x36A0 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E73 SWAP2 SWAP1 PUSH2 0x5706 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EC0 SWAP3 SWAP2 SWAP1 PUSH2 0x56EA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1EF8 PUSH2 0x1CFB JUMP JUMPDEST PUSH2 0x1F14 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST PUSH1 0x1C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E PUSH2 0x4FF DUP4 PUSH2 0xE51 PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1F57 PUSH2 0x1CFB JUMP JUMPDEST DUP1 PUSH2 0x1F6C JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x1F88 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x2012 JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1FB5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x1FE7 JUMPI PUSH3 0x24EA00 PUSH2 0x1FEA JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1FFB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1F9F JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x2043 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5887 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x205D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2071 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2099 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x47B0 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2117 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x20B3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x20CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x20E9 SWAP3 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x209E JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2126 PUSH2 0x1CFB JUMP JUMPDEST DUP1 PUSH2 0x213B JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2157 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x2171 DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST GT ISZERO PUSH2 0x218F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A26 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x21A9 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST GT ISZERO PUSH2 0x21C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A26 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x21E9 JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x2205 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A56 JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x227A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AE6 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x228D SWAP2 SWAP1 PUSH2 0x5706 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x22D5 SWAP3 SWAP2 SWAP1 PUSH2 0x56EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x230F PUSH2 0x1CFB JUMP JUMPDEST DUP1 PUSH2 0x2324 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2340 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x235F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5996 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0x238B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x244E JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x23A7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x23BC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x45DC JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x23C8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x23DD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4819 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x23EE SWAP3 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2429 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x2391 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0x247F SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x5876 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x24E1 PUSH2 0x1CFB JUMP JUMPDEST PUSH2 0x24FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST PUSH2 0x2506 DUP2 PUSH2 0x375A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x2580 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x193BBE89 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC9DDF448 SWAP1 PUSH2 0x254D SWAP1 DUP11 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5739 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x257B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x25C6 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1158 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP11 POP SWAP11 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x260C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x2628 JUMPI PUSH2 0x2621 DUP4 CALLVALUE PUSH2 0x37DC JUMP JUMPDEST SWAP1 POP PUSH2 0x1709 JUMP JUMPDEST PUSH2 0x2621 DUP4 CALLVALUE PUSH2 0x3393 JUMP JUMPDEST PUSH1 0x6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2646 DUP7 DUP7 PUSH2 0x3865 JUMP JUMPDEST SWAP3 POP PUSH2 0x2693 PUSH2 0x267B PUSH8 0xDE0B6B3A7640000 PUSH2 0x1BD1 PUSH12 0xA3098C68EB9427DB8000000 PUSH2 0xE69 DUP4 PUSH2 0xE5D DUP11 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST PUSH2 0xE69 DUP9 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x26A5 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x3531 AND JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0x103F SWAP2 ADDRESS SWAP2 ADD PUSH2 0x571D JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x271D SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x5754 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2749 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x276D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x2789 PUSH2 0x277C CALLER PUSH2 0x1AF5 JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST LT ISZERO PUSH2 0x27A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x59D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2887 JUMPI DUP3 DUP2 LT ISZERO PUSH2 0x2820 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x27E9 SWAP1 ADDRESS SWAP1 DUP6 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x584E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2803 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2817 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x2887 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x2854 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x584E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x286E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2882 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xE75 DUP4 JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x28AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AA6 JUMP JUMPDEST PUSH2 0x28B4 CALLER PUSH2 0x1AF5 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x28E8 JUMPI PUSH1 0x0 NOT DUP3 EQ PUSH2 0x28DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A66 JUMP JUMPDEST PUSH2 0x28E5 CALLER PUSH2 0x1AF5 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x28F0 PUSH2 0x303F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28FF PUSH2 0x1C46 PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x291F PUSH8 0xDE0B6B3A7640000 PUSH2 0xE69 DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x292B PUSH2 0x26B0 JUMP JUMPDEST SWAP1 POP DUP2 SWAP4 POP DUP1 DUP5 GT ISZERO PUSH2 0x2950 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x59E6 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x29E9 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x2996 SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x5754 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x29E6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x2A09 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A1D DUP3 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3531 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2A2B CALLER DUP10 DUP10 DUP10 PUSH2 0x397B JUMP JUMPDEST POP PUSH2 0x2A38 CALLER DUP4 DUP4 DUP10 PUSH2 0x3AB1 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x2A63 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x59C6 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x2A7C SWAP1 PUSH2 0x5712 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2AB9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2ABE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2ADF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x59A6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xCAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5976 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2B18 JUMPI POP PUSH1 0x0 PUSH2 0xF6E JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2B25 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xCAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A86 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCAA DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x3B67 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x15 SLOAD PUSH1 0x0 EQ PUSH2 0xE79 JUMPI PUSH1 0xC SLOAD DUP1 PUSH2 0x2BAF JUMPI PUSH2 0x2BAC PUSH2 0x2BA4 PUSH2 0x1000 JUMP JUMPDEST PUSH2 0xE51 PUSH2 0x26B0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xFA6 DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ PUSH2 0x2C1B JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xC4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2BF6 SWAP1 DUP4 SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3B9E AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2C41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5956 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 SWAP1 PUSH2 0x2C8C SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3B9E AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x2CC5 DUP3 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP3 SWAP1 SSTORE SWAP1 SWAP2 POP PUSH2 0x2CEB PUSH2 0x1C13 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2D1A JUMPI POP PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x2D37 JUMPI PUSH2 0x2D2B DUP11 DUP7 DUP7 DUP5 PUSH2 0x3AB1 JUMP JUMPDEST PUSH2 0x2D37 DUP10 DUP5 DUP5 DUP5 PUSH2 0x3AB1 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP11 PUSH1 0x40 MLOAD PUSH2 0x2D7A SWAP2 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DD2 SWAP3 SWAP2 SWAP1 PUSH2 0x56EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 SLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2E0E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 DUP3 ISZERO PUSH2 0xCAA JUMPI PUSH1 0x0 DUP1 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x78D849ED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E7E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2EA2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x45FA JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x29D5277C SWAP4 PUSH2 0x2EDB SWAP4 DUP13 SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 ADD PUSH2 0x5739 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F06 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2F2A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B4F JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x2F3E JUMPI POP DUP1 ISZERO ISZERO JUMPDEST PUSH2 0x2F5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AD6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F70 DUP3 PUSH2 0xE69 DUP9 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A515777 PUSH1 0xE2 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x69455DDC SWAP4 PUSH2 0x2FB3 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 DUP14 SWAP2 DUP9 SWAP2 ADD PUSH2 0x576F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3003 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ PUSH2 0x3023 JUMPI PUSH2 0x3020 DUP8 PUSH2 0xE69 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x3033 DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF SLOAD TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x2506 JUMPI PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x740FF7D PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0xE81FEFA0 SWAP4 PUSH2 0x308F SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x571D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x30BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP6 AND PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x3105 PUSH8 0xDE0B6B3A7640000 PUSH2 0xE69 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x311A DUP2 PUSH2 0x3115 PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST PUSH2 0x3865 JUMP JUMPDEST SWAP2 POP PUSH2 0x312A DUP3 PUSH3 0x24EA00 DUP4 PUSH2 0x3BCA JUMP JUMPDEST SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x313F PUSH2 0x2D92 JUMP JUMPDEST PUSH2 0x3147 PUSH2 0x26B0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD GT DUP1 ISZERO SWAP1 PUSH2 0x3166 JUMPI POP PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST PUSH2 0x3182 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x59F6 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31A8 JUMPI PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x31B6 DUP8 DUP8 DUP8 DUP13 PUSH2 0x3C2B JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP3 POP PUSH2 0x31CD SWAP2 SWAP1 PUSH2 0x2AE4 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP9 ISZERO PUSH2 0x31ED JUMPI PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x31E7 SWAP1 DUP11 PUSH2 0x3531 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 DUP10 ISZERO PUSH2 0x31F9 JUMPI POP PUSH1 0x1 JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3212 SWAP3 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x585314CF DUP5 DUP4 DUP16 DUP7 DUP16 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x328A SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x58B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x32DB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B4F JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0x20 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x3303 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A46 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF06A9C6B SWAP2 PUSH2 0x3336 SWAP2 PUSH1 0x4 ADD PUSH2 0x571D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3364 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP7 PUSH1 0x1 PUSH1 0x5 DUP2 LT PUSH2 0x3375 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 SWAP1 SWAP8 ADD MLOAD SWAP7 SWAP13 SWAP7 SWAP12 POP SWAP6 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x339F DUP4 PUSH2 0x3E85 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x343D JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x33EA SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5739 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3416 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x343A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3466 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x347A DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3488 DUP8 DUP7 DUP9 DUP8 PUSH2 0x3F8F JUMP JUMPDEST POP PUSH2 0x3495 DUP8 DUP4 DUP4 DUP8 PUSH2 0x3AB1 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0xE79 JUMPI PUSH1 0x0 PUSH2 0x34B1 PUSH2 0x35A5 JUMP JUMPDEST POP SWAP1 POP PUSH2 0xFA6 DUP4 PUSH2 0xE69 PUSH2 0x16D PUSH2 0xE5D DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x34E6 JUMPI POP PUSH1 0x0 PUSH2 0x1150 JUMP JUMPDEST POP DUP4 SLOAD PUSH2 0x1CC8 DUP2 PUSH2 0x3525 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3519 DUP9 PUSH2 0x350D DUP10 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x409F AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x40E5 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x4150 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x41B4 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCAA DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3B9E JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3583 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xF6E JUMPI PUSH2 0x1BEC DUP3 PUSH2 0xE69 DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD1979FB PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD1979FB0 SWAP4 PUSH2 0x35E7 SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x5739 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3613 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3637 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4C98 JUMP JUMPDEST POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP PUSH2 0x366A SWAP2 POP PUSH9 0x56BC75E2D63100000 SWAP1 POP PUSH2 0xE69 PUSH2 0x365D DUP3 DUP6 PUSH2 0x3531 JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP2 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x0 SWAP1 DUP1 PUSH2 0x3684 JUMPI PUSH1 0xE SLOAD PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE75 DUP2 PUSH2 0xE69 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x36E9 JUMPI PUSH1 0xF SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x36CB JUMPI PUSH2 0x36C7 PUSH2 0x35A5 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x36D9 DUP3 PUSH2 0xE51 PUSH2 0x26B0 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x36E7 JUMPI DUP1 SWAP4 POP JUMPDEST POP JUMPDEST PUSH2 0xE75 DUP4 PUSH2 0x3115 DUP4 PUSH2 0x2B85 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3754 SWAP1 DUP6 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x371C SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x5833 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE DUP4 PUSH2 0x41FA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3780 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5966 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37E8 DUP4 DUP4 PUSH2 0x3393 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH2 0x3804 SWAP1 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP1 PUSH2 0x2BBF JUMP JUMPDEST POP PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x36305CF1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD8C173C4 SWAP1 PUSH2 0x3837 SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5833 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3851 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3495 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x387D PUSH2 0x3877 DUP6 PUSH2 0xE51 PUSH2 0x1000 JUMP JUMPDEST DUP5 PUSH2 0x3573 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD PUSH1 0xB SLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP3 DUP9 LT ISZERO PUSH2 0x38A4 JUMPI DUP3 SWAP8 POP JUMPDEST DUP2 DUP9 GT ISZERO PUSH2 0x3917 JUMPI SWAP7 DUP2 SWAP1 SUB SWAP7 PUSH9 0x56BC75E2D63100000 DUP3 SWAP1 SUB DUP1 DUP10 GT ISZERO PUSH2 0x38CA JUMPI DUP1 SWAP9 POP JUMPDEST PUSH2 0x38EB PUSH9 0x56BC75E2D63100000 PUSH2 0xE69 DUP6 PUSH2 0xE5D DUP10 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP7 POP PUSH2 0x390F DUP8 PUSH2 0xE51 DUP4 PUSH2 0xE69 PUSH2 0x3902 DUP8 DUP14 PUSH2 0x3531 JUMP JUMPDEST DUP15 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP10 POP POP PUSH2 0x396D JUMP JUMPDEST PUSH2 0x3938 DUP6 PUSH2 0xE51 PUSH9 0x56BC75E2D63100000 PUSH2 0xE69 DUP13 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP9 POP SWAP4 SWAP6 POP DUP6 SWAP4 PUSH2 0x394F DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP6 POP DUP7 DUP10 LT ISZERO PUSH2 0x3961 JUMPI DUP7 SWAP9 POP PUSH2 0x396D JUMP JUMPDEST DUP6 DUP10 GT ISZERO PUSH2 0x396D JUMPI DUP6 SWAP9 POP JUMPDEST POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD DUP3 SWAP2 PUSH2 0x39C3 SWAP2 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3B9E AND JUMP JUMPDEST SWAP1 POP PUSH1 0xA DUP2 GT PUSH2 0x39E4 JUMPI PUSH2 0x39DD DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD PUSH2 0x3A12 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x3531 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0x743033787F4738FF4D6A7225CE2BD0977EE5F86B91A902A58F5E4D0B297B4644 SWAP1 PUSH2 0x3A54 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x5B54 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3AA0 SWAP2 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3AE7 SWAP1 DUP7 SWAP1 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 SWAP1 PUSH1 0x20 ADD PUSH2 0x56C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 EQ ISZERO PUSH2 0x3B13 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x3B44 JUMP JUMPDEST DUP5 ISZERO PUSH2 0x3B44 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3B41 SWAP1 DUP4 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x34D7 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x3B88 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP2 SWAP1 PUSH2 0x5925 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x3B94 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3BC2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP2 SWAP1 PUSH2 0x5925 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3BE5 PUSH4 0x1E13380 PUSH2 0xE69 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3C02 PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3531 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3C21 DUP2 PUSH2 0xE69 DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0x0 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP5 DUP6 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP12 AND DUP6 EQ ISZERO PUSH2 0x3C7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AB6 JUMP JUMPDEST CALLVALUE SWAP7 POP DUP8 ISZERO PUSH2 0x3D25 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x3CAF SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3CC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3CDD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3CEB DUP5 DUP10 PUSH2 0x2A43 JUMP JUMPDEST DUP8 DUP4 GT ISZERO PUSH2 0x3D20 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x3D20 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP12 DUP8 SUB SWAP1 PUSH2 0x36FA JUMP JUMPDEST PUSH2 0x3D5A JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3237 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3D5A SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH2 0x36FA JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3D95 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x647 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3D95 SWAP2 DUP14 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH2 0x42B8 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3E77 JUMPI DUP7 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3DAA JUMPI POP DUP2 DUP8 LT ISZERO JUMPDEST ISZERO PUSH2 0x3E42 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3DEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3DFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3239 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3E38 SWAP5 POP DUP10 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP6 SWAP1 PUSH2 0x36FA JUMP JUMPDEST DUP2 DUP8 SUB SWAP7 POP PUSH2 0x3E77 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3239 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3E77 SWAP2 DUP8 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x42B8 JUMP JUMPDEST POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x3EA5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A76 JUMP JUMPDEST PUSH2 0x3EAD PUSH2 0x303F JUMP JUMPDEST PUSH2 0x3EBA PUSH2 0x1C46 PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST SWAP1 POP PUSH2 0x3ED8 DUP2 PUSH2 0xE69 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x3F20 JUMPI PUSH2 0x3F1B PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP PUSH2 0x42B8 JUMP JUMPDEST PUSH2 0x3F8A JUMP JUMPDEST PUSH1 0x17 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3F84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3FB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5956 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3FE0 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH2 0x4011 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xB4C03061FB5B7FED76389D5AF8F2E0DDB09F8C70D1333ABBB62582835E10ACCB SWAP1 PUSH2 0x4053 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x5B54 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3AA0 SWAP2 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x40B4 JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x40C9 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x40C9 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0xCAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5B06 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x40F4 JUMPI POP PUSH1 0x0 PUSH2 0xF6E JUMP JUMPDEST DUP3 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x4108 JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ JUMPDEST ISZERO PUSH2 0x4125 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AC6 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x4132 JUMPI INVALID JUMPDEST SDIV EQ PUSH2 0xCAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AC6 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x416F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5B36 JUMP JUMPDEST DUP2 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x4183 JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP4 EQ JUMPDEST ISZERO PUSH2 0x41A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A16 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x41AB JUMPI INVALID JUMPDEST SDIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x41C9 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x41DE JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x41DE JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0xCAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5986 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x4216 SWAP2 SWAP1 PUSH2 0x5706 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4253 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4258 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP4 SWAP1 PUSH2 0x427D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP2 SWAP1 PUSH2 0x5925 JUMP JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x2117 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x4299 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4837 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0xFEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP2 SWAP1 PUSH2 0x5925 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2117 SWAP1 DUP7 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x371C SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0x576F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xF6E DUP2 PUSH2 0x5CC3 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xF6E DUP2 PUSH2 0x5CC3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x436F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x439A PUSH2 0x4395 DUP3 PUSH2 0x5BA3 JUMP JUMPDEST PUSH2 0x5B7D JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x43BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3495 JUMPI DUP2 PUSH2 0x43D5 DUP9 DUP3 PUSH2 0x4480 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x43C2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x43FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x440A PUSH2 0x4395 DUP3 PUSH2 0x5BA3 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x4430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3495 JUMPI DUP2 PUSH2 0x4446 DUP9 DUP3 PUSH2 0x451B JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4433 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xF6E DUP2 PUSH2 0x5CD7 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xF6E DUP2 PUSH2 0x5CD7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xF6E DUP2 PUSH2 0x5CE0 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xF6E DUP2 PUSH2 0x5CE0 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x449D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x436F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x44DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x44EB PUSH2 0x4395 DUP3 PUSH2 0x5BC3 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x4507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4512 DUP4 DUP3 DUP5 PUSH2 0x5C49 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x452E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4539 PUSH2 0x100 PUSH2 0x5B7D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4547 DUP5 DUP5 PUSH2 0x4475 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x4558 DUP5 DUP5 DUP4 ADD PUSH2 0x445F JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x456C DUP5 DUP3 DUP6 ADD PUSH2 0x4318 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x4580 DUP5 DUP3 DUP6 ADD PUSH2 0x4318 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x4594 DUP5 DUP3 DUP6 ADD PUSH2 0x4318 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x45A8 DUP5 DUP3 DUP6 ADD PUSH2 0x4475 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x45BC DUP5 DUP3 DUP6 ADD PUSH2 0x4475 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x45D0 DUP5 DUP3 DUP6 ADD PUSH2 0x4475 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP5 DUP5 PUSH2 0x4318 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x460C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP5 DUP5 PUSH2 0x4323 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x462B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4637 DUP6 DUP6 PUSH2 0x4318 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4648 DUP6 DUP3 DUP7 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4673 DUP7 DUP7 PUSH2 0x4318 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4684 DUP7 DUP3 DUP8 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4695 DUP7 DUP3 DUP8 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46BE DUP6 DUP6 PUSH2 0x4318 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4648 DUP6 DUP3 DUP7 ADD PUSH2 0x445F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46EE DUP6 DUP6 PUSH2 0x4318 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4648 DUP6 DUP3 DUP7 ADD PUSH2 0x4475 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4720 DUP7 DUP7 PUSH2 0x4318 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4731 DUP7 DUP3 DUP8 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4695 DUP7 DUP3 DUP8 ADD PUSH2 0x445F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4758 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x476E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x477A DUP8 DUP3 DUP9 ADD PUSH2 0x432E JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4798 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47A4 DUP8 DUP3 DUP9 ADD PUSH2 0x432E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1150 DUP5 DUP3 DUP6 ADD PUSH2 0x4376 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x47F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x480D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46BE DUP6 DUP3 DUP7 ADD PUSH2 0x43EB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x482B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP5 DUP5 PUSH2 0x445F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP5 DUP5 PUSH2 0x446A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x487E DUP12 DUP12 PUSH2 0x4475 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x488F DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x48A0 DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x48B1 DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x48C2 DUP12 DUP3 DUP13 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x48D3 DUP12 DUP3 DUP13 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x48E4 DUP12 DUP3 DUP13 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x490C DUP12 DUP3 DUP13 ADD PUSH2 0x44CC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x493C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4948 DUP14 DUP14 PUSH2 0x4475 JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x4959 DUP14 DUP3 DUP15 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x496A DUP14 DUP3 DUP15 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x497B DUP14 DUP3 DUP15 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x498C DUP14 DUP3 DUP15 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x499D DUP14 DUP3 DUP15 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x49AE DUP14 DUP3 DUP15 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x49BF DUP14 DUP3 DUP15 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x49E8 DUP14 DUP3 DUP15 ADD PUSH2 0x448B JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4A19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4A25 DUP12 DUP12 PUSH2 0x4475 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x4A36 DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x4A47 DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x4A58 DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x4A69 DUP12 DUP3 DUP13 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x4A7A DUP12 DUP3 DUP13 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x48E4 DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4AB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1150 DUP5 DUP3 DUP6 ADD PUSH2 0x44CC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4AD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4AE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46BE DUP6 DUP3 DUP7 ADD PUSH2 0x44CC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP5 DUP5 PUSH2 0x4475 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP5 DUP5 PUSH2 0x4480 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46EE DUP6 DUP6 PUSH2 0x4475 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4B6E DUP6 DUP6 PUSH2 0x4480 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4648 DUP6 DUP3 DUP7 ADD PUSH2 0x4480 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4B94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4BA0 DUP7 DUP7 PUSH2 0x4475 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4BB1 DUP7 DUP3 DUP8 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4695 DUP7 DUP3 DUP8 ADD PUSH2 0x4318 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4BD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4BE4 DUP8 DUP8 PUSH2 0x4475 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4BF5 DUP8 DUP3 DUP9 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4C06 DUP8 DUP3 DUP9 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4C17 DUP8 DUP3 DUP9 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4C3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C47 DUP9 DUP9 PUSH2 0x4475 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4C58 DUP9 DUP3 DUP10 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4C69 DUP9 DUP3 DUP10 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4C7A DUP9 DUP3 DUP10 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x4C8B DUP9 DUP3 DUP10 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4CB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4CBD DUP10 DUP10 PUSH2 0x4480 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x4CCE DUP10 DUP3 DUP11 ADD PUSH2 0x4480 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x4CDF DUP10 DUP3 DUP11 ADD PUSH2 0x4480 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x4CF0 DUP10 DUP3 DUP11 ADD PUSH2 0x4480 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x4D01 DUP10 DUP3 DUP11 ADD PUSH2 0x4480 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x4D12 DUP10 DUP3 DUP11 ADD PUSH2 0x4480 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4D3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4D46 DUP11 DUP11 PUSH2 0x4475 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x4D57 DUP11 DUP3 DUP12 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x4D68 DUP11 DUP3 DUP12 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x4D79 DUP11 DUP3 DUP12 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x4D8A DUP11 DUP3 DUP12 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x4D9B DUP11 DUP3 DUP12 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x4DAC DUP11 DUP3 DUP12 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DC7 DUP4 DUP4 PUSH2 0x4DFF JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DC7 DUP4 DUP4 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DE7 DUP4 DUP4 PUSH2 0x55FE JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x4DF9 DUP2 PUSH2 0x5C38 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4DF9 DUP2 PUSH2 0x5C09 JUMP JUMPDEST PUSH2 0x4DF9 PUSH2 0x4E14 DUP3 PUSH2 0x5C09 JUMP JUMPDEST PUSH2 0x5C81 JUMP JUMPDEST PUSH2 0x4E22 DUP2 PUSH2 0x5BF0 JUMP JUMPDEST PUSH2 0x4E2C DUP2 DUP5 PUSH2 0xE79 JUMP JUMPDEST SWAP3 POP PUSH2 0x4E37 DUP3 PUSH2 0xF86 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFEC JUMPI DUP2 MLOAD PUSH2 0x4E4F DUP8 DUP3 PUSH2 0x4DBB JUMP JUMPDEST SWAP7 POP PUSH2 0x4E5A DUP4 PUSH2 0x5BEA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4E3B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E70 DUP3 PUSH2 0x5BF6 JUMP JUMPDEST PUSH2 0x4E7A DUP2 DUP6 PUSH2 0x5C00 JUMP JUMPDEST SWAP4 POP PUSH2 0x4E85 DUP4 PUSH2 0x5BEA JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4EB3 JUMPI DUP2 MLOAD PUSH2 0x4E9D DUP9 DUP3 PUSH2 0x4DCF JUMP JUMPDEST SWAP8 POP PUSH2 0x4EA8 DUP4 PUSH2 0x5BEA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4E89 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EC9 DUP3 PUSH2 0x5BF6 JUMP JUMPDEST PUSH2 0x4ED3 DUP2 DUP6 PUSH2 0x5C00 JUMP JUMPDEST SWAP4 POP PUSH2 0x4EDE DUP4 PUSH2 0x5BEA JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4EB3 JUMPI DUP2 MLOAD PUSH2 0x4EF6 DUP9 DUP3 PUSH2 0x4DDB JUMP JUMPDEST SWAP8 POP PUSH2 0x4F01 DUP4 PUSH2 0x5BEA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4EE2 JUMP JUMPDEST PUSH2 0x4F15 DUP2 PUSH2 0x5BFA JUMP JUMPDEST PUSH2 0x4F1F DUP2 DUP5 PUSH2 0xE79 JUMP JUMPDEST SWAP3 POP PUSH2 0x4F2A DUP3 PUSH2 0xF86 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFEC JUMPI DUP2 MLOAD PUSH2 0x4F42 DUP8 DUP3 PUSH2 0x4DCF JUMP JUMPDEST SWAP7 POP PUSH2 0x4F4D DUP4 PUSH2 0x5BEA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4F2E JUMP JUMPDEST PUSH2 0x4DF9 DUP2 PUSH2 0x5C14 JUMP JUMPDEST PUSH2 0x4DF9 PUSH2 0x4F6D DUP3 PUSH2 0x5C14 JUMP JUMPDEST PUSH2 0x5C8C JUMP JUMPDEST PUSH2 0x4DF9 DUP2 PUSH2 0xF86 JUMP JUMPDEST PUSH2 0x4DF9 PUSH2 0x4F87 DUP3 PUSH2 0xF86 JUMP JUMPDEST PUSH2 0xF86 JUMP JUMPDEST PUSH2 0x4DF9 PUSH2 0x4F87 DUP3 PUSH2 0x5C19 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FA3 DUP3 PUSH2 0x5BF6 JUMP JUMPDEST PUSH2 0x4FAD DUP2 DUP6 PUSH2 0x5C00 JUMP JUMPDEST SWAP4 POP PUSH2 0x4FBD DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5C55 JUMP JUMPDEST PUSH2 0x4FC6 DUP2 PUSH2 0x5CAD JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FDB DUP3 PUSH2 0x5BF6 JUMP JUMPDEST PUSH2 0x4FE5 DUP2 DUP6 PUSH2 0xE79 JUMP JUMPDEST SWAP4 POP PUSH2 0x4FF5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5C55 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x500C PUSH1 0xC DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH12 0x636F6C6C20746F6F206C6F77 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5034 PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5052 PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5070 PUSH1 0x26 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50B8 PUSH1 0x1B DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50F1 PUSH1 0x21 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5134 PUSH1 0xE DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x515E PUSH1 0x3A DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x416464726573733A20756E61626C6520746F2073656E642076616C75652C2072 DUP2 MSTORE PUSH32 0x6563697069656E74206D61792068617665207265766572746564000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51BD PUSH1 0x1 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51DA PUSH1 0x1D DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E6365000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5213 PUSH1 0x12 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH18 0x6E6F7420656E6F7567682062616C616E6365 PUSH1 0x70 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5241 PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x525F PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x527D PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x529B PUSH1 0x21 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52DE PUSH1 0x15 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x530F PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x532D PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x534B PUSH1 0xF DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5376 PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5394 PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53B2 PUSH1 0x21 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53F5 PUSH1 0xC DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x541D PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x543B PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5459 PUSH1 0x27 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206D756C7469706C69636174696F6E206F DUP2 MSTORE PUSH7 0x766572666C6F77 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54A2 PUSH1 0x1D DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x696E76616C6964207261746520636F6C6C61746572616C20746F6B656E000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E PUSH1 0x0 DUP4 PUSH2 0xE79 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54E8 PUSH1 0xA DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH10 0x37B7363CA830BAB9B2B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x550E PUSH1 0xC DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5536 PUSH1 0x24 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 DUP2 MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x557C PUSH1 0x18 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x34303120757365206F66206578697374696E67206C6F616E0000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x55B5 PUSH1 0x1 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x55D2 PUSH1 0x20 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206279207A65726F DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x5610 DUP5 DUP3 PUSH2 0x4F72 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x5623 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4F58 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x5636 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4DFF JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x5649 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4DFF JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x565C PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x4DFF JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x566F PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4F72 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x5682 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x4F72 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x3754 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x4DF9 DUP2 PUSH2 0x5C32 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56AA DUP3 DUP6 PUSH2 0x4E08 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x56BA DUP3 DUP5 PUSH2 0x4F61 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56D0 DUP3 DUP6 PUSH2 0x4E08 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x56E0 DUP3 DUP5 PUSH2 0x4F7B JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56F6 DUP3 DUP6 PUSH2 0x4F8C JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x56E0 DUP3 DUP5 PUSH2 0x4F7B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCAA DUP3 DUP5 PUSH2 0x4FD0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x54CE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xF6E DUP3 DUP5 PUSH2 0x4DFF JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xF6E DUP3 DUP5 PUSH2 0x4DF0 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x5747 DUP3 DUP6 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0xCAA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4DFF JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x5762 DUP3 DUP6 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0xCAA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4DF0 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x577D DUP3 DUP7 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x578A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x1150 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x57A5 DUP3 DUP9 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x57B2 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x57BF PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x57CC PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x3C21 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4F58 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x57E7 DUP3 DUP10 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x57F4 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x5801 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x580E PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x581B PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x5828 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4F72 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x5841 DUP3 DUP6 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0xCAA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x585C DUP3 DUP7 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x5869 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x1150 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4DF0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCAA DUP2 DUP5 PUSH2 0x4E65 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCAA DUP2 DUP5 PUSH2 0x4EBE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xF6E DUP3 DUP5 PUSH2 0x4F58 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xF6E DUP3 DUP5 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x1C0 DUP2 ADD PUSH2 0x58C3 DUP3 DUP11 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x58D0 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x58DD PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4F58 JUMP JUMPDEST PUSH2 0x58EA PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x58F7 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4E19 JUMP JUMPDEST PUSH2 0x5905 PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4F0C JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x1A0 DUP4 ADD MSTORE PUSH2 0x5918 DUP2 DUP5 PUSH2 0x4F98 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCAA DUP2 DUP5 PUSH2 0x4F98 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x4FFF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5027 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5045 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5063 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x50AB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x50E4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5127 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5151 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x51B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x51CD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5206 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5234 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5252 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5270 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x528E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x52D1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5302 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5320 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x533E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5369 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5387 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x53A5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x53E8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5410 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x542E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x544C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5495 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x54DB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5501 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5529 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x556F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x55A8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x55C5 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x5841 DUP3 DUP6 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x5B62 DUP3 DUP7 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x578A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xF6E DUP3 DUP5 PUSH2 0x5695 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5B9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5BB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5BD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST POP PUSH1 0x4 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x5 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x5C26 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x5C09 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C70 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C58 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x3754 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x5C97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x5CA2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x5CBD JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x5CB7 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x5CCC DUP2 PUSH2 0x5C09 JUMP JUMPDEST DUP2 EQ PUSH2 0x2506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5CCC DUP2 PUSH2 0x5C14 JUMP JUMPDEST PUSH2 0x5CCC DUP2 PUSH2 0xF86 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 STATICCALL PUSH1 0xC4 PUSH18 0x78AD0E720462A422164C216505B66504EF87 0x4A 0xEB 0xAC 0x25 0x5E SWAP14 EXTCODECOPY 0xF9 0xC3 PUSH20 0x6C6578706572696D656E74616CF564736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "217:2847:6:-;;;493:1:143;661:55;;;;697:12:142;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;217:2847:6;;780:87:137;853:10;780:87;:::o;217:2847:6:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106103d95760003560e01c80637e37c08c116101fd578063ca37e66611610118578063e41b07e3116100ab578063f2fde38b1161007a578063f2fde38b14610a98578063f6b69f9914610ab8578063f851a44014610acb578063fb5f83df14610ae0578063ffa1ad7414610af3576103d9565b8063e41b07e314610a23578063e697d2ee14610a43578063eebc508114610a63578063ef2b0b3914610a83576103d9565b8063d8f06c83116100e7578063d8f06c83146109a3578063d97206a4146109c3578063dd62ed3e146109e3578063e3cded6114610a03576103d9565b8063ca37e66614610939578063cb926cb31461094e578063d65a50211461096e578063d759dbeb1461098e576103d9565b806395d89b4111610190578063a9059cbb1161015f578063a9059cbb146108c4578063b9fe1a8f146108e4578063ba0e43bf14610904578063be19421714610919576103d9565b806395d89b41146108655780639bda3a981461087a5780639dc29fac1461088f5780639fd0506d146108af576103d9565b80638da5cb5b116101cc5780638da5cb5b146108115780638ee6c4e6146108265780638f32d59b1461083b5780638fb807c514610850576103d9565b80637e37c08c146107b25780637ff9b596146107c7578063829b38f4146107dc5780638325a1c0146107fc576103d9565b80632ea295fa116102f857806356e07d701161028b578063704b6c021161025a578063704b6c021461072857806370a08231146107485780637288b34414610768578063797bf385146107885780637b7933b41461079d576103d9565b806356e07d70146106af578063612ef80b146106c4578063631a3ef8146106d95780636b40cd40146106f9576103d9565b8063330691ac116102c7578063330691ac1461064557806340c10f191461065a57806344a4a0031461067a57806354198ce91461068f576103d9565b80632ea295fa146105db5780632f6b600d146105ee578063313ce567146106035780633291c11a14610625576103d9565b806318160ddd1161037057806320f6d07c1161033f57806320f6d07c1461056557806323b872dd1461057a57806328a02f191461059a5780632d88af4a146105bb576103d9565b806318160ddd1461050457806318498b1d146105195780631d0806ae1461053b5780631f68f20a14610550576103d9565b806306fdde03116103ac57806306fdde0314610480578063095ea7b3146104a257806309ec6b6b146104cf57806312416898146104e4576103d9565b806304797930146103e85780630506af041461041e57806306947a3a1461043e57806306b3efd614610460575b3480156103e557600080fd5b50005b3480156103f457600080fd5b50610408610403366004614b7f565b610b08565b60405161041591906158a6565b60405180910390f35b34801561042a57600080fd5b506104086104393660046146ff565b610cb1565b34801561044a57600080fd5b50610453610d83565b604051610415919061571d565b34801561046c57600080fd5b5061040861047b3660046145dc565b610d92565b34801561048c57600080fd5b50610495610e7e565b6040516104159190615925565b3480156104ae57600080fd5b506104c26104bd3660046146cf565b610f09565b6040516104159190615898565b3480156104db57600080fd5b50610408610f74565b3480156104f057600080fd5b506104086104ff366004614af4565b610f89565b34801561051057600080fd5b50610408610fb4565b34801561052557600080fd5b50610539610534366004614c23565b610fba565b005b34801561054757600080fd5b50610408610ff4565b34801561055c57600080fd5b50610408610ffa565b34801561057157600080fd5b50610408611000565b34801561058657600080fd5b506104c2610595366004614652565b61108f565b6105ad6105a83660046149fc565b611158565b604051610415929190615b46565b3480156105c757600080fd5b506105396105d63660046145dc565b61137d565b6105ad6105e9366004614855565b6113c3565b3480156105fa57600080fd5b506104536116a3565b34801561060f57600080fd5b506106186116b2565b6040516104159190615b6f565b34801561063157600080fd5b50610408610640366004614af4565b6116bb565b34801561065157600080fd5b506104086116cd565b34801561066657600080fd5b506104086106753660046146cf565b6116d3565b34801561068657600080fd5b50610408611714565b34801561069b57600080fd5b506104086106aa3660046145dc565b611726565b3480156106bb57600080fd5b506104086117c7565b3480156106d057600080fd5b506104086117cd565b3480156106e557600080fd5b506104086106f4366004614b7f565b6117fe565b34801561070557600080fd5b50610719610714366004614bc2565b61199e565b60405161041593929190615b54565b34801561073457600080fd5b506105396107433660046145dc565b611aaf565b34801561075457600080fd5b506104086107633660046145dc565b611af5565b34801561077457600080fd5b50610408610783366004614b30565b611b10565b34801561079457600080fd5b50610453611bf3565b3480156107a957600080fd5b50610408611c07565b3480156107be57600080fd5b50610408611c0d565b3480156107d357600080fd5b50610408611c13565b3480156107e857600080fd5b506104086107f7366004614af4565b611c51565b34801561080857600080fd5b50610408611cd1565b34801561081d57600080fd5b50610453611cdd565b34801561083257600080fd5b50610453611cec565b34801561084757600080fd5b506104c2611cfb565b34801561085c57600080fd5b50610408611d21565b34801561087157600080fd5b50610495611d51565b34801561088657600080fd5b50610453611dac565b34801561089b57600080fd5b506104086108aa3660046146cf565b611dbb565b3480156108bb57600080fd5b50610453611e2f565b3480156108d057600080fd5b506104c26108df3660046146cf565b611e3e565b3480156108f057600080fd5b506104086108ff366004614af4565b611e4e565b34801561091057600080fd5b50610408611e59565b34801561092557600080fd5b506104c2610934366004614a8b565b611e5f565b34801561094557600080fd5b50610453611ee1565b34801561095a57600080fd5b506105396109693660046145dc565b611ef0565b34801561097a57600080fd5b50610408610989366004614af4565b611f36565b34801561099a57600080fd5b50610408611f49565b3480156109af57600080fd5b506105396109be3660046147e4565b611f4f565b3480156109cf57600080fd5b506105396109de366004614d1f565b61211e565b3480156109ef57600080fd5b506104086109fe366004614618565b612225565b348015610a0f57600080fd5b50610539610a1e366004614abf565b612250565b348015610a2f57600080fd5b50610408610a3e3660046145dc565b6122f5565b348015610a4f57600080fd5b50610539610a5e366004614742565b612307565b348015610a6f57600080fd5b50610408610a7e3660046145dc565b6124b8565b348015610a8f57600080fd5b506104086124d3565b348015610aa457600080fd5b50610539610ab33660046145dc565b6124d9565b6105ad610ac636600461491c565b612509565b348015610ad757600080fd5b506104536125d9565b610408610aee36600461469f565b6125e8565b348015610aff57600080fd5b50610408612632565b60008315610caa576001600160a01b038216610b2d576017546001600160a01b031691505b600060106000846001604051602001610b4792919061569e565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506001600160a01b039182169363e762319f936101009091049092169187918a91869163ca74a5d991610bb8918a91016158a6565b60206040518083038186803b158015610bd057600080fd5b505afa158015610be4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c089190810190614b12565b60016040518663ffffffff1660e01b8152600401610c2a959493929190615797565b60206040518083038186803b158015610c4257600080fd5b505afa158015610c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7a9190810190614b12565b9150610c8e82610c88611d21565b86612637565b9350610c9c91506126b09050565b821115610ca857600091505b505b9392505050565b6000600160005414610cde5760405162461bcd60e51b8152600401610cd590615af6565b60405180910390fd5b60026000558115610cf957610cf2836126e6565b9050610d05565b610d028361288c565b90505b8015610d7757601754604051632e1a7d4d60e01b81526001600160a01b0390911690632e1a7d4d90610d3b9084906004016158a6565b600060405180830381600087803b158015610d5557600080fd5b505af1158015610d69573d6000803e3d6000fd5b50505050610d778482612a43565b60016000559392505050565b6016546001600160a01b031681565b601c5460009081906001600160a01b031615610e2d57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690610dda9030908790600401615739565b60206040518083038186803b158015610df257600080fd5b505afa158015610e06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2a9190810190614b12565b90505b610e75670de0b6b3a7640000610e69610e44611c13565b610e5d85610e5189611af5565b9063ffffffff612ae416565b9063ffffffff612b0916565b9063ffffffff612b4316565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610f015780601f10610ed657610100808354040283529160200191610f01565b820191906000526020600020905b815481529060010190602001808311610ee457829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610f629086906158a6565b60405180910390a35060015b92915050565b6000610f836104ff6000612b85565b90505b90565b600080610f94611000565b90508015610fae57610fa68184611b10565b915050610e79565b50919050565b60155490565b6000610fc88686868661199e565b5091505081811015610fec5760405162461bcd60e51b8152600401610cd590615936565b505050505050565b600e5481565b60055481565b6016546004805460405163250f447f60e11b81526000936001600160a01b0390811693634a1e88fe9361103f9330936101009092049091169101615739565b60206040518083038186803b15801561105757600080fd5b505afa15801561106b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f839190810190614b12565b60165460405163115dd4b160e01b8152600091611150918691869186916001600160a01b03169063115dd4b1906110ca90339060040161572b565b60206040518083038186803b1580156110e257600080fd5b505afa1580156110f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061111a9190810190614837565b611147576001600160a01b038816600090815260146020908152604080832033845290915290205461114b565b6000195b612bbf565b949350505050565b60008060016000541461117d5760405162461bcd60e51b8152600401610cd590615af6565b600260005561118a612d92565b6111978989898988610fba565b6001600160a01b0386166111b4576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156111e75760405162461bcd60e51b8152600401610cd590615a06565b8915806111fc5750336001600160a01b038616145b6112185760405162461bcd60e51b8152600401610cd590615b16565b6001600160a01b0386166000908152601260205260409020541561125b576001600160a01b03861660009081526012602052604090205487111561125b57600080fd5b60045461010090046001600160a01b0316600090815260126020526040902054156112ac5760045461010090046001600160a01b03166000908152601260205260409020548811156112ac57600080fd5b60006112b987898b612e12565b9050806112d85760405162461bcd60e51b8152600401610cd590615a36565b6112e06142dc565b6112e86142fa565b3082526001600160a01b038816602080840182905260408401919091528101839052606081018b9052608081018a905261132061303f565b6113318c82600160200201516130e5565b825260208201526113526f4b3b4ca85a86c47a098a2240000000008d612b43565b9b506113648d60008e8c86868c613134565b6001600055909e909d509b505050505050505050505050565b611385611cfb565b6113a15760405162461bcd60e51b8152600401610cd590615a96565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806001600054146113e85760405162461bcd60e51b8152600401610cd590615af6565b60026000558861140a5760405162461bcd60e51b8152600401610cd590615b26565b611412612d92565b6001600160a01b03861660009081526012602052604090205415611455576001600160a01b03861660009081526012602052604090205487111561145557600080fd5b34158061146157508634145b801561147557508615158061147557508915155b801561149c57506001600160a01b03861615158061149257503415155b8061149c57508915155b80156114b857508915806114b85750336001600160a01b038616145b6114d45760405162461bcd60e51b8152600401610cd5906159b6565b6001600160a01b0386166114f1576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156115245760405162461bcd60e51b8152600401610cd590615946565b61152c61303f565b6115346142dc565b61153c6142fa565b3082526001600160a01b03878116602080850191909152908716604084015281018b90526115748b61156e6000612b85565b8c612637565b83600060200201846002602002018560016020020192909252919052528881600460200201818152505061168b8c8c601660009054906101000a90046001600160a01b03166001600160a01b031663ca74a5d9601060008e60016040516020016115df92919061569e565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020546040518263ffffffff1660e01b815260040161162391906158a6565b60206040518083038186803b15801561163b57600080fd5b505afa15801561164f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116739190810190614b12565b8b868660405180602001604052806000815250613134565b6001600055909d909c509a5050505050505050505050565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b60006001600054146116f75760405162461bcd60e51b8152600401610cd590615af6565b60026000556117068383613393565b90505b600160005592915050565b6000610f83611721611000565b61349f565b600080827f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb660001b60405160200161175f9291906156c4565b604051602081830303815290604052805190602001209050610e758160136000866001600160a01b03166001600160a01b03168152602001908152602001600020546117a9611c13565b6001600160a01b0387166000908152601160205260409020546134d7565b600a5481565b6000806117da6000612b85565b905060006117e6611000565b9050808211156117f95790039050610f86565b505090565b60008315610caa57600061181485610c88611d21565b925050506118206126b0565b8111610ca8576001600160a01b038316611843576017546001600160a01b031692505b60006010600085600160405160200161185d92919061569e565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b815292945061199593600a936001600160a01b03938416936325decac09361010090930416918a918991869163ca74a5d9916118d3918c91016158a6565b60206040518083038186803b1580156118eb57600080fd5b505afa1580156118ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119239190810190614b12565b60016040518663ffffffff1660e01b8152600401611945959493929190615797565b60206040518083038186803b15801561195d57600080fd5b505afa158015611971573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e519190810190614b12565b92505050610caa565b600080806001600160a01b0384166119bf576017546001600160a01b031693505b60006119cc858789612e12565b90506119d888826130e5565b90945091506119e56126b0565b8411156119fc575060009250829150819050611aa5565b611a0c878563ffffffff612ae416565b6016546004805460405163d67f707760e01b8152939a506001600160a01b039283169363d67f707793611a519361010090930416918a918d918d918a918d91016157d9565b60206040518083038186803b158015611a6957600080fd5b505afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aa19190810190614b12565b9250505b9450945094915050565b611ab7611cfb565b611ad35760405162461bcd60e51b8152600401610cd590615a96565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60008215801590611b215750828210155b15610f6e57611bec701d6329f1c35ca4bfabb9f5610000000000610e69611bd668056bc75e2d63100000601660009054906101000a90046001600160a01b03166001600160a01b0316634699f8466040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9957600080fd5b505afa158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bd19190810190614b12565b613531565b610e5d611be38888613573565b610e5d8961349f565b9050610f6e565b60045461010090046001600160a01b031681565b600d5481565b60085481565b600f546000908190426001600160581b03908116911614611c3a57611c366135a5565b9150505b611c4b611c4682612b85565b613671565b91505090565b600080611c7061016d610e69601c600b54612b0990919063ffffffff16565b90506000611c8d68056bc75e2d631000008363ffffffff61353116565b90506000611caa68056bc75e2d63100000610e6984610e5d6117cd565b9050611cc885610e6983670de0b6b3a764000063ffffffff612b0916565b95945050505050565b6000610f8360006136a0565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316611d126136f6565b6001600160a01b031614905090565b600f546000908190426001600160581b03908116911614611d4857611d446135a5565b9150505b611c4b81612b85565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610f015780601f10610ed657610100808354040283529160200191610f01565b6018546001600160a01b031681565b6000600160005414611ddf5760405162461bcd60e51b8152600401610cd590615af6565b6002600055611ded8261288c565b9050801561170957611709600460019054906101000a90046001600160a01b03168483604051806040016040528060018152602001603560f81b8152506136fa565b601b546001600160a01b031681565b6000610caa338484600019612bbf565b6000610f6e826136a0565b60095481565b60008082604051602001611e739190615706565b6040516020818303038152906040528051906020012090506000817fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001611ec09291906156ea565b60408051808303601f19018152919052805160209091012054949350505050565b601a546001600160a01b031681565b611ef8611cfb565b611f145760405162461bcd60e51b8152600401610cd590615a96565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f6e6104ff83610e516000612b85565b60075481565b611f57611cfb565b80611f6c57506019546001600160a01b031633145b611f885760405162461bcd60e51b8152600401610cd590615a96565b60045460609061010090046001600160a01b031660005b84518110156120125781858281518110611fb557fe5b6020026020010151606001906001600160a01b031690816001600160a01b03168152505083611fe7576224ea00611fea565b60005b62ffffff16858281518110611ffb57fe5b602090810291909101015160e00152600101611f9f565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e90612043908790600401615887565b600060405180830381600087803b15801561205d57600080fd5b505af1158015612071573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261209991908101906147b0565b915060005b8251811015612117578281815181106120b357fe5b6020026020010151601060008784815181106120cb57fe5b602002602001015160800151876040516020016120e992919061569e565b60408051601f198184030181529181528151602092830120835290820192909252016000205560010161209e565b5050505050565b612126611cfb565b8061213b57506019546001600160a01b031633145b6121575760405162461bcd60e51b8152600401610cd590615a96565b68056bc75e2d63100000612171878963ffffffff612ae416565b111561218f5760405162461bcd60e51b8152600401610cd590615a26565b68056bc75e2d631000006121a9858763ffffffff612ae416565b11156121c75760405162461bcd60e51b8152600401610cd590615a26565b68056bc75e2d6310000083111580156121e9575068056bc75e2d631000008211155b6122055760405162461bcd60e51b8152600401610cd590615a56565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b0316331461227a5760405162461bcd60e51b8152600401610cd590615ae6565b60008260405160200161228d9190615706565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f26040516020016122d59291906156ea565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b61230f611cfb565b8061232457506019546001600160a01b031633145b6123405760405162461bcd60e51b8152600401610cd590615a96565b82811461235f5760405162461bcd60e51b8152600401610cd590615996565b60408051848152602080860282010190915260609084801561238b578160200160208202803883390190505b50905060005b8481101561244e5760008686838181106123a757fe5b90506020020160206123bc91908101906145dc565b8585848181106123c857fe5b90506020020160206123dd9190810190614819565b6040516020016123ee92919061569e565b6040516020818303038152906040528051906020012060001c9050601060008281526020019081526020016000205483838151811061242957fe5b6020908102919091018101919091526000918252601090526040812055600101612391565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a9061247f908490600401615876565b600060405180830381600087803b15801561249957600080fd5b505af11580156124ad573d6000803e3d6000fd5b505050505050505050565b6001600160a01b031660009081526011602052604090205490565b600b5481565b6124e1611cfb565b6124fd5760405162461bcd60e51b8152600401610cd590615a96565b6125068161375a565b50565b6000806001600160a01b038516156125805760165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf4489061254d908a908990600401615739565b600060405180830381600087803b15801561256757600080fd5b505af115801561257b573d6000803e3d6000fd5b505050505b6125c68c8c8c8c8c8c8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061115892505050565b915091509a509a98505050505050505050565b6019546001600160a01b031681565b600060016000541461260c5760405162461bcd60e51b8152600401610cd590615af6565b600260005581156126285761262183346137dc565b9050611709565b6126218334613393565b600681565b60008060006126468686613865565b925061269361267b670de0b6b3a7640000611bd16b0a3098c68eb9427db8000000610e6983610e5d8a8c63ffffffff612b0916565b610e6988670de0b6b3a764000063ffffffff612b0916565b90506126a5818763ffffffff61353116565b915093509350939050565b600480546040516370a0823160e01b81526000926101009092046001600160a01b0316916370a082319161103f9130910161571d565b601c54604051636822955360e11b815260009182916001600160a01b039091169063d0452aa69061271d9030903390600401615754565b60206040518083038186803b15801561273557600080fd5b505afa158015612749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061276d9190810190614b12565b90508261278961277c33611af5565b839063ffffffff612ae416565b10156127a75760405162461bcd60e51b8152600401610cd5906159d6565b8015612887578281101561282057601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec906127e99030908590339060040161584e565b600060405180830381600087803b15801561280357600080fd5b505af1158015612817573d6000803e3d6000fd5b50505050612887565b601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec906128549030908790339060040161584e565b600060405180830381600087803b15801561286e57600080fd5b505af1158015612882573d6000803e3d6000fd5b505050505b610e75835b6000816128ab5760405162461bcd60e51b8152600401610cd590615aa6565b6128b433611af5565b8211156128e85760001982146128dc5760405162461bcd60e51b8152600401610cd590615a66565b6128e533611af5565b91505b6128f061303f565b60006128ff611c466000612b85565b9050600061291f670de0b6b3a7640000610e69868563ffffffff612b0916565b9050600061292b6126b0565b9050819350808411156129505760405162461bcd60e51b8152600401610cd5906159e6565b601c546000906001600160a01b0316156129e957601c54604051636822955360e11b81526001600160a01b039091169063d0452aa6906129969030903390600401615754565b60206040518083038186803b1580156129ae57600080fd5b505afa1580156129c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129e69190810190614b12565b90505b33600090815260136020526040812054612a09908363ffffffff612ae416565b90506000612a1d828963ffffffff61353116565b9050612a2b3389898961397b565b50612a3833838389613ab1565b505050505050919050565b80471015612a635760405162461bcd60e51b8152600401610cd5906159c6565b6000826001600160a01b031682604051612a7c90615712565b60006040518083038185875af1925050503d8060008114612ab9576040519150601f19603f3d011682016040523d82523d6000602084013e612abe565b606091505b5050905080612adf5760405162461bcd60e51b8152600401610cd5906159a6565b505050565b600082820183811015610caa5760405162461bcd60e51b8152600401610cd590615976565b600082612b1857506000610f6e565b82820282848281612b2557fe5b0414610caa5760405162461bcd60e51b8152600401610cd590615a86565b6000610caa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b67565b6000601554600014610e7957600c5480612baf57612bac612ba4611000565b610e516126b0565b90505b610fa6818463ffffffff612ae416565b60006000198214612c1b576040805180820190915260028152610c4d60f21b6020820152612bf6908390859063ffffffff613b9e16565b6001600160a01b03861660009081526014602090815260408083203384529091529020555b6001600160a01b038416612c415760405162461bcd60e51b8152600401610cd590615956565b6001600160a01b03851660009081526013602090815260408083205481518083019092526002825261189b60f11b92820192909252909190612c8c908390879063ffffffff613b9e16565b6001600160a01b03808916600090815260136020526040808220849055918916815290812054919250612cc5828863ffffffff612ae416565b6001600160a01b0389166000908152601360205260408120829055909150612ceb611c13565b601c549091506001600160a01b038b8116911614801590612d1a5750601c546001600160a01b038a8116911614155b15612d3757612d2b8a868684613ab1565b612d3789848484613ab1565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a604051612d7a91906158a6565b60405180910390a35060019998505050505050505050565b600080356001600160e01b0319167fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001612dd29291906156ea565b6040516020818303038152906040528051906020012090506000815490508015612e0e5760405162461bcd60e51b8152600401610cd590615a96565b5050565b808215610caa57600080601660009054906101000a90046001600160a01b03166001600160a01b03166378d849ed6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e6a57600080fd5b505afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ea291908101906145fa565b60048054604051630a7549df60e21b81526001600160a01b03938416936329d5277c93612edb938c936101009091049092169101615739565b604080518083038186803b158015612ef257600080fd5b505afa158015612f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f2a9190810190614b4f565b9150915081600014158015612f3e57508015155b612f5a5760405162461bcd60e51b8152600401610cd590615ad6565b6000612f7082610e69888663ffffffff612b0916565b60165460048054604051631a51577760e21b81529394506000936001600160a01b03938416936369455ddc93612fb3936101009004909116918d9188910161576f565b60206040518083038186803b158015612fcb57600080fd5b505afa158015612fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130039190810190614b12565b90508681146130235761302087610e69848463ffffffff612b0916565b91505b613033828663ffffffff612ae416565b98975050505050505050565b600f5442906001600160581b038083169116146125065760165460048054604051630740ff7d60e51b81526001600160a01b039384169363e81fefa09361308f936101009004909116910161571d565b600060405180830381600087803b1580156130a957600080fd5b505af11580156130bd573d6000803e3d6000fd5b5050600f80546001600160581b0385166affffffffffffffffffffff19909116179055505050565b60008080613105670de0b6b3a7640000610e69868863ffffffff612b0916565b905061311a816131156000612b85565b613865565b915061312a826224ea0083613bca565b9250509250929050565b60008061313f612d92565b6131476126b0565b602085015111801590613166575060208501516001600160a01b031615155b6131825760405162461bcd60e51b8152600401610cd5906159f6565b60408501516001600160a01b03166131a85760208501516001600160a01b031660408601525b60006131b68787878c613c2b565b602086015160608701519192506131cd9190612ae4565b606086015288156131ed5760608501516131e7908a613531565b60608601525b600089156131f9575060015b6000601060008a8460405160200161321292919061569e565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020549050601660009054906101000a90046001600160a01b03166001600160a01b031663585314cf84838f868f8e8e8e6040518963ffffffff1660e01b815260040161328a97969594939291906158b4565b60408051808303818588803b1580156132a257600080fd5b505af11580156132b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506132db9190810190614b4f565b6080890152602088018190526133035760405162461bcd60e51b8152600401610cd590615a46565b601654602089015160405163f06a9c6b60e01b81526001600160a01b039092169163f06a9c6b916133369160040161571d565b600060405180830381600087803b15801561335057600080fd5b505af1158015613364573d6000803e3d6000fd5b505050508660016005811061337557fe5b6020020151608090970151969c969b50959950505050505050505050565b60008061339f83613e85565b601c5491935091506000906001600160a01b03161561343d57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa6906133ea9030908990600401615739565b60206040518083038186803b15801561340257600080fd5b505afa158015613416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061343a9190810190614b12565b90505b6001600160a01b038516600090815260136020526040812054613466908363ffffffff612ae416565b9050600061347a828663ffffffff612ae416565b905061348887868887613f8f565b5061349587838387613ab1565b5050505092915050565b60008115610e795760006134b16135a5565b509050610fa683610e6961016d610e5d8568056bc75e2d6310000063ffffffff612b0916565b6000816134e657506000611150565b508354611cc881613525670de0b6b3a76400006135198861350d898963ffffffff61409f16565b9063ffffffff6140e516565b9063ffffffff61415016565b9063ffffffff6141b416565b6000610caa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b9e565b6000821580159061358357508115155b15610f6e57611bec82610e698568056bc75e2d6310000063ffffffff612b0916565b60165460048054604051630d1979fb60e41b8152600093849384936001600160a01b039283169363d1979fb0936135e793309361010090049091169101615739565b60c06040518083038186803b1580156135ff57600080fd5b505afa158015613613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136379190810190614c98565b509196509450925061366a915068056bc75e2d631000009050610e6961365d8285613531565b859063ffffffff612b0916565b9150509091565b6015546000908061368457600e54610e75565b610e7581610e6985670de0b6b3a764000063ffffffff612b0916565b60008082156136e957600f54426001600160581b039081169116146136cb576136c76135a5565b9150505b60006136d982610e516126b0565b9050808411156136e7578093505b505b610e758361311583612b85565b3390565b60405161375490859063a9059cbb60e01b9061371c9087908790602401615833565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152836141fa565b50505050565b6001600160a01b0381166137805760405162461bcd60e51b8152600401610cd590615966565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006137e88383613393565b601c549091506138049084906001600160a01b03168380612bbf565b50601c546040516336305cf160e21b81526001600160a01b039091169063d8c173c4906138379086908590600401615833565b600060405180830381600087803b15801561385157600080fd5b505af1158015613495573d6000803e3d6000fd5b60008061387d61387785610e51611000565b84613573565b600554600654600954600a54600b54949550600094859493929190828810156138a4578297505b8188111561391757968190039668056bc75e2d63100000829003808911156138ca578098505b6138eb68056bc75e2d63100000610e6985610e5d898b63ffffffff612ae416565b965061390f87610e5183610e69613902878d613531565b8e9063ffffffff612b0916565b99505061396d565b61393885610e5168056bc75e2d63100000610e698c8963ffffffff612b0916565b9850939550859361394f848663ffffffff612ae416565b9550868910156139615786985061396d565b8589111561396d578598505b505050505050505092915050565b6040805180820182526002815261189b60f11b6020808301919091526001600160a01b038716600090815260139091529182205482916139c39190879063ffffffff613b9e16565b9050600a81116139e4576139dd858263ffffffff612ae416565b9450600090505b6001600160a01b0386166000908152601360205260409020819055601554613a12908663ffffffff61353116565b6015556040516001600160a01b038716907f743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b464490613a5490889088908890615b54565b60405180910390a260006001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613aa091906158a6565b60405180910390a395945050505050565b604051600090613ae79086907f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb6906020016156c4565b60405160208183030381529060405280519060200120905060008360001415613b135760009250613b44565b8415613b44576001600160a01b038616600090815260116020526040902054613b41908390879086906134d7565b90505b90556001600160a01b039093166000908152601160205260409020929092555050565b60008183613b885760405162461bcd60e51b8152600401610cd59190615925565b506000838581613b9457fe5b0495945050505050565b60008184841115613bc25760405162461bcd60e51b8152600401610cd59190615925565b505050900390565b600080613be56301e13380610e69878763ffffffff612b0916565b90506000613c0268056bc75e2d631000008363ffffffff61353116565b9050613c2181610e698668056bc75e2d6310000063ffffffff612b0916565b9695505050505050565b60175460408401516020840151606085015160808601516000946001600160a01b039081169485949093909290918b16851415613c7a5760405162461bcd60e51b8152600401610cd590615ab6565b3496508715613d2557604051632e1a7d4d60e01b81526001600160a01b03871690632e1a7d4d90613caf908b906004016158a6565b600060405180830381600087803b158015613cc957600080fd5b505af1158015613cdd573d6000803e3d6000fd5b50505050613ceb8489612a43565b87831115613d2057601654604080516020810190915260008152613d209187916001600160a01b03909116908b8703906136fa565b613d5a565b601654604080518082019091526002815261323760f01b6020820152613d5a9187916001600160a01b039091169086906136fa565b8015613d9557601654604080518082019091526002815261064760f31b6020820152613d95918d9133916001600160a01b03169085906142b8565b8115613e77578615801590613daa5750818710155b15613e4257856001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613dea57600080fd5b505af1158015613dfe573d6000803e3d6000fd5b5050601654604080518082019091526002815261323960f01b6020820152613e3894508993506001600160a01b03909116915085906136fa565b8187039650613e77565b601654604080518082019091526002815261323960f01b6020820152613e7791879133916001600160a01b03169086906142b8565b505050505050949350505050565b60008082613ea55760405162461bcd60e51b8152600401610cd590615a76565b613ead61303f565b613eba611c466000612b85565b9050613ed881610e6985670de0b6b3a764000063ffffffff612b0916565b915034613f2057613f1b600460019054906101000a90046001600160a01b031633308660405180604001604052806002815260200161062760f31b8152506142b8565b613f8a565b601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613f7057600080fd5b505af1158015613f84573d6000803e3d6000fd5b50505050505b915091565b60006001600160a01b038516613fb75760405162461bcd60e51b8152600401610cd590615956565b6001600160a01b038516600090815260136020526040812054613fe0908663ffffffff612ae416565b6001600160a01b0387166000908152601360205260409020819055601554909150614011908663ffffffff612ae416565b6015556040516001600160a01b038716907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb9061405390889088908890615b54565b60405180910390a2856001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613aa091906158a6565b60008183038183128015906140b45750838113155b806140c957506000831280156140c957508381135b610caa5760405162461bcd60e51b8152600401610cd590615b06565b6000826140f457506000610f6e565b826000191480156141085750600160ff1b82145b156141255760405162461bcd60e51b8152600401610cd590615ac6565b8282028284828161413257fe5b0514610caa5760405162461bcd60e51b8152600401610cd590615ac6565b60008161416f5760405162461bcd60e51b8152600401610cd590615b36565b816000191480156141835750600160ff1b83145b156141a05760405162461bcd60e51b8152600401610cd590615a16565b60008284816141ab57fe5b05949350505050565b60008282018183128015906141c95750838112155b806141de57506000831280156141de57508381125b610caa5760405162461bcd60e51b8152600401610cd590615986565b60006060846001600160a01b0316846040516142169190615706565b6000604051808303816000865af19150503d8060008114614253576040519150601f19603f3d011682016040523d82523d6000602084013e614258565b606091505b509150915081839061427d5760405162461bcd60e51b8152600401610cd59190615925565b5080511561211757808060200190516142999190810190614837565b8390610fec5760405162461bcd60e51b8152600401610cd59190615925565b6040516121179086906323b872dd60e01b9061371c9088908890889060240161576f565b60405180608001604052806004906020820280388339509192915050565b6040518060a001604052806005906020820280388339509192915050565b8035610f6e81615cc3565b8051610f6e81615cc3565b60008083601f84011261434057600080fd5b5081356001600160401b0381111561435757600080fd5b60208301915083602082028301111561436f57600080fd5b9250929050565b600082601f83011261438757600080fd5b815161439a61439582615ba3565b615b7d565b915081818352602084019350602081019050838560208402820111156143bf57600080fd5b60005b8381101561349557816143d58882614480565b84525060209283019291909101906001016143c2565b600082601f8301126143fc57600080fd5b813561440a61439582615ba3565b915081818352602084019350602081019050838561010084028201111561443057600080fd5b60005b838110156134955781614446888261451b565b8452506020909201916101009190910190600101614433565b8035610f6e81615cd7565b8051610f6e81615cd7565b8035610f6e81615ce0565b8051610f6e81615ce0565b60008083601f84011261449d57600080fd5b5081356001600160401b038111156144b457600080fd5b60208301915083600182028301111561436f57600080fd5b600082601f8301126144dd57600080fd5b81356144eb61439582615bc3565b9150808252602083016020830185838301111561450757600080fd5b614512838284615c49565b50505092915050565b6000610100828403121561452e57600080fd5b614539610100615b7d565b905060006145478484614475565b82525060206145588484830161445f565b602083015250604061456c84828501614318565b604083015250606061458084828501614318565b606083015250608061459484828501614318565b60808301525060a06145a884828501614475565b60a08301525060c06145bc84828501614475565b60c08301525060e06145d084828501614475565b60e08301525092915050565b6000602082840312156145ee57600080fd5b60006111508484614318565b60006020828403121561460c57600080fd5b60006111508484614323565b6000806040838503121561462b57600080fd5b60006146378585614318565b925050602061464885828601614318565b9150509250929050565b60008060006060848603121561466757600080fd5b60006146738686614318565b935050602061468486828701614318565b925050604061469586828701614475565b9150509250925092565b600080604083850312156146b257600080fd5b60006146be8585614318565b92505060206146488582860161445f565b600080604083850312156146e257600080fd5b60006146ee8585614318565b925050602061464885828601614475565b60008060006060848603121561471457600080fd5b60006147208686614318565b935050602061473186828701614475565b92505060406146958682870161445f565b6000806000806040858703121561475857600080fd5b84356001600160401b0381111561476e57600080fd5b61477a8782880161432e565b945094505060208501356001600160401b0381111561479857600080fd5b6147a48782880161432e565b95989497509550505050565b6000602082840312156147c257600080fd5b81516001600160401b038111156147d857600080fd5b61115084828501614376565b600080604083850312156147f757600080fd5b82356001600160401b0381111561480d57600080fd5b6146be858286016143eb565b60006020828403121561482b57600080fd5b6000611150848461445f565b60006020828403121561484957600080fd5b6000611150848461446a565b600080600080600080600080610100898b03121561487257600080fd5b600061487e8b8b614475565b985050602061488f8b828c01614475565b97505060406148a08b828c01614475565b96505060606148b18b828c01614475565b95505060806148c28b828c01614318565b94505060a06148d38b828c01614318565b93505060c06148e48b828c01614318565b92505060e08901356001600160401b0381111561490057600080fd5b61490c8b828c016144cc565b9150509295985092959890939650565b6000806000806000806000806000806101208b8d03121561493c57600080fd5b60006149488d8d614475565b9a505060206149598d828e01614475565b995050604061496a8d828e01614475565b985050606061497b8d828e01614475565b975050608061498c8d828e01614318565b96505060a061499d8d828e01614318565b95505060c06149ae8d828e01614475565b94505060e06149bf8d828e01614318565b9350506101008b01356001600160401b038111156149dc57600080fd5b6149e88d828e0161448b565b92509250509295989b9194979a5092959850565b600080600080600080600080610100898b031215614a1957600080fd5b6000614a258b8b614475565b9850506020614a368b828c01614475565b9750506040614a478b828c01614475565b9650506060614a588b828c01614475565b9550506080614a698b828c01614318565b94505060a0614a7a8b828c01614318565b93505060c06148e48b828c01614475565b600060208284031215614a9d57600080fd5b81356001600160401b03811115614ab357600080fd5b611150848285016144cc565b60008060408385031215614ad257600080fd5b82356001600160401b03811115614ae857600080fd5b6146be858286016144cc565b600060208284031215614b0657600080fd5b60006111508484614475565b600060208284031215614b2457600080fd5b60006111508484614480565b60008060408385031215614b4357600080fd5b60006146ee8585614475565b60008060408385031215614b6257600080fd5b6000614b6e8585614480565b925050602061464885828601614480565b600080600060608486031215614b9457600080fd5b6000614ba08686614475565b9350506020614bb186828701614475565b925050604061469586828701614318565b60008060008060808587031215614bd857600080fd5b6000614be48787614475565b9450506020614bf587828801614475565b9350506040614c0687828801614475565b9250506060614c1787828801614318565b91505092959194509250565b600080600080600060a08688031215614c3b57600080fd5b6000614c478888614475565b9550506020614c5888828901614475565b9450506040614c6988828901614475565b9350506060614c7a88828901614318565b9250506080614c8b88828901614475565b9150509295509295909350565b60008060008060008060c08789031215614cb157600080fd5b6000614cbd8989614480565b9650506020614cce89828a01614480565b9550506040614cdf89828a01614480565b9450506060614cf089828a01614480565b9350506080614d0189828a01614480565b92505060a0614d1289828a01614480565b9150509295509295509295565b600080600080600080600060e0888a031215614d3a57600080fd5b6000614d468a8a614475565b9750506020614d578a828b01614475565b9650506040614d688a828b01614475565b9550506060614d798a828b01614475565b9450506080614d8a8a828b01614475565b93505060a0614d9b8a828b01614475565b92505060c0614dac8a828b01614475565b91505092959891949750929550565b6000614dc78383614dff565b505060200190565b6000614dc78383614f72565b6000614de783836155fe565b50506101000190565b614df981615c38565b82525050565b614df981615c09565b614df9614e1482615c09565b615c81565b614e2281615bf0565b614e2c8184610e79565b9250614e3782610f86565b8060005b83811015610fec578151614e4f8782614dbb565b9650614e5a83615bea565b925050600101614e3b565b6000614e7082615bf6565b614e7a8185615c00565b9350614e8583615bea565b8060005b83811015614eb3578151614e9d8882614dcf565b9750614ea883615bea565b925050600101614e89565b509495945050505050565b6000614ec982615bf6565b614ed38185615c00565b9350614ede83615bea565b8060005b83811015614eb3578151614ef68882614ddb565b9750614f0183615bea565b925050600101614ee2565b614f1581615bfa565b614f1f8184610e79565b9250614f2a82610f86565b8060005b83811015610fec578151614f428782614dcf565b9650614f4d83615bea565b925050600101614f2e565b614df981615c14565b614df9614f6d82615c14565b615c8c565b614df981610f86565b614df9614f8782610f86565b610f86565b614df9614f8782615c19565b6000614fa382615bf6565b614fad8185615c00565b9350614fbd818560208601615c55565b614fc681615cad565b9093019392505050565b6000614fdb82615bf6565b614fe58185610e79565b9350614ff5818560208601615c55565b9290920192915050565b600061500c600c83615c00565b6b636f6c6c20746f6f206c6f7760a01b815260200192915050565b6000615034600283615c00565b61031360f41b815260200192915050565b6000615052600283615c00565b61313560f01b815260200192915050565b6000615070602683615c00565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006150b8601b83615c00565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006150f1602183615c00565b7f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000615134600e83615c00565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b600061515e603a83615c00565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b60006151bd600183615c00565b603760f81b815260200192915050565b60006151da601d83615c00565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b6000615213601283615c00565b716e6f7420656e6f7567682062616c616e636560701b815260200192915050565b6000615241600283615c00565b61333760f01b815260200192915050565b600061525f600283615c00565b610c8d60f21b815260200192915050565b600061527d600283615c00565b61313160f01b815260200192915050565b600061529b602183615c00565b7f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006152de601583615c00565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b600061530f600283615c00565b61189960f11b815260200192915050565b600061532d600283615c00565b61323560f01b815260200192915050565b600061534b600f83615c00565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b6000615376600283615c00565b61199960f11b815260200192915050565b6000615394600283615c00565b61313760f01b815260200192915050565b60006153b2602183615c00565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006153f5600c83615c00565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061541d600283615c00565b61313960f01b815260200192915050565b600061543b600283615c00565b61191b60f11b815260200192915050565b6000615459602783615c00565b7f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f815266766572666c6f7760c81b602082015260400192915050565b60006154a2601d83615c00565b7f696e76616c6964207261746520636f6c6c61746572616c20746f6b656e000000815260200192915050565b6000610f6e600083610e79565b60006154e8600a83615c00565b6937b7363ca830bab9b2b960b11b815260200192915050565b600061550e600c83615c00565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b6000615536602483615c00565b7f5369676e6564536166654d6174683a207375627472616374696f6e206f766572815263666c6f7760e01b602082015260400192915050565b600061557c601883615c00565b7f34303120757365206f66206578697374696e67206c6f616e0000000000000000815260200192915050565b60006155b5600183615c00565b601b60f91b815260200192915050565b60006155d2602083615c00565b7f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f815260200192915050565b80516101008301906156108482614f72565b5060208201516156236020850182614f58565b5060408201516156366040850182614dff565b5060608201516156496060850182614dff565b50608082015161565c6080850182614dff565b5060a082015161566f60a0850182614f72565b5060c082015161568260c0850182614f72565b5060e082015161375460e0850182614f72565b614df981615c32565b60006156aa8285614e08565b6014820191506156ba8284614f61565b5060010192915050565b60006156d08285614e08565b6014820191506156e08284614f7b565b5060200192915050565b60006156f68285614f8c565b6004820191506156e08284614f7b565b6000610caa8284614fd0565b6000610f6e826154ce565b60208101610f6e8284614dff565b60208101610f6e8284614df0565b604081016157478285614dff565b610caa6020830184614dff565b604081016157628285614dff565b610caa6020830184614df0565b6060810161577d8286614dff565b61578a6020830185614dff565b6111506040830184614f72565b60a081016157a58288614dff565b6157b26020830187614dff565b6157bf6040830186614f72565b6157cc6060830185614f72565b613c216080830184614f58565b60c081016157e78289614dff565b6157f46020830188614dff565b6158016040830187614f72565b61580e6060830186614f72565b61581b6080830185614f72565b61582860a0830184614f72565b979650505050505050565b604081016158418285614dff565b610caa6020830184614f72565b6060810161585c8286614dff565b6158696020830185614f72565b6111506040830184614df0565b60208082528101610caa8184614e65565b60208082528101610caa8184614ebe565b60208101610f6e8284614f58565b60208101610f6e8284614f72565b6101c081016158c3828a614f72565b6158d06020830189614f72565b6158dd6040830188614f58565b6158ea6060830187614f72565b6158f76080830186614e19565b615905610100830185614f0c565b8181036101a08301526159188184614f98565b9998505050505050505050565b60208082528101610caa8184614f98565b60208082528101610f6e81614fff565b60208082528101610f6e81615027565b60208082528101610f6e81615045565b60208082528101610f6e81615063565b60208082528101610f6e816150ab565b60208082528101610f6e816150e4565b60208082528101610f6e81615127565b60208082528101610f6e81615151565b60208082528101610f6e816151b0565b60208082528101610f6e816151cd565b60208082528101610f6e81615206565b60208082528101610f6e81615234565b60208082528101610f6e81615252565b60208082528101610f6e81615270565b60208082528101610f6e8161528e565b60208082528101610f6e816152d1565b60208082528101610f6e81615302565b60208082528101610f6e81615320565b60208082528101610f6e8161533e565b60208082528101610f6e81615369565b60208082528101610f6e81615387565b60208082528101610f6e816153a5565b60208082528101610f6e816153e8565b60208082528101610f6e81615410565b60208082528101610f6e8161542e565b60208082528101610f6e8161544c565b60208082528101610f6e81615495565b60208082528101610f6e816154db565b60208082528101610f6e81615501565b60208082528101610f6e81615529565b60208082528101610f6e8161556f565b60208082528101610f6e816155a8565b60208082528101610f6e816155c5565b604081016158418285614f72565b60608101615b628286614f72565b61578a6020830185614f72565b60208101610f6e8284615695565b6040518181016001600160401b0381118282101715615b9b57600080fd5b604052919050565b60006001600160401b03821115615bb957600080fd5b5060209081020190565b60006001600160401b03821115615bd957600080fd5b506020601f91909101601f19160190565b60200190565b50600490565b5190565b50600590565b90815260200190565b6000610f6e82615c26565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b6000610f6e826000610f6e82615c09565b82818337506000910152565b60005b83811015615c70578181015183820152602001615c58565b838111156137545750506000910152565b6000610f6e82615c97565b6000610f6e82615ca2565b6000610f6e82615cbd565b6000610f6e82615cb7565b601f01601f191690565b60f81b90565b60601b90565b615ccc81615c09565b811461250657600080fd5b615ccc81615c14565b615ccc81610f8656fea365627a7a72315820fa60c47178ad0e720462a422164c216505b66504ef874aebac255e9d3cf9c3736c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3D9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E37C08C GT PUSH2 0x1FD JUMPI DUP1 PUSH4 0xCA37E666 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0xE41B07E3 GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xA98 JUMPI DUP1 PUSH4 0xF6B69F99 EQ PUSH2 0xAB8 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xACB JUMPI DUP1 PUSH4 0xFB5F83DF EQ PUSH2 0xAE0 JUMPI DUP1 PUSH4 0xFFA1AD74 EQ PUSH2 0xAF3 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0xA23 JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0xA43 JUMPI DUP1 PUSH4 0xEEBC5081 EQ PUSH2 0xA63 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0xA83 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0xD8F06C83 GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x9A3 JUMPI DUP1 PUSH4 0xD97206A4 EQ PUSH2 0x9C3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x9E3 JUMPI DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0xA03 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0xCA37E666 EQ PUSH2 0x939 JUMPI DUP1 PUSH4 0xCB926CB3 EQ PUSH2 0x94E JUMPI DUP1 PUSH4 0xD65A5021 EQ PUSH2 0x96E JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x98E JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x190 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x15F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x8C4 JUMPI DUP1 PUSH4 0xB9FE1A8F EQ PUSH2 0x8E4 JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x904 JUMPI DUP1 PUSH4 0xBE194217 EQ PUSH2 0x919 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x865 JUMPI DUP1 PUSH4 0x9BDA3A98 EQ PUSH2 0x87A JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x88F JUMPI DUP1 PUSH4 0x9FD0506D EQ PUSH2 0x8AF JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x1CC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x811 JUMPI DUP1 PUSH4 0x8EE6C4E6 EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x83B JUMPI DUP1 PUSH4 0x8FB807C5 EQ PUSH2 0x850 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x7B2 JUMPI DUP1 PUSH4 0x7FF9B596 EQ PUSH2 0x7C7 JUMPI DUP1 PUSH4 0x829B38F4 EQ PUSH2 0x7DC JUMPI DUP1 PUSH4 0x8325A1C0 EQ PUSH2 0x7FC JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x2EA295FA GT PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x56E07D70 GT PUSH2 0x28B JUMPI DUP1 PUSH4 0x704B6C02 GT PUSH2 0x25A JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH2 0x728 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x748 JUMPI DUP1 PUSH4 0x7288B344 EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x788 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x79D JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x6AF JUMPI DUP1 PUSH4 0x612EF80B EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0x631A3EF8 EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0x6B40CD40 EQ PUSH2 0x6F9 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x330691AC GT PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0x44A4A003 EQ PUSH2 0x67A JUMPI DUP1 PUSH4 0x54198CE9 EQ PUSH2 0x68F JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x2EA295FA EQ PUSH2 0x5DB JUMPI DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x603 JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x625 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x370 JUMPI DUP1 PUSH4 0x20F6D07C GT PUSH2 0x33F JUMPI DUP1 PUSH4 0x20F6D07C EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x57A JUMPI DUP1 PUSH4 0x28A02F19 EQ PUSH2 0x59A JUMPI DUP1 PUSH4 0x2D88AF4A EQ PUSH2 0x5BB JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD EQ PUSH2 0x504 JUMPI DUP1 PUSH4 0x18498B1D EQ PUSH2 0x519 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x53B JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x550 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 GT PUSH2 0x3AC JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x4A2 JUMPI DUP1 PUSH4 0x9EC6B6B EQ PUSH2 0x4CF JUMPI DUP1 PUSH4 0x12416898 EQ PUSH2 0x4E4 JUMPI PUSH2 0x3D9 JUMP JUMPDEST DUP1 PUSH4 0x4797930 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x506AF04 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x6947A3A EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x6B3EFD6 EQ PUSH2 0x460 JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B7F JUMP JUMPDEST PUSH2 0xB08 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x439 CALLDATASIZE PUSH1 0x4 PUSH2 0x46FF JUMP JUMPDEST PUSH2 0xCB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0xD83 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x571D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x47B CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0xD92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x495 PUSH2 0xE7E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x5925 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C2 PUSH2 0x4BD CALLDATASIZE PUSH1 0x4 PUSH2 0x46CF JUMP JUMPDEST PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x5898 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xF74 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x4FF CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF4 JUMP JUMPDEST PUSH2 0xF89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xFB4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0x534 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C23 JUMP JUMPDEST PUSH2 0xFBA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x547 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xFF4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xFFA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1000 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C2 PUSH2 0x595 CALLDATASIZE PUSH1 0x4 PUSH2 0x4652 JUMP JUMPDEST PUSH2 0x108F JUMP JUMPDEST PUSH2 0x5AD PUSH2 0x5A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x49FC JUMP JUMPDEST PUSH2 0x1158 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP3 SWAP2 SWAP1 PUSH2 0x5B46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0x5D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x137D JUMP JUMPDEST PUSH2 0x5AD PUSH2 0x5E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4855 JUMP JUMPDEST PUSH2 0x13C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x16A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x618 PUSH2 0x16B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x5B6F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x640 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF4 JUMP JUMPDEST PUSH2 0x16BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x16CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x675 CALLDATASIZE PUSH1 0x4 PUSH2 0x46CF JUMP JUMPDEST PUSH2 0x16D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1714 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x6AA CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x1726 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x17C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x17CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x6F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B7F JUMP JUMPDEST PUSH2 0x17FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x719 PUSH2 0x714 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BC2 JUMP JUMPDEST PUSH2 0x199E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x415 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0x743 CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x1AAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x763 CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x1AF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x783 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B30 JUMP JUMPDEST PUSH2 0x1B10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x1BF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1C07 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1C0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1C13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x7F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF4 JUMP JUMPDEST PUSH2 0x1C51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1CD1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x1CDD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x1CEC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C2 PUSH2 0x1CFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1D21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x495 PUSH2 0x1D51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x1DAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x8AA CALLDATASIZE PUSH1 0x4 PUSH2 0x46CF JUMP JUMPDEST PUSH2 0x1DBB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x1E2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C2 PUSH2 0x8DF CALLDATASIZE PUSH1 0x4 PUSH2 0x46CF JUMP JUMPDEST PUSH2 0x1E3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x8FF CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF4 JUMP JUMPDEST PUSH2 0x1E4E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1E59 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C2 PUSH2 0x934 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A8B JUMP JUMPDEST PUSH2 0x1E5F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x945 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x1EE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0x969 CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x1EF0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x97A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x989 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF4 JUMP JUMPDEST PUSH2 0x1F36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x1F49 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0x9BE CALLDATASIZE PUSH1 0x4 PUSH2 0x47E4 JUMP JUMPDEST PUSH2 0x1F4F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0x9DE CALLDATASIZE PUSH1 0x4 PUSH2 0x4D1F JUMP JUMPDEST PUSH2 0x211E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x9FE CALLDATASIZE PUSH1 0x4 PUSH2 0x4618 JUMP JUMPDEST PUSH2 0x2225 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0xA1E CALLDATASIZE PUSH1 0x4 PUSH2 0x4ABF JUMP JUMPDEST PUSH2 0x2250 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xA3E CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x22F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0xA5E CALLDATASIZE PUSH1 0x4 PUSH2 0x4742 JUMP JUMPDEST PUSH2 0x2307 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0xA7E CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x24B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x24D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x539 PUSH2 0xAB3 CALLDATASIZE PUSH1 0x4 PUSH2 0x45DC JUMP JUMPDEST PUSH2 0x24D9 JUMP JUMPDEST PUSH2 0x5AD PUSH2 0xAC6 CALLDATASIZE PUSH1 0x4 PUSH2 0x491C JUMP JUMPDEST PUSH2 0x2509 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x453 PUSH2 0x25D9 JUMP JUMPDEST PUSH2 0x408 PUSH2 0xAEE CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0x25E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x408 PUSH2 0x2632 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xCAA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB2D JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB47 SWAP3 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 PUSH4 0xE762319F SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 DUP8 SWAP2 DUP11 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0xBB8 SWAP2 DUP11 SWAP2 ADD PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBE4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC08 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC2A SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5797 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC56 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC7A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP2 POP PUSH2 0xC8E DUP3 PUSH2 0xC88 PUSH2 0x1D21 JUMP JUMPDEST DUP7 PUSH2 0x2637 JUMP JUMPDEST SWAP4 POP PUSH2 0xC9C SWAP2 POP PUSH2 0x26B0 SWAP1 POP JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0xCA8 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xCDE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0xCF9 JUMPI PUSH2 0xCF2 DUP4 PUSH2 0x26E6 JUMP JUMPDEST SWAP1 POP PUSH2 0xD05 JUMP JUMPDEST PUSH2 0xD02 DUP4 PUSH2 0x288C JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0xD77 JUMPI PUSH1 0x17 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0xD3B SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD69 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xD77 DUP5 DUP3 PUSH2 0x2A43 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xE2D JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0xDDA SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5739 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE06 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xE2A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xE75 PUSH8 0xDE0B6B3A7640000 PUSH2 0xE69 PUSH2 0xE44 PUSH2 0x1C13 JUMP JUMPDEST PUSH2 0xE5D DUP6 PUSH2 0xE51 DUP10 PUSH2 0x1AF5 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2B43 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xF01 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xED6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF01 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xEE4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xF62 SWAP1 DUP7 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF83 PUSH2 0x4FF PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF94 PUSH2 0x1000 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xFAE JUMPI PUSH2 0xFA6 DUP2 DUP5 PUSH2 0x1B10 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE79 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFC8 DUP7 DUP7 DUP7 DUP7 PUSH2 0x199E JUMP JUMPDEST POP SWAP2 POP POP DUP2 DUP2 LT ISZERO PUSH2 0xFEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5936 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x250F447F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0x4A1E88FE SWAP4 PUSH2 0x103F SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x5739 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1057 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x106B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xF83 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH2 0x1150 SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x115DD4B1 SWAP1 PUSH2 0x10CA SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x572B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x111A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4837 JUMP JUMPDEST PUSH2 0x1147 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x114B JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH2 0x2BBF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x117D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x118A PUSH2 0x2D92 JUMP JUMPDEST PUSH2 0x1197 DUP10 DUP10 DUP10 DUP10 DUP9 PUSH2 0xFBA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x11B4 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x11E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A06 JUMP JUMPDEST DUP10 ISZERO DUP1 PUSH2 0x11FC JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x1218 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5B16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x125B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x125B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x12AC JUMPI PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP9 GT ISZERO PUSH2 0x12AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12B9 DUP8 DUP10 DUP12 PUSH2 0x2E12 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x12D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A36 JUMP JUMPDEST PUSH2 0x12E0 PUSH2 0x42DC JUMP JUMPDEST PUSH2 0x12E8 PUSH2 0x42FA JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP11 SWAP1 MSTORE PUSH2 0x1320 PUSH2 0x303F JUMP JUMPDEST PUSH2 0x1331 DUP13 DUP3 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x30E5 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1352 PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP14 PUSH2 0x2B43 JUMP JUMPDEST SWAP12 POP PUSH2 0x1364 DUP14 PUSH1 0x0 DUP15 DUP13 DUP7 DUP7 DUP13 PUSH2 0x3134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP15 SWAP1 SWAP14 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1385 PUSH2 0x1CFB JUMP JUMPDEST PUSH2 0x13A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x13E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP9 PUSH2 0x140A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5B26 JUMP JUMPDEST PUSH2 0x1412 PUSH2 0x2D92 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1455 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x1455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x1461 JUMPI POP DUP7 CALLVALUE EQ JUMPDEST DUP1 ISZERO PUSH2 0x1475 JUMPI POP DUP7 ISZERO ISZERO DUP1 PUSH2 0x1475 JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x149C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO DUP1 PUSH2 0x1492 JUMPI POP CALLVALUE ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x149C JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x14B8 JUMPI POP DUP10 ISZERO DUP1 PUSH2 0x14B8 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x14D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x59B6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x14F1 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x1524 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5946 JUMP JUMPDEST PUSH2 0x152C PUSH2 0x303F JUMP JUMPDEST PUSH2 0x1534 PUSH2 0x42DC JUMP JUMPDEST PUSH2 0x153C PUSH2 0x42FA JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 AND PUSH1 0x40 DUP5 ADD MSTORE DUP2 ADD DUP12 SWAP1 MSTORE PUSH2 0x1574 DUP12 PUSH2 0x156E PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST DUP13 PUSH2 0x2637 JUMP JUMPDEST DUP4 PUSH1 0x0 PUSH1 0x20 MUL ADD DUP5 PUSH1 0x2 PUSH1 0x20 MUL ADD DUP6 PUSH1 0x1 PUSH1 0x20 MUL ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 MSTORE MSTORE DUP9 DUP2 PUSH1 0x4 PUSH1 0x20 MUL ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x168B DUP13 DUP13 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCA74A5D9 PUSH1 0x10 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x15DF SWAP3 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1623 SWAP2 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x163B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x164F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1673 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST DUP12 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP14 SWAP1 SWAP13 POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x16F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1706 DUP4 DUP4 PUSH2 0x3393 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF83 PUSH2 0x1721 PUSH2 0x1000 JUMP JUMPDEST PUSH2 0x349F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 PUSH1 0x0 SHL PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x175F SWAP3 SWAP2 SWAP1 PUSH2 0x56C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xE75 DUP2 PUSH1 0x13 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x17A9 PUSH2 0x1C13 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x34D7 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x17DA PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x17E6 PUSH2 0x1000 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x17F9 JUMPI SWAP1 SUB SWAP1 POP PUSH2 0xF86 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xCAA JUMPI PUSH1 0x0 PUSH2 0x1814 DUP6 PUSH2 0xC88 PUSH2 0x1D21 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x1820 PUSH2 0x26B0 JUMP JUMPDEST DUP2 GT PUSH2 0xCA8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1843 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x185D SWAP3 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH2 0x1995 SWAP4 PUSH1 0xA SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x25DECAC0 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0x18D3 SWAP2 DUP13 SWAP2 ADD PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1923 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1945 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5797 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x195D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1971 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xE51 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xCAA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x19BF JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x19CC DUP6 DUP8 DUP10 PUSH2 0x2E12 JUMP JUMPDEST SWAP1 POP PUSH2 0x19D8 DUP9 DUP3 PUSH2 0x30E5 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH2 0x19E5 PUSH2 0x26B0 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x19FC JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1AA5 JUMP JUMPDEST PUSH2 0x1A0C DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD67F7077 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD67F7077 SWAP4 PUSH2 0x1A51 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP14 SWAP2 DUP14 SWAP2 DUP11 SWAP2 DUP14 SWAP2 ADD PUSH2 0x57D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1AA1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP3 POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AB7 PUSH2 0x1CFB JUMP JUMPDEST PUSH2 0x1AD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST PUSH1 0x19 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1B21 JUMPI POP DUP3 DUP3 LT ISZERO JUMPDEST ISZERO PUSH2 0xF6E JUMPI PUSH2 0x1BEC PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 PUSH2 0xE69 PUSH2 0x1BD6 PUSH9 0x56BC75E2D63100000 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4699F846 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BAD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1BD1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST PUSH2 0x3531 JUMP JUMPDEST PUSH2 0xE5D PUSH2 0x1BE3 DUP9 DUP9 PUSH2 0x3573 JUMP JUMPDEST PUSH2 0xE5D DUP10 PUSH2 0x349F JUMP JUMPDEST SWAP1 POP PUSH2 0xF6E JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1C3A JUMPI PUSH2 0x1C36 PUSH2 0x35A5 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C4B PUSH2 0x1C46 DUP3 PUSH2 0x2B85 JUMP JUMPDEST PUSH2 0x3671 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C70 PUSH2 0x16D PUSH2 0xE69 PUSH1 0x1C PUSH1 0xB SLOAD PUSH2 0x2B09 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C8D PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3531 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1CAA PUSH9 0x56BC75E2D63100000 PUSH2 0xE69 DUP5 PUSH2 0xE5D PUSH2 0x17CD JUMP JUMPDEST SWAP1 POP PUSH2 0x1CC8 DUP6 PUSH2 0xE69 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF83 PUSH1 0x0 PUSH2 0x36A0 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D12 PUSH2 0x36F6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1D48 JUMPI PUSH2 0x1D44 PUSH2 0x35A5 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C4B DUP2 PUSH2 0x2B85 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xF01 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xED6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF01 JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1DDF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1DED DUP3 PUSH2 0x288C JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1709 JUMPI PUSH2 0x1709 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH2 0x36FA JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCAA CALLER DUP5 DUP5 PUSH1 0x0 NOT PUSH2 0x2BBF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x36A0 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E73 SWAP2 SWAP1 PUSH2 0x5706 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EC0 SWAP3 SWAP2 SWAP1 PUSH2 0x56EA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1EF8 PUSH2 0x1CFB JUMP JUMPDEST PUSH2 0x1F14 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST PUSH1 0x1C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E PUSH2 0x4FF DUP4 PUSH2 0xE51 PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1F57 PUSH2 0x1CFB JUMP JUMPDEST DUP1 PUSH2 0x1F6C JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x1F88 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x2012 JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1FB5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x1FE7 JUMPI PUSH3 0x24EA00 PUSH2 0x1FEA JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1FFB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1F9F JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x2043 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5887 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x205D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2071 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2099 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x47B0 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2117 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x20B3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x20CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x20E9 SWAP3 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x209E JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2126 PUSH2 0x1CFB JUMP JUMPDEST DUP1 PUSH2 0x213B JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2157 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x2171 DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST GT ISZERO PUSH2 0x218F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A26 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x21A9 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST GT ISZERO PUSH2 0x21C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A26 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x21E9 JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x2205 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A56 JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x227A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AE6 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x228D SWAP2 SWAP1 PUSH2 0x5706 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x22D5 SWAP3 SWAP2 SWAP1 PUSH2 0x56EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x230F PUSH2 0x1CFB JUMP JUMPDEST DUP1 PUSH2 0x2324 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2340 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x235F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5996 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0x238B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x244E JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x23A7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x23BC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x45DC JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x23C8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x23DD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4819 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x23EE SWAP3 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2429 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x2391 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0x247F SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x5876 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x24E1 PUSH2 0x1CFB JUMP JUMPDEST PUSH2 0x24FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST PUSH2 0x2506 DUP2 PUSH2 0x375A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x2580 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x193BBE89 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC9DDF448 SWAP1 PUSH2 0x254D SWAP1 DUP11 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5739 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x257B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x25C6 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1158 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP11 POP SWAP11 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x260C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x2628 JUMPI PUSH2 0x2621 DUP4 CALLVALUE PUSH2 0x37DC JUMP JUMPDEST SWAP1 POP PUSH2 0x1709 JUMP JUMPDEST PUSH2 0x2621 DUP4 CALLVALUE PUSH2 0x3393 JUMP JUMPDEST PUSH1 0x6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2646 DUP7 DUP7 PUSH2 0x3865 JUMP JUMPDEST SWAP3 POP PUSH2 0x2693 PUSH2 0x267B PUSH8 0xDE0B6B3A7640000 PUSH2 0x1BD1 PUSH12 0xA3098C68EB9427DB8000000 PUSH2 0xE69 DUP4 PUSH2 0xE5D DUP11 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST PUSH2 0xE69 DUP9 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x26A5 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x3531 AND JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0x103F SWAP2 ADDRESS SWAP2 ADD PUSH2 0x571D JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x271D SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x5754 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2749 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x276D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x2789 PUSH2 0x277C CALLER PUSH2 0x1AF5 JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST LT ISZERO PUSH2 0x27A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x59D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2887 JUMPI DUP3 DUP2 LT ISZERO PUSH2 0x2820 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x27E9 SWAP1 ADDRESS SWAP1 DUP6 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x584E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2803 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2817 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x2887 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x2854 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x584E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x286E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2882 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xE75 DUP4 JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x28AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AA6 JUMP JUMPDEST PUSH2 0x28B4 CALLER PUSH2 0x1AF5 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x28E8 JUMPI PUSH1 0x0 NOT DUP3 EQ PUSH2 0x28DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A66 JUMP JUMPDEST PUSH2 0x28E5 CALLER PUSH2 0x1AF5 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x28F0 PUSH2 0x303F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28FF PUSH2 0x1C46 PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x291F PUSH8 0xDE0B6B3A7640000 PUSH2 0xE69 DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x292B PUSH2 0x26B0 JUMP JUMPDEST SWAP1 POP DUP2 SWAP4 POP DUP1 DUP5 GT ISZERO PUSH2 0x2950 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x59E6 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x29E9 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x2996 SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x5754 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x29E6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x2A09 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A1D DUP3 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3531 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2A2B CALLER DUP10 DUP10 DUP10 PUSH2 0x397B JUMP JUMPDEST POP PUSH2 0x2A38 CALLER DUP4 DUP4 DUP10 PUSH2 0x3AB1 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x2A63 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x59C6 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x2A7C SWAP1 PUSH2 0x5712 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2AB9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2ABE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2ADF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x59A6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xCAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5976 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2B18 JUMPI POP PUSH1 0x0 PUSH2 0xF6E JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2B25 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xCAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A86 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCAA DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x3B67 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x15 SLOAD PUSH1 0x0 EQ PUSH2 0xE79 JUMPI PUSH1 0xC SLOAD DUP1 PUSH2 0x2BAF JUMPI PUSH2 0x2BAC PUSH2 0x2BA4 PUSH2 0x1000 JUMP JUMPDEST PUSH2 0xE51 PUSH2 0x26B0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xFA6 DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ PUSH2 0x2C1B JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xC4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2BF6 SWAP1 DUP4 SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3B9E AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2C41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5956 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 SWAP1 PUSH2 0x2C8C SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3B9E AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x2CC5 DUP3 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP3 SWAP1 SSTORE SWAP1 SWAP2 POP PUSH2 0x2CEB PUSH2 0x1C13 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2D1A JUMPI POP PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x2D37 JUMPI PUSH2 0x2D2B DUP11 DUP7 DUP7 DUP5 PUSH2 0x3AB1 JUMP JUMPDEST PUSH2 0x2D37 DUP10 DUP5 DUP5 DUP5 PUSH2 0x3AB1 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP11 PUSH1 0x40 MLOAD PUSH2 0x2D7A SWAP2 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DD2 SWAP3 SWAP2 SWAP1 PUSH2 0x56EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 SLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2E0E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A96 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 DUP3 ISZERO PUSH2 0xCAA JUMPI PUSH1 0x0 DUP1 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x78D849ED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E7E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2EA2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x45FA JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x29D5277C SWAP4 PUSH2 0x2EDB SWAP4 DUP13 SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 ADD PUSH2 0x5739 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F06 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2F2A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B4F JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x2F3E JUMPI POP DUP1 ISZERO ISZERO JUMPDEST PUSH2 0x2F5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AD6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F70 DUP3 PUSH2 0xE69 DUP9 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A515777 PUSH1 0xE2 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x69455DDC SWAP4 PUSH2 0x2FB3 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 DUP14 SWAP2 DUP9 SWAP2 ADD PUSH2 0x576F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3003 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ PUSH2 0x3023 JUMPI PUSH2 0x3020 DUP8 PUSH2 0xE69 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x3033 DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF SLOAD TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x2506 JUMPI PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x740FF7D PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0xE81FEFA0 SWAP4 PUSH2 0x308F SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x571D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x30BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP6 AND PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x3105 PUSH8 0xDE0B6B3A7640000 PUSH2 0xE69 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x311A DUP2 PUSH2 0x3115 PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST PUSH2 0x3865 JUMP JUMPDEST SWAP2 POP PUSH2 0x312A DUP3 PUSH3 0x24EA00 DUP4 PUSH2 0x3BCA JUMP JUMPDEST SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x313F PUSH2 0x2D92 JUMP JUMPDEST PUSH2 0x3147 PUSH2 0x26B0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD GT DUP1 ISZERO SWAP1 PUSH2 0x3166 JUMPI POP PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST PUSH2 0x3182 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x59F6 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x31A8 JUMPI PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x31B6 DUP8 DUP8 DUP8 DUP13 PUSH2 0x3C2B JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP3 POP PUSH2 0x31CD SWAP2 SWAP1 PUSH2 0x2AE4 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP9 ISZERO PUSH2 0x31ED JUMPI PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x31E7 SWAP1 DUP11 PUSH2 0x3531 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 DUP10 ISZERO PUSH2 0x31F9 JUMPI POP PUSH1 0x1 JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3212 SWAP3 SWAP2 SWAP1 PUSH2 0x569E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x585314CF DUP5 DUP4 DUP16 DUP7 DUP16 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x328A SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x58B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x32DB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B4F JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0x20 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x3303 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A46 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF06A9C6B SWAP2 PUSH2 0x3336 SWAP2 PUSH1 0x4 ADD PUSH2 0x571D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3364 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP7 PUSH1 0x1 PUSH1 0x5 DUP2 LT PUSH2 0x3375 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 SWAP1 SWAP8 ADD MLOAD SWAP7 SWAP13 SWAP7 SWAP12 POP SWAP6 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x339F DUP4 PUSH2 0x3E85 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x343D JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x33EA SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5739 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3416 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x343A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B12 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3466 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x347A DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3488 DUP8 DUP7 DUP9 DUP8 PUSH2 0x3F8F JUMP JUMPDEST POP PUSH2 0x3495 DUP8 DUP4 DUP4 DUP8 PUSH2 0x3AB1 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0xE79 JUMPI PUSH1 0x0 PUSH2 0x34B1 PUSH2 0x35A5 JUMP JUMPDEST POP SWAP1 POP PUSH2 0xFA6 DUP4 PUSH2 0xE69 PUSH2 0x16D PUSH2 0xE5D DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x34E6 JUMPI POP PUSH1 0x0 PUSH2 0x1150 JUMP JUMPDEST POP DUP4 SLOAD PUSH2 0x1CC8 DUP2 PUSH2 0x3525 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3519 DUP9 PUSH2 0x350D DUP10 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x409F AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x40E5 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x4150 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x41B4 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCAA DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3B9E JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3583 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xF6E JUMPI PUSH2 0x1BEC DUP3 PUSH2 0xE69 DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD1979FB PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD1979FB0 SWAP4 PUSH2 0x35E7 SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x5739 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3613 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3637 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4C98 JUMP JUMPDEST POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP PUSH2 0x366A SWAP2 POP PUSH9 0x56BC75E2D63100000 SWAP1 POP PUSH2 0xE69 PUSH2 0x365D DUP3 DUP6 PUSH2 0x3531 JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP2 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x0 SWAP1 DUP1 PUSH2 0x3684 JUMPI PUSH1 0xE SLOAD PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE75 DUP2 PUSH2 0xE69 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x36E9 JUMPI PUSH1 0xF SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x36CB JUMPI PUSH2 0x36C7 PUSH2 0x35A5 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x36D9 DUP3 PUSH2 0xE51 PUSH2 0x26B0 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x36E7 JUMPI DUP1 SWAP4 POP JUMPDEST POP JUMPDEST PUSH2 0xE75 DUP4 PUSH2 0x3115 DUP4 PUSH2 0x2B85 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3754 SWAP1 DUP6 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x371C SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x5833 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE DUP4 PUSH2 0x41FA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3780 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5966 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37E8 DUP4 DUP4 PUSH2 0x3393 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH2 0x3804 SWAP1 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP1 PUSH2 0x2BBF JUMP JUMPDEST POP PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x36305CF1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD8C173C4 SWAP1 PUSH2 0x3837 SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5833 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3851 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3495 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x387D PUSH2 0x3877 DUP6 PUSH2 0xE51 PUSH2 0x1000 JUMP JUMPDEST DUP5 PUSH2 0x3573 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD PUSH1 0xB SLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP3 DUP9 LT ISZERO PUSH2 0x38A4 JUMPI DUP3 SWAP8 POP JUMPDEST DUP2 DUP9 GT ISZERO PUSH2 0x3917 JUMPI SWAP7 DUP2 SWAP1 SUB SWAP7 PUSH9 0x56BC75E2D63100000 DUP3 SWAP1 SUB DUP1 DUP10 GT ISZERO PUSH2 0x38CA JUMPI DUP1 SWAP9 POP JUMPDEST PUSH2 0x38EB PUSH9 0x56BC75E2D63100000 PUSH2 0xE69 DUP6 PUSH2 0xE5D DUP10 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP7 POP PUSH2 0x390F DUP8 PUSH2 0xE51 DUP4 PUSH2 0xE69 PUSH2 0x3902 DUP8 DUP14 PUSH2 0x3531 JUMP JUMPDEST DUP15 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP10 POP POP PUSH2 0x396D JUMP JUMPDEST PUSH2 0x3938 DUP6 PUSH2 0xE51 PUSH9 0x56BC75E2D63100000 PUSH2 0xE69 DUP13 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP9 POP SWAP4 SWAP6 POP DUP6 SWAP4 PUSH2 0x394F DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP6 POP DUP7 DUP10 LT ISZERO PUSH2 0x3961 JUMPI DUP7 SWAP9 POP PUSH2 0x396D JUMP JUMPDEST DUP6 DUP10 GT ISZERO PUSH2 0x396D JUMPI DUP6 SWAP9 POP JUMPDEST POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD DUP3 SWAP2 PUSH2 0x39C3 SWAP2 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3B9E AND JUMP JUMPDEST SWAP1 POP PUSH1 0xA DUP2 GT PUSH2 0x39E4 JUMPI PUSH2 0x39DD DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD PUSH2 0x3A12 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x3531 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0x743033787F4738FF4D6A7225CE2BD0977EE5F86B91A902A58F5E4D0B297B4644 SWAP1 PUSH2 0x3A54 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x5B54 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3AA0 SWAP2 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3AE7 SWAP1 DUP7 SWAP1 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 SWAP1 PUSH1 0x20 ADD PUSH2 0x56C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 EQ ISZERO PUSH2 0x3B13 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x3B44 JUMP JUMPDEST DUP5 ISZERO PUSH2 0x3B44 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3B41 SWAP1 DUP4 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x34D7 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x3B88 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP2 SWAP1 PUSH2 0x5925 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x3B94 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3BC2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP2 SWAP1 PUSH2 0x5925 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3BE5 PUSH4 0x1E13380 PUSH2 0xE69 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3C02 PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3531 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3C21 DUP2 PUSH2 0xE69 DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0x0 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP5 DUP6 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP12 AND DUP6 EQ ISZERO PUSH2 0x3C7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AB6 JUMP JUMPDEST CALLVALUE SWAP7 POP DUP8 ISZERO PUSH2 0x3D25 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x3CAF SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3CC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3CDD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3CEB DUP5 DUP10 PUSH2 0x2A43 JUMP JUMPDEST DUP8 DUP4 GT ISZERO PUSH2 0x3D20 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x3D20 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP12 DUP8 SUB SWAP1 PUSH2 0x36FA JUMP JUMPDEST PUSH2 0x3D5A JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3237 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3D5A SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH2 0x36FA JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3D95 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x647 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3D95 SWAP2 DUP14 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH2 0x42B8 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3E77 JUMPI DUP7 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3DAA JUMPI POP DUP2 DUP8 LT ISZERO JUMPDEST ISZERO PUSH2 0x3E42 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3DEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3DFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3239 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3E38 SWAP5 POP DUP10 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP6 SWAP1 PUSH2 0x36FA JUMP JUMPDEST DUP2 DUP8 SUB SWAP7 POP PUSH2 0x3E77 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3239 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3E77 SWAP2 DUP8 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x42B8 JUMP JUMPDEST POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x3EA5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A76 JUMP JUMPDEST PUSH2 0x3EAD PUSH2 0x303F JUMP JUMPDEST PUSH2 0x3EBA PUSH2 0x1C46 PUSH1 0x0 PUSH2 0x2B85 JUMP JUMPDEST SWAP1 POP PUSH2 0x3ED8 DUP2 PUSH2 0xE69 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x2B09 AND JUMP JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x3F20 JUMPI PUSH2 0x3F1B PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP PUSH2 0x42B8 JUMP JUMPDEST PUSH2 0x3F8A JUMP JUMPDEST PUSH1 0x17 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3F84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3FB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5956 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3FE0 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH2 0x4011 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2AE4 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xB4C03061FB5B7FED76389D5AF8F2E0DDB09F8C70D1333ABBB62582835E10ACCB SWAP1 PUSH2 0x4053 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x5B54 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3AA0 SWAP2 SWAP1 PUSH2 0x58A6 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x40B4 JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x40C9 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x40C9 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0xCAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5B06 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x40F4 JUMPI POP PUSH1 0x0 PUSH2 0xF6E JUMP JUMPDEST DUP3 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x4108 JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ JUMPDEST ISZERO PUSH2 0x4125 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AC6 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x4132 JUMPI INVALID JUMPDEST SDIV EQ PUSH2 0xCAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5AC6 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x416F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5B36 JUMP JUMPDEST DUP2 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x4183 JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP4 EQ JUMPDEST ISZERO PUSH2 0x41A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5A16 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x41AB JUMPI INVALID JUMPDEST SDIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x41C9 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x41DE JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x41DE JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0xCAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP1 PUSH2 0x5986 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x4216 SWAP2 SWAP1 PUSH2 0x5706 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4253 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4258 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP4 SWAP1 PUSH2 0x427D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP2 SWAP1 PUSH2 0x5925 JUMP JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x2117 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x4299 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4837 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0xFEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD5 SWAP2 SWAP1 PUSH2 0x5925 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2117 SWAP1 DUP7 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x371C SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0x576F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xF6E DUP2 PUSH2 0x5CC3 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xF6E DUP2 PUSH2 0x5CC3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x436F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x439A PUSH2 0x4395 DUP3 PUSH2 0x5BA3 JUMP JUMPDEST PUSH2 0x5B7D JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x43BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3495 JUMPI DUP2 PUSH2 0x43D5 DUP9 DUP3 PUSH2 0x4480 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x43C2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x43FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x440A PUSH2 0x4395 DUP3 PUSH2 0x5BA3 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x4430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3495 JUMPI DUP2 PUSH2 0x4446 DUP9 DUP3 PUSH2 0x451B JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4433 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xF6E DUP2 PUSH2 0x5CD7 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xF6E DUP2 PUSH2 0x5CD7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xF6E DUP2 PUSH2 0x5CE0 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xF6E DUP2 PUSH2 0x5CE0 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x449D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x436F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x44DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x44EB PUSH2 0x4395 DUP3 PUSH2 0x5BC3 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x4507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4512 DUP4 DUP3 DUP5 PUSH2 0x5C49 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x452E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4539 PUSH2 0x100 PUSH2 0x5B7D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4547 DUP5 DUP5 PUSH2 0x4475 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x4558 DUP5 DUP5 DUP4 ADD PUSH2 0x445F JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x456C DUP5 DUP3 DUP6 ADD PUSH2 0x4318 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x4580 DUP5 DUP3 DUP6 ADD PUSH2 0x4318 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x4594 DUP5 DUP3 DUP6 ADD PUSH2 0x4318 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x45A8 DUP5 DUP3 DUP6 ADD PUSH2 0x4475 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x45BC DUP5 DUP3 DUP6 ADD PUSH2 0x4475 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x45D0 DUP5 DUP3 DUP6 ADD PUSH2 0x4475 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP5 DUP5 PUSH2 0x4318 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x460C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP5 DUP5 PUSH2 0x4323 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x462B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4637 DUP6 DUP6 PUSH2 0x4318 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4648 DUP6 DUP3 DUP7 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4673 DUP7 DUP7 PUSH2 0x4318 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4684 DUP7 DUP3 DUP8 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4695 DUP7 DUP3 DUP8 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46BE DUP6 DUP6 PUSH2 0x4318 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4648 DUP6 DUP3 DUP7 ADD PUSH2 0x445F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46EE DUP6 DUP6 PUSH2 0x4318 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4648 DUP6 DUP3 DUP7 ADD PUSH2 0x4475 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4720 DUP7 DUP7 PUSH2 0x4318 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4731 DUP7 DUP3 DUP8 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4695 DUP7 DUP3 DUP8 ADD PUSH2 0x445F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4758 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x476E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x477A DUP8 DUP3 DUP9 ADD PUSH2 0x432E JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4798 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47A4 DUP8 DUP3 DUP9 ADD PUSH2 0x432E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1150 DUP5 DUP3 DUP6 ADD PUSH2 0x4376 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x47F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x480D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46BE DUP6 DUP3 DUP7 ADD PUSH2 0x43EB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x482B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP5 DUP5 PUSH2 0x445F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP5 DUP5 PUSH2 0x446A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x487E DUP12 DUP12 PUSH2 0x4475 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x488F DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x48A0 DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x48B1 DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x48C2 DUP12 DUP3 DUP13 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x48D3 DUP12 DUP3 DUP13 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x48E4 DUP12 DUP3 DUP13 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x490C DUP12 DUP3 DUP13 ADD PUSH2 0x44CC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x493C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4948 DUP14 DUP14 PUSH2 0x4475 JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x4959 DUP14 DUP3 DUP15 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x496A DUP14 DUP3 DUP15 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x497B DUP14 DUP3 DUP15 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x498C DUP14 DUP3 DUP15 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x499D DUP14 DUP3 DUP15 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x49AE DUP14 DUP3 DUP15 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x49BF DUP14 DUP3 DUP15 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x49E8 DUP14 DUP3 DUP15 ADD PUSH2 0x448B JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4A19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4A25 DUP12 DUP12 PUSH2 0x4475 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x4A36 DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x4A47 DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x4A58 DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x4A69 DUP12 DUP3 DUP13 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x4A7A DUP12 DUP3 DUP13 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x48E4 DUP12 DUP3 DUP13 ADD PUSH2 0x4475 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4AB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1150 DUP5 DUP3 DUP6 ADD PUSH2 0x44CC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4AD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4AE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46BE DUP6 DUP3 DUP7 ADD PUSH2 0x44CC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP5 DUP5 PUSH2 0x4475 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP5 DUP5 PUSH2 0x4480 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46EE DUP6 DUP6 PUSH2 0x4475 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4B6E DUP6 DUP6 PUSH2 0x4480 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4648 DUP6 DUP3 DUP7 ADD PUSH2 0x4480 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4B94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4BA0 DUP7 DUP7 PUSH2 0x4475 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4BB1 DUP7 DUP3 DUP8 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4695 DUP7 DUP3 DUP8 ADD PUSH2 0x4318 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4BD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4BE4 DUP8 DUP8 PUSH2 0x4475 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4BF5 DUP8 DUP3 DUP9 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4C06 DUP8 DUP3 DUP9 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4C17 DUP8 DUP3 DUP9 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4C3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C47 DUP9 DUP9 PUSH2 0x4475 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4C58 DUP9 DUP3 DUP10 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4C69 DUP9 DUP3 DUP10 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4C7A DUP9 DUP3 DUP10 ADD PUSH2 0x4318 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x4C8B DUP9 DUP3 DUP10 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4CB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4CBD DUP10 DUP10 PUSH2 0x4480 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x4CCE DUP10 DUP3 DUP11 ADD PUSH2 0x4480 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x4CDF DUP10 DUP3 DUP11 ADD PUSH2 0x4480 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x4CF0 DUP10 DUP3 DUP11 ADD PUSH2 0x4480 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x4D01 DUP10 DUP3 DUP11 ADD PUSH2 0x4480 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x4D12 DUP10 DUP3 DUP11 ADD PUSH2 0x4480 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4D3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4D46 DUP11 DUP11 PUSH2 0x4475 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x4D57 DUP11 DUP3 DUP12 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x4D68 DUP11 DUP3 DUP12 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x4D79 DUP11 DUP3 DUP12 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x4D8A DUP11 DUP3 DUP12 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x4D9B DUP11 DUP3 DUP12 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x4DAC DUP11 DUP3 DUP12 ADD PUSH2 0x4475 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DC7 DUP4 DUP4 PUSH2 0x4DFF JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DC7 DUP4 DUP4 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DE7 DUP4 DUP4 PUSH2 0x55FE JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x4DF9 DUP2 PUSH2 0x5C38 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4DF9 DUP2 PUSH2 0x5C09 JUMP JUMPDEST PUSH2 0x4DF9 PUSH2 0x4E14 DUP3 PUSH2 0x5C09 JUMP JUMPDEST PUSH2 0x5C81 JUMP JUMPDEST PUSH2 0x4E22 DUP2 PUSH2 0x5BF0 JUMP JUMPDEST PUSH2 0x4E2C DUP2 DUP5 PUSH2 0xE79 JUMP JUMPDEST SWAP3 POP PUSH2 0x4E37 DUP3 PUSH2 0xF86 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFEC JUMPI DUP2 MLOAD PUSH2 0x4E4F DUP8 DUP3 PUSH2 0x4DBB JUMP JUMPDEST SWAP7 POP PUSH2 0x4E5A DUP4 PUSH2 0x5BEA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4E3B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E70 DUP3 PUSH2 0x5BF6 JUMP JUMPDEST PUSH2 0x4E7A DUP2 DUP6 PUSH2 0x5C00 JUMP JUMPDEST SWAP4 POP PUSH2 0x4E85 DUP4 PUSH2 0x5BEA JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4EB3 JUMPI DUP2 MLOAD PUSH2 0x4E9D DUP9 DUP3 PUSH2 0x4DCF JUMP JUMPDEST SWAP8 POP PUSH2 0x4EA8 DUP4 PUSH2 0x5BEA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4E89 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EC9 DUP3 PUSH2 0x5BF6 JUMP JUMPDEST PUSH2 0x4ED3 DUP2 DUP6 PUSH2 0x5C00 JUMP JUMPDEST SWAP4 POP PUSH2 0x4EDE DUP4 PUSH2 0x5BEA JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4EB3 JUMPI DUP2 MLOAD PUSH2 0x4EF6 DUP9 DUP3 PUSH2 0x4DDB JUMP JUMPDEST SWAP8 POP PUSH2 0x4F01 DUP4 PUSH2 0x5BEA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4EE2 JUMP JUMPDEST PUSH2 0x4F15 DUP2 PUSH2 0x5BFA JUMP JUMPDEST PUSH2 0x4F1F DUP2 DUP5 PUSH2 0xE79 JUMP JUMPDEST SWAP3 POP PUSH2 0x4F2A DUP3 PUSH2 0xF86 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFEC JUMPI DUP2 MLOAD PUSH2 0x4F42 DUP8 DUP3 PUSH2 0x4DCF JUMP JUMPDEST SWAP7 POP PUSH2 0x4F4D DUP4 PUSH2 0x5BEA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4F2E JUMP JUMPDEST PUSH2 0x4DF9 DUP2 PUSH2 0x5C14 JUMP JUMPDEST PUSH2 0x4DF9 PUSH2 0x4F6D DUP3 PUSH2 0x5C14 JUMP JUMPDEST PUSH2 0x5C8C JUMP JUMPDEST PUSH2 0x4DF9 DUP2 PUSH2 0xF86 JUMP JUMPDEST PUSH2 0x4DF9 PUSH2 0x4F87 DUP3 PUSH2 0xF86 JUMP JUMPDEST PUSH2 0xF86 JUMP JUMPDEST PUSH2 0x4DF9 PUSH2 0x4F87 DUP3 PUSH2 0x5C19 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FA3 DUP3 PUSH2 0x5BF6 JUMP JUMPDEST PUSH2 0x4FAD DUP2 DUP6 PUSH2 0x5C00 JUMP JUMPDEST SWAP4 POP PUSH2 0x4FBD DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5C55 JUMP JUMPDEST PUSH2 0x4FC6 DUP2 PUSH2 0x5CAD JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FDB DUP3 PUSH2 0x5BF6 JUMP JUMPDEST PUSH2 0x4FE5 DUP2 DUP6 PUSH2 0xE79 JUMP JUMPDEST SWAP4 POP PUSH2 0x4FF5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5C55 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x500C PUSH1 0xC DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH12 0x636F6C6C20746F6F206C6F77 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5034 PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5052 PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5070 PUSH1 0x26 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50B8 PUSH1 0x1B DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50F1 PUSH1 0x21 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5134 PUSH1 0xE DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x515E PUSH1 0x3A DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x416464726573733A20756E61626C6520746F2073656E642076616C75652C2072 DUP2 MSTORE PUSH32 0x6563697069656E74206D61792068617665207265766572746564000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51BD PUSH1 0x1 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51DA PUSH1 0x1D DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E6365000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5213 PUSH1 0x12 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH18 0x6E6F7420656E6F7567682062616C616E6365 PUSH1 0x70 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5241 PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x525F PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x527D PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x529B PUSH1 0x21 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52DE PUSH1 0x15 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x530F PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x532D PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x534B PUSH1 0xF DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5376 PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5394 PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53B2 PUSH1 0x21 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53F5 PUSH1 0xC DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x541D PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x543B PUSH1 0x2 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5459 PUSH1 0x27 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206D756C7469706C69636174696F6E206F DUP2 MSTORE PUSH7 0x766572666C6F77 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54A2 PUSH1 0x1D DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x696E76616C6964207261746520636F6C6C61746572616C20746F6B656E000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E PUSH1 0x0 DUP4 PUSH2 0xE79 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54E8 PUSH1 0xA DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH10 0x37B7363CA830BAB9B2B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x550E PUSH1 0xC DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5536 PUSH1 0x24 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 DUP2 MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x557C PUSH1 0x18 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x34303120757365206F66206578697374696E67206C6F616E0000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x55B5 PUSH1 0x1 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x55D2 PUSH1 0x20 DUP4 PUSH2 0x5C00 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206279207A65726F DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x5610 DUP5 DUP3 PUSH2 0x4F72 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x5623 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4F58 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x5636 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4DFF JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x5649 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4DFF JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x565C PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x4DFF JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x566F PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4F72 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x5682 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x4F72 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x3754 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x4DF9 DUP2 PUSH2 0x5C32 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56AA DUP3 DUP6 PUSH2 0x4E08 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x56BA DUP3 DUP5 PUSH2 0x4F61 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56D0 DUP3 DUP6 PUSH2 0x4E08 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x56E0 DUP3 DUP5 PUSH2 0x4F7B JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56F6 DUP3 DUP6 PUSH2 0x4F8C JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x56E0 DUP3 DUP5 PUSH2 0x4F7B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCAA DUP3 DUP5 PUSH2 0x4FD0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x54CE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xF6E DUP3 DUP5 PUSH2 0x4DFF JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xF6E DUP3 DUP5 PUSH2 0x4DF0 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x5747 DUP3 DUP6 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0xCAA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4DFF JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x5762 DUP3 DUP6 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0xCAA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4DF0 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x577D DUP3 DUP7 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x578A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x1150 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x57A5 DUP3 DUP9 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x57B2 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x57BF PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x57CC PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x3C21 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4F58 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x57E7 DUP3 DUP10 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x57F4 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x5801 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x580E PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x581B PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x5828 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4F72 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x5841 DUP3 DUP6 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0xCAA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x585C DUP3 DUP7 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x5869 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x1150 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4DF0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCAA DUP2 DUP5 PUSH2 0x4E65 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCAA DUP2 DUP5 PUSH2 0x4EBE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xF6E DUP3 DUP5 PUSH2 0x4F58 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xF6E DUP3 DUP5 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x1C0 DUP2 ADD PUSH2 0x58C3 DUP3 DUP11 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x58D0 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x58DD PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4F58 JUMP JUMPDEST PUSH2 0x58EA PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x58F7 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4E19 JUMP JUMPDEST PUSH2 0x5905 PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4F0C JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x1A0 DUP4 ADD MSTORE PUSH2 0x5918 DUP2 DUP5 PUSH2 0x4F98 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCAA DUP2 DUP5 PUSH2 0x4F98 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x4FFF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5027 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5045 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5063 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x50AB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x50E4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5127 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5151 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x51B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x51CD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5206 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5234 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5252 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5270 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x528E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x52D1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5302 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5320 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x533E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5369 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5387 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x53A5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x53E8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5410 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x542E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x544C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5495 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x54DB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5501 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x5529 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x556F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x55A8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xF6E DUP2 PUSH2 0x55C5 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x5841 DUP3 DUP6 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x5B62 DUP3 DUP7 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x578A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xF6E DUP3 DUP5 PUSH2 0x5695 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5B9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5BB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5BD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST POP PUSH1 0x4 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x5 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x5C26 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x5C09 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C70 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C58 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x3754 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x5C97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x5CA2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x5CBD JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6E DUP3 PUSH2 0x5CB7 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x5CCC DUP2 PUSH2 0x5C09 JUMP JUMPDEST DUP2 EQ PUSH2 0x2506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5CCC DUP2 PUSH2 0x5C14 JUMP JUMPDEST PUSH2 0x5CCC DUP2 PUSH2 0xF86 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 STATICCALL PUSH1 0xC4 PUSH18 0x78AD0E720462A422164C216505B66504EF87 0x4A 0xEB 0xAC 0x25 0x5E SWAP14 EXTCODECOPY 0xF9 0xC3 PUSH20 0x6C6578706572696D656E74616CF564736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "217:2847:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;217:2847:6;;30250:914:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;30250:914:5;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;493:382:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;493:382:6;;;;;;;;:::i;559:36:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;559:36:7;;;:::i;:::-;;;;;;;;26169:332:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26169:332:5;;;;;;;;:::i;1977:18:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1977:18:3;;;:::i;:::-;;;;;;;;1489:181:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1489:181:0;;;;;;;;:::i;:::-;;;;;;;;23294:120:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23294:120:5;;;:::i;24056:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24056:219:5;;;;;;;;:::i;1778:80:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1778:80:1;;;:::i;31167:391:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;31167:391:5;;;;;;;;:::i;:::-;;2441:27:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2441:27:3;;;:::i;2150:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2150:23:3;;;:::i;24745:159:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24745:159:5;;;:::i;17300:315::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17300:315:5;;;;;;;;:::i;12249:2583::-;;;;;;;;;:::i;:::-;;;;;;;;;1580:77:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1580:77:7;;;;;;;;:::i;7601:2798:5:-;;;;;;;;;:::i;598:32:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;598:32:7;;;:::i;2021:21:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2021:21:3;;;:::i;:::-;;;;;;;;2633:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2633:48:3;;;;;;;;:::i;2176:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:29:3;;;:::i;3823:156:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3823:156:5;;;;;;;;:::i;22451:120::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22451:120:5;;;:::i;20318:285::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20318:285:5;;;;;;;;:::i;2310:24:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2310:24:3;;;:::i;22119:227:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22119:227:5;;;:::i;28552:995::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;28552:995:5;;;;;;;;:::i;26954:895::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26954:895:5;;;;;;;;:::i;:::-;;;;;;;;;;1386:73:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1386:73:7;;;;;;;;:::i;2035:96:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2035:96:1;;;;;;;;:::i;47566:377:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;47566:377:5;;;;;;;;:::i;2115:31:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2115:31:3;;;:::i;2407:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2407:31:3;;;:::i;2241:36::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2241:36:3;;;:::i;21419:245:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21419:245:5;;;:::i;25557:509::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25557:509:5;;;;;;;;:::i;22757:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22757:101:5;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;976:37:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;976:37:7;;;:::i;1134:83:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;25091:232:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25091:232:5;;;:::i;1998:20:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1998:20:3;;;:::i;633:22:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;633:22:7;;;:::i;4471:340:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4471:340:5;;;;;;;;:::i;899:21:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;899:21:7;;;:::i;16923:145:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16923:145:5;;;;;;;;:::i;23018:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23018:136:5;;;;;;;;:::i;2281:26:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2281:26:3;;;:::i;53404:333:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;53404:333:5;;;;;;;;:::i;815:31:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:31:7;;;:::i;55680:115:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;55680:115:5;;;;;;;;:::i;23646:162::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23646:162:5;;;;;;;;:::i;2208:30:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2208:30:3;;;:::i;1977:745:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1977:745:7;;;;;;;;:::i;4714:816::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4714:816:7;;;;;;;;:::i;2464:123:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2464:123:1;;;;;;;;:::i;5857:447:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5857:447:7;;;;;;;;:::i;2854:51:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2854:51:3;;;;;;;;:::i;2904:587:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2904:587:7;;;;;;;;:::i;21843:115:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21843:115:5;;;;;;;;:::i;2337:27:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2337:27:3;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1351:98:142;;;;;;;;:::i;15691:938:5:-;;;;;;;;;:::i;658:20:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;658:20:7;;;:::i;275:215:6:-;;;;;;;;;:::i;2355:35:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2355:35:5;;;:::i;30250:914::-;30450:20;30480:18;;30476:685;;-1:-1:-1;;;;;30509:36:5;;30505:84;;30572:17;;-1:-1:-1;;;;;30572:17:5;;-1:-1:-1;30505:84:5;30594:20;30617:13;:81;30666:22;30690:4;30649:46;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;30649:46:5;;;30639:57;;49:4:-1;30639:57:5;;;;30617:81;;;;;;;;;;;30631:66;30617:81;;30731:21;;30775:16;;;30844:74;;-1:-1:-1;;;30844:74:5;;30617:81;;-1:-1:-1;;;;;;30731:21:5;;;;30718:51;;30731:21;30775:16;;;;;;;30797:22;;30825:13;;30731:21;;30844:60;;:74;;30617:81;;30844:74;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30844:74:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30844:74:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30844:74:5;;;;;;;;;30943:4;30718:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30718:251:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30718:251:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30718:251:5;;;;;;;;;30703:266;;30996:86;31028:12;31042:18;:16;:18::i;:::-;31062:19;30996:31;:86::i;:::-;30975:107;-1:-1:-1;31107:20:5;;-1:-1:-1;31107:18:5;;-1:-1:-1;31107:20:5:i;:::-;31092:12;:35;31088:69;;;31150:1;31135:16;;31088:69;30476:685;;30250:914;;;;;:::o;493:382:6:-;602:22;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;;;;;;;;;592:1;1185:14;:40;630:99:6;;;;658:23;670:10;658:11;:23::i;:::-;641:40;;630:99;;;707:22;718:10;707;:22::i;:::-;690:39;;630:99;738:19;;734:138;;776:17;;764:55;;-1:-1:-1;;;764:55:6;;-1:-1:-1;;;;;776:17:6;;;;764:39;;:55;;804:14;;764:55;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;764:55:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;764:55:6;;;;824:43;842:8;852:14;824:17;:43::i;:::-;493:1:143;1234:14;:38;493:382:6;;-1:-1:-1;;;493:382:6:o;559:36:7:-;;;-1:-1:-1;;;;;559:36:7;;:::o;26169:332:5:-;26274:22;;26230:7;;;;-1:-1:-1;;;;;26274:22:5;:36;26270:153;;26348:22;;26331:87;;-1:-1:-1;;;26331:87:5;;-1:-1:-1;;;;;26348:22:5;;;;26331:64;;:87;;26404:4;;26411:6;;26331:87;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26331:87:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26331:87:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;26331:87:5;;;;;;;;;26317:101;;26270:153;26433:64;26490:6;26433:52;26472:12;:10;:12::i;:::-;26433:34;26455:11;26433:17;26443:6;26433:9;:17::i;:::-;:21;:34;:21;:34;:::i;:::-;:38;:52;:38;:52;:::i;:::-;:56;:64;:56;:64;:::i;:::-;26426:71;;;26169:332;;;;:::o;1977:18:3:-;;;;;;;;;;;;;;-1:-1:-1;;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1489:181:0:-;1574:10;1556:4;1566:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1566:29:0;;;;;;;;;;:38;;;1613;1556:4;;1566:29;;1613:38;;;;1598:6;;1613:38;;;;;;;;;;-1:-1:-1;1662:4:0;1489:181;;;;;:::o;23294:120:5:-;23345:7;23365:45;23389:20;23407:1;23389:17;:20::i;23365:45::-;23358:52;;23294:120;;:::o;24056:219::-;24131:7;24144:19;24166:18;:16;:18::i;:::-;24144:40;-1:-1:-1;24192:16:5;;24188:84;;24222:45;24242:11;24255;24222:19;:45::i;:::-;24215:52;;;;;24188:84;24056:219;;;;:::o;1778:80:1:-;1842:12;;1778:80;:::o;31167:391:5:-;31356:27;31392:101;31418:14;31434:13;31449:19;31470:22;31392:25;:101::i;:::-;31353:140;;;;31528:9;31505:19;:32;;31497:57;;;;-1:-1:-1;;;31497:57:5;;;;;;;;;31167:391;;;;;;:::o;2441:27:3:-;;;;:::o;2150:23::-;;;;:::o;24745:159:5:-;24827:21;;24883:16;;;24814:86;;-1:-1:-1;;;24814:86:5;;24794:7;;-1:-1:-1;;;;;24827:21:5;;;;24814:53;;:86;;24876:4;;24827:21;24883:16;;;;;;;24814:86;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24814:86:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24814:86:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;24814:86:5;;;;;;;;17300:315;17518:21;;17505:58;;-1:-1:-1;;;17505:58:5;;17393:4;;17413:198;;17440:5;;17451:3;;17460:6;;-1:-1:-1;;;;;17518:21:5;;17505:46;;:58;;17552:10;;17505:58;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17505:58:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17505:58:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17505:58:5;;;;;;;;;:101;;-1:-1:-1;;;;;17580:14:5;;;;;;:7;:14;;;;;;;;17595:10;17580:26;;;;;;;;17505:101;;;-1:-1:-1;;17505:101:5;17413:21;:198::i;:::-;17403:208;17300:315;-1:-1:-1;;;;17300:315:5:o;12249:2583::-;12754:7;12766;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;12844:13:5;:11;:13::i;:::-;12862:107;12883:14;12899:13;12914:19;12935:22;12959:9;12862:20;:107::i;:::-;-1:-1:-1;;;;;12978:36:5;;12974:94;;13046:17;;-1:-1:-1;;;;;13046:17:5;;-1:-1:-1;12974:94:5;13106:16;;-1:-1:-1;;;;;13080:42:5;;;13106:16;;;;;13080:42;;13072:57;;;;-1:-1:-1;;;13072:57:5;;;;;;;;;13193:11;;;:35;;-1:-1:-1;13208:10:5;-1:-1:-1;;;;;13208:20:5;;;13193:35;13185:72;;;;-1:-1:-1;;;13185:72:5;;;;;;;;;-1:-1:-1;;;;;13307:40:5;;13350:1;13307:40;;;:16;:40;;;;;;:44;13303:122;;-1:-1:-1;;;;;13384:40:5;;;;;;:16;:40;;;;;;13361:63;;;13353:72;;;;;;13450:16;;;;;-1:-1:-1;;;;;13450:16:5;13470:1;13433:34;;;:16;:34;;;;;;:38;13429:104;;13515:16;;;;;-1:-1:-1;;;;;13515:16:5;13498:34;;;;:16;:34;;;;;;13481:51;;;13473:60;;;;;;13694:20;13717:73;13731:22;13755:19;13776:13;13717;:73::i;:::-;13694:96;-1:-1:-1;13802:17:5;13794:32;;;;-1:-1:-1;;;13794:32:5;;;;;;;;;13831:31;;:::i;:::-;13866:29;;:::i;:::-;13927:4;13900:32;;-1:-1:-1;;;;;13952:25:5;;13900:16;13952;;;:25;;;13981:16;;;:25;;;;14123:14;;:29;;;14288:14;;;:30;;;14322:14;;;:36;;;14363:17;:15;:17::i;:::-;14420:120;14485:14;14504:11;14516:1;14504:14;;;;14420:29;:120::i;:::-;14385:155;;14386:14;;;14385:155;14601:36;14614:6;14622:14;14601:12;:36::i;:::-;14584:53;;14651:177;14671:6;14683:1;14709:14;14746:22;14774:13;14793:11;14810:13;14651:14;:177::i;:::-;493:1:143;1234:14;:38;14641:187:5;;;;-1:-1:-1;12249:2583:5;-1:-1:-1;;;;;;;;;;;;12249:2583:5:o;1580:77:7:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1637:6:7;:16;;-1:-1:-1;;;;;;1637:16:7;-1:-1:-1;;;;;1637:16:7;;;;;;;;;;1580:77::o;7601:2798:5:-;8198:7;8210;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;8295:19:5;8287:33;;;;-1:-1:-1;;;8287:33:5;;;;;;;;;8325:13;:11;:13::i;:::-;-1:-1:-1;;;;;8388:40:5;;8431:1;8388:40;;;:16;:40;;;;;;:44;8384:122;;-1:-1:-1;;;;;8465:40:5;;;;;;:16;:40;;;;;;8442:63;;;8434:72;;;;;;8524:9;:14;;:50;;;8555:19;8542:9;:32;8524:50;8523:101;;;;-1:-1:-1;8584:24:5;;;;:39;;-1:-1:-1;8612:11:5;;;8584:39;8523:180;;;;-1:-1:-1;;;;;;8633:36:5;;;;;:54;;-1:-1:-1;8673:9:5;:14;;8633:54;:69;;;-1:-1:-1;8691:11:5;;;8633:69;8523:227;;;;-1:-1:-1;8712:11:5;;;:37;;-1:-1:-1;8727:10:5;-1:-1:-1;;;;;8727:22:5;;;8712:37;8511:251;;;;-1:-1:-1;;;8511:251:5;;;;;;;;;-1:-1:-1;;;;;9283:36:5;;9279:94;;9351:17;;-1:-1:-1;;;;;9351:17:5;;-1:-1:-1;9279:94:5;9410:16;;-1:-1:-1;;;;;9384:42:5;;;9410:16;;;;;9384:42;;9376:57;;;;-1:-1:-1;;;9376:57:5;;;;;;;;;9438:17;:15;:17::i;:::-;9460:31;;:::i;:::-;9495:29;;:::i;:::-;9556:4;9529:32;;-1:-1:-1;;;;;9581:27:5;;;9529:16;9581;;;:27;;;;9612;;;:16;;;:27;9698:14;;:31;;;9860:134;9715:14;9915:20;9543:1;9915:17;:20::i;:::-;9971:19;9860:31;:134::i;:::-;9810:11;9822:1;9810:14;;;9826:11;9838:1;9826:14;;;9842:11;9854:1;9842:14;;;9809:185;;;;;;;;10060:19;10043:11;10055:1;10043:14;;;:36;;;;;10094:301;10114:6;10126:14;10167:21;;;;;;;;;-1:-1:-1;;;;;10167:21:5;-1:-1:-1;;;;;10146:60:5;;10213:13;:81;10262:22;10286:4;10245:46;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10245:46:5;;;10235:57;;;;;;10227:66;;10213:81;;;;;;;;;;;;10146:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10146:154:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10146:154:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10146:154:5;;;;;;;;;10306:22;10334:13;10353:11;10094:301;;;;;;;;;;;;:14;:301::i;:::-;493:1:143;1234:14;:38;10084:311:5;;;;-1:-1:-1;7601:2798:5;-1:-1:-1;;;;;;;;;;;7601:2798:5:o;598:32:7:-;;;-1:-1:-1;;;;;598:32:7;;:::o;2021:21:3:-;;;;;;:::o;2633:48::-;;;;;;;;;;;;;:::o;2176:29::-;;;;:::o;3823:156:5:-;3909:18;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;3940:35:5;3951:8;3961:13;3940:10;:35::i;:::-;3933:42;;1229:1:143;493;1234:14;:38;3823:156:5;;-1:-1:-1;;3823:156:5:o;22451:120::-;22505:7;22525:42;22548:18;:16;:18::i;:::-;22525:22;:42::i;20318:285::-;20373:6;20428:12;20470:4;2569:66;20476:18;;20453:42;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20453:42:5;;;20443:53;;;;;;20428:68;;20529:70;20539:4;20545:8;:14;20554:4;-1:-1:-1;;;;;20545:14:5;-1:-1:-1;;;;;20545:14:5;;;;;;;;;;;;;20561:12;:10;:12::i;:::-;-1:-1:-1;;;;;20575:23:5;;;;;;:17;:23;;;;;;20529:9;:70::i;2310:24:3:-;;;;:::o;22119:227:5:-;22167:7;22180:19;22202:20;22220:1;22202:17;:20::i;:::-;22180:42;;22226:19;22248:18;:16;:18::i;:::-;22226:40;;22288:11;22274;:25;22270:73;;;22313:25;;;-1:-1:-1;22306:32:5;;22270:73;22119:227;;;:::o;28552:995::-;28751:21;28782:17;;28778:766;;28811:23;28838:86;28870:12;28884:18;:16;:18::i;28838:86::-;28806:118;;;;28953:20;:18;:20::i;:::-;28934:15;:39;28930:610;;-1:-1:-1;;;;;28985:36:5;;28981:84;;29048:17;;-1:-1:-1;;;;;29048:17:5;;-1:-1:-1;28981:84:5;29071:20;29094:13;:81;29143:22;29167:4;29126:46;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;29126:46:5;;;29116:57;;49:4:-1;29116:57:5;;;;29094:81;;;;;;;;;;;29108:66;29094:81;;29206:21;;29265:16;;;29342:74;;-1:-1:-1;;;29342:74:5;;29094:81;;-1:-1:-1;29193:292:5;;29482:2;;-1:-1:-1;;;;;29206:21:5;;;;29193:64;;29206:21;29265:16;;;;;29289:22;;29319:15;;29206:21;;29342:60;;:74;;29094:81;;29342:74;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29342:74:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29342:74:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;29342:74:5;;;;;;;;;29442:4;29193:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29193:277:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29193:277:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;29193:277:5;;;;;;;;:292;29181:304;;;;;;26954:895;27163:17;;;-1:-1:-1;;;;;27242:36:5;;27238:94;;27310:17;;-1:-1:-1;;;;;27310:17:5;;-1:-1:-1;27238:94:5;27336:20;27359:73;27373:22;27397:19;27418:13;27359;:73::i;:::-;27336:96;;27465:59;27495:14;27511:12;27465:29;:59::i;:::-;27437:87;;-1:-1:-1;27437:87:5;-1:-1:-1;27544:20:5;:18;:20::i;:::-;27532:9;:32;27528:64;;;-1:-1:-1;27579:1:5;;-1:-1:-1;27579:1:5;;-1:-1:-1;27579:1:5;;-1:-1:-1;27571:16:5;;27528:64;27612:28;:13;27630:9;27612:28;:17;:28;:::i;:::-;27671:21;;27725:16;;;27658:187;;-1:-1:-1;;;27658:187:5;;27596:44;;-1:-1:-1;;;;;;27671:21:5;;;;27658:62;;:187;;27671:21;27725:16;;;;;27746:22;;27596:44;;27791:19;;27815:12;;27832:9;;27658:187;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27658:187:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27658:187:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;27658:187:5;;;;;;;;;27645:200;;26954:895;;;;;;;;;;:::o;1386:73:7:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1441:5:7;:14;;-1:-1:-1;;;;;;1441:14:7;-1:-1:-1;;;;;1441:14:7;;;;;;;;;;1386:73::o;2035:96:1:-;-1:-1:-1;;;;;2111:16:1;2091:7;2111:16;;;:8;:16;;;;;;;2035:96::o;47566:377:5:-;47658:7;47675:16;;;;;:46;;;47710:11;47695;:26;;47675:46;47671:269;;;47739:196;47928:6;47739:178;47839:77;47852:6;47873:21;;;;;;;;;-1:-1:-1;;;;;47873:21:5;-1:-1:-1;;;;;47860:53:5;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;47860:55:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47860:55:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;47860:55:5;;;;;;;;;47839:12;:77::i;:::-;47739:89;47785:42;47802:11;47815;47785:16;:42::i;:::-;47739:35;47762:11;47739:22;:35::i;:196::-;47728:207;;;;2115:31:3;;;;;;-1:-1:-1;;;;;2115:31:3;;:::o;2407:::-;;;;:::o;2241:36::-;;;;:::o;21419:245:5:-;21511:15;;21462:13;;;;21537:15;-1:-1:-1;;;;;21511:42:5;;;:15;;:42;21507:96;;21581:17;:15;:17::i;:::-;21560:38;-1:-1:-1;;21507:96:5;21614:46;21626:33;21644:14;21626:17;:33::i;:::-;21614:11;:46::i;:::-;21607:53;;;21419:245;:::o;25557:509::-;25630:23;25810:27;25840:29;25865:3;25840:20;25857:2;25840:12;;:16;;:20;;;;:::i;:29::-;25810:59;-1:-1:-1;25873:14:5;25890:40;25898:6;25810:59;25890:40;:19;:40;:::i;:::-;25873:57;;25934:19;25956:41;25990:6;25956:29;25978:6;25956:17;:15;:17::i;:41::-;25934:63;-1:-1:-1;26019:43:5;26047:14;26019:23;25934:63;26035:6;26019:23;:15;:23;:::i;:43::-;26001:61;25557:509;-1:-1:-1;;;;;25557:509:5:o;22757:101::-;22808:7;22828:26;22852:1;22828:23;:26::i;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;976:37:7:-;;;-1:-1:-1;;;;;976:37:7;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;25091:232:5:-;25183:15;;25140:7;;;;25209:15;-1:-1:-1;;;;;25183:42:5;;;:15;;:42;25179:96;;25253:17;:15;:17::i;:::-;25232:38;-1:-1:-1;;25179:96:5;25286:33;25304:14;25286:17;:33::i;1998:20:3:-;;;;;;;;;;;;;;;-1:-1:-1;;1998:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;633:22:7;;;-1:-1:-1;;;;;633:22:7;;:::o;4471:340:5:-;4554:22;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;4599:22:5;4610:10;4599;:22::i;:::-;4582:39;-1:-1:-1;4715:19:5;;4711:97;;4741:62;4755:16;;;;;;;;;-1:-1:-1;;;;;4755:16:5;4773:8;4783:14;4741:62;;;;;;;;;;;;;-1:-1:-1;;;4741:62:5;;;:13;:62::i;899:21:7:-;;;-1:-1:-1;;;;;899:21:7;;:::o;16923:145:5:-;16988:4;17005:59;17027:10;17039:3;17044:6;-1:-1:-1;;17005:21:5;:59::i;23018:136::-;23093:7;23113:37;23137:12;23113:23;:37::i;2281:26:3:-;;;;:::o;53404:333:5:-;53467:13;53486:10;53533:6;53516:24;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;53516:24:5;;;53506:35;;;;;;53486:56;;53546:12;53588:3;53601:66;53571:98;;;;;;;;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;53571:98:5;;;53561:109;;49:4:-1;53561:109:5;;;;53700:11;;53404:333;-1:-1:-1;;;;53404:333:5:o;815:31:7:-;;;-1:-1:-1;;;;;815:31:7;;:::o;55680:115:5:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;55757:22:5;:34;;-1:-1:-1;;;;;;55757:34:5;-1:-1:-1;;;;;55757:34:5;;;;;;;;;;55680:115::o;23646:162::-;23721:7;23741:63;23765:38;23790:12;23765:20;23783:1;23765:17;:20::i;2208:30:3:-;;;;:::o;1977:745:7:-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;2162:16;;2097:33;;2162:16;;;-1:-1:-1;;;;;2162:16:7;2134:25;2183:174;2207:14;:21;2203:1;:25;2183:174;;;2270:17;2240:14;2255:1;2240:17;;;;;;;;;;;;;;:27;;:47;-1:-1:-1;;;;;2240:47:7;;;-1:-1:-1;;;;;2240:47:7;;;;;2324:14;:28;;2345:7;2324:28;;;2341:1;2324:28;2292:60;;:14;2307:1;2292:17;;;;;;;;;;;;;;;;;;:29;;:60;2230:3;;2183:174;;;-1:-1:-1;2401:21:7;;2380:75;;-1:-1:-1;;;2380:75:7;;-1:-1:-1;;;;;2401:21:7;;;;2380:59;;:75;;2440:14;;2380:75;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2380:75:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2380:75:7;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2380:75:7;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;2380:75:7;;;;;;;;;2361:94;-1:-1:-1;2464:9:7;2459:260;2483:16;:23;2479:1;:27;2459:260;;;2695:16;2712:1;2695:19;;;;;;;;;;;;;;2518:13;:174;2593:14;2608:1;2593:17;;;;;;;;;;;;;;:33;;;2635:14;2568:106;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2568:106:7;;;2551:130;;49:4:-1;2551:130:7;;;;2518:174;;;;;;;;;;2537:150;2518:174;:196;2508:3;;2459:260;;;;1160:1;;1977:745;;:::o;4714:816::-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;1875:6:3;4951:30:7;:15;4971:9;4951:30;:19;:30;:::i;:::-;:55;;4943:89;;;;-1:-1:-1;;;4943:89:7;;;;;;;;;1875:6:3;5044:44:7;:22;5071:16;5044:44;:26;:44;:::i;:::-;:69;;5036:103;;;;-1:-1:-1;;;5036:103:7;;;;;;;;;1875:6:3;5152:12:7;:37;;:76;;;;;1875:6:3;5193:10:7;:35;;5152:76;5144:104;;;;-1:-1:-1;;;5144:104:7;;;;;;;;;5253:8;:20;;;;5277:14;:32;;;;5313:15;:34;;;;5351:21;:46;5402:11;:26;5445:9;:22;5484:12;:28;4714:816::o;2464:123:1:-;-1:-1:-1;;;;;2558:15:1;;;2538:7;2558:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2464:123::o;5857:447:7:-;6000:6;;-1:-1:-1;;;;;6000:6:7;5986:10;:20;5978:43;;;;-1:-1:-1;;;5978:43:7;;;;;;;;;6065:12;6155:6;6138:24;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6138:24:7;;;6128:35;;;;;;6179:66;6098:154;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6098:154:7;;;6083:174;;;;;;6065:192;;6288:8;6282:4;6275:22;6270:31;;;:::o;2854:51:3:-;;;;;;;;;;;;;:::o;2904:587:7:-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;3030:47;;;3022:74;;;;-1:-1:-1;;;3022:74:7;;;;;;;;;3137:38;;;;;;;;;;;;;;;;3101:33;;3151:16;3137:38;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;3137:38:7;-1:-1:-1;3101:74:7;-1:-1:-1;3184:9:7;3179:225;3199:27;;;3179:225;;;3238:10;3286:16;;3303:1;3286:19;;;;;;;;;;;;;;;;;;;;;;3307:13;;3321:1;3307:16;;;;;;;;;;;;;;;;;;;;;;3269:55;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3269:55:7;;;3259:66;;;;;;3251:75;;3238:88;;3353:13;:17;3367:2;3353:17;;;;;;;;;;;;3331:16;3348:1;3331:19;;;;;;;;;;;;;;;;;;:39;;;;3382:17;;;;:13;:17;;;;;3375:24;3228:3;;3179:225;;;-1:-1:-1;3429:21:7;;3408:79;;-1:-1:-1;;;3408:79:7;;-1:-1:-1;;;;;3429:21:7;;;;3408:61;;:79;;3470:16;;3408:79;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3408:79:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3408:79:7;;;;1160:1;2904:587;;;;:::o;21843:115:5:-;-1:-1:-1;;;;;21930:24:5;21904:13;21930:24;;;:17;:24;;;;;;;21843:115::o;2337:27:3:-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;15691:938:5:-;16216:7;;-1:-1:-1;;;;;16310:31:5;;;16306:139;;16374:21;;16346:99;;-1:-1:-1;;;16346:99:5;;-1:-1:-1;;;;;16374:21:5;;;;16346:72;;:99;;16419:6;;16427:17;;16346:99;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16346:99:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16346:99:5;;;;16306:139;16459:166;16476:6;16488:14;16508:13;16527:19;16552:22;16580:6;16592:9;16607:13;;16459:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16459:11:5;;-1:-1:-1;;;16459:166:5:i;:::-;16449:176;;;;15691:938;;;;;;;;;;;;;:::o;658:20:7:-;;;-1:-1:-1;;;;;658:20:7;;:::o;275:215:6:-;365:18;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;389:97:6;;;;407:32;419:8;429:9;407:11;:32::i;:::-;400:39;;;;389:97;455:31;466:8;476:9;455:10;:31::i;2355:35:5:-;2389:1;2355:35;:::o;37694:703::-;37874:20;37899:29;37933:23;37981:51;38006:12;38020:11;37981:24;:51::i;:::-;37966:66;-1:-1:-1;38162:169:5;38195:132;38213:6;38225:72;38279:17;38225:49;38213:6;38225:37;37966:66;38242:19;38225:37;:16;:37;:::i;38195:132::-;38162:24;:12;38179:6;38162:24;:16;:24;:::i;:169::-;38144:187;-1:-1:-1;38360:33:5;38144:187;38380:12;38360:33;:19;:33;:::i;:::-;38336:57;;37694:703;;;;;;;:::o;46398:126::-;46478:16;;;46471:49;;-1:-1:-1;;;46471:49:5;;46451:7;;46478:16;;;;-1:-1:-1;;;;;46478:16:5;;46471:34;;:49;;46514:4;;46471:49;;;56237:681;56348:22;;56331:91;;-1:-1:-1;;;56331:91:5;;56296:7;;;;-1:-1:-1;;;;;56348:22:5;;;;56331:64;;:91;;56404:4;;56411:10;;56331:91;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56331:91:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;56331:91:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;56331:91:5;;;;;;;;;56309:113;;56476:10;56434:38;56450:21;56460:10;56450:9;:21::i;:::-;56434:11;;:38;:15;:38;:::i;:::-;:52;;56426:83;;;;-1:-1:-1;;;56426:83:5;;;;;;;;;56518:15;;56514:330;;56621:10;56607:11;:24;56603:237;;;56656:22;;56639:89;;-1:-1:-1;;;56639:89:5;;-1:-1:-1;;;;;56656:22:5;;;;56639:49;;:89;;56697:4;;56704:11;;56717:10;;56639:89;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56639:89:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;56639:89:5;;;;56603:237;;;56763:22;;56746:88;;-1:-1:-1;;;56746:88:5;;-1:-1:-1;;;;;56763:22:5;;;;56746:49;;:88;;56804:4;;56811:10;;56823;;56746:88;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56746:88:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;56746:88:5;;;;56603:237;56892:22;56903:10;33643:1275;33701:22;33737:15;33729:30;;;;-1:-1:-1;;;33729:30:5;;;;;;;;;33781:21;33791:10;33781:9;:21::i;:::-;33768:10;:34;33764:129;;;-1:-1:-1;;33817:10:5;:25;33809:40;;;;-1:-1:-1;;;33809:40:5;;;;;;;;;33867:21;33877:10;33867:9;:21::i;:::-;33854:34;;33764:129;33897:17;:15;:17::i;:::-;33919:20;33942:33;33954:20;33972:1;33954:17;:20::i;33942:33::-;33919:56;-1:-1:-1;33980:22:5;34005:40;34038:6;34005:28;:10;33919:56;34005:28;:14;:28;:::i;:40::-;33980:65;;34049:37;34089:20;:18;:20::i;:::-;34049:60;;34131:14;34114:31;;34175:29;34157:14;:47;;34149:62;;;;-1:-1:-1;;;34149:62:5;;;;;;;;;34393:22;;34362:19;;-1:-1:-1;;;;;34393:22:5;:36;34389:150;;34465:22;;34448:91;;-1:-1:-1;;;34448:91:5;;-1:-1:-1;;;;;34465:22:5;;;;34448:64;;:91;;34521:4;;34528:10;;34448:91;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34448:91:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34448:91:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;34448:91:5;;;;;;;;;34434:105;;34389:150;34573:10;34543:18;34564:20;;;:8;:20;;;;;;:37;;34589:11;34564:37;:24;:37;:::i;:::-;34543:58;-1:-1:-1;34605:18:5;34626:26;34543:58;34641:10;34626:26;:14;:26;:::i;:::-;34605:47;;34657:59;34663:10;34675;34687:14;34703:12;34657:5;:59::i;:::-;;34846:68;34865:10;34877;34889;34901:12;34846:18;:68::i;:::-;33643:1275;;;;;;;;;:::o;2414:330:136:-;2514:6;2489:21;:31;;2481:73;;;;-1:-1:-1;;;2481:73:136;;;;;;;;;2608:12;2626:9;-1:-1:-1;;;;;2626:14:136;2647:6;2626:32;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2607:51:136;;;2670:7;2662:78;;;;-1:-1:-1;;;2662:78:136;;;;;;;;;2414:330;;;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;1999:399;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;2817:121;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;52722:395:5:-;52796:19;52825:12;;52841:1;52825:17;52821:293;;52873:19;;52972:18;52968:96;;53014:44;53039:18;:16;:18::i;:::-;53014:20;:18;:20::i;:44::-;52998:60;;52968:96;53076:33;:13;53094:14;53076:33;:17;:33;:::i;17998:1140::-;18128:4;-1:-1:-1;;18142:16:5;:31;18138:110;;18209:34;;;;;;;;;;;;-1:-1:-1;;;18209:34:5;;;;;;:16;;18230:6;;18209:34;:20;:34;:::i;:::-;-1:-1:-1;;;;;18180:14:5;;;;;;:7;:14;;;;;;;;18195:10;18180:26;;;;;;;:63;18138:110;-1:-1:-1;;;;;18260:17:5;;18252:32;;;;-1:-1:-1;;;18252:32:5;;;;;;;;;-1:-1:-1;;;;;18313:15:5;;18289:21;18313:15;;;:8;:15;;;;;;;;;18359:31;;;;;;;;;;;-1:-1:-1;;;18359:31:5;;;;;;;18313:15;;18289:21;18359:31;;18313:15;;18377:6;;18359:31;:17;:31;:::i;:::-;-1:-1:-1;;;;;18394:15:5;;;;;;;:8;:15;;;;;;:34;;;18455:13;;;;;;;;;18332:58;;-1:-1:-1;18497:23:5;18455:13;18513:6;18497:23;:15;:23;:::i;:::-;-1:-1:-1;;;;;18524:13:5;;;;;;:8;:13;;;;;:30;;;18472:48;;-1:-1:-1;18620:12:5;:10;:12::i;:::-;18870:22;;18596:36;;-1:-1:-1;;;;;;18861:31:5;;;18870:22;;18861:31;;;;:64;;-1:-1:-1;18903:22:5;;-1:-1:-1;;;;;18896:29:5;;;18903:22;;18896:29;;18861:64;18857:225;;;18932:73;18951:5;18958:13;18973:16;18991:13;18932:18;:73::i;:::-;19010:67;19029:3;19034:11;19047:14;19063:13;19010:18;:67::i;:::-;19107:3;-1:-1:-1;;;;;19091:28:5;19100:5;-1:-1:-1;;;;;19091:28:5;;19112:6;19091:28;;;;;;;;;;;;;;;-1:-1:-1;19130:4:5;;17998:1140;-1:-1:-1;;;;;;;;;17998:1140:5:o;53915:312::-;53996:12;54038:7;;-1:-1:-1;;;;;;54038:7:5;54055:66;54021:102;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;54021:102:5;;;54011:113;;;;;;53996:128;;54128:13;54177:4;54171:11;54159:23;;54198:8;54197:9;54189:34;;;;-1:-1:-1;;;54189:34:5;;;;;;;;;53915:312;;:::o;35831:1405::-;36011:13;36033:24;;36029:1204;;36121:28;36151:33;36215:21;;;;;;;;;-1:-1:-1;;;;;36215:21:5;-1:-1:-1;;;;;36202:46:5;;:48;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36202:48:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36202:48:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36202:48:5;;;;;;;;;36286:16;;;36192:111;;-1:-1:-1;;;36192:111:5;;-1:-1:-1;;;;;36192:69:5;;;;;;:111;;36262:22;;36286:16;;;;;;;;36192:111;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36192:111:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36192:111:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36192:111:5;;;;;;;;;36120:183;;;;36317:20;36341:1;36317:25;;36316:63;;;;-1:-1:-1;36348:30:5;;;36316:63;36308:105;;;;-1:-1:-1;;;36308:105:5;;;;;;;;;36483:23;36509:76;36559:25;36509:45;:19;36533:20;36509:45;:23;:45;:::i;:76::-;36758:21;;36803:16;;;36745:116;;-1:-1:-1;;;36745:116:5;;36483:102;;-1:-1:-1;36709:29:5;;-1:-1:-1;;;;;36758:21:5;;;;36745:57;;:116;;36758:21;36803:16;;;;;;36821:22;;36483:102;;36745:116;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36745:116:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36745:116:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36745:116:5;;;;;;;;;36709:152;;36959:19;36934:21;:44;36930:245;;37102:67;37149:19;37102:42;:15;37122:21;37102:42;:19;:42;:::i;:67::-;37084:85;;36930:245;37195:33;:15;37215:12;37195:33;:19;:33;:::i;:::-;37180:48;35831:1405;-1:-1:-1;;;;;;;;35831:1405:5:o;35182:222::-;35265:15;;35241;;-1:-1:-1;;;;;35265:21:5;;;:15;;:21;35261:140;;35306:21;;35353:16;;;35293:77;;-1:-1:-1;;;35293:77:5;;-1:-1:-1;;;;;35306:21:5;;;;35293:59;;:77;;35306:21;35353:16;;;;;;35293:77;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35293:77:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;35376:15:5;:20;;-1:-1:-1;;;;;35376:20:5;;-1:-1:-1;;35376:20:5;;;;;;-1:-1:-1;;35182:222:5;:::o;51862:662::-;51977:20;;;52059:45;52097:6;52059:33;:13;52077:14;52059:33;:17;:33;:::i;:45::-;52026:78;;52294:70;52319:22;52343:20;52361:1;52343:17;:20::i;:::-;52294:24;:70::i;:::-;52279:85;;52458:62;52474:12;52488:7;52497:22;52458:15;:62::i;:::-;52443:77;;51862:662;;;;;;:::o;39227:2094::-;39473:7;39482;39495:13;:11;:13::i;:::-;39542:20;:18;:20::i;:::-;39524:14;;;;:38;;;;:118;;-1:-1:-1;39612:16:5;;;;-1:-1:-1;;;;;39612:30:5;;;39524:118;39512:161;;;;-1:-1:-1;;;39512:161:5;;;;;;;;;39682:16;;;;-1:-1:-1;;;;;39682:30:5;39678:114;;39738:16;;;;-1:-1:-1;;;;;39719:35:5;:16;;;:35;39678:114;39870:16;39889:84;39906:22;39930:13;39945:11;39958:14;39889:16;:84::i;:::-;40160:14;;;;40141;;;;39870:103;;-1:-1:-1;40141:34:5;;:14;:18;:34::i;:::-;40124:14;;;:51;40201:19;;40197:184;;40342:14;;;;:34;;40361:14;40342:18;:34::i;:::-;40325:14;;;:51;40197:184;40385:24;40480:19;;40476:61;;-1:-1:-1;40528:4:5;40476:61;40541:20;40564:13;:96;40613:22;40637:19;40596:61;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;40596:61:5;;;40586:72;;;;;;40578:81;;40564:96;;;;;;;;;;;;40541:119;;40713:21;;;;;;;;;-1:-1:-1;;;;;40713:21:5;-1:-1:-1;;;;;40700:57:5;;40764:8;40810:12;40827:6;40838:19;40862:13;40880;40898:11;40914:13;40700:231;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40700:231:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40700:231:5;;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;40700:231:5;;;;;;;;;40682:14;;;40665:266;40666:14;;;40665:266;;;40935:34;;;;-1:-1:-1;;;40935:34:5;;;;;;;;;41177:21;;41225:16;;;;41149:93;;-1:-1:-1;;;41149:93:5;;-1:-1:-1;;;;;41177:21:5;;;;41149:75;;:93;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41149:93:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41149:93:5;;;;41255:11;41267:1;41255:14;;;;;;;;;;;41271;;;;;41255;;41271;;-1:-1:-1;39227:2094:5;;-1:-1:-1;;;;;;;;;;39227:2094:5:o;31864:901::-;31943:18;31967:20;32084:30;32100:13;32084:15;:30::i;:::-;32296:22;;32055:59;;-1:-1:-1;32055:59:5;-1:-1:-1;32265:19:5;;-1:-1:-1;;;;;32296:22:5;:36;32292:148;;32368:22;;32351:89;;-1:-1:-1;;;32351:89:5;;-1:-1:-1;;;;;32368:22:5;;;;32351:64;;:89;;32424:4;;32431:8;;32351:89;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32351:89:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32351:89:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;32351:89:5;;;;;;;;;32337:103;;32292:148;-1:-1:-1;;;;;32465:18:5;;32444;32465;;;:8;:18;;;;;;:35;;32488:11;32465:35;:22;:35;:::i;:::-;32444:56;-1:-1:-1;32504:18:5;32525:26;32444:56;32540:10;32525:26;:14;:26;:::i;:::-;32504:47;;32592:56;32598:8;32608:10;32620:13;32635:12;32592:5;:56::i;:::-;;32695:66;32714:8;32724:10;32736;32748:12;32695:18;:66::i;:::-;31864:901;;;;;;;;:::o;47086:242::-;47162:7;47179:16;;47175:150;;47203:26;47235:17;:15;:17::i;:::-;-1:-1:-1;47202:50:5;-1:-1:-1;47264:56:5;47308:11;47264:39;47299:3;47264:30;47202:50;47287:6;47264:30;:22;:30;:::i;20916:383::-;21050:18;21078:21;21074:45;;-1:-1:-1;21113:1:5;21106:8;;21074:45;-1:-1:-1;21152:11:5;;21185:110;21152:11;21185:93;1927:6:3;21185:73:5;21248:8;21185:51;21192:13;21218:16;21185:51;:25;:51;:::i;:::-;:55;:73;:55;:73;:::i;:::-;:77;:93;:77;:93;:::i;:::-;:97;:110;:97;:110;:::i;1201:125:145:-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;55301:245:5:-;55392:7;55409:16;;;;;:36;;-1:-1:-1;55429:16:5;;;55409:36;55405:138;;;55498:40;55526:11;55498:23;:11;55514:6;55498:23;:15;:23;:::i;51023:508::-;51346:21;;51413:16;;;51333:100;;-1:-1:-1;;;51333:100:5;;51073:26;;;;;;-1:-1:-1;;;;;51346:21:5;;;;51333:57;;:100;;51403:4;;51346:21;51413:16;;;;;;51333:100;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51333:100:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;51333:100:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;51333:100:5;;;;;;;;;-1:-1:-1;51268:165:5;;-1:-1:-1;51268:165:5;-1:-1:-1;51268:165:5;-1:-1:-1;51455:72:5;;-1:-1:-1;51520:6:5;;-1:-1:-1;51455:60:5;51474:40;51520:6;51268:165;51474:12;:40::i;:::-;51455:14;;:60;:18;:60;:::i;:72::-;51438:89;;51023:508;;;:::o;46696:217::-;46801:12;;46761:7;;46825:21;:84;;46897:12;;46825:84;;;46849:45;46877:16;46849:23;:11;46865:6;46849:23;:15;:23;:::i;48120:465::-;48198:7;;48241:17;;48237:260;;48269:15;;48295;-1:-1:-1;;;;;48269:42:5;;;:15;;:42;48265:98;;48340:17;:15;:17::i;:::-;48319:38;-1:-1:-1;;48265:98:5;48368:15;48386:40;48411:14;48386:20;:18;:20::i;:40::-;48368:58;;48450:7;48435:12;:22;48431:62;;;48480:7;48465:22;;48431:62;48237:260;;48508:73;48533:12;48547:33;48565:14;48547:17;:33::i;780:87:137:-;853:10;780:87;:::o;44412:223:5:-;44553:67;;44526:105;;44546:5;;-1:-1:-1;;;44576:31:5;44553:67;;44609:2;;44613:6;;44553:67;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;44553:67:5;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;44553:67:5;;;179:29:-1;;;;160:49;;;44622:8:5;44526:19;:105::i;:::-;44412:223;;;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;55798:436:5:-;55878:14;55944:35;55955:8;55965:13;55944:10;:35::i;:::-;56076:22;;55935:44;;-1:-1:-1;56044:71:5;;56066:8;;-1:-1:-1;;;;;56076:22:5;55935:44;;56044:21;:71::i;:::-;-1:-1:-1;56171:22:5;;56154:76;;-1:-1:-1;;;56154:76:5;;-1:-1:-1;;;;;56171:22:5;;;;56154:58;;:76;;56213:8;;56223:6;;56154:76;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56154:76:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;49432:1397:5;49535:16;49557;49576:70;49593:39;49616:15;49593:18;:16;:18::i;:39::-;49634:11;49576:16;:70::i;:::-;49720:8;;49761:14;;49805:11;;49844:9;;49884:12;;49557:89;;-1:-1:-1;49651:19:5;;;;49720:8;49761:14;49805:11;49844:9;49905:26;;;49901:143;;;50024:15;50013:26;;49901:143;50063:13;50052:8;:24;50048:778;;;50221:25;;;;;1875:6:3;50155:37:5;;;50255:23;;;50251:52;;;50291:12;50280:23;;50251:52;50323:82;1875:6:3;50323:55:5;50364:13;50323:36;:18;50346:12;50323:36;:22;:36;:::i;:82::-;50309:96;;50422:92;50502:11;50422:75;50484:12;50422:57;50435:43;50448:16;50466:11;50435:12;:43::i;:::-;50422:8;;:57;:12;:57;:::i;:92::-;50411:103;;50048:778;;;;50541:77;50605:12;50541:59;1875:6:3;50541:32:5;:8;50554:18;50541:32;:12;:32;:::i;:77::-;50530:88;-1:-1:-1;50638:12:5;;-1:-1:-1;50638:12:5;;50669:36;:18;50638:12;50669:36;:22;:36;:::i;:::-;50655:50;;50726:11;50715:8;:22;50711:110;;;50750:11;50739:22;;50711:110;;;50786:11;50775:8;:22;50771:50;;;50810:11;50799:22;;50771:50;49432:1397;;;;;;;;;;;;:::o;3070:641:0:-;3256:38;;;;;;;;;;;-1:-1:-1;;;3256:38:0;;;;;;;;-1:-1:-1;;;;;3256:14:0;;3188:7;3256:14;;;:8;:14;;;;;;;3188:7;;3256:38;;:14;3275:12;;3256:38;:18;:38;:::i;:::-;3237:57;;3381:2;3369:8;:14;3365:140;;3457:26;:12;3474:8;3457:26;:16;:26;:::i;:::-;3442:41;;3499:1;3488:12;;3365:140;-1:-1:-1;;;;;3508:14:0;;;;;;:8;:14;;;;;:25;;;3553:12;;:30;;3570:12;3553:30;:16;:30;:::i;:::-;3538:12;:45;3593:46;;-1:-1:-1;;;;;3593:46:0;;;;;;;3604:12;;3618;;3632:6;;3593:46;;;;;;;;;;3671:1;-1:-1:-1;;;;;3648:40:0;3657:4;-1:-1:-1;;;;;3648:40:0;;3675:12;3648:40;;;;;;;;;;;;;;;3699:8;3070:641;-1:-1:-1;;;;;3070:641:0:o;19597:545:5:-;19797:43;;19772:12;;19797:43;;19814:5;;2569:66;;19797:43;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19797:43:5;;;19787:54;;;;;;19772:69;;19846:21;19875:11;19890:1;19875:16;19871:173;;;19914:1;19898:17;;19871:173;;;19930:16;;19926:118;;-1:-1:-1;;;;;20014:24:5;;;;;;:17;:24;;;;;;19970:69;;19980:4;;19986:11;;19999:13;;19970:9;:69::i;:::-;19953:86;;19926:118;20062:28;;-1:-1:-1;;;;;20098:24:5;;;;;;;:17;:24;;;;;:40;;;;-1:-1:-1;;19597:545:5:o;3411:315:145:-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1614:175::-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;54658:379:5:-;54790:28;;54854:43;54888:8;54854:29;:12;54871:11;54854:29;:16;:29;:::i;:43::-;54824:73;-1:-1:-1;54901:15:5;54919:40;54927:6;54824:73;54919:40;:19;:40;:::i;:::-;54901:58;-1:-1:-1;54986:47:5;54901:58;54986:34;:22;55013:6;54986:34;:26;:34;:::i;:47::-;54963:70;54658:379;-1:-1:-1;;;;;;54658:379:5:o;1594:1468:6:-;1815:17;;1898:16;;;;;1941:14;;;1983;;;;2031;;;;1771:16;;-1:-1:-1;;;;;1815:17:6;;;;;;1898:16;;1941:14;;1983;;2058:43;;;;;2050:58;;;;-1:-1:-1;;;2050:58:6;;;;;;;;;2124:9;;-1:-1:-1;2142:21:6;;2138:404;;2200:51;;-1:-1:-1;;;2200:51:6;;-1:-1:-1;;;;;2200:33:6;;;;;:51;;2234:16;;2200:51;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2200:51:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2200:51:6;;;;2256:45;2274:8;2284:16;2256:17;:45::i;:::-;2325:16;2310:12;:31;2306:141;;;2382:21;;2349:92;;;;;;;;;2382:21;2349:92;;;;2363:17;;-1:-1:-1;;;;;2382:21:6;;;;2405:31;;;;2349:13;:92::i;:::-;2138:404;;;2495:21;;2462:75;;;;;;;;;;;;-1:-1:-1;;;2462:75:6;;;;;;2476:17;;-1:-1:-1;;;;;2495:21:6;;;;2518:12;;2462:13;:75::i;:::-;2550:24;;2546:143;;2635:21;;2581:103;;;;;;;;;;;;-1:-1:-1;;;2581:103:6;;;;;;2599:22;;2623:10;;-1:-1:-1;;;;;2635:21:6;;2658:19;;2581:17;:103::i;:::-;2697:18;;2693:366;;2726:13;;;;;:42;;;2755:13;2743:8;:25;;2726:42;2722:333;;;2783:11;-1:-1:-1;;;;;2776:27:6;;2810:13;2776:50;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:50:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2865:21:6;;2832:76;;;;;;;;;;;;-1:-1:-1;;;2832:76:6;;;;;;-1:-1:-1;2846:17:6;;-1:-1:-1;;;;;;2865:21:6;;;;-1:-1:-1;2888:13:6;;2832;:76::i;:::-;2926:13;2914:25;;;;2722:333;;;3006:21;;2957:92;;;;;;;;;;;;-1:-1:-1;;;2957:92:6;;;;;;2975:17;;2994:10;;-1:-1:-1;;;;;3006:21:6;;3029:13;;2957:17;:92::i;:::-;1594:1468;;;;;;;;;;;;:::o;32980:473:5:-;33046:18;;33100;33092:33;;;;-1:-1:-1;;;33092:33:5;;;;;;;;;33130:17;:15;:17::i;:::-;33167:33;33179:20;33197:1;33179:17;:20::i;33167:33::-;33152:48;-1:-1:-1;33217:43:5;33152:48;33217:25;:13;33235:6;33217:25;:17;:25;:::i;:43::-;33204:56;-1:-1:-1;33269:9:5;33265:185;;33290:83;33308:16;;;;;;;;;-1:-1:-1;;;;;33308:16:5;33326:10;33346:4;33353:13;33290:83;;;;;;;;;;;;;-1:-1:-1;;;33290:83:5;;;:17;:83::i;:::-;33265:185;;;33396:17;;;;;;;;;-1:-1:-1;;;;;33396:17:5;-1:-1:-1;;;;;33389:33:5;;33429:13;33389:56;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33389:56:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33389:56:5;;;;;33265:185;32980:473;;;:::o;2167:422:0:-;2284:7;-1:-1:-1;;;;;2305:17:0;;2297:32;;;;-1:-1:-1;;;2297:32:0;;;;;;;;;-1:-1:-1;;;;;2353:13:0;;2334:16;2353:13;;;:8;:13;;;;;;:31;;2371:12;2353:31;:17;:31;:::i;:::-;-1:-1:-1;;;;;2388:13:0;;;;;;:8;:13;;;;;:24;;;2432:12;;2334:50;;-1:-1:-1;2432:30:0;;2449:12;2432:30;:16;:30;:::i;:::-;2417:12;:45;2472;;-1:-1:-1;;;;;2472:45:0;;;;;;;2482:12;;2496;;2510:6;;2472:45;;;;;;;;;;2547:3;-1:-1:-1;;;;;2526:39:0;2543:1;-1:-1:-1;;;;;2526:39:0;;2552:12;2526:39;;;;;;;1774:192:146;1830:6;1853:5;;;1871:6;;;;;;:16;;;1886:1;1881;:6;;1871:16;1870:38;;;;1897:1;1893;:5;:14;;;;;1906:1;1902;:5;1893:14;1862:87;;;;-1:-1:-1;;;1862:87:146;;;;;;;;422:488;478:6;694;690:30;;-1:-1:-1;714:1:146;707:8;;690:30;734:1;-1:-1:-1;;734:7:146;:27;;;;;-1:-1:-1;;;745:1:146;:16;734:27;732:30;724:82;;;;-1:-1:-1;;;724:82:146;;;;;;;;;822:5;;;826:1;822;:5;:1;839:5;;;;;:10;831:62;;;;-1:-1:-1;;;831:62:146;;;;;;;;1331:237;1387:6;1407;1399:51;;;;-1:-1:-1;;;1399:51:146;;;;;;;;;1464:1;-1:-1:-1;;1464:7:146;:27;;;;;-1:-1:-1;;;1475:1:146;:16;1464:27;1462:30;1454:76;;;;-1:-1:-1;;;1454:76:146;;;;;;;;;1535:8;1550:1;1546;:5;;;;;;;1331:237;-1:-1:-1;;;;1331:237:146:o;2166:189::-;2222:6;2245:5;;;2263:6;;;;;;:16;;;2278:1;2273;:6;;2263:16;2262:38;;;;2289:1;2285;:5;:14;;;;;2298:1;2294;:5;2285:14;2254:84;;;;-1:-1:-1;;;2254:84:146;;;;;;;;45987:292:5;46097:12;46111:23;46138:5;-1:-1:-1;;;;;46138:10:5;46149:4;46138:16;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;46096:58:5;;;;46166:7;46175:8;46158:26;;;;;-1:-1:-1;;;46158:26:5;;;;;;;;;;-1:-1:-1;46193:17:5;;:22;46189:87;;46241:10;46230:30;;;;;;;;;;;;;;46262:8;46222:49;;;;;-1:-1:-1;;;46222:49:5;;;;;;;;;45306:253;45467:77;;45440:115;;45460:5;;-1:-1:-1;;;45490:35:5;45467:77;;45527:4;;45533:2;;45537:6;;45467:77;;;;217:2847:6;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;217:2847:6;;;-1:-1:-1;;217:2847:6:o;:::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;217:2847:6;;;-1:-1:-1;;217:2847:6:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;301:352;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;-1:-1;469:20;;-1:-1;;;;;498:30;;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;586:2;391:262;;;;;;1051:722;;1179:3;1172:4;1164:6;1160:17;1156:27;1146:2;;1197:1;1194;1187:12;1146:2;1227:6;1221:13;1249:80;1264:64;1321:6;1264:64;;;1249:80;;;1240:89;;1346:5;1371:6;1364:5;1357:21;1401:4;1393:6;1389:17;1379:27;;1423:4;1418:3;1414:14;1407:21;;1476:6;1523:3;1515:4;1507:6;1503:17;1498:3;1494:27;1491:36;1488:2;;;1540:1;1537;1530:12;1488:2;1565:1;1550:217;1575:6;1572:1;1569:13;1550:217;;;1633:3;1655:48;1699:3;1687:10;1655:48;;;1643:61;;-1:-1;1727:4;1718:14;;;;1746;;;;;1597:1;1590:9;1550:217;;1826:783;;1967:3;1960:4;1952:6;1948:17;1944:27;1934:2;;1985:1;1982;1975:12;1934:2;2022:6;2009:20;2044:104;2059:88;2140:6;2059:88;;2044:104;2035:113;;2165:5;2190:6;2183:5;2176:21;2220:4;2212:6;2208:17;2198:27;;2242:4;2237:3;2233:14;2226:21;;2295:6;2344:3;2334:6;2326;2322:19;2317:3;2313:29;2310:38;2307:2;;;2361:1;2358;2351:12;2307:2;2386:1;2371:232;2396:6;2393:1;2390:13;2371:232;;;2454:3;2476:61;2533:3;2521:10;2476:61;;;2464:74;;-1:-1;2561:4;2552:14;;;;2589:6;2580:16;;;;;2418:1;2411:9;2371:232;;2617:124;2681:20;;2706:30;2681:20;2706:30;;2748:128;2823:13;;2841:30;2823:13;2841:30;;2883:130;2950:20;;2975:33;2950:20;2975:33;;3020:134;3098:13;;3116:33;3098:13;3116:33;;3175:336;;;3289:3;3282:4;3274:6;3270:17;3266:27;3256:2;;3307:1;3304;3297:12;3256:2;-1:-1;3327:20;;-1:-1;;;;;3356:30;;3353:2;;;3399:1;3396;3389:12;3353:2;3433:4;3425:6;3421:17;3409:29;;3484:3;3476:4;3468:6;3464:17;3454:8;3450:32;3447:41;3444:2;;;3501:1;3498;3491:12;3520:440;;3621:3;3614:4;3606:6;3602:17;3598:27;3588:2;;3639:1;3636;3629:12;3588:2;3676:6;3663:20;3698:64;3713:48;3754:6;3713:48;;3698:64;3689:73;;3782:6;3775:5;3768:21;3818:4;3810:6;3806:17;3851:4;3844:5;3840:16;3886:3;3877:6;3872:3;3868:16;3865:25;3862:2;;;3903:1;3900;3893:12;3862:2;3913:41;3947:6;3942:3;3937;3913:41;;;3581:379;;;;;;;;4460:1384;;4573:6;4561:9;4556:3;4552:19;4548:32;4545:2;;;4593:1;4590;4583:12;4545:2;4611:22;4626:6;4611:22;;;4602:31;-1:-1;4681:1;4713:49;4758:3;4738:9;4713:49;;;4688:75;;-1:-1;4826:2;4859:46;4901:3;4877:22;;;4859:46;;;4852:4;4845:5;4841:16;4834:72;4784:133;4968:2;5001:49;5046:3;5037:6;5026:9;5022:22;5001:49;;;4994:4;4987:5;4983:16;4976:75;4927:135;5117:2;5150:49;5195:3;5186:6;5175:9;5171:22;5150:49;;;5143:4;5136:5;5132:16;5125:75;5072:139;5272:3;5306:49;5351:3;5342:6;5331:9;5327:22;5306:49;;;5299:4;5292:5;5288:16;5281:75;5221:146;5429:3;5463:49;5508:3;5499:6;5488:9;5484:22;5463:49;;;5456:4;5449:5;5445:16;5438:75;5377:147;5587:3;5621:49;5666:3;5657:6;5646:9;5642:22;5621:49;;;5614:4;5607:5;5603:16;5596:75;5534:148;5739:3;5773:49;5818:3;5809:6;5798:9;5794:22;5773:49;;;5766:4;5759:5;5755:16;5748:75;5692:142;4539:1305;;;;;6129:241;;6233:2;6221:9;6212:7;6208:23;6204:32;6201:2;;;6249:1;6246;6239:12;6201:2;6284:1;6301:53;6346:7;6326:9;6301:53;;6377:263;;6492:2;6480:9;6471:7;6467:23;6463:32;6460:2;;;6508:1;6505;6498:12;6460:2;6543:1;6560:64;6616:7;6596:9;6560:64;;6647:366;;;6768:2;6756:9;6747:7;6743:23;6739:32;6736:2;;;6784:1;6781;6774:12;6736:2;6819:1;6836:53;6881:7;6861:9;6836:53;;;6826:63;;6798:97;6926:2;6944:53;6989:7;6980:6;6969:9;6965:22;6944:53;;;6934:63;;6905:98;6730:283;;;;;;7020:491;;;;7158:2;7146:9;7137:7;7133:23;7129:32;7126:2;;;7174:1;7171;7164:12;7126:2;7209:1;7226:53;7271:7;7251:9;7226:53;;;7216:63;;7188:97;7316:2;7334:53;7379:7;7370:6;7359:9;7355:22;7334:53;;;7324:63;;7295:98;7424:2;7442:53;7487:7;7478:6;7467:9;7463:22;7442:53;;;7432:63;;7403:98;7120:391;;;;;;7518:360;;;7636:2;7624:9;7615:7;7611:23;7607:32;7604:2;;;7652:1;7649;7642:12;7604:2;7687:1;7704:53;7749:7;7729:9;7704:53;;;7694:63;;7666:97;7794:2;7812:50;7854:7;7845:6;7834:9;7830:22;7812:50;;7885:366;;;8006:2;7994:9;7985:7;7981:23;7977:32;7974:2;;;8022:1;8019;8012:12;7974:2;8057:1;8074:53;8119:7;8099:9;8074:53;;;8064:63;;8036:97;8164:2;8182:53;8227:7;8218:6;8207:9;8203:22;8182:53;;8258:485;;;;8393:2;8381:9;8372:7;8368:23;8364:32;8361:2;;;8409:1;8406;8399:12;8361:2;8444:1;8461:53;8506:7;8486:9;8461:53;;;8451:63;;8423:97;8551:2;8569:53;8614:7;8605:6;8594:9;8590:22;8569:53;;;8559:63;;8530:98;8659:2;8677:50;8719:7;8710:6;8699:9;8695:22;8677:50;;8750:672;;;;;8938:2;8926:9;8917:7;8913:23;8909:32;8906:2;;;8954:1;8951;8944:12;8906:2;8989:31;;-1:-1;;;;;9029:30;;9026:2;;;9072:1;9069;9062:12;9026:2;9100:80;9172:7;9163:6;9152:9;9148:22;9100:80;;;9090:90;;;;8968:218;9245:2;9234:9;9230:18;9217:32;-1:-1;;;;;9261:6;9258:30;9255:2;;;9301:1;9298;9291:12;9255:2;9329:77;9398:7;9389:6;9378:9;9374:22;9329:77;;;8900:522;;;;-1:-1;9319:87;-1:-1;;;;8900:522;9429:392;;9569:2;9557:9;9548:7;9544:23;9540:32;9537:2;;;9585:1;9582;9575:12;9537:2;9620:24;;-1:-1;;;;;9653:30;;9650:2;;;9696:1;9693;9686:12;9650:2;9716:89;9797:7;9788:6;9777:9;9773:22;9716:89;;9828:544;;;9995:2;9983:9;9974:7;9970:23;9966:32;9963:2;;;10011:1;10008;10001:12;9963:2;10046:31;;-1:-1;;;;;10086:30;;10083:2;;;10129:1;10126;10119:12;10083:2;10149:102;10243:7;10234:6;10223:9;10219:22;10149:102;;10379:235;;10480:2;10468:9;10459:7;10455:23;10451:32;10448:2;;;10496:1;10493;10486:12;10448:2;10531:1;10548:50;10590:7;10570:9;10548:50;;10621:257;;10733:2;10721:9;10712:7;10708:23;10704:32;10701:2;;;10749:1;10746;10739:12;10701:2;10784:1;10801:61;10854:7;10834:9;10801:61;;10885:1225;;;;;;;;;11117:3;11105:9;11096:7;11092:23;11088:33;11085:2;;;11134:1;11131;11124:12;11085:2;11169:1;11186:53;11231:7;11211:9;11186:53;;;11176:63;;11148:97;11276:2;11294:53;11339:7;11330:6;11319:9;11315:22;11294:53;;;11284:63;;11255:98;11384:2;11402:53;11447:7;11438:6;11427:9;11423:22;11402:53;;;11392:63;;11363:98;11492:2;11510:53;11555:7;11546:6;11535:9;11531:22;11510:53;;;11500:63;;11471:98;11600:3;11619:53;11664:7;11655:6;11644:9;11640:22;11619:53;;;11609:63;;11579:99;11709:3;11728:53;11773:7;11764:6;11753:9;11749:22;11728:53;;;11718:63;;11688:99;11818:3;11837:53;11882:7;11873:6;11862:9;11858:22;11837:53;;;11827:63;;11797:99;11955:3;11944:9;11940:19;11927:33;-1:-1;;;;;11972:6;11969:30;11966:2;;;12012:1;12009;12002:12;11966:2;12032:62;12086:7;12077:6;12066:9;12062:22;12032:62;;;12022:72;;11906:194;11079:1031;;;;;;;;;;;;12117:1371;;;;;;;;;;;12376:3;12364:9;12355:7;12351:23;12347:33;12344:2;;;12393:1;12390;12383:12;12344:2;12428:1;12445:53;12490:7;12470:9;12445:53;;;12435:63;;12407:97;12535:2;12553:53;12598:7;12589:6;12578:9;12574:22;12553:53;;;12543:63;;12514:98;12643:2;12661:53;12706:7;12697:6;12686:9;12682:22;12661:53;;;12651:63;;12622:98;12751:2;12769:53;12814:7;12805:6;12794:9;12790:22;12769:53;;;12759:63;;12730:98;12859:3;12878:53;12923:7;12914:6;12903:9;12899:22;12878:53;;;12868:63;;12838:99;12968:3;12987:53;13032:7;13023:6;13012:9;13008:22;12987:53;;;12977:63;;12947:99;13077:3;13096:53;13141:7;13132:6;13121:9;13117:22;13096:53;;;13086:63;;13056:99;13186:3;13205:53;13250:7;13241:6;13230:9;13226:22;13205:53;;;13195:63;;13165:99;13323:3;13312:9;13308:19;13295:33;-1:-1;;;;;13340:6;13337:30;13334:2;;;13380:1;13377;13370:12;13334:2;13408:64;13464:7;13455:6;13444:9;13440:22;13408:64;;;13398:74;;;;13274:204;12338:1150;;;;;;;;;;;;;;13495:1225;;;;;;;;;13727:3;13715:9;13706:7;13702:23;13698:33;13695:2;;;13744:1;13741;13734:12;13695:2;13779:1;13796:53;13841:7;13821:9;13796:53;;;13786:63;;13758:97;13886:2;13904:53;13949:7;13940:6;13929:9;13925:22;13904:53;;;13894:63;;13865:98;13994:2;14012:53;14057:7;14048:6;14037:9;14033:22;14012:53;;;14002:63;;13973:98;14102:2;14120:53;14165:7;14156:6;14145:9;14141:22;14120:53;;;14110:63;;14081:98;14210:3;14229:53;14274:7;14265:6;14254:9;14250:22;14229:53;;;14219:63;;14189:99;14319:3;14338:53;14383:7;14374:6;14363:9;14359:22;14338:53;;;14328:63;;14298:99;14428:3;14447:53;14492:7;14483:6;14472:9;14468:22;14447:53;;14727:347;;14841:2;14829:9;14820:7;14816:23;14812:32;14809:2;;;14857:1;14854;14847:12;14809:2;14892:31;;-1:-1;;;;;14932:30;;14929:2;;;14975:1;14972;14965:12;14929:2;14995:63;15050:7;15041:6;15030:9;15026:22;14995:63;;15081:466;;;15209:2;15197:9;15188:7;15184:23;15180:32;15177:2;;;15225:1;15222;15215:12;15177:2;15260:31;;-1:-1;;;;;15300:30;;15297:2;;;15343:1;15340;15333:12;15297:2;15363:63;15418:7;15409:6;15398:9;15394:22;15363:63;;15554:241;;15658:2;15646:9;15637:7;15633:23;15629:32;15626:2;;;15674:1;15671;15664:12;15626:2;15709:1;15726:53;15771:7;15751:9;15726:53;;15802:263;;15917:2;15905:9;15896:7;15892:23;15888:32;15885:2;;;15933:1;15930;15923:12;15885:2;15968:1;15985:64;16041:7;16021:9;15985:64;;16072:366;;;16193:2;16181:9;16172:7;16168:23;16164:32;16161:2;;;16209:1;16206;16199:12;16161:2;16244:1;16261:53;16306:7;16286:9;16261:53;;16445:399;;;16577:2;16565:9;16556:7;16552:23;16548:32;16545:2;;;16593:1;16590;16583:12;16545:2;16628:1;16645:64;16701:7;16681:9;16645:64;;;16635:74;;16607:108;16746:2;16764:64;16820:7;16811:6;16800:9;16796:22;16764:64;;16851:491;;;;16989:2;16977:9;16968:7;16964:23;16960:32;16957:2;;;17005:1;17002;16995:12;16957:2;17040:1;17057:53;17102:7;17082:9;17057:53;;;17047:63;;17019:97;17147:2;17165:53;17210:7;17201:6;17190:9;17186:22;17165:53;;;17155:63;;17126:98;17255:2;17273:53;17318:7;17309:6;17298:9;17294:22;17273:53;;17349:617;;;;;17504:3;17492:9;17483:7;17479:23;17475:33;17472:2;;;17521:1;17518;17511:12;17472:2;17556:1;17573:53;17618:7;17598:9;17573:53;;;17563:63;;17535:97;17663:2;17681:53;17726:7;17717:6;17706:9;17702:22;17681:53;;;17671:63;;17642:98;17771:2;17789:53;17834:7;17825:6;17814:9;17810:22;17789:53;;;17779:63;;17750:98;17879:2;17897:53;17942:7;17933:6;17922:9;17918:22;17897:53;;;17887:63;;17858:98;17466:500;;;;;;;;17973:743;;;;;;18145:3;18133:9;18124:7;18120:23;18116:33;18113:2;;;18162:1;18159;18152:12;18113:2;18197:1;18214:53;18259:7;18239:9;18214:53;;;18204:63;;18176:97;18304:2;18322:53;18367:7;18358:6;18347:9;18343:22;18322:53;;;18312:63;;18283:98;18412:2;18430:53;18475:7;18466:6;18455:9;18451:22;18430:53;;;18420:63;;18391:98;18520:2;18538:53;18583:7;18574:6;18563:9;18559:22;18538:53;;;18528:63;;18499:98;18628:3;18647:53;18692:7;18683:6;18672:9;18668:22;18647:53;;;18637:63;;18607:99;18107:609;;;;;;;;;18723:946;;;;;;;18923:3;18911:9;18902:7;18898:23;18894:33;18891:2;;;18940:1;18937;18930:12;18891:2;18975:1;18992:64;19048:7;19028:9;18992:64;;;18982:74;;18954:108;19093:2;19111:64;19167:7;19158:6;19147:9;19143:22;19111:64;;;19101:74;;19072:109;19212:2;19230:64;19286:7;19277:6;19266:9;19262:22;19230:64;;;19220:74;;19191:109;19331:2;19349:64;19405:7;19396:6;19385:9;19381:22;19349:64;;;19339:74;;19310:109;19450:3;19469:64;19525:7;19516:6;19505:9;19501:22;19469:64;;;19459:74;;19429:110;19570:3;19589:64;19645:7;19636:6;19625:9;19621:22;19589:64;;;19579:74;;19549:110;18885:784;;;;;;;;;19676:995;;;;;;;;19882:3;19870:9;19861:7;19857:23;19853:33;19850:2;;;19899:1;19896;19889:12;19850:2;19934:1;19951:53;19996:7;19976:9;19951:53;;;19941:63;;19913:97;20041:2;20059:53;20104:7;20095:6;20084:9;20080:22;20059:53;;;20049:63;;20020:98;20149:2;20167:53;20212:7;20203:6;20192:9;20188:22;20167:53;;;20157:63;;20128:98;20257:2;20275:53;20320:7;20311:6;20300:9;20296:22;20275:53;;;20265:63;;20236:98;20365:3;20384:53;20429:7;20420:6;20409:9;20405:22;20384:53;;;20374:63;;20344:99;20474:3;20493:53;20538:7;20529:6;20518:9;20514:22;20493:53;;;20483:63;;20453:99;20583:3;20602:53;20647:7;20638:6;20627:9;20623:22;20602:53;;;20592:63;;20562:99;19844:827;;;;;;;;;;;20679:173;;20766:46;20808:3;20800:6;20766:46;;;-1:-1;;20841:4;20832:14;;20759:93;20861:173;;20948:46;20990:3;20982:6;20948:46;;21043:275;;21178:98;21272:3;21264:6;21178:98;;;-1:-1;;21305:6;21296:16;;21171:147;21508:142;21599:45;21638:5;21599:45;;;21594:3;21587:58;21581:69;;;21657:103;21730:24;21748:5;21730:24;;21887:152;21988:45;22008:24;22026:5;22008:24;;;21988:45;;22079:660;22212:52;22258:5;22212:52;;;22277:84;22354:6;22349:3;22277:84;;;22270:91;;22382:54;22430:5;22382:54;;;22456:7;22484:1;22469:258;22494:6;22491:1;22488:13;22469:258;;;22561:6;22555:13;22582:63;22641:3;22626:13;22582:63;;;22575:70;;22662:58;22713:6;22662:58;;;22652:68;-1:-1;;22516:1;22509:9;22469:258;;22778:690;;22923:54;22971:5;22923:54;;;22990:86;23069:6;23064:3;22990:86;;;22983:93;;23097:56;23147:5;23097:56;;;23173:7;23201:1;23186:260;23211:6;23208:1;23205:13;23186:260;;;23278:6;23272:13;23299:63;23358:3;23343:13;23299:63;;;23292:70;;23379:60;23432:6;23379:60;;;23369:70;-1:-1;;23233:1;23226:9;23186:260;;;-1:-1;23459:3;;22902:566;-1:-1;;;;;22902:566;23561:882;;23754:78;23826:5;23754:78;;;23845:110;23948:6;23943:3;23845:110;;;23838:117;;23976:80;24050:5;23976:80;;;24076:7;24104:1;24089:332;24114:6;24111:1;24108:13;24089:332;;;24181:6;24175:13;24202:111;24309:3;24294:13;24202:111;;;24195:118;;24330:84;24407:6;24330:84;;;24320:94;-1:-1;;24136:1;24129:9;24089:332;;24484:660;24617:52;24663:5;24617:52;;;24682:84;24759:6;24754:3;24682:84;;;24675:91;;24787:54;24835:5;24787:54;;;24861:7;24889:1;24874:258;24899:6;24896:1;24893:13;24874:258;;;24966:6;24960:13;24987:63;25046:3;25031:13;24987:63;;;24980:70;;25067:58;25118:6;25067:58;;;25057:68;-1:-1;;24921:1;24914:9;24874:258;;25152:94;25219:21;25234:5;25219:21;;25364:140;25459:39;25476:21;25491:5;25476:21;;;25459:39;;25511:103;25584:24;25602:5;25584:24;;25741:152;25842:45;25862:24;25880:5;25862:24;;;25842:45;;25900:148;25999:43;26018:23;26035:5;26018:23;;26055:343;;26165:38;26197:5;26165:38;;;26215:70;26278:6;26273:3;26215:70;;;26208:77;;26290:52;26335:6;26330:3;26323:4;26316:5;26312:16;26290:52;;;26363:29;26385:6;26363:29;;;26354:39;;;;26145:253;-1:-1;;;26145:253;26405:356;;26533:38;26565:5;26533:38;;;26583:88;26664:6;26659:3;26583:88;;;26576:95;;26676:52;26721:6;26716:3;26709:4;26702:5;26698:16;26676:52;;;26740:16;;;;;26513:248;-1:-1;;26513:248;27953:312;;28113:67;28177:2;28172:3;28113:67;;;-1:-1;;;28193:35;;28256:2;28247:12;;28099:166;-1:-1;;28099:166;28274:301;;28434:66;28498:1;28493:3;28434:66;;;-1:-1;;;28513:25;;28566:2;28557:12;;28420:155;-1:-1;;28420:155;28584:301;;28744:66;28808:1;28803:3;28744:66;;;-1:-1;;;28823:25;;28876:2;28867:12;;28730:155;-1:-1;;28730:155;28894:375;;29054:67;29118:2;29113:3;29054:67;;;29154:34;29134:55;;-1:-1;;;29218:2;29209:12;;29202:30;29260:2;29251:12;;29040:229;-1:-1;;29040:229;29278:327;;29438:67;29502:2;29497:3;29438:67;;;29538:29;29518:50;;29596:2;29587:12;;29424:181;-1:-1;;29424:181;29614:370;;29774:67;29838:2;29833:3;29774:67;;;29874:34;29854:55;;-1:-1;;;29938:2;29929:12;;29922:25;29975:2;29966:12;;29760:224;-1:-1;;29760:224;29993:314;;30153:67;30217:2;30212:3;30153:67;;;-1:-1;;;30233:37;;30298:2;30289:12;;30139:168;-1:-1;;30139:168;30316:395;;30476:67;30540:2;30535:3;30476:67;;;30576:34;30556:55;;30645:28;30640:2;30631:12;;30624:50;30702:2;30693:12;;30462:249;-1:-1;;30462:249;30720:300;;30880:66;30944:1;30939:3;30880:66;;;-1:-1;;;30959:24;;31011:2;31002:12;;30866:154;-1:-1;;30866:154;31029:329;;31189:67;31253:2;31248:3;31189:67;;;31289:31;31269:52;;31349:2;31340:12;;31175:183;-1:-1;;31175:183;31367:318;;31527:67;31591:2;31586:3;31527:67;;;-1:-1;;;31607:41;;31676:2;31667:12;;31513:172;-1:-1;;31513:172;31694:301;;31854:66;31918:1;31913:3;31854:66;;;-1:-1;;;31933:25;;31986:2;31977:12;;31840:155;-1:-1;;31840:155;32004:301;;32164:66;32228:1;32223:3;32164:66;;;-1:-1;;;32243:25;;32296:2;32287:12;;32150:155;-1:-1;;32150:155;32314:301;;32474:66;32538:1;32533:3;32474:66;;;-1:-1;;;32553:25;;32606:2;32597:12;;32460:155;-1:-1;;32460:155;32624:370;;32784:67;32848:2;32843:3;32784:67;;;32884:34;32864:55;;-1:-1;;;32948:2;32939:12;;32932:25;32985:2;32976:12;;32770:224;-1:-1;;32770:224;33003:321;;33163:67;33227:2;33222:3;33163:67;;;-1:-1;;;33243:44;;33315:2;33306:12;;33149:175;-1:-1;;33149:175;33333:301;;33493:66;33557:1;33552:3;33493:66;;;-1:-1;;;33572:25;;33625:2;33616:12;;33479:155;-1:-1;;33479:155;33643:301;;33803:66;33867:1;33862:3;33803:66;;;-1:-1;;;33882:25;;33935:2;33926:12;;33789:155;-1:-1;;33789:155;33953:315;;34113:67;34177:2;34172:3;34113:67;;;-1:-1;;;34193:38;;34259:2;34250:12;;34099:169;-1:-1;;34099:169;34277:301;;34437:66;34501:1;34496:3;34437:66;;;-1:-1;;;34516:25;;34569:2;34560:12;;34423:155;-1:-1;;34423:155;34587:301;;34747:66;34811:1;34806:3;34747:66;;;-1:-1;;;34826:25;;34879:2;34870:12;;34733:155;-1:-1;;34733:155;34897:370;;35057:67;35121:2;35116:3;35057:67;;;35157:34;35137:55;;-1:-1;;;35221:2;35212:12;;35205:25;35258:2;35249:12;;35043:224;-1:-1;;35043:224;35276:312;;35436:67;35500:2;35495:3;35436:67;;;-1:-1;;;35516:35;;35579:2;35570:12;;35422:166;-1:-1;;35422:166;35597:301;;35757:66;35821:1;35816:3;35757:66;;;-1:-1;;;35836:25;;35889:2;35880:12;;35743:155;-1:-1;;35743:155;35907:301;;36067:66;36131:1;36126:3;36067:66;;;-1:-1;;;36146:25;;36199:2;36190:12;;36053:155;-1:-1;;36053:155;36217:376;;36377:67;36441:2;36436:3;36377:67;;;36477:34;36457:55;;-1:-1;;;36541:2;36532:12;;36525:31;36584:2;36575:12;;36363:230;-1:-1;;36363:230;36602:329;;36762:67;36826:2;36821:3;36762:67;;;36862:31;36842:52;;36922:2;36913:12;;36748:183;-1:-1;;36748:183;36940:296;;37117:83;37198:1;37193:3;37117:83;;37245:310;;37405:67;37469:2;37464:3;37405:67;;;-1:-1;;;37485:33;;37546:2;37537:12;;37391:164;-1:-1;;37391:164;37564:312;;37724:67;37788:2;37783:3;37724:67;;;-1:-1;;;37804:35;;37867:2;37858:12;;37710:166;-1:-1;;37710:166;37885:373;;38045:67;38109:2;38104:3;38045:67;;;38145:34;38125:55;;-1:-1;;;38209:2;38200:12;;38193:28;38249:2;38240:12;;38031:227;-1:-1;;38031:227;38267:324;;38427:67;38491:2;38486:3;38427:67;;;38527:26;38507:47;;38582:2;38573:12;;38413:178;-1:-1;;38413:178;38600:300;;38760:66;38824:1;38819:3;38760:66;;;-1:-1;;;38839:24;;38891:2;38882:12;;38746:154;-1:-1;;38746:154;38909:332;;39069:67;39133:2;39128:3;39069:67;;;39169:34;39149:55;;39232:2;39223:12;;39055:186;-1:-1;;39055:186;39328:1437;39529:23;;39463:6;39454:16;;;39558:63;39458:3;39529:23;39558:63;;;39485:142;39702:4;39695:5;39691:16;39685:23;39714:57;39765:4;39760:3;39756:14;39742:12;39714:57;;;39637:140;39851:4;39844:5;39840:16;39834:23;39863:63;39920:4;39915:3;39911:14;39897:12;39863:63;;;39787:145;40010:4;40003:5;39999:16;39993:23;40022:63;40079:4;40074:3;40070:14;40056:12;40022:63;;;39942:149;40175:4;40168:5;40164:16;40158:23;40187:63;40244:4;40239:3;40235:14;40221:12;40187:63;;;40101:155;40341:4;40334:5;40330:16;40324:23;40353:63;40410:4;40405:3;40401:14;40387:12;40353:63;;;40266:156;40508:4;40501:5;40497:16;40491:23;40520:63;40577:4;40572:3;40568:14;40554:12;40520:63;;;40432:157;40669:4;40662:5;40658:16;40652:23;40681:63;40738:4;40733:3;40729:14;40715:12;40681:63;;41161:107;41240:22;41256:5;41240:22;;41275:370;;41416:75;41487:3;41478:6;41416:75;;;41513:2;41508:3;41504:12;41497:19;;41527:69;41592:3;41583:6;41527:69;;;-1:-1;41618:1;41609:11;;41404:241;-1:-1;;41404:241;41652:383;;41799:75;41870:3;41861:6;41799:75;;;41896:2;41891:3;41887:12;41880:19;;41910:75;41981:3;41972:6;41910:75;;;-1:-1;42007:2;41998:12;;41787:248;-1:-1;;41787:248;42042:378;;42187:73;42256:3;42247:6;42187:73;;;42282:1;42277:3;42273:11;42266:18;;42295:75;42366:3;42357:6;42295:75;;42427:262;;42571:93;42660:3;42651:6;42571:93;;42969:370;;43167:147;43310:3;43167:147;;43346:213;43464:2;43449:18;;43478:71;43453:9;43522:6;43478:71;;43566:229;43692:2;43677:18;;43706:79;43681:9;43758:6;43706:79;;43802:324;43948:2;43933:18;;43962:71;43937:9;44006:6;43962:71;;;44044:72;44112:2;44101:9;44097:18;44088:6;44044:72;;44133:340;44287:2;44272:18;;44301:71;44276:9;44345:6;44301:71;;;44383:80;44459:2;44448:9;44444:18;44435:6;44383:80;;44480:435;44654:2;44639:18;;44668:71;44643:9;44712:6;44668:71;;;44750:72;44818:2;44807:9;44803:18;44794:6;44750:72;;;44833;44901:2;44890:9;44886:18;44877:6;44833:72;;44922:647;45146:3;45131:19;;45161:71;45135:9;45205:6;45161:71;;;45243:72;45311:2;45300:9;45296:18;45287:6;45243:72;;;45326;45394:2;45383:9;45379:18;45370:6;45326:72;;;45409;45477:2;45466:9;45462:18;45453:6;45409:72;;;45492:67;45554:3;45543:9;45539:19;45530:6;45492:67;;45576:771;45834:3;45819:19;;45849:71;45823:9;45893:6;45849:71;;;45931:72;45999:2;45988:9;45984:18;45975:6;45931:72;;;46014;46082:2;46071:9;46067:18;46058:6;46014:72;;;46097;46165:2;46154:9;46150:18;46141:6;46097:72;;;46180:73;46248:3;46237:9;46233:19;46224:6;46180:73;;;46264;46332:3;46321:9;46317:19;46308:6;46264:73;;;45805:542;;;;;;;;;;46354:324;46500:2;46485:18;;46514:71;46489:9;46558:6;46514:71;;;46596:72;46664:2;46653:9;46649:18;46640:6;46596:72;;46685:451;46867:2;46852:18;;46881:71;46856:9;46925:6;46881:71;;;46963:72;47031:2;47020:9;47016:18;47007:6;46963:72;;;47046:80;47122:2;47111:9;47107:18;47098:6;47046:80;;47143:361;47311:2;47325:47;;;47296:18;;47386:108;47296:18;47480:6;47386:108;;47511:457;47727:2;47741:47;;;47712:18;;47802:156;47712:18;47944:6;47802:156;;47975:201;48087:2;48072:18;;48101:65;48076:9;48139:6;48101:65;;48183:213;48301:2;48286:18;;48315:71;48290:9;48359:6;48315:71;;48403:1139;48793:3;48778:19;;48808:71;48782:9;48852:6;48808:71;;;48890:72;48958:2;48947:9;48943:18;48934:6;48890:72;;;48973:66;49035:2;49024:9;49020:18;49011:6;48973:66;;;49050:72;49118:2;49107:9;49103:18;49094:6;49050:72;;;49133:119;49247:3;49236:9;49232:19;49223:6;49133:119;;;49263;49377:3;49366:9;49362:19;49353:6;49263:119;;;49431:9;49425:4;49421:20;49415:3;49404:9;49400:19;49393:49;49456:76;49527:4;49518:6;49456:76;;;49448:84;48764:778;-1:-1;;;;;;;;;48764:778;49765:293;49899:2;49913:47;;;49884:18;;49974:74;49884:18;50034:6;49974:74;;50373:407;50564:2;50578:47;;;50549:18;;50639:131;50549:18;50639:131;;50787:407;50978:2;50992:47;;;50963:18;;51053:131;50963:18;51053:131;;51201:407;51392:2;51406:47;;;51377:18;;51467:131;51377:18;51467:131;;51615:407;51806:2;51820:47;;;51791:18;;51881:131;51791:18;51881:131;;52029:407;52220:2;52234:47;;;52205:18;;52295:131;52205:18;52295:131;;52443:407;52634:2;52648:47;;;52619:18;;52709:131;52619:18;52709:131;;52857:407;53048:2;53062:47;;;53033:18;;53123:131;53033:18;53123:131;;53271:407;53462:2;53476:47;;;53447:18;;53537:131;53447:18;53537:131;;53685:407;53876:2;53890:47;;;53861:18;;53951:131;53861:18;53951:131;;54099:407;54290:2;54304:47;;;54275:18;;54365:131;54275:18;54365:131;;54513:407;54704:2;54718:47;;;54689:18;;54779:131;54689:18;54779:131;;54927:407;55118:2;55132:47;;;55103:18;;55193:131;55103:18;55193:131;;55341:407;55532:2;55546:47;;;55517:18;;55607:131;55517:18;55607:131;;55755:407;55946:2;55960:47;;;55931:18;;56021:131;55931:18;56021:131;;56169:407;56360:2;56374:47;;;56345:18;;56435:131;56345:18;56435:131;;56583:407;56774:2;56788:47;;;56759:18;;56849:131;56759:18;56849:131;;56997:407;57188:2;57202:47;;;57173:18;;57263:131;57173:18;57263:131;;57411:407;57602:2;57616:47;;;57587:18;;57677:131;57587:18;57677:131;;57825:407;58016:2;58030:47;;;58001:18;;58091:131;58001:18;58091:131;;58239:407;58430:2;58444:47;;;58415:18;;58505:131;58415:18;58505:131;;58653:407;58844:2;58858:47;;;58829:18;;58919:131;58829:18;58919:131;;59067:407;59258:2;59272:47;;;59243:18;;59333:131;59243:18;59333:131;;59481:407;59672:2;59686:47;;;59657:18;;59747:131;59657:18;59747:131;;59895:407;60086:2;60100:47;;;60071:18;;60161:131;60071:18;60161:131;;60309:407;60500:2;60514:47;;;60485:18;;60575:131;60485:18;60575:131;;60723:407;60914:2;60928:47;;;60899:18;;60989:131;60899:18;60989:131;;61137:407;61328:2;61342:47;;;61313:18;;61403:131;61313:18;61403:131;;61551:407;61742:2;61756:47;;;61727:18;;61817:131;61727:18;61817:131;;61965:407;62156:2;62170:47;;;62141:18;;62231:131;62141:18;62231:131;;62379:407;62570:2;62584:47;;;62555:18;;62645:131;62555:18;62645:131;;62793:407;62984:2;62998:47;;;62969:18;;63059:131;62969:18;63059:131;;63207:407;63398:2;63412:47;;;63383:18;;63473:131;63383:18;63473:131;;63621:407;63812:2;63826:47;;;63797:18;;63887:131;63797:18;63887:131;;64255:324;64401:2;64386:18;;64415:71;64390:9;64459:6;64415:71;;64586:435;64760:2;64745:18;;64774:71;64749:9;64818:6;64774:71;;;64856:72;64924:2;64913:9;64909:18;64900:6;64856:72;;65028:205;65142:2;65127:18;;65156:67;65131:9;65196:6;65156:67;;65240:256;65302:2;65296:9;65328:17;;;-1:-1;;;;;65388:34;;65424:22;;;65385:62;65382:2;;;65460:1;65457;65450:12;65382:2;65476;65469:22;65280:216;;-1:-1;65280:216;65503:304;;-1:-1;;;;;65654:6;65651:30;65648:2;;;65694:1;65691;65684:12;65648:2;-1:-1;65729:4;65717:17;;;65782:15;;65585:222;66149:321;;-1:-1;;;;;66284:6;66281:30;66278:2;;;66324:1;66321;66314:12;66278:2;-1:-1;66455:4;66391;66368:17;;;;-1:-1;;66364:33;66445:15;;66215:255;66910:151;67034:4;67025:14;;66982:79;67354:108;-1:-1;67448:4;;67426:36;67469:137;67572:12;;67543:63;67781:108;-1:-1;67875:4;;67853:36;68908:178;69026:19;;;69075:4;69066:14;;69019:67;70104:91;;70166:24;70184:5;70166:24;;70202:85;70268:13;70261:21;;70244:43;70373:144;-1:-1;;;;;;70434:78;;70417:100;70602:121;-1:-1;;;;;70664:54;;70647:76;70809:81;70880:4;70869:16;;70852:38;70897:129;;70984:37;71015:5;71033:121;71112:37;71143:5;71112:37;;71277:145;71358:6;71353:3;71348;71335:30;-1:-1;71414:1;71396:16;;71389:27;71328:94;71431:268;71496:1;71503:101;71517:6;71514:1;71511:13;71503:101;;;71584:11;;;71578:18;71565:11;;;71558:39;71539:2;71532:10;71503:101;;;71619:6;71616:1;71613:13;71610:2;;;-1:-1;;71684:1;71666:16;;71659:27;71480:219;71707:95;;71771:26;71791:5;71771:26;;71809:90;;71870:24;71888:5;71870:24;;72067:89;;72131:20;72145:5;72131:20;;72244:88;;72306:21;72321:5;72306:21;;72339:97;72427:2;72407:14;-1:-1;;72403:28;;72387:49;72444:96;72519:3;72515:15;;72487:53;72548:94;72622:2;72618:14;;72590:52;72650:117;72719:24;72737:5;72719:24;;;72712:5;72709:35;72699:2;;72758:1;72755;72748:12;72774:111;72840:21;72855:5;72840:21;;72892:117;72961:24;72979:5;72961:24;"
            },
            "methodIdentifiers": {
              "VERSION()": "ffa1ad74",
              "_supplyInterestRate(uint256,uint256)": "7288b344",
              "admin()": "f851a440",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "assetBalanceOf(address)": "06b3efd6",
              "avgBorrowInterestRate()": "44a4a003",
              "balanceOf(address)": "70a08231",
              "baseRate()": "1f68f20a",
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": "2ea295fa",
              "borrowInterestRate()": "8325a1c0",
              "burn(address,uint256)": "9dc29fac",
              "burnToBTC(address,uint256,bool)": "0506af04",
              "checkPause(string)": "be194217",
              "checkPriceDivergence(uint256,uint256,uint256,address,uint256)": "18498b1d",
              "checkpointPrice(address)": "eebc5081",
              "checkpointSupply()": "7b7933b4",
              "decimals()": "313ce567",
              "disableLoanParams(address[],bool[])": "e697d2ee",
              "earlyAccessToken()": "ca37e666",
              "getBorrowAmountForDeposit(uint256,uint256,address)": "04797930",
              "getDepositAmountForBorrow(uint256,uint256,address)": "631a3ef8",
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": "6b40cd40",
              "getMaxEscrowAmount(uint256)": "829b38f4",
              "initialPrice()": "1d0806ae",
              "isOwner()": "8f32d59b",
              "kinkLevel()": "56e07d70",
              "liquidityMiningAddress()": "8ee6c4e6",
              "loanParamsIds(uint256)": "3291c11a",
              "loanTokenAddress()": "797bf385",
              "lowUtilBaseRate()": "d759dbeb",
              "lowUtilRateMultiplier()": "7e37c08c",
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": "28a02f19",
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": "f6b69f99",
              "marketLiquidity()": "612ef80b",
              "maxScaleRate()": "ef2b0b39",
              "mint(address,uint256)": "40c10f19",
              "mintWithBTC(address,bool)": "fb5f83df",
              "name()": "06fdde03",
              "nextBorrowInterestRate(uint256)": "b9fe1a8f",
              "nextSupplyInterestRate(uint256)": "d65a5021",
              "owner()": "8da5cb5b",
              "pauser()": "9fd0506d",
              "profitOf(address)": "54198ce9",
              "rateMultiplier()": "330691ac",
              "setAdmin(address)": "704b6c02",
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "d97206a4",
              "setLiquidityMiningAddress(address)": "cb926cb3",
              "setPauser(address)": "2d88af4a",
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": "d8f06c83",
              "sovrynContractAddress()": "06947a3a",
              "supplyInterestRate()": "09ec6b6b",
              "symbol()": "95d89b41",
              "targetLevel()": "ba0e43bf",
              "target_()": "9bda3a98",
              "toggleFunctionPause(string,bool)": "e3cded61",
              "tokenPrice()": "7ff9b596",
              "totalAssetBorrow()": "20f6d07c",
              "totalAssetSupply()": "8fb807c5",
              "totalSupply()": "18160ddd",
              "totalSupplyInterestRate(uint256)": "12416898",
              "transactionLimit(address)": "e41b07e3",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "wrbtcTokenAddress()": "2f6b600d"
            }
          },
          "userdoc": {
            "methods": {
              "_supplyInterestRate(uint256,uint256)": {
                "notice": "Compute the next supply interest adjustment."
              },
              "allowance(address,address)": {
                "notice": "Get the amount of iTokens allowed to be spent by a  given account on behalf of the owner."
              },
              "approve(address,uint256)": {
                "notice": "Set an amount as the allowance of `spender` over the caller's tokens.\t * Returns a boolean value indicating whether the operation succeeded.\t * 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\t * Emits an {Approval} event."
              },
              "assetBalanceOf(address)": {
                "notice": "Get loan token balance."
              },
              "avgBorrowInterestRate()": {
                "notice": "Wrapper for average borrow interest."
              },
              "balanceOf(address)": {
                "notice": "Get the amount of iTokens owned by an account."
              },
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": {
                "notice": "Borrow funds from the pool. The underlying loan token may not be used as collateral."
              },
              "borrowInterestRate()": {
                "notice": "Get borrow interest rate. The minimum rate the next base protocol borrower will receive for variable-rate loans."
              },
              "burn(address,uint256)": {
                "notice": "Burn loan token wrapper. Adds a pay-out transfer after calling low level _burnToken function. In order to withdraw funds to the pool, call burn on the respective loan token contract. This will burn your loan tokens and send you the underlying token in exchange."
              },
              "checkPause(string)": {
                "notice": "Check whether a function is paused."
              },
              "checkpointPrice(address)": {
                "notice": "Getter for the price checkpoint mapping."
              },
              "disableLoanParams(address[],bool[])": {
                "notice": "Disable loan token parameters."
              },
              "getBorrowAmountForDeposit(uint256,uint256,address)": {
                "notice": "Calculate the borrow allowed for a given deposit.\t * The function for doing over-collateralized borrows against loan tokens expects a minimum amount of collateral be sent to satisfy collateral requirements of the loan, for borrow amount, interest rate, and initial loan duration. To determine appropriate values to pass to this function for a given loan, `getDepositAmountForBorrow` and 'getBorrowAmountForDeposit` are required."
              },
              "getDepositAmountForBorrow(uint256,uint256,address)": {
                "notice": "Calculate the deposit required to a given borrow.\t * The function for doing over-collateralized borrows against loan tokens expects a minimum amount of collateral be sent to satisfy collateral requirements of the loan, for borrow amount, interest rate, and initial loan duration. To determine appropriate values to pass to this function for a given loan, `getDepositAmountForBorrow` and 'getBorrowAmountForDeposit` are required."
              },
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": {
                "notice": "Get margin information on a trade."
              },
              "getMaxEscrowAmount(uint256)": {
                "notice": "Compute the maximum deposit amount under current market conditions."
              },
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": {
                "notice": "Borrow and immediately get into a position.\t * Trading on margin is used to increase an investor's buying power. Margin is the amount of money required to open a position, while leverage is the multiple of exposure to account equity.\t * Leverage allows you to trade positions LARGER than the amount of money in your trading account. Leverage is expressed as a ratio.\t * When trading on margin, investors first deposit some token that then serves as collateral for the loan, and then pay ongoing interest payments on the money they borrow.\t * Margin trading = taking a loan and swapping it: In order to open a margin trade position, 1.- The user calls marginTrade on the loan token contract. 2.- The loan token contract provides the loan and sends it for processing   to the protocol proxy contract. 3.- The protocol proxy contract uses the module LoanOpening to create a   position and swaps the loan tokens to collateral tokens. 4.- The Sovryn Swap network looks up the correct converter and swaps the   tokens. If successful, the position is being held by the protocol proxy contract, which is why positions need to be closed at the protocol proxy contract."
              },
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": {
                "notice": "Wrapper for marginTrade invoking setAffiliatesReferrer to track  referral trade by affiliates program."
              },
              "marketLiquidity()": {
                "notice": "Get current liquidity. A part of total funds supplied are borrowed. Liquidity = supply - borrow"
              },
              "mint(address,uint256)": {
                "notice": "Mint loan token wrapper. Adds a check before calling low level _mintToken function. The function retrieves the tokens from the message sender, so make sure to first approve the loan token contract to access your funds. This is done by calling approve(address spender, uint amount) on the ERC20 token contract, where spender is the loan token contract address and amount is the amount to be deposited."
              },
              "nextBorrowInterestRate(uint256)": {
                "notice": "Public wrapper for internal call."
              },
              "nextSupplyInterestRate(uint256)": {
                "notice": "Get interest rate w/ added supply."
              },
              "profitOf(address)": {
                "notice": "Wrapper for internal _profitOf low level function."
              },
              "setAdmin(address)": {
                "notice": "Set admin account."
              },
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": {
                "notice": "Set loan token parameters about the demand curve."
              },
              "setLiquidityMiningAddress(address)": {
                "notice": "sets the liquidity mining contract address"
              },
              "setPauser(address)": {
                "notice": "Set pauser account."
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": {
                "notice": "Set loan token parameters."
              },
              "supplyInterestRate()": {
                "notice": "Get interest rate."
              },
              "toggleFunctionPause(string,bool)": {
                "notice": "Set the pause flag for a function to true or false."
              },
              "tokenPrice()": {
                "notice": "Loan token price calculation considering unpaid interests."
              },
              "totalAssetBorrow()": {
                "notice": "Get the total amount of loan tokens on debt. Calls protocol getTotalPrincipal function. In the context of borrowing, principal is the initial size of a loan. It can also be the amount still owed on a loan. If you take out a $50,000 mortgage, for example, the principal is $50,000. If you pay off $30,000, the principal balance now consists of the remaining $20,000."
              },
              "totalAssetSupply()": {
                "notice": "Get the total amount of loan tokens on supply."
              },
              "totalSupply()": {
                "notice": "Get the total supply of iTokens."
              },
              "totalSupplyInterestRate(uint256)": {
                "notice": "Get interest rate w/ added supply assets."
              },
              "transfer(address,uint256)": {
                "notice": "Transfer tokens wrapper. Sets token owner the msg.sender. Sets maximun allowance uint256(-1) to ensure tokens are always transferred."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Moves `_value` loan tokens from `_from` to `_to` using the allowance mechanism. Calls internal _internalTransferFrom function."
              }
            }
          }
        }
      },
      "contracts/connectors/loantoken/LoanTokenSettingsLowerAdmin.sol": {
        "LoanTokenSettingsLowerAdmin": {
          "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": "burner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                }
              ],
              "name": "FlashBorrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "minter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "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": false,
                  "internalType": "address[]",
                  "name": "addresses",
                  "type": "address[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "limits",
                  "type": "uint256[]"
                }
              ],
              "name": "SetTransactionLimits",
              "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"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "checkpointSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "collateralTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "bool[]",
                  "name": "isTorqueLoans",
                  "type": "bool[]"
                }
              ],
              "name": "disableLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "earlyAccessToken",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "initialPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kinkLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidityMiningAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "loanParamsIds",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "loanTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilBaseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilRateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxScaleRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pauser",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "setAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_baseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_rateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilBaseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilRateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_targetLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_kinkLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_maxScaleRate",
                  "type": "uint256"
                }
              ],
              "name": "setDemandCurve",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_pauser",
                  "type": "address"
                }
              ],
              "name": "setPauser",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "id",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bool",
                      "name": "active",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "minInitialMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanParamsStruct.LoanParams[]",
                  "name": "loanParamsList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bool",
                  "name": "areTorqueLoans",
                  "type": "bool"
                }
              ],
              "name": "setupLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynContractAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "targetLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "target_",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "funcId",
                  "type": "string"
                },
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "name": "toggleFunctionPause",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "transactionLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "allowance(address,address)": {
                "params": {
                  "_owner": "The account owner of the iTokens.",
                  "_spender": "The account allowed to send the iTokens."
                },
                "return": "The number of iTokens an account is allowing the spender  to send on its behalf."
              },
              "approve(address,uint256)": {
                "params": {
                  "_spender": "The account address that will be able to spend the tokens.",
                  "_value": "The amount of tokens allowed to spend."
                }
              },
              "balanceOf(address)": {
                "params": {
                  "_owner": "The account owner of the iTokens."
                },
                "return": "The number of iTokens an account owns."
              },
              "disableLoanParams(address[],bool[])": {
                "params": {
                  "collateralTokens": "The array of collateral tokens.",
                  "isTorqueLoans": "Whether the loan is a torque loan."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setAdmin(address)": {
                "params": {
                  "_admin": "The address of the account to grant admin permissions."
                }
              },
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": {
                "details": "These params should be percentages represented  like so: 5% = 5000000000000000000 /// 18 digits precision. rateMultiplier + baseRate can't exceed 100%\t * To maintain a healthy credit score, it's important to keep your credit utilization rate (CUR) low (_lowUtilBaseRate). In general you don't want your CUR to exceed 30%, but increasingly financial experts are recommending that you don't want to go above 10% if you really want an excellent credit score.\t * Interest rates tend to cluster around the kink level of a kinked interest rate model. More info at https://arxiv.org/pdf/2006.13922.pdf and https://compound.finance/governance/proposals/12",
                "params": {
                  "_baseRate": "The interest rate.",
                  "_kinkLevel": "The level that interest rates cluster on kinked model.",
                  "_lowUtilBaseRate": "The credit utilization rate (CUR) low value.",
                  "_lowUtilRateMultiplier": "The precision multiplier for low util base rate.",
                  "_maxScaleRate": "The maximum rate of the scale.",
                  "_rateMultiplier": "The precision multiplier for base rate.",
                  "_targetLevel": "The target level."
                }
              },
              "setPauser(address)": {
                "params": {
                  "_pauser": "The address of the account to grant pause permissions."
                }
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": {
                "params": {
                  "areTorqueLoans": "Whether the loan is a torque loan.",
                  "loanParamsList": "The array of loan parameters."
                }
              },
              "toggleFunctionPause(string,bool)": {
                "details": "Combining the hash of \"iToken_FunctionPause\" string and a function  selector gets a slot to write a flag for pause state.",
                "params": {
                  "funcId": "The ID of a function, the selector.",
                  "isPaused": "true/false value of the flag."
                }
              },
              "totalSupply()": {
                "return": "The total number of iTokens in existence as of now."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600090815561001c6001600160e01b0361006f16565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610073565b3390565b61192e806100826000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80638da5cb5b11610125578063d8f06c83116100ad578063e41b07e31161007c578063e41b07e3146103d1578063e697d2ee146103e4578063ef2b0b39146103f7578063f2fde38b146103ff578063f851a4401461041257610211565b8063d8f06c8314610385578063d97206a414610398578063dd62ed3e146103ab578063e3cded61146103be57610211565b80639bda3a98116100f45780639bda3a981461035d5780639fd0506d14610365578063ba0e43bf1461036d578063ca37e66614610375578063d759dbeb1461037d57610211565b80638da5cb5b1461033d5780638ee6c4e6146103455780638f32d59b1461034d57806395d89b411461035557610211565b8063313ce567116101a8578063704b6c0211610177578063704b6c02146102ff57806370a0823114610312578063797bf385146103255780637b7933b41461032d5780637e37c08c1461033557610211565b8063313ce567146102c75780633291c11a146102dc578063330691ac146102ef57806356e07d70146102f757610211565b80631d0806ae116101e45780631d0806ae1461029a5780631f68f20a146102a25780632d88af4a146102aa5780632f6b600d146102bf57610211565b806306947a3a1461023257806306fdde0314610250578063095ea7b31461026557806318160ddd14610285575b60405162461bcd60e51b815260040161022990611733565b60405180910390fd5b61023a61041a565b60405161024791906116a6565b60405180910390f35b610258610429565b60405161024791906116f2565b61027861027336600461103e565b6104b4565b60405161024791906116d6565b61028d61051f565b60405161024791906116e4565b61028d610525565b61028d61052b565b6102bd6102b8366004610fde565b610531565b005b61023a610577565b6102cf610586565b6040516102479190611783565b61028d6102ea3660046111ae565b61058f565b61028d6105a1565b61028d6105a7565b6102bd61030d366004610fde565b6105ad565b61028d610320366004610fde565b6105f3565b61023a61060e565b61028d610622565b61028d610628565b61023a61062e565b61023a61063d565b61027861064c565b610258610672565b61023a6106cd565b61023a6106dc565b61028d6106eb565b61023a6106f1565b61028d610700565b6102bd610393366004611113565b610706565b6102bd6103a63660046111cc565b6108d5565b61028d6103b9366004611004565b6109dc565b6102bd6103cc366004611178565b610a07565b61028d6103df366004610fde565b610aac565b6102bd6103f236600461106e565b610abe565b61028d610c6f565b6102bd61040d366004610fde565b610c75565b61023a610ca5565b6016546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156104ac5780601f10610481576101008083540402835291602001916104ac565b820191906000526020600020905b81548152906001019060200180831161048f57829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061050d9086906116e4565b60405180910390a35060015b92915050565b60155490565b600e5481565b60055481565b61053961064c565b6105555760405162461bcd60e51b815260040161022990611763565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6105b561064c565b6105d15760405162461bcd60e51b815260040161022990611763565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316610663610cb4565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104ac5780601f10610481576101008083540402835291602001916104ac565b6018546001600160a01b031681565b601b546001600160a01b031681565b60095481565b601a546001600160a01b031681565b60075481565b61070e61064c565b8061072357506019546001600160a01b031633145b61073f5760405162461bcd60e51b815260040161022990611763565b60045460609061010090046001600160a01b031660005b84518110156107c9578185828151811061076c57fe5b6020026020010151606001906001600160a01b031690816001600160a01b0316815250508361079e576224ea006107a1565b60005b62ffffff168582815181106107b257fe5b602090810291909101015160e00152600101610756565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e906107fa9087906004016116c5565b600060405180830381600087803b15801561081457600080fd5b505af1158015610828573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261085091908101906110de565b915060005b82518110156108ce5782818151811061086a57fe5b60200260200101516010600087848151811061088257fe5b602002602001015160800151876040516020016108a092919061164e565b60408051601f1981840301815291815281516020928301208352908201929092520160002055600101610855565b5050505050565b6108dd61064c565b806108f257506019546001600160a01b031633145b61090e5760405162461bcd60e51b815260040161022990611763565b68056bc75e2d63100000610928878963ffffffff610cb816565b11156109465760405162461bcd60e51b815260040161022990611743565b68056bc75e2d63100000610960858763ffffffff610cb816565b111561097e5760405162461bcd60e51b815260040161022990611743565b68056bc75e2d6310000083111580156109a0575068056bc75e2d631000008211155b6109bc5760405162461bcd60e51b815260040161022990611753565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b03163314610a315760405162461bcd60e51b815260040161022990611773565b600082604051602001610a44919061169a565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001610a8c929190611674565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b610ac661064c565b80610adb57506019546001600160a01b031633145b610af75760405162461bcd60e51b815260040161022990611763565b828114610b165760405162461bcd60e51b815260040161022990611723565b604080518481526020808602820101909152606090848015610b42578160200160208202803883390190505b50905060005b84811015610c05576000868683818110610b5e57fe5b9050602002016020610b739190810190610fde565b858584818110610b7f57fe5b9050602002016020610b94919081019061115a565b604051602001610ba592919061164e565b6040516020818303038152906040528051906020012060001c90506010600082815260200190815260200160002054838381518110610be057fe5b6020908102919091018101919091526000918252601090526040812055600101610b48565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a90610c369084906004016116b4565b600060405180830381600087803b158015610c5057600080fd5b505af1158015610c64573d6000803e3d6000fd5b505050505050505050565b600b5481565b610c7d61064c565b610c995760405162461bcd60e51b815260040161022990611763565b610ca281610ce4565b50565b6019546001600160a01b031681565b3390565b600082820183811015610cdd5760405162461bcd60e51b815260040161022990611713565b9392505050565b6001600160a01b038116610d0a5760405162461bcd60e51b815260040161022990611703565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b8035610519816118c5565b60008083601f840112610d8357600080fd5b50813567ffffffffffffffff811115610d9b57600080fd5b602083019150836020820283011115610db357600080fd5b9250929050565b600082601f830112610dcb57600080fd5b8151610dde610dd9826117b8565b611791565b91508181835260208401935060208101905083856020840282011115610e0357600080fd5b60005b83811015610e2f5781610e198882610ec3565b8452506020928301929190910190600101610e06565b5050505092915050565b600082601f830112610e4a57600080fd5b8135610e58610dd9826117b8565b9150818183526020840193506020810190508385610100840282011115610e7e57600080fd5b60005b83811015610e2f5781610e948882610f1d565b8452506020909201916101009190910190600101610e81565b8035610519816118d9565b8035610519816118e2565b8051610519816118e2565b600082601f830112610edf57600080fd5b8135610eed610dd9826117d9565b91508082526020830160208301858383011115610f0957600080fd5b610f1483828461184b565b50505092915050565b60006101008284031215610f3057600080fd5b610f3b610100611791565b90506000610f498484610eb8565b8252506020610f5a84848301610ead565b6020830152506040610f6e84828501610d66565b6040830152506060610f8284828501610d66565b6060830152506080610f9684828501610d66565b60808301525060a0610faa84828501610eb8565b60a08301525060c0610fbe84828501610eb8565b60c08301525060e0610fd284828501610eb8565b60e08301525092915050565b600060208284031215610ff057600080fd5b6000610ffc8484610d66565b949350505050565b6000806040838503121561101757600080fd5b60006110238585610d66565b925050602061103485828601610d66565b9150509250929050565b6000806040838503121561105157600080fd5b600061105d8585610d66565b925050602061103485828601610eb8565b6000806000806040858703121561108457600080fd5b843567ffffffffffffffff81111561109b57600080fd5b6110a787828801610d71565b9450945050602085013567ffffffffffffffff8111156110c657600080fd5b6110d287828801610d71565b95989497509550505050565b6000602082840312156110f057600080fd5b815167ffffffffffffffff81111561110757600080fd5b610ffc84828501610dba565b6000806040838503121561112657600080fd5b823567ffffffffffffffff81111561113d57600080fd5b61114985828601610e39565b925050602061103485828601610ead565b60006020828403121561116c57600080fd5b6000610ffc8484610ead565b6000806040838503121561118b57600080fd5b823567ffffffffffffffff8111156111a257600080fd5b61114985828601610ece565b6000602082840312156111c057600080fd5b6000610ffc8484610eb8565b600080600080600080600060e0888a0312156111e757600080fd5b60006111f38a8a610eb8565b97505060206112048a828b01610eb8565b96505060406112158a828b01610eb8565b95505060606112268a828b01610eb8565b94505060806112378a828b01610eb8565b93505060a06112488a828b01610eb8565b92505060c06112598a828b01610eb8565b91505092959891949750929550565b60006112748383611372565b505060200190565b6000611288838361159c565b50506101000190565b61129a81611819565b82525050565b61129a6112ac82611819565b611883565b60006112bc82611807565b6112c6818561180b565b93506112d183611801565b8060005b838110156112ff5781516112e98882611268565b97506112f483611801565b9250506001016112d5565b509495945050505050565b600061131582611807565b61131f818561180b565b935061132a83611801565b8060005b838110156112ff578151611342888261127c565b975061134d83611801565b92505060010161132e565b61129a81611824565b61129a61136d82611824565b61188e565b61129a81611829565b61129a6113878261182c565b611829565b600061139782611807565b6113a18185611814565b93506113b1818560208601611857565b9290920192915050565b60006113c682611807565b6113d0818561180b565b93506113e0818560208601611857565b6113e9816118af565b9093019392505050565b600061140060268361180b565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000611448601b8361180b565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611481600e8361180b565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b60006114ab60328361180b565b7f4c6f616e546f6b656e53657474696e67734c6f77657241646d696e202d2066618152711b1b189858dac81b9bdd08185b1b1bddd95960721b602082015260400192915050565b60006114ff60158361180b565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000611530600f8361180b565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b600061155b600c8361180b565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000611583600a8361180b565b6937b7363ca830bab9b2b960b11b815260200192915050565b80516101008301906115ae8482611372565b5060208201516115c16020850182611358565b5060408201516115d46040850182611291565b5060608201516115e76060850182611291565b5060808201516115fa6080850182611291565b5060a082015161160d60a0850182611372565b5060c082015161162060c0850182611372565b5060e082015161163360e0850182611372565b50505050565b61129a61138782611829565b61129a81611845565b600061165a82856112a0565b60148201915061166a8284611361565b5060010192915050565b6000611680828561137b565b6004820191506116908284611639565b5060200192915050565b6000610cdd828461138c565b602081016105198284611291565b60208082528101610cdd81846112b1565b60208082528101610cdd818461130a565b602081016105198284611358565b602081016105198284611372565b60208082528101610cdd81846113bb565b60208082528101610519816113f3565b602080825281016105198161143b565b6020808252810161051981611474565b602080825281016105198161149e565b60208082528101610519816114f2565b6020808252810161051981611523565b602080825281016105198161154e565b6020808252810161051981611576565b602081016105198284611645565b60405181810167ffffffffffffffff811182821017156117b057600080fd5b604052919050565b600067ffffffffffffffff8211156117cf57600080fd5b5060209081020190565b600067ffffffffffffffff8211156117f057600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b600061051982611839565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b82818337506000910152565b60005b8381101561187257818101518382015260200161185a565b838111156116335750506000910152565b600061051982611899565b6000610519826118a4565b6000610519826118bf565b6000610519826118b9565b601f01601f191690565b60f81b90565b60601b90565b6118ce81611819565b8114610ca257600080fd5b6118ce81611824565b6118ce8161182956fea365627a7a72315820b0b55ee9e359ac792e9ef4246a0a84956b698fe8615ffaf9289ce5906c100b756c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH2 0x1C PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x6F AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x73 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x192E DUP1 PUSH2 0x82 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x211 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x125 JUMPI DUP1 PUSH4 0xD8F06C83 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xE41B07E3 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x3D1 JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0x3E4 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3FF JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x412 JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0xD97206A4 EQ PUSH2 0x398 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3AB JUMPI DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0x3BE JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0x9BDA3A98 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x9BDA3A98 EQ PUSH2 0x35D JUMPI DUP1 PUSH4 0x9FD0506D EQ PUSH2 0x365 JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0xCA37E666 EQ PUSH2 0x375 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x37D JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0x8EE6C4E6 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x355 JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x704B6C02 GT PUSH2 0x177 JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH2 0x2FF JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x312 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x32D JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x335 JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x2F7 JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0x1D0806AE GT PUSH2 0x1E4 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x2D88AF4A EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x2BF JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0x6947A3A EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x285 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1733 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x23A PUSH2 0x41A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0x16A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x258 PUSH2 0x429 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0x16F2 JUMP JUMPDEST PUSH2 0x278 PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x103E JUMP JUMPDEST PUSH2 0x4B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0x16D6 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x51F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0x16E4 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x525 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x52B JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x2B8 CALLDATASIZE PUSH1 0x4 PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x531 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x23A PUSH2 0x577 JUMP JUMPDEST PUSH2 0x2CF PUSH2 0x586 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0x1783 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x2EA CALLDATASIZE PUSH1 0x4 PUSH2 0x11AE JUMP JUMPDEST PUSH2 0x58F JUMP JUMPDEST PUSH2 0x28D PUSH2 0x5A1 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x5A7 JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x30D CALLDATASIZE PUSH1 0x4 PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST PUSH2 0x28D PUSH2 0x320 CALLDATASIZE PUSH1 0x4 PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x5F3 JUMP JUMPDEST PUSH2 0x23A PUSH2 0x60E JUMP JUMPDEST PUSH2 0x28D PUSH2 0x622 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x628 JUMP JUMPDEST PUSH2 0x23A PUSH2 0x62E JUMP JUMPDEST PUSH2 0x23A PUSH2 0x63D JUMP JUMPDEST PUSH2 0x278 PUSH2 0x64C JUMP JUMPDEST PUSH2 0x258 PUSH2 0x672 JUMP JUMPDEST PUSH2 0x23A PUSH2 0x6CD JUMP JUMPDEST PUSH2 0x23A PUSH2 0x6DC JUMP JUMPDEST PUSH2 0x28D PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x23A PUSH2 0x6F1 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x700 JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x393 CALLDATASIZE PUSH1 0x4 PUSH2 0x1113 JUMP JUMPDEST PUSH2 0x706 JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x3A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x11CC JUMP JUMPDEST PUSH2 0x8D5 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x3B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1004 JUMP JUMPDEST PUSH2 0x9DC JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x1178 JUMP JUMPDEST PUSH2 0xA07 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x3DF CALLDATASIZE PUSH1 0x4 PUSH2 0xFDE JUMP JUMPDEST PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x106E JUMP JUMPDEST PUSH2 0xABE JUMP JUMPDEST PUSH2 0x28D PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x40D CALLDATASIZE PUSH1 0x4 PUSH2 0xFDE JUMP JUMPDEST PUSH2 0xC75 JUMP JUMPDEST PUSH2 0x23A PUSH2 0xCA5 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4AC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x481 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4AC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x48F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x50D SWAP1 DUP7 SWAP1 PUSH2 0x16E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x539 PUSH2 0x64C JUMP JUMPDEST PUSH2 0x555 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1763 JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH2 0x5B5 PUSH2 0x64C JUMP JUMPDEST PUSH2 0x5D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1763 JUMP JUMPDEST PUSH1 0x19 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x663 PUSH2 0xCB4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4AC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x481 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4AC JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x70E PUSH2 0x64C JUMP JUMPDEST DUP1 PUSH2 0x723 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x73F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1763 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x7C9 JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x76C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x79E JUMPI PUSH3 0x24EA00 PUSH2 0x7A1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7B2 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x756 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x7FA SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x16C5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x814 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x828 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x850 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x10DE JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x8CE JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x86A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x882 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8A0 SWAP3 SWAP2 SWAP1 PUSH2 0x164E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x855 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8DD PUSH2 0x64C JUMP JUMPDEST DUP1 PUSH2 0x8F2 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x90E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1763 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x928 DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0xCB8 AND JUMP JUMPDEST GT ISZERO PUSH2 0x946 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1743 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x960 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0xCB8 AND JUMP JUMPDEST GT ISZERO PUSH2 0x97E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1743 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x9A0 JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x9BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1753 JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1773 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA44 SWAP2 SWAP1 PUSH2 0x169A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA8C SWAP3 SWAP2 SWAP1 PUSH2 0x1674 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xAC6 PUSH2 0x64C JUMP JUMPDEST DUP1 PUSH2 0xADB JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0xAF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1763 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0xB16 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1723 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0xB42 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xC05 JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0xB5E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xB73 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xFDE JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0xB7F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xB94 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x115A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBA5 SWAP3 SWAP2 SWAP1 PUSH2 0x164E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xBE0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xB48 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0xC36 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC64 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0xC7D PUSH2 0x64C JUMP JUMPDEST PUSH2 0xC99 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1763 JUMP JUMPDEST PUSH2 0xCA2 DUP2 PUSH2 0xCE4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xCDD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1713 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD0A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1703 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x519 DUP2 PUSH2 0x18C5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xD83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xDB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xDCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xDDE PUSH2 0xDD9 DUP3 PUSH2 0x17B8 JUMP JUMPDEST PUSH2 0x1791 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xE03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE2F JUMPI DUP2 PUSH2 0xE19 DUP9 DUP3 PUSH2 0xEC3 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE06 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE58 PUSH2 0xDD9 DUP3 PUSH2 0x17B8 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xE7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE2F JUMPI DUP2 PUSH2 0xE94 DUP9 DUP3 PUSH2 0xF1D JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE81 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x519 DUP2 PUSH2 0x18D9 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x519 DUP2 PUSH2 0x18E2 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x519 DUP2 PUSH2 0x18E2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEED PUSH2 0xDD9 DUP3 PUSH2 0x17D9 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF14 DUP4 DUP3 DUP5 PUSH2 0x184B JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF3B PUSH2 0x100 PUSH2 0x1791 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF49 DUP5 DUP5 PUSH2 0xEB8 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0xF5A DUP5 DUP5 DUP4 ADD PUSH2 0xEAD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0xF6E DUP5 DUP3 DUP6 ADD PUSH2 0xD66 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0xF82 DUP5 DUP3 DUP6 ADD PUSH2 0xD66 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0xF96 DUP5 DUP3 DUP6 ADD PUSH2 0xD66 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0xFAA DUP5 DUP3 DUP6 ADD PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0xFBE DUP5 DUP3 DUP6 ADD PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0xFD2 DUP5 DUP3 DUP6 ADD PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFFC DUP5 DUP5 PUSH2 0xD66 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1023 DUP6 DUP6 PUSH2 0xD66 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1034 DUP6 DUP3 DUP7 ADD PUSH2 0xD66 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1051 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x105D DUP6 DUP6 PUSH2 0xD66 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1034 DUP6 DUP3 DUP7 ADD PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1084 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x109B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10A7 DUP8 DUP3 DUP9 ADD PUSH2 0xD71 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D2 DUP8 DUP3 DUP9 ADD PUSH2 0xD71 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFFC DUP5 DUP3 DUP6 ADD PUSH2 0xDBA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x113D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1149 DUP6 DUP3 DUP7 ADD PUSH2 0xE39 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1034 DUP6 DUP3 DUP7 ADD PUSH2 0xEAD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFFC DUP5 DUP5 PUSH2 0xEAD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x118B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1149 DUP6 DUP3 DUP7 ADD PUSH2 0xECE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFFC DUP5 DUP5 PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x11E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11F3 DUP11 DUP11 PUSH2 0xEB8 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x1204 DUP11 DUP3 DUP12 ADD PUSH2 0xEB8 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x1215 DUP11 DUP3 DUP12 ADD PUSH2 0xEB8 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x1226 DUP11 DUP3 DUP12 ADD PUSH2 0xEB8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x1237 DUP11 DUP3 DUP12 ADD PUSH2 0xEB8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x1248 DUP11 DUP3 DUP12 ADD PUSH2 0xEB8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x1259 DUP11 DUP3 DUP12 ADD PUSH2 0xEB8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1274 DUP4 DUP4 PUSH2 0x1372 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1288 DUP4 DUP4 PUSH2 0x159C JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x129A DUP2 PUSH2 0x1819 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x129A PUSH2 0x12AC DUP3 PUSH2 0x1819 JUMP JUMPDEST PUSH2 0x1883 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12BC DUP3 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x12C6 DUP2 DUP6 PUSH2 0x180B JUMP JUMPDEST SWAP4 POP PUSH2 0x12D1 DUP4 PUSH2 0x1801 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12FF JUMPI DUP2 MLOAD PUSH2 0x12E9 DUP9 DUP3 PUSH2 0x1268 JUMP JUMPDEST SWAP8 POP PUSH2 0x12F4 DUP4 PUSH2 0x1801 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x12D5 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1315 DUP3 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x131F DUP2 DUP6 PUSH2 0x180B JUMP JUMPDEST SWAP4 POP PUSH2 0x132A DUP4 PUSH2 0x1801 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12FF JUMPI DUP2 MLOAD PUSH2 0x1342 DUP9 DUP3 PUSH2 0x127C JUMP JUMPDEST SWAP8 POP PUSH2 0x134D DUP4 PUSH2 0x1801 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x132E JUMP JUMPDEST PUSH2 0x129A DUP2 PUSH2 0x1824 JUMP JUMPDEST PUSH2 0x129A PUSH2 0x136D DUP3 PUSH2 0x1824 JUMP JUMPDEST PUSH2 0x188E JUMP JUMPDEST PUSH2 0x129A DUP2 PUSH2 0x1829 JUMP JUMPDEST PUSH2 0x129A PUSH2 0x1387 DUP3 PUSH2 0x182C JUMP JUMPDEST PUSH2 0x1829 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1397 DUP3 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x13A1 DUP2 DUP6 PUSH2 0x1814 JUMP JUMPDEST SWAP4 POP PUSH2 0x13B1 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1857 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13C6 DUP3 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x13D0 DUP2 DUP6 PUSH2 0x180B JUMP JUMPDEST SWAP4 POP PUSH2 0x13E0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1857 JUMP JUMPDEST PUSH2 0x13E9 DUP2 PUSH2 0x18AF JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1400 PUSH1 0x26 DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1448 PUSH1 0x1B DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1481 PUSH1 0xE DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14AB PUSH1 0x32 DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH32 0x4C6F616E546F6B656E53657474696E67734C6F77657241646D696E202D206661 DUP2 MSTORE PUSH18 0x1B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x72 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14FF PUSH1 0x15 DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1530 PUSH1 0xF DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x155B PUSH1 0xC DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1583 PUSH1 0xA DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH10 0x37B7363CA830BAB9B2B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x15AE DUP5 DUP3 PUSH2 0x1372 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x15C1 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x1358 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x15D4 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1291 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x15E7 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x1291 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x15FA PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x1291 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x160D PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x1372 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x1620 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x1372 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x1633 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x1372 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x129A PUSH2 0x1387 DUP3 PUSH2 0x1829 JUMP JUMPDEST PUSH2 0x129A DUP2 PUSH2 0x1845 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 DUP6 PUSH2 0x12A0 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x166A DUP3 DUP5 PUSH2 0x1361 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1680 DUP3 DUP6 PUSH2 0x137B JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x1690 DUP3 DUP5 PUSH2 0x1639 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDD DUP3 DUP5 PUSH2 0x138C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x519 DUP3 DUP5 PUSH2 0x1291 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCDD DUP2 DUP5 PUSH2 0x12B1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCDD DUP2 DUP5 PUSH2 0x130A JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x519 DUP3 DUP5 PUSH2 0x1358 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x519 DUP3 DUP5 PUSH2 0x1372 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCDD DUP2 DUP5 PUSH2 0x13BB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x13F3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x143B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x1474 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x149E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x1523 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x154E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x1576 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x519 DUP3 DUP5 PUSH2 0x1645 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x17B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x17CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x17F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519 DUP3 PUSH2 0x1839 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1872 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x185A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1633 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519 DUP3 PUSH2 0x1899 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519 DUP3 PUSH2 0x18A4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519 DUP3 PUSH2 0x18BF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519 DUP3 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x18CE DUP2 PUSH2 0x1819 JUMP JUMPDEST DUP2 EQ PUSH2 0xCA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18CE DUP2 PUSH2 0x1824 JUMP JUMPDEST PUSH2 0x18CE DUP2 PUSH2 0x1829 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xB0 0xB5 0x5E 0xE9 0xE3 MSIZE 0xAC PUSH26 0x2E9EF4246A0A84956B698FE8615FFAF9289CE5906C100B756C65 PUSH25 0x706572696D656E74616CF564736F6C63430005110040000000 ",
              "sourceMap": "256:6050:7:-;;;493:1:143;661:55;;;;697:12:142;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;256:6050:7;;780:87:137;853:10;780:87;:::o;256:6050:7:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102115760003560e01c80638da5cb5b11610125578063d8f06c83116100ad578063e41b07e31161007c578063e41b07e3146103d1578063e697d2ee146103e4578063ef2b0b39146103f7578063f2fde38b146103ff578063f851a4401461041257610211565b8063d8f06c8314610385578063d97206a414610398578063dd62ed3e146103ab578063e3cded61146103be57610211565b80639bda3a98116100f45780639bda3a981461035d5780639fd0506d14610365578063ba0e43bf1461036d578063ca37e66614610375578063d759dbeb1461037d57610211565b80638da5cb5b1461033d5780638ee6c4e6146103455780638f32d59b1461034d57806395d89b411461035557610211565b8063313ce567116101a8578063704b6c0211610177578063704b6c02146102ff57806370a0823114610312578063797bf385146103255780637b7933b41461032d5780637e37c08c1461033557610211565b8063313ce567146102c75780633291c11a146102dc578063330691ac146102ef57806356e07d70146102f757610211565b80631d0806ae116101e45780631d0806ae1461029a5780631f68f20a146102a25780632d88af4a146102aa5780632f6b600d146102bf57610211565b806306947a3a1461023257806306fdde0314610250578063095ea7b31461026557806318160ddd14610285575b60405162461bcd60e51b815260040161022990611733565b60405180910390fd5b61023a61041a565b60405161024791906116a6565b60405180910390f35b610258610429565b60405161024791906116f2565b61027861027336600461103e565b6104b4565b60405161024791906116d6565b61028d61051f565b60405161024791906116e4565b61028d610525565b61028d61052b565b6102bd6102b8366004610fde565b610531565b005b61023a610577565b6102cf610586565b6040516102479190611783565b61028d6102ea3660046111ae565b61058f565b61028d6105a1565b61028d6105a7565b6102bd61030d366004610fde565b6105ad565b61028d610320366004610fde565b6105f3565b61023a61060e565b61028d610622565b61028d610628565b61023a61062e565b61023a61063d565b61027861064c565b610258610672565b61023a6106cd565b61023a6106dc565b61028d6106eb565b61023a6106f1565b61028d610700565b6102bd610393366004611113565b610706565b6102bd6103a63660046111cc565b6108d5565b61028d6103b9366004611004565b6109dc565b6102bd6103cc366004611178565b610a07565b61028d6103df366004610fde565b610aac565b6102bd6103f236600461106e565b610abe565b61028d610c6f565b6102bd61040d366004610fde565b610c75565b61023a610ca5565b6016546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156104ac5780601f10610481576101008083540402835291602001916104ac565b820191906000526020600020905b81548152906001019060200180831161048f57829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061050d9086906116e4565b60405180910390a35060015b92915050565b60155490565b600e5481565b60055481565b61053961064c565b6105555760405162461bcd60e51b815260040161022990611763565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6105b561064c565b6105d15760405162461bcd60e51b815260040161022990611763565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316610663610cb4565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104ac5780601f10610481576101008083540402835291602001916104ac565b6018546001600160a01b031681565b601b546001600160a01b031681565b60095481565b601a546001600160a01b031681565b60075481565b61070e61064c565b8061072357506019546001600160a01b031633145b61073f5760405162461bcd60e51b815260040161022990611763565b60045460609061010090046001600160a01b031660005b84518110156107c9578185828151811061076c57fe5b6020026020010151606001906001600160a01b031690816001600160a01b0316815250508361079e576224ea006107a1565b60005b62ffffff168582815181106107b257fe5b602090810291909101015160e00152600101610756565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e906107fa9087906004016116c5565b600060405180830381600087803b15801561081457600080fd5b505af1158015610828573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261085091908101906110de565b915060005b82518110156108ce5782818151811061086a57fe5b60200260200101516010600087848151811061088257fe5b602002602001015160800151876040516020016108a092919061164e565b60408051601f1981840301815291815281516020928301208352908201929092520160002055600101610855565b5050505050565b6108dd61064c565b806108f257506019546001600160a01b031633145b61090e5760405162461bcd60e51b815260040161022990611763565b68056bc75e2d63100000610928878963ffffffff610cb816565b11156109465760405162461bcd60e51b815260040161022990611743565b68056bc75e2d63100000610960858763ffffffff610cb816565b111561097e5760405162461bcd60e51b815260040161022990611743565b68056bc75e2d6310000083111580156109a0575068056bc75e2d631000008211155b6109bc5760405162461bcd60e51b815260040161022990611753565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b03163314610a315760405162461bcd60e51b815260040161022990611773565b600082604051602001610a44919061169a565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001610a8c929190611674565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b610ac661064c565b80610adb57506019546001600160a01b031633145b610af75760405162461bcd60e51b815260040161022990611763565b828114610b165760405162461bcd60e51b815260040161022990611723565b604080518481526020808602820101909152606090848015610b42578160200160208202803883390190505b50905060005b84811015610c05576000868683818110610b5e57fe5b9050602002016020610b739190810190610fde565b858584818110610b7f57fe5b9050602002016020610b94919081019061115a565b604051602001610ba592919061164e565b6040516020818303038152906040528051906020012060001c90506010600082815260200190815260200160002054838381518110610be057fe5b6020908102919091018101919091526000918252601090526040812055600101610b48565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a90610c369084906004016116b4565b600060405180830381600087803b158015610c5057600080fd5b505af1158015610c64573d6000803e3d6000fd5b505050505050505050565b600b5481565b610c7d61064c565b610c995760405162461bcd60e51b815260040161022990611763565b610ca281610ce4565b50565b6019546001600160a01b031681565b3390565b600082820183811015610cdd5760405162461bcd60e51b815260040161022990611713565b9392505050565b6001600160a01b038116610d0a5760405162461bcd60e51b815260040161022990611703565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b8035610519816118c5565b60008083601f840112610d8357600080fd5b50813567ffffffffffffffff811115610d9b57600080fd5b602083019150836020820283011115610db357600080fd5b9250929050565b600082601f830112610dcb57600080fd5b8151610dde610dd9826117b8565b611791565b91508181835260208401935060208101905083856020840282011115610e0357600080fd5b60005b83811015610e2f5781610e198882610ec3565b8452506020928301929190910190600101610e06565b5050505092915050565b600082601f830112610e4a57600080fd5b8135610e58610dd9826117b8565b9150818183526020840193506020810190508385610100840282011115610e7e57600080fd5b60005b83811015610e2f5781610e948882610f1d565b8452506020909201916101009190910190600101610e81565b8035610519816118d9565b8035610519816118e2565b8051610519816118e2565b600082601f830112610edf57600080fd5b8135610eed610dd9826117d9565b91508082526020830160208301858383011115610f0957600080fd5b610f1483828461184b565b50505092915050565b60006101008284031215610f3057600080fd5b610f3b610100611791565b90506000610f498484610eb8565b8252506020610f5a84848301610ead565b6020830152506040610f6e84828501610d66565b6040830152506060610f8284828501610d66565b6060830152506080610f9684828501610d66565b60808301525060a0610faa84828501610eb8565b60a08301525060c0610fbe84828501610eb8565b60c08301525060e0610fd284828501610eb8565b60e08301525092915050565b600060208284031215610ff057600080fd5b6000610ffc8484610d66565b949350505050565b6000806040838503121561101757600080fd5b60006110238585610d66565b925050602061103485828601610d66565b9150509250929050565b6000806040838503121561105157600080fd5b600061105d8585610d66565b925050602061103485828601610eb8565b6000806000806040858703121561108457600080fd5b843567ffffffffffffffff81111561109b57600080fd5b6110a787828801610d71565b9450945050602085013567ffffffffffffffff8111156110c657600080fd5b6110d287828801610d71565b95989497509550505050565b6000602082840312156110f057600080fd5b815167ffffffffffffffff81111561110757600080fd5b610ffc84828501610dba565b6000806040838503121561112657600080fd5b823567ffffffffffffffff81111561113d57600080fd5b61114985828601610e39565b925050602061103485828601610ead565b60006020828403121561116c57600080fd5b6000610ffc8484610ead565b6000806040838503121561118b57600080fd5b823567ffffffffffffffff8111156111a257600080fd5b61114985828601610ece565b6000602082840312156111c057600080fd5b6000610ffc8484610eb8565b600080600080600080600060e0888a0312156111e757600080fd5b60006111f38a8a610eb8565b97505060206112048a828b01610eb8565b96505060406112158a828b01610eb8565b95505060606112268a828b01610eb8565b94505060806112378a828b01610eb8565b93505060a06112488a828b01610eb8565b92505060c06112598a828b01610eb8565b91505092959891949750929550565b60006112748383611372565b505060200190565b6000611288838361159c565b50506101000190565b61129a81611819565b82525050565b61129a6112ac82611819565b611883565b60006112bc82611807565b6112c6818561180b565b93506112d183611801565b8060005b838110156112ff5781516112e98882611268565b97506112f483611801565b9250506001016112d5565b509495945050505050565b600061131582611807565b61131f818561180b565b935061132a83611801565b8060005b838110156112ff578151611342888261127c565b975061134d83611801565b92505060010161132e565b61129a81611824565b61129a61136d82611824565b61188e565b61129a81611829565b61129a6113878261182c565b611829565b600061139782611807565b6113a18185611814565b93506113b1818560208601611857565b9290920192915050565b60006113c682611807565b6113d0818561180b565b93506113e0818560208601611857565b6113e9816118af565b9093019392505050565b600061140060268361180b565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000611448601b8361180b565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611481600e8361180b565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b60006114ab60328361180b565b7f4c6f616e546f6b656e53657474696e67734c6f77657241646d696e202d2066618152711b1b189858dac81b9bdd08185b1b1bddd95960721b602082015260400192915050565b60006114ff60158361180b565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000611530600f8361180b565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b600061155b600c8361180b565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000611583600a8361180b565b6937b7363ca830bab9b2b960b11b815260200192915050565b80516101008301906115ae8482611372565b5060208201516115c16020850182611358565b5060408201516115d46040850182611291565b5060608201516115e76060850182611291565b5060808201516115fa6080850182611291565b5060a082015161160d60a0850182611372565b5060c082015161162060c0850182611372565b5060e082015161163360e0850182611372565b50505050565b61129a61138782611829565b61129a81611845565b600061165a82856112a0565b60148201915061166a8284611361565b5060010192915050565b6000611680828561137b565b6004820191506116908284611639565b5060200192915050565b6000610cdd828461138c565b602081016105198284611291565b60208082528101610cdd81846112b1565b60208082528101610cdd818461130a565b602081016105198284611358565b602081016105198284611372565b60208082528101610cdd81846113bb565b60208082528101610519816113f3565b602080825281016105198161143b565b6020808252810161051981611474565b602080825281016105198161149e565b60208082528101610519816114f2565b6020808252810161051981611523565b602080825281016105198161154e565b6020808252810161051981611576565b602081016105198284611645565b60405181810167ffffffffffffffff811182821017156117b057600080fd5b604052919050565b600067ffffffffffffffff8211156117cf57600080fd5b5060209081020190565b600067ffffffffffffffff8211156117f057600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b600061051982611839565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b82818337506000910152565b60005b8381101561187257818101518382015260200161185a565b838111156116335750506000910152565b600061051982611899565b6000610519826118a4565b6000610519826118bf565b6000610519826118b9565b601f01601f191690565b60f81b90565b60601b90565b6118ce81611819565b8114610ca257600080fd5b6118ce81611824565b6118ce8161182956fea365627a7a72315820b0b55ee9e359ac792e9ef4246a0a84956b698fe8615ffaf9289ce5906c100b756c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x211 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x125 JUMPI DUP1 PUSH4 0xD8F06C83 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xE41B07E3 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x3D1 JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0x3E4 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3FF JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x412 JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0xD97206A4 EQ PUSH2 0x398 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3AB JUMPI DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0x3BE JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0x9BDA3A98 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x9BDA3A98 EQ PUSH2 0x35D JUMPI DUP1 PUSH4 0x9FD0506D EQ PUSH2 0x365 JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0xCA37E666 EQ PUSH2 0x375 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x37D JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0x8EE6C4E6 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x355 JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x704B6C02 GT PUSH2 0x177 JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH2 0x2FF JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x312 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x32D JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x335 JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x2F7 JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0x1D0806AE GT PUSH2 0x1E4 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x2D88AF4A EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x2BF JUMPI PUSH2 0x211 JUMP JUMPDEST DUP1 PUSH4 0x6947A3A EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x285 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1733 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x23A PUSH2 0x41A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0x16A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x258 PUSH2 0x429 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0x16F2 JUMP JUMPDEST PUSH2 0x278 PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x103E JUMP JUMPDEST PUSH2 0x4B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0x16D6 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x51F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0x16E4 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x525 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x52B JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x2B8 CALLDATASIZE PUSH1 0x4 PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x531 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x23A PUSH2 0x577 JUMP JUMPDEST PUSH2 0x2CF PUSH2 0x586 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0x1783 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x2EA CALLDATASIZE PUSH1 0x4 PUSH2 0x11AE JUMP JUMPDEST PUSH2 0x58F JUMP JUMPDEST PUSH2 0x28D PUSH2 0x5A1 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x5A7 JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x30D CALLDATASIZE PUSH1 0x4 PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST PUSH2 0x28D PUSH2 0x320 CALLDATASIZE PUSH1 0x4 PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x5F3 JUMP JUMPDEST PUSH2 0x23A PUSH2 0x60E JUMP JUMPDEST PUSH2 0x28D PUSH2 0x622 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x628 JUMP JUMPDEST PUSH2 0x23A PUSH2 0x62E JUMP JUMPDEST PUSH2 0x23A PUSH2 0x63D JUMP JUMPDEST PUSH2 0x278 PUSH2 0x64C JUMP JUMPDEST PUSH2 0x258 PUSH2 0x672 JUMP JUMPDEST PUSH2 0x23A PUSH2 0x6CD JUMP JUMPDEST PUSH2 0x23A PUSH2 0x6DC JUMP JUMPDEST PUSH2 0x28D PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x23A PUSH2 0x6F1 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x700 JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x393 CALLDATASIZE PUSH1 0x4 PUSH2 0x1113 JUMP JUMPDEST PUSH2 0x706 JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x3A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x11CC JUMP JUMPDEST PUSH2 0x8D5 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x3B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1004 JUMP JUMPDEST PUSH2 0x9DC JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x1178 JUMP JUMPDEST PUSH2 0xA07 JUMP JUMPDEST PUSH2 0x28D PUSH2 0x3DF CALLDATASIZE PUSH1 0x4 PUSH2 0xFDE JUMP JUMPDEST PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x106E JUMP JUMPDEST PUSH2 0xABE JUMP JUMPDEST PUSH2 0x28D PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x2BD PUSH2 0x40D CALLDATASIZE PUSH1 0x4 PUSH2 0xFDE JUMP JUMPDEST PUSH2 0xC75 JUMP JUMPDEST PUSH2 0x23A PUSH2 0xCA5 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4AC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x481 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4AC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x48F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x50D SWAP1 DUP7 SWAP1 PUSH2 0x16E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x539 PUSH2 0x64C JUMP JUMPDEST PUSH2 0x555 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1763 JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH2 0x5B5 PUSH2 0x64C JUMP JUMPDEST PUSH2 0x5D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1763 JUMP JUMPDEST PUSH1 0x19 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x663 PUSH2 0xCB4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4AC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x481 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4AC JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x70E PUSH2 0x64C JUMP JUMPDEST DUP1 PUSH2 0x723 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x73F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1763 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x7C9 JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x76C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x79E JUMPI PUSH3 0x24EA00 PUSH2 0x7A1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7B2 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x756 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x7FA SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x16C5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x814 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x828 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x850 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x10DE JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x8CE JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x86A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x882 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8A0 SWAP3 SWAP2 SWAP1 PUSH2 0x164E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x855 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8DD PUSH2 0x64C JUMP JUMPDEST DUP1 PUSH2 0x8F2 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x90E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1763 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x928 DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0xCB8 AND JUMP JUMPDEST GT ISZERO PUSH2 0x946 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1743 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x960 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0xCB8 AND JUMP JUMPDEST GT ISZERO PUSH2 0x97E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1743 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x9A0 JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x9BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1753 JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1773 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA44 SWAP2 SWAP1 PUSH2 0x169A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA8C SWAP3 SWAP2 SWAP1 PUSH2 0x1674 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xAC6 PUSH2 0x64C JUMP JUMPDEST DUP1 PUSH2 0xADB JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0xAF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1763 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0xB16 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1723 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0xB42 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xC05 JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0xB5E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xB73 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xFDE JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0xB7F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xB94 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x115A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBA5 SWAP3 SWAP2 SWAP1 PUSH2 0x164E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xBE0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xB48 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0xC36 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC64 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0xC7D PUSH2 0x64C JUMP JUMPDEST PUSH2 0xC99 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1763 JUMP JUMPDEST PUSH2 0xCA2 DUP2 PUSH2 0xCE4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xCDD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1713 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD0A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x229 SWAP1 PUSH2 0x1703 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x519 DUP2 PUSH2 0x18C5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xD83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xDB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xDCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xDDE PUSH2 0xDD9 DUP3 PUSH2 0x17B8 JUMP JUMPDEST PUSH2 0x1791 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xE03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE2F JUMPI DUP2 PUSH2 0xE19 DUP9 DUP3 PUSH2 0xEC3 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE06 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE58 PUSH2 0xDD9 DUP3 PUSH2 0x17B8 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xE7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE2F JUMPI DUP2 PUSH2 0xE94 DUP9 DUP3 PUSH2 0xF1D JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE81 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x519 DUP2 PUSH2 0x18D9 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x519 DUP2 PUSH2 0x18E2 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x519 DUP2 PUSH2 0x18E2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEED PUSH2 0xDD9 DUP3 PUSH2 0x17D9 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF14 DUP4 DUP3 DUP5 PUSH2 0x184B JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF3B PUSH2 0x100 PUSH2 0x1791 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF49 DUP5 DUP5 PUSH2 0xEB8 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0xF5A DUP5 DUP5 DUP4 ADD PUSH2 0xEAD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0xF6E DUP5 DUP3 DUP6 ADD PUSH2 0xD66 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0xF82 DUP5 DUP3 DUP6 ADD PUSH2 0xD66 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0xF96 DUP5 DUP3 DUP6 ADD PUSH2 0xD66 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0xFAA DUP5 DUP3 DUP6 ADD PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0xFBE DUP5 DUP3 DUP6 ADD PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0xFD2 DUP5 DUP3 DUP6 ADD PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFFC DUP5 DUP5 PUSH2 0xD66 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1023 DUP6 DUP6 PUSH2 0xD66 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1034 DUP6 DUP3 DUP7 ADD PUSH2 0xD66 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1051 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x105D DUP6 DUP6 PUSH2 0xD66 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1034 DUP6 DUP3 DUP7 ADD PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1084 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x109B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10A7 DUP8 DUP3 DUP9 ADD PUSH2 0xD71 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D2 DUP8 DUP3 DUP9 ADD PUSH2 0xD71 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFFC DUP5 DUP3 DUP6 ADD PUSH2 0xDBA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x113D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1149 DUP6 DUP3 DUP7 ADD PUSH2 0xE39 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1034 DUP6 DUP3 DUP7 ADD PUSH2 0xEAD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFFC DUP5 DUP5 PUSH2 0xEAD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x118B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1149 DUP6 DUP3 DUP7 ADD PUSH2 0xECE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFFC DUP5 DUP5 PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x11E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11F3 DUP11 DUP11 PUSH2 0xEB8 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x1204 DUP11 DUP3 DUP12 ADD PUSH2 0xEB8 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x1215 DUP11 DUP3 DUP12 ADD PUSH2 0xEB8 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x1226 DUP11 DUP3 DUP12 ADD PUSH2 0xEB8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x1237 DUP11 DUP3 DUP12 ADD PUSH2 0xEB8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x1248 DUP11 DUP3 DUP12 ADD PUSH2 0xEB8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x1259 DUP11 DUP3 DUP12 ADD PUSH2 0xEB8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1274 DUP4 DUP4 PUSH2 0x1372 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1288 DUP4 DUP4 PUSH2 0x159C JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x129A DUP2 PUSH2 0x1819 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x129A PUSH2 0x12AC DUP3 PUSH2 0x1819 JUMP JUMPDEST PUSH2 0x1883 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12BC DUP3 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x12C6 DUP2 DUP6 PUSH2 0x180B JUMP JUMPDEST SWAP4 POP PUSH2 0x12D1 DUP4 PUSH2 0x1801 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12FF JUMPI DUP2 MLOAD PUSH2 0x12E9 DUP9 DUP3 PUSH2 0x1268 JUMP JUMPDEST SWAP8 POP PUSH2 0x12F4 DUP4 PUSH2 0x1801 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x12D5 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1315 DUP3 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x131F DUP2 DUP6 PUSH2 0x180B JUMP JUMPDEST SWAP4 POP PUSH2 0x132A DUP4 PUSH2 0x1801 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12FF JUMPI DUP2 MLOAD PUSH2 0x1342 DUP9 DUP3 PUSH2 0x127C JUMP JUMPDEST SWAP8 POP PUSH2 0x134D DUP4 PUSH2 0x1801 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x132E JUMP JUMPDEST PUSH2 0x129A DUP2 PUSH2 0x1824 JUMP JUMPDEST PUSH2 0x129A PUSH2 0x136D DUP3 PUSH2 0x1824 JUMP JUMPDEST PUSH2 0x188E JUMP JUMPDEST PUSH2 0x129A DUP2 PUSH2 0x1829 JUMP JUMPDEST PUSH2 0x129A PUSH2 0x1387 DUP3 PUSH2 0x182C JUMP JUMPDEST PUSH2 0x1829 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1397 DUP3 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x13A1 DUP2 DUP6 PUSH2 0x1814 JUMP JUMPDEST SWAP4 POP PUSH2 0x13B1 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1857 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13C6 DUP3 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x13D0 DUP2 DUP6 PUSH2 0x180B JUMP JUMPDEST SWAP4 POP PUSH2 0x13E0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1857 JUMP JUMPDEST PUSH2 0x13E9 DUP2 PUSH2 0x18AF JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1400 PUSH1 0x26 DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1448 PUSH1 0x1B DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1481 PUSH1 0xE DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14AB PUSH1 0x32 DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH32 0x4C6F616E546F6B656E53657474696E67734C6F77657241646D696E202D206661 DUP2 MSTORE PUSH18 0x1B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x72 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14FF PUSH1 0x15 DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1530 PUSH1 0xF DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x155B PUSH1 0xC DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1583 PUSH1 0xA DUP4 PUSH2 0x180B JUMP JUMPDEST PUSH10 0x37B7363CA830BAB9B2B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x15AE DUP5 DUP3 PUSH2 0x1372 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x15C1 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x1358 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x15D4 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1291 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x15E7 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x1291 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x15FA PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x1291 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x160D PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x1372 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x1620 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x1372 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x1633 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x1372 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x129A PUSH2 0x1387 DUP3 PUSH2 0x1829 JUMP JUMPDEST PUSH2 0x129A DUP2 PUSH2 0x1845 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 DUP6 PUSH2 0x12A0 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x166A DUP3 DUP5 PUSH2 0x1361 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1680 DUP3 DUP6 PUSH2 0x137B JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x1690 DUP3 DUP5 PUSH2 0x1639 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDD DUP3 DUP5 PUSH2 0x138C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x519 DUP3 DUP5 PUSH2 0x1291 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCDD DUP2 DUP5 PUSH2 0x12B1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCDD DUP2 DUP5 PUSH2 0x130A JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x519 DUP3 DUP5 PUSH2 0x1358 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x519 DUP3 DUP5 PUSH2 0x1372 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCDD DUP2 DUP5 PUSH2 0x13BB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x13F3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x143B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x1474 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x149E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x1523 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x154E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x519 DUP2 PUSH2 0x1576 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x519 DUP3 DUP5 PUSH2 0x1645 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x17B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x17CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x17F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519 DUP3 PUSH2 0x1839 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1872 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x185A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1633 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519 DUP3 PUSH2 0x1899 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519 DUP3 PUSH2 0x18A4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519 DUP3 PUSH2 0x18BF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519 DUP3 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x18CE DUP2 PUSH2 0x1819 JUMP JUMPDEST DUP2 EQ PUSH2 0xCA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18CE DUP2 PUSH2 0x1824 JUMP JUMPDEST PUSH2 0x18CE DUP2 PUSH2 0x1829 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xB0 0xB5 0x5E 0xE9 0xE3 MSIZE 0xAC PUSH26 0x2E9EF4246A0A84956B698FE8615FFAF9289CE5906C100B756C65 PUSH25 0x706572696D656E74616CF564736F6C63430005110040000000 ",
              "sourceMap": "256:6050:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;256:6050:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1738:60;;-1:-1:-1;;;1738:60:7;;;;;;;;;;;;;;;;559:36;;;:::i;:::-;;;;;;;;;;;;;;;;1977:18:3;;;:::i;:::-;;;;;;;;1489:181:0;;;;;;;;;:::i;:::-;;;;;;;;1778:80:1;;;:::i;:::-;;;;;;;;2441:27:3;;;:::i;2150:23::-;;;:::i;1580:77:7:-;;;;;;;;;:::i;:::-;;598:32;;;:::i;2021:21:3:-;;;:::i;:::-;;;;;;;;2633:48;;;;;;;;;:::i;2176:29::-;;;:::i;2310:24::-;;;:::i;1386:73:7:-;;;;;;;;;:::i;2035:96:1:-;;;;;;;;;:::i;2115:31:3:-;;;:::i;2407:::-;;;:::i;2241:36::-;;;:::i;851:68:142:-;;;:::i;976:37:7:-;;;:::i;1134:83:142:-;;;:::i;1998:20:3:-;;;:::i;633:22:7:-;;;:::i;899:21::-;;;:::i;2281:26:3:-;;;:::i;815:31:7:-;;;:::i;2208:30:3:-;;;:::i;1977:745:7:-;;;;;;;;;:::i;4714:816::-;;;;;;;;;:::i;2464:123:1:-;;;;;;;;;:::i;5857:447:7:-;;;;;;;;;:::i;2854:51:3:-;;;;;;;;;:::i;2904:587:7:-;;;;;;;;;:::i;2337:27:3:-;;;:::i;1351:98:142:-;;;;;;;;;:::i;658:20:7:-;;;:::i;559:36::-;;;-1:-1:-1;;;;;559:36:7;;:::o;1977:18:3:-;;;;;;;;;;;;;;-1:-1:-1;;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1489:181:0:-;1574:10;1556:4;1566:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1566:29:0;;;;;;;;;;:38;;;1613;1556:4;;1566:29;;1613:38;;;;1598:6;;1613:38;;;;;;;;;;-1:-1:-1;1662:4:0;1489:181;;;;;:::o;1778:80:1:-;1842:12;;1778:80;:::o;2441:27:3:-;;;;:::o;2150:23::-;;;;:::o;1580:77:7:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1637:6:7;:16;;-1:-1:-1;;;;;;1637:16:7;-1:-1:-1;;;;;1637:16:7;;;;;;;;;;1580:77::o;598:32::-;;;-1:-1:-1;;;;;598:32:7;;:::o;2021:21:3:-;;;;;;:::o;2633:48::-;;;;;;;;;;;;;:::o;2176:29::-;;;;:::o;2310:24::-;;;;:::o;1386:73:7:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1441:5:7;:14;;-1:-1:-1;;;;;;1441:14:7;-1:-1:-1;;;;;1441:14:7;;;;;;;;;;1386:73::o;2035:96:1:-;-1:-1:-1;;;;;2111:16:1;2091:7;2111:16;;;:8;:16;;;;;;;2035:96::o;2115:31:3:-;;;;;;-1:-1:-1;;;;;2115:31:3;;:::o;2407:::-;;;;:::o;2241:36::-;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;976:37:7:-;;;-1:-1:-1;;;;;976:37:7;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1998:20:3:-;;;;;;;;;;;;;;;-1:-1:-1;;1998:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;633:22:7;;;-1:-1:-1;;;;;633:22:7;;:::o;899:21::-;;;-1:-1:-1;;;;;899:21:7;;:::o;2281:26:3:-;;;;:::o;815:31:7:-;;;-1:-1:-1;;;;;815:31:7;;:::o;2208:30:3:-;;;;:::o;1977:745:7:-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;2162:16;;2097:33;;2162:16;;;-1:-1:-1;;;;;2162:16:7;2134:25;2183:174;2207:14;:21;2203:1;:25;2183:174;;;2270:17;2240:14;2255:1;2240:17;;;;;;;;;;;;;;:27;;:47;-1:-1:-1;;;;;2240:47:7;;;-1:-1:-1;;;;;2240:47:7;;;;;2324:14;:28;;2345:7;2324:28;;;2341:1;2324:28;2292:60;;:14;2307:1;2292:17;;;;;;;;;;;;;;;;;;:29;;:60;2230:3;;2183:174;;;-1:-1:-1;2401:21:7;;2380:75;;-1:-1:-1;;;2380:75:7;;-1:-1:-1;;;;;2401:21:7;;;;2380:59;;:75;;2440:14;;2380:75;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2380:75:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2380:75:7;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2380:75:7;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;2380:75:7;;;;;;;;;2361:94;-1:-1:-1;2464:9:7;2459:260;2483:16;:23;2479:1;:27;2459:260;;;2695:16;2712:1;2695:19;;;;;;;;;;;;;;2518:13;:174;2593:14;2608:1;2593:17;;;;;;;;;;;;;;:33;;;2635:14;2568:106;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2568:106:7;;;2551:130;;49:4:-1;2551:130:7;;;;2518:174;;;;;;;;;;2537:150;2518:174;:196;2508:3;;2459:260;;;;1160:1;;1977:745;;:::o;4714:816::-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;1875:6:3;4951:30:7;:15;4971:9;4951:30;:19;:30;:::i;:::-;:55;;4943:89;;;;-1:-1:-1;;;4943:89:7;;;;;;;;;1875:6:3;5044:44:7;:22;5071:16;5044:44;:26;:44;:::i;:::-;:69;;5036:103;;;;-1:-1:-1;;;5036:103:7;;;;;;;;;1875:6:3;5152:12:7;:37;;:76;;;;;1875:6:3;5193:10:7;:35;;5152:76;5144:104;;;;-1:-1:-1;;;5144:104:7;;;;;;;;;5253:8;:20;;;;5277:14;:32;;;;5313:15;:34;;;;5351:21;:46;5402:11;:26;5445:9;:22;5484:12;:28;4714:816::o;2464:123:1:-;-1:-1:-1;;;;;2558:15:1;;;2538:7;2558:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2464:123::o;5857:447:7:-;6000:6;;-1:-1:-1;;;;;6000:6:7;5986:10;:20;5978:43;;;;-1:-1:-1;;;5978:43:7;;;;;;;;;6065:12;6155:6;6138:24;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6138:24:7;;;6128:35;;;;;;6179:66;6098:154;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6098:154:7;;;6083:174;;;;;;6065:192;;6288:8;6282:4;6275:22;6270:31;;;:::o;2854:51:3:-;;;;;;;;;;;;;:::o;2904:587:7:-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;3030:47;;;3022:74;;;;-1:-1:-1;;;3022:74:7;;;;;;;;;3137:38;;;;;;;;;;;;;;;;3101:33;;3151:16;3137:38;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;3137:38:7;-1:-1:-1;3101:74:7;-1:-1:-1;3184:9:7;3179:225;3199:27;;;3179:225;;;3238:10;3286:16;;3303:1;3286:19;;;;;;;;;;;;;;;;;;;;;;3307:13;;3321:1;3307:16;;;;;;;;;;;;;;;;;;;;;;3269:55;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3269:55:7;;;3259:66;;;;;;3251:75;;3238:88;;3353:13;:17;3367:2;3353:17;;;;;;;;;;;;3331:16;3348:1;3331:19;;;;;;;;;;;;;;;;;;:39;;;;3382:17;;;;:13;:17;;;;;3375:24;3228:3;;3179:225;;;-1:-1:-1;3429:21:7;;3408:79;;-1:-1:-1;;;3408:79:7;;-1:-1:-1;;;;;3429:21:7;;;;3408:61;;:79;;3470:16;;3408:79;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3408:79:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3408:79:7;;;;1160:1;2904:587;;;;:::o;2337:27:3:-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;658:20:7:-;;;-1:-1:-1;;;;;658:20:7;;:::o;780:87:137:-;853:10;780:87;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:352;;;290:3;283:4;275:6;271:17;267:27;257:2;;308:1;305;298:12;257:2;-1:-1;328:20;;368:18;357:30;;354:2;;;400:1;397;390:12;354:2;434:4;426:6;422:17;410:29;;485:3;477:4;469:6;465:17;455:8;451:32;448:41;445:2;;;502:1;499;492:12;445:2;250:262;;;;;;910:722;;1038:3;1031:4;1023:6;1019:17;1015:27;1005:2;;1056:1;1053;1046:12;1005:2;1086:6;1080:13;1108:80;1123:64;1180:6;1123:64;;;1108:80;;;1099:89;;1205:5;1230:6;1223:5;1216:21;1260:4;1252:6;1248:17;1238:27;;1282:4;1277:3;1273:14;1266:21;;1335:6;1382:3;1374:4;1366:6;1362:17;1357:3;1353:27;1350:36;1347:2;;;1399:1;1396;1389:12;1347:2;1424:1;1409:217;1434:6;1431:1;1428:13;1409:217;;;1492:3;1514:48;1558:3;1546:10;1514:48;;;1502:61;;-1:-1;1586:4;1577:14;;;;1605;;;;;1456:1;1449:9;1409:217;;;1413:14;998:634;;;;;;;;1685:783;;1826:3;1819:4;1811:6;1807:17;1803:27;1793:2;;1844:1;1841;1834:12;1793:2;1881:6;1868:20;1903:104;1918:88;1999:6;1918:88;;1903:104;1894:113;;2024:5;2049:6;2042:5;2035:21;2079:4;2071:6;2067:17;2057:27;;2101:4;2096:3;2092:14;2085:21;;2154:6;2203:3;2193:6;2185;2181:19;2176:3;2172:29;2169:38;2166:2;;;2220:1;2217;2210:12;2166:2;2245:1;2230:232;2255:6;2252:1;2249:13;2230:232;;;2313:3;2335:61;2392:3;2380:10;2335:61;;;2323:74;;-1:-1;2420:4;2411:14;;;;2448:6;2439:16;;;;;2277:1;2270:9;2230:232;;2476:124;2540:20;;2565:30;2540:20;2565:30;;2607:130;2674:20;;2699:33;2674:20;2699:33;;2744:134;2822:13;;2840:33;2822:13;2840:33;;2886:442;;2988:3;2981:4;2973:6;2969:17;2965:27;2955:2;;3006:1;3003;2996:12;2955:2;3043:6;3030:20;3065:65;3080:49;3122:6;3080:49;;3065:65;3056:74;;3150:6;3143:5;3136:21;3186:4;3178:6;3174:17;3219:4;3212:5;3208:16;3254:3;3245:6;3240:3;3236:16;3233:25;3230:2;;;3271:1;3268;3261:12;3230:2;3281:41;3315:6;3310:3;3305;3281:41;;;2948:380;;;;;;;;3377:1384;;3490:6;3478:9;3473:3;3469:19;3465:32;3462:2;;;3510:1;3507;3500:12;3462:2;3528:22;3543:6;3528:22;;;3519:31;-1:-1;3598:1;3630:49;3675:3;3655:9;3630:49;;;3605:75;;-1:-1;3743:2;3776:46;3818:3;3794:22;;;3776:46;;;3769:4;3762:5;3758:16;3751:72;3701:133;3885:2;3918:49;3963:3;3954:6;3943:9;3939:22;3918:49;;;3911:4;3904:5;3900:16;3893:75;3844:135;4034:2;4067:49;4112:3;4103:6;4092:9;4088:22;4067:49;;;4060:4;4053:5;4049:16;4042:75;3989:139;4189:3;4223:49;4268:3;4259:6;4248:9;4244:22;4223:49;;;4216:4;4209:5;4205:16;4198:75;4138:146;4346:3;4380:49;4425:3;4416:6;4405:9;4401:22;4380:49;;;4373:4;4366:5;4362:16;4355:75;4294:147;4504:3;4538:49;4583:3;4574:6;4563:9;4559:22;4538:49;;;4531:4;4524:5;4520:16;4513:75;4451:148;4656:3;4690:49;4735:3;4726:6;4715:9;4711:22;4690:49;;;4683:4;4676:5;4672:16;4665:75;4609:142;3456:1305;;;;;4905:241;;5009:2;4997:9;4988:7;4984:23;4980:32;4977:2;;;5025:1;5022;5015:12;4977:2;5060:1;5077:53;5122:7;5102:9;5077:53;;;5067:63;4971:175;-1:-1;;;;4971:175;5153:366;;;5274:2;5262:9;5253:7;5249:23;5245:32;5242:2;;;5290:1;5287;5280:12;5242:2;5325:1;5342:53;5387:7;5367:9;5342:53;;;5332:63;;5304:97;5432:2;5450:53;5495:7;5486:6;5475:9;5471:22;5450:53;;;5440:63;;5411:98;5236:283;;;;;;5526:366;;;5647:2;5635:9;5626:7;5622:23;5618:32;5615:2;;;5663:1;5660;5653:12;5615:2;5698:1;5715:53;5760:7;5740:9;5715:53;;;5705:63;;5677:97;5805:2;5823:53;5868:7;5859:6;5848:9;5844:22;5823:53;;5899:672;;;;;6087:2;6075:9;6066:7;6062:23;6058:32;6055:2;;;6103:1;6100;6093:12;6055:2;6138:31;;6189:18;6178:30;;6175:2;;;6221:1;6218;6211:12;6175:2;6249:80;6321:7;6312:6;6301:9;6297:22;6249:80;;;6239:90;;;;6117:218;6394:2;6383:9;6379:18;6366:32;6418:18;6410:6;6407:30;6404:2;;;6450:1;6447;6440:12;6404:2;6478:77;6547:7;6538:6;6527:9;6523:22;6478:77;;;6049:522;;;;-1:-1;6468:87;-1:-1;;;;6049:522;6578:392;;6718:2;6706:9;6697:7;6693:23;6689:32;6686:2;;;6734:1;6731;6724:12;6686:2;6769:24;;6813:18;6802:30;;6799:2;;;6845:1;6842;6835:12;6799:2;6865:89;6946:7;6937:6;6926:9;6922:22;6865:89;;6977:544;;;7144:2;7132:9;7123:7;7119:23;7115:32;7112:2;;;7160:1;7157;7150:12;7112:2;7195:31;;7246:18;7235:30;;7232:2;;;7278:1;7275;7268:12;7232:2;7298:102;7392:7;7383:6;7372:9;7368:22;7298:102;;;7288:112;;7174:232;7437:2;7455:50;7497:7;7488:6;7477:9;7473:22;7455:50;;7528:235;;7629:2;7617:9;7608:7;7604:23;7600:32;7597:2;;;7645:1;7642;7635:12;7597:2;7680:1;7697:50;7739:7;7719:9;7697:50;;7770:466;;;7898:2;7886:9;7877:7;7873:23;7869:32;7866:2;;;7914:1;7911;7904:12;7866:2;7949:31;;8000:18;7989:30;;7986:2;;;8032:1;8029;8022:12;7986:2;8052:63;8107:7;8098:6;8087:9;8083:22;8052:63;;8243:241;;8347:2;8335:9;8326:7;8322:23;8318:32;8315:2;;;8363:1;8360;8353:12;8315:2;8398:1;8415:53;8460:7;8440:9;8415:53;;8491:995;;;;;;;;8697:3;8685:9;8676:7;8672:23;8668:33;8665:2;;;8714:1;8711;8704:12;8665:2;8749:1;8766:53;8811:7;8791:9;8766:53;;;8756:63;;8728:97;8856:2;8874:53;8919:7;8910:6;8899:9;8895:22;8874:53;;;8864:63;;8835:98;8964:2;8982:53;9027:7;9018:6;9007:9;9003:22;8982:53;;;8972:63;;8943:98;9072:2;9090:53;9135:7;9126:6;9115:9;9111:22;9090:53;;;9080:63;;9051:98;9180:3;9199:53;9244:7;9235:6;9224:9;9220:22;9199:53;;;9189:63;;9159:99;9289:3;9308:53;9353:7;9344:6;9333:9;9329:22;9308:53;;;9298:63;;9268:99;9398:3;9417:53;9462:7;9453:6;9442:9;9438:22;9417:53;;;9407:63;;9377:99;8659:827;;;;;;;;;;;9494:173;;9581:46;9623:3;9615:6;9581:46;;;-1:-1;;9656:4;9647:14;;9574:93;9676:275;;9811:98;9905:3;9897:6;9811:98;;;-1:-1;;9938:6;9929:16;;9804:147;9959:103;10032:24;10050:5;10032:24;;;10027:3;10020:37;10014:48;;;10189:152;10290:45;10310:24;10328:5;10310:24;;;10290:45;;10379:690;;10524:54;10572:5;10524:54;;;10591:86;10670:6;10665:3;10591:86;;;10584:93;;10698:56;10748:5;10698:56;;;10774:7;10802:1;10787:260;10812:6;10809:1;10806:13;10787:260;;;10879:6;10873:13;10900:63;10959:3;10944:13;10900:63;;;10893:70;;10980:60;11033:6;10980:60;;;10970:70;-1:-1;;10834:1;10827:9;10787:260;;;-1:-1;11060:3;;10503:566;-1:-1;;;;;10503:566;11162:882;;11355:78;11427:5;11355:78;;;11446:110;11549:6;11544:3;11446:110;;;11439:117;;11577:80;11651:5;11577:80;;;11677:7;11705:1;11690:332;11715:6;11712:1;11709:13;11690:332;;;11782:6;11776:13;11803:111;11910:3;11895:13;11803:111;;;11796:118;;11931:84;12008:6;11931:84;;;11921:94;-1:-1;;11737:1;11730:9;11690:332;;12052:94;12119:21;12134:5;12119:21;;12264:140;12359:39;12376:21;12391:5;12376:21;;;12359:39;;12411:103;12484:24;12502:5;12484:24;;12641:148;12740:43;12759:23;12776:5;12759:23;;;12740:43;;12796:360;;12926:39;12959:5;12926:39;;;12977:89;13059:6;13054:3;12977:89;;;12970:96;;13071:52;13116:6;13111:3;13104:4;13097:5;13093:16;13071:52;;;13135:16;;;;;12906:250;-1:-1;;12906:250;13163:339;;13271:35;13300:5;13271:35;;;13318:71;13382:6;13377:3;13318:71;;;13311:78;;13394:52;13439:6;13434:3;13427:4;13420:5;13416:16;13394:52;;;13467:29;13489:6;13467:29;;;13458:39;;;;13251:251;-1:-1;;;13251:251;13510:375;;13670:67;13734:2;13729:3;13670:67;;;13770:34;13750:55;;-1:-1;;;13834:2;13825:12;;13818:30;13876:2;13867:12;;13656:229;-1:-1;;13656:229;13894:327;;14054:67;14118:2;14113:3;14054:67;;;14154:29;14134:50;;14212:2;14203:12;;14040:181;-1:-1;;14040:181;14230:314;;14390:67;14454:2;14449:3;14390:67;;;-1:-1;;;14470:37;;14535:2;14526:12;;14376:168;-1:-1;;14376:168;14553:387;;14713:67;14777:2;14772:3;14713:67;;;14813:34;14793:55;;-1:-1;;;14877:2;14868:12;;14861:42;14931:2;14922:12;;14699:241;-1:-1;;14699:241;14949:321;;15109:67;15173:2;15168:3;15109:67;;;-1:-1;;;15189:44;;15261:2;15252:12;;15095:175;-1:-1;;15095:175;15279:315;;15439:67;15503:2;15498:3;15439:67;;;-1:-1;;;15519:38;;15585:2;15576:12;;15425:169;-1:-1;;15425:169;15603:312;;15763:67;15827:2;15822:3;15763:67;;;-1:-1;;;15843:35;;15906:2;15897:12;;15749:166;-1:-1;;15749:166;15924:310;;16084:67;16148:2;16143:3;16084:67;;;-1:-1;;;16164:33;;16225:2;16216:12;;16070:164;-1:-1;;16070:164;16321:1437;16522:23;;16456:6;16447:16;;;16551:63;16451:3;16522:23;16551:63;;;16478:142;16695:4;16688:5;16684:16;16678:23;16707:57;16758:4;16753:3;16749:14;16735:12;16707:57;;;16630:140;16844:4;16837:5;16833:16;16827:23;16856:63;16913:4;16908:3;16904:14;16890:12;16856:63;;;16780:145;17003:4;16996:5;16992:16;16986:23;17015:63;17072:4;17067:3;17063:14;17049:12;17015:63;;;16935:149;17168:4;17161:5;17157:16;17151:23;17180:63;17237:4;17232:3;17228:14;17214:12;17180:63;;;17094:155;17334:4;17327:5;17323:16;17317:23;17346:63;17403:4;17398:3;17394:14;17380:12;17346:63;;;17259:156;17501:4;17494:5;17490:16;17484:23;17513:63;17570:4;17565:3;17561:14;17547:12;17513:63;;;17425:157;17662:4;17655:5;17651:16;17645:23;17674:63;17731:4;17726:3;17722:14;17708:12;17674:63;;;17592:151;16429:1329;;;;17995:152;18096:45;18116:24;18134:5;18116:24;;18154:107;18233:22;18249:5;18233:22;;18268:370;;18409:75;18480:3;18471:6;18409:75;;;18506:2;18501:3;18497:12;18490:19;;18520:69;18585:3;18576:6;18520:69;;;-1:-1;18611:1;18602:11;;18397:241;-1:-1;;18397:241;18645:378;;18790:73;18859:3;18850:6;18790:73;;;18885:1;18880:3;18876:11;18869:18;;18898:75;18969:3;18960:6;18898:75;;;-1:-1;18995:2;18986:12;;18778:245;-1:-1;;18778:245;19030:266;;19176:95;19267:3;19258:6;19176:95;;19303:213;19421:2;19406:18;;19435:71;19410:9;19479:6;19435:71;;19523:361;19691:2;19705:47;;;19676:18;;19766:108;19676:18;19860:6;19766:108;;19891:457;20107:2;20121:47;;;20092:18;;20182:156;20092:18;20324:6;20182:156;;20355:201;20467:2;20452:18;;20481:65;20456:9;20519:6;20481:65;;20563:213;20681:2;20666:18;;20695:71;20670:9;20739:6;20695:71;;20783:293;20917:2;20931:47;;;20902:18;;20992:74;20902:18;21052:6;20992:74;;21083:407;21274:2;21288:47;;;21259:18;;21349:131;21259:18;21349:131;;21497:407;21688:2;21702:47;;;21673:18;;21763:131;21673:18;21763:131;;21911:407;22102:2;22116:47;;;22087:18;;22177:131;22087:18;22177:131;;22325:407;22516:2;22530:47;;;22501:18;;22591:131;22501:18;22591:131;;22739:407;22930:2;22944:47;;;22915:18;;23005:131;22915:18;23005:131;;23153:407;23344:2;23358:47;;;23329:18;;23419:131;23329:18;23419:131;;23567:407;23758:2;23772:47;;;23743:18;;23833:131;23743:18;23833:131;;23981:407;24172:2;24186:47;;;24157:18;;24247:131;24157:18;24247:131;;24615:205;24729:2;24714:18;;24743:67;24718:9;24783:6;24743:67;;24827:256;24889:2;24883:9;24915:17;;;24990:18;24975:34;;25011:22;;;24972:62;24969:2;;;25047:1;25044;25037:12;24969:2;25063;25056:22;24867:216;;-1:-1;24867:216;25090:304;;25249:18;25241:6;25238:30;25235:2;;;25281:1;25278;25271:12;25235:2;-1:-1;25316:4;25304:17;;;25369:15;;25172:222;25736:322;;25880:18;25872:6;25869:30;25866:2;;;25912:1;25909;25902:12;25866:2;-1:-1;26043:4;25979;25956:17;;;;-1:-1;;25952:33;26033:15;;25803:255;26065:151;26189:4;26180:14;;26137:79;26405:137;26508:12;;26479:63;27226:178;27344:19;;;27393:4;27384:14;;27337:67;27796:145;27932:3;27910:31;-1:-1;27910:31;27949:91;;28011:24;28029:5;28011:24;;28047:85;28113:13;28106:21;;28089:43;28139:72;28201:5;28184:27;28218:144;-1:-1;;;;;;28279:78;;28262:100;28369:121;-1:-1;;;;;28431:54;;28414:76;28576:81;28647:4;28636:16;;28619:38;28665:145;28746:6;28741:3;28736;28723:30;-1:-1;28802:1;28784:16;;28777:27;28716:94;28819:268;28884:1;28891:101;28905:6;28902:1;28899:13;28891:101;;;28972:11;;;28966:18;28953:11;;;28946:39;28927:2;28920:10;28891:101;;;29007:6;29004:1;29001:13;28998:2;;;-1:-1;;29072:1;29054:16;;29047:27;28868:219;29095:95;;29159:26;29179:5;29159:26;;29197:90;;29258:24;29276:5;29258:24;;29374:89;;29438:20;29452:5;29438:20;;29551:88;;29613:21;29628:5;29613:21;;29646:97;29734:2;29714:14;-1:-1;;29710:28;;29694:49;29751:96;29826:3;29822:15;;29794:53;29855:94;29929:2;29925:14;;29897:52;29957:117;30026:24;30044:5;30026:24;;;30019:5;30016:35;30006:2;;30065:1;30062;30055:12;30081:111;30147:21;30162:5;30147:21;;30199:117;30268:24;30286:5;30268:24;"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "baseRate()": "1f68f20a",
              "checkpointSupply()": "7b7933b4",
              "decimals()": "313ce567",
              "disableLoanParams(address[],bool[])": "e697d2ee",
              "earlyAccessToken()": "ca37e666",
              "initialPrice()": "1d0806ae",
              "isOwner()": "8f32d59b",
              "kinkLevel()": "56e07d70",
              "liquidityMiningAddress()": "8ee6c4e6",
              "loanParamsIds(uint256)": "3291c11a",
              "loanTokenAddress()": "797bf385",
              "lowUtilBaseRate()": "d759dbeb",
              "lowUtilRateMultiplier()": "7e37c08c",
              "maxScaleRate()": "ef2b0b39",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "pauser()": "9fd0506d",
              "rateMultiplier()": "330691ac",
              "setAdmin(address)": "704b6c02",
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "d97206a4",
              "setPauser(address)": "2d88af4a",
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": "d8f06c83",
              "sovrynContractAddress()": "06947a3a",
              "symbol()": "95d89b41",
              "targetLevel()": "ba0e43bf",
              "target_()": "9bda3a98",
              "toggleFunctionPause(string,bool)": "e3cded61",
              "totalSupply()": "18160ddd",
              "transactionLimit(address)": "e41b07e3",
              "transferOwnership(address)": "f2fde38b",
              "wrbtcTokenAddress()": "2f6b600d"
            }
          },
          "userdoc": {
            "methods": {
              "allowance(address,address)": {
                "notice": "Get the amount of iTokens allowed to be spent by a  given account on behalf of the owner."
              },
              "approve(address,uint256)": {
                "notice": "Set an amount as the allowance of `spender` over the caller's tokens.\t * Returns a boolean value indicating whether the operation succeeded.\t * 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\t * Emits an {Approval} event."
              },
              "balanceOf(address)": {
                "notice": "Get the amount of iTokens owned by an account."
              },
              "disableLoanParams(address[],bool[])": {
                "notice": "Disable loan token parameters."
              },
              "setAdmin(address)": {
                "notice": "Set admin account."
              },
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": {
                "notice": "Set loan token parameters about the demand curve."
              },
              "setPauser(address)": {
                "notice": "Set pauser account."
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": {
                "notice": "Set loan token parameters."
              },
              "toggleFunctionPause(string,bool)": {
                "notice": "Set the pause flag for a function to true or false."
              },
              "totalSupply()": {
                "notice": "Get the total supply of iTokens."
              }
            }
          }
        }
      },
      "contracts/connectors/loantoken/Pausable.sol": {
        "Pausable": {
          "abi": [],
          "devdoc": {
            "methods": {},
            "title": "Pausable contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158200e3e08c2a8f67177e4d29d06d759f424277524d07f3173dd705cd023e396a3d464736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE RETURNDATACOPY ADDMOD 0xC2 0xA8 0xF6 PUSH18 0x77E4D29D06D759F424277524D07F3173DD70 0x5C 0xD0 0x23 0xE3 SWAP7 LOG3 0xD4 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "455:754:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;455:754:8;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a723158200e3e08c2a8f67177e4d29d06d759f424277524d07f3173dd705cd023e396a3d464736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE RETURNDATACOPY ADDMOD 0xC2 0xA8 0xF6 PUSH18 0x77E4D29D06D759F424277524D07F3173DD70 0x5C 0xD0 0x23 0xE3 SWAP7 LOG3 0xD4 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "455:754:8:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * The contract implements pausable functionality by reading on slots the pause state of contract functions."
          }
        }
      },
      "contracts/connectors/loantoken/interfaces/FeedsLike.sol": {
        "FeedsLike": {
          "abi": [
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destTokenAddress",
                  "type": "address"
                }
              ],
              "name": "queryRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "rate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "precision",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "queryRate(address,address)": "29d5277c"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/connectors/loantoken/interfaces/ProtocolLike.sol": {
        "ProtocolLike": {
          "abi": [
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "isTorqueLoan",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "initialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[4]",
                  "name": "sentAddresses",
                  "type": "address[4]"
                },
                {
                  "internalType": "uint256[5]",
                  "name": "sentValues",
                  "type": "uint256[5]"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "borrowOrTradeFromPool",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "newPrincipal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "newCollateral",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "marginAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "isTorqueLoan",
                  "type": "bool"
                }
              ],
              "name": "getBorrowAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "newPrincipal",
                  "type": "uint256"
                }
              ],
              "name": "getEstimatedMarginExposure",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                }
              ],
              "name": "getLenderInterestData",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "interestPaid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestPaidDate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestOwedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestUnPaid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestFeePercent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "newPrincipal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "marginAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "isTorqueLoan",
                  "type": "bool"
                }
              ],
              "name": "getRequiredCollateral",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "collateralAmountRequired",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmount",
                  "type": "uint256"
                }
              ],
              "name": "getSwapExpectedReturn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                }
              ],
              "name": "getTotalPrincipal",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanPool",
                  "type": "address"
                }
              ],
              "name": "isLoanPool",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                }
              ],
              "name": "withdrawAccruedInterest",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "borrowOrTradeFromPool(bytes32,bytes32,bool,uint256,address[4],uint256[5],bytes)": "585314cf",
              "getBorrowAmount(address,address,uint256,uint256,bool)": "e762319f",
              "getEstimatedMarginExposure(address,address,uint256,uint256,uint256,uint256)": "d67f7077",
              "getLenderInterestData(address,address)": "d1979fb0",
              "getRequiredCollateral(address,address,uint256,uint256,bool)": "25decac0",
              "getSwapExpectedReturn(address,address,uint256)": "69455ddc",
              "getTotalPrincipal(address,address)": "4a1e88fe",
              "isLoanPool(address)": "115dd4b1",
              "lendingFeePercent()": "4699f846",
              "priceFeeds()": "78d849ed",
              "withdrawAccruedInterest(address)": "e81fefa0"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/connectors/loantoken/interfaces/ProtocolSettingsLike.sol": {
        "ProtocolSettingsLike": {
          "abi": [
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "loanParamsIdList",
                  "type": "bytes32[]"
                }
              ],
              "name": "disableLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                }
              ],
              "name": "minInitialMargin",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "id",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bool",
                      "name": "active",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "minInitialMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanParamsStruct.LoanParams[]",
                  "name": "loanParamsList",
                  "type": "tuple[]"
                }
              ],
              "name": "setupLoanParams",
              "outputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "loanParamsIdList",
                  "type": "bytes32[]"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "disableLoanParams(bytes32[])": "fe30fa6a",
              "minInitialMargin(bytes32)": "ca74a5d9",
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[])": "a1ae275e"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/core/Objects.sol": {
        "Objects": {
          "abi": [],
          "devdoc": {
            "methods": {},
            "title": "Objects contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820cc365cd0a6ef6bba4b2a3cee188ae6b4bd1582ecd04d52f30e58f69ab394103564736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xCC CALLDATASIZE 0x5C 0xD0 0xA6 0xEF PUSH12 0xBA4B2A3CEE188AE6B4BD1582 0xEC 0xD0 0x4D MSTORE RETURN 0xE PC 0xF6 SWAP11 0xB3 SWAP5 LT CALLDATALOAD PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "647:108:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;647:108:12;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a72315820cc365cd0a6ef6bba4b2a3cee188ae6b4bd1582ecd04d52f30e58f69ab394103564736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xCC CALLDATASIZE 0x5C 0xD0 0xA6 0xEF PUSH12 0xBA4B2A3CEE188AE6B4BD1582 0xEC 0xD0 0x4D MSTORE RETURN 0xE PC 0xF6 SWAP11 0xB3 SWAP5 LT CALLDATALOAD PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "647:108:12:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract inherints and aggregates several structures needed to handle loans on the protocol."
          }
        }
      },
      "contracts/core/Protocol.sol": {
        "sovrynProtocol": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "sig",
                  "type": "string"
                }
              ],
              "name": "getTarget",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "replaceContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "string[]",
                  "name": "sigsArr",
                  "type": "string[]"
                },
                {
                  "internalType": "address[]",
                  "name": "targetsArr",
                  "type": "address[]"
                }
              ],
              "name": "setTargets",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "TODO: can I change this proxy to EIP-1822 proxy standard, please.  https://eips.ethereum.org/EIPS/eip-1822",
            "methods": {
              "getTarget(string)": {
                "params": {
                  "sig": "The signature."
                },
                "return": "The address for a given signature."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "replaceContract(address)": {
                "params": {
                  "target": "The target addresses."
                }
              },
              "setTargets(string[],address[])": {
                "params": {
                  "sigsArr": "The array of signatures.",
                  "targetsArr": "The array of addresses."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Sovryn Protocol contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b611a648061010f6000396000f3fe6080604052600436106103505760003560e01c80638f32d59b116101c6578063cd5d808d116100f7578063f0e085f511610095578063f6ddc8b31161006f578063f6ddc8b3146109f1578063f706b1f214610a06578063f851a44014610a1b578063fb08fdaa14610a3057610350565b8063f0e085f5146109a7578063f2fde38b146109bc578063f589a3e7146109dc57610350565b8063d485045e116100d1578063d485045e1461093d578063da1b620b1461095d578063e8f627641461097d578063edab119f1461099257610350565b8063cd5d808d146108f3578063d288208c14610913578063d473c2da1461092857610350565b8063b30643d911610164578063ba4861e91161013e578063ba4861e914610852578063bdee453c14610867578063c4a9081514610887578063cb6eacd1146108bf57610350565b8063b30643d9146107fd578063b7e152411461081d578063b9cffa3e1461083d57610350565b8063a012d827116101a0578063a012d82714610791578063acc04348146107b1578063ae0a8530146107c6578063afe84009146107db57610350565b80638f32d59b1461074757806392d894f81461075c578063959083d31461077c57610350565b80634699f846116102a05780637420ca3e1161023e5780637a8faeb8116102185780637a8faeb8146106e85780638456cb59146106fd5780638da5cb5b146107125780638dc48ba51461072757610350565b80637420ca3e146106a9578063742e6798146106be57806378d849ed146106d357610350565b8063574442cc1161027a578063574442cc1461062357806362fff3f61461063857806368c4ac26146106695780636e6637301461068957610350565b80634699f846146105ca5780634f28cac2146105df578063569fc1fb146105f457610350565b80632a3240271161030d5780633452d2d4116102e75780633452d2d41461054a5780633fca506e1461056a5780634115a2b61461058a5780634203e395146105aa57610350565b80632a324027146105005780632f470764146105155780633432423c1461052a57610350565b8063065d810f146104095780630676c1b71461044457806317548b79146104665780631b7bde7414610486578063218b39c6146104b357806324cc5749146104d3575b6108fc5a1161035e57610407565b600080356001600160e01b0319168152600560205260409020546001600160a01b0316806103a75760405162461bcd60e51b815260040161039e9061184a565b60405180910390fd5b60606000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084519495509384935091505060208401855af43d604051816000823e828015610403578282f35b8282fd5b005b34801561041557600080fd5b50610429610424366004611432565b610a50565b60405161043b9695949392919061191c565b60405180910390f35b34801561045057600080fd5b50610459610a90565b60405161043b91906116f6565b34801561047257600080fd5b5061045961048136600461150f565b610a9f565b34801561049257600080fd5b506104a66104a13660046113f8565b610aba565b60405161043b919061189a565b3480156104bf57600080fd5b506104596104ce3660046113d2565b610ad7565b3480156104df57600080fd5b506104f36104ee3660046113d2565b610af2565b60405161043b9190611704565b34801561050c57600080fd5b506104a6610b07565b34801561052157600080fd5b506104a6610b0d565b34801561053657600080fd5b50610429610545366004611432565b610b13565b34801561055657600080fd5b506104a66105653660046113d2565b610b53565b34801561057657600080fd5b506104a66105853660046113d2565b610b65565b34801561059657600080fd5b506104f36105a53660046114f0565b610b77565b3480156105b657600080fd5b506104a66105c53660046113d2565b610b97565b3480156105d657600080fd5b506104a6610ba9565b3480156105eb57600080fd5b506104a6610baf565b34801561060057600080fd5b5061061461060f3660046114d2565b610bb5565b60405161043b939291906118a8565b34801561062f57600080fd5b506104a6610bd6565b34801561064457600080fd5b506106586106533660046113f8565b610bdc565b60405161043b9594939291906118d0565b34801561067557600080fd5b506104f36106843660046113d2565b610c16565b34801561069557600080fd5b506104596106a43660046113d2565b610c2b565b3480156106b557600080fd5b50610459610c46565b3480156106ca57600080fd5b506104a6610c55565b3480156106df57600080fd5b50610459610c5b565b3480156106f457600080fd5b506104a6610c6a565b34801561070957600080fd5b506104f3610c70565b34801561071e57600080fd5b50610459610c79565b34801561073357600080fd5b506104596107423660046113d2565b610c88565b34801561075357600080fd5b506104f3610ca3565b34801561076857600080fd5b506104a66107773660046113d2565b610cc9565b34801561078857600080fd5b506104a6610cdb565b34801561079d57600080fd5b506104076107ac366004611462565b610ce1565b3480156107bd57600080fd5b506104a6610de5565b3480156107d257600080fd5b506104a6610deb565b3480156107e757600080fd5b506107f0610df1565b60405161043b919061183c565b34801561080957600080fd5b506104a66108183660046113d2565b610e00565b34801561082957600080fd5b506104a66108383660046113d2565b610e12565b34801561084957600080fd5b50610459610e24565b34801561085e57600080fd5b50610459610e33565b34801561087357600080fd5b506104a66108823660046113d2565b610e42565b34801561089357600080fd5b506108a76108a23660046114d2565b610e54565b60405161043b9c9b9a99989796959493929190611789565b3480156108cb57600080fd5b506108df6108da3660046114d2565b610ec6565b60405161043b989796959493929190611712565b3480156108ff57600080fd5b506104a661090e3660046113f8565b610f18565b34801561091f57600080fd5b50610459610f35565b34801561093457600080fd5b506104a6610f44565b34801561094957600080fd5b506104a66109583660046113d2565b610f4a565b34801561096957600080fd5b5061045961097836600461152d565b610f5c565b34801561098957600080fd5b50610459610fb7565b34801561099e57600080fd5b506104a6610fc6565b3480156109b357600080fd5b506104a6610fcc565b3480156109c857600080fd5b506104076109d73660046113d2565b610fd2565b3480156109e857600080fd5b506104a6611002565b3480156109fd57600080fd5b506104a6611008565b348015610a1257600080fd5b5061045961100e565b348015610a2757600080fd5b5061045961101d565b348015610a3c57600080fd5b50610407610a4b3660046113d2565b61102c565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610cba611107565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b610ce9610ca3565b610d055760405162461bcd60e51b815260040161039e9061187a565b828114610d245760405162461bcd60e51b815260040161039e9061186a565b60005b83811015610dde57610dd6858583818110610d3e57fe5b602002820190508035601e1936849003018112610d5a57600080fd5b9091016020810191503567ffffffffffffffff811115610d7957600080fd5b36819003821315610d8957600080fd5b604051602001610d9a9291906116e9565b60405160208183030381529060405280519060200120848484818110610dbc57fe5b9050602002016020610dd191908101906113d2565b61110b565b600101610d27565b5050505050565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6000600560008484604051602001610f759291906116e9565b60408051601f1981840301815291815281516020928301206001600160e01b03191683529082019290925201600020546001600160a01b031690505b92915050565b6014546001600160a01b031681565b601b5481565b60285481565b610fda610ca3565b610ff65760405162461bcd60e51b815260040161039e9061187a565b610fff81611186565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b611034610ca3565b6110505760405162461bcd60e51b815260040161039e9061187a565b6000816001600160a01b03168260405160240161106d91906116f6565b60408051601f198184030181529181526020820180516001600160e01b031663189acdbd60e31b179052516110a291906116d6565b600060405180830381855af49150503d80600081146110dd576040519150601f19603f3d011682016040523d82523d6000602084013e6110e2565b606091505b50509050806111035760405162461bcd60e51b815260040161039e9061188a565b5050565b3390565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b0383169081179091551561116657611160600d6001600160e01b0319841663ffffffff61120816565b50611103565b611181600d6001600160e01b0319841663ffffffff61125016565b505050565b6001600160a01b0381166111ac5760405162461bcd60e51b815260040161039e9061185a565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006112148383611311565b6112485750600180830180548083018083556000928352602080842090920185905584835290859052604090912055610fb1565b506000610fb1565b600061125c8383611311565b1561124857600082815260208490526040902054600184015460001991820191018082146112d457600085600101828154811061129557fe5b90600052602060002001549050808660010184815481106112b257fe5b6000918252602080832090910192909255918252869052604090206001830190555b600084815260208690526040812055600185018054806112f057fe5b60019003818190600052602060002001600090559055600192505050610fb1565b60009081526020919091526040902054151590565b8035610fb1816119fb565b60008083601f84011261134357600080fd5b50813567ffffffffffffffff81111561135b57600080fd5b60208301915083602082028301111561137357600080fd5b9250929050565b8035610fb181611a0f565b8035610fb181611a18565b60008083601f8401126113a257600080fd5b50813567ffffffffffffffff8111156113ba57600080fd5b60208301915083600182028301111561137357600080fd5b6000602082840312156113e457600080fd5b60006113f08484611326565b949350505050565b6000806040838503121561140b57600080fd5b60006114178585611326565b925050602061142885828601611326565b9150509250929050565b6000806040838503121561144557600080fd5b60006114518585611326565b92505060206114288582860161137a565b6000806000806040858703121561147857600080fd5b843567ffffffffffffffff81111561148f57600080fd5b61149b87828801611331565b9450945050602085013567ffffffffffffffff8111156114ba57600080fd5b6114c687828801611331565b95989497509550505050565b6000602082840312156114e457600080fd5b60006113f0848461137a565b6000806040838503121561150357600080fd5b6000611417858561137a565b60006020828403121561152157600080fd5b60006113f08484611385565b6000806020838503121561154057600080fd5b823567ffffffffffffffff81111561155757600080fd5b61156385828601611390565b92509250509250929050565b61157881611988565b82525050565b61157881611993565b61157881611998565b600061159b82611976565b6115a5818561197a565b93506115b58185602086016119cb565b9290920192915050565b611578816119b4565b60006115d4838561197a565b93506115e18385846119bf565b50500190565b60006115f460118361197f565b70746172676574206e6f742061637469766560781b815260200192915050565b600061162160268361197f565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000611669600e8361197f565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000611693600c8361197f565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006116bb600c8361197f565b6b1cd95d1d5c0819985a5b195960a21b815260200192915050565b60006116e28284611590565b9392505050565b60006113f08284866115c8565b60208101610fb1828461156f565b60208101610fb1828461157e565b6101008101611721828b611587565b61172e602083018a61157e565b61173b604083018961156f565b611748606083018861156f565b611755608083018761156f565b61176260a0830186611587565b61176f60c0830185611587565b61177c60e0830184611587565b9998505050505050505050565b6101808101611798828f611587565b6117a5602083018e611587565b6117b2604083018d611587565b6117bf606083018c61157e565b6117cc608083018b611587565b6117d960a083018a611587565b6117e660c0830189611587565b6117f360e0830188611587565b611801610100830187611587565b61180f610120830186611587565b61181d61014083018561156f565b61182b61016083018461156f565b9d9c50505050505050505050505050565b60208101610fb182846115bf565b60208082528101610fb1816115e7565b60208082528101610fb181611614565b60208082528101610fb18161165c565b60208082528101610fb181611686565b60208082528101610fb1816116ae565b60208101610fb18284611587565b606081016118b68286611587565b6118c36020830185611587565b6113f06040830184611587565b60a081016118de8288611587565b6118eb6020830187611587565b6118f86040830186611587565b6119056060830185611587565b6119126080830184611587565b9695505050505050565b60c0810161192a8289611587565b6119376020830188611587565b6119446040830187611587565b6119516060830186611587565b61195e6080830185611587565b61196b60a0830184611587565b979650505050505050565b5190565b919050565b90815260200190565b6000610fb1826119a8565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b6000610fb182611988565b82818337506000910152565b60005b838110156119e65781810151838201526020016119ce565b838111156119f5576000848401525b50505050565b611a0481611988565b8114610fff57600080fd5b611a0481611998565b611a048161199b56fea365627a7a72315820a974efdde6c8edf7473e5a3a323443e27807b2077d54c6fca9cde833156f4e0a6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH2 0xA9 PUSH2 0xFC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x100 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x1A64 DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x350 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCD5D808D GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xF0E085F5 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF6DDC8B3 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x9F1 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xA06 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xA1B JUMPI DUP1 PUSH4 0xFB08FDAA EQ PUSH2 0xA30 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x9A7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x9BC JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x9DC JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xD485045E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x93D JUMPI DUP1 PUSH4 0xDA1B620B EQ PUSH2 0x95D JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x97D JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x992 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x8F3 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x913 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x928 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xBA4861E9 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x852 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x867 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x887 JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x8BF JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x7FD JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x81D JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x83D JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xA012D827 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xA012D827 EQ PUSH2 0x791 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x7B1 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x7C6 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x7DB JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x747 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x75C JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x77C JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x7420CA3E GT PUSH2 0x23E JUMPI DUP1 PUSH4 0x7A8FAEB8 GT PUSH2 0x218 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x6E8 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x6FD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x712 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x727 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x6A9 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x6BE JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x6D3 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x574442CC GT PUSH2 0x27A JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x623 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x638 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x669 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x689 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x5DF JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x5F4 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x30D JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x54A JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x56A JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x58A JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x5AA JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x500 JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x515 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x52A JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x409 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x486 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x4B3 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x4D3 JUMPI JUMPDEST PUSH2 0x8FC GAS GT PUSH2 0x35E JUMPI PUSH2 0x407 JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x3A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x184A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 CALLDATASIZE DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP DUP5 MLOAD SWAP5 SWAP6 POP SWAP4 DUP5 SWAP4 POP SWAP2 POP POP PUSH1 0x20 DUP5 ADD DUP6 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x40 MLOAD DUP2 PUSH1 0x0 DUP3 RETURNDATACOPY DUP3 DUP1 ISZERO PUSH2 0x403 JUMPI DUP3 DUP3 RETURN JUMPDEST DUP3 DUP3 REVERT JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x429 PUSH2 0x424 CALLDATASIZE PUSH1 0x4 PUSH2 0x1432 JUMP JUMPDEST PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xA90 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x481 CALLDATASIZE PUSH1 0x4 PUSH2 0x150F JUMP JUMPDEST PUSH2 0xA9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x4A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x13F8 JUMP JUMPDEST PUSH2 0xABA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP2 SWAP1 PUSH2 0x189A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x4CE CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xAD7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F3 PUSH2 0x4EE CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xAF2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP2 SWAP1 PUSH2 0x1704 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xB07 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xB0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x429 PUSH2 0x545 CALLDATASIZE PUSH1 0x4 PUSH2 0x1432 JUMP JUMPDEST PUSH2 0xB13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x565 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xB53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x585 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xB65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F3 PUSH2 0x5A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x14F0 JUMP JUMPDEST PUSH2 0xB77 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x5C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xB97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xBA9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xBAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH2 0x60F CALLDATASIZE PUSH1 0x4 PUSH2 0x14D2 JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x18A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xBD6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x658 PUSH2 0x653 CALLDATASIZE PUSH1 0x4 PUSH2 0x13F8 JUMP JUMPDEST PUSH2 0xBDC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x18D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F3 PUSH2 0x684 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xC16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x6A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xC2B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xC46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xC55 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xC5B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xC6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F3 PUSH2 0xC70 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xC79 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x733 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x742 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xC88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F3 PUSH2 0xCA3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x777 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xCC9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xCDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x407 PUSH2 0x7AC CALLDATASIZE PUSH1 0x4 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0xCE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xDE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xDEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F0 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP2 SWAP1 PUSH2 0x183C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x809 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x818 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xE00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x829 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x838 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xE12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xE24 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xE33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x873 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x882 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xE42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A7 PUSH2 0x8A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x14D2 JUMP JUMPDEST PUSH2 0xE54 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1789 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8DF PUSH2 0x8DA CALLDATASIZE PUSH1 0x4 PUSH2 0x14D2 JUMP JUMPDEST PUSH2 0xEC6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1712 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x90E CALLDATASIZE PUSH1 0x4 PUSH2 0x13F8 JUMP JUMPDEST PUSH2 0xF18 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xF35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x934 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xF44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x949 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x958 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xF4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x969 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x978 CALLDATASIZE PUSH1 0x4 PUSH2 0x152D JUMP JUMPDEST PUSH2 0xF5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x989 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xFB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xFC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xFCC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x407 PUSH2 0x9D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xFD2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x1002 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x1008 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x100E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x101D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x407 PUSH2 0xA4B CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0x102C JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCBA PUSH2 0x1107 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH2 0xCE9 PUSH2 0xCA3 JUMP JUMPDEST PUSH2 0xD05 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x187A JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0xD24 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x186A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDDE JUMPI PUSH2 0xDD6 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xD3E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL DUP3 ADD SWAP1 POP DUP1 CALLDATALOAD PUSH1 0x1E NOT CALLDATASIZE DUP5 SWAP1 SUB ADD DUP2 SLT PUSH2 0xD5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 ADD PUSH1 0x20 DUP2 ADD SWAP2 POP CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xD89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD9A SWAP3 SWAP2 SWAP1 PUSH2 0x16E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP5 DUP5 DUP5 DUP2 DUP2 LT PUSH2 0xDBC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xDD1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0x110B JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD27 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF75 SWAP3 SWAP2 SWAP1 PUSH2 0x16E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xFDA PUSH2 0xCA3 JUMP JUMPDEST PUSH2 0xFF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH2 0xFFF DUP2 PUSH2 0x1186 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1034 PUSH2 0xCA3 JUMP JUMPDEST PUSH2 0x1050 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x106D SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x10A2 SWAP2 SWAP1 PUSH2 0x16D6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x10DD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x10E2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1103 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x188A JUMP JUMPDEST POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x1166 JUMPI PUSH2 0x1160 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x1208 AND JUMP JUMPDEST POP PUSH2 0x1103 JUMP JUMPDEST PUSH2 0x1181 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x1250 AND JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x11AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x185A JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1214 DUP4 DUP4 PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x1248 JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xFB1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xFB1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP4 DUP4 PUSH2 0x1311 JUMP JUMPDEST ISZERO PUSH2 0x1248 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1295 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x12B2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x12F0 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0xFB1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFB1 DUP2 PUSH2 0x19FB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x135B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFB1 DUP2 PUSH2 0x1A0F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFB1 DUP2 PUSH2 0x1A18 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x13A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x13BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13F0 DUP5 DUP5 PUSH2 0x1326 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x140B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1417 DUP6 DUP6 PUSH2 0x1326 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1428 DUP6 DUP3 DUP7 ADD PUSH2 0x1326 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1451 DUP6 DUP6 PUSH2 0x1326 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1428 DUP6 DUP3 DUP7 ADD PUSH2 0x137A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x148F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x149B DUP8 DUP3 DUP9 ADD PUSH2 0x1331 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14C6 DUP8 DUP3 DUP9 ADD PUSH2 0x1331 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13F0 DUP5 DUP5 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1417 DUP6 DUP6 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13F0 DUP5 DUP5 PUSH2 0x1385 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1563 DUP6 DUP3 DUP7 ADD PUSH2 0x1390 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x1578 DUP2 PUSH2 0x1988 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1578 DUP2 PUSH2 0x1993 JUMP JUMPDEST PUSH2 0x1578 DUP2 PUSH2 0x1998 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x159B DUP3 PUSH2 0x1976 JUMP JUMPDEST PUSH2 0x15A5 DUP2 DUP6 PUSH2 0x197A JUMP JUMPDEST SWAP4 POP PUSH2 0x15B5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x19CB JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1578 DUP2 PUSH2 0x19B4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15D4 DUP4 DUP6 PUSH2 0x197A JUMP JUMPDEST SWAP4 POP PUSH2 0x15E1 DUP4 DUP6 DUP5 PUSH2 0x19BF JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15F4 PUSH1 0x11 DUP4 PUSH2 0x197F JUMP JUMPDEST PUSH17 0x746172676574206E6F7420616374697665 PUSH1 0x78 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1621 PUSH1 0x26 DUP4 PUSH2 0x197F JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1669 PUSH1 0xE DUP4 PUSH2 0x197F JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1693 PUSH1 0xC DUP4 PUSH2 0x197F JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16BB PUSH1 0xC DUP4 PUSH2 0x197F JUMP JUMPDEST PUSH12 0x1CD95D1D5C0819985A5B1959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16E2 DUP3 DUP5 PUSH2 0x1590 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F0 DUP3 DUP5 DUP7 PUSH2 0x15C8 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xFB1 DUP3 DUP5 PUSH2 0x156F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xFB1 DUP3 DUP5 PUSH2 0x157E JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x1721 DUP3 DUP12 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x172E PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x157E JUMP JUMPDEST PUSH2 0x173B PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x156F JUMP JUMPDEST PUSH2 0x1748 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x156F JUMP JUMPDEST PUSH2 0x1755 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x156F JUMP JUMPDEST PUSH2 0x1762 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x176F PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x177C PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x1587 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x1798 DUP3 DUP16 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x17A5 PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x17B2 PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x17BF PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x157E JUMP JUMPDEST PUSH2 0x17CC PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x17D9 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x17E6 PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x17F3 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x1801 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x180F PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x181D PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x156F JUMP JUMPDEST PUSH2 0x182B PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x156F JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xFB1 DUP3 DUP5 PUSH2 0x15BF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFB1 DUP2 PUSH2 0x15E7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFB1 DUP2 PUSH2 0x1614 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFB1 DUP2 PUSH2 0x165C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFB1 DUP2 PUSH2 0x1686 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFB1 DUP2 PUSH2 0x16AE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xFB1 DUP3 DUP5 PUSH2 0x1587 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x18B6 DUP3 DUP7 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x18C3 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x13F0 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1587 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x18DE DUP3 DUP9 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x18EB PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x18F8 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x1905 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x1912 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1587 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x192A DUP3 DUP10 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x1937 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x1944 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x1951 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x195E PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x196B PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1587 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFB1 DUP3 PUSH2 0x19A8 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFB1 DUP3 PUSH2 0x1988 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19E6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19CE JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x19F5 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1A04 DUP2 PUSH2 0x1988 JUMP JUMPDEST DUP2 EQ PUSH2 0xFFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A04 DUP2 PUSH2 0x1998 JUMP JUMPDEST PUSH2 0x1A04 DUP2 PUSH2 0x199B JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xA9 PUSH21 0xEFDDE6C8EDF7473E5A3A323443E27807B2077D54C6 0xFC 0xA9 0xCD 0xE8 CALLER ISZERO PUSH16 0x4E0A6C6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "648:1758:13:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;648:1758:13;;780:87:137;853:10;780:87;:::o;648:1758:13:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106103505760003560e01c80638f32d59b116101c6578063cd5d808d116100f7578063f0e085f511610095578063f6ddc8b31161006f578063f6ddc8b3146109f1578063f706b1f214610a06578063f851a44014610a1b578063fb08fdaa14610a3057610350565b8063f0e085f5146109a7578063f2fde38b146109bc578063f589a3e7146109dc57610350565b8063d485045e116100d1578063d485045e1461093d578063da1b620b1461095d578063e8f627641461097d578063edab119f1461099257610350565b8063cd5d808d146108f3578063d288208c14610913578063d473c2da1461092857610350565b8063b30643d911610164578063ba4861e91161013e578063ba4861e914610852578063bdee453c14610867578063c4a9081514610887578063cb6eacd1146108bf57610350565b8063b30643d9146107fd578063b7e152411461081d578063b9cffa3e1461083d57610350565b8063a012d827116101a0578063a012d82714610791578063acc04348146107b1578063ae0a8530146107c6578063afe84009146107db57610350565b80638f32d59b1461074757806392d894f81461075c578063959083d31461077c57610350565b80634699f846116102a05780637420ca3e1161023e5780637a8faeb8116102185780637a8faeb8146106e85780638456cb59146106fd5780638da5cb5b146107125780638dc48ba51461072757610350565b80637420ca3e146106a9578063742e6798146106be57806378d849ed146106d357610350565b8063574442cc1161027a578063574442cc1461062357806362fff3f61461063857806368c4ac26146106695780636e6637301461068957610350565b80634699f846146105ca5780634f28cac2146105df578063569fc1fb146105f457610350565b80632a3240271161030d5780633452d2d4116102e75780633452d2d41461054a5780633fca506e1461056a5780634115a2b61461058a5780634203e395146105aa57610350565b80632a324027146105005780632f470764146105155780633432423c1461052a57610350565b8063065d810f146104095780630676c1b71461044457806317548b79146104665780631b7bde7414610486578063218b39c6146104b357806324cc5749146104d3575b6108fc5a1161035e57610407565b600080356001600160e01b0319168152600560205260409020546001600160a01b0316806103a75760405162461bcd60e51b815260040161039e9061184a565b60405180910390fd5b60606000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084519495509384935091505060208401855af43d604051816000823e828015610403578282f35b8282fd5b005b34801561041557600080fd5b50610429610424366004611432565b610a50565b60405161043b9695949392919061191c565b60405180910390f35b34801561045057600080fd5b50610459610a90565b60405161043b91906116f6565b34801561047257600080fd5b5061045961048136600461150f565b610a9f565b34801561049257600080fd5b506104a66104a13660046113f8565b610aba565b60405161043b919061189a565b3480156104bf57600080fd5b506104596104ce3660046113d2565b610ad7565b3480156104df57600080fd5b506104f36104ee3660046113d2565b610af2565b60405161043b9190611704565b34801561050c57600080fd5b506104a6610b07565b34801561052157600080fd5b506104a6610b0d565b34801561053657600080fd5b50610429610545366004611432565b610b13565b34801561055657600080fd5b506104a66105653660046113d2565b610b53565b34801561057657600080fd5b506104a66105853660046113d2565b610b65565b34801561059657600080fd5b506104f36105a53660046114f0565b610b77565b3480156105b657600080fd5b506104a66105c53660046113d2565b610b97565b3480156105d657600080fd5b506104a6610ba9565b3480156105eb57600080fd5b506104a6610baf565b34801561060057600080fd5b5061061461060f3660046114d2565b610bb5565b60405161043b939291906118a8565b34801561062f57600080fd5b506104a6610bd6565b34801561064457600080fd5b506106586106533660046113f8565b610bdc565b60405161043b9594939291906118d0565b34801561067557600080fd5b506104f36106843660046113d2565b610c16565b34801561069557600080fd5b506104596106a43660046113d2565b610c2b565b3480156106b557600080fd5b50610459610c46565b3480156106ca57600080fd5b506104a6610c55565b3480156106df57600080fd5b50610459610c5b565b3480156106f457600080fd5b506104a6610c6a565b34801561070957600080fd5b506104f3610c70565b34801561071e57600080fd5b50610459610c79565b34801561073357600080fd5b506104596107423660046113d2565b610c88565b34801561075357600080fd5b506104f3610ca3565b34801561076857600080fd5b506104a66107773660046113d2565b610cc9565b34801561078857600080fd5b506104a6610cdb565b34801561079d57600080fd5b506104076107ac366004611462565b610ce1565b3480156107bd57600080fd5b506104a6610de5565b3480156107d257600080fd5b506104a6610deb565b3480156107e757600080fd5b506107f0610df1565b60405161043b919061183c565b34801561080957600080fd5b506104a66108183660046113d2565b610e00565b34801561082957600080fd5b506104a66108383660046113d2565b610e12565b34801561084957600080fd5b50610459610e24565b34801561085e57600080fd5b50610459610e33565b34801561087357600080fd5b506104a66108823660046113d2565b610e42565b34801561089357600080fd5b506108a76108a23660046114d2565b610e54565b60405161043b9c9b9a99989796959493929190611789565b3480156108cb57600080fd5b506108df6108da3660046114d2565b610ec6565b60405161043b989796959493929190611712565b3480156108ff57600080fd5b506104a661090e3660046113f8565b610f18565b34801561091f57600080fd5b50610459610f35565b34801561093457600080fd5b506104a6610f44565b34801561094957600080fd5b506104a66109583660046113d2565b610f4a565b34801561096957600080fd5b5061045961097836600461152d565b610f5c565b34801561098957600080fd5b50610459610fb7565b34801561099e57600080fd5b506104a6610fc6565b3480156109b357600080fd5b506104a6610fcc565b3480156109c857600080fd5b506104076109d73660046113d2565b610fd2565b3480156109e857600080fd5b506104a6611002565b3480156109fd57600080fd5b506104a6611008565b348015610a1257600080fd5b5061045961100e565b348015610a2757600080fd5b5061045961101d565b348015610a3c57600080fd5b50610407610a4b3660046113d2565b61102c565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610cba611107565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b610ce9610ca3565b610d055760405162461bcd60e51b815260040161039e9061187a565b828114610d245760405162461bcd60e51b815260040161039e9061186a565b60005b83811015610dde57610dd6858583818110610d3e57fe5b602002820190508035601e1936849003018112610d5a57600080fd5b9091016020810191503567ffffffffffffffff811115610d7957600080fd5b36819003821315610d8957600080fd5b604051602001610d9a9291906116e9565b60405160208183030381529060405280519060200120848484818110610dbc57fe5b9050602002016020610dd191908101906113d2565b61110b565b600101610d27565b5050505050565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6000600560008484604051602001610f759291906116e9565b60408051601f1981840301815291815281516020928301206001600160e01b03191683529082019290925201600020546001600160a01b031690505b92915050565b6014546001600160a01b031681565b601b5481565b60285481565b610fda610ca3565b610ff65760405162461bcd60e51b815260040161039e9061187a565b610fff81611186565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b611034610ca3565b6110505760405162461bcd60e51b815260040161039e9061187a565b6000816001600160a01b03168260405160240161106d91906116f6565b60408051601f198184030181529181526020820180516001600160e01b031663189acdbd60e31b179052516110a291906116d6565b600060405180830381855af49150503d80600081146110dd576040519150601f19603f3d011682016040523d82523d6000602084013e6110e2565b606091505b50509050806111035760405162461bcd60e51b815260040161039e9061188a565b5050565b3390565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b0383169081179091551561116657611160600d6001600160e01b0319841663ffffffff61120816565b50611103565b611181600d6001600160e01b0319841663ffffffff61125016565b505050565b6001600160a01b0381166111ac5760405162461bcd60e51b815260040161039e9061185a565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006112148383611311565b6112485750600180830180548083018083556000928352602080842090920185905584835290859052604090912055610fb1565b506000610fb1565b600061125c8383611311565b1561124857600082815260208490526040902054600184015460001991820191018082146112d457600085600101828154811061129557fe5b90600052602060002001549050808660010184815481106112b257fe5b6000918252602080832090910192909255918252869052604090206001830190555b600084815260208690526040812055600185018054806112f057fe5b60019003818190600052602060002001600090559055600192505050610fb1565b60009081526020919091526040902054151590565b8035610fb1816119fb565b60008083601f84011261134357600080fd5b50813567ffffffffffffffff81111561135b57600080fd5b60208301915083602082028301111561137357600080fd5b9250929050565b8035610fb181611a0f565b8035610fb181611a18565b60008083601f8401126113a257600080fd5b50813567ffffffffffffffff8111156113ba57600080fd5b60208301915083600182028301111561137357600080fd5b6000602082840312156113e457600080fd5b60006113f08484611326565b949350505050565b6000806040838503121561140b57600080fd5b60006114178585611326565b925050602061142885828601611326565b9150509250929050565b6000806040838503121561144557600080fd5b60006114518585611326565b92505060206114288582860161137a565b6000806000806040858703121561147857600080fd5b843567ffffffffffffffff81111561148f57600080fd5b61149b87828801611331565b9450945050602085013567ffffffffffffffff8111156114ba57600080fd5b6114c687828801611331565b95989497509550505050565b6000602082840312156114e457600080fd5b60006113f0848461137a565b6000806040838503121561150357600080fd5b6000611417858561137a565b60006020828403121561152157600080fd5b60006113f08484611385565b6000806020838503121561154057600080fd5b823567ffffffffffffffff81111561155757600080fd5b61156385828601611390565b92509250509250929050565b61157881611988565b82525050565b61157881611993565b61157881611998565b600061159b82611976565b6115a5818561197a565b93506115b58185602086016119cb565b9290920192915050565b611578816119b4565b60006115d4838561197a565b93506115e18385846119bf565b50500190565b60006115f460118361197f565b70746172676574206e6f742061637469766560781b815260200192915050565b600061162160268361197f565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000611669600e8361197f565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000611693600c8361197f565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006116bb600c8361197f565b6b1cd95d1d5c0819985a5b195960a21b815260200192915050565b60006116e28284611590565b9392505050565b60006113f08284866115c8565b60208101610fb1828461156f565b60208101610fb1828461157e565b6101008101611721828b611587565b61172e602083018a61157e565b61173b604083018961156f565b611748606083018861156f565b611755608083018761156f565b61176260a0830186611587565b61176f60c0830185611587565b61177c60e0830184611587565b9998505050505050505050565b6101808101611798828f611587565b6117a5602083018e611587565b6117b2604083018d611587565b6117bf606083018c61157e565b6117cc608083018b611587565b6117d960a083018a611587565b6117e660c0830189611587565b6117f360e0830188611587565b611801610100830187611587565b61180f610120830186611587565b61181d61014083018561156f565b61182b61016083018461156f565b9d9c50505050505050505050505050565b60208101610fb182846115bf565b60208082528101610fb1816115e7565b60208082528101610fb181611614565b60208082528101610fb18161165c565b60208082528101610fb181611686565b60208082528101610fb1816116ae565b60208101610fb18284611587565b606081016118b68286611587565b6118c36020830185611587565b6113f06040830184611587565b60a081016118de8288611587565b6118eb6020830187611587565b6118f86040830186611587565b6119056060830185611587565b6119126080830184611587565b9695505050505050565b60c0810161192a8289611587565b6119376020830188611587565b6119446040830187611587565b6119516060830186611587565b61195e6080830185611587565b61196b60a0830184611587565b979650505050505050565b5190565b919050565b90815260200190565b6000610fb1826119a8565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b6000610fb182611988565b82818337506000910152565b60005b838110156119e65781810151838201526020016119ce565b838111156119f5576000848401525b50505050565b611a0481611988565b8114610fff57600080fd5b611a0481611998565b611a048161199b56fea365627a7a72315820a974efdde6c8edf7473e5a3a323443e27807b2077d54c6fca9cde833156f4e0a6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x350 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCD5D808D GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xF0E085F5 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF6DDC8B3 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x9F1 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xA06 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xA1B JUMPI DUP1 PUSH4 0xFB08FDAA EQ PUSH2 0xA30 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x9A7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x9BC JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x9DC JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xD485045E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x93D JUMPI DUP1 PUSH4 0xDA1B620B EQ PUSH2 0x95D JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x97D JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x992 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x8F3 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x913 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x928 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xBA4861E9 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x852 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x867 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x887 JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x8BF JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x7FD JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x81D JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x83D JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xA012D827 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xA012D827 EQ PUSH2 0x791 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x7B1 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x7C6 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x7DB JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x747 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x75C JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x77C JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x7420CA3E GT PUSH2 0x23E JUMPI DUP1 PUSH4 0x7A8FAEB8 GT PUSH2 0x218 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x6E8 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x6FD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x712 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x727 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x6A9 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x6BE JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x6D3 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x574442CC GT PUSH2 0x27A JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x623 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x638 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x669 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x689 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x5DF JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x5F4 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x30D JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x54A JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x56A JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x58A JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x5AA JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x500 JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x515 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x52A JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x409 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x486 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x4B3 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x4D3 JUMPI JUMPDEST PUSH2 0x8FC GAS GT PUSH2 0x35E JUMPI PUSH2 0x407 JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x3A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x184A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 CALLDATASIZE DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP DUP5 MLOAD SWAP5 SWAP6 POP SWAP4 DUP5 SWAP4 POP SWAP2 POP POP PUSH1 0x20 DUP5 ADD DUP6 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x40 MLOAD DUP2 PUSH1 0x0 DUP3 RETURNDATACOPY DUP3 DUP1 ISZERO PUSH2 0x403 JUMPI DUP3 DUP3 RETURN JUMPDEST DUP3 DUP3 REVERT JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x429 PUSH2 0x424 CALLDATASIZE PUSH1 0x4 PUSH2 0x1432 JUMP JUMPDEST PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xA90 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x481 CALLDATASIZE PUSH1 0x4 PUSH2 0x150F JUMP JUMPDEST PUSH2 0xA9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x4A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x13F8 JUMP JUMPDEST PUSH2 0xABA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP2 SWAP1 PUSH2 0x189A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x4CE CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xAD7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F3 PUSH2 0x4EE CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xAF2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP2 SWAP1 PUSH2 0x1704 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xB07 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xB0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x429 PUSH2 0x545 CALLDATASIZE PUSH1 0x4 PUSH2 0x1432 JUMP JUMPDEST PUSH2 0xB13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x565 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xB53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x585 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xB65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F3 PUSH2 0x5A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x14F0 JUMP JUMPDEST PUSH2 0xB77 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x5C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xB97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xBA9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xBAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x614 PUSH2 0x60F CALLDATASIZE PUSH1 0x4 PUSH2 0x14D2 JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x18A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xBD6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x658 PUSH2 0x653 CALLDATASIZE PUSH1 0x4 PUSH2 0x13F8 JUMP JUMPDEST PUSH2 0xBDC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x18D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F3 PUSH2 0x684 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xC16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x6A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xC2B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xC46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xC55 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xC5B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xC6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F3 PUSH2 0xC70 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xC79 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x733 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x742 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xC88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F3 PUSH2 0xCA3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x777 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xCC9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xCDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x407 PUSH2 0x7AC CALLDATASIZE PUSH1 0x4 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0xCE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xDE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xDEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F0 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP2 SWAP1 PUSH2 0x183C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x809 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x818 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xE00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x829 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x838 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xE12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xE24 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xE33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x873 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x882 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xE42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A7 PUSH2 0x8A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x14D2 JUMP JUMPDEST PUSH2 0xE54 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1789 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8DF PUSH2 0x8DA CALLDATASIZE PUSH1 0x4 PUSH2 0x14D2 JUMP JUMPDEST PUSH2 0xEC6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43B SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1712 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x90E CALLDATASIZE PUSH1 0x4 PUSH2 0x13F8 JUMP JUMPDEST PUSH2 0xF18 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xF35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x934 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xF44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x949 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x958 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xF4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x969 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x978 CALLDATASIZE PUSH1 0x4 PUSH2 0x152D JUMP JUMPDEST PUSH2 0xF5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x989 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0xFB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xFC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0xFCC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x407 PUSH2 0x9D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0xFD2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x1002 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A6 PUSH2 0x1008 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x100E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 PUSH2 0x101D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x407 PUSH2 0xA4B CALLDATASIZE PUSH1 0x4 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0x102C JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCBA PUSH2 0x1107 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH2 0xCE9 PUSH2 0xCA3 JUMP JUMPDEST PUSH2 0xD05 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x187A JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0xD24 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x186A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDDE JUMPI PUSH2 0xDD6 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xD3E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL DUP3 ADD SWAP1 POP DUP1 CALLDATALOAD PUSH1 0x1E NOT CALLDATASIZE DUP5 SWAP1 SUB ADD DUP2 SLT PUSH2 0xD5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 ADD PUSH1 0x20 DUP2 ADD SWAP2 POP CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xD89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD9A SWAP3 SWAP2 SWAP1 PUSH2 0x16E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP5 DUP5 DUP5 DUP2 DUP2 LT PUSH2 0xDBC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xDD1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x13D2 JUMP JUMPDEST PUSH2 0x110B JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD27 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF75 SWAP3 SWAP2 SWAP1 PUSH2 0x16E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xFDA PUSH2 0xCA3 JUMP JUMPDEST PUSH2 0xFF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH2 0xFFF DUP2 PUSH2 0x1186 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1034 PUSH2 0xCA3 JUMP JUMPDEST PUSH2 0x1050 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x106D SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x10A2 SWAP2 SWAP1 PUSH2 0x16D6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x10DD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x10E2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1103 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x188A JUMP JUMPDEST POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x1166 JUMPI PUSH2 0x1160 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x1208 AND JUMP JUMPDEST POP PUSH2 0x1103 JUMP JUMPDEST PUSH2 0x1181 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x1250 AND JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x11AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E SWAP1 PUSH2 0x185A JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1214 DUP4 DUP4 PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x1248 JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xFB1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xFB1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP4 DUP4 PUSH2 0x1311 JUMP JUMPDEST ISZERO PUSH2 0x1248 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1295 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x12B2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x12F0 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0xFB1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFB1 DUP2 PUSH2 0x19FB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x135B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFB1 DUP2 PUSH2 0x1A0F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFB1 DUP2 PUSH2 0x1A18 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x13A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x13BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13F0 DUP5 DUP5 PUSH2 0x1326 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x140B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1417 DUP6 DUP6 PUSH2 0x1326 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1428 DUP6 DUP3 DUP7 ADD PUSH2 0x1326 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1451 DUP6 DUP6 PUSH2 0x1326 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1428 DUP6 DUP3 DUP7 ADD PUSH2 0x137A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x148F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x149B DUP8 DUP3 DUP9 ADD PUSH2 0x1331 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14C6 DUP8 DUP3 DUP9 ADD PUSH2 0x1331 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13F0 DUP5 DUP5 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1417 DUP6 DUP6 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13F0 DUP5 DUP5 PUSH2 0x1385 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1563 DUP6 DUP3 DUP7 ADD PUSH2 0x1390 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x1578 DUP2 PUSH2 0x1988 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1578 DUP2 PUSH2 0x1993 JUMP JUMPDEST PUSH2 0x1578 DUP2 PUSH2 0x1998 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x159B DUP3 PUSH2 0x1976 JUMP JUMPDEST PUSH2 0x15A5 DUP2 DUP6 PUSH2 0x197A JUMP JUMPDEST SWAP4 POP PUSH2 0x15B5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x19CB JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1578 DUP2 PUSH2 0x19B4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15D4 DUP4 DUP6 PUSH2 0x197A JUMP JUMPDEST SWAP4 POP PUSH2 0x15E1 DUP4 DUP6 DUP5 PUSH2 0x19BF JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15F4 PUSH1 0x11 DUP4 PUSH2 0x197F JUMP JUMPDEST PUSH17 0x746172676574206E6F7420616374697665 PUSH1 0x78 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1621 PUSH1 0x26 DUP4 PUSH2 0x197F JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1669 PUSH1 0xE DUP4 PUSH2 0x197F JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1693 PUSH1 0xC DUP4 PUSH2 0x197F JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16BB PUSH1 0xC DUP4 PUSH2 0x197F JUMP JUMPDEST PUSH12 0x1CD95D1D5C0819985A5B1959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16E2 DUP3 DUP5 PUSH2 0x1590 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F0 DUP3 DUP5 DUP7 PUSH2 0x15C8 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xFB1 DUP3 DUP5 PUSH2 0x156F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xFB1 DUP3 DUP5 PUSH2 0x157E JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x1721 DUP3 DUP12 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x172E PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x157E JUMP JUMPDEST PUSH2 0x173B PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x156F JUMP JUMPDEST PUSH2 0x1748 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x156F JUMP JUMPDEST PUSH2 0x1755 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x156F JUMP JUMPDEST PUSH2 0x1762 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x176F PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x177C PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x1587 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x1798 DUP3 DUP16 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x17A5 PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x17B2 PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x17BF PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x157E JUMP JUMPDEST PUSH2 0x17CC PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x17D9 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x17E6 PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x17F3 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x1801 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x180F PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x181D PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x156F JUMP JUMPDEST PUSH2 0x182B PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x156F JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xFB1 DUP3 DUP5 PUSH2 0x15BF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFB1 DUP2 PUSH2 0x15E7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFB1 DUP2 PUSH2 0x1614 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFB1 DUP2 PUSH2 0x165C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFB1 DUP2 PUSH2 0x1686 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFB1 DUP2 PUSH2 0x16AE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xFB1 DUP3 DUP5 PUSH2 0x1587 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x18B6 DUP3 DUP7 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x18C3 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x13F0 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1587 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x18DE DUP3 DUP9 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x18EB PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x18F8 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x1905 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x1912 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1587 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x192A DUP3 DUP10 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x1937 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x1944 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x1951 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x195E PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x196B PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1587 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFB1 DUP3 PUSH2 0x19A8 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFB1 DUP3 PUSH2 0x1988 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19E6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19CE JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x19F5 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1A04 DUP2 PUSH2 0x1988 JUMP JUMPDEST DUP2 EQ PUSH2 0xFFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A04 DUP2 PUSH2 0x1998 JUMP JUMPDEST PUSH2 0x1A04 DUP2 PUSH2 0x199B JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xA9 PUSH21 0xEFDDE6C8EDF7473E5A3A323443E27807B2077D54C6 0xFC 0xA9 0xCD 0xE8 CALLER ISZERO PUSH16 0x4E0A6C6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "648:1758:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;919:4;906:9;:17;902:39;;930:7;;902:39;945:14;975:7;;-1:-1:-1;;;;;;975:7:13;962:21;;:12;:21;;;;;;-1:-1:-1;;;;;962:21:13;;987:50;;;;-1:-1:-1;;;987:50:13;;;;;;;;;;;;;;;;;1042:17;1062:8;;1042:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;1145:11:13;;1042:28;;-1:-1:-1;99:1;;;-1:-1;1145:11:13;-1:-1:-1;;1138:4:13;1128:15;;1120:6;1115:3;1102:61;1179:14;1214:4;1208:11;1246:4;1243:1;1238:3;1223:28;1262:6;1273:37;;;;1342:4;1337:3;1330:17;1273:37;1299:4;1294:3;1287:17;1083:274;648:1758;1636:67:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5443:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5443:30:14;;;:::i;:::-;;;;;;;;1270:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1270:46:14;;;;;;;;:::i;6768:81::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6768:81:14;;;;;;;;:::i;:::-;;;;;;;;4372:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4372:55:14;;;;;;;;:::i;5558:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5558:53:14;;;;;;;;:::i;:::-;;;;;;;;3097:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3097:46:14;;;:::i;3969:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3969:32:14;;;:::i;1527:65::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1527:65:14;;;;;;;;:::i;3376:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3376:55:14;;;;;;;;:::i;4925:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4925:48:14;;;;;;;;:::i;1744:69::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1744:69:14;;;;;;;;:::i;2825:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2825:55:14;;;;;;;;:::i;2717:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2717:41:14;;;:::i;4832:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4832:37:14;;;:::i;2013:52::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2013:52:14;;;;;;;;:::i;:::-;;;;;;;;;;5060:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5060:50:14;;;:::i;1898:76::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1898:76:14;;;;;;;;:::i;:::-;;;;;;;;;;;;4542:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4542:47:14;;;;;;;;:::i;5650:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5650:57:14;;;;;;;;:::i;1087:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1087:24:14;;;:::i;6000:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6000:39:14;;;:::i;1012:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1012:25:14;;;:::i;3887:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3887:32:14;;;:::i;7007:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7007:17:14;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;4285:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4285:55:14;;;;;;;;:::i;1134:83:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;2994:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2994:55:14;;;;;;;;:::i;5113:49::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5113:49:14;;;:::i;1821:300:13:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1821:300:13;;;;;;;;:::i;5340:45:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5340:45:14;;;:::i;4075:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4075:47:14;;;:::i;5175:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5175:29:14;;;:::i;:::-;;;;;;;;3781:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3781:57:14;;;;;;;;:::i;3605:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3605:57:14;;;;;;;;:::i;6272:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6272:30:14;;;:::i;1174:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1174:48:14;;;:::i;6168:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6168:55:14;;;;;;;;:::i;1347:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1347:37:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1437:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1437:48:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;6853:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6853:69:14;;;;;;;;:::i;6305:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6305:31:14;;;:::i;4651:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4651:43:14;;;:::i;3209:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3209:55:14;;;;;;;;:::i;2263:141:13:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2263:141:13;;;;;;;;:::i;2626:29:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2626:29:14;;;:::i;3490:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3490:47:14;;;:::i;4754:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4754:35:14;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1351:98:142;;;;;;;;:::i;6447:60:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6447:60:14;;;:::i;4198:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4198:55:14;;;:::i;5207:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5207:35:14;;;:::i;5389:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5389:20:14;;;:::i;1462:198:13:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1462:198:13;;;;;;;;:::i;1636:67:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;1821:300:13:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1930:35:13;;;1922:62;;;;-1:-1:-1;;;1922:62:13;;;;;;;;;1994:9;1989:129;2009:18;;;1989:129;;;2039:74;2084:7;;2092:1;2084:10;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;2067:28:13;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2067:28:13;;;2057:39;;;;;;2099:10;;2110:1;2099:13;;;;;;;;;;;;;;;;;;;;;;2039:10;:74::i;:::-;2029:3;;1989:129;;;;1821:300;;;;:::o;5340:45:14:-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1437:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2263:141:13:-;2326:7;2346:12;:54;2393:3;;2376:21;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2376:21:13;;;2366:32;;49:4:-1;2366:32:13;;;;-1:-1:-1;;;;;;2346:54:13;;;;;;;;;;;-1:-1:-1;2346:54:13;;-1:-1:-1;;;;;2346:54:13;;-1:-1:-1;2263:141:13;;;;;:::o;2626:29:14:-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;1462:198:13:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1527:12:13;1545:6;-1:-1:-1;;;;;1545:19:13;1612:6;1565:54;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;1565:54:13;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1545:75:13;;;1565:54;1545:75;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1526:94:13;;;1632:7;1624:32;;;;-1:-1:-1;;;1624:32:13;;;;;;;;;1058:1:142;1462:198:13;:::o;780:87:137:-;853:10;780:87;:::o;7574:230:14:-;-1:-1:-1;;;;;;7635:17:14;;;;;;:12;:17;;;;;:26;;-1:-1:-1;;;;;;7635:26:14;-1:-1:-1;;;;;7635:26:14;;;;;;;;7670:20;7666:135;;7697:40;:15;-1:-1:-1;;;;;;7724:12:14;;7697:40;:26;:40;:::i;:::-;;7666:135;;;7753:43;:15;-1:-1:-1;;;;;;7783:12:14;;7753:43;:29;:43;:::i;:::-;;7574:230;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1293:212:95:-;1370:4;1385:20;1394:3;1399:5;1385:8;:20::i;:::-;1380:122;;-1:-1:-1;1431:10:95;;;;27::-1;;23:18;;;45:23;;;-1:-1;1431:22:95;;;;;;;;;;;;;1412:16;;;;;;;;;;;:41;1458:11;;1380:122;-1:-1:-1;1492:5:95;1485:12;;2102:845;2182:4;2196:20;2205:3;2210:5;2196:8;:20::i;:::-;2192:752;;;2223:21;2247:16;;;;;;;;;;;2266:1;2292:10;;:17;-1:-1:-1;;2247:20:95;;;;2292:21;2428:26;;;2424:318;;2462:17;2482:3;:10;;2493:9;2482:21;;;;;;;;;;;;;;;;2462:41;;2607:9;2579:3;:10;;2590:13;2579:25;;;;;;;;;;;;;;;;;;;:37;;;;2669:20;;;;;;;;;2708:1;2692:17;;2669:40;;2424:318;2807:9;:16;;;;;;;;;;2800:23;2878:10;;;:16;;;;;;;;;;;;;;;;;;;;;;;;2907:4;2900:11;;;;;;3145:122;3225:4;3242:16;;;;;;;;;;;;:21;;;3145:122::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:352;;;290:3;283:4;275:6;271:17;267:27;257:2;;308:1;305;298:12;257:2;-1:-1;328:20;;368:18;357:30;;354:2;;;400:1;397;390:12;354:2;434:4;426:6;422:17;410:29;;485:3;477:4;469:6;465:17;455:8;451:32;448:41;445:2;;;502:1;499;492:12;445:2;250:262;;;;;;905:130;972:20;;997:33;972:20;997:33;;1042:128;1108:20;;1133:32;1108:20;1133:32;;1192:337;;;1307:3;1300:4;1292:6;1288:17;1284:27;1274:2;;1325:1;1322;1315:12;1274:2;-1:-1;1345:20;;1385:18;1374:30;;1371:2;;;1417:1;1414;1407:12;1371:2;1451:4;1443:6;1439:17;1427:29;;1502:3;1494:4;1486:6;1482:17;1472:8;1468:32;1465:41;1462:2;;;1519:1;1516;1509:12;1537:241;;1641:2;1629:9;1620:7;1616:23;1612:32;1609:2;;;1657:1;1654;1647:12;1609:2;1692:1;1709:53;1754:7;1734:9;1709:53;;;1699:63;1603:175;-1:-1;;;;1603:175;1785:366;;;1906:2;1894:9;1885:7;1881:23;1877:32;1874:2;;;1922:1;1919;1912:12;1874:2;1957:1;1974:53;2019:7;1999:9;1974:53;;;1964:63;;1936:97;2064:2;2082:53;2127:7;2118:6;2107:9;2103:22;2082:53;;;2072:63;;2043:98;1868:283;;;;;;2158:366;;;2279:2;2267:9;2258:7;2254:23;2250:32;2247:2;;;2295:1;2292;2285:12;2247:2;2330:1;2347:53;2392:7;2372:9;2347:53;;;2337:63;;2309:97;2437:2;2455:53;2500:7;2491:6;2480:9;2476:22;2455:53;;2531:694;;;;;2730:2;2718:9;2709:7;2705:23;2701:32;2698:2;;;2746:1;2743;2736:12;2698:2;2781:31;;2832:18;2821:30;;2818:2;;;2864:1;2861;2854:12;2818:2;2892:88;2972:7;2963:6;2952:9;2948:22;2892:88;;;2882:98;;;;2760:226;3045:2;3034:9;3030:18;3017:32;3069:18;3061:6;3058:30;3055:2;;;3101:1;3098;3091:12;3055:2;3129:80;3201:7;3192:6;3181:9;3177:22;3129:80;;;2692:533;;;;-1:-1;3119:90;-1:-1;;;;2692:533;3232:241;;3336:2;3324:9;3315:7;3311:23;3307:32;3304:2;;;3352:1;3349;3342:12;3304:2;3387:1;3404:53;3449:7;3429:9;3404:53;;3480:366;;;3601:2;3589:9;3580:7;3576:23;3572:32;3569:2;;;3617:1;3614;3607:12;3569:2;3652:1;3669:53;3714:7;3694:9;3669:53;;3853:239;;3956:2;3944:9;3935:7;3931:23;3927:32;3924:2;;;3972:1;3969;3962:12;3924:2;4007:1;4024:52;4068:7;4048:9;4024:52;;4099:367;;;4223:2;4211:9;4202:7;4198:23;4194:32;4191:2;;;4239:1;4236;4229:12;4191:2;4274:31;;4325:18;4314:30;;4311:2;;;4357:1;4354;4347:12;4311:2;4385:65;4442:7;4433:6;4422:9;4418:22;4385:65;;;4375:75;;;;4253:203;4185:281;;;;;;4473:113;4556:24;4574:5;4556:24;;;4551:3;4544:37;4538:48;;;4593:104;4670:21;4685:5;4670:21;;4704:113;4787:24;4805:5;4787:24;;4824:356;;4952:38;4984:5;4952:38;;;5002:88;5083:6;5078:3;5002:88;;;4995:95;;5095:52;5140:6;5135:3;5128:4;5121:5;5117:16;5095:52;;;5159:16;;;;;4932:248;-1:-1;;4932:248;5187:168;5291:58;5343:5;5291:58;;5387:313;;5521:89;5603:6;5598:3;5521:89;;;5514:96;;5622:43;5658:6;5653:3;5646:5;5622:43;;;-1:-1;;5678:16;;5507:193;6051:317;;6211:67;6275:2;6270:3;6211:67;;;-1:-1;;;6291:40;;6359:2;6350:12;;6197:171;-1:-1;;6197:171;6377:375;;6537:67;6601:2;6596:3;6537:67;;;6637:34;6617:55;;-1:-1;;;6701:2;6692:12;;6685:30;6743:2;6734:12;;6523:229;-1:-1;;6523:229;6761:314;;6921:67;6985:2;6980:3;6921:67;;;-1:-1;;;7001:37;;7066:2;7057:12;;6907:168;-1:-1;;6907:168;7084:312;;7244:67;7308:2;7303:3;7244:67;;;-1:-1;;;7324:35;;7387:2;7378:12;;7230:166;-1:-1;;7230:166;7405:312;;7565:67;7629:2;7624:3;7565:67;;;-1:-1;;;7645:35;;7708:2;7699:12;;7551:166;-1:-1;;7551:166;7845:262;;7989:93;8078:3;8069:6;7989:93;;;7982:100;7970:137;-1:-1;;;7970:137;8114:278;;8266:101;8363:3;8354:6;8346;8266:101;;8692:213;8810:2;8795:18;;8824:71;8799:9;8868:6;8824:71;;8912:201;9024:2;9009:18;;9038:65;9013:9;9076:6;9038:65;;9120:983;9428:3;9413:19;;9443:71;9417:9;9487:6;9443:71;;;9525:66;9587:2;9576:9;9572:18;9563:6;9525:66;;;9602:72;9670:2;9659:9;9655:18;9646:6;9602:72;;;9685;9753:2;9742:9;9738:18;9729:6;9685:72;;;9768:73;9836:3;9825:9;9821:19;9812:6;9768:73;;;9852;9920:3;9909:9;9905:19;9896:6;9852:73;;;9936;10004:3;9993:9;9989:19;9980:6;9936:73;;;10020;10088:3;10077:9;10073:19;10064:6;10020:73;;;9399:704;;;;;;;;;;;;10110:1435;10532:3;10517:19;;10547:71;10521:9;10591:6;10547:71;;;10629:72;10697:2;10686:9;10682:18;10673:6;10629:72;;;10712;10780:2;10769:9;10765:18;10756:6;10712:72;;;10795:66;10857:2;10846:9;10842:18;10833:6;10795:66;;;10872:73;10940:3;10929:9;10925:19;10916:6;10872:73;;;10956;11024:3;11013:9;11009:19;11000:6;10956:73;;;11040;11108:3;11097:9;11093:19;11084:6;11040:73;;;11124;11192:3;11181:9;11177:19;11168:6;11124:73;;;11208;11276:3;11265:9;11261:19;11252:6;11208:73;;;11292;11360:3;11349:9;11345:19;11336:6;11292:73;;;11376:74;11445:3;11434:9;11430:19;11420:7;11376:74;;;11461;11530:3;11519:9;11515:19;11505:7;11461:74;;;10503:1042;;;;;;;;;;;;;;;;11552:255;11691:2;11676:18;;11705:92;11680:9;11770:6;11705:92;;11814:407;12005:2;12019:47;;;11990:18;;12080:131;11990:18;12080:131;;12228:407;12419:2;12433:47;;;12404:18;;12494:131;12404:18;12494:131;;12642:407;12833:2;12847:47;;;12818:18;;12908:131;12818:18;12908:131;;13056:407;13247:2;13261:47;;;13232:18;;13322:131;13232:18;13322:131;;13470:407;13661:2;13675:47;;;13646:18;;13736:131;13646:18;13736:131;;13884:213;14002:2;13987:18;;14016:71;13991:9;14060:6;14016:71;;14104:435;14278:2;14263:18;;14292:71;14267:9;14336:6;14292:71;;;14374:72;14442:2;14431:9;14427:18;14418:6;14374:72;;;14457;14525:2;14514:9;14510:18;14501:6;14457:72;;14546:659;14776:3;14761:19;;14791:71;14765:9;14835:6;14791:71;;;14873:72;14941:2;14930:9;14926:18;14917:6;14873:72;;;14956;15024:2;15013:9;15009:18;15000:6;14956:72;;;15039;15107:2;15096:9;15092:18;15083:6;15039:72;;;15122:73;15190:3;15179:9;15175:19;15166:6;15122:73;;;14747:458;;;;;;;;;15212:771;15470:3;15455:19;;15485:71;15459:9;15529:6;15485:71;;;15567:72;15635:2;15624:9;15620:18;15611:6;15567:72;;;15650;15718:2;15707:9;15703:18;15694:6;15650:72;;;15733;15801:2;15790:9;15786:18;15777:6;15733:72;;;15816:73;15884:3;15873:9;15869:19;15860:6;15816:73;;;15900;15968:3;15957:9;15953:19;15944:6;15900:73;;;15441:542;;;;;;;;;;15990:121;16077:12;;16048:63;16119:144;16254:3;16232:31;-1:-1;16232:31;16272:163;16375:19;;;16424:4;16415:14;;16368:67;16597:91;;16659:24;16677:5;16659:24;;16695:85;16761:13;16754:21;;16737:43;16787:72;16849:5;16832:27;16866:144;-1:-1;;;;;;16927:78;;16910:100;17017:121;-1:-1;;;;;17079:54;;17062:76;17224:163;;17324:58;17376:5;17324:58;;17531:145;17612:6;17607:3;17602;17589:30;-1:-1;17668:1;17650:16;;17643:27;17582:94;17685:268;17750:1;17757:101;17771:6;17768:1;17765:13;17757:101;;;17838:11;;;17832:18;17819:11;;;17812:39;17793:2;17786:10;17757:101;;;17873:6;17870:1;17867:13;17864:2;;;17938:1;17929:6;17924:3;17920:16;17913:27;17864:2;17734:219;;;;;17961:117;18030:24;18048:5;18030:24;;;18023:5;18020:35;18010:2;;18069:1;18066;18059:12;18085:117;18154:24;18172:5;18154:24;;18209:115;18277:23;18294:5;18277:23;"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "getTarget(string)": "da1b620b",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "replaceContract(address)": "fb08fdaa",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "setTargets(string[],address[])": "a012d827",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "getTarget(string)": {
                "notice": "External getter for target addresses."
              },
              "replaceContract(address)": {
                "notice": "External owner target initializer."
              },
              "setTargets(string[],address[])": {
                "notice": "External owner setter for target addresses."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the proxy functionality to deploy Protocol anchor and logic apart, turning it upgradable."
          }
        }
      },
      "contracts/core/State.sol": {
        "State": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "State contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b610ead8061010f6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158206254306f083e606d7b6b2a22b8f3abeb7a847365d905c66dfddb92a17d52212664736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH2 0xA9 PUSH2 0xFC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x100 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xEAD DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158206254306F083E60 PUSH14 0x7B6B2A22B8F3ABEB7A847365D905 0xC6 PUSH14 0xFDDB92A17D52212664736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "680:7126:14:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;680:7126:14;;780:87:137;853:10;780:87;:::o;680:7126:14:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158206254306f083e606d7b6b2a22b8f3abeb7a847365d905c66dfddb92a17d52212664736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158206254306F083E60 PUSH14 0x7B6B2A22B8F3ABEB7A847365D905 0xC6 PUSH14 0xFDDB92A17D52212664736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "680:7126:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;680:7126:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:67;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;-1:-1:-1;;;;;5443:30:14;;;;;;;;;;;;;;1270:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1270:46:14;-1:-1:-1;;;;;;1270:46:14;;:::i;6768:81::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6768:81:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4372:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4372:55:14;-1:-1:-1;;;;;4372:55:14;;:::i;5558:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5558:53:14;-1:-1:-1;;;;;5558:53:14;;:::i;:::-;;;;;;;;;;;;;;;;;;3097:46;;;:::i;3969:32::-;;;:::i;1527:65::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1527:65:14;;;;;;;;:::i;3376:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3376:55:14;-1:-1:-1;;;;;3376:55:14;;:::i;4925:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4925:48:14;-1:-1:-1;;;;;4925:48:14;;:::i;1744:69::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1744:69:14;;;;;;-1:-1:-1;;;;;1744:69:14;;:::i;2825:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2825:55:14;-1:-1:-1;;;;;2825:55:14;;:::i;2717:41::-;;;:::i;4832:37::-;;;:::i;2013:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2013:52:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:50;;;:::i;1898:76::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1898:76:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4542:47:14;-1:-1:-1;;;;;4542:47:14;;:::i;5650:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5650:57:14;-1:-1:-1;;;;;5650:57:14;;:::i;1087:24::-;;;:::i;6000:39::-;;;:::i;1012:25::-;;;:::i;3887:32::-;;;:::i;7007:17::-;;;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4285:55:14;-1:-1:-1;;;;;4285:55:14;;:::i;1134:83:142:-;;;:::i;2994:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2994:55:14;-1:-1:-1;;;;;2994:55:14;;:::i;5113:49::-;;;:::i;5340:45::-;;;:::i;4075:47::-;;;:::i;5175:29::-;;;:::i;3781:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3781:57:14;-1:-1:-1;;;;;3781:57:14;;:::i;3605:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:57:14;-1:-1:-1;;;;;3605:57:14;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:55:14;-1:-1:-1;;;;;6168:55:14;;:::i;1347:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1347:37:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;;;;;;;;;;;;;;;;1437:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:48:14;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6853:69:14;;;;;;;;;;:::i;6305:31::-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:55:14;-1:-1:-1;;;;;3209:55:14;;:::i;2626:29::-;;;:::i;3490:47::-;;;:::i;4754:35::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;6447:60:14;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1437:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2626:29::-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the storage values of the Protocol."
          }
        }
      },
      "contracts/core/objects/LenderInterestStruct.sol": {
        "LenderInterestStruct": {
          "abi": [],
          "devdoc": {
            "methods": {},
            "title": "The Lender Interest."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158201be7b9918b437adccf01f6b6cc19cd162dcd8fc09b7bb5ba151fba30c91acbee64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SHL 0xE7 0xB9 SWAP2 DUP12 NUMBER PUSH27 0xDCCF01F6B6CC19CD162DCD8FC09B7BB5BA151FBA30C91ACBEE6473 PUSH16 0x6C634300051100320000000000000000 ",
              "sourceMap": "417:416:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;417:416:15;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a723158201be7b9918b437adccf01f6b6cc19cd162dcd8fc09b7bb5ba151fba30c91acbee64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SHL 0xE7 0xB9 SWAP2 DUP12 NUMBER PUSH27 0xDCCF01F6B6CC19CD162DCD8FC09B7BB5BA151FBA30C91ACBEE6473 PUSH16 0x6C634300051100320000000000000000 ",
              "sourceMap": "417:416:15:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the storage structure of the Lender Interest."
          }
        }
      },
      "contracts/core/objects/LoanInterestStruct.sol": {
        "LoanInterestStruct": {
          "abi": [],
          "devdoc": {
            "methods": {},
            "title": "The Loan Interest."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820ba25ecd8dc944bb7d1ea90e5e30b171823439960ca3387e8fbdad8aa3a761bb764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xBA 0x25 0xEC 0xD8 0xDC SWAP5 0x4B 0xB7 0xD1 0xEA SWAP1 0xE5 0xE3 SIGNEXTEND OR XOR 0x23 NUMBER SWAP10 PUSH1 0xCA CALLER DUP8 0xE8 0xFB 0xDA 0xD8 0xAA GASPRICE PUSH23 0x1BB764736F6C6343000511003200000000000000000000 ",
              "sourceMap": "413:222:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413:222:16;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a72315820ba25ecd8dc944bb7d1ea90e5e30b171823439960ca3387e8fbdad8aa3a761bb764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xBA 0x25 0xEC 0xD8 0xDC SWAP5 0x4B 0xB7 0xD1 0xEA SWAP1 0xE5 0xE3 SIGNEXTEND OR XOR 0x23 NUMBER SWAP10 PUSH1 0xCA CALLER DUP8 0xE8 0xFB 0xDA 0xD8 0xAA GASPRICE PUSH23 0x1BB764736F6C6343000511003200000000000000000000 ",
              "sourceMap": "413:222:16:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the storage structure of the Loan Interest."
          }
        }
      },
      "contracts/core/objects/LoanParamsStruct.sol": {
        "LoanParamsStruct": {
          "abi": [],
          "devdoc": {
            "methods": {},
            "title": "The Loan Parameters."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820b04acb5f9c8b0a5a41634b42ca26bd2cf3821390fb94497e1911f27aa240291164736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xB0 0x4A 0xCB 0x5F SWAP13 DUP12 EXP GAS COINBASE PUSH4 0x4B42CA26 0xBD 0x2C RETURN DUP3 SGT SWAP1 0xFB SWAP5 0x49 PUSH31 0x1911F27AA240291164736F6C63430005110032000000000000000000000000 ",
              "sourceMap": "417:678:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;417:678:17;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a72315820b04acb5f9c8b0a5a41634b42ca26bd2cf3821390fb94497e1911f27aa240291164736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xB0 0x4A 0xCB 0x5F SWAP13 DUP12 EXP GAS COINBASE PUSH4 0x4B42CA26 0xBD 0x2C RETURN DUP3 SGT SWAP1 0xFB SWAP5 0x49 PUSH31 0x1911F27AA240291164736F6C63430005110032000000000000000000000000 ",
              "sourceMap": "417:678:17:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the storage structure of the Loan Parameters."
          }
        }
      },
      "contracts/core/objects/LoanStruct.sol": {
        "LoanStruct": {
          "abi": [],
          "devdoc": {
            "methods": {},
            "title": "The Loan Object."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158207055e7809750474596a33960a03d8d41777b9a839ce3592369d698c13bde797264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH17 0x55E7809750474596A33960A03D8D41777B SWAP11 DUP4 SWAP13 0xE3 MSIZE 0x23 PUSH10 0xD698C13BDE797264736F PUSH13 0x63430005110032000000000000 ",
              "sourceMap": "409:819:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;409:819:18;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a723158207055e7809750474596a33960a03d8d41777b9a839ce3592369d698c13bde797264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH17 0x55E7809750474596A33960A03D8D41777B SWAP11 DUP4 SWAP13 0xE3 MSIZE 0x23 PUSH10 0xD698C13BDE797264736F PUSH13 0x63430005110032000000000000 ",
              "sourceMap": "409:819:18:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the storage structure of the Loan Object."
          }
        }
      },
      "contracts/core/objects/OrderStruct.sol": {
        "OrderStruct": {
          "abi": [],
          "devdoc": {
            "methods": {},
            "title": "The Loan Order."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820f6be1fa54ad638c26ea2e17429aa02fb1a140b1ec71415a0e34d00bbbc67c46264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xF6 0xBE 0x1F 0xA5 0x4A 0xD6 CODESIZE 0xC2 PUSH15 0xA2E17429AA02FB1A140B1EC71415A0 0xE3 0x4D STOP 0xBB 0xBC PUSH8 0xC46264736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "407:444:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;407:444:19;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a72315820f6be1fa54ad638c26ea2e17429aa02fb1a140b1ec71415a0e34d00bbbc67c46264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xF6 0xBE 0x1F 0xA5 0x4A 0xD6 CODESIZE 0xC2 PUSH15 0xA2E17429AA02FB1A140B1EC71415A0 0xE3 0x4D STOP 0xBB 0xBC PUSH8 0xC46264736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "407:444:19:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the storage structure of the Loan Order."
          }
        }
      },
      "contracts/escrow/Escrow.sol": {
        "Escrow": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_multisig",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_releaseTime",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_depositLimit",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "DepositLimitReached",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "EscrowActivated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "EscrowFundExpired",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "EscrowInHoldingState",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "EscrowInWithdrawState",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newMultisig",
                  "type": "address"
                }
              ],
              "name": "NewMultisig",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenDepositByMultisig",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_depositLimit",
                  "type": "uint256"
                }
              ],
              "name": "TokenDepositLimitUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_releaseTimestamp",
                  "type": "uint256"
                }
              ],
              "name": "TokenReleaseUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenWithdraw",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenWithdrawByMultisig",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "changeStateToHolding",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "depositLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "depositTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "depositTokensByMultisig",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_addr",
                  "type": "address"
                }
              ],
              "name": "getUserBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "init",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "multisig",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "releaseTime",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "status",
              "outputs": [
                {
                  "internalType": "enum Escrow.Status",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_newDepositLimit",
                  "type": "uint256"
                }
              ],
              "name": "updateDepositLimit",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newMultisig",
                  "type": "address"
                }
              ],
              "name": "updateMultisig",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_newReleaseTime",
                  "type": "uint256"
                }
              ],
              "name": "updateReleaseTimestamp",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "withdrawTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiverAddress",
                  "type": "address"
                }
              ],
              "name": "withdrawTokensByMultisig",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Franklin Richards - powerhousefrank@protonmail.com",
            "methods": {
              "changeStateToHolding()": {
                "details": "Once called, the contract no longer accepts any more deposits. The multisig can now withdraw tokens from the contract after the contract is in Holding State."
              },
              "constructor": {
                "params": {
                  "_SOV": "The SOV token address.",
                  "_depositLimit": "The amount of tokens we will be accepting.",
                  "_multisig": "The owner of the tokens & contract.",
                  "_releaseTime": "The token release time, zero if undecided."
                }
              },
              "depositTokens(uint256)": {
                "details": "The contract has to be approved by the user inorder for this function to work. These tokens can be withdrawn/transferred during Holding State by the Multisig.",
                "params": {
                  "_amount": "the amount of tokens deposited."
                }
              },
              "depositTokensByMultisig(uint256)": {
                "details": "The contract has to be approved by the multisig inorder for this function to work. Once the token deposit is higher than the total deposits done, the contract state is changed to Withdraw.",
                "params": {
                  "_amount": "the amount of tokens deposited."
                }
              },
              "getUserBalance(address)": {
                "return": "_addr The user address whose balance has to be checked."
              },
              "init()": {
                "details": "Without calling this function, the contract will not start accepting tokens."
              },
              "updateDepositLimit(uint256)": {
                "details": "IMPORTANT: Should not decrease than already deposited.",
                "params": {
                  "_newDepositLimit": "The new deposit limit."
                }
              },
              "updateMultisig(address)": {
                "params": {
                  "_newMultisig": "The new owner of the tokens & contract."
                }
              },
              "updateReleaseTimestamp(uint256)": {
                "details": "Zero is also a valid timestamp, if the release time is not scheduled yet.",
                "params": {
                  "_newReleaseTime": "The new release timestamp for token release."
                }
              },
              "withdrawTokens()": {
                "details": "Only works after the contract state is in Withdraw."
              },
              "withdrawTokensByMultisig(address)": {
                "details": "Can only be called after the token state is changed to Holding.",
                "params": {
                  "_receiverAddress": "The address where the tokens has to be transferred. Zero address if the withdraw is to be done in Multisig."
                }
              }
            },
            "title": "A holding contract for Sovryn Ethereum Pool to accept SOV Token."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516113753803806113758339818101604052608081101561003357600080fd5b50805160208201516040830151606090930151919290916001600160a01b0384166100a5576040805162461bcd60e51b815260206004820152601460248201527f496e76616c696420534f5620416464726573732e000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316610100576040805162461bcd60e51b815260206004820152601960248201527f496e76616c6964204d756c746973696720416464726573732e00000000000000604482015290519081900360640190fd5b600380546001600160a01b038087166001600160a01b03199283161790925560048054928616929091168217905560405133907fc49ab2967e3eb278a95b7304998ed5b0e5d6c090c37f3ba3cabd40ad7ca3b67d90600090a360019190915560025550506006805460ff191690556111f88061017d6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806377c5e10e11610097578063dd49756e11610066578063dd49756e14610252578063e1c7392a1461026f578063ecf7085814610277578063f6153ccd1461027f57610100565b806377c5e10e146102145780638d8f2adb1461023a578063b595c1d914610242578063b91d40011461024a57610100565b806327debc0f116100d357806327debc0f146101915780632929c25c146101ae57806347734892146101d45780634783c35b1461020c57610100565b806308dcb3601461010557806309d9287f146101295780630c6ca12914610148578063200d2ed214610165575b600080fd5b61010d610287565b604080516001600160a01b039092168252519081900360200190f35b6101466004803603602081101561013f57600080fd5b5035610296565b005b6101466004803603602081101561015e57600080fd5b5035610526565b61016d6105b1565b6040518082600481111561017d57fe5b60ff16815260200191505060405180910390f35b610146600480360360208110156101a757600080fd5b50356105ba565b610146600480360360208110156101c457600080fd5b50356001600160a01b0316610686565b6101fa600480360360208110156101ea57600080fd5b50356001600160a01b031661077a565b60408051918252519081900360200190f35b61010d610795565b6101466004803603602081101561022a57600080fd5b50356001600160a01b03166107a4565b6101466109cd565b610146610b78565b6101fa610c4e565b6101466004803603602081101561026857600080fd5b5035610c54565b610146610e89565b6101fa610f5f565b6101fa610f65565b6003546001600160a01b031681565b6004546001600160a01b031633146102e3576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b60028060065460ff1660048111156102f757fe5b146103335760405162461bcd60e51b81526004018080602001828103825260278152602001806110e86027913960400191505060405180910390fd5b600082116103725760405162461bcd60e51b81526004018080602001828103825260248152602001806111466024913960400191505060405180910390fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810185905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b1580156103cb57600080fd5b505af11580156103df573d6000803e3d6000fd5b505050506040513d60208110156103f557600080fd5b50519050806104355760405162461bcd60e51b81526004018080602001828103825260228152602001806110a16022913960400191505060405180910390fd5b60408051848152905133917fb40939319ce4aad757337edb909235104a5db50bad569e463b37e1441780f371919081900360200190a2600054600354604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156104b957600080fd5b505afa1580156104cd573d6000803e3d6000fd5b505050506040513d60208110156104e357600080fd5b505110610521576006805460ff191660031790556040517fffd2e76576dce3794f83afe36ea9bbb778ba46b7e4c95d032832ca5858568ecb90600090a15b505050565b6004546001600160a01b03163314610573576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b600181905560408051828152905133917fe616a7b2221bdb5ebbb119ffc520a3c55372c015f171cbbdf2b923dbdc5bd8e9919081900360200190a250565b60065460ff1681565b6004546001600160a01b03163314610607576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b6000548110156106485760405162461bcd60e51b815260040180806020018281038252603781526020018061110f6037913960400191505060405180910390fd5b600281905560408051828152905133917f955882670f7f0d0c27f69140aa26b5b036247f64a181423f02ee40e37422267b919081900360200190a250565b6004546001600160a01b031633146106d3576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b6001600160a01b03811661072e576040805162461bcd60e51b815260206004820152601d60248201527f4e6577204d756c7469736967206164647265737320696e76616c69642e000000604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b03831690811790915560405133907fc49ab2967e3eb278a95b7304998ed5b0e5d6c090c37f3ba3cabd40ad7ca3b67d90600090a350565b6001600160a01b031660009081526005602052604090205490565b6004546001600160a01b031681565b6004546001600160a01b031633146107f1576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b60028060065460ff16600481111561080557fe5b146108415760405162461bcd60e51b81526004018080602001828103825260278152602001806110e86027913960400191505060405180910390fd5b336001600160a01b038316156108545750815b600354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561089f57600080fd5b505afa1580156108b3573d6000803e3d6000fd5b505050506040513d60208110156108c957600080fd5b50516003546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151939450600093919092169163a9059cbb91604480830192602092919082900301818787803b15801561092657600080fd5b505af115801561093a573d6000803e3d6000fd5b505050506040513d602081101561095057600080fd5b50519050806109905760405162461bcd60e51b815260040180806020018281038252603a81526020018061116a603a913960400191505060405180910390fd5b60408051838152905133917f5544e408756a3a50668b8a21fb8c1c15f76575cb77c51fa4dc602167737dc336919081900360200190a25050505050565b600154158015906109e057504260015411155b610a1b5760405162461bcd60e51b81526004018080602001828103825260258152602001806110c36025913960400191505060405180910390fd5b60038060065460ff166004811115610a2f57fe5b14610a6b5760405162461bcd60e51b81526004018080602001828103825260278152602001806110e86027913960400191505060405180910390fd5b336000818152600560209081526040808320805490849055600354825163a9059cbb60e01b8152600481019690965260248601829052915190946001600160a01b039092169263a9059cbb926044808201939182900301818787803b158015610ad357600080fd5b505af1158015610ae7573d6000803e3d6000fd5b505050506040513d6020811015610afd57600080fd5b5051905080610b3d5760405162461bcd60e51b815260040180806020018281038252603a81526020018061116a603a913960400191505060405180910390fd5b60408051838152905133917f68577e4d693c1b056a60bc4e39438810239a0bfe64869c4eb7e3baebb5f65634919081900360200190a2505050565b6004546001600160a01b03163314610bc5576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b60018060065460ff166004811115610bd957fe5b14610c155760405162461bcd60e51b81526004018080602001828103825260278152602001806110e86027913960400191505060405180910390fd5b6006805460ff191660021790556040517f5b088f927628e8de338290d95ecd2b47be7d5cf32f833c4e83139128e9e95b2a90600090a150565b60015481565b60018060065460ff166004811115610c6857fe5b14610ca45760405162461bcd60e51b81526004018080602001828103825260278152602001806110e86027913960400191505060405180910390fd5b60008211610ce35760405162461bcd60e51b81526004018080602001828103825260248152602001806111466024913960400191505060405180910390fd5b600254600054839190610cfc908363ffffffff610f6b16565b10610d4357600054600254610d169163ffffffff610fcc16565b6040519091507f248455798e33b4871de4258bfab3fb4b1bc826e576369d72ee7c613e411d262f90600090a15b600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b158015610d9c57600080fd5b505af1158015610db0573d6000803e3d6000fd5b505050506040513d6020811015610dc657600080fd5b5051905080610e065760405162461bcd60e51b81526004018080602001828103825260228152602001806110a16022913960400191505060405180910390fd5b33600090815260056020526040902054610e26908363ffffffff610f6b16565b3360009081526005602052604081209190915554610e4a908363ffffffff610f6b16565b60005560408051838152905133917f20b3fc91390f6ceba342f697a9490734680fd3556633f40efa146f1dbe79d05f919081900360200190a250505050565b6004546001600160a01b03163314610ed6576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b60008060065460ff166004811115610eea57fe5b14610f265760405162461bcd60e51b81526004018080602001828103825260278152602001806110e86027913960400191505060405180910390fd5b6006805460ff191660011790556040517f1295541c130ffcc33980a4c0939feefa3de1f7989fae02b43176efa73973de0d90600090a150565b60025481565b60005481565b600082820183811015610fc5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000610fc583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250600081848411156110985760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561105d578181015183820152602001611045565b50505050905090810190601f16801561108a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e5468652072656c656173652074696d6520686173206e6f742073746172746564207965742e54686520636f6e7472616374206973206e6f7420696e207468652072696768742073746174652e4465706f73697420616c726561647920686967686572207468616e20746865206c696d697420747279696e6720746f206265207365742e416d6f756e74206e6565647320746f20626520626967676572207468616e207a65726f2e546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e4f6e6c79204d756c74697369672063616e2063616c6c20746869732e00000000a265627a7a723158205ff7b36051bfd56345821c0c97d3781d152349394605c18ac705c29a6f0f3f6964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1375 CODESIZE SUB DUP1 PUSH2 0x1375 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xA5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420534F5620416464726573732E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x100 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964204D756C746973696720416464726573732E00000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP2 AND DUP3 OR SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xC49AB2967E3EB278A95B7304998ED5B0E5D6C090C37F3BA3CABD40AD7CA3B67D SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 SSTORE POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x11F8 DUP1 PUSH2 0x17D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x77C5E10E GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDD49756E GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDD49756E EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0xE1C7392A EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0xECF70858 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0xF6153CCD EQ PUSH2 0x27F JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x77C5E10E EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x8D8F2ADB EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0xB595C1D9 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xB91D4001 EQ PUSH2 0x24A JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x27DEBC0F GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x27DEBC0F EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x2929C25C EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x47734892 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x4783C35B EQ PUSH2 0x20C JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x9D9287F EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0xC6CA129 EQ PUSH2 0x148 JUMPI DUP1 PUSH4 0x200D2ED2 EQ PUSH2 0x165 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x287 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x146 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x296 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x146 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x526 JUMP JUMPDEST PUSH2 0x16D PUSH2 0x5B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x17D JUMPI INVALID JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x146 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5BA JUMP JUMPDEST PUSH2 0x146 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x686 JUMP JUMPDEST PUSH2 0x1FA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x77A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x795 JUMP JUMPDEST PUSH2 0x146 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A4 JUMP JUMPDEST PUSH2 0x146 PUSH2 0x9CD JUMP JUMPDEST PUSH2 0x146 PUSH2 0xB78 JUMP JUMPDEST PUSH2 0x1FA PUSH2 0xC4E JUMP JUMPDEST PUSH2 0x146 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC54 JUMP JUMPDEST PUSH2 0x146 PUSH2 0xE89 JUMP JUMPDEST PUSH2 0x1FA PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x1FA PUSH2 0xF65 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2E3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2F7 JUMPI INVALID JUMPDEST EQ PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x372 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1146 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x435 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10A1 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0xB40939319CE4AAD757337EDB909235104A5DB50BAD569E463B37E1441780F371 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 PUSH1 0x0 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT PUSH2 0x521 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x3 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xFFD2E76576DCE3794F83AFE36EA9BBB778BA46B7E4C95D032832CA5858568ECB SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x573 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0xE616A7B2221BDB5EBBB119FFC520A3C55372C015F171CBBDF2B923DBDC5BD8E9 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x607 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD DUP2 LT ISZERO PUSH2 0x648 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x110F PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x955882670F7F0D0C27F69140AA26B5B036247F64A181423F02EE40E37422267B SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x72E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6577204D756C7469736967206164647265737320696E76616C69642E000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xC49AB2967E3EB278A95B7304998ED5B0E5D6C090C37F3BA3CABD40AD7CA3B67D SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x7F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x805 JUMPI INVALID JUMPDEST EQ PUSH2 0x841 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x854 JUMPI POP DUP2 JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x89F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x926 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x93A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x950 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x990 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x116A PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x5544E408756A3A50668B8A21FB8C1C15F76575CB77C51FA4DC602167737DC336 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x9E0 JUMPI POP TIMESTAMP PUSH1 0x1 SLOAD GT ISZERO JUMPDEST PUSH2 0xA1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10C3 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xA2F JUMPI INVALID JUMPDEST EQ PUSH2 0xA6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x3 SLOAD DUP3 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x24 DUP7 ADD DUP3 SWAP1 MSTORE SWAP2 MLOAD SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xA9059CBB SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xB3D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x116A PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x68577E4D693C1B056A60BC4E39438810239A0BFE64869C4EB7E3BAEBB5F65634 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xBC5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xBD9 JUMPI INVALID JUMPDEST EQ PUSH2 0xC15 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5B088F927628E8DE338290D95ECD2B47BE7D5CF32F833C4E83139128E9E95B2A SWAP1 PUSH1 0x0 SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xC68 JUMPI INVALID JUMPDEST EQ PUSH2 0xCA4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xCE3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1146 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SLOAD DUP4 SWAP2 SWAP1 PUSH2 0xCFC SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF6B AND JUMP JUMPDEST LT PUSH2 0xD43 JUMPI PUSH1 0x0 SLOAD PUSH1 0x2 SLOAD PUSH2 0xD16 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0xFCC AND JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH32 0x248455798E33B4871DE4258BFAB3FB4B1BC826E576369D72EE7C613E411D262F SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDB0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xE06 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10A1 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE26 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF6B AND JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0xE4A SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF6B AND JUMP JUMPDEST PUSH1 0x0 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x20B3FC91390F6CEBA342F697A9490734680FD3556633F40EFA146F1DBE79D05F SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xED6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xEEA JUMPI INVALID JUMPDEST EQ PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x1295541C130FFCC33980A4C0939FEEFA3DE1F7989FAE02B43176EFA73973DE0D SWAP1 PUSH1 0x0 SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xFC5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFC5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1098 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x105D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1045 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x108A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID SLOAD PUSH16 0x6B656E207472616E7366657220776173 KECCAK256 PUSH15 0x6F74207375636365737366756C2E54 PUSH9 0x652072656C65617365 KECCAK256 PUSH21 0x696D6520686173206E6F7420737461727465642079 PUSH6 0x742E54686520 PUSH4 0x6F6E7472 PUSH2 0x6374 KECCAK256 PUSH10 0x73206E6F7420696E2074 PUSH9 0x652072696768742073 PUSH21 0x6174652E4465706F73697420616C72656164792068 PUSH10 0x67686572207468616E20 PUSH21 0x6865206C696D697420747279696E6720746F206265 KECCAK256 PUSH20 0x65742E416D6F756E74206E6565647320746F2062 PUSH6 0x206269676765 PUSH19 0x207468616E207A65726F2E546F6B656E207472 PUSH2 0x6E73 PUSH7 0x65722077617320 PUSH15 0x6F74207375636365737366756C2E20 NUMBER PUSH9 0x65636B207265636569 PUSH23 0x657220616464726573732E4F6E6C79204D756C74697369 PUSH8 0x2063616E2063616C PUSH13 0x20746869732E00000000A26562 PUSH27 0x7A723158205FF7B36051BFD56345821C0C97D3781D152349394605 0xC1 DUP11 0xC7 SDIV 0xC2 SWAP11 PUSH16 0xF3F6964736F6C634300051100320000 ",
              "sourceMap": "346:9816:20:-;;;4668:415;8:9:-1;5:2;;;30:1;27;20:12;5:2;4668:415:20;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4668:415:20;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4788:18:20;;4780:51;;;;;-1:-1:-1;;;4780:51:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4843:23:20;;4835:61;;;;;-1:-1:-1;;;4835:61:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;4901:3;:18;;-1:-1:-1;;;;;4901:18:20;;;-1:-1:-1;;;;;;4901:18:20;;;;;;;4923:8;:20;;;;;;;;;;;;;4953:34;;4965:10;;4953:34;;4901:3;;4953:34;4992:11;:26;;;;5022:12;:28;-1:-1:-1;;5055:6:20;:24;;-1:-1:-1;;5055:24:20;;;346:9816;;;-1:-1:-1;346:9816:20;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101005760003560e01c806377c5e10e11610097578063dd49756e11610066578063dd49756e14610252578063e1c7392a1461026f578063ecf7085814610277578063f6153ccd1461027f57610100565b806377c5e10e146102145780638d8f2adb1461023a578063b595c1d914610242578063b91d40011461024a57610100565b806327debc0f116100d357806327debc0f146101915780632929c25c146101ae57806347734892146101d45780634783c35b1461020c57610100565b806308dcb3601461010557806309d9287f146101295780630c6ca12914610148578063200d2ed214610165575b600080fd5b61010d610287565b604080516001600160a01b039092168252519081900360200190f35b6101466004803603602081101561013f57600080fd5b5035610296565b005b6101466004803603602081101561015e57600080fd5b5035610526565b61016d6105b1565b6040518082600481111561017d57fe5b60ff16815260200191505060405180910390f35b610146600480360360208110156101a757600080fd5b50356105ba565b610146600480360360208110156101c457600080fd5b50356001600160a01b0316610686565b6101fa600480360360208110156101ea57600080fd5b50356001600160a01b031661077a565b60408051918252519081900360200190f35b61010d610795565b6101466004803603602081101561022a57600080fd5b50356001600160a01b03166107a4565b6101466109cd565b610146610b78565b6101fa610c4e565b6101466004803603602081101561026857600080fd5b5035610c54565b610146610e89565b6101fa610f5f565b6101fa610f65565b6003546001600160a01b031681565b6004546001600160a01b031633146102e3576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b60028060065460ff1660048111156102f757fe5b146103335760405162461bcd60e51b81526004018080602001828103825260278152602001806110e86027913960400191505060405180910390fd5b600082116103725760405162461bcd60e51b81526004018080602001828103825260248152602001806111466024913960400191505060405180910390fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810185905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b1580156103cb57600080fd5b505af11580156103df573d6000803e3d6000fd5b505050506040513d60208110156103f557600080fd5b50519050806104355760405162461bcd60e51b81526004018080602001828103825260228152602001806110a16022913960400191505060405180910390fd5b60408051848152905133917fb40939319ce4aad757337edb909235104a5db50bad569e463b37e1441780f371919081900360200190a2600054600354604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156104b957600080fd5b505afa1580156104cd573d6000803e3d6000fd5b505050506040513d60208110156104e357600080fd5b505110610521576006805460ff191660031790556040517fffd2e76576dce3794f83afe36ea9bbb778ba46b7e4c95d032832ca5858568ecb90600090a15b505050565b6004546001600160a01b03163314610573576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b600181905560408051828152905133917fe616a7b2221bdb5ebbb119ffc520a3c55372c015f171cbbdf2b923dbdc5bd8e9919081900360200190a250565b60065460ff1681565b6004546001600160a01b03163314610607576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b6000548110156106485760405162461bcd60e51b815260040180806020018281038252603781526020018061110f6037913960400191505060405180910390fd5b600281905560408051828152905133917f955882670f7f0d0c27f69140aa26b5b036247f64a181423f02ee40e37422267b919081900360200190a250565b6004546001600160a01b031633146106d3576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b6001600160a01b03811661072e576040805162461bcd60e51b815260206004820152601d60248201527f4e6577204d756c7469736967206164647265737320696e76616c69642e000000604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b03831690811790915560405133907fc49ab2967e3eb278a95b7304998ed5b0e5d6c090c37f3ba3cabd40ad7ca3b67d90600090a350565b6001600160a01b031660009081526005602052604090205490565b6004546001600160a01b031681565b6004546001600160a01b031633146107f1576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b60028060065460ff16600481111561080557fe5b146108415760405162461bcd60e51b81526004018080602001828103825260278152602001806110e86027913960400191505060405180910390fd5b336001600160a01b038316156108545750815b600354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561089f57600080fd5b505afa1580156108b3573d6000803e3d6000fd5b505050506040513d60208110156108c957600080fd5b50516003546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151939450600093919092169163a9059cbb91604480830192602092919082900301818787803b15801561092657600080fd5b505af115801561093a573d6000803e3d6000fd5b505050506040513d602081101561095057600080fd5b50519050806109905760405162461bcd60e51b815260040180806020018281038252603a81526020018061116a603a913960400191505060405180910390fd5b60408051838152905133917f5544e408756a3a50668b8a21fb8c1c15f76575cb77c51fa4dc602167737dc336919081900360200190a25050505050565b600154158015906109e057504260015411155b610a1b5760405162461bcd60e51b81526004018080602001828103825260258152602001806110c36025913960400191505060405180910390fd5b60038060065460ff166004811115610a2f57fe5b14610a6b5760405162461bcd60e51b81526004018080602001828103825260278152602001806110e86027913960400191505060405180910390fd5b336000818152600560209081526040808320805490849055600354825163a9059cbb60e01b8152600481019690965260248601829052915190946001600160a01b039092169263a9059cbb926044808201939182900301818787803b158015610ad357600080fd5b505af1158015610ae7573d6000803e3d6000fd5b505050506040513d6020811015610afd57600080fd5b5051905080610b3d5760405162461bcd60e51b815260040180806020018281038252603a81526020018061116a603a913960400191505060405180910390fd5b60408051838152905133917f68577e4d693c1b056a60bc4e39438810239a0bfe64869c4eb7e3baebb5f65634919081900360200190a2505050565b6004546001600160a01b03163314610bc5576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b60018060065460ff166004811115610bd957fe5b14610c155760405162461bcd60e51b81526004018080602001828103825260278152602001806110e86027913960400191505060405180910390fd5b6006805460ff191660021790556040517f5b088f927628e8de338290d95ecd2b47be7d5cf32f833c4e83139128e9e95b2a90600090a150565b60015481565b60018060065460ff166004811115610c6857fe5b14610ca45760405162461bcd60e51b81526004018080602001828103825260278152602001806110e86027913960400191505060405180910390fd5b60008211610ce35760405162461bcd60e51b81526004018080602001828103825260248152602001806111466024913960400191505060405180910390fd5b600254600054839190610cfc908363ffffffff610f6b16565b10610d4357600054600254610d169163ffffffff610fcc16565b6040519091507f248455798e33b4871de4258bfab3fb4b1bc826e576369d72ee7c613e411d262f90600090a15b600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b158015610d9c57600080fd5b505af1158015610db0573d6000803e3d6000fd5b505050506040513d6020811015610dc657600080fd5b5051905080610e065760405162461bcd60e51b81526004018080602001828103825260228152602001806110a16022913960400191505060405180910390fd5b33600090815260056020526040902054610e26908363ffffffff610f6b16565b3360009081526005602052604081209190915554610e4a908363ffffffff610f6b16565b60005560408051838152905133917f20b3fc91390f6ceba342f697a9490734680fd3556633f40efa146f1dbe79d05f919081900360200190a250505050565b6004546001600160a01b03163314610ed6576040805162461bcd60e51b815260206004820152601c60248201526000805160206111a4833981519152604482015290519081900360640190fd5b60008060065460ff166004811115610eea57fe5b14610f265760405162461bcd60e51b81526004018080602001828103825260278152602001806110e86027913960400191505060405180910390fd5b6006805460ff191660011790556040517f1295541c130ffcc33980a4c0939feefa3de1f7989fae02b43176efa73973de0d90600090a150565b60025481565b60005481565b600082820183811015610fc5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000610fc583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250600081848411156110985760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561105d578181015183820152602001611045565b50505050905090810190601f16801561108a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e5468652072656c656173652074696d6520686173206e6f742073746172746564207965742e54686520636f6e7472616374206973206e6f7420696e207468652072696768742073746174652e4465706f73697420616c726561647920686967686572207468616e20746865206c696d697420747279696e6720746f206265207365742e416d6f756e74206e6565647320746f20626520626967676572207468616e207a65726f2e546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e4f6e6c79204d756c74697369672063616e2063616c6c20746869732e00000000a265627a7a723158205ff7b36051bfd56345821c0c97d3781d152349394605c18ac705c29a6f0f3f6964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x77C5E10E GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDD49756E GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDD49756E EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0xE1C7392A EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0xECF70858 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0xF6153CCD EQ PUSH2 0x27F JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x77C5E10E EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x8D8F2ADB EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0xB595C1D9 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xB91D4001 EQ PUSH2 0x24A JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x27DEBC0F GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x27DEBC0F EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x2929C25C EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x47734892 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x4783C35B EQ PUSH2 0x20C JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x9D9287F EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0xC6CA129 EQ PUSH2 0x148 JUMPI DUP1 PUSH4 0x200D2ED2 EQ PUSH2 0x165 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x287 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x146 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x296 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x146 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x526 JUMP JUMPDEST PUSH2 0x16D PUSH2 0x5B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x17D JUMPI INVALID JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x146 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5BA JUMP JUMPDEST PUSH2 0x146 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x686 JUMP JUMPDEST PUSH2 0x1FA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x77A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x795 JUMP JUMPDEST PUSH2 0x146 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A4 JUMP JUMPDEST PUSH2 0x146 PUSH2 0x9CD JUMP JUMPDEST PUSH2 0x146 PUSH2 0xB78 JUMP JUMPDEST PUSH2 0x1FA PUSH2 0xC4E JUMP JUMPDEST PUSH2 0x146 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC54 JUMP JUMPDEST PUSH2 0x146 PUSH2 0xE89 JUMP JUMPDEST PUSH2 0x1FA PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x1FA PUSH2 0xF65 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2E3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2F7 JUMPI INVALID JUMPDEST EQ PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x372 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1146 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x435 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10A1 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0xB40939319CE4AAD757337EDB909235104A5DB50BAD569E463B37E1441780F371 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 PUSH1 0x0 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT PUSH2 0x521 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x3 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xFFD2E76576DCE3794F83AFE36EA9BBB778BA46B7E4C95D032832CA5858568ECB SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x573 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0xE616A7B2221BDB5EBBB119FFC520A3C55372C015F171CBBDF2B923DBDC5BD8E9 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x607 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD DUP2 LT ISZERO PUSH2 0x648 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x110F PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x955882670F7F0D0C27F69140AA26B5B036247F64A181423F02EE40E37422267B SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x72E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6577204D756C7469736967206164647265737320696E76616C69642E000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xC49AB2967E3EB278A95B7304998ED5B0E5D6C090C37F3BA3CABD40AD7CA3B67D SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x7F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x805 JUMPI INVALID JUMPDEST EQ PUSH2 0x841 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x854 JUMPI POP DUP2 JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x89F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x926 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x93A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x950 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x990 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x116A PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x5544E408756A3A50668B8A21FB8C1C15F76575CB77C51FA4DC602167737DC336 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x9E0 JUMPI POP TIMESTAMP PUSH1 0x1 SLOAD GT ISZERO JUMPDEST PUSH2 0xA1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10C3 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xA2F JUMPI INVALID JUMPDEST EQ PUSH2 0xA6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x3 SLOAD DUP3 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x24 DUP7 ADD DUP3 SWAP1 MSTORE SWAP2 MLOAD SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xA9059CBB SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xB3D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x116A PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x68577E4D693C1B056A60BC4E39438810239A0BFE64869C4EB7E3BAEBB5F65634 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xBC5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xBD9 JUMPI INVALID JUMPDEST EQ PUSH2 0xC15 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5B088F927628E8DE338290D95ECD2B47BE7D5CF32F833C4E83139128E9E95B2A SWAP1 PUSH1 0x0 SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xC68 JUMPI INVALID JUMPDEST EQ PUSH2 0xCA4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xCE3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1146 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SLOAD DUP4 SWAP2 SWAP1 PUSH2 0xCFC SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF6B AND JUMP JUMPDEST LT PUSH2 0xD43 JUMPI PUSH1 0x0 SLOAD PUSH1 0x2 SLOAD PUSH2 0xD16 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0xFCC AND JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH32 0x248455798E33B4871DE4258BFAB3FB4B1BC826E576369D72EE7C613E411D262F SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDB0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xE06 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10A1 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE26 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF6B AND JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0xE4A SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xF6B AND JUMP JUMPDEST PUSH1 0x0 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x20B3FC91390F6CEBA342F697A9490734680FD3556633F40EFA146F1DBE79D05F SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xED6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x11A4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xEEA JUMPI INVALID JUMPDEST EQ PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x1295541C130FFCC33980A4C0939FEEFA3DE1F7989FAE02B43176EFA73973DE0D SWAP1 PUSH1 0x0 SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xFC5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFC5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1098 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x105D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1045 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x108A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID SLOAD PUSH16 0x6B656E207472616E7366657220776173 KECCAK256 PUSH15 0x6F74207375636365737366756C2E54 PUSH9 0x652072656C65617365 KECCAK256 PUSH21 0x696D6520686173206E6F7420737461727465642079 PUSH6 0x742E54686520 PUSH4 0x6F6E7472 PUSH2 0x6374 KECCAK256 PUSH10 0x73206E6F7420696E2074 PUSH9 0x652072696768742073 PUSH21 0x6174652E4465706F73697420616C72656164792068 PUSH10 0x67686572207468616E20 PUSH21 0x6865206C696D697420747279696E6720746F206265 KECCAK256 PUSH20 0x65742E416D6F756E74206E6565647320746F2062 PUSH6 0x206269676765 PUSH19 0x207468616E207A65726F2E546F6B656E207472 PUSH2 0x6E73 PUSH7 0x65722077617320 PUSH15 0x6F74207375636365737366756C2E20 NUMBER PUSH9 0x65636B207265636569 PUSH23 0x657220616464726573732E4F6E6C79204D756C74697369 PUSH8 0x2063616E2063616C PUSH13 0x20746869732E00000000A26562 PUSH27 0x7A723158205FF7B36051BFD56345821C0C97D3781D152349394605 0xC1 DUP11 0xC7 SDIV 0xC2 SWAP11 PUSH16 0xF3F6964736F6C634300051100320000 ",
              "sourceMap": "346:9816:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;346:9816:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;799:17;;;:::i;:::-;;;;-1:-1:-1;;;;;799:17:20;;;;;;;;;;;;;;8927:474;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8927:474:20;;:::i;:::-;;5929:174;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5929:174:20;;:::i;1412:20::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6265:283;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6265:283:20;;:::i;5504:219::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5504:219:20;-1:-1:-1;;;;;5504:219:20;;:::i;10047:113::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10047:113:20;-1:-1:-1;;;;;10047:113:20;;:::i;:::-;;;;;;;;;;;;;;;;879:23;;;:::i;8085:515::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8085:515:20;-1:-1:-1;;;;;8085:515:20;;:::i;9530:334::-;;;:::i;7655:145::-;;;:::i;628:26::-;;;:::i;6837:588::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6837:588:20;;:::i;5273:125::-;;;:::i;731:27::-;;;:::i;537:::-;;;:::i;799:17::-;;;-1:-1:-1;;;;;799:17:20;;:::o;8927:474::-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;9011:14;;4159:6;;;;:11;;;;;;;;;4151:63;;;;-1:-1:-1;;;4151:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9049:1;9039:7;:11;9031:60;;;;-1:-1:-1;;;9031:60:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9112:3;;:52;;;-1:-1:-1;;;9112:52:20;;9129:10;9112:52;;;;9149:4;9112:52;;;;;;;;;;;;9096:13;;-1:-1:-1;;;;;9112:3:20;;:16;;:52;;;;;;;;;;;;;;9096:13;9112:3;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;9112:52:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9112:52:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9112:52:20;;-1:-1:-1;9112:52:20;9168:55;;;;-1:-1:-1;;;9168:55:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9233:43;;;;;;;;9256:10;;9233:43;;;;;;;;;;9317:12;;9285:3;;:28;;;-1:-1:-1;;;9285:28:20;;9307:4;9285:28;;;;;;-1:-1:-1;;;;;9285:3:20;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;9285:28:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9285:28:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9285:28:20;:44;9281:117;;9336:6;:24;;-1:-1:-1;;9336:24:20;9345:15;9336:24;;;9370:23;;;;-1:-1:-1;;9370:23:20;9281:117;4218:1;4108;8927:474;:::o;5929:174::-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;6012:11;:29;;;6051:48;;;;;;;;6071:10;;6051:48;;;;;;;;;;5929:174;:::o;1412:20::-;;;;;;:::o;6265:283::-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;6373:12;;6353:16;:32;;6345:100;;;;-1:-1:-1;;;6345:100:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6449:12;:31;;;6490:54;;;;;;;;6515:10;;6490:54;;;;;;;;;;6265:283;:::o;5504:219::-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;5584:26:20;;5576:68;;;;;-1:-1:-1;;;5576:68:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;5649:8;:23;;-1:-1:-1;;;;;;5649:23:20;-1:-1:-1;;;;;5649:23:20;;;;;;;;5682:37;;5694:10;;5682:37;;-1:-1:-1;;5682:37:20;5504:219;:::o;10047:113::-;-1:-1:-1;;;;;10137:19:20;10109:15;10137:19;;;:12;:19;;;;;;;10047:113::o;879:23::-;;;-1:-1:-1;;;;;879:23:20;;:::o;8085:515::-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;8179:14;;4159:6;;;;:11;;;;;;;;;4151:63;;;;-1:-1:-1;;;4151:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8225:10;-1:-1:-1;;;;;8243:30:20;;;8239:80;;-1:-1:-1;8298:16:20;8239:80;8339:3;;:28;;;-1:-1:-1;;;8339:28:20;;8361:4;8339:28;;;;;;8323:13;;-1:-1:-1;;;;;8339:3:20;;:13;;:28;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;8339:28:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8339:28:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8339:28:20;8425:3;;:36;;;-1:-1:-1;;;8425:36:20;;-1:-1:-1;;;;;8425:36:20;;;;;;;;;;;;;;;8339:28;;-1:-1:-1;8409:13:20;;8425:3;;;;;:12;;:36;;;;;8339:28;;8425:36;;;;;;;8409:13;8425:3;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;8425:36:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8425:36:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8425:36:20;;-1:-1:-1;8425:36:20;8465:79;;;;-1:-1:-1;;;8465:79:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8554:42;;;;;;;;8578:10;;8554:42;;;;;;;;;;4218:1;;;4108;8085:515;:::o;9530:334::-;4262:11;;:16;;;;:50;;;4297:15;4282:11;;:30;;4262:50;4254:100;;;;-1:-1:-1;;;4254:100:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9588:15;;4159:6;;;;:11;;;;;;;;;4151:63;;;;-1:-1:-1;;;4151:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9639:10;9609:14;9626:24;;;:12;:24;;;;;;;;;;9654:28;;;;9702:3;;:32;;-1:-1:-1;;;9702:32:20;;;;;;;;;;;;;;;;;9626:24;;-1:-1:-1;;;;;9702:3:20;;;;:12;;:32;;;;;;;;;;;9609:14;9702:3;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;9702:32:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9702:32:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9702:32:20;;-1:-1:-1;9702:32:20;9738:79;;;;-1:-1:-1;;;9738:79:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9827:33;;;;;;;;9841:10;;9827:33;;;;;;;;;;4218:1;;4358;9530:334::o;7655:145::-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;7721:14;;4159:6;;;;:11;;;;;;;;;4151:63;;;;-1:-1:-1;;;4151:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7741:6;:23;;-1:-1:-1;;7741:23:20;7750:14;7741:23;;;7774:22;;;;-1:-1:-1;;7774:22:20;4108:1;7655:145::o;628:26::-;;;;:::o;6837:588::-;6898:14;;4159:6;;;;:11;;;;;;;;;4151:63;;;;-1:-1:-1;;;4151:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6936:1;6926:7;:11;6918:60;;;;-1:-1:-1;;;6918:60:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7044:12;;6982:14;7015:12;6999:7;;7044:12;7015:25;;6999:7;7015:25;:16;:25;:::i;:::-;:41;7011:127;;7089:12;;7072;;:30;;;:16;:30;:::i;:::-;7112:21;;7063:39;;-1:-1:-1;7112:21:20;;;;;7011:127;7158:3;;:51;;;-1:-1:-1;;;7158:51:20;;7175:10;7158:51;;;;7195:4;7158:51;;;;;;;;;;;;7142:13;;-1:-1:-1;;;;;7158:3:20;;:16;;:51;;;;;;;;;;;;;;7142:13;7158:3;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;7158:51:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7158:51:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7158:51:20;;-1:-1:-1;7158:51:20;7213:55;;;;-1:-1:-1;;;7213:55:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7313:10;7300:24;;;;:12;:24;;;;;;:36;;7329:6;7300:36;:28;:36;:::i;:::-;7286:10;7273:24;;;;:12;:24;;;;;:63;;;;7355:12;:24;;7372:6;7355:24;:16;:24;:::i;:::-;7340:12;:39;7389:32;;;;;;;;7402:10;;7389:32;;;;;;;;;;4218:1;;6837:588;;:::o;5273:125::-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;5323:15;;4159:6;;;;:11;;;;;;;;;4151:63;;;;-1:-1:-1;;;4151:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5344:6;:23;;-1:-1:-1;;5344:23:20;5353:14;5344:23;;;5377:17;;;;-1:-1:-1;;5377:17:20;4108:1;5273:125::o;731:27::-;;;;:::o;537:::-;;;;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;1201:125::-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "changeStateToHolding()": "b595c1d9",
              "depositLimit()": "ecf70858",
              "depositTokens(uint256)": "dd49756e",
              "depositTokensByMultisig(uint256)": "09d9287f",
              "getUserBalance(address)": "47734892",
              "init()": "e1c7392a",
              "multisig()": "4783c35b",
              "releaseTime()": "b91d4001",
              "status()": "200d2ed2",
              "totalDeposit()": "f6153ccd",
              "updateDepositLimit(uint256)": "27debc0f",
              "updateMultisig(address)": "2929c25c",
              "updateReleaseTimestamp(uint256)": "0c6ca129",
              "withdrawTokens()": "8d8f2adb",
              "withdrawTokensByMultisig(address)": "77c5e10e"
            }
          },
          "userdoc": {
            "methods": {
              "changeStateToHolding()": {
                "notice": "Update contract state to Holding."
              },
              "constructor": "Setup the required parameters.",
              "depositTokens(uint256)": {
                "notice": "Deposit tokens to this contract by User."
              },
              "depositTokensByMultisig(uint256)": {
                "notice": "Deposit tokens to this contract by the Multisig."
              },
              "getUserBalance(address)": {
                "notice": "Function to read the current token balance of a particular user."
              },
              "init()": {
                "notice": "This function is called once after deployment for starting the deposit action."
              },
              "updateDepositLimit(uint256)": {
                "notice": "Update Deposit Limit."
              },
              "updateMultisig(address)": {
                "notice": "Update Multisig."
              },
              "updateReleaseTimestamp(uint256)": {
                "notice": "Update Release Timestamp."
              },
              "withdrawTokens()": {
                "notice": "Withdraws token from the contract by User."
              },
              "withdrawTokensByMultisig(address)": {
                "notice": "Withdraws all token from the contract by Multisig."
              }
            },
            "notice": "You can use this contract for deposit of SOV tokens for some time and withdraw later."
          }
        }
      },
      "contracts/escrow/EscrowReward.sol": {
        "EscrowReward": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_lockedSOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_multisig",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_releaseTime",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_depositLimit",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "DepositLimitReached",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "EscrowActivated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "EscrowFundExpired",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "EscrowInHoldingState",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "EscrowInWithdrawState",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_lockedSOV",
                  "type": "address"
                }
              ],
              "name": "LockedSOVUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newMultisig",
                  "type": "address"
                }
              ],
              "name": "NewMultisig",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "RewardDepositByMultisig",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "RewardTokenWithdraw",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenDepositByMultisig",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_depositLimit",
                  "type": "uint256"
                }
              ],
              "name": "TokenDepositLimitUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_releaseTimestamp",
                  "type": "uint256"
                }
              ],
              "name": "TokenReleaseUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenWithdraw",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenWithdrawByMultisig",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "changeStateToHolding",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "depositLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "depositRewardByMultisig",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "depositTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "depositTokensByMultisig",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_addr",
                  "type": "address"
                }
              ],
              "name": "getReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "reward",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_addr",
                  "type": "address"
                }
              ],
              "name": "getUserBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "init",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOV",
              "outputs": [
                {
                  "internalType": "contract ILockedSOV",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "multisig",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "releaseTime",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "status",
              "outputs": [
                {
                  "internalType": "enum Escrow.Status",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalRewardDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_newDepositLimit",
                  "type": "uint256"
                }
              ],
              "name": "updateDepositLimit",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_lockedSOV",
                  "type": "address"
                }
              ],
              "name": "updateLockedSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newMultisig",
                  "type": "address"
                }
              ],
              "name": "updateMultisig",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_newReleaseTime",
                  "type": "uint256"
                }
              ],
              "name": "updateReleaseTimestamp",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "withdrawTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "withdrawTokensAndReward",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiverAddress",
                  "type": "address"
                }
              ],
              "name": "withdrawTokensByMultisig",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Franklin Richards - powerhousefrank@protonmail.com",
            "methods": {
              "changeStateToHolding()": {
                "details": "Once called, the contract no longer accepts any more deposits. The multisig can now withdraw tokens from the contract after the contract is in Holding State."
              },
              "constructor": {
                "params": {
                  "_SOV": "The SOV token address.",
                  "_depositLimit": "The amount of tokens we will be accepting.",
                  "_lockedSOV": "The Locked SOV Contract address.",
                  "_multisig": "The owner of the tokens & contract.",
                  "_releaseTime": "The token release time, zero if undecided."
                }
              },
              "depositRewardByMultisig(uint256)": {
                "details": "The contract has to be approved by the multisig inorder for this function to work.",
                "params": {
                  "_amount": "the amount of tokens deposited."
                }
              },
              "depositTokens(uint256)": {
                "details": "The contract has to be approved by the user inorder for this function to work. These tokens can be withdrawn/transferred during Holding State by the Multisig.",
                "params": {
                  "_amount": "the amount of tokens deposited."
                }
              },
              "depositTokensByMultisig(uint256)": {
                "details": "The contract has to be approved by the multisig inorder for this function to work. Once the token deposit is higher than the total deposits done, the contract state is changed to Withdraw.",
                "params": {
                  "_amount": "the amount of tokens deposited."
                }
              },
              "getReward(address)": {
                "params": {
                  "_addr": "The address of the user whose reward is to be read."
                },
                "return": "reward The reward received by the user."
              },
              "getUserBalance(address)": {
                "return": "_addr The user address whose balance has to be checked."
              },
              "init()": {
                "details": "Without calling this function, the contract will not start accepting tokens."
              },
              "updateDepositLimit(uint256)": {
                "details": "IMPORTANT: Should not decrease than already deposited.",
                "params": {
                  "_newDepositLimit": "The new deposit limit."
                }
              },
              "updateLockedSOV(address)": {
                "params": {
                  "_lockedSOV": "The Locked SOV Contract address."
                }
              },
              "updateMultisig(address)": {
                "params": {
                  "_newMultisig": "The new owner of the tokens & contract."
                }
              },
              "updateReleaseTimestamp(uint256)": {
                "details": "Zero is also a valid timestamp, if the release time is not scheduled yet.",
                "params": {
                  "_newReleaseTime": "The new release timestamp for token release."
                }
              },
              "withdrawTokens()": {
                "details": "Only works after the contract state is in Withdraw."
              },
              "withdrawTokensAndReward()": {
                "details": "Only works after the contract state is in Withdraw."
              },
              "withdrawTokensByMultisig(address)": {
                "details": "Can only be called after the token state is changed to Holding.",
                "params": {
                  "_receiverAddress": "The address where the tokens has to be transferred. Zero address if the withdraw is to be done in Multisig."
                }
              }
            },
            "title": "A reward distribution contract for Sovryn Ethereum Pool Escrow Contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50604051611bb0380380611bb0833981810160405260a081101561003357600080fd5b50805160208201516040830151606084015160809094015192939192909190838383836001600160a01b0384166100b1576040805162461bcd60e51b815260206004820152601460248201527f496e76616c696420534f5620416464726573732e000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03831661010c576040805162461bcd60e51b815260206004820152601960248201527f496e76616c6964204d756c746973696720416464726573732e00000000000000604482015290519081900360640190fd5b600380546001600160a01b038087166001600160a01b03199283161790925560048054928616929091168217905560405133907fc49ab2967e3eb278a95b7304998ed5b0e5d6c090c37f3ba3cabd40ad7ca3b67d90600090a360019190915560025550506006805460ff191690556001600160a01b038516156101a557600880546001600160a01b0319166001600160a01b0387161790555b50505050506119f7806101b96000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806377c5e10e116100b8578063c00007b01161007c578063c00007b0146102e7578063dd49756e1461030d578063e1c7392a1461032a578063ecf7085814610332578063f2f46b3b1461033a578063f6153ccd1461034257610142565b806377c5e10e146102a15780638d8f2adb146102c7578063b595c1d9146102cf578063b91d4001146102d7578063b92fd178146102df57610142565b806327debc0f1161010a57806327debc0f146101f95780632929c25c14610216578063309481e41461023c57806347734892146102445780634783c35b1461027c57806363683e5b1461028457610142565b80630570a9ed1461014757806308dcb3601461016f57806309d9287f146101935780630c6ca129146101b0578063200d2ed2146101cd575b600080fd5b61016d6004803603602081101561015d57600080fd5b50356001600160a01b031661034a565b005b61017761043e565b604080516001600160a01b039092168252519081900360200190f35b61016d600480360360208110156101a957600080fd5b503561044d565b61016d600480360360208110156101c657600080fd5b50356106dd565b6101d5610768565b604051808260048111156101e557fe5b60ff16815260200191505060405180910390f35b61016d6004803603602081101561020f57600080fd5b5035610771565b61016d6004803603602081101561022c57600080fd5b50356001600160a01b031661083d565b61016d610931565b61026a6004803603602081101561025a57600080fd5b50356001600160a01b0316610ab3565b60408051918252519081900360200190f35b610177610ad2565b61016d6004803603602081101561029a57600080fd5b5035610ae1565b61016d600480360360208110156102b757600080fd5b50356001600160a01b0316610d93565b61016d610fbc565b61016d611167565b61026a61123d565b61026a611243565b61026a600480360360208110156102fd57600080fd5b50356001600160a01b0316611249565b61016d6004803603602081101561032357600080fd5b50356112bb565b61016d6114f0565b61026a6115c6565b6101776115cc565b61026a6115db565b6004546001600160a01b03163314610397576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b6001600160a01b0381166103f2576040805162461bcd60e51b815260206004820152601d60248201527f496e76616c69642052657761726420546f6b656e20416464726573732e000000604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b03831690811790915560405133907f2e1c61b104d80d0244d7aa46590a2e67c165723a6e43fcb389731dd090e324d490600090a350565b6003546001600160a01b031681565b6004546001600160a01b0316331461049a576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60028060065460ff1660048111156104ae57fe5b146104ea5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b600082116105295760405162461bcd60e51b81526004018080602001828103825260248152602001806119046024913960400191505060405180910390fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810185905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b15801561058257600080fd5b505af1158015610596573d6000803e3d6000fd5b505050506040513d60208110156105ac57600080fd5b50519050806105ec5760405162461bcd60e51b815260040180806020018281038252602281526020018061181c6022913960400191505060405180910390fd5b60408051848152905133917fb40939319ce4aad757337edb909235104a5db50bad569e463b37e1441780f371919081900360200190a2600054600354604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561067057600080fd5b505afa158015610684573d6000803e3d6000fd5b505050506040513d602081101561069a57600080fd5b5051106106d8576006805460ff191660031790556040517fffd2e76576dce3794f83afe36ea9bbb778ba46b7e4c95d032832ca5858568ecb90600090a15b505050565b6004546001600160a01b0316331461072a576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b600181905560408051828152905133917fe616a7b2221bdb5ebbb119ffc520a3c55372c015f171cbbdf2b923dbdc5bd8e9919081900360200190a250565b60065460ff1681565b6004546001600160a01b031633146107be576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b6000548110156107ff5760405162461bcd60e51b815260040180806020018281038252603781526020018061188a6037913960400191505060405180910390fd5b600281905560408051828152905133917f955882670f7f0d0c27f69140aa26b5b036247f64a181423f02ee40e37422267b919081900360200190a250565b6004546001600160a01b0316331461088a576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b6001600160a01b0381166108e5576040805162461bcd60e51b815260206004820152601d60248201527f4e6577204d756c7469736967206164647265737320696e76616c69642e000000604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b03831690811790915560405133907fc49ab2967e3eb278a95b7304998ed5b0e5d6c090c37f3ba3cabd40ad7ca3b67d90600090a350565b6001541580159061094457504260015411155b61097f5760405162461bcd60e51b815260040180806020018281038252602581526020018061183e6025913960400191505060405180910390fd5b60038060065460ff16600481111561099357fe5b146109cf5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6000805460075433835260056020526040832054610a0492916109f8919063ffffffff6115e116565b9063ffffffff61164116565b9050610a0e610fbc565b6008546040805163f33bf9a160e01b81523360048201526024810184905290516001600160a01b039092169163f33bf9a19160448082019260009290919082900301818387803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b50506040805184815290513393507f278428ce6b15e876f936987c0935aca544a92b62407b9be13fec411694abbf2792509081900360200190a25050565b6001600160a01b0381166000908152600560205260409020545b919050565b6004546001600160a01b031681565b6004546001600160a01b03163314610b2e576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b600360065460ff166004811115610b4157fe5b1415610b7e5760405162461bcd60e51b81526004018080602001828103825260418152602001806119826041913960600191505060405180910390fd5b60008111610bbd5760405162461bcd60e51b81526004018080602001828103825260248152602001806119046024913960400191505060405180910390fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b158015610c1657600080fd5b505af1158015610c2a573d6000803e3d6000fd5b505050506040513d6020811015610c4057600080fd5b5051905080610c805760405162461bcd60e51b815260040180806020018281038252602281526020018061181c6022913960400191505060405180910390fd5b600754610c93908363ffffffff61168316565b60078190556003546008546040805163095ea7b360e01b81526001600160a01b03928316600482015260248101949094525191169163095ea7b39160448083019260209291908290030181600087803b158015610cef57600080fd5b505af1158015610d03573d6000803e3d6000fd5b505050506040513d6020811015610d1957600080fd5b5051905080610d595760405162461bcd60e51b81526004018080602001828103825260228152602001806118c16022913960400191505060405180910390fd5b60408051838152905133917f9a9344d822c6480033db9b9da83bffd3abf8d38bae52c1d5085c47da18a52f71919081900360200190a25050565b6004546001600160a01b03163314610de0576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60028060065460ff166004811115610df457fe5b14610e305760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b336001600160a01b03831615610e435750815b600354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d6020811015610eb857600080fd5b50516003546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151939450600093919092169163a9059cbb91604480830192602092919082900301818787803b158015610f1557600080fd5b505af1158015610f29573d6000803e3d6000fd5b505050506040513d6020811015610f3f57600080fd5b5051905080610f7f5760405162461bcd60e51b815260040180806020018281038252603a815260200180611928603a913960400191505060405180910390fd5b60408051838152905133917f5544e408756a3a50668b8a21fb8c1c15f76575cb77c51fa4dc602167737dc336919081900360200190a25050505050565b60015415801590610fcf57504260015411155b61100a5760405162461bcd60e51b815260040180806020018281038252602581526020018061183e6025913960400191505060405180910390fd5b60038060065460ff16600481111561101e57fe5b1461105a5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b336000818152600560209081526040808320805490849055600354825163a9059cbb60e01b8152600481019690965260248601829052915190946001600160a01b039092169263a9059cbb926044808201939182900301818787803b1580156110c257600080fd5b505af11580156110d6573d6000803e3d6000fd5b505050506040513d60208110156110ec57600080fd5b505190508061112c5760405162461bcd60e51b815260040180806020018281038252603a815260200180611928603a913960400191505060405180910390fd5b60408051838152905133917f68577e4d693c1b056a60bc4e39438810239a0bfe64869c4eb7e3baebb5f65634919081900360200190a2505050565b6004546001600160a01b031633146111b4576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60018060065460ff1660048111156111c857fe5b146112045760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6006805460ff191660021790556040517f5b088f927628e8de338290d95ecd2b47be7d5cf32f833c4e83139128e9e95b2a90600090a150565b60015481565b60075481565b6007546001600160a01b0382166000908152600560205260408120549091611277919063ffffffff6115e116565b61128357506000610acd565b600080546007546001600160a01b038516835260056020526040909220546112b5926109f8919063ffffffff6115e116565b92915050565b60018060065460ff1660048111156112cf57fe5b1461130b5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6000821161134a5760405162461bcd60e51b81526004018080602001828103825260248152602001806119046024913960400191505060405180910390fd5b600254600054839190611363908363ffffffff61168316565b106113aa5760005460025461137d9163ffffffff6116dd16565b6040519091507f248455798e33b4871de4258bfab3fb4b1bc826e576369d72ee7c613e411d262f90600090a15b600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b15801561140357600080fd5b505af1158015611417573d6000803e3d6000fd5b505050506040513d602081101561142d57600080fd5b505190508061146d5760405162461bcd60e51b815260040180806020018281038252602281526020018061181c6022913960400191505060405180910390fd5b3360009081526005602052604090205461148d908363ffffffff61168316565b33600090815260056020526040812091909155546114b1908363ffffffff61168316565b60005560408051838152905133917f20b3fc91390f6ceba342f697a9490734680fd3556633f40efa146f1dbe79d05f919081900360200190a250505050565b6004546001600160a01b0316331461153d576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60008060065460ff16600481111561155157fe5b1461158d5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6006805460ff191660011790556040517f1295541c130ffcc33980a4c0939feefa3de1f7989fae02b43176efa73973de0d90600090a150565b60025481565b6008546001600160a01b031681565b60005481565b6000826115f0575060006112b5565b828202828482816115fd57fe5b041461163a5760405162461bcd60e51b81526004018080602001828103825260218152602001806118e36021913960400191505060405180910390fd5b9392505050565b600061163a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061171f565b60008282018381101561163a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061163a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117c1565b600081836117ab5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611770578181015183820152602001611758565b50505050905090810190601f16801561179d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816117b757fe5b0495945050505050565b600081848411156118135760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611770578181015183820152602001611758565b50505090039056fe546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e5468652072656c656173652074696d6520686173206e6f742073746172746564207965742e54686520636f6e7472616374206973206e6f7420696e207468652072696768742073746174652e4465706f73697420616c726561647920686967686572207468616e20746865206c696d697420747279696e6720746f206265207365742e546f6b656e20417070726f76616c20776173206e6f74207375636365737366756c2e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77416d6f756e74206e6565647320746f20626520626967676572207468616e207a65726f2e546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e4f6e6c79204d756c74697369672063616e2063616c6c20746869732e0000000052657761726420546f6b656e206465706f736974206973206f6e6c7920616c6c6f776564206265666f72652055736572205769746864726177207374617274732ea265627a7a723158209898e33dc245e024411a10f565afd5b091b995840a3766026193343e89ed2f2e64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1BB0 CODESIZE SUB DUP1 PUSH2 0x1BB0 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP4 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xB1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420534F5620416464726573732E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x10C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964204D756C746973696720416464726573732E00000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP2 AND DUP3 OR SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xC49AB2967E3EB278A95B7304998ED5B0E5D6C090C37F3BA3CABD40AD7CA3B67D SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 SSTORE POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x1A5 JUMPI PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP PUSH2 0x19F7 DUP1 PUSH2 0x1B9 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x77C5E10E GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xC00007B0 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xC00007B0 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xDD49756E EQ PUSH2 0x30D JUMPI DUP1 PUSH4 0xE1C7392A EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0xECF70858 EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0xF6153CCD EQ PUSH2 0x342 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x77C5E10E EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0x8D8F2ADB EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xB595C1D9 EQ PUSH2 0x2CF JUMPI DUP1 PUSH4 0xB91D4001 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0xB92FD178 EQ PUSH2 0x2DF JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x27DEBC0F GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x27DEBC0F EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x2929C25C EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x309481E4 EQ PUSH2 0x23C JUMPI DUP1 PUSH4 0x47734892 EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x4783C35B EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x63683E5B EQ PUSH2 0x284 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x570A9ED EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x9D9287F EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0xC6CA129 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x200D2ED2 EQ PUSH2 0x1CD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x34A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x177 PUSH2 0x43E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x44D JUMP JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6DD JUMP JUMPDEST PUSH2 0x1D5 PUSH2 0x768 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1E5 JUMPI INVALID JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x771 JUMP JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x83D JUMP JUMPDEST PUSH2 0x16D PUSH2 0x931 JUMP JUMPDEST PUSH2 0x26A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAB3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x177 PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD93 JUMP JUMPDEST PUSH2 0x16D PUSH2 0xFBC JUMP JUMPDEST PUSH2 0x16D PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x26A PUSH2 0x123D JUMP JUMPDEST PUSH2 0x26A PUSH2 0x1243 JUMP JUMPDEST PUSH2 0x26A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1249 JUMP JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x12BB JUMP JUMPDEST PUSH2 0x16D PUSH2 0x14F0 JUMP JUMPDEST PUSH2 0x26A PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x15CC JUMP JUMPDEST PUSH2 0x26A PUSH2 0x15DB JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x397 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C69642052657761726420546F6B656E20416464726573732E000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x2E1C61B104D80D0244D7AA46590A2E67C165723A6E43FCB389731DD090E324D4 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x49A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x4AE JUMPI INVALID JUMPDEST EQ PUSH2 0x4EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x529 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1904 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x582 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x596 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x5EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x181C PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0xB40939319CE4AAD757337EDB909235104A5DB50BAD569E463B37E1441780F371 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 PUSH1 0x0 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x684 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT PUSH2 0x6D8 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x3 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xFFD2E76576DCE3794F83AFE36EA9BBB778BA46B7E4C95D032832CA5858568ECB SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x72A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0xE616A7B2221BDB5EBBB119FFC520A3C55372C015F171CBBDF2B923DBDC5BD8E9 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x7BE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD DUP2 LT ISZERO PUSH2 0x7FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x188A PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x955882670F7F0D0C27F69140AA26B5B036247F64A181423F02EE40E37422267B SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x88A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x8E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6577204D756C7469736967206164647265737320696E76616C69642E000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xC49AB2967E3EB278A95B7304998ED5B0E5D6C090C37F3BA3CABD40AD7CA3B67D SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x1 SLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x944 JUMPI POP TIMESTAMP PUSH1 0x1 SLOAD GT ISZERO JUMPDEST PUSH2 0x97F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x183E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x993 JUMPI INVALID JUMPDEST EQ PUSH2 0x9CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x7 SLOAD CALLER DUP4 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD PUSH2 0xA04 SWAP3 SWAP2 PUSH2 0x9F8 SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x15E1 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1641 AND JUMP JUMPDEST SWAP1 POP PUSH2 0xA0E PUSH2 0xFBC JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xF33BF9A1 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF33BF9A1 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP4 POP PUSH32 0x278428CE6B15E876F936987C0935ACA544A92B62407B9BE13FEC411694ABBF27 SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xB2E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xB41 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xB7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x41 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1982 PUSH1 0x41 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xBBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1904 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC2A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xC80 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x181C PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH2 0xC93 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1683 AND JUMP JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x3 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE MLOAD SWAP2 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xD59 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18C1 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x9A9344D822C6480033DB9B9DA83BFFD3ABF8D38BAE52C1D5085C47DA18A52F71 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xDE0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xDF4 JUMPI INVALID JUMPDEST EQ PUSH2 0xE30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xE43 JUMPI POP DUP2 JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF29 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1928 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x5544E408756A3A50668B8A21FB8C1C15F76575CB77C51FA4DC602167737DC336 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0xFCF JUMPI POP TIMESTAMP PUSH1 0x1 SLOAD GT ISZERO JUMPDEST PUSH2 0x100A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x183E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x101E JUMPI INVALID JUMPDEST EQ PUSH2 0x105A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x3 SLOAD DUP3 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x24 DUP7 ADD DUP3 SWAP1 MSTORE SWAP2 MLOAD SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xA9059CBB SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x112C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1928 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x68577E4D693C1B056A60BC4E39438810239A0BFE64869C4EB7E3BAEBB5F65634 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x11B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x11C8 JUMPI INVALID JUMPDEST EQ PUSH2 0x1204 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5B088F927628E8DE338290D95ECD2B47BE7D5CF32F833C4E83139128E9E95B2A SWAP1 PUSH1 0x0 SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x1277 SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x15E1 AND JUMP JUMPDEST PUSH2 0x1283 JUMPI POP PUSH1 0x0 PUSH2 0xACD JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP4 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH2 0x12B5 SWAP3 PUSH2 0x9F8 SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x15E1 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x12CF JUMPI INVALID JUMPDEST EQ PUSH2 0x130B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x134A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1904 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SLOAD DUP4 SWAP2 SWAP1 PUSH2 0x1363 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1683 AND JUMP JUMPDEST LT PUSH2 0x13AA JUMPI PUSH1 0x0 SLOAD PUSH1 0x2 SLOAD PUSH2 0x137D SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x16DD AND JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH32 0x248455798E33B4871DE4258BFAB3FB4B1BC826E576369D72EE7C613E411D262F SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1417 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x142D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x146D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x181C PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x148D SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1683 AND JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x14B1 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1683 AND JUMP JUMPDEST PUSH1 0x0 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x20B3FC91390F6CEBA342F697A9490734680FD3556633F40EFA146F1DBE79D05F SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x153D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1551 JUMPI INVALID JUMPDEST EQ PUSH2 0x158D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x1295541C130FFCC33980A4C0939FEEFA3DE1F7989FAE02B43176EFA73973DE0D SWAP1 PUSH1 0x0 SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x15F0 JUMPI POP PUSH1 0x0 PUSH2 0x12B5 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x15FD JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x163A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18E3 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x171F JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x163A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x163A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x17C1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x17AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1770 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1758 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x179D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x17B7 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1813 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1770 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1758 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID SLOAD PUSH16 0x6B656E207472616E7366657220776173 KECCAK256 PUSH15 0x6F74207375636365737366756C2E54 PUSH9 0x652072656C65617365 KECCAK256 PUSH21 0x696D6520686173206E6F7420737461727465642079 PUSH6 0x742E54686520 PUSH4 0x6F6E7472 PUSH2 0x6374 KECCAK256 PUSH10 0x73206E6F7420696E2074 PUSH9 0x652072696768742073 PUSH21 0x6174652E4465706F73697420616C72656164792068 PUSH10 0x67686572207468616E20 PUSH21 0x6865206C696D697420747279696E6720746F206265 KECCAK256 PUSH20 0x65742E546F6B656E20417070726F76616C207761 PUSH20 0x206E6F74207375636365737366756C2E53616665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77416D6F756E74206E65 PUSH6 0x647320746F20 PUSH3 0x652062 PUSH10 0x67676572207468616E20 PUSH27 0x65726F2E546F6B656E207472616E7366657220776173206E6F7420 PUSH20 0x75636365737366756C2E20436865636B20726563 PUSH6 0x697665722061 PUSH5 0x6472657373 0x2E 0x4F PUSH15 0x6C79204D756C74697369672063616E KECCAK256 PUSH4 0x616C6C20 PUSH21 0x6869732E0000000052657761726420546F6B656E20 PUSH5 0x65706F7369 PUSH21 0x206973206F6E6C7920616C6C6F776564206265666F PUSH19 0x65205573657220576974686472617720737461 PUSH19 0x74732EA265627A7A723158209898E33DC245E0 0x24 COINBASE BYTE LT CREATE2 PUSH6 0xAFD5B091B995 DUP5 EXP CALLDATACOPY PUSH7 0x26193343E89ED 0x2F 0x2E PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "349:4023:21:-;;;1883:264;8:9:-1;5:2;;;30:1;27;20:12;5:2;1883:264:21;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1883:264:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4788:18:20;;4780:51;;;;;-1:-1:-1;;;4780:51:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4843:23:20;;4835:61;;;;;-1:-1:-1;;;4835:61:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;4901:3;:18;;-1:-1:-1;;;;;4901:18:20;;;-1:-1:-1;;;;;;4901:18:20;;;;;;;4923:8;:20;;;;;;;;;;;;;4953:34;;4965:10;;4953:34;;4901:3;;4953:34;4992:11;:26;;;;5022:12;:28;-1:-1:-1;;5055:6:20;:24;;-1:-1:-1;;5055:24:20;;;-1:-1:-1;;;;;2074:24:21;;;2070:74;;2105:9;:34;;-1:-1:-1;;;;;;2105:34:21;-1:-1:-1;;;;;2105:34:21;;;;;2070:74;1883:264;;;;;349:4023;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101425760003560e01c806377c5e10e116100b8578063c00007b01161007c578063c00007b0146102e7578063dd49756e1461030d578063e1c7392a1461032a578063ecf7085814610332578063f2f46b3b1461033a578063f6153ccd1461034257610142565b806377c5e10e146102a15780638d8f2adb146102c7578063b595c1d9146102cf578063b91d4001146102d7578063b92fd178146102df57610142565b806327debc0f1161010a57806327debc0f146101f95780632929c25c14610216578063309481e41461023c57806347734892146102445780634783c35b1461027c57806363683e5b1461028457610142565b80630570a9ed1461014757806308dcb3601461016f57806309d9287f146101935780630c6ca129146101b0578063200d2ed2146101cd575b600080fd5b61016d6004803603602081101561015d57600080fd5b50356001600160a01b031661034a565b005b61017761043e565b604080516001600160a01b039092168252519081900360200190f35b61016d600480360360208110156101a957600080fd5b503561044d565b61016d600480360360208110156101c657600080fd5b50356106dd565b6101d5610768565b604051808260048111156101e557fe5b60ff16815260200191505060405180910390f35b61016d6004803603602081101561020f57600080fd5b5035610771565b61016d6004803603602081101561022c57600080fd5b50356001600160a01b031661083d565b61016d610931565b61026a6004803603602081101561025a57600080fd5b50356001600160a01b0316610ab3565b60408051918252519081900360200190f35b610177610ad2565b61016d6004803603602081101561029a57600080fd5b5035610ae1565b61016d600480360360208110156102b757600080fd5b50356001600160a01b0316610d93565b61016d610fbc565b61016d611167565b61026a61123d565b61026a611243565b61026a600480360360208110156102fd57600080fd5b50356001600160a01b0316611249565b61016d6004803603602081101561032357600080fd5b50356112bb565b61016d6114f0565b61026a6115c6565b6101776115cc565b61026a6115db565b6004546001600160a01b03163314610397576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b6001600160a01b0381166103f2576040805162461bcd60e51b815260206004820152601d60248201527f496e76616c69642052657761726420546f6b656e20416464726573732e000000604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b03831690811790915560405133907f2e1c61b104d80d0244d7aa46590a2e67c165723a6e43fcb389731dd090e324d490600090a350565b6003546001600160a01b031681565b6004546001600160a01b0316331461049a576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60028060065460ff1660048111156104ae57fe5b146104ea5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b600082116105295760405162461bcd60e51b81526004018080602001828103825260248152602001806119046024913960400191505060405180910390fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810185905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b15801561058257600080fd5b505af1158015610596573d6000803e3d6000fd5b505050506040513d60208110156105ac57600080fd5b50519050806105ec5760405162461bcd60e51b815260040180806020018281038252602281526020018061181c6022913960400191505060405180910390fd5b60408051848152905133917fb40939319ce4aad757337edb909235104a5db50bad569e463b37e1441780f371919081900360200190a2600054600354604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561067057600080fd5b505afa158015610684573d6000803e3d6000fd5b505050506040513d602081101561069a57600080fd5b5051106106d8576006805460ff191660031790556040517fffd2e76576dce3794f83afe36ea9bbb778ba46b7e4c95d032832ca5858568ecb90600090a15b505050565b6004546001600160a01b0316331461072a576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b600181905560408051828152905133917fe616a7b2221bdb5ebbb119ffc520a3c55372c015f171cbbdf2b923dbdc5bd8e9919081900360200190a250565b60065460ff1681565b6004546001600160a01b031633146107be576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b6000548110156107ff5760405162461bcd60e51b815260040180806020018281038252603781526020018061188a6037913960400191505060405180910390fd5b600281905560408051828152905133917f955882670f7f0d0c27f69140aa26b5b036247f64a181423f02ee40e37422267b919081900360200190a250565b6004546001600160a01b0316331461088a576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b6001600160a01b0381166108e5576040805162461bcd60e51b815260206004820152601d60248201527f4e6577204d756c7469736967206164647265737320696e76616c69642e000000604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b03831690811790915560405133907fc49ab2967e3eb278a95b7304998ed5b0e5d6c090c37f3ba3cabd40ad7ca3b67d90600090a350565b6001541580159061094457504260015411155b61097f5760405162461bcd60e51b815260040180806020018281038252602581526020018061183e6025913960400191505060405180910390fd5b60038060065460ff16600481111561099357fe5b146109cf5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6000805460075433835260056020526040832054610a0492916109f8919063ffffffff6115e116565b9063ffffffff61164116565b9050610a0e610fbc565b6008546040805163f33bf9a160e01b81523360048201526024810184905290516001600160a01b039092169163f33bf9a19160448082019260009290919082900301818387803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b50506040805184815290513393507f278428ce6b15e876f936987c0935aca544a92b62407b9be13fec411694abbf2792509081900360200190a25050565b6001600160a01b0381166000908152600560205260409020545b919050565b6004546001600160a01b031681565b6004546001600160a01b03163314610b2e576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b600360065460ff166004811115610b4157fe5b1415610b7e5760405162461bcd60e51b81526004018080602001828103825260418152602001806119826041913960600191505060405180910390fd5b60008111610bbd5760405162461bcd60e51b81526004018080602001828103825260248152602001806119046024913960400191505060405180910390fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b158015610c1657600080fd5b505af1158015610c2a573d6000803e3d6000fd5b505050506040513d6020811015610c4057600080fd5b5051905080610c805760405162461bcd60e51b815260040180806020018281038252602281526020018061181c6022913960400191505060405180910390fd5b600754610c93908363ffffffff61168316565b60078190556003546008546040805163095ea7b360e01b81526001600160a01b03928316600482015260248101949094525191169163095ea7b39160448083019260209291908290030181600087803b158015610cef57600080fd5b505af1158015610d03573d6000803e3d6000fd5b505050506040513d6020811015610d1957600080fd5b5051905080610d595760405162461bcd60e51b81526004018080602001828103825260228152602001806118c16022913960400191505060405180910390fd5b60408051838152905133917f9a9344d822c6480033db9b9da83bffd3abf8d38bae52c1d5085c47da18a52f71919081900360200190a25050565b6004546001600160a01b03163314610de0576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60028060065460ff166004811115610df457fe5b14610e305760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b336001600160a01b03831615610e435750815b600354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d6020811015610eb857600080fd5b50516003546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151939450600093919092169163a9059cbb91604480830192602092919082900301818787803b158015610f1557600080fd5b505af1158015610f29573d6000803e3d6000fd5b505050506040513d6020811015610f3f57600080fd5b5051905080610f7f5760405162461bcd60e51b815260040180806020018281038252603a815260200180611928603a913960400191505060405180910390fd5b60408051838152905133917f5544e408756a3a50668b8a21fb8c1c15f76575cb77c51fa4dc602167737dc336919081900360200190a25050505050565b60015415801590610fcf57504260015411155b61100a5760405162461bcd60e51b815260040180806020018281038252602581526020018061183e6025913960400191505060405180910390fd5b60038060065460ff16600481111561101e57fe5b1461105a5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b336000818152600560209081526040808320805490849055600354825163a9059cbb60e01b8152600481019690965260248601829052915190946001600160a01b039092169263a9059cbb926044808201939182900301818787803b1580156110c257600080fd5b505af11580156110d6573d6000803e3d6000fd5b505050506040513d60208110156110ec57600080fd5b505190508061112c5760405162461bcd60e51b815260040180806020018281038252603a815260200180611928603a913960400191505060405180910390fd5b60408051838152905133917f68577e4d693c1b056a60bc4e39438810239a0bfe64869c4eb7e3baebb5f65634919081900360200190a2505050565b6004546001600160a01b031633146111b4576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60018060065460ff1660048111156111c857fe5b146112045760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6006805460ff191660021790556040517f5b088f927628e8de338290d95ecd2b47be7d5cf32f833c4e83139128e9e95b2a90600090a150565b60015481565b60075481565b6007546001600160a01b0382166000908152600560205260408120549091611277919063ffffffff6115e116565b61128357506000610acd565b600080546007546001600160a01b038516835260056020526040909220546112b5926109f8919063ffffffff6115e116565b92915050565b60018060065460ff1660048111156112cf57fe5b1461130b5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6000821161134a5760405162461bcd60e51b81526004018080602001828103825260248152602001806119046024913960400191505060405180910390fd5b600254600054839190611363908363ffffffff61168316565b106113aa5760005460025461137d9163ffffffff6116dd16565b6040519091507f248455798e33b4871de4258bfab3fb4b1bc826e576369d72ee7c613e411d262f90600090a15b600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b15801561140357600080fd5b505af1158015611417573d6000803e3d6000fd5b505050506040513d602081101561142d57600080fd5b505190508061146d5760405162461bcd60e51b815260040180806020018281038252602281526020018061181c6022913960400191505060405180910390fd5b3360009081526005602052604090205461148d908363ffffffff61168316565b33600090815260056020526040812091909155546114b1908363ffffffff61168316565b60005560408051838152905133917f20b3fc91390f6ceba342f697a9490734680fd3556633f40efa146f1dbe79d05f919081900360200190a250505050565b6004546001600160a01b0316331461153d576040805162461bcd60e51b815260206004820152601c6024820152600080516020611962833981519152604482015290519081900360640190fd5b60008060065460ff16600481111561155157fe5b1461158d5760405162461bcd60e51b81526004018080602001828103825260278152602001806118636027913960400191505060405180910390fd5b6006805460ff191660011790556040517f1295541c130ffcc33980a4c0939feefa3de1f7989fae02b43176efa73973de0d90600090a150565b60025481565b6008546001600160a01b031681565b60005481565b6000826115f0575060006112b5565b828202828482816115fd57fe5b041461163a5760405162461bcd60e51b81526004018080602001828103825260218152602001806118e36021913960400191505060405180910390fd5b9392505050565b600061163a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061171f565b60008282018381101561163a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061163a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117c1565b600081836117ab5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611770578181015183820152602001611758565b50505050905090810190601f16801561179d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816117b757fe5b0495945050505050565b600081848411156118135760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611770578181015183820152602001611758565b50505090039056fe546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e5468652072656c656173652074696d6520686173206e6f742073746172746564207965742e54686520636f6e7472616374206973206e6f7420696e207468652072696768742073746174652e4465706f73697420616c726561647920686967686572207468616e20746865206c696d697420747279696e6720746f206265207365742e546f6b656e20417070726f76616c20776173206e6f74207375636365737366756c2e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77416d6f756e74206e6565647320746f20626520626967676572207468616e207a65726f2e546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e4f6e6c79204d756c74697369672063616e2063616c6c20746869732e0000000052657761726420546f6b656e206465706f736974206973206f6e6c7920616c6c6f776564206265666f72652055736572205769746864726177207374617274732ea265627a7a723158209898e33dc245e024411a10f565afd5b091b995840a3766026193343e89ed2f2e64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x77C5E10E GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xC00007B0 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xC00007B0 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xDD49756E EQ PUSH2 0x30D JUMPI DUP1 PUSH4 0xE1C7392A EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0xECF70858 EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0xF6153CCD EQ PUSH2 0x342 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x77C5E10E EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0x8D8F2ADB EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xB595C1D9 EQ PUSH2 0x2CF JUMPI DUP1 PUSH4 0xB91D4001 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0xB92FD178 EQ PUSH2 0x2DF JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x27DEBC0F GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x27DEBC0F EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x2929C25C EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x309481E4 EQ PUSH2 0x23C JUMPI DUP1 PUSH4 0x47734892 EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x4783C35B EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x63683E5B EQ PUSH2 0x284 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x570A9ED EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x9D9287F EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0xC6CA129 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x200D2ED2 EQ PUSH2 0x1CD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x34A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x177 PUSH2 0x43E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x44D JUMP JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6DD JUMP JUMPDEST PUSH2 0x1D5 PUSH2 0x768 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1E5 JUMPI INVALID JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x771 JUMP JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x83D JUMP JUMPDEST PUSH2 0x16D PUSH2 0x931 JUMP JUMPDEST PUSH2 0x26A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAB3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x177 PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD93 JUMP JUMPDEST PUSH2 0x16D PUSH2 0xFBC JUMP JUMPDEST PUSH2 0x16D PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x26A PUSH2 0x123D JUMP JUMPDEST PUSH2 0x26A PUSH2 0x1243 JUMP JUMPDEST PUSH2 0x26A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1249 JUMP JUMPDEST PUSH2 0x16D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x12BB JUMP JUMPDEST PUSH2 0x16D PUSH2 0x14F0 JUMP JUMPDEST PUSH2 0x26A PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x15CC JUMP JUMPDEST PUSH2 0x26A PUSH2 0x15DB JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x397 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C69642052657761726420546F6B656E20416464726573732E000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x2E1C61B104D80D0244D7AA46590A2E67C165723A6E43FCB389731DD090E324D4 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x49A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x4AE JUMPI INVALID JUMPDEST EQ PUSH2 0x4EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x529 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1904 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x582 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x596 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x5EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x181C PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0xB40939319CE4AAD757337EDB909235104A5DB50BAD569E463B37E1441780F371 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 PUSH1 0x0 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x684 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT PUSH2 0x6D8 JUMPI PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x3 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xFFD2E76576DCE3794F83AFE36EA9BBB778BA46B7E4C95D032832CA5858568ECB SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x72A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0xE616A7B2221BDB5EBBB119FFC520A3C55372C015F171CBBDF2B923DBDC5BD8E9 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x7BE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD DUP2 LT ISZERO PUSH2 0x7FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x188A PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x955882670F7F0D0C27F69140AA26B5B036247F64A181423F02EE40E37422267B SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x88A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x8E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6577204D756C7469736967206164647265737320696E76616C69642E000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xC49AB2967E3EB278A95B7304998ED5B0E5D6C090C37F3BA3CABD40AD7CA3B67D SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x1 SLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x944 JUMPI POP TIMESTAMP PUSH1 0x1 SLOAD GT ISZERO JUMPDEST PUSH2 0x97F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x183E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x993 JUMPI INVALID JUMPDEST EQ PUSH2 0x9CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x7 SLOAD CALLER DUP4 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD PUSH2 0xA04 SWAP3 SWAP2 PUSH2 0x9F8 SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x15E1 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1641 AND JUMP JUMPDEST SWAP1 POP PUSH2 0xA0E PUSH2 0xFBC JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xF33BF9A1 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF33BF9A1 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP4 POP PUSH32 0x278428CE6B15E876F936987C0935ACA544A92B62407B9BE13FEC411694ABBF27 SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xB2E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xB41 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xB7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x41 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1982 PUSH1 0x41 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xBBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1904 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC2A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xC80 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x181C PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH2 0xC93 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1683 AND JUMP JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x3 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE MLOAD SWAP2 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xD59 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18C1 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x9A9344D822C6480033DB9B9DA83BFFD3ABF8D38BAE52C1D5085C47DA18A52F71 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xDE0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xDF4 JUMPI INVALID JUMPDEST EQ PUSH2 0xE30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xE43 JUMPI POP DUP2 JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF29 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xF7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1928 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x5544E408756A3A50668B8A21FB8C1C15F76575CB77C51FA4DC602167737DC336 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0xFCF JUMPI POP TIMESTAMP PUSH1 0x1 SLOAD GT ISZERO JUMPDEST PUSH2 0x100A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x183E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x101E JUMPI INVALID JUMPDEST EQ PUSH2 0x105A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x3 SLOAD DUP3 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x24 DUP7 ADD DUP3 SWAP1 MSTORE SWAP2 MLOAD SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xA9059CBB SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x112C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1928 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x68577E4D693C1B056A60BC4E39438810239A0BFE64869C4EB7E3BAEBB5F65634 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x11B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x11C8 JUMPI INVALID JUMPDEST EQ PUSH2 0x1204 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5B088F927628E8DE338290D95ECD2B47BE7D5CF32F833C4E83139128E9E95B2A SWAP1 PUSH1 0x0 SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x1277 SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x15E1 AND JUMP JUMPDEST PUSH2 0x1283 JUMPI POP PUSH1 0x0 PUSH2 0xACD JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP4 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH2 0x12B5 SWAP3 PUSH2 0x9F8 SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x15E1 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x12CF JUMPI INVALID JUMPDEST EQ PUSH2 0x130B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x134A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1904 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SLOAD DUP4 SWAP2 SWAP1 PUSH2 0x1363 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1683 AND JUMP JUMPDEST LT PUSH2 0x13AA JUMPI PUSH1 0x0 SLOAD PUSH1 0x2 SLOAD PUSH2 0x137D SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x16DD AND JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH32 0x248455798E33B4871DE4258BFAB3FB4B1BC826E576369D72EE7C613E411D262F SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1417 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x142D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x146D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x181C PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x148D SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1683 AND JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x14B1 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1683 AND JUMP JUMPDEST PUSH1 0x0 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x20B3FC91390F6CEBA342F697A9490734680FD3556633F40EFA146F1DBE79D05F SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x153D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1962 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1551 JUMPI INVALID JUMPDEST EQ PUSH2 0x158D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1863 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x1295541C130FFCC33980A4C0939FEEFA3DE1F7989FAE02B43176EFA73973DE0D SWAP1 PUSH1 0x0 SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x15F0 JUMPI POP PUSH1 0x0 PUSH2 0x12B5 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x15FD JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x163A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18E3 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x171F JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x163A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x163A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x17C1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x17AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1770 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1758 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x179D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x17B7 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1813 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1770 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1758 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID SLOAD PUSH16 0x6B656E207472616E7366657220776173 KECCAK256 PUSH15 0x6F74207375636365737366756C2E54 PUSH9 0x652072656C65617365 KECCAK256 PUSH21 0x696D6520686173206E6F7420737461727465642079 PUSH6 0x742E54686520 PUSH4 0x6F6E7472 PUSH2 0x6374 KECCAK256 PUSH10 0x73206E6F7420696E2074 PUSH9 0x652072696768742073 PUSH21 0x6174652E4465706F73697420616C72656164792068 PUSH10 0x67686572207468616E20 PUSH21 0x6865206C696D697420747279696E6720746F206265 KECCAK256 PUSH20 0x65742E546F6B656E20417070726F76616C207761 PUSH20 0x206E6F74207375636365737366756C2E53616665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77416D6F756E74206E65 PUSH6 0x647320746F20 PUSH3 0x652062 PUSH10 0x67676572207468616E20 PUSH27 0x65726F2E546F6B656E207472616E7366657220776173206E6F7420 PUSH20 0x75636365737366756C2E20436865636B20726563 PUSH6 0x697665722061 PUSH5 0x6472657373 0x2E 0x4F PUSH15 0x6C79204D756C74697369672063616E KECCAK256 PUSH4 0x616C6C20 PUSH21 0x6869732E0000000052657761726420546F6B656E20 PUSH5 0x65706F7369 PUSH21 0x206973206F6E6C7920616C6C6F776564206265666F PUSH19 0x65205573657220576974686472617720737461 PUSH19 0x74732EA265627A7A723158209898E33DC245E0 0x24 COINBASE BYTE LT CREATE2 PUSH6 0xAFD5B091B995 DUP5 EXP CALLDATACOPY PUSH7 0x26193343E89ED 0x2F 0x2E PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "349:4023:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;349:4023:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2284:230;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2284:230:21;-1:-1:-1;;;;;2284:230:21;;:::i;:::-;;799:17:20;;;:::i;:::-;;;;-1:-1:-1;;;;;799:17:20;;;;;;;;;;;;;;8927:474;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8927:474:20;;:::i;5929:174::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5929:174:20;;:::i;1412:20::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6265:283;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6265:283:20;;:::i;5504:219::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5504:219:20;-1:-1:-1;;;;;5504:219:20;;:::i;3543:377:21:-;;;:::i;10047:113:20:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10047:113:20;-1:-1:-1;;;;;10047:113:20;;:::i;:::-;;;;;;;;;;;;;;;;879:23;;;:::i;2731:615:21:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2731:615:21;;:::i;8085:515:20:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8085:515:20;-1:-1:-1;;;;;8085:515:20;;:::i;9530:334::-;;;:::i;7655:145::-;;;:::i;628:26::-;;;:::i;563:33:21:-;;;:::i;4146:224::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4146:224:21;-1:-1:-1;;;;;4146:224:21;;:::i;6837:588:20:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6837:588:20;;:::i;5273:125::-;;;:::i;731:27::-;;;:::i;638::21:-;;;:::i;537::20:-;;;:::i;2284:230:21:-;4063:8:20;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;2363:24:21;;2355:66;;;;;-1:-1:-1;;;2355:66:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;2426:9;:34;;-1:-1:-1;;;;;;2426:34:21;-1:-1:-1;;;;;2426:34:21;;;;;;;;2470:40;;2487:10;;2470:40;;-1:-1:-1;;2470:40:21;2284:230;:::o;799:17:20:-;;;-1:-1:-1;;;;;799:17:20;;:::o;8927:474::-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;9011:14;;4159:6;;;;:11;;;;;;;;;4151:63;;;;-1:-1:-1;;;4151:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9049:1;9039:7;:11;9031:60;;;;-1:-1:-1;;;9031:60:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9112:3;;:52;;;-1:-1:-1;;;9112:52:20;;9129:10;9112:52;;;;9149:4;9112:52;;;;;;;;;;;;9096:13;;-1:-1:-1;;;;;9112:3:20;;:16;;:52;;;;;;;;;;;;;;9096:13;9112:3;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;9112:52:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9112:52:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9112:52:20;;-1:-1:-1;9112:52:20;9168:55;;;;-1:-1:-1;;;9168:55:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9233:43;;;;;;;;9256:10;;9233:43;;;;;;;;;;9317:12;;9285:3;;:28;;;-1:-1:-1;;;9285:28:20;;9307:4;9285:28;;;;;;-1:-1:-1;;;;;9285:3:20;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;9285:28:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9285:28:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9285:28:20;:44;9281:117;;9336:6;:24;;-1:-1:-1;;9336:24:20;9345:15;9336:24;;;9370:23;;;;-1:-1:-1;;9370:23:20;9281:117;4218:1;4108;8927:474;:::o;5929:174::-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;6012:11;:29;;;6051:48;;;;;;;;6071:10;;6051:48;;;;;;;;;;5929:174;:::o;1412:20::-;;;;;;:::o;6265:283::-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;6373:12;;6353:16;:32;;6345:100;;;;-1:-1:-1;;;6345:100:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6449:12;:31;;;6490:54;;;;;;;;6515:10;;6490:54;;;;;;;;;;6265:283;:::o;5504:219::-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;5584:26:20;;5576:68;;;;;-1:-1:-1;;;5576:68:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;5649:8;:23;;-1:-1:-1;;;;;;5649:23:20;-1:-1:-1;;;;;5649:23:20;;;;;;;;5682:37;;5694:10;;5682:37;;-1:-1:-1;;5682:37:20;5504:219;:::o;3543:377:21:-;4262:11:20;;:16;;;;:50;;;4297:15;4282:11;;:30;;4262:50;4254:100;;;;-1:-1:-1;;;4254:100:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:15:21;;4159:6:20;;;;:11;;;;;;;;;4151:63;;;;-1:-1:-1;;;4151:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3719:14:21;3789:12;;3765:18;;3749:10;3736:24;;:12;:24;;;;;;:66;;3789:12;3736:48;;:24;:48;:28;:48;:::i;:::-;:52;:66;:52;:66;:::i;:::-;3719:83;;3806:16;:14;:16::i;:::-;3827:9;;:40;;;-1:-1:-1;;;3827:40:21;;3848:10;3827:40;;;;;;;;;;;;-1:-1:-1;;;;;3827:9:21;;;;:20;;:40;;;;;:9;;:40;;;;;;;;:9;;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;3827:40:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3877:39:21;;;;;;;;3897:10;;-1:-1:-1;3877:39:21;;-1:-1:-1;3877:39:21;;;;;;;;4218:1:20;4358;3543:377:21:o;10047:113:20:-;-1:-1:-1;;;;;10137:19:20;;10109:15;10137:19;;;:12;:19;;;;;;10047:113;;;;:::o;879:23::-;;;-1:-1:-1;;;;;879:23:20;;:::o;2731:615:21:-;4063:8:20;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;2825:15:21;2815:6;;;;:25;;;;;;;;;;2807:103;;;;-1:-1:-1;;;2807:103:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2932:1;2922:7;:11;2914:60;;;;-1:-1:-1;;;2914:60:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2995:3;;:52;;;-1:-1:-1;;;2995:52:21;;3012:10;2995:52;;;;3032:4;2995:52;;;;;;;;;;;;2979:13;;-1:-1:-1;;;;;2995:3:21;;:16;;:52;;;;;;;;;;;;;;2979:13;2995:3;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;2995:52:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2995:52:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2995:52:21;;-1:-1:-1;2995:52:21;3051:55;;;;-1:-1:-1;;;3051:55:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3132:18;;:31;;3155:7;3132:31;:22;:31;:::i;:::-;3111:18;:52;;;3178:3;;3198:9;;3178:51;;;-1:-1:-1;;;3178:51:21;;-1:-1:-1;;;;;3198:9:21;;;3178:51;;;;;;;;;;;;:3;;;:11;;:51;;;;;;;;;;;;;;:3;;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;3178:51:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3178:51:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3178:51:21;;-1:-1:-1;3178:51:21;3233:55;;;;-1:-1:-1;;;3233:55:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3298:44;;;;;;;;3322:10;;3298:44;;;;;;;;;;4108:1:20;2731:615:21;:::o;8085:515:20:-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;8179:14;;4159:6;;;;:11;;;;;;;;;4151:63;;;;-1:-1:-1;;;4151:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8225:10;-1:-1:-1;;;;;8243:30:20;;;8239:80;;-1:-1:-1;8298:16:20;8239:80;8339:3;;:28;;;-1:-1:-1;;;8339:28:20;;8361:4;8339:28;;;;;;8323:13;;-1:-1:-1;;;;;8339:3:20;;:13;;:28;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;8339:28:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8339:28:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8339:28:20;8425:3;;:36;;;-1:-1:-1;;;8425:36:20;;-1:-1:-1;;;;;8425:36:20;;;;;;;;;;;;;;;8339:28;;-1:-1:-1;8409:13:20;;8425:3;;;;;:12;;:36;;;;;8339:28;;8425:36;;;;;;;8409:13;8425:3;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;8425:36:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8425:36:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8425:36:20;;-1:-1:-1;8425:36:20;8465:79;;;;-1:-1:-1;;;8465:79:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8554:42;;;;;;;;8578:10;;8554:42;;;;;;;;;;4218:1;;;4108;8085:515;:::o;9530:334::-;4262:11;;:16;;;;:50;;;4297:15;4282:11;;:30;;4262:50;4254:100;;;;-1:-1:-1;;;4254:100:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9588:15;;4159:6;;;;:11;;;;;;;;;4151:63;;;;-1:-1:-1;;;4151:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9639:10;9609:14;9626:24;;;:12;:24;;;;;;;;;;9654:28;;;;9702:3;;:32;;-1:-1:-1;;;9702:32:20;;;;;;;;;;;;;;;;;9626:24;;-1:-1:-1;;;;;9702:3:20;;;;:12;;:32;;;;;;;;;;;9609:14;9702:3;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;9702:32:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9702:32:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9702:32:20;;-1:-1:-1;9702:32:20;9738:79;;;;-1:-1:-1;;;9738:79:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9827:33;;;;;;;;9841:10;;9827:33;;;;;;;;;;4218:1;;4358;9530:334::o;7655:145::-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;7721:14;;4159:6;;;;:11;;;;;;;;;4151:63;;;;-1:-1:-1;;;4151:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7741:6;:23;;-1:-1:-1;;7741:23:20;7750:14;7741:23;;;7774:22;;;;-1:-1:-1;;7774:22:20;4108:1;7655:145::o;628:26::-;;;;:::o;563:33:21:-;;;;:::o;4146:224::-;4251:18;;-1:-1:-1;;;;;4227:19:21;;4203:14;4227:19;;;:12;:19;;;;;;4203:14;;4227:43;;:19;:43;:23;:43;:::i;:::-;4223:72;;-1:-1:-1;4289:1:21;4282:8;;4223:72;4353:12;;;4329:18;;-1:-1:-1;;;;;4305:19:21;;;;:12;:19;;;;;;;:61;;:43;;:19;:43;:23;:43;:::i;:61::-;4298:68;4146:224;-1:-1:-1;;4146:224:21:o;6837:588:20:-;6898:14;;4159:6;;;;:11;;;;;;;;;4151:63;;;;-1:-1:-1;;;4151:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6936:1;6926:7;:11;6918:60;;;;-1:-1:-1;;;6918:60:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7044:12;;6982:14;7015:12;6999:7;;7044:12;7015:25;;6999:7;7015:25;:16;:25;:::i;:::-;:41;7011:127;;7089:12;;7072;;:30;;;:16;:30;:::i;:::-;7112:21;;7063:39;;-1:-1:-1;7112:21:20;;;;;7011:127;7158:3;;:51;;;-1:-1:-1;;;7158:51:20;;7175:10;7158:51;;;;7195:4;7158:51;;;;;;;;;;;;7142:13;;-1:-1:-1;;;;;7158:3:20;;:16;;:51;;;;;;;;;;;;;;7142:13;7158:3;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;7158:51:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7158:51:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7158:51:20;;-1:-1:-1;7158:51:20;7213:55;;;;-1:-1:-1;;;7213:55:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7313:10;7300:24;;;;:12;:24;;;;;;:36;;7329:6;7300:36;:28;:36;:::i;:::-;7286:10;7273:24;;;;:12;:24;;;;;:63;;;;7355:12;:24;;7372:6;7355:24;:16;:24;:::i;:::-;7340:12;:39;7389:32;;;;;;;;7402:10;;7389:32;;;;;;;;;;4218:1;;6837:588;;:::o;5273:125::-;4063:8;;-1:-1:-1;;;;;4063:8:20;4049:10;:22;4041:63;;;;;-1:-1:-1;;;4041:63:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4041:63:20;;;;;;;;;;;;;;;5323:15;;4159:6;;;;:11;;;;;;;;;4151:63;;;;-1:-1:-1;;;4151:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5344:6;:23;;-1:-1:-1;;5344:23:20;5353:14;5344:23;;;5377:17;;;;-1:-1:-1;;5377:17:20;4108:1;5273:125::o;731:27::-;;;;:::o;638::21:-;;;-1:-1:-1;;;;;638:27:21;;:::o;537::20:-;;;;:::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2393:1;1999:399;-1:-1:-1;;;1999:399:145:o;2817:121::-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;1201:125;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;3411:315::-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1614:175::-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1722:29:145;-1:-1:-1;;;1767:5:145;;;1614:175::o"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "changeStateToHolding()": "b595c1d9",
              "depositLimit()": "ecf70858",
              "depositRewardByMultisig(uint256)": "63683e5b",
              "depositTokens(uint256)": "dd49756e",
              "depositTokensByMultisig(uint256)": "09d9287f",
              "getReward(address)": "c00007b0",
              "getUserBalance(address)": "47734892",
              "init()": "e1c7392a",
              "lockedSOV()": "f2f46b3b",
              "multisig()": "4783c35b",
              "releaseTime()": "b91d4001",
              "status()": "200d2ed2",
              "totalDeposit()": "f6153ccd",
              "totalRewardDeposit()": "b92fd178",
              "updateDepositLimit(uint256)": "27debc0f",
              "updateLockedSOV(address)": "0570a9ed",
              "updateMultisig(address)": "2929c25c",
              "updateReleaseTimestamp(uint256)": "0c6ca129",
              "withdrawTokens()": "8d8f2adb",
              "withdrawTokensAndReward()": "309481e4",
              "withdrawTokensByMultisig(address)": "77c5e10e"
            }
          },
          "userdoc": {
            "methods": {
              "changeStateToHolding()": {
                "notice": "Update contract state to Holding."
              },
              "constructor": "Setup the required parameters.",
              "depositRewardByMultisig(uint256)": {
                "notice": "Deposit tokens to this contract by the Multisig."
              },
              "depositTokens(uint256)": {
                "notice": "Deposit tokens to this contract by User."
              },
              "depositTokensByMultisig(uint256)": {
                "notice": "Deposit tokens to this contract by the Multisig."
              },
              "getReward(address)": {
                "notice": "Function to read the reward a particular user can get."
              },
              "getUserBalance(address)": {
                "notice": "Function to read the current token balance of a particular user."
              },
              "init()": {
                "notice": "This function is called once after deployment for starting the deposit action."
              },
              "updateDepositLimit(uint256)": {
                "notice": "Update Deposit Limit."
              },
              "updateLockedSOV(address)": {
                "notice": "Set the Locked SOV Contract Address if not already done."
              },
              "updateMultisig(address)": {
                "notice": "Update Multisig."
              },
              "updateReleaseTimestamp(uint256)": {
                "notice": "Update Release Timestamp."
              },
              "withdrawTokens()": {
                "notice": "Withdraws token from the contract by User."
              },
              "withdrawTokensAndReward()": {
                "notice": "Withdraws token and reward from the contract by User. Reward is gone to lockedSOV contract for future vesting."
              },
              "withdrawTokensByMultisig(address)": {
                "notice": "Withdraws all token from the contract by Multisig."
              }
            },
            "notice": "Multisig can use this contract for depositing of Reward tokens based on the total token deposit."
          }
        }
      },
      "contracts/events/AffiliatesEvents.sol": {
        "AffiliatesEvents": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "isHeld",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tradingFeeTokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmountPaid",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFeeToAffiliate",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tradingFeeTokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmountTryingToPaid",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFeeToAffiliateFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "SetAffiliatesReferrer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "alreadySet",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "userNotFirstTrade",
                  "type": "bool"
                }
              ],
              "name": "SetAffiliatesReferrerFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "SetUserNotFirstTradeFlag",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawAffiliatesReferrerTokenFees",
              "type": "event"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158201f5ec6cef573bd7f806d3c28f7a52c177eabfdfffaf9fb311a675cc665109dcc64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x1F 0x5E 0xC6 0xCE CREATE2 PUSH20 0xBD7F806D3C28F7A52C177EABFDFFFAF9FB311A67 0x5C 0xC6 PUSH6 0x109DCC64736F PUSH13 0x63430005110032000000000000 ",
              "sourceMap": "180:949:22:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;180:949:22;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a723158201f5ec6cef573bd7f806d3c28f7a52c177eabfdfffaf9fb311a675cc665109dcc64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x1F 0x5E 0xC6 0xCE CREATE2 PUSH20 0xBD7F806D3C28F7A52C177EABFDFFFAF9FB311A67 0x5C 0xC6 PUSH6 0x109DCC64736F PUSH13 0x63430005110032000000000000 ",
              "sourceMap": "180:949:22:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/events/FeesEvents.sol": {
        "FeesEvents": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnRewardFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayBorrowingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayLendingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFee",
              "type": "event"
            }
          ],
          "devdoc": {
            "methods": {},
            "title": "The Fees Events contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158200cf9514944e499c5904fe06de446084735f95dbf56c942b85638508898b92b6d64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC 0xF9 MLOAD 0x49 DIFFICULTY 0xE4 SWAP10 0xC5 SWAP1 0x4F 0xE0 PUSH14 0xE446084735F95DBF56C942B85638 POP DUP9 SWAP9 0xB9 0x2B PUSH14 0x64736F6C63430005110032000000 ",
              "sourceMap": "405:671:23:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;405:671:23;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a723158200cf9514944e499c5904fe06de446084735f95dbf56c942b85638508898b92b6d64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC 0xF9 MLOAD 0x49 DIFFICULTY 0xE4 SWAP10 0xC5 SWAP1 0x4F 0xE0 PUSH14 0xE446084735F95DBF56C942B85638 POP DUP9 SWAP9 0xB9 0x2B PUSH14 0x64736F6C63430005110032000000 ",
              "sourceMap": "405:671:23:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the events for fee payments."
          }
        }
      },
      "contracts/events/LoanClosingsEvents.sol": {
        "LoanClosingsEvents": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "closer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "repayAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralWithdrawAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                }
              ],
              "name": "CloseWithDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "closer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "positionCloseSize",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanCloseAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "exitPrice",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentLeverage",
                  "type": "uint256"
                }
              ],
              "name": "CloseWithSwap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "liquidator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "repayAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralWithdrawAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                }
              ],
              "name": "Liquidate",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "shouldRefund",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountInRbtc",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "threshold",
                  "type": "uint256"
                }
              ],
              "name": "swapExcess",
              "type": "event"
            }
          ],
          "devdoc": {
            "methods": {},
            "title": "The Loan Closing Events contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158203a3a96197547bda531e1035cf27e9d562996719780fd307e0901a6209c00bf4764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 GASPRICE GASPRICE SWAP7 NOT PUSH22 0x47BDA531E1035CF27E9D562996719780FD307E0901A6 KECCAK256 SWAP13 STOP 0xBF SELFBALANCE PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "461:1289:24:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;461:1289:24;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a723158203a3a96197547bda531e1035cf27e9d562996719780fd307e0901a6209c00bf4764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 GASPRICE GASPRICE SWAP7 NOT PUSH22 0x47BDA531E1035CF27E9D562996719780FD307E0901A6 KECCAK256 SWAP13 STOP 0xBF SELFBALANCE PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "461:1289:24:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the events for loan closing operations."
          }
        }
      },
      "contracts/events/LoanMaintenanceEvents.sol": {
        "LoanMaintenanceEvents": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "rate",
                  "type": "uint256"
                }
              ],
              "name": "DepositCollateral",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            }
          ],
          "devdoc": {
            "methods": {},
            "title": "The Loan Maintenance Events contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820c88c0a10241ad3d221fd421d990224daf7ad7315a791abd1376ea6a2c62e234064736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC8 DUP13 EXP LT 0x24 BYTE 0xD3 0xD2 0x21 REVERT TIMESTAMP SAR SWAP10 MUL 0x24 0xDA 0xF7 0xAD PUSH20 0x15A791ABD1376EA6A2C62E234064736F6C634300 SDIV GT STOP ORIGIN ",
              "sourceMap": "351:136:25:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;351:136:25;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a72315820c88c0a10241ad3d221fd421d990224daf7ad7315a791abd1376ea6a2c62e234064736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC8 DUP13 EXP LT 0x24 BYTE 0xD3 0xD2 0x21 REVERT TIMESTAMP SAR SWAP10 MUL 0x24 0xDA 0xF7 0xAD PUSH20 0x15A791ABD1376EA6A2C62E234064736F6C634300 SDIV GT STOP ORIGIN ",
              "sourceMap": "351:136:25:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the events for loan maintenance operations."
          }
        }
      },
      "contracts/events/LoanOpeningsEvents.sol": {
        "LoanOpeningsEvents": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newPrincipal",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newCollateral",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestDuration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                }
              ],
              "name": "Borrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegated",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "isActive",
                  "type": "bool"
                }
              ],
              "name": "DelegatedManagerSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "positionSize",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "borrowedAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "settlementDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "entryPrice",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "entryLeverage",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentLeverage",
                  "type": "uint256"
                }
              ],
              "name": "Trade",
              "type": "event"
            }
          ],
          "devdoc": {
            "methods": {},
            "title": "The Loan Openings Events contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582079d76fab4359bb16e0d4fbfe822a226086752f058f0d4a7aeecd4a1344b814cf64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH26 0xD76FAB4359BB16E0D4FBFE822A226086752F058F0D4A7AEECD4A SGT DIFFICULTY 0xB8 EQ 0xCF PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "463:1090:26:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;463:1090:26;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a7231582079d76fab4359bb16e0d4fbfe822a226086752f058f0d4a7aeecd4a1344b814cf64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH26 0xD76FAB4359BB16E0D4FBFE822A226086752F058F0D4A7AEECD4A SGT DIFFICULTY 0xB8 EQ 0xCF PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "463:1090:26:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the events for loan openings operations."
          }
        }
      },
      "contracts/events/LoanSettingsEvents.sol": {
        "LoanSettingsEvents": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "name": "LoanParamsDisabled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "LoanParamsIdDisabled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "LoanParamsIdSetup",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "name": "LoanParamsSetup",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            }
          ],
          "devdoc": {
            "methods": {},
            "title": "The Loan Settings Events contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820935eb287dd2ba88a4d72ad35c40dace23b2c223ca53141f2cad96eb02ce0ba9764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP4 0x5E 0xB2 DUP8 0xDD 0x2B 0xA8 DUP11 0x4D PUSH19 0xAD35C40DACE23B2C223CA53141F2CAD96EB02C 0xE0 0xBA SWAP8 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "463:619:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;463:619:27;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a72315820935eb287dd2ba88a4d72ad35c40dace23b2c223ca53141f2cad96eb02ce0ba9764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP4 0x5E 0xB2 DUP8 0xDD 0x2B 0xA8 DUP11 0x4D PUSH19 0xAD35C40DACE23B2C223CA53141F2CAD96EB02C 0xE0 0xBA SWAP8 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "463:619:27:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the events for loan settings operations."
          }
        }
      },
      "contracts/events/ModulesCommonEvents.sol": {
        "ModulesCommonEvents": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            }
          ],
          "devdoc": {
            "methods": {},
            "title": "The common events for all modules"
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820a1ab59657fe344fa820762a95283fadb53719705100465df13efe3d6302ecd0164736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 LOG1 0xAB MSIZE PUSH6 0x7FE344FA8207 PUSH3 0xA95283 STATICCALL 0xDB MSTORE8 PUSH18 0x9705100465DF13EFE3D6302ECD0164736F6C PUSH4 0x43000511 STOP ORIGIN ",
              "sourceMap": "158:189:28:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;158:189:28;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a72315820a1ab59657fe344fa820762a95283fadb53719705100465df13efe3d6302ecd0164736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 LOG1 0xAB MSIZE PUSH6 0x7FE344FA8207 PUSH3 0xA95283 STATICCALL 0xDB MSTORE8 PUSH18 0x9705100465DF13EFE3D6302ECD0164736F6C PUSH4 0x43000511 STOP ORIGIN ",
              "sourceMap": "158:189:28:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract contains the events which will be used by all modules*"
          }
        }
      },
      "contracts/events/ProtocolSettingsEvents.sol": {
        "ProtocolSettingsEvents": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetAffiliateFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetAffiliateTradingTokenFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetBorrowingFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldController",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newController",
                  "type": "address"
                }
              ],
              "name": "SetFeesController",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetLendingFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetLiquidationIncentivePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "loanPool",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlying",
                  "type": "address"
                }
              ],
              "name": "SetLoanPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "SetLockedSOVAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetMaxSwapSize",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldMinReferrals",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newMinReferrals",
                  "type": "uint256"
                }
              ],
              "name": "SetMinReferralsToPayoutAffiliates",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "oldValue",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newValue",
                  "type": "address"
                }
              ],
              "name": "SetPriceFeedContract",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldProtocol",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newProtocol",
                  "type": "address"
                }
              ],
              "name": "SetProtocolAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldProtocolToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newProtocolToken",
                  "type": "address"
                }
              ],
              "name": "SetProtocolTokenAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newRebatePercent",
                  "type": "uint256"
                }
              ],
              "name": "SetRebatePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetRolloverBaseReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldTokenAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newTokenAddress",
                  "type": "address"
                }
              ],
              "name": "SetSOVTokenAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldSovrynSwapContractRegistryAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newSovrynSwapContractRegistryAddress",
                  "type": "address"
                }
              ],
              "name": "SetSovrynSwapContractRegistryAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldSpecialRebatesPercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newSpecialRebatesPercent",
                  "type": "uint256"
                }
              ],
              "name": "SetSpecialRebates",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "isActive",
                  "type": "bool"
                }
              ],
              "name": "SetSupportedTokens",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetSwapExternalFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "oldValue",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newValue",
                  "type": "address"
                }
              ],
              "name": "SetSwapsImplContract",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetTradingFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldBasisPoint",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newBasisPoint",
                  "type": "uint256"
                }
              ],
              "name": "SetTradingRebateRewardsBasisPoint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldWethToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newWethToken",
                  "type": "address"
                }
              ],
              "name": "SetWrbtcToken",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "oldFlag",
                  "type": "bool"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "newFlag",
                  "type": "bool"
                }
              ],
              "name": "TogglePaused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawBorrowingFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lendingAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tradingAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "borrowingAmount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawLendingFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawTradingFees",
              "type": "event"
            }
          ],
          "devdoc": {
            "methods": {},
            "title": "The Protocol Settings Events contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158207de4dc134b2a471737c6e998e5a83ce833cd809e691ecdba931ddce13a4fdd6b64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH30 0xE4DC134B2A471737C6E998E5A83CE833CD809E691ECDBA931DDCE13A4FDD PUSH12 0x64736F6C6343000511003200 ",
              "sourceMap": "471:3280:29:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;471:3280:29;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a723158207de4dc134b2a471737c6e998e5a83ce833cd809e691ecdba931ddce13a4fdd6b64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH30 0xE4DC134B2A471737C6E998E5A83CE833CD809E691ECDBA931DDCE13A4FDD PUSH12 0x64736F6C6343000511003200 ",
              "sourceMap": "471:3280:29:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the events for protocol settings operations."
          }
        }
      },
      "contracts/events/SwapsEvents.sol": {
        "SwapsEvents": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "ExternalSwap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "LoanSwap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            }
          ],
          "devdoc": {
            "methods": {},
            "title": "The Swaps Events contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820464a411d581939283b1340ae41bb85f31849c6b75cc445834d9b757d8b0060f264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CHAINID 0x4A COINBASE SAR PC NOT CODECOPY 0x28 EXTCODESIZE SGT BLOCKHASH 0xAE COINBASE 0xBB DUP6 RETURN XOR 0x49 0xC6 0xB7 0x5C 0xC4 GASLIMIT DUP4 0x4D SWAP12 PUSH22 0x7D8B0060F264736F6C63430005110032000000000000 ",
              "sourceMap": "446:374:30:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;446:374:30;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a72315820464a411d581939283b1340ae41bb85f31849c6b75cc445834d9b757d8b0060f264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CHAINID 0x4A COINBASE SAR PC NOT CODECOPY 0x28 EXTCODESIZE SGT BLOCKHASH 0xAE COINBASE 0xBB DUP6 RETURN XOR 0x49 0xC6 0xB7 0x5C 0xC4 GASLIMIT DUP4 0x4D SWAP12 PUSH22 0x7D8B0060F264736F6C63430005110032000000000000 ",
              "sourceMap": "446:374:30:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the events for swap operations."
          }
        }
      },
      "contracts/farm/ILiquidityMining.sol": {
        "ILiquidityMining": {
          "abi": [
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "getUserPoolTokenBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "onTokensDeposited",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getUserPoolTokenBalance(address,address)": "d0452aa6",
              "onTokensDeposited(address,uint256)": "d8c173c4",
              "withdraw(address,uint256,address)": "69328dec"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/farm/LiquidityMining.sol": {
        "LiquidityMining": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "poolToken",
                  "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": true,
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "accumulatedReward",
                  "type": "uint256"
                }
              ],
              "name": "EmergencyWithdraw",
              "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": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocationPoint",
                  "type": "uint256"
                }
              ],
              "name": "PoolTokenAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newAllocationPoint",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldAllocationPoint",
                  "type": "uint256"
                }
              ],
              "name": "PoolTokenUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "RewardClaimed",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "SOVTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Withdraw",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "BONUS_BLOCK_MULTIPLIER",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "PRECISION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SECONDS_PER_BLOCK",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "_allocationPoint",
                  "type": "uint96"
                },
                {
                  "internalType": "bool",
                  "name": "_withUpdate",
                  "type": "bool"
                }
              ],
              "name": "add",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "bonusEndBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "claimReward",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "claimRewardFromAllPools",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                }
              ],
              "name": "emergencyWithdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "endBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "getEstimatedReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getMissedBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                }
              ],
              "name": "getPoolId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                }
              ],
              "name": "getPoolInfo",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "contract IERC20",
                      "name": "poolToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint96",
                      "name": "allocationPoint",
                      "type": "uint96"
                    },
                    {
                      "internalType": "uint256",
                      "name": "lastRewardBlock",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "accumulatedRewardPerShare",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LiquidityMiningStorage.PoolInfo",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getPoolInfoList",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "contract IERC20",
                      "name": "poolToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint96",
                      "name": "allocationPoint",
                      "type": "uint96"
                    },
                    {
                      "internalType": "uint256",
                      "name": "lastRewardBlock",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "accumulatedRewardPerShare",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LiquidityMiningStorage.PoolInfo[]",
                  "name": "",
                  "type": "tuple[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getPoolLength",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "getUserAccumulatedReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "getUserAccumulatedRewardList",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "getUserBalanceList",
              "outputs": [
                {
                  "internalType": "uint256[2][]",
                  "name": "",
                  "type": "uint256[2][]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "getUserInfo",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "rewardDebt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "accumulatedReward",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LiquidityMiningStorage.UserInfo",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "getUserInfoList",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "rewardDebt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "accumulatedReward",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LiquidityMiningStorage.UserInfo[]",
                  "name": "",
                  "type": "tuple[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "getUserPoolTokenBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_rewardTokensPerBlock",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_startDelayBlocks",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_numberOfBonusBlocks",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_wrapper",
                  "type": "address"
                },
                {
                  "internalType": "contract ILockedSOV",
                  "name": "_lockedSOV",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_unlockedImmediatelyPercent",
                  "type": "uint256"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOV",
              "outputs": [
                {
                  "internalType": "contract ILockedSOV",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "onTokensDeposited",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolInfoList",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "allocationPoint",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "lastRewardBlock",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "accumulatedRewardPerShare",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rewardTokensPerBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "contract ILockedSOV",
                  "name": "_lockedSOV",
                  "type": "address"
                }
              ],
              "name": "setLockedSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_unlockedImmediatelyPercent",
                  "type": "uint256"
                }
              ],
              "name": "setUnlockedImmediatelyPercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_wrapper",
                  "type": "address"
                }
              ],
              "name": "setWrapper",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "startBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "stopMining",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAllocationPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalUsersBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "transferSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "unlockedImmediatelyPercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "_allocationPoint",
                  "type": "uint96"
                },
                {
                  "internalType": "bool",
                  "name": "_updateAllFlag",
                  "type": "bool"
                }
              ],
              "name": "update",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "updateAllPools",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                }
              ],
              "name": "updatePool",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_poolTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint96[]",
                  "name": "_allocationPoints",
                  "type": "uint96[]"
                },
                {
                  "internalType": "bool",
                  "name": "_updateAllFlag",
                  "type": "bool"
                }
              ],
              "name": "updateTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userInfoMap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rewardDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "accumulatedReward",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrapper",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "add(address,uint96,bool)": {
                "params": {
                  "_allocationPoint": "the allocation point (weight) for the given pool",
                  "_poolToken": "the address of pool token",
                  "_withUpdate": "the flag whether we need to update all pools"
                }
              },
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "claimReward(address,address)": {
                "params": {
                  "_poolToken": "the address of pool token",
                  "_user": "the address of user to claim reward from (can be passed only by wrapper contract)"
                }
              },
              "claimRewardFromAllPools(address)": {
                "params": {
                  "_user": "the address of user to claim reward from (can be passed only by wrapper contract)"
                }
              },
              "deposit(address,uint256,address)": {
                "params": {
                  "_amount": "the amount of pool tokens",
                  "_poolToken": "the address of pool token",
                  "_user": "the address of user, tokens will be deposited to it or to msg.sender"
                }
              },
              "emergencyWithdraw(address)": {
                "details": "EMERGENCY ONLY",
                "params": {
                  "_poolToken": "the address of pool token"
                }
              },
              "getEstimatedReward(address,uint256,uint256)": {
                "params": {
                  "_amount": "the amount of tokens to be deposited",
                  "_duration": "the duration of liquidity providing in seconds",
                  "_poolToken": "the address of pool token"
                }
              },
              "getMissedBalance()": {
                "return": "The amount of SOV tokens according to totalUsersBalance  in excess of actual SOV balance of the LM contract."
              },
              "getPoolId(address)": {
                "params": {
                  "_poolToken": "the address of pool token"
                }
              },
              "getPoolInfo(address)": {
                "params": {
                  "_poolToken": "the address of pool token"
                }
              },
              "getUserAccumulatedReward(address,address)": {
                "params": {
                  "_poolToken": "the address of pool token",
                  "_user": "the user address"
                }
              },
              "getUserAccumulatedRewardList(address)": {
                "params": {
                  "_user": "the address of the user"
                }
              },
              "getUserBalanceList(address)": {
                "params": {
                  "_user": "the address of the user"
                }
              },
              "getUserInfo(address,address)": {
                "params": {
                  "_poolToken": "the address of pool token",
                  "_user": "the address of the user"
                }
              },
              "getUserInfoList(address)": {
                "params": {
                  "_user": "the address of the user"
                }
              },
              "getUserPoolTokenBalance(address,address)": {
                "params": {
                  "_poolToken": "the address of pool token",
                  "_user": "the address of the user"
                }
              },
              "initialize(address,uint256,uint256,uint256,address,address,uint256)": {
                "params": {
                  "_SOV": "The SOV token.",
                  "_lockedSOV": "The contract instance address of the lockedSOV vault.  SOV rewards are not paid directly to liquidity providers. Instead they  are deposited into a lockedSOV vault contract.",
                  "_numberOfBonusBlocks": "The number of blocks when each block will  be calculated as N blocks (BONUS_BLOCK_MULTIPLIER).",
                  "_rewardTokensPerBlock": "The number of reward tokens per block.",
                  "_startDelayBlocks": "The number of blocks should be passed to start  mining.",
                  "_unlockedImmediatelyPercent": "The % which determines how much will be unlocked immediately."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "onTokensDeposited(address,uint256)": {
                "details": "only callable by the pool which issues the tokens",
                "params": {
                  "_amount": "the minted amount",
                  "_user": "the user address"
                }
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "setLockedSOV(address)": {
                "params": {
                  "_lockedSOV": "The contract instance address of the lockedSOV vault."
                }
              },
              "setUnlockedImmediatelyPercent(uint256)": {
                "details": "@dev 10000 is 100%",
                "params": {
                  "_unlockedImmediatelyPercent": "The % which determines how much will be unlocked immediately."
                }
              },
              "setWrapper(address)": {
                "details": "can be set to zero address to remove wrapper"
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "transferSOV(address,uint256)": {
                "params": {
                  "_amount": "The amount to be transferred.",
                  "_receiver": "The address of the SOV receiver."
                }
              },
              "update(address,uint96,bool)": {
                "params": {
                  "_allocationPoint": "the allocation point (weight) for the given pool",
                  "_poolToken": "the address of pool token",
                  "_updateAllFlag": "the flag whether we need to update all pools"
                }
              },
              "updateAllPools()": {
                "details": "Be careful of gas spending!"
              },
              "updatePool(address)": {
                "params": {
                  "_poolToken": "the address of pool token"
                }
              },
              "updateTokens(address[],uint96[],bool)": {
                "params": {
                  "_allocationPoints": "array of allocation points (weight) for the given pools",
                  "_poolTokens": "array of addresses of pool tokens",
                  "_updateAllFlag": "the flag whether we need to update all pools"
                }
              },
              "withdraw(address,uint256,address)": {
                "params": {
                  "_amount": "the amount of pool tokens",
                  "_poolToken": "the address of pool token",
                  "_user": "the user address will be used to process a withdrawal (can be passed only by wrapper contract)"
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b613855806200007a6000396000f3fe608060405234801561001057600080fd5b50600436106102d65760003560e01c80637b46c54f11610182578063c680c0b7116100e9578063e3866c9a116100a2578063f2f46b3b1161007c578063f2f46b3b1461062b578063f2fde38b14610633578063f45346dc14610646578063f729a40414610659576102d6565b8063e3866c9a146105e3578063e788d8d1146105f6578063f2801fe71461060b576102d6565b8063c680c0b71461057c578063caa9a08d1461058f578063d0452aa6146105a2578063d6a49f0e146105b5578063d8c173c4146105c8578063da408679146105db576102d6565b8063ac210cc71161013b578063ac210cc714610536578063b3944d521461053e578063b9ec7d7414610546578063c1d742581461054e578063c2167d9314610556578063c35a934d14610569576102d6565b80637b46c54f146104ee5780638da5cb5b146105015780638f32d59b146105165780639a13ba291461051e578063a1a6690f14610526578063aaf5eb681461052e576102d6565b8063414d57fb116102415780635d50d060116101fa57806369328dec116101d457806369328dec146104925780636ff1c9bc146104a557806370480275146104b8578063787b4026146104cb576102d6565b80635d50d060146104305780635f02c1451461045057806362748fbb14610472576102d6565b8063414d57fb146103af578063429b62e5146103c257806348c84d9e146103e257806348cd4cb1146104025780634953c7821461040a57806356085d4c1461041d576102d6565b80631785f53c116102935780631785f53c1461035e5780631aed6553146103715780631d8f889c1461037957806329d0fa3e1461038c5780632d0857a2146103945780633723de42146103a7576102d6565b806306bfa938146102db578063083c63231461030457806308dcb360146103195780630b1a28511461032e5780630c43a7cd1461034157806310a168f914610356575b600080fd5b6102ee6102e93660046128dd565b610661565b6040516102fb91906136e3565b60405180910390f35b61030c6106e1565b6040516102fb91906136ff565b6103216106e7565b6040516102fb9190613506565b61030c61033c3660046129b2565b6106f6565b61035461034f3660046129f5565b61078f565b005b61030c6109d8565b61035461036c3660046128dd565b6109dd565b61030c610a5c565b610354610387366004612b78565b610a62565b61030c610ae8565b6103546103a2366004612b96565b610aee565b61030c610b52565b6103546103bd366004612a38565b610c04565b6103d56103d03660046128dd565b610cff565b6040516102fb91906134f8565b6103f56103f03660046128dd565b610d14565b6040516102fb91906134e7565b61030c610d85565b6103546104183660046128fb565b610d8b565b61030c61042b3660046128fb565b610db7565b61044361043e3660046128dd565b610dd9565b6040516102fb91906134b4565b61046361045e366004612bd2565b610eaa565b6040516102fb9392919061371b565b6104856104803660046128dd565b610ed6565b6040516102fb91906134d6565b6103546104a0366004612965565b610f8d565b6103546104b33660046128dd565b611120565b6103546104c63660046128dd565b611223565b6104de6104d9366004612b96565b61129c565b6040516102fb9493929190613514565b6103546104fc3660046128dd565b6112e8565b610509611302565b6040516102fb9190613448565b6103d5611311565b61030c611335565b61030c61133b565b61030c611341565b61050961134a565b61030c611359565b61035461135f565b61030c61137e565b6103546105643660046128dd565b611383565b6103546105773660046129f5565b6113e3565b61035461058a366004612935565b61144c565b61030c61059d3660046128dd565b611642565b61030c6105b03660046128fb565b61164d565b6103546105c33660046128dd565b61166a565b6103546105d6366004612935565b6116fb565b610354611708565b6103546105f1366004612adc565b61176c565b6105fe611893565b6040516102fb91906134c5565b61061e6106193660046128fb565b611929565b6040516102fb91906136f1565b61032161198b565b6103546106413660046128dd565b61199a565b610354610654366004612965565b6119ca565b61030c6119d7565b6106696127ce565b6000610674836119dd565b90506007818154811061068357fe5b60009182526020918290206040805160808101825260039390930290910180546001600160a01b0381168452600160a01b90046001600160601b03169383019390935260018301549082015260029091015460608201529392505050565b60055481565b600c546001600160a01b031681565b600080610702856119dd565b905060006007828154811061071357fe5b6000918252602082206003909102019150439061074761073a87601e63ffffffff611a1d16565b839063ffffffff611a5f16565b9050600061075784898585611a84565b9150610780905064e8d4a510006107748a8463ffffffff611ba716565b9063ffffffff611a1d16565b955050505050505b9392505050565b610797611311565b806107b157503360009081526001602052604090205460ff165b6107d65760405162461bcd60e51b81526004016107cd90613643565b60405180910390fd5b6000826001600160601b0316116107ff5760405162461bcd60e51b81526004016107cd90613563565b6001600160a01b0383166108255760405162461bcd60e51b81526004016107cd90613693565b6001600160a01b0383166000908152600860205260409020541561085b5760405162461bcd60e51b81526004016107cd90613663565b80156108695761086961135f565b6000600354431161087c5760035461087e565b435b60095490915061089d906001600160601b03851663ffffffff611a5f16565b600955604080516080810182526001600160a01b038087168083526001600160601b0380881660208086019182528587018881526000606088018181526007805460018101825581845299516003909a027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810180549751909816600160a01b029a8a166001600160a01b03199097169690961790981698909817909455517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68983015594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a90910155915481835260089093529083902091909155905133907f38132ae9e6e6c4e777015bac3679dadd42206fad607b97846830be4b412908c3906109ca908790613729565b60405180910390a350505050565b600a81565b6109e5611311565b610a015760405162461bcd60e51b81526004016107cd90613643565b6001600160a01b03811660009081526001602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f90610a51908390613448565b60405180910390a150565b60045481565b610a6a611311565b80610a8457503360009081526001602052604090205460ff165b610aa05760405162461bcd60e51b81526004016107cd90613643565b6001600160a01b038116610ac65760405162461bcd60e51b81526004016107cd90613583565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60025481565b610af6611311565b80610b1057503360009081526001602052604090205460ff165b610b2c5760405162461bcd60e51b81526004016107cd90613643565b6127108110610b4d5760405162461bcd60e51b81526004016107cd906135e3565b600e55565b600c546040516370a0823160e01b815260009182916001600160a01b03909116906370a0823190610b87903090600401613448565b60206040518083038186803b158015610b9f57600080fd5b505afa158015610bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bd79190810190612bb4565b9050600b54811015610bfb57600b54610bf6908263ffffffff611be116565b610bfe565b60005b91505090565b610c0c611311565b80610c2657503360009081526001602052604090205460ff165b610c425760405162461bcd60e51b81526004016107cd90613643565b838214610c615760405162461bcd60e51b81526004016107cd90613653565b8015610c6f57610c6f61135f565b8360005b81811015610cf65782610ca457610ca4878783818110610c8f57fe5b90506020020160206104fc91908101906128dd565b610cee878783818110610cb357fe5b9050602002016020610cc891908101906128dd565b868684818110610cd457fe5b9050602002016020610ce99190810190612bf1565b611c23565b600101610c73565b50505050505050565b60016020526000908152604090205460ff1681565b600754604080518281526020808402820101909152606091908290828015610d46578160200160208202803883390190505b50905060005b82811015610d7d57610d5e8186611d08565b828281518110610d6a57fe5b6020908102919091010152600101610d4c565b509392505050565b60035481565b6000610d9682611e46565b90506000610da3846119dd565b9050610db181836001611ea2565b50505050565b600080610dc3846119dd565b9050610dcf8184611d08565b9150505b92915050565b600754604080518281526020808402820101909152606091908290828015610e1b57816020015b610e08612808565b815260200190600190039081610e005790505b50905060005b82811015610d7d576000818152600a602090815260408083206001600160a01b03891684529091529020548251839083908110610e5a57fe5b6020026020010151600060028110610e6e57fe5b6020020152610e7d8186611d08565b828281518110610e8957fe5b6020026020010151600160028110610e9d57fe5b6020020152600101610e21565b600a60209081526000928352604080842090915290825290208054600182015460029092015490919083565b600754604080518281526020808402820101909152606091908290828015610f1857816020015b610f05612826565b815260200190600190039081610efd5790505b50905060005b82811015610d7d576000818152600a602090815260408083206001600160a01b038916845282529182902082516060810184528154815260018201549281019290925260020154918101919091528251839083908110610f7a57fe5b6020908102919091010152600101610f1e565b6001600160a01b038316600090815260086020526040902054610fc25760405162461bcd60e51b81526004016107cd906135a3565b6000610fcd82611e46565b90506000610fda856119dd565b9050600060078281548110610feb57fe5b60009182526020808320858452600a825260408085206001600160a01b0389168652909252922080546003909202909201925086111561103d5760405162461bcd60e51b81526004016107cd906135f3565b61104683611f1f565b6110508282612031565b61105e878286600080612088565b8054611070908763ffffffff611be116565b81556006546001600160a01b03163314156110a65781546110a1906001600160a01b0316338863ffffffff61231616565b6110c2565b81546110c2906001600160a01b0316858863ffffffff61231616565b6110cc828261236f565b866001600160a01b0316846001600160a01b03167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8860405161110f91906136ff565b60405180910390a350505050505050565b600061112b826119dd565b905060006007828154811061113c57fe5b60009182526020808320858452600a8252604080852033865290925292206003909102909101915061116d83611f1f565b6111778282612031565b6002810154600b5461118e9163ffffffff611be116565b600b55805460028201805460008085556001850181905590915583546111c4906001600160a01b0316338463ffffffff61231616565b6111ce848461236f565b856001600160a01b0316336001600160a01b03167f1401b6ff3b281e84fd77353369caed48ba7e787dd3821db05cc0064373608201848460405161121392919061370d565b60405180910390a3505050505050565b61122b611311565b6112475760405162461bcd60e51b81526004016107cd90613643565b6001600160a01b038116600090815260016020819052604091829020805460ff19169091179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33990610a51908390613448565b600781815481106112a957fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b0382169350600160a01b9091046001600160601b0316919084565b60006112f3826119dd565b90506112fe81611f1f565b5050565b6000546001600160a01b031690565b600080546001600160a01b0316611326612399565b6001600160a01b031614905090565b600b5481565b60095481565b64e8d4a5100081565b6006546001600160a01b031681565b60075490565b60075460005b818110156112fe5761137681611f1f565b600101611365565b601e81565b61138b611311565b806113a557503360009081526001602052604090205460ff165b6113c15760405162461bcd60e51b81526004016107cd90613643565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6113eb611311565b8061140557503360009081526001602052604090205460ff165b6114215760405162461bcd60e51b81526004016107cd90613643565b80156114345761142f61135f565b61143d565b61143d836112e8565b6114478383611c23565b505050565b611454611311565b8061146e57503360009081526001602052604090205460ff165b61148a5760405162461bcd60e51b81526004016107cd90613643565b6001600160a01b0382166114b05760405162461bcd60e51b81526004016107cd90613623565b806114cd5760405162461bcd60e51b81526004016107cd90613673565b600c546040516370a0823160e01b81526000916001600160a01b0316906370a08231906114fe903090600401613448565b60206040518083038186803b15801561151657600080fd5b505afa15801561152a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061154e9190810190612bb4565b90508082111561155c578091505b600c5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061158e908690869060040161347e565b602060405180830381600087803b1580156115a857600080fd5b505af11580156115bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115e09190810190612abe565b6115fc5760405162461bcd60e51b81526004016107cd906135b3565b826001600160a01b03167fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad8360405161163591906136ff565b60405180910390a2505050565b6000610dd3826119dd565b6000611657612826565b6116618484611929565b51949350505050565b600061167582611e46565b60075490915060005b8181101561169c578061169381856000611ea2565b5060010161167e565b50600d546040516315b6fc1560e11b81526001600160a01b0390911690632b6df82a906116cd908590600401613448565b600060405180830381600087803b1580156116e757600080fd5b505af1158015610cf6573d6000803e3d6000fd5b6112fe338284600161239d565b611710611311565b8061172a57503360009081526001602052604090205460ff165b6117465760405162461bcd60e51b81526004016107cd90613643565b600554156117665760405162461bcd60e51b81526004016107cd906136c3565b43600555565b611774611311565b8061178e57503360009081526001602052604090205460ff165b6117aa5760405162461bcd60e51b81526004016107cd90613643565b600c546001600160a01b0316156117d35760405162461bcd60e51b81526004016107cd906136a3565b6001600160a01b0387166117f95760405162461bcd60e51b81526004016107cd90613693565b600085116118195760405162461bcd60e51b81526004016107cd90613603565b612710811061183a5760405162461bcd60e51b81526004016107cd906135e3565b600c80546001600160a01b03199081166001600160a01b03998a16179091556002969096554394909401600381905592909201600455600680548516918616919091179055600d80549093169316929092179055600e55565b60606007805480602002602001604051908101604052809291908181526020016000905b82821015611920576000848152602090819020604080516080810182526003860290920180546001600160a01b0381168452600160a01b90046001600160601b0316838501526001808201549284019290925260020154606083015290835290920191016118b7565b50505050905090565b611931612826565b600061193c846119dd565b6000908152600a602090815260408083206001600160a01b0387168452825291829020825160608101845281548152600182015492810192909252600201549181019190915291505092915050565b600d546001600160a01b031681565b6119a2611311565b6119be5760405162461bcd60e51b81526004016107cd90613643565b6119c7816124e8565b50565b611447838383600061239d565b600e5481565b6001600160a01b03811660009081526008602052604081205480611a135760405162461bcd60e51b81526004016107cd906135a3565b6000190192915050565b600061078883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612569565b6000828201838110156107885760405162461bcd60e51b81526004016107cd906135c3565b6000806000611a9385856125a0565b90506000611ae26009546107748a60000160149054906101000a90046001600160601b03166001600160601b0316611ad660025487611ba790919063ffffffff16565b9063ffffffff611ba716565b88546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190611b17903090600401613448565b60206040518083038186803b158015611b2f57600080fd5b505afa158015611b43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b679190810190612bb4565b9050611b79818963ffffffff611a5f16565b90506000611b96826107748564e8d4a5100063ffffffff611ba716565b929a92995091975050505050505050565b600082611bb657506000610dd3565b82820282848281611bc357fe5b04146107885760405162461bcd60e51b81526004016107cd90613633565b600061078883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612640565b6000611c2e836119dd565b9050600060078281548110611c3f57fe5b60009182526020909120600390910201546009546001600160601b03600160a01b90920482169250611c8a91851690611c7e908463ffffffff611be116565b9063ffffffff611a5f16565b6009819055508260078381548110611c9e57fe5b6000918252602090912060039091020180546001600160601b0392909216600160a01b026001600160a01b039283161790556040519085169033907f7b327867ecd5d7f5165f3d8af5193f1255f215acb14e229b529a4f8a9991abbc906109ca9087908690613737565b60008060078481548110611d1857fe5b60009182526020808320878452600a825260408085206001600160a01b03808a16875293528085206002600390950290920193840154845491516370a0823160e01b815294965091949193919216906370a0823190611d7b903090600401613448565b60206040518083038186803b158015611d9357600080fd5b505afa158015611da7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dcb9190810190612bb4565b9050836001015443118015611ddf57508015155b15611e07576000611def8561266c565b9150611e039050838263ffffffff611a5f16565b9250505b611e3b8360010154611e2f64e8d4a51000610774868860000154611ba790919063ffffffff16565b9063ffffffff611be116565b979650505050505050565b6000336001600160a01b03831615610dd3576006546001600160a01b0316331480611e7f57503360009081526008602052604090205415155b611e9b5760405162461bcd60e51b81526004016107cd90613683565b5090919050565b600060078481548110611eb157fe5b60009182526020808320878452600a825260408085206001600160a01b0389168652909252922060039091029091019150611eeb85611f1f565b611ef58282612031565b8154611f0e906001600160a01b03168286866001612088565b611f18828261236f565b5050505050565b600060078281548110611f2e57fe5b9060005260206000209060030201905080600101544311611f4f57506119c7565b80546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611f7f903090600401613448565b60206040518083038186803b158015611f9757600080fd5b505afa158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fcf9190810190612bb4565b905080611fe35750436001909101556119c7565b600080611fef8461266c565b60028601549193509150612009908263ffffffff611a5f16565b6002850155436001850155600b54612027908363ffffffff611a5f16565b600b555050505050565b8054156112fe5760006120668260010154611e2f64e8d4a5100061077487600201548760000154611ba790919063ffffffff16565b600283015490915061207e908263ffffffff611a5f16565b6002830155505050565b6002840154600c546040516370a0823160e01b81526000916001600160a01b0316906370a08231906120be903090600401613448565b60206040518083038186803b1580156120d657600080fd5b505afa1580156120ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061210e9190810190612bb4565b90508181106122f857600b5461212a908363ffffffff611be116565b600b5560006002870155600c54600d5460405163095ea7b360e01b81526001600160a01b039283169263095ea7b39261216a92911690869060040161347e565b602060405180830381600087803b15801561218457600080fd5b505af1158015612198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121bc9190810190612abe565b6121d85760405162461bcd60e51b81526004016107cd90613613565b600d54600e54604051630efe6a8b60e01b81526001600160a01b0390921691630efe6a8b9161220d9189918791600401613499565b600060405180830381600087803b15801561222757600080fd5b505af115801561223b573d6000803e3d6000fd5b5050505083156122a857600d546040516315b6fc1560e11b81526001600160a01b0390911690632b6df82a90612275908890600401613448565b600060405180830381600087803b15801561228f57600080fd5b505af11580156122a3573d6000803e3d6000fd5b505050505b866001600160a01b0316856001600160a01b03167f0aa4d283470c904c551d18bb894d37e17674920f3261a7f854be501e25f421b7846040516122eb91906136ff565b60405180910390a3610cf6565b8215610cf65760405162461bcd60e51b81526004016107cd90613573565b60405161144790849063a9059cbb60e01b90612338908690869060240161347e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612689565b600282015481546123909164e8d4a51000916107749163ffffffff611ba716565b60019091015550565b3390565b6001600160a01b0384166000908152600860205260409020546123d25760405162461bcd60e51b81526004016107cd906135a3565b60006001600160a01b0383166123e857336123ea565b825b905060006123f7866119dd565b905060006007828154811061240857fe5b60009182526020808320858452600a825260408085206001600160a01b038916865290925292206003909102909101915061244283611f1f565b61244c8282612031565b86156124895784612474578154612474906001600160a01b031633308a63ffffffff61276e16565b8054612486908863ffffffff611a5f16565b81555b612493828261236f565b876001600160a01b0316846001600160a01b03167f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62896040516124d691906136ff565b60405180910390a35050505050505050565b6001600160a01b03811661250e5760405162461bcd60e51b81526004016107cd90613593565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818361258a5760405162461bcd60e51b81526004016107cd9190613552565b50600083858161259657fe5b0495945050505050565b60006003548310156125b25760035492505b60006005541180156125c5575060055482115b156125d05760055491505b60045482116125f5576125ee600a611ad6848663ffffffff611be116565b9050610dd3565b600454831061260e576125ee828463ffffffff611be116565b6125ee61262660045484611be190919063ffffffff16565b611c7e600a611ad687600454611be190919063ffffffff16565b600081848411156126645760405162461bcd60e51b81526004016107cd9190613552565b505050900390565b600080612680836000856001015443611a84565b91509150915091565b61269b826001600160a01b0316612792565b6126b75760405162461bcd60e51b81526004016107cd906136d3565b60006060836001600160a01b0316836040516126d3919061343c565b6000604051808303816000865af19150503d8060008114612710576040519150601f19603f3d011682016040523d82523d6000602084013e612715565b606091505b5091509150816127375760405162461bcd60e51b81526004016107cd906135d3565b805115610db157808060200190516127529190810190612abe565b610db15760405162461bcd60e51b81526004016107cd906136b3565b604051610db19085906323b872dd60e01b9061233890879087908790602401613456565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906127c657508115155b949350505050565b604051806080016040528060006001600160a01b0316815260200160006001600160601b0316815260200160008152602001600081525090565b60405180604001604052806002906020820280388339509192915050565b60405180606001604052806000815260200160008152602001600081525090565b8035610dd3816137da565b60008083601f84011261286457600080fd5b50813567ffffffffffffffff81111561287c57600080fd5b60208301915083602082028301111561289457600080fd5b9250929050565b8035610dd3816137ee565b8051610dd3816137ee565b8035610dd3816137f7565b8035610dd381613800565b8051610dd381613800565b8035610dd381613809565b6000602082840312156128ef57600080fd5b6000610dcf8484612847565b6000806040838503121561290e57600080fd5b600061291a8585612847565b925050602061292b85828601612847565b9150509250929050565b6000806040838503121561294857600080fd5b60006129548585612847565b925050602061292b858286016128bc565b60008060006060848603121561297a57600080fd5b60006129868686612847565b9350506020612997868287016128bc565b92505060406129a886828701612847565b9150509250925092565b6000806000606084860312156129c757600080fd5b60006129d38686612847565b93505060206129e4868287016128bc565b92505060406129a8868287016128bc565b600080600060608486031215612a0a57600080fd5b6000612a168686612847565b9350506020612a27868287016128d2565b92505060406129a88682870161289b565b600080600080600060608688031215612a5057600080fd5b853567ffffffffffffffff811115612a6757600080fd5b612a7388828901612852565b9550955050602086013567ffffffffffffffff811115612a9257600080fd5b612a9e88828901612852565b93509350506040612ab18882890161289b565b9150509295509295909350565b600060208284031215612ad057600080fd5b6000610dcf84846128a6565b600080600080600080600060e0888a031215612af757600080fd5b6000612b038a8a6128b1565b9750506020612b148a828b016128bc565b9650506040612b258a828b016128bc565b9550506060612b368a828b016128bc565b9450506080612b478a828b01612847565b93505060a0612b588a828b016128b1565b92505060c0612b698a828b016128bc565b91505092959891949750929550565b600060208284031215612b8a57600080fd5b6000610dcf84846128b1565b600060208284031215612ba857600080fd5b6000610dcf84846128bc565b600060208284031215612bc657600080fd5b6000610dcf84846128c7565b60008060408385031215612be557600080fd5b600061291a85856128bc565b600060208284031215612c0357600080fd5b6000610dcf84846128d2565b6000612c1b8383612d63565b505060400190565b6000612c2f83836133a4565b505060800190565b6000612c4383836133ee565b505060600190565b6000612c578383613421565b505060200190565b612c6881613766565b82525050565b6000612c798261374e565b612c838185613758565b9350612c8e83613745565b8060005b83811015612cbc578151612ca68882612c0f565b9750612cb183613745565b925050600101612c92565b509495945050505050565b6000612cd28261374e565b612cdc8185613758565b9350612ce783613745565b8060005b83811015612cbc578151612cff8882612c23565b9750612d0a83613745565b925050600101612ceb565b6000612d208261374e565b612d2a8185613758565b9350612d3583613745565b8060005b83811015612cbc578151612d4d8882612c37565b9750612d5883613745565b925050600101612d39565b612d6c81613752565b612d768184613761565b9250612d818261374b565b8060005b83811015612daf578151612d998782612c4b565b9650612da483613745565b925050600101612d85565b505050505050565b6000612dc28261374e565b612dcc8185613758565b9350612dd783613745565b8060005b83811015612cbc578151612def8882612c4b565b9750612dfa83613745565b925050600101612ddb565b612c6881613771565b6000612e198261374e565b612e238185613761565b9350612e338185602086016137a4565b9290920192915050565b612c6881613776565b6000612e518261374e565b612e5b8185613758565b9350612e6b8185602086016137a4565b612e74816137d0565b9093019392505050565b6000612e8b601883613758565b7f496e76616c696420616c6c6f636174696f6e20706f696e740000000000000000815260200192915050565b6000612ec4601683613758565b7510db185a5b5a5b99c81c995dd85c990819985a5b195960521b815260200192915050565b6000612ef6601a83613758565b7f496e76616c6964206c6f636b6564534f5620416464726573732e000000000000815260200192915050565b6000612f2f602683613758565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000612f77601483613758565b73141bdbdb081d1bdad95b881b9bdd08199bdd5b9960621b815260200192915050565b6000612fa7600f83613758565b6e151c985b9cd9995c8819985a5b1959608a1b815260200192915050565b6000612fd2601b83613758565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061300b602083613758565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000613044603783613758565b7f556e6c6f636b656420696d6d6564696174656c792070657263656e742068617381527f20746f206265206c657373207468616e2031303030302e000000000000000000602082015260400192915050565b60006130a3601283613758565b714e6f7420656e6f7567682062616c616e636560701b815260200192915050565b60006130d1601383613758565b72496e76616c696420737461727420626c6f636b60681b815260200192915050565b6000613100600e83613758565b6d105c1c1c9bdd994819985a5b195960921b815260200192915050565b600061312a601883613758565b7f5265636569766572206164647265737320696e76616c69640000000000000000815260200192915050565b6000613163602183613758565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006131a6600c83613758565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006131ce600f83613758565b6e082e4e4c2f2e640dad2e6dac2e8c6d608b1b815260200192915050565b60006131f9601383613758565b72151bdad95b88185b1c9958591e481859191959606a1b815260200192915050565b6000613228600e83613758565b6d105b5bdd5b9d081a5b9d985b1a5960921b815260200192915050565b6000613252602d83613758565b7f6f6e6c792077726170706572206f7220706f6f6c73206d61792077697468647281526c30bb903337b91030903ab9b2b960991b602082015260400192915050565b60006132a1601583613758565b74496e76616c696420746f6b656e206164647265737360581b815260200192915050565b60006132d2601383613758565b72105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b815260200192915050565b6000613301602a83613758565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b600061334d600f83613758565b6e105b1c9958591e481cdd1bdc1c1959608a1b815260200192915050565b6000613378601f83613758565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b805160808301906133b58482612e3d565b5060208201516133c86020850182613433565b5060408201516133db6040850182613421565b506060820151610db16060850182613421565b805160608301906133ff8482613421565b5060208201516134126020850182613421565b506040820151610db160408501825b612c688161374b565b612c6881613799565b612c688161378d565b60006107888284612e0e565b60208101610dd38284612c5f565b606081016134648286612c5f565b6134716020830185612c5f565b6127c66040830184613421565b6040810161348c8285612c5f565b6107886020830184613421565b606081016134a78286612c5f565b6134716020830185613421565b602080825281016107888184612c6e565b602080825281016107888184612cc7565b602080825281016107888184612d15565b602080825281016107888184612db7565b60208101610dd38284612e05565b60208101610dd38284612e3d565b608081016135228287612e3d565b61352f6020830186613433565b61353c6040830185613421565b6135496060830184613421565b95945050505050565b602080825281016107888184612e46565b60208082528101610dd381612e7e565b60208082528101610dd381612eb7565b60208082528101610dd381612ee9565b60208082528101610dd381612f22565b60208082528101610dd381612f6a565b60208082528101610dd381612f9a565b60208082528101610dd381612fc5565b60208082528101610dd381612ffe565b60208082528101610dd381613037565b60208082528101610dd381613096565b60208082528101610dd3816130c4565b60208082528101610dd3816130f3565b60208082528101610dd38161311d565b60208082528101610dd381613156565b60208082528101610dd381613199565b60208082528101610dd3816131c1565b60208082528101610dd3816131ec565b60208082528101610dd38161321b565b60208082528101610dd381613245565b60208082528101610dd381613294565b60208082528101610dd3816132c5565b60208082528101610dd3816132f4565b60208082528101610dd381613340565b60208082528101610dd38161336b565b60808101610dd382846133a4565b60608101610dd382846133ee565b60208101610dd38284613421565b6040810161348c8285613421565b606081016134a78286613421565b60208101610dd3828461342a565b6040810161348c828561342a565b60200190565b90565b5190565b50600290565b90815260200190565b919050565b6000610dd382613781565b151590565b6000610dd382613766565b6001600160a01b031690565b6001600160601b031690565b6000610dd38261378d565b60005b838110156137bf5781810151838201526020016137a7565b83811115610db15750506000910152565b601f01601f191690565b6137e381613766565b81146119c757600080fd5b6137e381613771565b6137e381613776565b6137e38161374b565b6137e38161378d56fea365627a7a72315820bcffcc0a94a0c04a54b46e97136d3962ffb23cac249c11089e45f48dae4627146c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x3855 DUP1 PUSH3 0x7A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2D6 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B46C54F GT PUSH2 0x182 JUMPI DUP1 PUSH4 0xC680C0B7 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xE3866C9A GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2F46B3B GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x62B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0xF45346DC EQ PUSH2 0x646 JUMPI DUP1 PUSH4 0xF729A404 EQ PUSH2 0x659 JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0xE3866C9A EQ PUSH2 0x5E3 JUMPI DUP1 PUSH4 0xE788D8D1 EQ PUSH2 0x5F6 JUMPI DUP1 PUSH4 0xF2801FE7 EQ PUSH2 0x60B JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0xCAA9A08D EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0xD0452AA6 EQ PUSH2 0x5A2 JUMPI DUP1 PUSH4 0xD6A49F0E EQ PUSH2 0x5B5 JUMPI DUP1 PUSH4 0xD8C173C4 EQ PUSH2 0x5C8 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x5DB JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0xAC210CC7 GT PUSH2 0x13B JUMPI DUP1 PUSH4 0xAC210CC7 EQ PUSH2 0x536 JUMPI DUP1 PUSH4 0xB3944D52 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0xB9EC7D74 EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0xC1D74258 EQ PUSH2 0x54E JUMPI DUP1 PUSH4 0xC2167D93 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xC35A934D EQ PUSH2 0x569 JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0x7B46C54F EQ PUSH2 0x4EE JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x501 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x516 JUMPI DUP1 PUSH4 0x9A13BA29 EQ PUSH2 0x51E JUMPI DUP1 PUSH4 0xA1A6690F EQ PUSH2 0x526 JUMPI DUP1 PUSH4 0xAAF5EB68 EQ PUSH2 0x52E JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0x414D57FB GT PUSH2 0x241 JUMPI DUP1 PUSH4 0x5D50D060 GT PUSH2 0x1FA JUMPI DUP1 PUSH4 0x69328DEC GT PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x69328DEC EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0x6FF1C9BC EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0x787B4026 EQ PUSH2 0x4CB JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0x5D50D060 EQ PUSH2 0x430 JUMPI DUP1 PUSH4 0x5F02C145 EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0x62748FBB EQ PUSH2 0x472 JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0x414D57FB EQ PUSH2 0x3AF JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x48C84D9E EQ PUSH2 0x3E2 JUMPI DUP1 PUSH4 0x48CD4CB1 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x4953C782 EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x56085D4C EQ PUSH2 0x41D JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x293 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x1AED6553 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x1D8F889C EQ PUSH2 0x379 JUMPI DUP1 PUSH4 0x29D0FA3E EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0x2D0857A2 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x3723DE42 EQ PUSH2 0x3A7 JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0x6BFA938 EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0x83C6323 EQ PUSH2 0x304 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0xB1A2851 EQ PUSH2 0x32E JUMPI DUP1 PUSH4 0xC43A7CD EQ PUSH2 0x341 JUMPI DUP1 PUSH4 0x10A168F9 EQ PUSH2 0x356 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EE PUSH2 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x36E3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x30C PUSH2 0x6E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x36FF JUMP JUMPDEST PUSH2 0x321 PUSH2 0x6E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x3506 JUMP JUMPDEST PUSH2 0x30C PUSH2 0x33C CALLDATASIZE PUSH1 0x4 PUSH2 0x29B2 JUMP JUMPDEST PUSH2 0x6F6 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x34F CALLDATASIZE PUSH1 0x4 PUSH2 0x29F5 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x30C PUSH2 0x9D8 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x9DD JUMP JUMPDEST PUSH2 0x30C PUSH2 0xA5C JUMP JUMPDEST PUSH2 0x354 PUSH2 0x387 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B78 JUMP JUMPDEST PUSH2 0xA62 JUMP JUMPDEST PUSH2 0x30C PUSH2 0xAE8 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x3A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B96 JUMP JUMPDEST PUSH2 0xAEE JUMP JUMPDEST PUSH2 0x30C PUSH2 0xB52 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2A38 JUMP JUMPDEST PUSH2 0xC04 JUMP JUMPDEST PUSH2 0x3D5 PUSH2 0x3D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0xCFF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x34F8 JUMP JUMPDEST PUSH2 0x3F5 PUSH2 0x3F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x34E7 JUMP JUMPDEST PUSH2 0x30C PUSH2 0xD85 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x418 CALLDATASIZE PUSH1 0x4 PUSH2 0x28FB JUMP JUMPDEST PUSH2 0xD8B JUMP JUMPDEST PUSH2 0x30C PUSH2 0x42B CALLDATASIZE PUSH1 0x4 PUSH2 0x28FB JUMP JUMPDEST PUSH2 0xDB7 JUMP JUMPDEST PUSH2 0x443 PUSH2 0x43E CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0xDD9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x34B4 JUMP JUMPDEST PUSH2 0x463 PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x2BD2 JUMP JUMPDEST PUSH2 0xEAA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH2 0x485 PUSH2 0x480 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0xED6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x34D6 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x4A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2965 JUMP JUMPDEST PUSH2 0xF8D JUMP JUMPDEST PUSH2 0x354 PUSH2 0x4B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x1120 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x4C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x1223 JUMP JUMPDEST PUSH2 0x4DE PUSH2 0x4D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B96 JUMP JUMPDEST PUSH2 0x129C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3514 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x4FC CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x12E8 JUMP JUMPDEST PUSH2 0x509 PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x3448 JUMP JUMPDEST PUSH2 0x3D5 PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x30C PUSH2 0x1335 JUMP JUMPDEST PUSH2 0x30C PUSH2 0x133B JUMP JUMPDEST PUSH2 0x30C PUSH2 0x1341 JUMP JUMPDEST PUSH2 0x509 PUSH2 0x134A JUMP JUMPDEST PUSH2 0x30C PUSH2 0x1359 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x135F JUMP JUMPDEST PUSH2 0x30C PUSH2 0x137E JUMP JUMPDEST PUSH2 0x354 PUSH2 0x564 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x1383 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x577 CALLDATASIZE PUSH1 0x4 PUSH2 0x29F5 JUMP JUMPDEST PUSH2 0x13E3 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x58A CALLDATASIZE PUSH1 0x4 PUSH2 0x2935 JUMP JUMPDEST PUSH2 0x144C JUMP JUMPDEST PUSH2 0x30C PUSH2 0x59D CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x1642 JUMP JUMPDEST PUSH2 0x30C PUSH2 0x5B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x28FB JUMP JUMPDEST PUSH2 0x164D JUMP JUMPDEST PUSH2 0x354 PUSH2 0x5C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x166A JUMP JUMPDEST PUSH2 0x354 PUSH2 0x5D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2935 JUMP JUMPDEST PUSH2 0x16FB JUMP JUMPDEST PUSH2 0x354 PUSH2 0x1708 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x5F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2ADC JUMP JUMPDEST PUSH2 0x176C JUMP JUMPDEST PUSH2 0x5FE PUSH2 0x1893 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x34C5 JUMP JUMPDEST PUSH2 0x61E PUSH2 0x619 CALLDATASIZE PUSH1 0x4 PUSH2 0x28FB JUMP JUMPDEST PUSH2 0x1929 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x36F1 JUMP JUMPDEST PUSH2 0x321 PUSH2 0x198B JUMP JUMPDEST PUSH2 0x354 PUSH2 0x641 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x199A JUMP JUMPDEST PUSH2 0x354 PUSH2 0x654 CALLDATASIZE PUSH1 0x4 PUSH2 0x2965 JUMP JUMPDEST PUSH2 0x19CA JUMP JUMPDEST PUSH2 0x30C PUSH2 0x19D7 JUMP JUMPDEST PUSH2 0x669 PUSH2 0x27CE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x674 DUP4 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x683 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x3 SWAP4 SWAP1 SWAP4 MUL SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP5 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x702 DUP6 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x713 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD SWAP2 POP NUMBER SWAP1 PUSH2 0x747 PUSH2 0x73A DUP8 PUSH1 0x1E PUSH4 0xFFFFFFFF PUSH2 0x1A1D AND JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x757 DUP5 DUP10 DUP6 DUP6 PUSH2 0x1A84 JUMP JUMPDEST SWAP2 POP PUSH2 0x780 SWAP1 POP PUSH5 0xE8D4A51000 PUSH2 0x774 DUP11 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1BA7 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1A1D AND JUMP JUMPDEST SWAP6 POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x797 PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0x7B1 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x7FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3563 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x825 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3693 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x85B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3663 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x869 JUMPI PUSH2 0x869 PUSH2 0x135F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD NUMBER GT PUSH2 0x87C JUMPI PUSH1 0x3 SLOAD PUSH2 0x87E JUMP JUMPDEST NUMBER JUMPDEST PUSH1 0x9 SLOAD SWAP1 SWAP2 POP PUSH2 0x89D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP9 AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 DUP3 MSTORE DUP6 DUP8 ADD DUP9 DUP2 MSTORE PUSH1 0x0 PUSH1 0x60 DUP9 ADD DUP2 DUP2 MSTORE PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE DUP2 DUP5 MSTORE SWAP10 MLOAD PUSH1 0x3 SWAP1 SWAP11 MUL PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C688 DUP2 ADD DUP1 SLOAD SWAP8 MLOAD SWAP1 SWAP9 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP11 DUP11 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP9 AND SWAP9 SWAP1 SWAP9 OR SWAP1 SWAP5 SSTORE MLOAD PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C689 DUP4 ADD SSTORE SWAP5 MLOAD PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C68A SWAP1 SWAP2 ADD SSTORE SWAP2 SLOAD DUP2 DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP4 MSTORE SWAP1 DUP4 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP1 MLOAD CALLER SWAP1 PUSH32 0x38132AE9E6E6C4E777015BAC3679DADD42206FAD607B97846830BE4B412908C3 SWAP1 PUSH2 0x9CA SWAP1 DUP8 SWAP1 PUSH2 0x3729 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH2 0x9E5 PUSH2 0x1311 JUMP JUMPDEST PUSH2 0xA01 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0xA51 SWAP1 DUP4 SWAP1 PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xA6A PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0xA84 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xAA0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xAC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3583 JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xAF6 PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0xB10 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xB2C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0xB4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35E3 JUMP JUMPDEST PUSH1 0xE SSTORE JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xB87 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBB3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xBD7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP PUSH1 0xB SLOAD DUP2 LT ISZERO PUSH2 0xBFB JUMPI PUSH1 0xB SLOAD PUSH2 0xBF6 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST PUSH2 0xBFE JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0xC0C PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0xC26 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xC42 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST DUP4 DUP3 EQ PUSH2 0xC61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3653 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC6F JUMPI PUSH2 0xC6F PUSH2 0x135F JUMP JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xCF6 JUMPI DUP3 PUSH2 0xCA4 JUMPI PUSH2 0xCA4 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0xC8F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x4FC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0xCEE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0xCB3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xCC8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x28DD JUMP JUMPDEST DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0xCD4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xCE9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BF1 JUMP JUMPDEST PUSH2 0x1C23 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xC73 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP2 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xD46 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xD7D JUMPI PUSH2 0xD5E DUP2 DUP7 PUSH2 0x1D08 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD6A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xD4C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD96 DUP3 PUSH2 0x1E46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xDA3 DUP5 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH2 0xDB1 DUP2 DUP4 PUSH1 0x1 PUSH2 0x1EA2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xDC3 DUP5 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH2 0xDCF DUP2 DUP5 PUSH2 0x1D08 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP2 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xE1B JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xE08 PUSH2 0x2808 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xE00 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xD7D JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0xE5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0xE6E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MSTORE PUSH2 0xE7D DUP2 DUP7 PUSH2 0x1D08 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE89 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x2 DUP2 LT PUSH2 0xE9D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0xE21 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP2 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xF18 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xF05 PUSH2 0x2826 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xEFD JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xD7D JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0xF7A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xF1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xFC2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35A3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFCD DUP3 PUSH2 0x1E46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xFDA DUP6 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xFEB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x3 SWAP1 SWAP3 MUL SWAP1 SWAP3 ADD SWAP3 POP DUP7 GT ISZERO PUSH2 0x103D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35F3 JUMP JUMPDEST PUSH2 0x1046 DUP4 PUSH2 0x1F1F JUMP JUMPDEST PUSH2 0x1050 DUP3 DUP3 PUSH2 0x2031 JUMP JUMPDEST PUSH2 0x105E DUP8 DUP3 DUP7 PUSH1 0x0 DUP1 PUSH2 0x2088 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x1070 SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST DUP2 SSTORE PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO PUSH2 0x10A6 JUMPI DUP2 SLOAD PUSH2 0x10A1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP9 PUSH4 0xFFFFFFFF PUSH2 0x2316 AND JUMP JUMPDEST PUSH2 0x10C2 JUMP JUMPDEST DUP2 SLOAD PUSH2 0x10C2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x2316 AND JUMP JUMPDEST PUSH2 0x10CC DUP3 DUP3 PUSH2 0x236F JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9B1BFA7FA9EE420A16E124F794C35AC9F90472ACC99140EB2F6447C714CAD8EB DUP9 PUSH1 0x40 MLOAD PUSH2 0x110F SWAP2 SWAP1 PUSH2 0x36FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x112B DUP3 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x113C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 CALLER DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x116D DUP4 PUSH2 0x1F1F JUMP JUMPDEST PUSH2 0x1177 DUP3 DUP3 PUSH2 0x2031 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0xB SLOAD PUSH2 0x118E SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST PUSH1 0xB SSTORE DUP1 SLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0x0 DUP1 DUP6 SSTORE PUSH1 0x1 DUP6 ADD DUP2 SWAP1 SSTORE SWAP1 SWAP2 SSTORE DUP4 SLOAD PUSH2 0x11C4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2316 AND JUMP JUMPDEST PUSH2 0x11CE DUP5 DUP5 PUSH2 0x236F JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1401B6FF3B281E84FD77353369CAED48BA7E787DD3821DB05CC0064373608201 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1213 SWAP3 SWAP2 SWAP1 PUSH2 0x370D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x122B PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x1247 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0xA51 SWAP1 DUP4 SWAP1 PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x12A9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP4 POP PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12F3 DUP3 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH2 0x12FE DUP2 PUSH2 0x1F1F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1326 PUSH2 0x2399 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH5 0xE8D4A51000 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x12FE JUMPI PUSH2 0x1376 DUP2 PUSH2 0x1F1F JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1365 JUMP JUMPDEST PUSH1 0x1E DUP2 JUMP JUMPDEST PUSH2 0x138B PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0x13A5 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x13C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x13EB PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0x1405 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1421 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1434 JUMPI PUSH2 0x142F PUSH2 0x135F JUMP JUMPDEST PUSH2 0x143D JUMP JUMPDEST PUSH2 0x143D DUP4 PUSH2 0x12E8 JUMP JUMPDEST PUSH2 0x1447 DUP4 DUP4 PUSH2 0x1C23 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1454 PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0x146E JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x148A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x14B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3623 JUMP JUMPDEST DUP1 PUSH2 0x14CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3673 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x14FE SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x152A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x154E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x155C JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x158E SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x347E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x15E0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2ABE JUMP JUMPDEST PUSH2 0x15FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35B3 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD DUP4 PUSH1 0x40 MLOAD PUSH2 0x1635 SWAP2 SWAP1 PUSH2 0x36FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD3 DUP3 PUSH2 0x19DD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1657 PUSH2 0x2826 JUMP JUMPDEST PUSH2 0x1661 DUP5 DUP5 PUSH2 0x1929 JUMP JUMPDEST MLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1675 DUP3 PUSH2 0x1E46 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x169C JUMPI DUP1 PUSH2 0x1693 DUP2 DUP6 PUSH1 0x0 PUSH2 0x1EA2 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x167E JUMP JUMPDEST POP PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x15B6FC15 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2B6DF82A SWAP1 PUSH2 0x16CD SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x12FE CALLER DUP3 DUP5 PUSH1 0x1 PUSH2 0x239D JUMP JUMPDEST PUSH2 0x1710 PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0x172A JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1746 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x5 SLOAD ISZERO PUSH2 0x1766 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x36C3 JUMP JUMPDEST NUMBER PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH2 0x1774 PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0x178E JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x17AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x17D3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x36A3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x17F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3693 JUMP JUMPDEST PUSH1 0x0 DUP6 GT PUSH2 0x1819 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3603 JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0x183A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35E3 JUMP JUMPDEST PUSH1 0xC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SSTORE NUMBER SWAP5 SWAP1 SWAP5 ADD PUSH1 0x3 DUP2 SWAP1 SSTORE SWAP3 SWAP1 SWAP3 ADD PUSH1 0x4 SSTORE PUSH1 0x6 DUP1 SLOAD DUP6 AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xD DUP1 SLOAD SWAP1 SWAP4 AND SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0xE SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x1920 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x3 DUP7 MUL SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP5 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 DUP6 ADD MSTORE PUSH1 0x1 DUP1 DUP3 ADD SLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0x60 DUP4 ADD MSTORE SWAP1 DUP4 MSTORE SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x18B7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1931 PUSH2 0x2826 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x193C DUP5 PUSH2 0x19DD JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x19A2 PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x19BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH2 0x19C7 DUP2 PUSH2 0x24E8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1447 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x239D JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x1A13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35A3 JUMP JUMPDEST PUSH1 0x0 NOT ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x788 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35C3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A93 DUP6 DUP6 PUSH2 0x25A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1AE2 PUSH1 0x9 SLOAD PUSH2 0x774 DUP11 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1AD6 PUSH1 0x2 SLOAD DUP8 PUSH2 0x1BA7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1BA7 AND JUMP JUMPDEST DUP9 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1B17 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B43 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B67 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B79 DUP2 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B96 DUP3 PUSH2 0x774 DUP6 PUSH5 0xE8D4A51000 PUSH4 0xFFFFFFFF PUSH2 0x1BA7 AND JUMP JUMPDEST SWAP3 SWAP11 SWAP3 SWAP10 POP SWAP2 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1BB6 JUMPI POP PUSH1 0x0 PUSH2 0xDD3 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1BC3 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x788 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3633 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C2E DUP4 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1C3F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD SLOAD PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP3 POP PUSH2 0x1C8A SWAP2 DUP6 AND SWAP1 PUSH2 0x1C7E SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST PUSH1 0x9 DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1C9E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP6 AND SWAP1 CALLER SWAP1 PUSH32 0x7B327867ECD5D7F5165F3D8AF5193F1255F215ACB14E229B529A4F8A9991ABBC SWAP1 PUSH2 0x9CA SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x3737 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x7 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1D18 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND DUP8 MSTORE SWAP4 MSTORE DUP1 DUP6 KECCAK256 PUSH1 0x2 PUSH1 0x3 SWAP1 SWAP6 MUL SWAP1 SWAP3 ADD SWAP4 DUP5 ADD SLOAD DUP5 SLOAD SWAP2 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP5 SWAP7 POP SWAP2 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1D7B SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1DCB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 ADD SLOAD NUMBER GT DUP1 ISZERO PUSH2 0x1DDF JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1E07 JUMPI PUSH1 0x0 PUSH2 0x1DEF DUP6 PUSH2 0x266C JUMP JUMPDEST SWAP2 POP PUSH2 0x1E03 SWAP1 POP DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST SWAP3 POP POP JUMPDEST PUSH2 0x1E3B DUP4 PUSH1 0x1 ADD SLOAD PUSH2 0x1E2F PUSH5 0xE8D4A51000 PUSH2 0x774 DUP7 DUP9 PUSH1 0x0 ADD SLOAD PUSH2 0x1BA7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xDD3 JUMPI PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x1E7F JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO JUMPDEST PUSH2 0x1E9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3683 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1EB1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x1EEB DUP6 PUSH2 0x1F1F JUMP JUMPDEST PUSH2 0x1EF5 DUP3 DUP3 PUSH2 0x2031 JUMP JUMPDEST DUP2 SLOAD PUSH2 0x1F0E SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP7 DUP7 PUSH1 0x1 PUSH2 0x2088 JUMP JUMPDEST PUSH2 0x1F18 DUP3 DUP3 PUSH2 0x236F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1F2E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD SWAP1 POP DUP1 PUSH1 0x1 ADD SLOAD NUMBER GT PUSH2 0x1F4F JUMPI POP PUSH2 0x19C7 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1F7F SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FAB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1FCF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1FE3 JUMPI POP NUMBER PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH2 0x19C7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1FEF DUP5 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x2 DUP7 ADD SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x2009 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST PUSH1 0x2 DUP6 ADD SSTORE NUMBER PUSH1 0x1 DUP6 ADD SSTORE PUSH1 0xB SLOAD PUSH2 0x2027 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST PUSH1 0xB SSTORE POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD ISZERO PUSH2 0x12FE JUMPI PUSH1 0x0 PUSH2 0x2066 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1E2F PUSH5 0xE8D4A51000 PUSH2 0x774 DUP8 PUSH1 0x2 ADD SLOAD DUP8 PUSH1 0x0 ADD SLOAD PUSH2 0x1BA7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x207E SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x20BE SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x210E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT PUSH2 0x22F8 JUMPI PUSH1 0xB SLOAD PUSH2 0x212A SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x0 PUSH1 0x2 DUP8 ADD SSTORE PUSH1 0xC SLOAD PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x216A SWAP3 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x347E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2198 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x21BC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2ABE JUMP JUMPDEST PUSH2 0x21D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3613 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0xE SLOAD PUSH1 0x40 MLOAD PUSH4 0xEFE6A8B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xEFE6A8B SWAP2 PUSH2 0x220D SWAP2 DUP10 SWAP2 DUP8 SWAP2 PUSH1 0x4 ADD PUSH2 0x3499 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x223B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP4 ISZERO PUSH2 0x22A8 JUMPI PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x15B6FC15 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2B6DF82A SWAP1 PUSH2 0x2275 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x228F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xAA4D283470C904C551D18BB894D37E17674920F3261A7F854BE501E25F421B7 DUP5 PUSH1 0x40 MLOAD PUSH2 0x22EB SWAP2 SWAP1 PUSH2 0x36FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xCF6 JUMP JUMPDEST DUP3 ISZERO PUSH2 0xCF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3573 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1447 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x2338 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x347E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2689 JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD DUP2 SLOAD PUSH2 0x2390 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x774 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x1BA7 AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x23D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x23E8 JUMPI CALLER PUSH2 0x23EA JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x23F7 DUP7 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2408 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x2442 DUP4 PUSH2 0x1F1F JUMP JUMPDEST PUSH2 0x244C DUP3 DUP3 PUSH2 0x2031 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x2489 JUMPI DUP5 PUSH2 0x2474 JUMPI DUP2 SLOAD PUSH2 0x2474 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP11 PUSH4 0xFFFFFFFF PUSH2 0x276E AND JUMP JUMPDEST DUP1 SLOAD PUSH2 0x2486 SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST DUP2 SSTORE JUMPDEST PUSH2 0x2493 DUP3 DUP3 PUSH2 0x236F JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5548C837AB068CF56A2C2479DF0882A4922FD203EDB7517321831D95078C5F62 DUP10 PUSH1 0x40 MLOAD PUSH2 0x24D6 SWAP2 SWAP1 PUSH2 0x36FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x250E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3593 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x258A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP2 SWAP1 PUSH2 0x3552 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x2596 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD DUP4 LT ISZERO PUSH2 0x25B2 JUMPI PUSH1 0x3 SLOAD SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD GT DUP1 ISZERO PUSH2 0x25C5 JUMPI POP PUSH1 0x5 SLOAD DUP3 GT JUMPDEST ISZERO PUSH2 0x25D0 JUMPI PUSH1 0x5 SLOAD SWAP2 POP JUMPDEST PUSH1 0x4 SLOAD DUP3 GT PUSH2 0x25F5 JUMPI PUSH2 0x25EE PUSH1 0xA PUSH2 0x1AD6 DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST SWAP1 POP PUSH2 0xDD3 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP4 LT PUSH2 0x260E JUMPI PUSH2 0x25EE DUP3 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST PUSH2 0x25EE PUSH2 0x2626 PUSH1 0x4 SLOAD DUP5 PUSH2 0x1BE1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1C7E PUSH1 0xA PUSH2 0x1AD6 DUP8 PUSH1 0x4 SLOAD PUSH2 0x1BE1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2664 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP2 SWAP1 PUSH2 0x3552 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2680 DUP4 PUSH1 0x0 DUP6 PUSH1 0x1 ADD SLOAD NUMBER PUSH2 0x1A84 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x269B DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2792 JUMP JUMPDEST PUSH2 0x26B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x36D3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x26D3 SWAP2 SWAP1 PUSH2 0x343C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2710 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2715 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2737 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35D3 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xDB1 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x2752 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2ABE JUMP JUMPDEST PUSH2 0xDB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x36B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDB1 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x2338 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x3456 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x27C6 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xDD3 DUP2 PUSH2 0x37DA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x287C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2894 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xDD3 DUP2 PUSH2 0x37EE JUMP JUMPDEST DUP1 MLOAD PUSH2 0xDD3 DUP2 PUSH2 0x37EE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xDD3 DUP2 PUSH2 0x37F7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xDD3 DUP2 PUSH2 0x3800 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xDD3 DUP2 PUSH2 0x3800 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xDD3 DUP2 PUSH2 0x3809 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP5 DUP5 PUSH2 0x2847 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x290E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x291A DUP6 DUP6 PUSH2 0x2847 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x292B DUP6 DUP3 DUP7 ADD PUSH2 0x2847 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2954 DUP6 DUP6 PUSH2 0x2847 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x292B DUP6 DUP3 DUP7 ADD PUSH2 0x28BC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x297A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2986 DUP7 DUP7 PUSH2 0x2847 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2997 DUP7 DUP3 DUP8 ADD PUSH2 0x28BC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x29A8 DUP7 DUP3 DUP8 ADD PUSH2 0x2847 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x29C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29D3 DUP7 DUP7 PUSH2 0x2847 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x29E4 DUP7 DUP3 DUP8 ADD PUSH2 0x28BC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x29A8 DUP7 DUP3 DUP8 ADD PUSH2 0x28BC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A16 DUP7 DUP7 PUSH2 0x2847 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2A27 DUP7 DUP3 DUP8 ADD PUSH2 0x28D2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x29A8 DUP7 DUP3 DUP8 ADD PUSH2 0x289B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2A50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A73 DUP9 DUP3 DUP10 ADD PUSH2 0x2852 JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A9E DUP9 DUP3 DUP10 ADD PUSH2 0x2852 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP PUSH1 0x40 PUSH2 0x2AB1 DUP9 DUP3 DUP10 ADD PUSH2 0x289B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP5 DUP5 PUSH2 0x28A6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2AF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B03 DUP11 DUP11 PUSH2 0x28B1 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x2B14 DUP11 DUP3 DUP12 ADD PUSH2 0x28BC JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x2B25 DUP11 DUP3 DUP12 ADD PUSH2 0x28BC JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x2B36 DUP11 DUP3 DUP12 ADD PUSH2 0x28BC JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x2B47 DUP11 DUP3 DUP12 ADD PUSH2 0x2847 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x2B58 DUP11 DUP3 DUP12 ADD PUSH2 0x28B1 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x2B69 DUP11 DUP3 DUP12 ADD PUSH2 0x28BC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP5 DUP5 PUSH2 0x28B1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP5 DUP5 PUSH2 0x28BC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP5 DUP5 PUSH2 0x28C7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x291A DUP6 DUP6 PUSH2 0x28BC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP5 DUP5 PUSH2 0x28D2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1B DUP4 DUP4 PUSH2 0x2D63 JUMP JUMPDEST POP POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C2F DUP4 DUP4 PUSH2 0x33A4 JUMP JUMPDEST POP POP PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C43 DUP4 DUP4 PUSH2 0x33EE JUMP JUMPDEST POP POP PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C57 DUP4 DUP4 PUSH2 0x3421 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x2C68 DUP2 PUSH2 0x3766 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C79 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x2C83 DUP2 DUP6 PUSH2 0x3758 JUMP JUMPDEST SWAP4 POP PUSH2 0x2C8E DUP4 PUSH2 0x3745 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CBC JUMPI DUP2 MLOAD PUSH2 0x2CA6 DUP9 DUP3 PUSH2 0x2C0F JUMP JUMPDEST SWAP8 POP PUSH2 0x2CB1 DUP4 PUSH2 0x3745 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2C92 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CD2 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x2CDC DUP2 DUP6 PUSH2 0x3758 JUMP JUMPDEST SWAP4 POP PUSH2 0x2CE7 DUP4 PUSH2 0x3745 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CBC JUMPI DUP2 MLOAD PUSH2 0x2CFF DUP9 DUP3 PUSH2 0x2C23 JUMP JUMPDEST SWAP8 POP PUSH2 0x2D0A DUP4 PUSH2 0x3745 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2CEB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D20 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x2D2A DUP2 DUP6 PUSH2 0x3758 JUMP JUMPDEST SWAP4 POP PUSH2 0x2D35 DUP4 PUSH2 0x3745 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CBC JUMPI DUP2 MLOAD PUSH2 0x2D4D DUP9 DUP3 PUSH2 0x2C37 JUMP JUMPDEST SWAP8 POP PUSH2 0x2D58 DUP4 PUSH2 0x3745 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2D39 JUMP JUMPDEST PUSH2 0x2D6C DUP2 PUSH2 0x3752 JUMP JUMPDEST PUSH2 0x2D76 DUP2 DUP5 PUSH2 0x3761 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D81 DUP3 PUSH2 0x374B JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DAF JUMPI DUP2 MLOAD PUSH2 0x2D99 DUP8 DUP3 PUSH2 0x2C4B JUMP JUMPDEST SWAP7 POP PUSH2 0x2DA4 DUP4 PUSH2 0x3745 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2D85 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DC2 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x2DCC DUP2 DUP6 PUSH2 0x3758 JUMP JUMPDEST SWAP4 POP PUSH2 0x2DD7 DUP4 PUSH2 0x3745 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CBC JUMPI DUP2 MLOAD PUSH2 0x2DEF DUP9 DUP3 PUSH2 0x2C4B JUMP JUMPDEST SWAP8 POP PUSH2 0x2DFA DUP4 PUSH2 0x3745 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2DDB JUMP JUMPDEST PUSH2 0x2C68 DUP2 PUSH2 0x3771 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E19 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x2E23 DUP2 DUP6 PUSH2 0x3761 JUMP JUMPDEST SWAP4 POP PUSH2 0x2E33 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x37A4 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2C68 DUP2 PUSH2 0x3776 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E51 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x2E5B DUP2 DUP6 PUSH2 0x3758 JUMP JUMPDEST SWAP4 POP PUSH2 0x2E6B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x37A4 JUMP JUMPDEST PUSH2 0x2E74 DUP2 PUSH2 0x37D0 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E8B PUSH1 0x18 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x496E76616C696420616C6C6F636174696F6E20706F696E740000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EC4 PUSH1 0x16 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH22 0x10DB185A5B5A5B99C81C995DD85C990819985A5B1959 PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EF6 PUSH1 0x1A DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x496E76616C6964206C6F636B6564534F5620416464726573732E000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F2F PUSH1 0x26 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F77 PUSH1 0x14 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH20 0x141BDBDB081D1BDAD95B881B9BDD08199BDD5B99 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FA7 PUSH1 0xF DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH15 0x151C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FD2 PUSH1 0x1B DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x300B PUSH1 0x20 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3044 PUSH1 0x37 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x556E6C6F636B656420696D6D6564696174656C792070657263656E7420686173 DUP2 MSTORE PUSH32 0x20746F206265206C657373207468616E2031303030302E000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30A3 PUSH1 0x12 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH18 0x4E6F7420656E6F7567682062616C616E6365 PUSH1 0x70 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30D1 PUSH1 0x13 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH19 0x496E76616C696420737461727420626C6F636B PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3100 PUSH1 0xE DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH14 0x105C1C1C9BDD994819985A5B1959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312A PUSH1 0x18 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x5265636569766572206164647265737320696E76616C69640000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3163 PUSH1 0x21 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31A6 PUSH1 0xC DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31CE PUSH1 0xF DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH15 0x82E4E4C2F2E640DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31F9 PUSH1 0x13 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH19 0x151BDAD95B88185B1C9958591E481859191959 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3228 PUSH1 0xE DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH14 0x105B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3252 PUSH1 0x2D DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x6F6E6C792077726170706572206F7220706F6F6C73206D617920776974686472 DUP2 MSTORE PUSH13 0x30BB903337B91030903AB9B2B9 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32A1 PUSH1 0x15 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH21 0x496E76616C696420746F6B656E2061646472657373 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32D2 PUSH1 0x13 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH19 0x105B1C9958591E481A5B9A5D1A585B1A5E9959 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3301 PUSH1 0x2A DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x334D PUSH1 0xF DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH15 0x105B1C9958591E481CDD1BDC1C1959 PUSH1 0x8A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3378 PUSH1 0x1F DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP4 ADD SWAP1 PUSH2 0x33B5 DUP5 DUP3 PUSH2 0x2E3D JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x33C8 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x3433 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x33DB PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x3421 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0xDB1 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x3421 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x33FF DUP5 DUP3 PUSH2 0x3421 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x3412 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x3421 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0xDB1 PUSH1 0x40 DUP6 ADD DUP3 JUMPDEST PUSH2 0x2C68 DUP2 PUSH2 0x374B JUMP JUMPDEST PUSH2 0x2C68 DUP2 PUSH2 0x3799 JUMP JUMPDEST PUSH2 0x2C68 DUP2 PUSH2 0x378D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP3 DUP5 PUSH2 0x2E0E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x2C5F JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3464 DUP3 DUP7 PUSH2 0x2C5F JUMP JUMPDEST PUSH2 0x3471 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2C5F JUMP JUMPDEST PUSH2 0x27C6 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x348C DUP3 DUP6 PUSH2 0x2C5F JUMP JUMPDEST PUSH2 0x788 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x34A7 DUP3 DUP7 PUSH2 0x2C5F JUMP JUMPDEST PUSH2 0x3471 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x788 DUP2 DUP5 PUSH2 0x2C6E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x788 DUP2 DUP5 PUSH2 0x2CC7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x788 DUP2 DUP5 PUSH2 0x2D15 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x788 DUP2 DUP5 PUSH2 0x2DB7 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x2E05 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x2E3D JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3522 DUP3 DUP8 PUSH2 0x2E3D JUMP JUMPDEST PUSH2 0x352F PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3433 JUMP JUMPDEST PUSH2 0x353C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3421 JUMP JUMPDEST PUSH2 0x3549 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x3421 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x788 DUP2 DUP5 PUSH2 0x2E46 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2E7E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2EB7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2F22 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2F6A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2F9A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2FC5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2FFE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3037 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3096 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x30C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x30F3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3156 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3199 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x31C1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x31EC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x321B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3245 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3294 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x32C5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x32F4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3340 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x336B JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x33A4 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x33EE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x348C DUP3 DUP6 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x34A7 DUP3 DUP7 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x342A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x348C DUP3 DUP6 PUSH2 0x342A JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x2 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD3 DUP3 PUSH2 0x3781 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD3 DUP3 PUSH2 0x3766 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD3 DUP3 PUSH2 0x378D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x37BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37A7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xDB1 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x37E3 DUP2 PUSH2 0x3766 JUMP JUMPDEST DUP2 EQ PUSH2 0x19C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x37E3 DUP2 PUSH2 0x3771 JUMP JUMPDEST PUSH2 0x37E3 DUP2 PUSH2 0x3776 JUMP JUMPDEST PUSH2 0x37E3 DUP2 PUSH2 0x374B JUMP JUMPDEST PUSH2 0x37E3 DUP2 PUSH2 0x378D JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xBC SELFDESTRUCT 0xCC EXP SWAP5 LOG0 0xC0 0x4A SLOAD 0xB4 PUSH15 0x97136D3962FFB23CAC249C11089E45 DELEGATECALL DUP14 0xAE CHAINID 0x27 EQ PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "247:23275:32:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;247:23275:32;;780:87:137;853:10;780:87;:::o;247:23275:32:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102d65760003560e01c80637b46c54f11610182578063c680c0b7116100e9578063e3866c9a116100a2578063f2f46b3b1161007c578063f2f46b3b1461062b578063f2fde38b14610633578063f45346dc14610646578063f729a40414610659576102d6565b8063e3866c9a146105e3578063e788d8d1146105f6578063f2801fe71461060b576102d6565b8063c680c0b71461057c578063caa9a08d1461058f578063d0452aa6146105a2578063d6a49f0e146105b5578063d8c173c4146105c8578063da408679146105db576102d6565b8063ac210cc71161013b578063ac210cc714610536578063b3944d521461053e578063b9ec7d7414610546578063c1d742581461054e578063c2167d9314610556578063c35a934d14610569576102d6565b80637b46c54f146104ee5780638da5cb5b146105015780638f32d59b146105165780639a13ba291461051e578063a1a6690f14610526578063aaf5eb681461052e576102d6565b8063414d57fb116102415780635d50d060116101fa57806369328dec116101d457806369328dec146104925780636ff1c9bc146104a557806370480275146104b8578063787b4026146104cb576102d6565b80635d50d060146104305780635f02c1451461045057806362748fbb14610472576102d6565b8063414d57fb146103af578063429b62e5146103c257806348c84d9e146103e257806348cd4cb1146104025780634953c7821461040a57806356085d4c1461041d576102d6565b80631785f53c116102935780631785f53c1461035e5780631aed6553146103715780631d8f889c1461037957806329d0fa3e1461038c5780632d0857a2146103945780633723de42146103a7576102d6565b806306bfa938146102db578063083c63231461030457806308dcb360146103195780630b1a28511461032e5780630c43a7cd1461034157806310a168f914610356575b600080fd5b6102ee6102e93660046128dd565b610661565b6040516102fb91906136e3565b60405180910390f35b61030c6106e1565b6040516102fb91906136ff565b6103216106e7565b6040516102fb9190613506565b61030c61033c3660046129b2565b6106f6565b61035461034f3660046129f5565b61078f565b005b61030c6109d8565b61035461036c3660046128dd565b6109dd565b61030c610a5c565b610354610387366004612b78565b610a62565b61030c610ae8565b6103546103a2366004612b96565b610aee565b61030c610b52565b6103546103bd366004612a38565b610c04565b6103d56103d03660046128dd565b610cff565b6040516102fb91906134f8565b6103f56103f03660046128dd565b610d14565b6040516102fb91906134e7565b61030c610d85565b6103546104183660046128fb565b610d8b565b61030c61042b3660046128fb565b610db7565b61044361043e3660046128dd565b610dd9565b6040516102fb91906134b4565b61046361045e366004612bd2565b610eaa565b6040516102fb9392919061371b565b6104856104803660046128dd565b610ed6565b6040516102fb91906134d6565b6103546104a0366004612965565b610f8d565b6103546104b33660046128dd565b611120565b6103546104c63660046128dd565b611223565b6104de6104d9366004612b96565b61129c565b6040516102fb9493929190613514565b6103546104fc3660046128dd565b6112e8565b610509611302565b6040516102fb9190613448565b6103d5611311565b61030c611335565b61030c61133b565b61030c611341565b61050961134a565b61030c611359565b61035461135f565b61030c61137e565b6103546105643660046128dd565b611383565b6103546105773660046129f5565b6113e3565b61035461058a366004612935565b61144c565b61030c61059d3660046128dd565b611642565b61030c6105b03660046128fb565b61164d565b6103546105c33660046128dd565b61166a565b6103546105d6366004612935565b6116fb565b610354611708565b6103546105f1366004612adc565b61176c565b6105fe611893565b6040516102fb91906134c5565b61061e6106193660046128fb565b611929565b6040516102fb91906136f1565b61032161198b565b6103546106413660046128dd565b61199a565b610354610654366004612965565b6119ca565b61030c6119d7565b6106696127ce565b6000610674836119dd565b90506007818154811061068357fe5b60009182526020918290206040805160808101825260039390930290910180546001600160a01b0381168452600160a01b90046001600160601b03169383019390935260018301549082015260029091015460608201529392505050565b60055481565b600c546001600160a01b031681565b600080610702856119dd565b905060006007828154811061071357fe5b6000918252602082206003909102019150439061074761073a87601e63ffffffff611a1d16565b839063ffffffff611a5f16565b9050600061075784898585611a84565b9150610780905064e8d4a510006107748a8463ffffffff611ba716565b9063ffffffff611a1d16565b955050505050505b9392505050565b610797611311565b806107b157503360009081526001602052604090205460ff165b6107d65760405162461bcd60e51b81526004016107cd90613643565b60405180910390fd5b6000826001600160601b0316116107ff5760405162461bcd60e51b81526004016107cd90613563565b6001600160a01b0383166108255760405162461bcd60e51b81526004016107cd90613693565b6001600160a01b0383166000908152600860205260409020541561085b5760405162461bcd60e51b81526004016107cd90613663565b80156108695761086961135f565b6000600354431161087c5760035461087e565b435b60095490915061089d906001600160601b03851663ffffffff611a5f16565b600955604080516080810182526001600160a01b038087168083526001600160601b0380881660208086019182528587018881526000606088018181526007805460018101825581845299516003909a027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810180549751909816600160a01b029a8a166001600160a01b03199097169690961790981698909817909455517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68983015594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a90910155915481835260089093529083902091909155905133907f38132ae9e6e6c4e777015bac3679dadd42206fad607b97846830be4b412908c3906109ca908790613729565b60405180910390a350505050565b600a81565b6109e5611311565b610a015760405162461bcd60e51b81526004016107cd90613643565b6001600160a01b03811660009081526001602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f90610a51908390613448565b60405180910390a150565b60045481565b610a6a611311565b80610a8457503360009081526001602052604090205460ff165b610aa05760405162461bcd60e51b81526004016107cd90613643565b6001600160a01b038116610ac65760405162461bcd60e51b81526004016107cd90613583565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60025481565b610af6611311565b80610b1057503360009081526001602052604090205460ff165b610b2c5760405162461bcd60e51b81526004016107cd90613643565b6127108110610b4d5760405162461bcd60e51b81526004016107cd906135e3565b600e55565b600c546040516370a0823160e01b815260009182916001600160a01b03909116906370a0823190610b87903090600401613448565b60206040518083038186803b158015610b9f57600080fd5b505afa158015610bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bd79190810190612bb4565b9050600b54811015610bfb57600b54610bf6908263ffffffff611be116565b610bfe565b60005b91505090565b610c0c611311565b80610c2657503360009081526001602052604090205460ff165b610c425760405162461bcd60e51b81526004016107cd90613643565b838214610c615760405162461bcd60e51b81526004016107cd90613653565b8015610c6f57610c6f61135f565b8360005b81811015610cf65782610ca457610ca4878783818110610c8f57fe5b90506020020160206104fc91908101906128dd565b610cee878783818110610cb357fe5b9050602002016020610cc891908101906128dd565b868684818110610cd457fe5b9050602002016020610ce99190810190612bf1565b611c23565b600101610c73565b50505050505050565b60016020526000908152604090205460ff1681565b600754604080518281526020808402820101909152606091908290828015610d46578160200160208202803883390190505b50905060005b82811015610d7d57610d5e8186611d08565b828281518110610d6a57fe5b6020908102919091010152600101610d4c565b509392505050565b60035481565b6000610d9682611e46565b90506000610da3846119dd565b9050610db181836001611ea2565b50505050565b600080610dc3846119dd565b9050610dcf8184611d08565b9150505b92915050565b600754604080518281526020808402820101909152606091908290828015610e1b57816020015b610e08612808565b815260200190600190039081610e005790505b50905060005b82811015610d7d576000818152600a602090815260408083206001600160a01b03891684529091529020548251839083908110610e5a57fe5b6020026020010151600060028110610e6e57fe5b6020020152610e7d8186611d08565b828281518110610e8957fe5b6020026020010151600160028110610e9d57fe5b6020020152600101610e21565b600a60209081526000928352604080842090915290825290208054600182015460029092015490919083565b600754604080518281526020808402820101909152606091908290828015610f1857816020015b610f05612826565b815260200190600190039081610efd5790505b50905060005b82811015610d7d576000818152600a602090815260408083206001600160a01b038916845282529182902082516060810184528154815260018201549281019290925260020154918101919091528251839083908110610f7a57fe5b6020908102919091010152600101610f1e565b6001600160a01b038316600090815260086020526040902054610fc25760405162461bcd60e51b81526004016107cd906135a3565b6000610fcd82611e46565b90506000610fda856119dd565b9050600060078281548110610feb57fe5b60009182526020808320858452600a825260408085206001600160a01b0389168652909252922080546003909202909201925086111561103d5760405162461bcd60e51b81526004016107cd906135f3565b61104683611f1f565b6110508282612031565b61105e878286600080612088565b8054611070908763ffffffff611be116565b81556006546001600160a01b03163314156110a65781546110a1906001600160a01b0316338863ffffffff61231616565b6110c2565b81546110c2906001600160a01b0316858863ffffffff61231616565b6110cc828261236f565b866001600160a01b0316846001600160a01b03167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8860405161110f91906136ff565b60405180910390a350505050505050565b600061112b826119dd565b905060006007828154811061113c57fe5b60009182526020808320858452600a8252604080852033865290925292206003909102909101915061116d83611f1f565b6111778282612031565b6002810154600b5461118e9163ffffffff611be116565b600b55805460028201805460008085556001850181905590915583546111c4906001600160a01b0316338463ffffffff61231616565b6111ce848461236f565b856001600160a01b0316336001600160a01b03167f1401b6ff3b281e84fd77353369caed48ba7e787dd3821db05cc0064373608201848460405161121392919061370d565b60405180910390a3505050505050565b61122b611311565b6112475760405162461bcd60e51b81526004016107cd90613643565b6001600160a01b038116600090815260016020819052604091829020805460ff19169091179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33990610a51908390613448565b600781815481106112a957fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b0382169350600160a01b9091046001600160601b0316919084565b60006112f3826119dd565b90506112fe81611f1f565b5050565b6000546001600160a01b031690565b600080546001600160a01b0316611326612399565b6001600160a01b031614905090565b600b5481565b60095481565b64e8d4a5100081565b6006546001600160a01b031681565b60075490565b60075460005b818110156112fe5761137681611f1f565b600101611365565b601e81565b61138b611311565b806113a557503360009081526001602052604090205460ff165b6113c15760405162461bcd60e51b81526004016107cd90613643565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6113eb611311565b8061140557503360009081526001602052604090205460ff165b6114215760405162461bcd60e51b81526004016107cd90613643565b80156114345761142f61135f565b61143d565b61143d836112e8565b6114478383611c23565b505050565b611454611311565b8061146e57503360009081526001602052604090205460ff165b61148a5760405162461bcd60e51b81526004016107cd90613643565b6001600160a01b0382166114b05760405162461bcd60e51b81526004016107cd90613623565b806114cd5760405162461bcd60e51b81526004016107cd90613673565b600c546040516370a0823160e01b81526000916001600160a01b0316906370a08231906114fe903090600401613448565b60206040518083038186803b15801561151657600080fd5b505afa15801561152a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061154e9190810190612bb4565b90508082111561155c578091505b600c5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061158e908690869060040161347e565b602060405180830381600087803b1580156115a857600080fd5b505af11580156115bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115e09190810190612abe565b6115fc5760405162461bcd60e51b81526004016107cd906135b3565b826001600160a01b03167fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad8360405161163591906136ff565b60405180910390a2505050565b6000610dd3826119dd565b6000611657612826565b6116618484611929565b51949350505050565b600061167582611e46565b60075490915060005b8181101561169c578061169381856000611ea2565b5060010161167e565b50600d546040516315b6fc1560e11b81526001600160a01b0390911690632b6df82a906116cd908590600401613448565b600060405180830381600087803b1580156116e757600080fd5b505af1158015610cf6573d6000803e3d6000fd5b6112fe338284600161239d565b611710611311565b8061172a57503360009081526001602052604090205460ff165b6117465760405162461bcd60e51b81526004016107cd90613643565b600554156117665760405162461bcd60e51b81526004016107cd906136c3565b43600555565b611774611311565b8061178e57503360009081526001602052604090205460ff165b6117aa5760405162461bcd60e51b81526004016107cd90613643565b600c546001600160a01b0316156117d35760405162461bcd60e51b81526004016107cd906136a3565b6001600160a01b0387166117f95760405162461bcd60e51b81526004016107cd90613693565b600085116118195760405162461bcd60e51b81526004016107cd90613603565b612710811061183a5760405162461bcd60e51b81526004016107cd906135e3565b600c80546001600160a01b03199081166001600160a01b03998a16179091556002969096554394909401600381905592909201600455600680548516918616919091179055600d80549093169316929092179055600e55565b60606007805480602002602001604051908101604052809291908181526020016000905b82821015611920576000848152602090819020604080516080810182526003860290920180546001600160a01b0381168452600160a01b90046001600160601b0316838501526001808201549284019290925260020154606083015290835290920191016118b7565b50505050905090565b611931612826565b600061193c846119dd565b6000908152600a602090815260408083206001600160a01b0387168452825291829020825160608101845281548152600182015492810192909252600201549181019190915291505092915050565b600d546001600160a01b031681565b6119a2611311565b6119be5760405162461bcd60e51b81526004016107cd90613643565b6119c7816124e8565b50565b611447838383600061239d565b600e5481565b6001600160a01b03811660009081526008602052604081205480611a135760405162461bcd60e51b81526004016107cd906135a3565b6000190192915050565b600061078883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612569565b6000828201838110156107885760405162461bcd60e51b81526004016107cd906135c3565b6000806000611a9385856125a0565b90506000611ae26009546107748a60000160149054906101000a90046001600160601b03166001600160601b0316611ad660025487611ba790919063ffffffff16565b9063ffffffff611ba716565b88546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190611b17903090600401613448565b60206040518083038186803b158015611b2f57600080fd5b505afa158015611b43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b679190810190612bb4565b9050611b79818963ffffffff611a5f16565b90506000611b96826107748564e8d4a5100063ffffffff611ba716565b929a92995091975050505050505050565b600082611bb657506000610dd3565b82820282848281611bc357fe5b04146107885760405162461bcd60e51b81526004016107cd90613633565b600061078883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612640565b6000611c2e836119dd565b9050600060078281548110611c3f57fe5b60009182526020909120600390910201546009546001600160601b03600160a01b90920482169250611c8a91851690611c7e908463ffffffff611be116565b9063ffffffff611a5f16565b6009819055508260078381548110611c9e57fe5b6000918252602090912060039091020180546001600160601b0392909216600160a01b026001600160a01b039283161790556040519085169033907f7b327867ecd5d7f5165f3d8af5193f1255f215acb14e229b529a4f8a9991abbc906109ca9087908690613737565b60008060078481548110611d1857fe5b60009182526020808320878452600a825260408085206001600160a01b03808a16875293528085206002600390950290920193840154845491516370a0823160e01b815294965091949193919216906370a0823190611d7b903090600401613448565b60206040518083038186803b158015611d9357600080fd5b505afa158015611da7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dcb9190810190612bb4565b9050836001015443118015611ddf57508015155b15611e07576000611def8561266c565b9150611e039050838263ffffffff611a5f16565b9250505b611e3b8360010154611e2f64e8d4a51000610774868860000154611ba790919063ffffffff16565b9063ffffffff611be116565b979650505050505050565b6000336001600160a01b03831615610dd3576006546001600160a01b0316331480611e7f57503360009081526008602052604090205415155b611e9b5760405162461bcd60e51b81526004016107cd90613683565b5090919050565b600060078481548110611eb157fe5b60009182526020808320878452600a825260408085206001600160a01b0389168652909252922060039091029091019150611eeb85611f1f565b611ef58282612031565b8154611f0e906001600160a01b03168286866001612088565b611f18828261236f565b5050505050565b600060078281548110611f2e57fe5b9060005260206000209060030201905080600101544311611f4f57506119c7565b80546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611f7f903090600401613448565b60206040518083038186803b158015611f9757600080fd5b505afa158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fcf9190810190612bb4565b905080611fe35750436001909101556119c7565b600080611fef8461266c565b60028601549193509150612009908263ffffffff611a5f16565b6002850155436001850155600b54612027908363ffffffff611a5f16565b600b555050505050565b8054156112fe5760006120668260010154611e2f64e8d4a5100061077487600201548760000154611ba790919063ffffffff16565b600283015490915061207e908263ffffffff611a5f16565b6002830155505050565b6002840154600c546040516370a0823160e01b81526000916001600160a01b0316906370a08231906120be903090600401613448565b60206040518083038186803b1580156120d657600080fd5b505afa1580156120ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061210e9190810190612bb4565b90508181106122f857600b5461212a908363ffffffff611be116565b600b5560006002870155600c54600d5460405163095ea7b360e01b81526001600160a01b039283169263095ea7b39261216a92911690869060040161347e565b602060405180830381600087803b15801561218457600080fd5b505af1158015612198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121bc9190810190612abe565b6121d85760405162461bcd60e51b81526004016107cd90613613565b600d54600e54604051630efe6a8b60e01b81526001600160a01b0390921691630efe6a8b9161220d9189918791600401613499565b600060405180830381600087803b15801561222757600080fd5b505af115801561223b573d6000803e3d6000fd5b5050505083156122a857600d546040516315b6fc1560e11b81526001600160a01b0390911690632b6df82a90612275908890600401613448565b600060405180830381600087803b15801561228f57600080fd5b505af11580156122a3573d6000803e3d6000fd5b505050505b866001600160a01b0316856001600160a01b03167f0aa4d283470c904c551d18bb894d37e17674920f3261a7f854be501e25f421b7846040516122eb91906136ff565b60405180910390a3610cf6565b8215610cf65760405162461bcd60e51b81526004016107cd90613573565b60405161144790849063a9059cbb60e01b90612338908690869060240161347e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612689565b600282015481546123909164e8d4a51000916107749163ffffffff611ba716565b60019091015550565b3390565b6001600160a01b0384166000908152600860205260409020546123d25760405162461bcd60e51b81526004016107cd906135a3565b60006001600160a01b0383166123e857336123ea565b825b905060006123f7866119dd565b905060006007828154811061240857fe5b60009182526020808320858452600a825260408085206001600160a01b038916865290925292206003909102909101915061244283611f1f565b61244c8282612031565b86156124895784612474578154612474906001600160a01b031633308a63ffffffff61276e16565b8054612486908863ffffffff611a5f16565b81555b612493828261236f565b876001600160a01b0316846001600160a01b03167f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62896040516124d691906136ff565b60405180910390a35050505050505050565b6001600160a01b03811661250e5760405162461bcd60e51b81526004016107cd90613593565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818361258a5760405162461bcd60e51b81526004016107cd9190613552565b50600083858161259657fe5b0495945050505050565b60006003548310156125b25760035492505b60006005541180156125c5575060055482115b156125d05760055491505b60045482116125f5576125ee600a611ad6848663ffffffff611be116565b9050610dd3565b600454831061260e576125ee828463ffffffff611be116565b6125ee61262660045484611be190919063ffffffff16565b611c7e600a611ad687600454611be190919063ffffffff16565b600081848411156126645760405162461bcd60e51b81526004016107cd9190613552565b505050900390565b600080612680836000856001015443611a84565b91509150915091565b61269b826001600160a01b0316612792565b6126b75760405162461bcd60e51b81526004016107cd906136d3565b60006060836001600160a01b0316836040516126d3919061343c565b6000604051808303816000865af19150503d8060008114612710576040519150601f19603f3d011682016040523d82523d6000602084013e612715565b606091505b5091509150816127375760405162461bcd60e51b81526004016107cd906135d3565b805115610db157808060200190516127529190810190612abe565b610db15760405162461bcd60e51b81526004016107cd906136b3565b604051610db19085906323b872dd60e01b9061233890879087908790602401613456565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906127c657508115155b949350505050565b604051806080016040528060006001600160a01b0316815260200160006001600160601b0316815260200160008152602001600081525090565b60405180604001604052806002906020820280388339509192915050565b60405180606001604052806000815260200160008152602001600081525090565b8035610dd3816137da565b60008083601f84011261286457600080fd5b50813567ffffffffffffffff81111561287c57600080fd5b60208301915083602082028301111561289457600080fd5b9250929050565b8035610dd3816137ee565b8051610dd3816137ee565b8035610dd3816137f7565b8035610dd381613800565b8051610dd381613800565b8035610dd381613809565b6000602082840312156128ef57600080fd5b6000610dcf8484612847565b6000806040838503121561290e57600080fd5b600061291a8585612847565b925050602061292b85828601612847565b9150509250929050565b6000806040838503121561294857600080fd5b60006129548585612847565b925050602061292b858286016128bc565b60008060006060848603121561297a57600080fd5b60006129868686612847565b9350506020612997868287016128bc565b92505060406129a886828701612847565b9150509250925092565b6000806000606084860312156129c757600080fd5b60006129d38686612847565b93505060206129e4868287016128bc565b92505060406129a8868287016128bc565b600080600060608486031215612a0a57600080fd5b6000612a168686612847565b9350506020612a27868287016128d2565b92505060406129a88682870161289b565b600080600080600060608688031215612a5057600080fd5b853567ffffffffffffffff811115612a6757600080fd5b612a7388828901612852565b9550955050602086013567ffffffffffffffff811115612a9257600080fd5b612a9e88828901612852565b93509350506040612ab18882890161289b565b9150509295509295909350565b600060208284031215612ad057600080fd5b6000610dcf84846128a6565b600080600080600080600060e0888a031215612af757600080fd5b6000612b038a8a6128b1565b9750506020612b148a828b016128bc565b9650506040612b258a828b016128bc565b9550506060612b368a828b016128bc565b9450506080612b478a828b01612847565b93505060a0612b588a828b016128b1565b92505060c0612b698a828b016128bc565b91505092959891949750929550565b600060208284031215612b8a57600080fd5b6000610dcf84846128b1565b600060208284031215612ba857600080fd5b6000610dcf84846128bc565b600060208284031215612bc657600080fd5b6000610dcf84846128c7565b60008060408385031215612be557600080fd5b600061291a85856128bc565b600060208284031215612c0357600080fd5b6000610dcf84846128d2565b6000612c1b8383612d63565b505060400190565b6000612c2f83836133a4565b505060800190565b6000612c4383836133ee565b505060600190565b6000612c578383613421565b505060200190565b612c6881613766565b82525050565b6000612c798261374e565b612c838185613758565b9350612c8e83613745565b8060005b83811015612cbc578151612ca68882612c0f565b9750612cb183613745565b925050600101612c92565b509495945050505050565b6000612cd28261374e565b612cdc8185613758565b9350612ce783613745565b8060005b83811015612cbc578151612cff8882612c23565b9750612d0a83613745565b925050600101612ceb565b6000612d208261374e565b612d2a8185613758565b9350612d3583613745565b8060005b83811015612cbc578151612d4d8882612c37565b9750612d5883613745565b925050600101612d39565b612d6c81613752565b612d768184613761565b9250612d818261374b565b8060005b83811015612daf578151612d998782612c4b565b9650612da483613745565b925050600101612d85565b505050505050565b6000612dc28261374e565b612dcc8185613758565b9350612dd783613745565b8060005b83811015612cbc578151612def8882612c4b565b9750612dfa83613745565b925050600101612ddb565b612c6881613771565b6000612e198261374e565b612e238185613761565b9350612e338185602086016137a4565b9290920192915050565b612c6881613776565b6000612e518261374e565b612e5b8185613758565b9350612e6b8185602086016137a4565b612e74816137d0565b9093019392505050565b6000612e8b601883613758565b7f496e76616c696420616c6c6f636174696f6e20706f696e740000000000000000815260200192915050565b6000612ec4601683613758565b7510db185a5b5a5b99c81c995dd85c990819985a5b195960521b815260200192915050565b6000612ef6601a83613758565b7f496e76616c6964206c6f636b6564534f5620416464726573732e000000000000815260200192915050565b6000612f2f602683613758565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000612f77601483613758565b73141bdbdb081d1bdad95b881b9bdd08199bdd5b9960621b815260200192915050565b6000612fa7600f83613758565b6e151c985b9cd9995c8819985a5b1959608a1b815260200192915050565b6000612fd2601b83613758565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061300b602083613758565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000613044603783613758565b7f556e6c6f636b656420696d6d6564696174656c792070657263656e742068617381527f20746f206265206c657373207468616e2031303030302e000000000000000000602082015260400192915050565b60006130a3601283613758565b714e6f7420656e6f7567682062616c616e636560701b815260200192915050565b60006130d1601383613758565b72496e76616c696420737461727420626c6f636b60681b815260200192915050565b6000613100600e83613758565b6d105c1c1c9bdd994819985a5b195960921b815260200192915050565b600061312a601883613758565b7f5265636569766572206164647265737320696e76616c69640000000000000000815260200192915050565b6000613163602183613758565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006131a6600c83613758565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006131ce600f83613758565b6e082e4e4c2f2e640dad2e6dac2e8c6d608b1b815260200192915050565b60006131f9601383613758565b72151bdad95b88185b1c9958591e481859191959606a1b815260200192915050565b6000613228600e83613758565b6d105b5bdd5b9d081a5b9d985b1a5960921b815260200192915050565b6000613252602d83613758565b7f6f6e6c792077726170706572206f7220706f6f6c73206d61792077697468647281526c30bb903337b91030903ab9b2b960991b602082015260400192915050565b60006132a1601583613758565b74496e76616c696420746f6b656e206164647265737360581b815260200192915050565b60006132d2601383613758565b72105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b815260200192915050565b6000613301602a83613758565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b600061334d600f83613758565b6e105b1c9958591e481cdd1bdc1c1959608a1b815260200192915050565b6000613378601f83613758565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b805160808301906133b58482612e3d565b5060208201516133c86020850182613433565b5060408201516133db6040850182613421565b506060820151610db16060850182613421565b805160608301906133ff8482613421565b5060208201516134126020850182613421565b506040820151610db160408501825b612c688161374b565b612c6881613799565b612c688161378d565b60006107888284612e0e565b60208101610dd38284612c5f565b606081016134648286612c5f565b6134716020830185612c5f565b6127c66040830184613421565b6040810161348c8285612c5f565b6107886020830184613421565b606081016134a78286612c5f565b6134716020830185613421565b602080825281016107888184612c6e565b602080825281016107888184612cc7565b602080825281016107888184612d15565b602080825281016107888184612db7565b60208101610dd38284612e05565b60208101610dd38284612e3d565b608081016135228287612e3d565b61352f6020830186613433565b61353c6040830185613421565b6135496060830184613421565b95945050505050565b602080825281016107888184612e46565b60208082528101610dd381612e7e565b60208082528101610dd381612eb7565b60208082528101610dd381612ee9565b60208082528101610dd381612f22565b60208082528101610dd381612f6a565b60208082528101610dd381612f9a565b60208082528101610dd381612fc5565b60208082528101610dd381612ffe565b60208082528101610dd381613037565b60208082528101610dd381613096565b60208082528101610dd3816130c4565b60208082528101610dd3816130f3565b60208082528101610dd38161311d565b60208082528101610dd381613156565b60208082528101610dd381613199565b60208082528101610dd3816131c1565b60208082528101610dd3816131ec565b60208082528101610dd38161321b565b60208082528101610dd381613245565b60208082528101610dd381613294565b60208082528101610dd3816132c5565b60208082528101610dd3816132f4565b60208082528101610dd381613340565b60208082528101610dd38161336b565b60808101610dd382846133a4565b60608101610dd382846133ee565b60208101610dd38284613421565b6040810161348c8285613421565b606081016134a78286613421565b60208101610dd3828461342a565b6040810161348c828561342a565b60200190565b90565b5190565b50600290565b90815260200190565b919050565b6000610dd382613781565b151590565b6000610dd382613766565b6001600160a01b031690565b6001600160601b031690565b6000610dd38261378d565b60005b838110156137bf5781810151838201526020016137a7565b83811115610db15750506000910152565b601f01601f191690565b6137e381613766565b81146119c757600080fd5b6137e381613771565b6137e381613776565b6137e38161374b565b6137e38161378d56fea365627a7a72315820bcffcc0a94a0c04a54b46e97136d3962ffb23cac249c11089e45f48dae4627146c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2D6 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B46C54F GT PUSH2 0x182 JUMPI DUP1 PUSH4 0xC680C0B7 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xE3866C9A GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2F46B3B GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x62B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0xF45346DC EQ PUSH2 0x646 JUMPI DUP1 PUSH4 0xF729A404 EQ PUSH2 0x659 JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0xE3866C9A EQ PUSH2 0x5E3 JUMPI DUP1 PUSH4 0xE788D8D1 EQ PUSH2 0x5F6 JUMPI DUP1 PUSH4 0xF2801FE7 EQ PUSH2 0x60B JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0xCAA9A08D EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0xD0452AA6 EQ PUSH2 0x5A2 JUMPI DUP1 PUSH4 0xD6A49F0E EQ PUSH2 0x5B5 JUMPI DUP1 PUSH4 0xD8C173C4 EQ PUSH2 0x5C8 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x5DB JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0xAC210CC7 GT PUSH2 0x13B JUMPI DUP1 PUSH4 0xAC210CC7 EQ PUSH2 0x536 JUMPI DUP1 PUSH4 0xB3944D52 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0xB9EC7D74 EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0xC1D74258 EQ PUSH2 0x54E JUMPI DUP1 PUSH4 0xC2167D93 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xC35A934D EQ PUSH2 0x569 JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0x7B46C54F EQ PUSH2 0x4EE JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x501 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x516 JUMPI DUP1 PUSH4 0x9A13BA29 EQ PUSH2 0x51E JUMPI DUP1 PUSH4 0xA1A6690F EQ PUSH2 0x526 JUMPI DUP1 PUSH4 0xAAF5EB68 EQ PUSH2 0x52E JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0x414D57FB GT PUSH2 0x241 JUMPI DUP1 PUSH4 0x5D50D060 GT PUSH2 0x1FA JUMPI DUP1 PUSH4 0x69328DEC GT PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x69328DEC EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0x6FF1C9BC EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0x787B4026 EQ PUSH2 0x4CB JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0x5D50D060 EQ PUSH2 0x430 JUMPI DUP1 PUSH4 0x5F02C145 EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0x62748FBB EQ PUSH2 0x472 JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0x414D57FB EQ PUSH2 0x3AF JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x48C84D9E EQ PUSH2 0x3E2 JUMPI DUP1 PUSH4 0x48CD4CB1 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x4953C782 EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x56085D4C EQ PUSH2 0x41D JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x293 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x1AED6553 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x1D8F889C EQ PUSH2 0x379 JUMPI DUP1 PUSH4 0x29D0FA3E EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0x2D0857A2 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x3723DE42 EQ PUSH2 0x3A7 JUMPI PUSH2 0x2D6 JUMP JUMPDEST DUP1 PUSH4 0x6BFA938 EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0x83C6323 EQ PUSH2 0x304 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0xB1A2851 EQ PUSH2 0x32E JUMPI DUP1 PUSH4 0xC43A7CD EQ PUSH2 0x341 JUMPI DUP1 PUSH4 0x10A168F9 EQ PUSH2 0x356 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EE PUSH2 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x36E3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x30C PUSH2 0x6E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x36FF JUMP JUMPDEST PUSH2 0x321 PUSH2 0x6E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x3506 JUMP JUMPDEST PUSH2 0x30C PUSH2 0x33C CALLDATASIZE PUSH1 0x4 PUSH2 0x29B2 JUMP JUMPDEST PUSH2 0x6F6 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x34F CALLDATASIZE PUSH1 0x4 PUSH2 0x29F5 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x30C PUSH2 0x9D8 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x9DD JUMP JUMPDEST PUSH2 0x30C PUSH2 0xA5C JUMP JUMPDEST PUSH2 0x354 PUSH2 0x387 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B78 JUMP JUMPDEST PUSH2 0xA62 JUMP JUMPDEST PUSH2 0x30C PUSH2 0xAE8 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x3A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B96 JUMP JUMPDEST PUSH2 0xAEE JUMP JUMPDEST PUSH2 0x30C PUSH2 0xB52 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2A38 JUMP JUMPDEST PUSH2 0xC04 JUMP JUMPDEST PUSH2 0x3D5 PUSH2 0x3D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0xCFF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x34F8 JUMP JUMPDEST PUSH2 0x3F5 PUSH2 0x3F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x34E7 JUMP JUMPDEST PUSH2 0x30C PUSH2 0xD85 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x418 CALLDATASIZE PUSH1 0x4 PUSH2 0x28FB JUMP JUMPDEST PUSH2 0xD8B JUMP JUMPDEST PUSH2 0x30C PUSH2 0x42B CALLDATASIZE PUSH1 0x4 PUSH2 0x28FB JUMP JUMPDEST PUSH2 0xDB7 JUMP JUMPDEST PUSH2 0x443 PUSH2 0x43E CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0xDD9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x34B4 JUMP JUMPDEST PUSH2 0x463 PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x2BD2 JUMP JUMPDEST PUSH2 0xEAA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH2 0x485 PUSH2 0x480 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0xED6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x34D6 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x4A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2965 JUMP JUMPDEST PUSH2 0xF8D JUMP JUMPDEST PUSH2 0x354 PUSH2 0x4B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x1120 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x4C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x1223 JUMP JUMPDEST PUSH2 0x4DE PUSH2 0x4D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B96 JUMP JUMPDEST PUSH2 0x129C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3514 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x4FC CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x12E8 JUMP JUMPDEST PUSH2 0x509 PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x3448 JUMP JUMPDEST PUSH2 0x3D5 PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x30C PUSH2 0x1335 JUMP JUMPDEST PUSH2 0x30C PUSH2 0x133B JUMP JUMPDEST PUSH2 0x30C PUSH2 0x1341 JUMP JUMPDEST PUSH2 0x509 PUSH2 0x134A JUMP JUMPDEST PUSH2 0x30C PUSH2 0x1359 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x135F JUMP JUMPDEST PUSH2 0x30C PUSH2 0x137E JUMP JUMPDEST PUSH2 0x354 PUSH2 0x564 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x1383 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x577 CALLDATASIZE PUSH1 0x4 PUSH2 0x29F5 JUMP JUMPDEST PUSH2 0x13E3 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x58A CALLDATASIZE PUSH1 0x4 PUSH2 0x2935 JUMP JUMPDEST PUSH2 0x144C JUMP JUMPDEST PUSH2 0x30C PUSH2 0x59D CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x1642 JUMP JUMPDEST PUSH2 0x30C PUSH2 0x5B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x28FB JUMP JUMPDEST PUSH2 0x164D JUMP JUMPDEST PUSH2 0x354 PUSH2 0x5C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x166A JUMP JUMPDEST PUSH2 0x354 PUSH2 0x5D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2935 JUMP JUMPDEST PUSH2 0x16FB JUMP JUMPDEST PUSH2 0x354 PUSH2 0x1708 JUMP JUMPDEST PUSH2 0x354 PUSH2 0x5F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2ADC JUMP JUMPDEST PUSH2 0x176C JUMP JUMPDEST PUSH2 0x5FE PUSH2 0x1893 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x34C5 JUMP JUMPDEST PUSH2 0x61E PUSH2 0x619 CALLDATASIZE PUSH1 0x4 PUSH2 0x28FB JUMP JUMPDEST PUSH2 0x1929 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FB SWAP2 SWAP1 PUSH2 0x36F1 JUMP JUMPDEST PUSH2 0x321 PUSH2 0x198B JUMP JUMPDEST PUSH2 0x354 PUSH2 0x641 CALLDATASIZE PUSH1 0x4 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x199A JUMP JUMPDEST PUSH2 0x354 PUSH2 0x654 CALLDATASIZE PUSH1 0x4 PUSH2 0x2965 JUMP JUMPDEST PUSH2 0x19CA JUMP JUMPDEST PUSH2 0x30C PUSH2 0x19D7 JUMP JUMPDEST PUSH2 0x669 PUSH2 0x27CE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x674 DUP4 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x683 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x3 SWAP4 SWAP1 SWAP4 MUL SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP5 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x702 DUP6 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x713 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD SWAP2 POP NUMBER SWAP1 PUSH2 0x747 PUSH2 0x73A DUP8 PUSH1 0x1E PUSH4 0xFFFFFFFF PUSH2 0x1A1D AND JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x757 DUP5 DUP10 DUP6 DUP6 PUSH2 0x1A84 JUMP JUMPDEST SWAP2 POP PUSH2 0x780 SWAP1 POP PUSH5 0xE8D4A51000 PUSH2 0x774 DUP11 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1BA7 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1A1D AND JUMP JUMPDEST SWAP6 POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x797 PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0x7B1 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x7FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3563 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x825 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3693 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x85B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3663 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x869 JUMPI PUSH2 0x869 PUSH2 0x135F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD NUMBER GT PUSH2 0x87C JUMPI PUSH1 0x3 SLOAD PUSH2 0x87E JUMP JUMPDEST NUMBER JUMPDEST PUSH1 0x9 SLOAD SWAP1 SWAP2 POP PUSH2 0x89D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP9 AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 DUP3 MSTORE DUP6 DUP8 ADD DUP9 DUP2 MSTORE PUSH1 0x0 PUSH1 0x60 DUP9 ADD DUP2 DUP2 MSTORE PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE DUP2 DUP5 MSTORE SWAP10 MLOAD PUSH1 0x3 SWAP1 SWAP11 MUL PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C688 DUP2 ADD DUP1 SLOAD SWAP8 MLOAD SWAP1 SWAP9 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP11 DUP11 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP9 AND SWAP9 SWAP1 SWAP9 OR SWAP1 SWAP5 SSTORE MLOAD PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C689 DUP4 ADD SSTORE SWAP5 MLOAD PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C68A SWAP1 SWAP2 ADD SSTORE SWAP2 SLOAD DUP2 DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP4 MSTORE SWAP1 DUP4 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP1 MLOAD CALLER SWAP1 PUSH32 0x38132AE9E6E6C4E777015BAC3679DADD42206FAD607B97846830BE4B412908C3 SWAP1 PUSH2 0x9CA SWAP1 DUP8 SWAP1 PUSH2 0x3729 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH2 0x9E5 PUSH2 0x1311 JUMP JUMPDEST PUSH2 0xA01 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0xA51 SWAP1 DUP4 SWAP1 PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xA6A PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0xA84 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xAA0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xAC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3583 JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xAF6 PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0xB10 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xB2C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0xB4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35E3 JUMP JUMPDEST PUSH1 0xE SSTORE JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xB87 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBB3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xBD7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP PUSH1 0xB SLOAD DUP2 LT ISZERO PUSH2 0xBFB JUMPI PUSH1 0xB SLOAD PUSH2 0xBF6 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST PUSH2 0xBFE JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0xC0C PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0xC26 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xC42 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST DUP4 DUP3 EQ PUSH2 0xC61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3653 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC6F JUMPI PUSH2 0xC6F PUSH2 0x135F JUMP JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xCF6 JUMPI DUP3 PUSH2 0xCA4 JUMPI PUSH2 0xCA4 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0xC8F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x4FC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0xCEE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0xCB3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xCC8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x28DD JUMP JUMPDEST DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0xCD4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xCE9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BF1 JUMP JUMPDEST PUSH2 0x1C23 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xC73 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP2 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xD46 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xD7D JUMPI PUSH2 0xD5E DUP2 DUP7 PUSH2 0x1D08 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD6A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xD4C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD96 DUP3 PUSH2 0x1E46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xDA3 DUP5 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH2 0xDB1 DUP2 DUP4 PUSH1 0x1 PUSH2 0x1EA2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xDC3 DUP5 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH2 0xDCF DUP2 DUP5 PUSH2 0x1D08 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP2 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xE1B JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xE08 PUSH2 0x2808 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xE00 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xD7D JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0xE5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0xE6E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MSTORE PUSH2 0xE7D DUP2 DUP7 PUSH2 0x1D08 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE89 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x2 DUP2 LT PUSH2 0xE9D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0xE21 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP2 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xF18 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xF05 PUSH2 0x2826 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xEFD JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xD7D JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0xF7A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xF1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xFC2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35A3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFCD DUP3 PUSH2 0x1E46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xFDA DUP6 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xFEB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x3 SWAP1 SWAP3 MUL SWAP1 SWAP3 ADD SWAP3 POP DUP7 GT ISZERO PUSH2 0x103D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35F3 JUMP JUMPDEST PUSH2 0x1046 DUP4 PUSH2 0x1F1F JUMP JUMPDEST PUSH2 0x1050 DUP3 DUP3 PUSH2 0x2031 JUMP JUMPDEST PUSH2 0x105E DUP8 DUP3 DUP7 PUSH1 0x0 DUP1 PUSH2 0x2088 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x1070 SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST DUP2 SSTORE PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO PUSH2 0x10A6 JUMPI DUP2 SLOAD PUSH2 0x10A1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP9 PUSH4 0xFFFFFFFF PUSH2 0x2316 AND JUMP JUMPDEST PUSH2 0x10C2 JUMP JUMPDEST DUP2 SLOAD PUSH2 0x10C2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x2316 AND JUMP JUMPDEST PUSH2 0x10CC DUP3 DUP3 PUSH2 0x236F JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9B1BFA7FA9EE420A16E124F794C35AC9F90472ACC99140EB2F6447C714CAD8EB DUP9 PUSH1 0x40 MLOAD PUSH2 0x110F SWAP2 SWAP1 PUSH2 0x36FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x112B DUP3 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x113C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 CALLER DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x116D DUP4 PUSH2 0x1F1F JUMP JUMPDEST PUSH2 0x1177 DUP3 DUP3 PUSH2 0x2031 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0xB SLOAD PUSH2 0x118E SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST PUSH1 0xB SSTORE DUP1 SLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0x0 DUP1 DUP6 SSTORE PUSH1 0x1 DUP6 ADD DUP2 SWAP1 SSTORE SWAP1 SWAP2 SSTORE DUP4 SLOAD PUSH2 0x11C4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2316 AND JUMP JUMPDEST PUSH2 0x11CE DUP5 DUP5 PUSH2 0x236F JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1401B6FF3B281E84FD77353369CAED48BA7E787DD3821DB05CC0064373608201 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1213 SWAP3 SWAP2 SWAP1 PUSH2 0x370D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x122B PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x1247 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0xA51 SWAP1 DUP4 SWAP1 PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x12A9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP4 POP PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12F3 DUP3 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH2 0x12FE DUP2 PUSH2 0x1F1F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1326 PUSH2 0x2399 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH5 0xE8D4A51000 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x12FE JUMPI PUSH2 0x1376 DUP2 PUSH2 0x1F1F JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1365 JUMP JUMPDEST PUSH1 0x1E DUP2 JUMP JUMPDEST PUSH2 0x138B PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0x13A5 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x13C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x13EB PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0x1405 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1421 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1434 JUMPI PUSH2 0x142F PUSH2 0x135F JUMP JUMPDEST PUSH2 0x143D JUMP JUMPDEST PUSH2 0x143D DUP4 PUSH2 0x12E8 JUMP JUMPDEST PUSH2 0x1447 DUP4 DUP4 PUSH2 0x1C23 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1454 PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0x146E JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x148A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x14B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3623 JUMP JUMPDEST DUP1 PUSH2 0x14CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3673 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x14FE SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x152A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x154E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x155C JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x158E SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x347E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x15E0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2ABE JUMP JUMPDEST PUSH2 0x15FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35B3 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD DUP4 PUSH1 0x40 MLOAD PUSH2 0x1635 SWAP2 SWAP1 PUSH2 0x36FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD3 DUP3 PUSH2 0x19DD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1657 PUSH2 0x2826 JUMP JUMPDEST PUSH2 0x1661 DUP5 DUP5 PUSH2 0x1929 JUMP JUMPDEST MLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1675 DUP3 PUSH2 0x1E46 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x169C JUMPI DUP1 PUSH2 0x1693 DUP2 DUP6 PUSH1 0x0 PUSH2 0x1EA2 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x167E JUMP JUMPDEST POP PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x15B6FC15 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2B6DF82A SWAP1 PUSH2 0x16CD SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x12FE CALLER DUP3 DUP5 PUSH1 0x1 PUSH2 0x239D JUMP JUMPDEST PUSH2 0x1710 PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0x172A JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1746 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x5 SLOAD ISZERO PUSH2 0x1766 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x36C3 JUMP JUMPDEST NUMBER PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH2 0x1774 PUSH2 0x1311 JUMP JUMPDEST DUP1 PUSH2 0x178E JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x17AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x17D3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x36A3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x17F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3693 JUMP JUMPDEST PUSH1 0x0 DUP6 GT PUSH2 0x1819 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3603 JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0x183A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35E3 JUMP JUMPDEST PUSH1 0xC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SSTORE NUMBER SWAP5 SWAP1 SWAP5 ADD PUSH1 0x3 DUP2 SWAP1 SSTORE SWAP3 SWAP1 SWAP3 ADD PUSH1 0x4 SSTORE PUSH1 0x6 DUP1 SLOAD DUP6 AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xD DUP1 SLOAD SWAP1 SWAP4 AND SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0xE SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x1920 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x3 DUP7 MUL SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP5 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 DUP6 ADD MSTORE PUSH1 0x1 DUP1 DUP3 ADD SLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0x60 DUP4 ADD MSTORE SWAP1 DUP4 MSTORE SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x18B7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1931 PUSH2 0x2826 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x193C DUP5 PUSH2 0x19DD JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x19A2 PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x19BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3643 JUMP JUMPDEST PUSH2 0x19C7 DUP2 PUSH2 0x24E8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1447 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x239D JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x1A13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35A3 JUMP JUMPDEST PUSH1 0x0 NOT ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x788 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35C3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A93 DUP6 DUP6 PUSH2 0x25A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1AE2 PUSH1 0x9 SLOAD PUSH2 0x774 DUP11 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1AD6 PUSH1 0x2 SLOAD DUP8 PUSH2 0x1BA7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1BA7 AND JUMP JUMPDEST DUP9 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1B17 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B43 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B67 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B79 DUP2 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B96 DUP3 PUSH2 0x774 DUP6 PUSH5 0xE8D4A51000 PUSH4 0xFFFFFFFF PUSH2 0x1BA7 AND JUMP JUMPDEST SWAP3 SWAP11 SWAP3 SWAP10 POP SWAP2 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1BB6 JUMPI POP PUSH1 0x0 PUSH2 0xDD3 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1BC3 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x788 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3633 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C2E DUP4 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1C3F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD SLOAD PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP3 POP PUSH2 0x1C8A SWAP2 DUP6 AND SWAP1 PUSH2 0x1C7E SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST PUSH1 0x9 DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1C9E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP6 AND SWAP1 CALLER SWAP1 PUSH32 0x7B327867ECD5D7F5165F3D8AF5193F1255F215ACB14E229B529A4F8A9991ABBC SWAP1 PUSH2 0x9CA SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x3737 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x7 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1D18 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND DUP8 MSTORE SWAP4 MSTORE DUP1 DUP6 KECCAK256 PUSH1 0x2 PUSH1 0x3 SWAP1 SWAP6 MUL SWAP1 SWAP3 ADD SWAP4 DUP5 ADD SLOAD DUP5 SLOAD SWAP2 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP5 SWAP7 POP SWAP2 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1D7B SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1DCB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 ADD SLOAD NUMBER GT DUP1 ISZERO PUSH2 0x1DDF JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1E07 JUMPI PUSH1 0x0 PUSH2 0x1DEF DUP6 PUSH2 0x266C JUMP JUMPDEST SWAP2 POP PUSH2 0x1E03 SWAP1 POP DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST SWAP3 POP POP JUMPDEST PUSH2 0x1E3B DUP4 PUSH1 0x1 ADD SLOAD PUSH2 0x1E2F PUSH5 0xE8D4A51000 PUSH2 0x774 DUP7 DUP9 PUSH1 0x0 ADD SLOAD PUSH2 0x1BA7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xDD3 JUMPI PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x1E7F JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO JUMPDEST PUSH2 0x1E9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3683 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1EB1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x1EEB DUP6 PUSH2 0x1F1F JUMP JUMPDEST PUSH2 0x1EF5 DUP3 DUP3 PUSH2 0x2031 JUMP JUMPDEST DUP2 SLOAD PUSH2 0x1F0E SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP7 DUP7 PUSH1 0x1 PUSH2 0x2088 JUMP JUMPDEST PUSH2 0x1F18 DUP3 DUP3 PUSH2 0x236F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1F2E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD SWAP1 POP DUP1 PUSH1 0x1 ADD SLOAD NUMBER GT PUSH2 0x1F4F JUMPI POP PUSH2 0x19C7 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1F7F SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FAB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1FCF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1FE3 JUMPI POP NUMBER PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH2 0x19C7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1FEF DUP5 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x2 DUP7 ADD SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x2009 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST PUSH1 0x2 DUP6 ADD SSTORE NUMBER PUSH1 0x1 DUP6 ADD SSTORE PUSH1 0xB SLOAD PUSH2 0x2027 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST PUSH1 0xB SSTORE POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD ISZERO PUSH2 0x12FE JUMPI PUSH1 0x0 PUSH2 0x2066 DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1E2F PUSH5 0xE8D4A51000 PUSH2 0x774 DUP8 PUSH1 0x2 ADD SLOAD DUP8 PUSH1 0x0 ADD SLOAD PUSH2 0x1BA7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x207E SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x20BE SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x210E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB4 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT PUSH2 0x22F8 JUMPI PUSH1 0xB SLOAD PUSH2 0x212A SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x0 PUSH1 0x2 DUP8 ADD SSTORE PUSH1 0xC SLOAD PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x216A SWAP3 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x347E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2198 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x21BC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2ABE JUMP JUMPDEST PUSH2 0x21D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3613 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0xE SLOAD PUSH1 0x40 MLOAD PUSH4 0xEFE6A8B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xEFE6A8B SWAP2 PUSH2 0x220D SWAP2 DUP10 SWAP2 DUP8 SWAP2 PUSH1 0x4 ADD PUSH2 0x3499 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x223B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP4 ISZERO PUSH2 0x22A8 JUMPI PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x15B6FC15 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2B6DF82A SWAP1 PUSH2 0x2275 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3448 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x228F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xAA4D283470C904C551D18BB894D37E17674920F3261A7F854BE501E25F421B7 DUP5 PUSH1 0x40 MLOAD PUSH2 0x22EB SWAP2 SWAP1 PUSH2 0x36FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xCF6 JUMP JUMPDEST DUP3 ISZERO PUSH2 0xCF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3573 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1447 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x2338 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x347E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2689 JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD DUP2 SLOAD PUSH2 0x2390 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x774 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x1BA7 AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x23D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x23E8 JUMPI CALLER PUSH2 0x23EA JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x23F7 DUP7 PUSH2 0x19DD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2408 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x2442 DUP4 PUSH2 0x1F1F JUMP JUMPDEST PUSH2 0x244C DUP3 DUP3 PUSH2 0x2031 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x2489 JUMPI DUP5 PUSH2 0x2474 JUMPI DUP2 SLOAD PUSH2 0x2474 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP11 PUSH4 0xFFFFFFFF PUSH2 0x276E AND JUMP JUMPDEST DUP1 SLOAD PUSH2 0x2486 SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1A5F AND JUMP JUMPDEST DUP2 SSTORE JUMPDEST PUSH2 0x2493 DUP3 DUP3 PUSH2 0x236F JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5548C837AB068CF56A2C2479DF0882A4922FD203EDB7517321831D95078C5F62 DUP10 PUSH1 0x40 MLOAD PUSH2 0x24D6 SWAP2 SWAP1 PUSH2 0x36FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x250E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x3593 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x258A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP2 SWAP1 PUSH2 0x3552 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x2596 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD DUP4 LT ISZERO PUSH2 0x25B2 JUMPI PUSH1 0x3 SLOAD SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD GT DUP1 ISZERO PUSH2 0x25C5 JUMPI POP PUSH1 0x5 SLOAD DUP3 GT JUMPDEST ISZERO PUSH2 0x25D0 JUMPI PUSH1 0x5 SLOAD SWAP2 POP JUMPDEST PUSH1 0x4 SLOAD DUP3 GT PUSH2 0x25F5 JUMPI PUSH2 0x25EE PUSH1 0xA PUSH2 0x1AD6 DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST SWAP1 POP PUSH2 0xDD3 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP4 LT PUSH2 0x260E JUMPI PUSH2 0x25EE DUP3 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1BE1 AND JUMP JUMPDEST PUSH2 0x25EE PUSH2 0x2626 PUSH1 0x4 SLOAD DUP5 PUSH2 0x1BE1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1C7E PUSH1 0xA PUSH2 0x1AD6 DUP8 PUSH1 0x4 SLOAD PUSH2 0x1BE1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2664 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP2 SWAP1 PUSH2 0x3552 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2680 DUP4 PUSH1 0x0 DUP6 PUSH1 0x1 ADD SLOAD NUMBER PUSH2 0x1A84 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x269B DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2792 JUMP JUMPDEST PUSH2 0x26B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x36D3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x26D3 SWAP2 SWAP1 PUSH2 0x343C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2710 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2715 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2737 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x35D3 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xDB1 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x2752 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2ABE JUMP JUMPDEST PUSH2 0xDB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7CD SWAP1 PUSH2 0x36B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDB1 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x2338 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x3456 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x27C6 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xDD3 DUP2 PUSH2 0x37DA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x287C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2894 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xDD3 DUP2 PUSH2 0x37EE JUMP JUMPDEST DUP1 MLOAD PUSH2 0xDD3 DUP2 PUSH2 0x37EE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xDD3 DUP2 PUSH2 0x37F7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xDD3 DUP2 PUSH2 0x3800 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xDD3 DUP2 PUSH2 0x3800 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xDD3 DUP2 PUSH2 0x3809 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP5 DUP5 PUSH2 0x2847 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x290E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x291A DUP6 DUP6 PUSH2 0x2847 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x292B DUP6 DUP3 DUP7 ADD PUSH2 0x2847 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2954 DUP6 DUP6 PUSH2 0x2847 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x292B DUP6 DUP3 DUP7 ADD PUSH2 0x28BC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x297A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2986 DUP7 DUP7 PUSH2 0x2847 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2997 DUP7 DUP3 DUP8 ADD PUSH2 0x28BC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x29A8 DUP7 DUP3 DUP8 ADD PUSH2 0x2847 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x29C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29D3 DUP7 DUP7 PUSH2 0x2847 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x29E4 DUP7 DUP3 DUP8 ADD PUSH2 0x28BC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x29A8 DUP7 DUP3 DUP8 ADD PUSH2 0x28BC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A16 DUP7 DUP7 PUSH2 0x2847 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2A27 DUP7 DUP3 DUP8 ADD PUSH2 0x28D2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x29A8 DUP7 DUP3 DUP8 ADD PUSH2 0x289B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2A50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A73 DUP9 DUP3 DUP10 ADD PUSH2 0x2852 JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A9E DUP9 DUP3 DUP10 ADD PUSH2 0x2852 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP PUSH1 0x40 PUSH2 0x2AB1 DUP9 DUP3 DUP10 ADD PUSH2 0x289B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP5 DUP5 PUSH2 0x28A6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2AF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B03 DUP11 DUP11 PUSH2 0x28B1 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x2B14 DUP11 DUP3 DUP12 ADD PUSH2 0x28BC JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x2B25 DUP11 DUP3 DUP12 ADD PUSH2 0x28BC JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x2B36 DUP11 DUP3 DUP12 ADD PUSH2 0x28BC JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x2B47 DUP11 DUP3 DUP12 ADD PUSH2 0x2847 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x2B58 DUP11 DUP3 DUP12 ADD PUSH2 0x28B1 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x2B69 DUP11 DUP3 DUP12 ADD PUSH2 0x28BC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP5 DUP5 PUSH2 0x28B1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP5 DUP5 PUSH2 0x28BC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP5 DUP5 PUSH2 0x28C7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x291A DUP6 DUP6 PUSH2 0x28BC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDCF DUP5 DUP5 PUSH2 0x28D2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C1B DUP4 DUP4 PUSH2 0x2D63 JUMP JUMPDEST POP POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C2F DUP4 DUP4 PUSH2 0x33A4 JUMP JUMPDEST POP POP PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C43 DUP4 DUP4 PUSH2 0x33EE JUMP JUMPDEST POP POP PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C57 DUP4 DUP4 PUSH2 0x3421 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x2C68 DUP2 PUSH2 0x3766 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C79 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x2C83 DUP2 DUP6 PUSH2 0x3758 JUMP JUMPDEST SWAP4 POP PUSH2 0x2C8E DUP4 PUSH2 0x3745 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CBC JUMPI DUP2 MLOAD PUSH2 0x2CA6 DUP9 DUP3 PUSH2 0x2C0F JUMP JUMPDEST SWAP8 POP PUSH2 0x2CB1 DUP4 PUSH2 0x3745 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2C92 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CD2 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x2CDC DUP2 DUP6 PUSH2 0x3758 JUMP JUMPDEST SWAP4 POP PUSH2 0x2CE7 DUP4 PUSH2 0x3745 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CBC JUMPI DUP2 MLOAD PUSH2 0x2CFF DUP9 DUP3 PUSH2 0x2C23 JUMP JUMPDEST SWAP8 POP PUSH2 0x2D0A DUP4 PUSH2 0x3745 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2CEB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D20 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x2D2A DUP2 DUP6 PUSH2 0x3758 JUMP JUMPDEST SWAP4 POP PUSH2 0x2D35 DUP4 PUSH2 0x3745 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CBC JUMPI DUP2 MLOAD PUSH2 0x2D4D DUP9 DUP3 PUSH2 0x2C37 JUMP JUMPDEST SWAP8 POP PUSH2 0x2D58 DUP4 PUSH2 0x3745 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2D39 JUMP JUMPDEST PUSH2 0x2D6C DUP2 PUSH2 0x3752 JUMP JUMPDEST PUSH2 0x2D76 DUP2 DUP5 PUSH2 0x3761 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D81 DUP3 PUSH2 0x374B JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DAF JUMPI DUP2 MLOAD PUSH2 0x2D99 DUP8 DUP3 PUSH2 0x2C4B JUMP JUMPDEST SWAP7 POP PUSH2 0x2DA4 DUP4 PUSH2 0x3745 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2D85 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DC2 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x2DCC DUP2 DUP6 PUSH2 0x3758 JUMP JUMPDEST SWAP4 POP PUSH2 0x2DD7 DUP4 PUSH2 0x3745 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CBC JUMPI DUP2 MLOAD PUSH2 0x2DEF DUP9 DUP3 PUSH2 0x2C4B JUMP JUMPDEST SWAP8 POP PUSH2 0x2DFA DUP4 PUSH2 0x3745 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2DDB JUMP JUMPDEST PUSH2 0x2C68 DUP2 PUSH2 0x3771 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E19 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x2E23 DUP2 DUP6 PUSH2 0x3761 JUMP JUMPDEST SWAP4 POP PUSH2 0x2E33 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x37A4 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2C68 DUP2 PUSH2 0x3776 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E51 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x2E5B DUP2 DUP6 PUSH2 0x3758 JUMP JUMPDEST SWAP4 POP PUSH2 0x2E6B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x37A4 JUMP JUMPDEST PUSH2 0x2E74 DUP2 PUSH2 0x37D0 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E8B PUSH1 0x18 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x496E76616C696420616C6C6F636174696F6E20706F696E740000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EC4 PUSH1 0x16 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH22 0x10DB185A5B5A5B99C81C995DD85C990819985A5B1959 PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EF6 PUSH1 0x1A DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x496E76616C6964206C6F636B6564534F5620416464726573732E000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F2F PUSH1 0x26 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F77 PUSH1 0x14 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH20 0x141BDBDB081D1BDAD95B881B9BDD08199BDD5B99 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FA7 PUSH1 0xF DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH15 0x151C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FD2 PUSH1 0x1B DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x300B PUSH1 0x20 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3044 PUSH1 0x37 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x556E6C6F636B656420696D6D6564696174656C792070657263656E7420686173 DUP2 MSTORE PUSH32 0x20746F206265206C657373207468616E2031303030302E000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30A3 PUSH1 0x12 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH18 0x4E6F7420656E6F7567682062616C616E6365 PUSH1 0x70 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30D1 PUSH1 0x13 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH19 0x496E76616C696420737461727420626C6F636B PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3100 PUSH1 0xE DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH14 0x105C1C1C9BDD994819985A5B1959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312A PUSH1 0x18 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x5265636569766572206164647265737320696E76616C69640000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3163 PUSH1 0x21 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31A6 PUSH1 0xC DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31CE PUSH1 0xF DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH15 0x82E4E4C2F2E640DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31F9 PUSH1 0x13 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH19 0x151BDAD95B88185B1C9958591E481859191959 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3228 PUSH1 0xE DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH14 0x105B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3252 PUSH1 0x2D DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x6F6E6C792077726170706572206F7220706F6F6C73206D617920776974686472 DUP2 MSTORE PUSH13 0x30BB903337B91030903AB9B2B9 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32A1 PUSH1 0x15 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH21 0x496E76616C696420746F6B656E2061646472657373 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32D2 PUSH1 0x13 DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH19 0x105B1C9958591E481A5B9A5D1A585B1A5E9959 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3301 PUSH1 0x2A DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x334D PUSH1 0xF DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH15 0x105B1C9958591E481CDD1BDC1C1959 PUSH1 0x8A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3378 PUSH1 0x1F DUP4 PUSH2 0x3758 JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP4 ADD SWAP1 PUSH2 0x33B5 DUP5 DUP3 PUSH2 0x2E3D JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x33C8 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x3433 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x33DB PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x3421 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0xDB1 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x3421 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x33FF DUP5 DUP3 PUSH2 0x3421 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x3412 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x3421 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0xDB1 PUSH1 0x40 DUP6 ADD DUP3 JUMPDEST PUSH2 0x2C68 DUP2 PUSH2 0x374B JUMP JUMPDEST PUSH2 0x2C68 DUP2 PUSH2 0x3799 JUMP JUMPDEST PUSH2 0x2C68 DUP2 PUSH2 0x378D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP3 DUP5 PUSH2 0x2E0E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x2C5F JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3464 DUP3 DUP7 PUSH2 0x2C5F JUMP JUMPDEST PUSH2 0x3471 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2C5F JUMP JUMPDEST PUSH2 0x27C6 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x348C DUP3 DUP6 PUSH2 0x2C5F JUMP JUMPDEST PUSH2 0x788 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x34A7 DUP3 DUP7 PUSH2 0x2C5F JUMP JUMPDEST PUSH2 0x3471 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x788 DUP2 DUP5 PUSH2 0x2C6E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x788 DUP2 DUP5 PUSH2 0x2CC7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x788 DUP2 DUP5 PUSH2 0x2D15 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x788 DUP2 DUP5 PUSH2 0x2DB7 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x2E05 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x2E3D JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3522 DUP3 DUP8 PUSH2 0x2E3D JUMP JUMPDEST PUSH2 0x352F PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3433 JUMP JUMPDEST PUSH2 0x353C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3421 JUMP JUMPDEST PUSH2 0x3549 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x3421 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x788 DUP2 DUP5 PUSH2 0x2E46 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2E7E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2EB7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2EE9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2F22 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2F6A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2F9A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2FC5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x2FFE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3037 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3096 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x30C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x30F3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3156 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3199 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x31C1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x31EC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x321B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3245 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3294 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x32C5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x32F4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x3340 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xDD3 DUP2 PUSH2 0x336B JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x33A4 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x33EE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x348C DUP3 DUP6 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x34A7 DUP3 DUP7 PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xDD3 DUP3 DUP5 PUSH2 0x342A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x348C DUP3 DUP6 PUSH2 0x342A JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x2 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD3 DUP3 PUSH2 0x3781 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD3 DUP3 PUSH2 0x3766 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD3 DUP3 PUSH2 0x378D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x37BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37A7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xDB1 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x37E3 DUP2 PUSH2 0x3766 JUMP JUMPDEST DUP2 EQ PUSH2 0x19C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x37E3 DUP2 PUSH2 0x3771 JUMP JUMPDEST PUSH2 0x37E3 DUP2 PUSH2 0x3776 JUMP JUMPDEST PUSH2 0x37E3 DUP2 PUSH2 0x374B JUMP JUMPDEST PUSH2 0x37E3 DUP2 PUSH2 0x378D JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xBC SELFDESTRUCT 0xCC EXP SWAP5 LOG0 0xC0 0x4A SLOAD 0xB4 PUSH15 0x97136D3962FFB23CAC249C11089E45 DELEGATECALL DUP14 0xAE CHAINID 0x27 EQ PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "247:23275:32:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;247:23275:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21261:159;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1802:23:35;;;:::i;:::-;;;;;;;;2433:17;;;:::i;:::-;;;;;;;;10071:473:32;;;;;;;;;:::i;5532:882::-;;;;;;;;;:::i;:::-;;601:51;;;:::i;828:113:164:-;;;;;;;;;:::i;1723:28:35:-;;;:::i;3073:175:32:-;;;;;;;;;:::i;1549:35:35:-;;;:::i;3437:271:32:-;;;;;;;;;:::i;5053:190::-;;;:::i;7689:479::-;;;;;;;;;:::i;149:38:164:-;;;;;;;;;:::i;:::-;;;;;;;;22854:315:32;;;;;;;;;:::i;:::-;;;;;;;;1641:25:35;;;:::i;14759:204:32:-;;;;;;;;;:::i;9650:199::-;;;;;;;;;:::i;21569:389::-;;;;;;;;;:::i;:::-;;;;;;;;2224:67:35;;;;;;;;;:::i;:::-;;;;;;;;;;22425:297:32;;;;;;;;;:::i;:::-;;;;;;;;16117:936;;;;;;;;;:::i;19780:683::-;;;;;;;;;:::i;599:107:164:-;;;;;;;;;:::i;1940:30:35:-;;;;;;;;;:::i;:::-;;;;;;;;;;;10920:117:32;;;;;;;;;:::i;851:68:142:-;;;:::i;:::-;;;;;;;;1134:83;;;:::i;2373:32:35:-;;;:::i;2140:35::-;;;:::i;396:40:32:-;;;:::i;1891:22:35:-;;;:::i;20904:91:32:-;;;:::i;10646:141::-;;;:::i;656:46::-;;;:::i;3815:88::-;;;;;;;;;:::i;6691:252::-;;;;;;;;;:::i;4345:508::-;;;;;;;;;:::i;20552:108::-;;;;;;;;;:::i;23341:179::-;;;;;;;;;:::i;15521:316::-;;;;;;;;;:::i;13192:222::-;;;;;;;;;:::i;3962:123::-;;;:::i;2077:870::-;;;;;;;;;:::i;21054:96::-;;;:::i;:::-;;;;;;;;22117:178;;;;;;;;;:::i;:::-;;;;;;;;2520:27:35;;;:::i;1351:98:142:-;;;;;;;;;:::i;12800:138:32:-;;;;;;;;;:::i;2641:41:35:-;;;:::i;21261:159:32:-;21325:15;;:::i;:::-;21346:14;21363:22;21374:10;21363;:22::i;:::-;21346:39;;21396:12;21409:6;21396:20;;;;;;;;;;;;;;;;;21389:27;;;;;;;;21396:20;;;;;;;;21389:27;;-1:-1:-1;;;;;21389:27:32;;;;-1:-1:-1;;;21389:27:32;;-1:-1:-1;;;;;21389:27:32;;;;;;;;;;;;;;;;;;;;;;;;;;21261:159;-1:-1:-1;;;21261:159:32:o;1802:23:35:-;;;;:::o;2433:17::-;;;-1:-1:-1;;;;;2433:17:35;;:::o;10071:473:32:-;10187:7;10200:14;10217:22;10228:10;10217;:22::i;:::-;10200:39;;10243:21;10267:12;10280:6;10267:20;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10307:12:32;;10337:43;10347:32;:9;700:2;10347:32;:13;:32;:::i;:::-;10337:5;;:43;:9;:43;:::i;:::-;10323:57;;10387:33;10424:52;10450:4;10456:7;10465:5;10472:3;10424:25;:52::i;:::-;10384:92;-1:-1:-1;10487:53:32;;-1:-1:-1;432:4:32;10487:38;:7;10384:92;10487:38;:11;:38;:::i;:::-;:42;:53;:42;:53;:::i;:::-;10480:60;;;;;;;10071:473;;;;;;:::o;5532:882::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;;;;;;;;;5672:1:32;5653:16;-1:-1:-1;;;;;5653:20:32;;5645:57;;;;-1:-1:-1;;;5645:57:32;;;;;;;;;-1:-1:-1;;;;;5714:24:32;;5706:58;;;;-1:-1:-1;;;5706:58:32;;;;;;;;;-1:-1:-1;;;;;5776:22:32;;;;;;:10;:22;;;;;;:27;5768:59;;;;-1:-1:-1;;;5768:59:32;;;;;;;;;5836:11;5832:43;;;5854:16;:14;:16::i;:::-;5879:23;5920:10;;5905:12;:25;:53;;5948:10;;5905:53;;;5933:12;5905:53;5985:20;;5879:79;;-1:-1:-1;5985:42:32;;-1:-1:-1;;;;;5985:42:32;;;:24;:42;:::i;:::-;5962:20;:65;6054:161;;;;;;;;-1:-1:-1;;;;;6054:161:32;;;;;;-1:-1:-1;;;;;6054:161:32;;;;;;;;;;;;;;;;-1:-1:-1;6054:161:32;;;;;;6032:12;27:10:-1;;39:1;23:18;;45:23;;6032:187:32;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6032:187:32;;;;-1:-1:-1;;;;;;6032:187:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6325:19;;6300:22;;;:10;:22;;;;;;;:44;;;;6354:56;;6369:10;;6354:56;;;;6121:16;;6354:56;;;;;;;;;;478:1:164;5532:882:32;;;:::o;601:51::-;650:2;601:51;:::o;828:113:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;886:14:164;;903:5;886:14;;;:6;:14;;;;;;;:22;;-1:-1:-1;;886:22:164;;;917:20;;;;;893:6;;917:20;;;;;;;;;;828:113;:::o;1723:28:35:-;;;;:::o;3073:175:32:-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;-1:-1:-1;;;;;3154:33:32;;3146:72;;;;-1:-1:-1;;;3146:72:32;;;;;;;;;3222:9;:22;;-1:-1:-1;;;;;;3222:22:32;-1:-1:-1;;;;;3222:22:32;;;;;;;;;;3073:175::o;1549:35:35:-;;;;:::o;3437:271:32:-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;3579:5:32;3549:27;:35;3541:103;;;;-1:-1:-1;;;3541:103:32;;;;;;;;;3648:26;:56;3437:271::o;5053:190::-;5135:3;;:28;;-1:-1:-1;;;5135:28:32;;5104:7;;;;-1:-1:-1;;;;;5135:3:32;;;;:13;;:28;;5157:4;;5135:28;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5135:28:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5135:28:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5135:28:32;;;;;;;;;5117:46;;5185:17;;5174:7;:28;;:65;;5209:17;;:30;;5231:7;5209:30;:21;:30;:::i;:::-;5174:65;;;5205:1;5174:65;5167:72;;;5053:190;:::o;7689:479::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;7846:46:32;;;7838:74;;;;-1:-1:-1;;;7838:74:32;;;;;;;;;7921:14;7917:46;;;7942:16;:14;:16::i;:::-;7983:11;7966:14;8005:160;8029:6;8025:1;:10;8005:160;;;8052:14;8047:59;;8074:26;8085:11;;8097:1;8085:14;;;;;;;;;;;;;;;;;;;;;8074:26;8110:50;8123:11;;8135:1;8123:14;;;;;;;;;;;;;;;;;;;;;;8139:17;;8157:1;8139:20;;;;;;;;;;;;;;;;;;;;;;8110:12;:50::i;:::-;8037:3;;8005:160;;;;478:1:164;7689:479:32;;;;;:::o;149:38:164:-;;;;;;;;;;;;;;;:::o;22854:315:32:-;22969:12;:19;23022:21;;;;;;;;;;;;;;;;22930:16;;22969:19;22930:16;;22969:19;23022:21;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;23022:21:32;-1:-1:-1;22992:51:32;-1:-1:-1;23052:9:32;23047:98;23071:6;23067:1;:10;23047:98;;;23105:35;23131:1;23134:5;23105:25;:35::i;:::-;23089:10;23100:1;23089:13;;;;;;;;;;;;;;;;;:51;23079:3;;23047:98;;;-1:-1:-1;23155:10:32;22854:315;-1:-1:-1;;;22854:315:32:o;1641:25:35:-;;;;:::o;14759:204:32:-;14828:19;14850:22;14866:5;14850:15;:22::i;:::-;14828:44;;14877:14;14894:22;14905:10;14894;:22::i;:::-;14877:39;;14920;14933:6;14941:11;14954:4;14920:12;:39::i;:::-;14759:204;;;;:::o;9650:199::-;9742:7;9755:14;9772:22;9783:10;9772;:22::i;:::-;9755:39;;9805:40;9831:6;9839:5;9805:25;:40::i;:::-;9798:47;;;9650:199;;;;;:::o;21569:389::-;21677:12;:19;21738:24;;;;;;;;;;;;;;;;21635:19;;21677;21635;;21677;21738:24;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;21700:62:32;-1:-1:-1;21771:9:32;21766:163;21790:6;21786:1;:10;21766:163;;;21832:14;;;;:11;:14;;;;;;;;-1:-1:-1;;;;;21832:21:32;;;;;;;;;:28;21808:18;;:15;;21844:1;;21808:18;;;;;;;;;;;;21827:1;21808:21;;;;;;;;;;:52;21889:35;21915:1;21918:5;21889:25;:35::i;:::-;21865:15;21881:1;21865:18;;;;;;;;;;;;;;21884:1;21865:21;;;;;;;;;;:59;21798:3;;21766:163;;2224:67:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22425:297:32:-;22528:12;:19;22584:22;;;;;;;;;;;;;;;;22488:17;;22528:19;22488:17;;22528:19;22584:22;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;22551:55:32;-1:-1:-1;22615:9:32;22610:86;22634:6;22630:1;:10;22610:86;;;22670:14;;;;:11;:14;;;;;;;;-1:-1:-1;;;;;22670:21:32;;;;;;;;;;22652:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;:12;;22682:1;;22652:15;;;;;;;;;;;;;;;:39;22642:3;;22610:86;;16117:936;-1:-1:-1;;;;;16217:22:32;;;;;;:10;:22;;;;;;16209:60;;;;-1:-1:-1;;;16209:60:32;;;;;;;;;16273:19;16295:22;16311:5;16295:15;:22::i;:::-;16273:44;;16322:14;16339:22;16350:10;16339;:22::i;:::-;16322:39;;16365:21;16389:12;16402:6;16389:20;;;;;;;;;;;;;;;;16437:19;;;:11;:19;;;;;;-1:-1:-1;;;;;16437:32:32;;;;;;;;;16481:11;;16389:20;;;;;;;;-1:-1:-1;16481:22:32;-1:-1:-1;16481:22:32;16473:53;;;;-1:-1:-1;;;16473:53:32;;;;;;;;;16531:19;16543:6;16531:11;:19::i;:::-;16554:25;16568:4;16574;16554:13;:25::i;:::-;16583:60;16599:10;16611:4;16617:11;16630:5;16637;16583:15;:60::i;:::-;16662:11;;:24;;16678:7;16662:24;:15;:24;:::i;:::-;16648:38;;16754:7;;-1:-1:-1;;;;;16754:7:32;16740:10;:21;16736:229;;;16768:14;;:57;;-1:-1:-1;;;;;16768:14:32;16804:10;16817:7;16768:57;:27;:57;:::i;:::-;16736:229;;;16911:14;;:49;;-1:-1:-1;;;;;16911:14:32;16939:11;16952:7;16911:49;:27;:49;:::i;:::-;16969:29;16987:4;16993;16969:17;:29::i;:::-;17029:10;-1:-1:-1;;;;;17007:42:32;17016:11;-1:-1:-1;;;;;17007:42:32;;17041:7;17007:42;;;;;;;;;;;;;;;16117:936;;;;;;;:::o;19780:683::-;19840:14;19857:22;19868:10;19857;:22::i;:::-;19840:39;;19883:21;19907:12;19920:6;19907:20;;;;;;;;;;;;;;;;19955:19;;;:11;:19;;;;;;19975:10;19955:31;;;;;;;19907:20;;;;;;;;-1:-1:-1;19991:19:32;19967:6;19991:11;:19::i;:::-;20014:25;20028:4;20034;20014:13;:25::i;:::-;20086:22;;;;20064:17;;:45;;;:21;:45;:::i;:::-;20044:17;:65;20134:11;;20181:22;;;;;20113:18;20207:15;;;-1:-1:-1;20226:15:32;;:19;;;20249:26;;;20279:14;;:60;;-1:-1:-1;;;;;20279:14:32;20315:10;20134:11;20279:60;:27;:60;:::i;:::-;20344:29;20362:4;20368;20344:17;:29::i;:::-;20413:10;-1:-1:-1;;;;;20383:76:32;20401:10;-1:-1:-1;;;;;20383:76:32;;20425:10;20437:21;20383:76;;;;;;;;;;;;;;;;19780:683;;;;;;:::o;599:107:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;654:14:164;;;;;;671:4;654:14;;;;;;;;;:21;;-1:-1:-1;;654:21:164;;;;;;684:18;;;;;661:6;;684:18;;1940:30:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1940:30:35;;;-1:-1:-1;;;;1940:30:35;;;-1:-1:-1;;;;;1940:30:35;;;;:::o;10920:117:32:-;10971:14;10988:22;10999:10;10988;:22::i;:::-;10971:39;;11014:19;11026:6;11014:11;:19::i;:::-;10920:117;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2373:32:35:-;;;;:::o;2140:35::-;;;;:::o;396:40:32:-;432:4;396:40;:::o;1891:22:35:-;;;-1:-1:-1;;;;;1891:22:35;;:::o;20904:91:32:-;20972:12;:19;20904:91;:::o;10646:141::-;10700:12;:19;10683:14;10723:61;10747:6;10743:1;:10;10723:61;;;10765:14;10777:1;10765:11;:14::i;:::-;10755:3;;10723:61;;656:46;700:2;656:46;:::o;3815:88::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;3881:7:32;:18;;-1:-1:-1;;;;;;3881:18:32;-1:-1:-1;;;;;3881:18:32;;;;;;;;;;3815:88::o;6691:252::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;6814:14:32;6810:84;;;6835:16;:14;:16::i;:::-;6810:84;;;6867:22;6878:10;6867;:22::i;:::-;6897:42;6910:10;6922:16;6897:12;:42::i;:::-;6691:252;;;:::o;4345:508::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;-1:-1:-1;;;;;4438:23:32;;4430:60;;;;-1:-1:-1;;;4430:60:32;;;;;;;;;4502:12;4494:39;;;;-1:-1:-1;;;4494:39:32;;;;;;;;;4607:3;;:28;;-1:-1:-1;;;4607:28:32;;4590:14;;-1:-1:-1;;;;;4607:3:32;;:13;;:28;;4629:4;;4607:28;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4607:28:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4607:28:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4607:28:32;;;;;;;;;4590:45;;4653:6;4643:7;:16;4639:48;;;4676:6;4666:16;;4639:48;4731:3;;:32;;-1:-1:-1;;;4731:32:32;;-1:-1:-1;;;;;4731:3:32;;;;:12;;:32;;4744:9;;4755:7;;4731:32;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4731:32:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4731:32:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4731:32:32;;;;;;;;;4723:60;;;;-1:-1:-1;;;4723:60:32;;;;;;;;;4830:9;-1:-1:-1;;;;;4815:34:32;;4841:7;4815:34;;;;;;;;;;;;;;;478:1:164;4345:508:32;;:::o;20552:108::-;20614:7;20634:22;20645:10;20634;:22::i;23341:179::-;23432:7;23445:18;;:::i;:::-;23466:30;23478:10;23490:5;23466:11;:30::i;:::-;23507:9;;23341:179;-1:-1:-1;;;;23341:179:32:o;15521:316::-;15582:19;15604:22;15620:5;15604:15;:22::i;:::-;15648:12;:19;15582:44;;-1:-1:-1;15631:14:32;15671:110;15695:6;15691:1;:10;15671:110;;;15730:1;15736:40;15730:1;15757:11;15713:14;15736:12;:40::i;:::-;-1:-1:-1;15703:3:32;;15671:110;;;-1:-1:-1;15784:9:32;;:49;;-1:-1:-1;;;15784:49:32;;-1:-1:-1;;;;;15784:9:32;;;;:36;;:49;;15821:11;;15784:49;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15784:49:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;13192:222:32;13368:42;13377:10;13389:7;13398:5;13405:4;13368:8;:42::i;3962:123::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;4020:8:32;;:13;4012:41;;;;-1:-1:-1;;;4012:41:32;;;;;;;;;4069:12;4058:8;:23;3962:123::o;2077:870::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;2399:3:32;;-1:-1:-1;;;;;2399:3:32;2391:26;2383:58;;;;-1:-1:-1;;;2383:58:32;;;;;;;;;-1:-1:-1;;;;;2453:27:32;;2445:61;;;;-1:-1:-1;;;2445:61:32;;;;;;;;;2538:1;2518:17;:21;2510:53;;;;-1:-1:-1;;;2510:53:32;;;;;;;;;2605:5;2575:27;:35;2567:103;;;;-1:-1:-1;;;2567:103:32;;;;;;;;;2675:3;:10;;-1:-1:-1;;;;;;2675:10:32;;;-1:-1:-1;;;;;2675:10:32;;;;;;;2689:20;:44;;;;2750:12;:32;;;;2737:10;:45;;;2802:33;;;;2786:13;:49;2839:7;:18;;;;;;;;;;;;;2861:9;:22;;;;;;;;;;;;;2887:26;:56;2077:870::o;21054:96::-;21104:17;21134:12;21127:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21127:19:32;;;;-1:-1:-1;;;21127:19:32;;-1:-1:-1;;;;;21127:19:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21054:96;:::o;22117:178::-;22194:15;;:::i;:::-;22215:14;22232:22;22243:10;22232;:22::i;:::-;22265:19;;;;:11;:19;;;;;;;;-1:-1:-1;;;;;22265:26:32;;;;;;;;;;22258:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22117:178:32;;;;:::o;2520:27:35:-;;;-1:-1:-1;;;;;2520:27:35;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;12800:138:32:-;12891:43;12900:10;12912:7;12921:5;12928;12891:8;:43::i;2641:41:35:-;;;;:::o;20663:187:32:-;-1:-1:-1;;;;;20756:22:32;;20726:7;20756:22;;;:10;:22;;;;;;20790:10;20782:43;;;;-1:-1:-1;;;20782:43:32;;;;;;;;;-1:-1:-1;;20836:10:32;;20663:187;-1:-1:-1;;20663:187:32:o;2817:121:145:-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;11899:676:32;12059:7;12068;12081:20;12104:59;12140:11;12153:9;12104:35;:59::i;:::-;12081:82;;12167:25;12195:91;12265:20;;12195:65;12238:5;:21;;;;;;;;;;-1:-1:-1;;;;;12238:21:32;-1:-1:-1;;;;;12195:65:32;:38;12212:20;;12195:12;:16;;:38;;;;:::i;:::-;:42;:65;:42;:65;:::i;:91::-;12318:15;;:40;;-1:-1:-1;;;12318:40:32;;12167:119;;-1:-1:-1;12291:24:32;;-1:-1:-1;;;;;12318:15:32;;;;:25;;:40;;12352:4;;12318:40;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12318:40:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12318:40:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12318:40:32;;;;;;;;;12291:67;-1:-1:-1;12381:39:32;12291:67;12402:17;12381:39;:20;:39;:::i;:::-;12362:58;-1:-1:-1;12424:33:32;12460:54;12362:58;12460:32;:17;432:4;12460:32;:21;:32;:::i;:54::-;12526:17;;;;-1:-1:-1;11899:676:32;;-1:-1:-1;;;;;;;;11899:676:32:o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;1201:125;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;6946:448:32:-;7026:14;7043:22;7054:10;7043;:22::i;:::-;7026:39;;7070:31;7104:12;7117:6;7104:20;;;;;;;;;;;;;;;;;;;;;:36;7167:20;;-1:-1:-1;;;;;;;;7104:36:32;;;;;;-1:-1:-1;7167:71:32;;;;;:49;;7104:36;7167:49;:24;:49;:::i;:::-;:53;:71;:53;:71;:::i;:::-;7144:20;:94;;;;7281:16;7242:12;7255:6;7242:20;;;;;;;;;;;;;;;;;;;;;:55;;-1:-1:-1;;;;;7242:55:32;;;;-1:-1:-1;;;7242:55:32;-1:-1:-1;;;;;7242:55:32;;;;;;7307:83;;;;;;7324:10;;7307:83;;;;7348:16;;7366:23;;7307:83;;8838:678;8928:7;8941:21;8965:12;8978:7;8965:21;;;;;;;;;;;;;;;;9014:20;;;:11;:20;;;;;;-1:-1:-1;;;;;9014:27:32;;;;;;;;;;9082:30;8965:21;;;;;;;9082:30;;;;9143:14;;:39;;-1:-1:-1;;;9143:39:32;;8965:21;;-1:-1:-1;9014:27:32;;9082:30;;8965:21;;9143:14;;:24;;:39;;9176:4;;9143:39;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9143:39:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9143:39:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9143:39:32;;;;;;;;;9116:66;;9205:4;:20;;;9190:12;:35;:60;;;;-1:-1:-1;9229:21:32;;;9190:60;9186:238;;;9260:34;9298:31;9324:4;9298:25;:31::i;:::-;9257:72;-1:-1:-1;9362:57:32;;-1:-1:-1;9362:25:32;9257:72;9362:57;:29;:57;:::i;:::-;9334:85;;9186:238;;9434:78;9496:4;:15;;;9434:57;432:4;9434:42;9450:25;9434:4;:11;;;:15;;:42;;;;:::i;:57::-;:61;:78;:61;:78;:::i;:::-;9427:85;8838:678;-1:-1:-1;;;;;;;8838:678:32:o;17056:349::-;17119:7;17154:10;-1:-1:-1;;;;;17172:19:32;;;17168:212;;17263:7;;-1:-1:-1;;;;;17263:7:32;17249:10;:21;;:52;;-1:-1:-1;17285:10:32;17274:22;;;;:10;:22;;;;;;:27;;17249:52;17241:110;;;;-1:-1:-1;;;17241:110:32;;;;;;;;;-1:-1:-1;17370:5:32;;17390:11;-1:-1:-1;17056:349:32:o;14966:392::-;15072:21;15096:12;15109:7;15096:21;;;;;;;;;;;;;;;;15145:20;;;:11;:20;;;;;;-1:-1:-1;;;;;15145:34:32;;;;;;;;;15096:21;;;;;;;;-1:-1:-1;15184:20:32;15157:7;15184:11;:20::i;:::-;15208:25;15222:4;15228;15208:13;:25::i;:::-;15261:14;;15237:84;;-1:-1:-1;;;;;15261:14:32;15278:4;15284:12;15298:16;15261:14;15237:15;:84::i;:::-;15325:29;15343:4;15349;15325:17;:29::i;:::-;14966:392;;;;;:::o;11040:666::-;11091:21;11115:12;11128:7;11115:21;;;;;;;;;;;;;;;;;;11091:45;;11201:4;:20;;;11185:12;:36;11181:58;;11228:7;;;11181:58;11270:14;;:39;;-1:-1:-1;;;11270:39:32;;11243:24;;-1:-1:-1;;;;;11270:14:32;;:24;;:39;;11303:4;;11270:39;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11270:39:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11270:39:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11270:39:32;;;;;;;;;11243:66;-1:-1:-1;11317:21:32;11313:83;;-1:-1:-1;11368:12:32;11345:20;;;;:35;11385:7;;11313:83;11401:26;11429:34;11467:31;11493:4;11467:25;:31::i;:::-;11535:30;;;;11400:98;;-1:-1:-1;11400:98:32;-1:-1:-1;11535:62:32;;11400:98;11535:62;:34;:62;:::i;:::-;11502:30;;;:95;11624:12;11601:20;;;:35;11661:17;;:41;;11683:18;11661:41;:21;:41;:::i;:::-;11641:17;:61;-1:-1:-1;;;;11040:666:32;:::o;17408:397::-;17529:11;;:15;17525:277;;17611:25;17639:83;17706:4;:15;;;17639:62;432:4;17639:47;17655:4;:30;;;17639:4;:11;;;:15;;:47;;;;:::i;:83::-;17752:22;;;;17611:111;;-1:-1:-1;17752:45:32;;17611:111;17752:45;:26;:45;:::i;:::-;17727:22;;;:70;-1:-1:-1;17408:397:32;;:::o;18468:1158::-;18665:23;;;;18774:3;;:28;;-1:-1:-1;;;18774:28:32;;18633:29;;-1:-1:-1;;;;;18774:3:32;;:13;;:28;;18796:4;;18774:28;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18774:28:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18774:28:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18774:28:32;;;;;;;;;18756:46;;18821:21;18810:7;:32;18806:817;;18869:17;;:44;;18891:21;18869:44;:21;:44;:::i;:::-;18849:17;:64;18944:1;18918:23;;;:27;19203:3;;19223:9;;19203:54;;-1:-1:-1;;;19203:54:32;;-1:-1:-1;;;;;19203:3:32;;;;:11;;:54;;19223:9;;;19235:21;;19203:54;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19203:54:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19203:54:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;19203:54:32;;;;;;;;;19195:81;;;;-1:-1:-1;;;19195:81:32;;;;;;;;;19281:9;;19336:26;;19281:82;;-1:-1:-1;;;19281:82:32;;-1:-1:-1;;;;;19281:9:32;;;;:17;;:82;;19299:12;;19313:21;;19281:82;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19281:82:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19281:82:32;;;;19373:16;19369:84;;;19397:9;;:50;;-1:-1:-1;;;19397:50:32;;-1:-1:-1;;;;;19397:9:32;;;;:36;;:50;;19434:12;;19397:50;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19397:50:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19397:50:32;;;;19369:84;19514:10;-1:-1:-1;;;;;19486:62:32;19500:12;-1:-1:-1;;;;;19486:62:32;;19526:21;19486:62;;;;;;;;;;;;;;;18806:817;;;19573:18;19572:19;19564:54;;;;-1:-1:-1;;;19564:54:32;;;;;;;;654:174:144;765:58;;739:85;;758:5;;-1:-1:-1;;;788:23:144;765:58;;813:2;;817:5;;765:58;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;765:58:144;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;765:58:144;;;179:29:-1;;;;160:49;;;739:18:144;:85::i;17808:268:32:-;18026:30;;;;18010:11;;:62;;432:4;;18010:47;;;:15;:47;:::i;:62::-;17992:15;;;;:80;-1:-1:-1;17808:268:32:o;780:87:137:-;853:10;780:87;:::o;13730:833:32:-;-1:-1:-1;;;;;13857:22:32;;;;;;:10;:22;;;;;;13849:60;;;;-1:-1:-1;;;13849:60:32;;;;;;;;;13913:19;-1:-1:-1;;;;;13935:19:32;;:40;;13965:10;13935:40;;;13957:5;13935:40;13913:62;;13980:14;13997:22;14008:10;13997;:22::i;:::-;13980:39;;14023:21;14047:12;14060:6;14047:20;;;;;;;;;;;;;;;;14095:19;;;:11;:19;;;;;;-1:-1:-1;;;;;14095:32:32;;;;;;;;;14047:20;;;;;;;;-1:-1:-1;14132:19:32;14107:6;14132:11;:19::i;:::-;14193:25;14207:4;14213;14193:13;:25::i;:::-;14227:11;;14223:254;;14333:18;14328:101;;14353:14;;:76;;-1:-1:-1;;;;;14353:14:32;14393:10;14414:4;14421:7;14353:76;:31;:76;:::i;:::-;14448:11;;:24;;14464:7;14448:24;:15;:24;:::i;:::-;14434:38;;14223:254;14480:29;14498:4;14504;14480:17;:29::i;:::-;14539:10;-1:-1:-1;;;;;14518:41:32;14526:11;-1:-1:-1;;;;;14518:41:32;;14551:7;14518:41;;;;;;;;;;;;;;;13730:833;;;;;;;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;3411:315:145:-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;8352:483:32:-;8448:7;8473:10;;8465:5;:18;8461:52;;;8498:10;;8490:18;;8461:52;8531:1;8520:8;;:12;:30;;;;;8542:8;;8536:3;:14;8520:30;8516:60;;;8563:8;;8557:14;;8516:60;8590:13;;8583:3;:20;8579:253;;8617:42;650:2;8617:14;:3;8625:5;8617:14;:7;:14;:::i;:42::-;8610:49;;;;8579:253;8683:13;;8674:5;:22;8670:162;;8710:14;:3;8718:5;8710:14;:7;:14;:::i;8670:162::-;8747:80;8804:22;8812:13;;8804:3;:7;;:22;;;;:::i;:::-;8747:52;650:2;8747:24;8765:5;8747:13;;:17;;:24;;;;:::i;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;11709:187:32:-;11791:7;11800;11820:72;11846:5;11853:1;11856:5;:21;;;11879:12;11820:25;:72::i;:::-;11813:79;;;;11709:187;;;:::o;2564:999:144:-;3111:27;3119:5;-1:-1:-1;;;;;3111:25:144;;:27::i;:::-;3103:71;;;;-1:-1:-1;;;3103:71:144;;;;;;;;;3233:12;3247:23;3282:5;-1:-1:-1;;;;;3274:19:144;3294:4;3274:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3232:67:144;;;;3311:7;3303:52;;;;-1:-1:-1;;;3303:52:144;;;;;;;;;3364:17;;:21;3360:200;;3489:10;3478:30;;;;;;;;;;;;;;3470:85;;;;-1:-1:-1;;;3470:85:144;;;;;;;;831:204;962:68;;936:95;;955:5;;-1:-1:-1;;;985:27:144;962:68;;1014:4;;1020:2;;1024:5;;962:68;;;;639:564:136;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;247:23275:32:-;;;;;;;;;;-1:-1:-1;;;;;247:23275:32;;;;;;-1:-1:-1;;;;;247:23275:32;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;247:23275:32;;;-1:-1:-1;;247:23275:32:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:352;;;290:3;283:4;275:6;271:17;267:27;257:2;;308:1;305;298:12;257:2;-1:-1;328:20;;368:18;357:30;;354:2;;;400:1;397;390:12;354:2;434:4;426:6;422:17;410:29;;485:3;477:4;469:6;465:17;455:8;451:32;448:41;445:2;;;502:1;499;492:12;445:2;250:262;;;;;;896:124;960:20;;985:30;960:20;985:30;;1027:128;1102:13;;1120:30;1102:13;1120:30;;1162:162;1245:20;;1270:49;1245:20;1270:49;;1508:130;1575:20;;1600:33;1575:20;1600:33;;1645:134;1723:13;;1741:33;1723:13;1741:33;;1786:128;1852:20;;1877:32;1852:20;1877:32;;1921:241;;2025:2;2013:9;2004:7;2000:23;1996:32;1993:2;;;2041:1;2038;2031:12;1993:2;2076:1;2093:53;2138:7;2118:9;2093:53;;2169:366;;;2290:2;2278:9;2269:7;2265:23;2261:32;2258:2;;;2306:1;2303;2296:12;2258:2;2341:1;2358:53;2403:7;2383:9;2358:53;;;2348:63;;2320:97;2448:2;2466:53;2511:7;2502:6;2491:9;2487:22;2466:53;;;2456:63;;2427:98;2252:283;;;;;;2542:366;;;2663:2;2651:9;2642:7;2638:23;2634:32;2631:2;;;2679:1;2676;2669:12;2631:2;2714:1;2731:53;2776:7;2756:9;2731:53;;;2721:63;;2693:97;2821:2;2839:53;2884:7;2875:6;2864:9;2860:22;2839:53;;2915:491;;;;3053:2;3041:9;3032:7;3028:23;3024:32;3021:2;;;3069:1;3066;3059:12;3021:2;3104:1;3121:53;3166:7;3146:9;3121:53;;;3111:63;;3083:97;3211:2;3229:53;3274:7;3265:6;3254:9;3250:22;3229:53;;;3219:63;;3190:98;3319:2;3337:53;3382:7;3373:6;3362:9;3358:22;3337:53;;;3327:63;;3298:98;3015:391;;;;;;3413:491;;;;3551:2;3539:9;3530:7;3526:23;3522:32;3519:2;;;3567:1;3564;3557:12;3519:2;3602:1;3619:53;3664:7;3644:9;3619:53;;;3609:63;;3581:97;3709:2;3727:53;3772:7;3763:6;3752:9;3748:22;3727:53;;;3717:63;;3688:98;3817:2;3835:53;3880:7;3871:6;3860:9;3856:22;3835:53;;3911:483;;;;4045:2;4033:9;4024:7;4020:23;4016:32;4013:2;;;4061:1;4058;4051:12;4013:2;4096:1;4113:53;4158:7;4138:9;4113:53;;;4103:63;;4075:97;4203:2;4221:52;4265:7;4256:6;4245:9;4241:22;4221:52;;;4211:62;;4182:97;4310:2;4328:50;4370:7;4361:6;4350:9;4346:22;4328:50;;4401:795;;;;;;4605:2;4593:9;4584:7;4580:23;4576:32;4573:2;;;4621:1;4618;4611:12;4573:2;4656:31;;4707:18;4696:30;;4693:2;;;4739:1;4736;4729:12;4693:2;4767:80;4839:7;4830:6;4819:9;4815:22;4767:80;;;4757:90;;;;4635:218;4912:2;4901:9;4897:18;4884:32;4936:18;4928:6;4925:30;4922:2;;;4968:1;4965;4958:12;4922:2;4996:79;5067:7;5058:6;5047:9;5043:22;4996:79;;;4986:89;;;;4863:218;5112:2;5130:50;5172:7;5163:6;5152:9;5148:22;5130:50;;;5120:60;;5091:95;4567:629;;;;;;;;;5203:257;;5315:2;5303:9;5294:7;5290:23;5286:32;5283:2;;;5331:1;5328;5321:12;5283:2;5366:1;5383:61;5436:7;5416:9;5383:61;;5467:1067;;;;;;;;5709:3;5697:9;5688:7;5684:23;5680:33;5677:2;;;5726:1;5723;5716:12;5677:2;5761:1;5778:69;5839:7;5819:9;5778:69;;;5768:79;;5740:113;5884:2;5902:53;5947:7;5938:6;5927:9;5923:22;5902:53;;;5892:63;;5863:98;5992:2;6010:53;6055:7;6046:6;6035:9;6031:22;6010:53;;;6000:63;;5971:98;6100:2;6118:53;6163:7;6154:6;6143:9;6139:22;6118:53;;;6108:63;;6079:98;6208:3;6227:53;6272:7;6263:6;6252:9;6248:22;6227:53;;;6217:63;;6187:99;6317:3;6336:73;6401:7;6392:6;6381:9;6377:22;6336:73;;;6326:83;;6296:119;6446:3;6465:53;6510:7;6501:6;6490:9;6486:22;6465:53;;;6455:63;;6425:99;5671:863;;;;;;;;;;;6541:281;;6665:2;6653:9;6644:7;6640:23;6636:32;6633:2;;;6681:1;6678;6671:12;6633:2;6716:1;6733:73;6798:7;6778:9;6733:73;;6829:241;;6933:2;6921:9;6912:7;6908:23;6904:32;6901:2;;;6949:1;6946;6939:12;6901:2;6984:1;7001:53;7046:7;7026:9;7001:53;;7077:263;;7192:2;7180:9;7171:7;7167:23;7163:32;7160:2;;;7208:1;7205;7198:12;7160:2;7243:1;7260:64;7316:7;7296:9;7260:64;;7347:366;;;7468:2;7456:9;7447:7;7443:23;7439:32;7436:2;;;7484:1;7481;7474:12;7436:2;7519:1;7536:53;7581:7;7561:9;7536:53;;7720:239;;7823:2;7811:9;7802:7;7798:23;7794:32;7791:2;;;7839:1;7836;7829:12;7791:2;7874:1;7891:52;7935:7;7915:9;7891:52;;7967:253;;8092:88;8176:3;8168:6;8092:88;;;-1:-1;;8209:4;8200:14;;8085:135;8229:265;;8360:94;8450:3;8442:6;8360:94;;;-1:-1;;8483:4;8474:14;;8353:141;8503:265;;8634:94;8724:3;8716:6;8634:94;;;-1:-1;;8757:4;8748:14;;8627:141;8777:173;;8864:46;8906:3;8898:6;8864:46;;;-1:-1;;8939:4;8930:14;;8857:93;8958:113;9041:24;9059:5;9041:24;;;9036:3;9029:37;9023:48;;;9115:842;;9298:73;9365:5;9298:73;;;9384:105;9482:6;9477:3;9384:105;;;9377:112;;9510:75;9579:5;9510:75;;;9605:7;9633:1;9618:317;9643:6;9640:1;9637:13;9618:317;;;9710:6;9704:13;9731:101;9828:3;9813:13;9731:101;;;9724:108;;9849:79;9921:6;9849:79;;;9839:89;-1:-1;;9665:1;9658:9;9618:317;;;-1:-1;9948:3;;9277:680;-1:-1;;;;;9277:680;10058:866;;10247:76;10317:5;10247:76;;;10336:108;10437:6;10432:3;10336:108;;;10329:115;;10465:78;10537:5;10465:78;;;10563:7;10591:1;10576:326;10601:6;10598:1;10595:13;10576:326;;;10668:6;10662:13;10689:107;10792:3;10777:13;10689:107;;;10682:114;;10813:82;10888:6;10813:82;;;10803:92;-1:-1;;10623:1;10616:9;10576:326;;11025:866;;11214:76;11284:5;11214:76;;;11303:108;11404:6;11399:3;11303:108;;;11296:115;;11432:78;11504:5;11432:78;;;11530:7;11558:1;11543:326;11568:6;11565:1;11562:13;11543:326;;;11635:6;11629:13;11656:107;11759:3;11744:13;11656:107;;;11649:114;;11780:82;11855:6;11780:82;;;11770:92;-1:-1;;11590:1;11583:9;11543:326;;11932:624;12051:48;12093:5;12051:48;;;12112:74;12179:6;12174:3;12112:74;;;12105:81;;12207:50;12251:5;12207:50;;;12277:7;12305:1;12290:254;12315:6;12312:1;12309:13;12290:254;;;12382:6;12376:13;12403:63;12462:3;12447:13;12403:63;;;12396:70;;12483:54;12530:6;12483:54;;;12473:64;-1:-1;;12337:1;12330:9;12290:254;;;12294:14;12030:526;;;;;;12595:690;;12740:54;12788:5;12740:54;;;12807:86;12886:6;12881:3;12807:86;;;12800:93;;12914:56;12964:5;12914:56;;;12990:7;13018:1;13003:260;13028:6;13025:1;13022:13;13003:260;;;13095:6;13089:13;13116:63;13175:3;13160:13;13116:63;;;13109:70;;13196:60;13249:6;13196:60;;;13186:70;-1:-1;;13050:1;13043:9;13003:260;;13293:104;13370:21;13385:5;13370:21;;13404:356;;13532:38;13564:5;13532:38;;;13582:88;13663:6;13658:3;13582:88;;;13575:95;;13675:52;13720:6;13715:3;13708:4;13701:5;13697:16;13675:52;;;13739:16;;;;;13512:248;-1:-1;;13512:248;13767:148;13856:53;13903:5;13856:53;;14260:347;;14372:39;14405:5;14372:39;;;14423:71;14487:6;14482:3;14423:71;;;14416:78;;14499:52;14544:6;14539:3;14532:4;14525:5;14521:16;14499:52;;;14572:29;14594:6;14572:29;;;14563:39;;;;14352:255;-1:-1;;;14352:255;14615:324;;14775:67;14839:2;14834:3;14775:67;;;14875:26;14855:47;;14930:2;14921:12;;14761:178;-1:-1;;14761:178;14948:322;;15108:67;15172:2;15167:3;15108:67;;;-1:-1;;;15188:45;;15261:2;15252:12;;15094:176;-1:-1;;15094:176;15279:326;;15439:67;15503:2;15498:3;15439:67;;;15539:28;15519:49;;15596:2;15587:12;;15425:180;-1:-1;;15425:180;15614:375;;15774:67;15838:2;15833:3;15774:67;;;15874:34;15854:55;;-1:-1;;;15938:2;15929:12;;15922:30;15980:2;15971:12;;15760:229;-1:-1;;15760:229;15998:320;;16158:67;16222:2;16217:3;16158:67;;;-1:-1;;;16238:43;;16309:2;16300:12;;16144:174;-1:-1;;16144:174;16327:315;;16487:67;16551:2;16546:3;16487:67;;;-1:-1;;;16567:38;;16633:2;16624:12;;16473:169;-1:-1;;16473:169;16651:327;;16811:67;16875:2;16870:3;16811:67;;;16911:29;16891:50;;16969:2;16960:12;;16797:181;-1:-1;;16797:181;16987:332;;17147:67;17211:2;17206:3;17147:67;;;17247:34;17227:55;;17310:2;17301:12;;17133:186;-1:-1;;17133:186;17328:392;;17488:67;17552:2;17547:3;17488:67;;;17588:34;17568:55;;17657:25;17652:2;17643:12;;17636:47;17711:2;17702:12;;17474:246;-1:-1;;17474:246;17729:318;;17889:67;17953:2;17948:3;17889:67;;;-1:-1;;;17969:41;;18038:2;18029:12;;17875:172;-1:-1;;17875:172;18056:319;;18216:67;18280:2;18275:3;18216:67;;;-1:-1;;;18296:42;;18366:2;18357:12;;18202:173;-1:-1;;18202:173;18384:314;;18544:67;18608:2;18603:3;18544:67;;;-1:-1;;;18624:37;;18689:2;18680:12;;18530:168;-1:-1;;18530:168;18707:324;;18867:67;18931:2;18926:3;18867:67;;;18967:26;18947:47;;19022:2;19013:12;;18853:178;-1:-1;;18853:178;19040:370;;19200:67;19264:2;19259:3;19200:67;;;19300:34;19280:55;;-1:-1;;;19364:2;19355:12;;19348:25;19401:2;19392:12;;19186:224;-1:-1;;19186:224;19419:312;;19579:67;19643:2;19638:3;19579:67;;;-1:-1;;;19659:35;;19722:2;19713:12;;19565:166;-1:-1;;19565:166;19740:315;;19900:67;19964:2;19959:3;19900:67;;;-1:-1;;;19980:38;;20046:2;20037:12;;19886:169;-1:-1;;19886:169;20064:319;;20224:67;20288:2;20283:3;20224:67;;;-1:-1;;;20304:42;;20374:2;20365:12;;20210:173;-1:-1;;20210:173;20392:314;;20552:67;20616:2;20611:3;20552:67;;;-1:-1;;;20632:37;;20697:2;20688:12;;20538:168;-1:-1;;20538:168;20715:382;;20875:67;20939:2;20934:3;20875:67;;;20975:34;20955:55;;-1:-1;;;21039:2;21030:12;;21023:37;21088:2;21079:12;;20861:236;-1:-1;;20861:236;21106:321;;21266:67;21330:2;21325:3;21266:67;;;-1:-1;;;21346:44;;21418:2;21409:12;;21252:175;-1:-1;;21252:175;21436:319;;21596:67;21660:2;21655:3;21596:67;;;-1:-1;;;21676:42;;21746:2;21737:12;;21582:173;-1:-1;;21582:173;21764:379;;21924:67;21988:2;21983:3;21924:67;;;22024:34;22004:55;;-1:-1;;;22088:2;22079:12;;22072:34;22134:2;22125:12;;21910:233;-1:-1;;21910:233;22152:315;;22312:67;22376:2;22371:3;22312:67;;;-1:-1;;;22392:38;;22458:2;22449:12;;22298:169;-1:-1;;22298:169;22476:331;;22636:67;22700:2;22695:3;22636:67;;;22736:33;22716:54;;22798:2;22789:12;;22622:185;-1:-1;;22622:185;22902:848;23118:23;;23047:4;23038:14;;;23147:79;23042:3;23118:23;23147:79;;;23067:165;23316:4;23309:5;23305:16;23299:23;23328:61;23383:4;23378:3;23374:14;23360:12;23328:61;;;23242:153;23479:4;23472:5;23468:16;23462:23;23491:63;23548:4;23543:3;23539:14;23525:12;23491:63;;;23405:155;23654:4;23647:5;23643:16;23637:23;23666:63;23723:4;23718:3;23714:14;23700:12;23666:63;;24772:653;24985:23;;24917:4;24908:14;;;25014:63;24912:3;24985:23;25014:63;;;24937:146;25162:4;25155:5;25151:16;25145:23;25174:63;25231:4;25226:3;25222:14;25208:12;25174:63;;;25093:150;25329:4;25322:5;25318:16;25312:23;25341:63;25398:4;25393:3;25389:14;25375:12;26165:103;26238:24;26256:5;26238:24;;26395:124;26477:36;26507:5;26477:36;;26526:100;26597:23;26614:5;26597:23;;26750:262;;26894:93;26983:3;26974:6;26894:93;;27019:213;27137:2;27122:18;;27151:71;27126:9;27195:6;27151:71;;27239:435;27413:2;27398:18;;27427:71;27402:9;27471:6;27427:71;;;27509:72;27577:2;27566:9;27562:18;27553:6;27509:72;;;27592;27660:2;27649:9;27645:18;27636:6;27592:72;;27681:324;27827:2;27812:18;;27841:71;27816:9;27885:6;27841:71;;;27923:72;27991:2;27980:9;27976:18;27967:6;27923:72;;28012:435;28186:2;28171:18;;28200:71;28175:9;28244:6;28200:71;;;28282:72;28350:2;28339:9;28335:18;28326:6;28282:72;;28454:437;28660:2;28674:47;;;28645:18;;28735:146;28645:18;28867:6;28735:146;;28898:449;29110:2;29124:47;;;29095:18;;29185:152;29095:18;29323:6;29185:152;;29354:449;29566:2;29580:47;;;29551:18;;29641:152;29551:18;29779:6;29641:152;;29810:361;29978:2;29992:47;;;29963:18;;30053:108;29963:18;30147:6;30053:108;;30178:201;30290:2;30275:18;;30304:65;30279:9;30342:6;30304:65;;30386:245;30520:2;30505:18;;30534:87;30509:9;30594:6;30534:87;;30638:575;30854:3;30839:19;;30869:87;30843:9;30929:6;30869:87;;;30967:70;31033:2;31022:9;31018:18;31009:6;30967:70;;;31048:72;31116:2;31105:9;31101:18;31092:6;31048:72;;;31131;31199:2;31188:9;31184:18;31175:6;31131:72;;;30825:388;;;;;;;;31480:301;31618:2;31632:47;;;31603:18;;31693:78;31603:18;31757:6;31693:78;;31788:407;31979:2;31993:47;;;31964:18;;32054:131;31964:18;32054:131;;32202:407;32393:2;32407:47;;;32378:18;;32468:131;32378:18;32468:131;;32616:407;32807:2;32821:47;;;32792:18;;32882:131;32792:18;32882:131;;33030:407;33221:2;33235:47;;;33206:18;;33296:131;33206:18;33296:131;;33444:407;33635:2;33649:47;;;33620:18;;33710:131;33620:18;33710:131;;33858:407;34049:2;34063:47;;;34034:18;;34124:131;34034:18;34124:131;;34272:407;34463:2;34477:47;;;34448:18;;34538:131;34448:18;34538:131;;34686:407;34877:2;34891:47;;;34862:18;;34952:131;34862:18;34952:131;;35100:407;35291:2;35305:47;;;35276:18;;35366:131;35276:18;35366:131;;35514:407;35705:2;35719:47;;;35690:18;;35780:131;35690:18;35780:131;;35928:407;36119:2;36133:47;;;36104:18;;36194:131;36104:18;36194:131;;36342:407;36533:2;36547:47;;;36518:18;;36608:131;36518:18;36608:131;;36756:407;36947:2;36961:47;;;36932:18;;37022:131;36932:18;37022:131;;37170:407;37361:2;37375:47;;;37346:18;;37436:131;37346:18;37436:131;;37584:407;37775:2;37789:47;;;37760:18;;37850:131;37760:18;37850:131;;37998:407;38189:2;38203:47;;;38174:18;;38264:131;38174:18;38264:131;;38412:407;38603:2;38617:47;;;38588:18;;38678:131;38588:18;38678:131;;38826:407;39017:2;39031:47;;;39002:18;;39092:131;39002:18;39092:131;;39240:407;39431:2;39445:47;;;39416:18;;39506:131;39416:18;39506:131;;39654:407;39845:2;39859:47;;;39830:18;;39920:131;39830:18;39920:131;;40068:407;40259:2;40273:47;;;40244:18;;40334:131;40244:18;40334:131;;40482:407;40673:2;40687:47;;;40658:18;;40748:131;40658:18;40748:131;;40896:407;41087:2;41101:47;;;41072:18;;41162:131;41072:18;41162:131;;41310:407;41501:2;41515:47;;;41486:18;;41576:131;41486:18;41576:131;;41724:318;41894:3;41879:19;;41909:123;41883:9;42005:6;41909:123;;42049:317;42219:2;42204:18;;42233:123;42208:9;42329:6;42233:123;;42373:213;42491:2;42476:18;;42505:71;42480:9;42549:6;42505:71;;42593:324;42739:2;42724:18;;42753:71;42728:9;42797:6;42753:71;;42924:435;43098:2;43083:18;;43112:71;43087:9;43156:6;43112:71;;43366:211;43483:2;43468:18;;43497:70;43472:9;43540:6;43497:70;;43584:322;43729:2;43714:18;;43743:70;43718:9;43786:6;43743:70;;43913:170;44056:4;44047:14;;44004:79;44450:93;44530:3;44516:27;44708:156;44830:12;;44801:63;45203:104;-1:-1;45293:4;;45271:36;46348:197;46485:19;;;46534:4;46525:14;;46478:67;46972:130;47093:3;47071:31;-1:-1;47071:31;47622:91;;47684:24;47702:5;47684:24;;47720:85;47786:13;47779:21;;47762:43;47812:107;;47890:24;47908:5;47890:24;;48044:121;-1:-1;;;;;48106:54;;48089:76;48251:104;-1:-1;;;;;48312:38;;48295:60;48956:106;;49034:23;49051:5;49034:23;;49070:268;49135:1;49142:101;49156:6;49153:1;49150:13;49142:101;;;49223:11;;;49217:18;49204:11;;;49197:39;49178:2;49171:10;49142:101;;;49258:6;49255:1;49252:13;49249:2;;;-1:-1;;49323:1;49305:16;;49298:27;49119:219;49346:97;49434:2;49414:14;-1:-1;;49410:28;;49394:49;49451:117;49520:24;49538:5;49520:24;;;49513:5;49510:35;49500:2;;49559:1;49556;49549:12;49575:111;49641:21;49656:5;49641:21;;49693:149;49778:40;49812:5;49778:40;;50013:117;50082:24;50100:5;50082:24;;50137:115;50205:23;50222:5;50205:23;"
            },
            "methodIdentifiers": {
              "BONUS_BLOCK_MULTIPLIER()": "10a168f9",
              "PRECISION()": "aaf5eb68",
              "SECONDS_PER_BLOCK()": "c1d74258",
              "SOV()": "08dcb360",
              "add(address,uint96,bool)": "0c43a7cd",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "bonusEndBlock()": "1aed6553",
              "claimReward(address,address)": "4953c782",
              "claimRewardFromAllPools(address)": "d6a49f0e",
              "deposit(address,uint256,address)": "f45346dc",
              "emergencyWithdraw(address)": "6ff1c9bc",
              "endBlock()": "083c6323",
              "getEstimatedReward(address,uint256,uint256)": "0b1a2851",
              "getMissedBalance()": "3723de42",
              "getPoolId(address)": "caa9a08d",
              "getPoolInfo(address)": "06bfa938",
              "getPoolInfoList()": "e788d8d1",
              "getPoolLength()": "b3944d52",
              "getUserAccumulatedReward(address,address)": "56085d4c",
              "getUserAccumulatedRewardList(address)": "48c84d9e",
              "getUserBalanceList(address)": "5d50d060",
              "getUserInfo(address,address)": "f2801fe7",
              "getUserInfoList(address)": "62748fbb",
              "getUserPoolTokenBalance(address,address)": "d0452aa6",
              "initialize(address,uint256,uint256,uint256,address,address,uint256)": "e3866c9a",
              "isOwner()": "8f32d59b",
              "lockedSOV()": "f2f46b3b",
              "onTokensDeposited(address,uint256)": "d8c173c4",
              "owner()": "8da5cb5b",
              "poolInfoList(uint256)": "787b4026",
              "removeAdmin(address)": "1785f53c",
              "rewardTokensPerBlock()": "29d0fa3e",
              "setLockedSOV(address)": "1d8f889c",
              "setUnlockedImmediatelyPercent(uint256)": "2d0857a2",
              "setWrapper(address)": "c2167d93",
              "startBlock()": "48cd4cb1",
              "stopMining()": "da408679",
              "totalAllocationPoint()": "a1a6690f",
              "totalUsersBalance()": "9a13ba29",
              "transferOwnership(address)": "f2fde38b",
              "transferSOV(address,uint256)": "c680c0b7",
              "unlockedImmediatelyPercent()": "f729a404",
              "update(address,uint96,bool)": "c35a934d",
              "updateAllPools()": "b9ec7d74",
              "updatePool(address)": "7b46c54f",
              "updateTokens(address[],uint96[],bool)": "414d57fb",
              "userInfoMap(uint256,address)": "5f02c145",
              "withdraw(address,uint256,address)": "69328dec",
              "wrapper()": "ac210cc7"
            }
          },
          "userdoc": {
            "methods": {
              "add(address,uint96,bool)": {
                "notice": "adds a new lp to the pool. Can only be called by the owner or an admin"
              },
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "claimReward(address,address)": {
                "notice": "transfers reward tokens"
              },
              "claimRewardFromAllPools(address)": {
                "notice": "transfers reward tokens from all pools"
              },
              "deposit(address,uint256,address)": {
                "notice": "deposits pool tokens"
              },
              "emergencyWithdraw(address)": {
                "notice": "withdraws pool tokens without transferring reward tokens"
              },
              "getEstimatedReward(address,uint256,uint256)": {
                "notice": "returns estimated reward"
              },
              "getMissedBalance()": {
                "notice": "Get the missed SOV balance of LM contract."
              },
              "getPoolId(address)": {
                "notice": "returns pool id"
              },
              "getPoolInfo(address)": {
                "notice": "returns pool info for the given token"
              },
              "getPoolInfoList()": {
                "notice": "returns list of pool token's info"
              },
              "getPoolLength()": {
                "notice": "returns count of pool tokens"
              },
              "getUserAccumulatedReward(address,address)": {
                "notice": "returns accumulated reward"
              },
              "getUserAccumulatedRewardList(address)": {
                "notice": "returns accumulated reward for the given user for each pool token"
              },
              "getUserBalanceList(address)": {
                "notice": "returns list of [amount, accumulatedReward] for the given user for each pool token"
              },
              "getUserInfo(address,address)": {
                "notice": "returns UserInfo for the given pool and user"
              },
              "getUserInfoList(address)": {
                "notice": "returns list of UserInfo for the given user for each pool token"
              },
              "getUserPoolTokenBalance(address,address)": {
                "notice": "returns the pool token balance a user has on the contract"
              },
              "initialize(address,uint256,uint256,uint256,address,address,uint256)": {
                "notice": "Initialize mining."
              },
              "onTokensDeposited(address,uint256)": {
                "notice": "if the lending pools directly mint/transfer tokens to this address, process it like a user deposit"
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "setLockedSOV(address)": {
                "notice": "Sets lockedSOV contract."
              },
              "setUnlockedImmediatelyPercent(uint256)": {
                "notice": "Sets unlocked immediately percent."
              },
              "setWrapper(address)": {
                "notice": "sets wrapper proxy contract"
              },
              "stopMining()": {
                "notice": "stops mining by setting end block"
              },
              "transferSOV(address,uint256)": {
                "notice": "Transfers SOV tokens to given address.  Owner use this function to withdraw SOV from LM contract  into another account."
              },
              "update(address,uint96,bool)": {
                "notice": "updates the given pool's reward tokens allocation point"
              },
              "updateAllPools()": {
                "notice": "Updates reward variables for all pools."
              },
              "updatePool(address)": {
                "notice": "Updates reward variables of the given pool to be up-to-date"
              },
              "updateTokens(address[],uint96[],bool)": {
                "notice": "updates the given pools' reward tokens allocation points"
              },
              "withdraw(address,uint256,address)": {
                "notice": "withdraws pool tokens and transfers reward tokens"
              }
            }
          }
        }
      },
      "contracts/farm/LiquidityMiningConfigToken.sol": {
        "LiquidityMiningConfigToken": {
          "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"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "We need this token for having a flexibility with LiquidityMining configuration",
            "methods": {},
            "title": "Dummy token with 0 total supply."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610198806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063095ea7b31461006757806318160ddd146100a757806323b872dd146100c157806370a08231146100f7578063a9059cbb14610067578063dd62ed3e1461011d575b600080fd5b6100936004803603604081101561007d57600080fd5b506001600160a01b038135169060200135610147565b604080519115158252519081900360200190f35b6100af61014f565b60408051918252519081900360200190f35b610093600480360360608110156100d757600080fd5b506001600160a01b03813581169160208101359091169060400135610154565b6100af6004803603602081101561010d57600080fd5b50356001600160a01b031661015d565b6100af6004803603604081101561013357600080fd5b506001600160a01b03813581169160200135165b600092915050565b600090565b60009392505050565b5060009056fea265627a7a7231582086994d71f1faad891679efec87ed6ad6871a851e86d02f278bd0d6bc17f4200d64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x198 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x11D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x93 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAF PUSH2 0x14F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x93 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x154 JUMP JUMPDEST PUSH2 0xAF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15D JUMP JUMPDEST PUSH2 0xAF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 DUP7 SWAP10 0x4D PUSH18 0xF1FAAD891679EFEC87ED6AD6871A851E86D0 0x2F 0x27 DUP12 0xD0 0xD6 0xBC OR DELEGATECALL KECCAK256 0xD PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "206:638:33:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;206:638:33;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100625760003560e01c8063095ea7b31461006757806318160ddd146100a757806323b872dd146100c157806370a08231146100f7578063a9059cbb14610067578063dd62ed3e1461011d575b600080fd5b6100936004803603604081101561007d57600080fd5b506001600160a01b038135169060200135610147565b604080519115158252519081900360200190f35b6100af61014f565b60408051918252519081900360200190f35b610093600480360360608110156100d757600080fd5b506001600160a01b03813581169160208101359091169060400135610154565b6100af6004803603602081101561010d57600080fd5b50356001600160a01b031661015d565b6100af6004803603604081101561013357600080fd5b506001600160a01b03813581169160200135165b600092915050565b600090565b60009392505050565b5060009056fea265627a7a7231582086994d71f1faad891679efec87ed6ad6871a851e86d02f278bd0d6bc17f4200d64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x11D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x93 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAF PUSH2 0x14F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x93 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x154 JUMP JUMPDEST PUSH2 0xAF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15D JUMP JUMPDEST PUSH2 0xAF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 DUP7 SWAP10 0x4D PUSH18 0xF1FAAD891679EFEC87ED6AD6871A851E86D0 0x2F 0x27 DUP12 0xD0 0xD6 0xBC OR DELEGATECALL KECCAK256 0xD PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "206:638:33:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;206:638:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;619:94;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;619:94:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;256:71;;;:::i;:::-;;;;;;;;;;;;;;;;716:126;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;716:126:33;;;;;;;;;;;;;;;;;:::i;330:84::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;330:84:33;-1:-1:-1;;;;;330:84:33;;:::i;517:99::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;517:99:33;;;;;;;;;619:94;687:4;619:94;;;;:::o;256:71::-;302:7;256:71;:::o;716:126::-;816:4;716:126;;;;;:::o;330:84::-;-1:-1:-1;389:7:33;;330:84::o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/farm/LiquidityMiningProxy.sol": {
        "LiquidityMiningProxy": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldImplementation",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newImplementation",
                  "type": "address"
                }
              ],
              "name": "ImplementationChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "bonusEndBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "endBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getImplementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getProxyOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOV",
              "outputs": [
                {
                  "internalType": "contract ILockedSOV",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolInfoList",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "allocationPoint",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "lastRewardBlock",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "accumulatedRewardPerShare",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rewardTokensPerBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "name": "setImplementation",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "setProxyOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "startBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAllocationPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalUsersBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "unlockedImmediatelyPercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userInfoMap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rewardDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "accumulatedReward",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrapper",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "LiquidityMining contract should be upgradable, use UpgradableProxy",
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "getImplementation()": {
                "return": "Address of the implementation."
              },
              "getProxyOwner()": {
                "return": "Address of the owner."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "setImplementation(address)": {
                "details": "Wrapper for _setImplementation that exposes the function as public for owner to be able to set a new version of the contract as current pointing implementation.",
                "params": {
                  "_implementation": "Address of the implementation."
                }
              },
              "setProxyOwner(address)": {
                "params": {
                  "_owner": "Address of the owner."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b038316908117825560405192935091600080516020610d0c833981519152908290a350610061336001600160e01b0361006a16565b61013c565b3390565b6001600160a01b0381166100af5760405162461bcd60e51b8152600401808060200182810382526025815260200180610d2c6025913960400191505060405180910390fd5b6001600160a01b0381166100ca6001600160e01b0361011416565b6001600160a01b0316600080516020610d0c83398151915260405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b610bc18061014b6000396000f3fe6080604052600436106101355760003560e01c80638da5cb5b116100ab578063ac210cc71161006f578063ac210cc71461042d578063caaee91c14610442578063d784d42614610475578063f2f46b3b146104a8578063f2fde38b146104bd578063f729a404146104f057610135565b80638da5cb5b146103c45780638f32d59b146103d95780639a13ba29146103ee578063a1a6690f14610403578063aaf10f421461041857610135565b806329d0fa3e116100fd57806329d0fa3e14610262578063429b62e51461027757806348cd4cb1146102be5780635f02c145146102d3578063704802751461032a578063787b40261461035d57610135565b8063083c6323146101ab57806308dcb360146101d25780631785f53c146102035780631ab7710d146102385780631aed65531461024d575b600061013f610505565b90506001600160a01b0381166101865760405162461bcd60e51b8152600401808060200182810382526023815260200180610b456023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e8180156101a7578184f35b8184fd5b3480156101b757600080fd5b506101c0610530565b60408051918252519081900360200190f35b3480156101de57600080fd5b506101e7610536565b604080516001600160a01b039092168252519081900360200190f35b34801561020f57600080fd5b506102366004803603602081101561022657600080fd5b50356001600160a01b0316610545565b005b34801561024457600080fd5b506101e76105e5565b34801561025957600080fd5b506101c061060d565b34801561026e57600080fd5b506101c0610613565b34801561028357600080fd5b506102aa6004803603602081101561029a57600080fd5b50356001600160a01b0316610619565b604080519115158252519081900360200190f35b3480156102ca57600080fd5b506101c061062e565b3480156102df57600080fd5b5061030c600480360360408110156102f657600080fd5b50803590602001356001600160a01b0316610634565b60408051938452602084019290925282820152519081900360600190f35b34801561033657600080fd5b506102366004803603602081101561034d57600080fd5b50356001600160a01b0316610660565b34801561036957600080fd5b506103876004803603602081101561038057600080fd5b5035610704565b604080516001600160a01b0390951685526bffffffffffffffffffffffff9093166020850152838301919091526060830152519081900360800190f35b3480156103d057600080fd5b506101e7610755565b3480156103e557600080fd5b506102aa610764565b3480156103fa57600080fd5b506101c0610788565b34801561040f57600080fd5b506101c061078e565b34801561042457600080fd5b506101e7610505565b34801561043957600080fd5b506101e7610794565b34801561044e57600080fd5b506102366004803603602081101561046557600080fd5b50356001600160a01b03166107a3565b34801561048157600080fd5b506102366004803603602081101561049857600080fd5b50356001600160a01b0316610814565b3480156104b457600080fd5b506101e7610882565b3480156104c957600080fd5b50610236600480360360208110156104e057600080fd5b50356001600160a01b0316610891565b3480156104fc57600080fd5b506101c06108e2565b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b60055481565b600c546001600160a01b031681565b61054d610764565b61058d576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b60045481565b60025481565b60016020526000908152604090205460ff1681565b60035481565b600a60209081526000928352604080842090915290825290208054600182015460029092015490919083565b610668610764565b6106a8576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6007818154811061071157fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b0382169350600160a01b9091046bffffffffffffffffffffffff16919084565b6000546001600160a01b031690565b600080546001600160a01b03166107796108e8565b6001600160a01b031614905090565b600b5481565b60095481565b6006546001600160a01b031681565b6107ab6105e5565b6001600160a01b0316336001600160a01b031614610808576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b610811816108ec565b50565b61081c6105e5565b6001600160a01b0316336001600160a01b031614610879576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b6108118161099f565b600d546001600160a01b031681565b610899610764565b6108d9576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61081181610a55565b600e5481565b3390565b6001600160a01b0381166109315760405162461bcd60e51b8152600401808060200182810382526025815260200180610b686025913960400191505060405180910390fd5b806001600160a01b03166109436105e5565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b6001600160a01b0381166109e45760405162461bcd60e51b8152600401808060200182810382526029815260200180610b1c6029913960400191505060405180910390fd5b806001600160a01b03166109f6610505565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a3604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b8152905190819003601201902055565b6001600160a01b038116610a9a5760405162461bcd60e51b8152600401808060200182810382526026815260200180610af66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737350726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6964206164647265737350726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e6450726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373a265627a7a7231582004cb8528662e0245b65da5703c24d2e97add4098b07f49eaded52cb762a90e8764736f6c634300051100328be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e050726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xD0C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x61 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x6A AND JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD2C PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xCA PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x114 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xD0C DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xBC1 DUP1 PUSH2 0x14B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x135 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xAC210CC7 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xAC210CC7 EQ PUSH2 0x42D JUMPI DUP1 PUSH4 0xCAAEE91C EQ PUSH2 0x442 JUMPI DUP1 PUSH4 0xD784D426 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0xF729A404 EQ PUSH2 0x4F0 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3C4 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x3D9 JUMPI DUP1 PUSH4 0x9A13BA29 EQ PUSH2 0x3EE JUMPI DUP1 PUSH4 0xA1A6690F EQ PUSH2 0x403 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x418 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x29D0FA3E GT PUSH2 0xFD JUMPI DUP1 PUSH4 0x29D0FA3E EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x48CD4CB1 EQ PUSH2 0x2BE JUMPI DUP1 PUSH4 0x5F02C145 EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0x787B4026 EQ PUSH2 0x35D JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x83C6323 EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0x1AED6553 EQ PUSH2 0x24D JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x13F PUSH2 0x505 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB45 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x1A7 JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x530 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x536 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x545 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x5E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x60D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x613 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x619 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x62E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x634 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x660 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x387 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP6 MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x755 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x764 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x788 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x78E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x505 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x794 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x814 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x882 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x891 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x8E2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x54D PUSH2 0x764 JUMP JUMPDEST PUSH2 0x58D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH2 0x668 PUSH2 0x764 JUMP JUMPDEST PUSH2 0x6A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x711 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP4 POP PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x779 PUSH2 0x8E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x7AB PUSH2 0x5E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x808 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x811 DUP2 PUSH2 0x8EC JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x81C PUSH2 0x5E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x879 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x811 DUP2 PUSH2 0x99F JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x899 PUSH2 0x764 JUMP JUMPDEST PUSH2 0x8D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x811 DUP2 PUSH2 0xA55 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x931 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB68 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x943 PUSH2 0x5E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB1C PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9F6 PUSH2 0x505 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xA9A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAF6 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737350726F78793A3A736574496D706C656D PUSH6 0x6E746174696F PUSH15 0x3A20696E76616C6964206164647265 PUSH20 0x7350726F78793A3A28293A20696D706C656D656E PUSH21 0x6174696F6E206E6F7420666F756E6450726F78793A GASPRICE PUSH20 0x657450726F78794F776E65723A20696E76616C69 PUSH5 0x2061646472 PUSH6 0x7373A265627A PUSH27 0x7231582004CB8528662E0245B65DA5703C24D2E97ADD4098B07F49 0xEA 0xDE 0xD5 0x2C 0xB7 PUSH3 0xA90E87 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN DUP12 0xE0 SMOD SWAP13 MSTORE8 AND MSIZE EQ SGT DIFFICULTY 0xCD 0x1F 0xD0 LOG4 CALLCODE DUP5 NOT 0x49 PUSH32 0x9722A3DAAFE3B4186F6B6457E050726F78793A3A73657450726F78794F776E65 PUSH19 0x3A20696E76616C696420616464726573730000 ",
              "sourceMap": "188:77:34:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;;;;;;;;;;740:43:142;713:6;;740:43;-1:-1:-1;1653:26:147;1668:10;-1:-1:-1;;;;;1653:14:147;:26;:::i;:::-;188:77:34;;780:87:137;853:10;780:87;:::o;2644:249:147:-;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2776:45:147;;2797:15;-1:-1:-1;;;;;2797:13:147;:15;:::i;:::-;-1:-1:-1;;;;;2776:45:147;-1:-1:-1;;;;;;;;;;;2776:45:147;;;;;;;;;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;2867:19;2862:28::o;2983:134::-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o;188:77:34:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106101355760003560e01c80638da5cb5b116100ab578063ac210cc71161006f578063ac210cc71461042d578063caaee91c14610442578063d784d42614610475578063f2f46b3b146104a8578063f2fde38b146104bd578063f729a404146104f057610135565b80638da5cb5b146103c45780638f32d59b146103d95780639a13ba29146103ee578063a1a6690f14610403578063aaf10f421461041857610135565b806329d0fa3e116100fd57806329d0fa3e14610262578063429b62e51461027757806348cd4cb1146102be5780635f02c145146102d3578063704802751461032a578063787b40261461035d57610135565b8063083c6323146101ab57806308dcb360146101d25780631785f53c146102035780631ab7710d146102385780631aed65531461024d575b600061013f610505565b90506001600160a01b0381166101865760405162461bcd60e51b8152600401808060200182810382526023815260200180610b456023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e8180156101a7578184f35b8184fd5b3480156101b757600080fd5b506101c0610530565b60408051918252519081900360200190f35b3480156101de57600080fd5b506101e7610536565b604080516001600160a01b039092168252519081900360200190f35b34801561020f57600080fd5b506102366004803603602081101561022657600080fd5b50356001600160a01b0316610545565b005b34801561024457600080fd5b506101e76105e5565b34801561025957600080fd5b506101c061060d565b34801561026e57600080fd5b506101c0610613565b34801561028357600080fd5b506102aa6004803603602081101561029a57600080fd5b50356001600160a01b0316610619565b604080519115158252519081900360200190f35b3480156102ca57600080fd5b506101c061062e565b3480156102df57600080fd5b5061030c600480360360408110156102f657600080fd5b50803590602001356001600160a01b0316610634565b60408051938452602084019290925282820152519081900360600190f35b34801561033657600080fd5b506102366004803603602081101561034d57600080fd5b50356001600160a01b0316610660565b34801561036957600080fd5b506103876004803603602081101561038057600080fd5b5035610704565b604080516001600160a01b0390951685526bffffffffffffffffffffffff9093166020850152838301919091526060830152519081900360800190f35b3480156103d057600080fd5b506101e7610755565b3480156103e557600080fd5b506102aa610764565b3480156103fa57600080fd5b506101c0610788565b34801561040f57600080fd5b506101c061078e565b34801561042457600080fd5b506101e7610505565b34801561043957600080fd5b506101e7610794565b34801561044e57600080fd5b506102366004803603602081101561046557600080fd5b50356001600160a01b03166107a3565b34801561048157600080fd5b506102366004803603602081101561049857600080fd5b50356001600160a01b0316610814565b3480156104b457600080fd5b506101e7610882565b3480156104c957600080fd5b50610236600480360360208110156104e057600080fd5b50356001600160a01b0316610891565b3480156104fc57600080fd5b506101c06108e2565b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b60055481565b600c546001600160a01b031681565b61054d610764565b61058d576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b60045481565b60025481565b60016020526000908152604090205460ff1681565b60035481565b600a60209081526000928352604080842090915290825290208054600182015460029092015490919083565b610668610764565b6106a8576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6007818154811061071157fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b0382169350600160a01b9091046bffffffffffffffffffffffff16919084565b6000546001600160a01b031690565b600080546001600160a01b03166107796108e8565b6001600160a01b031614905090565b600b5481565b60095481565b6006546001600160a01b031681565b6107ab6105e5565b6001600160a01b0316336001600160a01b031614610808576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b610811816108ec565b50565b61081c6105e5565b6001600160a01b0316336001600160a01b031614610879576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b6108118161099f565b600d546001600160a01b031681565b610899610764565b6108d9576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61081181610a55565b600e5481565b3390565b6001600160a01b0381166109315760405162461bcd60e51b8152600401808060200182810382526025815260200180610b686025913960400191505060405180910390fd5b806001600160a01b03166109436105e5565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b6001600160a01b0381166109e45760405162461bcd60e51b8152600401808060200182810382526029815260200180610b1c6029913960400191505060405180910390fd5b806001600160a01b03166109f6610505565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a3604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b8152905190819003601201902055565b6001600160a01b038116610a9a5760405162461bcd60e51b8152600401808060200182810382526026815260200180610af66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737350726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6964206164647265737350726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e6450726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373a265627a7a7231582004cb8528662e0245b65da5703c24d2e97add4098b07f49eaded52cb762a90e8764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x135 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xAC210CC7 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xAC210CC7 EQ PUSH2 0x42D JUMPI DUP1 PUSH4 0xCAAEE91C EQ PUSH2 0x442 JUMPI DUP1 PUSH4 0xD784D426 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0xF729A404 EQ PUSH2 0x4F0 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3C4 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x3D9 JUMPI DUP1 PUSH4 0x9A13BA29 EQ PUSH2 0x3EE JUMPI DUP1 PUSH4 0xA1A6690F EQ PUSH2 0x403 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x418 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x29D0FA3E GT PUSH2 0xFD JUMPI DUP1 PUSH4 0x29D0FA3E EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x48CD4CB1 EQ PUSH2 0x2BE JUMPI DUP1 PUSH4 0x5F02C145 EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0x787B4026 EQ PUSH2 0x35D JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x83C6323 EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0x1AED6553 EQ PUSH2 0x24D JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x13F PUSH2 0x505 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB45 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x1A7 JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x530 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x536 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x545 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x5E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x60D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x613 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x619 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x62E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x634 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x660 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x387 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP6 MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x755 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x764 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x788 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x78E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x505 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x794 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x814 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x882 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x891 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C0 PUSH2 0x8E2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x54D PUSH2 0x764 JUMP JUMPDEST PUSH2 0x58D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH2 0x668 PUSH2 0x764 JUMP JUMPDEST PUSH2 0x6A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x711 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP4 POP PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x779 PUSH2 0x8E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x7AB PUSH2 0x5E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x808 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x811 DUP2 PUSH2 0x8EC JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x81C PUSH2 0x5E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x879 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x811 DUP2 PUSH2 0x99F JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x899 PUSH2 0x764 JUMP JUMPDEST PUSH2 0x8D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x811 DUP2 PUSH2 0xA55 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x931 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB68 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x943 PUSH2 0x5E5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB1C PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9F6 PUSH2 0x505 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xA9A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAF6 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737350726F78793A3A736574496D706C656D PUSH6 0x6E746174696F PUSH15 0x3A20696E76616C6964206164647265 PUSH20 0x7350726F78793A3A28293A20696D706C656D656E PUSH21 0x6174696F6E206E6F7420666F756E6450726F78793A GASPRICE PUSH20 0x657450726F78794F776E65723A20696E76616C69 PUSH5 0x2061646472 PUSH6 0x7373A265627A PUSH27 0x7231582004CB8528662E0245B65DA5703C24D2E97ADD4098B07F49 0xEA 0xDE 0xD5 0x2C 0xB7 PUSH3 0xA90E87 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "188:77:34:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3338:22:147;3363:19;:17;:19::i;:::-;3338:44;-1:-1:-1;;;;;;3394:28:147;;3386:76;;;;-1:-1:-1;;;3386:76:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3502:4;3496:11;3536:12;3533:1;3524:7;3511:38;3627:1;3624;3610:12;3601:7;3585:14;3580:3;3567:62;3645:14;3690:4;3687:1;3678:7;3663:32;3707:6;3718:41;;;;3795:4;3786:7;3779:21;3718:41;3748:4;3739:7;3732:21;1802:23:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1802:23:35;;;:::i;:::-;;;;;;;;;;;;;;;;2433:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2433:17:35;;;:::i;:::-;;;;-1:-1:-1;;;;;2433:17:35;;;;;;;;;;;;;;828:113:164;;8:9:-1;5:2;;;30:1;27;20:12;5:2;828:113:164;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;828:113:164;-1:-1:-1;;;;;828:113:164;;:::i;:::-;;2983:134:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2983:134:147;;;:::i;1723:28:35:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1723:28:35;;;:::i;1549:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:35:35;;;:::i;149:38:164:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;149:38:164;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;149:38:164;-1:-1:-1;;;;;149:38:164;;:::i;:::-;;;;;;;;;;;;;;;;;;1641:25:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1641:25:35;;;:::i;2224:67::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2224:67:35;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2224:67:35;;;;;;-1:-1:-1;;;;;2224:67:35;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;599:107:164;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:107:164;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;599:107:164;-1:-1:-1;;;;;599:107:164;;:::i;1940:30:35:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1940:30:35;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1940:30:35;;:::i;:::-;;;;-1:-1:-1;;;;;1940:30:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;851:68:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;1134:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;2373:32:35:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2373:32:35;;;:::i;2140:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2140:35:35;;;:::i;2386:165:147:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2386:165:147;;;:::i;1891:22:35:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1891:22:35;;;:::i;1404:91:148:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:91:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:91:148;-1:-1:-1;;;;;1404:91:148;;:::i;1194:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1194:117:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1194:117:148;-1:-1:-1;;;;;1194:117:148;;:::i;2520:27:35:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2520:27:35;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1351:98:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;2641:41:35:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2641:41:35;;;:::i;2386:165:147:-;1291:31;;;-1:-1:-1;;;1291:31:147;;;;;;;;;;;;2534:10;;2510:38::o;1802:23:35:-;;;;:::o;2433:17::-;;;-1:-1:-1;;;;;2433:17:35;;:::o;828:113:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;886:14:164;;903:5;886:14;;;:6;:14;;;;;;;;;:22;;-1:-1:-1;;886:22:164;;;917:20;;;;;;;;;;;;;;;;;828:113;:::o;2983:134:147:-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o;1723:28:35:-;;;;:::o;1549:35::-;;;;:::o;149:38:164:-;;;;;;;;;;;;;;;:::o;1641:25:35:-;;;;:::o;2224:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;599:107:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;654:14:164;;;;;;671:4;654:14;;;;;;;;;:21;;-1:-1:-1;;654:21:164;;;;;;;684:18;;;;;;;;;;;;;;;;;599:107;:::o;1940:30:35:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1940:30:35;;;-1:-1:-1;;;;1940:30:35;;;;;;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2373:32:35:-;;;;:::o;2140:35::-;;;;:::o;1891:22::-;;;-1:-1:-1;;;;;1891:22:35;;:::o;1404:91:148:-;1801:15:147;:13;:15::i;:::-;-1:-1:-1;;;;;1787:29:147;:10;-1:-1:-1;;;;;1787:29:147;;1779:63;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;;;;1469:22:148;1484:6;1469:14;:22::i;:::-;1404:91;:::o;1194:117::-;1801:15:147;:13;:15::i;:::-;-1:-1:-1;;;;;1787:29:147;:10;-1:-1:-1;;;;;1787:29:147;;1779:63;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;;;;1272:35:148;1291:15;1272:18;:35::i;2520:27:35:-;;;-1:-1:-1;;;;;2520:27:35;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;2641:41:35:-;;;;:::o;780:87:137:-;853:10;780:87;:::o;2644:249:147:-;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2814:6;-1:-1:-1;;;;;2776:45:147;2797:15;:13;:15::i;:::-;-1:-1:-1;;;;;2776:45:147;;;;;;;;;;;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;2867:19;2862:28::o;1971:307::-;-1:-1:-1;;;;;2045:29:147;;2037:83;;;;-1:-1:-1;;;2037:83:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:15;-1:-1:-1;;;;;2129:59:147;2151:19;:17;:19::i;:::-;-1:-1:-1;;;;;2129:59:147;;;;;;;;;;;1291:31;;;-1:-1:-1;;;1291:31:147;;;;;;;;;;;;2243:28;2238:37::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "bonusEndBlock()": "1aed6553",
              "endBlock()": "083c6323",
              "getImplementation()": "aaf10f42",
              "getProxyOwner()": "1ab7710d",
              "isOwner()": "8f32d59b",
              "lockedSOV()": "f2f46b3b",
              "owner()": "8da5cb5b",
              "poolInfoList(uint256)": "787b4026",
              "removeAdmin(address)": "1785f53c",
              "rewardTokensPerBlock()": "29d0fa3e",
              "setImplementation(address)": "d784d426",
              "setProxyOwner(address)": "caaee91c",
              "startBlock()": "48cd4cb1",
              "totalAllocationPoint()": "a1a6690f",
              "totalUsersBalance()": "9a13ba29",
              "transferOwnership(address)": "f2fde38b",
              "unlockedImmediatelyPercent()": "f729a404",
              "userInfoMap(uint256,address)": "5f02c145",
              "wrapper()": "ac210cc7"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "getImplementation()": {
                "notice": "Return address of the implementation."
              },
              "getProxyOwner()": {
                "notice": "Return address of the owner."
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "setImplementation(address)": {
                "notice": "Set address of the implementation."
              },
              "setProxyOwner(address)": {
                "notice": "Set address of the owner."
              }
            }
          }
        }
      },
      "contracts/farm/LiquidityMiningStorage.sol": {
        "LiquidityMiningStorage": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "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"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "bonusEndBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "endBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOV",
              "outputs": [
                {
                  "internalType": "contract ILockedSOV",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolInfoList",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "allocationPoint",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "lastRewardBlock",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "accumulatedRewardPerShare",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rewardTokensPerBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "startBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAllocationPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalUsersBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "unlockedImmediatelyPercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userInfoMap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rewardDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "accumulatedReward",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrapper",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b6106ae806100796000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063787b4026116100a2578063a1a6690f11610071578063a1a6690f146102b5578063ac210cc7146102bd578063f2f46b3b146102c5578063f2fde38b146102cd578063f729a404146102f357610116565b8063787b4026146102435780638da5cb5b1461029d5780638f32d59b146102a55780639a13ba29146102ad57610116565b806329d0fa3e116100e957806329d0fa3e14610189578063429b62e51461019157806348cd4cb1146101cb5780635f02c145146101d3578063704802751461021d57610116565b8063083c63231461011b57806308dcb360146101355780631785f53c146101595780631aed655314610181575b600080fd5b6101236102fb565b60408051918252519081900360200190f35b61013d610301565b604080516001600160a01b039092168252519081900360200190f35b61017f6004803603602081101561016f57600080fd5b50356001600160a01b0316610310565b005b6101236103b0565b6101236103b6565b6101b7600480360360208110156101a757600080fd5b50356001600160a01b03166103bc565b604080519115158252519081900360200190f35b6101236103d1565b6101ff600480360360408110156101e957600080fd5b50803590602001356001600160a01b03166103d7565b60408051938452602084019290925282820152519081900360600190f35b61017f6004803603602081101561023357600080fd5b50356001600160a01b0316610403565b6102606004803603602081101561025957600080fd5b50356104a7565b604080516001600160a01b0390951685526bffffffffffffffffffffffff9093166020850152838301919091526060830152519081900360800190f35b61013d6104f8565b6101b7610507565b61012361052b565b610123610531565b61013d610537565b61013d610546565b61017f600480360360208110156102e357600080fd5b50356001600160a01b0316610555565b6101236105a9565b60055481565b600c546001600160a01b031681565b610318610507565b610358576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b60045481565b60025481565b60016020526000908152604090205460ff1681565b60035481565b600a60209081526000928352604080842090915290825290208054600182015460029092015490919083565b61040b610507565b61044b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b600781815481106104b457fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b0382169350600160a01b9091046bffffffffffffffffffffffff16919084565b6000546001600160a01b031690565b600080546001600160a01b031661051c6105af565b6001600160a01b031614905090565b600b5481565b60095481565b6006546001600160a01b031681565b600d546001600160a01b031681565b61055d610507565b61059d576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6105a6816105b3565b50565b600e5481565b3390565b6001600160a01b0381166105f85760405162461bcd60e51b81526004018080602001828103825260268152602001806106546026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820b31dbdc5d863710899aea15ee23176bb37e9a069acdbd0d5f49cd4a4fdb51c8864736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x6AE DUP1 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x116 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x787B4026 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xA1A6690F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xA1A6690F EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0xAC210CC7 EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0xF729A404 EQ PUSH2 0x2F3 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x787B4026 EQ PUSH2 0x243 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x2A5 JUMPI DUP1 PUSH4 0x9A13BA29 EQ PUSH2 0x2AD JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x29D0FA3E GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x29D0FA3E EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x48CD4CB1 EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x5F02C145 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x21D JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x83C6323 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x1AED6553 EQ PUSH2 0x181 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x301 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x310 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x3B6 JUMP JUMPDEST PUSH2 0x1B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x123 PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x1FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3D7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x403 JUMP JUMPDEST PUSH2 0x260 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP6 MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x507 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x52B JUMP JUMPDEST PUSH2 0x123 PUSH2 0x531 JUMP JUMPDEST PUSH2 0x13D PUSH2 0x537 JUMP JUMPDEST PUSH2 0x13D PUSH2 0x546 JUMP JUMPDEST PUSH2 0x17F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x555 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x5A9 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x318 PUSH2 0x507 JUMP JUMPDEST PUSH2 0x358 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH2 0x40B PUSH2 0x507 JUMP JUMPDEST PUSH2 0x44B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x4B4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP4 POP PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x51C PUSH2 0x5AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x55D PUSH2 0x507 JUMP JUMPDEST PUSH2 0x59D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5A6 DUP2 PUSH2 0x5B3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x654 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820B31DBDC5D86371 ADDMOD SWAP10 0xAE LOG1 0x5E 0xE2 BALANCE PUSH23 0xBB37E9A069ACDBD0D5F49CD4A4FDB51C8864736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "209:2476:35:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;209:2476:35;;780:87:137;853:10;780:87;:::o;209:2476:35:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101165760003560e01c8063787b4026116100a2578063a1a6690f11610071578063a1a6690f146102b5578063ac210cc7146102bd578063f2f46b3b146102c5578063f2fde38b146102cd578063f729a404146102f357610116565b8063787b4026146102435780638da5cb5b1461029d5780638f32d59b146102a55780639a13ba29146102ad57610116565b806329d0fa3e116100e957806329d0fa3e14610189578063429b62e51461019157806348cd4cb1146101cb5780635f02c145146101d3578063704802751461021d57610116565b8063083c63231461011b57806308dcb360146101355780631785f53c146101595780631aed655314610181575b600080fd5b6101236102fb565b60408051918252519081900360200190f35b61013d610301565b604080516001600160a01b039092168252519081900360200190f35b61017f6004803603602081101561016f57600080fd5b50356001600160a01b0316610310565b005b6101236103b0565b6101236103b6565b6101b7600480360360208110156101a757600080fd5b50356001600160a01b03166103bc565b604080519115158252519081900360200190f35b6101236103d1565b6101ff600480360360408110156101e957600080fd5b50803590602001356001600160a01b03166103d7565b60408051938452602084019290925282820152519081900360600190f35b61017f6004803603602081101561023357600080fd5b50356001600160a01b0316610403565b6102606004803603602081101561025957600080fd5b50356104a7565b604080516001600160a01b0390951685526bffffffffffffffffffffffff9093166020850152838301919091526060830152519081900360800190f35b61013d6104f8565b6101b7610507565b61012361052b565b610123610531565b61013d610537565b61013d610546565b61017f600480360360208110156102e357600080fd5b50356001600160a01b0316610555565b6101236105a9565b60055481565b600c546001600160a01b031681565b610318610507565b610358576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b60045481565b60025481565b60016020526000908152604090205460ff1681565b60035481565b600a60209081526000928352604080842090915290825290208054600182015460029092015490919083565b61040b610507565b61044b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b600781815481106104b457fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b0382169350600160a01b9091046bffffffffffffffffffffffff16919084565b6000546001600160a01b031690565b600080546001600160a01b031661051c6105af565b6001600160a01b031614905090565b600b5481565b60095481565b6006546001600160a01b031681565b600d546001600160a01b031681565b61055d610507565b61059d576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6105a6816105b3565b50565b600e5481565b3390565b6001600160a01b0381166105f85760405162461bcd60e51b81526004018080602001828103825260268152602001806106546026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820b31dbdc5d863710899aea15ee23176bb37e9a069acdbd0d5f49cd4a4fdb51c8864736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x116 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x787B4026 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xA1A6690F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xA1A6690F EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0xAC210CC7 EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0xF729A404 EQ PUSH2 0x2F3 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x787B4026 EQ PUSH2 0x243 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x2A5 JUMPI DUP1 PUSH4 0x9A13BA29 EQ PUSH2 0x2AD JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x29D0FA3E GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x29D0FA3E EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x48CD4CB1 EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x5F02C145 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x21D JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x83C6323 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x1AED6553 EQ PUSH2 0x181 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x301 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x310 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x3B6 JUMP JUMPDEST PUSH2 0x1B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x123 PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x1FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3D7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x403 JUMP JUMPDEST PUSH2 0x260 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP6 MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x507 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x52B JUMP JUMPDEST PUSH2 0x123 PUSH2 0x531 JUMP JUMPDEST PUSH2 0x13D PUSH2 0x537 JUMP JUMPDEST PUSH2 0x13D PUSH2 0x546 JUMP JUMPDEST PUSH2 0x17F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x555 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x5A9 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x318 PUSH2 0x507 JUMP JUMPDEST PUSH2 0x358 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH2 0x40B PUSH2 0x507 JUMP JUMPDEST PUSH2 0x44B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x4B4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP4 POP PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x51C PUSH2 0x5AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x55D PUSH2 0x507 JUMP JUMPDEST PUSH2 0x59D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5A6 DUP2 PUSH2 0x5B3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x654 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820B31DBDC5D86371 ADDMOD SWAP10 0xAE LOG1 0x5E 0xE2 BALANCE PUSH23 0xBB37E9A069ACDBD0D5F49CD4A4FDB51C8864736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "209:2476:35:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;209:2476:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:23;;;:::i;:::-;;;;;;;;;;;;;;;;2433:17;;;:::i;:::-;;;;-1:-1:-1;;;;;2433:17:35;;;;;;;;;;;;;;828:113:164;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;828:113:164;-1:-1:-1;;;;;828:113:164;;:::i;:::-;;1723:28:35;;;:::i;1549:35::-;;;:::i;149:38:164:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;149:38:164;-1:-1:-1;;;;;149:38:164;;:::i;:::-;;;;;;;;;;;;;;;;;;1641:25:35;;;:::i;2224:67::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2224:67:35;;;;;;-1:-1:-1;;;;;2224:67:35;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;599:107:164;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;599:107:164;-1:-1:-1;;;;;599:107:164;;:::i;1940:30:35:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1940:30:35;;:::i;:::-;;;;-1:-1:-1;;;;;1940:30:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;851:68:142;;;:::i;1134:83::-;;;:::i;2373:32:35:-;;;:::i;2140:35::-;;;:::i;1891:22::-;;;:::i;2520:27::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;2641:41:35:-;;;:::i;1802:23::-;;;;:::o;2433:17::-;;;-1:-1:-1;;;;;2433:17:35;;:::o;828:113:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;886:14:164;;903:5;886:14;;;:6;:14;;;;;;;;;:22;;-1:-1:-1;;886:22:164;;;917:20;;;;;;;;;;;;;;;;;828:113;:::o;1723:28:35:-;;;;:::o;1549:35::-;;;;:::o;149:38:164:-;;;;;;;;;;;;;;;:::o;1641:25:35:-;;;;:::o;2224:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;599:107:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;654:14:164;;;;;;671:4;654:14;;;;;;;;;:21;;-1:-1:-1;;654:21:164;;;;;;;684:18;;;;;;;;;;;;;;;;;599:107;:::o;1940:30:35:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1940:30:35;;;-1:-1:-1;;;;1940:30:35;;;;;;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2373:32:35:-;;;;:::o;2140:35::-;;;;:::o;1891:22::-;;;-1:-1:-1;;;;;1891:22:35;;:::o;2520:27::-;;;-1:-1:-1;;;;;2520:27:35;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;2641:41:35:-;;;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "bonusEndBlock()": "1aed6553",
              "endBlock()": "083c6323",
              "isOwner()": "8f32d59b",
              "lockedSOV()": "f2f46b3b",
              "owner()": "8da5cb5b",
              "poolInfoList(uint256)": "787b4026",
              "removeAdmin(address)": "1785f53c",
              "rewardTokensPerBlock()": "29d0fa3e",
              "startBlock()": "48cd4cb1",
              "totalAllocationPoint()": "a1a6690f",
              "totalUsersBalance()": "9a13ba29",
              "transferOwnership(address)": "f2fde38b",
              "unlockedImmediatelyPercent()": "f729a404",
              "userInfoMap(uint256,address)": "5f02c145",
              "wrapper()": "ac210cc7"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              }
            }
          }
        }
      },
      "contracts/feeds/BProPriceFeed.sol": {
        "BProPriceFeed": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_mocStateAddress",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": "mocStateAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "changerAddress",
                  "type": "address"
                }
              ],
              "name": "SetMoCStateAddress",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "latestAnswer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "latestTimestamp",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "mocStateAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_mocStateAddress",
                  "type": "address"
                }
              ],
              "name": "setMoCStateAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "constructor": {
                "params": {
                  "_mocStateAddress": "MoC state address"
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "latestAnswer()": {
                "return": "the BPro USD Price [using mocPrecision]"
              },
              "latestTimestamp()": {
                "return": "Always returns current block's timestamp."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setMoCStateAddress(address)": {
                "params": {
                  "_mocStateAddress": "The MoC state address."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "The BPro Price Feed contract. * This contract gets/sets the MoC (Money on Chain) address of its state contract and queries its method bproUsdPrice to get bPro/USD valuation."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516106c03803806106c08339818101604052602081101561003357600080fd5b505160006100486001600160e01b036100aa16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100a4816001600160e01b036100ae16565b50610229565b3390565b6100bf6001600160e01b036101c016565b6100ff576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610112816101ed60201b61034d1760201c565b610163576040805162461bcd60e51b815260206004820152601f60248201527f5f6d6f63537461746541646472657373206e6f74206120636f6e747261637400604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917faabf985d3e03e92a41537d04d0e369c7afc56183856290aa2c1a230768842ef4916020908290030190a250565b600080546001600160a01b03166101de6001600160e01b036100aa16565b6001600160a01b031614905090565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061022157508115155b949350505050565b610488806102386000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100cc5780638f32d59b146100f0578063ab5e3e5b1461010c578063f2fde38b146101145761007d565b806327bcc6841461008257806350d25bcd146100aa5780638205bf6a146100c4575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b031661013a565b005b6100b2610239565b60408051918252519081900360200190f35b6100b26102b3565b6100d46102b7565b604080516001600160a01b039092168252519081900360200190f35b6100f86102c6565b604080519115158252519081900360200190f35b6100d46102ea565b6100a86004803603602081101561012a57600080fd5b50356001600160a01b03166102f9565b6101426102c6565b610182576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61018b8161034d565b6101dc576040805162461bcd60e51b815260206004820152601f60248201527f5f6d6f63537461746541646472657373206e6f74206120636f6e747261637400604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917faabf985d3e03e92a41537d04d0e369c7afc56183856290aa2c1a230768842ef4916020908290030190a250565b6001546040805163747a566360e01b815290516000926001600160a01b031691829163747a566391600480820192602092909190829003018186803b15801561028157600080fd5b505afa158015610295573d6000803e3d6000fd5b505050506040513d60208110156102ab57600080fd5b505191505090565b4290565b6000546001600160a01b031690565b600080546001600160a01b03166102db610389565b6001600160a01b031614905090565b6001546001600160a01b031681565b6103016102c6565b610341576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61034a8161038d565b50565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061038157508115155b949350505050565b3390565b6001600160a01b0381166103d25760405162461bcd60e51b815260040180806020018281038252602681526020018061042e6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158209531f02955934b5acad8fbfd720a62f283ccb80874b021e6802c2e87584e1a1f64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6C0 CODESIZE SUB DUP1 PUSH2 0x6C0 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 PUSH2 0x48 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0xAA AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0xA4 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0xAE AND JUMP JUMPDEST POP PUSH2 0x229 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xBF PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x1C0 AND JUMP JUMPDEST PUSH2 0xFF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x112 DUP2 PUSH2 0x1ED PUSH1 0x20 SHL PUSH2 0x34D OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x163 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F6D6F63537461746541646472657373206E6F74206120636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0xAABF985D3E03E92A41537D04D0E369C7AFC56183856290AA2C1A230768842EF4 SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0xAA AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x221 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x488 DUP1 PUSH2 0x238 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xF0 JUMPI DUP1 PUSH4 0xAB5E3E5B EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x114 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x27BCC684 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x50D25BCD EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x8205BF6A EQ PUSH2 0xC4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13A JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB2 PUSH2 0x239 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x2B3 JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF8 PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD4 PUSH2 0x2EA JUMP JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2F9 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x2C6 JUMP JUMPDEST PUSH2 0x182 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x18B DUP2 PUSH2 0x34D JUMP JUMPDEST PUSH2 0x1DC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F6D6F63537461746541646472657373206E6F74206120636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0xAABF985D3E03E92A41537D04D0E369C7AFC56183856290AA2C1A230768842EF4 SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x747A5663 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0x747A5663 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x295 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2DB PUSH2 0x389 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x301 PUSH2 0x2C6 JUMP JUMPDEST PUSH2 0x341 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x34A DUP2 PUSH2 0x38D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x381 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x42E PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158209531F02955934B GAS 0xCA 0xD8 0xFB REVERT PUSH19 0xA62F283CCB80874B021E6802C2E87584E1A1F PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "364:1261:36:-;;;639:89;8:9:-1;5:2;;;30:1;27;20:12;5:2;639:89:36;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;639:89:36;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;-1:-1:-1;688:36:36;707:16;-1:-1:-1;;;;;688:18:36;:36;:::i;:::-;639:89;364:1261;;780:87:137;853:10;780:87;:::o;1370:253:36:-;1028:9:142;-1:-1:-1;;;;;1028:7:142;:9;:::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1453:36:36;1472:16;1453:18;;;;;:36;;:::i;:::-;1445:80;;;;;-1:-1:-1;;;1445:80:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;1529:15;:34;;-1:-1:-1;;;;;;1529:34:36;-1:-1:-1;;;;;1529:34:36;;;;;;;;;;;1572:47;;;1608:10;1572:47;;;;1591:15;;;;;1572:47;;;;;;;;;;1370:253;:::o;1134:83:142:-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;-1:-1:-1;;;;;1191:10:142;:12;:::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;364:1261:36:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100cc5780638f32d59b146100f0578063ab5e3e5b1461010c578063f2fde38b146101145761007d565b806327bcc6841461008257806350d25bcd146100aa5780638205bf6a146100c4575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b031661013a565b005b6100b2610239565b60408051918252519081900360200190f35b6100b26102b3565b6100d46102b7565b604080516001600160a01b039092168252519081900360200190f35b6100f86102c6565b604080519115158252519081900360200190f35b6100d46102ea565b6100a86004803603602081101561012a57600080fd5b50356001600160a01b03166102f9565b6101426102c6565b610182576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61018b8161034d565b6101dc576040805162461bcd60e51b815260206004820152601f60248201527f5f6d6f63537461746541646472657373206e6f74206120636f6e747261637400604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917faabf985d3e03e92a41537d04d0e369c7afc56183856290aa2c1a230768842ef4916020908290030190a250565b6001546040805163747a566360e01b815290516000926001600160a01b031691829163747a566391600480820192602092909190829003018186803b15801561028157600080fd5b505afa158015610295573d6000803e3d6000fd5b505050506040513d60208110156102ab57600080fd5b505191505090565b4290565b6000546001600160a01b031690565b600080546001600160a01b03166102db610389565b6001600160a01b031614905090565b6001546001600160a01b031681565b6103016102c6565b610341576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61034a8161038d565b50565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061038157508115155b949350505050565b3390565b6001600160a01b0381166103d25760405162461bcd60e51b815260040180806020018281038252602681526020018061042e6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158209531f02955934b5acad8fbfd720a62f283ccb80874b021e6802c2e87584e1a1f64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xF0 JUMPI DUP1 PUSH4 0xAB5E3E5B EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x114 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x27BCC684 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x50D25BCD EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x8205BF6A EQ PUSH2 0xC4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13A JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB2 PUSH2 0x239 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x2B3 JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF8 PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD4 PUSH2 0x2EA JUMP JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2F9 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x2C6 JUMP JUMPDEST PUSH2 0x182 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x18B DUP2 PUSH2 0x34D JUMP JUMPDEST PUSH2 0x1DC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F6D6F63537461746541646472657373206E6F74206120636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0xAABF985D3E03E92A41537D04D0E369C7AFC56183856290AA2C1A230768842EF4 SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x747A5663 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 SWAP2 PUSH4 0x747A5663 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x295 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2DB PUSH2 0x389 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x301 PUSH2 0x2C6 JUMP JUMPDEST PUSH2 0x341 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x34A DUP2 PUSH2 0x38D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x381 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x42E PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158209531F02955934B GAS 0xCA 0xD8 0xFB REVERT PUSH19 0xA62F283CCB80874B021E6802C2E87584E1A1F PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "364:1261:36:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;364:1261:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1370:253;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1370:253:36;-1:-1:-1;;;;;1370:253:36;;:::i;:::-;;829:147;;;:::i;:::-;;;;;;;;;;;;;;;;1141:124;;;:::i;851:68:142:-;;;:::i;:::-;;;;-1:-1:-1;;;;;851:68:142;;;;;;;;;;;;;;1134:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;417:30:36;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;1370:253:36:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1453:36:36;1472:16;1453:18;:36::i;:::-;1445:80;;;;;-1:-1:-1;;;1445:80:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;1529:15;:34;;-1:-1:-1;;;;;;1529:34:36;-1:-1:-1;;;;;1529:34:36;;;;;;;;;;;1572:47;;;1608:10;1572:47;;;;1591:15;;;;;1572:47;;;;;;;;;;1370:253;:::o;829:147::-;921:15;;948:24;;;-1:-1:-1;;;948:24:36;;;;876:7;;-1:-1:-1;;;;;921:15:36;;;;948:22;;:24;;;;;;;;;;;;;;;921:15;948:24;;;5:2:-1;;;;30:1;27;20:12;5:2;948:24:36;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;948:24:36;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;948:24:36;;-1:-1:-1;;829:147:36;:::o;1141:124::-;1211:3;1141:124;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;417:30:36:-;;;-1:-1:-1;;;;;417:30:36;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "isOwner()": "8f32d59b",
              "latestAnswer()": "50d25bcd",
              "latestTimestamp()": "8205bf6a",
              "mocStateAddress()": "ab5e3e5b",
              "owner()": "8da5cb5b",
              "setMoCStateAddress(address)": "27bcc684",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {
              "constructor": "Initializes a new MoC state.",
              "latestAnswer()": {
                "notice": "Get BPro USD price."
              },
              "latestTimestamp()": {
                "notice": "Supposed to get the MoC update time, but instead get the current timestamp."
              },
              "setMoCStateAddress(address)": {
                "notice": "Set MoC state address."
              }
            }
          }
        }
      },
      "contracts/feeds/IMoCState.sol": {
        "IMoCState": {
          "abi": [
            {
              "constant": true,
              "inputs": [],
              "name": "absoluteMaxBPro",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "bproDiscountPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "bproSpotDiscountRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "bproTecPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "bproUsdPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "bucket",
                  "type": "bytes32"
                }
              ],
              "name": "bucketBProTecPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "bucket",
                  "type": "bytes32"
                }
              ],
              "name": "getBucketNBPro",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "bucket",
                  "type": "bytes32"
                }
              ],
              "name": "getRbtcInBitPro",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "globalMaxBPro",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "bucket",
                  "type": "bytes32"
                }
              ],
              "name": "maxBPro",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxBProWithDiscount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "absoluteMaxBPro()": "fa8ba490",
              "bproDiscountPrice()": "e2ea7e7f",
              "bproSpotDiscountRate()": "640f0fea",
              "bproTecPrice()": "08c36d9e",
              "bproUsdPrice()": "747a5663",
              "bucketBProTecPrice(bytes32)": "d81bc97c",
              "getBucketNBPro(bytes32)": "04bda17f",
              "getRbtcInBitPro(bytes32)": "8781f68b",
              "globalMaxBPro()": "52bfb631",
              "maxBPro(bytes32)": "c4a7c94b",
              "maxBProWithDiscount()": "3a8115a6"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/feeds/IPriceFeeds.sol": {
        "IPriceFeeds": {
          "abi": [
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "Token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "amountInEth",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "ethAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxSlippage",
                  "type": "uint256"
                }
              ],
              "name": "checkPriceDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "sourceToDestSwapRate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                }
              ],
              "name": "getCurrentMargin",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                }
              ],
              "name": "getCurrentMarginAndCollateralSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralInEthAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "payToken",
                  "type": "address"
                }
              ],
              "name": "getFastGasPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                }
              ],
              "name": "getMaxDrawdown",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                }
              ],
              "name": "queryPrecision",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "precision",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                }
              ],
              "name": "queryRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "rate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "precision",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                }
              ],
              "name": "queryReturn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                }
              ],
              "name": "shouldLiquidate",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "amountInEth(address,uint256)": "b2cf54ea",
              "checkPriceDisagreement(address,address,uint256,uint256,uint256)": "1e2c62d3",
              "getCurrentMargin(address,address,uint256,uint256)": "2ff0d012",
              "getCurrentMarginAndCollateralSize(address,address,uint256,uint256)": "ecc5382d",
              "getFastGasPrice(address)": "90d1f66f",
              "getMaxDrawdown(address,address,uint256,uint256,uint256)": "f80b25fb",
              "queryPrecision(address,address)": "524efd4b",
              "queryRate(address,address)": "29d5277c",
              "queryReturn(address,address,uint256)": "d138f9a1",
              "shouldLiquidate(address,address,uint256,uint256,uint256)": "2a887702"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/feeds/IRSKOracle.sol": {
        "IRSKOracle": {
          "abi": [
            {
              "constant": false,
              "inputs": [],
              "name": "clearOracleAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getPricing",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "setOracleAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                }
              ],
              "name": "updatePrice",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "clearOracleAddress()": "760d1e05",
              "getPricing()": "38b4e338",
              "setOracleAddress(address)": "4c69c00f",
              "updatePrice(uint256,uint256)": "82367b2d"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/feeds/IV1PoolOracle.sol": {
        "ILiquidityPoolV1Converter": {
          "abi": [
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "reserveTokens",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "reserveTokens(uint256)": "d031370b"
            }
          },
          "userdoc": {
            "methods": {}
          }
        },
        "IV1PoolOracle": {
          "abi": [
            {
              "constant": true,
              "inputs": [],
              "name": "latestAnswer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_baseToken",
                  "type": "address"
                }
              ],
              "name": "latestPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "answer",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidityPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                }
              ],
              "name": "read",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "latestAnswer()": "50d25bcd",
              "latestPrice(address)": "53084eff",
              "liquidityPool()": "665a11ca",
              "read(uint256,uint256)": "75080997"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/feeds/PriceFeedRSKOracle.sol": {
        "PriceFeedRSKOracle": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_rskOracleAddress",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": "rskOracleAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "changerAddress",
                  "type": "address"
                }
              ],
              "name": "SetRSKOracleAddress",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "latestAnswer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_price",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "latestTimestamp",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_timestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rskOracleAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_rskOracleAddress",
                  "type": "address"
                }
              ],
              "name": "setRSKOracleAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "constructor": {
                "params": {
                  "_rskOracleAddress": "The RSK Oracle address."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "latestAnswer()": {
                "return": "The price from Oracle."
              },
              "latestTimestamp()": {
                "return": "The latest time."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setRSKOracleAddress(address)": {
                "params": {
                  "_rskOracleAddress": "The RSK Oracle address."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060405161072f38038061072f8339818101604052602081101561003357600080fd5b505160006100486001600160e01b036100aa16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100a4816001600160e01b036100ae16565b50610229565b3390565b6100bf6001600160e01b036101c016565b6100ff576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610112816101ed60201b6103c01760201c565b610163576040805162461bcd60e51b815260206004820181905260248201527f5f72736b4f7261636c6541646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917f94305f79fd34fa915e2815446cd306362132a59408d9f79f071eca99bde86dff916020908290030190a250565b600080546001600160a01b03166101de6001600160e01b036100aa16565b6001600160a01b031614905090565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061022157508115155b949350505050565b6104f7806102386000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638f32d59b1161005b5780638f32d59b146100c8578063a1e60109146100e4578063b4c1e8481461010c578063f2fde38b146101145761007d565b806350d25bcd146100825780638205bf6a1461009c5780638da5cb5b146100a4575b600080fd5b61008a61013a565b60408051918252519081900360200190f35b61008a6101af565b6100ac610227565b604080516001600160a01b039092168252519081900360200190f35b6100d0610236565b604080519115158252519081900360200190f35b61010a600480360360208110156100fa57600080fd5b50356001600160a01b031661025a565b005b6100ac610359565b61010a6004803603602081101561012a57600080fd5b50356001600160a01b0316610368565b600154604080516307169c6760e31b815281516000936001600160a01b03169283926338b4e3389260048083019392829003018186803b15801561017d57600080fd5b505afa158015610191573d6000803e3d6000fd5b505050506040513d60408110156101a757600080fd5b505192915050565b600154604080516307169c6760e31b815281516000936001600160a01b03169283926338b4e3389260048083019392829003018186803b1580156101f257600080fd5b505afa158015610206573d6000803e3d6000fd5b505050506040513d604081101561021c57600080fd5b506020015192915050565b6000546001600160a01b031690565b600080546001600160a01b031661024b6103bc565b6001600160a01b031614905090565b610262610236565b6102a2576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6102ab816103c0565b6102fc576040805162461bcd60e51b815260206004820181905260248201527f5f72736b4f7261636c6541646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917f94305f79fd34fa915e2815446cd306362132a59408d9f79f071eca99bde86dff916020908290030190a250565b6001546001600160a01b031681565b610370610236565b6103b0576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6103b9816103fc565b50565b3390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906103f457508115155b949350505050565b6001600160a01b0381166104415760405162461bcd60e51b815260040180806020018281038252602681526020018061049d6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820ff3d90357aa0afa808385133f50e95b05f3080fbfdd4fc9832c6511c5b27a1d764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x72F CODESIZE SUB DUP1 PUSH2 0x72F DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 PUSH2 0x48 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0xAA AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0xA4 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0xAE AND JUMP JUMPDEST POP PUSH2 0x229 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xBF PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x1C0 AND JUMP JUMPDEST PUSH2 0xFF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x112 DUP2 PUSH2 0x1ED PUSH1 0x20 SHL PUSH2 0x3C0 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x163 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F72736B4F7261636C6541646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x94305F79FD34FA915E2815446CD306362132A59408D9F79F071ECA99BDE86DFF SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0xAA AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x221 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4F7 DUP1 PUSH2 0x238 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xA1E60109 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0xB4C1E848 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x114 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x50D25BCD EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x8205BF6A EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x13A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x1AF JUMP JUMPDEST PUSH2 0xAC PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH2 0x236 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25A JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAC PUSH2 0x359 JUMP JUMPDEST PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x368 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7169C67 PUSH1 0xE3 SHL DUP2 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP4 SWAP3 PUSH4 0x38B4E338 SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x191 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7169C67 PUSH1 0xE3 SHL DUP2 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP4 SWAP3 PUSH4 0x38B4E338 SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x206 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 ADD MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x24B PUSH2 0x3BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x262 PUSH2 0x236 JUMP JUMPDEST PUSH2 0x2A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2AB DUP2 PUSH2 0x3C0 JUMP JUMPDEST PUSH2 0x2FC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F72736B4F7261636C6541646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x94305F79FD34FA915E2815446CD306362132A59408D9F79F071ECA99BDE86DFF SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x370 PUSH2 0x236 JUMP JUMPDEST PUSH2 0x3B0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3B9 DUP2 PUSH2 0x3FC JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x3F4 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x441 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x49D PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820FF3D90357AA0AF 0xA8 ADDMOD CODESIZE MLOAD CALLER CREATE2 0xE SWAP6 0xB0 0x5F ADDRESS DUP1 0xFB REVERT 0xD4 0xFC SWAP9 ORIGIN 0xC6 MLOAD SHR JUMPDEST 0x27 LOG1 0xD7 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "362:1322:41:-;;;701:92;8:9:-1;5:2;;;30:1;27;20:12;5:2;701:92:41;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;701:92:41;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;-1:-1:-1;751:38:41;771:17;-1:-1:-1;;;;;751:19:41;:38;:::i;:::-;701:92;362:1322;;780:87:137;853:10;780:87;:::o;1421:261:41:-;1028:9:142;-1:-1:-1;;;;;1028:7:142;:9;:::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1506:37:41;1525:17;1506:18;;;;;:37;;:::i;:::-;1498:82;;;;;-1:-1:-1;;;1498:82:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1584:16;:36;;-1:-1:-1;;;;;;1584:36:41;-1:-1:-1;;;;;1584:36:41;;;;;;;;;;;1629:49;;;1667:10;1629:49;;;;1649:16;;;;;1629:49;;;;;;;;;;1421:261;:::o;1134:83:142:-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;-1:-1:-1;;;;;1191:10:142;:12;:::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;362:1322:41:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c80638f32d59b1161005b5780638f32d59b146100c8578063a1e60109146100e4578063b4c1e8481461010c578063f2fde38b146101145761007d565b806350d25bcd146100825780638205bf6a1461009c5780638da5cb5b146100a4575b600080fd5b61008a61013a565b60408051918252519081900360200190f35b61008a6101af565b6100ac610227565b604080516001600160a01b039092168252519081900360200190f35b6100d0610236565b604080519115158252519081900360200190f35b61010a600480360360208110156100fa57600080fd5b50356001600160a01b031661025a565b005b6100ac610359565b61010a6004803603602081101561012a57600080fd5b50356001600160a01b0316610368565b600154604080516307169c6760e31b815281516000936001600160a01b03169283926338b4e3389260048083019392829003018186803b15801561017d57600080fd5b505afa158015610191573d6000803e3d6000fd5b505050506040513d60408110156101a757600080fd5b505192915050565b600154604080516307169c6760e31b815281516000936001600160a01b03169283926338b4e3389260048083019392829003018186803b1580156101f257600080fd5b505afa158015610206573d6000803e3d6000fd5b505050506040513d604081101561021c57600080fd5b506020015192915050565b6000546001600160a01b031690565b600080546001600160a01b031661024b6103bc565b6001600160a01b031614905090565b610262610236565b6102a2576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6102ab816103c0565b6102fc576040805162461bcd60e51b815260206004820181905260248201527f5f72736b4f7261636c6541646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917f94305f79fd34fa915e2815446cd306362132a59408d9f79f071eca99bde86dff916020908290030190a250565b6001546001600160a01b031681565b610370610236565b6103b0576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6103b9816103fc565b50565b3390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906103f457508115155b949350505050565b6001600160a01b0381166104415760405162461bcd60e51b815260040180806020018281038252602681526020018061049d6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820ff3d90357aa0afa808385133f50e95b05f3080fbfdd4fc9832c6511c5b27a1d764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xA1E60109 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0xB4C1E848 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x114 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x50D25BCD EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x8205BF6A EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x13A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x1AF JUMP JUMPDEST PUSH2 0xAC PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH2 0x236 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x25A JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAC PUSH2 0x359 JUMP JUMPDEST PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x368 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7169C67 PUSH1 0xE3 SHL DUP2 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP4 SWAP3 PUSH4 0x38B4E338 SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x191 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7169C67 PUSH1 0xE3 SHL DUP2 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP4 SWAP3 PUSH4 0x38B4E338 SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x206 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 ADD MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x24B PUSH2 0x3BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x262 PUSH2 0x236 JUMP JUMPDEST PUSH2 0x2A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2AB DUP2 PUSH2 0x3C0 JUMP JUMPDEST PUSH2 0x2FC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F72736B4F7261636C6541646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x94305F79FD34FA915E2815446CD306362132A59408D9F79F071ECA99BDE86DFF SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x370 PUSH2 0x236 JUMP JUMPDEST PUSH2 0x3B0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3B9 DUP2 PUSH2 0x3FC JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x3F4 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x441 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x49D PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820FF3D90357AA0AF 0xA8 ADDMOD CODESIZE MLOAD CALLER CREATE2 0xE SWAP6 0xB0 0x5F ADDRESS DUP1 0xFB REVERT 0xD4 0xFC SWAP9 ORIGIN 0xC6 MLOAD SHR JUMPDEST 0x27 LOG1 0xD7 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "362:1322:41:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;362:1322:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:163;;;:::i;:::-;;;;;;;;;;;;;;;;1137:174;;;:::i;851:68:142:-;;;:::i;:::-;;;;-1:-1:-1;;;;;851:68:142;;;;;;;;;;;;;;1134:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;1421:261:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1421:261:41;-1:-1:-1;;;;;1421:261:41;;:::i;:::-;;436:31;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;877:163:41:-;979:16;;1013:23;;;-1:-1:-1;;;1013:23:41;;;;924:14;;-1:-1:-1;;;;;979:16:41;;;;1013:21;;:23;;;;;;;;;;;979:16;1013:23;;;5:2:-1;;;;30:1;27;20:12;5:2;1013:23:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1013:23:41;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1013:23:41;;877:163;-1:-1:-1;;877:163:41:o;1137:174::-;1246:16;;1284:23;;;-1:-1:-1;;;1284:23:41;;;;1187:18;;-1:-1:-1;;;;;1246:16:41;;;;1284:21;;:23;;;;;;;;;;;1246:16;1284:23;;;5:2:-1;;;;30:1;27;20:12;5:2;1284:23:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1284:23:41;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1284:23:41;;;;1137:174;-1:-1:-1;;1137:174:41:o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1421:261:41:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1506:37:41;1525:17;1506:18;:37::i;:::-;1498:82;;;;;-1:-1:-1;;;1498:82:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1584:16;:36;;-1:-1:-1;;;;;;1584:36:41;-1:-1:-1;;;;;1584:36:41;;;;;;;;;;;1629:49;;;1667:10;1629:49;;;;1649:16;;;;;1629:49;;;;;;;;;;1421:261;:::o;436:31::-;;;-1:-1:-1;;;;;436:31:41;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "isOwner()": "8f32d59b",
              "latestAnswer()": "50d25bcd",
              "latestTimestamp()": "8205bf6a",
              "owner()": "8da5cb5b",
              "rskOracleAddress()": "b4c1e848",
              "setRSKOracleAddress(address)": "a1e60109",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {
              "constructor": "Initialize a new RSK Oracle.",
              "latestAnswer()": {
                "notice": "Get the oracle price."
              },
              "latestTimestamp()": {
                "notice": "Get the las time oracle updated the price."
              },
              "setRSKOracleAddress(address)": {
                "notice": "Set the RSK Oracle address."
              }
            },
            "notice": "The Price Feed RSK Oracle contract. * This contract implements RSK Oracle query functionality, getting the price and the last timestamp from an external oracle contract."
          }
        }
      },
      "contracts/feeds/PriceFeedV1PoolOracle.sol": {
        "PriceFeedV1PoolOracle": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_v1PoolOracleAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_wRBTCAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_docAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_baseCurrency",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": "baseCurrency",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "changerAddress",
                  "type": "address"
                }
              ],
              "name": "SetBaseCurrency",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "docAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "changerAddress",
                  "type": "address"
                }
              ],
              "name": "SetDOCAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "v1PoolOracleAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "changerAddress",
                  "type": "address"
                }
              ],
              "name": "SetV1PoolOracleAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "wRBTCAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "changerAddress",
                  "type": "address"
                }
              ],
              "name": "SetWRBTCAddress",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseCurrency",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "docAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "latestAnswer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_baseCurrency",
                  "type": "address"
                }
              ],
              "name": "setBaseCurrency",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_docAddress",
                  "type": "address"
                }
              ],
              "name": "setDOCAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_wRBTCAddress",
                  "type": "address"
                }
              ],
              "name": "setRBTCAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_v1PoolOracleAddress",
                  "type": "address"
                }
              ],
              "name": "setV1PoolOracleAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "v1PoolOracleAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wRBTCAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "constructor": {
                "params": {
                  "_docAddress": "The doc token address.",
                  "_v1PoolOracleAddress": "The V1 Pool Oracle address.",
                  "_wRBTCAddress": "The wrbtc token address."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "latestAnswer()": {
                "return": "The price from Oracle."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setBaseCurrency(address)": {
                "params": {
                  "_baseCurrency": "The base currency address"
                }
              },
              "setDOCAddress(address)": {
                "params": {
                  "_docAddress": "The DoC address"
                }
              },
              "setRBTCAddress(address)": {
                "params": {
                  "_wRBTCAddress": "The rBTC address"
                }
              },
              "setV1PoolOracleAddress(address)": {
                "params": {
                  "_v1PoolOracleAddress": "The V1 Pool Oracle address."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b506040516200157638038062001576833981810160405260808110156200003757600080fd5b50805160208201516040830151606090930151919290916000620000636001600160e01b036200010716565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000c1836001600160e01b036200010b16565b620000d5826001600160e01b036200020316565b620000e9846001600160e01b03620002f316565b620000fd816001600160e01b03620005c016565b505050506200071c565b3390565b6200011e6001600160e01b03620006b016565b6200015f576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116620001a65760405162461bcd60e51b8152600401808060200182810382526024815260200180620015306024913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917f2f21604f728cee3b038451139b7962e5720960fe821c609ca83e38be2cd0f6be916020908290030190a250565b620002166001600160e01b03620006b016565b62000257576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166200029e5760405162461bcd60e51b8152600401808060200182810382526022815260200180620015546022913960400191505060405180910390fd5b600380546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fa5fa52ac5539bdf7f8bd9d02d0e2d4d7840c7dc0ff1fa8d9bcab2ffb765f37139181900360200190a250565b620003066001600160e01b03620006b016565b62000347576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6200035d81620006df60201b62000a351760201c565b6200039a5760405162461bcd60e51b8152600401808060200182810382526023815260200180620014e16023913960400191505060405180910390fd5b60008190506000816001600160a01b031663665a11ca6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003db57600080fd5b505afa158015620003f0573d6000803e3d6000fd5b505050506040513d60208110156200040757600080fd5b50516002546040805163d031370b60e01b81526000600482015290519293506001600160a01b03918216929184169163d031370b91602480820192602092909190829003018186803b1580156200045d57600080fd5b505afa15801562000472573d6000803e3d6000fd5b505050506040513d60208110156200048957600080fd5b50516001600160a01b031614806200052457506002546040805163d031370b60e01b81526001600482015290516001600160a01b039283169284169163d031370b916024808301926020929190829003018186803b158015620004eb57600080fd5b505afa15801562000500573d6000803e3d6000fd5b505050506040513d60208110156200051757600080fd5b50516001600160a01b0316145b620005615760405162461bcd60e51b8152600401808060200182810382526029815260200180620014b86029913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b03858116919091179182905560408051338152905192909116917f1cece9fe0966bcae1bc320922e8e73fe56effacab5cc158e7d97cd77cea66e86916020908290030190a2505050565b620005d36001600160e01b03620006b016565b62000614576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166200065b5760405162461bcd60e51b815260040180806020018281038252602c81526020018062001504602c913960400191505060405180910390fd5b600480546001600160a01b0383166001600160a01b031990911681179091556040805133815290517f6dde2141be69fabcd84e3864d206ba0f3f2d507125fb2703899c87de4c585d5f9181900360200190a250565b600080546001600160a01b0316620006d06001600160e01b036200010716565b6001600160a01b031614905090565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906200071457508115155b949350505050565b610d8c806200072c6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80639f63140b116100715780639f63140b1461014b578063b15403da14610171578063b478f41614610179578063c083be5f1461019f578063c63ec525146101a7578063f2fde38b146101cd576100b4565b806350d25bcd146100b95780638a47b34a146100d35780638c0d8c23146100fb5780638da5cb5b1461011f5780638f32d59b1461012757806392a85fde14610143575b600080fd5b6100c16101f3565b60408051918252519081900360200190f35b6100f9600480360360208110156100e957600080fd5b50356001600160a01b03166102ce565b005b6101036103b8565b604080516001600160a01b039092168252519081900360200190f35b6101036103c7565b61012f6103d6565b604080519115158252519081900360200190f35b6101036103fa565b6100f96004803603602081101561016157600080fd5b50356001600160a01b0316610409565b6101036106af565b6100f96004803603602081101561018f57600080fd5b50356001600160a01b03166106be565b6101036107a0565b6100f9600480360360208110156101bd57600080fd5b50356001600160a01b03166107af565b6100f9600480360360208110156101e357600080fd5b50356001600160a01b0316610891565b60015460048054604080516353084eff60e01b81526001600160a01b0392831693810193909352516000939190911691839183916353084eff916024808301926020929190829003018186803b15801561024c57600080fd5b505afa158015610260573d6000803e3d6000fd5b505050506040513d602081101561027657600080fd5b505190506000610285826108e5565b9050806102c7576040805162461bcd60e51b815260206004820152600b60248201526a383934b1b29032b93937b960a91b604482015290519081900360640190fd5b9250505090565b6102d66103d6565b610316576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b03811661035b5760405162461bcd60e51b8152600401808060200182810382526024815260200180610d126024913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917f2f21604f728cee3b038451139b7962e5720960fe821c609ca83e38be2cd0f6be916020908290030190a250565b6001546001600160a01b031681565b6000546001600160a01b031690565b600080546001600160a01b03166103eb610a31565b6001600160a01b031614905090565b6004546001600160a01b031681565b6104116103d6565b610451576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61045a81610a35565b6104955760405162461bcd60e51b8152600401808060200182810382526023815260200180610ca26023913960400191505060405180910390fd5b60008190506000816001600160a01b031663665a11ca6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104d557600080fd5b505afa1580156104e9573d6000803e3d6000fd5b505050506040513d60208110156104ff57600080fd5b50516002546040805163d031370b60e01b81526000600482015290519293506001600160a01b03918216929184169163d031370b91602480820192602092909190829003018186803b15801561055457600080fd5b505afa158015610568573d6000803e3d6000fd5b505050506040513d602081101561057e57600080fd5b50516001600160a01b0316148061061557506002546040805163d031370b60e01b81526001600482015290516001600160a01b039283169284169163d031370b916024808301926020929190829003018186803b1580156105de57600080fd5b505afa1580156105f2573d6000803e3d6000fd5b505050506040513d602081101561060857600080fd5b50516001600160a01b0316145b6106505760405162461bcd60e51b8152600401808060200182810382526029815260200180610c536029913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b03858116919091179182905560408051338152905192909116917f1cece9fe0966bcae1bc320922e8e73fe56effacab5cc158e7d97cd77cea66e86916020908290030190a2505050565b6002546001600160a01b031681565b6106c66103d6565b610706576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b03811661074b5760405162461bcd60e51b815260040180806020018281038252602c815260200180610ce6602c913960400191505060405180910390fd5b600480546001600160a01b0383166001600160a01b031990911681179091556040805133815290517f6dde2141be69fabcd84e3864d206ba0f3f2d507125fb2703899c87de4c585d5f9181900360200190a250565b6003546001600160a01b031681565b6107b76103d6565b6107f7576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b03811661083c5760405162461bcd60e51b8152600401808060200182810382526022815260200180610d366022913960400191505060405180910390fd5b600380546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fa5fa52ac5539bdf7f8bd9d02d0e2d4d7840c7dc0ff1fa8d9bcab2ffb765f37139181900360200190a250565b6108996103d6565b6108d9576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6108e281610a71565b50565b6002546003546040805163524efd4b60e01b81526001600160a01b0393841660048201529290911660248301525160009133918391839163524efd4b91604480820192602092909190829003018186803b15801561094257600080fd5b505afa158015610956573d6000803e3d6000fd5b505050506040513d602081101561096c57600080fd5b50516002546003546040805163d138f9a160e01b81526001600160a01b039384166004820152918316602483015260448201889052519293506000929185169163d138f9a191606480820192602092909190829003018186803b1580156109d257600080fd5b505afa1580156109e6573d6000803e3d6000fd5b505050506040513d60208110156109fc57600080fd5b50519050610a28670de0b6b3a7640000610a1c838563ffffffff610b1116565b9063ffffffff610b7316565b95945050505050565b3390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610a6957508115155b949350505050565b6001600160a01b038116610ab65760405162461bcd60e51b8152600401808060200182810382526026815260200180610c7c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082610b2057506000610b6d565b82820282848281610b2d57fe5b0414610b6a5760405162461bcd60e51b8152600401808060200182810382526021815260200180610cc56021913960400191505060405180910390fd5b90505b92915050565b6000610b6a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183610c3c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c01578181015183820152602001610be9565b50505050905090810190601f168015610c2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610c4857fe5b049594505050505056fe6f6e65206f66207468652074776f207265736572766573206e6565647320746f2062652077726274634f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735f7631506f6f6c4f7261636c6541646472657373206e6f74206120636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77426173652063757272656e637920616464726573732063616e6e6f74206265207a65726f2061646472657373775242544320616464726573732063616e6e6f74206265207a65726f2061646472657373444f4320616464726573732063616e6e6f74206265207a65726f2061646472657373a265627a7a7231582002e601c9ef32d68a18acf420a5c23181e4ca0140eb5eb6c86e62b580e0d925ff64736f6c634300051100326f6e65206f66207468652074776f207265736572766573206e6565647320746f2062652077726274635f7631506f6f6c4f7261636c6541646472657373206e6f74206120636f6e7472616374426173652063757272656e637920616464726573732063616e6e6f74206265207a65726f2061646472657373775242544320616464726573732063616e6e6f74206265207a65726f2061646472657373444f4320616464726573732063616e6e6f74206265207a65726f2061646472657373",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1576 CODESIZE SUB DUP1 PUSH3 0x1576 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x0 PUSH3 0x63 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x107 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0xC1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x10B AND JUMP JUMPDEST PUSH3 0xD5 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x203 AND JUMP JUMPDEST PUSH3 0xE9 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x2F3 AND JUMP JUMPDEST PUSH3 0xFD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x5C0 AND JUMP JUMPDEST POP POP POP POP PUSH3 0x71C JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH3 0x11E PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x6B0 AND JUMP JUMPDEST PUSH3 0x15F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x1A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x1530 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x2F21604F728CEE3B038451139B7962E5720960FE821C609CA83E38BE2CD0F6BE SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH3 0x216 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x6B0 AND JUMP JUMPDEST PUSH3 0x257 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x29E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x1554 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0xA5FA52AC5539BDF7F8BD9D02D0E2D4D7840C7DC0FF1FA8D9BCAB2FFB765F3713 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH3 0x306 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x6B0 AND JUMP JUMPDEST PUSH3 0x347 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0x35D DUP2 PUSH3 0x6DF PUSH1 0x20 SHL PUSH3 0xA35 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x39A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x14E1 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x665A11CA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD031370B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP3 SWAP2 DUP5 AND SWAP2 PUSH4 0xD031370B SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x472 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH3 0x524 JUMPI POP PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD031370B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP5 AND SWAP2 PUSH4 0xD031370B SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x500 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH3 0x561 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x14B8 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x1CECE9FE0966BCAE1BC320922E8E73FE56EFFACAB5CC158E7D97CD77CEA66E86 SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH3 0x5D3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x6B0 AND JUMP JUMPDEST PUSH3 0x614 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x65B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x1504 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x6DDE2141BE69FABCD84E3864D206BA0F3F2D507125FB2703899C87DE4C585D5F SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x6D0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x107 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH3 0x714 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xD8C DUP1 PUSH3 0x72C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F63140B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x9F63140B EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0xB15403DA EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0xB478F416 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0xC083BE5F EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xC63EC525 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1CD JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x50D25BCD EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x8A47B34A EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x8C0D8C23 EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0x92A85FDE EQ PUSH2 0x143 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x103 PUSH2 0x3B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x103 PUSH2 0x3C7 JUMP JUMPDEST PUSH2 0x12F PUSH2 0x3D6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x103 PUSH2 0x3FA JUMP JUMPDEST PUSH2 0xF9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x409 JUMP JUMPDEST PUSH2 0x103 PUSH2 0x6AF JUMP JUMPDEST PUSH2 0xF9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x103 PUSH2 0x7A0 JUMP JUMPDEST PUSH2 0xF9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7AF JUMP JUMPDEST PUSH2 0xF9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x891 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x53084EFF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP2 SWAP1 SWAP2 AND SWAP2 DUP4 SWAP2 DUP4 SWAP2 PUSH4 0x53084EFF SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x285 DUP3 PUSH2 0x8E5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x383934B1B29032B93937B9 PUSH1 0xA9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2D6 PUSH2 0x3D6 JUMP JUMPDEST PUSH2 0x316 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x35B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD12 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x2F21604F728CEE3B038451139B7962E5720960FE821C609CA83E38BE2CD0F6BE SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3EB PUSH2 0xA31 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x411 PUSH2 0x3D6 JUMP JUMPDEST PUSH2 0x451 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x45A DUP2 PUSH2 0xA35 JUMP JUMPDEST PUSH2 0x495 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCA2 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x665A11CA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD031370B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP3 SWAP2 DUP5 AND SWAP2 PUSH4 0xD031370B SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x568 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x615 JUMPI POP PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD031370B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP5 AND SWAP2 PUSH4 0xD031370B SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x650 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xC53 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x1CECE9FE0966BCAE1BC320922E8E73FE56EFFACAB5CC158E7D97CD77CEA66E86 SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x6C6 PUSH2 0x3D6 JUMP JUMPDEST PUSH2 0x706 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x74B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCE6 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x6DDE2141BE69FABCD84E3864D206BA0F3F2D507125FB2703899C87DE4C585D5F SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x7B7 PUSH2 0x3D6 JUMP JUMPDEST PUSH2 0x7F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x83C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD36 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0xA5FA52AC5539BDF7F8BD9D02D0E2D4D7840C7DC0FF1FA8D9BCAB2FFB765F3713 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x899 PUSH2 0x3D6 JUMP JUMPDEST PUSH2 0x8D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x8E2 DUP2 PUSH2 0xA71 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x524EFD4B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE MLOAD PUSH1 0x0 SWAP2 CALLER SWAP2 DUP4 SWAP2 DUP4 SWAP2 PUSH4 0x524EFD4B SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x942 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x956 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x96C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD138F9A1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP9 SWAP1 MSTORE MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 SWAP2 DUP6 AND SWAP2 PUSH4 0xD138F9A1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0xA28 PUSH8 0xDE0B6B3A7640000 PUSH2 0xA1C DUP4 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xB11 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB73 AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0xA69 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xAB6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xC7C PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xB20 JUMPI POP PUSH1 0x0 PUSH2 0xB6D JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xB2D JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xB6A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCC5 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB6A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP2 DUP4 PUSH2 0xC3C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC01 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBE9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC2E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0xC48 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID PUSH16 0x6E65206F66207468652074776F207265 PUSH20 0x6572766573206E6565647320746F206265207772 PUSH3 0x74634F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573735F7631506F6F6C4F7261636C65416464 PUSH19 0x657373206E6F74206120636F6E747261637453 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77426173652063757272 PUSH6 0x6E6379206164 PUSH5 0x7265737320 PUSH4 0x616E6E6F PUSH21 0x206265207A65726F20616464726573737752425443 KECCAK256 PUSH2 0x6464 PUSH19 0x6573732063616E6E6F74206265207A65726F20 PUSH2 0x6464 PUSH19 0x657373444F4320616464726573732063616E6E PUSH16 0x74206265207A65726F20616464726573 PUSH20 0xA265627A7A7231582002E601C9EF32D68A18ACF4 KECCAK256 0xA5 0xC2 BALANCE DUP2 0xE4 0xCA ADD BLOCKHASH 0xEB 0x5E 0xB6 0xC8 PUSH15 0x62B580E0D925FF64736F6C63430005 GT STOP ORIGIN PUSH16 0x6E65206F66207468652074776F207265 PUSH20 0x6572766573206E6565647320746F206265207772 PUSH3 0x74635F PUSH23 0x31506F6F6C4F7261636C6541646472657373206E6F7420 PUSH2 0x2063 PUSH16 0x6E747261637442617365206375727265 PUSH15 0x637920616464726573732063616E6E PUSH16 0x74206265207A65726F20616464726573 PUSH20 0x775242544320616464726573732063616E6E6F74 KECCAK256 PUSH3 0x65207A PUSH6 0x726F20616464 PUSH19 0x657373444F4320616464726573732063616E6E PUSH16 0x74206265207A65726F20616464726573 PUSH20 0x0 ",
              "sourceMap": "404:4080:42:-;;;1208:276;8:9:-1;5:2;;;30:1;27;20:12;5:2;1208:276:42;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1208:276:42;;;;;;;;;;;;;;;;;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;-1:-1:-1;1339:29:42;1354:13;-1:-1:-1;;;;;1339:14:42;:29;:::i;:::-;1372:26;1386:11;-1:-1:-1;;;;;1372:13:42;:26;:::i;:::-;1402:44;1425:20;-1:-1:-1;;;;;1402:22:42;:44;:::i;:::-;1450:30;1466:13;-1:-1:-1;;;;;1450:15:42;:30;:::i;:::-;1208:276;;;;404:4080;;780:87:137;853:10;780:87;:::o;3425:230:42:-;1028:9:142;-1:-1:-1;;;;;1028:7:142;:9;:::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;3501:27:42;;3493:76;;;;-1:-1:-1;;;3493:76:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3573:12;:28;;-1:-1:-1;;;;;;3573:28:42;-1:-1:-1;;;;;3573:28:42;;;;;;;;;;;3610:41;;;3640:10;3610:41;;;;3626:12;;;;;3610:41;;;;;;;;;;3425:230;:::o;3869:216::-;1028:9:142;-1:-1:-1;;;;;1028:7:142;:9;:::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;3942:25:42;;3934:72;;;;-1:-1:-1;;;3934:72:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4010:10;:24;;-1:-1:-1;;;;;4010:24:42;;-1:-1:-1;;;;;;4010:24:42;;;;;;;;4043:38;;;4070:10;4043:38;;;;;;;;;;;;;3869:216;:::o;2573:633::-;1028:9:142;-1:-1:-1;;;;;1028:7:142;:9;:::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;2664:40:42;2683:20;2664:18;;;;;:40;;:::i;:::-;2656:88;;;;-1:-1:-1;;;2656:88:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2748:27;2792:20;2748:65;;2817:21;2841:13;-1:-1:-1;;;;;2841:27:42;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2841:29:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2841:29:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2841:29:42;2947:12;;2886:57;;;-1:-1:-1;;;2886:57:42;;2947:12;2886:57;;;;;;2841:29;;-1:-1:-1;;;;;;2947:12:42;;;;2886:54;;;;;;:57;;;;;2841:29;;2886:57;;;;;;;;:54;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;2886:57:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2886:57:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2886:57:42;-1:-1:-1;;;;;2886:73:42;;;:154;;-1:-1:-1;3028:12:42;;2967:57;;;-1:-1:-1;;;2967:57:42;;3028:12;2967:57;;;;;;-1:-1:-1;;;;;3028:12:42;;;;2967:54;;;;;:57;;;;;;;;;;;;;;:54;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;2967:57:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2967:57:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2967:57:42;-1:-1:-1;;;;;2967:73:42;;2886:154;2874:218;;;;-1:-1:-1;;;2874:218:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3096:19;:42;;-1:-1:-1;;;;;;3096:42:42;-1:-1:-1;;;;;3096:42:42;;;;;;;;;;;3147:55;;;3191:10;3147:55;;;;3170:19;;;;;3147:55;;;;;;;;;;1058:1:142;;2573:633:42;:::o;4242:240::-;1028:9:142;-1:-1:-1;;;;;1028:7:142;:9;:::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;4319:27:42;;4311:84;;;;-1:-1:-1;;;4311:84:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4399:12;:28;;-1:-1:-1;;;;;4399:28:42;;-1:-1:-1;;;;;;4399:28:42;;;;;;;;4436:42;;;4467:10;4436:42;;;;;;;;;;;;;4242:240;:::o;1134:83:142:-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;-1:-1:-1;;;;;1191:10:142;:12;:::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;404:4080:42:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100b45760003560e01c80639f63140b116100715780639f63140b1461014b578063b15403da14610171578063b478f41614610179578063c083be5f1461019f578063c63ec525146101a7578063f2fde38b146101cd576100b4565b806350d25bcd146100b95780638a47b34a146100d35780638c0d8c23146100fb5780638da5cb5b1461011f5780638f32d59b1461012757806392a85fde14610143575b600080fd5b6100c16101f3565b60408051918252519081900360200190f35b6100f9600480360360208110156100e957600080fd5b50356001600160a01b03166102ce565b005b6101036103b8565b604080516001600160a01b039092168252519081900360200190f35b6101036103c7565b61012f6103d6565b604080519115158252519081900360200190f35b6101036103fa565b6100f96004803603602081101561016157600080fd5b50356001600160a01b0316610409565b6101036106af565b6100f96004803603602081101561018f57600080fd5b50356001600160a01b03166106be565b6101036107a0565b6100f9600480360360208110156101bd57600080fd5b50356001600160a01b03166107af565b6100f9600480360360208110156101e357600080fd5b50356001600160a01b0316610891565b60015460048054604080516353084eff60e01b81526001600160a01b0392831693810193909352516000939190911691839183916353084eff916024808301926020929190829003018186803b15801561024c57600080fd5b505afa158015610260573d6000803e3d6000fd5b505050506040513d602081101561027657600080fd5b505190506000610285826108e5565b9050806102c7576040805162461bcd60e51b815260206004820152600b60248201526a383934b1b29032b93937b960a91b604482015290519081900360640190fd5b9250505090565b6102d66103d6565b610316576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b03811661035b5760405162461bcd60e51b8152600401808060200182810382526024815260200180610d126024913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917f2f21604f728cee3b038451139b7962e5720960fe821c609ca83e38be2cd0f6be916020908290030190a250565b6001546001600160a01b031681565b6000546001600160a01b031690565b600080546001600160a01b03166103eb610a31565b6001600160a01b031614905090565b6004546001600160a01b031681565b6104116103d6565b610451576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61045a81610a35565b6104955760405162461bcd60e51b8152600401808060200182810382526023815260200180610ca26023913960400191505060405180910390fd5b60008190506000816001600160a01b031663665a11ca6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104d557600080fd5b505afa1580156104e9573d6000803e3d6000fd5b505050506040513d60208110156104ff57600080fd5b50516002546040805163d031370b60e01b81526000600482015290519293506001600160a01b03918216929184169163d031370b91602480820192602092909190829003018186803b15801561055457600080fd5b505afa158015610568573d6000803e3d6000fd5b505050506040513d602081101561057e57600080fd5b50516001600160a01b0316148061061557506002546040805163d031370b60e01b81526001600482015290516001600160a01b039283169284169163d031370b916024808301926020929190829003018186803b1580156105de57600080fd5b505afa1580156105f2573d6000803e3d6000fd5b505050506040513d602081101561060857600080fd5b50516001600160a01b0316145b6106505760405162461bcd60e51b8152600401808060200182810382526029815260200180610c536029913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b03858116919091179182905560408051338152905192909116917f1cece9fe0966bcae1bc320922e8e73fe56effacab5cc158e7d97cd77cea66e86916020908290030190a2505050565b6002546001600160a01b031681565b6106c66103d6565b610706576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b03811661074b5760405162461bcd60e51b815260040180806020018281038252602c815260200180610ce6602c913960400191505060405180910390fd5b600480546001600160a01b0383166001600160a01b031990911681179091556040805133815290517f6dde2141be69fabcd84e3864d206ba0f3f2d507125fb2703899c87de4c585d5f9181900360200190a250565b6003546001600160a01b031681565b6107b76103d6565b6107f7576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b03811661083c5760405162461bcd60e51b8152600401808060200182810382526022815260200180610d366022913960400191505060405180910390fd5b600380546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fa5fa52ac5539bdf7f8bd9d02d0e2d4d7840c7dc0ff1fa8d9bcab2ffb765f37139181900360200190a250565b6108996103d6565b6108d9576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6108e281610a71565b50565b6002546003546040805163524efd4b60e01b81526001600160a01b0393841660048201529290911660248301525160009133918391839163524efd4b91604480820192602092909190829003018186803b15801561094257600080fd5b505afa158015610956573d6000803e3d6000fd5b505050506040513d602081101561096c57600080fd5b50516002546003546040805163d138f9a160e01b81526001600160a01b039384166004820152918316602483015260448201889052519293506000929185169163d138f9a191606480820192602092909190829003018186803b1580156109d257600080fd5b505afa1580156109e6573d6000803e3d6000fd5b505050506040513d60208110156109fc57600080fd5b50519050610a28670de0b6b3a7640000610a1c838563ffffffff610b1116565b9063ffffffff610b7316565b95945050505050565b3390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610a6957508115155b949350505050565b6001600160a01b038116610ab65760405162461bcd60e51b8152600401808060200182810382526026815260200180610c7c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082610b2057506000610b6d565b82820282848281610b2d57fe5b0414610b6a5760405162461bcd60e51b8152600401808060200182810382526021815260200180610cc56021913960400191505060405180910390fd5b90505b92915050565b6000610b6a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183610c3c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c01578181015183820152602001610be9565b50505050905090810190601f168015610c2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610c4857fe5b049594505050505056fe6f6e65206f66207468652074776f207265736572766573206e6565647320746f2062652077726274634f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735f7631506f6f6c4f7261636c6541646472657373206e6f74206120636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77426173652063757272656e637920616464726573732063616e6e6f74206265207a65726f2061646472657373775242544320616464726573732063616e6e6f74206265207a65726f2061646472657373444f4320616464726573732063616e6e6f74206265207a65726f2061646472657373a265627a7a7231582002e601c9ef32d68a18acf420a5c23181e4ca0140eb5eb6c86e62b580e0d925ff64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F63140B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x9F63140B EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0xB15403DA EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0xB478F416 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0xC083BE5F EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xC63EC525 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1CD JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x50D25BCD EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x8A47B34A EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x8C0D8C23 EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0x92A85FDE EQ PUSH2 0x143 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x1F3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x103 PUSH2 0x3B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x103 PUSH2 0x3C7 JUMP JUMPDEST PUSH2 0x12F PUSH2 0x3D6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x103 PUSH2 0x3FA JUMP JUMPDEST PUSH2 0xF9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x409 JUMP JUMPDEST PUSH2 0x103 PUSH2 0x6AF JUMP JUMPDEST PUSH2 0xF9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x103 PUSH2 0x7A0 JUMP JUMPDEST PUSH2 0xF9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7AF JUMP JUMPDEST PUSH2 0xF9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x891 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x53084EFF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP2 SWAP1 SWAP2 AND SWAP2 DUP4 SWAP2 DUP4 SWAP2 PUSH4 0x53084EFF SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x285 DUP3 PUSH2 0x8E5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x383934B1B29032B93937B9 PUSH1 0xA9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2D6 PUSH2 0x3D6 JUMP JUMPDEST PUSH2 0x316 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x35B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD12 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x2F21604F728CEE3B038451139B7962E5720960FE821C609CA83E38BE2CD0F6BE SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3EB PUSH2 0xA31 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x411 PUSH2 0x3D6 JUMP JUMPDEST PUSH2 0x451 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x45A DUP2 PUSH2 0xA35 JUMP JUMPDEST PUSH2 0x495 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCA2 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x665A11CA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD031370B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP3 SWAP2 DUP5 AND SWAP2 PUSH4 0xD031370B SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x568 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x615 JUMPI POP PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD031370B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 DUP5 AND SWAP2 PUSH4 0xD031370B SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x650 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xC53 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x1CECE9FE0966BCAE1BC320922E8E73FE56EFFACAB5CC158E7D97CD77CEA66E86 SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x6C6 PUSH2 0x3D6 JUMP JUMPDEST PUSH2 0x706 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x74B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCE6 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0x6DDE2141BE69FABCD84E3864D206BA0F3F2D507125FB2703899C87DE4C585D5F SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x7B7 PUSH2 0x3D6 JUMP JUMPDEST PUSH2 0x7F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x83C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD36 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH32 0xA5FA52AC5539BDF7F8BD9D02D0E2D4D7840C7DC0FF1FA8D9BCAB2FFB765F3713 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x899 PUSH2 0x3D6 JUMP JUMPDEST PUSH2 0x8D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x8E2 DUP2 PUSH2 0xA71 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x524EFD4B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE MLOAD PUSH1 0x0 SWAP2 CALLER SWAP2 DUP4 SWAP2 DUP4 SWAP2 PUSH4 0x524EFD4B SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x942 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x956 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x96C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD138F9A1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP9 SWAP1 MSTORE MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 SWAP2 DUP6 AND SWAP2 PUSH4 0xD138F9A1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0xA28 PUSH8 0xDE0B6B3A7640000 PUSH2 0xA1C DUP4 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xB11 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB73 AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0xA69 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xAB6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xC7C PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xB20 JUMPI POP PUSH1 0x0 PUSH2 0xB6D JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xB2D JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xB6A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCC5 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB6A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP2 DUP4 PUSH2 0xC3C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC01 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBE9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC2E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0xC48 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID PUSH16 0x6E65206F66207468652074776F207265 PUSH20 0x6572766573206E6565647320746F206265207772 PUSH3 0x74634F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573735F7631506F6F6C4F7261636C65416464 PUSH19 0x657373206E6F74206120636F6E747261637453 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77426173652063757272 PUSH6 0x6E6379206164 PUSH5 0x7265737320 PUSH4 0x616E6E6F PUSH21 0x206265207A65726F20616464726573737752425443 KECCAK256 PUSH2 0x6464 PUSH19 0x6573732063616E6E6F74206265207A65726F20 PUSH2 0x6464 PUSH19 0x657373444F4320616464726573732063616E6E PUSH16 0x74206265207A65726F20616464726573 PUSH20 0xA265627A7A7231582002E601C9EF32D68A18ACF4 KECCAK256 0xA5 0xC2 BALANCE DUP2 0xE4 0xCA ADD BLOCKHASH 0xEB 0x5E 0xB6 0xC8 PUSH15 0x62B580E0D925FF64736F6C63430005 GT STOP ORIGIN ",
              "sourceMap": "404:4080:42:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;404:4080:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1568:383;;;:::i;:::-;;;;;;;;;;;;;;;;3425:230;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3425:230:42;-1:-1:-1;;;;;3425:230:42;;:::i;:::-;;510:34;;;:::i;:::-;;;;-1:-1:-1;;;;;510:34:42;;;;;;;;;;;;;;851:68:142;;;:::i;1134:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;605:27:42;;;:::i;2573:633::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2573:633:42;-1:-1:-1;;;;;2573:633:42;;:::i;547:27::-;;;:::i;4242:240::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4242:240:42;-1:-1:-1;;;;;4242:240:42;;:::i;577:25::-;;;:::i;3869:216::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3869:216:42;-1:-1:-1;;;;;3869:216:42;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;1568:383:42:-;1672:19;;1740:12;;;1714:39;;;-1:-1:-1;;;1714:39:42;;-1:-1:-1;;;;;1740:12:42;;;1714:39;;;;;;;;1615:7;;1672:19;;;;;1615:7;;1672:19;;1714:25;;:39;;;;;;;;;;;;;;1672:19;1714:39;;;5:2:-1;;;;30:1;27;20:12;5:2;1714:39:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1714:39:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1714:39:42;;-1:-1:-1;1834:18:42;1855:27;1714:39;1855:19;:27::i;:::-;1834:48;-1:-1:-1;1894:15:42;1886:39;;;;;-1:-1:-1;;;1886:39:42;;;;;;;;;;;;-1:-1:-1;;;1886:39:42;;;;;;;;;;;;;;;1937:10;-1:-1:-1;;;1568:383:42;:::o;3425:230::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;3501:27:42;;3493:76;;;;-1:-1:-1;;;3493:76:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3573:12;:28;;-1:-1:-1;;;;;;3573:28:42;-1:-1:-1;;;;;3573:28:42;;;;;;;;;;;3610:41;;;3640:10;3610:41;;;;3626:12;;;;;3610:41;;;;;;;;;;3425:230;:::o;510:34::-;;;-1:-1:-1;;;;;510:34:42;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;605:27:42:-;;;-1:-1:-1;;;;;605:27:42;;:::o;2573:633::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;2664:40:42;2683:20;2664:18;:40::i;:::-;2656:88;;;;-1:-1:-1;;;2656:88:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2748:27;2792:20;2748:65;;2817:21;2841:13;-1:-1:-1;;;;;2841:27:42;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2841:29:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2841:29:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2841:29:42;2947:12;;2886:57;;;-1:-1:-1;;;2886:57:42;;2947:12;2886:57;;;;;;2841:29;;-1:-1:-1;;;;;;2947:12:42;;;;2886:54;;;;;;:57;;;;;2841:29;;2886:57;;;;;;;;:54;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;2886:57:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2886:57:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2886:57:42;-1:-1:-1;;;;;2886:73:42;;;:154;;-1:-1:-1;3028:12:42;;2967:57;;;-1:-1:-1;;;2967:57:42;;3028:12;2967:57;;;;;;-1:-1:-1;;;;;3028:12:42;;;;2967:54;;;;;:57;;;;;;;;;;;;;;:54;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;2967:57:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2967:57:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2967:57:42;-1:-1:-1;;;;;2967:73:42;;2886:154;2874:218;;;;-1:-1:-1;;;2874:218:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3096:19;:42;;-1:-1:-1;;;;;;3096:42:42;-1:-1:-1;;;;;3096:42:42;;;;;;;;;;;3147:55;;;3191:10;3147:55;;;;3170:19;;;;;3147:55;;;;;;;;;;1058:1:142;;2573:633:42;:::o;547:27::-;;;-1:-1:-1;;;;;547:27:42;;:::o;4242:240::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;4319:27:42;;4311:84;;;;-1:-1:-1;;;4311:84:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4399:12;:28;;-1:-1:-1;;;;;4399:28:42;;-1:-1:-1;;;;;;4399:28:42;;;;;;;;4436:42;;;4467:10;4436:42;;;;;;;;;;;;;4242:240;:::o;577:25::-;;;-1:-1:-1;;;;;577:25:42;;:::o;3869:216::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;3942:25:42;;3934:72;;;;-1:-1:-1;;;3934:72:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4010:10;:24;;-1:-1:-1;;;;;4010:24:42;;-1:-1:-1;;;;;;4010:24:42;;;;;;;;4043:38;;;4070:10;4043:38;;;;;;;;;;;;;3869:216;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;1954:498:42:-;2136:12;;2150:10;;2096:65;;;-1:-1:-1;;;2096:65:42;;-1:-1:-1;;;;;2136:12:42;;;2096:65;;;;2150:10;;;;2096:65;;;;;-1:-1:-1;;2061:10:42;;-1:-1:-1;;2061:10:42;;2096:39;;:65;;;;;;;;;;;;;;;2061:10;2096:65;;;5:2:-1;;;;30:1;27;20:12;5:2;2096:65:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2096:65:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2096:65:42;2223:12;;2237:10;;2186:75;;;-1:-1:-1;;;2186:75:42;;-1:-1:-1;;;;;2223:12:42;;;2186:75;;;;2237:10;;;2186:75;;;;;;;;;;;2096:65;;-1:-1:-1;2165:18:42;;2186:36;;;;;;:75;;;;;2096:65;;2186:75;;;;;;;;:36;:75;;;5:2:-1;;;;30:1;27;20:12;5:2;2186:75:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2186:75:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2186:75:42;;-1:-1:-1;2413:35:42;2443:4;2413:25;2186:75;2428:9;2413:25;:14;:25;:::i;:::-;:29;:35;:29;:35;:::i;:::-;2406:42;1954:498;-1:-1:-1;;;;;1954:498:42:o;780:87:137:-;853:10;780:87;:::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2393:1;-1:-1:-1;1999:399:145;;;;;:::o;2817:121::-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o"
            },
            "methodIdentifiers": {
              "baseCurrency()": "92a85fde",
              "docAddress()": "c083be5f",
              "isOwner()": "8f32d59b",
              "latestAnswer()": "50d25bcd",
              "owner()": "8da5cb5b",
              "setBaseCurrency(address)": "b478f416",
              "setDOCAddress(address)": "c63ec525",
              "setRBTCAddress(address)": "8a47b34a",
              "setV1PoolOracleAddress(address)": "9f63140b",
              "transferOwnership(address)": "f2fde38b",
              "v1PoolOracleAddress()": "8c0d8c23",
              "wRBTCAddress()": "b15403da"
            }
          },
          "userdoc": {
            "methods": {
              "constructor": "Initialize a new V1 Pool Oracle.",
              "latestAnswer()": {
                "notice": "Get the oracle price."
              },
              "setBaseCurrency(address)": {
                "notice": "Set the base currency address. That's the reserve address which is not WRBTC"
              },
              "setDOCAddress(address)": {
                "notice": "Set the DoC address. V1 pool based price is BTC, so need to convert the value from v1 pool to USD. That's why we need to get the price of the DoC"
              },
              "setRBTCAddress(address)": {
                "notice": "Set the rBtc address. V1 pool based price is BTC, so need to convert the value from v1 pool to USD. That's why we need to get the price of the rBtc"
              },
              "setV1PoolOracleAddress(address)": {
                "notice": "Set the V1 Pool Oracle address."
              }
            },
            "notice": "The Price Feed V1 Pool Oracle contract. * This contract implements V1 Pool Oracle query functionality, getting the price from v1 pool oracle."
          }
        }
      },
      "contracts/feeds/PriceFeeds.sol": {
        "IPriceFeedsExt": {
          "abi": [
            {
              "constant": true,
              "inputs": [],
              "name": "latestAnswer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "latestAnswer()": "50d25bcd"
            }
          },
          "userdoc": {
            "methods": {}
          }
        },
        "PriceFeeds": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_wrbtcTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_protocolTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_baseTokenAddress",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "name": "GlobalPricingPaused",
              "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"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "amountInEth",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "ethAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxSlippage",
                  "type": "uint256"
                }
              ],
              "name": "checkPriceDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "sourceToDestSwapRate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                }
              ],
              "name": "getCurrentMargin",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                }
              ],
              "name": "getCurrentMarginAndCollateralSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralInEthAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "margin",
                  "type": "uint256"
                }
              ],
              "name": "getMaxDrawdown",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxDrawdown",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "globalPricingPaused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "pricesFeeds",
              "outputs": [
                {
                  "internalType": "contract IPriceFeedsExt",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenEthPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                }
              ],
              "name": "queryPrecision",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                }
              ],
              "name": "queryRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "rate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "precision",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                }
              ],
              "name": "queryReturn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "tokens",
                  "type": "address[]"
                }
              ],
              "name": "setDecimals",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "name": "setGlobalPricingPaused",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "contract IPriceFeedsExt[]",
                  "name": "feeds",
                  "type": "address[]"
                }
              ],
              "name": "setPriceFeed",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newPrice",
                  "type": "uint256"
                }
              ],
              "name": "setProtocolTokenEthPrice",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                }
              ],
              "name": "shouldLiquidate",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "amountInEth(address,uint256)": {
                "params": {
                  "amount": "The amount of tokens to calculate price.",
                  "tokenAddress": "The address of the token to calculate price."
                },
                "return": "ethAmount The amount of rBTC equivalent."
              },
              "checkPriceDisagreement(address,address,uint256,uint256,uint256)": {
                "params": {
                  "destAmount": "The amount of destiny tokens.",
                  "destToken": "The address of the destiny tokens.",
                  "maxSlippage": "The maximum slippage limit.",
                  "sourceAmount": "The amount of source tokens.",
                  "sourceToken": "The address of the source tokens."
                },
                "return": "sourceToDestSwapRate The swap rate between tokens."
              },
              "constructor": {
                "params": {
                  "_baseTokenAddress": "The address of the base token.",
                  "_protocolTokenAddress": "The address of the protocol token.",
                  "_wrbtcTokenAddress": "The address of the wrapped wrBTC token."
                }
              },
              "getCurrentMargin(address,address,uint256,uint256)": {
                "details": "current margin = (total position size - loan) / loan The collateral amount passed as parameter equals the total position size.",
                "params": {
                  "collateralAmount": "The amount of the collateral.",
                  "collateralToken": "The address of the collateral token.",
                  "loanAmount": "The amount of the loan.",
                  "loanToken": "The address of the loan token."
                },
                "return": "currentMargin The margin of the loan.collateralToLoanRate The price ratio between collateral and  loan tokens."
              },
              "getCurrentMarginAndCollateralSize(address,address,uint256,uint256)": {
                "params": {
                  "collateralAmount": "The amount of the collateral.",
                  "collateralToken": "The address of the collateral token.",
                  "loanAmount": "The amount of the loan.",
                  "loanToken": "The address of the loan token."
                },
                "return": "currentMargin The margin of the loan.collateralInEthAmount The amount of collateral on rBTC."
              },
              "getMaxDrawdown(address,address,uint256,uint256,uint256)": {
                "params": {
                  "collateralAmount": "The amount of the collateral.",
                  "collateralToken": "The address of the collateral token.",
                  "loanAmount": "The amount of the loan.",
                  "loanToken": "The address of the loan token.",
                  "margin": "The relation between the position size and the loan.  margin = (total position size - loan) / loan"
                },
                "return": "maxDrawdown The maximum drawdown."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "queryPrecision(address,address)": {
                "details": "Public wrapper for _getDecimalPrecision internal function.",
                "params": {
                  "destToken": "The address of the destiny tokens.",
                  "sourceToken": "The address of the source tokens."
                },
                "return": "The precision ratio source/dest."
              },
              "queryRate(address,address)": {
                "details": "Public wrapper for _queryRate internal function.",
                "params": {
                  "destToken": "The address of the destiny tokens.",
                  "sourceToken": "The address of the source tokens."
                },
                "return": "rate The price ratio source/dest.precision The ratio precision."
              },
              "queryReturn(address,address,uint256)": {
                "details": "NOTE: This function returns 0 during a pause, rather than a revert. Ensure calling contracts handle correctly.",
                "params": {
                  "destToken": "The address of the destiny tokens.",
                  "sourceAmount": "The amount of the source tokens.",
                  "sourceToken": "The address of the source tokens."
                },
                "return": "destAmount The amount of destiny tokens equivalent in price  to the amount of source tokens."
              },
              "setDecimals(address[])": {
                "params": {
                  "tokens": "The array of tokens to loop and get values from."
                }
              },
              "setGlobalPricingPaused(bool)": {
                "params": {
                  "isPaused": "The new status of pause (true/false)."
                }
              },
              "setPriceFeed(address[],address[])": {
                "params": {
                  "feeds": "The array of contract instances for every token.",
                  "tokens": "The array of tokens to loop and get addresses."
                }
              },
              "setProtocolTokenEthPrice(uint256)": {
                "params": {
                  "newPrice": "The new value for protocolTokenEthPrice"
                }
              },
              "shouldLiquidate(address,address,uint256,uint256,uint256)": {
                "params": {
                  "collateralAmount": "The amount of the collateral.",
                  "collateralToken": "The address of the collateral token.",
                  "loanAmount": "The amount of the loan.",
                  "loanToken": "The address of the loan token.",
                  "maintenanceMargin": "The minimum margin before liquidation."
                },
                "return": "True/false to liquidate the loan."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "The Price Feeds contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405265b5e620f480006006556007805460ff191690553480156200002557600080fd5b506040516200198938038062001989833981810160405260608110156200004b57600080fd5b50805160208201516040909201519091906000620000716001600160e01b036200014316565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600560205260127f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc8190556001600160a01b0384166000908152604090205562000112836001600160e01b036200014716565b62000126826001600160e01b03620001bc16565b6200013a816001600160e01b036200023116565b505050620002f8565b3390565b6200015d81620002bb60201b620015841760201c565b6200019a5760405162461bcd60e51b8152600401808060200182810382526021815260200180620019446021913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b620001d281620002bb60201b620015841760201c565b6200020f5760405162461bcd60e51b8152600401808060200182810382526024815260200180620019656024913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6200024781620002bb60201b620015841760201c565b62000299576040805162461bcd60e51b815260206004820181905260248201527f5f62617365546f6b656e41646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590620002f057508115155b949350505050565b61163c80620003086000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638f32d59b116100b8578063d138f9a11161007c578063d138f9a1146104a8578063d449a832146104de578063d601e3ff14610504578063ecc5382d1461050c578063f2fde38b14610548578063f80b25fb1461056e57610142565b80638f32d59b146103f4578063aa2ec710146103fc578063afe840091461046c578063b2cf54ea14610474578063c55dae63146104a057610142565b80632d485c5c1161010a5780632d485c5c1461025f5780632ff0d012146102a15780635034709c146102dd578063524efd4b1461039f5780637c2badb7146103cd5780638da5cb5b146103ec57610142565b806310f54166146101475780631e2c62d31461016657806322340070146101ba57806329d5277c146101c25780632a88770214610209575b600080fd5b6101646004803603602081101561015d57600080fd5b50356105b0565b005b6101a8600480360360a081101561017c57600080fd5b506001600160a01b0381358116916020810135909116906040810135906060810135906080013561063f565b60408051918252519081900360200190f35b6101a8610743565b6101f0600480360360408110156101d857600080fd5b506001600160a01b0381358116916020013516610749565b6040805192835260208301919091528051918290030190f35b61024b600480360360a081101561021f57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135610762565b604080519115158252519081900360200190f35b6102856004803603602081101561027557600080fd5b50356001600160a01b0316610780565b604080516001600160a01b039092168252519081900360200190f35b6101f0600480360360808110156102b757600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561079b565b610164600480360360408110156102f357600080fd5b81019060208101813564010000000081111561030e57600080fd5b82018360208201111561032057600080fd5b8035906020019184602083028401116401000000008311171561034257600080fd5b91939092909160208101903564010000000081111561036057600080fd5b82018360208201111561037257600080fd5b8035906020019184602083028401116401000000008311171561039457600080fd5b509092509050610874565b6101a8600480360360408110156103b557600080fd5b506001600160a01b0381358116916020013516610985565b610164600480360360208110156103e357600080fd5b503515156109c2565b610285610a5a565b61024b610a69565b6101646004803603602081101561041257600080fd5b81019060208101813564010000000081111561042d57600080fd5b82018360208201111561043f57600080fd5b8035906020019184602083028401116401000000008311171561046157600080fd5b509092509050610a8f565b610285610ba5565b6101a86004803603604081101561048a57600080fd5b506001600160a01b038135169060200135610bb4565b610285610c0e565b6101a8600480360360608110156104be57600080fd5b506001600160a01b03813581169160208101359091169060400135610c1d565b6101a8600480360360208110156104f457600080fd5b50356001600160a01b0316610c65565b61024b610c77565b6101f06004803603608081101561052257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610c80565b6101646004803603602081101561055e57600080fd5b50356001600160a01b0316610ca7565b6101a8600480360360a081101561058457600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135610cf8565b6105b8610a69565b6105f8576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b8061063a576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b600655565b60075460009060ff161561068e576040805162461bcd60e51b81526020600482015260116024820152701c1c9a58da5b99c81a5cc81c185d5cd959607a1b604482015290519081900360640190fd5b60008061069b8888610d96565b90925090506106c0866106b4878463ffffffff61114216565b9063ffffffff61119b16565b925082821115610738578282036106ea846106b48368056bc75e2d6310000063ffffffff61114216565b905084811115610736576040805162461bcd60e51b81526020600482015260126024820152711c1c9a58d948191a5cd859dc99595b595b9d60721b604482015290519081900360640190fd5b505b505095945050505050565b60065481565b6000806107568484610d96565b915091505b9250929050565b6000806107718787878761079b565b50909210159695505050505050565b6004602052600090815260409020546001600160a01b031681565b6000806000866001600160a01b0316866001600160a01b031614156107cc5750670de0b6b3a764000090508261081b565b60006107d88789610749565b90935090506107f9816106b485670de0b6b3a764000063ffffffff61114216565b9250610817670de0b6b3a76400006106b4878663ffffffff61114216565b9150505b841580159061082a5750848110155b156108655761085c856106b468056bc75e2d63100000610850858463ffffffff6111dd16565b9063ffffffff61114216565b925061086b9050565b50600091505b94509492505050565b61087c610a69565b6108bc576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b828114610901576040805162461bcd60e51b815260206004820152600e60248201526d0c6deeadce840dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b60005b8381101561097e5782828281811061091857fe5b905060200201356001600160a01b03166004600087878581811061093857fe5b6001600160a01b03602091820293909301358316845283019390935260409091016000208054939091166001600160a01b03199093169290921790915550600101610904565b5050505050565b6000816001600160a01b0316836001600160a01b031614156109af57670de0b6b3a76400006109b9565b6109b9838361121f565b90505b92915050565b6109ca610a69565b610a0a576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60075460ff16151581151514610a57576007805460ff191682151590811790915560405133907fd72570f3e3995824c4448eca84a22aed922dab8c58e23e9c5e60e74d0714f7f190600090a35b50565b6003546001600160a01b031690565b6003546000906001600160a01b0316610a80611389565b6001600160a01b031614905090565b610a97610a69565b610ad7576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60005b81811015610ba057828282818110610aee57fe5b905060200201356001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d6020811015610b6057600080fd5b505160ff1660056000858585818110610b7557fe5b602090810292909201356001600160a01b031683525081019190915260400160002055600101610ada565b505050565b6000546001600160a01b031681565b600080546001600160a01b0384811691161415610bd25750806109bc565b600080548190610bec9086906001600160a01b0316610749565b9092509050610c05816106b4868563ffffffff61114216565b95945050505050565b6001546001600160a01b031681565b60075460009060ff1615610c3357506000610c5e565b600080610c408686610d96565b9092509050610c59816106b4868563ffffffff61114216565b925050505b9392505050565b60056020526000908152604090205481565b60075460ff1681565b600080610c8f8686868661079b565b509150610c9c8584610bb4565b905094509492505050565b610caf610a69565b610cef576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610a578161138d565b600080866001600160a01b0316866001600160a01b03161415610d1c575083610d47565b600080610d298989610749565b9092509050610d42816106b4898563ffffffff61114216565b925050505b6000610d76610d6968056bc75e2d631000006106b4858863ffffffff61114216565b839063ffffffff61142e16565b9050808511610d86576000610d8a565b8085035b98975050505050505050565b600754600090819060ff1615610de7576040805162461bcd60e51b81526020600482015260116024820152701c1c9a58da5b99c81a5cc81c185d5cd959607a1b604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b03161461112f576001546000906001600160a01b03868116911614801590610e2f57506002546001600160a01b03868116911614155b15610f55576001600160a01b038086166000908152600460205260409020541680610e98576040805162461bcd60e51b81526020600482015260146024820152731d5b9cdd5c1c1bdc9d1959081cdc98c81999595960621b604482015290519081900360640190fd5b806001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed157600080fd5b505afa158015610ee5573d6000803e3d6000fd5b505050506040513d6020811015610efb57600080fd5b505191508115801590610f105750608082901c155b610f4f576040805162461bcd60e51b815260206004820152600b60248201526a383934b1b29032b93937b960a91b604482015290519081900360640190fd5b50610f7f565b6002546001600160a01b03868116911614610f7857670de0b6b3a7640000610f7c565b6006545b90505b6001546000906001600160a01b03868116911614801590610fae57506002546001600160a01b03868116911614155b156110d4576001600160a01b038086166000908152600460205260409020541680611017576040805162461bcd60e51b81526020600482015260146024820152731d5b9cdd5c1c1bdc9d195908191cdd081999595960621b604482015290519081900360640190fd5b806001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561105057600080fd5b505afa158015611064573d6000803e3d6000fd5b505050506040513d602081101561107a57600080fd5b50519150811580159061108f5750608082901c155b6110ce576040805162461bcd60e51b815260206004820152600b60248201526a383934b1b29032b93937b960a91b604482015290519081900360640190fd5b506110fe565b6002546001600160a01b038681169116146110f757670de0b6b3a76400006110fb565b6006545b90505b61111a816106b484670de0b6b3a764000063ffffffff61114216565b9350611126868661121f565b9250505061075b565b50670de0b6b3a764000093849350915050565b600082611151575060006109bc565b8282028284828161115e57fe5b04146109b95760405162461bcd60e51b81526004018080602001828103825260218152602001806115e76021913960400191505060405180910390fd5b60006109b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611488565b60006109b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061152a565b6000816001600160a01b0316836001600160a01b0316141561124a5750670de0b6b3a76400006109bc565b6001600160a01b038316600090815260056020526040902054806112d357836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156112a157600080fd5b505afa1580156112b5573d6000803e3d6000fd5b505050506040513d60208110156112cb57600080fd5b505160ff1690505b6001600160a01b0383166000908152600560205260409020548061135c57836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561132a57600080fd5b505afa15801561133e573d6000803e3d6000fd5b505050506040513d602081101561135457600080fd5b505160ff1690505b81811061137c5761137060128383036111dd565b600a0a925050506109bc565b611370601282840361142e565b3390565b6001600160a01b0381166113d25760405162461bcd60e51b81526004018080602001828103825260268152602001806115c16026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000828201838110156109b9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081836115145760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114d95781810151838201526020016114c1565b50505050905090810190601f1680156115065780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161152057fe5b0495945050505050565b6000818484111561157c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156114d95781810151838201526020016114c1565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906115b857508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582038bdee8ce4471747639c489957b799d3f0ca97863da5e16e540c0e84fd50e85764736f6c634300051100325f7772627463546f6b656e41646472657373206e6f74206120636f6e74726163745f70726f746f636f6c546f6b656e41646472657373206e6f74206120636f6e7472616374",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH6 0xB5E620F48000 PUSH1 0x6 SSTORE PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1989 CODESIZE SUB DUP1 PUSH3 0x1989 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x0 PUSH3 0x71 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x143 AND JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x12 PUSH32 0x5B8CCBB9D4D8FB16EA74CE3C29A41F1B461FBDAFF4714A0D9A8EB05499746BC DUP2 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH3 0x112 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x147 AND JUMP JUMPDEST PUSH3 0x126 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x1BC AND JUMP JUMPDEST PUSH3 0x13A DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x231 AND JUMP JUMPDEST POP POP POP PUSH3 0x2F8 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH3 0x15D DUP2 PUSH3 0x2BB PUSH1 0x20 SHL PUSH3 0x1584 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x19A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x1944 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x1D2 DUP2 PUSH3 0x2BB PUSH1 0x20 SHL PUSH3 0x1584 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x20F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x1965 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x247 DUP2 PUSH3 0x2BB PUSH1 0x20 SHL PUSH3 0x1584 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x299 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F62617365546F6B656E41646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH3 0x2F0 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x163C DUP1 PUSH3 0x308 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xD138F9A1 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xD138F9A1 EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0xD449A832 EQ PUSH2 0x4DE JUMPI DUP1 PUSH4 0xD601E3FF EQ PUSH2 0x504 JUMPI DUP1 PUSH4 0xECC5382D EQ PUSH2 0x50C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x548 JUMPI DUP1 PUSH4 0xF80B25FB EQ PUSH2 0x56E JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x3F4 JUMPI DUP1 PUSH4 0xAA2EC710 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0xB2CF54EA EQ PUSH2 0x474 JUMPI DUP1 PUSH4 0xC55DAE63 EQ PUSH2 0x4A0 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x2D485C5C GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x2D485C5C EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0x2FF0D012 EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0x5034709C EQ PUSH2 0x2DD JUMPI DUP1 PUSH4 0x524EFD4B EQ PUSH2 0x39F JUMPI DUP1 PUSH4 0x7C2BADB7 EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3EC JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x10F54166 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x1E2C62D3 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0x22340070 EQ PUSH2 0x1BA JUMPI DUP1 PUSH4 0x29D5277C EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x2A887702 EQ PUSH2 0x209 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5B0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x63F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A8 PUSH2 0x743 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x749 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x762 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x285 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x780 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x79B JUMP JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x372 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x874 JUMP JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x985 JUMP JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x9C2 JUMP JUMPDEST PUSH2 0x285 PUSH2 0xA5A JUMP JUMPDEST PUSH2 0x24B PUSH2 0xA69 JUMP JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xA8F JUMP JUMPDEST PUSH2 0x285 PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBB4 JUMP JUMPDEST PUSH2 0x285 PUSH2 0xC0E JUMP JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xC1D JUMP JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC65 JUMP JUMPDEST PUSH2 0x24B PUSH2 0xC77 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x522 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xC80 JUMP JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCA7 JUMP JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0xCF8 JUMP JUMPDEST PUSH2 0x5B8 PUSH2 0xA69 JUMP JUMPDEST PUSH2 0x5F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x63A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x696E76616C6964207072696365 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x68E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1C1C9A58DA5B99C81A5CC81C185D5CD959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x69B DUP9 DUP9 PUSH2 0xD96 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x6C0 DUP7 PUSH2 0x6B4 DUP8 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x119B AND JUMP JUMPDEST SWAP3 POP DUP3 DUP3 GT ISZERO PUSH2 0x738 JUMPI DUP3 DUP3 SUB PUSH2 0x6EA DUP5 PUSH2 0x6B4 DUP4 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP1 POP DUP5 DUP2 GT ISZERO PUSH2 0x736 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1C1C9A58D948191A5CD859DC99595B595B9D PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x756 DUP5 DUP5 PUSH2 0xD96 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x771 DUP8 DUP8 DUP8 DUP8 PUSH2 0x79B JUMP JUMPDEST POP SWAP1 SWAP3 LT ISZERO SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x7CC JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP1 POP DUP3 PUSH2 0x81B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D8 DUP8 DUP10 PUSH2 0x749 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP1 POP PUSH2 0x7F9 DUP2 PUSH2 0x6B4 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP3 POP PUSH2 0x817 PUSH8 0xDE0B6B3A7640000 PUSH2 0x6B4 DUP8 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST DUP5 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x82A JUMPI POP DUP5 DUP2 LT ISZERO JUMPDEST ISZERO PUSH2 0x865 JUMPI PUSH2 0x85C DUP6 PUSH2 0x6B4 PUSH9 0x56BC75E2D63100000 PUSH2 0x850 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x11DD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP3 POP PUSH2 0x86B SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x87C PUSH2 0xA69 JUMP JUMPDEST PUSH2 0x8BC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP2 EQ PUSH2 0x901 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x97E JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x918 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 PUSH1 0x0 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x938 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP2 DUP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD DUP4 AND DUP5 MSTORE DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD SWAP4 SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP PUSH1 0x1 ADD PUSH2 0x904 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x9AF JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x9B9 JUMP JUMPDEST PUSH2 0x9B9 DUP4 DUP4 PUSH2 0x121F JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9CA PUSH2 0xA69 JUMP JUMPDEST PUSH2 0xA0A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 ISZERO ISZERO EQ PUSH2 0xA57 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xD72570F3E3995824C4448ECA84A22AED922DAB8C58E23E9C5E60E74D0714F7F1 SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA80 PUSH2 0x1389 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xA97 PUSH2 0xA69 JUMP JUMPDEST PUSH2 0xAD7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xBA0 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0xAEE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xFF AND PUSH1 0x5 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0xB75 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE POP DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xADA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xBD2 JUMPI POP DUP1 PUSH2 0x9BC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0xBEC SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x749 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xC05 DUP2 PUSH2 0x6B4 DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xC33 JUMPI POP PUSH1 0x0 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC40 DUP7 DUP7 PUSH2 0xD96 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xC59 DUP2 PUSH2 0x6B4 DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC8F DUP7 DUP7 DUP7 DUP7 PUSH2 0x79B JUMP JUMPDEST POP SWAP2 POP PUSH2 0xC9C DUP6 DUP5 PUSH2 0xBB4 JUMP JUMPDEST SWAP1 POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCAF PUSH2 0xA69 JUMP JUMPDEST PUSH2 0xCEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA57 DUP2 PUSH2 0x138D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xD1C JUMPI POP DUP4 PUSH2 0xD47 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xD29 DUP10 DUP10 PUSH2 0x749 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xD42 DUP2 PUSH2 0x6B4 DUP10 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST PUSH1 0x0 PUSH2 0xD76 PUSH2 0xD69 PUSH9 0x56BC75E2D63100000 PUSH2 0x6B4 DUP6 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x142E AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT PUSH2 0xD86 JUMPI PUSH1 0x0 PUSH2 0xD8A JUMP JUMPDEST DUP1 DUP6 SUB JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xDE7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1C1C9A58DA5B99C81A5CC81C185D5CD959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x112F JUMPI PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0xE2F JUMPI POP PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xF55 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND DUP1 PUSH2 0xE98 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D5B9CDD5C1C1BDC9D1959081CDC98C819995959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEE5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xF10 JUMPI POP PUSH1 0x80 DUP3 SWAP1 SHR ISZERO JUMPDEST PUSH2 0xF4F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x383934B1B29032B93937B9 PUSH1 0xA9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0xF7F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0xF78 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xF7C JUMP JUMPDEST PUSH1 0x6 SLOAD JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0xFAE JUMPI POP PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x10D4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND DUP1 PUSH2 0x1017 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D5B9CDD5C1C1BDC9D195908191CDD0819995959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1050 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1064 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x107A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x108F JUMPI POP PUSH1 0x80 DUP3 SWAP1 SHR ISZERO JUMPDEST PUSH2 0x10CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x383934B1B29032B93937B9 PUSH1 0xA9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0x10FE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0x10F7 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x10FB JUMP JUMPDEST PUSH1 0x6 SLOAD JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x111A DUP2 PUSH2 0x6B4 DUP5 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP4 POP PUSH2 0x1126 DUP7 DUP7 PUSH2 0x121F JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x75B JUMP JUMPDEST POP PUSH8 0xDE0B6B3A7640000 SWAP4 DUP5 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1151 JUMPI POP PUSH1 0x0 PUSH2 0x9BC JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x115E JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x9B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15E7 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9B9 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1488 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B9 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x152A JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x124A JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x9BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x12D3 JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x135C JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x132A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x133E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xFF AND SWAP1 POP JUMPDEST DUP2 DUP2 LT PUSH2 0x137C JUMPI PUSH2 0x1370 PUSH1 0x12 DUP4 DUP4 SUB PUSH2 0x11DD JUMP JUMPDEST PUSH1 0xA EXP SWAP3 POP POP POP PUSH2 0x9BC JUMP JUMPDEST PUSH2 0x1370 PUSH1 0x12 DUP3 DUP5 SUB PUSH2 0x142E JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x13D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15C1 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x9B9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1514 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14D9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14C1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1506 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1520 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x157C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x14D9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14C1 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x15B8 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373536166654D6174683A206D756C746970 PUSH13 0x69636174696F6E206F76657266 PUSH13 0x6F77A265627A7A7231582038BD 0xEE DUP13 0xE4 SELFBALANCE OR SELFBALANCE PUSH4 0x9C489957 0xB7 SWAP10 0xD3 CREATE 0xCA SWAP8 DUP7 RETURNDATASIZE 0xA5 0xE1 PUSH15 0x540C0E84FD50E85764736F6C634300 SDIV GT STOP ORIGIN 0x5F PUSH24 0x72627463546F6B656E41646472657373206E6F7420612063 PUSH16 0x6E74726163745F70726F746F636F6C54 PUSH16 0x6B656E41646472657373206E6F742061 KECCAK256 PUSH4 0x6F6E7472 PUSH2 0x6374 ",
              "sourceMap": "813:13877:43:-;;;1286:12;1247:51;;1331:39;;;-1:-1:-1;;1331:39:43;;;1661:344;5:2:-1;;;;30:1;27;20:12;5:2;1661:344:43;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1661:344:43;;;;;;;;;;;;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;-1:-1:-1;1814:8:43;:20;;1837:2;1814:20;:25;;;-1:-1:-1;;;;;1843:28:43;;1814:20;1843:28;;;1814:20;1843:28;;:33;1880:34;1852:18;-1:-1:-1;;;;;1880:14:43;:34;:::i;:::-;1918:47;1943:21;-1:-1:-1;;;;;1918:24:43;:47;:::i;:::-;1969:32;1983:17;-1:-1:-1;;;;;1969:13:43;:32;:::i;:::-;1661:344;;;813:13877;;780:87:137;853:10;780:87;:::o;791:201:44:-;864:38;883:18;864;;;;;:38;;:::i;:::-;856:84;;;;-1:-1:-1;;;856:84:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;944:10;:44;;-1:-1:-1;;;;;;944:44:44;-1:-1:-1;;;;;944:44:44;;;;;;;;;;791:201::o;1119:220::-;1205:41;1224:21;1205:18;;;;;:41;;:::i;:::-;1197:90;;;;-1:-1:-1;;;1197:90:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1291:20;:44;;-1:-1:-1;;;;;;1291:44:44;-1:-1:-1;;;;;1291:44:44;;;;;;;;;;1119:220::o;1454:195::-;1525:37;1544:17;1525:18;;;;;:37;;:::i;:::-;1517:82;;;;;-1:-1:-1;;;1517:82:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1603:9;:42;;-1:-1:-1;;;;;;1603:42:44;-1:-1:-1;;;;;1603:42:44;;;;;;;;;;1454:195::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;813:13877:43:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101425760003560e01c80638f32d59b116100b8578063d138f9a11161007c578063d138f9a1146104a8578063d449a832146104de578063d601e3ff14610504578063ecc5382d1461050c578063f2fde38b14610548578063f80b25fb1461056e57610142565b80638f32d59b146103f4578063aa2ec710146103fc578063afe840091461046c578063b2cf54ea14610474578063c55dae63146104a057610142565b80632d485c5c1161010a5780632d485c5c1461025f5780632ff0d012146102a15780635034709c146102dd578063524efd4b1461039f5780637c2badb7146103cd5780638da5cb5b146103ec57610142565b806310f54166146101475780631e2c62d31461016657806322340070146101ba57806329d5277c146101c25780632a88770214610209575b600080fd5b6101646004803603602081101561015d57600080fd5b50356105b0565b005b6101a8600480360360a081101561017c57600080fd5b506001600160a01b0381358116916020810135909116906040810135906060810135906080013561063f565b60408051918252519081900360200190f35b6101a8610743565b6101f0600480360360408110156101d857600080fd5b506001600160a01b0381358116916020013516610749565b6040805192835260208301919091528051918290030190f35b61024b600480360360a081101561021f57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135610762565b604080519115158252519081900360200190f35b6102856004803603602081101561027557600080fd5b50356001600160a01b0316610780565b604080516001600160a01b039092168252519081900360200190f35b6101f0600480360360808110156102b757600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561079b565b610164600480360360408110156102f357600080fd5b81019060208101813564010000000081111561030e57600080fd5b82018360208201111561032057600080fd5b8035906020019184602083028401116401000000008311171561034257600080fd5b91939092909160208101903564010000000081111561036057600080fd5b82018360208201111561037257600080fd5b8035906020019184602083028401116401000000008311171561039457600080fd5b509092509050610874565b6101a8600480360360408110156103b557600080fd5b506001600160a01b0381358116916020013516610985565b610164600480360360208110156103e357600080fd5b503515156109c2565b610285610a5a565b61024b610a69565b6101646004803603602081101561041257600080fd5b81019060208101813564010000000081111561042d57600080fd5b82018360208201111561043f57600080fd5b8035906020019184602083028401116401000000008311171561046157600080fd5b509092509050610a8f565b610285610ba5565b6101a86004803603604081101561048a57600080fd5b506001600160a01b038135169060200135610bb4565b610285610c0e565b6101a8600480360360608110156104be57600080fd5b506001600160a01b03813581169160208101359091169060400135610c1d565b6101a8600480360360208110156104f457600080fd5b50356001600160a01b0316610c65565b61024b610c77565b6101f06004803603608081101561052257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610c80565b6101646004803603602081101561055e57600080fd5b50356001600160a01b0316610ca7565b6101a8600480360360a081101561058457600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135610cf8565b6105b8610a69565b6105f8576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b8061063a576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b600655565b60075460009060ff161561068e576040805162461bcd60e51b81526020600482015260116024820152701c1c9a58da5b99c81a5cc81c185d5cd959607a1b604482015290519081900360640190fd5b60008061069b8888610d96565b90925090506106c0866106b4878463ffffffff61114216565b9063ffffffff61119b16565b925082821115610738578282036106ea846106b48368056bc75e2d6310000063ffffffff61114216565b905084811115610736576040805162461bcd60e51b81526020600482015260126024820152711c1c9a58d948191a5cd859dc99595b595b9d60721b604482015290519081900360640190fd5b505b505095945050505050565b60065481565b6000806107568484610d96565b915091505b9250929050565b6000806107718787878761079b565b50909210159695505050505050565b6004602052600090815260409020546001600160a01b031681565b6000806000866001600160a01b0316866001600160a01b031614156107cc5750670de0b6b3a764000090508261081b565b60006107d88789610749565b90935090506107f9816106b485670de0b6b3a764000063ffffffff61114216565b9250610817670de0b6b3a76400006106b4878663ffffffff61114216565b9150505b841580159061082a5750848110155b156108655761085c856106b468056bc75e2d63100000610850858463ffffffff6111dd16565b9063ffffffff61114216565b925061086b9050565b50600091505b94509492505050565b61087c610a69565b6108bc576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b828114610901576040805162461bcd60e51b815260206004820152600e60248201526d0c6deeadce840dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b60005b8381101561097e5782828281811061091857fe5b905060200201356001600160a01b03166004600087878581811061093857fe5b6001600160a01b03602091820293909301358316845283019390935260409091016000208054939091166001600160a01b03199093169290921790915550600101610904565b5050505050565b6000816001600160a01b0316836001600160a01b031614156109af57670de0b6b3a76400006109b9565b6109b9838361121f565b90505b92915050565b6109ca610a69565b610a0a576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60075460ff16151581151514610a57576007805460ff191682151590811790915560405133907fd72570f3e3995824c4448eca84a22aed922dab8c58e23e9c5e60e74d0714f7f190600090a35b50565b6003546001600160a01b031690565b6003546000906001600160a01b0316610a80611389565b6001600160a01b031614905090565b610a97610a69565b610ad7576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60005b81811015610ba057828282818110610aee57fe5b905060200201356001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d6020811015610b6057600080fd5b505160ff1660056000858585818110610b7557fe5b602090810292909201356001600160a01b031683525081019190915260400160002055600101610ada565b505050565b6000546001600160a01b031681565b600080546001600160a01b0384811691161415610bd25750806109bc565b600080548190610bec9086906001600160a01b0316610749565b9092509050610c05816106b4868563ffffffff61114216565b95945050505050565b6001546001600160a01b031681565b60075460009060ff1615610c3357506000610c5e565b600080610c408686610d96565b9092509050610c59816106b4868563ffffffff61114216565b925050505b9392505050565b60056020526000908152604090205481565b60075460ff1681565b600080610c8f8686868661079b565b509150610c9c8584610bb4565b905094509492505050565b610caf610a69565b610cef576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610a578161138d565b600080866001600160a01b0316866001600160a01b03161415610d1c575083610d47565b600080610d298989610749565b9092509050610d42816106b4898563ffffffff61114216565b925050505b6000610d76610d6968056bc75e2d631000006106b4858863ffffffff61114216565b839063ffffffff61142e16565b9050808511610d86576000610d8a565b8085035b98975050505050505050565b600754600090819060ff1615610de7576040805162461bcd60e51b81526020600482015260116024820152701c1c9a58da5b99c81a5cc81c185d5cd959607a1b604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b03161461112f576001546000906001600160a01b03868116911614801590610e2f57506002546001600160a01b03868116911614155b15610f55576001600160a01b038086166000908152600460205260409020541680610e98576040805162461bcd60e51b81526020600482015260146024820152731d5b9cdd5c1c1bdc9d1959081cdc98c81999595960621b604482015290519081900360640190fd5b806001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed157600080fd5b505afa158015610ee5573d6000803e3d6000fd5b505050506040513d6020811015610efb57600080fd5b505191508115801590610f105750608082901c155b610f4f576040805162461bcd60e51b815260206004820152600b60248201526a383934b1b29032b93937b960a91b604482015290519081900360640190fd5b50610f7f565b6002546001600160a01b03868116911614610f7857670de0b6b3a7640000610f7c565b6006545b90505b6001546000906001600160a01b03868116911614801590610fae57506002546001600160a01b03868116911614155b156110d4576001600160a01b038086166000908152600460205260409020541680611017576040805162461bcd60e51b81526020600482015260146024820152731d5b9cdd5c1c1bdc9d195908191cdd081999595960621b604482015290519081900360640190fd5b806001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561105057600080fd5b505afa158015611064573d6000803e3d6000fd5b505050506040513d602081101561107a57600080fd5b50519150811580159061108f5750608082901c155b6110ce576040805162461bcd60e51b815260206004820152600b60248201526a383934b1b29032b93937b960a91b604482015290519081900360640190fd5b506110fe565b6002546001600160a01b038681169116146110f757670de0b6b3a76400006110fb565b6006545b90505b61111a816106b484670de0b6b3a764000063ffffffff61114216565b9350611126868661121f565b9250505061075b565b50670de0b6b3a764000093849350915050565b600082611151575060006109bc565b8282028284828161115e57fe5b04146109b95760405162461bcd60e51b81526004018080602001828103825260218152602001806115e76021913960400191505060405180910390fd5b60006109b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611488565b60006109b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061152a565b6000816001600160a01b0316836001600160a01b0316141561124a5750670de0b6b3a76400006109bc565b6001600160a01b038316600090815260056020526040902054806112d357836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156112a157600080fd5b505afa1580156112b5573d6000803e3d6000fd5b505050506040513d60208110156112cb57600080fd5b505160ff1690505b6001600160a01b0383166000908152600560205260409020548061135c57836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561132a57600080fd5b505afa15801561133e573d6000803e3d6000fd5b505050506040513d602081101561135457600080fd5b505160ff1690505b81811061137c5761137060128383036111dd565b600a0a925050506109bc565b611370601282840361142e565b3390565b6001600160a01b0381166113d25760405162461bcd60e51b81526004018080602001828103825260268152602001806115c16026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000828201838110156109b9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081836115145760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114d95781810151838201526020016114c1565b50505050905090810190601f1680156115065780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161152057fe5b0495945050505050565b6000818484111561157c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156114d95781810151838201526020016114c1565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906115b857508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582038bdee8ce4471747639c489957b799d3f0ca97863da5e16e540c0e84fd50e85764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xD138F9A1 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xD138F9A1 EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0xD449A832 EQ PUSH2 0x4DE JUMPI DUP1 PUSH4 0xD601E3FF EQ PUSH2 0x504 JUMPI DUP1 PUSH4 0xECC5382D EQ PUSH2 0x50C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x548 JUMPI DUP1 PUSH4 0xF80B25FB EQ PUSH2 0x56E JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x3F4 JUMPI DUP1 PUSH4 0xAA2EC710 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0xB2CF54EA EQ PUSH2 0x474 JUMPI DUP1 PUSH4 0xC55DAE63 EQ PUSH2 0x4A0 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x2D485C5C GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x2D485C5C EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0x2FF0D012 EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0x5034709C EQ PUSH2 0x2DD JUMPI DUP1 PUSH4 0x524EFD4B EQ PUSH2 0x39F JUMPI DUP1 PUSH4 0x7C2BADB7 EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3EC JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x10F54166 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x1E2C62D3 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0x22340070 EQ PUSH2 0x1BA JUMPI DUP1 PUSH4 0x29D5277C EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x2A887702 EQ PUSH2 0x209 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5B0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x63F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A8 PUSH2 0x743 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x749 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x762 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x285 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x780 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x79B JUMP JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x372 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x874 JUMP JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x985 JUMP JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x9C2 JUMP JUMPDEST PUSH2 0x285 PUSH2 0xA5A JUMP JUMPDEST PUSH2 0x24B PUSH2 0xA69 JUMP JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xA8F JUMP JUMPDEST PUSH2 0x285 PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBB4 JUMP JUMPDEST PUSH2 0x285 PUSH2 0xC0E JUMP JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xC1D JUMP JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC65 JUMP JUMPDEST PUSH2 0x24B PUSH2 0xC77 JUMP JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x522 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xC80 JUMP JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCA7 JUMP JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0xCF8 JUMP JUMPDEST PUSH2 0x5B8 PUSH2 0xA69 JUMP JUMPDEST PUSH2 0x5F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x63A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x696E76616C6964207072696365 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x68E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1C1C9A58DA5B99C81A5CC81C185D5CD959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x69B DUP9 DUP9 PUSH2 0xD96 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x6C0 DUP7 PUSH2 0x6B4 DUP8 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x119B AND JUMP JUMPDEST SWAP3 POP DUP3 DUP3 GT ISZERO PUSH2 0x738 JUMPI DUP3 DUP3 SUB PUSH2 0x6EA DUP5 PUSH2 0x6B4 DUP4 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP1 POP DUP5 DUP2 GT ISZERO PUSH2 0x736 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1C1C9A58D948191A5CD859DC99595B595B9D PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x756 DUP5 DUP5 PUSH2 0xD96 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x771 DUP8 DUP8 DUP8 DUP8 PUSH2 0x79B JUMP JUMPDEST POP SWAP1 SWAP3 LT ISZERO SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x7CC JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP1 POP DUP3 PUSH2 0x81B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D8 DUP8 DUP10 PUSH2 0x749 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP1 POP PUSH2 0x7F9 DUP2 PUSH2 0x6B4 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP3 POP PUSH2 0x817 PUSH8 0xDE0B6B3A7640000 PUSH2 0x6B4 DUP8 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST DUP5 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x82A JUMPI POP DUP5 DUP2 LT ISZERO JUMPDEST ISZERO PUSH2 0x865 JUMPI PUSH2 0x85C DUP6 PUSH2 0x6B4 PUSH9 0x56BC75E2D63100000 PUSH2 0x850 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x11DD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP3 POP PUSH2 0x86B SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x87C PUSH2 0xA69 JUMP JUMPDEST PUSH2 0x8BC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP2 EQ PUSH2 0x901 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x97E JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x918 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 PUSH1 0x0 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x938 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP2 DUP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD DUP4 AND DUP5 MSTORE DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD SWAP4 SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP PUSH1 0x1 ADD PUSH2 0x904 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x9AF JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x9B9 JUMP JUMPDEST PUSH2 0x9B9 DUP4 DUP4 PUSH2 0x121F JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9CA PUSH2 0xA69 JUMP JUMPDEST PUSH2 0xA0A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 ISZERO ISZERO EQ PUSH2 0xA57 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xD72570F3E3995824C4448ECA84A22AED922DAB8C58E23E9C5E60E74D0714F7F1 SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA80 PUSH2 0x1389 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xA97 PUSH2 0xA69 JUMP JUMPDEST PUSH2 0xAD7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xBA0 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0xAEE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xFF AND PUSH1 0x5 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0xB75 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE POP DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xADA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xBD2 JUMPI POP DUP1 PUSH2 0x9BC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0xBEC SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x749 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xC05 DUP2 PUSH2 0x6B4 DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xC33 JUMPI POP PUSH1 0x0 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC40 DUP7 DUP7 PUSH2 0xD96 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xC59 DUP2 PUSH2 0x6B4 DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC8F DUP7 DUP7 DUP7 DUP7 PUSH2 0x79B JUMP JUMPDEST POP SWAP2 POP PUSH2 0xC9C DUP6 DUP5 PUSH2 0xBB4 JUMP JUMPDEST SWAP1 POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCAF PUSH2 0xA69 JUMP JUMPDEST PUSH2 0xCEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA57 DUP2 PUSH2 0x138D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xD1C JUMPI POP DUP4 PUSH2 0xD47 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xD29 DUP10 DUP10 PUSH2 0x749 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xD42 DUP2 PUSH2 0x6B4 DUP10 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST PUSH1 0x0 PUSH2 0xD76 PUSH2 0xD69 PUSH9 0x56BC75E2D63100000 PUSH2 0x6B4 DUP6 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x142E AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT PUSH2 0xD86 JUMPI PUSH1 0x0 PUSH2 0xD8A JUMP JUMPDEST DUP1 DUP6 SUB JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xDE7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1C1C9A58DA5B99C81A5CC81C185D5CD959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x112F JUMPI PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0xE2F JUMPI POP PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xF55 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND DUP1 PUSH2 0xE98 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D5B9CDD5C1C1BDC9D1959081CDC98C819995959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xED1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEE5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xF10 JUMPI POP PUSH1 0x80 DUP3 SWAP1 SHR ISZERO JUMPDEST PUSH2 0xF4F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x383934B1B29032B93937B9 PUSH1 0xA9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0xF7F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0xF78 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xF7C JUMP JUMPDEST PUSH1 0x6 SLOAD JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0xFAE JUMPI POP PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x10D4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND DUP1 PUSH2 0x1017 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1D5B9CDD5C1C1BDC9D195908191CDD0819995959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1050 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1064 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x107A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x108F JUMPI POP PUSH1 0x80 DUP3 SWAP1 SHR ISZERO JUMPDEST PUSH2 0x10CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x383934B1B29032B93937B9 PUSH1 0xA9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0x10FE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0x10F7 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x10FB JUMP JUMPDEST PUSH1 0x6 SLOAD JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x111A DUP2 PUSH2 0x6B4 DUP5 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x1142 AND JUMP JUMPDEST SWAP4 POP PUSH2 0x1126 DUP7 DUP7 PUSH2 0x121F JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x75B JUMP JUMPDEST POP PUSH8 0xDE0B6B3A7640000 SWAP4 DUP5 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1151 JUMPI POP PUSH1 0x0 PUSH2 0x9BC JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x115E JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x9B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15E7 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9B9 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1488 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B9 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x152A JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x124A JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x9BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x12D3 JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x135C JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x132A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x133E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xFF AND SWAP1 POP JUMPDEST DUP2 DUP2 LT PUSH2 0x137C JUMPI PUSH2 0x1370 PUSH1 0x12 DUP4 DUP4 SUB PUSH2 0x11DD JUMP JUMPDEST PUSH1 0xA EXP SWAP3 POP POP POP PUSH2 0x9BC JUMP JUMPDEST PUSH2 0x1370 PUSH1 0x12 DUP3 DUP5 SUB PUSH2 0x142E JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x13D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15C1 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x9B9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1514 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14D9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14C1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1506 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1520 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x157C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x14D9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14C1 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x15B8 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373536166654D6174683A206D756C746970 PUSH13 0x69636174696F6E206F76657266 PUSH13 0x6F77A265627A7A7231582038BD 0xEE DUP13 0xE4 SELFBALANCE OR SELFBALANCE PUSH4 0x9C489957 0xB7 SWAP10 0xD3 CREATE 0xCA SWAP8 DUP7 RETURNDATASIZE 0xA5 0xE1 PUSH15 0x540C0E84FD50E85764736F6C634300 SDIV GT STOP ORIGIN ",
              "sourceMap": "813:13877:43:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;813:13877:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10595:154;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10595:154:43;;:::i;:::-;;4609:628;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;4609:628:43;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1247:51;;;:::i;2350:162::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2350:162:43;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10096:338;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;10096:338:43;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1060:53;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1060:53:43;-1:-1:-1;;;;;1060:53:43;;:::i;:::-;;;;-1:-1:-1;;;;;1060:53:43;;;;;;;;;;;;;;8785:901;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;8785:901:43;;;;;;;;;;;;;;;;;;;;;;:::i;10963:256::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10963:256:43;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10963:256:43;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10963:256:43;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10963:256:43;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10963:256:43;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10963:256:43;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;10963:256:43;;-1:-1:-1;10963:256:43;-1:-1:-1;10963:256:43;:::i;2830:189::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2830:189:43;;;;;;;;;;:::i;11672:202::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11672:202:43;;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;11376:178:43:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11376:178:43;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;11376:178:43;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11376:178:43;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;11376:178:43;;-1:-1:-1;11376:178:43;-1:-1:-1;11376:178:43;:::i;564:29:44:-;;;:::i;5654:389:43:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5654:389:43;;;;;;;;:::i;596:28:44:-;;;:::i;3557:313:43:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3557:313:43;;;;;;;;;;;;;;;;;:::i;1152:43::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1152:43:43;-1:-1:-1;;;;;1152:43:43;;:::i;1331:39::-;;;:::i;7817:396::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;7817:396:43;;;;;;;;;;;;;;;;;;;;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;6758:637:43:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;6758:637:43;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10595:154::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;10678:13:43;10670:39;;;;;-1:-1:-1;;;10670:39:43;;;;;;;;;;;;-1:-1:-1;;;10670:39:43;;;;;;;;;;;;;;;10713:21;:32;10595:154::o;4609:628::-;4821:19;;4778:28;;4821:19;;4820:20;4812:50;;;;;-1:-1:-1;;;4812:50:43;;;;;;;;;;;;-1:-1:-1;;;4812:50:43;;;;;;;;;;;;;;;4867:12;4881:17;4902:34;4913:11;4926:9;4902:10;:34::i;:::-;4866:70;;-1:-1:-1;4866:70:43;-1:-1:-1;4964:43:43;4994:12;4964:25;:10;4866:70;4964:25;:14;:25;:::i;:::-;:29;:43;:29;:43;:::i;:::-;4941:66;;5023:20;5016:4;:27;5012:222;;;5072:27;;;5118:49;5079:20;5118:23;5072:27;5134:6;5118:23;:15;:23;:::i;:49::-;5104:63;;5195:11;5180;:26;;5172:57;;;;;-1:-1:-1;;;5172:57:43;;;;;;;;;;;;-1:-1:-1;;;5172:57:43;;;;;;;;;;;;;;;5012:222;;4609:628;;;;;;;;;:::o;1247:51::-;;;;:::o;2350:162::-;2430:12;2444:17;2474:34;2485:11;2498:9;2474:10;:34::i;:::-;2467:41;;;;2350:162;;;;;;:::o;10096:338::-;10272:4;10283:21;10310:74;10327:9;10338:15;10355:10;10367:16;10310;:74::i;:::-;-1:-1:-1;;;;10396:34:43;;10096:338;-1:-1:-1;;;;;;10096:338:43:o;1060:53::-;;;;;;;;;;;;-1:-1:-1;;;;;1060:53:43;;:::o;8785:901::-;8933:21;8956:28;8990:30;9047:9;-1:-1:-1;;;;;9028:28:43;:15;-1:-1:-1;;;;;9028:28:43;;9024:439;;;-1:-1:-1;9132:6:43;;-1:-1:-1;9088:16:43;9024:439;;;9154:33;9244:37;9254:15;9271:9;9244;:37::i;:::-;9192:89;;-1:-1:-1;9192:89:43;-1:-1:-1;9310:63:43;9192:89;9310:32;9192:89;9335:6;9310:32;:24;:32;:::i;:63::-;9287:86;-1:-1:-1;9404:54:43;9451:6;9404:42;:16;9287:86;9404:42;:20;:42;:::i;:54::-;9379:79;;9024:439;;9471:15;;;;;:55;;;9516:10;9490:22;:36;;9471:55;9467:216;;;9541:66;9596:10;9541:50;9584:6;9541:38;:22;9596:10;9541:38;:26;:38;:::i;:::-;:42;:50;:42;:50;:::i;:66::-;9533:97;-1:-1:-1;9533:97:43;;-1:-1:-1;9533:97:43;9467:216;-1:-1:-1;9654:1:43;;-1:-1:-1;8785:901:43;;;;;;;;:::o;10963:256::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;11076:29:43;;;11068:56;;;;;-1:-1:-1;;;11068:56:43;;;;;;;;;;;;-1:-1:-1;;;11068:56:43;;;;;;;;;;;;;;;11134:9;11129:87;11149:17;;;11129:87;;;11203:5;;11209:1;11203:8;;;;;;;;;;;;;-1:-1:-1;;;;;11203:8:43;11178:11;:22;11190:6;;11197:1;11190:9;;;;;;;-1:-1:-1;;;;;11190:9:43;;;;;;;;;;;11178:22;;;;;;;;;;;;-1:-1:-1;11178:22:43;:33;;;;;;-1:-1:-1;;;;;;11178:33:43;;;;;;;;;;-1:-1:-1;11178:33:43;11168:3;11129:87;;;;10963:256;;;;:::o;2830:189::-;2915:7;2950:9;-1:-1:-1;;;;;2935:24:43;:11;-1:-1:-1;;;;;2935:24:43;;;:80;;3009:6;2935:80;;;2962:44;2983:11;2996:9;2962:20;:44::i;:::-;2928:87;;2830:189;;;;;:::o;11672:202::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;11746:19:43;;;;:31;;;;;;11742:129;;11784:19;:30;;-1:-1:-1;;11784:30:43;;;;;;;;;;11825:41;;11845:10;;11825:41;;-1:-1:-1;;11825:41:43;11742:129;11672:202;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;11376:178:43:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;11451:9:43;11446:105;11466:17;;;11446:105;;;11526:6;;11533:1;11526:9;;;;;;;;;;;;;-1:-1:-1;;;;;11526:9:43;-1:-1:-1;;;;;11526:18:43;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11526:20:43;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11526:20:43;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11526:20:43;11495:51;;:8;:28;11512:6;;11519:1;11512:9;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11512:9:43;11495:28;;-1:-1:-1;11495:28:43;;;;;;;;-1:-1:-1;11495:28:43;:51;11485:3;;11446:105;;;;11376:178;;:::o;564:29:44:-;;;-1:-1:-1;;;;;564:29:44;;:::o;5654:389:43:-;5734:17;5835:10;;-1:-1:-1;;;;;5811:35:43;;;5835:10;;5811:35;5807:233;;;-1:-1:-1;5865:6:43;5807:233;;;5888:17;5965:10;;5888:17;;5933:44;;5943:12;;-1:-1:-1;;;;;5965:10:43;5933:9;:44::i;:::-;5887:90;;-1:-1:-1;5887:90:43;-1:-1:-1;5994:41:43;5887:90;5994:21;:6;5887:90;5994:21;:10;:21;:::i;:41::-;5982:53;5654:389;-1:-1:-1;;;;;5654:389:43:o;596:28:44:-;;;-1:-1:-1;;;;;596:28:44;;:::o;3557:313:43:-;3698:19;;3670:18;;3698:19;;3694:43;;;-1:-1:-1;3731:1:43;3724:8;;3694:43;3742:12;3756:17;3777:34;3788:11;3801:9;3777:10;:34::i;:::-;3741:70;;-1:-1:-1;3741:70:43;-1:-1:-1;3829:37:43;3741:70;3829:22;:12;3741:70;3829:22;:16;:22;:::i;:37::-;3816:50;;3557:313;;;;;;;;:::o;1152:43::-;;;;;;;;;;;;;:::o;1331:39::-;;;;;;:::o;7817:396::-;7982:21;8005:29;8060:74;8077:9;8088:15;8105:10;8117:16;8060;:74::i;:::-;-1:-1:-1;8040:94:43;-1:-1:-1;8163:46:43;8175:15;8192:16;8163:11;:46::i;:::-;8139:70;;7817:396;;;;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;6758:637:43:-;6922:19;6947:30;7004:9;-1:-1:-1;;;;;6985:28:43;:15;-1:-1:-1;;;;;6985:28:43;;6981:233;;;-1:-1:-1;7045:10:43;6981:233;;;7072:12;7086:17;7107:37;7117:9;7128:15;7107:9;:37::i;:::-;7071:73;;-1:-1:-1;7071:73:43;-1:-1:-1;7174:35:43;7071:73;7174:20;:10;7071:73;7174:20;:14;:20;:::i;:35::-;7149:60;;6981:233;;;7218:16;7237:74;7264:46;7303:6;7264:34;:22;7291:6;7264:34;:26;:34;:::i;:46::-;7237:22;;:74;:26;:74;:::i;:::-;7218:93;;7349:8;7330:16;:27;:61;;7390:1;7330:61;;;7379:8;7360:16;:27;7330:61;7316:75;6758:637;-1:-1:-1;;;;;;;;6758:637:43:o;12190:1485::-;12319:19;;12273:12;;;;12319:19;;12318:20;12310:50;;;;;-1:-1:-1;;;12310:50:43;;;;;;;;;;;;-1:-1:-1;;;12310:50:43;;;;;;;;;;;;;;;12443:9;-1:-1:-1;;;;;12428:24:43;:11;-1:-1:-1;;;;;12428:24:43;;12424:1248;;12509:9;;12459:18;;-1:-1:-1;;;;;12486:33:43;;;12509:9;;12486:33;;;;:72;;-1:-1:-1;12538:20:43;;-1:-1:-1;;;;;12523:35:43;;;12538:20;;12523:35;;12486:72;12482:487;;;-1:-1:-1;;;;;12595:24:43;;;12566:26;12595:24;;;:11;:24;;;;;;;12633:34;12625:67;;;;;-1:-1:-1;;;12625:67:43;;;;;;;;;;;;-1:-1:-1;;;12625:67:43;;;;;;;;;;;;;;;12765:11;-1:-1:-1;;;;;12765:24:43;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12765:26:43;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12765:26:43;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12765:26:43;;-1:-1:-1;12805:15:43;;;;;:43;;-1:-1:-1;12839:3:43;12825:17;;;12824:24;12805:43;12797:67;;;;;-1:-1:-1;;;12797:67:43;;;;;;;;;;;;-1:-1:-1;;;12797:67:43;;;;;;;;;;;;;;;12482:487;;;;12910:20;;-1:-1:-1;;;;;12895:35:43;;;12910:20;;12895:35;:68;;12957:6;12895:68;;;12933:21;;12895:68;12882:81;;12482:487;13020:9;;12974:16;;-1:-1:-1;;;;;12999:31:43;;;13020:9;;12999:31;;;;:68;;-1:-1:-1;13047:20:43;;-1:-1:-1;;;;;13034:33:43;;;13047:20;;13034:33;;12999:68;12995:465;;;-1:-1:-1;;;;;13102:22:43;;;13075:24;13102:22;;;:11;:22;;;;;;;13138:32;13130:65;;;;;-1:-1:-1;;;13130:65:43;;;;;;;;;;;;-1:-1:-1;;;13130:65:43;;;;;;;;;;;;;;;13266:9;-1:-1:-1;;;;;13266:22:43;;:24;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13266:24:43;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13266:24:43;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13266:24:43;;-1:-1:-1;13304:13:43;;;;;:39;;-1:-1:-1;13334:3:43;13322:15;;;13321:22;13304:39;13296:63;;;;;-1:-1:-1;;;13296:63:43;;;;;;;;;;;;-1:-1:-1;;;13296:63:43;;;;;;;;;;;;;;;12995:465;;;;13401:20;;-1:-1:-1;;;;;13388:33:43;;;13401:20;;13388:33;:66;;13448:6;13388:66;;;13424:21;;13388:66;13377:77;;12995:465;13472:36;13499:8;13472:22;:10;13487:6;13472:22;:14;:22;:::i;:36::-;13465:43;;13526:44;13547:11;13560:9;13526:20;:44::i;:::-;13514:56;;12424:1248;;;;;-1:-1:-1;13638:6:43;;;;-1:-1:-1;12190:1485:43;-1:-1:-1;;12190:1485:43:o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2817:121;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;1201:125::-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;13921:767:43:-;14014:7;14089:9;-1:-1:-1;;;;;14074:24:43;:11;-1:-1:-1;;;;;14074:24:43;;14070:615;;;-1:-1:-1;14112:6:43;14105:13;;14070:615;-1:-1:-1;;;;;14236:21:43;;14206:27;14236:21;;;:8;:21;;;;;;14266:24;14262:82;;14321:11;-1:-1:-1;;;;;14314:28:43;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14314:30:43;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14314:30:43;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14314:30:43;14292:52;;;-1:-1:-1;14262:82:43;-1:-1:-1;;;;;14378:19:43;;14350:25;14378:19;;;:8;:19;;;;;;14406:22;14402:76;;14457:9;-1:-1:-1;;;;;14450:26:43;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14450:28:43;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14450:28:43;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14450:28:43;14430:48;;;-1:-1:-1;14402:76:43;14509:19;14488:17;:40;14484:196;;14542:57;14555:2;14579:19;14559:17;:39;14542:12;:57::i;:::-;14537:2;:63;14530:70;;;;;;14484:196;14622:57;14635:2;14661:17;14639:19;:39;14622:12;:57::i;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;3411:315;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1614:175::-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1722:29:145;-1:-1:-1;;;1767:5:145;;;1614:175::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o"
            },
            "methodIdentifiers": {
              "amountInEth(address,uint256)": "b2cf54ea",
              "baseToken()": "c55dae63",
              "checkPriceDisagreement(address,address,uint256,uint256,uint256)": "1e2c62d3",
              "decimals(address)": "d449a832",
              "getCurrentMargin(address,address,uint256,uint256)": "2ff0d012",
              "getCurrentMarginAndCollateralSize(address,address,uint256,uint256)": "ecc5382d",
              "getMaxDrawdown(address,address,uint256,uint256,uint256)": "f80b25fb",
              "globalPricingPaused()": "d601e3ff",
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "pricesFeeds(address)": "2d485c5c",
              "protocolTokenEthPrice()": "22340070",
              "queryPrecision(address,address)": "524efd4b",
              "queryRate(address,address)": "29d5277c",
              "queryReturn(address,address,uint256)": "d138f9a1",
              "setDecimals(address[])": "aa2ec710",
              "setGlobalPricingPaused(bool)": "7c2badb7",
              "setPriceFeed(address[],address[])": "5034709c",
              "setProtocolTokenEthPrice(uint256)": "10f54166",
              "shouldLiquidate(address,address,uint256,uint256,uint256)": "2a887702",
              "transferOwnership(address)": "f2fde38b",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "amountInEth(address,uint256)": {
                "notice": "Calculate the rBTC amount equivalent to a given token amount. Native coin on RSK is rBTC. This code comes from Ethereum applications, so Eth refers to 10**18 weis of native coin, i.e.: 1 rBTC."
              },
              "checkPriceDisagreement(address,address,uint256,uint256,uint256)": {
                "notice": "Calculate the swap rate between two tokens.\t * Regarding slippage, there is a hardcoded slippage limit of 5%, enforced by this function for all borrowing, lending and margin trading originated swaps performed in the Sovryn exchange.\t * This means all operations in the Sovryn exchange are subject to losing up to 5% from the internal swap performed."
              },
              "constructor": "Contract deployment requires 3 parameters.",
              "getCurrentMargin(address,address,uint256,uint256)": {
                "notice": "Calculate the margin of a loan."
              },
              "getCurrentMarginAndCollateralSize(address,address,uint256,uint256)": {
                "notice": "Calculate the margin and the collateral on rBTC."
              },
              "getMaxDrawdown(address,address,uint256,uint256,uint256)": {
                "notice": "Calculate the maximum drawdown of a loan.\t * A drawdown is commonly defined as the decline from a high peak to a pullback low of a specific investment or equity in an account.\t * Drawdown magnitude refers to the amount of value that a user loses during the drawdown period."
              },
              "queryPrecision(address,address)": {
                "notice": "Calculate the relative precision between two tokens."
              },
              "queryRate(address,address)": {
                "notice": "Calculate the price ratio between two tokens."
              },
              "queryReturn(address,address,uint256)": {
                "notice": "Price conversor: Calculate the price of an amount of source tokens in destiny token units."
              },
              "setDecimals(address[])": {
                "notice": "Populate decimals mapping w/ values from tokens[].decimals"
              },
              "setGlobalPricingPaused(bool)": {
                "notice": "Set flag globalPricingPaused"
              },
              "setPriceFeed(address[],address[])": {
                "notice": "Populate pricesFeeds mapping w/ values from feeds[]"
              },
              "setProtocolTokenEthPrice(uint256)": {
                "notice": "Set new value for protocolTokenEthPrice"
              },
              "shouldLiquidate(address,address,uint256,uint256,uint256)": {
                "notice": "Get assessment about liquidating a loan."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract queries the price feeds contracts where oracles updates token prices computing relative token prices. And besides it includes some calculations about loans such as drawdown, margin and collateral."
          }
        }
      },
      "contracts/feeds/PriceFeedsConstants.sol": {
        "Constants": {
          "abi": [
            {
              "constant": true,
              "inputs": [],
              "name": "baseToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {},
            "title": "The Price Feeds Constants contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b5060b28061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063afe84009146037578063c55dae63146059575b600080fd5b603d605f565b604080516001600160a01b039092168252519081900360200190f35b603d606e565b6000546001600160a01b031681565b6001546001600160a01b03168156fea265627a7a7231582000c047bff4d444128d81b3b84c150980704d8b588d627380606f0f4f8ca81abf64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xB2 DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAFE84009 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xC55DAE63 EQ PUSH1 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x5F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x6E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 STOP 0xC0 SELFBALANCE 0xBF DELEGATECALL 0xD4 DIFFICULTY SLT DUP14 DUP2 0xB3 0xB8 0x4C ISZERO MULMOD DUP1 PUSH17 0x4D8B588D627380606F0F4F8CA81ABF6473 PUSH16 0x6C634300051100320000000000000000 ",
              "sourceMap": "542:1109:44:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;542:1109:44;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b506004361060325760003560e01c8063afe84009146037578063c55dae63146059575b600080fd5b603d605f565b604080516001600160a01b039092168252519081900360200190f35b603d606e565b6000546001600160a01b031681565b6001546001600160a01b03168156fea265627a7a7231582000c047bff4d444128d81b3b84c150980704d8b588d627380606f0f4f8ca81abf64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAFE84009 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xC55DAE63 EQ PUSH1 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x5F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x6E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 STOP 0xC0 SELFBALANCE 0xBF DELEGATECALL 0xD4 DIFFICULTY SLT DUP14 DUP2 0xB3 0xB8 0x4C ISZERO MULMOD DUP1 PUSH17 0x4D8B588D627380606F0F4F8CA81ABF6473 PUSH16 0x6C634300051100320000000000000000 ",
              "sourceMap": "542:1109:44:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;542:1109:44;;;;;;;;;;;;;;;;;;;;;;;;564:29;;;:::i;:::-;;;;-1:-1:-1;;;;;564:29:44;;;;;;;;;;;;;;596:28;;;:::i;564:29::-;;;-1:-1:-1;;;;;564:29:44;;:::o;596:28::-;;;-1:-1:-1;;;;;596:28:44;;:::o"
            },
            "methodIdentifiers": {
              "baseToken()": "c55dae63",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract keep the addresses of token instances for wrBTC, base token and protocol token."
          }
        }
      },
      "contracts/feeds/USDTPriceFeed.sol": {
        "USDTPriceFeed": {
          "abi": [
            {
              "constant": true,
              "inputs": [],
              "name": "latestAnswer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "latestTimestamp",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "latestAnswer()": {
                "return": "Always returns the trivial rate of 1."
              },
              "latestTimestamp()": {
                "return": "Always trivial current block's timestamp."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50609a8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806350d25bcd1460375780638205bf6a14604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d6061565b670de0b6b3a764000090565b429056fea265627a7a72315820feb6a41dfbcf7f582ee8a01643b8fd1575f14507cf637dce71a499fcb632223864736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x9A DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x50D25BCD EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x8205BF6A EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x55 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x61 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 INVALID 0xB6 LOG4 SAR 0xFB 0xCF PUSH32 0x582EE8A01643B8FD1575F14507CF637DCE71A499FCB632223864736F6C634300 SDIV GT STOP ORIGIN ",
              "sourceMap": "260:468:45:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;260:468:45;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b506004361060325760003560e01c806350d25bcd1460375780638205bf6a14604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d6061565b670de0b6b3a764000090565b429056fea265627a7a72315820feb6a41dfbcf7f582ee8a01643b8fd1575f14507cf637dce71a499fcb632223864736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x50D25BCD EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x8205BF6A EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x55 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3D PUSH1 0x61 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 INVALID 0xB6 LOG4 SAR 0xFB 0xCF PUSH32 0x582EE8A01643B8FD1575F14507CF637DCE71A499FCB632223864736F6C634300 SDIV GT STOP ORIGIN ",
              "sourceMap": "260:468:45:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;260:468:45;;;;;;;;;;;;;;;;;;;;;;;;450:80;;;:::i;:::-;;;;;;;;;;;;;;;;649:77;;;:::i;450:80::-;341:7;450:80;:::o;649:77::-;719:3;649:77;:::o"
            },
            "methodIdentifiers": {
              "latestAnswer()": "50d25bcd",
              "latestTimestamp()": "8205bf6a"
            }
          },
          "userdoc": {
            "methods": {
              "latestAnswer()": {
                "notice": "Get the USDT price."
              },
              "latestTimestamp()": {
                "notice": "Get the las time the price was updated."
              }
            },
            "notice": "The Price Feed USDT contract. * This contract implements USDT query functionality, getting the price and the last timestamp from a trivial formula, always returning 1 and now."
          }
        }
      },
      "contracts/feeds/testnet/PriceFeedsLocal.sol": {
        "PriceFeedsLocal": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_wrbtcTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_protocolTokenAddress",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "name": "GlobalPricingPaused",
              "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"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "amountInEth",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "ethAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxSlippage",
                  "type": "uint256"
                }
              ],
              "name": "checkPriceDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "sourceToDestSwapRate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                }
              ],
              "name": "getCurrentMargin",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                }
              ],
              "name": "getCurrentMarginAndCollateralSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralInEthAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "margin",
                  "type": "uint256"
                }
              ],
              "name": "getMaxDrawdown",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxDrawdown",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "globalPricingPaused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "pricesFeeds",
              "outputs": [
                {
                  "internalType": "contract IPriceFeedsExt",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenEthPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                }
              ],
              "name": "queryPrecision",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                }
              ],
              "name": "queryRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "rate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "precision",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                }
              ],
              "name": "queryReturn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "rates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "tokens",
                  "type": "address[]"
                }
              ],
              "name": "setDecimals",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "name": "setGlobalPricingPaused",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "contract IPriceFeedsExt[]",
                  "name": "feeds",
                  "type": "address[]"
                }
              ],
              "name": "setPriceFeed",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newPrice",
                  "type": "uint256"
                }
              ],
              "name": "setProtocolTokenEthPrice",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "rate",
                  "type": "uint256"
                }
              ],
              "name": "setRates",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                }
              ],
              "name": "shouldLiquidate",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "amountInEth(address,uint256)": {
                "params": {
                  "amount": "The amount of tokens to calculate price.",
                  "tokenAddress": "The address of the token to calculate price."
                },
                "return": "ethAmount The amount of rBTC equivalent."
              },
              "checkPriceDisagreement(address,address,uint256,uint256,uint256)": {
                "params": {
                  "destAmount": "The amount of destiny tokens.",
                  "destToken": "The address of the destiny tokens.",
                  "maxSlippage": "The maximum slippage limit.",
                  "sourceAmount": "The amount of source tokens.",
                  "sourceToken": "The address of the source tokens."
                },
                "return": "sourceToDestSwapRate The swap rate between tokens."
              },
              "constructor": {
                "params": {
                  "_protocolTokenAddress": "The address of the protocol token instance.",
                  "_wrbtcTokenAddress": "The address of the wrBTC instance."
                }
              },
              "getCurrentMargin(address,address,uint256,uint256)": {
                "details": "current margin = (total position size - loan) / loan The collateral amount passed as parameter equals the total position size.",
                "params": {
                  "collateralAmount": "The amount of the collateral.",
                  "collateralToken": "The address of the collateral token.",
                  "loanAmount": "The amount of the loan.",
                  "loanToken": "The address of the loan token."
                },
                "return": "currentMargin The margin of the loan.collateralToLoanRate The price ratio between collateral and  loan tokens."
              },
              "getCurrentMarginAndCollateralSize(address,address,uint256,uint256)": {
                "params": {
                  "collateralAmount": "The amount of the collateral.",
                  "collateralToken": "The address of the collateral token.",
                  "loanAmount": "The amount of the loan.",
                  "loanToken": "The address of the loan token."
                },
                "return": "currentMargin The margin of the loan.collateralInEthAmount The amount of collateral on rBTC."
              },
              "getMaxDrawdown(address,address,uint256,uint256,uint256)": {
                "params": {
                  "collateralAmount": "The amount of the collateral.",
                  "collateralToken": "The address of the collateral token.",
                  "loanAmount": "The amount of the loan.",
                  "loanToken": "The address of the loan token.",
                  "margin": "The relation between the position size and the loan.  margin = (total position size - loan) / loan"
                },
                "return": "maxDrawdown The maximum drawdown."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "queryPrecision(address,address)": {
                "details": "Public wrapper for _getDecimalPrecision internal function.",
                "params": {
                  "destToken": "The address of the destiny tokens.",
                  "sourceToken": "The address of the source tokens."
                },
                "return": "The precision ratio source/dest."
              },
              "queryRate(address,address)": {
                "details": "Public wrapper for _queryRate internal function.",
                "params": {
                  "destToken": "The address of the destiny tokens.",
                  "sourceToken": "The address of the source tokens."
                },
                "return": "rate The price ratio source/dest.precision The ratio precision."
              },
              "queryReturn(address,address,uint256)": {
                "details": "NOTE: This function returns 0 during a pause, rather than a revert. Ensure calling contracts handle correctly.",
                "params": {
                  "destToken": "The address of the destiny tokens.",
                  "sourceAmount": "The amount of the source tokens.",
                  "sourceToken": "The address of the source tokens."
                },
                "return": "destAmount The amount of destiny tokens equivalent in price  to the amount of source tokens."
              },
              "setDecimals(address[])": {
                "params": {
                  "tokens": "The array of tokens to loop and get values from."
                }
              },
              "setGlobalPricingPaused(bool)": {
                "params": {
                  "isPaused": "The new status of pause (true/false)."
                }
              },
              "setPriceFeed(address[],address[])": {
                "params": {
                  "feeds": "The array of contract instances for every token.",
                  "tokens": "The array of tokens to loop and get addresses."
                }
              },
              "setProtocolTokenEthPrice(uint256)": {
                "params": {
                  "newPrice": "The new value for protocolTokenEthPrice"
                }
              },
              "setRates(address,address,uint256)": {
                "params": {
                  "destToken": "The address of the destiny tokens.",
                  "rate": "The price ratio source/dest.",
                  "sourceToken": "The address of the source tokens."
                }
              },
              "shouldLiquidate(address,address,uint256,uint256,uint256)": {
                "params": {
                  "collateralAmount": "The amount of the collateral.",
                  "collateralToken": "The address of the collateral token.",
                  "loanAmount": "The amount of the loan.",
                  "loanToken": "The address of the loan token.",
                  "maintenanceMargin": "The minimum margin before liquidation."
                },
                "return": "True/false to liquidate the loan."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Price Feeds Local contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405265b5e620f480006006556007805460ff191690553480156200002557600080fd5b506040516200196938038062001969833981810160405260408110156200004b57600080fd5b50805160209091015181818160006200006c6001600160e01b036200014016565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600560205260127f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc8190556001600160a01b038416600090815260409020556200010d836001600160e01b036200014416565b62000121826001600160e01b03620001b916565b62000135816001600160e01b036200022e16565b5050505050620002f5565b3390565b6200015a81620002b860201b620015671760201c565b620001975760405162461bcd60e51b8152600401808060200182810382526021815260200180620019246021913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b620001cf81620002b860201b620015671760201c565b6200020c5760405162461bcd60e51b8152600401808060200182810382526024815260200180620019456024913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6200024481620002b860201b620015671760201c565b62000296576040805162461bcd60e51b815260206004820181905260248201527f5f62617365546f6b656e41646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590620002ed57508115155b949350505050565b61161f80620003056000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80638da5cb5b116100c3578063d138f9a11161007c578063d138f9a114610522578063d449a83214610558578063d601e3ff1461057e578063ecc5382d14610586578063f2fde38b146105c2578063f80b25fb146105e857610158565b80638da5cb5b146104665780638f32d59b1461046e578063aa2ec71014610476578063afe84009146104e6578063b2cf54ea146104ee578063c55dae631461051a57610158565b80632ff0d012116101155780632ff0d012146102b7578063502fad5f146102f35780635034709c14610329578063524efd4b146103eb5780637b0cf44d146104195780637c2badb71461044757610158565b806310f541661461015d5780631e2c62d31461017c57806322340070146101d057806329d5277c146101d85780632a8877021461021f5780632d485c5c14610275575b600080fd5b61017a6004803603602081101561017357600080fd5b503561062a565b005b6101be600480360360a081101561019257600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356106b9565b60408051918252519081900360200190f35b6101be6107bd565b610206600480360360408110156101ee57600080fd5b506001600160a01b03813581169160200135166107c3565b6040805192835260208301919091528051918290030190f35b610261600480360360a081101561023557600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356107dc565b604080519115158252519081900360200190f35b61029b6004803603602081101561028b57600080fd5b50356001600160a01b03166107fa565b604080516001600160a01b039092168252519081900360200190f35b610206600480360360808110156102cd57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610815565b61017a6004803603606081101561030957600080fd5b506001600160a01b038135811691602081013590911690604001356108ee565b61017a6004803603604081101561033f57600080fd5b81019060208101813564010000000081111561035a57600080fd5b82018360208201111561036c57600080fd5b8035906020019184602083028401116401000000008311171561038e57600080fd5b9193909290916020810190356401000000008111156103ac57600080fd5b8201836020820111156103be57600080fd5b803590602001918460208302840111640100000000831117156103e057600080fd5b5090925090506109bc565b6101be6004803603604081101561040157600080fd5b506001600160a01b0381358116916020013516610acd565b6101be6004803603604081101561042f57600080fd5b506001600160a01b0381358116916020013516610b0a565b61017a6004803603602081101561045d57600080fd5b50351515610b27565b61029b610bbf565b610261610bce565b61017a6004803603602081101561048c57600080fd5b8101906020810181356401000000008111156104a757600080fd5b8201836020820111156104b957600080fd5b803590602001918460208302840111640100000000831117156104db57600080fd5b509092509050610bf4565b61029b610d05565b6101be6004803603604081101561050457600080fd5b506001600160a01b038135169060200135610d14565b61029b610d6e565b6101be6004803603606081101561053857600080fd5b506001600160a01b03813581169160208101359091169060400135610d7d565b6101be6004803603602081101561056e57600080fd5b50356001600160a01b0316610dc5565b610261610dd7565b6102066004803603608081101561059c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610de0565b61017a600480360360208110156105d857600080fd5b50356001600160a01b0316610e07565b6101be600480360360a08110156105fe57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135610e58565b610632610bce565b610672576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b806106b4576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b600655565b60075460009060ff1615610708576040805162461bcd60e51b81526020600482015260116024820152701c1c9a58da5b99c81a5cc81c185d5cd959607a1b604482015290519081900360640190fd5b6000806107158888610ef6565b909250905061073a8661072e878463ffffffff61112516565b9063ffffffff61117e16565b9250828211156107b2578282036107648461072e8368056bc75e2d6310000063ffffffff61112516565b9050848111156107b0576040805162461bcd60e51b81526020600482015260126024820152711c1c9a58d948191a5cd859dc99595b595b9d60721b604482015290519081900360640190fd5b505b505095945050505050565b60065481565b6000806107d08484610ef6565b915091505b9250929050565b6000806107eb87878787610815565b50909210159695505050505050565b6004602052600090815260409020546001600160a01b031681565b6000806000866001600160a01b0316866001600160a01b031614156108465750670de0b6b3a7640000905082610895565b600061085287896107c3565b90935090506108738161072e85670de0b6b3a764000063ffffffff61112516565b9250610891670de0b6b3a764000061072e878663ffffffff61112516565b9150505b84158015906108a45750848110155b156108df576108d68561072e68056bc75e2d631000006108ca858463ffffffff6111c016565b9063ffffffff61112516565b92506108e59050565b50600091505b94509492505050565b6108f6610bce565b610936576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b0316146109b7576001600160a01b0380841660009081526008602090815260408083209386168352929052208190556109906ec097ce7bc90715b34b9f10000000008261117e565b6001600160a01b038084166000908152600860209081526040808320938816835292905220555b505050565b6109c4610bce565b610a04576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b828114610a49576040805162461bcd60e51b815260206004820152600e60248201526d0c6deeadce840dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b60005b83811015610ac657828282818110610a6057fe5b905060200201356001600160a01b031660046000878785818110610a8057fe5b6001600160a01b03602091820293909301358316845283019390935260409091016000208054939091166001600160a01b03199093169290921790915550600101610a4c565b5050505050565b6000816001600160a01b0316836001600160a01b03161415610af757670de0b6b3a7640000610b01565b610b018383611202565b90505b92915050565b600860209081526000928352604080842090915290825290205481565b610b2f610bce565b610b6f576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60075460ff16151581151514610bbc576007805460ff191682151590811790915560405133907fd72570f3e3995824c4448eca84a22aed922dab8c58e23e9c5e60e74d0714f7f190600090a35b50565b6003546001600160a01b031690565b6003546000906001600160a01b0316610be561136c565b6001600160a01b031614905090565b610bfc610bce565b610c3c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60005b818110156109b757828282818110610c5357fe5b905060200201356001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9b57600080fd5b505afa158015610caf573d6000803e3d6000fd5b505050506040513d6020811015610cc557600080fd5b505160ff1660056000858585818110610cda57fe5b602090810292909201356001600160a01b031683525081019190915260400160002055600101610c3f565b6000546001600160a01b031681565b600080546001600160a01b0384811691161415610d32575080610b04565b600080548190610d4c9086906001600160a01b03166107c3565b9092509050610d658161072e868563ffffffff61112516565b95945050505050565b6001546001600160a01b031681565b60075460009060ff1615610d9357506000610dbe565b600080610da08686610ef6565b9092509050610db98161072e868563ffffffff61112516565b925050505b9392505050565b60056020526000908152604090205481565b60075460ff1681565b600080610def86868686610815565b509150610dfc8584610d14565b905094509492505050565b610e0f610bce565b610e4f576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610bbc81611370565b600080866001600160a01b0316866001600160a01b03161415610e7c575083610ea7565b600080610e8989896107c3565b9092509050610ea28161072e898563ffffffff61112516565b925050505b6000610ed6610ec968056bc75e2d6310000061072e858863ffffffff61112516565b839063ffffffff61141116565b9050808511610ee6576000610eea565b8085035b98975050505050505050565b600754600090819060ff1615610f47576040805162461bcd60e51b81526020600482015260116024820152701c1c9a58da5b99c81a5cc81c185d5cd959607a1b604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b03161415610f735750670de0b6b3a76400009050806107d5565b6002546001600160a01b0385811691161415610f93576006549150611112565b6002546001600160a01b0384811691161415610fcb57610fc46ec097ce7bc90715b34b9f100000000060065461117e565b9150611112565b6001600160a01b0380851660009081526008602090815260408083209387168352929052205415611023576001600160a01b038085166000908152600860209081526040808320938716835292905220549150611112565b6001600160a01b038085166000908152600860209081526040808320835490941683529290529081205461105f57670de0b6b3a7640000611088565b6001600160a01b0380861660009081526008602090815260408083208354909416835292905220545b600080546001600160a01b0390811682526008602090815260408084209289168452919052812054919250906110c657670de0b6b3a76400006110ef565b600080546001600160a01b03908116825260086020908152604080842092891684529190529020545b905061110d670de0b6b3a764000061072e848463ffffffff61112516565b935050505b61111c8484611202565b90509250929050565b60008261113457506000610b04565b8282028284828161114157fe5b0414610b015760405162461bcd60e51b81526004018080602001828103825260218152602001806115ca6021913960400191505060405180910390fd5b6000610b0183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061146b565b6000610b0183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061150d565b6000816001600160a01b0316836001600160a01b0316141561122d5750670de0b6b3a7640000610b04565b6001600160a01b038316600090815260056020526040902054806112b657836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561128457600080fd5b505afa158015611298573d6000803e3d6000fd5b505050506040513d60208110156112ae57600080fd5b505160ff1690505b6001600160a01b0383166000908152600560205260409020548061133f57836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561130d57600080fd5b505afa158015611321573d6000803e3d6000fd5b505050506040513d602081101561133757600080fd5b505160ff1690505b81811061135f5761135360128383036111c0565b600a0a92505050610b04565b6113536012828403611411565b3390565b6001600160a01b0381166113b55760405162461bcd60e51b81526004018080602001828103825260268152602001806115a46026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015610b01576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081836114f75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114bc5781810151838201526020016114a4565b50505050905090810190601f1680156114e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161150357fe5b0495945050505050565b6000818484111561155f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156114bc5781810151838201526020016114a4565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061159b57508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158205f9614dfb69c67b5e776f639c8305e4c3ee4a54c421f908c474a072d8a25679364736f6c634300051100325f7772627463546f6b656e41646472657373206e6f74206120636f6e74726163745f70726f746f636f6c546f6b656e41646472657373206e6f74206120636f6e7472616374",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH6 0xB5E620F48000 PUSH1 0x6 SSTORE PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1969 CODESIZE SUB DUP1 PUSH3 0x1969 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD DUP2 DUP2 DUP2 PUSH1 0x0 PUSH3 0x6C PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x140 AND JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x12 PUSH32 0x5B8CCBB9D4D8FB16EA74CE3C29A41F1B461FBDAFF4714A0D9A8EB05499746BC DUP2 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH3 0x10D DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x144 AND JUMP JUMPDEST PUSH3 0x121 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x1B9 AND JUMP JUMPDEST PUSH3 0x135 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x22E AND JUMP JUMPDEST POP POP POP POP POP PUSH3 0x2F5 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH3 0x15A DUP2 PUSH3 0x2B8 PUSH1 0x20 SHL PUSH3 0x1567 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x197 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x1924 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x1CF DUP2 PUSH3 0x2B8 PUSH1 0x20 SHL PUSH3 0x1567 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x20C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x1945 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x244 DUP2 PUSH3 0x2B8 PUSH1 0x20 SHL PUSH3 0x1567 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x296 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F62617365546F6B656E41646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH3 0x2ED JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x161F DUP1 PUSH3 0x305 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x158 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xD138F9A1 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xD138F9A1 EQ PUSH2 0x522 JUMPI DUP1 PUSH4 0xD449A832 EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0xD601E3FF EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0xECC5382D EQ PUSH2 0x586 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0xF80B25FB EQ PUSH2 0x5E8 JUMPI PUSH2 0x158 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xAA2EC710 EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x4E6 JUMPI DUP1 PUSH4 0xB2CF54EA EQ PUSH2 0x4EE JUMPI DUP1 PUSH4 0xC55DAE63 EQ PUSH2 0x51A JUMPI PUSH2 0x158 JUMP JUMPDEST DUP1 PUSH4 0x2FF0D012 GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x2FF0D012 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x502FAD5F EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x5034709C EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0x524EFD4B EQ PUSH2 0x3EB JUMPI DUP1 PUSH4 0x7B0CF44D EQ PUSH2 0x419 JUMPI DUP1 PUSH4 0x7C2BADB7 EQ PUSH2 0x447 JUMPI PUSH2 0x158 JUMP JUMPDEST DUP1 PUSH4 0x10F54166 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x1E2C62D3 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x22340070 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x29D5277C EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x2A887702 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x2D485C5C EQ PUSH2 0x275 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x62A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x6B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1BE PUSH2 0x7BD JUMP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x7DC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x815 JUMP JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x8EE JUMP JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x9BC JUMP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xACD JUMP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB0A JUMP JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0xB27 JUMP JUMPDEST PUSH2 0x29B PUSH2 0xBBF JUMP JUMPDEST PUSH2 0x261 PUSH2 0xBCE JUMP JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xBF4 JUMP JUMPDEST PUSH2 0x29B PUSH2 0xD05 JUMP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x29B PUSH2 0xD6E JUMP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xD7D JUMP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDC5 JUMP JUMPDEST PUSH2 0x261 PUSH2 0xDD7 JUMP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x59C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xDE0 JUMP JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE07 JUMP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0xE58 JUMP JUMPDEST PUSH2 0x632 PUSH2 0xBCE JUMP JUMPDEST PUSH2 0x672 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x6B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x696E76616C6964207072696365 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x708 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1C1C9A58DA5B99C81A5CC81C185D5CD959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x715 DUP9 DUP9 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x73A DUP7 PUSH2 0x72E DUP8 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x117E AND JUMP JUMPDEST SWAP3 POP DUP3 DUP3 GT ISZERO PUSH2 0x7B2 JUMPI DUP3 DUP3 SUB PUSH2 0x764 DUP5 PUSH2 0x72E DUP4 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP1 POP DUP5 DUP2 GT ISZERO PUSH2 0x7B0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1C1C9A58D948191A5CD859DC99595B595B9D PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7D0 DUP5 DUP5 PUSH2 0xEF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7EB DUP8 DUP8 DUP8 DUP8 PUSH2 0x815 JUMP JUMPDEST POP SWAP1 SWAP3 LT ISZERO SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x846 JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP1 POP DUP3 PUSH2 0x895 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x852 DUP8 DUP10 PUSH2 0x7C3 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP1 POP PUSH2 0x873 DUP2 PUSH2 0x72E DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP3 POP PUSH2 0x891 PUSH8 0xDE0B6B3A7640000 PUSH2 0x72E DUP8 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST DUP5 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x8A4 JUMPI POP DUP5 DUP2 LT ISZERO JUMPDEST ISZERO PUSH2 0x8DF JUMPI PUSH2 0x8D6 DUP6 PUSH2 0x72E PUSH9 0x56BC75E2D63100000 PUSH2 0x8CA DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x11C0 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP3 POP PUSH2 0x8E5 SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8F6 PUSH2 0xBCE JUMP JUMPDEST PUSH2 0x936 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9B7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH2 0x990 PUSH15 0xC097CE7BC90715B34B9F1000000000 DUP3 PUSH2 0x117E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x9C4 PUSH2 0xBCE JUMP JUMPDEST PUSH2 0xA04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP2 EQ PUSH2 0xA49 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAC6 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0xA60 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 PUSH1 0x0 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0xA80 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP2 DUP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD DUP4 AND DUP5 MSTORE DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD SWAP4 SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP PUSH1 0x1 ADD PUSH2 0xA4C JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xAF7 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xB01 JUMP JUMPDEST PUSH2 0xB01 DUP4 DUP4 PUSH2 0x1202 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xB2F PUSH2 0xBCE JUMP JUMPDEST PUSH2 0xB6F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 ISZERO ISZERO EQ PUSH2 0xBBC JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xD72570F3E3995824C4448ECA84A22AED922DAB8C58E23E9C5E60E74D0714F7F1 SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBE5 PUSH2 0x136C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xBFC PUSH2 0xBCE JUMP JUMPDEST PUSH2 0xC3C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9B7 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0xC53 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCAF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xFF AND PUSH1 0x5 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0xCDA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE POP DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xD32 JUMPI POP DUP1 PUSH2 0xB04 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0xD4C SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7C3 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xD65 DUP2 PUSH2 0x72E DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xD93 JUMPI POP PUSH1 0x0 PUSH2 0xDBE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xDA0 DUP7 DUP7 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xDB9 DUP2 PUSH2 0x72E DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xDEF DUP7 DUP7 DUP7 DUP7 PUSH2 0x815 JUMP JUMPDEST POP SWAP2 POP PUSH2 0xDFC DUP6 DUP5 PUSH2 0xD14 JUMP JUMPDEST SWAP1 POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE0F PUSH2 0xBCE JUMP JUMPDEST PUSH2 0xE4F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xBBC DUP2 PUSH2 0x1370 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xE7C JUMPI POP DUP4 PUSH2 0xEA7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE89 DUP10 DUP10 PUSH2 0x7C3 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xEA2 DUP2 PUSH2 0x72E DUP10 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST PUSH1 0x0 PUSH2 0xED6 PUSH2 0xEC9 PUSH9 0x56BC75E2D63100000 PUSH2 0x72E DUP6 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1411 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT PUSH2 0xEE6 JUMPI PUSH1 0x0 PUSH2 0xEEA JUMP JUMPDEST DUP1 DUP6 SUB JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xF47 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1C1C9A58DA5B99C81A5CC81C185D5CD959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF73 JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP1 POP DUP1 PUSH2 0x7D5 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xF93 JUMPI PUSH1 0x6 SLOAD SWAP2 POP PUSH2 0x1112 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xFCB JUMPI PUSH2 0xFC4 PUSH15 0xC097CE7BC90715B34B9F1000000000 PUSH1 0x6 SLOAD PUSH2 0x117E JUMP JUMPDEST SWAP2 POP PUSH2 0x1112 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD ISZERO PUSH2 0x1023 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP2 POP PUSH2 0x1112 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SLOAD SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD PUSH2 0x105F JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SLOAD SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP3 DUP10 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x10C6 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x10EF JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP3 DUP10 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP1 POP PUSH2 0x110D PUSH8 0xDE0B6B3A7640000 PUSH2 0x72E DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x111C DUP5 DUP5 PUSH2 0x1202 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1134 JUMPI POP PUSH1 0x0 PUSH2 0xB04 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1141 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xB01 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15CA PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB01 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x146B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB01 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x150D JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x122D JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0xB04 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x12B6 JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1298 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x133F JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x130D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1321 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xFF AND SWAP1 POP JUMPDEST DUP2 DUP2 LT PUSH2 0x135F JUMPI PUSH2 0x1353 PUSH1 0x12 DUP4 DUP4 SUB PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0xA EXP SWAP3 POP POP POP PUSH2 0xB04 JUMP JUMPDEST PUSH2 0x1353 PUSH1 0x12 DUP3 DUP5 SUB PUSH2 0x1411 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x13B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15A4 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x14F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14BC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14A4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x14E9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1503 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x155F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x14BC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14A4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x159B JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373536166654D6174683A206D756C746970 PUSH13 0x69636174696F6E206F76657266 PUSH13 0x6F77A265627A7A723158205F96 EQ 0xDF 0xB6 SWAP13 PUSH8 0xB5E776F639C8305E 0x4C RETURNDATACOPY 0xE4 0xA5 0x4C TIMESTAMP 0x1F SWAP1 DUP13 SELFBALANCE 0x4A SMOD 0x2D DUP11 0x25 PUSH8 0x9364736F6C634300 SDIV GT STOP ORIGIN 0x5F PUSH24 0x72627463546F6B656E41646472657373206E6F7420612063 PUSH16 0x6E74726163745F70726F746F636F6C54 PUSH16 0x6B656E41646472657373206E6F742061 KECCAK256 PUSH4 0x6F6E7472 PUSH2 0x6374 ",
              "sourceMap": "469:2598:46:-;;;1286:12:43;1247:51;;1331:39;;;-1:-1:-1;;1331:39:43;;;832:159:46;5:2:-1;;;;30:1;27;20:12;5:2;832:159:46;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;832:159:46;;;;;;;;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;-1:-1:-1;1814:8:43;:20;;1837:2;1814:20;:25;;;-1:-1:-1;;;;;1843:28:43;;1814:20;1843:28;;;1814:20;1843:28;;:33;1880:34;1852:18;-1:-1:-1;;;;;1880:14:43;:34;:::i;:::-;1918:47;1943:21;-1:-1:-1;;;;;1918:24:43;:47;:::i;:::-;1969:32;1983:17;-1:-1:-1;;;;;1969:13:43;:32;:::i;:::-;1661:344;;;832:159:46;;469:2598;;780:87:137;853:10;780:87;:::o;791:201:44:-;864:38;883:18;864;;;;;:38;;:::i;:::-;856:84;;;;-1:-1:-1;;;856:84:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;944:10;:44;;-1:-1:-1;;;;;;944:44:44;-1:-1:-1;;;;;944:44:44;;;;;;;;;;791:201::o;1119:220::-;1205:41;1224:21;1205:18;;;;;:41;;:::i;:::-;1197:90;;;;-1:-1:-1;;;1197:90:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1291:20;:44;;-1:-1:-1;;;;;;1291:44:44;-1:-1:-1;;;;;1291:44:44;;;;;;;;;;1119:220::o;1454:195::-;1525:37;1544:17;1525:18;;;;;:37;;:::i;:::-;1517:82;;;;;-1:-1:-1;;;1517:82:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1603:9;:42;;-1:-1:-1;;;;;;1603:42:44;-1:-1:-1;;;;;1603:42:44;;;;;;;;;;1454:195::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;469:2598:46:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101585760003560e01c80638da5cb5b116100c3578063d138f9a11161007c578063d138f9a114610522578063d449a83214610558578063d601e3ff1461057e578063ecc5382d14610586578063f2fde38b146105c2578063f80b25fb146105e857610158565b80638da5cb5b146104665780638f32d59b1461046e578063aa2ec71014610476578063afe84009146104e6578063b2cf54ea146104ee578063c55dae631461051a57610158565b80632ff0d012116101155780632ff0d012146102b7578063502fad5f146102f35780635034709c14610329578063524efd4b146103eb5780637b0cf44d146104195780637c2badb71461044757610158565b806310f541661461015d5780631e2c62d31461017c57806322340070146101d057806329d5277c146101d85780632a8877021461021f5780632d485c5c14610275575b600080fd5b61017a6004803603602081101561017357600080fd5b503561062a565b005b6101be600480360360a081101561019257600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356106b9565b60408051918252519081900360200190f35b6101be6107bd565b610206600480360360408110156101ee57600080fd5b506001600160a01b03813581169160200135166107c3565b6040805192835260208301919091528051918290030190f35b610261600480360360a081101561023557600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356107dc565b604080519115158252519081900360200190f35b61029b6004803603602081101561028b57600080fd5b50356001600160a01b03166107fa565b604080516001600160a01b039092168252519081900360200190f35b610206600480360360808110156102cd57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610815565b61017a6004803603606081101561030957600080fd5b506001600160a01b038135811691602081013590911690604001356108ee565b61017a6004803603604081101561033f57600080fd5b81019060208101813564010000000081111561035a57600080fd5b82018360208201111561036c57600080fd5b8035906020019184602083028401116401000000008311171561038e57600080fd5b9193909290916020810190356401000000008111156103ac57600080fd5b8201836020820111156103be57600080fd5b803590602001918460208302840111640100000000831117156103e057600080fd5b5090925090506109bc565b6101be6004803603604081101561040157600080fd5b506001600160a01b0381358116916020013516610acd565b6101be6004803603604081101561042f57600080fd5b506001600160a01b0381358116916020013516610b0a565b61017a6004803603602081101561045d57600080fd5b50351515610b27565b61029b610bbf565b610261610bce565b61017a6004803603602081101561048c57600080fd5b8101906020810181356401000000008111156104a757600080fd5b8201836020820111156104b957600080fd5b803590602001918460208302840111640100000000831117156104db57600080fd5b509092509050610bf4565b61029b610d05565b6101be6004803603604081101561050457600080fd5b506001600160a01b038135169060200135610d14565b61029b610d6e565b6101be6004803603606081101561053857600080fd5b506001600160a01b03813581169160208101359091169060400135610d7d565b6101be6004803603602081101561056e57600080fd5b50356001600160a01b0316610dc5565b610261610dd7565b6102066004803603608081101561059c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610de0565b61017a600480360360208110156105d857600080fd5b50356001600160a01b0316610e07565b6101be600480360360a08110156105fe57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135610e58565b610632610bce565b610672576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b806106b4576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b600655565b60075460009060ff1615610708576040805162461bcd60e51b81526020600482015260116024820152701c1c9a58da5b99c81a5cc81c185d5cd959607a1b604482015290519081900360640190fd5b6000806107158888610ef6565b909250905061073a8661072e878463ffffffff61112516565b9063ffffffff61117e16565b9250828211156107b2578282036107648461072e8368056bc75e2d6310000063ffffffff61112516565b9050848111156107b0576040805162461bcd60e51b81526020600482015260126024820152711c1c9a58d948191a5cd859dc99595b595b9d60721b604482015290519081900360640190fd5b505b505095945050505050565b60065481565b6000806107d08484610ef6565b915091505b9250929050565b6000806107eb87878787610815565b50909210159695505050505050565b6004602052600090815260409020546001600160a01b031681565b6000806000866001600160a01b0316866001600160a01b031614156108465750670de0b6b3a7640000905082610895565b600061085287896107c3565b90935090506108738161072e85670de0b6b3a764000063ffffffff61112516565b9250610891670de0b6b3a764000061072e878663ffffffff61112516565b9150505b84158015906108a45750848110155b156108df576108d68561072e68056bc75e2d631000006108ca858463ffffffff6111c016565b9063ffffffff61112516565b92506108e59050565b50600091505b94509492505050565b6108f6610bce565b610936576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b0316146109b7576001600160a01b0380841660009081526008602090815260408083209386168352929052208190556109906ec097ce7bc90715b34b9f10000000008261117e565b6001600160a01b038084166000908152600860209081526040808320938816835292905220555b505050565b6109c4610bce565b610a04576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b828114610a49576040805162461bcd60e51b815260206004820152600e60248201526d0c6deeadce840dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b60005b83811015610ac657828282818110610a6057fe5b905060200201356001600160a01b031660046000878785818110610a8057fe5b6001600160a01b03602091820293909301358316845283019390935260409091016000208054939091166001600160a01b03199093169290921790915550600101610a4c565b5050505050565b6000816001600160a01b0316836001600160a01b03161415610af757670de0b6b3a7640000610b01565b610b018383611202565b90505b92915050565b600860209081526000928352604080842090915290825290205481565b610b2f610bce565b610b6f576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60075460ff16151581151514610bbc576007805460ff191682151590811790915560405133907fd72570f3e3995824c4448eca84a22aed922dab8c58e23e9c5e60e74d0714f7f190600090a35b50565b6003546001600160a01b031690565b6003546000906001600160a01b0316610be561136c565b6001600160a01b031614905090565b610bfc610bce565b610c3c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60005b818110156109b757828282818110610c5357fe5b905060200201356001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9b57600080fd5b505afa158015610caf573d6000803e3d6000fd5b505050506040513d6020811015610cc557600080fd5b505160ff1660056000858585818110610cda57fe5b602090810292909201356001600160a01b031683525081019190915260400160002055600101610c3f565b6000546001600160a01b031681565b600080546001600160a01b0384811691161415610d32575080610b04565b600080548190610d4c9086906001600160a01b03166107c3565b9092509050610d658161072e868563ffffffff61112516565b95945050505050565b6001546001600160a01b031681565b60075460009060ff1615610d9357506000610dbe565b600080610da08686610ef6565b9092509050610db98161072e868563ffffffff61112516565b925050505b9392505050565b60056020526000908152604090205481565b60075460ff1681565b600080610def86868686610815565b509150610dfc8584610d14565b905094509492505050565b610e0f610bce565b610e4f576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610bbc81611370565b600080866001600160a01b0316866001600160a01b03161415610e7c575083610ea7565b600080610e8989896107c3565b9092509050610ea28161072e898563ffffffff61112516565b925050505b6000610ed6610ec968056bc75e2d6310000061072e858863ffffffff61112516565b839063ffffffff61141116565b9050808511610ee6576000610eea565b8085035b98975050505050505050565b600754600090819060ff1615610f47576040805162461bcd60e51b81526020600482015260116024820152701c1c9a58da5b99c81a5cc81c185d5cd959607a1b604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b03161415610f735750670de0b6b3a76400009050806107d5565b6002546001600160a01b0385811691161415610f93576006549150611112565b6002546001600160a01b0384811691161415610fcb57610fc46ec097ce7bc90715b34b9f100000000060065461117e565b9150611112565b6001600160a01b0380851660009081526008602090815260408083209387168352929052205415611023576001600160a01b038085166000908152600860209081526040808320938716835292905220549150611112565b6001600160a01b038085166000908152600860209081526040808320835490941683529290529081205461105f57670de0b6b3a7640000611088565b6001600160a01b0380861660009081526008602090815260408083208354909416835292905220545b600080546001600160a01b0390811682526008602090815260408084209289168452919052812054919250906110c657670de0b6b3a76400006110ef565b600080546001600160a01b03908116825260086020908152604080842092891684529190529020545b905061110d670de0b6b3a764000061072e848463ffffffff61112516565b935050505b61111c8484611202565b90509250929050565b60008261113457506000610b04565b8282028284828161114157fe5b0414610b015760405162461bcd60e51b81526004018080602001828103825260218152602001806115ca6021913960400191505060405180910390fd5b6000610b0183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061146b565b6000610b0183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061150d565b6000816001600160a01b0316836001600160a01b0316141561122d5750670de0b6b3a7640000610b04565b6001600160a01b038316600090815260056020526040902054806112b657836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561128457600080fd5b505afa158015611298573d6000803e3d6000fd5b505050506040513d60208110156112ae57600080fd5b505160ff1690505b6001600160a01b0383166000908152600560205260409020548061133f57836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561130d57600080fd5b505afa158015611321573d6000803e3d6000fd5b505050506040513d602081101561133757600080fd5b505160ff1690505b81811061135f5761135360128383036111c0565b600a0a92505050610b04565b6113536012828403611411565b3390565b6001600160a01b0381166113b55760405162461bcd60e51b81526004018080602001828103825260268152602001806115a46026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015610b01576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081836114f75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114bc5781810151838201526020016114a4565b50505050905090810190601f1680156114e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161150357fe5b0495945050505050565b6000818484111561155f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156114bc5781810151838201526020016114a4565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061159b57508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158205f9614dfb69c67b5e776f639c8305e4c3ee4a54c421f908c474a072d8a25679364736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x158 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xD138F9A1 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xD138F9A1 EQ PUSH2 0x522 JUMPI DUP1 PUSH4 0xD449A832 EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0xD601E3FF EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0xECC5382D EQ PUSH2 0x586 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x5C2 JUMPI DUP1 PUSH4 0xF80B25FB EQ PUSH2 0x5E8 JUMPI PUSH2 0x158 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xAA2EC710 EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x4E6 JUMPI DUP1 PUSH4 0xB2CF54EA EQ PUSH2 0x4EE JUMPI DUP1 PUSH4 0xC55DAE63 EQ PUSH2 0x51A JUMPI PUSH2 0x158 JUMP JUMPDEST DUP1 PUSH4 0x2FF0D012 GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x2FF0D012 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x502FAD5F EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x5034709C EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0x524EFD4B EQ PUSH2 0x3EB JUMPI DUP1 PUSH4 0x7B0CF44D EQ PUSH2 0x419 JUMPI DUP1 PUSH4 0x7C2BADB7 EQ PUSH2 0x447 JUMPI PUSH2 0x158 JUMP JUMPDEST DUP1 PUSH4 0x10F54166 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x1E2C62D3 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x22340070 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x29D5277C EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x2A887702 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x2D485C5C EQ PUSH2 0x275 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x62A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x6B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1BE PUSH2 0x7BD JUMP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x7DC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x815 JUMP JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x8EE JUMP JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x9BC JUMP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xACD JUMP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB0A JUMP JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0xB27 JUMP JUMPDEST PUSH2 0x29B PUSH2 0xBBF JUMP JUMPDEST PUSH2 0x261 PUSH2 0xBCE JUMP JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xBF4 JUMP JUMPDEST PUSH2 0x29B PUSH2 0xD05 JUMP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x29B PUSH2 0xD6E JUMP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xD7D JUMP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDC5 JUMP JUMPDEST PUSH2 0x261 PUSH2 0xDD7 JUMP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x59C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xDE0 JUMP JUMPDEST PUSH2 0x17A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE07 JUMP JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0xE58 JUMP JUMPDEST PUSH2 0x632 PUSH2 0xBCE JUMP JUMPDEST PUSH2 0x672 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x6B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x696E76616C6964207072696365 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x708 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1C1C9A58DA5B99C81A5CC81C185D5CD959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x715 DUP9 DUP9 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x73A DUP7 PUSH2 0x72E DUP8 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x117E AND JUMP JUMPDEST SWAP3 POP DUP3 DUP3 GT ISZERO PUSH2 0x7B2 JUMPI DUP3 DUP3 SUB PUSH2 0x764 DUP5 PUSH2 0x72E DUP4 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP1 POP DUP5 DUP2 GT ISZERO PUSH2 0x7B0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x1C1C9A58D948191A5CD859DC99595B595B9D PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7D0 DUP5 DUP5 PUSH2 0xEF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7EB DUP8 DUP8 DUP8 DUP8 PUSH2 0x815 JUMP JUMPDEST POP SWAP1 SWAP3 LT ISZERO SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x846 JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP1 POP DUP3 PUSH2 0x895 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x852 DUP8 DUP10 PUSH2 0x7C3 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP1 POP PUSH2 0x873 DUP2 PUSH2 0x72E DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP3 POP PUSH2 0x891 PUSH8 0xDE0B6B3A7640000 PUSH2 0x72E DUP8 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST DUP5 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x8A4 JUMPI POP DUP5 DUP2 LT ISZERO JUMPDEST ISZERO PUSH2 0x8DF JUMPI PUSH2 0x8D6 DUP6 PUSH2 0x72E PUSH9 0x56BC75E2D63100000 PUSH2 0x8CA DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x11C0 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP3 POP PUSH2 0x8E5 SWAP1 POP JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8F6 PUSH2 0xBCE JUMP JUMPDEST PUSH2 0x936 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9B7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE PUSH2 0x990 PUSH15 0xC097CE7BC90715B34B9F1000000000 DUP3 PUSH2 0x117E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x9C4 PUSH2 0xBCE JUMP JUMPDEST PUSH2 0xA04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP2 EQ PUSH2 0xA49 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAC6 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0xA60 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 PUSH1 0x0 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0xA80 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP2 DUP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD DUP4 AND DUP5 MSTORE DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD SWAP4 SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP PUSH1 0x1 ADD PUSH2 0xA4C JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xAF7 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xB01 JUMP JUMPDEST PUSH2 0xB01 DUP4 DUP4 PUSH2 0x1202 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xB2F PUSH2 0xBCE JUMP JUMPDEST PUSH2 0xB6F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 ISZERO ISZERO EQ PUSH2 0xBBC JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xD72570F3E3995824C4448ECA84A22AED922DAB8C58E23E9C5E60E74D0714F7F1 SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBE5 PUSH2 0x136C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xBFC PUSH2 0xBCE JUMP JUMPDEST PUSH2 0xC3C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9B7 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0xC53 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCAF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xFF AND PUSH1 0x5 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0xCDA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE POP DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xD32 JUMPI POP DUP1 PUSH2 0xB04 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0xD4C SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7C3 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xD65 DUP2 PUSH2 0x72E DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xD93 JUMPI POP PUSH1 0x0 PUSH2 0xDBE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xDA0 DUP7 DUP7 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xDB9 DUP2 PUSH2 0x72E DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xDEF DUP7 DUP7 DUP7 DUP7 PUSH2 0x815 JUMP JUMPDEST POP SWAP2 POP PUSH2 0xDFC DUP6 DUP5 PUSH2 0xD14 JUMP JUMPDEST SWAP1 POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE0F PUSH2 0xBCE JUMP JUMPDEST PUSH2 0xE4F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xBBC DUP2 PUSH2 0x1370 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xE7C JUMPI POP DUP4 PUSH2 0xEA7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE89 DUP10 DUP10 PUSH2 0x7C3 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xEA2 DUP2 PUSH2 0x72E DUP10 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST PUSH1 0x0 PUSH2 0xED6 PUSH2 0xEC9 PUSH9 0x56BC75E2D63100000 PUSH2 0x72E DUP6 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1411 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT PUSH2 0xEE6 JUMPI PUSH1 0x0 PUSH2 0xEEA JUMP JUMPDEST DUP1 DUP6 SUB JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xF47 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1C1C9A58DA5B99C81A5CC81C185D5CD959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF73 JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP1 POP DUP1 PUSH2 0x7D5 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xF93 JUMPI PUSH1 0x6 SLOAD SWAP2 POP PUSH2 0x1112 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xFCB JUMPI PUSH2 0xFC4 PUSH15 0xC097CE7BC90715B34B9F1000000000 PUSH1 0x6 SLOAD PUSH2 0x117E JUMP JUMPDEST SWAP2 POP PUSH2 0x1112 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD ISZERO PUSH2 0x1023 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP2 POP PUSH2 0x1112 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SLOAD SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD PUSH2 0x105F JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SLOAD SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP3 DUP10 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x10C6 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x10EF JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP3 DUP10 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP1 POP PUSH2 0x110D PUSH8 0xDE0B6B3A7640000 PUSH2 0x72E DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1125 AND JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x111C DUP5 DUP5 PUSH2 0x1202 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1134 JUMPI POP PUSH1 0x0 PUSH2 0xB04 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1141 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xB01 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15CA PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB01 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x146B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB01 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x150D JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x122D JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0xB04 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x12B6 JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1298 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x133F JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x130D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1321 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xFF AND SWAP1 POP JUMPDEST DUP2 DUP2 LT PUSH2 0x135F JUMPI PUSH2 0x1353 PUSH1 0x12 DUP4 DUP4 SUB PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0xA EXP SWAP3 POP POP POP PUSH2 0xB04 JUMP JUMPDEST PUSH2 0x1353 PUSH1 0x12 DUP3 DUP5 SUB PUSH2 0x1411 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x13B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15A4 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x14F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14BC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14A4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x14E9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1503 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x155F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x14BC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14A4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x159B JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373536166654D6174683A206D756C746970 PUSH13 0x69636174696F6E206F76657266 PUSH13 0x6F77A265627A7A723158205F96 EQ 0xDF 0xB6 SWAP13 PUSH8 0xB5E776F639C8305E 0x4C RETURNDATACOPY 0xE4 0xA5 0x4C TIMESTAMP 0x1F SWAP1 DUP13 SELFBALANCE 0x4A SMOD 0x2D DUP11 0x25 PUSH8 0x9364736F6C634300 SDIV GT STOP ORIGIN ",
              "sourceMap": "469:2598:46:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;469:2598:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10595:154:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10595:154:43;;:::i;:::-;;4609:628;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;4609:628:43;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1247:51;;;:::i;2350:162::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2350:162:43;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10096:338;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;10096:338:43;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1060:53;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1060:53:43;-1:-1:-1;;;;;1060:53:43;;:::i;:::-;;;;-1:-1:-1;;;;;1060:53:43;;;;;;;;;;;;;;8785:901;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;8785:901:43;;;;;;;;;;;;;;;;;;;;;;:::i;2554:244:46:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2554:244:46;;;;;;;;;;;;;;;;;:::i;10963:256:43:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10963:256:43;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10963:256:43;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10963:256:43;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10963:256:43;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10963:256:43;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10963:256:43;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;10963:256:43;;-1:-1:-1;10963:256:43;-1:-1:-1;10963:256:43;:::i;2830:189::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2830:189:43;;;;;;;;;;:::i;511:60:46:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;511:60:46;;;;;;;;;;:::i;11672:202:43:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11672:202:43;;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;11376:178:43:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11376:178:43;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;11376:178:43;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11376:178:43;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;11376:178:43;;-1:-1:-1;11376:178:43;-1:-1:-1;11376:178:43;:::i;564:29:44:-;;;:::i;5654:389:43:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5654:389:43;;;;;;;;:::i;596:28:44:-;;;:::i;3557:313:43:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3557:313:43;;;;;;;;;;;;;;;;;:::i;1152:43::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1152:43:43;-1:-1:-1;;;;;1152:43:43;;:::i;1331:39::-;;;:::i;7817:396::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;7817:396:43;;;;;;;;;;;;;;;;;;;;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;6758:637:43:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;6758:637:43;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10595:154::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;10678:13:43;10670:39;;;;;-1:-1:-1;;;10670:39:43;;;;;;;;;;;;-1:-1:-1;;;10670:39:43;;;;;;;;;;;;;;;10713:21;:32;10595:154::o;4609:628::-;4821:19;;4778:28;;4821:19;;4820:20;4812:50;;;;;-1:-1:-1;;;4812:50:43;;;;;;;;;;;;-1:-1:-1;;;4812:50:43;;;;;;;;;;;;;;;4867:12;4881:17;4902:34;4913:11;4926:9;4902:10;:34::i;:::-;4866:70;;-1:-1:-1;4866:70:43;-1:-1:-1;4964:43:43;4994:12;4964:25;:10;4866:70;4964:25;:14;:25;:::i;:::-;:29;:43;:29;:43;:::i;:::-;4941:66;;5023:20;5016:4;:27;5012:222;;;5072:27;;;5118:49;5079:20;5118:23;5072:27;5134:6;5118:23;:15;:23;:::i;:49::-;5104:63;;5195:11;5180;:26;;5172:57;;;;;-1:-1:-1;;;5172:57:43;;;;;;;;;;;;-1:-1:-1;;;5172:57:43;;;;;;;;;;;;;;;5012:222;;4609:628;;;;;;;;;:::o;1247:51::-;;;;:::o;2350:162::-;2430:12;2444:17;2474:34;2485:11;2498:9;2474:10;:34::i;:::-;2467:41;;;;2350:162;;;;;;:::o;10096:338::-;10272:4;10283:21;10310:74;10327:9;10338:15;10355:10;10367:16;10310;:74::i;:::-;-1:-1:-1;;;;10396:34:43;;10096:338;-1:-1:-1;;;;;;10096:338:43:o;1060:53::-;;;;;;;;;;;;-1:-1:-1;;;;;1060:53:43;;:::o;8785:901::-;8933:21;8956:28;8990:30;9047:9;-1:-1:-1;;;;;9028:28:43;:15;-1:-1:-1;;;;;9028:28:43;;9024:439;;;-1:-1:-1;9132:6:43;;-1:-1:-1;9088:16:43;9024:439;;;9154:33;9244:37;9254:15;9271:9;9244;:37::i;:::-;9192:89;;-1:-1:-1;9192:89:43;-1:-1:-1;9310:63:43;9192:89;9310:32;9192:89;9335:6;9310:32;:24;:32;:::i;:63::-;9287:86;-1:-1:-1;9404:54:43;9451:6;9404:42;:16;9287:86;9404:42;:20;:42;:::i;:54::-;9379:79;;9024:439;;9471:15;;;;;:55;;;9516:10;9490:22;:36;;9471:55;9467:216;;;9541:66;9596:10;9541:50;9584:6;9541:38;:22;9596:10;9541:38;:26;:38;:::i;:::-;:42;:50;:42;:50;:::i;:66::-;9533:97;-1:-1:-1;9533:97:43;;-1:-1:-1;9533:97:43;9467:216;-1:-1:-1;9654:1:43;;-1:-1:-1;8785:901:43;;;;;;;;:::o;2554:244:46:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;2675:9:46;-1:-1:-1;;;;;2660:24:46;:11;-1:-1:-1;;;;;2660:24:46;;2656:139;;-1:-1:-1;;;;;2691:18:46;;;;;;;:5;:18;;;;;;;;:29;;;;;;;;;:36;;;2764:26;2777:6;2723:4;2764:12;:26::i;:::-;-1:-1:-1;;;;;2732:16:46;;;;;;;:5;:16;;;;;;;;:29;;;;;;;;;:58;2656:139;2554:244;;;:::o;10963:256:43:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;11076:29:43;;;11068:56;;;;;-1:-1:-1;;;11068:56:43;;;;;;;;;;;;-1:-1:-1;;;11068:56:43;;;;;;;;;;;;;;;11134:9;11129:87;11149:17;;;11129:87;;;11203:5;;11209:1;11203:8;;;;;;;;;;;;;-1:-1:-1;;;;;11203:8:43;11178:11;:22;11190:6;;11197:1;11190:9;;;;;;;-1:-1:-1;;;;;11190:9:43;;;;;;;;;;;11178:22;;;;;;;;;;;;-1:-1:-1;11178:22:43;:33;;;;;;-1:-1:-1;;;;;;11178:33:43;;;;;;;;;;-1:-1:-1;11178:33:43;11168:3;11129:87;;;;10963:256;;;;:::o;2830:189::-;2915:7;2950:9;-1:-1:-1;;;;;2935:24:43;:11;-1:-1:-1;;;;;2935:24:43;;;:80;;3009:6;2935:80;;;2962:44;2983:11;2996:9;2962:20;:44::i;:::-;2928:87;;2830:189;;;;;:::o;511:60:46:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;11672:202:43:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;11746:19:43;;;;:31;;;;;;11742:129;;11784:19;:30;;-1:-1:-1;;11784:30:43;;;;;;;;;;11825:41;;11845:10;;11825:41;;-1:-1:-1;;11825:41:43;11742:129;11672:202;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;11376:178:43:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;11451:9:43;11446:105;11466:17;;;11446:105;;;11526:6;;11533:1;11526:9;;;;;;;;;;;;;-1:-1:-1;;;;;11526:9:43;-1:-1:-1;;;;;11526:18:43;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11526:20:43;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11526:20:43;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11526:20:43;11495:51;;:8;:28;11512:6;;11519:1;11512:9;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11512:9:43;11495:28;;-1:-1:-1;11495:28:43;;;;;;;;-1:-1:-1;11495:28:43;:51;11485:3;;11446:105;;564:29:44;;;-1:-1:-1;;;;;564:29:44;;:::o;5654:389:43:-;5734:17;5835:10;;-1:-1:-1;;;;;5811:35:43;;;5835:10;;5811:35;5807:233;;;-1:-1:-1;5865:6:43;5807:233;;;5888:17;5965:10;;5888:17;;5933:44;;5943:12;;-1:-1:-1;;;;;5965:10:43;5933:9;:44::i;:::-;5887:90;;-1:-1:-1;5887:90:43;-1:-1:-1;5994:41:43;5887:90;5994:21;:6;5887:90;5994:21;:10;:21;:::i;:41::-;5982:53;5654:389;-1:-1:-1;;;;;5654:389:43:o;596:28:44:-;;;-1:-1:-1;;;;;596:28:44;;:::o;3557:313:43:-;3698:19;;3670:18;;3698:19;;3694:43;;;-1:-1:-1;3731:1:43;3724:8;;3694:43;3742:12;3756:17;3777:34;3788:11;3801:9;3777:10;:34::i;:::-;3741:70;;-1:-1:-1;3741:70:43;-1:-1:-1;3829:37:43;3741:70;3829:22;:12;3741:70;3829:22;:16;:22;:::i;:37::-;3816:50;;3557:313;;;;;;;;:::o;1152:43::-;;;;;;;;;;;;;:::o;1331:39::-;;;;;;:::o;7817:396::-;7982:21;8005:29;8060:74;8077:9;8088:15;8105:10;8117:16;8060;:74::i;:::-;-1:-1:-1;8040:94:43;-1:-1:-1;8163:46:43;8175:15;8192:16;8163:11;:46::i;:::-;8139:70;;7817:396;;;;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;6758:637:43:-;6922:19;6947:30;7004:9;-1:-1:-1;;;;;6985:28:43;:15;-1:-1:-1;;;;;6985:28:43;;6981:233;;;-1:-1:-1;7045:10:43;6981:233;;;7072:12;7086:17;7107:37;7117:9;7128:15;7107:9;:37::i;:::-;7071:73;;-1:-1:-1;7071:73:43;-1:-1:-1;7174:35:43;7071:73;7174:20;:10;7071:73;7174:20;:14;:20;:::i;:35::-;7149:60;;6981:233;;;7218:16;7237:74;7264:46;7303:6;7264:34;:22;7291:6;7264:34;:26;:34;:::i;:46::-;7237:22;;:74;:26;:74;:::i;:::-;7218:93;;7349:8;7330:16;:27;:61;;7390:1;7330:61;;;7379:8;7360:16;:27;7330:61;7316:75;6758:637;-1:-1:-1;;;;;;;;6758:637:43:o;1274:1049:46:-;1403:19;;1357:12;;;;1403:19;;1402:20;1394:50;;;;;-1:-1:-1;;;1394:50:46;;;;;;;;;;;;-1:-1:-1;;;1394:50:46;;;;;;;;;;;;;;;1468:9;-1:-1:-1;;;;;1453:24:46;:11;-1:-1:-1;;;;;1453:24:46;;1449:871;;;-1:-1:-1;1491:6:46;;-1:-1:-1;1491:6:46;1449:871;;;1555:20;;-1:-1:-1;;;;;1540:35:46;;;1555:20;;1540:35;1536:719;;;1644:21;;1637:28;;1536:719;;;1694:20;;-1:-1:-1;;;;;1681:33:46;;;1694:20;;1681:33;1677:578;;;1783:43;1796:6;1804:21;;1783:12;:43::i;:::-;1776:50;;1677:578;;;-1:-1:-1;;;;;1848:18:46;;;;;;;:5;:18;;;;;;;;:29;;;;;;;;;;:34;1844:406;;-1:-1:-1;;;;;1898:18:46;;;;;;;:5;:18;;;;;;;;:29;;;;;;;;;;;-1:-1:-1;1844:406:46;;;-1:-1:-1;;;;;1971:18:46;;;1947:21;1971:18;;;:5;:18;;;;;;;;1998:10;;;;;1971:39;;;;;;;;;:95;;2060:6;1971:95;;;-1:-1:-1;;;;;2018:18:46;;;;;;;:5;:18;;;;;;;;2045:10;;;;;2018:39;;;;;;;1971:95;2073:19;2109:10;;-1:-1:-1;;;;;2109:10:46;;;2095:26;;:5;:26;;;;;;;;:37;;;;;;;;;;;1947:119;;-1:-1:-1;2073:19:46;2095:91;;2180:6;2095:91;;;2140:26;2154:10;;-1:-1:-1;;;;;2154:10:46;;;2140:26;;:5;:26;;;;;;;;:37;;;;;;;;;;;2095:91;2073:113;-1:-1:-1;2201:42:46;2236:6;2201:30;:13;2073:113;2201:30;:17;:30;:::i;:42::-;2194:49;;1844:406;;;2271:44;2292:11;2305:9;2271:20;:44::i;:::-;2259:56;;1274:1049;;;;;:::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2817:121;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;1201:125::-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;13921:767:43:-;14014:7;14089:9;-1:-1:-1;;;;;14074:24:43;:11;-1:-1:-1;;;;;14074:24:43;;14070:615;;;-1:-1:-1;14112:6:43;14105:13;;14070:615;-1:-1:-1;;;;;14236:21:43;;14206:27;14236:21;;;:8;:21;;;;;;14266:24;14262:82;;14321:11;-1:-1:-1;;;;;14314:28:43;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14314:30:43;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14314:30:43;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14314:30:43;14292:52;;;-1:-1:-1;14262:82:43;-1:-1:-1;;;;;14378:19:43;;14350:25;14378:19;;;:8;:19;;;;;;14406:22;14402:76;;14457:9;-1:-1:-1;;;;;14450:26:43;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14450:28:43;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14450:28:43;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14450:28:43;14430:48;;;-1:-1:-1;14402:76:43;14509:19;14488:17;:40;14484:196;;14542:57;14555:2;14579:19;14559:17;:39;14542:12;:57::i;:::-;14537:2;:63;14530:70;;;;;;14484:196;14622:57;14635:2;14661:17;14639:19;:39;14622:12;:57::i;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;3411:315;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1614:175::-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1722:29:145;-1:-1:-1;;;1767:5:145;;;1614:175::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o"
            },
            "methodIdentifiers": {
              "amountInEth(address,uint256)": "b2cf54ea",
              "baseToken()": "c55dae63",
              "checkPriceDisagreement(address,address,uint256,uint256,uint256)": "1e2c62d3",
              "decimals(address)": "d449a832",
              "getCurrentMargin(address,address,uint256,uint256)": "2ff0d012",
              "getCurrentMarginAndCollateralSize(address,address,uint256,uint256)": "ecc5382d",
              "getMaxDrawdown(address,address,uint256,uint256,uint256)": "f80b25fb",
              "globalPricingPaused()": "d601e3ff",
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "pricesFeeds(address)": "2d485c5c",
              "protocolTokenEthPrice()": "22340070",
              "queryPrecision(address,address)": "524efd4b",
              "queryRate(address,address)": "29d5277c",
              "queryReturn(address,address,uint256)": "d138f9a1",
              "rates(address,address)": "7b0cf44d",
              "setDecimals(address[])": "aa2ec710",
              "setGlobalPricingPaused(bool)": "7c2badb7",
              "setPriceFeed(address[],address[])": "5034709c",
              "setProtocolTokenEthPrice(uint256)": "10f54166",
              "setRates(address,address,uint256)": "502fad5f",
              "shouldLiquidate(address,address,uint256,uint256,uint256)": "2a887702",
              "transferOwnership(address)": "f2fde38b",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "amountInEth(address,uint256)": {
                "notice": "Calculate the rBTC amount equivalent to a given token amount. Native coin on RSK is rBTC. This code comes from Ethereum applications, so Eth refers to 10**18 weis of native coin, i.e.: 1 rBTC."
              },
              "checkPriceDisagreement(address,address,uint256,uint256,uint256)": {
                "notice": "Calculate the swap rate between two tokens.\t * Regarding slippage, there is a hardcoded slippage limit of 5%, enforced by this function for all borrowing, lending and margin trading originated swaps performed in the Sovryn exchange.\t * This means all operations in the Sovryn exchange are subject to losing up to 5% from the internal swap performed."
              },
              "constructor": "Deploy local price feed contract.",
              "getCurrentMargin(address,address,uint256,uint256)": {
                "notice": "Calculate the margin of a loan."
              },
              "getCurrentMarginAndCollateralSize(address,address,uint256,uint256)": {
                "notice": "Calculate the margin and the collateral on rBTC."
              },
              "getMaxDrawdown(address,address,uint256,uint256,uint256)": {
                "notice": "Calculate the maximum drawdown of a loan.\t * A drawdown is commonly defined as the decline from a high peak to a pullback low of a specific investment or equity in an account.\t * Drawdown magnitude refers to the amount of value that a user loses during the drawdown period."
              },
              "queryPrecision(address,address)": {
                "notice": "Calculate the relative precision between two tokens."
              },
              "queryRate(address,address)": {
                "notice": "Calculate the price ratio between two tokens."
              },
              "queryReturn(address,address,uint256)": {
                "notice": "Price conversor: Calculate the price of an amount of source tokens in destiny token units."
              },
              "setDecimals(address[])": {
                "notice": "Populate decimals mapping w/ values from tokens[].decimals"
              },
              "setGlobalPricingPaused(bool)": {
                "notice": "Set flag globalPricingPaused"
              },
              "setPriceFeed(address[],address[])": {
                "notice": "Populate pricesFeeds mapping w/ values from feeds[]"
              },
              "setProtocolTokenEthPrice(uint256)": {
                "notice": "Set new value for protocolTokenEthPrice"
              },
              "setRates(address,address,uint256)": {
                "notice": "Owner set price ratio between two tokens."
              },
              "shouldLiquidate(address,address,uint256,uint256,uint256)": {
                "notice": "Get assessment about liquidating a loan."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the logic of setting and getting rates between two tokens."
          }
        }
      },
      "contracts/feeds/testnet/PriceFeedsMoC.sol": {
        "Medianizer": {
          "abi": [
            {
              "constant": true,
              "inputs": [],
              "name": "peek",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "peek()": "59e02dd7"
            }
          },
          "userdoc": {
            "methods": {}
          }
        },
        "PriceFeedsMoC": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_mocOracleAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_rskOracleAddress",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": "mocOracleAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "changerAddress",
                  "type": "address"
                }
              ],
              "name": "SetMoCOracleAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "rskOracleAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "changerAddress",
                  "type": "address"
                }
              ],
              "name": "SetRSKOracleAddress",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "latestAnswer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "mocOracleAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rskOracleAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_mocOracleAddress",
                  "type": "address"
                }
              ],
              "name": "setMoCOracleAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_rskOracleAddress",
                  "type": "address"
                }
              ],
              "name": "setRSKOracleAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "constructor": {
                "params": {
                  "_mocOracleAddress": "The MoC Oracle address.",
                  "_rskOracleAddress": "The RSK Oracle address."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "latestAnswer()": {
                "return": "The latest time."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setMoCOracleAddress(address)": {
                "params": {
                  "_mocOracleAddress": "The MoC Oracle address."
                }
              },
              "setRSKOracleAddress(address)": {
                "params": {
                  "_rskOracleAddress": "The RSK Oracle address."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Price Feed of MoC (Money on Chain) contract. * This contract contains the logic to set MoC oracles and query last price update."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516109c03803806109c08339818101604052604081101561003357600080fd5b508051602090910151600061004f6001600160e01b036100c416565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100ab826001600160e01b036100c816565b6100bd816001600160e01b036101da16565b5050610355565b3390565b6100d96001600160e01b036102ec16565b610119576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61012c8161031960201b6105211760201c565b61017d576040805162461bcd60e51b815260206004820181905260248201527f5f6d6f634f7261636c6541646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917f1275deefe41e3273f2a99545002cc8369a04b2dbd04b2557e428a712cb2d5117916020908290030190a250565b6101eb6001600160e01b036102ec16565b61022b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61023e8161031960201b6105211760201c565b61028f576040805162461bcd60e51b815260206004820181905260248201527f5f72736b4f7261636c6541646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917f94305f79fd34fa915e2815446cd306362132a59408d9f79f071eca99bde86dff916020908290030190a250565b600080546001600160a01b031661030a6001600160e01b036100c416565b6001600160a01b031614905090565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061034d57508115155b949350505050565b61065c806103646000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a1e601091161005b578063a1e601091461010f578063b4c1e84814610135578063f106b5f41461013d578063f2fde38b1461014557610088565b80634541b2e31461008d57806350d25bcd146100b55780638da5cb5b146100cf5780638f32d59b146100f3575b600080fd5b6100b3600480360360208110156100a357600080fd5b50356001600160a01b031661016b565b005b6100bd61026a565b60408051918252519081900360200190f35b6100d761037d565b604080516001600160a01b039092168252519081900360200190f35b6100fb61038c565b604080519115158252519081900360200190f35b6100b36004803603602081101561012557600080fd5b50356001600160a01b03166103b0565b6100d76104af565b6100d76104be565b6100b36004803603602081101561015b57600080fd5b50356001600160a01b03166104cd565b61017361038c565b6101b3576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6101bc81610521565b61020d576040805162461bcd60e51b815260206004820181905260248201527f5f6d6f634f7261636c6541646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917f1275deefe41e3273f2a99545002cc8369a04b2dbd04b2557e428a712cb2d5117916020908290030190a250565b6000806000600160009054906101000a90046001600160a01b03166001600160a01b03166359e02dd76040518163ffffffff1660e01b8152600401604080518083038186803b1580156102bc57600080fd5b505afa1580156102d0573d6000803e3d6000fd5b505050506040513d60408110156102e657600080fd5b508051602090910151909250905080156103025750905061037a565b600254604080516307169c6760e31b815281516000936001600160a01b0316926338b4e3389260048082019391829003018186803b15801561034357600080fd5b505afa158015610357573d6000803e3d6000fd5b505050506040513d604081101561036d57600080fd5b5051935061037a92505050565b90565b6000546001600160a01b031690565b600080546001600160a01b03166103a161055d565b6001600160a01b031614905090565b6103b861038c565b6103f8576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61040181610521565b610452576040805162461bcd60e51b815260206004820181905260248201527f5f72736b4f7261636c6541646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917f94305f79fd34fa915e2815446cd306362132a59408d9f79f071eca99bde86dff916020908290030190a250565b6002546001600160a01b031681565b6001546001600160a01b031681565b6104d561038c565b610515576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61051e81610561565b50565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061055557508115155b949350505050565b3390565b6001600160a01b0381166105a65760405162461bcd60e51b81526004018080602001828103825260268152602001806106026026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a7231582036a33773509ee5efb0e5b44ce2600664a7fdc908ea72b8b4baaec3ab33be9e5264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x9C0 CODESIZE SUB DUP1 PUSH2 0x9C0 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 PUSH2 0x4F PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0xC4 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0xAB DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0xC8 AND JUMP JUMPDEST PUSH2 0xBD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x1DA AND JUMP JUMPDEST POP POP PUSH2 0x355 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xD9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x2EC AND JUMP JUMPDEST PUSH2 0x119 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x12C DUP2 PUSH2 0x319 PUSH1 0x20 SHL PUSH2 0x521 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x17D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F6D6F634F7261636C6541646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x1275DEEFE41E3273F2A99545002CC8369A04B2DBD04B2557E428A712CB2D5117 SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x1EB PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x2EC AND JUMP JUMPDEST PUSH2 0x22B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x23E DUP2 PUSH2 0x319 PUSH1 0x20 SHL PUSH2 0x521 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x28F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F72736B4F7261636C6541646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x94305F79FD34FA915E2815446CD306362132A59408D9F79F071ECA99BDE86DFF SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x30A PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0xC4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x34D JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x65C DUP1 PUSH2 0x364 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA1E60109 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA1E60109 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0xB4C1E848 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0xF106B5F4 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x145 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x4541B2E3 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x50D25BCD EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xF3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16B JUMP JUMPDEST STOP JUMPDEST PUSH2 0xBD PUSH2 0x26A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD7 PUSH2 0x37D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFB PUSH2 0x38C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0xD7 PUSH2 0x4AF JUMP JUMPDEST PUSH2 0xD7 PUSH2 0x4BE JUMP JUMPDEST PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4CD JUMP JUMPDEST PUSH2 0x173 PUSH2 0x38C JUMP JUMPDEST PUSH2 0x1B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1BC DUP2 PUSH2 0x521 JUMP JUMPDEST PUSH2 0x20D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F6D6F634F7261636C6541646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x1275DEEFE41E3273F2A99545002CC8369A04B2DBD04B2557E428A712CB2D5117 SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x59E02DD7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP1 ISZERO PUSH2 0x302 JUMPI POP SWAP1 POP PUSH2 0x37A JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7169C67 PUSH1 0xE3 SHL DUP2 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 PUSH4 0x38B4E338 SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x357 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x36D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x37A SWAP3 POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3A1 PUSH2 0x55D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3B8 PUSH2 0x38C JUMP JUMPDEST PUSH2 0x3F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x401 DUP2 PUSH2 0x521 JUMP JUMPDEST PUSH2 0x452 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F72736B4F7261636C6541646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x94305F79FD34FA915E2815446CD306362132A59408D9F79F071ECA99BDE86DFF SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x4D5 PUSH2 0x38C JUMP JUMPDEST PUSH2 0x515 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x51E DUP2 PUSH2 0x561 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x555 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x602 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A7231582036A33773509EE5 0xEF 0xB0 0xE5 0xB4 0x4C 0xE2 PUSH1 0x6 PUSH5 0xA7FDC908EA PUSH19 0xB8B4BAAEC3AB33BE9E5264736F6C6343000511 STOP ORIGIN ",
              "sourceMap": "360:1783:47:-;;;867:161;8:9:-1;5:2;;;30:1;27;20:12;5:2;867:161:47;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;867:161:47;;;;;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;-1:-1:-1;944:38:47;964:17;-1:-1:-1;;;;;944:19:47;:38;:::i;:::-;986;1006:17;-1:-1:-1;;;;;986:19:47;:38;:::i;:::-;867:161;;360:1783;;780:87:137;853:10;780:87;:::o;1509:261:47:-;1028:9:142;-1:-1:-1;;;;;1028:7:142;:9;:::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1594:37:47;1613:17;1594:18;;;;;:37;;:::i;:::-;1586:82;;;;;-1:-1:-1;;;1586:82:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1672:16;:36;;-1:-1:-1;;;;;;1672:36:47;-1:-1:-1;;;;;1672:36:47;;;;;;;;;;;1717:49;;;1755:10;1717:49;;;;1737:16;;;;;1717:49;;;;;;;;;;1509:261;:::o;1880:::-;1028:9:142;-1:-1:-1;;;;;1028:7:142;:9;:::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1965:37:47;1984:17;1965:18;;;;;:37;;:::i;:::-;1957:82;;;;;-1:-1:-1;;;1957:82:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2043:16;:36;;-1:-1:-1;;;;;;2043:36:47;-1:-1:-1;;;;;2043:36:47;;;;;;;;;;;2088:49;;;2126:10;2088:49;;;;2108:16;;;;;2088:49;;;;;;;;;;1880:261;:::o;1134:83:142:-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;-1:-1:-1;;;;;1191:10:142;:12;:::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;360:1783:47:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063a1e601091161005b578063a1e601091461010f578063b4c1e84814610135578063f106b5f41461013d578063f2fde38b1461014557610088565b80634541b2e31461008d57806350d25bcd146100b55780638da5cb5b146100cf5780638f32d59b146100f3575b600080fd5b6100b3600480360360208110156100a357600080fd5b50356001600160a01b031661016b565b005b6100bd61026a565b60408051918252519081900360200190f35b6100d761037d565b604080516001600160a01b039092168252519081900360200190f35b6100fb61038c565b604080519115158252519081900360200190f35b6100b36004803603602081101561012557600080fd5b50356001600160a01b03166103b0565b6100d76104af565b6100d76104be565b6100b36004803603602081101561015b57600080fd5b50356001600160a01b03166104cd565b61017361038c565b6101b3576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6101bc81610521565b61020d576040805162461bcd60e51b815260206004820181905260248201527f5f6d6f634f7261636c6541646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917f1275deefe41e3273f2a99545002cc8369a04b2dbd04b2557e428a712cb2d5117916020908290030190a250565b6000806000600160009054906101000a90046001600160a01b03166001600160a01b03166359e02dd76040518163ffffffff1660e01b8152600401604080518083038186803b1580156102bc57600080fd5b505afa1580156102d0573d6000803e3d6000fd5b505050506040513d60408110156102e657600080fd5b508051602090910151909250905080156103025750905061037a565b600254604080516307169c6760e31b815281516000936001600160a01b0316926338b4e3389260048082019391829003018186803b15801561034357600080fd5b505afa158015610357573d6000803e3d6000fd5b505050506040513d604081101561036d57600080fd5b5051935061037a92505050565b90565b6000546001600160a01b031690565b600080546001600160a01b03166103a161055d565b6001600160a01b031614905090565b6103b861038c565b6103f8576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61040181610521565b610452576040805162461bcd60e51b815260206004820181905260248201527f5f72736b4f7261636c6541646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051338152905192909116917f94305f79fd34fa915e2815446cd306362132a59408d9f79f071eca99bde86dff916020908290030190a250565b6002546001600160a01b031681565b6001546001600160a01b031681565b6104d561038c565b610515576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61051e81610561565b50565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061055557508115155b949350505050565b3390565b6001600160a01b0381166105a65760405162461bcd60e51b81526004018080602001828103825260268152602001806106026026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a7231582036a33773509ee5efb0e5b44ce2600664a7fdc908ea72b8b4baaec3ab33be9e5264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA1E60109 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA1E60109 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0xB4C1E848 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0xF106B5F4 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x145 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x4541B2E3 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x50D25BCD EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xF3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16B JUMP JUMPDEST STOP JUMPDEST PUSH2 0xBD PUSH2 0x26A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD7 PUSH2 0x37D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFB PUSH2 0x38C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0xD7 PUSH2 0x4AF JUMP JUMPDEST PUSH2 0xD7 PUSH2 0x4BE JUMP JUMPDEST PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4CD JUMP JUMPDEST PUSH2 0x173 PUSH2 0x38C JUMP JUMPDEST PUSH2 0x1B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1BC DUP2 PUSH2 0x521 JUMP JUMPDEST PUSH2 0x20D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F6D6F634F7261636C6541646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x1275DEEFE41E3273F2A99545002CC8369A04B2DBD04B2557E428A712CB2D5117 SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x59E02DD7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP1 ISZERO PUSH2 0x302 JUMPI POP SWAP1 POP PUSH2 0x37A JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7169C67 PUSH1 0xE3 SHL DUP2 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 PUSH4 0x38B4E338 SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x357 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x36D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x37A SWAP3 POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3A1 PUSH2 0x55D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3B8 PUSH2 0x38C JUMP JUMPDEST PUSH2 0x3F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x401 DUP2 PUSH2 0x521 JUMP JUMPDEST PUSH2 0x452 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5F72736B4F7261636C6541646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH32 0x94305F79FD34FA915E2815446CD306362132A59408D9F79F071ECA99BDE86DFF SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x4D5 PUSH2 0x38C JUMP JUMPDEST PUSH2 0x515 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x51E DUP2 PUSH2 0x561 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x555 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x602 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A7231582036A33773509EE5 0xEF 0xB0 0xE5 0xB4 0x4C 0xE2 PUSH1 0x6 PUSH5 0xA7FDC908EA PUSH19 0xB8B4BAAEC3AB33BE9E5264736F6C6343000511 STOP ORIGIN ",
              "sourceMap": "360:1783:47:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;360:1783:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:261;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1509:261:47;-1:-1:-1;;;;;1509:261:47;;:::i;:::-;;1125:274;;;:::i;:::-;;;;;;;;;;;;;;;;851:68:142;;;:::i;:::-;;;;-1:-1:-1;;;;;851:68:142;;;;;;;;;;;;;;1134:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;1880:261:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1880:261:47;-1:-1:-1;;;;;1880:261:47;;:::i;463:31::-;;;:::i;429:::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;1509:261:47:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1594:37:47;1613:17;1594:18;:37::i;:::-;1586:82;;;;;-1:-1:-1;;;1586:82:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1672:16;:36;;-1:-1:-1;;;;;;1672:36:47;-1:-1:-1;;;;;1672:36:47;;;;;;;;;;;1717:49;;;1755:10;1717:49;;;;1737:16;;;;;1717:49;;;;;;;;;;1509:261;:::o;1125:274::-;1172:7;1186:13;1201;1229:16;;;;;;;;;-1:-1:-1;;;;;1229:16:47;-1:-1:-1;;;;;1218:33:47;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1218:35:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1218:35:47;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1218:35:47;;;;;;;;;-1:-1:-1;1218:35:47;-1:-1:-1;1257:139:47;;;;-1:-1:-1;1291:5:47;-1:-1:-1;1276:21:47;;1257:139;1344:16;;1333:41;;;-1:-1:-1;;;1333:41:47;;;;1314:13;;-1:-1:-1;;;;;1344:16:47;;1333:39;;:41;;;;;;;;;;;1344:16;1333:41;;;5:2:-1;;;;30:1;27;20:12;5:2;1333:41:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1333:41:47;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1333:41:47;;-1:-1:-1;1379:12:47;;-1:-1:-1;;;1379:12:47;1125:274;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1880:261:47:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1965:37:47;1984:17;1965:18;:37::i;:::-;1957:82;;;;;-1:-1:-1;;;1957:82:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2043:16;:36;;-1:-1:-1;;;;;;2043:36:47;-1:-1:-1;;;;;2043:36:47;;;;;;;;;;;2088:49;;;2126:10;2088:49;;;;2108:16;;;;;2088:49;;;;;;;;;;1880:261;:::o;463:31::-;;;-1:-1:-1;;;;;463:31:47;;:::o;429:::-;;;-1:-1:-1;;;;;429:31:47;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "isOwner()": "8f32d59b",
              "latestAnswer()": "50d25bcd",
              "mocOracleAddress()": "f106b5f4",
              "owner()": "8da5cb5b",
              "rskOracleAddress()": "b4c1e848",
              "setMoCOracleAddress(address)": "4541b2e3",
              "setRSKOracleAddress(address)": "a1e60109",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {
              "constructor": "Initialize a new MoC Oracle.",
              "latestAnswer()": {
                "notice": "Get the las time oracle updated the price."
              },
              "setMoCOracleAddress(address)": {
                "notice": "Set the MoC Oracle address."
              },
              "setRSKOracleAddress(address)": {
                "notice": "Set the RSK Oracle address."
              }
            }
          }
        }
      },
      "contracts/governance/ApprovalReceiver.sol": {
        "ApprovalReceiver": {
          "abi": [
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "receiveApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "receiveApproval(address,uint256,address,bytes)": {
                "params": {
                  "_data": "The data will be used for low level call."
                }
              }
            },
            "title": "Base contract for receiving approval from SOV token."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506106bb806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80638f4ffcb114610030575b600080fd5b6100bf6004803603608081101561004657600080fd5b6001600160a01b03823581169260208101359260408201359092169181019060808101606082013564010000000081111561008057600080fd5b82018360208201111561009257600080fd5b803590602001918460018302840111640100000000831117156100b457600080fd5b5090925090506100c1565b005b6100c9610393565b6001600160a01b0316336001600160a01b03161461011d576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b336001600160a01b03841614610169576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006060610175610398565b905060006101b885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103aa92505050565b905060005b8251811015610206578281815181106101d257fe5b60200260200101516001600160e01b031916826001600160e01b03191614156101fe5760019350610206565b6001016101bd565b5082610251576040805162461bcd60e51b81526020600482015260156024820152741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b604482015290519081900360640190fd5b60405160006020820181815290918291829189918991603c01838380828437808301925050509350505050604051602081830303815290604052806020019051606081101561029f57600080fd5b50602081015160409091015190925090506001600160a01b03808316908b1614610302576040805162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b888114610348576040805162461bcd60e51b815260206004820152600f60248201526e0c2dadeeadce840dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b61038787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103b192505050565b50505050505050505050565b600090565b60408051600081526020810190915290565b6020015190565b60006060306001600160a01b0316836040518082805190602001908083835b602083106103ef5780518252601f1990920191602091820191016103d0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610451576040519150601f19603f3d011682016040523d82523d6000602084013e610456565b606091505b5091509150816105575760448151116104a05760405162461bcd60e51b81526004018080602001828103825260308152602001806106576030913960400191505060405180910390fd5b6104d36040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b8152508261055c565b60405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578181015183820152602001610504565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050565b6060808390506060839050606060448251845101036040519080825280601f01601f19166020018201604052801561059b576020820181803883390190505b509050806000805b85518110156105f4578581815181106105b857fe5b602001015160f81c60f81b8383806001019450815181106105d557fe5b60200101906001600160f81b031916908160001a9053506001016105a3565b5060445b84518110156106495784818151811061060d57fe5b602001015160f81c60f81b83838060010194508151811061062a57fe5b60200101906001600160f81b031916908160001a9053506001016105f8565b509097965050505050505056fe72656365697665417070726f76616c3a205472616e73616374696f6e20657865637574696f6e2072657665727465642ea265627a7a72315820f31f557fed57005516872f55fb273cb49ff7d151ec678a7362b37cf89100c66c64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6BB DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xC1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC9 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x11D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x169 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x175 PUSH2 0x398 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B8 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3AA SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1D2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0x1FE JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1BD JUMP JUMPDEST POP DUP3 PUSH2 0x251 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE SWAP1 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP10 SWAP2 DUP10 SWAP2 PUSH1 0x3C ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x29F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0x302 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP9 DUP2 EQ PUSH2 0x348 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x387 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3B1 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3EF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3D0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x451 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x456 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x557 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0x4A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x657 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4D3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x55C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x51C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x504 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x549 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x59B JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x5F4 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x5B8 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x5D5 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x5A3 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x649 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x60D JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x62A JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x5F8 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID PUSH19 0x656365697665417070726F76616C3A20547261 PUSH15 0x73616374696F6E2065786563757469 PUSH16 0x6E2072657665727465642EA265627A7A PUSH19 0x315820F31F557FED57005516872F55FB273CB4 SWAP16 0xF7 0xD1 MLOAD 0xEC PUSH8 0x8A7362B37CF89100 0xC6 PUSH13 0x64736F6C634300051100320000 ",
              "sourceMap": "166:3224:48:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;166:3224:48;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c80638f4ffcb114610030575b600080fd5b6100bf6004803603608081101561004657600080fd5b6001600160a01b03823581169260208101359260408201359092169181019060808101606082013564010000000081111561008057600080fd5b82018360208201111561009257600080fd5b803590602001918460018302840111640100000000831117156100b457600080fd5b5090925090506100c1565b005b6100c9610393565b6001600160a01b0316336001600160a01b03161461011d576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b336001600160a01b03841614610169576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006060610175610398565b905060006101b885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103aa92505050565b905060005b8251811015610206578281815181106101d257fe5b60200260200101516001600160e01b031916826001600160e01b03191614156101fe5760019350610206565b6001016101bd565b5082610251576040805162461bcd60e51b81526020600482015260156024820152741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b604482015290519081900360640190fd5b60405160006020820181815290918291829189918991603c01838380828437808301925050509350505050604051602081830303815290604052806020019051606081101561029f57600080fd5b50602081015160409091015190925090506001600160a01b03808316908b1614610302576040805162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b888114610348576040805162461bcd60e51b815260206004820152600f60248201526e0c2dadeeadce840dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b61038787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103b192505050565b50505050505050505050565b600090565b60408051600081526020810190915290565b6020015190565b60006060306001600160a01b0316836040518082805190602001908083835b602083106103ef5780518252601f1990920191602091820191016103d0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610451576040519150601f19603f3d011682016040523d82523d6000602084013e610456565b606091505b5091509150816105575760448151116104a05760405162461bcd60e51b81526004018080602001828103825260308152602001806106576030913960400191505060405180910390fd5b6104d36040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b8152508261055c565b60405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578181015183820152602001610504565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050565b6060808390506060839050606060448251845101036040519080825280601f01601f19166020018201604052801561059b576020820181803883390190505b509050806000805b85518110156105f4578581815181106105b857fe5b602001015160f81c60f81b8383806001019450815181106105d557fe5b60200101906001600160f81b031916908160001a9053506001016105a3565b5060445b84518110156106495784818151811061060d57fe5b602001015160f81c60f81b83838060010194508151811061062a57fe5b60200101906001600160f81b031916908160001a9053506001016105f8565b509097965050505050505056fe72656365697665417070726f76616c3a205472616e73616374696f6e20657865637574696f6e2072657665727465642ea265627a7a72315820f31f557fed57005516872f55fb273cb49ff7d151ec678a7362b37cf89100c66c64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xC1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC9 PUSH2 0x393 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x11D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x169 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x175 PUSH2 0x398 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B8 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3AA SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1D2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0x1FE JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1BD JUMP JUMPDEST POP DUP3 PUSH2 0x251 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE SWAP1 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP10 SWAP2 DUP10 SWAP2 PUSH1 0x3C ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x29F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0x302 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP9 DUP2 EQ PUSH2 0x348 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x387 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3B1 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3EF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3D0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x451 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x456 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x557 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0x4A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x657 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4D3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x55C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x51C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x504 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x549 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x59B JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x5F4 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x5B8 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x5D5 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x5A3 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x649 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x60D JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x62A JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x5F8 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID PUSH19 0x656365697665417070726F76616C3A20547261 PUSH15 0x73616374696F6E2065786563757469 PUSH16 0x6E2072657665727465642EA265627A7A PUSH19 0x315820F31F557FED57005516872F55FB273CB4 SWAP16 0xF7 0xD1 MLOAD 0xEC PUSH8 0x8A7362B37CF89100 0xC6 PUSH13 0x64736F6C634300051100320000 ",
              "sourceMap": "166:3224:48:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;166:3224:48;;;;;;;;;;;;;;;;;;;494:849;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;494:849:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;494:849:48;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;494:849:48;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;494:849:48;;-1:-1:-1;494:849:48;-1:-1:-1;494:849:48;:::i;:::-;;;677:11;:9;:11::i;:::-;-1:-1:-1;;;;;663:25:48;:10;-1:-1:-1;;;;;663:25:48;;655:50;;;;;-1:-1:-1;;;655:50:48;;;;;;;;;;;;-1:-1:-1;;;655:50:48;;;;;;;;;;;;;;;717:10;-1:-1:-1;;;;;717:20:48;;;709:45;;;;;-1:-1:-1;;;709:45:48;;;;;;;;;;;;-1:-1:-1;;;709:45:48;;;;;;;;;;;;;;;786:14;812:25;840:15;:13;:15::i;:::-;812:43;;859:10;872:14;880:5;;872:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;872:7:48;;-1:-1:-1;;;872:14:48:i;:::-;859:27;-1:-1:-1;895:9:48;890:120;914:9;:16;910:1;:20;890:120;;;953:9;963:1;953:12;;;;;;;;;;;;;;-1:-1:-1;;;;;946:19:48;;:3;-1:-1:-1;;;;;946:19:48;;;942:64;;;985:4;973:16;;995:5;;942:64;932:3;;890:120;;;;1021:9;1013:43;;;;;-1:-1:-1;;;1013:43:48;;;;;;;;;;;;-1:-1:-1;;;1013:43:48;;;;;;;;;;;;;;;1159:35;;1091:14;1176:10;1159:35;;;;;1091:14;;;;;;1188:5;;;;1159:35;;1188:5;;;;1159:35;1:33:-1;57:3;49:6;45:16;35:26;;1159:35:48;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1159:35:48;;;1148:76;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1148:76:48;;;;;;;;;;;-1:-1:-1;1148:76:48;-1:-1:-1;;;;;;1236:17:48;;;;;;;1228:45;;;;;-1:-1:-1;;;1228:45:48;;;;;;;;;;;;-1:-1:-1;;;1228:45:48;;;;;;;;;;;;;;;1295:7;1285:6;:17;1277:45;;;;;-1:-1:-1;;;1277:45:48;;;;;;;;;;;;-1:-1:-1;;;1277:45:48;;;;;;;;;;;;;;;1327:12;1333:5;;1327:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1327:5:48;;-1:-1:-1;;;1327:12:48:i;:::-;494:849;;;;;;;;;;:::o;1607:78::-;1651:7;1607:78;:::o;1922:95::-;1998:15;;;2011:1;1998:15;;;;;;;;;1922:95::o;3263:125::-;3377:2;3366:14;3360:21;;3348:37::o;2133:344::-;2182:12;2196:23;2231:4;-1:-1:-1;;;;;2223:18:48;2242:5;2223:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2223:25:48;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2181:67:48;;;;2257:7;2252:222;;1386:2:49;2275:10:48;:17;:40;2271:199;;2323:58;;-1:-1:-1;;;2323:58:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2271:199;2406:57;;;;;;;;;;;;;;-1:-1:-1;;;2406:57:48;;;2451:10;2406:16;:57::i;:::-;2399:65;;-1:-1:-1;;;2399:65:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2399:65:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2271:199;2133:344;;;:::o;1719:569:49:-;1808:13;1827:22;1858:4;1827:36;;1867:22;1898:4;1867:36;;1907:19;1386:2;1959:9;:16;1940:9;:16;:35;:57;1929:69;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;1929:69:49;87:34:-1;135:17;;-1:-1;1929:69:49;-1:-1:-1;1907:91:49;-1:-1:-1;1907:91:49;2044:9;;2061:87;2085:9;:16;2081:1;:20;2061:87;;;2131:9;2141:1;2131:12;;;;;;;;;;;;;;;;2113:10;2124:3;;;;;;2113:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2113:30:49;;;;;;;;-1:-1:-1;2103:3:49;;2061:87;;;-1:-1:-1;1386:2:49;2151:105;2193:9;:16;2189:1;:20;2151:105;;;2239:9;2249:1;2239:12;;;;;;;;;;;;;;;;2221:10;2232:3;;;;;;2221:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2221:30:49;;;;;;;;-1:-1:-1;2211:3:49;;2151:105;;;-1:-1:-1;2273:10:49;;1719:569;-1:-1:-1;;;;;;;1719:569:49:o"
            },
            "methodIdentifiers": {
              "receiveApproval(address,uint256,address,bytes)": "8f4ffcb1"
            }
          },
          "userdoc": {
            "methods": {
              "receiveApproval(address,uint256,address,bytes)": {
                "notice": "Receives approval from SOV token."
              }
            }
          }
        }
      },
      "contracts/governance/ErrorDecoder.sol": {
        "ErrorDecoder": {
          "abi": [],
          "devdoc": {
            "details": "On EVM if the return data length of a call is less than 68, then the transaction fails silently without a revert message! * As described in the Solidity documentation https://solidity.readthedocs.io/en/v0.5.17/control-structures.html#revert the revert reason is an ABI-encoded string consisting of: 0x08c379a0 // Function selector (method id) for \"Error(string)\" signature 0x0000000000000000000000000000000000000000000000000000000000000020 // Data offset 0x000000000000000000000000000000000000000000000000000000000000001a // String length 0x4e6f7420656e6f7567682045746865722070726f76696465642e000000000000 // String data * Another example, debug data from test:  0x08c379a0  0000000000000000000000000000000000000000000000000000000000000020  0000000000000000000000000000000000000000000000000000000000000034  54696d656c6f636b3a3a73657444656c61793a2044656c6179206d7573742065  7863656564206d696e696d756d2064656c61792e000000000000000000000000 * Parsed into:  Data offset: 20  Length: 34  Error message:    54696d656c6f636b3a3a73657444656c61793a2044656c6179206d7573742065    7863656564206d696e696d756d2064656c61792e000000000000000000000000",
            "methods": {},
            "title": "Base contract to properly handle returned data on failed calls"
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582048375a28a9edd9c1dce0796104bbe080abf2d2d917d6e8c690dca90416d1f73c64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x48 CALLDATACOPY GAS 0x28 0xA9 0xED 0xD9 0xC1 0xDC 0xE0 PUSH26 0x6104BBE080ABF2D2D917D6E8C690DCA90416D1F73C64736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "1322:968:49:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1322:968:49;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a7231582048375a28a9edd9c1dce0796104bbe080abf2d2d917d6e8c690dca90416d1f73c64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x48 CALLDATACOPY GAS 0x28 0xA9 0xED 0xD9 0xC1 0xDC 0xE0 PUSH26 0x6104BBE080ABF2D2D917D6E8C690DCA90416D1F73C64736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "1322:968:49:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/governance/FeeSharingProxy.sol": {
        "FeeSharingProxy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IProtocol",
                  "name": "_protocol",
                  "type": "address"
                },
                {
                  "internalType": "contract IStaking",
                  "name": "_staking",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "CheckpointAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "FeeWithdrawn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "UserFeeWithdrawn",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_loanPoolToken",
                  "type": "address"
                }
              ],
              "name": "getAccumulatedFees",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lastFeeWithdrawalTime",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "numTokenCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "processedCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocol",
              "outputs": [
                {
                  "internalType": "contract IProtocol",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract IStaking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "tokenCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "blockNumber",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "timestamp",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "totalWeightedStake",
                  "type": "uint96"
                },
                {
                  "internalType": "uint96",
                  "name": "numTokens",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "_amount",
                  "type": "uint96"
                }
              ],
              "name": "transferTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "unprocessedAmount",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_loanPoolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "_maxCheckpoints",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                }
              ],
              "name": "withdrawFees",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "getAccumulatedFees(address,address)": {
                "params": {
                  "_loanPoolToken": "Address of the pool token.",
                  "_user": "The address of the user or contract."
                },
                "return": "The accumulated fee for the message sender."
              },
              "transferTokens(address,uint96)": {
                "details": "We just update amount of tokens here and write checkpoint in a separate methods in order to prevent adding checkpoints too often.",
                "params": {
                  "_amount": "Amount to be transferred.",
                  "_token": "Address of the token."
                }
              },
              "withdraw(address,uint32,address)": {
                "params": {
                  "_loanPoolToken": "Address of the pool token.",
                  "_maxCheckpoints": "Maximum number of checkpoints to be processed.",
                  "_receiver": "The receiver of tokens or msg.sender"
                }
              },
              "withdrawFees(address)": {
                "params": {
                  "_token": "Address of the token"
                }
              }
            },
            "title": "The FeeSharingProxy contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516119a43803806119a48339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b039384166001600160a01b0319918216179091556001805493909216921691909117905561192a8061007a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80637913b451116100715780637913b451146101dd5780638b6fdcba1461020b5780638ce744261461024d578063a965b3a914610255578063abe979e114610291578063f3bdba8f146102c6576100a9565b8063164e68de146100ae57806320020208146100d65780633d67df6f146101155780634cf088d9146101555780637053001714610179575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b03166102ec565b005b6100fc600480360360208110156100ec57600080fd5b50356001600160a01b03166106b1565b6040805163ffffffff9092168252519081900360200190f35b6101436004803603604081101561012b57600080fd5b506001600160a01b03813581169160200135166106c9565b60408051918252519081900360200190f35b61015d6106e3565b604080516001600160a01b039092168252519081900360200190f35b6101a56004803603604081101561018f57600080fd5b506001600160a01b0381351690602001356106f2565b6040805163ffffffff95861681529390941660208401526001600160601b039182168385015216606082015290519081900360800190f35b6100fc600480360360408110156101f357600080fd5b506001600160a01b038135811691602001351661073e565b6102316004803603602081101561022157600080fd5b50356001600160a01b0316610761565b604080516001600160601b039092168252519081900360200190f35b61015d61077c565b6100d46004803603606081101561026b57600080fd5b506001600160a01b03813581169163ffffffff602082013516916040909101351661078b565b6100d4600480360360408110156102a757600080fd5b5080356001600160a01b031690602001356001600160601b0316610937565b610143600480360360208110156102dc57600080fd5b50356001600160a01b0316610b66565b6001600160a01b0381166103315760405162461bcd60e51b815260040180806020018281038252602e815260200180611894602e913960400191505060405180910390fd5b60008054604080516310c59ce360e11b81526001600160a01b0385811660048301529151919092169163218b39c691602480830192602092919082900301818787803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b505050506040513d60208110156103aa57600080fd5b505190506001600160a01b0381166103f35760405162461bcd60e51b81526004018080602001828103825260338152602001806117e16033913960400191505060405180910390fd5b6000805460408051631e4aaa4f60e31b81526001600160a01b0386811660048301523060248301529151919092169163f255527891604480830192602092919082900301818787803b15801561044857600080fd5b505af115801561045c573d6000803e3d6000fd5b505050506040513d602081101561047257600080fd5b50519050806104b25760405162461bcd60e51b81526004018080602001828103825260348152602001806118c26034913960400191505060405180910390fd5b826001600160a01b031663095ea7b383836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b505050506040513d602081101561053c57600080fd5b5050604080516340c10f1960e01b81523060048201526024810183905290516000916001600160a01b038516916340c10f199160448082019260209290919082900301818787803b15801561059057600080fd5b505af11580156105a4573d6000803e3d6000fd5b505050506040513d60208110156105ba57600080fd5b5051604080516060810182528181529192506000916105e3918491906118546020830139610b78565b6001600160a01b03851660009081526006602090815260409182902054825160608101845283815293945061062c936001600160601b0390911692859261181490830139610c12565b6001600160a01b038516600090815260066020526040902080546001600160601b0319166001600160601b039290921691909117905561066b84610c7c565b6040805183815290516001600160a01b0386169133917eed5939179dc194223f0edd1517ecee2210b22da7f82c8e4b1795e93b9f06aa9181900360200190a35050505050565b60036020526000908152604090205463ffffffff1681565b6000806106d884846000610cf0565b509150505b92915050565b6001546001600160a01b031681565b600260209081526000928352604080842090915290825290205463ffffffff808216916401000000008104909116906001600160601b03600160401b8204811691600160a01b90041684565b600460209081526000928352604080842090915290825290205463ffffffff1681565b6006602052600090815260409020546001600160601b031681565b6000546001600160a01b031681565b60008263ffffffff16116107d05760405162461bcd60e51b815260040180806020018281038252603d81526020018061168f603d913960400191505060405180910390fd5b336001600160a01b0382166107e3573391505b6000806107f1838787610cf0565b6001600160a01b038581166000818152600460208181526040808420958e16808552958252808420805463ffffffff191663ffffffff8916179055805163a9059cbb60e01b815292830194909452602482018790529251959750939550919363a9059cbb93604480820194918390030190829087803b15801561087357600080fd5b505af1158015610887573d6000803e3d6000fd5b505050506040513d602081101561089d57600080fd5b50516108da5760405162461bcd60e51b815260040180806020018281038252602c815260200180611787602c913960400191505060405180910390fd5b856001600160a01b0316846001600160a01b0316336001600160a01b03167fe635adc5d0c2d7b47215ce5ed57a79c3db183a1ef414ccfc43f24f19178a630f856040518082815260200191505060405180910390a4505050505050565b6001600160a01b03821661097c5760405162461bcd60e51b81526004018080602001828103825260308152602001806117286030913960400191505060405180910390fd5b6000816001600160601b0316116109c45760405162461bcd60e51b815260040180806020018281038252602f815260200180611758602f913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526001600160601b038316604482015290516000916001600160a01b038516916323b872dd9160648082019260209290919082900301818787803b158015610a2457600080fd5b505af1158015610a38573d6000803e3d6000fd5b505050506040513d6020811015610a4e57600080fd5b5051905080610a8e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806117b3602e913960400191505060405180910390fd5b6001600160a01b038316600090815260066020908152604091829020548251606081019093526037808452610ad9936001600160601b03909216928692919061165890830139610c12565b6001600160a01b038416600090815260066020526040902080546001600160601b0319166001600160601b0392909216919091179055610b1883610c7c565b604080516001600160601b038416815290516001600160a01b0385169133917f1b89874203ff7f0bba87c969ada3f32fda22ed38a6706d35199d21280c7811b19181900360200190a3505050565b60056020526000908152604090205481565b600081600160601b8410610c0a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bcf578181015183820152602001610bb7565b50505050905090810190601f168015610bfc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b6000838301826001600160601b038087169083161015610c735760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcf578181015183820152602001610bb7565b50949350505050565b6001600160a01b03811660009081526005602052604090205462015180429190910310610ced576001600160a01b03811660009081526005602090815260408083204290556006909152902080546001600160601b031981169091556001600160601b0316610ceb8282611043565b505b50565b6001600160a01b038084166000908152600460209081526040808320938616835292905290812054819063ffffffff908116908290851615610d9e576001600160a01b03861660009081526003602052604090205463ffffffff90811690831610610d8c5760405162461bcd60e51b815260040180806020018281038252603981526020018061161f6039913960400191505060405180910390fd5b610d97828787611314565b9050610e10565b6001600160a01b03861660009081526003602052604090205463ffffffff90811690831610610def57505050506001600160a01b03821660009081526003602052604081205463ffffffff1661103b565b506001600160a01b03851660009081526003602052604090205463ffffffff165b60008080845b8463ffffffff168163ffffffff161015611030576001600160a01b03808b16600090815260026020908152604080832063ffffffff8087168552908352818420600154815484516372ec979560e01b815264010000000090910490931660048401529251909592909216926372ec979592602480840193829003018186803b158015610ea157600080fd5b505afa158015610eb5573d6000803e3d6000fd5b505050506040513d6020811015610ecb57600080fd5b50519050600085821415610ee0575083610fc9565b600160009054906101000a90046001600160a01b03166001600160a01b03166337e6b1c18f60018660000160009054906101000a900463ffffffff16038660000160049054906101000a900463ffffffff166040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018363ffffffff1681526020018263ffffffff168152602001935050505060206040518083038186803b158015610f9257600080fd5b505afa158015610fa6573d6000803e3d6000fd5b505050506040513d6020811015610fbc57600080fd5b5051919550909350849050835b825460009061100c906001600160601b03600160401b820481169161100091600160a01b909104811690861663ffffffff6113e616565b9063ffffffff61144616565b905061101e888263ffffffff61148816565b97505060019093019250610e16915050565b509195509193505050505b935093915050565b6000611067436040518060600160405280603f81526020016115e0603f91396114e2565b9050600061108d4260405180608001604052806042815260200161159e604291396114e2565b6001600160a01b0385811660009081526003602090815260408083205460015482516312916bdd60e11b815263ffffffff6000198b01811660048301524260248301529351979850929091169593941692632522d7ba92604480840193919291829003018186803b15801561110157600080fd5b505afa158015611115573d6000803e3d6000fd5b505050506040513d602081101561112b57600080fd5b5051905063ffffffff82161580159061117557506001600160a01b038616600090815260026020908152604080832063ffffffff6000198701811685529252909120548582169116145b156111ea576001600160a01b03868116600090815260026020908152604080832063ffffffff6000198801168452909152902080546001600160601b03888116600160a01b02908516600160401b026bffffffffffffffffffffffff60401b19909216919091179092169190911790556112c3565b6040805160808101825263ffffffff808716825285811660208084019182526001600160601b038087168587019081528b8216606087019081526001600160a01b03808f166000818152600287528a81208d8a16825287528a812099518a549851955194518716600160a01b0294909616600160401b026bffffffffffffffffffffffff60401b19958a166401000000000267ffffffff0000000019978b1663ffffffff199a8b161797909716969096179490941694909417161790955584526003905292909120805460018601909216919092161790555b604080516001600160601b038716815290516001600160a01b0388169133917ff61a5f2f4d0b2d871d5bf18717d08a6b0f543afa7e08dad5df1fea150f7296329181900360200190a3505050505050565b6001600160a01b03821660009081526003602052604081205463ffffffff908116908290841661134557508061139c565b606463ffffffff8516111561135957606493505b61138384870163ffffffff166040518060600160405280603b81526020016116cc603b91396114e2565b90508163ffffffff168163ffffffff16111561139c5750805b6001600160a01b038516600090815260026020908152604080832063ffffffff60001986018116855292529091205416438114156113dc57600019909101905b5095945050505050565b6000826113f5575060006106dd565b8282028284828161140257fe5b041461143f5760405162461bcd60e51b81526004018080602001828103825260218152602001806117076021913960400191505060405180910390fd5b9392505050565b600061143f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611538565b60008282018381101561143f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000816401000000008410610c0a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcf578181015183820152602001610bb7565b600081836115875760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcf578181015183820152602001610bb7565b50600083858161159357fe5b049594505050505056fe46656553686172696e6750726f78793a3a5f7772697465436865636b706f696e743a20626c6f636b2074696d657374616d702065786365656473203332206269747346656553686172696e6750726f78793a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747346656553686172696e6750726f78793a3a7769746864726177466565733a206e6f20746f6b656e7320666f722061207769746864726177616c46656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20616d6f756e742065786365656473203936206269747346656553686172696e6750726f78793a3a77697468647261773a205f6d6178436865636b706f696e74732073686f756c6420626520706f73697469766546656553686172696e6750726f78793a3a77697468647261773a20636865636b706f696e7420696e64657820657863656564732033322062697473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20696e76616c6964206164647265737346656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20696e76616c696420616d6f756e7446656553686172696e6750726f78793a3a77697468647261773a207769746864726177616c206661696c65645374616b696e673a3a7472616e73666572546f6b656e733a20746f6b656e207472616e73666572206661696c656446656553686172696e6750726f78793a3a7769746864726177466565733a206c6f616e20746f6b656e206e6f7420666f756e6446656553686172696e6750726f78793a3a7769746864726177466565733a20756e70726f636573736564416d6f756e742065786365656473203936206269747346656553686172696e6750726f78793a3a7769746864726177466565733a20706f6f6c20746f6b656e20616d6f756e742065786365656473203936206269747346656553686172696e6750726f78793a3a7769746864726177466565733a20696e76616c6964206164647265737346656553686172696e6750726f78793a3a7769746864726177466565733a206e6f20746f6b656e7320746f207769746864726177a265627a7a72315820fa4b6fe4b212e19fc14503d0af4c8d2be579d7893100d3d3ef3a0a81d412e8fe64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x19A4 CODESIZE SUB DUP1 PUSH2 0x19A4 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP4 SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x192A DUP1 PUSH2 0x7A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7913B451 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x7913B451 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x8B6FDCBA EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x8CE74426 EQ PUSH2 0x24D JUMPI DUP1 PUSH4 0xA965B3A9 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0xABE979E1 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0xF3BDBA8F EQ PUSH2 0x2C6 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x164E68DE EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x20020208 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0x3D67DF6F EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x70530017 EQ PUSH2 0x179 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EC JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x143 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15D PUSH2 0x6E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP2 DUP3 AND DUP4 DUP6 ADD MSTORE AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x73E JUMP JUMPDEST PUSH2 0x231 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x761 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15D PUSH2 0x77C JUMP JUMPDEST PUSH2 0xD4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x78B JUMP JUMPDEST PUSH2 0xD4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x937 JUMP JUMPDEST PUSH2 0x143 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x331 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1894 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x10C59CE3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x218B39C6 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x394 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17E1 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1E4AAA4F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xF2555278 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x4B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18C2 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x526 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP2 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH2 0x5E3 SWAP2 DUP5 SWAP2 SWAP1 PUSH2 0x1854 PUSH1 0x20 DUP4 ADD CODECOPY PUSH2 0xB78 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP4 DUP2 MSTORE SWAP4 SWAP5 POP PUSH2 0x62C SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 PUSH2 0x1814 SWAP1 DUP4 ADD CODECOPY PUSH2 0xC12 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x66B DUP5 PUSH2 0xC7C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 CALLER SWAP2 PUSH31 0xED5939179DC194223F0EDD1517ECEE2210B22DA7F82C8E4B1795E93B9F06AA SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x6D8 DUP5 DUP5 PUSH1 0x0 PUSH2 0xCF0 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH5 0x100000000 DUP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV AND DUP5 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x7D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x168F PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x7E3 JUMPI CALLER SWAP2 POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7F1 DUP4 DUP8 DUP8 PUSH2 0xCF0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP6 DUP15 AND DUP1 DUP6 MSTORE SWAP6 DUP3 MSTORE DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF DUP10 AND OR SWAP1 SSTORE DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE SWAP3 MLOAD SWAP6 SWAP8 POP SWAP4 SWAP6 POP SWAP2 SWAP4 PUSH4 0xA9059CBB SWAP4 PUSH1 0x44 DUP1 DUP3 ADD SWAP5 SWAP2 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x873 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x887 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x8DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1787 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE635ADC5D0C2D7B47215CE5ED57A79C3DB183A1EF414CCFC43F24F19178A630F DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x97C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1728 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x9C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1758 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xA8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17B3 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x37 DUP1 DUP5 MSTORE PUSH2 0xAD9 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND SWAP3 DUP7 SWAP3 SWAP2 SWAP1 PUSH2 0x1658 SWAP1 DUP4 ADD CODECOPY PUSH2 0xC12 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xB18 DUP4 PUSH2 0xC7C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0x1B89874203FF7F0BBA87C969ADA3F32FDA22ED38A6706D35199D21280C7811B1 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x60 SHL DUP5 LT PUSH2 0xC0A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBCF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xBFC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0xC73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xBCF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB7 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH3 0x15180 TIMESTAMP SWAP2 SWAP1 SWAP2 SUB LT PUSH2 0xCED JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 TIMESTAMP SWAP1 SSTORE PUSH1 0x6 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0xCEB DUP3 DUP3 PUSH2 0x1043 JUMP JUMPDEST POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD DUP2 SWAP1 PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP3 SWAP1 DUP6 AND ISZERO PUSH2 0xD9E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP4 AND LT PUSH2 0xD8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x161F PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD97 DUP3 DUP8 DUP8 PUSH2 0x1314 JUMP JUMPDEST SWAP1 POP PUSH2 0xE10 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP4 AND LT PUSH2 0xDEF JUMPI POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND PUSH2 0x103B JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 JUMPDEST DUP5 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0x1030 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP1 DUP8 AND DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 SLOAD DUP2 SLOAD DUP5 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH5 0x100000000 SWAP1 SWAP2 DIV SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE SWAP3 MLOAD SWAP1 SWAP6 SWAP3 SWAP1 SWAP3 AND SWAP3 PUSH4 0x72EC9795 SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xECB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP3 EQ ISZERO PUSH2 0xEE0 JUMPI POP DUP4 PUSH2 0xFC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x37E6B1C1 DUP16 PUSH1 0x1 DUP7 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND SUB DUP7 PUSH1 0x0 ADD PUSH1 0x4 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP6 POP SWAP1 SWAP4 POP DUP5 SWAP1 POP DUP4 JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x100C SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH2 0x1000 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP7 AND PUSH4 0xFFFFFFFF PUSH2 0x13E6 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1446 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x101E DUP9 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1488 AND JUMP JUMPDEST SWAP8 POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xE16 SWAP2 POP POP JUMP JUMPDEST POP SWAP2 SWAP6 POP SWAP2 SWAP4 POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1067 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15E0 PUSH1 0x3F SWAP2 CODECOPY PUSH2 0x14E2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x108D TIMESTAMP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x159E PUSH1 0x42 SWAP2 CODECOPY PUSH2 0x14E2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 SLOAD DUP3 MLOAD PUSH4 0x12916BDD PUSH1 0xE1 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP12 ADD DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE TIMESTAMP PUSH1 0x24 DUP4 ADD MSTORE SWAP4 MLOAD SWAP8 SWAP9 POP SWAP3 SWAP1 SWAP2 AND SWAP6 SWAP4 SWAP5 AND SWAP3 PUSH4 0x2522D7BA SWAP3 PUSH1 0x44 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x112B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH4 0xFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1175 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP8 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP6 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x11EA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP9 DUP2 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP1 DUP6 AND PUSH1 0x1 PUSH1 0x40 SHL MUL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x12C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP8 AND DUP3 MSTORE DUP6 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND DUP6 DUP8 ADD SWAP1 DUP2 MSTORE DUP12 DUP3 AND PUSH1 0x60 DUP8 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 DUP8 MSTORE DUP11 DUP2 KECCAK256 DUP14 DUP11 AND DUP3 MSTORE DUP8 MSTORE DUP11 DUP2 KECCAK256 SWAP10 MLOAD DUP11 SLOAD SWAP9 MLOAD SWAP6 MLOAD SWAP5 MLOAD DUP8 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP5 SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x40 SHL MUL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT SWAP6 DUP11 AND PUSH5 0x100000000 MUL PUSH8 0xFFFFFFFF00000000 NOT SWAP8 DUP12 AND PUSH4 0xFFFFFFFF NOT SWAP11 DUP12 AND OR SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP5 SWAP1 SWAP5 AND SWAP5 SWAP1 SWAP5 OR AND OR SWAP1 SWAP6 SSTORE DUP5 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP7 ADD SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 CALLER SWAP2 PUSH32 0xF61A5F2F4D0B2D871D5BF18717D08A6B0F543AFA7E08DAD5DF1FEA150F729632 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP3 SWAP1 DUP5 AND PUSH2 0x1345 JUMPI POP DUP1 PUSH2 0x139C JUMP JUMPDEST PUSH1 0x64 PUSH4 0xFFFFFFFF DUP6 AND GT ISZERO PUSH2 0x1359 JUMPI PUSH1 0x64 SWAP4 POP JUMPDEST PUSH2 0x1383 DUP5 DUP8 ADD PUSH4 0xFFFFFFFF AND PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16CC PUSH1 0x3B SWAP2 CODECOPY PUSH2 0x14E2 JUMP JUMPDEST SWAP1 POP DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x139C JUMPI POP DUP1 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND NUMBER DUP2 EQ ISZERO PUSH2 0x13DC JUMPI PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x13F5 JUMPI POP PUSH1 0x0 PUSH2 0x6DD JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1402 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x143F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1707 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x143F DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1538 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x143F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH5 0x100000000 DUP5 LT PUSH2 0xC0A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xBCF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1587 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xBCF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB7 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1593 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID CHAINID PUSH6 0x655368617269 PUSH15 0x6750726F78793A3A5F777269746543 PUSH9 0x65636B706F696E743A KECCAK256 PUSH3 0x6C6F63 PUSH12 0x2074696D657374616D702065 PUSH25 0x6365656473203332206269747346656553686172696E675072 PUSH16 0x78793A3A5F7772697465436865636B70 PUSH16 0x696E743A20626C6F636B206E756D6265 PUSH19 0x20657863656564732033322062697473466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A7769746864726177466565733A206E6F20746F6B656E7320 PUSH7 0x6F722061207769 PUSH21 0x6864726177616C46656553686172696E6750726F78 PUSH26 0x3A3A7472616E73666572546F6B656E733A20616D6F756E742065 PUSH25 0x6365656473203936206269747346656553686172696E675072 PUSH16 0x78793A3A77697468647261773A205F6D PUSH2 0x7843 PUSH9 0x65636B706F696E7473 KECCAK256 PUSH20 0x686F756C6420626520706F736974697665466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A77697468647261773A20636865636B706F696E7420696E64 PUSH6 0x782065786365 PUSH6 0x647320333220 PUSH3 0x697473 MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F7746656553686172696E PUSH8 0x50726F78793A3A74 PUSH19 0x616E73666572546F6B656E733A20696E76616C PUSH10 0x64206164647265737346 PUSH6 0x655368617269 PUSH15 0x6750726F78793A3A7472616E736665 PUSH19 0x546F6B656E733A20696E76616C696420616D6F PUSH22 0x6E7446656553686172696E6750726F78793A3A776974 PUSH9 0x647261773A20776974 PUSH9 0x64726177616C206661 PUSH10 0x6C65645374616B696E67 GASPRICE GASPRICE PUSH21 0x72616E73666572546F6B656E733A20746F6B656E20 PUSH21 0x72616E73666572206661696C656446656553686172 PUSH10 0x6E6750726F78793A3A77 PUSH10 0x74686472617746656573 GASPRICE KECCAK256 PUSH13 0x6F616E20746F6B656E206E6F74 KECCAK256 PUSH7 0x6F756E64466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A7769746864726177466565733A20756E70726F6365737365 PUSH5 0x416D6F756E PUSH21 0x206578636565647320393620626974734665655368 PUSH2 0x7269 PUSH15 0x6750726F78793A3A77697468647261 PUSH24 0x466565733A20706F6F6C20746F6B656E20616D6F756E7420 PUSH6 0x786365656473 KECCAK256 CODECOPY CALLDATASIZE KECCAK256 PUSH3 0x697473 CHAINID PUSH6 0x655368617269 PUSH15 0x6750726F78793A3A77697468647261 PUSH24 0x466565733A20696E76616C69642061646472657373466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A7769746864726177466565733A206E6F20746F6B656E7320 PUSH21 0x6F207769746864726177A265627A7A72315820FA4B PUSH16 0xE4B212E19FC14503D0AF4C8D2BE579D7 DUP10 BALANCE STOP 0xD3 0xD3 0xEF GASPRICE EXP DUP2 0xD4 SLT 0xE8 INVALID PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "2104:11630:50:-;;;3890:109;8:9:-1;5:2;;;30:1;27;20:12;5:2;3890:109:50;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3890:109:50;;;;;;;3953:8;:20;;-1:-1:-1;;;;;3953:20:50;;;-1:-1:-1;;;;;;3953:20:50;;;;;;;;3977:18;;;;;;;;;;;;;;2104:11630;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100a95760003560e01c80637913b451116100715780637913b451146101dd5780638b6fdcba1461020b5780638ce744261461024d578063a965b3a914610255578063abe979e114610291578063f3bdba8f146102c6576100a9565b8063164e68de146100ae57806320020208146100d65780633d67df6f146101155780634cf088d9146101555780637053001714610179575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b03166102ec565b005b6100fc600480360360208110156100ec57600080fd5b50356001600160a01b03166106b1565b6040805163ffffffff9092168252519081900360200190f35b6101436004803603604081101561012b57600080fd5b506001600160a01b03813581169160200135166106c9565b60408051918252519081900360200190f35b61015d6106e3565b604080516001600160a01b039092168252519081900360200190f35b6101a56004803603604081101561018f57600080fd5b506001600160a01b0381351690602001356106f2565b6040805163ffffffff95861681529390941660208401526001600160601b039182168385015216606082015290519081900360800190f35b6100fc600480360360408110156101f357600080fd5b506001600160a01b038135811691602001351661073e565b6102316004803603602081101561022157600080fd5b50356001600160a01b0316610761565b604080516001600160601b039092168252519081900360200190f35b61015d61077c565b6100d46004803603606081101561026b57600080fd5b506001600160a01b03813581169163ffffffff602082013516916040909101351661078b565b6100d4600480360360408110156102a757600080fd5b5080356001600160a01b031690602001356001600160601b0316610937565b610143600480360360208110156102dc57600080fd5b50356001600160a01b0316610b66565b6001600160a01b0381166103315760405162461bcd60e51b815260040180806020018281038252602e815260200180611894602e913960400191505060405180910390fd5b60008054604080516310c59ce360e11b81526001600160a01b0385811660048301529151919092169163218b39c691602480830192602092919082900301818787803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b505050506040513d60208110156103aa57600080fd5b505190506001600160a01b0381166103f35760405162461bcd60e51b81526004018080602001828103825260338152602001806117e16033913960400191505060405180910390fd5b6000805460408051631e4aaa4f60e31b81526001600160a01b0386811660048301523060248301529151919092169163f255527891604480830192602092919082900301818787803b15801561044857600080fd5b505af115801561045c573d6000803e3d6000fd5b505050506040513d602081101561047257600080fd5b50519050806104b25760405162461bcd60e51b81526004018080602001828103825260348152602001806118c26034913960400191505060405180910390fd5b826001600160a01b031663095ea7b383836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b505050506040513d602081101561053c57600080fd5b5050604080516340c10f1960e01b81523060048201526024810183905290516000916001600160a01b038516916340c10f199160448082019260209290919082900301818787803b15801561059057600080fd5b505af11580156105a4573d6000803e3d6000fd5b505050506040513d60208110156105ba57600080fd5b5051604080516060810182528181529192506000916105e3918491906118546020830139610b78565b6001600160a01b03851660009081526006602090815260409182902054825160608101845283815293945061062c936001600160601b0390911692859261181490830139610c12565b6001600160a01b038516600090815260066020526040902080546001600160601b0319166001600160601b039290921691909117905561066b84610c7c565b6040805183815290516001600160a01b0386169133917eed5939179dc194223f0edd1517ecee2210b22da7f82c8e4b1795e93b9f06aa9181900360200190a35050505050565b60036020526000908152604090205463ffffffff1681565b6000806106d884846000610cf0565b509150505b92915050565b6001546001600160a01b031681565b600260209081526000928352604080842090915290825290205463ffffffff808216916401000000008104909116906001600160601b03600160401b8204811691600160a01b90041684565b600460209081526000928352604080842090915290825290205463ffffffff1681565b6006602052600090815260409020546001600160601b031681565b6000546001600160a01b031681565b60008263ffffffff16116107d05760405162461bcd60e51b815260040180806020018281038252603d81526020018061168f603d913960400191505060405180910390fd5b336001600160a01b0382166107e3573391505b6000806107f1838787610cf0565b6001600160a01b038581166000818152600460208181526040808420958e16808552958252808420805463ffffffff191663ffffffff8916179055805163a9059cbb60e01b815292830194909452602482018790529251959750939550919363a9059cbb93604480820194918390030190829087803b15801561087357600080fd5b505af1158015610887573d6000803e3d6000fd5b505050506040513d602081101561089d57600080fd5b50516108da5760405162461bcd60e51b815260040180806020018281038252602c815260200180611787602c913960400191505060405180910390fd5b856001600160a01b0316846001600160a01b0316336001600160a01b03167fe635adc5d0c2d7b47215ce5ed57a79c3db183a1ef414ccfc43f24f19178a630f856040518082815260200191505060405180910390a4505050505050565b6001600160a01b03821661097c5760405162461bcd60e51b81526004018080602001828103825260308152602001806117286030913960400191505060405180910390fd5b6000816001600160601b0316116109c45760405162461bcd60e51b815260040180806020018281038252602f815260200180611758602f913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526001600160601b038316604482015290516000916001600160a01b038516916323b872dd9160648082019260209290919082900301818787803b158015610a2457600080fd5b505af1158015610a38573d6000803e3d6000fd5b505050506040513d6020811015610a4e57600080fd5b5051905080610a8e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806117b3602e913960400191505060405180910390fd5b6001600160a01b038316600090815260066020908152604091829020548251606081019093526037808452610ad9936001600160601b03909216928692919061165890830139610c12565b6001600160a01b038416600090815260066020526040902080546001600160601b0319166001600160601b0392909216919091179055610b1883610c7c565b604080516001600160601b038416815290516001600160a01b0385169133917f1b89874203ff7f0bba87c969ada3f32fda22ed38a6706d35199d21280c7811b19181900360200190a3505050565b60056020526000908152604090205481565b600081600160601b8410610c0a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bcf578181015183820152602001610bb7565b50505050905090810190601f168015610bfc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b6000838301826001600160601b038087169083161015610c735760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcf578181015183820152602001610bb7565b50949350505050565b6001600160a01b03811660009081526005602052604090205462015180429190910310610ced576001600160a01b03811660009081526005602090815260408083204290556006909152902080546001600160601b031981169091556001600160601b0316610ceb8282611043565b505b50565b6001600160a01b038084166000908152600460209081526040808320938616835292905290812054819063ffffffff908116908290851615610d9e576001600160a01b03861660009081526003602052604090205463ffffffff90811690831610610d8c5760405162461bcd60e51b815260040180806020018281038252603981526020018061161f6039913960400191505060405180910390fd5b610d97828787611314565b9050610e10565b6001600160a01b03861660009081526003602052604090205463ffffffff90811690831610610def57505050506001600160a01b03821660009081526003602052604081205463ffffffff1661103b565b506001600160a01b03851660009081526003602052604090205463ffffffff165b60008080845b8463ffffffff168163ffffffff161015611030576001600160a01b03808b16600090815260026020908152604080832063ffffffff8087168552908352818420600154815484516372ec979560e01b815264010000000090910490931660048401529251909592909216926372ec979592602480840193829003018186803b158015610ea157600080fd5b505afa158015610eb5573d6000803e3d6000fd5b505050506040513d6020811015610ecb57600080fd5b50519050600085821415610ee0575083610fc9565b600160009054906101000a90046001600160a01b03166001600160a01b03166337e6b1c18f60018660000160009054906101000a900463ffffffff16038660000160049054906101000a900463ffffffff166040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018363ffffffff1681526020018263ffffffff168152602001935050505060206040518083038186803b158015610f9257600080fd5b505afa158015610fa6573d6000803e3d6000fd5b505050506040513d6020811015610fbc57600080fd5b5051919550909350849050835b825460009061100c906001600160601b03600160401b820481169161100091600160a01b909104811690861663ffffffff6113e616565b9063ffffffff61144616565b905061101e888263ffffffff61148816565b97505060019093019250610e16915050565b509195509193505050505b935093915050565b6000611067436040518060600160405280603f81526020016115e0603f91396114e2565b9050600061108d4260405180608001604052806042815260200161159e604291396114e2565b6001600160a01b0385811660009081526003602090815260408083205460015482516312916bdd60e11b815263ffffffff6000198b01811660048301524260248301529351979850929091169593941692632522d7ba92604480840193919291829003018186803b15801561110157600080fd5b505afa158015611115573d6000803e3d6000fd5b505050506040513d602081101561112b57600080fd5b5051905063ffffffff82161580159061117557506001600160a01b038616600090815260026020908152604080832063ffffffff6000198701811685529252909120548582169116145b156111ea576001600160a01b03868116600090815260026020908152604080832063ffffffff6000198801168452909152902080546001600160601b03888116600160a01b02908516600160401b026bffffffffffffffffffffffff60401b19909216919091179092169190911790556112c3565b6040805160808101825263ffffffff808716825285811660208084019182526001600160601b038087168587019081528b8216606087019081526001600160a01b03808f166000818152600287528a81208d8a16825287528a812099518a549851955194518716600160a01b0294909616600160401b026bffffffffffffffffffffffff60401b19958a166401000000000267ffffffff0000000019978b1663ffffffff199a8b161797909716969096179490941694909417161790955584526003905292909120805460018601909216919092161790555b604080516001600160601b038716815290516001600160a01b0388169133917ff61a5f2f4d0b2d871d5bf18717d08a6b0f543afa7e08dad5df1fea150f7296329181900360200190a3505050505050565b6001600160a01b03821660009081526003602052604081205463ffffffff908116908290841661134557508061139c565b606463ffffffff8516111561135957606493505b61138384870163ffffffff166040518060600160405280603b81526020016116cc603b91396114e2565b90508163ffffffff168163ffffffff16111561139c5750805b6001600160a01b038516600090815260026020908152604080832063ffffffff60001986018116855292529091205416438114156113dc57600019909101905b5095945050505050565b6000826113f5575060006106dd565b8282028284828161140257fe5b041461143f5760405162461bcd60e51b81526004018080602001828103825260218152602001806117076021913960400191505060405180910390fd5b9392505050565b600061143f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611538565b60008282018381101561143f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000816401000000008410610c0a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcf578181015183820152602001610bb7565b600081836115875760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcf578181015183820152602001610bb7565b50600083858161159357fe5b049594505050505056fe46656553686172696e6750726f78793a3a5f7772697465436865636b706f696e743a20626c6f636b2074696d657374616d702065786365656473203332206269747346656553686172696e6750726f78793a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747346656553686172696e6750726f78793a3a7769746864726177466565733a206e6f20746f6b656e7320666f722061207769746864726177616c46656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20616d6f756e742065786365656473203936206269747346656553686172696e6750726f78793a3a77697468647261773a205f6d6178436865636b706f696e74732073686f756c6420626520706f73697469766546656553686172696e6750726f78793a3a77697468647261773a20636865636b706f696e7420696e64657820657863656564732033322062697473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20696e76616c6964206164647265737346656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20696e76616c696420616d6f756e7446656553686172696e6750726f78793a3a77697468647261773a207769746864726177616c206661696c65645374616b696e673a3a7472616e73666572546f6b656e733a20746f6b656e207472616e73666572206661696c656446656553686172696e6750726f78793a3a7769746864726177466565733a206c6f616e20746f6b656e206e6f7420666f756e6446656553686172696e6750726f78793a3a7769746864726177466565733a20756e70726f636573736564416d6f756e742065786365656473203936206269747346656553686172696e6750726f78793a3a7769746864726177466565733a20706f6f6c20746f6b656e20616d6f756e742065786365656473203936206269747346656553686172696e6750726f78793a3a7769746864726177466565733a20696e76616c6964206164647265737346656553686172696e6750726f78793a3a7769746864726177466565733a206e6f20746f6b656e7320746f207769746864726177a265627a7a72315820fa4b6fe4b212e19fc14503d0af4c8d2be579d7893100d3d3ef3a0a81d412e8fe64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7913B451 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x7913B451 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x8B6FDCBA EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x8CE74426 EQ PUSH2 0x24D JUMPI DUP1 PUSH4 0xA965B3A9 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0xABE979E1 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0xF3BDBA8F EQ PUSH2 0x2C6 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x164E68DE EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x20020208 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0x3D67DF6F EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x70530017 EQ PUSH2 0x179 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EC JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x143 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15D PUSH2 0x6E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP2 DUP3 AND DUP4 DUP6 ADD MSTORE AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x73E JUMP JUMPDEST PUSH2 0x231 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x761 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15D PUSH2 0x77C JUMP JUMPDEST PUSH2 0xD4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x78B JUMP JUMPDEST PUSH2 0xD4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x937 JUMP JUMPDEST PUSH2 0x143 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x331 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1894 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x10C59CE3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x218B39C6 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x394 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17E1 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1E4AAA4F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xF2555278 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x4B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18C2 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x526 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP2 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH2 0x5E3 SWAP2 DUP5 SWAP2 SWAP1 PUSH2 0x1854 PUSH1 0x20 DUP4 ADD CODECOPY PUSH2 0xB78 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP4 DUP2 MSTORE SWAP4 SWAP5 POP PUSH2 0x62C SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 PUSH2 0x1814 SWAP1 DUP4 ADD CODECOPY PUSH2 0xC12 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x66B DUP5 PUSH2 0xC7C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 CALLER SWAP2 PUSH31 0xED5939179DC194223F0EDD1517ECEE2210B22DA7F82C8E4B1795E93B9F06AA SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x6D8 DUP5 DUP5 PUSH1 0x0 PUSH2 0xCF0 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH5 0x100000000 DUP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV AND DUP5 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF AND GT PUSH2 0x7D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x168F PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x7E3 JUMPI CALLER SWAP2 POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7F1 DUP4 DUP8 DUP8 PUSH2 0xCF0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP6 DUP15 AND DUP1 DUP6 MSTORE SWAP6 DUP3 MSTORE DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF DUP10 AND OR SWAP1 SSTORE DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE SWAP3 MLOAD SWAP6 SWAP8 POP SWAP4 SWAP6 POP SWAP2 SWAP4 PUSH4 0xA9059CBB SWAP4 PUSH1 0x44 DUP1 DUP3 ADD SWAP5 SWAP2 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x873 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x887 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x8DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1787 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE635ADC5D0C2D7B47215CE5ED57A79C3DB183A1EF414CCFC43F24F19178A630F DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x97C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1728 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x9C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1758 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xA8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17B3 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x37 DUP1 DUP5 MSTORE PUSH2 0xAD9 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND SWAP3 DUP7 SWAP3 SWAP2 SWAP1 PUSH2 0x1658 SWAP1 DUP4 ADD CODECOPY PUSH2 0xC12 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xB18 DUP4 PUSH2 0xC7C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0x1B89874203FF7F0BBA87C969ADA3F32FDA22ED38A6706D35199D21280C7811B1 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x60 SHL DUP5 LT PUSH2 0xC0A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBCF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xBFC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0xC73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xBCF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB7 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH3 0x15180 TIMESTAMP SWAP2 SWAP1 SWAP2 SUB LT PUSH2 0xCED JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 TIMESTAMP SWAP1 SSTORE PUSH1 0x6 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0xCEB DUP3 DUP3 PUSH2 0x1043 JUMP JUMPDEST POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD DUP2 SWAP1 PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP3 SWAP1 DUP6 AND ISZERO PUSH2 0xD9E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP4 AND LT PUSH2 0xD8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x161F PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD97 DUP3 DUP8 DUP8 PUSH2 0x1314 JUMP JUMPDEST SWAP1 POP PUSH2 0xE10 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP4 AND LT PUSH2 0xDEF JUMPI POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND PUSH2 0x103B JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 JUMPDEST DUP5 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0x1030 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP1 DUP8 AND DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 SLOAD DUP2 SLOAD DUP5 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH5 0x100000000 SWAP1 SWAP2 DIV SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE SWAP3 MLOAD SWAP1 SWAP6 SWAP3 SWAP1 SWAP3 AND SWAP3 PUSH4 0x72EC9795 SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xECB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP3 EQ ISZERO PUSH2 0xEE0 JUMPI POP DUP4 PUSH2 0xFC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x37E6B1C1 DUP16 PUSH1 0x1 DUP7 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND SUB DUP7 PUSH1 0x0 ADD PUSH1 0x4 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP6 POP SWAP1 SWAP4 POP DUP5 SWAP1 POP DUP4 JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x100C SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH2 0x1000 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP7 AND PUSH4 0xFFFFFFFF PUSH2 0x13E6 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1446 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x101E DUP9 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1488 AND JUMP JUMPDEST SWAP8 POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xE16 SWAP2 POP POP JUMP JUMPDEST POP SWAP2 SWAP6 POP SWAP2 SWAP4 POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1067 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15E0 PUSH1 0x3F SWAP2 CODECOPY PUSH2 0x14E2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x108D TIMESTAMP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x159E PUSH1 0x42 SWAP2 CODECOPY PUSH2 0x14E2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 SLOAD DUP3 MLOAD PUSH4 0x12916BDD PUSH1 0xE1 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP12 ADD DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE TIMESTAMP PUSH1 0x24 DUP4 ADD MSTORE SWAP4 MLOAD SWAP8 SWAP9 POP SWAP3 SWAP1 SWAP2 AND SWAP6 SWAP4 SWAP5 AND SWAP3 PUSH4 0x2522D7BA SWAP3 PUSH1 0x44 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x112B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH4 0xFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1175 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP8 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP6 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x11EA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP9 DUP2 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP1 DUP6 AND PUSH1 0x1 PUSH1 0x40 SHL MUL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x12C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP8 AND DUP3 MSTORE DUP6 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND DUP6 DUP8 ADD SWAP1 DUP2 MSTORE DUP12 DUP3 AND PUSH1 0x60 DUP8 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 DUP8 MSTORE DUP11 DUP2 KECCAK256 DUP14 DUP11 AND DUP3 MSTORE DUP8 MSTORE DUP11 DUP2 KECCAK256 SWAP10 MLOAD DUP11 SLOAD SWAP9 MLOAD SWAP6 MLOAD SWAP5 MLOAD DUP8 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP5 SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x40 SHL MUL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT SWAP6 DUP11 AND PUSH5 0x100000000 MUL PUSH8 0xFFFFFFFF00000000 NOT SWAP8 DUP12 AND PUSH4 0xFFFFFFFF NOT SWAP11 DUP12 AND OR SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP5 SWAP1 SWAP5 AND SWAP5 SWAP1 SWAP5 OR AND OR SWAP1 SWAP6 SSTORE DUP5 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP7 ADD SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 CALLER SWAP2 PUSH32 0xF61A5F2F4D0B2D871D5BF18717D08A6B0F543AFA7E08DAD5DF1FEA150F729632 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP3 SWAP1 DUP5 AND PUSH2 0x1345 JUMPI POP DUP1 PUSH2 0x139C JUMP JUMPDEST PUSH1 0x64 PUSH4 0xFFFFFFFF DUP6 AND GT ISZERO PUSH2 0x1359 JUMPI PUSH1 0x64 SWAP4 POP JUMPDEST PUSH2 0x1383 DUP5 DUP8 ADD PUSH4 0xFFFFFFFF AND PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16CC PUSH1 0x3B SWAP2 CODECOPY PUSH2 0x14E2 JUMP JUMPDEST SWAP1 POP DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x139C JUMPI POP DUP1 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND NUMBER DUP2 EQ ISZERO PUSH2 0x13DC JUMPI PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x13F5 JUMPI POP PUSH1 0x0 PUSH2 0x6DD JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1402 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x143F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1707 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x143F DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1538 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x143F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH5 0x100000000 DUP5 LT PUSH2 0xC0A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xBCF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1587 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xBCF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB7 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1593 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID CHAINID PUSH6 0x655368617269 PUSH15 0x6750726F78793A3A5F777269746543 PUSH9 0x65636B706F696E743A KECCAK256 PUSH3 0x6C6F63 PUSH12 0x2074696D657374616D702065 PUSH25 0x6365656473203332206269747346656553686172696E675072 PUSH16 0x78793A3A5F7772697465436865636B70 PUSH16 0x696E743A20626C6F636B206E756D6265 PUSH19 0x20657863656564732033322062697473466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A7769746864726177466565733A206E6F20746F6B656E7320 PUSH7 0x6F722061207769 PUSH21 0x6864726177616C46656553686172696E6750726F78 PUSH26 0x3A3A7472616E73666572546F6B656E733A20616D6F756E742065 PUSH25 0x6365656473203936206269747346656553686172696E675072 PUSH16 0x78793A3A77697468647261773A205F6D PUSH2 0x7843 PUSH9 0x65636B706F696E7473 KECCAK256 PUSH20 0x686F756C6420626520706F736974697665466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A77697468647261773A20636865636B706F696E7420696E64 PUSH6 0x782065786365 PUSH6 0x647320333220 PUSH3 0x697473 MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F7746656553686172696E PUSH8 0x50726F78793A3A74 PUSH19 0x616E73666572546F6B656E733A20696E76616C PUSH10 0x64206164647265737346 PUSH6 0x655368617269 PUSH15 0x6750726F78793A3A7472616E736665 PUSH19 0x546F6B656E733A20696E76616C696420616D6F PUSH22 0x6E7446656553686172696E6750726F78793A3A776974 PUSH9 0x647261773A20776974 PUSH9 0x64726177616C206661 PUSH10 0x6C65645374616B696E67 GASPRICE GASPRICE PUSH21 0x72616E73666572546F6B656E733A20746F6B656E20 PUSH21 0x72616E73666572206661696C656446656553686172 PUSH10 0x6E6750726F78793A3A77 PUSH10 0x74686472617746656573 GASPRICE KECCAK256 PUSH13 0x6F616E20746F6B656E206E6F74 KECCAK256 PUSH7 0x6F756E64466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A7769746864726177466565733A20756E70726F6365737365 PUSH5 0x416D6F756E PUSH21 0x206578636565647320393620626974734665655368 PUSH2 0x7269 PUSH15 0x6750726F78793A3A77697468647261 PUSH24 0x466565733A20706F6F6C20746F6B656E20616D6F756E7420 PUSH6 0x786365656473 KECCAK256 CODECOPY CALLDATASIZE KECCAK256 PUSH3 0x697473 CHAINID PUSH6 0x655368617269 PUSH15 0x6750726F78793A3A77697468647261 PUSH24 0x466565733A20696E76616C69642061646472657373466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A7769746864726177466565733A206E6F20746F6B656E7320 PUSH21 0x6F207769746864726177A265627A7A72315820FA4B PUSH16 0xE4B212E19FC14503D0AF4C8D2BE579D7 DUP10 BALANCE STOP 0xD3 0xD3 0xEF GASPRICE EXP DUP2 0xD4 SLT 0xE8 INVALID PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "2104:11630:50:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2104:11630:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4143:1125;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4143:1125:50;-1:-1:-1;;;;;4143:1125:50;;:::i;:::-;;2646:53;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2646:53:50;-1:-1:-1;;;;;2646:53:50;;:::i;:::-;;;;;;;;;;;;;;;;;;;8378:198;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8378:198:50;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2416:23;;;:::i;:::-;;;;-1:-1:-1;;;;;2416:23:50;;;;;;;;;;;;;;2500:74;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2500:74:50;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2500:74:50;;;;;;;;;;;;;;;;;;;;;;2759;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2759:74:50;;;;;;;;;;:::i;3087:51::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3087:51:50;-1:-1:-1;;;;;3087:51:50;;:::i;:::-;;;;-1:-1:-1;;;;;3087:51:50;;;;;;;;;;;;;;2388:25;;;:::i;7416:715::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7416:715:50;;;;;;;;;;;;;;;;;;;:::i;5557:702::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5557:702:50;;-1:-1:-1;;;;;5557:702:50;;;;;-1:-1:-1;;;;;5557:702:50;;:::i;2923:56::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2923:56:50;-1:-1:-1;;;;;2923:56:50;;:::i;4143:1125::-;-1:-1:-1;;;;;4200:20:50;;4192:79;;;;-1:-1:-1;;;4192:79:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4276:21;4300:8;;:37;;;-1:-1:-1;;;4300:37:50;;-1:-1:-1;;;;;4300:37:50;;;;;;;;;:8;;;;;:29;;:37;;;;;;;;;;;;;;4276:21;4300:8;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;4300:37:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4300:37:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4300:37:50;;-1:-1:-1;;;;;;4349:27:50;;4341:91;;;;-1:-1:-1;;;4341:91:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4437:14;4454:8;;:44;;;-1:-1:-1;;;4454:44:50;;-1:-1:-1;;;;;4454:44:50;;;;;;;4492:4;4454:44;;;;;;:8;;;;;:21;;:44;;;;;;;;;;;;;;4437:14;4454:8;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;4454:44:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4454:44:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4454:44:50;;-1:-1:-1;4510:10:50;4502:75;;;;-1:-1:-1;;;4502:75:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4710:6;-1:-1:-1;;;;;4703:22:50;;4726:13;4741:6;4703:45;;;;;;;;;;;;;-1:-1:-1;;;;;4703:45:50;-1:-1:-1;;;;;4703:45:50;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4703:45:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4703:45:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;4778:53:50;;;-1:-1:-1;;;4778:53:50;;4817:4;4778:53;;;;;;;;;;;;4752:23;;-1:-1:-1;;;;;4778:30:50;;;;;:53;;;;;4703:45;;4778:53;;;;;;;;4752:23;4778:30;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;4778:53:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4778:53:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4778:53:50;4904:91;;;;;;;;;;;4778:53;;-1:-1:-1;4886:15:50;;4904:91;;4778:53;;4904:91;;4778:53;4904:91;;;:6;:91::i;:::-;-1:-1:-1;;;;;5044:32:50;;;;;;:17;:32;;;;;;;;;;5034:130;;;;;;;;;;4886:109;;-1:-1:-1;5034:130:50;;-1:-1:-1;;;;;5044:32:50;;;;4886:109;;5034:130;;;;;:5;:130::i;:::-;-1:-1:-1;;;;;4999:32:50;;;;;;:17;:32;;;;;:165;;-1:-1:-1;;;;;;4999:165:50;-1:-1:-1;;;;;4999:165:50;;;;;;;;;;5169:29;4999:32;5169:14;:29::i;:::-;5208:56;;;;;;;;-1:-1:-1;;;;;5208:56:50;;;5221:10;;5208:56;;;;;;;;;4143:1125;;;;;:::o;2646:53::-;;;;;;;;;;;;;;;:::o;8378:198::-;8466:7;8479:14;8510:45;8530:5;8537:14;8553:1;8510:19;:45::i;:::-;-1:-1:-1;8497:58:50;-1:-1:-1;;8378:198:50;;;;;:::o;2416:23::-;;;-1:-1:-1;;;;;2416:23:50;;:::o;2500:74::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;2500:74:50;;;;;-1:-1:-1;;;2500:74:50;;;;:::o;2759:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3087:51::-;;;;;;;;;;;;-1:-1:-1;;;;;3087:51:50;;:::o;2388:25::-;;;-1:-1:-1;;;;;2388:25:50;;:::o;7416:715::-;7622:1;7604:15;:19;;;7596:93;;;;-1:-1:-1;;;7596:93:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7709:10;-1:-1:-1;;;;;7727:23:50;;7723:61;;7769:10;7757:22;;7723:61;7788:14;7806:10;7836:58;7856:4;7862:14;7878:15;7836:19;:58::i;:::-;-1:-1:-1;;;;;7899:26:50;;;;;;;:20;:26;;;;;;;;:42;;;;;;;;;;;;:48;;-1:-1:-1;;7899:48:50;;;;;;;7960:45;;-1:-1:-1;;;7960:45:50;;;;;;;;;;;;;;;;;;;-1:-1:-1;7899:48:50;;-1:-1:-1;7899:42:50;;7960:31;;:45;;;;;;;;;;;;;7899:42;7960:45;;;5:2:-1;;;;30:1;27;20:12;5:2;7960:45:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7960:45:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7960:45:50;7952:102;;;;-1:-1:-1;;;7952:102:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8104:14;-1:-1:-1;;;;;8064:63:50;8093:9;-1:-1:-1;;;;;8064:63:50;8081:10;-1:-1:-1;;;;;8064:63:50;;8120:6;8064:63;;;;;;;;;;;;;;;;;;7416:715;;;;;;:::o;5557:702::-;-1:-1:-1;;;;;5632:20:50;;5624:81;;;;-1:-1:-1;;;5624:81:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5727:1;5717:7;-1:-1:-1;;;;;5717:11:50;;5709:71;;;;-1:-1:-1;;;5709:71:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5846:72;;;-1:-1:-1;;;5846:72:50;;5882:10;5846:72;;;;5903:4;5846:72;;;;-1:-1:-1;;;;;5846:72:50;;;;;;;;5831:12;;-1:-1:-1;;;;;5846:27:50;;;;;:72;;;;;;;;;;;;;;;5831:12;5846:27;:72;;;5:2:-1;;;;30:1;27;20:12;5:2;5846:72:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5846:72:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5846:72:50;;-1:-1:-1;5846:72:50;5922:66;;;;-1:-1:-1;;;5922:66:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6078:25:50;;;;;;:17;:25;;;;;;;;;;6072:100;;;;;;;;;;;;;;-1:-1:-1;;;;;6078:25:50;;;;6105:7;;6072:100;;;;;;;:5;:100::i;:::-;-1:-1:-1;;;;;6044:25:50;;;;;;:17;:25;;;;;:128;;-1:-1:-1;;;;;;6044:128:50;-1:-1:-1;;;;;6044:128:50;;;;;;;;;;6177:22;6044:25;6177:14;:22::i;:::-;6209:46;;;-1:-1:-1;;;;;6209:46:50;;;;;;-1:-1:-1;;;;;6209:46:50;;;6227:10;;6209:46;;;;;;;;;5557:702;;;:::o;2923:56::-;;;;;;;;;;;;;:::o;1095:146:56:-;1173:6;1204:12;-1:-1:-1;;;1193:9:56;;1185:32;;;;-1:-1:-1;;;1185:32:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1185:32:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:1:56;;1095:146;-1:-1:-1;;1095:146:56:o;1516:172::-;1611:6;1634:5;;;1659:12;-1:-1:-1;;;;;1651:6:56;;;;;;;;1643:29;;;;-1:-1:-1;;;1643:29:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1643:29:56;-1:-1:-1;1683:1:56;1516:172;-1:-1:-1;;;;1516:172:56:o;6389:419:50:-;-1:-1:-1;;;;;6464:29:50;;;;;;:21;:29;;;;;;2338:5;6446:15;:47;;;;:74;6442:363;;-1:-1:-1;;;;;6527:29:50;;;;;;:21;:29;;;;;;;;6559:15;6527:47;;6595:17;:25;;;;;;;-1:-1:-1;;;;;;6685:29:50;;;;;-1:-1:-1;;;;;6595:25:50;6763:37;6549:6;6595:25;6763:21;:37::i;:::-;6442:363;;6389:419;:::o;9503:1778::-;-1:-1:-1;;;;;9663:27:50;;;9627:7;9663:27;;;:20;:27;;;;;;;;:43;;;;;;;;;;;;9627:7;;9663:43;;;;;9627:7;;9808:19;;;9804:552;;-1:-1:-1;;;;;9894:35:50;;;;;;:19;:35;;;;;;;;;;9886:43;;;;9878:113;;;;-1:-1:-1;;;9878:113:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10002:54;10017:5;10024:14;10040:15;10002:14;:54::i;:::-;9996:60;;9804:552;;;-1:-1:-1;;;;;10210:35:50;;;;;;:19;:35;;;;;;;;;;10201:44;;;;10197:109;;-1:-1:-1;;;;;;;;;10264:35:50;;10261:1;10264:35;;;:19;:35;;;;;;;;10253:47;;10197:109;-1:-1:-1;;;;;;10316:35:50;;;;;;:19;:35;;;;;;;;9804:552;10360:14;;;10462:5;10446:808;10473:3;10469:7;;:1;:7;;;10446:808;;;-1:-1:-1;;;;;10520:32:50;;;10488:29;10520:32;;;:16;:32;;;;;;;;:35;;;;;;;;;;;;10579:7;;10607:20;;10579:49;;-1:-1:-1;;;10579:49:50;;10607:20;;;;;;;;10579:49;;;;;10520:35;;10579:7;;;;;:27;;:49;;;;;;;;;;:7;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;10579:49:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10579:49:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10579:49:50;;-1:-1:-1;10633:20:50;10662:26;;;10658:448;;;-1:-1:-1;10712:19:50;10658:448;;;10942:7;;;;;;;;;-1:-1:-1;;;;;10942:7:50;-1:-1:-1;;;;;10942:29:50;;10972:5;11004:1;10979:10;:22;;;;;;;;;;;;:26;11007:10;:20;;;;;;;;;;;;10942:86;;;;;;;;;;;;;-1:-1:-1;;;;;10942:86:50;-1:-1:-1;;;;;10942:86:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10942:86:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10942:86:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10942:86:50;11092:8;;-1:-1:-1;10942:86:50;;-1:-1:-1;11092:8:50;;-1:-1:-1;10942:86:50;10658:448;11187:29;;11110:13;;11126:92;;-1:-1:-1;;;;;;;;11187:29:50;;;;;11126:48;;-1:-1:-1;;;11134:20:50;;;;;;11126:48;;;:33;:48;:::i;:::-;:52;:92;:52;:92;:::i;:::-;11110:108;-1:-1:-1;11232:17:50;:6;11110:108;11232:17;:10;:17;:::i;:::-;11223:26;-1:-1:-1;;10478:3:50;;;;;-1:-1:-1;10446:808:50;;-1:-1:-1;;10446:808:50;;-1:-1:-1;11265:6:50;;-1:-1:-1;11273:3:50;;-1:-1:-1;;;;9503:1778:50;;;;;;;:::o;12773:959::-;12852:18;12873:87;12880:12;12873:87;;;;;;;;;;;;;;;;;:6;:87::i;:::-;12852:108;;12964:21;12988:93;12995:15;12988:93;;;;;;;;;;;;;;;;;:6;:93::i;:::-;-1:-1:-1;;;;;13107:27:50;;;13085:19;13107:27;;;:19;:27;;;;;;;;;;13167:7;:66;;-1:-1:-1;;;13167:66:50;;13107:27;-1:-1:-1;;13200:15:50;;13167:66;;;;;;13217:15;13167:66;;;;;;12964:117;;-1:-1:-1;13107:27:50;;;;;13085:19;;13167:7;;:32;;:66;;;;;13107:27;;13167:66;;;;;;:7;:66;;;5:2:-1;;;;30:1;27;20:12;5:2;13167:66:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13167:66:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13167:66:50;;-1:-1:-1;13241:16:50;;;;;;;:89;;-1:-1:-1;;;;;;13261:24:50;;;;;;:16;:24;;;;;;;;:69;-1:-1:-1;;13286:16:50;;13261:42;;;;;;;;;:54;:69;;;:54;;:69;13241:89;13237:436;;;-1:-1:-1;;;;;13337:24:50;;;;;;;:16;:24;;;;;;;;:42;-1:-1:-1;;13362:16:50;;13337:42;;;;;;;;:82;;-1:-1:-1;;;;;13424:65:50;;;-1:-1:-1;;;13424:65:50;13337:82;;;-1:-1:-1;;;13337:82:50;-1:-1:-1;;;;13337:82:50;;;;;;;13424:65;;;;;;;;;13237:436;;;13546:71;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13546:71:50;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13505:24:50;;;-1:-1:-1;13505:24:50;;;:16;:24;;;;;:38;;;;;;;;;;:112;;;;;;;;;;;;-1:-1:-1;;;13505:112:50;;;;;-1:-1:-1;;;13505:112:50;-1:-1:-1;;;;13505:112:50;;;;;-1:-1:-1;;13505:112:50;;;-1:-1:-1;;13505:112:50;;;;;;;;;;;;;;;;;;;;;;;;;13622:27;;:19;:27;;;;;;:46;;13505:112;13652:16;;13622:46;;;;;;;;;;13237:436;13681:47;;;-1:-1:-1;;;;;13681:47:50;;;;;;-1:-1:-1;;;;;13681:47:50;;;13697:10;;13681:47;;;;;;;;;12773:959;;;;;;:::o;11681:849::-;-1:-1:-1;;;;;11833:35:50;;11799:6;11833:35;;;:19;:35;;;;;;;;;;;11799:6;;11890:20;;11886:406;;-1:-1:-1;12013:12:50;11886:406;;;2381:3;12045:33;;;;12041:84;;;2381:3;12086:33;;12041:84;12135:94;12150:15;12142:5;:23;12135:94;;;;;;;;;;;;;;;;;;;:6;:94::i;:::-;12129:100;;12244:12;12238:18;;:3;:18;;;12234:54;;;-1:-1:-1;12270:12:50;12234:54;-1:-1:-1;;;;;12404:32:50;;12379:22;12404:32;;;:16;:32;;;;;;;;:41;-1:-1:-1;;12437:7:50;;12404:41;;;;;;;;;:53;;12465:12;:31;;12461:52;;;-1:-1:-1;;12503:5:50;;;;12461:52;-1:-1:-1;12523:3:50;11681:849;-1:-1:-1;;;;;11681:849:50:o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2393:1;1999:399;-1:-1:-1;;;1999:399:145:o;2817:121::-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;797:146:56;875:6;906:12;899:5;895:9;;887:32;;;;-1:-1:-1;;;887:32:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3411:315:145;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3579:29:145;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o"
            },
            "methodIdentifiers": {
              "getAccumulatedFees(address,address)": "3d67df6f",
              "lastFeeWithdrawalTime(address)": "f3bdba8f",
              "numTokenCheckpoints(address)": "20020208",
              "processedCheckpoints(address,address)": "7913b451",
              "protocol()": "8ce74426",
              "staking()": "4cf088d9",
              "tokenCheckpoints(address,uint256)": "70530017",
              "transferTokens(address,uint96)": "abe979e1",
              "unprocessedAmount(address)": "8b6fdcba",
              "withdraw(address,uint32,address)": "a965b3a9",
              "withdrawFees(address)": "164e68de"
            }
          },
          "userdoc": {
            "methods": {
              "getAccumulatedFees(address,address)": {
                "notice": "Get the accumulated loan pool fee of the message sender."
              },
              "transferTokens(address,uint96)": {
                "notice": "Transfer tokens to this contract."
              },
              "withdraw(address,uint32,address)": {
                "notice": "Withdraw accumulated fee to the message sender.\t * The Sovryn protocol collects fees on every trade/swap and loan. These fees will be distributed to SOV stakers based on their voting power as a percentage of total voting power. Therefore, staking more SOV and/or staking for longer will increase your share of the fees generated, meaning you will earn more from staking."
              },
              "withdrawFees(address)": {
                "notice": "Withdraw fees for the given token: lendingFee + tradingFee + borrowingFee"
              }
            },
            "notice": "Staking is not only granting voting rights, but also access to fee sharing according to the own voting power in relation to the total. Whenever somebody decides to collect the fees from the protocol, they get transferred to a proxy contract which invests the funds in the lending pool and keeps the pool tokens. * The fee sharing proxy will be set as feesController of the protocol contract. This allows the fee sharing proxy to withdraw the fees. The fee sharing proxy holds the pool tokens and keeps track of which user owns how many tokens. In order to know how many tokens a user owns, the fee sharing proxy needs to know the user’s weighted stake in relation to the total weighted stake (aka total voting power). * Because both values are subject to change, they may be different on each fee withdrawal. To be able to calculate a user’s share of tokens when he wants to withdraw, we need checkpoints. * This contract is intended to be set as the protocol fee collector. Anybody can invoke the withdrawFees function which uses protocol.withdrawFees to obtain available fees from operations on a certain token. These fees are deposited in the corresponding loanPool. Also, the staking contract sends slashed tokens to this contract. When a user calls the withdraw function, the contract transfers the fee sharing rewards in proportion to the user’s weighted stake since the last withdrawal. * The protocol is collecting fees in all sorts of currencies and then automatically supplies them to the respective lending pools. Therefore, all fees are generating interest for the SOV holders. If one of them withdraws fees, it will get pool tokens. It is planned to add the option to convert anything to rBTC before withdrawing, but not yet implemented."
          }
        },
        "ILoanToken": {
          "abi": [
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "mintAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "mint(address,uint256)": "40c10f19"
            }
          },
          "userdoc": {
            "methods": {}
          }
        },
        "IProtocol": {
          "abi": [
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "withdrawFees",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "underlyingToLoanPool(address)": "218b39c6",
              "withdrawFees(address,address)": "f2555278"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/governance/GovernorAlpha.sol": {
        "GovernorAlpha": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "timelock_",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "staking_",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "guardian_",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "_quorumPercentageVotes",
                  "type": "uint96"
                },
                {
                  "internalType": "uint96",
                  "name": "_majorityPercentageVotes",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "ProposalCanceled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address[]",
                  "name": "targets",
                  "type": "address[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "string[]",
                  "name": "signatures",
                  "type": "string[]"
                },
                {
                  "indexed": false,
                  "internalType": "bytes[]",
                  "name": "calldatas",
                  "type": "bytes[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "startBlock",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "endBlock",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "description",
                  "type": "string"
                }
              ],
              "name": "ProposalCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "ProposalExecuted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "ProposalQueued",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "voter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "support",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "votes",
                  "type": "uint256"
                }
              ],
              "name": "VoteCast",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "BALLOT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DOMAIN_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "NAME",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "__abdicate",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "__acceptAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newPendingAdmin",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "__executeSetTimelockPendingAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newPendingAdmin",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "__queueSetTimelockPendingAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                }
              ],
              "name": "cancel",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "support",
                  "type": "bool"
                }
              ],
              "name": "castVote",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "support",
                  "type": "bool"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "castVoteBySig",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                }
              ],
              "name": "execute",
              "outputs": [],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                }
              ],
              "name": "getActions",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "targets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "string[]",
                  "name": "signatures",
                  "type": "string[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "calldatas",
                  "type": "bytes[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "voter",
                  "type": "address"
                }
              ],
              "name": "getReceipt",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bool",
                      "name": "hasVoted",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "support",
                      "type": "bool"
                    },
                    {
                      "internalType": "uint96",
                      "name": "votes",
                      "type": "uint96"
                    }
                  ],
                  "internalType": "struct GovernorAlpha.Receipt",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "guardian",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "latestProposalIds",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "majorityPercentageVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "proposalCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "proposalMaxOperations",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "proposalThreshold",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "proposals",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "startBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "endBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "forVotes",
                  "type": "uint96"
                },
                {
                  "internalType": "uint96",
                  "name": "againstVotes",
                  "type": "uint96"
                },
                {
                  "internalType": "uint96",
                  "name": "quorum",
                  "type": "uint96"
                },
                {
                  "internalType": "uint96",
                  "name": "majorityPercentage",
                  "type": "uint96"
                },
                {
                  "internalType": "uint64",
                  "name": "eta",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "startTime",
                  "type": "uint64"
                },
                {
                  "internalType": "bool",
                  "name": "canceled",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "executed",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "targets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "string[]",
                  "name": "signatures",
                  "type": "string[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "calldatas",
                  "type": "bytes[]"
                },
                {
                  "internalType": "string",
                  "name": "description",
                  "type": "string"
                }
              ],
              "name": "propose",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                }
              ],
              "name": "queue",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "quorumPercentageVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "quorumVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract IStaking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                }
              ],
              "name": "state",
              "outputs": [
                {
                  "internalType": "enum GovernorAlpha.ProposalState",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "timelock",
              "outputs": [
                {
                  "internalType": "contract ITimelock",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "votingDelay",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "votingPeriod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "__acceptAdmin()": {
                "details": "Timelock wrapper w/ sender check."
              },
              "__executeSetTimelockPendingAdmin(address,uint256)": {
                "details": "Timelock wrapper w/ sender check."
              },
              "__queueSetTimelockPendingAdmin(address,uint256)": {
                "details": "Timelock wrapper w/ sender check."
              },
              "cancel(uint256)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage."
                }
              },
              "castVote(uint256,bool)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage.",
                  "support": "Vote value, yes or no."
                }
              },
              "castVoteBySig(uint256,bool,uint8,bytes32,bytes32)": {
                "details": "The signature needs to be broken up into 3 parameters, known as v, r and s: const r = '0x' + sig.substring(2).substring(0, 64); const s = '0x' + sig.substring(2).substring(64, 128); const v = '0x' + sig.substring(2).substring(128, 130);",
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "support": "Vote value, yes or no.",
                  "v": "The recovery byte of the signature."
                }
              },
              "execute(uint256)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage."
                }
              },
              "getActions(uint256)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage."
                },
                "return": "Arrays of the 4 call parameters: targets, values, signatures, calldatas."
              },
              "getReceipt(uint256,address)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage.",
                  "voter": "A governance stakeholder with voting power."
                },
                "return": "The voter receipt of the proposal."
              },
              "propose(address[],uint256[],string[],bytes[],string)": {
                "params": {
                  "calldatas": "Array of payloads for the calls on proposal execution.",
                  "description": "Text describing the purpose of the proposal.",
                  "signatures": "Array of function signatures to call on proposal execution.",
                  "targets": "Array of contract addresses to perform proposal execution.",
                  "values": "Array of rBTC amounts to send on proposal execution."
                }
              },
              "queue(uint256)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage."
                }
              },
              "state(uint256)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage."
                },
                "return": "The state of the proposal: Canceled, Pending, Active, Defeated, Succeeded, Executed, Expired."
              }
            },
            "title": "Governance Contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50604051620044ee380380620044ee8339810160408190526200003491620000de565b600080546001600160a01b03199081166001600160a01b039788161790915560018054821695871695909517909455600280549094169290941691909117909155600480546001600160601b0319166001600160601b0392831617600160601b600160c01b0319166c010000000000000000000000009290931691909102919091179055620001a1565b8051620000cb816200017c565b92915050565b8051620000cb8162000196565b600080600080600060a08688031215620000f757600080fd5b6000620001058888620000be565b95505060206200011888828901620000be565b94505060406200012b88828901620000be565b93505060606200013e88828901620000d1565b92505060806200015188828901620000d1565b9150509295509295909350565b60006001600160a01b038216620000cb565b6001600160601b031690565b62000187816200015e565b81146200019357600080fd5b50565b620001878162000170565b61433d80620001b16000396000f3fe6080604052600436106101c25760003560e01c8063760fbc13116100f7578063d33219b411610095578063deaaa7cc11610064578063deaaa7cc146104ce578063e23a9a52146104e3578063e265379014610510578063fe0d94c114610525576101c2565b8063d33219b414610464578063da35c66414610479578063da95691a1461048e578063ddf0b009146104ae576101c2565b8063a3f4df7e116100d1578063a3f4df7e14610403578063b2b0d91f14610425578063b58131b01461043a578063b9a619611461044f576101c2565b8063760fbc13146103b95780637bdbe4d0146103ce57806391500671146103e3576101c2565b8063328dd9821161016457806340e58ee51161013e57806340e58ee514610335578063452a9320146103555780634634c61f146103775780634cf088d914610397576101c2565b8063328dd982146102c35780633932abb1146102f35780633e4f49e614610308576101c2565b806317977c61116101a057806317977c611461024c57806320606b701461026c57806321f43e421461028157806324bc1a64146102a1576101c2565b8063013cf08b146101c757806302a251a31461020857806315373e3d1461022a575b600080fd5b3480156101d357600080fd5b506101e76101e2366004612c28565b610538565b6040516101ff9c9b9a99989796959493929190613e01565b60405180910390f35b34801561021457600080fd5b5061021d6105d8565b6040516101ff9190613b13565b34801561023657600080fd5b5061024a610245366004612c76565b6105df565b005b34801561025857600080fd5b5061021d610267366004612a71565b6105ee565b34801561027857600080fd5b5061021d610600565b34801561028d57600080fd5b5061024a61029c366004612a97565b610617565b3480156102ad57600080fd5b506102b66106fe565b6040516101ff9190613ec2565b3480156102cf57600080fd5b506102e36102de366004612c28565b610805565b6040516101ff9493929190613ac6565b3480156102ff57600080fd5b5061021d610a94565b34801561031457600080fd5b50610328610323366004612c28565b610a99565b6040516101ff9190613bc1565b34801561034157600080fd5b5061024a610350366004612c28565b610d21565b34801561036157600080fd5b5061036a610ef9565b6040516101ff919061393a565b34801561038357600080fd5b5061024a610392366004612ca6565b610f08565b3480156103a357600080fd5b506103ac61109b565b6040516101ff9190613bb3565b3480156103c557600080fd5b5061024a6110aa565b3480156103da57600080fd5b5061021d6110e6565b3480156103ef57600080fd5b5061024a6103fe366004612a97565b6110eb565b34801561040f57600080fd5b506104186111c0565b6040516101ff9190613bcf565b34801561043157600080fd5b506102b66111f1565b34801561044657600080fd5b506102b6611200565b34801561045b57600080fd5b5061024a6112cd565b34801561047057600080fd5b506103ac611352565b34801561048557600080fd5b5061021d611361565b34801561049a57600080fd5b5061021d6104a9366004612ad1565b611367565b3480156104ba57600080fd5b5061024a6104c9366004612c28565b6119ee565b3480156104da57600080fd5b5061021d611c9e565b3480156104ef57600080fd5b506105036104fe366004612c46565b611caa565b6040516101ff9190613d30565b34801561051c57600080fd5b506102b6611d19565b61024a610533366004612c28565b611d2f565b6005602052600090815260409020805460018201546002830154600390930154919263ffffffff808316936401000000008404909116926001600160601b03600160401b808304821694600160a01b90930482169383831693600160601b8104909316926001600160401b03600160c01b9091048116929082169160ff918104821691600160481b820416906001600160a01b03600160501b909104168c565b610b405b90565b6105ea338383611f11565b5050565b60066020526000908152604090205481565b60405161060c90613924565b604051809103902081565b6002546001600160a01b0316331461064a5760405162461bcd60e51b815260040161064190613c10565b60405180910390fd5b600080546040516001600160a01b0390911691630825f38f9183919061067490879060200161393a565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016106a39493929190613970565b600060405180830381600087803b1580156106bd57600080fd5b505af11580156106d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106f99190810190612bf4565b505050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632522d7ba61074a600143036040518060600160405280603181526020016141446031913961217c565b426040518363ffffffff1660e01b8152600401610768929190613eb4565b60206040518083038186803b15801561078057600080fd5b505afa158015610794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107b89190810190612d0e565b600454604080516060810190915260328082529293506064926107ee926001600160601b031691859161417560208301396121ac565b6001600160601b0316816107fe57fe5b0491505090565b6060806060806000600560008781526020019081526020016000209050806004018160050182600601836007018380548060200260200160405190810160405280929190818152602001828054801561088757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610869575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156108d957602002820191906000526020600020905b8154815260200190600101908083116108c5575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156109ac5760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156109985780601f1061096d57610100808354040283529160200191610998565b820191906000526020600020905b81548152906001019060200180831161097b57829003601f168201915b505050505081526020019060010190610901565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610a7e5760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610a6a5780601f10610a3f57610100808354040283529160200191610a6a565b820191906000526020600020905b815481529060010190602001808311610a4d57829003601f168201915b5050505050815260200190600101906109d3565b5050505090509450945094509450509193509193565b600190565b60008160035410158015610aad5750600082115b610ac95760405162461bcd60e51b815260040161064190613c20565b60008281526005602052604090206003810154600160401b900460ff1615610af5576002915050610d1c565b600181015463ffffffff164311610b10576000915050610d1c565b6001810154640100000000900463ffffffff164311610b33576001915050610d1c565b600181015460408051606081019091526037808252600092610b78926001600160601b03600160401b8304811693600160a01b90930416916141c96020830139612215565b90506000610ba082606460405180606001604052806025815260200161424260259139612248565b9050610bda816004600c9054906101000a90046001600160601b03166040518060600160405280603f81526020016140ad603f91396121ac565b60018401549091506001600160601b03808316600160401b90920416111580610c13575060028301546001600160601b03908116908316105b15610c245760039350505050610d1c565b6002830154600160c01b90046001600160401b0316610c495760049350505050610d1c565b6003830154600160481b900460ff1615610c695760079350505050610d1c565b6002830154600054604080516360d143f160e11b81529051610d0293600160c01b90046001600160401b0316926001600160a01b03169163c1a287e2916004808301926020929190829003018186803b158015610cc557600080fd5b505afa158015610cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cfd9190810190612bd6565b61229a565b4210610d145760069350505050610d1c565b600593505050505b919050565b6000610d2c82610a99565b90506007816007811115610d3c57fe5b1415610d5a5760405162461bcd60e51b815260040161064190613cf0565b60008281526005602052604090206002546001600160a01b03163314610d925760405162461bcd60e51b815260040161064190613c90565b60038101805468ff00000000000000001916600160401b17905560005b6004820154811015610ebc576000546004830180546001600160a01b039092169163591fcdfe919084908110610de157fe5b6000918252602090912001546005850180546001600160a01b039092169185908110610e0957fe5b9060005260206000200154856006018581548110610e2357fe5b90600052602060002001866007018681548110610e3c57fe5b906000526020600020018760020160189054906101000a90046001600160401b03166040518663ffffffff1660e01b8152600401610e7e959493929190613a4e565b600060405180830381600087803b158015610e9857600080fd5b505af1158015610eac573d6000803e3d6000fd5b505060019092019150610daf9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610eec9190613b13565b60405180910390a1505050565b6002546001600160a01b031681565b6000604051610f1690613924565b604080519182900382208282019091526015825274536f7672796e20476f7665726e6f7220416c70686160581b6020909201919091527fddf6fbf241d6c602c276b8332aecac376ff7e0ef2276d109c25930e6911ca2bd610f756122bf565b30604051602001610f899493929190613b21565b6040516020818303038152906040528051906020012090506000604051610faf9061392f565b604051908190038120610fc89189908990602001613b56565b60405160208183030381529060405280519060200120905060008282604051602001610ff59291906138f3565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516110329493929190613b7e565b6020604051602081039080840390855afa158015611054573d6000803e3d6000fd5b505050602060405103519050611069816122c3565b6110855760405162461bcd60e51b815260040161064190613cd0565b611090818a8a611f11565b505050505050505050565b6001546001600160a01b031681565b6002546001600160a01b031633146110d45760405162461bcd60e51b815260040161064190613d20565b600280546001600160a01b0319169055565b600a90565b6002546001600160a01b031633146111155760405162461bcd60e51b815260040161064190613c50565b600080546040516001600160a01b0390911691633a66f9019183919061113f90879060200161393a565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161116e9493929190613970565b602060405180830381600087803b15801561118857600080fd5b505af115801561119c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106f99190810190612bd6565b60405180604001604052806015815260200174536f7672796e20476f7665726e6f7220416c70686160581b81525081565b6004546001600160601b031681565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632522d7ba61124c6001430360405180606001604052806037815260200161429a6037913961217c565b426040518363ffffffff1660e01b815260040161126a929190613eb4565b60206040518083038186803b15801561128257600080fd5b505afa158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112ba9190810190612d0e565b905060646001600160601b0382166107fe565b6002546001600160a01b031633146112f75760405162461bcd60e51b815260040161064190613be0565b6000805460408051630e18b68160e01b815290516001600160a01b0390921692630e18b6819260048084019382900301818387803b15801561133857600080fd5b505af115801561134c573d6000803e3d6000fd5b50505050565b6000546001600160a01b031681565b60035481565b600080611372611200565b600180549192506001600160601b038316916001600160a01b03169063836eebee9033906113a19043906122fc565b426040518463ffffffff1660e01b81526004016113c093929190613948565b60206040518083038186803b1580156113d857600080fd5b505afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114109190810190612d0e565b6001600160601b0316116114365760405162461bcd60e51b815260040161064190613cc0565b85518751148015611448575084518751145b8015611455575083518751145b6114715760405162461bcd60e51b815260040161064190613c80565b865161148f5760405162461bcd60e51b815260040161064190613cb0565b6114976110e6565b875111156114b75760405162461bcd60e51b815260040161064190613c60565b3360009081526006602052604090205480156115345760006114d882610a99565b905060018160078111156114e857fe5b14156115065760405162461bcd60e51b815260040161064190613ce0565b600081600781111561151457fe5b14156115325760405162461bcd60e51b815260040161064190613c40565b505b600061154243610cfd610a94565b9050600061155282610cfd6105d8565b60038054600101905590506115656124aa565b604051806102000160405280600354815260200161159b856040518060600160405280603381526020016142676033913961217c565b63ffffffff1681526020016115c8846040518060600160405280603181526020016141136031913961217c565b63ffffffff16815260200160006001600160601b0316815260200160006001600160601b0316815260200161162b600460009054906101000a90046001600160601b031688604051806060016040528060368152602001614077603691396121ac565b6001600160601b031681526020016116716004600c9054906101000a90046001600160601b031688604051806080016040528060428152602001614200604291396121ac565b6001600160601b0316815260200160006001600160401b031681526020016116b1426040518060600160405280602a81526020016142d1602a9139612324565b6001600160401b03168152602001600015158152602001600015158152602001336001600160a01b031681526020018c81526020018b81526020018a81526020018981525090508060056000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548163ffffffff021916908363ffffffff16021790555060408201518160010160046101000a81548163ffffffff021916908363ffffffff16021790555060608201518160010160086101000a8154816001600160601b0302191690836001600160601b0316021790555060808201518160010160146101000a8154816001600160601b0302191690836001600160601b0316021790555060a08201518160020160006101000a8154816001600160601b0302191690836001600160601b0316021790555060c082015181600201600c6101000a8154816001600160601b0302191690836001600160601b0316021790555060e08201518160020160186101000a8154816001600160401b0302191690836001600160401b031602179055506101008201518160030160006101000a8154816001600160401b0302191690836001600160401b031602179055506101208201518160030160086101000a81548160ff0219169083151502179055506101408201518160030160096101000a81548160ff02191690831515021790555061016082015181600301600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550610180820151816004019080519060200190611904929190612530565b506101a08201518051611921916005840191602090910190612595565b506101c0820151805161193e9160068401916020909101906125dc565b506101e0820151805161195b916007840191602090910190612635565b509050508060000151600660008361016001516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338d8d8d8d89898f6040516119d599989796959493929190613d3e565b60405180910390a1519450505050505b95945050505050565b60046119f982610a99565b6007811115611a0457fe5b14611a215760405162461bcd60e51b815260040161064190613bf0565b600081815260056020908152604080832083548251630d48571f60e31b81529251919493611a7a9342936001600160a01b0390931692636a42b8f892600480840193919291829003018186803b158015610cc557600080fd5b905060005b6004830154811015611c2257611c1a836004018281548110611a9d57fe5b6000918252602090912001546005850180546001600160a01b039092169184908110611ac557fe5b9060005260206000200154856006018481548110611adf57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611b6d5780601f10611b4257610100808354040283529160200191611b6d565b820191906000526020600020905b815481529060010190602001808311611b5057829003601f168201915b5050505050866007018581548110611b8157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611c0f5780601f10611be457610100808354040283529160200191611c0f565b820191906000526020600020905b815481529060010190602001808311611bf257829003601f168201915b50505050508661234b565b600101611a7f565b50611c45816040518060600160405280602281526020016141a760229139612324565b8260020160186101000a8154816001600160401b0302191690836001600160401b031602179055507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928382604051610eec929190613de6565b60405161060c9061392f565b611cb261268e565b5060008281526005602090815260408083206001600160a01b03851684526008018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046001600160601b0316918101919091525b92915050565b600454600160601b90046001600160601b031681565b6005611d3a82610a99565b6007811115611d4557fe5b14611d625760405162461bcd60e51b815260040161064190613c00565b600081815260056020526040812060038101805469ff0000000000000000001916600160481b179055905b6004820154811015611ed5576000546005830180546001600160a01b0390921691630825f38f919084908110611dbf57fe5b9060005260206000200154846004018481548110611dd957fe5b6000918252602090912001546005860180546001600160a01b039092169186908110611e0157fe5b9060005260206000200154866006018681548110611e1b57fe5b90600052602060002001876007018781548110611e3457fe5b906000526020600020018860020160189054906101000a90046001600160401b03166040518763ffffffff1660e01b8152600401611e76959493929190613a4e565b6000604051808303818588803b158015611e8f57600080fd5b505af1158015611ea3573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611ecc9190810190612bf4565b50600101611d8d565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611f059190613b13565b60405180910390a15050565b6001611f1c83610a99565b6007811115611f2757fe5b14611f445760405162461bcd60e51b815260040161064190613d00565b60008281526005602090815260408083206001600160a01b038716845260088101909252909120805460ff1615611f8d5760405162461bcd60e51b815260040161064190613c30565b600180549083015460038401546040516341b775f760e11b81526000936001600160a01b03169263836eebee92611fd9928b9263ffffffff16916001600160401b031690600401613a9e565b60206040518083038186803b158015611ff157600080fd5b505afa158015612005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120299190810190612d0e565b905083156120985761206b8360010160089054906101000a90046001600160601b0316826040518060600160405280602781526020016140ec60279139612215565b8360010160086101000a8154816001600160601b0302191690836001600160601b031602179055506120fb565b6120d28360010160149054906101000a90046001600160601b0316826040518060600160405280602781526020016140ec60279139612215565b8360010160146101000a8154816001600160601b0302191690836001600160601b031602179055505b8154600160ff199091161761ff00191661010085151502176dffffffffffffffffffffffff00001916620100006001600160601b038316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c469061216c9088908890889086906139bf565b60405180910390a1505050505050565b60008164010000000084106121a45760405162461bcd60e51b81526004016106419190613bcf565b509192915050565b60006001600160601b0384166121c45750600061220e565b8383026001600160601b0380851690808716908316816121e057fe5b046001600160601b031614839061220a5760405162461bcd60e51b81526004016106419190613bcf565b5090505b9392505050565b6000838301826001600160601b03808716908316101561220a5760405162461bcd60e51b81526004016106419190613bcf565b6000816001600160601b0384166122725760405162461bcd60e51b81526004016106419190613bcf565b506000836001600160601b0316856001600160601b03168161229057fe5b0495945050505050565b60008282018381101561220e5760405162461bcd60e51b815260040161064190613c70565b4690565b600073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b03831614801590611d135750506001600160a01b0316151590565b60008282111561231e5760405162461bcd60e51b815260040161064190613d10565b50900390565b600081600160401b84106121a45760405162461bcd60e51b81526004016106419190613bcf565b6000546040516001600160a01b039091169063f2b065379061237990889088908890889088906020016139f4565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016123ab9190613b13565b60206040518083038186803b1580156123c357600080fd5b505afa1580156123d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123fb9190810190612bb8565b156124185760405162461bcd60e51b815260040161064190613ca0565b600054604051633a66f90160e01b81526001600160a01b0390911690633a66f9019061245090889088908890889088906004016139f4565b602060405180830381600087803b15801561246a57600080fd5b505af115801561247e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124a29190810190612bd6565b505050505050565b604080516102008101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820183905261016082019290925261018081018290526101a081018290526101c081018290526101e081019190915290565b828054828255906000526020600020908101928215612585579160200282015b8281111561258557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612550565b506125919291506126ae565b5090565b8280548282559060005260206000209081019282156125d0579160200282015b828111156125d05782518255916020019190600101906125b5565b506125919291506126d2565b828054828255906000526020600020908101928215612629579160200282015b8281111561262957825180516126199184916020909101906126ec565b50916020019190600101906125fc565b50612591929150612759565b828054828255906000526020600020908101928215612682579160200282015b8281111561268257825180516126729184916020909101906126ec565b5091602001919060010190612655565b5061259192915061277c565b604080516060810182526000808252602082018190529181019190915290565b6105dc91905b808211156125915780546001600160a01b03191681556001016126b4565b6105dc91905b8082111561259157600081556001016126d8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061272d57805160ff19168380011785556125d0565b828001600101855582156125d057918201828111156125d05782518255916020019190600101906125b5565b6105dc91905b80821115612591576000612773828261279f565b5060010161275f565b6105dc91905b80821115612591576000612796828261279f565b50600101612782565b50805460018160011615610100020316600290046000825580601f106127c557506127e3565b601f0160209004906000526020600020908101906127e391906126d2565b50565b8035611d138161403e565b600082601f83011261280257600080fd5b813561281561281082613ef6565b613ed0565b9150818183526020840193506020810190508385602084028201111561283a57600080fd5b60005b83811015612866578161285088826127e6565b845250602092830192919091019060010161283d565b5050505092915050565b600082601f83011261288157600080fd5b813561288f61281082613ef6565b81815260209384019390925082018360005b8381101561286657813586016128b788826129c6565b84525060209283019291909101906001016128a1565b600082601f8301126128de57600080fd5b81356128ec61281082613ef6565b81815260209384019390925082018360005b83811015612866578135860161291488826129c6565b84525060209283019291909101906001016128fe565b600082601f83011261293b57600080fd5b813561294961281082613ef6565b9150818183526020840193506020810190508385602084028201111561296e57600080fd5b60005b83811015612866578161298488826129b0565b8452506020928301929190910190600101612971565b8035611d1381614052565b8051611d1381614052565b8035611d138161405b565b8051611d138161405b565b600082601f8301126129d757600080fd5b81356129e561281082613f16565b91508082526020830160208301858383011115612a0157600080fd5b612a0c838284613ff2565b50505092915050565b600082601f830112612a2657600080fd5b8151612a3461281082613f16565b91508082526020830160208301858383011115612a5057600080fd5b612a0c838284613ffe565b8035611d1381614064565b8051611d138161406d565b600060208284031215612a8357600080fd5b6000612a8f84846127e6565b949350505050565b60008060408385031215612aaa57600080fd5b6000612ab685856127e6565b9250506020612ac7858286016129b0565b9150509250929050565b600080600080600060a08688031215612ae957600080fd5b85356001600160401b03811115612aff57600080fd5b612b0b888289016127f1565b95505060208601356001600160401b03811115612b2757600080fd5b612b338882890161292a565b94505060408601356001600160401b03811115612b4f57600080fd5b612b5b888289016128cd565b93505060608601356001600160401b03811115612b7757600080fd5b612b8388828901612870565b92505060808601356001600160401b03811115612b9f57600080fd5b612bab888289016129c6565b9150509295509295909350565b600060208284031215612bca57600080fd5b6000612a8f84846129a5565b600060208284031215612be857600080fd5b6000612a8f84846129bb565b600060208284031215612c0657600080fd5b81516001600160401b03811115612c1c57600080fd5b612a8f84828501612a15565b600060208284031215612c3a57600080fd5b6000612a8f84846129b0565b60008060408385031215612c5957600080fd5b6000612c6585856129b0565b9250506020612ac7858286016127e6565b60008060408385031215612c8957600080fd5b6000612c9585856129b0565b9250506020612ac78582860161299a565b600080600080600060a08688031215612cbe57600080fd5b6000612cca88886129b0565b9550506020612cdb8882890161299a565b9450506040612cec88828901612a5b565b9350506060612cfd888289016129b0565b9250506080612bab888289016129b0565b600060208284031215612d2057600080fd5b6000612a8f8484612a66565b6000612d388383612d67565b505060200190565b600061220e8383612f09565b6000612d388383612eef565b612d6181613fa9565b82525050565b612d6181613f5c565b6000612d7b82613f4f565b612d858185613f53565b9350612d9083613f3d565b8060005b83811015612dbe578151612da88882612d2c565b9750612db383613f3d565b925050600101612d94565b509495945050505050565b6000612dd482613f4f565b612dde8185613f53565b935083602082028501612df085613f3d565b8060005b85811015612e2a5784840389528151612e0d8582612d40565b9450612e1883613f3d565b60209a909a0199925050600101612df4565b5091979650505050505050565b6000612e4282613f4f565b612e4c8185613f53565b935083602082028501612e5e85613f3d565b8060005b85811015612e2a5784840389528151612e7b8582612d40565b9450612e8683613f3d565b60209a909a0199925050600101612e62565b6000612ea382613f4f565b612ead8185613f53565b9350612eb883613f3d565b8060005b83811015612dbe578151612ed08882612d4c565b9750612edb83613f3d565b925050600101612ebc565b612d6181613f67565b612d61816105dc565b612d61612f04826105dc565b6105dc565b6000612f1482613f4f565b612f1e8185613f53565b9350612f2e818560208601613ffe565b612f378161402a565b9093019392505050565b600081546001811660008114612f5e5760018114612f8457612fc3565b607f6002830416612f6f8187613f53565b60ff1984168152955050602085019250612fc3565b60028204612f928187613f53565b9550612f9d85613f43565b60005b82811015612fbc57815488820152600190910190602001612fa0565b8701945050505b505092915050565b612d6181613fb0565b612d6181613fbb565b612d6181613fc6565b6000612ff3603983613f53565b7f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736581527f6e646572206d75737420626520676f7620677561726469616e00000000000000602082015260400192915050565b6000613052604483613f53565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c79206265207175657565642069662069742069732073756363656020820152631959195960e21b604082015260600192915050565b60006130be604583613f53565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c7920626520657865637574656420696620697420697320716020820152641d595d595960da1b604082015260600192915050565b600061312b600283610d1c565b61190160f01b815260020192915050565b6000613149604c83613f53565b7f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c81527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208201526b33b7bb1033bab0b93234b0b760a11b604082015260600192915050565b60006131bd601883613f53565b7f73657450656e64696e6741646d696e2861646472657373290000000000000000815260200192915050565b60006131f6602983613f53565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c69642070728152681bdc1bdcd85b081a5960ba1b602082015260400192915050565b6000613241602d83613f53565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081526c185b1c9958591e481d9bdd1959609a1b602082015260400192915050565b6000613290605983613f53565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000613315604a83613f53565b7f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6381527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f6020820152693b1033bab0b93234b0b760b11b604082015260600192915050565b6000613387602883613f53565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981526720616374696f6e7360c01b602082015260400192915050565b60006133d1601183613f53565b706164646974696f6e206f766572666c6f7760781b815260200192915050565b60006133fe604383610d1c565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000613469602783610d1c565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20738152667570706f72742960c81b602082015260270192915050565b60006134b2604483613f53565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6020820152630c2e8c6d60e31b604082015260600192915050565b600061351e602e83613f53565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2073656e64657220697381526d3713ba10309033bab0b93234b0b760911b602082015260400192915050565b600061356e604483613f53565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c7265616479207175657565642061746020820152632065746160e01b604082015260600192915050565b60006135da602c83613f53565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81526b7669646520616374696f6e7360a01b602082015260400192915050565b6000613628603f83613f53565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000613687602f83613f53565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81526e76616c6964207369676e617475726560881b602082015260400192915050565b60006136d8605883613f53565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b600061375d603683613f53565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f742063618152751b98d95b08195e1958dd5d1959081c1c9bdc1bdcd85b60521b602082015260400192915050565b60006137b5602a83613f53565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e67815269081a5cc818db1bdcd95960b21b602082015260400192915050565b6000613801601583613f53565b747375627472616374696f6e20756e646572666c6f7760581b815260200192915050565b6000613832603683613f53565b7f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e6465815275391036bab9ba1031329033b7bb1033bab0b93234b0b760511b602082015260400192915050565b8051606083019061388e8482612ee6565b5060208201516138a16020850182612ee6565b50604082015161134c60408501826138ea565b612d6181613fd1565b612d6181613f82565b612d6181613fdc565b612d6181613f8b565b612d6181613f97565b612d6181613fe7565b612d6181613f9d565b60006138fe8261311e565b915061390a8285612ef8565b60208201915061391a8284612ef8565b5060200192915050565b6000611d13826133f1565b6000611d138261345c565b60208101611d138284612d67565b606081016139568286612d58565b6139636020830185612eef565b612a8f6040830184612eef565b60a0810161397e8287612d67565b61398b6020830186612fdd565b818103604083015261399c816131b0565b905081810360608301526139b08185612f09565b90506119e56080830184612eef565b608081016139cd8287612d67565b6139da6020830186612eef565b6139e76040830185612ee6565b6119e560608301846138e1565b60a08101613a028288612d67565b613a0f6020830187612eef565b8181036040830152613a218186612f09565b90508181036060830152613a358185612f09565b9050613a446080830184612eef565b9695505050505050565b60a08101613a5c8288612d67565b613a696020830187612eef565b8181036040830152613a7b8186612f41565b90508181036060830152613a8f8185612f41565b9050613a4460808301846138c6565b60608101613aac8286612d67565b613ab960208301856138b4565b612a8f60408301846138c6565b60808082528101613ad78187612d70565b90508181036020830152613aeb8186612e98565b90508181036040830152613aff8185612e37565b90508181036060830152613a448184612dc9565b60208101611d138284612eef565b60808101613b2f8287612eef565b613b3c6020830186612eef565b613b496040830185612eef565b6119e56060830184612d67565b60608101613b648286612eef565b613b716020830185612eef565b612a8f6040830184612ee6565b60808101613b8c8287612eef565b613b9960208301866138d8565b613ba66040830185612eef565b6119e56060830184612eef565b60208101611d138284612fcb565b60208101611d138284612fd4565b6020808252810161220e8184612f09565b60208082528101611d1381612fe6565b60208082528101611d1381613045565b60208082528101611d13816130b1565b60208082528101611d138161313c565b60208082528101611d13816131e9565b60208082528101611d1381613234565b60208082528101611d1381613283565b60208082528101611d1381613308565b60208082528101611d138161337a565b60208082528101611d13816133c4565b60208082528101611d13816134a5565b60208082528101611d1381613511565b60208082528101611d1381613561565b60208082528101611d13816135cd565b60208082528101611d138161361b565b60208082528101611d138161367a565b60208082528101611d13816136cb565b60208082528101611d1381613750565b60208082528101611d13816137a8565b60208082528101611d13816137f4565b60208082528101611d1381613825565b60608101611d13828461387d565b6101208101613d4d828c612eef565b613d5a602083018b612d58565b8181036040830152613d6c818a612d70565b90508181036060830152613d808189612e98565b90508181036080830152613d948188612e37565b905081810360a0830152613da88187612dc9565b9050613db760c0830186612eef565b613dc460e0830185612eef565b818103610100830152613dd78184612f09565b9b9a5050505050505050505050565b60408101613df48285612eef565b61220e6020830184612eef565b6101808101613e10828f612eef565b613e1d602083018e6138bd565b613e2a604083018d6138bd565b613e37606083018c6138ea565b613e44608083018b6138ea565b613e5160a083018a6138ea565b613e5e60c08301896138ea565b613e6b60e08301886138cf565b613e796101008301876138cf565b613e87610120830186612ee6565b613e95610140830185612ee6565b613ea3610160830184612d67565b9d9c50505050505050505050505050565b60408101613df482856138bd565b60208101611d1382846138ea565b6040518181016001600160401b0381118282101715613eee57600080fd5b604052919050565b60006001600160401b03821115613f0c57600080fd5b5060209081020190565b60006001600160401b03821115613f2c57600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b6000611d1382613f76565b151590565b80610d1c81614034565b6001600160a01b031690565b63ffffffff1690565b6001600160401b031690565b60ff1690565b6001600160601b031690565b6000611d13825b6000611d1382613f5c565b6000611d1382613f6c565b6000611d13826105dc565b6000611d1382613f82565b6000611d1382613f8b565b6000611d1382613f9d565b82818337506000910152565b60005b83811015614019578181015183820152602001614001565b8381111561134c5750506000910152565b601f01601f191690565b600881106127e357fe5b61404781613f5c565b81146127e357600080fd5b61404781613f67565b614047816105dc565b61404781613f97565b61404781613f9d56fe476f7665726e6f72416c7068613a3a70726f706f73653a206f766572666c6f77206f6e2071756f72756d20636f6d7075746174696f6e476f7665726e6f72416c7068613a3a2073746174653a20746f74616c566f746573202a206d616a6f7269747950657263656e74616765203e2075696e743936476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465206f766572666c6f77476f7665726e6f72416c7068613a3a70726f706f73653a20656e6420626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a71756f72756d566f7465733a20626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a71756f72756d566f7465733a6d756c7469706c69636174696f6e206f766572666c6f77476f7665726e6f72416c7068613a3a71756575653a20455441206f766572666c6f77476f7665726e6f72416c7068613a3a2073746174653a20666f72566f746573202b20616761696e7374566f746573203e2075696e743936476f7665726e6f72416c7068613a3a70726f706f73653a206f766572666c6f77206f6e206d616a6f7269747950657263656e7461676520636f6d7075746174696f6e476f7665726e6f72416c7068613a3a2073746174653a206469766973696f6e206572726f72476f7665726e6f72416c7068613a3a70726f706f73653a20737461727420626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a70726f706f73616c5468726573686f6c643a20626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a70726f706f73653a20737461727454696d65206f766572666c6f77a365627a7a72315820483e7b1b35a00df1005c592ef3bd642d224482ee7cca25520703fd49906298326c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x44EE CODESIZE SUB DUP1 PUSH3 0x44EE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0xDE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD DUP3 AND SWAP6 DUP8 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP5 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 DUP4 AND OR PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH13 0x1000000000000000000000000 SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH3 0x1A1 JUMP JUMPDEST DUP1 MLOAD PUSH3 0xCB DUP2 PUSH3 0x17C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0xCB DUP2 PUSH3 0x196 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x105 DUP9 DUP9 PUSH3 0xBE JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH3 0x118 DUP9 DUP3 DUP10 ADD PUSH3 0xBE JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH3 0x12B DUP9 DUP3 DUP10 ADD PUSH3 0xBE JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH3 0x13E DUP9 DUP3 DUP10 ADD PUSH3 0xD1 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH3 0x151 DUP9 DUP3 DUP10 ADD PUSH3 0xD1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH3 0x187 DUP2 PUSH3 0x15E JUMP JUMPDEST DUP2 EQ PUSH3 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x187 DUP2 PUSH3 0x170 JUMP JUMPDEST PUSH2 0x433D DUP1 PUSH3 0x1B1 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x760FBC13 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xD33219B4 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xDEAAA7CC GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xDEAAA7CC EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0xE23A9A52 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0xE2653790 EQ PUSH2 0x510 JUMPI DUP1 PUSH4 0xFE0D94C1 EQ PUSH2 0x525 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xD33219B4 EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0x479 JUMPI DUP1 PUSH4 0xDA95691A EQ PUSH2 0x48E JUMPI DUP1 PUSH4 0xDDF0B009 EQ PUSH2 0x4AE JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xA3F4DF7E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA3F4DF7E EQ PUSH2 0x403 JUMPI DUP1 PUSH4 0xB2B0D91F EQ PUSH2 0x425 JUMPI DUP1 PUSH4 0xB58131B0 EQ PUSH2 0x43A JUMPI DUP1 PUSH4 0xB9A61961 EQ PUSH2 0x44F JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x760FBC13 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x7BDBE4D0 EQ PUSH2 0x3CE JUMPI DUP1 PUSH4 0x91500671 EQ PUSH2 0x3E3 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x328DD982 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0x40E58EE5 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x40E58EE5 EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0x452A9320 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x4634C61F EQ PUSH2 0x377 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x397 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x328DD982 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x3932ABB1 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x3E4F49E6 EQ PUSH2 0x308 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x17977C61 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x17977C61 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x21F43E42 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x24BC1A64 EQ PUSH2 0x2A1 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x13CF08B EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x2A251A3 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x15373E3D EQ PUSH2 0x22A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C28 JUMP JUMPDEST PUSH2 0x538 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3E01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x5D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x3B13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C76 JUMP JUMPDEST PUSH2 0x5DF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A71 JUMP JUMPDEST PUSH2 0x5EE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x600 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x29C CALLDATASIZE PUSH1 0x4 PUSH2 0x2A97 JUMP JUMPDEST PUSH2 0x617 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B6 PUSH2 0x6FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x3EC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E3 PUSH2 0x2DE CALLDATASIZE PUSH1 0x4 PUSH2 0x2C28 JUMP JUMPDEST PUSH2 0x805 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3AC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0xA94 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x328 PUSH2 0x323 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C28 JUMP JUMPDEST PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x3BC1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x341 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x350 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C28 JUMP JUMPDEST PUSH2 0xD21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36A PUSH2 0xEF9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x393A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA6 JUMP JUMPDEST PUSH2 0xF08 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3AC PUSH2 0x109B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x3BB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x10AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x10E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x3FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2A97 JUMP JUMPDEST PUSH2 0x10EB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x418 PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x3BCF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x431 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B6 PUSH2 0x11F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B6 PUSH2 0x1200 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x12CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3AC PUSH2 0x1352 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x1361 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x4A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AD1 JUMP JUMPDEST PUSH2 0x1367 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x4C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C28 JUMP JUMPDEST PUSH2 0x19EE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x1C9E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x4FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2C46 JUMP JUMPDEST PUSH2 0x1CAA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x3D30 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B6 PUSH2 0x1D19 JUMP JUMPDEST PUSH2 0x24A PUSH2 0x533 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C28 JUMP JUMPDEST PUSH2 0x1D2F JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP3 PUSH4 0xFFFFFFFF DUP1 DUP4 AND SWAP4 PUSH5 0x100000000 DUP5 DIV SWAP1 SWAP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP1 DUP4 DIV DUP3 AND SWAP5 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV DUP3 AND SWAP4 DUP4 DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV SWAP1 SWAP4 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP3 SWAP1 DUP3 AND SWAP2 PUSH1 0xFF SWAP2 DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x48 SHL DUP3 DIV AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x50 SHL SWAP1 SWAP2 DIV AND DUP13 JUMP JUMPDEST PUSH2 0xB40 JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5EA CALLER DUP4 DUP4 PUSH2 0x1F11 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x60C SWAP1 PUSH2 0x3924 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x64A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C10 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x825F38F SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x674 SWAP1 DUP8 SWAP1 PUSH1 0x20 ADD PUSH2 0x393A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6A3 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3970 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x6F9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BF4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2522D7BA PUSH2 0x74A PUSH1 0x1 NUMBER SUB PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4144 PUSH1 0x31 SWAP2 CODECOPY PUSH2 0x217C JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x768 SWAP3 SWAP2 SWAP1 PUSH2 0x3EB4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x794 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x7B8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2D0E JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x32 DUP1 DUP3 MSTORE SWAP3 SWAP4 POP PUSH1 0x64 SWAP3 PUSH2 0x7EE SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP6 SWAP2 PUSH2 0x4175 PUSH1 0x20 DUP4 ADD CODECOPY PUSH2 0x21AC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x7FE JUMPI INVALID JUMPDEST DIV SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x4 ADD DUP2 PUSH1 0x5 ADD DUP3 PUSH1 0x6 ADD DUP4 PUSH1 0x7 ADD DUP4 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x887 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x869 JUMPI JUMPDEST POP POP POP POP POP SWAP4 POP DUP3 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x8D9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x8C5 JUMPI JUMPDEST POP POP POP POP POP SWAP3 POP DUP2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x9AC JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x998 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x96D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x998 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x97B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x901 JUMP JUMPDEST POP POP POP POP SWAP2 POP DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0xA7E JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA6A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA3F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA6A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA4D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x9D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0xAAD JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0xAC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C20 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xAF5 JUMPI PUSH1 0x2 SWAP2 POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH4 0xFFFFFFFF AND NUMBER GT PUSH2 0xB10 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND NUMBER GT PUSH2 0xB33 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x37 DUP1 DUP3 MSTORE PUSH1 0x0 SWAP3 PUSH2 0xB78 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP4 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV AND SWAP2 PUSH2 0x41C9 PUSH1 0x20 DUP4 ADD CODECOPY PUSH2 0x2215 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBA0 DUP3 PUSH1 0x64 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4242 PUSH1 0x25 SWAP2 CODECOPY PUSH2 0x2248 JUMP JUMPDEST SWAP1 POP PUSH2 0xBDA DUP2 PUSH1 0x4 PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x40AD PUSH1 0x3F SWAP2 CODECOPY PUSH2 0x21AC JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP4 AND PUSH1 0x1 PUSH1 0x40 SHL SWAP1 SWAP3 DIV AND GT ISZERO DUP1 PUSH2 0xC13 JUMPI POP PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND LT JUMPDEST ISZERO PUSH2 0xC24 JUMPI PUSH1 0x3 SWAP4 POP POP POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xC49 JUMPI PUSH1 0x4 SWAP4 POP POP POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x48 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC69 JUMPI PUSH1 0x7 SWAP4 POP POP POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x60D143F1 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH2 0xD02 SWAP4 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xC1A287E2 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xCFD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BD6 JUMP JUMPDEST PUSH2 0x229A JUMP JUMPDEST TIMESTAMP LT PUSH2 0xD14 JUMPI PUSH1 0x6 SWAP4 POP POP POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x5 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD2C DUP3 PUSH2 0xA99 JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0xD3C JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xD5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3CF0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C90 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH9 0xFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR SWAP1 SSTORE PUSH1 0x0 JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0xEBC JUMPI PUSH1 0x0 SLOAD PUSH1 0x4 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x591FCDFE SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0xDE1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0xE09 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x6 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xE23 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP7 PUSH1 0x7 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0xE3C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE7E SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3A4E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEAC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0xDAF SWAP1 POP JUMP JUMPDEST POP PUSH32 0x789CF55BE980739DAD1D0699B93B58E806B51C9D96619BFA8FE0A28ABAA7B30C DUP4 PUSH1 0x40 MLOAD PUSH2 0xEEC SWAP2 SWAP1 PUSH2 0x3B13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xF16 SWAP1 PUSH2 0x3924 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x15 DUP3 MSTORE PUSH21 0x536F7672796E20476F7665726E6F7220416C706861 PUSH1 0x58 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xDDF6FBF241D6C602C276B8332AECAC376FF7E0EF2276D109C25930E6911CA2BD PUSH2 0xF75 PUSH2 0x22BF JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF89 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3B21 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xFAF SWAP1 PUSH2 0x392F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0xFC8 SWAP2 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x20 ADD PUSH2 0x3B56 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFF5 SWAP3 SWAP2 SWAP1 PUSH2 0x38F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x1032 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3B7E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1054 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH2 0x1069 DUP2 PUSH2 0x22C3 JUMP JUMPDEST PUSH2 0x1085 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3CD0 JUMP JUMPDEST PUSH2 0x1090 DUP2 DUP11 DUP11 PUSH2 0x1F11 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x10D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3D20 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1115 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C50 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x3A66F901 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x113F SWAP1 DUP8 SWAP1 PUSH1 0x20 ADD PUSH2 0x393A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x116E SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3970 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x119C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x6F9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x536F7672796E20476F7665726E6F7220416C706861 PUSH1 0x58 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2522D7BA PUSH2 0x124C PUSH1 0x1 NUMBER SUB PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x429A PUSH1 0x37 SWAP2 CODECOPY PUSH2 0x217C JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x126A SWAP3 SWAP2 SWAP1 PUSH2 0x3EB4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1296 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x12BA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2D0E JUMP JUMPDEST SWAP1 POP PUSH1 0x64 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND PUSH2 0x7FE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x12F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3BE0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE18B681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xE18B681 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1338 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x134C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1372 PUSH2 0x1200 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x836EEBEE SWAP1 CALLER SWAP1 PUSH2 0x13A1 SWAP1 NUMBER SWAP1 PUSH2 0x22FC JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3948 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13EC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1410 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2D0E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x1436 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3CC0 JUMP JUMPDEST DUP6 MLOAD DUP8 MLOAD EQ DUP1 ISZERO PUSH2 0x1448 JUMPI POP DUP5 MLOAD DUP8 MLOAD EQ JUMPDEST DUP1 ISZERO PUSH2 0x1455 JUMPI POP DUP4 MLOAD DUP8 MLOAD EQ JUMPDEST PUSH2 0x1471 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C80 JUMP JUMPDEST DUP7 MLOAD PUSH2 0x148F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3CB0 JUMP JUMPDEST PUSH2 0x1497 PUSH2 0x10E6 JUMP JUMPDEST DUP8 MLOAD GT ISZERO PUSH2 0x14B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C60 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1534 JUMPI PUSH1 0x0 PUSH2 0x14D8 DUP3 PUSH2 0xA99 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x14E8 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1506 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3CE0 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1514 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1532 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C40 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x1542 NUMBER PUSH2 0xCFD PUSH2 0xA94 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1552 DUP3 PUSH2 0xCFD PUSH2 0x5D8 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE SWAP1 POP PUSH2 0x1565 PUSH2 0x24AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x200 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x159B DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4267 PUSH1 0x33 SWAP2 CODECOPY PUSH2 0x217C JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15C8 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4113 PUSH1 0x31 SWAP2 CODECOPY PUSH2 0x217C JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x162B PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4077 PUSH1 0x36 SWAP2 CODECOPY PUSH2 0x21AC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1671 PUSH1 0x4 PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4200 PUSH1 0x42 SWAP2 CODECOPY PUSH2 0x21AC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16B1 TIMESTAMP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x42D1 PUSH1 0x2A SWAP2 CODECOPY PUSH2 0x2324 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE POP SWAP1 POP DUP1 PUSH1 0x5 PUSH1 0x0 DUP4 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x4 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x120 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x140 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x9 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x160 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0xA PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x180 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1904 SWAP3 SWAP2 SWAP1 PUSH2 0x2530 JUMP JUMPDEST POP PUSH2 0x1A0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x1921 SWAP2 PUSH1 0x5 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2595 JUMP JUMPDEST POP PUSH2 0x1C0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x193E SWAP2 PUSH1 0x6 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x25DC JUMP JUMPDEST POP PUSH2 0x1E0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x195B SWAP2 PUSH1 0x7 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2635 JUMP JUMPDEST POP SWAP1 POP POP DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x6 PUSH1 0x0 DUP4 PUSH2 0x160 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x7D84A6263AE0D98D3329BD7B46BB4E8D6F98CD35A7ADB45C274C8B7FD5EBD5E0 DUP2 PUSH1 0x0 ADD MLOAD CALLER DUP14 DUP14 DUP14 DUP14 DUP10 DUP10 DUP16 PUSH1 0x40 MLOAD PUSH2 0x19D5 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3D3E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 MLOAD SWAP5 POP POP POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH2 0x19F9 DUP3 PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1A04 JUMPI INVALID JUMPDEST EQ PUSH2 0x1A21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3BF0 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SLOAD DUP3 MLOAD PUSH4 0xD48571F PUSH1 0xE3 SHL DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP5 SWAP4 PUSH2 0x1A7A SWAP4 TIMESTAMP SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH4 0x6A42B8F8 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x4 DUP4 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1C22 JUMPI PUSH2 0x1C1A DUP4 PUSH1 0x4 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1A9D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0x1AC5 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x6 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1ADF JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1B6D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1B42 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1B6D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B50 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH1 0x7 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1B81 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1C0F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1BE4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1C0F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1BF2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH2 0x234B JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1A7F JUMP JUMPDEST POP PUSH2 0x1C45 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x41A7 PUSH1 0x22 SWAP2 CODECOPY PUSH2 0x2324 JUMP JUMPDEST DUP3 PUSH1 0x2 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH32 0x9A2E42FD6722813D69113E7D0079D3D940171428DF7373DF9C7F7617CFDA2892 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0xEEC SWAP3 SWAP2 SWAP1 PUSH2 0x3DE6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x60C SWAP1 PUSH2 0x392F JUMP JUMPDEST PUSH2 0x1CB2 PUSH2 0x268E JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE PUSH1 0x8 ADD DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x1D3A DUP3 PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1D45 JUMPI INVALID JUMPDEST EQ PUSH2 0x1D62 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C00 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH10 0xFF000000000000000000 NOT AND PUSH1 0x1 PUSH1 0x48 SHL OR SWAP1 SSTORE SWAP1 JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1ED5 JUMPI PUSH1 0x0 SLOAD PUSH1 0x5 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x825F38F SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x1DBF JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP5 PUSH1 0x4 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1DD9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP7 SWAP1 DUP2 LT PUSH2 0x1E01 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP7 PUSH1 0x6 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1E1B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x7 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1E34 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP9 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E76 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3A4E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1ECC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BF4 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1D8D JUMP JUMPDEST POP PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F DUP3 PUSH1 0x40 MLOAD PUSH2 0x1F05 SWAP2 SWAP1 PUSH2 0x3B13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1F1C DUP4 PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1F27 JUMPI INVALID JUMPDEST EQ PUSH2 0x1F44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3D00 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE PUSH1 0x8 DUP2 ADD SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1F8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C30 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD SWAP1 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x41B775F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 PUSH4 0x836EEBEE SWAP3 PUSH2 0x1FD9 SWAP3 DUP12 SWAP3 PUSH4 0xFFFFFFFF AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x3A9E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2005 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2029 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2D0E JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x2098 JUMPI PUSH2 0x206B DUP4 PUSH1 0x1 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x40EC PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2215 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x20FB JUMP JUMPDEST PUSH2 0x20D2 DUP4 PUSH1 0x1 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x40EC PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2215 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0xFF NOT SWAP1 SWAP2 AND OR PUSH2 0xFF00 NOT AND PUSH2 0x100 DUP6 ISZERO ISZERO MUL OR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND MUL OR DUP3 SSTORE PUSH1 0x40 MLOAD PUSH32 0x877856338E13F63D0C36822FF0EF736B80934CD90574A3A5BC9262C39D217C46 SWAP1 PUSH2 0x216C SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP7 SWAP1 PUSH2 0x39BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH5 0x100000000 DUP5 LT PUSH2 0x21A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x3BCF JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x21C4 JUMPI POP PUSH1 0x0 PUSH2 0x220E JUMP JUMPDEST DUP4 DUP4 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP6 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP4 AND DUP2 PUSH2 0x21E0 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND EQ DUP4 SWAP1 PUSH2 0x220A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x3BCF JUMP JUMPDEST POP SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x220A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x3BCF JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x2272 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x3BCF JUMP JUMPDEST POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x2290 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x220E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C70 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x1D13 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x231E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3D10 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x40 SHL DUP5 LT PUSH2 0x21A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x3BCF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2B06537 SWAP1 PUSH2 0x2379 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x20 ADD PUSH2 0x39F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23AB SWAP2 SWAP1 PUSH2 0x3B13 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x23FB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB8 JUMP JUMPDEST ISZERO PUSH2 0x2418 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3CA0 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3A66F901 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x3A66F901 SWAP1 PUSH2 0x2450 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x39F4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x246A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x247E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x24A2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BD6 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x200 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x160 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0x180 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1A0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1C0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1E0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x2585 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2585 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2550 JUMP JUMPDEST POP PUSH2 0x2591 SWAP3 SWAP2 POP PUSH2 0x26AE JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x25D0 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x25D0 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25B5 JUMP JUMPDEST POP PUSH2 0x2591 SWAP3 SWAP2 POP PUSH2 0x26D2 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x2629 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2629 JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x2619 SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x26EC JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25FC JUMP JUMPDEST POP PUSH2 0x2591 SWAP3 SWAP2 POP PUSH2 0x2759 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x2682 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2682 JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x2672 SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x26EC JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2655 JUMP JUMPDEST POP PUSH2 0x2591 SWAP3 SWAP2 POP PUSH2 0x277C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x5DC SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2591 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH2 0x5DC SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2591 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x26D8 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x272D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x25D0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x25D0 JUMPI SWAP2 DUP3 ADD DUP3 DUP2 GT ISZERO PUSH2 0x25D0 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25B5 JUMP JUMPDEST PUSH2 0x5DC SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2591 JUMPI PUSH1 0x0 PUSH2 0x2773 DUP3 DUP3 PUSH2 0x279F JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x275F JUMP JUMPDEST PUSH2 0x5DC SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2591 JUMPI PUSH1 0x0 PUSH2 0x2796 DUP3 DUP3 PUSH2 0x279F JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2782 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x27C5 JUMPI POP PUSH2 0x27E3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x27E3 SWAP2 SWAP1 PUSH2 0x26D2 JUMP JUMPDEST POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D13 DUP2 PUSH2 0x403E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2815 PUSH2 0x2810 DUP3 PUSH2 0x3EF6 JUMP JUMPDEST PUSH2 0x3ED0 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x283A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2866 JUMPI DUP2 PUSH2 0x2850 DUP9 DUP3 PUSH2 0x27E6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x283D JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2881 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x288F PUSH2 0x2810 DUP3 PUSH2 0x3EF6 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2866 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x28B7 DUP9 DUP3 PUSH2 0x29C6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x28A1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x28EC PUSH2 0x2810 DUP3 PUSH2 0x3EF6 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2866 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x2914 DUP9 DUP3 PUSH2 0x29C6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x28FE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x293B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2949 PUSH2 0x2810 DUP3 PUSH2 0x3EF6 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x296E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2866 JUMPI DUP2 PUSH2 0x2984 DUP9 DUP3 PUSH2 0x29B0 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2971 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D13 DUP2 PUSH2 0x4052 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1D13 DUP2 PUSH2 0x4052 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D13 DUP2 PUSH2 0x405B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1D13 DUP2 PUSH2 0x405B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29E5 PUSH2 0x2810 DUP3 PUSH2 0x3F16 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x2A01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A0C DUP4 DUP3 DUP5 PUSH2 0x3FF2 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2A26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2A34 PUSH2 0x2810 DUP3 PUSH2 0x3F16 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x2A50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A0C DUP4 DUP3 DUP5 PUSH2 0x3FFE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D13 DUP2 PUSH2 0x4064 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1D13 DUP2 PUSH2 0x406D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A8F DUP5 DUP5 PUSH2 0x27E6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2AAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2AB6 DUP6 DUP6 PUSH2 0x27E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2AC7 DUP6 DUP3 DUP7 ADD PUSH2 0x29B0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2AE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B0B DUP9 DUP3 DUP10 ADD PUSH2 0x27F1 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B33 DUP9 DUP3 DUP10 ADD PUSH2 0x292A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B5B DUP9 DUP3 DUP10 ADD PUSH2 0x28CD JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B83 DUP9 DUP3 DUP10 ADD PUSH2 0x2870 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BAB DUP9 DUP3 DUP10 ADD PUSH2 0x29C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A8F DUP5 DUP5 PUSH2 0x29A5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A8F DUP5 DUP5 PUSH2 0x29BB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A8F DUP5 DUP3 DUP6 ADD PUSH2 0x2A15 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A8F DUP5 DUP5 PUSH2 0x29B0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2C65 DUP6 DUP6 PUSH2 0x29B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2AC7 DUP6 DUP3 DUP7 ADD PUSH2 0x27E6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2C95 DUP6 DUP6 PUSH2 0x29B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2AC7 DUP6 DUP3 DUP7 ADD PUSH2 0x299A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2CBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2CCA DUP9 DUP9 PUSH2 0x29B0 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x2CDB DUP9 DUP3 DUP10 ADD PUSH2 0x299A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x2CEC DUP9 DUP3 DUP10 ADD PUSH2 0x2A5B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x2CFD DUP9 DUP3 DUP10 ADD PUSH2 0x29B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x2BAB DUP9 DUP3 DUP10 ADD PUSH2 0x29B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A8F DUP5 DUP5 PUSH2 0x2A66 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D38 DUP4 DUP4 PUSH2 0x2D67 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220E DUP4 DUP4 PUSH2 0x2F09 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D38 DUP4 DUP4 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FA9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3F5C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D7B DUP3 PUSH2 0x3F4F JUMP JUMPDEST PUSH2 0x2D85 DUP2 DUP6 PUSH2 0x3F53 JUMP JUMPDEST SWAP4 POP PUSH2 0x2D90 DUP4 PUSH2 0x3F3D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DBE JUMPI DUP2 MLOAD PUSH2 0x2DA8 DUP9 DUP3 PUSH2 0x2D2C JUMP JUMPDEST SWAP8 POP PUSH2 0x2DB3 DUP4 PUSH2 0x3F3D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2D94 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DD4 DUP3 PUSH2 0x3F4F JUMP JUMPDEST PUSH2 0x2DDE DUP2 DUP6 PUSH2 0x3F53 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2DF0 DUP6 PUSH2 0x3F3D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2E2A JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x2E0D DUP6 DUP3 PUSH2 0x2D40 JUMP JUMPDEST SWAP5 POP PUSH2 0x2E18 DUP4 PUSH2 0x3F3D JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2DF4 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E42 DUP3 PUSH2 0x3F4F JUMP JUMPDEST PUSH2 0x2E4C DUP2 DUP6 PUSH2 0x3F53 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2E5E DUP6 PUSH2 0x3F3D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2E2A JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x2E7B DUP6 DUP3 PUSH2 0x2D40 JUMP JUMPDEST SWAP5 POP PUSH2 0x2E86 DUP4 PUSH2 0x3F3D JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2E62 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EA3 DUP3 PUSH2 0x3F4F JUMP JUMPDEST PUSH2 0x2EAD DUP2 DUP6 PUSH2 0x3F53 JUMP JUMPDEST SWAP4 POP PUSH2 0x2EB8 DUP4 PUSH2 0x3F3D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DBE JUMPI DUP2 MLOAD PUSH2 0x2ED0 DUP9 DUP3 PUSH2 0x2D4C JUMP JUMPDEST SWAP8 POP PUSH2 0x2EDB DUP4 PUSH2 0x3F3D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2EBC JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3F67 JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x2D61 PUSH2 0x2F04 DUP3 PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x5DC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F14 DUP3 PUSH2 0x3F4F JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP6 PUSH2 0x3F53 JUMP JUMPDEST SWAP4 POP PUSH2 0x2F2E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3FFE JUMP JUMPDEST PUSH2 0x2F37 DUP2 PUSH2 0x402A JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 DUP2 AND PUSH1 0x0 DUP2 EQ PUSH2 0x2F5E JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2F84 JUMPI PUSH2 0x2FC3 JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP4 DIV AND PUSH2 0x2F6F DUP2 DUP8 PUSH2 0x3F53 JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP2 MSTORE SWAP6 POP POP PUSH1 0x20 DUP6 ADD SWAP3 POP PUSH2 0x2FC3 JUMP JUMPDEST PUSH1 0x2 DUP3 DIV PUSH2 0x2F92 DUP2 DUP8 PUSH2 0x3F53 JUMP JUMPDEST SWAP6 POP PUSH2 0x2F9D DUP6 PUSH2 0x3F43 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2FBC JUMPI DUP2 SLOAD DUP9 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x2FA0 JUMP JUMPDEST DUP8 ADD SWAP5 POP POP POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FB0 JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FBB JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FC6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FF3 PUSH1 0x39 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F61636365707441646D696E3A207365 DUP2 MSTORE PUSH32 0x6E646572206D75737420626520676F7620677561726469616E00000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3052 PUSH1 0x44 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A71756575653A2070726F706F73616C2063 DUP2 MSTORE PUSH32 0x616E206F6E6C7920626520717565756564206966206974206973207375636365 PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x19591959 PUSH1 0xE2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30BE PUSH1 0x45 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A657865637574653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2063616E206F6E6C792062652065786563757465642069662069742069732071 PUSH1 0x20 DUP3 ADD MSTORE PUSH5 0x1D595D5959 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312B PUSH1 0x2 DUP4 PUSH2 0xD1C JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3149 PUSH1 0x4C DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F6578656375746553657454696D656C DUP2 MSTORE PUSH32 0x6F636B50656E64696E6741646D696E3A2073656E646572206D75737420626520 PUSH1 0x20 DUP3 ADD MSTORE PUSH12 0x33B7BB1033BAB0B93234B0B7 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31BD PUSH1 0x18 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x73657450656E64696E6741646D696E2861646472657373290000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31F6 PUSH1 0x29 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A73746174653A20696E76616C6964207072 DUP2 MSTORE PUSH9 0x1BDC1BDCD85B081A59 PUSH1 0xBA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3241 PUSH1 0x2D DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74657220 DUP2 MSTORE PUSH13 0x185B1C9958591E481D9BDD1959 PUSH1 0x9A SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3290 PUSH1 0x59 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C72656164792070656E64696E672070726F706F73616C00000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3315 PUSH1 0x4A DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F717565756553657454696D656C6F63 DUP2 MSTORE PUSH32 0x6B50656E64696E6741646D696E3A2073656E646572206D75737420626520676F PUSH1 0x20 DUP3 ADD MSTORE PUSH10 0x3B1033BAB0B93234B0B7 PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3387 PUSH1 0x28 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A20746F6F206D616E79 DUP2 MSTORE PUSH8 0x20616374696F6E73 PUSH1 0xC0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33D1 PUSH1 0x11 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33FE PUSH1 0x43 DUP4 PUSH2 0xD1C JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3469 PUSH1 0x27 DUP4 PUSH2 0xD1C JUMP JUMPDEST PUSH32 0x42616C6C6F742875696E743235362070726F706F73616C49642C626F6F6C2073 DUP2 MSTORE PUSH7 0x7570706F727429 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x27 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34B2 PUSH1 0x44 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2066756E6374696F6E20696E666F726D6174696F6E206172697479206D69736D PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0xC2E8C6D PUSH1 0xE3 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x351E PUSH1 0x2E DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2073656E646572206973 DUP2 MSTORE PUSH14 0x3713BA10309033BAB0B93234B0B7 PUSH1 0x91 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x356E PUSH1 0x44 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F71756575654F725265766572743A2070 DUP2 MSTORE PUSH32 0x726F706F73616C20616374696F6E20616C726561647920717565756564206174 PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x20657461 PUSH1 0xE0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35DA PUSH1 0x2C DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206D7573742070726F DUP2 MSTORE PUSH12 0x7669646520616374696F6E73 PUSH1 0xA0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3628 PUSH1 0x3F DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F736572 DUP2 MSTORE PUSH32 0x20766F7465732062656C6F772070726F706F73616C207468726573686F6C6400 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3687 PUSH1 0x2F DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63617374566F746542795369673A20696E DUP2 MSTORE PUSH15 0x76616C6964207369676E6174757265 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36D8 PUSH1 0x58 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C7265616479206163746976652070726F706F73616C0000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x375D PUSH1 0x36 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2063616E6E6F74206361 DUP2 MSTORE PUSH22 0x1B98D95B08195E1958DD5D1959081C1C9BDC1BDCD85B PUSH1 0x52 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B5 PUSH1 0x2A DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74696E67 DUP2 MSTORE PUSH10 0x81A5CC818DB1BDCD959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3801 PUSH1 0x15 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3832 PUSH1 0x36 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F61626469636174653A2073656E6465 DUP2 MSTORE PUSH22 0x391036BAB9BA1031329033B7BB1033BAB0B93234B0B7 PUSH1 0x51 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x388E DUP5 DUP3 PUSH2 0x2EE6 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x38A1 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2EE6 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x134C PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FD1 JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3F82 JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FDC JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3F8B JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3F97 JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FE7 JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3F9D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38FE DUP3 PUSH2 0x311E JUMP JUMPDEST SWAP2 POP PUSH2 0x390A DUP3 DUP6 PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x391A DUP3 DUP5 PUSH2 0x2EF8 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x33F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x345C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D13 DUP3 DUP5 PUSH2 0x2D67 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3956 DUP3 DUP7 PUSH2 0x2D58 JUMP JUMPDEST PUSH2 0x3963 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x2A8F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2EEF JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x397E DUP3 DUP8 PUSH2 0x2D67 JUMP JUMPDEST PUSH2 0x398B PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2FDD JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x399C DUP2 PUSH2 0x31B0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x39B0 DUP2 DUP6 PUSH2 0x2F09 JUMP JUMPDEST SWAP1 POP PUSH2 0x19E5 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2EEF JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x39CD DUP3 DUP8 PUSH2 0x2D67 JUMP JUMPDEST PUSH2 0x39DA PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x39E7 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2EE6 JUMP JUMPDEST PUSH2 0x19E5 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x38E1 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3A02 DUP3 DUP9 PUSH2 0x2D67 JUMP JUMPDEST PUSH2 0x3A0F PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2EEF JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3A21 DUP2 DUP7 PUSH2 0x2F09 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3A35 DUP2 DUP6 PUSH2 0x2F09 JUMP JUMPDEST SWAP1 POP PUSH2 0x3A44 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2EEF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3A5C DUP3 DUP9 PUSH2 0x2D67 JUMP JUMPDEST PUSH2 0x3A69 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2EEF JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3A7B DUP2 DUP7 PUSH2 0x2F41 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3A8F DUP2 DUP6 PUSH2 0x2F41 JUMP JUMPDEST SWAP1 POP PUSH2 0x3A44 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x38C6 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3AAC DUP3 DUP7 PUSH2 0x2D67 JUMP JUMPDEST PUSH2 0x3AB9 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x38B4 JUMP JUMPDEST PUSH2 0x2A8F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x38C6 JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3AD7 DUP2 DUP8 PUSH2 0x2D70 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3AEB DUP2 DUP7 PUSH2 0x2E98 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3AFF DUP2 DUP6 PUSH2 0x2E37 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3A44 DUP2 DUP5 PUSH2 0x2DC9 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D13 DUP3 DUP5 PUSH2 0x2EEF JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3B2F DUP3 DUP8 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3B3C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3B49 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x19E5 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2D67 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3B64 DUP3 DUP7 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3B71 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x2A8F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2EE6 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3B8C DUP3 DUP8 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3B99 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x38D8 JUMP JUMPDEST PUSH2 0x3BA6 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x19E5 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2EEF JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D13 DUP3 DUP5 PUSH2 0x2FCB JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D13 DUP3 DUP5 PUSH2 0x2FD4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x220E DUP2 DUP5 PUSH2 0x2F09 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x2FE6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3045 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x30B1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x313C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x31E9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3234 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3283 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3308 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x337A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x33C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x34A5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3511 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3561 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x35CD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x361B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x367A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x36CB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3750 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x37A8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x37F4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3825 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1D13 DUP3 DUP5 PUSH2 0x387D JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x3D4D DUP3 DUP13 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3D5A PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x2D58 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3D6C DUP2 DUP11 PUSH2 0x2D70 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3D80 DUP2 DUP10 PUSH2 0x2E98 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x3D94 DUP2 DUP9 PUSH2 0x2E37 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x3DA8 DUP2 DUP8 PUSH2 0x2DC9 JUMP JUMPDEST SWAP1 POP PUSH2 0x3DB7 PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3DC4 PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x2EEF JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x3DD7 DUP2 DUP5 PUSH2 0x2F09 JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3DF4 DUP3 DUP6 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x220E PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x3E10 DUP3 DUP16 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3E1D PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x38BD JUMP JUMPDEST PUSH2 0x3E2A PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x38BD JUMP JUMPDEST PUSH2 0x3E37 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x3E44 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x3E51 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x3E5E PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x3E6B PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x38CF JUMP JUMPDEST PUSH2 0x3E79 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x38CF JUMP JUMPDEST PUSH2 0x3E87 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x2EE6 JUMP JUMPDEST PUSH2 0x3E95 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x2EE6 JUMP JUMPDEST PUSH2 0x3EA3 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x2D67 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3DF4 DUP3 DUP6 PUSH2 0x38BD JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D13 DUP3 DUP5 PUSH2 0x38EA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3EEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x3F0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x3F2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x3F76 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xD1C DUP2 PUSH2 0x4034 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x3F5C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x3F6C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x5DC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x3F82 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x3F8B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x3F9D JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4019 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4001 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x134C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x8 DUP2 LT PUSH2 0x27E3 JUMPI INVALID JUMPDEST PUSH2 0x4047 DUP2 PUSH2 0x3F5C JUMP JUMPDEST DUP2 EQ PUSH2 0x27E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4047 DUP2 PUSH2 0x3F67 JUMP JUMPDEST PUSH2 0x4047 DUP2 PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x4047 DUP2 PUSH2 0x3F97 JUMP JUMPDEST PUSH2 0x4047 DUP2 PUSH2 0x3F9D JUMP INVALID SELFBALANCE PUSH16 0x7665726E6F72416C7068613A3A70726F PUSH17 0x6F73653A206F766572666C6F77206F6E20 PUSH18 0x756F72756D20636F6D7075746174696F6E47 PUSH16 0x7665726E6F72416C7068613A3A207374 PUSH2 0x7465 GASPRICE KECCAK256 PUSH21 0x6F74616C566F746573202A206D616A6F7269747950 PUSH6 0x7263656E7461 PUSH8 0x65203E2075696E74 CODECOPY CALLDATASIZE SELFBALANCE PUSH16 0x7665726E6F72416C7068613A3A5F6361 PUSH20 0x74566F74653A20766F7465206F766572666C6F77 SELFBALANCE PUSH16 0x7665726E6F72416C7068613A3A70726F PUSH17 0x6F73653A20656E6420626C6F636B206E75 PUSH14 0x626572206F766572666C6F77476F PUSH23 0x65726E6F72416C7068613A3A71756F72756D566F746573 GASPRICE KECCAK256 PUSH3 0x6C6F63 PUSH12 0x206E756D626572206F766572 PUSH7 0x6C6F77476F7665 PUSH19 0x6E6F72416C7068613A3A71756F72756D566F74 PUSH6 0x733A6D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77476F7665726E6F7241 PUSH13 0x7068613A3A71756575653A2045 SLOAD COINBASE KECCAK256 PUSH16 0x766572666C6F77476F7665726E6F7241 PUSH13 0x7068613A3A2073746174653A20 PUSH7 0x6F72566F746573 KECCAK256 0x2B KECCAK256 PUSH2 0x6761 PUSH10 0x6E7374566F746573203E KECCAK256 PUSH22 0x696E743936476F7665726E6F72416C7068613A3A7072 PUSH16 0x706F73653A206F766572666C6F77206F PUSH15 0x206D616A6F7269747950657263656E PUSH21 0x61676520636F6D7075746174696F6E476F7665726E PUSH16 0x72416C7068613A3A2073746174653A20 PUSH5 0x6976697369 PUSH16 0x6E206572726F72476F7665726E6F7241 PUSH13 0x7068613A3A70726F706F73653A KECCAK256 PUSH20 0x7461727420626C6F636B206E756D626572206F76 PUSH6 0x72666C6F7747 PUSH16 0x7665726E6F72416C7068613A3A70726F PUSH17 0x6F73616C5468726573686F6C643A20626C PUSH16 0x636B206E756D626572206F766572666C PUSH16 0x77476F7665726E6F72416C7068613A3A PUSH17 0x726F706F73653A20737461727454696D65 KECCAK256 PUSH16 0x766572666C6F77A365627A7A72315820 0x48 RETURNDATACOPY PUSH28 0x1B35A00DF1005C592EF3BD642D224482EE7CCA25520703FD49906298 ORIGIN PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "1146:20950:51:-;;;5763:351;8:9:-1;5:2;;;30:1;27;20:12;5:2;5763:351:51;;;;;;;;;;;;;;;;;;;;;5919:8;:31;;-1:-1:-1;;;;;;5919:31:51;;;-1:-1:-1;;;;;5919:31:51;;;;;;;-1:-1:-1;5954:28:51;;;;;;;;;;;;;;5986:8;:20;;;;;;;;;;;;;;;;6010:21;:46;;-1:-1:-1;;;;;;6010:46:51;-1:-1:-1;;;;;6010:46:51;;;;-1:-1:-1;;;;;;;;6060:50:51;;;;;;;;;;;;;;;;1146:20950;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:132;223:13;;241:32;223:13;241:32;;285:805;;;;;;466:3;454:9;445:7;441:23;437:33;434:2;;;483:1;480;473:12;434:2;518:1;535:64;591:7;571:9;535:64;;;525:74;;497:108;636:2;654:64;710:7;701:6;690:9;686:22;654:64;;;644:74;;615:109;755:2;773:64;829:7;820:6;809:9;805:22;773:64;;;763:74;;734:109;874:2;892:63;947:7;938:6;927:9;923:22;892:63;;;882:73;;853:108;992:3;1011:63;1066:7;1057:6;1046:9;1042:22;1011:63;;;1001:73;;971:109;428:662;;;;;;;;;1097:91;;-1:-1;;;;;1257:54;;1159:24;1240:76;1323:104;-1:-1;;;;;1384:38;;1367:60;1434:117;1503:24;1521:5;1503:24;;;1496:5;1493:35;1483:2;;1542:1;1539;1532:12;1483:2;1477:74;;1558:115;1626:23;1643:5;1626:23;;1600:73;1146:20950:51;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106101c25760003560e01c8063760fbc13116100f7578063d33219b411610095578063deaaa7cc11610064578063deaaa7cc146104ce578063e23a9a52146104e3578063e265379014610510578063fe0d94c114610525576101c2565b8063d33219b414610464578063da35c66414610479578063da95691a1461048e578063ddf0b009146104ae576101c2565b8063a3f4df7e116100d1578063a3f4df7e14610403578063b2b0d91f14610425578063b58131b01461043a578063b9a619611461044f576101c2565b8063760fbc13146103b95780637bdbe4d0146103ce57806391500671146103e3576101c2565b8063328dd9821161016457806340e58ee51161013e57806340e58ee514610335578063452a9320146103555780634634c61f146103775780634cf088d914610397576101c2565b8063328dd982146102c35780633932abb1146102f35780633e4f49e614610308576101c2565b806317977c61116101a057806317977c611461024c57806320606b701461026c57806321f43e421461028157806324bc1a64146102a1576101c2565b8063013cf08b146101c757806302a251a31461020857806315373e3d1461022a575b600080fd5b3480156101d357600080fd5b506101e76101e2366004612c28565b610538565b6040516101ff9c9b9a99989796959493929190613e01565b60405180910390f35b34801561021457600080fd5b5061021d6105d8565b6040516101ff9190613b13565b34801561023657600080fd5b5061024a610245366004612c76565b6105df565b005b34801561025857600080fd5b5061021d610267366004612a71565b6105ee565b34801561027857600080fd5b5061021d610600565b34801561028d57600080fd5b5061024a61029c366004612a97565b610617565b3480156102ad57600080fd5b506102b66106fe565b6040516101ff9190613ec2565b3480156102cf57600080fd5b506102e36102de366004612c28565b610805565b6040516101ff9493929190613ac6565b3480156102ff57600080fd5b5061021d610a94565b34801561031457600080fd5b50610328610323366004612c28565b610a99565b6040516101ff9190613bc1565b34801561034157600080fd5b5061024a610350366004612c28565b610d21565b34801561036157600080fd5b5061036a610ef9565b6040516101ff919061393a565b34801561038357600080fd5b5061024a610392366004612ca6565b610f08565b3480156103a357600080fd5b506103ac61109b565b6040516101ff9190613bb3565b3480156103c557600080fd5b5061024a6110aa565b3480156103da57600080fd5b5061021d6110e6565b3480156103ef57600080fd5b5061024a6103fe366004612a97565b6110eb565b34801561040f57600080fd5b506104186111c0565b6040516101ff9190613bcf565b34801561043157600080fd5b506102b66111f1565b34801561044657600080fd5b506102b6611200565b34801561045b57600080fd5b5061024a6112cd565b34801561047057600080fd5b506103ac611352565b34801561048557600080fd5b5061021d611361565b34801561049a57600080fd5b5061021d6104a9366004612ad1565b611367565b3480156104ba57600080fd5b5061024a6104c9366004612c28565b6119ee565b3480156104da57600080fd5b5061021d611c9e565b3480156104ef57600080fd5b506105036104fe366004612c46565b611caa565b6040516101ff9190613d30565b34801561051c57600080fd5b506102b6611d19565b61024a610533366004612c28565b611d2f565b6005602052600090815260409020805460018201546002830154600390930154919263ffffffff808316936401000000008404909116926001600160601b03600160401b808304821694600160a01b90930482169383831693600160601b8104909316926001600160401b03600160c01b9091048116929082169160ff918104821691600160481b820416906001600160a01b03600160501b909104168c565b610b405b90565b6105ea338383611f11565b5050565b60066020526000908152604090205481565b60405161060c90613924565b604051809103902081565b6002546001600160a01b0316331461064a5760405162461bcd60e51b815260040161064190613c10565b60405180910390fd5b600080546040516001600160a01b0390911691630825f38f9183919061067490879060200161393a565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016106a39493929190613970565b600060405180830381600087803b1580156106bd57600080fd5b505af11580156106d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106f99190810190612bf4565b505050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632522d7ba61074a600143036040518060600160405280603181526020016141446031913961217c565b426040518363ffffffff1660e01b8152600401610768929190613eb4565b60206040518083038186803b15801561078057600080fd5b505afa158015610794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107b89190810190612d0e565b600454604080516060810190915260328082529293506064926107ee926001600160601b031691859161417560208301396121ac565b6001600160601b0316816107fe57fe5b0491505090565b6060806060806000600560008781526020019081526020016000209050806004018160050182600601836007018380548060200260200160405190810160405280929190818152602001828054801561088757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610869575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156108d957602002820191906000526020600020905b8154815260200190600101908083116108c5575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156109ac5760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156109985780601f1061096d57610100808354040283529160200191610998565b820191906000526020600020905b81548152906001019060200180831161097b57829003601f168201915b505050505081526020019060010190610901565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610a7e5760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610a6a5780601f10610a3f57610100808354040283529160200191610a6a565b820191906000526020600020905b815481529060010190602001808311610a4d57829003601f168201915b5050505050815260200190600101906109d3565b5050505090509450945094509450509193509193565b600190565b60008160035410158015610aad5750600082115b610ac95760405162461bcd60e51b815260040161064190613c20565b60008281526005602052604090206003810154600160401b900460ff1615610af5576002915050610d1c565b600181015463ffffffff164311610b10576000915050610d1c565b6001810154640100000000900463ffffffff164311610b33576001915050610d1c565b600181015460408051606081019091526037808252600092610b78926001600160601b03600160401b8304811693600160a01b90930416916141c96020830139612215565b90506000610ba082606460405180606001604052806025815260200161424260259139612248565b9050610bda816004600c9054906101000a90046001600160601b03166040518060600160405280603f81526020016140ad603f91396121ac565b60018401549091506001600160601b03808316600160401b90920416111580610c13575060028301546001600160601b03908116908316105b15610c245760039350505050610d1c565b6002830154600160c01b90046001600160401b0316610c495760049350505050610d1c565b6003830154600160481b900460ff1615610c695760079350505050610d1c565b6002830154600054604080516360d143f160e11b81529051610d0293600160c01b90046001600160401b0316926001600160a01b03169163c1a287e2916004808301926020929190829003018186803b158015610cc557600080fd5b505afa158015610cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cfd9190810190612bd6565b61229a565b4210610d145760069350505050610d1c565b600593505050505b919050565b6000610d2c82610a99565b90506007816007811115610d3c57fe5b1415610d5a5760405162461bcd60e51b815260040161064190613cf0565b60008281526005602052604090206002546001600160a01b03163314610d925760405162461bcd60e51b815260040161064190613c90565b60038101805468ff00000000000000001916600160401b17905560005b6004820154811015610ebc576000546004830180546001600160a01b039092169163591fcdfe919084908110610de157fe5b6000918252602090912001546005850180546001600160a01b039092169185908110610e0957fe5b9060005260206000200154856006018581548110610e2357fe5b90600052602060002001866007018681548110610e3c57fe5b906000526020600020018760020160189054906101000a90046001600160401b03166040518663ffffffff1660e01b8152600401610e7e959493929190613a4e565b600060405180830381600087803b158015610e9857600080fd5b505af1158015610eac573d6000803e3d6000fd5b505060019092019150610daf9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610eec9190613b13565b60405180910390a1505050565b6002546001600160a01b031681565b6000604051610f1690613924565b604080519182900382208282019091526015825274536f7672796e20476f7665726e6f7220416c70686160581b6020909201919091527fddf6fbf241d6c602c276b8332aecac376ff7e0ef2276d109c25930e6911ca2bd610f756122bf565b30604051602001610f899493929190613b21565b6040516020818303038152906040528051906020012090506000604051610faf9061392f565b604051908190038120610fc89189908990602001613b56565b60405160208183030381529060405280519060200120905060008282604051602001610ff59291906138f3565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516110329493929190613b7e565b6020604051602081039080840390855afa158015611054573d6000803e3d6000fd5b505050602060405103519050611069816122c3565b6110855760405162461bcd60e51b815260040161064190613cd0565b611090818a8a611f11565b505050505050505050565b6001546001600160a01b031681565b6002546001600160a01b031633146110d45760405162461bcd60e51b815260040161064190613d20565b600280546001600160a01b0319169055565b600a90565b6002546001600160a01b031633146111155760405162461bcd60e51b815260040161064190613c50565b600080546040516001600160a01b0390911691633a66f9019183919061113f90879060200161393a565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161116e9493929190613970565b602060405180830381600087803b15801561118857600080fd5b505af115801561119c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106f99190810190612bd6565b60405180604001604052806015815260200174536f7672796e20476f7665726e6f7220416c70686160581b81525081565b6004546001600160601b031681565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632522d7ba61124c6001430360405180606001604052806037815260200161429a6037913961217c565b426040518363ffffffff1660e01b815260040161126a929190613eb4565b60206040518083038186803b15801561128257600080fd5b505afa158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112ba9190810190612d0e565b905060646001600160601b0382166107fe565b6002546001600160a01b031633146112f75760405162461bcd60e51b815260040161064190613be0565b6000805460408051630e18b68160e01b815290516001600160a01b0390921692630e18b6819260048084019382900301818387803b15801561133857600080fd5b505af115801561134c573d6000803e3d6000fd5b50505050565b6000546001600160a01b031681565b60035481565b600080611372611200565b600180549192506001600160601b038316916001600160a01b03169063836eebee9033906113a19043906122fc565b426040518463ffffffff1660e01b81526004016113c093929190613948565b60206040518083038186803b1580156113d857600080fd5b505afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114109190810190612d0e565b6001600160601b0316116114365760405162461bcd60e51b815260040161064190613cc0565b85518751148015611448575084518751145b8015611455575083518751145b6114715760405162461bcd60e51b815260040161064190613c80565b865161148f5760405162461bcd60e51b815260040161064190613cb0565b6114976110e6565b875111156114b75760405162461bcd60e51b815260040161064190613c60565b3360009081526006602052604090205480156115345760006114d882610a99565b905060018160078111156114e857fe5b14156115065760405162461bcd60e51b815260040161064190613ce0565b600081600781111561151457fe5b14156115325760405162461bcd60e51b815260040161064190613c40565b505b600061154243610cfd610a94565b9050600061155282610cfd6105d8565b60038054600101905590506115656124aa565b604051806102000160405280600354815260200161159b856040518060600160405280603381526020016142676033913961217c565b63ffffffff1681526020016115c8846040518060600160405280603181526020016141136031913961217c565b63ffffffff16815260200160006001600160601b0316815260200160006001600160601b0316815260200161162b600460009054906101000a90046001600160601b031688604051806060016040528060368152602001614077603691396121ac565b6001600160601b031681526020016116716004600c9054906101000a90046001600160601b031688604051806080016040528060428152602001614200604291396121ac565b6001600160601b0316815260200160006001600160401b031681526020016116b1426040518060600160405280602a81526020016142d1602a9139612324565b6001600160401b03168152602001600015158152602001600015158152602001336001600160a01b031681526020018c81526020018b81526020018a81526020018981525090508060056000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548163ffffffff021916908363ffffffff16021790555060408201518160010160046101000a81548163ffffffff021916908363ffffffff16021790555060608201518160010160086101000a8154816001600160601b0302191690836001600160601b0316021790555060808201518160010160146101000a8154816001600160601b0302191690836001600160601b0316021790555060a08201518160020160006101000a8154816001600160601b0302191690836001600160601b0316021790555060c082015181600201600c6101000a8154816001600160601b0302191690836001600160601b0316021790555060e08201518160020160186101000a8154816001600160401b0302191690836001600160401b031602179055506101008201518160030160006101000a8154816001600160401b0302191690836001600160401b031602179055506101208201518160030160086101000a81548160ff0219169083151502179055506101408201518160030160096101000a81548160ff02191690831515021790555061016082015181600301600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550610180820151816004019080519060200190611904929190612530565b506101a08201518051611921916005840191602090910190612595565b506101c0820151805161193e9160068401916020909101906125dc565b506101e0820151805161195b916007840191602090910190612635565b509050508060000151600660008361016001516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338d8d8d8d89898f6040516119d599989796959493929190613d3e565b60405180910390a1519450505050505b95945050505050565b60046119f982610a99565b6007811115611a0457fe5b14611a215760405162461bcd60e51b815260040161064190613bf0565b600081815260056020908152604080832083548251630d48571f60e31b81529251919493611a7a9342936001600160a01b0390931692636a42b8f892600480840193919291829003018186803b158015610cc557600080fd5b905060005b6004830154811015611c2257611c1a836004018281548110611a9d57fe5b6000918252602090912001546005850180546001600160a01b039092169184908110611ac557fe5b9060005260206000200154856006018481548110611adf57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611b6d5780601f10611b4257610100808354040283529160200191611b6d565b820191906000526020600020905b815481529060010190602001808311611b5057829003601f168201915b5050505050866007018581548110611b8157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611c0f5780601f10611be457610100808354040283529160200191611c0f565b820191906000526020600020905b815481529060010190602001808311611bf257829003601f168201915b50505050508661234b565b600101611a7f565b50611c45816040518060600160405280602281526020016141a760229139612324565b8260020160186101000a8154816001600160401b0302191690836001600160401b031602179055507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928382604051610eec929190613de6565b60405161060c9061392f565b611cb261268e565b5060008281526005602090815260408083206001600160a01b03851684526008018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046001600160601b0316918101919091525b92915050565b600454600160601b90046001600160601b031681565b6005611d3a82610a99565b6007811115611d4557fe5b14611d625760405162461bcd60e51b815260040161064190613c00565b600081815260056020526040812060038101805469ff0000000000000000001916600160481b179055905b6004820154811015611ed5576000546005830180546001600160a01b0390921691630825f38f919084908110611dbf57fe5b9060005260206000200154846004018481548110611dd957fe5b6000918252602090912001546005860180546001600160a01b039092169186908110611e0157fe5b9060005260206000200154866006018681548110611e1b57fe5b90600052602060002001876007018781548110611e3457fe5b906000526020600020018860020160189054906101000a90046001600160401b03166040518763ffffffff1660e01b8152600401611e76959493929190613a4e565b6000604051808303818588803b158015611e8f57600080fd5b505af1158015611ea3573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611ecc9190810190612bf4565b50600101611d8d565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611f059190613b13565b60405180910390a15050565b6001611f1c83610a99565b6007811115611f2757fe5b14611f445760405162461bcd60e51b815260040161064190613d00565b60008281526005602090815260408083206001600160a01b038716845260088101909252909120805460ff1615611f8d5760405162461bcd60e51b815260040161064190613c30565b600180549083015460038401546040516341b775f760e11b81526000936001600160a01b03169263836eebee92611fd9928b9263ffffffff16916001600160401b031690600401613a9e565b60206040518083038186803b158015611ff157600080fd5b505afa158015612005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120299190810190612d0e565b905083156120985761206b8360010160089054906101000a90046001600160601b0316826040518060600160405280602781526020016140ec60279139612215565b8360010160086101000a8154816001600160601b0302191690836001600160601b031602179055506120fb565b6120d28360010160149054906101000a90046001600160601b0316826040518060600160405280602781526020016140ec60279139612215565b8360010160146101000a8154816001600160601b0302191690836001600160601b031602179055505b8154600160ff199091161761ff00191661010085151502176dffffffffffffffffffffffff00001916620100006001600160601b038316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c469061216c9088908890889086906139bf565b60405180910390a1505050505050565b60008164010000000084106121a45760405162461bcd60e51b81526004016106419190613bcf565b509192915050565b60006001600160601b0384166121c45750600061220e565b8383026001600160601b0380851690808716908316816121e057fe5b046001600160601b031614839061220a5760405162461bcd60e51b81526004016106419190613bcf565b5090505b9392505050565b6000838301826001600160601b03808716908316101561220a5760405162461bcd60e51b81526004016106419190613bcf565b6000816001600160601b0384166122725760405162461bcd60e51b81526004016106419190613bcf565b506000836001600160601b0316856001600160601b03168161229057fe5b0495945050505050565b60008282018381101561220e5760405162461bcd60e51b815260040161064190613c70565b4690565b600073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b03831614801590611d135750506001600160a01b0316151590565b60008282111561231e5760405162461bcd60e51b815260040161064190613d10565b50900390565b600081600160401b84106121a45760405162461bcd60e51b81526004016106419190613bcf565b6000546040516001600160a01b039091169063f2b065379061237990889088908890889088906020016139f4565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016123ab9190613b13565b60206040518083038186803b1580156123c357600080fd5b505afa1580156123d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123fb9190810190612bb8565b156124185760405162461bcd60e51b815260040161064190613ca0565b600054604051633a66f90160e01b81526001600160a01b0390911690633a66f9019061245090889088908890889088906004016139f4565b602060405180830381600087803b15801561246a57600080fd5b505af115801561247e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124a29190810190612bd6565b505050505050565b604080516102008101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820183905261016082019290925261018081018290526101a081018290526101c081018290526101e081019190915290565b828054828255906000526020600020908101928215612585579160200282015b8281111561258557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612550565b506125919291506126ae565b5090565b8280548282559060005260206000209081019282156125d0579160200282015b828111156125d05782518255916020019190600101906125b5565b506125919291506126d2565b828054828255906000526020600020908101928215612629579160200282015b8281111561262957825180516126199184916020909101906126ec565b50916020019190600101906125fc565b50612591929150612759565b828054828255906000526020600020908101928215612682579160200282015b8281111561268257825180516126729184916020909101906126ec565b5091602001919060010190612655565b5061259192915061277c565b604080516060810182526000808252602082018190529181019190915290565b6105dc91905b808211156125915780546001600160a01b03191681556001016126b4565b6105dc91905b8082111561259157600081556001016126d8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061272d57805160ff19168380011785556125d0565b828001600101855582156125d057918201828111156125d05782518255916020019190600101906125b5565b6105dc91905b80821115612591576000612773828261279f565b5060010161275f565b6105dc91905b80821115612591576000612796828261279f565b50600101612782565b50805460018160011615610100020316600290046000825580601f106127c557506127e3565b601f0160209004906000526020600020908101906127e391906126d2565b50565b8035611d138161403e565b600082601f83011261280257600080fd5b813561281561281082613ef6565b613ed0565b9150818183526020840193506020810190508385602084028201111561283a57600080fd5b60005b83811015612866578161285088826127e6565b845250602092830192919091019060010161283d565b5050505092915050565b600082601f83011261288157600080fd5b813561288f61281082613ef6565b81815260209384019390925082018360005b8381101561286657813586016128b788826129c6565b84525060209283019291909101906001016128a1565b600082601f8301126128de57600080fd5b81356128ec61281082613ef6565b81815260209384019390925082018360005b83811015612866578135860161291488826129c6565b84525060209283019291909101906001016128fe565b600082601f83011261293b57600080fd5b813561294961281082613ef6565b9150818183526020840193506020810190508385602084028201111561296e57600080fd5b60005b83811015612866578161298488826129b0565b8452506020928301929190910190600101612971565b8035611d1381614052565b8051611d1381614052565b8035611d138161405b565b8051611d138161405b565b600082601f8301126129d757600080fd5b81356129e561281082613f16565b91508082526020830160208301858383011115612a0157600080fd5b612a0c838284613ff2565b50505092915050565b600082601f830112612a2657600080fd5b8151612a3461281082613f16565b91508082526020830160208301858383011115612a5057600080fd5b612a0c838284613ffe565b8035611d1381614064565b8051611d138161406d565b600060208284031215612a8357600080fd5b6000612a8f84846127e6565b949350505050565b60008060408385031215612aaa57600080fd5b6000612ab685856127e6565b9250506020612ac7858286016129b0565b9150509250929050565b600080600080600060a08688031215612ae957600080fd5b85356001600160401b03811115612aff57600080fd5b612b0b888289016127f1565b95505060208601356001600160401b03811115612b2757600080fd5b612b338882890161292a565b94505060408601356001600160401b03811115612b4f57600080fd5b612b5b888289016128cd565b93505060608601356001600160401b03811115612b7757600080fd5b612b8388828901612870565b92505060808601356001600160401b03811115612b9f57600080fd5b612bab888289016129c6565b9150509295509295909350565b600060208284031215612bca57600080fd5b6000612a8f84846129a5565b600060208284031215612be857600080fd5b6000612a8f84846129bb565b600060208284031215612c0657600080fd5b81516001600160401b03811115612c1c57600080fd5b612a8f84828501612a15565b600060208284031215612c3a57600080fd5b6000612a8f84846129b0565b60008060408385031215612c5957600080fd5b6000612c6585856129b0565b9250506020612ac7858286016127e6565b60008060408385031215612c8957600080fd5b6000612c9585856129b0565b9250506020612ac78582860161299a565b600080600080600060a08688031215612cbe57600080fd5b6000612cca88886129b0565b9550506020612cdb8882890161299a565b9450506040612cec88828901612a5b565b9350506060612cfd888289016129b0565b9250506080612bab888289016129b0565b600060208284031215612d2057600080fd5b6000612a8f8484612a66565b6000612d388383612d67565b505060200190565b600061220e8383612f09565b6000612d388383612eef565b612d6181613fa9565b82525050565b612d6181613f5c565b6000612d7b82613f4f565b612d858185613f53565b9350612d9083613f3d565b8060005b83811015612dbe578151612da88882612d2c565b9750612db383613f3d565b925050600101612d94565b509495945050505050565b6000612dd482613f4f565b612dde8185613f53565b935083602082028501612df085613f3d565b8060005b85811015612e2a5784840389528151612e0d8582612d40565b9450612e1883613f3d565b60209a909a0199925050600101612df4565b5091979650505050505050565b6000612e4282613f4f565b612e4c8185613f53565b935083602082028501612e5e85613f3d565b8060005b85811015612e2a5784840389528151612e7b8582612d40565b9450612e8683613f3d565b60209a909a0199925050600101612e62565b6000612ea382613f4f565b612ead8185613f53565b9350612eb883613f3d565b8060005b83811015612dbe578151612ed08882612d4c565b9750612edb83613f3d565b925050600101612ebc565b612d6181613f67565b612d61816105dc565b612d61612f04826105dc565b6105dc565b6000612f1482613f4f565b612f1e8185613f53565b9350612f2e818560208601613ffe565b612f378161402a565b9093019392505050565b600081546001811660008114612f5e5760018114612f8457612fc3565b607f6002830416612f6f8187613f53565b60ff1984168152955050602085019250612fc3565b60028204612f928187613f53565b9550612f9d85613f43565b60005b82811015612fbc57815488820152600190910190602001612fa0565b8701945050505b505092915050565b612d6181613fb0565b612d6181613fbb565b612d6181613fc6565b6000612ff3603983613f53565b7f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736581527f6e646572206d75737420626520676f7620677561726469616e00000000000000602082015260400192915050565b6000613052604483613f53565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c79206265207175657565642069662069742069732073756363656020820152631959195960e21b604082015260600192915050565b60006130be604583613f53565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c7920626520657865637574656420696620697420697320716020820152641d595d595960da1b604082015260600192915050565b600061312b600283610d1c565b61190160f01b815260020192915050565b6000613149604c83613f53565b7f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c81527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208201526b33b7bb1033bab0b93234b0b760a11b604082015260600192915050565b60006131bd601883613f53565b7f73657450656e64696e6741646d696e2861646472657373290000000000000000815260200192915050565b60006131f6602983613f53565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c69642070728152681bdc1bdcd85b081a5960ba1b602082015260400192915050565b6000613241602d83613f53565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081526c185b1c9958591e481d9bdd1959609a1b602082015260400192915050565b6000613290605983613f53565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000613315604a83613f53565b7f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6381527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f6020820152693b1033bab0b93234b0b760b11b604082015260600192915050565b6000613387602883613f53565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981526720616374696f6e7360c01b602082015260400192915050565b60006133d1601183613f53565b706164646974696f6e206f766572666c6f7760781b815260200192915050565b60006133fe604383610d1c565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000613469602783610d1c565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20738152667570706f72742960c81b602082015260270192915050565b60006134b2604483613f53565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6020820152630c2e8c6d60e31b604082015260600192915050565b600061351e602e83613f53565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2073656e64657220697381526d3713ba10309033bab0b93234b0b760911b602082015260400192915050565b600061356e604483613f53565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c7265616479207175657565642061746020820152632065746160e01b604082015260600192915050565b60006135da602c83613f53565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81526b7669646520616374696f6e7360a01b602082015260400192915050565b6000613628603f83613f53565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000613687602f83613f53565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81526e76616c6964207369676e617475726560881b602082015260400192915050565b60006136d8605883613f53565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b600061375d603683613f53565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f742063618152751b98d95b08195e1958dd5d1959081c1c9bdc1bdcd85b60521b602082015260400192915050565b60006137b5602a83613f53565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e67815269081a5cc818db1bdcd95960b21b602082015260400192915050565b6000613801601583613f53565b747375627472616374696f6e20756e646572666c6f7760581b815260200192915050565b6000613832603683613f53565b7f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e6465815275391036bab9ba1031329033b7bb1033bab0b93234b0b760511b602082015260400192915050565b8051606083019061388e8482612ee6565b5060208201516138a16020850182612ee6565b50604082015161134c60408501826138ea565b612d6181613fd1565b612d6181613f82565b612d6181613fdc565b612d6181613f8b565b612d6181613f97565b612d6181613fe7565b612d6181613f9d565b60006138fe8261311e565b915061390a8285612ef8565b60208201915061391a8284612ef8565b5060200192915050565b6000611d13826133f1565b6000611d138261345c565b60208101611d138284612d67565b606081016139568286612d58565b6139636020830185612eef565b612a8f6040830184612eef565b60a0810161397e8287612d67565b61398b6020830186612fdd565b818103604083015261399c816131b0565b905081810360608301526139b08185612f09565b90506119e56080830184612eef565b608081016139cd8287612d67565b6139da6020830186612eef565b6139e76040830185612ee6565b6119e560608301846138e1565b60a08101613a028288612d67565b613a0f6020830187612eef565b8181036040830152613a218186612f09565b90508181036060830152613a358185612f09565b9050613a446080830184612eef565b9695505050505050565b60a08101613a5c8288612d67565b613a696020830187612eef565b8181036040830152613a7b8186612f41565b90508181036060830152613a8f8185612f41565b9050613a4460808301846138c6565b60608101613aac8286612d67565b613ab960208301856138b4565b612a8f60408301846138c6565b60808082528101613ad78187612d70565b90508181036020830152613aeb8186612e98565b90508181036040830152613aff8185612e37565b90508181036060830152613a448184612dc9565b60208101611d138284612eef565b60808101613b2f8287612eef565b613b3c6020830186612eef565b613b496040830185612eef565b6119e56060830184612d67565b60608101613b648286612eef565b613b716020830185612eef565b612a8f6040830184612ee6565b60808101613b8c8287612eef565b613b9960208301866138d8565b613ba66040830185612eef565b6119e56060830184612eef565b60208101611d138284612fcb565b60208101611d138284612fd4565b6020808252810161220e8184612f09565b60208082528101611d1381612fe6565b60208082528101611d1381613045565b60208082528101611d13816130b1565b60208082528101611d138161313c565b60208082528101611d13816131e9565b60208082528101611d1381613234565b60208082528101611d1381613283565b60208082528101611d1381613308565b60208082528101611d138161337a565b60208082528101611d13816133c4565b60208082528101611d13816134a5565b60208082528101611d1381613511565b60208082528101611d1381613561565b60208082528101611d13816135cd565b60208082528101611d138161361b565b60208082528101611d138161367a565b60208082528101611d13816136cb565b60208082528101611d1381613750565b60208082528101611d13816137a8565b60208082528101611d13816137f4565b60208082528101611d1381613825565b60608101611d13828461387d565b6101208101613d4d828c612eef565b613d5a602083018b612d58565b8181036040830152613d6c818a612d70565b90508181036060830152613d808189612e98565b90508181036080830152613d948188612e37565b905081810360a0830152613da88187612dc9565b9050613db760c0830186612eef565b613dc460e0830185612eef565b818103610100830152613dd78184612f09565b9b9a5050505050505050505050565b60408101613df48285612eef565b61220e6020830184612eef565b6101808101613e10828f612eef565b613e1d602083018e6138bd565b613e2a604083018d6138bd565b613e37606083018c6138ea565b613e44608083018b6138ea565b613e5160a083018a6138ea565b613e5e60c08301896138ea565b613e6b60e08301886138cf565b613e796101008301876138cf565b613e87610120830186612ee6565b613e95610140830185612ee6565b613ea3610160830184612d67565b9d9c50505050505050505050505050565b60408101613df482856138bd565b60208101611d1382846138ea565b6040518181016001600160401b0381118282101715613eee57600080fd5b604052919050565b60006001600160401b03821115613f0c57600080fd5b5060209081020190565b60006001600160401b03821115613f2c57600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b6000611d1382613f76565b151590565b80610d1c81614034565b6001600160a01b031690565b63ffffffff1690565b6001600160401b031690565b60ff1690565b6001600160601b031690565b6000611d13825b6000611d1382613f5c565b6000611d1382613f6c565b6000611d13826105dc565b6000611d1382613f82565b6000611d1382613f8b565b6000611d1382613f9d565b82818337506000910152565b60005b83811015614019578181015183820152602001614001565b8381111561134c5750506000910152565b601f01601f191690565b600881106127e357fe5b61404781613f5c565b81146127e357600080fd5b61404781613f67565b614047816105dc565b61404781613f97565b61404781613f9d56fe476f7665726e6f72416c7068613a3a70726f706f73653a206f766572666c6f77206f6e2071756f72756d20636f6d7075746174696f6e476f7665726e6f72416c7068613a3a2073746174653a20746f74616c566f746573202a206d616a6f7269747950657263656e74616765203e2075696e743936476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465206f766572666c6f77476f7665726e6f72416c7068613a3a70726f706f73653a20656e6420626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a71756f72756d566f7465733a20626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a71756f72756d566f7465733a6d756c7469706c69636174696f6e206f766572666c6f77476f7665726e6f72416c7068613a3a71756575653a20455441206f766572666c6f77476f7665726e6f72416c7068613a3a2073746174653a20666f72566f746573202b20616761696e7374566f746573203e2075696e743936476f7665726e6f72416c7068613a3a70726f706f73653a206f766572666c6f77206f6e206d616a6f7269747950657263656e7461676520636f6d7075746174696f6e476f7665726e6f72416c7068613a3a2073746174653a206469766973696f6e206572726f72476f7665726e6f72416c7068613a3a70726f706f73653a20737461727420626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a70726f706f73616c5468726573686f6c643a20626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a70726f706f73653a20737461727454696d65206f766572666c6f77a365627a7a72315820483e7b1b35a00df1005c592ef3bd642d224482ee7cca25520703fd49906298326c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x760FBC13 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xD33219B4 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xDEAAA7CC GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xDEAAA7CC EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0xE23A9A52 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0xE2653790 EQ PUSH2 0x510 JUMPI DUP1 PUSH4 0xFE0D94C1 EQ PUSH2 0x525 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xD33219B4 EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0x479 JUMPI DUP1 PUSH4 0xDA95691A EQ PUSH2 0x48E JUMPI DUP1 PUSH4 0xDDF0B009 EQ PUSH2 0x4AE JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xA3F4DF7E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA3F4DF7E EQ PUSH2 0x403 JUMPI DUP1 PUSH4 0xB2B0D91F EQ PUSH2 0x425 JUMPI DUP1 PUSH4 0xB58131B0 EQ PUSH2 0x43A JUMPI DUP1 PUSH4 0xB9A61961 EQ PUSH2 0x44F JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x760FBC13 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x7BDBE4D0 EQ PUSH2 0x3CE JUMPI DUP1 PUSH4 0x91500671 EQ PUSH2 0x3E3 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x328DD982 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0x40E58EE5 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x40E58EE5 EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0x452A9320 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x4634C61F EQ PUSH2 0x377 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x397 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x328DD982 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x3932ABB1 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x3E4F49E6 EQ PUSH2 0x308 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x17977C61 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x17977C61 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x21F43E42 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x24BC1A64 EQ PUSH2 0x2A1 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x13CF08B EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x2A251A3 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x15373E3D EQ PUSH2 0x22A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C28 JUMP JUMPDEST PUSH2 0x538 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3E01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x5D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x3B13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C76 JUMP JUMPDEST PUSH2 0x5DF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A71 JUMP JUMPDEST PUSH2 0x5EE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x600 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x29C CALLDATASIZE PUSH1 0x4 PUSH2 0x2A97 JUMP JUMPDEST PUSH2 0x617 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B6 PUSH2 0x6FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x3EC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E3 PUSH2 0x2DE CALLDATASIZE PUSH1 0x4 PUSH2 0x2C28 JUMP JUMPDEST PUSH2 0x805 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3AC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0xA94 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x328 PUSH2 0x323 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C28 JUMP JUMPDEST PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x3BC1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x341 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x350 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C28 JUMP JUMPDEST PUSH2 0xD21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36A PUSH2 0xEF9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x393A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA6 JUMP JUMPDEST PUSH2 0xF08 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3AC PUSH2 0x109B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x3BB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x10AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x10E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x3FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2A97 JUMP JUMPDEST PUSH2 0x10EB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x418 PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x3BCF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x431 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B6 PUSH2 0x11F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B6 PUSH2 0x1200 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x12CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3AC PUSH2 0x1352 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x1361 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x4A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AD1 JUMP JUMPDEST PUSH2 0x1367 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24A PUSH2 0x4C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C28 JUMP JUMPDEST PUSH2 0x19EE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21D PUSH2 0x1C9E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x4FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2C46 JUMP JUMPDEST PUSH2 0x1CAA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x3D30 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B6 PUSH2 0x1D19 JUMP JUMPDEST PUSH2 0x24A PUSH2 0x533 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C28 JUMP JUMPDEST PUSH2 0x1D2F JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP3 PUSH4 0xFFFFFFFF DUP1 DUP4 AND SWAP4 PUSH5 0x100000000 DUP5 DIV SWAP1 SWAP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP1 DUP4 DIV DUP3 AND SWAP5 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV DUP3 AND SWAP4 DUP4 DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV SWAP1 SWAP4 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP3 SWAP1 DUP3 AND SWAP2 PUSH1 0xFF SWAP2 DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x48 SHL DUP3 DIV AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x50 SHL SWAP1 SWAP2 DIV AND DUP13 JUMP JUMPDEST PUSH2 0xB40 JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5EA CALLER DUP4 DUP4 PUSH2 0x1F11 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x60C SWAP1 PUSH2 0x3924 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x64A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C10 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x825F38F SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x674 SWAP1 DUP8 SWAP1 PUSH1 0x20 ADD PUSH2 0x393A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6A3 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3970 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x6F9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BF4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2522D7BA PUSH2 0x74A PUSH1 0x1 NUMBER SUB PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4144 PUSH1 0x31 SWAP2 CODECOPY PUSH2 0x217C JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x768 SWAP3 SWAP2 SWAP1 PUSH2 0x3EB4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x794 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x7B8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2D0E JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x32 DUP1 DUP3 MSTORE SWAP3 SWAP4 POP PUSH1 0x64 SWAP3 PUSH2 0x7EE SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP6 SWAP2 PUSH2 0x4175 PUSH1 0x20 DUP4 ADD CODECOPY PUSH2 0x21AC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x7FE JUMPI INVALID JUMPDEST DIV SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x4 ADD DUP2 PUSH1 0x5 ADD DUP3 PUSH1 0x6 ADD DUP4 PUSH1 0x7 ADD DUP4 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x887 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x869 JUMPI JUMPDEST POP POP POP POP POP SWAP4 POP DUP3 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x8D9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x8C5 JUMPI JUMPDEST POP POP POP POP POP SWAP3 POP DUP2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x9AC JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x998 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x96D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x998 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x97B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x901 JUMP JUMPDEST POP POP POP POP SWAP2 POP DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0xA7E JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA6A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA3F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA6A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA4D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x9D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0xAAD JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0xAC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C20 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xAF5 JUMPI PUSH1 0x2 SWAP2 POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH4 0xFFFFFFFF AND NUMBER GT PUSH2 0xB10 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND NUMBER GT PUSH2 0xB33 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x37 DUP1 DUP3 MSTORE PUSH1 0x0 SWAP3 PUSH2 0xB78 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP4 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV AND SWAP2 PUSH2 0x41C9 PUSH1 0x20 DUP4 ADD CODECOPY PUSH2 0x2215 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBA0 DUP3 PUSH1 0x64 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4242 PUSH1 0x25 SWAP2 CODECOPY PUSH2 0x2248 JUMP JUMPDEST SWAP1 POP PUSH2 0xBDA DUP2 PUSH1 0x4 PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x40AD PUSH1 0x3F SWAP2 CODECOPY PUSH2 0x21AC JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP4 AND PUSH1 0x1 PUSH1 0x40 SHL SWAP1 SWAP3 DIV AND GT ISZERO DUP1 PUSH2 0xC13 JUMPI POP PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND LT JUMPDEST ISZERO PUSH2 0xC24 JUMPI PUSH1 0x3 SWAP4 POP POP POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xC49 JUMPI PUSH1 0x4 SWAP4 POP POP POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x48 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC69 JUMPI PUSH1 0x7 SWAP4 POP POP POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x60D143F1 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH2 0xD02 SWAP4 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xC1A287E2 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xCFD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BD6 JUMP JUMPDEST PUSH2 0x229A JUMP JUMPDEST TIMESTAMP LT PUSH2 0xD14 JUMPI PUSH1 0x6 SWAP4 POP POP POP POP PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x5 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD2C DUP3 PUSH2 0xA99 JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0xD3C JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xD5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3CF0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C90 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH9 0xFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR SWAP1 SSTORE PUSH1 0x0 JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0xEBC JUMPI PUSH1 0x0 SLOAD PUSH1 0x4 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x591FCDFE SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0xDE1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0xE09 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x6 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xE23 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP7 PUSH1 0x7 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0xE3C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE7E SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3A4E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEAC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0xDAF SWAP1 POP JUMP JUMPDEST POP PUSH32 0x789CF55BE980739DAD1D0699B93B58E806B51C9D96619BFA8FE0A28ABAA7B30C DUP4 PUSH1 0x40 MLOAD PUSH2 0xEEC SWAP2 SWAP1 PUSH2 0x3B13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xF16 SWAP1 PUSH2 0x3924 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x15 DUP3 MSTORE PUSH21 0x536F7672796E20476F7665726E6F7220416C706861 PUSH1 0x58 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xDDF6FBF241D6C602C276B8332AECAC376FF7E0EF2276D109C25930E6911CA2BD PUSH2 0xF75 PUSH2 0x22BF JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF89 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3B21 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xFAF SWAP1 PUSH2 0x392F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0xFC8 SWAP2 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x20 ADD PUSH2 0x3B56 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFF5 SWAP3 SWAP2 SWAP1 PUSH2 0x38F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x1032 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3B7E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1054 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH2 0x1069 DUP2 PUSH2 0x22C3 JUMP JUMPDEST PUSH2 0x1085 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3CD0 JUMP JUMPDEST PUSH2 0x1090 DUP2 DUP11 DUP11 PUSH2 0x1F11 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x10D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3D20 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1115 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C50 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x3A66F901 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x113F SWAP1 DUP8 SWAP1 PUSH1 0x20 ADD PUSH2 0x393A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x116E SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3970 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x119C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x6F9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x536F7672796E20476F7665726E6F7220416C706861 PUSH1 0x58 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2522D7BA PUSH2 0x124C PUSH1 0x1 NUMBER SUB PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x429A PUSH1 0x37 SWAP2 CODECOPY PUSH2 0x217C JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x126A SWAP3 SWAP2 SWAP1 PUSH2 0x3EB4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1296 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x12BA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2D0E JUMP JUMPDEST SWAP1 POP PUSH1 0x64 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND PUSH2 0x7FE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x12F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3BE0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE18B681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xE18B681 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1338 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x134C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1372 PUSH2 0x1200 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x836EEBEE SWAP1 CALLER SWAP1 PUSH2 0x13A1 SWAP1 NUMBER SWAP1 PUSH2 0x22FC JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3948 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13EC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1410 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2D0E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x1436 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3CC0 JUMP JUMPDEST DUP6 MLOAD DUP8 MLOAD EQ DUP1 ISZERO PUSH2 0x1448 JUMPI POP DUP5 MLOAD DUP8 MLOAD EQ JUMPDEST DUP1 ISZERO PUSH2 0x1455 JUMPI POP DUP4 MLOAD DUP8 MLOAD EQ JUMPDEST PUSH2 0x1471 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C80 JUMP JUMPDEST DUP7 MLOAD PUSH2 0x148F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3CB0 JUMP JUMPDEST PUSH2 0x1497 PUSH2 0x10E6 JUMP JUMPDEST DUP8 MLOAD GT ISZERO PUSH2 0x14B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C60 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1534 JUMPI PUSH1 0x0 PUSH2 0x14D8 DUP3 PUSH2 0xA99 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x14E8 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1506 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3CE0 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1514 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1532 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C40 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x1542 NUMBER PUSH2 0xCFD PUSH2 0xA94 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1552 DUP3 PUSH2 0xCFD PUSH2 0x5D8 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE SWAP1 POP PUSH2 0x1565 PUSH2 0x24AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x200 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x159B DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4267 PUSH1 0x33 SWAP2 CODECOPY PUSH2 0x217C JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15C8 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4113 PUSH1 0x31 SWAP2 CODECOPY PUSH2 0x217C JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x162B PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4077 PUSH1 0x36 SWAP2 CODECOPY PUSH2 0x21AC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1671 PUSH1 0x4 PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4200 PUSH1 0x42 SWAP2 CODECOPY PUSH2 0x21AC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16B1 TIMESTAMP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x42D1 PUSH1 0x2A SWAP2 CODECOPY PUSH2 0x2324 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE POP SWAP1 POP DUP1 PUSH1 0x5 PUSH1 0x0 DUP4 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x4 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x120 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x140 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x9 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x160 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0xA PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x180 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1904 SWAP3 SWAP2 SWAP1 PUSH2 0x2530 JUMP JUMPDEST POP PUSH2 0x1A0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x1921 SWAP2 PUSH1 0x5 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2595 JUMP JUMPDEST POP PUSH2 0x1C0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x193E SWAP2 PUSH1 0x6 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x25DC JUMP JUMPDEST POP PUSH2 0x1E0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x195B SWAP2 PUSH1 0x7 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2635 JUMP JUMPDEST POP SWAP1 POP POP DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x6 PUSH1 0x0 DUP4 PUSH2 0x160 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x7D84A6263AE0D98D3329BD7B46BB4E8D6F98CD35A7ADB45C274C8B7FD5EBD5E0 DUP2 PUSH1 0x0 ADD MLOAD CALLER DUP14 DUP14 DUP14 DUP14 DUP10 DUP10 DUP16 PUSH1 0x40 MLOAD PUSH2 0x19D5 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3D3E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 MLOAD SWAP5 POP POP POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH2 0x19F9 DUP3 PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1A04 JUMPI INVALID JUMPDEST EQ PUSH2 0x1A21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3BF0 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SLOAD DUP3 MLOAD PUSH4 0xD48571F PUSH1 0xE3 SHL DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP5 SWAP4 PUSH2 0x1A7A SWAP4 TIMESTAMP SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH4 0x6A42B8F8 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x4 DUP4 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1C22 JUMPI PUSH2 0x1C1A DUP4 PUSH1 0x4 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1A9D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0x1AC5 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x6 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1ADF JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1B6D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1B42 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1B6D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B50 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH1 0x7 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1B81 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1C0F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1BE4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1C0F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1BF2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH2 0x234B JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1A7F JUMP JUMPDEST POP PUSH2 0x1C45 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x41A7 PUSH1 0x22 SWAP2 CODECOPY PUSH2 0x2324 JUMP JUMPDEST DUP3 PUSH1 0x2 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH32 0x9A2E42FD6722813D69113E7D0079D3D940171428DF7373DF9C7F7617CFDA2892 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0xEEC SWAP3 SWAP2 SWAP1 PUSH2 0x3DE6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x60C SWAP1 PUSH2 0x392F JUMP JUMPDEST PUSH2 0x1CB2 PUSH2 0x268E JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE PUSH1 0x8 ADD DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x1D3A DUP3 PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1D45 JUMPI INVALID JUMPDEST EQ PUSH2 0x1D62 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C00 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH10 0xFF000000000000000000 NOT AND PUSH1 0x1 PUSH1 0x48 SHL OR SWAP1 SSTORE SWAP1 JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1ED5 JUMPI PUSH1 0x0 SLOAD PUSH1 0x5 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x825F38F SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x1DBF JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP5 PUSH1 0x4 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1DD9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP7 SWAP1 DUP2 LT PUSH2 0x1E01 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP7 PUSH1 0x6 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1E1B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x7 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1E34 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP9 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E76 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3A4E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1ECC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BF4 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1D8D JUMP JUMPDEST POP PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F DUP3 PUSH1 0x40 MLOAD PUSH2 0x1F05 SWAP2 SWAP1 PUSH2 0x3B13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1F1C DUP4 PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1F27 JUMPI INVALID JUMPDEST EQ PUSH2 0x1F44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3D00 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE PUSH1 0x8 DUP2 ADD SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1F8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C30 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD SWAP1 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x41B775F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 PUSH4 0x836EEBEE SWAP3 PUSH2 0x1FD9 SWAP3 DUP12 SWAP3 PUSH4 0xFFFFFFFF AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x3A9E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2005 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2029 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2D0E JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x2098 JUMPI PUSH2 0x206B DUP4 PUSH1 0x1 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x40EC PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2215 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x20FB JUMP JUMPDEST PUSH2 0x20D2 DUP4 PUSH1 0x1 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x40EC PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2215 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0xFF NOT SWAP1 SWAP2 AND OR PUSH2 0xFF00 NOT AND PUSH2 0x100 DUP6 ISZERO ISZERO MUL OR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND MUL OR DUP3 SSTORE PUSH1 0x40 MLOAD PUSH32 0x877856338E13F63D0C36822FF0EF736B80934CD90574A3A5BC9262C39D217C46 SWAP1 PUSH2 0x216C SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP7 SWAP1 PUSH2 0x39BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH5 0x100000000 DUP5 LT PUSH2 0x21A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x3BCF JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x21C4 JUMPI POP PUSH1 0x0 PUSH2 0x220E JUMP JUMPDEST DUP4 DUP4 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP6 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP4 AND DUP2 PUSH2 0x21E0 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND EQ DUP4 SWAP1 PUSH2 0x220A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x3BCF JUMP JUMPDEST POP SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x220A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x3BCF JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x2272 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x3BCF JUMP JUMPDEST POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x2290 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x220E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3C70 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x1D13 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x231E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3D10 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x40 SHL DUP5 LT PUSH2 0x21A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x3BCF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2B06537 SWAP1 PUSH2 0x2379 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x20 ADD PUSH2 0x39F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23AB SWAP2 SWAP1 PUSH2 0x3B13 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x23FB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BB8 JUMP JUMPDEST ISZERO PUSH2 0x2418 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x641 SWAP1 PUSH2 0x3CA0 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3A66F901 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x3A66F901 SWAP1 PUSH2 0x2450 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x39F4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x246A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x247E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x24A2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BD6 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x200 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x160 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0x180 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1A0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1C0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1E0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x2585 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2585 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2550 JUMP JUMPDEST POP PUSH2 0x2591 SWAP3 SWAP2 POP PUSH2 0x26AE JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x25D0 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x25D0 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25B5 JUMP JUMPDEST POP PUSH2 0x2591 SWAP3 SWAP2 POP PUSH2 0x26D2 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x2629 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2629 JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x2619 SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x26EC JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25FC JUMP JUMPDEST POP PUSH2 0x2591 SWAP3 SWAP2 POP PUSH2 0x2759 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x2682 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2682 JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x2672 SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x26EC JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2655 JUMP JUMPDEST POP PUSH2 0x2591 SWAP3 SWAP2 POP PUSH2 0x277C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x5DC SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2591 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x26B4 JUMP JUMPDEST PUSH2 0x5DC SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2591 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x26D8 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x272D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x25D0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x25D0 JUMPI SWAP2 DUP3 ADD DUP3 DUP2 GT ISZERO PUSH2 0x25D0 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25B5 JUMP JUMPDEST PUSH2 0x5DC SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2591 JUMPI PUSH1 0x0 PUSH2 0x2773 DUP3 DUP3 PUSH2 0x279F JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x275F JUMP JUMPDEST PUSH2 0x5DC SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2591 JUMPI PUSH1 0x0 PUSH2 0x2796 DUP3 DUP3 PUSH2 0x279F JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2782 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x27C5 JUMPI POP PUSH2 0x27E3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x27E3 SWAP2 SWAP1 PUSH2 0x26D2 JUMP JUMPDEST POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D13 DUP2 PUSH2 0x403E JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2815 PUSH2 0x2810 DUP3 PUSH2 0x3EF6 JUMP JUMPDEST PUSH2 0x3ED0 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x283A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2866 JUMPI DUP2 PUSH2 0x2850 DUP9 DUP3 PUSH2 0x27E6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x283D JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2881 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x288F PUSH2 0x2810 DUP3 PUSH2 0x3EF6 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2866 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x28B7 DUP9 DUP3 PUSH2 0x29C6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x28A1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x28EC PUSH2 0x2810 DUP3 PUSH2 0x3EF6 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2866 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x2914 DUP9 DUP3 PUSH2 0x29C6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x28FE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x293B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2949 PUSH2 0x2810 DUP3 PUSH2 0x3EF6 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x296E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2866 JUMPI DUP2 PUSH2 0x2984 DUP9 DUP3 PUSH2 0x29B0 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2971 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D13 DUP2 PUSH2 0x4052 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1D13 DUP2 PUSH2 0x4052 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D13 DUP2 PUSH2 0x405B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1D13 DUP2 PUSH2 0x405B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29E5 PUSH2 0x2810 DUP3 PUSH2 0x3F16 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x2A01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A0C DUP4 DUP3 DUP5 PUSH2 0x3FF2 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2A26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2A34 PUSH2 0x2810 DUP3 PUSH2 0x3F16 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x2A50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A0C DUP4 DUP3 DUP5 PUSH2 0x3FFE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D13 DUP2 PUSH2 0x4064 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1D13 DUP2 PUSH2 0x406D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A8F DUP5 DUP5 PUSH2 0x27E6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2AAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2AB6 DUP6 DUP6 PUSH2 0x27E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2AC7 DUP6 DUP3 DUP7 ADD PUSH2 0x29B0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2AE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B0B DUP9 DUP3 DUP10 ADD PUSH2 0x27F1 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B33 DUP9 DUP3 DUP10 ADD PUSH2 0x292A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B5B DUP9 DUP3 DUP10 ADD PUSH2 0x28CD JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B83 DUP9 DUP3 DUP10 ADD PUSH2 0x2870 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BAB DUP9 DUP3 DUP10 ADD PUSH2 0x29C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A8F DUP5 DUP5 PUSH2 0x29A5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A8F DUP5 DUP5 PUSH2 0x29BB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A8F DUP5 DUP3 DUP6 ADD PUSH2 0x2A15 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A8F DUP5 DUP5 PUSH2 0x29B0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2C65 DUP6 DUP6 PUSH2 0x29B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2AC7 DUP6 DUP3 DUP7 ADD PUSH2 0x27E6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2C95 DUP6 DUP6 PUSH2 0x29B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2AC7 DUP6 DUP3 DUP7 ADD PUSH2 0x299A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2CBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2CCA DUP9 DUP9 PUSH2 0x29B0 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x2CDB DUP9 DUP3 DUP10 ADD PUSH2 0x299A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x2CEC DUP9 DUP3 DUP10 ADD PUSH2 0x2A5B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x2CFD DUP9 DUP3 DUP10 ADD PUSH2 0x29B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x2BAB DUP9 DUP3 DUP10 ADD PUSH2 0x29B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A8F DUP5 DUP5 PUSH2 0x2A66 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D38 DUP4 DUP4 PUSH2 0x2D67 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220E DUP4 DUP4 PUSH2 0x2F09 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D38 DUP4 DUP4 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FA9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3F5C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D7B DUP3 PUSH2 0x3F4F JUMP JUMPDEST PUSH2 0x2D85 DUP2 DUP6 PUSH2 0x3F53 JUMP JUMPDEST SWAP4 POP PUSH2 0x2D90 DUP4 PUSH2 0x3F3D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DBE JUMPI DUP2 MLOAD PUSH2 0x2DA8 DUP9 DUP3 PUSH2 0x2D2C JUMP JUMPDEST SWAP8 POP PUSH2 0x2DB3 DUP4 PUSH2 0x3F3D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2D94 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DD4 DUP3 PUSH2 0x3F4F JUMP JUMPDEST PUSH2 0x2DDE DUP2 DUP6 PUSH2 0x3F53 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2DF0 DUP6 PUSH2 0x3F3D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2E2A JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x2E0D DUP6 DUP3 PUSH2 0x2D40 JUMP JUMPDEST SWAP5 POP PUSH2 0x2E18 DUP4 PUSH2 0x3F3D JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2DF4 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E42 DUP3 PUSH2 0x3F4F JUMP JUMPDEST PUSH2 0x2E4C DUP2 DUP6 PUSH2 0x3F53 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2E5E DUP6 PUSH2 0x3F3D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2E2A JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x2E7B DUP6 DUP3 PUSH2 0x2D40 JUMP JUMPDEST SWAP5 POP PUSH2 0x2E86 DUP4 PUSH2 0x3F3D JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2E62 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EA3 DUP3 PUSH2 0x3F4F JUMP JUMPDEST PUSH2 0x2EAD DUP2 DUP6 PUSH2 0x3F53 JUMP JUMPDEST SWAP4 POP PUSH2 0x2EB8 DUP4 PUSH2 0x3F3D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DBE JUMPI DUP2 MLOAD PUSH2 0x2ED0 DUP9 DUP3 PUSH2 0x2D4C JUMP JUMPDEST SWAP8 POP PUSH2 0x2EDB DUP4 PUSH2 0x3F3D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2EBC JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3F67 JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x2D61 PUSH2 0x2F04 DUP3 PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x5DC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F14 DUP3 PUSH2 0x3F4F JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP6 PUSH2 0x3F53 JUMP JUMPDEST SWAP4 POP PUSH2 0x2F2E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3FFE JUMP JUMPDEST PUSH2 0x2F37 DUP2 PUSH2 0x402A JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 DUP2 AND PUSH1 0x0 DUP2 EQ PUSH2 0x2F5E JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2F84 JUMPI PUSH2 0x2FC3 JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP4 DIV AND PUSH2 0x2F6F DUP2 DUP8 PUSH2 0x3F53 JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP2 MSTORE SWAP6 POP POP PUSH1 0x20 DUP6 ADD SWAP3 POP PUSH2 0x2FC3 JUMP JUMPDEST PUSH1 0x2 DUP3 DIV PUSH2 0x2F92 DUP2 DUP8 PUSH2 0x3F53 JUMP JUMPDEST SWAP6 POP PUSH2 0x2F9D DUP6 PUSH2 0x3F43 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2FBC JUMPI DUP2 SLOAD DUP9 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x2FA0 JUMP JUMPDEST DUP8 ADD SWAP5 POP POP POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FB0 JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FBB JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FC6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FF3 PUSH1 0x39 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F61636365707441646D696E3A207365 DUP2 MSTORE PUSH32 0x6E646572206D75737420626520676F7620677561726469616E00000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3052 PUSH1 0x44 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A71756575653A2070726F706F73616C2063 DUP2 MSTORE PUSH32 0x616E206F6E6C7920626520717565756564206966206974206973207375636365 PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x19591959 PUSH1 0xE2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30BE PUSH1 0x45 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A657865637574653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2063616E206F6E6C792062652065786563757465642069662069742069732071 PUSH1 0x20 DUP3 ADD MSTORE PUSH5 0x1D595D5959 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312B PUSH1 0x2 DUP4 PUSH2 0xD1C JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3149 PUSH1 0x4C DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F6578656375746553657454696D656C DUP2 MSTORE PUSH32 0x6F636B50656E64696E6741646D696E3A2073656E646572206D75737420626520 PUSH1 0x20 DUP3 ADD MSTORE PUSH12 0x33B7BB1033BAB0B93234B0B7 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31BD PUSH1 0x18 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x73657450656E64696E6741646D696E2861646472657373290000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31F6 PUSH1 0x29 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A73746174653A20696E76616C6964207072 DUP2 MSTORE PUSH9 0x1BDC1BDCD85B081A59 PUSH1 0xBA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3241 PUSH1 0x2D DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74657220 DUP2 MSTORE PUSH13 0x185B1C9958591E481D9BDD1959 PUSH1 0x9A SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3290 PUSH1 0x59 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C72656164792070656E64696E672070726F706F73616C00000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3315 PUSH1 0x4A DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F717565756553657454696D656C6F63 DUP2 MSTORE PUSH32 0x6B50656E64696E6741646D696E3A2073656E646572206D75737420626520676F PUSH1 0x20 DUP3 ADD MSTORE PUSH10 0x3B1033BAB0B93234B0B7 PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3387 PUSH1 0x28 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A20746F6F206D616E79 DUP2 MSTORE PUSH8 0x20616374696F6E73 PUSH1 0xC0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33D1 PUSH1 0x11 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33FE PUSH1 0x43 DUP4 PUSH2 0xD1C JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3469 PUSH1 0x27 DUP4 PUSH2 0xD1C JUMP JUMPDEST PUSH32 0x42616C6C6F742875696E743235362070726F706F73616C49642C626F6F6C2073 DUP2 MSTORE PUSH7 0x7570706F727429 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x27 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34B2 PUSH1 0x44 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2066756E6374696F6E20696E666F726D6174696F6E206172697479206D69736D PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0xC2E8C6D PUSH1 0xE3 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x351E PUSH1 0x2E DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2073656E646572206973 DUP2 MSTORE PUSH14 0x3713BA10309033BAB0B93234B0B7 PUSH1 0x91 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x356E PUSH1 0x44 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F71756575654F725265766572743A2070 DUP2 MSTORE PUSH32 0x726F706F73616C20616374696F6E20616C726561647920717565756564206174 PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x20657461 PUSH1 0xE0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35DA PUSH1 0x2C DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206D7573742070726F DUP2 MSTORE PUSH12 0x7669646520616374696F6E73 PUSH1 0xA0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3628 PUSH1 0x3F DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F736572 DUP2 MSTORE PUSH32 0x20766F7465732062656C6F772070726F706F73616C207468726573686F6C6400 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3687 PUSH1 0x2F DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63617374566F746542795369673A20696E DUP2 MSTORE PUSH15 0x76616C6964207369676E6174757265 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36D8 PUSH1 0x58 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C7265616479206163746976652070726F706F73616C0000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x375D PUSH1 0x36 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2063616E6E6F74206361 DUP2 MSTORE PUSH22 0x1B98D95B08195E1958DD5D1959081C1C9BDC1BDCD85B PUSH1 0x52 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B5 PUSH1 0x2A DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74696E67 DUP2 MSTORE PUSH10 0x81A5CC818DB1BDCD959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3801 PUSH1 0x15 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3832 PUSH1 0x36 DUP4 PUSH2 0x3F53 JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F61626469636174653A2073656E6465 DUP2 MSTORE PUSH22 0x391036BAB9BA1031329033B7BB1033BAB0B93234B0B7 PUSH1 0x51 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x388E DUP5 DUP3 PUSH2 0x2EE6 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x38A1 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2EE6 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x134C PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FD1 JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3F82 JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FDC JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3F8B JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3F97 JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3FE7 JUMP JUMPDEST PUSH2 0x2D61 DUP2 PUSH2 0x3F9D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38FE DUP3 PUSH2 0x311E JUMP JUMPDEST SWAP2 POP PUSH2 0x390A DUP3 DUP6 PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x391A DUP3 DUP5 PUSH2 0x2EF8 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x33F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x345C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D13 DUP3 DUP5 PUSH2 0x2D67 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3956 DUP3 DUP7 PUSH2 0x2D58 JUMP JUMPDEST PUSH2 0x3963 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x2A8F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2EEF JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x397E DUP3 DUP8 PUSH2 0x2D67 JUMP JUMPDEST PUSH2 0x398B PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2FDD JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x399C DUP2 PUSH2 0x31B0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x39B0 DUP2 DUP6 PUSH2 0x2F09 JUMP JUMPDEST SWAP1 POP PUSH2 0x19E5 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2EEF JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x39CD DUP3 DUP8 PUSH2 0x2D67 JUMP JUMPDEST PUSH2 0x39DA PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x39E7 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2EE6 JUMP JUMPDEST PUSH2 0x19E5 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x38E1 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3A02 DUP3 DUP9 PUSH2 0x2D67 JUMP JUMPDEST PUSH2 0x3A0F PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2EEF JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3A21 DUP2 DUP7 PUSH2 0x2F09 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3A35 DUP2 DUP6 PUSH2 0x2F09 JUMP JUMPDEST SWAP1 POP PUSH2 0x3A44 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2EEF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3A5C DUP3 DUP9 PUSH2 0x2D67 JUMP JUMPDEST PUSH2 0x3A69 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2EEF JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3A7B DUP2 DUP7 PUSH2 0x2F41 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3A8F DUP2 DUP6 PUSH2 0x2F41 JUMP JUMPDEST SWAP1 POP PUSH2 0x3A44 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x38C6 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3AAC DUP3 DUP7 PUSH2 0x2D67 JUMP JUMPDEST PUSH2 0x3AB9 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x38B4 JUMP JUMPDEST PUSH2 0x2A8F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x38C6 JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3AD7 DUP2 DUP8 PUSH2 0x2D70 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3AEB DUP2 DUP7 PUSH2 0x2E98 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3AFF DUP2 DUP6 PUSH2 0x2E37 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3A44 DUP2 DUP5 PUSH2 0x2DC9 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D13 DUP3 DUP5 PUSH2 0x2EEF JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3B2F DUP3 DUP8 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3B3C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3B49 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x19E5 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2D67 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3B64 DUP3 DUP7 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3B71 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x2A8F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2EE6 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3B8C DUP3 DUP8 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3B99 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x38D8 JUMP JUMPDEST PUSH2 0x3BA6 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x19E5 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2EEF JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D13 DUP3 DUP5 PUSH2 0x2FCB JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D13 DUP3 DUP5 PUSH2 0x2FD4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x220E DUP2 DUP5 PUSH2 0x2F09 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x2FE6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3045 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x30B1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x313C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x31E9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3234 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3283 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3308 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x337A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x33C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x34A5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3511 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3561 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x35CD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x361B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x367A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x36CB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3750 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x37A8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x37F4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D13 DUP2 PUSH2 0x3825 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1D13 DUP3 DUP5 PUSH2 0x387D JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x3D4D DUP3 DUP13 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3D5A PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x2D58 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3D6C DUP2 DUP11 PUSH2 0x2D70 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3D80 DUP2 DUP10 PUSH2 0x2E98 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x3D94 DUP2 DUP9 PUSH2 0x2E37 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x3DA8 DUP2 DUP8 PUSH2 0x2DC9 JUMP JUMPDEST SWAP1 POP PUSH2 0x3DB7 PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3DC4 PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x2EEF JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x3DD7 DUP2 DUP5 PUSH2 0x2F09 JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3DF4 DUP3 DUP6 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x220E PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x3E10 DUP3 DUP16 PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x3E1D PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x38BD JUMP JUMPDEST PUSH2 0x3E2A PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x38BD JUMP JUMPDEST PUSH2 0x3E37 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x3E44 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x3E51 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x3E5E PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x3E6B PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x38CF JUMP JUMPDEST PUSH2 0x3E79 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x38CF JUMP JUMPDEST PUSH2 0x3E87 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x2EE6 JUMP JUMPDEST PUSH2 0x3E95 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x2EE6 JUMP JUMPDEST PUSH2 0x3EA3 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x2D67 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3DF4 DUP3 DUP6 PUSH2 0x38BD JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D13 DUP3 DUP5 PUSH2 0x38EA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3EEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x3F0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x3F2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x3F76 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xD1C DUP2 PUSH2 0x4034 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x3F5C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x3F6C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x5DC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x3F82 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x3F8B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D13 DUP3 PUSH2 0x3F9D JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4019 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4001 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x134C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x8 DUP2 LT PUSH2 0x27E3 JUMPI INVALID JUMPDEST PUSH2 0x4047 DUP2 PUSH2 0x3F5C JUMP JUMPDEST DUP2 EQ PUSH2 0x27E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4047 DUP2 PUSH2 0x3F67 JUMP JUMPDEST PUSH2 0x4047 DUP2 PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x4047 DUP2 PUSH2 0x3F97 JUMP JUMPDEST PUSH2 0x4047 DUP2 PUSH2 0x3F9D JUMP INVALID SELFBALANCE PUSH16 0x7665726E6F72416C7068613A3A70726F PUSH17 0x6F73653A206F766572666C6F77206F6E20 PUSH18 0x756F72756D20636F6D7075746174696F6E47 PUSH16 0x7665726E6F72416C7068613A3A207374 PUSH2 0x7465 GASPRICE KECCAK256 PUSH21 0x6F74616C566F746573202A206D616A6F7269747950 PUSH6 0x7263656E7461 PUSH8 0x65203E2075696E74 CODECOPY CALLDATASIZE SELFBALANCE PUSH16 0x7665726E6F72416C7068613A3A5F6361 PUSH20 0x74566F74653A20766F7465206F766572666C6F77 SELFBALANCE PUSH16 0x7665726E6F72416C7068613A3A70726F PUSH17 0x6F73653A20656E6420626C6F636B206E75 PUSH14 0x626572206F766572666C6F77476F PUSH23 0x65726E6F72416C7068613A3A71756F72756D566F746573 GASPRICE KECCAK256 PUSH3 0x6C6F63 PUSH12 0x206E756D626572206F766572 PUSH7 0x6C6F77476F7665 PUSH19 0x6E6F72416C7068613A3A71756F72756D566F74 PUSH6 0x733A6D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77476F7665726E6F7241 PUSH13 0x7068613A3A71756575653A2045 SLOAD COINBASE KECCAK256 PUSH16 0x766572666C6F77476F7665726E6F7241 PUSH13 0x7068613A3A2073746174653A20 PUSH7 0x6F72566F746573 KECCAK256 0x2B KECCAK256 PUSH2 0x6761 PUSH10 0x6E7374566F746573203E KECCAK256 PUSH22 0x696E743936476F7665726E6F72416C7068613A3A7072 PUSH16 0x706F73653A206F766572666C6F77206F PUSH15 0x206D616A6F7269747950657263656E PUSH21 0x61676520636F6D7075746174696F6E476F7665726E PUSH16 0x72416C7068613A3A2073746174653A20 PUSH5 0x6976697369 PUSH16 0x6E206572726F72476F7665726E6F7241 PUSH13 0x7068613A3A70726F706F73653A KECCAK256 PUSH20 0x7461727420626C6F636B206E756D626572206F76 PUSH6 0x72666C6F7747 PUSH16 0x7665726E6F72416C7068613A3A70726F PUSH17 0x6F73616C5468726573686F6C643A20626C PUSH16 0x636B206E756D626572206F766572666C PUSH16 0x77476F7665726E6F72416C7068613A3A PUSH17 0x726F706F73653A20737461727454696D65 KECCAK256 PUSH16 0x766572666C6F77A365627A7A72315820 0x48 RETURNDATACOPY PUSH28 0x1B35A00DF1005C592EF3BD642D224482EE7CCA25520703FD49906298 ORIGIN PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "1146:20950:51:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4434:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4434:45:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1702:73;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1702:73:51;;;:::i;:::-;;;;;;;;14699:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14699:116:51;;;;;;;;:::i;:::-;;4535:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4535:52:51;;;;;;;;:::i;4652:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4652:122:51;;;:::i;19085:321::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19085:321:51;;;;;;;;:::i;6649:386::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6649:386:51;;;:::i;:::-;;;;;;;;13841:298;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13841:298:51;;;;;;;;:::i;:::-;;;;;;;;;;;1557:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1557:69:51;;;:::i;19647:1277::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19647:1277:51;;;;;;;;:::i;:::-;;;;;;;;12943:670;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12943:670:51;;;;;;;;:::i;2042:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2042:23:51;;;:::i;:::-;;;;;;;;16072:1072;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16072:1072:51;;;;;;;;:::i;1964:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1964:23:51;;;:::i;:::-;;;;;;;;18525:151;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18525:151:51;;;:::i;1378:80::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1378:80:51;;;:::i;18723:315::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18723:315:51;;;;;;;;:::i;1242:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1242:53:51;;;:::i;:::-;;;;;;;;2216:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2216:35:51;;;:::i;6202:314::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6202:314:51;;;:::i;18320:158::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18320:158:51;;;:::i;1878:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1878:25:51;;;:::i;2113:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2113:28:51;;;:::i;7460:2963::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7460:2963:51;;;;;;;;:::i;10578:570::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10578:570:51;;;;;;;;:::i;4856:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4856:94:51;;;:::i;14380:144::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14380:144:51;;;;;;;;:::i;:::-;;;;;;;;2288:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2288:37:51;;;:::i;12218:549::-;;;;;;;;;:::i;4434:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;4434:45:51;;;;;;-1:-1:-1;;;4434:45:51;;;;;;;;;;-1:-1:-1;;;4434:45:51;;;;;;-1:-1:-1;;;;;;;;4434:45:51;;;;;;;;;;;;;;;;;-1:-1:-1;;;4434:45:51;;;;-1:-1:-1;;;;;;;;4434:45:51;;;;;:::o;1702:73::-;1767:4;1702:73;;:::o;14699:116::-;14769:42;14779:10;14791;14803:7;14769:9;:42::i;:::-;14699:116;;:::o;4535:52::-;;;;;;;;;;;;;:::o;4652:122::-;4694:80;;;;;;;;;;;;;;4652:122;:::o;19085:321::-;19198:8;;-1:-1:-1;;;;;19198:8:51;19184:10;:22;19176:111;;;;-1:-1:-1;;;19176:111:51;;;;;;;;;;;;;;;;;19291:8;;;19369:27;;-1:-1:-1;;;;;19291:8:51;;;;:27;;:8;;;19369:27;;19380:15;;19369:27;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19369:27:51;;;19398:3;19291:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19291:111:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19291:111:51;;;;;;39:16:-1;36:1;17:17;2:54;101:4;19291:111:51;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;19291:111:51;;;;;;;;;;19085:321;;:::o;6649:386::-;6693:6;6705:23;6734:7;;;;;;;;;-1:-1:-1;;;;;6734:7:51;-1:-1:-1;;;;;6734:32:51;;6772:77;6794:1;6779:12;:16;6772:77;;;;;;;;;;;;;;;;;:6;:77::i;:::-;6855:15;6734:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6734:141:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6734:141:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6734:141:51;;;;;;;;;6931:21;;6925:100;;;;;;;;;;;;;6705:170;;-1:-1:-1;7028:3:51;;6925:100;;-1:-1:-1;;;;;6931:21:51;;6705:170;;6925:100;;;;;:5;:100::i;:::-;-1:-1:-1;;;;;6925:106:51;;;;;;;6918:113;;;6649:386;:::o;13841:298::-;13912:24;13941:23;13969:26;14000:24;14034:18;14055:9;:21;14065:10;14055:21;;;;;;;;;;;14034:42;;14088:1;:9;;14099:1;:8;;14109:1;:12;;14123:1;:11;;14080:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14080:55:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14080:55:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14080:55:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13841:298;;;;;:::o;1557:69::-;1621:1;1557:69;:::o;19647:1277::-;19703:13;19747:10;19730:13;;:27;;:45;;;;;19774:1;19761:10;:14;19730:45;19722:99;;;;-1:-1:-1;;;19722:99:51;;;;;;;;;19825:25;19853:21;;;:9;:21;;;;;19883:17;;;;-1:-1:-1;;;19883:17:51;;;;19879:62;;;19914:22;19907:29;;;;;19879:62;19965:19;;;;;;19949:12;:35;19945:79;;19998:21;19991:28;;;;;19945:79;20048:17;;;;;;;;;20032:12;:33;20028:76;;20079:20;20072:27;;;;;20028:76;20134:17;;;;20128:106;;;;;;;;;;;;;20108:17;;20128:106;;-1:-1:-1;;;;;;;;20134:17:51;;;;;-1:-1:-1;;;20153:21:51;;;;;20128:106;;;;;:5;:106::i;:::-;20108:126;;20238:35;20276:63;20282:10;20294:3;20276:63;;;;;;;;;;;;;;;;;:5;:63::i;:::-;20238:101;;20374:140;20384:28;20417:23;;;;;;;;;-1:-1:-1;;;;;20417:23:51;20374:140;;;;;;;;;;;;;;;;;:5;:140::i;:::-;20522:17;;;;20343:171;;-1:-1:-1;;;;;;20522:49:51;;;-1:-1:-1;;;20522:17:51;;;;:49;;;:81;;-1:-1:-1;20588:15:51;;;;-1:-1:-1;;;;;20588:15:51;;;20575:28;;;;20522:81;20518:126;;;20617:22;20610:29;;;;;;;20518:126;20652:12;;;;-1:-1:-1;;;20652:12:51;;-1:-1:-1;;;;;20652:12:51;20648:63;;20683:23;20676:30;;;;;;;20648:63;20719:17;;;;-1:-1:-1;;;20719:17:51;;;;20715:62;;;20750:22;20743:29;;;;;;;20715:62;20811:12;;;;20825:8;;:23;;;-1:-1:-1;;;20825:23:51;;;;20804:45;;-1:-1:-1;;;20811:12:51;;-1:-1:-1;;;;;20811:12:51;;-1:-1:-1;;;;;20825:8:51;;:21;;:23;;;;;;;;;;;;;;:8;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;20825:23:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20825:23:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;20825:23:51;;;;;;;;;20804:6;:45::i;:::-;20785:15;:64;20781:108;;20863:21;20856:28;;;;;;;20781:108;20900:20;20893:27;;;;;19647:1277;;;;:::o;12943:670::-;12990:19;13012:17;13018:10;13012:5;:17::i;:::-;12990:39;-1:-1:-1;13050:22:51;13041:5;:31;;;;;;;;;;13033:98;;;;-1:-1:-1;;;13033:98:51;;;;;;;;;13136:25;13164:21;;;:9;:21;;;;;13262:8;;-1:-1:-1;;;;;13262:8:51;13248:10;:22;13240:81;;;;-1:-1:-1;;;13240:81:51;;;;;;;;;13326:17;;;:24;;-1:-1:-1;;13326:24:51;-1:-1:-1;;;13326:24:51;;;;13355:217;13379:16;;;:23;13375:27;;13355:217;;;13414:8;;13446:16;;;:19;;-1:-1:-1;;;;;13414:8:51;;;;:26;;13446:16;13463:1;;13446:19;;;;;;;;;;;;;;;;13471:15;;;:18;;-1:-1:-1;;;;;13446:19:51;;;;13487:1;;13471:18;;;;;;;;;;;;;;13495:8;:19;;13515:1;13495:22;;;;;;;;;;;;;;;13523:8;:18;;13542:1;13523:21;;;;;;;;;;;;;;;13550:8;:12;;;;;;;;;;-1:-1:-1;;;;;13550:12:51;13414:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13414:153:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13404:3:51;;;;;-1:-1:-1;13355:217:51;;-1:-1:-1;13355:217:51;;;13581:28;13598:10;13581:28;;;;;;;;;;;;;;;12943:670;;;:::o;2042:23::-;;;-1:-1:-1;;;;;2042:23:51;;:::o;16072:1072::-;16488:23;4694:80;;;;;;;;;;;;;;;;16568:4;;;;;;;;;-1:-1:-1;;;16568:4:51;;;;;;;;16552:22;16576:12;:10;:12::i;:::-;16598:4;16524:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16524:80:51;;;16514:91;;;;;;16488:117;;16696:18;4898:52;;;;;;;;;;;;;;;16727:48;;16755:10;;16767:7;;16727:48;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16727:48:51;;;16717:59;;;;;;16696:80;;16781:14;16837:15;16854:10;16808:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16808:57:51;;;16798:68;;;;;;16781:85;;16870:17;16890:26;16900:6;16908:1;16911;16914;16890:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16890:26:51;;;;;;;;16870:46;;16994:42;17026:9;16994:31;:42::i;:::-;16986:102;;;;-1:-1:-1;;;16986:102:51;;;;;;;;;17099:41;17109:9;17120:10;17132:7;17099:9;:41::i;:::-;17092:48;;;;16072:1072;;;;;:::o;1964:23::-;;;-1:-1:-1;;;;;1964:23:51;;:::o;18525:151::-;18580:8;;-1:-1:-1;;;;;18580:8:51;18566:10;:22;18558:89;;;;-1:-1:-1;;;18558:89:51;;;;;;;;;18651:8;:21;;-1:-1:-1;;;;;;18651:21:51;;;18525:151::o;1378:80::-;1452:2;1378:80;:::o;18723:315::-;18834:8;;-1:-1:-1;;;;;18834:8:51;18820:10;:22;18812:109;;;;-1:-1:-1;;;18812:109:51;;;;;;;;;18925:8;;;19001:27;;-1:-1:-1;;;;;18925:8:51;;;;:25;;:8;;;19001:27;;19012:15;;19001:27;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19001:27:51;;;19030:3;18925:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18925:109:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18925:109:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18925:109:51;;;;;;;;1242:53;;;;;;;;;;;;;;-1:-1:-1;;;1242:53:51;;;;:::o;2216:35::-;;;-1:-1:-1;;;;;2216:35:51;;:::o;6202:314::-;6252:6;6264:23;6293:7;;;;;;;;;-1:-1:-1;;;;;6293:7:51;-1:-1:-1;;;;;6293:32:51;;6331:83;6353:1;6338:12;:16;6331:83;;;;;;;;;;;;;;;;;:6;:83::i;:::-;6420:15;6293:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6293:147:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6293:147:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6293:147:51;;;;;;;;;6264:176;-1:-1:-1;6509:3:51;-1:-1:-1;;;;;6490:22:51;;;;18320:158;18378:8;;-1:-1:-1;;;;;18378:8:51;18364:10;:22;18356:92;;;;-1:-1:-1;;;18356:92:51;;;;;;;;;18452:8;;;:22;;;-1:-1:-1;;;18452:22:51;;;;-1:-1:-1;;;;;18452:8:51;;;;:20;;:22;;;;;;;;;;:8;;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;18452:22:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18452:22:51;;;;18320:158::o;1878:25::-;;;-1:-1:-1;;;;;1878:25:51;;:::o;2113:28::-;;;;:::o;7460:2963::-;7638:7;7886:16;7905:19;:17;:19::i;:::-;7940:7;;;7886:38;;-1:-1:-1;;;;;;7940:87:51;;;-1:-1:-1;;;;;7940:7:51;;:21;;7962:10;;7974:23;;7981:12;;7974:6;:23::i;:::-;7999:15;7940:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7940:75:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7940:75:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7940:75:51;;;;;;;;;-1:-1:-1;;;;;7940:87:51;;7928:173;;;;-1:-1:-1;;;7928:173:51;;;;;;;;;8135:6;:13;8117:7;:14;:31;:70;;;;;8170:10;:17;8152:7;:14;:35;8117:70;:108;;;;;8209:9;:16;8191:7;:14;:34;8117:108;8105:199;;;;-1:-1:-1;;;8105:199:51;;;;;;;;;8316:14;;8308:76;;;;-1:-1:-1;;;8308:76:51;;;;;;;;;8414:23;:21;:23::i;:::-;8396:7;:14;:41;;8388:94;;;;-1:-1:-1;;;8388:94:51;;;;;;;;;8532:10;8487:24;8514:29;;;:17;:29;;;;;;8551:21;;8547:449;;8579:42;8624:23;8630:16;8624:5;:23::i;:::-;8579:68;-1:-1:-1;8697:20:51;8665:28;:52;;;;;;;;;;8652:166;;;;-1:-1:-1;;;8652:166:51;;;;;;;;;8868:21;8836:28;:53;;;;;;;;;;8823:168;;;;-1:-1:-1;;;8823:168:51;;;;;;;;;8547:449;;9000:18;9021:35;9028:12;9042:13;:11;:13::i;9021:35::-;9000:56;;9060:16;9079:34;9086:10;9098:14;:12;:14::i;9079:34::-;9118:13;:15;;;;;;9060:53;-1:-1:-1;9346:27:51;;:::i;:::-;9379:783;;;;;;;;9398:13;;9379:783;;;;9429:73;9436:10;9429:73;;;;;;;;;;;;;;;;;:6;:73::i;:::-;9379:783;;;;;;9518:69;9525:8;9518:69;;;;;;;;;;;;;;;;;:6;:69::i;:::-;9379:783;;;;;;9603:1;-1:-1:-1;;;;;9379:783:51;;;;;9624:1;-1:-1:-1;;;;;9379:783:51;;;;;9639:97;9645:21;;;;;;;;;-1:-1:-1;;;;;9645:21:51;9668:9;9639:97;;;;;;;;;;;;;;;;;:5;:97::i;:::-;-1:-1:-1;;;;;9379:783:51;;;;;9762:132;9774:23;;;;;;;;;-1:-1:-1;;;;;9774:23:51;9804:9;9762:132;;;;;;;;;;;;;;;;;:5;:132::i;:::-;-1:-1:-1;;;;;9379:783:51;;;;;9905:1;-1:-1:-1;;;;;9379:783:51;;;;;9923:69;9930:15;9923:69;;;;;;;;;;;;;;;;;:6;:69::i;:::-;-1:-1:-1;;;;;9379:783:51;;;;;10008:5;9379:783;;;;;;10029:5;9379:783;;;;;;10050:10;-1:-1:-1;;;;;9379:783:51;;;;;10075:7;9379:783;;;;10096:6;9379:783;;;;10120:10;9379:783;;;;10147:9;9379:783;;;9346:816;;10195:11;10167:9;:25;10177:11;:14;;;10167:25;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10167:39:51;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10167:39:51;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10167:39:51;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;10252:11;:14;;;10210:17;:39;10228:11;:20;;;-1:-1:-1;;;;;10210:39:51;-1:-1:-1;;;;;10210:39:51;;;;;;;;;;;;:56;;;;10276:118;10292:11;:14;;;10308:10;10320:7;10329:6;10337:10;10349:9;10360:10;10372:8;10382:11;10276:118;;;;;;;;;;;;;;;;;;;;;;;10405:14;;-1:-1:-1;;;;;7460:2963:51;;;;;;;;:::o;10578:570::-;10653:23;10632:17;10638:10;10632:5;:17::i;:::-;:44;;;;;;;;;10624:125;;;;-1:-1:-1;;;10624:125:51;;;;;;;;;10753:25;10781:21;;;:9;:21;;;;;;;;10844:8;;:16;;-1:-1:-1;;;10844:16:51;;;;10781:21;;10753:25;10820:41;;10827:15;;-1:-1:-1;;;;;10844:8:51;;;;:14;;:16;;;;;10781:21;;10844:16;;;;;;:8;:16;;;5:2:-1;;;;30:1;27;20:12;10820:41:51;10806:55;-1:-1:-1;10871:9:51;10866:171;10890:16;;;:23;10886:27;;10866:171;;;10925:107;10940:8;:16;;10957:1;10940:19;;;;;;;;;;;;;;;;;;10961:15;;;:18;;-1:-1:-1;;;;;10940:19:51;;;;10977:1;;10961:18;;;;;;;;;;;;;;10981:8;:19;;11001:1;10981:22;;;;;;;;;;;;;;;;;;10925:107;;;;;;;-1:-1:-1;;10925:107:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10981:22;10925:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11005:8;:18;;11024:1;11005:21;;;;;;;;;;;;;;;;;;10925:107;;;;;;;-1:-1:-1;;10925:107:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11005:21;10925:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11028:3;10925:14;:107::i;:::-;10915:3;;10866:171;;;;11055:49;11062:3;11055:49;;;;;;;;;;;;;;;;;:6;:49::i;:::-;11040:8;:12;;;:64;;;;;-1:-1:-1;;;;;11040:64:51;;;;;-1:-1:-1;;;;;11040:64:51;;;;;;11113:31;11128:10;11140:3;11113:31;;;;;;;;4856:94;4898:52;;;;;;14380:144;14456:14;;:::i;:::-;-1:-1:-1;14483:21:51;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;14483:37:51;;;;:30;;:37;;;;;;14476:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14476:44:51;;;;;;;;14380:144;;;;;:::o;2288:37::-;;;-1:-1:-1;;;2288:37:51;;-1:-1:-1;;;;;2288:37:51;;:::o;12218:549::-;12303:20;12282:17;12288:10;12282:5;:17::i;:::-;:41;;;;;;;;;12274:123;;;;-1:-1:-1;;;12274:123:51;;;;;;;;;12401:25;12429:21;;;:9;:21;;;;;12454:17;;;:24;;-1:-1:-1;;12454:24:51;-1:-1:-1;;;12454:24:51;;;12429:21;12483:244;12507:16;;;:23;12503:27;;12483:244;;;12542:8;;12576:15;;;:18;;-1:-1:-1;;;;;12542:8:51;;;;:27;;12576:15;12592:1;;12576:18;;;;;;;;;;;;;;12601:8;:16;;12618:1;12601:19;;;;;;;;;;;;;;;;;;12626:15;;;:18;;-1:-1:-1;;;;;12601:19:51;;;;12642:1;;12626:18;;;;;;;;;;;;;;12650:8;:19;;12670:1;12650:22;;;;;;;;;;;;;;;12678:8;:18;;12697:1;12678:21;;;;;;;;;;;;;;;12705:8;:12;;;;;;;;;;-1:-1:-1;;;;;12705:12:51;12542:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12542:180:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12542:180:51;;;;;;;39:16:-1;36:1;17:17;2:54;101:4;12542:180:51;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;12542:180:51;;;;;;;;;-1:-1:-1;12532:3:51;;12483:244;;;;12735:28;12752:10;12735:28;;;;;;;;;;;;;;;12218:549;;:::o;17427:846::-;17546:20;17525:17;17531:10;17525:5;:17::i;:::-;:41;;;;;;;;;17517:96;;;;-1:-1:-1;;;17517:96:51;;;;;;;;;17617:25;17645:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;17696:24:51;;;;:17;;;:24;;;;;;17732:16;;;;:25;17724:83;;;;-1:-1:-1;;;17724:83:51;;;;;;;;;17826:7;;;17855:19;;;;17876:18;;;;17826:69;;-1:-1:-1;;;17826:69:51;;17811:12;;-1:-1:-1;;;;;17826:7:51;;:21;;:69;;17848:5;;17855:19;;;-1:-1:-1;;;;;17876:18:51;;17826:69;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17826:69:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17826:69:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17826:69:51;;;;;;;;;17811:84;;17904:7;17900:235;;;17938:74;17944:8;:17;;;;;;;;;;-1:-1:-1;;;;;17944:17:51;17963:5;17938:74;;;;;;;;;;;;;;;;;:5;:74::i;:::-;17918:8;:17;;;:94;;;;;-1:-1:-1;;;;;17918:94:51;;;;;-1:-1:-1;;;;;17918:94:51;;;;;;17900:235;;;18052:78;18058:8;:21;;;;;;;;;;-1:-1:-1;;;;;18058:21:51;18081:5;18052:78;;;;;;;;;;;;;;;;;:5;:78::i;:::-;18028:8;:21;;;:102;;;;;-1:-1:-1;;;;;18028:102:51;;;;;-1:-1:-1;;;;;18028:102:51;;;;;;17900:235;18139:23;;18158:4;-1:-1:-1;;18139:23:51;;;;-1:-1:-1;;18166:25:51;18139:23;18166:25;;;;;-1:-1:-1;;18195:21:51;;-1:-1:-1;;;;;18195:21:51;;;;;;18226:43;;;;;;18235:5;;18242:10;;18166:25;;18195:21;;18226:43;;;;;;;;;;17427:846;;;;;;:::o;797:146:56:-;875:6;906:12;899:5;895:9;;887:32;;;;-1:-1:-1;;;887:32:56;;;;;;;;;;-1:-1:-1;937:1:56;;797:146;-1:-1:-1;;797:146:56:o;2411:211::-;2506:6;-1:-1:-1;;;;;2522:6:56;;2518:30;;-1:-1:-1;2542:1:56;2535:8;;2518:30;2563:5;;;-1:-1:-1;;;;;2580:10:56;;;;:5;;;;;;;;;;;;-1:-1:-1;;;;;2580:10:56;;2592:12;2572:33;;;;;-1:-1:-1;;;2572:33:56;;;;;;;;;;-1:-1:-1;2617:1:56;-1:-1:-1;2411:211:56;;;;;;:::o;1516:172::-;1611:6;1634:5;;;1659:12;-1:-1:-1;;;;;1651:6:56;;;;;;;;1643:29;;;;-1:-1:-1;;;1643:29:56;;;;;;;;;2900:312;2995:6;3082:12;-1:-1:-1;;;;;3075:5:56;;3067:28;;;;-1:-1:-1;;;3067:28:56;;;;;;;;;;;3099:8;3114:1;-1:-1:-1;;;;;3110:5:56;:1;-1:-1:-1;;;;;3110:5:56;;;;;;;;2900:312;-1:-1:-1;;;;;2900:312:56:o;20989:147:51:-;21050:7;21075:5;;;21092:6;;;;21084:36;;;;-1:-1:-1;;;21084:36:51;;;;;;;;21958:136;22060:9;21958:136;:::o;318:156:149:-;379:4;405:42;-1:-1:-1;;;;;397:50:149;;;;;;:72;;-1:-1:-1;;;;;;;451:18:149;;;;318:156::o;21201:134:51:-;21262:7;21288:1;21283;:6;;21275:40;;;;-1:-1:-1;;;21275:40:51;;;;;;;;;-1:-1:-1;21326:5:51;;;21201:134::o;946:146:56:-;1024:6;1055:12;-1:-1:-1;;;1044:9:56;;1036:32;;;;-1:-1:-1;;;1036:32:56;;;;;;;;;11654:387:51;11805:8;;11843:47;;-1:-1:-1;;;;;11805:8:51;;;;:27;;11843:47;;11854:6;;11862:5;;11869:9;;11880:4;;11886:3;;11843:47;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11843:47:51;;;11833:58;;;;;;11805:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11805:87:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11805:87:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11805:87:51;;;;;;;;;11804:88;11792:179;;;;-1:-1:-1;;;11792:179:51;;;;;;;;;11975:8;;:62;;-1:-1:-1;;;11975:62:51;;-1:-1:-1;;;;;11975:8:51;;;;:25;;:62;;12001:6;;12009:5;;12016:9;;12027:4;;12033:3;;11975:62;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11975:62:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11975:62:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11975:62:51;;;;;;;;;;11654:387;;;;;:::o;1146:20950::-;;;;;;;;;-1:-1:-1;1146:20950:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1146:20950:51;-1:-1:-1;;;;;1146:20950:51;;;;;;;;;;;-1:-1:-1;1146:20950:51;;;;;;;-1:-1:-1;1146:20950:51;;;-1:-1:-1;1146:20950:51;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1146:20950:51;;;-1:-1:-1;1146:20950:51;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1146:20950:51;;;-1:-1:-1;1146:20950:51;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1146:20950:51;;;-1:-1:-1;1146:20950:51;:::i;:::-;;;;;;;;;-1:-1:-1;1146:20950:51;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;1146:20950:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;;;354:80;;;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;;;748:50;;-1:-1;821:4;812:14;;;;840;;;;;702:1;695:9;655:206;;;659:14;237:630;;;;;;;;891:693;;1013:3;1006:4;998:6;994:17;990:27;980:2;;1031:1;1028;1021:12;980:2;1068:6;1055:20;1090:85;1105:69;1167:6;1105:69;;1090:85;1203:21;;;1247:4;1235:17;;;;1081:94;;-1:-1;1260:14;;1235:17;1355:1;1340:238;1365:6;1362:1;1359:13;1340:238;;;1448:3;1435:17;1427:6;1423:30;1472:42;1510:3;1498:10;1472:42;;;1460:55;;-1:-1;1538:4;1529:14;;;;1557;;;;;1387:1;1380:9;1340:238;;1609:696;;1732:3;1725:4;1717:6;1713:17;1709:27;1699:2;;1750:1;1747;1740:12;1699:2;1787:6;1774:20;1809:86;1824:70;1887:6;1824:70;;1809:86;1923:21;;;1967:4;1955:17;;;;1800:95;;-1:-1;1980:14;;1955:17;2075:1;2060:239;2085:6;2082:1;2079:13;2060:239;;;2168:3;2155:17;2147:6;2143:30;2192:43;2231:3;2219:10;2192:43;;;2180:56;;-1:-1;2259:4;2250:14;;;;2278;;;;;2107:1;2100:9;2060:239;;2331:707;;2448:3;2441:4;2433:6;2429:17;2425:27;2415:2;;2466:1;2463;2456:12;2415:2;2503:6;2490:20;2525:80;2540:64;2597:6;2540:64;;2525:80;2516:89;;2622:5;2647:6;2640:5;2633:21;2677:4;2669:6;2665:17;2655:27;;2699:4;2694:3;2690:14;2683:21;;2752:6;2799:3;2791:4;2783:6;2779:17;2774:3;2770:27;2767:36;2764:2;;;2816:1;2813;2806:12;2764:2;2841:1;2826:206;2851:6;2848:1;2845:13;2826:206;;;2909:3;2931:37;2964:3;2952:10;2931:37;;;2919:50;;-1:-1;2992:4;2983:14;;;;3011;;;;;2873:1;2866:9;2826:206;;3046:124;3110:20;;3135:30;3110:20;3135:30;;3177:128;3252:13;;3270:30;3252:13;3270:30;;3312:130;3379:20;;3404:33;3379:20;3404:33;;3449:134;3527:13;;3545:33;3527:13;3545:33;;3591:432;;3688:3;3681:4;3673:6;3669:17;3665:27;3655:2;;3706:1;3703;3696:12;3655:2;3743:6;3730:20;3765:60;3780:44;3817:6;3780:44;;3765:60;3756:69;;3845:6;3838:5;3831:21;3881:4;3873:6;3869:17;3914:4;3907:5;3903:16;3949:3;3940:6;3935:3;3931:16;3928:25;3925:2;;;3966:1;3963;3956:12;3925:2;3976:41;4010:6;4005:3;4000;3976:41;;;3648:375;;;;;;;;4032:442;;4144:3;4137:4;4129:6;4125:17;4121:27;4111:2;;4162:1;4159;4152:12;4111:2;4192:6;4186:13;4214:64;4229:48;4270:6;4229:48;;4214:64;4205:73;;4298:6;4291:5;4284:21;4334:4;4326:6;4322:17;4367:4;4360:5;4356:16;4402:3;4393:6;4388:3;4384:16;4381:25;4378:2;;;4419:1;4416;4409:12;4378:2;4429:39;4461:6;4456:3;4451;4429:39;;5654:126;5719:20;;5744:31;5719:20;5744:31;;5787:132;5864:13;;5882:32;5864:13;5882:32;;5926:241;;6030:2;6018:9;6009:7;6005:23;6001:32;5998:2;;;6046:1;6043;6036:12;5998:2;6081:1;6098:53;6143:7;6123:9;6098:53;;;6088:63;5992:175;-1:-1;;;;5992:175;6174:366;;;6295:2;6283:9;6274:7;6270:23;6266:32;6263:2;;;6311:1;6308;6301:12;6263:2;6346:1;6363:53;6408:7;6388:9;6363:53;;;6353:63;;6325:97;6453:2;6471:53;6516:7;6507:6;6496:9;6492:22;6471:53;;;6461:63;;6432:98;6257:283;;;;;;6547:1415;;;;;;6840:3;6828:9;6819:7;6815:23;6811:33;6808:2;;;6857:1;6854;6847:12;6808:2;6892:31;;-1:-1;;;;;6932:30;;6929:2;;;6975:1;6972;6965:12;6929:2;6995:78;7065:7;7056:6;7045:9;7041:22;6995:78;;;6985:88;;6871:208;7138:2;7127:9;7123:18;7110:32;-1:-1;;;;;7154:6;7151:30;7148:2;;;7194:1;7191;7184:12;7148:2;7214:78;7284:7;7275:6;7264:9;7260:22;7214:78;;;7204:88;;7089:209;7357:2;7346:9;7342:18;7329:32;-1:-1;;;;;7373:6;7370:30;7367:2;;;7413:1;7410;7403:12;7367:2;7433:84;7509:7;7500:6;7489:9;7485:22;7433:84;;;7423:94;;7308:215;7582:2;7571:9;7567:18;7554:32;-1:-1;;;;;7598:6;7595:30;7592:2;;;7638:1;7635;7628:12;7592:2;7658:83;7733:7;7724:6;7713:9;7709:22;7658:83;;;7648:93;;7533:214;7806:3;7795:9;7791:19;7778:33;-1:-1;;;;;7823:6;7820:30;7817:2;;;7863:1;7860;7853:12;7817:2;7883:63;7938:7;7929:6;7918:9;7914:22;7883:63;;;7873:73;;7757:195;6802:1160;;;;;;;;;7969:257;;8081:2;8069:9;8060:7;8056:23;8052:32;8049:2;;;8097:1;8094;8087:12;8049:2;8132:1;8149:61;8202:7;8182:9;8149:61;;8233:263;;8348:2;8336:9;8327:7;8323:23;8319:32;8316:2;;;8364:1;8361;8354:12;8316:2;8399:1;8416:64;8472:7;8452:9;8416:64;;8503:360;;8627:2;8615:9;8606:7;8602:23;8598:32;8595:2;;;8643:1;8640;8633:12;8595:2;8678:24;;-1:-1;;;;;8711:30;;8708:2;;;8754:1;8751;8744:12;8708:2;8774:73;8839:7;8830:6;8819:9;8815:22;8774:73;;8870:241;;8974:2;8962:9;8953:7;8949:23;8945:32;8942:2;;;8990:1;8987;8980:12;8942:2;9025:1;9042:53;9087:7;9067:9;9042:53;;9388:366;;;9509:2;9497:9;9488:7;9484:23;9480:32;9477:2;;;9525:1;9522;9515:12;9477:2;9560:1;9577:53;9622:7;9602:9;9577:53;;;9567:63;;9539:97;9667:2;9685:53;9730:7;9721:6;9710:9;9706:22;9685:53;;9761:360;;;9879:2;9867:9;9858:7;9854:23;9850:32;9847:2;;;9895:1;9892;9885:12;9847:2;9930:1;9947:53;9992:7;9972:9;9947:53;;;9937:63;;9909:97;10037:2;10055:50;10097:7;10088:6;10077:9;10073:22;10055:50;;10128:733;;;;;;10295:3;10283:9;10274:7;10270:23;10266:33;10263:2;;;10312:1;10309;10302:12;10263:2;10347:1;10364:53;10409:7;10389:9;10364:53;;;10354:63;;10326:97;10454:2;10472:50;10514:7;10505:6;10494:9;10490:22;10472:50;;;10462:60;;10433:95;10559:2;10577:51;10620:7;10611:6;10600:9;10596:22;10577:51;;;10567:61;;10538:96;10665:2;10683:53;10728:7;10719:6;10708:9;10704:22;10683:53;;;10673:63;;10644:98;10773:3;10792:53;10837:7;10828:6;10817:9;10813:22;10792:53;;10868:261;;10982:2;10970:9;10961:7;10957:23;10953:32;10950:2;;;10998:1;10995;10988:12;10950:2;11033:1;11050:63;11105:7;11085:9;11050:63;;11137:173;;11224:46;11266:3;11258:6;11224:46;;;-1:-1;;11299:4;11290:14;;11217:93;11319:177;;11430:60;11486:3;11478:6;11430:60;;11695:173;;11782:46;11824:3;11816:6;11782:46;;11876:142;11967:45;12006:5;11967:45;;;11962:3;11955:58;11949:69;;;12025:103;12098:24;12116:5;12098:24;;12286:690;;12431:54;12479:5;12431:54;;;12498:86;12577:6;12572:3;12498:86;;;12491:93;;12605:56;12655:5;12605:56;;;12681:7;12709:1;12694:260;12719:6;12716:1;12713:13;12694:260;;;12786:6;12780:13;12807:63;12866:3;12851:13;12807:63;;;12800:70;;12887:60;12940:6;12887:60;;;12877:70;-1:-1;;12741:1;12734:9;12694:260;;;-1:-1;12967:3;;12410:566;-1:-1;;;;;12410:566;13011:888;;13166:59;13219:5;13166:59;;;13238:91;13322:6;13317:3;13238:91;;;13231:98;;13352:3;13394:4;13386:6;13382:17;13377:3;13373:27;13421:61;13476:5;13421:61;;;13502:7;13530:1;13515:345;13540:6;13537:1;13534:13;13515:345;;;13602:9;13596:4;13592:20;13587:3;13580:33;13647:6;13641:13;13669:74;13738:4;13723:13;13669:74;;;13661:82;;13760:65;13818:6;13760:65;;;13848:4;13839:14;;;;;13750:75;-1:-1;;13562:1;13555:9;13515:345;;;-1:-1;13873:4;;13145:754;-1:-1;;;;;;;13145:754;13936:896;;14093:60;14147:5;14093:60;;;14166:92;14251:6;14246:3;14166:92;;;14159:99;;14281:3;14323:4;14315:6;14311:17;14306:3;14302:27;14350:62;14406:5;14350:62;;;14432:7;14460:1;14445:348;14470:6;14467:1;14464:13;14445:348;;;14532:9;14526:4;14522:20;14517:3;14510:33;14577:6;14571:13;14599:76;14670:4;14655:13;14599:76;;;14591:84;;14692:66;14751:6;14692:66;;;14781:4;14772:14;;;;;14682:76;-1:-1;;14492:1;14485:9;14445:348;;14871:690;;15016:54;15064:5;15016:54;;;15083:86;15162:6;15157:3;15083:86;;;15076:93;;15190:56;15240:5;15190:56;;;15266:7;15294:1;15279:260;15304:6;15301:1;15298:13;15279:260;;;15371:6;15365:13;15392:63;15451:3;15436:13;15392:63;;;15385:70;;15472:60;15525:6;15472:60;;;15462:70;-1:-1;;15326:1;15319:9;15279:260;;15569:94;15636:21;15651:5;15636:21;;15781:113;15864:24;15882:5;15864:24;;15901:152;16002:45;16022:24;16040:5;16022:24;;;16002:45;;16060:343;;16170:38;16202:5;16170:38;;;16220:70;16283:6;16278:3;16220:70;;;16213:77;;16295:52;16340:6;16335:3;16328:4;16321:5;16317:16;16295:52;;;16368:29;16390:6;16368:29;;;16359:39;;;;16150:253;-1:-1;;;16150:253;16755:818;;16872:5;16866:12;16906:1;16895:9;16891:17;16919:1;16914:247;;;;17172:1;17167:400;;;;16884:683;;16914:247;16992:4;16988:1;16977:9;16973:17;16969:28;17011:70;17074:6;17069:3;17011:70;;;-1:-1;;17100:25;;17088:38;;17004:77;-1:-1;;17149:4;17140:14;;;-1:-1;16914:247;;17167:400;17236:1;17225:9;17221:17;17252:70;17315:6;17310:3;17252:70;;;17245:77;;17344:37;17375:5;17344:37;;;17397:1;17405:130;17419:6;17416:1;17413:13;17405:130;;;17478:14;;17465:11;;;17458:35;17525:1;17512:15;;;;17441:4;17434:12;17405:130;;;17549:11;;;-1:-1;;;16884:683;;16842:731;;;;;;17581:162;17682:55;17731:5;17682:55;;17921:160;18021:54;18069:5;18021:54;;18088:142;18179:45;18218:5;18179:45;;20120:394;;20280:67;20344:2;20339:3;20280:67;;;20380:34;20360:55;;20449:27;20444:2;20435:12;;20428:49;20505:2;20496:12;;20266:248;-1:-1;;20266:248;20523:442;;20683:67;20747:2;20742:3;20683:67;;;20783:34;20763:55;;20852:34;20847:2;20838:12;;20831:56;-1:-1;;;20916:2;20907:12;;20900:28;20956:2;20947:12;;20669:296;-1:-1;;20669:296;20974:443;;21134:67;21198:2;21193:3;21134:67;;;21234:34;21214:55;;21303:34;21298:2;21289:12;;21282:56;-1:-1;;;21367:2;21358:12;;21351:29;21408:2;21399:12;;21120:297;-1:-1;;21120:297;21426:398;;21604:84;21686:1;21681:3;21604:84;;;-1:-1;;;21701:87;;21816:1;21807:11;;21590:234;-1:-1;;21590:234;21833:450;;21993:67;22057:2;22052:3;21993:67;;;22093:34;22073:55;;22162:34;22157:2;22148:12;;22141:56;-1:-1;;;22226:2;22217:12;;22210:36;22274:2;22265:12;;21979:304;-1:-1;;21979:304;22292:324;;22452:67;22516:2;22511:3;22452:67;;;22552:26;22532:47;;22607:2;22598:12;;22438:178;-1:-1;;22438:178;22625:378;;22785:67;22849:2;22844:3;22785:67;;;22885:34;22865:55;;-1:-1;;;22949:2;22940:12;;22933:33;22994:2;22985:12;;22771:232;-1:-1;;22771:232;23012:382;;23172:67;23236:2;23231:3;23172:67;;;23272:34;23252:55;;-1:-1;;;23336:2;23327:12;;23320:37;23385:2;23376:12;;23158:236;-1:-1;;23158:236;23403:463;;23563:67;23627:2;23622:3;23563:67;;;23663:34;23643:55;;23732:34;23727:2;23718:12;;23711:56;23801:27;23796:2;23787:12;;23780:49;23857:2;23848:12;;23549:317;-1:-1;;23549:317;23875:448;;24035:67;24099:2;24094:3;24035:67;;;24135:34;24115:55;;24204:34;24199:2;24190:12;;24183:56;-1:-1;;;24268:2;24259:12;;24252:34;24314:2;24305:12;;24021:302;-1:-1;;24021:302;24332:377;;24492:67;24556:2;24551:3;24492:67;;;24592:34;24572:55;;-1:-1;;;24656:2;24647:12;;24640:32;24700:2;24691:12;;24478:231;-1:-1;;24478:231;24718:317;;24878:67;24942:2;24937:3;24878:67;;;-1:-1;;;24958:40;;25026:2;25017:12;;24864:171;-1:-1;;24864:171;25044:477;;25222:85;25304:2;25299:3;25222:85;;;25340:34;25320:55;;25409:34;25404:2;25395:12;;25388:56;-1:-1;;;25473:2;25464:12;;25457:27;25512:2;25503:12;;25208:313;-1:-1;;25208:313;25530:412;;25708:85;25790:2;25785:3;25708:85;;;25826:34;25806:55;;-1:-1;;;25890:2;25881:12;;25874:31;25933:2;25924:12;;25694:248;-1:-1;;25694:248;25951:442;;26111:67;26175:2;26170:3;26111:67;;;26211:34;26191:55;;26280:34;26275:2;26266:12;;26259:56;-1:-1;;;26344:2;26335:12;;26328:28;26384:2;26375:12;;26097:296;-1:-1;;26097:296;26402:383;;26562:67;26626:2;26621:3;26562:67;;;26662:34;26642:55;;-1:-1;;;26726:2;26717:12;;26710:38;26776:2;26767:12;;26548:237;-1:-1;;26548:237;26794:442;;26954:67;27018:2;27013:3;26954:67;;;27054:34;27034:55;;27123:34;27118:2;27109:12;;27102:56;-1:-1;;;27187:2;27178:12;;27171:28;27227:2;27218:12;;26940:296;-1:-1;;26940:296;27245:381;;27405:67;27469:2;27464:3;27405:67;;;27505:34;27485:55;;-1:-1;;;27569:2;27560:12;;27553:36;27617:2;27608:12;;27391:235;-1:-1;;27391:235;27635:400;;27795:67;27859:2;27854:3;27795:67;;;27895:34;27875:55;;27964:33;27959:2;27950:12;;27943:55;28026:2;28017:12;;27781:254;-1:-1;;27781:254;28044:384;;28204:67;28268:2;28263:3;28204:67;;;28304:34;28284:55;;-1:-1;;;28368:2;28359:12;;28352:39;28419:2;28410:12;;28190:238;-1:-1;;28190:238;28437:462;;28597:67;28661:2;28656:3;28597:67;;;28697:34;28677:55;;28766:34;28761:2;28752:12;;28745:56;28835:26;28830:2;28821:12;;28814:48;28890:2;28881:12;;28583:316;-1:-1;;28583:316;28908:391;;29068:67;29132:2;29127:3;29068:67;;;29168:34;29148:55;;-1:-1;;;29232:2;29223:12;;29216:46;29290:2;29281:12;;29054:245;-1:-1;;29054:245;29308:379;;29468:67;29532:2;29527:3;29468:67;;;29568:34;29548:55;;-1:-1;;;29632:2;29623:12;;29616:34;29678:2;29669:12;;29454:233;-1:-1;;29454:233;29696:321;;29856:67;29920:2;29915:3;29856:67;;;-1:-1;;;29936:44;;30008:2;29999:12;;29842:175;-1:-1;;29842:175;30026:391;;30186:67;30250:2;30245:3;30186:67;;;30286:34;30266:55;;-1:-1;;;30350:2;30341:12;;30334:46;30408:2;30399:12;;30172:245;-1:-1;;30172:245;30492:626;30707:23;;30637:4;30628:14;;;30736:57;30632:3;30707:23;30736:57;;;30657:142;30875:4;30868:5;30864:16;30858:23;30887:57;30938:4;30933:3;30929:14;30915:12;30887:57;;;30809:141;31024:4;31017:5;31013:16;31007:23;31036:61;31091:4;31086:3;31082:14;31068:12;31036:61;;31355:124;31437:36;31467:5;31437:36;;31486:110;31567:23;31584:5;31567:23;;31603:124;31685:36;31715:5;31685:36;;31734:110;31815:23;31832:5;31815:23;;31851:107;31930:22;31946:5;31930:22;;31965:124;32047:36;32077:5;32047:36;;32096:100;32167:23;32184:5;32167:23;;32320:650;;32575:148;32719:3;32575:148;;;32568:155;;32734:75;32805:3;32796:6;32734:75;;;32831:2;32826:3;32822:12;32815:19;;32845:75;32916:3;32907:6;32845:75;;;-1:-1;32942:2;32933:12;;32556:414;-1:-1;;32556:414;32977:372;;33176:148;33320:3;33176:148;;33356:372;;33555:148;33699:3;33555:148;;33735:213;33853:2;33838:18;;33867:71;33842:9;33911:6;33867:71;;33955:451;34137:2;34122:18;;34151:79;34126:9;34203:6;34151:79;;;34241:72;34309:2;34298:9;34294:18;34285:6;34241:72;;;34324;34392:2;34381:9;34377:18;34368:6;34324:72;;34413:953;34742:3;34727:19;;34757:71;34731:9;34801:6;34757:71;;;34839:80;34915:2;34904:9;34900:18;34891:6;34839:80;;;34967:9;34961:4;34957:20;34952:2;34941:9;34937:18;34930:48;34992:131;35118:4;34992:131;;;34984:139;;35171:9;35165:4;35161:20;35156:2;35145:9;35141:18;35134:48;35196:76;35267:4;35258:6;35196:76;;;35188:84;;35283:73;35351:3;35340:9;35336:19;35327:6;35283:73;;35373:533;35568:3;35553:19;;35583:71;35557:9;35627:6;35583:71;;;35665:72;35733:2;35722:9;35718:18;35709:6;35665:72;;;35748:66;35810:2;35799:9;35795:18;35786:6;35748:66;;;35825:71;35892:2;35881:9;35877:18;35868:6;35825:71;;35913:831;36181:3;36166:19;;36196:71;36170:9;36240:6;36196:71;;;36278:72;36346:2;36335:9;36331:18;36322:6;36278:72;;;36398:9;36392:4;36388:20;36383:2;36372:9;36368:18;36361:48;36423:78;36496:4;36487:6;36423:78;;;36415:86;;36549:9;36543:4;36539:20;36534:2;36523:9;36519:18;36512:48;36574:76;36645:4;36636:6;36574:76;;;36566:84;;36661:73;36729:3;36718:9;36714:19;36705:6;36661:73;;;36152:592;;;;;;;;;36751:817;37012:3;36997:19;;37027:71;37001:9;37071:6;37027:71;;;37109:72;37177:2;37166:9;37162:18;37153:6;37109:72;;;37229:9;37223:4;37219:20;37214:2;37203:9;37199:18;37192:48;37254:75;37324:4;37315:6;37254:75;;;37246:83;;37377:9;37371:4;37367:20;37362:2;37351:9;37347:18;37340:48;37402:73;37470:4;37461:6;37402:73;;;37394:81;;37486:72;37553:3;37542:9;37538:19;37529:6;37486:72;;37575:431;37747:2;37732:18;;37761:71;37736:9;37805:6;37761:71;;;37843;37910:2;37899:9;37895:18;37886:6;37843:71;;;37925;37992:2;37981:9;37977:18;37968:6;37925:71;;38013:1183;38437:3;38452:47;;;38422:19;;38513:108;38422:19;38607:6;38513:108;;;38505:116;;38669:9;38663:4;38659:20;38654:2;38643:9;38639:18;38632:48;38694:108;38797:4;38788:6;38694:108;;;38686:116;;38850:9;38844:4;38840:20;38835:2;38824:9;38820:18;38813:48;38875:120;38990:4;38981:6;38875:120;;;38867:128;;39043:9;39037:4;39033:20;39028:2;39017:9;39013:18;39006:48;39068:118;39181:4;39172:6;39068:118;;39203:213;39321:2;39306:18;;39335:71;39310:9;39379:6;39335:71;;39423:547;39625:3;39610:19;;39640:71;39614:9;39684:6;39640:71;;;39722:72;39790:2;39779:9;39775:18;39766:6;39722:72;;;39805;39873:2;39862:9;39858:18;39849:6;39805:72;;;39888;39956:2;39945:9;39941:18;39932:6;39888:72;;39977:423;40145:2;40130:18;;40159:71;40134:9;40203:6;40159:71;;;40241:72;40309:2;40298:9;40294:18;40285:6;40241:72;;;40324:66;40386:2;40375:9;40371:18;40362:6;40324:66;;40407:539;40605:3;40590:19;;40620:71;40594:9;40664:6;40620:71;;;40702:68;40766:2;40755:9;40751:18;40742:6;40702:68;;;40781:72;40849:2;40838:9;40834:18;40825:6;40781:72;;;40864;40932:2;40921:9;40917:18;40908:6;40864:72;;40953:249;41089:2;41074:18;;41103:89;41078:9;41165:6;41103:89;;41467:247;41602:2;41587:18;;41616:88;41591:9;41677:6;41616:88;;41721:293;41855:2;41869:47;;;41840:18;;41930:74;41840:18;41990:6;41930:74;;42329:407;42520:2;42534:47;;;42505:18;;42595:131;42505:18;42595:131;;42743:407;42934:2;42948:47;;;42919:18;;43009:131;42919:18;43009:131;;43157:407;43348:2;43362:47;;;43333:18;;43423:131;43333:18;43423:131;;43571:407;43762:2;43776:47;;;43747:18;;43837:131;43747:18;43837:131;;43985:407;44176:2;44190:47;;;44161:18;;44251:131;44161:18;44251:131;;44399:407;44590:2;44604:47;;;44575:18;;44665:131;44575:18;44665:131;;44813:407;45004:2;45018:47;;;44989:18;;45079:131;44989:18;45079:131;;45227:407;45418:2;45432:47;;;45403:18;;45493:131;45403:18;45493:131;;45641:407;45832:2;45846:47;;;45817:18;;45907:131;45817:18;45907:131;;46055:407;46246:2;46260:47;;;46231:18;;46321:131;46231:18;46321:131;;46469:407;46660:2;46674:47;;;46645:18;;46735:131;46645:18;46735:131;;46883:407;47074:2;47088:47;;;47059:18;;47149:131;47059:18;47149:131;;47297:407;47488:2;47502:47;;;47473:18;;47563:131;47473:18;47563:131;;47711:407;47902:2;47916:47;;;47887:18;;47977:131;47887:18;47977:131;;48125:407;48316:2;48330:47;;;48301:18;;48391:131;48301:18;48391:131;;48539:407;48730:2;48744:47;;;48715:18;;48805:131;48715:18;48805:131;;48953:407;49144:2;49158:47;;;49129:18;;49219:131;49129:18;49219:131;;49367:407;49558:2;49572:47;;;49543:18;;49633:131;49543:18;49633:131;;49781:407;49972:2;49986:47;;;49957:18;;50047:131;49957:18;50047:131;;50195:407;50386:2;50400:47;;;50371:18;;50461:131;50371:18;50461:131;;50609:407;50800:2;50814:47;;;50785:18;;50875:131;50785:18;50875:131;;51023:317;51193:2;51178:18;;51207:123;51182:9;51303:6;51207:123;;51567:1847;52159:3;52144:19;;52174:71;52148:9;52218:6;52174:71;;;52256:80;52332:2;52321:9;52317:18;52308:6;52256:80;;;52384:9;52378:4;52374:20;52369:2;52358:9;52354:18;52347:48;52409:108;52512:4;52503:6;52409:108;;;52401:116;;52565:9;52559:4;52555:20;52550:2;52539:9;52535:18;52528:48;52590:108;52693:4;52684:6;52590:108;;;52582:116;;52747:9;52741:4;52737:20;52731:3;52720:9;52716:19;52709:49;52772:120;52887:4;52878:6;52772:120;;;52764:128;;52941:9;52935:4;52931:20;52925:3;52914:9;52910:19;52903:49;52966:118;53079:4;53070:6;52966:118;;;52958:126;;53095:73;53163:3;53152:9;53148:19;53139:6;53095:73;;;53179;53247:3;53236:9;53232:19;53223:6;53179:73;;;53301:9;53295:4;53291:20;53285:3;53274:9;53270:19;53263:49;53326:78;53399:4;53390:6;53326:78;;;53318:86;52130:1284;-1:-1;;;;;;;;;;;52130:1284;53421:324;53567:2;53552:18;;53581:71;53556:9;53625:6;53581:71;;;53663:72;53731:2;53720:9;53716:18;53707:6;53663:72;;53752:1391;54152:3;54137:19;;54167:71;54141:9;54211:6;54167:71;;;54249:70;54315:2;54304:9;54300:18;54291:6;54249:70;;;54330;54396:2;54385:9;54381:18;54372:6;54330:70;;;54411;54477:2;54466:9;54462:18;54453:6;54411:70;;;54492:71;54558:3;54547:9;54543:19;54534:6;54492:71;;;54574;54640:3;54629:9;54625:19;54616:6;54574:71;;;54656;54722:3;54711:9;54707:19;54698:6;54656:71;;;54738;54804:3;54793:9;54789:19;54780:6;54738:71;;;54820;54886:3;54875:9;54871:19;54862:6;54820:71;;;54902:67;54964:3;54953:9;54949:19;54940:6;54902:67;;;54980:68;55043:3;55032:9;55028:19;55018:7;54980:68;;;55059:74;55128:3;55117:9;55113:19;55103:7;55059:74;;;54123:1020;;;;;;;;;;;;;;;;55150:320;55294:2;55279:18;;55308:69;55283:9;55350:6;55308:69;;55477:209;55593:2;55578:18;;55607:69;55582:9;55649:6;55607:69;;55693:256;55755:2;55749:9;55781:17;;;-1:-1;;;;;55841:34;;55877:22;;;55838:62;55835:2;;;55913:1;55910;55903:12;55835:2;55929;55922:22;55733:216;;-1:-1;55733:216;55956:304;;-1:-1;;;;;56107:6;56104:30;56101:2;;;56147:1;56144;56137:12;56101:2;-1:-1;56182:4;56170:17;;;56235:15;;56038:222;57211:317;;-1:-1;;;;;57342:6;57339:30;57336:2;;;57382:1;57379;57372:12;57336:2;-1:-1;57513:4;57449;57426:17;;;;-1:-1;;57422:33;57503:15;;57273:255;58517:151;58641:4;58632:14;;58589:79;59160:157;;59254:14;;;59296:4;59283:18;;;59213:104;59489:137;59592:12;;59563:63;61054:178;61172:19;;;61221:4;61212:14;;61165:67;62632:91;;62694:24;62712:5;62694:24;;62730:85;62796:13;62789:21;;62772:43;62901:144;62982:5;62988:52;62982:5;62988:52;;63052:121;-1:-1;;;;;63114:54;;63097:76;63259:88;63331:10;63320:22;;63303:44;63354:96;-1:-1;;;;;63415:30;;63398:52;63457:81;63528:4;63517:16;;63500:38;63545:104;-1:-1;;;;;63606:38;;63589:60;63656:129;;63743:37;63774:5;63792:157;;63889:55;63938:5;63889:55;;64389:144;;64485:43;64522:5;64485:43;;64540:116;;64627:24;64645:5;64627:24;;64906:106;;64984:23;65001:5;64984:23;;65019:106;;65097:23;65114:5;65097:23;;65132:106;;65210:23;65227:5;65210:23;;65246:145;65327:6;65322:3;65317;65304:30;-1:-1;65383:1;65365:16;;65358:27;65297:94;65400:268;65465:1;65472:101;65486:6;65483:1;65480:13;65472:101;;;65553:11;;;65547:18;65534:11;;;65527:39;65508:2;65501:10;65472:101;;;65588:6;65585:1;65582:13;65579:2;;;-1:-1;;65653:1;65635:16;;65628:27;65449:219;65757:97;65845:2;65825:14;-1:-1;;65821:28;;65805:49;65862:110;65950:1;65943:5;65940:12;65930:2;;65956:9;65979:117;66048:24;66066:5;66048:24;;;66041:5;66038:35;66028:2;;66087:1;66084;66077:12;66103:111;66169:21;66184:5;66169:21;;66221:117;66290:24;66308:5;66290:24;;66469:113;66536:22;66552:5;66536:22;;66589:115;66657:23;66674:5;66657:23;"
            },
            "methodIdentifiers": {
              "BALLOT_TYPEHASH()": "deaaa7cc",
              "DOMAIN_TYPEHASH()": "20606b70",
              "NAME()": "a3f4df7e",
              "__abdicate()": "760fbc13",
              "__acceptAdmin()": "b9a61961",
              "__executeSetTimelockPendingAdmin(address,uint256)": "21f43e42",
              "__queueSetTimelockPendingAdmin(address,uint256)": "91500671",
              "cancel(uint256)": "40e58ee5",
              "castVote(uint256,bool)": "15373e3d",
              "castVoteBySig(uint256,bool,uint8,bytes32,bytes32)": "4634c61f",
              "execute(uint256)": "fe0d94c1",
              "getActions(uint256)": "328dd982",
              "getReceipt(uint256,address)": "e23a9a52",
              "guardian()": "452a9320",
              "latestProposalIds(address)": "17977c61",
              "majorityPercentageVotes()": "e2653790",
              "proposalCount()": "da35c664",
              "proposalMaxOperations()": "7bdbe4d0",
              "proposalThreshold()": "b58131b0",
              "proposals(uint256)": "013cf08b",
              "propose(address[],uint256[],string[],bytes[],string)": "da95691a",
              "queue(uint256)": "ddf0b009",
              "quorumPercentageVotes()": "b2b0d91f",
              "quorumVotes()": "24bc1a64",
              "staking()": "4cf088d9",
              "state(uint256)": "3e4f49e6",
              "timelock()": "d33219b4",
              "votingDelay()": "3932abb1",
              "votingPeriod()": "02a251a3"
            }
          },
          "userdoc": {
            "methods": {
              "__abdicate()": {
                "notice": "Sets guardian address to zero."
              },
              "cancel(uint256)": {
                "notice": "Cancel a proposal by looping and cancelling everyone of its calls."
              },
              "castVote(uint256,bool)": {
                "notice": "Casts a vote by sender."
              },
              "castVoteBySig(uint256,bool,uint8,bytes32,bytes32)": {
                "notice": "Voting with EIP-712 Signatures.\t * Voting power can be delegated to any address, and then can be used to vote on proposals. A key benefit to users of by-signature functionality is that they can create a signed vote transaction for free, and have a trusted third-party spend rBTC(or ETH) on gas fees and write it to the blockchain for them.\t * The third party in this scenario, submitting the SOV-holder’s signed transaction holds a voting power that is for only a single proposal. The signatory still holds the power to vote on their own behalf in the proposal if the third party has not yet published the signed transaction that was given to them."
              },
              "execute(uint256)": {
                "notice": "Execute a proposal by looping and performing everyone of its calls."
              },
              "getActions(uint256)": {
                "notice": "Get a proposal list of its calls."
              },
              "getReceipt(uint256,address)": {
                "notice": "Get a proposal receipt."
              },
              "proposalMaxOperations()": {
                "notice": "The maximum number of actions that can be included in a proposal."
              },
              "proposalThreshold()": {
                "notice": "The number of votes required in order for a voter to become a proposer."
              },
              "propose(address[],uint256[],string[],bytes[],string)": {
                "notice": "Create a new proposal."
              },
              "queue(uint256)": {
                "notice": "Enqueue a proposal and everyone of its calls."
              },
              "quorumVotes()": {
                "notice": "The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed."
              },
              "state(uint256)": {
                "notice": "Get a proposal state."
              },
              "votingDelay()": {
                "notice": "The delay before voting on a proposal may take place, once proposed."
              },
              "votingPeriod()": {
                "notice": "The duration of voting on a proposal, in blocks."
              }
            },
            "notice": "This is an adapted clone of compound’s governance model. In general, the process is the same: Token holders can make (executable) proposals if they possess enough voting power, vote on proposals during a predefined voting period and in the end evaluate the outcome. If successful, the proposal will be scheduled on the timelock contract. Only after sufficient time passed, it can be executed. A minimum voting power is required for making a proposal as well as a minimum quorum. * Voting power in the Bitocracy: Stakers will receive voting power in the Bitocracy in return for their staking commitment. This voting power is weighted by how much SOV is staked and for how long the staking period is - staking more SOV over longer staking periods results in higher voting power. With this voting power, users can vote for or against any SIP in bitocracy.sovryn.app."
          }
        },
        "StakingInterface": {
          "abi": [
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint32",
                  "name": "blockNumber",
                  "type": "uint32"
                },
                {
                  "internalType": "uint256",
                  "name": "time",
                  "type": "uint256"
                }
              ],
              "name": "getPriorTotalVotingPower",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                }
              ],
              "name": "getPriorVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getPriorTotalVotingPower(uint32,uint256)": "2522d7ba",
              "getPriorVotes(address,uint256,uint256)": "836eebee"
            }
          },
          "userdoc": {
            "methods": {}
          }
        },
        "TimelockInterface": {
          "abi": [
            {
              "constant": true,
              "inputs": [],
              "name": "GRACE_PERIOD",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "acceptAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "cancelTransaction",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "delay",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "executeTransaction",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "queueTransaction",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "queuedTransactions",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "GRACE_PERIOD()": "c1a287e2",
              "acceptAdmin()": "0e18b681",
              "cancelTransaction(address,uint256,string,bytes,uint256)": "591fcdfe",
              "delay()": "6a42b8f8",
              "executeTransaction(address,uint256,string,bytes,uint256)": "0825f38f",
              "queueTransaction(address,uint256,string,bytes,uint256)": "3a66f901",
              "queuedTransactions(bytes32)": "f2b06537"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/governance/GovernorVault.sol": {
        "GovernorVault": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Deposited",
              "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": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "RbtcTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensTransferred",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address payable",
                  "name": "_receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "transferRbtc",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "transferTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "transferRbtc(address,uint256)": {
                "params": {
                  "_amount": "The amount to be transferred.",
                  "_receiver": "The receiver of RBTC."
                }
              },
              "transferTokens(address,address,uint256)": {
                "params": {
                  "_amount": "The amount to be transferred.",
                  "_receiver": "The receiver of tokens.",
                  "_token": "The address of token contract."
                }
              }
            },
            "title": "Governance Vault."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b610640806100796000396000f3fe60806040526004361061004a5760003560e01c80631adb05a4146100895780638da5cb5b146100c25780638f32d59b146100f3578063a64b6e5f1461011c578063f2fde38b1461015f575b34156100875760408051348152905133917f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4919081900360200190a25b005b34801561009557600080fd5b50610087600480360360408110156100ac57600080fd5b506001600160a01b038135169060200135610192565b3480156100ce57600080fd5b506100d76102aa565b604080516001600160a01b039092168252519081900360200190f35b3480156100ff57600080fd5b506101086102b9565b604080519115158252519081900360200190f35b34801561012857600080fd5b506100876004803603606081101561013f57600080fd5b506001600160a01b038135811691602081013590911690604001356102dd565b34801561016b57600080fd5b506100876004803603602081101561018257600080fd5b50356001600160a01b03166104ed565b61019a6102b9565b6101da576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216610230576040805162461bcd60e51b8152602060048201526018602482015277496e76616c6964207265636569766572206164647265737360401b604482015290519081900360640190fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610266573d6000803e3d6000fd5b506040805182815290516001600160a01b038416917f01bde73ead04b7b81fb4790e7e779f1cc42b67cee2792826931dbfaada58b0f9919081900360200190a25050565b6000546001600160a01b031690565b600080546001600160a01b03166102ce610541565b6001600160a01b031614905090565b6102e56102b9565b610325576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b03831661037b576040805162461bcd60e51b8152602060048201526018602482015277496e76616c6964207265636569766572206164647265737360401b604482015290519081900360640190fd5b6001600160a01b0382166103ce576040805162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b604482015290519081900360640190fd5b816001600160a01b031663a9059cbb84836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561042e57600080fd5b505af1158015610442573d6000803e3d6000fd5b505050506040513d602081101561045857600080fd5b505161049d576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b03167f1b89874203ff7f0bba87c969ada3f32fda22ed38a6706d35199d21280c7811b1836040518082815260200191505060405180910390a3505050565b6104f56102b9565b610535576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61053e81610545565b50565b3390565b6001600160a01b03811661058a5760405162461bcd60e51b81526004018080602001828103825260268152602001806105e66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158204521a21f2db993fb32692df828a7f5d2d7ac6c27c83859a3490e744ca53c377764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x640 DUP1 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1ADB05A4 EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0xA64B6E5F EQ PUSH2 0x11C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x15F JUMPI JUMPDEST CALLVALUE ISZERO PUSH2 0x87 JUMPI PUSH1 0x40 DUP1 MLOAD CALLVALUE DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x2DA466A7B24304F47E87FA2E1E5A81B9831CE54FEC19055CE277CA2F39BA42C4 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x87 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x192 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x2B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x128 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x87 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x87 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x19A PUSH2 0x2B9 JUMP JUMPDEST PUSH2 0x1DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x230 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x496E76616C69642072656365697665722061646472657373 PUSH1 0x40 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x266 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0x1BDE73EAD04B7B81FB4790E7E779F1CC42B67CEE2792826931DBFAADA58B0F9 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CE PUSH2 0x541 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x2B9 JUMP JUMPDEST PUSH2 0x325 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x37B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x496E76616C69642072656365697665722061646472657373 PUSH1 0x40 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x496E76616C696420746F6B656E2061646472657373 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP5 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x442 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x49D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x151C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1B89874203FF7F0BBA87C969ADA3F32FDA22ED38A6706D35199D21280C7811B1 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x4F5 PUSH2 0x2B9 JUMP JUMPDEST PUSH2 0x535 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x53E DUP2 PUSH2 0x545 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x58A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E6 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158204521A21F2DB993 0xFB ORIGIN PUSH10 0x2DF828A7F5D2D7AC6C27 0xC8 CODESIZE MSIZE LOG3 0x49 0xE PUSH21 0x4CA53C377764736F6C634300051100320000000000 ",
              "sourceMap": "241:1385:52:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;241:1385:52;;780:87:137;853:10;780:87;:::o;241:1385:52:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "60806040526004361061004a5760003560e01c80631adb05a4146100895780638da5cb5b146100c25780638f32d59b146100f3578063a64b6e5f1461011c578063f2fde38b1461015f575b34156100875760408051348152905133917f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4919081900360200190a25b005b34801561009557600080fd5b50610087600480360360408110156100ac57600080fd5b506001600160a01b038135169060200135610192565b3480156100ce57600080fd5b506100d76102aa565b604080516001600160a01b039092168252519081900360200190f35b3480156100ff57600080fd5b506101086102b9565b604080519115158252519081900360200190f35b34801561012857600080fd5b506100876004803603606081101561013f57600080fd5b506001600160a01b038135811691602081013590911690604001356102dd565b34801561016b57600080fd5b506100876004803603602081101561018257600080fd5b50356001600160a01b03166104ed565b61019a6102b9565b6101da576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216610230576040805162461bcd60e51b8152602060048201526018602482015277496e76616c6964207265636569766572206164647265737360401b604482015290519081900360640190fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610266573d6000803e3d6000fd5b506040805182815290516001600160a01b038416917f01bde73ead04b7b81fb4790e7e779f1cc42b67cee2792826931dbfaada58b0f9919081900360200190a25050565b6000546001600160a01b031690565b600080546001600160a01b03166102ce610541565b6001600160a01b031614905090565b6102e56102b9565b610325576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b03831661037b576040805162461bcd60e51b8152602060048201526018602482015277496e76616c6964207265636569766572206164647265737360401b604482015290519081900360640190fd5b6001600160a01b0382166103ce576040805162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b604482015290519081900360640190fd5b816001600160a01b031663a9059cbb84836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561042e57600080fd5b505af1158015610442573d6000803e3d6000fd5b505050506040513d602081101561045857600080fd5b505161049d576040805162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b03167f1b89874203ff7f0bba87c969ada3f32fda22ed38a6706d35199d21280c7811b1836040518082815260200191505060405180910390a3505050565b6104f56102b9565b610535576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61053e81610545565b50565b3390565b6001600160a01b03811661058a5760405162461bcd60e51b81526004018080602001828103825260268152602001806105e66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158204521a21f2db993fb32692df828a7f5d2d7ac6c27c83859a3490e744ca53c377764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1ADB05A4 EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0xA64B6E5F EQ PUSH2 0x11C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x15F JUMPI JUMPDEST CALLVALUE ISZERO PUSH2 0x87 JUMPI PUSH1 0x40 DUP1 MLOAD CALLVALUE DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x2DA466A7B24304F47E87FA2E1E5A81B9831CE54FEC19055CE277CA2F39BA42C4 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x87 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x192 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x2B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x128 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x87 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x87 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x19A PUSH2 0x2B9 JUMP JUMPDEST PUSH2 0x1DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x230 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x496E76616C69642072656365697665722061646472657373 PUSH1 0x40 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x266 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0x1BDE73EAD04B7B81FB4790E7E779F1CC42B67CEE2792826931DBFAADA58B0F9 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CE PUSH2 0x541 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x2B9 JUMP JUMPDEST PUSH2 0x325 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x37B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x496E76616C69642072656365697665722061646472657373 PUSH1 0x40 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x496E76616C696420746F6B656E2061646472657373 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP5 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x442 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x49D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x151C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1B89874203FF7F0BBA87C969ADA3F32FDA22ED38A6706D35199D21280C7811B1 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x4F5 PUSH2 0x2B9 JUMP JUMPDEST PUSH2 0x535 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x53E DUP2 PUSH2 0x545 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x58A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E6 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158204521A21F2DB993 0xFB ORIGIN PUSH10 0x2DF828A7F5D2D7AC6C27 0xC8 CODESIZE MSIZE LOG3 0x49 0xE PUSH21 0x4CA53C377764736F6C634300051100320000000000 ",
              "sourceMap": "241:1385:52:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1559:9;:13;1555:66;;1584:32;;;1606:9;1584:32;;;;1594:10;;1584:32;;;;;;;;;;1555:66;241:1385;1203:236;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1203:236:52;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1203:236:52;;;;;;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;:::-;;;;-1:-1:-1;;;;;851:68:142;;;;;;;;;;;;;;1134:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;:::-;;;;;;;;;;;;;;;;;;711:358:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;711:358:52;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;711:358:52;;;;;;;;;;;;;;;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1351:98:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;1203:236:52:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;1298:23:52;;1290:60;;;;;-1:-1:-1;;;1290:60:52;;;;;;;;;;;;-1:-1:-1;;;1290:60:52;;;;;;;;;;;;;;;1355:36;;-1:-1:-1;;;;;1355:27:52;;;:36;;;;;1383:7;;1355:36;;;;1383:7;1355:27;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;1400:35:52;;;;;;;;-1:-1:-1;;;;;1400:35:52;;;;;;;;;;;;;1203:236;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;711:358:52:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;825:23:52;;817:60;;;;;-1:-1:-1;;;817:60:52;;;;;;;;;;;;-1:-1:-1;;;817:60:52;;;;;;;;;;;;;;;-1:-1:-1;;;;;889:20:52;;881:54;;;;;-1:-1:-1;;;881:54:52;;;;;;;;;;;;-1:-1:-1;;;881:54:52;;;;;;;;;;;;;;;955:6;-1:-1:-1;;;;;948:23:52;;972:9;983:7;948:43;;;;;;;;;;;;;-1:-1:-1;;;;;948:43:52;-1:-1:-1;;;;;948:43:52;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;948:43:52;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;948:43:52;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;948:43:52;940:71;;;;;-1:-1:-1;;;940:71:52;;;;;;;;;;;;-1:-1:-1;;;940:71:52;;;;;;;;;;;;;;;1049:6;-1:-1:-1;;;;;1020:45:52;1038:9;-1:-1:-1;;;;;1020:45:52;;1057:7;1020:45;;;;;;;;;;;;;;;;;;711:358;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b",
              "transferRbtc(address,uint256)": "1adb05a4",
              "transferTokens(address,address,uint256)": "a64b6e5f"
            }
          },
          "userdoc": {
            "methods": {
              "transferRbtc(address,uint256)": {
                "notice": "Transfer RBTC."
              },
              "transferTokens(address,address,uint256)": {
                "notice": "Transfer tokens."
              }
            },
            "notice": "This contract stores tokens and rBTC only transfereble by owner, i.e. Sovryn governance."
          }
        }
      },
      "contracts/governance/IFeeSharingProxy.sol": {
        "IFeeSharingProxy": {
          "abi": [
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "_amount",
                  "type": "uint96"
                }
              ],
              "name": "transferTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_loanPoolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "_maxCheckpoints",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                }
              ],
              "name": "withdrawFees",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interfaces are used to cast a contract address into a callable instance.",
            "methods": {},
            "title": "Interface for contract governance/FeeSharingProxy.sol"
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "transferTokens(address,uint96)": "abe979e1",
              "withdraw(address,uint32,address)": "a965b3a9",
              "withdrawFees(address)": "164e68de"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/governance/Staking/Checkpoints.sol": {
        "Checkpoints": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "ContractCodeHashAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "ContractCodeHashRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "fromDelegate",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "toDelegate",
                  "type": "address"
                }
              ],
              "name": "DelegateChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegate",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "previousBalance",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newBalance",
                  "type": "uint256"
                }
              ],
              "name": "DelegateStakeChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "previousDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountStaked",
                  "type": "uint256"
                }
              ],
              "name": "ExtendedStakingDuration",
              "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": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "isGovernance",
                  "type": "bool"
                }
              ],
              "name": "StakingWithdrawn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "totalStaked",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensUnlocked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "VestingTokensWithdrawn",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DELEGATION_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DOMAIN_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_DURATION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_VOTING_WEIGHT",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOVToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "WEIGHT_FACTOR",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "allUnlocked",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "delegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "delegates",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharing",
              "outputs": [
                {
                  "internalType": "contract IFeeSharingProxy",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kickoffTS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "newStakingContract",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numDelegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numTotalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numUserStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "totalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "userStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "vestingCodeHashes",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingRegistryLogic",
              "outputs": [
                {
                  "internalType": "contract VestingRegistryLogic",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "vestingWhitelist",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "weightScaling",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Checkpoints contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c0604052600a608081905269534f565374616b696e6760b01b60a090815261002b91600291906100a9565b506005805460ff19169055600d80546001600160a01b0316600360a01b17905560006100556100a4565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610141565b335b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100ea57805160ff1916838001178555610117565b82800160010185558215610117579182015b828111156101175782518255916020019190600101906100fc565b50610123929150610127565b5090565b6100a691905b80821115610123576000815560010161012d565b610a6a806101506000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80639436e7d4116100de578063b1724b4611610097578063db27ec1811610071578063db27ec181461030a578063dfb267c21461031d578063e7a324dc14610330578063f2fde38b146103385761018d565b8063b1724b46146102f2578063bf626ec1146102fa578063d27569e7146103025761018d565b80639436e7d41461029457806394c2ce58146102b45780639929e886146102c7578063a58848c5146102cf578063adae9002146102d7578063ae81dfe4146102ea5761018d565b806327dd1b001161014b5780636b6fde0e116101255780636b6fde0e1461025e5780637ecebe00146102715780638da5cb5b146102845780638f32d59b1461028c5761018d565b806327dd1b001461020a578063429b62e51461022a57806368cefccc1461023d5761018d565b8062073f991461019257806303a18fa3146101b057806307392cc0146101c5578063104932cf146101e557806317748adc146101ed57806320606b7014610202575b600080fd5b61019a61034d565b6040516101a7919061093a565b60405180910390f35b6101b8610353565b6040516101a79190610948565b6101d86101d3366004610730565b610362565b6040516101a7919061092c565b6101b8610377565b6101f5610386565b6040516101a791906109a6565b61019a61038b565b61021d6102183660046106a9565b6103a2565b6040516101a7919061091e565b6101d8610238366004610683565b6103c8565b61025061024b3660046106e3565b6103dd565b6040516101a7929190610984565b61025061026c3660046106e3565b610419565b61019a61027f366004610683565b610455565b61021d610467565b6101d8610476565b6102a76102a2366004610730565b61049a565b6040516101a79190610976565b6102a76102c23660046106a9565b6104b2565b6101d86104d5565b6101b86104de565b6101d86102e5366004610683565b6104ed565b61021d610502565b61019a610516565b6101f561051e565b6101f5610534565b6102a76103183660046106a9565b610539565b61025061032b36600461074e565b61055c565b61019a610592565b61034b610346366004610683565b61059e565b005b60015481565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b6011546001600160a01b031681565b600981565b60405161039790610908565b604051809103902081565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b600f6020526000908152604090205460ff1681565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600c6020526000908152604090205481565b6000546001600160a01b031690565b600080546001600160a01b031661048b6105d7565b6001600160a01b031614905090565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b60055460ff1681565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b600d54600160a01b90046001600160601b031681565b600a81565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160601b031682565b60405161039790610913565b6105a6610476565b6105cb5760405162461bcd60e51b81526004016105c290610966565b60405180910390fd5b6105d4816105db565b50565b3390565b6001600160a01b0381166106015760405162461bcd60e51b81526004016105c290610956565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b803561066781610a01565b92915050565b803561066781610a15565b803561066781610a1e565b60006020828403121561069557600080fd5b60006106a1848461065c565b949350505050565b600080604083850312156106bc57600080fd5b60006106c8858561065c565b92505060206106d98582860161066d565b9150509250929050565b6000806000606084860312156106f857600080fd5b6000610704868661065c565b93505060206107158682870161066d565b925050604061072686828701610678565b9150509250925092565b60006020828403121561074257600080fd5b60006106a1848461066d565b6000806040838503121561076157600080fd5b600061076d858561066d565b92505060206106d985828601610678565b610787816109c2565b82525050565b610787816109cd565b610787816109d2565b610787816109f6565b60006107b56026836109b4565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006107fd6043836109bd565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000610868600c836109b4565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000610890604b836109bd565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e7460208201526a323536206578706972792960a81b6040820152604b0192915050565b610787816109e1565b610787816109ea565b6000610667826107f0565b600061066782610883565b60208101610667828461077e565b60208101610667828461078d565b602081016106678284610796565b60208101610667828461079f565b60208082528101610667816107a8565b602080825281016106678161085b565b6020810161066782846108f6565b6040810161099282856108f6565b61099f60208301846108ff565b9392505050565b6020810161066782846108ff565b90815260200190565b919050565b6000610667826109d5565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b6001600160601b031690565b6000610667826109c2565b610a0a816109c2565b81146105d457600080fd5b610a0a816109d2565b610a0a816109e156fea365627a7a72315820c9c96a256540ed30a2c4dab695782c46bc1c0b7a6ff77380de60e47f1f7869376c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH10 0x534F565374616B696E67 PUSH1 0xB0 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH2 0x2B SWAP2 PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xA9 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH1 0x0 PUSH2 0x55 PUSH2 0xA4 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x141 JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xEA JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x117 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x117 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x117 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xFC JUMP JUMPDEST POP PUSH2 0x123 SWAP3 SWAP2 POP PUSH2 0x127 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0xA6 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x123 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x12D JUMP JUMPDEST PUSH2 0xA6A DUP1 PUSH2 0x150 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9436E7D4 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xB1724B46 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDB27EC18 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x338 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0xB1724B46 EQ PUSH2 0x2F2 JUMPI DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0x302 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0x2CF JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0x2EA JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x27DD1B00 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x6B6FDE0E GT PUSH2 0x125 JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x28C JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x23D JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x17748ADC EQ PUSH2 0x1ED JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x202 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x93A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B8 PUSH2 0x353 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x362 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x92C JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x386 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x9A6 JUMP JUMPDEST PUSH2 0x19A PUSH2 0x38B JUMP JUMPDEST PUSH2 0x21D PUSH2 0x218 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x3A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x91E JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x238 CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x3C8 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x24B CALLDATASIZE PUSH1 0x4 PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP3 SWAP2 SWAP1 PUSH2 0x984 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x26C CALLDATASIZE PUSH1 0x4 PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x419 JUMP JUMPDEST PUSH2 0x19A PUSH2 0x27F CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST PUSH2 0x21D PUSH2 0x467 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x476 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x2A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x49A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x4B2 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x4D5 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x4DE JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x2E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x21D PUSH2 0x502 JUMP JUMPDEST PUSH2 0x19A PUSH2 0x516 JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x51E JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x534 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0x74E JUMP JUMPDEST PUSH2 0x55C JUMP JUMPDEST PUSH2 0x19A PUSH2 0x592 JUMP JUMPDEST PUSH2 0x34B PUSH2 0x346 CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x59E JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x397 SWAP1 PUSH2 0x908 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x48B PUSH2 0x5D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x397 SWAP1 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x5A6 PUSH2 0x476 JUMP JUMPDEST PUSH2 0x5CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5C2 SWAP1 PUSH2 0x966 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5D4 DUP2 PUSH2 0x5DB JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x601 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5C2 SWAP1 PUSH2 0x956 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x667 DUP2 PUSH2 0xA01 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x667 DUP2 PUSH2 0xA15 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x667 DUP2 PUSH2 0xA1E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A1 DUP5 DUP5 PUSH2 0x65C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6C8 DUP6 DUP6 PUSH2 0x65C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6D9 DUP6 DUP3 DUP7 ADD PUSH2 0x66D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x704 DUP7 DUP7 PUSH2 0x65C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x715 DUP7 DUP3 DUP8 ADD PUSH2 0x66D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x726 DUP7 DUP3 DUP8 ADD PUSH2 0x678 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A1 DUP5 DUP5 PUSH2 0x66D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x76D DUP6 DUP6 PUSH2 0x66D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6D9 DUP6 DUP3 DUP7 ADD PUSH2 0x678 JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9C2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9CD JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9D2 JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B5 PUSH1 0x26 DUP4 PUSH2 0x9B4 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7FD PUSH1 0x43 DUP4 PUSH2 0x9BD JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x868 PUSH1 0xC DUP4 PUSH2 0x9B4 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x890 PUSH1 0x4B DUP4 PUSH2 0x9BD JUMP JUMPDEST PUSH32 0x44656C65676174696F6E28616464726573732064656C6567617465652C75696E DUP2 MSTORE PUSH32 0x74323536206C6F636B446174652C75696E74323536206E6F6E63652C75696E74 PUSH1 0x20 DUP3 ADD MSTORE PUSH11 0x3235362065787069727929 PUSH1 0xA8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x4B ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9EA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x7F0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x883 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x77E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x78D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x796 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x79F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x667 DUP2 PUSH2 0x7A8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x667 DUP2 PUSH2 0x85B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x8F6 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x992 DUP3 DUP6 PUSH2 0x8F6 JUMP JUMPDEST PUSH2 0x99F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x8FF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x8FF JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x9D5 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x9C2 JUMP JUMPDEST PUSH2 0xA0A DUP2 PUSH2 0x9C2 JUMP JUMPDEST DUP2 EQ PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0A DUP2 PUSH2 0x9D2 JUMP JUMPDEST PUSH2 0xA0A DUP2 PUSH2 0x9E1 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xC9 0xC9 PUSH11 0x256540ED30A2C4DAB69578 0x2C CHAINID 0xBC SHR SIGNEXTEND PUSH27 0x6FF77380DE60E47F1F7869376C6578706572696D656E74616CF564 PUSH20 0x6F6C634300051100400000000000000000000000 ",
              "sourceMap": "1973:26:59:-;259:8398:54;1973:26:59;;259:8398:54;1973:26:59;;;-1:-1:-1;;;1973:26:59;;;;;;;;;;:::i;:::-;-1:-1:-1;2262:31:59;;;-1:-1:-1;;2262:31:59;;;5091:52;;;-1:-1:-1;;;;;5091:52:59;-1:-1:-1;;;5091:52:59;;;-1:-1:-1;697:12:142;:10;:12::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;259:8398:54;;780:87:137;853:10;780:87;;:::o;259:8398:54:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;259:8398:54;;;-1:-1:-1;259:8398:54;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061018d5760003560e01c80639436e7d4116100de578063b1724b4611610097578063db27ec1811610071578063db27ec181461030a578063dfb267c21461031d578063e7a324dc14610330578063f2fde38b146103385761018d565b8063b1724b46146102f2578063bf626ec1146102fa578063d27569e7146103025761018d565b80639436e7d41461029457806394c2ce58146102b45780639929e886146102c7578063a58848c5146102cf578063adae9002146102d7578063ae81dfe4146102ea5761018d565b806327dd1b001161014b5780636b6fde0e116101255780636b6fde0e1461025e5780637ecebe00146102715780638da5cb5b146102845780638f32d59b1461028c5761018d565b806327dd1b001461020a578063429b62e51461022a57806368cefccc1461023d5761018d565b8062073f991461019257806303a18fa3146101b057806307392cc0146101c5578063104932cf146101e557806317748adc146101ed57806320606b7014610202575b600080fd5b61019a61034d565b6040516101a7919061093a565b60405180910390f35b6101b8610353565b6040516101a79190610948565b6101d86101d3366004610730565b610362565b6040516101a7919061092c565b6101b8610377565b6101f5610386565b6040516101a791906109a6565b61019a61038b565b61021d6102183660046106a9565b6103a2565b6040516101a7919061091e565b6101d8610238366004610683565b6103c8565b61025061024b3660046106e3565b6103dd565b6040516101a7929190610984565b61025061026c3660046106e3565b610419565b61019a61027f366004610683565b610455565b61021d610467565b6101d8610476565b6102a76102a2366004610730565b61049a565b6040516101a79190610976565b6102a76102c23660046106a9565b6104b2565b6101d86104d5565b6101b86104de565b6101d86102e5366004610683565b6104ed565b61021d610502565b61019a610516565b6101f561051e565b6101f5610534565b6102a76103183660046106a9565b610539565b61025061032b36600461074e565b61055c565b61019a610592565b61034b610346366004610683565b61059e565b005b60015481565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b6011546001600160a01b031681565b600981565b60405161039790610908565b604051809103902081565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b600f6020526000908152604090205460ff1681565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600c6020526000908152604090205481565b6000546001600160a01b031690565b600080546001600160a01b031661048b6105d7565b6001600160a01b031614905090565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b60055460ff1681565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b600d54600160a01b90046001600160601b031681565b600a81565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160601b031682565b60405161039790610913565b6105a6610476565b6105cb5760405162461bcd60e51b81526004016105c290610966565b60405180910390fd5b6105d4816105db565b50565b3390565b6001600160a01b0381166106015760405162461bcd60e51b81526004016105c290610956565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b803561066781610a01565b92915050565b803561066781610a15565b803561066781610a1e565b60006020828403121561069557600080fd5b60006106a1848461065c565b949350505050565b600080604083850312156106bc57600080fd5b60006106c8858561065c565b92505060206106d98582860161066d565b9150509250929050565b6000806000606084860312156106f857600080fd5b6000610704868661065c565b93505060206107158682870161066d565b925050604061072686828701610678565b9150509250925092565b60006020828403121561074257600080fd5b60006106a1848461066d565b6000806040838503121561076157600080fd5b600061076d858561066d565b92505060206106d985828601610678565b610787816109c2565b82525050565b610787816109cd565b610787816109d2565b610787816109f6565b60006107b56026836109b4565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006107fd6043836109bd565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000610868600c836109b4565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000610890604b836109bd565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e7460208201526a323536206578706972792960a81b6040820152604b0192915050565b610787816109e1565b610787816109ea565b6000610667826107f0565b600061066782610883565b60208101610667828461077e565b60208101610667828461078d565b602081016106678284610796565b60208101610667828461079f565b60208082528101610667816107a8565b602080825281016106678161085b565b6020810161066782846108f6565b6040810161099282856108f6565b61099f60208301846108ff565b9392505050565b6020810161066782846108ff565b90815260200190565b919050565b6000610667826109d5565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b6001600160601b031690565b6000610667826109c2565b610a0a816109c2565b81146105d457600080fd5b610a0a816109d2565b610a0a816109e156fea365627a7a72315820c9c96a256540ed30a2c4dab695782c46bc1c0b7a6ff77380de60e47f1f7869376c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9436E7D4 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xB1724B46 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDB27EC18 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x338 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0xB1724B46 EQ PUSH2 0x2F2 JUMPI DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0x302 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0x2CF JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0x2EA JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x27DD1B00 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x6B6FDE0E GT PUSH2 0x125 JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x28C JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x23D JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x17748ADC EQ PUSH2 0x1ED JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x202 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x93A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B8 PUSH2 0x353 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x362 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x92C JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x386 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x9A6 JUMP JUMPDEST PUSH2 0x19A PUSH2 0x38B JUMP JUMPDEST PUSH2 0x21D PUSH2 0x218 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x3A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x91E JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x238 CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x3C8 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x24B CALLDATASIZE PUSH1 0x4 PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP3 SWAP2 SWAP1 PUSH2 0x984 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x26C CALLDATASIZE PUSH1 0x4 PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x419 JUMP JUMPDEST PUSH2 0x19A PUSH2 0x27F CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST PUSH2 0x21D PUSH2 0x467 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x476 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x2A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x49A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x4B2 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x4D5 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x4DE JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x2E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x21D PUSH2 0x502 JUMP JUMPDEST PUSH2 0x19A PUSH2 0x516 JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x51E JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x534 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0x74E JUMP JUMPDEST PUSH2 0x55C JUMP JUMPDEST PUSH2 0x19A PUSH2 0x592 JUMP JUMPDEST PUSH2 0x34B PUSH2 0x346 CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x59E JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x397 SWAP1 PUSH2 0x908 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x48B PUSH2 0x5D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x397 SWAP1 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x5A6 PUSH2 0x476 JUMP JUMPDEST PUSH2 0x5CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5C2 SWAP1 PUSH2 0x966 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5D4 DUP2 PUSH2 0x5DB JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x601 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5C2 SWAP1 PUSH2 0x956 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x667 DUP2 PUSH2 0xA01 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x667 DUP2 PUSH2 0xA15 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x667 DUP2 PUSH2 0xA1E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A1 DUP5 DUP5 PUSH2 0x65C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6C8 DUP6 DUP6 PUSH2 0x65C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6D9 DUP6 DUP3 DUP7 ADD PUSH2 0x66D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x704 DUP7 DUP7 PUSH2 0x65C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x715 DUP7 DUP3 DUP8 ADD PUSH2 0x66D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x726 DUP7 DUP3 DUP8 ADD PUSH2 0x678 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A1 DUP5 DUP5 PUSH2 0x66D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x76D DUP6 DUP6 PUSH2 0x66D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6D9 DUP6 DUP3 DUP7 ADD PUSH2 0x678 JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9C2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9CD JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9D2 JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B5 PUSH1 0x26 DUP4 PUSH2 0x9B4 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7FD PUSH1 0x43 DUP4 PUSH2 0x9BD JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x868 PUSH1 0xC DUP4 PUSH2 0x9B4 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x890 PUSH1 0x4B DUP4 PUSH2 0x9BD JUMP JUMPDEST PUSH32 0x44656C65676174696F6E28616464726573732064656C6567617465652C75696E DUP2 MSTORE PUSH32 0x74323536206C6F636B446174652C75696E74323536206E6F6E63652C75696E74 PUSH1 0x20 DUP3 ADD MSTORE PUSH11 0x3235362065787069727929 PUSH1 0xA8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x4B ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9EA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x7F0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x883 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x77E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x78D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x796 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x79F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x667 DUP2 PUSH2 0x7A8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x667 DUP2 PUSH2 0x85B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x8F6 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x992 DUP3 DUP6 PUSH2 0x8F6 JUMP JUMPDEST PUSH2 0x99F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x8FF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x8FF JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x9D5 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x9C2 JUMP JUMPDEST PUSH2 0xA0A DUP2 PUSH2 0x9C2 JUMP JUMPDEST DUP2 EQ PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0A DUP2 PUSH2 0x9D2 JUMP JUMPDEST PUSH2 0xA0A DUP2 PUSH2 0x9E1 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xC9 0xC9 PUSH11 0x256540ED30A2C4DAB69578 0x2C CHAINID 0xBC SHR SIGNEXTEND PUSH27 0x6FF77380DE60E47F1F7869376C6578706572696D656E74616CF564 PUSH20 0x6F6C634300051100400000000000000000000000 ",
              "sourceMap": "259:8398:54:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;259:8398:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:24:59;;;:::i;:::-;;;;;;;;;;;;;;;;4986:34;;;:::i;:::-;;;;;;;;5691:49;;;;;;;;;:::i;:::-;;;;;;;;5786:48;;;:::i;1160:44::-;;;:::i;:::-;;;;;;;;2358:122;;;:::i;2115:64::-;;;;;;;;;:::i;:::-;;;;;;;;5570:38;;;;;;;;;:::i;4346:99::-;;;;;;;;;:::i;:::-;;;;;;;;;3804:103;;;;;;;;;:::i;4774:41::-;;;;;;;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;3472:60:59:-;;;;;;;;;:::i;:::-;;;;;;;;4062:83;;;;;;;;;:::i;2262:31::-;;;:::i;2040:22::-;;;:::i;5310:48::-;;;;;;;;;:::i;2805:33::-;;;:::i;1509:48::-;;;:::i;5091:52::-;;;:::i;1409:41::-;;;:::i;4587:79::-;;;;;;;;;:::i;3264:80::-;;;;;;;;;:::i;2566:134::-;;;:::i;1351:98:142:-;;;;;;;;;:::i;:::-;;1945:24:59;;;;:::o;4986:34::-;;;-1:-1:-1;;;;;4986:34:59;;:::o;5691:49::-;;;;;;;;;;;;;;;:::o;5786:48::-;;;-1:-1:-1;;;;;5786:48:59;;:::o;1160:44::-;1203:1;1160:44;:::o;2358:122::-;2400:80;;;;;;;;;;;;;;2358:122;:::o;2115:64::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2115:64:59;;:::o;5570:38::-;;;;;;;;;;;;;;;:::o;4346:99::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4346:99:59;;:::o;3804:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3804:103:59;;:::o;4774:41::-;;;;;;;;;;;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;3472:60:59:-;;;;;;;;;;;;;;;:::o;4062:83::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2262:31::-;;;;;;:::o;2040:22::-;;;-1:-1:-1;;;;;2040:22:59;;:::o;5310:48::-;;;;;;;;;;;;;;;:::o;2805:33::-;;;;;;-1:-1:-1;;;;;2805:33:59;;:::o;1509:48::-;1548:9;1509:48;:::o;5091:52::-;;;-1:-1:-1;;;5091:52:59;;-1:-1:-1;;;;;5091:52:59;;:::o;1409:41::-;1448:2;1409:41;:::o;4587:79::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3264:80::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3264:80:59;;:::o;2566:134::-;2612:88;;;;;;1351:98:142;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;142:130;209:20;;234:33;209:20;234:33;;416:128;482:20;;507:32;482:20;507:32;;551:241;;655:2;643:9;634:7;630:23;626:32;623:2;;;671:1;668;661:12;623:2;706:1;723:53;768:7;748:9;723:53;;;713:63;617:175;-1:-1;;;;617:175;799:366;;;920:2;908:9;899:7;895:23;891:32;888:2;;;936:1;933;926:12;888:2;971:1;988:53;1033:7;1013:9;988:53;;;978:63;;950:97;1078:2;1096:53;1141:7;1132:6;1121:9;1117:22;1096:53;;;1086:63;;1057:98;882:283;;;;;;1172:489;;;;1309:2;1297:9;1288:7;1284:23;1280:32;1277:2;;;1325:1;1322;1315:12;1277:2;1360:1;1377:53;1422:7;1402:9;1377:53;;;1367:63;;1339:97;1467:2;1485:53;1530:7;1521:6;1510:9;1506:22;1485:53;;;1475:63;;1446:98;1575:2;1593:52;1637:7;1628:6;1617:9;1613:22;1593:52;;;1583:62;;1554:97;1271:390;;;;;;1668:241;;1772:2;1760:9;1751:7;1747:23;1743:32;1740:2;;;1788:1;1785;1778:12;1740:2;1823:1;1840:53;1885:7;1865:9;1840:53;;2164:364;;;2284:2;2272:9;2263:7;2259:23;2255:32;2252:2;;;2300:1;2297;2290:12;2252:2;2335:1;2352:53;2397:7;2377:9;2352:53;;;2342:63;;2314:97;2442:2;2460:52;2504:7;2495:6;2484:9;2480:22;2460:52;;2535:113;2618:24;2636:5;2618:24;;;2613:3;2606:37;2600:48;;;2655:104;2732:21;2747:5;2732:21;;2766:113;2849:24;2867:5;2849:24;;2886:158;2985:53;3032:5;2985:53;;3430:375;;3590:67;3654:2;3649:3;3590:67;;;3690:34;3670:55;;-1:-1;;;3754:2;3745:12;;3738:30;3796:2;3787:12;;3576:229;-1:-1;;3576:229;3814:477;;3992:85;4074:2;4069:3;3992:85;;;4110:34;4090:55;;4179:34;4174:2;4165:12;;4158:56;-1:-1;;;4243:2;4234:12;;4227:27;4282:2;4273:12;;3978:313;-1:-1;;3978:313;4300:312;;4460:67;4524:2;4519:3;4460:67;;;-1:-1;;;4540:35;;4603:2;4594:12;;4446:166;-1:-1;;4446:166;4621:485;;4799:85;4881:2;4876:3;4799:85;;;4917:34;4897:55;;4986:34;4981:2;4972:12;;4965:56;-1:-1;;;5050:2;5041:12;;5034:35;5097:2;5088:12;;4785:321;-1:-1;;4785:321;5234:110;5315:23;5332:5;5315:23;;5351:110;5432:23;5449:5;5432:23;;5468:372;;5667:148;5811:3;5667:148;;5847:372;;6046:148;6190:3;6046:148;;6226:213;6344:2;6329:18;;6358:71;6333:9;6402:6;6358:71;;6446:201;6558:2;6543:18;;6572:65;6547:9;6610:6;6572:65;;6654:213;6772:2;6757:18;;6786:71;6761:9;6830:6;6786:71;;6874:245;7008:2;6993:18;;7022:87;6997:9;7082:6;7022:87;;7678:407;7869:2;7883:47;;;7854:18;;7944:131;7854:18;7944:131;;8092:407;8283:2;8297:47;;;8268:18;;8358:131;8268:18;8358:131;;8726:209;8842:2;8827:18;;8856:69;8831:9;8898:6;8856:69;;8942:316;9084:2;9069:18;;9098:69;9073:9;9140:6;9098:69;;;9178:70;9244:2;9233:9;9229:18;9220:6;9178:70;;;9055:203;;;;;;9265:209;9381:2;9366:18;;9395:69;9370:9;9437:6;9395:69;;9482:163;9585:19;;;9634:4;9625:14;;9578:67;9654:145;9790:3;9768:31;-1:-1;9768:31;9807:91;;9869:24;9887:5;9869:24;;9905:85;9971:13;9964:21;;9947:43;9997:72;10059:5;10042:27;10076:121;-1:-1;;;;;10138:54;;10121:76;10283:88;10355:10;10344:22;;10327:44;10378:104;-1:-1;;;;;10439:38;;10422:60;10489:153;;10584:53;10631:5;10584:53;;11434:117;11503:24;11521:5;11503:24;;;11496:5;11493:35;11483:2;;11542:1;11539;11532:12;11558:117;11627:24;11645:5;11627:24;;11806:115;11874:23;11891:5;11874:23;"
            },
            "methodIdentifiers": {
              "DELEGATION_TYPEHASH()": "e7a324dc",
              "DOMAIN_TYPEHASH()": "20606b70",
              "MAX_DURATION()": "b1724b46",
              "MAX_VOTING_WEIGHT()": "17748adc",
              "SOVToken()": "a58848c5",
              "WEIGHT_FACTOR()": "d27569e7",
              "admins(address)": "429b62e5",
              "allUnlocked()": "9929e886",
              "delegateStakingCheckpoints(address,uint256,uint32)": "6b6fde0e",
              "delegates(address,uint256)": "27dd1b00",
              "feeSharing()": "03a18fa3",
              "isOwner()": "8f32d59b",
              "kickoffTS()": "00073f99",
              "newStakingContract()": "ae81dfe4",
              "nonces(address)": "7ecebe00",
              "numDelegateStakingCheckpoints(address,uint256)": "94c2ce58",
              "numTotalStakingCheckpoints(uint256)": "9436e7d4",
              "numUserStakingCheckpoints(address,uint256)": "db27ec18",
              "owner()": "8da5cb5b",
              "totalStakingCheckpoints(uint256,uint32)": "dfb267c2",
              "transferOwnership(address)": "f2fde38b",
              "userStakingCheckpoints(address,uint256,uint32)": "68cefccc",
              "vestingCodeHashes(bytes32)": "07392cc0",
              "vestingRegistryLogic()": "104932cf",
              "vestingWhitelist(address)": "adae9002",
              "weightScaling()": "bf626ec1"
            }
          },
          "userdoc": {
            "methods": {},
            "notice": "Increases and decreases storage values for users, delegatees and total daily stake."
          }
        }
      },
      "contracts/governance/Staking/IStaking.sol": {
        "IStaking": {
          "abi": [
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint32",
                  "name": "blockNumber",
                  "type": "uint32"
                },
                {
                  "internalType": "uint256",
                  "name": "time",
                  "type": "uint256"
                }
              ],
              "name": "getPriorTotalVotingPower",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                }
              ],
              "name": "getPriorVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                }
              ],
              "name": "getPriorWeightedStake",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "stakeFor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "stake",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "intervalLength",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "stakeFor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "stakesBySchedule",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                }
              ],
              "name": "timestampToLockDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockDate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interfaces are used to cast a contract address into a callable instance.",
            "methods": {},
            "title": "Interface for contract governance/Staking/Staking.sol"
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getPriorTotalVotingPower(uint32,uint256)": "2522d7ba",
              "getPriorVotes(address,uint256,uint256)": "836eebee",
              "getPriorWeightedStake(address,uint256,uint256)": "37e6b1c1",
              "stake(uint96,uint256,address,address)": "25629ec0",
              "stakesBySchedule(uint256,uint256,uint256,uint256,address,address)": "4b2fea1e",
              "timestampToLockDate(uint256)": "72ec9795"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/governance/Staking/SafeMath96.sol": {
        "SafeMath96": {
          "abi": [],
          "devdoc": {
            "details": "SafeMath96 uses uint96, unsigned integers of 96 bits length, so every integer from 0 to 2^96-1 can be operated. * Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. SafeMath restores this intuition by reverting the transaction when an operation overflows. * Using this contract instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.",
            "methods": {},
            "title": "SafeMath96 contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50604c80601d6000396000f3fe6080604052600080fdfea365627a7a72315820fe9fddfd7043ebfaaea6deca920715acc1417c6e6aa876c0027e766bd72390df6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4C DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 INVALID SWAP16 0xDD REVERT PUSH17 0x43EBFAAEA6DECA920715ACC1417C6E6AA8 PUSH23 0xC0027E766BD72390DF6C6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "774:2440:56:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;774:2440:56;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea365627a7a72315820fe9fddfd7043ebfaaea6deca920715acc1417c6e6aa876c0027e766bd72390df6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 INVALID SWAP16 0xDD REVERT PUSH17 0x43EBFAAEA6DECA920715ACC1417C6E6AA8 PUSH23 0xC0027E766BD72390DF6C6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "774:2440:56:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "Improved Solidity's arithmetic operations with added overflow checks."
          }
        }
      },
      "contracts/governance/Staking/Staking.sol": {
        "Staking": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "ContractCodeHashAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "ContractCodeHashRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "fromDelegate",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "toDelegate",
                  "type": "address"
                }
              ],
              "name": "DelegateChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegate",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "previousBalance",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newBalance",
                  "type": "uint256"
                }
              ],
              "name": "DelegateStakeChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "previousDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountStaked",
                  "type": "uint256"
                }
              ],
              "name": "ExtendedStakingDuration",
              "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": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "isGovernance",
                  "type": "bool"
                }
              ],
              "name": "StakingWithdrawn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "totalStaked",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensUnlocked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "VestingTokensWithdrawn",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DELEGATION_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DOMAIN_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_DURATION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_VOTING_WEIGHT",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOVToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "WEIGHT_FACTOR",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "allUnlocked",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "balance",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startDate",
                  "type": "uint256"
                }
              ],
              "name": "computeWeightByDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "weight",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "lockDate",
                  "type": "uint256"
                }
              ],
              "name": "delegate",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "lockDate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "delegateBySig",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "delegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "delegates",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "previousLock",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                }
              ],
              "name": "extendStakingDuration",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharing",
              "outputs": [
                {
                  "internalType": "contract IFeeSharingProxy",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedTS",
                  "type": "uint256"
                }
              ],
              "name": "getCurrentStakedUntil",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "getCurrentVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "getPriorStakeByDateForDelegatee",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "getPriorTotalStakesForDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint32",
                  "name": "blockNumber",
                  "type": "uint32"
                },
                {
                  "internalType": "uint256",
                  "name": "time",
                  "type": "uint256"
                }
              ],
              "name": "getPriorTotalVotingPower",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "totalVotingPower",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "getPriorUserStakeByDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                }
              ],
              "name": "getPriorVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "votes",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                }
              ],
              "name": "getPriorWeightedStake",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "votes",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "getStakes",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "dates",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint96[]",
                  "name": "stakes",
                  "type": "uint96[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                }
              ],
              "name": "getWithdrawAmounts",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                },
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "governanceWithdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "governanceWithdrawVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kickoffTS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "migrateToNewStakingContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "newStakingContract",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numDelegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numTotalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numUserStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "receiveApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_feeSharing",
                  "type": "address"
                }
              ],
              "name": "setFeeSharing",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newStakingContract",
                  "type": "address"
                }
              ],
              "name": "setNewStakingContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingRegistryProxy",
                  "type": "address"
                }
              ],
              "name": "setVestingRegistry",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "_weightScaling",
                  "type": "uint96"
                }
              ],
              "name": "setWeightScaling",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "stakeFor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "stake",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "stakeFor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "stakeWithApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "intervalLength",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "stakeFor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "stakesBySchedule",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                }
              ],
              "name": "timestampToLockDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockDate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "totalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "unlockAllTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "userStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "vestingCodeHashes",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingRegistryLogic",
              "outputs": [
                {
                  "internalType": "contract VestingRegistryLogic",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "vestingWhitelist",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "weightScaling",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startDate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "weightedStakeByDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "power",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "balanceOf(address)": {
                "details": "Iterate checkpoints adding up stakes.",
                "params": {
                  "account": "The address of the account to get the balance of."
                },
                "return": "The number of tokens held."
              },
              "computeWeightByDate(uint256,uint256)": {
                "params": {
                  "date": "The unlocking date.",
                  "startDate": "We compute the weight for the tokens staked until 'date' on 'startDate'."
                }
              },
              "delegate(address,uint256)": {
                "params": {
                  "delegatee": "The address to delegate votes to.",
                  "lockDate": "the date if the position to delegate."
                }
              },
              "delegateBySig(address,uint256,uint256,uint256,uint8,bytes32,bytes32)": {
                "details": "The signature needs to be broken up into 3 parameters, known as v, r and s: const r = '0x' + sig.substring(2).substring(0, 64); const s = '0x' + sig.substring(2).substring(64, 128); const v = '0x' + sig.substring(2).substring(128, 130);",
                "params": {
                  "delegatee": "The address to delegate votes to.",
                  "expiry": "The time at which to expire the signature.",
                  "lockDate": "The date until which the position is locked.",
                  "nonce": "The contract state required to match the signature.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "v": "The recovery byte of the signature."
                }
              },
              "extendStakingDuration(uint256,uint256)": {
                "params": {
                  "previousLock": "The old unlocking timestamp.",
                  "until": "The new unlocking timestamp in seconds."
                }
              },
              "getCurrentStakedUntil(uint256)": {
                "params": {
                  "lockedTS": "The timestamp to get the staked tokens for."
                }
              },
              "getCurrentVotes(address)": {
                "details": "This is a wrapper to simplify arguments. The actual computation is performed on WeightedStaking parent contract.",
                "params": {
                  "account": "The address to get votes balance."
                },
                "return": "The number of current votes for a user account."
              },
              "getPriorStakeByDateForDelegatee(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation. TODO: WeightedStaking::getPriorStakeByDateForDelegatee should probably better be internal instead of a public function.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at."
                },
                "return": "The number of votes the account had as of the given block."
              },
              "getPriorTotalStakesForDate(uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation. TODO: WeightedStaking::getPriorTotalStakesForDate should probably better be internal instead of a public function.",
                "params": {
                  "blockNumber": "The block number to get the vote balance at.",
                  "date": "The date to check the stakes for."
                },
                "return": "The number of votes the account had as of the given block."
              },
              "getPriorTotalVotingPower(uint32,uint256)": {
                "params": {
                  "time": "The timestamp for which to calculate the total voting power."
                },
                "return": "The total voting power at the given time."
              },
              "getPriorUserStakeByDate(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at.",
                  "date": "The lock date."
                },
                "return": "The number of votes the account had as of the given block."
              },
              "getPriorVotes(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation.     Used for Voting, not for fee sharing.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at."
                },
                "return": "The number of votes the delegatee had as of the given block."
              },
              "getPriorWeightedStake(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation.     Used for fee sharing, not voting. TODO: WeightedStaking::getPriorWeightedStake is using the variable name \"votes\" to add up token stake, and that could be misleading.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at."
                },
                "return": "The weighted stake the account had as of the given block."
              },
              "getStakes(address)": {
                "params": {
                  "account": "The address to get stakes."
                },
                "return": "The arrays of dates and stakes."
              },
              "getWithdrawAmounts(uint96,uint256)": {
                "params": {
                  "amount": "The number of tokens to withdraw.",
                  "until": "The date until which the tokens were staked."
                }
              },
              "governanceWithdraw(uint96,uint256,address)": {
                "details": "Can be invoked only by whitelisted contract passed to governanceWithdrawVesting",
                "params": {
                  "amount": "The number of tokens to withdraw.",
                  "receiver": "The receiver of the tokens. If not specified, send to the msg.sender",
                  "until": "The date until which the tokens were staked."
                }
              },
              "governanceWithdrawVesting(address,address)": {
                "details": "Can be invoked only by whitelisted contract passed to governanceWithdrawVesting.",
                "params": {
                  "receiver": "The receiver of the tokens. If not specified, send to the msg.sender",
                  "vesting": "The address of Vesting contract."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "migrateToNewStakingContract()": {
                "details": "Staking contract needs to be set before by the owner. Currently not implemented, just needed for the interface.     In case it's needed at some point in the future,     the implementation needs to be changed first."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "receiveApproval(address,uint256,address,bytes)": {
                "params": {
                  "_data": "The data will be used for low level call."
                }
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "setFeeSharing(address)": {
                "params": {
                  "_feeSharing": "The address of FeeSharingProxy contract."
                }
              },
              "setNewStakingContract(address)": {
                "details": "Doesn't have any influence as long as migrateToNewStakingContract is not implemented.",
                "params": {
                  "_newStakingContract": "The address of the new staking contract."
                }
              },
              "setVestingRegistry(address)": {
                "params": {
                  "_vestingRegistryProxy": "the address of vesting registry proxy contract"
                }
              },
              "setWeightScaling(uint96)": {
                "params": {
                  "_weightScaling": "The weight scaling."
                }
              },
              "stake(uint96,uint256,address,address)": {
                "params": {
                  "amount": "The number of tokens to stake.",
                  "delegatee": "The address of the delegatee or 0x0 if there is none.",
                  "stakeFor": "The address to stake the tokens for or 0x0 if staking for oneself.",
                  "until": "Timestamp indicating the date until which to stake."
                }
              },
              "stakeWithApproval(address,uint96,uint256,address,address)": {
                "details": "This function will be invoked from receiveApprovalSOV.approveAndCall -> this.receiveApproval -> this.stakeWithApproval",
                "params": {
                  "amount": "The number of tokens to stake.",
                  "delegatee": "The address of the delegatee or 0x0 if there is none.",
                  "sender": "The sender of SOV.approveAndCall",
                  "stakeFor": "The address to stake the tokens for or 0x0 if staking for oneself.",
                  "until": "Timestamp indicating the date until which to stake."
                }
              },
              "stakesBySchedule(uint256,uint256,uint256,uint256,address,address)": {
                "params": {
                  "amount": "The amount of tokens to stake.",
                  "cliff": "The time interval to the first withdraw.",
                  "delegatee": "The address of the delegatee or 0x0 if there is none.",
                  "duration": "The staking duration.",
                  "intervalLength": "The length of each staking interval when cliff passed.",
                  "stakeFor": "The address to stake the tokens for or 0x0 if staking for oneself."
                }
              },
              "timestampToLockDate(uint256)": {
                "params": {
                  "timestamp": "The unlocking timestamp."
                },
                "return": "The actual unlocking date (might be up to 2 weeks shorter than intended)."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "unlockAllTokens()": {
                "details": "Last resort."
              },
              "weightedStakeByDate(address,uint256,uint256,uint256)": {
                "params": {
                  "blockNumber": "The block number, needed for checkpointing.",
                  "date": "The staking date to compute the power for.",
                  "startDate": "The date for which we need to know the power of the stake."
                }
              },
              "withdraw(uint96,uint256,address)": {
                "params": {
                  "amount": "The number of tokens to withdraw.",
                  "receiver": "The receiver of the tokens. If not specified, send to the msg.sender",
                  "until": "The date until which the tokens were staked."
                }
              }
            },
            "title": "Staking contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c0604052600a608081905269534f565374616b696e6760b01b60a09081526200002d9160029190620000ae565b506005805460ff19169055600d80546001600160a01b0316600360a01b179055600062000059620000a9565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000150565b335b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000f157805160ff191683800117855562000121565b8280016001018555821562000121579182015b828111156200012157825182559160200191906001019062000104565b506200012f92915062000133565b5090565b620000ab91905b808211156200012f57600081556001016200013a565b61555980620001606000396000f3fe608060405234801561001057600080fd5b506004361061038d5760003560e01c8063836eebee116101de578063b4b5ea571161010f578063db27ec18116100ad578063e97ffacb1161007c578063e97ffacb14610767578063eefb8c471461077a578063f09cfc641461078d578063f2fde38b146107a05761038d565b8063db27ec1814610726578063dfb267c214610739578063e63a562e1461074c578063e7a324dc1461075f5761038d565b8063cf7b684a116100e9578063cf7b684a146106e5578063d27569e7146106f8578063d5c3846414610700578063dab6ca44146107135761038d565b8063b4b5ea57146106b7578063b8a98732146106ca578063bf626ec1146106dd5761038d565b806396a590c11161017c578063a58848c511610156578063a58848c51461068c578063adae900214610694578063ae81dfe4146106a7578063b1724b46146106af5761038d565b806396a590c1146106505780639929e886146106715780639a377b82146106795761038d565b80638f32d59b116101b85780638f32d59b146106025780638f4ffcb11461060a5780639436e7d41461061d57806394c2ce581461063d5761038d565b8063836eebee146105d45780638da5cb5b146105e75780638dae1b16146105ef5761038d565b8063429b62e5116102c357806368cefccc1161026157806372ec97951161023057806372ec97951461057a5780637ba6f4581461058d5780637ecebe00146105ae578063800b64ca146105c15761038d565b806368cefccc146105205780636b6fde0e14610541578063704802751461055457806370a08231146105675761038d565b80635419675f1161029d5780635419675f146104ea5780635e0be607146104f2578063626ee2d9146104fa57806362cf8a081461050d5761038d565b8063429b62e5146104b1578063450b0601146104c45780634b2fea1e146104d75761038d565b80631785f53c1161033057806325629ec01161030a57806325629ec01461045857806327dd1b001461046b57806337e6b1c11461048b5780633827fca51461049e5761038d565b80631785f53c1461042a57806320606b701461043d5780632522d7ba146104455761038d565b806307392cc01161036c57806307392cc0146103da5780630c09ddfd146103fa578063104932cf1461040d57806317748adc146104155761038d565b8062073f9914610392578063026e402b146103b057806303a18fa3146103c5575b600080fd5b61039a6107b3565b6040516103a79190614d3b565b60405180910390f35b6103c36103be366004613a61565b6107b9565b005b6103cd6107d3565b6040516103a79190614dff565b6103ed6103e8366004613d2f565b6107e2565b6040516103a79190614d2d565b6103c3610408366004613c9c565b6107f7565b6103cd610835565b61041d610844565b6040516103a79190615040565b6103c3610438366004613a01565b610849565b61039a6108c8565b61041d610453366004613e84565b6108df565b6103c3610466366004613f23565b610945565b61047e610479366004613a61565b61095a565b6040516103a79190614c73565b61041d610499366004613b0f565b610980565b6103c36104ac366004613a27565b6109f8565b6103ed6104bf366004613a01565b610b0a565b6103c36104d2366004613a01565b610b1f565b6103c36104e5366004613dcd565b610b8b565b6103c3610c2a565b6103c3610c59565b6103c3610508366004613a01565b610d41565b61041d61051b366004613dae565b610dad565b61053361052e366004613c59565b610ee8565b6040516103a7929190615032565b61053361054f366004613c59565b610f23565b6103c3610562366004613a01565b610f5e565b61041d610575366004613a01565b610fd5565b61039a610588366004613d2f565b611044565b6105a061059b366004613a01565b61108f565b6040516103a7929190614d08565b61039a6105bc366004613a01565b6111ca565b6103c36105cf366004613ee0565b6111dc565b61041d6105e2366004613b0f565b61122a565b61047e611282565b61041d6105fd366004613b5c565b611291565b6103ed611313565b6103c3610618366004613a91565b611337565b61063061062b366004613d2f565b61152b565b6040516103a79190615024565b61063061064b366004613a61565b611543565b61066361065e366004613ec1565b611566565b6040516103a7929190615084565b6103ed61158f565b6103c3610687366004613a01565b611598565b6103cd61160a565b6103ed6106a2366004613a01565b611619565b61047e61162e565b61039a611642565b61041d6106c5366004613a01565b61164a565b6103c36106d8366004613ea3565b611660565b61041d6116ec565b61041d6106f3366004613b0f565b611702565b61041d61173f565b61041d61070e366004613d2f565b611744565b6103c3610721366004613ee0565b6117a0565b610630610734366004613a61565b6117ba565b610533610747366004613e54565b6117dd565b6103c361075a366004613bbd565b611812565b61039a6119d0565b61041d610775366004613b0f565b6119dc565b6103c3610788366004613dae565b611c25565b61041d61079b366004613dae565b611dc9565b6103c36107ae366004613a01565b611fa2565b60015481565b6107c4338383611fd2565b6107cf33838361208b565b5050565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b33301461081f5760405162461bcd60e51b815260040161081690614f4e565b60405180910390fd5b61082e858585858560006121c4565b5050505050565b6011546001600160a01b031681565b600981565b610851611313565b61086d5760405162461bcd60e51b815260040161081690614f4e565b6001600160a01b0381166000908152600f602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f906108bd908390614c73565b60405180910390a150565b6040516108d490614c5d565b604051809103902081565b6000806108eb83611044565b905063059fa6008101815b81811161093c576109308461091283868a63ffffffff166123a2565b6040518060800160405280605581526020016151e260559139612408565b935062127500016108f6565b50505092915050565b610954338585858560006121c4565b50505050565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b60008061098c83611044565b905063059fa6008101815b8181116109ee5760006109ac8883868a611291565b90506001600160601b038116156109e3576109e085826040518060800160405280604c81526020016153ff604c9139612408565b94505b506212750001610997565b5050509392505050565b610a00611313565b80610a1a5750336000908152600f602052604090205460ff165b610a365760405162461bcd60e51b815260040161081690614f4e565b6001600160a01b0382166000818152600e602052604090819020805460ff1916600117905551633c7925e360e11b81526378f24bc690610a7a908490600401614c73565b600060405180830381600087803b158015610a9457600080fd5b505af1158015610aa8573d6000803e3d6000fd5b5050506001600160a01b0383166000908152600e602052604090819020805460ff19169055517f2366e0b6b1af17c0ceed50685c570d519cae11e7faaf007bbe667e94a5ee3cd59150610afe9084908490614c8f565b60405180910390a15050565b600f6020526000908152604090205460ff1681565b610b27611313565b610b435760405162461bcd60e51b815260040161081690614f4e565b6001600160a01b038116610b695760405162461bcd60e51b815260040161081690614e5e565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000610b98864201611044565b905063059fa600851115610bae5763059fa60094505b6000610bbb864201611044565b905060008583830381610bca57fe5b0460010190506000818a81610bdb57fe5b04905060018210610bfc57610bfc336001840383028c0386898960016121c4565b8387015b838111610c1d57610c163383838a8a60016121c4565b8701610c00565b5050505050505050505050565b60055461010090046001600160a01b0316610c575760405162461bcd60e51b815260040161081690614e2e565b565b610c61611313565b610c7d5760405162461bcd60e51b815260040161081690614f4e565b6005805460ff191660011790556003546040516370a0823160e01b81527fd8cc4e8d808fe950b07bfffcd83eebf1190cd35ea77fe0c8a7d75a6e9b90e5c1916001600160a01b0316906370a0823190610cda903090600401614c73565b60206040518083038186803b158015610cf257600080fd5b505afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d2a9190810190613d90565b604051610d379190614d3b565b60405180910390a1565b610d49611313565b610d655760405162461bcd60e51b815260040161081690614f4e565b6001600160a01b038116610d8b5760405162461bcd60e51b815260040161081690614f9e565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600081831015610dcf5760405162461bcd60e51b815260040161081690614f3e565b81830363059fa600811115610df65760405162461bcd60e51b815260040161081690614f5e565b6000620151808263059fa600036001600160601b031681610e1357fe5b049050610edf600a621232106001600160601b0316610e93600a600902610e75621232108788026040518060400160405280601f81526020017f756e646572666c6f77206f6e207765696768742063616c63756c6174696f6e0081525061243b565b6040518060600160405280602d8152602001615237602d913961247a565b6001600160601b031681610ea357fe5b046040518060400160405280601e81526020017f6f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e0000815250612408565b95945050505050565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b610f66611313565b610f825760405162461bcd60e51b815260040161081690614f4e565b6001600160a01b0381166000908152600f602052604090819020805460ff19166001179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339906108bd908390614c73565b6001546000905b63059fa6004201811161103e5761103282610ff785846124d8565b6040518060400160405280601c81526020017f5374616b696e673a3a62616c616e63654f663a206f766572666c6f7700000000815250612408565b91506212750001610fdc565b50919050565b60006001548210156110685760405162461bcd60e51b815260040161081690614eee565b60006212750060015484038161107a57fe5b04905060015462127500820201915050919050565b60608060006110a363059fa6004201611044565b60015490915060009062127500015b8281116110e55760006110c587836124d8565b6001600160601b031611156110db576001909101905b62127500016110b2565b5080604051908082528060200260200182016040528015611110578160200160208202803883390190505b5093508060405190808252806020026020018201604052801561113d578160200160208202803883390190505b5060015490935060009062127500015b8381116111c157600061116088836124d8565b90506001600160601b038116156111b6578187848151811061117e57fe5b6020026020010181815250508086848151811061119757fe5b6001600160601b03909216602092830291909101909101526001909201915b50621275000161114d565b50505050915091565b600c6020526000908152604090205481565b336000908152600e602052604090205460ff1661120b5760405162461bcd60e51b815260040161081690614f4e565b6112188383836001612539565b6112258383836001612823565b505050565b60008061123683611044565b905063059fa6008101815b8181116109ee57611276846112588984878b612885565b6040518060800160405280604a81526020016152d5604a9139612408565b93506212750001611241565b6000546001600160a01b031690565b60008061129f8686856128ed565b90506001600160601b038116156113055760006112bc8686610dad565b9050600a6001600160601b03166112ec83836040518060600160405280603d8152602001615264603d913961247a565b6001600160601b0316816112fc57fe5b0492505061130a565b600091505b50949350505050565b600080546001600160a01b0316611328612b42565b6001600160a01b031614905090565b61133f612b46565b6001600160a01b0316336001600160a01b03161461136f5760405162461bcd60e51b815260040161081690614f4e565b336001600160a01b038416146113975760405162461bcd60e51b815260040161081690614f4e565b600060606113a3612b55565b905060006113e685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bad92505050565b905060005b82518110156114345782818151811061140057fe5b60200260200101516001600160e01b031916826001600160e01b031916141561142c5760019350611434565b6001016113eb565b50826114525760405162461bcd60e51b815260040161081690614eae565b600080600060201b878760405160200161146e93929190614bf7565b6040516020818303038152906040528060200190516114909190810190613d4d565b9093509150506001600160a01b03808316908b16146114c15760405162461bcd60e51b815260040161081690614f2e565b8881146114e05760405162461bcd60e51b815260040161081690614fbe565b61151f87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bb492505050565b50505050505050505050565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b6000806115738484612c89565b600061157f8585612cf6565b80860393509150505b9250929050565b60055460ff1681565b6115a0611313565b6115bc5760405162461bcd60e51b815260040161081690614f4e565b6001600160a01b0381166115e25760405162461bcd60e51b815260040161081690614f7e565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b600061165a82600143034261122a565b92915050565b611668611313565b6116845760405162461bcd60e51b815260040161081690614f4e565b6001600160601b0381166001118015906116a8575060096001600160601b03821611155b6116c45760405162461bcd60e51b815260040161081690614efe565b600d80546001600160601b03909216600160a01b026001600160a01b03909216919091179055565b600d54600160a01b90046001600160601b031681565b6000806117108585856128ed565b90506001600160601b03811615801561172c575061172c612d41565b15611735575060015b90505b9392505050565b600a81565b60008181526007602052604081205463ffffffff1680611765576000611738565b6000838152600660209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03169392505050565b6117ad8383836000612539565b6112258383836000612823565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b600060405161182090614c5d565b604051809103902060026040516118379190614c20565b6040518091039020611847612dc7565b3060405160200161185b9493929190614d95565b604051602081830303815290604052805190602001209050600060405161188190614c68565b60405190819003812061189e918b908b908b908b90602001614d49565b604051602081830303815290604052805190602001209050600082826040516020016118cb929190614c2c565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516119089493929190614dca565b6020604051602081039080840390855afa15801561192a573d6000803e3d6000fd5b50505060206040510351905061193f81612dcb565b61195b5760405162461bcd60e51b815260040161081690614ede565b6001600160a01b0381166000908152600c60205260409020805460018101909155891461199a5760405162461bcd60e51b815260040161081690614fde565b874211156119ba5760405162461bcd60e51b815260040161081690614e1e565b6119c5818c8c611fd2565b610c1d818c8c61208b565b6040516108d490614c68565b60006119e6612e04565b8210611a045760405162461bcd60e51b815260040161081690614fce565b6001600160a01b038416600090815260096020908152604080832086845290915290205463ffffffff1680611a3d576000915050611738565b6001600160a01b0385166000908152600860209081526040808320878452825280832063ffffffff600019860181168552925290912054168310611ac9576001600160a01b038516600090815260086020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050611738565b6001600160a01b0385166000908152600860209081526040808320878452825280832083805290915290205463ffffffff16831015611b0c576000915050611738565b600060001982015b8163ffffffff168163ffffffff161115611bd757600282820363ffffffff16048103611b3e613950565b506001600160a01b03881660009081526008602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415611bb2576020015194506117389350505050565b805163ffffffff16871115611bc957819350611bd0565b6001820392505b5050611b14565b506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b611c2e81611044565b905080821115611c505760405162461bcd60e51b815260040161081690614e3e565b6000611c6163059fa6004201611044565b905080821115611c6f578091505b6000611c7f3385600143036128ed565b90506000816001600160601b031611611caa5760405162461bcd60e51b815260040161081690614f1e565b611cb5338583612e08565b611cc0338483612e99565b611cca8482612f1c565b611cd48382612f94565b336000908152600460209081526040808320878452909152808220548583529120546001600160a01b03918216911680611d3e5750336000908152600460209081526040808320878452909152902080546001600160a01b0319166001600160a01b038316179055805b336000908152600460209081526040808320898452909152902080546001600160a01b0319169055611d71828785612fff565b611d7c81868561309c565b336001600160a01b03167f809d79c94c86576d61afef75495b8df415224bf885310fed7ea315039f8c5b4c878786604051611db993929190614fee565b60405180910390a2505050505050565b6000611dd3612e04565b8210611df15760405162461bcd60e51b815260040161081690614fae565b60008381526007602052604090205463ffffffff1680611e1557600091505061165a565b600084815260066020908152604080832063ffffffff600019860181168552925290912054168310611e7d5760008481526006602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b0316905061165a565b600084815260066020908152604080832083805290915290205463ffffffff16831015611eae57600091505061165a565b600060001982015b8163ffffffff168163ffffffff161115611f6757600282820363ffffffff16048103611ee0613950565b50600087815260066020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415611f425760200151945061165a9350505050565b805163ffffffff16871115611f5957819350611f60565b6001820392505b5050611eb6565b50600085815260066020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b611faa611313565b611fc65760405162461bcd60e51b815260040161081690614f4e565b611fcf8161311f565b50565b6001600160a01b0380841660009081526004602090815260408083208584529091528120549091169061200585846124d8565b6001600160a01b0386811660008181526004602090815260408083208984529091529081902080546001600160a01b031916898516908117909155905193945092918516917fb846dc53d3621f480d692e73f4473156d20f23ff6b2c8237b7130b883226cca990612077908890614d3b565b60405180910390a461082e828583866131a0565b612093612d41565b156112255760006120ad826212750063ffffffff61320416565b6001600160a01b03808616600090815260046020908152604080832085845290915290205491925090811690841681146120ec576120ec858584611fd2565b6000336001600160a01b031663c24a0f8b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561212957600080fd5b505af115801561213d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121619190810190613d90565b9050612176846224ea0063ffffffff61320416565b9250808314156121bc576001600160a01b03808716600090815260046020908152604080832087845290915290205481169250851682146121bc576121bc868685611fd2565b505050505050565b6000856001600160601b0316116121ed5760405162461bcd60e51b815260040161081690614f0e565b806121fe576121fb84611044565b93505b42841161221d5760405162461bcd60e51b815260040161081690614f6e565b6001600160a01b03831661222f578592505b6001600160a01b038216612241578291505b8061226757600061225763059fa6004201611044565b905080851115612265578094505b505b600061227384866124d8565b905061228187878688613229565b6001600160a01b03808516600090815260046020908152604080832089845290915290205481169084168114612338576001600160a01b0385811660009081526004602090815260408083208a8452909152902080546001600160a01b0319169186169190911790556122f5818784612fff565b61233582886040518060400160405280602081526020017f5374616b696e673a3a7374616b653a2062616c616e6365206f766572666c6f77815250612408565b96505b61234384878961309c565b836001600160a01b0316816001600160a01b0316866001600160a01b03167fb846dc53d3621f480d692e73f4473156d20f23ff6b2c8237b7130b883226cca9896040516123909190614d3b565b60405180910390a45050505050505050565b6000806123af8585610dad565b905060006123bd8685611dc9565b9050600a6001600160601b03166123ed82846040518060600160405280603b81526020016153c4603b913961247a565b6001600160601b0316816123fd57fe5b049695505050505050565b6000838301826001600160601b03808716908316101561130a5760405162461bcd60e51b81526004016108169190614e0d565b6000836001600160601b0316836001600160601b0316111582906124725760405162461bcd60e51b81526004016108169190614e0d565b505050900390565b60006001600160601b03841661249257506000611738565b8383026001600160601b0380851690808716908316816124ae57fe5b046001600160601b031614839061130a5760405162461bcd60e51b81526004016108169190614e0d565b6001600160a01b0382166000818152600a602090815260408083208584528252808320938352600b825280832085845282528083205460001963ffffffff9182160116835292905220546001600160601b03600160201b9091041692915050565b836001600160601b031660011480156125555750612555612d41565b1561255f57610954565b61256883613341565b92506125748484612c89565b6001600160a01b038216612586573391505b6125908385612f1c565b61259b338486612e08565b3360009081526004602090815260408083208684529091529020546125ca906001600160a01b03168486612fff565b82421080156125dc575060055460ff16155b80156125e6575080155b156127295760006125f78585612cf6565b948590039490506001600160601b0381161561272757600d546001600160a01b03166126355760405162461bcd60e51b815260040161081690614ece565b600354600d5460405163095ea7b360e01b81526001600160a01b039283169263095ea7b39261266b929116908590600401614cd2565b602060405180830381600087803b15801561268557600080fd5b505af1158015612699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126bd9190810190613d11565b50600d5460035460405163abe979e160e01b81526001600160a01b039283169263abe979e1926126f4929116908590600401614ced565b600060405180830381600087803b15801561270e57600080fd5b505af1158015612722573d6000803e3d6000fd5b505050505b505b60035460405163a9059cbb60e01b81526000916001600160a01b03169063a9059cbb9061275c9086908990600401614cd2565b602060405180830381600087803b15801561277657600080fd5b505af115801561278a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127ae9190810190613d11565b9050806127cd5760405162461bcd60e51b815260040161081690614e7e565b826001600160a01b0316336001600160a01b03167f667b6c8ed8622dae7927a8b0837455098e32037a0181f9a2e21b9b72fead6cc78787866040516128149392919061504e565b60405180910390a35050505050565b61282b612d41565b15610954576000612845846212750063ffffffff61320416565b905081806128535750804210155b1561082e5760006128683383600143036128ed565b90506001600160601b038116156121bc576121bc81838686612539565b6000806128928585610dad565b905060006128a18787866119dc565b9050600a6001600160601b03166128d1828460405180608001604052806047815260200161519b6047913961247a565b6001600160601b0316816128e157fe5b04979650505050505050565b60006128f7612e04565b82106129155760405162461bcd60e51b815260040161081690614f8e565b61291e83613341565b6001600160a01b0385166000908152600b6020908152604080832084845290915290205490935063ffffffff168061295a576000915050611738565b6001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff6000198601811685529252909120541683106129e6576001600160a01b0385166000908152600a6020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050611738565b6001600160a01b0385166000908152600a60209081526040808320878452825280832083805290915290205463ffffffff16831015612a29576000915050611738565b600060001982015b8163ffffffff168163ffffffff161115612af457600282820363ffffffff16048103612a5b613950565b506001600160a01b0388166000908152600a602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415612acf576020015194506117389350505050565b805163ffffffff16871115612ae657819350612aed565b6001820392505b5050612a31565b506001600160a01b0386166000908152600a60209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b3390565b6003546001600160a01b031690565b60408051600180825281830190925260609182919060208083019080388339019050509050630c09ddfd60e01b81600081518110612b8f57fe5b6001600160e01b031990921660209283029190910190910152905090565b6020015190565b60006060306001600160a01b031683604051612bd09190614c14565b6000604051808303816000865af19150503d8060008114612c0d576040519150601f19603f3d011682016040523d82523d6000602084013e612c12565b606091505b509150915081611225576044815111612c3d5760405162461bcd60e51b815260040161081690614e6e565b612c706040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b81525082613366565b60405162461bcd60e51b81526004016108169190614e0d565b6000826001600160601b031611612cb25760405162461bcd60e51b815260040161081690614e4e565b6000612cc23383600143036128ed565b9050806001600160601b0316836001600160601b031611156112255760405162461bcd60e51b815260040161081690614e9e565b600080612d0242611044565b90506000612d108483610dad565b600d54600160a01b90046001600160601b03908116919091029150606490600a878402821604160495945050505050565b60115460405163dbb049d160e01b81526000916001600160a01b03169063dbb049d190612d72903390600401614c81565b60206040518083038186803b158015612d8a57600080fd5b505afa158015612d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612dc29190810190613d11565b905090565b4690565b600073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b0383161480159061165a5750506001600160a01b0316151590565b4390565b6001600160a01b0383166000818152600b60209081526040808320868452825280832054938352600a8252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526034808352600160201b9091046001600160601b03169392612e8b92859288926152a19083013961243b565b90506121bc86868584613460565b6001600160a01b0383166000818152600b60209081526040808320868452825280832054938352600a8252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526033808352600160201b9091046001600160601b03169392612e8b928592889261539190830139612408565b6000828152600760209081526040808320546006835281842063ffffffff9182166000198101909216855283528184205482516060810190935260358084529194600160201b9091046001600160601b0316939092612f87928592889291906154739083013961243b565b905061082e8584836135e0565b6000828152600760209081526040808320546006835281842063ffffffff9182166000198101909216855283528184205482516060810190935260348084529194600160201b9091046001600160601b0316939092612f879285928892919061531f90830139612408565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff94851660001981019095168452909152812054600160201b90046001600160601b03908116919084168211156130905761308d82856040518060600160405280603881526020016154df6038913961243b565b90505b6121bc8686858461371e565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526037808352600160201b9091046001600160601b0316939261308d92859288926154a890830139612408565b6001600160a01b0381166131455760405162461bcd60e51b815260040161081690614e8e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b0316846001600160a01b0316141580156131cb57506000826001600160601b0316115b15610954576001600160a01b038416156131ea576131ea848284612fff565b6001600160a01b038316156109545761095483828461309c565b6000828201838110156117385760405162461bcd60e51b815260040161081690614ebe565b6003546040516323b872dd60e01b81526000916001600160a01b0316906323b872dd9061325e90889030908990600401614caa565b602060405180830381600087803b15801561327857600080fd5b505af115801561328c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506132b09190810190613d11565b9050806132bc57600080fd5b60006132c884846124d8565b90506132ed818660405180606001604052806028815260200161544b60289139612408565b90506132f98386612f94565b613304848487612e99565b836001600160a01b03167f0fc5b1bac0416800b42a669229a346b6e5a15db3896339dbdc5fa376e1e4570a868584604051611db993929190615076565b60008061334d83611044565b905082811461335f5762127500810192505b5090919050565b6060808390506060839050606060448251845101036040519080825280601f01601f1916602001820160405280156133a5576020820181803883390190505b509050806000805b85518110156133fe578581815181106133c257fe5b602001015160f81c60f81b8383806001019450815181106133df57fe5b60200101906001600160f81b031916908160001a9053506001016133ad565b5060445b84518110156134535784818151811061341757fe5b602001015160f81c60f81b83838060010194508151811061343457fe5b60200101906001600160f81b031916908160001a905350600101613402565b5090979650505050505050565b6000613484436040518060600160405280603e8152602001615353603e9139613921565b905060008363ffffffff161180156134d557506001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff6000198801811685529252909120548282169116145b15613537576001600160a01b0385166000908152600a602090815260408083208784528252808320600019870163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b0385160217905561082e565b60408051808201825263ffffffff92831681526001600160601b0393841660208083019182526001600160a01b03989098166000818152600a8a528481208982528a5284812088871682528a52848120935184549351909716600160201b02640100000000600160801b031997871663ffffffff19948516179790971696909617909255908452600b875281842095845294909552939020805460019092019093169116179055565b6000613604436040518060600160405280603e8152602001615353603e9139613921565b905060008363ffffffff161180156136435750600084815260066020908152604080832063ffffffff6000198801811685529252909120548282169116145b15613693576000848152600660209081526040808320600019870163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b03851602179055610954565b60408051808201825263ffffffff92831681526001600160601b0393841660208083019182526000888152600682528481208887168252825284812093518454935163ffffffff1994851691881691909117640100000000600160801b031916600160201b919098160296909617909255958452600790529091208054909316600190920116179055565b6000613742436040518060600160405280603e8152602001615353603e9139613921565b6001600160a01b03861660009081526008602090815260408083208884528252808320600019880163ffffffff9081168552925290912054919250600160201b9091046001600160601b0316908416158015906137d857506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff6000198901811685529252909120548382169116145b1561383a576001600160a01b03861660009081526008602090815260408083208884528252808320600019880163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b038616021790556138e4565b60408051808201825263ffffffff80851682526001600160601b0380871660208085019182526001600160a01b038c166000818152600883528781208d825283528781208c871682528352878120965187549451909516600160201b02640100000000600160801b031995871663ffffffff19958616179590951694909417909555938252600984528482208a835290935292909220805460018801909316929091169190911790555b856001600160a01b03167fc7b38fb25352e6f351f57e2c922f84db5c97e09a6246bbe1d2eedfcdb01c4c62868386604051611db993929190615009565b600081600160201b84106139485760405162461bcd60e51b81526004016108169190614e0d565b509192915050565b604080518082019091526000808252602082015290565b803561165a81615159565b805161165a81615159565b805161165a8161516d565b803561165a81615176565b805161165a81615176565b60008083601f8401126139b057600080fd5b50813567ffffffffffffffff8111156139c857600080fd5b60208301915083600182028301111561158857600080fd5b803561165a8161517f565b803561165a81615188565b803561165a81615191565b600060208284031215613a1357600080fd5b6000613a1f8484613967565b949350505050565b60008060408385031215613a3a57600080fd5b6000613a468585613967565b9250506020613a5785828601613967565b9150509250929050565b60008060408385031215613a7457600080fd5b6000613a808585613967565b9250506020613a5785828601613988565b600080600080600060808688031215613aa957600080fd5b6000613ab58888613967565b9550506020613ac688828901613988565b9450506040613ad788828901613967565b935050606086013567ffffffffffffffff811115613af457600080fd5b613b008882890161399e565b92509250509295509295909350565b600080600060608486031215613b2457600080fd5b6000613b308686613967565b9350506020613b4186828701613988565b9250506040613b5286828701613988565b9150509250925092565b60008060008060808587031215613b7257600080fd5b6000613b7e8787613967565b9450506020613b8f87828801613988565b9350506040613ba087828801613988565b9250506060613bb187828801613988565b91505092959194509250565b600080600080600080600060e0888a031215613bd857600080fd5b6000613be48a8a613967565b9750506020613bf58a828b01613988565b9650506040613c068a828b01613988565b9550506060613c178a828b01613988565b9450506080613c288a828b016139eb565b93505060a0613c398a828b01613988565b92505060c0613c4a8a828b01613988565b91505092959891949750929550565b600080600060608486031215613c6e57600080fd5b6000613c7a8686613967565b9350506020613c8b86828701613988565b9250506040613b52868287016139e0565b600080600080600060a08688031215613cb457600080fd5b6000613cc08888613967565b9550506020613cd1888289016139f6565b9450506040613ce288828901613988565b9350506060613cf388828901613967565b9250506080613d0488828901613967565b9150509295509295909350565b600060208284031215613d2357600080fd5b6000613a1f848461397d565b600060208284031215613d4157600080fd5b6000613a1f8484613988565b600080600060608486031215613d6257600080fd5b6000613d6e8686613993565b9350506020613d7f86828701613972565b9250506040613b5286828701613993565b600060208284031215613da257600080fd5b6000613a1f8484613993565b60008060408385031215613dc157600080fd5b6000613a808585613988565b60008060008060008060c08789031215613de657600080fd5b6000613df28989613988565b9650506020613e0389828a01613988565b9550506040613e1489828a01613988565b9450506060613e2589828a01613988565b9350506080613e3689828a01613967565b92505060a0613e4789828a01613967565b9150509295509295509295565b60008060408385031215613e6757600080fd5b6000613e738585613988565b9250506020613a57858286016139e0565b60008060408385031215613e9757600080fd5b6000613a8085856139e0565b600060208284031215613eb557600080fd5b6000613a1f84846139f6565b60008060408385031215613ed457600080fd5b6000613a8085856139f6565b600080600060608486031215613ef557600080fd5b6000613f0186866139f6565b9350506020613f1286828701613988565b9250506040613b5286828701613967565b60008060008060808587031215613f3957600080fd5b6000613f4587876139f6565b9450506020613f5687828801613988565b9350506040613f6787828801613967565b9250506060613bb187828801613967565b6000613f848383614071565b505060200190565b6000613f848383614bee565b613fa1816150fa565b82525050565b613fa1816150b6565b6000613fbb826150a4565b613fc581856150a8565b9350613fd083615092565b8060005b83811015613ffe578151613fe88882613f78565b9750613ff383615092565b925050600101613fd4565b509495945050505050565b6000614014826150a4565b61401e81856150a8565b935061402983615092565b8060005b83811015613ffe5781516140418882613f8c565b975061404c83615092565b92505060010161402d565b613fa1816150c1565b613fa161406c826150c6565b6150d0565b613fa1816150d0565b613fa161406c826150d0565b600061409283856150b1565b935061409f838584615117565b50500190565b60006140b0826150a4565b6140ba81856150b1565b93506140ca818560208601615123565b9290920192915050565b6000815460018116600081146140f1576001811461411457614153565b607f600283041661410281876150b1565b60ff1984168152955085019250614153565b6002820461412281876150b1565b955061412d85615098565b60005b8281101561414c57815488820152600190910190602001614130565b5050850192505b505092915050565b613fa181615101565b600061416f826150a4565b61417981856150a8565b9350614189818560208601615123565b6141928161514f565b9093019392505050565b60006141a96029836150a8565b7f5374616b696e673a3a64656c656761746542795369673a207369676e617475728152681948195e1c1a5c995960ba1b602082015260400192915050565b60006141f46024836150a8565b7f7468657265206973206e6f206e6577207374616b696e6720636f6e7472616374815263081cd95d60e21b602082015260400192915050565b600061423a6042836150a8565b7f5374616b696e673a3a657874656e645374616b696e674475726174696f6e3a2081527f63616e6e6f742072656475636520746865207374616b696e672064757261746960208201526137b760f11b604082015260600192915050565b60006142a4604d836150a8565b7f5374616b696e673a3a77697468647261773a20616d6f756e74206f6620746f6b81527f656e7320746f2062652077697468647261776e206e6565647320746f2062652060208201526c0626967676572207468616e203609c1b604082015260600192915050565b60006143196020836150a8565b7f76657374696e67207265676973747279206164647265737320696e76616c6964815260200192915050565b60006143526030836150a8565b7f72656365697665417070726f76616c3a205472616e73616374696f6e2065786581526f31baba34b7b7103932bb32b93a32b21760811b602082015260400192915050565b60006143a46028836150a8565b7f5374616b696e673a3a77697468647261773a20546f6b656e207472616e7366658152671c8819985a5b195960c21b602082015260400192915050565b60006143ee6026836150a8565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006144366025836150a8565b7f5374616b696e673a3a77697468647261773a206e6f7420656e6f7567682062618152646c616e636560d81b602082015260400192915050565b600061447d6015836150a8565b741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b815260200192915050565b60006144ae6002836150b1565b61190160f01b815260020192915050565b60006144cc601b836150a8565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006145056030836150a8565b7f5374616b696e673a3a77697468647261773a2046656553686172696e6720616481526f191c995cdcc81dd85cdb89dd081cd95d60821b602082015260400192915050565b60006145576029836150a8565b7f5374616b696e673a3a64656c656761746542795369673a20696e76616c6964208152687369676e617475726560b81b602082015260400192915050565b60006145a2604d836150a8565b7f57656967687465645374616b696e673a3a74696d657374616d70546f4c6f636b81527f446174653a2074696d657374616d70206c696573206265666f726520636f6e7460208201526c3930b1ba1031b932b0ba34b7b760991b604082015260600192915050565b6000614617602d836150a8565b7f776569676874207363616c696e6720646f65736e27742062656c6f6e6720746f81526c2072616e6765205b312c20395d60981b602082015260400192915050565b60006146666043836150a8565b7f5374616b696e673a3a7374616b653a20616d6f756e74206f6620746f6b656e7381527f20746f207374616b65206e6565647320746f206265206269676765722074686160208201526206e20360ec1b604082015260600192915050565b60006146d1604b836150a8565b7f5374616b696e673a3a657874656e645374616b696e674475726174696f6e3a2081527f6e6f7468696e67207374616b656420756e74696c207468652070726576696f7560208201526a73206c6f636b206461746560a81b604082015260600192915050565b6000614744600f836150a8565b6e0e6cadcc8cae440dad2e6dac2e8c6d608b1b815260200192915050565b600061476f604c836150a8565b7f57656967687465645374616b696e673a3a636f6d70757465576569676874427981527f446174653a2064617465206e6565647320746f2062652062696767657220746860208201526b616e2073746172744461746560a01b604082015260600192915050565b60006147e36043836150b1565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b600061484e600c836150a8565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000614876604d836150a8565b7f5374616b696e673a3a636f6d707574655765696768744279446174653a72656d81527f61696e696e672074696d652063616e277420626520626967676572207468616e60208201526c1036b0bc10323ab930ba34b7b760991b604082015260600192915050565b60006148eb6036836150a8565b7f5374616b696e673a3a74696d657374616d70546f4c6f636b446174653a207374815275185ada5b99c81c195c9a5bd9081d1bdbc81cda1bdc9d60521b602082015260400192915050565b60006149436029836150a8565b7f63616e277420726573657420746865206e6577207374616b696e6720636f6e7481526807261637420746f20360bc1b602082015260400192915050565b600061498e604b836150b1565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e7460208201526a323536206578706972792960a81b6040820152604b0192915050565b6000614a01603d836150a8565b7f57656967687465645374616b696e673a3a6765745072696f725573657253746181527f6b65416e64446174653a206e6f74207965742064657465726d696e6564000000602082015260400192915050565b6000614a606021836150a8565b7f46656553686172696e6720616464726573732073686f756c646e2774206265208152600360fc1b602082015260400192915050565b6000614aa3603f836150a8565b7f57656967687465645374616b696e673a3a6765745072696f72546f74616c537481527f616b6573466f72446174653a206e6f74207965742064657465726d696e656400602082015260400192915050565b6000614b02600f836150a8565b6e0c2dadeeadce840dad2e6dac2e8c6d608b1b815260200192915050565b6000614b2d6044836150a8565b7f57656967687465645374616b696e673a3a6765745072696f725374616b65427981527f44617465466f7244656c6567617465653a206e6f74207965742064657465726d6020820152631a5b995960e21b604082015260600192915050565b6000614b996025836150a8565b7f5374616b696e673a3a64656c656761746542795369673a20696e76616c6964208152646e6f6e636560d81b602082015260400192915050565b613fa1816150df565b613fa1816150e8565b613fa18161510c565b613fa1816150ee565b6000614c038286614060565b601c82019150610edf828486614086565b600061173882846140a5565b600061173882846140d4565b6000614c37826144a1565b9150614c43828561407a565b602082019150614c53828461407a565b5060200192915050565b600061165a826147d6565b600061165a82614981565b6020810161165a8284613fa7565b6020810161165a8284613f98565b60408101614c9d8285613fa7565b6117386020830184613fa7565b60608101614cb88286613fa7565b614cc56020830185613fa7565b613a1f6040830184614be5565b60408101614ce08285613fa7565b6117386020830184614be5565b60408101614cfb8285613fa7565b6117386020830184614bee565b60408082528101614d198185613fb0565b90508181036020830152613a1f8184614009565b6020810161165a8284614057565b6020810161165a8284614071565b60a08101614d578288614071565b614d646020830187613fa7565b614d716040830186614071565b614d7e6060830185614071565b614d8b6080830184614071565b9695505050505050565b60808101614da38287614071565b614db06020830186614071565b614dbd6040830185614071565b610edf6060830184613fa7565b60808101614dd88287614071565b614de56020830186614bdc565b614df26040830185614071565b610edf6060830184614071565b6020810161165a828461415b565b602080825281016117388184614164565b6020808252810161165a8161419c565b6020808252810161165a816141e7565b6020808252810161165a8161422d565b6020808252810161165a81614297565b6020808252810161165a8161430c565b6020808252810161165a81614345565b6020808252810161165a81614397565b6020808252810161165a816143e1565b6020808252810161165a81614429565b6020808252810161165a81614470565b6020808252810161165a816144bf565b6020808252810161165a816144f8565b6020808252810161165a8161454a565b6020808252810161165a81614595565b6020808252810161165a8161460a565b6020808252810161165a81614659565b6020808252810161165a816146c4565b6020808252810161165a81614737565b6020808252810161165a81614762565b6020808252810161165a81614841565b6020808252810161165a81614869565b6020808252810161165a816148de565b6020808252810161165a81614936565b6020808252810161165a816149f4565b6020808252810161165a81614a53565b6020808252810161165a81614a96565b6020808252810161165a81614af5565b6020808252810161165a81614b20565b6020808252810161165a81614b8c565b60608101614ffc8286614071565b614cc56020830185614071565b606081016150178286614071565b614cc56020830185614be5565b6020810161165a8284614bd3565b60408101614cfb8285614bd3565b6020810161165a8284614bee565b6060810161505c8286614be5565b6150696020830185614071565b613a1f6040830184614057565b60608101614ffc8286614be5565b60408101614cfb8285614bee565b60200190565b60009081526020902090565b5190565b90815260200190565b919050565b600061165a826150d3565b151590565b63ffffffff191690565b90565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6001600160601b031690565b600061165a825b600061165a826150b6565b600061165a826150ee565b82818337506000910152565b60005b8381101561513e578181015183820152602001615126565b838111156109545750506000910152565b601f01601f191690565b615162816150b6565b8114611fcf57600080fd5b615162816150c1565b615162816150d0565b615162816150df565b615162816150e8565b615162816150ee56fe57656967687465645374616b696e673a3a5f746f74616c506f776572427944617465466f7244656c6567617465653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f72546f74616c566f74696e67506f7765723a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e6d756c7469706c69636174696f6e206f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e57656967687465645374616b696e673a3a77656967687465645374616b654279446174653a206d756c7469706c69636174696f6e206f766572666c6f775374616b696e673a3a5f6465637265617365557365725374616b653a207374616b656420616d6f756e7420756e646572666c6f7757656967687465645374616b696e673a3a6765745072696f72566f7465733a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e5374616b696e673a3a5f696e6372656173654461696c795374616b653a207374616b656420616d6f756e74206f766572666c6f775374616b696e673a3a5f77726974655374616b696e67436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735374616b696e673a3a5f696e637265617365557365725374616b653a207374616b656420616d6f756e74206f766572666c6f7757656967687465645374616b696e673a3a5f746f74616c506f7765724279446174653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f7257656967687465645374616b653a206f766572666c6f77206f6e20746f74616c2077656967687420636f6d7075746174696f6e5374616b696e673a3a696e6372656173655374616b653a2062616c616e6365206f766572666c6f775374616b696e673a3a5f64656372656173654461696c795374616b653a207374616b656420616d6f756e7420756e646572666c6f775374616b696e673a3a5f696e63726561736544656c65676174655374616b653a207374616b656420616d6f756e74206f766572666c6f775374616b696e673a3a5f646563726561736544656c65676174655374616b653a207374616b656420616d6f756e7420756e646572666c6f77a365627a7a723158204e5624842b70eebad1ef63a30cc6e4f4b569e7eaa0b2a2fe9242485d8115741a6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH10 0x534F565374616B696E67 PUSH1 0xB0 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH3 0x2D SWAP2 PUSH1 0x2 SWAP2 SWAP1 PUSH3 0xAE JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH1 0x0 PUSH3 0x59 PUSH3 0xA9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x150 JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xF1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x121 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x121 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x121 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x104 JUMP JUMPDEST POP PUSH3 0x12F SWAP3 SWAP2 POP PUSH3 0x133 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0xAB SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x12F JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x13A JUMP JUMPDEST PUSH2 0x5559 DUP1 PUSH3 0x160 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x836EEBEE GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0xB4B5EA57 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xDB27EC18 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xE97FFACB GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xE97FFACB EQ PUSH2 0x767 JUMPI DUP1 PUSH4 0xEEFB8C47 EQ PUSH2 0x77A JUMPI DUP1 PUSH4 0xF09CFC64 EQ PUSH2 0x78D JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x7A0 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0x726 JUMPI DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0x739 JUMPI DUP1 PUSH4 0xE63A562E EQ PUSH2 0x74C JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x75F JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0xCF7B684A GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xCF7B684A EQ PUSH2 0x6E5 JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0x6F8 JUMPI DUP1 PUSH4 0xD5C38464 EQ PUSH2 0x700 JUMPI DUP1 PUSH4 0xDAB6CA44 EQ PUSH2 0x713 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0x6B7 JUMPI DUP1 PUSH4 0xB8A98732 EQ PUSH2 0x6CA JUMPI DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0x6DD JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x96A590C1 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0xA58848C5 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0x68C JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0x694 JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0x6A7 JUMPI DUP1 PUSH4 0xB1724B46 EQ PUSH2 0x6AF JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x96A590C1 EQ PUSH2 0x650 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0x671 JUMPI DUP1 PUSH4 0x9A377B82 EQ PUSH2 0x679 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x602 JUMPI DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0x61D JUMPI DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0x63D JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x836EEBEE EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0x8DAE1B16 EQ PUSH2 0x5EF JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x429B62E5 GT PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x68CEFCCC GT PUSH2 0x261 JUMPI DUP1 PUSH4 0x72EC9795 GT PUSH2 0x230 JUMPI DUP1 PUSH4 0x72EC9795 EQ PUSH2 0x57A JUMPI DUP1 PUSH4 0x7BA6F458 EQ PUSH2 0x58D JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x5AE JUMPI DUP1 PUSH4 0x800B64CA EQ PUSH2 0x5C1 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x520 JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x541 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x567 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x5419675F GT PUSH2 0x29D JUMPI DUP1 PUSH4 0x5419675F EQ PUSH2 0x4EA JUMPI DUP1 PUSH4 0x5E0BE607 EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0x626EE2D9 EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x62CF8A08 EQ PUSH2 0x50D JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0x450B0601 EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0x4B2FEA1E EQ PUSH2 0x4D7 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x330 JUMPI DUP1 PUSH4 0x25629EC0 GT PUSH2 0x30A JUMPI DUP1 PUSH4 0x25629EC0 EQ PUSH2 0x458 JUMPI DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x46B JUMPI DUP1 PUSH4 0x37E6B1C1 EQ PUSH2 0x48B JUMPI DUP1 PUSH4 0x3827FCA5 EQ PUSH2 0x49E JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x1785F53C EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x43D JUMPI DUP1 PUSH4 0x2522D7BA EQ PUSH2 0x445 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x7392CC0 GT PUSH2 0x36C JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0xC09DDFD EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x40D JUMPI DUP1 PUSH4 0x17748ADC EQ PUSH2 0x415 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x26E402B EQ PUSH2 0x3B0 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x3C5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x39A PUSH2 0x7B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x4D3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3C3 PUSH2 0x3BE CALLDATASIZE PUSH1 0x4 PUSH2 0x3A61 JUMP JUMPDEST PUSH2 0x7B9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3CD PUSH2 0x7D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x3E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2F JUMP JUMPDEST PUSH2 0x7E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x4D2D JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x408 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C9C JUMP JUMPDEST PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x3CD PUSH2 0x835 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x844 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x5040 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x438 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x849 JUMP JUMPDEST PUSH2 0x39A PUSH2 0x8C8 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x453 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E84 JUMP JUMPDEST PUSH2 0x8DF JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x466 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F23 JUMP JUMPDEST PUSH2 0x945 JUMP JUMPDEST PUSH2 0x47E PUSH2 0x479 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A61 JUMP JUMPDEST PUSH2 0x95A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x4C73 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x499 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0F JUMP JUMPDEST PUSH2 0x980 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x4AC CALLDATASIZE PUSH1 0x4 PUSH2 0x3A27 JUMP JUMPDEST PUSH2 0x9F8 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x4BF CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0xB0A JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x4D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0xB1F JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x4E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DCD JUMP JUMPDEST PUSH2 0xB8B JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0xC2A JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0xC59 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x508 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0xD41 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x51B CALLDATASIZE PUSH1 0x4 PUSH2 0x3DAE JUMP JUMPDEST PUSH2 0xDAD JUMP JUMPDEST PUSH2 0x533 PUSH2 0x52E CALLDATASIZE PUSH1 0x4 PUSH2 0x3C59 JUMP JUMPDEST PUSH2 0xEE8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP3 SWAP2 SWAP1 PUSH2 0x5032 JUMP JUMPDEST PUSH2 0x533 PUSH2 0x54F CALLDATASIZE PUSH1 0x4 PUSH2 0x3C59 JUMP JUMPDEST PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x562 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0xF5E JUMP JUMPDEST PUSH2 0x41D PUSH2 0x575 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0xFD5 JUMP JUMPDEST PUSH2 0x39A PUSH2 0x588 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2F JUMP JUMPDEST PUSH2 0x1044 JUMP JUMPDEST PUSH2 0x5A0 PUSH2 0x59B CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x108F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP3 SWAP2 SWAP1 PUSH2 0x4D08 JUMP JUMPDEST PUSH2 0x39A PUSH2 0x5BC CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x11CA JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x5CF CALLDATASIZE PUSH1 0x4 PUSH2 0x3EE0 JUMP JUMPDEST PUSH2 0x11DC JUMP JUMPDEST PUSH2 0x41D PUSH2 0x5E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0F JUMP JUMPDEST PUSH2 0x122A JUMP JUMPDEST PUSH2 0x47E PUSH2 0x1282 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x5FD CALLDATASIZE PUSH1 0x4 PUSH2 0x3B5C JUMP JUMPDEST PUSH2 0x1291 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x1313 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x618 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A91 JUMP JUMPDEST PUSH2 0x1337 JUMP JUMPDEST PUSH2 0x630 PUSH2 0x62B CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2F JUMP JUMPDEST PUSH2 0x152B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x5024 JUMP JUMPDEST PUSH2 0x630 PUSH2 0x64B CALLDATASIZE PUSH1 0x4 PUSH2 0x3A61 JUMP JUMPDEST PUSH2 0x1543 JUMP JUMPDEST PUSH2 0x663 PUSH2 0x65E CALLDATASIZE PUSH1 0x4 PUSH2 0x3EC1 JUMP JUMPDEST PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP3 SWAP2 SWAP1 PUSH2 0x5084 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x158F JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x687 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x1598 JUMP JUMPDEST PUSH2 0x3CD PUSH2 0x160A JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x6A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x1619 JUMP JUMPDEST PUSH2 0x47E PUSH2 0x162E JUMP JUMPDEST PUSH2 0x39A PUSH2 0x1642 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x6C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x164A JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x6D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EA3 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x16EC JUMP JUMPDEST PUSH2 0x41D PUSH2 0x6F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0F JUMP JUMPDEST PUSH2 0x1702 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x173F JUMP JUMPDEST PUSH2 0x41D PUSH2 0x70E CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2F JUMP JUMPDEST PUSH2 0x1744 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x721 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EE0 JUMP JUMPDEST PUSH2 0x17A0 JUMP JUMPDEST PUSH2 0x630 PUSH2 0x734 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A61 JUMP JUMPDEST PUSH2 0x17BA JUMP JUMPDEST PUSH2 0x533 PUSH2 0x747 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E54 JUMP JUMPDEST PUSH2 0x17DD JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x75A CALLDATASIZE PUSH1 0x4 PUSH2 0x3BBD JUMP JUMPDEST PUSH2 0x1812 JUMP JUMPDEST PUSH2 0x39A PUSH2 0x19D0 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x775 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0F JUMP JUMPDEST PUSH2 0x19DC JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x788 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DAE JUMP JUMPDEST PUSH2 0x1C25 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x79B CALLDATASIZE PUSH1 0x4 PUSH2 0x3DAE JUMP JUMPDEST PUSH2 0x1DC9 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x7AE CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x1FA2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x7C4 CALLER DUP4 DUP4 PUSH2 0x1FD2 JUMP JUMPDEST PUSH2 0x7CF CALLER DUP4 DUP4 PUSH2 0x208B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x81F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x82E DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x21C4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0x851 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0x86D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0x8BD SWAP1 DUP4 SWAP1 PUSH2 0x4C73 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D4 SWAP1 PUSH2 0x4C5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8EB DUP4 PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x93C JUMPI PUSH2 0x930 DUP5 PUSH2 0x912 DUP4 DUP7 DUP11 PUSH4 0xFFFFFFFF AND PUSH2 0x23A2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x55 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x51E2 PUSH1 0x55 SWAP2 CODECOPY PUSH2 0x2408 JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x8F6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x954 CALLER DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x21C4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x98C DUP4 PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x9EE JUMPI PUSH1 0x0 PUSH2 0x9AC DUP9 DUP4 DUP7 DUP11 PUSH2 0x1291 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x9E3 JUMPI PUSH2 0x9E0 DUP6 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x53FF PUSH1 0x4C SWAP2 CODECOPY PUSH2 0x2408 JUMP JUMPDEST SWAP5 POP JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0x997 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xA00 PUSH2 0x1313 JUMP JUMPDEST DUP1 PUSH2 0xA1A JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xA36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH4 0x3C7925E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH4 0x78F24BC6 SWAP1 PUSH2 0xA7A SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4C73 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAA8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0x2366E0B6B1AF17C0CEED50685C570D519CAE11E7FAAF007BBE667E94A5EE3CD5 SWAP2 POP PUSH2 0xAFE SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x4C8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xB27 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0xB43 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E5E JUMP JUMPDEST PUSH1 0x11 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB98 DUP7 TIMESTAMP ADD PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP6 GT ISZERO PUSH2 0xBAE JUMPI PUSH4 0x59FA600 SWAP5 POP JUMPDEST PUSH1 0x0 PUSH2 0xBBB DUP7 TIMESTAMP ADD PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP4 SUB DUP2 PUSH2 0xBCA JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 DUP11 DUP2 PUSH2 0xBDB JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 DUP3 LT PUSH2 0xBFC JUMPI PUSH2 0xBFC CALLER PUSH1 0x1 DUP5 SUB DUP4 MUL DUP13 SUB DUP7 DUP10 DUP10 PUSH1 0x1 PUSH2 0x21C4 JUMP JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP4 DUP2 GT PUSH2 0xC1D JUMPI PUSH2 0xC16 CALLER DUP4 DUP4 DUP11 DUP11 PUSH1 0x1 PUSH2 0x21C4 JUMP JUMPDEST DUP8 ADD PUSH2 0xC00 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC57 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E2E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xC61 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0xC7D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0xD8CC4E8D808FE950B07BFFFCD83EEBF1190CD35EA77FE0C8A7D75A6E9B90E5C1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xCDA SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4C73 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD06 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD2A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D90 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD37 SWAP2 SWAP1 PUSH2 0x4D3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0xD49 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0xD65 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F9E JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT ISZERO PUSH2 0xDCF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F3E JUMP JUMPDEST DUP2 DUP4 SUB PUSH4 0x59FA600 DUP2 GT ISZERO PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F5E JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15180 DUP3 PUSH4 0x59FA600 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0xE13 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xEDF PUSH1 0xA PUSH3 0x123210 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0xE93 PUSH1 0xA PUSH1 0x9 MUL PUSH2 0xE75 PUSH3 0x123210 DUP8 DUP9 MUL PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x756E646572666C6F77206F6E207765696768742063616C63756C6174696F6E00 DUP2 MSTORE POP PUSH2 0x243B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5237 PUSH1 0x2D SWAP2 CODECOPY PUSH2 0x247A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0xEA3 JUMPI INVALID JUMPDEST DIV PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6F766572666C6F77206F6E2077656967687420636F6D7075746174696F6E0000 DUP2 MSTORE POP PUSH2 0x2408 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH2 0xF66 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0xF82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0x8BD SWAP1 DUP4 SWAP1 PUSH2 0x4C73 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 JUMPDEST PUSH4 0x59FA600 TIMESTAMP ADD DUP2 GT PUSH2 0x103E JUMPI PUSH2 0x1032 DUP3 PUSH2 0xFF7 DUP6 DUP5 PUSH2 0x24D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5374616B696E673A3A62616C616E63654F663A206F766572666C6F7700000000 DUP2 MSTORE POP PUSH2 0x2408 JUMP JUMPDEST SWAP2 POP PUSH3 0x127500 ADD PUSH2 0xFDC JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD DUP3 LT ISZERO PUSH2 0x1068 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4EEE JUMP JUMPDEST PUSH1 0x0 PUSH3 0x127500 PUSH1 0x1 SLOAD DUP5 SUB DUP2 PUSH2 0x107A JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 SLOAD PUSH3 0x127500 DUP3 MUL ADD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x10A3 PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x1044 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x127500 ADD JUMPDEST DUP3 DUP2 GT PUSH2 0x10E5 JUMPI PUSH1 0x0 PUSH2 0x10C5 DUP8 DUP4 PUSH2 0x24D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO PUSH2 0x10DB JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH3 0x127500 ADD PUSH2 0x10B2 JUMP JUMPDEST POP DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1110 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP4 POP DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x113D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH1 0x0 SWAP1 PUSH3 0x127500 ADD JUMPDEST DUP4 DUP2 GT PUSH2 0x11C1 JUMPI PUSH1 0x0 PUSH2 0x1160 DUP9 DUP4 PUSH2 0x24D8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x11B6 JUMPI DUP2 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x117E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1197 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0x114D JUMP JUMPDEST POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x120B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH2 0x1218 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2539 JUMP JUMPDEST PUSH2 0x1225 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2823 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1236 DUP4 PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x9EE JUMPI PUSH2 0x1276 DUP5 PUSH2 0x1258 DUP10 DUP5 DUP8 DUP12 PUSH2 0x2885 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x52D5 PUSH1 0x4A SWAP2 CODECOPY PUSH2 0x2408 JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x1241 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x129F DUP7 DUP7 DUP6 PUSH2 0x28ED JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x1305 JUMPI PUSH1 0x0 PUSH2 0x12BC DUP7 DUP7 PUSH2 0xDAD JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x12EC DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5264 PUSH1 0x3D SWAP2 CODECOPY PUSH2 0x247A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x12FC JUMPI INVALID JUMPDEST DIV SWAP3 POP POP PUSH2 0x130A JUMP JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1328 PUSH2 0x2B42 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x133F PUSH2 0x2B46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x136F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x1397 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x13A3 PUSH2 0x2B55 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x13E6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2BAD SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1434 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1400 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0x142C JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0x1434 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x13EB JUMP JUMPDEST POP DUP3 PUSH2 0x1452 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4EAE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 SHL DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x146E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x1490 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D4D JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0x14C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F2E JUMP JUMPDEST DUP9 DUP2 EQ PUSH2 0x14E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4FBE JUMP JUMPDEST PUSH2 0x151F DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2BB4 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1573 DUP5 DUP5 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x157F DUP6 DUP6 PUSH2 0x2CF6 JUMP JUMPDEST DUP1 DUP7 SUB SWAP4 POP SWAP2 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x15A0 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0x15BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F7E JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 PUSH1 0x1 NUMBER SUB TIMESTAMP PUSH2 0x122A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1668 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0x1684 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND PUSH1 0x1 GT DUP1 ISZERO SWAP1 PUSH2 0x16A8 JUMPI POP PUSH1 0x9 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND GT ISZERO JUMPDEST PUSH2 0x16C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4EFE JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1710 DUP6 DUP6 DUP6 PUSH2 0x28ED JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO DUP1 ISZERO PUSH2 0x172C JUMPI POP PUSH2 0x172C PUSH2 0x2D41 JUMP JUMPDEST ISZERO PUSH2 0x1735 JUMPI POP PUSH1 0x1 JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x1765 JUMPI PUSH1 0x0 PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP6 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x17AD DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x2539 JUMP JUMPDEST PUSH2 0x1225 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x2823 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x1820 SWAP1 PUSH2 0x4C5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0x1837 SWAP2 SWAP1 PUSH2 0x4C20 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH2 0x1847 PUSH2 0x2DC7 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x185B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D95 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x1881 SWAP1 PUSH2 0x4C68 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0x189E SWAP2 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x20 ADD PUSH2 0x4D49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x18CB SWAP3 SWAP2 SWAP1 PUSH2 0x4C2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x1908 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x192A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH2 0x193F DUP2 PUSH2 0x2DCB JUMP JUMPDEST PUSH2 0x195B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4EDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0x199A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4FDE JUMP JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0x19BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E1E JUMP JUMPDEST PUSH2 0x19C5 DUP2 DUP13 DUP13 PUSH2 0x1FD2 JUMP JUMPDEST PUSH2 0xC1D DUP2 DUP13 DUP13 PUSH2 0x208B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D4 SWAP1 PUSH2 0x4C68 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19E6 PUSH2 0x2E04 JUMP JUMPDEST DUP3 LT PUSH2 0x1A04 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4FCE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x1A3D JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x1AC9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x1B0C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x1BD7 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x1B3E PUSH2 0x3950 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x1BB2 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x1738 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x1BC9 JUMPI DUP2 SWAP4 POP PUSH2 0x1BD0 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x1B14 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1C2E DUP2 PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1C50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E3E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C61 PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1C6F JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x1C7F CALLER DUP6 PUSH1 0x1 NUMBER SUB PUSH2 0x28ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x1CAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F1E JUMP JUMPDEST PUSH2 0x1CB5 CALLER DUP6 DUP4 PUSH2 0x2E08 JUMP JUMPDEST PUSH2 0x1CC0 CALLER DUP5 DUP4 PUSH2 0x2E99 JUMP JUMPDEST PUSH2 0x1CCA DUP5 DUP3 PUSH2 0x2F1C JUMP JUMPDEST PUSH2 0x1CD4 DUP4 DUP3 PUSH2 0x2F94 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 PUSH2 0x1D3E JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE DUP1 JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x1D71 DUP3 DUP8 DUP6 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1D7C DUP2 DUP7 DUP6 PUSH2 0x309C JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x809D79C94C86576D61AFEF75495B8DF415224BF885310FED7EA315039F8C5B4C DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1DB9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4FEE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD3 PUSH2 0x2E04 JUMP JUMPDEST DUP3 LT PUSH2 0x1DF1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4FAE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x1E15 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x165A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x1E7D JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x165A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x1EAE JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x165A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x1F67 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x1EE0 PUSH2 0x3950 JUMP JUMPDEST POP PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x1F42 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x165A SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x1F59 JUMPI DUP2 SWAP4 POP PUSH2 0x1F60 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x1EB6 JUMP JUMPDEST POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1FAA PUSH2 0x1313 JUMP JUMPDEST PUSH2 0x1FC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH2 0x1FCF DUP2 PUSH2 0x311F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND SWAP1 PUSH2 0x2005 DUP6 DUP5 PUSH2 0x24D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP10 DUP6 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP4 SWAP5 POP SWAP3 SWAP2 DUP6 AND SWAP2 PUSH32 0xB846DC53D3621F480D692E73F4473156D20F23FF6B2C8237B7130B883226CCA9 SWAP1 PUSH2 0x2077 SWAP1 DUP9 SWAP1 PUSH2 0x4D3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x82E DUP3 DUP6 DUP4 DUP7 PUSH2 0x31A0 JUMP JUMPDEST PUSH2 0x2093 PUSH2 0x2D41 JUMP JUMPDEST ISZERO PUSH2 0x1225 JUMPI PUSH1 0x0 PUSH2 0x20AD DUP3 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x3204 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 AND SWAP1 DUP5 AND DUP2 EQ PUSH2 0x20EC JUMPI PUSH2 0x20EC DUP6 DUP6 DUP5 PUSH2 0x1FD2 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC24A0F8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x213D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2161 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D90 JUMP JUMPDEST SWAP1 POP PUSH2 0x2176 DUP5 PUSH3 0x24EA00 PUSH4 0xFFFFFFFF PUSH2 0x3204 AND JUMP JUMPDEST SWAP3 POP DUP1 DUP4 EQ ISZERO PUSH2 0x21BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 AND SWAP3 POP DUP6 AND DUP3 EQ PUSH2 0x21BC JUMPI PUSH2 0x21BC DUP7 DUP7 DUP6 PUSH2 0x1FD2 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x21ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F0E JUMP JUMPDEST DUP1 PUSH2 0x21FE JUMPI PUSH2 0x21FB DUP5 PUSH2 0x1044 JUMP JUMPDEST SWAP4 POP JUMPDEST TIMESTAMP DUP5 GT PUSH2 0x221D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F6E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x222F JUMPI DUP6 SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2241 JUMPI DUP3 SWAP2 POP JUMPDEST DUP1 PUSH2 0x2267 JUMPI PUSH1 0x0 PUSH2 0x2257 PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x2265 JUMPI DUP1 SWAP5 POP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x2273 DUP5 DUP7 PUSH2 0x24D8 JUMP JUMPDEST SWAP1 POP PUSH2 0x2281 DUP8 DUP8 DUP7 DUP9 PUSH2 0x3229 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 AND SWAP1 DUP5 AND DUP2 EQ PUSH2 0x2338 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x22F5 DUP2 DUP8 DUP5 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x2335 DUP3 DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5374616B696E673A3A7374616B653A2062616C616E6365206F766572666C6F77 DUP2 MSTORE POP PUSH2 0x2408 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH2 0x2343 DUP5 DUP8 DUP10 PUSH2 0x309C JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB846DC53D3621F480D692E73F4473156D20F23FF6B2C8237B7130B883226CCA9 DUP10 PUSH1 0x40 MLOAD PUSH2 0x2390 SWAP2 SWAP1 PUSH2 0x4D3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23AF DUP6 DUP6 PUSH2 0xDAD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x23BD DUP7 DUP6 PUSH2 0x1DC9 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x23ED DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x53C4 PUSH1 0x3B SWAP2 CODECOPY PUSH2 0x247A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x23FD JUMPI INVALID JUMPDEST DIV SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x130A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP2 SWAP1 PUSH2 0x4E0D JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO DUP3 SWAP1 PUSH2 0x2472 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP2 SWAP1 PUSH2 0x4E0D JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x2492 JUMPI POP PUSH1 0x0 PUSH2 0x1738 JUMP JUMPDEST DUP4 DUP4 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP6 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP4 AND DUP2 PUSH2 0x24AE JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND EQ DUP4 SWAP1 PUSH2 0x130A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP2 SWAP1 PUSH2 0x4E0D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x0 NOT PUSH4 0xFFFFFFFF SWAP2 DUP3 AND ADD AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x2555 JUMPI POP PUSH2 0x2555 PUSH2 0x2D41 JUMP JUMPDEST ISZERO PUSH2 0x255F JUMPI PUSH2 0x954 JUMP JUMPDEST PUSH2 0x2568 DUP4 PUSH2 0x3341 JUMP JUMPDEST SWAP3 POP PUSH2 0x2574 DUP5 DUP5 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2586 JUMPI CALLER SWAP2 POP JUMPDEST PUSH2 0x2590 DUP4 DUP6 PUSH2 0x2F1C JUMP JUMPDEST PUSH2 0x259B CALLER DUP5 DUP7 PUSH2 0x2E08 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x25CA SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH2 0x2FFF JUMP JUMPDEST DUP3 TIMESTAMP LT DUP1 ISZERO PUSH2 0x25DC JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x25E6 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x2729 JUMPI PUSH1 0x0 PUSH2 0x25F7 DUP6 DUP6 PUSH2 0x2CF6 JUMP JUMPDEST SWAP5 DUP6 SWAP1 SUB SWAP5 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x2727 JUMPI PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2635 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4ECE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x266B SWAP3 SWAP2 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4CD2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2685 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2699 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x26BD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D11 JUMP JUMPDEST POP PUSH1 0xD SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0xABE979E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0xABE979E1 SWAP3 PUSH2 0x26F4 SWAP3 SWAP2 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4CED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x270E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2722 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x275C SWAP1 DUP7 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4CD2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x278A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x27AE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D11 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x27CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E7E JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x667B6C8ED8622DAE7927A8B0837455098E32037A0181F9A2E21B9B72FEAD6CC7 DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD PUSH2 0x2814 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x504E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x282B PUSH2 0x2D41 JUMP JUMPDEST ISZERO PUSH2 0x954 JUMPI PUSH1 0x0 PUSH2 0x2845 DUP5 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x3204 AND JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x2853 JUMPI POP DUP1 TIMESTAMP LT ISZERO JUMPDEST ISZERO PUSH2 0x82E JUMPI PUSH1 0x0 PUSH2 0x2868 CALLER DUP4 PUSH1 0x1 NUMBER SUB PUSH2 0x28ED JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x21BC JUMPI PUSH2 0x21BC DUP2 DUP4 DUP7 DUP7 PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2892 DUP6 DUP6 PUSH2 0xDAD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28A1 DUP8 DUP8 DUP7 PUSH2 0x19DC JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x28D1 DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x519B PUSH1 0x47 SWAP2 CODECOPY PUSH2 0x247A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x28E1 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28F7 PUSH2 0x2E04 JUMP JUMPDEST DUP3 LT PUSH2 0x2915 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F8E JUMP JUMPDEST PUSH2 0x291E DUP4 PUSH2 0x3341 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP4 POP PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x295A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x29E6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x2A29 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x2AF4 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x2A5B PUSH2 0x3950 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x2ACF JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x1738 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x2AE6 JUMPI DUP2 SWAP4 POP PUSH2 0x2AED JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x2A31 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH4 0xC09DDFD PUSH1 0xE0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B8F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2BD0 SWAP2 SWAP1 PUSH2 0x4C14 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2C0D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C12 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1225 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0x2C3D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E6E JUMP JUMPDEST PUSH2 0x2C70 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x3366 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP2 SWAP1 PUSH2 0x4E0D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x2CB2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E4E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CC2 CALLER DUP4 PUSH1 0x1 NUMBER SUB PUSH2 0x28ED JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO PUSH2 0x1225 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E9E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2D02 TIMESTAMP PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2D10 DUP5 DUP4 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 POP PUSH1 0x64 SWAP1 PUSH1 0xA DUP8 DUP5 MUL DUP3 AND DIV AND DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x40 MLOAD PUSH4 0xDBB049D1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xDBB049D1 SWAP1 PUSH2 0x2D72 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x4C81 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2DC2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D11 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x165A JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x2E8B SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x52A1 SWAP1 DUP4 ADD CODECOPY PUSH2 0x243B JUMP JUMPDEST SWAP1 POP PUSH2 0x21BC DUP7 DUP7 DUP6 DUP5 PUSH2 0x3460 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x33 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x2E8B SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x5391 SWAP1 DUP4 ADD CODECOPY PUSH2 0x2408 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x6 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP3 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x35 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP1 SWAP3 PUSH2 0x2F87 SWAP3 DUP6 SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x5473 SWAP1 DUP4 ADD CODECOPY PUSH2 0x243B JUMP JUMPDEST SWAP1 POP PUSH2 0x82E DUP6 DUP5 DUP4 PUSH2 0x35E0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x6 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP3 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x34 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP1 SWAP3 PUSH2 0x2F87 SWAP3 DUP6 SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x531F SWAP1 DUP4 ADD CODECOPY PUSH2 0x2408 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP2 SWAP1 DUP5 AND DUP3 GT ISZERO PUSH2 0x3090 JUMPI PUSH2 0x308D DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x54DF PUSH1 0x38 SWAP2 CODECOPY PUSH2 0x243B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x21BC DUP7 DUP7 DUP6 DUP5 PUSH2 0x371E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x37 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x308D SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x54A8 SWAP1 DUP4 ADD CODECOPY PUSH2 0x2408 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3145 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E8E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x31CB JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x954 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x31EA JUMPI PUSH2 0x31EA DUP5 DUP3 DUP5 PUSH2 0x2FFF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x954 JUMPI PUSH2 0x954 DUP4 DUP3 DUP5 PUSH2 0x309C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1738 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4EBE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x325E SWAP1 DUP9 SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4CAA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x328C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x32B0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D11 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x32BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x32C8 DUP5 DUP5 PUSH2 0x24D8 JUMP JUMPDEST SWAP1 POP PUSH2 0x32ED DUP2 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x544B PUSH1 0x28 SWAP2 CODECOPY PUSH2 0x2408 JUMP JUMPDEST SWAP1 POP PUSH2 0x32F9 DUP4 DUP7 PUSH2 0x2F94 JUMP JUMPDEST PUSH2 0x3304 DUP5 DUP5 DUP8 PUSH2 0x2E99 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFC5B1BAC0416800B42A669229A346B6E5A15DB3896339DBDC5FA376E1E4570A DUP7 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1DB9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x334D DUP4 PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 EQ PUSH2 0x335F JUMPI PUSH3 0x127500 DUP2 ADD SWAP3 POP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x33A5 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x33FE JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x33C2 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x33DF JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x33AD JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x3453 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3417 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x3434 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x3402 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3484 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5353 PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x3921 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x34D5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x3537 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP8 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0x82E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 SWAP1 SWAP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA DUP11 MSTORE DUP5 DUP2 KECCAK256 DUP10 DUP3 MSTORE DUP11 MSTORE DUP5 DUP2 KECCAK256 DUP9 DUP8 AND DUP3 MSTORE DUP11 MSTORE DUP5 DUP2 KECCAK256 SWAP4 MLOAD DUP5 SLOAD SWAP4 MLOAD SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP8 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP5 DUP6 AND OR SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP3 SSTORE SWAP1 DUP5 MSTORE PUSH1 0xB DUP8 MSTORE DUP2 DUP5 KECCAK256 SWAP6 DUP5 MSTORE SWAP5 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP3 ADD SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3604 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5353 PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x3921 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x3643 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x3693 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP8 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0x954 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x6 DUP3 MSTORE DUP5 DUP2 KECCAK256 DUP9 DUP8 AND DUP3 MSTORE DUP3 MSTORE DUP5 DUP2 KECCAK256 SWAP4 MLOAD DUP5 SLOAD SWAP4 MLOAD PUSH4 0xFFFFFFFF NOT SWAP5 DUP6 AND SWAP2 DUP9 AND SWAP2 SWAP1 SWAP2 OR PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL SWAP2 SWAP1 SWAP9 AND MUL SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP3 SSTORE SWAP6 DUP5 MSTORE PUSH1 0x7 SWAP1 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 AND PUSH1 0x1 SWAP1 SWAP3 ADD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3742 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5353 PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x3921 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 DUP5 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x37D8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP4 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x383A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND MUL OR SWAP1 SSTORE PUSH2 0x38E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP14 DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP13 DUP8 AND DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP5 MLOAD SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP6 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP6 DUP7 AND OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP6 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x9 DUP5 MSTORE DUP5 DUP3 KECCAK256 DUP11 DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP9 ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC7B38FB25352E6F351F57E2C922F84DB5C97E09A6246BBE1D2EEDFCDB01C4C62 DUP7 DUP4 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1DB9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5009 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x20 SHL DUP5 LT PUSH2 0x3948 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP2 SWAP1 PUSH2 0x4E0D JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x165A DUP2 PUSH2 0x5159 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x165A DUP2 PUSH2 0x5159 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x165A DUP2 PUSH2 0x516D JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x165A DUP2 PUSH2 0x5176 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x165A DUP2 PUSH2 0x5176 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x39B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x39C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x165A DUP2 PUSH2 0x517F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x165A DUP2 PUSH2 0x5188 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x165A DUP2 PUSH2 0x5191 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A1F DUP5 DUP5 PUSH2 0x3967 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A46 DUP6 DUP6 PUSH2 0x3967 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3A57 DUP6 DUP3 DUP7 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A80 DUP6 DUP6 PUSH2 0x3967 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3A57 DUP6 DUP3 DUP7 ADD PUSH2 0x3988 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3AA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3AB5 DUP9 DUP9 PUSH2 0x3967 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x3AC6 DUP9 DUP3 DUP10 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x3AD7 DUP9 DUP3 DUP10 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3AF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B00 DUP9 DUP3 DUP10 ADD PUSH2 0x399E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3B24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B30 DUP7 DUP7 PUSH2 0x3967 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3B41 DUP7 DUP3 DUP8 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3B52 DUP7 DUP3 DUP8 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3B72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B7E DUP8 DUP8 PUSH2 0x3967 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x3B8F DUP8 DUP3 DUP9 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x3BA0 DUP8 DUP3 DUP9 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x3BB1 DUP8 DUP3 DUP9 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3BD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3BE4 DUP11 DUP11 PUSH2 0x3967 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x3BF5 DUP11 DUP3 DUP12 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x3C06 DUP11 DUP3 DUP12 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x3C17 DUP11 DUP3 DUP12 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x3C28 DUP11 DUP3 DUP12 ADD PUSH2 0x39EB JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x3C39 DUP11 DUP3 DUP12 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x3C4A DUP11 DUP3 DUP12 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3C6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3C7A DUP7 DUP7 PUSH2 0x3967 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3C8B DUP7 DUP3 DUP8 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3B52 DUP7 DUP3 DUP8 ADD PUSH2 0x39E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3CB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3CC0 DUP9 DUP9 PUSH2 0x3967 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x3CD1 DUP9 DUP3 DUP10 ADD PUSH2 0x39F6 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x3CE2 DUP9 DUP3 DUP10 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x3CF3 DUP9 DUP3 DUP10 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x3D04 DUP9 DUP3 DUP10 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A1F DUP5 DUP5 PUSH2 0x397D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A1F DUP5 DUP5 PUSH2 0x3988 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3D62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3D6E DUP7 DUP7 PUSH2 0x3993 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3D7F DUP7 DUP3 DUP8 ADD PUSH2 0x3972 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3B52 DUP7 DUP3 DUP8 ADD PUSH2 0x3993 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3DA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A1F DUP5 DUP5 PUSH2 0x3993 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A80 DUP6 DUP6 PUSH2 0x3988 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3DE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3DF2 DUP10 DUP10 PUSH2 0x3988 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x3E03 DUP10 DUP3 DUP11 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x3E14 DUP10 DUP3 DUP11 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x3E25 DUP10 DUP3 DUP11 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x3E36 DUP10 DUP3 DUP11 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x3E47 DUP10 DUP3 DUP11 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3E73 DUP6 DUP6 PUSH2 0x3988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3A57 DUP6 DUP3 DUP7 ADD PUSH2 0x39E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A80 DUP6 DUP6 PUSH2 0x39E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A1F DUP5 DUP5 PUSH2 0x39F6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3ED4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A80 DUP6 DUP6 PUSH2 0x39F6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3EF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3F01 DUP7 DUP7 PUSH2 0x39F6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3F12 DUP7 DUP3 DUP8 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3B52 DUP7 DUP3 DUP8 ADD PUSH2 0x3967 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3F39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3F45 DUP8 DUP8 PUSH2 0x39F6 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x3F56 DUP8 DUP3 DUP9 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x3F67 DUP8 DUP3 DUP9 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x3BB1 DUP8 DUP3 DUP9 ADD PUSH2 0x3967 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F84 DUP4 DUP4 PUSH2 0x4071 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F84 DUP4 DUP4 PUSH2 0x4BEE JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50FA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50B6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FBB DUP3 PUSH2 0x50A4 JUMP JUMPDEST PUSH2 0x3FC5 DUP2 DUP6 PUSH2 0x50A8 JUMP JUMPDEST SWAP4 POP PUSH2 0x3FD0 DUP4 PUSH2 0x5092 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3FFE JUMPI DUP2 MLOAD PUSH2 0x3FE8 DUP9 DUP3 PUSH2 0x3F78 JUMP JUMPDEST SWAP8 POP PUSH2 0x3FF3 DUP4 PUSH2 0x5092 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x3FD4 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4014 DUP3 PUSH2 0x50A4 JUMP JUMPDEST PUSH2 0x401E DUP2 DUP6 PUSH2 0x50A8 JUMP JUMPDEST SWAP4 POP PUSH2 0x4029 DUP4 PUSH2 0x5092 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3FFE JUMPI DUP2 MLOAD PUSH2 0x4041 DUP9 DUP3 PUSH2 0x3F8C JUMP JUMPDEST SWAP8 POP PUSH2 0x404C DUP4 PUSH2 0x5092 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x402D JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50C1 JUMP JUMPDEST PUSH2 0x3FA1 PUSH2 0x406C DUP3 PUSH2 0x50C6 JUMP JUMPDEST PUSH2 0x50D0 JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50D0 JUMP JUMPDEST PUSH2 0x3FA1 PUSH2 0x406C DUP3 PUSH2 0x50D0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4092 DUP4 DUP6 PUSH2 0x50B1 JUMP JUMPDEST SWAP4 POP PUSH2 0x409F DUP4 DUP6 DUP5 PUSH2 0x5117 JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40B0 DUP3 PUSH2 0x50A4 JUMP JUMPDEST PUSH2 0x40BA DUP2 DUP6 PUSH2 0x50B1 JUMP JUMPDEST SWAP4 POP PUSH2 0x40CA DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5123 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 DUP2 AND PUSH1 0x0 DUP2 EQ PUSH2 0x40F1 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x4114 JUMPI PUSH2 0x4153 JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP4 DIV AND PUSH2 0x4102 DUP2 DUP8 PUSH2 0x50B1 JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP2 MSTORE SWAP6 POP DUP6 ADD SWAP3 POP PUSH2 0x4153 JUMP JUMPDEST PUSH1 0x2 DUP3 DIV PUSH2 0x4122 DUP2 DUP8 PUSH2 0x50B1 JUMP JUMPDEST SWAP6 POP PUSH2 0x412D DUP6 PUSH2 0x5098 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x414C JUMPI DUP2 SLOAD DUP9 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x4130 JUMP JUMPDEST POP POP DUP6 ADD SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x5101 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x416F DUP3 PUSH2 0x50A4 JUMP JUMPDEST PUSH2 0x4179 DUP2 DUP6 PUSH2 0x50A8 JUMP JUMPDEST SWAP4 POP PUSH2 0x4189 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5123 JUMP JUMPDEST PUSH2 0x4192 DUP2 PUSH2 0x514F JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41A9 PUSH1 0x29 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A64656C656761746542795369673A207369676E61747572 DUP2 MSTORE PUSH9 0x1948195E1C1A5C9959 PUSH1 0xBA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41F4 PUSH1 0x24 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x7468657265206973206E6F206E6577207374616B696E6720636F6E7472616374 DUP2 MSTORE PUSH4 0x81CD95D PUSH1 0xE2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x423A PUSH1 0x42 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A657874656E645374616B696E674475726174696F6E3A20 DUP2 MSTORE PUSH32 0x63616E6E6F742072656475636520746865207374616B696E6720647572617469 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x37B7 PUSH1 0xF1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42A4 PUSH1 0x4D DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A77697468647261773A20616D6F756E74206F6620746F6B DUP2 MSTORE PUSH32 0x656E7320746F2062652077697468647261776E206E6565647320746F20626520 PUSH1 0x20 DUP3 ADD MSTORE PUSH13 0x626967676572207468616E203 PUSH1 0x9C SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4319 PUSH1 0x20 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x76657374696E67207265676973747279206164647265737320696E76616C6964 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4352 PUSH1 0x30 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x72656365697665417070726F76616C3A205472616E73616374696F6E20657865 DUP2 MSTORE PUSH16 0x31BABA34B7B7103932BB32B93A32B217 PUSH1 0x81 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43A4 PUSH1 0x28 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A77697468647261773A20546F6B656E207472616E736665 DUP2 MSTORE PUSH8 0x1C8819985A5B1959 PUSH1 0xC2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43EE PUSH1 0x26 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4436 PUSH1 0x25 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A77697468647261773A206E6F7420656E6F756768206261 DUP2 MSTORE PUSH5 0x6C616E6365 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x447D PUSH1 0x15 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44AE PUSH1 0x2 DUP4 PUSH2 0x50B1 JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44CC PUSH1 0x1B DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4505 PUSH1 0x30 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A77697468647261773A2046656553686172696E67206164 DUP2 MSTORE PUSH16 0x191C995CDCC81DD85CDB89DD081CD95D PUSH1 0x82 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4557 PUSH1 0x29 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A64656C656761746542795369673A20696E76616C696420 DUP2 MSTORE PUSH9 0x7369676E6174757265 PUSH1 0xB8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45A2 PUSH1 0x4D DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A74696D657374616D70546F4C6F636B DUP2 MSTORE PUSH32 0x446174653A2074696D657374616D70206C696573206265666F726520636F6E74 PUSH1 0x20 DUP3 ADD MSTORE PUSH13 0x3930B1BA1031B932B0BA34B7B7 PUSH1 0x99 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4617 PUSH1 0x2D DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x776569676874207363616C696E6720646F65736E27742062656C6F6E6720746F DUP2 MSTORE PUSH13 0x2072616E6765205B312C20395D PUSH1 0x98 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4666 PUSH1 0x43 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A7374616B653A20616D6F756E74206F6620746F6B656E73 DUP2 MSTORE PUSH32 0x20746F207374616B65206E6565647320746F2062652062696767657220746861 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x6E203 PUSH1 0xEC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46D1 PUSH1 0x4B DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A657874656E645374616B696E674475726174696F6E3A20 DUP2 MSTORE PUSH32 0x6E6F7468696E67207374616B656420756E74696C207468652070726576696F75 PUSH1 0x20 DUP3 ADD MSTORE PUSH11 0x73206C6F636B2064617465 PUSH1 0xA8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4744 PUSH1 0xF DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x476F PUSH1 0x4C DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A636F6D707574655765696768744279 DUP2 MSTORE PUSH32 0x446174653A2064617465206E6565647320746F20626520626967676572207468 PUSH1 0x20 DUP3 ADD MSTORE PUSH12 0x616E20737461727444617465 PUSH1 0xA0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47E3 PUSH1 0x43 DUP4 PUSH2 0x50B1 JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x484E PUSH1 0xC DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4876 PUSH1 0x4D DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A636F6D707574655765696768744279446174653A72656D DUP2 MSTORE PUSH32 0x61696E696E672074696D652063616E277420626520626967676572207468616E PUSH1 0x20 DUP3 ADD MSTORE PUSH13 0x1036B0BC10323AB930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48EB PUSH1 0x36 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A74696D657374616D70546F4C6F636B446174653A207374 DUP2 MSTORE PUSH22 0x185ADA5B99C81C195C9A5BD9081D1BDBC81CDA1BDC9D PUSH1 0x52 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4943 PUSH1 0x29 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x63616E277420726573657420746865206E6577207374616B696E6720636F6E74 DUP2 MSTORE PUSH9 0x7261637420746F203 PUSH1 0xBC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x498E PUSH1 0x4B DUP4 PUSH2 0x50B1 JUMP JUMPDEST PUSH32 0x44656C65676174696F6E28616464726573732064656C6567617465652C75696E DUP2 MSTORE PUSH32 0x74323536206C6F636B446174652C75696E74323536206E6F6E63652C75696E74 PUSH1 0x20 DUP3 ADD MSTORE PUSH11 0x3235362065787069727929 PUSH1 0xA8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x4B ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A01 PUSH1 0x3D DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A6765745072696F7255736572537461 DUP2 MSTORE PUSH32 0x6B65416E64446174653A206E6F74207965742064657465726D696E6564000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A60 PUSH1 0x21 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x46656553686172696E6720616464726573732073686F756C646E277420626520 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AA3 PUSH1 0x3F DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A6765745072696F72546F74616C5374 DUP2 MSTORE PUSH32 0x616B6573466F72446174653A206E6F74207965742064657465726D696E656400 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B02 PUSH1 0xF DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B2D PUSH1 0x44 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A6765745072696F725374616B654279 DUP2 MSTORE PUSH32 0x44617465466F7244656C6567617465653A206E6F74207965742064657465726D PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x1A5B9959 PUSH1 0xE2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B99 PUSH1 0x25 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A64656C656761746542795369673A20696E76616C696420 DUP2 MSTORE PUSH5 0x6E6F6E6365 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50DF JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50E8 JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x510C JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50EE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C03 DUP3 DUP7 PUSH2 0x4060 JUMP JUMPDEST PUSH1 0x1C DUP3 ADD SWAP2 POP PUSH2 0xEDF DUP3 DUP5 DUP7 PUSH2 0x4086 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1738 DUP3 DUP5 PUSH2 0x40A5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1738 DUP3 DUP5 PUSH2 0x40D4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C37 DUP3 PUSH2 0x44A1 JUMP JUMPDEST SWAP2 POP PUSH2 0x4C43 DUP3 DUP6 PUSH2 0x407A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x4C53 DUP3 DUP5 PUSH2 0x407A JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 PUSH2 0x47D6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 PUSH2 0x4981 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x3FA7 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x3F98 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4C9D DUP3 DUP6 PUSH2 0x3FA7 JUMP JUMPDEST PUSH2 0x1738 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3FA7 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4CB8 DUP3 DUP7 PUSH2 0x3FA7 JUMP JUMPDEST PUSH2 0x4CC5 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3FA7 JUMP JUMPDEST PUSH2 0x3A1F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4BE5 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4CE0 DUP3 DUP6 PUSH2 0x3FA7 JUMP JUMPDEST PUSH2 0x1738 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4BE5 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4CFB DUP3 DUP6 PUSH2 0x3FA7 JUMP JUMPDEST PUSH2 0x1738 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4BEE JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4D19 DUP2 DUP6 PUSH2 0x3FB0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3A1F DUP2 DUP5 PUSH2 0x4009 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x4057 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x4071 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4D57 DUP3 DUP9 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4D64 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x3FA7 JUMP JUMPDEST PUSH2 0x4D71 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4D7E PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4D8B PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4071 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4DA3 DUP3 DUP8 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4DB0 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4DBD PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0xEDF PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x3FA7 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4DD8 DUP3 DUP8 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4DE5 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4BDC JUMP JUMPDEST PUSH2 0x4DF2 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0xEDF PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x4071 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x415B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1738 DUP2 DUP5 PUSH2 0x4164 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x419C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x41E7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x422D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4297 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x430C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4345 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4397 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x43E1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4429 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4470 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x44BF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x44F8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x454A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4595 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x460A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4659 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x46C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4737 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4762 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4841 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4869 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x48DE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4936 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x49F4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4A53 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4A96 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4AF5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4B20 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4B8C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4FFC DUP3 DUP7 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4CC5 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4071 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x5017 DUP3 DUP7 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4CC5 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4BE5 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x4BD3 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4CFB DUP3 DUP6 PUSH2 0x4BD3 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x4BEE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x505C DUP3 DUP7 PUSH2 0x4BE5 JUMP JUMPDEST PUSH2 0x5069 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x3A1F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4057 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4FFC DUP3 DUP7 PUSH2 0x4BE5 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4CFB DUP3 DUP6 PUSH2 0x4BEE JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 PUSH2 0x50D3 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF NOT AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 PUSH2 0x50B6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 PUSH2 0x50EE JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x513E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5126 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x954 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x5162 DUP2 PUSH2 0x50B6 JUMP JUMPDEST DUP2 EQ PUSH2 0x1FCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5162 DUP2 PUSH2 0x50C1 JUMP JUMPDEST PUSH2 0x5162 DUP2 PUSH2 0x50D0 JUMP JUMPDEST PUSH2 0x5162 DUP2 PUSH2 0x50DF JUMP JUMPDEST PUSH2 0x5162 DUP2 PUSH2 0x50E8 JUMP JUMPDEST PUSH2 0x5162 DUP2 PUSH2 0x50EE JUMP INVALID JUMPI PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A5F746F74616C506F776572427944 PUSH2 0x7465 CHAINID PUSH16 0x7244656C6567617465653A206D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72546F74616C56 PUSH16 0x74696E67506F7765723A206F76657266 PUSH13 0x6F77206F6E20746F74616C2076 PUSH16 0x74696E6720706F77657220636F6D7075 PUSH21 0x6174696F6E6D756C7469706C69636174696F6E206F PUSH23 0x6572666C6F77206F6E2077656967687420636F6D707574 PUSH2 0x7469 PUSH16 0x6E57656967687465645374616B696E67 GASPRICE GASPRICE PUSH24 0x656967687465645374616B654279446174653A206D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F775374616B696E673A3A 0x5F PUSH5 0x6563726561 PUSH20 0x65557365725374616B653A207374616B65642061 PUSH14 0x6F756E7420756E646572666C6F77 JUMPI PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A6765745072696F72566F7465733A KECCAK256 PUSH16 0x766572666C6F77206F6E20746F74616C KECCAK256 PUSH23 0x6F74696E6720706F77657220636F6D7075746174696F6E MSTORE8 PUSH21 0x616B696E673A3A5F696E6372656173654461696C79 MSTORE8 PUSH21 0x616B653A207374616B656420616D6F756E74206F76 PUSH6 0x72666C6F7753 PUSH21 0x616B696E673A3A5F77726974655374616B696E6743 PUSH9 0x65636B706F696E743A KECCAK256 PUSH3 0x6C6F63 PUSH12 0x206E756D6265722065786365 PUSH6 0x647320333220 PUSH3 0x697473 MSTORE8 PUSH21 0x616B696E673A3A5F696E6372656173655573657253 PUSH21 0x616B653A207374616B656420616D6F756E74206F76 PUSH6 0x72666C6F7757 PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A5F746F74616C506F776572427944 PUSH2 0x7465 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72576569676874 PUSH6 0x645374616B65 GASPRICE KECCAK256 PUSH16 0x766572666C6F77206F6E20746F74616C KECCAK256 PUSH24 0x656967687420636F6D7075746174696F6E5374616B696E67 GASPRICE GASPRICE PUSH10 0x6E637265617365537461 PUSH12 0x653A2062616C616E6365206F PUSH23 0x6572666C6F775374616B696E673A3A5F64656372656173 PUSH6 0x4461696C7953 PUSH21 0x616B653A207374616B656420616D6F756E7420756E PUSH5 0x6572666C6F PUSH24 0x5374616B696E673A3A5F696E63726561736544656C656761 PUSH21 0x655374616B653A207374616B656420616D6F756E74 KECCAK256 PUSH16 0x766572666C6F775374616B696E673A3A 0x5F PUSH5 0x6563726561 PUSH20 0x6544656C65676174655374616B653A207374616B PUSH6 0x6420616D6F75 PUSH15 0x7420756E646572666C6F77A365627A PUSH27 0x723158204E5624842B70EEBAD1EF63A30CC6E4F4B569E7EAA0B2A2 INVALID SWAP3 TIMESTAMP 0x48 0x5D DUP2 ISZERO PUSH21 0x1A6C6578706572696D656E74616CF564736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "1973:26:59:-;885:26534:57;1973:26:59;;885:26534:57;1973:26:59;;;-1:-1:-1;;;1973:26:59;;;;;;;;;;:::i;:::-;-1:-1:-1;2262:31:59;;;-1:-1:-1;;2262:31:59;;;5091:52;;;-1:-1:-1;;;;;5091:52:59;-1:-1:-1;;;5091:52:59;;;-1:-1:-1;697:12:142;:10;:12::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;885:26534:57;;780:87:137;853:10;780:87;;:::o;885:26534:57:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;885:26534:57;;;-1:-1:-1;885:26534:57;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061038d5760003560e01c8063836eebee116101de578063b4b5ea571161010f578063db27ec18116100ad578063e97ffacb1161007c578063e97ffacb14610767578063eefb8c471461077a578063f09cfc641461078d578063f2fde38b146107a05761038d565b8063db27ec1814610726578063dfb267c214610739578063e63a562e1461074c578063e7a324dc1461075f5761038d565b8063cf7b684a116100e9578063cf7b684a146106e5578063d27569e7146106f8578063d5c3846414610700578063dab6ca44146107135761038d565b8063b4b5ea57146106b7578063b8a98732146106ca578063bf626ec1146106dd5761038d565b806396a590c11161017c578063a58848c511610156578063a58848c51461068c578063adae900214610694578063ae81dfe4146106a7578063b1724b46146106af5761038d565b806396a590c1146106505780639929e886146106715780639a377b82146106795761038d565b80638f32d59b116101b85780638f32d59b146106025780638f4ffcb11461060a5780639436e7d41461061d57806394c2ce581461063d5761038d565b8063836eebee146105d45780638da5cb5b146105e75780638dae1b16146105ef5761038d565b8063429b62e5116102c357806368cefccc1161026157806372ec97951161023057806372ec97951461057a5780637ba6f4581461058d5780637ecebe00146105ae578063800b64ca146105c15761038d565b806368cefccc146105205780636b6fde0e14610541578063704802751461055457806370a08231146105675761038d565b80635419675f1161029d5780635419675f146104ea5780635e0be607146104f2578063626ee2d9146104fa57806362cf8a081461050d5761038d565b8063429b62e5146104b1578063450b0601146104c45780634b2fea1e146104d75761038d565b80631785f53c1161033057806325629ec01161030a57806325629ec01461045857806327dd1b001461046b57806337e6b1c11461048b5780633827fca51461049e5761038d565b80631785f53c1461042a57806320606b701461043d5780632522d7ba146104455761038d565b806307392cc01161036c57806307392cc0146103da5780630c09ddfd146103fa578063104932cf1461040d57806317748adc146104155761038d565b8062073f9914610392578063026e402b146103b057806303a18fa3146103c5575b600080fd5b61039a6107b3565b6040516103a79190614d3b565b60405180910390f35b6103c36103be366004613a61565b6107b9565b005b6103cd6107d3565b6040516103a79190614dff565b6103ed6103e8366004613d2f565b6107e2565b6040516103a79190614d2d565b6103c3610408366004613c9c565b6107f7565b6103cd610835565b61041d610844565b6040516103a79190615040565b6103c3610438366004613a01565b610849565b61039a6108c8565b61041d610453366004613e84565b6108df565b6103c3610466366004613f23565b610945565b61047e610479366004613a61565b61095a565b6040516103a79190614c73565b61041d610499366004613b0f565b610980565b6103c36104ac366004613a27565b6109f8565b6103ed6104bf366004613a01565b610b0a565b6103c36104d2366004613a01565b610b1f565b6103c36104e5366004613dcd565b610b8b565b6103c3610c2a565b6103c3610c59565b6103c3610508366004613a01565b610d41565b61041d61051b366004613dae565b610dad565b61053361052e366004613c59565b610ee8565b6040516103a7929190615032565b61053361054f366004613c59565b610f23565b6103c3610562366004613a01565b610f5e565b61041d610575366004613a01565b610fd5565b61039a610588366004613d2f565b611044565b6105a061059b366004613a01565b61108f565b6040516103a7929190614d08565b61039a6105bc366004613a01565b6111ca565b6103c36105cf366004613ee0565b6111dc565b61041d6105e2366004613b0f565b61122a565b61047e611282565b61041d6105fd366004613b5c565b611291565b6103ed611313565b6103c3610618366004613a91565b611337565b61063061062b366004613d2f565b61152b565b6040516103a79190615024565b61063061064b366004613a61565b611543565b61066361065e366004613ec1565b611566565b6040516103a7929190615084565b6103ed61158f565b6103c3610687366004613a01565b611598565b6103cd61160a565b6103ed6106a2366004613a01565b611619565b61047e61162e565b61039a611642565b61041d6106c5366004613a01565b61164a565b6103c36106d8366004613ea3565b611660565b61041d6116ec565b61041d6106f3366004613b0f565b611702565b61041d61173f565b61041d61070e366004613d2f565b611744565b6103c3610721366004613ee0565b6117a0565b610630610734366004613a61565b6117ba565b610533610747366004613e54565b6117dd565b6103c361075a366004613bbd565b611812565b61039a6119d0565b61041d610775366004613b0f565b6119dc565b6103c3610788366004613dae565b611c25565b61041d61079b366004613dae565b611dc9565b6103c36107ae366004613a01565b611fa2565b60015481565b6107c4338383611fd2565b6107cf33838361208b565b5050565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b33301461081f5760405162461bcd60e51b815260040161081690614f4e565b60405180910390fd5b61082e858585858560006121c4565b5050505050565b6011546001600160a01b031681565b600981565b610851611313565b61086d5760405162461bcd60e51b815260040161081690614f4e565b6001600160a01b0381166000908152600f602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f906108bd908390614c73565b60405180910390a150565b6040516108d490614c5d565b604051809103902081565b6000806108eb83611044565b905063059fa6008101815b81811161093c576109308461091283868a63ffffffff166123a2565b6040518060800160405280605581526020016151e260559139612408565b935062127500016108f6565b50505092915050565b610954338585858560006121c4565b50505050565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b60008061098c83611044565b905063059fa6008101815b8181116109ee5760006109ac8883868a611291565b90506001600160601b038116156109e3576109e085826040518060800160405280604c81526020016153ff604c9139612408565b94505b506212750001610997565b5050509392505050565b610a00611313565b80610a1a5750336000908152600f602052604090205460ff165b610a365760405162461bcd60e51b815260040161081690614f4e565b6001600160a01b0382166000818152600e602052604090819020805460ff1916600117905551633c7925e360e11b81526378f24bc690610a7a908490600401614c73565b600060405180830381600087803b158015610a9457600080fd5b505af1158015610aa8573d6000803e3d6000fd5b5050506001600160a01b0383166000908152600e602052604090819020805460ff19169055517f2366e0b6b1af17c0ceed50685c570d519cae11e7faaf007bbe667e94a5ee3cd59150610afe9084908490614c8f565b60405180910390a15050565b600f6020526000908152604090205460ff1681565b610b27611313565b610b435760405162461bcd60e51b815260040161081690614f4e565b6001600160a01b038116610b695760405162461bcd60e51b815260040161081690614e5e565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000610b98864201611044565b905063059fa600851115610bae5763059fa60094505b6000610bbb864201611044565b905060008583830381610bca57fe5b0460010190506000818a81610bdb57fe5b04905060018210610bfc57610bfc336001840383028c0386898960016121c4565b8387015b838111610c1d57610c163383838a8a60016121c4565b8701610c00565b5050505050505050505050565b60055461010090046001600160a01b0316610c575760405162461bcd60e51b815260040161081690614e2e565b565b610c61611313565b610c7d5760405162461bcd60e51b815260040161081690614f4e565b6005805460ff191660011790556003546040516370a0823160e01b81527fd8cc4e8d808fe950b07bfffcd83eebf1190cd35ea77fe0c8a7d75a6e9b90e5c1916001600160a01b0316906370a0823190610cda903090600401614c73565b60206040518083038186803b158015610cf257600080fd5b505afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d2a9190810190613d90565b604051610d379190614d3b565b60405180910390a1565b610d49611313565b610d655760405162461bcd60e51b815260040161081690614f4e565b6001600160a01b038116610d8b5760405162461bcd60e51b815260040161081690614f9e565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600081831015610dcf5760405162461bcd60e51b815260040161081690614f3e565b81830363059fa600811115610df65760405162461bcd60e51b815260040161081690614f5e565b6000620151808263059fa600036001600160601b031681610e1357fe5b049050610edf600a621232106001600160601b0316610e93600a600902610e75621232108788026040518060400160405280601f81526020017f756e646572666c6f77206f6e207765696768742063616c63756c6174696f6e0081525061243b565b6040518060600160405280602d8152602001615237602d913961247a565b6001600160601b031681610ea357fe5b046040518060400160405280601e81526020017f6f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e0000815250612408565b95945050505050565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b610f66611313565b610f825760405162461bcd60e51b815260040161081690614f4e565b6001600160a01b0381166000908152600f602052604090819020805460ff19166001179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339906108bd908390614c73565b6001546000905b63059fa6004201811161103e5761103282610ff785846124d8565b6040518060400160405280601c81526020017f5374616b696e673a3a62616c616e63654f663a206f766572666c6f7700000000815250612408565b91506212750001610fdc565b50919050565b60006001548210156110685760405162461bcd60e51b815260040161081690614eee565b60006212750060015484038161107a57fe5b04905060015462127500820201915050919050565b60608060006110a363059fa6004201611044565b60015490915060009062127500015b8281116110e55760006110c587836124d8565b6001600160601b031611156110db576001909101905b62127500016110b2565b5080604051908082528060200260200182016040528015611110578160200160208202803883390190505b5093508060405190808252806020026020018201604052801561113d578160200160208202803883390190505b5060015490935060009062127500015b8381116111c157600061116088836124d8565b90506001600160601b038116156111b6578187848151811061117e57fe5b6020026020010181815250508086848151811061119757fe5b6001600160601b03909216602092830291909101909101526001909201915b50621275000161114d565b50505050915091565b600c6020526000908152604090205481565b336000908152600e602052604090205460ff1661120b5760405162461bcd60e51b815260040161081690614f4e565b6112188383836001612539565b6112258383836001612823565b505050565b60008061123683611044565b905063059fa6008101815b8181116109ee57611276846112588984878b612885565b6040518060800160405280604a81526020016152d5604a9139612408565b93506212750001611241565b6000546001600160a01b031690565b60008061129f8686856128ed565b90506001600160601b038116156113055760006112bc8686610dad565b9050600a6001600160601b03166112ec83836040518060600160405280603d8152602001615264603d913961247a565b6001600160601b0316816112fc57fe5b0492505061130a565b600091505b50949350505050565b600080546001600160a01b0316611328612b42565b6001600160a01b031614905090565b61133f612b46565b6001600160a01b0316336001600160a01b03161461136f5760405162461bcd60e51b815260040161081690614f4e565b336001600160a01b038416146113975760405162461bcd60e51b815260040161081690614f4e565b600060606113a3612b55565b905060006113e685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bad92505050565b905060005b82518110156114345782818151811061140057fe5b60200260200101516001600160e01b031916826001600160e01b031916141561142c5760019350611434565b6001016113eb565b50826114525760405162461bcd60e51b815260040161081690614eae565b600080600060201b878760405160200161146e93929190614bf7565b6040516020818303038152906040528060200190516114909190810190613d4d565b9093509150506001600160a01b03808316908b16146114c15760405162461bcd60e51b815260040161081690614f2e565b8881146114e05760405162461bcd60e51b815260040161081690614fbe565b61151f87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bb492505050565b50505050505050505050565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b6000806115738484612c89565b600061157f8585612cf6565b80860393509150505b9250929050565b60055460ff1681565b6115a0611313565b6115bc5760405162461bcd60e51b815260040161081690614f4e565b6001600160a01b0381166115e25760405162461bcd60e51b815260040161081690614f7e565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b600061165a82600143034261122a565b92915050565b611668611313565b6116845760405162461bcd60e51b815260040161081690614f4e565b6001600160601b0381166001118015906116a8575060096001600160601b03821611155b6116c45760405162461bcd60e51b815260040161081690614efe565b600d80546001600160601b03909216600160a01b026001600160a01b03909216919091179055565b600d54600160a01b90046001600160601b031681565b6000806117108585856128ed565b90506001600160601b03811615801561172c575061172c612d41565b15611735575060015b90505b9392505050565b600a81565b60008181526007602052604081205463ffffffff1680611765576000611738565b6000838152600660209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03169392505050565b6117ad8383836000612539565b6112258383836000612823565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b600060405161182090614c5d565b604051809103902060026040516118379190614c20565b6040518091039020611847612dc7565b3060405160200161185b9493929190614d95565b604051602081830303815290604052805190602001209050600060405161188190614c68565b60405190819003812061189e918b908b908b908b90602001614d49565b604051602081830303815290604052805190602001209050600082826040516020016118cb929190614c2c565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516119089493929190614dca565b6020604051602081039080840390855afa15801561192a573d6000803e3d6000fd5b50505060206040510351905061193f81612dcb565b61195b5760405162461bcd60e51b815260040161081690614ede565b6001600160a01b0381166000908152600c60205260409020805460018101909155891461199a5760405162461bcd60e51b815260040161081690614fde565b874211156119ba5760405162461bcd60e51b815260040161081690614e1e565b6119c5818c8c611fd2565b610c1d818c8c61208b565b6040516108d490614c68565b60006119e6612e04565b8210611a045760405162461bcd60e51b815260040161081690614fce565b6001600160a01b038416600090815260096020908152604080832086845290915290205463ffffffff1680611a3d576000915050611738565b6001600160a01b0385166000908152600860209081526040808320878452825280832063ffffffff600019860181168552925290912054168310611ac9576001600160a01b038516600090815260086020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050611738565b6001600160a01b0385166000908152600860209081526040808320878452825280832083805290915290205463ffffffff16831015611b0c576000915050611738565b600060001982015b8163ffffffff168163ffffffff161115611bd757600282820363ffffffff16048103611b3e613950565b506001600160a01b03881660009081526008602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415611bb2576020015194506117389350505050565b805163ffffffff16871115611bc957819350611bd0565b6001820392505b5050611b14565b506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b611c2e81611044565b905080821115611c505760405162461bcd60e51b815260040161081690614e3e565b6000611c6163059fa6004201611044565b905080821115611c6f578091505b6000611c7f3385600143036128ed565b90506000816001600160601b031611611caa5760405162461bcd60e51b815260040161081690614f1e565b611cb5338583612e08565b611cc0338483612e99565b611cca8482612f1c565b611cd48382612f94565b336000908152600460209081526040808320878452909152808220548583529120546001600160a01b03918216911680611d3e5750336000908152600460209081526040808320878452909152902080546001600160a01b0319166001600160a01b038316179055805b336000908152600460209081526040808320898452909152902080546001600160a01b0319169055611d71828785612fff565b611d7c81868561309c565b336001600160a01b03167f809d79c94c86576d61afef75495b8df415224bf885310fed7ea315039f8c5b4c878786604051611db993929190614fee565b60405180910390a2505050505050565b6000611dd3612e04565b8210611df15760405162461bcd60e51b815260040161081690614fae565b60008381526007602052604090205463ffffffff1680611e1557600091505061165a565b600084815260066020908152604080832063ffffffff600019860181168552925290912054168310611e7d5760008481526006602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b0316905061165a565b600084815260066020908152604080832083805290915290205463ffffffff16831015611eae57600091505061165a565b600060001982015b8163ffffffff168163ffffffff161115611f6757600282820363ffffffff16048103611ee0613950565b50600087815260066020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415611f425760200151945061165a9350505050565b805163ffffffff16871115611f5957819350611f60565b6001820392505b5050611eb6565b50600085815260066020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b611faa611313565b611fc65760405162461bcd60e51b815260040161081690614f4e565b611fcf8161311f565b50565b6001600160a01b0380841660009081526004602090815260408083208584529091528120549091169061200585846124d8565b6001600160a01b0386811660008181526004602090815260408083208984529091529081902080546001600160a01b031916898516908117909155905193945092918516917fb846dc53d3621f480d692e73f4473156d20f23ff6b2c8237b7130b883226cca990612077908890614d3b565b60405180910390a461082e828583866131a0565b612093612d41565b156112255760006120ad826212750063ffffffff61320416565b6001600160a01b03808616600090815260046020908152604080832085845290915290205491925090811690841681146120ec576120ec858584611fd2565b6000336001600160a01b031663c24a0f8b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561212957600080fd5b505af115801561213d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121619190810190613d90565b9050612176846224ea0063ffffffff61320416565b9250808314156121bc576001600160a01b03808716600090815260046020908152604080832087845290915290205481169250851682146121bc576121bc868685611fd2565b505050505050565b6000856001600160601b0316116121ed5760405162461bcd60e51b815260040161081690614f0e565b806121fe576121fb84611044565b93505b42841161221d5760405162461bcd60e51b815260040161081690614f6e565b6001600160a01b03831661222f578592505b6001600160a01b038216612241578291505b8061226757600061225763059fa6004201611044565b905080851115612265578094505b505b600061227384866124d8565b905061228187878688613229565b6001600160a01b03808516600090815260046020908152604080832089845290915290205481169084168114612338576001600160a01b0385811660009081526004602090815260408083208a8452909152902080546001600160a01b0319169186169190911790556122f5818784612fff565b61233582886040518060400160405280602081526020017f5374616b696e673a3a7374616b653a2062616c616e6365206f766572666c6f77815250612408565b96505b61234384878961309c565b836001600160a01b0316816001600160a01b0316866001600160a01b03167fb846dc53d3621f480d692e73f4473156d20f23ff6b2c8237b7130b883226cca9896040516123909190614d3b565b60405180910390a45050505050505050565b6000806123af8585610dad565b905060006123bd8685611dc9565b9050600a6001600160601b03166123ed82846040518060600160405280603b81526020016153c4603b913961247a565b6001600160601b0316816123fd57fe5b049695505050505050565b6000838301826001600160601b03808716908316101561130a5760405162461bcd60e51b81526004016108169190614e0d565b6000836001600160601b0316836001600160601b0316111582906124725760405162461bcd60e51b81526004016108169190614e0d565b505050900390565b60006001600160601b03841661249257506000611738565b8383026001600160601b0380851690808716908316816124ae57fe5b046001600160601b031614839061130a5760405162461bcd60e51b81526004016108169190614e0d565b6001600160a01b0382166000818152600a602090815260408083208584528252808320938352600b825280832085845282528083205460001963ffffffff9182160116835292905220546001600160601b03600160201b9091041692915050565b836001600160601b031660011480156125555750612555612d41565b1561255f57610954565b61256883613341565b92506125748484612c89565b6001600160a01b038216612586573391505b6125908385612f1c565b61259b338486612e08565b3360009081526004602090815260408083208684529091529020546125ca906001600160a01b03168486612fff565b82421080156125dc575060055460ff16155b80156125e6575080155b156127295760006125f78585612cf6565b948590039490506001600160601b0381161561272757600d546001600160a01b03166126355760405162461bcd60e51b815260040161081690614ece565b600354600d5460405163095ea7b360e01b81526001600160a01b039283169263095ea7b39261266b929116908590600401614cd2565b602060405180830381600087803b15801561268557600080fd5b505af1158015612699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126bd9190810190613d11565b50600d5460035460405163abe979e160e01b81526001600160a01b039283169263abe979e1926126f4929116908590600401614ced565b600060405180830381600087803b15801561270e57600080fd5b505af1158015612722573d6000803e3d6000fd5b505050505b505b60035460405163a9059cbb60e01b81526000916001600160a01b03169063a9059cbb9061275c9086908990600401614cd2565b602060405180830381600087803b15801561277657600080fd5b505af115801561278a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127ae9190810190613d11565b9050806127cd5760405162461bcd60e51b815260040161081690614e7e565b826001600160a01b0316336001600160a01b03167f667b6c8ed8622dae7927a8b0837455098e32037a0181f9a2e21b9b72fead6cc78787866040516128149392919061504e565b60405180910390a35050505050565b61282b612d41565b15610954576000612845846212750063ffffffff61320416565b905081806128535750804210155b1561082e5760006128683383600143036128ed565b90506001600160601b038116156121bc576121bc81838686612539565b6000806128928585610dad565b905060006128a18787866119dc565b9050600a6001600160601b03166128d1828460405180608001604052806047815260200161519b6047913961247a565b6001600160601b0316816128e157fe5b04979650505050505050565b60006128f7612e04565b82106129155760405162461bcd60e51b815260040161081690614f8e565b61291e83613341565b6001600160a01b0385166000908152600b6020908152604080832084845290915290205490935063ffffffff168061295a576000915050611738565b6001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff6000198601811685529252909120541683106129e6576001600160a01b0385166000908152600a6020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050611738565b6001600160a01b0385166000908152600a60209081526040808320878452825280832083805290915290205463ffffffff16831015612a29576000915050611738565b600060001982015b8163ffffffff168163ffffffff161115612af457600282820363ffffffff16048103612a5b613950565b506001600160a01b0388166000908152600a602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415612acf576020015194506117389350505050565b805163ffffffff16871115612ae657819350612aed565b6001820392505b5050612a31565b506001600160a01b0386166000908152600a60209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b3390565b6003546001600160a01b031690565b60408051600180825281830190925260609182919060208083019080388339019050509050630c09ddfd60e01b81600081518110612b8f57fe5b6001600160e01b031990921660209283029190910190910152905090565b6020015190565b60006060306001600160a01b031683604051612bd09190614c14565b6000604051808303816000865af19150503d8060008114612c0d576040519150601f19603f3d011682016040523d82523d6000602084013e612c12565b606091505b509150915081611225576044815111612c3d5760405162461bcd60e51b815260040161081690614e6e565b612c706040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b81525082613366565b60405162461bcd60e51b81526004016108169190614e0d565b6000826001600160601b031611612cb25760405162461bcd60e51b815260040161081690614e4e565b6000612cc23383600143036128ed565b9050806001600160601b0316836001600160601b031611156112255760405162461bcd60e51b815260040161081690614e9e565b600080612d0242611044565b90506000612d108483610dad565b600d54600160a01b90046001600160601b03908116919091029150606490600a878402821604160495945050505050565b60115460405163dbb049d160e01b81526000916001600160a01b03169063dbb049d190612d72903390600401614c81565b60206040518083038186803b158015612d8a57600080fd5b505afa158015612d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612dc29190810190613d11565b905090565b4690565b600073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b0383161480159061165a5750506001600160a01b0316151590565b4390565b6001600160a01b0383166000818152600b60209081526040808320868452825280832054938352600a8252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526034808352600160201b9091046001600160601b03169392612e8b92859288926152a19083013961243b565b90506121bc86868584613460565b6001600160a01b0383166000818152600b60209081526040808320868452825280832054938352600a8252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526033808352600160201b9091046001600160601b03169392612e8b928592889261539190830139612408565b6000828152600760209081526040808320546006835281842063ffffffff9182166000198101909216855283528184205482516060810190935260358084529194600160201b9091046001600160601b0316939092612f87928592889291906154739083013961243b565b905061082e8584836135e0565b6000828152600760209081526040808320546006835281842063ffffffff9182166000198101909216855283528184205482516060810190935260348084529194600160201b9091046001600160601b0316939092612f879285928892919061531f90830139612408565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff94851660001981019095168452909152812054600160201b90046001600160601b03908116919084168211156130905761308d82856040518060600160405280603881526020016154df6038913961243b565b90505b6121bc8686858461371e565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526037808352600160201b9091046001600160601b0316939261308d92859288926154a890830139612408565b6001600160a01b0381166131455760405162461bcd60e51b815260040161081690614e8e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b0316846001600160a01b0316141580156131cb57506000826001600160601b0316115b15610954576001600160a01b038416156131ea576131ea848284612fff565b6001600160a01b038316156109545761095483828461309c565b6000828201838110156117385760405162461bcd60e51b815260040161081690614ebe565b6003546040516323b872dd60e01b81526000916001600160a01b0316906323b872dd9061325e90889030908990600401614caa565b602060405180830381600087803b15801561327857600080fd5b505af115801561328c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506132b09190810190613d11565b9050806132bc57600080fd5b60006132c884846124d8565b90506132ed818660405180606001604052806028815260200161544b60289139612408565b90506132f98386612f94565b613304848487612e99565b836001600160a01b03167f0fc5b1bac0416800b42a669229a346b6e5a15db3896339dbdc5fa376e1e4570a868584604051611db993929190615076565b60008061334d83611044565b905082811461335f5762127500810192505b5090919050565b6060808390506060839050606060448251845101036040519080825280601f01601f1916602001820160405280156133a5576020820181803883390190505b509050806000805b85518110156133fe578581815181106133c257fe5b602001015160f81c60f81b8383806001019450815181106133df57fe5b60200101906001600160f81b031916908160001a9053506001016133ad565b5060445b84518110156134535784818151811061341757fe5b602001015160f81c60f81b83838060010194508151811061343457fe5b60200101906001600160f81b031916908160001a905350600101613402565b5090979650505050505050565b6000613484436040518060600160405280603e8152602001615353603e9139613921565b905060008363ffffffff161180156134d557506001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff6000198801811685529252909120548282169116145b15613537576001600160a01b0385166000908152600a602090815260408083208784528252808320600019870163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b0385160217905561082e565b60408051808201825263ffffffff92831681526001600160601b0393841660208083019182526001600160a01b03989098166000818152600a8a528481208982528a5284812088871682528a52848120935184549351909716600160201b02640100000000600160801b031997871663ffffffff19948516179790971696909617909255908452600b875281842095845294909552939020805460019092019093169116179055565b6000613604436040518060600160405280603e8152602001615353603e9139613921565b905060008363ffffffff161180156136435750600084815260066020908152604080832063ffffffff6000198801811685529252909120548282169116145b15613693576000848152600660209081526040808320600019870163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b03851602179055610954565b60408051808201825263ffffffff92831681526001600160601b0393841660208083019182526000888152600682528481208887168252825284812093518454935163ffffffff1994851691881691909117640100000000600160801b031916600160201b919098160296909617909255958452600790529091208054909316600190920116179055565b6000613742436040518060600160405280603e8152602001615353603e9139613921565b6001600160a01b03861660009081526008602090815260408083208884528252808320600019880163ffffffff9081168552925290912054919250600160201b9091046001600160601b0316908416158015906137d857506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff6000198901811685529252909120548382169116145b1561383a576001600160a01b03861660009081526008602090815260408083208884528252808320600019880163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b038616021790556138e4565b60408051808201825263ffffffff80851682526001600160601b0380871660208085019182526001600160a01b038c166000818152600883528781208d825283528781208c871682528352878120965187549451909516600160201b02640100000000600160801b031995871663ffffffff19958616179590951694909417909555938252600984528482208a835290935292909220805460018801909316929091169190911790555b856001600160a01b03167fc7b38fb25352e6f351f57e2c922f84db5c97e09a6246bbe1d2eedfcdb01c4c62868386604051611db993929190615009565b600081600160201b84106139485760405162461bcd60e51b81526004016108169190614e0d565b509192915050565b604080518082019091526000808252602082015290565b803561165a81615159565b805161165a81615159565b805161165a8161516d565b803561165a81615176565b805161165a81615176565b60008083601f8401126139b057600080fd5b50813567ffffffffffffffff8111156139c857600080fd5b60208301915083600182028301111561158857600080fd5b803561165a8161517f565b803561165a81615188565b803561165a81615191565b600060208284031215613a1357600080fd5b6000613a1f8484613967565b949350505050565b60008060408385031215613a3a57600080fd5b6000613a468585613967565b9250506020613a5785828601613967565b9150509250929050565b60008060408385031215613a7457600080fd5b6000613a808585613967565b9250506020613a5785828601613988565b600080600080600060808688031215613aa957600080fd5b6000613ab58888613967565b9550506020613ac688828901613988565b9450506040613ad788828901613967565b935050606086013567ffffffffffffffff811115613af457600080fd5b613b008882890161399e565b92509250509295509295909350565b600080600060608486031215613b2457600080fd5b6000613b308686613967565b9350506020613b4186828701613988565b9250506040613b5286828701613988565b9150509250925092565b60008060008060808587031215613b7257600080fd5b6000613b7e8787613967565b9450506020613b8f87828801613988565b9350506040613ba087828801613988565b9250506060613bb187828801613988565b91505092959194509250565b600080600080600080600060e0888a031215613bd857600080fd5b6000613be48a8a613967565b9750506020613bf58a828b01613988565b9650506040613c068a828b01613988565b9550506060613c178a828b01613988565b9450506080613c288a828b016139eb565b93505060a0613c398a828b01613988565b92505060c0613c4a8a828b01613988565b91505092959891949750929550565b600080600060608486031215613c6e57600080fd5b6000613c7a8686613967565b9350506020613c8b86828701613988565b9250506040613b52868287016139e0565b600080600080600060a08688031215613cb457600080fd5b6000613cc08888613967565b9550506020613cd1888289016139f6565b9450506040613ce288828901613988565b9350506060613cf388828901613967565b9250506080613d0488828901613967565b9150509295509295909350565b600060208284031215613d2357600080fd5b6000613a1f848461397d565b600060208284031215613d4157600080fd5b6000613a1f8484613988565b600080600060608486031215613d6257600080fd5b6000613d6e8686613993565b9350506020613d7f86828701613972565b9250506040613b5286828701613993565b600060208284031215613da257600080fd5b6000613a1f8484613993565b60008060408385031215613dc157600080fd5b6000613a808585613988565b60008060008060008060c08789031215613de657600080fd5b6000613df28989613988565b9650506020613e0389828a01613988565b9550506040613e1489828a01613988565b9450506060613e2589828a01613988565b9350506080613e3689828a01613967565b92505060a0613e4789828a01613967565b9150509295509295509295565b60008060408385031215613e6757600080fd5b6000613e738585613988565b9250506020613a57858286016139e0565b60008060408385031215613e9757600080fd5b6000613a8085856139e0565b600060208284031215613eb557600080fd5b6000613a1f84846139f6565b60008060408385031215613ed457600080fd5b6000613a8085856139f6565b600080600060608486031215613ef557600080fd5b6000613f0186866139f6565b9350506020613f1286828701613988565b9250506040613b5286828701613967565b60008060008060808587031215613f3957600080fd5b6000613f4587876139f6565b9450506020613f5687828801613988565b9350506040613f6787828801613967565b9250506060613bb187828801613967565b6000613f848383614071565b505060200190565b6000613f848383614bee565b613fa1816150fa565b82525050565b613fa1816150b6565b6000613fbb826150a4565b613fc581856150a8565b9350613fd083615092565b8060005b83811015613ffe578151613fe88882613f78565b9750613ff383615092565b925050600101613fd4565b509495945050505050565b6000614014826150a4565b61401e81856150a8565b935061402983615092565b8060005b83811015613ffe5781516140418882613f8c565b975061404c83615092565b92505060010161402d565b613fa1816150c1565b613fa161406c826150c6565b6150d0565b613fa1816150d0565b613fa161406c826150d0565b600061409283856150b1565b935061409f838584615117565b50500190565b60006140b0826150a4565b6140ba81856150b1565b93506140ca818560208601615123565b9290920192915050565b6000815460018116600081146140f1576001811461411457614153565b607f600283041661410281876150b1565b60ff1984168152955085019250614153565b6002820461412281876150b1565b955061412d85615098565b60005b8281101561414c57815488820152600190910190602001614130565b5050850192505b505092915050565b613fa181615101565b600061416f826150a4565b61417981856150a8565b9350614189818560208601615123565b6141928161514f565b9093019392505050565b60006141a96029836150a8565b7f5374616b696e673a3a64656c656761746542795369673a207369676e617475728152681948195e1c1a5c995960ba1b602082015260400192915050565b60006141f46024836150a8565b7f7468657265206973206e6f206e6577207374616b696e6720636f6e7472616374815263081cd95d60e21b602082015260400192915050565b600061423a6042836150a8565b7f5374616b696e673a3a657874656e645374616b696e674475726174696f6e3a2081527f63616e6e6f742072656475636520746865207374616b696e672064757261746960208201526137b760f11b604082015260600192915050565b60006142a4604d836150a8565b7f5374616b696e673a3a77697468647261773a20616d6f756e74206f6620746f6b81527f656e7320746f2062652077697468647261776e206e6565647320746f2062652060208201526c0626967676572207468616e203609c1b604082015260600192915050565b60006143196020836150a8565b7f76657374696e67207265676973747279206164647265737320696e76616c6964815260200192915050565b60006143526030836150a8565b7f72656365697665417070726f76616c3a205472616e73616374696f6e2065786581526f31baba34b7b7103932bb32b93a32b21760811b602082015260400192915050565b60006143a46028836150a8565b7f5374616b696e673a3a77697468647261773a20546f6b656e207472616e7366658152671c8819985a5b195960c21b602082015260400192915050565b60006143ee6026836150a8565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006144366025836150a8565b7f5374616b696e673a3a77697468647261773a206e6f7420656e6f7567682062618152646c616e636560d81b602082015260400192915050565b600061447d6015836150a8565b741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b815260200192915050565b60006144ae6002836150b1565b61190160f01b815260020192915050565b60006144cc601b836150a8565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006145056030836150a8565b7f5374616b696e673a3a77697468647261773a2046656553686172696e6720616481526f191c995cdcc81dd85cdb89dd081cd95d60821b602082015260400192915050565b60006145576029836150a8565b7f5374616b696e673a3a64656c656761746542795369673a20696e76616c6964208152687369676e617475726560b81b602082015260400192915050565b60006145a2604d836150a8565b7f57656967687465645374616b696e673a3a74696d657374616d70546f4c6f636b81527f446174653a2074696d657374616d70206c696573206265666f726520636f6e7460208201526c3930b1ba1031b932b0ba34b7b760991b604082015260600192915050565b6000614617602d836150a8565b7f776569676874207363616c696e6720646f65736e27742062656c6f6e6720746f81526c2072616e6765205b312c20395d60981b602082015260400192915050565b60006146666043836150a8565b7f5374616b696e673a3a7374616b653a20616d6f756e74206f6620746f6b656e7381527f20746f207374616b65206e6565647320746f206265206269676765722074686160208201526206e20360ec1b604082015260600192915050565b60006146d1604b836150a8565b7f5374616b696e673a3a657874656e645374616b696e674475726174696f6e3a2081527f6e6f7468696e67207374616b656420756e74696c207468652070726576696f7560208201526a73206c6f636b206461746560a81b604082015260600192915050565b6000614744600f836150a8565b6e0e6cadcc8cae440dad2e6dac2e8c6d608b1b815260200192915050565b600061476f604c836150a8565b7f57656967687465645374616b696e673a3a636f6d70757465576569676874427981527f446174653a2064617465206e6565647320746f2062652062696767657220746860208201526b616e2073746172744461746560a01b604082015260600192915050565b60006147e36043836150b1565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b600061484e600c836150a8565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000614876604d836150a8565b7f5374616b696e673a3a636f6d707574655765696768744279446174653a72656d81527f61696e696e672074696d652063616e277420626520626967676572207468616e60208201526c1036b0bc10323ab930ba34b7b760991b604082015260600192915050565b60006148eb6036836150a8565b7f5374616b696e673a3a74696d657374616d70546f4c6f636b446174653a207374815275185ada5b99c81c195c9a5bd9081d1bdbc81cda1bdc9d60521b602082015260400192915050565b60006149436029836150a8565b7f63616e277420726573657420746865206e6577207374616b696e6720636f6e7481526807261637420746f20360bc1b602082015260400192915050565b600061498e604b836150b1565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e7460208201526a323536206578706972792960a81b6040820152604b0192915050565b6000614a01603d836150a8565b7f57656967687465645374616b696e673a3a6765745072696f725573657253746181527f6b65416e64446174653a206e6f74207965742064657465726d696e6564000000602082015260400192915050565b6000614a606021836150a8565b7f46656553686172696e6720616464726573732073686f756c646e2774206265208152600360fc1b602082015260400192915050565b6000614aa3603f836150a8565b7f57656967687465645374616b696e673a3a6765745072696f72546f74616c537481527f616b6573466f72446174653a206e6f74207965742064657465726d696e656400602082015260400192915050565b6000614b02600f836150a8565b6e0c2dadeeadce840dad2e6dac2e8c6d608b1b815260200192915050565b6000614b2d6044836150a8565b7f57656967687465645374616b696e673a3a6765745072696f725374616b65427981527f44617465466f7244656c6567617465653a206e6f74207965742064657465726d6020820152631a5b995960e21b604082015260600192915050565b6000614b996025836150a8565b7f5374616b696e673a3a64656c656761746542795369673a20696e76616c6964208152646e6f6e636560d81b602082015260400192915050565b613fa1816150df565b613fa1816150e8565b613fa18161510c565b613fa1816150ee565b6000614c038286614060565b601c82019150610edf828486614086565b600061173882846140a5565b600061173882846140d4565b6000614c37826144a1565b9150614c43828561407a565b602082019150614c53828461407a565b5060200192915050565b600061165a826147d6565b600061165a82614981565b6020810161165a8284613fa7565b6020810161165a8284613f98565b60408101614c9d8285613fa7565b6117386020830184613fa7565b60608101614cb88286613fa7565b614cc56020830185613fa7565b613a1f6040830184614be5565b60408101614ce08285613fa7565b6117386020830184614be5565b60408101614cfb8285613fa7565b6117386020830184614bee565b60408082528101614d198185613fb0565b90508181036020830152613a1f8184614009565b6020810161165a8284614057565b6020810161165a8284614071565b60a08101614d578288614071565b614d646020830187613fa7565b614d716040830186614071565b614d7e6060830185614071565b614d8b6080830184614071565b9695505050505050565b60808101614da38287614071565b614db06020830186614071565b614dbd6040830185614071565b610edf6060830184613fa7565b60808101614dd88287614071565b614de56020830186614bdc565b614df26040830185614071565b610edf6060830184614071565b6020810161165a828461415b565b602080825281016117388184614164565b6020808252810161165a8161419c565b6020808252810161165a816141e7565b6020808252810161165a8161422d565b6020808252810161165a81614297565b6020808252810161165a8161430c565b6020808252810161165a81614345565b6020808252810161165a81614397565b6020808252810161165a816143e1565b6020808252810161165a81614429565b6020808252810161165a81614470565b6020808252810161165a816144bf565b6020808252810161165a816144f8565b6020808252810161165a8161454a565b6020808252810161165a81614595565b6020808252810161165a8161460a565b6020808252810161165a81614659565b6020808252810161165a816146c4565b6020808252810161165a81614737565b6020808252810161165a81614762565b6020808252810161165a81614841565b6020808252810161165a81614869565b6020808252810161165a816148de565b6020808252810161165a81614936565b6020808252810161165a816149f4565b6020808252810161165a81614a53565b6020808252810161165a81614a96565b6020808252810161165a81614af5565b6020808252810161165a81614b20565b6020808252810161165a81614b8c565b60608101614ffc8286614071565b614cc56020830185614071565b606081016150178286614071565b614cc56020830185614be5565b6020810161165a8284614bd3565b60408101614cfb8285614bd3565b6020810161165a8284614bee565b6060810161505c8286614be5565b6150696020830185614071565b613a1f6040830184614057565b60608101614ffc8286614be5565b60408101614cfb8285614bee565b60200190565b60009081526020902090565b5190565b90815260200190565b919050565b600061165a826150d3565b151590565b63ffffffff191690565b90565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6001600160601b031690565b600061165a825b600061165a826150b6565b600061165a826150ee565b82818337506000910152565b60005b8381101561513e578181015183820152602001615126565b838111156109545750506000910152565b601f01601f191690565b615162816150b6565b8114611fcf57600080fd5b615162816150c1565b615162816150d0565b615162816150df565b615162816150e8565b615162816150ee56fe57656967687465645374616b696e673a3a5f746f74616c506f776572427944617465466f7244656c6567617465653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f72546f74616c566f74696e67506f7765723a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e6d756c7469706c69636174696f6e206f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e57656967687465645374616b696e673a3a77656967687465645374616b654279446174653a206d756c7469706c69636174696f6e206f766572666c6f775374616b696e673a3a5f6465637265617365557365725374616b653a207374616b656420616d6f756e7420756e646572666c6f7757656967687465645374616b696e673a3a6765745072696f72566f7465733a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e5374616b696e673a3a5f696e6372656173654461696c795374616b653a207374616b656420616d6f756e74206f766572666c6f775374616b696e673a3a5f77726974655374616b696e67436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735374616b696e673a3a5f696e637265617365557365725374616b653a207374616b656420616d6f756e74206f766572666c6f7757656967687465645374616b696e673a3a5f746f74616c506f7765724279446174653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f7257656967687465645374616b653a206f766572666c6f77206f6e20746f74616c2077656967687420636f6d7075746174696f6e5374616b696e673a3a696e6372656173655374616b653a2062616c616e6365206f766572666c6f775374616b696e673a3a5f64656372656173654461696c795374616b653a207374616b656420616d6f756e7420756e646572666c6f775374616b696e673a3a5f696e63726561736544656c65676174655374616b653a207374616b656420616d6f756e74206f766572666c6f775374616b696e673a3a5f646563726561736544656c65676174655374616b653a207374616b656420616d6f756e7420756e646572666c6f77a365627a7a723158204e5624842b70eebad1ef63a30cc6e4f4b569e7eaa0b2a2fe9242485d8115741a6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x836EEBEE GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0xB4B5EA57 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xDB27EC18 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xE97FFACB GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xE97FFACB EQ PUSH2 0x767 JUMPI DUP1 PUSH4 0xEEFB8C47 EQ PUSH2 0x77A JUMPI DUP1 PUSH4 0xF09CFC64 EQ PUSH2 0x78D JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x7A0 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0x726 JUMPI DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0x739 JUMPI DUP1 PUSH4 0xE63A562E EQ PUSH2 0x74C JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x75F JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0xCF7B684A GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xCF7B684A EQ PUSH2 0x6E5 JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0x6F8 JUMPI DUP1 PUSH4 0xD5C38464 EQ PUSH2 0x700 JUMPI DUP1 PUSH4 0xDAB6CA44 EQ PUSH2 0x713 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0x6B7 JUMPI DUP1 PUSH4 0xB8A98732 EQ PUSH2 0x6CA JUMPI DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0x6DD JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x96A590C1 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0xA58848C5 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0x68C JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0x694 JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0x6A7 JUMPI DUP1 PUSH4 0xB1724B46 EQ PUSH2 0x6AF JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x96A590C1 EQ PUSH2 0x650 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0x671 JUMPI DUP1 PUSH4 0x9A377B82 EQ PUSH2 0x679 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x602 JUMPI DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0x61D JUMPI DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0x63D JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x836EEBEE EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0x8DAE1B16 EQ PUSH2 0x5EF JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x429B62E5 GT PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x68CEFCCC GT PUSH2 0x261 JUMPI DUP1 PUSH4 0x72EC9795 GT PUSH2 0x230 JUMPI DUP1 PUSH4 0x72EC9795 EQ PUSH2 0x57A JUMPI DUP1 PUSH4 0x7BA6F458 EQ PUSH2 0x58D JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x5AE JUMPI DUP1 PUSH4 0x800B64CA EQ PUSH2 0x5C1 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x520 JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x541 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x567 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x5419675F GT PUSH2 0x29D JUMPI DUP1 PUSH4 0x5419675F EQ PUSH2 0x4EA JUMPI DUP1 PUSH4 0x5E0BE607 EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0x626EE2D9 EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x62CF8A08 EQ PUSH2 0x50D JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0x450B0601 EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0x4B2FEA1E EQ PUSH2 0x4D7 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x330 JUMPI DUP1 PUSH4 0x25629EC0 GT PUSH2 0x30A JUMPI DUP1 PUSH4 0x25629EC0 EQ PUSH2 0x458 JUMPI DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x46B JUMPI DUP1 PUSH4 0x37E6B1C1 EQ PUSH2 0x48B JUMPI DUP1 PUSH4 0x3827FCA5 EQ PUSH2 0x49E JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x1785F53C EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x43D JUMPI DUP1 PUSH4 0x2522D7BA EQ PUSH2 0x445 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH4 0x7392CC0 GT PUSH2 0x36C JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0xC09DDFD EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x40D JUMPI DUP1 PUSH4 0x17748ADC EQ PUSH2 0x415 JUMPI PUSH2 0x38D JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x26E402B EQ PUSH2 0x3B0 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x3C5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x39A PUSH2 0x7B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x4D3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3C3 PUSH2 0x3BE CALLDATASIZE PUSH1 0x4 PUSH2 0x3A61 JUMP JUMPDEST PUSH2 0x7B9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3CD PUSH2 0x7D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x3E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2F JUMP JUMPDEST PUSH2 0x7E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x4D2D JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x408 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C9C JUMP JUMPDEST PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x3CD PUSH2 0x835 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x844 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x5040 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x438 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x849 JUMP JUMPDEST PUSH2 0x39A PUSH2 0x8C8 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x453 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E84 JUMP JUMPDEST PUSH2 0x8DF JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x466 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F23 JUMP JUMPDEST PUSH2 0x945 JUMP JUMPDEST PUSH2 0x47E PUSH2 0x479 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A61 JUMP JUMPDEST PUSH2 0x95A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x4C73 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x499 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0F JUMP JUMPDEST PUSH2 0x980 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x4AC CALLDATASIZE PUSH1 0x4 PUSH2 0x3A27 JUMP JUMPDEST PUSH2 0x9F8 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x4BF CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0xB0A JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x4D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0xB1F JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x4E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DCD JUMP JUMPDEST PUSH2 0xB8B JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0xC2A JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0xC59 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x508 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0xD41 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x51B CALLDATASIZE PUSH1 0x4 PUSH2 0x3DAE JUMP JUMPDEST PUSH2 0xDAD JUMP JUMPDEST PUSH2 0x533 PUSH2 0x52E CALLDATASIZE PUSH1 0x4 PUSH2 0x3C59 JUMP JUMPDEST PUSH2 0xEE8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP3 SWAP2 SWAP1 PUSH2 0x5032 JUMP JUMPDEST PUSH2 0x533 PUSH2 0x54F CALLDATASIZE PUSH1 0x4 PUSH2 0x3C59 JUMP JUMPDEST PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x562 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0xF5E JUMP JUMPDEST PUSH2 0x41D PUSH2 0x575 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0xFD5 JUMP JUMPDEST PUSH2 0x39A PUSH2 0x588 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2F JUMP JUMPDEST PUSH2 0x1044 JUMP JUMPDEST PUSH2 0x5A0 PUSH2 0x59B CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x108F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP3 SWAP2 SWAP1 PUSH2 0x4D08 JUMP JUMPDEST PUSH2 0x39A PUSH2 0x5BC CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x11CA JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x5CF CALLDATASIZE PUSH1 0x4 PUSH2 0x3EE0 JUMP JUMPDEST PUSH2 0x11DC JUMP JUMPDEST PUSH2 0x41D PUSH2 0x5E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0F JUMP JUMPDEST PUSH2 0x122A JUMP JUMPDEST PUSH2 0x47E PUSH2 0x1282 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x5FD CALLDATASIZE PUSH1 0x4 PUSH2 0x3B5C JUMP JUMPDEST PUSH2 0x1291 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x1313 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x618 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A91 JUMP JUMPDEST PUSH2 0x1337 JUMP JUMPDEST PUSH2 0x630 PUSH2 0x62B CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2F JUMP JUMPDEST PUSH2 0x152B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x5024 JUMP JUMPDEST PUSH2 0x630 PUSH2 0x64B CALLDATASIZE PUSH1 0x4 PUSH2 0x3A61 JUMP JUMPDEST PUSH2 0x1543 JUMP JUMPDEST PUSH2 0x663 PUSH2 0x65E CALLDATASIZE PUSH1 0x4 PUSH2 0x3EC1 JUMP JUMPDEST PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A7 SWAP3 SWAP2 SWAP1 PUSH2 0x5084 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x158F JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x687 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x1598 JUMP JUMPDEST PUSH2 0x3CD PUSH2 0x160A JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x6A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x1619 JUMP JUMPDEST PUSH2 0x47E PUSH2 0x162E JUMP JUMPDEST PUSH2 0x39A PUSH2 0x1642 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x6C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x164A JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x6D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EA3 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x16EC JUMP JUMPDEST PUSH2 0x41D PUSH2 0x6F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0F JUMP JUMPDEST PUSH2 0x1702 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x173F JUMP JUMPDEST PUSH2 0x41D PUSH2 0x70E CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2F JUMP JUMPDEST PUSH2 0x1744 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x721 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EE0 JUMP JUMPDEST PUSH2 0x17A0 JUMP JUMPDEST PUSH2 0x630 PUSH2 0x734 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A61 JUMP JUMPDEST PUSH2 0x17BA JUMP JUMPDEST PUSH2 0x533 PUSH2 0x747 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E54 JUMP JUMPDEST PUSH2 0x17DD JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x75A CALLDATASIZE PUSH1 0x4 PUSH2 0x3BBD JUMP JUMPDEST PUSH2 0x1812 JUMP JUMPDEST PUSH2 0x39A PUSH2 0x19D0 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x775 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0F JUMP JUMPDEST PUSH2 0x19DC JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x788 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DAE JUMP JUMPDEST PUSH2 0x1C25 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x79B CALLDATASIZE PUSH1 0x4 PUSH2 0x3DAE JUMP JUMPDEST PUSH2 0x1DC9 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x7AE CALLDATASIZE PUSH1 0x4 PUSH2 0x3A01 JUMP JUMPDEST PUSH2 0x1FA2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x7C4 CALLER DUP4 DUP4 PUSH2 0x1FD2 JUMP JUMPDEST PUSH2 0x7CF CALLER DUP4 DUP4 PUSH2 0x208B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x81F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x82E DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x21C4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0x851 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0x86D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0x8BD SWAP1 DUP4 SWAP1 PUSH2 0x4C73 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D4 SWAP1 PUSH2 0x4C5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8EB DUP4 PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x93C JUMPI PUSH2 0x930 DUP5 PUSH2 0x912 DUP4 DUP7 DUP11 PUSH4 0xFFFFFFFF AND PUSH2 0x23A2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x55 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x51E2 PUSH1 0x55 SWAP2 CODECOPY PUSH2 0x2408 JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x8F6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x954 CALLER DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x21C4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x98C DUP4 PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x9EE JUMPI PUSH1 0x0 PUSH2 0x9AC DUP9 DUP4 DUP7 DUP11 PUSH2 0x1291 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x9E3 JUMPI PUSH2 0x9E0 DUP6 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x53FF PUSH1 0x4C SWAP2 CODECOPY PUSH2 0x2408 JUMP JUMPDEST SWAP5 POP JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0x997 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xA00 PUSH2 0x1313 JUMP JUMPDEST DUP1 PUSH2 0xA1A JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xA36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH4 0x3C7925E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH4 0x78F24BC6 SWAP1 PUSH2 0xA7A SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4C73 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAA8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0x2366E0B6B1AF17C0CEED50685C570D519CAE11E7FAAF007BBE667E94A5EE3CD5 SWAP2 POP PUSH2 0xAFE SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x4C8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xB27 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0xB43 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E5E JUMP JUMPDEST PUSH1 0x11 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB98 DUP7 TIMESTAMP ADD PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP6 GT ISZERO PUSH2 0xBAE JUMPI PUSH4 0x59FA600 SWAP5 POP JUMPDEST PUSH1 0x0 PUSH2 0xBBB DUP7 TIMESTAMP ADD PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP4 SUB DUP2 PUSH2 0xBCA JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 DUP11 DUP2 PUSH2 0xBDB JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 DUP3 LT PUSH2 0xBFC JUMPI PUSH2 0xBFC CALLER PUSH1 0x1 DUP5 SUB DUP4 MUL DUP13 SUB DUP7 DUP10 DUP10 PUSH1 0x1 PUSH2 0x21C4 JUMP JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP4 DUP2 GT PUSH2 0xC1D JUMPI PUSH2 0xC16 CALLER DUP4 DUP4 DUP11 DUP11 PUSH1 0x1 PUSH2 0x21C4 JUMP JUMPDEST DUP8 ADD PUSH2 0xC00 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC57 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E2E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xC61 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0xC7D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0xD8CC4E8D808FE950B07BFFFCD83EEBF1190CD35EA77FE0C8A7D75A6E9B90E5C1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xCDA SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4C73 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD06 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD2A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D90 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD37 SWAP2 SWAP1 PUSH2 0x4D3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0xD49 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0xD65 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F9E JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT ISZERO PUSH2 0xDCF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F3E JUMP JUMPDEST DUP2 DUP4 SUB PUSH4 0x59FA600 DUP2 GT ISZERO PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F5E JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15180 DUP3 PUSH4 0x59FA600 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0xE13 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xEDF PUSH1 0xA PUSH3 0x123210 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0xE93 PUSH1 0xA PUSH1 0x9 MUL PUSH2 0xE75 PUSH3 0x123210 DUP8 DUP9 MUL PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x756E646572666C6F77206F6E207765696768742063616C63756C6174696F6E00 DUP2 MSTORE POP PUSH2 0x243B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5237 PUSH1 0x2D SWAP2 CODECOPY PUSH2 0x247A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0xEA3 JUMPI INVALID JUMPDEST DIV PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6F766572666C6F77206F6E2077656967687420636F6D7075746174696F6E0000 DUP2 MSTORE POP PUSH2 0x2408 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH2 0xF66 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0xF82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0x8BD SWAP1 DUP4 SWAP1 PUSH2 0x4C73 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 JUMPDEST PUSH4 0x59FA600 TIMESTAMP ADD DUP2 GT PUSH2 0x103E JUMPI PUSH2 0x1032 DUP3 PUSH2 0xFF7 DUP6 DUP5 PUSH2 0x24D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5374616B696E673A3A62616C616E63654F663A206F766572666C6F7700000000 DUP2 MSTORE POP PUSH2 0x2408 JUMP JUMPDEST SWAP2 POP PUSH3 0x127500 ADD PUSH2 0xFDC JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD DUP3 LT ISZERO PUSH2 0x1068 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4EEE JUMP JUMPDEST PUSH1 0x0 PUSH3 0x127500 PUSH1 0x1 SLOAD DUP5 SUB DUP2 PUSH2 0x107A JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 SLOAD PUSH3 0x127500 DUP3 MUL ADD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x10A3 PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x1044 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x127500 ADD JUMPDEST DUP3 DUP2 GT PUSH2 0x10E5 JUMPI PUSH1 0x0 PUSH2 0x10C5 DUP8 DUP4 PUSH2 0x24D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO PUSH2 0x10DB JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH3 0x127500 ADD PUSH2 0x10B2 JUMP JUMPDEST POP DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1110 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP4 POP DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x113D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH1 0x0 SWAP1 PUSH3 0x127500 ADD JUMPDEST DUP4 DUP2 GT PUSH2 0x11C1 JUMPI PUSH1 0x0 PUSH2 0x1160 DUP9 DUP4 PUSH2 0x24D8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x11B6 JUMPI DUP2 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x117E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1197 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0x114D JUMP JUMPDEST POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x120B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH2 0x1218 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2539 JUMP JUMPDEST PUSH2 0x1225 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2823 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1236 DUP4 PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x9EE JUMPI PUSH2 0x1276 DUP5 PUSH2 0x1258 DUP10 DUP5 DUP8 DUP12 PUSH2 0x2885 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x52D5 PUSH1 0x4A SWAP2 CODECOPY PUSH2 0x2408 JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x1241 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x129F DUP7 DUP7 DUP6 PUSH2 0x28ED JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x1305 JUMPI PUSH1 0x0 PUSH2 0x12BC DUP7 DUP7 PUSH2 0xDAD JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x12EC DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5264 PUSH1 0x3D SWAP2 CODECOPY PUSH2 0x247A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x12FC JUMPI INVALID JUMPDEST DIV SWAP3 POP POP PUSH2 0x130A JUMP JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1328 PUSH2 0x2B42 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x133F PUSH2 0x2B46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x136F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x1397 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x13A3 PUSH2 0x2B55 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x13E6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2BAD SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1434 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1400 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0x142C JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0x1434 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x13EB JUMP JUMPDEST POP DUP3 PUSH2 0x1452 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4EAE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 SHL DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x146E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x1490 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D4D JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0x14C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F2E JUMP JUMPDEST DUP9 DUP2 EQ PUSH2 0x14E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4FBE JUMP JUMPDEST PUSH2 0x151F DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2BB4 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1573 DUP5 DUP5 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x157F DUP6 DUP6 PUSH2 0x2CF6 JUMP JUMPDEST DUP1 DUP7 SUB SWAP4 POP SWAP2 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x15A0 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0x15BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F7E JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 PUSH1 0x1 NUMBER SUB TIMESTAMP PUSH2 0x122A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1668 PUSH2 0x1313 JUMP JUMPDEST PUSH2 0x1684 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND PUSH1 0x1 GT DUP1 ISZERO SWAP1 PUSH2 0x16A8 JUMPI POP PUSH1 0x9 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND GT ISZERO JUMPDEST PUSH2 0x16C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4EFE JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1710 DUP6 DUP6 DUP6 PUSH2 0x28ED JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO DUP1 ISZERO PUSH2 0x172C JUMPI POP PUSH2 0x172C PUSH2 0x2D41 JUMP JUMPDEST ISZERO PUSH2 0x1735 JUMPI POP PUSH1 0x1 JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x1765 JUMPI PUSH1 0x0 PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP6 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x17AD DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x2539 JUMP JUMPDEST PUSH2 0x1225 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x2823 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x1820 SWAP1 PUSH2 0x4C5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0x1837 SWAP2 SWAP1 PUSH2 0x4C20 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH2 0x1847 PUSH2 0x2DC7 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x185B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D95 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x1881 SWAP1 PUSH2 0x4C68 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0x189E SWAP2 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x20 ADD PUSH2 0x4D49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x18CB SWAP3 SWAP2 SWAP1 PUSH2 0x4C2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x1908 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x192A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH2 0x193F DUP2 PUSH2 0x2DCB JUMP JUMPDEST PUSH2 0x195B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4EDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0x199A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4FDE JUMP JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0x19BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E1E JUMP JUMPDEST PUSH2 0x19C5 DUP2 DUP13 DUP13 PUSH2 0x1FD2 JUMP JUMPDEST PUSH2 0xC1D DUP2 DUP13 DUP13 PUSH2 0x208B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D4 SWAP1 PUSH2 0x4C68 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19E6 PUSH2 0x2E04 JUMP JUMPDEST DUP3 LT PUSH2 0x1A04 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4FCE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x1A3D JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x1AC9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x1B0C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x1BD7 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x1B3E PUSH2 0x3950 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x1BB2 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x1738 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x1BC9 JUMPI DUP2 SWAP4 POP PUSH2 0x1BD0 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x1B14 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1C2E DUP2 PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1C50 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E3E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C61 PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1C6F JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x1C7F CALLER DUP6 PUSH1 0x1 NUMBER SUB PUSH2 0x28ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x1CAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F1E JUMP JUMPDEST PUSH2 0x1CB5 CALLER DUP6 DUP4 PUSH2 0x2E08 JUMP JUMPDEST PUSH2 0x1CC0 CALLER DUP5 DUP4 PUSH2 0x2E99 JUMP JUMPDEST PUSH2 0x1CCA DUP5 DUP3 PUSH2 0x2F1C JUMP JUMPDEST PUSH2 0x1CD4 DUP4 DUP3 PUSH2 0x2F94 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 PUSH2 0x1D3E JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE DUP1 JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x1D71 DUP3 DUP8 DUP6 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1D7C DUP2 DUP7 DUP6 PUSH2 0x309C JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x809D79C94C86576D61AFEF75495B8DF415224BF885310FED7EA315039F8C5B4C DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1DB9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4FEE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD3 PUSH2 0x2E04 JUMP JUMPDEST DUP3 LT PUSH2 0x1DF1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4FAE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x1E15 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x165A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x1E7D JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x165A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x1EAE JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x165A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x1F67 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x1EE0 PUSH2 0x3950 JUMP JUMPDEST POP PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x1F42 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x165A SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x1F59 JUMPI DUP2 SWAP4 POP PUSH2 0x1F60 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x1EB6 JUMP JUMPDEST POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1FAA PUSH2 0x1313 JUMP JUMPDEST PUSH2 0x1FC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F4E JUMP JUMPDEST PUSH2 0x1FCF DUP2 PUSH2 0x311F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND SWAP1 PUSH2 0x2005 DUP6 DUP5 PUSH2 0x24D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP10 DUP6 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP4 SWAP5 POP SWAP3 SWAP2 DUP6 AND SWAP2 PUSH32 0xB846DC53D3621F480D692E73F4473156D20F23FF6B2C8237B7130B883226CCA9 SWAP1 PUSH2 0x2077 SWAP1 DUP9 SWAP1 PUSH2 0x4D3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x82E DUP3 DUP6 DUP4 DUP7 PUSH2 0x31A0 JUMP JUMPDEST PUSH2 0x2093 PUSH2 0x2D41 JUMP JUMPDEST ISZERO PUSH2 0x1225 JUMPI PUSH1 0x0 PUSH2 0x20AD DUP3 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x3204 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 AND SWAP1 DUP5 AND DUP2 EQ PUSH2 0x20EC JUMPI PUSH2 0x20EC DUP6 DUP6 DUP5 PUSH2 0x1FD2 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC24A0F8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x213D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2161 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D90 JUMP JUMPDEST SWAP1 POP PUSH2 0x2176 DUP5 PUSH3 0x24EA00 PUSH4 0xFFFFFFFF PUSH2 0x3204 AND JUMP JUMPDEST SWAP3 POP DUP1 DUP4 EQ ISZERO PUSH2 0x21BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 AND SWAP3 POP DUP6 AND DUP3 EQ PUSH2 0x21BC JUMPI PUSH2 0x21BC DUP7 DUP7 DUP6 PUSH2 0x1FD2 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x21ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F0E JUMP JUMPDEST DUP1 PUSH2 0x21FE JUMPI PUSH2 0x21FB DUP5 PUSH2 0x1044 JUMP JUMPDEST SWAP4 POP JUMPDEST TIMESTAMP DUP5 GT PUSH2 0x221D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F6E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x222F JUMPI DUP6 SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2241 JUMPI DUP3 SWAP2 POP JUMPDEST DUP1 PUSH2 0x2267 JUMPI PUSH1 0x0 PUSH2 0x2257 PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x2265 JUMPI DUP1 SWAP5 POP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x2273 DUP5 DUP7 PUSH2 0x24D8 JUMP JUMPDEST SWAP1 POP PUSH2 0x2281 DUP8 DUP8 DUP7 DUP9 PUSH2 0x3229 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 AND SWAP1 DUP5 AND DUP2 EQ PUSH2 0x2338 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x22F5 DUP2 DUP8 DUP5 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x2335 DUP3 DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5374616B696E673A3A7374616B653A2062616C616E6365206F766572666C6F77 DUP2 MSTORE POP PUSH2 0x2408 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH2 0x2343 DUP5 DUP8 DUP10 PUSH2 0x309C JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB846DC53D3621F480D692E73F4473156D20F23FF6B2C8237B7130B883226CCA9 DUP10 PUSH1 0x40 MLOAD PUSH2 0x2390 SWAP2 SWAP1 PUSH2 0x4D3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23AF DUP6 DUP6 PUSH2 0xDAD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x23BD DUP7 DUP6 PUSH2 0x1DC9 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x23ED DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x53C4 PUSH1 0x3B SWAP2 CODECOPY PUSH2 0x247A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x23FD JUMPI INVALID JUMPDEST DIV SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x130A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP2 SWAP1 PUSH2 0x4E0D JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO DUP3 SWAP1 PUSH2 0x2472 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP2 SWAP1 PUSH2 0x4E0D JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x2492 JUMPI POP PUSH1 0x0 PUSH2 0x1738 JUMP JUMPDEST DUP4 DUP4 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP6 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP4 AND DUP2 PUSH2 0x24AE JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND EQ DUP4 SWAP1 PUSH2 0x130A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP2 SWAP1 PUSH2 0x4E0D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x0 NOT PUSH4 0xFFFFFFFF SWAP2 DUP3 AND ADD AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x2555 JUMPI POP PUSH2 0x2555 PUSH2 0x2D41 JUMP JUMPDEST ISZERO PUSH2 0x255F JUMPI PUSH2 0x954 JUMP JUMPDEST PUSH2 0x2568 DUP4 PUSH2 0x3341 JUMP JUMPDEST SWAP3 POP PUSH2 0x2574 DUP5 DUP5 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2586 JUMPI CALLER SWAP2 POP JUMPDEST PUSH2 0x2590 DUP4 DUP6 PUSH2 0x2F1C JUMP JUMPDEST PUSH2 0x259B CALLER DUP5 DUP7 PUSH2 0x2E08 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x25CA SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH2 0x2FFF JUMP JUMPDEST DUP3 TIMESTAMP LT DUP1 ISZERO PUSH2 0x25DC JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x25E6 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x2729 JUMPI PUSH1 0x0 PUSH2 0x25F7 DUP6 DUP6 PUSH2 0x2CF6 JUMP JUMPDEST SWAP5 DUP6 SWAP1 SUB SWAP5 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x2727 JUMPI PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2635 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4ECE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x266B SWAP3 SWAP2 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4CD2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2685 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2699 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x26BD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D11 JUMP JUMPDEST POP PUSH1 0xD SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0xABE979E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0xABE979E1 SWAP3 PUSH2 0x26F4 SWAP3 SWAP2 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4CED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x270E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2722 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x275C SWAP1 DUP7 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4CD2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2776 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x278A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x27AE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D11 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x27CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E7E JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x667B6C8ED8622DAE7927A8B0837455098E32037A0181F9A2E21B9B72FEAD6CC7 DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD PUSH2 0x2814 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x504E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x282B PUSH2 0x2D41 JUMP JUMPDEST ISZERO PUSH2 0x954 JUMPI PUSH1 0x0 PUSH2 0x2845 DUP5 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x3204 AND JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x2853 JUMPI POP DUP1 TIMESTAMP LT ISZERO JUMPDEST ISZERO PUSH2 0x82E JUMPI PUSH1 0x0 PUSH2 0x2868 CALLER DUP4 PUSH1 0x1 NUMBER SUB PUSH2 0x28ED JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x21BC JUMPI PUSH2 0x21BC DUP2 DUP4 DUP7 DUP7 PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2892 DUP6 DUP6 PUSH2 0xDAD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28A1 DUP8 DUP8 DUP7 PUSH2 0x19DC JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x28D1 DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x519B PUSH1 0x47 SWAP2 CODECOPY PUSH2 0x247A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x28E1 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28F7 PUSH2 0x2E04 JUMP JUMPDEST DUP3 LT PUSH2 0x2915 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4F8E JUMP JUMPDEST PUSH2 0x291E DUP4 PUSH2 0x3341 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP4 POP PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x295A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x29E6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x2A29 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x2AF4 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x2A5B PUSH2 0x3950 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x2ACF JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x1738 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x2AE6 JUMPI DUP2 SWAP4 POP PUSH2 0x2AED JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x2A31 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH4 0xC09DDFD PUSH1 0xE0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B8F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2BD0 SWAP2 SWAP1 PUSH2 0x4C14 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2C0D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C12 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1225 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0x2C3D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E6E JUMP JUMPDEST PUSH2 0x2C70 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x3366 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP2 SWAP1 PUSH2 0x4E0D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x2CB2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E4E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CC2 CALLER DUP4 PUSH1 0x1 NUMBER SUB PUSH2 0x28ED JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO PUSH2 0x1225 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E9E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2D02 TIMESTAMP PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2D10 DUP5 DUP4 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 POP PUSH1 0x64 SWAP1 PUSH1 0xA DUP8 DUP5 MUL DUP3 AND DIV AND DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x40 MLOAD PUSH4 0xDBB049D1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xDBB049D1 SWAP1 PUSH2 0x2D72 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x4C81 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2DC2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D11 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x165A JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x2E8B SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x52A1 SWAP1 DUP4 ADD CODECOPY PUSH2 0x243B JUMP JUMPDEST SWAP1 POP PUSH2 0x21BC DUP7 DUP7 DUP6 DUP5 PUSH2 0x3460 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x33 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x2E8B SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x5391 SWAP1 DUP4 ADD CODECOPY PUSH2 0x2408 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x6 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP3 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x35 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP1 SWAP3 PUSH2 0x2F87 SWAP3 DUP6 SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x5473 SWAP1 DUP4 ADD CODECOPY PUSH2 0x243B JUMP JUMPDEST SWAP1 POP PUSH2 0x82E DUP6 DUP5 DUP4 PUSH2 0x35E0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x6 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP3 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x34 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP1 SWAP3 PUSH2 0x2F87 SWAP3 DUP6 SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x531F SWAP1 DUP4 ADD CODECOPY PUSH2 0x2408 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP2 SWAP1 DUP5 AND DUP3 GT ISZERO PUSH2 0x3090 JUMPI PUSH2 0x308D DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x54DF PUSH1 0x38 SWAP2 CODECOPY PUSH2 0x243B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x21BC DUP7 DUP7 DUP6 DUP5 PUSH2 0x371E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x37 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x308D SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x54A8 SWAP1 DUP4 ADD CODECOPY PUSH2 0x2408 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3145 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4E8E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x31CB JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x954 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x31EA JUMPI PUSH2 0x31EA DUP5 DUP3 DUP5 PUSH2 0x2FFF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x954 JUMPI PUSH2 0x954 DUP4 DUP3 DUP5 PUSH2 0x309C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1738 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP1 PUSH2 0x4EBE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x325E SWAP1 DUP9 SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4CAA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x328C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x32B0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D11 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x32BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x32C8 DUP5 DUP5 PUSH2 0x24D8 JUMP JUMPDEST SWAP1 POP PUSH2 0x32ED DUP2 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x544B PUSH1 0x28 SWAP2 CODECOPY PUSH2 0x2408 JUMP JUMPDEST SWAP1 POP PUSH2 0x32F9 DUP4 DUP7 PUSH2 0x2F94 JUMP JUMPDEST PUSH2 0x3304 DUP5 DUP5 DUP8 PUSH2 0x2E99 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFC5B1BAC0416800B42A669229A346B6E5A15DB3896339DBDC5FA376E1E4570A DUP7 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1DB9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x334D DUP4 PUSH2 0x1044 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 EQ PUSH2 0x335F JUMPI PUSH3 0x127500 DUP2 ADD SWAP3 POP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x33A5 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x33FE JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x33C2 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x33DF JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x33AD JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x3453 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3417 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x3434 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x3402 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3484 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5353 PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x3921 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x34D5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x3537 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP8 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0x82E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 SWAP1 SWAP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA DUP11 MSTORE DUP5 DUP2 KECCAK256 DUP10 DUP3 MSTORE DUP11 MSTORE DUP5 DUP2 KECCAK256 DUP9 DUP8 AND DUP3 MSTORE DUP11 MSTORE DUP5 DUP2 KECCAK256 SWAP4 MLOAD DUP5 SLOAD SWAP4 MLOAD SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP8 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP5 DUP6 AND OR SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP3 SSTORE SWAP1 DUP5 MSTORE PUSH1 0xB DUP8 MSTORE DUP2 DUP5 KECCAK256 SWAP6 DUP5 MSTORE SWAP5 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP3 ADD SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3604 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5353 PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x3921 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x3643 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x3693 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP8 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0x954 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x6 DUP3 MSTORE DUP5 DUP2 KECCAK256 DUP9 DUP8 AND DUP3 MSTORE DUP3 MSTORE DUP5 DUP2 KECCAK256 SWAP4 MLOAD DUP5 SLOAD SWAP4 MLOAD PUSH4 0xFFFFFFFF NOT SWAP5 DUP6 AND SWAP2 DUP9 AND SWAP2 SWAP1 SWAP2 OR PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL SWAP2 SWAP1 SWAP9 AND MUL SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP3 SSTORE SWAP6 DUP5 MSTORE PUSH1 0x7 SWAP1 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 AND PUSH1 0x1 SWAP1 SWAP3 ADD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3742 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5353 PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x3921 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 DUP5 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x37D8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP4 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x383A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND MUL OR SWAP1 SSTORE PUSH2 0x38E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP14 DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP13 DUP8 AND DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP5 MLOAD SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP6 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP6 DUP7 AND OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP6 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x9 DUP5 MSTORE DUP5 DUP3 KECCAK256 DUP11 DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP9 ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC7B38FB25352E6F351F57E2C922F84DB5C97E09A6246BBE1D2EEDFCDB01C4C62 DUP7 DUP4 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1DB9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5009 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x20 SHL DUP5 LT PUSH2 0x3948 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x816 SWAP2 SWAP1 PUSH2 0x4E0D JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x165A DUP2 PUSH2 0x5159 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x165A DUP2 PUSH2 0x5159 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x165A DUP2 PUSH2 0x516D JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x165A DUP2 PUSH2 0x5176 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x165A DUP2 PUSH2 0x5176 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x39B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x39C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x165A DUP2 PUSH2 0x517F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x165A DUP2 PUSH2 0x5188 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x165A DUP2 PUSH2 0x5191 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A1F DUP5 DUP5 PUSH2 0x3967 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A46 DUP6 DUP6 PUSH2 0x3967 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3A57 DUP6 DUP3 DUP7 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A80 DUP6 DUP6 PUSH2 0x3967 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3A57 DUP6 DUP3 DUP7 ADD PUSH2 0x3988 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3AA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3AB5 DUP9 DUP9 PUSH2 0x3967 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x3AC6 DUP9 DUP3 DUP10 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x3AD7 DUP9 DUP3 DUP10 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3AF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B00 DUP9 DUP3 DUP10 ADD PUSH2 0x399E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3B24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B30 DUP7 DUP7 PUSH2 0x3967 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3B41 DUP7 DUP3 DUP8 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3B52 DUP7 DUP3 DUP8 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3B72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B7E DUP8 DUP8 PUSH2 0x3967 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x3B8F DUP8 DUP3 DUP9 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x3BA0 DUP8 DUP3 DUP9 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x3BB1 DUP8 DUP3 DUP9 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3BD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3BE4 DUP11 DUP11 PUSH2 0x3967 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x3BF5 DUP11 DUP3 DUP12 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x3C06 DUP11 DUP3 DUP12 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x3C17 DUP11 DUP3 DUP12 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x3C28 DUP11 DUP3 DUP12 ADD PUSH2 0x39EB JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x3C39 DUP11 DUP3 DUP12 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x3C4A DUP11 DUP3 DUP12 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3C6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3C7A DUP7 DUP7 PUSH2 0x3967 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3C8B DUP7 DUP3 DUP8 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3B52 DUP7 DUP3 DUP8 ADD PUSH2 0x39E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3CB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3CC0 DUP9 DUP9 PUSH2 0x3967 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x3CD1 DUP9 DUP3 DUP10 ADD PUSH2 0x39F6 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x3CE2 DUP9 DUP3 DUP10 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x3CF3 DUP9 DUP3 DUP10 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x3D04 DUP9 DUP3 DUP10 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A1F DUP5 DUP5 PUSH2 0x397D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A1F DUP5 DUP5 PUSH2 0x3988 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3D62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3D6E DUP7 DUP7 PUSH2 0x3993 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3D7F DUP7 DUP3 DUP8 ADD PUSH2 0x3972 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3B52 DUP7 DUP3 DUP8 ADD PUSH2 0x3993 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3DA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A1F DUP5 DUP5 PUSH2 0x3993 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A80 DUP6 DUP6 PUSH2 0x3988 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3DE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3DF2 DUP10 DUP10 PUSH2 0x3988 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x3E03 DUP10 DUP3 DUP11 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x3E14 DUP10 DUP3 DUP11 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x3E25 DUP10 DUP3 DUP11 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x3E36 DUP10 DUP3 DUP11 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x3E47 DUP10 DUP3 DUP11 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3E73 DUP6 DUP6 PUSH2 0x3988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3A57 DUP6 DUP3 DUP7 ADD PUSH2 0x39E0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A80 DUP6 DUP6 PUSH2 0x39E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A1F DUP5 DUP5 PUSH2 0x39F6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3ED4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A80 DUP6 DUP6 PUSH2 0x39F6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3EF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3F01 DUP7 DUP7 PUSH2 0x39F6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3F12 DUP7 DUP3 DUP8 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3B52 DUP7 DUP3 DUP8 ADD PUSH2 0x3967 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3F39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3F45 DUP8 DUP8 PUSH2 0x39F6 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x3F56 DUP8 DUP3 DUP9 ADD PUSH2 0x3988 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x3F67 DUP8 DUP3 DUP9 ADD PUSH2 0x3967 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x3BB1 DUP8 DUP3 DUP9 ADD PUSH2 0x3967 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F84 DUP4 DUP4 PUSH2 0x4071 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F84 DUP4 DUP4 PUSH2 0x4BEE JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50FA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50B6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FBB DUP3 PUSH2 0x50A4 JUMP JUMPDEST PUSH2 0x3FC5 DUP2 DUP6 PUSH2 0x50A8 JUMP JUMPDEST SWAP4 POP PUSH2 0x3FD0 DUP4 PUSH2 0x5092 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3FFE JUMPI DUP2 MLOAD PUSH2 0x3FE8 DUP9 DUP3 PUSH2 0x3F78 JUMP JUMPDEST SWAP8 POP PUSH2 0x3FF3 DUP4 PUSH2 0x5092 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x3FD4 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4014 DUP3 PUSH2 0x50A4 JUMP JUMPDEST PUSH2 0x401E DUP2 DUP6 PUSH2 0x50A8 JUMP JUMPDEST SWAP4 POP PUSH2 0x4029 DUP4 PUSH2 0x5092 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3FFE JUMPI DUP2 MLOAD PUSH2 0x4041 DUP9 DUP3 PUSH2 0x3F8C JUMP JUMPDEST SWAP8 POP PUSH2 0x404C DUP4 PUSH2 0x5092 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x402D JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50C1 JUMP JUMPDEST PUSH2 0x3FA1 PUSH2 0x406C DUP3 PUSH2 0x50C6 JUMP JUMPDEST PUSH2 0x50D0 JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50D0 JUMP JUMPDEST PUSH2 0x3FA1 PUSH2 0x406C DUP3 PUSH2 0x50D0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4092 DUP4 DUP6 PUSH2 0x50B1 JUMP JUMPDEST SWAP4 POP PUSH2 0x409F DUP4 DUP6 DUP5 PUSH2 0x5117 JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40B0 DUP3 PUSH2 0x50A4 JUMP JUMPDEST PUSH2 0x40BA DUP2 DUP6 PUSH2 0x50B1 JUMP JUMPDEST SWAP4 POP PUSH2 0x40CA DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5123 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 DUP2 AND PUSH1 0x0 DUP2 EQ PUSH2 0x40F1 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x4114 JUMPI PUSH2 0x4153 JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP4 DIV AND PUSH2 0x4102 DUP2 DUP8 PUSH2 0x50B1 JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP2 MSTORE SWAP6 POP DUP6 ADD SWAP3 POP PUSH2 0x4153 JUMP JUMPDEST PUSH1 0x2 DUP3 DIV PUSH2 0x4122 DUP2 DUP8 PUSH2 0x50B1 JUMP JUMPDEST SWAP6 POP PUSH2 0x412D DUP6 PUSH2 0x5098 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x414C JUMPI DUP2 SLOAD DUP9 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x4130 JUMP JUMPDEST POP POP DUP6 ADD SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x5101 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x416F DUP3 PUSH2 0x50A4 JUMP JUMPDEST PUSH2 0x4179 DUP2 DUP6 PUSH2 0x50A8 JUMP JUMPDEST SWAP4 POP PUSH2 0x4189 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5123 JUMP JUMPDEST PUSH2 0x4192 DUP2 PUSH2 0x514F JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41A9 PUSH1 0x29 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A64656C656761746542795369673A207369676E61747572 DUP2 MSTORE PUSH9 0x1948195E1C1A5C9959 PUSH1 0xBA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41F4 PUSH1 0x24 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x7468657265206973206E6F206E6577207374616B696E6720636F6E7472616374 DUP2 MSTORE PUSH4 0x81CD95D PUSH1 0xE2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x423A PUSH1 0x42 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A657874656E645374616B696E674475726174696F6E3A20 DUP2 MSTORE PUSH32 0x63616E6E6F742072656475636520746865207374616B696E6720647572617469 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x37B7 PUSH1 0xF1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42A4 PUSH1 0x4D DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A77697468647261773A20616D6F756E74206F6620746F6B DUP2 MSTORE PUSH32 0x656E7320746F2062652077697468647261776E206E6565647320746F20626520 PUSH1 0x20 DUP3 ADD MSTORE PUSH13 0x626967676572207468616E203 PUSH1 0x9C SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4319 PUSH1 0x20 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x76657374696E67207265676973747279206164647265737320696E76616C6964 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4352 PUSH1 0x30 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x72656365697665417070726F76616C3A205472616E73616374696F6E20657865 DUP2 MSTORE PUSH16 0x31BABA34B7B7103932BB32B93A32B217 PUSH1 0x81 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43A4 PUSH1 0x28 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A77697468647261773A20546F6B656E207472616E736665 DUP2 MSTORE PUSH8 0x1C8819985A5B1959 PUSH1 0xC2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43EE PUSH1 0x26 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4436 PUSH1 0x25 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A77697468647261773A206E6F7420656E6F756768206261 DUP2 MSTORE PUSH5 0x6C616E6365 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x447D PUSH1 0x15 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44AE PUSH1 0x2 DUP4 PUSH2 0x50B1 JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44CC PUSH1 0x1B DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4505 PUSH1 0x30 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A77697468647261773A2046656553686172696E67206164 DUP2 MSTORE PUSH16 0x191C995CDCC81DD85CDB89DD081CD95D PUSH1 0x82 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4557 PUSH1 0x29 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A64656C656761746542795369673A20696E76616C696420 DUP2 MSTORE PUSH9 0x7369676E6174757265 PUSH1 0xB8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45A2 PUSH1 0x4D DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A74696D657374616D70546F4C6F636B DUP2 MSTORE PUSH32 0x446174653A2074696D657374616D70206C696573206265666F726520636F6E74 PUSH1 0x20 DUP3 ADD MSTORE PUSH13 0x3930B1BA1031B932B0BA34B7B7 PUSH1 0x99 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4617 PUSH1 0x2D DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x776569676874207363616C696E6720646F65736E27742062656C6F6E6720746F DUP2 MSTORE PUSH13 0x2072616E6765205B312C20395D PUSH1 0x98 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4666 PUSH1 0x43 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A7374616B653A20616D6F756E74206F6620746F6B656E73 DUP2 MSTORE PUSH32 0x20746F207374616B65206E6565647320746F2062652062696767657220746861 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x6E203 PUSH1 0xEC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46D1 PUSH1 0x4B DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A657874656E645374616B696E674475726174696F6E3A20 DUP2 MSTORE PUSH32 0x6E6F7468696E67207374616B656420756E74696C207468652070726576696F75 PUSH1 0x20 DUP3 ADD MSTORE PUSH11 0x73206C6F636B2064617465 PUSH1 0xA8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4744 PUSH1 0xF DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x476F PUSH1 0x4C DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A636F6D707574655765696768744279 DUP2 MSTORE PUSH32 0x446174653A2064617465206E6565647320746F20626520626967676572207468 PUSH1 0x20 DUP3 ADD MSTORE PUSH12 0x616E20737461727444617465 PUSH1 0xA0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47E3 PUSH1 0x43 DUP4 PUSH2 0x50B1 JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x484E PUSH1 0xC DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4876 PUSH1 0x4D DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A636F6D707574655765696768744279446174653A72656D DUP2 MSTORE PUSH32 0x61696E696E672074696D652063616E277420626520626967676572207468616E PUSH1 0x20 DUP3 ADD MSTORE PUSH13 0x1036B0BC10323AB930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48EB PUSH1 0x36 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A74696D657374616D70546F4C6F636B446174653A207374 DUP2 MSTORE PUSH22 0x185ADA5B99C81C195C9A5BD9081D1BDBC81CDA1BDC9D PUSH1 0x52 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4943 PUSH1 0x29 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x63616E277420726573657420746865206E6577207374616B696E6720636F6E74 DUP2 MSTORE PUSH9 0x7261637420746F203 PUSH1 0xBC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x498E PUSH1 0x4B DUP4 PUSH2 0x50B1 JUMP JUMPDEST PUSH32 0x44656C65676174696F6E28616464726573732064656C6567617465652C75696E DUP2 MSTORE PUSH32 0x74323536206C6F636B446174652C75696E74323536206E6F6E63652C75696E74 PUSH1 0x20 DUP3 ADD MSTORE PUSH11 0x3235362065787069727929 PUSH1 0xA8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x4B ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A01 PUSH1 0x3D DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A6765745072696F7255736572537461 DUP2 MSTORE PUSH32 0x6B65416E64446174653A206E6F74207965742064657465726D696E6564000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A60 PUSH1 0x21 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x46656553686172696E6720616464726573732073686F756C646E277420626520 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AA3 PUSH1 0x3F DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A6765745072696F72546F74616C5374 DUP2 MSTORE PUSH32 0x616B6573466F72446174653A206E6F74207965742064657465726D696E656400 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B02 PUSH1 0xF DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B2D PUSH1 0x44 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A6765745072696F725374616B654279 DUP2 MSTORE PUSH32 0x44617465466F7244656C6567617465653A206E6F74207965742064657465726D PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x1A5B9959 PUSH1 0xE2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B99 PUSH1 0x25 DUP4 PUSH2 0x50A8 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A64656C656761746542795369673A20696E76616C696420 DUP2 MSTORE PUSH5 0x6E6F6E6365 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50DF JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50E8 JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x510C JUMP JUMPDEST PUSH2 0x3FA1 DUP2 PUSH2 0x50EE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C03 DUP3 DUP7 PUSH2 0x4060 JUMP JUMPDEST PUSH1 0x1C DUP3 ADD SWAP2 POP PUSH2 0xEDF DUP3 DUP5 DUP7 PUSH2 0x4086 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1738 DUP3 DUP5 PUSH2 0x40A5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1738 DUP3 DUP5 PUSH2 0x40D4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C37 DUP3 PUSH2 0x44A1 JUMP JUMPDEST SWAP2 POP PUSH2 0x4C43 DUP3 DUP6 PUSH2 0x407A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x4C53 DUP3 DUP5 PUSH2 0x407A JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 PUSH2 0x47D6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 PUSH2 0x4981 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x3FA7 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x3F98 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4C9D DUP3 DUP6 PUSH2 0x3FA7 JUMP JUMPDEST PUSH2 0x1738 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3FA7 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4CB8 DUP3 DUP7 PUSH2 0x3FA7 JUMP JUMPDEST PUSH2 0x4CC5 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3FA7 JUMP JUMPDEST PUSH2 0x3A1F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4BE5 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4CE0 DUP3 DUP6 PUSH2 0x3FA7 JUMP JUMPDEST PUSH2 0x1738 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4BE5 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4CFB DUP3 DUP6 PUSH2 0x3FA7 JUMP JUMPDEST PUSH2 0x1738 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4BEE JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4D19 DUP2 DUP6 PUSH2 0x3FB0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3A1F DUP2 DUP5 PUSH2 0x4009 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x4057 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x4071 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4D57 DUP3 DUP9 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4D64 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x3FA7 JUMP JUMPDEST PUSH2 0x4D71 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4D7E PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4D8B PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4071 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4DA3 DUP3 DUP8 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4DB0 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4DBD PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0xEDF PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x3FA7 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4DD8 DUP3 DUP8 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4DE5 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4BDC JUMP JUMPDEST PUSH2 0x4DF2 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0xEDF PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x4071 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x415B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1738 DUP2 DUP5 PUSH2 0x4164 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x419C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x41E7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x422D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4297 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x430C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4345 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4397 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x43E1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4429 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4470 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x44BF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x44F8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x454A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4595 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x460A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4659 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x46C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4737 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4762 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4841 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4869 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x48DE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4936 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x49F4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4A53 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4A96 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4AF5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4B20 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x165A DUP2 PUSH2 0x4B8C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4FFC DUP3 DUP7 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4CC5 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4071 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x5017 DUP3 DUP7 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x4CC5 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4BE5 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x4BD3 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4CFB DUP3 DUP6 PUSH2 0x4BD3 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x165A DUP3 DUP5 PUSH2 0x4BEE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x505C DUP3 DUP7 PUSH2 0x4BE5 JUMP JUMPDEST PUSH2 0x5069 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4071 JUMP JUMPDEST PUSH2 0x3A1F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4057 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4FFC DUP3 DUP7 PUSH2 0x4BE5 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4CFB DUP3 DUP6 PUSH2 0x4BEE JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 PUSH2 0x50D3 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF NOT AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 PUSH2 0x50B6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165A DUP3 PUSH2 0x50EE JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x513E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5126 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x954 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x5162 DUP2 PUSH2 0x50B6 JUMP JUMPDEST DUP2 EQ PUSH2 0x1FCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5162 DUP2 PUSH2 0x50C1 JUMP JUMPDEST PUSH2 0x5162 DUP2 PUSH2 0x50D0 JUMP JUMPDEST PUSH2 0x5162 DUP2 PUSH2 0x50DF JUMP JUMPDEST PUSH2 0x5162 DUP2 PUSH2 0x50E8 JUMP JUMPDEST PUSH2 0x5162 DUP2 PUSH2 0x50EE JUMP INVALID JUMPI PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A5F746F74616C506F776572427944 PUSH2 0x7465 CHAINID PUSH16 0x7244656C6567617465653A206D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72546F74616C56 PUSH16 0x74696E67506F7765723A206F76657266 PUSH13 0x6F77206F6E20746F74616C2076 PUSH16 0x74696E6720706F77657220636F6D7075 PUSH21 0x6174696F6E6D756C7469706C69636174696F6E206F PUSH23 0x6572666C6F77206F6E2077656967687420636F6D707574 PUSH2 0x7469 PUSH16 0x6E57656967687465645374616B696E67 GASPRICE GASPRICE PUSH24 0x656967687465645374616B654279446174653A206D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F775374616B696E673A3A 0x5F PUSH5 0x6563726561 PUSH20 0x65557365725374616B653A207374616B65642061 PUSH14 0x6F756E7420756E646572666C6F77 JUMPI PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A6765745072696F72566F7465733A KECCAK256 PUSH16 0x766572666C6F77206F6E20746F74616C KECCAK256 PUSH23 0x6F74696E6720706F77657220636F6D7075746174696F6E MSTORE8 PUSH21 0x616B696E673A3A5F696E6372656173654461696C79 MSTORE8 PUSH21 0x616B653A207374616B656420616D6F756E74206F76 PUSH6 0x72666C6F7753 PUSH21 0x616B696E673A3A5F77726974655374616B696E6743 PUSH9 0x65636B706F696E743A KECCAK256 PUSH3 0x6C6F63 PUSH12 0x206E756D6265722065786365 PUSH6 0x647320333220 PUSH3 0x697473 MSTORE8 PUSH21 0x616B696E673A3A5F696E6372656173655573657253 PUSH21 0x616B653A207374616B656420616D6F756E74206F76 PUSH6 0x72666C6F7757 PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A5F746F74616C506F776572427944 PUSH2 0x7465 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72576569676874 PUSH6 0x645374616B65 GASPRICE KECCAK256 PUSH16 0x766572666C6F77206F6E20746F74616C KECCAK256 PUSH24 0x656967687420636F6D7075746174696F6E5374616B696E67 GASPRICE GASPRICE PUSH10 0x6E637265617365537461 PUSH12 0x653A2062616C616E6365206F PUSH23 0x6572666C6F775374616B696E673A3A5F64656372656173 PUSH6 0x4461696C7953 PUSH21 0x616B653A207374616B656420616D6F756E7420756E PUSH5 0x6572666C6F PUSH24 0x5374616B696E673A3A5F696E63726561736544656C656761 PUSH21 0x655374616B653A207374616B656420616D6F756E74 KECCAK256 PUSH16 0x766572666C6F775374616B696E673A3A 0x5F PUSH5 0x6563726561 PUSH20 0x6544656C65676174655374616B653A207374616B PUSH6 0x6420616D6F75 PUSH15 0x7420756E646572666C6F77A365627A PUSH27 0x723158204E5624842B70EEBAD1EF63A30CC6E4F4B569E7EAA0B2A2 INVALID SWAP3 TIMESTAMP 0x48 0x5D DUP2 ISZERO PUSH21 0x1A6C6578706572696D656E74616CF564736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "885:26534:57:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;885:26534:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:24:59;;;:::i;:::-;;;;;;;;;;;;;;;;16300:276:57;;;;;;;;;:::i;:::-;;4986:34:59;;;:::i;:::-;;;;;;;;5691:49;;;;;;;;;:::i;:::-;;;;;;;;2164:212:57;;;;;;;;;:::i;5786:48:59:-;;;:::i;1160:44::-;;;:::i;:::-;;;;;;;;15926:113:60;;;;;;;;;:::i;2358:122:59:-;;;:::i;1492:621:60:-;;;;;;;;;:::i;1442:171:57:-;;;;;;;;;:::i;2115:64:59:-;;;;;;;;;:::i;:::-;;;;;;;;8916:672:60;;;;;;;;;:::i;10680:280:57:-;;;;;;;;;:::i;5570:38:59:-;;;;;;;;;:::i;976:236:60:-;;;;;;;;;:::i;7787:1233:57:-;;;;;;;;;:::i;24890:401::-;;;:::i;25613:128::-;;;:::i;23962:186::-;;;;;;;;;:::i;13498:830:60:-;;;;;;;;;:::i;4346:99:59:-;;;;;;;;;:::i;:::-;;;;;;;;;3804:103;;;;;;;;;:::i;15697:107:60:-;;;;;;;;;:::i;15824:255:57:-;;;;;;;;;:::i;14674:564:60:-;;;;;;;;;:::i;25897:876:57:-;;;;;;;;;:::i;:::-;;;;;;;;;4774:41:59;;;;;;;;;:::i;9988:396:57:-;;;;;;;;;:::i;5069:614:60:-;;;;;;;;;:::i;851:68:142:-;;;:::i;10010:443:60:-;;;;;;;;;:::i;1134:83:142:-;;;:::i;494:849:48:-;;;;;;;;;:::i;3472:60:59:-;;;;;;;;;:::i;:::-;;;;;;;;4062:83;;;;;;;;;:::i;13926:254:57:-;;;;;;;;;:::i;:::-;;;;;;;;;2262:31:59;;;:::i;23558:216:57:-;;;;;;;;;:::i;2040:22:59:-;;;:::i;5310:48::-;;;;;;;;;:::i;2805:33::-;;;:::i;1509:48::-;;;:::i;19766:145:57:-;;;;;;;;;:::i;24304:252::-;;;;;;;;;:::i;5091:52:59:-;;;:::i;10922:454:60:-;;;;;;;;;:::i;1409:41:59:-;;;:::i;20053:237:57:-;;;;;;;;;:::i;9308:324::-;;;;;;;;;:::i;4587:79:59:-;;;;;;;;;:::i;3264:80::-;;;;;;;;;:::i;18018:1432:57:-;;;;;;;;;:::i;2566:134:59:-;;;:::i;6946:1208:60:-;;;;;;;;;:::i;4901:1518:57:-;;;;;;;;;:::i;3381:1079:60:-;;;;;;;;;:::i;1351:98:142:-;;;;;;;;;:::i;1945:24:59:-;;;;:::o;16300:276:57:-;16366:42;16376:10;16388:9;16399:8;16366:9;:42::i;:::-;16526:46;16540:10;16552:9;16563:8;16526:13;:46::i;:::-;16300:276;;:::o;4986:34:59:-;;;-1:-1:-1;;;;;4986:34:59;;:::o;5691:49::-;;;;;;;;;;;;;;;:::o;2164:212:57:-;323:10:48;345:4;323:27;315:52;;;;-1:-1:-1;;;315:52:48;;;;;;;;;;;;;;;;;2315:57:57;2322:6;2330;2338:5;2345:8;2355:9;2366:5;2315:6;:57::i;:::-;2164:212;;;;;:::o;5786:48:59:-;;;-1:-1:-1;;;;;5786:48:59;;:::o;1160:44::-;1203:1;1160:44;:::o;15926:113:60:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;15984:14:60;;16001:5;15984:14;;;:6;:14;;;;;;;:22;;-1:-1:-1;;15984:22:60;;;16015:20;;;;;15991:6;;16015:20;;;;;;;;;;15926:113;:::o;2358:122:59:-;2400:80;;;;;;;;;;;;;;2358:122;:::o;1492:621:60:-;1581:23;1746:13;1762:25;1782:4;1762:19;:25::i;:::-;1746:41;-1:-1:-1;1548:9:59;1805:20:60;;1746:41;1860:250;1889:3;1884:1;:8;1860:250;;1934:171;1945:16;1967:40;1985:1;1988:5;1995:11;1967:40;;:17;:40::i;:::-;1934:171;;;;;;;;;;;;;;;;;:5;:171::i;:::-;1915:190;-1:-1:-1;1041:7:59;1894:14:60;1860:250;;;;1492:621;;;;;;:::o;1442:171:57:-;1548:61;1555:10;1567:6;1575:5;1582:8;1592:9;1603:5;1548:6;:61::i;:::-;1442:171;;;;:::o;2115:64:59:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2115:64:59;;:::o;8916:672:60:-;9029:12;9183:13;9199:25;9219:4;9199:19;:25::i;:::-;9183:41;-1:-1:-1;1548:9:59;9242:20:60;;9183:41;9297:288;9326:3;9321:1;:8;9297:288;;9352:20;9375:51;9395:7;9404:1;9407:5;9414:11;9375:19;:51::i;:::-;9352:74;-1:-1:-1;;;;;;9435:17:60;;;9431:150;;9468:107;9474:5;9481:13;9468:107;;;;;;;;;;;;;;;;;:5;:107::i;:::-;9460:115;;9431:150;-1:-1:-1;1041:7:59;9331:14:60;9297:288;;;;8916:672;;;;;;;:::o;10680:280:57:-;792:9:60;:7;:9::i;:::-;:31;;;-1:-1:-1;812:10:60;805:18;;;;:6;:18;;;;;;;;792:31;784:56;;;;-1:-1:-1;;;784:56:60;;;;;;;;;-1:-1:-1;;;;;10776:25:57;;;;;;:16;:25;;;;;;;:32;;-1:-1:-1;;10776:32:57;10804:4;10776:32;;;10812:56;-1:-1:-1;;;10812:56:57;;:46;;:56;;10859:8;;10812:56;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10812:56:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;10872:25:57;;10900:5;10872:25;;;:16;:25;;;;;;;:33;;-1:-1:-1;;10872:33:57;;;10915:41;;;-1:-1:-1;10915:41:57;;10889:7;;10947:8;;10915:41;;;;;;;;;;10680:280;;:::o;5570:38:59:-;;;;;;;;;;;;;;;:::o;976:236:60:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;1066:35:60;;1058:80;;;;-1:-1:-1;;;1058:80:60;;;;;;;;;1142:20;:66;;-1:-1:-1;;;;;;1142:66:60;-1:-1:-1;;;;;1142:66:60;;;;;;;;;;976:236::o;7787:1233:57:-;8208:13;8224:44;8262:5;8244:15;:23;8224:19;:44::i;:::-;8208:60;;1548:9:59;8276:8:57;:23;8272:62;;;1548:9:59;8306:23:57;;8272:62;8337:11;8351:47;8389:8;8371:15;:26;8351:19;:47::i;:::-;8337:61;;8402:20;8441:14;8432:5;8426:3;:11;8425:30;;;;;;8458:1;8425:34;8402:57;;8463:25;8500:12;8491:6;:21;;;;;;8463:49;;8633:1;8617:12;:17;8613:142;;8641:109;8648:10;8712:1;8697:12;:16;8676:17;:38;8667:6;:47;8717:5;8724:8;8734:9;8745:4;8641:6;:109::i;:::-;8822:22;;;8805:212;8851:3;8846:1;:8;8805:212;;8937:75;8944:10;8963:17;8983:1;8986:8;8996:9;9007:4;8937:6;:75::i;:::-;8856:19;;8805:212;;;;7787:1233;;;;;;;;;;:::o;24890:401::-;24948:18;;;;;-1:-1:-1;;;;;24948:18:57;24940:81;;;;-1:-1:-1;;;24940:81:57;;;;;;;;;24890:401::o;25613:128::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;25661:11:57;:18;;-1:-1:-1;;25661:18:57;25675:4;25661:18;;;25703:8;;:33;;-1:-1:-1;;;25703:33:57;;25688:49;;-1:-1:-1;;;;;25703:8:57;;:18;;:33;;25730:4;;25703:33;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25703:33:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25703:33:57;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;25703:33:57;;;;;;;;;25688:49;;;;;;;;;;;;;;;25613:128::o;23962:186::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;24035:25:57;;24027:71;;;;-1:-1:-1;;;24027:71:57;;;;;;;;;24102:10;:42;;-1:-1:-1;;;;;;24102:42:57;-1:-1:-1;;;;;24102:42:57;;;;;;;;;;23962:186::o;13498:830:60:-;13581:13;13616:9;13608:4;:17;;13600:106;;;;-1:-1:-1;;;13600:106:60;;;;;;;;;13735:16;;;1548:9:59;13764:29:60;-1:-1:-1;13764:29:60;13756:119;;;;-1:-1:-1;;;13756:119:60;;;;;;;;;13920:8;13971:6;13953:13;1548:9:59;13938:28:60;-1:-1:-1;;;;;13931:47:60;;;;;;;13920:58;;14059:265;1448:2:59;1635:11;-1:-1:-1;;;;;14087:196:60;:175;1448:2:59;1203:1;14098:33:60;14137:67;1635:11:59;14167:1:60;14163;:5;14137:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;14087:175;;;;;;;;;;;;;;;;;:5;:175::i;:::-;-1:-1:-1;;;;;14087:196:60;;;;;;;14059:265;;;;;;;;;;;;;;;;;:5;:265::i;:::-;14050:274;13498:830;-1:-1:-1;;;;;13498:830:60:o;4346:99:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4346:99:59;;-1:-1:-1;;;;;4346:99:59;;:::o;3804:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3804:103:59;;-1:-1:-1;;;;;3804:103:59;;:::o;15697:107:60:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;15752:14:60;;;;;;:6;:14;;;;;;;:21;;-1:-1:-1;;15752:21:60;15769:4;15752:21;;;15782:18;;;;;15759:6;;15782:18;;15824:255:57;15918:9;;15881:14;;15901:175;1548:9:59;15934:15:57;:30;15929:1;:35;15901:175;;15997:74;16003:7;16012:26;16027:7;16036:1;16012:14;:26::i;:::-;15997:74;;;;;;;;;;;;;;;;;:5;:74::i;:::-;15987:84;-1:-1:-1;1041:7:59;15966:14:57;15901:175;;;;15824:255;;;:::o;14674:564:60:-;14743:16;14786:9;;14773;:22;;14765:112;;;;-1:-1:-1;;;14765:112:60;;;;;;;;;15115:25;1041:7:59;15156:9:60;;15144;:21;15143:35;;;;;;15115:63;;15225:9;;1041:7:59;15193:17:60;:29;:41;15182:52;;14674:564;;;;:::o;25897:876:57:-;25954:22;25978;26006:14;26023:51;1548:9:59;26043:15:57;:30;26023:19;:51::i;:::-;26257:9;;26006:68;;-1:-1:-1;26108:13:57;;1041:7:59;26257:21:57;26240:133;26285:6;26280:1;:11;26240:133;;26347:1;26318:26;26333:7;26342:1;26318:14;:26::i;:::-;-1:-1:-1;;;;;26318:30:57;;26314:55;;;26356:7;;;;;26314:55;1041:7:59;26293:14:57;26240:133;;;;26398:5;26384:20;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;26384:20:57;;26376:28;;26430:5;26417:19;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;26417:19:57;-1:-1:-1;26586:9:57;;26408:28;;-1:-1:-1;26552:9:57;;1041:7:59;26586:21:57;26569:201;26614:6;26609:1;:11;26569:201;;26643:14;26660:26;26675:7;26684:1;26660:14;:26::i;:::-;26643:43;-1:-1:-1;;;;;;26695:11:57;;;26691:75;;26725:1;26714:5;26720:1;26714:8;;;;;;;;;;;;;:12;;;;;26744:7;26732:6;26739:1;26732:9;;;;;;;;-1:-1:-1;;;;;26732:19:57;;;:9;;;;;;;;;;;:19;26757:3;;;;;26691:75;-1:-1:-1;1041:7:59;26622:14:57;26569:201;;;;25897:876;;;;;;:::o;4774:41:59:-;;;;;;;;;;;;;:::o;9988:396:57:-;10109:10;10092:28;;;;:16;:28;;;;;;;;10084:53;;;;-1:-1:-1;;;10084:53:57;;;;;;;;;10142:40;10152:6;10160:5;10167:8;10177:4;10142:9;:40::i;:::-;10336:44;10350:6;10358:5;10365:8;10375:4;10336:13;:44::i;:::-;9988:396;;;:::o;5069:614:60:-;5174:12;5328:13;5344:25;5364:4;5344:19;:25::i;:::-;5328:41;-1:-1:-1;1548:9:59;5387:20:60;;5328:41;5442:238;5471:3;5466:1;:8;5442:238;;5505:170;5516:5;5527:61;5557:7;5566:1;5569:5;5576:11;5527:29;:61::i;:::-;5505:170;;;;;;;;;;;;;;;;;:5;:170::i;:::-;5497:178;-1:-1:-1;1041:7:59;5476:14:60;5442:238;;851:68:142;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;10010:443:60:-;10142:12;10160:13;10176:52;10201:7;10210:4;10216:11;10176:24;:52::i;:::-;10160:68;-1:-1:-1;;;;;;10236:10:60;;;10232:218;;10253:13;10269:36;10289:4;10295:9;10269:19;:36::i;:::-;10253:52;;1448:2:59;-1:-1:-1;;;;;10318:102:60;:86;10324:6;10332;10318:86;;;;;;;;;;;;;;;;;:5;:86::i;:::-;-1:-1:-1;;;;;10318:102:60;;;;;;;10310:110;;10232:218;;;;10444:1;10436:9;;10232:218;10010:443;;;;;;;:::o;1134:83:142:-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;494:849:48:-;677:11;:9;:11::i;:::-;-1:-1:-1;;;;;663:25:48;:10;-1:-1:-1;;;;;663:25:48;;655:50;;;;-1:-1:-1;;;655:50:48;;;;;;;;;717:10;-1:-1:-1;;;;;717:20:48;;;709:45;;;;-1:-1:-1;;;709:45:48;;;;;;;;;786:14;812:25;840:15;:13;:15::i;:::-;812:43;;859:10;872:14;880:5;;872:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;872:7:48;;-1:-1:-1;;;872:14:48:i;:::-;859:27;-1:-1:-1;895:9:48;890:120;914:9;:16;910:1;:20;890:120;;;953:9;963:1;953:12;;;;;;;;;;;;;;-1:-1:-1;;;;;946:19:48;;:3;-1:-1:-1;;;;;946:19:48;;;942:64;;;985:4;973:16;;995:5;;942:64;932:3;;890:120;;;;1021:9;1013:43;;;;-1:-1:-1;;;1013:43:48;;;;;;;;;1091:14;1109;1184:1;1176:10;;1188:5;;1159:35;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1159:35:48;;;1148:76;;;;;;;;;;;;;;1127:97;;-1:-1:-1;1127:97:48;-1:-1:-1;;;;;;;1236:17:48;;;;;;;1228:45;;;;-1:-1:-1;;;1228:45:48;;;;;;;;;1295:7;1285:6;:17;1277:45;;;;-1:-1:-1;;;1277:45:48;;;;;;;;;1327:12;1333:5;;1327:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1327:5:48;;-1:-1:-1;;;1327:12:48:i;:::-;494:849;;;;;;;;;;:::o;3472:60:59:-;;;;;;;;;;;;;;;:::o;4062:83::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13926:254:57:-;14005:6;14013;14025:38;14049:6;14057:5;14025:23;:38::i;:::-;14067:21;14091:33;14110:6;14118:5;14091:18;:33::i;:::-;14136:23;;;;-1:-1:-1;14067:57:57;-1:-1:-1;;13926:254:57;;;;;;:::o;2262:31:59:-;;;;;;:::o;23558:216:57:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;23647:33:57;;23639:87;;;;-1:-1:-1;;;23639:87:57;;;;;;;;;23730:18;:40;;-1:-1:-1;;;;;23730:40:57;;;;;-1:-1:-1;;;;;;23730:40:57;;;;;;;;;23558:216::o;2040:22:59:-;;;-1:-1:-1;;;;;2040:22:59;;:::o;5310:48::-;;;;;;;;;;;;;;;:::o;2805:33::-;;;;;;-1:-1:-1;;;;;2805:33:59;;:::o;1509:48::-;1548:9;1509:48;:::o;19766:145:57:-;19831:6;19850:57;19864:7;19888:1;19873:12;:16;19891:15;19850:13;:57::i;:::-;19843:64;19766:145;-1:-1:-1;;19766:145:57:o;24304:252::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;24386:36:57;;1809:1:59;24386:36:57;;;;:76;;-1:-1:-1;1850:1:59;-1:-1:-1;;;;;24426:36:57;;;;24386:76;24374:144;;;;-1:-1:-1;;;24374:144:57;;;;;;;;;24522:13;:30;;-1:-1:-1;;;;;24522:30:57;;;-1:-1:-1;;;24522:30:57;-1:-1:-1;;;;;24522:30:57;;;;;;;;;24304:252::o;5091:52:59:-;;;-1:-1:-1;;;5091:52:59;;-1:-1:-1;;;;;5091:52:59;;:::o;10922:454:60:-;11039:6;11051:17;11071:52;11096:7;11105:4;11111:11;11071:24;:52::i;:::-;11051:72;-1:-1:-1;;;;;;11287:15:60;;;:39;;;;;11306:20;:18;:20::i;:::-;11283:69;;;-1:-1:-1;11346:1:60;11283:69;11362:10;-1:-1:-1;10922:454:60;;;;;;:::o;1409:41:59:-;1448:2;1409:41;:::o;20053:237:57:-;20125:6;20159:36;;;:26;:36;;;;;;;;20206:16;:80;;20285:1;20206:80;;;20225:33;;;;:23;:33;;;;;;;;-1:-1:-1;;20259:16:57;;20225:51;;;;;;;;;:57;-1:-1:-1;;;20225:57:57;;-1:-1:-1;;;;;20225:57:57;20199:87;20053:237;-1:-1:-1;;;20053:237:57:o;9308:324::-;9394:41;9404:6;9412:5;9419:8;9429:5;9394:9;:41::i;:::-;9583:45;9597:6;9605:5;9612:8;9622:5;9583:13;:45::i;4587:79:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3264:80::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3264:80:59;;-1:-1:-1;;;;;3264:80:59;;:::o;18018:1432:57:-;18472:23;2400:80:59;;;;;;;;;;;;;;18552:4:57;18536:22;;;;;;;;;;;;;;;18560:12;:10;:12::i;:::-;18582:4;18508:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18508:80:57;;;18498:91;;;;;;18472:117;;18680:18;2612:88:59;;;;;;;;;;;;;;;18711:67:57;;18743:9;;18754:8;;18764:5;;18771:6;;18711:67;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18711:67:57;;;18701:78;;;;;;18680:99;;18784:14;18840:15;18857:10;18811:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18811:57:57;;;18801:68;;;;;;18784:85;;18873:17;18893:26;18903:6;18911:1;18914;18917;18893:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18893:26:57;;;;;;;;18873:46;;18997:42;19029:9;18997:31;:42::i;:::-;18989:96;;;;-1:-1:-1;;;18989:96:57;;;;;;;;;-1:-1:-1;;;;;19106:17:57;;;;;;:6;:17;;;;;:19;;;;;;;;19097:28;;19089:78;;;;-1:-1:-1;;;19089:78:57;;;;;;;;;19186:6;19179:3;:13;;19171:67;;;;-1:-1:-1;;;19171:67:57;;;;;;;;;19242:41;19252:9;19263;19274:8;19242:9;:41::i;:::-;19401:45;19415:9;19426;19437:8;19401:13;:45::i;2566:134:59:-;2612:88;;;;;;6946:1208:60;7069:6;7103:24;:22;:24::i;:::-;7089:11;:38;7081:119;;;;-1:-1:-1;;;7081:119:60;;;;;;;;;-1:-1:-1;;;;;7227:38:60;;7205:19;7227:38;;;:29;:38;;;;;;;;:44;;;;;;;;;;;7279:17;7275:41;;7310:1;7303:8;;;;;7275:41;-1:-1:-1;;;;;7368:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:59;-1:-1:-1;;7410:16:60;;7368:59;;;;;;;;;:69;;:84;-1:-1:-1;7364:172:60;;-1:-1:-1;;;;;7466:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;-1:-1:-1;;7508:16:60;;;;7466:59;;;;;;;;:65;-1:-1:-1;;;7466:65:60;;-1:-1:-1;;;;;7466:65:60;;-1:-1:-1;7459:72:60;;7364:172;-1:-1:-1;;;;;7589:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:44;;;;;;;;:54;:44;:54;:68;-1:-1:-1;7585:92:60;;;7671:1;7664:8;;;;;7585:92;7681:12;-1:-1:-1;;7716:16:60;;7736:350;7751:5;7743:13;;:5;:13;;;7736:350;;;7805:1;7788:13;;;7787:19;;;7779:27;;7845:20;;:::i;:::-;-1:-1:-1;;;;;;7868:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:49;;;;;;;;;;;;;7845:72;;;;;;;;;;;;;;;-1:-1:-1;;;7845:72:60;;;-1:-1:-1;;;;;7845:72:60;;;;;;;;;7926:27;;7922:160;;;7968:8;;;;-1:-1:-1;7961:15:60;;-1:-1:-1;;;;7961:15:60;7922:160;7992:12;;:26;;;-1:-1:-1;7988:94:60;;;8034:6;8026:14;;7988:94;;;8075:1;8066:6;:10;8058:18;;7988:94;7736:350;;;;;-1:-1:-1;;;;;;8096:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:48;;;;;;;;;;:54;-1:-1:-1;;;;;;;;8096:54:60;;;;;-1:-1:-1;;6946:1208:60;;;;;:::o;4901:1518:57:-;4988:26;5008:5;4988:19;:26::i;:::-;4980:34;;5042:5;5026:12;:21;;5018:100;;;;-1:-1:-1;;;5018:100:57;;;;;;;;;5188:14;5205:51;1548:9:59;5225:15:57;:30;5205:19;:51::i;:::-;5188:68;;5272:6;5264:5;:14;5260:34;;;5288:6;5280:14;;5260:34;5433:13;5449:68;5474:10;5486:12;5515:1;5500:12;:16;5449:24;:68::i;:::-;5433:84;;5538:1;5529:6;-1:-1:-1;;;;;5529:10:57;;5521:98;;;;-1:-1:-1;;;5521:98:57;;;;;;;;;5623:52;5642:10;5654:12;5668:6;5623:18;:52::i;:::-;5679:45;5698:10;5710:5;5717:6;5679:18;:45::i;:::-;5728:41;5748:12;5762:6;5728:19;:41::i;:::-;5773:34;5793:5;5800:6;5773:19;:34::i;:::-;5980:10;5947:20;5970:21;;;:9;:21;;;;;;;;:35;;;;;;;;;;6030:28;;;;;;-1:-1:-1;;;;;5970:35:57;;;;6030:28;;6062:113;;-1:-1:-1;6137:10:57;6127:21;;;;:9;:21;;;;;;;;:28;;;;;;;;:43;;-1:-1:-1;;;;;;6127:43:57;-1:-1:-1;;;;;6127:43:57;;;;;;6062:113;6188:10;6224:1;6178:21;;;:9;:21;;;;;;;;:35;;;;;;;;:48;;-1:-1:-1;;;;;;6178:48:57;;;6230:58;6253:12;6200;6281:6;6230:22;:58::i;:::-;6292:49;6315:10;6327:5;6334:6;6292:22;:49::i;:::-;6375:10;-1:-1:-1;;;;;6351:64:57;;6387:12;6401:5;6408:6;6351:64;;;;;;;;;;;;;;;;;4901:1518;;;;;;:::o;3381:1079:60:-;3473:6;3507:24;:22;:24::i;:::-;3493:11;:38;3485:114;;;;-1:-1:-1;;;3485:114:60;;;;;;;;;3604:19;3626:32;;;:26;:32;;;;;;;;3666:17;3662:41;;3697:1;3690:8;;;;;3662:41;3748:29;;;;:23;:29;;;;;;;;:47;-1:-1:-1;;3778:16:60;;3748:47;;;;;;;;;:57;;:72;-1:-1:-1;3744:148:60;;3834:29;;;;:23;:29;;;;;;;;-1:-1:-1;;3864:16:60;;;;3834:47;;;;;;;;:53;-1:-1:-1;;;3834:53:60;;-1:-1:-1;;;;;3834:53:60;;-1:-1:-1;3827:60:60;;3744:148;3938:29;;;;:23;:29;;;;;;;;:32;;;;;;;;:42;:32;:42;:56;-1:-1:-1;3934:80:60;;;4008:1;4001:8;;;;;3934:80;4018:12;-1:-1:-1;;4053:16:60;;4073:331;4088:5;4080:13;;:5;:13;;;4073:331;;;4142:1;4125:13;;;4124:19;;;4116:27;;4175:20;;:::i;:::-;-1:-1:-1;4198:29:60;;;;:23;:29;;;;;;;;:37;;;;;;;;;;;;;4175:60;;;;;;;;;;;;;;;-1:-1:-1;;;4175:60:60;;;-1:-1:-1;;;;;4175:60:60;;;;;;;;;4244:27;;4240:160;;;4286:8;;;;-1:-1:-1;4279:15:60;;-1:-1:-1;;;;4279:15:60;4240:160;4310:12;;:26;;;-1:-1:-1;4306:94:60;;;4352:6;4344:14;;4306:94;;;4393:1;4384:6;:10;4376:18;;4306:94;4073:331;;;;;-1:-1:-1;4414:29:60;;;;:23;:29;;;;;;;;:36;;;;;;;;;;:42;-1:-1:-1;;;;;;;;4414:42:60;;;;;-1:-1:-1;;3381:1079:60;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;20613:417:57:-;-1:-1:-1;;;;;20736:20:57;;;20710:23;20736:20;;;:9;:20;;;;;;;;:30;;;;;;;;;;;;;20796:35;20746:9;20757:8;20796:14;:35::i;:::-;-1:-1:-1;;;;;20835:20:57;;;;;;;:9;:20;;;;;;;;:30;;;;;;;;;;:42;;-1:-1:-1;;;;;;20835:42:57;;;;;;;;;;20887:64;;20770:61;;-1:-1:-1;20835:42:57;20887:64;;;;;;;;20835:30;;20887:64;;;;;;;;;;20956:70;20971:15;20988:9;20999:16;21017:8;20956:14;:70::i;21145:685::-;21250:20;:18;:20::i;:::-;21246:581;;;21277:16;21296:23;:8;1041:7:59;21296:23:57;:12;:23;:::i;:::-;-1:-1:-1;;;;;21350:20:57;;;21324:23;21350:20;;;:9;:20;;;;;;;;:30;;;;;;;;;21277:42;;-1:-1:-1;21350:30:57;;;;21389:28;;;;21385:87;;21425:41;21435:9;21446;21457:8;21425:9;:41::i;:::-;21551:15;21578:10;-1:-1:-1;;;;;21569:28:57;;:30;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21569:30:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21569:30:57;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;21569:30:57;;;;;;;;;21551:48;-1:-1:-1;21615:24:57;:8;1072:7;21615:24;:12;:24;:::i;:::-;21604:35;;21660:7;21648:8;:19;21644:179;;;-1:-1:-1;;;;;21693:20:57;;;;;;;:9;:20;;;;;;;;:30;;;;;;;;;;;;-1:-1:-1;21733:28:57;;;;21729:89;;21770:41;21780:9;21791;21802:8;21770:9;:41::i;:::-;21246:581;;;21145:685;;;:::o;2846:1864::-;3009:1;3000:6;-1:-1:-1;;;;;3000:10:57;;2992:90;;;;-1:-1:-1;;;2992:90:57;;;;;;;;;3092:12;3087:63;;3119:26;3139:5;3119:19;:26::i;:::-;3111:34;;3087:63;3169:15;3161:5;:23;3153:90;;;;-1:-1:-1;;;3153:90:57;;;;;;;;;-1:-1:-1;;;;;3312:22:57;;3308:55;;3352:6;3341:17;;3308:55;-1:-1:-1;;;;;3432:23:57;;3428:59;;3474:8;3462:20;;3428:59;3550:12;3545:136;;3569:14;3586:51;1548:9:59;3606:15:57;:30;3586:19;:51::i;:::-;3569:68;;3654:6;3646:5;:14;3642:34;;;3670:6;3662:14;;3642:34;3545:136;;3685:22;3710:31;3725:8;3735:5;3710:14;:31::i;:::-;3685:56;;3773:47;3788:6;3796;3804:8;3814:5;3773:14;:47::i;:::-;-1:-1:-1;;;;;4146:19:57;;;4118:25;4146:19;;;:9;:19;;;;;;;;:26;;;;;;;;;;;;4180:30;;;;4176:380;;-1:-1:-1;;;;;4247:19:57;;;;;;;:9;:19;;;;;;;;:26;;;;;;;;:38;;-1:-1:-1;;;;;;4247:38:57;;;;;;;;;;4362:65;4385:17;4247:26;4411:15;4362:22;:65::i;:::-;4485:66;4491:15;4508:6;4485:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;4476:75;;4176:380;4587:48;4610:9;4621:5;4628:6;4587:22;:48::i;:::-;4696:9;-1:-1:-1;;;;;4644:62:57;4677:17;-1:-1:-1;;;;;4644:62:57;4660:8;-1:-1:-1;;;;;4644:62:57;;4670:5;4644:62;;;;;;;;;;;;;;;2846:1864;;;;;;;;:::o;2419:430:60:-;2532:12;2550:13;2566:36;2586:4;2592:9;2566:19;:36::i;:::-;2550:52;;2606:13;2622:45;2649:4;2655:11;2622:26;:45::i;:::-;2606:61;;1448:2:59;-1:-1:-1;;;;;2745:100:60;:84;2751:6;2759;2745:84;;;;;;;;;;;;;;;;;:5;:84::i;:::-;-1:-1:-1;;;;;2745:100:60;;;;;;;;2419:430;-1:-1:-1;;;;;;2419:430:60:o;1516:172:56:-;1611:6;1634:5;;;1659:12;-1:-1:-1;;;;;1651:6:56;;;;;;;;1643:29;;;;-1:-1:-1;;;1643:29:56;;;;;;;;;1975:156;2070:6;2095:1;-1:-1:-1;;;;;2090:6:56;:1;-1:-1:-1;;;;;2090:6:56;;;2098:12;2082:29;;;;;-1:-1:-1;;;2082:29:56;;;;;;;;;;-1:-1:-1;;;2122:5:56;;;1975:156::o;2411:211::-;2506:6;-1:-1:-1;;;;;2522:6:56;;2518:30;;-1:-1:-1;2542:1:56;2535:8;;2518:30;2563:5;;;-1:-1:-1;;;;;2580:10:56;;;;:5;;;;;;;;;;;;-1:-1:-1;;;;;2580:10:56;;2592:12;2572:33;;;;;-1:-1:-1;;;2572:33:56;;;;;;;;;15382:202:57;-1:-1:-1;;;;;15483:31:57;;15464:6;15483:31;;;:22;:31;;;;;;;;:41;;;;;;;;15525:34;;;:25;:34;;;;;:44;;;;;;;;;-1:-1:-1;;15525:44:57;;;;:48;15483:91;;;;;;;:97;-1:-1:-1;;;;;;;;15483:97:57;;;;15382:202;;;;:::o;11632:1604::-;11908:6;-1:-1:-1;;;;;11908:11:57;11918:1;11908:11;:35;;;;;11923:20;:18;:20::i;:::-;11904:57;;;11950:7;;11904:57;11972:27;11993:5;11972:20;:27::i;:::-;11964:35;;12003:38;12027:6;12035:5;12003:23;:38::i;:::-;-1:-1:-1;;;;;12085:22:57;;12081:49;;12120:10;12109:21;;12081:49;12170:34;12190:5;12197:6;12170:19;:34::i;:::-;12208:45;12227:10;12239:5;12246:6;12208:18;:45::i;:::-;12290:10;12280:21;;;;:9;:21;;;;;;;;:28;;;;;;;;;12257:67;;-1:-1:-1;;;;;12280:28:57;12302:5;12317:6;12257:22;:67::i;:::-;12398:5;12380:15;:23;:39;;;;-1:-1:-1;12408:11:57;;;;12407:12;12380:39;:56;;;;;12424:12;12423:13;12380:56;12376:637;;;12443:21;12467:33;12486:6;12494:5;12467:18;:33::i;:::-;12505:24;;;;;12443:57;-1:-1:-1;;;;;;12620:18:57;;;12616:393;;12662:10;;-1:-1:-1;;;;;12662:10:57;12646:94;;;;-1:-1:-1;;;12646:94:57;;;;;;;;;12884:8;;12909:10;;12884:53;;-1:-1:-1;;;12884:53:57;;-1:-1:-1;;;;;12884:8:57;;;;:16;;:53;;12909:10;;;12922:14;;12884:53;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12884:53:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12884:53:57;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12884:53:57;;;;;;;;;-1:-1:-1;12943:10:57;;12977:8;;12943:60;;-1:-1:-1;;;12943:60:57;;-1:-1:-1;;;;;12943:10:57;;;;:25;;:60;;12977:8;;;12988:14;;12943:60;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12943:60:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12943:60:57;;;;12616:393;12376:637;;13056:8;;:35;;-1:-1:-1;;;13056:35:57;;13041:12;;-1:-1:-1;;;;;13056:8:57;;:17;;:35;;13074:8;;13084:6;;13056:35;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13056:35:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13056:35:57;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13056:35:57;;;;;;;;;13041:50;;13103:7;13095:60;;;;-1:-1:-1;;;13095:60:57;;;;;;;;;13209:8;-1:-1:-1;;;;;13165:67:57;13182:10;-1:-1:-1;;;;;13165:67:57;;13194:6;13202:5;13219:12;13165:67;;;;;;;;;;;;;;;;;11632:1604;;;;;:::o;13314:420::-;13432:20;:18;:20::i;:::-;13428:303;;;13459:16;13478:20;:5;1041:7:59;13478:20:57;:9;:20;:::i;:::-;13459:39;;13507:12;:43;;;;13542:8;13523:15;:27;;13507:43;13503:224;;;13558:12;13573:64;13598:10;13610:8;13635:1;13620:12;:16;13573:24;:64::i;:::-;13558:79;-1:-1:-1;;;;;;13647:9:57;;;13643:79;;13665:50;13675:5;13682:8;13692;13702:12;13665:9;:50::i;5989:421:60:-;6133:12;6151:13;6167:36;6187:4;6193:9;6167:19;:36::i;:::-;6151:52;;6207:13;6223:59;6255:7;6264:4;6270:11;6223:31;:59::i;:::-;6207:75;;1448:2:59;-1:-1:-1;;;;;6294:112:60;:96;6300:6;6308;6294:96;;;;;;;;;;;;;;;;;:5;:96::i;:::-;-1:-1:-1;;;;;6294:112:60;;;;;;;;5989:421;-1:-1:-1;;;;;;;5989:421:60:o;11735:1209::-;11853:6;11887:24;:22;:24::i;:::-;11873:11;:38;11865:112;;;;-1:-1:-1;;;11865:112:60;;;;;;;;;11989:26;12010:4;11989:20;:26::i;:::-;-1:-1:-1;;;;;12041:34:60;;12019:19;12041:34;;;:25;:34;;;;;;;;:40;;;;;;;;;11982:33;;-1:-1:-1;12041:40:60;;12089:17;12085:41;;12120:1;12113:8;;;;;12085:41;-1:-1:-1;;;;;12178:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:55;-1:-1:-1;;12216:16:60;;12178:55;;;;;;;;;:65;;:80;-1:-1:-1;12174:164:60;;-1:-1:-1;;;;;12272:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;-1:-1:-1;;12310:16:60;;;;12272:55;;;;;;;;:61;-1:-1:-1;;;12272:61:60;;-1:-1:-1;;;;;12272:61:60;;-1:-1:-1;12265:68:60;;12174:164;-1:-1:-1;;;;;12391:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:40;;;;;;;;:50;:40;:50;:64;-1:-1:-1;12387:88:60;;;12469:1;12462:8;;;;;12387:88;12479:12;-1:-1:-1;;12514:16:60;;12534:346;12549:5;12541:13;;:5;:13;;;12534:346;;;12603:1;12586:13;;;12585:19;;;12577:27;;12643:20;;:::i;:::-;-1:-1:-1;;;;;;12666:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:45;;;;;;;;;;;;;12643:68;;;;;;;;;;;;;;;-1:-1:-1;;;12643:68:60;;;-1:-1:-1;;;;;12643:68:60;;;;;;;;;12720:27;;12716:160;;;12762:8;;;;-1:-1:-1;12755:15:60;;-1:-1:-1;;;;12755:15:60;12716:160;12786:12;;:26;;;-1:-1:-1;12782:94:60;;;12828:6;12820:14;;12782:94;;;12869:1;12860:6;:10;12852:18;;12782:94;12534:346;;;;;-1:-1:-1;;;;;;12890:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:44;;;;;;;;;;:50;-1:-1:-1;;;;;;;;12890:50:60;;;;;-1:-1:-1;;11735:1209:60;;;;;:::o;780:87:137:-;853:10;780:87;:::o;26936:85:57:-;27008:8;;-1:-1:-1;;;;;27008:8:57;26936:85;:::o;27231:186::-;27328:15;;;27341:1;27328:15;;;;;;;;;27279;;;;27328;;;;;;;105:10:-1;27328:15:57;88:34:-1;136:17;;-1:-1;27328:15:57;27300:43;;27362:31;;;27347:9;27357:1;27347:12;;;;;;;;-1:-1:-1;;;;;;27347:46:57;;;:12;;;;;;;;;;;:46;27404:9;-1:-1:-1;27231:186:57;:::o;3263:125:48:-;3377:2;3366:14;3360:21;;3348:37::o;2133:344::-;2182:12;2196:23;2231:4;-1:-1:-1;;;;;2223:18:48;2242:5;2223:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2181:67:48;;;;2257:7;2252:222;;1386:2:49;2275:10:48;:17;:40;2271:199;;2323:58;;-1:-1:-1;;;2323:58:48;;;;;;;;2271:199;2406:57;;;;;;;;;;;;;;-1:-1:-1;;;2406:57:48;;;2451:10;2406:16;:57::i;:::-;2399:65;;-1:-1:-1;;;2399:65:48;;;;;;;;;14848:338:57;14946:1;14937:6;-1:-1:-1;;;;;14937:10:57;;14929:100;;;;-1:-1:-1;;;14929:100:57;;;;;;;;;15033:14;15050:61;15075:10;15087:5;15109:1;15094:12;:16;15050:24;:61::i;:::-;15033:78;;15133:7;-1:-1:-1;;;;;15123:17:57;:6;-1:-1:-1;;;;;15123:17:57;;;15115:67;;;;-1:-1:-1;;;15115:67:57;;;;;;;;14358:319;14439:6;14451:12;14466:36;14486:15;14466:19;:36::i;:::-;14451:51;;14506:13;14522:32;14542:5;14549:4;14522:19;:32::i;:::-;14610:13;;-1:-1:-1;;;14610:13:57;;-1:-1:-1;;;;;14610:13:57;;;14601:22;;;;;-1:-1:-1;14670:3:57;;1448:2:59;14635:15:57;;;14634:33;;;:39;;;14358:319;-1:-1:-1;;;;;14358:319:57:o;16133:122:60:-;16203:20;;:48;;-1:-1:-1;;;16203:48:60;;16186:4;;-1:-1:-1;;;;;16203:20:60;;:36;;:48;;16240:10;;16203:48;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16203:48:60;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16203:48:60;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16203:48:60;;;;;;;;;16196:55;;16133:122;:::o;23082:136:57:-;23184:9;23082:136;:::o;318:156:149:-;379:4;405:42;-1:-1:-1;;;;;397:50:149;;;;;;:72;;-1:-1:-1;;;;;;;451:18:149;;;;318:156::o;13148:93:60:-;13225:12;13148:93;:::o;2530:419:54:-;-1:-1:-1;;;;;2651:34:54;;2629:19;2651:34;;;:25;:34;;;;;;;;:44;;;;;;;;;2715:31;;;:22;:31;;;;;:41;;;;;;;;2651:44;;;;-1:-1:-1;;2757:16:54;;2715:59;;;;;;;;;;:65;2802:76;;;;;;;;;;;;-1:-1:-1;;;2715:65:54;;;-1:-1:-1;;;;;2715:65:54;;2629:19;2802:76;;2715:65;;2816:5;;2802:76;;;;;:5;:76::i;:::-;2784:94;;2882:63;2903:7;2912:8;2922:12;2936:8;2882:20;:63::i;1875:418::-;-1:-1:-1;;;;;1996:34:54;;1974:19;1996:34;;;:25;:34;;;;;;;;:44;;;;;;;;;2060:31;;;:22;:31;;;;;:41;;;;;;;;1996:44;;;;-1:-1:-1;;2102:16:54;;2060:59;;;;;;;;;;:65;2147:75;;;;;;;;;;;;-1:-1:-1;;;2060:65:54;;;-1:-1:-1;;;;;2060:65:54;;1974:19;2147:75;;2060:65;;2161:5;;2147:75;;;;;:5;:75::i;7493:373::-;7567:19;7589:36;;;:26;:36;;;;;;;;;7645:23;:33;;;;;7589:36;;;;-1:-1:-1;;7679:16:54;;7645:51;;;;;;;;;;:57;7724:77;;;;;;;;;;;;7589:36;;-1:-1:-1;;;7645:57:54;;;-1:-1:-1;;;;;7645:57:54;;7567:19;;7724:77;;7645:57;;7738:5;;7724:77;;;;;;;:5;:77::i;:::-;7706:95;;7805:57;7829:8;7839:12;7853:8;7805:23;:57::i;6922:372::-;6996:19;7018:36;;;:26;:36;;;;;;;;;7074:23;:33;;;;;7018:36;;;;-1:-1:-1;;7108:16:54;;7074:51;;;;;;;;;;:57;7153:76;;;;;;;;;;;;7018:36;;-1:-1:-1;;;7074:57:54;;;-1:-1:-1;;;;;7074:57:54;;6996:19;;7153:76;;7074:57;;7167:5;;7153:76;;;;;;;:5;:76::i;4760:893::-;-1:-1:-1;;;;;4887:40:54;;4865:19;4887:40;;;:29;:40;;;;;;;;:50;;;;;;;;;4957:37;;;:26;:37;;;;;:47;;;;;;;;4887:50;;;;-1:-1:-1;;5005:16:54;;4957:65;;;;;;;;;;:71;-1:-1:-1;;;4957:71:54;;-1:-1:-1;;;;;4957:71:54;;;;4865:19;5460:14;;;;5456:121;;;5492:80;5498:6;5506:5;5492:80;;;;;;;;;;;;;;;;;:5;:80::i;:::-;5481:91;;5456:121;5580:69;5605:9;5616:8;5626:12;5640:8;5580:24;:69::i;4065:446::-;-1:-1:-1;;;;;4192:40:54;;4170:19;4192:40;;;:29;:40;;;;;;;;:50;;;;;;;;;4262:37;;;:26;:37;;;;;:47;;;;;;;;4192:50;;;;-1:-1:-1;;4310:16:54;;4262:65;;;;;;;;;;:71;4355:79;;;;;;;;;;;;-1:-1:-1;;;4262:71:54;;;-1:-1:-1;;;;;4262:71:54;;4170:19;4355:79;;4262:71;;4369:5;;4355:79;;;;;:5;:79::i;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;22143:316:57:-;22270:6;-1:-1:-1;;;;;22260:16:57;:6;-1:-1:-1;;;;;22260:16:57;;;:30;;;;;22289:1;22280:6;-1:-1:-1;;;;;22280:10:57;;22260:30;22256:200;;;-1:-1:-1;;;;;22301:20:57;;;22297:74;;22323:48;22346:6;22354:8;22364:6;22323:22;:48::i;:::-;-1:-1:-1;;;;;22381:20:57;;;22377:74;;22403:48;22426:6;22434:8;22444:6;22403:22;:48::i;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;6739:581:57;6902:8;;:52;;-1:-1:-1;;;6902:52:57;;6887:12;;-1:-1:-1;;;;;6902:8:57;;:21;;:52;;6924:6;;6940:4;;6947:6;;6902:52;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6902:52:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6902:52:57;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6902:52:57;;;;;;;;;6887:67;;6966:7;6958:16;;;;;;7015:14;7032:31;7047:8;7057:5;7032:14;:31::i;:::-;7015:48;;7077:66;7083:7;7092:6;7077:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;7067:76;;7179:34;7199:5;7206:6;7179:19;:34::i;:::-;7217:43;7236:8;7246:5;7253:6;7217:18;:43::i;:::-;7283:8;-1:-1:-1;;;;;7270:46:57;;7293:6;7301:5;7308:7;7270:46;;;;;;;;;15241:340:60;15308:7;15321:20;15344:25;15364:4;15344:19;:25::i;:::-;15321:48;;15516:4;15500:12;:20;15496:67;;1041:7:59;15534:12:60;:24;15527:31;;15496:67;-1:-1:-1;15573:4:60;;15241:340;-1:-1:-1;15241:340:60:o;1719:569:49:-;1808:13;1827:22;1858:4;1827:36;;1867:22;1898:4;1867:36;;1907:19;1386:2;1959:9;:16;1940:9;:16;:35;:57;1929:69;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;1929:69:49;87:34:-1;135:17;;-1:-1;1929:69:49;-1:-1:-1;1907:91:49;-1:-1:-1;1907:91:49;2044:9;;2061:87;2085:9;:16;2081:1;:20;2061:87;;;2131:9;2141:1;2131:12;;;;;;;;;;;;;;;;2113:10;2124:3;;;;;;2113:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2113:30:49;;;;;;;;-1:-1:-1;2103:3:49;;2061:87;;;-1:-1:-1;1386:2:49;2151:105;2193:9;:16;2189:1;:20;2151:105;;;2239:9;2249:1;2239:12;;;;;;;;;;;;;;;;2221:10;2232:3;;;;;;2221:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2221:30:49;;;;;;;;-1:-1:-1;2211:3:49;;2151:105;;;-1:-1:-1;2273:10:49;;1719:569;-1:-1:-1;;;;;;;1719:569:49:o;3209:613:54:-;3336:18;3357:86;3364:12;3357:86;;;;;;;;;;;;;;;;;:6;:86::i;:::-;3336:107;;3467:1;3452:12;:16;;;:104;;;;-1:-1:-1;;;;;;3472:31:54;;;;;;:22;:31;;;;;;;;:41;;;;;;;;:84;-1:-1:-1;;3514:16:54;;3472:59;;;;;;;;;:69;:84;;;:69;;:84;3452:104;3448:371;;;-1:-1:-1;;;;;3563:31:54;;;;;;:22;:31;;;;;;;;:41;;;;;;;;-1:-1:-1;;3605:16:54;;3563:59;;;;;;;;;:76;;-1:-1:-1;;;;;;3563:76:54;-1:-1:-1;;;;;;;;3563:76:54;;;;;;3448:371;;;3713:33;;;;;;;;;;;;;;-1:-1:-1;;;;;3713:33:54;;;;;;;;;;-1:-1:-1;;;;;3655:31:54;;;;-1:-1:-1;3655:31:54;;;:22;:31;;;;;:41;;;;;;;;:55;;;;;;;;;;:91;;;;;;;;;-1:-1:-1;;;3655:91:54;-1:-1:-1;;;;;;3655:91:54;;;-1:-1:-1;;3655:91:54;;;;;;;;;;;;;;;3751:34;;;:25;:34;;;;;:44;;;;;;;;;;:63;;-1:-1:-1;3798:16:54;;;3751:63;;;;;;;;3209:613::o;8090:565::-;8201:18;8222:86;8229:12;8222:86;;;;;;;;;;;;;;;;;:6;:86::i;:::-;8201:107;;8332:1;8317:12;:16;;;:96;;;;-1:-1:-1;8337:33:54;;;;:23;:33;;;;;;;;:76;-1:-1:-1;;8371:16:54;;8337:51;;;;;;;;;:61;:76;;;:61;;:76;8317:96;8313:339;;;8420:33;;;;:23;:33;;;;;;;;-1:-1:-1;;8454:16:54;;8420:51;;;;;;;;;:68;;-1:-1:-1;;;;;;8420:68:54;-1:-1:-1;;;;;;;;8420:68:54;;;;;;8313:339;;;8554:33;;;;;;;;;;;;;;-1:-1:-1;;;;;8554:33:54;;;;;;;;;;-1:-1:-1;8504:33:54;;;:23;:33;;;;;:47;;;;;;;;;;:83;;;;;;-1:-1:-1;;8504:83:54;;;;;;;;;;-1:-1:-1;;;;;;8504:83:54;-1:-1:-1;;;8504:83:54;;;;;;;;;;;;8592:36;;;:26;:36;;;;;:55;;;;;-1:-1:-1;8631:16:54;;;8592:55;;;;8090:565::o;5923:806::-;6056:18;6077:86;6084:12;6077:86;;;;;;;;;;;;;;;;;:6;:86::i;:::-;-1:-1:-1;;;;;6185:37:54;;6167:15;6185:37;;;:26;:37;;;;;;;;:47;;;;;;;;-1:-1:-1;;6233:16:54;;6185:65;;;;;;;;;;;:71;6056:107;;-1:-1:-1;;;;6185:71:54;;;-1:-1:-1;;;;;6185:71:54;;6265:16;;;;;;:110;;-1:-1:-1;;;;;;6285:37:54;;;;;;:26;:37;;;;;;;;:47;;;;;;;;:90;-1:-1:-1;;6333:16:54;;6285:65;;;;;;;;;:75;:90;;;:75;;:90;6265:110;6261:395;;;-1:-1:-1;;;;;6382:37:54;;;;;;:26;:37;;;;;;;;:47;;;;;;;;-1:-1:-1;;6430:16:54;;6382:65;;;;;;;;;:82;;-1:-1:-1;;;;;;6382:82:54;-1:-1:-1;;;;;;;;6382:82:54;;;;;;6261:395;;;6544:33;;;;;;;;;;;;;;-1:-1:-1;;;;;6544:33:54;;;;;;;;;;-1:-1:-1;;;;;6480:37:54;;-1:-1:-1;6480:37:54;;;:26;:37;;;;;:47;;;;;;;;:61;;;;;;;;;;:97;;;;;;;;;-1:-1:-1;;;6480:97:54;-1:-1:-1;;;;;;6480:97:54;;;-1:-1:-1;;6480:97:54;;;;;;;;;;;;;;;6582:40;;;:29;:40;;;;;:50;;;;;;;;;;:69;;6480:97;6635:16;;6582:69;;;;;;;;;;;;;6261:395;6685:9;-1:-1:-1;;;;;6664:61:54;;6696:8;6706;6716;6664:61;;;;;;;;;797:146:56;875:6;906:12;-1:-1:-1;;;895:9:56;;887:32;;;;-1:-1:-1;;;887:32:56;;;;;;;;;;-1:-1:-1;937:1:56;;797:146;-1:-1:-1;;797:146:56:o;885:26534:57:-;;;;;;;;;;-1:-1:-1;885:26534:57;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:150;228:13;;246:41;228:13;246:41;;299:128;374:13;;392:30;374:13;392:30;;434:130;501:20;;526:33;501:20;526:33;;571:134;649:13;;667:33;649:13;667:33;;726:336;;;840:3;833:4;825:6;821:17;817:27;807:2;;858:1;855;848:12;807:2;-1:-1;878:20;;918:18;907:30;;904:2;;;950:1;947;940:12;904:2;984:4;976:6;972:17;960:29;;1035:3;1027:4;1019:6;1015:17;1005:8;1001:32;998:41;995:2;;;1052:1;1049;1042:12;1348:128;1414:20;;1439:32;1414:20;1439:32;;1483:126;1548:20;;1573:31;1548:20;1573:31;;1616:128;1682:20;;1707:32;1682:20;1707:32;;1751:241;;1855:2;1843:9;1834:7;1830:23;1826:32;1823:2;;;1871:1;1868;1861:12;1823:2;1906:1;1923:53;1968:7;1948:9;1923:53;;;1913:63;1817:175;-1:-1;;;;1817:175;1999:366;;;2120:2;2108:9;2099:7;2095:23;2091:32;2088:2;;;2136:1;2133;2126:12;2088:2;2171:1;2188:53;2233:7;2213:9;2188:53;;;2178:63;;2150:97;2278:2;2296:53;2341:7;2332:6;2321:9;2317:22;2296:53;;;2286:63;;2257:98;2082:283;;;;;;2372:366;;;2493:2;2481:9;2472:7;2468:23;2464:32;2461:2;;;2509:1;2506;2499:12;2461:2;2544:1;2561:53;2606:7;2586:9;2561:53;;;2551:63;;2523:97;2651:2;2669:53;2714:7;2705:6;2694:9;2690:22;2669:53;;2745:741;;;;;;2919:3;2907:9;2898:7;2894:23;2890:33;2887:2;;;2936:1;2933;2926:12;2887:2;2971:1;2988:53;3033:7;3013:9;2988:53;;;2978:63;;2950:97;3078:2;3096:53;3141:7;3132:6;3121:9;3117:22;3096:53;;;3086:63;;3057:98;3186:2;3204:53;3249:7;3240:6;3229:9;3225:22;3204:53;;;3194:63;;3165:98;3322:2;3311:9;3307:18;3294:32;3346:18;3338:6;3335:30;3332:2;;;3378:1;3375;3368:12;3332:2;3406:64;3462:7;3453:6;3442:9;3438:22;3406:64;;;3396:74;;;;3273:203;2881:605;;;;;;;;;3493:491;;;;3631:2;3619:9;3610:7;3606:23;3602:32;3599:2;;;3647:1;3644;3637:12;3599:2;3682:1;3699:53;3744:7;3724:9;3699:53;;;3689:63;;3661:97;3789:2;3807:53;3852:7;3843:6;3832:9;3828:22;3807:53;;;3797:63;;3768:98;3897:2;3915:53;3960:7;3951:6;3940:9;3936:22;3915:53;;;3905:63;;3876:98;3593:391;;;;;;3991:617;;;;;4146:3;4134:9;4125:7;4121:23;4117:33;4114:2;;;4163:1;4160;4153:12;4114:2;4198:1;4215:53;4260:7;4240:9;4215:53;;;4205:63;;4177:97;4305:2;4323:53;4368:7;4359:6;4348:9;4344:22;4323:53;;;4313:63;;4284:98;4413:2;4431:53;4476:7;4467:6;4456:9;4452:22;4431:53;;;4421:63;;4392:98;4521:2;4539:53;4584:7;4575:6;4564:9;4560:22;4539:53;;;4529:63;;4500:98;4108:500;;;;;;;;4615:991;;;;;;;;4819:3;4807:9;4798:7;4794:23;4790:33;4787:2;;;4836:1;4833;4826:12;4787:2;4871:1;4888:53;4933:7;4913:9;4888:53;;;4878:63;;4850:97;4978:2;4996:53;5041:7;5032:6;5021:9;5017:22;4996:53;;;4986:63;;4957:98;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;;5094:63;;5065:98;5194:2;5212:53;5257:7;5248:6;5237:9;5233:22;5212:53;;;5202:63;;5173:98;5302:3;5321:51;5364:7;5355:6;5344:9;5340:22;5321:51;;;5311:61;;5281:97;5409:3;5428:53;5473:7;5464:6;5453:9;5449:22;5428:53;;;5418:63;;5388:99;5518:3;5537:53;5582:7;5573:6;5562:9;5558:22;5537:53;;;5527:63;;5497:99;4781:825;;;;;;;;;;;5613:489;;;;5750:2;5738:9;5729:7;5725:23;5721:32;5718:2;;;5766:1;5763;5756:12;5718:2;5801:1;5818:53;5863:7;5843:9;5818:53;;;5808:63;;5780:97;5908:2;5926:53;5971:7;5962:6;5951:9;5947:22;5926:53;;;5916:63;;5887:98;6016:2;6034:52;6078:7;6069:6;6058:9;6054:22;6034:52;;6109:741;;;;;;6280:3;6268:9;6259:7;6255:23;6251:33;6248:2;;;6297:1;6294;6287:12;6248:2;6332:1;6349:53;6394:7;6374:9;6349:53;;;6339:63;;6311:97;6439:2;6457:52;6501:7;6492:6;6481:9;6477:22;6457:52;;;6447:62;;6418:97;6546:2;6564:53;6609:7;6600:6;6589:9;6585:22;6564:53;;;6554:63;;6525:98;6654:2;6672:53;6717:7;6708:6;6697:9;6693:22;6672:53;;;6662:63;;6633:98;6762:3;6781:53;6826:7;6817:6;6806:9;6802:22;6781:53;;;6771:63;;6741:99;6242:608;;;;;;;;;6857:257;;6969:2;6957:9;6948:7;6944:23;6940:32;6937:2;;;6985:1;6982;6975:12;6937:2;7020:1;7037:61;7090:7;7070:9;7037:61;;7121:241;;7225:2;7213:9;7204:7;7200:23;7196:32;7193:2;;;7241:1;7238;7231:12;7193:2;7276:1;7293:53;7338:7;7318:9;7293:53;;7369:551;;;;7526:2;7514:9;7505:7;7501:23;7497:32;7494:2;;;7542:1;7539;7532:12;7494:2;7577:1;7594:64;7650:7;7630:9;7594:64;;;7584:74;;7556:108;7695:2;7713:72;7777:7;7768:6;7757:9;7753:22;7713:72;;;7703:82;;7674:117;7822:2;7840:64;7896:7;7887:6;7876:9;7872:22;7840:64;;8175:263;;8290:2;8278:9;8269:7;8265:23;8261:32;8258:2;;;8306:1;8303;8296:12;8258:2;8341:1;8358:64;8414:7;8394:9;8358:64;;8445:366;;;8566:2;8554:9;8545:7;8541:23;8537:32;8534:2;;;8582:1;8579;8572:12;8534:2;8617:1;8634:53;8679:7;8659:9;8634:53;;8818:869;;;;;;;9007:3;8995:9;8986:7;8982:23;8978:33;8975:2;;;9024:1;9021;9014:12;8975:2;9059:1;9076:53;9121:7;9101:9;9076:53;;;9066:63;;9038:97;9166:2;9184:53;9229:7;9220:6;9209:9;9205:22;9184:53;;;9174:63;;9145:98;9274:2;9292:53;9337:7;9328:6;9317:9;9313:22;9292:53;;;9282:63;;9253:98;9382:2;9400:53;9445:7;9436:6;9425:9;9421:22;9400:53;;;9390:63;;9361:98;9490:3;9509:53;9554:7;9545:6;9534:9;9530:22;9509:53;;;9499:63;;9469:99;9599:3;9618:53;9663:7;9654:6;9643:9;9639:22;9618:53;;;9608:63;;9578:99;8969:718;;;;;;;;;9694:364;;;9814:2;9802:9;9793:7;9789:23;9785:32;9782:2;;;9830:1;9827;9820:12;9782:2;9865:1;9882:53;9927:7;9907:9;9882:53;;;9872:63;;9844:97;9972:2;9990:52;10034:7;10025:6;10014:9;10010:22;9990:52;;10065:364;;;10185:2;10173:9;10164:7;10160:23;10156:32;10153:2;;;10201:1;10198;10191:12;10153:2;10236:1;10253:52;10297:7;10277:9;10253:52;;10436:239;;10539:2;10527:9;10518:7;10514:23;10510:32;10507:2;;;10555:1;10552;10545:12;10507:2;10590:1;10607:52;10651:7;10631:9;10607:52;;10682:364;;;10802:2;10790:9;10781:7;10777:23;10773:32;10770:2;;;10818:1;10815;10808:12;10770:2;10853:1;10870:52;10914:7;10894:9;10870:52;;11053:489;;;;11190:2;11178:9;11169:7;11165:23;11161:32;11158:2;;;11206:1;11203;11196:12;11158:2;11241:1;11258:52;11302:7;11282:9;11258:52;;;11248:62;;11220:96;11347:2;11365:53;11410:7;11401:6;11390:9;11386:22;11365:53;;;11355:63;;11326:98;11455:2;11473:53;11518:7;11509:6;11498:9;11494:22;11473:53;;11549:615;;;;;11703:3;11691:9;11682:7;11678:23;11674:33;11671:2;;;11720:1;11717;11710:12;11671:2;11755:1;11772:52;11816:7;11796:9;11772:52;;;11762:62;;11734:96;11861:2;11879:53;11924:7;11915:6;11904:9;11900:22;11879:53;;;11869:63;;11840:98;11969:2;11987:53;12032:7;12023:6;12012:9;12008:22;11987:53;;;11977:63;;11948:98;12077:2;12095:53;12140:7;12131:6;12120:9;12116:22;12095:53;;12172:173;;12259:46;12301:3;12293:6;12259:46;;;-1:-1;;12334:4;12325:14;;12252:93;12354:169;;12439:44;12479:3;12471:6;12439:44;;12531:142;12622:45;12661:5;12622:45;;;12617:3;12610:58;12604:69;;;12680:113;12763:24;12781:5;12763:24;;12831:690;;12976:54;13024:5;12976:54;;;13043:86;13122:6;13117:3;13043:86;;;13036:93;;13150:56;13200:5;13150:56;;;13226:7;13254:1;13239:260;13264:6;13261:1;13258:13;13239:260;;;13331:6;13325:13;13352:63;13411:3;13396:13;13352:63;;;13345:70;;13432:60;13485:6;13432:60;;;13422:70;-1:-1;;13286:1;13279:9;13239:260;;;-1:-1;13512:3;;12955:566;-1:-1;;;;;12955:566;13558:682;;13701:53;13748:5;13701:53;;;13767:85;13845:6;13840:3;13767:85;;;13760:92;;13873:55;13922:5;13873:55;;;13948:7;13976:1;13961:257;13986:6;13983:1;13980:13;13961:257;;;14053:6;14047:13;14074:61;14131:3;14116:13;14074:61;;;14067:68;;14152:59;14204:6;14152:59;;;14142:69;-1:-1;;14008:1;14001:9;13961:257;;14248:104;14325:21;14340:5;14325:21;;14359:152;14460:45;14480:24;14498:5;14480:24;;;14460:45;;14518:113;14601:24;14619:5;14601:24;;14638:152;14739:45;14759:24;14777:5;14759:24;;14820:310;;14952:88;15033:6;15028:3;14952:88;;;14945:95;;15052:43;15088:6;15083:3;15076:5;15052:43;;;-1:-1;;15108:16;;14938:192;15138:356;;15266:38;15298:5;15266:38;;;15316:88;15397:6;15392:3;15316:88;;;15309:95;;15409:52;15454:6;15449:3;15442:4;15435:5;15431:16;15409:52;;;15473:16;;;;;15246:248;-1:-1;;15246:248;15524:887;;15663:5;15657:12;15697:1;15686:9;15682:17;15710:1;15705:267;;;;15983:1;15978:427;;;;15675:730;;15705:267;15783:4;15779:1;15768:9;15764:17;15760:28;15802:88;15883:6;15878:3;15802:88;;;-1:-1;;15909:25;;15897:38;;15795:95;-1:-1;15949:16;;;-1:-1;15705:267;;15978:427;16047:1;16036:9;16032:17;16063:88;16144:6;16139:3;16063:88;;;16056:95;;16173:41;16208:5;16173:41;;;16230:1;16238:130;16252:6;16249:1;16246:13;16238:130;;;16311:14;;16298:11;;;16291:35;16358:1;16345:15;;;;16274:4;16267:12;16238:130;;;-1:-1;;16382:16;;;-1:-1;15675:730;;15633:778;;;;;;16419:158;16518:53;16565:5;16518:53;;16962:347;;17074:39;17107:5;17074:39;;;17125:71;17189:6;17184:3;17125:71;;;17118:78;;17201:52;17246:6;17241:3;17234:4;17227:5;17223:16;17201:52;;;17274:29;17296:6;17274:29;;;17265:39;;;;17054:255;-1:-1;;;17054:255;17317:378;;17477:67;17541:2;17536:3;17477:67;;;17577:34;17557:55;;-1:-1;;;17641:2;17632:12;;17625:33;17686:2;17677:12;;17463:232;-1:-1;;17463:232;17704:373;;17864:67;17928:2;17923:3;17864:67;;;17964:34;17944:55;;-1:-1;;;18028:2;18019:12;;18012:28;18068:2;18059:12;;17850:227;-1:-1;;17850:227;18086:440;;18246:67;18310:2;18305:3;18246:67;;;18346:34;18326:55;;18415:34;18410:2;18401:12;;18394:56;-1:-1;;;18479:2;18470:12;;18463:26;18517:2;18508:12;;18232:294;-1:-1;;18232:294;18535:451;;18695:67;18759:2;18754:3;18695:67;;;18795:34;18775:55;;18864:34;18859:2;18850:12;;18843:56;-1:-1;;;18928:2;18919:12;;18912:37;18977:2;18968:12;;18681:305;-1:-1;;18681:305;18995:332;;19155:67;19219:2;19214:3;19155:67;;;19255:34;19235:55;;19318:2;19309:12;;19141:186;-1:-1;;19141:186;19336:385;;19496:67;19560:2;19555:3;19496:67;;;19596:34;19576:55;;-1:-1;;;19660:2;19651:12;;19644:40;19712:2;19703:12;;19482:239;-1:-1;;19482:239;19730:377;;19890:67;19954:2;19949:3;19890:67;;;19990:34;19970:55;;-1:-1;;;20054:2;20045:12;;20038:32;20098:2;20089:12;;19876:231;-1:-1;;19876:231;20116:375;;20276:67;20340:2;20335:3;20276:67;;;20376:34;20356:55;;-1:-1;;;20440:2;20431:12;;20424:30;20482:2;20473:12;;20262:229;-1:-1;;20262:229;20500:374;;20660:67;20724:2;20719:3;20660:67;;;20760:34;20740:55;;-1:-1;;;20824:2;20815:12;;20808:29;20865:2;20856:12;;20646:228;-1:-1;;20646:228;20883:321;;21043:67;21107:2;21102:3;21043:67;;;-1:-1;;;21123:44;;21195:2;21186:12;;21029:175;-1:-1;;21029:175;21213:398;;21391:84;21473:1;21468:3;21391:84;;;-1:-1;;;21488:87;;21603:1;21594:11;;21377:234;-1:-1;;21377:234;21620:327;;21780:67;21844:2;21839:3;21780:67;;;21880:29;21860:50;;21938:2;21929:12;;21766:181;-1:-1;;21766:181;21956:385;;22116:67;22180:2;22175:3;22116:67;;;22216:34;22196:55;;-1:-1;;;22280:2;22271:12;;22264:40;22332:2;22323:12;;22102:239;-1:-1;;22102:239;22350:378;;22510:67;22574:2;22569:3;22510:67;;;22610:34;22590:55;;-1:-1;;;22674:2;22665:12;;22658:33;22719:2;22710:12;;22496:232;-1:-1;;22496:232;22737:451;;22897:67;22961:2;22956:3;22897:67;;;22997:34;22977:55;;23066:34;23061:2;23052:12;;23045:56;-1:-1;;;23130:2;23121:12;;23114:37;23179:2;23170:12;;22883:305;-1:-1;;22883:305;23197:382;;23357:67;23421:2;23416:3;23357:67;;;23457:34;23437:55;;-1:-1;;;23521:2;23512:12;;23505:37;23570:2;23561:12;;23343:236;-1:-1;;23343:236;23588:441;;23748:67;23812:2;23807:3;23748:67;;;23848:34;23828:55;;23917:34;23912:2;23903:12;;23896:56;-1:-1;;;23981:2;23972:12;;23965:27;24020:2;24011:12;;23734:295;-1:-1;;23734:295;24038:449;;24198:67;24262:2;24257:3;24198:67;;;24298:34;24278:55;;24367:34;24362:2;24353:12;;24346:56;-1:-1;;;24431:2;24422:12;;24415:35;24478:2;24469:12;;24184:303;-1:-1;;24184:303;24496:315;;24656:67;24720:2;24715:3;24656:67;;;-1:-1;;;24736:38;;24802:2;24793:12;;24642:169;-1:-1;;24642:169;24820:450;;24980:67;25044:2;25039:3;24980:67;;;25080:34;25060:55;;25149:34;25144:2;25135:12;;25128:56;-1:-1;;;25213:2;25204:12;;25197:36;25261:2;25252:12;;24966:304;-1:-1;;24966:304;25279:477;;25457:85;25539:2;25534:3;25457:85;;;25575:34;25555:55;;25644:34;25639:2;25630:12;;25623:56;-1:-1;;;25708:2;25699:12;;25692:27;25747:2;25738:12;;25443:313;-1:-1;;25443:313;25765:312;;25925:67;25989:2;25984:3;25925:67;;;-1:-1;;;26005:35;;26068:2;26059:12;;25911:166;-1:-1;;25911:166;26086:451;;26246:67;26310:2;26305:3;26246:67;;;26346:34;26326:55;;26415:34;26410:2;26401:12;;26394:56;-1:-1;;;26479:2;26470:12;;26463:37;26528:2;26519:12;;26232:305;-1:-1;;26232:305;26546:391;;26706:67;26770:2;26765:3;26706:67;;;26806:34;26786:55;;-1:-1;;;26870:2;26861:12;;26854:46;26928:2;26919:12;;26692:245;-1:-1;;26692:245;26946:378;;27106:67;27170:2;27165:3;27106:67;;;27206:34;27186:55;;-1:-1;;;27270:2;27261:12;;27254:33;27315:2;27306:12;;27092:232;-1:-1;;27092:232;27333:485;;27511:85;27593:2;27588:3;27511:85;;;27629:34;27609:55;;27698:34;27693:2;27684:12;;27677:56;-1:-1;;;27762:2;27753:12;;27746:35;27809:2;27800:12;;27497:321;-1:-1;;27497:321;27827:398;;27987:67;28051:2;28046:3;27987:67;;;28087:34;28067:55;;28156:31;28151:2;28142:12;;28135:53;28216:2;28207:12;;27973:252;-1:-1;;27973:252;28234:370;;28394:67;28458:2;28453:3;28394:67;;;28494:34;28474:55;;-1:-1;;;28558:2;28549:12;;28542:25;28595:2;28586:12;;28380:224;-1:-1;;28380:224;28613:400;;28773:67;28837:2;28832:3;28773:67;;;28873:34;28853:55;;28942:33;28937:2;28928:12;;28921:55;29004:2;28995:12;;28759:254;-1:-1;;28759:254;29022:315;;29182:67;29246:2;29241:3;29182:67;;;-1:-1;;;29262:38;;29328:2;29319:12;;29168:169;-1:-1;;29168:169;29346:442;;29506:67;29570:2;29565:3;29506:67;;;29606:34;29586:55;;29675:34;29670:2;29661:12;;29654:56;-1:-1;;;29739:2;29730:12;;29723:28;29779:2;29770:12;;29492:296;-1:-1;;29492:296;29797:374;;29957:67;30021:2;30016:3;29957:67;;;30057:34;30037:55;;-1:-1;;;30121:2;30112:12;;30105:29;30162:2;30153:12;;29943:228;-1:-1;;29943:228;30409:110;30490:23;30507:5;30490:23;;30526:107;30605:22;30621:5;30605:22;;30640:124;30722:36;30752:5;30722:36;;30771:100;30842:23;30859:5;30842:23;;30995:421;;31170:75;31241:3;31232:6;31170:75;;;31267:2;31262:3;31258:12;31251:19;;31288:103;31387:3;31378:6;31370;31288:103;;31423:262;;31567:93;31656:3;31647:6;31567:93;;31692:264;;31837:94;31927:3;31918:6;31837:94;;31963:650;;32218:148;32362:3;32218:148;;;32211:155;;32377:75;32448:3;32439:6;32377:75;;;32474:2;32469:3;32465:12;32458:19;;32488:75;32559:3;32550:6;32488:75;;;-1:-1;32585:2;32576:12;;32199:414;-1:-1;;32199:414;32620:372;;32819:148;32963:3;32819:148;;32999:372;;33198:148;33342:3;33198:148;;33378:213;33496:2;33481:18;;33510:71;33485:9;33554:6;33510:71;;33598:229;33724:2;33709:18;;33738:79;33713:9;33790:6;33738:79;;33834:324;33980:2;33965:18;;33994:71;33969:9;34038:6;33994:71;;;34076:72;34144:2;34133:9;34129:18;34120:6;34076:72;;34165:433;34338:2;34323:18;;34352:71;34327:9;34396:6;34352:71;;;34434:72;34502:2;34491:9;34487:18;34478:6;34434:72;;;34517:71;34584:2;34573:9;34569:18;34560:6;34517:71;;34605:322;34750:2;34735:18;;34764:71;34739:9;34808:6;34764:71;;;34846;34913:2;34902:9;34898:18;34889:6;34846:71;;34934:320;35078:2;35063:18;;35092:71;35067:9;35136:6;35092:71;;;35174:70;35240:2;35229:9;35225:18;35216:6;35174:70;;35261:616;35505:2;35519:47;;;35490:18;;35580:108;35490:18;35674:6;35580:108;;;35572:116;;35736:9;35730:4;35726:20;35721:2;35710:9;35706:18;35699:48;35761:106;35862:4;35853:6;35761:106;;35884:201;35996:2;35981:18;;36010:65;35985:9;36048:6;36010:65;;36092:213;36210:2;36195:18;;36224:71;36199:9;36268:6;36224:71;;36312:659;36542:3;36527:19;;36557:71;36531:9;36601:6;36557:71;;;36639:72;36707:2;36696:9;36692:18;36683:6;36639:72;;;36722;36790:2;36779:9;36775:18;36766:6;36722:72;;;36805;36873:2;36862:9;36858:18;36849:6;36805:72;;;36888:73;36956:3;36945:9;36941:19;36932:6;36888:73;;;36513:458;;;;;;;;;36978:547;37180:3;37165:19;;37195:71;37169:9;37239:6;37195:71;;;37277:72;37345:2;37334:9;37330:18;37321:6;37277:72;;;37360;37428:2;37417:9;37413:18;37404:6;37360:72;;;37443;37511:2;37500:9;37496:18;37487:6;37443:72;;37532:539;37730:3;37715:19;;37745:71;37719:9;37789:6;37745:71;;;37827:68;37891:2;37880:9;37876:18;37867:6;37827:68;;;37906:72;37974:2;37963:9;37959:18;37950:6;37906:72;;;37989;38057:2;38046:9;38042:18;38033:6;37989:72;;38078:245;38212:2;38197:18;;38226:87;38201:9;38286:6;38226:87;;38882:301;39020:2;39034:47;;;39005:18;;39095:78;39005:18;39159:6;39095:78;;39190:407;39381:2;39395:47;;;39366:18;;39456:131;39366:18;39456:131;;39604:407;39795:2;39809:47;;;39780:18;;39870:131;39780:18;39870:131;;40018:407;40209:2;40223:47;;;40194:18;;40284:131;40194:18;40284:131;;40432:407;40623:2;40637:47;;;40608:18;;40698:131;40608:18;40698:131;;40846:407;41037:2;41051:47;;;41022:18;;41112:131;41022:18;41112:131;;41260:407;41451:2;41465:47;;;41436:18;;41526:131;41436:18;41526:131;;41674:407;41865:2;41879:47;;;41850:18;;41940:131;41850:18;41940:131;;42088:407;42279:2;42293:47;;;42264:18;;42354:131;42264:18;42354:131;;42502:407;42693:2;42707:47;;;42678:18;;42768:131;42678:18;42768:131;;42916:407;43107:2;43121:47;;;43092:18;;43182:131;43092:18;43182:131;;43330:407;43521:2;43535:47;;;43506:18;;43596:131;43506:18;43596:131;;43744:407;43935:2;43949:47;;;43920:18;;44010:131;43920:18;44010:131;;44158:407;44349:2;44363:47;;;44334:18;;44424:131;44334:18;44424:131;;44572:407;44763:2;44777:47;;;44748:18;;44838:131;44748:18;44838:131;;44986:407;45177:2;45191:47;;;45162:18;;45252:131;45162:18;45252:131;;45400:407;45591:2;45605:47;;;45576:18;;45666:131;45576:18;45666:131;;45814:407;46005:2;46019:47;;;45990:18;;46080:131;45990:18;46080:131;;46228:407;46419:2;46433:47;;;46404:18;;46494:131;46404:18;46494:131;;46642:407;46833:2;46847:47;;;46818:18;;46908:131;46818:18;46908:131;;47056:407;47247:2;47261:47;;;47232:18;;47322:131;47232:18;47322:131;;47470:407;47661:2;47675:47;;;47646:18;;47736:131;47646:18;47736:131;;47884:407;48075:2;48089:47;;;48060:18;;48150:131;48060:18;48150:131;;48298:407;48489:2;48503:47;;;48474:18;;48564:131;48474:18;48564:131;;48712:407;48903:2;48917:47;;;48888:18;;48978:131;48888:18;48978:131;;49126:407;49317:2;49331:47;;;49302:18;;49392:131;49302:18;49392:131;;49540:407;49731:2;49745:47;;;49716:18;;49806:131;49716:18;49806:131;;49954:407;50145:2;50159:47;;;50130:18;;50220:131;50130:18;50220:131;;50368:407;50559:2;50573:47;;;50544:18;;50634:131;50544:18;50634:131;;50782:407;50973:2;50987:47;;;50958:18;;51048:131;50958:18;51048:131;;51416:433;51589:2;51574:18;;51603:71;51578:9;51647:6;51603:71;;;51685:72;51753:2;51742:9;51738:18;51729:6;51685:72;;51856:431;52028:2;52013:18;;52042:71;52017:9;52086:6;52042:71;;;52124;52191:2;52180:9;52176:18;52167:6;52124:71;;52294:209;52410:2;52395:18;;52424:69;52399:9;52466:6;52424:69;;52510:316;52652:2;52637:18;;52666:69;52641:9;52708:6;52666:69;;52833:209;52949:2;52934:18;;52963:69;52938:9;53005:6;52963:69;;53049:421;53216:2;53201:18;;53230:70;53205:9;53273:6;53230:70;;;53311:72;53379:2;53368:9;53364:18;53355:6;53311:72;;;53394:66;53456:2;53445:9;53441:18;53432:6;53394:66;;53477:431;53649:2;53634:18;;53663:70;53638:9;53706:6;53663:70;;53915:316;54057:2;54042:18;;54071:69;54046:9;54113:6;54071:69;;54238:151;54362:4;54353:14;;54310:79;54553:161;;54651:14;;;54693:4;54680:18;;;54610:104;54721:137;54824:12;;54795:63;55495:178;55613:19;;;55662:4;55653:14;;55606:67;55868:144;56003:3;55981:31;-1:-1;55981:31;56346:91;;56408:24;56426:5;56408:24;;56550:85;56616:13;56609:21;;56592:43;56642:145;-1:-1;;56704:78;;56687:100;56794:72;56856:5;56839:27;56873:121;-1:-1;;;;;56935:54;;56918:76;57080:88;57152:10;57141:22;;57124:44;57175:81;57246:4;57235:16;;57218:38;57263:104;-1:-1;;;;;57324:38;;57307:60;57374:129;;57461:37;57492:5;57510:153;;57605:53;57652:5;57605:53;;58698:106;;58776:23;58793:5;58776:23;;58812:145;58893:6;58888:3;58883;58870:30;-1:-1;58949:1;58931:16;;58924:27;58863:94;58966:268;59031:1;59038:101;59052:6;59049:1;59046:13;59038:101;;;59119:11;;;59113:18;59100:11;;;59093:39;59074:2;59067:10;59038:101;;;59154:6;59151:1;59148:13;59145:2;;;-1:-1;;59219:1;59201:16;;59194:27;59015:219;59404:97;59492:2;59472:14;-1:-1;;59468:28;;59452:49;59509:117;59578:24;59596:5;59578:24;;;59571:5;59568:35;59558:2;;59617:1;59614;59607:12;59773:111;59839:21;59854:5;59839:21;;59891:117;59960:24;59978:5;59960:24;;60139:115;60207:23;60224:5;60207:23;;60261:113;60328:22;60344:5;60328:22;;60381:115;60449:23;60466:5;60449:23;"
            },
            "methodIdentifiers": {
              "DELEGATION_TYPEHASH()": "e7a324dc",
              "DOMAIN_TYPEHASH()": "20606b70",
              "MAX_DURATION()": "b1724b46",
              "MAX_VOTING_WEIGHT()": "17748adc",
              "SOVToken()": "a58848c5",
              "WEIGHT_FACTOR()": "d27569e7",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "allUnlocked()": "9929e886",
              "balanceOf(address)": "70a08231",
              "computeWeightByDate(uint256,uint256)": "62cf8a08",
              "delegate(address,uint256)": "026e402b",
              "delegateBySig(address,uint256,uint256,uint256,uint8,bytes32,bytes32)": "e63a562e",
              "delegateStakingCheckpoints(address,uint256,uint32)": "6b6fde0e",
              "delegates(address,uint256)": "27dd1b00",
              "extendStakingDuration(uint256,uint256)": "eefb8c47",
              "feeSharing()": "03a18fa3",
              "getCurrentStakedUntil(uint256)": "d5c38464",
              "getCurrentVotes(address)": "b4b5ea57",
              "getPriorStakeByDateForDelegatee(address,uint256,uint256)": "e97ffacb",
              "getPriorTotalStakesForDate(uint256,uint256)": "f09cfc64",
              "getPriorTotalVotingPower(uint32,uint256)": "2522d7ba",
              "getPriorUserStakeByDate(address,uint256,uint256)": "cf7b684a",
              "getPriorVotes(address,uint256,uint256)": "836eebee",
              "getPriorWeightedStake(address,uint256,uint256)": "37e6b1c1",
              "getStakes(address)": "7ba6f458",
              "getWithdrawAmounts(uint96,uint256)": "96a590c1",
              "governanceWithdraw(uint96,uint256,address)": "800b64ca",
              "governanceWithdrawVesting(address,address)": "3827fca5",
              "isOwner()": "8f32d59b",
              "kickoffTS()": "00073f99",
              "migrateToNewStakingContract()": "5419675f",
              "newStakingContract()": "ae81dfe4",
              "nonces(address)": "7ecebe00",
              "numDelegateStakingCheckpoints(address,uint256)": "94c2ce58",
              "numTotalStakingCheckpoints(uint256)": "9436e7d4",
              "numUserStakingCheckpoints(address,uint256)": "db27ec18",
              "owner()": "8da5cb5b",
              "receiveApproval(address,uint256,address,bytes)": "8f4ffcb1",
              "removeAdmin(address)": "1785f53c",
              "setFeeSharing(address)": "626ee2d9",
              "setNewStakingContract(address)": "9a377b82",
              "setVestingRegistry(address)": "450b0601",
              "setWeightScaling(uint96)": "b8a98732",
              "stake(uint96,uint256,address,address)": "25629ec0",
              "stakeWithApproval(address,uint96,uint256,address,address)": "0c09ddfd",
              "stakesBySchedule(uint256,uint256,uint256,uint256,address,address)": "4b2fea1e",
              "timestampToLockDate(uint256)": "72ec9795",
              "totalStakingCheckpoints(uint256,uint32)": "dfb267c2",
              "transferOwnership(address)": "f2fde38b",
              "unlockAllTokens()": "5e0be607",
              "userStakingCheckpoints(address,uint256,uint32)": "68cefccc",
              "vestingCodeHashes(bytes32)": "07392cc0",
              "vestingRegistryLogic()": "104932cf",
              "vestingWhitelist(address)": "adae9002",
              "weightScaling()": "bf626ec1",
              "weightedStakeByDate(address,uint256,uint256,uint256)": "8dae1b16",
              "withdraw(uint96,uint256,address)": "dab6ca44"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "balanceOf(address)": {
                "notice": "Get the number of staked tokens held by the user account."
              },
              "computeWeightByDate(uint256,uint256)": {
                "notice": "Compute the weight for a specific date."
              },
              "delegate(address,uint256)": {
                "notice": "Delegate votes from `msg.sender` which are locked until lockDate to `delegatee`."
              },
              "delegateBySig(address,uint256,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Delegates votes from signatory to a delegatee account. Voting with EIP-712 Signatures.\t * Voting power can be delegated to any address, and then can be used to vote on proposals. A key benefit to users of by-signature functionality is that they can create a signed vote transaction for free, and have a trusted third-party spend rBTC(or ETH) on gas fees and write it to the blockchain for them.\t * The third party in this scenario, submitting the SOV-holder’s signed transaction holds a voting power that is for only a single proposal. The signatory still holds the power to vote on their own behalf in the proposal if the third party has not yet published the signed transaction that was given to them."
              },
              "extendStakingDuration(uint256,uint256)": {
                "notice": "Extend the staking duration until the specified date."
              },
              "getCurrentStakedUntil(uint256)": {
                "notice": "Get the current number of tokens staked for a day."
              },
              "getCurrentVotes(address)": {
                "notice": "Get the current votes balance for a user account."
              },
              "getPriorStakeByDateForDelegatee(address,uint256,uint256)": {
                "notice": "Determine the prior number of stake for an account as of a block number."
              },
              "getPriorTotalStakesForDate(uint256,uint256)": {
                "notice": "Determine the prior number of stake for an unlocking date as of a block number."
              },
              "getPriorTotalVotingPower(uint32,uint256)": {
                "notice": "Compute the total voting power at a given time."
              },
              "getPriorUserStakeByDate(address,uint256,uint256)": {
                "notice": "Determine the prior number of stake for an account until a certain lock date as of a block number."
              },
              "getPriorVotes(address,uint256,uint256)": {
                "notice": "Determine the prior number of votes for a delegatee as of a block number. Iterate through checkpoints adding up voting power."
              },
              "getPriorWeightedStake(address,uint256,uint256)": {
                "notice": "Determine the prior weighted stake for an account as of a block number. Iterate through checkpoints adding up voting power."
              },
              "getStakes(address)": {
                "notice": "Get list of stakes for a user account."
              },
              "getWithdrawAmounts(uint96,uint256)": {
                "notice": "Get available and punished amount for withdrawing."
              },
              "governanceWithdraw(uint96,uint256,address)": {
                "notice": "Withdraw the given amount of tokens."
              },
              "governanceWithdrawVesting(address,address)": {
                "notice": "Withdraw tokens for vesting contract."
              },
              "migrateToNewStakingContract()": {
                "notice": "Allow a staker to migrate his positions to the new staking contract."
              },
              "receiveApproval(address,uint256,address,bytes)": {
                "notice": "Receives approval from SOV token."
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "setFeeSharing(address)": {
                "notice": "Allow the owner to set a fee sharing proxy contract. We need it for unstaking with slashing."
              },
              "setNewStakingContract(address)": {
                "notice": "Allow the owner to set a new staking contract. As a consequence it allows the stakers to migrate their positions to the new contract."
              },
              "setVestingRegistry(address)": {
                "notice": "sets vesting registry"
              },
              "setWeightScaling(uint96)": {
                "notice": "Allow the owner to set weight scaling. We need it for unstaking with slashing."
              },
              "stake(uint96,uint256,address,address)": {
                "notice": "Stake the given amount for the given duration of time."
              },
              "stakeWithApproval(address,uint96,uint256,address,address)": {
                "notice": "Stake the given amount for the given duration of time."
              },
              "stakesBySchedule(uint256,uint256,uint256,uint256,address,address)": {
                "notice": "Stake tokens according to the vesting schedule."
              },
              "timestampToLockDate(uint256)": {
                "notice": "Unstaking is possible every 2 weeks only. This means, to calculate the key value for the staking checkpoints, we need to map the intended timestamp to the closest available date."
              },
              "unlockAllTokens()": {
                "notice": "Allow the owner to unlock all tokens in case the staking contract is going to be replaced Note: Not reversible on purpose. once unlocked, everything is unlocked. The owner should not be able to just quickly unlock to withdraw his own tokens and lock again."
              },
              "weightedStakeByDate(address,uint256,uint256,uint256)": {
                "notice": "Compute the voting power for a specific date. Power = stake * weight TODO: WeightedStaking::weightedStakeByDate should probably better be internal instead of a public function."
              },
              "withdraw(uint96,uint256,address)": {
                "notice": "Withdraw the given amount of tokens if they are unlocked."
              }
            },
            "notice": "Pay-in and pay-out function for staking and withdrawing tokens. Staking is delegated and vested: To gain voting power, SOV holders must stake their SOV for a given period of time. Aside from Bitocracy participation, there's a financially-rewarding reason for staking SOV. Tokenholders who stake their SOV receive staking rewards, a pro-rata share of the revenue that the platform generates from various transaction fees plus revenues from stakers who have a portion of their SOV slashed for early unstaking."
          }
        }
      },
      "contracts/governance/Staking/StakingProxy.sol": {
        "StakingProxy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "SOV",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldImplementation",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newImplementation",
                  "type": "address"
                }
              ],
              "name": "ImplementationChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DELEGATION_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DOMAIN_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_DURATION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_VOTING_WEIGHT",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOVToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "WEIGHT_FACTOR",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "allUnlocked",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "delegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "delegates",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharing",
              "outputs": [
                {
                  "internalType": "contract IFeeSharingProxy",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getImplementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getProxyOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kickoffTS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "newStakingContract",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numDelegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numTotalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numUserStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "name": "setImplementation",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "setProxyOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "totalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "userStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "vestingCodeHashes",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingRegistryLogic",
              "outputs": [
                {
                  "internalType": "contract VestingRegistryLogic",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "vestingWhitelist",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "weightScaling",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Staking contract should be upgradable, use UpgradableProxy. StakingStorage is deployed with the upgradable functionality by using this contract instead, that inherits from UpgradableProxy the possibility of being enhanced and re-deployed.",
            "methods": {
              "constructor": {
                "params": {
                  "SOV": "The address of the SOV token address."
                }
              },
              "getImplementation()": {
                "return": "Address of the implementation."
              },
              "getProxyOwner()": {
                "return": "Address of the owner."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setImplementation(address)": {
                "details": "Wrapper for _setImplementation that exposes the function as public for owner to be able to set a new version of the contract as current pointing implementation.",
                "params": {
                  "_implementation": "Address of the implementation."
                }
              },
              "setProxyOwner(address)": {
                "params": {
                  "_owner": "Address of the owner."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Staking Proxy contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c0604052600a608081905269534f565374616b696e6760b01b60a09081526200002d9160029190620001ea565b506005805460ff19169055600d80546001600160a01b0316600360a01b1790553480156200005a57600080fd5b506040516200115338038062001153833981810160405260208110156200008057600080fd5b50516000620000976001600160e01b036200010e16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350916000805160206200110e833981519152908290a350620000e4336001600160e01b036200011316565b600380546001600160a01b0319166001600160a01b0392909216919091179055426001556200028c565b335b90565b6001600160a01b0381166200015a5760405162461bcd60e51b81526004018080602001828103825260258152602001806200112e6025913960400191505060405180910390fd5b6001600160a01b038116620001776001600160e01b03620001c216565b6001600160a01b03166000805160206200110e83398151915260405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022d57805160ff19168380011785556200025d565b828001600101855582156200025d579182015b828111156200025d57825182559160200191906001019062000240565b506200026b9291506200026f565b5090565b6200011091905b808211156200026b576000815560010162000276565b610e72806200029c6000396000f3fe6080604052600436106101cc5760003560e01c806394c2ce58116100f7578063bf626ec111610095578063db27ec1811610064578063db27ec181461066d578063dfb267c2146106a6578063e7a324dc146106dc578063f2fde38b146106f1576101cc565b8063bf626ec1146105db578063caaee91c146105f0578063d27569e714610625578063d784d4261461063a576101cc565b8063aaf10f42116100d1578063aaf10f4214610569578063adae90021461057e578063ae81dfe4146105b1578063b1724b46146105c6576101cc565b806394c2ce58146105065780639929e8861461053f578063a58848c514610554576101cc565b806327dd1b001161016f5780637ecebe001161013e5780637ecebe00146104665780638da5cb5b146104995780638f32d59b146104ae5780639436e7d4146104c3576101cc565b806327dd1b0014610348578063429b62e51461038157806368cefccc146103b45780636b6fde0e14610421576101cc565b8063104932cf116101ab578063104932cf146102d857806317748adc146102ed5780631ab7710d1461031e57806320606b7014610333576101cc565b8062073f991461024257806303a18fa31461026957806307392cc01461029a575b60006101d6610724565b90506001600160a01b03811661021d5760405162461bcd60e51b8152600401808060200182810382526023815260200180610df66023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e81801561023e578184f35b8184fd5b34801561024e57600080fd5b5061025761074f565b60408051918252519081900360200190f35b34801561027557600080fd5b5061027e610755565b604080516001600160a01b039092168252519081900360200190f35b3480156102a657600080fd5b506102c4600480360360208110156102bd57600080fd5b5035610764565b604080519115158252519081900360200190f35b3480156102e457600080fd5b5061027e610779565b3480156102f957600080fd5b50610302610788565b604080516001600160601b039092168252519081900360200190f35b34801561032a57600080fd5b5061027e61078d565b34801561033f57600080fd5b506102576107b5565b34801561035457600080fd5b5061027e6004803603604081101561036b57600080fd5b506001600160a01b0381351690602001356107d0565b34801561038d57600080fd5b506102c4600480360360208110156103a457600080fd5b50356001600160a01b03166107f6565b3480156103c057600080fd5b506103f9600480360360608110156103d757600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff1661080b565b6040805163ffffffff90931683526001600160601b0390911660208301528051918290030190f35b34801561042d57600080fd5b506103f96004803603606081101561044457600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff16610847565b34801561047257600080fd5b506102576004803603602081101561048957600080fd5b50356001600160a01b0316610883565b3480156104a557600080fd5b5061027e610895565b3480156104ba57600080fd5b506102c46108a4565b3480156104cf57600080fd5b506104ed600480360360208110156104e657600080fd5b50356108c8565b6040805163ffffffff9092168252519081900360200190f35b34801561051257600080fd5b506104ed6004803603604081101561052957600080fd5b506001600160a01b0381351690602001356108e0565b34801561054b57600080fd5b506102c4610903565b34801561056057600080fd5b5061027e61090c565b34801561057557600080fd5b5061027e610724565b34801561058a57600080fd5b506102c4600480360360208110156105a157600080fd5b50356001600160a01b031661091b565b3480156105bd57600080fd5b5061027e610930565b3480156105d257600080fd5b50610257610944565b3480156105e757600080fd5b5061030261094c565b3480156105fc57600080fd5b506106236004803603602081101561061357600080fd5b50356001600160a01b0316610962565b005b34801561063157600080fd5b506103026109d3565b34801561064657600080fd5b506106236004803603602081101561065d57600080fd5b50356001600160a01b03166109d8565b34801561067957600080fd5b506104ed6004803603604081101561069057600080fd5b506001600160a01b038135169060200135610a46565b3480156106b257600080fd5b506103f9600480360360408110156106c957600080fd5b508035906020013563ffffffff16610a69565b3480156106e857600080fd5b50610257610a9f565b3480156106fd57600080fd5b506106236004803603602081101561071457600080fd5b50356001600160a01b0316610aba565b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b60015481565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b6011546001600160a01b031681565b600981565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b604051806043610d6882396043019050604051809103902081565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b600f6020526000908152604090205460ff1681565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600c6020526000908152604090205481565b6000546001600160a01b031690565b600080546001600160a01b03166108b9610b0b565b6001600160a01b031614905090565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b60055460ff1681565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b600d54600160a01b90046001600160601b031681565b61096a61078d565b6001600160a01b0316336001600160a01b0316146109c7576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b6109d081610b0f565b50565b600a81565b6109e061078d565b6001600160a01b0316336001600160a01b031614610a3d576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b6109d081610bc2565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160601b031682565b60405180604b610dab8239604b019050604051809103902081565b610ac26108a4565b610b02576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6109d081610c78565b3390565b6001600160a01b038116610b545760405162461bcd60e51b8152600401808060200182810382526025815260200180610e196025913960400191505060405180910390fd5b806001600160a01b0316610b6661078d565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b6001600160a01b038116610c075760405162461bcd60e51b8152600401808060200182810382526029815260200180610d3f6029913960400191505060405180910390fd5b806001600160a01b0316610c19610724565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a3604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b8152905190819003601201902055565b6001600160a01b038116610cbd5760405162461bcd60e51b8152600401808060200182810382526026815260200180610d196026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737350726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c69642061646472657373454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e74726163742944656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e74323536206578706972792950726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e6450726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373a265627a7a72315820e833a5c2625147691199c0c1e76bb3a8522a2ea1c6082c18e848521a5951994564736f6c634300051100328be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e050726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH10 0x534F565374616B696E67 PUSH1 0xB0 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH3 0x2D SWAP2 PUSH1 0x2 SWAP2 SWAP1 PUSH3 0x1EA JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3 PUSH1 0xA0 SHL OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1153 CODESIZE SUB DUP1 PUSH3 0x1153 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 PUSH3 0x97 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x10E AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x110E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0xE4 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x113 AND JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE TIMESTAMP PUSH1 0x1 SSTORE PUSH3 0x28C JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x15A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x112E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x177 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x1C2 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x110E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x22D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x25D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x25D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x25D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x240 JUMP JUMPDEST POP PUSH3 0x26B SWAP3 SWAP2 POP PUSH3 0x26F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x110 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x26B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x276 JUMP JUMPDEST PUSH2 0xE72 DUP1 PUSH3 0x29C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x94C2CE58 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xBF626EC1 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xDB27EC18 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0x66D JUMPI DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0x6A6 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x6DC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x6F1 JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0x5DB JUMPI DUP1 PUSH4 0xCAAEE91C EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0x625 JUMPI DUP1 PUSH4 0xD784D426 EQ PUSH2 0x63A JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH4 0xAAF10F42 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x569 JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0x5B1 JUMPI DUP1 PUSH4 0xB1724B46 EQ PUSH2 0x5C6 JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0x506 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0x53F JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0x554 JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH4 0x27DD1B00 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x499 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x4AE JUMPI DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0x4C3 JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x381 JUMPI DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x3B4 JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x421 JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH4 0x104932CF GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0x17748ADC EQ PUSH2 0x2ED JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x333 JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x269 JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x29A JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x1D6 PUSH2 0x724 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x21D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDF6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x23E JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x257 PUSH2 0x74F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x755 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x764 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x779 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH2 0x788 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x78D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x257 PUSH2 0x7B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x80B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x847 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x883 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x895 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH2 0x8A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH2 0x903 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x90C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x724 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x91B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x930 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x257 PUSH2 0x944 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH2 0x94C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x623 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x962 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH2 0x9D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x623 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x65D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0xA69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x257 PUSH2 0xA9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x623 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xABA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x43 PUSH2 0xD68 DUP3 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8B9 PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x96A PUSH2 0x78D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9D0 DUP2 PUSH2 0xB0F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH2 0x9E0 PUSH2 0x78D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xA3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9D0 DUP2 PUSH2 0xBC2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x4B PUSH2 0xDAB DUP3 CODECOPY PUSH1 0x4B ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH2 0xAC2 PUSH2 0x8A4 JUMP JUMPDEST PUSH2 0xB02 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9D0 DUP2 PUSH2 0xC78 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB54 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE19 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB66 PUSH2 0x78D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD3F PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC19 PUSH2 0x724 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xCBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD19 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737350726F78793A3A736574496D706C656D PUSH6 0x6E746174696F PUSH15 0x3A20696E76616C6964206164647265 PUSH20 0x73454950373132446F6D61696E28737472696E67 KECCAK256 PUSH15 0x616D652C75696E7432353620636861 PUSH10 0x6E49642C616464726573 PUSH20 0x20766572696679696E67436F6E74726163742944 PUSH6 0x6C6567617469 PUSH16 0x6E28616464726573732064656C656761 PUSH21 0x65652C75696E74323536206C6F636B446174652C75 PUSH10 0x6E74323536206E6F6E63 PUSH6 0x2C75696E7432 CALLDATALOAD CALLDATASIZE KECCAK256 PUSH6 0x787069727929 POP PUSH19 0x6F78793A3A28293A20696D706C656D656E7461 PUSH21 0x696F6E206E6F7420666F756E6450726F78793A3A73 PUSH6 0x7450726F7879 0x4F PUSH24 0x6E65723A20696E76616C69642061646472657373A265627A PUSH27 0x72315820E833A5C2625147691199C0C1E76BB3A8522A2EA1C6082C XOR 0xE8 0x48 MSTORE BYTE MSIZE MLOAD SWAP10 GASLIMIT PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN DUP12 0xE0 SMOD SWAP13 MSTORE8 AND MSIZE EQ SGT DIFFICULTY 0xCD 0x1F 0xD0 LOG4 CALLCODE DUP5 NOT 0x49 PUSH32 0x9722A3DAAFE3B4186F6B6457E050726F78793A3A73657450726F78794F776E65 PUSH19 0x3A20696E76616C696420616464726573730000 ",
              "sourceMap": "1973:26:59:-;400:264:58;1973:26:59;;400:264:58;1973:26:59;;;-1:-1:-1;;;1973:26:59;;;;;;;;;;:::i;:::-;-1:-1:-1;2262:31:59;;;-1:-1:-1;;2262:31:59;;;5091:52;;;-1:-1:-1;;;;;5091:52:59;-1:-1:-1;;;5091:52:59;;;569:93:58;5:2:-1;;;;30:1;27;20:12;5:2;569:93:58;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;569:93:58;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;;;;;;;;;;740:43:142;713:6;;740:43;-1:-1:-1;1653:26:147;1668:10;-1:-1:-1;;;;;1653:14:147;:26;:::i;:::-;605:8:58;:22;;-1:-1:-1;;;;;;605:22:58;-1:-1:-1;;;;;605:22:58;;;;;;;;;;643:15;-1:-1:-1;631:27:58;400:264;;780:87:137;853:10;780:87;;:::o;2644:249:147:-;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2776:45:147;;2797:15;-1:-1:-1;;;;;2797:13:147;:15;:::i;:::-;-1:-1:-1;;;;;2776:45:147;-1:-1:-1;;;;;;;;;;;2776:45:147;;;;;;;;;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;2867:19;2862:28::o;2983:134::-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o;400:264:58:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;400:264:58;;;-1:-1:-1;400:264:58;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106101cc5760003560e01c806394c2ce58116100f7578063bf626ec111610095578063db27ec1811610064578063db27ec181461066d578063dfb267c2146106a6578063e7a324dc146106dc578063f2fde38b146106f1576101cc565b8063bf626ec1146105db578063caaee91c146105f0578063d27569e714610625578063d784d4261461063a576101cc565b8063aaf10f42116100d1578063aaf10f4214610569578063adae90021461057e578063ae81dfe4146105b1578063b1724b46146105c6576101cc565b806394c2ce58146105065780639929e8861461053f578063a58848c514610554576101cc565b806327dd1b001161016f5780637ecebe001161013e5780637ecebe00146104665780638da5cb5b146104995780638f32d59b146104ae5780639436e7d4146104c3576101cc565b806327dd1b0014610348578063429b62e51461038157806368cefccc146103b45780636b6fde0e14610421576101cc565b8063104932cf116101ab578063104932cf146102d857806317748adc146102ed5780631ab7710d1461031e57806320606b7014610333576101cc565b8062073f991461024257806303a18fa31461026957806307392cc01461029a575b60006101d6610724565b90506001600160a01b03811661021d5760405162461bcd60e51b8152600401808060200182810382526023815260200180610df66023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e81801561023e578184f35b8184fd5b34801561024e57600080fd5b5061025761074f565b60408051918252519081900360200190f35b34801561027557600080fd5b5061027e610755565b604080516001600160a01b039092168252519081900360200190f35b3480156102a657600080fd5b506102c4600480360360208110156102bd57600080fd5b5035610764565b604080519115158252519081900360200190f35b3480156102e457600080fd5b5061027e610779565b3480156102f957600080fd5b50610302610788565b604080516001600160601b039092168252519081900360200190f35b34801561032a57600080fd5b5061027e61078d565b34801561033f57600080fd5b506102576107b5565b34801561035457600080fd5b5061027e6004803603604081101561036b57600080fd5b506001600160a01b0381351690602001356107d0565b34801561038d57600080fd5b506102c4600480360360208110156103a457600080fd5b50356001600160a01b03166107f6565b3480156103c057600080fd5b506103f9600480360360608110156103d757600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff1661080b565b6040805163ffffffff90931683526001600160601b0390911660208301528051918290030190f35b34801561042d57600080fd5b506103f96004803603606081101561044457600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff16610847565b34801561047257600080fd5b506102576004803603602081101561048957600080fd5b50356001600160a01b0316610883565b3480156104a557600080fd5b5061027e610895565b3480156104ba57600080fd5b506102c46108a4565b3480156104cf57600080fd5b506104ed600480360360208110156104e657600080fd5b50356108c8565b6040805163ffffffff9092168252519081900360200190f35b34801561051257600080fd5b506104ed6004803603604081101561052957600080fd5b506001600160a01b0381351690602001356108e0565b34801561054b57600080fd5b506102c4610903565b34801561056057600080fd5b5061027e61090c565b34801561057557600080fd5b5061027e610724565b34801561058a57600080fd5b506102c4600480360360208110156105a157600080fd5b50356001600160a01b031661091b565b3480156105bd57600080fd5b5061027e610930565b3480156105d257600080fd5b50610257610944565b3480156105e757600080fd5b5061030261094c565b3480156105fc57600080fd5b506106236004803603602081101561061357600080fd5b50356001600160a01b0316610962565b005b34801561063157600080fd5b506103026109d3565b34801561064657600080fd5b506106236004803603602081101561065d57600080fd5b50356001600160a01b03166109d8565b34801561067957600080fd5b506104ed6004803603604081101561069057600080fd5b506001600160a01b038135169060200135610a46565b3480156106b257600080fd5b506103f9600480360360408110156106c957600080fd5b508035906020013563ffffffff16610a69565b3480156106e857600080fd5b50610257610a9f565b3480156106fd57600080fd5b506106236004803603602081101561071457600080fd5b50356001600160a01b0316610aba565b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b60015481565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b6011546001600160a01b031681565b600981565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b604051806043610d6882396043019050604051809103902081565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b600f6020526000908152604090205460ff1681565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600c6020526000908152604090205481565b6000546001600160a01b031690565b600080546001600160a01b03166108b9610b0b565b6001600160a01b031614905090565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b60055460ff1681565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b600d54600160a01b90046001600160601b031681565b61096a61078d565b6001600160a01b0316336001600160a01b0316146109c7576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b6109d081610b0f565b50565b600a81565b6109e061078d565b6001600160a01b0316336001600160a01b031614610a3d576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b6109d081610bc2565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160601b031682565b60405180604b610dab8239604b019050604051809103902081565b610ac26108a4565b610b02576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6109d081610c78565b3390565b6001600160a01b038116610b545760405162461bcd60e51b8152600401808060200182810382526025815260200180610e196025913960400191505060405180910390fd5b806001600160a01b0316610b6661078d565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b6001600160a01b038116610c075760405162461bcd60e51b8152600401808060200182810382526029815260200180610d3f6029913960400191505060405180910390fd5b806001600160a01b0316610c19610724565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a3604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b8152905190819003601201902055565b6001600160a01b038116610cbd5760405162461bcd60e51b8152600401808060200182810382526026815260200180610d196026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737350726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c69642061646472657373454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e74726163742944656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e74323536206578706972792950726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e6450726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373a265627a7a72315820e833a5c2625147691199c0c1e76bb3a8522a2ea1c6082c18e848521a5951994564736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x94C2CE58 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xBF626EC1 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xDB27EC18 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0x66D JUMPI DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0x6A6 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x6DC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x6F1 JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0x5DB JUMPI DUP1 PUSH4 0xCAAEE91C EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0x625 JUMPI DUP1 PUSH4 0xD784D426 EQ PUSH2 0x63A JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH4 0xAAF10F42 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x569 JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0x5B1 JUMPI DUP1 PUSH4 0xB1724B46 EQ PUSH2 0x5C6 JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0x506 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0x53F JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0x554 JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH4 0x27DD1B00 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x499 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x4AE JUMPI DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0x4C3 JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x381 JUMPI DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x3B4 JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x421 JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH4 0x104932CF GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0x17748ADC EQ PUSH2 0x2ED JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x31E JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x333 JUMPI PUSH2 0x1CC JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x269 JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x29A JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x1D6 PUSH2 0x724 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x21D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDF6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x23E JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x257 PUSH2 0x74F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x755 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x764 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x779 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH2 0x788 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x78D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x257 PUSH2 0x7B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x80B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x847 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x883 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x895 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH2 0x8A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH2 0x903 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x90C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x724 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x91B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27E PUSH2 0x930 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x257 PUSH2 0x944 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH2 0x94C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x623 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x962 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH2 0x9D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x623 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x65D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0xA69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x257 PUSH2 0xA9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x623 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xABA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x43 PUSH2 0xD68 DUP3 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8B9 PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x96A PUSH2 0x78D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9D0 DUP2 PUSH2 0xB0F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH2 0x9E0 PUSH2 0x78D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xA3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9D0 DUP2 PUSH2 0xBC2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x4B PUSH2 0xDAB DUP3 CODECOPY PUSH1 0x4B ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH2 0xAC2 PUSH2 0x8A4 JUMP JUMPDEST PUSH2 0xB02 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9D0 DUP2 PUSH2 0xC78 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB54 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE19 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB66 PUSH2 0x78D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD3F PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC19 PUSH2 0x724 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xCBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD19 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737350726F78793A3A736574496D706C656D PUSH6 0x6E746174696F PUSH15 0x3A20696E76616C6964206164647265 PUSH20 0x73454950373132446F6D61696E28737472696E67 KECCAK256 PUSH15 0x616D652C75696E7432353620636861 PUSH10 0x6E49642C616464726573 PUSH20 0x20766572696679696E67436F6E74726163742944 PUSH6 0x6C6567617469 PUSH16 0x6E28616464726573732064656C656761 PUSH21 0x65652C75696E74323536206C6F636B446174652C75 PUSH10 0x6E74323536206E6F6E63 PUSH6 0x2C75696E7432 CALLDATALOAD CALLDATASIZE KECCAK256 PUSH6 0x787069727929 POP PUSH19 0x6F78793A3A28293A20696D706C656D656E7461 PUSH21 0x696F6E206E6F7420666F756E6450726F78793A3A73 PUSH6 0x7450726F7879 0x4F PUSH24 0x6E65723A20696E76616C69642061646472657373A265627A PUSH27 0x72315820E833A5C2625147691199C0C1E76BB3A8522A2EA1C6082C XOR 0xE8 0x48 MSTORE BYTE MSIZE MLOAD SWAP10 GASLIMIT PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "400:264:58:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3338:22:147;3363:19;:17;:19::i;:::-;3338:44;-1:-1:-1;;;;;;3394:28:147;;3386:76;;;;-1:-1:-1;;;3386:76:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3502:4;3496:11;3536:12;3533:1;3524:7;3511:38;3627:1;3624;3610:12;3601:7;3585:14;3580:3;3567:62;3645:14;3690:4;3687:1;3678:7;3663:32;3707:6;3718:41;;;;3795:4;3786:7;3779:21;3718:41;3748:4;3739:7;3732:21;1945:24:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1945:24:59;;;:::i;:::-;;;;;;;;;;;;;;;;4986:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4986:34:59;;;:::i;:::-;;;;-1:-1:-1;;;;;4986:34:59;;;;;;;;;;;;;;5691:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5691:49:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5691:49:59;;:::i;:::-;;;;;;;;;;;;;;;;;;5786:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5786:48:59;;;:::i;1160:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1160:44:59;;;:::i;:::-;;;;-1:-1:-1;;;;;1160:44:59;;;;;;;;;;;;;;2983:134:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2983:134:147;;;:::i;2358:122:59:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2358:122:59;;;:::i;2115:64::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2115:64:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2115:64:59;;;;;;;;:::i;5570:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5570:38:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5570:38:59;-1:-1:-1;;;;;5570:38:59;;:::i;4346:99::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4346:99:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4346:99:59;;-1:-1:-1;;;;;4346:99:59;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;4346:99:59;;;;;;;;;;;;;;;;3804:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3804:103:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3804:103:59;;-1:-1:-1;;;;;3804:103:59;;;;;;;;;;;;;:::i;4774:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4774:41:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4774:41:59;-1:-1:-1;;;;;4774:41:59;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;1134:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;3472:60:59:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3472:60:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3472:60:59;;:::i;:::-;;;;;;;;;;;;;;;;;;;4062:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4062:83:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4062:83:59;;;;;;;;:::i;2262:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:31:59;;;:::i;2040:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2040:22:59;;;:::i;2386:165:147:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2386:165:147;;;:::i;5310:48:59:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5310:48:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5310:48:59;-1:-1:-1;;;;;5310:48:59;;:::i;2805:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2805:33:59;;;:::i;1509:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1509:48:59;;;:::i;5091:52::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5091:52:59;;;:::i;1404:91:148:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:91:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:91:148;-1:-1:-1;;;;;1404:91:148;;:::i;:::-;;1409:41:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1409:41:59;;;:::i;1194:117:148:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1194:117:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1194:117:148;-1:-1:-1;;;;;1194:117:148;;:::i;4587:79:59:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4587:79:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4587:79:59;;;;;;;;:::i;3264:80::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3264:80:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3264:80:59;;;;;;;;;:::i;2566:134::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2566:134:59;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1351:98:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;2386:165:147:-;1291:31;;;-1:-1:-1;;;1291:31:147;;;;;;;;;;;;2534:10;;2510:38::o;1945:24:59:-;;;;:::o;4986:34::-;;;-1:-1:-1;;;;;4986:34:59;;:::o;5691:49::-;;;;;;;;;;;;;;;:::o;5786:48::-;;;-1:-1:-1;;;;;5786:48:59;;:::o;1160:44::-;1203:1;1160:44;:::o;2983:134:147:-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o;2358:122:59:-;2400:80;;;;;;;;;;;;;;;;;;2358:122;:::o;2115:64::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2115:64:59;;:::o;5570:38::-;;;;;;;;;;;;;;;:::o;4346:99::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4346:99:59;;:::o;3804:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3804:103:59;;:::o;4774:41::-;;;;;;;;;;;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;3472:60:59:-;;;;;;;;;;;;;;;:::o;4062:83::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2262:31::-;;;;;;:::o;2040:22::-;;;-1:-1:-1;;;;;2040:22:59;;:::o;5310:48::-;;;;;;;;;;;;;;;:::o;2805:33::-;;;;;;-1:-1:-1;;;;;2805:33:59;;:::o;1509:48::-;1548:9;1509:48;:::o;5091:52::-;;;-1:-1:-1;;;5091:52:59;;-1:-1:-1;;;;;5091:52:59;;:::o;1404:91:148:-;1801:15:147;:13;:15::i;:::-;-1:-1:-1;;;;;1787:29:147;:10;-1:-1:-1;;;;;1787:29:147;;1779:63;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;;;;1469:22:148;1484:6;1469:14;:22::i;:::-;1404:91;:::o;1409:41:59:-;1448:2;1409:41;:::o;1194:117:148:-;1801:15:147;:13;:15::i;:::-;-1:-1:-1;;;;;1787:29:147;:10;-1:-1:-1;;;;;1787:29:147;;1779:63;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;;;;1272:35:148;1291:15;1272:18;:35::i;4587:79:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3264:80::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3264:80:59;;:::o;2566:134::-;2612:88;;;;;;;;;;;;;;;;;;2566:134;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;780:87:137:-;853:10;780:87;:::o;2644:249:147:-;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2814:6;-1:-1:-1;;;;;2776:45:147;2797:15;:13;:15::i;:::-;-1:-1:-1;;;;;2776:45:147;;;;;;;;;;;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;2867:19;2862:28::o;1971:307::-;-1:-1:-1;;;;;2045:29:147;;2037:83;;;;-1:-1:-1;;;2037:83:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:15;-1:-1:-1;;;;;2129:59:147;2151:19;:17;:19::i;:::-;-1:-1:-1;;;;;2129:59:147;;;;;;;;;;;1291:31;;;-1:-1:-1;;;1291:31:147;;;;;;;;;;;;2243:28;2238:37::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "DELEGATION_TYPEHASH()": "e7a324dc",
              "DOMAIN_TYPEHASH()": "20606b70",
              "MAX_DURATION()": "b1724b46",
              "MAX_VOTING_WEIGHT()": "17748adc",
              "SOVToken()": "a58848c5",
              "WEIGHT_FACTOR()": "d27569e7",
              "admins(address)": "429b62e5",
              "allUnlocked()": "9929e886",
              "delegateStakingCheckpoints(address,uint256,uint32)": "6b6fde0e",
              "delegates(address,uint256)": "27dd1b00",
              "feeSharing()": "03a18fa3",
              "getImplementation()": "aaf10f42",
              "getProxyOwner()": "1ab7710d",
              "isOwner()": "8f32d59b",
              "kickoffTS()": "00073f99",
              "newStakingContract()": "ae81dfe4",
              "nonces(address)": "7ecebe00",
              "numDelegateStakingCheckpoints(address,uint256)": "94c2ce58",
              "numTotalStakingCheckpoints(uint256)": "9436e7d4",
              "numUserStakingCheckpoints(address,uint256)": "db27ec18",
              "owner()": "8da5cb5b",
              "setImplementation(address)": "d784d426",
              "setProxyOwner(address)": "caaee91c",
              "totalStakingCheckpoints(uint256,uint32)": "dfb267c2",
              "transferOwnership(address)": "f2fde38b",
              "userStakingCheckpoints(address,uint256,uint32)": "68cefccc",
              "vestingCodeHashes(bytes32)": "07392cc0",
              "vestingRegistryLogic()": "104932cf",
              "vestingWhitelist(address)": "adae9002",
              "weightScaling()": "bf626ec1"
            }
          },
          "userdoc": {
            "methods": {
              "constructor": "Construct a new staking contract.",
              "getImplementation()": {
                "notice": "Return address of the implementation."
              },
              "getProxyOwner()": {
                "notice": "Return address of the owner."
              },
              "setImplementation(address)": {
                "notice": "Set address of the implementation."
              },
              "setProxyOwner(address)": {
                "notice": "Set address of the owner."
              }
            }
          }
        }
      },
      "contracts/governance/Staking/StakingStorage.sol": {
        "StakingStorage": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DELEGATION_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DOMAIN_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_DURATION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_VOTING_WEIGHT",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOVToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "WEIGHT_FACTOR",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "allUnlocked",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "delegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "delegates",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharing",
              "outputs": [
                {
                  "internalType": "contract IFeeSharingProxy",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kickoffTS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "newStakingContract",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numDelegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numTotalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numUserStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "totalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "userStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "vestingCodeHashes",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingRegistryLogic",
              "outputs": [
                {
                  "internalType": "contract VestingRegistryLogic",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "vestingWhitelist",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "weightScaling",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Staking Storage contact."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c0604052600a608081905269534f565374616b696e6760b01b60a090815261002b91600291906100a9565b506005805460ff19169055600d80546001600160a01b0316600360a01b17905560006100556100a4565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610141565b335b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100ea57805160ff1916838001178555610117565b82800160010185558215610117579182015b828111156101175782518255916020019190600101906100fc565b50610123929150610127565b5090565b6100a691905b80821115610123576000815560010161012d565b610a6a806101506000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80639436e7d4116100de578063b1724b4611610097578063db27ec1811610071578063db27ec181461030a578063dfb267c21461031d578063e7a324dc14610330578063f2fde38b146103385761018d565b8063b1724b46146102f2578063bf626ec1146102fa578063d27569e7146103025761018d565b80639436e7d41461029457806394c2ce58146102b45780639929e886146102c7578063a58848c5146102cf578063adae9002146102d7578063ae81dfe4146102ea5761018d565b806327dd1b001161014b5780636b6fde0e116101255780636b6fde0e1461025e5780637ecebe00146102715780638da5cb5b146102845780638f32d59b1461028c5761018d565b806327dd1b001461020a578063429b62e51461022a57806368cefccc1461023d5761018d565b8062073f991461019257806303a18fa3146101b057806307392cc0146101c5578063104932cf146101e557806317748adc146101ed57806320606b7014610202575b600080fd5b61019a61034d565b6040516101a7919061093a565b60405180910390f35b6101b8610353565b6040516101a79190610948565b6101d86101d3366004610730565b610362565b6040516101a7919061092c565b6101b8610377565b6101f5610386565b6040516101a791906109a6565b61019a61038b565b61021d6102183660046106a9565b6103a2565b6040516101a7919061091e565b6101d8610238366004610683565b6103c8565b61025061024b3660046106e3565b6103dd565b6040516101a7929190610984565b61025061026c3660046106e3565b610419565b61019a61027f366004610683565b610455565b61021d610467565b6101d8610476565b6102a76102a2366004610730565b61049a565b6040516101a79190610976565b6102a76102c23660046106a9565b6104b2565b6101d86104d5565b6101b86104de565b6101d86102e5366004610683565b6104ed565b61021d610502565b61019a610516565b6101f561051e565b6101f5610534565b6102a76103183660046106a9565b610539565b61025061032b36600461074e565b61055c565b61019a610592565b61034b610346366004610683565b61059e565b005b60015481565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b6011546001600160a01b031681565b600981565b60405161039790610908565b604051809103902081565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b600f6020526000908152604090205460ff1681565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600c6020526000908152604090205481565b6000546001600160a01b031690565b600080546001600160a01b031661048b6105d7565b6001600160a01b031614905090565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b60055460ff1681565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b600d54600160a01b90046001600160601b031681565b600a81565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160601b031682565b60405161039790610913565b6105a6610476565b6105cb5760405162461bcd60e51b81526004016105c290610966565b60405180910390fd5b6105d4816105db565b50565b3390565b6001600160a01b0381166106015760405162461bcd60e51b81526004016105c290610956565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b803561066781610a01565b92915050565b803561066781610a15565b803561066781610a1e565b60006020828403121561069557600080fd5b60006106a1848461065c565b949350505050565b600080604083850312156106bc57600080fd5b60006106c8858561065c565b92505060206106d98582860161066d565b9150509250929050565b6000806000606084860312156106f857600080fd5b6000610704868661065c565b93505060206107158682870161066d565b925050604061072686828701610678565b9150509250925092565b60006020828403121561074257600080fd5b60006106a1848461066d565b6000806040838503121561076157600080fd5b600061076d858561066d565b92505060206106d985828601610678565b610787816109c2565b82525050565b610787816109cd565b610787816109d2565b610787816109f6565b60006107b56026836109b4565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006107fd6043836109bd565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000610868600c836109b4565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000610890604b836109bd565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e7460208201526a323536206578706972792960a81b6040820152604b0192915050565b610787816109e1565b610787816109ea565b6000610667826107f0565b600061066782610883565b60208101610667828461077e565b60208101610667828461078d565b602081016106678284610796565b60208101610667828461079f565b60208082528101610667816107a8565b602080825281016106678161085b565b6020810161066782846108f6565b6040810161099282856108f6565b61099f60208301846108ff565b9392505050565b6020810161066782846108ff565b90815260200190565b919050565b6000610667826109d5565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b6001600160601b031690565b6000610667826109c2565b610a0a816109c2565b81146105d457600080fd5b610a0a816109d2565b610a0a816109e156fea365627a7a723158203855d80d95fcbef73227e1f2453f89135b51a36425d301244d05922ac9f4d1f36c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH10 0x534F565374616B696E67 PUSH1 0xB0 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH2 0x2B SWAP2 PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xA9 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH1 0x0 PUSH2 0x55 PUSH2 0xA4 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x141 JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xEA JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x117 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x117 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x117 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xFC JUMP JUMPDEST POP PUSH2 0x123 SWAP3 SWAP2 POP PUSH2 0x127 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0xA6 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x123 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x12D JUMP JUMPDEST PUSH2 0xA6A DUP1 PUSH2 0x150 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9436E7D4 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xB1724B46 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDB27EC18 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x338 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0xB1724B46 EQ PUSH2 0x2F2 JUMPI DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0x302 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0x2CF JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0x2EA JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x27DD1B00 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x6B6FDE0E GT PUSH2 0x125 JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x28C JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x23D JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x17748ADC EQ PUSH2 0x1ED JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x202 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x93A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B8 PUSH2 0x353 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x362 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x92C JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x386 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x9A6 JUMP JUMPDEST PUSH2 0x19A PUSH2 0x38B JUMP JUMPDEST PUSH2 0x21D PUSH2 0x218 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x3A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x91E JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x238 CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x3C8 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x24B CALLDATASIZE PUSH1 0x4 PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP3 SWAP2 SWAP1 PUSH2 0x984 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x26C CALLDATASIZE PUSH1 0x4 PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x419 JUMP JUMPDEST PUSH2 0x19A PUSH2 0x27F CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST PUSH2 0x21D PUSH2 0x467 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x476 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x2A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x49A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x4B2 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x4D5 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x4DE JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x2E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x21D PUSH2 0x502 JUMP JUMPDEST PUSH2 0x19A PUSH2 0x516 JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x51E JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x534 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0x74E JUMP JUMPDEST PUSH2 0x55C JUMP JUMPDEST PUSH2 0x19A PUSH2 0x592 JUMP JUMPDEST PUSH2 0x34B PUSH2 0x346 CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x59E JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x397 SWAP1 PUSH2 0x908 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x48B PUSH2 0x5D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x397 SWAP1 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x5A6 PUSH2 0x476 JUMP JUMPDEST PUSH2 0x5CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5C2 SWAP1 PUSH2 0x966 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5D4 DUP2 PUSH2 0x5DB JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x601 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5C2 SWAP1 PUSH2 0x956 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x667 DUP2 PUSH2 0xA01 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x667 DUP2 PUSH2 0xA15 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x667 DUP2 PUSH2 0xA1E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A1 DUP5 DUP5 PUSH2 0x65C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6C8 DUP6 DUP6 PUSH2 0x65C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6D9 DUP6 DUP3 DUP7 ADD PUSH2 0x66D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x704 DUP7 DUP7 PUSH2 0x65C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x715 DUP7 DUP3 DUP8 ADD PUSH2 0x66D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x726 DUP7 DUP3 DUP8 ADD PUSH2 0x678 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A1 DUP5 DUP5 PUSH2 0x66D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x76D DUP6 DUP6 PUSH2 0x66D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6D9 DUP6 DUP3 DUP7 ADD PUSH2 0x678 JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9C2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9CD JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9D2 JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B5 PUSH1 0x26 DUP4 PUSH2 0x9B4 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7FD PUSH1 0x43 DUP4 PUSH2 0x9BD JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x868 PUSH1 0xC DUP4 PUSH2 0x9B4 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x890 PUSH1 0x4B DUP4 PUSH2 0x9BD JUMP JUMPDEST PUSH32 0x44656C65676174696F6E28616464726573732064656C6567617465652C75696E DUP2 MSTORE PUSH32 0x74323536206C6F636B446174652C75696E74323536206E6F6E63652C75696E74 PUSH1 0x20 DUP3 ADD MSTORE PUSH11 0x3235362065787069727929 PUSH1 0xA8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x4B ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9EA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x7F0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x883 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x77E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x78D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x796 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x79F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x667 DUP2 PUSH2 0x7A8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x667 DUP2 PUSH2 0x85B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x8F6 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x992 DUP3 DUP6 PUSH2 0x8F6 JUMP JUMPDEST PUSH2 0x99F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x8FF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x8FF JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x9D5 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x9C2 JUMP JUMPDEST PUSH2 0xA0A DUP2 PUSH2 0x9C2 JUMP JUMPDEST DUP2 EQ PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0A DUP2 PUSH2 0x9D2 JUMP JUMPDEST PUSH2 0xA0A DUP2 PUSH2 0x9E1 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 CODESIZE SSTORE 0xD8 0xD SWAP6 0xFC 0xBE 0xF7 ORIGIN 0x27 0xE1 CALLCODE GASLIMIT EXTCODEHASH DUP10 SGT JUMPDEST MLOAD LOG3 PUSH5 0x25D301244D SDIV SWAP3 0x2A 0xC9 DELEGATECALL 0xD1 RETURN PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "1973:26:59:-;941:4896;1973:26;;941:4896;1973:26;;;-1:-1:-1;;;1973:26:59;;;;;;;;;;:::i;:::-;-1:-1:-1;2262:31:59;;;-1:-1:-1;;2262:31:59;;;5091:52;;;-1:-1:-1;;;;;5091:52:59;-1:-1:-1;;;5091:52:59;;;-1:-1:-1;697:12:142;:10;:12::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;941:4896:59;;780:87:137;853:10;780:87;;:::o;941:4896:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;941:4896:59;;;-1:-1:-1;941:4896:59;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061018d5760003560e01c80639436e7d4116100de578063b1724b4611610097578063db27ec1811610071578063db27ec181461030a578063dfb267c21461031d578063e7a324dc14610330578063f2fde38b146103385761018d565b8063b1724b46146102f2578063bf626ec1146102fa578063d27569e7146103025761018d565b80639436e7d41461029457806394c2ce58146102b45780639929e886146102c7578063a58848c5146102cf578063adae9002146102d7578063ae81dfe4146102ea5761018d565b806327dd1b001161014b5780636b6fde0e116101255780636b6fde0e1461025e5780637ecebe00146102715780638da5cb5b146102845780638f32d59b1461028c5761018d565b806327dd1b001461020a578063429b62e51461022a57806368cefccc1461023d5761018d565b8062073f991461019257806303a18fa3146101b057806307392cc0146101c5578063104932cf146101e557806317748adc146101ed57806320606b7014610202575b600080fd5b61019a61034d565b6040516101a7919061093a565b60405180910390f35b6101b8610353565b6040516101a79190610948565b6101d86101d3366004610730565b610362565b6040516101a7919061092c565b6101b8610377565b6101f5610386565b6040516101a791906109a6565b61019a61038b565b61021d6102183660046106a9565b6103a2565b6040516101a7919061091e565b6101d8610238366004610683565b6103c8565b61025061024b3660046106e3565b6103dd565b6040516101a7929190610984565b61025061026c3660046106e3565b610419565b61019a61027f366004610683565b610455565b61021d610467565b6101d8610476565b6102a76102a2366004610730565b61049a565b6040516101a79190610976565b6102a76102c23660046106a9565b6104b2565b6101d86104d5565b6101b86104de565b6101d86102e5366004610683565b6104ed565b61021d610502565b61019a610516565b6101f561051e565b6101f5610534565b6102a76103183660046106a9565b610539565b61025061032b36600461074e565b61055c565b61019a610592565b61034b610346366004610683565b61059e565b005b60015481565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b6011546001600160a01b031681565b600981565b60405161039790610908565b604051809103902081565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b600f6020526000908152604090205460ff1681565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff81169064010000000090046001600160601b031682565b600c6020526000908152604090205481565b6000546001600160a01b031690565b600080546001600160a01b031661048b6105d7565b6001600160a01b031614905090565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b60055460ff1681565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b600d54600160a01b90046001600160601b031681565b600a81565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160601b031682565b60405161039790610913565b6105a6610476565b6105cb5760405162461bcd60e51b81526004016105c290610966565b60405180910390fd5b6105d4816105db565b50565b3390565b6001600160a01b0381166106015760405162461bcd60e51b81526004016105c290610956565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b803561066781610a01565b92915050565b803561066781610a15565b803561066781610a1e565b60006020828403121561069557600080fd5b60006106a1848461065c565b949350505050565b600080604083850312156106bc57600080fd5b60006106c8858561065c565b92505060206106d98582860161066d565b9150509250929050565b6000806000606084860312156106f857600080fd5b6000610704868661065c565b93505060206107158682870161066d565b925050604061072686828701610678565b9150509250925092565b60006020828403121561074257600080fd5b60006106a1848461066d565b6000806040838503121561076157600080fd5b600061076d858561066d565b92505060206106d985828601610678565b610787816109c2565b82525050565b610787816109cd565b610787816109d2565b610787816109f6565b60006107b56026836109b4565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006107fd6043836109bd565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000610868600c836109b4565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000610890604b836109bd565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e7460208201526a323536206578706972792960a81b6040820152604b0192915050565b610787816109e1565b610787816109ea565b6000610667826107f0565b600061066782610883565b60208101610667828461077e565b60208101610667828461078d565b602081016106678284610796565b60208101610667828461079f565b60208082528101610667816107a8565b602080825281016106678161085b565b6020810161066782846108f6565b6040810161099282856108f6565b61099f60208301846108ff565b9392505050565b6020810161066782846108ff565b90815260200190565b919050565b6000610667826109d5565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b6001600160601b031690565b6000610667826109c2565b610a0a816109c2565b81146105d457600080fd5b610a0a816109d2565b610a0a816109e156fea365627a7a723158203855d80d95fcbef73227e1f2453f89135b51a36425d301244d05922ac9f4d1f36c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9436E7D4 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xB1724B46 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDB27EC18 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x338 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0xB1724B46 EQ PUSH2 0x2F2 JUMPI DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0x302 JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0x2CF JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0x2EA JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x27DD1B00 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x6B6FDE0E GT PUSH2 0x125 JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x28C JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x23D JUMPI PUSH2 0x18D JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x17748ADC EQ PUSH2 0x1ED JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x202 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x93A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B8 PUSH2 0x353 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x362 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x92C JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x386 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x9A6 JUMP JUMPDEST PUSH2 0x19A PUSH2 0x38B JUMP JUMPDEST PUSH2 0x21D PUSH2 0x218 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x3A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x91E JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x238 CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x3C8 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x24B CALLDATASIZE PUSH1 0x4 PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP3 SWAP2 SWAP1 PUSH2 0x984 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x26C CALLDATASIZE PUSH1 0x4 PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x419 JUMP JUMPDEST PUSH2 0x19A PUSH2 0x27F CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST PUSH2 0x21D PUSH2 0x467 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x476 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x2A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x49A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x4B2 JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x4D5 JUMP JUMPDEST PUSH2 0x1B8 PUSH2 0x4DE JUMP JUMPDEST PUSH2 0x1D8 PUSH2 0x2E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x21D PUSH2 0x502 JUMP JUMPDEST PUSH2 0x19A PUSH2 0x516 JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x51E JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x534 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST PUSH2 0x250 PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0x74E JUMP JUMPDEST PUSH2 0x55C JUMP JUMPDEST PUSH2 0x19A PUSH2 0x592 JUMP JUMPDEST PUSH2 0x34B PUSH2 0x346 CALLDATASIZE PUSH1 0x4 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x59E JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x397 SWAP1 PUSH2 0x908 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x48B PUSH2 0x5D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x397 SWAP1 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x5A6 PUSH2 0x476 JUMP JUMPDEST PUSH2 0x5CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5C2 SWAP1 PUSH2 0x966 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5D4 DUP2 PUSH2 0x5DB JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x601 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5C2 SWAP1 PUSH2 0x956 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x667 DUP2 PUSH2 0xA01 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x667 DUP2 PUSH2 0xA15 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x667 DUP2 PUSH2 0xA1E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A1 DUP5 DUP5 PUSH2 0x65C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6C8 DUP6 DUP6 PUSH2 0x65C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6D9 DUP6 DUP3 DUP7 ADD PUSH2 0x66D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x704 DUP7 DUP7 PUSH2 0x65C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x715 DUP7 DUP3 DUP8 ADD PUSH2 0x66D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x726 DUP7 DUP3 DUP8 ADD PUSH2 0x678 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A1 DUP5 DUP5 PUSH2 0x66D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x76D DUP6 DUP6 PUSH2 0x66D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6D9 DUP6 DUP3 DUP7 ADD PUSH2 0x678 JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9C2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9CD JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9D2 JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B5 PUSH1 0x26 DUP4 PUSH2 0x9B4 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7FD PUSH1 0x43 DUP4 PUSH2 0x9BD JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x868 PUSH1 0xC DUP4 PUSH2 0x9B4 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x890 PUSH1 0x4B DUP4 PUSH2 0x9BD JUMP JUMPDEST PUSH32 0x44656C65676174696F6E28616464726573732064656C6567617465652C75696E DUP2 MSTORE PUSH32 0x74323536206C6F636B446174652C75696E74323536206E6F6E63652C75696E74 PUSH1 0x20 DUP3 ADD MSTORE PUSH11 0x3235362065787069727929 PUSH1 0xA8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x4B ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x787 DUP2 PUSH2 0x9EA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x7F0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x883 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x77E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x78D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x796 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x79F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x667 DUP2 PUSH2 0x7A8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x667 DUP2 PUSH2 0x85B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x8F6 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x992 DUP3 DUP6 PUSH2 0x8F6 JUMP JUMPDEST PUSH2 0x99F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x8FF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x667 DUP3 DUP5 PUSH2 0x8FF JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x9D5 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x667 DUP3 PUSH2 0x9C2 JUMP JUMPDEST PUSH2 0xA0A DUP2 PUSH2 0x9C2 JUMP JUMPDEST DUP2 EQ PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0A DUP2 PUSH2 0x9D2 JUMP JUMPDEST PUSH2 0xA0A DUP2 PUSH2 0x9E1 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 CODESIZE SSTORE 0xD8 0xD SWAP6 0xFC 0xBE 0xF7 ORIGIN 0x27 0xE1 CALLCODE GASLIMIT EXTCODEHASH DUP10 SGT JUMPDEST MLOAD LOG3 PUSH5 0x25D301244D SDIV SWAP3 0x2A 0xC9 DELEGATECALL 0xD1 RETURN PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "941:4896:59:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;941:4896:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:24;;;:::i;:::-;;;;;;;;;;;;;;;;4986:34;;;:::i;:::-;;;;;;;;5691:49;;;;;;;;;:::i;:::-;;;;;;;;5786:48;;;:::i;1160:44::-;;;:::i;:::-;;;;;;;;2358:122;;;:::i;2115:64::-;;;;;;;;;:::i;:::-;;;;;;;;5570:38;;;;;;;;;:::i;4346:99::-;;;;;;;;;:::i;:::-;;;;;;;;;3804:103;;;;;;;;;:::i;4774:41::-;;;;;;;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;3472:60:59:-;;;;;;;;;:::i;:::-;;;;;;;;4062:83;;;;;;;;;:::i;2262:31::-;;;:::i;2040:22::-;;;:::i;5310:48::-;;;;;;;;;:::i;2805:33::-;;;:::i;1509:48::-;;;:::i;5091:52::-;;;:::i;1409:41::-;;;:::i;4587:79::-;;;;;;;;;:::i;3264:80::-;;;;;;;;;:::i;2566:134::-;;;:::i;1351:98:142:-;;;;;;;;;:::i;:::-;;1945:24:59;;;;:::o;4986:34::-;;;-1:-1:-1;;;;;4986:34:59;;:::o;5691:49::-;;;;;;;;;;;;;;;:::o;5786:48::-;;;-1:-1:-1;;;;;5786:48:59;;:::o;1160:44::-;1203:1;1160:44;:::o;2358:122::-;2400:80;;;;;;;;;;;;;;2358:122;:::o;2115:64::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2115:64:59;;:::o;5570:38::-;;;;;;;;;;;;;;;:::o;4346:99::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4346:99:59;;:::o;3804:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3804:103:59;;:::o;4774:41::-;;;;;;;;;;;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;3472:60:59:-;;;;;;;;;;;;;;;:::o;4062:83::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2262:31::-;;;;;;:::o;2040:22::-;;;-1:-1:-1;;;;;2040:22:59;;:::o;5310:48::-;;;;;;;;;;;;;;;:::o;2805:33::-;;;;;;-1:-1:-1;;;;;2805:33:59;;:::o;1509:48::-;1548:9;1509:48;:::o;5091:52::-;;;-1:-1:-1;;;5091:52:59;;-1:-1:-1;;;;;5091:52:59;;:::o;1409:41::-;1448:2;1409:41;:::o;4587:79::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3264:80::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3264:80:59;;:::o;2566:134::-;2612:88;;;;;;1351:98:142;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;142:130;209:20;;234:33;209:20;234:33;;416:128;482:20;;507:32;482:20;507:32;;551:241;;655:2;643:9;634:7;630:23;626:32;623:2;;;671:1;668;661:12;623:2;706:1;723:53;768:7;748:9;723:53;;;713:63;617:175;-1:-1;;;;617:175;799:366;;;920:2;908:9;899:7;895:23;891:32;888:2;;;936:1;933;926:12;888:2;971:1;988:53;1033:7;1013:9;988:53;;;978:63;;950:97;1078:2;1096:53;1141:7;1132:6;1121:9;1117:22;1096:53;;;1086:63;;1057:98;882:283;;;;;;1172:489;;;;1309:2;1297:9;1288:7;1284:23;1280:32;1277:2;;;1325:1;1322;1315:12;1277:2;1360:1;1377:53;1422:7;1402:9;1377:53;;;1367:63;;1339:97;1467:2;1485:53;1530:7;1521:6;1510:9;1506:22;1485:53;;;1475:63;;1446:98;1575:2;1593:52;1637:7;1628:6;1617:9;1613:22;1593:52;;;1583:62;;1554:97;1271:390;;;;;;1668:241;;1772:2;1760:9;1751:7;1747:23;1743:32;1740:2;;;1788:1;1785;1778:12;1740:2;1823:1;1840:53;1885:7;1865:9;1840:53;;2164:364;;;2284:2;2272:9;2263:7;2259:23;2255:32;2252:2;;;2300:1;2297;2290:12;2252:2;2335:1;2352:53;2397:7;2377:9;2352:53;;;2342:63;;2314:97;2442:2;2460:52;2504:7;2495:6;2484:9;2480:22;2460:52;;2535:113;2618:24;2636:5;2618:24;;;2613:3;2606:37;2600:48;;;2655:104;2732:21;2747:5;2732:21;;2766:113;2849:24;2867:5;2849:24;;2886:158;2985:53;3032:5;2985:53;;3430:375;;3590:67;3654:2;3649:3;3590:67;;;3690:34;3670:55;;-1:-1;;;3754:2;3745:12;;3738:30;3796:2;3787:12;;3576:229;-1:-1;;3576:229;3814:477;;3992:85;4074:2;4069:3;3992:85;;;4110:34;4090:55;;4179:34;4174:2;4165:12;;4158:56;-1:-1;;;4243:2;4234:12;;4227:27;4282:2;4273:12;;3978:313;-1:-1;;3978:313;4300:312;;4460:67;4524:2;4519:3;4460:67;;;-1:-1;;;4540:35;;4603:2;4594:12;;4446:166;-1:-1;;4446:166;4621:485;;4799:85;4881:2;4876:3;4799:85;;;4917:34;4897:55;;4986:34;4981:2;4972:12;;4965:56;-1:-1;;;5050:2;5041:12;;5034:35;5097:2;5088:12;;4785:321;-1:-1;;4785:321;5234:110;5315:23;5332:5;5315:23;;5351:110;5432:23;5449:5;5432:23;;5468:372;;5667:148;5811:3;5667:148;;5847:372;;6046:148;6190:3;6046:148;;6226:213;6344:2;6329:18;;6358:71;6333:9;6402:6;6358:71;;6446:201;6558:2;6543:18;;6572:65;6547:9;6610:6;6572:65;;6654:213;6772:2;6757:18;;6786:71;6761:9;6830:6;6786:71;;6874:245;7008:2;6993:18;;7022:87;6997:9;7082:6;7022:87;;7678:407;7869:2;7883:47;;;7854:18;;7944:131;7854:18;7944:131;;8092:407;8283:2;8297:47;;;8268:18;;8358:131;8268:18;8358:131;;8726:209;8842:2;8827:18;;8856:69;8831:9;8898:6;8856:69;;8942:316;9084:2;9069:18;;9098:69;9073:9;9140:6;9098:69;;;9178:70;9244:2;9233:9;9229:18;9220:6;9178:70;;;9055:203;;;;;;9265:209;9381:2;9366:18;;9395:69;9370:9;9437:6;9395:69;;9482:163;9585:19;;;9634:4;9625:14;;9578:67;9654:145;9790:3;9768:31;-1:-1;9768:31;9807:91;;9869:24;9887:5;9869:24;;9905:85;9971:13;9964:21;;9947:43;9997:72;10059:5;10042:27;10076:121;-1:-1;;;;;10138:54;;10121:76;10283:88;10355:10;10344:22;;10327:44;10378:104;-1:-1;;;;;10439:38;;10422:60;10489:153;;10584:53;10631:5;10584:53;;11434:117;11503:24;11521:5;11503:24;;;11496:5;11493:35;11483:2;;11542:1;11539;11532:12;11558:117;11627:24;11645:5;11627:24;;11806:115;11874:23;11891:5;11874:23;"
            },
            "methodIdentifiers": {
              "DELEGATION_TYPEHASH()": "e7a324dc",
              "DOMAIN_TYPEHASH()": "20606b70",
              "MAX_DURATION()": "b1724b46",
              "MAX_VOTING_WEIGHT()": "17748adc",
              "SOVToken()": "a58848c5",
              "WEIGHT_FACTOR()": "d27569e7",
              "admins(address)": "429b62e5",
              "allUnlocked()": "9929e886",
              "delegateStakingCheckpoints(address,uint256,uint32)": "6b6fde0e",
              "delegates(address,uint256)": "27dd1b00",
              "feeSharing()": "03a18fa3",
              "isOwner()": "8f32d59b",
              "kickoffTS()": "00073f99",
              "newStakingContract()": "ae81dfe4",
              "nonces(address)": "7ecebe00",
              "numDelegateStakingCheckpoints(address,uint256)": "94c2ce58",
              "numTotalStakingCheckpoints(uint256)": "9436e7d4",
              "numUserStakingCheckpoints(address,uint256)": "db27ec18",
              "owner()": "8da5cb5b",
              "totalStakingCheckpoints(uint256,uint32)": "dfb267c2",
              "transferOwnership(address)": "f2fde38b",
              "userStakingCheckpoints(address,uint256,uint32)": "68cefccc",
              "vestingCodeHashes(bytes32)": "07392cc0",
              "vestingRegistryLogic()": "104932cf",
              "vestingWhitelist(address)": "adae9002",
              "weightScaling()": "bf626ec1"
            }
          },
          "userdoc": {
            "methods": {},
            "notice": "Just the storage part of stacking contract, no functions, only constant, variables and required structures (mappings). Used by StackingProxy and Checkpoints contracts. * What is SOV staking? The purpose of the SOV token is to provide a pseudonymous, censorship-resistant mechanism for governing the parameters of the Sovryn protocol, while aligning the incentives of protocol governors with the long-term success of the protocol. Any SOV token holder can choose to stake (lock up) their tokens for a fixed period of time in return for voting rights in the Bitocracy. Stakers are further incentivised through fee and slashing rewards."
          }
        }
      },
      "contracts/governance/Staking/WeightedStaking.sol": {
        "WeightedStaking": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "ContractCodeHashAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "ContractCodeHashRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "fromDelegate",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "toDelegate",
                  "type": "address"
                }
              ],
              "name": "DelegateChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegate",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "previousBalance",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newBalance",
                  "type": "uint256"
                }
              ],
              "name": "DelegateStakeChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "previousDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountStaked",
                  "type": "uint256"
                }
              ],
              "name": "ExtendedStakingDuration",
              "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": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "isGovernance",
                  "type": "bool"
                }
              ],
              "name": "StakingWithdrawn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "totalStaked",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensUnlocked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "VestingTokensWithdrawn",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DELEGATION_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DOMAIN_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_DURATION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_VOTING_WEIGHT",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOVToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "WEIGHT_FACTOR",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "allUnlocked",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startDate",
                  "type": "uint256"
                }
              ],
              "name": "computeWeightByDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "weight",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "delegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "delegates",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharing",
              "outputs": [
                {
                  "internalType": "contract IFeeSharingProxy",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "getPriorStakeByDateForDelegatee",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "getPriorTotalStakesForDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint32",
                  "name": "blockNumber",
                  "type": "uint32"
                },
                {
                  "internalType": "uint256",
                  "name": "time",
                  "type": "uint256"
                }
              ],
              "name": "getPriorTotalVotingPower",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "totalVotingPower",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "getPriorUserStakeByDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                }
              ],
              "name": "getPriorVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "votes",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                }
              ],
              "name": "getPriorWeightedStake",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "votes",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kickoffTS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "newStakingContract",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numDelegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numTotalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numUserStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingRegistryProxy",
                  "type": "address"
                }
              ],
              "name": "setVestingRegistry",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                }
              ],
              "name": "timestampToLockDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockDate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "totalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "userStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "vestingCodeHashes",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingRegistryLogic",
              "outputs": [
                {
                  "internalType": "contract VestingRegistryLogic",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "vestingWhitelist",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "weightScaling",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startDate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "weightedStakeByDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "power",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "computeWeightByDate(uint256,uint256)": {
                "params": {
                  "date": "The unlocking date.",
                  "startDate": "We compute the weight for the tokens staked until 'date' on 'startDate'."
                }
              },
              "getPriorStakeByDateForDelegatee(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation. TODO: WeightedStaking::getPriorStakeByDateForDelegatee should probably better be internal instead of a public function.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at."
                },
                "return": "The number of votes the account had as of the given block."
              },
              "getPriorTotalStakesForDate(uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation. TODO: WeightedStaking::getPriorTotalStakesForDate should probably better be internal instead of a public function.",
                "params": {
                  "blockNumber": "The block number to get the vote balance at.",
                  "date": "The date to check the stakes for."
                },
                "return": "The number of votes the account had as of the given block."
              },
              "getPriorTotalVotingPower(uint32,uint256)": {
                "params": {
                  "time": "The timestamp for which to calculate the total voting power."
                },
                "return": "The total voting power at the given time."
              },
              "getPriorUserStakeByDate(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at.",
                  "date": "The lock date."
                },
                "return": "The number of votes the account had as of the given block."
              },
              "getPriorVotes(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation.     Used for Voting, not for fee sharing.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at."
                },
                "return": "The number of votes the delegatee had as of the given block."
              },
              "getPriorWeightedStake(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation.     Used for fee sharing, not voting. TODO: WeightedStaking::getPriorWeightedStake is using the variable name \"votes\" to add up token stake, and that could be misleading.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at."
                },
                "return": "The weighted stake the account had as of the given block."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "setVestingRegistry(address)": {
                "params": {
                  "_vestingRegistryProxy": "the address of vesting registry proxy contract"
                }
              },
              "timestampToLockDate(uint256)": {
                "params": {
                  "timestamp": "The unlocking timestamp."
                },
                "return": "The actual unlocking date (might be up to 2 weeks shorter than intended)."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "weightedStakeByDate(address,uint256,uint256,uint256)": {
                "params": {
                  "blockNumber": "The block number, needed for checkpointing.",
                  "date": "The staking date to compute the power for.",
                  "startDate": "The date for which we need to know the power of the stake."
                }
              }
            },
            "title": "Weighted Staking contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c0604052600a608081905269534f565374616b696e6760b01b60a09081526200002d9160029190620000ae565b506005805460ff19169055600d80546001600160a01b0316600360a01b179055600062000059620000a9565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000150565b335b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000f157805160ff191683800117855562000121565b8280016001018555821562000121579182015b828111156200012157825182559160200191906001019062000104565b506200012f92915062000133565b5090565b620000ab91905b808211156200012f57600081556001016200013a565b61205c80620001606000396000f3fe608060405234801561001057600080fd5b50600436106102315760003560e01c80638da5cb5b11610130578063b1724b46116100b8578063dfb267c21161007c578063dfb267c214610481578063e7a324dc14610494578063e97ffacb1461049c578063f09cfc64146104af578063f2fde38b146104c257610231565b8063b1724b4614610443578063bf626ec11461044b578063cf7b684a14610453578063d27569e714610466578063db27ec181461046e57610231565b806394c2ce58116100ff57806394c2ce58146104055780639929e88614610418578063a58848c514610420578063adae900214610428578063ae81dfe41461043b57610231565b80638da5cb5b146103c25780638dae1b16146103ca5780638f32d59b146103dd5780639436e7d4146103e557610231565b806337e6b1c1116101be5780636b6fde0e116101825780636b6fde0e14610363578063704802751461037657806372ec9795146103895780637ecebe001461039c578063836eebee146103af57610231565b806337e6b1c1146102f6578063429b62e514610309578063450b06011461031c57806362cf8a081461032f57806368cefccc1461034257610231565b806317748adc1161020557806317748adc146102915780631785f53c146102a657806320606b70146102bb5780632522d7ba146102c357806327dd1b00146102d657610231565b8062073f991461023657806303a18fa31461025457806307392cc014610269578063104932cf14610289575b600080fd5b61023e6104d5565b60405161024b9190611c8d565b60405180910390f35b61025c6104db565b60405161024b9190611c9b565b61027c610277366004611735565b6104ea565b60405161024b9190611c7f565b61025c6104ff565b61029961050e565b60405161024b9190611d73565b6102b96102b43660046115c6565b610513565b005b61023e61059b565b6102996102d13660046117a2565b6105b2565b6102e96102e43660046115ec565b610618565b60405161024b9190611c63565b610299610304366004611626565b61063e565b61027c6103173660046115c6565b6106b6565b6102b961032a3660046115c6565b6106cb565b61029961033d366004611753565b610737565b6103556103503660046116d4565b610872565b60405161024b929190611d58565b6103556103713660046116d4565b6108ad565b6102b96103843660046115c6565b6108e8565b61023e610397366004611735565b61095f565b61023e6103aa3660046115c6565b6109aa565b6102996103bd366004611626565b6109bc565b6102e9610a14565b6102996103d8366004611673565b610a23565b61027c610aa5565b6103f86103f3366004611735565b610ac9565b60405161024b9190611d4a565b6103f86104133660046115ec565b610ae1565b61027c610b04565b61025c610b0d565b61027c6104363660046115c6565b610b1c565b6102e9610b31565b61023e610b45565b610299610b4d565b610299610461366004611626565b610b63565b610299610ba0565b6103f861047c3660046115ec565b610ba5565b61035561048f366004611772565b610bc8565b61023e610bfd565b6102996104aa366004611626565b610c09565b6102996104bd366004611753565b610e52565b6102b96104d03660046115c6565b61102c565b60015481565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b6011546001600160a01b031681565b600981565b61051b610aa5565b6105405760405162461bcd60e51b815260040161053790611cfa565b60405180910390fd5b6001600160a01b0381166000908152600f602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f90610590908390611c63565b60405180910390a150565b6040516105a790611c4d565b604051809103902081565b6000806105be8361095f565b905063059fa6008101815b81811161060f57610603846105e583868a63ffffffff1661105c565b604051806080016040528060558152602001611e8a605591396110c2565b935062127500016105c9565b50505092915050565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b60008061064a8361095f565b905063059fa6008101815b8181116106ac57600061066a8883868a610a23565b90506001600160601b038116156106a15761069e85826040518060800160405280604c8152602001611fce604c91396110c2565b94505b506212750001610655565b5050509392505050565b600f6020526000908152604090205460ff1681565b6106d3610aa5565b6106ef5760405162461bcd60e51b815260040161053790611cfa565b6001600160a01b0381166107155760405162461bcd60e51b815260040161053790611cba565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000818310156107595760405162461bcd60e51b815260040161053790611cea565b81830363059fa6008111156107805760405162461bcd60e51b815260040161053790611d0a565b6000620151808263059fa600036001600160601b03168161079d57fe5b049050610869600a621232106001600160601b031661081d600a6009026107ff621232108788026040518060400160405280601f81526020017f756e646572666c6f77206f6e207765696768742063616c63756c6174696f6e008152506110f5565b6040518060600160405280602d8152602001611edf602d9139611134565b6001600160601b03168161082d57fe5b046040518060400160405280601e81526020017f6f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e00008152506110c2565b95945050505050565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b6108f0610aa5565b61090c5760405162461bcd60e51b815260040161053790611cfa565b6001600160a01b0381166000908152600f602052604090819020805460ff19166001179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33990610590908390611c63565b60006001548210156109835760405162461bcd60e51b815260040161053790611cda565b60006212750060015484038161099557fe5b04905060015462127500820201915050919050565b600c6020526000908152604090205481565b6000806109c88361095f565b905063059fa6008101815b8181116106ac57610a08846109ea8984878b611192565b6040518060800160405280604a8152602001611f49604a91396110c2565b935062127500016109d3565b6000546001600160a01b031690565b600080610a318686856111fa565b90506001600160601b03811615610a97576000610a4e8686610737565b9050600a6001600160601b0316610a7e83836040518060600160405280603d8152602001611f0c603d9139611134565b6001600160601b031681610a8e57fe5b04925050610a9c565b600091505b50949350505050565b600080546001600160a01b0316610aba61144f565b6001600160a01b031614905090565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b60055460ff1681565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b600d54600160a01b90046001600160601b031681565b600080610b718585856111fa565b90506001600160601b038116158015610b8d5750610b8d611453565b15610b96575060015b90505b9392505050565b600a81565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b6040516105a790611c58565b6000610c136114d9565b8210610c315760405162461bcd60e51b815260040161053790611d3a565b6001600160a01b038416600090815260096020908152604080832086845290915290205463ffffffff1680610c6a576000915050610b99565b6001600160a01b0385166000908152600860209081526040808320878452825280832063ffffffff600019860181168552925290912054168310610cf6576001600160a01b038516600090815260086020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050610b99565b6001600160a01b0385166000908152600860209081526040808320878452825280832083805290915290205463ffffffff16831015610d39576000915050610b99565b600060001982015b8163ffffffff168163ffffffff161115610e0457600282820363ffffffff16048103610d6b611583565b506001600160a01b03881660009081526008602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415610ddf57602001519450610b999350505050565b805163ffffffff16871115610df657819350610dfd565b6001820392505b5050610d41565b506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b6000610e5c6114d9565b8210610e7a5760405162461bcd60e51b815260040161053790611d2a565b60008381526007602052604090205463ffffffff1680610e9e576000915050611026565b600084815260066020908152604080832063ffffffff600019860181168552925290912054168310610f065760008481526006602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050611026565b600084815260066020908152604080832083805290915290205463ffffffff16831015610f37576000915050611026565b600060001982015b8163ffffffff168163ffffffff161115610ff057600282820363ffffffff16048103610f69611583565b50600087815260066020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415610fcb576020015194506110269350505050565b805163ffffffff16871115610fe257819350610fe9565b6001820392505b5050610f3f565b50600085815260066020908152604080832063ffffffff909416835292905220546001600160601b03600160201b909104169150505b92915050565b611034610aa5565b6110505760405162461bcd60e51b815260040161053790611cfa565b611059816114dd565b50565b6000806110698585610737565b905060006110778685610e52565b9050600a6001600160601b03166110a782846040518060600160405280603b8152602001611f93603b9139611134565b6001600160601b0316816110b757fe5b049695505050505050565b6000838301826001600160601b038087169083161015610a9c5760405162461bcd60e51b81526004016105379190611ca9565b6000836001600160601b0316836001600160601b03161115829061112c5760405162461bcd60e51b81526004016105379190611ca9565b505050900390565b60006001600160601b03841661114c57506000610b99565b8383026001600160601b03808516908087169083168161116857fe5b046001600160601b0316148390610a9c5760405162461bcd60e51b81526004016105379190611ca9565b60008061119f8585610737565b905060006111ae878786610c09565b9050600a6001600160601b03166111de8284604051806080016040528060478152602001611e4360479139611134565b6001600160601b0316816111ee57fe5b04979650505050505050565b60006112046114d9565b82106112225760405162461bcd60e51b815260040161053790611d1a565b61122b8361155e565b6001600160a01b0385166000908152600b6020908152604080832084845290915290205490935063ffffffff1680611267576000915050610b99565b6001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff6000198601811685529252909120541683106112f3576001600160a01b0385166000908152600a6020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050610b99565b6001600160a01b0385166000908152600a60209081526040808320878452825280832083805290915290205463ffffffff16831015611336576000915050610b99565b600060001982015b8163ffffffff168163ffffffff16111561140157600282820363ffffffff16048103611368611583565b506001600160a01b0388166000908152600a602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b031691810191909152908714156113dc57602001519450610b999350505050565b805163ffffffff168711156113f3578193506113fa565b6001820392505b505061133e565b506001600160a01b0386166000908152600a60209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b3390565b60115460405163dbb049d160e01b81526000916001600160a01b03169063dbb049d190611484903390600401611c71565b60206040518083038186803b15801561149c57600080fd5b505afa1580156114b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114d49190810190611717565b905090565b4390565b6001600160a01b0381166115035760405162461bcd60e51b815260040161053790611cca565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061156a8361095f565b905082811461157c5762127500810192505b5090919050565b604080518082019091526000808252602082015290565b803561102681611e13565b805161102681611e27565b803561102681611e30565b803561102681611e39565b6000602082840312156115d857600080fd5b60006115e4848461159a565b949350505050565b600080604083850312156115ff57600080fd5b600061160b858561159a565b925050602061161c858286016115b0565b9150509250929050565b60008060006060848603121561163b57600080fd5b6000611647868661159a565b9350506020611658868287016115b0565b9250506040611669868287016115b0565b9150509250925092565b6000806000806080858703121561168957600080fd5b6000611695878761159a565b94505060206116a6878288016115b0565b93505060406116b7878288016115b0565b92505060606116c8878288016115b0565b91505092959194509250565b6000806000606084860312156116e957600080fd5b60006116f5868661159a565b9350506020611706868287016115b0565b9250506040611669868287016115bb565b60006020828403121561172957600080fd5b60006115e484846115a5565b60006020828403121561174757600080fd5b60006115e484846115b0565b6000806040838503121561176657600080fd5b600061160b85856115b0565b6000806040838503121561178557600080fd5b600061179185856115b0565b925050602061161c858286016115bb565b600080604083850312156117b557600080fd5b600061160b85856115bb565b6117ca81611dc7565b82525050565b6117ca81611d93565b6117ca81611d9e565b6117ca81611da3565b6117ca81611dce565b60006117ff82611d81565b6118098185611d85565b9350611819818560208601611dd9565b61182281611e09565b9093019392505050565b6000611839602083611d85565b7f76657374696e67207265676973747279206164647265737320696e76616c6964815260200192915050565b6000611872602683611d85565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006118ba604d83611d85565b7f57656967687465645374616b696e673a3a74696d657374616d70546f4c6f636b81527f446174653a2074696d657374616d70206c696573206265666f726520636f6e7460208201526c3930b1ba1031b932b0ba34b7b760991b604082015260600192915050565b600061192f604c83611d85565b7f57656967687465645374616b696e673a3a636f6d70757465576569676874427981527f446174653a2064617465206e6565647320746f2062652062696767657220746860208201526b616e2073746172744461746560a01b604082015260600192915050565b60006119a3604383611d8e565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000611a0e600c83611d85565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000611a36604d83611d85565b7f5374616b696e673a3a636f6d707574655765696768744279446174653a72656d81527f61696e696e672074696d652063616e277420626520626967676572207468616e60208201526c1036b0bc10323ab930ba34b7b760991b604082015260600192915050565b6000611aab604b83611d8e565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e7460208201526a323536206578706972792960a81b6040820152604b0192915050565b6000611b1e603d83611d85565b7f57656967687465645374616b696e673a3a6765745072696f725573657253746181527f6b65416e64446174653a206e6f74207965742064657465726d696e6564000000602082015260400192915050565b6000611b7d603f83611d85565b7f57656967687465645374616b696e673a3a6765745072696f72546f74616c537481527f616b6573466f72446174653a206e6f74207965742064657465726d696e656400602082015260400192915050565b6000611bdc604483611d85565b7f57656967687465645374616b696e673a3a6765745072696f725374616b65427981527f44617465466f7244656c6567617465653a206e6f74207965742064657465726d6020820152631a5b995960e21b604082015260600192915050565b6117ca81611db2565b6117ca81611dbb565b600061102682611996565b600061102682611a9e565b6020810161102682846117d0565b6020810161102682846117c1565b6020810161102682846117d9565b6020810161102682846117e2565b6020810161102682846117eb565b60208082528101610b9981846117f4565b602080825281016110268161182c565b6020808252810161102681611865565b60208082528101611026816118ad565b6020808252810161102681611922565b6020808252810161102681611a01565b6020808252810161102681611a29565b6020808252810161102681611b11565b6020808252810161102681611b70565b6020808252810161102681611bcf565b602081016110268284611c3b565b60408101611d668285611c3b565b610b996020830184611c44565b602081016110268284611c44565b5190565b90815260200190565b919050565b600061102682611da6565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b6001600160601b031690565b6000611026825b600061102682611d93565b60005b83811015611df4578181015183820152602001611ddc565b83811115611e03576000848401525b50505050565b601f01601f191690565b611e1c81611d93565b811461105957600080fd5b611e1c81611d9e565b611e1c81611da3565b611e1c81611db256fe57656967687465645374616b696e673a3a5f746f74616c506f776572427944617465466f7244656c6567617465653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f72546f74616c566f74696e67506f7765723a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e6d756c7469706c69636174696f6e206f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e57656967687465645374616b696e673a3a77656967687465645374616b654279446174653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f72566f7465733a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e57656967687465645374616b696e673a3a5f746f74616c506f7765724279446174653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f7257656967687465645374616b653a206f766572666c6f77206f6e20746f74616c2077656967687420636f6d7075746174696f6ea365627a7a723158206f8bd56d11249ac4d39175619cd35253904d21294bcad022903c1e2fad6f9a3a6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH10 0x534F565374616B696E67 PUSH1 0xB0 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH3 0x2D SWAP2 PUSH1 0x2 SWAP2 SWAP1 PUSH3 0xAE JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH1 0x0 PUSH3 0x59 PUSH3 0xA9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x150 JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xF1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x121 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x121 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x121 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x104 JUMP JUMPDEST POP PUSH3 0x12F SWAP3 SWAP2 POP PUSH3 0x133 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0xAB SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x12F JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x13A JUMP JUMPDEST PUSH2 0x205C DUP1 PUSH3 0x160 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x231 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB1724B46 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xDFB267C2 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0x481 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xE97FFACB EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0xF09CFC64 EQ PUSH2 0x4AF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x4C2 JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH4 0xB1724B46 EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0x44B JUMPI DUP1 PUSH4 0xCF7B684A EQ PUSH2 0x453 JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0x46E JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH4 0x94C2CE58 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0x405 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0x420 JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0x43B JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x8DAE1B16 EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0x3E5 JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH4 0x37E6B1C1 GT PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6B6FDE0E GT PUSH2 0x182 JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0x72EC9795 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x836EEBEE EQ PUSH2 0x3AF JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH4 0x37E6B1C1 EQ PUSH2 0x2F6 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0x450B0601 EQ PUSH2 0x31C JUMPI DUP1 PUSH4 0x62CF8A08 EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x342 JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH4 0x17748ADC GT PUSH2 0x205 JUMPI DUP1 PUSH4 0x17748ADC EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x2A6 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x2522D7BA EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x2D6 JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x254 JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x269 JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x289 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23E PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP2 SWAP1 PUSH2 0x1C8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25C PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP2 SWAP1 PUSH2 0x1C9B JUMP JUMPDEST PUSH2 0x27C PUSH2 0x277 CALLDATASIZE PUSH1 0x4 PUSH2 0x1735 JUMP JUMPDEST PUSH2 0x4EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP2 SWAP1 PUSH2 0x1C7F JUMP JUMPDEST PUSH2 0x25C PUSH2 0x4FF JUMP JUMPDEST PUSH2 0x299 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP2 SWAP1 PUSH2 0x1D73 JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x2B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x513 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x23E PUSH2 0x59B JUMP JUMPDEST PUSH2 0x299 PUSH2 0x2D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x17A2 JUMP JUMPDEST PUSH2 0x5B2 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x2E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x15EC JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP2 SWAP1 PUSH2 0x1C63 JUMP JUMPDEST PUSH2 0x299 PUSH2 0x304 CALLDATASIZE PUSH1 0x4 PUSH2 0x1626 JUMP JUMPDEST PUSH2 0x63E JUMP JUMPDEST PUSH2 0x27C PUSH2 0x317 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x6B6 JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x32A CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x6CB JUMP JUMPDEST PUSH2 0x299 PUSH2 0x33D CALLDATASIZE PUSH1 0x4 PUSH2 0x1753 JUMP JUMPDEST PUSH2 0x737 JUMP JUMPDEST PUSH2 0x355 PUSH2 0x350 CALLDATASIZE PUSH1 0x4 PUSH2 0x16D4 JUMP JUMPDEST PUSH2 0x872 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP3 SWAP2 SWAP1 PUSH2 0x1D58 JUMP JUMPDEST PUSH2 0x355 PUSH2 0x371 CALLDATASIZE PUSH1 0x4 PUSH2 0x16D4 JUMP JUMPDEST PUSH2 0x8AD JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x384 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST PUSH2 0x23E PUSH2 0x397 CALLDATASIZE PUSH1 0x4 PUSH2 0x1735 JUMP JUMPDEST PUSH2 0x95F JUMP JUMPDEST PUSH2 0x23E PUSH2 0x3AA CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x9AA JUMP JUMPDEST PUSH2 0x299 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x1626 JUMP JUMPDEST PUSH2 0x9BC JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x299 PUSH2 0x3D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x27C PUSH2 0xAA5 JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x3F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1735 JUMP JUMPDEST PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP2 SWAP1 PUSH2 0x1D4A JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x413 CALLDATASIZE PUSH1 0x4 PUSH2 0x15EC JUMP JUMPDEST PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x27C PUSH2 0xB04 JUMP JUMPDEST PUSH2 0x25C PUSH2 0xB0D JUMP JUMPDEST PUSH2 0x27C PUSH2 0x436 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0xB1C JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0xB31 JUMP JUMPDEST PUSH2 0x23E PUSH2 0xB45 JUMP JUMPDEST PUSH2 0x299 PUSH2 0xB4D JUMP JUMPDEST PUSH2 0x299 PUSH2 0x461 CALLDATASIZE PUSH1 0x4 PUSH2 0x1626 JUMP JUMPDEST PUSH2 0xB63 JUMP JUMPDEST PUSH2 0x299 PUSH2 0xBA0 JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x47C CALLDATASIZE PUSH1 0x4 PUSH2 0x15EC JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x355 PUSH2 0x48F CALLDATASIZE PUSH1 0x4 PUSH2 0x1772 JUMP JUMPDEST PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0x23E PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x299 PUSH2 0x4AA CALLDATASIZE PUSH1 0x4 PUSH2 0x1626 JUMP JUMPDEST PUSH2 0xC09 JUMP JUMPDEST PUSH2 0x299 PUSH2 0x4BD CALLDATASIZE PUSH1 0x4 PUSH2 0x1753 JUMP JUMPDEST PUSH2 0xE52 JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x4D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x102C JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0x51B PUSH2 0xAA5 JUMP JUMPDEST PUSH2 0x540 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CFA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0x590 SWAP1 DUP4 SWAP1 PUSH2 0x1C63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A7 SWAP1 PUSH2 0x1C4D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5BE DUP4 PUSH2 0x95F JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x60F JUMPI PUSH2 0x603 DUP5 PUSH2 0x5E5 DUP4 DUP7 DUP11 PUSH4 0xFFFFFFFF AND PUSH2 0x105C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x55 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E8A PUSH1 0x55 SWAP2 CODECOPY PUSH2 0x10C2 JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x5C9 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x64A DUP4 PUSH2 0x95F JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x6AC JUMPI PUSH1 0x0 PUSH2 0x66A DUP9 DUP4 DUP7 DUP11 PUSH2 0xA23 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x6A1 JUMPI PUSH2 0x69E DUP6 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FCE PUSH1 0x4C SWAP2 CODECOPY PUSH2 0x10C2 JUMP JUMPDEST SWAP5 POP JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0x655 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x6D3 PUSH2 0xAA5 JUMP JUMPDEST PUSH2 0x6EF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x715 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CBA JUMP JUMPDEST PUSH1 0x11 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT ISZERO PUSH2 0x759 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CEA JUMP JUMPDEST DUP2 DUP4 SUB PUSH4 0x59FA600 DUP2 GT ISZERO PUSH2 0x780 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1D0A JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15180 DUP3 PUSH4 0x59FA600 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x79D JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x869 PUSH1 0xA PUSH3 0x123210 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x81D PUSH1 0xA PUSH1 0x9 MUL PUSH2 0x7FF PUSH3 0x123210 DUP8 DUP9 MUL PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x756E646572666C6F77206F6E207765696768742063616C63756C6174696F6E00 DUP2 MSTORE POP PUSH2 0x10F5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1EDF PUSH1 0x2D SWAP2 CODECOPY PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x82D JUMPI INVALID JUMPDEST DIV PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6F766572666C6F77206F6E2077656967687420636F6D7075746174696F6E0000 DUP2 MSTORE POP PUSH2 0x10C2 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH2 0x8F0 PUSH2 0xAA5 JUMP JUMPDEST PUSH2 0x90C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0x590 SWAP1 DUP4 SWAP1 PUSH2 0x1C63 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD DUP3 LT ISZERO PUSH2 0x983 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CDA JUMP JUMPDEST PUSH1 0x0 PUSH3 0x127500 PUSH1 0x1 SLOAD DUP5 SUB DUP2 PUSH2 0x995 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 SLOAD PUSH3 0x127500 DUP3 MUL ADD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x9C8 DUP4 PUSH2 0x95F JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x6AC JUMPI PUSH2 0xA08 DUP5 PUSH2 0x9EA DUP10 DUP5 DUP8 DUP12 PUSH2 0x1192 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F49 PUSH1 0x4A SWAP2 CODECOPY PUSH2 0x10C2 JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x9D3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA31 DUP7 DUP7 DUP6 PUSH2 0x11FA JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0xA97 JUMPI PUSH1 0x0 PUSH2 0xA4E DUP7 DUP7 PUSH2 0x737 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0xA7E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F0C PUSH1 0x3D SWAP2 CODECOPY PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0xA8E JUMPI INVALID JUMPDEST DIV SWAP3 POP POP PUSH2 0xA9C JUMP JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xABA PUSH2 0x144F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB71 DUP6 DUP6 DUP6 PUSH2 0x11FA JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO DUP1 ISZERO PUSH2 0xB8D JUMPI POP PUSH2 0xB8D PUSH2 0x1453 JUMP JUMPDEST ISZERO PUSH2 0xB96 JUMPI POP PUSH1 0x1 JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A7 SWAP1 PUSH2 0x1C58 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC13 PUSH2 0x14D9 JUMP JUMPDEST DUP3 LT PUSH2 0xC31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0xC6A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0xCF6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0xD39 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0xE04 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0xD6B PUSH2 0x1583 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0xDDF JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0xB99 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0xDF6 JUMPI DUP2 SWAP4 POP PUSH2 0xDFD JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0xD41 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE5C PUSH2 0x14D9 JUMP JUMPDEST DUP3 LT PUSH2 0xE7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1D2A JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0xE9E JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1026 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0xF06 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x1026 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0xF37 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1026 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0xFF0 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0xF69 PUSH2 0x1583 JUMP JUMPDEST POP PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0xFCB JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x1026 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0xFE2 JUMPI DUP2 SWAP4 POP PUSH2 0xFE9 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0xF3F JUMP JUMPDEST POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1034 PUSH2 0xAA5 JUMP JUMPDEST PUSH2 0x1050 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CFA JUMP JUMPDEST PUSH2 0x1059 DUP2 PUSH2 0x14DD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1069 DUP6 DUP6 PUSH2 0x737 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1077 DUP7 DUP6 PUSH2 0xE52 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x10A7 DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F93 PUSH1 0x3B SWAP2 CODECOPY PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x10B7 JUMPI INVALID JUMPDEST DIV SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP2 SWAP1 PUSH2 0x1CA9 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO DUP3 SWAP1 PUSH2 0x112C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP2 SWAP1 PUSH2 0x1CA9 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x114C JUMPI POP PUSH1 0x0 PUSH2 0xB99 JUMP JUMPDEST DUP4 DUP4 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP6 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP4 AND DUP2 PUSH2 0x1168 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND EQ DUP4 SWAP1 PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP2 SWAP1 PUSH2 0x1CA9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x119F DUP6 DUP6 PUSH2 0x737 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11AE DUP8 DUP8 DUP7 PUSH2 0xC09 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x11DE DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E43 PUSH1 0x47 SWAP2 CODECOPY PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x11EE JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1204 PUSH2 0x14D9 JUMP JUMPDEST DUP3 LT PUSH2 0x1222 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1D1A JUMP JUMPDEST PUSH2 0x122B DUP4 PUSH2 0x155E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP4 POP PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x1267 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x12F3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x1336 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x1401 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x1368 PUSH2 0x1583 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x13DC JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0xB99 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x13F3 JUMPI DUP2 SWAP4 POP PUSH2 0x13FA JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x133E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x40 MLOAD PUSH4 0xDBB049D1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xDBB049D1 SWAP1 PUSH2 0x1484 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1C71 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x14D4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1717 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1503 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CCA JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x156A DUP4 PUSH2 0x95F JUMP JUMPDEST SWAP1 POP DUP3 DUP2 EQ PUSH2 0x157C JUMPI PUSH3 0x127500 DUP2 ADD SWAP3 POP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1026 DUP2 PUSH2 0x1E13 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1026 DUP2 PUSH2 0x1E27 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1026 DUP2 PUSH2 0x1E30 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1026 DUP2 PUSH2 0x1E39 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x15E4 DUP5 DUP5 PUSH2 0x159A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x160B DUP6 DUP6 PUSH2 0x159A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x161C DUP6 DUP3 DUP7 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x163B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1647 DUP7 DUP7 PUSH2 0x159A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1658 DUP7 DUP3 DUP8 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1669 DUP7 DUP3 DUP8 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1695 DUP8 DUP8 PUSH2 0x159A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x16A6 DUP8 DUP3 DUP9 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x16B7 DUP8 DUP3 DUP9 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x16C8 DUP8 DUP3 DUP9 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x16E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x16F5 DUP7 DUP7 PUSH2 0x159A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1706 DUP7 DUP3 DUP8 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1669 DUP7 DUP3 DUP8 ADD PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1729 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x15E4 DUP5 DUP5 PUSH2 0x15A5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x15E4 DUP5 DUP5 PUSH2 0x15B0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1766 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x160B DUP6 DUP6 PUSH2 0x15B0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1785 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1791 DUP6 DUP6 PUSH2 0x15B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x161C DUP6 DUP3 DUP7 ADD PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x17B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x160B DUP6 DUP6 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1DC7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1D93 JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1DA3 JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1DCE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17FF DUP3 PUSH2 0x1D81 JUMP JUMPDEST PUSH2 0x1809 DUP2 DUP6 PUSH2 0x1D85 JUMP JUMPDEST SWAP4 POP PUSH2 0x1819 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1DD9 JUMP JUMPDEST PUSH2 0x1822 DUP2 PUSH2 0x1E09 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1839 PUSH1 0x20 DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x76657374696E67207265676973747279206164647265737320696E76616C6964 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1872 PUSH1 0x26 DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18BA PUSH1 0x4D DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A74696D657374616D70546F4C6F636B DUP2 MSTORE PUSH32 0x446174653A2074696D657374616D70206C696573206265666F726520636F6E74 PUSH1 0x20 DUP3 ADD MSTORE PUSH13 0x3930B1BA1031B932B0BA34B7B7 PUSH1 0x99 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x192F PUSH1 0x4C DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A636F6D707574655765696768744279 DUP2 MSTORE PUSH32 0x446174653A2064617465206E6565647320746F20626520626967676572207468 PUSH1 0x20 DUP3 ADD MSTORE PUSH12 0x616E20737461727444617465 PUSH1 0xA0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19A3 PUSH1 0x43 DUP4 PUSH2 0x1D8E JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A0E PUSH1 0xC DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A36 PUSH1 0x4D DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A636F6D707574655765696768744279446174653A72656D DUP2 MSTORE PUSH32 0x61696E696E672074696D652063616E277420626520626967676572207468616E PUSH1 0x20 DUP3 ADD MSTORE PUSH13 0x1036B0BC10323AB930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AAB PUSH1 0x4B DUP4 PUSH2 0x1D8E JUMP JUMPDEST PUSH32 0x44656C65676174696F6E28616464726573732064656C6567617465652C75696E DUP2 MSTORE PUSH32 0x74323536206C6F636B446174652C75696E74323536206E6F6E63652C75696E74 PUSH1 0x20 DUP3 ADD MSTORE PUSH11 0x3235362065787069727929 PUSH1 0xA8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x4B ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B1E PUSH1 0x3D DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A6765745072696F7255736572537461 DUP2 MSTORE PUSH32 0x6B65416E64446174653A206E6F74207965742064657465726D696E6564000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B7D PUSH1 0x3F DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A6765745072696F72546F74616C5374 DUP2 MSTORE PUSH32 0x616B6573466F72446174653A206E6F74207965742064657465726D696E656400 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BDC PUSH1 0x44 DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A6765745072696F725374616B654279 DUP2 MSTORE PUSH32 0x44617465466F7244656C6567617465653A206E6F74207965742064657465726D PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x1A5B9959 PUSH1 0xE2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1DB2 JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1DBB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1026 DUP3 PUSH2 0x1996 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1026 DUP3 PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x17D0 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x17C1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x17D9 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x17E2 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x17EB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xB99 DUP2 DUP5 PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1865 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x18AD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1922 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1B11 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1B70 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1BCF JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x1C3B JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x1D66 DUP3 DUP6 PUSH2 0x1C3B JUMP JUMPDEST PUSH2 0xB99 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1C44 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x1C44 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1026 DUP3 PUSH2 0x1DA6 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1026 DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x1026 DUP3 PUSH2 0x1D93 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DDC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x1E1C DUP2 PUSH2 0x1D93 JUMP JUMPDEST DUP2 EQ PUSH2 0x1059 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E1C DUP2 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x1E1C DUP2 PUSH2 0x1DA3 JUMP JUMPDEST PUSH2 0x1E1C DUP2 PUSH2 0x1DB2 JUMP INVALID JUMPI PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A5F746F74616C506F776572427944 PUSH2 0x7465 CHAINID PUSH16 0x7244656C6567617465653A206D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72546F74616C56 PUSH16 0x74696E67506F7765723A206F76657266 PUSH13 0x6F77206F6E20746F74616C2076 PUSH16 0x74696E6720706F77657220636F6D7075 PUSH21 0x6174696F6E6D756C7469706C69636174696F6E206F PUSH23 0x6572666C6F77206F6E2077656967687420636F6D707574 PUSH2 0x7469 PUSH16 0x6E57656967687465645374616B696E67 GASPRICE GASPRICE PUSH24 0x656967687465645374616B654279446174653A206D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72566F7465733A KECCAK256 PUSH16 0x766572666C6F77206F6E20746F74616C KECCAK256 PUSH23 0x6F74696E6720706F77657220636F6D7075746174696F6E JUMPI PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A5F746F74616C506F776572427944 PUSH2 0x7465 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72576569676874 PUSH6 0x645374616B65 GASPRICE KECCAK256 PUSH16 0x766572666C6F77206F6E20746F74616C KECCAK256 PUSH24 0x656967687420636F6D7075746174696F6EA365627A7A7231 PC KECCAK256 PUSH16 0x8BD56D11249AC4D39175619CD3525390 0x4D 0x21 0x29 0x4B 0xCA 0xD0 0x22 SWAP1 EXTCODECOPY 0x1E 0x2F 0xAD PUSH16 0x9A3A6C6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "1973:26:59:-;592:15665:60;1973:26:59;;592:15665:60;1973:26:59;;;-1:-1:-1;;;1973:26:59;;;;;;;;;;:::i;:::-;-1:-1:-1;2262:31:59;;;-1:-1:-1;;2262:31:59;;;5091:52;;;-1:-1:-1;;;;;5091:52:59;-1:-1:-1;;;5091:52:59;;;-1:-1:-1;697:12:142;:10;:12::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;592:15665:60;;780:87:137;853:10;780:87;;:::o;592:15665:60:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;592:15665:60;;;-1:-1:-1;592:15665:60;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102315760003560e01c80638da5cb5b11610130578063b1724b46116100b8578063dfb267c21161007c578063dfb267c214610481578063e7a324dc14610494578063e97ffacb1461049c578063f09cfc64146104af578063f2fde38b146104c257610231565b8063b1724b4614610443578063bf626ec11461044b578063cf7b684a14610453578063d27569e714610466578063db27ec181461046e57610231565b806394c2ce58116100ff57806394c2ce58146104055780639929e88614610418578063a58848c514610420578063adae900214610428578063ae81dfe41461043b57610231565b80638da5cb5b146103c25780638dae1b16146103ca5780638f32d59b146103dd5780639436e7d4146103e557610231565b806337e6b1c1116101be5780636b6fde0e116101825780636b6fde0e14610363578063704802751461037657806372ec9795146103895780637ecebe001461039c578063836eebee146103af57610231565b806337e6b1c1146102f6578063429b62e514610309578063450b06011461031c57806362cf8a081461032f57806368cefccc1461034257610231565b806317748adc1161020557806317748adc146102915780631785f53c146102a657806320606b70146102bb5780632522d7ba146102c357806327dd1b00146102d657610231565b8062073f991461023657806303a18fa31461025457806307392cc014610269578063104932cf14610289575b600080fd5b61023e6104d5565b60405161024b9190611c8d565b60405180910390f35b61025c6104db565b60405161024b9190611c9b565b61027c610277366004611735565b6104ea565b60405161024b9190611c7f565b61025c6104ff565b61029961050e565b60405161024b9190611d73565b6102b96102b43660046115c6565b610513565b005b61023e61059b565b6102996102d13660046117a2565b6105b2565b6102e96102e43660046115ec565b610618565b60405161024b9190611c63565b610299610304366004611626565b61063e565b61027c6103173660046115c6565b6106b6565b6102b961032a3660046115c6565b6106cb565b61029961033d366004611753565b610737565b6103556103503660046116d4565b610872565b60405161024b929190611d58565b6103556103713660046116d4565b6108ad565b6102b96103843660046115c6565b6108e8565b61023e610397366004611735565b61095f565b61023e6103aa3660046115c6565b6109aa565b6102996103bd366004611626565b6109bc565b6102e9610a14565b6102996103d8366004611673565b610a23565b61027c610aa5565b6103f86103f3366004611735565b610ac9565b60405161024b9190611d4a565b6103f86104133660046115ec565b610ae1565b61027c610b04565b61025c610b0d565b61027c6104363660046115c6565b610b1c565b6102e9610b31565b61023e610b45565b610299610b4d565b610299610461366004611626565b610b63565b610299610ba0565b6103f861047c3660046115ec565b610ba5565b61035561048f366004611772565b610bc8565b61023e610bfd565b6102996104aa366004611626565b610c09565b6102996104bd366004611753565b610e52565b6102b96104d03660046115c6565b61102c565b60015481565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b6011546001600160a01b031681565b600981565b61051b610aa5565b6105405760405162461bcd60e51b815260040161053790611cfa565b60405180910390fd5b6001600160a01b0381166000908152600f602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f90610590908390611c63565b60405180910390a150565b6040516105a790611c4d565b604051809103902081565b6000806105be8361095f565b905063059fa6008101815b81811161060f57610603846105e583868a63ffffffff1661105c565b604051806080016040528060558152602001611e8a605591396110c2565b935062127500016105c9565b50505092915050565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b60008061064a8361095f565b905063059fa6008101815b8181116106ac57600061066a8883868a610a23565b90506001600160601b038116156106a15761069e85826040518060800160405280604c8152602001611fce604c91396110c2565b94505b506212750001610655565b5050509392505050565b600f6020526000908152604090205460ff1681565b6106d3610aa5565b6106ef5760405162461bcd60e51b815260040161053790611cfa565b6001600160a01b0381166107155760405162461bcd60e51b815260040161053790611cba565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000818310156107595760405162461bcd60e51b815260040161053790611cea565b81830363059fa6008111156107805760405162461bcd60e51b815260040161053790611d0a565b6000620151808263059fa600036001600160601b03168161079d57fe5b049050610869600a621232106001600160601b031661081d600a6009026107ff621232108788026040518060400160405280601f81526020017f756e646572666c6f77206f6e207765696768742063616c63756c6174696f6e008152506110f5565b6040518060600160405280602d8152602001611edf602d9139611134565b6001600160601b03168161082d57fe5b046040518060400160405280601e81526020017f6f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e00008152506110c2565b95945050505050565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b6108f0610aa5565b61090c5760405162461bcd60e51b815260040161053790611cfa565b6001600160a01b0381166000908152600f602052604090819020805460ff19166001179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33990610590908390611c63565b60006001548210156109835760405162461bcd60e51b815260040161053790611cda565b60006212750060015484038161099557fe5b04905060015462127500820201915050919050565b600c6020526000908152604090205481565b6000806109c88361095f565b905063059fa6008101815b8181116106ac57610a08846109ea8984878b611192565b6040518060800160405280604a8152602001611f49604a91396110c2565b935062127500016109d3565b6000546001600160a01b031690565b600080610a318686856111fa565b90506001600160601b03811615610a97576000610a4e8686610737565b9050600a6001600160601b0316610a7e83836040518060600160405280603d8152602001611f0c603d9139611134565b6001600160601b031681610a8e57fe5b04925050610a9c565b600091505b50949350505050565b600080546001600160a01b0316610aba61144f565b6001600160a01b031614905090565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b60055460ff1681565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b600d54600160a01b90046001600160601b031681565b600080610b718585856111fa565b90506001600160601b038116158015610b8d5750610b8d611453565b15610b96575060015b90505b9392505050565b600a81565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b6040516105a790611c58565b6000610c136114d9565b8210610c315760405162461bcd60e51b815260040161053790611d3a565b6001600160a01b038416600090815260096020908152604080832086845290915290205463ffffffff1680610c6a576000915050610b99565b6001600160a01b0385166000908152600860209081526040808320878452825280832063ffffffff600019860181168552925290912054168310610cf6576001600160a01b038516600090815260086020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050610b99565b6001600160a01b0385166000908152600860209081526040808320878452825280832083805290915290205463ffffffff16831015610d39576000915050610b99565b600060001982015b8163ffffffff168163ffffffff161115610e0457600282820363ffffffff16048103610d6b611583565b506001600160a01b03881660009081526008602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415610ddf57602001519450610b999350505050565b805163ffffffff16871115610df657819350610dfd565b6001820392505b5050610d41565b506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b6000610e5c6114d9565b8210610e7a5760405162461bcd60e51b815260040161053790611d2a565b60008381526007602052604090205463ffffffff1680610e9e576000915050611026565b600084815260066020908152604080832063ffffffff600019860181168552925290912054168310610f065760008481526006602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050611026565b600084815260066020908152604080832083805290915290205463ffffffff16831015610f37576000915050611026565b600060001982015b8163ffffffff168163ffffffff161115610ff057600282820363ffffffff16048103610f69611583565b50600087815260066020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415610fcb576020015194506110269350505050565b805163ffffffff16871115610fe257819350610fe9565b6001820392505b5050610f3f565b50600085815260066020908152604080832063ffffffff909416835292905220546001600160601b03600160201b909104169150505b92915050565b611034610aa5565b6110505760405162461bcd60e51b815260040161053790611cfa565b611059816114dd565b50565b6000806110698585610737565b905060006110778685610e52565b9050600a6001600160601b03166110a782846040518060600160405280603b8152602001611f93603b9139611134565b6001600160601b0316816110b757fe5b049695505050505050565b6000838301826001600160601b038087169083161015610a9c5760405162461bcd60e51b81526004016105379190611ca9565b6000836001600160601b0316836001600160601b03161115829061112c5760405162461bcd60e51b81526004016105379190611ca9565b505050900390565b60006001600160601b03841661114c57506000610b99565b8383026001600160601b03808516908087169083168161116857fe5b046001600160601b0316148390610a9c5760405162461bcd60e51b81526004016105379190611ca9565b60008061119f8585610737565b905060006111ae878786610c09565b9050600a6001600160601b03166111de8284604051806080016040528060478152602001611e4360479139611134565b6001600160601b0316816111ee57fe5b04979650505050505050565b60006112046114d9565b82106112225760405162461bcd60e51b815260040161053790611d1a565b61122b8361155e565b6001600160a01b0385166000908152600b6020908152604080832084845290915290205490935063ffffffff1680611267576000915050610b99565b6001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff6000198601811685529252909120541683106112f3576001600160a01b0385166000908152600a6020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050610b99565b6001600160a01b0385166000908152600a60209081526040808320878452825280832083805290915290205463ffffffff16831015611336576000915050610b99565b600060001982015b8163ffffffff168163ffffffff16111561140157600282820363ffffffff16048103611368611583565b506001600160a01b0388166000908152600a602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b031691810191909152908714156113dc57602001519450610b999350505050565b805163ffffffff168711156113f3578193506113fa565b6001820392505b505061133e565b506001600160a01b0386166000908152600a60209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b3390565b60115460405163dbb049d160e01b81526000916001600160a01b03169063dbb049d190611484903390600401611c71565b60206040518083038186803b15801561149c57600080fd5b505afa1580156114b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114d49190810190611717565b905090565b4390565b6001600160a01b0381166115035760405162461bcd60e51b815260040161053790611cca565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061156a8361095f565b905082811461157c5762127500810192505b5090919050565b604080518082019091526000808252602082015290565b803561102681611e13565b805161102681611e27565b803561102681611e30565b803561102681611e39565b6000602082840312156115d857600080fd5b60006115e4848461159a565b949350505050565b600080604083850312156115ff57600080fd5b600061160b858561159a565b925050602061161c858286016115b0565b9150509250929050565b60008060006060848603121561163b57600080fd5b6000611647868661159a565b9350506020611658868287016115b0565b9250506040611669868287016115b0565b9150509250925092565b6000806000806080858703121561168957600080fd5b6000611695878761159a565b94505060206116a6878288016115b0565b93505060406116b7878288016115b0565b92505060606116c8878288016115b0565b91505092959194509250565b6000806000606084860312156116e957600080fd5b60006116f5868661159a565b9350506020611706868287016115b0565b9250506040611669868287016115bb565b60006020828403121561172957600080fd5b60006115e484846115a5565b60006020828403121561174757600080fd5b60006115e484846115b0565b6000806040838503121561176657600080fd5b600061160b85856115b0565b6000806040838503121561178557600080fd5b600061179185856115b0565b925050602061161c858286016115bb565b600080604083850312156117b557600080fd5b600061160b85856115bb565b6117ca81611dc7565b82525050565b6117ca81611d93565b6117ca81611d9e565b6117ca81611da3565b6117ca81611dce565b60006117ff82611d81565b6118098185611d85565b9350611819818560208601611dd9565b61182281611e09565b9093019392505050565b6000611839602083611d85565b7f76657374696e67207265676973747279206164647265737320696e76616c6964815260200192915050565b6000611872602683611d85565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006118ba604d83611d85565b7f57656967687465645374616b696e673a3a74696d657374616d70546f4c6f636b81527f446174653a2074696d657374616d70206c696573206265666f726520636f6e7460208201526c3930b1ba1031b932b0ba34b7b760991b604082015260600192915050565b600061192f604c83611d85565b7f57656967687465645374616b696e673a3a636f6d70757465576569676874427981527f446174653a2064617465206e6565647320746f2062652062696767657220746860208201526b616e2073746172744461746560a01b604082015260600192915050565b60006119a3604383611d8e565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000611a0e600c83611d85565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000611a36604d83611d85565b7f5374616b696e673a3a636f6d707574655765696768744279446174653a72656d81527f61696e696e672074696d652063616e277420626520626967676572207468616e60208201526c1036b0bc10323ab930ba34b7b760991b604082015260600192915050565b6000611aab604b83611d8e565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e7460208201526a323536206578706972792960a81b6040820152604b0192915050565b6000611b1e603d83611d85565b7f57656967687465645374616b696e673a3a6765745072696f725573657253746181527f6b65416e64446174653a206e6f74207965742064657465726d696e6564000000602082015260400192915050565b6000611b7d603f83611d85565b7f57656967687465645374616b696e673a3a6765745072696f72546f74616c537481527f616b6573466f72446174653a206e6f74207965742064657465726d696e656400602082015260400192915050565b6000611bdc604483611d85565b7f57656967687465645374616b696e673a3a6765745072696f725374616b65427981527f44617465466f7244656c6567617465653a206e6f74207965742064657465726d6020820152631a5b995960e21b604082015260600192915050565b6117ca81611db2565b6117ca81611dbb565b600061102682611996565b600061102682611a9e565b6020810161102682846117d0565b6020810161102682846117c1565b6020810161102682846117d9565b6020810161102682846117e2565b6020810161102682846117eb565b60208082528101610b9981846117f4565b602080825281016110268161182c565b6020808252810161102681611865565b60208082528101611026816118ad565b6020808252810161102681611922565b6020808252810161102681611a01565b6020808252810161102681611a29565b6020808252810161102681611b11565b6020808252810161102681611b70565b6020808252810161102681611bcf565b602081016110268284611c3b565b60408101611d668285611c3b565b610b996020830184611c44565b602081016110268284611c44565b5190565b90815260200190565b919050565b600061102682611da6565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b6001600160601b031690565b6000611026825b600061102682611d93565b60005b83811015611df4578181015183820152602001611ddc565b83811115611e03576000848401525b50505050565b601f01601f191690565b611e1c81611d93565b811461105957600080fd5b611e1c81611d9e565b611e1c81611da3565b611e1c81611db256fe57656967687465645374616b696e673a3a5f746f74616c506f776572427944617465466f7244656c6567617465653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f72546f74616c566f74696e67506f7765723a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e6d756c7469706c69636174696f6e206f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e57656967687465645374616b696e673a3a77656967687465645374616b654279446174653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f72566f7465733a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e57656967687465645374616b696e673a3a5f746f74616c506f7765724279446174653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f7257656967687465645374616b653a206f766572666c6f77206f6e20746f74616c2077656967687420636f6d7075746174696f6ea365627a7a723158206f8bd56d11249ac4d39175619cd35253904d21294bcad022903c1e2fad6f9a3a6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x231 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB1724B46 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xDFB267C2 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0x481 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xE97FFACB EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0xF09CFC64 EQ PUSH2 0x4AF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x4C2 JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH4 0xB1724B46 EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0x44B JUMPI DUP1 PUSH4 0xCF7B684A EQ PUSH2 0x453 JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0x46E JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH4 0x94C2CE58 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0x405 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0x420 JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0x43B JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x8DAE1B16 EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0x3E5 JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH4 0x37E6B1C1 GT PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6B6FDE0E GT PUSH2 0x182 JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0x72EC9795 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x836EEBEE EQ PUSH2 0x3AF JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH4 0x37E6B1C1 EQ PUSH2 0x2F6 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0x450B0601 EQ PUSH2 0x31C JUMPI DUP1 PUSH4 0x62CF8A08 EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x342 JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH4 0x17748ADC GT PUSH2 0x205 JUMPI DUP1 PUSH4 0x17748ADC EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x2A6 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x2522D7BA EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x2D6 JUMPI PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x254 JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x269 JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x289 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23E PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP2 SWAP1 PUSH2 0x1C8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25C PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP2 SWAP1 PUSH2 0x1C9B JUMP JUMPDEST PUSH2 0x27C PUSH2 0x277 CALLDATASIZE PUSH1 0x4 PUSH2 0x1735 JUMP JUMPDEST PUSH2 0x4EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP2 SWAP1 PUSH2 0x1C7F JUMP JUMPDEST PUSH2 0x25C PUSH2 0x4FF JUMP JUMPDEST PUSH2 0x299 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP2 SWAP1 PUSH2 0x1D73 JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x2B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x513 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x23E PUSH2 0x59B JUMP JUMPDEST PUSH2 0x299 PUSH2 0x2D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x17A2 JUMP JUMPDEST PUSH2 0x5B2 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x2E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x15EC JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP2 SWAP1 PUSH2 0x1C63 JUMP JUMPDEST PUSH2 0x299 PUSH2 0x304 CALLDATASIZE PUSH1 0x4 PUSH2 0x1626 JUMP JUMPDEST PUSH2 0x63E JUMP JUMPDEST PUSH2 0x27C PUSH2 0x317 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x6B6 JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x32A CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x6CB JUMP JUMPDEST PUSH2 0x299 PUSH2 0x33D CALLDATASIZE PUSH1 0x4 PUSH2 0x1753 JUMP JUMPDEST PUSH2 0x737 JUMP JUMPDEST PUSH2 0x355 PUSH2 0x350 CALLDATASIZE PUSH1 0x4 PUSH2 0x16D4 JUMP JUMPDEST PUSH2 0x872 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP3 SWAP2 SWAP1 PUSH2 0x1D58 JUMP JUMPDEST PUSH2 0x355 PUSH2 0x371 CALLDATASIZE PUSH1 0x4 PUSH2 0x16D4 JUMP JUMPDEST PUSH2 0x8AD JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x384 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST PUSH2 0x23E PUSH2 0x397 CALLDATASIZE PUSH1 0x4 PUSH2 0x1735 JUMP JUMPDEST PUSH2 0x95F JUMP JUMPDEST PUSH2 0x23E PUSH2 0x3AA CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x9AA JUMP JUMPDEST PUSH2 0x299 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x1626 JUMP JUMPDEST PUSH2 0x9BC JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x299 PUSH2 0x3D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x27C PUSH2 0xAA5 JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x3F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1735 JUMP JUMPDEST PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24B SWAP2 SWAP1 PUSH2 0x1D4A JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x413 CALLDATASIZE PUSH1 0x4 PUSH2 0x15EC JUMP JUMPDEST PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x27C PUSH2 0xB04 JUMP JUMPDEST PUSH2 0x25C PUSH2 0xB0D JUMP JUMPDEST PUSH2 0x27C PUSH2 0x436 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0xB1C JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0xB31 JUMP JUMPDEST PUSH2 0x23E PUSH2 0xB45 JUMP JUMPDEST PUSH2 0x299 PUSH2 0xB4D JUMP JUMPDEST PUSH2 0x299 PUSH2 0x461 CALLDATASIZE PUSH1 0x4 PUSH2 0x1626 JUMP JUMPDEST PUSH2 0xB63 JUMP JUMPDEST PUSH2 0x299 PUSH2 0xBA0 JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x47C CALLDATASIZE PUSH1 0x4 PUSH2 0x15EC JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x355 PUSH2 0x48F CALLDATASIZE PUSH1 0x4 PUSH2 0x1772 JUMP JUMPDEST PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0x23E PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x299 PUSH2 0x4AA CALLDATASIZE PUSH1 0x4 PUSH2 0x1626 JUMP JUMPDEST PUSH2 0xC09 JUMP JUMPDEST PUSH2 0x299 PUSH2 0x4BD CALLDATASIZE PUSH1 0x4 PUSH2 0x1753 JUMP JUMPDEST PUSH2 0xE52 JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x4D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x102C JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0x51B PUSH2 0xAA5 JUMP JUMPDEST PUSH2 0x540 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CFA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0x590 SWAP1 DUP4 SWAP1 PUSH2 0x1C63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A7 SWAP1 PUSH2 0x1C4D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5BE DUP4 PUSH2 0x95F JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x60F JUMPI PUSH2 0x603 DUP5 PUSH2 0x5E5 DUP4 DUP7 DUP11 PUSH4 0xFFFFFFFF AND PUSH2 0x105C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x55 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E8A PUSH1 0x55 SWAP2 CODECOPY PUSH2 0x10C2 JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x5C9 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x64A DUP4 PUSH2 0x95F JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x6AC JUMPI PUSH1 0x0 PUSH2 0x66A DUP9 DUP4 DUP7 DUP11 PUSH2 0xA23 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x6A1 JUMPI PUSH2 0x69E DUP6 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FCE PUSH1 0x4C SWAP2 CODECOPY PUSH2 0x10C2 JUMP JUMPDEST SWAP5 POP JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0x655 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x6D3 PUSH2 0xAA5 JUMP JUMPDEST PUSH2 0x6EF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x715 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CBA JUMP JUMPDEST PUSH1 0x11 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT ISZERO PUSH2 0x759 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CEA JUMP JUMPDEST DUP2 DUP4 SUB PUSH4 0x59FA600 DUP2 GT ISZERO PUSH2 0x780 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1D0A JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15180 DUP3 PUSH4 0x59FA600 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x79D JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x869 PUSH1 0xA PUSH3 0x123210 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x81D PUSH1 0xA PUSH1 0x9 MUL PUSH2 0x7FF PUSH3 0x123210 DUP8 DUP9 MUL PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x756E646572666C6F77206F6E207765696768742063616C63756C6174696F6E00 DUP2 MSTORE POP PUSH2 0x10F5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1EDF PUSH1 0x2D SWAP2 CODECOPY PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x82D JUMPI INVALID JUMPDEST DIV PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6F766572666C6F77206F6E2077656967687420636F6D7075746174696F6E0000 DUP2 MSTORE POP PUSH2 0x10C2 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH2 0x8F0 PUSH2 0xAA5 JUMP JUMPDEST PUSH2 0x90C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0x590 SWAP1 DUP4 SWAP1 PUSH2 0x1C63 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD DUP3 LT ISZERO PUSH2 0x983 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CDA JUMP JUMPDEST PUSH1 0x0 PUSH3 0x127500 PUSH1 0x1 SLOAD DUP5 SUB DUP2 PUSH2 0x995 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 SLOAD PUSH3 0x127500 DUP3 MUL ADD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x9C8 DUP4 PUSH2 0x95F JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x6AC JUMPI PUSH2 0xA08 DUP5 PUSH2 0x9EA DUP10 DUP5 DUP8 DUP12 PUSH2 0x1192 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F49 PUSH1 0x4A SWAP2 CODECOPY PUSH2 0x10C2 JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x9D3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA31 DUP7 DUP7 DUP6 PUSH2 0x11FA JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0xA97 JUMPI PUSH1 0x0 PUSH2 0xA4E DUP7 DUP7 PUSH2 0x737 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0xA7E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F0C PUSH1 0x3D SWAP2 CODECOPY PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0xA8E JUMPI INVALID JUMPDEST DIV SWAP3 POP POP PUSH2 0xA9C JUMP JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xABA PUSH2 0x144F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB71 DUP6 DUP6 DUP6 PUSH2 0x11FA JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO DUP1 ISZERO PUSH2 0xB8D JUMPI POP PUSH2 0xB8D PUSH2 0x1453 JUMP JUMPDEST ISZERO PUSH2 0xB96 JUMPI POP PUSH1 0x1 JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A7 SWAP1 PUSH2 0x1C58 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC13 PUSH2 0x14D9 JUMP JUMPDEST DUP3 LT PUSH2 0xC31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1D3A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0xC6A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0xCF6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0xD39 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0xE04 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0xD6B PUSH2 0x1583 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0xDDF JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0xB99 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0xDF6 JUMPI DUP2 SWAP4 POP PUSH2 0xDFD JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0xD41 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE5C PUSH2 0x14D9 JUMP JUMPDEST DUP3 LT PUSH2 0xE7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1D2A JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0xE9E JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1026 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0xF06 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x1026 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0xF37 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1026 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0xFF0 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0xF69 PUSH2 0x1583 JUMP JUMPDEST POP PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0xFCB JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x1026 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0xFE2 JUMPI DUP2 SWAP4 POP PUSH2 0xFE9 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0xF3F JUMP JUMPDEST POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1034 PUSH2 0xAA5 JUMP JUMPDEST PUSH2 0x1050 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CFA JUMP JUMPDEST PUSH2 0x1059 DUP2 PUSH2 0x14DD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1069 DUP6 DUP6 PUSH2 0x737 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1077 DUP7 DUP6 PUSH2 0xE52 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x10A7 DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F93 PUSH1 0x3B SWAP2 CODECOPY PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x10B7 JUMPI INVALID JUMPDEST DIV SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP2 SWAP1 PUSH2 0x1CA9 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO DUP3 SWAP1 PUSH2 0x112C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP2 SWAP1 PUSH2 0x1CA9 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x114C JUMPI POP PUSH1 0x0 PUSH2 0xB99 JUMP JUMPDEST DUP4 DUP4 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP6 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP4 AND DUP2 PUSH2 0x1168 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND EQ DUP4 SWAP1 PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP2 SWAP1 PUSH2 0x1CA9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x119F DUP6 DUP6 PUSH2 0x737 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11AE DUP8 DUP8 DUP7 PUSH2 0xC09 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x11DE DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E43 PUSH1 0x47 SWAP2 CODECOPY PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x11EE JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1204 PUSH2 0x14D9 JUMP JUMPDEST DUP3 LT PUSH2 0x1222 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1D1A JUMP JUMPDEST PUSH2 0x122B DUP4 PUSH2 0x155E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP4 POP PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x1267 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x12F3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x1336 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x1401 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x1368 PUSH2 0x1583 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x13DC JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0xB99 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x13F3 JUMPI DUP2 SWAP4 POP PUSH2 0x13FA JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x133E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x40 MLOAD PUSH4 0xDBB049D1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xDBB049D1 SWAP1 PUSH2 0x1484 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1C71 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x14D4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1717 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1503 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x537 SWAP1 PUSH2 0x1CCA JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x156A DUP4 PUSH2 0x95F JUMP JUMPDEST SWAP1 POP DUP3 DUP2 EQ PUSH2 0x157C JUMPI PUSH3 0x127500 DUP2 ADD SWAP3 POP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1026 DUP2 PUSH2 0x1E13 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1026 DUP2 PUSH2 0x1E27 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1026 DUP2 PUSH2 0x1E30 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1026 DUP2 PUSH2 0x1E39 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x15E4 DUP5 DUP5 PUSH2 0x159A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x160B DUP6 DUP6 PUSH2 0x159A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x161C DUP6 DUP3 DUP7 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x163B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1647 DUP7 DUP7 PUSH2 0x159A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1658 DUP7 DUP3 DUP8 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1669 DUP7 DUP3 DUP8 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1695 DUP8 DUP8 PUSH2 0x159A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x16A6 DUP8 DUP3 DUP9 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x16B7 DUP8 DUP3 DUP9 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x16C8 DUP8 DUP3 DUP9 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x16E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x16F5 DUP7 DUP7 PUSH2 0x159A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1706 DUP7 DUP3 DUP8 ADD PUSH2 0x15B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1669 DUP7 DUP3 DUP8 ADD PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1729 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x15E4 DUP5 DUP5 PUSH2 0x15A5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x15E4 DUP5 DUP5 PUSH2 0x15B0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1766 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x160B DUP6 DUP6 PUSH2 0x15B0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1785 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1791 DUP6 DUP6 PUSH2 0x15B0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x161C DUP6 DUP3 DUP7 ADD PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x17B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x160B DUP6 DUP6 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1DC7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1D93 JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1DA3 JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1DCE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17FF DUP3 PUSH2 0x1D81 JUMP JUMPDEST PUSH2 0x1809 DUP2 DUP6 PUSH2 0x1D85 JUMP JUMPDEST SWAP4 POP PUSH2 0x1819 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1DD9 JUMP JUMPDEST PUSH2 0x1822 DUP2 PUSH2 0x1E09 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1839 PUSH1 0x20 DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x76657374696E67207265676973747279206164647265737320696E76616C6964 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1872 PUSH1 0x26 DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18BA PUSH1 0x4D DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A74696D657374616D70546F4C6F636B DUP2 MSTORE PUSH32 0x446174653A2074696D657374616D70206C696573206265666F726520636F6E74 PUSH1 0x20 DUP3 ADD MSTORE PUSH13 0x3930B1BA1031B932B0BA34B7B7 PUSH1 0x99 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x192F PUSH1 0x4C DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A636F6D707574655765696768744279 DUP2 MSTORE PUSH32 0x446174653A2064617465206E6565647320746F20626520626967676572207468 PUSH1 0x20 DUP3 ADD MSTORE PUSH12 0x616E20737461727444617465 PUSH1 0xA0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19A3 PUSH1 0x43 DUP4 PUSH2 0x1D8E JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A0E PUSH1 0xC DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A36 PUSH1 0x4D DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x5374616B696E673A3A636F6D707574655765696768744279446174653A72656D DUP2 MSTORE PUSH32 0x61696E696E672074696D652063616E277420626520626967676572207468616E PUSH1 0x20 DUP3 ADD MSTORE PUSH13 0x1036B0BC10323AB930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AAB PUSH1 0x4B DUP4 PUSH2 0x1D8E JUMP JUMPDEST PUSH32 0x44656C65676174696F6E28616464726573732064656C6567617465652C75696E DUP2 MSTORE PUSH32 0x74323536206C6F636B446174652C75696E74323536206E6F6E63652C75696E74 PUSH1 0x20 DUP3 ADD MSTORE PUSH11 0x3235362065787069727929 PUSH1 0xA8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x4B ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B1E PUSH1 0x3D DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A6765745072696F7255736572537461 DUP2 MSTORE PUSH32 0x6B65416E64446174653A206E6F74207965742064657465726D696E6564000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B7D PUSH1 0x3F DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A6765745072696F72546F74616C5374 DUP2 MSTORE PUSH32 0x616B6573466F72446174653A206E6F74207965742064657465726D696E656400 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BDC PUSH1 0x44 DUP4 PUSH2 0x1D85 JUMP JUMPDEST PUSH32 0x57656967687465645374616B696E673A3A6765745072696F725374616B654279 DUP2 MSTORE PUSH32 0x44617465466F7244656C6567617465653A206E6F74207965742064657465726D PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x1A5B9959 PUSH1 0xE2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1DB2 JUMP JUMPDEST PUSH2 0x17CA DUP2 PUSH2 0x1DBB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1026 DUP3 PUSH2 0x1996 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1026 DUP3 PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x17D0 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x17C1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x17D9 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x17E2 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x17EB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xB99 DUP2 DUP5 PUSH2 0x17F4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x182C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1865 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x18AD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1922 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1A01 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1B11 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1B70 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1026 DUP2 PUSH2 0x1BCF JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x1C3B JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x1D66 DUP3 DUP6 PUSH2 0x1C3B JUMP JUMPDEST PUSH2 0xB99 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1C44 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1026 DUP3 DUP5 PUSH2 0x1C44 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1026 DUP3 PUSH2 0x1DA6 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1026 DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x1026 DUP3 PUSH2 0x1D93 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DDC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x1E1C DUP2 PUSH2 0x1D93 JUMP JUMPDEST DUP2 EQ PUSH2 0x1059 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E1C DUP2 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x1E1C DUP2 PUSH2 0x1DA3 JUMP JUMPDEST PUSH2 0x1E1C DUP2 PUSH2 0x1DB2 JUMP INVALID JUMPI PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A5F746F74616C506F776572427944 PUSH2 0x7465 CHAINID PUSH16 0x7244656C6567617465653A206D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72546F74616C56 PUSH16 0x74696E67506F7765723A206F76657266 PUSH13 0x6F77206F6E20746F74616C2076 PUSH16 0x74696E6720706F77657220636F6D7075 PUSH21 0x6174696F6E6D756C7469706C69636174696F6E206F PUSH23 0x6572666C6F77206F6E2077656967687420636F6D707574 PUSH2 0x7469 PUSH16 0x6E57656967687465645374616B696E67 GASPRICE GASPRICE PUSH24 0x656967687465645374616B654279446174653A206D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72566F7465733A KECCAK256 PUSH16 0x766572666C6F77206F6E20746F74616C KECCAK256 PUSH23 0x6F74696E6720706F77657220636F6D7075746174696F6E JUMPI PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A5F746F74616C506F776572427944 PUSH2 0x7465 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72576569676874 PUSH6 0x645374616B65 GASPRICE KECCAK256 PUSH16 0x766572666C6F77206F6E20746F74616C KECCAK256 PUSH24 0x656967687420636F6D7075746174696F6EA365627A7A7231 PC KECCAK256 PUSH16 0x8BD56D11249AC4D39175619CD3525390 0x4D 0x21 0x29 0x4B 0xCA 0xD0 0x22 SWAP1 EXTCODECOPY 0x1E 0x2F 0xAD PUSH16 0x9A3A6C6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "592:15665:60:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;592:15665:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:24:59;;;:::i;:::-;;;;;;;;;;;;;;;;4986:34;;;:::i;:::-;;;;;;;;5691:49;;;;;;;;;:::i;:::-;;;;;;;;5786:48;;;:::i;1160:44::-;;;:::i;:::-;;;;;;;;15926:113:60;;;;;;;;;:::i;:::-;;2358:122:59;;;:::i;1492:621:60:-;;;;;;;;;:::i;2115:64:59:-;;;;;;;;;:::i;:::-;;;;;;;;8916:672:60;;;;;;;;;:::i;5570:38:59:-;;;;;;;;;:::i;976:236:60:-;;;;;;;;;:::i;13498:830::-;;;;;;;;;:::i;4346:99:59:-;;;;;;;;;:::i;:::-;;;;;;;;;3804:103;;;;;;;;;:::i;15697:107:60:-;;;;;;;;;:::i;14674:564::-;;;;;;;;;:::i;4774:41:59:-;;;;;;;;;:::i;5069:614:60:-;;;;;;;;;:::i;851:68:142:-;;;:::i;10010:443:60:-;;;;;;;;;:::i;1134:83:142:-;;;:::i;3472:60:59:-;;;;;;;;;:::i;:::-;;;;;;;;4062:83;;;;;;;;;:::i;2262:31::-;;;:::i;2040:22::-;;;:::i;5310:48::-;;;;;;;;;:::i;2805:33::-;;;:::i;1509:48::-;;;:::i;5091:52::-;;;:::i;10922:454:60:-;;;;;;;;;:::i;1409:41:59:-;;;:::i;4587:79::-;;;;;;;;;:::i;3264:80::-;;;;;;;;;:::i;2566:134::-;;;:::i;6946:1208:60:-;;;;;;;;;:::i;3381:1079::-;;;;;;;;;:::i;1351:98:142:-;;;;;;;;;:::i;1945:24:59:-;;;;:::o;4986:34::-;;;-1:-1:-1;;;;;4986:34:59;;:::o;5691:49::-;;;;;;;;;;;;;;;:::o;5786:48::-;;;-1:-1:-1;;;;;5786:48:59;;:::o;1160:44::-;1203:1;1160:44;:::o;15926:113:60:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15984:14:60;;16001:5;15984:14;;;:6;:14;;;;;;;:22;;-1:-1:-1;;15984:22:60;;;16015:20;;;;;15991:6;;16015:20;;;;;;;;;;15926:113;:::o;2358:122:59:-;2400:80;;;;;;;;;;;;;;2358:122;:::o;1492:621:60:-;1581:23;1746:13;1762:25;1782:4;1762:19;:25::i;:::-;1746:41;-1:-1:-1;1548:9:59;1805:20:60;;1746:41;1860:250;1889:3;1884:1;:8;1860:250;;1934:171;1945:16;1967:40;1985:1;1988:5;1995:11;1967:40;;:17;:40::i;:::-;1934:171;;;;;;;;;;;;;;;;;:5;:171::i;:::-;1915:190;-1:-1:-1;1041:7:59;1894:14:60;1860:250;;;;1492:621;;;;;;:::o;2115:64:59:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2115:64:59;;:::o;8916:672:60:-;9029:12;9183:13;9199:25;9219:4;9199:19;:25::i;:::-;9183:41;-1:-1:-1;1548:9:59;9242:20:60;;9183:41;9297:288;9326:3;9321:1;:8;9297:288;;9352:20;9375:51;9395:7;9404:1;9407:5;9414:11;9375:19;:51::i;:::-;9352:74;-1:-1:-1;;;;;;9435:17:60;;;9431:150;;9468:107;9474:5;9481:13;9468:107;;;;;;;;;;;;;;;;;:5;:107::i;:::-;9460:115;;9431:150;-1:-1:-1;1041:7:59;9331:14:60;9297:288;;;;8916:672;;;;;;;:::o;5570:38:59:-;;;;;;;;;;;;;;;:::o;976:236:60:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;1066:35:60;;1058:80;;;;-1:-1:-1;;;1058:80:60;;;;;;;;;1142:20;:66;;-1:-1:-1;;;;;;1142:66:60;-1:-1:-1;;;;;1142:66:60;;;;;;;;;;976:236::o;13498:830::-;13581:13;13616:9;13608:4;:17;;13600:106;;;;-1:-1:-1;;;13600:106:60;;;;;;;;;13735:16;;;1548:9:59;13764:29:60;-1:-1:-1;13764:29:60;13756:119;;;;-1:-1:-1;;;13756:119:60;;;;;;;;;13920:8;13971:6;13953:13;1548:9:59;13938:28:60;-1:-1:-1;;;;;13931:47:60;;;;;;;13920:58;;14059:265;1448:2:59;1635:11;-1:-1:-1;;;;;14087:196:60;:175;1448:2:59;1203:1;14098:33:60;14137:67;1635:11:59;14167:1:60;14163;:5;14137:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;14087:175;;;;;;;;;;;;;;;;;:5;:175::i;:::-;-1:-1:-1;;;;;14087:196:60;;;;;;;14059:265;;;;;;;;;;;;;;;;;:5;:265::i;:::-;14050:274;13498:830;-1:-1:-1;;;;;13498:830:60:o;4346:99:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4346:99:59;;-1:-1:-1;;;;;4346:99:59;;:::o;3804:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3804:103:59;;-1:-1:-1;;;;;3804:103:59;;:::o;15697:107:60:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;15752:14:60;;;;;;:6;:14;;;;;;;:21;;-1:-1:-1;;15752:21:60;15769:4;15752:21;;;15782:18;;;;;15759:6;;15782:18;;14674:564;14743:16;14786:9;;14773;:22;;14765:112;;;;-1:-1:-1;;;14765:112:60;;;;;;;;;15115:25;1041:7:59;15156:9:60;;15144;:21;15143:35;;;;;;15115:63;;15225:9;;1041:7:59;15193:17:60;:29;:41;15182:52;;14674:564;;;;:::o;4774:41:59:-;;;;;;;;;;;;;:::o;5069:614:60:-;5174:12;5328:13;5344:25;5364:4;5344:19;:25::i;:::-;5328:41;-1:-1:-1;1548:9:59;5387:20:60;;5328:41;5442:238;5471:3;5466:1;:8;5442:238;;5505:170;5516:5;5527:61;5557:7;5566:1;5569:5;5576:11;5527:29;:61::i;:::-;5505:170;;;;;;;;;;;;;;;;;:5;:170::i;:::-;5497:178;-1:-1:-1;1041:7:59;5476:14:60;5442:238;;851:68:142;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;10010:443:60:-;10142:12;10160:13;10176:52;10201:7;10210:4;10216:11;10176:24;:52::i;:::-;10160:68;-1:-1:-1;;;;;;10236:10:60;;;10232:218;;10253:13;10269:36;10289:4;10295:9;10269:19;:36::i;:::-;10253:52;;1448:2:59;-1:-1:-1;;;;;10318:102:60;:86;10324:6;10332;10318:86;;;;;;;;;;;;;;;;;:5;:86::i;:::-;-1:-1:-1;;;;;10318:102:60;;;;;;;10310:110;;10232:218;;;;10444:1;10436:9;;10232:218;10010:443;;;;;;;:::o;1134:83:142:-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;3472:60:59:-;;;;;;;;;;;;;;;:::o;4062:83::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2262:31::-;;;;;;:::o;2040:22::-;;;-1:-1:-1;;;;;2040:22:59;;:::o;5310:48::-;;;;;;;;;;;;;;;:::o;2805:33::-;;;;;;-1:-1:-1;;;;;2805:33:59;;:::o;1509:48::-;1548:9;1509:48;:::o;5091:52::-;;;-1:-1:-1;;;5091:52:59;;-1:-1:-1;;;;;5091:52:59;;:::o;10922:454:60:-;11039:6;11051:17;11071:52;11096:7;11105:4;11111:11;11071:24;:52::i;:::-;11051:72;-1:-1:-1;;;;;;11287:15:60;;;:39;;;;;11306:20;:18;:20::i;:::-;11283:69;;;-1:-1:-1;11346:1:60;11283:69;11362:10;-1:-1:-1;10922:454:60;;;;;;:::o;1409:41:59:-;1448:2;1409:41;:::o;4587:79::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3264:80::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3264:80:59;;-1:-1:-1;;;;;3264:80:59;;:::o;2566:134::-;2612:88;;;;;;6946:1208:60;7069:6;7103:24;:22;:24::i;:::-;7089:11;:38;7081:119;;;;-1:-1:-1;;;7081:119:60;;;;;;;;;-1:-1:-1;;;;;7227:38:60;;7205:19;7227:38;;;:29;:38;;;;;;;;:44;;;;;;;;;;;7279:17;7275:41;;7310:1;7303:8;;;;;7275:41;-1:-1:-1;;;;;7368:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:59;-1:-1:-1;;7410:16:60;;7368:59;;;;;;;;;:69;;:84;-1:-1:-1;7364:172:60;;-1:-1:-1;;;;;7466:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;-1:-1:-1;;7508:16:60;;;;7466:59;;;;;;;;:65;-1:-1:-1;;;7466:65:60;;-1:-1:-1;;;;;7466:65:60;;-1:-1:-1;7459:72:60;;7364:172;-1:-1:-1;;;;;7589:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:44;;;;;;;;:54;:44;:54;:68;-1:-1:-1;7585:92:60;;;7671:1;7664:8;;;;;7585:92;7681:12;-1:-1:-1;;7716:16:60;;7736:350;7751:5;7743:13;;:5;:13;;;7736:350;;;7805:1;7788:13;;;7787:19;;;7779:27;;7845:20;;:::i;:::-;-1:-1:-1;;;;;;7868:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:49;;;;;;;;;;;;;7845:72;;;;;;;;;;;;;;;-1:-1:-1;;;7845:72:60;;;-1:-1:-1;;;;;7845:72:60;;;;;;;;;7926:27;;7922:160;;;7968:8;;;;-1:-1:-1;7961:15:60;;-1:-1:-1;;;;7961:15:60;7922:160;7992:12;;:26;;;-1:-1:-1;7988:94:60;;;8034:6;8026:14;;7988:94;;;8075:1;8066:6;:10;8058:18;;7988:94;7736:350;;;;;-1:-1:-1;;;;;;8096:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:48;;;;;;;;;;:54;-1:-1:-1;;;;;;;;8096:54:60;;;;;-1:-1:-1;;6946:1208:60;;;;;:::o;3381:1079::-;3473:6;3507:24;:22;:24::i;:::-;3493:11;:38;3485:114;;;;-1:-1:-1;;;3485:114:60;;;;;;;;;3604:19;3626:32;;;:26;:32;;;;;;;;3666:17;3662:41;;3697:1;3690:8;;;;;3662:41;3748:29;;;;:23;:29;;;;;;;;:47;-1:-1:-1;;3778:16:60;;3748:47;;;;;;;;;:57;;:72;-1:-1:-1;3744:148:60;;3834:29;;;;:23;:29;;;;;;;;-1:-1:-1;;3864:16:60;;;;3834:47;;;;;;;;:53;-1:-1:-1;;;3834:53:60;;-1:-1:-1;;;;;3834:53:60;;-1:-1:-1;3827:60:60;;3744:148;3938:29;;;;:23;:29;;;;;;;;:32;;;;;;;;:42;:32;:42;:56;-1:-1:-1;3934:80:60;;;4008:1;4001:8;;;;;3934:80;4018:12;-1:-1:-1;;4053:16:60;;4073:331;4088:5;4080:13;;:5;:13;;;4073:331;;;4142:1;4125:13;;;4124:19;;;4116:27;;4175:20;;:::i;:::-;-1:-1:-1;4198:29:60;;;;:23;:29;;;;;;;;:37;;;;;;;;;;;;;4175:60;;;;;;;;;;;;;;;-1:-1:-1;;;4175:60:60;;;-1:-1:-1;;;;;4175:60:60;;;;;;;;;4244:27;;4240:160;;;4286:8;;;;-1:-1:-1;4279:15:60;;-1:-1:-1;;;;4279:15:60;4240:160;4310:12;;:26;;;-1:-1:-1;4306:94:60;;;4352:6;4344:14;;4306:94;;;4393:1;4384:6;:10;4376:18;;4306:94;4073:331;;;;;-1:-1:-1;4414:29:60;;;;:23;:29;;;;;;;;:36;;;;;;;;;;:42;-1:-1:-1;;;;;;;;4414:42:60;;;;;-1:-1:-1;;3381:1079:60;;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;2419:430:60:-;2532:12;2550:13;2566:36;2586:4;2592:9;2566:19;:36::i;:::-;2550:52;;2606:13;2622:45;2649:4;2655:11;2622:26;:45::i;:::-;2606:61;;1448:2:59;-1:-1:-1;;;;;2745:100:60;:84;2751:6;2759;2745:84;;;;;;;;;;;;;;;;;:5;:84::i;:::-;-1:-1:-1;;;;;2745:100:60;;;;;;;;2419:430;-1:-1:-1;;;;;;2419:430:60:o;1516:172:56:-;1611:6;1634:5;;;1659:12;-1:-1:-1;;;;;1651:6:56;;;;;;;;1643:29;;;;-1:-1:-1;;;1643:29:56;;;;;;;;;1975:156;2070:6;2095:1;-1:-1:-1;;;;;2090:6:56;:1;-1:-1:-1;;;;;2090:6:56;;;2098:12;2082:29;;;;;-1:-1:-1;;;2082:29:56;;;;;;;;;;-1:-1:-1;;;2122:5:56;;;1975:156::o;2411:211::-;2506:6;-1:-1:-1;;;;;2522:6:56;;2518:30;;-1:-1:-1;2542:1:56;2535:8;;2518:30;2563:5;;;-1:-1:-1;;;;;2580:10:56;;;;:5;;;;;;;;;;;;-1:-1:-1;;;;;2580:10:56;;2592:12;2572:33;;;;;-1:-1:-1;;;2572:33:56;;;;;;;;;5989:421:60;6133:12;6151:13;6167:36;6187:4;6193:9;6167:19;:36::i;:::-;6151:52;;6207:13;6223:59;6255:7;6264:4;6270:11;6223:31;:59::i;:::-;6207:75;;1448:2:59;-1:-1:-1;;;;;6294:112:60;:96;6300:6;6308;6294:96;;;;;;;;;;;;;;;;;:5;:96::i;:::-;-1:-1:-1;;;;;6294:112:60;;;;;;;;5989:421;-1:-1:-1;;;;;;;5989:421:60:o;11735:1209::-;11853:6;11887:24;:22;:24::i;:::-;11873:11;:38;11865:112;;;;-1:-1:-1;;;11865:112:60;;;;;;;;;11989:26;12010:4;11989:20;:26::i;:::-;-1:-1:-1;;;;;12041:34:60;;12019:19;12041:34;;;:25;:34;;;;;;;;:40;;;;;;;;;11982:33;;-1:-1:-1;12041:40:60;;12089:17;12085:41;;12120:1;12113:8;;;;;12085:41;-1:-1:-1;;;;;12178:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:55;-1:-1:-1;;12216:16:60;;12178:55;;;;;;;;;:65;;:80;-1:-1:-1;12174:164:60;;-1:-1:-1;;;;;12272:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;-1:-1:-1;;12310:16:60;;;;12272:55;;;;;;;;:61;-1:-1:-1;;;12272:61:60;;-1:-1:-1;;;;;12272:61:60;;-1:-1:-1;12265:68:60;;12174:164;-1:-1:-1;;;;;12391:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:40;;;;;;;;:50;:40;:50;:64;-1:-1:-1;12387:88:60;;;12469:1;12462:8;;;;;12387:88;12479:12;-1:-1:-1;;12514:16:60;;12534:346;12549:5;12541:13;;:5;:13;;;12534:346;;;12603:1;12586:13;;;12585:19;;;12577:27;;12643:20;;:::i;:::-;-1:-1:-1;;;;;;12666:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:45;;;;;;;;;;;;;12643:68;;;;;;;;;;;;;;;-1:-1:-1;;;12643:68:60;;;-1:-1:-1;;;;;12643:68:60;;;;;;;;;12720:27;;12716:160;;;12762:8;;;;-1:-1:-1;12755:15:60;;-1:-1:-1;;;;12755:15:60;12716:160;12786:12;;:26;;;-1:-1:-1;12782:94:60;;;12828:6;12820:14;;12782:94;;;12869:1;12860:6;:10;12852:18;;12782:94;12534:346;;;;;-1:-1:-1;;;;;;12890:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:44;;;;;;;;;;:50;-1:-1:-1;;;;;;;;12890:50:60;;;;;-1:-1:-1;;11735:1209:60;;;;;:::o;780:87:137:-;853:10;780:87;:::o;16133:122:60:-;16203:20;;:48;;-1:-1:-1;;;16203:48:60;;16186:4;;-1:-1:-1;;;;;16203:20:60;;:36;;:48;;16240:10;;16203:48;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16203:48:60;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16203:48:60;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16203:48:60;;;;;;;;;16196:55;;16133:122;:::o;13148:93::-;13225:12;13148:93;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;15241:340:60:-;15308:7;15321:20;15344:25;15364:4;15344:19;:25::i;:::-;15321:48;;15516:4;15500:12;:20;15496:67;;1041:7:59;15534:12:60;:24;15527:31;;15496:67;-1:-1:-1;15573:4:60;;15241:340;-1:-1:-1;15241:340:60:o;592:15665::-;;;;;;;;;;-1:-1:-1;592:15665:60;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:128;217:13;;235:30;217:13;235:30;;277:130;344:20;;369:33;344:20;369:33;;551:128;617:20;;642:32;617:20;642:32;;686:241;;790:2;778:9;769:7;765:23;761:32;758:2;;;806:1;803;796:12;758:2;841:1;858:53;903:7;883:9;858:53;;;848:63;752:175;-1:-1;;;;752:175;934:366;;;1055:2;1043:9;1034:7;1030:23;1026:32;1023:2;;;1071:1;1068;1061:12;1023:2;1106:1;1123:53;1168:7;1148:9;1123:53;;;1113:63;;1085:97;1213:2;1231:53;1276:7;1267:6;1256:9;1252:22;1231:53;;;1221:63;;1192:98;1017:283;;;;;;1307:491;;;;1445:2;1433:9;1424:7;1420:23;1416:32;1413:2;;;1461:1;1458;1451:12;1413:2;1496:1;1513:53;1558:7;1538:9;1513:53;;;1503:63;;1475:97;1603:2;1621:53;1666:7;1657:6;1646:9;1642:22;1621:53;;;1611:63;;1582:98;1711:2;1729:53;1774:7;1765:6;1754:9;1750:22;1729:53;;;1719:63;;1690:98;1407:391;;;;;;1805:617;;;;;1960:3;1948:9;1939:7;1935:23;1931:33;1928:2;;;1977:1;1974;1967:12;1928:2;2012:1;2029:53;2074:7;2054:9;2029:53;;;2019:63;;1991:97;2119:2;2137:53;2182:7;2173:6;2162:9;2158:22;2137:53;;;2127:63;;2098:98;2227:2;2245:53;2290:7;2281:6;2270:9;2266:22;2245:53;;;2235:63;;2206:98;2335:2;2353:53;2398:7;2389:6;2378:9;2374:22;2353:53;;;2343:63;;2314:98;1922:500;;;;;;;;2429:489;;;;2566:2;2554:9;2545:7;2541:23;2537:32;2534:2;;;2582:1;2579;2572:12;2534:2;2617:1;2634:53;2679:7;2659:9;2634:53;;;2624:63;;2596:97;2724:2;2742:53;2787:7;2778:6;2767:9;2763:22;2742:53;;;2732:63;;2703:98;2832:2;2850:52;2894:7;2885:6;2874:9;2870:22;2850:52;;2925:257;;3037:2;3025:9;3016:7;3012:23;3008:32;3005:2;;;3053:1;3050;3043:12;3005:2;3088:1;3105:61;3158:7;3138:9;3105:61;;3189:241;;3293:2;3281:9;3272:7;3268:23;3264:32;3261:2;;;3309:1;3306;3299:12;3261:2;3344:1;3361:53;3406:7;3386:9;3361:53;;3685:366;;;3806:2;3794:9;3785:7;3781:23;3777:32;3774:2;;;3822:1;3819;3812:12;3774:2;3857:1;3874:53;3919:7;3899:9;3874:53;;4058:364;;;4178:2;4166:9;4157:7;4153:23;4149:32;4146:2;;;4194:1;4191;4184:12;4146:2;4229:1;4246:53;4291:7;4271:9;4246:53;;;4236:63;;4208:97;4336:2;4354:52;4398:7;4389:6;4378:9;4374:22;4354:52;;4429:364;;;4549:2;4537:9;4528:7;4524:23;4520:32;4517:2;;;4565:1;4562;4555:12;4517:2;4600:1;4617:52;4661:7;4641:9;4617:52;;4800:142;4891:45;4930:5;4891:45;;;4886:3;4879:58;4873:69;;;4949:113;5032:24;5050:5;5032:24;;5069:104;5146:21;5161:5;5146:21;;5180:113;5263:24;5281:5;5263:24;;5300:158;5399:53;5446:5;5399:53;;5843:347;;5955:39;5988:5;5955:39;;;6006:71;6070:6;6065:3;6006:71;;;5999:78;;6082:52;6127:6;6122:3;6115:4;6108:5;6104:16;6082:52;;;6155:29;6177:6;6155:29;;;6146:39;;;;5935:255;-1:-1;;;5935:255;6198:332;;6358:67;6422:2;6417:3;6358:67;;;6458:34;6438:55;;6521:2;6512:12;;6344:186;-1:-1;;6344:186;6539:375;;6699:67;6763:2;6758:3;6699:67;;;6799:34;6779:55;;-1:-1;;;6863:2;6854:12;;6847:30;6905:2;6896:12;;6685:229;-1:-1;;6685:229;6923:451;;7083:67;7147:2;7142:3;7083:67;;;7183:34;7163:55;;7252:34;7247:2;7238:12;;7231:56;-1:-1;;;7316:2;7307:12;;7300:37;7365:2;7356:12;;7069:305;-1:-1;;7069:305;7383:450;;7543:67;7607:2;7602:3;7543:67;;;7643:34;7623:55;;7712:34;7707:2;7698:12;;7691:56;-1:-1;;;7776:2;7767:12;;7760:36;7824:2;7815:12;;7529:304;-1:-1;;7529:304;7842:477;;8020:85;8102:2;8097:3;8020:85;;;8138:34;8118:55;;8207:34;8202:2;8193:12;;8186:56;-1:-1;;;8271:2;8262:12;;8255:27;8310:2;8301:12;;8006:313;-1:-1;;8006:313;8328:312;;8488:67;8552:2;8547:3;8488:67;;;-1:-1;;;8568:35;;8631:2;8622:12;;8474:166;-1:-1;;8474:166;8649:451;;8809:67;8873:2;8868:3;8809:67;;;8909:34;8889:55;;8978:34;8973:2;8964:12;;8957:56;-1:-1;;;9042:2;9033:12;;9026:37;9091:2;9082:12;;8795:305;-1:-1;;8795:305;9109:485;;9287:85;9369:2;9364:3;9287:85;;;9405:34;9385:55;;9474:34;9469:2;9460:12;;9453:56;-1:-1;;;9538:2;9529:12;;9522:35;9585:2;9576:12;;9273:321;-1:-1;;9273:321;9603:398;;9763:67;9827:2;9822:3;9763:67;;;9863:34;9843:55;;9932:31;9927:2;9918:12;;9911:53;9992:2;9983:12;;9749:252;-1:-1;;9749:252;10010:400;;10170:67;10234:2;10229:3;10170:67;;;10270:34;10250:55;;10339:33;10334:2;10325:12;;10318:55;10401:2;10392:12;;10156:254;-1:-1;;10156:254;10419:442;;10579:67;10643:2;10638:3;10579:67;;;10679:34;10659:55;;10748:34;10743:2;10734:12;;10727:56;-1:-1;;;10812:2;10803:12;;10796:28;10852:2;10843:12;;10565:296;-1:-1;;10565:296;10989:110;11070:23;11087:5;11070:23;;11106:110;11187:23;11204:5;11187:23;;11223:372;;11422:148;11566:3;11422:148;;11602:372;;11801:148;11945:3;11801:148;;11981:213;12099:2;12084:18;;12113:71;12088:9;12157:6;12113:71;;12201:229;12327:2;12312:18;;12341:79;12316:9;12393:6;12341:79;;12437:201;12549:2;12534:18;;12563:65;12538:9;12601:6;12563:65;;12645:213;12763:2;12748:18;;12777:71;12752:9;12821:6;12777:71;;12865:245;12999:2;12984:18;;13013:87;12988:9;13073:6;13013:87;;13669:301;13807:2;13821:47;;;13792:18;;13882:78;13792:18;13946:6;13882:78;;13977:407;14168:2;14182:47;;;14153:18;;14243:131;14153:18;14243:131;;14391:407;14582:2;14596:47;;;14567:18;;14657:131;14567:18;14657:131;;14805:407;14996:2;15010:47;;;14981:18;;15071:131;14981:18;15071:131;;15219:407;15410:2;15424:47;;;15395:18;;15485:131;15395:18;15485:131;;15633:407;15824:2;15838:47;;;15809:18;;15899:131;15809:18;15899:131;;16047:407;16238:2;16252:47;;;16223:18;;16313:131;16223:18;16313:131;;16461:407;16652:2;16666:47;;;16637:18;;16727:131;16637:18;16727:131;;16875:407;17066:2;17080:47;;;17051:18;;17141:131;17051:18;17141:131;;17289:407;17480:2;17494:47;;;17465:18;;17555:131;17465:18;17555:131;;17923:209;18039:2;18024:18;;18053:69;18028:9;18095:6;18053:69;;18139:316;18281:2;18266:18;;18295:69;18270:9;18337:6;18295:69;;;18375:70;18441:2;18430:9;18426:18;18417:6;18375:70;;18462:209;18578:2;18563:18;;18592:69;18567:9;18634:6;18592:69;;18678:122;18766:12;;18737:63;18808:163;18911:19;;;18960:4;18951:14;;18904:67;18980:145;19116:3;19094:31;-1:-1;19094:31;19133:91;;19195:24;19213:5;19195:24;;19231:85;19297:13;19290:21;;19273:43;19323:72;19385:5;19368:27;19402:121;-1:-1;;;;;19464:54;;19447:76;19609:88;19681:10;19670:22;;19653:44;19704:104;-1:-1;;;;;19765:38;;19748:60;19815:129;;19902:37;19933:5;19951:153;;20046:53;20093:5;20046:53;;21140:268;21205:1;21212:101;21226:6;21223:1;21220:13;21212:101;;;21293:11;;;21287:18;21274:11;;;21267:39;21248:2;21241:10;21212:101;;;21328:6;21325:1;21322:13;21319:2;;;21393:1;21384:6;21379:3;21375:16;21368:27;21319:2;21189:219;;;;;21416:97;21504:2;21484:14;-1:-1;;21480:28;;21464:49;21521:117;21590:24;21608:5;21590:24;;;21583:5;21580:35;21570:2;;21629:1;21626;21619:12;21645:111;21711:21;21726:5;21711:21;;21763:117;21832:24;21850:5;21832:24;;22011:115;22079:23;22096:5;22079:23;"
            },
            "methodIdentifiers": {
              "DELEGATION_TYPEHASH()": "e7a324dc",
              "DOMAIN_TYPEHASH()": "20606b70",
              "MAX_DURATION()": "b1724b46",
              "MAX_VOTING_WEIGHT()": "17748adc",
              "SOVToken()": "a58848c5",
              "WEIGHT_FACTOR()": "d27569e7",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "allUnlocked()": "9929e886",
              "computeWeightByDate(uint256,uint256)": "62cf8a08",
              "delegateStakingCheckpoints(address,uint256,uint32)": "6b6fde0e",
              "delegates(address,uint256)": "27dd1b00",
              "feeSharing()": "03a18fa3",
              "getPriorStakeByDateForDelegatee(address,uint256,uint256)": "e97ffacb",
              "getPriorTotalStakesForDate(uint256,uint256)": "f09cfc64",
              "getPriorTotalVotingPower(uint32,uint256)": "2522d7ba",
              "getPriorUserStakeByDate(address,uint256,uint256)": "cf7b684a",
              "getPriorVotes(address,uint256,uint256)": "836eebee",
              "getPriorWeightedStake(address,uint256,uint256)": "37e6b1c1",
              "isOwner()": "8f32d59b",
              "kickoffTS()": "00073f99",
              "newStakingContract()": "ae81dfe4",
              "nonces(address)": "7ecebe00",
              "numDelegateStakingCheckpoints(address,uint256)": "94c2ce58",
              "numTotalStakingCheckpoints(uint256)": "9436e7d4",
              "numUserStakingCheckpoints(address,uint256)": "db27ec18",
              "owner()": "8da5cb5b",
              "removeAdmin(address)": "1785f53c",
              "setVestingRegistry(address)": "450b0601",
              "timestampToLockDate(uint256)": "72ec9795",
              "totalStakingCheckpoints(uint256,uint32)": "dfb267c2",
              "transferOwnership(address)": "f2fde38b",
              "userStakingCheckpoints(address,uint256,uint32)": "68cefccc",
              "vestingCodeHashes(bytes32)": "07392cc0",
              "vestingRegistryLogic()": "104932cf",
              "vestingWhitelist(address)": "adae9002",
              "weightScaling()": "bf626ec1",
              "weightedStakeByDate(address,uint256,uint256,uint256)": "8dae1b16"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "computeWeightByDate(uint256,uint256)": {
                "notice": "Compute the weight for a specific date."
              },
              "getPriorStakeByDateForDelegatee(address,uint256,uint256)": {
                "notice": "Determine the prior number of stake for an account as of a block number."
              },
              "getPriorTotalStakesForDate(uint256,uint256)": {
                "notice": "Determine the prior number of stake for an unlocking date as of a block number."
              },
              "getPriorTotalVotingPower(uint32,uint256)": {
                "notice": "Compute the total voting power at a given time."
              },
              "getPriorUserStakeByDate(address,uint256,uint256)": {
                "notice": "Determine the prior number of stake for an account until a certain lock date as of a block number."
              },
              "getPriorVotes(address,uint256,uint256)": {
                "notice": "Determine the prior number of votes for a delegatee as of a block number. Iterate through checkpoints adding up voting power."
              },
              "getPriorWeightedStake(address,uint256,uint256)": {
                "notice": "Determine the prior weighted stake for an account as of a block number. Iterate through checkpoints adding up voting power."
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "setVestingRegistry(address)": {
                "notice": "sets vesting registry"
              },
              "timestampToLockDate(uint256)": {
                "notice": "Unstaking is possible every 2 weeks only. This means, to calculate the key value for the staking checkpoints, we need to map the intended timestamp to the closest available date."
              },
              "weightedStakeByDate(address,uint256,uint256,uint256)": {
                "notice": "Compute the voting power for a specific date. Power = stake * weight TODO: WeightedStaking::weightedStakeByDate should probably better be internal instead of a public function."
              }
            },
            "notice": "Computation of power and votes used by FeeSharingProxy and GovernorAlpha and Staking contracts w/ mainly 3 public functions:  + getPriorTotalVotingPower => Total voting power.  + getPriorVotes  => Delegatee voting power.  + getPriorWeightedStake  => User Weighted Stake. Staking contract inherits WeightedStaking. FeeSharingProxy and GovernorAlpha invoke Staking instance functions."
          }
        }
      },
      "contracts/governance/StakingRewards/StakingRewards.sol": {
        "StakingRewards": {
          "abi": [
            {
              "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": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "RewardWithdrawn",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "BASE_RATE",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DIVISOR",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "TWO_WEEKS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "claimedBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "collectReward",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "deploymentBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "considerMaxDuration",
                  "type": "bool"
                }
              ],
              "name": "getStakerCurrentReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lastWithdrawalInterval",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "contract IStaking",
                  "name": "_staking",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDuration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "setMaxDuration",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract IStaking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "startTime",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "stop",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "stopBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiverAddress",
                  "type": "address"
                }
              ],
              "name": "withdrawTokensByOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "withdrawals",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "collectReward()": {
                "details": "User calls this function to collect SOV staking rewards as per the SIP-0024 program. The weighted stake is calculated using getPriorWeightedStake. Block number sent to the functon must be a finalised block, hence we deduct 1 from the current block. User is only allowed to withdraw after intervals of 14 days."
              },
              "getStakerCurrentReward(bool)": {
                "details": "The collectReward() function internally calls this function to calculate reward amount",
                "params": {
                  "considerMaxDuration": "True: Runs for the maximum duration - used in tx not to run out of gas False - to query total rewards"
                },
                "return": "The timestamp of last withdrawalThe accumulated reward"
              },
              "initialize(address,address)": {
                "params": {
                  "_SOV": "SOV token address",
                  "_staking": "StakingProxy address should be passed"
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setMaxDuration(uint256)": {
                "details": "Rewards can be collected for a maximum duration at a time. This is to avoid Block Gas Limit failures. Setting it zero would mean that it will loop through the entire duration since the start of rewards program. It should ideally be set to a value, for which the rewards can be easily processed.",
                "params": {
                  "_duration": "Max duration for which rewards can be collected at a go (in seconds)"
                }
              },
              "stop()": {
                "details": "All stakes existing on the contract at the point in time of cancellation continue accruing rewards until the end of the staking period being rewarded"
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "withdrawTokensByOwner(address)": {
                "params": {
                  "_receiverAddress": "The address where the tokens has to be transferred."
                }
              }
            },
            "title": "Staking Rewards Contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b611225806100796000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806378e97925116100ad578063934d1fa411610071578063934d1fa414610261578063cf0f34c414610269578063d42b779d14610286578063e62a9f1e146102ac578063f2fde38b146102d25761012c565b806378e97925146102075780637a9262a21461020f57806382100e3f146102355780638da5cb5b1461023d5780638f32d59b146102455761012c565b806344bb3b2f116100f457806344bb3b2f146101b9578063485cc955146101c15780634cf088d9146101ef57806354c5aee1146101f75780636db5c8fd146101ff5761012c565b806307da68f51461013157806308dcb3601461013b57806321f6bf2f1461015f5780633410fe6e1461019757806341910f90146101b1575b600080fd5b6101396102f8565b005b610143610394565b604080516001600160a01b039092168252519081900360200190f35b61017e6004803603602081101561017557600080fd5b503515156103a3565b6040805192835260208301919091528051918290030190f35b61019f6105e9565b60408051918252519081900360200190f35b61019f6105f0565b61019f6105f6565b610139600480360360408110156101d757600080fd5b506001600160a01b03813581169160200135166105fc565b610143610833565b610139610842565b61019f6108c6565b61019f6108cc565b61019f6004803603602081101561022557600080fd5b50356001600160a01b03166108d2565b61019f6108e4565b6101436108ea565b61024d6108f9565b604080519115158252519081900360200190f35b61019f61091d565b6101396004803603602081101561027f57600080fd5b5035610924565b61019f6004803603602081101561029c57600080fd5b50356001600160a01b0316610971565b610139600480360360208110156102c257600080fd5b50356001600160a01b0316610983565b610139600480360360208110156102e857600080fd5b50356001600160a01b0316610a4e565b6103006108f9565b610340576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60055415610387576040805162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481cdd1bdc1c1959608a1b604482015290519081900360640190fd5b61038f610aa2565b600555565b6001546001600160a01b031681565b60008060008060016103b3610aa2565b3360008181526006602090815260408083205460025482516372ec979560e01b81524260048201819052935198909703985091969395869586959094929386936001600160a01b03909116926372ec97959260248083019392829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d602081101561044a57600080fd5b505190508161045b5760045461045d565b815b9a508a81101561047d5750600099508998506105e4975050505050505050565b8b1561052657600354610497908c9063ffffffff610aa616565b95508686106104a6578061051f565b600254604080516372ec979560e01b81526004810189905290516001600160a01b03909216916372ec979591602480820192602092909190829003018186803b1580156104f257600080fd5b505afa158015610506573d6000803e3d6000fd5b505050506040513d602081101561051c57600080fd5b50515b945061052a565b8094505b8a5b8581101561059e57610565610558602061054c8b8563ffffffff610b0916565b9063ffffffff610b4b16565b8a9063ffffffff610b0916565b94506008548510156105775760085494505b610592610585858784610b8d565b8b9063ffffffff610aa616565b9950621275000161052c565b50886105ba5750600099508998506105e4975050505050505050565b93995089936105d86227ac4061054c8b610b9f63ffffffff610ce616565b99505050505050505050505b915091565b6227ac4081565b610b9f81565b60055481565b6106046108f9565b610644576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600954610100900460ff168061065d575060095460ff16155b6106985760405162461bcd60e51b815260040180806020018281038252602e8152602001806111a2602e913960400191505060405180910390fd5b600954610100900460ff161580156106c3576009805460ff1961ff0019909116610100171660011790555b6001600160a01b038316610715576040805162461bcd60e51b815260206004820152601460248201527324b73b30b634b21029a7ab1020b2323932b9b99760611b604482015290519081900360640190fd5b61071e83610d3f565b610765576040805162461bcd60e51b815260206004820152601360248201527217d4d3d5881b9bdd08184818dbdb9d1c9858dd606a1b604482015290519081900360640190fd5b600180546001600160a01b038086166001600160a01b0319928316179092556002805485841692169190911790819055604080516372ec979560e01b8152426004820152905191909216916372ec9795916024808301926020929190829003018186803b1580156107d557600080fd5b505afa1580156107e9573d6000803e3d6000fd5b505050506040513d60208110156107ff57600080fd5b5051600455610811630114db00610924565b610819610aa2565b600855801561082e576009805461ff00191690555b505050565b6002546001600160a01b031681565b60008061084f60016103a3565b909250905081158015906108635750600081115b6108a6576040805162461bcd60e51b815260206004820152600f60248201526e1b9bc81d985b1a59081c995dd85c99608a1b604482015290519081900360640190fd5b3360008181526006602052604090208390556108c29082610d7b565b5050565b60035481565b60045481565b60066020526000908152604090205481565b60085481565b6000546001600160a01b031690565b600080546001600160a01b031661090e610e90565b6001600160a01b031614905090565b6212750081565b61092c6108f9565b61096c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600355565b60076020526000908152604090205481565b61098b6108f9565b6109cb576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610a1657600080fd5b505afa158015610a2a573d6000803e3d6000fd5b505050506040513d6020811015610a4057600080fd5b505190506108c28282610e94565b610a566108f9565b610a96576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610a9f81610fdf565b50565b4390565b600082820183811015610b00576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000610b0083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061107f565b6000610b0083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611116565b600254604080516337e6b1c160e01b81526001600160a01b0386811660048301526024820186905260448201859052915160009392909216916337e6b1c191606480820192602092909190829003018186803b158015610bec57600080fd5b505afa158015610c00573d6000803e3d6000fd5b505050506040513d6020811015610c1657600080fd5b50516005546bffffffffffffffffffffffff909116915015610cdf57600254600554604080516337e6b1c160e01b81526001600160a01b038881166004830152602482019390935260448101869052905160009392909216916337e6b1c191606480820192602092909190829003018186803b158015610c9557600080fd5b505afa158015610ca9573d6000803e3d6000fd5b505050506040513d6020811015610cbf57600080fd5b50516bffffffffffffffffffffffff16905081811015610cdd578091505b505b9392505050565b600082610cf557506000610b03565b82820282848281610d0257fe5b0414610b005760405162461bcd60e51b81526004018080602001828103825260218152602001806111d06021913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610d7357508115155b949350505050565b600154604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610dc557600080fd5b505afa158015610dd9573d6000803e3d6000fd5b505050506040513d6020811015610def57600080fd5b50511015610e44576040805162461bcd60e51b815260206004820152601f60248201527f6e6f7420656e6f7567682066756e647320746f20726577617264207573657200604482015290519081900360640190fd5b6001600160a01b038216600090815260076020526040902054610e6d908263ffffffff610aa616565b6001600160a01b0383166000908152600760205260409020556108c28282610e94565b3390565b80610ed7576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610f2d57600080fd5b505af1158015610f41573d6000803e3d6000fd5b505050506040513d6020811015610f5757600080fd5b5051610f9c576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6040805182815290516001600160a01b038416917f1d3eee4ca001cff39eec6ec7615aacf2f2bd61791273830728ba00ccbd6e1337919081900360200190a25050565b6001600160a01b0381166110245760405162461bcd60e51b815260040180806020018281038252602681526020018061117c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818484111561110e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110d35781810151838201526020016110bb565b50505050905090810190601f1680156111005780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836111655760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156110d35781810151838201526020016110bb565b50600083858161117157fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582074a9fade7f5d87d02833103eb2d93a7376a532cfbc97c2bdde406fed889b0d7b64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x1225 DUP1 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78E97925 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0x934D1FA4 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x934D1FA4 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0xCF0F34C4 EQ PUSH2 0x269 JUMPI DUP1 PUSH4 0xD42B779D EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0xE62A9F1E EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2D2 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x78E97925 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x7A9262A2 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x82100E3F EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x245 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x44BB3B2F GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x44BB3B2F EQ PUSH2 0x1B9 JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0x54C5AEE1 EQ PUSH2 0x1F7 JUMPI DUP1 PUSH4 0x6DB5C8FD EQ PUSH2 0x1FF JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x7DA68F5 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0x21F6BF2F EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0x3410FE6E EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x41910F90 EQ PUSH2 0x1B1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x139 PUSH2 0x2F8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x143 PUSH2 0x394 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x3A3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x19F PUSH2 0x5E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19F PUSH2 0x5F0 JUMP JUMPDEST PUSH2 0x19F PUSH2 0x5F6 JUMP JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5FC JUMP JUMPDEST PUSH2 0x143 PUSH2 0x833 JUMP JUMPDEST PUSH2 0x139 PUSH2 0x842 JUMP JUMPDEST PUSH2 0x19F PUSH2 0x8C6 JUMP JUMPDEST PUSH2 0x19F PUSH2 0x8CC JUMP JUMPDEST PUSH2 0x19F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8D2 JUMP JUMPDEST PUSH2 0x19F PUSH2 0x8E4 JUMP JUMPDEST PUSH2 0x143 PUSH2 0x8EA JUMP JUMPDEST PUSH2 0x24D PUSH2 0x8F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19F PUSH2 0x91D JUMP JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x924 JUMP JUMPDEST PUSH2 0x19F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x971 JUMP JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x983 JUMP JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x300 PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x340 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD ISZERO PUSH2 0x387 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x105B1C9958591E481CDD1BDC1C1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x38F PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x1 PUSH2 0x3B3 PUSH2 0xAA2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x2 SLOAD DUP3 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE TIMESTAMP PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP4 MLOAD SWAP9 SWAP1 SWAP8 SUB SWAP9 POP SWAP2 SWAP7 SWAP4 SWAP6 DUP7 SWAP6 DUP7 SWAP6 SWAP1 SWAP5 SWAP3 SWAP4 DUP7 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 PUSH4 0x72EC9795 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x434 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 PUSH2 0x45B JUMPI PUSH1 0x4 SLOAD PUSH2 0x45D JUMP JUMPDEST DUP2 JUMPDEST SWAP11 POP DUP11 DUP2 LT ISZERO PUSH2 0x47D JUMPI POP PUSH1 0x0 SWAP10 POP DUP10 SWAP9 POP PUSH2 0x5E4 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP12 ISZERO PUSH2 0x526 JUMPI PUSH1 0x3 SLOAD PUSH2 0x497 SWAP1 DUP13 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xAA6 AND JUMP JUMPDEST SWAP6 POP DUP7 DUP7 LT PUSH2 0x4A6 JUMPI DUP1 PUSH2 0x51F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x72EC9795 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x506 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP5 POP PUSH2 0x52A JUMP JUMPDEST DUP1 SWAP5 POP JUMPDEST DUP11 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH2 0x565 PUSH2 0x558 PUSH1 0x20 PUSH2 0x54C DUP12 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xB09 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB4B AND JUMP JUMPDEST DUP11 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB09 AND JUMP JUMPDEST SWAP5 POP PUSH1 0x8 SLOAD DUP6 LT ISZERO PUSH2 0x577 JUMPI PUSH1 0x8 SLOAD SWAP5 POP JUMPDEST PUSH2 0x592 PUSH2 0x585 DUP6 DUP8 DUP5 PUSH2 0xB8D JUMP JUMPDEST DUP12 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xAA6 AND JUMP JUMPDEST SWAP10 POP PUSH3 0x127500 ADD PUSH2 0x52C JUMP JUMPDEST POP DUP9 PUSH2 0x5BA JUMPI POP PUSH1 0x0 SWAP10 POP DUP10 SWAP9 POP PUSH2 0x5E4 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP4 SWAP10 POP DUP10 SWAP4 PUSH2 0x5D8 PUSH3 0x27AC40 PUSH2 0x54C DUP12 PUSH2 0xB9F PUSH4 0xFFFFFFFF PUSH2 0xCE6 AND JUMP JUMPDEST SWAP10 POP POP POP POP POP POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH3 0x27AC40 DUP2 JUMP JUMPDEST PUSH2 0xB9F DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x604 PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x644 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x65D JUMPI POP PUSH1 0x9 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x698 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11A2 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x6C3 JUMPI PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x715 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x24B73B30B634B21029A7AB1020B2323932B9B997 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x71E DUP4 PUSH2 0xD3F JUMP JUMPDEST PUSH2 0x765 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x17D4D3D5881B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP1 SLOAD DUP6 DUP5 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE TIMESTAMP PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x72EC9795 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SSTORE PUSH2 0x811 PUSH4 0x114DB00 PUSH2 0x924 JUMP JUMPDEST PUSH2 0x819 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x8 SSTORE DUP1 ISZERO PUSH2 0x82E JUMPI PUSH1 0x9 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x84F PUSH1 0x1 PUSH2 0x3A3 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x863 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x8A6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1B9BC81D985B1A59081C995DD85C99 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE PUSH2 0x8C2 SWAP1 DUP3 PUSH2 0xD7B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x90E PUSH2 0xE90 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST PUSH2 0x92C PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x96C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x98B PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x9CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x8C2 DUP3 DUP3 PUSH2 0xE94 JUMP JUMPDEST PUSH2 0xA56 PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0xA96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA9F DUP2 PUSH2 0xFDF JUMP JUMPDEST POP JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB00 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x107F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB00 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1116 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x37E6B1C1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x37E6B1C1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x5 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP ISZERO PUSH2 0xCDF JUMPI PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x37E6B1C1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x37E6B1C1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xCDD JUMPI DUP1 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xCF5 JUMPI POP PUSH1 0x0 PUSH2 0xB03 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xD02 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xB00 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11D0 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0xD73 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDD9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0xE44 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F7420656E6F7567682066756E647320746F20726577617264207573657200 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xAA6 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x8C2 DUP3 DUP3 PUSH2 0xE94 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xED7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xF9C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1D1C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0x1D3EEE4CA001CFF39EEC6EC7615AACF2F2BD61791273830728BA00CCBD6E1337 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1024 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x117C PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x110E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10D3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10BB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1100 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1165 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x10D3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10BB JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1171 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373496E697469616C697A61626C653A2063 PUSH16 0x6E747261637420697320616C72656164 PUSH26 0x20696E697469616C697A6564536166654D6174683A206D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72315820 PUSH21 0xA9FADE7F5D87D02833103EB2D93A7376A532CFBC97 0xC2 0xBD 0xDE BLOCKHASH PUSH16 0xED889B0D7B64736F6C63430005110032 ",
              "sourceMap": "839:6536:61:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;839:6536:61;;780:87:137;853:10;780:87;:::o;839:6536:61:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061012c5760003560e01c806378e97925116100ad578063934d1fa411610071578063934d1fa414610261578063cf0f34c414610269578063d42b779d14610286578063e62a9f1e146102ac578063f2fde38b146102d25761012c565b806378e97925146102075780637a9262a21461020f57806382100e3f146102355780638da5cb5b1461023d5780638f32d59b146102455761012c565b806344bb3b2f116100f457806344bb3b2f146101b9578063485cc955146101c15780634cf088d9146101ef57806354c5aee1146101f75780636db5c8fd146101ff5761012c565b806307da68f51461013157806308dcb3601461013b57806321f6bf2f1461015f5780633410fe6e1461019757806341910f90146101b1575b600080fd5b6101396102f8565b005b610143610394565b604080516001600160a01b039092168252519081900360200190f35b61017e6004803603602081101561017557600080fd5b503515156103a3565b6040805192835260208301919091528051918290030190f35b61019f6105e9565b60408051918252519081900360200190f35b61019f6105f0565b61019f6105f6565b610139600480360360408110156101d757600080fd5b506001600160a01b03813581169160200135166105fc565b610143610833565b610139610842565b61019f6108c6565b61019f6108cc565b61019f6004803603602081101561022557600080fd5b50356001600160a01b03166108d2565b61019f6108e4565b6101436108ea565b61024d6108f9565b604080519115158252519081900360200190f35b61019f61091d565b6101396004803603602081101561027f57600080fd5b5035610924565b61019f6004803603602081101561029c57600080fd5b50356001600160a01b0316610971565b610139600480360360208110156102c257600080fd5b50356001600160a01b0316610983565b610139600480360360208110156102e857600080fd5b50356001600160a01b0316610a4e565b6103006108f9565b610340576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60055415610387576040805162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481cdd1bdc1c1959608a1b604482015290519081900360640190fd5b61038f610aa2565b600555565b6001546001600160a01b031681565b60008060008060016103b3610aa2565b3360008181526006602090815260408083205460025482516372ec979560e01b81524260048201819052935198909703985091969395869586959094929386936001600160a01b03909116926372ec97959260248083019392829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d602081101561044a57600080fd5b505190508161045b5760045461045d565b815b9a508a81101561047d5750600099508998506105e4975050505050505050565b8b1561052657600354610497908c9063ffffffff610aa616565b95508686106104a6578061051f565b600254604080516372ec979560e01b81526004810189905290516001600160a01b03909216916372ec979591602480820192602092909190829003018186803b1580156104f257600080fd5b505afa158015610506573d6000803e3d6000fd5b505050506040513d602081101561051c57600080fd5b50515b945061052a565b8094505b8a5b8581101561059e57610565610558602061054c8b8563ffffffff610b0916565b9063ffffffff610b4b16565b8a9063ffffffff610b0916565b94506008548510156105775760085494505b610592610585858784610b8d565b8b9063ffffffff610aa616565b9950621275000161052c565b50886105ba5750600099508998506105e4975050505050505050565b93995089936105d86227ac4061054c8b610b9f63ffffffff610ce616565b99505050505050505050505b915091565b6227ac4081565b610b9f81565b60055481565b6106046108f9565b610644576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600954610100900460ff168061065d575060095460ff16155b6106985760405162461bcd60e51b815260040180806020018281038252602e8152602001806111a2602e913960400191505060405180910390fd5b600954610100900460ff161580156106c3576009805460ff1961ff0019909116610100171660011790555b6001600160a01b038316610715576040805162461bcd60e51b815260206004820152601460248201527324b73b30b634b21029a7ab1020b2323932b9b99760611b604482015290519081900360640190fd5b61071e83610d3f565b610765576040805162461bcd60e51b815260206004820152601360248201527217d4d3d5881b9bdd08184818dbdb9d1c9858dd606a1b604482015290519081900360640190fd5b600180546001600160a01b038086166001600160a01b0319928316179092556002805485841692169190911790819055604080516372ec979560e01b8152426004820152905191909216916372ec9795916024808301926020929190829003018186803b1580156107d557600080fd5b505afa1580156107e9573d6000803e3d6000fd5b505050506040513d60208110156107ff57600080fd5b5051600455610811630114db00610924565b610819610aa2565b600855801561082e576009805461ff00191690555b505050565b6002546001600160a01b031681565b60008061084f60016103a3565b909250905081158015906108635750600081115b6108a6576040805162461bcd60e51b815260206004820152600f60248201526e1b9bc81d985b1a59081c995dd85c99608a1b604482015290519081900360640190fd5b3360008181526006602052604090208390556108c29082610d7b565b5050565b60035481565b60045481565b60066020526000908152604090205481565b60085481565b6000546001600160a01b031690565b600080546001600160a01b031661090e610e90565b6001600160a01b031614905090565b6212750081565b61092c6108f9565b61096c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600355565b60076020526000908152604090205481565b61098b6108f9565b6109cb576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610a1657600080fd5b505afa158015610a2a573d6000803e3d6000fd5b505050506040513d6020811015610a4057600080fd5b505190506108c28282610e94565b610a566108f9565b610a96576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610a9f81610fdf565b50565b4390565b600082820183811015610b00576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000610b0083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061107f565b6000610b0083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611116565b600254604080516337e6b1c160e01b81526001600160a01b0386811660048301526024820186905260448201859052915160009392909216916337e6b1c191606480820192602092909190829003018186803b158015610bec57600080fd5b505afa158015610c00573d6000803e3d6000fd5b505050506040513d6020811015610c1657600080fd5b50516005546bffffffffffffffffffffffff909116915015610cdf57600254600554604080516337e6b1c160e01b81526001600160a01b038881166004830152602482019390935260448101869052905160009392909216916337e6b1c191606480820192602092909190829003018186803b158015610c9557600080fd5b505afa158015610ca9573d6000803e3d6000fd5b505050506040513d6020811015610cbf57600080fd5b50516bffffffffffffffffffffffff16905081811015610cdd578091505b505b9392505050565b600082610cf557506000610b03565b82820282848281610d0257fe5b0414610b005760405162461bcd60e51b81526004018080602001828103825260218152602001806111d06021913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610d7357508115155b949350505050565b600154604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610dc557600080fd5b505afa158015610dd9573d6000803e3d6000fd5b505050506040513d6020811015610def57600080fd5b50511015610e44576040805162461bcd60e51b815260206004820152601f60248201527f6e6f7420656e6f7567682066756e647320746f20726577617264207573657200604482015290519081900360640190fd5b6001600160a01b038216600090815260076020526040902054610e6d908263ffffffff610aa616565b6001600160a01b0383166000908152600760205260409020556108c28282610e94565b3390565b80610ed7576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610f2d57600080fd5b505af1158015610f41573d6000803e3d6000fd5b505050506040513d6020811015610f5757600080fd5b5051610f9c576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6040805182815290516001600160a01b038416917f1d3eee4ca001cff39eec6ec7615aacf2f2bd61791273830728ba00ccbd6e1337919081900360200190a25050565b6001600160a01b0381166110245760405162461bcd60e51b815260040180806020018281038252602681526020018061117c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818484111561110e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110d35781810151838201526020016110bb565b50505050905090810190601f1680156111005780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836111655760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156110d35781810151838201526020016110bb565b50600083858161117157fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582074a9fade7f5d87d02833103eb2d93a7376a532cfbc97c2bdde406fed889b0d7b64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78E97925 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0x934D1FA4 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x934D1FA4 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0xCF0F34C4 EQ PUSH2 0x269 JUMPI DUP1 PUSH4 0xD42B779D EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0xE62A9F1E EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2D2 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x78E97925 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x7A9262A2 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x82100E3F EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x245 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x44BB3B2F GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x44BB3B2F EQ PUSH2 0x1B9 JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0x54C5AEE1 EQ PUSH2 0x1F7 JUMPI DUP1 PUSH4 0x6DB5C8FD EQ PUSH2 0x1FF JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x7DA68F5 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0x21F6BF2F EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0x3410FE6E EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x41910F90 EQ PUSH2 0x1B1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x139 PUSH2 0x2F8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x143 PUSH2 0x394 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x3A3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x19F PUSH2 0x5E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19F PUSH2 0x5F0 JUMP JUMPDEST PUSH2 0x19F PUSH2 0x5F6 JUMP JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5FC JUMP JUMPDEST PUSH2 0x143 PUSH2 0x833 JUMP JUMPDEST PUSH2 0x139 PUSH2 0x842 JUMP JUMPDEST PUSH2 0x19F PUSH2 0x8C6 JUMP JUMPDEST PUSH2 0x19F PUSH2 0x8CC JUMP JUMPDEST PUSH2 0x19F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8D2 JUMP JUMPDEST PUSH2 0x19F PUSH2 0x8E4 JUMP JUMPDEST PUSH2 0x143 PUSH2 0x8EA JUMP JUMPDEST PUSH2 0x24D PUSH2 0x8F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19F PUSH2 0x91D JUMP JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x924 JUMP JUMPDEST PUSH2 0x19F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x971 JUMP JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x983 JUMP JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x300 PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x340 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD ISZERO PUSH2 0x387 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x105B1C9958591E481CDD1BDC1C1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x38F PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x1 PUSH2 0x3B3 PUSH2 0xAA2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x2 SLOAD DUP3 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE TIMESTAMP PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP4 MLOAD SWAP9 SWAP1 SWAP8 SUB SWAP9 POP SWAP2 SWAP7 SWAP4 SWAP6 DUP7 SWAP6 DUP7 SWAP6 SWAP1 SWAP5 SWAP3 SWAP4 DUP7 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 PUSH4 0x72EC9795 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x434 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 PUSH2 0x45B JUMPI PUSH1 0x4 SLOAD PUSH2 0x45D JUMP JUMPDEST DUP2 JUMPDEST SWAP11 POP DUP11 DUP2 LT ISZERO PUSH2 0x47D JUMPI POP PUSH1 0x0 SWAP10 POP DUP10 SWAP9 POP PUSH2 0x5E4 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP12 ISZERO PUSH2 0x526 JUMPI PUSH1 0x3 SLOAD PUSH2 0x497 SWAP1 DUP13 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xAA6 AND JUMP JUMPDEST SWAP6 POP DUP7 DUP7 LT PUSH2 0x4A6 JUMPI DUP1 PUSH2 0x51F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x72EC9795 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x506 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP5 POP PUSH2 0x52A JUMP JUMPDEST DUP1 SWAP5 POP JUMPDEST DUP11 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH2 0x565 PUSH2 0x558 PUSH1 0x20 PUSH2 0x54C DUP12 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xB09 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB4B AND JUMP JUMPDEST DUP11 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB09 AND JUMP JUMPDEST SWAP5 POP PUSH1 0x8 SLOAD DUP6 LT ISZERO PUSH2 0x577 JUMPI PUSH1 0x8 SLOAD SWAP5 POP JUMPDEST PUSH2 0x592 PUSH2 0x585 DUP6 DUP8 DUP5 PUSH2 0xB8D JUMP JUMPDEST DUP12 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xAA6 AND JUMP JUMPDEST SWAP10 POP PUSH3 0x127500 ADD PUSH2 0x52C JUMP JUMPDEST POP DUP9 PUSH2 0x5BA JUMPI POP PUSH1 0x0 SWAP10 POP DUP10 SWAP9 POP PUSH2 0x5E4 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP4 SWAP10 POP DUP10 SWAP4 PUSH2 0x5D8 PUSH3 0x27AC40 PUSH2 0x54C DUP12 PUSH2 0xB9F PUSH4 0xFFFFFFFF PUSH2 0xCE6 AND JUMP JUMPDEST SWAP10 POP POP POP POP POP POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH3 0x27AC40 DUP2 JUMP JUMPDEST PUSH2 0xB9F DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x604 PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x644 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x65D JUMPI POP PUSH1 0x9 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x698 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11A2 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x6C3 JUMPI PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x715 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x24B73B30B634B21029A7AB1020B2323932B9B997 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x71E DUP4 PUSH2 0xD3F JUMP JUMPDEST PUSH2 0x765 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x17D4D3D5881B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP1 SLOAD DUP6 DUP5 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE TIMESTAMP PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x72EC9795 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SSTORE PUSH2 0x811 PUSH4 0x114DB00 PUSH2 0x924 JUMP JUMPDEST PUSH2 0x819 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x8 SSTORE DUP1 ISZERO PUSH2 0x82E JUMPI PUSH1 0x9 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x84F PUSH1 0x1 PUSH2 0x3A3 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x863 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x8A6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1B9BC81D985B1A59081C995DD85C99 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE PUSH2 0x8C2 SWAP1 DUP3 PUSH2 0xD7B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x90E PUSH2 0xE90 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST PUSH2 0x92C PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x96C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x98B PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x9CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x8C2 DUP3 DUP3 PUSH2 0xE94 JUMP JUMPDEST PUSH2 0xA56 PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0xA96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA9F DUP2 PUSH2 0xFDF JUMP JUMPDEST POP JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB00 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x107F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB00 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1116 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x37E6B1C1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x37E6B1C1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x5 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP ISZERO PUSH2 0xCDF JUMPI PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x37E6B1C1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x37E6B1C1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xCDD JUMPI DUP1 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xCF5 JUMPI POP PUSH1 0x0 PUSH2 0xB03 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xD02 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xB00 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11D0 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0xD73 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDD9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0xE44 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F7420656E6F7567682066756E647320746F20726577617264207573657200 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xAA6 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x8C2 DUP3 DUP3 PUSH2 0xE94 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xED7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xF9C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1D1C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0x1D3EEE4CA001CFF39EEC6EC7615AACF2F2BD61791273830728BA00CCBD6E1337 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1024 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x117C PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x110E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10D3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10BB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1100 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1165 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x10D3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10BB JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1171 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373496E697469616C697A61626C653A2063 PUSH16 0x6E747261637420697320616C72656164 PUSH26 0x20696E697469616C697A6564536166654D6174683A206D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72315820 PUSH21 0xA9FADE7F5D87D02833103EB2D93A7376A532CFBC97 0xC2 0xBD 0xDE BLOCKHASH PUSH16 0xED889B0D7B64736F6C63430005110032 ",
              "sourceMap": "839:6536:61:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;839:6536:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2030:125;;;:::i;:::-;;697:17:63;;;:::i;:::-;;;;-1:-1:-1;;;;;697:17:63;;;;;;;;;;;;;;5744:1332:61;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5744:1332:61;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1102:41:63;;;:::i;:::-;;;;;;;;;;;;;;;;941:40;;;:::i;1404:24::-;;;:::i;1414:387:61:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1414:387:61;;;;;;;;;;:::i;765:23:63:-;;;:::i;3075:283:61:-;;;:::i;1206:26:63:-;;;:::i;1299:24::-;;;:::i;1486:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1486:46:63;-1:-1:-1;;;;;1486:46:63;;:::i;1711:30::-;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;825:43:63;;;:::i;2610:91:61:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2610:91:61;;:::i;1581:50:63:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1581:50:63;-1:-1:-1;;;;;1581:50:63;;:::i;4811:169:61:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4811:169:61;-1:-1:-1;;;;;4811:169:61;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;2030:125:61:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;2077:9:61;;:14;2069:42;;;;;-1:-1:-1;;;2069:42:61;;;;;;;;;;;;-1:-1:-1;;;2069:42:61;;;;;;;;;;;;;;;2127:24;:22;:24::i;:::-;2115:9;:36;2030:125::o;697:17:63:-;;;-1:-1:-1;;;;;697:17:63;;:::o;5744:1332:61:-;5823:30;5855:14;5875:21;5900:26;5956:1;5929:24;:22;:24::i;:::-;6091:10;5961:17;6130:19;;;:11;:19;;;;;;;;;6184:7;;:38;;-1:-1:-1;;;6184:38:61;;5981:15;6184:38;;;;;;;;5929:28;;;;;-1:-1:-1;5981:15:61;;5961:17;;;;;;6091:10;;6130:19;;5961:17;;-1:-1:-1;;;;;6184:7:61;;;;:27;;:38;;;;;6130:19;6184:38;;;;;:7;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;6184:38:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6184:38:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6184:38:61;;-1:-1:-1;6251:18:61;:47;;6289:9;;6251:47;;;6272:14;6251:47;6226:72;;6328:22;6306:19;:44;6302:63;;;-1:-1:-1;6360:1:61;;-1:-1:-1;6360:1:61;;-1:-1:-1;6352:13:61;;-1:-1:-1;;;;;;;;6352:13:61;6302:63;6374:19;6370:253;;;6446:11;;6419:39;;:22;;:39;:26;:39;:::i;:::-;6400:58;;6493:9;6474:16;:28;:98;;6553:19;6474:98;;;6505:7;;:45;;;-1:-1:-1;;;6505:45:61;;;;;;;;;;-1:-1:-1;;;;;6505:7:61;;;;:27;;:45;;;;;;;;;;;;;;;:7;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;6505:45:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6505:45:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6505:45:61;6474:98;6463:109;;6370:253;;;6599:19;6588:30;;6370:253;6644:22;6627:313;6672:8;6668:1;:12;6627:313;;;6720:52;6744:26;6767:2;6745:16;:9;6759:1;6745:16;:13;:16;:::i;:::-;6744:22;:26;:22;:26;:::i;:::-;6720:18;;:52;:22;:52;:::i;:::-;6703:69;;6798:15;;6781:14;:32;6777:70;;;6832:15;;6815:32;;6777:70;6868:67;6886:48;6908:6;6916:14;6932:1;6886:21;:48::i;:::-;6868:13;;:67;:17;:67;:::i;:::-;6852:83;-1:-1:-1;861:7:63;6682:14:61;6627:313;;;-1:-1:-1;6948:18:61;6944:37;;-1:-1:-1;6976:1:61;;-1:-1:-1;6976:1:61;;-1:-1:-1;6968:13:61;;-1:-1:-1;;;;;;;;6968:13:61;6944:37;7010:8;;-1:-1:-1;7010:8:61;;7031:41;1136:7:63;7031:28:61;:13;977:4:63;7031:28:61;:17;:28;:::i;:41::-;7022:50;;5744:1332;;;;;;;;;;;;;:::o;1102:41:63:-;1136:7;1102:41;:::o;941:40::-;977:4;941:40;:::o;1404:24::-;;;;:::o;1414:387:61:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1333:13:141;;;;;;;;:30;;-1:-1:-1;1351:12:141;;;;1350:13;1333:30;1325:89;;;;-1:-1:-1;;;1325:89:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1442:13;;;;;;;1441:14;1459:74;;;;1484:13;:20;;-1:-1:-1;;;;1484:20:141;;;;;1509:19;1500:4;1509:19;;;1459:74;-1:-1:-1;;;;;1510:18:61;;1502:51;;;;;-1:-1:-1;;;1502:51:61;;;;;;;;;;;;-1:-1:-1;;;1502:51:61;;;;;;;;;;;;;;;1565:24;1584:4;1565:18;:24::i;:::-;1557:56;;;;;-1:-1:-1;;;1557:56:61;;;;;;;;;;;;-1:-1:-1;;;1557:56:61;;;;;;;;;;;;;;;1617:3;:18;;-1:-1:-1;;;;;1617:18:61;;;-1:-1:-1;;;;;;1617:18:61;;;;;;;1639:7;:18;;;;;;;;;;;;;;;1673:44;;;-1:-1:-1;;;1673:44:61;;1701:15;1673:44;;;;;;:7;;;;;:27;;:44;;;;;;;;;;;;;;:7;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;1673:44:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1673:44:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1673:44:61;1661:9;:56;1721:30;1736:14;1721;:30::i;:::-;1773:24;:22;:24::i;:::-;1755:15;:42;1543:51:141;;;;1568:13;:21;;-1:-1:-1;;1568:21:141;;;1543:51;1058:1:142;1414:387:61;;:::o;765:23:63:-;;;-1:-1:-1;;;;;765:23:63;;:::o;3075:283:61:-;3113:22;3139:14;3184:28;3207:4;3184:22;:28::i;:::-;3157:55;;-1:-1:-1;3157:55:61;-1:-1:-1;3224:18:61;;;;;:32;;;3255:1;3246:6;:10;3224:32;3216:60;;;;;-1:-1:-1;;;3216:60:61;;;;;;;;;;;;-1:-1:-1;;;3216:60:61;;;;;;;;;;;;;;;3292:10;3280:23;;;;:11;:23;;;;;:40;;;3324:30;;3347:6;3324:10;:30::i;:::-;3075:283;;:::o;1206:26:63:-;;;;:::o;1299:24::-;;;;:::o;1486:46::-;;;;;;;;;;;;;:::o;1711:30::-;;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;825:43:63:-;861:7;825:43;:::o;2610:91:61:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;2674:11:61;:23;2610:91::o;1581:50:63:-;;;;;;;;;;;;;:::o;4811:169:61:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;4907:3:61;;:28;;;-1:-1:-1;;;4907:28:61;;4929:4;4907:28;;;;;;4891:13;;-1:-1:-1;;;;;4907:3:61;;:13;;:28;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;4907:28:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4907:28:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4907:28:61;;-1:-1:-1;4939:37:61;4952:16;4907:28;4939:12;:37::i;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;7280:93:61:-;7357:12;7280:93;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;-1:-1:-1;812:155:145;;;;;:::o;1201:125::-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;2817:121::-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;3735:427:61:-;3889:7;;:53;;;-1:-1:-1;;;3889:53:61;;-1:-1:-1;;;;;3889:53:61;;;;;;;;;;;;;;;;;;;;;3846:21;;3889:7;;;;;:29;;:53;;;;;;;;;;;;;;;:7;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;3889:53:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3889:53:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3889:53:61;3950:9;;3873:69;;;;;-1:-1:-1;3950:13:61;3946:213;;4002:7;;4041:9;;4002:56;;;-1:-1:-1;;;4002:56:61;;-1:-1:-1;;;;;4002:56:61;;;;;;;;;;;;;;;;;;;;;;3970:29;;4002:7;;;;;:29;;:56;;;;;;;;;;;;;;;:7;:56;;;5:2:-1;;;;30:1;27;20:12;5:2;4002:56:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4002:56:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4002:56:61;3970:88;;;-1:-1:-1;4067:37:61;;;4063:92;;;4128:21;4112:37;;4063:92;3946:213;;3735:427;;;;;:::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;639:564:136;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;4403:252:61:-;4477:3;;:28;;;-1:-1:-1;;;4477:28:61;;4499:4;4477:28;;;;;;4509:6;;-1:-1:-1;;;;;4477:3:61;;:13;;:28;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;4477:28:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4477:28:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4477:28:61;:38;;4469:82;;;;;-1:-1:-1;;;4469:82:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4582:24:61;;;;;;:15;:24;;;;;;:36;;4611:6;4582:36;:28;:36;:::i;:::-;-1:-1:-1;;;;;4555:24:61;;;;;;:15;:24;;;;;:63;4622:29;4571:7;4644:6;4622:12;:29::i;780:87:137:-;853:10;780:87;:::o;5144:222:61:-;5223:12;5215:39;;;;;-1:-1:-1;;;5215:39:61;;;;;;;;;;;;-1:-1:-1;;;5215:39:61;;;;;;;;;;;;;;;5266:3;;:32;;;-1:-1:-1;;;5266:32:61;;-1:-1:-1;;;;;5266:32:61;;;;;;;;;;;;;;;:3;;;;;:12;;:32;;;;;;;;;;;;;;:3;;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;5266:32:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5266:32:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5266:32:61;5258:60;;;;;-1:-1:-1;;;5258:60:61;;;;;;;;;;;;-1:-1:-1;;;5258:60:61;;;;;;;;;;;;;;;5327:35;;;;;;;;-1:-1:-1;;;;;5327:35:61;;;;;;;;;;;;;5144:222;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;3411:315::-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3579:29:145;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o"
            },
            "methodIdentifiers": {
              "BASE_RATE()": "41910f90",
              "DIVISOR()": "3410fe6e",
              "SOV()": "08dcb360",
              "TWO_WEEKS()": "934d1fa4",
              "claimedBalances(address)": "d42b779d",
              "collectReward()": "54c5aee1",
              "deploymentBlock()": "82100e3f",
              "getStakerCurrentReward(bool)": "21f6bf2f",
              "initialize(address,address)": "485cc955",
              "isOwner()": "8f32d59b",
              "maxDuration()": "6db5c8fd",
              "owner()": "8da5cb5b",
              "setMaxDuration(uint256)": "cf0f34c4",
              "staking()": "4cf088d9",
              "startTime()": "78e97925",
              "stop()": "07da68f5",
              "stopBlock()": "44bb3b2f",
              "transferOwnership(address)": "f2fde38b",
              "withdrawTokensByOwner(address)": "e62a9f1e",
              "withdrawals(address)": "7a9262a2"
            }
          },
          "userdoc": {
            "methods": {
              "collectReward()": {
                "notice": "Collect rewards"
              },
              "getStakerCurrentReward(bool)": {
                "notice": "Get staker's current accumulated reward"
              },
              "initialize(address,address)": {
                "notice": "Replacement of constructor by initialize function for Upgradable Contracts This function will be called only once by the owner."
              },
              "setMaxDuration(uint256)": {
                "notice": "Sets the max duration"
              },
              "stop()": {
                "notice": "Stops the current rewards program."
              },
              "withdrawTokensByOwner(address)": {
                "notice": "Withdraws all token from the contract by Multisig."
              }
            },
            "notice": "This is a trial incentive program. In this, the SOV emitted and becoming liquid from the Adoption Fund could be utilized to offset the higher APY's offered for Liquidity Mining events. Vesting contract stakes are excluded from these rewards. Only wallets which have staked previously liquid SOV are eligible for these rewards. Tokenholders who stake their SOV receive staking rewards, a pro-rata share of the revenue that the platform generates from various transaction fees plus revenues from stakers who have a portion of their SOV slashed for early unstaking."
          }
        }
      },
      "contracts/governance/StakingRewards/StakingRewardsProxy.sol": {
        "StakingRewardsProxy": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldImplementation",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newImplementation",
                  "type": "address"
                }
              ],
              "name": "ImplementationChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "BASE_RATE",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DIVISOR",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "TWO_WEEKS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "claimedBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "deploymentBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getImplementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getProxyOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDuration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "name": "setImplementation",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "setProxyOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract IStaking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "startTime",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "stopBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "withdrawals",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "StakingRewards contract should be upgradable. Used UpgradableProxy. StakingRewardsStorage is deployed with the upgradable functionality by using this contract instead, that inherits from UpgradableProxy with the possibility of being enhanced and re-deployed.",
            "methods": {
              "getImplementation()": {
                "return": "Address of the implementation."
              },
              "getProxyOwner()": {
                "return": "Address of the owner."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setImplementation(address)": {
                "details": "Wrapper for _setImplementation that exposes the function as public for owner to be able to set a new version of the contract as current pointing implementation.",
                "params": {
                  "_implementation": "Address of the implementation."
                }
              },
              "setProxyOwner(address)": {
                "params": {
                  "_owner": "Address of the owner."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "StakingRewards Proxy contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b038316908117825560405192935091600080516020610a1b833981519152908290a350610061336001600160e01b0361006a16565b61013c565b3390565b6001600160a01b0381166100af5760405162461bcd60e51b8152600401808060200182810382526025815260200180610a3b6025913960400191505060405180910390fd5b6001600160a01b0381166100ca6001600160e01b0361011416565b6001600160a01b0316600080516020610a1b83398151915260405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b6108d08061014b6000396000f3fe6080604052600436106101095760003560e01c806382100e3f11610095578063aaf10f4211610064578063aaf10f42146102f0578063caaee91c14610305578063d42b779d1461033a578063d784d4261461036d578063f2fde38b146103a057610109565b806382100e3f146102885780638da5cb5b1461029d5780638f32d59b146102b2578063934d1fa4146102db57610109565b806344bb3b2f116100dc57806344bb3b2f146102015780634cf088d9146102165780636db5c8fd1461022b57806378e97925146102405780637a9262a21461025557610109565b806308dcb3601461017f5780631ab7710d146101b05780633410fe6e146101c557806341910f90146101ec575b60006101136103d3565b90506001600160a01b03811661015a5760405162461bcd60e51b81526004018080602001828103825260238152602001806108546023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e81801561017b578184f35b8184fd5b34801561018b57600080fd5b506101946103fe565b604080516001600160a01b039092168252519081900360200190f35b3480156101bc57600080fd5b5061019461040d565b3480156101d157600080fd5b506101da610435565b60408051918252519081900360200190f35b3480156101f857600080fd5b506101da61043c565b34801561020d57600080fd5b506101da610442565b34801561022257600080fd5b50610194610448565b34801561023757600080fd5b506101da610457565b34801561024c57600080fd5b506101da61045d565b34801561026157600080fd5b506101da6004803603602081101561027857600080fd5b50356001600160a01b0316610463565b34801561029457600080fd5b506101da610475565b3480156102a957600080fd5b5061019461047b565b3480156102be57600080fd5b506102c761048a565b604080519115158252519081900360200190f35b3480156102e757600080fd5b506101da6104ae565b3480156102fc57600080fd5b506101946103d3565b34801561031157600080fd5b506103386004803603602081101561032857600080fd5b50356001600160a01b03166104b5565b005b34801561034657600080fd5b506101da6004803603602081101561035d57600080fd5b50356001600160a01b0316610526565b34801561037957600080fd5b506103386004803603602081101561039057600080fd5b50356001600160a01b0316610538565b3480156103ac57600080fd5b50610338600480360360208110156103c357600080fd5b50356001600160a01b03166105a6565b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b6001546001600160a01b031681565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b6227ac4081565b610b9f81565b60055481565b6002546001600160a01b031681565b60035481565b60045481565b60066020526000908152604090205481565b60085481565b6000546001600160a01b031690565b600080546001600160a01b031661049f6105f7565b6001600160a01b031614905090565b6212750081565b6104bd61040d565b6001600160a01b0316336001600160a01b03161461051a576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b610523816105fb565b50565b60076020526000908152604090205481565b61054061040d565b6001600160a01b0316336001600160a01b03161461059d576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b610523816106ae565b6105ae61048a565b6105ee576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61052381610764565b3390565b6001600160a01b0381166106405760405162461bcd60e51b81526004018080602001828103825260258152602001806108776025913960400191505060405180910390fd5b806001600160a01b031661065261040d565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b6001600160a01b0381166106f35760405162461bcd60e51b815260040180806020018281038252602981526020018061082b6029913960400191505060405180910390fd5b806001600160a01b03166107056103d3565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a3604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b8152905190819003601201902055565b6001600160a01b0381166107a95760405162461bcd60e51b81526004018080602001828103825260268152602001806108056026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737350726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6964206164647265737350726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e6450726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373a265627a7a72315820ce1a6350d193cc534b8fd3dfae16fba5ded624df5dca23960f51964a1f5605d464736f6c634300051100328be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e050726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA1B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x61 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x6A AND JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xA3B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xCA PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x114 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA1B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x8D0 DUP1 PUSH2 0x14B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x109 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x82100E3F GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xAAF10F42 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x2F0 JUMPI DUP1 PUSH4 0xCAAEE91C EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0xD42B779D EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0xD784D426 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3A0 JUMPI PUSH2 0x109 JUMP JUMPDEST DUP1 PUSH4 0x82100E3F EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x934D1FA4 EQ PUSH2 0x2DB JUMPI PUSH2 0x109 JUMP JUMPDEST DUP1 PUSH4 0x44BB3B2F GT PUSH2 0xDC JUMPI DUP1 PUSH4 0x44BB3B2F EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x6DB5C8FD EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x78E97925 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0x7A9262A2 EQ PUSH2 0x255 JUMPI PUSH2 0x109 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x3410FE6E EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0x41910F90 EQ PUSH2 0x1EC JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x113 PUSH2 0x3D3 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x854 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x17B JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x40D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x435 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x43C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x442 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x448 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x457 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x45D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x261 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x463 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x475 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x47B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C7 PUSH2 0x48A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x4AE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x3D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4B5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x346 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x526 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x538 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH3 0x27AC40 DUP2 JUMP JUMPDEST PUSH2 0xB9F DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x49F PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST PUSH2 0x4BD PUSH2 0x40D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x51A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x523 DUP2 PUSH2 0x5FB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x540 PUSH2 0x40D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x59D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x523 DUP2 PUSH2 0x6AE JUMP JUMPDEST PUSH2 0x5AE PUSH2 0x48A JUMP JUMPDEST PUSH2 0x5EE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x523 DUP2 PUSH2 0x764 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x640 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x877 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x652 PUSH2 0x40D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x82B PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x705 PUSH2 0x3D3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x805 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737350726F78793A3A736574496D706C656D PUSH6 0x6E746174696F PUSH15 0x3A20696E76616C6964206164647265 PUSH20 0x7350726F78793A3A28293A20696D706C656D656E PUSH21 0x6174696F6E206E6F7420666F756E6450726F78793A GASPRICE PUSH20 0x657450726F78794F776E65723A20696E76616C69 PUSH5 0x2061646472 PUSH6 0x7373A265627A PUSH27 0x72315820CE1A6350D193CC534B8FD3DFAE16FBA5DED624DF5DCA23 SWAP7 0xF MLOAD SWAP7 0x4A 0x1F JUMP SDIV 0xD4 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN DUP12 0xE0 SMOD SWAP13 MSTORE8 AND MSIZE EQ SGT DIFFICULTY 0xCD 0x1F 0xD0 LOG4 CALLCODE DUP5 NOT 0x49 PUSH32 0x9722A3DAAFE3B4186F6B6457E050726F78793A3A73657450726F78794F776E65 PUSH19 0x3A20696E76616C696420616464726573730000 ",
              "sourceMap": "434:75:62:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;;;;;;;;;;740:43:142;713:6;;740:43;-1:-1:-1;1653:26:147;1668:10;-1:-1:-1;;;;;1653:14:147;:26;:::i;:::-;434:75:62;;780:87:137;853:10;780:87;:::o;2644:249:147:-;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2776:45:147;;2797:15;-1:-1:-1;;;;;2797:13:147;:15;:::i;:::-;-1:-1:-1;;;;;2776:45:147;-1:-1:-1;;;;;;;;;;;2776:45:147;;;;;;;;;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;2867:19;2862:28::o;2983:134::-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o;434:75:62:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106101095760003560e01c806382100e3f11610095578063aaf10f4211610064578063aaf10f42146102f0578063caaee91c14610305578063d42b779d1461033a578063d784d4261461036d578063f2fde38b146103a057610109565b806382100e3f146102885780638da5cb5b1461029d5780638f32d59b146102b2578063934d1fa4146102db57610109565b806344bb3b2f116100dc57806344bb3b2f146102015780634cf088d9146102165780636db5c8fd1461022b57806378e97925146102405780637a9262a21461025557610109565b806308dcb3601461017f5780631ab7710d146101b05780633410fe6e146101c557806341910f90146101ec575b60006101136103d3565b90506001600160a01b03811661015a5760405162461bcd60e51b81526004018080602001828103825260238152602001806108546023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e81801561017b578184f35b8184fd5b34801561018b57600080fd5b506101946103fe565b604080516001600160a01b039092168252519081900360200190f35b3480156101bc57600080fd5b5061019461040d565b3480156101d157600080fd5b506101da610435565b60408051918252519081900360200190f35b3480156101f857600080fd5b506101da61043c565b34801561020d57600080fd5b506101da610442565b34801561022257600080fd5b50610194610448565b34801561023757600080fd5b506101da610457565b34801561024c57600080fd5b506101da61045d565b34801561026157600080fd5b506101da6004803603602081101561027857600080fd5b50356001600160a01b0316610463565b34801561029457600080fd5b506101da610475565b3480156102a957600080fd5b5061019461047b565b3480156102be57600080fd5b506102c761048a565b604080519115158252519081900360200190f35b3480156102e757600080fd5b506101da6104ae565b3480156102fc57600080fd5b506101946103d3565b34801561031157600080fd5b506103386004803603602081101561032857600080fd5b50356001600160a01b03166104b5565b005b34801561034657600080fd5b506101da6004803603602081101561035d57600080fd5b50356001600160a01b0316610526565b34801561037957600080fd5b506103386004803603602081101561039057600080fd5b50356001600160a01b0316610538565b3480156103ac57600080fd5b50610338600480360360208110156103c357600080fd5b50356001600160a01b03166105a6565b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b6001546001600160a01b031681565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b6227ac4081565b610b9f81565b60055481565b6002546001600160a01b031681565b60035481565b60045481565b60066020526000908152604090205481565b60085481565b6000546001600160a01b031690565b600080546001600160a01b031661049f6105f7565b6001600160a01b031614905090565b6212750081565b6104bd61040d565b6001600160a01b0316336001600160a01b03161461051a576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b610523816105fb565b50565b60076020526000908152604090205481565b61054061040d565b6001600160a01b0316336001600160a01b03161461059d576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b610523816106ae565b6105ae61048a565b6105ee576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61052381610764565b3390565b6001600160a01b0381166106405760405162461bcd60e51b81526004018080602001828103825260258152602001806108776025913960400191505060405180910390fd5b806001600160a01b031661065261040d565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b6001600160a01b0381166106f35760405162461bcd60e51b815260040180806020018281038252602981526020018061082b6029913960400191505060405180910390fd5b806001600160a01b03166107056103d3565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a3604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b8152905190819003601201902055565b6001600160a01b0381166107a95760405162461bcd60e51b81526004018080602001828103825260268152602001806108056026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737350726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6964206164647265737350726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e6450726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373a265627a7a72315820ce1a6350d193cc534b8fd3dfae16fba5ded624df5dca23960f51964a1f5605d464736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x109 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x82100E3F GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xAAF10F42 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x2F0 JUMPI DUP1 PUSH4 0xCAAEE91C EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0xD42B779D EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0xD784D426 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3A0 JUMPI PUSH2 0x109 JUMP JUMPDEST DUP1 PUSH4 0x82100E3F EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x934D1FA4 EQ PUSH2 0x2DB JUMPI PUSH2 0x109 JUMP JUMPDEST DUP1 PUSH4 0x44BB3B2F GT PUSH2 0xDC JUMPI DUP1 PUSH4 0x44BB3B2F EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x6DB5C8FD EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x78E97925 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0x7A9262A2 EQ PUSH2 0x255 JUMPI PUSH2 0x109 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x3410FE6E EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0x41910F90 EQ PUSH2 0x1EC JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x113 PUSH2 0x3D3 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x854 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x17B JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x40D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x435 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x43C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x442 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x448 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x457 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x45D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x261 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x463 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x475 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x47B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C7 PUSH2 0x48A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x4AE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x194 PUSH2 0x3D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4B5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x346 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x526 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x538 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH3 0x27AC40 DUP2 JUMP JUMPDEST PUSH2 0xB9F DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x49F PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST PUSH2 0x4BD PUSH2 0x40D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x51A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x523 DUP2 PUSH2 0x5FB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x540 PUSH2 0x40D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x59D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x523 DUP2 PUSH2 0x6AE JUMP JUMPDEST PUSH2 0x5AE PUSH2 0x48A JUMP JUMPDEST PUSH2 0x5EE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x523 DUP2 PUSH2 0x764 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x640 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x877 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x652 PUSH2 0x40D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x82B PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x705 PUSH2 0x3D3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x805 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737350726F78793A3A736574496D706C656D PUSH6 0x6E746174696F PUSH15 0x3A20696E76616C6964206164647265 PUSH20 0x7350726F78793A3A28293A20696D706C656D656E PUSH21 0x6174696F6E206E6F7420666F756E6450726F78793A GASPRICE PUSH20 0x657450726F78794F776E65723A20696E76616C69 PUSH5 0x2061646472 PUSH6 0x7373A265627A PUSH27 0x72315820CE1A6350D193CC534B8FD3DFAE16FBA5DED624DF5DCA23 SWAP7 0xF MLOAD SWAP7 0x4A 0x1F JUMP SDIV 0xD4 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "434:75:62:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3338:22:147;3363:19;:17;:19::i;:::-;3338:44;-1:-1:-1;;;;;;3394:28:147;;3386:76;;;;-1:-1:-1;;;3386:76:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3502:4;3496:11;3536:12;3533:1;3524:7;3511:38;3627:1;3624;3610:12;3601:7;3585:14;3580:3;3567:62;3645:14;3690:4;3687:1;3678:7;3663:32;3707:6;3718:41;;;;3795:4;3786:7;3779:21;3718:41;3748:4;3739:7;3732:21;697:17:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;697:17:63;;;:::i;:::-;;;;-1:-1:-1;;;;;697:17:63;;;;;;;;;;;;;;2983:134:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2983:134:147;;;:::i;1102:41:63:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1102:41:63;;;:::i;:::-;;;;;;;;;;;;;;;;941:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;941:40:63;;;:::i;1404:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:24:63;;;:::i;765:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;765:23:63;;;:::i;1206:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1206:26:63;;;:::i;1299:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1299:24:63;;;:::i;1486:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1486:46:63;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1486:46:63;-1:-1:-1;;;;;1486:46:63;;:::i;1711:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1711:30:63;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;1134:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;:::-;;;;;;;;;;;;;;;;;;825:43:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;825:43:63;;;:::i;2386:165:147:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2386:165:147;;;:::i;1404:91:148:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:91:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:91:148;-1:-1:-1;;;;;1404:91:148;;:::i;:::-;;1581:50:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1581:50:63;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1581:50:63;-1:-1:-1;;;;;1581:50:63;;:::i;1194:117:148:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1194:117:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1194:117:148;-1:-1:-1;;;;;1194:117:148;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1351:98:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;2386:165:147:-;1291:31;;;-1:-1:-1;;;1291:31:147;;;;;;;;;;;;2534:10;;2510:38::o;697:17:63:-;;;-1:-1:-1;;;;;697:17:63;;:::o;2983:134:147:-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o;1102:41:63:-;1136:7;1102:41;:::o;941:40::-;977:4;941:40;:::o;1404:24::-;;;;:::o;765:23::-;;;-1:-1:-1;;;;;765:23:63;;:::o;1206:26::-;;;;:::o;1299:24::-;;;;:::o;1486:46::-;;;;;;;;;;;;;:::o;1711:30::-;;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;825:43:63:-;861:7;825:43;:::o;1404:91:148:-;1801:15:147;:13;:15::i;:::-;-1:-1:-1;;;;;1787:29:147;:10;-1:-1:-1;;;;;1787:29:147;;1779:63;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;;;;1469:22:148;1484:6;1469:14;:22::i;:::-;1404:91;:::o;1581:50:63:-;;;;;;;;;;;;;:::o;1194:117:148:-;1801:15:147;:13;:15::i;:::-;-1:-1:-1;;;;;1787:29:147;:10;-1:-1:-1;;;;;1787:29:147;;1779:63;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;;;;1272:35:148;1291:15;1272:18;:35::i;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;780:87:137:-;853:10;780:87;:::o;2644:249:147:-;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2814:6;-1:-1:-1;;;;;2776:45:147;2797:15;:13;:15::i;:::-;-1:-1:-1;;;;;2776:45:147;;;;;;;;;;;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;2867:19;2862:28::o;1971:307::-;-1:-1:-1;;;;;2045:29:147;;2037:83;;;;-1:-1:-1;;;2037:83:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:15;-1:-1:-1;;;;;2129:59:147;2151:19;:17;:19::i;:::-;-1:-1:-1;;;;;2129:59:147;;;;;;;;;;;1291:31;;;-1:-1:-1;;;1291:31:147;;;;;;;;;;;;2243:28;2238:37::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "BASE_RATE()": "41910f90",
              "DIVISOR()": "3410fe6e",
              "SOV()": "08dcb360",
              "TWO_WEEKS()": "934d1fa4",
              "claimedBalances(address)": "d42b779d",
              "deploymentBlock()": "82100e3f",
              "getImplementation()": "aaf10f42",
              "getProxyOwner()": "1ab7710d",
              "isOwner()": "8f32d59b",
              "maxDuration()": "6db5c8fd",
              "owner()": "8da5cb5b",
              "setImplementation(address)": "d784d426",
              "setProxyOwner(address)": "caaee91c",
              "staking()": "4cf088d9",
              "startTime()": "78e97925",
              "stopBlock()": "44bb3b2f",
              "transferOwnership(address)": "f2fde38b",
              "withdrawals(address)": "7a9262a2"
            }
          },
          "userdoc": {
            "methods": {
              "getImplementation()": {
                "notice": "Return address of the implementation."
              },
              "getProxyOwner()": {
                "notice": "Return address of the owner."
              },
              "setImplementation(address)": {
                "notice": "Set address of the implementation."
              },
              "setProxyOwner(address)": {
                "notice": "Set address of the owner."
              }
            }
          }
        }
      },
      "contracts/governance/StakingRewards/StakingRewardsStorage.sol": {
        "StakingRewardsStorage": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "BASE_RATE",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DIVISOR",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "TWO_WEEKS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "claimedBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "deploymentBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDuration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract IStaking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "startTime",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "stopBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "withdrawals",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Staking Rewards Storage Contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b6103f1806100796000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637a9262a21161008c5780638f32d59b116100665780638f32d59b1461018b578063934d1fa4146101a7578063d42b779d146101af578063f2fde38b146101d5576100ea565b80637a9262a21461015557806382100e3f1461017b5780638da5cb5b14610183576100ea565b806344bb3b2f116100c857806344bb3b2f146101355780634cf088d91461013d5780636db5c8fd1461014557806378e979251461014d576100ea565b806308dcb360146100ef5780633410fe6e1461011357806341910f901461012d575b600080fd5b6100f76101fd565b604080516001600160a01b039092168252519081900360200190f35b61011b61020c565b60408051918252519081900360200190f35b61011b610213565b61011b610219565b6100f761021f565b61011b61022e565b61011b610234565b61011b6004803603602081101561016b57600080fd5b50356001600160a01b031661023a565b61011b61024c565b6100f7610252565b610193610261565b604080519115158252519081900360200190f35b61011b610285565b61011b600480360360208110156101c557600080fd5b50356001600160a01b031661028c565b6101fb600480360360208110156101eb57600080fd5b50356001600160a01b031661029e565b005b6001546001600160a01b031681565b6227ac4081565b610b9f81565b60055481565b6002546001600160a01b031681565b60035481565b60045481565b60066020526000908152604090205481565b60085481565b6000546001600160a01b031690565b600080546001600160a01b03166102766102f2565b6001600160a01b031614905090565b6212750081565b60076020526000908152604090205481565b6102a6610261565b6102e6576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6102ef816102f6565b50565b3390565b6001600160a01b03811661033b5760405162461bcd60e51b81526004018080602001828103825260268152602001806103976026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158205cf84d99cef06e4e3b7352c788d94dd75a5cfceeb74fec8eb22af8bc6ac7b86564736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x3F1 DUP1 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7A9262A2 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x8F32D59B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x934D1FA4 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xD42B779D EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1D5 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x7A9262A2 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x82100E3F EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x183 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x44BB3B2F GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x44BB3B2F EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x6DB5C8FD EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x78E97925 EQ PUSH2 0x14D JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x3410FE6E EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x41910F90 EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x1FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11B PUSH2 0x20C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11B PUSH2 0x213 JUMP JUMPDEST PUSH2 0x11B PUSH2 0x219 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x21F JUMP JUMPDEST PUSH2 0x11B PUSH2 0x22E JUMP JUMPDEST PUSH2 0x11B PUSH2 0x234 JUMP JUMPDEST PUSH2 0x11B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x23A JUMP JUMPDEST PUSH2 0x11B PUSH2 0x24C JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x252 JUMP JUMPDEST PUSH2 0x193 PUSH2 0x261 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11B PUSH2 0x285 JUMP JUMPDEST PUSH2 0x11B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x28C JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x29E JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH3 0x27AC40 DUP2 JUMP JUMPDEST PUSH2 0xB9F DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x276 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2A6 PUSH2 0x261 JUMP JUMPDEST PUSH2 0x2E6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2EF DUP2 PUSH2 0x2F6 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x33B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x397 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158205CF84D99CEF06E 0x4E EXTCODESIZE PUSH20 0x52C788D94DD75A5CFCEEB74FEC8EB22AF8BC6AC7 0xB8 PUSH6 0x64736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "615:1129:63:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;615:1129:63;;780:87:137;853:10;780:87;:::o;615:1129:63:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637a9262a21161008c5780638f32d59b116100665780638f32d59b1461018b578063934d1fa4146101a7578063d42b779d146101af578063f2fde38b146101d5576100ea565b80637a9262a21461015557806382100e3f1461017b5780638da5cb5b14610183576100ea565b806344bb3b2f116100c857806344bb3b2f146101355780634cf088d91461013d5780636db5c8fd1461014557806378e979251461014d576100ea565b806308dcb360146100ef5780633410fe6e1461011357806341910f901461012d575b600080fd5b6100f76101fd565b604080516001600160a01b039092168252519081900360200190f35b61011b61020c565b60408051918252519081900360200190f35b61011b610213565b61011b610219565b6100f761021f565b61011b61022e565b61011b610234565b61011b6004803603602081101561016b57600080fd5b50356001600160a01b031661023a565b61011b61024c565b6100f7610252565b610193610261565b604080519115158252519081900360200190f35b61011b610285565b61011b600480360360208110156101c557600080fd5b50356001600160a01b031661028c565b6101fb600480360360208110156101eb57600080fd5b50356001600160a01b031661029e565b005b6001546001600160a01b031681565b6227ac4081565b610b9f81565b60055481565b6002546001600160a01b031681565b60035481565b60045481565b60066020526000908152604090205481565b60085481565b6000546001600160a01b031690565b600080546001600160a01b03166102766102f2565b6001600160a01b031614905090565b6212750081565b60076020526000908152604090205481565b6102a6610261565b6102e6576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6102ef816102f6565b50565b3390565b6001600160a01b03811661033b5760405162461bcd60e51b81526004018080602001828103825260268152602001806103976026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158205cf84d99cef06e4e3b7352c788d94dd75a5cfceeb74fec8eb22af8bc6ac7b86564736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7A9262A2 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x8F32D59B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x934D1FA4 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xD42B779D EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1D5 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x7A9262A2 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x82100E3F EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x183 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x44BB3B2F GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x44BB3B2F EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x6DB5C8FD EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x78E97925 EQ PUSH2 0x14D JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x3410FE6E EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x41910F90 EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x1FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11B PUSH2 0x20C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11B PUSH2 0x213 JUMP JUMPDEST PUSH2 0x11B PUSH2 0x219 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x21F JUMP JUMPDEST PUSH2 0x11B PUSH2 0x22E JUMP JUMPDEST PUSH2 0x11B PUSH2 0x234 JUMP JUMPDEST PUSH2 0x11B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x23A JUMP JUMPDEST PUSH2 0x11B PUSH2 0x24C JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x252 JUMP JUMPDEST PUSH2 0x193 PUSH2 0x261 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11B PUSH2 0x285 JUMP JUMPDEST PUSH2 0x11B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x28C JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x29E JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH3 0x27AC40 DUP2 JUMP JUMPDEST PUSH2 0xB9F DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x276 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2A6 PUSH2 0x261 JUMP JUMPDEST PUSH2 0x2E6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2EF DUP2 PUSH2 0x2F6 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x33B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x397 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158205CF84D99CEF06E 0x4E EXTCODESIZE PUSH20 0x52C788D94DD75A5CFCEEB74FEC8EB22AF8BC6AC7 0xB8 PUSH6 0x64736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "615:1129:63:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;615:1129:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;697:17;;;:::i;:::-;;;;-1:-1:-1;;;;;697:17:63;;;;;;;;;;;;;;1102:41;;;:::i;:::-;;;;;;;;;;;;;;;;941:40;;;:::i;1404:24::-;;;:::i;765:23::-;;;:::i;1206:26::-;;;:::i;1299:24::-;;;:::i;1486:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1486:46:63;-1:-1:-1;;;;;1486:46:63;;:::i;1711:30::-;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;825:43:63;;;:::i;1581:50::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1581:50:63;-1:-1:-1;;;;;1581:50:63;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;697:17:63;;;-1:-1:-1;;;;;697:17:63;;:::o;1102:41::-;1136:7;1102:41;:::o;941:40::-;977:4;941:40;:::o;1404:24::-;;;;:::o;765:23::-;;;-1:-1:-1;;;;;765:23:63;;:::o;1206:26::-;;;;:::o;1299:24::-;;;;:::o;1486:46::-;;;;;;;;;;;;;:::o;1711:30::-;;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;825:43:63:-;861:7;825:43;:::o;1581:50::-;;;;;;;;;;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "BASE_RATE()": "41910f90",
              "DIVISOR()": "3410fe6e",
              "SOV()": "08dcb360",
              "TWO_WEEKS()": "934d1fa4",
              "claimedBalances(address)": "d42b779d",
              "deploymentBlock()": "82100e3f",
              "isOwner()": "8f32d59b",
              "maxDuration()": "6db5c8fd",
              "owner()": "8da5cb5b",
              "staking()": "4cf088d9",
              "startTime()": "78e97925",
              "stopBlock()": "44bb3b2f",
              "transferOwnership(address)": "f2fde38b",
              "withdrawals(address)": "7a9262a2"
            }
          },
          "userdoc": {
            "methods": {},
            "notice": "Just the storage part of staking rewards contract, no functions, only constant, variables and required structures (mappings). Used by StackingRewardsProxy. * What is SOV staking rewards - SIP-0024? The purpose of the SOV staking rewards - SIP-0024 is to reward, \"marginal stakers\" (ie, stakers by choice, not currently vesting) with liquid SOV at the beginning of each new staking interval."
          }
        }
      },
      "contracts/governance/Timelock.sol": {
        "ITimelock": {
          "abi": [
            {
              "constant": true,
              "inputs": [],
              "name": "GRACE_PERIOD",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "acceptAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "cancelTransaction",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "delay",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "executeTransaction",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "queueTransaction",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "queuedTransactions",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "GRACE_PERIOD()": "c1a287e2",
              "acceptAdmin()": "0e18b681",
              "cancelTransaction(address,uint256,string,bytes,uint256)": "591fcdfe",
              "delay()": "6a42b8f8",
              "executeTransaction(address,uint256,string,bytes,uint256)": "0825f38f",
              "queueTransaction(address,uint256,string,bytes,uint256)": "3a66f901",
              "queuedTransactions(bytes32)": "f2b06537"
            }
          },
          "userdoc": {
            "methods": {}
          }
        },
        "Timelock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "admin_",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "delay_",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "txHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "CancelTransaction",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "txHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "ExecuteTransaction",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "NewAdmin",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "newDelay",
                  "type": "uint256"
                }
              ],
              "name": "NewDelay",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newPendingAdmin",
                  "type": "address"
                }
              ],
              "name": "NewPendingAdmin",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "txHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "QueueTransaction",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "GRACE_PERIOD",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAXIMUM_DELAY",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MINIMUM_DELAY",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "acceptAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "cancelTransaction",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "delay",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "executeTransaction",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pendingAdmin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "queueTransaction",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "queuedTransactions",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "delay_",
                  "type": "uint256"
                }
              ],
              "name": "setDelay",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pendingAdmin_",
                  "type": "address"
                }
              ],
              "name": "setPendingAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "cancelTransaction(address,uint256,string,bytes,uint256)": {
                "params": {
                  "data": "The ethereum transaction input data payload.",
                  "eta": "Estimated Time of Accomplishment. The timestamp that the proposal will be available for execution, set once the vote succeeds.",
                  "signature": "The stanndard representation of the function called.",
                  "target": "The contract to call.",
                  "value": "The amount to send in the transaction."
                }
              },
              "constructor": {
                "params": {
                  "admin_": "Governance contract address.",
                  "delay_": "Time to wait for queued transactions to be executed."
                }
              },
              "executeTransaction(address,uint256,string,bytes,uint256)": {
                "params": {
                  "data": "The ethereum transaction input data payload.",
                  "eta": "Estimated Time of Accomplishment. The timestamp that the proposal will be available for execution, set once the vote succeeds.",
                  "signature": "The stanndard representation of the function called.",
                  "target": "The contract to call.",
                  "value": "The amount to send in the transaction."
                }
              },
              "queueTransaction(address,uint256,string,bytes,uint256)": {
                "params": {
                  "data": "The ethereum transaction input data payload.",
                  "eta": "Estimated Time of Accomplishment. The timestamp that the proposal will be available for execution, set once the vote succeeds.",
                  "signature": "The stanndard representation of the function called.",
                  "target": "The contract to call.",
                  "value": "The amount to send in the transaction."
                }
              },
              "setDelay(uint256)": {
                "params": {
                  "delay_": "The amount of time to wait until execution."
                }
              },
              "setPendingAdmin(address)": {
                "params": {
                  "pendingAdmin_": "The new pending admin address."
                }
              }
            },
            "title": "Sovryn Protocol Timelock contract, based on Compound system."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50604051611a69380380611a698339818101604052604081101561003357600080fd5b508051602090910151612a3081101561007d5760405162461bcd60e51b81526004018080602001828103825260378152602001806119fa6037913960400191505060405180910390fd5b62278d008111156100bf5760405162461bcd60e51b8152600401808060200182810382526038815260200180611a316038913960400191505060405180910390fd5b600080546001600160a01b039093166001600160a01b031990931692909217909155600255611907806100f36000396000f3fe6080604052600436106100c25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e2146105dd578063e177246e146105f2578063f2b065371461061c578063f851a4401461065a576100c2565b80636a42b8f81461059e5780637d645fab146105b3578063b1b43ae5146105c8576100c2565b80630825f38f146100c45780630e18b68114610279578063267822471461028e5780633a66f901146102bf5780634dd18bf51461041e578063591fcdfe14610451575b005b610204600480360360a08110156100da57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561010957600080fd5b82018360208201111561011b57600080fd5b803590602001918460018302840111600160201b8311171561013c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561018e57600080fd5b8201836020820111156101a057600080fd5b803590602001918460018302840111600160201b831117156101c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061066f915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023e578181015183820152602001610226565b50505050905090810190601f16801561026b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028557600080fd5b506100c2610c54565b34801561029a57600080fd5b506102a3610cf0565b604080516001600160a01b039092168252519081900360200190f35b3480156102cb57600080fd5b5061040c600480360360a08110156102e257600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561031157600080fd5b82018360208201111561032357600080fd5b803590602001918460018302840111600160201b8311171561034457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561039657600080fd5b8201836020820111156103a857600080fd5b803590602001918460018302840111600160201b831117156103c957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610cff915050565b60408051918252519081900360200190f35b34801561042a57600080fd5b506100c26004803603602081101561044157600080fd5b50356001600160a01b0316611010565b34801561045d57600080fd5b506100c2600480360360a081101561047457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111600160201b831117156104d657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561052857600080fd5b82018360208201111561053a57600080fd5b803590602001918460018302840111600160201b8311171561055b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061109e915050565b3480156105aa57600080fd5b5061040c611354565b3480156105bf57600080fd5b5061040c61135a565b3480156105d457600080fd5b5061040c611361565b3480156105e957600080fd5b5061040c611367565b3480156105fe57600080fd5b506100c26004803603602081101561061557600080fd5b503561136e565b34801561062857600080fd5b506106466004803603602081101561063f57600080fd5b5035611462565b604080519115158252519081900360200190f35b34801561066657600080fd5b506102a3611477565b6000546060906001600160a01b031633146106bb5760405162461bcd60e51b81526004018080602001828103825260388152602001806115e66038913960400191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561072a578181015183820152602001610712565b50505050905090810190601f1680156107575780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561078a578181015183820152602001610772565b50505050905090810190601f1680156107b75780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301206000818152600390935291205490995060ff16975061082896505050505050505760405162461bcd60e51b815260040180806020018281038252603d815260200180611739603d913960400191505060405180910390fd5b82610831611486565b101561086e5760405162461bcd60e51b81526004018080602001828103825260458152602001806116886045913960600191505060405180910390fd5b610881836212750063ffffffff61148a16565b610889611486565b11156108c65760405162461bcd60e51b81526004018080602001828103825260338152602001806116556033913960400191505060405180910390fd5b6000818152600360205260409020805460ff1916905584516060906108ec575083610979565b85805190602001208560405160200180836001600160e01b0319166001600160e01b031916815260040182805190602001908083835b602083106109415780518252601f199092019160209182019101610922565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b60006060896001600160a01b031689846040518082805190602001908083835b602083106109b85780518252601f199092019160209182019101610999565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610a1a576040519150601f19603f3d011682016040523d82523d6000602084013e610a1f565b606091505b509150915081610b2c576044815111610a695760405162461bcd60e51b815260040180806020018281038252603d81526020018061181c603d913960400191505060405180910390fd5b610aa86040518060400160405280601e81526020017f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a200000815250826114eb565b60405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610af1578181015183820152602001610ad9565b50505050905090810190601f168015610b1e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610ba9578181015183820152602001610b91565b50505050905090810190601f168015610bd65780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610c09578181015183820152602001610bf1565b50505050905090810190601f168015610c365780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b6001546001600160a01b03163314610c9d5760405162461bcd60e51b81526004018080602001828103825260388152602001806117766038913960400191505060405180910390fd5b60008054336001600160a01b031991821617808355600180549092169091556040516001600160a01b03909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b6001546001600160a01b031681565b600080546001600160a01b03163314610d495760405162461bcd60e51b81526004018080602001828103825260368152602001806117e66036913960400191505060405180910390fd5b610d63600254610d57611486565b9063ffffffff61148a16565b821015610da15760405162461bcd60e51b81526004018080602001828103825260498152602001806118596049913960600191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610e10578181015183820152602001610df8565b50505050905090810190601f168015610e3d5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610e70578181015183820152602001610e58565b50505050905090810190601f168015610e9d5780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550866001600160a01b0316817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610f68578181015183820152602001610f50565b50505050905090810190601f168015610f955780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610fc8578181015183820152602001610fb0565b50505050905090810190601f168015610ff55780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b33301461104e5760405162461bcd60e51b81526004018080602001828103825260388152602001806117ae6038913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b6000546001600160a01b031633146110e75760405162461bcd60e51b815260040180806020018281038252603781526020018061161e6037913960400191505060405180910390fd5b6000858585858560405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561115657818101518382015260200161113e565b50505050905090810190601f1680156111835780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156111b657818101518382015260200161119e565b50505050905090810190601f1680156111e35780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550856001600160a01b0316817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156112ae578181015183820152602001611296565b50505050905090810190601f1680156112db5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561130e5781810151838201526020016112f6565b50505050905090810190601f16801561133b5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b612a3081565b6212750081565b3330146113ac5760405162461bcd60e51b81526004018080602001828103825260318152602001806118a26031913960400191505060405180910390fd5b612a308110156113ed5760405162461bcd60e51b81526004018080602001828103825260348152602001806116cd6034913960400191505060405180910390fd5b62278d0081111561142f5760405162461bcd60e51b81526004018080602001828103825260388152602001806117016038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b6000546001600160a01b031681565b4290565b6000828201838110156114e4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6060808390506060839050606060448251845101036040519080825280601f01601f19166020018201604052801561152a576020820181803883390190505b509050806000805b85518110156115835785818151811061154757fe5b602001015160f81c60f81b83838060010194508151811061156457fe5b60200101906001600160f81b031916908160001a905350600101611532565b5060445b84518110156115d85784818151811061159c57fe5b602001015160f81c60f81b8383806001019450815181106115b957fe5b60200101906001600160f81b031916908160001a905350600101611587565b509097965050505050505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a723158200ee68cb5d83ca0373524ea2edfd825b04d63ea66d060343d0f3c0973964dc66a64736f6c6343000511003254696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1A69 CODESIZE SUB DUP1 PUSH2 0x1A69 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH2 0x2A30 DUP2 LT ISZERO PUSH2 0x7D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19FA PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0xBF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A31 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SSTORE PUSH2 0x1907 DUP1 PUSH2 0xF3 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A42B8F8 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xC1A287E2 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x5DD JUMPI DUP1 PUSH4 0xE177246E EQ PUSH2 0x5F2 JUMPI DUP1 PUSH4 0xF2B06537 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x65A JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x6A42B8F8 EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0x7D645FAB EQ PUSH2 0x5B3 JUMPI DUP1 PUSH4 0xB1B43AE5 EQ PUSH2 0x5C8 JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x825F38F EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0xE18B681 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x3A66F901 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x591FCDFE EQ PUSH2 0x451 JUMPI JUMPDEST STOP JUMPDEST PUSH2 0x204 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x66F SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x23E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x226 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x26B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH2 0xC54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0xCF0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xCFF SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1010 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x109E SWAP2 POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x1354 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x135A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x1361 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x1367 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x136E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x646 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1462 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x1477 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15E6 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x72A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x712 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x757 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x78A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x772 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7B7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP10 POP PUSH1 0xFF AND SWAP8 POP PUSH2 0x828 SWAP7 POP POP POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1739 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x831 PUSH2 0x1486 JUMP JUMPDEST LT ISZERO PUSH2 0x86E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1688 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x881 DUP4 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x148A AND JUMP JUMPDEST PUSH2 0x889 PUSH2 0x1486 JUMP JUMPDEST GT ISZERO PUSH2 0x8C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1655 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP5 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x8EC JUMPI POP DUP4 PUSH2 0x979 JUMP JUMPDEST DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x4 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x941 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x922 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x9B8 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x999 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA1A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xA1F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xB2C JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0xA69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x181C PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAA8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x54696D656C6F636B3A3A657865637574655472616E73616374696F6E3A200000 DUP2 MSTORE POP DUP3 PUSH2 0x14EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAD9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB1E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0xA560E3198060A2F10670C1EC5B403077EA6AE93CA8DE1C32B451DC1A943CD6E7 DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBA9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB91 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xBD6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC09 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBF1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC36 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1776 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP1 DUP4 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH32 0x71614071B88DEE5E0B2AE578A9DD7B2EBBE9AE832BA419DC0242CD065A290B6C SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17E6 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD63 PUSH1 0x2 SLOAD PUSH2 0xD57 PUSH2 0x1486 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x148A AND JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xDA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x49 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1859 PUSH1 0x49 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE10 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE3D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE70 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE58 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE9D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x76E2796DC3A81D57B0E8504B647FEBCBEEB5F4AF818E164F11EEF8131A6A763F DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF68 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF50 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF95 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFC8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFB0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFF5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x104E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17AE PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 PUSH32 0x69D78E38A01985FBB1462961809B4B2D65531BC93B2B94037F3334B82CA4A756 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x10E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x161E PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1156 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x113E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1183 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11B6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11E3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x2FFFC091A501FD91BFBFF27141450D3ACB40FB8E6D8382B243EC7A812A3AAF87 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12AE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1296 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x12DB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x130E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12F6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x133B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH3 0x278D00 DUP2 JUMP JUMPDEST PUSH2 0x2A30 DUP2 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x13AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18A2 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A30 DUP2 LT ISZERO PUSH2 0x13ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16CD PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0x142F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1701 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x948B1F6A42EE138B7E34058BA85A37F716D55FF25FF05A763F15BED6A04C8D2C SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x14E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x152A JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x1583 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1547 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1564 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1532 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x15D8 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x159C JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x15B9 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1587 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID SLOAD PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A2043616C6C206D PUSH22 0x737420636F6D652066726F6D2061646D696E2E54696D PUSH6 0x6C6F636B3A3A PUSH4 0x616E6365 PUSH13 0x5472616E73616374696F6E3A20 NUMBER PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH6 0x786563757465 SLOAD PUSH19 0x616E73616374696F6E3A205472616E73616374 PUSH10 0x6F6E206973207374616C PUSH6 0x2E54696D656C PUSH16 0x636B3A3A657865637574655472616E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420737572 PUSH17 0x61737365642074696D65206C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D75737420657863 PUSH6 0x6564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420626565 PUSH15 0x207175657565642E54696D656C6F63 PUSH12 0x3A3A61636365707441646D69 PUSH15 0x3A2043616C6C206D75737420636F6D PUSH6 0x2066726F6D20 PUSH17 0x656E64696E6741646D696E2E54696D656C PUSH16 0x636B3A3A73657450656E64696E674164 PUSH14 0x696E3A2043616C6C206D75737420 PUSH4 0x6F6D6520 PUSH7 0x726F6D2054696D PUSH6 0x6C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7175 PUSH6 0x75655472616E PUSH20 0x616374696F6E3A2043616C6C206D75737420636F PUSH14 0x652066726F6D2061646D696E2E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH6 0x786563757469 PUSH16 0x6E2072657665727465642E54696D656C PUSH16 0x636B3A3A71756575655472616E736163 PUSH21 0x696F6E3A20457374696D6174656420657865637574 PUSH10 0x6F6E20626C6F636B206D PUSH22 0x737420736174697366792064656C61792E54696D656C PUSH16 0x636B3A3A73657444656C61793A204361 PUSH13 0x6C206D75737420636F6D652066 PUSH19 0x6F6D2054696D656C6F636B2EA265627A7A7231 PC KECCAK256 0xE 0xE6 DUP13 0xB5 0xD8 EXTCODECOPY LOG0 CALLDATACOPY CALLDATALOAD 0x24 0xEA 0x2E 0xDF 0xD8 0x25 0xB0 0x4D PUSH4 0xEA66D060 CALLVALUE RETURNDATASIZE 0xF EXTCODECOPY MULMOD PUSH20 0x964DC66A64736F6C6343000511003254696D656C PUSH16 0x636B3A3A636F6E7374727563746F723A KECCAK256 DIFFICULTY PUSH6 0x6C6179206D75 PUSH20 0x7420657863656564206D696E696D756D2064656C PUSH2 0x792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E00 ",
              "sourceMap": "2368:6794:64:-;;;3465:283;8:9:-1;5:2;;;30:1;27;20:12;5:2;3465:283:64;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3465:283:64;;;;;;;2535:7;3528:23;;;3520:91;;;;-1:-1:-1;;;3520:91:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2585:7;3623:6;:23;;3615:92;;;;-1:-1:-1;;;3615:92:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3712:5;:14;;-1:-1:-1;;;;;3712:14:64;;;-1:-1:-1;;;;;;3712:14:64;;;;;;;;;;3730:5;:14;2368:6794;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106100c25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e2146105dd578063e177246e146105f2578063f2b065371461061c578063f851a4401461065a576100c2565b80636a42b8f81461059e5780637d645fab146105b3578063b1b43ae5146105c8576100c2565b80630825f38f146100c45780630e18b68114610279578063267822471461028e5780633a66f901146102bf5780634dd18bf51461041e578063591fcdfe14610451575b005b610204600480360360a08110156100da57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561010957600080fd5b82018360208201111561011b57600080fd5b803590602001918460018302840111600160201b8311171561013c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561018e57600080fd5b8201836020820111156101a057600080fd5b803590602001918460018302840111600160201b831117156101c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061066f915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023e578181015183820152602001610226565b50505050905090810190601f16801561026b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028557600080fd5b506100c2610c54565b34801561029a57600080fd5b506102a3610cf0565b604080516001600160a01b039092168252519081900360200190f35b3480156102cb57600080fd5b5061040c600480360360a08110156102e257600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561031157600080fd5b82018360208201111561032357600080fd5b803590602001918460018302840111600160201b8311171561034457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561039657600080fd5b8201836020820111156103a857600080fd5b803590602001918460018302840111600160201b831117156103c957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610cff915050565b60408051918252519081900360200190f35b34801561042a57600080fd5b506100c26004803603602081101561044157600080fd5b50356001600160a01b0316611010565b34801561045d57600080fd5b506100c2600480360360a081101561047457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111600160201b831117156104d657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561052857600080fd5b82018360208201111561053a57600080fd5b803590602001918460018302840111600160201b8311171561055b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061109e915050565b3480156105aa57600080fd5b5061040c611354565b3480156105bf57600080fd5b5061040c61135a565b3480156105d457600080fd5b5061040c611361565b3480156105e957600080fd5b5061040c611367565b3480156105fe57600080fd5b506100c26004803603602081101561061557600080fd5b503561136e565b34801561062857600080fd5b506106466004803603602081101561063f57600080fd5b5035611462565b604080519115158252519081900360200190f35b34801561066657600080fd5b506102a3611477565b6000546060906001600160a01b031633146106bb5760405162461bcd60e51b81526004018080602001828103825260388152602001806115e66038913960400191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561072a578181015183820152602001610712565b50505050905090810190601f1680156107575780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561078a578181015183820152602001610772565b50505050905090810190601f1680156107b75780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301206000818152600390935291205490995060ff16975061082896505050505050505760405162461bcd60e51b815260040180806020018281038252603d815260200180611739603d913960400191505060405180910390fd5b82610831611486565b101561086e5760405162461bcd60e51b81526004018080602001828103825260458152602001806116886045913960600191505060405180910390fd5b610881836212750063ffffffff61148a16565b610889611486565b11156108c65760405162461bcd60e51b81526004018080602001828103825260338152602001806116556033913960400191505060405180910390fd5b6000818152600360205260409020805460ff1916905584516060906108ec575083610979565b85805190602001208560405160200180836001600160e01b0319166001600160e01b031916815260040182805190602001908083835b602083106109415780518252601f199092019160209182019101610922565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b60006060896001600160a01b031689846040518082805190602001908083835b602083106109b85780518252601f199092019160209182019101610999565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610a1a576040519150601f19603f3d011682016040523d82523d6000602084013e610a1f565b606091505b509150915081610b2c576044815111610a695760405162461bcd60e51b815260040180806020018281038252603d81526020018061181c603d913960400191505060405180910390fd5b610aa86040518060400160405280601e81526020017f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a200000815250826114eb565b60405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610af1578181015183820152602001610ad9565b50505050905090810190601f168015610b1e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610ba9578181015183820152602001610b91565b50505050905090810190601f168015610bd65780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610c09578181015183820152602001610bf1565b50505050905090810190601f168015610c365780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b6001546001600160a01b03163314610c9d5760405162461bcd60e51b81526004018080602001828103825260388152602001806117766038913960400191505060405180910390fd5b60008054336001600160a01b031991821617808355600180549092169091556040516001600160a01b03909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b6001546001600160a01b031681565b600080546001600160a01b03163314610d495760405162461bcd60e51b81526004018080602001828103825260368152602001806117e66036913960400191505060405180910390fd5b610d63600254610d57611486565b9063ffffffff61148a16565b821015610da15760405162461bcd60e51b81526004018080602001828103825260498152602001806118596049913960600191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610e10578181015183820152602001610df8565b50505050905090810190601f168015610e3d5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610e70578181015183820152602001610e58565b50505050905090810190601f168015610e9d5780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550866001600160a01b0316817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610f68578181015183820152602001610f50565b50505050905090810190601f168015610f955780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610fc8578181015183820152602001610fb0565b50505050905090810190601f168015610ff55780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b33301461104e5760405162461bcd60e51b81526004018080602001828103825260388152602001806117ae6038913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b6000546001600160a01b031633146110e75760405162461bcd60e51b815260040180806020018281038252603781526020018061161e6037913960400191505060405180910390fd5b6000858585858560405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561115657818101518382015260200161113e565b50505050905090810190601f1680156111835780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156111b657818101518382015260200161119e565b50505050905090810190601f1680156111e35780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550856001600160a01b0316817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156112ae578181015183820152602001611296565b50505050905090810190601f1680156112db5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561130e5781810151838201526020016112f6565b50505050905090810190601f16801561133b5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b612a3081565b6212750081565b3330146113ac5760405162461bcd60e51b81526004018080602001828103825260318152602001806118a26031913960400191505060405180910390fd5b612a308110156113ed5760405162461bcd60e51b81526004018080602001828103825260348152602001806116cd6034913960400191505060405180910390fd5b62278d0081111561142f5760405162461bcd60e51b81526004018080602001828103825260388152602001806117016038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b6000546001600160a01b031681565b4290565b6000828201838110156114e4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6060808390506060839050606060448251845101036040519080825280601f01601f19166020018201604052801561152a576020820181803883390190505b509050806000805b85518110156115835785818151811061154757fe5b602001015160f81c60f81b83838060010194508151811061156457fe5b60200101906001600160f81b031916908160001a905350600101611532565b5060445b84518110156115d85784818151811061159c57fe5b602001015160f81c60f81b8383806001019450815181106115b957fe5b60200101906001600160f81b031916908160001a905350600101611587565b509097965050505050505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a723158200ee68cb5d83ca0373524ea2edfd825b04d63ea66d060343d0f3c0973964dc66a64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A42B8F8 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xC1A287E2 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x5DD JUMPI DUP1 PUSH4 0xE177246E EQ PUSH2 0x5F2 JUMPI DUP1 PUSH4 0xF2B06537 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x65A JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x6A42B8F8 EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0x7D645FAB EQ PUSH2 0x5B3 JUMPI DUP1 PUSH4 0xB1B43AE5 EQ PUSH2 0x5C8 JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x825F38F EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0xE18B681 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x3A66F901 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x591FCDFE EQ PUSH2 0x451 JUMPI JUMPDEST STOP JUMPDEST PUSH2 0x204 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x66F SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x23E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x226 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x26B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH2 0xC54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0xCF0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xCFF SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1010 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x109E SWAP2 POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x1354 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x135A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x1361 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C PUSH2 0x1367 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x136E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x646 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1462 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x1477 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15E6 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x72A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x712 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x757 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x78A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x772 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7B7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP10 POP PUSH1 0xFF AND SWAP8 POP PUSH2 0x828 SWAP7 POP POP POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1739 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x831 PUSH2 0x1486 JUMP JUMPDEST LT ISZERO PUSH2 0x86E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1688 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x881 DUP4 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x148A AND JUMP JUMPDEST PUSH2 0x889 PUSH2 0x1486 JUMP JUMPDEST GT ISZERO PUSH2 0x8C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1655 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP5 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x8EC JUMPI POP DUP4 PUSH2 0x979 JUMP JUMPDEST DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x4 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x941 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x922 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x9B8 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x999 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA1A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xA1F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xB2C JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0xA69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x181C PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAA8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x54696D656C6F636B3A3A657865637574655472616E73616374696F6E3A200000 DUP2 MSTORE POP DUP3 PUSH2 0x14EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAD9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB1E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0xA560E3198060A2F10670C1EC5B403077EA6AE93CA8DE1C32B451DC1A943CD6E7 DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBA9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB91 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xBD6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC09 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBF1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC36 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1776 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP1 DUP4 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH32 0x71614071B88DEE5E0B2AE578A9DD7B2EBBE9AE832BA419DC0242CD065A290B6C SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD49 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17E6 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD63 PUSH1 0x2 SLOAD PUSH2 0xD57 PUSH2 0x1486 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x148A AND JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xDA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x49 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1859 PUSH1 0x49 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE10 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE3D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE70 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE58 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE9D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x76E2796DC3A81D57B0E8504B647FEBCBEEB5F4AF818E164F11EEF8131A6A763F DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF68 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF50 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF95 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFC8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFB0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFF5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x104E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17AE PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 PUSH32 0x69D78E38A01985FBB1462961809B4B2D65531BC93B2B94037F3334B82CA4A756 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x10E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x161E PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1156 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x113E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1183 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11B6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11E3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x2FFFC091A501FD91BFBFF27141450D3ACB40FB8E6D8382B243EC7A812A3AAF87 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12AE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1296 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x12DB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x130E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12F6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x133B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH3 0x278D00 DUP2 JUMP JUMPDEST PUSH2 0x2A30 DUP2 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x13AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18A2 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A30 DUP2 LT ISZERO PUSH2 0x13ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16CD PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0x142F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1701 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x948B1F6A42EE138B7E34058BA85A37F716D55FF25FF05A763F15BED6A04C8D2C SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x14E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x152A JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x1583 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1547 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1564 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1532 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x15D8 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x159C JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x15B9 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1587 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID SLOAD PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A2043616C6C206D PUSH22 0x737420636F6D652066726F6D2061646D696E2E54696D PUSH6 0x6C6F636B3A3A PUSH4 0x616E6365 PUSH13 0x5472616E73616374696F6E3A20 NUMBER PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH6 0x786563757465 SLOAD PUSH19 0x616E73616374696F6E3A205472616E73616374 PUSH10 0x6F6E206973207374616C PUSH6 0x2E54696D656C PUSH16 0x636B3A3A657865637574655472616E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420737572 PUSH17 0x61737365642074696D65206C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D75737420657863 PUSH6 0x6564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420626565 PUSH15 0x207175657565642E54696D656C6F63 PUSH12 0x3A3A61636365707441646D69 PUSH15 0x3A2043616C6C206D75737420636F6D PUSH6 0x2066726F6D20 PUSH17 0x656E64696E6741646D696E2E54696D656C PUSH16 0x636B3A3A73657450656E64696E674164 PUSH14 0x696E3A2043616C6C206D75737420 PUSH4 0x6F6D6520 PUSH7 0x726F6D2054696D PUSH6 0x6C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7175 PUSH6 0x75655472616E PUSH20 0x616374696F6E3A2043616C6C206D75737420636F PUSH14 0x652066726F6D2061646D696E2E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH6 0x786563757469 PUSH16 0x6E2072657665727465642E54696D656C PUSH16 0x636B3A3A71756575655472616E736163 PUSH21 0x696F6E3A20457374696D6174656420657865637574 PUSH10 0x6F6E20626C6F636B206D PUSH22 0x737420736174697366792064656C61792E54696D656C PUSH16 0x636B3A3A73657444656C61793A204361 PUSH13 0x6C206D75737420636F6D652066 PUSH19 0x6F6D2054696D656C6F636B2EA265627A7A7231 PC KECCAK256 0xE 0xE6 DUP13 0xB5 0xD8 EXTCODECOPY LOG0 CALLDATACOPY CALLDATALOAD 0x24 0xEA 0x2E 0xDF 0xD8 0x25 0xB0 0x4D PUSH4 0xEA66D060 CALLVALUE RETURNDATASIZE 0xF EXTCODECOPY MULMOD PUSH20 0x964DC66A64736F6C634300051100320000000000 ",
              "sourceMap": "2368:6794:64:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7347:1365;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;7347:1365:64;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7347:1365:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7347:1365:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7347:1365:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7347:1365:64;;;;;;;;-1:-1:-1;7347:1365:64;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;7347:1365:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7347:1365:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7347:1365:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7347:1365:64;;-1:-1:-1;;7347:1365:64;;;-1:-1:-1;7347:1365:64;;-1:-1:-1;;7347:1365:64:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7347:1365:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4435:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4435:209:64;;;:::i;2619:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2619:27:64;;;:::i;:::-;;;;-1:-1:-1;;;;;2619:27:64;;;;;;;;;;;;;;5457:578;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5457:578:64;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;5457:578:64;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5457:578:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5457:578:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5457:578:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5457:578:64;;;;;;;;-1:-1:-1;5457:578:64;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;5457:578:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5457:578:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5457:578:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5457:578:64;;-1:-1:-1;;5457:578:64;;;-1:-1:-1;5457:578:64;;-1:-1:-1;;5457:578:64:i;:::-;;;;;;;;;;;;;;;;4769:230;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4769:230:64;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4769:230:64;-1:-1:-1;;;;;4769:230:64;;:::i;6461:420::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6461:420:64;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;6461:420:64;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6461:420:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6461:420:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6461:420:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6461:420:64;;;;;;;;-1:-1:-1;6461:420:64;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6461:420:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6461:420:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6461:420:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6461:420:64;;-1:-1:-1;;6461:420:64;;;-1:-1:-1;6461:420:64;;-1:-1:-1;;6461:420:64:i;2649:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2649:20:64;;;:::i;2545:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2545:47:64;;;:::i;2495:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2495:47:64;;;:::i;2446:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2446:46:64;;;:::i;4002:369::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4002:369:64;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4002:369:64;;:::i;2673:50::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2673:50:64;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2673:50:64;;:::i;:::-;;;;;;;;;;;;;;;;;;2596:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2596:20:64;;;:::i;7347:1365::-;7540:5;;7500:12;;-1:-1:-1;;;;;7540:5:64;7526:10;:19;7518:88;;;;-1:-1:-1;;;7518:88:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7611:14;7649:6;7657:5;7664:9;7675:4;7681:3;7638:47;;;;;;-1:-1:-1;;;;;7638:47:64;-1:-1:-1;;;;;7638:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7638:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7638:47:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7638:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7638:47:64;;;-1:-1:-1;;26:21;;;22:32;6:49;;7638:47:64;;;7628:58;;49:4:-1;7628:58:64;;;;7698:26;;;;:18;:26;;;;;;7628:58;;-1:-1:-1;7698:26:64;;;-1:-1:-1;7690:100:64;;-1:-1:-1;;;;;;;7690:100:64;;;-1:-1:-1;;;7690:100:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7825:3;7802:19;:17;:19::i;:::-;:26;;7794:108;;;;-1:-1:-1;;;7794:108:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7937:21;:3;2485:7;7937:21;:7;:21;:::i;:::-;7914:19;:17;:19::i;:::-;:44;;7906:108;;;;-1:-1:-1;;;7906:108:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8048:5;8019:26;;;:18;:26;;;;;:34;;-1:-1:-1;;8019:34:64;;;8088:23;;8058:21;;8084:145;;-1:-1:-1;8134:4:64;8084:145;;;8205:9;8189:27;;;;;;8219:4;8165:59;;;;;;-1:-1:-1;;;;;8165:59:64;;-1:-1:-1;;;;;8165:59:64;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8165:59:64;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8165:59:64;;;8154:70;;8084:145;8287:12;8301:23;8328:6;-1:-1:-1;;;;;8328:11:64;8346:5;8353:8;8328:34;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8328:34:64;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8286:76:64;;;;8371:7;8366:248;;1386:2:49;8389:10:64;:17;:40;8385:225;;8437:71;;-1:-1:-1;;;8437:71:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8385:225;8533:70;;;;;;;;;;;;;;;;;;8591:10;8533:16;:70::i;:::-;8526:78;;-1:-1:-1;;;8526:78:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8526:78:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8385:225;8650:6;-1:-1:-1;;;;;8623:63:64;8642:6;8623:63;8658:5;8665:9;8676:4;8682:3;8623:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8623:63:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8623:63:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8623:63:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8698:10;7347:1365;-1:-1:-1;;;;;;;;;7347:1365:64:o;4435:209::-;4491:12;;-1:-1:-1;;;;;4491:12:64;4477:10;:26;4469:95;;;;-1:-1:-1;;;4469:95:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4568:5;:18;;4576:10;-1:-1:-1;;;;;;4568:18:64;;;;;;;-1:-1:-1;4590:25:64;;;;;;;;4625:15;;-1:-1:-1;;;;;4634:5:64;;;;4625:15;;;4435:209::o;2619:27::-;;;-1:-1:-1;;;;;2619:27:64;;:::o;5457:578::-;5600:7;5635:5;;-1:-1:-1;;;;;5635:5:64;5621:10;:19;5613:86;;;;-1:-1:-1;;;5613:86:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5718:30;5742:5;;5718:19;:17;:19::i;:::-;:23;:30;:23;:30;:::i;:::-;5711:3;:37;;5703:123;;;;-1:-1:-1;;;5703:123:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5831:14;5869:6;5877:5;5884:9;5895:4;5901:3;5858:47;;;;;;-1:-1:-1;;;;;5858:47:64;-1:-1:-1;;;;;5858:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5858:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5858:47:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5858:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5858:47:64;;;5848:58;;;;;;5831:75;;5939:4;5910:18;:26;5929:6;5910:26;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;5978:6;-1:-1:-1;;;;;5953:61:64;5970:6;5953:61;5986:5;5993:9;6004:4;6010:3;5953:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5953:61:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5953:61:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5953:61:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6025:6;5457:578;-1:-1:-1;;;;;;5457:578:64:o;4769:230::-;4836:10;4858:4;4836:27;4828:96;;;;-1:-1:-1;;;4828:96:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4928:12;:28;;-1:-1:-1;;;;;;4928:28:64;-1:-1:-1;;;;;4928:28:64;;;;;;;;;;;4966:29;;4982:12;;;4966:29;;-1:-1:-1;;4966:29:64;4769:230;:::o;6461:420::-;6622:5;;-1:-1:-1;;;;;6622:5:64;6608:10;:19;6600:87;;;;-1:-1:-1;;;6600:87:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6692:14;6730:6;6738:5;6745:9;6756:4;6762:3;6719:47;;;;;;-1:-1:-1;;;;;6719:47:64;-1:-1:-1;;;;;6719:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6719:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6719:47:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6719:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6719:47:64;;;6709:58;;;;;;6692:75;;6800:5;6771:18;:26;6790:6;6771:26;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;6841:6;-1:-1:-1;;;;;6815:62:64;6833:6;6815:62;6849:5;6856:9;6867:4;6873:3;6815:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6815:62:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6815:62:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6815:62:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6461:420;;;;;;:::o;2649:20::-;;;;:::o;2545:47::-;2585:7;2545:47;:::o;2495:::-;2535:7;2495:47;:::o;2446:46::-;2485:7;2446:46;:::o;4002:369::-;4055:10;4077:4;4055:27;4047:89;;;;-1:-1:-1;;;4047:89:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2535:7;4148:6;:23;;4140:88;;;;-1:-1:-1;;;4140:88:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2585:7;4240:6;:23;;4232:92;;;;-1:-1:-1;;;4232:92:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4328:5;:14;;;4352:15;;4336:6;;4352:15;;;;;4002:369;:::o;2673:50::-;;;;;;;;;;;;;;;:::o;2596:20::-;;;-1:-1:-1;;;;;2596:20:64;;:::o;9013:147::-;9141:15;9013:147;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;1719:569:49:-;1808:13;1827:22;1858:4;1827:36;;1867:22;1898:4;1867:36;;1907:19;1386:2;1959:9;:16;1940:9;:16;:35;:57;1929:69;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;1929:69:49;87:34:-1;135:17;;-1:-1;1929:69:49;-1:-1:-1;1907:91:49;-1:-1:-1;1907:91:49;2044:9;;2061:87;2085:9;:16;2081:1;:20;2061:87;;;2131:9;2141:1;2131:12;;;;;;;;;;;;;;;;2113:10;2124:3;;;;;;2113:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2113:30:49;;;;;;;;-1:-1:-1;2103:3:49;;2061:87;;;-1:-1:-1;1386:2:49;2151:105;2193:9;:16;2189:1;:20;2151:105;;;2239:9;2249:1;2239:12;;;;;;;;;;;;;;;;2221:10;2232:3;;;;;;2221:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2221:30:49;;;;;;;;-1:-1:-1;2211:3:49;;2151:105;;;-1:-1:-1;2273:10:49;;1719:569;-1:-1:-1;;;;;;;1719:569:49:o"
            },
            "methodIdentifiers": {
              "GRACE_PERIOD()": "c1a287e2",
              "MAXIMUM_DELAY()": "7d645fab",
              "MINIMUM_DELAY()": "b1b43ae5",
              "acceptAdmin()": "0e18b681",
              "admin()": "f851a440",
              "cancelTransaction(address,uint256,string,bytes,uint256)": "591fcdfe",
              "delay()": "6a42b8f8",
              "executeTransaction(address,uint256,string,bytes,uint256)": "0825f38f",
              "pendingAdmin()": "26782247",
              "queueTransaction(address,uint256,string,bytes,uint256)": "3a66f901",
              "queuedTransactions(bytes32)": "f2b06537",
              "setDelay(uint256)": "e177246e",
              "setPendingAdmin(address)": "4dd18bf5"
            }
          },
          "userdoc": {
            "methods": {
              "acceptAdmin()": {
                "notice": "Accept a new admin for the timelock."
              },
              "cancelTransaction(address,uint256,string,bytes,uint256)": {
                "notice": "Cancel a transaction."
              },
              "constructor": "Function called on instance deployment of the contract.",
              "executeTransaction(address,uint256,string,bytes,uint256)": {
                "notice": "Executes a previously queued transaction from the governance."
              },
              "queueTransaction(address,uint256,string,bytes,uint256)": {
                "notice": "Queue a new transaction from the governance contract."
              },
              "setDelay(uint256)": {
                "notice": "Set a new delay when executing the contract calls."
              },
              "setPendingAdmin(address)": {
                "notice": "Set a new pending admin for the timelock."
              }
            },
            "notice": "This contract lets Sovryn governance system set up its own Time Lock instance to execute transactions proposed through the GovernorAlpha contract instance. * The Timelock contract allows its admin (Sovryn governance on GovernorAlpha contract) to add arbitrary function calls to a queue. This contract can only execute a function call if the function call has been in the queue for at least 3 hours. * Anytime the Timelock contract makes a function call, it must be the case that the function call was first made public by having been publicly added to the queue at least 3 hours prior. * The intention is to provide GovernorAlpha contract the functionality to queue proposal actions. This would mean that any changes made by Sovryn governance of any contract would necessarily come with at least an advanced warning. This makes the Sovryn system follow a “time-delayed, opt-out” upgrade pattern (rather than an “instant, forced” upgrade pattern). * Time-delaying admin actions gives users a chance to exit system if its admins become malicious or compromised (or make a change that the users do not like). Downside is that honest admins would be unable to lock down functionality to protect users if a critical bug was found. * Delayed transactions reduce the amount of trust required by users of Sovryn and the overall risk for contracts building on top of it, as GovernorAlpha."
          }
        }
      },
      "contracts/governance/Vesting/DevelopmentFund.sol": {
        "DevelopmentFund": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_lockedTokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_safeVault",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_unlockedTokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_lastReleaseTime",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_releaseDuration",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_releaseTokenAmount",
                  "type": "uint256[]"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "DevelopmentFundActivated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "DevelopmentFundExpired",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "LockedTokenTransferByLockedOwner",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "LockedTokenTransferByUnlockedOwner",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newLockedOwner",
                  "type": "address"
                }
              ],
              "name": "NewLockedOwnerAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldLockedOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newLockedOwner",
                  "type": "address"
                }
              ],
              "name": "NewLockedOwnerApproved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_releaseCount",
                  "type": "uint256"
                }
              ],
              "name": "TokenReleaseChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newUnlockedOwner",
                  "type": "address"
                }
              ],
              "name": "UnlockedOwnerUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_releaseCount",
                  "type": "uint256"
                }
              ],
              "name": "UnlockedTokenWithdrawalByUnlockedOwner",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "approveLockedTokenOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_newLastReleaseTime",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_releaseDuration",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_releaseTokenAmount",
                  "type": "uint256[]"
                }
              ],
              "name": "changeTokenReleaseSchedule",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "depositTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getReleaseDuration",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_releaseTokenDuration",
                  "type": "uint256[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getReleaseTokenAmount",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_currentReleaseTokenAmount",
                  "type": "uint256[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "init",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lastReleaseTime",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedTokenOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "newLockedTokenOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "releaseDuration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "releaseTokenAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "safeVault",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "status",
              "outputs": [
                {
                  "internalType": "enum DevelopmentFund.Status",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                }
              ],
              "name": "transferTokensByLockedTokenOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "transferTokensByUnlockedTokenOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "unlockedTokenOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newLockedTokenOwner",
                  "type": "address"
                }
              ],
              "name": "updateLockedTokenOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newUnlockedTokenOwner",
                  "type": "address"
                }
              ],
              "name": "updateUnlockedTokenOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawTokensByUnlockedTokenOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Franklin Richards",
            "methods": {
              "approveLockedTokenOwner()": {
                "details": "This approval is an added security to avoid development fund takeover by a compromised locked token owner."
              },
              "changeTokenReleaseSchedule(uint256,uint256[],uint256[])": {
                "details": "_releaseDuration and _releaseTokenAmount should be specified in reverse order of release.",
                "params": {
                  "_newLastReleaseTime": "If the last release time is to be changed, zero if no change required.",
                  "_releaseDuration": "The time duration between each release calculated from `lastReleaseTime` in seconds.",
                  "_releaseTokenAmount": "The amount of token to be released in each duration/interval."
                }
              },
              "constructor": {
                "details": "Initial release schedule should be verified, error will result in either redeployment or calling changeTokenReleaseSchedule() after init() along with token transfer.",
                "params": {
                  "_SOV": "The SOV token address.",
                  "_lastReleaseTime": "If the last release time is to be changed, zero if no change required.",
                  "_lockedTokenOwner": "The owner of the locked tokens & contract.",
                  "_releaseDuration": "The time duration between each release calculated from `lastReleaseTime` in seconds.",
                  "_releaseTokenAmount": "The amount of token to be released in each duration/interval.",
                  "_safeVault": "The emergency wallet/contract to transfer token.",
                  "_unlockedTokenOwner": "The owner of the unlocked tokens."
                }
              },
              "depositTokens(uint256)": {
                "details": "These tokens can be withdrawn/transferred any time by the lockedTokenOwner.",
                "params": {
                  "_amount": "the amount of tokens deposited."
                }
              },
              "getReleaseDuration()": {
                "return": "_currentReleaseDuration The current release duration."
              },
              "getReleaseTokenAmount()": {
                "return": "_currentReleaseTokenAmount The current release token amount."
              },
              "init()": {
                "details": "Without calling this function, the contract will not work."
              },
              "transferTokensByLockedTokenOwner(address)": {
                "details": "This could be called when the current development fund has to be upgraded.",
                "params": {
                  "_receiver": "The address which receives this token transfer."
                }
              },
              "transferTokensByUnlockedTokenOwner()": {
                "details": "This could be called when governance or development fund might be compromised."
              },
              "updateLockedTokenOwner(address)": {
                "params": {
                  "_newLockedTokenOwner": "The owner of the locked tokens & contract."
                }
              },
              "updateUnlockedTokenOwner(address)": {
                "params": {
                  "_newUnlockedTokenOwner": "The new unlocked token owner."
                }
              },
              "withdrawTokensByUnlockedTokenOwner(uint256)": {
                "params": {
                  "_amount": "The amount to be withdrawn."
                }
              }
            },
            "title": "A holding contract for Sovryn Development Fund."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50604051620021a5380380620021a5833981810160405260e08110156200003757600080fd5b815160208301516040808501516060860151608087015160a0880180519451969895979396929591949293820192846401000000008211156200007957600080fd5b9083019060208201858111156200008f57600080fd5b8251866020820283011164010000000082111715620000ad57600080fd5b82525081516020918201928201910280838360005b83811015620000dc578181015183820152602001620000c2565b50505050905001604052602001805160405193929190846401000000008211156200010657600080fd5b9083019060208201858111156200011c57600080fd5b82518660208202830111640100000000821117156200013a57600080fd5b82525081516020918201928201910280838360005b83811015620001695781810151838201526020016200014f565b5050505091909101604052505050506001600160a01b038716620001d4576040805162461bcd60e51b815260206004820152601460248201527f496e76616c696420534f5620416464726573732e000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0386166200021b5760405162461bcd60e51b815260040180806020018281038252602e81526020018062002177602e913960400191505060405180910390fd5b6001600160a01b03851662000277576040805162461bcd60e51b815260206004820152601b60248201527f53616665205661756c74206164647265737320696e76616c69642e0000000000604482015290519081900360640190fd5b6001600160a01b038416620002d3576040805162461bcd60e51b815260206004820152601f60248201527f556e6c6f636b656420746f6b656e206164647265737320696e76616c69642e00604482015290519081900360640190fd5b600080546001600160a01b03808a166001600160a01b031992831617909255600180548984169083161790556003805488841690831617905560028054928716929091169190911790556005839055826200032d57426005555b805182511462000384576040805162461bcd60e51b815260206004820181905260248201527f52656c65617365205363686564756c6520646f6573206e6f74206d617463682e604482015290519081900360640190fd5b815162000399906006906020850190620003bd565b508051620003af906007906020840190620003bd565b50505050505050506200042d565b828054828255906000526020600020908101928215620003fb579160200282015b82811115620003fb578251825591602001919060010190620003de565b50620004099291506200040d565b5090565b6200042a91905b8082111562000409576000815560010162000414565b90565b611d3a806200043d6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063867513a9116100ad578063da45b3ac11610071578063da45b3ac1461040c578063dd49756e14610414578063deef94de14610431578063dfaf734a14610439578063e1c7392a146104415761012c565b8063867513a91461036c5780638d5b16661461039b5780638f833272146103c1578063ad99103d146103de578063cdc0d718146104045761012c565b80634518b52e116100f45780634518b52e14610311578063460ca0eb14610319578063532c677614610336578063716d9bf81461035c578063721ce1e7146103645761012c565b806308dcb36014610131578063200d2ed2146101555780632aa4486f146101815780633256f0fe1461018957806334e2366f146101e1575b600080fd5b610139610449565b604080516001600160a01b039092168252519081900360200190f35b61015d610458565b6040518082600281111561016d57fe5b60ff16815260200191505060405180910390f35b610139610468565b610191610477565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101cd5781810151838201526020016101b5565b505050509050019250505060405180910390f35b61030f600480360360608110156101f757600080fd5b8135919081019060408101602082013564010000000081111561021957600080fd5b82018360208201111561022b57600080fd5b8035906020019184602083028401116401000000008311171561024d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561029d57600080fd5b8201836020820111156102af57600080fd5b803590602001918460208302840111640100000000831117156102d157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506104d0945050505050565b005b61030f6108db565b61030f6004803603602081101561032f57600080fd5b5035610a41565b61030f6004803603602081101561034c57600080fd5b50356001600160a01b0316610e09565b610139610f3b565b610191610f4a565b6103896004803603602081101561038257600080fd5b5035610fa0565b60408051918252519081900360200190f35b61030f600480360360208110156103b157600080fd5b50356001600160a01b0316610fbe565b610389600480360360208110156103d757600080fd5b50356110f0565b61030f600480360360208110156103f457600080fd5b50356001600160a01b03166110fd565b61030f61135a565b6101396115be565b61030f6004803603602081101561042a57600080fd5b50356115cd565b610139611762565b610389611771565b61030f611777565b6000546001600160a01b031681565b600054600160a01b900460ff1681565b6001546001600160a01b031681565b606060078054806020026020016040519081016040528092919081815260200182805480156104c557602002820191906000526020600020905b8154815260200190600101908083116104b1575b505050505090505b90565b6001546001600160a01b031633146105195760405162461bcd60e51b8152600401808060200182810382526026815260200180611bb26026913960400191505060405180910390fd5b600180600054600160a01b900460ff16600281111561053457fe5b146105705760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b81518351146105c6576040805162461bcd60e51b815260206004820181905260248201527f52656c65617365205363686564756c6520646f6573206e6f74206d617463682e604482015290519081900360640190fd5b83156105d25760058490555b6000805b835181101561060f576106058482815181106105ee57fe5b6020026020010151836119a590919063ffffffff16565b91506001016105d6565b5060008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561065c57600080fd5b505afa158015610670573d6000803e3d6000fd5b505050506040513d602081101561068657600080fd5b505190508181101561078e57600080546001600160a01b03166323b872dd33306106b6878763ffffffff611a0616565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b15801561071e57600080fd5b505af1158015610732573d6000803e3d6000fd5b505050506040513d602081101561074857600080fd5b50519050806107885760405162461bcd60e51b8152600401808060200182810382526031815260200180611c856031913960400191505060405180910390fd5b50610874565b8181111561087457600080546001600160a01b031663a9059cbb336107b9858763ffffffff611a0616565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561080857600080fd5b505af115801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b50519050806108725760405162461bcd60e51b8152600401808060200182810382526027815260200180611b696027913960400191505060405180910390fd5b505b8451610887906006906020880190611ada565b50835161089b906007906020870190611ada565b508451604080519182525133917ff72a4687eff9513c183e45c0c4c26747495ea90534ae5138b15187bd6d744d03919081900360200190a2505050505050565b6002546001600160a01b031633146109245760405162461bcd60e51b8152600401808060200182810382526028815260200180611bff6028913960400191505060405180910390fd5b600180600054600160a01b900460ff16600281111561093f57fe5b1461097b5760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b6004546001600160a01b03166109d8576040805162461bcd60e51b815260206004820152601a60248201527f4e6f206e6577206c6f636b6564206f776e65722061646465642e000000000000604482015290519081900360640190fd5b6004546001546040516001600160a01b03928316929091169033907f42b448a9c587a54133a65275a9dd086289e1459394570a77830d6e2993ba702190600090a45060048054600180546001600160a01b03199081166001600160a01b03841617909155169055565b6002546001600160a01b03163314610a8a5760405162461bcd60e51b8152600401808060200182810382526028815260200180611bff6028913960400191505060405180910390fd5b600180600054600160a01b900460ff166002811115610aa557fe5b14610ae15760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b60008211610b36576040805162461bcd60e51b815260206004820152601860248201527f5a65726f2063616e27742062652077697468647261776e2e0000000000000000604482015290519081900360640190fd5b60055460065460009184918390610b5490600163ffffffff611a0616565b90505b600083118015610b8f575042610b8d60068381548110610b7357fe5b9060005260206000200154846119a590919063ffffffff16565b105b15610c685760078181548110610ba157fe5b90600052602060002001548310610c1557610bdc60078281548110610bc257fe5b906000526020600020015484611a0690919063ffffffff16565b9250610c0860068281548110610bee57fe5b9060005260206000200154836119a590919063ffffffff16565b6001909401939150610c5f565b610c3f8360078381548110610c2657fe5b9060005260206000200154611a0690919063ffffffff16565b60078281548110610c4c57fe5b9060005260206000200181905550600092505b60001901610b57565b6000841180610c75575082155b610cc6576040805162461bcd60e51b815260206004820152601c60248201527f4e6f2072656c65617365207363686564756c6520726561636865642e00000000604482015290519081900360640190fd5b6000610cd8878563ffffffff611a0616565b600680549192509086900390610cee9082611b25565b506007805486900390610d019082611b25565b506005839055600080546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb9160448082019260209290919082900301818787803b158015610d5b57600080fd5b505af1158015610d6f573d6000803e3d6000fd5b505050506040513d6020811015610d8557600080fd5b5051905080610dc55760405162461bcd60e51b815260040180806020018281038252603a815260200180611c4b603a913960400191505060405180910390fd5b6040805183815260208101889052815133927ffa68c0fc42b11a51827986519278d0697390d33804dfe95ee2715b586188e9b8928290030190a25050505050505050565b6001546001600160a01b03163314610e525760405162461bcd60e51b8152600401808060200182810382526026815260200180611bb26026913960400191505060405180910390fd5b600180600054600160a01b900460ff166002811115610e6d57fe5b14610ea95760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b6001600160a01b038216610eee5760405162461bcd60e51b8152600401808060200182810382526029815260200180611cb66029913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b03841690811790915560405133907f0208ed0f1388e698a4ea28ded707c28ae94b6f0405d5f6ce3fb8ea5c28a3d71490600090a35050565b6002546001600160a01b031681565b606060068054806020026020016040519081016040528092919081815260200182805480156104c557602002820191906000526020600020908154815260200190600101908083116104b1575050505050905090565b60078181548110610fad57fe5b600091825260209091200154905081565b6001546001600160a01b031633146110075760405162461bcd60e51b8152600401808060200182810382526026815260200180611bb26026913960400191505060405180910390fd5b600180600054600160a01b900460ff16600281111561102257fe5b1461105e5760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b6001600160a01b0382166110a35760405162461bcd60e51b8152600401808060200182810382526027815260200180611cdf6027913960400191505060405180910390fd5b600480546001600160a01b0319166001600160a01b03841690811790915560405133907f48d91cb8cdff9bca75e8ac21e7acdbde24900df0411d11ecf4b430694cd4f51190600090a35050565b60068181548110610fad57fe5b6001546001600160a01b031633146111465760405162461bcd60e51b8152600401808060200182810382526026815260200180611bb26026913960400191505060405180910390fd5b600180600054600160a01b900460ff16600281111561116157fe5b1461119d5760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156111e957600080fd5b505afa1580156111fd573d6000803e3d6000fd5b505050506040513d602081101561121357600080fd5b5051600080546040805163a9059cbb60e01b81526001600160a01b038881166004830152602482018690529151949550929391169163a9059cbb91604480830192602092919082900301818787803b15801561126e57600080fd5b505af1158015611282573d6000803e3d6000fd5b505050506040513d602081101561129857600080fd5b50519050806112d85760405162461bcd60e51b815260040180806020018281038252603a815260200180611c4b603a913960400191505060405180910390fd5b6000805460ff60a01b1916600160a11b1790556040805183815290516001600160a01b0386169133917fe2263fdea2a7955c23a2bcd5f0ce1624216bc2e6f7527e568e4458b4322f3d259181900360200190a36040517f72c4ddbdbfc8ea67597f365145a79c7ccf27249562ba8d8a646a433cc19ca50c90600090a150505050565b6002546001600160a01b031633146113a35760405162461bcd60e51b8152600401808060200182810382526028815260200180611bff6028913960400191505060405180910390fd5b600180600054600160a01b900460ff1660028111156113be57fe5b146113fa5760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561144657600080fd5b505afa15801561145a573d6000803e3d6000fd5b505050506040513d602081101561147057600080fd5b5051600080546003546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051949550929391169163a9059cbb91604480830192602092919082900301818787803b1580156114ce57600080fd5b505af11580156114e2573d6000803e3d6000fd5b505050506040513d60208110156114f857600080fd5b50519050806115385760405162461bcd60e51b815260040180806020018281038252603a815260200180611c4b603a913960400191505060405180910390fd5b6000805460ff60a01b1916600160a11b1790556003546040805184815290516001600160a01b039092169133917fb113bbaa99f5f08dce8b0578089a524730dfb0a0b4ca1d82678847b78e7a4acc919081900360200190a36040517f72c4ddbdbfc8ea67597f365145a79c7ccf27249562ba8d8a646a433cc19ca50c90600090a1505050565b6004546001600160a01b031681565b600180600054600160a01b900460ff1660028111156115e857fe5b146116245760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b600082116116635760405162461bcd60e51b8152600401808060200182810382526024815260200180611c276024913960400191505060405180910390fd5b60008054604080516323b872dd60e01b81523360048201523060248201526044810186905290516001600160a01b03909216916323b872dd9160648082019260209290919082900301818787803b1580156116bd57600080fd5b505af11580156116d1573d6000803e3d6000fd5b505050506040513d60208110156116e757600080fd5b50519050806117275760405162461bcd60e51b8152600401808060200182810382526022815260200180611b906022913960400191505060405180910390fd5b60408051848152905133917f20b3fc91390f6ceba342f697a9490734680fd3556633f40efa146f1dbe79d05f919081900360200190a2505050565b6003546001600160a01b031681565b60055481565b600080600054600160a01b900460ff16600281111561179257fe5b146117ce5760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b6060600780548060200260200160405190810160405280929190818152602001828054801561181c57602002820191906000526020600020905b815481526020019060010190808311611808575b5050505050905080516000141561187a576040805162461bcd60e51b815260206004820152601960248201527f52656c65617365205363686564756c65206e6f74207365742e00000000000000604482015290519081900360640190fd5b6000805b82518110156118a0576118968382815181106105ee57fe5b915060010161187e565b5060008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd9160648082019260209290919082900301818787803b1580156118fb57600080fd5b505af115801561190f573d6000803e3d6000fd5b505050506040513d602081101561192557600080fd5b50519050806119655760405162461bcd60e51b8152600401808060200182810382526031815260200180611c856031913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b1781556040517faa68d5c041f78cef350ad64b5eb318db549e529cde80faaef4d9402c522cd7179190a150505050565b6000828201838110156119ff576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006119ff83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060008184841115611ad25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a97578181015183820152602001611a7f565b50505050905090810190601f168015611ac45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b828054828255906000526020600020908101928215611b15579160200282015b82811115611b15578251825591602001919060010190611afa565b50611b21929150611b4e565b5090565b815481835581811115611b4957600083815260209020611b49918101908301611b4e565b505050565b6104cd91905b80821115611b215760008155600101611b5456fe546f6b656e206e6f7420726563656976656420627920746865204c6f636b6564204f776e65722e546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e4f6e6c79204c6f636b656420546f6b656e204f776e65722063616e2063616c6c20746869732e54686520636f6e7472616374206973206e6f7420696e207468652072696768742073746174652e4f6e6c7920556e6c6f636b656420546f6b656e204f776e65722063616e2063616c6c20746869732e416d6f756e74206e6565647320746f20626520626967676572207468616e207a65726f2e546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e4e6f7420656e6f75676820746f6b656e2073656e7420746f206368616e67652072656c65617365207363686564756c652e4e657720756e6c6f636b656420746f6b656e206f776e6572206164647265737320696e76616c69642e4e6577206c6f636b656420746f6b656e206f776e6572206164647265737320696e76616c69642ea265627a7a72315820f6b84f836972233741418f4efbd32b6a00774c3b73b4882ae6605f8728d02b0764736f6c634300051100324c6f636b656420746f6b656e202620636f6e7472616374206f776e6572206164647265737320696e76616c69642e",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x21A5 CODESIZE SUB DUP1 PUSH3 0x21A5 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xE0 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0xA0 DUP9 ADD DUP1 MLOAD SWAP5 MLOAD SWAP7 SWAP9 SWAP6 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP2 SWAP5 SWAP3 SWAP4 DUP3 ADD SWAP3 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0xAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xDC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xC2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x106 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x169 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x14F JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 MSTORE POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH3 0x1D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420534F5620416464726573732E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH3 0x21B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x2177 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH3 0x277 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53616665205661756C74206164647265737320696E76616C69642E0000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x2D3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E6C6F636B656420746F6B656E206164647265737320696E76616C69642E00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD DUP10 DUP5 AND SWAP1 DUP4 AND OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD DUP9 DUP5 AND SWAP1 DUP4 AND OR SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP3 DUP8 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x5 DUP4 SWAP1 SSTORE DUP3 PUSH3 0x32D JUMPI TIMESTAMP PUSH1 0x5 SSTORE JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH3 0x384 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656C65617365205363686564756C6520646F6573206E6F74206D617463682E PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x399 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x3BD JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x3AF SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x3BD JUMP JUMPDEST POP POP POP POP POP POP POP POP PUSH3 0x42D JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x3FB JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x3FB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x3DE JUMP JUMPDEST POP PUSH3 0x409 SWAP3 SWAP2 POP PUSH3 0x40D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x42A SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x409 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x414 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D3A DUP1 PUSH3 0x43D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x867513A9 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xDA45B3AC GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDA45B3AC EQ PUSH2 0x40C JUMPI DUP1 PUSH4 0xDD49756E EQ PUSH2 0x414 JUMPI DUP1 PUSH4 0xDEEF94DE EQ PUSH2 0x431 JUMPI DUP1 PUSH4 0xDFAF734A EQ PUSH2 0x439 JUMPI DUP1 PUSH4 0xE1C7392A EQ PUSH2 0x441 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x867513A9 EQ PUSH2 0x36C JUMPI DUP1 PUSH4 0x8D5B1666 EQ PUSH2 0x39B JUMPI DUP1 PUSH4 0x8F833272 EQ PUSH2 0x3C1 JUMPI DUP1 PUSH4 0xAD99103D EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0xCDC0D718 EQ PUSH2 0x404 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x4518B52E GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x4518B52E EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x460CA0EB EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0x532C6776 EQ PUSH2 0x336 JUMPI DUP1 PUSH4 0x716D9BF8 EQ PUSH2 0x35C JUMPI DUP1 PUSH4 0x721CE1E7 EQ PUSH2 0x364 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x200D2ED2 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x2AA4486F EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x3256F0FE EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x34E2366F EQ PUSH2 0x1E1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x139 PUSH2 0x449 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15D PUSH2 0x458 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x16D JUMPI INVALID JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x139 PUSH2 0x468 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x477 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1CD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B5 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x219 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x4D0 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x30F PUSH2 0x8DB JUMP JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA41 JUMP JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE09 JUMP JUMPDEST PUSH2 0x139 PUSH2 0xF3B JUMP JUMPDEST PUSH2 0x191 PUSH2 0xF4A JUMP JUMPDEST PUSH2 0x389 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFA0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x389 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10FD JUMP JUMPDEST PUSH2 0x30F PUSH2 0x135A JUMP JUMPDEST PUSH2 0x139 PUSH2 0x15BE JUMP JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x15CD JUMP JUMPDEST PUSH2 0x139 PUSH2 0x1762 JUMP JUMPDEST PUSH2 0x389 PUSH2 0x1771 JUMP JUMPDEST PUSH2 0x30F PUSH2 0x1777 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x4B1 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x519 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BB2 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x534 JUMPI INVALID JUMPDEST EQ PUSH2 0x570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x5C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656C65617365205363686564756C6520646F6573206E6F74206D617463682E PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 ISZERO PUSH2 0x5D2 JUMPI PUSH1 0x5 DUP5 SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x60F JUMPI PUSH2 0x605 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5EE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH2 0x19A5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP PUSH1 0x1 ADD PUSH2 0x5D6 JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x65C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x670 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x78E JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD CALLER ADDRESS PUSH2 0x6B6 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1A06 AND JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x732 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x788 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C85 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x874 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x874 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB CALLER PUSH2 0x7B9 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1A06 AND JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x872 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B69 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST DUP5 MLOAD PUSH2 0x887 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x1ADA JUMP JUMPDEST POP DUP4 MLOAD PUSH2 0x89B SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP8 ADD SWAP1 PUSH2 0x1ADA JUMP JUMPDEST POP DUP5 MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD CALLER SWAP2 PUSH32 0xF72A4687EFF9513C183E45C0C4C26747495EA90534AE5138B15187BD6D744D03 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x924 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BFF PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x93F JUMPI INVALID JUMPDEST EQ PUSH2 0x97B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F206E6577206C6F636B6564206F776E65722061646465642E000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 SWAP1 SWAP2 AND SWAP1 CALLER SWAP1 PUSH32 0x42B448A9C587A54133A65275A9DD086289E1459394570A77830D6E2993BA7021 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR SWAP1 SWAP2 SSTORE AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BFF PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xAA5 JUMPI INVALID JUMPDEST EQ PUSH2 0xAE1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xB36 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A65726F2063616E27742062652077697468647261776E2E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x0 SWAP2 DUP5 SWAP2 DUP4 SWAP1 PUSH2 0xB54 SWAP1 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x1A06 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0xB8F JUMPI POP TIMESTAMP PUSH2 0xB8D PUSH1 0x6 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xB73 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP5 PUSH2 0x19A5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST LT JUMPDEST ISZERO PUSH2 0xC68 JUMPI PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xBA1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 LT PUSH2 0xC15 JUMPI PUSH2 0xBDC PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xBC2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP5 PUSH2 0x1A06 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP PUSH2 0xC08 PUSH1 0x6 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xBEE JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH2 0x19A5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 SWAP2 POP PUSH2 0xC5F JUMP JUMPDEST PUSH2 0xC3F DUP4 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xC26 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH2 0x1A06 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC4C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP3 POP JUMPDEST PUSH1 0x0 NOT ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP5 GT DUP1 PUSH2 0xC75 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0xCC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F2072656C65617365207363686564756C6520726561636865642E00000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCD8 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1A06 AND JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 DUP7 SWAP1 SUB SWAP1 PUSH2 0xCEE SWAP1 DUP3 PUSH2 0x1B25 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD DUP7 SWAP1 SUB SWAP1 PUSH2 0xD01 SWAP1 DUP3 PUSH2 0x1B25 JUMP JUMPDEST POP PUSH1 0x5 DUP4 SWAP1 SSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD6F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xDC5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C4B PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0xFA68C0FC42B11A51827986519278D0697390D33804DFE95EE2715B586188E9B8 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BB2 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xE6D JUMPI INVALID JUMPDEST EQ PUSH2 0xEA9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xEEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1CB6 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x208ED0F1388E698A4EA28DED707C28AE94B6F0405D5F6CE3FB8EA5C28A3D714 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x6 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x4B1 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xFAD JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1007 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BB2 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1022 JUMPI INVALID JUMPDEST EQ PUSH2 0x105E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x10A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1CDF PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x48D91CB8CDFF9BCA75E8AC21E7ACDBDE24900DF0411D11ECF4B430694CD4F511 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x6 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xFAD JUMPI INVALID JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1146 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BB2 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1161 JUMPI INVALID JUMPDEST EQ PUSH2 0x119D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11FD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD SWAP5 SWAP6 POP SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x126E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1282 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x12D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C4B PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA1 SHL OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 CALLER SWAP2 PUSH32 0xE2263FDEA2A7955C23A2BCD5F0CE1624216BC2E6F7527E568E4458B4322F3D25 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 MLOAD PUSH32 0x72C4DDBDBFC8EA67597F365145A79C7CCF27249562BA8D8A646A433CC19CA50C SWAP1 PUSH1 0x0 SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BFF PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x13BE JUMPI INVALID JUMPDEST EQ PUSH2 0x13FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x145A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP5 SWAP6 POP SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x1538 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C4B PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA1 SHL OR SWAP1 SSTORE PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 CALLER SWAP2 PUSH32 0xB113BBAA99F5F08DCE8B0578089A524730DFB0A0B4CA1D82678847B78E7A4ACC SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 MLOAD PUSH32 0x72C4DDBDBFC8EA67597F365145A79C7CCF27249562BA8D8A646A433CC19CA50C SWAP1 PUSH1 0x0 SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x15E8 JUMPI INVALID JUMPDEST EQ PUSH2 0x1624 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x1663 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C27 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x1727 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B90 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x20B3FC91390F6CEBA342F697A9490734680FD3556633F40EFA146F1DBE79D05F SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1792 JUMPI INVALID JUMPDEST EQ PUSH2 0x17CE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x181C JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x1808 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x187A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656C65617365205363686564756C65206E6F74207365742E00000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x18A0 JUMPI PUSH2 0x1896 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5EE JUMPI INVALID JUMPDEST SWAP2 POP PUSH1 0x1 ADD PUSH2 0x187E JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x190F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x1965 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C85 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xAA68D5C041F78CEF350AD64B5EB318DB549E529CDE80FAAEF4D9402C522CD717 SWAP2 SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x19FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19FF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1AD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A97 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1A7F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1AC4 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1B15 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1B15 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1AFA JUMP JUMPDEST POP PUSH2 0x1B21 SWAP3 SWAP2 POP PUSH2 0x1B4E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x1B49 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x1B49 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0x1B4E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x4CD SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1B21 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1B54 JUMP INVALID SLOAD PUSH16 0x6B656E206E6F74207265636569766564 KECCAK256 PUSH3 0x792074 PUSH9 0x65204C6F636B656420 0x4F PUSH24 0x6E65722E546F6B656E207472616E7366657220776173206E PUSH16 0x74207375636365737366756C2E4F6E6C PUSH26 0x204C6F636B656420546F6B656E204F776E65722063616E206361 PUSH13 0x6C20746869732E54686520636F PUSH15 0x7472616374206973206E6F7420696E KECCAK256 PUSH21 0x68652072696768742073746174652E4F6E6C792055 PUSH15 0x6C6F636B656420546F6B656E204F77 PUSH15 0x65722063616E2063616C6C20746869 PUSH20 0x2E416D6F756E74206E6565647320746F20626520 PUSH3 0x696767 PUSH6 0x72207468616E KECCAK256 PUSH27 0x65726F2E546F6B656E207472616E7366657220776173206E6F7420 PUSH20 0x75636365737366756C2E20436865636B20726563 PUSH6 0x697665722061 PUSH5 0x6472657373 0x2E 0x4E PUSH16 0x7420656E6F75676820746F6B656E2073 PUSH6 0x6E7420746F20 PUSH4 0x68616E67 PUSH6 0x2072656C6561 PUSH20 0x65207363686564756C652E4E657720756E6C6F63 PUSH12 0x656420746F6B656E206F776E PUSH6 0x722061646472 PUSH6 0x737320696E76 PUSH2 0x6C69 PUSH5 0x2E4E657720 PUSH13 0x6F636B656420746F6B656E206F PUSH24 0x6E6572206164647265737320696E76616C69642EA265627A PUSH27 0x72315820F6B84F836972233741418F4EFBD32B6A00774C3B73B488 0x2A 0xE6 PUSH1 0x5F DUP8 0x28 0xD0 0x2B SMOD PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN 0x4C PUSH16 0x636B656420746F6B656E202620636F6E PUSH21 0x72616374206F776E6572206164647265737320696E PUSH23 0x616C69642E000000000000000000000000000000000000 ",
              "sourceMap": "281:15875:65:-;;;5767:1193;8:9:-1;5:2;;;30:1;27;20:12;5:2;5767:1193:65;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5767:1193:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;5767:1193:65;;421:4:-1;412:14;;;;5767:1193:65;;;;;412:14:-1;5767:1193:65;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5767:1193:65;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;5767:1193:65;;421:4:-1;412:14;;;;5767:1193:65;;;;;412:14:-1;5767:1193:65;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;-1:-1;;;;5767:1193:65;;;;;;-1:-1:-1;;;;;;;;;6004:18:65;;5996:51;;;;;-1:-1:-1;;;5996:51:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6059:31:65;;6051:90;;;;-1:-1:-1;;;6051:90:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6153:24:65;;6145:64;;;;;-1:-1:-1;;;6145:64:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6221:33:65;;6213:77;;;;;-1:-1:-1;;;6213:77:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;6295:3;:18;;-1:-1:-1;;;;;6295:18:65;;;-1:-1:-1;;;;;;6295:18:65;;;;;;;;6317:36;;;;;;;;;;;6357:9;:22;;;;;;;;;;;6383:18;:40;;;;;;;;;;;;;;;6428:15;:34;;;6576:21;6572:70;;6622:15;6604;:33;6572:70;6758:19;:26;6731:16;:23;:53;6723:98;;;;;-1:-1:-1;;;6723:98:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6878:34;;;;:15;;:34;;;;;:::i;:::-;-1:-1:-1;6916:40:65;;;;:18;;:40;;;;;:::i;:::-;;5767:1193;;;;;;;281:15875;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;281:15875:65;;;-1:-1:-1;281:15875:65;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061012c5760003560e01c8063867513a9116100ad578063da45b3ac11610071578063da45b3ac1461040c578063dd49756e14610414578063deef94de14610431578063dfaf734a14610439578063e1c7392a146104415761012c565b8063867513a91461036c5780638d5b16661461039b5780638f833272146103c1578063ad99103d146103de578063cdc0d718146104045761012c565b80634518b52e116100f45780634518b52e14610311578063460ca0eb14610319578063532c677614610336578063716d9bf81461035c578063721ce1e7146103645761012c565b806308dcb36014610131578063200d2ed2146101555780632aa4486f146101815780633256f0fe1461018957806334e2366f146101e1575b600080fd5b610139610449565b604080516001600160a01b039092168252519081900360200190f35b61015d610458565b6040518082600281111561016d57fe5b60ff16815260200191505060405180910390f35b610139610468565b610191610477565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101cd5781810151838201526020016101b5565b505050509050019250505060405180910390f35b61030f600480360360608110156101f757600080fd5b8135919081019060408101602082013564010000000081111561021957600080fd5b82018360208201111561022b57600080fd5b8035906020019184602083028401116401000000008311171561024d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561029d57600080fd5b8201836020820111156102af57600080fd5b803590602001918460208302840111640100000000831117156102d157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506104d0945050505050565b005b61030f6108db565b61030f6004803603602081101561032f57600080fd5b5035610a41565b61030f6004803603602081101561034c57600080fd5b50356001600160a01b0316610e09565b610139610f3b565b610191610f4a565b6103896004803603602081101561038257600080fd5b5035610fa0565b60408051918252519081900360200190f35b61030f600480360360208110156103b157600080fd5b50356001600160a01b0316610fbe565b610389600480360360208110156103d757600080fd5b50356110f0565b61030f600480360360208110156103f457600080fd5b50356001600160a01b03166110fd565b61030f61135a565b6101396115be565b61030f6004803603602081101561042a57600080fd5b50356115cd565b610139611762565b610389611771565b61030f611777565b6000546001600160a01b031681565b600054600160a01b900460ff1681565b6001546001600160a01b031681565b606060078054806020026020016040519081016040528092919081815260200182805480156104c557602002820191906000526020600020905b8154815260200190600101908083116104b1575b505050505090505b90565b6001546001600160a01b031633146105195760405162461bcd60e51b8152600401808060200182810382526026815260200180611bb26026913960400191505060405180910390fd5b600180600054600160a01b900460ff16600281111561053457fe5b146105705760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b81518351146105c6576040805162461bcd60e51b815260206004820181905260248201527f52656c65617365205363686564756c6520646f6573206e6f74206d617463682e604482015290519081900360640190fd5b83156105d25760058490555b6000805b835181101561060f576106058482815181106105ee57fe5b6020026020010151836119a590919063ffffffff16565b91506001016105d6565b5060008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561065c57600080fd5b505afa158015610670573d6000803e3d6000fd5b505050506040513d602081101561068657600080fd5b505190508181101561078e57600080546001600160a01b03166323b872dd33306106b6878763ffffffff611a0616565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b15801561071e57600080fd5b505af1158015610732573d6000803e3d6000fd5b505050506040513d602081101561074857600080fd5b50519050806107885760405162461bcd60e51b8152600401808060200182810382526031815260200180611c856031913960400191505060405180910390fd5b50610874565b8181111561087457600080546001600160a01b031663a9059cbb336107b9858763ffffffff611a0616565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561080857600080fd5b505af115801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b50519050806108725760405162461bcd60e51b8152600401808060200182810382526027815260200180611b696027913960400191505060405180910390fd5b505b8451610887906006906020880190611ada565b50835161089b906007906020870190611ada565b508451604080519182525133917ff72a4687eff9513c183e45c0c4c26747495ea90534ae5138b15187bd6d744d03919081900360200190a2505050505050565b6002546001600160a01b031633146109245760405162461bcd60e51b8152600401808060200182810382526028815260200180611bff6028913960400191505060405180910390fd5b600180600054600160a01b900460ff16600281111561093f57fe5b1461097b5760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b6004546001600160a01b03166109d8576040805162461bcd60e51b815260206004820152601a60248201527f4e6f206e6577206c6f636b6564206f776e65722061646465642e000000000000604482015290519081900360640190fd5b6004546001546040516001600160a01b03928316929091169033907f42b448a9c587a54133a65275a9dd086289e1459394570a77830d6e2993ba702190600090a45060048054600180546001600160a01b03199081166001600160a01b03841617909155169055565b6002546001600160a01b03163314610a8a5760405162461bcd60e51b8152600401808060200182810382526028815260200180611bff6028913960400191505060405180910390fd5b600180600054600160a01b900460ff166002811115610aa557fe5b14610ae15760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b60008211610b36576040805162461bcd60e51b815260206004820152601860248201527f5a65726f2063616e27742062652077697468647261776e2e0000000000000000604482015290519081900360640190fd5b60055460065460009184918390610b5490600163ffffffff611a0616565b90505b600083118015610b8f575042610b8d60068381548110610b7357fe5b9060005260206000200154846119a590919063ffffffff16565b105b15610c685760078181548110610ba157fe5b90600052602060002001548310610c1557610bdc60078281548110610bc257fe5b906000526020600020015484611a0690919063ffffffff16565b9250610c0860068281548110610bee57fe5b9060005260206000200154836119a590919063ffffffff16565b6001909401939150610c5f565b610c3f8360078381548110610c2657fe5b9060005260206000200154611a0690919063ffffffff16565b60078281548110610c4c57fe5b9060005260206000200181905550600092505b60001901610b57565b6000841180610c75575082155b610cc6576040805162461bcd60e51b815260206004820152601c60248201527f4e6f2072656c65617365207363686564756c6520726561636865642e00000000604482015290519081900360640190fd5b6000610cd8878563ffffffff611a0616565b600680549192509086900390610cee9082611b25565b506007805486900390610d019082611b25565b506005839055600080546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb9160448082019260209290919082900301818787803b158015610d5b57600080fd5b505af1158015610d6f573d6000803e3d6000fd5b505050506040513d6020811015610d8557600080fd5b5051905080610dc55760405162461bcd60e51b815260040180806020018281038252603a815260200180611c4b603a913960400191505060405180910390fd5b6040805183815260208101889052815133927ffa68c0fc42b11a51827986519278d0697390d33804dfe95ee2715b586188e9b8928290030190a25050505050505050565b6001546001600160a01b03163314610e525760405162461bcd60e51b8152600401808060200182810382526026815260200180611bb26026913960400191505060405180910390fd5b600180600054600160a01b900460ff166002811115610e6d57fe5b14610ea95760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b6001600160a01b038216610eee5760405162461bcd60e51b8152600401808060200182810382526029815260200180611cb66029913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b03841690811790915560405133907f0208ed0f1388e698a4ea28ded707c28ae94b6f0405d5f6ce3fb8ea5c28a3d71490600090a35050565b6002546001600160a01b031681565b606060068054806020026020016040519081016040528092919081815260200182805480156104c557602002820191906000526020600020908154815260200190600101908083116104b1575050505050905090565b60078181548110610fad57fe5b600091825260209091200154905081565b6001546001600160a01b031633146110075760405162461bcd60e51b8152600401808060200182810382526026815260200180611bb26026913960400191505060405180910390fd5b600180600054600160a01b900460ff16600281111561102257fe5b1461105e5760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b6001600160a01b0382166110a35760405162461bcd60e51b8152600401808060200182810382526027815260200180611cdf6027913960400191505060405180910390fd5b600480546001600160a01b0319166001600160a01b03841690811790915560405133907f48d91cb8cdff9bca75e8ac21e7acdbde24900df0411d11ecf4b430694cd4f51190600090a35050565b60068181548110610fad57fe5b6001546001600160a01b031633146111465760405162461bcd60e51b8152600401808060200182810382526026815260200180611bb26026913960400191505060405180910390fd5b600180600054600160a01b900460ff16600281111561116157fe5b1461119d5760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156111e957600080fd5b505afa1580156111fd573d6000803e3d6000fd5b505050506040513d602081101561121357600080fd5b5051600080546040805163a9059cbb60e01b81526001600160a01b038881166004830152602482018690529151949550929391169163a9059cbb91604480830192602092919082900301818787803b15801561126e57600080fd5b505af1158015611282573d6000803e3d6000fd5b505050506040513d602081101561129857600080fd5b50519050806112d85760405162461bcd60e51b815260040180806020018281038252603a815260200180611c4b603a913960400191505060405180910390fd5b6000805460ff60a01b1916600160a11b1790556040805183815290516001600160a01b0386169133917fe2263fdea2a7955c23a2bcd5f0ce1624216bc2e6f7527e568e4458b4322f3d259181900360200190a36040517f72c4ddbdbfc8ea67597f365145a79c7ccf27249562ba8d8a646a433cc19ca50c90600090a150505050565b6002546001600160a01b031633146113a35760405162461bcd60e51b8152600401808060200182810382526028815260200180611bff6028913960400191505060405180910390fd5b600180600054600160a01b900460ff1660028111156113be57fe5b146113fa5760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561144657600080fd5b505afa15801561145a573d6000803e3d6000fd5b505050506040513d602081101561147057600080fd5b5051600080546003546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051949550929391169163a9059cbb91604480830192602092919082900301818787803b1580156114ce57600080fd5b505af11580156114e2573d6000803e3d6000fd5b505050506040513d60208110156114f857600080fd5b50519050806115385760405162461bcd60e51b815260040180806020018281038252603a815260200180611c4b603a913960400191505060405180910390fd5b6000805460ff60a01b1916600160a11b1790556003546040805184815290516001600160a01b039092169133917fb113bbaa99f5f08dce8b0578089a524730dfb0a0b4ca1d82678847b78e7a4acc919081900360200190a36040517f72c4ddbdbfc8ea67597f365145a79c7ccf27249562ba8d8a646a433cc19ca50c90600090a1505050565b6004546001600160a01b031681565b600180600054600160a01b900460ff1660028111156115e857fe5b146116245760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b600082116116635760405162461bcd60e51b8152600401808060200182810382526024815260200180611c276024913960400191505060405180910390fd5b60008054604080516323b872dd60e01b81523360048201523060248201526044810186905290516001600160a01b03909216916323b872dd9160648082019260209290919082900301818787803b1580156116bd57600080fd5b505af11580156116d1573d6000803e3d6000fd5b505050506040513d60208110156116e757600080fd5b50519050806117275760405162461bcd60e51b8152600401808060200182810382526022815260200180611b906022913960400191505060405180910390fd5b60408051848152905133917f20b3fc91390f6ceba342f697a9490734680fd3556633f40efa146f1dbe79d05f919081900360200190a2505050565b6003546001600160a01b031681565b60055481565b600080600054600160a01b900460ff16600281111561179257fe5b146117ce5760405162461bcd60e51b8152600401808060200182810382526027815260200180611bd86027913960400191505060405180910390fd5b6060600780548060200260200160405190810160405280929190818152602001828054801561181c57602002820191906000526020600020905b815481526020019060010190808311611808575b5050505050905080516000141561187a576040805162461bcd60e51b815260206004820152601960248201527f52656c65617365205363686564756c65206e6f74207365742e00000000000000604482015290519081900360640190fd5b6000805b82518110156118a0576118968382815181106105ee57fe5b915060010161187e565b5060008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd9160648082019260209290919082900301818787803b1580156118fb57600080fd5b505af115801561190f573d6000803e3d6000fd5b505050506040513d602081101561192557600080fd5b50519050806119655760405162461bcd60e51b8152600401808060200182810382526031815260200180611c856031913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b1781556040517faa68d5c041f78cef350ad64b5eb318db549e529cde80faaef4d9402c522cd7179190a150505050565b6000828201838110156119ff576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006119ff83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060008184841115611ad25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a97578181015183820152602001611a7f565b50505050905090810190601f168015611ac45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b828054828255906000526020600020908101928215611b15579160200282015b82811115611b15578251825591602001919060010190611afa565b50611b21929150611b4e565b5090565b815481835581811115611b4957600083815260209020611b49918101908301611b4e565b505050565b6104cd91905b80821115611b215760008155600101611b5456fe546f6b656e206e6f7420726563656976656420627920746865204c6f636b6564204f776e65722e546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e4f6e6c79204c6f636b656420546f6b656e204f776e65722063616e2063616c6c20746869732e54686520636f6e7472616374206973206e6f7420696e207468652072696768742073746174652e4f6e6c7920556e6c6f636b656420546f6b656e204f776e65722063616e2063616c6c20746869732e416d6f756e74206e6565647320746f20626520626967676572207468616e207a65726f2e546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e4e6f7420656e6f75676820746f6b656e2073656e7420746f206368616e67652072656c65617365207363686564756c652e4e657720756e6c6f636b656420746f6b656e206f776e6572206164647265737320696e76616c69642e4e6577206c6f636b656420746f6b656e206f776e6572206164647265737320696e76616c69642ea265627a7a72315820f6b84f836972233741418f4efbd32b6a00774c3b73b4882ae6605f8728d02b0764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x867513A9 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xDA45B3AC GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDA45B3AC EQ PUSH2 0x40C JUMPI DUP1 PUSH4 0xDD49756E EQ PUSH2 0x414 JUMPI DUP1 PUSH4 0xDEEF94DE EQ PUSH2 0x431 JUMPI DUP1 PUSH4 0xDFAF734A EQ PUSH2 0x439 JUMPI DUP1 PUSH4 0xE1C7392A EQ PUSH2 0x441 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x867513A9 EQ PUSH2 0x36C JUMPI DUP1 PUSH4 0x8D5B1666 EQ PUSH2 0x39B JUMPI DUP1 PUSH4 0x8F833272 EQ PUSH2 0x3C1 JUMPI DUP1 PUSH4 0xAD99103D EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0xCDC0D718 EQ PUSH2 0x404 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x4518B52E GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x4518B52E EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x460CA0EB EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0x532C6776 EQ PUSH2 0x336 JUMPI DUP1 PUSH4 0x716D9BF8 EQ PUSH2 0x35C JUMPI DUP1 PUSH4 0x721CE1E7 EQ PUSH2 0x364 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x200D2ED2 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x2AA4486F EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x3256F0FE EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x34E2366F EQ PUSH2 0x1E1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x139 PUSH2 0x449 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15D PUSH2 0x458 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x16D JUMPI INVALID JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x139 PUSH2 0x468 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x477 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1CD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B5 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x219 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x4D0 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x30F PUSH2 0x8DB JUMP JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA41 JUMP JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE09 JUMP JUMPDEST PUSH2 0x139 PUSH2 0xF3B JUMP JUMPDEST PUSH2 0x191 PUSH2 0xF4A JUMP JUMPDEST PUSH2 0x389 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFA0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x389 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10FD JUMP JUMPDEST PUSH2 0x30F PUSH2 0x135A JUMP JUMPDEST PUSH2 0x139 PUSH2 0x15BE JUMP JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x15CD JUMP JUMPDEST PUSH2 0x139 PUSH2 0x1762 JUMP JUMPDEST PUSH2 0x389 PUSH2 0x1771 JUMP JUMPDEST PUSH2 0x30F PUSH2 0x1777 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x4B1 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x519 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BB2 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x534 JUMPI INVALID JUMPDEST EQ PUSH2 0x570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x5C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656C65617365205363686564756C6520646F6573206E6F74206D617463682E PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 ISZERO PUSH2 0x5D2 JUMPI PUSH1 0x5 DUP5 SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x60F JUMPI PUSH2 0x605 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5EE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH2 0x19A5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP PUSH1 0x1 ADD PUSH2 0x5D6 JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x65C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x670 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x78E JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD CALLER ADDRESS PUSH2 0x6B6 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1A06 AND JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x732 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x788 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C85 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x874 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x874 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB CALLER PUSH2 0x7B9 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1A06 AND JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x872 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B69 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST DUP5 MLOAD PUSH2 0x887 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x1ADA JUMP JUMPDEST POP DUP4 MLOAD PUSH2 0x89B SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP8 ADD SWAP1 PUSH2 0x1ADA JUMP JUMPDEST POP DUP5 MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD CALLER SWAP2 PUSH32 0xF72A4687EFF9513C183E45C0C4C26747495EA90534AE5138B15187BD6D744D03 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x924 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BFF PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x93F JUMPI INVALID JUMPDEST EQ PUSH2 0x97B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F206E6577206C6F636B6564206F776E65722061646465642E000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 SWAP1 SWAP2 AND SWAP1 CALLER SWAP1 PUSH32 0x42B448A9C587A54133A65275A9DD086289E1459394570A77830D6E2993BA7021 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR SWAP1 SWAP2 SSTORE AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BFF PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xAA5 JUMPI INVALID JUMPDEST EQ PUSH2 0xAE1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xB36 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A65726F2063616E27742062652077697468647261776E2E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x0 SWAP2 DUP5 SWAP2 DUP4 SWAP1 PUSH2 0xB54 SWAP1 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x1A06 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0xB8F JUMPI POP TIMESTAMP PUSH2 0xB8D PUSH1 0x6 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xB73 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP5 PUSH2 0x19A5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST LT JUMPDEST ISZERO PUSH2 0xC68 JUMPI PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xBA1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 LT PUSH2 0xC15 JUMPI PUSH2 0xBDC PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xBC2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP5 PUSH2 0x1A06 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP PUSH2 0xC08 PUSH1 0x6 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xBEE JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 PUSH2 0x19A5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 SWAP2 POP PUSH2 0xC5F JUMP JUMPDEST PUSH2 0xC3F DUP4 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xC26 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH2 0x1A06 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC4C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP3 POP JUMPDEST PUSH1 0x0 NOT ADD PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP5 GT DUP1 PUSH2 0xC75 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0xCC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F2072656C65617365207363686564756C6520726561636865642E00000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCD8 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1A06 AND JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 DUP7 SWAP1 SUB SWAP1 PUSH2 0xCEE SWAP1 DUP3 PUSH2 0x1B25 JUMP JUMPDEST POP PUSH1 0x7 DUP1 SLOAD DUP7 SWAP1 SUB SWAP1 PUSH2 0xD01 SWAP1 DUP3 PUSH2 0x1B25 JUMP JUMPDEST POP PUSH1 0x5 DUP4 SWAP1 SSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD6F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xDC5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C4B PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0xFA68C0FC42B11A51827986519278D0697390D33804DFE95EE2715B586188E9B8 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BB2 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xE6D JUMPI INVALID JUMPDEST EQ PUSH2 0xEA9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xEEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1CB6 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x208ED0F1388E698A4EA28DED707C28AE94B6F0405D5F6CE3FB8EA5C28A3D714 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x6 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x4B1 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xFAD JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1007 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BB2 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1022 JUMPI INVALID JUMPDEST EQ PUSH2 0x105E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x10A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1CDF PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x48D91CB8CDFF9BCA75E8AC21E7ACDBDE24900DF0411D11ECF4B430694CD4F511 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x6 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xFAD JUMPI INVALID JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1146 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BB2 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1161 JUMPI INVALID JUMPDEST EQ PUSH2 0x119D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11FD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD SWAP5 SWAP6 POP SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x126E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1282 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x12D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C4B PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA1 SHL OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 CALLER SWAP2 PUSH32 0xE2263FDEA2A7955C23A2BCD5F0CE1624216BC2E6F7527E568E4458B4322F3D25 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 MLOAD PUSH32 0x72C4DDBDBFC8EA67597F365145A79C7CCF27249562BA8D8A646A433CC19CA50C SWAP1 PUSH1 0x0 SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BFF PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x13BE JUMPI INVALID JUMPDEST EQ PUSH2 0x13FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x145A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP5 SWAP6 POP SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x1538 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C4B PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA1 SHL OR SWAP1 SSTORE PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 CALLER SWAP2 PUSH32 0xB113BBAA99F5F08DCE8B0578089A524730DFB0A0B4CA1D82678847B78E7A4ACC SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 MLOAD PUSH32 0x72C4DDBDBFC8EA67597F365145A79C7CCF27249562BA8D8A646A433CC19CA50C SWAP1 PUSH1 0x0 SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x15E8 JUMPI INVALID JUMPDEST EQ PUSH2 0x1624 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x1663 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C27 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x16E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x1727 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B90 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x20B3FC91390F6CEBA342F697A9490734680FD3556633F40EFA146F1DBE79D05F SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1792 JUMPI INVALID JUMPDEST EQ PUSH2 0x17CE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1BD8 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x181C JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x1808 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x187A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52656C65617365205363686564756C65206E6F74207365742E00000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x18A0 JUMPI PUSH2 0x1896 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5EE JUMPI INVALID JUMPDEST SWAP2 POP PUSH1 0x1 ADD PUSH2 0x187E JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x190F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x1965 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C85 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xAA68D5C041F78CEF350AD64B5EB318DB549E529CDE80FAAEF4D9402C522CD717 SWAP2 SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x19FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19FF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1AD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A97 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1A7F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1AC4 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1B15 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1B15 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1AFA JUMP JUMPDEST POP PUSH2 0x1B21 SWAP3 SWAP2 POP PUSH2 0x1B4E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x1B49 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x1B49 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0x1B4E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x4CD SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1B21 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1B54 JUMP INVALID SLOAD PUSH16 0x6B656E206E6F74207265636569766564 KECCAK256 PUSH3 0x792074 PUSH9 0x65204C6F636B656420 0x4F PUSH24 0x6E65722E546F6B656E207472616E7366657220776173206E PUSH16 0x74207375636365737366756C2E4F6E6C PUSH26 0x204C6F636B656420546F6B656E204F776E65722063616E206361 PUSH13 0x6C20746869732E54686520636F PUSH15 0x7472616374206973206E6F7420696E KECCAK256 PUSH21 0x68652072696768742073746174652E4F6E6C792055 PUSH15 0x6C6F636B656420546F6B656E204F77 PUSH15 0x65722063616E2063616C6C20746869 PUSH20 0x2E416D6F756E74206E6565647320746F20626520 PUSH3 0x696767 PUSH6 0x72207468616E KECCAK256 PUSH27 0x65726F2E546F6B656E207472616E7366657220776173206E6F7420 PUSH20 0x75636365737366756C2E20436865636B20726563 PUSH6 0x697665722061 PUSH5 0x6472657373 0x2E 0x4E PUSH16 0x7420656E6F75676820746F6B656E2073 PUSH6 0x6E7420746F20 PUSH4 0x68616E67 PUSH6 0x2072656C6561 PUSH20 0x65207363686564756C652E4E657720756E6C6F63 PUSH12 0x656420746F6B656E206F776E PUSH6 0x722061646472 PUSH6 0x737320696E76 PUSH2 0x6C69 PUSH5 0x2E4E657720 PUSH13 0x6F636B656420746F6B656E206F PUSH24 0x6E6572206164647265737320696E76616C69642EA265627A PUSH27 0x72315820F6B84F836972233741418F4EFBD32B6A00774C3B73B488 0x2A 0xE6 PUSH1 0x5F DUP8 0x28 0xD0 0x2B SMOD PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "281:15875:65:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;281:15875:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;392:17;;;:::i;:::-;;;;-1:-1:-1;;;;;392:17:65;;;;;;;;;;;;;;498:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;588:31;;;:::i;16022:132::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;16022:132:65;;;;;;;;;;;;;;;;;10303:1924;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10303:1924:65;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10303:1924:65;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10303:1924:65;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10303:1924:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10303:1924:65;;;;;;;;-1:-1:-1;10303:1924:65;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;10303:1924:65;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10303:1924:65;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10303:1924:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10303:1924:65;;-1:-1:-1;10303:1924:65;;-1:-1:-1;;;;;10303:1924:65:i;:::-;;8460:335;;;:::i;12968:1901::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12968:1901:65;;:::i;8913:333::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8913:333:65;-1:-1:-1;;;;;8913:333:65;;:::i;688:33::-;;;:::i;15752:121::-;;;:::i;1146:35::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1146:35:65;;:::i;:::-;;;;;;;;;;;;;;;;7970:321;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7970:321:65;-1:-1:-1;;;;;7970:321:65;;:::i;1072:32::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1072:32:65;;:::i;15120:463::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15120:463:65;-1:-1:-1;;;;;15120:463:65;;:::i;12405:452::-;;;:::i;868:34::-;;;:::i;9440:317::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9440:317:65;;:::i;777:24::-;;;:::i;986:30::-;;;:::i;7137:706::-;;;:::i;392:17::-;;;-1:-1:-1;;;;;392:17:65;;:::o;498:20::-;;;-1:-1:-1;;;498:20:65;;;;;:::o;588:31::-;;;-1:-1:-1;;;;;588:31:65;;:::o;16022:132::-;16076:43;16132:18;16125:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16022:132;;:::o;10303:1924::-;4653:16;;-1:-1:-1;;;;;4653:16:65;4639:10;:30;4631:81;;;;-1:-1:-1;;;4631:81:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10490:13;;4902:6;;-1:-1:-1;;;4902:6:65;;;;:11;;;;;;;;;4894:63;;;;-1:-1:-1;;;4894:63:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10621:19;:26;10594:16;:23;:53;10586:98;;;;;-1:-1:-1;;;10586:98:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10913:24;;10909:77;;10944:15;:37;;;10909:77;11064:32;;11100:186;11144:19;:26;11130:11;:40;11100:186;;;11219:62;11248:19;11268:11;11248:32;;;;;;;;;;;;;;11219:24;:28;;:62;;;;:::i;:::-;11192:89;-1:-1:-1;11172:13:65;;11100:186;;;-1:-1:-1;11347:23:65;11373:3;;:28;;;-1:-1:-1;;;11373:28:65;;11395:4;11373:28;;;;;;-1:-1:-1;;;;;11373:3:65;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;11373:28:65;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11373:28:65;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11373:28:65;;-1:-1:-1;11497:42:65;;;11493:530;;;11546:13;11562:3;;-1:-1:-1;;;;;11562:3:65;:16;11579:10;11599:4;11606:45;:24;11635:15;11606:45;:28;:45;:::i;:::-;11562:90;;;;;;;;;;;;;-1:-1:-1;;;;;11562:90:65;-1:-1:-1;;;;;11562:90:65;;;;;;-1:-1:-1;;;;;11562:90:65;-1:-1:-1;;;;;11562:90:65;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11562:90:65;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11562:90:65;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11562:90:65;;-1:-1:-1;11562:90:65;11657:70;;;;-1:-1:-1;;;11657:70:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11493:530;;;;11760:24;11742:15;:42;11738:285;;;11866:13;11882:3;;-1:-1:-1;;;;;11882:3:65;:12;11895:10;11907:45;:15;11927:24;11907:45;:19;:45;:::i;:::-;11882:71;;;;;;;;;;;;;-1:-1:-1;;;;;11882:71:65;-1:-1:-1;;;;;11882:71:65;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11882:71:65;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11882:71:65;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11882:71:65;;-1:-1:-1;11882:71:65;11958:60;;;;-1:-1:-1;;;11958:60:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11738:285;;12079:34;;;;:15;;:34;;;;;:::i;:::-;-1:-1:-1;12117:40:65;;;;:18;;:40;;;;;:::i;:::-;-1:-1:-1;12199:23:65;;12167:56;;;;;;;12187:10;;12167:56;;;;;;;;;;4961:1;;4716;10303:1924;;;:::o;8460:335::-;4784:18;;-1:-1:-1;;;;;4784:18:65;4770:10;:32;4762:85;;;;-1:-1:-1;;;4762:85:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8537:13;;4902:6;;-1:-1:-1;;;4902:6:65;;;;:11;;;;;;;;;4894:63;;;;-1:-1:-1;;;4894:63:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8564:19;;-1:-1:-1;;;;;8564:19:65;8556:72;;;;;-1:-1:-1;;;8556:72:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;8691:19;;;8673:16;8638:73;;-1:-1:-1;;;;;8691:19:65;;;;8673:16;;;;8661:10;;8638:73;;8691:19;;8638:73;-1:-1:-1;8735:19:65;;;;8716:38;;-1:-1:-1;;;;;;8716:38:65;;;-1:-1:-1;;;;;8735:19:65;;8716:38;;;;8759:32;;;8460:335::o;12968:1901::-;4784:18;;-1:-1:-1;;;;;4784:18:65;4770:10;:32;4762:85;;;;-1:-1:-1;;;4762:85:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13071:13;;4902:6;;-1:-1:-1;;;4902:6:65;;;;:11;;;;;;;;;4894:63;;;;-1:-1:-1;;;4894:63:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13108:1;13098:7;:11;13090:48;;;;;-1:-1:-1;;;13090:48:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;13342:15;;13424;:22;13143:13;;13248:7;;13143:13;;13424:29;;13451:1;13424:29;:26;:29;:::i;:::-;13400:53;;13620:531;13636:1;13627:6;:10;:92;;;;;13704:15;13641:60;13670:15;13686:13;13670:30;;;;;;;;;;;;;;;;13641:24;:28;;:60;;;;:::i;:::-;:78;13627:92;13620:531;;;13740:18;13759:13;13740:33;;;;;;;;;;;;;;;;13730:6;:43;13726:401;;13790:45;13801:18;13820:13;13801:33;;;;;;;;;;;;;;;;13790:6;:10;;:45;;;;:::i;:::-;13781:54;;13868:60;13897:15;13913:13;13897:30;;;;;;;;;;;;;;;;13868:24;:28;;:60;;;;:::i;:::-;13934:7;;;;;13841:87;-1:-1:-1;13726:401:65;;;14060:45;14098:6;14060:18;14079:13;14060:33;;;;;;;;;;;;;;;;:37;;:45;;;;:::i;:::-;14024:18;14043:13;14024:33;;;;;;;;;;;;;;;:81;;;;14120:1;14111:10;;13726:401;-1:-1:-1;;14131:15:65;13620:531;;;14242:1;14234:5;:9;:24;;;-1:-1:-1;14247:11:65;;14234:24;14226:65;;;;;-1:-1:-1;;;14226:65:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;14368:13;14384:19;:7;14396:6;14384:19;:11;:19;:::i;:::-;14452:15;:31;;14368:35;;-1:-1:-1;14452:31:65;;;;;;;;;:::i;:::-;-1:-1:-1;14487:18:65;:34;;;;;;;;;;:::i;:::-;-1:-1:-1;14564:15:65;:42;;;14661:13;14677:3;;:31;;;-1:-1:-1;;;14677:31:65;;14690:10;14677:31;;;;;;;;;;;;-1:-1:-1;;;;;14677:3:65;;;;:12;;:31;;;;;;;;;;;;;;;14661:13;14677:3;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;14677:31:65;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14677:31:65;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14677:31:65;;-1:-1:-1;14677:31:65;14712:79;;;;-1:-1:-1;;;14712:79:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14801:64;;;;;;;;;;;;;;14840:10;;14801:64;;;;;;;;4961:1;;;;;;4851;12968:1901;:::o;8913:333::-;4653:16;;-1:-1:-1;;;;;4653:16:65;4639:10;:30;4631:81;;;;-1:-1:-1;;;4631:81:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9019:13;;4902:6;;-1:-1:-1;;;4902:6:65;;;;:11;;;;;;;;;4894:63;;;;-1:-1:-1;;;4894:63:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9046:36:65;;9038:90;;;;-1:-1:-1;;;9038:90:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9133:18;:43;;-1:-1:-1;;;;;;9133:43:65;-1:-1:-1;;;;;9133:43:65;;;;;;;;9186:56;;9207:10;;9186:56;;-1:-1:-1;;9186:56:65;4716:1;8913:333;:::o;688:33::-;;;-1:-1:-1;;;;;688:33:65;;:::o;15752:121::-;15803:38;15854:15;15847:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15752:121;:::o;1146:35::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1146:35:65;:::o;7970:321::-;4653:16;;-1:-1:-1;;;;;4653:16:65;4639:10;:30;4631:81;;;;-1:-1:-1;;;4631:81:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8072:13;;4902:6;;-1:-1:-1;;;4902:6:65;;;;:11;;;;;;;;;4894:63;;;;-1:-1:-1;;;4894:63:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8099:34:65;;8091:86;;;;-1:-1:-1;;;8091:86:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8182:19;:42;;-1:-1:-1;;;;;;8182:42:65;-1:-1:-1;;;;;8182:42:65;;;;;;;;8234:53;;8254:10;;8234:53;;-1:-1:-1;;8234:53:65;4716:1;7970:321;:::o;1072:32::-;;;;;;;;;;15120:463;4653:16;;-1:-1:-1;;;;;4653:16:65;4639:10;:30;4631:81;;;;-1:-1:-1;;;4631:81:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15221:13;;4902:6;;-1:-1:-1;;;4902:6:65;;;;:11;;;;;;;;;4894:63;;;;-1:-1:-1;;;4894:63:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15240:23;15266:3;;:28;;;-1:-1:-1;;;15266:28:65;;15288:4;15266:28;;;;;;-1:-1:-1;;;;;15266:3:65;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;15266:28:65;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15266:28:65;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15266:28:65;15298:13;15314:3;;:40;;;-1:-1:-1;;;15314:40:65;;-1:-1:-1;;;;;15314:40:65;;;;;;;;;;;;;;;15266:28;;-1:-1:-1;15298:13:65;;15314:3;;;:12;;:40;;;;;15266:28;;15314:40;;;;;;;15298:13;15314:3;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;15314:40:65;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15314:40:65;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15314:40:65;;-1:-1:-1;15314:40:65;15358:79;;;;-1:-1:-1;;;15358:79:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15441:6;:23;;-1:-1:-1;;;;15441:23:65;-1:-1:-1;;;15441:23:65;;;15474:72;;;;;;;;-1:-1:-1;;;;;15474:72:65;;;15507:10;;15474:72;;;;;;;;;15555:24;;;;;;;4961:1;;4716;15120:463;:::o;12405:452::-;4784:18;;-1:-1:-1;;;;;4784:18:65;4770:10;:32;4762:85;;;;-1:-1:-1;;;4762:85:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12493:13;;4902:6;;-1:-1:-1;;;4902:6:65;;;;:11;;;;;;;;;4894:63;;;;-1:-1:-1;;;4894:63:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12512:23;12538:3;;:28;;;-1:-1:-1;;;12538:28:65;;12560:4;12538:28;;;;;;-1:-1:-1;;;;;12538:3:65;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;12538:28:65;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12538:28:65;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12538:28:65;12570:13;12586:3;;12599:9;;12586:40;;;-1:-1:-1;;;12586:40:65;;-1:-1:-1;;;;;12599:9:65;;;12586:40;;;;;;;;;;;;12538:28;;-1:-1:-1;12570:13:65;;12586:3;;;:12;;:40;;;;;12538:28;;12586:40;;;;;;;12570:13;12586:3;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;12586:40:65;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12586:40:65;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12586:40:65;;-1:-1:-1;12586:40:65;12630:79;;;;-1:-1:-1;;;12630:79:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12713:6;:23;;-1:-1:-1;;;;12713:23:65;-1:-1:-1;;;12713:23:65;;;12793:9;;12746:74;;;;;;;;-1:-1:-1;;;;;12793:9:65;;;;12781:10;;12746:74;;;;;;;;;;12829:24;;;;;;;4961:1;;4851;12405:452::o;868:34::-;;;-1:-1:-1;;;;;868:34:65;;:::o;9440:317::-;9499:13;;4902:6;;-1:-1:-1;;;4902:6:65;;;;:11;;;;;;;;;4894:63;;;;-1:-1:-1;;;4894:63:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9536:1;9526:7;:11;9518:60;;;;-1:-1:-1;;;9518:60:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9583:13;9599:3;;:52;;;-1:-1:-1;;;9599:52:65;;9616:10;9599:52;;;;9636:4;9599:52;;;;;;;;;;;;-1:-1:-1;;;;;9599:3:65;;;;:16;;:52;;;;;;;;;;;;;;;9583:13;9599:3;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;9599:52:65;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9599:52:65;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9599:52:65;;-1:-1:-1;9599:52:65;9655:55;;;;-1:-1:-1;;;9655:55:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9720:33;;;;;;;;9733:10;;9720:33;;;;;;;;;;4961:1;9440:317;;:::o;777:24::-;;;-1:-1:-1;;;;;777:24:65;;:::o;986:30::-;;;;:::o;7137:706::-;7172:15;;4902:6;;-1:-1:-1;;;4902:6:65;;;;:11;;;;;;;;;4894:63;;;;-1:-1:-1;;;4894:63:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7193:36;7232:18;7193:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7262:19;:26;7292:1;7262:31;;7254:69;;;;;-1:-1:-1;;;7254:69:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;7391:32;;7427:186;7471:19;:26;7457:11;:40;7427:186;;;7546:62;7575:19;7595:11;7575:32;;;;;;;7546:62;7519:89;-1:-1:-1;7499:13:65;;7427:186;;;-1:-1:-1;7617:13:65;7633:3;;:69;;;-1:-1:-1;;;7633:69:65;;7650:10;7633:69;;;;7670:4;7633:69;;;;;;;;;;;;-1:-1:-1;;;;;7633:3:65;;;;:16;;:69;;;;;;;;;;;;;;;7617:13;7633:3;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;7633:69:65;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7633:69:65;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7633:69:65;;-1:-1:-1;7633:69:65;7706:70;;;;-1:-1:-1;;;7706:70:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7781:6;:22;;-1:-1:-1;;;;7781:22:65;-1:-1:-1;;;7781:22:65;;;7813:26;;;;7781:6;7813:26;4961:1;;;7137:706;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;1201:125::-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;281:15875:65:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;281:15875:65;;;-1:-1:-1;281:15875:65;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "approveLockedTokenOwner()": "4518b52e",
              "changeTokenReleaseSchedule(uint256,uint256[],uint256[])": "34e2366f",
              "depositTokens(uint256)": "dd49756e",
              "getReleaseDuration()": "721ce1e7",
              "getReleaseTokenAmount()": "3256f0fe",
              "init()": "e1c7392a",
              "lastReleaseTime()": "dfaf734a",
              "lockedTokenOwner()": "2aa4486f",
              "newLockedTokenOwner()": "da45b3ac",
              "releaseDuration(uint256)": "8f833272",
              "releaseTokenAmount(uint256)": "867513a9",
              "safeVault()": "deef94de",
              "status()": "200d2ed2",
              "transferTokensByLockedTokenOwner(address)": "ad99103d",
              "transferTokensByUnlockedTokenOwner()": "cdc0d718",
              "unlockedTokenOwner()": "716d9bf8",
              "updateLockedTokenOwner(address)": "8d5b1666",
              "updateUnlockedTokenOwner(address)": "532c6776",
              "withdrawTokensByUnlockedTokenOwner(uint256)": "460ca0eb"
            }
          },
          "userdoc": {
            "methods": {
              "approveLockedTokenOwner()": {
                "notice": "Approve Locked Token Owner."
              },
              "changeTokenReleaseSchedule(uint256,uint256[],uint256[])": {
                "notice": "Change the Token release schedule. It creates a completely new schedule, and does not append on the previous one."
              },
              "constructor": "Setup the required parameters.",
              "depositTokens(uint256)": {
                "notice": "Deposit tokens to this contract."
              },
              "getReleaseDuration()": {
                "notice": "Function to read the current token release duration."
              },
              "getReleaseTokenAmount()": {
                "notice": "Function to read the current token release amount."
              },
              "init()": {
                "notice": "This function is called once after deployment for token transfer based on schedule."
              },
              "transferTokensByLockedTokenOwner(address)": {
                "notice": "Transfers all of the remaining tokens by the owner maybe for an upgrade."
              },
              "transferTokensByUnlockedTokenOwner()": {
                "notice": "Transfers all of the remaining tokens in an emergency situation."
              },
              "updateLockedTokenOwner(address)": {
                "notice": "Update Locked Token Owner."
              },
              "updateUnlockedTokenOwner(address)": {
                "notice": "Update Unlocked Token Owner."
              },
              "withdrawTokensByUnlockedTokenOwner(uint256)": {
                "notice": "Withdraws all unlocked/released token."
              }
            },
            "notice": "You can use this contract for timed token release from Dev Fund."
          }
        }
      },
      "contracts/governance/Vesting/ITeamVesting.sol": {
        "ITeamVesting": {
          "abi": [
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "governanceWithdrawTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interfaces are used to cast a contract address into a callable instance. This interface is used by Staking contract to call governanceWithdrawTokens function having the vesting contract instance address.",
            "methods": {},
            "title": "Interface for TeamVesting contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "governanceWithdrawTokens(address)": "78f24bc6"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/governance/Vesting/IVesting.sol": {
        "IVesting": {
          "abi": [
            {
              "constant": false,
              "inputs": [],
              "name": "duration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "endDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "stakeTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interfaces are used to cast a contract address into a callable instance. This interface is used by VestingLogic contract to implement stakeTokens function and on VestingRegistry contract to call IVesting(vesting).stakeTokens function at a vesting instance.",
            "methods": {},
            "title": "Interface for Vesting contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "duration()": "0fb5a6b4",
              "endDate()": "c24a0f8b",
              "stakeTokens(uint256)": "7547c7a3"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/governance/Vesting/IVestingFactory.sol": {
        "IVestingFactory": {
          "abi": [
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_staking",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_feeSharing",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "deployTeamVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_staking",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_feeSharing",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "deployVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interfaces are used to cast a contract address into a callable instance. This interface is used by VestingFactory contract to override empty implemention of deployVesting and deployTeamVesting functions and on VestingRegistry contract to use an instance of VestingFactory.",
            "methods": {},
            "title": "Interface for Vesting Factory contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "deployTeamVesting(address,address,address,uint256,uint256,address,address)": "546344f0",
              "deployVesting(address,address,address,uint256,uint256,address,address)": "fa5f771e"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/governance/Vesting/IVestingRegistry.sol": {
        "IVestingRegistry": {
          "abi": [
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                }
              ],
              "name": "getTeamVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                }
              ],
              "name": "getVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interfaces are used to cast a contract address into a callable instance.",
            "methods": {},
            "title": "Interface for upgradable Vesting Registry contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getTeamVesting(address)": "c810a3e3",
              "getVesting(address)": "cc49ede7"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/governance/Vesting/OriginInvestorsClaim.sol": {
        "OriginInvestorsClaim": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "vestingRegistryAddress",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "investor",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "ClaimTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "investor",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "ClaimVested",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "qty",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "InvestorsAmountsListAppended",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "qty",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "totalAmount",
                  "type": "uint256"
                }
              ],
              "name": "InvestorsAmountsListInitialized",
              "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"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOVToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV_VESTING_CLIFF",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "investors",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "claimAmounts",
                  "type": "uint256[]"
                }
              ],
              "name": "appendInvestorsAmountsList",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "toAddress",
                  "type": "address"
                }
              ],
              "name": "authorizedBalanceWithdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "claim",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "investorsAmountsList",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "investorsListInitialized",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "investorsQty",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kickoffTS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "setInvestorsAmountsListInitialized",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract Staking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingRegistry",
              "outputs": [
                {
                  "internalType": "contract VestingRegistry",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingTerm",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "appendInvestorsAmountsList(address[],uint256[])": {
                "params": {
                  "claimAmounts": "The list of amounts for investors investors[i] will receive claimAmounts[i] of SOV.",
                  "investors": "The list of investors addresses to add to the list. Duplicates will be skipped."
                }
              },
              "authorizedBalanceWithdraw(address)": {
                "params": {
                  "toAddress": "The recipient address of all this contract tokens."
                }
              },
              "constructor": {
                "params": {
                  "vestingRegistryAddress": "The vestingRegistry contract instance address."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Origin investors claim vested cSOV tokens."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060405162001aff38038062001aff8339810160408190526200003491620002bd565b6000620000496001600160e01b036200028c16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080600560016101000a8154816001600160a01b0302191690836001600160a01b03160217905550600560019054906101000a90046001600160a01b03166001600160a01b0316634cf088d96040518163ffffffff1660e01b815260040160206040518083038186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620001449190810190620002bd565b600680546001600160a01b0319166001600160a01b0392831617908190556040805162073f9960e01b81529051919092169162073f99916004808301926020929190829003018186803b1580156200019b57600080fd5b505afa158015620001b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620001d6919081019062000307565b6002556006546040805163a58848c560e01b815290516001600160a01b039092169163a58848c591600480820192602092909190829003018186803b1580156200021f57600080fd5b505afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200025a9190810190620002e6565b600780546001600160a01b0319166001600160a01b03929092169190911790555060025462375f000160035562000381565b3390565b80516200029d8162000351565b92915050565b80516200029d816200036b565b80516200029d8162000376565b600060208284031215620002d057600080fd5b6000620002de848462000290565b949350505050565b600060208284031215620002f957600080fd5b6000620002de8484620002a3565b6000602082840312156200031a57600080fd5b6000620002de8484620002b0565b60006200029d8262000342565b60006200029d8262000328565b6001600160a01b031690565b90565b6200035c8162000328565b81146200036857600080fd5b50565b6200035c8162000335565b6200035c816200034e565b61176e80620003916000396000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c806369f20aaa116100ad578063904c5b8f11610071578063904c5b8f14610229578063a58848c514610231578063ba176a9a14610239578063f2fde38b14610241578063f706c9dc146102545761012b565b806369f20aaa146101de57806370480275146101f15780637d630fc4146102045780638da5cb5b1461020c5780638f32d59b146102215761012b565b80634cf088d9116100f45780634cf088d91461019e5780634d2dc5f2146101b35780634e71d92d146101bb578063545616ce146101c35780635e28ac64146101d65761012b565b8062073f99146101305780631785f53c1461014e5780631a39d8ef1461016357806326db62ff1461016b578063429b62e51461017e575b600080fd5b61013861025c565b6040516101459190611671565b60405180910390f35b61016161015c366004610f11565b610262565b005b6101386102ea565b610138610179366004610f11565b6102f0565b61019161018c366004610f11565b610302565b6040516101459190611584565b6101a6610317565b6040516101459190611592565b610161610326565b610161610477565b6101616101d1366004610f11565b6104e6565b61013861063c565b6101616101ec366004610f55565b610643565b6101616101ff366004610f11565b61083a565b6101916108b1565b6102146108ba565b6040516101459190611501565b6101916108c9565b6101a66108ed565b6101a6610901565b610138610910565b61016161024f366004610f11565b610916565b610138610943565b60025481565b61026a6108c9565b61028f5760405162461bcd60e51b815260040161028690611631565b60405180910390fd5b6001600160a01b03811660009081526008602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f906102df908390611501565b60405180910390a150565b60015481565b60096020526000908152604090205481565b60086020526000908152604090205460ff1681565b6006546001600160a01b031681565b61032e6108c9565b8061034857503360009081526008602052604090205460ff165b6103645760405162461bcd60e51b815260040161028690611661565b60055460ff16156103875760405162461bcd60e51b8152600401610286906115f1565b6001546007546040516370a0823160e01b81526001600160a01b03909116906370a08231906103ba903090600401611501565b60206040518083038186803b1580156103d257600080fd5b505afa1580156103e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061040a9190810190610fe3565b10156104285760405162461bcd60e51b815260040161028690611601565b6005805460ff1916600190811790915560045490546040517f1fa52d395a75695574bb6155ee9601b031a7354ca0e7a079c9e0a92e546a77fd9261046d92909161167f565b60405180910390a1565b336000908152600960205260409020546104a35760405162461bcd60e51b815260040161028690611611565b60055460ff166104c55760405162461bcd60e51b815260040161028690611641565b6003544210156104dc576104d7610949565b6104e4565b6104e4610c7e565b565b6104ee6108c9565b8061050857503360009081526008602052604090205460ff165b6105245760405162461bcd60e51b815260040161028690611661565b6007546040516370a0823160e01b81526001600160a01b039091169063a9059cbb90839083906370a082319061055e903090600401611501565b60206040518083038186803b15801561057657600080fd5b505afa15801561058a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105ae9190810190610fe3565b6040518363ffffffff1660e01b81526004016105cb929190611576565b602060405180830381600087803b1580156105e557600080fd5b505af11580156105f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061061d9190810190610fc5565b6106395760405162461bcd60e51b8152600401610286906115b1565b50565b62375f0081565b61064b6108c9565b8061066557503360009081526008602052604090205460ff165b6106815760405162461bcd60e51b815260040161028690611661565b60055460ff16156106a45760405162461bcd60e51b8152600401610286906115f1565b6000808483146106c65760405162461bcd60e51b815260040161028690611651565b60005b858110156107ae57600960008888848181106106e157fe5b90506020020160206106f69190810190610f11565b6001600160a01b031681526020810191909152604001600020546107925784848281811061072057fe5b905060200201356009600089898581811061073757fe5b905060200201602061074c9190810190610f11565b6001600160a01b0316815260208101919091526040016000205561078b85858381811061077557fe5b9050602002013583610d7690919063ffffffff16565b91506107a6565b6107a383600163ffffffff610d7616565b92505b6001016106c9565b506107d16107c2868463ffffffff610da416565b6004549063ffffffff610d7616565b6004556001546107e7908263ffffffff610d7616565b6001557f166f3ab55781d1f678f4df14776e1927c137c85f5d564fe0294613bf72f49cae61081b868463ffffffff610da416565b8260405161082a92919061167f565b60405180910390a1505050505050565b6108426108c9565b61085e5760405162461bcd60e51b815260040161028690611631565b6001600160a01b03811660009081526008602052604090819020805460ff19166001179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339906102df908390611501565b60055460ff1681565b6000546001600160a01b031690565b600080546001600160a01b03166108de610de6565b6001600160a01b031614905090565b60055461010090046001600160a01b031681565b6007546001600160a01b031681565b60035481565b61091e6108c9565b61093a5760405162461bcd60e51b815260040161028690611631565b61063981610dea565b60045481565b60035460009061095f904263ffffffff610da416565b3360008181526009602052604080822054600554915163cc49ede760e01b8152949550859490936101009092046001600160a01b03169163cc49ede7916109a9919060040161150f565b60206040518083038186803b1580156109c157600080fd5b505afa1580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109f99190810190610f37565b90506001600160a01b03811615610a225760405162461bcd60e51b8152600401610286906115e1565b33600081815260096020526040808220919091556005549051630665a06f60e01b81526101009091046001600160a01b031691630665a06f91610a6e9190869089908990600401611538565b600060405180830381600087803b158015610a8857600080fd5b505af1158015610a9c573d6000803e3d6000fd5b505060055460405163cc49ede760e01b81526101009091046001600160a01b0316925063cc49ede79150610ad490339060040161150f565b60206040518083038186803b158015610aec57600080fd5b505afa158015610b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b249190810190610f37565b60075460055460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb92610b6192610100900416908690600401611576565b602060405180830381600087803b158015610b7b57600080fd5b505af1158015610b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bb39190810190610fc5565b610bcf5760405162461bcd60e51b815260040161028690611621565b600554604051633cd41fad60e11b81526101009091046001600160a01b0316906379a83f5a90610c059084908690600401611576565b600060405180830381600087803b158015610c1f57600080fd5b505af1158015610c33573d6000803e3d6000fd5b50505050336001600160a01b03167f5b97b27a688ddcf7531a6e5c0fe38f0e819cabb30e7329972f8bca443e8a546d83604051610c709190611671565b60405180910390a250505050565b336000818152600960205260408082208054929055600754905163a9059cbb60e01b815291926001600160a01b039091169163a9059cbb91610cc491859060040161151d565b602060405180830381600087803b158015610cde57600080fd5b505af1158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d169190810190610fc5565b610d325760405162461bcd60e51b815260040161028690611621565b336001600160a01b03167f3144e62e87c82d8af6ec288b3c120e568b1c9c642b26754f9dbf25506d0cd85b82604051610d6b9190611671565b60405180910390a250565b600082820183811015610d9b5760405162461bcd60e51b8152600401610286906115d1565b90505b92915050565b6000610d9b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e6b565b3390565b6001600160a01b038116610e105760405162461bcd60e51b8152600401610286906115c1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115610e8f5760405162461bcd60e51b815260040161028691906115a0565b50508183035b9392505050565b8035610d9e81611705565b8051610d9e81611705565b60008083601f840112610ec457600080fd5b50813567ffffffffffffffff811115610edc57600080fd5b602083019150836020820283011115610ef457600080fd5b9250929050565b8051610d9e81611719565b8051610d9e81611722565b600060208284031215610f2357600080fd5b6000610f2f8484610e9c565b949350505050565b600060208284031215610f4957600080fd5b6000610f2f8484610ea7565b60008060008060408587031215610f6b57600080fd5b843567ffffffffffffffff811115610f8257600080fd5b610f8e87828801610eb2565b9450945050602085013567ffffffffffffffff811115610fad57600080fd5b610fb987828801610eb2565b95989497509550505050565b600060208284031215610fd757600080fd5b6000610f2f8484610efb565b600060208284031215610ff557600080fd5b6000610f2f8484610f06565b61100a816116b9565b82525050565b61100a8161169a565b61100a816116a5565b61100a816116c0565b60006110368261168d565b6110408185611691565b93506110508185602086016116cb565b611059816116fb565b9093019392505050565b6000611070604083611691565b7f4f726967696e496e766573746f7273436c61696d3a3a617574686f72697a656481527f5472616e7366657242616c616e63653a207472616e73666572206661696c6564602082015260400192915050565b60006110cf602683611691565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000611117601b83611691565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611150604a83611691565b7f4f726967696e496e766573746f7273436c61696d3a3a77697468647261773a2081527f74686520636c61696d65722068617320616e206163746976652076657374696e60208201526919c818dbdb9d1c9858dd60b21b604082015260600192915050565b60006111c2605983611691565b7f4f726967696e496e766573746f7273436c61696d3a3a6e6f74496e697469616c81527f697a65643a2074686520696e766573746f7273206c6973742073686f756c642060208201527f6e6f742062652073657420617320696e697469616c697a656400000000000000604082015260600192915050565b6000611247605283611691565b7f4f726967696e496e766573746f7273436c61696d3a3a736574496e766573746f81527f7273416d6f756e74734c6973743a2074686520636f6e7472616374206973206e6020820152711bdd08195b9bdd59da08199a5b985b98d95960721b604082015260600192915050565b60006112c1604983611691565b7f4f726967696e496e766573746f7273436c61696d3a3a6f6e6c7957686974656c81527f69737465643a206e6f742077686974656c6973746564206f7220616c726561646020820152681e4818db185a5b595960ba1b604082015260600192915050565b6000611332603383611691565b7f4f726967696e496e766573746f7273436c61696d3a3a77697468647261773a2081527214d3d5881d1c985b9cd9995c8819985a5b1959606a1b602082015260400192915050565b6000611387600c83611691565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006113af604a83611691565b7f4f726967696e496e766573746f7273436c61696d3a3a696e697469616c697a6581527f643a2074686520696e766573746f7273206c69737420686173206e6f74206265602082015269195b881cd95d081e595d60b21b604082015260600192915050565b6000611421605983611691565b7f4f726967696e496e766573746f7273436c61696d3a3a617070656e64496e766581527f73746f7273416d6f756e74734c6973743a20696e766573746f72732e6c656e6760208201527f746820213d20636c61696d416d6f756e74732e6c656e67746800000000000000604082015260600192915050565b60006114a6603a83611691565b7f4f726967696e496e766573746f7273436c61696d3a3a6f6e6c79417574686f7281527f697a65643a2073686f756c6420626520617574686f72697a6564000000000000602082015260400192915050565b61100a816116b6565b60208101610d9e8284611010565b60208101610d9e8284611001565b6040810161152b8285611001565b610e9560208301846114f8565b608081016115468287611001565b61155360208301866114f8565b61156060408301856114f8565b61156d60608301846114f8565b95945050505050565b6040810161152b8285611010565b60208101610d9e8284611019565b60208101610d9e8284611022565b60208082528101610d9b818461102b565b60208082528101610d9e81611063565b60208082528101610d9e816110c2565b60208082528101610d9e8161110a565b60208082528101610d9e81611143565b60208082528101610d9e816111b5565b60208082528101610d9e8161123a565b60208082528101610d9e816112b4565b60208082528101610d9e81611325565b60208082528101610d9e8161137a565b60208082528101610d9e816113a2565b60208082528101610d9e81611414565b60208082528101610d9e81611499565b60208101610d9e82846114f8565b6040810161152b82856114f8565b5190565b90815260200190565b6000610d9e826116aa565b151590565b6001600160a01b031690565b90565b6000610d9e825b6000610d9e8261169a565b60005b838110156116e65781810151838201526020016116ce565b838111156116f5576000848401525b50505050565b601f01601f191690565b61170e8161169a565b811461063957600080fd5b61170e816116a5565b61170e816116b656fea365627a7a72315820d29c4de2736c69b9ea2a1af021e3170f1a69459742134b3d0218e52a841578af6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1AFF CODESIZE SUB DUP1 PUSH3 0x1AFF DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x2BD JUMP JUMPDEST PUSH1 0x0 PUSH3 0x49 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x28C AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP DUP1 PUSH1 0x5 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x5 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4CF088D9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x11E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x144 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x2BD JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH3 0x73F99 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH3 0x73F99 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x19B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x1D6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x307 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA58848C5 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xA58848C5 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x234 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x25A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x2E6 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH1 0x2 SLOAD PUSH3 0x375F00 ADD PUSH1 0x3 SSTORE PUSH3 0x381 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x29D DUP2 PUSH3 0x351 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x29D DUP2 PUSH3 0x36B JUMP JUMPDEST DUP1 MLOAD PUSH3 0x29D DUP2 PUSH3 0x376 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x2DE DUP5 DUP5 PUSH3 0x290 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x2DE DUP5 DUP5 PUSH3 0x2A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x2DE DUP5 DUP5 PUSH3 0x2B0 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x29D DUP3 PUSH3 0x342 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x29D DUP3 PUSH3 0x328 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0x35C DUP2 PUSH3 0x328 JUMP JUMPDEST DUP2 EQ PUSH3 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x35C DUP2 PUSH3 0x335 JUMP JUMPDEST PUSH3 0x35C DUP2 PUSH3 0x34E JUMP JUMPDEST PUSH2 0x176E DUP1 PUSH3 0x391 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x69F20AAA GT PUSH2 0xAD JUMPI DUP1 PUSH4 0x904C5B8F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x904C5B8F EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0xBA176A9A EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0xF706C9DC EQ PUSH2 0x254 JUMPI PUSH2 0x12B JUMP JUMPDEST DUP1 PUSH4 0x69F20AAA EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x7D630FC4 EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x221 JUMPI PUSH2 0x12B JUMP JUMPDEST DUP1 PUSH4 0x4CF088D9 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x4D2DC5F2 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x4E71D92D EQ PUSH2 0x1BB JUMPI DUP1 PUSH4 0x545616CE EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x5E28AC64 EQ PUSH2 0x1D6 JUMPI PUSH2 0x12B JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x1A39D8EF EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0x26DB62FF EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x17E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x138 PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x1671 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH2 0x15C CALLDATASIZE PUSH1 0x4 PUSH2 0xF11 JUMP JUMPDEST PUSH2 0x262 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x138 PUSH2 0x2EA JUMP JUMPDEST PUSH2 0x138 PUSH2 0x179 CALLDATASIZE PUSH1 0x4 PUSH2 0xF11 JUMP JUMPDEST PUSH2 0x2F0 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x18C CALLDATASIZE PUSH1 0x4 PUSH2 0xF11 JUMP JUMPDEST PUSH2 0x302 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x1584 JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x317 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x1592 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x326 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x477 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0xF11 JUMP JUMPDEST PUSH2 0x4E6 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x161 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0xF55 JUMP JUMPDEST PUSH2 0x643 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0xF11 JUMP JUMPDEST PUSH2 0x83A JUMP JUMPDEST PUSH2 0x191 PUSH2 0x8B1 JUMP JUMPDEST PUSH2 0x214 PUSH2 0x8BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x1501 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x8ED JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x901 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x910 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0xF11 JUMP JUMPDEST PUSH2 0x916 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x943 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x26A PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x28F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1631 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0x2DF SWAP1 DUP4 SWAP1 PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x32E PUSH2 0x8C9 JUMP JUMPDEST DUP1 PUSH2 0x348 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x364 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1661 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x387 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x3BA SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x40A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xFE3 JUMP JUMPDEST LT ISZERO PUSH2 0x428 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1601 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 SLOAD SWAP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x1FA52D395A75695574BB6155EE9601B031A7354CA0E7A079C9E0A92E546A77FD SWAP3 PUSH2 0x46D SWAP3 SWAP1 SWAP2 PUSH2 0x167F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH2 0x4C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1641 JUMP JUMPDEST PUSH1 0x3 SLOAD TIMESTAMP LT ISZERO PUSH2 0x4DC JUMPI PUSH2 0x4D7 PUSH2 0x949 JUMP JUMPDEST PUSH2 0x4E4 JUMP JUMPDEST PUSH2 0x4E4 PUSH2 0xC7E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4EE PUSH2 0x8C9 JUMP JUMPDEST DUP1 PUSH2 0x508 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x524 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1661 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 DUP4 SWAP1 DUP4 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x55E SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x58A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x5AE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP3 SWAP2 SWAP1 PUSH2 0x1576 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x61D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x639 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x15B1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x375F00 DUP2 JUMP JUMPDEST PUSH2 0x64B PUSH2 0x8C9 JUMP JUMPDEST DUP1 PUSH2 0x665 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x681 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1661 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x6A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 DUP4 EQ PUSH2 0x6C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1651 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x7AE JUMPI PUSH1 0x9 PUSH1 0x0 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x6E1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x6F6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF11 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x792 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x720 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x9 PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x737 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x74C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF11 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH2 0x78B DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x775 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 PUSH2 0xD76 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP PUSH2 0x7A6 JUMP JUMPDEST PUSH2 0x7A3 DUP4 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0xD76 AND JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x6C9 JUMP JUMPDEST POP PUSH2 0x7D1 PUSH2 0x7C2 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0xDA4 AND JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xD76 AND JUMP JUMPDEST PUSH1 0x4 SSTORE PUSH1 0x1 SLOAD PUSH2 0x7E7 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD76 AND JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH32 0x166F3AB55781D1F678F4DF14776E1927C137C85F5D564FE0294613BF72F49CAE PUSH2 0x81B DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0xDA4 AND JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x82A SWAP3 SWAP2 SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x842 PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x85E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1631 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0x2DF SWAP1 DUP4 SWAP1 PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8DE PUSH2 0xDE6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x91E PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x93A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1631 JUMP JUMPDEST PUSH2 0x639 DUP2 PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x95F SWAP1 TIMESTAMP PUSH4 0xFFFFFFFF PUSH2 0xDA4 AND JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD PUSH1 0x5 SLOAD SWAP2 MLOAD PUSH4 0xCC49EDE7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP5 SWAP6 POP DUP6 SWAP5 SWAP1 SWAP4 PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xCC49EDE7 SWAP2 PUSH2 0x9A9 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x150F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x9F9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF37 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xA22 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x15E1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x5 SLOAD SWAP1 MLOAD PUSH4 0x665A06F PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x665A06F SWAP2 PUSH2 0xA6E SWAP2 SWAP1 DUP7 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x1538 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA9C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC49EDE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP PUSH4 0xCC49EDE7 SWAP2 POP PUSH2 0xAD4 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x150F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xB24 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF37 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP3 PUSH4 0xA9059CBB SWAP3 PUSH2 0xB61 SWAP3 PUSH2 0x100 SWAP1 DIV AND SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1576 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xBB3 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0xBCF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1621 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3CD41FAD PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x79A83F5A SWAP1 PUSH2 0xC05 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1576 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5B97B27A688DDCF7531A6E5C0FE38F0E819CABB30E7329972F8BCA443E8A546D DUP4 PUSH1 0x40 MLOAD PUSH2 0xC70 SWAP2 SWAP1 PUSH2 0x1671 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SSTORE PUSH1 0x7 SLOAD SWAP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0xCC4 SWAP2 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x151D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCF2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD16 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0xD32 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1621 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x3144E62E87C82D8AF6EC288B3C120E568B1C9C642B26754F9DBF25506D0CD85B DUP3 PUSH1 0x40 MLOAD PUSH2 0xD6B SWAP2 SWAP1 PUSH2 0x1671 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x15D1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0xE6B JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xE10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x15C1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xE8F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x15A0 JUMP JUMPDEST POP POP DUP2 DUP4 SUB JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xD9E DUP2 PUSH2 0x1705 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xD9E DUP2 PUSH2 0x1705 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xEC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xEDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xEF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0xD9E DUP2 PUSH2 0x1719 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xD9E DUP2 PUSH2 0x1722 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF2F DUP5 DUP5 PUSH2 0xE9C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF2F DUP5 DUP5 PUSH2 0xEA7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF8E DUP8 DUP3 DUP9 ADD PUSH2 0xEB2 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFB9 DUP8 DUP3 DUP9 ADD PUSH2 0xEB2 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF2F DUP5 DUP5 PUSH2 0xEFB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF2F DUP5 DUP5 PUSH2 0xF06 JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x16B9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x169A JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x16A5 JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x16C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1036 DUP3 PUSH2 0x168D JUMP JUMPDEST PUSH2 0x1040 DUP2 DUP6 PUSH2 0x1691 JUMP JUMPDEST SWAP4 POP PUSH2 0x1050 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x16CB JUMP JUMPDEST PUSH2 0x1059 DUP2 PUSH2 0x16FB JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1070 PUSH1 0x40 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A617574686F72697A6564 DUP2 MSTORE PUSH32 0x5472616E7366657242616C616E63653A207472616E73666572206661696C6564 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10CF PUSH1 0x26 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1117 PUSH1 0x1B DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1150 PUSH1 0x4A DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A77697468647261773A20 DUP2 MSTORE PUSH32 0x74686520636C61696D65722068617320616E206163746976652076657374696E PUSH1 0x20 DUP3 ADD MSTORE PUSH10 0x19C818DBDB9D1C9858DD PUSH1 0xB2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11C2 PUSH1 0x59 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A6E6F74496E697469616C DUP2 MSTORE PUSH32 0x697A65643A2074686520696E766573746F7273206C6973742073686F756C6420 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6E6F742062652073657420617320696E697469616C697A656400000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1247 PUSH1 0x52 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A736574496E766573746F DUP2 MSTORE PUSH32 0x7273416D6F756E74734C6973743A2074686520636F6E7472616374206973206E PUSH1 0x20 DUP3 ADD MSTORE PUSH18 0x1BDD08195B9BDD59DA08199A5B985B98D959 PUSH1 0x72 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12C1 PUSH1 0x49 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A6F6E6C7957686974656C DUP2 MSTORE PUSH32 0x69737465643A206E6F742077686974656C6973746564206F7220616C72656164 PUSH1 0x20 DUP3 ADD MSTORE PUSH9 0x1E4818DB185A5B5959 PUSH1 0xBA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1332 PUSH1 0x33 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A77697468647261773A20 DUP2 MSTORE PUSH19 0x14D3D5881D1C985B9CD9995C8819985A5B1959 PUSH1 0x6A SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1387 PUSH1 0xC DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13AF PUSH1 0x4A DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A696E697469616C697A65 DUP2 MSTORE PUSH32 0x643A2074686520696E766573746F7273206C69737420686173206E6F74206265 PUSH1 0x20 DUP3 ADD MSTORE PUSH10 0x195B881CD95D081E595D PUSH1 0xB2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1421 PUSH1 0x59 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A617070656E64496E7665 DUP2 MSTORE PUSH32 0x73746F7273416D6F756E74734C6973743A20696E766573746F72732E6C656E67 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x746820213D20636C61696D416D6F756E74732E6C656E67746800000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14A6 PUSH1 0x3A DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A6F6E6C79417574686F72 DUP2 MSTORE PUSH32 0x697A65643A2073686F756C6420626520617574686F72697A6564000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x16B6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD9E DUP3 DUP5 PUSH2 0x1010 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD9E DUP3 DUP5 PUSH2 0x1001 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x152B DUP3 DUP6 PUSH2 0x1001 JUMP JUMPDEST PUSH2 0xE95 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x14F8 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x1546 DUP3 DUP8 PUSH2 0x1001 JUMP JUMPDEST PUSH2 0x1553 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x14F8 JUMP JUMPDEST PUSH2 0x1560 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x14F8 JUMP JUMPDEST PUSH2 0x156D PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x14F8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x152B DUP3 DUP6 PUSH2 0x1010 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD9E DUP3 DUP5 PUSH2 0x1019 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD9E DUP3 DUP5 PUSH2 0x1022 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9B DUP2 DUP5 PUSH2 0x102B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x1063 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x10C2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x110A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x1143 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x11B5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x123A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x12B4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x1325 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x1414 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x1499 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD9E DUP3 DUP5 PUSH2 0x14F8 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x152B DUP3 DUP6 PUSH2 0x14F8 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9E DUP3 PUSH2 0x16AA JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9E DUP3 JUMPDEST PUSH1 0x0 PUSH2 0xD9E DUP3 PUSH2 0x169A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16E6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16CE JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x16F5 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x170E DUP2 PUSH2 0x169A JUMP JUMPDEST DUP2 EQ PUSH2 0x639 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x170E DUP2 PUSH2 0x16A5 JUMP JUMPDEST PUSH2 0x170E DUP2 PUSH2 0x16B6 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xD2 SWAP13 0x4D 0xE2 PUSH20 0x6C69B9EA2A1AF021E3170F1A69459742134B3D02 XOR 0xE5 0x2A DUP5 ISZERO PUSH25 0xAF6C6578706572696D656E74616CF564736F6C634300051100 BLOCKHASH ",
              "sourceMap": "277:7069:70:-;;;2497:279;8:9:-1;5:2;;;30:1;27;20:12;5:2;2497:279:70;;;;;;;;;;;;;;;;;;;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;2586:22:70;2552:15;;:57;;;;;-1:-1:-1;;;;;2552:57:70;;;;;-1:-1:-1;;;;;2552:57:70;;;;;;2631:15;;;;;;;;;-1:-1:-1;;;;;2631:15:70;-1:-1:-1;;;;;2631:23:70;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2631:25:70;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2631:25:70;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2631:25:70;;;;;;;;;2613:7;:44;;-1:-1:-1;;;;;;2613:44:70;-1:-1:-1;;;;;2613:44:70;;;;;;;;2673:19;;;-1:-1:-1;;;2673:19:70;;;;:7;;;;;:17;;:19;;;;;;;;;;;;;;:7;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;2673:19:70;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2673:19:70;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2673:19:70;;;;;;;;;2661:9;:31;2707:7;;:18;;;-1:-1:-1;;;2707:18:70;;;;-1:-1:-1;;;;;2707:7:70;;;;:16;;:18;;;;;;;;;;;;;;;:7;:18;;;5:2:-1;;;;30:1;27;20:12;5:2;2707:18:70;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2707:18:70;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2707:18:70;;;;;;;;;2696:8;:29;;-1:-1:-1;;;;;;2696:29:70;-1:-1:-1;;;;;2696:29:70;;;;;;;;;;-1:-1:-1;2743:9:70;;618:7;2743:29;2729:11;:43;277:7069;;780:87:137;853:10;780:87;:::o;5:134:-1:-;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:166;240:13;;258:49;240:13;258:49;;319:134;397:13;;415:33;397:13;415:33;;460:263;;575:2;563:9;554:7;550:23;546:32;543:2;;;591:1;588;581:12;543:2;626:1;643:64;699:7;679:9;643:64;;;633:74;537:186;-1:-1;;;;537:186;730:295;;861:2;849:9;840:7;836:23;832:32;829:2;;;877:1;874;867:12;829:2;912:1;929:80;1001:7;981:9;929:80;;1032:263;;1147:2;1135:9;1126:7;1122:23;1118:32;1115:2;;;1163:1;1160;1153:12;1115:2;1198:1;1215:64;1271:7;1251:9;1215:64;;1302:91;;1364:24;1382:5;1364:24;;1400:107;;1478:24;1496:5;1478:24;;1514:121;-1:-1;;;;;1576:54;;1559:76;1642:72;1704:5;1687:27;1721:117;1790:24;1808:5;1790:24;;;1783:5;1780:35;1770:2;;1829:1;1826;1819:12;1770:2;1764:74;;1845:149;1930:40;1964:5;1930:40;;2001:117;2070:24;2088:5;2070:24;;2044:74;277:7069:70;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061012b5760003560e01c806369f20aaa116100ad578063904c5b8f11610071578063904c5b8f14610229578063a58848c514610231578063ba176a9a14610239578063f2fde38b14610241578063f706c9dc146102545761012b565b806369f20aaa146101de57806370480275146101f15780637d630fc4146102045780638da5cb5b1461020c5780638f32d59b146102215761012b565b80634cf088d9116100f45780634cf088d91461019e5780634d2dc5f2146101b35780634e71d92d146101bb578063545616ce146101c35780635e28ac64146101d65761012b565b8062073f99146101305780631785f53c1461014e5780631a39d8ef1461016357806326db62ff1461016b578063429b62e51461017e575b600080fd5b61013861025c565b6040516101459190611671565b60405180910390f35b61016161015c366004610f11565b610262565b005b6101386102ea565b610138610179366004610f11565b6102f0565b61019161018c366004610f11565b610302565b6040516101459190611584565b6101a6610317565b6040516101459190611592565b610161610326565b610161610477565b6101616101d1366004610f11565b6104e6565b61013861063c565b6101616101ec366004610f55565b610643565b6101616101ff366004610f11565b61083a565b6101916108b1565b6102146108ba565b6040516101459190611501565b6101916108c9565b6101a66108ed565b6101a6610901565b610138610910565b61016161024f366004610f11565b610916565b610138610943565b60025481565b61026a6108c9565b61028f5760405162461bcd60e51b815260040161028690611631565b60405180910390fd5b6001600160a01b03811660009081526008602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f906102df908390611501565b60405180910390a150565b60015481565b60096020526000908152604090205481565b60086020526000908152604090205460ff1681565b6006546001600160a01b031681565b61032e6108c9565b8061034857503360009081526008602052604090205460ff165b6103645760405162461bcd60e51b815260040161028690611661565b60055460ff16156103875760405162461bcd60e51b8152600401610286906115f1565b6001546007546040516370a0823160e01b81526001600160a01b03909116906370a08231906103ba903090600401611501565b60206040518083038186803b1580156103d257600080fd5b505afa1580156103e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061040a9190810190610fe3565b10156104285760405162461bcd60e51b815260040161028690611601565b6005805460ff1916600190811790915560045490546040517f1fa52d395a75695574bb6155ee9601b031a7354ca0e7a079c9e0a92e546a77fd9261046d92909161167f565b60405180910390a1565b336000908152600960205260409020546104a35760405162461bcd60e51b815260040161028690611611565b60055460ff166104c55760405162461bcd60e51b815260040161028690611641565b6003544210156104dc576104d7610949565b6104e4565b6104e4610c7e565b565b6104ee6108c9565b8061050857503360009081526008602052604090205460ff165b6105245760405162461bcd60e51b815260040161028690611661565b6007546040516370a0823160e01b81526001600160a01b039091169063a9059cbb90839083906370a082319061055e903090600401611501565b60206040518083038186803b15801561057657600080fd5b505afa15801561058a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105ae9190810190610fe3565b6040518363ffffffff1660e01b81526004016105cb929190611576565b602060405180830381600087803b1580156105e557600080fd5b505af11580156105f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061061d9190810190610fc5565b6106395760405162461bcd60e51b8152600401610286906115b1565b50565b62375f0081565b61064b6108c9565b8061066557503360009081526008602052604090205460ff165b6106815760405162461bcd60e51b815260040161028690611661565b60055460ff16156106a45760405162461bcd60e51b8152600401610286906115f1565b6000808483146106c65760405162461bcd60e51b815260040161028690611651565b60005b858110156107ae57600960008888848181106106e157fe5b90506020020160206106f69190810190610f11565b6001600160a01b031681526020810191909152604001600020546107925784848281811061072057fe5b905060200201356009600089898581811061073757fe5b905060200201602061074c9190810190610f11565b6001600160a01b0316815260208101919091526040016000205561078b85858381811061077557fe5b9050602002013583610d7690919063ffffffff16565b91506107a6565b6107a383600163ffffffff610d7616565b92505b6001016106c9565b506107d16107c2868463ffffffff610da416565b6004549063ffffffff610d7616565b6004556001546107e7908263ffffffff610d7616565b6001557f166f3ab55781d1f678f4df14776e1927c137c85f5d564fe0294613bf72f49cae61081b868463ffffffff610da416565b8260405161082a92919061167f565b60405180910390a1505050505050565b6108426108c9565b61085e5760405162461bcd60e51b815260040161028690611631565b6001600160a01b03811660009081526008602052604090819020805460ff19166001179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339906102df908390611501565b60055460ff1681565b6000546001600160a01b031690565b600080546001600160a01b03166108de610de6565b6001600160a01b031614905090565b60055461010090046001600160a01b031681565b6007546001600160a01b031681565b60035481565b61091e6108c9565b61093a5760405162461bcd60e51b815260040161028690611631565b61063981610dea565b60045481565b60035460009061095f904263ffffffff610da416565b3360008181526009602052604080822054600554915163cc49ede760e01b8152949550859490936101009092046001600160a01b03169163cc49ede7916109a9919060040161150f565b60206040518083038186803b1580156109c157600080fd5b505afa1580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109f99190810190610f37565b90506001600160a01b03811615610a225760405162461bcd60e51b8152600401610286906115e1565b33600081815260096020526040808220919091556005549051630665a06f60e01b81526101009091046001600160a01b031691630665a06f91610a6e9190869089908990600401611538565b600060405180830381600087803b158015610a8857600080fd5b505af1158015610a9c573d6000803e3d6000fd5b505060055460405163cc49ede760e01b81526101009091046001600160a01b0316925063cc49ede79150610ad490339060040161150f565b60206040518083038186803b158015610aec57600080fd5b505afa158015610b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b249190810190610f37565b60075460055460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb92610b6192610100900416908690600401611576565b602060405180830381600087803b158015610b7b57600080fd5b505af1158015610b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bb39190810190610fc5565b610bcf5760405162461bcd60e51b815260040161028690611621565b600554604051633cd41fad60e11b81526101009091046001600160a01b0316906379a83f5a90610c059084908690600401611576565b600060405180830381600087803b158015610c1f57600080fd5b505af1158015610c33573d6000803e3d6000fd5b50505050336001600160a01b03167f5b97b27a688ddcf7531a6e5c0fe38f0e819cabb30e7329972f8bca443e8a546d83604051610c709190611671565b60405180910390a250505050565b336000818152600960205260408082208054929055600754905163a9059cbb60e01b815291926001600160a01b039091169163a9059cbb91610cc491859060040161151d565b602060405180830381600087803b158015610cde57600080fd5b505af1158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d169190810190610fc5565b610d325760405162461bcd60e51b815260040161028690611621565b336001600160a01b03167f3144e62e87c82d8af6ec288b3c120e568b1c9c642b26754f9dbf25506d0cd85b82604051610d6b9190611671565b60405180910390a250565b600082820183811015610d9b5760405162461bcd60e51b8152600401610286906115d1565b90505b92915050565b6000610d9b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e6b565b3390565b6001600160a01b038116610e105760405162461bcd60e51b8152600401610286906115c1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115610e8f5760405162461bcd60e51b815260040161028691906115a0565b50508183035b9392505050565b8035610d9e81611705565b8051610d9e81611705565b60008083601f840112610ec457600080fd5b50813567ffffffffffffffff811115610edc57600080fd5b602083019150836020820283011115610ef457600080fd5b9250929050565b8051610d9e81611719565b8051610d9e81611722565b600060208284031215610f2357600080fd5b6000610f2f8484610e9c565b949350505050565b600060208284031215610f4957600080fd5b6000610f2f8484610ea7565b60008060008060408587031215610f6b57600080fd5b843567ffffffffffffffff811115610f8257600080fd5b610f8e87828801610eb2565b9450945050602085013567ffffffffffffffff811115610fad57600080fd5b610fb987828801610eb2565b95989497509550505050565b600060208284031215610fd757600080fd5b6000610f2f8484610efb565b600060208284031215610ff557600080fd5b6000610f2f8484610f06565b61100a816116b9565b82525050565b61100a8161169a565b61100a816116a5565b61100a816116c0565b60006110368261168d565b6110408185611691565b93506110508185602086016116cb565b611059816116fb565b9093019392505050565b6000611070604083611691565b7f4f726967696e496e766573746f7273436c61696d3a3a617574686f72697a656481527f5472616e7366657242616c616e63653a207472616e73666572206661696c6564602082015260400192915050565b60006110cf602683611691565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000611117601b83611691565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611150604a83611691565b7f4f726967696e496e766573746f7273436c61696d3a3a77697468647261773a2081527f74686520636c61696d65722068617320616e206163746976652076657374696e60208201526919c818dbdb9d1c9858dd60b21b604082015260600192915050565b60006111c2605983611691565b7f4f726967696e496e766573746f7273436c61696d3a3a6e6f74496e697469616c81527f697a65643a2074686520696e766573746f7273206c6973742073686f756c642060208201527f6e6f742062652073657420617320696e697469616c697a656400000000000000604082015260600192915050565b6000611247605283611691565b7f4f726967696e496e766573746f7273436c61696d3a3a736574496e766573746f81527f7273416d6f756e74734c6973743a2074686520636f6e7472616374206973206e6020820152711bdd08195b9bdd59da08199a5b985b98d95960721b604082015260600192915050565b60006112c1604983611691565b7f4f726967696e496e766573746f7273436c61696d3a3a6f6e6c7957686974656c81527f69737465643a206e6f742077686974656c6973746564206f7220616c726561646020820152681e4818db185a5b595960ba1b604082015260600192915050565b6000611332603383611691565b7f4f726967696e496e766573746f7273436c61696d3a3a77697468647261773a2081527214d3d5881d1c985b9cd9995c8819985a5b1959606a1b602082015260400192915050565b6000611387600c83611691565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006113af604a83611691565b7f4f726967696e496e766573746f7273436c61696d3a3a696e697469616c697a6581527f643a2074686520696e766573746f7273206c69737420686173206e6f74206265602082015269195b881cd95d081e595d60b21b604082015260600192915050565b6000611421605983611691565b7f4f726967696e496e766573746f7273436c61696d3a3a617070656e64496e766581527f73746f7273416d6f756e74734c6973743a20696e766573746f72732e6c656e6760208201527f746820213d20636c61696d416d6f756e74732e6c656e67746800000000000000604082015260600192915050565b60006114a6603a83611691565b7f4f726967696e496e766573746f7273436c61696d3a3a6f6e6c79417574686f7281527f697a65643a2073686f756c6420626520617574686f72697a6564000000000000602082015260400192915050565b61100a816116b6565b60208101610d9e8284611010565b60208101610d9e8284611001565b6040810161152b8285611001565b610e9560208301846114f8565b608081016115468287611001565b61155360208301866114f8565b61156060408301856114f8565b61156d60608301846114f8565b95945050505050565b6040810161152b8285611010565b60208101610d9e8284611019565b60208101610d9e8284611022565b60208082528101610d9b818461102b565b60208082528101610d9e81611063565b60208082528101610d9e816110c2565b60208082528101610d9e8161110a565b60208082528101610d9e81611143565b60208082528101610d9e816111b5565b60208082528101610d9e8161123a565b60208082528101610d9e816112b4565b60208082528101610d9e81611325565b60208082528101610d9e8161137a565b60208082528101610d9e816113a2565b60208082528101610d9e81611414565b60208082528101610d9e81611499565b60208101610d9e82846114f8565b6040810161152b82856114f8565b5190565b90815260200190565b6000610d9e826116aa565b151590565b6001600160a01b031690565b90565b6000610d9e825b6000610d9e8261169a565b60005b838110156116e65781810151838201526020016116ce565b838111156116f5576000848401525b50505050565b601f01601f191690565b61170e8161169a565b811461063957600080fd5b61170e816116a5565b61170e816116b656fea365627a7a72315820d29c4de2736c69b9ea2a1af021e3170f1a69459742134b3d0218e52a841578af6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x69F20AAA GT PUSH2 0xAD JUMPI DUP1 PUSH4 0x904C5B8F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x904C5B8F EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0xBA176A9A EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0xF706C9DC EQ PUSH2 0x254 JUMPI PUSH2 0x12B JUMP JUMPDEST DUP1 PUSH4 0x69F20AAA EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x7D630FC4 EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x221 JUMPI PUSH2 0x12B JUMP JUMPDEST DUP1 PUSH4 0x4CF088D9 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x4D2DC5F2 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x4E71D92D EQ PUSH2 0x1BB JUMPI DUP1 PUSH4 0x545616CE EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x5E28AC64 EQ PUSH2 0x1D6 JUMPI PUSH2 0x12B JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x1A39D8EF EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0x26DB62FF EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x17E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x138 PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x1671 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH2 0x15C CALLDATASIZE PUSH1 0x4 PUSH2 0xF11 JUMP JUMPDEST PUSH2 0x262 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x138 PUSH2 0x2EA JUMP JUMPDEST PUSH2 0x138 PUSH2 0x179 CALLDATASIZE PUSH1 0x4 PUSH2 0xF11 JUMP JUMPDEST PUSH2 0x2F0 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x18C CALLDATASIZE PUSH1 0x4 PUSH2 0xF11 JUMP JUMPDEST PUSH2 0x302 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x1584 JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x317 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x1592 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x326 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x477 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0xF11 JUMP JUMPDEST PUSH2 0x4E6 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x161 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0xF55 JUMP JUMPDEST PUSH2 0x643 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0xF11 JUMP JUMPDEST PUSH2 0x83A JUMP JUMPDEST PUSH2 0x191 PUSH2 0x8B1 JUMP JUMPDEST PUSH2 0x214 PUSH2 0x8BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x1501 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x8ED JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x901 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x910 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0xF11 JUMP JUMPDEST PUSH2 0x916 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x943 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x26A PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x28F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1631 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0x2DF SWAP1 DUP4 SWAP1 PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x32E PUSH2 0x8C9 JUMP JUMPDEST DUP1 PUSH2 0x348 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x364 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1661 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x387 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x3BA SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x40A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xFE3 JUMP JUMPDEST LT ISZERO PUSH2 0x428 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1601 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 SLOAD SWAP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x1FA52D395A75695574BB6155EE9601B031A7354CA0E7A079C9E0A92E546A77FD SWAP3 PUSH2 0x46D SWAP3 SWAP1 SWAP2 PUSH2 0x167F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND PUSH2 0x4C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1641 JUMP JUMPDEST PUSH1 0x3 SLOAD TIMESTAMP LT ISZERO PUSH2 0x4DC JUMPI PUSH2 0x4D7 PUSH2 0x949 JUMP JUMPDEST PUSH2 0x4E4 JUMP JUMPDEST PUSH2 0x4E4 PUSH2 0xC7E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4EE PUSH2 0x8C9 JUMP JUMPDEST DUP1 PUSH2 0x508 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x524 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1661 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 DUP4 SWAP1 DUP4 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x55E SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x58A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x5AE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP3 SWAP2 SWAP1 PUSH2 0x1576 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x61D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0x639 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x15B1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x375F00 DUP2 JUMP JUMPDEST PUSH2 0x64B PUSH2 0x8C9 JUMP JUMPDEST DUP1 PUSH2 0x665 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x681 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1661 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x6A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 DUP4 EQ PUSH2 0x6C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1651 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x7AE JUMPI PUSH1 0x9 PUSH1 0x0 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x6E1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x6F6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF11 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x792 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x720 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x9 PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x737 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x74C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF11 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH2 0x78B DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x775 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 PUSH2 0xD76 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP PUSH2 0x7A6 JUMP JUMPDEST PUSH2 0x7A3 DUP4 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0xD76 AND JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x6C9 JUMP JUMPDEST POP PUSH2 0x7D1 PUSH2 0x7C2 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0xDA4 AND JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xD76 AND JUMP JUMPDEST PUSH1 0x4 SSTORE PUSH1 0x1 SLOAD PUSH2 0x7E7 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD76 AND JUMP JUMPDEST PUSH1 0x1 SSTORE PUSH32 0x166F3AB55781D1F678F4DF14776E1927C137C85F5D564FE0294613BF72F49CAE PUSH2 0x81B DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0xDA4 AND JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x82A SWAP3 SWAP2 SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x842 PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x85E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1631 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0x2DF SWAP1 DUP4 SWAP1 PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8DE PUSH2 0xDE6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x91E PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x93A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1631 JUMP JUMPDEST PUSH2 0x639 DUP2 PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x95F SWAP1 TIMESTAMP PUSH4 0xFFFFFFFF PUSH2 0xDA4 AND JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD PUSH1 0x5 SLOAD SWAP2 MLOAD PUSH4 0xCC49EDE7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP5 SWAP6 POP DUP6 SWAP5 SWAP1 SWAP4 PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xCC49EDE7 SWAP2 PUSH2 0x9A9 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x150F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x9F9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF37 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xA22 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x15E1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x5 SLOAD SWAP1 MLOAD PUSH4 0x665A06F PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x665A06F SWAP2 PUSH2 0xA6E SWAP2 SWAP1 DUP7 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x1538 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA9C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC49EDE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP PUSH4 0xCC49EDE7 SWAP2 POP PUSH2 0xAD4 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x150F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xB24 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF37 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP3 PUSH4 0xA9059CBB SWAP3 PUSH2 0xB61 SWAP3 PUSH2 0x100 SWAP1 DIV AND SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1576 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xBB3 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0xBCF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1621 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3CD41FAD PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x79A83F5A SWAP1 PUSH2 0xC05 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1576 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5B97B27A688DDCF7531A6E5C0FE38F0E819CABB30E7329972F8BCA443E8A546D DUP4 PUSH1 0x40 MLOAD PUSH2 0xC70 SWAP2 SWAP1 PUSH2 0x1671 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD SWAP3 SWAP1 SSTORE PUSH1 0x7 SLOAD SWAP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0xCC4 SWAP2 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x151D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCF2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD16 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xFC5 JUMP JUMPDEST PUSH2 0xD32 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x1621 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x3144E62E87C82D8AF6EC288B3C120E568B1C9C642B26754F9DBF25506D0CD85B DUP3 PUSH1 0x40 MLOAD PUSH2 0xD6B SWAP2 SWAP1 PUSH2 0x1671 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x15D1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0xE6B JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xE10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x15C1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xE8F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x15A0 JUMP JUMPDEST POP POP DUP2 DUP4 SUB JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xD9E DUP2 PUSH2 0x1705 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xD9E DUP2 PUSH2 0x1705 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xEC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xEDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xEF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0xD9E DUP2 PUSH2 0x1719 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xD9E DUP2 PUSH2 0x1722 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF2F DUP5 DUP5 PUSH2 0xE9C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF2F DUP5 DUP5 PUSH2 0xEA7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF8E DUP8 DUP3 DUP9 ADD PUSH2 0xEB2 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFB9 DUP8 DUP3 DUP9 ADD PUSH2 0xEB2 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF2F DUP5 DUP5 PUSH2 0xEFB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF2F DUP5 DUP5 PUSH2 0xF06 JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x16B9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x169A JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x16A5 JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x16C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1036 DUP3 PUSH2 0x168D JUMP JUMPDEST PUSH2 0x1040 DUP2 DUP6 PUSH2 0x1691 JUMP JUMPDEST SWAP4 POP PUSH2 0x1050 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x16CB JUMP JUMPDEST PUSH2 0x1059 DUP2 PUSH2 0x16FB JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1070 PUSH1 0x40 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A617574686F72697A6564 DUP2 MSTORE PUSH32 0x5472616E7366657242616C616E63653A207472616E73666572206661696C6564 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10CF PUSH1 0x26 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1117 PUSH1 0x1B DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1150 PUSH1 0x4A DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A77697468647261773A20 DUP2 MSTORE PUSH32 0x74686520636C61696D65722068617320616E206163746976652076657374696E PUSH1 0x20 DUP3 ADD MSTORE PUSH10 0x19C818DBDB9D1C9858DD PUSH1 0xB2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11C2 PUSH1 0x59 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A6E6F74496E697469616C DUP2 MSTORE PUSH32 0x697A65643A2074686520696E766573746F7273206C6973742073686F756C6420 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6E6F742062652073657420617320696E697469616C697A656400000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1247 PUSH1 0x52 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A736574496E766573746F DUP2 MSTORE PUSH32 0x7273416D6F756E74734C6973743A2074686520636F6E7472616374206973206E PUSH1 0x20 DUP3 ADD MSTORE PUSH18 0x1BDD08195B9BDD59DA08199A5B985B98D959 PUSH1 0x72 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12C1 PUSH1 0x49 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A6F6E6C7957686974656C DUP2 MSTORE PUSH32 0x69737465643A206E6F742077686974656C6973746564206F7220616C72656164 PUSH1 0x20 DUP3 ADD MSTORE PUSH9 0x1E4818DB185A5B5959 PUSH1 0xBA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1332 PUSH1 0x33 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A77697468647261773A20 DUP2 MSTORE PUSH19 0x14D3D5881D1C985B9CD9995C8819985A5B1959 PUSH1 0x6A SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1387 PUSH1 0xC DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13AF PUSH1 0x4A DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A696E697469616C697A65 DUP2 MSTORE PUSH32 0x643A2074686520696E766573746F7273206C69737420686173206E6F74206265 PUSH1 0x20 DUP3 ADD MSTORE PUSH10 0x195B881CD95D081E595D PUSH1 0xB2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1421 PUSH1 0x59 DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A617070656E64496E7665 DUP2 MSTORE PUSH32 0x73746F7273416D6F756E74734C6973743A20696E766573746F72732E6C656E67 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x746820213D20636C61696D416D6F756E74732E6C656E67746800000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14A6 PUSH1 0x3A DUP4 PUSH2 0x1691 JUMP JUMPDEST PUSH32 0x4F726967696E496E766573746F7273436C61696D3A3A6F6E6C79417574686F72 DUP2 MSTORE PUSH32 0x697A65643A2073686F756C6420626520617574686F72697A6564000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x100A DUP2 PUSH2 0x16B6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD9E DUP3 DUP5 PUSH2 0x1010 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD9E DUP3 DUP5 PUSH2 0x1001 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x152B DUP3 DUP6 PUSH2 0x1001 JUMP JUMPDEST PUSH2 0xE95 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x14F8 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x1546 DUP3 DUP8 PUSH2 0x1001 JUMP JUMPDEST PUSH2 0x1553 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x14F8 JUMP JUMPDEST PUSH2 0x1560 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x14F8 JUMP JUMPDEST PUSH2 0x156D PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x14F8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x152B DUP3 DUP6 PUSH2 0x1010 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD9E DUP3 DUP5 PUSH2 0x1019 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD9E DUP3 DUP5 PUSH2 0x1022 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9B DUP2 DUP5 PUSH2 0x102B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x1063 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x10C2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x110A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x1143 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x11B5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x123A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x12B4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x1325 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x1414 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD9E DUP2 PUSH2 0x1499 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD9E DUP3 DUP5 PUSH2 0x14F8 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x152B DUP3 DUP6 PUSH2 0x14F8 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9E DUP3 PUSH2 0x16AA JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9E DUP3 JUMPDEST PUSH1 0x0 PUSH2 0xD9E DUP3 PUSH2 0x169A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16E6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16CE JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x16F5 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x170E DUP2 PUSH2 0x169A JUMP JUMPDEST DUP2 EQ PUSH2 0x639 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x170E DUP2 PUSH2 0x16A5 JUMP JUMPDEST PUSH2 0x170E DUP2 PUSH2 0x16B6 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xD2 SWAP13 0x4D 0xE2 PUSH20 0x6C69B9EA2A1AF021E3170F1A69459742134B3D02 XOR 0xE5 0x2A DUP5 ISZERO PUSH25 0xAF6C6578706572696D656E74616CF564736F6C634300051100 BLOCKHASH ",
              "sourceMap": "277:7069:70:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;277:7069:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;629:24;;;:::i;:::-;;;;;;;;;;;;;;;;3121:113;;;;;;;;;:::i;:::-;;484:26;;;:::i;1013:55::-;;;;;;;;;:::i;900:38::-;;;;;;;;;:::i;:::-;;;;;;;;795:22;;;:::i;:::-;;;;;;;;3892:348;;;:::i;5536:135::-;;;:::i;3450:234::-;;;;;;;;;:::i;574:51::-;;;:::i;4590:788::-;;;;;;;;;:::i;2892:107::-;;;;;;;;;:::i;715:36::-;;;:::i;851:68:142:-;;;:::i;:::-;;;;;;;;1134:83;;;:::i;754:38:70:-;;;:::i;820:22::-;;;:::i;656:26::-;;;:::i;1351:98:142:-;;;;;;;;;:::i;685:27:70:-;;;:::i;629:24::-;;;;:::o;3121:113::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3179:14:70;;3196:5;3179:14;;;:6;:14;;;;;;;:22;;-1:-1:-1;;3179:22:70;;;3210:20;;;;;3186:6;;3210:20;;;;;;;;;;3121:113;:::o;484:26::-;;;;:::o;1013:55::-;;;;;;;;;;;;;:::o;900:38::-;;;;;;;;;;;;;;;:::o;795:22::-;;;-1:-1:-1;;;;;795:22:70;;:::o;3892:348::-;1556:9;:7;:9::i;:::-;:31;;;-1:-1:-1;1576:10:70;1569:18;;;;:6;:18;;;;;;;;1556:31;1548:102;;;;-1:-1:-1;;;1548:102:70;;;;;;;;;1987:24;;;;1986:25;1978:127;;;;-1:-1:-1;;;1978:127:70;;;;;;;;;4028:11;;3991:8;;:33;;-1:-1:-1;;;3991:33:70;;-1:-1:-1;;;;;3991:8:70;;;;:18;;:33;;4018:4;;3991:33;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3991:33:70;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3991:33:70;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3991:33:70;;;;;;;;;:48;;3979:153;;;;-1:-1:-1;;;3979:153:70;;;;;;;;;4137:24;:31;;-1:-1:-1;;4137:31:70;4164:4;4137:31;;;;;;4210:12;;4224:11;;4178:58;;;;;;4210:12;;4178:58;;;;;;;;;;3892:348::o;5536:135::-;1781:10;1760:32;;;;:20;:32;;;;;;1752:123;;;;-1:-1:-1;;;1752:123:70;;;;;;;;;2215:24;;;;2207:111;;;;-1:-1:-1;;;2207:111:70;;;;;;;;;5604:11;;5598:3;:17;5594:74;;;5622:15;:13;:15::i;:::-;5594:74;;;5653:10;:8;:10::i;:::-;5536:135::o;3450:234::-;1556:9;:7;:9::i;:::-;:31;;;-1:-1:-1;1576:10:70;1569:18;;;;:6;:18;;;;;;;;1556:31;1548:102;;;;-1:-1:-1;;;1548:102:70;;;;;;;;;3542:8;;3571:33;;-1:-1:-1;;;3571:33:70;;-1:-1:-1;;;;;3542:8:70;;;;:17;;3560:9;;3542:8;;3571:18;;:33;;3598:4;;3571:33;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3571:33:70;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3571:33:70;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3571:33:70;;;;;;;;;3542:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3542:63:70;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3542:63:70;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3542:63:70;;;;;;;;;3530:150;;;;-1:-1:-1;;;3530:150:70;;;;;;;;;3450:234;:::o;574:51::-;618:7;574:51;:::o;4590:788::-;1556:9;:7;:9::i;:::-;:31;;;-1:-1:-1;1576:10:70;1569:18;;;;:6;:18;;;;;;;;1556:31;1548:102;;;;-1:-1:-1;;;1548:102:70;;;;;;;;;1987:24;;;;1986:25;1978:127;;;;-1:-1:-1;;;1978:127:70;;;;;;;;;4739:14;;4790:39;;;4778:151;;;;-1:-1:-1;;;4778:151:70;;;;;;;;;4939:9;4934:253;4954:20;;;4934:253;;;4990:20;:34;5011:9;;5021:1;5011:12;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4990:34:70;;;;;;;;;;;;-1:-1:-1;4990:34:70;;4986:197;;5074:12;;5087:1;5074:15;;;;;;;;;;;;;5037:20;:34;5058:9;;5068:1;5058:12;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5037:34:70;;;;;;;;;;;;-1:-1:-1;5037:34:70;:52;5107:30;5121:12;;5134:1;5121:15;;;;;;;;;;;;;5107:9;:13;;:30;;;;:::i;:::-;5095:42;;4986:197;;;5164:13;:6;5175:1;5164:13;:10;:13;:::i;:::-;5155:22;;4986:197;4976:3;;4934:253;;;-1:-1:-1;5206:46:70;5223:28;:9;5244:6;5223:28;:20;:28;:::i;:::-;5206:12;;;:46;:16;:46;:::i;:::-;5191:12;:61;5270:11;;:26;;5286:9;5270:26;:15;:26;:::i;:::-;5256:11;:40;5305:69;5334:28;:9;5355:6;5334:28;:20;:28;:::i;:::-;5364:9;5305:69;;;;;;;;;;;;;;;;2109:1;;4590:788;;;;:::o;2892:107::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;2947:14:70;;;;;;:6;:14;;;;;;;:21;;-1:-1:-1;;2947:21:70;2964:4;2947:21;;;2977:18;;;;;2954:6;;2977:18;;715:36;;;;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;754:38:70:-;;;;;;-1:-1:-1;;;;;754:38:70;;:::o;820:22::-;;;-1:-1:-1;;;;;820:22:70;;:::o;656:26::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;685:27:70:-;;;;:::o;5867:793::-;5921:11;;5905:13;;5921:20;;5937:3;5921:20;:15;:20;:::i;:::-;6011:10;5945:16;5990:32;;;:20;:32;;;;;;;6086:15;;:38;;-1:-1:-1;;;6086:38:70;;5905:36;;-1:-1:-1;5905:36:70;;5990:32;;6086:15;;;;-1:-1:-1;;;;;6086:15:70;;:26;;:38;;6011:10;6086:38;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6086:38:70;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6086:38:70;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6086:38:70;;;;;;;;;6061:63;-1:-1:-1;;;;;;6136:36:70;;;6128:123;;;;-1:-1:-1;;;6128:123:70;;;;;;;;;6284:10;6263:32;;;;:20;:32;;;;;;6256:39;;;;6300:15;;:66;;-1:-1:-1;;;6300:66:70;;:15;;;;-1:-1:-1;;;;;6300:15:70;;:29;;:66;;6284:10;6342:6;;6350:5;;6357:8;;6300:66;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6300:66:70;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;6395:15:70;;:38;;-1:-1:-1;;;6395:38:70;;:15;;;;-1:-1:-1;;;;;6395:15:70;;-1:-1:-1;6395:26:70;;-1:-1:-1;6395:38:70;;6422:10;;6395:38;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6395:38:70;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6395:38:70;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6395:38:70;;;;;;;;;6445:8;;6471:15;;6445:51;;-1:-1:-1;;;6445:51:70;;6370:63;;-1:-1:-1;;;;;;6445:8:70;;;;:17;;:51;;:8;6471:15;;;;6489:6;;6445:51;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6445:51:70;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6445:51:70;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6445:51:70;;;;;;;;;6437:115;;;;-1:-1:-1;;;6437:115:70;;;;;;;;;6556:15;;:59;;-1:-1:-1;;;6556:59:70;;:15;;;;-1:-1:-1;;;;;6556:15:70;;:27;;:59;;6584:22;;6608:6;;6556:59;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6556:59:70;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6556:59:70;;;;6637:10;-1:-1:-1;;;;;6625:31:70;;6649:6;6625:31;;;;;;;;;;;;;;;5867:793;;;;:::o;6835:509::-;6906:10;6868:14;6885:32;;;:20;:32;;;;;;;;6922:39;;;7201:8;;:37;;-1:-1:-1;;;7201:37:70;;6885:32;;-1:-1:-1;;;;;7201:8:70;;;;:17;;:37;;6885:32;;7201:37;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7201:37:70;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7201:37:70;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7201:37:70;;;;;;;;;7193:101;;;;-1:-1:-1;;;7193:101:70;;;;;;;;;7321:10;-1:-1:-1;;;;;7304:36:70;;7333:6;7304:36;;;;;;;;;;;;;;;6835:509;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;;962:1;-1:-1:-1;812:155:145;;;;;:::o;1201:125::-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;1767:5:145;;;1614:175;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;301:352;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;-1:-1;469:20;;509:18;498:30;;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;586:2;391:262;;;;;;1039:128;1114:13;;1132:30;1114:13;1132:30;;1174:134;1252:13;;1270:33;1252:13;1270:33;;1315:241;;1419:2;1407:9;1398:7;1394:23;1390:32;1387:2;;;1435:1;1432;1425:12;1387:2;1470:1;1487:53;1532:7;1512:9;1487:53;;;1477:63;1381:175;-1:-1;;;;1381:175;1563:263;;1678:2;1666:9;1657:7;1653:23;1649:32;1646:2;;;1694:1;1691;1684:12;1646:2;1729:1;1746:64;1802:7;1782:9;1746:64;;1833:678;;;;;2024:2;2012:9;2003:7;1999:23;1995:32;1992:2;;;2040:1;2037;2030:12;1992:2;2075:31;;2126:18;2115:30;;2112:2;;;2158:1;2155;2148:12;2112:2;2186:80;2258:7;2249:6;2238:9;2234:22;2186:80;;;2176:90;;;;2054:218;2331:2;2320:9;2316:18;2303:32;2355:18;2347:6;2344:30;2341:2;;;2387:1;2384;2377:12;2341:2;2415:80;2487:7;2478:6;2467:9;2463:22;2415:80;;;1986:525;;;;-1:-1;2405:90;-1:-1;;;;1986:525;2518:257;;2630:2;2618:9;2609:7;2605:23;2601:32;2598:2;;;2646:1;2643;2636:12;2598:2;2681:1;2698:61;2751:7;2731:9;2698:61;;2782:263;;2897:2;2885:9;2876:7;2872:23;2868:32;2865:2;;;2913:1;2910;2903:12;2865:2;2948:1;2965:64;3021:7;3001:9;2965:64;;3052:142;3143:45;3182:5;3143:45;;;3138:3;3131:58;3125:69;;;3201:113;3284:24;3302:5;3284:24;;3321:104;3398:21;3413:5;3398:21;;3432:158;3531:53;3578:5;3531:53;;3947:347;;4059:39;4092:5;4059:39;;;4110:71;4174:6;4169:3;4110:71;;;4103:78;;4186:52;4231:6;4226:3;4219:4;4212:5;4208:16;4186:52;;;4259:29;4281:6;4259:29;;;4250:39;;;;4039:255;-1:-1;;;4039:255;4302:401;;4462:67;4526:2;4521:3;4462:67;;;4562:34;4542:55;;4631:34;4626:2;4617:12;;4610:56;4694:2;4685:12;;4448:255;-1:-1;;4448:255;4712:375;;4872:67;4936:2;4931:3;4872:67;;;4972:34;4952:55;;-1:-1;;;5036:2;5027:12;;5020:30;5078:2;5069:12;;4858:229;-1:-1;;4858:229;5096:327;;5256:67;5320:2;5315:3;5256:67;;;5356:29;5336:50;;5414:2;5405:12;;5242:181;-1:-1;;5242:181;5432:448;;5592:67;5656:2;5651:3;5592:67;;;5692:34;5672:55;;5761:34;5756:2;5747:12;;5740:56;-1:-1;;;5825:2;5816:12;;5809:34;5871:2;5862:12;;5578:302;-1:-1;;5578:302;5889:463;;6049:67;6113:2;6108:3;6049:67;;;6149:34;6129:55;;6218:34;6213:2;6204:12;;6197:56;6287:27;6282:2;6273:12;;6266:49;6343:2;6334:12;;6035:317;-1:-1;;6035:317;6361:456;;6521:67;6585:2;6580:3;6521:67;;;6621:34;6601:55;;6690:34;6685:2;6676:12;;6669:56;-1:-1;;;6754:2;6745:12;;6738:42;6808:2;6799:12;;6507:310;-1:-1;;6507:310;6826:447;;6986:67;7050:2;7045:3;6986:67;;;7086:34;7066:55;;7155:34;7150:2;7141:12;;7134:56;-1:-1;;;7219:2;7210:12;;7203:33;7264:2;7255:12;;6972:301;-1:-1;;6972:301;7282:388;;7442:67;7506:2;7501:3;7442:67;;;7542:34;7522:55;;-1:-1;;;7606:2;7597:12;;7590:43;7661:2;7652:12;;7428:242;-1:-1;;7428:242;7679:312;;7839:67;7903:2;7898:3;7839:67;;;-1:-1;;;7919:35;;7982:2;7973:12;;7825:166;-1:-1;;7825:166;8000:448;;8160:67;8224:2;8219:3;8160:67;;;8260:34;8240:55;;8329:34;8324:2;8315:12;;8308:56;-1:-1;;;8393:2;8384:12;;8377:34;8439:2;8430:12;;8146:302;-1:-1;;8146:302;8457:463;;8617:67;8681:2;8676:3;8617:67;;;8717:34;8697:55;;8786:34;8781:2;8772:12;;8765:56;8855:27;8850:2;8841:12;;8834:49;8911:2;8902:12;;8603:317;-1:-1;;8603:317;8929:395;;9089:67;9153:2;9148:3;9089:67;;;9189:34;9169:55;;9258:28;9253:2;9244:12;;9237:50;9315:2;9306:12;;9075:249;-1:-1;;9075:249;9332:113;9415:24;9433:5;9415:24;;9452:213;9570:2;9555:18;;9584:71;9559:9;9628:6;9584:71;;9672:229;9798:2;9783:18;;9812:79;9787:9;9864:6;9812:79;;9908:340;10062:2;10047:18;;10076:79;10051:9;10128:6;10076:79;;;10166:72;10234:2;10223:9;10219:18;10210:6;10166:72;;10255:563;10465:3;10450:19;;10480:79;10454:9;10532:6;10480:79;;;10570:72;10638:2;10627:9;10623:18;10614:6;10570:72;;;10653;10721:2;10710:9;10706:18;10697:6;10653:72;;;10736;10804:2;10793:9;10789:18;10780:6;10736:72;;;10436:382;;;;;;;;10825:324;10971:2;10956:18;;10985:71;10960:9;11029:6;10985:71;;11156:201;11268:2;11253:18;;11282:65;11257:9;11320:6;11282:65;;11364:245;11498:2;11483:18;;11512:87;11487:9;11572:6;11512:87;;12140:301;12278:2;12292:47;;;12263:18;;12353:78;12263:18;12417:6;12353:78;;12448:407;12639:2;12653:47;;;12624:18;;12714:131;12624:18;12714:131;;12862:407;13053:2;13067:47;;;13038:18;;13128:131;13038:18;13128:131;;13276:407;13467:2;13481:47;;;13452:18;;13542:131;13452:18;13542:131;;13690:407;13881:2;13895:47;;;13866:18;;13956:131;13866:18;13956:131;;14104:407;14295:2;14309:47;;;14280:18;;14370:131;14280:18;14370:131;;14518:407;14709:2;14723:47;;;14694:18;;14784:131;14694:18;14784:131;;14932:407;15123:2;15137:47;;;15108:18;;15198:131;15108:18;15198:131;;15346:407;15537:2;15551:47;;;15522:18;;15612:131;15522:18;15612:131;;15760:407;15951:2;15965:47;;;15936:18;;16026:131;15936:18;16026:131;;16174:407;16365:2;16379:47;;;16350:18;;16440:131;16350:18;16440:131;;16588:407;16779:2;16793:47;;;16764:18;;16854:131;16764:18;16854:131;;17002:407;17193:2;17207:47;;;17178:18;;17268:131;17178:18;17268:131;;17416:213;17534:2;17519:18;;17548:71;17523:9;17592:6;17548:71;;17636:324;17782:2;17767:18;;17796:71;17771:9;17840:6;17796:71;;17967:122;18055:12;;18026:63;18097:163;18200:19;;;18249:4;18240:14;;18193:67;18268:91;;18330:24;18348:5;18330:24;;18366:85;18432:13;18425:21;;18408:43;18458:121;-1:-1;;;;;18520:54;;18503:76;18586:72;18648:5;18631:27;18665:129;;18752:37;18783:5;18801:153;;18896:53;18943:5;18896:53;;19948:268;20013:1;20020:101;20034:6;20031:1;20028:13;20020:101;;;20101:11;;;20095:18;20082:11;;;20075:39;20056:2;20049:10;20020:101;;;20136:6;20133:1;20130:13;20127:2;;;20201:1;20192:6;20187:3;20183:16;20176:27;20127:2;19997:219;;;;;20224:97;20312:2;20292:14;-1:-1;;20288:28;;20272:49;20329:117;20398:24;20416:5;20398:24;;;20391:5;20388:35;20378:2;;20437:1;20434;20427:12;20453:111;20519:21;20534:5;20519:21;;20571:117;20640:24;20658:5;20640:24;"
            },
            "methodIdentifiers": {
              "SOVToken()": "a58848c5",
              "SOV_VESTING_CLIFF()": "5e28ac64",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "appendInvestorsAmountsList(address[],uint256[])": "69f20aaa",
              "authorizedBalanceWithdraw(address)": "545616ce",
              "claim()": "4e71d92d",
              "investorsAmountsList(address)": "26db62ff",
              "investorsListInitialized()": "7d630fc4",
              "investorsQty()": "f706c9dc",
              "isOwner()": "8f32d59b",
              "kickoffTS()": "00073f99",
              "owner()": "8da5cb5b",
              "removeAdmin(address)": "1785f53c",
              "setInvestorsAmountsListInitialized()": "4d2dc5f2",
              "staking()": "4cf088d9",
              "totalAmount()": "1a39d8ef",
              "transferOwnership(address)": "f2fde38b",
              "vestingRegistry()": "904c5b8f",
              "vestingTerm()": "ba176a9a"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "appendInvestorsAmountsList(address[],uint256[])": {
                "notice": "The contract should be approved or transferred necessary amount of SOV prior to calling the function."
              },
              "authorizedBalanceWithdraw(address)": {
                "notice": "In case we have unclaimed tokens or in emergency case this function transfers all SOV tokens to a given address."
              },
              "claim()": {
                "notice": "Claim tokens from this contract. If vestingTerm is not yet achieved a vesting is created. Otherwise tokens are tranferred."
              },
              "constructor": "Contract deployment requires one parameter:",
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "setInvestorsAmountsListInitialized()": {
                "notice": "Should be called after the investors list setup completed. This function checks whether the SOV token balance of the contract is enough and sets status list to initialized."
              }
            },
            "notice": "// TODO: fund this contract with a total amount of SOV needed to distribute."
          }
        }
      },
      "contracts/governance/Vesting/OrigingVestingCreator.sol": {
        "OrigingVestingCreator": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingRegistry",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "createVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingRegistry",
              "outputs": [
                {
                  "internalType": "contract VestingRegistry",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "createVesting(address,uint256,uint256,uint256)": {
                "params": {
                  "_amount": "The amount of tokens to be vested.",
                  "_cliff": "The time interval to the first withdraw in seconds.",
                  "_duration": "The total duration in seconds.",
                  "_tokenOwner": "The owner of the tokens."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Temp contract for checking address, creating and staking tokens."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060405161080138038061080183398101604081905261002f916100c6565b60006100426001600160e01b036100b116565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b0392909216919091179055610114565b3390565b80516100c0816100fd565b92915050565b6000602082840312156100d857600080fd5b60006100e484846100b5565b949350505050565b60006001600160a01b0382166100c0565b610106816100ec565b811461011157600080fd5b50565b6106de806101236000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630665a06f1461005c5780638da5cb5b146100715780638f32d59b1461008f578063904c5b8f146100a4578063f2fde38b146100b9575b600080fd5b61006f61006a36600461042e565b6100cc565b005b6100796102cc565b6040516100869190610581565b60405180910390f35b6100976102db565b60405161008691906105ef565b6100ac6102ff565b60405161008691906105fd565b61006f6100c73660046103ea565b61030e565b6100d46102db565b6100f95760405162461bcd60e51b81526004016100f09061062b565b60405180910390fd5b6001600160a01b03841661011f5760405162461bcd60e51b81526004016100f09061060b565b6001600160a01b03841660009081526002602052604090205460ff16156101585760405162461bcd60e51b81526004016100f09061063b565b6001600160a01b0380851660009081526002602052604090819020805460ff19166001908117909155549051630665a06f60e01b8152911690630665a06f906101ab9087908790879087906004016105b1565b600060405180830381600087803b1580156101c557600080fd5b505af11580156101d9573d6000803e3d6000fd5b505060015460405163cc49ede760e01b8152600093506001600160a01b03909116915063cc49ede790610210908890600401610581565b60206040518083038186803b15801561022857600080fd5b505afa15801561023c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102609190810190610410565b600154604051633cd41fad60e11b81529192506001600160a01b0316906379a83f5a90610293908490889060040161058f565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b031690565b600080546001600160a01b03166102f061033e565b6001600160a01b031614905090565b6001546001600160a01b031681565b6103166102db565b6103325760405162461bcd60e51b81526004016100f09061062b565b61033b81610342565b50565b3390565b6001600160a01b0381166103685760405162461bcd60e51b81526004016100f09061061b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b80356103ce8161067e565b92915050565b80516103ce8161067e565b80356103ce81610692565b6000602082840312156103fc57600080fd5b600061040884846103c3565b949350505050565b60006020828403121561042257600080fd5b600061040884846103d4565b6000806000806080858703121561044457600080fd5b600061045087876103c3565b9450506020610461878288016103df565b9350506040610472878288016103df565b9250506060610483878288016103df565b91505092959194509250565b61049881610654565b82525050565b6104988161065f565b61049881610673565b60006104bd600f8361064b565b6e496e76616c6964206164647265737360881b815260200192915050565b60006104e860268361064b565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000610530600c8361064b565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061055860118361064b565b70105b1c9958591e481c1c9bd8d95cdcd959607a1b815260200192915050565b61049881610670565b602081016103ce828461048f565b6040810161059d828561048f565b6105aa6020830184610578565b9392505050565b608081016105bf828761048f565b6105cc6020830186610578565b6105d96040830185610578565b6105e66060830184610578565b95945050505050565b602081016103ce828461049e565b602081016103ce82846104a7565b602080825281016103ce816104b0565b602080825281016103ce816104db565b602080825281016103ce81610523565b602080825281016103ce8161054b565b90815260200190565b60006103ce82610664565b151590565b6001600160a01b031690565b90565b60006103ce82610654565b61068781610654565b811461033b57600080fd5b6106878161067056fea365627a7a723158206242369fba9174f6c6ede8b736699ad19d794898eb6318c119007a1215ee34006c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x801 CODESIZE SUB DUP1 PUSH2 0x801 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xC6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0xB1 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x114 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xC0 DUP2 PUSH2 0xFD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE4 DUP5 DUP5 PUSH2 0xB5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xC0 JUMP JUMPDEST PUSH2 0x106 DUP2 PUSH2 0xEC JUMP JUMPDEST DUP2 EQ PUSH2 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x6DE DUP1 PUSH2 0x123 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x665A06F EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0x904C5B8F EQ PUSH2 0xA4 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x42E JUMP JUMPDEST PUSH2 0xCC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x79 PUSH2 0x2CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x86 SWAP2 SWAP1 PUSH2 0x581 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x97 PUSH2 0x2DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x86 SWAP2 SWAP1 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0xAC PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x86 SWAP2 SWAP1 PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x6F PUSH2 0xC7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x30E JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x2DB JUMP JUMPDEST PUSH2 0xF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x62B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x11F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x60B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x158 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x63B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD SWAP1 MLOAD PUSH4 0x665A06F PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 AND SWAP1 PUSH4 0x665A06F SWAP1 PUSH2 0x1AB SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC49EDE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP PUSH4 0xCC49EDE7 SWAP1 PUSH2 0x210 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x581 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x260 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x410 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3CD41FAD PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x79A83F5A SWAP1 PUSH2 0x293 SWAP1 DUP5 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x58F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2F0 PUSH2 0x33E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x316 PUSH2 0x2DB JUMP JUMPDEST PUSH2 0x332 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x62B JUMP JUMPDEST PUSH2 0x33B DUP2 PUSH2 0x342 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x368 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x61B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3CE DUP2 PUSH2 0x67E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3CE DUP2 PUSH2 0x67E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3CE DUP2 PUSH2 0x692 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x408 DUP5 DUP5 PUSH2 0x3C3 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x408 DUP5 DUP5 PUSH2 0x3D4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x450 DUP8 DUP8 PUSH2 0x3C3 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x461 DUP8 DUP3 DUP9 ADD PUSH2 0x3DF JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x472 DUP8 DUP3 DUP9 ADD PUSH2 0x3DF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x483 DUP8 DUP3 DUP9 ADD PUSH2 0x3DF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0x498 DUP2 PUSH2 0x654 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x498 DUP2 PUSH2 0x65F JUMP JUMPDEST PUSH2 0x498 DUP2 PUSH2 0x673 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BD PUSH1 0xF DUP4 PUSH2 0x64B JUMP JUMPDEST PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E8 PUSH1 0x26 DUP4 PUSH2 0x64B JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x530 PUSH1 0xC DUP4 PUSH2 0x64B JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x558 PUSH1 0x11 DUP4 PUSH2 0x64B JUMP JUMPDEST PUSH17 0x105B1C9958591E481C1C9BD8D95CDCD959 PUSH1 0x7A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x498 DUP2 PUSH2 0x670 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3CE DUP3 DUP5 PUSH2 0x48F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x59D DUP3 DUP6 PUSH2 0x48F JUMP JUMPDEST PUSH2 0x5AA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x578 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x5BF DUP3 DUP8 PUSH2 0x48F JUMP JUMPDEST PUSH2 0x5CC PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x578 JUMP JUMPDEST PUSH2 0x5D9 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x578 JUMP JUMPDEST PUSH2 0x5E6 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x578 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3CE DUP3 DUP5 PUSH2 0x49E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3CE DUP3 DUP5 PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3CE DUP2 PUSH2 0x4B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3CE DUP2 PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3CE DUP2 PUSH2 0x523 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3CE DUP2 PUSH2 0x54B JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CE DUP3 PUSH2 0x664 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CE DUP3 PUSH2 0x654 JUMP JUMPDEST PUSH2 0x687 DUP2 PUSH2 0x654 JUMP JUMPDEST DUP2 EQ PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x687 DUP2 PUSH2 0x670 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH3 0x42369F 0xBA SWAP2 PUSH21 0xF6C6EDE8B736699AD19D794898EB6318C119007A12 ISZERO 0xEE CALLVALUE STOP PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "379:1019:71:-;;;508:104;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:104:71;;;;;;;;;;;;;;;;;;;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;-1:-1:-1;557:15:71;:51;;-1:-1:-1;;;;;;557:51:71;-1:-1:-1;;;;;557:51:71;;;;;;;;;;379:1019;;780:87:137;853:10;780:87;:::o;5:134:-1:-;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:263;;261:2;249:9;240:7;236:23;232:32;229:2;;;277:1;274;267:12;229:2;312:1;329:64;385:7;365:9;329:64;;;319:74;223:186;-1:-1;;;;223:186;416:91;;-1:-1;;;;;576:54;;478:24;559:76;642:117;711:24;729:5;711:24;;;704:5;701:35;691:2;;750:1;747;740:12;691:2;685:74;;;379:1019:71;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100575760003560e01c80630665a06f1461005c5780638da5cb5b146100715780638f32d59b1461008f578063904c5b8f146100a4578063f2fde38b146100b9575b600080fd5b61006f61006a36600461042e565b6100cc565b005b6100796102cc565b6040516100869190610581565b60405180910390f35b6100976102db565b60405161008691906105ef565b6100ac6102ff565b60405161008691906105fd565b61006f6100c73660046103ea565b61030e565b6100d46102db565b6100f95760405162461bcd60e51b81526004016100f09061062b565b60405180910390fd5b6001600160a01b03841661011f5760405162461bcd60e51b81526004016100f09061060b565b6001600160a01b03841660009081526002602052604090205460ff16156101585760405162461bcd60e51b81526004016100f09061063b565b6001600160a01b0380851660009081526002602052604090819020805460ff19166001908117909155549051630665a06f60e01b8152911690630665a06f906101ab9087908790879087906004016105b1565b600060405180830381600087803b1580156101c557600080fd5b505af11580156101d9573d6000803e3d6000fd5b505060015460405163cc49ede760e01b8152600093506001600160a01b03909116915063cc49ede790610210908890600401610581565b60206040518083038186803b15801561022857600080fd5b505afa15801561023c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102609190810190610410565b600154604051633cd41fad60e11b81529192506001600160a01b0316906379a83f5a90610293908490889060040161058f565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b031690565b600080546001600160a01b03166102f061033e565b6001600160a01b031614905090565b6001546001600160a01b031681565b6103166102db565b6103325760405162461bcd60e51b81526004016100f09061062b565b61033b81610342565b50565b3390565b6001600160a01b0381166103685760405162461bcd60e51b81526004016100f09061061b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b80356103ce8161067e565b92915050565b80516103ce8161067e565b80356103ce81610692565b6000602082840312156103fc57600080fd5b600061040884846103c3565b949350505050565b60006020828403121561042257600080fd5b600061040884846103d4565b6000806000806080858703121561044457600080fd5b600061045087876103c3565b9450506020610461878288016103df565b9350506040610472878288016103df565b9250506060610483878288016103df565b91505092959194509250565b61049881610654565b82525050565b6104988161065f565b61049881610673565b60006104bd600f8361064b565b6e496e76616c6964206164647265737360881b815260200192915050565b60006104e860268361064b565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000610530600c8361064b565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061055860118361064b565b70105b1c9958591e481c1c9bd8d95cdcd959607a1b815260200192915050565b61049881610670565b602081016103ce828461048f565b6040810161059d828561048f565b6105aa6020830184610578565b9392505050565b608081016105bf828761048f565b6105cc6020830186610578565b6105d96040830185610578565b6105e66060830184610578565b95945050505050565b602081016103ce828461049e565b602081016103ce82846104a7565b602080825281016103ce816104b0565b602080825281016103ce816104db565b602080825281016103ce81610523565b602080825281016103ce8161054b565b90815260200190565b60006103ce82610664565b151590565b6001600160a01b031690565b90565b60006103ce82610654565b61068781610654565b811461033b57600080fd5b6106878161067056fea365627a7a723158206242369fba9174f6c6ede8b736699ad19d794898eb6318c119007a1215ee34006c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x665A06F EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0x904C5B8F EQ PUSH2 0xA4 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x42E JUMP JUMPDEST PUSH2 0xCC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x79 PUSH2 0x2CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x86 SWAP2 SWAP1 PUSH2 0x581 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x97 PUSH2 0x2DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x86 SWAP2 SWAP1 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0xAC PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x86 SWAP2 SWAP1 PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x6F PUSH2 0xC7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x30E JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x2DB JUMP JUMPDEST PUSH2 0xF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x62B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x11F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x60B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x158 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x63B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD SWAP1 MLOAD PUSH4 0x665A06F PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 AND SWAP1 PUSH4 0x665A06F SWAP1 PUSH2 0x1AB SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC49EDE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP PUSH4 0xCC49EDE7 SWAP1 PUSH2 0x210 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x581 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x260 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x410 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3CD41FAD PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x79A83F5A SWAP1 PUSH2 0x293 SWAP1 DUP5 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x58F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2F0 PUSH2 0x33E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x316 PUSH2 0x2DB JUMP JUMPDEST PUSH2 0x332 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x62B JUMP JUMPDEST PUSH2 0x33B DUP2 PUSH2 0x342 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x368 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x61B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3CE DUP2 PUSH2 0x67E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3CE DUP2 PUSH2 0x67E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3CE DUP2 PUSH2 0x692 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x408 DUP5 DUP5 PUSH2 0x3C3 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x408 DUP5 DUP5 PUSH2 0x3D4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x450 DUP8 DUP8 PUSH2 0x3C3 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x461 DUP8 DUP3 DUP9 ADD PUSH2 0x3DF JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x472 DUP8 DUP3 DUP9 ADD PUSH2 0x3DF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x483 DUP8 DUP3 DUP9 ADD PUSH2 0x3DF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0x498 DUP2 PUSH2 0x654 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x498 DUP2 PUSH2 0x65F JUMP JUMPDEST PUSH2 0x498 DUP2 PUSH2 0x673 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BD PUSH1 0xF DUP4 PUSH2 0x64B JUMP JUMPDEST PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E8 PUSH1 0x26 DUP4 PUSH2 0x64B JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x530 PUSH1 0xC DUP4 PUSH2 0x64B JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x558 PUSH1 0x11 DUP4 PUSH2 0x64B JUMP JUMPDEST PUSH17 0x105B1C9958591E481C1C9BD8D95CDCD959 PUSH1 0x7A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x498 DUP2 PUSH2 0x670 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3CE DUP3 DUP5 PUSH2 0x48F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x59D DUP3 DUP6 PUSH2 0x48F JUMP JUMPDEST PUSH2 0x5AA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x578 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x5BF DUP3 DUP8 PUSH2 0x48F JUMP JUMPDEST PUSH2 0x5CC PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x578 JUMP JUMPDEST PUSH2 0x5D9 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x578 JUMP JUMPDEST PUSH2 0x5E6 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x578 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3CE DUP3 DUP5 PUSH2 0x49E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3CE DUP3 DUP5 PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3CE DUP2 PUSH2 0x4B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3CE DUP2 PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3CE DUP2 PUSH2 0x523 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3CE DUP2 PUSH2 0x54B JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CE DUP3 PUSH2 0x664 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CE DUP3 PUSH2 0x654 JUMP JUMPDEST PUSH2 0x687 DUP2 PUSH2 0x654 JUMP JUMPDEST DUP2 EQ PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x687 DUP2 PUSH2 0x670 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH3 0x42369F 0xBA SWAP2 PUSH21 0xF6C6EDE8B736699AD19D794898EB6318C119007A12 ISZERO 0xEE CALLVALUE STOP PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "379:1019:71:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;379:1019:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;927:469;;;;;;;;;:::i;:::-;;851:68:142;;;:::i;:::-;;;;;;;;;;;;;;;;1134:83;;;:::i;:::-;;;;;;;;424:38:71;;;:::i;:::-;;;;;;;;1351:98:142;;;;;;;;;:::i;927:469:71:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1063:25:71;;1055:53;;;;-1:-1:-1;;;1055:53:71;;;;;;;;;-1:-1:-1;;;;;1121:26:71;;;;;;:13;:26;;;;;;;;1120:27;1112:57;;;;-1:-1:-1;;;1112:57:71;;;;;;;;;-1:-1:-1;;;;;1174:26:71;;;;;;;:13;:26;;;;;;;:33;;-1:-1:-1;;1174:33:71;1203:4;1174:33;;;;;;1212:15;:70;;-1:-1:-1;;;1212:70:71;;:15;;;:29;;:70;;1188:11;;1255:7;;1264:6;;1272:9;;1212:70;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1212:70:71;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1304:15:71;;:39;;-1:-1:-1;;;1304:39:71;;1286:15;;-1:-1:-1;;;;;;1304:15:71;;;;-1:-1:-1;1304:26:71;;:39;;1331:11;;1304:39;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1304:39:71;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1304:39:71;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1304:39:71;;;;;;;;;1347:15;;:45;;-1:-1:-1;;;1347:45:71;;1286:57;;-1:-1:-1;;;;;;1347:15:71;;:27;;:45;;1286:57;;1384:7;;1347:45;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1347:45:71;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1347:45:71;;;;1058:1:142;927:469:71;;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;424:38:71:-;;;-1:-1:-1;;;;;424:38:71;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;142:134;220:13;;238:33;220:13;238:33;;283:130;350:20;;375:33;350:20;375:33;;420:241;;524:2;512:9;503:7;499:23;495:32;492:2;;;540:1;537;530:12;492:2;575:1;592:53;637:7;617:9;592:53;;;582:63;486:175;-1:-1;;;;486:175;668:263;;783:2;771:9;762:7;758:23;754:32;751:2;;;799:1;796;789:12;751:2;834:1;851:64;907:7;887:9;851:64;;938:617;;;;;1093:3;1081:9;1072:7;1068:23;1064:33;1061:2;;;1110:1;1107;1100:12;1061:2;1145:1;1162:53;1207:7;1187:9;1162:53;;;1152:63;;1124:97;1252:2;1270:53;1315:7;1306:6;1295:9;1291:22;1270:53;;;1260:63;;1231:98;1360:2;1378:53;1423:7;1414:6;1403:9;1399:22;1378:53;;;1368:63;;1339:98;1468:2;1486:53;1531:7;1522:6;1511:9;1507:22;1486:53;;;1476:63;;1447:98;1055:500;;;;;;;;1562:113;1645:24;1663:5;1645:24;;;1640:3;1633:37;1627:48;;;1682:104;1759:21;1774:5;1759:21;;1793:176;1901:62;1957:5;1901:62;;1977:315;;2137:67;2201:2;2196:3;2137:67;;;-1:-1;;;2217:38;;2283:2;2274:12;;2123:169;-1:-1;;2123:169;2301:375;;2461:67;2525:2;2520:3;2461:67;;;2561:34;2541:55;;-1:-1;;;2625:2;2616:12;;2609:30;2667:2;2658:12;;2447:229;-1:-1;;2447:229;2685:312;;2845:67;2909:2;2904:3;2845:67;;;-1:-1;;;2925:35;;2988:2;2979:12;;2831:166;-1:-1;;2831:166;3006:317;;3166:67;3230:2;3225:3;3166:67;;;-1:-1;;;3246:40;;3314:2;3305:12;;3152:171;-1:-1;;3152:171;3331:113;3414:24;3432:5;3414:24;;3451:213;3569:2;3554:18;;3583:71;3558:9;3627:6;3583:71;;3671:324;3817:2;3802:18;;3831:71;3806:9;3875:6;3831:71;;;3913:72;3981:2;3970:9;3966:18;3957:6;3913:72;;;3788:207;;;;;;4002:547;4204:3;4189:19;;4219:71;4193:9;4263:6;4219:71;;;4301:72;4369:2;4358:9;4354:18;4345:6;4301:72;;;4384;4452:2;4441:9;4437:18;4428:6;4384:72;;;4467;4535:2;4524:9;4520:18;4511:6;4467:72;;;4175:374;;;;;;;;4556:201;4668:2;4653:18;;4682:65;4657:9;4720:6;4682:65;;4764:263;4907:2;4892:18;;4921:96;4896:9;4990:6;4921:96;;5034:407;5225:2;5239:47;;;5210:18;;5300:131;5210:18;5300:131;;5448:407;5639:2;5653:47;;;5624:18;;5714:131;5624:18;5714:131;;5862:407;6053:2;6067:47;;;6038:18;;6128:131;6038:18;6128:131;;6276:407;6467:2;6481:47;;;6452:18;;6542:131;6452:18;6542:131;;6691:163;6794:19;;;6843:4;6834:14;;6787:67;6862:91;;6924:24;6942:5;6924:24;;6960:85;7026:13;7019:21;;7002:43;7052:121;-1:-1;;;;;7114:54;;7097:76;7180:72;7242:5;7225:27;7259:171;;7363:62;7419:5;7363:62;;7577:117;7646:24;7664:5;7646:24;;;7639:5;7636:35;7626:2;;7685:1;7682;7675:12;7701:117;7770:24;7788:5;7770:24;"
            },
            "methodIdentifiers": {
              "createVesting(address,uint256,uint256,uint256)": "0665a06f",
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b",
              "vestingRegistry()": "904c5b8f"
            }
          },
          "userdoc": {
            "methods": {
              "createVesting(address,uint256,uint256,uint256)": {
                "notice": "Create a vesting, get it and stake some tokens w/ this vesting."
              }
            },
            "notice": "It casts an instance of vestingRegistry and by using createVesting function it creates a vesting, gets it and stakes some tokens w/ this vesting."
          }
        }
      },
      "contracts/governance/Vesting/SVR.sol": {
        "SVR": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_staking",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "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"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20_",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "_amount",
                  "type": "uint96"
                }
              ],
              "name": "burn",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "_amount",
                  "type": "uint96"
                }
              ],
              "name": "mint",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_sender",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "_amount",
                  "type": "uint96"
                }
              ],
              "name": "mintWithApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "receiveApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract IStaking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "allowance(address,address)": {
                "details": "See {IERC20-allowance}."
              },
              "approve(address,uint256)": {
                "details": "See {IERC20-approve}.\t * Requirements:\t * - `spender` cannot be the zero address."
              },
              "balanceOf(address)": {
                "details": "See {IERC20-balanceOf}."
              },
              "burn(uint96)": {
                "params": {
                  "_amount": "the amount of tokens to be burnt"
                }
              },
              "constructor": {
                "params": {
                  "_SOV": "The SOV token address.",
                  "_staking": "The staking contract address."
                }
              },
              "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`).\t * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei.\t * 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}."
              },
              "decreaseAllowance(address,uint256)": {
                "details": "Atomically decreases the allowance granted to `spender` by the caller.\t * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.\t * Emits an {Approval} event indicating the updated allowance.\t * Requirements:\t * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
              },
              "increaseAllowance(address,uint256)": {
                "details": "Atomically increases the allowance granted to `spender` by the caller.\t * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.\t * Emits an {Approval} event indicating the updated allowance.\t * Requirements:\t * - `spender` cannot be the zero address."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "mint(uint96)": {
                "params": {
                  "_amount": "The amount of tokens to be mint."
                }
              },
              "mintWithApproval(address,uint96)": {
                "details": "This function will be invoked from receiveApproval.SOV.approveAndCall -> this.receiveApproval -> this.mintWithApproval",
                "params": {
                  "_amount": "The amount of tokens to be mint.",
                  "_sender": "The sender of SOV.approveAndCall"
                }
              },
              "name()": {
                "details": "Returns the name of the token."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "receiveApproval(address,uint256,address,bytes)": {
                "params": {
                  "_data": "The data will be used for low level call."
                }
              },
              "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}.\t * Requirements:\t * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC20-transferFrom}.\t * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20};\t * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Sovryn Reward Token."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060405162001cd438038062001cd4833981810160405260408110156200003757600080fd5b508051602091820151604080518082018252601b81527f536f7672796e2056657374696e672052657761726420546f6b656e0000000000818601908152825180840190935260038084526229ab2960e91b968401969096528151949593949193601292620000a6929062000225565b508151620000bc90600490602085019062000225565b506005805460ff191660ff929092169190911790555060009050620000e062000220565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03821662000192576040805162461bcd60e51b815260206004820152601860248201527f5356523a3a534f56206164647265737320696e76616c69640000000000000000604482015290519081900360640190fd5b6001600160a01b038116620001ee576040805162461bcd60e51b815260206004820152601c60248201527f5356523a3a7374616b696e67206164647265737320696e76616c696400000000604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055620002c7565b335b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026857805160ff191683800117855562000298565b8280016001018555821562000298579182015b82811115620002985782518255916020019190600101906200027b565b50620002a6929150620002aa565b5090565b6200022291905b80821115620002a65760008155600101620002b1565b6119fd80620002d76000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d7146103cf578063a9059cbb146103fb578063dd62ed3e14610427578063ef4f059214610455578063f2fde38b1461048a5761012c565b806370a08231146103025780638da5cb5b146103285780638f32d59b146103305780638f4ffcb11461033857806395d89b41146103c75761012c565b8063313ce567116100f4578063313ce5671461026257806339509351146102805780633b331cf9146102ac5780634cf088d9146102d45780635f7c7af1146102dc5761012c565b806306fdde031461013157806308dcb360146101ae578063095ea7b3146101d257806318160ddd1461021257806323b872dd1461022c575b600080fd5b6101396104b0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b6610546565b604080516001600160a01b039092168252519081900360200190f35b6101fe600480360360408110156101e857600080fd5b506001600160a01b038135169060200135610555565b604080519115158252519081900360200190f35b61021a610572565b60408051918252519081900360200190f35b6101fe6004803603606081101561024257600080fd5b506001600160a01b03813581169160208101359091169060400135610578565b61026a610605565b6040805160ff9092168252519081900360200190f35b6101fe6004803603604081101561029657600080fd5b506001600160a01b03813516906020013561060e565b6102d2600480360360208110156102c257600080fd5b50356001600160601b0316610662565b005b6101b66108e5565b6102d2600480360360208110156102f257600080fd5b50356001600160601b03166108f4565b61021a6004803603602081101561031857600080fd5b50356001600160a01b0316610901565b6101b661091c565b6101fe610930565b6102d26004803603608081101561034e57600080fd5b6001600160a01b03823581169260208101359260408201359092169181019060808101606082013564010000000081111561038857600080fd5b82018360208201111561039a57600080fd5b803590602001918460018302840111640100000000831117156103bc57600080fd5b50909250905061095b565b610139610c2d565b6101fe600480360360408110156103e557600080fd5b506001600160a01b038135169060200135610c8e565b6101fe6004803603604081101561041157600080fd5b506001600160a01b038135169060200135610cfc565b61021a6004803603604081101561043d57600080fd5b506001600160a01b0381358116916020013516610d10565b6102d26004803603604081101561046b57600080fd5b5080356001600160a01b031690602001356001600160601b0316610d3b565b6102d2600480360360208110156104a057600080fd5b50356001600160a01b0316610d8c565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053c5780601f106105115761010080835404028352916020019161053c565b820191906000526020600020905b81548152906001019060200180831161051f57829003601f168201915b5050505050905090565b6006546001600160a01b031681565b6000610569610562610ddd565b8484610de1565b50600192915050565b60025490565b6000610585848484610ecd565b6105fb84610591610ddd565b6105f685604051806060016040528060288152602001611912602891396001600160a01b038a166000908152600160205260408120906105cf610ddd565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61102916565b610de1565b5060019392505050565b60055460ff1690565b600061056961061b610ddd565b846105f6856001600061062c610ddd565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6110c016565b6000816001600160601b0316116106c0576040805162461bcd60e51b815260206004820152601a60248201527f5356523a3a206275726e3a20616d6f756e7420696e76616c6964000000000000604482015290519081900360640190fd5b6106d333826001600160601b0316611121565b6000600e6001600160601b0383160490506001600160601b03811615610781576006546040805163a9059cbb60e01b81523360048201526001600160601b038416602482015290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505090819003905b6006546007546040805163095ea7b360e01b81526001600160a01b0392831660048201526001600160601b03861660248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156107e257600080fd5b505af11580156107f6573d6000803e3d6000fd5b505050506040513d602081101561080c57600080fd5b505060075460408051632597f50f60e11b81526001600160601b03851660048201526224ea00602482018190526301dfe20060448301526064820152336084820181905260a482015290516001600160a01b0390921691634b2fea1e9160c48082019260009290919082900301818387803b15801561088a57600080fd5b505af115801561089e573d6000803e3d6000fd5b5050604080516001600160601b038616815290513393507fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca592509081900360200190a25050565b6007546001600160a01b031681565b6108fe338261121d565b50565b6001600160a01b031660009081526020819052604090205490565b60055461010090046001600160a01b031690565b60055460009061010090046001600160a01b031661094c610ddd565b6001600160a01b031614905090565b61096361137a565b6001600160a01b0316336001600160a01b0316146109b7576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b336001600160a01b03841614610a03576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006060610a0f611389565b90506000610a5285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113e192505050565b905060005b8251811015610aa057828181518110610a6c57fe5b60200260200101516001600160e01b031916826001600160e01b0319161415610a985760019350610aa0565b600101610a57565b5082610aeb576040805162461bcd60e51b81526020600482015260156024820152741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b604482015290519081900360640190fd5b60405160006020820181815290918291829189918991603c018383808284378083019250505093505050506040516020818303038152906040528060200190516060811015610b3957600080fd5b50602081015160409091015190925090506001600160a01b03808316908b1614610b9c576040805162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b888114610be2576040805162461bcd60e51b815260206004820152600f60248201526e0c2dadeeadce840dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b610c2187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113e892505050565b50505050505050505050565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053c5780601f106105115761010080835404028352916020019161053c565b6000610569610c9b610ddd565b846105f6856040518060600160405280602581526020016119a46025913960016000610cc5610ddd565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61102916565b6000610569610d09610ddd565b8484610ecd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b333014610d7e576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d88828261121d565b5050565b610d94610930565b610dd4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6108fe81611556565b3390565b6001600160a01b038316610e265760405162461bcd60e51b81526004018080602001828103825260248152602001806119806024913960400191505060405180910390fd5b6001600160a01b038216610e6b5760405162461bcd60e51b81526004018080602001828103825260228152602001806118ca6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610f125760405162461bcd60e51b815260040180806020018281038252602581526020018061195b6025913960400191505060405180910390fd5b6001600160a01b038216610f575760405162461bcd60e51b815260040180806020018281038252602381526020018061182f6023913960400191505060405180910390fd5b610f9a816040518060600160405280602681526020016118ec602691396001600160a01b038616600090815260208190526040902054919063ffffffff61102916565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610fcf908263ffffffff6110c016565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156110b85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561107d578181015183820152602001611065565b50505050905090810190601f1680156110aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561111a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166111665760405162461bcd60e51b815260040180806020018281038252602181526020018061193a6021913960400191505060405180910390fd5b6111a981604051806060016040528060228152602001611852602291396001600160a01b038516600090815260208190526040902054919063ffffffff61102916565b6001600160a01b0383166000908152602081905260409020556002546111d5908263ffffffff61160216565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000816001600160601b03161161127b576040805162461bcd60e51b815260206004820152601960248201527f5356523a3a6d696e743a20616d6f756e7420696e76616c696400000000000000604482015290519081900360640190fd5b600654604080516323b872dd60e01b81526001600160a01b0385811660048301523060248301526001600160601b0385166044830152915160009392909216916323b872dd9160648082019260209290919082900301818787803b1580156112e257600080fd5b505af11580156112f6573d6000803e3d6000fd5b505050506040513d602081101561130c57600080fd5b505190508061131a57600080fd5b61132d83836001600160601b0316611644565b604080516001600160601b038416815290516001600160a01b038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a2505050565b6006546001600160a01b031690565b6040805160018082528183019092526060918291906020808301908038833901905050905063ef4f059260e01b816000815181106113c357fe5b6001600160e01b031990921660209283029190910190910152905090565b6020015190565b60006060306001600160a01b0316836040518082805190602001908083835b602083106114265780518252601f199092019160209182019101611407565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611488576040519150601f19603f3d011682016040523d82523d6000602084013e61148d565b606091505b5091509150816115515760448151116114d75760405162461bcd60e51b81526004018080602001828103825260308152602001806118746030913960400191505060405180910390fd5b61150a6040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b81525082611734565b60405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561107d578181015183820152602001611065565b505050565b6001600160a01b03811661159b5760405162461bcd60e51b81526004018080602001828103825260268152602001806118a46026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600061111a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611029565b6001600160a01b03821661169f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546116b2908263ffffffff6110c016565b6002556001600160a01b0382166000908152602081905260409020546116de908263ffffffff6110c016565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6060808390506060839050606060448251845101036040519080825280601f01601f191660200182016040528015611773576020820181803883390190505b509050806000805b85518110156117cc5785818151811061179057fe5b602001015160f81c60f81b8383806001019450815181106117ad57fe5b60200101906001600160f81b031916908160001a90535060010161177b565b5060445b8451811015611821578481815181106117e557fe5b602001015160f81c60f81b83838060010194508151811061180257fe5b60200101906001600160f81b031916908160001a9053506001016117d0565b509097965050505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636572656365697665417070726f76616c3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158200fbad2c0cf0e89c5a65e0478e728869f519cdbe3ac27caef9ac5c74e7bbbd86364736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1CD4 CODESIZE SUB DUP1 PUSH3 0x1CD4 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH32 0x536F7672796E2056657374696E672052657761726420546F6B656E0000000000 DUP2 DUP7 ADD SWAP1 DUP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP1 DUP5 MSTORE PUSH3 0x29AB29 PUSH1 0xE9 SHL SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP2 MLOAD SWAP5 SWAP6 SWAP4 SWAP5 SWAP2 SWAP4 PUSH1 0x12 SWAP3 PUSH3 0xA6 SWAP3 SWAP1 PUSH3 0x225 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0xBC SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x225 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH1 0x0 SWAP1 POP PUSH3 0xE0 PUSH3 0x220 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x192 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5356523A3A534F56206164647265737320696E76616C69640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x1EE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5356523A3A7374616B696E67206164647265737320696E76616C696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE PUSH3 0x2C7 JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x268 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x298 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x298 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x298 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x27B JUMP JUMPDEST POP PUSH3 0x2A6 SWAP3 SWAP2 POP PUSH3 0x2AA JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x222 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2A6 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2B1 JUMP JUMPDEST PUSH2 0x19FD DUP1 PUSH3 0x2D7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0xEF4F0592 EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x48A JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x328 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x3C7 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x3B331CF9 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0x5F7C7AF1 EQ PUSH2 0x2DC JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x22C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x139 PUSH2 0x4B0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x173 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x15B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1A0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x21A PUSH2 0x572 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x578 JUMP JUMPDEST PUSH2 0x26A PUSH2 0x605 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x60E JUMP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x662 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH2 0x8E5 JUMP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x8F4 JUMP JUMPDEST PUSH2 0x21A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x901 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x91C JUMP JUMPDEST PUSH2 0x1FE PUSH2 0x930 JUMP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x95B JUMP JUMPDEST PUSH2 0x139 PUSH2 0xC2D JUMP JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x21A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xD10 JUMP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0xD3B JUMP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD8C JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x511 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x51F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x569 PUSH2 0x562 PUSH2 0xDDD JUMP JUMPDEST DUP5 DUP5 PUSH2 0xDE1 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x585 DUP5 DUP5 DUP5 PUSH2 0xECD JUMP JUMPDEST PUSH2 0x5FB DUP5 PUSH2 0x591 PUSH2 0xDDD JUMP JUMPDEST PUSH2 0x5F6 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1912 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x5CF PUSH2 0xDDD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1029 AND JUMP JUMPDEST PUSH2 0xDE1 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x569 PUSH2 0x61B PUSH2 0xDDD JUMP JUMPDEST DUP5 PUSH2 0x5F6 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x62C PUSH2 0xDDD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x10C0 AND JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x6C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5356523A3A206275726E3A20616D6F756E7420696E76616C6964000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x6D3 CALLER DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1121 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND DIV SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x781 JUMPI PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x763 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP SWAP1 DUP2 SWAP1 SUB SWAP1 JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x80C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2597F50F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH3 0x24EA00 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH4 0x1DFE200 PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD MSTORE CALLER PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x4B2FEA1E SWAP2 PUSH1 0xC4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x88A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x89E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND DUP2 MSTORE SWAP1 MLOAD CALLER SWAP4 POP PUSH32 0xCC16F5DBB4873280815C1EE09DBD06736CFFCC184412CF7A71A0FDB75D397CA5 SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x8FE CALLER DUP3 PUSH2 0x121D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x94C PUSH2 0xDDD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x963 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9B7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0xA03 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0xA0F PUSH2 0x1389 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA52 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x13E1 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xAA0 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xA6C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0xA98 JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0xAA0 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xA57 JUMP JUMPDEST POP DUP3 PUSH2 0xAEB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE SWAP1 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP10 SWAP2 DUP10 SWAP2 PUSH1 0x3C ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0xB9C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP9 DUP2 EQ PUSH2 0xBE2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC21 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x13E8 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x511 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x569 PUSH2 0xC9B PUSH2 0xDDD JUMP JUMPDEST DUP5 PUSH2 0x5F6 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x19A4 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0xCC5 PUSH2 0xDDD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1029 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x569 PUSH2 0xD09 PUSH2 0xDDD JUMP JUMPDEST DUP5 DUP5 PUSH2 0xECD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0xD7E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD88 DUP3 DUP3 PUSH2 0x121D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xD94 PUSH2 0x930 JUMP JUMPDEST PUSH2 0xDD4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x8FE DUP2 PUSH2 0x1556 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xE26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1980 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xE6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18CA PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xF12 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x195B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xF57 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x182F PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF9A DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x18EC PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1029 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xFCF SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x10C0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x10B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x107D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1065 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x10AA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x111A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1166 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x193A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11A9 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1852 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1029 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x11D5 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1602 AND JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x127B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5356523A3A6D696E743A20616D6F756E7420696E76616C696400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x130C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x131A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x132D DUP4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1644 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xF6798A560793A54C3BCFE86A93CDE1E73087D944C0EA20544137D4121396885 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH4 0xEF4F0592 PUSH1 0xE0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x13C3 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1426 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1407 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1488 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x148D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1551 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0x14D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1874 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x150A PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x1734 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x107D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1065 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x159B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18A4 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 PUSH2 0x100 SWAP1 DIV AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x111A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1029 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x169F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x16B2 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x10C0 AND JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x16DE SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x10C0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1773 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x17CC JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1790 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x17AD JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x177B JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1821 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x17E5 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1802 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x17D0 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636572656365 PUSH10 0x7665417070726F76616C GASPRICE KECCAK256 SLOAD PUSH19 0x616E73616374696F6E20657865637574696F6E KECCAK256 PUSH19 0x657665727465642E4F776E61626C653A206E65 PUSH24 0x206F776E657220697320746865207A65726F206164647265 PUSH20 0x7345524332303A20617070726F766520746F2074 PUSH9 0x65207A65726F206164 PUSH5 0x7265737345 MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA265627A PUSH27 0x723158200FBAD2C0CF0E89C5A65E0478E728869F519CDBE3AC27CA 0xEF SWAP11 0xC5 0xC7 0x4E PUSH28 0xBBD86364736F6C634300051100320000000000000000000000000000 ",
              "sourceMap": "930:3859:72:-;;;1801:275;8:9:-1;5:2;;;30:1;27;20:12;5:2;1801:275:72;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1801:275:72;;;;;;;;1866:4;;;;;;;;;;;;;;;;;1872:6;;;;;;;;;;;;-1:-1:-1;;;1872:6:72;;;;;;;481:12:139;;1801:275:72;;;;1866:4;;1139:2;;481:12:139;;1866:4:72;481:12:139;:::i;:::-;-1:-1:-1;497:16:139;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;517:9:139;:20;;-1:-1:-1;;517:20:139;;;;;;;;;;;;-1:-1:-1;;;;697:12:142;:10;:12::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;;-1:-1:-1;;;;;713:18:142;;;;;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;-1:-1:-1;;;;;;1902:18:72;;1894:55;;;;;-1:-1:-1;;;1894:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1961:22:72;;1953:63;;;;;-1:-1:-1;;;1953:63:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;2021:3;:19;;-1:-1:-1;;;;;2021:19:72;;;-1:-1:-1;;;;;;2021:19:72;;;;;;;2044:7;:28;;;;;;;;;;;930:3859;;780:87:137;853:10;780:87;;:::o;930:3859:72:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;930:3859:72;;;-1:-1:-1;930:3859:72;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d7146103cf578063a9059cbb146103fb578063dd62ed3e14610427578063ef4f059214610455578063f2fde38b1461048a5761012c565b806370a08231146103025780638da5cb5b146103285780638f32d59b146103305780638f4ffcb11461033857806395d89b41146103c75761012c565b8063313ce567116100f4578063313ce5671461026257806339509351146102805780633b331cf9146102ac5780634cf088d9146102d45780635f7c7af1146102dc5761012c565b806306fdde031461013157806308dcb360146101ae578063095ea7b3146101d257806318160ddd1461021257806323b872dd1461022c575b600080fd5b6101396104b0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b6610546565b604080516001600160a01b039092168252519081900360200190f35b6101fe600480360360408110156101e857600080fd5b506001600160a01b038135169060200135610555565b604080519115158252519081900360200190f35b61021a610572565b60408051918252519081900360200190f35b6101fe6004803603606081101561024257600080fd5b506001600160a01b03813581169160208101359091169060400135610578565b61026a610605565b6040805160ff9092168252519081900360200190f35b6101fe6004803603604081101561029657600080fd5b506001600160a01b03813516906020013561060e565b6102d2600480360360208110156102c257600080fd5b50356001600160601b0316610662565b005b6101b66108e5565b6102d2600480360360208110156102f257600080fd5b50356001600160601b03166108f4565b61021a6004803603602081101561031857600080fd5b50356001600160a01b0316610901565b6101b661091c565b6101fe610930565b6102d26004803603608081101561034e57600080fd5b6001600160a01b03823581169260208101359260408201359092169181019060808101606082013564010000000081111561038857600080fd5b82018360208201111561039a57600080fd5b803590602001918460018302840111640100000000831117156103bc57600080fd5b50909250905061095b565b610139610c2d565b6101fe600480360360408110156103e557600080fd5b506001600160a01b038135169060200135610c8e565b6101fe6004803603604081101561041157600080fd5b506001600160a01b038135169060200135610cfc565b61021a6004803603604081101561043d57600080fd5b506001600160a01b0381358116916020013516610d10565b6102d26004803603604081101561046b57600080fd5b5080356001600160a01b031690602001356001600160601b0316610d3b565b6102d2600480360360208110156104a057600080fd5b50356001600160a01b0316610d8c565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053c5780601f106105115761010080835404028352916020019161053c565b820191906000526020600020905b81548152906001019060200180831161051f57829003601f168201915b5050505050905090565b6006546001600160a01b031681565b6000610569610562610ddd565b8484610de1565b50600192915050565b60025490565b6000610585848484610ecd565b6105fb84610591610ddd565b6105f685604051806060016040528060288152602001611912602891396001600160a01b038a166000908152600160205260408120906105cf610ddd565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61102916565b610de1565b5060019392505050565b60055460ff1690565b600061056961061b610ddd565b846105f6856001600061062c610ddd565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6110c016565b6000816001600160601b0316116106c0576040805162461bcd60e51b815260206004820152601a60248201527f5356523a3a206275726e3a20616d6f756e7420696e76616c6964000000000000604482015290519081900360640190fd5b6106d333826001600160601b0316611121565b6000600e6001600160601b0383160490506001600160601b03811615610781576006546040805163a9059cbb60e01b81523360048201526001600160601b038416602482015290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505090819003905b6006546007546040805163095ea7b360e01b81526001600160a01b0392831660048201526001600160601b03861660248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156107e257600080fd5b505af11580156107f6573d6000803e3d6000fd5b505050506040513d602081101561080c57600080fd5b505060075460408051632597f50f60e11b81526001600160601b03851660048201526224ea00602482018190526301dfe20060448301526064820152336084820181905260a482015290516001600160a01b0390921691634b2fea1e9160c48082019260009290919082900301818387803b15801561088a57600080fd5b505af115801561089e573d6000803e3d6000fd5b5050604080516001600160601b038616815290513393507fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca592509081900360200190a25050565b6007546001600160a01b031681565b6108fe338261121d565b50565b6001600160a01b031660009081526020819052604090205490565b60055461010090046001600160a01b031690565b60055460009061010090046001600160a01b031661094c610ddd565b6001600160a01b031614905090565b61096361137a565b6001600160a01b0316336001600160a01b0316146109b7576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b336001600160a01b03841614610a03576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006060610a0f611389565b90506000610a5285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113e192505050565b905060005b8251811015610aa057828181518110610a6c57fe5b60200260200101516001600160e01b031916826001600160e01b0319161415610a985760019350610aa0565b600101610a57565b5082610aeb576040805162461bcd60e51b81526020600482015260156024820152741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b604482015290519081900360640190fd5b60405160006020820181815290918291829189918991603c018383808284378083019250505093505050506040516020818303038152906040528060200190516060811015610b3957600080fd5b50602081015160409091015190925090506001600160a01b03808316908b1614610b9c576040805162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b888114610be2576040805162461bcd60e51b815260206004820152600f60248201526e0c2dadeeadce840dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b610c2187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113e892505050565b50505050505050505050565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053c5780601f106105115761010080835404028352916020019161053c565b6000610569610c9b610ddd565b846105f6856040518060600160405280602581526020016119a46025913960016000610cc5610ddd565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61102916565b6000610569610d09610ddd565b8484610ecd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b333014610d7e576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d88828261121d565b5050565b610d94610930565b610dd4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6108fe81611556565b3390565b6001600160a01b038316610e265760405162461bcd60e51b81526004018080602001828103825260248152602001806119806024913960400191505060405180910390fd5b6001600160a01b038216610e6b5760405162461bcd60e51b81526004018080602001828103825260228152602001806118ca6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610f125760405162461bcd60e51b815260040180806020018281038252602581526020018061195b6025913960400191505060405180910390fd5b6001600160a01b038216610f575760405162461bcd60e51b815260040180806020018281038252602381526020018061182f6023913960400191505060405180910390fd5b610f9a816040518060600160405280602681526020016118ec602691396001600160a01b038616600090815260208190526040902054919063ffffffff61102916565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610fcf908263ffffffff6110c016565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156110b85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561107d578181015183820152602001611065565b50505050905090810190601f1680156110aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561111a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166111665760405162461bcd60e51b815260040180806020018281038252602181526020018061193a6021913960400191505060405180910390fd5b6111a981604051806060016040528060228152602001611852602291396001600160a01b038516600090815260208190526040902054919063ffffffff61102916565b6001600160a01b0383166000908152602081905260409020556002546111d5908263ffffffff61160216565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000816001600160601b03161161127b576040805162461bcd60e51b815260206004820152601960248201527f5356523a3a6d696e743a20616d6f756e7420696e76616c696400000000000000604482015290519081900360640190fd5b600654604080516323b872dd60e01b81526001600160a01b0385811660048301523060248301526001600160601b0385166044830152915160009392909216916323b872dd9160648082019260209290919082900301818787803b1580156112e257600080fd5b505af11580156112f6573d6000803e3d6000fd5b505050506040513d602081101561130c57600080fd5b505190508061131a57600080fd5b61132d83836001600160601b0316611644565b604080516001600160601b038416815290516001600160a01b038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a2505050565b6006546001600160a01b031690565b6040805160018082528183019092526060918291906020808301908038833901905050905063ef4f059260e01b816000815181106113c357fe5b6001600160e01b031990921660209283029190910190910152905090565b6020015190565b60006060306001600160a01b0316836040518082805190602001908083835b602083106114265780518252601f199092019160209182019101611407565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611488576040519150601f19603f3d011682016040523d82523d6000602084013e61148d565b606091505b5091509150816115515760448151116114d75760405162461bcd60e51b81526004018080602001828103825260308152602001806118746030913960400191505060405180910390fd5b61150a6040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b81525082611734565b60405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561107d578181015183820152602001611065565b505050565b6001600160a01b03811661159b5760405162461bcd60e51b81526004018080602001828103825260268152602001806118a46026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600061111a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611029565b6001600160a01b03821661169f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546116b2908263ffffffff6110c016565b6002556001600160a01b0382166000908152602081905260409020546116de908263ffffffff6110c016565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6060808390506060839050606060448251845101036040519080825280601f01601f191660200182016040528015611773576020820181803883390190505b509050806000805b85518110156117cc5785818151811061179057fe5b602001015160f81c60f81b8383806001019450815181106117ad57fe5b60200101906001600160f81b031916908160001a90535060010161177b565b5060445b8451811015611821578481815181106117e557fe5b602001015160f81c60f81b83838060010194508151811061180257fe5b60200101906001600160f81b031916908160001a9053506001016117d0565b509097965050505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636572656365697665417070726f76616c3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158200fbad2c0cf0e89c5a65e0478e728869f519cdbe3ac27caef9ac5c74e7bbbd86364736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0xEF4F0592 EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x48A JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x328 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x3C7 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x3B331CF9 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0x5F7C7AF1 EQ PUSH2 0x2DC JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x22C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x139 PUSH2 0x4B0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x173 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x15B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1A0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x21A PUSH2 0x572 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x578 JUMP JUMPDEST PUSH2 0x26A PUSH2 0x605 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x60E JUMP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x662 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH2 0x8E5 JUMP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x8F4 JUMP JUMPDEST PUSH2 0x21A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x901 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x91C JUMP JUMPDEST PUSH2 0x1FE PUSH2 0x930 JUMP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x95B JUMP JUMPDEST PUSH2 0x139 PUSH2 0xC2D JUMP JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x21A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xD10 JUMP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0xD3B JUMP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD8C JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x511 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x51F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x569 PUSH2 0x562 PUSH2 0xDDD JUMP JUMPDEST DUP5 DUP5 PUSH2 0xDE1 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x585 DUP5 DUP5 DUP5 PUSH2 0xECD JUMP JUMPDEST PUSH2 0x5FB DUP5 PUSH2 0x591 PUSH2 0xDDD JUMP JUMPDEST PUSH2 0x5F6 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1912 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x5CF PUSH2 0xDDD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1029 AND JUMP JUMPDEST PUSH2 0xDE1 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x569 PUSH2 0x61B PUSH2 0xDDD JUMP JUMPDEST DUP5 PUSH2 0x5F6 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x62C PUSH2 0xDDD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x10C0 AND JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x6C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5356523A3A206275726E3A20616D6F756E7420696E76616C6964000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x6D3 CALLER DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1121 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND DIV SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x781 JUMPI PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x763 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP SWAP1 DUP2 SWAP1 SUB SWAP1 JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x80C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2597F50F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH3 0x24EA00 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH4 0x1DFE200 PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD MSTORE CALLER PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x4B2FEA1E SWAP2 PUSH1 0xC4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x88A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x89E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND DUP2 MSTORE SWAP1 MLOAD CALLER SWAP4 POP PUSH32 0xCC16F5DBB4873280815C1EE09DBD06736CFFCC184412CF7A71A0FDB75D397CA5 SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x8FE CALLER DUP3 PUSH2 0x121D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x94C PUSH2 0xDDD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x963 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9B7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0xA03 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0xA0F PUSH2 0x1389 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA52 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x13E1 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xAA0 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xA6C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0xA98 JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0xAA0 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xA57 JUMP JUMPDEST POP DUP3 PUSH2 0xAEB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE SWAP1 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP10 SWAP2 DUP10 SWAP2 PUSH1 0x3C ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xB39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0xB9C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP9 DUP2 EQ PUSH2 0xBE2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC21 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x13E8 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x511 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x569 PUSH2 0xC9B PUSH2 0xDDD JUMP JUMPDEST DUP5 PUSH2 0x5F6 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x19A4 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0xCC5 PUSH2 0xDDD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1029 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x569 PUSH2 0xD09 PUSH2 0xDDD JUMP JUMPDEST DUP5 DUP5 PUSH2 0xECD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0xD7E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD88 DUP3 DUP3 PUSH2 0x121D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xD94 PUSH2 0x930 JUMP JUMPDEST PUSH2 0xDD4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x8FE DUP2 PUSH2 0x1556 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xE26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1980 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xE6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18CA PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xF12 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x195B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xF57 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x182F PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF9A DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x18EC PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1029 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xFCF SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x10C0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x10B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x107D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1065 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x10AA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x111A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1166 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x193A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11A9 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1852 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1029 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x11D5 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1602 AND JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x127B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5356523A3A6D696E743A20616D6F756E7420696E76616C696400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x130C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x131A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x132D DUP4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1644 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xF6798A560793A54C3BCFE86A93CDE1E73087D944C0EA20544137D4121396885 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH4 0xEF4F0592 PUSH1 0xE0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x13C3 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1426 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1407 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1488 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x148D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1551 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0x14D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1874 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x150A PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x1734 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x107D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1065 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x159B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18A4 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 PUSH2 0x100 SWAP1 DIV AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x111A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1029 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x169F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x16B2 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x10C0 AND JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x16DE SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x10C0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1773 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x17CC JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1790 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x17AD JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x177B JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1821 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x17E5 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1802 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x17D0 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636572656365 PUSH10 0x7665417070726F76616C GASPRICE KECCAK256 SLOAD PUSH19 0x616E73616374696F6E20657865637574696F6E KECCAK256 PUSH19 0x657665727465642E4F776E61626C653A206E65 PUSH24 0x206F776E657220697320746865207A65726F206164647265 PUSH20 0x7345524332303A20617070726F766520746F2074 PUSH9 0x65207A65726F206164 PUSH5 0x7265737345 MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA265627A PUSH27 0x723158200FBAD2C0CF0E89C5A65E0478E728869F519CDBE3AC27CA 0xEF SWAP11 0xC5 0xC7 0x4E PUSH28 0xBBD86364736F6C634300051100320000000000000000000000000000 ",
              "sourceMap": "930:3859:72:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;930:3859:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;594:72:139;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;594:72:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1439:18:72;;;:::i;:::-;;;;-1:-1:-1;;;;;1439:18:72;;;;;;;;;;;;;;2341:134:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2341:134:138;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1517:80;;;:::i;:::-;;;;;;;;;;;;;;;;2894:288;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2894:288:138;;;;;;;;;;;;;;;;;:::i;1350:72:139:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3538:192:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3538:192:138;;;;;;;;:::i;3489:663:72:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3489:663:72;-1:-1:-1;;;;;3489:663:72;;:::i;:::-;;1495:23;;;:::i;2217:73::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2217:73:72;-1:-1:-1;;;;;2217:73:72;;:::i;1643:99:138:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1643:99:138;-1:-1:-1;;;;;1643:99:138;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;494:849:48:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;494:849:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;494:849:48;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;494:849:48;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;494:849:48;;-1:-1:-1;494:849:48;-1:-1:-1;494:849:48;:::i;764:76:139:-;;;:::i;4172:243:138:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4172:243:138;;;;;;;;:::i;1918:140::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1918:140:138;;;;;;;;:::i;2104:123::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2104:123:138;;;;;;;;;;:::i;2621:116:72:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2621:116:72;;-1:-1:-1;;;;;2621:116:72;;;;;-1:-1:-1;;;;;2621:116:72;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;594:72:139:-;657:5;650:12;;;;;;;;-1:-1:-1;;650:12:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;631:13;;650:12;;657:5;;650:12;;657:5;650:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;594:72;:::o;1439:18:72:-;;;-1:-1:-1;;;;;1439:18:72;;:::o;2341:134:138:-;2407:4;2417:39;2426:12;:10;:12::i;:::-;2440:7;2449:6;2417:8;:39::i;:::-;-1:-1:-1;2467:4:138;2341:134;;;;:::o;1517:80::-;1581:12;;1517:80;:::o;2894:288::-;2992:4;3002:36;3012:6;3020:9;3031:6;3002:9;:36::i;:::-;3042:121;3051:6;3059:12;:10;:12::i;:::-;3073:89;3111:6;3073:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3073:19:138;;;;;;:11;:19;;;;;;3093:12;:10;:12::i;:::-;-1:-1:-1;;;;;3073:33:138;;;;;;;;;;;;-1:-1:-1;3073:33:138;;;:89;;:37;:89;:::i;:::-;3042:8;:121::i;:::-;-1:-1:-1;3174:4:138;2894:288;;;;;:::o;1350:72:139:-;1409:9;;;;1350:72;:::o;3538:192:138:-;3618:4;3628:83;3637:12;:10;:12::i;:::-;3651:7;3660:50;3699:10;3660:11;:25;3672:12;:10;:12::i;:::-;-1:-1:-1;;;;;3660:25:138;;;;;;;;;;;;;;;;;-1:-1:-1;3660:25:138;;;:34;;;;;;;;;;;:50;:38;:50;:::i;3489:663:72:-;3548:1;3538:7;-1:-1:-1;;;;;3538:11:72;;3530:50;;;;;-1:-1:-1;;;3530:50:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;3618:26;3624:10;3636:7;-1:-1:-1;;;;;3618:26:72;:5;:26::i;:::-;3763:21;1396:2;-1:-1:-1;;;;;3787:30:72;;;;-1:-1:-1;;;;;;3825:18:72;;;3821:104;;3850:3;;:40;;;-1:-1:-1;;;3850:40:72;;3863:10;3850:40;;;;-1:-1:-1;;;;;3850:40:72;;;;;;;;-1:-1:-1;;;;;3850:3:72;;;;:12;;:40;;;;;;;;;;;;;;;:3;;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;3850:40:72;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3850:40:72;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;3895:25:72;;;;;3821:104;3983:3;;4003:7;;3983:38;;;-1:-1:-1;;;3983:38:72;;-1:-1:-1;;;;;4003:7:72;;;3983:38;;;;-1:-1:-1;;;;;3983:38:72;;;;;;;;:3;;;;;:11;;:38;;;;;;;;;;;;;;:3;;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;3983:38:72;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3983:38:72;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;4026:7:72;;:87;;;-1:-1:-1;;;4026:87:72;;-1:-1:-1;;;;;4026:87:72;;;;;;1236:7;4026:87;;;;;;1270:8;4026:87;;;;;;;;4090:10;4026:87;;;;;;;;;;;;-1:-1:-1;;;;;4026:7:72;;;;:24;;:87;;;;;:7;;:87;;;;;;;;:7;;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;4026:87:72;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4123:25:72;;;-1:-1:-1;;;;;4123:25:72;;;;;;4128:10;;-1:-1:-1;4123:25:72;;-1:-1:-1;4123:25:72;;;;;;;;3489:663;;:::o;1495:23::-;;;-1:-1:-1;;;;;1495:23:72;;:::o;2217:73::-;2258:28;2266:10;2278:7;2258;:28::i;:::-;2217:73;:::o;1643:99:138:-;-1:-1:-1;;;;;1720:18:138;1700:7;1720:18;;;;;;;;;;;;1643:99::o;851:68:142:-;909:6;;;;;-1:-1:-1;;;;;909:6:142;;851:68::o;1134:83::-;1207:6;;1174:4;;1207:6;;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;494:849:48:-;677:11;:9;:11::i;:::-;-1:-1:-1;;;;;663:25:48;:10;-1:-1:-1;;;;;663:25:48;;655:50;;;;;-1:-1:-1;;;655:50:48;;;;;;;;;;;;-1:-1:-1;;;655:50:48;;;;;;;;;;;;;;;717:10;-1:-1:-1;;;;;717:20:48;;;709:45;;;;;-1:-1:-1;;;709:45:48;;;;;;;;;;;;-1:-1:-1;;;709:45:48;;;;;;;;;;;;;;;786:14;812:25;840:15;:13;:15::i;:::-;812:43;;859:10;872:14;880:5;;872:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;872:7:48;;-1:-1:-1;;;872:14:48:i;:::-;859:27;-1:-1:-1;895:9:48;890:120;914:9;:16;910:1;:20;890:120;;;953:9;963:1;953:12;;;;;;;;;;;;;;-1:-1:-1;;;;;946:19:48;;:3;-1:-1:-1;;;;;946:19:48;;;942:64;;;985:4;973:16;;995:5;;942:64;932:3;;890:120;;;;1021:9;1013:43;;;;;-1:-1:-1;;;1013:43:48;;;;;;;;;;;;-1:-1:-1;;;1013:43:48;;;;;;;;;;;;;;;1159:35;;1091:14;1176:10;1159:35;;;;;1091:14;;;;;;1188:5;;;;1159:35;;1188:5;;;;1159:35;1:33:-1;57:3;49:6;45:16;35:26;;1159:35:48;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1159:35:48;;;1148:76;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1148:76:48;;;;;;;;;;;-1:-1:-1;1148:76:48;-1:-1:-1;;;;;;1236:17:48;;;;;;;1228:45;;;;;-1:-1:-1;;;1228:45:48;;;;;;;;;;;;-1:-1:-1;;;1228:45:48;;;;;;;;;;;;;;;1295:7;1285:6;:17;1277:45;;;;;-1:-1:-1;;;1277:45:48;;;;;;;;;;;;-1:-1:-1;;;1277:45:48;;;;;;;;;;;;;;;1327:12;1333:5;;1327:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1327:5:48;;-1:-1:-1;;;1327:12:48:i;:::-;494:849;;;;;;;;;;:::o;764:76:139:-;829:7;822:14;;;;;;;;-1:-1:-1;;822:14:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;803:13;;822:14;;829:7;;822:14;;829:7;822:14;;;;;;;;;;;;;;;;;;;;;;;;4172:243:138;4257:4;4267:129;4276:12;:10;:12::i;:::-;4290:7;4299:96;4338:15;4299:96;;;;;;;;;;;;;;;;;:11;:25;4311:12;:10;:12::i;:::-;-1:-1:-1;;;;;4299:25:138;;;;;;;;;;;;;;;;;-1:-1:-1;4299:25:138;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;1918:140::-;1987:4;1997:42;2007:12;:10;:12::i;:::-;2021:9;2032:6;1997:9;:42::i;2104:123::-;-1:-1:-1;;;;;2196:18:138;;;2176:7;2196:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2104:123::o;2621:116:72:-;323:10:48;345:4;323:27;315:52;;;;;-1:-1:-1;;;315:52:48;;;;;;;;;;;;-1:-1:-1;;;315:52:48;;;;;;;;;;;;;;;2708:25:72;2716:7;2725;2708;:25::i;:::-;2621:116;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;780:87:137:-;853:10;780:87;:::o;6780:314:138:-;-1:-1:-1;;;;;6876:19:138;;6868:68;;;;-1:-1:-1;;;6868:68:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6948:21:138;;6940:68;;;;-1:-1:-1;;;6940:68:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7013:18:138;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7058:32;;;;;;;;;;;;;;;;;6780:314;;;:::o;4844:440::-;-1:-1:-1;;;;;4944:20:138;;4936:70;;;;-1:-1:-1;;;4936:70:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5018:23:138;;5010:71;;;;-1:-1:-1;;;5010:71:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5106;5128:6;5106:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5106:17:138;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5086:17:138;;;:9;:17;;;;;;;;;;;:91;;;;5204:20;;;;;;;:32;;5229:6;5204:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5181:20:138;;;:9;:20;;;;;;;;;;;;:55;;;;5245:35;;;;;;;5181:20;;5245:35;;;;;;;;;;;;;4844:440;;;:::o;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;6082:315:138:-;-1:-1:-1;;;;;6151:21:138;;6143:67;;;;-1:-1:-1;;;6143:67:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6236:68;6259:6;6236:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6236:18:138;;:9;:18;;;;;;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;6215:18:138;;:9;:18;;;;;;;;;;:89;6323:12;;:24;;6340:6;6323:24;:16;:24;:::i;:::-;6308:12;:39;6356:37;;;;;;;;6382:1;;-1:-1:-1;;;;;6356:37:138;;;;;;;;;;;;6082:315;;:::o;2938:392:72:-;3019:1;3009:7;-1:-1:-1;;;;;3009:11:72;;3001:49;;;;;-1:-1:-1;;;3001:49:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;3102:3;;:49;;;-1:-1:-1;;;3102:49:72;;-1:-1:-1;;;;;3102:49:72;;;;;;;3136:4;3102:49;;;;-1:-1:-1;;;;;3102:49:72;;;;;;;;3087:12;;3102:3;;;;;:16;;:49;;;;;;;;;;;;;;;3087:12;3102:3;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;3102:49:72;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3102:49:72;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3102:49:72;;-1:-1:-1;3102:49:72;3155:16;;;;;;3271:23;3277:7;3286;-1:-1:-1;;;;;3271:23:72;:5;:23::i;:::-;3304:22;;;-1:-1:-1;;;;;3304:22:72;;;;;;-1:-1:-1;;;;;3304:22:72;;;;;;;;;;;;;2938:392;;;:::o;4314:80::-;4386:3;;-1:-1:-1;;;;;4386:3:72;4314:80;:::o;4602:185::-;4699:15;;;4712:1;4699:15;;;;;;;;;4650;;;;4699;;;;;;;105:10:-1;4699:15:72;88:34:-1;136:17;;-1:-1;4699:15:72;4671:43;;4733:30;;;4718:9;4728:1;4718:12;;;;;;;;-1:-1:-1;;;;;;4718:45:72;;;:12;;;;;;;;;;;:45;4774:9;-1:-1:-1;4602:185:72;:::o;3263:125:48:-;3377:2;3366:14;3360:21;;3348:37::o;2133:344::-;2182:12;2196:23;2231:4;-1:-1:-1;;;;;2223:18:48;2242:5;2223:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2223:25:48;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2181:67:48;;;;2257:7;2252:222;;1386:2:49;2275:10:48;:17;:40;2271:199;;2323:58;;-1:-1:-1;;;2323:58:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2271:199;2406:57;;;;;;;;;;;;;;-1:-1:-1;;;2406:57:48;;;2451:10;2406:16;:57::i;:::-;2399:65;;-1:-1:-1;;;2399:65:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2271:199:48;2133:344;;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;;;1679:38;;;;;1721:6;:17;;-1:-1:-1;;;;;1721:17:142;;;;;-1:-1:-1;;;;;;1721:17:142;;;;;;;;;1538:204::o;1201:125:145:-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;5524:275:138:-;-1:-1:-1;;;;;5593:21:138;;5585:65;;;;;-1:-1:-1;;;5585:65:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;5670:12;;:24;;5687:6;5670:24;:16;:24;:::i;:::-;5655:12;:39;-1:-1:-1;;;;;5719:18:138;;:9;:18;;;;;;;;;;;:30;;5742:6;5719:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;5698:18:138;;:9;:18;;;;;;;;;;;:51;;;;5758:37;;;;;;;5698:18;;:9;;5758:37;;;;;;;;;;5524:275;;:::o;1719:569:49:-;1808:13;1827:22;1858:4;1827:36;;1867:22;1898:4;1867:36;;1907:19;1386:2;1959:9;:16;1940:9;:16;:35;:57;1929:69;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;1929:69:49;87:34:-1;135:17;;-1:-1;1929:69:49;-1:-1:-1;1907:91:49;-1:-1:-1;1907:91:49;2044:9;;2061:87;2085:9;:16;2081:1;:20;2061:87;;;2131:9;2141:1;2131:12;;;;;;;;;;;;;;;;2113:10;2124:3;;;;;;2113:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2113:30:49;;;;;;;;-1:-1:-1;2103:3:49;;2061:87;;;-1:-1:-1;1386:2:49;2151:105;2193:9;:16;2189:1;:20;2151:105;;;2239:9;2249:1;2239:12;;;;;;;;;;;;;;;;2221:10;2232:3;;;;;;2221:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2221:30:49;;;;;;;;-1:-1:-1;2211:3:49;;2151:105;;;-1:-1:-1;2273:10:49;;1719:569;-1:-1:-1;;;;;;;1719:569:49:o"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "burn(uint96)": "3b331cf9",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351",
              "isOwner()": "8f32d59b",
              "mint(uint96)": "5f7c7af1",
              "mintWithApproval(address,uint96)": "ef4f0592",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "receiveApproval(address,uint256,address,bytes)": "8f4ffcb1",
              "staking()": "4cf088d9",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {
              "burn(uint96)": {
                "notice": "burns SVR tokens and stakes the respective amount SOV tokens in the user's behalf"
              },
              "constructor": "Create reward token RSOV.",
              "mint(uint96)": {
                "notice": "Hold SOV tokens and mint the respective amount of SVR tokens."
              },
              "mintWithApproval(address,uint96)": {
                "notice": "Hold SOV tokens and mint the respective amount of SVR tokens."
              },
              "receiveApproval(address,uint256,address,bytes)": {
                "notice": "Receives approval from SOV token."
              }
            },
            "notice": "The RSOV token (Sovryn Vesting Reward Token) goal is to allow users to get rewards through the generation of protocol fees. The mint function accepts SOV tokens and mints the same amount of RSOV tokens. When burning RSOV tokens, the user gets 1/14th of the tokens sent back to him and the rest get staked in the user’s behalf with a schedule of 4 weeks cliff and period 1 year duration."
          }
        }
      },
      "contracts/governance/Vesting/TeamVesting.sol": {
        "TeamVesting": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_logic",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_stakingAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_feeSharingProxy",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldImplementation",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newImplementation",
                  "type": "address"
                }
              ],
              "name": "ImplementationChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "cliff",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "duration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "endDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharingProxy",
              "outputs": [
                {
                  "internalType": "contract IFeeSharingProxy",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getImplementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getProxyOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract Staking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "startDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tokenOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Vesting contracts shouldn't be upgradable, use Proxy instead of UpgradableProxy.",
            "methods": {
              "constructor": {
                "params": {
                  "_SOV": "The SOV token address.",
                  "_cliff": "The time interval to the first withdraw in seconds.",
                  "_duration": "The total duration in seconds.",
                  "_logic": "The address of logic contract.",
                  "_tokenOwner": "The owner of the tokens."
                }
              },
              "getImplementation()": {
                "return": "Address of the implementation."
              },
              "getProxyOwner()": {
                "return": "Address of the owner."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Team Vesting Contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060405162000ec938038062000ec98339810160408190526200003491620003ef565b6000620000496001600160e01b036200028416565b600080546001600160a01b0319166001600160a01b03831690811782556040519293509160008051602062000ea9833981519152908290a35062000096336001600160e01b036200028816565b6001600160a01b038616620000c85760405162461bcd60e51b8152600401620000bf90620007dc565b60405180910390fd5b6001600160a01b038516620000f15760405162461bcd60e51b8152600401620000bf90620007ca565b6001600160a01b0384166200011a5760405162461bcd60e51b8152600401620000bf9062000782565b828210156200013d5760405162461bcd60e51b8152600401620000bf9062000770565b6001600160a01b038116620001665760405162461bcd60e51b8152600401620000bf90620007a6565b6200017a876001600160e01b036200031216565b600180546001600160a01b038089166001600160a01b0319928316179092556002805488841692169190911790819055604080516358b925a360e11b81529051919092169163b1724b46916004808301926020929190829003018186803b158015620001e557600080fd5b505afa158015620001fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200022091908101906200049a565b821115620002425760405162461bcd60e51b8152600401620000bf906200075e565b600380546001600160a01b039586166001600160a01b031991821617909155600593909355600691909155600480549190931691161790555062000836915050565b3390565b6001600160a01b038116620002b15760405162461bcd60e51b8152600401620000bf90620007b8565b6001600160a01b038116620002ce6001600160e01b036200039d16565b6001600160a01b031660008051602062000ea983398151915260405160405180910390a36000604051620003029062000751565b6040519081900390209190915550565b6001600160a01b0381166200033b5760405162461bcd60e51b8152600401620000bf9062000794565b6001600160a01b038116620003586001600160e01b03620003be16565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a36000604051620003029062000744565b600080604051620003ae9062000751565b6040519081900390205492915050565b600080604051620003ae9062000744565b8051620003dc8162000811565b92915050565b8051620003dc816200082b565b600080600080600080600060e0888a0312156200040b57600080fd5b6000620004198a8a620003cf565b97505060206200042c8a828b01620003cf565b96505060406200043f8a828b01620003cf565b9550506060620004528a828b01620003cf565b9450506080620004658a828b01620003e2565b93505060a0620004788a828b01620003e2565b92505060c06200048b8a828b01620003cf565b91505092959891949750929550565b600060208284031215620004ad57600080fd5b6000620004bb8484620003e2565b949350505050565b6000620004d2602883620007ee565b7f6475726174696f6e206d6179206e6f742065786365656420746865206d617820815267323ab930ba34b7b760c11b602082015260400192915050565b60006200051e603283620007ee565b7f6475726174696f6e206d75737420626520626967676572207468616e206f722081527132b8bab0b6103a37903a34329031b634b33360711b602082015260400192915050565b600062000574601b83620007ee565b7f746f6b656e206f776e6572206164647265737320696e76616c69640000000000815260200192915050565b6000620005af602983620007ee565b7f50726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6981526864206164647265737360b81b602082015260400192915050565b6000620005fc601283620007f7565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b60006200062c600f83620007f7565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b600062000659601f83620007ee565b7f66656553686172696e6750726f7879206164647265737320696e76616c696400815260200192915050565b600062000694602583620007ee565b7f50726f78793a3a73657450726f78794f776e65723a20696e76616c6964206164815264647265737360d81b602082015260400192915050565b6000620006dd601783620007ee565b7f7374616b696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b600062000718601383620007ee565b7f534f56206164647265737320696e76616c696400000000000000000000000000815260200192915050565b6000620003dc82620005ed565b6000620003dc826200061d565b60208082528101620003dc81620004c3565b60208082528101620003dc816200050f565b60208082528101620003dc8162000565565b60208082528101620003dc81620005a0565b60208082528101620003dc816200064a565b60208082528101620003dc8162000685565b60208082528101620003dc81620006ce565b60208082528101620003dc8162000709565b90815260200190565b919050565b60006001600160a01b038216620003dc565b90565b6200081c81620007fc565b81146200082857600080fd5b50565b6200081c816200080e565b61066380620008466000396000f3fe6080604052600436106100c25760003560e01c80636a26b57f1161007f578063a3e6761011610059578063a3e676101461021c578063aaf10f4214610231578063c24a0f8b14610246578063f2fde38b1461025b576100c2565b80636a26b57f146101d05780638da5cb5b146101e55780638f32d59b146101fa576100c2565b806308dcb360146101225780630b97bc861461014d5780630fb5a6b41461016f57806313d033c0146101845780631ab7710d146101995780634cf088d9146101bb575b60006100cc61027d565b90506001600160a01b0381166100fd5760405162461bcd60e51b81526004016100f4906105b6565b60405180910390fd5b60405136600082376000803683855af43d806000843e81801561011e578184f35b8184fd5b34801561012e57600080fd5b5061013761029c565b6040516101449190610588565b60405180910390f35b34801561015957600080fd5b506101626102ab565b60405161014491906105c6565b34801561017b57600080fd5b506101626102b1565b34801561019057600080fd5b506101626102b7565b3480156101a557600080fd5b506101ae6102bd565b604051610144919061056c565b3480156101c757600080fd5b506101376102cc565b3480156101dc57600080fd5b506101376102db565b3480156101f157600080fd5b506101ae6102ea565b34801561020657600080fd5b5061020f6102f9565b604051610144919061057a565b34801561022857600080fd5b506101ae61031d565b34801561023d57600080fd5b506101ae61027d565b34801561025257600080fd5b5061016261032c565b34801561026757600080fd5b5061027b6102763660046103f8565b610332565b005b60008060405161028c90610556565b6040519081900390205492915050565b6001546001600160a01b031681565b60075481565b60065481565b60055481565b60008060405161028c90610561565b6002546001600160a01b031681565b6004546001600160a01b031681565b6000546001600160a01b031690565b600080546001600160a01b031661030e610362565b6001600160a01b031614905090565b6003546001600160a01b031681565b60085481565b61033a6102f9565b6103565760405162461bcd60e51b81526004016100f4906105a6565b61035f81610366565b50565b3390565b6001600160a01b03811661038c5760405162461bcd60e51b81526004016100f490610596565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b80356103f28161060c565b92915050565b60006020828403121561040a57600080fd5b600061041684846103e7565b949350505050565b610427816105e2565b82525050565b610427816105ed565b61042781610601565b600061044c6026836105d4565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000610494600c836105d4565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006104bc6012836105dd565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b60006104ea600f836105dd565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b60006105156023836105d4565b7f50726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f8152621d5b9960ea1b602082015260400192915050565b610427816105fe565b60006103f2826104af565b60006103f2826104dd565b602081016103f2828461041e565b602081016103f2828461042d565b602081016103f28284610436565b602080825281016103f28161043f565b602080825281016103f281610487565b602080825281016103f281610508565b602081016103f2828461054d565b90815260200190565b919050565b60006103f2826105f2565b151590565b6001600160a01b031690565b90565b60006103f2826105e2565b610615816105e2565b811461035f57600080fdfea365627a7a723158205f3a023cceddfbe8279e90194b5e13b1c4c074b193a0aa2f2e73c84802a5a9286c6578706572696d656e74616cf564736f6c634300051100408be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xEC9 CODESIZE SUB DUP1 PUSH3 0xEC9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x3EF JUMP JUMPDEST PUSH1 0x0 PUSH3 0x49 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x284 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0xEA9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x96 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x288 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH3 0xC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x7DC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH3 0xF1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x7CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x11A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x782 JUMP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x13D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x770 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x166 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x7A6 JUMP JUMPDEST PUSH3 0x17A DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x312 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP1 SLOAD DUP9 DUP5 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x58B925A3 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xB1724B46 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x220 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x49A JUMP JUMPDEST DUP3 GT ISZERO PUSH3 0x242 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x75E JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP2 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE POP PUSH3 0x836 SWAP2 POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x7B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2CE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x39D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0xEA9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x302 SWAP1 PUSH3 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x33B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x794 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x358 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x3BE AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x302 SWAP1 PUSH3 0x744 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH3 0x3AE SWAP1 PUSH3 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH3 0x3AE SWAP1 PUSH3 0x744 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3DC DUP2 PUSH3 0x811 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3DC DUP2 PUSH3 0x82B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x419 DUP11 DUP11 PUSH3 0x3CF JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH3 0x42C DUP11 DUP3 DUP12 ADD PUSH3 0x3CF JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH3 0x43F DUP11 DUP3 DUP12 ADD PUSH3 0x3CF JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH3 0x452 DUP11 DUP3 DUP12 ADD PUSH3 0x3CF JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH3 0x465 DUP11 DUP3 DUP12 ADD PUSH3 0x3E2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH3 0x478 DUP11 DUP3 DUP12 ADD PUSH3 0x3E2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH3 0x48B DUP11 DUP3 DUP12 ADD PUSH3 0x3CF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x4BB DUP5 DUP5 PUSH3 0x3E2 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x4D2 PUSH1 0x28 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x6475726174696F6E206D6179206E6F742065786365656420746865206D617820 DUP2 MSTORE PUSH8 0x323AB930BA34B7B7 PUSH1 0xC1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x51E PUSH1 0x32 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x6475726174696F6E206D75737420626520626967676572207468616E206F7220 DUP2 MSTORE PUSH18 0x32B8BAB0B6103A37903A34329031B634B333 PUSH1 0x71 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x574 PUSH1 0x1B DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x746F6B656E206F776E6572206164647265737320696E76616C69640000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5AF PUSH1 0x29 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x50726F78793A3A736574496D706C656D656E746174696F6E3A20696E76616C69 DUP2 MSTORE PUSH9 0x642061646472657373 PUSH1 0xB8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5FC PUSH1 0x12 DUP4 PUSH3 0x7F7 JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x62C PUSH1 0xF DUP4 PUSH3 0x7F7 JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x659 PUSH1 0x1F DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x66656553686172696E6750726F7879206164647265737320696E76616C696400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x694 PUSH1 0x25 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x50726F78793A3A73657450726F78794F776E65723A20696E76616C6964206164 DUP2 MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x6DD PUSH1 0x17 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x7374616B696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x718 PUSH1 0x13 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x534F56206164647265737320696E76616C696400000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3DC DUP3 PUSH3 0x5ED JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3DC DUP3 PUSH3 0x61D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x4C3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x50F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x565 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x5A0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x64A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x685 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x6CE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x709 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x3DC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0x81C DUP2 PUSH3 0x7FC JUMP JUMPDEST DUP2 EQ PUSH3 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x81C DUP2 PUSH3 0x80E JUMP JUMPDEST PUSH2 0x663 DUP1 PUSH3 0x846 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A26B57F GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA3E67610 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x25B JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x1FA JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x1BB JUMPI JUMPDEST PUSH1 0x0 PUSH2 0xCC PUSH2 0x27D JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4 SWAP1 PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x11E JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x29C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x2AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x5C6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x2B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x2B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x2BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x56C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x2CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x2DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x2EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20F PUSH2 0x2F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x57A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x31D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x27D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x32C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27B PUSH2 0x276 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F8 JUMP JUMPDEST PUSH2 0x332 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x28C SWAP1 PUSH2 0x556 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x28C SWAP1 PUSH2 0x561 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x30E PUSH2 0x362 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x33A PUSH2 0x2F9 JUMP JUMPDEST PUSH2 0x356 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4 SWAP1 PUSH2 0x5A6 JUMP JUMPDEST PUSH2 0x35F DUP2 PUSH2 0x366 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x38C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4 SWAP1 PUSH2 0x596 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3F2 DUP2 PUSH2 0x60C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x416 DUP5 DUP5 PUSH2 0x3E7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x5E2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x5ED JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x601 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44C PUSH1 0x26 DUP4 PUSH2 0x5D4 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x494 PUSH1 0xC DUP4 PUSH2 0x5D4 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BC PUSH1 0x12 DUP4 PUSH2 0x5DD JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EA PUSH1 0xF DUP4 PUSH2 0x5DD JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x515 PUSH1 0x23 DUP4 PUSH2 0x5D4 JUMP JUMPDEST PUSH32 0x50726F78793A3A28293A20696D706C656D656E746174696F6E206E6F7420666F DUP2 MSTORE PUSH3 0x1D5B99 PUSH1 0xEA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x5FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x4AF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x4DD JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x42D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x436 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3F2 DUP2 PUSH2 0x43F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3F2 DUP2 PUSH2 0x487 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3F2 DUP2 PUSH2 0x508 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x54D JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x5F2 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x5E2 JUMP JUMPDEST PUSH2 0x615 DUP2 PUSH2 0x5E2 JUMP JUMPDEST DUP2 EQ PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0x5F GASPRICE MUL EXTCODECOPY 0xCE 0xDD 0xFB 0xE8 0x27 SWAP15 SWAP1 NOT 0x4B 0x5E SGT 0xB1 0xC4 0xC0 PUSH21 0xB193A0AA2F2E73C84802A5A9286C6578706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100408BE0079C531659141344CD 0x1F 0xD0 LOG4 CALLCODE DUP5 NOT 0x49 PUSH32 0x9722A3DAAFE3B4186F6B6457E000000000000000000000000000000000000000 ",
              "sourceMap": "587:1203:73:-;;;946:842;8:9:-1;5:2;;;30:1;27;20:12;5:2;946:842:73;;;;;;;;;;;;;;;;;;;;;677:17:142;697:12;:10;:12::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;-1:-1:-1;;713:18:142;;-1:-1:-1;713:18:142;;:6;;-1:-1:-1;;713:6:142;-1:-1:-1;;;;;740:43:142;713:6;;740:43;-1:-1:-1;1653:26:147;1668:10;1653:14;:26::i;:::-;-1:-1:-1;;;;;1131:18:73;;1123:50;;;;-1:-1:-1;;;1123:50:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1185:29:73;;1177:65;;;;-1:-1:-1;;;1177:65:73;;;;;;;;;-1:-1:-1;;;;;1254:25:73;;1246:65;;;;-1:-1:-1;;;1246:65:73;;;;;;;;;1336:6;1323:9;:19;;1315:82;;;;-1:-1:-1;;;1315:82:73;;;;;;;;;-1:-1:-1;;;;;1409:30:73;;1401:74;;;;-1:-1:-1;;;1401:74:73;;;;;;;;;1480:26;1499:6;1480:18;:26::i;:::-;1510:3;:18;;-1:-1:-1;;;;;1510:18:73;;;-1:-1:-1;;;;;;1510:18:73;;;;;;;1532:7;:34;;;;;;;;;;;;;;;1591:22;;;-1:-1:-1;;;1591:22:73;;;;:7;;;;;:20;;:22;;;;;;;;;;;;;;:7;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;1591:22:73;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1591:22:73;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1591:22:73;;;;;;;;;1578:9;:35;;1570:88;;;;-1:-1:-1;;;1570:88:73;;;;;;;;;1662:10;:24;;-1:-1:-1;;;;;1662:24:73;;;-1:-1:-1;;;;;;1662:24:73;;;;;;;1690:5;:14;;;;1708:8;:20;;;;1732:15;:52;;;;;;;;;;;-1:-1:-1;587:1203:73;;-1:-1:-1;;587:1203:73;780:87:137;853:10;780:87;:::o;2644:249:147:-;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;-1:-1:-1;;;;;2776:45:147;;2797:15;:13;:15::i;:::-;-1:-1:-1;;;;;2776:45:147;-1:-1:-1;;;;;;;;;;;2776:45:147;;-1:-1:-1;;2776:45:147;2826:11;1362:28;;;;;;;;;;;;;;;2867:19;;;;-1:-1:-1;2862:28:147:o;1971:307::-;-1:-1:-1;;;;;2045:29:147;;2037:83;;;;-1:-1:-1;;;2037:83:147;;;;;;;;;-1:-1:-1;;;;;2129:59:147;;2151:19;:17;:19::i;:::-;2129:59;;-1:-1:-1;;;;;2129:59:147;;;;;;;;;;2193:11;1291:31;;;;;;2983:134;3029:14;3049:11;1362:28;;;;;;;;;;;;;;;3100:10;;3085:29;-1:-1:-1;;3085:29:147:o;2386:165::-;2436:23;2465:11;1291:31;;;;;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:134;224:13;;242:33;224:13;242:33;;287:1083;;;;;;;;504:3;492:9;483:7;479:23;475:33;472:2;;;521:1;518;511:12;472:2;556:1;573:64;629:7;609:9;573:64;;;563:74;;535:108;674:2;692:64;748:7;739:6;728:9;724:22;692:64;;;682:74;;653:109;793:2;811:64;867:7;858:6;847:9;843:22;811:64;;;801:74;;772:109;912:2;930:64;986:7;977:6;966:9;962:22;930:64;;;920:74;;891:109;1031:3;1050:64;1106:7;1097:6;1086:9;1082:22;1050:64;;;1040:74;;1010:110;1151:3;1170:64;1226:7;1217:6;1206:9;1202:22;1170:64;;;1160:74;;1130:110;1271:3;1290:64;1346:7;1337:6;1326:9;1322:22;1290:64;;;1280:74;;1250:110;466:904;;;;;;;;;;;1377:263;;1492:2;1480:9;1471:7;1467:23;1463:32;1460:2;;;1508:1;1505;1498:12;1460:2;1543:1;1560:64;1616:7;1596:9;1560:64;;;1550:74;1454:186;-1:-1;;;;1454:186;1648:377;;1808:67;1872:2;1867:3;1808:67;;;1908:34;1888:55;;-1:-1;;;1972:2;1963:12;;1956:32;2016:2;2007:12;;;-1:-1;;1794:231;2034:387;;2194:67;2258:2;2253:3;2194:67;;;2294:34;2274:55;;-1:-1;;;2358:2;2349:12;;2342:42;2412:2;2403:12;;;-1:-1;;2180:241;2430:327;;2590:67;2654:2;2649:3;2590:67;;;2690:29;2670:50;;2748:2;2739:12;;2576:181;-1:-1;;2576:181;2766:378;;2926:67;2990:2;2985:3;2926:67;;;3026:34;3006:55;;-1:-1;;;3090:2;3081:12;;3074:33;3135:2;3126:12;;;-1:-1;;2912:232;3153:354;;3331:85;3413:2;3408:3;3331:85;;;-1:-1;;;3429:41;;3498:2;3489:12;;;-1:-1;;3317:190;3516:351;;3694:85;3776:2;3771:3;3694:85;;;-1:-1;;;3792:38;;3858:2;3849:12;;;-1:-1;;3680:187;3876:331;;4036:67;4100:2;4095:3;4036:67;;;4136:33;4116:54;;4198:2;4189:12;;4022:185;-1:-1;;4022:185;4216:374;;4376:67;4440:2;4435:3;4376:67;;;4476:34;4456:55;;-1:-1;;;4540:2;4531:12;;4524:29;4581:2;4572:12;;;-1:-1;;4362:228;4599:323;;4759:67;4823:2;4818:3;4759:67;;;4859:25;4839:46;;4913:2;4904:12;;4745:177;-1:-1;;4745:177;4931:319;;5091:67;5155:2;5150:3;5091:67;;;-1:-1;;;5171:42;;5241:2;5232:12;;5077:173;-1:-1;;5077:173;5258:372;;5457:148;5601:3;5457:148;;5637:372;;5836:148;5980:3;5836:148;;6016:407;6207:2;6221:47;;;6192:18;;6282:131;6192:18;6282:131;;6430:407;6621:2;6635:47;;;6606:18;;6696:131;6606:18;6696:131;;6844:407;7035:2;7049:47;;;7020:18;;7110:131;7020:18;7110:131;;7258:407;7449:2;7463:47;;;7434:18;;7524:131;7434:18;7524:131;;7672:407;7863:2;7877:47;;;7848:18;;7938:131;7848:18;7938:131;;8086:407;8277:2;8291:47;;;8262:18;;8352:131;8262:18;8352:131;;8500:407;8691:2;8705:47;;;8676:18;;8766:131;8676:18;8766:131;;8914:407;9105:2;9119:47;;;9090:18;;9180:131;9090:18;9180:131;;9329:163;9432:19;;;9481:4;9472:14;;9425:67;9501:145;9637:3;9615:31;-1:-1;9615:31;9654:91;;-1:-1;;;;;9814:54;;9716:24;9797:76;9880:72;9942:5;9925:27;9959:117;10028:24;10046:5;10028:24;;;10021:5;10018:35;10008:2;;10067:1;10064;10057:12;10008:2;10002:74;;10083:117;10152:24;10170:5;10152:24;;10126:74;587:1203:73;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106100c25760003560e01c80636a26b57f1161007f578063a3e6761011610059578063a3e676101461021c578063aaf10f4214610231578063c24a0f8b14610246578063f2fde38b1461025b576100c2565b80636a26b57f146101d05780638da5cb5b146101e55780638f32d59b146101fa576100c2565b806308dcb360146101225780630b97bc861461014d5780630fb5a6b41461016f57806313d033c0146101845780631ab7710d146101995780634cf088d9146101bb575b60006100cc61027d565b90506001600160a01b0381166100fd5760405162461bcd60e51b81526004016100f4906105b6565b60405180910390fd5b60405136600082376000803683855af43d806000843e81801561011e578184f35b8184fd5b34801561012e57600080fd5b5061013761029c565b6040516101449190610588565b60405180910390f35b34801561015957600080fd5b506101626102ab565b60405161014491906105c6565b34801561017b57600080fd5b506101626102b1565b34801561019057600080fd5b506101626102b7565b3480156101a557600080fd5b506101ae6102bd565b604051610144919061056c565b3480156101c757600080fd5b506101376102cc565b3480156101dc57600080fd5b506101376102db565b3480156101f157600080fd5b506101ae6102ea565b34801561020657600080fd5b5061020f6102f9565b604051610144919061057a565b34801561022857600080fd5b506101ae61031d565b34801561023d57600080fd5b506101ae61027d565b34801561025257600080fd5b5061016261032c565b34801561026757600080fd5b5061027b6102763660046103f8565b610332565b005b60008060405161028c90610556565b6040519081900390205492915050565b6001546001600160a01b031681565b60075481565b60065481565b60055481565b60008060405161028c90610561565b6002546001600160a01b031681565b6004546001600160a01b031681565b6000546001600160a01b031690565b600080546001600160a01b031661030e610362565b6001600160a01b031614905090565b6003546001600160a01b031681565b60085481565b61033a6102f9565b6103565760405162461bcd60e51b81526004016100f4906105a6565b61035f81610366565b50565b3390565b6001600160a01b03811661038c5760405162461bcd60e51b81526004016100f490610596565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b80356103f28161060c565b92915050565b60006020828403121561040a57600080fd5b600061041684846103e7565b949350505050565b610427816105e2565b82525050565b610427816105ed565b61042781610601565b600061044c6026836105d4565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000610494600c836105d4565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006104bc6012836105dd565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b60006104ea600f836105dd565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b60006105156023836105d4565b7f50726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f8152621d5b9960ea1b602082015260400192915050565b610427816105fe565b60006103f2826104af565b60006103f2826104dd565b602081016103f2828461041e565b602081016103f2828461042d565b602081016103f28284610436565b602080825281016103f28161043f565b602080825281016103f281610487565b602080825281016103f281610508565b602081016103f2828461054d565b90815260200190565b919050565b60006103f2826105f2565b151590565b6001600160a01b031690565b90565b60006103f2826105e2565b610615816105e2565b811461035f57600080fdfea365627a7a723158205f3a023cceddfbe8279e90194b5e13b1c4c074b193a0aa2f2e73c84802a5a9286c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A26B57F GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA3E67610 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x25B JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x1FA JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x1BB JUMPI JUMPDEST PUSH1 0x0 PUSH2 0xCC PUSH2 0x27D JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4 SWAP1 PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x11E JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x29C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x2AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x5C6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x2B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x2B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x2BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x56C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x2CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x2DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x2EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20F PUSH2 0x2F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x57A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x31D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x27D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x32C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27B PUSH2 0x276 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F8 JUMP JUMPDEST PUSH2 0x332 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x28C SWAP1 PUSH2 0x556 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x28C SWAP1 PUSH2 0x561 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x30E PUSH2 0x362 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x33A PUSH2 0x2F9 JUMP JUMPDEST PUSH2 0x356 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4 SWAP1 PUSH2 0x5A6 JUMP JUMPDEST PUSH2 0x35F DUP2 PUSH2 0x366 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x38C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4 SWAP1 PUSH2 0x596 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3F2 DUP2 PUSH2 0x60C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x416 DUP5 DUP5 PUSH2 0x3E7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x5E2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x5ED JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x601 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44C PUSH1 0x26 DUP4 PUSH2 0x5D4 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x494 PUSH1 0xC DUP4 PUSH2 0x5D4 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BC PUSH1 0x12 DUP4 PUSH2 0x5DD JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EA PUSH1 0xF DUP4 PUSH2 0x5DD JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x515 PUSH1 0x23 DUP4 PUSH2 0x5D4 JUMP JUMPDEST PUSH32 0x50726F78793A3A28293A20696D706C656D656E746174696F6E206E6F7420666F DUP2 MSTORE PUSH3 0x1D5B99 PUSH1 0xEA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x5FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x4AF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x4DD JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x42D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x436 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3F2 DUP2 PUSH2 0x43F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3F2 DUP2 PUSH2 0x487 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3F2 DUP2 PUSH2 0x508 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x54D JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x5F2 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x5E2 JUMP JUMPDEST PUSH2 0x615 DUP2 PUSH2 0x5E2 JUMP JUMPDEST DUP2 EQ PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0x5F GASPRICE MUL EXTCODECOPY 0xCE 0xDD 0xFB 0xE8 0x27 SWAP15 SWAP1 NOT 0x4B 0x5E SGT 0xB1 0xC4 0xC0 PUSH21 0xB193A0AA2F2E73C84802A5A9286C6578706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100400000000000000000000000 ",
              "sourceMap": "587:1203:73:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3338:22:147;3363:19;:17;:19::i;:::-;3338:44;-1:-1:-1;;;;;;3394:28:147;;3386:76;;;;-1:-1:-1;;;3386:76:147;;;;;;;;;;;;;;;;;3502:4;3496:11;3536:12;3533:1;3524:7;3511:38;3627:1;3624;3610:12;3601:7;3585:14;3580:3;3567:62;3645:14;3690:4;3687:1;3678:7;3663:32;3707:6;3718:41;;;;3795:4;3786:7;3779:21;3718:41;3748:4;3739:7;3732:21;506:17:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;506:17:85;;;:::i;:::-;;;;;;;;;;;;;;;;996:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;996:24:85;;;:::i;:::-;;;;;;;;925:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;925:23:85;;;:::i;820:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;820:20:85;;;:::i;2983:134:147:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2983:134:147;;;:::i;:::-;;;;;;;;570:22:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;570:22:85;;;:::i;702:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;702:39:85;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;1134:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;:::-;;;;;;;;641:25:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;641:25:85;;;:::i;2386:165:147:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2386:165:147;;;:::i;1066:22:85:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1066:22:85;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1351:98:142;;;;;;;;:::i;:::-;;2386:165:147;2436:23;2465:11;1291:31;;;;;;;;;;;;;;;2534:10;;2510:38;-1:-1:-1;;2510:38:147:o;506:17:85:-;;;-1:-1:-1;;;;;506:17:85;;:::o;996:24::-;;;;:::o;925:23::-;;;;:::o;820:20::-;;;;:::o;2983:134:147:-;3029:14;3049:11;1362:28;;;;;;570:22:85;;;-1:-1:-1;;;;;570:22:85;;:::o;702:39::-;;;-1:-1:-1;;;;;702:39:85;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;;851:68::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;;1134:83;-1:-1:-1;1134:83:142:o;641:25:85:-;;;-1:-1:-1;;;;;641:25:85;;:::o;1066:22::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;142:241;;246:2;234:9;225:7;221:23;217:32;214:2;;;262:1;259;252:12;214:2;297:1;314:53;359:7;339:9;314:53;;;304:63;208:175;-1:-1;;;;208:175;390:113;473:24;491:5;473:24;;;468:3;461:37;455:48;;;510:104;587:21;602:5;587:21;;621:158;720:53;767:5;720:53;;1139:375;;1299:67;1363:2;1358:3;1299:67;;;1399:34;1379:55;;-1:-1;;;1463:2;1454:12;;1447:30;1505:2;1496:12;;;-1:-1;;1285:229;1523:312;;1683:67;1747:2;1742:3;1683:67;;;-1:-1;;;1763:35;;1826:2;1817:12;;;-1:-1;;1669:166;1844:354;;2022:85;2104:2;2099:3;2022:85;;;-1:-1;;;2120:41;;2189:2;2180:12;;;-1:-1;;2008:190;2207:351;;2385:85;2467:2;2462:3;2385:85;;;-1:-1;;;2483:38;;2549:2;2540:12;;;-1:-1;;2371:187;2567:372;;2727:67;2791:2;2786:3;2727:67;;;2827:34;2807:55;;-1:-1;;;2891:2;2882:12;;2875:27;2930:2;2921:12;;;-1:-1;;2713:226;2947:113;3030:24;3048:5;3030:24;;3067:372;;3266:148;3410:3;3266:148;;3446:372;;3645:148;3789:3;3645:148;;3825:213;3943:2;3928:18;;3957:71;3932:9;4001:6;3957:71;;4045:201;4157:2;4142:18;;4171:65;4146:9;4209:6;4171:65;;4253:245;4387:2;4372:18;;4401:87;4376:9;4461:6;4401:87;;5031:407;5222:2;5236:47;;;5207:18;;5297:131;5207:18;5297:131;;5445:407;5636:2;5650:47;;;5621:18;;5711:131;5621:18;5711:131;;5859:407;6050:2;6064:47;;;6035:18;;6125:131;6035:18;6125:131;;6273:213;6391:2;6376:18;;6405:71;6380:9;6449:6;6405:71;;6494:163;6597:19;;;6646:4;6637:14;;6590:67;6666:145;6802:3;6780:31;-1:-1;6780:31;6819:91;;6881:24;6899:5;6881:24;;6917:85;6983:13;6976:21;;6959:43;7009:121;-1:-1;;;;;7071:54;;7054:76;7137:72;7199:5;7182:27;7216:153;;7311:53;7358:5;7311:53;;8122:117;8191:24;8209:5;8191:24;;;8184:5;8181:35;8171:2;;8230:1;8227;8220:12"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "cliff()": "13d033c0",
              "duration()": "0fb5a6b4",
              "endDate()": "c24a0f8b",
              "feeSharingProxy()": "6a26b57f",
              "getImplementation()": "aaf10f42",
              "getProxyOwner()": "1ab7710d",
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "staking()": "4cf088d9",
              "startDate()": "0b97bc86",
              "tokenOwner()": "a3e67610",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {
              "constructor": "Setup the vesting schedule.",
              "getImplementation()": {
                "notice": "Return address of the implementation."
              },
              "getProxyOwner()": {
                "notice": "Return address of the owner."
              }
            },
            "notice": "A regular vesting contract, but the owner (governance) is able to withdraw earlier without a slashing."
          }
        }
      },
      "contracts/governance/Vesting/TokenSender.sol": {
        "TokenSender": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "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": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "SOVTransferred",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "transferSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_receivers",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "transferSOVusingList",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "TODO: Maybe this token transfer functionality should be included in the SOV token contract, because other contracts are requiring it too: VestingRegistry.sol and VestingRegistry2.sol",
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "transferSOV(address,uint256)": {
                "params": {
                  "_amount": "The amount to be transferred.",
                  "_receiver": "The address of the SOV receiver."
                }
              },
              "transferSOVusingList(address[],uint256[])": {
                "params": {
                  "_amounts": "The amounts to be transferred.",
                  "_receivers": "The addresses of the SOV receivers."
                }
              }
            },
            "title": "SOV Token sender contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516109e83803806109e88339818101604052602081101561003357600080fd5b505160006100486001600160e01b0361011216565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0381166100ed576040805162461bcd60e51b815260206004820152601360248201527f534f56206164647265737320696e76616c696400000000000000000000000000604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055610116565b3390565b6108c3806101256000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b146101445780638f32d59b1461014c578063b963f74d14610154578063c680c0b71461027b578063f2fde38b146102a757610093565b806308dcb360146100985780631785f53c146100bc578063429b62e5146100e4578063704802751461011e575b600080fd5b6100a06102cd565b604080516001600160a01b039092168252519081900360200190f35b6100e2600480360360208110156100d257600080fd5b50356001600160a01b03166102dc565b005b61010a600480360360208110156100fa57600080fd5b50356001600160a01b031661037c565b604080519115158252519081900360200190f35b6100e26004803603602081101561013457600080fd5b50356001600160a01b0316610391565b6100a0610434565b61010a610443565b6100e26004803603604081101561016a57600080fd5b81019060208101813564010000000081111561018557600080fd5b82018360208201111561019757600080fd5b803590602001918460208302840111640100000000831117156101b957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561020957600080fd5b82018360208201111561021b57600080fd5b8035906020019184602083028401116401000000008311171561023d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610467945050505050565b6100e26004803603604081101561029157600080fd5b506001600160a01b03813516906020013561055a565b6100e2600480360360208110156102bd57600080fd5b50356001600160a01b03166105ca565b6001546001600160a01b031681565b6102e4610443565b610324576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260026020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b60026020526000908152604090205460ff1681565b610399610443565b6103d9576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260026020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6000546001600160a01b031690565b600080546001600160a01b031661045861061e565b6001600160a01b031614905090565b61046f610443565b8061048957503360009081526002602052604090205460ff165b6104c9576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b8051825114610511576040805162461bcd60e51b815260206004820152600f60248201526e0c2e4e4c2f2e640dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b60005b82518110156105555761054d83828151811061052c57fe5b602002602001015183838151811061054057fe5b6020026020010151610622565b600101610514565b505050565b610562610443565b8061057c57503360009081526002602052604090205460ff165b6105bc576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6105c68282610622565b5050565b6105d2610443565b610612576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61061b816107c8565b50565b3390565b6001600160a01b03821661067d576040805162461bcd60e51b815260206004820152601860248201527f7265636569766572206164647265737320696e76616c69640000000000000000604482015290519081900360640190fd5b806106c0576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561071657600080fd5b505af115801561072a573d6000803e3d6000fd5b505050506040513d602081101561074057600080fd5b5051610785576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6040805182815290516001600160a01b038416917fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad919081900360200190a25050565b6001600160a01b03811661080d5760405162461bcd60e51b81526004018080602001828103825260268152602001806108696026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820bb8fdc8d78a5c166cec3574b54bc36bda9abc1ee9d41d13de4979c146a68072264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x9E8 CODESIZE SUB DUP1 PUSH2 0x9E8 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 PUSH2 0x48 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x112 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xED JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x534F56206164647265737320696E76616C696400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x116 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x8C3 DUP1 PUSH2 0x125 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0xB963F74D EQ PUSH2 0x154 JUMPI DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2A7 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x11E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2DC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x37C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x391 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x434 JUMP JUMPDEST PUSH2 0x10A PUSH2 0x443 JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x467 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x55A JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5CA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2E4 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x324 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x399 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x3D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x458 PUSH2 0x61E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x46F PUSH2 0x443 JUMP JUMPDEST DUP1 PUSH2 0x489 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x4C9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x511 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xC2E4E4C2F2E640DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x555 JUMPI PUSH2 0x54D DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x52C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x540 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x622 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x514 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x562 PUSH2 0x443 JUMP JUMPDEST DUP1 PUSH2 0x57C JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x5BC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5C6 DUP3 DUP3 PUSH2 0x622 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x5D2 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x612 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x61B DUP2 PUSH2 0x7C8 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x67D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x6C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x716 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x72A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x740 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x785 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1D1C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x80D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x869 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820BB8FDC8D78A5C1 PUSH7 0xCEC3574B54BC36 0xBD 0xA9 0xAB 0xC1 0xEE SWAP14 COINBASE 0xD1 RETURNDATASIZE 0xE4 SWAP8 SWAP13 EQ PUSH11 0x68072264736F6C63430005 GT STOP ORIGIN ",
              "sourceMap": "523:2212:74:-;;;895:106;8:9:-1;5:2;;;30:1;27;20:12;5:2;895:106:74;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;895:106:74;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;-1:-1:-1;;;;;;940:18:74;;932:50;;;;;-1:-1:-1;;;932:50:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;987:3;:10;;-1:-1:-1;;;;;;987:10:74;-1:-1:-1;;;;;987:10:74;;;;;;;;;;523:2212;;780:87:137;853:10;780:87;:::o;523:2212:74:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b146101445780638f32d59b1461014c578063b963f74d14610154578063c680c0b71461027b578063f2fde38b146102a757610093565b806308dcb360146100985780631785f53c146100bc578063429b62e5146100e4578063704802751461011e575b600080fd5b6100a06102cd565b604080516001600160a01b039092168252519081900360200190f35b6100e2600480360360208110156100d257600080fd5b50356001600160a01b03166102dc565b005b61010a600480360360208110156100fa57600080fd5b50356001600160a01b031661037c565b604080519115158252519081900360200190f35b6100e26004803603602081101561013457600080fd5b50356001600160a01b0316610391565b6100a0610434565b61010a610443565b6100e26004803603604081101561016a57600080fd5b81019060208101813564010000000081111561018557600080fd5b82018360208201111561019757600080fd5b803590602001918460208302840111640100000000831117156101b957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561020957600080fd5b82018360208201111561021b57600080fd5b8035906020019184602083028401116401000000008311171561023d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610467945050505050565b6100e26004803603604081101561029157600080fd5b506001600160a01b03813516906020013561055a565b6100e2600480360360208110156102bd57600080fd5b50356001600160a01b03166105ca565b6001546001600160a01b031681565b6102e4610443565b610324576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260026020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b60026020526000908152604090205460ff1681565b610399610443565b6103d9576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260026020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6000546001600160a01b031690565b600080546001600160a01b031661045861061e565b6001600160a01b031614905090565b61046f610443565b8061048957503360009081526002602052604090205460ff165b6104c9576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b8051825114610511576040805162461bcd60e51b815260206004820152600f60248201526e0c2e4e4c2f2e640dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b60005b82518110156105555761054d83828151811061052c57fe5b602002602001015183838151811061054057fe5b6020026020010151610622565b600101610514565b505050565b610562610443565b8061057c57503360009081526002602052604090205460ff165b6105bc576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6105c68282610622565b5050565b6105d2610443565b610612576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61061b816107c8565b50565b3390565b6001600160a01b03821661067d576040805162461bcd60e51b815260206004820152601860248201527f7265636569766572206164647265737320696e76616c69640000000000000000604482015290519081900360640190fd5b806106c0576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561071657600080fd5b505af115801561072a573d6000803e3d6000fd5b505050506040513d602081101561074057600080fd5b5051610785576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6040805182815290516001600160a01b038416917fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad919081900360200190a25050565b6001600160a01b03811661080d5760405162461bcd60e51b81526004018080602001828103825260268152602001806108696026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820bb8fdc8d78a5c166cec3574b54bc36bda9abc1ee9d41d13de4979c146a68072264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0xB963F74D EQ PUSH2 0x154 JUMPI DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2A7 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x11E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x2CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2DC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x37C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x391 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x434 JUMP JUMPDEST PUSH2 0x10A PUSH2 0x443 JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x467 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x55A JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5CA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2E4 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x324 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x399 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x3D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x458 PUSH2 0x61E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x46F PUSH2 0x443 JUMP JUMPDEST DUP1 PUSH2 0x489 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x4C9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x511 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xC2E4E4C2F2E640DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x555 JUMPI PUSH2 0x54D DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x52C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x540 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x622 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x514 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x562 PUSH2 0x443 JUMP JUMPDEST DUP1 PUSH2 0x57C JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x5BC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5C6 DUP3 DUP3 PUSH2 0x622 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x5D2 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x612 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x61B DUP2 PUSH2 0x7C8 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x67D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x6C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x716 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x72A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x740 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x785 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1D1C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x80D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x869 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820BB8FDC8D78A5C1 PUSH7 0xCEC3574B54BC36 0xBD 0xA9 0xAB 0xC1 0xEE SWAP14 COINBASE 0xD1 RETURNDATASIZE 0xE4 SWAP8 SWAP13 EQ PUSH11 0x68072264736F6C63430005 GT STOP ORIGIN ",
              "sourceMap": "523:2212:74:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;523:2212:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;611:18;;;:::i;:::-;;;;-1:-1:-1;;;;;611:18:74;;;;;;;;;;;;;;1564:113;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1564:113:74;-1:-1:-1;;;;;1564:113:74;;:::i;:::-;;684:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;684:38:74;-1:-1:-1;;;;;684:38:74;;:::i;:::-;;;;;;;;;;;;;;;;;;1335:107;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1335:107:74;-1:-1:-1;;;;;1335:107:74;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;1867:282:74:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1867:282:74;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1867:282:74;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1867:282:74;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1867:282:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1867:282:74;;;;;;;;-1:-1:-1;1867:282:74;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;1867:282:74;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1867:282:74;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1867:282:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1867:282:74;;-1:-1:-1;1867:282:74;;-1:-1:-1;;;;;1867:282:74:i;2317:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2317:119:74;;;;;;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;611:18:74:-;;;-1:-1:-1;;;;;611:18:74;;:::o;1564:113::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;1622:14:74;;1639:5;1622:14;;;:6;:14;;;;;;;;;:22;;-1:-1:-1;;1622:22:74;;;1653:20;;;;;;;;;;;;;;;;;1564:113;:::o;684:38::-;;;;;;;;;;;;;;;:::o;1335:107::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;1390:14:74;;;;;;:6;:14;;;;;;;;;:21;;-1:-1:-1;;1390:21:74;1407:4;1390:21;;;1420:18;;;;;;;;;;;;;;;;;1335:107;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1867:282:74:-;1144:9;:7;:9::i;:::-;:31;;;-1:-1:-1;1164:10:74;1157:18;;;;:6;:18;;;;;;;;1144:31;1136:56;;;;;-1:-1:-1;;;1136:56:74;;;;;;;;;;;;-1:-1:-1;;;1136:56:74;;;;;;;;;;;;;;;2008:8;:15;1987:10;:17;:36;1979:64;;;;;-1:-1:-1;;;1979:64:74;;;;;;;;;;;;-1:-1:-1;;;1979:64:74;;;;;;;;;;;;;;;2053:9;2048:98;2072:10;:17;2068:1;:21;2048:98;;;2101:40;2114:10;2125:1;2114:13;;;;;;;;;;;;;;2129:8;2138:1;2129:11;;;;;;;;;;;;;;2101:12;:40::i;:::-;2091:3;;2048:98;;;;1867:282;;:::o;2317:119::-;1144:9;:7;:9::i;:::-;:31;;;-1:-1:-1;1164:10:74;1157:18;;;;:6;:18;;;;;;;;1144:31;1136:56;;;;;-1:-1:-1;;;1136:56:74;;;;;;;;;;;;-1:-1:-1;;;1136:56:74;;;;;;;;;;;;;;;2400:32;2413:9;2424:7;2400:12;:32::i;:::-;2317:119;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;2439:294:74:-;-1:-1:-1;;;;;2518:23:74;;2510:60;;;;;-1:-1:-1;;;2510:60:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;2582:12;2574:39;;;;;-1:-1:-1;;;2574:39:74;;;;;;;;;;;;-1:-1:-1;;;2574:39:74;;;;;;;;;;;;;;;2633:3;;2626:40;;;-1:-1:-1;;;2626:40:74;;-1:-1:-1;;;;;2626:40:74;;;;;;;;;;;;;;;2633:3;;;;;2626:20;;:40;;;;;;;;;;;;;;2633:3;;2626:40;;;5:2:-1;;;;30:1;27;20:12;5:2;2626:40:74;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2626:40:74;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2626:40:74;2618:68;;;;;-1:-1:-1;;;2618:68:74;;;;;;;;;;;;-1:-1:-1;;;2618:68:74;;;;;;;;;;;;;;;2695:34;;;;;;;;-1:-1:-1;;;;;2695:34:74;;;;;;;;;;;;;2439:294;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "removeAdmin(address)": "1785f53c",
              "transferOwnership(address)": "f2fde38b",
              "transferSOV(address,uint256)": "c680c0b7",
              "transferSOVusingList(address[],uint256[])": "b963f74d"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "transferSOV(address,uint256)": {
                "notice": "Transfer SOV tokens to given address."
              },
              "transferSOVusingList(address[],uint256[])": {
                "notice": "Transfer given amounts of SOV to the given addresses."
              }
            },
            "notice": "This contract includes functions to transfer SOV tokens to a recipient or to several recipients in a list. There is an ACL control check by modifier."
          }
        }
      },
      "contracts/governance/Vesting/Vesting.sol": {
        "Vesting": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_logic",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_stakingAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_feeSharingProxy",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldImplementation",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newImplementation",
                  "type": "address"
                }
              ],
              "name": "ImplementationChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "cliff",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "duration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "endDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharingProxy",
              "outputs": [
                {
                  "internalType": "contract IFeeSharingProxy",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getImplementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getProxyOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "governanceWithdrawTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract Staking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "startDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tokenOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "TODO add tests for governanceWithdrawTokens.",
            "methods": {
              "constructor": {
                "params": {
                  "_SOV": "The SOV token address.",
                  "_cliff": "The time interval to the first withdraw in seconds.",
                  "_duration": "The total duration in seconds.",
                  "_logic": "The address of logic contract.",
                  "_tokenOwner": "The owner of the tokens."
                }
              },
              "getImplementation()": {
                "return": "Address of the implementation."
              },
              "getProxyOwner()": {
                "return": "Address of the owner."
              },
              "governanceWithdrawTokens(address)": {
                "details": "We need to add this implementation to prevent proxy call VestingLogic.governanceWithdrawTokens",
                "params": {
                  "receiver": "The receiver of the token withdrawal."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Vesting Contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060405162000f7338038062000f738339810160408190526200003491620003fd565b868686868686866000620000506001600160e01b036200029216565b600080546001600160a01b0319166001600160a01b03831690811782556040519293509160008051602062000f53833981519152908290a3506200009d336001600160e01b036200029616565b6001600160a01b038616620000cf5760405162461bcd60e51b8152600401620000c690620007ea565b60405180910390fd5b6001600160a01b038516620000f85760405162461bcd60e51b8152600401620000c690620007d8565b6001600160a01b038416620001215760405162461bcd60e51b8152600401620000c69062000790565b82821015620001445760405162461bcd60e51b8152600401620000c6906200077e565b6001600160a01b0381166200016d5760405162461bcd60e51b8152600401620000c690620007b4565b62000181876001600160e01b036200032016565b600180546001600160a01b038089166001600160a01b0319928316179092556002805488841692169190911790819055604080516358b925a360e11b81529051919092169163b1724b46916004808301926020929190829003018186803b158015620001ec57600080fd5b505afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002279190810190620004a8565b821115620002495760405162461bcd60e51b8152600401620000c6906200076c565b600380546001600160a01b039586166001600160a01b03199182161790915560059390935560069190915560048054919093169116179055506200084498505050505050505050565b3390565b6001600160a01b038116620002bf5760405162461bcd60e51b8152600401620000c690620007c6565b6001600160a01b038116620002dc6001600160e01b03620003ab16565b6001600160a01b031660008051602062000f5383398151915260405160405180910390a3600060405162000310906200075f565b6040519081900390209190915550565b6001600160a01b038116620003495760405162461bcd60e51b8152600401620000c690620007a2565b6001600160a01b038116620003666001600160e01b03620003cc16565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a36000604051620003109062000752565b600080604051620003bc906200075f565b6040519081900390205492915050565b600080604051620003bc9062000752565b8051620003ea816200081f565b92915050565b8051620003ea8162000839565b600080600080600080600060e0888a0312156200041957600080fd5b6000620004278a8a620003dd565b97505060206200043a8a828b01620003dd565b96505060406200044d8a828b01620003dd565b9550506060620004608a828b01620003dd565b9450506080620004738a828b01620003f0565b93505060a0620004868a828b01620003f0565b92505060c0620004998a828b01620003dd565b91505092959891949750929550565b600060208284031215620004bb57600080fd5b6000620004c98484620003f0565b949350505050565b6000620004e0602883620007fc565b7f6475726174696f6e206d6179206e6f742065786365656420746865206d617820815267323ab930ba34b7b760c11b602082015260400192915050565b60006200052c603283620007fc565b7f6475726174696f6e206d75737420626520626967676572207468616e206f722081527132b8bab0b6103a37903a34329031b634b33360711b602082015260400192915050565b600062000582601b83620007fc565b7f746f6b656e206f776e6572206164647265737320696e76616c69640000000000815260200192915050565b6000620005bd602983620007fc565b7f50726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6981526864206164647265737360b81b602082015260400192915050565b60006200060a60128362000805565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b60006200063a600f8362000805565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b600062000667601f83620007fc565b7f66656553686172696e6750726f7879206164647265737320696e76616c696400815260200192915050565b6000620006a2602583620007fc565b7f50726f78793a3a73657450726f78794f776e65723a20696e76616c6964206164815264647265737360d81b602082015260400192915050565b6000620006eb601783620007fc565b7f7374616b696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b600062000726601383620007fc565b7f534f56206164647265737320696e76616c696400000000000000000000000000815260200192915050565b6000620003ea82620005fb565b6000620003ea826200062b565b60208082528101620003ea81620004d1565b60208082528101620003ea816200051d565b60208082528101620003ea8162000573565b60208082528101620003ea81620005ae565b60208082528101620003ea8162000658565b60208082528101620003ea8162000693565b60208082528101620003ea81620006dc565b60208082528101620003ea8162000717565b90815260200190565b919050565b60006001600160a01b038216620003ea565b90565b6200082a816200080a565b81146200083657600080fd5b50565b6200082a816200081c565b6106ff80620008546000396000f3fe6080604052600436106100dd5760003560e01c806378f24bc61161007f578063a3e6761011610059578063a3e6761014610259578063aaf10f421461026e578063c24a0f8b14610283578063f2fde38b14610298576100dd565b806378f24bc6146102005780638da5cb5b146102225780638f32d59b14610237576100dd565b806313d033c0116100bb57806313d033c01461019f5780631ab7710d146101b45780634cf088d9146101d65780636a26b57f146101eb576100dd565b806308dcb3601461013d5780630b97bc86146101685780630fb5a6b41461018a575b60006100e76102b8565b90506001600160a01b0381166101185760405162461bcd60e51b815260040161010f90610652565b60405180910390fd5b60405136600082376000803683855af43d806000843e818015610139578184f35b8184fd5b34801561014957600080fd5b506101526102d7565b60405161015f9190610614565b60405180910390f35b34801561017457600080fd5b5061017d6102e6565b60405161015f9190610662565b34801561019657600080fd5b5061017d6102ec565b3480156101ab57600080fd5b5061017d6102f2565b3480156101c057600080fd5b506101c96102f8565b60405161015f91906105f8565b3480156101e257600080fd5b50610152610307565b3480156101f757600080fd5b50610152610316565b34801561020c57600080fd5b5061022061021b36600461044b565b610325565b005b34801561022e57600080fd5b506101c961033d565b34801561024357600080fd5b5061024c61034c565b60405161015f9190610606565b34801561026557600080fd5b506101c9610370565b34801561027a57600080fd5b506101c96102b8565b34801561028f57600080fd5b5061017d61037f565b3480156102a457600080fd5b506102206102b336600461044b565b610385565b6000806040516102c7906105e2565b6040519081900390205492915050565b6001546001600160a01b031681565b60075481565b60065481565b60055481565b6000806040516102c7906105ed565b6002546001600160a01b031681565b6004546001600160a01b031681565b60405162461bcd60e51b815260040161010f90610642565b6000546001600160a01b031690565b600080546001600160a01b03166103616103b5565b6001600160a01b031614905090565b6003546001600160a01b031681565b60085481565b61038d61034c565b6103a95760405162461bcd60e51b815260040161010f90610632565b6103b2816103b9565b50565b3390565b6001600160a01b0381166103df5760405162461bcd60e51b815260040161010f90610622565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8035610445816106a8565b92915050565b60006020828403121561045d57600080fd5b6000610469848461043a565b949350505050565b61047a8161067e565b82525050565b61047a81610689565b61047a8161069d565b600061049f602683610670565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006104e7600c83610670565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061050f601283610679565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b600061053d600f83610679565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b6000610568601783610670565b7f6f7065726174696f6e206e6f7420737570706f72746564000000000000000000815260200192915050565b60006105a1602383610670565b7f50726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f8152621d5b9960ea1b602082015260400192915050565b61047a8161069a565b600061044582610502565b600061044582610530565b602081016104458284610471565b602081016104458284610480565b602081016104458284610489565b6020808252810161044581610492565b60208082528101610445816104da565b602080825281016104458161055b565b6020808252810161044581610594565b6020810161044582846105d9565b90815260200190565b919050565b60006104458261068e565b151590565b6001600160a01b031690565b90565b60006104458261067e565b6106b18161067e565b81146103b257600080fdfea365627a7a72315820ddc7b90acac4a373a9b3b30d11a2192a486003c90e7c0ffc9ef83018ee62ec686c6578706572696d656e74616cf564736f6c634300051100408be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xF73 CODESIZE SUB DUP1 PUSH3 0xF73 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x3FD JUMP JUMPDEST DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x0 PUSH3 0x50 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x292 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0xF53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x9D CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x296 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH3 0xCF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7EA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH3 0xF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x121 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x790 JUMP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x144 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x77E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x16D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7B4 JUMP JUMPDEST PUSH3 0x181 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x320 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP1 SLOAD DUP9 DUP5 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x58B925A3 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xB1724B46 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x201 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x227 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x4A8 JUMP JUMPDEST DUP3 GT ISZERO PUSH3 0x249 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x76C JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP2 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE POP PUSH3 0x844 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7C6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2DC PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x3AB AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0xF53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x310 SWAP1 PUSH3 0x75F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x349 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7A2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x366 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x3CC AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x310 SWAP1 PUSH3 0x752 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH3 0x3BC SWAP1 PUSH3 0x75F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH3 0x3BC SWAP1 PUSH3 0x752 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3EA DUP2 PUSH3 0x81F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3EA DUP2 PUSH3 0x839 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x427 DUP11 DUP11 PUSH3 0x3DD JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH3 0x43A DUP11 DUP3 DUP12 ADD PUSH3 0x3DD JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH3 0x44D DUP11 DUP3 DUP12 ADD PUSH3 0x3DD JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH3 0x460 DUP11 DUP3 DUP12 ADD PUSH3 0x3DD JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH3 0x473 DUP11 DUP3 DUP12 ADD PUSH3 0x3F0 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH3 0x486 DUP11 DUP3 DUP12 ADD PUSH3 0x3F0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH3 0x499 DUP11 DUP3 DUP12 ADD PUSH3 0x3DD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x4C9 DUP5 DUP5 PUSH3 0x3F0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x4E0 PUSH1 0x28 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x6475726174696F6E206D6179206E6F742065786365656420746865206D617820 DUP2 MSTORE PUSH8 0x323AB930BA34B7B7 PUSH1 0xC1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x52C PUSH1 0x32 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x6475726174696F6E206D75737420626520626967676572207468616E206F7220 DUP2 MSTORE PUSH18 0x32B8BAB0B6103A37903A34329031B634B333 PUSH1 0x71 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x582 PUSH1 0x1B DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x746F6B656E206F776E6572206164647265737320696E76616C69640000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5BD PUSH1 0x29 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x50726F78793A3A736574496D706C656D656E746174696F6E3A20696E76616C69 DUP2 MSTORE PUSH9 0x642061646472657373 PUSH1 0xB8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x60A PUSH1 0x12 DUP4 PUSH3 0x805 JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x63A PUSH1 0xF DUP4 PUSH3 0x805 JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x667 PUSH1 0x1F DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x66656553686172696E6750726F7879206164647265737320696E76616C696400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x6A2 PUSH1 0x25 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x50726F78793A3A73657450726F78794F776E65723A20696E76616C6964206164 DUP2 MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x6EB PUSH1 0x17 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x7374616B696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x726 PUSH1 0x13 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x534F56206164647265737320696E76616C696400000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3EA DUP3 PUSH3 0x5FB JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3EA DUP3 PUSH3 0x62B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x4D1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x51D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x573 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x5AE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x658 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x693 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x6DC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x717 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x3EA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0x82A DUP2 PUSH3 0x80A JUMP JUMPDEST DUP2 EQ PUSH3 0x836 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x82A DUP2 PUSH3 0x81C JUMP JUMPDEST PUSH2 0x6FF DUP1 PUSH3 0x854 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78F24BC6 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA3E67610 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x26E JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x283 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x298 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x78F24BC6 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x237 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x13D033C0 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x1EB JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x18A JUMPI JUMPDEST PUSH1 0x0 PUSH2 0xE7 PUSH2 0x2B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x118 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x652 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x139 JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x2E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x662 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x2EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x2F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x5F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x307 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x316 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0x44B JUMP JUMPDEST PUSH2 0x325 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x33D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24C PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x606 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x370 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x2B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x37F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x2B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x44B JUMP JUMPDEST PUSH2 0x385 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP1 PUSH2 0x5E2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP1 PUSH2 0x5ED JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x642 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x361 PUSH2 0x3B5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x38D PUSH2 0x34C JUMP JUMPDEST PUSH2 0x3A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x632 JUMP JUMPDEST PUSH2 0x3B2 DUP2 PUSH2 0x3B9 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x622 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x445 DUP2 PUSH2 0x6A8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x469 DUP5 DUP5 PUSH2 0x43A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x67E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x689 JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x69D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49F PUSH1 0x26 DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E7 PUSH1 0xC DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50F PUSH1 0x12 DUP4 PUSH2 0x679 JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53D PUSH1 0xF DUP4 PUSH2 0x679 JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x568 PUSH1 0x17 DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH32 0x6F7065726174696F6E206E6F7420737570706F72746564000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A1 PUSH1 0x23 DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH32 0x50726F78793A3A28293A20696D706C656D656E746174696F6E206E6F7420666F DUP2 MSTORE PUSH3 0x1D5B99 PUSH1 0xEA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x69A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x502 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x530 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x471 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x480 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x489 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x492 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x4DA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x594 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x5D9 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x68E JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x67E JUMP JUMPDEST PUSH2 0x6B1 DUP2 PUSH2 0x67E JUMP JUMPDEST DUP2 EQ PUSH2 0x3B2 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xDD 0xC7 0xB9 EXP 0xCA 0xC4 LOG3 PUSH20 0xA9B3B30D11A2192A486003C90E7C0FFC9EF83018 0xEE PUSH3 0xEC686C PUSH6 0x78706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100408BE0079C531659141344CD 0x1F 0xD0 LOG4 CALLCODE DUP5 NOT 0x49 PUSH32 0x9722A3DAAFE3B4186F6B6457E000000000000000000000000000000000000000 ",
              "sourceMap": "324:892:75:-;;;669:268;8:9:-1;5:2;;;30:1;27;20:12;5:2;669:268:75;;;;;;;;;;;;;;;;;;;;;854:6;862:4;868:15;885:11;898:6;906:9;917:16;677:17:142;697:12;:10;:12::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;-1:-1:-1;;713:18:142;;-1:-1:-1;713:18:142;;:6;;-1:-1:-1;;713:6:142;-1:-1:-1;;;;;740:43:142;713:6;;740:43;-1:-1:-1;1653:26:147;1668:10;1653:14;:26::i;:::-;-1:-1:-1;;;;;1131:18:73;;1123:50;;;;-1:-1:-1;;;1123:50:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1185:29:73;;1177:65;;;;-1:-1:-1;;;1177:65:73;;;;;;;;;-1:-1:-1;;;;;1254:25:73;;1246:65;;;;-1:-1:-1;;;1246:65:73;;;;;;;;;1336:6;1323:9;:19;;1315:82;;;;-1:-1:-1;;;1315:82:73;;;;;;;;;-1:-1:-1;;;;;1409:30:73;;1401:74;;;;-1:-1:-1;;;1401:74:73;;;;;;;;;1480:26;1499:6;1480:18;:26::i;:::-;1510:3;:18;;-1:-1:-1;;;;;1510:18:73;;;-1:-1:-1;;;;;;1510:18:73;;;;;;;1532:7;:34;;;;;;;;;;;;;;;1591:22;;;-1:-1:-1;;;1591:22:73;;;;:7;;;;;:20;;:22;;;;;;;;;;;;;;:7;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;1591:22:73;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1591:22:73;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1591:22:73;;;;;;;;;1578:9;:35;;1570:88;;;;-1:-1:-1;;;1570:88:73;;;;;;;;;1662:10;:24;;-1:-1:-1;;;;;1662:24:73;;;-1:-1:-1;;;;;;1662:24:73;;;;;;;1690:5;:14;;;;1708:8;:20;;;;1732:15;:52;;;;;;;;;;;-1:-1:-1;324:892:75;;-1:-1:-1;;;;;;;;;324:892:75;780:87:137;853:10;780:87;:::o;2644:249:147:-;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;-1:-1:-1;;;;;2776:45:147;;2797:15;:13;:15::i;:::-;-1:-1:-1;;;;;2776:45:147;-1:-1:-1;;;;;;;;;;;2776:45:147;;-1:-1:-1;;2776:45:147;2826:11;1362:28;;;;;;;;;;;;;;;2867:19;;;;-1:-1:-1;2862:28:147:o;1971:307::-;-1:-1:-1;;;;;2045:29:147;;2037:83;;;;-1:-1:-1;;;2037:83:147;;;;;;;;;-1:-1:-1;;;;;2129:59:147;;2151:19;:17;:19::i;:::-;2129:59;;-1:-1:-1;;;;;2129:59:147;;;;;;;;;;2193:11;1291:31;;;;;;2983:134;3029:14;3049:11;1362:28;;;;;;;;;;;;;;;3100:10;;3085:29;-1:-1:-1;;3085:29:147:o;2386:165::-;2436:23;2465:11;1291:31;;;;;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:134;224:13;;242:33;224:13;242:33;;287:1083;;;;;;;;504:3;492:9;483:7;479:23;475:33;472:2;;;521:1;518;511:12;472:2;556:1;573:64;629:7;609:9;573:64;;;563:74;;535:108;674:2;692:64;748:7;739:6;728:9;724:22;692:64;;;682:74;;653:109;793:2;811:64;867:7;858:6;847:9;843:22;811:64;;;801:74;;772:109;912:2;930:64;986:7;977:6;966:9;962:22;930:64;;;920:74;;891:109;1031:3;1050:64;1106:7;1097:6;1086:9;1082:22;1050:64;;;1040:74;;1010:110;1151:3;1170:64;1226:7;1217:6;1206:9;1202:22;1170:64;;;1160:74;;1130:110;1271:3;1290:64;1346:7;1337:6;1326:9;1322:22;1290:64;;;1280:74;;1250:110;466:904;;;;;;;;;;;1377:263;;1492:2;1480:9;1471:7;1467:23;1463:32;1460:2;;;1508:1;1505;1498:12;1460:2;1543:1;1560:64;1616:7;1596:9;1560:64;;;1550:74;1454:186;-1:-1;;;;1454:186;1648:377;;1808:67;1872:2;1867:3;1808:67;;;1908:34;1888:55;;-1:-1;;;1972:2;1963:12;;1956:32;2016:2;2007:12;;;-1:-1;;1794:231;2034:387;;2194:67;2258:2;2253:3;2194:67;;;2294:34;2274:55;;-1:-1;;;2358:2;2349:12;;2342:42;2412:2;2403:12;;;-1:-1;;2180:241;2430:327;;2590:67;2654:2;2649:3;2590:67;;;2690:29;2670:50;;2748:2;2739:12;;2576:181;-1:-1;;2576:181;2766:378;;2926:67;2990:2;2985:3;2926:67;;;3026:34;3006:55;;-1:-1;;;3090:2;3081:12;;3074:33;3135:2;3126:12;;;-1:-1;;2912:232;3153:354;;3331:85;3413:2;3408:3;3331:85;;;-1:-1;;;3429:41;;3498:2;3489:12;;;-1:-1;;3317:190;3516:351;;3694:85;3776:2;3771:3;3694:85;;;-1:-1;;;3792:38;;3858:2;3849:12;;;-1:-1;;3680:187;3876:331;;4036:67;4100:2;4095:3;4036:67;;;4136:33;4116:54;;4198:2;4189:12;;4022:185;-1:-1;;4022:185;4216:374;;4376:67;4440:2;4435:3;4376:67;;;4476:34;4456:55;;-1:-1;;;4540:2;4531:12;;4524:29;4581:2;4572:12;;;-1:-1;;4362:228;4599:323;;4759:67;4823:2;4818:3;4759:67;;;4859:25;4839:46;;4913:2;4904:12;;4745:177;-1:-1;;4745:177;4931:319;;5091:67;5155:2;5150:3;5091:67;;;-1:-1;;;5171:42;;5241:2;5232:12;;5077:173;-1:-1;;5077:173;5258:372;;5457:148;5601:3;5457:148;;5637:372;;5836:148;5980:3;5836:148;;6016:407;6207:2;6221:47;;;6192:18;;6282:131;6192:18;6282:131;;6430:407;6621:2;6635:47;;;6606:18;;6696:131;6606:18;6696:131;;6844:407;7035:2;7049:47;;;7020:18;;7110:131;7020:18;7110:131;;7258:407;7449:2;7463:47;;;7434:18;;7524:131;7434:18;7524:131;;7672:407;7863:2;7877:47;;;7848:18;;7938:131;7848:18;7938:131;;8086:407;8277:2;8291:47;;;8262:18;;8352:131;8262:18;8352:131;;8500:407;8691:2;8705:47;;;8676:18;;8766:131;8676:18;8766:131;;8914:407;9105:2;9119:47;;;9090:18;;9180:131;9090:18;9180:131;;9329:163;9432:19;;;9481:4;9472:14;;9425:67;9501:145;9637:3;9615:31;-1:-1;9615:31;9654:91;;-1:-1;;;;;9814:54;;9716:24;9797:76;9880:72;9942:5;9925:27;9959:117;10028:24;10046:5;10028:24;;;10021:5;10018:35;10008:2;;10067:1;10064;10057:12;10008:2;10002:74;;10083:117;10152:24;10170:5;10152:24;;10126:74;324:892:75;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106100dd5760003560e01c806378f24bc61161007f578063a3e6761011610059578063a3e6761014610259578063aaf10f421461026e578063c24a0f8b14610283578063f2fde38b14610298576100dd565b806378f24bc6146102005780638da5cb5b146102225780638f32d59b14610237576100dd565b806313d033c0116100bb57806313d033c01461019f5780631ab7710d146101b45780634cf088d9146101d65780636a26b57f146101eb576100dd565b806308dcb3601461013d5780630b97bc86146101685780630fb5a6b41461018a575b60006100e76102b8565b90506001600160a01b0381166101185760405162461bcd60e51b815260040161010f90610652565b60405180910390fd5b60405136600082376000803683855af43d806000843e818015610139578184f35b8184fd5b34801561014957600080fd5b506101526102d7565b60405161015f9190610614565b60405180910390f35b34801561017457600080fd5b5061017d6102e6565b60405161015f9190610662565b34801561019657600080fd5b5061017d6102ec565b3480156101ab57600080fd5b5061017d6102f2565b3480156101c057600080fd5b506101c96102f8565b60405161015f91906105f8565b3480156101e257600080fd5b50610152610307565b3480156101f757600080fd5b50610152610316565b34801561020c57600080fd5b5061022061021b36600461044b565b610325565b005b34801561022e57600080fd5b506101c961033d565b34801561024357600080fd5b5061024c61034c565b60405161015f9190610606565b34801561026557600080fd5b506101c9610370565b34801561027a57600080fd5b506101c96102b8565b34801561028f57600080fd5b5061017d61037f565b3480156102a457600080fd5b506102206102b336600461044b565b610385565b6000806040516102c7906105e2565b6040519081900390205492915050565b6001546001600160a01b031681565b60075481565b60065481565b60055481565b6000806040516102c7906105ed565b6002546001600160a01b031681565b6004546001600160a01b031681565b60405162461bcd60e51b815260040161010f90610642565b6000546001600160a01b031690565b600080546001600160a01b03166103616103b5565b6001600160a01b031614905090565b6003546001600160a01b031681565b60085481565b61038d61034c565b6103a95760405162461bcd60e51b815260040161010f90610632565b6103b2816103b9565b50565b3390565b6001600160a01b0381166103df5760405162461bcd60e51b815260040161010f90610622565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8035610445816106a8565b92915050565b60006020828403121561045d57600080fd5b6000610469848461043a565b949350505050565b61047a8161067e565b82525050565b61047a81610689565b61047a8161069d565b600061049f602683610670565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006104e7600c83610670565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061050f601283610679565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b600061053d600f83610679565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b6000610568601783610670565b7f6f7065726174696f6e206e6f7420737570706f72746564000000000000000000815260200192915050565b60006105a1602383610670565b7f50726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f8152621d5b9960ea1b602082015260400192915050565b61047a8161069a565b600061044582610502565b600061044582610530565b602081016104458284610471565b602081016104458284610480565b602081016104458284610489565b6020808252810161044581610492565b60208082528101610445816104da565b602080825281016104458161055b565b6020808252810161044581610594565b6020810161044582846105d9565b90815260200190565b919050565b60006104458261068e565b151590565b6001600160a01b031690565b90565b60006104458261067e565b6106b18161067e565b81146103b257600080fdfea365627a7a72315820ddc7b90acac4a373a9b3b30d11a2192a486003c90e7c0ffc9ef83018ee62ec686c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78F24BC6 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA3E67610 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x26E JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x283 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x298 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x78F24BC6 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x237 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x13D033C0 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x1EB JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x18A JUMPI JUMPDEST PUSH1 0x0 PUSH2 0xE7 PUSH2 0x2B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x118 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x652 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x139 JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x2E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x662 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x2EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x2F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x5F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x307 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x316 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0x44B JUMP JUMPDEST PUSH2 0x325 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x33D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24C PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x606 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x370 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x2B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x37F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x2B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x44B JUMP JUMPDEST PUSH2 0x385 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP1 PUSH2 0x5E2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP1 PUSH2 0x5ED JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x642 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x361 PUSH2 0x3B5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x38D PUSH2 0x34C JUMP JUMPDEST PUSH2 0x3A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x632 JUMP JUMPDEST PUSH2 0x3B2 DUP2 PUSH2 0x3B9 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x622 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x445 DUP2 PUSH2 0x6A8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x469 DUP5 DUP5 PUSH2 0x43A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x67E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x689 JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x69D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49F PUSH1 0x26 DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E7 PUSH1 0xC DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50F PUSH1 0x12 DUP4 PUSH2 0x679 JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53D PUSH1 0xF DUP4 PUSH2 0x679 JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x568 PUSH1 0x17 DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH32 0x6F7065726174696F6E206E6F7420737570706F72746564000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A1 PUSH1 0x23 DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH32 0x50726F78793A3A28293A20696D706C656D656E746174696F6E206E6F7420666F DUP2 MSTORE PUSH3 0x1D5B99 PUSH1 0xEA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x69A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x502 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x530 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x471 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x480 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x489 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x492 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x4DA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x594 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x5D9 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x68E JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x67E JUMP JUMPDEST PUSH2 0x6B1 DUP2 PUSH2 0x67E JUMP JUMPDEST DUP2 EQ PUSH2 0x3B2 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xDD 0xC7 0xB9 EXP 0xCA 0xC4 LOG3 PUSH20 0xA9B3B30D11A2192A486003C90E7C0FFC9EF83018 0xEE PUSH3 0xEC686C PUSH6 0x78706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100400000000000000000000000 ",
              "sourceMap": "324:892:75:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3338:22:147;3363:19;:17;:19::i;:::-;3338:44;-1:-1:-1;;;;;;3394:28:147;;3386:76;;;;-1:-1:-1;;;3386:76:147;;;;;;;;;;;;;;;;;3502:4;3496:11;3536:12;3533:1;3524:7;3511:38;3627:1;3624;3610:12;3601:7;3585:14;3580:3;3567:62;3645:14;3690:4;3687:1;3678:7;3663:32;3707:6;3718:41;;;;3795:4;3786:7;3779:21;3718:41;3748:4;3739:7;3732:21;506:17:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;506:17:85;;;:::i;:::-;;;;;;;;;;;;;;;;996:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;996:24:85;;;:::i;:::-;;;;;;;;925:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;925:23:85;;;:::i;820:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;820:20:85;;;:::i;2983:134:147:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2983:134:147;;;:::i;:::-;;;;;;;;570:22:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;570:22:85;;;:::i;702:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;702:39:85;;;:::i;1114:100:75:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1114:100:75;;;;;;;;:::i;:::-;;851:68:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;1134:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;:::-;;;;;;;;641:25:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;641:25:85;;;:::i;2386:165:147:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2386:165:147;;;:::i;1066:22:85:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1066:22:85;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1351:98:142;;;;;;;;:::i;2386:165:147:-;2436:23;2465:11;1291:31;;;;;;;;;;;;;;;2534:10;;2510:38;-1:-1:-1;;2510:38:147:o;506:17:85:-;;;-1:-1:-1;;;;;506:17:85;;:::o;996:24::-;;;;:::o;925:23::-;;;;:::o;820:20::-;;;;:::o;2983:134:147:-;3029:14;3049:11;1362:28;;;;;;570:22:85;;;-1:-1:-1;;;;;570:22:85;;:::o;702:39::-;;;-1:-1:-1;;;;;702:39:85;;:::o;1114:100:75:-;1177:33;;-1:-1:-1;;;1177:33:75;;;;;;;;851:68:142;889:7;909:6;-1:-1:-1;;;;;909:6:142;;851:68::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;;1134:83;-1:-1:-1;1134:83:142:o;641:25:85:-;;;-1:-1:-1;;;;;641:25:85;;:::o;1066:22::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;142:241;;246:2;234:9;225:7;221:23;217:32;214:2;;;262:1;259;252:12;214:2;297:1;314:53;359:7;339:9;314:53;;;304:63;208:175;-1:-1;;;;208:175;390:113;473:24;491:5;473:24;;;468:3;461:37;455:48;;;510:104;587:21;602:5;587:21;;621:158;720:53;767:5;720:53;;1139:375;;1299:67;1363:2;1358:3;1299:67;;;1399:34;1379:55;;-1:-1;;;1463:2;1454:12;;1447:30;1505:2;1496:12;;;-1:-1;;1285:229;1523:312;;1683:67;1747:2;1742:3;1683:67;;;-1:-1;;;1763:35;;1826:2;1817:12;;;-1:-1;;1669:166;1844:354;;2022:85;2104:2;2099:3;2022:85;;;-1:-1;;;2120:41;;2189:2;2180:12;;;-1:-1;;2008:190;2207:351;;2385:85;2467:2;2462:3;2385:85;;;-1:-1;;;2483:38;;2549:2;2540:12;;;-1:-1;;2371:187;2567:323;;2727:67;2791:2;2786:3;2727:67;;;2827:25;2807:46;;2881:2;2872:12;;2713:177;-1:-1;;2713:177;2899:372;;3059:67;3123:2;3118:3;3059:67;;;3159:34;3139:55;;-1:-1;;;3223:2;3214:12;;3207:27;3262:2;3253:12;;;-1:-1;;3045:226;3279:113;3362:24;3380:5;3362:24;;3399:372;;3598:148;3742:3;3598:148;;3778:372;;3977:148;4121:3;3977:148;;4157:213;4275:2;4260:18;;4289:71;4264:9;4333:6;4289:71;;4377:201;4489:2;4474:18;;4503:65;4478:9;4541:6;4503:65;;4585:245;4719:2;4704:18;;4733:87;4708:9;4793:6;4733:87;;5363:407;5554:2;5568:47;;;5539:18;;5629:131;5539:18;5629:131;;5777:407;5968:2;5982:47;;;5953:18;;6043:131;5953:18;6043:131;;6191:407;6382:2;6396:47;;;6367:18;;6457:131;6367:18;6457:131;;6605:407;6796:2;6810:47;;;6781:18;;6871:131;6781:18;6871:131;;7019:213;7137:2;7122:18;;7151:71;7126:9;7195:6;7151:71;;7240:163;7343:19;;;7392:4;7383:14;;7336:67;7412:145;7548:3;7526:31;-1:-1;7526:31;7565:91;;7627:24;7645:5;7627:24;;7663:85;7729:13;7722:21;;7705:43;7755:121;-1:-1;;;;;7817:54;;7800:76;7883:72;7945:5;7928:27;7962:153;;8057:53;8104:5;8057:53;;8868:117;8937:24;8955:5;8937:24;;;8930:5;8927:35;8917:2;;8976:1;8973;8966:12"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "cliff()": "13d033c0",
              "duration()": "0fb5a6b4",
              "endDate()": "c24a0f8b",
              "feeSharingProxy()": "6a26b57f",
              "getImplementation()": "aaf10f42",
              "getProxyOwner()": "1ab7710d",
              "governanceWithdrawTokens(address)": "78f24bc6",
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "staking()": "4cf088d9",
              "startDate()": "0b97bc86",
              "tokenOwner()": "a3e67610",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {
              "constructor": "Setup the vesting schedule.",
              "getImplementation()": {
                "notice": "Return address of the implementation."
              },
              "getProxyOwner()": {
                "notice": "Return address of the owner."
              }
            },
            "notice": "Team tokens and investor tokens are vested. Therefore, a smart contract needs to be developed to enforce the vesting schedule."
          }
        }
      },
      "contracts/governance/Vesting/VestingCreator.sol": {
        "VestingCreator": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_vestingRegistryProxy",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                }
              ],
              "name": "DataCleared",
              "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": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "SOVTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                }
              ],
              "name": "VestingDataRemoved",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "TWO_WEEKS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_tokenOwners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_cliffs",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_durations",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bool[]",
                  "name": "_governanceControls",
                  "type": "bool[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_vestingCreationTypes",
                  "type": "uint256[]"
                }
              ],
              "name": "addVestings",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "clearVestingDataList",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getMissingBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getUnprocessedAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getUnprocessedCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getVestingAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getVestingPeriod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isEnoughBalance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "processNextVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "processStaking",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "processVestingCreation",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "removeNextVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "transferSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestingDataList",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "governanceControl",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "vestingCreationType",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingRegistryLogic",
              "outputs": [
                {
                  "internalType": "contract VestingRegistryLogic",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "getVestingPeriod()": {
                "details": "will be used for deciding if vesting and staking needs to be processed in a single transaction or separate transactions"
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "processNextVesting()": {
                "details": "Vesting and Staking are merged for calls that fits the gas limit"
              },
              "processStaking()": {
                "details": "it can be the case when vesting creation and tokens staking can't be done in one transaction because of block gas limit"
              },
              "processVestingCreation()": {
                "details": "Separating the Vesting and Staking to tackle Block Gas Limit"
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "removeNextVesting()": {
                "details": "we process inverted listwe should be able to remove incorrect vesting data that can't be processed"
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "transferSOV(address,uint256)": {
                "params": {
                  "_amount": "the amount to be transferred",
                  "_receiver": "the address of the SOV receiver"
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060405162002086380380620020868339818101604052604081101561003557600080fd5b50805160209091015160006100516001600160e01b0361018c16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0382166100f6576040805162461bcd60e51b815260206004820152601360248201527f534f56206164647265737320696e76616c696400000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038116610151576040805162461bcd60e51b815260206004820181905260248201527f56657374696e67207265676973747279206164647265737320696e76616c6964604482015290519081900360640190fd5b60028054610100600160a81b0319166101006001600160a01b0394851602179055600380546001600160a01b03191691909216179055610190565b3390565b611ee680620001a06000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063b9a304d71161007c578063b9a304d7146104bf578063c071e01a146104c7578063c20c8e9b146104cf578063c680c0b7146104d7578063f2fde38b14610503578063ff1764a4146105295761014d565b80638da5cb5b1461048f5780638f32d59b14610497578063934d1fa41461049f5780639e50d49e146104a7578063aca68f7b146104af578063b781efc6146104b75761014d565b806317a7ed081161011557806317a7ed08146101c85780633a032538146103c6578063429b62e5146103ce57806348f7f300146104085780637048027514610461578063740398d9146104875761014d565b80630425a0c81461015257806308dcb3601461015c578063104932cf146101805780631096cb79146101885780631785f53c146101a2575b600080fd5b61015a610531565b005b610164610543565b604080516001600160a01b039092168252519081900360200190f35b610164610557565b610190610566565b60408051918252519081900360200190f35b61015a600480360360208110156101b857600080fd5b50356001600160a01b03166105ff565b61015a600480360360c08110156101de57600080fd5b810190602081018135600160201b8111156101f857600080fd5b82018360208201111561020a57600080fd5b803590602001918460208302840111600160201b8311171561022b57600080fd5b919390929091602081019035600160201b81111561024857600080fd5b82018360208201111561025a57600080fd5b803590602001918460208302840111600160201b8311171561027b57600080fd5b919390929091602081019035600160201b81111561029857600080fd5b8201836020820111156102aa57600080fd5b803590602001918460208302840111600160201b831117156102cb57600080fd5b919390929091602081019035600160201b8111156102e857600080fd5b8201836020820111156102fa57600080fd5b803590602001918460208302840111600160201b8311171561031b57600080fd5b919390929091602081019035600160201b81111561033857600080fd5b82018360208201111561034a57600080fd5b803590602001918460208302840111600160201b8311171561036b57600080fd5b919390929091602081019035600160201b81111561038857600080fd5b82018360208201111561039a57600080fd5b803590602001918460208302840111600160201b831117156103bb57600080fd5b50909250905061069f565b61015a610b57565b6103f4600480360360208110156103e457600080fd5b50356001600160a01b0316610ca1565b604080519115158252519081900360200190f35b6104256004803603602081101561041e57600080fd5b5035610cb6565b6040805196875260208701959095528585019390935290151560608501526001600160a01b0316608084015260a0830152519081900360c00190f35b61015a6004803603602081101561047757600080fd5b50356001600160a01b0316610d08565b61015a610dac565b610164611099565b6103f46110a8565b6101906110cc565b6103f46110d3565b61015a61115f565b61015a6111fa565b6101906112db565b6101906112e1565b610190611381565b61015a600480360360408110156104ed57600080fd5b506001600160a01b0381351690602001356113d3565b61015a6004803603602081101561051957600080fd5b50356001600160a01b031661156c565b6101646115bd565b6105396111fa565b610541610dac565b565b60025461010090046001600160a01b031681565b6003546001600160a01b031681565b600480546000918291600019810190811061057d57fe5b906000526020600020906005020160020154905060006004600160048054905003815481106105a857fe5b6000918252602082206001600590920201015491506105d162127500600263ffffffff6116a616565b905060006105f5826105e9868663ffffffff61170816565b9063ffffffff61174a16565b9450505050505b90565b6106076110a8565b610647576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b6106a76110a8565b806106c157503360009081526001602052604090205460ff165b610701576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b8a8914801561070f57508a87145b801561071a57508a85145b801561072557508a83145b610768576040805162461bcd60e51b815260206004820152600f60248201526e0c2e4e4c2f2e640dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b60005b8b811015610b485788888281811061077f57fe5b9050602002013587878381811061079257fe5b9050602002013510156107d65760405162461bcd60e51b8152600401808060200182810382526032815260200180611dbc6032913960400191505060405180910390fd5b60008b8b838181106107e457fe5b905060200201351161083d576040805162461bcd60e51b815260206004820152601a60248201527f76657374696e6720616d6f756e742063616e6e6f742062652030000000000000604482015290519081900360640190fd5b60008d8d8381811061084b57fe5b905060200201356001600160a01b03166001600160a01b031614156108b7576040805162461bcd60e51b815260206004820152601f60248201527f746f6b656e206f776e65722063616e6e6f742062652030206164647265737300604482015290519081900360640190fd5b6108df621275008a8a848181106108ca57fe5b9050602002013561178c90919063ffffffff16565b1561091b5760405162461bcd60e51b8152600401808060200182810382526029815260200180611e3b6029913960400191505060405180910390fd5b61092e621275008888848181106108ca57fe5b1561096a5760405162461bcd60e51b815260040180806020018281038252602c815260200180611dee602c913960400191505060405180910390fd5b610972611cc2565b6040518060c001604052808d8d8581811061098957fe5b9050602002013581526020018b8b858181106109a157fe5b9050602002013581526020018989858181106109b957fe5b9050602002013581526020018787858181106109d157fe5b905060200201351515151581526020018f8f858181106109ed57fe5b905060200201356001600160a01b03166001600160a01b03168152602001858585818110610a1757fe5b602090810292909201359092526004805460018181018355600092909252845160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191909155918401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c83015560408401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d83015560608401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19e8301805460808701516001600160a01b031661010002610100600160a81b031993151560ff19909216919091179290921691909117905560a0909301517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19f909101555091909101905061076b565b50505050505050505050505050565b610b5f6110a8565b80610b7957503360009081526001602052604090205460ff165b610bb9576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60045460009015610c9e5760048054600091906000198101908110610bda57fe5b906000526020600020906005020190508060030160019054906101000a90046001600160a01b03169150600460016004805490500381548110610c1957fe5b60009182526020822060059091020181815560018101829055600281018290556003810180546001600160a81b0319169055600490810191909155805490610c65906000198301611d03565b506040516001600160a01b0383169033907f1bd738e6a150e98ee102908408b805549d19408e7f59fd75659019a939d4aaa590600090a3505b50565b60016020526000908152604090205460ff1681565b60048181548110610cc357fe5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294509092909160ff82169161010090046001600160a01b03169086565b610d106110a8565b610d50576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b60025460ff16610ded5760405162461bcd60e51b8152600401808060200182810382526025815260200180611e646025913960400191505060405180910390fd5b6004541561108d5760048054600091906000198101908110610e0b57fe5b600091825260208220600360059092020190810154600182015460028301546004840154939550610e4e936001600160a01b036101008504169360ff16906117ce565b90506001600160a01b0381161561108a5760025482546040805163095ea7b360e01b81526001600160a01b03858116600483015260248201939093529051849361010090049092169163095ea7b3916044808201926020929091908290030181600087803b158015610ebf57600080fd5b505af1158015610ed3573d6000803e3d6000fd5b505050506040513d6020811015610ee957600080fd5b5051610f2d576040805162461bcd60e51b815260206004820152600e60248201526d105c1c1c9bdd994819985a5b195960921b604482015290519081900360640190fd5b806001600160a01b0316637547c7a384600001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f7757600080fd5b505af1158015610f8b573d6000803e3d6000fd5b5050506003840154845460408051918252516001600160a01b0361010090930483169350918516917f70e256e9264f1aa014ac7f20b4a16618647d26695e23c7181ee67a22c37e75219181900360200190a36003830154600480546101009092046001600160a01b031691600019810190811061100457fe5b60009182526020822060059091020181815560018101829055600281018290556003810180546001600160a81b0319169055600490810191909155805490611050906000198301611d03565b506040516001600160a01b0382169033907f1bd738e6a150e98ee102908408b805549d19408e7f59fd75659019a939d4aaa590600090a350505b50505b6002805460ff19169055565b6000546001600160a01b031690565b600080546001600160a01b03166110bd611905565b6001600160a01b031614905090565b6212750081565b60006110dd611381565b600254604080516370a0823160e01b815230600482015290516101009092046001600160a01b0316916370a0823191602480820192602092909190829003018186803b15801561112c57600080fd5b505afa158015611140573d6000803e3d6000fd5b505050506040513d602081101561115657600080fd5b50511015905090565b6111676110a8565b8061118157503360009081526001602052604090205460ff165b6111c1576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6111cd60046000611d34565b60405133907feaf82c6a96bfde6c5906456e8c184b99be2c72aabe0c4810e50941d2a4f2bc6890600090a2565b60025460ff161561123c5760405162461bcd60e51b8152600401808060200182810382526029815260200180611e896029913960400191505060405180910390fd5b60045415610541576004805460009190600019810190811061125a57fe5b60009182526020918290206040805160c081018252600590930290910180548352600181015493830193909352600283015490820152600382015460ff8116151560608301526001600160a01b03610100909104166080820152600482015460a08201529091506112ca90611909565b50506002805460ff19166001179055565b60045490565b60006112eb6110d3565b156112f8575060006105fc565b600254604080516370a0823160e01b815230600482015290516101009092046001600160a01b0316916370a0823191602480820192602092909190829003018186803b15801561134757600080fd5b505afa15801561135b573d6000803e3d6000fd5b505050506040513d602081101561137157600080fd5b505161137b611381565b03905090565b6004546000908190815b818110156113cb576113c1600482815481106113a357fe5b6000918252602090912060059091020154849063ffffffff611a6a16565b925060010161138b565b509091505090565b6113db6110a8565b61141b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b8061145e576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905291516101009093049091169163a9059cbb916044808201926020929091908290030181600087803b1580156114ba57600080fd5b505af11580156114ce573d6000803e3d6000fd5b505050506040513d60208110156114e457600080fd5b5051611529576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6040805182815290516001600160a01b038416917fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad919081900360200190a25050565b6115746110a8565b6115b4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610c9e81611ac4565b600480546000916116a19160001981019081106115d657fe5b906000526020600020906005020160030160019054906101000a90046001600160a01b031660046001600480549050038154811061161057fe5b90600052602060002090600502016001015460046001600480549050038154811061163757fe5b90600052602060002090600502016002015460046001600480549050038154811061165e57fe5b60009182526020909120600360059092020101546004805460ff90921691600019810190811061168a57fe5b9060005260206000209060050201600401546117ce565b905090565b6000826116b557506000611702565b828202828482816116c257fe5b04146116ff5760405162461bcd60e51b8152600401808060200182810382526021815260200180611e1a6021913960400191505060405180910390fd5b90505b92915050565b60006116ff83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b64565b60006116ff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bfb565b60006116ff83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250611c60565b6000821561186b576003546040805163c36519d160e01b81526001600160a01b0389811660048301526024820189905260448201889052606482018690529151919092169163c36519d1916084808301926020929190829003018186803b15801561183857600080fd5b505afa15801561184c573d6000803e3d6000fd5b505050506040513d602081101561186257600080fd5b505190506118fc565b6003546040805163016f823b60e11b81526001600160a01b038981166004830152602482018990526044820188905260648201869052915191909216916302df0476916084808301926020929190829003018186803b1580156118cd57600080fd5b505afa1580156118e1573d6000803e3d6000fd5b505050506040513d60208110156118f757600080fd5b505190505b95945050505050565b3390565b60008160600151156119b15760035460808301518351602085015160408087015160a0880151825163862e229d60e01b81526001600160a01b039687166004820152602481019590955260448501939093526064840152608483019190915251919092169163862e229d9160a480830192600092919082900301818387803b15801561199457600080fd5b505af11580156119a8573d6000803e3d6000fd5b50505050611a49565b60035460808301518351602085015160408087015160a08801518251630fa8499360e11b81526001600160a01b0396871660048201526024810195909552604485019390935260648401526084830191909152519190921691631f5093269160a480830192600092919082900301818387803b158015611a3057600080fd5b505af1158015611a44573d6000803e3d6000fd5b505050505b61170282608001518360200151846040015185606001518660a001516117ce565b6000828201838110156116ff576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038116611b095760405162461bcd60e51b8152600401808060200182810382526026815260200180611d966026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115611bf35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611bb8578181015183820152602001611ba0565b50505050905090810190601f168015611be55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183611c4a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611bb8578181015183820152602001611ba0565b506000838581611c5657fe5b0495945050505050565b60008183611caf5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611bb8578181015183820152602001611ba0565b50828481611cb957fe5b06949350505050565b6040518060c0016040528060008152602001600081526020016000815260200160001515815260200160006001600160a01b03168152602001600081525090565b815481835581811115611d2f57600502816005028360005260206000209182019101611d2f9190611d51565b505050565b5080546000825560050290600052602060002090810190610c9e91905b6105fc91905b80821115611d9157600080825560018201819055600282018190556003820180546001600160a81b03191690556004820155600501611d57565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573736475726174696f6e206d75737420626520626967676572207468616e206f7220657175616c20746f2074686520636c6966666475726174696f6e732073686f756c64206861766520696e74657276616c73206f662074776f207765656b73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77636c696666732073686f756c64206861766520696e74657276616c73206f662074776f207765656b7363616e6e6f74207374616b6520776974686f75742076657374696e67206372656174696f6e7374616b696e67206e6f7420646f6e6520666f72207468652070726576696f75732076657374696e67a265627a7a72315820746f6e37bf4d43a4adadf7865648038e310deda77506e93c65509fe258835ea064736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2086 CODESIZE SUB DUP1 PUSH3 0x2086 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 PUSH2 0x51 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x18C AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xF6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x534F56206164647265737320696E76616C696400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x151 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56657374696E67207265676973747279206164647265737320696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND MUL OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0x190 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x1EE6 DUP1 PUSH3 0x1A0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xB9A304D7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xB9A304D7 EQ PUSH2 0x4BF JUMPI DUP1 PUSH4 0xC071E01A EQ PUSH2 0x4C7 JUMPI DUP1 PUSH4 0xC20C8E9B EQ PUSH2 0x4CF JUMPI DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0xFF1764A4 EQ PUSH2 0x529 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x48F JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x934D1FA4 EQ PUSH2 0x49F JUMPI DUP1 PUSH4 0x9E50D49E EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0xACA68F7B EQ PUSH2 0x4AF JUMPI DUP1 PUSH4 0xB781EFC6 EQ PUSH2 0x4B7 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x17A7ED08 GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x17A7ED08 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x3A032538 EQ PUSH2 0x3C6 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x3CE JUMPI DUP1 PUSH4 0x48F7F300 EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x461 JUMPI DUP1 PUSH4 0x740398D9 EQ PUSH2 0x487 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x425A0C8 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x15C JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x1096CB79 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x1A2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x531 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x164 PUSH2 0x543 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x164 PUSH2 0x557 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x566 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5FF JUMP JUMPDEST PUSH2 0x15A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x338 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x69F JUMP JUMPDEST PUSH2 0x15A PUSH2 0xB57 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCA1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x425 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xCB6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD08 JUMP JUMPDEST PUSH2 0x15A PUSH2 0xDAC JUMP JUMPDEST PUSH2 0x164 PUSH2 0x1099 JUMP JUMPDEST PUSH2 0x3F4 PUSH2 0x10A8 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x10CC JUMP JUMPDEST PUSH2 0x3F4 PUSH2 0x10D3 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x115F JUMP JUMPDEST PUSH2 0x15A PUSH2 0x11FA JUMP JUMPDEST PUSH2 0x190 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0x190 PUSH2 0x12E1 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x1381 JUMP JUMPDEST PUSH2 0x15A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x13D3 JUMP JUMPDEST PUSH2 0x15A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x156C JUMP JUMPDEST PUSH2 0x164 PUSH2 0x15BD JUMP JUMPDEST PUSH2 0x539 PUSH2 0x11FA JUMP JUMPDEST PUSH2 0x541 PUSH2 0xDAC JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x57D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x5 MUL ADD PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x4 PUSH1 0x1 PUSH1 0x4 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0x5A8 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x5 SWAP1 SWAP3 MUL ADD ADD SLOAD SWAP2 POP PUSH2 0x5D1 PUSH3 0x127500 PUSH1 0x2 PUSH4 0xFFFFFFFF PUSH2 0x16A6 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5F5 DUP3 PUSH2 0x5E9 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x1708 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x174A AND JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x607 PUSH2 0x10A8 JUMP JUMPDEST PUSH2 0x647 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x6A7 PUSH2 0x10A8 JUMP JUMPDEST DUP1 PUSH2 0x6C1 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x701 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP11 DUP10 EQ DUP1 ISZERO PUSH2 0x70F JUMPI POP DUP11 DUP8 EQ JUMPDEST DUP1 ISZERO PUSH2 0x71A JUMPI POP DUP11 DUP6 EQ JUMPDEST DUP1 ISZERO PUSH2 0x725 JUMPI POP DUP11 DUP4 EQ JUMPDEST PUSH2 0x768 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xC2E4E4C2F2E640DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP12 DUP2 LT ISZERO PUSH2 0xB48 JUMPI DUP9 DUP9 DUP3 DUP2 DUP2 LT PUSH2 0x77F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x792 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD LT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DBC PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x7E4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD GT PUSH2 0x83D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E6720616D6F756E742063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP14 DUP14 DUP4 DUP2 DUP2 LT PUSH2 0x84B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x8B7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F6B656E206F776E65722063616E6E6F742062652030206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x8DF PUSH3 0x127500 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x8CA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x178C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO PUSH2 0x91B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E3B PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x92E PUSH3 0x127500 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x8CA JUMPI INVALID JUMPDEST ISZERO PUSH2 0x96A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DEE PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x972 PUSH2 0x1CC2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP14 DUP14 DUP6 DUP2 DUP2 LT PUSH2 0x989 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP12 DUP6 DUP2 DUP2 LT PUSH2 0x9A1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x9B9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x9D1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP16 DUP6 DUP2 DUP2 LT PUSH2 0x9ED JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0xA17 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD SWAP1 SWAP3 MSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP4 SSTORE PUSH1 0x0 SWAP3 SWAP1 SWAP3 MSTORE DUP5 MLOAD PUSH1 0x5 SWAP1 SWAP2 MUL PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP2 DUP5 ADD MLOAD PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19C DUP4 ADD SSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19D DUP4 ADD SSTORE PUSH1 0x60 DUP5 ADD MLOAD PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19E DUP4 ADD DUP1 SLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP4 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xA0 SWAP1 SWAP4 ADD MLOAD PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19F SWAP1 SWAP2 ADD SSTORE POP SWAP2 SWAP1 SWAP2 ADD SWAP1 POP PUSH2 0x76B JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xB5F PUSH2 0x10A8 JUMP JUMPDEST DUP1 PUSH2 0xB79 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xBB9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 ISZERO PUSH2 0xC9E JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0xBDA JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x5 MUL ADD SWAP1 POP DUP1 PUSH1 0x3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP PUSH1 0x4 PUSH1 0x1 PUSH1 0x4 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0xC19 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x5 SWAP1 SWAP2 MUL ADD DUP2 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x4 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE DUP1 SLOAD SWAP1 PUSH2 0xC65 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x1D03 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 CALLER SWAP1 PUSH32 0x1BD738E6A150E98EE102908408B805549D19408E7F59FD75659019A939D4AAA5 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xCC3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x5 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0xFF DUP3 AND SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP7 JUMP JUMPDEST PUSH2 0xD10 PUSH2 0x10A8 JUMP JUMPDEST PUSH2 0xD50 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND PUSH2 0xDED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E64 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD ISZERO PUSH2 0x108D JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0xE0B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x3 PUSH1 0x5 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x4 DUP5 ADD SLOAD SWAP4 SWAP6 POP PUSH2 0xE4E SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 DUP6 DIV AND SWAP4 PUSH1 0xFF AND SWAP1 PUSH2 0x17CE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x108A JUMPI PUSH1 0x2 SLOAD DUP3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xED3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xF2D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x105C1C1C9BDD994819985A5B1959 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7547C7A3 DUP5 PUSH1 0x0 ADD SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x3 DUP5 ADD SLOAD DUP5 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP4 DIV DUP4 AND SWAP4 POP SWAP2 DUP6 AND SWAP2 PUSH32 0x70E256E9264F1AA014AC7F20B4A16618647D26695E23C7181EE67A22C37E7521 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x4 DUP1 SLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x1004 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x5 SWAP1 SWAP2 MUL ADD DUP2 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x4 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE DUP1 SLOAD SWAP1 PUSH2 0x1050 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x1D03 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 CALLER SWAP1 PUSH32 0x1BD738E6A150E98EE102908408B805549D19408E7F59FD75659019A939D4AAA5 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMPDEST POP POP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10BD PUSH2 0x1905 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10DD PUSH2 0x1381 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x112C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1140 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1167 PUSH2 0x10A8 JUMP JUMPDEST DUP1 PUSH2 0x1181 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x11C1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x11CD PUSH1 0x4 PUSH1 0x0 PUSH2 0x1D34 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xEAF82C6A96BFDE6C5906456E8C184B99BE2C72AABE0C4810E50941D2A4F2BC68 SWAP1 PUSH1 0x0 SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x123C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E89 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD ISZERO PUSH2 0x541 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x125A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x5 SWAP1 SWAP4 MUL SWAP1 SWAP2 ADD DUP1 SLOAD DUP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP2 DIV AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0x12CA SWAP1 PUSH2 0x1909 JUMP JUMPDEST POP POP PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12EB PUSH2 0x10D3 JUMP JUMPDEST ISZERO PUSH2 0x12F8 JUMPI POP PUSH1 0x0 PUSH2 0x5FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1347 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x135B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x137B PUSH2 0x1381 JUMP JUMPDEST SUB SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x13CB JUMPI PUSH2 0x13C1 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x13A3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x5 SWAP1 SWAP2 MUL ADD SLOAD DUP5 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1A6A AND JUMP JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0x138B JUMP JUMPDEST POP SWAP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x13DB PUSH2 0x10A8 JUMP JUMPDEST PUSH2 0x141B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x145E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH2 0x100 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1529 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1D1C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x1574 PUSH2 0x10A8 JUMP JUMPDEST PUSH2 0x15B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC9E DUP2 PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 SWAP2 PUSH2 0x16A1 SWAP2 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x15D6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x5 MUL ADD PUSH1 0x3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 PUSH1 0x1 PUSH1 0x4 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0x1610 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x5 MUL ADD PUSH1 0x1 ADD SLOAD PUSH1 0x4 PUSH1 0x1 PUSH1 0x4 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0x1637 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x5 MUL ADD PUSH1 0x2 ADD SLOAD PUSH1 0x4 PUSH1 0x1 PUSH1 0x4 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0x165E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 PUSH1 0x5 SWAP1 SWAP3 MUL ADD ADD SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x168A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x5 MUL ADD PUSH1 0x4 ADD SLOAD PUSH2 0x17CE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x16B5 JUMPI POP PUSH1 0x0 PUSH2 0x1702 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x16C2 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x16FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E1A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1B64 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1BFB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206D6F64756C6F206279207A65726F0000000000000000 DUP2 MSTORE POP PUSH2 0x1C60 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO PUSH2 0x186B JUMPI PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC36519D1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xC36519D1 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1838 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x184C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x18FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x16F823B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x2DF0476 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x19B1 JUMPI PUSH1 0x3 SLOAD PUSH1 0x80 DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 DUP1 DUP8 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD DUP3 MLOAD PUSH4 0x862E229D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x44 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0x84 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x862E229D SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1A49 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x80 DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 DUP1 DUP8 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD DUP3 MLOAD PUSH4 0xFA84993 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x44 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0x84 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x1F509326 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A44 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1702 DUP3 PUSH1 0x80 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD DUP7 PUSH1 0xA0 ADD MLOAD PUSH2 0x17CE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x16FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1B09 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1D96 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1BF3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1BA0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1BE5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1C4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1BB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1BA0 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1C56 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1CAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1BB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1BA0 JUMP JUMPDEST POP DUP3 DUP5 DUP2 PUSH2 0x1CB9 JUMPI INVALID JUMPDEST MOD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x1D2F JUMPI PUSH1 0x5 MUL DUP2 PUSH1 0x5 MUL DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1D2F SWAP2 SWAP1 PUSH2 0x1D51 JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE PUSH1 0x5 MUL SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0xC9E SWAP2 SWAP1 JUMPDEST PUSH2 0x5FC SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1D91 JUMPI PUSH1 0x0 DUP1 DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP2 SWAP1 SSTORE PUSH1 0x2 DUP3 ADD DUP2 SWAP1 SSTORE PUSH1 0x3 DUP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x4 DUP3 ADD SSTORE PUSH1 0x5 ADD PUSH2 0x1D57 JUMP JUMPDEST POP SWAP1 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573736475726174696F6E206D757374206265 KECCAK256 PUSH3 0x696767 PUSH6 0x72207468616E KECCAK256 PUSH16 0x7220657175616C20746F207468652063 PUSH13 0x6966666475726174696F6E7320 PUSH20 0x686F756C64206861766520696E74657276616C73 KECCAK256 PUSH16 0x662074776F207765656B73536166654D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77636C69666673207368 PUSH16 0x756C64206861766520696E7465727661 PUSH13 0x73206F662074776F207765656B PUSH20 0x63616E6E6F74207374616B6520776974686F7574 KECCAK256 PUSH23 0x657374696E67206372656174696F6E7374616B696E6720 PUSH15 0x6F7420646F6E6520666F7220746865 KECCAK256 PUSH17 0x726576696F75732076657374696E67A265 PUSH3 0x7A7A72 BALANCE PC KECCAK256 PUSH21 0x6F6E37BF4D43A4ADADF7865648038E310DEDA77506 0xE9 EXTCODECOPY PUSH6 0x509FE258835E LOG0 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "209:9045:76:-;;;1228:299;8:9:-1;5:2;;;30:1;27;20:12;5:2;1228:299:76;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1228:299:76;;;;;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;-1:-1:-1;;;;;;1304:18:76;;1296:50;;;;;-1:-1:-1;;;1296:50:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1358:35:76;;1350:80;;;;;-1:-1:-1;;;1350:80:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1435:3;:18;;-1:-1:-1;;;;;;1435:18:76;;-1:-1:-1;;;;;1435:18:76;;;;;;;1457:20;:66;;-1:-1:-1;;;;;;1457:66:76;;;;;;;;209:9045;;780:87:137;853:10;780:87;:::o;209:9045:76:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063b9a304d71161007c578063b9a304d7146104bf578063c071e01a146104c7578063c20c8e9b146104cf578063c680c0b7146104d7578063f2fde38b14610503578063ff1764a4146105295761014d565b80638da5cb5b1461048f5780638f32d59b14610497578063934d1fa41461049f5780639e50d49e146104a7578063aca68f7b146104af578063b781efc6146104b75761014d565b806317a7ed081161011557806317a7ed08146101c85780633a032538146103c6578063429b62e5146103ce57806348f7f300146104085780637048027514610461578063740398d9146104875761014d565b80630425a0c81461015257806308dcb3601461015c578063104932cf146101805780631096cb79146101885780631785f53c146101a2575b600080fd5b61015a610531565b005b610164610543565b604080516001600160a01b039092168252519081900360200190f35b610164610557565b610190610566565b60408051918252519081900360200190f35b61015a600480360360208110156101b857600080fd5b50356001600160a01b03166105ff565b61015a600480360360c08110156101de57600080fd5b810190602081018135600160201b8111156101f857600080fd5b82018360208201111561020a57600080fd5b803590602001918460208302840111600160201b8311171561022b57600080fd5b919390929091602081019035600160201b81111561024857600080fd5b82018360208201111561025a57600080fd5b803590602001918460208302840111600160201b8311171561027b57600080fd5b919390929091602081019035600160201b81111561029857600080fd5b8201836020820111156102aa57600080fd5b803590602001918460208302840111600160201b831117156102cb57600080fd5b919390929091602081019035600160201b8111156102e857600080fd5b8201836020820111156102fa57600080fd5b803590602001918460208302840111600160201b8311171561031b57600080fd5b919390929091602081019035600160201b81111561033857600080fd5b82018360208201111561034a57600080fd5b803590602001918460208302840111600160201b8311171561036b57600080fd5b919390929091602081019035600160201b81111561038857600080fd5b82018360208201111561039a57600080fd5b803590602001918460208302840111600160201b831117156103bb57600080fd5b50909250905061069f565b61015a610b57565b6103f4600480360360208110156103e457600080fd5b50356001600160a01b0316610ca1565b604080519115158252519081900360200190f35b6104256004803603602081101561041e57600080fd5b5035610cb6565b6040805196875260208701959095528585019390935290151560608501526001600160a01b0316608084015260a0830152519081900360c00190f35b61015a6004803603602081101561047757600080fd5b50356001600160a01b0316610d08565b61015a610dac565b610164611099565b6103f46110a8565b6101906110cc565b6103f46110d3565b61015a61115f565b61015a6111fa565b6101906112db565b6101906112e1565b610190611381565b61015a600480360360408110156104ed57600080fd5b506001600160a01b0381351690602001356113d3565b61015a6004803603602081101561051957600080fd5b50356001600160a01b031661156c565b6101646115bd565b6105396111fa565b610541610dac565b565b60025461010090046001600160a01b031681565b6003546001600160a01b031681565b600480546000918291600019810190811061057d57fe5b906000526020600020906005020160020154905060006004600160048054905003815481106105a857fe5b6000918252602082206001600590920201015491506105d162127500600263ffffffff6116a616565b905060006105f5826105e9868663ffffffff61170816565b9063ffffffff61174a16565b9450505050505b90565b6106076110a8565b610647576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b6106a76110a8565b806106c157503360009081526001602052604090205460ff165b610701576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b8a8914801561070f57508a87145b801561071a57508a85145b801561072557508a83145b610768576040805162461bcd60e51b815260206004820152600f60248201526e0c2e4e4c2f2e640dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b60005b8b811015610b485788888281811061077f57fe5b9050602002013587878381811061079257fe5b9050602002013510156107d65760405162461bcd60e51b8152600401808060200182810382526032815260200180611dbc6032913960400191505060405180910390fd5b60008b8b838181106107e457fe5b905060200201351161083d576040805162461bcd60e51b815260206004820152601a60248201527f76657374696e6720616d6f756e742063616e6e6f742062652030000000000000604482015290519081900360640190fd5b60008d8d8381811061084b57fe5b905060200201356001600160a01b03166001600160a01b031614156108b7576040805162461bcd60e51b815260206004820152601f60248201527f746f6b656e206f776e65722063616e6e6f742062652030206164647265737300604482015290519081900360640190fd5b6108df621275008a8a848181106108ca57fe5b9050602002013561178c90919063ffffffff16565b1561091b5760405162461bcd60e51b8152600401808060200182810382526029815260200180611e3b6029913960400191505060405180910390fd5b61092e621275008888848181106108ca57fe5b1561096a5760405162461bcd60e51b815260040180806020018281038252602c815260200180611dee602c913960400191505060405180910390fd5b610972611cc2565b6040518060c001604052808d8d8581811061098957fe5b9050602002013581526020018b8b858181106109a157fe5b9050602002013581526020018989858181106109b957fe5b9050602002013581526020018787858181106109d157fe5b905060200201351515151581526020018f8f858181106109ed57fe5b905060200201356001600160a01b03166001600160a01b03168152602001858585818110610a1757fe5b602090810292909201359092526004805460018181018355600092909252845160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191909155918401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c83015560408401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d83015560608401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19e8301805460808701516001600160a01b031661010002610100600160a81b031993151560ff19909216919091179290921691909117905560a0909301517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19f909101555091909101905061076b565b50505050505050505050505050565b610b5f6110a8565b80610b7957503360009081526001602052604090205460ff165b610bb9576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60045460009015610c9e5760048054600091906000198101908110610bda57fe5b906000526020600020906005020190508060030160019054906101000a90046001600160a01b03169150600460016004805490500381548110610c1957fe5b60009182526020822060059091020181815560018101829055600281018290556003810180546001600160a81b0319169055600490810191909155805490610c65906000198301611d03565b506040516001600160a01b0383169033907f1bd738e6a150e98ee102908408b805549d19408e7f59fd75659019a939d4aaa590600090a3505b50565b60016020526000908152604090205460ff1681565b60048181548110610cc357fe5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294509092909160ff82169161010090046001600160a01b03169086565b610d106110a8565b610d50576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b60025460ff16610ded5760405162461bcd60e51b8152600401808060200182810382526025815260200180611e646025913960400191505060405180910390fd5b6004541561108d5760048054600091906000198101908110610e0b57fe5b600091825260208220600360059092020190810154600182015460028301546004840154939550610e4e936001600160a01b036101008504169360ff16906117ce565b90506001600160a01b0381161561108a5760025482546040805163095ea7b360e01b81526001600160a01b03858116600483015260248201939093529051849361010090049092169163095ea7b3916044808201926020929091908290030181600087803b158015610ebf57600080fd5b505af1158015610ed3573d6000803e3d6000fd5b505050506040513d6020811015610ee957600080fd5b5051610f2d576040805162461bcd60e51b815260206004820152600e60248201526d105c1c1c9bdd994819985a5b195960921b604482015290519081900360640190fd5b806001600160a01b0316637547c7a384600001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f7757600080fd5b505af1158015610f8b573d6000803e3d6000fd5b5050506003840154845460408051918252516001600160a01b0361010090930483169350918516917f70e256e9264f1aa014ac7f20b4a16618647d26695e23c7181ee67a22c37e75219181900360200190a36003830154600480546101009092046001600160a01b031691600019810190811061100457fe5b60009182526020822060059091020181815560018101829055600281018290556003810180546001600160a81b0319169055600490810191909155805490611050906000198301611d03565b506040516001600160a01b0382169033907f1bd738e6a150e98ee102908408b805549d19408e7f59fd75659019a939d4aaa590600090a350505b50505b6002805460ff19169055565b6000546001600160a01b031690565b600080546001600160a01b03166110bd611905565b6001600160a01b031614905090565b6212750081565b60006110dd611381565b600254604080516370a0823160e01b815230600482015290516101009092046001600160a01b0316916370a0823191602480820192602092909190829003018186803b15801561112c57600080fd5b505afa158015611140573d6000803e3d6000fd5b505050506040513d602081101561115657600080fd5b50511015905090565b6111676110a8565b8061118157503360009081526001602052604090205460ff165b6111c1576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6111cd60046000611d34565b60405133907feaf82c6a96bfde6c5906456e8c184b99be2c72aabe0c4810e50941d2a4f2bc6890600090a2565b60025460ff161561123c5760405162461bcd60e51b8152600401808060200182810382526029815260200180611e896029913960400191505060405180910390fd5b60045415610541576004805460009190600019810190811061125a57fe5b60009182526020918290206040805160c081018252600590930290910180548352600181015493830193909352600283015490820152600382015460ff8116151560608301526001600160a01b03610100909104166080820152600482015460a08201529091506112ca90611909565b50506002805460ff19166001179055565b60045490565b60006112eb6110d3565b156112f8575060006105fc565b600254604080516370a0823160e01b815230600482015290516101009092046001600160a01b0316916370a0823191602480820192602092909190829003018186803b15801561134757600080fd5b505afa15801561135b573d6000803e3d6000fd5b505050506040513d602081101561137157600080fd5b505161137b611381565b03905090565b6004546000908190815b818110156113cb576113c1600482815481106113a357fe5b6000918252602090912060059091020154849063ffffffff611a6a16565b925060010161138b565b509091505090565b6113db6110a8565b61141b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b8061145e576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905291516101009093049091169163a9059cbb916044808201926020929091908290030181600087803b1580156114ba57600080fd5b505af11580156114ce573d6000803e3d6000fd5b505050506040513d60208110156114e457600080fd5b5051611529576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6040805182815290516001600160a01b038416917fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad919081900360200190a25050565b6115746110a8565b6115b4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610c9e81611ac4565b600480546000916116a19160001981019081106115d657fe5b906000526020600020906005020160030160019054906101000a90046001600160a01b031660046001600480549050038154811061161057fe5b90600052602060002090600502016001015460046001600480549050038154811061163757fe5b90600052602060002090600502016002015460046001600480549050038154811061165e57fe5b60009182526020909120600360059092020101546004805460ff90921691600019810190811061168a57fe5b9060005260206000209060050201600401546117ce565b905090565b6000826116b557506000611702565b828202828482816116c257fe5b04146116ff5760405162461bcd60e51b8152600401808060200182810382526021815260200180611e1a6021913960400191505060405180910390fd5b90505b92915050565b60006116ff83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b64565b60006116ff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bfb565b60006116ff83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250611c60565b6000821561186b576003546040805163c36519d160e01b81526001600160a01b0389811660048301526024820189905260448201889052606482018690529151919092169163c36519d1916084808301926020929190829003018186803b15801561183857600080fd5b505afa15801561184c573d6000803e3d6000fd5b505050506040513d602081101561186257600080fd5b505190506118fc565b6003546040805163016f823b60e11b81526001600160a01b038981166004830152602482018990526044820188905260648201869052915191909216916302df0476916084808301926020929190829003018186803b1580156118cd57600080fd5b505afa1580156118e1573d6000803e3d6000fd5b505050506040513d60208110156118f757600080fd5b505190505b95945050505050565b3390565b60008160600151156119b15760035460808301518351602085015160408087015160a0880151825163862e229d60e01b81526001600160a01b039687166004820152602481019590955260448501939093526064840152608483019190915251919092169163862e229d9160a480830192600092919082900301818387803b15801561199457600080fd5b505af11580156119a8573d6000803e3d6000fd5b50505050611a49565b60035460808301518351602085015160408087015160a08801518251630fa8499360e11b81526001600160a01b0396871660048201526024810195909552604485019390935260648401526084830191909152519190921691631f5093269160a480830192600092919082900301818387803b158015611a3057600080fd5b505af1158015611a44573d6000803e3d6000fd5b505050505b61170282608001518360200151846040015185606001518660a001516117ce565b6000828201838110156116ff576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038116611b095760405162461bcd60e51b8152600401808060200182810382526026815260200180611d966026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115611bf35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611bb8578181015183820152602001611ba0565b50505050905090810190601f168015611be55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183611c4a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611bb8578181015183820152602001611ba0565b506000838581611c5657fe5b0495945050505050565b60008183611caf5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611bb8578181015183820152602001611ba0565b50828481611cb957fe5b06949350505050565b6040518060c0016040528060008152602001600081526020016000815260200160001515815260200160006001600160a01b03168152602001600081525090565b815481835581811115611d2f57600502816005028360005260206000209182019101611d2f9190611d51565b505050565b5080546000825560050290600052602060002090810190610c9e91905b6105fc91905b80821115611d9157600080825560018201819055600282018190556003820180546001600160a81b03191690556004820155600501611d57565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573736475726174696f6e206d75737420626520626967676572207468616e206f7220657175616c20746f2074686520636c6966666475726174696f6e732073686f756c64206861766520696e74657276616c73206f662074776f207765656b73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77636c696666732073686f756c64206861766520696e74657276616c73206f662074776f207765656b7363616e6e6f74207374616b6520776974686f75742076657374696e67206372656174696f6e7374616b696e67206e6f7420646f6e6520666f72207468652070726576696f75732076657374696e67a265627a7a72315820746f6e37bf4d43a4adadf7865648038e310deda77506e93c65509fe258835ea064736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xB9A304D7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xB9A304D7 EQ PUSH2 0x4BF JUMPI DUP1 PUSH4 0xC071E01A EQ PUSH2 0x4C7 JUMPI DUP1 PUSH4 0xC20C8E9B EQ PUSH2 0x4CF JUMPI DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0xFF1764A4 EQ PUSH2 0x529 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x48F JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x934D1FA4 EQ PUSH2 0x49F JUMPI DUP1 PUSH4 0x9E50D49E EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0xACA68F7B EQ PUSH2 0x4AF JUMPI DUP1 PUSH4 0xB781EFC6 EQ PUSH2 0x4B7 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x17A7ED08 GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x17A7ED08 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x3A032538 EQ PUSH2 0x3C6 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x3CE JUMPI DUP1 PUSH4 0x48F7F300 EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x461 JUMPI DUP1 PUSH4 0x740398D9 EQ PUSH2 0x487 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x425A0C8 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x15C JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x1096CB79 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x1A2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x531 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x164 PUSH2 0x543 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x164 PUSH2 0x557 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x566 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5FF JUMP JUMPDEST PUSH2 0x15A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x338 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x36B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x69F JUMP JUMPDEST PUSH2 0x15A PUSH2 0xB57 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCA1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x425 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xCB6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD08 JUMP JUMPDEST PUSH2 0x15A PUSH2 0xDAC JUMP JUMPDEST PUSH2 0x164 PUSH2 0x1099 JUMP JUMPDEST PUSH2 0x3F4 PUSH2 0x10A8 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x10CC JUMP JUMPDEST PUSH2 0x3F4 PUSH2 0x10D3 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x115F JUMP JUMPDEST PUSH2 0x15A PUSH2 0x11FA JUMP JUMPDEST PUSH2 0x190 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0x190 PUSH2 0x12E1 JUMP JUMPDEST PUSH2 0x190 PUSH2 0x1381 JUMP JUMPDEST PUSH2 0x15A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x13D3 JUMP JUMPDEST PUSH2 0x15A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x156C JUMP JUMPDEST PUSH2 0x164 PUSH2 0x15BD JUMP JUMPDEST PUSH2 0x539 PUSH2 0x11FA JUMP JUMPDEST PUSH2 0x541 PUSH2 0xDAC JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x57D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x5 MUL ADD PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x4 PUSH1 0x1 PUSH1 0x4 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0x5A8 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x5 SWAP1 SWAP3 MUL ADD ADD SLOAD SWAP2 POP PUSH2 0x5D1 PUSH3 0x127500 PUSH1 0x2 PUSH4 0xFFFFFFFF PUSH2 0x16A6 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5F5 DUP3 PUSH2 0x5E9 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x1708 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x174A AND JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x607 PUSH2 0x10A8 JUMP JUMPDEST PUSH2 0x647 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x6A7 PUSH2 0x10A8 JUMP JUMPDEST DUP1 PUSH2 0x6C1 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x701 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP11 DUP10 EQ DUP1 ISZERO PUSH2 0x70F JUMPI POP DUP11 DUP8 EQ JUMPDEST DUP1 ISZERO PUSH2 0x71A JUMPI POP DUP11 DUP6 EQ JUMPDEST DUP1 ISZERO PUSH2 0x725 JUMPI POP DUP11 DUP4 EQ JUMPDEST PUSH2 0x768 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xC2E4E4C2F2E640DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP12 DUP2 LT ISZERO PUSH2 0xB48 JUMPI DUP9 DUP9 DUP3 DUP2 DUP2 LT PUSH2 0x77F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x792 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD LT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DBC PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x7E4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD GT PUSH2 0x83D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E6720616D6F756E742063616E6E6F742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP14 DUP14 DUP4 DUP2 DUP2 LT PUSH2 0x84B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x8B7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746F6B656E206F776E65722063616E6E6F742062652030206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x8DF PUSH3 0x127500 DUP11 DUP11 DUP5 DUP2 DUP2 LT PUSH2 0x8CA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x178C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO PUSH2 0x91B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E3B PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x92E PUSH3 0x127500 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x8CA JUMPI INVALID JUMPDEST ISZERO PUSH2 0x96A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DEE PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x972 PUSH2 0x1CC2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP14 DUP14 DUP6 DUP2 DUP2 LT PUSH2 0x989 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP12 DUP6 DUP2 DUP2 LT PUSH2 0x9A1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x9B9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x9D1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP16 DUP6 DUP2 DUP2 LT PUSH2 0x9ED JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0xA17 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD SWAP1 SWAP3 MSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP4 SSTORE PUSH1 0x0 SWAP3 SWAP1 SWAP3 MSTORE DUP5 MLOAD PUSH1 0x5 SWAP1 SWAP2 MUL PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP2 DUP5 ADD MLOAD PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19C DUP4 ADD SSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19D DUP4 ADD SSTORE PUSH1 0x60 DUP5 ADD MLOAD PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19E DUP4 ADD DUP1 SLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP4 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xA0 SWAP1 SWAP4 ADD MLOAD PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19F SWAP1 SWAP2 ADD SSTORE POP SWAP2 SWAP1 SWAP2 ADD SWAP1 POP PUSH2 0x76B JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xB5F PUSH2 0x10A8 JUMP JUMPDEST DUP1 PUSH2 0xB79 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xBB9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 ISZERO PUSH2 0xC9E JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0xBDA JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x5 MUL ADD SWAP1 POP DUP1 PUSH1 0x3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP PUSH1 0x4 PUSH1 0x1 PUSH1 0x4 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0xC19 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x5 SWAP1 SWAP2 MUL ADD DUP2 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x4 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE DUP1 SLOAD SWAP1 PUSH2 0xC65 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x1D03 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 CALLER SWAP1 PUSH32 0x1BD738E6A150E98EE102908408B805549D19408E7F59FD75659019A939D4AAA5 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xCC3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x5 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0xFF DUP3 AND SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP7 JUMP JUMPDEST PUSH2 0xD10 PUSH2 0x10A8 JUMP JUMPDEST PUSH2 0xD50 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND PUSH2 0xDED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E64 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD ISZERO PUSH2 0x108D JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0xE0B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x3 PUSH1 0x5 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x4 DUP5 ADD SLOAD SWAP4 SWAP6 POP PUSH2 0xE4E SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 DUP6 DIV AND SWAP4 PUSH1 0xFF AND SWAP1 PUSH2 0x17CE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x108A JUMPI PUSH1 0x2 SLOAD DUP3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xED3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xF2D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x105C1C1C9BDD994819985A5B1959 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7547C7A3 DUP5 PUSH1 0x0 ADD SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x3 DUP5 ADD SLOAD DUP5 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP4 DIV DUP4 AND SWAP4 POP SWAP2 DUP6 AND SWAP2 PUSH32 0x70E256E9264F1AA014AC7F20B4A16618647D26695E23C7181EE67A22C37E7521 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x4 DUP1 SLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x1004 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x5 SWAP1 SWAP2 MUL ADD DUP2 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x4 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE DUP1 SLOAD SWAP1 PUSH2 0x1050 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x1D03 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 CALLER SWAP1 PUSH32 0x1BD738E6A150E98EE102908408B805549D19408E7F59FD75659019A939D4AAA5 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMPDEST POP POP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10BD PUSH2 0x1905 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10DD PUSH2 0x1381 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x112C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1140 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1167 PUSH2 0x10A8 JUMP JUMPDEST DUP1 PUSH2 0x1181 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x11C1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x11CD PUSH1 0x4 PUSH1 0x0 PUSH2 0x1D34 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xEAF82C6A96BFDE6C5906456E8C184B99BE2C72AABE0C4810E50941D2A4F2BC68 SWAP1 PUSH1 0x0 SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x123C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E89 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD ISZERO PUSH2 0x541 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x125A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x5 SWAP1 SWAP4 MUL SWAP1 SWAP2 ADD DUP1 SLOAD DUP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP2 DIV AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0x12CA SWAP1 PUSH2 0x1909 JUMP JUMPDEST POP POP PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12EB PUSH2 0x10D3 JUMP JUMPDEST ISZERO PUSH2 0x12F8 JUMPI POP PUSH1 0x0 PUSH2 0x5FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1347 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x135B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x137B PUSH2 0x1381 JUMP JUMPDEST SUB SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x13CB JUMPI PUSH2 0x13C1 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x13A3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x5 SWAP1 SWAP2 MUL ADD SLOAD DUP5 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1A6A AND JUMP JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0x138B JUMP JUMPDEST POP SWAP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x13DB PUSH2 0x10A8 JUMP JUMPDEST PUSH2 0x141B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x145E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH2 0x100 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1529 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1D1C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x1574 PUSH2 0x10A8 JUMP JUMPDEST PUSH2 0x15B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC9E DUP2 PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 SWAP2 PUSH2 0x16A1 SWAP2 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x15D6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x5 MUL ADD PUSH1 0x3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 PUSH1 0x1 PUSH1 0x4 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0x1610 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x5 MUL ADD PUSH1 0x1 ADD SLOAD PUSH1 0x4 PUSH1 0x1 PUSH1 0x4 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0x1637 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x5 MUL ADD PUSH1 0x2 ADD SLOAD PUSH1 0x4 PUSH1 0x1 PUSH1 0x4 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0x165E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 PUSH1 0x5 SWAP1 SWAP3 MUL ADD ADD SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x168A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x5 MUL ADD PUSH1 0x4 ADD SLOAD PUSH2 0x17CE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x16B5 JUMPI POP PUSH1 0x0 PUSH2 0x1702 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x16C2 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x16FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E1A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1B64 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1BFB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206D6F64756C6F206279207A65726F0000000000000000 DUP2 MSTORE POP PUSH2 0x1C60 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO PUSH2 0x186B JUMPI PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xC36519D1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xC36519D1 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1838 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x184C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x18FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x16F823B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x2DF0476 SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x19B1 JUMPI PUSH1 0x3 SLOAD PUSH1 0x80 DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 DUP1 DUP8 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD DUP3 MLOAD PUSH4 0x862E229D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x44 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0x84 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x862E229D SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1A49 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x80 DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 DUP1 DUP8 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD DUP3 MLOAD PUSH4 0xFA84993 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x44 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0x84 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x1F509326 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A44 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1702 DUP3 PUSH1 0x80 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD DUP7 PUSH1 0xA0 ADD MLOAD PUSH2 0x17CE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x16FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1B09 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1D96 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1BF3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1BA0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1BE5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1C4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1BB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1BA0 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1C56 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1CAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1BB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1BA0 JUMP JUMPDEST POP DUP3 DUP5 DUP2 PUSH2 0x1CB9 JUMPI INVALID JUMPDEST MOD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x1D2F JUMPI PUSH1 0x5 MUL DUP2 PUSH1 0x5 MUL DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1D2F SWAP2 SWAP1 PUSH2 0x1D51 JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE PUSH1 0x5 MUL SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0xC9E SWAP2 SWAP1 JUMPDEST PUSH2 0x5FC SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1D91 JUMPI PUSH1 0x0 DUP1 DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP2 SWAP1 SSTORE PUSH1 0x2 DUP3 ADD DUP2 SWAP1 SSTORE PUSH1 0x3 DUP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x4 DUP3 ADD SSTORE PUSH1 0x5 ADD PUSH2 0x1D57 JUMP JUMPDEST POP SWAP1 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573736475726174696F6E206D757374206265 KECCAK256 PUSH3 0x696767 PUSH6 0x72207468616E KECCAK256 PUSH16 0x7220657175616C20746F207468652063 PUSH13 0x6966666475726174696F6E7320 PUSH20 0x686F756C64206861766520696E74657276616C73 KECCAK256 PUSH16 0x662074776F207765656B73536166654D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77636C69666673207368 PUSH16 0x756C64206861766520696E7465727661 PUSH13 0x73206F662074776F207765656B PUSH20 0x63616E6E6F74207374616B6520776974686F7574 KECCAK256 PUSH23 0x657374696E67206372656174696F6E7374616B696E6720 PUSH15 0x6F7420646F6E6520666F7220746865 KECCAK256 PUSH17 0x726576696F75732076657374696E67A265 PUSH3 0x7A7A72 BALANCE PC KECCAK256 PUSH21 0x6F6E37BF4D43A4ADADF7865648038E310DEDA77506 0xE9 EXTCODECOPY PUSH6 0x509FE258835E LOG0 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "209:9045:76:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;209:9045:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3412:91;;;:::i;:::-;;506:17;;;:::i;:::-;;;;-1:-1:-1;;;;;506:17:76;;;;;;;;;;;;;;569:48;;;:::i;6560:320::-;;;:::i;:::-;;;;;;;;;;;;;;;;828:113:164;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;828:113:164;-1:-1:-1;;;;;828:113:164;;:::i;1988:1282:76:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1988:1282:76;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1988:1282:76;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1988:1282:76;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1988:1282:76;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1988:1282:76;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1988:1282:76;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1988:1282:76;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1988:1282:76;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1988:1282:76;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1988:1282:76;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1988:1282:76;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1988:1282:76;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1988:1282:76;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1988:1282:76;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1988:1282:76;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1988:1282:76;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1988:1282:76;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1988:1282:76;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;1988:1282:76;;-1:-1:-1;1988:1282:76;-1:-1:-1;1988:1282:76;:::i;5284:398::-;;;:::i;149:38:164:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;149:38:164;-1:-1:-1;;;;;149:38:164;;:::i;:::-;;;;;;;;;;;;;;;;;;909:36:76;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;909:36:76;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;909:36:76;;;;;;;;;;;;;;;;;;599:107:164;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;599:107:164;-1:-1:-1;;;;;599:107:164;;:::i;4130:971:76:-;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;424:43:76:-;;;:::i;7451:123::-;;;:::i;5767:116::-;;;:::i;3650:304::-;;;:::i;6947:100::-;;;:::i;7646:173::-;;;:::i;7121:244::-;;;:::i;1691:230::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1691:230:76;;;;;;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;5947:404:76:-;;;:::i;3412:91::-;3455:24;:22;:24::i;:::-;3483:16;:14;:16::i;:::-;3412:91::o;506:17::-;;;;;;-1:-1:-1;;;;;506:17:76;;:::o;569:48::-;;;-1:-1:-1;;;;;569:48:76;;:::o;6560:320::-;6643:15;6659:22;;6611:7;;;;-1:-1:-1;;6659:26:76;;;6643:43;;;;;;;;;;;;;;;;:52;;;6624:71;;6699:13;6715:15;6756:1;6731:15;:22;;;;:26;6715:43;;;;;;;;;;;;;;;:49;:43;;;;;:49;;;-1:-1:-1;6788:16:76;460:7;6802:1;6788:16;:13;:16;:::i;:::-;6768:36;-1:-1:-1;6808:14:76;6825:34;6768:36;6825:19;:8;6838:5;6825:19;:12;:19;:::i;:::-;:23;:34;:23;:34;:::i;:::-;6808:51;-1:-1:-1;;;;;6560:320:76;;:::o;828:113:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;886:14:164;;903:5;886:14;;;:6;:14;;;;;;;;;:22;;-1:-1:-1;;886:22:164;;;917:20;;;;;;;;;;;;;;;;;828:113;:::o;1988:1282:76:-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;;-1:-1:-1;;;418:56:164;;;;;;;;;;;;-1:-1:-1;;;418:56:164;;;;;;;;;;;;;;;2264:38:76;;;:83;;;;-1:-1:-1;2310:37:76;;;2264:83;:131;;;;-1:-1:-1;2355:40:76;;;2264:131;:188;;;;-1:-1:-1;2403:49:76;;;2264:188;2252:226;;;;;-1:-1:-1;;;2252:226:76;;;;;;;;;;;;-1:-1:-1;;;2252:226:76;;;;;;;;;;;;;;;2488:9;2483:784;2503:23;;;2483:784;;;2563:7;;2571:1;2563:10;;;;;;;;;;;;;2546;;2557:1;2546:13;;;;;;;;;;;;;:27;;2538:90;;;;-1:-1:-1;;;2538:90:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2655:1;2641:8;;2650:1;2641:11;;;;;;;;;;;;;:15;2633:54;;;;;-1:-1:-1;;;2633:54:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;2727:1;2700:12;;2713:1;2700:15;;;;;;;;;;;;;-1:-1:-1;;;;;2700:15:76;-1:-1:-1;;;;;2700:29:76;;;2692:73;;;;;-1:-1:-1;;;2692:73:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:25;460:7;2778;;2786:1;2778:10;;;;;;;;;;;;;:14;;:25;;;;:::i;:::-;:30;2770:84;;;;-1:-1:-1;;;2770:84:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2867:28;460:7;2867:10;;2878:1;2867:13;;;;;;:28;:33;2859:90;;;;-1:-1:-1;;;2859:90:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2954:30;;:::i;:::-;2991:233;;;;;;;;3018:8;;3027:1;3018:11;;;;;;;;;;;;;2991:233;;;;3043:7;;3051:1;3043:10;;;;;;;;;;;;;2991:233;;;;3070:10;;3081:1;3070:13;;;;;;;;;;;;;2991:233;;;;3109:19;;3129:1;3109:22;;;;;;;;;;;;;;;2991:233;;;;;;3150:12;;3163:1;3150:15;;;;;;;;;;;;;-1:-1:-1;;;;;3150:15:76;-1:-1:-1;;;;;2991:233:76;;;;;3193:21;;3215:1;3193:24;;;;;;;;;;;;;;;;2991:233;;;3229:15;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;3229:33:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3229:33:76;;;-1:-1:-1;;;;;;3229:33:76;;;-1:-1:-1;;3229:33:76;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2528:3:76;;;;;-1:-1:-1;2483:784:76;;;;1988:1282;;;;;;;;;;;;:::o;5284:398::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;;-1:-1:-1;;;418:56:164;;;;;;;;;;;;-1:-1:-1;;;418:56:164;;;;;;;;;;;;;;;5374:15:76;:22;5341:25;;5374:26;5370:309;;5441:15;5457:22;;5407:31;;5441:15;-1:-1:-1;;5457:26:76;;;5441:43;;;;;;;;;;;;;;;;5407:77;;5509:11;:22;;;;;;;;;;-1:-1:-1;;;;;5509:22:76;5489:42;;5543:15;5584:1;5559:15;:22;;;;:26;5543:43;;;;;;;;;;;;;;;;;;;;5536:50;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5536:50:76;;;;;;;;;;;5591:24;;;;;-1:-1:-1;;5591:24:76;;;:::i;:::-;-1:-1:-1;5625:49:76;;-1:-1:-1;;;;;5625:49:76;;;5644:10;;5625:49;;;;;5370:309;;478:1:164;5284:398:76:o;149:38:164:-;;;;;;;;;;;;;;;:::o;909:36:76:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;909:36:76;;;;;;;;;;;-1:-1:-1;;;;;909:36:76;;;:::o;599:107:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;654:14:164;;;;;;671:4;654:14;;;;;;;;;:21;;-1:-1:-1;;654:21:164;;;;;;;684:18;;;;;;;;;;;;;;;;;599:107;:::o;4130:971:76:-;4175:14;;;;4167:64;;;;-1:-1:-1;;;4167:64:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4239:15;:22;:26;4235:837;;4306:15;4322:22;;4272:31;;4306:15;-1:-1:-1;;4322:26:76;;;4306:43;;;;;;;;;;;;;4401:22;4306:43;;;;;4401:22;;;;;4430:17;;;4454:20;;;;4517:31;;;;4306:43;;-1:-1:-1;4383:171:76;;-1:-1:-1;;;;;4401:22:76;;;;;4481:29;;;4383:11;:171::i;:::-;4354:200;-1:-1:-1;;;;;;4563:28:76;;;4559:509;;4664:3;;4694:18;;4664:49;;;-1:-1:-1;;;4664:49:76;;-1:-1:-1;;;;;4664:49:76;;;;;;;;;;;;;;;;;;:3;;;;;;;:11;;:49;;;;;;;;;;;;;;;-1:-1:-1;4664:3:76;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;4664:49:76;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4664:49:76;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4664:49:76;4656:76;;;;;-1:-1:-1;;;4656:76:76;;;;;;;;;;;;-1:-1:-1;;;4656:76:76;;;;;;;;;;;;;;;4738:7;-1:-1:-1;;;;;4738:19:76;;4758:11;:18;;;4738:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4738:39:76;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;4817:22:76;;;;4841:18;;4788:72;;;;;;;-1:-1:-1;;;;;4817:22:76;;;;;;;-1:-1:-1;4788:72:76;;;;;;;;;;;;;4894:22;;;;4929:15;4945:22;;4894;;;;-1:-1:-1;;;;;4894:22:76;;-1:-1:-1;;4945:26:76;;;4929:43;;;;;;;;;;;;;;;;;;4922:50;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4922:50:76;;;;;;;;;;;4978:24;;;;;-1:-1:-1;;4978:24:76;;;:::i;:::-;-1:-1:-1;5013:49:76;;-1:-1:-1;;;;;5013:49:76;;;5032:10;;5013:49;;;;;4559:509;;;4235:837;;;5075:14;:22;;-1:-1:-1;;5075:22:76;;;4130:971::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;424:43:76:-;460:7;424:43;:::o;7451:123::-;7499:4;7548:22;:20;:22::i;:::-;7516:3;;:28;;;-1:-1:-1;;;7516:28:76;;7538:4;7516:28;;;;;;:3;;;;-1:-1:-1;;;;;7516:3:76;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;7516:28:76;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7516:28:76;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7516:28:76;:54;;;-1:-1:-1;7451:123:76;:::o;5767:116::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;;-1:-1:-1;;;418:56:164;;;;;;;;;;;;-1:-1:-1;;;418:56:164;;;;;;;;;;;;;;;5825:22:76;5832:15;;5825:22;:::i;:::-;5856:23;;5868:10;;5856:23;;;;;5767:116::o;3650:304::-;3704:14;;;;3703:15;3695:69;;;;-1:-1:-1;;;3695:69:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3772:15;:22;:26;3768:183;;3839:15;3855:22;;3805:31;;3839:15;-1:-1:-1;;3855:26:76;;;3839:43;;;;;;;;;;;;;;;3887:33;;;;;;;;3839:43;;;;;;;3887:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3887:33:76;;;;;;;;;;;;;;;;;3839:43;;-1:-1:-1;3887:33:76;;:20;:33::i;:::-;-1:-1:-1;;3925:14:76;:21;;-1:-1:-1;;3925:21:76;3942:4;3925:21;;;3650:304::o;6947:100::-;7021:15;:22;6947:100;:::o;7646:173::-;7698:7;7715:17;:15;:17::i;:::-;7711:41;;;-1:-1:-1;7746:1:76;7739:8;;7711:41;7787:3;;:28;;;-1:-1:-1;;;7787:28:76;;7809:4;7787:28;;;;;;:3;;;;-1:-1:-1;;;;;7787:3:76;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;7787:28:76;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7787:28:76;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7787:28:76;7762:22;:20;:22::i;:::-;:53;7755:60;;7646:173;:::o;7121:244::-;7226:15;:22;7174:7;;;;;7252:93;7276:6;7272:1;:10;7252:93;;;7303:37;7314:15;7330:1;7314:18;;;;;;;;;;;;;;;;;;;;;:25;7303:6;;:37;:10;:37;:::i;:::-;7294:46;-1:-1:-1;7284:3:76;;7252:93;;;-1:-1:-1;7355:6:76;;-1:-1:-1;;7121:244:76;:::o;1691:230::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1779:12:76;1771:39;;;;;-1:-1:-1;;;1771:39:76;;;;;;;;;;;;-1:-1:-1;;;1771:39:76;;;;;;;;;;;;;;;1822:3;;:32;;;-1:-1:-1;;;1822:32:76;;-1:-1:-1;;;;;1822:32:76;;;;;;;;;;;;;;;:3;;;;;;;;:12;;:32;;;;;;;;;;;;;;;-1:-1:-1;1822:3:76;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;1822:32:76;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1822:32:76;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1822:32:76;1814:60;;;;;-1:-1:-1;;;1814:60:76;;;;;;;;;;;;-1:-1:-1;;;1814:60:76;;;;;;;;;;;;;;;1883:34;;;;;;;;-1:-1:-1;;;;;1883:34:76;;;;;;;;;;;;;1691:230;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;5947:404:76:-;6039:15;6055:22;;5999:7;;6022:325;;-1:-1:-1;;6055:26:76;;;6039:43;;;;;;;;;;;;;;;;:54;;;;;;;;;;-1:-1:-1;;;;;6039:54:76;6099:15;6140:1;6115:15;:22;;;;:26;6099:43;;;;;;;;;;;;;;;;;;:49;;;6154:15;6195:1;6170:15;:22;;;;:26;6154:43;;;;;;;;;;;;;;;;;;:52;;;6212:15;6253:1;6228:15;:22;;;;:26;6212:43;;;;;;;;;;;;;;;;:61;:43;;;;;:61;;6279:15;6295:22;;6212:61;;;;;-1:-1:-1;;6295:26:76;;;6279:43;;;;;;;;;;;;;;;;:63;;;6022:11;:325::i;:::-;6012:335;;5947:404;:::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2393:1;-1:-1:-1;1999:399:145;;;;;:::o;1201:125::-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;2817:121::-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;4738:119::-;4796:7;4816:37;4820:1;4823;4816:37;;;;;;;;;;;;;;;;;:3;:37::i;8791:461:76:-;8959:22;8991:18;8987:262;;;9033:20;;:89;;;-1:-1:-1;;;9033:89:76;;-1:-1:-1;;;;;9033:89:76;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;;;:35;;:89;;;;;;;;;;;;;;:20;:89;;;5:2:-1;;;;30:1;27;20:12;5:2;9033:89:76;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9033:89:76;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9033:89:76;;-1:-1:-1;8987:262:76;;;9155:20;;:89;;;-1:-1:-1;;;9155:89:76;;-1:-1:-1;;;;;9155:89:76;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;;;:35;;:89;;;;;;;;;;;;;;:20;:89;;;5:2:-1;;;;30:1;27;20:12;5:2;9155:89:76;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9155:89:76;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9155:89:76;;-1:-1:-1;8987:262:76;8791:461;;;;;;;:::o;780:87:137:-;853:10;780:87;:::o;7972:706:76:-;8052:15;8077:11;:29;;;8073:423;;;8113:20;;8157:22;;;;8185:18;;8209:17;;;;8232:20;;;;;8258:31;;;;8113:181;;-1:-1:-1;;;8113:181:76;;-1:-1:-1;;;;;8113:181:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;;;:38;;:181;;;;;:20;;:181;;;;;;;:20;;:181;;;5:2:-1;;;;30:1;27;20:12;5:2;8113:181:76;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8113:181:76;;;;8073:423;;;8310:20;;8354:22;;;;8382:18;;8406:17;;;;8429:20;;;;;8455:31;;;;8310:181;;-1:-1:-1;;;8310:181:76;;-1:-1:-1;;;;;8310:181:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;;;:38;;:181;;;;;:20;;:181;;;;;;;:20;;:181;;;5:2:-1;;;;30:1;27;20:12;5:2;8310:181:76;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8310:181:76;;;;8073:423;8509:165;8526:11;:22;;;8554:11;:17;;;8577:11;:20;;;8603:11;:29;;;8638:11;:31;;;8509:11;:165::i;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;1538:204:142;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;3411:315::-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3579:29:145;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;5319:157::-;5414:7;5443:12;5435:6;5427:29;;;;-1:-1:-1;;;5427:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;5427:29:145;;5471:1;5467;:5;;;;;;;5319:157;-1:-1:-1;;;;5319:157:145:o;209:9045:76:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;209:9045:76;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;209:9045:76;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "TWO_WEEKS()": "934d1fa4",
              "addAdmin(address)": "70480275",
              "addVestings(address[],uint256[],uint256[],uint256[],bool[],uint256[])": "17a7ed08",
              "admins(address)": "429b62e5",
              "clearVestingDataList()": "aca68f7b",
              "getMissingBalance()": "c071e01a",
              "getUnprocessedAmount()": "c20c8e9b",
              "getUnprocessedCount()": "b9a304d7",
              "getVestingAddress()": "ff1764a4",
              "getVestingPeriod()": "1096cb79",
              "isEnoughBalance()": "9e50d49e",
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "processNextVesting()": "0425a0c8",
              "processStaking()": "740398d9",
              "processVestingCreation()": "b781efc6",
              "removeAdmin(address)": "1785f53c",
              "removeNextVesting()": "3a032538",
              "transferOwnership(address)": "f2fde38b",
              "transferSOV(address,uint256)": "c680c0b7",
              "vestingDataList(uint256)": "48f7f300",
              "vestingRegistryLogic()": "104932cf"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "addVestings(address[],uint256[],uint256[],uint256[],bool[],uint256[])": {
                "notice": "adds vestings to be processed to the list"
              },
              "clearVestingDataList()": {
                "notice": "removes all data about unprocessed vestings to be processed"
              },
              "getMissingBalance()": {
                "notice": "returns missed balance to process all vestings"
              },
              "getUnprocessedAmount()": {
                "notice": "returns total amount of vestings to be processed"
              },
              "getUnprocessedCount()": {
                "notice": "returns count of vestings to be processed"
              },
              "getVestingAddress()": {
                "notice": "returns address after vesting creation"
              },
              "getVestingPeriod()": {
                "notice": "returns period i.e. ((duration - cliff) / 4 WEEKS)"
              },
              "isEnoughBalance()": {
                "notice": "checks if contract balance is enough to process all vestings"
              },
              "processNextVesting()": {
                "notice": "Creates vesting contract and stakes tokens"
              },
              "processStaking()": {
                "notice": "Staking vested tokens"
              },
              "processVestingCreation()": {
                "notice": "Creates vesting contract without staking any tokens"
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "removeNextVesting()": {
                "notice": "removes next vesting data from the list"
              },
              "transferSOV(address,uint256)": {
                "notice": "transfers SOV tokens to given address"
              }
            }
          }
        }
      },
      "contracts/governance/Vesting/VestingFactory.sol": {
        "VestingFactory": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingLogic",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_staking",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_feeSharing",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_vestingOwner",
                  "type": "address"
                }
              ],
              "name": "deployTeamVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_staking",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_feeSharing",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_vestingOwner",
                  "type": "address"
                }
              ],
              "name": "deployVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingLogic",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "deployTeamVesting(address,address,address,uint256,uint256,address,address)": {
                "params": {
                  "_SOV": "The address of SOV token.",
                  "_cliff": "The time interval to the first withdraw in seconds.",
                  "_duration": "The total duration in seconds.",
                  "_feeSharing": "The address of fee sharing contract.",
                  "_staking": "The address of staking contract.",
                  "_tokenOwner": "The owner of the tokens.",
                  "_vestingOwner": "The address of an owner of vesting contract."
                },
                "return": "The vesting contract address."
              },
              "deployVesting(address,address,address,uint256,uint256,address,address)": {
                "params": {
                  "_SOV": "the address of SOV token.",
                  "_cliff": "The time interval to the first withdraw in seconds.",
                  "_duration": "The total duration in seconds.",
                  "_feeSharing": "The address of fee sharing contract.",
                  "_staking": "The address of staking contract.",
                  "_tokenOwner": "The owner of the tokens.",
                  "_vestingOwner": "The address of an owner of vesting contract."
                },
                "return": "The vesting contract address."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Vesting Factory: Contract to deploy vesting contracts of two types: vesting (TokenHolder) and team vesting (Multisig)."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516124823803806124828339818101604052602081101561003357600080fd5b505160006100486001600160e01b0361011216565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0381166100ed576040805162461bcd60e51b815260206004820152601d60248201527f696e76616c69642076657374696e67206c6f6769632061646472657373000000604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055610116565b3390565b61235d806101256000396000f3fe60806040523480156200001157600080fd5b50600436106200006a5760003560e01c8063546344f0146200006f5780638da5cb5b14620000e25780638f32d59b14620000ec578063c0cad24e146200010a578063f2fde38b1462000114578063fa5f771e146200013f575b600080fd5b620000c6600480360360e08110156200008757600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359160808201359160a081013582169160c0909101351662000196565b604080516001600160a01b039092168252519081900360200190f35b620000c6620002ee565b620000f6620002fd565b604080519115158252519081900360200190f35b620000c662000323565b6200013d600480360360208110156200012c57600080fd5b50356001600160a01b031662000332565b005b620000c6600480360360e08110156200015757600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359160808201359160a081013582169160c090910135166200038b565b6000620001a2620002fd565b620001e3576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6000600160009054906101000a90046001600160a01b03168989898989896040516200020f90620004aa565b6001600160a01b03978816815295871660208701529386166040808701919091529286166060860152608085019190915260a0840152921660c082015290519081900360e001906000f0801580156200026c573d6000803e3d6000fd5b509050806001600160a01b031663f2fde38b846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015620002c857600080fd5b505af1158015620002dd573d6000803e3d6000fd5b50929b9a5050505050505050505050565b6000546001600160a01b031690565b600080546001600160a01b03166200031462000404565b6001600160a01b031614905090565b6001546001600160a01b031681565b6200033c620002fd565b6200037d576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b620003888162000408565b50565b600062000397620002fd565b620003d8576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6000600160009054906101000a90046001600160a01b03168989898989896040516200020f90620004b8565b3390565b6001600160a01b0381166200044f5760405162461bcd60e51b8152600401808060200182810382526026815260200180620023036026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610ec980620004c783390190565b610f7380620013908339019056fe60806040523480156200001157600080fd5b5060405162000ec938038062000ec98339810160408190526200003491620003ef565b6000620000496001600160e01b036200028416565b600080546001600160a01b0319166001600160a01b03831690811782556040519293509160008051602062000ea9833981519152908290a35062000096336001600160e01b036200028816565b6001600160a01b038616620000c85760405162461bcd60e51b8152600401620000bf90620007dc565b60405180910390fd5b6001600160a01b038516620000f15760405162461bcd60e51b8152600401620000bf90620007ca565b6001600160a01b0384166200011a5760405162461bcd60e51b8152600401620000bf9062000782565b828210156200013d5760405162461bcd60e51b8152600401620000bf9062000770565b6001600160a01b038116620001665760405162461bcd60e51b8152600401620000bf90620007a6565b6200017a876001600160e01b036200031216565b600180546001600160a01b038089166001600160a01b0319928316179092556002805488841692169190911790819055604080516358b925a360e11b81529051919092169163b1724b46916004808301926020929190829003018186803b158015620001e557600080fd5b505afa158015620001fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200022091908101906200049a565b821115620002425760405162461bcd60e51b8152600401620000bf906200075e565b600380546001600160a01b039586166001600160a01b031991821617909155600593909355600691909155600480549190931691161790555062000836915050565b3390565b6001600160a01b038116620002b15760405162461bcd60e51b8152600401620000bf90620007b8565b6001600160a01b038116620002ce6001600160e01b036200039d16565b6001600160a01b031660008051602062000ea983398151915260405160405180910390a36000604051620003029062000751565b6040519081900390209190915550565b6001600160a01b0381166200033b5760405162461bcd60e51b8152600401620000bf9062000794565b6001600160a01b038116620003586001600160e01b03620003be16565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a36000604051620003029062000744565b600080604051620003ae9062000751565b6040519081900390205492915050565b600080604051620003ae9062000744565b8051620003dc8162000811565b92915050565b8051620003dc816200082b565b600080600080600080600060e0888a0312156200040b57600080fd5b6000620004198a8a620003cf565b97505060206200042c8a828b01620003cf565b96505060406200043f8a828b01620003cf565b9550506060620004528a828b01620003cf565b9450506080620004658a828b01620003e2565b93505060a0620004788a828b01620003e2565b92505060c06200048b8a828b01620003cf565b91505092959891949750929550565b600060208284031215620004ad57600080fd5b6000620004bb8484620003e2565b949350505050565b6000620004d2602883620007ee565b7f6475726174696f6e206d6179206e6f742065786365656420746865206d617820815267323ab930ba34b7b760c11b602082015260400192915050565b60006200051e603283620007ee565b7f6475726174696f6e206d75737420626520626967676572207468616e206f722081527132b8bab0b6103a37903a34329031b634b33360711b602082015260400192915050565b600062000574601b83620007ee565b7f746f6b656e206f776e6572206164647265737320696e76616c69640000000000815260200192915050565b6000620005af602983620007ee565b7f50726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6981526864206164647265737360b81b602082015260400192915050565b6000620005fc601283620007f7565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b60006200062c600f83620007f7565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b600062000659601f83620007ee565b7f66656553686172696e6750726f7879206164647265737320696e76616c696400815260200192915050565b600062000694602583620007ee565b7f50726f78793a3a73657450726f78794f776e65723a20696e76616c6964206164815264647265737360d81b602082015260400192915050565b6000620006dd601783620007ee565b7f7374616b696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b600062000718601383620007ee565b7f534f56206164647265737320696e76616c696400000000000000000000000000815260200192915050565b6000620003dc82620005ed565b6000620003dc826200061d565b60208082528101620003dc81620004c3565b60208082528101620003dc816200050f565b60208082528101620003dc8162000565565b60208082528101620003dc81620005a0565b60208082528101620003dc816200064a565b60208082528101620003dc8162000685565b60208082528101620003dc81620006ce565b60208082528101620003dc8162000709565b90815260200190565b919050565b60006001600160a01b038216620003dc565b90565b6200081c81620007fc565b81146200082857600080fd5b50565b6200081c816200080e565b61066380620008466000396000f3fe6080604052600436106100c25760003560e01c80636a26b57f1161007f578063a3e6761011610059578063a3e676101461021c578063aaf10f4214610231578063c24a0f8b14610246578063f2fde38b1461025b576100c2565b80636a26b57f146101d05780638da5cb5b146101e55780638f32d59b146101fa576100c2565b806308dcb360146101225780630b97bc861461014d5780630fb5a6b41461016f57806313d033c0146101845780631ab7710d146101995780634cf088d9146101bb575b60006100cc61027d565b90506001600160a01b0381166100fd5760405162461bcd60e51b81526004016100f4906105b6565b60405180910390fd5b60405136600082376000803683855af43d806000843e81801561011e578184f35b8184fd5b34801561012e57600080fd5b5061013761029c565b6040516101449190610588565b60405180910390f35b34801561015957600080fd5b506101626102ab565b60405161014491906105c6565b34801561017b57600080fd5b506101626102b1565b34801561019057600080fd5b506101626102b7565b3480156101a557600080fd5b506101ae6102bd565b604051610144919061056c565b3480156101c757600080fd5b506101376102cc565b3480156101dc57600080fd5b506101376102db565b3480156101f157600080fd5b506101ae6102ea565b34801561020657600080fd5b5061020f6102f9565b604051610144919061057a565b34801561022857600080fd5b506101ae61031d565b34801561023d57600080fd5b506101ae61027d565b34801561025257600080fd5b5061016261032c565b34801561026757600080fd5b5061027b6102763660046103f8565b610332565b005b60008060405161028c90610556565b6040519081900390205492915050565b6001546001600160a01b031681565b60075481565b60065481565b60055481565b60008060405161028c90610561565b6002546001600160a01b031681565b6004546001600160a01b031681565b6000546001600160a01b031690565b600080546001600160a01b031661030e610362565b6001600160a01b031614905090565b6003546001600160a01b031681565b60085481565b61033a6102f9565b6103565760405162461bcd60e51b81526004016100f4906105a6565b61035f81610366565b50565b3390565b6001600160a01b03811661038c5760405162461bcd60e51b81526004016100f490610596565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b80356103f28161060c565b92915050565b60006020828403121561040a57600080fd5b600061041684846103e7565b949350505050565b610427816105e2565b82525050565b610427816105ed565b61042781610601565b600061044c6026836105d4565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000610494600c836105d4565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006104bc6012836105dd565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b60006104ea600f836105dd565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b60006105156023836105d4565b7f50726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f8152621d5b9960ea1b602082015260400192915050565b610427816105fe565b60006103f2826104af565b60006103f2826104dd565b602081016103f2828461041e565b602081016103f2828461042d565b602081016103f28284610436565b602080825281016103f28161043f565b602080825281016103f281610487565b602080825281016103f281610508565b602081016103f2828461054d565b90815260200190565b919050565b60006103f2826105f2565b151590565b6001600160a01b031690565b90565b60006103f2826105e2565b610615816105e2565b811461035f57600080fdfea365627a7a723158205f3a023cceddfbe8279e90194b5e13b1c4c074b193a0aa2f2e73c84802a5a9286c6578706572696d656e74616cf564736f6c634300051100408be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060806040523480156200001157600080fd5b5060405162000f7338038062000f738339810160408190526200003491620003fd565b868686868686866000620000506001600160e01b036200029216565b600080546001600160a01b0319166001600160a01b03831690811782556040519293509160008051602062000f53833981519152908290a3506200009d336001600160e01b036200029616565b6001600160a01b038616620000cf5760405162461bcd60e51b8152600401620000c690620007ea565b60405180910390fd5b6001600160a01b038516620000f85760405162461bcd60e51b8152600401620000c690620007d8565b6001600160a01b038416620001215760405162461bcd60e51b8152600401620000c69062000790565b82821015620001445760405162461bcd60e51b8152600401620000c6906200077e565b6001600160a01b0381166200016d5760405162461bcd60e51b8152600401620000c690620007b4565b62000181876001600160e01b036200032016565b600180546001600160a01b038089166001600160a01b0319928316179092556002805488841692169190911790819055604080516358b925a360e11b81529051919092169163b1724b46916004808301926020929190829003018186803b158015620001ec57600080fd5b505afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002279190810190620004a8565b821115620002495760405162461bcd60e51b8152600401620000c6906200076c565b600380546001600160a01b039586166001600160a01b03199182161790915560059390935560069190915560048054919093169116179055506200084498505050505050505050565b3390565b6001600160a01b038116620002bf5760405162461bcd60e51b8152600401620000c690620007c6565b6001600160a01b038116620002dc6001600160e01b03620003ab16565b6001600160a01b031660008051602062000f5383398151915260405160405180910390a3600060405162000310906200075f565b6040519081900390209190915550565b6001600160a01b038116620003495760405162461bcd60e51b8152600401620000c690620007a2565b6001600160a01b038116620003666001600160e01b03620003cc16565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a36000604051620003109062000752565b600080604051620003bc906200075f565b6040519081900390205492915050565b600080604051620003bc9062000752565b8051620003ea816200081f565b92915050565b8051620003ea8162000839565b600080600080600080600060e0888a0312156200041957600080fd5b6000620004278a8a620003dd565b97505060206200043a8a828b01620003dd565b96505060406200044d8a828b01620003dd565b9550506060620004608a828b01620003dd565b9450506080620004738a828b01620003f0565b93505060a0620004868a828b01620003f0565b92505060c0620004998a828b01620003dd565b91505092959891949750929550565b600060208284031215620004bb57600080fd5b6000620004c98484620003f0565b949350505050565b6000620004e0602883620007fc565b7f6475726174696f6e206d6179206e6f742065786365656420746865206d617820815267323ab930ba34b7b760c11b602082015260400192915050565b60006200052c603283620007fc565b7f6475726174696f6e206d75737420626520626967676572207468616e206f722081527132b8bab0b6103a37903a34329031b634b33360711b602082015260400192915050565b600062000582601b83620007fc565b7f746f6b656e206f776e6572206164647265737320696e76616c69640000000000815260200192915050565b6000620005bd602983620007fc565b7f50726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6981526864206164647265737360b81b602082015260400192915050565b60006200060a60128362000805565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b60006200063a600f8362000805565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b600062000667601f83620007fc565b7f66656553686172696e6750726f7879206164647265737320696e76616c696400815260200192915050565b6000620006a2602583620007fc565b7f50726f78793a3a73657450726f78794f776e65723a20696e76616c6964206164815264647265737360d81b602082015260400192915050565b6000620006eb601783620007fc565b7f7374616b696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b600062000726601383620007fc565b7f534f56206164647265737320696e76616c696400000000000000000000000000815260200192915050565b6000620003ea82620005fb565b6000620003ea826200062b565b60208082528101620003ea81620004d1565b60208082528101620003ea816200051d565b60208082528101620003ea8162000573565b60208082528101620003ea81620005ae565b60208082528101620003ea8162000658565b60208082528101620003ea8162000693565b60208082528101620003ea81620006dc565b60208082528101620003ea8162000717565b90815260200190565b919050565b60006001600160a01b038216620003ea565b90565b6200082a816200080a565b81146200083657600080fd5b50565b6200082a816200081c565b6106ff80620008546000396000f3fe6080604052600436106100dd5760003560e01c806378f24bc61161007f578063a3e6761011610059578063a3e6761014610259578063aaf10f421461026e578063c24a0f8b14610283578063f2fde38b14610298576100dd565b806378f24bc6146102005780638da5cb5b146102225780638f32d59b14610237576100dd565b806313d033c0116100bb57806313d033c01461019f5780631ab7710d146101b45780634cf088d9146101d65780636a26b57f146101eb576100dd565b806308dcb3601461013d5780630b97bc86146101685780630fb5a6b41461018a575b60006100e76102b8565b90506001600160a01b0381166101185760405162461bcd60e51b815260040161010f90610652565b60405180910390fd5b60405136600082376000803683855af43d806000843e818015610139578184f35b8184fd5b34801561014957600080fd5b506101526102d7565b60405161015f9190610614565b60405180910390f35b34801561017457600080fd5b5061017d6102e6565b60405161015f9190610662565b34801561019657600080fd5b5061017d6102ec565b3480156101ab57600080fd5b5061017d6102f2565b3480156101c057600080fd5b506101c96102f8565b60405161015f91906105f8565b3480156101e257600080fd5b50610152610307565b3480156101f757600080fd5b50610152610316565b34801561020c57600080fd5b5061022061021b36600461044b565b610325565b005b34801561022e57600080fd5b506101c961033d565b34801561024357600080fd5b5061024c61034c565b60405161015f9190610606565b34801561026557600080fd5b506101c9610370565b34801561027a57600080fd5b506101c96102b8565b34801561028f57600080fd5b5061017d61037f565b3480156102a457600080fd5b506102206102b336600461044b565b610385565b6000806040516102c7906105e2565b6040519081900390205492915050565b6001546001600160a01b031681565b60075481565b60065481565b60055481565b6000806040516102c7906105ed565b6002546001600160a01b031681565b6004546001600160a01b031681565b60405162461bcd60e51b815260040161010f90610642565b6000546001600160a01b031690565b600080546001600160a01b03166103616103b5565b6001600160a01b031614905090565b6003546001600160a01b031681565b60085481565b61038d61034c565b6103a95760405162461bcd60e51b815260040161010f90610632565b6103b2816103b9565b50565b3390565b6001600160a01b0381166103df5760405162461bcd60e51b815260040161010f90610622565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8035610445816106a8565b92915050565b60006020828403121561045d57600080fd5b6000610469848461043a565b949350505050565b61047a8161067e565b82525050565b61047a81610689565b61047a8161069d565b600061049f602683610670565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006104e7600c83610670565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061050f601283610679565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b600061053d600f83610679565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b6000610568601783610670565b7f6f7065726174696f6e206e6f7420737570706f72746564000000000000000000815260200192915050565b60006105a1602383610670565b7f50726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f8152621d5b9960ea1b602082015260400192915050565b61047a8161069a565b600061044582610502565b600061044582610530565b602081016104458284610471565b602081016104458284610480565b602081016104458284610489565b6020808252810161044581610492565b60208082528101610445816104da565b602080825281016104458161055b565b6020808252810161044581610594565b6020810161044582846105d9565b90815260200190565b919050565b60006104458261068e565b151590565b6001600160a01b031690565b90565b60006104458261067e565b6106b18161067e565b81146103b257600080fdfea365627a7a72315820ddc7b90acac4a373a9b3b30d11a2192a486003c90e7c0ffc9ef83018ee62ec686c6578706572696d656e74616cf564736f6c634300051100408be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e04f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a7231582054078615fe4c90652afe49975aca0ffe1067448e9f0bdcb7e6c23df49640465264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2482 CODESIZE SUB DUP1 PUSH2 0x2482 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 PUSH2 0x48 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x112 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xED JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E76616C69642076657374696E67206C6F6769632061646472657373000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x116 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x235D DUP1 PUSH2 0x125 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x6A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x546344F0 EQ PUSH3 0x6F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0xE2 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH3 0xEC JUMPI DUP1 PUSH4 0xC0CAD24E EQ PUSH3 0x10A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x114 JUMPI DUP1 PUSH4 0xFA5F771E EQ PUSH3 0x13F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH3 0x87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH3 0x196 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH3 0xC6 PUSH3 0x2EE JUMP JUMPDEST PUSH3 0xF6 PUSH3 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH3 0xC6 PUSH3 0x323 JUMP JUMPDEST PUSH3 0x13D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x332 JUMP JUMPDEST STOP JUMPDEST PUSH3 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH3 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH3 0x38B JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A2 PUSH3 0x2FD JUMP JUMPDEST PUSH3 0x1E3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH3 0x20F SWAP1 PUSH3 0x4AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 DUP8 AND PUSH1 0x20 DUP8 ADD MSTORE SWAP4 DUP7 AND PUSH1 0x40 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 DUP7 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP5 ADD MSTORE SWAP3 AND PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x26C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF2FDE38B DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x2DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x314 PUSH3 0x404 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH3 0x33C PUSH3 0x2FD JUMP JUMPDEST PUSH3 0x37D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0x388 DUP2 PUSH3 0x408 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x397 PUSH3 0x2FD JUMP JUMPDEST PUSH3 0x3D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH3 0x20F SWAP1 PUSH3 0x4B8 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x44F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x2303 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xEC9 DUP1 PUSH3 0x4C7 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0xF73 DUP1 PUSH3 0x1390 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xEC9 CODESIZE SUB DUP1 PUSH3 0xEC9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x3EF JUMP JUMPDEST PUSH1 0x0 PUSH3 0x49 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x284 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0xEA9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x96 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x288 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH3 0xC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x7DC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH3 0xF1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x7CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x11A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x782 JUMP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x13D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x770 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x166 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x7A6 JUMP JUMPDEST PUSH3 0x17A DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x312 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP1 SLOAD DUP9 DUP5 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x58B925A3 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xB1724B46 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x220 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x49A JUMP JUMPDEST DUP3 GT ISZERO PUSH3 0x242 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x75E JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP2 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE POP PUSH3 0x836 SWAP2 POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x7B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2CE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x39D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0xEA9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x302 SWAP1 PUSH3 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x33B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x794 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x358 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x3BE AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x302 SWAP1 PUSH3 0x744 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH3 0x3AE SWAP1 PUSH3 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH3 0x3AE SWAP1 PUSH3 0x744 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3DC DUP2 PUSH3 0x811 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3DC DUP2 PUSH3 0x82B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x419 DUP11 DUP11 PUSH3 0x3CF JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH3 0x42C DUP11 DUP3 DUP12 ADD PUSH3 0x3CF JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH3 0x43F DUP11 DUP3 DUP12 ADD PUSH3 0x3CF JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH3 0x452 DUP11 DUP3 DUP12 ADD PUSH3 0x3CF JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH3 0x465 DUP11 DUP3 DUP12 ADD PUSH3 0x3E2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH3 0x478 DUP11 DUP3 DUP12 ADD PUSH3 0x3E2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH3 0x48B DUP11 DUP3 DUP12 ADD PUSH3 0x3CF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x4BB DUP5 DUP5 PUSH3 0x3E2 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x4D2 PUSH1 0x28 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x6475726174696F6E206D6179206E6F742065786365656420746865206D617820 DUP2 MSTORE PUSH8 0x323AB930BA34B7B7 PUSH1 0xC1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x51E PUSH1 0x32 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x6475726174696F6E206D75737420626520626967676572207468616E206F7220 DUP2 MSTORE PUSH18 0x32B8BAB0B6103A37903A34329031B634B333 PUSH1 0x71 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x574 PUSH1 0x1B DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x746F6B656E206F776E6572206164647265737320696E76616C69640000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5AF PUSH1 0x29 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x50726F78793A3A736574496D706C656D656E746174696F6E3A20696E76616C69 DUP2 MSTORE PUSH9 0x642061646472657373 PUSH1 0xB8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5FC PUSH1 0x12 DUP4 PUSH3 0x7F7 JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x62C PUSH1 0xF DUP4 PUSH3 0x7F7 JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x659 PUSH1 0x1F DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x66656553686172696E6750726F7879206164647265737320696E76616C696400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x694 PUSH1 0x25 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x50726F78793A3A73657450726F78794F776E65723A20696E76616C6964206164 DUP2 MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x6DD PUSH1 0x17 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x7374616B696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x718 PUSH1 0x13 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x534F56206164647265737320696E76616C696400000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3DC DUP3 PUSH3 0x5ED JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3DC DUP3 PUSH3 0x61D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x4C3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x50F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x565 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x5A0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x64A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x685 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x6CE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x709 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x3DC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0x81C DUP2 PUSH3 0x7FC JUMP JUMPDEST DUP2 EQ PUSH3 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x81C DUP2 PUSH3 0x80E JUMP JUMPDEST PUSH2 0x663 DUP1 PUSH3 0x846 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A26B57F GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA3E67610 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x25B JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x1FA JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x1BB JUMPI JUMPDEST PUSH1 0x0 PUSH2 0xCC PUSH2 0x27D JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4 SWAP1 PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x11E JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x29C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x2AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x5C6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x2B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x2B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x2BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x56C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x2CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x2DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x2EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20F PUSH2 0x2F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x57A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x31D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x27D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x32C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27B PUSH2 0x276 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F8 JUMP JUMPDEST PUSH2 0x332 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x28C SWAP1 PUSH2 0x556 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x28C SWAP1 PUSH2 0x561 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x30E PUSH2 0x362 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x33A PUSH2 0x2F9 JUMP JUMPDEST PUSH2 0x356 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4 SWAP1 PUSH2 0x5A6 JUMP JUMPDEST PUSH2 0x35F DUP2 PUSH2 0x366 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x38C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4 SWAP1 PUSH2 0x596 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3F2 DUP2 PUSH2 0x60C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x416 DUP5 DUP5 PUSH2 0x3E7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x5E2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x5ED JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x601 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44C PUSH1 0x26 DUP4 PUSH2 0x5D4 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x494 PUSH1 0xC DUP4 PUSH2 0x5D4 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BC PUSH1 0x12 DUP4 PUSH2 0x5DD JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EA PUSH1 0xF DUP4 PUSH2 0x5DD JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x515 PUSH1 0x23 DUP4 PUSH2 0x5D4 JUMP JUMPDEST PUSH32 0x50726F78793A3A28293A20696D706C656D656E746174696F6E206E6F7420666F DUP2 MSTORE PUSH3 0x1D5B99 PUSH1 0xEA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x5FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x4AF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x4DD JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x42D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x436 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3F2 DUP2 PUSH2 0x43F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3F2 DUP2 PUSH2 0x487 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3F2 DUP2 PUSH2 0x508 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x54D JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x5F2 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x5E2 JUMP JUMPDEST PUSH2 0x615 DUP2 PUSH2 0x5E2 JUMP JUMPDEST DUP2 EQ PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0x5F GASPRICE MUL EXTCODECOPY 0xCE 0xDD 0xFB 0xE8 0x27 SWAP15 SWAP1 NOT 0x4B 0x5E SGT 0xB1 0xC4 0xC0 PUSH21 0xB193A0AA2F2E73C84802A5A9286C6578706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100408BE0079C531659141344CD 0x1F 0xD0 LOG4 CALLCODE DUP5 NOT 0x49 PUSH32 0x9722A3DAAFE3B4186F6B6457E060806040523480156200001157600080FD5B50 PUSH1 0x40 MLOAD PUSH3 0xF73 CODESIZE SUB DUP1 PUSH3 0xF73 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x3FD JUMP JUMPDEST DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x0 PUSH3 0x50 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x292 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0xF53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x9D CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x296 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH3 0xCF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7EA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH3 0xF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x121 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x790 JUMP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x144 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x77E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x16D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7B4 JUMP JUMPDEST PUSH3 0x181 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x320 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP1 SLOAD DUP9 DUP5 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x58B925A3 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xB1724B46 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x201 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x227 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x4A8 JUMP JUMPDEST DUP3 GT ISZERO PUSH3 0x249 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x76C JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP2 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE POP PUSH3 0x844 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7C6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2DC PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x3AB AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0xF53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x310 SWAP1 PUSH3 0x75F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x349 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7A2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x366 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x3CC AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x310 SWAP1 PUSH3 0x752 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH3 0x3BC SWAP1 PUSH3 0x75F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH3 0x3BC SWAP1 PUSH3 0x752 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3EA DUP2 PUSH3 0x81F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3EA DUP2 PUSH3 0x839 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x427 DUP11 DUP11 PUSH3 0x3DD JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH3 0x43A DUP11 DUP3 DUP12 ADD PUSH3 0x3DD JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH3 0x44D DUP11 DUP3 DUP12 ADD PUSH3 0x3DD JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH3 0x460 DUP11 DUP3 DUP12 ADD PUSH3 0x3DD JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH3 0x473 DUP11 DUP3 DUP12 ADD PUSH3 0x3F0 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH3 0x486 DUP11 DUP3 DUP12 ADD PUSH3 0x3F0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH3 0x499 DUP11 DUP3 DUP12 ADD PUSH3 0x3DD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x4C9 DUP5 DUP5 PUSH3 0x3F0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x4E0 PUSH1 0x28 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x6475726174696F6E206D6179206E6F742065786365656420746865206D617820 DUP2 MSTORE PUSH8 0x323AB930BA34B7B7 PUSH1 0xC1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x52C PUSH1 0x32 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x6475726174696F6E206D75737420626520626967676572207468616E206F7220 DUP2 MSTORE PUSH18 0x32B8BAB0B6103A37903A34329031B634B333 PUSH1 0x71 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x582 PUSH1 0x1B DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x746F6B656E206F776E6572206164647265737320696E76616C69640000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5BD PUSH1 0x29 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x50726F78793A3A736574496D706C656D656E746174696F6E3A20696E76616C69 DUP2 MSTORE PUSH9 0x642061646472657373 PUSH1 0xB8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x60A PUSH1 0x12 DUP4 PUSH3 0x805 JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x63A PUSH1 0xF DUP4 PUSH3 0x805 JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x667 PUSH1 0x1F DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x66656553686172696E6750726F7879206164647265737320696E76616C696400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x6A2 PUSH1 0x25 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x50726F78793A3A73657450726F78794F776E65723A20696E76616C6964206164 DUP2 MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x6EB PUSH1 0x17 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x7374616B696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x726 PUSH1 0x13 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x534F56206164647265737320696E76616C696400000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3EA DUP3 PUSH3 0x5FB JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3EA DUP3 PUSH3 0x62B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x4D1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x51D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x573 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x5AE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x658 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x693 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x6DC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x717 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x3EA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0x82A DUP2 PUSH3 0x80A JUMP JUMPDEST DUP2 EQ PUSH3 0x836 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x82A DUP2 PUSH3 0x81C JUMP JUMPDEST PUSH2 0x6FF DUP1 PUSH3 0x854 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78F24BC6 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA3E67610 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x26E JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x283 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x298 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x78F24BC6 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x237 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x13D033C0 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x1EB JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x18A JUMPI JUMPDEST PUSH1 0x0 PUSH2 0xE7 PUSH2 0x2B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x118 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x652 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x139 JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x2E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x662 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x2EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x2F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x5F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x307 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x316 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0x44B JUMP JUMPDEST PUSH2 0x325 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x33D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24C PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x606 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x370 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x2B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x37F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x2B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x44B JUMP JUMPDEST PUSH2 0x385 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP1 PUSH2 0x5E2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP1 PUSH2 0x5ED JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x642 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x361 PUSH2 0x3B5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x38D PUSH2 0x34C JUMP JUMPDEST PUSH2 0x3A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x632 JUMP JUMPDEST PUSH2 0x3B2 DUP2 PUSH2 0x3B9 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x622 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x445 DUP2 PUSH2 0x6A8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x469 DUP5 DUP5 PUSH2 0x43A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x67E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x689 JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x69D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49F PUSH1 0x26 DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E7 PUSH1 0xC DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50F PUSH1 0x12 DUP4 PUSH2 0x679 JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53D PUSH1 0xF DUP4 PUSH2 0x679 JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x568 PUSH1 0x17 DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH32 0x6F7065726174696F6E206E6F7420737570706F72746564000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A1 PUSH1 0x23 DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH32 0x50726F78793A3A28293A20696D706C656D656E746174696F6E206E6F7420666F DUP2 MSTORE PUSH3 0x1D5B99 PUSH1 0xEA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x69A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x502 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x530 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x471 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x480 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x489 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x492 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x4DA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x594 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x5D9 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x68E JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x67E JUMP JUMPDEST PUSH2 0x6B1 DUP2 PUSH2 0x67E JUMP JUMPDEST DUP2 EQ PUSH2 0x3B2 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xDD 0xC7 0xB9 EXP 0xCA 0xC4 LOG3 PUSH20 0xA9B3B30D11A2192A486003C90E7C0FFC9EF83018 0xEE PUSH3 0xEC686C PUSH6 0x78706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100408BE0079C531659141344CD 0x1F 0xD0 LOG4 CALLCODE DUP5 NOT 0x49 PUSH32 0x9722A3DAAFE3B4186F6B6457E04F776E61626C653A206E6577206F776E657220 PUSH10 0x7320746865207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x657373A265627A7A7231582054078615FE4C90 PUSH6 0x2AFE49975ACA 0xF INVALID LT PUSH8 0x448E9F0BDCB7E6C2 RETURNDATASIZE DELEGATECALL SWAP7 BLOCKHASH CHAINID MSTORE PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "412:2107:77:-;;;498:151;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:151:77;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;498:151:77;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;-1:-1:-1;;;;;;552:27:77;;544:69;;;;;-1:-1:-1;;;544:69:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:12;:28;;-1:-1:-1;;;;;;617:28:77;-1:-1:-1;;;;;617:28:77;;;;;;;;;;412:2107;;780:87:137;853:10;780:87;:::o;412:2107:77:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50600436106200006a5760003560e01c8063546344f0146200006f5780638da5cb5b14620000e25780638f32d59b14620000ec578063c0cad24e146200010a578063f2fde38b1462000114578063fa5f771e146200013f575b600080fd5b620000c6600480360360e08110156200008757600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359160808201359160a081013582169160c0909101351662000196565b604080516001600160a01b039092168252519081900360200190f35b620000c6620002ee565b620000f6620002fd565b604080519115158252519081900360200190f35b620000c662000323565b6200013d600480360360208110156200012c57600080fd5b50356001600160a01b031662000332565b005b620000c6600480360360e08110156200015757600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359160808201359160a081013582169160c090910135166200038b565b6000620001a2620002fd565b620001e3576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6000600160009054906101000a90046001600160a01b03168989898989896040516200020f90620004aa565b6001600160a01b03978816815295871660208701529386166040808701919091529286166060860152608085019190915260a0840152921660c082015290519081900360e001906000f0801580156200026c573d6000803e3d6000fd5b509050806001600160a01b031663f2fde38b846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015620002c857600080fd5b505af1158015620002dd573d6000803e3d6000fd5b50929b9a5050505050505050505050565b6000546001600160a01b031690565b600080546001600160a01b03166200031462000404565b6001600160a01b031614905090565b6001546001600160a01b031681565b6200033c620002fd565b6200037d576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b620003888162000408565b50565b600062000397620002fd565b620003d8576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6000600160009054906101000a90046001600160a01b03168989898989896040516200020f90620004b8565b3390565b6001600160a01b0381166200044f5760405162461bcd60e51b8152600401808060200182810382526026815260200180620023036026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610ec980620004c783390190565b610f7380620013908339019056fe60806040523480156200001157600080fd5b5060405162000ec938038062000ec98339810160408190526200003491620003ef565b6000620000496001600160e01b036200028416565b600080546001600160a01b0319166001600160a01b03831690811782556040519293509160008051602062000ea9833981519152908290a35062000096336001600160e01b036200028816565b6001600160a01b038616620000c85760405162461bcd60e51b8152600401620000bf90620007dc565b60405180910390fd5b6001600160a01b038516620000f15760405162461bcd60e51b8152600401620000bf90620007ca565b6001600160a01b0384166200011a5760405162461bcd60e51b8152600401620000bf9062000782565b828210156200013d5760405162461bcd60e51b8152600401620000bf9062000770565b6001600160a01b038116620001665760405162461bcd60e51b8152600401620000bf90620007a6565b6200017a876001600160e01b036200031216565b600180546001600160a01b038089166001600160a01b0319928316179092556002805488841692169190911790819055604080516358b925a360e11b81529051919092169163b1724b46916004808301926020929190829003018186803b158015620001e557600080fd5b505afa158015620001fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200022091908101906200049a565b821115620002425760405162461bcd60e51b8152600401620000bf906200075e565b600380546001600160a01b039586166001600160a01b031991821617909155600593909355600691909155600480549190931691161790555062000836915050565b3390565b6001600160a01b038116620002b15760405162461bcd60e51b8152600401620000bf90620007b8565b6001600160a01b038116620002ce6001600160e01b036200039d16565b6001600160a01b031660008051602062000ea983398151915260405160405180910390a36000604051620003029062000751565b6040519081900390209190915550565b6001600160a01b0381166200033b5760405162461bcd60e51b8152600401620000bf9062000794565b6001600160a01b038116620003586001600160e01b03620003be16565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a36000604051620003029062000744565b600080604051620003ae9062000751565b6040519081900390205492915050565b600080604051620003ae9062000744565b8051620003dc8162000811565b92915050565b8051620003dc816200082b565b600080600080600080600060e0888a0312156200040b57600080fd5b6000620004198a8a620003cf565b97505060206200042c8a828b01620003cf565b96505060406200043f8a828b01620003cf565b9550506060620004528a828b01620003cf565b9450506080620004658a828b01620003e2565b93505060a0620004788a828b01620003e2565b92505060c06200048b8a828b01620003cf565b91505092959891949750929550565b600060208284031215620004ad57600080fd5b6000620004bb8484620003e2565b949350505050565b6000620004d2602883620007ee565b7f6475726174696f6e206d6179206e6f742065786365656420746865206d617820815267323ab930ba34b7b760c11b602082015260400192915050565b60006200051e603283620007ee565b7f6475726174696f6e206d75737420626520626967676572207468616e206f722081527132b8bab0b6103a37903a34329031b634b33360711b602082015260400192915050565b600062000574601b83620007ee565b7f746f6b656e206f776e6572206164647265737320696e76616c69640000000000815260200192915050565b6000620005af602983620007ee565b7f50726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6981526864206164647265737360b81b602082015260400192915050565b6000620005fc601283620007f7565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b60006200062c600f83620007f7565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b600062000659601f83620007ee565b7f66656553686172696e6750726f7879206164647265737320696e76616c696400815260200192915050565b600062000694602583620007ee565b7f50726f78793a3a73657450726f78794f776e65723a20696e76616c6964206164815264647265737360d81b602082015260400192915050565b6000620006dd601783620007ee565b7f7374616b696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b600062000718601383620007ee565b7f534f56206164647265737320696e76616c696400000000000000000000000000815260200192915050565b6000620003dc82620005ed565b6000620003dc826200061d565b60208082528101620003dc81620004c3565b60208082528101620003dc816200050f565b60208082528101620003dc8162000565565b60208082528101620003dc81620005a0565b60208082528101620003dc816200064a565b60208082528101620003dc8162000685565b60208082528101620003dc81620006ce565b60208082528101620003dc8162000709565b90815260200190565b919050565b60006001600160a01b038216620003dc565b90565b6200081c81620007fc565b81146200082857600080fd5b50565b6200081c816200080e565b61066380620008466000396000f3fe6080604052600436106100c25760003560e01c80636a26b57f1161007f578063a3e6761011610059578063a3e676101461021c578063aaf10f4214610231578063c24a0f8b14610246578063f2fde38b1461025b576100c2565b80636a26b57f146101d05780638da5cb5b146101e55780638f32d59b146101fa576100c2565b806308dcb360146101225780630b97bc861461014d5780630fb5a6b41461016f57806313d033c0146101845780631ab7710d146101995780634cf088d9146101bb575b60006100cc61027d565b90506001600160a01b0381166100fd5760405162461bcd60e51b81526004016100f4906105b6565b60405180910390fd5b60405136600082376000803683855af43d806000843e81801561011e578184f35b8184fd5b34801561012e57600080fd5b5061013761029c565b6040516101449190610588565b60405180910390f35b34801561015957600080fd5b506101626102ab565b60405161014491906105c6565b34801561017b57600080fd5b506101626102b1565b34801561019057600080fd5b506101626102b7565b3480156101a557600080fd5b506101ae6102bd565b604051610144919061056c565b3480156101c757600080fd5b506101376102cc565b3480156101dc57600080fd5b506101376102db565b3480156101f157600080fd5b506101ae6102ea565b34801561020657600080fd5b5061020f6102f9565b604051610144919061057a565b34801561022857600080fd5b506101ae61031d565b34801561023d57600080fd5b506101ae61027d565b34801561025257600080fd5b5061016261032c565b34801561026757600080fd5b5061027b6102763660046103f8565b610332565b005b60008060405161028c90610556565b6040519081900390205492915050565b6001546001600160a01b031681565b60075481565b60065481565b60055481565b60008060405161028c90610561565b6002546001600160a01b031681565b6004546001600160a01b031681565b6000546001600160a01b031690565b600080546001600160a01b031661030e610362565b6001600160a01b031614905090565b6003546001600160a01b031681565b60085481565b61033a6102f9565b6103565760405162461bcd60e51b81526004016100f4906105a6565b61035f81610366565b50565b3390565b6001600160a01b03811661038c5760405162461bcd60e51b81526004016100f490610596565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b80356103f28161060c565b92915050565b60006020828403121561040a57600080fd5b600061041684846103e7565b949350505050565b610427816105e2565b82525050565b610427816105ed565b61042781610601565b600061044c6026836105d4565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000610494600c836105d4565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006104bc6012836105dd565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b60006104ea600f836105dd565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b60006105156023836105d4565b7f50726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f8152621d5b9960ea1b602082015260400192915050565b610427816105fe565b60006103f2826104af565b60006103f2826104dd565b602081016103f2828461041e565b602081016103f2828461042d565b602081016103f28284610436565b602080825281016103f28161043f565b602080825281016103f281610487565b602080825281016103f281610508565b602081016103f2828461054d565b90815260200190565b919050565b60006103f2826105f2565b151590565b6001600160a01b031690565b90565b60006103f2826105e2565b610615816105e2565b811461035f57600080fdfea365627a7a723158205f3a023cceddfbe8279e90194b5e13b1c4c074b193a0aa2f2e73c84802a5a9286c6578706572696d656e74616cf564736f6c634300051100408be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060806040523480156200001157600080fd5b5060405162000f7338038062000f738339810160408190526200003491620003fd565b868686868686866000620000506001600160e01b036200029216565b600080546001600160a01b0319166001600160a01b03831690811782556040519293509160008051602062000f53833981519152908290a3506200009d336001600160e01b036200029616565b6001600160a01b038616620000cf5760405162461bcd60e51b8152600401620000c690620007ea565b60405180910390fd5b6001600160a01b038516620000f85760405162461bcd60e51b8152600401620000c690620007d8565b6001600160a01b038416620001215760405162461bcd60e51b8152600401620000c69062000790565b82821015620001445760405162461bcd60e51b8152600401620000c6906200077e565b6001600160a01b0381166200016d5760405162461bcd60e51b8152600401620000c690620007b4565b62000181876001600160e01b036200032016565b600180546001600160a01b038089166001600160a01b0319928316179092556002805488841692169190911790819055604080516358b925a360e11b81529051919092169163b1724b46916004808301926020929190829003018186803b158015620001ec57600080fd5b505afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002279190810190620004a8565b821115620002495760405162461bcd60e51b8152600401620000c6906200076c565b600380546001600160a01b039586166001600160a01b03199182161790915560059390935560069190915560048054919093169116179055506200084498505050505050505050565b3390565b6001600160a01b038116620002bf5760405162461bcd60e51b8152600401620000c690620007c6565b6001600160a01b038116620002dc6001600160e01b03620003ab16565b6001600160a01b031660008051602062000f5383398151915260405160405180910390a3600060405162000310906200075f565b6040519081900390209190915550565b6001600160a01b038116620003495760405162461bcd60e51b8152600401620000c690620007a2565b6001600160a01b038116620003666001600160e01b03620003cc16565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a36000604051620003109062000752565b600080604051620003bc906200075f565b6040519081900390205492915050565b600080604051620003bc9062000752565b8051620003ea816200081f565b92915050565b8051620003ea8162000839565b600080600080600080600060e0888a0312156200041957600080fd5b6000620004278a8a620003dd565b97505060206200043a8a828b01620003dd565b96505060406200044d8a828b01620003dd565b9550506060620004608a828b01620003dd565b9450506080620004738a828b01620003f0565b93505060a0620004868a828b01620003f0565b92505060c0620004998a828b01620003dd565b91505092959891949750929550565b600060208284031215620004bb57600080fd5b6000620004c98484620003f0565b949350505050565b6000620004e0602883620007fc565b7f6475726174696f6e206d6179206e6f742065786365656420746865206d617820815267323ab930ba34b7b760c11b602082015260400192915050565b60006200052c603283620007fc565b7f6475726174696f6e206d75737420626520626967676572207468616e206f722081527132b8bab0b6103a37903a34329031b634b33360711b602082015260400192915050565b600062000582601b83620007fc565b7f746f6b656e206f776e6572206164647265737320696e76616c69640000000000815260200192915050565b6000620005bd602983620007fc565b7f50726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6981526864206164647265737360b81b602082015260400192915050565b60006200060a60128362000805565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b60006200063a600f8362000805565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b600062000667601f83620007fc565b7f66656553686172696e6750726f7879206164647265737320696e76616c696400815260200192915050565b6000620006a2602583620007fc565b7f50726f78793a3a73657450726f78794f776e65723a20696e76616c6964206164815264647265737360d81b602082015260400192915050565b6000620006eb601783620007fc565b7f7374616b696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b600062000726601383620007fc565b7f534f56206164647265737320696e76616c696400000000000000000000000000815260200192915050565b6000620003ea82620005fb565b6000620003ea826200062b565b60208082528101620003ea81620004d1565b60208082528101620003ea816200051d565b60208082528101620003ea8162000573565b60208082528101620003ea81620005ae565b60208082528101620003ea8162000658565b60208082528101620003ea8162000693565b60208082528101620003ea81620006dc565b60208082528101620003ea8162000717565b90815260200190565b919050565b60006001600160a01b038216620003ea565b90565b6200082a816200080a565b81146200083657600080fd5b50565b6200082a816200081c565b6106ff80620008546000396000f3fe6080604052600436106100dd5760003560e01c806378f24bc61161007f578063a3e6761011610059578063a3e6761014610259578063aaf10f421461026e578063c24a0f8b14610283578063f2fde38b14610298576100dd565b806378f24bc6146102005780638da5cb5b146102225780638f32d59b14610237576100dd565b806313d033c0116100bb57806313d033c01461019f5780631ab7710d146101b45780634cf088d9146101d65780636a26b57f146101eb576100dd565b806308dcb3601461013d5780630b97bc86146101685780630fb5a6b41461018a575b60006100e76102b8565b90506001600160a01b0381166101185760405162461bcd60e51b815260040161010f90610652565b60405180910390fd5b60405136600082376000803683855af43d806000843e818015610139578184f35b8184fd5b34801561014957600080fd5b506101526102d7565b60405161015f9190610614565b60405180910390f35b34801561017457600080fd5b5061017d6102e6565b60405161015f9190610662565b34801561019657600080fd5b5061017d6102ec565b3480156101ab57600080fd5b5061017d6102f2565b3480156101c057600080fd5b506101c96102f8565b60405161015f91906105f8565b3480156101e257600080fd5b50610152610307565b3480156101f757600080fd5b50610152610316565b34801561020c57600080fd5b5061022061021b36600461044b565b610325565b005b34801561022e57600080fd5b506101c961033d565b34801561024357600080fd5b5061024c61034c565b60405161015f9190610606565b34801561026557600080fd5b506101c9610370565b34801561027a57600080fd5b506101c96102b8565b34801561028f57600080fd5b5061017d61037f565b3480156102a457600080fd5b506102206102b336600461044b565b610385565b6000806040516102c7906105e2565b6040519081900390205492915050565b6001546001600160a01b031681565b60075481565b60065481565b60055481565b6000806040516102c7906105ed565b6002546001600160a01b031681565b6004546001600160a01b031681565b60405162461bcd60e51b815260040161010f90610642565b6000546001600160a01b031690565b600080546001600160a01b03166103616103b5565b6001600160a01b031614905090565b6003546001600160a01b031681565b60085481565b61038d61034c565b6103a95760405162461bcd60e51b815260040161010f90610632565b6103b2816103b9565b50565b3390565b6001600160a01b0381166103df5760405162461bcd60e51b815260040161010f90610622565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8035610445816106a8565b92915050565b60006020828403121561045d57600080fd5b6000610469848461043a565b949350505050565b61047a8161067e565b82525050565b61047a81610689565b61047a8161069d565b600061049f602683610670565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006104e7600c83610670565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061050f601283610679565b7135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815260120192915050565b600061053d600f83610679565b6e35b2bc97383937bc3c9737bbb732b960891b8152600f0192915050565b6000610568601783610670565b7f6f7065726174696f6e206e6f7420737570706f72746564000000000000000000815260200192915050565b60006105a1602383610670565b7f50726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f8152621d5b9960ea1b602082015260400192915050565b61047a8161069a565b600061044582610502565b600061044582610530565b602081016104458284610471565b602081016104458284610480565b602081016104458284610489565b6020808252810161044581610492565b60208082528101610445816104da565b602080825281016104458161055b565b6020808252810161044581610594565b6020810161044582846105d9565b90815260200190565b919050565b60006104458261068e565b151590565b6001600160a01b031690565b90565b60006104458261067e565b6106b18161067e565b81146103b257600080fdfea365627a7a72315820ddc7b90acac4a373a9b3b30d11a2192a486003c90e7c0ffc9ef83018ee62ec686c6578706572696d656e74616cf564736f6c634300051100408be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e04f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a7231582054078615fe4c90652afe49975aca0ffe1067448e9f0bdcb7e6c23df49640465264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x6A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x546344F0 EQ PUSH3 0x6F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0xE2 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH3 0xEC JUMPI DUP1 PUSH4 0xC0CAD24E EQ PUSH3 0x10A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x114 JUMPI DUP1 PUSH4 0xFA5F771E EQ PUSH3 0x13F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH3 0x87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH3 0x196 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH3 0xC6 PUSH3 0x2EE JUMP JUMPDEST PUSH3 0xF6 PUSH3 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH3 0xC6 PUSH3 0x323 JUMP JUMPDEST PUSH3 0x13D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x332 JUMP JUMPDEST STOP JUMPDEST PUSH3 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH3 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH3 0x38B JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A2 PUSH3 0x2FD JUMP JUMPDEST PUSH3 0x1E3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH3 0x20F SWAP1 PUSH3 0x4AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 DUP8 AND PUSH1 0x20 DUP8 ADD MSTORE SWAP4 DUP7 AND PUSH1 0x40 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 DUP7 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP5 ADD MSTORE SWAP3 AND PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x26C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF2FDE38B DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x2DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x314 PUSH3 0x404 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH3 0x33C PUSH3 0x2FD JUMP JUMPDEST PUSH3 0x37D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0x388 DUP2 PUSH3 0x408 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x397 PUSH3 0x2FD JUMP JUMPDEST PUSH3 0x3D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH3 0x20F SWAP1 PUSH3 0x4B8 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x44F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x2303 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xEC9 DUP1 PUSH3 0x4C7 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0xF73 DUP1 PUSH3 0x1390 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xEC9 CODESIZE SUB DUP1 PUSH3 0xEC9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x3EF JUMP JUMPDEST PUSH1 0x0 PUSH3 0x49 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x284 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0xEA9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x96 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x288 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH3 0xC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x7DC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH3 0xF1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x7CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x11A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x782 JUMP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x13D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x770 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x166 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x7A6 JUMP JUMPDEST PUSH3 0x17A DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x312 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP1 SLOAD DUP9 DUP5 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x58B925A3 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xB1724B46 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x220 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x49A JUMP JUMPDEST DUP3 GT ISZERO PUSH3 0x242 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x75E JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP2 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE POP PUSH3 0x836 SWAP2 POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x7B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2CE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x39D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0xEA9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x302 SWAP1 PUSH3 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x33B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBF SWAP1 PUSH3 0x794 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x358 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x3BE AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x302 SWAP1 PUSH3 0x744 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH3 0x3AE SWAP1 PUSH3 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH3 0x3AE SWAP1 PUSH3 0x744 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3DC DUP2 PUSH3 0x811 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3DC DUP2 PUSH3 0x82B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x419 DUP11 DUP11 PUSH3 0x3CF JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH3 0x42C DUP11 DUP3 DUP12 ADD PUSH3 0x3CF JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH3 0x43F DUP11 DUP3 DUP12 ADD PUSH3 0x3CF JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH3 0x452 DUP11 DUP3 DUP12 ADD PUSH3 0x3CF JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH3 0x465 DUP11 DUP3 DUP12 ADD PUSH3 0x3E2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH3 0x478 DUP11 DUP3 DUP12 ADD PUSH3 0x3E2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH3 0x48B DUP11 DUP3 DUP12 ADD PUSH3 0x3CF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x4BB DUP5 DUP5 PUSH3 0x3E2 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x4D2 PUSH1 0x28 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x6475726174696F6E206D6179206E6F742065786365656420746865206D617820 DUP2 MSTORE PUSH8 0x323AB930BA34B7B7 PUSH1 0xC1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x51E PUSH1 0x32 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x6475726174696F6E206D75737420626520626967676572207468616E206F7220 DUP2 MSTORE PUSH18 0x32B8BAB0B6103A37903A34329031B634B333 PUSH1 0x71 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x574 PUSH1 0x1B DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x746F6B656E206F776E6572206164647265737320696E76616C69640000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5AF PUSH1 0x29 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x50726F78793A3A736574496D706C656D656E746174696F6E3A20696E76616C69 DUP2 MSTORE PUSH9 0x642061646472657373 PUSH1 0xB8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5FC PUSH1 0x12 DUP4 PUSH3 0x7F7 JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x62C PUSH1 0xF DUP4 PUSH3 0x7F7 JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x659 PUSH1 0x1F DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x66656553686172696E6750726F7879206164647265737320696E76616C696400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x694 PUSH1 0x25 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x50726F78793A3A73657450726F78794F776E65723A20696E76616C6964206164 DUP2 MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x6DD PUSH1 0x17 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x7374616B696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x718 PUSH1 0x13 DUP4 PUSH3 0x7EE JUMP JUMPDEST PUSH32 0x534F56206164647265737320696E76616C696400000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3DC DUP3 PUSH3 0x5ED JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3DC DUP3 PUSH3 0x61D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x4C3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x50F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x565 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x5A0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x64A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x685 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x6CE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3DC DUP2 PUSH3 0x709 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x3DC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0x81C DUP2 PUSH3 0x7FC JUMP JUMPDEST DUP2 EQ PUSH3 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x81C DUP2 PUSH3 0x80E JUMP JUMPDEST PUSH2 0x663 DUP1 PUSH3 0x846 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A26B57F GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA3E67610 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x25B JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x1FA JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x1BB JUMPI JUMPDEST PUSH1 0x0 PUSH2 0xCC PUSH2 0x27D JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4 SWAP1 PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x11E JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x29C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x2AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x5C6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x2B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x2B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x2BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x56C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x2CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x2DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x2EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20F PUSH2 0x2F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x57A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x31D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AE PUSH2 0x27D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x32C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27B PUSH2 0x276 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F8 JUMP JUMPDEST PUSH2 0x332 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x28C SWAP1 PUSH2 0x556 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x28C SWAP1 PUSH2 0x561 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x30E PUSH2 0x362 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x33A PUSH2 0x2F9 JUMP JUMPDEST PUSH2 0x356 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4 SWAP1 PUSH2 0x5A6 JUMP JUMPDEST PUSH2 0x35F DUP2 PUSH2 0x366 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x38C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4 SWAP1 PUSH2 0x596 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3F2 DUP2 PUSH2 0x60C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x416 DUP5 DUP5 PUSH2 0x3E7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x5E2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x5ED JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x601 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44C PUSH1 0x26 DUP4 PUSH2 0x5D4 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x494 PUSH1 0xC DUP4 PUSH2 0x5D4 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BC PUSH1 0x12 DUP4 PUSH2 0x5DD JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EA PUSH1 0xF DUP4 PUSH2 0x5DD JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x515 PUSH1 0x23 DUP4 PUSH2 0x5D4 JUMP JUMPDEST PUSH32 0x50726F78793A3A28293A20696D706C656D656E746174696F6E206E6F7420666F DUP2 MSTORE PUSH3 0x1D5B99 PUSH1 0xEA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x427 DUP2 PUSH2 0x5FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x4AF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x4DD JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x42D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x436 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3F2 DUP2 PUSH2 0x43F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3F2 DUP2 PUSH2 0x487 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3F2 DUP2 PUSH2 0x508 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3F2 DUP3 DUP5 PUSH2 0x54D JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x5F2 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F2 DUP3 PUSH2 0x5E2 JUMP JUMPDEST PUSH2 0x615 DUP2 PUSH2 0x5E2 JUMP JUMPDEST DUP2 EQ PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0x5F GASPRICE MUL EXTCODECOPY 0xCE 0xDD 0xFB 0xE8 0x27 SWAP15 SWAP1 NOT 0x4B 0x5E SGT 0xB1 0xC4 0xC0 PUSH21 0xB193A0AA2F2E73C84802A5A9286C6578706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100408BE0079C531659141344CD 0x1F 0xD0 LOG4 CALLCODE DUP5 NOT 0x49 PUSH32 0x9722A3DAAFE3B4186F6B6457E060806040523480156200001157600080FD5B50 PUSH1 0x40 MLOAD PUSH3 0xF73 CODESIZE SUB DUP1 PUSH3 0xF73 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x3FD JUMP JUMPDEST DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x0 PUSH3 0x50 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x292 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0xF53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x9D CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x296 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH3 0xCF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7EA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH3 0xF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x121 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x790 JUMP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x144 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x77E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x16D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7B4 JUMP JUMPDEST PUSH3 0x181 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x320 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP1 SLOAD DUP9 DUP5 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x58B925A3 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xB1724B46 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x201 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x227 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x4A8 JUMP JUMPDEST DUP3 GT ISZERO PUSH3 0x249 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x76C JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP2 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE POP PUSH3 0x844 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7C6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2DC PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x3AB AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0xF53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x310 SWAP1 PUSH3 0x75F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x349 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC6 SWAP1 PUSH3 0x7A2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x366 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x3CC AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x310 SWAP1 PUSH3 0x752 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH3 0x3BC SWAP1 PUSH3 0x75F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH3 0x3BC SWAP1 PUSH3 0x752 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3EA DUP2 PUSH3 0x81F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x3EA DUP2 PUSH3 0x839 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x427 DUP11 DUP11 PUSH3 0x3DD JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH3 0x43A DUP11 DUP3 DUP12 ADD PUSH3 0x3DD JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH3 0x44D DUP11 DUP3 DUP12 ADD PUSH3 0x3DD JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH3 0x460 DUP11 DUP3 DUP12 ADD PUSH3 0x3DD JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH3 0x473 DUP11 DUP3 DUP12 ADD PUSH3 0x3F0 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH3 0x486 DUP11 DUP3 DUP12 ADD PUSH3 0x3F0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH3 0x499 DUP11 DUP3 DUP12 ADD PUSH3 0x3DD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x4C9 DUP5 DUP5 PUSH3 0x3F0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x4E0 PUSH1 0x28 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x6475726174696F6E206D6179206E6F742065786365656420746865206D617820 DUP2 MSTORE PUSH8 0x323AB930BA34B7B7 PUSH1 0xC1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x52C PUSH1 0x32 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x6475726174696F6E206D75737420626520626967676572207468616E206F7220 DUP2 MSTORE PUSH18 0x32B8BAB0B6103A37903A34329031B634B333 PUSH1 0x71 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x582 PUSH1 0x1B DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x746F6B656E206F776E6572206164647265737320696E76616C69640000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5BD PUSH1 0x29 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x50726F78793A3A736574496D706C656D656E746174696F6E3A20696E76616C69 DUP2 MSTORE PUSH9 0x642061646472657373 PUSH1 0xB8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x60A PUSH1 0x12 DUP4 PUSH3 0x805 JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x63A PUSH1 0xF DUP4 PUSH3 0x805 JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x667 PUSH1 0x1F DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x66656553686172696E6750726F7879206164647265737320696E76616C696400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x6A2 PUSH1 0x25 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x50726F78793A3A73657450726F78794F776E65723A20696E76616C6964206164 DUP2 MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x6EB PUSH1 0x17 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x7374616B696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x726 PUSH1 0x13 DUP4 PUSH3 0x7FC JUMP JUMPDEST PUSH32 0x534F56206164647265737320696E76616C696400000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3EA DUP3 PUSH3 0x5FB JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3EA DUP3 PUSH3 0x62B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x4D1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x51D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x573 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x5AE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x658 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x693 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x6DC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH3 0x3EA DUP2 PUSH3 0x717 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x3EA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0x82A DUP2 PUSH3 0x80A JUMP JUMPDEST DUP2 EQ PUSH3 0x836 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x82A DUP2 PUSH3 0x81C JUMP JUMPDEST PUSH2 0x6FF DUP1 PUSH3 0x854 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78F24BC6 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA3E67610 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x26E JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x283 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x298 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x78F24BC6 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x237 JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x13D033C0 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x1EB JUMPI PUSH2 0xDD JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x18A JUMPI JUMPDEST PUSH1 0x0 PUSH2 0xE7 PUSH2 0x2B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x118 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x652 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x139 JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x2E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x662 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x2EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x2F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x5F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x307 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x316 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0x44B JUMP JUMPDEST PUSH2 0x325 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x33D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24C PUSH2 0x34C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x606 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x370 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C9 PUSH2 0x2B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17D PUSH2 0x37F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x2B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x44B JUMP JUMPDEST PUSH2 0x385 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP1 PUSH2 0x5E2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH2 0x2C7 SWAP1 PUSH2 0x5ED JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x642 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x361 PUSH2 0x3B5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x38D PUSH2 0x34C JUMP JUMPDEST PUSH2 0x3A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x632 JUMP JUMPDEST PUSH2 0x3B2 DUP2 PUSH2 0x3B9 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F SWAP1 PUSH2 0x622 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x445 DUP2 PUSH2 0x6A8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x469 DUP5 DUP5 PUSH2 0x43A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x67E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x689 JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x69D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49F PUSH1 0x26 DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E7 PUSH1 0xC DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50F PUSH1 0x12 DUP4 PUSH2 0x679 JUMP JUMPDEST PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x12 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53D PUSH1 0xF DUP4 PUSH2 0x679 JUMP JUMPDEST PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE PUSH1 0xF ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x568 PUSH1 0x17 DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH32 0x6F7065726174696F6E206E6F7420737570706F72746564000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A1 PUSH1 0x23 DUP4 PUSH2 0x670 JUMP JUMPDEST PUSH32 0x50726F78793A3A28293A20696D706C656D656E746174696F6E206E6F7420666F DUP2 MSTORE PUSH3 0x1D5B99 PUSH1 0xEA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x69A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x502 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x530 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x471 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x480 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x489 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x492 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x4DA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x445 DUP2 PUSH2 0x594 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x445 DUP3 DUP5 PUSH2 0x5D9 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x68E JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x445 DUP3 PUSH2 0x67E JUMP JUMPDEST PUSH2 0x6B1 DUP2 PUSH2 0x67E JUMP JUMPDEST DUP2 EQ PUSH2 0x3B2 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xDD 0xC7 0xB9 EXP 0xCA 0xC4 LOG3 PUSH20 0xA9B3B30D11A2192A486003C90E7C0FFC9EF83018 0xEE PUSH3 0xEC686C PUSH6 0x78706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100408BE0079C531659141344CD 0x1F 0xD0 LOG4 CALLCODE DUP5 NOT 0x49 PUSH32 0x9722A3DAAFE3B4186F6B6457E04F776E61626C653A206E6577206F776E657220 PUSH10 0x7320746865207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x657373A265627A7A7231582054078615FE4C90 PUSH6 0x2AFE49975ACA 0xF INVALID LT PUSH8 0x448E9F0BDCB7E6C2 RETURNDATASIZE DELEGATECALL SWAP7 BLOCKHASH CHAINID MSTORE PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "412:2107:77:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;412:2107:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2075:442;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;2075:442:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2075:442:77;;;;;;;;;;;;;;851:68:142;;;:::i;1134:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;467:27:77;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;1139:441:77;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;1139:441:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2075:442::-;2311:7;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;2325:15:77;2367:12;;;;;;;;;-1:-1:-1;;;;;2367:12:77;2381:4;2387:8;2397:11;2410:6;2418:9;2429:11;2351:90;;;;;:::i;:::-;-1:-1:-1;;;;;2351:90:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2351:90:77;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2351:90:77;2325:117;;2454:7;-1:-1:-1;;;;;2446:34:77;;2481:13;2446:49;;;;;;;;;;;;;-1:-1:-1;;;;;2446:49:77;-1:-1:-1;;;;;2446:49:77;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2446:49:77;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2506:7:77;;2075:442;-1:-1:-1;;;;;;;;;;;2075:442:77:o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;467:27:77:-;;;-1:-1:-1;;;;;467:27:77;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;1139:441:77:-;1378:7;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1392:15:77;1430:12;;;;;;;;;-1:-1:-1;;;;;1430:12:77;1444:4;1450:8;1460:11;1473:6;1481:9;1492:11;1418:86;;;;;:::i;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;412:2107:77:-;;;;;;;;:::o;:::-;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "deployTeamVesting(address,address,address,uint256,uint256,address,address)": "546344f0",
              "deployVesting(address,address,address,uint256,uint256,address,address)": "fa5f771e",
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b",
              "vestingLogic()": "c0cad24e"
            }
          },
          "userdoc": {
            "methods": {
              "deployTeamVesting(address,address,address,uint256,uint256,address,address)": {
                "notice": "Deploys Team Vesting contract."
              },
              "deployVesting(address,address,address,uint256,uint256,address,address)": {
                "notice": "Deploys Vesting contract."
              }
            },
            "notice": "Factory pattern allows to create multiple instances of the same contract and keep track of them easier."
          }
        }
      },
      "contracts/governance/Vesting/VestingLogic.sol": {
        "VestingLogic": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanPoolToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "maxCheckpoints",
                  "type": "uint32"
                }
              ],
              "name": "DividendsCollected",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newStakingContract",
                  "type": "address"
                }
              ],
              "name": "MigratedToNewStakingContract",
              "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": "caller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "TokensWithdrawn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "VotesDelegated",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "cliff",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_loanPoolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "_maxCheckpoints",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                }
              ],
              "name": "collectDividends",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_delegatee",
                  "type": "address"
                }
              ],
              "name": "delegate",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "duration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "endDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharingProxy",
              "outputs": [
                {
                  "internalType": "contract IFeeSharingProxy",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "governanceWithdrawTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "migrateToNewStakingContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "receiveApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "stakeTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "stakeTokensWithApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract Staking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "startDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tokenOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "withdrawTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Deployed by a VestingFactory contract.",
            "methods": {
              "collectDividends(address,uint32,address)": {
                "params": {
                  "_loanPoolToken": "The loan pool token address.",
                  "_maxCheckpoints": "Maximum number of checkpoints to be processed.",
                  "_receiver": "The receiver of tokens or msg.sender"
                }
              },
              "delegate(address)": {
                "params": {
                  "_delegatee": "The address to delegate votes to."
                }
              },
              "governanceWithdrawTokens(address)": {
                "details": "Can be called only by owner.",
                "params": {
                  "receiver": "The receiving address."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "receiveApproval(address,uint256,address,bytes)": {
                "params": {
                  "_data": "The data will be used for low level call."
                }
              },
              "stakeTokens(uint256)": {
                "params": {
                  "_amount": "The amount of tokens to stake."
                }
              },
              "stakeTokensWithApproval(address,uint256)": {
                "details": "This function will be invoked from receiveApproval.SOV.approveAndCall -> this.receiveApproval -> this.stakeTokensWithApproval",
                "params": {
                  "_amount": "The amount of tokens to stake.",
                  "_sender": "The sender of SOV.approveAndCall"
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "withdrawTokens(address)": {
                "params": {
                  "receiver": "The receiving address."
                }
              }
            },
            "title": "Vesting Logic contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b611a15806100796000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80636a26b57f116100ad5780638f32d59b116100715780638f32d59b1461020a5780638f4ffcb11461021f578063a3e6761014610232578063c24a0f8b1461023a578063f2fde38b1461024257610121565b80636a26b57f146101b45780637547c7a3146101bc57806378f24bc6146101cf57806381e45268146101e25780638da5cb5b146101f557610121565b806349df728c116100f457806349df728c146101695780634cf088d91461017e5780635419675f146101865780635c19a95c1461018e57806362dc2f35146101a157610121565b806308dcb360146101265780630b97bc86146101445780630fb5a6b41461015957806313d033c014610161575b600080fd5b61012e610255565b60405161013b91906117d2565b60405180910390f35b61014c610264565b60405161013b9190611871565b61014c61026a565b61014c610270565b61017c61017736600461123d565b610276565b005b61012e6102c5565b61017c6102d4565b61017c61019c36600461123d565b610455565b61017c6101af366004611339565b61056c565b61012e610679565b61017c6101ca3660046113e7565b610688565b61017c6101dd36600461123d565b610692565b61017c6101f0366004611281565b6106c7565b6101fd6106f4565b60405161013b9190611708565b610212610703565b60405161013b91906117c4565b61017c61022d3660046112bb565b610727565b6101fd61091b565b61014c61092a565b61017c61025036600461123d565b610930565b6001546001600160a01b031681565b60075481565b60065481565b60055481565b6003546001600160a01b03163314806102925750610292610703565b6102b75760405162461bcd60e51b81526004016102ae90611831565b60405180910390fd5b6102c281600061095d565b50565b6002546001600160a01b031681565b6003546001600160a01b03163314806102f057506102f0610703565b61030c5760405162461bcd60e51b81526004016102ae90611831565b600260009054906101000a90046001600160a01b03166001600160a01b0316635419675f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035c57600080fd5b505af1158015610370573d6000803e3d6000fd5b50505050600260009054906101000a90046001600160a01b03166001600160a01b031663ae81dfe46040518163ffffffff1660e01b815260040160206040518083038186803b1580156103c257600080fd5b505afa1580156103d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103fa9190810190611263565b600280546001600160a01b0319166001600160a01b03928316179081905560405133927f9613f431247983a83a2b3667aa63a5174194ac89328dfadc69be44409521b3c19261044b92911690611708565b60405180910390a2565b6003546001600160a01b0316331461047f5760405162461bcd60e51b81526004016102ae90611831565b6001600160a01b0381166104a55760405162461bcd60e51b81526004016102ae90611841565b600554600754015b60085481116105275760025460405163026e402b60e01b81526001600160a01b039091169063026e402b906104e89085908590600401611766565b600060405180830381600087803b15801561050257600080fd5b505af1158015610516573d6000803e3d6000fd5b505050506224ea00810190506104ad565b50336001600160a01b03167f734a802cc194e2139bfcc08e10336f24dfa14fd2c5ab70268d8706c055867066826040516105619190611708565b60405180910390a250565b6003546001600160a01b03163314806105885750610588610703565b6105a45760405162461bcd60e51b81526004016102ae90611831565b6001600160a01b0381166105ca5760405162461bcd60e51b81526004016102ae90611851565b6004805460405163a965b3a960e01b81526001600160a01b039091169163a965b3a9916105fd918791879187910161179c565b600060405180830381600087803b15801561061757600080fd5b505af115801561062b573d6000803e3d6000fd5b50505050336001600160a01b03167f5fa0b381cb4bdbc7063d1e5c78b90a634a6d6a12d6cb6fabe450fd4b8d1eab0184838560405161066c9392919061173e565b60405180910390a2505050565b6004546001600160a01b031681565b6102c23382610bfc565b6002546001600160a01b031633146106bc5760405162461bcd60e51b81526004016102ae90611831565b6102c281600161095d565b3330146106e65760405162461bcd60e51b81526004016102ae90611831565b6106f08282610bfc565b5050565b6000546001600160a01b031690565b600080546001600160a01b0316610718610ede565b6001600160a01b031614905090565b61072f610ee2565b6001600160a01b0316336001600160a01b03161461075f5760405162461bcd60e51b81526004016102ae90611831565b336001600160a01b038416146107875760405162461bcd60e51b81526004016102ae90611831565b60006060610793610ef1565b905060006107d685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f4992505050565b905060005b8251811015610824578281815181106107f057fe5b60200260200101516001600160e01b031916826001600160e01b031916141561081c5760019350610824565b6001016107db565b50826108425760405162461bcd60e51b81526004016102ae90611811565b600080600060201b878760405160200161085e939291906116cf565b60405160208183030381529060405280602001905161088091908101906113a4565b9093509150506001600160a01b03808316908b16146108b15760405162461bcd60e51b81526004016102ae90611821565b8881146108d05760405162461bcd60e51b81526004016102ae90611861565b61090f87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f5092505050565b50505050505050505050565b6003546001600160a01b031681565b60085481565b610938610703565b6109545760405162461bcd60e51b81526004016102ae90611831565b6102c28161102a565b6001600160a01b0382166109835760405162461bcd60e51b81526004016102ae90611851565b600080600260009054906101000a90046001600160a01b03166001600160a01b0316639929e8866040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a0c9190810190611386565b80610a145750825b15610a225750600854610a25565b50425b600554600754015b818111610bb4576002546040516367bdb42560e11b81526001600160a01b039091169063cf7b684a90610a6c9030908590600019430190600401611781565b60206040518083038186803b158015610a8457600080fd5b505afa158015610a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610abc9190810190611423565b92506bffffffffffffffffffffffff831615610baa578315610b4357600254604051634005b26560e11b81526001600160a01b039091169063800b64ca90610b0c90869085908a906004016118d9565b600060405180830381600087803b158015610b2657600080fd5b505af1158015610b3a573d6000803e3d6000fd5b50505050610baa565b6002546040516336adb29160e21b81526001600160a01b039091169063dab6ca4490610b7790869085908a906004016118d9565b600060405180830381600087803b158015610b9157600080fd5b505af1158015610ba5573d6000803e3d6000fd5b505050505b6224ea0001610a2d565b50336001600160a01b03167f351b2b7a8b3659a02c6c87ac06e00099a1e5979171161a69eab5d057deb838ec85604051610bee9190611708565b60405180910390a250505050565b600754610c87576002546040516372ec979560e01b81526001600160a01b03909116906372ec979590610c33904290600401611871565b60206040518083038186803b158015610c4b57600080fd5b505afa158015610c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c839190810190611405565b6007555b6002546006546040516372ec979560e01b81526001600160a01b03909216916372ec979591610cbd914290910190600401611871565b60206040518083038186803b158015610cd557600080fd5b505afa158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d0d9190810190611405565b6008556001546040516323b872dd60e01b81526000916001600160a01b0316906323b872dd90610d4590869030908790600401611716565b602060405180830381600087803b158015610d5f57600080fd5b505af1158015610d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d979190810190611386565b905080610da357600080fd5b60015460025460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392610dd9929116908690600401611766565b602060405180830381600087803b158015610df357600080fd5b505af1158015610e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2b9190810190611386565b50600254600554600654600354604051632597f50f60e11b81526001600160a01b0394851694634b2fea1e94610e73948994919390926224ea0092309291169060040161187f565b600060405180830381600087803b158015610e8d57600080fd5b505af1158015610ea1573d6000803e3d6000fd5b50505050826001600160a01b03167fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef8360405161066c9190611871565b3390565b6001546001600160a01b031690565b604080516001808252818301909252606091829190602080830190803883390190505090506381e4526860e01b81600081518110610f2b57fe5b6001600160e01b031990921660209283029190910190910152905090565b6020015190565b60006060306001600160a01b031683604051610f6c91906116f5565b6000604051808303816000865af19150503d8060008114610fa9576040519150601f19603f3d011682016040523d82523d6000602084013e610fae565b606091505b509150915081611025576044815111610fd95760405162461bcd60e51b81526004016102ae906117f1565b61100c6040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b815250826110ab565b60405162461bcd60e51b81526004016102ae91906117e0565b505050565b6001600160a01b0381166110505760405162461bcd60e51b81526004016102ae90611801565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6060808390506060839050606060448251845101036040519080825280601f01601f1916602001820160405280156110ea576020820181803883390190505b509050806000805b85518110156111435785818151811061110757fe5b602001015160f81c60f81b83838060010194508151811061112457fe5b60200101906001600160f81b031916908160001a9053506001016110f2565b5060445b84518110156111985784818151811061115c57fe5b602001015160f81c60f81b83838060010194508151811061117957fe5b60200101906001600160f81b031916908160001a905350600101611147565b50909450505050505b92915050565b80356111a18161199a565b80516111a18161199a565b80516111a1816119ae565b80516111a1816119b7565b60008083601f8401126111e557600080fd5b50813567ffffffffffffffff8111156111fd57600080fd5b60208301915083600182028301111561121557600080fd5b9250929050565b80356111a1816119b7565b80356111a1816119c0565b80516111a1816119c9565b60006020828403121561124f57600080fd5b600061125b84846111a7565b949350505050565b60006020828403121561127557600080fd5b600061125b84846111b2565b6000806040838503121561129457600080fd5b60006112a085856111a7565b92505060206112b18582860161121c565b9150509250929050565b6000806000806000608086880312156112d357600080fd5b60006112df88886111a7565b95505060206112f08882890161121c565b9450506040611301888289016111a7565b935050606086013567ffffffffffffffff81111561131e57600080fd5b61132a888289016111d3565b92509250509295509295909350565b60008060006060848603121561134e57600080fd5b600061135a86866111a7565b935050602061136b86828701611227565b925050604061137c868287016111a7565b9150509250925092565b60006020828403121561139857600080fd5b600061125b84846111bd565b6000806000606084860312156113b957600080fd5b60006113c586866111c8565b93505060206113d6868287016111b2565b925050604061137c868287016111c8565b6000602082840312156113f957600080fd5b600061125b848461121c565b60006020828403121561141757600080fd5b600061125b84846111c8565b60006020828403121561143557600080fd5b600061125b8484611232565b61144a81611906565b82525050565b61144a81611911565b61144a61146582611916565b611920565b600061147683856118f8565b9350611483838584611954565b50500190565b6000611494826118f4565b61149e81856118f8565b93506114ae818560208601611960565b9290920192915050565b61144a81611949565b60006114cc826118f4565b6114d681856118fd565b93506114e6818560208601611960565b6114ef81611990565b9093019392505050565b60006115066030836118fd565b7f72656365697665417070726f76616c3a205472616e73616374696f6e2065786581526f31baba34b7b7103932bb32b93a32b21760811b602082015260400192915050565b60006115586026836118fd565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006115a06015836118fd565b741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b815260200192915050565b60006115d1600f836118fd565b6e0e6cadcc8cae440dad2e6dac2e8c6d608b1b815260200192915050565b60006115fc600c836118fd565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006116246019836118fd565b7f64656c656761746565206164647265737320696e76616c696400000000000000815260200192915050565b600061165d6018836118fd565b7f7265636569766572206164647265737320696e76616c69640000000000000000815260200192915050565b6000611696600f836118fd565b6e0c2dadeeadce840dad2e6dac2e8c6d608b1b815260200192915050565b61144a81611920565b61144a8161192f565b61144a81611938565b60006116db8286611459565b601c820191506116ec82848661146a565b95945050505050565b60006117018284611489565b9392505050565b602081016111a18284611441565b606081016117248286611441565b6117316020830185611441565b61125b60408301846116b4565b6060810161174c8286611441565b6117596020830185611441565b61125b60408301846116bd565b604081016117748285611441565b61170160208301846116b4565b6060810161178f8286611441565b61173160208301856116b4565b606081016117aa8286611441565b6117b760208301856116bd565b61125b6040830184611441565b602081016111a18284611450565b602081016111a182846114b8565b6020808252810161170181846114c1565b602080825281016111a1816114f9565b602080825281016111a18161154b565b602080825281016111a181611593565b602080825281016111a1816115c4565b602080825281016111a1816115ef565b602080825281016111a181611617565b602080825281016111a181611650565b602080825281016111a181611689565b602081016111a182846116b4565b60c0810161188d82896116b4565b61189a60208301886116b4565b6118a760408301876116b4565b6118b460608301866116b4565b6118c16080830185611441565b6118ce60a0830184611441565b979650505050505050565b606081016118e782866116c6565b6117b760208301856116b4565b5190565b919050565b90815260200190565b60006111a182611923565b151590565b63ffffffff191690565b90565b6001600160a01b031690565b63ffffffff1690565b6bffffffffffffffffffffffff1690565b60006111a182611906565b82818337506000910152565b60005b8381101561197b578181015183820152602001611963565b8381111561198a576000848401525b50505050565b601f01601f191690565b6119a381611906565b81146102c257600080fd5b6119a381611911565b6119a381611920565b6119a38161192f565b6119a38161193856fea365627a7a723158207d2c296b77b006db861fa1b63a1d47e03caf7a3e733b673087525ccde5abe9916c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x1A15 DUP1 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x121 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A26B57F GT PUSH2 0xAD JUMPI DUP1 PUSH4 0x8F32D59B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x242 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x7547C7A3 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0x78F24BC6 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x81E45268 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1F5 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x49DF728C GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x49DF728C EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0x5419675F EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0x62DC2F35 EQ PUSH2 0x1A1 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x161 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12E PUSH2 0x255 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x1871 JUMP JUMPDEST PUSH2 0x14C PUSH2 0x26A JUMP JUMPDEST PUSH2 0x14C PUSH2 0x270 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x177 CALLDATASIZE PUSH1 0x4 PUSH2 0x123D JUMP JUMPDEST PUSH2 0x276 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12E PUSH2 0x2C5 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x2D4 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x19C CALLDATASIZE PUSH1 0x4 PUSH2 0x123D JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1AF CALLDATASIZE PUSH1 0x4 PUSH2 0x1339 JUMP JUMPDEST PUSH2 0x56C JUMP JUMPDEST PUSH2 0x12E PUSH2 0x679 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1CA CALLDATASIZE PUSH1 0x4 PUSH2 0x13E7 JUMP JUMPDEST PUSH2 0x688 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0x123D JUMP JUMPDEST PUSH2 0x692 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1281 JUMP JUMPDEST PUSH2 0x6C7 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x1708 JUMP JUMPDEST PUSH2 0x212 PUSH2 0x703 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17C4 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x22D CALLDATASIZE PUSH1 0x4 PUSH2 0x12BB JUMP JUMPDEST PUSH2 0x727 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x91B JUMP JUMPDEST PUSH2 0x14C PUSH2 0x92A JUMP JUMPDEST PUSH2 0x17C PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x123D JUMP JUMPDEST PUSH2 0x930 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x292 JUMPI POP PUSH2 0x292 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x2B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C2 DUP2 PUSH1 0x0 PUSH2 0x95D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x2F0 JUMPI POP PUSH2 0x2F0 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x30C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5419675F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x370 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAE81DFE4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3FA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1263 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP3 PUSH32 0x9613F431247983A83A2B3667AA63A5174194AC89328DFADC69BE44409521B3C1 SWAP3 PUSH2 0x44B SWAP3 SWAP2 AND SWAP1 PUSH2 0x1708 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x47F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x4A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1841 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x7 SLOAD ADD JUMPDEST PUSH1 0x8 SLOAD DUP2 GT PUSH2 0x527 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x26E402B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x26E402B SWAP1 PUSH2 0x4E8 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1766 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x516 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH3 0x24EA00 DUP2 ADD SWAP1 POP PUSH2 0x4AD JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x734A802CC194E2139BFCC08E10336F24DFA14FD2C5AB70268D8706C055867066 DUP3 PUSH1 0x40 MLOAD PUSH2 0x561 SWAP2 SWAP1 PUSH2 0x1708 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x588 JUMPI POP PUSH2 0x588 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x5A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1851 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA965B3A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0xA965B3A9 SWAP2 PUSH2 0x5FD SWAP2 DUP8 SWAP2 DUP8 SWAP2 DUP8 SWAP2 ADD PUSH2 0x179C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x617 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x62B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5FA0B381CB4BDBC7063D1E5C78B90A634A6D6A12D6CB6FABE450FD4B8D1EAB01 DUP5 DUP4 DUP6 PUSH1 0x40 MLOAD PUSH2 0x66C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x173E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2C2 CALLER DUP3 PUSH2 0xBFC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH2 0x2C2 DUP2 PUSH1 0x1 PUSH2 0x95D JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x6E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH2 0x6F0 DUP3 DUP3 PUSH2 0xBFC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x718 PUSH2 0xEDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x72F PUSH2 0xEE2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x75F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x787 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x793 PUSH2 0xEF1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7D6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xF49 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x824 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x7F0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0x81C JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0x824 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x7DB JUMP JUMPDEST POP DUP3 PUSH2 0x842 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1811 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 SHL DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x85E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x880 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x13A4 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0x8B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1821 JUMP JUMPDEST DUP9 DUP2 EQ PUSH2 0x8D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1861 JUMP JUMPDEST PUSH2 0x90F DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xF50 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x938 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x954 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH2 0x2C2 DUP2 PUSH2 0x102A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x983 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1851 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9929E886 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xA0C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1386 JUMP JUMPDEST DUP1 PUSH2 0xA14 JUMPI POP DUP3 JUMPDEST ISZERO PUSH2 0xA22 JUMPI POP PUSH1 0x8 SLOAD PUSH2 0xA25 JUMP JUMPDEST POP TIMESTAMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x7 SLOAD ADD JUMPDEST DUP2 DUP2 GT PUSH2 0xBB4 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x67BDB425 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xCF7B684A SWAP1 PUSH2 0xA6C SWAP1 ADDRESS SWAP1 DUP6 SWAP1 PUSH1 0x0 NOT NUMBER ADD SWAP1 PUSH1 0x4 ADD PUSH2 0x1781 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA98 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xABC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1423 JUMP JUMPDEST SWAP3 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO PUSH2 0xBAA JUMPI DUP4 ISZERO PUSH2 0xB43 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x4005B265 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x800B64CA SWAP1 PUSH2 0xB0C SWAP1 DUP7 SWAP1 DUP6 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x18D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB3A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x36ADB291 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xDAB6CA44 SWAP1 PUSH2 0xB77 SWAP1 DUP7 SWAP1 DUP6 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x18D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH3 0x24EA00 ADD PUSH2 0xA2D JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x351B2B7A8B3659A02C6C87AC06E00099A1E5979171161A69EAB5D057DEB838EC DUP6 PUSH1 0x40 MLOAD PUSH2 0xBEE SWAP2 SWAP1 PUSH2 0x1708 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0xC87 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x72EC9795 SWAP1 PUSH2 0xC33 SWAP1 TIMESTAMP SWAP1 PUSH1 0x4 ADD PUSH2 0x1871 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC83 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1405 JUMP JUMPDEST PUSH1 0x7 SSTORE JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x72EC9795 SWAP2 PUSH2 0xCBD SWAP2 TIMESTAMP SWAP1 SWAP2 ADD SWAP1 PUSH1 0x4 ADD PUSH2 0x1871 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD0D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1405 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0xD45 SWAP1 DUP7 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1716 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD97 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1386 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xDA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0xDD9 SWAP3 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1766 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xE2B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1386 JUMP JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2597F50F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND SWAP5 PUSH4 0x4B2FEA1E SWAP5 PUSH2 0xE73 SWAP5 DUP10 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH3 0x24EA00 SWAP3 ADDRESS SWAP3 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x187F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x66C SWAP2 SWAP1 PUSH2 0x1871 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH4 0x81E45268 PUSH1 0xE0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF2B JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xF6C SWAP2 SWAP1 PUSH2 0x16F5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xFA9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1025 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0xFD9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0x100C PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x10AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0x17E0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1050 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1801 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x10EA JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x1143 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1107 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1124 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x10F2 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1198 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x115C JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1179 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1147 JUMP JUMPDEST POP SWAP1 SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x11A1 DUP2 PUSH2 0x199A JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A1 DUP2 PUSH2 0x199A JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A1 DUP2 PUSH2 0x19AE JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A1 DUP2 PUSH2 0x19B7 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x11E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x11A1 DUP2 PUSH2 0x19B7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x11A1 DUP2 PUSH2 0x19C0 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A1 DUP2 PUSH2 0x19C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x124F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125B DUP5 DUP5 PUSH2 0x11A7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125B DUP5 DUP5 PUSH2 0x11B2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12A0 DUP6 DUP6 PUSH2 0x11A7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x12B1 DUP6 DUP3 DUP7 ADD PUSH2 0x121C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x12D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12DF DUP9 DUP9 PUSH2 0x11A7 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x12F0 DUP9 DUP3 DUP10 ADD PUSH2 0x121C JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x1301 DUP9 DUP3 DUP10 ADD PUSH2 0x11A7 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x131E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x132A DUP9 DUP3 DUP10 ADD PUSH2 0x11D3 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x134E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x135A DUP7 DUP7 PUSH2 0x11A7 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x136B DUP7 DUP3 DUP8 ADD PUSH2 0x1227 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x137C DUP7 DUP3 DUP8 ADD PUSH2 0x11A7 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125B DUP5 DUP5 PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x13B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13C5 DUP7 DUP7 PUSH2 0x11C8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x13D6 DUP7 DUP3 DUP8 ADD PUSH2 0x11B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x137C DUP7 DUP3 DUP8 ADD PUSH2 0x11C8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125B DUP5 DUP5 PUSH2 0x121C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125B DUP5 DUP5 PUSH2 0x11C8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125B DUP5 DUP5 PUSH2 0x1232 JUMP JUMPDEST PUSH2 0x144A DUP2 PUSH2 0x1906 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x144A DUP2 PUSH2 0x1911 JUMP JUMPDEST PUSH2 0x144A PUSH2 0x1465 DUP3 PUSH2 0x1916 JUMP JUMPDEST PUSH2 0x1920 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1476 DUP4 DUP6 PUSH2 0x18F8 JUMP JUMPDEST SWAP4 POP PUSH2 0x1483 DUP4 DUP6 DUP5 PUSH2 0x1954 JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1494 DUP3 PUSH2 0x18F4 JUMP JUMPDEST PUSH2 0x149E DUP2 DUP6 PUSH2 0x18F8 JUMP JUMPDEST SWAP4 POP PUSH2 0x14AE DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1960 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x144A DUP2 PUSH2 0x1949 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CC DUP3 PUSH2 0x18F4 JUMP JUMPDEST PUSH2 0x14D6 DUP2 DUP6 PUSH2 0x18FD JUMP JUMPDEST SWAP4 POP PUSH2 0x14E6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1960 JUMP JUMPDEST PUSH2 0x14EF DUP2 PUSH2 0x1990 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1506 PUSH1 0x30 DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH32 0x72656365697665417070726F76616C3A205472616E73616374696F6E20657865 DUP2 MSTORE PUSH16 0x31BABA34B7B7103932BB32B93A32B217 PUSH1 0x81 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1558 PUSH1 0x26 DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15A0 PUSH1 0x15 DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15D1 PUSH1 0xF DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15FC PUSH1 0xC DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1624 PUSH1 0x19 DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH32 0x64656C656761746565206164647265737320696E76616C696400000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165D PUSH1 0x18 DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1696 PUSH1 0xF DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x144A DUP2 PUSH2 0x1920 JUMP JUMPDEST PUSH2 0x144A DUP2 PUSH2 0x192F JUMP JUMPDEST PUSH2 0x144A DUP2 PUSH2 0x1938 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16DB DUP3 DUP7 PUSH2 0x1459 JUMP JUMPDEST PUSH1 0x1C DUP3 ADD SWAP2 POP PUSH2 0x16EC DUP3 DUP5 DUP7 PUSH2 0x146A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1701 DUP3 DUP5 PUSH2 0x1489 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A1 DUP3 DUP5 PUSH2 0x1441 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1724 DUP3 DUP7 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x1731 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x125B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x174C DUP3 DUP7 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x1759 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x125B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x16BD JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x1774 DUP3 DUP6 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x1701 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x178F DUP3 DUP7 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x1731 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x17AA DUP3 DUP7 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x17B7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x16BD JUMP JUMPDEST PUSH2 0x125B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1441 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A1 DUP3 DUP5 PUSH2 0x1450 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A1 DUP3 DUP5 PUSH2 0x14B8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1701 DUP2 DUP5 PUSH2 0x14C1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x154B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x1593 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x15C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x15EF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x1617 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x1650 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x1689 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A1 DUP3 DUP5 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x188D DUP3 DUP10 PUSH2 0x16B4 JUMP JUMPDEST PUSH2 0x189A PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x16B4 JUMP JUMPDEST PUSH2 0x18A7 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x16B4 JUMP JUMPDEST PUSH2 0x18B4 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x16B4 JUMP JUMPDEST PUSH2 0x18C1 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x18CE PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1441 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x18E7 DUP3 DUP7 PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x17B7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x16B4 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11A1 DUP3 PUSH2 0x1923 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF NOT AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11A1 DUP3 PUSH2 0x1906 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x197B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1963 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x198A JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x19A3 DUP2 PUSH2 0x1906 JUMP JUMPDEST DUP2 EQ PUSH2 0x2C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A3 DUP2 PUSH2 0x1911 JUMP JUMPDEST PUSH2 0x19A3 DUP2 PUSH2 0x1920 JUMP JUMPDEST PUSH2 0x19A3 DUP2 PUSH2 0x192F JUMP JUMPDEST PUSH2 0x19A3 DUP2 PUSH2 0x1938 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH30 0x2C296B77B006DB861FA1B63A1D47E03CAF7A3E733B673087525CCDE5ABE9 SWAP2 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "449:6882:78:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;449:6882:78;;780:87:137;853:10;780:87;:::o;449:6882:78:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101215760003560e01c80636a26b57f116100ad5780638f32d59b116100715780638f32d59b1461020a5780638f4ffcb11461021f578063a3e6761014610232578063c24a0f8b1461023a578063f2fde38b1461024257610121565b80636a26b57f146101b45780637547c7a3146101bc57806378f24bc6146101cf57806381e45268146101e25780638da5cb5b146101f557610121565b806349df728c116100f457806349df728c146101695780634cf088d91461017e5780635419675f146101865780635c19a95c1461018e57806362dc2f35146101a157610121565b806308dcb360146101265780630b97bc86146101445780630fb5a6b41461015957806313d033c014610161575b600080fd5b61012e610255565b60405161013b91906117d2565b60405180910390f35b61014c610264565b60405161013b9190611871565b61014c61026a565b61014c610270565b61017c61017736600461123d565b610276565b005b61012e6102c5565b61017c6102d4565b61017c61019c36600461123d565b610455565b61017c6101af366004611339565b61056c565b61012e610679565b61017c6101ca3660046113e7565b610688565b61017c6101dd36600461123d565b610692565b61017c6101f0366004611281565b6106c7565b6101fd6106f4565b60405161013b9190611708565b610212610703565b60405161013b91906117c4565b61017c61022d3660046112bb565b610727565b6101fd61091b565b61014c61092a565b61017c61025036600461123d565b610930565b6001546001600160a01b031681565b60075481565b60065481565b60055481565b6003546001600160a01b03163314806102925750610292610703565b6102b75760405162461bcd60e51b81526004016102ae90611831565b60405180910390fd5b6102c281600061095d565b50565b6002546001600160a01b031681565b6003546001600160a01b03163314806102f057506102f0610703565b61030c5760405162461bcd60e51b81526004016102ae90611831565b600260009054906101000a90046001600160a01b03166001600160a01b0316635419675f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035c57600080fd5b505af1158015610370573d6000803e3d6000fd5b50505050600260009054906101000a90046001600160a01b03166001600160a01b031663ae81dfe46040518163ffffffff1660e01b815260040160206040518083038186803b1580156103c257600080fd5b505afa1580156103d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103fa9190810190611263565b600280546001600160a01b0319166001600160a01b03928316179081905560405133927f9613f431247983a83a2b3667aa63a5174194ac89328dfadc69be44409521b3c19261044b92911690611708565b60405180910390a2565b6003546001600160a01b0316331461047f5760405162461bcd60e51b81526004016102ae90611831565b6001600160a01b0381166104a55760405162461bcd60e51b81526004016102ae90611841565b600554600754015b60085481116105275760025460405163026e402b60e01b81526001600160a01b039091169063026e402b906104e89085908590600401611766565b600060405180830381600087803b15801561050257600080fd5b505af1158015610516573d6000803e3d6000fd5b505050506224ea00810190506104ad565b50336001600160a01b03167f734a802cc194e2139bfcc08e10336f24dfa14fd2c5ab70268d8706c055867066826040516105619190611708565b60405180910390a250565b6003546001600160a01b03163314806105885750610588610703565b6105a45760405162461bcd60e51b81526004016102ae90611831565b6001600160a01b0381166105ca5760405162461bcd60e51b81526004016102ae90611851565b6004805460405163a965b3a960e01b81526001600160a01b039091169163a965b3a9916105fd918791879187910161179c565b600060405180830381600087803b15801561061757600080fd5b505af115801561062b573d6000803e3d6000fd5b50505050336001600160a01b03167f5fa0b381cb4bdbc7063d1e5c78b90a634a6d6a12d6cb6fabe450fd4b8d1eab0184838560405161066c9392919061173e565b60405180910390a2505050565b6004546001600160a01b031681565b6102c23382610bfc565b6002546001600160a01b031633146106bc5760405162461bcd60e51b81526004016102ae90611831565b6102c281600161095d565b3330146106e65760405162461bcd60e51b81526004016102ae90611831565b6106f08282610bfc565b5050565b6000546001600160a01b031690565b600080546001600160a01b0316610718610ede565b6001600160a01b031614905090565b61072f610ee2565b6001600160a01b0316336001600160a01b03161461075f5760405162461bcd60e51b81526004016102ae90611831565b336001600160a01b038416146107875760405162461bcd60e51b81526004016102ae90611831565b60006060610793610ef1565b905060006107d685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f4992505050565b905060005b8251811015610824578281815181106107f057fe5b60200260200101516001600160e01b031916826001600160e01b031916141561081c5760019350610824565b6001016107db565b50826108425760405162461bcd60e51b81526004016102ae90611811565b600080600060201b878760405160200161085e939291906116cf565b60405160208183030381529060405280602001905161088091908101906113a4565b9093509150506001600160a01b03808316908b16146108b15760405162461bcd60e51b81526004016102ae90611821565b8881146108d05760405162461bcd60e51b81526004016102ae90611861565b61090f87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f5092505050565b50505050505050505050565b6003546001600160a01b031681565b60085481565b610938610703565b6109545760405162461bcd60e51b81526004016102ae90611831565b6102c28161102a565b6001600160a01b0382166109835760405162461bcd60e51b81526004016102ae90611851565b600080600260009054906101000a90046001600160a01b03166001600160a01b0316639929e8866040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a0c9190810190611386565b80610a145750825b15610a225750600854610a25565b50425b600554600754015b818111610bb4576002546040516367bdb42560e11b81526001600160a01b039091169063cf7b684a90610a6c9030908590600019430190600401611781565b60206040518083038186803b158015610a8457600080fd5b505afa158015610a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610abc9190810190611423565b92506bffffffffffffffffffffffff831615610baa578315610b4357600254604051634005b26560e11b81526001600160a01b039091169063800b64ca90610b0c90869085908a906004016118d9565b600060405180830381600087803b158015610b2657600080fd5b505af1158015610b3a573d6000803e3d6000fd5b50505050610baa565b6002546040516336adb29160e21b81526001600160a01b039091169063dab6ca4490610b7790869085908a906004016118d9565b600060405180830381600087803b158015610b9157600080fd5b505af1158015610ba5573d6000803e3d6000fd5b505050505b6224ea0001610a2d565b50336001600160a01b03167f351b2b7a8b3659a02c6c87ac06e00099a1e5979171161a69eab5d057deb838ec85604051610bee9190611708565b60405180910390a250505050565b600754610c87576002546040516372ec979560e01b81526001600160a01b03909116906372ec979590610c33904290600401611871565b60206040518083038186803b158015610c4b57600080fd5b505afa158015610c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c839190810190611405565b6007555b6002546006546040516372ec979560e01b81526001600160a01b03909216916372ec979591610cbd914290910190600401611871565b60206040518083038186803b158015610cd557600080fd5b505afa158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d0d9190810190611405565b6008556001546040516323b872dd60e01b81526000916001600160a01b0316906323b872dd90610d4590869030908790600401611716565b602060405180830381600087803b158015610d5f57600080fd5b505af1158015610d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d979190810190611386565b905080610da357600080fd5b60015460025460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392610dd9929116908690600401611766565b602060405180830381600087803b158015610df357600080fd5b505af1158015610e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2b9190810190611386565b50600254600554600654600354604051632597f50f60e11b81526001600160a01b0394851694634b2fea1e94610e73948994919390926224ea0092309291169060040161187f565b600060405180830381600087803b158015610e8d57600080fd5b505af1158015610ea1573d6000803e3d6000fd5b50505050826001600160a01b03167fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef8360405161066c9190611871565b3390565b6001546001600160a01b031690565b604080516001808252818301909252606091829190602080830190803883390190505090506381e4526860e01b81600081518110610f2b57fe5b6001600160e01b031990921660209283029190910190910152905090565b6020015190565b60006060306001600160a01b031683604051610f6c91906116f5565b6000604051808303816000865af19150503d8060008114610fa9576040519150601f19603f3d011682016040523d82523d6000602084013e610fae565b606091505b509150915081611025576044815111610fd95760405162461bcd60e51b81526004016102ae906117f1565b61100c6040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b815250826110ab565b60405162461bcd60e51b81526004016102ae91906117e0565b505050565b6001600160a01b0381166110505760405162461bcd60e51b81526004016102ae90611801565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6060808390506060839050606060448251845101036040519080825280601f01601f1916602001820160405280156110ea576020820181803883390190505b509050806000805b85518110156111435785818151811061110757fe5b602001015160f81c60f81b83838060010194508151811061112457fe5b60200101906001600160f81b031916908160001a9053506001016110f2565b5060445b84518110156111985784818151811061115c57fe5b602001015160f81c60f81b83838060010194508151811061117957fe5b60200101906001600160f81b031916908160001a905350600101611147565b50909450505050505b92915050565b80356111a18161199a565b80516111a18161199a565b80516111a1816119ae565b80516111a1816119b7565b60008083601f8401126111e557600080fd5b50813567ffffffffffffffff8111156111fd57600080fd5b60208301915083600182028301111561121557600080fd5b9250929050565b80356111a1816119b7565b80356111a1816119c0565b80516111a1816119c9565b60006020828403121561124f57600080fd5b600061125b84846111a7565b949350505050565b60006020828403121561127557600080fd5b600061125b84846111b2565b6000806040838503121561129457600080fd5b60006112a085856111a7565b92505060206112b18582860161121c565b9150509250929050565b6000806000806000608086880312156112d357600080fd5b60006112df88886111a7565b95505060206112f08882890161121c565b9450506040611301888289016111a7565b935050606086013567ffffffffffffffff81111561131e57600080fd5b61132a888289016111d3565b92509250509295509295909350565b60008060006060848603121561134e57600080fd5b600061135a86866111a7565b935050602061136b86828701611227565b925050604061137c868287016111a7565b9150509250925092565b60006020828403121561139857600080fd5b600061125b84846111bd565b6000806000606084860312156113b957600080fd5b60006113c586866111c8565b93505060206113d6868287016111b2565b925050604061137c868287016111c8565b6000602082840312156113f957600080fd5b600061125b848461121c565b60006020828403121561141757600080fd5b600061125b84846111c8565b60006020828403121561143557600080fd5b600061125b8484611232565b61144a81611906565b82525050565b61144a81611911565b61144a61146582611916565b611920565b600061147683856118f8565b9350611483838584611954565b50500190565b6000611494826118f4565b61149e81856118f8565b93506114ae818560208601611960565b9290920192915050565b61144a81611949565b60006114cc826118f4565b6114d681856118fd565b93506114e6818560208601611960565b6114ef81611990565b9093019392505050565b60006115066030836118fd565b7f72656365697665417070726f76616c3a205472616e73616374696f6e2065786581526f31baba34b7b7103932bb32b93a32b21760811b602082015260400192915050565b60006115586026836118fd565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006115a06015836118fd565b741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b815260200192915050565b60006115d1600f836118fd565b6e0e6cadcc8cae440dad2e6dac2e8c6d608b1b815260200192915050565b60006115fc600c836118fd565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006116246019836118fd565b7f64656c656761746565206164647265737320696e76616c696400000000000000815260200192915050565b600061165d6018836118fd565b7f7265636569766572206164647265737320696e76616c69640000000000000000815260200192915050565b6000611696600f836118fd565b6e0c2dadeeadce840dad2e6dac2e8c6d608b1b815260200192915050565b61144a81611920565b61144a8161192f565b61144a81611938565b60006116db8286611459565b601c820191506116ec82848661146a565b95945050505050565b60006117018284611489565b9392505050565b602081016111a18284611441565b606081016117248286611441565b6117316020830185611441565b61125b60408301846116b4565b6060810161174c8286611441565b6117596020830185611441565b61125b60408301846116bd565b604081016117748285611441565b61170160208301846116b4565b6060810161178f8286611441565b61173160208301856116b4565b606081016117aa8286611441565b6117b760208301856116bd565b61125b6040830184611441565b602081016111a18284611450565b602081016111a182846114b8565b6020808252810161170181846114c1565b602080825281016111a1816114f9565b602080825281016111a18161154b565b602080825281016111a181611593565b602080825281016111a1816115c4565b602080825281016111a1816115ef565b602080825281016111a181611617565b602080825281016111a181611650565b602080825281016111a181611689565b602081016111a182846116b4565b60c0810161188d82896116b4565b61189a60208301886116b4565b6118a760408301876116b4565b6118b460608301866116b4565b6118c16080830185611441565b6118ce60a0830184611441565b979650505050505050565b606081016118e782866116c6565b6117b760208301856116b4565b5190565b919050565b90815260200190565b60006111a182611923565b151590565b63ffffffff191690565b90565b6001600160a01b031690565b63ffffffff1690565b6bffffffffffffffffffffffff1690565b60006111a182611906565b82818337506000910152565b60005b8381101561197b578181015183820152602001611963565b8381111561198a576000848401525b50505050565b601f01601f191690565b6119a381611906565b81146102c257600080fd5b6119a381611911565b6119a381611920565b6119a38161192f565b6119a38161193856fea365627a7a723158207d2c296b77b006db861fa1b63a1d47e03caf7a3e733b673087525ccde5abe9916c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x121 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A26B57F GT PUSH2 0xAD JUMPI DUP1 PUSH4 0x8F32D59B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x242 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x7547C7A3 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0x78F24BC6 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x81E45268 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1F5 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x49DF728C GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x49DF728C EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0x5419675F EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0x62DC2F35 EQ PUSH2 0x1A1 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x161 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12E PUSH2 0x255 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x1871 JUMP JUMPDEST PUSH2 0x14C PUSH2 0x26A JUMP JUMPDEST PUSH2 0x14C PUSH2 0x270 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x177 CALLDATASIZE PUSH1 0x4 PUSH2 0x123D JUMP JUMPDEST PUSH2 0x276 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12E PUSH2 0x2C5 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x2D4 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x19C CALLDATASIZE PUSH1 0x4 PUSH2 0x123D JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1AF CALLDATASIZE PUSH1 0x4 PUSH2 0x1339 JUMP JUMPDEST PUSH2 0x56C JUMP JUMPDEST PUSH2 0x12E PUSH2 0x679 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1CA CALLDATASIZE PUSH1 0x4 PUSH2 0x13E7 JUMP JUMPDEST PUSH2 0x688 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0x123D JUMP JUMPDEST PUSH2 0x692 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1281 JUMP JUMPDEST PUSH2 0x6C7 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x1708 JUMP JUMPDEST PUSH2 0x212 PUSH2 0x703 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17C4 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x22D CALLDATASIZE PUSH1 0x4 PUSH2 0x12BB JUMP JUMPDEST PUSH2 0x727 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x91B JUMP JUMPDEST PUSH2 0x14C PUSH2 0x92A JUMP JUMPDEST PUSH2 0x17C PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x123D JUMP JUMPDEST PUSH2 0x930 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x292 JUMPI POP PUSH2 0x292 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x2B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C2 DUP2 PUSH1 0x0 PUSH2 0x95D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x2F0 JUMPI POP PUSH2 0x2F0 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x30C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5419675F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x370 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAE81DFE4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3FA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1263 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP3 PUSH32 0x9613F431247983A83A2B3667AA63A5174194AC89328DFADC69BE44409521B3C1 SWAP3 PUSH2 0x44B SWAP3 SWAP2 AND SWAP1 PUSH2 0x1708 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x47F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x4A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1841 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x7 SLOAD ADD JUMPDEST PUSH1 0x8 SLOAD DUP2 GT PUSH2 0x527 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x26E402B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x26E402B SWAP1 PUSH2 0x4E8 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1766 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x516 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH3 0x24EA00 DUP2 ADD SWAP1 POP PUSH2 0x4AD JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x734A802CC194E2139BFCC08E10336F24DFA14FD2C5AB70268D8706C055867066 DUP3 PUSH1 0x40 MLOAD PUSH2 0x561 SWAP2 SWAP1 PUSH2 0x1708 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x588 JUMPI POP PUSH2 0x588 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x5A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1851 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA965B3A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0xA965B3A9 SWAP2 PUSH2 0x5FD SWAP2 DUP8 SWAP2 DUP8 SWAP2 DUP8 SWAP2 ADD PUSH2 0x179C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x617 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x62B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5FA0B381CB4BDBC7063D1E5C78B90A634A6D6A12D6CB6FABE450FD4B8D1EAB01 DUP5 DUP4 DUP6 PUSH1 0x40 MLOAD PUSH2 0x66C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x173E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2C2 CALLER DUP3 PUSH2 0xBFC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH2 0x2C2 DUP2 PUSH1 0x1 PUSH2 0x95D JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x6E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH2 0x6F0 DUP3 DUP3 PUSH2 0xBFC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x718 PUSH2 0xEDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x72F PUSH2 0xEE2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x75F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x787 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x793 PUSH2 0xEF1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7D6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xF49 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x824 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x7F0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0x81C JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0x824 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x7DB JUMP JUMPDEST POP DUP3 PUSH2 0x842 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1811 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 SHL DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x85E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x880 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x13A4 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0x8B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1821 JUMP JUMPDEST DUP9 DUP2 EQ PUSH2 0x8D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1861 JUMP JUMPDEST PUSH2 0x90F DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xF50 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x938 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x954 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1831 JUMP JUMPDEST PUSH2 0x2C2 DUP2 PUSH2 0x102A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x983 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1851 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9929E886 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xA0C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1386 JUMP JUMPDEST DUP1 PUSH2 0xA14 JUMPI POP DUP3 JUMPDEST ISZERO PUSH2 0xA22 JUMPI POP PUSH1 0x8 SLOAD PUSH2 0xA25 JUMP JUMPDEST POP TIMESTAMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x7 SLOAD ADD JUMPDEST DUP2 DUP2 GT PUSH2 0xBB4 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x67BDB425 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xCF7B684A SWAP1 PUSH2 0xA6C SWAP1 ADDRESS SWAP1 DUP6 SWAP1 PUSH1 0x0 NOT NUMBER ADD SWAP1 PUSH1 0x4 ADD PUSH2 0x1781 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA98 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xABC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1423 JUMP JUMPDEST SWAP3 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO PUSH2 0xBAA JUMPI DUP4 ISZERO PUSH2 0xB43 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x4005B265 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x800B64CA SWAP1 PUSH2 0xB0C SWAP1 DUP7 SWAP1 DUP6 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x18D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB3A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x36ADB291 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xDAB6CA44 SWAP1 PUSH2 0xB77 SWAP1 DUP7 SWAP1 DUP6 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x18D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH3 0x24EA00 ADD PUSH2 0xA2D JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x351B2B7A8B3659A02C6C87AC06E00099A1E5979171161A69EAB5D057DEB838EC DUP6 PUSH1 0x40 MLOAD PUSH2 0xBEE SWAP2 SWAP1 PUSH2 0x1708 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0xC87 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x72EC9795 SWAP1 PUSH2 0xC33 SWAP1 TIMESTAMP SWAP1 PUSH1 0x4 ADD PUSH2 0x1871 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC83 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1405 JUMP JUMPDEST PUSH1 0x7 SSTORE JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x72EC9795 SWAP2 PUSH2 0xCBD SWAP2 TIMESTAMP SWAP1 SWAP2 ADD SWAP1 PUSH1 0x4 ADD PUSH2 0x1871 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD0D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1405 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0xD45 SWAP1 DUP7 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1716 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD97 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1386 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xDA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0xDD9 SWAP3 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1766 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xE2B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1386 JUMP JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2597F50F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND SWAP5 PUSH4 0x4B2FEA1E SWAP5 PUSH2 0xE73 SWAP5 DUP10 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH3 0x24EA00 SWAP3 ADDRESS SWAP3 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x187F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x66C SWAP2 SWAP1 PUSH2 0x1871 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH4 0x81E45268 PUSH1 0xE0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF2B JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xF6C SWAP2 SWAP1 PUSH2 0x16F5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xFA9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1025 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0xFD9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x17F1 JUMP JUMPDEST PUSH2 0x100C PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x10AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0x17E0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1050 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1801 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x10EA JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x1143 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1107 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1124 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x10F2 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1198 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x115C JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1179 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1147 JUMP JUMPDEST POP SWAP1 SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x11A1 DUP2 PUSH2 0x199A JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A1 DUP2 PUSH2 0x199A JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A1 DUP2 PUSH2 0x19AE JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A1 DUP2 PUSH2 0x19B7 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x11E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x11A1 DUP2 PUSH2 0x19B7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x11A1 DUP2 PUSH2 0x19C0 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A1 DUP2 PUSH2 0x19C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x124F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125B DUP5 DUP5 PUSH2 0x11A7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125B DUP5 DUP5 PUSH2 0x11B2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12A0 DUP6 DUP6 PUSH2 0x11A7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x12B1 DUP6 DUP3 DUP7 ADD PUSH2 0x121C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x12D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12DF DUP9 DUP9 PUSH2 0x11A7 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x12F0 DUP9 DUP3 DUP10 ADD PUSH2 0x121C JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x1301 DUP9 DUP3 DUP10 ADD PUSH2 0x11A7 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x131E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x132A DUP9 DUP3 DUP10 ADD PUSH2 0x11D3 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x134E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x135A DUP7 DUP7 PUSH2 0x11A7 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x136B DUP7 DUP3 DUP8 ADD PUSH2 0x1227 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x137C DUP7 DUP3 DUP8 ADD PUSH2 0x11A7 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125B DUP5 DUP5 PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x13B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13C5 DUP7 DUP7 PUSH2 0x11C8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x13D6 DUP7 DUP3 DUP8 ADD PUSH2 0x11B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x137C DUP7 DUP3 DUP8 ADD PUSH2 0x11C8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125B DUP5 DUP5 PUSH2 0x121C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125B DUP5 DUP5 PUSH2 0x11C8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125B DUP5 DUP5 PUSH2 0x1232 JUMP JUMPDEST PUSH2 0x144A DUP2 PUSH2 0x1906 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x144A DUP2 PUSH2 0x1911 JUMP JUMPDEST PUSH2 0x144A PUSH2 0x1465 DUP3 PUSH2 0x1916 JUMP JUMPDEST PUSH2 0x1920 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1476 DUP4 DUP6 PUSH2 0x18F8 JUMP JUMPDEST SWAP4 POP PUSH2 0x1483 DUP4 DUP6 DUP5 PUSH2 0x1954 JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1494 DUP3 PUSH2 0x18F4 JUMP JUMPDEST PUSH2 0x149E DUP2 DUP6 PUSH2 0x18F8 JUMP JUMPDEST SWAP4 POP PUSH2 0x14AE DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1960 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x144A DUP2 PUSH2 0x1949 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CC DUP3 PUSH2 0x18F4 JUMP JUMPDEST PUSH2 0x14D6 DUP2 DUP6 PUSH2 0x18FD JUMP JUMPDEST SWAP4 POP PUSH2 0x14E6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1960 JUMP JUMPDEST PUSH2 0x14EF DUP2 PUSH2 0x1990 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1506 PUSH1 0x30 DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH32 0x72656365697665417070726F76616C3A205472616E73616374696F6E20657865 DUP2 MSTORE PUSH16 0x31BABA34B7B7103932BB32B93A32B217 PUSH1 0x81 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1558 PUSH1 0x26 DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15A0 PUSH1 0x15 DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15D1 PUSH1 0xF DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15FC PUSH1 0xC DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1624 PUSH1 0x19 DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH32 0x64656C656761746565206164647265737320696E76616C696400000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165D PUSH1 0x18 DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1696 PUSH1 0xF DUP4 PUSH2 0x18FD JUMP JUMPDEST PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x144A DUP2 PUSH2 0x1920 JUMP JUMPDEST PUSH2 0x144A DUP2 PUSH2 0x192F JUMP JUMPDEST PUSH2 0x144A DUP2 PUSH2 0x1938 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16DB DUP3 DUP7 PUSH2 0x1459 JUMP JUMPDEST PUSH1 0x1C DUP3 ADD SWAP2 POP PUSH2 0x16EC DUP3 DUP5 DUP7 PUSH2 0x146A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1701 DUP3 DUP5 PUSH2 0x1489 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A1 DUP3 DUP5 PUSH2 0x1441 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1724 DUP3 DUP7 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x1731 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x125B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x174C DUP3 DUP7 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x1759 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x125B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x16BD JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x1774 DUP3 DUP6 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x1701 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x178F DUP3 DUP7 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x1731 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x17AA DUP3 DUP7 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x17B7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x16BD JUMP JUMPDEST PUSH2 0x125B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1441 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A1 DUP3 DUP5 PUSH2 0x1450 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A1 DUP3 DUP5 PUSH2 0x14B8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1701 DUP2 DUP5 PUSH2 0x14C1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x154B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x1593 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x15C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x15EF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x1617 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x1650 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A1 DUP2 PUSH2 0x1689 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A1 DUP3 DUP5 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x188D DUP3 DUP10 PUSH2 0x16B4 JUMP JUMPDEST PUSH2 0x189A PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x16B4 JUMP JUMPDEST PUSH2 0x18A7 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x16B4 JUMP JUMPDEST PUSH2 0x18B4 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x16B4 JUMP JUMPDEST PUSH2 0x18C1 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x18CE PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1441 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x18E7 DUP3 DUP7 PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x17B7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x16B4 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11A1 DUP3 PUSH2 0x1923 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF NOT AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11A1 DUP3 PUSH2 0x1906 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x197B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1963 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x198A JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x19A3 DUP2 PUSH2 0x1906 JUMP JUMPDEST DUP2 EQ PUSH2 0x2C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A3 DUP2 PUSH2 0x1911 JUMP JUMPDEST PUSH2 0x19A3 DUP2 PUSH2 0x1920 JUMP JUMPDEST PUSH2 0x19A3 DUP2 PUSH2 0x192F JUMP JUMPDEST PUSH2 0x19A3 DUP2 PUSH2 0x1938 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH30 0x2C296B77B006DB861FA1B63A1D47E03CAF7A3E733B673087525CCDE5ABE9 SWAP2 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "449:6882:78:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;449:6882:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;506:17:85;;;:::i;:::-;;;;;;;;;;;;;;;;996:24;;;:::i;:::-;;;;;;;;925:23;;;:::i;820:20::-;;;:::i;4159:100:78:-;;;;;;;;;:::i;:::-;;570:22:85;;;:::i;6458:220:78:-;;;:::i;3095:497::-;;;;;;;;;:::i;5970:387::-;;;;;;;;;:::i;702:39:85:-;;;:::i;1463:86:78:-;;;;;;;;;:::i;3813:158::-;;;;;;;;;:::i;1872:129::-;;;;;;;;;:::i;851:68:142:-;;;:::i;:::-;;;;;;;;1134:83;;;:::i;:::-;;;;;;;;494:849:48;;;;;;;;;:::i;641:25:85:-;;;:::i;1066:22::-;;;:::i;1351:98:142:-;;;;;;;;;:::i;506:17:85:-;;;-1:-1:-1;;;;;506:17:85;;:::o;996:24::-;;;;:::o;925:23::-;;;;:::o;820:20::-;;;;:::o;4159:100:78:-;1100:10;;-1:-1:-1;;;;;1100:10:78;1086;:24;;:37;;;1114:9;:7;:9::i;:::-;1078:62;;;;-1:-1:-1;;;1078:62:78;;;;;;;;;;;;;;;;;4223:32;4239:8;4249:5;4223:15;:32::i;:::-;4159:100;:::o;570:22:85:-;;;-1:-1:-1;;;;;570:22:85;;:::o;6458:220:78:-;1100:10;;-1:-1:-1;;;;;1100:10:78;1086;:24;;:37;;;1114:9;:7;:9::i;:::-;1078:62;;;;-1:-1:-1;;;1078:62:78;;;;;;;;;6519:7;;;;;;;;;-1:-1:-1;;;;;6519:7:78;-1:-1:-1;;;;;6519:35:78;;:37;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6519:37:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6519:37:78;;;;6578:7;;;;;;;;;-1:-1:-1;;;;;6578:7:78;-1:-1:-1;;;;;6578:26:78;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6578:28:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6578:28:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6578:28:78;;;;;;;;;6560:7;:47;;-1:-1:-1;;;;;;6560:47:78;-1:-1:-1;;;;;6560:47:78;;;;;;;;6616:58;;6645:10;;6616:58;;;;6665:7;;;6616:58;;;;;;;;;;6458:220::o;3095:497::-;1283:10;;-1:-1:-1;;;;;1283:10:78;1269;:24;1261:49;;;;-1:-1:-1;;;1261:49:78;;;;;;;;;-1:-1:-1;;;;;3167:24:78;;3159:62;;;;-1:-1:-1;;;3159:62:78;;;;;;;;;3463:5;;3451:9;;:17;3434:108;3475:7;;3470:1;:12;3434:108;;3506:7;;:31;;-1:-1:-1;;;3506:31:78;;-1:-1:-1;;;;;3506:7:78;;;;:16;;:31;;3523:10;;3535:1;;3506:31;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3506:31:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3506:31:78;;;;1182:7:85;3484:15:78;;;;3434:108;;;;3565:10;-1:-1:-1;;;;;3550:38:78;;3577:10;3550:38;;;;;;;;;;;;;;;3095:497;:::o;5970:387::-;1100:10;;-1:-1:-1;;;;;1100:10:78;1086;:24;;:37;;;1114:9;:7;:9::i;:::-;1078:62;;;;-1:-1:-1;;;1078:62:78;;;;;;;;;-1:-1:-1;;;;;6102:23:78;;6094:60;;;;-1:-1:-1;;;6094:60:78;;;;;;;;;6201:15;;;:68;;-1:-1:-1;;;6201:68:78;;-1:-1:-1;;;;;6201:15:78;;;;:24;;:68;;6226:14;;6242:15;;6259:9;;6201:68;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6201:68:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6201:68:78;;;;6298:10;-1:-1:-1;;;;;6279:74:78;;6310:14;6326:9;6337:15;6279:74;;;;;;;;;;;;;;;;;5970:387;;;:::o;702:39:85:-;;;-1:-1:-1;;;;;702:39:85;;:::o;1463:86:78:-;1512:33;1525:10;1537:7;1512:12;:33::i;3813:158::-;3906:7;;-1:-1:-1;;;;;3906:7:78;3884:10;:30;3876:55;;;;-1:-1:-1;;;3876:55:78;;;;;;;;;3936:31;3952:8;3962:4;3936:15;:31::i;1872:129::-;323:10:48;345:4;323:27;315:52;;;;-1:-1:-1;;;315:52:48;;;;;;;;;1967:30:78;1980:7;1989;1967:12;:30::i;:::-;1872:129;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;494:849:48:-;677:11;:9;:11::i;:::-;-1:-1:-1;;;;;663:25:48;:10;-1:-1:-1;;;;;663:25:48;;655:50;;;;-1:-1:-1;;;655:50:48;;;;;;;;;717:10;-1:-1:-1;;;;;717:20:48;;;709:45;;;;-1:-1:-1;;;709:45:48;;;;;;;;;786:14;812:25;840:15;:13;:15::i;:::-;812:43;;859:10;872:14;880:5;;872:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;872:7:48;;-1:-1:-1;;;872:14:48:i;:::-;859:27;-1:-1:-1;895:9:48;890:120;914:9;:16;910:1;:20;890:120;;;953:9;963:1;953:12;;;;;;;;;;;;;;-1:-1:-1;;;;;946:19:48;;:3;-1:-1:-1;;;;;946:19:48;;;942:64;;;985:4;973:16;;995:5;;942:64;932:3;;890:120;;;;1021:9;1013:43;;;;-1:-1:-1;;;1013:43:48;;;;;;;;;1091:14;1109;1184:1;1176:10;;1188:5;;1159:35;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1159:35:48;;;1148:76;;;;;;;;;;;;;;1127:97;;-1:-1:-1;1127:97:48;-1:-1:-1;;;;;;;1236:17:48;;;;;;;1228:45;;;;-1:-1:-1;;;1228:45:48;;;;;;;;;1295:7;1285:6;:17;1277:45;;;;-1:-1:-1;;;1277:45:48;;;;;;;;;1327:12;1333:5;;1327:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1327:5:48;;-1:-1:-1;;;1327:12:48:i;:::-;494:849;;;;;;;;;;:::o;641:25:85:-;;;-1:-1:-1;;;;;641:25:85;;:::o;1066:22::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;4608:1106:78:-;-1:-1:-1;;;;;4691:22:78;;4683:59;;;;-1:-1:-1;;;4683:59:78;;;;;;;;;4747:12;4842:11;4975:7;;;;;;;;;-1:-1:-1;;;;;4975:7:78;-1:-1:-1;;;;;4975:19:78;;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4975:21:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4975:21:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4975:21:78;;;;;;;;;:37;;;;5000:12;4975:37;4971:103;;;-1:-1:-1;5025:7:78;;4971:103;;;-1:-1:-1;5054:15:78;4971:103;5315:5;;5303:9;;:17;5286:378;5327:3;5322:1;:8;5286:378;;5399:7;;:67;;-1:-1:-1;;;5399:67:78;;-1:-1:-1;;;;;5399:7:78;;;;:31;;:67;;5439:4;;5446:1;;-1:-1:-1;;5449:12:78;:16;;5399:67;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5399:67:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5399:67:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5399:67:78;;;;;;;;;5391:75;-1:-1:-1;5504:9:78;;;;5500:160;;5525:12;5521:134;;;5546:7;;:46;;-1:-1:-1;;;5546:46:78;;-1:-1:-1;;;;;5546:7:78;;;;:26;;:46;;5573:5;;5580:1;;5583:8;;5546:46;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5546:46:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5546:46:78;;;;5521:134;;;5612:7;;:36;;-1:-1:-1;;;5612:36:78;;-1:-1:-1;;;;;5612:7:78;;;;:16;;:36;;5629:5;;5636:1;;5639:8;;5612:36;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5612:36:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5612:36:78;;;;5521:134;1182:7:85;5332:15:78;5286:378;;;;5689:10;-1:-1:-1;;;;;5673:37:78;;5701:8;5673:37;;;;;;;;;;;;;;;4608:1106;;;;:::o;2262:665::-;2404:9;;2400:86;;2437:7;;:44;;-1:-1:-1;;;2437:44:78;;-1:-1:-1;;;;;2437:7:78;;;;:27;;:44;;2465:15;;2437:44;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2437:44:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2437:44:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2437:44:78;;;;;;;;;2425:9;:56;2400:86;2499:7;;2545:8;;2499:55;;-1:-1:-1;;;2499:55:78;;-1:-1:-1;;;;;2499:7:78;;;;:27;;:55;;2527:15;:26;;;;2499:55;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:55:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2499:55:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2499:55:78;;;;;;;;;2489:7;:65;2623:3;;:49;;-1:-1:-1;;;2623:49:78;;2608:12;;-1:-1:-1;;;;;2623:3:78;;:16;;:49;;2640:7;;2657:4;;2664:7;;2623:49;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2623:49:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2623:49:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2623:49:78;;;;;;;;;2608:64;;2684:7;2676:16;;;;;;2751:3;;2771:7;;2751:38;;-1:-1:-1;;;2751:38:78;;-1:-1:-1;;;;;2751:3:78;;;;:11;;:38;;2771:7;;;2781;;2751:38;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2751:38:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2751:38:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2751:38:78;;;;;;;;;-1:-1:-1;2794:7:78;;2828:5;;2835:8;;2872:10;;2794:89;;-1:-1:-1;;;2794:89:78;;-1:-1:-1;;;;;2794:7:78;;;;:24;;:89;;2819:7;;2828:5;;2835:8;;1182:7:85;;2865:4:78;;2872:10;;;2794:89;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2794:89:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2794:89:78;;;;2906:7;-1:-1:-1;;;;;2893:30:78;;2915:7;2893:30;;;;;;;780:87:137;853:10;780:87;:::o;6841:80:78:-;6913:3;;-1:-1:-1;;;;;6913:3:78;6841:80;:::o;7137:192::-;7234:15;;;7247:1;7234:15;;;;;;;;;7185;;;;7234;;;;;;;105:10:-1;7234:15:78;88:34:-1;136:17;;-1:-1;7234:15:78;7206:43;;7268:37;;;7253:9;7263:1;7253:12;;;;;;;;-1:-1:-1;;;;;;7253:52:78;;;:12;;;;;;;;;;;:52;7316:9;-1:-1:-1;7137:192:78;:::o;3263:125:48:-;3377:2;3366:14;3360:21;;3348:37::o;2133:344::-;2182:12;2196:23;2231:4;-1:-1:-1;;;;;2223:18:48;2242:5;2223:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2181:67:48;;;;2257:7;2252:222;;1386:2:49;2275:10:48;:17;:40;2271:199;;2323:58;;-1:-1:-1;;;2323:58:48;;;;;;;;2271:199;2406:57;;;;;;;;;;;;;;-1:-1:-1;;;2406:57:48;;;2451:10;2406:16;:57::i;:::-;2399:65;;-1:-1:-1;;;2399:65:48;;;;;;;;;2271:199;2133:344;;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1719:569:49:-;1808:13;1827:22;1858:4;1827:36;;1867:22;1898:4;1867:36;;1907:19;1386:2;1959:9;:16;1940:9;:16;:35;:57;1929:69;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;1929:69:49;87:34:-1;135:17;;-1:-1;1929:69:49;-1:-1:-1;1907:91:49;-1:-1:-1;1907:91:49;2044:9;;2061:87;2085:9;:16;2081:1;:20;2061:87;;;2131:9;2141:1;2131:12;;;;;;;;;;;;;;;;2113:10;2124:3;;;;;;2113:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2113:30:49;;;;;;;;-1:-1:-1;2103:3:49;;2061:87;;;-1:-1:-1;1386:2:49;2151:105;2193:9;:16;2189:1;:20;2151:105;;;2239:9;2249:1;2239:12;;;;;;;;;;;;;;;;2221:10;2232:3;;;;;;2221:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2221:30:49;;;;;;;;-1:-1:-1;2211:3:49;;2151:105;;;-1:-1:-1;2273:10:49;;-1:-1:-1;;;;;1719:569:49;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;440:128;515:13;;533:30;515:13;533:30;;575:134;653:13;;671:33;653:13;671:33;;730:336;;;844:3;837:4;829:6;825:17;821:27;811:2;;862:1;859;852:12;811:2;-1:-1;882:20;;922:18;911:30;;908:2;;;954:1;951;944:12;908:2;988:4;980:6;976:17;964:29;;1039:3;1031:4;1023:6;1019:17;1009:8;1005:32;1002:41;999:2;;;1056:1;1053;1046:12;999:2;804:262;;;;;;1074:130;1141:20;;1166:33;1141:20;1166:33;;1352:128;1418:20;;1443:32;1418:20;1443:32;;1487:132;1564:13;;1582:32;1564:13;1582:32;;1626:241;;1730:2;1718:9;1709:7;1705:23;1701:32;1698:2;;;1746:1;1743;1736:12;1698:2;1781:1;1798:53;1843:7;1823:9;1798:53;;;1788:63;1692:175;-1:-1;;;;1692:175;1874:263;;1989:2;1977:9;1968:7;1964:23;1960:32;1957:2;;;2005:1;2002;1995:12;1957:2;2040:1;2057:64;2113:7;2093:9;2057:64;;2144:366;;;2265:2;2253:9;2244:7;2240:23;2236:32;2233:2;;;2281:1;2278;2271:12;2233:2;2316:1;2333:53;2378:7;2358:9;2333:53;;;2323:63;;2295:97;2423:2;2441:53;2486:7;2477:6;2466:9;2462:22;2441:53;;;2431:63;;2402:98;2227:283;;;;;;2517:741;;;;;;2691:3;2679:9;2670:7;2666:23;2662:33;2659:2;;;2708:1;2705;2698:12;2659:2;2743:1;2760:53;2805:7;2785:9;2760:53;;;2750:63;;2722:97;2850:2;2868:53;2913:7;2904:6;2893:9;2889:22;2868:53;;;2858:63;;2829:98;2958:2;2976:53;3021:7;3012:6;3001:9;2997:22;2976:53;;;2966:63;;2937:98;3094:2;3083:9;3079:18;3066:32;3118:18;3110:6;3107:30;3104:2;;;3150:1;3147;3140:12;3104:2;3178:64;3234:7;3225:6;3214:9;3210:22;3178:64;;;3168:74;;;;3045:203;2653:605;;;;;;;;;3265:489;;;;3402:2;3390:9;3381:7;3377:23;3373:32;3370:2;;;3418:1;3415;3408:12;3370:2;3453:1;3470:53;3515:7;3495:9;3470:53;;;3460:63;;3432:97;3560:2;3578:52;3622:7;3613:6;3602:9;3598:22;3578:52;;;3568:62;;3539:97;3667:2;3685:53;3730:7;3721:6;3710:9;3706:22;3685:53;;;3675:63;;3646:98;3364:390;;;;;;3761:257;;3873:2;3861:9;3852:7;3848:23;3844:32;3841:2;;;3889:1;3886;3879:12;3841:2;3924:1;3941:61;3994:7;3974:9;3941:61;;4025:551;;;;4182:2;4170:9;4161:7;4157:23;4153:32;4150:2;;;4198:1;4195;4188:12;4150:2;4233:1;4250:64;4306:7;4286:9;4250:64;;;4240:74;;4212:108;4351:2;4369:72;4433:7;4424:6;4413:9;4409:22;4369:72;;;4359:82;;4330:117;4478:2;4496:64;4552:7;4543:6;4532:9;4528:22;4496:64;;4583:241;;4687:2;4675:9;4666:7;4662:23;4658:32;4655:2;;;4703:1;4700;4693:12;4655:2;4738:1;4755:53;4800:7;4780:9;4755:53;;4831:263;;4946:2;4934:9;4925:7;4921:23;4917:32;4914:2;;;4962:1;4959;4952:12;4914:2;4997:1;5014:64;5070:7;5050:9;5014:64;;5101:261;;5215:2;5203:9;5194:7;5190:23;5186:32;5183:2;;;5231:1;5228;5221:12;5183:2;5266:1;5283:63;5338:7;5318:9;5283:63;;5369:113;5452:24;5470:5;5452:24;;;5447:3;5440:37;5434:48;;;5489:104;5566:21;5581:5;5566:21;;5600:152;5701:45;5721:24;5739:5;5721:24;;;5701:45;;5782:310;;5914:88;5995:6;5990:3;5914:88;;;5907:95;;6014:43;6050:6;6045:3;6038:5;6014:43;;;-1:-1;;6070:16;;5900:192;6100:356;;6228:38;6260:5;6228:38;;;6278:88;6359:6;6354:3;6278:88;;;6271:95;;6371:52;6416:6;6411:3;6404:4;6397:5;6393:16;6371:52;;;6435:16;;;;;6208:248;-1:-1;;6208:248;6463:158;6562:53;6609:5;6562:53;;6980:347;;7092:39;7125:5;7092:39;;;7143:71;7207:6;7202:3;7143:71;;;7136:78;;7219:52;7264:6;7259:3;7252:4;7245:5;7241:16;7219:52;;;7292:29;7314:6;7292:29;;;7283:39;;;;7072:255;-1:-1;;;7072:255;7335:385;;7495:67;7559:2;7554:3;7495:67;;;7595:34;7575:55;;-1:-1;;;7659:2;7650:12;;7643:40;7711:2;7702:12;;7481:239;-1:-1;;7481:239;7729:375;;7889:67;7953:2;7948:3;7889:67;;;7989:34;7969:55;;-1:-1;;;8053:2;8044:12;;8037:30;8095:2;8086:12;;7875:229;-1:-1;;7875:229;8113:321;;8273:67;8337:2;8332:3;8273:67;;;-1:-1;;;8353:44;;8425:2;8416:12;;8259:175;-1:-1;;8259:175;8443:315;;8603:67;8667:2;8662:3;8603:67;;;-1:-1;;;8683:38;;8749:2;8740:12;;8589:169;-1:-1;;8589:169;8767:312;;8927:67;8991:2;8986:3;8927:67;;;-1:-1;;;9007:35;;9070:2;9061:12;;8913:166;-1:-1;;8913:166;9088:325;;9248:67;9312:2;9307:3;9248:67;;;9348:27;9328:48;;9404:2;9395:12;;9234:179;-1:-1;;9234:179;9422:324;;9582:67;9646:2;9641:3;9582:67;;;9682:26;9662:47;;9737:2;9728:12;;9568:178;-1:-1;;9568:178;9755:315;;9915:67;9979:2;9974:3;9915:67;;;-1:-1;;;9995:38;;10061:2;10052:12;;9901:169;-1:-1;;9901:169;10078:113;10161:24;10179:5;10161:24;;10198:110;10279:23;10296:5;10279:23;;10315:110;10396:23;10413:5;10396:23;;10432:421;;10607:75;10678:3;10669:6;10607:75;;;10704:2;10699:3;10695:12;10688:19;;10725:103;10824:3;10815:6;10807;10725:103;;;10718:110;10595:258;-1:-1;;;;;10595:258;10860:262;;11004:93;11093:3;11084:6;11004:93;;;10997:100;10985:137;-1:-1;;;10985:137;11129:213;11247:2;11232:18;;11261:71;11236:9;11305:6;11261:71;;11349:435;11523:2;11508:18;;11537:71;11512:9;11581:6;11537:71;;;11619:72;11687:2;11676:9;11672:18;11663:6;11619:72;;;11702;11770:2;11759:9;11755:18;11746:6;11702:72;;11791:431;11963:2;11948:18;;11977:71;11952:9;12021:6;11977:71;;;12059:72;12127:2;12116:9;12112:18;12103:6;12059:72;;;12142:70;12208:2;12197:9;12193:18;12184:6;12142:70;;12229:324;12375:2;12360:18;;12389:71;12364:9;12433:6;12389:71;;;12471:72;12539:2;12528:9;12524:18;12515:6;12471:72;;12560:435;12734:2;12719:18;;12748:71;12723:9;12792:6;12748:71;;;12830:72;12898:2;12887:9;12883:18;12874:6;12830:72;;13002:431;13174:2;13159:18;;13188:71;13163:9;13232:6;13188:71;;;13270:70;13336:2;13325:9;13321:18;13312:6;13270:70;;;13351:72;13419:2;13408:9;13404:18;13395:6;13351:72;;13440:201;13552:2;13537:18;;13566:65;13541:9;13604:6;13566:65;;13648:245;13782:2;13767:18;;13796:87;13771:9;13856:6;13796:87;;14426:301;14564:2;14578:47;;;14549:18;;14639:78;14549:18;14703:6;14639:78;;14734:407;14925:2;14939:47;;;14910:18;;15000:131;14910:18;15000:131;;15148:407;15339:2;15353:47;;;15324:18;;15414:131;15324:18;15414:131;;15562:407;15753:2;15767:47;;;15738:18;;15828:131;15738:18;15828:131;;15976:407;16167:2;16181:47;;;16152:18;;16242:131;16152:18;16242:131;;16390:407;16581:2;16595:47;;;16566:18;;16656:131;16566:18;16656:131;;16804:407;16995:2;17009:47;;;16980:18;;17070:131;16980:18;17070:131;;17218:407;17409:2;17423:47;;;17394:18;;17484:131;17394:18;17484:131;;17632:407;17823:2;17837:47;;;17808:18;;17898:131;17808:18;17898:131;;18046:213;18164:2;18149:18;;18178:71;18153:9;18222:6;18178:71;;18266:771;18524:3;18509:19;;18539:71;18513:9;18583:6;18539:71;;;18621:72;18689:2;18678:9;18674:18;18665:6;18621:72;;;18704;18772:2;18761:9;18757:18;18748:6;18704:72;;;18787;18855:2;18844:9;18840:18;18831:6;18787:72;;;18870:73;18938:3;18927:9;18923:19;18914:6;18870:73;;;18954;19022:3;19011:9;19007:19;18998:6;18954:73;;;18495:542;;;;;;;;;;19044:431;19216:2;19201:18;;19230:69;19205:9;19272:6;19230:69;;;19310:72;19378:2;19367:9;19363:18;19354:6;19310:72;;19482:121;19569:12;;19540:63;19740:144;19875:3;19853:31;-1:-1;19853:31;19893:163;19996:19;;;20045:4;20036:14;;19989:67;20064:91;;20126:24;20144:5;20126:24;;20268:85;20334:13;20327:21;;20310:43;20360:145;-1:-1;;20422:78;;20405:100;20512:72;20574:5;20557:27;20591:121;-1:-1;;;;;20653:54;;20636:76;20798:88;20870:10;20859:22;;20842:44;20893:104;20965:26;20954:38;;20937:60;21004:153;;21099:53;21146:5;21099:53;;21911:145;21992:6;21987:3;21982;21969:30;-1:-1;22048:1;22030:16;;22023:27;21962:94;22065:268;22130:1;22137:101;22151:6;22148:1;22145:13;22137:101;;;22218:11;;;22212:18;22199:11;;;22192:39;22173:2;22166:10;22137:101;;;22253:6;22250:1;22247:13;22244:2;;;22318:1;22309:6;22304:3;22300:16;22293:27;22244:2;22114:219;;;;;22422:97;22510:2;22490:14;-1:-1;;22486:28;;22470:49;22527:117;22596:24;22614:5;22596:24;;;22589:5;22586:35;22576:2;;22635:1;22632;22625:12;22791:111;22857:21;22872:5;22857:21;;22909:117;22978:24;22996:5;22978:24;;23157:115;23225:23;23242:5;23225:23;;23279:115;23347:23;23364:5;23347:23;"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "cliff()": "13d033c0",
              "collectDividends(address,uint32,address)": "62dc2f35",
              "delegate(address)": "5c19a95c",
              "duration()": "0fb5a6b4",
              "endDate()": "c24a0f8b",
              "feeSharingProxy()": "6a26b57f",
              "governanceWithdrawTokens(address)": "78f24bc6",
              "isOwner()": "8f32d59b",
              "migrateToNewStakingContract()": "5419675f",
              "owner()": "8da5cb5b",
              "receiveApproval(address,uint256,address,bytes)": "8f4ffcb1",
              "stakeTokens(uint256)": "7547c7a3",
              "stakeTokensWithApproval(address,uint256)": "81e45268",
              "staking()": "4cf088d9",
              "startDate()": "0b97bc86",
              "tokenOwner()": "a3e67610",
              "transferOwnership(address)": "f2fde38b",
              "withdrawTokens(address)": "49df728c"
            }
          },
          "userdoc": {
            "methods": {
              "collectDividends(address,uint32,address)": {
                "notice": "Collect dividends from fee sharing proxy."
              },
              "delegate(address)": {
                "notice": "Delegate votes from `msg.sender` which are locked until lockDate to `delegatee`."
              },
              "governanceWithdrawTokens(address)": {
                "notice": "Withdraws all tokens from the staking contract and forwards them to an address specified by the token owner."
              },
              "migrateToNewStakingContract()": {
                "notice": "Allows the owners to migrate the positions to a new staking contract."
              },
              "receiveApproval(address,uint256,address,bytes)": {
                "notice": "Receives approval from SOV token."
              },
              "stakeTokens(uint256)": {
                "notice": "Stakes tokens according to the vesting schedule."
              },
              "stakeTokensWithApproval(address,uint256)": {
                "notice": "Stakes tokens according to the vesting schedule."
              },
              "withdrawTokens(address)": {
                "notice": "Withdraws unlocked tokens from the staking contract and forwards them to an address specified by the token owner."
              }
            },
            "notice": "Staking, delegating and withdrawal functionality."
          }
        }
      },
      "contracts/governance/Vesting/VestingRegistry.sol": {
        "VestingRegistry": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingFactory",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "_CSOVtokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256",
                  "name": "_priceSats",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_staking",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_feeSharingProxy",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_vestingOwner",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "CSOVamount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "reImburseAmount",
                  "type": "uint256"
                }
              ],
              "name": "CSOVReImburse",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "CSOVTokensExchanged",
              "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": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "SOVTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TeamVestingCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VestingCreated",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "CSOV_VESTING_CLIFF",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "CSOV_VESTING_DURATION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "CSOVtokens",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "FOUR_WEEKS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "blacklist",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "budget",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "createTeamVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "createVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "deposit",
              "outputs": [],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "exchangeAllCSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharingProxy",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                }
              ],
              "name": "getTeamVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                }
              ],
              "name": "getVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lockedAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceSats",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "processedList",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "reImburse",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_account",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_blacklisted",
                  "type": "bool"
                }
              ],
              "name": "setBlacklistFlag",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_CSOVtokens",
                  "type": "address[]"
                }
              ],
              "name": "setCSOVtokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "setLockedAmount",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingFactory",
                  "type": "address"
                }
              ],
              "name": "setVestingFactory",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vesting",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "stakeTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "transferSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestingContracts",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingFactory",
              "outputs": [
                {
                  "internalType": "contract IVestingFactory",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address payable",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdrawAll",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "budget()": {
                "return": "The token balance of the contract."
              },
              "constructor": {
                "details": "On Sovryn the vesting owner is Exchequer Multisig. According to SIP-0007 The Exchequer Multisig is designated to hold certain funds in the form of rBTC and SOV, in order to allow for flexible deployment of such funds on: + facilitating rBTC redemptions for Genesis pre-sale participants. + deploying of SOV for the purposes of exchange listings, market   making, and partnerships with third parties.",
                "params": {
                  "_CSOVtokens": "The array of cSOV tokens.",
                  "_SOV": "The SOV token address.",
                  "_feeSharingProxy": "The address of fee sharing proxy contract.",
                  "_priceSats": "The price of cSOV tokens in satoshis.",
                  "_staking": "The address of staking contract.",
                  "_vestingFactory": "The address of vesting factory contract.",
                  "_vestingOwner": "The address of an owner of vesting contract."
                }
              },
              "createTeamVesting(address,uint256,uint256,uint256)": {
                "params": {
                  "_amount": "The amount to be staked.",
                  "_cliff": "The time interval to the first withdraw in seconds.",
                  "_duration": "The total duration in seconds.",
                  "_tokenOwner": "The owner of the tokens."
                }
              },
              "createVesting(address,uint256,uint256,uint256)": {
                "params": {
                  "_amount": "The amount to be staked.",
                  "_cliff": "The time interval to the first withdraw in seconds.",
                  "_duration": "The total duration in seconds.",
                  "_tokenOwner": "The owner of the tokens."
                }
              },
              "getTeamVesting(address)": {
                "params": {
                  "_tokenOwner": "The owner of the tokens."
                },
                "return": "The team vesting contract address for the given token owner."
              },
              "getVesting(address)": {
                "params": {
                  "_tokenOwner": "The owner of the tokens."
                },
                "return": "The vesting contract address for the given token owner."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "setBlacklistFlag(address,bool)": {
                "params": {
                  "_account": "The address to be blacklisted.",
                  "_blacklisted": "The flag to add/remove to/from a blacklist."
                }
              },
              "setCSOVtokens(address[])": {
                "params": {
                  "_CSOVtokens": "The array of cSOV tokens."
                }
              },
              "setLockedAmount(address,uint256)": {
                "params": {
                  "_account": "The address with locked amount.",
                  "_amount": "The amount to be locked."
                }
              },
              "setVestingFactory(address)": {
                "details": "Splitting code on two functions: high level and low level is a pattern that makes easy to extend functionality in a readable way, without accidentally breaking the actual action being performed. For example, checks should be done on high level endpoint, while core functionality should be coded on the low level function.",
                "params": {
                  "_vestingFactory": "The address of vesting factory contract."
                }
              },
              "stakeTokens(address,uint256)": {
                "params": {
                  "_amount": "The amount of tokens to stake.",
                  "_vesting": "The address of Vesting contract."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "transferSOV(address,uint256)": {
                "details": "This is a wrapper for ERC-20 transfer function w/ additional checks and triggering an event.",
                "params": {
                  "_amount": "The amount to be transferred.",
                  "_receiver": "The address of the SOV receiver."
                }
              },
              "withdrawAll(address)": {
                "params": {
                  "to": "The account address to send the balance to."
                }
              }
            },
            "title": "Vesting Registry contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b506040516200251938038062002519833981810160405260e08110156200003757600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200006357600080fd5b9083019060208201858111156200007957600080fd5b82518660208202830111640100000000821117156200009757600080fd5b82525081516020918201928201910280838360005b83811015620000c6578181015183820152602001620000ac565b505050509190910160409081526020830151908301516060840151608090940151919550935090506000620001036001600160e01b036200034216565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038616620001a9576040805162461bcd60e51b815260206004820152601360248201527f534f56206164647265737320696e76616c696400000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03831662000205576040805162461bcd60e51b815260206004820152601760248201527f7374616b696e67206164647265737320696e76616c6964000000000000000000604482015290519081900360640190fd5b6001600160a01b03821662000261576040805162461bcd60e51b815260206004820152601f60248201527f66656553686172696e6750726f7879206164647265737320696e76616c696400604482015290519081900360640190fd5b6001600160a01b038116620002bd576040805162461bcd60e51b815260206004820152601c60248201527f76657374696e674f776e6572206164647265737320696e76616c696400000000604482015290519081900360640190fd5b620002d1876001600160e01b036200034716565b620002e5856001600160e01b03620003c516565b600280546001600160a01b039788166001600160a01b031991821617909155600494909455600580549387169385169390931790925560068054918616918416919091179055600780549190941691161790915550620005039050565b335b90565b6001600160a01b038116620003a3576040805162461bcd60e51b815260206004820152601e60248201527f76657374696e67466163746f7279206164647265737320696e76616c69640000604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60005b8151811015620004585760006001600160a01b0316828281518110620003ea57fe5b60200260200101516001600160a01b031614156200044f576040805162461bcd60e51b815260206004820152601460248201527f43534f56206164647265737320696e76616c6964000000000000000000000000604482015290519081900360640190fd5b600101620003c8565b5080516200046e90600390602084019062000472565b5050565b828054828255906000526020600020908101928215620004ca579160200282015b82811115620004ca57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000493565b50620004d8929150620004dc565b5090565b6200034491905b80821115620004d85780546001600160a01b0319168155600101620004e3565b61200680620005136000396000f3fe6080604052600436106102045760003560e01c8063a153e70811610118578063d0e30db0116100a0578063f2fde38b1161006f578063f2fde38b1461076c578063f60826ee1461079f578063f6d6189e146105ba578063f9f92be4146107b4578063fa09e630146107e757610204565b8063d0e30db0146106dd578063df8bd747146106e5578063ed01bf291461071e578063f2becf171461073357610204565b8063bd8f732b116100e7578063bd8f732b146105e4578063c627330914610629578063c680c0b71461063e578063c810a3e314610677578063cc49ede7146106aa57610204565b8063a153e70814610572578063b33f914a146105a5578063b4ebc041146105ba578063bd7b5908146105cf57610204565b8063661f21611161019b57806381d2e4bb1161016a57806381d2e4bb1461043357806382999a391461046e5780638da5cb5b1461051e5780638f32d59b1461053357806399336b361461054857610204565b8063661f21611461038b5780636a26b57f146103b257806370480275146103c757806379a83f5a146103fa57610204565b806335f52572116101d757806335f52572146102fb578063377220fd14610310578063429b62e5146103435780634cf088d91461037657610204565b80630665a06f1461020957806308dcb360146102505780631785f53c146102815780632eee57fa146102b4575b600080fd5b34801561021557600080fd5b5061024e6004803603608081101561022c57600080fd5b506001600160a01b03813516906020810135906040810135906060013561081a565b005b34801561025c57600080fd5b506102656108e8565b604080516001600160a01b039092168252519081900360200190f35b34801561028d57600080fd5b5061024e600480360360208110156102a457600080fd5b50356001600160a01b03166108f7565b3480156102c057600080fd5b506102e7600480360360208110156102d757600080fd5b50356001600160a01b0316610997565b604080519115158252519081900360200190f35b34801561030757600080fd5b5061024e6109ac565b34801561031c57600080fd5b5061024e6004803603602081101561033357600080fd5b50356001600160a01b0316610c84565b34801561034f57600080fd5b506102e76004803603602081101561036657600080fd5b50356001600160a01b0316610cd8565b34801561038257600080fd5b50610265610ced565b34801561039757600080fd5b506103a0610cfc565b60408051918252519081900360200190f35b3480156103be57600080fd5b50610265610d02565b3480156103d357600080fd5b5061024e600480360360208110156103ea57600080fd5b50356001600160a01b0316610d11565b34801561040657600080fd5b5061024e6004803603604081101561041d57600080fd5b506001600160a01b038135169060200135610db4565b34801561043f57600080fd5b5061024e6004803603604081101561045657600080fd5b506001600160a01b0381351690602001351515610fdc565b34801561047a57600080fd5b5061024e6004803603602081101561049157600080fd5b8101906020810181356401000000008111156104ac57600080fd5b8201836020820111156104be57600080fd5b803590602001918460208302840111640100000000831117156104e057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506110a4945050505050565b34801561052a57600080fd5b506102656110f5565b34801561053f57600080fd5b506102e7611105565b34801561055457600080fd5b506102656004803603602081101561056b57600080fd5b5035611129565b34801561057e57600080fd5b506103a06004803603602081101561059557600080fd5b50356001600160a01b0316611150565b3480156105b157600080fd5b506103a0611162565b3480156105c657600080fd5b506103a061116a565b3480156105db57600080fd5b50610265611171565b3480156105f057600080fd5b5061024e6004803603608081101561060757600080fd5b506001600160a01b038135169060208101359060408101359060600135611180565b34801561063557600080fd5b5061024e61124e565b34801561064a57600080fd5b5061024e6004803603604081101561066157600080fd5b506001600160a01b03813516906020013561142b565b34801561068357600080fd5b506102656004803603602081101561069a57600080fd5b50356001600160a01b03166115d6565b3480156106b657600080fd5b50610265600480360360208110156106cd57600080fd5b50356001600160a01b0316611611565b61024e611631565b3480156106f157600080fd5b5061024e6004803603604081101561070857600080fd5b506001600160a01b038135169060200135611633565b34801561072a57600080fd5b506103a061172f565b34801561073f57600080fd5b506102656004803603604081101561075657600080fd5b506001600160a01b038135169060200135611733565b34801561077857600080fd5b5061024e6004803603602081101561078f57600080fd5b50356001600160a01b0316611759565b3480156107ab57600080fd5b506102656117aa565b3480156107c057600080fd5b506102e7600480360360208110156107d757600080fd5b50356001600160a01b03166117b9565b3480156107f357600080fd5b5061024e6004803603602081101561080a57600080fd5b50356001600160a01b03166117ce565b610822611105565b8061083c5750336000908152600c602052604090205460ff165b61087c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600061088985848461184f565b604080516001600160a01b03808416825260208201879052818301869052606082018890529151929350908716917f66a644acab4366c0125120794335c517775a2b44b4315b5d90f0d163dae07fea9181900360800190a25050505050565b6002546001600160a01b031681565b6108ff611105565b61093f576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600c6020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b60096020526000908152604090205460ff1681565b3360009081526009602052604090205460ff16156109fb5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f906021913960400191505060405180910390fd5b336000908152600a602052604090205460ff1615610a56576040805162461bcd60e51b81526020600482015260136024820152721059191c995cdcc8189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6000805b600354811015610b1057600060038281548110610a7357fe5b6000918252602080832090910154604080516370a0823160e01b815233600482015290516001600160a01b03909216945084926370a0823192602480840193829003018186803b158015610ac657600080fd5b505afa158015610ada573d6000803e3d6000fd5b505050506040513d6020811015610af057600080fd5b50519050610b04848263ffffffff61199b16565b93505050600101610a5a565b50336000908152600b60205260409020548111610b69576040805162461bcd60e51b81526020600482015260126024820152713437b63232b9103430b99037379021a9a7ab60711b604482015290519081900360640190fd5b336000908152600b602090815260408083205460099092528220805460ff19166001179055600454920391610bbb906305f5e10090610baf90859063ffffffff6119fe16565b9063ffffffff611a5716565b905080471015610c12576040805162461bcd60e51b815260206004820152601d60248201527f4e6f7420656e6f7567682066756e647320746f207265696d6275727365000000604482015290519081900360640190fd5b604051339082156108fc029083906000818181858888f19350505050158015610c3f573d6000803e3d6000fd5b50604080513381526020810184905280820183905290517f6446d397a910984b01aa4d9df127ff6d89fc789371b7d2cad921fe28a3bc46359181900360600190a15050565b610c8c611105565b610ccc576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610cd581611a99565b50565b600c6020526000908152604090205460ff1681565b6005546001600160a01b031681565b60045481565b6006546001600160a01b031681565b610d19611105565b610d59576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600c6020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b610dbc611105565b80610dd65750336000908152600c602052604090205460ff165b610e16576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216610e71576040805162461bcd60e51b815260206004820152601760248201527f76657374696e67206164647265737320696e76616c6964000000000000000000604482015290519081900360640190fd5b60008111610eb7576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163095ea7b360e01b81526001600160a01b038581166004830152602482018590529151919092169163095ea7b39160448083019260209291908290030181600087803b158015610f0d57600080fd5b505af1158015610f21573d6000803e3d6000fd5b505050506040513d6020811015610f3757600080fd5b505060408051637547c7a360e01b81526004810183905290516001600160a01b03841691637547c7a391602480830192600092919082900301818387803b158015610f8157600080fd5b505af1158015610f95573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693507fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef92509081900360200190a25050565b610fe4611105565b611024576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216611079576040805162461bcd60e51b81526020600482015260176024820152761858d8dbdd5b9d081859191c995cdcc81a5b9d985b1a59604a1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6110ac611105565b6110ec576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610cd581611b16565b6000546001600160a01b03165b90565b600080546001600160a01b031661111a611bb0565b6001600160a01b031614905090565b6003818154811061113657fe5b6000918252602090912001546001600160a01b0316905081565b600b6020526000908152604090205481565b630171240081565b6224ea0081565b6007546001600160a01b031681565b611188611105565b806111a25750336000908152600c602052604090205460ff165b6111e2576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006111ef858484611bb4565b604080516001600160a01b03808416825260208201879052818301869052606082018890529151929350908716917f6f0b5adf3d5b3548ea2b06e9be6e7f72e125253fd8c948f6ef4024be653c1c179181900360800190a25050505050565b3360009081526009602052604090205460ff161561129d5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f906021913960400191505060405180910390fd5b336000908152600a602052604090205460ff16156112f8576040805162461bcd60e51b81526020600482015260136024820152721059191c995cdcc8189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b336000908152600960205260408120805460ff19166001179055805b6003548110156113bb5760006003828154811061132d57fe5b6000918252602080832090910154604080516370a0823160e01b815233600482015290516001600160a01b03909216945084926370a0823192602480840193829003018186803b15801561138057600080fd5b505afa158015611394573d6000803e3d6000fd5b505050506040513d60208110156113aa57600080fd5b505193909301925050600101611314565b50336000908152600b60205260409020548111611410576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b336000908152600b60205260409020549003610cd581611c6c565b611433611105565b611473576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0382166114ce576040805162461bcd60e51b815260206004820152601860248201527f7265636569766572206164647265737320696e76616c69640000000000000000604482015290519081900360640190fd5b80611511576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561156757600080fd5b505af115801561157b573d6000803e3d6000fd5b505050506040513d602081101561159157600080fd5b50506040805182815290516001600160a01b038416917fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad919081900360200190a25050565b6001600160a01b038116600090815260086020526040812081805b81526020810191909152604001600020546001600160a01b031692915050565b6001600160a01b03811660009081526008602052604081208160016115f1565b565b61163b611105565b61167b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0382166116d0576040805162461bcd60e51b81526020600482015260176024820152761858d8dbdd5b9d081859191c995cdcc81a5b9d985b1a59604a1b604482015290519081900360640190fd5b80611713576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6001600160a01b039091166000908152600b6020526040902055565b4790565b60086020908152600092835260408084209091529082529020546001600160a01b031681565b611761611105565b6117a1576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610cd581611d9e565b6001546001600160a01b031681565b600a6020526000908152604090205460ff1681565b6117d6611105565b611816576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561184b573d6000803e3d6000fd5b5050565b6001600160a01b03838116600090815260086020908152604080832060018085529252822054919290911661196d5760015460025460055460065460408051637d2fbb8f60e11b81526001600160a01b039485166004820152928416602484015289841660448401819052606484018a90526084840189905291841660a484015260c483019190915251600093929092169163fa5f771e9160e48082019260209290919082900301818787803b15801561190857600080fd5b505af115801561191c573d6000803e3d6000fd5b505050506040513d602081101561193257600080fd5b50516001600160a01b038781166000908152600860209081526040808320878452909152902080546001600160a01b03191691909216179055505b6001600160a01b03948516600090815260086020908152604080832093835292905220549093169392505050565b6000828201838110156119f5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600082611a0d575060006119f8565b82820282848281611a1a57fe5b04146119f55760405162461bcd60e51b8152600401808060200182810382526021815260200180611fb16021913960400191505060405180910390fd5b60006119f583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e3e565b6001600160a01b038116611af4576040805162461bcd60e51b815260206004820152601e60248201527f76657374696e67466163746f7279206164647265737320696e76616c69640000604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60005b8151811015611b9c5760006001600160a01b0316828281518110611b3957fe5b60200260200101516001600160a01b03161415611b94576040805162461bcd60e51b815260206004820152601460248201527310d4d3d5881859191c995cdcc81a5b9d985b1a5960621b604482015290519081900360640190fd5b600101611b19565b50805161184b906003906020840190611ee0565b3390565b6001600160a01b038381166000908152600860209081526040808320838052909152812054909182911661196d5760015460025460055460065460075460408051630546344f60e41b81526001600160a01b03958616600482015293851660248501528a85166044850152606484018a90526084840189905291841660a4840152831660c483015251600093929092169163546344f09160e48082019260209290919082900301818787803b15801561190857600080fd5b6000611c80336224ea00630171240061184f565b6002546040805163095ea7b360e01b81526001600160a01b03808516600483015260248201879052915193945091169163095ea7b3916044808201926020929091908290030181600087803b158015611cd857600080fd5b505af1158015611cec573d6000803e3d6000fd5b505050506040513d6020811015611d0257600080fd5b505060408051637547c7a360e01b81526004810184905290516001600160a01b03831691637547c7a391602480830192600092919082900301818387803b158015611d4c57600080fd5b505af1158015611d60573d6000803e3d6000fd5b50506040805185815290513393507f7a97172500d57114068a2a8f1f632999070720324825e2c5b57e27219b7bf18f92509081900360200190a25050565b6001600160a01b038116611de35760405162461bcd60e51b8152600401808060200182810382526026815260200180611f6a6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008183611eca5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e8f578181015183820152602001611e77565b50505050905090810190601f168015611ebc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611ed657fe5b0495945050505050565b828054828255906000526020600020908101928215611f35579160200282015b82811115611f3557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611f00565b50611f41929150611f45565b5090565b61110291905b80821115611f415780546001600160a01b0319168155600101611f4b56fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573732063616e6e6f742062652070726f636573736564207477696365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158206dd19a01f55289628adf199d95b3b4f120a39e0399e583ba381b2341cd42df0a64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2519 CODESIZE SUB DUP1 PUSH3 0x2519 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xE0 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xC6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xAC JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP SWAP1 POP PUSH1 0x0 PUSH3 0x103 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x342 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH3 0x1A9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x534F56206164647265737320696E76616C696400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x205 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7374616B696E67206164647265737320696E76616C6964000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x261 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x66656553686172696E6750726F7879206164647265737320696E76616C696400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E674F776E6572206164647265737320696E76616C696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0x2D1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x347 AND JUMP JUMPDEST PUSH3 0x2E5 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x3C5 AND JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x4 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP4 DUP8 AND SWAP4 DUP6 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP2 DUP7 AND SWAP2 DUP5 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP2 SWAP1 SWAP5 AND SWAP2 AND OR SWAP1 SWAP2 SSTORE POP PUSH3 0x503 SWAP1 POP JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67466163746F7279206164647265737320696E76616C69640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH3 0x458 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x3EA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43534F56206164647265737320696E76616C6964000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH3 0x3C8 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x46E SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x472 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x4CA JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x4CA JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH3 0x493 JUMP JUMPDEST POP PUSH3 0x4D8 SWAP3 SWAP2 POP PUSH3 0x4DC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x344 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x4D8 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x4E3 JUMP JUMPDEST PUSH2 0x2006 DUP1 PUSH3 0x513 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x204 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA153E708 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0xD0E30DB0 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x76C JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x79F JUMPI DUP1 PUSH4 0xF6D6189E EQ PUSH2 0x5BA JUMPI DUP1 PUSH4 0xF9F92BE4 EQ PUSH2 0x7B4 JUMPI DUP1 PUSH4 0xFA09E630 EQ PUSH2 0x7E7 JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x6DD JUMPI DUP1 PUSH4 0xDF8BD747 EQ PUSH2 0x6E5 JUMPI DUP1 PUSH4 0xED01BF29 EQ PUSH2 0x71E JUMPI DUP1 PUSH4 0xF2BECF17 EQ PUSH2 0x733 JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0xBD8F732B GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0xBD8F732B EQ PUSH2 0x5E4 JUMPI DUP1 PUSH4 0xC6273309 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x63E JUMPI DUP1 PUSH4 0xC810A3E3 EQ PUSH2 0x677 JUMPI DUP1 PUSH4 0xCC49EDE7 EQ PUSH2 0x6AA JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0xA153E708 EQ PUSH2 0x572 JUMPI DUP1 PUSH4 0xB33F914A EQ PUSH2 0x5A5 JUMPI DUP1 PUSH4 0xB4EBC041 EQ PUSH2 0x5BA JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x5CF JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0x661F2161 GT PUSH2 0x19B JUMPI DUP1 PUSH4 0x81D2E4BB GT PUSH2 0x16A JUMPI DUP1 PUSH4 0x81D2E4BB EQ PUSH2 0x433 JUMPI DUP1 PUSH4 0x82999A39 EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x51E JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x533 JUMPI DUP1 PUSH4 0x99336B36 EQ PUSH2 0x548 JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0x661F2161 EQ PUSH2 0x38B JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x3B2 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0x79A83F5A EQ PUSH2 0x3FA JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0x35F52572 GT PUSH2 0x1D7 JUMPI DUP1 PUSH4 0x35F52572 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x377220FD EQ PUSH2 0x310 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x376 JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0x665A06F EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x2EEE57FA EQ PUSH2 0x2B4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x81A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x8E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8F7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x997 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH2 0x9AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCD8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0xCED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH2 0xCFC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0xD02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD11 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDB4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xFDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x10A4 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x10F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E7 PUSH2 0x1105 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1129 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1150 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH2 0x1162 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH2 0x116A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x1171 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1180 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH2 0x124E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x142B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15D6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1611 JUMP JUMPDEST PUSH2 0x24E PUSH2 0x1631 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x708 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1633 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH2 0x172F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x756 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1733 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x778 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1759 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x17AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x17B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x80A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x17CE JUMP JUMPDEST PUSH2 0x822 PUSH2 0x1105 JUMP JUMPDEST DUP1 PUSH2 0x83C JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x87C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x889 DUP6 DUP5 DUP5 PUSH2 0x184F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP8 AND SWAP2 PUSH32 0x66A644ACAB4366C0125120794335C517775A2B44B4315B5D90F0D163DAE07FEA SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x8FF PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x93F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x9FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F90 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA56 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x1059191C995CDCC8189B1858DADB1A5CDD1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0xB10 JUMPI PUSH1 0x0 PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xA73 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP5 POP DUP5 SWAP3 PUSH4 0x70A08231 SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xADA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0xB04 DUP5 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x199B AND JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x1 ADD PUSH2 0xA5A JUMP JUMPDEST POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT PUSH2 0xB69 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x3437B63232B9103430B99037379021A9A7AB PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x9 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x4 SLOAD SWAP3 SUB SWAP2 PUSH2 0xBBB SWAP1 PUSH4 0x5F5E100 SWAP1 PUSH2 0xBAF SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x19FE AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1A57 AND JUMP JUMPDEST SWAP1 POP DUP1 SELFBALANCE LT ISZERO PUSH2 0xC12 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F7567682066756E647320746F207265696D6275727365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xC3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x6446D397A910984B01AA4D9DF127FF6D89FC789371B7D2CAD921FE28A3BC4635 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0xC8C PUSH2 0x1105 JUMP JUMPDEST PUSH2 0xCCC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xCD5 DUP2 PUSH2 0x1A99 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xD19 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0xD59 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xDBC PUSH2 0x1105 JUMP JUMPDEST DUP1 PUSH2 0xDD6 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xE16 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xE71 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67206164647265737320696E76616C6964000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xEB7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF21 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x7547C7A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x7547C7A3 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP4 POP PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0xFE4 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x1024 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1079 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x1858D8DBDD5B9D081859191C995CDCC81A5B9D985B1A59 PUSH1 0x4A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x10AC PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x10EC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xCD5 DUP2 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x111A PUSH2 0x1BB0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1136 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH4 0x1712400 DUP2 JUMP JUMPDEST PUSH3 0x24EA00 DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1188 PUSH2 0x1105 JUMP JUMPDEST DUP1 PUSH2 0x11A2 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x11E2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11EF DUP6 DUP5 DUP5 PUSH2 0x1BB4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP8 AND SWAP2 PUSH32 0x6F0B5ADF3D5B3548EA2B06E9BE6E7F72E125253FD8C948F6EF4024BE653C1C17 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x129D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F90 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x12F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x1059191C995CDCC8189B1858DADB1A5CDD1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0x13BB JUMPI PUSH1 0x0 PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x132D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP5 POP DUP5 SWAP3 PUSH4 0x70A08231 SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1394 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP1 SWAP4 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1314 JUMP JUMPDEST POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT PUSH2 0x1410 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SUB PUSH2 0xCD5 DUP2 PUSH2 0x1C6C JUMP JUMPDEST PUSH2 0x1433 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x1473 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x14CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x1511 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x157B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP1 JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH1 0x1 PUSH2 0x15F1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x163B PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x167B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x16D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x1858D8DBDD5B9D081859191C995CDCC81A5B9D985B1A59 PUSH1 0x4A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x1713 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1761 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x17A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xCD5 DUP2 PUSH2 0x1D9E JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x17D6 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x1816 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x184B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP6 MSTORE SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP2 SWAP3 SWAP1 SWAP2 AND PUSH2 0x196D JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7D2FBB8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x24 DUP5 ADD MSTORE DUP10 DUP5 AND PUSH1 0x44 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x64 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP5 ADD DUP10 SWAP1 MSTORE SWAP2 DUP5 AND PUSH1 0xA4 DUP5 ADD MSTORE PUSH1 0xC4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xFA5F771E SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1908 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x191C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP4 AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x19F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1A0D JUMPI POP PUSH1 0x0 PUSH2 0x19F8 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1A1A JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x19F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1FB1 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19F5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1E3E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1AF4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67466163746F7279206164647265737320696E76616C69640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x1B9C JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B39 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1B94 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x10D4D3D5881859191C995CDCC81A5B9D985B1A59 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x1B19 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x184B SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1EE0 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 DUP3 SWAP2 AND PUSH2 0x196D JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x546344F PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x24 DUP6 ADD MSTORE DUP11 DUP6 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP5 ADD DUP10 SWAP1 MSTORE SWAP2 DUP5 AND PUSH1 0xA4 DUP5 ADD MSTORE DUP4 AND PUSH1 0xC4 DUP4 ADD MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x546344F0 SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1908 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C80 CALLER PUSH3 0x24EA00 PUSH4 0x1712400 PUSH2 0x184F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE SWAP2 MLOAD SWAP4 SWAP5 POP SWAP2 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x7547C7A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0x7547C7A3 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP4 POP PUSH32 0x7A97172500D57114068A2A8F1F632999070720324825E2C5B57E27219B7BF18F SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1DE3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F6A PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1ECA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E8F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E77 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1EBC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1ED6 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1F35 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1F35 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1F00 JUMP JUMPDEST POP PUSH2 0x1F41 SWAP3 SWAP2 POP PUSH2 0x1F45 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1102 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1F41 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1F4B JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373416464726573732063616E6E6F742062 PUSH6 0x2070726F6365 PUSH20 0x736564207477696365536166654D6174683A206D PUSH22 0x6C7469706C69636174696F6E206F766572666C6F77A2 PUSH6 0x627A7A723158 KECCAK256 PUSH14 0xD19A01F55289628ADF199D95B3B4 CALL KECCAK256 LOG3 SWAP15 SUB SWAP10 0xE5 DUP4 0xBA CODESIZE SHL 0x23 COINBASE 0xCD TIMESTAMP 0xDF EXP PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "1194:15263:79:-;;;4410:666;8:9:-1;5:2;;;30:1;27;20:12;5:2;4410:666:79;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4410:666:79;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;4410:666:79;;421:4:-1;412:14;;;;4410:666:79;;;;;412:14:-1;4410:666:79;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;-1:-1;;;;4410:666:79;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4410:666:79;-1:-1:-1;4410:666:79;-1:-1:-1;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;-1:-1:-1;;;;;;4614:18:79;;4606:50;;;;;-1:-1:-1;;;4606:50:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4668:22:79;;4660:58;;;;;-1:-1:-1;;;4660:58:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4730:30:79;;4722:74;;;;;-1:-1:-1;;;4722:74:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4808:27:79;;4800:68;;;;;-1:-1:-1;;;4800:68:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;4873:35;4892:15;-1:-1:-1;;;;;4873:18:79;:35;:::i;:::-;4912:27;4927:11;-1:-1:-1;;;;;4912:14:79;:27;:::i;:::-;4944:3;:10;;-1:-1:-1;;;;;4944:10:79;;;-1:-1:-1;;;;;;4944:10:79;;;;;;;4958:9;:22;;;;4984:7;:18;;;;;;;;;;;;;;;5006:15;:34;;;;;;;;;;;;;;5044:12;:28;;;;;;;;;;;;-1:-1:-1;1194:15263:79;;-1:-1:-1;1194:15263:79;780:87:137;853:10;780:87;;:::o;9025:195:79:-;-1:-1:-1;;;;;9099:29:79;;9091:72;;;;;-1:-1:-1;;;9091:72:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;9167:14;:49;;-1:-1:-1;;;;;;9167:49:79;-1:-1:-1;;;;;9167:49:79;;;;;;;;;;9025:195::o;9591:218::-;9663:9;9658:120;9682:11;:18;9678:1;:22;9658:120;;;9746:1;-1:-1:-1;;;;;9720:28:79;:11;9732:1;9720:14;;;;;;;;;;;;;;-1:-1:-1;;;;;9720:28:79;;;9712:61;;;;;-1:-1:-1;;;9712:61:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;9702:3;;9658:120;;;-1:-1:-1;9781:24:79;;;;:10;;:24;;;;;:::i;:::-;;9591:218;:::o;1194:15263::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1194:15263:79;-1:-1:-1;;;;;1194:15263:79;;;;;;;;;;;-1:-1:-1;1194:15263:79;;;;;;;-1:-1:-1;1194:15263:79;;;-1:-1:-1;1194:15263:79;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;1194:15263:79;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106102045760003560e01c8063a153e70811610118578063d0e30db0116100a0578063f2fde38b1161006f578063f2fde38b1461076c578063f60826ee1461079f578063f6d6189e146105ba578063f9f92be4146107b4578063fa09e630146107e757610204565b8063d0e30db0146106dd578063df8bd747146106e5578063ed01bf291461071e578063f2becf171461073357610204565b8063bd8f732b116100e7578063bd8f732b146105e4578063c627330914610629578063c680c0b71461063e578063c810a3e314610677578063cc49ede7146106aa57610204565b8063a153e70814610572578063b33f914a146105a5578063b4ebc041146105ba578063bd7b5908146105cf57610204565b8063661f21611161019b57806381d2e4bb1161016a57806381d2e4bb1461043357806382999a391461046e5780638da5cb5b1461051e5780638f32d59b1461053357806399336b361461054857610204565b8063661f21611461038b5780636a26b57f146103b257806370480275146103c757806379a83f5a146103fa57610204565b806335f52572116101d757806335f52572146102fb578063377220fd14610310578063429b62e5146103435780634cf088d91461037657610204565b80630665a06f1461020957806308dcb360146102505780631785f53c146102815780632eee57fa146102b4575b600080fd5b34801561021557600080fd5b5061024e6004803603608081101561022c57600080fd5b506001600160a01b03813516906020810135906040810135906060013561081a565b005b34801561025c57600080fd5b506102656108e8565b604080516001600160a01b039092168252519081900360200190f35b34801561028d57600080fd5b5061024e600480360360208110156102a457600080fd5b50356001600160a01b03166108f7565b3480156102c057600080fd5b506102e7600480360360208110156102d757600080fd5b50356001600160a01b0316610997565b604080519115158252519081900360200190f35b34801561030757600080fd5b5061024e6109ac565b34801561031c57600080fd5b5061024e6004803603602081101561033357600080fd5b50356001600160a01b0316610c84565b34801561034f57600080fd5b506102e76004803603602081101561036657600080fd5b50356001600160a01b0316610cd8565b34801561038257600080fd5b50610265610ced565b34801561039757600080fd5b506103a0610cfc565b60408051918252519081900360200190f35b3480156103be57600080fd5b50610265610d02565b3480156103d357600080fd5b5061024e600480360360208110156103ea57600080fd5b50356001600160a01b0316610d11565b34801561040657600080fd5b5061024e6004803603604081101561041d57600080fd5b506001600160a01b038135169060200135610db4565b34801561043f57600080fd5b5061024e6004803603604081101561045657600080fd5b506001600160a01b0381351690602001351515610fdc565b34801561047a57600080fd5b5061024e6004803603602081101561049157600080fd5b8101906020810181356401000000008111156104ac57600080fd5b8201836020820111156104be57600080fd5b803590602001918460208302840111640100000000831117156104e057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506110a4945050505050565b34801561052a57600080fd5b506102656110f5565b34801561053f57600080fd5b506102e7611105565b34801561055457600080fd5b506102656004803603602081101561056b57600080fd5b5035611129565b34801561057e57600080fd5b506103a06004803603602081101561059557600080fd5b50356001600160a01b0316611150565b3480156105b157600080fd5b506103a0611162565b3480156105c657600080fd5b506103a061116a565b3480156105db57600080fd5b50610265611171565b3480156105f057600080fd5b5061024e6004803603608081101561060757600080fd5b506001600160a01b038135169060208101359060408101359060600135611180565b34801561063557600080fd5b5061024e61124e565b34801561064a57600080fd5b5061024e6004803603604081101561066157600080fd5b506001600160a01b03813516906020013561142b565b34801561068357600080fd5b506102656004803603602081101561069a57600080fd5b50356001600160a01b03166115d6565b3480156106b657600080fd5b50610265600480360360208110156106cd57600080fd5b50356001600160a01b0316611611565b61024e611631565b3480156106f157600080fd5b5061024e6004803603604081101561070857600080fd5b506001600160a01b038135169060200135611633565b34801561072a57600080fd5b506103a061172f565b34801561073f57600080fd5b506102656004803603604081101561075657600080fd5b506001600160a01b038135169060200135611733565b34801561077857600080fd5b5061024e6004803603602081101561078f57600080fd5b50356001600160a01b0316611759565b3480156107ab57600080fd5b506102656117aa565b3480156107c057600080fd5b506102e7600480360360208110156107d757600080fd5b50356001600160a01b03166117b9565b3480156107f357600080fd5b5061024e6004803603602081101561080a57600080fd5b50356001600160a01b03166117ce565b610822611105565b8061083c5750336000908152600c602052604090205460ff165b61087c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600061088985848461184f565b604080516001600160a01b03808416825260208201879052818301869052606082018890529151929350908716917f66a644acab4366c0125120794335c517775a2b44b4315b5d90f0d163dae07fea9181900360800190a25050505050565b6002546001600160a01b031681565b6108ff611105565b61093f576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600c6020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b60096020526000908152604090205460ff1681565b3360009081526009602052604090205460ff16156109fb5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f906021913960400191505060405180910390fd5b336000908152600a602052604090205460ff1615610a56576040805162461bcd60e51b81526020600482015260136024820152721059191c995cdcc8189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6000805b600354811015610b1057600060038281548110610a7357fe5b6000918252602080832090910154604080516370a0823160e01b815233600482015290516001600160a01b03909216945084926370a0823192602480840193829003018186803b158015610ac657600080fd5b505afa158015610ada573d6000803e3d6000fd5b505050506040513d6020811015610af057600080fd5b50519050610b04848263ffffffff61199b16565b93505050600101610a5a565b50336000908152600b60205260409020548111610b69576040805162461bcd60e51b81526020600482015260126024820152713437b63232b9103430b99037379021a9a7ab60711b604482015290519081900360640190fd5b336000908152600b602090815260408083205460099092528220805460ff19166001179055600454920391610bbb906305f5e10090610baf90859063ffffffff6119fe16565b9063ffffffff611a5716565b905080471015610c12576040805162461bcd60e51b815260206004820152601d60248201527f4e6f7420656e6f7567682066756e647320746f207265696d6275727365000000604482015290519081900360640190fd5b604051339082156108fc029083906000818181858888f19350505050158015610c3f573d6000803e3d6000fd5b50604080513381526020810184905280820183905290517f6446d397a910984b01aa4d9df127ff6d89fc789371b7d2cad921fe28a3bc46359181900360600190a15050565b610c8c611105565b610ccc576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610cd581611a99565b50565b600c6020526000908152604090205460ff1681565b6005546001600160a01b031681565b60045481565b6006546001600160a01b031681565b610d19611105565b610d59576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600c6020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b610dbc611105565b80610dd65750336000908152600c602052604090205460ff165b610e16576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216610e71576040805162461bcd60e51b815260206004820152601760248201527f76657374696e67206164647265737320696e76616c6964000000000000000000604482015290519081900360640190fd5b60008111610eb7576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163095ea7b360e01b81526001600160a01b038581166004830152602482018590529151919092169163095ea7b39160448083019260209291908290030181600087803b158015610f0d57600080fd5b505af1158015610f21573d6000803e3d6000fd5b505050506040513d6020811015610f3757600080fd5b505060408051637547c7a360e01b81526004810183905290516001600160a01b03841691637547c7a391602480830192600092919082900301818387803b158015610f8157600080fd5b505af1158015610f95573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693507fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef92509081900360200190a25050565b610fe4611105565b611024576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216611079576040805162461bcd60e51b81526020600482015260176024820152761858d8dbdd5b9d081859191c995cdcc81a5b9d985b1a59604a1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6110ac611105565b6110ec576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610cd581611b16565b6000546001600160a01b03165b90565b600080546001600160a01b031661111a611bb0565b6001600160a01b031614905090565b6003818154811061113657fe5b6000918252602090912001546001600160a01b0316905081565b600b6020526000908152604090205481565b630171240081565b6224ea0081565b6007546001600160a01b031681565b611188611105565b806111a25750336000908152600c602052604090205460ff165b6111e2576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006111ef858484611bb4565b604080516001600160a01b03808416825260208201879052818301869052606082018890529151929350908716917f6f0b5adf3d5b3548ea2b06e9be6e7f72e125253fd8c948f6ef4024be653c1c179181900360800190a25050505050565b3360009081526009602052604090205460ff161561129d5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f906021913960400191505060405180910390fd5b336000908152600a602052604090205460ff16156112f8576040805162461bcd60e51b81526020600482015260136024820152721059191c995cdcc8189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b336000908152600960205260408120805460ff19166001179055805b6003548110156113bb5760006003828154811061132d57fe5b6000918252602080832090910154604080516370a0823160e01b815233600482015290516001600160a01b03909216945084926370a0823192602480840193829003018186803b15801561138057600080fd5b505afa158015611394573d6000803e3d6000fd5b505050506040513d60208110156113aa57600080fd5b505193909301925050600101611314565b50336000908152600b60205260409020548111611410576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b336000908152600b60205260409020549003610cd581611c6c565b611433611105565b611473576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0382166114ce576040805162461bcd60e51b815260206004820152601860248201527f7265636569766572206164647265737320696e76616c69640000000000000000604482015290519081900360640190fd5b80611511576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561156757600080fd5b505af115801561157b573d6000803e3d6000fd5b505050506040513d602081101561159157600080fd5b50506040805182815290516001600160a01b038416917fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad919081900360200190a25050565b6001600160a01b038116600090815260086020526040812081805b81526020810191909152604001600020546001600160a01b031692915050565b6001600160a01b03811660009081526008602052604081208160016115f1565b565b61163b611105565b61167b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0382166116d0576040805162461bcd60e51b81526020600482015260176024820152761858d8dbdd5b9d081859191c995cdcc81a5b9d985b1a59604a1b604482015290519081900360640190fd5b80611713576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6001600160a01b039091166000908152600b6020526040902055565b4790565b60086020908152600092835260408084209091529082529020546001600160a01b031681565b611761611105565b6117a1576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610cd581611d9e565b6001546001600160a01b031681565b600a6020526000908152604090205460ff1681565b6117d6611105565b611816576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561184b573d6000803e3d6000fd5b5050565b6001600160a01b03838116600090815260086020908152604080832060018085529252822054919290911661196d5760015460025460055460065460408051637d2fbb8f60e11b81526001600160a01b039485166004820152928416602484015289841660448401819052606484018a90526084840189905291841660a484015260c483019190915251600093929092169163fa5f771e9160e48082019260209290919082900301818787803b15801561190857600080fd5b505af115801561191c573d6000803e3d6000fd5b505050506040513d602081101561193257600080fd5b50516001600160a01b038781166000908152600860209081526040808320878452909152902080546001600160a01b03191691909216179055505b6001600160a01b03948516600090815260086020908152604080832093835292905220549093169392505050565b6000828201838110156119f5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600082611a0d575060006119f8565b82820282848281611a1a57fe5b04146119f55760405162461bcd60e51b8152600401808060200182810382526021815260200180611fb16021913960400191505060405180910390fd5b60006119f583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e3e565b6001600160a01b038116611af4576040805162461bcd60e51b815260206004820152601e60248201527f76657374696e67466163746f7279206164647265737320696e76616c69640000604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60005b8151811015611b9c5760006001600160a01b0316828281518110611b3957fe5b60200260200101516001600160a01b03161415611b94576040805162461bcd60e51b815260206004820152601460248201527310d4d3d5881859191c995cdcc81a5b9d985b1a5960621b604482015290519081900360640190fd5b600101611b19565b50805161184b906003906020840190611ee0565b3390565b6001600160a01b038381166000908152600860209081526040808320838052909152812054909182911661196d5760015460025460055460065460075460408051630546344f60e41b81526001600160a01b03958616600482015293851660248501528a85166044850152606484018a90526084840189905291841660a4840152831660c483015251600093929092169163546344f09160e48082019260209290919082900301818787803b15801561190857600080fd5b6000611c80336224ea00630171240061184f565b6002546040805163095ea7b360e01b81526001600160a01b03808516600483015260248201879052915193945091169163095ea7b3916044808201926020929091908290030181600087803b158015611cd857600080fd5b505af1158015611cec573d6000803e3d6000fd5b505050506040513d6020811015611d0257600080fd5b505060408051637547c7a360e01b81526004810184905290516001600160a01b03831691637547c7a391602480830192600092919082900301818387803b158015611d4c57600080fd5b505af1158015611d60573d6000803e3d6000fd5b50506040805185815290513393507f7a97172500d57114068a2a8f1f632999070720324825e2c5b57e27219b7bf18f92509081900360200190a25050565b6001600160a01b038116611de35760405162461bcd60e51b8152600401808060200182810382526026815260200180611f6a6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008183611eca5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e8f578181015183820152602001611e77565b50505050905090810190601f168015611ebc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611ed657fe5b0495945050505050565b828054828255906000526020600020908101928215611f35579160200282015b82811115611f3557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611f00565b50611f41929150611f45565b5090565b61110291905b80821115611f415780546001600160a01b0319168155600101611f4b56fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573732063616e6e6f742062652070726f636573736564207477696365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158206dd19a01f55289628adf199d95b3b4f120a39e0399e583ba381b2341cd42df0a64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x204 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA153E708 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0xD0E30DB0 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x76C JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x79F JUMPI DUP1 PUSH4 0xF6D6189E EQ PUSH2 0x5BA JUMPI DUP1 PUSH4 0xF9F92BE4 EQ PUSH2 0x7B4 JUMPI DUP1 PUSH4 0xFA09E630 EQ PUSH2 0x7E7 JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x6DD JUMPI DUP1 PUSH4 0xDF8BD747 EQ PUSH2 0x6E5 JUMPI DUP1 PUSH4 0xED01BF29 EQ PUSH2 0x71E JUMPI DUP1 PUSH4 0xF2BECF17 EQ PUSH2 0x733 JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0xBD8F732B GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0xBD8F732B EQ PUSH2 0x5E4 JUMPI DUP1 PUSH4 0xC6273309 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x63E JUMPI DUP1 PUSH4 0xC810A3E3 EQ PUSH2 0x677 JUMPI DUP1 PUSH4 0xCC49EDE7 EQ PUSH2 0x6AA JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0xA153E708 EQ PUSH2 0x572 JUMPI DUP1 PUSH4 0xB33F914A EQ PUSH2 0x5A5 JUMPI DUP1 PUSH4 0xB4EBC041 EQ PUSH2 0x5BA JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x5CF JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0x661F2161 GT PUSH2 0x19B JUMPI DUP1 PUSH4 0x81D2E4BB GT PUSH2 0x16A JUMPI DUP1 PUSH4 0x81D2E4BB EQ PUSH2 0x433 JUMPI DUP1 PUSH4 0x82999A39 EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x51E JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x533 JUMPI DUP1 PUSH4 0x99336B36 EQ PUSH2 0x548 JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0x661F2161 EQ PUSH2 0x38B JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x3B2 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0x79A83F5A EQ PUSH2 0x3FA JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0x35F52572 GT PUSH2 0x1D7 JUMPI DUP1 PUSH4 0x35F52572 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x377220FD EQ PUSH2 0x310 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x376 JUMPI PUSH2 0x204 JUMP JUMPDEST DUP1 PUSH4 0x665A06F EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x2EEE57FA EQ PUSH2 0x2B4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x81A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x8E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8F7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x997 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH2 0x9AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCD8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0xCED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH2 0xCFC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0xD02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD11 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDB4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xFDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x10A4 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x10F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E7 PUSH2 0x1105 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1129 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1150 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH2 0x1162 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH2 0x116A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x1171 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1180 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH2 0x124E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x142B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15D6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1611 JUMP JUMPDEST PUSH2 0x24E PUSH2 0x1631 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x708 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1633 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH2 0x172F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x756 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1733 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x778 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1759 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 PUSH2 0x17AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x17B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x80A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x17CE JUMP JUMPDEST PUSH2 0x822 PUSH2 0x1105 JUMP JUMPDEST DUP1 PUSH2 0x83C JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x87C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x889 DUP6 DUP5 DUP5 PUSH2 0x184F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP8 AND SWAP2 PUSH32 0x66A644ACAB4366C0125120794335C517775A2B44B4315B5D90F0D163DAE07FEA SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x8FF PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x93F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x9FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F90 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA56 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x1059191C995CDCC8189B1858DADB1A5CDD1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0xB10 JUMPI PUSH1 0x0 PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xA73 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP5 POP DUP5 SWAP3 PUSH4 0x70A08231 SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xADA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0xB04 DUP5 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x199B AND JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x1 ADD PUSH2 0xA5A JUMP JUMPDEST POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT PUSH2 0xB69 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x3437B63232B9103430B99037379021A9A7AB PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x9 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x4 SLOAD SWAP3 SUB SWAP2 PUSH2 0xBBB SWAP1 PUSH4 0x5F5E100 SWAP1 PUSH2 0xBAF SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x19FE AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1A57 AND JUMP JUMPDEST SWAP1 POP DUP1 SELFBALANCE LT ISZERO PUSH2 0xC12 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F7567682066756E647320746F207265696D6275727365000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xC3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP1 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0x6446D397A910984B01AA4D9DF127FF6D89FC789371B7D2CAD921FE28A3BC4635 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0xC8C PUSH2 0x1105 JUMP JUMPDEST PUSH2 0xCCC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xCD5 DUP2 PUSH2 0x1A99 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xD19 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0xD59 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xDBC PUSH2 0x1105 JUMP JUMPDEST DUP1 PUSH2 0xDD6 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xE16 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xE71 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67206164647265737320696E76616C6964000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xEB7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF21 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x7547C7A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x7547C7A3 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP4 POP PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0xFE4 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x1024 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1079 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x1858D8DBDD5B9D081859191C995CDCC81A5B9D985B1A59 PUSH1 0x4A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x10AC PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x10EC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xCD5 DUP2 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x111A PUSH2 0x1BB0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1136 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH4 0x1712400 DUP2 JUMP JUMPDEST PUSH3 0x24EA00 DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1188 PUSH2 0x1105 JUMP JUMPDEST DUP1 PUSH2 0x11A2 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x11E2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11EF DUP6 DUP5 DUP5 PUSH2 0x1BB4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP8 AND SWAP2 PUSH32 0x6F0B5ADF3D5B3548EA2B06E9BE6E7F72E125253FD8C948F6EF4024BE653C1C17 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x129D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F90 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x12F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x1059191C995CDCC8189B1858DADB1A5CDD1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 JUMPDEST PUSH1 0x3 SLOAD DUP2 LT ISZERO PUSH2 0x13BB JUMPI PUSH1 0x0 PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x132D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP5 POP DUP5 SWAP3 PUSH4 0x70A08231 SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1394 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP1 SWAP4 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1314 JUMP JUMPDEST POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT PUSH2 0x1410 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SUB PUSH2 0xCD5 DUP2 PUSH2 0x1C6C JUMP JUMPDEST PUSH2 0x1433 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x1473 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x14CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x1511 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x157B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP1 JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH1 0x1 PUSH2 0x15F1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x163B PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x167B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x16D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x1858D8DBDD5B9D081859191C995CDCC81A5B9D985B1A59 PUSH1 0x4A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x1713 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1761 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x17A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xCD5 DUP2 PUSH2 0x1D9E JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x17D6 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x1816 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x184B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP6 MSTORE SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP2 SWAP3 SWAP1 SWAP2 AND PUSH2 0x196D JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7D2FBB8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x24 DUP5 ADD MSTORE DUP10 DUP5 AND PUSH1 0x44 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x64 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP5 ADD DUP10 SWAP1 MSTORE SWAP2 DUP5 AND PUSH1 0xA4 DUP5 ADD MSTORE PUSH1 0xC4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xFA5F771E SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1908 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x191C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP4 AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x19F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1A0D JUMPI POP PUSH1 0x0 PUSH2 0x19F8 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1A1A JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x19F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1FB1 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19F5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1E3E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1AF4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67466163746F7279206164647265737320696E76616C69640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x1B9C JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B39 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1B94 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x10D4D3D5881859191C995CDCC81A5B9D985B1A59 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x1B19 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x184B SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1EE0 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 DUP3 SWAP2 AND PUSH2 0x196D JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x546344F PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x24 DUP6 ADD MSTORE DUP11 DUP6 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP5 ADD DUP10 SWAP1 MSTORE SWAP2 DUP5 AND PUSH1 0xA4 DUP5 ADD MSTORE DUP4 AND PUSH1 0xC4 DUP4 ADD MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x546344F0 SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1908 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C80 CALLER PUSH3 0x24EA00 PUSH4 0x1712400 PUSH2 0x184F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE SWAP2 MLOAD SWAP4 SWAP5 POP SWAP2 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x7547C7A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0x7547C7A3 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP4 POP PUSH32 0x7A97172500D57114068A2A8F1F632999070720324825E2C5B57E27219B7BF18F SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1DE3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F6A PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1ECA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E8F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E77 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1EBC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1ED6 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1F35 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1F35 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1F00 JUMP JUMPDEST POP PUSH2 0x1F41 SWAP3 SWAP2 POP PUSH2 0x1F45 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1102 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1F41 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1F4B JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373416464726573732063616E6E6F742062 PUSH6 0x2070726F6365 PUSH20 0x736564207477696365536166654D6174683A206D PUSH22 0x6C7469706C69636174696F6E206F766572666C6F77A2 PUSH6 0x627A7A723158 KECCAK256 PUSH14 0xD19A01F55289628ADF199D95B3B4 CALL KECCAK256 LOG3 SWAP15 SUB SWAP10 0xE5 DUP4 0xBA CODESIZE SHL 0x23 COINBASE 0xCD TIMESTAMP 0xDF EXP PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "1194:15263:79:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12685:279;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12685:279:79;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;12685:279:79;;;;;;;;;;;;;;;;;;:::i;:::-;;1590:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1590:18:79;;;:::i;:::-;;;;-1:-1:-1;;;;;1590:18:79;;;;;;;;;;;;;;5898:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5898:113:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5898:113:79;-1:-1:-1;;;;;5898:113:79;;:::i;2423:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2423:45:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2423:45:79;-1:-1:-1;;;;;2423:45:79;;:::i;:::-;;;;;;;;;;;;;;;;;;6535:1046;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6535:1046:79;;;:::i;8763:112::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8763:112:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8763:112:79;-1:-1:-1;;;;;8763:112:79;;:::i;2760:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2760:38:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2760:38:79;-1:-1:-1;;;;;2760:38:79;;:::i;1753:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1753:22:79;;;:::i;1682:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1682:24:79;;;:::i;:::-;;;;;;;;;;;;;;;;1811:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1811:30:79;;;:::i;5669:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5669:107:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5669:107:79;-1:-1:-1;;;;;5669:107:79;;:::i;13704:312::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13704:312:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13704:312:79;;;;;;;;:::i;9988:185::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9988:185:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9988:185:79;;;;;;;;;;:::i;9341:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9341:105:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9341:105:79;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;9341:105:79;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9341:105:79;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9341:105:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9341:105:79;;-1:-1:-1;9341:105:79;;-1:-1:-1;;;;;9341:105:79:i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;1134:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;1651:27:79:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1651:27:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1651:27:79;;:::i;2657:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2657:47:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2657:47:79;-1:-1:-1;;;;;2657:47:79;;:::i;1445:63::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1445:63:79;;;:::i;1387:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1387:55:79;;;:::i;1912:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1912:27:79;;;:::i;13235:291::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13235:291:79;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;13235:291:79;;;;;;;;;;;;;;;;;;:::i;11187:434::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11187:434:79;;;:::i;10854:273::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10854:273:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10854:273:79;;;;;;;;:::i;14543:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14543:153:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14543:153:79;-1:-1:-1;;;;;14543:153:79;;:::i;14202:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14202:145:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14202:145:79;-1:-1:-1;;;;;14202:145:79;;:::i;7865:36::-;;;:::i;10349:223::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10349:223:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10349:223:79;;;;;;;;:::i;7677:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7677:117:79;;;:::i;2085:71::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2085:71:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2085:71:79;;;;;;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1351:98:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;1512:37:79:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1512:37:79;;;:::i;2552:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2552:41:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2552:41:79;-1:-1:-1;;;;;2552:41:79;;:::i;8027:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8027:100:79;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8027:100:79;-1:-1:-1;;;;;8027:100:79;;:::i;12685:279::-;5496:9;:7;:9::i;:::-;:31;;;-1:-1:-1;5516:10:79;5509:18;;;;:6;:18;;;;;;;;5496:31;5488:56;;;;;-1:-1:-1;;;5488:56:79;;;;;;;;;;;;-1:-1:-1;;;5488:56:79;;;;;;;;;;;;;;;12818:15;12836:51;12856:11;12869:6;12877:9;12836:19;:51::i;:::-;12896:64;;;-1:-1:-1;;;;;12896:64:79;;;;;;;;;;;;;;;;;;;;;;;;;12818:69;;-1:-1:-1;12896:64:79;;;;;;;;;;;;;5548:1;12685:279;;;;:::o;1590:18::-;;;-1:-1:-1;;;;;1590:18:79;;:::o;5898:113::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;5956:14:79;;5973:5;5956:14;;;:6;:14;;;;;;;;;:22;;-1:-1:-1;;5956:22:79;;;5987:20;;;;;;;;;;;;;;;;;5898:113;:::o;2423:45::-;;;;;;;;;;;;;;;:::o;6535:1046::-;6145:10;6131:25;;;;:13;:25;;;;;;;;6130:26;6122:72;;;;-1:-1:-1;;;6122:72:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6257:10;6247:21;;;;:9;:21;;;;;;;;6246:22;6238:54;;;;;-1:-1:-1;;;6238:54:79;;;;;;;;;;;;-1:-1:-1;;;6238:54:79;;;;;;;;;;;;;;;6599:21;;6628:190;6652:10;:17;6648:21;;6628:190;;;6681:12;6696:10;6707:1;6696:13;;;;;;;;;;;;;;;;;;;;6732:34;;;-1:-1:-1;;;6732:34:79;;6755:10;6732:34;;;;;;-1:-1:-1;;;;;6696:13:79;;;;-1:-1:-1;6696:13:79;;6732:22;;:34;;;;;;;;;;6696:13;6732:34;;;5:2:-1;;;;30:1;27;20:12;5:2;6732:34:79;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6732:34:79;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6732:34:79;;-1:-1:-1;6787:26:79;:13;6732:34;6787:26;:17;:26;:::i;:::-;6771:42;-1:-1:-1;;;6671:3:79;;6628:190;;;-1:-1:-1;6859:10:79;6846:24;;;;:12;:24;;;;;;6830:40;;6822:71;;;;;-1:-1:-1;;;6822:71:79;;;;;;;;;;;;-1:-1:-1;;;6822:71:79;;;;;;;;;;;;;;;6927:10;6914:24;;;;:12;:24;;;;;;;;;6942:13;:25;;;;;:32;;-1:-1:-1;;6942:32:79;6970:4;6942:32;;;7362:9;;6897:41;;;7343;;7378:5;;7344:28;;6897:41;;7344:28;:17;:28;:::i;:::-;7343:34;:41;:34;:41;:::i;:::-;7317:67;;7421:15;7396:21;:40;;7388:82;;;;;-1:-1:-1;;;7388:82:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;7474:36;;:10;;:36;;;;;7494:15;;7474:36;;;;7494:15;7474:10;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;7520:57:79;;;7534:10;7520:57;;;;;;;;;;;;;;;;;;;;;;;;;6296:1;;6535:1046::o;8763:112::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;8836:35:79;8855:15;8836:18;:35::i;:::-;8763:112;:::o;2760:38::-;;;;;;;;;;;;;;;:::o;1753:22::-;;;-1:-1:-1;;;;;1753:22:79;;:::o;1682:24::-;;;;:::o;1811:30::-;;;-1:-1:-1;;;;;1811:30:79;;:::o;5669:107::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;5724:14:79;;;;;;:6;:14;;;;;;;;;:21;;-1:-1:-1;;5724:21:79;5741:4;5724:21;;;5754:18;;;;;;;;;;;;;;;;;5669:107;:::o;13704:312::-;5496:9;:7;:9::i;:::-;:31;;;-1:-1:-1;5516:10:79;5509:18;;;;:6;:18;;;;;;;;5496:31;5488:56;;;;;-1:-1:-1;;;5488:56:79;;;;;;;;;;;;-1:-1:-1;;;5488:56:79;;;;;;;;;;;;;;;-1:-1:-1;;;;;13794:22:79;;13786:58;;;;;-1:-1:-1;;;13786:58:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;13866:1;13856:7;:11;13848:38;;;;;-1:-1:-1;;;13848:38:79;;;;;;;;;;;;-1:-1:-1;;;13848:38:79;;;;;;;;;;;;;;;13898:3;;13891:38;;;-1:-1:-1;;;13891:38:79;;-1:-1:-1;;;;;13891:38:79;;;;;;;;;;;;;;;13898:3;;;;;13891:19;;:38;;;;;;;;;;;;;;13898:3;;13891:38;;;5:2:-1;;;;30:1;27;20:12;5:2;13891:38:79;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13891:38:79;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;13933:39:79;;;-1:-1:-1;;;13933:39:79;;;;;;;;;;-1:-1:-1;;;;;13933:30:79;;;;;:39;;;;;-1:-1:-1;;13933:39:79;;;;;;;-1:-1:-1;13933:30:79;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;13933:39:79;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13981:31:79;;;;;;;;-1:-1:-1;;;;;13981:31:79;;;-1:-1:-1;13981:31:79;;-1:-1:-1;13981:31:79;;;;;;;;13704:312;;:::o;9988:185::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;10080:22:79;;10072:58;;;;;-1:-1:-1;;;10072:58:79;;;;;;;;;;;;-1:-1:-1;;;10072:58:79;;;;;;;;;;;;;;;-1:-1:-1;;;;;10135:19:79;;;;;;;;:9;:19;;;;;:34;;-1:-1:-1;;10135:34:79;;;;;;;;;;9988:185::o;9341:105::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;9415:27:79;9430:11;9415:14;:27::i;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1651:27:79:-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1651:27:79;;-1:-1:-1;1651:27:79;:::o;2657:47::-;;;;;;;;;;;;;:::o;1445:63::-;1493:15;1445:63;:::o;1387:55::-;1376:7;1387:55;:::o;1912:27::-;;;-1:-1:-1;;;;;1912:27:79;;:::o;13235:291::-;5496:9;:7;:9::i;:::-;:31;;;-1:-1:-1;5516:10:79;5509:18;;;;:6;:18;;;;;;;;5496:31;5488:56;;;;;-1:-1:-1;;;5488:56:79;;;;;;;;;;;;-1:-1:-1;;;5488:56:79;;;;;;;;;;;;;;;13372:15;13390:55;13414:11;13427:6;13435:9;13390:23;:55::i;:::-;13454:68;;;-1:-1:-1;;;;;13454:68:79;;;;;;;;;;;;;;;;;;;;;;;;;13372:73;;-1:-1:-1;13454:68:79;;;;;;;;;;;;;5548:1;13235:291;;;;:::o;11187:434::-;6145:10;6131:25;;;;:13;:25;;;;;;;;6130:26;6122:72;;;;-1:-1:-1;;;6122:72:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6257:10;6247:21;;;;:9;:21;;;;;;;;6246:22;6238:54;;;;;-1:-1:-1;;;6238:54:79;;;;;;;;;;;;-1:-1:-1;;;6238:54:79;;;;;;;;;;;;;;;11271:10;11257:25;;;;:13;:25;;;;;:32;;-1:-1:-1;;11257:32:79;11285:4;11257:32;;;:25;11316:165;11340:10;:17;11336:21;;11316:165;;;11369:12;11384:10;11395:1;11384:13;;;;;;;;;;;;;;;;;;;;11420:34;;;-1:-1:-1;;;11420:34:79;;11443:10;11420:34;;;;;;-1:-1:-1;;;;;11384:13:79;;;;-1:-1:-1;11384:13:79;;11420:22;;:34;;;;;;;;;;11384:13;11420:34;;;5:2:-1;;;;30:1;27;20:12;5:2;11420:34:79;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11420:34:79;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11420:34:79;11459:17;;;;;-1:-1:-1;;11359:3:79;;11316:165;;;-1:-1:-1;11515:10:79;11502:24;;;;:12;:24;;;;;;11493:33;;11485:60;;;;;-1:-1:-1;;;11485:60:79;;;;;;;;;;;;-1:-1:-1;;;11485:60:79;;;;;;;;;;;;;;;11572:10;11559:24;;;;:12;:24;;;;;;11549:34;;11588:29;11549:34;11588:21;:29::i;10854:273::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;10940:23:79;;10932:60;;;;;-1:-1:-1;;;10932:60:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;11004:12;10996:39;;;;;-1:-1:-1;;;10996:39:79;;;;;;;;;;;;-1:-1:-1;;;10996:39:79;;;;;;;;;;;;;;;11047:3;;11040:40;;;-1:-1:-1;;;11040:40:79;;-1:-1:-1;;;;;11040:40:79;;;;;;;;;;;;;;;11047:3;;;;;11040:20;;:40;;;;;;;;;;;;;;11047:3;;11040:40;;;5:2:-1;;;;30:1;27;20:12;5:2;11040:40:79;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11040:40:79;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;11089:34:79;;;;;;;;-1:-1:-1;;;;;11089:34:79;;;;;;;;;11040:40;11089:34;;;10854:273;;:::o;14543:153::-;-1:-1:-1;;;;;14629:29:79;;14609:7;14629:29;;;:16;:29;;;;;14609:7;;14659:32;14629:63;;;;;;;;;;;-1:-1:-1;14629:63:79;;-1:-1:-1;;;;;14629:63:79;;14543:153;-1:-1:-1;;14543:153:79:o;14202:145::-;-1:-1:-1;;;;;14284:29:79;;14264:7;14284:29;;;:16;:29;;;;;14264:7;14322:19;14314:28;;7865:36;:::o;10349:223::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;10438:22:79;;10430:58;;;;;-1:-1:-1;;;10430:58:79;;;;;;;;;;;;-1:-1:-1;;;10430:58:79;;;;;;;;;;;;;;;10500:12;10492:39;;;;;-1:-1:-1;;;10492:39:79;;;;;;;;;;;;-1:-1:-1;;;10492:39:79;;;;;;;;;;;;;;;-1:-1:-1;;;;;10536:22:79;;;;;;;:12;:22;;;;;:32;10349:223::o;7677:117::-;7750:21;7677:117;:::o;2085:71::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2085:71:79;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;1512:37:79:-;;;-1:-1:-1;;;;;1512:37:79;;:::o;2552:41::-;;;;;;;;;;;;;;;:::o;8027:100::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;8089::79;;-1:-1:-1;;;;;8089:11:79;;;8101:21;8089:34;;;;;;;;;8101:21;8089:11;:34;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8089:34:79;8027:100;:::o;15060:546::-;-1:-1:-1;;;;;15237:29:79;;;15172:7;15237:29;;;:16;:29;;;;;;;;15209:19;15237:36;;;;;;;;15172:7;;15209:19;;15237:36;15233:323;;15396:14;;15425:3;;15430:7;;15471:15;;15396:104;;;-1:-1:-1;;;15396:104:79;;-1:-1:-1;;;;;15425:3:79;;;15396:104;;;;15430:7;;;15396:104;;;;;;;;;;;;;;;;;;;;;;;;;15471:15;;;15396:104;;;;;;;;;;;;15378:15;;15396:14;;;;;:28;;:104;;;;;;;;;;;;;;;15378:15;15396:14;:104;;;5:2:-1;;;;30:1;27;20:12;5:2;15396:104:79;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15396:104:79;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15396:104:79;-1:-1:-1;;;;;15505:29:79;;;;;;;:16;15396:104;15505:29;;;;;;;:36;;;;;;;;:46;;-1:-1:-1;;;;;;15505:46:79;;;;;;;;-1:-1:-1;15233:323:79;-1:-1:-1;;;;;15566:29:79;;;;;;;:16;:29;;;;;;;;:36;;;;;;;;;;;;15060:546;-1:-1:-1;;;15060:546:79:o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;-1:-1:-1;812:155:145;;;;;:::o;1999:399::-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2817:121;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;9025:195:79:-;-1:-1:-1;;;;;9099:29:79;;9091:72;;;;;-1:-1:-1;;;9091:72:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;9167:14;:49;;-1:-1:-1;;;;;;9167:49:79;-1:-1:-1;;;;;9167:49:79;;;;;;;;;;9025:195::o;9591:218::-;9663:9;9658:120;9682:11;:18;9678:1;:22;9658:120;;;9746:1;-1:-1:-1;;;;;9720:28:79;:11;9732:1;9720:14;;;;;;;;;;;;;;-1:-1:-1;;;;;9720:28:79;;;9712:61;;;;;-1:-1:-1;;;9712:61:79;;;;;;;;;;;;-1:-1:-1;;;9712:61:79;;;;;;;;;;;;;;;9702:3;;9658:120;;;-1:-1:-1;9781:24:79;;;;:10;;:24;;;;;:::i;780:87:137:-;853:10;780:87;:::o;15980:475:79:-;-1:-1:-1;;;;;16165:29:79;;;16096:7;16165:29;;;:16;:29;;;;;;;;:36;;;;;;;;;16096:7;;;;16165:36;16161:244;;16240:14;;16273:3;;16278:7;;16319:15;;16336:12;;16240:109;;;-1:-1:-1;;;16240:109:79;;-1:-1:-1;;;;;16273:3:79;;;16240:109;;;;16278:7;;;16240:109;;;;;;;;;;;;;;;;;;;;;;;16319:15;;;16240:109;;;;16336:12;;16240:109;;;;;16222:15;;16240:14;;;;;:32;;:109;;;;;;;;;;;;;;;16222:15;16240:14;:109;;;5:2:-1;;;;30:1;27;20:12;11756:291:79;11817:15;11835:74;11855:10;1376:7;1493:15;11835:19;:74::i;:::-;11921:3;;11914:37;;;-1:-1:-1;;;11914:37:79;;-1:-1:-1;;;;;11914:37:79;;;;;;;;;;;;;;;11817:92;;-1:-1:-1;11921:3:79;;;11914:19;;:37;;;;;;;;;;;;;;;11921:3;;11914:37;;;5:2:-1;;;;30:1;27;20:12;5:2;11914:37:79;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11914:37:79;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;11955:38:79;;;-1:-1:-1;;;11955:38:79;;;;;;;;;;-1:-1:-1;;;;;11955:29:79;;;;;:38;;;;;-1:-1:-1;;11955:38:79;;;;;;;-1:-1:-1;11955:29:79;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;11955:38:79;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;12003:40:79;;;;;;;;12023:10;;-1:-1:-1;12003:40:79;;-1:-1:-1;12003:40:79;;;;;;;;11756:291;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;3411:315:145:-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1194:15263:79:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1194:15263:79;-1:-1:-1;;;;;1194:15263:79;;;;;;;;;;;-1:-1:-1;1194:15263:79;;;;;;;-1:-1:-1;1194:15263:79;;;-1:-1:-1;1194:15263:79;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;1194:15263:79;;;;;;"
            },
            "methodIdentifiers": {
              "CSOV_VESTING_CLIFF()": "b4ebc041",
              "CSOV_VESTING_DURATION()": "b33f914a",
              "CSOVtokens(uint256)": "99336b36",
              "FOUR_WEEKS()": "f6d6189e",
              "SOV()": "08dcb360",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "blacklist(address)": "f9f92be4",
              "budget()": "ed01bf29",
              "createTeamVesting(address,uint256,uint256,uint256)": "bd8f732b",
              "createVesting(address,uint256,uint256,uint256)": "0665a06f",
              "deposit()": "d0e30db0",
              "exchangeAllCSOV()": "c6273309",
              "feeSharingProxy()": "6a26b57f",
              "getTeamVesting(address)": "c810a3e3",
              "getVesting(address)": "cc49ede7",
              "isOwner()": "8f32d59b",
              "lockedAmount(address)": "a153e708",
              "owner()": "8da5cb5b",
              "priceSats()": "661f2161",
              "processedList(address)": "2eee57fa",
              "reImburse()": "35f52572",
              "removeAdmin(address)": "1785f53c",
              "setBlacklistFlag(address,bool)": "81d2e4bb",
              "setCSOVtokens(address[])": "82999a39",
              "setLockedAmount(address,uint256)": "df8bd747",
              "setVestingFactory(address)": "377220fd",
              "stakeTokens(address,uint256)": "79a83f5a",
              "staking()": "4cf088d9",
              "transferOwnership(address)": "f2fde38b",
              "transferSOV(address,uint256)": "c680c0b7",
              "vestingContracts(address,uint256)": "f2becf17",
              "vestingFactory()": "f60826ee",
              "vestingOwner()": "bd7b5908",
              "withdrawAll(address)": "fa09e630"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "budget()": {
                "notice": "Get contract balance."
              },
              "constructor": "Contract deployment settings.",
              "createTeamVesting(address,uint256,uint256,uint256)": {
                "notice": "Create Team Vesting contract."
              },
              "createVesting(address,uint256,uint256,uint256)": {
                "notice": "Create Vesting contract."
              },
              "deposit()": {
                "notice": "Deposit function to receiving value (rBTC)."
              },
              "exchangeAllCSOV()": {
                "notice": "Exchange cSOV to SOV with 1:1 rate"
              },
              "getTeamVesting(address)": {
                "notice": "Query the team vesting contract for an account."
              },
              "getVesting(address)": {
                "notice": "Query the vesting contract for an account."
              },
              "reImburse()": {
                "notice": "cSOV payout to sender with rBTC currency. 1.- Check holder cSOV balance by adding up every cSOV token balance. 2.- ReImburse rBTC if funds available. 3.- And store holder address in processedList."
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "setBlacklistFlag(address,bool)": {
                "notice": "Set blacklist flag (true/false)."
              },
              "setCSOVtokens(address[])": {
                "notice": "Sets cSOV tokens array. High level endpoint."
              },
              "setLockedAmount(address,uint256)": {
                "notice": "Set amount to be subtracted from user token balance."
              },
              "setVestingFactory(address)": {
                "notice": "Sets vesting factory address. High level endpoint."
              },
              "stakeTokens(address,uint256)": {
                "notice": "Stake tokens according to the vesting schedule."
              },
              "transferSOV(address,uint256)": {
                "notice": "Transfer SOV tokens to given address."
              },
              "withdrawAll(address)": {
                "notice": "Send all contract balance to an account."
              }
            },
            "notice": "On January 25, 2020, Sovryn launched the Genesis Reservation system. Sovryn community members who controlled a special NFT were granted access to stake BTC or rBTC for cSOV tokens at a rate of 2500 satoshis per cSOV. Per SIP-0003, up to 2,000,000 cSOV were made available in the Genesis event, which will be redeemable on a 1:1 basis for cSOV, subject to approval by existing SOV holders. * On 15 Feb 2021 Sovryn is taking another step in its journey to decentralized financial sovereignty with the vote on SIP 0005. This proposal will enable participants of the Genesis Reservation system to redeem their reserved cSOV tokens for SOV. They will also have the choice to redeem cSOV for rBTC if they decide to exit the system. * This contract deals with the vesting and redemption of cSOV tokens."
          }
        }
      },
      "contracts/governance/Vesting/VestingRegistry2.sol": {
        "VestingRegistry2": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingFactory",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "_CSOVtokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256",
                  "name": "_priceSats",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_staking",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_feeSharingProxy",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_vestingOwner",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "CSOVTokensExchanged",
              "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": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "SOVTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TeamVestingCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VestingCreated",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "CSOV_VESTING_CLIFF",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "CSOV_VESTING_DURATION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "CSOVtokens",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "FOUR_WEEKS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "blacklist",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "budget",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "createTeamVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "createVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "deposit",
              "outputs": [],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharingProxy",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                }
              ],
              "name": "getTeamVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                }
              ],
              "name": "getVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lockedAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceSats",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "processedList",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_account",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_blacklisted",
                  "type": "bool"
                }
              ],
              "name": "setBlacklistFlag",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_CSOVtokens",
                  "type": "address[]"
                }
              ],
              "name": "setCSOVtokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "setLockedAmount",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingFactory",
                  "type": "address"
                }
              ],
              "name": "setVestingFactory",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vesting",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "stakeTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "transferSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestingContracts",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingFactory",
              "outputs": [
                {
                  "internalType": "contract IVestingFactory",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address payable",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdrawAll",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "budget()": {
                "return": "The token balance of the contract."
              },
              "constructor": {
                "details": "On Sovryn the vesting owner is Exchequer Multisig. According to SIP-0007 The Exchequer Multisig is designated to hold certain funds in the form of rBTC and SOV, in order to allow for flexible deployment of such funds on: + facilitating rBTC redemptions for Genesis pre-sale participants. + deploying of SOV for the purposes of exchange listings, market   making, and partnerships with third parties.",
                "params": {
                  "_CSOVtokens": "The array of cSOV tokens.",
                  "_SOV": "The SOV token address.",
                  "_feeSharingProxy": "The address of fee sharing proxy contract.",
                  "_priceSats": "The price of cSOV tokens in satoshis.",
                  "_staking": "The address of staking contract.",
                  "_vestingFactory": "The address of vesting factory contract.",
                  "_vestingOwner": "The address of an owner of vesting contract."
                }
              },
              "createTeamVesting(address,uint256,uint256,uint256)": {
                "params": {
                  "_amount": "The amount to be staked.",
                  "_cliff": "The time interval to the first withdraw in seconds.",
                  "_duration": "The total duration in seconds.",
                  "_tokenOwner": "The owner of the tokens."
                }
              },
              "createVesting(address,uint256,uint256,uint256)": {
                "params": {
                  "_amount": "The amount to be staked.",
                  "_cliff": "The time interval to the first withdraw in seconds.",
                  "_duration": "The total duration in seconds.",
                  "_tokenOwner": "The owner of the tokens."
                }
              },
              "getTeamVesting(address)": {
                "params": {
                  "_tokenOwner": "The owner of the tokens."
                },
                "return": "The team vesting contract address for the given token owner."
              },
              "getVesting(address)": {
                "params": {
                  "_tokenOwner": "The owner of the tokens."
                },
                "return": "The vesting contract address for the given token owner."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "setBlacklistFlag(address,bool)": {
                "params": {
                  "_account": "The address to be blacklisted.",
                  "_blacklisted": "The flag to add/remove to/from a blacklist."
                }
              },
              "setCSOVtokens(address[])": {
                "params": {
                  "_CSOVtokens": "The array of cSOV tokens."
                }
              },
              "setLockedAmount(address,uint256)": {
                "params": {
                  "_account": "The address with locked amount.",
                  "_amount": "The amount to be locked."
                }
              },
              "setVestingFactory(address)": {
                "details": "Splitting code on two functions: high level and low level is a pattern that makes easy to extend functionality in a readable way, without accidentally breaking the actual action being performed. For example, checks should be done on high level endpoint, while core functionality should be coded on the low level function.",
                "params": {
                  "_vestingFactory": "The address of vesting factory contract."
                }
              },
              "stakeTokens(address,uint256)": {
                "params": {
                  "_amount": "the amount of tokens to stake",
                  "_vesting": "the address of Vesting contract"
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "transferSOV(address,uint256)": {
                "details": "This is a wrapper for ERC-20 transfer function w/ additional checks and triggering an event.",
                "params": {
                  "_amount": "The amount to be transferred.",
                  "_receiver": "The address of the SOV receiver."
                }
              },
              "withdrawAll(address)": {
                "params": {
                  "to": "The account address to send the balance to."
                }
              }
            },
            "title": "VestingRegistry 2 contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060405162001d1038038062001d10833981810160405260e08110156200003757600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200006357600080fd5b9083019060208201858111156200007957600080fd5b82518660208202830111640100000000821117156200009757600080fd5b82525081516020918201928201910280838360005b83811015620000c6578181015183820152602001620000ac565b505050509190910160409081526020830151908301516060840151608090940151919550935090506000620001036001600160e01b036200034216565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038616620001a9576040805162461bcd60e51b815260206004820152601360248201527f534f56206164647265737320696e76616c696400000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03831662000205576040805162461bcd60e51b815260206004820152601760248201527f7374616b696e67206164647265737320696e76616c6964000000000000000000604482015290519081900360640190fd5b6001600160a01b03821662000261576040805162461bcd60e51b815260206004820152601f60248201527f66656553686172696e6750726f7879206164647265737320696e76616c696400604482015290519081900360640190fd5b6001600160a01b038116620002bd576040805162461bcd60e51b815260206004820152601c60248201527f76657374696e674f776e6572206164647265737320696e76616c696400000000604482015290519081900360640190fd5b620002d1876001600160e01b036200034716565b620002e5856001600160e01b03620003c516565b600280546001600160a01b039788166001600160a01b031991821617909155600494909455600580549387169385169390931790925560068054918616918416919091179055600780549190941691161790915550620005039050565b335b90565b6001600160a01b038116620003a3576040805162461bcd60e51b815260206004820152601e60248201527f76657374696e67466163746f7279206164647265737320696e76616c69640000604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60005b8151811015620004585760006001600160a01b0316828281518110620003ea57fe5b60200260200101516001600160a01b031614156200044f576040805162461bcd60e51b815260206004820152601460248201527f43534f56206164647265737320696e76616c6964000000000000000000000000604482015290519081900360640190fd5b600101620003c8565b5080516200046e90600390602084019062000472565b5050565b828054828255906000526020600020908101928215620004ca579160200282015b82811115620004ca57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000493565b50620004d8929150620004dc565b5090565b6200034491905b80821115620004d85780546001600160a01b0319168155600101620004e3565b6117fd80620005136000396000f3fe6080604052600436106101ee5760003560e01c8063a153e7081161010d578063d0e30db0116100a0578063f2fde38b1161006f578063f2fde38b1461072c578063f60826ee1461075f578063f6d6189e1461058f578063f9f92be414610774578063fa09e630146107a7576101ee565b8063d0e30db01461069d578063df8bd747146106a5578063ed01bf29146106de578063f2becf17146106f3576101ee565b8063bd8f732b116100dc578063bd8f732b146105b9578063c680c0b7146105fe578063c810a3e314610637578063cc49ede71461066a576101ee565b8063a153e70814610547578063b33f914a1461057a578063b4ebc0411461058f578063bd7b5908146105a4576101ee565b80636a26b57f1161018557806382999a391161015457806382999a39146104435780638da5cb5b146104f35780638f32d59b1461050857806399336b361461051d576101ee565b80636a26b57f14610387578063704802751461039c57806379a83f5a146103cf57806381d2e4bb14610408576101ee565b8063377220fd116101c1578063377220fd146102e5578063429b62e5146103185780634cf088d91461034b578063661f216114610360576101ee565b80630665a06f146101f357806308dcb3601461023a5780631785f53c1461026b5780632eee57fa1461029e575b600080fd5b3480156101ff57600080fd5b506102386004803603608081101561021657600080fd5b506001600160a01b0381351690602081013590604081013590606001356107da565b005b34801561024657600080fd5b5061024f6108a8565b604080516001600160a01b039092168252519081900360200190f35b34801561027757600080fd5b506102386004803603602081101561028e57600080fd5b50356001600160a01b03166108b7565b3480156102aa57600080fd5b506102d1600480360360208110156102c157600080fd5b50356001600160a01b0316610957565b604080519115158252519081900360200190f35b3480156102f157600080fd5b506102386004803603602081101561030857600080fd5b50356001600160a01b031661096c565b34801561032457600080fd5b506102d16004803603602081101561033b57600080fd5b50356001600160a01b03166109c0565b34801561035757600080fd5b5061024f6109d5565b34801561036c57600080fd5b506103756109e4565b60408051918252519081900360200190f35b34801561039357600080fd5b5061024f6109ea565b3480156103a857600080fd5b50610238600480360360208110156103bf57600080fd5b50356001600160a01b03166109f9565b3480156103db57600080fd5b50610238600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610a9c565b34801561041457600080fd5b506102386004803603604081101561042b57600080fd5b506001600160a01b0381351690602001351515610cc4565b34801561044f57600080fd5b506102386004803603602081101561046657600080fd5b81019060208101813564010000000081111561048157600080fd5b82018360208201111561049357600080fd5b803590602001918460208302840111640100000000831117156104b557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d8c945050505050565b3480156104ff57600080fd5b5061024f610ddd565b34801561051457600080fd5b506102d1610ded565b34801561052957600080fd5b5061024f6004803603602081101561054057600080fd5b5035610e11565b34801561055357600080fd5b506103756004803603602081101561056a57600080fd5b50356001600160a01b0316610e38565b34801561058657600080fd5b50610375610e4a565b34801561059b57600080fd5b50610375610e52565b3480156105b057600080fd5b5061024f610e59565b3480156105c557600080fd5b50610238600480360360808110156105dc57600080fd5b506001600160a01b038135169060208101359060408101359060600135610e68565b34801561060a57600080fd5b506102386004803603604081101561062157600080fd5b506001600160a01b038135169060200135610f36565b34801561064357600080fd5b5061024f6004803603602081101561065a57600080fd5b50356001600160a01b03166110e1565b34801561067657600080fd5b5061024f6004803603602081101561068d57600080fd5b50356001600160a01b031661111c565b61023861113c565b3480156106b157600080fd5b50610238600480360360408110156106c857600080fd5b506001600160a01b03813516906020013561113e565b3480156106ea57600080fd5b5061037561123a565b3480156106ff57600080fd5b5061024f6004803603604081101561071657600080fd5b506001600160a01b03813516906020013561123e565b34801561073857600080fd5b506102386004803603602081101561074f57600080fd5b50356001600160a01b0316611264565b34801561076b57600080fd5b5061024f6112b5565b34801561078057600080fd5b506102d16004803603602081101561079757600080fd5b50356001600160a01b03166112c4565b3480156107b357600080fd5b50610238600480360360208110156107ca57600080fd5b50356001600160a01b03166112d9565b6107e2610ded565b806107fc5750336000908152600c602052604090205460ff165b61083c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600061084985848461135a565b604080516001600160a01b03808416825260208201879052818301869052606082018890529151929350908716917f66a644acab4366c0125120794335c517775a2b44b4315b5d90f0d163dae07fea9181900360800190a25050505050565b6002546001600160a01b031681565b6108bf610ded565b6108ff576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600c6020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b60096020526000908152604090205460ff1681565b610974610ded565b6109b4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6109bd816114a6565b50565b600c6020526000908152604090205460ff1681565b6005546001600160a01b031681565b60045481565b6006546001600160a01b031681565b610a01610ded565b610a41576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600c6020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b610aa4610ded565b80610abe5750336000908152600c602052604090205460ff165b610afe576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216610b59576040805162461bcd60e51b815260206004820152601760248201527f76657374696e67206164647265737320696e76616c6964000000000000000000604482015290519081900360640190fd5b60008111610b9f576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163095ea7b360e01b81526001600160a01b038581166004830152602482018590529151919092169163095ea7b39160448083019260209291908290030181600087803b158015610bf557600080fd5b505af1158015610c09573d6000803e3d6000fd5b505050506040513d6020811015610c1f57600080fd5b505060408051637547c7a360e01b81526004810183905290516001600160a01b03841691637547c7a391602480830192600092919082900301818387803b158015610c6957600080fd5b505af1158015610c7d573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693507fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef92509081900360200190a25050565b610ccc610ded565b610d0c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216610d61576040805162461bcd60e51b81526020600482015260176024820152761858d8dbdd5b9d081859191c995cdcc81a5b9d985b1a59604a1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b610d94610ded565b610dd4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6109bd81611523565b6000546001600160a01b03165b90565b600080546001600160a01b0316610e026115bd565b6001600160a01b031614905090565b60038181548110610e1e57fe5b6000918252602090912001546001600160a01b0316905081565b600b6020526000908152604090205481565b630171240081565b6224ea0081565b6007546001600160a01b031681565b610e70610ded565b80610e8a5750336000908152600c602052604090205460ff165b610eca576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6000610ed78584846115c1565b604080516001600160a01b03808416825260208201879052818301869052606082018890529151929350908716917f6f0b5adf3d5b3548ea2b06e9be6e7f72e125253fd8c948f6ef4024be653c1c179181900360800190a25050505050565b610f3e610ded565b610f7e576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216610fd9576040805162461bcd60e51b815260206004820152601860248201527f7265636569766572206164647265737320696e76616c69640000000000000000604482015290519081900360640190fd5b8061101c576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561107257600080fd5b505af1158015611086573d6000803e3d6000fd5b505050506040513d602081101561109c57600080fd5b50506040805182815290516001600160a01b038416917fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad919081900360200190a25050565b6001600160a01b038116600090815260086020526040812081805b81526020810191909152604001600020546001600160a01b031692915050565b6001600160a01b03811660009081526008602052604081208160016110fc565b565b611146610ded565b611186576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0382166111db576040805162461bcd60e51b81526020600482015260176024820152761858d8dbdd5b9d081859191c995cdcc81a5b9d985b1a59604a1b604482015290519081900360640190fd5b8061121e576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6001600160a01b039091166000908152600b6020526040902055565b4790565b60086020908152600092835260408084209091529082529020546001600160a01b031681565b61126c610ded565b6112ac576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6109bd81611679565b6001546001600160a01b031681565b600a6020526000908152604090205460ff1681565b6112e1610ded565b611321576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015611356573d6000803e3d6000fd5b5050565b6001600160a01b0383811660009081526008602090815260408083206001808552925282205491929091166114785760015460025460055460065460408051637d2fbb8f60e11b81526001600160a01b039485166004820152928416602484015289841660448401819052606484018a90526084840189905291841660a484015260c483019190915251600093929092169163fa5f771e9160e48082019260209290919082900301818787803b15801561141357600080fd5b505af1158015611427573d6000803e3d6000fd5b505050506040513d602081101561143d57600080fd5b50516001600160a01b038781166000908152600860209081526040808320878452909152902080546001600160a01b03191691909216179055505b6001600160a01b03948516600090815260086020908152604080832093835292905220549093169392505050565b6001600160a01b038116611501576040805162461bcd60e51b815260206004820152601e60248201527f76657374696e67466163746f7279206164647265737320696e76616c69640000604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60005b81518110156115a95760006001600160a01b031682828151811061154657fe5b60200260200101516001600160a01b031614156115a1576040805162461bcd60e51b815260206004820152601460248201527310d4d3d5881859191c995cdcc81a5b9d985b1a5960621b604482015290519081900360640190fd5b600101611526565b508051611356906003906020840190611719565b3390565b6001600160a01b03838116600090815260086020908152604080832083805290915281205490918291166114785760015460025460055460065460075460408051630546344f60e41b81526001600160a01b03958616600482015293851660248501528a85166044850152606484018a90526084840189905291841660a4840152831660c483015251600093929092169163546344f09160e48082019260209290919082900301818787803b15801561141357600080fd5b6001600160a01b0381166116be5760405162461bcd60e51b81526004018080602001828103825260268152602001806117a36026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b82805482825590600052602060002090810192821561176e579160200282015b8281111561176e57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611739565b5061177a92915061177e565b5090565b610dea91905b8082111561177a5780546001600160a01b031916815560010161178456fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820c5f0015b52da6a7f51cb7a9a7c84c6798dfba691b154cf9dfeeaa0f2835ec2a864736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1D10 CODESIZE SUB DUP1 PUSH3 0x1D10 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xE0 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xC6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xAC JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP SWAP1 POP PUSH1 0x0 PUSH3 0x103 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x342 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH3 0x1A9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x534F56206164647265737320696E76616C696400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x205 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7374616B696E67206164647265737320696E76616C6964000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x261 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x66656553686172696E6750726F7879206164647265737320696E76616C696400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x2BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E674F776E6572206164647265737320696E76616C696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0x2D1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x347 AND JUMP JUMPDEST PUSH3 0x2E5 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x3C5 AND JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x4 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP4 DUP8 AND SWAP4 DUP6 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP2 DUP7 AND SWAP2 DUP5 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP2 SWAP1 SWAP5 AND SWAP2 AND OR SWAP1 SWAP2 SSTORE POP PUSH3 0x503 SWAP1 POP JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67466163746F7279206164647265737320696E76616C69640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH3 0x458 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x3EA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x44F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43534F56206164647265737320696E76616C6964000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH3 0x3C8 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x46E SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x472 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x4CA JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x4CA JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH3 0x493 JUMP JUMPDEST POP PUSH3 0x4D8 SWAP3 SWAP2 POP PUSH3 0x4DC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x344 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x4D8 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x4E3 JUMP JUMPDEST PUSH2 0x17FD DUP1 PUSH3 0x513 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1EE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA153E708 GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xD0E30DB0 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x72C JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x75F JUMPI DUP1 PUSH4 0xF6D6189E EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0xF9F92BE4 EQ PUSH2 0x774 JUMPI DUP1 PUSH4 0xFA09E630 EQ PUSH2 0x7A7 JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x69D JUMPI DUP1 PUSH4 0xDF8BD747 EQ PUSH2 0x6A5 JUMPI DUP1 PUSH4 0xED01BF29 EQ PUSH2 0x6DE JUMPI DUP1 PUSH4 0xF2BECF17 EQ PUSH2 0x6F3 JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0xBD8F732B GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xBD8F732B EQ PUSH2 0x5B9 JUMPI DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x5FE JUMPI DUP1 PUSH4 0xC810A3E3 EQ PUSH2 0x637 JUMPI DUP1 PUSH4 0xCC49EDE7 EQ PUSH2 0x66A JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0xA153E708 EQ PUSH2 0x547 JUMPI DUP1 PUSH4 0xB33F914A EQ PUSH2 0x57A JUMPI DUP1 PUSH4 0xB4EBC041 EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x5A4 JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F GT PUSH2 0x185 JUMPI DUP1 PUSH4 0x82999A39 GT PUSH2 0x154 JUMPI DUP1 PUSH4 0x82999A39 EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x4F3 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x508 JUMPI DUP1 PUSH4 0x99336B36 EQ PUSH2 0x51D JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x387 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x79A83F5A EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x81D2E4BB EQ PUSH2 0x408 JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0x377220FD GT PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x377220FD EQ PUSH2 0x2E5 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x34B JUMPI DUP1 PUSH4 0x661F2161 EQ PUSH2 0x360 JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0x665A06F EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x2EEE57FA EQ PUSH2 0x29E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x7DA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH2 0x8A8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x957 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x96C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH2 0x9D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x9E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x393 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH2 0x9EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9F9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x42B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xCC4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xD8C SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH2 0xDDD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x514 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D1 PUSH2 0xDED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xE11 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x553 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0xE4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0xE52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH2 0xE59 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xE68 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10E1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x68D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x111C JUMP JUMPDEST PUSH2 0x238 PUSH2 0x113C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x113E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x123A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x716 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x123E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1264 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH2 0x12B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x797 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x7E2 PUSH2 0xDED JUMP JUMPDEST DUP1 PUSH2 0x7FC JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x83C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x849 DUP6 DUP5 DUP5 PUSH2 0x135A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP8 AND SWAP2 PUSH32 0x66A644ACAB4366C0125120794335C517775A2B44B4315B5D90F0D163DAE07FEA SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x8BF PUSH2 0xDED JUMP JUMPDEST PUSH2 0x8FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x974 PUSH2 0xDED JUMP JUMPDEST PUSH2 0x9B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9BD DUP2 PUSH2 0x14A6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xA01 PUSH2 0xDED JUMP JUMPDEST PUSH2 0xA41 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xAA4 PUSH2 0xDED JUMP JUMPDEST DUP1 PUSH2 0xABE JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xAFE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB59 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67206164647265737320696E76616C6964000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xB9F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x7547C7A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x7547C7A3 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP4 POP PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0xCCC PUSH2 0xDED JUMP JUMPDEST PUSH2 0xD0C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xD61 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x1858D8DBDD5B9D081859191C995CDCC81A5B9D985B1A59 PUSH1 0x4A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD94 PUSH2 0xDED JUMP JUMPDEST PUSH2 0xDD4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9BD DUP2 PUSH2 0x1523 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE02 PUSH2 0x15BD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xE1E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH4 0x1712400 DUP2 JUMP JUMPDEST PUSH3 0x24EA00 DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xE70 PUSH2 0xDED JUMP JUMPDEST DUP1 PUSH2 0xE8A JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xECA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xED7 DUP6 DUP5 DUP5 PUSH2 0x15C1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP8 AND SWAP2 PUSH32 0x6F0B5ADF3D5B3548EA2B06E9BE6E7F72E125253FD8C948F6EF4024BE653C1C17 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF3E PUSH2 0xDED JUMP JUMPDEST PUSH2 0xF7E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xFD9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x101C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1072 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1086 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x109C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP1 JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH1 0x1 PUSH2 0x10FC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1146 PUSH2 0xDED JUMP JUMPDEST PUSH2 0x1186 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x11DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x1858D8DBDD5B9D081859191C995CDCC81A5B9D985B1A59 PUSH1 0x4A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x121E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x126C PUSH2 0xDED JUMP JUMPDEST PUSH2 0x12AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9BD DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x12E1 PUSH2 0xDED JUMP JUMPDEST PUSH2 0x1321 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1356 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP6 MSTORE SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP2 SWAP3 SWAP1 SWAP2 AND PUSH2 0x1478 JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7D2FBB8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x24 DUP5 ADD MSTORE DUP10 DUP5 AND PUSH1 0x44 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x64 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP5 ADD DUP10 SWAP1 MSTORE SWAP2 DUP5 AND PUSH1 0xA4 DUP5 ADD MSTORE PUSH1 0xC4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xFA5F771E SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1427 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP4 AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1501 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67466163746F7279206164647265737320696E76616C69640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x15A9 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1546 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x15A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x10D4D3D5881859191C995CDCC81A5B9D985B1A59 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x1526 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x1356 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1719 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 DUP3 SWAP2 AND PUSH2 0x1478 JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x546344F PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x24 DUP6 ADD MSTORE DUP11 DUP6 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP5 ADD DUP10 SWAP1 MSTORE SWAP2 DUP5 AND PUSH1 0xA4 DUP5 ADD MSTORE DUP4 AND PUSH1 0xC4 DUP4 ADD MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x546344F0 SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x16BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17A3 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x176E JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x176E JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1739 JUMP JUMPDEST POP PUSH2 0x177A SWAP3 SWAP2 POP PUSH2 0x177E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0xDEA SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x177A JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1784 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820C5F0015B52DA6A PUSH32 0x51CB7A9A7C84C6798DFBA691B154CF9DFEEAA0F2835EC2A864736F6C63430005 GT STOP ORIGIN ",
              "sourceMap": "434:13099:80:-;;;3569:666;8:9:-1;5:2;;;30:1;27;20:12;5:2;3569:666:80;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3569:666:80;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;3569:666:80;;421:4:-1;412:14;;;;3569:666:80;;;;;412:14:-1;3569:666:80;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;-1:-1;;;;3569:666:80;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3569:666:80;-1:-1:-1;3569:666:80;-1:-1:-1;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;-1:-1:-1;;;;;;3773:18:80;;3765:50;;;;;-1:-1:-1;;;3765:50:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3827:22:80;;3819:58;;;;;-1:-1:-1;;;3819:58:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3889:30:80;;3881:74;;;;;-1:-1:-1;;;3881:74:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3967:27:80;;3959:68;;;;;-1:-1:-1;;;3959:68:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;4032:35;4051:15;-1:-1:-1;;;;;4032:18:80;:35;:::i;:::-;4071:27;4086:11;-1:-1:-1;;;;;4071:14:80;:27;:::i;:::-;4103:3;:10;;-1:-1:-1;;;;;4103:10:80;;;-1:-1:-1;;;;;;4103:10:80;;;;;;;4117:9;:22;;;;4143:7;:18;;;;;;;;;;;;;;;4165:15;:34;;;;;;;;;;;;;;4203:12;:28;;;;;;;;;;;;-1:-1:-1;434:13099:80;;-1:-1:-1;434:13099:80;780:87:137;853:10;780:87;;:::o;6607:195:80:-;-1:-1:-1;;;;;6681:29:80;;6673:72;;;;;-1:-1:-1;;;6673:72:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;6749:14;:49;;-1:-1:-1;;;;;;6749:49:80;-1:-1:-1;;;;;6749:49:80;;;;;;;;;;6607:195::o;7173:218::-;7245:9;7240:120;7264:11;:18;7260:1;:22;7240:120;;;7328:1;-1:-1:-1;;;;;7302:28:80;:11;7314:1;7302:14;;;;;;;;;;;;;;-1:-1:-1;;;;;7302:28:80;;;7294:61;;;;;-1:-1:-1;;;7294:61:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;7284:3;;7240:120;;;-1:-1:-1;7363:24:80;;;;:10;;:24;;;;;:::i;:::-;;7173:218;:::o;434:13099::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;434:13099:80;-1:-1:-1;;;;;434:13099:80;;;;;;;;;;;-1:-1:-1;434:13099:80;;;;;;;-1:-1:-1;434:13099:80;;;-1:-1:-1;434:13099:80;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;434:13099:80;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106101ee5760003560e01c8063a153e7081161010d578063d0e30db0116100a0578063f2fde38b1161006f578063f2fde38b1461072c578063f60826ee1461075f578063f6d6189e1461058f578063f9f92be414610774578063fa09e630146107a7576101ee565b8063d0e30db01461069d578063df8bd747146106a5578063ed01bf29146106de578063f2becf17146106f3576101ee565b8063bd8f732b116100dc578063bd8f732b146105b9578063c680c0b7146105fe578063c810a3e314610637578063cc49ede71461066a576101ee565b8063a153e70814610547578063b33f914a1461057a578063b4ebc0411461058f578063bd7b5908146105a4576101ee565b80636a26b57f1161018557806382999a391161015457806382999a39146104435780638da5cb5b146104f35780638f32d59b1461050857806399336b361461051d576101ee565b80636a26b57f14610387578063704802751461039c57806379a83f5a146103cf57806381d2e4bb14610408576101ee565b8063377220fd116101c1578063377220fd146102e5578063429b62e5146103185780634cf088d91461034b578063661f216114610360576101ee565b80630665a06f146101f357806308dcb3601461023a5780631785f53c1461026b5780632eee57fa1461029e575b600080fd5b3480156101ff57600080fd5b506102386004803603608081101561021657600080fd5b506001600160a01b0381351690602081013590604081013590606001356107da565b005b34801561024657600080fd5b5061024f6108a8565b604080516001600160a01b039092168252519081900360200190f35b34801561027757600080fd5b506102386004803603602081101561028e57600080fd5b50356001600160a01b03166108b7565b3480156102aa57600080fd5b506102d1600480360360208110156102c157600080fd5b50356001600160a01b0316610957565b604080519115158252519081900360200190f35b3480156102f157600080fd5b506102386004803603602081101561030857600080fd5b50356001600160a01b031661096c565b34801561032457600080fd5b506102d16004803603602081101561033b57600080fd5b50356001600160a01b03166109c0565b34801561035757600080fd5b5061024f6109d5565b34801561036c57600080fd5b506103756109e4565b60408051918252519081900360200190f35b34801561039357600080fd5b5061024f6109ea565b3480156103a857600080fd5b50610238600480360360208110156103bf57600080fd5b50356001600160a01b03166109f9565b3480156103db57600080fd5b50610238600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610a9c565b34801561041457600080fd5b506102386004803603604081101561042b57600080fd5b506001600160a01b0381351690602001351515610cc4565b34801561044f57600080fd5b506102386004803603602081101561046657600080fd5b81019060208101813564010000000081111561048157600080fd5b82018360208201111561049357600080fd5b803590602001918460208302840111640100000000831117156104b557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d8c945050505050565b3480156104ff57600080fd5b5061024f610ddd565b34801561051457600080fd5b506102d1610ded565b34801561052957600080fd5b5061024f6004803603602081101561054057600080fd5b5035610e11565b34801561055357600080fd5b506103756004803603602081101561056a57600080fd5b50356001600160a01b0316610e38565b34801561058657600080fd5b50610375610e4a565b34801561059b57600080fd5b50610375610e52565b3480156105b057600080fd5b5061024f610e59565b3480156105c557600080fd5b50610238600480360360808110156105dc57600080fd5b506001600160a01b038135169060208101359060408101359060600135610e68565b34801561060a57600080fd5b506102386004803603604081101561062157600080fd5b506001600160a01b038135169060200135610f36565b34801561064357600080fd5b5061024f6004803603602081101561065a57600080fd5b50356001600160a01b03166110e1565b34801561067657600080fd5b5061024f6004803603602081101561068d57600080fd5b50356001600160a01b031661111c565b61023861113c565b3480156106b157600080fd5b50610238600480360360408110156106c857600080fd5b506001600160a01b03813516906020013561113e565b3480156106ea57600080fd5b5061037561123a565b3480156106ff57600080fd5b5061024f6004803603604081101561071657600080fd5b506001600160a01b03813516906020013561123e565b34801561073857600080fd5b506102386004803603602081101561074f57600080fd5b50356001600160a01b0316611264565b34801561076b57600080fd5b5061024f6112b5565b34801561078057600080fd5b506102d16004803603602081101561079757600080fd5b50356001600160a01b03166112c4565b3480156107b357600080fd5b50610238600480360360208110156107ca57600080fd5b50356001600160a01b03166112d9565b6107e2610ded565b806107fc5750336000908152600c602052604090205460ff165b61083c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600061084985848461135a565b604080516001600160a01b03808416825260208201879052818301869052606082018890529151929350908716917f66a644acab4366c0125120794335c517775a2b44b4315b5d90f0d163dae07fea9181900360800190a25050505050565b6002546001600160a01b031681565b6108bf610ded565b6108ff576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600c6020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b60096020526000908152604090205460ff1681565b610974610ded565b6109b4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6109bd816114a6565b50565b600c6020526000908152604090205460ff1681565b6005546001600160a01b031681565b60045481565b6006546001600160a01b031681565b610a01610ded565b610a41576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600c6020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b610aa4610ded565b80610abe5750336000908152600c602052604090205460ff165b610afe576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216610b59576040805162461bcd60e51b815260206004820152601760248201527f76657374696e67206164647265737320696e76616c6964000000000000000000604482015290519081900360640190fd5b60008111610b9f576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163095ea7b360e01b81526001600160a01b038581166004830152602482018590529151919092169163095ea7b39160448083019260209291908290030181600087803b158015610bf557600080fd5b505af1158015610c09573d6000803e3d6000fd5b505050506040513d6020811015610c1f57600080fd5b505060408051637547c7a360e01b81526004810183905290516001600160a01b03841691637547c7a391602480830192600092919082900301818387803b158015610c6957600080fd5b505af1158015610c7d573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693507fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef92509081900360200190a25050565b610ccc610ded565b610d0c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216610d61576040805162461bcd60e51b81526020600482015260176024820152761858d8dbdd5b9d081859191c995cdcc81a5b9d985b1a59604a1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b610d94610ded565b610dd4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6109bd81611523565b6000546001600160a01b03165b90565b600080546001600160a01b0316610e026115bd565b6001600160a01b031614905090565b60038181548110610e1e57fe5b6000918252602090912001546001600160a01b0316905081565b600b6020526000908152604090205481565b630171240081565b6224ea0081565b6007546001600160a01b031681565b610e70610ded565b80610e8a5750336000908152600c602052604090205460ff165b610eca576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6000610ed78584846115c1565b604080516001600160a01b03808416825260208201879052818301869052606082018890529151929350908716917f6f0b5adf3d5b3548ea2b06e9be6e7f72e125253fd8c948f6ef4024be653c1c179181900360800190a25050505050565b610f3e610ded565b610f7e576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216610fd9576040805162461bcd60e51b815260206004820152601860248201527f7265636569766572206164647265737320696e76616c69640000000000000000604482015290519081900360640190fd5b8061101c576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561107257600080fd5b505af1158015611086573d6000803e3d6000fd5b505050506040513d602081101561109c57600080fd5b50506040805182815290516001600160a01b038416917fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad919081900360200190a25050565b6001600160a01b038116600090815260086020526040812081805b81526020810191909152604001600020546001600160a01b031692915050565b6001600160a01b03811660009081526008602052604081208160016110fc565b565b611146610ded565b611186576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0382166111db576040805162461bcd60e51b81526020600482015260176024820152761858d8dbdd5b9d081859191c995cdcc81a5b9d985b1a59604a1b604482015290519081900360640190fd5b8061121e576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6001600160a01b039091166000908152600b6020526040902055565b4790565b60086020908152600092835260408084209091529082529020546001600160a01b031681565b61126c610ded565b6112ac576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6109bd81611679565b6001546001600160a01b031681565b600a6020526000908152604090205460ff1681565b6112e1610ded565b611321576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015611356573d6000803e3d6000fd5b5050565b6001600160a01b0383811660009081526008602090815260408083206001808552925282205491929091166114785760015460025460055460065460408051637d2fbb8f60e11b81526001600160a01b039485166004820152928416602484015289841660448401819052606484018a90526084840189905291841660a484015260c483019190915251600093929092169163fa5f771e9160e48082019260209290919082900301818787803b15801561141357600080fd5b505af1158015611427573d6000803e3d6000fd5b505050506040513d602081101561143d57600080fd5b50516001600160a01b038781166000908152600860209081526040808320878452909152902080546001600160a01b03191691909216179055505b6001600160a01b03948516600090815260086020908152604080832093835292905220549093169392505050565b6001600160a01b038116611501576040805162461bcd60e51b815260206004820152601e60248201527f76657374696e67466163746f7279206164647265737320696e76616c69640000604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60005b81518110156115a95760006001600160a01b031682828151811061154657fe5b60200260200101516001600160a01b031614156115a1576040805162461bcd60e51b815260206004820152601460248201527310d4d3d5881859191c995cdcc81a5b9d985b1a5960621b604482015290519081900360640190fd5b600101611526565b508051611356906003906020840190611719565b3390565b6001600160a01b03838116600090815260086020908152604080832083805290915281205490918291166114785760015460025460055460065460075460408051630546344f60e41b81526001600160a01b03958616600482015293851660248501528a85166044850152606484018a90526084840189905291841660a4840152831660c483015251600093929092169163546344f09160e48082019260209290919082900301818787803b15801561141357600080fd5b6001600160a01b0381166116be5760405162461bcd60e51b81526004018080602001828103825260268152602001806117a36026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b82805482825590600052602060002090810192821561176e579160200282015b8281111561176e57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611739565b5061177a92915061177e565b5090565b610dea91905b8082111561177a5780546001600160a01b031916815560010161178456fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820c5f0015b52da6a7f51cb7a9a7c84c6798dfba691b154cf9dfeeaa0f2835ec2a864736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1EE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA153E708 GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xD0E30DB0 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x72C JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x75F JUMPI DUP1 PUSH4 0xF6D6189E EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0xF9F92BE4 EQ PUSH2 0x774 JUMPI DUP1 PUSH4 0xFA09E630 EQ PUSH2 0x7A7 JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x69D JUMPI DUP1 PUSH4 0xDF8BD747 EQ PUSH2 0x6A5 JUMPI DUP1 PUSH4 0xED01BF29 EQ PUSH2 0x6DE JUMPI DUP1 PUSH4 0xF2BECF17 EQ PUSH2 0x6F3 JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0xBD8F732B GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xBD8F732B EQ PUSH2 0x5B9 JUMPI DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x5FE JUMPI DUP1 PUSH4 0xC810A3E3 EQ PUSH2 0x637 JUMPI DUP1 PUSH4 0xCC49EDE7 EQ PUSH2 0x66A JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0xA153E708 EQ PUSH2 0x547 JUMPI DUP1 PUSH4 0xB33F914A EQ PUSH2 0x57A JUMPI DUP1 PUSH4 0xB4EBC041 EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x5A4 JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F GT PUSH2 0x185 JUMPI DUP1 PUSH4 0x82999A39 GT PUSH2 0x154 JUMPI DUP1 PUSH4 0x82999A39 EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x4F3 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x508 JUMPI DUP1 PUSH4 0x99336B36 EQ PUSH2 0x51D JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x387 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x79A83F5A EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x81D2E4BB EQ PUSH2 0x408 JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0x377220FD GT PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x377220FD EQ PUSH2 0x2E5 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x34B JUMPI DUP1 PUSH4 0x661F2161 EQ PUSH2 0x360 JUMPI PUSH2 0x1EE JUMP JUMPDEST DUP1 PUSH4 0x665A06F EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x2EEE57FA EQ PUSH2 0x29E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x7DA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH2 0x8A8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x957 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x96C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH2 0x9D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x9E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x393 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH2 0x9EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9F9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x42B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xCC4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xD8C SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH2 0xDDD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x514 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D1 PUSH2 0xDED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xE11 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x553 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x56A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0xE4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0xE52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH2 0xE59 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xE68 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10E1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x68D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x111C JUMP JUMPDEST PUSH2 0x238 PUSH2 0x113C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x113E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x123A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x716 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x123E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1264 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24F PUSH2 0x12B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x797 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x238 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x7E2 PUSH2 0xDED JUMP JUMPDEST DUP1 PUSH2 0x7FC JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x83C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x849 DUP6 DUP5 DUP5 PUSH2 0x135A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP8 AND SWAP2 PUSH32 0x66A644ACAB4366C0125120794335C517775A2B44B4315B5D90F0D163DAE07FEA SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x8BF PUSH2 0xDED JUMP JUMPDEST PUSH2 0x8FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x974 PUSH2 0xDED JUMP JUMPDEST PUSH2 0x9B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9BD DUP2 PUSH2 0x14A6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xA01 PUSH2 0xDED JUMP JUMPDEST PUSH2 0xA41 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xAA4 PUSH2 0xDED JUMP JUMPDEST DUP1 PUSH2 0xABE JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xAFE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB59 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67206164647265737320696E76616C6964000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xB9F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x7547C7A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x7547C7A3 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC7D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP4 POP PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0xCCC PUSH2 0xDED JUMP JUMPDEST PUSH2 0xD0C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xD61 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x1858D8DBDD5B9D081859191C995CDCC81A5B9D985B1A59 PUSH1 0x4A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD94 PUSH2 0xDED JUMP JUMPDEST PUSH2 0xDD4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9BD DUP2 PUSH2 0x1523 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE02 PUSH2 0x15BD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xE1E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH4 0x1712400 DUP2 JUMP JUMPDEST PUSH3 0x24EA00 DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xE70 PUSH2 0xDED JUMP JUMPDEST DUP1 PUSH2 0xE8A JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xECA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xED7 DUP6 DUP5 DUP5 PUSH2 0x15C1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP8 AND SWAP2 PUSH32 0x6F0B5ADF3D5B3548EA2B06E9BE6E7F72E125253FD8C948F6EF4024BE653C1C17 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF3E PUSH2 0xDED JUMP JUMPDEST PUSH2 0xF7E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xFD9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x101C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1072 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1086 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x109C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP1 JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH1 0x1 PUSH2 0x10FC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1146 PUSH2 0xDED JUMP JUMPDEST PUSH2 0x1186 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x11DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x1858D8DBDD5B9D081859191C995CDCC81A5B9D985B1A59 PUSH1 0x4A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x121E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x126C PUSH2 0xDED JUMP JUMPDEST PUSH2 0x12AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9BD DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x12E1 PUSH2 0xDED JUMP JUMPDEST PUSH2 0x1321 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1356 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP6 MSTORE SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP2 SWAP3 SWAP1 SWAP2 AND PUSH2 0x1478 JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7D2FBB8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x24 DUP5 ADD MSTORE DUP10 DUP5 AND PUSH1 0x44 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x64 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP5 ADD DUP10 SWAP1 MSTORE SWAP2 DUP5 AND PUSH1 0xA4 DUP5 ADD MSTORE PUSH1 0xC4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xFA5F771E SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1427 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x143D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP4 AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1501 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67466163746F7279206164647265737320696E76616C69640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x15A9 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1546 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x15A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x10D4D3D5881859191C995CDCC81A5B9D985B1A59 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x1526 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x1356 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1719 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 DUP3 SWAP2 AND PUSH2 0x1478 JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x546344F PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x24 DUP6 ADD MSTORE DUP11 DUP6 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP5 ADD DUP10 SWAP1 MSTORE SWAP2 DUP5 AND PUSH1 0xA4 DUP5 ADD MSTORE DUP4 AND PUSH1 0xC4 DUP4 ADD MSTORE MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x546344F0 SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x16BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17A3 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x176E JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x176E JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1739 JUMP JUMPDEST POP PUSH2 0x177A SWAP3 SWAP2 POP PUSH2 0x177E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0xDEA SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x177A JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1784 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820C5F0015B52DA6A PUSH32 0x51CB7A9A7C84C6798DFBA691B154CF9DFEEAA0F2835EC2A864736F6C63430005 GT STOP ORIGIN ",
              "sourceMap": "434:13099:80:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9773:279;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9773:279:80;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;9773:279:80;;;;;;;;;;;;;;;;;;:::i;:::-;;831:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;831:18:80;;;:::i;:::-;;;;-1:-1:-1;;;;;831:18:80;;;;;;;;;;;;;;4760:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4760:113:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4760:113:80;-1:-1:-1;;;;;4760:113:80;;:::i;1663:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1663:45:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1663:45:80;-1:-1:-1;;;;;1663:45:80;;:::i;:::-;;;;;;;;;;;;;;;;;;6345:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6345:112:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6345:112:80;-1:-1:-1;;;;;6345:112:80;;:::i;2000:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2000:38:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2000:38:80;-1:-1:-1;;;;;2000:38:80;;:::i;994:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;994:22:80;;;:::i;923:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;923:24:80;;;:::i;:::-;;;;;;;;;;;;;;;;1052:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1052:30:80;;;:::i;4531:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4531:107:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4531:107:80;-1:-1:-1;;;;;4531:107:80;;:::i;10789:312::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10789:312:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10789:312:80;;;;;;;;:::i;7570:185::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7570:185:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7570:185:80;;;;;;;;;;:::i;6923:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6923:105:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6923:105:80;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;6923:105:80;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6923:105:80;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6923:105:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6923:105:80;;-1:-1:-1;6923:105:80;;-1:-1:-1;;;;;6923:105:80:i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;1134:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;892:27:80:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;892:27:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;892:27:80;;:::i;1897:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:47:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1897:47:80;-1:-1:-1;;;;;1897:47:80;;:::i;686:63::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;686:63:80;;;:::i;628:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;628:55:80;;;:::i;1153:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1153:27:80;;;:::i;10323:291::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10323:291:80;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;10323:291:80;;;;;;;;;;;;;;;;;;:::i;8436:273::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8436:273:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8436:273:80;;;;;;;;:::i;11628:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11628:153:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11628:153:80;-1:-1:-1;;;;;11628:153:80;;:::i;11287:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11287:145:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11287:145:80;-1:-1:-1;;;;;11287:145:80;;:::i;5447:36::-;;;:::i;7931:223::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7931:223:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7931:223:80;;;;;;;;:::i;5259:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5259:117:80;;;:::i;1325:71::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1325:71:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1325:71:80;;;;;;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1351:98:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;753:37:80:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;753:37:80;;;:::i;1792:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1792:41:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1792:41:80;-1:-1:-1;;;;;1792:41:80;;:::i;5609:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5609:100:80;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5609:100:80;-1:-1:-1;;;;;5609:100:80;;:::i;9773:279::-;4358:9;:7;:9::i;:::-;:31;;;-1:-1:-1;4378:10:80;4371:18;;;;:6;:18;;;;;;;;4358:31;4350:56;;;;;-1:-1:-1;;;4350:56:80;;;;;;;;;;;;-1:-1:-1;;;4350:56:80;;;;;;;;;;;;;;;9906:15;9924:51;9944:11;9957:6;9965:9;9924:19;:51::i;:::-;9984:64;;;-1:-1:-1;;;;;9984:64:80;;;;;;;;;;;;;;;;;;;;;;;;;9906:69;;-1:-1:-1;9984:64:80;;;;;;;;;;;;;4410:1;9773:279;;;;:::o;831:18::-;;;-1:-1:-1;;;;;831:18:80;;:::o;4760:113::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;4818:14:80;;4835:5;4818:14;;;:6;:14;;;;;;;;;:22;;-1:-1:-1;;4818:22:80;;;4849:20;;;;;;;;;;;;;;;;;4760:113;:::o;1663:45::-;;;;;;;;;;;;;;;:::o;6345:112::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;6418:35:80;6437:15;6418:18;:35::i;:::-;6345:112;:::o;2000:38::-;;;;;;;;;;;;;;;:::o;994:22::-;;;-1:-1:-1;;;;;994:22:80;;:::o;923:24::-;;;;:::o;1052:30::-;;;-1:-1:-1;;;;;1052:30:80;;:::o;4531:107::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;4586:14:80;;;;;;:6;:14;;;;;;;;;:21;;-1:-1:-1;;4586:21:80;4603:4;4586:21;;;4616:18;;;;;;;;;;;;;;;;;4531:107;:::o;10789:312::-;4358:9;:7;:9::i;:::-;:31;;;-1:-1:-1;4378:10:80;4371:18;;;;:6;:18;;;;;;;;4358:31;4350:56;;;;;-1:-1:-1;;;4350:56:80;;;;;;;;;;;;-1:-1:-1;;;4350:56:80;;;;;;;;;;;;;;;-1:-1:-1;;;;;10879:22:80;;10871:58;;;;;-1:-1:-1;;;10871:58:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;10951:1;10941:7;:11;10933:38;;;;;-1:-1:-1;;;10933:38:80;;;;;;;;;;;;-1:-1:-1;;;10933:38:80;;;;;;;;;;;;;;;10983:3;;10976:38;;;-1:-1:-1;;;10976:38:80;;-1:-1:-1;;;;;10976:38:80;;;;;;;;;;;;;;;10983:3;;;;;10976:19;;:38;;;;;;;;;;;;;;10983:3;;10976:38;;;5:2:-1;;;;30:1;27;20:12;5:2;10976:38:80;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10976:38:80;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;11018:39:80;;;-1:-1:-1;;;11018:39:80;;;;;;;;;;-1:-1:-1;;;;;11018:30:80;;;;;:39;;;;;-1:-1:-1;;11018:39:80;;;;;;;-1:-1:-1;11018:30:80;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;11018:39:80;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;11066:31:80;;;;;;;;-1:-1:-1;;;;;11066:31:80;;;-1:-1:-1;11066:31:80;;-1:-1:-1;11066:31:80;;;;;;;;10789:312;;:::o;7570:185::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;7662:22:80;;7654:58;;;;;-1:-1:-1;;;7654:58:80;;;;;;;;;;;;-1:-1:-1;;;7654:58:80;;;;;;;;;;;;;;;-1:-1:-1;;;;;7717:19:80;;;;;;;;:9;:19;;;;;:34;;-1:-1:-1;;7717:34:80;;;;;;;;;;7570:185::o;6923:105::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;6997:27:80;7012:11;6997:14;:27::i;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;892:27:80:-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;892:27:80;;-1:-1:-1;892:27:80;:::o;1897:47::-;;;;;;;;;;;;;:::o;686:63::-;734:15;686:63;:::o;628:55::-;617:7;628:55;:::o;1153:27::-;;;-1:-1:-1;;;;;1153:27:80;;:::o;10323:291::-;4358:9;:7;:9::i;:::-;:31;;;-1:-1:-1;4378:10:80;4371:18;;;;:6;:18;;;;;;;;4358:31;4350:56;;;;;-1:-1:-1;;;4350:56:80;;;;;;;;;;;;-1:-1:-1;;;4350:56:80;;;;;;;;;;;;;;;10460:15;10478:55;10502:11;10515:6;10523:9;10478:23;:55::i;:::-;10542:68;;;-1:-1:-1;;;;;10542:68:80;;;;;;;;;;;;;;;;;;;;;;;;;10460:73;;-1:-1:-1;10542:68:80;;;;;;;;;;;;;4410:1;10323:291;;;;:::o;8436:273::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;8522:23:80;;8514:60;;;;;-1:-1:-1;;;8514:60:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;8586:12;8578:39;;;;;-1:-1:-1;;;8578:39:80;;;;;;;;;;;;-1:-1:-1;;;8578:39:80;;;;;;;;;;;;;;;8629:3;;8622:40;;;-1:-1:-1;;;8622:40:80;;-1:-1:-1;;;;;8622:40:80;;;;;;;;;;;;;;;8629:3;;;;;8622:20;;:40;;;;;;;;;;;;;;8629:3;;8622:40;;;5:2:-1;;;;30:1;27;20:12;5:2;8622:40:80;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8622:40:80;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;8671:34:80;;;;;;;;-1:-1:-1;;;;;8671:34:80;;;;;;;;;8622:40;8671:34;;;8436:273;;:::o;11628:153::-;-1:-1:-1;;;;;11714:29:80;;11694:7;11714:29;;;:16;:29;;;;;11694:7;;11744:32;11714:63;;;;;;;;;;;-1:-1:-1;11714:63:80;;-1:-1:-1;;;;;11714:63:80;;11628:153;-1:-1:-1;;11628:153:80:o;11287:145::-;-1:-1:-1;;;;;11369:29:80;;11349:7;11369:29;;;:16;:29;;;;;11349:7;11407:19;11399:28;;5447:36;:::o;7931:223::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;8020:22:80;;8012:58;;;;;-1:-1:-1;;;8012:58:80;;;;;;;;;;;;-1:-1:-1;;;8012:58:80;;;;;;;;;;;;;;;8082:12;8074:39;;;;;-1:-1:-1;;;8074:39:80;;;;;;;;;;;;-1:-1:-1;;;8074:39:80;;;;;;;;;;;;;;;-1:-1:-1;;;;;8118:22:80;;;;;;;:12;:22;;;;;:32;7931:223::o;5259:117::-;5332:21;5259:117;:::o;1325:71::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1325:71:80;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;753:37:80:-;;;-1:-1:-1;;;;;753:37:80;;:::o;1792:41::-;;;;;;;;;;;;;;;:::o;5609:100::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;5671::80;;-1:-1:-1;;;;;5671:11:80;;;5683:21;5671:34;;;;;;;;;5683:21;5671:11;:34;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5671:34:80;5609:100;:::o;12145:537::-;-1:-1:-1;;;;;12322:29:80;;;12257:7;12322:29;;;:16;:29;;;;;;;;12294:19;12322:36;;;;;;;;12257:7;;12294:19;;12322:36;12318:314;;12472:14;;12501:3;;12506:7;;12547:15;;12472:104;;;-1:-1:-1;;;12472:104:80;;-1:-1:-1;;;;;12501:3:80;;;12472:104;;;;12506:7;;;12472:104;;;;;;;;;;;;;;;;;;;;;;;;;12547:15;;;12472:104;;;;;;;;;;;;12454:15;;12472:14;;;;;:28;;:104;;;;;;;;;;;;;;;12454:15;12472:14;:104;;;5:2:-1;;;;30:1;27;20:12;5:2;12472:104:80;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12472:104:80;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12472:104:80;-1:-1:-1;;;;;12581:29:80;;;;;;;:16;12472:104;12581:29;;;;;;;:36;;;;;;;;:46;;-1:-1:-1;;;;;;12581:46:80;;;;;;;;-1:-1:-1;12318:314:80;-1:-1:-1;;;;;12642:29:80;;;;;;;:16;:29;;;;;;;;:36;;;;;;;;;;;;12145:537;-1:-1:-1;;;12145:537:80:o;6607:195::-;-1:-1:-1;;;;;6681:29:80;;6673:72;;;;;-1:-1:-1;;;6673:72:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;6749:14;:49;;-1:-1:-1;;;;;;6749:49:80;-1:-1:-1;;;;;6749:49:80;;;;;;;;;;6607:195::o;7173:218::-;7245:9;7240:120;7264:11;:18;7260:1;:22;7240:120;;;7328:1;-1:-1:-1;;;;;7302:28:80;:11;7314:1;7302:14;;;;;;;;;;;;;;-1:-1:-1;;;;;7302:28:80;;;7294:61;;;;;-1:-1:-1;;;7294:61:80;;;;;;;;;;;;-1:-1:-1;;;7294:61:80;;;;;;;;;;;;;;;7284:3;;7240:120;;;-1:-1:-1;7363:24:80;;;;:10;;:24;;;;;:::i;780:87:137:-;853:10;780:87;:::o;13056:475:80:-;-1:-1:-1;;;;;13241:29:80;;;13172:7;13241:29;;;:16;:29;;;;;;;;:36;;;;;;;;;13172:7;;;;13241:36;13237:244;;13316:14;;13349:3;;13354:7;;13395:15;;13412:12;;13316:109;;;-1:-1:-1;;;13316:109:80;;-1:-1:-1;;;;;13349:3:80;;;13316:109;;;;13354:7;;;13316:109;;;;;;;;;;;;;;;;;;;;;;;13395:15;;;13316:109;;;;13412:12;;13316:109;;;;;13298:15;;13316:14;;;;;:32;;:109;;;;;;;;;;;;;;;13298:15;13316:14;:109;;;5:2:-1;;;;30:1;27;20:12;1538:204:142;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;434:13099:80:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;434:13099:80;-1:-1:-1;;;;;434:13099:80;;;;;;;;;;;-1:-1:-1;434:13099:80;;;;;;;-1:-1:-1;434:13099:80;;;-1:-1:-1;434:13099:80;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;434:13099:80;;;;;;"
            },
            "methodIdentifiers": {
              "CSOV_VESTING_CLIFF()": "b4ebc041",
              "CSOV_VESTING_DURATION()": "b33f914a",
              "CSOVtokens(uint256)": "99336b36",
              "FOUR_WEEKS()": "f6d6189e",
              "SOV()": "08dcb360",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "blacklist(address)": "f9f92be4",
              "budget()": "ed01bf29",
              "createTeamVesting(address,uint256,uint256,uint256)": "bd8f732b",
              "createVesting(address,uint256,uint256,uint256)": "0665a06f",
              "deposit()": "d0e30db0",
              "feeSharingProxy()": "6a26b57f",
              "getTeamVesting(address)": "c810a3e3",
              "getVesting(address)": "cc49ede7",
              "isOwner()": "8f32d59b",
              "lockedAmount(address)": "a153e708",
              "owner()": "8da5cb5b",
              "priceSats()": "661f2161",
              "processedList(address)": "2eee57fa",
              "removeAdmin(address)": "1785f53c",
              "setBlacklistFlag(address,bool)": "81d2e4bb",
              "setCSOVtokens(address[])": "82999a39",
              "setLockedAmount(address,uint256)": "df8bd747",
              "setVestingFactory(address)": "377220fd",
              "stakeTokens(address,uint256)": "79a83f5a",
              "staking()": "4cf088d9",
              "transferOwnership(address)": "f2fde38b",
              "transferSOV(address,uint256)": "c680c0b7",
              "vestingContracts(address,uint256)": "f2becf17",
              "vestingFactory()": "f60826ee",
              "vestingOwner()": "bd7b5908",
              "withdrawAll(address)": "fa09e630"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "budget()": {
                "notice": "Get contract balance."
              },
              "constructor": "Contract deployment settings.",
              "createTeamVesting(address,uint256,uint256,uint256)": {
                "notice": "Create Team Vesting contract."
              },
              "createVesting(address,uint256,uint256,uint256)": {
                "notice": "Create Vesting contract."
              },
              "deposit()": {
                "notice": "Deposit function to receiving value (rBTC)."
              },
              "getTeamVesting(address)": {
                "notice": "Query the team vesting contract for an account."
              },
              "getVesting(address)": {
                "notice": "Query the vesting contract for an account."
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "setBlacklistFlag(address,bool)": {
                "notice": "Set blacklist flag (true/false)."
              },
              "setCSOVtokens(address[])": {
                "notice": "Sets cSOV tokens array. High level endpoint."
              },
              "setLockedAmount(address,uint256)": {
                "notice": "Set amount to be subtracted from user token balance."
              },
              "setVestingFactory(address)": {
                "notice": "Sets vesting factory address. High level endpoint."
              },
              "stakeTokens(address,uint256)": {
                "notice": "Stake tokens according to the vesting schedule"
              },
              "transferSOV(address,uint256)": {
                "notice": "Transfer SOV tokens to given address."
              },
              "withdrawAll(address)": {
                "notice": "Send all contract balance to an account."
              }
            },
            "notice": "One time contract needed to distribute tokens to origin sales investors."
          }
        }
      },
      "contracts/governance/Vesting/VestingRegistry3.sol": {
        "VestingRegistry3": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingFactory",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_staking",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_feeSharingProxy",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_vestingOwner",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "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": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "SOVTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TeamVestingCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VestingCreated",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "createTeamVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "createVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharingProxy",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                }
              ],
              "name": "getTeamVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                }
              ],
              "name": "getVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingFactory",
                  "type": "address"
                }
              ],
              "name": "setVestingFactory",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vesting",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "stakeTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "transferSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestingContracts",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingFactory",
              "outputs": [
                {
                  "internalType": "contract IVestingFactory",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "createTeamVesting(address,uint256,uint256,uint256)": {
                "params": {
                  "_amount": "the amount to be staked",
                  "_cliff": "the cliff in seconds",
                  "_duration": "the total duration in seconds",
                  "_tokenOwner": "the owner of the tokens"
                }
              },
              "createVesting(address,uint256,uint256,uint256)": {
                "params": {
                  "_amount": "the amount to be staked",
                  "_cliff": "the cliff in seconds",
                  "_duration": "the total duration in seconds",
                  "_tokenOwner": "the owner of the tokens"
                }
              },
              "getTeamVesting(address)": {
                "params": {
                  "_tokenOwner": "the owner of the tokens"
                }
              },
              "getVesting(address)": {
                "params": {
                  "_tokenOwner": "the owner of the tokens"
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setVestingFactory(address)": {
                "params": {
                  "_vestingFactory": "the address of vesting factory contract"
                }
              },
              "stakeTokens(address,uint256)": {
                "params": {
                  "_amount": "the amount of tokens to stake",
                  "_vesting": "the address of Vesting contract"
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "transferSOV(address,uint256)": {
                "params": {
                  "_amount": "the amount to be transferred",
                  "_receiver": "the address of the SOV receiver"
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060405161128f38038061128f833981810160405260a081101561003357600080fd5b5080516020820151604083015160608401516080909401519293919290919060006100656001600160e01b0361028116565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03841661010a576040805162461bcd60e51b815260206004820152601360248201527f534f56206164647265737320696e76616c696400000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316610165576040805162461bcd60e51b815260206004820152601760248201527f7374616b696e67206164647265737320696e76616c6964000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166101c0576040805162461bcd60e51b815260206004820152601f60248201527f66656553686172696e6750726f7879206164647265737320696e76616c696400604482015290519081900360640190fd5b6001600160a01b03811661021b576040805162461bcd60e51b815260206004820152601c60248201527f76657374696e674f776e6572206164647265737320696e76616c696400000000604482015290519081900360640190fd5b61022d856001600160e01b0361028516565b600280546001600160a01b039586166001600160a01b031991821617909155600380549486169482169490941790935560048054928516928416929092179091556005805491909316911617905550610302565b3390565b6001600160a01b0381166102e0576040805162461bcd60e51b815260206004820152601e60248201527f76657374696e67466163746f7279206164647265737320696e76616c69640000604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b610f7e806103116000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80638da5cb5b116100ad578063c810a3e311610071578063c810a3e3146102e8578063cc49ede71461030e578063f2becf1714610334578063f2fde38b14610360578063f60826ee1461038657610121565b80638da5cb5b1461026c5780638f32d59b14610274578063bd7b59081461027c578063bd8f732b14610284578063c680c0b7146102bc57610121565b8063429b62e5116100f4578063429b62e5146101d05780634cf088d91461020a5780636a26b57f14610212578063704802751461021a57806379a83f5a1461024057610121565b80630665a06f1461012657806308dcb360146101605780631785f53c14610184578063377220fd146101aa575b600080fd5b61015e6004803603608081101561013c57600080fd5b506001600160a01b03813516906020810135906040810135906060013561038e565b005b61016861045c565b604080516001600160a01b039092168252519081900360200190f35b61015e6004803603602081101561019a57600080fd5b50356001600160a01b031661046b565b61015e600480360360208110156101c057600080fd5b50356001600160a01b031661050b565b6101f6600480360360208110156101e657600080fd5b50356001600160a01b031661055f565b604080519115158252519081900360200190f35b610168610574565b610168610583565b61015e6004803603602081101561023057600080fd5b50356001600160a01b0316610592565b61015e6004803603604081101561025657600080fd5b506001600160a01b038135169060200135610635565b61016861085d565b6101f661086c565b610168610890565b61015e6004803603608081101561029a57600080fd5b506001600160a01b03813516906020810135906040810135906060013561089f565b61015e600480360360408110156102d257600080fd5b506001600160a01b03813516906020013561096d565b610168600480360360208110156102fe57600080fd5b50356001600160a01b0316610b18565b6101686004803603602081101561032457600080fd5b50356001600160a01b0316610b53565b6101686004803603604081101561034a57600080fd5b506001600160a01b038135169060200135610b73565b61015e6004803603602081101561037657600080fd5b50356001600160a01b0316610b99565b610168610bea565b61039661086c565b806103b057503360009081526007602052604090205460ff165b6103f0576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006103fd858484610bf9565b604080516001600160a01b03808416825260208201879052818301869052606082018890529151929350908716917f66a644acab4366c0125120794335c517775a2b44b4315b5d90f0d163dae07fea9181900360800190a25050505050565b6002546001600160a01b031681565b61047361086c565b6104b3576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260076020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b61051361086c565b610553576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61055c81610d46565b50565b60076020526000908152604090205460ff1681565b6003546001600160a01b031681565b6004546001600160a01b031681565b61059a61086c565b6105da576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260076020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b61063d61086c565b8061065757503360009081526007602052604090205460ff165b610697576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0382166106f2576040805162461bcd60e51b815260206004820152601760248201527f76657374696e67206164647265737320696e76616c6964000000000000000000604482015290519081900360640190fd5b60008111610738576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163095ea7b360e01b81526001600160a01b038581166004830152602482018590529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561078e57600080fd5b505af11580156107a2573d6000803e3d6000fd5b505050506040513d60208110156107b857600080fd5b505060408051637547c7a360e01b81526004810183905290516001600160a01b03841691637547c7a391602480830192600092919082900301818387803b15801561080257600080fd5b505af1158015610816573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693507fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef92509081900360200190a25050565b6000546001600160a01b031690565b600080546001600160a01b0316610881610dc3565b6001600160a01b031614905090565b6005546001600160a01b031681565b6108a761086c565b806108c157503360009081526007602052604090205460ff165b610901576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600061090e858484610dc7565b604080516001600160a01b03808416825260208201879052818301869052606082018890529151929350908716917f6f0b5adf3d5b3548ea2b06e9be6e7f72e125253fd8c948f6ef4024be653c1c179181900360800190a25050505050565b61097561086c565b6109b5576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216610a10576040805162461bcd60e51b815260206004820152601860248201527f7265636569766572206164647265737320696e76616c69640000000000000000604482015290519081900360640190fd5b80610a53576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610aa957600080fd5b505af1158015610abd573d6000803e3d6000fd5b505050506040513d6020811015610ad357600080fd5b50506040805182815290516001600160a01b038416917fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad919081900360200190a25050565b6001600160a01b038116600090815260066020526040812081805b81526020810191909152604001600020546001600160a01b031692915050565b6001600160a01b0381166000908152600660205260408120816001610b33565b60066020908152600092835260408084209091529082529020546001600160a01b031681565b610ba161086c565b610be1576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61055c81610e83565b6001546001600160a01b031681565b6001600160a01b038381166000908152600660209081526040808320600180855292528220549192909116610d18576001546002546003546004805460408051637d2fbb8f60e11b81526001600160a01b0395861693810193909352928416602483015289841660448301819052606483018a90526084830189905290841660a483015260c48201529051600093929092169163fa5f771e9160e48082019260209290919082900301818787803b158015610cb357600080fd5b505af1158015610cc7573d6000803e3d6000fd5b505050506040513d6020811015610cdd57600080fd5b50516001600160a01b038781166000908152600660209081526040808320878452909152902080546001600160a01b03191691909216179055505b6001600160a01b03948516600090815260066020908152604080832093835292905220549093169392505050565b6001600160a01b038116610da1576040805162461bcd60e51b815260206004820152601e60248201527f76657374696e67466163746f7279206164647265737320696e76616c69640000604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b0383811660009081526006602090815260408083208380529091528120549091829116610d18576001546002546003546004805460055460408051630546344f60e41b81526001600160a01b039687169481019490945293851660248401528a85166044840152606483018a90526084830189905290841660a4830152831660c48201529051600093929092169163546344f09160e48082019260209290919082900301818787803b158015610cb357600080fd5b6001600160a01b038116610ec85760405162461bcd60e51b8152600401808060200182810382526026815260200180610f246026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158207cb2b03adf74ac65c2147671e3b36e082268249849a1d41e4c6a987fcd00de9964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x128F CODESIZE SUB DUP1 PUSH2 0x128F DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0x0 PUSH2 0x65 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x281 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x10A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x534F56206164647265737320696E76616C696400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x165 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7374616B696E67206164647265737320696E76616C6964000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x66656553686172696E6750726F7879206164647265737320696E76616C696400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x21B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E674F776E6572206164647265737320696E76616C696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x22D DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x285 AND JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP5 DUP7 AND SWAP5 DUP3 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 DUP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP2 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE POP PUSH2 0x302 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67466163746F7279206164647265737320696E76616C69640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xF7E DUP1 PUSH2 0x311 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x121 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xC810A3E3 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC810A3E3 EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0xCC49EDE7 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xF2BECF17 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x386 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0xBD8F732B EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x2BC JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x429B62E5 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x79A83F5A EQ PUSH2 0x240 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x665A06F EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x160 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x377220FD EQ PUSH2 0x1AA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x38E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH2 0x45C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x46B JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x50B JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x55F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH2 0x574 JUMP JUMPDEST PUSH2 0x168 PUSH2 0x583 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x592 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x635 JUMP JUMPDEST PUSH2 0x168 PUSH2 0x85D JUMP JUMPDEST PUSH2 0x1F6 PUSH2 0x86C JUMP JUMPDEST PUSH2 0x168 PUSH2 0x890 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x89F JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x96D JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB18 JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB53 JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB73 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB99 JUMP JUMPDEST PUSH2 0x168 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x396 PUSH2 0x86C JUMP JUMPDEST DUP1 PUSH2 0x3B0 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x3F0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3FD DUP6 DUP5 DUP5 PUSH2 0xBF9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP8 AND SWAP2 PUSH32 0x66A644ACAB4366C0125120794335C517775A2B44B4315B5D90F0D163DAE07FEA SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x473 PUSH2 0x86C JUMP JUMPDEST PUSH2 0x4B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x513 PUSH2 0x86C JUMP JUMPDEST PUSH2 0x553 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x55C DUP2 PUSH2 0xD46 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x59A PUSH2 0x86C JUMP JUMPDEST PUSH2 0x5DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x63D PUSH2 0x86C JUMP JUMPDEST DUP1 PUSH2 0x657 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x697 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x6F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67206164647265737320696E76616C6964000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x738 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x78E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x7547C7A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x7547C7A3 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x816 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP4 POP PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x881 PUSH2 0xDC3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x8A7 PUSH2 0x86C JUMP JUMPDEST DUP1 PUSH2 0x8C1 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x901 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x90E DUP6 DUP5 DUP5 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP8 AND SWAP2 PUSH32 0x6F0B5ADF3D5B3548EA2B06E9BE6E7F72E125253FD8C948F6EF4024BE653C1C17 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x975 PUSH2 0x86C JUMP JUMPDEST PUSH2 0x9B5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA10 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xA53 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xABD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP1 JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH1 0x1 PUSH2 0xB33 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xBA1 PUSH2 0x86C JUMP JUMPDEST PUSH2 0xBE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x55C DUP2 PUSH2 0xE83 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP6 MSTORE SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP2 SWAP3 SWAP1 SWAP2 AND PUSH2 0xD18 JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7D2FBB8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE DUP10 DUP5 AND PUSH1 0x44 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x64 DUP4 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP4 ADD DUP10 SWAP1 MSTORE SWAP1 DUP5 AND PUSH1 0xA4 DUP4 ADD MSTORE PUSH1 0xC4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xFA5F771E SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCC7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP4 AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDA1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67466163746F7279206164647265737320696E76616C69640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 DUP3 SWAP2 AND PUSH2 0xD18 JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x546344F PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP4 DUP6 AND PUSH1 0x24 DUP5 ADD MSTORE DUP11 DUP6 AND PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP4 ADD DUP10 SWAP1 MSTORE SWAP1 DUP5 AND PUSH1 0xA4 DUP4 ADD MSTORE DUP4 AND PUSH1 0xC4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x546344F0 SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xEC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF24 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158207CB2B03ADF74AC PUSH6 0xC2147671E3B3 PUSH15 0x82268249849A1D41E4C6A987FCD00 0xDE SWAP10 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "302:6136:81:-;;;1503:555;8:9:-1;5:2;;;30:1;27;20:12;5:2;1503:555:81;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1503:555:81;;;;;;;;;;;;;;;;;;;;;;;;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;-1:-1:-1;;;;;;1653:18:81;;1645:50;;;;;-1:-1:-1;;;1645:50:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1707:22:81;;1699:58;;;;;-1:-1:-1;;;1699:58:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1769:30:81;;1761:74;;;;;-1:-1:-1;;;1761:74:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1847:27:81;;1839:68;;;;;-1:-1:-1;;;1839:68:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:35;1931:15;-1:-1:-1;;;;;1912:18:81;:35;:::i;:::-;1952:3;:10;;-1:-1:-1;;;;;1952:10:81;;;-1:-1:-1;;;;;;1952:10:81;;;;;;;1966:7;:18;;;;;;;;;;;;;;;1988:15;:34;;;;;;;;;;;;;;;2026:12;:28;;;;;;;;;;;-1:-1:-1;302:6136:81;;780:87:137;853:10;780:87;:::o;2700:195:81:-;-1:-1:-1;;;;;2774:29:81;;2766:72;;;;;-1:-1:-1;;;2766:72:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;2842:14;:49;;-1:-1:-1;;;;;;2842:49:81;-1:-1:-1;;;;;2842:49:81;;;;;;;;;;2700:195::o;302:6136::-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101215760003560e01c80638da5cb5b116100ad578063c810a3e311610071578063c810a3e3146102e8578063cc49ede71461030e578063f2becf1714610334578063f2fde38b14610360578063f60826ee1461038657610121565b80638da5cb5b1461026c5780638f32d59b14610274578063bd7b59081461027c578063bd8f732b14610284578063c680c0b7146102bc57610121565b8063429b62e5116100f4578063429b62e5146101d05780634cf088d91461020a5780636a26b57f14610212578063704802751461021a57806379a83f5a1461024057610121565b80630665a06f1461012657806308dcb360146101605780631785f53c14610184578063377220fd146101aa575b600080fd5b61015e6004803603608081101561013c57600080fd5b506001600160a01b03813516906020810135906040810135906060013561038e565b005b61016861045c565b604080516001600160a01b039092168252519081900360200190f35b61015e6004803603602081101561019a57600080fd5b50356001600160a01b031661046b565b61015e600480360360208110156101c057600080fd5b50356001600160a01b031661050b565b6101f6600480360360208110156101e657600080fd5b50356001600160a01b031661055f565b604080519115158252519081900360200190f35b610168610574565b610168610583565b61015e6004803603602081101561023057600080fd5b50356001600160a01b0316610592565b61015e6004803603604081101561025657600080fd5b506001600160a01b038135169060200135610635565b61016861085d565b6101f661086c565b610168610890565b61015e6004803603608081101561029a57600080fd5b506001600160a01b03813516906020810135906040810135906060013561089f565b61015e600480360360408110156102d257600080fd5b506001600160a01b03813516906020013561096d565b610168600480360360208110156102fe57600080fd5b50356001600160a01b0316610b18565b6101686004803603602081101561032457600080fd5b50356001600160a01b0316610b53565b6101686004803603604081101561034a57600080fd5b506001600160a01b038135169060200135610b73565b61015e6004803603602081101561037657600080fd5b50356001600160a01b0316610b99565b610168610bea565b61039661086c565b806103b057503360009081526007602052604090205460ff165b6103f0576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006103fd858484610bf9565b604080516001600160a01b03808416825260208201879052818301869052606082018890529151929350908716917f66a644acab4366c0125120794335c517775a2b44b4315b5d90f0d163dae07fea9181900360800190a25050505050565b6002546001600160a01b031681565b61047361086c565b6104b3576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260076020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b61051361086c565b610553576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61055c81610d46565b50565b60076020526000908152604090205460ff1681565b6003546001600160a01b031681565b6004546001600160a01b031681565b61059a61086c565b6105da576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260076020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b61063d61086c565b8061065757503360009081526007602052604090205460ff165b610697576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0382166106f2576040805162461bcd60e51b815260206004820152601760248201527f76657374696e67206164647265737320696e76616c6964000000000000000000604482015290519081900360640190fd5b60008111610738576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163095ea7b360e01b81526001600160a01b038581166004830152602482018590529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561078e57600080fd5b505af11580156107a2573d6000803e3d6000fd5b505050506040513d60208110156107b857600080fd5b505060408051637547c7a360e01b81526004810183905290516001600160a01b03841691637547c7a391602480830192600092919082900301818387803b15801561080257600080fd5b505af1158015610816573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693507fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef92509081900360200190a25050565b6000546001600160a01b031690565b600080546001600160a01b0316610881610dc3565b6001600160a01b031614905090565b6005546001600160a01b031681565b6108a761086c565b806108c157503360009081526007602052604090205460ff165b610901576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600061090e858484610dc7565b604080516001600160a01b03808416825260208201879052818301869052606082018890529151929350908716917f6f0b5adf3d5b3548ea2b06e9be6e7f72e125253fd8c948f6ef4024be653c1c179181900360800190a25050505050565b61097561086c565b6109b5576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038216610a10576040805162461bcd60e51b815260206004820152601860248201527f7265636569766572206164647265737320696e76616c69640000000000000000604482015290519081900360640190fd5b80610a53576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6002546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610aa957600080fd5b505af1158015610abd573d6000803e3d6000fd5b505050506040513d6020811015610ad357600080fd5b50506040805182815290516001600160a01b038416917fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad919081900360200190a25050565b6001600160a01b038116600090815260066020526040812081805b81526020810191909152604001600020546001600160a01b031692915050565b6001600160a01b0381166000908152600660205260408120816001610b33565b60066020908152600092835260408084209091529082529020546001600160a01b031681565b610ba161086c565b610be1576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61055c81610e83565b6001546001600160a01b031681565b6001600160a01b038381166000908152600660209081526040808320600180855292528220549192909116610d18576001546002546003546004805460408051637d2fbb8f60e11b81526001600160a01b0395861693810193909352928416602483015289841660448301819052606483018a90526084830189905290841660a483015260c48201529051600093929092169163fa5f771e9160e48082019260209290919082900301818787803b158015610cb357600080fd5b505af1158015610cc7573d6000803e3d6000fd5b505050506040513d6020811015610cdd57600080fd5b50516001600160a01b038781166000908152600660209081526040808320878452909152902080546001600160a01b03191691909216179055505b6001600160a01b03948516600090815260066020908152604080832093835292905220549093169392505050565b6001600160a01b038116610da1576040805162461bcd60e51b815260206004820152601e60248201527f76657374696e67466163746f7279206164647265737320696e76616c69640000604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b0383811660009081526006602090815260408083208380529091528120549091829116610d18576001546002546003546004805460055460408051630546344f60e41b81526001600160a01b039687169481019490945293851660248401528a85166044840152606483018a90526084830189905290841660a4830152831660c48201529051600093929092169163546344f09160e48082019260209290919082900301818787803b158015610cb357600080fd5b6001600160a01b038116610ec85760405162461bcd60e51b8152600401808060200182810382526026815260200180610f246026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158207cb2b03adf74ac65c2147671e3b36e082268249849a1d41e4c6a987fcd00de9964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x121 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xC810A3E3 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC810A3E3 EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0xCC49EDE7 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xF2BECF17 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x386 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0xBD8F732B EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x2BC JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x429B62E5 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x79A83F5A EQ PUSH2 0x240 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x665A06F EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x160 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x377220FD EQ PUSH2 0x1AA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x38E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH2 0x45C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x46B JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x50B JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x55F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH2 0x574 JUMP JUMPDEST PUSH2 0x168 PUSH2 0x583 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x592 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x635 JUMP JUMPDEST PUSH2 0x168 PUSH2 0x85D JUMP JUMPDEST PUSH2 0x1F6 PUSH2 0x86C JUMP JUMPDEST PUSH2 0x168 PUSH2 0x890 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x89F JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x96D JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB18 JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB53 JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB73 JUMP JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB99 JUMP JUMPDEST PUSH2 0x168 PUSH2 0xBEA JUMP JUMPDEST PUSH2 0x396 PUSH2 0x86C JUMP JUMPDEST DUP1 PUSH2 0x3B0 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x3F0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3FD DUP6 DUP5 DUP5 PUSH2 0xBF9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP8 AND SWAP2 PUSH32 0x66A644ACAB4366C0125120794335C517775A2B44B4315B5D90F0D163DAE07FEA SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x473 PUSH2 0x86C JUMP JUMPDEST PUSH2 0x4B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x513 PUSH2 0x86C JUMP JUMPDEST PUSH2 0x553 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x55C DUP2 PUSH2 0xD46 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x59A PUSH2 0x86C JUMP JUMPDEST PUSH2 0x5DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x63D PUSH2 0x86C JUMP JUMPDEST DUP1 PUSH2 0x657 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x697 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x6F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67206164647265737320696E76616C6964000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x738 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x78E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x7547C7A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x7547C7A3 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x816 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP4 POP PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x881 PUSH2 0xDC3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x8A7 PUSH2 0x86C JUMP JUMPDEST DUP1 PUSH2 0x8C1 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x901 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x90E DUP6 DUP5 DUP5 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 DUP8 AND SWAP2 PUSH32 0x6F0B5ADF3D5B3548EA2B06E9BE6E7F72E125253FD8C948F6EF4024BE653C1C17 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x975 PUSH2 0x86C JUMP JUMPDEST PUSH2 0x9B5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA10 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xA53 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xABD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP1 JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 PUSH1 0x1 PUSH2 0xB33 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xBA1 PUSH2 0x86C JUMP JUMPDEST PUSH2 0xBE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x55C DUP2 PUSH2 0xE83 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP1 DUP6 MSTORE SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP2 SWAP3 SWAP1 SWAP2 AND PUSH2 0xD18 JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7D2FBB8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE DUP10 DUP5 AND PUSH1 0x44 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x64 DUP4 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP4 ADD DUP10 SWAP1 MSTORE SWAP1 DUP5 AND PUSH1 0xA4 DUP4 ADD MSTORE PUSH1 0xC4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xFA5F771E SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCC7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP4 AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDA1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67466163746F7279206164647265737320696E76616C69640000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 DUP3 SWAP2 AND PUSH2 0xD18 JUMPI PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x546344F PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND SWAP5 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP4 DUP6 AND PUSH1 0x24 DUP5 ADD MSTORE DUP11 DUP6 AND PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP4 ADD DUP10 SWAP1 MSTORE SWAP1 DUP5 AND PUSH1 0xA4 DUP4 ADD MSTORE DUP4 AND PUSH1 0xC4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x546344F0 SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xEC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF24 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158207CB2B03ADF74AC PUSH6 0xC2147671E3B3 PUSH15 0x82268249849A1D41E4C6A987FCD00 0xDE SWAP10 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "302:6136:81:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;302:6136:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3562:279;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;3562:279:81;;;;;;;;;;;;;;;;;;:::i;:::-;;448:18;;;:::i;:::-;;;;-1:-1:-1;;;;;448:18:81;;;;;;;;;;;;;;2351:113;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2351:113:81;-1:-1:-1;;;;;2351:113:81;;:::i;2585:112::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2585:112:81;-1:-1:-1;;;;;2585:112:81;;:::i;937:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;937:38:81;-1:-1:-1;;;;;937:38:81;;:::i;:::-;;;;;;;;;;;;;;;;;;511:22;;;:::i;565:30::-;;;:::i;2241:107::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2241:107:81;-1:-1:-1;;;;;2241:107:81;;:::i;4541:312::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4541:312:81;;;;;;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;662:27:81:-;;;:::i;4076:291::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;4076:291:81;;;;;;;;;;;;;;;;;;:::i;3059:273::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3059:273:81;;;;;;;;:::i;5265:153::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5265:153:81;-1:-1:-1;;;;;5265:153:81;;:::i;4984:145::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4984:145:81;-1:-1:-1;;;;;4984:145:81;;:::i;818:71::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;818:71:81;;;;;;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;372:37:81:-;;;:::i;3562:279::-;2181:9;:7;:9::i;:::-;:31;;;-1:-1:-1;2201:10:81;2194:18;;;;:6;:18;;;;;;;;2181:31;2173:56;;;;;-1:-1:-1;;;2173:56:81;;;;;;;;;;;;-1:-1:-1;;;2173:56:81;;;;;;;;;;;;;;;3695:15;3713:51;3733:11;3746:6;3754:9;3713:19;:51::i;:::-;3773:64;;;-1:-1:-1;;;;;3773:64:81;;;;;;;;;;;;;;;;;;;;;;;;;3695:69;;-1:-1:-1;3773:64:81;;;;;;;;;;;;;2233:1;3562:279;;;;:::o;448:18::-;;;-1:-1:-1;;;;;448:18:81;;:::o;2351:113::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;2409:14:81;;2426:5;2409:14;;;:6;:14;;;;;;;;;:22;;-1:-1:-1;;2409:22:81;;;2440:20;;;;;;;;;;;;;;;;;2351:113;:::o;2585:112::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;2658:35:81;2677:15;2658:18;:35::i;:::-;2585:112;:::o;937:38::-;;;;;;;;;;;;;;;:::o;511:22::-;;;-1:-1:-1;;;;;511:22:81;;:::o;565:30::-;;;-1:-1:-1;;;;;565:30:81;;:::o;2241:107::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;2296:14:81;;;;;;:6;:14;;;;;;;;;:21;;-1:-1:-1;;2296:21:81;2313:4;2296:21;;;2326:18;;;;;;;;;;;;;;;;;2241:107;:::o;4541:312::-;2181:9;:7;:9::i;:::-;:31;;;-1:-1:-1;2201:10:81;2194:18;;;;:6;:18;;;;;;;;2181:31;2173:56;;;;;-1:-1:-1;;;2173:56:81;;;;;;;;;;;;-1:-1:-1;;;2173:56:81;;;;;;;;;;;;;;;-1:-1:-1;;;;;4631:22:81;;4623:58;;;;;-1:-1:-1;;;4623:58:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;4703:1;4693:7;:11;4685:38;;;;;-1:-1:-1;;;4685:38:81;;;;;;;;;;;;-1:-1:-1;;;4685:38:81;;;;;;;;;;;;;;;4735:3;;4728:38;;;-1:-1:-1;;;4728:38:81;;-1:-1:-1;;;;;4728:38:81;;;;;;;;;;;;;;;4735:3;;;;;4728:19;;:38;;;;;;;;;;;;;;4735:3;;4728:38;;;5:2:-1;;;;30:1;27;20:12;5:2;4728:38:81;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4728:38:81;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;4770:39:81;;;-1:-1:-1;;;4770:39:81;;;;;;;;;;-1:-1:-1;;;;;4770:30:81;;;;;:39;;;;;-1:-1:-1;;4770:39:81;;;;;;;-1:-1:-1;4770:30:81;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;4770:39:81;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4818:31:81;;;;;;;;-1:-1:-1;;;;;4818:31:81;;;-1:-1:-1;4818:31:81;;-1:-1:-1;4818:31:81;;;;;;;;4541:312;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;662:27:81:-;;;-1:-1:-1;;;;;662:27:81;;:::o;4076:291::-;2181:9;:7;:9::i;:::-;:31;;;-1:-1:-1;2201:10:81;2194:18;;;;:6;:18;;;;;;;;2181:31;2173:56;;;;;-1:-1:-1;;;2173:56:81;;;;;;;;;;;;-1:-1:-1;;;2173:56:81;;;;;;;;;;;;;;;4213:15;4231:55;4255:11;4268:6;4276:9;4231:23;:55::i;:::-;4295:68;;;-1:-1:-1;;;;;4295:68:81;;;;;;;;;;;;;;;;;;;;;;;;;4213:73;;-1:-1:-1;4295:68:81;;;;;;;;;;;;;2233:1;4076:291;;;;:::o;3059:273::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;3145:23:81;;3137:60;;;;;-1:-1:-1;;;3137:60:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;3209:12;3201:39;;;;;-1:-1:-1;;;3201:39:81;;;;;;;;;;;;-1:-1:-1;;;3201:39:81;;;;;;;;;;;;;;;3252:3;;3245:40;;;-1:-1:-1;;;3245:40:81;;-1:-1:-1;;;;;3245:40:81;;;;;;;;;;;;;;;3252:3;;;;;3245:20;;:40;;;;;;;;;;;;;;3252:3;;3245:40;;;5:2:-1;;;;30:1;27;20:12;5:2;3245:40:81;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3245:40:81;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;3294:34:81;;;;;;;;-1:-1:-1;;;;;3294:34:81;;;;;;;;;3245:40;3294:34;;;3059:273;;:::o;5265:153::-;-1:-1:-1;;;;;5351:29:81;;5331:7;5351:29;;;:16;:29;;;;;5331:7;;5381:32;5351:63;;;;;;;;;;;-1:-1:-1;5351:63:81;;-1:-1:-1;;;;;5351:63:81;;5265:153;-1:-1:-1;;5265:153:81:o;4984:145::-;-1:-1:-1;;;;;5066:29:81;;5046:7;5066:29;;;:16;:29;;;;;5046:7;5104:19;5096:28;;818:71;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;818:71:81;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;372:37:81:-;;;-1:-1:-1;;;;;372:37:81;;:::o;5421:537::-;-1:-1:-1;;;;;5598:29:81;;;5533:7;5598:29;;;:16;:29;;;;;;;;5570:19;5598:36;;;;;;;;5533:7;;5570:19;;5598:36;5594:314;;5748:14;;5777:3;;5782:7;;5823:15;;;5748:104;;;-1:-1:-1;;;5748:104:81;;-1:-1:-1;;;;;5777:3:81;;;5748:104;;;;;;;5782:7;;;5748:104;;;;;;;;;;;;;;;;;;;;;;;;;5823:15;;;5748:104;;;;;;;;;;5730:15;;5748:14;;;;;:28;;:104;;;;;;;;;;;;;;;5730:15;5748:14;:104;;;5:2:-1;;;;30:1;27;20:12;5:2;5748:104:81;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5748:104:81;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5748:104:81;-1:-1:-1;;;;;5857:29:81;;;;;;;:16;5748:104;5857:29;;;;;;;:36;;;;;;;;:46;;-1:-1:-1;;;;;;5857:46:81;;;;;;;;-1:-1:-1;5594:314:81;-1:-1:-1;;;;;5918:29:81;;;;;;;:16;:29;;;;;;;;:36;;;;;;;;;;;;5421:537;-1:-1:-1;;;5421:537:81:o;2700:195::-;-1:-1:-1;;;;;2774:29:81;;2766:72;;;;;-1:-1:-1;;;2766:72:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;2842:14;:49;;-1:-1:-1;;;;;;2842:49:81;-1:-1:-1;;;;;2842:49:81;;;;;;;;;;2700:195::o;780:87:137:-;853:10;780:87;:::o;5961:475:81:-;-1:-1:-1;;;;;6146:29:81;;;6077:7;6146:29;;;:16;:29;;;;;;;;:36;;;;;;;;;6077:7;;;;6146:36;6142:244;;6221:14;;6254:3;;6259:7;;6300:15;;;6317:12;;6221:109;;;-1:-1:-1;;;6221:109:81;;-1:-1:-1;;;;;6254:3:81;;;6221:109;;;;;;;6259:7;;;6221:109;;;;;;;;;;;;;;;;;;;;;;;6300:15;;;6221:109;;;;6317:12;;6221:109;;;;;;6203:15;;6221:14;;;;;:32;;:109;;;;;;;;;;;;;;;6203:15;6221:14;:109;;;5:2:-1;;;;30:1;27;20:12;1538:204:142;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "createTeamVesting(address,uint256,uint256,uint256)": "bd8f732b",
              "createVesting(address,uint256,uint256,uint256)": "0665a06f",
              "feeSharingProxy()": "6a26b57f",
              "getTeamVesting(address)": "c810a3e3",
              "getVesting(address)": "cc49ede7",
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "removeAdmin(address)": "1785f53c",
              "setVestingFactory(address)": "377220fd",
              "stakeTokens(address,uint256)": "79a83f5a",
              "staking()": "4cf088d9",
              "transferOwnership(address)": "f2fde38b",
              "transferSOV(address,uint256)": "c680c0b7",
              "vestingContracts(address,uint256)": "f2becf17",
              "vestingFactory()": "f60826ee",
              "vestingOwner()": "bd7b5908"
            }
          },
          "userdoc": {
            "methods": {
              "createTeamVesting(address,uint256,uint256,uint256)": {
                "notice": "creates Team Vesting contract"
              },
              "createVesting(address,uint256,uint256,uint256)": {
                "notice": "creates Vesting contract"
              },
              "getTeamVesting(address)": {
                "notice": "returns team vesting contract address for the given token owner"
              },
              "getVesting(address)": {
                "notice": "returns vesting contract address for the given token owner"
              },
              "setVestingFactory(address)": {
                "notice": "sets vesting factory address"
              },
              "stakeTokens(address,uint256)": {
                "notice": "stakes tokens according to the vesting schedule"
              },
              "transferSOV(address,uint256)": {
                "notice": "transfers SOV tokens to given address"
              }
            }
          }
        }
      },
      "contracts/governance/Vesting/VestingRegistryLogic.sol": {
        "VestingRegistryLogic": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "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": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "SOVTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "vestingCreationType",
                  "type": "uint256"
                }
              ],
              "name": "TeamVestingCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "vestingCreationType",
                  "type": "uint256"
                }
              ],
              "name": "VestingCreated",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_tokenOwners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_vestingCreationTypes",
                  "type": "uint256[]"
                }
              ],
              "name": "addDeployedVestings",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_vestingCreationType",
                  "type": "uint256"
                }
              ],
              "name": "createTeamVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "createVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_vestingCreationType",
                  "type": "uint256"
                }
              ],
              "name": "createVestingAddr",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharingProxy",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_vestingCreationType",
                  "type": "uint256"
                }
              ],
              "name": "getTeamVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                }
              ],
              "name": "getVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_vestingCreationType",
                  "type": "uint256"
                }
              ],
              "name": "getVestingAddr",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingAddress",
                  "type": "address"
                }
              ],
              "name": "getVestingDetails",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                }
              ],
              "name": "getVestingsOf",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "vestingType",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "vestingCreationType",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address",
                      "name": "vestingAddress",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct VestingRegistryStorage.Vesting[]",
                  "name": "",
                  "type": "tuple[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingFactory",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_staking",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_feeSharingProxy",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_vestingOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_lockedSOV",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "_vestingRegistries",
                  "type": "address[]"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isVesting",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingAddress",
                  "type": "address"
                }
              ],
              "name": "isVestingAdress",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isVestingAddr",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOV",
              "outputs": [
                {
                  "internalType": "contract LockedSOV",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingFactory",
                  "type": "address"
                }
              ],
              "name": "setVestingFactory",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vesting",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "stakeTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "transferSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingFactory",
              "outputs": [
                {
                  "internalType": "contract IVestingFactory",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestingRegistries",
              "outputs": [
                {
                  "internalType": "contract IVestingRegistry",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestings",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "vestingType",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "vestingCreationType",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "vestingAddress",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestingsOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "addDeployedVestings(address[],uint256[])": {
                "details": "migration of data from previous vesting registy contracts"
              },
              "createTeamVesting(address,uint256,uint256,uint256,uint256)": {
                "params": {
                  "_amount": "the amount to be staked",
                  "_cliff": "the cliff in seconds",
                  "_duration": "the total duration in seconds",
                  "_tokenOwner": "the owner of the tokens",
                  "_vestingCreationType": "the type of vesting created(e.g. Origin, Bug Bounty etc.)"
                }
              },
              "createVesting(address,uint256,uint256,uint256)": {
                "details": "Calls a public createVestingAddr function with vestingCreationType. This is to accomodate the existing logic for LockedSOVvestingCreationType 0 = LockedSOV",
                "params": {
                  "_amount": "the amount to be staked",
                  "_cliff": "the cliff in seconds",
                  "_duration": "the total duration in seconds",
                  "_tokenOwner": "the owner of the tokens"
                }
              },
              "createVestingAddr(address,uint256,uint256,uint256,uint256)": {
                "params": {
                  "_amount": "the amount to be staked",
                  "_cliff": "the cliff in seconds",
                  "_duration": "the total duration in seconds",
                  "_tokenOwner": "the owner of the tokens",
                  "_vestingCreationType": "the type of vesting created(e.g. Origin, Bug Bounty etc.)"
                }
              },
              "getVesting(address)": {
                "details": "Calls a public getVestingAddr function with cliff and duration. This is to accomodate the existing logic for LockedSOVWe need to use LockedSOV.changeRegistryCliffAndDuration function very judiciouslyvestingCreationType 0 - LockedSOV",
                "params": {
                  "_tokenOwner": "the owner of the tokens"
                }
              },
              "getVestingAddr(address,uint256,uint256,uint256)": {
                "details": "Important: Please use this instead of getVesting function"
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "setVestingFactory(address)": {
                "params": {
                  "_vestingFactory": "the address of vesting factory contract"
                }
              },
              "stakeTokens(address,uint256)": {
                "params": {
                  "_amount": "the amount of tokens to stake",
                  "_vesting": "the address of Vesting contract"
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "transferSOV(address,uint256)": {
                "params": {
                  "_amount": "the amount to be transferred",
                  "_receiver": "the address of the SOV receiver"
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361007016565b6000805462010000600160b01b031916620100006001600160a01b038416908102919091178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610074565b3390565b6126cb806100836000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063c680c0b7116100a2578063efb9573311610071578063efb95733146103e7578063f2f46b3b14610407578063f2fde38b1461040f578063f60826ee14610422576101da565b8063c680c0b71461038e578063cc49ede7146103a1578063dbb049d1146103b4578063dfb9366d146103c7576101da565b8063b810c648116100de578063b810c6481461034d578063bd7b590814610360578063c0e0985214610368578063c36519d11461037b576101da565b80638da5cb5b1461031c5780638dedf009146103245780638f32d59b14610345576101da565b806342a82b4f1161017c57806379a83f5a1161014b57806379a83f5a146102b4578063821bee73146102c7578063842a49d5146102e9578063862e229d14610309576101da565b806342a82b4f1461027e5780634cf088d9146102915780636a26b57f1461029957806370480275146102a1576101da565b80631785f53c116101b85780631785f53c146102255780631f50932614610238578063377220fd1461024b578063429b62e51461025e576101da565b806302df0476146101df5780630665a06f1461020857806308dcb3601461021d575b600080fd5b6101f26101ed366004611d42565b61042a565b6040516101ff91906123be565b60405180910390f35b61021b610216366004611d42565b61048b565b005b6101f26104e6565b61021b610233366004611c14565b6104f5565b61021b610246366004611da3565b610574565b61021b610259366004611c14565b610616565b61027161026c366004611c14565b610646565b6040516101ff91906124b3565b61021b61028c366004611c50565b61065b565b6101f26108ca565b6101f26108d9565b61021b6102af366004611c14565b6108e8565b61021b6102c2366004611d08565b610961565b6102da6102d5366004611ea6565b610b0d565b6040516101ff939291906125eb565b6102fc6102f7366004611ea6565b610b37565b6040516101ff91906124c1565b61021b610317366004611da3565b610b5e565b6101f2610bed565b610337610332366004611c14565b610c02565b6040516101ff9291906125dd565b610271610cf6565b61021b61035b366004611e18565b610d20565b6101f2610e30565b610271610376366004611c14565b610e3f565b6101f2610389366004611d42565b610e54565b61021b61039c366004611d08565b610e5d565b6101f26103af366004611c14565b610f9d565b6102716103c2366004611c14565b6110bc565b6103da6103d5366004611d08565b6110da565b6040516101ff91906125cf565b6103fa6103f5366004611c14565b611108565b6040516101ff91906124a2565b6102fc611252565b61021b61041d366004611c14565b611261565b6102fc61128e565b60008060015b90506000868287878760405160200161044d959493929190612365565b60408051601f198184030181529181528151602092830120600090815260099092529020600201546001600160a01b0316925050505b949350505050565b610493610cf6565b806104ad57503360009081526001602052604090205460ff165b6104d25760405162461bcd60e51b81526004016104c99061254f565b60405180910390fd5b6104e0848484846000610574565b50505050565b6005546001600160a01b031681565b6104fd610cf6565b6105195760405162461bcd60e51b81526004016104c99061254f565b6001600160a01b03811660009081526001602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f906105699083906123be565b60405180910390a150565b61057c610cf6565b8061059657503360009081526001602052604090205460ff165b6105b25760405162461bcd60e51b81526004016104c99061254f565b60006105c386858560015b8661129d565b9050856001600160a01b03167fd6fcfd83804f6b6b63260c7b99eb10060bc1319dbc9177fb6defc7bd614017bf8286868987604051610606959493929190612456565b60405180910390a2505050505050565b61061e610cf6565b61063a5760405162461bcd60e51b81526004016104c99061254f565b6106438161154d565b50565b60016020526000908152604090205460ff1681565b610663610cf6565b61067f5760405162461bcd60e51b81526004016104c99061254f565b600054610100900460ff1680610698575060005460ff16155b6106b45760405162461bcd60e51b81526004016104c99061253f565b600054610100900460ff161580156106df576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0388166107055760405162461bcd60e51b81526004016104c9906125bf565b6001600160a01b03871661072b5760405162461bcd60e51b81526004016104c99061259f565b6001600160a01b0386166107515760405162461bcd60e51b81526004016104c99061257f565b6001600160a01b0385166107775760405162461bcd60e51b81526004016104c99061252f565b6001600160a01b03841661079d5760405162461bcd60e51b81526004016104c99061258f565b6107a68961154d565b600580546001600160a01b03199081166001600160a01b038b8116919091179092556006805482168a84161790556007805482168984161790556008805482168884161790556003805490911691861691909117905560005b828110156108ac57600084848381811061081557fe5b905060200201602061082a9190810190611c14565b6001600160a01b031614156108515760405162461bcd60e51b81526004016104c9906124cf565b600484848381811061085f57fe5b90506020020160206108749190810190611c14565b815460018082018455600093845260209093200180546001600160a01b0319166001600160a01b0392909216919091179055016107ff565b5080156108bf576000805461ff00191690555b505050505050505050565b6006546001600160a01b031681565b6007546001600160a01b031681565b6108f0610cf6565b61090c5760405162461bcd60e51b81526004016104c99061254f565b6001600160a01b038116600090815260016020819052604091829020805460ff19169091179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339906105699083906123be565b610969610cf6565b8061098357503360009081526001602052604090205460ff165b61099f5760405162461bcd60e51b81526004016104c99061254f565b6001600160a01b0382166109c55760405162461bcd60e51b81526004016104c99061251f565b600081116109e55760405162461bcd60e51b81526004016104c99061250f565b60055460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390610a179085908590600401612434565b602060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a699190810190611e88565b50604051637547c7a360e01b81526001600160a01b03831690637547c7a390610a969084906004016125cf565b600060405180830381600087803b158015610ab057600080fd5b505af1158015610ac4573d6000803e3d6000fd5b50505050816001600160a01b03167fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef82604051610b0191906125cf565b60405180910390a25050565b6009602052600090815260409020805460018201546002909201549091906001600160a01b031683565b60048181548110610b4457fe5b6000918252602090912001546001600160a01b0316905081565b610b66610cf6565b80610b8057503360009081526001602052604090205460ff165b610b9c5760405162461bcd60e51b81526004016104c99061254f565b6000610baa868585846105bd565b9050856001600160a01b03167f3791c6c90c276d011b4b885c0bfba0554342acf50a539baca1b06f070af25ff48286868987604051610606959493929190612456565b6000546201000090046001600160a01b031690565b6000806000839050806001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4357600080fd5b505afa158015610c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7b9190810190611ec4565b816001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b158015610cb457600080fd5b505afa158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cec9190810190611ec4565b9250925050915091565b600080546201000090046001600160a01b0316610d11611595565b6001600160a01b031614905090565b610d28610cf6565b80610d4257503360009081526001602052604090205460ff165b610d5e5760405162461bcd60e51b81526004016104c99061254f565b60005b83811015610e29576000858583818110610d7757fe5b9050602002016020610d8c9190810190611c14565b6001600160a01b03161415610db35760405162461bcd60e51b81526004016104c9906124df565b6000838383818110610dc157fe5b9050602002013511610de55760405162461bcd60e51b81526004016104c99061255f565b610e21858583818110610df457fe5b9050602002016020610e099190810190611c14565b848484818110610e1557fe5b90506020020135611599565b600101610d61565b5050505050565b6008546001600160a01b031681565b600b6020526000908152604090205460ff1681565b60008080610430565b610e65610cf6565b610e815760405162461bcd60e51b81526004016104c99061254f565b6001600160a01b038216610ea75760405162461bcd60e51b81526004016104c99061256f565b80610ec45760405162461bcd60e51b81526004016104c99061250f565b60055460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610ef69085908590600401612434565b602060405180830381600087803b158015610f1057600080fd5b505af1158015610f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f489190810190611e88565b610f645760405162461bcd60e51b81526004016104c9906125af565b816001600160a01b03167fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad82604051610b0191906125cf565b60006110b682600360009054906101000a90046001600160a01b03166001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110299190810190611ec4565b600360009054906101000a90046001600160a01b03166001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561107757600080fd5b505afa15801561108b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110af9190810190611ec4565b600061042a565b92915050565b6001600160a01b03166000908152600b602052604090205460ff1690565b600a60205281600052604060002081815481106110f357fe5b90600052602060002001600091509150505481565b606080600a6000846001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561117a57602002820191906000526020600020905b815481526020019060010190808311611166575b50505050509050600081519050606082516040519080825280602002602001820160405280156111c457816020015b6111b1611b6a565b8152602001906001900390816111a95790505b50905060005b8281101561124957600960008583815181106111e257fe5b6020908102919091018101518252818101929092526040908101600020815160608101835281548152600182015493810193909352600201546001600160a01b031690820152825183908390811061123657fe5b60209081029190910101526001016111ca565b50949350505050565b6003546001600160a01b031681565b611269610cf6565b6112855760405162461bcd60e51b81526004016104c99061254f565b61064381611adb565b6002546001600160a01b031681565b600080600087858888876040516020016112bb959493929190612365565b60408051601f198184030181529181528151602092830120600081815260099093529120600201549091506001600160a01b031661152757846001141561139f57600254600554600654600754604051637d2fbb8f60e11b81526001600160a01b039485169463fa5f771e946113469490821693908216928f928f928f9291169084906004016123cc565b602060405180830381600087803b15801561136057600080fd5b505af1158015611374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113989190810190611c32565b9150611495565b600260009054906101000a90046001600160a01b03166001600160a01b031663546344f0600560009054906101000a90046001600160a01b0316600660009054906101000a90046001600160a01b03168b8b8b600760009054906101000a90046001600160a01b0316600860009054906101000a90046001600160a01b03166040518863ffffffff1660e01b815260040161144097969594939291906123cc565b602060405180830381600087803b15801561145a57600080fd5b505af115801561146e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114929190810190611c32565b91505b6040805160608101825286815260208082018781526001600160a01b038681168486018181526000888152600986528781209651875593516001808801919091559051600290960180546001600160a01b03191696841696909617909555908d168252600a835284822080548086018255908352838320018690558152600b90915291909120805460ff191690911790555b6000908152600960205260409020600201546001600160a01b0316979650505050505050565b6001600160a01b0381166115735760405162461bcd60e51b81526004016104c9906124ff565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6004546001906000908190815b81811015611ad2576000600482815481106115bd57fe5b60009182526020909120015460405163cc49ede760e01b81526001600160a01b039091169063cc49ede7906115f6908b906004016123be565b60206040518083038186803b15801561160e57600080fd5b505afa158015611622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116469190810190611c32565b90506001600160a01b038116156117fc5760008190508887826001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b15801561169757600080fd5b505afa1580156116ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116cf9190810190611ec4565b836001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561170857600080fd5b505afa15801561171c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117409190810190611ec4565b8b604051602001611755959493929190612365565b60408051808303601f1901815282825280516020918201206060840183528a84528184018c81526001600160a01b038781168686018181526000858152600987528781209851895593516001808a01919091559051600290980180546001600160a01b03191698841698909817909755908f168252600a845284822080548088018255908352848320018390558152600b909252919020805460ff19169092179091559450505b60006004838154811061180b57fe5b60009182526020909120015460405163c810a3e360e01b81526001600160a01b039091169063c810a3e390611844908c906004016123be565b60206040518083038186803b15801561185c57600080fd5b505afa158015611870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118949190810190611c32565b90506001600160a01b03811615611ac85760008190508987826001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e557600080fd5b505afa1580156118f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061191d9190810190611ec4565b836001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561195657600080fd5b505afa15801561196a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061198e9190810190611ec4565b8c6040516020016119a3959493929190612365565b6040516020818303038152906040528051906020012060001c955060405180606001604052808881526020018a8152602001836001600160a01b031681525060096000888152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050600a60008b6001600160a01b03166001600160a01b031681526020019081526020016000208690806001815401808255809150509060018203906000526020600020016000909192909190915055506001600b6000846001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550505b50506001016115a6565b50505050505050565b6001600160a01b038116611b015760405162461bcd60e51b81526004016104c9906124ef565b600080546040516001600160a01b03808516936201000090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6040518060600160405280600081526020016000815260200160006001600160a01b031681525090565b80356110b681612662565b80516110b681612662565b60008083601f840112611bbc57600080fd5b50813567ffffffffffffffff811115611bd457600080fd5b602083019150836020820283011115611bec57600080fd5b9250929050565b80516110b681612676565b80356110b68161267f565b80516110b68161267f565b600060208284031215611c2657600080fd5b60006104838484611b94565b600060208284031215611c4457600080fd5b60006104838484611b9f565b60008060008060008060008060e0898b031215611c6c57600080fd5b6000611c788b8b611b94565b9850506020611c898b828c01611b94565b9750506040611c9a8b828c01611b94565b9650506060611cab8b828c01611b94565b9550506080611cbc8b828c01611b94565b94505060a0611ccd8b828c01611b94565b93505060c089013567ffffffffffffffff811115611cea57600080fd5b611cf68b828c01611baa565b92509250509295985092959890939650565b60008060408385031215611d1b57600080fd5b6000611d278585611b94565b9250506020611d3885828601611bfe565b9150509250929050565b60008060008060808587031215611d5857600080fd5b6000611d648787611b94565b9450506020611d7587828801611bfe565b9350506040611d8687828801611bfe565b9250506060611d9787828801611bfe565b91505092959194509250565b600080600080600060a08688031215611dbb57600080fd5b6000611dc78888611b94565b9550506020611dd888828901611bfe565b9450506040611de988828901611bfe565b9350506060611dfa88828901611bfe565b9250506080611e0b88828901611bfe565b9150509295509295909350565b60008060008060408587031215611e2e57600080fd5b843567ffffffffffffffff811115611e4557600080fd5b611e5187828801611baa565b9450945050602085013567ffffffffffffffff811115611e7057600080fd5b611e7c87828801611baa565b95989497509550505050565b600060208284031215611e9a57600080fd5b60006104838484611bf3565b600060208284031215611eb857600080fd5b60006104838484611bfe565b600060208284031215611ed657600080fd5b60006104838484611c09565b6000611eee8383612314565b505060600190565b611eff81612626565b82525050565b611eff611f1182612626565b612650565b6000611f2182612619565b611f2b818561261d565b9350611f3683612613565b8060005b83811015611f64578151611f4e8882611ee2565b9750611f5983612613565b925050600101611f3a565b509495945050505050565b611eff81612631565b611eff81612645565b6000611f8e60208361261d565b7f56657374696e67207265676973747279206164647265737320696e76616c6964815260200192915050565b6000611fc7601f8361261d565b7f746f6b656e206f776e65722063616e6e6f742062652030206164647265737300815260200192915050565b600061200060268361261d565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000612048601e8361261d565b7f76657374696e67466163746f7279206164647265737320696e76616c69640000815260200192915050565b6000612081600e8361261d565b6d185b5bdd5b9d081a5b9d985b1a5960921b815260200192915050565b60006120ab60178361261d565b7f76657374696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b60006120e4601c8361261d565b7f76657374696e674f776e6572206164647265737320696e76616c696400000000815260200192915050565b600061211d602e8361261d565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015260400192915050565b600061216d600c8361261d565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000612195602c8361261d565b7f76657374696e67206372656174696f6e2074797065206d75737420626520677281526b06561746572207468616e20360a41b602082015260400192915050565b60006121e360188361261d565b7f7265636569766572206164647265737320696e76616c69640000000000000000815260200192915050565b600061221c601f8361261d565b7f66656553686172696e6750726f7879206164647265737320696e76616c696400815260200192915050565b600061225560198361261d565b7f4c6f636b6564534f56206164647265737320696e76616c696400000000000000815260200192915050565b600061228e60178361261d565b7f7374616b696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b60006122c7600f8361261d565b6e1d1c985b9cd9995c8819985a5b1959608a1b815260200192915050565b60006122f260138361261d565b7214d3d5881859191c995cdcc81a5b9d985b1a59606a1b815260200192915050565b80516060830190612325848261234b565b506020820151612338602085018261234b565b5060408201516104e06040850182611ef6565b611eff81612642565b611eff61236082612642565b612642565b60006123718288611f05565b6014820191506123818287612354565b6020820191506123918286612354565b6020820191506123a18285612354565b6020820191506123b18284612354565b5060200195945050505050565b602081016110b68284611ef6565b60e081016123da828a611ef6565b6123e76020830189611ef6565b6123f46040830188611ef6565b612401606083018761234b565b61240e608083018661234b565b61241b60a0830185611ef6565b61242860c0830184611ef6565b98975050505050505050565b604081016124428285611ef6565b61244f602083018461234b565b9392505050565b60a081016124648288611ef6565b612471602083018761234b565b61247e604083018661234b565b61248b606083018561234b565b612498608083018461234b565b9695505050505050565b6020808252810161244f8184611f16565b602081016110b68284611f6f565b602081016110b68284611f78565b602080825281016110b681611f81565b602080825281016110b681611fba565b602080825281016110b681611ff3565b602080825281016110b68161203b565b602080825281016110b681612074565b602080825281016110b68161209e565b602080825281016110b6816120d7565b602080825281016110b681612110565b602080825281016110b681612160565b602080825281016110b681612188565b602080825281016110b6816121d6565b602080825281016110b68161220f565b602080825281016110b681612248565b602080825281016110b681612281565b602080825281016110b6816122ba565b602080825281016110b6816122e5565b602081016110b6828461234b565b60408101612442828561234b565b606081016125f9828661234b565b612606602083018561234b565b6104836040830184611ef6565b60200190565b5190565b90815260200190565b60006110b682612636565b151590565b6001600160a01b031690565b90565b60006110b682612626565b60006110b68260006110b68260601b90565b61266b81612626565b811461064357600080fd5b61266b81612631565b61266b8161264256fea365627a7a72315820cc50a64b85be89778778cac83274f5609b4b2f01ff897b8d550f02d9b452c53d6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x70 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x74 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x26CB DUP1 PUSH2 0x83 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xC680C0B7 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xEFB95733 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xEFB95733 EQ PUSH2 0x3E7 JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x407 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x422 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xCC49EDE7 EQ PUSH2 0x3A1 JUMPI DUP1 PUSH4 0xDBB049D1 EQ PUSH2 0x3B4 JUMPI DUP1 PUSH4 0xDFB9366D EQ PUSH2 0x3C7 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xB810C648 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xB810C648 EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0xC0E09852 EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0xC36519D1 EQ PUSH2 0x37B JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x31C JUMPI DUP1 PUSH4 0x8DEDF009 EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x345 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x42A82B4F GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x79A83F5A GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x79A83F5A EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0x821BEE73 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x842A49D5 EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0x862E229D EQ PUSH2 0x309 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x42A82B4F EQ PUSH2 0x27E JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x2A1 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x1F509326 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0x377220FD EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x25E JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x2DF0476 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x665A06F EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x21D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x1D42 JUMP JUMPDEST PUSH2 0x42A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21B PUSH2 0x216 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D42 JUMP JUMPDEST PUSH2 0x48B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F2 PUSH2 0x4E6 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x4F5 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x246 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DA3 JUMP JUMPDEST PUSH2 0x574 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x259 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x616 JUMP JUMPDEST PUSH2 0x271 PUSH2 0x26C CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x646 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x24B3 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x28C CALLDATASIZE PUSH1 0x4 PUSH2 0x1C50 JUMP JUMPDEST PUSH2 0x65B JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x8CA JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x2AF CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D08 JUMP JUMPDEST PUSH2 0x961 JUMP JUMPDEST PUSH2 0x2DA PUSH2 0x2D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EA6 JUMP JUMPDEST PUSH2 0xB0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x25EB JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x2F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EA6 JUMP JUMPDEST PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x24C1 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x317 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DA3 JUMP JUMPDEST PUSH2 0xB5E JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0xBED JUMP JUMPDEST PUSH2 0x337 PUSH2 0x332 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP3 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST PUSH2 0x271 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x35B CALLDATASIZE PUSH1 0x4 PUSH2 0x1E18 JUMP JUMPDEST PUSH2 0xD20 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0xE30 JUMP JUMPDEST PUSH2 0x271 PUSH2 0x376 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x389 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D42 JUMP JUMPDEST PUSH2 0xE54 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x39C CALLDATASIZE PUSH1 0x4 PUSH2 0x1D08 JUMP JUMPDEST PUSH2 0xE5D JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x3AF CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0xF9D JUMP JUMPDEST PUSH2 0x271 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x3DA PUSH2 0x3D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D08 JUMP JUMPDEST PUSH2 0x10DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x3FA PUSH2 0x3F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x1108 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x24A2 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x1252 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x41D CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x1261 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x128E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x44D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2365 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 SWAP1 SWAP3 MSTORE SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x493 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0x4AD JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x4D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4E0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x574 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x4FD PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x519 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0x569 SWAP1 DUP4 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x57C PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0x596 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x5B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C3 DUP7 DUP6 DUP6 PUSH1 0x1 JUMPDEST DUP7 PUSH2 0x129D JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xD6FCFD83804F6B6B63260C7B99EB10060BC1319DBC9177FB6DEFC7BD614017BF DUP3 DUP7 DUP7 DUP10 DUP8 PUSH1 0x40 MLOAD PUSH2 0x606 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2456 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x61E PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x63A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH2 0x643 DUP2 PUSH2 0x154D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x663 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x67F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x698 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x6B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x253F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0x705 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x25BF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x72B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x259F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x751 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x257F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x777 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x252F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x79D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x258F JUMP JUMPDEST PUSH2 0x7A6 DUP10 PUSH2 0x154D JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD DUP3 AND DUP11 DUP5 AND OR SWAP1 SSTORE PUSH1 0x7 DUP1 SLOAD DUP3 AND DUP10 DUP5 AND OR SWAP1 SSTORE PUSH1 0x8 DUP1 SLOAD DUP3 AND DUP9 DUP5 AND OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP1 SWAP2 AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x8AC JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x815 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x82A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C14 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x851 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x4 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x85F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x874 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C14 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE ADD PUSH2 0x7FF JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x8BF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x8F0 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x90C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0x569 SWAP1 DUP4 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH2 0x969 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0x983 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x99F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x9C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x251F JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x9E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x250F JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0xA17 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2434 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xA69 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1E88 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x7547C7A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x7547C7A3 SWAP1 PUSH2 0xA96 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF DUP3 PUSH1 0x40 MLOAD PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xB44 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH2 0xB66 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0xB80 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xB9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBAA DUP7 DUP6 DUP6 DUP5 PUSH2 0x5BD JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x3791C6C90C276D011B4B885C0BFBA0554342ACF50A539BACA1B06F070AF25FF4 DUP3 DUP7 DUP7 DUP10 DUP8 PUSH1 0x40 MLOAD PUSH2 0x606 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2456 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC7B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xCEC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD11 PUSH2 0x1595 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xD28 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0xD42 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xD5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE29 JUMPI PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xD77 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xD8C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C14 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xDB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24DF JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xDC1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD GT PUSH2 0xDE5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x255F JUMP JUMPDEST PUSH2 0xE21 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xDF4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xE09 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C14 JUMP JUMPDEST DUP5 DUP5 DUP5 DUP2 DUP2 LT PUSH2 0xE15 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1599 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD61 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x430 JUMP JUMPDEST PUSH2 0xE65 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0xE81 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xEA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x256F JUMP JUMPDEST DUP1 PUSH2 0xEC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x250F JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xEF6 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2434 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF24 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xF48 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1E88 JUMP JUMPDEST PUSH2 0xF64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x25AF JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD DUP3 PUSH1 0x40 MLOAD PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1005 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1029 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1077 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x108B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x10AF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x10F3 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0xA PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x117A JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x1166 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x60 DUP3 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x11C4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x11B1 PUSH2 0x1B6A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x11A9 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1249 JUMPI PUSH1 0x9 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x11E2 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1236 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x11CA JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1269 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x1285 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH2 0x643 DUP2 PUSH2 0x1ADB JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 DUP6 DUP9 DUP9 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x12BB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2365 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1527 JUMPI DUP5 PUSH1 0x1 EQ ISZERO PUSH2 0x139F JUMPI PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7D2FBB8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND SWAP5 PUSH4 0xFA5F771E SWAP5 PUSH2 0x1346 SWAP5 SWAP1 DUP3 AND SWAP4 SWAP1 DUP3 AND SWAP3 DUP16 SWAP3 DUP16 SWAP3 DUP16 SWAP3 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x23CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1374 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1398 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C32 JUMP JUMPDEST SWAP2 POP PUSH2 0x1495 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x546344F0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 DUP12 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1440 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x145A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x146E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1492 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C32 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP8 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP5 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x9 DUP7 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SSTORE SWAP4 MLOAD PUSH1 0x1 DUP1 DUP9 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH1 0x2 SWAP1 SWAP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP7 DUP5 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP6 SSTORE SWAP1 DUP14 AND DUP3 MSTORE PUSH1 0xA DUP4 MSTORE DUP5 DUP3 KECCAK256 DUP1 SLOAD DUP1 DUP7 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE DUP4 DUP4 KECCAK256 ADD DUP7 SWAP1 SSTORE DUP2 MSTORE PUSH1 0xB SWAP1 SWAP2 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1573 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24FF JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1AD2 JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x15BD JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC49EDE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xCC49EDE7 SWAP1 PUSH2 0x15F6 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x23BE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x160E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1622 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1646 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C32 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x17FC JUMPI PUSH1 0x0 DUP2 SWAP1 POP DUP9 DUP8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1697 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x16CF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1708 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x171C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1740 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST DUP12 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1755 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2365 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x60 DUP5 ADD DUP4 MSTORE DUP11 DUP5 MSTORE DUP2 DUP5 ADD DUP13 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP7 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 DUP8 MSTORE DUP8 DUP2 KECCAK256 SWAP9 MLOAD DUP10 SSTORE SWAP4 MLOAD PUSH1 0x1 DUP1 DUP11 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH1 0x2 SWAP1 SWAP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP9 DUP5 AND SWAP9 SWAP1 SWAP9 OR SWAP1 SWAP8 SSTORE SWAP1 DUP16 AND DUP3 MSTORE PUSH1 0xA DUP5 MSTORE DUP5 DUP3 KECCAK256 DUP1 SLOAD DUP1 DUP9 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE DUP5 DUP4 KECCAK256 ADD DUP4 SWAP1 SSTORE DUP2 MSTORE PUSH1 0xB SWAP1 SWAP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SWAP5 POP POP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x180B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xC810A3E3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC810A3E3 SWAP1 PUSH2 0x1844 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x23BE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x185C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1870 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1894 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C32 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x1AC8 JUMPI PUSH1 0x0 DUP2 SWAP1 POP DUP10 DUP8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x191D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1956 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x196A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x198E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x19A3 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2365 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP6 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0x9 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0xA PUSH1 0x0 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP7 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE POP PUSH1 0x1 PUSH1 0xB PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x15A6 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1B01 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24EF JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 PUSH3 0x10000 SWAP1 SWAP4 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x10B6 DUP2 PUSH2 0x2662 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B6 DUP2 PUSH2 0x2662 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1BD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1BEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B6 DUP2 PUSH2 0x2676 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x10B6 DUP2 PUSH2 0x267F JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B6 DUP2 PUSH2 0x267F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1B94 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1B9F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1C6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C78 DUP12 DUP12 PUSH2 0x1B94 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x1C89 DUP12 DUP3 DUP13 ADD PUSH2 0x1B94 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x1C9A DUP12 DUP3 DUP13 ADD PUSH2 0x1B94 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x1CAB DUP12 DUP3 DUP13 ADD PUSH2 0x1B94 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x1CBC DUP12 DUP3 DUP13 ADD PUSH2 0x1B94 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x1CCD DUP12 DUP3 DUP13 ADD PUSH2 0x1B94 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1CEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CF6 DUP12 DUP3 DUP13 ADD PUSH2 0x1BAA JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1D27 DUP6 DUP6 PUSH2 0x1B94 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1D38 DUP6 DUP3 DUP7 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1D58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1D64 DUP8 DUP8 PUSH2 0x1B94 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x1D75 DUP8 DUP3 DUP9 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x1D86 DUP8 DUP3 DUP9 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x1D97 DUP8 DUP3 DUP9 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1DBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1DC7 DUP9 DUP9 PUSH2 0x1B94 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x1DD8 DUP9 DUP3 DUP10 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x1DE9 DUP9 DUP3 DUP10 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x1DFA DUP9 DUP3 DUP10 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x1E0B DUP9 DUP3 DUP10 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1E2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E51 DUP8 DUP3 DUP9 ADD PUSH2 0x1BAA JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E7C DUP8 DUP3 DUP9 ADD PUSH2 0x1BAA JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1BF3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1BFE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EEE DUP4 DUP4 PUSH2 0x2314 JUMP JUMPDEST POP POP PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1EFF DUP2 PUSH2 0x2626 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1EFF PUSH2 0x1F11 DUP3 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x2650 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F21 DUP3 PUSH2 0x2619 JUMP JUMPDEST PUSH2 0x1F2B DUP2 DUP6 PUSH2 0x261D JUMP JUMPDEST SWAP4 POP PUSH2 0x1F36 DUP4 PUSH2 0x2613 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F64 JUMPI DUP2 MLOAD PUSH2 0x1F4E DUP9 DUP3 PUSH2 0x1EE2 JUMP JUMPDEST SWAP8 POP PUSH2 0x1F59 DUP4 PUSH2 0x2613 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1F3A JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1EFF DUP2 PUSH2 0x2631 JUMP JUMPDEST PUSH2 0x1EFF DUP2 PUSH2 0x2645 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F8E PUSH1 0x20 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x56657374696E67207265676973747279206164647265737320696E76616C6964 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FC7 PUSH1 0x1F DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x746F6B656E206F776E65722063616E6E6F742062652030206164647265737300 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2000 PUSH1 0x26 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2048 PUSH1 0x1E DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x76657374696E67466163746F7279206164647265737320696E76616C69640000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2081 PUSH1 0xE DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20AB PUSH1 0x17 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x76657374696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20E4 PUSH1 0x1C DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x76657374696E674F776E6572206164647265737320696E76616C696400000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x211D PUSH1 0x2E DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 DUP2 MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x216D PUSH1 0xC DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2195 PUSH1 0x2C DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x76657374696E67206372656174696F6E2074797065206D757374206265206772 DUP2 MSTORE PUSH12 0x6561746572207468616E203 PUSH1 0xA4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21E3 PUSH1 0x18 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x221C PUSH1 0x1F DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x66656553686172696E6750726F7879206164647265737320696E76616C696400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2255 PUSH1 0x19 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x4C6F636B6564534F56206164647265737320696E76616C696400000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x228E PUSH1 0x17 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x7374616B696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22C7 PUSH1 0xF DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH15 0x1D1C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22F2 PUSH1 0x13 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH19 0x14D3D5881859191C995CDCC81A5B9D985B1A59 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x2325 DUP5 DUP3 PUSH2 0x234B JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2338 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x234B JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4E0 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x1EFF DUP2 PUSH2 0x2642 JUMP JUMPDEST PUSH2 0x1EFF PUSH2 0x2360 DUP3 PUSH2 0x2642 JUMP JUMPDEST PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2371 DUP3 DUP9 PUSH2 0x1F05 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x2381 DUP3 DUP8 PUSH2 0x2354 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x2391 DUP3 DUP7 PUSH2 0x2354 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x23A1 DUP3 DUP6 PUSH2 0x2354 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x23B1 DUP3 DUP5 PUSH2 0x2354 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x1EF6 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x23DA DUP3 DUP11 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x23E7 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x23F4 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x2401 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x240E PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x241B PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x2428 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x1EF6 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2442 DUP3 DUP6 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x244F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x234B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x2464 DUP3 DUP9 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x2471 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x247E PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x248B PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x2498 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x234B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x244F DUP2 DUP5 PUSH2 0x1F16 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x1F6F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x1F78 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x1F81 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x1FBA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x1FF3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x203B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2074 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x209E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x20D7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2110 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2160 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2188 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x21D6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x220F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2248 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2281 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x22BA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x22E5 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x234B JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2442 DUP3 DUP6 PUSH2 0x234B JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x25F9 DUP3 DUP7 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x2606 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x483 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1EF6 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH2 0x2636 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH2 0x2626 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x266B DUP2 PUSH2 0x2626 JUMP JUMPDEST DUP2 EQ PUSH2 0x643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x266B DUP2 PUSH2 0x2631 JUMP JUMPDEST PUSH2 0x266B DUP2 PUSH2 0x2642 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xCC POP 0xA6 0x4B DUP6 0xBE DUP10 PUSH24 0x8778CAC83274F5609B4B2F01FF897B8D550F02D9B452C53D PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "226:10816:82:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;;-1:-1:-1;;;;;713:18:142;;;;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;226:10816:82;;780:87:137;853:10;780:87;:::o;226:10816:82:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063c680c0b7116100a2578063efb9573311610071578063efb95733146103e7578063f2f46b3b14610407578063f2fde38b1461040f578063f60826ee14610422576101da565b8063c680c0b71461038e578063cc49ede7146103a1578063dbb049d1146103b4578063dfb9366d146103c7576101da565b8063b810c648116100de578063b810c6481461034d578063bd7b590814610360578063c0e0985214610368578063c36519d11461037b576101da565b80638da5cb5b1461031c5780638dedf009146103245780638f32d59b14610345576101da565b806342a82b4f1161017c57806379a83f5a1161014b57806379a83f5a146102b4578063821bee73146102c7578063842a49d5146102e9578063862e229d14610309576101da565b806342a82b4f1461027e5780634cf088d9146102915780636a26b57f1461029957806370480275146102a1576101da565b80631785f53c116101b85780631785f53c146102255780631f50932614610238578063377220fd1461024b578063429b62e51461025e576101da565b806302df0476146101df5780630665a06f1461020857806308dcb3601461021d575b600080fd5b6101f26101ed366004611d42565b61042a565b6040516101ff91906123be565b60405180910390f35b61021b610216366004611d42565b61048b565b005b6101f26104e6565b61021b610233366004611c14565b6104f5565b61021b610246366004611da3565b610574565b61021b610259366004611c14565b610616565b61027161026c366004611c14565b610646565b6040516101ff91906124b3565b61021b61028c366004611c50565b61065b565b6101f26108ca565b6101f26108d9565b61021b6102af366004611c14565b6108e8565b61021b6102c2366004611d08565b610961565b6102da6102d5366004611ea6565b610b0d565b6040516101ff939291906125eb565b6102fc6102f7366004611ea6565b610b37565b6040516101ff91906124c1565b61021b610317366004611da3565b610b5e565b6101f2610bed565b610337610332366004611c14565b610c02565b6040516101ff9291906125dd565b610271610cf6565b61021b61035b366004611e18565b610d20565b6101f2610e30565b610271610376366004611c14565b610e3f565b6101f2610389366004611d42565b610e54565b61021b61039c366004611d08565b610e5d565b6101f26103af366004611c14565b610f9d565b6102716103c2366004611c14565b6110bc565b6103da6103d5366004611d08565b6110da565b6040516101ff91906125cf565b6103fa6103f5366004611c14565b611108565b6040516101ff91906124a2565b6102fc611252565b61021b61041d366004611c14565b611261565b6102fc61128e565b60008060015b90506000868287878760405160200161044d959493929190612365565b60408051601f198184030181529181528151602092830120600090815260099092529020600201546001600160a01b0316925050505b949350505050565b610493610cf6565b806104ad57503360009081526001602052604090205460ff165b6104d25760405162461bcd60e51b81526004016104c99061254f565b60405180910390fd5b6104e0848484846000610574565b50505050565b6005546001600160a01b031681565b6104fd610cf6565b6105195760405162461bcd60e51b81526004016104c99061254f565b6001600160a01b03811660009081526001602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f906105699083906123be565b60405180910390a150565b61057c610cf6565b8061059657503360009081526001602052604090205460ff165b6105b25760405162461bcd60e51b81526004016104c99061254f565b60006105c386858560015b8661129d565b9050856001600160a01b03167fd6fcfd83804f6b6b63260c7b99eb10060bc1319dbc9177fb6defc7bd614017bf8286868987604051610606959493929190612456565b60405180910390a2505050505050565b61061e610cf6565b61063a5760405162461bcd60e51b81526004016104c99061254f565b6106438161154d565b50565b60016020526000908152604090205460ff1681565b610663610cf6565b61067f5760405162461bcd60e51b81526004016104c99061254f565b600054610100900460ff1680610698575060005460ff16155b6106b45760405162461bcd60e51b81526004016104c99061253f565b600054610100900460ff161580156106df576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0388166107055760405162461bcd60e51b81526004016104c9906125bf565b6001600160a01b03871661072b5760405162461bcd60e51b81526004016104c99061259f565b6001600160a01b0386166107515760405162461bcd60e51b81526004016104c99061257f565b6001600160a01b0385166107775760405162461bcd60e51b81526004016104c99061252f565b6001600160a01b03841661079d5760405162461bcd60e51b81526004016104c99061258f565b6107a68961154d565b600580546001600160a01b03199081166001600160a01b038b8116919091179092556006805482168a84161790556007805482168984161790556008805482168884161790556003805490911691861691909117905560005b828110156108ac57600084848381811061081557fe5b905060200201602061082a9190810190611c14565b6001600160a01b031614156108515760405162461bcd60e51b81526004016104c9906124cf565b600484848381811061085f57fe5b90506020020160206108749190810190611c14565b815460018082018455600093845260209093200180546001600160a01b0319166001600160a01b0392909216919091179055016107ff565b5080156108bf576000805461ff00191690555b505050505050505050565b6006546001600160a01b031681565b6007546001600160a01b031681565b6108f0610cf6565b61090c5760405162461bcd60e51b81526004016104c99061254f565b6001600160a01b038116600090815260016020819052604091829020805460ff19169091179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339906105699083906123be565b610969610cf6565b8061098357503360009081526001602052604090205460ff165b61099f5760405162461bcd60e51b81526004016104c99061254f565b6001600160a01b0382166109c55760405162461bcd60e51b81526004016104c99061251f565b600081116109e55760405162461bcd60e51b81526004016104c99061250f565b60055460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390610a179085908590600401612434565b602060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a699190810190611e88565b50604051637547c7a360e01b81526001600160a01b03831690637547c7a390610a969084906004016125cf565b600060405180830381600087803b158015610ab057600080fd5b505af1158015610ac4573d6000803e3d6000fd5b50505050816001600160a01b03167fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef82604051610b0191906125cf565b60405180910390a25050565b6009602052600090815260409020805460018201546002909201549091906001600160a01b031683565b60048181548110610b4457fe5b6000918252602090912001546001600160a01b0316905081565b610b66610cf6565b80610b8057503360009081526001602052604090205460ff165b610b9c5760405162461bcd60e51b81526004016104c99061254f565b6000610baa868585846105bd565b9050856001600160a01b03167f3791c6c90c276d011b4b885c0bfba0554342acf50a539baca1b06f070af25ff48286868987604051610606959493929190612456565b6000546201000090046001600160a01b031690565b6000806000839050806001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4357600080fd5b505afa158015610c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7b9190810190611ec4565b816001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b158015610cb457600080fd5b505afa158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cec9190810190611ec4565b9250925050915091565b600080546201000090046001600160a01b0316610d11611595565b6001600160a01b031614905090565b610d28610cf6565b80610d4257503360009081526001602052604090205460ff165b610d5e5760405162461bcd60e51b81526004016104c99061254f565b60005b83811015610e29576000858583818110610d7757fe5b9050602002016020610d8c9190810190611c14565b6001600160a01b03161415610db35760405162461bcd60e51b81526004016104c9906124df565b6000838383818110610dc157fe5b9050602002013511610de55760405162461bcd60e51b81526004016104c99061255f565b610e21858583818110610df457fe5b9050602002016020610e099190810190611c14565b848484818110610e1557fe5b90506020020135611599565b600101610d61565b5050505050565b6008546001600160a01b031681565b600b6020526000908152604090205460ff1681565b60008080610430565b610e65610cf6565b610e815760405162461bcd60e51b81526004016104c99061254f565b6001600160a01b038216610ea75760405162461bcd60e51b81526004016104c99061256f565b80610ec45760405162461bcd60e51b81526004016104c99061250f565b60055460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610ef69085908590600401612434565b602060405180830381600087803b158015610f1057600080fd5b505af1158015610f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f489190810190611e88565b610f645760405162461bcd60e51b81526004016104c9906125af565b816001600160a01b03167fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad82604051610b0191906125cf565b60006110b682600360009054906101000a90046001600160a01b03166001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110299190810190611ec4565b600360009054906101000a90046001600160a01b03166001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561107757600080fd5b505afa15801561108b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110af9190810190611ec4565b600061042a565b92915050565b6001600160a01b03166000908152600b602052604090205460ff1690565b600a60205281600052604060002081815481106110f357fe5b90600052602060002001600091509150505481565b606080600a6000846001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561117a57602002820191906000526020600020905b815481526020019060010190808311611166575b50505050509050600081519050606082516040519080825280602002602001820160405280156111c457816020015b6111b1611b6a565b8152602001906001900390816111a95790505b50905060005b8281101561124957600960008583815181106111e257fe5b6020908102919091018101518252818101929092526040908101600020815160608101835281548152600182015493810193909352600201546001600160a01b031690820152825183908390811061123657fe5b60209081029190910101526001016111ca565b50949350505050565b6003546001600160a01b031681565b611269610cf6565b6112855760405162461bcd60e51b81526004016104c99061254f565b61064381611adb565b6002546001600160a01b031681565b600080600087858888876040516020016112bb959493929190612365565b60408051601f198184030181529181528151602092830120600081815260099093529120600201549091506001600160a01b031661152757846001141561139f57600254600554600654600754604051637d2fbb8f60e11b81526001600160a01b039485169463fa5f771e946113469490821693908216928f928f928f9291169084906004016123cc565b602060405180830381600087803b15801561136057600080fd5b505af1158015611374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113989190810190611c32565b9150611495565b600260009054906101000a90046001600160a01b03166001600160a01b031663546344f0600560009054906101000a90046001600160a01b0316600660009054906101000a90046001600160a01b03168b8b8b600760009054906101000a90046001600160a01b0316600860009054906101000a90046001600160a01b03166040518863ffffffff1660e01b815260040161144097969594939291906123cc565b602060405180830381600087803b15801561145a57600080fd5b505af115801561146e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114929190810190611c32565b91505b6040805160608101825286815260208082018781526001600160a01b038681168486018181526000888152600986528781209651875593516001808801919091559051600290960180546001600160a01b03191696841696909617909555908d168252600a835284822080548086018255908352838320018690558152600b90915291909120805460ff191690911790555b6000908152600960205260409020600201546001600160a01b0316979650505050505050565b6001600160a01b0381166115735760405162461bcd60e51b81526004016104c9906124ff565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6004546001906000908190815b81811015611ad2576000600482815481106115bd57fe5b60009182526020909120015460405163cc49ede760e01b81526001600160a01b039091169063cc49ede7906115f6908b906004016123be565b60206040518083038186803b15801561160e57600080fd5b505afa158015611622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116469190810190611c32565b90506001600160a01b038116156117fc5760008190508887826001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b15801561169757600080fd5b505afa1580156116ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116cf9190810190611ec4565b836001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561170857600080fd5b505afa15801561171c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117409190810190611ec4565b8b604051602001611755959493929190612365565b60408051808303601f1901815282825280516020918201206060840183528a84528184018c81526001600160a01b038781168686018181526000858152600987528781209851895593516001808a01919091559051600290980180546001600160a01b03191698841698909817909755908f168252600a845284822080548088018255908352848320018390558152600b909252919020805460ff19169092179091559450505b60006004838154811061180b57fe5b60009182526020909120015460405163c810a3e360e01b81526001600160a01b039091169063c810a3e390611844908c906004016123be565b60206040518083038186803b15801561185c57600080fd5b505afa158015611870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118949190810190611c32565b90506001600160a01b03811615611ac85760008190508987826001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e557600080fd5b505afa1580156118f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061191d9190810190611ec4565b836001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561195657600080fd5b505afa15801561196a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061198e9190810190611ec4565b8c6040516020016119a3959493929190612365565b6040516020818303038152906040528051906020012060001c955060405180606001604052808881526020018a8152602001836001600160a01b031681525060096000888152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050600a60008b6001600160a01b03166001600160a01b031681526020019081526020016000208690806001815401808255809150509060018203906000526020600020016000909192909190915055506001600b6000846001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550505b50506001016115a6565b50505050505050565b6001600160a01b038116611b015760405162461bcd60e51b81526004016104c9906124ef565b600080546040516001600160a01b03808516936201000090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6040518060600160405280600081526020016000815260200160006001600160a01b031681525090565b80356110b681612662565b80516110b681612662565b60008083601f840112611bbc57600080fd5b50813567ffffffffffffffff811115611bd457600080fd5b602083019150836020820283011115611bec57600080fd5b9250929050565b80516110b681612676565b80356110b68161267f565b80516110b68161267f565b600060208284031215611c2657600080fd5b60006104838484611b94565b600060208284031215611c4457600080fd5b60006104838484611b9f565b60008060008060008060008060e0898b031215611c6c57600080fd5b6000611c788b8b611b94565b9850506020611c898b828c01611b94565b9750506040611c9a8b828c01611b94565b9650506060611cab8b828c01611b94565b9550506080611cbc8b828c01611b94565b94505060a0611ccd8b828c01611b94565b93505060c089013567ffffffffffffffff811115611cea57600080fd5b611cf68b828c01611baa565b92509250509295985092959890939650565b60008060408385031215611d1b57600080fd5b6000611d278585611b94565b9250506020611d3885828601611bfe565b9150509250929050565b60008060008060808587031215611d5857600080fd5b6000611d648787611b94565b9450506020611d7587828801611bfe565b9350506040611d8687828801611bfe565b9250506060611d9787828801611bfe565b91505092959194509250565b600080600080600060a08688031215611dbb57600080fd5b6000611dc78888611b94565b9550506020611dd888828901611bfe565b9450506040611de988828901611bfe565b9350506060611dfa88828901611bfe565b9250506080611e0b88828901611bfe565b9150509295509295909350565b60008060008060408587031215611e2e57600080fd5b843567ffffffffffffffff811115611e4557600080fd5b611e5187828801611baa565b9450945050602085013567ffffffffffffffff811115611e7057600080fd5b611e7c87828801611baa565b95989497509550505050565b600060208284031215611e9a57600080fd5b60006104838484611bf3565b600060208284031215611eb857600080fd5b60006104838484611bfe565b600060208284031215611ed657600080fd5b60006104838484611c09565b6000611eee8383612314565b505060600190565b611eff81612626565b82525050565b611eff611f1182612626565b612650565b6000611f2182612619565b611f2b818561261d565b9350611f3683612613565b8060005b83811015611f64578151611f4e8882611ee2565b9750611f5983612613565b925050600101611f3a565b509495945050505050565b611eff81612631565b611eff81612645565b6000611f8e60208361261d565b7f56657374696e67207265676973747279206164647265737320696e76616c6964815260200192915050565b6000611fc7601f8361261d565b7f746f6b656e206f776e65722063616e6e6f742062652030206164647265737300815260200192915050565b600061200060268361261d565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000612048601e8361261d565b7f76657374696e67466163746f7279206164647265737320696e76616c69640000815260200192915050565b6000612081600e8361261d565b6d185b5bdd5b9d081a5b9d985b1a5960921b815260200192915050565b60006120ab60178361261d565b7f76657374696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b60006120e4601c8361261d565b7f76657374696e674f776e6572206164647265737320696e76616c696400000000815260200192915050565b600061211d602e8361261d565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015260400192915050565b600061216d600c8361261d565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000612195602c8361261d565b7f76657374696e67206372656174696f6e2074797065206d75737420626520677281526b06561746572207468616e20360a41b602082015260400192915050565b60006121e360188361261d565b7f7265636569766572206164647265737320696e76616c69640000000000000000815260200192915050565b600061221c601f8361261d565b7f66656553686172696e6750726f7879206164647265737320696e76616c696400815260200192915050565b600061225560198361261d565b7f4c6f636b6564534f56206164647265737320696e76616c696400000000000000815260200192915050565b600061228e60178361261d565b7f7374616b696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b60006122c7600f8361261d565b6e1d1c985b9cd9995c8819985a5b1959608a1b815260200192915050565b60006122f260138361261d565b7214d3d5881859191c995cdcc81a5b9d985b1a59606a1b815260200192915050565b80516060830190612325848261234b565b506020820151612338602085018261234b565b5060408201516104e06040850182611ef6565b611eff81612642565b611eff61236082612642565b612642565b60006123718288611f05565b6014820191506123818287612354565b6020820191506123918286612354565b6020820191506123a18285612354565b6020820191506123b18284612354565b5060200195945050505050565b602081016110b68284611ef6565b60e081016123da828a611ef6565b6123e76020830189611ef6565b6123f46040830188611ef6565b612401606083018761234b565b61240e608083018661234b565b61241b60a0830185611ef6565b61242860c0830184611ef6565b98975050505050505050565b604081016124428285611ef6565b61244f602083018461234b565b9392505050565b60a081016124648288611ef6565b612471602083018761234b565b61247e604083018661234b565b61248b606083018561234b565b612498608083018461234b565b9695505050505050565b6020808252810161244f8184611f16565b602081016110b68284611f6f565b602081016110b68284611f78565b602080825281016110b681611f81565b602080825281016110b681611fba565b602080825281016110b681611ff3565b602080825281016110b68161203b565b602080825281016110b681612074565b602080825281016110b68161209e565b602080825281016110b6816120d7565b602080825281016110b681612110565b602080825281016110b681612160565b602080825281016110b681612188565b602080825281016110b6816121d6565b602080825281016110b68161220f565b602080825281016110b681612248565b602080825281016110b681612281565b602080825281016110b6816122ba565b602080825281016110b6816122e5565b602081016110b6828461234b565b60408101612442828561234b565b606081016125f9828661234b565b612606602083018561234b565b6104836040830184611ef6565b60200190565b5190565b90815260200190565b60006110b682612636565b151590565b6001600160a01b031690565b90565b60006110b682612626565b60006110b68260006110b68260601b90565b61266b81612626565b811461064357600080fd5b61266b81612631565b61266b8161264256fea365627a7a72315820cc50a64b85be89778778cac83274f5609b4b2f01ff897b8d550f02d9b452c53d6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xC680C0B7 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xEFB95733 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xEFB95733 EQ PUSH2 0x3E7 JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x407 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x422 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xCC49EDE7 EQ PUSH2 0x3A1 JUMPI DUP1 PUSH4 0xDBB049D1 EQ PUSH2 0x3B4 JUMPI DUP1 PUSH4 0xDFB9366D EQ PUSH2 0x3C7 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xB810C648 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xB810C648 EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0xC0E09852 EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0xC36519D1 EQ PUSH2 0x37B JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x31C JUMPI DUP1 PUSH4 0x8DEDF009 EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x345 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x42A82B4F GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x79A83F5A GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x79A83F5A EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0x821BEE73 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x842A49D5 EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0x862E229D EQ PUSH2 0x309 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x42A82B4F EQ PUSH2 0x27E JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x2A1 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x1F509326 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0x377220FD EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x25E JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x2DF0476 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x665A06F EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x21D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x1D42 JUMP JUMPDEST PUSH2 0x42A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21B PUSH2 0x216 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D42 JUMP JUMPDEST PUSH2 0x48B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F2 PUSH2 0x4E6 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x4F5 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x246 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DA3 JUMP JUMPDEST PUSH2 0x574 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x259 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x616 JUMP JUMPDEST PUSH2 0x271 PUSH2 0x26C CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x646 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x24B3 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x28C CALLDATASIZE PUSH1 0x4 PUSH2 0x1C50 JUMP JUMPDEST PUSH2 0x65B JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x8CA JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x2AF CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D08 JUMP JUMPDEST PUSH2 0x961 JUMP JUMPDEST PUSH2 0x2DA PUSH2 0x2D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EA6 JUMP JUMPDEST PUSH2 0xB0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x25EB JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x2F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EA6 JUMP JUMPDEST PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x24C1 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x317 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DA3 JUMP JUMPDEST PUSH2 0xB5E JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0xBED JUMP JUMPDEST PUSH2 0x337 PUSH2 0x332 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP3 SWAP2 SWAP1 PUSH2 0x25DD JUMP JUMPDEST PUSH2 0x271 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x35B CALLDATASIZE PUSH1 0x4 PUSH2 0x1E18 JUMP JUMPDEST PUSH2 0xD20 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0xE30 JUMP JUMPDEST PUSH2 0x271 PUSH2 0x376 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x389 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D42 JUMP JUMPDEST PUSH2 0xE54 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x39C CALLDATASIZE PUSH1 0x4 PUSH2 0x1D08 JUMP JUMPDEST PUSH2 0xE5D JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x3AF CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0xF9D JUMP JUMPDEST PUSH2 0x271 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x3DA PUSH2 0x3D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D08 JUMP JUMPDEST PUSH2 0x10DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH2 0x3FA PUSH2 0x3F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x1108 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x24A2 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x1252 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x41D CALLDATASIZE PUSH1 0x4 PUSH2 0x1C14 JUMP JUMPDEST PUSH2 0x1261 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x128E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x44D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2365 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 SWAP1 SWAP3 MSTORE SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x493 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0x4AD JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x4D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4E0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x574 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x4FD PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x519 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0x569 SWAP1 DUP4 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x57C PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0x596 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x5B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C3 DUP7 DUP6 DUP6 PUSH1 0x1 JUMPDEST DUP7 PUSH2 0x129D JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xD6FCFD83804F6B6B63260C7B99EB10060BC1319DBC9177FB6DEFC7BD614017BF DUP3 DUP7 DUP7 DUP10 DUP8 PUSH1 0x40 MLOAD PUSH2 0x606 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2456 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x61E PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x63A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH2 0x643 DUP2 PUSH2 0x154D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x663 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x67F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x698 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x6B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x253F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0x705 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x25BF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x72B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x259F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x751 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x257F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x777 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x252F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x79D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x258F JUMP JUMPDEST PUSH2 0x7A6 DUP10 PUSH2 0x154D JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD DUP3 AND DUP11 DUP5 AND OR SWAP1 SSTORE PUSH1 0x7 DUP1 SLOAD DUP3 AND DUP10 DUP5 AND OR SWAP1 SSTORE PUSH1 0x8 DUP1 SLOAD DUP3 AND DUP9 DUP5 AND OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP1 SWAP2 AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x8AC JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x815 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x82A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C14 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x851 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x4 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x85F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x874 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C14 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE ADD PUSH2 0x7FF JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x8BF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x8F0 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x90C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0x569 SWAP1 DUP4 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH2 0x969 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0x983 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x99F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x9C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x251F JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x9E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x250F JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0xA17 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2434 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xA69 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1E88 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x7547C7A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x7547C7A3 SWAP1 PUSH2 0xA96 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF DUP3 PUSH1 0x40 MLOAD PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xB44 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH2 0xB66 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0xB80 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xB9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBAA DUP7 DUP6 DUP6 DUP5 PUSH2 0x5BD JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x3791C6C90C276D011B4B885C0BFBA0554342ACF50A539BACA1B06F070AF25FF4 DUP3 DUP7 DUP7 DUP10 DUP8 PUSH1 0x40 MLOAD PUSH2 0x606 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2456 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC7B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xCEC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD11 PUSH2 0x1595 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xD28 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0xD42 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xD5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE29 JUMPI PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xD77 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xD8C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C14 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xDB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24DF JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xDC1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD GT PUSH2 0xDE5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x255F JUMP JUMPDEST PUSH2 0xE21 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xDF4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xE09 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C14 JUMP JUMPDEST DUP5 DUP5 DUP5 DUP2 DUP2 LT PUSH2 0xE15 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1599 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD61 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x430 JUMP JUMPDEST PUSH2 0xE65 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0xE81 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xEA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x256F JUMP JUMPDEST DUP1 PUSH2 0xEC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x250F JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xEF6 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2434 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF24 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xF48 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1E88 JUMP JUMPDEST PUSH2 0xF64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x25AF JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD DUP3 PUSH1 0x40 MLOAD PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x25CF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1005 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1029 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1077 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x108B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x10AF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x10F3 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0xA PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x117A JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x1166 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x60 DUP3 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x11C4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x11B1 PUSH2 0x1B6A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x11A9 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1249 JUMPI PUSH1 0x9 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x11E2 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1236 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x11CA JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1269 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x1285 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x254F JUMP JUMPDEST PUSH2 0x643 DUP2 PUSH2 0x1ADB JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 DUP6 DUP9 DUP9 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x12BB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2365 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1527 JUMPI DUP5 PUSH1 0x1 EQ ISZERO PUSH2 0x139F JUMPI PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7D2FBB8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND SWAP5 PUSH4 0xFA5F771E SWAP5 PUSH2 0x1346 SWAP5 SWAP1 DUP3 AND SWAP4 SWAP1 DUP3 AND SWAP3 DUP16 SWAP3 DUP16 SWAP3 DUP16 SWAP3 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x23CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1374 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1398 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C32 JUMP JUMPDEST SWAP2 POP PUSH2 0x1495 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x546344F0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 DUP12 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1440 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x145A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x146E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1492 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C32 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP8 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP5 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x9 DUP7 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SSTORE SWAP4 MLOAD PUSH1 0x1 DUP1 DUP9 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH1 0x2 SWAP1 SWAP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP7 DUP5 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP6 SSTORE SWAP1 DUP14 AND DUP3 MSTORE PUSH1 0xA DUP4 MSTORE DUP5 DUP3 KECCAK256 DUP1 SLOAD DUP1 DUP7 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE DUP4 DUP4 KECCAK256 ADD DUP7 SWAP1 SSTORE DUP2 MSTORE PUSH1 0xB SWAP1 SWAP2 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1573 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24FF JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1AD2 JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x15BD JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC49EDE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xCC49EDE7 SWAP1 PUSH2 0x15F6 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x23BE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x160E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1622 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1646 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C32 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x17FC JUMPI PUSH1 0x0 DUP2 SWAP1 POP DUP9 DUP8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1697 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x16CF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1708 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x171C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1740 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST DUP12 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1755 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2365 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x60 DUP5 ADD DUP4 MSTORE DUP11 DUP5 MSTORE DUP2 DUP5 ADD DUP13 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP7 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 DUP8 MSTORE DUP8 DUP2 KECCAK256 SWAP9 MLOAD DUP10 SSTORE SWAP4 MLOAD PUSH1 0x1 DUP1 DUP11 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH1 0x2 SWAP1 SWAP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP9 DUP5 AND SWAP9 SWAP1 SWAP9 OR SWAP1 SWAP8 SSTORE SWAP1 DUP16 AND DUP3 MSTORE PUSH1 0xA DUP5 MSTORE DUP5 DUP3 KECCAK256 DUP1 SLOAD DUP1 DUP9 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE DUP5 DUP4 KECCAK256 ADD DUP4 SWAP1 SSTORE DUP2 MSTORE PUSH1 0xB SWAP1 SWAP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SWAP5 POP POP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x180B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xC810A3E3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC810A3E3 SWAP1 PUSH2 0x1844 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x23BE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x185C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1870 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1894 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C32 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x1AC8 JUMPI PUSH1 0x0 DUP2 SWAP1 POP DUP10 DUP8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x191D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1956 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x196A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x198E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EC4 JUMP JUMPDEST DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x19A3 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2365 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP6 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0x9 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0xA PUSH1 0x0 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP7 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE POP PUSH1 0x1 PUSH1 0xB PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x15A6 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1B01 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24EF JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 PUSH3 0x10000 SWAP1 SWAP4 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x10B6 DUP2 PUSH2 0x2662 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B6 DUP2 PUSH2 0x2662 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1BD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1BEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B6 DUP2 PUSH2 0x2676 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x10B6 DUP2 PUSH2 0x267F JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B6 DUP2 PUSH2 0x267F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1B94 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1B9F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1C6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C78 DUP12 DUP12 PUSH2 0x1B94 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x1C89 DUP12 DUP3 DUP13 ADD PUSH2 0x1B94 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x1C9A DUP12 DUP3 DUP13 ADD PUSH2 0x1B94 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x1CAB DUP12 DUP3 DUP13 ADD PUSH2 0x1B94 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x1CBC DUP12 DUP3 DUP13 ADD PUSH2 0x1B94 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x1CCD DUP12 DUP3 DUP13 ADD PUSH2 0x1B94 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1CEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CF6 DUP12 DUP3 DUP13 ADD PUSH2 0x1BAA JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1D27 DUP6 DUP6 PUSH2 0x1B94 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1D38 DUP6 DUP3 DUP7 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1D58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1D64 DUP8 DUP8 PUSH2 0x1B94 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x1D75 DUP8 DUP3 DUP9 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x1D86 DUP8 DUP3 DUP9 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x1D97 DUP8 DUP3 DUP9 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1DBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1DC7 DUP9 DUP9 PUSH2 0x1B94 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x1DD8 DUP9 DUP3 DUP10 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x1DE9 DUP9 DUP3 DUP10 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x1DFA DUP9 DUP3 DUP10 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x1E0B DUP9 DUP3 DUP10 ADD PUSH2 0x1BFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1E2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E51 DUP8 DUP3 DUP9 ADD PUSH2 0x1BAA JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E7C DUP8 DUP3 DUP9 ADD PUSH2 0x1BAA JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1BF3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1BFE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1ED6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EEE DUP4 DUP4 PUSH2 0x2314 JUMP JUMPDEST POP POP PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1EFF DUP2 PUSH2 0x2626 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1EFF PUSH2 0x1F11 DUP3 PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x2650 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F21 DUP3 PUSH2 0x2619 JUMP JUMPDEST PUSH2 0x1F2B DUP2 DUP6 PUSH2 0x261D JUMP JUMPDEST SWAP4 POP PUSH2 0x1F36 DUP4 PUSH2 0x2613 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F64 JUMPI DUP2 MLOAD PUSH2 0x1F4E DUP9 DUP3 PUSH2 0x1EE2 JUMP JUMPDEST SWAP8 POP PUSH2 0x1F59 DUP4 PUSH2 0x2613 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1F3A JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1EFF DUP2 PUSH2 0x2631 JUMP JUMPDEST PUSH2 0x1EFF DUP2 PUSH2 0x2645 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F8E PUSH1 0x20 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x56657374696E67207265676973747279206164647265737320696E76616C6964 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FC7 PUSH1 0x1F DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x746F6B656E206F776E65722063616E6E6F742062652030206164647265737300 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2000 PUSH1 0x26 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2048 PUSH1 0x1E DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x76657374696E67466163746F7279206164647265737320696E76616C69640000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2081 PUSH1 0xE DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20AB PUSH1 0x17 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x76657374696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20E4 PUSH1 0x1C DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x76657374696E674F776E6572206164647265737320696E76616C696400000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x211D PUSH1 0x2E DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 DUP2 MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x216D PUSH1 0xC DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2195 PUSH1 0x2C DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x76657374696E67206372656174696F6E2074797065206D757374206265206772 DUP2 MSTORE PUSH12 0x6561746572207468616E203 PUSH1 0xA4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21E3 PUSH1 0x18 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x221C PUSH1 0x1F DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x66656553686172696E6750726F7879206164647265737320696E76616C696400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2255 PUSH1 0x19 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x4C6F636B6564534F56206164647265737320696E76616C696400000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x228E PUSH1 0x17 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH32 0x7374616B696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22C7 PUSH1 0xF DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH15 0x1D1C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22F2 PUSH1 0x13 DUP4 PUSH2 0x261D JUMP JUMPDEST PUSH19 0x14D3D5881859191C995CDCC81A5B9D985B1A59 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x2325 DUP5 DUP3 PUSH2 0x234B JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2338 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x234B JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4E0 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x1EFF DUP2 PUSH2 0x2642 JUMP JUMPDEST PUSH2 0x1EFF PUSH2 0x2360 DUP3 PUSH2 0x2642 JUMP JUMPDEST PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2371 DUP3 DUP9 PUSH2 0x1F05 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x2381 DUP3 DUP8 PUSH2 0x2354 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x2391 DUP3 DUP7 PUSH2 0x2354 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x23A1 DUP3 DUP6 PUSH2 0x2354 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x23B1 DUP3 DUP5 PUSH2 0x2354 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x1EF6 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x23DA DUP3 DUP11 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x23E7 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x23F4 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x2401 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x240E PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x241B PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x2428 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x1EF6 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2442 DUP3 DUP6 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x244F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x234B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x2464 DUP3 DUP9 PUSH2 0x1EF6 JUMP JUMPDEST PUSH2 0x2471 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x247E PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x248B PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x2498 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x234B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x244F DUP2 DUP5 PUSH2 0x1F16 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x1F6F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x1F78 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x1F81 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x1FBA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x1FF3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x203B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2074 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x209E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x20D7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2110 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2160 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2188 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x21D6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x220F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2248 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2281 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x22BA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x22E5 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x234B JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2442 DUP3 DUP6 PUSH2 0x234B JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x25F9 DUP3 DUP7 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x2606 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x234B JUMP JUMPDEST PUSH2 0x483 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1EF6 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH2 0x2636 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH2 0x2626 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x266B DUP2 PUSH2 0x2626 JUMP JUMPDEST DUP2 EQ PUSH2 0x643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x266B DUP2 PUSH2 0x2631 JUMP JUMPDEST PUSH2 0x266B DUP2 PUSH2 0x2642 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xCC POP 0xA6 0x4B DUP6 0xBE DUP10 PUSH24 0x8778CAC83274F5609B4B2F01FF897B8D550F02D9B452C53D PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "226:10816:82:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;226:10816:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6745:357;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3885:200;;;;;;;;;:::i;:::-;;880:18:84;;;:::i;828:113:164:-;;;;;;;;;:::i;4405:389:82:-;;;;;;;;;:::i;1979:114::-;;;;;;;;;:::i;149:38:164:-;;;;;;;;;:::i;:::-;;;;;;;;889:969:82;;;;;;;;;:::i;943:22:84:-;;;:::i;999:30::-;;;:::i;599:107:164:-;;;;;;;;;:::i;5692:314:82:-;;;;;;;;;:::i;1447:43:84:-;;;;;;;;;:::i;:::-;;;;;;;;;;798;;;;;;;;;:::i;:::-;;;;;;;;5119:399:82;;;;;;;;;:::i;851:68:142:-;;;:::i;10621:216:82:-;;;;;;;;;:::i;:::-;;;;;;;;;1134:83:142;;;:::i;3054:426:82:-;;;;;;;;;:::i;1098:27:84:-;;;:::i;1791:41::-;;;;;;;;;:::i;7208:361:82:-;;;;;;;;;:::i;2596:302::-;;;;;;;;;:::i;6399:157::-;;;;;;;;;:::i;10906:134::-;;;;;;;;;:::i;1622:47:84:-;;;;;;;;;:::i;:::-;;;;;;;;10176:357:82;;;;;;;;;:::i;:::-;;;;;;;;725:26:84;;;:::i;1351:98:142:-;;;;;;;;;:::i;648:37:84:-;;;:::i;6745:357:82:-;6887:7;;6924:19;6916:28;6900:44;;6948:11;6997;7010:5;7017:6;7025:9;7036:20;6980:77;;;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;6980:77:82;;;6970:88;;49:4:-1;6970:88:82;;;;6962:97;7070:13;;;:8;:13;;;;;:28;;;-1:-1:-1;;;;;7070:28:82;;-1:-1:-1;;;6745:357:82;;;;;;;:::o;3885:200::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;;;;;;;;;4020:61:82;4038:11;4051:7;4060:6;4068:9;4079:1;4020:17;:61::i;:::-;3885:200;;;;:::o;880:18:84:-;;;-1:-1:-1;;;;;880:18:84;;:::o;828:113:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;886:14:164;;903:5;886:14;;;:6;:14;;;;;;;:22;;-1:-1:-1;;886:22:164;;;917:20;;;;;893:6;;917:20;;;;;;;;;;828:113;:::o;4405:389:82:-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;4574:15:82;4592:103;4612:11;4625:6;4633:9;4652:19;4644:28;4674:20;4592:19;:103::i;:::-;4574:121;;4719:11;-1:-1:-1;;;;;4704:86:82;;4732:7;4741:6;4749:9;4760:7;4769:20;4704:86;;;;;;;;;;;;;;;;;;;478:1:164;4405:389:82;;;;;:::o;1979:114::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;2054:35:82;2073:15;2054:18;:35::i;:::-;1979:114;:::o;149:38:164:-;;;;;;;;;;;;;;;:::o;889:969:82:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1333:13:141;;;;;;;;:30;;-1:-1:-1;1351:12:141;;;;1350:13;1333:30;1325:89;;;;-1:-1:-1;;;1325:89:141;;;;;;;;;1419:19;1442:13;;;;;;1441:14;1459:74;;;;1484:13;:20;;-1:-1:-1;;;;1484:20:141;;;;;1509:19;1500:4;1509:19;;;1459:74;-1:-1:-1;;;;;1134:18:82;;1126:50;;;;-1:-1:-1;;;1126:50:82;;;;;;;;;-1:-1:-1;;;;;1188:22:82;;1180:58;;;;-1:-1:-1;;;1180:58:82;;;;;;;;;-1:-1:-1;;;;;1250:30:82;;1242:74;;;;-1:-1:-1;;;1242:74:82;;;;;;;;;-1:-1:-1;;;;;1328:27:82;;1320:68;;;;-1:-1:-1;;;1320:68:82;;;;;;;;;-1:-1:-1;;;;;1400:24:82;;1392:62;;;;-1:-1:-1;;;1392:62:82;;;;;;;;;1459:35;1478:15;1459:18;:35::i;:::-;1498:3;:10;;-1:-1:-1;;;;;;1498:10:82;;;-1:-1:-1;;;;;1498:10:82;;;;;;;;;;1512:7;:18;;;;;;;;;;1534:15;:34;;;;;;;;;;1572:12;:28;;;;;;;;;;1604:9;:33;;;;;;;;;;;;;;-1:-1:-1;1641:214:82;1661:29;;;1641:214;;;1743:1;1710:18;;1729:1;1710:21;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1710:35:82;;;1702:80;;;;-1:-1:-1;;;1702:80:82;;;;;;;;;1787:17;1827:18;;1846:1;1827:21;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;1787:63:82;;;;;;;;;;-1:-1:-1;;;;;;1787:63:82;-1:-1:-1;;;;;1787:63:82;;;;;;;;;;1692:3;1641:214;;;;1547:14:141;1543:51;;;1584:5;1568:21;;-1:-1:-1;;1568:21:141;;;1543:51;1058:1:142;889:969:82;;;;;;;;:::o;943:22:84:-;;;-1:-1:-1;;;;;943:22:84;;:::o;999:30::-;;;-1:-1:-1;;;;;999:30:84;;:::o;599:107:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;654:14:164;;;;;;671:4;654:14;;;;;;;;;:21;;-1:-1:-1;;654:21:164;;;;;;684:18;;;;;661:6;;684:18;;5692:314:82;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;-1:-1:-1;;;;;5784:22:82;;5776:58;;;;-1:-1:-1;;;5776:58:82;;;;;;;;;5856:1;5846:7;:11;5838:38;;;;-1:-1:-1;;;5838:38:82;;;;;;;;;5888:3;;5881:38;;-1:-1:-1;;;5881:38:82;;-1:-1:-1;;;;;5888:3:82;;;;5881:19;;:38;;5901:8;;5911:7;;5881:38;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5881:38:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5881:38:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5881:38:82;;;;;;;;;-1:-1:-1;5923:39:82;;-1:-1:-1;;;5923:39:82;;-1:-1:-1;;;;;5923:30:82;;;;;:39;;5954:7;;5923:39;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5923:39:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5923:39:82;;;;5984:8;-1:-1:-1;;;;;5971:31:82;;5994:7;5971:31;;;;;;;;;;;;;;;5692:314;;:::o;1447:43:84:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1447:43:84;;:::o;798:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;798:43:84;;-1:-1:-1;798:43:84;:::o;5119:399:82:-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;5290:15:82;5308:107;5328:11;5341:6;5349:9;5290:15;5360:32;;5308:107;5290:125;;5443:11;-1:-1:-1;;;;;5424:90:82;;5456:7;5465:6;5473:9;5484:7;5493:20;5424:90;;;;;;;;;;;851:68:142;889:7;909:6;;;;-1:-1:-1;;;;;909:6:142;;851:68::o;10621:216:82:-;10696:13;10711:16;10733:20;10769:15;10733:52;;10797:7;-1:-1:-1;;;;;10797:13:82;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10797:15:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10797:15:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10797:15:82;;;;;;;;;10814:7;-1:-1:-1;;;;;10814:16:82;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10814:18:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10814:18:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10814:18:82;;;;;;;;;10789:44;;;;;10621:216;;;:::o;1134:83:142:-;1174:4;1207:6;;;;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;3054:426:82:-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;3191:9:82;3186:291;3206:23;;;3186:291;;;3276:1;3249:12;;3262:1;3249:15;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3249:29:82;;;3241:73;;;;-1:-1:-1;;;3241:73:82;;;;;;;;;3354:1;3327:21;;3349:1;3327:24;;;;;;;;;;;;;:28;3319:85;;;;-1:-1:-1;;;3319:85:82;;;;;;;;;3409:63;3430:12;;3443:1;3430:15;;;;;;;;;;;;;;;;;;;;;;3447:21;;3469:1;3447:24;;;;;;;;;;;;;3409:20;:63::i;:::-;3231:3;;3186:291;;;;3054:426;;;;:::o;1098:27:84:-;;;-1:-1:-1;;;;;1098:27:84;;:::o;1791:41::-;;;;;;;;;;;;;;;:::o;7208:361:82:-;7350:7;;;7379:32;;2596:302;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;2684:23:82;;2676:60;;;;-1:-1:-1;;;2676:60:82;;;;;;;;;2748:12;2740:39;;;;-1:-1:-1;;;2740:39:82;;;;;;;;;2798:3;;2791:40;;-1:-1:-1;;;2791:40:82;;-1:-1:-1;;;;;2798:3:82;;;;2791:20;;:40;;2812:9;;2823:7;;2791:40;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2791:40:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2791:40:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2791:40:82;;;;;;;;;2783:68;;;;-1:-1:-1;;;2783:68:82;;;;;;;;;2875:9;-1:-1:-1;;;;;2860:34:82;;2886:7;2860:34;;;;;;;6399:157;6461:7;6481:71;6496:11;6509:9;;;;;;;;;-1:-1:-1;;;;;6509:9:82;-1:-1:-1;;;;;6509:15:82;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6509:17:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6509:17:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6509:17:82;;;;;;;;;6528:9;;;;;;;;;-1:-1:-1;;;;;6528:9:82;-1:-1:-1;;;;;6528:18:82;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6528:20:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6528:20:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6528:20:82;;;;;;;;;6550:1;6481:14;:71::i;:::-;6474:78;6399:157;-1:-1:-1;;6399:157:82:o;10906:134::-;-1:-1:-1;;;;;11010:26:82;10979:18;11010:26;;;:9;:26;;;;;;;;;10906:134::o;1622:47:84:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10176:357:82:-;10243:16;10265:27;10295:10;:23;10306:11;-1:-1:-1;;;;;10295:23:82;-1:-1:-1;;;;;10295:23:82;;;;;;;;;;;;10265:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10322:14;10339:10;:17;10322:34;;10360:26;10403:10;:17;10389:32;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;10360:61:82;-1:-1:-1;10430:9:82;10425:85;10449:6;10445:1;:10;10425:85;;;10482:8;:23;10491:10;10502:1;10491:13;;;;;;;;;;;;;;;;;;;10482:23;;;;;;;;;;;;;-1:-1:-1;10482:23:82;10467:38;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10467:38:82;;;;;:12;;:9;;10477:1;;10467:12;;;;;;;;;;;;;;;:38;10457:3;;10425:85;;;-1:-1:-1;10520:9:82;10176:357;-1:-1:-1;;;;10176:357:82:o;725:26:84:-;;;-1:-1:-1;;;;;725:26:84;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;648:37:84:-;;;-1:-1:-1;;;;;648:37:84;;:::o;7916:820:82:-;8077:7;8090:15;8109:11;8158;8171:5;8178:6;8186:9;8197:20;8141:77;;;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;8141:77:82;;;8131:88;;49:4:-1;8131:88:82;;;;8123:97;8228:13;;;:8;:13;;;;;:28;;;8131:88;;-1:-1:-1;;;;;;8228:28:82;8224:470;;8281:5;8290:1;8281:10;8277:279;;;8309:14;;8338:3;;8343:7;;8384:15;;8309:104;;-1:-1:-1;;;8309:104:82;;-1:-1:-1;;;;;8309:14:82;;;;:28;;:104;;8338:3;;;;8343:7;;;;8352:11;;8365:6;;8373:9;;8384:15;;;8352:11;;8309:104;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8309:104:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8309:104:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8309:104:82;;;;;;;;;8299:114;;8277:279;;;8441:14;;;;;;;;;-1:-1:-1;;;;;8441:14:82;-1:-1:-1;;;;;8441:32:82;;8474:3;;;;;;;;;-1:-1:-1;;;;;8474:3:82;8479:7;;;;;;;;;-1:-1:-1;;;;;8479:7:82;8488:11;8501:6;8509:9;8520:15;;;;;;;;;-1:-1:-1;;;;;8520:15:82;8537:12;;;;;;;;;-1:-1:-1;;;;;8537:12:82;8441:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8441:109:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8441:109:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8441:109:82;;;;;;;;;8431:119;;8277:279;8576:45;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8576:45:82;;;;;;;;;-1:-1:-1;8560:13:82;;;:8;:13;;;;;:61;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8560:61:82;;;;;;;;;;;8626:23;;;;;:10;:23;;;;;27:10:-1;;23:18;;;45:23;;8626:33:82;;;;;;;;;;8664:18;;:9;:18;;;;;;;:25;;-1:-1:-1;;8664:25:82;;;;;;8224:470;8704:13;;;;:8;:13;;;;;:28;;;-1:-1:-1;;;;;8704:28:82;;7916:820;-1:-1:-1;;;;;;;7916:820:82:o;2237:195::-;-1:-1:-1;;;;;2311:29:82;;2303:72;;;;-1:-1:-1;;;2303:72:82;;;;;;;;;2379:14;:49;;-1:-1:-1;;;;;;2379:49:82;-1:-1:-1;;;;;2379:49:82;;;;;;;;;;2237:195::o;780:87:137:-;853:10;780:87;:::o;8856:1241:82:-;9040:17;:24;8972:1;;8950:19;;;;;9068:1026;9092:6;9088:1;:10;9068:1026;;;9110:22;9135:17;9153:1;9135:20;;;;;;;;;;;;;;;;;;:44;;-1:-1:-1;;;9135:44:82;;-1:-1:-1;;;;;9135:20:82;;;;:31;;:44;;9167:11;;9135:44;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9135:44:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9135:44:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9135:44:82;;;;;;;;;9110:69;-1:-1:-1;;;;;;9188:28:82;;;9184:398;;9224:20;9260:14;9224:51;;9328:11;9341;9354:7;-1:-1:-1;;;;;9354:13:82;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9354:15:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9354:15:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9354:15:82;;;;;;;;;9371:7;-1:-1:-1;;;;;9371:16:82;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9371:18:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9371:18:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9371:18:82;;;;;;;;;9391:20;9311:101;;;;;;;;;;;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;9311:101:82;;;9301:112;;49:4:-1;9301:112:82;;;;9441:58;;;;;;;;;;;;;;-1:-1:-1;;;;;9441:58:82;;;;;;;;;-1:-1:-1;9425:13:82;;;:8;:13;;;;;:74;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9425:74:82;;;;;;;;;;;9505:23;;;;;:10;:23;;;;;27:10:-1;;23:18;;;45:23;;9505:33:82;;;;;;;;;;9544:25;;:9;:25;;;;;;:32;;-1:-1:-1;;9544:32:82;;;;;;;9301:112;-1:-1:-1;;9184:398:82;9586:26;9615:17;9633:1;9615:20;;;;;;;;;;;;;;;;;;:48;;-1:-1:-1;;;9615:48:82;;-1:-1:-1;;;;;9615:20:82;;;;:35;;:48;;9651:11;;9615:48;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9615:48:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9615:48:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9615:48:82;;;;;;;;;9586:77;-1:-1:-1;;;;;;9672:32:82;;;9668:422;;9712:20;9748:18;9712:55;;9820:11;9833:15;9850:7;-1:-1:-1;;;;;9850:13:82;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9850:15:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9850:15:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9850:15:82;;;;;;;;;9867:7;-1:-1:-1;;;;;9867:16:82;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9867:18:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9867:18:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9867:18:82;;;;;;;;;9887:20;9803:105;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9803:105:82;;;9793:116;;;;;;9779:136;;9773:142;;9937:66;;;;;;;;9945:15;9937:66;;;;9962:20;9937:66;;;;9984:18;-1:-1:-1;;;;;9937:66:82;;;;9921:8;:13;9930:3;9921:13;;;;;;;;;;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9921:82:82;;;;;-1:-1:-1;;;;;9921:82:82;;;;;;;;;10009:10;:23;10020:11;-1:-1:-1;;;;;10009:23:82;-1:-1:-1;;;;;10009:23:82;;;;;;;;;;;;10038:3;10009:33;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;10009:33:82;;;;;;;;;;;;;;;;;;;;;;10080:4;10048:9;:29;10058:18;-1:-1:-1;;;;;10048:29:82;-1:-1:-1;;;;;10048:29:82;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;9668:422;;-1:-1:-1;;9100:3:82;;9068:1026;;;;8856:1241;;;;;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;1721:17:142;;;;;-1:-1:-1;;;;;;1721:17:142;;;;;;;;;1538:204::o;226:10816:82:-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;226:10816:82;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;301:352;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;-1:-1;469:20;;509:18;498:30;;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;586:2;391:262;;;;;;1039:128;1114:13;;1132:30;1114:13;1132:30;;1174:130;1241:20;;1266:33;1241:20;1266:33;;1311:134;1389:13;;1407:33;1389:13;1407:33;;1452:241;;1556:2;1544:9;1535:7;1531:23;1527:32;1524:2;;;1572:1;1569;1562:12;1524:2;1607:1;1624:53;1669:7;1649:9;1624:53;;1700:263;;1815:2;1803:9;1794:7;1790:23;1786:32;1783:2;;;1831:1;1828;1821:12;1783:2;1866:1;1883:64;1939:7;1919:9;1883:64;;1970:1151;;;;;;;;;2211:3;2199:9;2190:7;2186:23;2182:33;2179:2;;;2228:1;2225;2218:12;2179:2;2263:1;2280:53;2325:7;2305:9;2280:53;;;2270:63;;2242:97;2370:2;2388:53;2433:7;2424:6;2413:9;2409:22;2388:53;;;2378:63;;2349:98;2478:2;2496:53;2541:7;2532:6;2521:9;2517:22;2496:53;;;2486:63;;2457:98;2586:2;2604:53;2649:7;2640:6;2629:9;2625:22;2604:53;;;2594:63;;2565:98;2694:3;2713:53;2758:7;2749:6;2738:9;2734:22;2713:53;;;2703:63;;2673:99;2803:3;2822:53;2867:7;2858:6;2847:9;2843:22;2822:53;;;2812:63;;2782:99;2940:3;2929:9;2925:19;2912:33;2965:18;2957:6;2954:30;2951:2;;;2997:1;2994;2987:12;2951:2;3025:80;3097:7;3088:6;3077:9;3073:22;3025:80;;;3015:90;;;;2891:220;2173:948;;;;;;;;;;;;3128:366;;;3249:2;3237:9;3228:7;3224:23;3220:32;3217:2;;;3265:1;3262;3255:12;3217:2;3300:1;3317:53;3362:7;3342:9;3317:53;;;3307:63;;3279:97;3407:2;3425:53;3470:7;3461:6;3450:9;3446:22;3425:53;;;3415:63;;3386:98;3211:283;;;;;;3501:617;;;;;3656:3;3644:9;3635:7;3631:23;3627:33;3624:2;;;3673:1;3670;3663:12;3624:2;3708:1;3725:53;3770:7;3750:9;3725:53;;;3715:63;;3687:97;3815:2;3833:53;3878:7;3869:6;3858:9;3854:22;3833:53;;;3823:63;;3794:98;3923:2;3941:53;3986:7;3977:6;3966:9;3962:22;3941:53;;;3931:63;;3902:98;4031:2;4049:53;4094:7;4085:6;4074:9;4070:22;4049:53;;;4039:63;;4010:98;3618:500;;;;;;;;4125:743;;;;;;4297:3;4285:9;4276:7;4272:23;4268:33;4265:2;;;4314:1;4311;4304:12;4265:2;4349:1;4366:53;4411:7;4391:9;4366:53;;;4356:63;;4328:97;4456:2;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;;;4464:63;;4435:98;4564:2;4582:53;4627:7;4618:6;4607:9;4603:22;4582:53;;;4572:63;;4543:98;4672:2;4690:53;4735:7;4726:6;4715:9;4711:22;4690:53;;;4680:63;;4651:98;4780:3;4799:53;4844:7;4835:6;4824:9;4820:22;4799:53;;;4789:63;;4759:99;4259:609;;;;;;;;;4875:678;;;;;5066:2;5054:9;5045:7;5041:23;5037:32;5034:2;;;5082:1;5079;5072:12;5034:2;5117:31;;5168:18;5157:30;;5154:2;;;5200:1;5197;5190:12;5154:2;5228:80;5300:7;5291:6;5280:9;5276:22;5228:80;;;5218:90;;;;5096:218;5373:2;5362:9;5358:18;5345:32;5397:18;5389:6;5386:30;5383:2;;;5429:1;5426;5419:12;5383:2;5457:80;5529:7;5520:6;5509:9;5505:22;5457:80;;;5028:525;;;;-1:-1;5447:90;-1:-1;;;;5028:525;5560:257;;5672:2;5660:9;5651:7;5647:23;5643:32;5640:2;;;5688:1;5685;5678:12;5640:2;5723:1;5740:61;5793:7;5773:9;5740:61;;5824:241;;5928:2;5916:9;5907:7;5903:23;5899:32;5896:2;;;5944:1;5941;5934:12;5896:2;5979:1;5996:53;6041:7;6021:9;5996:53;;6072:263;;6187:2;6175:9;6166:7;6162:23;6158:32;6155:2;;;6203:1;6200;6193:12;6155:2;6238:1;6255:64;6311:7;6291:9;6255:64;;6343:265;;6474:94;6564:3;6556:6;6474:94;;;-1:-1;;6597:4;6588:14;;6467:141;6616:103;6689:24;6707:5;6689:24;;;6684:3;6677:37;6671:48;;;6846:152;6947:45;6967:24;6985:5;6967:24;;;6947:45;;7096:866;;7285:76;7355:5;7285:76;;;7374:108;7475:6;7470:3;7374:108;;;7367:115;;7503:78;7575:5;7503:78;;;7601:7;7629:1;7614:326;7639:6;7636:1;7633:13;7614:326;;;7706:6;7700:13;7727:107;7830:3;7815:13;7727:107;;;7720:114;;7851:82;7926:6;7851:82;;;7841:92;-1:-1;;7661:1;7654:9;7614:326;;;-1:-1;7953:3;;7264:698;-1:-1;;;;;7264:698;7970:104;8047:21;8062:5;8047:21;;8081:176;8189:62;8245:5;8189:62;;8621:332;;8781:67;8845:2;8840:3;8781:67;;;8881:34;8861:55;;8944:2;8935:12;;8767:186;-1:-1;;8767:186;8962:331;;9122:67;9186:2;9181:3;9122:67;;;9222:33;9202:54;;9284:2;9275:12;;9108:185;-1:-1;;9108:185;9302:375;;9462:67;9526:2;9521:3;9462:67;;;9562:34;9542:55;;-1:-1;;;9626:2;9617:12;;9610:30;9668:2;9659:12;;9448:229;-1:-1;;9448:229;9686:330;;9846:67;9910:2;9905:3;9846:67;;;9946:32;9926:53;;10007:2;9998:12;;9832:184;-1:-1;;9832:184;10025:314;;10185:67;10249:2;10244:3;10185:67;;;-1:-1;;;10265:37;;10330:2;10321:12;;10171:168;-1:-1;;10171:168;10348:323;;10508:67;10572:2;10567:3;10508:67;;;10608:25;10588:46;;10662:2;10653:12;;10494:177;-1:-1;;10494:177;10680:328;;10840:67;10904:2;10899:3;10840:67;;;10940:30;10920:51;;10999:2;10990:12;;10826:182;-1:-1;;10826:182;11017:383;;11177:67;11241:2;11236:3;11177:67;;;11277:34;11257:55;;-1:-1;;;11341:2;11332:12;;11325:38;11391:2;11382:12;;11163:237;-1:-1;;11163:237;11409:312;;11569:67;11633:2;11628:3;11569:67;;;-1:-1;;;11649:35;;11712:2;11703:12;;11555:166;-1:-1;;11555:166;11730:381;;11890:67;11954:2;11949:3;11890:67;;;11990:34;11970:55;;-1:-1;;;12054:2;12045:12;;12038:36;12102:2;12093:12;;11876:235;-1:-1;;11876:235;12120:324;;12280:67;12344:2;12339:3;12280:67;;;12380:26;12360:47;;12435:2;12426:12;;12266:178;-1:-1;;12266:178;12453:331;;12613:67;12677:2;12672:3;12613:67;;;12713:33;12693:54;;12775:2;12766:12;;12599:185;-1:-1;;12599:185;12793:325;;12953:67;13017:2;13012:3;12953:67;;;13053:27;13033:48;;13109:2;13100:12;;12939:179;-1:-1;;12939:179;13127:323;;13287:67;13351:2;13346:3;13287:67;;;13387:25;13367:46;;13441:2;13432:12;;13273:177;-1:-1;;13273:177;13459:315;;13619:67;13683:2;13678:3;13619:67;;;-1:-1;;;13699:38;;13765:2;13756:12;;13605:169;-1:-1;;13605:169;13783:319;;13943:67;14007:2;14002:3;13943:67;;;-1:-1;;;14023:42;;14093:2;14084:12;;13929:173;-1:-1;;13929:173;14195:650;14399:23;;14326:4;14317:14;;;14428:63;14321:3;14399:23;14428:63;;;14346:151;14585:4;14578:5;14574:16;14568:23;14597:63;14654:4;14649:3;14645:14;14631:12;14597:63;;;14507:159;14749:4;14742:5;14738:16;14732:23;14761:63;14818:4;14813:3;14809:14;14795:12;14761:63;;14852:103;14925:24;14943:5;14925:24;;15082:152;15183:45;15203:24;15221:5;15203:24;;;15183:45;;15241:800;;15472:75;15543:3;15534:6;15472:75;;;15569:2;15564:3;15560:12;15553:19;;15583:75;15654:3;15645:6;15583:75;;;15680:2;15675:3;15671:12;15664:19;;15694:75;15765:3;15756:6;15694:75;;;15791:2;15786:3;15782:12;15775:19;;15805:75;15876:3;15867:6;15805:75;;;15902:2;15897:3;15893:12;15886:19;;15916:75;15987:3;15978:6;15916:75;;;-1:-1;16013:2;16004:12;;15460:581;-1:-1;;;;;15460:581;16048:213;16166:2;16151:18;;16180:71;16155:9;16224:6;16180:71;;16268:883;16554:3;16539:19;;16569:71;16543:9;16613:6;16569:71;;;16651:72;16719:2;16708:9;16704:18;16695:6;16651:72;;;16734;16802:2;16791:9;16787:18;16778:6;16734:72;;;16817;16885:2;16874:9;16870:18;16861:6;16817:72;;;16900:73;16968:3;16957:9;16953:19;16944:6;16900:73;;;16984;17052:3;17041:9;17037:19;17028:6;16984:73;;;17068;17136:3;17125:9;17121:19;17112:6;17068:73;;;16525:626;;;;;;;;;;;17158:324;17304:2;17289:18;;17318:71;17293:9;17362:6;17318:71;;;17400:72;17468:2;17457:9;17453:18;17444:6;17400:72;;;17275:207;;;;;;17489:659;17719:3;17704:19;;17734:71;17708:9;17778:6;17734:71;;;17816:72;17884:2;17873:9;17869:18;17860:6;17816:72;;;17899;17967:2;17956:9;17952:18;17943:6;17899:72;;;17982;18050:2;18039:9;18035:18;18026:6;17982:72;;;18065:73;18133:3;18122:9;18118:19;18109:6;18065:73;;;17690:458;;;;;;;;;18155:449;18367:2;18381:47;;;18352:18;;18442:152;18352:18;18580:6;18442:152;;18611:201;18723:2;18708:18;;18737:65;18712:9;18775:6;18737:65;;18819:263;18962:2;18947:18;;18976:96;18951:9;19045:6;18976:96;;19619:407;19810:2;19824:47;;;19795:18;;19885:131;19795:18;19885:131;;20033:407;20224:2;20238:47;;;20209:18;;20299:131;20209:18;20299:131;;20447:407;20638:2;20652:47;;;20623:18;;20713:131;20623:18;20713:131;;20861:407;21052:2;21066:47;;;21037:18;;21127:131;21037:18;21127:131;;21275:407;21466:2;21480:47;;;21451:18;;21541:131;21451:18;21541:131;;21689:407;21880:2;21894:47;;;21865:18;;21955:131;21865:18;21955:131;;22103:407;22294:2;22308:47;;;22279:18;;22369:131;22279:18;22369:131;;22517:407;22708:2;22722:47;;;22693:18;;22783:131;22693:18;22783:131;;22931:407;23122:2;23136:47;;;23107:18;;23197:131;23107:18;23197:131;;23345:407;23536:2;23550:47;;;23521:18;;23611:131;23521:18;23611:131;;23759:407;23950:2;23964:47;;;23935:18;;24025:131;23935:18;24025:131;;24173:407;24364:2;24378:47;;;24349:18;;24439:131;24349:18;24439:131;;24587:407;24778:2;24792:47;;;24763:18;;24853:131;24763:18;24853:131;;25001:407;25192:2;25206:47;;;25177:18;;25267:131;25177:18;25267:131;;25415:407;25606:2;25620:47;;;25591:18;;25681:131;25591:18;25681:131;;25829:407;26020:2;26034:47;;;26005:18;;26095:131;26005:18;26095:131;;26243:213;26361:2;26346:18;;26375:71;26350:9;26419:6;26375:71;;26463:324;26609:2;26594:18;;26623:71;26598:9;26667:6;26623:71;;26794:435;26968:2;26953:18;;26982:71;26957:9;27026:6;26982:71;;;27064:72;27132:2;27121:9;27117:18;27108:6;27064:72;;;27147;27215:2;27204:9;27200:18;27191:6;27147:72;;27236:173;27382:4;27373:14;;27330:79;27416:159;27541:12;;27512:63;27720:200;27860:19;;;27909:4;27900:14;;27853:67;28100:91;;28162:24;28180:5;28162:24;;28198:85;28264:13;28257:21;;28240:43;28290:121;-1:-1;;;;;28352:54;;28335:76;28418:72;28480:5;28463:27;28497:171;;28601:62;28657:5;28601:62;;29436:95;;29500:26;29520:5;29538:89;29602:20;29616:5;29789:2;29785:14;;29757:52;29817:117;29886:24;29904:5;29886:24;;;29879:5;29876:35;29866:2;;29925:1;29922;29915:12;29941:111;30007:21;30022:5;30007:21;;30059:117;30128:24;30146:5;30128:24;"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "addAdmin(address)": "70480275",
              "addDeployedVestings(address[],uint256[])": "b810c648",
              "admins(address)": "429b62e5",
              "createTeamVesting(address,uint256,uint256,uint256,uint256)": "862e229d",
              "createVesting(address,uint256,uint256,uint256)": "0665a06f",
              "createVestingAddr(address,uint256,uint256,uint256,uint256)": "1f509326",
              "feeSharingProxy()": "6a26b57f",
              "getTeamVesting(address,uint256,uint256,uint256)": "c36519d1",
              "getVesting(address)": "cc49ede7",
              "getVestingAddr(address,uint256,uint256,uint256)": "02df0476",
              "getVestingDetails(address)": "8dedf009",
              "getVestingsOf(address)": "efb95733",
              "initialize(address,address,address,address,address,address,address[])": "42a82b4f",
              "isOwner()": "8f32d59b",
              "isVesting(address)": "c0e09852",
              "isVestingAdress(address)": "dbb049d1",
              "lockedSOV()": "f2f46b3b",
              "owner()": "8da5cb5b",
              "removeAdmin(address)": "1785f53c",
              "setVestingFactory(address)": "377220fd",
              "stakeTokens(address,uint256)": "79a83f5a",
              "staking()": "4cf088d9",
              "transferOwnership(address)": "f2fde38b",
              "transferSOV(address,uint256)": "c680c0b7",
              "vestingFactory()": "f60826ee",
              "vestingOwner()": "bd7b5908",
              "vestingRegistries(uint256)": "842a49d5",
              "vestings(uint256)": "821bee73",
              "vestingsOf(address,uint256)": "dfb9366d"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "addDeployedVestings(address[],uint256[])": {
                "notice": "adds vestings that were deployed in previous vesting registries"
              },
              "createTeamVesting(address,uint256,uint256,uint256,uint256)": {
                "notice": "creates Team Vesting contract"
              },
              "createVesting(address,uint256,uint256,uint256)": {
                "notice": "creates Vesting contract"
              },
              "createVestingAddr(address,uint256,uint256,uint256,uint256)": {
                "notice": "creates Vesting contract"
              },
              "getTeamVesting(address,uint256,uint256,uint256)": {
                "notice": "returns team vesting contract address for the given token owner, cliff, duration"
              },
              "getVesting(address)": {
                "notice": "returns vesting contract address for the given token owner"
              },
              "getVestingAddr(address,uint256,uint256,uint256)": {
                "notice": "public function that returns vesting contract address for the given token owner, cliff, duration"
              },
              "getVestingDetails(address)": {
                "notice": "returns cliff and duration for Vesting & TeamVesting contracts"
              },
              "getVestingsOf(address)": {
                "notice": "returns all vesting details for the given token owner"
              },
              "initialize(address,address,address,address,address,address,address[])": {
                "notice": "Replace constructor with initialize function for Upgradable Contracts This function will be called only once by the owner"
              },
              "isVestingAdress(address)": {
                "notice": "returns if the address is a vesting address"
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "setVestingFactory(address)": {
                "notice": "sets vesting factory address"
              },
              "stakeTokens(address,uint256)": {
                "notice": "stakes tokens according to the vesting schedule"
              },
              "transferSOV(address,uint256)": {
                "notice": "transfers SOV tokens to given address"
              }
            }
          }
        }
      },
      "contracts/governance/Vesting/VestingRegistryProxy.sol": {
        "VestingRegistryProxy": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldImplementation",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newImplementation",
                  "type": "address"
                }
              ],
              "name": "ImplementationChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharingProxy",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getImplementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getProxyOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isVesting",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOV",
              "outputs": [
                {
                  "internalType": "contract LockedSOV",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "name": "setImplementation",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "setProxyOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingFactory",
              "outputs": [
                {
                  "internalType": "contract IVestingFactory",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestingRegistries",
              "outputs": [
                {
                  "internalType": "contract IVestingRegistry",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestings",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "vestingType",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "vestingCreationType",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "vestingAddress",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestingsOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Vesting Registry contract should be upgradable, use UpgradableProxy. VestingRegistryStorage is deployed with the upgradable functionality by using this contract instead, that inherits from UpgradableProxy the possibility of being enhanced and re-deployed.",
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "getImplementation()": {
                "return": "Address of the implementation."
              },
              "getProxyOwner()": {
                "return": "Address of the owner."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "setImplementation(address)": {
                "details": "Wrapper for _setImplementation that exposes the function as public for owner to be able to set a new version of the contract as current pointing implementation.",
                "params": {
                  "_implementation": "Address of the implementation."
                }
              },
              "setProxyOwner(address)": {
                "params": {
                  "_owner": "Address of the owner."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Vesting Registry Proxy contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361007016565b6000805462010000600160b01b031916620100006001600160a01b03841690810291909117825560405192935091600080516020610d09833981519152908290a35061006b336001600160e01b0361007416565b610146565b3390565b6001600160a01b0381166100b95760405162461bcd60e51b8152600401808060200182810382526025815260200180610d296025913960400191505060405180910390fd5b6001600160a01b0381166100d46001600160e01b0361011e16565b6001600160a01b0316600080516020610d0983398151915260405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b610bb4806101556000396000f3fe60806040526004361061011f5760003560e01c80638f32d59b116100a0578063d784d42611610064578063d784d426146103e9578063dfb9366d1461041c578063f2f46b3b14610467578063f2fde38b1461047c578063f60826ee146104af5761011f565b80638f32d59b14610344578063aaf10f4214610359578063bd7b59081461036e578063c0e0985214610383578063caaee91c146103b65761011f565b80636a26b57f116100e75780636a26b57f1461026c5780637048027514610281578063821bee73146102b4578063842a49d5146103055780638da5cb5b1461032f5761011f565b806308dcb360146101955780631785f53c146101c65780631ab7710d146101fb578063429b62e5146102105780634cf088d914610257575b60006101296104c4565b90506001600160a01b0381166101705760405162461bcd60e51b8152600401808060200182810382526023815260200180610b386023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e818015610191578184f35b8184fd5b3480156101a157600080fd5b506101aa6104ef565b604080516001600160a01b039092168252519081900360200190f35b3480156101d257600080fd5b506101f9600480360360208110156101e957600080fd5b50356001600160a01b03166104fe565b005b34801561020757600080fd5b506101aa61059e565b34801561021c57600080fd5b506102436004803603602081101561023357600080fd5b50356001600160a01b03166105c6565b604080519115158252519081900360200190f35b34801561026357600080fd5b506101aa6105db565b34801561027857600080fd5b506101aa6105ea565b34801561028d57600080fd5b506101f9600480360360208110156102a457600080fd5b50356001600160a01b03166105f9565b3480156102c057600080fd5b506102de600480360360208110156102d757600080fd5b503561069d565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b34801561031157600080fd5b506101aa6004803603602081101561032857600080fd5b50356106c7565b34801561033b57600080fd5b506101aa6106ee565b34801561035057600080fd5b50610243610703565b34801561036557600080fd5b506101aa6104c4565b34801561037a57600080fd5b506101aa61072d565b34801561038f57600080fd5b50610243600480360360208110156103a657600080fd5b50356001600160a01b031661073c565b3480156103c257600080fd5b506101f9600480360360208110156103d957600080fd5b50356001600160a01b0316610751565b3480156103f557600080fd5b506101f96004803603602081101561040c57600080fd5b50356001600160a01b03166107c2565b34801561042857600080fd5b506104556004803603604081101561043f57600080fd5b506001600160a01b038135169060200135610830565b60408051918252519081900360200190f35b34801561047357600080fd5b506101aa61085e565b34801561048857600080fd5b506101f96004803603602081101561049f57600080fd5b50356001600160a01b031661086d565b3480156104bb57600080fd5b506101aa6108be565b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b6005546001600160a01b031681565b610506610703565b610546576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b60016020526000908152604090205460ff1681565b6006546001600160a01b031681565b6007546001600160a01b031681565b610601610703565b610641576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6009602052600090815260409020805460018201546002909201549091906001600160a01b031683565b600481815481106106d457fe5b6000918252602090912001546001600160a01b0316905081565b6000546201000090046001600160a01b031690565b600080546201000090046001600160a01b031661071e6108cd565b6001600160a01b031614905090565b6008546001600160a01b031681565b600b6020526000908152604090205460ff1681565b61075961059e565b6001600160a01b0316336001600160a01b0316146107b6576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b6107bf816108d1565b50565b6107ca61059e565b6001600160a01b0316336001600160a01b031614610827576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b6107bf81610984565b600a602052816000526040600020818154811061084957fe5b90600052602060002001600091509150505481565b6003546001600160a01b031681565b610875610703565b6108b5576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6107bf81610a3a565b6002546001600160a01b031681565b3390565b6001600160a01b0381166109165760405162461bcd60e51b8152600401808060200182810382526025815260200180610b5b6025913960400191505060405180910390fd5b806001600160a01b031661092861059e565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b6001600160a01b0381166109c95760405162461bcd60e51b8152600401808060200182810382526029815260200180610b0f6029913960400191505060405180910390fd5b806001600160a01b03166109db6104c4565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a3604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b8152905190819003601201902055565b6001600160a01b038116610a7f5760405162461bcd60e51b8152600401808060200182810382526026815260200180610ae96026913960400191505060405180910390fd5b600080546040516001600160a01b03808516936201000090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03909216620100000262010000600160b01b031990921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737350726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6964206164647265737350726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e6450726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373a265627a7a72315820430c89ac656fa6bb9bf4c5cf800bf612372d44f7ac8e73aa862bdd72db65db2b64736f6c634300051100328be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e050726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x70 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xD09 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6B CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x74 AND JUMP JUMPDEST PUSH2 0x146 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD29 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x11E AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xD09 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xBB4 DUP1 PUSH2 0x155 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xD784D426 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD784D426 EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0xDFB9366D EQ PUSH2 0x41C JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x467 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x47C JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x4AF JUMPI PUSH2 0x11F JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x359 JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x36E JUMPI DUP1 PUSH4 0xC0E09852 EQ PUSH2 0x383 JUMPI DUP1 PUSH4 0xCAAEE91C EQ PUSH2 0x3B6 JUMPI PUSH2 0x11F JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x821BEE73 EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0x842A49D5 EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x32F JUMPI PUSH2 0x11F JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x257 JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x129 PUSH2 0x4C4 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x170 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB38 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x191 JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4FE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x59E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x243 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5C6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x5DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x5EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5F9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x69D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x6EE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x243 PUSH2 0x703 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x4C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x72D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x243 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x73C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x751 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x455 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x830 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x473 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x85E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x49F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x86D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x8BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x506 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x546 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x601 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x641 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x6D4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x71E PUSH2 0x8CD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x759 PUSH2 0x59E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7BF DUP2 PUSH2 0x8D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x7CA PUSH2 0x59E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x827 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7BF DUP2 PUSH2 0x984 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x849 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x875 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x8B5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7BF DUP2 PUSH2 0xA3A JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x916 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB5B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x928 PUSH2 0x59E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB0F PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9DB PUSH2 0x4C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xA7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAE9 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 PUSH3 0x10000 SWAP1 SWAP4 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737350726F78793A3A736574496D706C656D PUSH6 0x6E746174696F PUSH15 0x3A20696E76616C6964206164647265 PUSH20 0x7350726F78793A3A28293A20696D706C656D656E PUSH21 0x6174696F6E206E6F7420666F756E6450726F78793A GASPRICE PUSH20 0x657450726F78794F776E65723A20696E76616C69 PUSH5 0x2061646472 PUSH6 0x7373A265627A PUSH27 0x72315820430C89AC656FA6BB9BF4C5CF800BF612372D44F7AC8E73 0xAA DUP7 0x2B 0xDD PUSH19 0xDB65DB2B64736F6C634300051100328BE0079C MSTORE8 AND MSIZE EQ SGT DIFFICULTY 0xCD 0x1F 0xD0 LOG4 CALLCODE DUP5 NOT 0x49 PUSH32 0x9722A3DAAFE3B4186F6B6457E050726F78793A3A73657450726F78794F776E65 PUSH19 0x3A20696E76616C696420616464726573730000 ",
              "sourceMap": "434:77:83:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;;-1:-1:-1;;;;;713:18:142;;;;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;;;;;;;;;;740:43:142;713:6;;740:43;-1:-1:-1;1653:26:147;1668:10;-1:-1:-1;;;;;1653:14:147;:26;:::i;:::-;434:77:83;;780:87:137;853:10;780:87;:::o;2644:249:147:-;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2776:45:147;;2797:15;-1:-1:-1;;;;;2797:13:147;:15;:::i;:::-;-1:-1:-1;;;;;2776:45:147;-1:-1:-1;;;;;;;;;;;2776:45:147;;;;;;;;;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;2867:19;2862:28::o;2983:134::-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o;434:77:83:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "60806040526004361061011f5760003560e01c80638f32d59b116100a0578063d784d42611610064578063d784d426146103e9578063dfb9366d1461041c578063f2f46b3b14610467578063f2fde38b1461047c578063f60826ee146104af5761011f565b80638f32d59b14610344578063aaf10f4214610359578063bd7b59081461036e578063c0e0985214610383578063caaee91c146103b65761011f565b80636a26b57f116100e75780636a26b57f1461026c5780637048027514610281578063821bee73146102b4578063842a49d5146103055780638da5cb5b1461032f5761011f565b806308dcb360146101955780631785f53c146101c65780631ab7710d146101fb578063429b62e5146102105780634cf088d914610257575b60006101296104c4565b90506001600160a01b0381166101705760405162461bcd60e51b8152600401808060200182810382526023815260200180610b386023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e818015610191578184f35b8184fd5b3480156101a157600080fd5b506101aa6104ef565b604080516001600160a01b039092168252519081900360200190f35b3480156101d257600080fd5b506101f9600480360360208110156101e957600080fd5b50356001600160a01b03166104fe565b005b34801561020757600080fd5b506101aa61059e565b34801561021c57600080fd5b506102436004803603602081101561023357600080fd5b50356001600160a01b03166105c6565b604080519115158252519081900360200190f35b34801561026357600080fd5b506101aa6105db565b34801561027857600080fd5b506101aa6105ea565b34801561028d57600080fd5b506101f9600480360360208110156102a457600080fd5b50356001600160a01b03166105f9565b3480156102c057600080fd5b506102de600480360360208110156102d757600080fd5b503561069d565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b34801561031157600080fd5b506101aa6004803603602081101561032857600080fd5b50356106c7565b34801561033b57600080fd5b506101aa6106ee565b34801561035057600080fd5b50610243610703565b34801561036557600080fd5b506101aa6104c4565b34801561037a57600080fd5b506101aa61072d565b34801561038f57600080fd5b50610243600480360360208110156103a657600080fd5b50356001600160a01b031661073c565b3480156103c257600080fd5b506101f9600480360360208110156103d957600080fd5b50356001600160a01b0316610751565b3480156103f557600080fd5b506101f96004803603602081101561040c57600080fd5b50356001600160a01b03166107c2565b34801561042857600080fd5b506104556004803603604081101561043f57600080fd5b506001600160a01b038135169060200135610830565b60408051918252519081900360200190f35b34801561047357600080fd5b506101aa61085e565b34801561048857600080fd5b506101f96004803603602081101561049f57600080fd5b50356001600160a01b031661086d565b3480156104bb57600080fd5b506101aa6108be565b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b6005546001600160a01b031681565b610506610703565b610546576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b60016020526000908152604090205460ff1681565b6006546001600160a01b031681565b6007546001600160a01b031681565b610601610703565b610641576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6009602052600090815260409020805460018201546002909201549091906001600160a01b031683565b600481815481106106d457fe5b6000918252602090912001546001600160a01b0316905081565b6000546201000090046001600160a01b031690565b600080546201000090046001600160a01b031661071e6108cd565b6001600160a01b031614905090565b6008546001600160a01b031681565b600b6020526000908152604090205460ff1681565b61075961059e565b6001600160a01b0316336001600160a01b0316146107b6576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b6107bf816108d1565b50565b6107ca61059e565b6001600160a01b0316336001600160a01b031614610827576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b6107bf81610984565b600a602052816000526040600020818154811061084957fe5b90600052602060002001600091509150505481565b6003546001600160a01b031681565b610875610703565b6108b5576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6107bf81610a3a565b6002546001600160a01b031681565b3390565b6001600160a01b0381166109165760405162461bcd60e51b8152600401808060200182810382526025815260200180610b5b6025913960400191505060405180910390fd5b806001600160a01b031661092861059e565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b6001600160a01b0381166109c95760405162461bcd60e51b8152600401808060200182810382526029815260200180610b0f6029913960400191505060405180910390fd5b806001600160a01b03166109db6104c4565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a3604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b8152905190819003601201902055565b6001600160a01b038116610a7f5760405162461bcd60e51b8152600401808060200182810382526026815260200180610ae96026913960400191505060405180910390fd5b600080546040516001600160a01b03808516936201000090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03909216620100000262010000600160b01b031990921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737350726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6964206164647265737350726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e6450726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373a265627a7a72315820430c89ac656fa6bb9bf4c5cf800bf612372d44f7ac8e73aa862bdd72db65db2b64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xD784D426 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD784D426 EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0xDFB9366D EQ PUSH2 0x41C JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x467 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x47C JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x4AF JUMPI PUSH2 0x11F JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0x359 JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x36E JUMPI DUP1 PUSH4 0xC0E09852 EQ PUSH2 0x383 JUMPI DUP1 PUSH4 0xCAAEE91C EQ PUSH2 0x3B6 JUMPI PUSH2 0x11F JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x821BEE73 EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0x842A49D5 EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x32F JUMPI PUSH2 0x11F JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x257 JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x129 PUSH2 0x4C4 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x170 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB38 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x191 JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4FE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x59E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x243 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5C6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x5DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x5EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5F9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x69D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x6EE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x243 PUSH2 0x703 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x4C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x72D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x243 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x73C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x751 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x455 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x830 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x473 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x85E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x49F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x86D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x8BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x506 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x546 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x601 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x641 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x6D4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x71E PUSH2 0x8CD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x759 PUSH2 0x59E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7BF DUP2 PUSH2 0x8D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x7CA PUSH2 0x59E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x827 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7BF DUP2 PUSH2 0x984 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x849 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x875 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x8B5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7BF DUP2 PUSH2 0xA3A JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x916 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB5B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x928 PUSH2 0x59E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB0F PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9DB PUSH2 0x4C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xA7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAE9 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 PUSH3 0x10000 SWAP1 SWAP4 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737350726F78793A3A736574496D706C656D PUSH6 0x6E746174696F PUSH15 0x3A20696E76616C6964206164647265 PUSH20 0x7350726F78793A3A28293A20696D706C656D656E PUSH21 0x6174696F6E206E6F7420666F756E6450726F78793A GASPRICE PUSH20 0x657450726F78794F776E65723A20696E76616C69 PUSH5 0x2061646472 PUSH6 0x7373A265627A PUSH27 0x72315820430C89AC656FA6BB9BF4C5CF800BF612372D44F7AC8E73 0xAA DUP7 0x2B 0xDD PUSH19 0xDB65DB2B64736F6C6343000511003200000000 ",
              "sourceMap": "434:77:83:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3338:22:147;3363:19;:17;:19::i;:::-;3338:44;-1:-1:-1;;;;;;3394:28:147;;3386:76;;;;-1:-1:-1;;;3386:76:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3502:4;3496:11;3536:12;3533:1;3524:7;3511:38;3627:1;3624;3610:12;3601:7;3585:14;3580:3;3567:62;3645:14;3690:4;3687:1;3678:7;3663:32;3707:6;3718:41;;;;3795:4;3786:7;3779:21;3718:41;3748:4;3739:7;3732:21;880:18:84;;8:9:-1;5:2;;;30:1;27;20:12;5:2;880:18:84;;;:::i;:::-;;;;-1:-1:-1;;;;;880:18:84;;;;;;;;;;;;;;828:113:164;;8:9:-1;5:2;;;30:1;27;20:12;5:2;828:113:164;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;828:113:164;-1:-1:-1;;;;;828:113:164;;:::i;:::-;;2983:134:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2983:134:147;;;:::i;149:38:164:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;149:38:164;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;149:38:164;-1:-1:-1;;;;;149:38:164;;:::i;:::-;;;;;;;;;;;;;;;;;;943:22:84;;8:9:-1;5:2;;;30:1;27;20:12;5:2;943:22:84;;;:::i;999:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;999:30:84;;;:::i;599:107:164:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:107:164;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;599:107:164;-1:-1:-1;;;;;599:107:164;;:::i;1447:43:84:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1447:43:84;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1447:43:84;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1447:43:84;;;;;;;;;;;;;;798;;8:9:-1;5:2;;;30:1;27;20:12;5:2;798:43:84;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;798:43:84;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;1134:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;2386:165:147:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2386:165:147;;;:::i;1098:27:84:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1098:27:84;;;:::i;1791:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1791:41:84;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1791:41:84;-1:-1:-1;;;;;1791:41:84;;:::i;1404:91:148:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:91:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:91:148;-1:-1:-1;;;;;1404:91:148;;:::i;1194:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1194:117:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1194:117:148;-1:-1:-1;;;;;1194:117:148;;:::i;1622:47:84:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1622:47:84;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1622:47:84;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;725:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;725:26:84;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1351:98:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;648:37:84:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;648:37:84;;;:::i;2386:165:147:-;1291:31;;;-1:-1:-1;;;1291:31:147;;;;;;;;;;;;2534:10;;2510:38::o;880:18:84:-;;;-1:-1:-1;;;;;880:18:84;;:::o;828:113:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;886:14:164;;903:5;886:14;;;:6;:14;;;;;;;;;:22;;-1:-1:-1;;886:22:164;;;917:20;;;;;;;;;;;;;;;;;828:113;:::o;2983:134:147:-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o;149:38:164:-;;;;;;;;;;;;;;;:::o;943:22:84:-;;;-1:-1:-1;;;;;943:22:84;;:::o;999:30::-;;;-1:-1:-1;;;;;999:30:84;;:::o;599:107:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;654:14:164;;;;;;671:4;654:14;;;;;;;;;:21;;-1:-1:-1;;654:21:164;;;;;;;684:18;;;;;;;;;;;;;;;;;599:107;:::o;1447:43:84:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1447:43:84;;:::o;798:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;798:43:84;;-1:-1:-1;798:43:84;:::o;851:68:142:-;889:7;909:6;;;;-1:-1:-1;;;;;909:6:142;;851:68::o;1134:83::-;1174:4;1207:6;;;;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1098:27:84:-;;;-1:-1:-1;;;;;1098:27:84;;:::o;1791:41::-;;;;;;;;;;;;;;;:::o;1404:91:148:-;1801:15:147;:13;:15::i;:::-;-1:-1:-1;;;;;1787:29:147;:10;-1:-1:-1;;;;;1787:29:147;;1779:63;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;;;;1469:22:148;1484:6;1469:14;:22::i;:::-;1404:91;:::o;1194:117::-;1801:15:147;:13;:15::i;:::-;-1:-1:-1;;;;;1787:29:147;:10;-1:-1:-1;;;;;1787:29:147;;1779:63;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;;;;1272:35:148;1291:15;1272:18;:35::i;1622:47:84:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;725:26::-;;;-1:-1:-1;;;;;725:26:84;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;648:37:84:-;;;-1:-1:-1;;;;;648:37:84;;:::o;780:87:137:-;853:10;780:87;:::o;2644:249:147:-;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2814:6;-1:-1:-1;;;;;2776:45:147;2797:15;:13;:15::i;:::-;-1:-1:-1;;;;;2776:45:147;;;;;;;;;;;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;2867:19;2862:28::o;1971:307::-;-1:-1:-1;;;;;2045:29:147;;2037:83;;;;-1:-1:-1;;;2037:83:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:15;-1:-1:-1;;;;;2129:59:147;2151:19;:17;:19::i;:::-;-1:-1:-1;;;;;2129:59:147;;;;;;;;;;;1291:31;;;-1:-1:-1;;;1291:31:147;;;;;;;;;;;;2243:28;2238:37::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;1721:17:142;;;;;-1:-1:-1;;;;;;1721:17:142;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "feeSharingProxy()": "6a26b57f",
              "getImplementation()": "aaf10f42",
              "getProxyOwner()": "1ab7710d",
              "isOwner()": "8f32d59b",
              "isVesting(address)": "c0e09852",
              "lockedSOV()": "f2f46b3b",
              "owner()": "8da5cb5b",
              "removeAdmin(address)": "1785f53c",
              "setImplementation(address)": "d784d426",
              "setProxyOwner(address)": "caaee91c",
              "staking()": "4cf088d9",
              "transferOwnership(address)": "f2fde38b",
              "vestingFactory()": "f60826ee",
              "vestingOwner()": "bd7b5908",
              "vestingRegistries(uint256)": "842a49d5",
              "vestings(uint256)": "821bee73",
              "vestingsOf(address,uint256)": "dfb9366d"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "getImplementation()": {
                "notice": "Return address of the implementation."
              },
              "getProxyOwner()": {
                "notice": "Return address of the owner."
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "setImplementation(address)": {
                "notice": "Set address of the implementation."
              },
              "setProxyOwner(address)": {
                "notice": "Set address of the owner."
              }
            }
          }
        }
      },
      "contracts/governance/Vesting/VestingRegistryStorage.sol": {
        "VestingRegistryStorage": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "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"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharingProxy",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isVesting",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOV",
              "outputs": [
                {
                  "internalType": "contract LockedSOV",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingFactory",
              "outputs": [
                {
                  "internalType": "contract IVestingFactory",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestingRegistries",
              "outputs": [
                {
                  "internalType": "contract IVestingRegistry",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestings",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "vestingType",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "vestingCreationType",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "vestingAddress",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestingsOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Use Ownable as a parent to align storage structure for Logic and Proxy contracts.",
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Vesting Registry Storage Contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361007016565b6000805462010000600160b01b031916620100006001600160a01b038416908102919091178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610074565b3390565b6106bb806100836000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063dfb9366d11610066578063dfb9366d14610260578063f2f46b3b1461029e578063f2fde38b146102a6578063f60826ee146102cc57610100565b80638da5cb5b146102225780638f32d59b1461022a578063bd7b590814610232578063c0e098521461023a57610100565b80636a26b57f116100d35780636a26b57f14610193578063704802751461019b578063821bee73146101c1578063842a49d51461020557610100565b806308dcb360146101055780631785f53c14610129578063429b62e5146101515780634cf088d91461018b575b600080fd5b61010d6102d4565b604080516001600160a01b039092168252519081900360200190f35b61014f6004803603602081101561013f57600080fd5b50356001600160a01b03166102e3565b005b6101776004803603602081101561016757600080fd5b50356001600160a01b0316610383565b604080519115158252519081900360200190f35b61010d610398565b61010d6103a7565b61014f600480360360208110156101b157600080fd5b50356001600160a01b03166103b6565b6101de600480360360208110156101d757600080fd5b503561045a565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b61010d6004803603602081101561021b57600080fd5b5035610484565b61010d6104ab565b6101776104c0565b61010d6104ea565b6101776004803603602081101561025057600080fd5b50356001600160a01b03166104f9565b61028c6004803603604081101561027657600080fd5b506001600160a01b03813516906020013561050e565b60408051918252519081900360200190f35b61010d61053c565b61014f600480360360208110156102bc57600080fd5b50356001600160a01b031661054b565b61010d61059f565b6005546001600160a01b031681565b6102eb6104c0565b61032b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b60016020526000908152604090205460ff1681565b6006546001600160a01b031681565b6007546001600160a01b031681565b6103be6104c0565b6103fe576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6009602052600090815260409020805460018201546002909201549091906001600160a01b031683565b6004818154811061049157fe5b6000918252602090912001546001600160a01b0316905081565b6000546201000090046001600160a01b031690565b600080546201000090046001600160a01b03166104db6105ae565b6001600160a01b031614905090565b6008546001600160a01b031681565b600b6020526000908152604090205460ff1681565b600a602052816000526040600020818154811061052757fe5b90600052602060002001600091509150505481565b6003546001600160a01b031681565b6105536104c0565b610593576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61059c816105b2565b50565b6002546001600160a01b031681565b3390565b6001600160a01b0381166105f75760405162461bcd60e51b81526004018080602001828103825260268152602001806106616026913960400191505060405180910390fd5b600080546040516001600160a01b03808516936201000090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03909216620100000262010000600160b01b031990921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a7231582077c30fb1938440ed91e1d86835b48d13640a8cda0c051631e956e3e39b3779f064736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x70 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x74 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x6BB DUP1 PUSH2 0x83 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDFB9366D GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDFB9366D EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2A6 JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x2CC JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xC0E09852 EQ PUSH2 0x23A JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x821BEE73 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x842A49D5 EQ PUSH2 0x205 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x18B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x2D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x383 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x398 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3B6 JUMP JUMPDEST PUSH2 0x1DE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x484 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x177 PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x4EA JUMP JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4F9 JUMP JUMPDEST PUSH2 0x28C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x53C JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x54B JUMP JUMPDEST PUSH2 0x10D PUSH2 0x59F JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x32B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x3BE PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x3FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x491 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4DB PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x527 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x553 PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x593 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x59C DUP2 PUSH2 0x5B2 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x661 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 PUSH3 0x10000 SWAP1 SWAP4 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A7231582077C30FB1938440 0xED SWAP2 0xE1 0xD8 PUSH9 0x35B48D13640A8CDA0C SDIV AND BALANCE 0xE9 JUMP 0xE3 0xE3 SWAP12 CALLDATACOPY PUSH26 0xF064736F6C634300051100320000000000000000000000000000 ",
              "sourceMap": "544:1291:84:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;;-1:-1:-1;;;;;713:18:142;;;;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;544:1291:84;;780:87:137;853:10;780:87;:::o;544:1291:84:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063dfb9366d11610066578063dfb9366d14610260578063f2f46b3b1461029e578063f2fde38b146102a6578063f60826ee146102cc57610100565b80638da5cb5b146102225780638f32d59b1461022a578063bd7b590814610232578063c0e098521461023a57610100565b80636a26b57f116100d35780636a26b57f14610193578063704802751461019b578063821bee73146101c1578063842a49d51461020557610100565b806308dcb360146101055780631785f53c14610129578063429b62e5146101515780634cf088d91461018b575b600080fd5b61010d6102d4565b604080516001600160a01b039092168252519081900360200190f35b61014f6004803603602081101561013f57600080fd5b50356001600160a01b03166102e3565b005b6101776004803603602081101561016757600080fd5b50356001600160a01b0316610383565b604080519115158252519081900360200190f35b61010d610398565b61010d6103a7565b61014f600480360360208110156101b157600080fd5b50356001600160a01b03166103b6565b6101de600480360360208110156101d757600080fd5b503561045a565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b61010d6004803603602081101561021b57600080fd5b5035610484565b61010d6104ab565b6101776104c0565b61010d6104ea565b6101776004803603602081101561025057600080fd5b50356001600160a01b03166104f9565b61028c6004803603604081101561027657600080fd5b506001600160a01b03813516906020013561050e565b60408051918252519081900360200190f35b61010d61053c565b61014f600480360360208110156102bc57600080fd5b50356001600160a01b031661054b565b61010d61059f565b6005546001600160a01b031681565b6102eb6104c0565b61032b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b60016020526000908152604090205460ff1681565b6006546001600160a01b031681565b6007546001600160a01b031681565b6103be6104c0565b6103fe576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6009602052600090815260409020805460018201546002909201549091906001600160a01b031683565b6004818154811061049157fe5b6000918252602090912001546001600160a01b0316905081565b6000546201000090046001600160a01b031690565b600080546201000090046001600160a01b03166104db6105ae565b6001600160a01b031614905090565b6008546001600160a01b031681565b600b6020526000908152604090205460ff1681565b600a602052816000526040600020818154811061052757fe5b90600052602060002001600091509150505481565b6003546001600160a01b031681565b6105536104c0565b610593576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61059c816105b2565b50565b6002546001600160a01b031681565b3390565b6001600160a01b0381166105f75760405162461bcd60e51b81526004018080602001828103825260268152602001806106616026913960400191505060405180910390fd5b600080546040516001600160a01b03808516936201000090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03909216620100000262010000600160b01b031990921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a7231582077c30fb1938440ed91e1d86835b48d13640a8cda0c051631e956e3e39b3779f064736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDFB9366D GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDFB9366D EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2A6 JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x2CC JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xC0E09852 EQ PUSH2 0x23A JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x821BEE73 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x842A49D5 EQ PUSH2 0x205 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x18B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x2D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x383 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x398 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3B6 JUMP JUMPDEST PUSH2 0x1DE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x484 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x177 PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x4EA JUMP JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4F9 JUMP JUMPDEST PUSH2 0x28C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x53C JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x54B JUMP JUMPDEST PUSH2 0x10D PUSH2 0x59F JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x32B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x3BE PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x3FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x491 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4DB PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x527 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x553 PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x593 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x59C DUP2 PUSH2 0x5B2 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x661 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 PUSH3 0x10000 SWAP1 SWAP4 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A7231582077C30FB1938440 0xED SWAP2 0xE1 0xD8 PUSH9 0x35B48D13640A8CDA0C SDIV AND BALANCE 0xE9 JUMP 0xE3 0xE3 SWAP12 CALLDATACOPY PUSH26 0xF064736F6C634300051100320000000000000000000000000000 ",
              "sourceMap": "544:1291:84:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;544:1291:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;880:18;;;:::i;:::-;;;;-1:-1:-1;;;;;880:18:84;;;;;;;;;;;;;;828:113:164;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;828:113:164;-1:-1:-1;;;;;828:113:164;;:::i;:::-;;149:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;149:38:164;-1:-1:-1;;;;;149:38:164;;:::i;:::-;;;;;;;;;;;;;;;;;;943:22:84;;;:::i;999:30::-;;;:::i;599:107:164:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;599:107:164;-1:-1:-1;;;;;599:107:164;;:::i;1447:43:84:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1447:43:84;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1447:43:84;;;;;;;;;;;;;;798;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;798:43:84;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;1098:27:84:-;;;:::i;1791:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1791:41:84;-1:-1:-1;;;;;1791:41:84;;:::i;1622:47::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1622:47:84;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;725:26;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;648:37:84:-;;;:::i;880:18::-;;;-1:-1:-1;;;;;880:18:84;;:::o;828:113:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;886:14:164;;903:5;886:14;;;:6;:14;;;;;;;;;:22;;-1:-1:-1;;886:22:164;;;917:20;;;;;;;;;;;;;;;;;828:113;:::o;149:38::-;;;;;;;;;;;;;;;:::o;943:22:84:-;;;-1:-1:-1;;;;;943:22:84;;:::o;999:30::-;;;-1:-1:-1;;;;;999:30:84;;:::o;599:107:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;654:14:164;;;;;;671:4;654:14;;;;;;;;;:21;;-1:-1:-1;;654:21:164;;;;;;;684:18;;;;;;;;;;;;;;;;;599:107;:::o;1447:43:84:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1447:43:84;;:::o;798:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;798:43:84;;-1:-1:-1;798:43:84;:::o;851:68:142:-;889:7;909:6;;;;-1:-1:-1;;;;;909:6:142;;851:68::o;1134:83::-;1174:4;1207:6;;;;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1098:27:84:-;;;-1:-1:-1;;;;;1098:27:84;;:::o;1791:41::-;;;;;;;;;;;;;;;:::o;1622:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;725:26::-;;;-1:-1:-1;;;;;725:26:84;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;648:37:84:-;;;-1:-1:-1;;;;;648:37:84;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;1721:17:142;;;;;-1:-1:-1;;;;;;1721:17:142;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "feeSharingProxy()": "6a26b57f",
              "isOwner()": "8f32d59b",
              "isVesting(address)": "c0e09852",
              "lockedSOV()": "f2f46b3b",
              "owner()": "8da5cb5b",
              "removeAdmin(address)": "1785f53c",
              "staking()": "4cf088d9",
              "transferOwnership(address)": "f2fde38b",
              "vestingFactory()": "f60826ee",
              "vestingOwner()": "bd7b5908",
              "vestingRegistries(uint256)": "842a49d5",
              "vestings(uint256)": "821bee73",
              "vestingsOf(address,uint256)": "dfb9366d"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              }
            },
            "notice": "This contract is just the storage required for vesting registry. It is parent of VestingRegistryProxy and VestingRegistryLogic."
          }
        }
      },
      "contracts/governance/Vesting/VestingStorage.sol": {
        "VestingStorage": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "cliff",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "duration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "endDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharingProxy",
              "outputs": [
                {
                  "internalType": "contract IFeeSharingProxy",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract Staking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "startDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tokenOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Use Ownable as a parent to align storage structure for Logic and Proxy contracts.",
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Vesting Storage Contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b610342806100796000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80636a26b57f116100715780636a26b57f146101045780638da5cb5b1461010c5780638f32d59b14610114578063a3e6761014610130578063c24a0f8b14610138578063f2fde38b14610140576100a9565b806308dcb360146100ae5780630b97bc86146100d25780630fb5a6b4146100ec57806313d033c0146100f45780634cf088d9146100fc575b600080fd5b6100b6610168565b604080516001600160a01b039092168252519081900360200190f35b6100da610177565b60408051918252519081900360200190f35b6100da61017d565b6100da610183565b6100b6610189565b6100b6610198565b6100b66101a7565b61011c6101b6565b604080519115158252519081900360200190f35b6100b66101da565b6100da6101e9565b6101666004803603602081101561015657600080fd5b50356001600160a01b03166101ef565b005b6001546001600160a01b031681565b60075481565b60065481565b60055481565b6002546001600160a01b031681565b6004546001600160a01b031681565b6000546001600160a01b031690565b600080546001600160a01b03166101cb610243565b6001600160a01b031614905090565b6003546001600160a01b031681565b60085481565b6101f76101b6565b610237576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61024081610247565b50565b3390565b6001600160a01b03811661028c5760405162461bcd60e51b81526004018080602001828103825260268152602001806102e86026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158209d8c44b8b65acd9326404446b6451611a73b37f290a7ff1d325b3a05478bf7a064736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x342 DUP1 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A26B57F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x140 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0xEC JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0xFC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDA PUSH2 0x177 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDA PUSH2 0x17D JUMP JUMPDEST PUSH2 0xDA PUSH2 0x183 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x189 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x198 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x1A7 JUMP JUMPDEST PUSH2 0x11C PUSH2 0x1B6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x1DA JUMP JUMPDEST PUSH2 0xDA PUSH2 0x1E9 JUMP JUMPDEST PUSH2 0x166 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EF JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CB PUSH2 0x243 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1F7 PUSH2 0x1B6 JUMP JUMPDEST PUSH2 0x237 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x240 DUP2 PUSH2 0x247 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x28C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E8 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158209D8C44B8B65ACD SWAP4 0x26 BLOCKHASH DIFFICULTY CHAINID 0xB6 GASLIMIT AND GT 0xA7 EXTCODESIZE CALLDATACOPY CALLCODE SWAP1 0xA7 SELFDESTRUCT SAR ORIGIN JUMPDEST GASPRICE SDIV SELFBALANCE DUP12 0xF7 LOG0 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "431:761:85:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;431:761:85;;780:87:137;853:10;780:87;:::o;431:761:85:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100a95760003560e01c80636a26b57f116100715780636a26b57f146101045780638da5cb5b1461010c5780638f32d59b14610114578063a3e6761014610130578063c24a0f8b14610138578063f2fde38b14610140576100a9565b806308dcb360146100ae5780630b97bc86146100d25780630fb5a6b4146100ec57806313d033c0146100f45780634cf088d9146100fc575b600080fd5b6100b6610168565b604080516001600160a01b039092168252519081900360200190f35b6100da610177565b60408051918252519081900360200190f35b6100da61017d565b6100da610183565b6100b6610189565b6100b6610198565b6100b66101a7565b61011c6101b6565b604080519115158252519081900360200190f35b6100b66101da565b6100da6101e9565b6101666004803603602081101561015657600080fd5b50356001600160a01b03166101ef565b005b6001546001600160a01b031681565b60075481565b60065481565b60055481565b6002546001600160a01b031681565b6004546001600160a01b031681565b6000546001600160a01b031690565b600080546001600160a01b03166101cb610243565b6001600160a01b031614905090565b6003546001600160a01b031681565b60085481565b6101f76101b6565b610237576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61024081610247565b50565b3390565b6001600160a01b03811661028c5760405162461bcd60e51b81526004018080602001828103825260268152602001806102e86026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158209d8c44b8b65acd9326404446b6451611a73b37f290a7ff1d325b3a05478bf7a064736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A26B57F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x140 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0xEC JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0xFC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDA PUSH2 0x177 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDA PUSH2 0x17D JUMP JUMPDEST PUSH2 0xDA PUSH2 0x183 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x189 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x198 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x1A7 JUMP JUMPDEST PUSH2 0x11C PUSH2 0x1B6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x1DA JUMP JUMPDEST PUSH2 0xDA PUSH2 0x1E9 JUMP JUMPDEST PUSH2 0x166 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EF JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CB PUSH2 0x243 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1F7 PUSH2 0x1B6 JUMP JUMPDEST PUSH2 0x237 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x240 DUP2 PUSH2 0x247 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x28C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E8 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158209D8C44B8B65ACD SWAP4 0x26 BLOCKHASH DIFFICULTY CHAINID 0xB6 GASLIMIT AND GT 0xA7 EXTCODESIZE CALLDATACOPY CALLCODE SWAP1 0xA7 SELFDESTRUCT SAR ORIGIN JUMPDEST GASPRICE SDIV SELFBALANCE DUP12 0xF7 LOG0 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "431:761:85:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;431:761:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;506:17;;;:::i;:::-;;;;-1:-1:-1;;;;;506:17:85;;;;;;;;;;;;;;996:24;;;:::i;:::-;;;;;;;;;;;;;;;;925:23;;;:::i;820:20::-;;;:::i;570:22::-;;;:::i;702:39::-;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;641:25:85;;;:::i;1066:22::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;506:17:85;;;-1:-1:-1;;;;;506:17:85;;:::o;996:24::-;;;;:::o;925:23::-;;;;:::o;820:20::-;;;;:::o;570:22::-;;;-1:-1:-1;;;;;570:22:85;;:::o;702:39::-;;;-1:-1:-1;;;;;702:39:85;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;641:25:85:-;;;-1:-1:-1;;;;;641:25:85;;:::o;1066:22::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "cliff()": "13d033c0",
              "duration()": "0fb5a6b4",
              "endDate()": "c24a0f8b",
              "feeSharingProxy()": "6a26b57f",
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "staking()": "4cf088d9",
              "startDate()": "0b97bc86",
              "tokenOwner()": "a3e67610",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract is just the storage required for vesting. It is parent of VestingLogic and TeamVesting."
          }
        }
      },
      "contracts/interfaces/IChai.sol": {
        "IChai": {
          "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"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_who",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "src",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "draw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "src",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "exit",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "dst",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "join",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "src",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "dst",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "move",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "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"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "draw(address,uint256)": "4a03707c",
              "exit(address,uint256)": "ef693bed",
              "join(address,uint256)": "3b4da69f",
              "move(address,address,uint256)": "bb35783b",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "userdoc": {
            "methods": {}
          }
        },
        "IPot": {
          "abi": [
            {
              "constant": true,
              "inputs": [],
              "name": "chi",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "dsr",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rho",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "chi()": "c92aecc4",
              "dsr()": "487bf082",
              "rho()": "20aba08b"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/interfaces/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"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_who",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "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"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "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"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/interfaces/ILoanPool.sol": {
        "ILoanPool": {
          "abi": [
            {
              "constant": true,
              "inputs": [],
              "name": "borrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tokenPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAssetSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "borrowInterestRate()": "8325a1c0",
              "tokenPrice()": "7ff9b596",
              "totalAssetSupply()": "8fb807c5"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/interfaces/ISovryn.sol": {
        "ISovryn": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newPrincipal",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newCollateral",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestDuration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                }
              ],
              "name": "Borrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "closer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "repayAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralWithdrawAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                }
              ],
              "name": "CloseWithDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "closer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "positionCloseSize",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanCloseAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "exitPrice",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentLeverage",
                  "type": "uint256"
                }
              ],
              "name": "CloseWithSwap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegated",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "isActive",
                  "type": "bool"
                }
              ],
              "name": "DelegatedManagerSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "rate",
                  "type": "uint256"
                }
              ],
              "name": "DepositCollateral",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnRewardFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "ExternalSwap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "liquidator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "repayAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralWithdrawAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                }
              ],
              "name": "Liquidate",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "name": "LoanParamsDisabled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "LoanParamsIdDisabled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "LoanParamsIdSetup",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "name": "LoanParamsSetup",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "LoanSwap",
              "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": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayBorrowingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayLendingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "isHeld",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tradingFeeTokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmountPaid",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFeeToAffiliate",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tradingFeeTokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmountTryingToPaid",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFeeToAffiliateFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetAffiliateFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetAffiliateTradingTokenFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "SetAffiliatesReferrer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "alreadySet",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "userNotFirstTrade",
                  "type": "bool"
                }
              ],
              "name": "SetAffiliatesReferrerFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetBorrowingFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldController",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newController",
                  "type": "address"
                }
              ],
              "name": "SetFeesController",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetLendingFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetLiquidationIncentivePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "loanPool",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlying",
                  "type": "address"
                }
              ],
              "name": "SetLoanPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "SetLockedSOVAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetMaxSwapSize",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldMinReferrals",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newMinReferrals",
                  "type": "uint256"
                }
              ],
              "name": "SetMinReferralsToPayoutAffiliates",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "oldValue",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newValue",
                  "type": "address"
                }
              ],
              "name": "SetPriceFeedContract",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldProtocol",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newProtocol",
                  "type": "address"
                }
              ],
              "name": "SetProtocolAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldProtocolToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newProtocolToken",
                  "type": "address"
                }
              ],
              "name": "SetProtocolTokenAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newRebatePercent",
                  "type": "uint256"
                }
              ],
              "name": "SetRebatePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetRolloverBaseReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldTokenAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newTokenAddress",
                  "type": "address"
                }
              ],
              "name": "SetSOVTokenAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldSovrynSwapContractRegistryAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newSovrynSwapContractRegistryAddress",
                  "type": "address"
                }
              ],
              "name": "SetSovrynSwapContractRegistryAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldSpecialRebatesPercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newSpecialRebatesPercent",
                  "type": "uint256"
                }
              ],
              "name": "SetSpecialRebates",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "isActive",
                  "type": "bool"
                }
              ],
              "name": "SetSupportedTokens",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetSwapExternalFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "oldValue",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newValue",
                  "type": "address"
                }
              ],
              "name": "SetSwapsImplContract",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetTradingFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldBasisPoint",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newBasisPoint",
                  "type": "uint256"
                }
              ],
              "name": "SetTradingRebateRewardsBasisPoint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "SetUserNotFirstTradeFlag",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldWethToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newWethToken",
                  "type": "address"
                }
              ],
              "name": "SetWrbtcToken",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "oldFlag",
                  "type": "bool"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "newFlag",
                  "type": "bool"
                }
              ],
              "name": "TogglePaused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "positionSize",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "borrowedAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "settlementDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "entryPrice",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "entryLeverage",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentLeverage",
                  "type": "uint256"
                }
              ],
              "name": "Trade",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawAffiliatesReferrerTokenFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawBorrowingFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lendingAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tradingAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "borrowingAmount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawLendingFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawTradingFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "shouldRefund",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountInRbtc",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "threshold",
                  "type": "uint256"
                }
              ],
              "name": "swapExcess",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "isTorqueLoan",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "initialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[4]",
                  "name": "sentAddresses",
                  "type": "address[4]"
                },
                {
                  "internalType": "uint256[5]",
                  "name": "sentValues",
                  "type": "uint256[5]"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "borrowOrTradeFromPool",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                }
              ],
              "name": "checkPriceDivergence",
              "outputs": [],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "name": "closeWithDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "loanCloseAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "withdrawToken",
                  "type": "address"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "swapAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "returnTokenIsCollateral",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "closeWithSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "loanCloseAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "withdrawToken",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "name": "depositCollateral",
              "outputs": [],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "depositProtocolToken",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "loanParamsIdList",
                  "type": "bytes32[]"
                }
              ],
              "name": "disableLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "useCollateral",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "extendLoanByInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "secondsExtended",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "start",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "unsafeOnly",
                  "type": "bool"
                }
              ],
              "name": "getActiveLoans",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "loanId",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "principal",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "collateral",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "interestOwedPerDay",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "interestDepositRemaining",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startRate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "currentMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLiquidatable",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxSeizable",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ISovryn.LoanReturnData[]",
                  "name": "loansData",
                  "type": "tuple[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getAffiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getAffiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "affiliateTradingTokenFeePercent",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "referrerTokensList",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "referrerTokensBalances",
                  "type": "uint256[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesReferrerTokenBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesReferrerTokensList",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "tokensList",
                  "type": "address[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesTokenRewardsValueInRbtc",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "rbtcTotalAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "marginAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "isTorqueLoan",
                  "type": "bool"
                }
              ],
              "name": "getBorrowAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "newPrincipal",
                  "type": "uint256"
                }
              ],
              "name": "getEstimatedMarginExposure",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getFeeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "ref",
                  "type": "address"
                }
              ],
              "name": "getLegacyOracle",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                }
              ],
              "name": "getLenderInterestData",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "interestPaid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestPaidDate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestOwedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestUnPaid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestFeePercent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                }
              ],
              "name": "getLoan",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "loanId",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "principal",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "collateral",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "interestOwedPerDay",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "interestDepositRemaining",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startRate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "currentMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLiquidatable",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxSeizable",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ISovryn.LoanReturnData",
                  "name": "loanData",
                  "type": "tuple"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                }
              ],
              "name": "getLoanInterestData",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "interestOwedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestDepositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestDepositRemaining",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "loanParamsIdList",
                  "type": "bytes32[]"
                }
              ],
              "name": "getLoanParams",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "id",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bool",
                      "name": "active",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "minInitialMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanParamsStruct.LoanParams[]",
                  "name": "loanParamsList",
                  "type": "tuple[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "start",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getLoanParamsList",
              "outputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "loanParamsList",
                  "type": "bytes32[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "start",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getLoanPoolsList",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getLockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getMinReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getProtocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getReferralsList",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "refList",
                  "type": "address[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "newPrincipal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "marginAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "isTorqueLoan",
                  "type": "bool"
                }
              ],
              "name": "getRequiredCollateral",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "collateralAmountRequired",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getSovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                }
              ],
              "name": "getSpecialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "specialRebatesPercent",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmount",
                  "type": "uint256"
                }
              ],
              "name": "getSwapExpectedReturn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getSwapExternalFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "swapExternalFeePercent",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "sig",
                  "type": "string"
                }
              ],
              "name": "getTarget",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                }
              ],
              "name": "getTotalPrincipal",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getTradingRebateRewardsBasisPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "start",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanType",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "isLender",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "unsafeOnly",
                  "type": "bool"
                }
              ],
              "name": "getUserLoans",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "loanId",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "principal",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "collateral",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "interestOwedPerDay",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "interestDepositRemaining",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startRate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "currentMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLiquidatable",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxSeizable",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ISovryn.LoanReturnData[]",
                  "name": "loansData",
                  "type": "tuple[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanPool",
                  "type": "address"
                }
              ],
              "name": "isLoanPool",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isProtocolPaused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "closeAmount",
                  "type": "uint256"
                }
              ],
              "name": "liquidate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "loanCloseAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "seizedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "seizedToken",
                  "type": "address"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                }
              ],
              "name": "minInitialMargin",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tradingFeeTokenBaseAmount",
                  "type": "uint256"
                }
              ],
              "name": "payTradingFeeToAffiliatesReferrer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "affiliatesBonusSOVAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "affiliatesBonusTokenAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                }
              ],
              "name": "reduceLoanByInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "secondsReduced",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "replaceContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "rollover",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setAffiliateFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setAffiliateTradingTokenFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "setAffiliatesReferrer",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setBorrowingFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "delegated",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "toggle",
                  "type": "bool"
                }
              ],
              "name": "setDelegatedManager",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newController",
                  "type": "address"
                }
              ],
              "name": "setFeesController",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "refs",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "oracles",
                  "type": "address[]"
                }
              ],
              "name": "setLegacyOracles",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setLendingFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newAmount",
                  "type": "uint256"
                }
              ],
              "name": "setLiquidationIncentivePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "pools",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                }
              ],
              "name": "setLoanPool",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newSOVLockedAddress",
                  "type": "address"
                }
              ],
              "name": "setLockedSOVAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newAmount",
                  "type": "uint256"
                }
              ],
              "name": "setMaxDisagreement",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newAmount",
                  "type": "uint256"
                }
              ],
              "name": "setMaxSwapSize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newMinReferrals",
                  "type": "uint256"
                }
              ],
              "name": "setMinReferralsToPayoutAffiliates",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newContract",
                  "type": "address"
                }
              ],
              "name": "setPriceFeedContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_protocolTokenAddress",
                  "type": "address"
                }
              ],
              "name": "setProtocolTokenAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "rebatePercent",
                  "type": "uint256"
                }
              ],
              "name": "setRebatePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "transactionCost",
                  "type": "uint256"
                }
              ],
              "name": "setRolloverBaseReward",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newSovTokenAddress",
                  "type": "address"
                }
              ],
              "name": "setSOVTokenAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newAmount",
                  "type": "uint256"
                }
              ],
              "name": "setSourceBuffer",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newProtocolAddress",
                  "type": "address"
                }
              ],
              "name": "setSovrynProtocolAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "registryAddress",
                  "type": "address"
                }
              ],
              "name": "setSovrynSwapContractRegistryAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "specialRebatesPercent",
                  "type": "uint256"
                }
              ],
              "name": "setSpecialRebates",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "addrs",
                  "type": "address[]"
                },
                {
                  "internalType": "bool[]",
                  "name": "toggles",
                  "type": "bool[]"
                }
              ],
              "name": "setSupportedTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setSwapExternalFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newContract",
                  "type": "address"
                }
              ],
              "name": "setSwapsImplContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "string[]",
                  "name": "sigsArr",
                  "type": "string[]"
                },
                {
                  "internalType": "address[]",
                  "name": "targetsArr",
                  "type": "address[]"
                }
              ],
              "name": "setTargets",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setTradingFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newBasisPoint",
                  "type": "uint256"
                }
              ],
              "name": "setTradingRebateRewardsBasisPoint",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "setUserNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "wrbtcTokenAddress",
                  "type": "address"
                }
              ],
              "name": "setWrbtcToken",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "id",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bool",
                      "name": "active",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "minInitialMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanParamsStruct.LoanParams[]",
                  "name": "loanParamsList",
                  "type": "tuple[]"
                }
              ],
              "name": "setupLoanParams",
              "outputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "loanParamsIdList",
                  "type": "bytes32[]"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "returnToSender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "requiredDestTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "swapData",
                  "type": "bytes"
                }
              ],
              "name": "swapExternal",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "destTokenAmountReceived",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmountUsed",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "paused",
                  "type": "bool"
                }
              ],
              "name": "togglePaused",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                }
              ],
              "name": "withdrawAccruedInterest",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawAffiliatesReferrerTokenFees",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "withdrawAllAffiliatesReferrerTokenFees",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawBorrowingFees",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawCollateral",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "actualWithdrawAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawLendingFees",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawProtocolToken",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawTradingFees",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowOrTradeFromPool(bytes32,bytes32,bool,uint256,address[4],uint256[5],bytes)": "585314cf",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "checkPriceDivergence(address,address,uint256,uint256)": "b17da56e",
              "closeWithDeposit(bytes32,address,uint256)": "366f513b",
              "closeWithSwap(bytes32,address,uint256,bool,bytes)": "f8de21d2",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "depositCollateral(bytes32,uint256)": "dea9b464",
              "depositProtocolToken(uint256)": "3c56ae1b",
              "disableLoanParams(bytes32[])": "fe30fa6a",
              "extendLoanByInterest(bytes32,address,uint256,bool,bytes)": "5daf8a82",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "getActiveLoans(uint256,uint256,bool)": "60857c2c",
              "getAffiliateRewardsHeld(address)": "8417a2ae",
              "getAffiliateTradingTokenFeePercent()": "824fcdc9",
              "getAffiliatesReferrerBalances(address)": "f19ece6f",
              "getAffiliatesReferrerTokenBalance(address,address)": "a22473a2",
              "getAffiliatesReferrerTokensList(address)": "1c9f66c2",
              "getAffiliatesTokenRewardsValueInRbtc(address)": "d80100ea",
              "getAffiliatesUserReferrer(address)": "115cc0ce",
              "getBorrowAmount(address,address,uint256,uint256,bool)": "e762319f",
              "getEstimatedMarginExposure(address,address,uint256,uint256,uint256,uint256)": "d67f7077",
              "getFeeRebatePercent()": "3f1ae8b9",
              "getLegacyOracle(address)": "61e9a50b",
              "getLenderInterestData(address,address)": "d1979fb0",
              "getLoan(bytes32)": "8932f5f7",
              "getLoanInterestData(bytes32)": "9b16cd87",
              "getLoanParams(bytes32[])": "2d9cd076",
              "getLoanParamsList(address,uint256,uint256)": "cf59e67b",
              "getLoanPoolsList(uint256,uint256)": "402946b9",
              "getLockedSOVAddress()": "f44942ec",
              "getMinReferralsToPayout()": "b41263b6",
              "getProtocolAddress()": "07024c25",
              "getReferralsList(address)": "249556fb",
              "getRequiredCollateral(address,address,uint256,uint256,bool)": "25decac0",
              "getSovTokenAddress()": "4bcfe726",
              "getSpecialRebates(address,address)": "59d0d9ec",
              "getSwapExpectedReturn(address,address,uint256)": "69455ddc",
              "getSwapExternalFeePercent()": "462096f3",
              "getTarget(string)": "da1b620b",
              "getTotalPrincipal(address,address)": "4a1e88fe",
              "getTradingRebateRewardsBasisPoint()": "e4196480",
              "getUserLoans(address,uint256,uint256,uint256,bool,bool)": "02a3fe64",
              "getUserNotFirstTradeFlag(address)": "b05f6570",
              "isLoanPool(address)": "115dd4b1",
              "isOwner()": "8f32d59b",
              "isProtocolPaused()": "dac88561",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidate(bytes32,address,uint256)": "e4f3e739",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minInitialMargin(bytes32)": "ca74a5d9",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "payTradingFeeToAffiliatesReferrer(address,address,address,uint256)": "0d4d11fe",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "reduceLoanByInterest(bytes32,address,uint256)": "3d45dd49",
              "replaceContract(address)": "fb08fdaa",
              "rollover(bytes32,bytes)": "cf0eda84",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "setAffiliateFeePercent(uint256)": "d21f8e24",
              "setAffiliateTradingTokenFeePercent(uint256)": "a32bb683",
              "setAffiliatesReferrer(address,address)": "c9ddf448",
              "setBorrowingFeePercent(uint256)": "17f8b788",
              "setDelegatedManager(bytes32,address,bool)": "33d8991f",
              "setFeesController(address)": "e8997dbd",
              "setLegacyOracles(address[],address[])": "051e6c23",
              "setLendingFeePercent(uint256)": "d238db22",
              "setLiquidationIncentivePercent(uint256)": "a2ab1ba1",
              "setLoanPool(address[],address[])": "59e49e0f",
              "setLockedSOVAddress(address)": "4dd053a5",
              "setMaxDisagreement(uint256)": "7fb202e5",
              "setMaxSwapSize(uint256)": "355a395f",
              "setMinReferralsToPayoutAffiliates(uint256)": "c7c333f0",
              "setPriceFeedContract(address)": "74626404",
              "setProtocolTokenAddress(address)": "e3ff9370",
              "setRebatePercent(uint256)": "9c53874f",
              "setRolloverBaseReward(uint256)": "b1558b72",
              "setSOVTokenAddress(address)": "6fbae33b",
              "setSourceBuffer(uint256)": "a6e7cc28",
              "setSovrynProtocolAddress(address)": "9254e6bf",
              "setSovrynSwapContractRegistryAddress(address)": "2d77d0d0",
              "setSpecialRebates(address,address,uint256)": "ea0e3930",
              "setSupportedTokens(address[],bool[])": "84eaa9e0",
              "setSwapExternalFeePercent(uint256)": "29f9986d",
              "setSwapsImplContract(address)": "1a81c191",
              "setTargets(string[],address[])": "a012d827",
              "setTradingFeePercent(uint256)": "0c615ee9",
              "setTradingRebateRewardsBasisPoint(uint256)": "a1eb5683",
              "setUserNotFirstTradeFlag(address)": "f06a9c6b",
              "setWrbtcToken(address)": "d9eaaa64",
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[])": "a1ae275e",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapExternal(address,address,address,address,uint256,uint256,uint256,bytes)": "e321b540",
              "swapsImpl()": "7420ca3e",
              "togglePaused(bool)": "da541e09",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "withdrawAccruedInterest(address)": "e81fefa0",
              "withdrawAffiliatesReferrerTokenFees(address,address,uint256)": "ac92fd8e",
              "withdrawAllAffiliatesReferrerTokenFees(address)": "adfcbc98",
              "withdrawBorrowingFees(address,address,uint256)": "32e4706f",
              "withdrawCollateral(bytes32,address,uint256)": "db35400d",
              "withdrawLendingFees(address,address,uint256)": "b1ac89ca",
              "withdrawProtocolToken(address,uint256)": "96881857",
              "withdrawTradingFees(address,address,uint256)": "74326e8f",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "borrowOrTradeFromPool(bytes32,bytes32,bool,uint256,address[4],uint256[5],bytes)": {
                "notice": "/// Loan Openings //////"
              },
              "depositCollateral(bytes32,uint256)": {
                "notice": "/// Loan Maintenance //////"
              },
              "getUserNotFirstTradeFlag(address)": {
                "notice": "/// Affiliates Module //////"
              },
              "liquidate(bytes32,address,uint256)": {
                "notice": "/// Loan Closings //////"
              },
              "replaceContract(address)": {
                "notice": "/// Protocol //////"
              },
              "setLegacyOracles(address[],address[])": {
                "notice": "/// Protocol Migration //////"
              },
              "setSovrynProtocolAddress(address)": {
                "notice": "/// Protocol Settings //////"
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[])": {
                "notice": "/// Loan Settings //////"
              },
              "swapExternal(address,address,address,address,uint256,uint256,uint256,bytes)": {
                "notice": "/// Swaps External //////"
              }
            }
          }
        }
      },
      "contracts/interfaces/IWrbtc.sol": {
        "IWrbtc": {
          "abi": [
            {
              "constant": false,
              "inputs": [],
              "name": "deposit",
              "outputs": [],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "deposit()": "d0e30db0",
              "withdraw(uint256)": "2e1a7d4d"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/interfaces/IWrbtcERC20.sol": {
        "IWrbtcERC20": {
          "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"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_who",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "deposit",
              "outputs": [],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "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"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "deposit()": "d0e30db0",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "withdraw(uint256)": "2e1a7d4d"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/locked/ILockedSOV.sol": {
        "ILockedSOV": {
          "abi": [
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_sovAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_sovAmount",
                  "type": "uint256"
                }
              ],
              "name": "depositSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                }
              ],
              "name": "withdrawAndStakeTokensFrom",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Franklin Richards - powerhousefrank@protonmail.com",
            "details": "Only use it if you know what you are doing.",
            "methods": {
              "deposit(address,uint256,uint256)": {
                "params": {
                  "_basisPoint": "The % (in Basis Point)which determines how much will be unlocked immediately.",
                  "_sovAmount": "The amount of SOV to be added to the locked and/or unlocked balance.",
                  "_userAddress": "The user whose locked balance has to be updated with `_sovAmount`."
                }
              },
              "depositSOV(address,uint256)": {
                "params": {
                  "_sovAmount": "The amount of SOV to be added to the locked balance.",
                  "_userAddress": "The user whose locked balance has to be updated with _sovAmount."
                }
              },
              "withdrawAndStakeTokensFrom(address)": {
                "params": {
                  "_userAddress": "The address of user tokens will be withdrawn."
                }
              }
            },
            "title": "The Locked SOV Interface."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "deposit(address,uint256,uint256)": "0efe6a8b",
              "depositSOV(address,uint256)": "f33bf9a1",
              "withdrawAndStakeTokensFrom(address)": "2b6df82a"
            }
          },
          "userdoc": {
            "methods": {
              "deposit(address,uint256,uint256)": {
                "notice": "Adds SOV to the user balance (Locked and Unlocked Balance based on `_basisPoint`)."
              },
              "depositSOV(address,uint256)": {
                "notice": "Adds SOV to the locked balance of a user."
              },
              "withdrawAndStakeTokensFrom(address)": {
                "notice": "Withdraws unlocked tokens and Stakes Locked tokens for a user who already have a vesting created."
              }
            },
            "notice": "This interface is an incomplete yet useful for future migration of LockedSOV Contract."
          }
        }
      },
      "contracts/locked/LockedSOV.sol": {
        "LockedSOV": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_vestingRegistry",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "_admins",
                  "type": "address[]"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_removedAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_sovAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "Deposited",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newLockedSOV",
                  "type": "address"
                }
              ],
              "name": "MigrationStarted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_vestingRegistry",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "RegistryCliffAndDurationUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "UserTransfered",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_vesting",
                  "type": "address"
                }
              ],
              "name": "VestingCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_sovAmount",
                  "type": "uint256"
                }
              ],
              "name": "Withdrawn",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_BASIS_POINT",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_DURATION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newAdmin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_addr",
                  "type": "address"
                }
              ],
              "name": "adminStatus",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "_status",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingRegistry",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "changeRegistryCliffAndDuration",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "cliff",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "createVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_vestingAddress",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "createVestingAndStake",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_sovAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_sovAmount",
                  "type": "uint256"
                }
              ],
              "name": "depositSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "duration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_addr",
                  "type": "address"
                }
              ],
              "name": "getLockedBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_balance",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_addr",
                  "type": "address"
                }
              ],
              "name": "getUnlockedBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_balance",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "migration",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "newLockedSOV",
              "outputs": [
                {
                  "internalType": "contract ILockedSOV",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_adminToRemove",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "stakeTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newLockedSOV",
                  "type": "address"
                }
              ],
              "name": "startMigration",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "transfer",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingRegistry",
              "outputs": [
                {
                  "internalType": "contract VestingRegistry",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiverAddress",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiverAddress",
                  "type": "address"
                }
              ],
              "name": "withdrawAndStakeTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                }
              ],
              "name": "withdrawAndStakeTokensFrom",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Franklin Richards - powerhousefrank@protonmail.com",
            "methods": {
              "addAdmin(address)": {
                "details": "Only callable by an Admin.",
                "params": {
                  "_newAdmin": "The address of the new admin."
                }
              },
              "adminStatus(address)": {
                "params": {
                  "_addr": "The address of the user to check the admin status."
                },
                "return": "_status True if admin, False otherwise."
              },
              "changeRegistryCliffAndDuration(address,uint256,uint256)": {
                "details": "IMPORTANT 1: You have to change Vesting Registry if you want to change Duration and/or Cliff. IMPORTANT 2: `_cliff` and `_duration` is multiplied by 4 weeks in this function.",
                "params": {
                  "_cliff": "The time period after which the tokens begin to unlock.",
                  "_duration": "The time period after all tokens will have been unlocked.",
                  "_vestingRegistry": "The Vesting Registry Address."
                }
              },
              "constructor": {
                "params": {
                  "_SOV": "The SOV Token Address.",
                  "_admins": "The list of Admins to be added.",
                  "_cliff": "The time period after which the tokens begin to unlock.",
                  "_duration": "The time period after all tokens will have been unlocked.",
                  "_vestingRegistry": "The Vesting Registry Address."
                }
              },
              "createVesting()": {
                "return": "_vestingAddress The New Vesting Contract Created."
              },
              "createVestingAndStake()": {
                "details": "Only use this function if the `duration` is small."
              },
              "deposit(address,uint256,uint256)": {
                "params": {
                  "_basisPoint": "The % (in Basis Point)which determines how much will be unlocked immediately.",
                  "_sovAmount": "The amount of SOV to be added to the locked and/or unlocked balance.",
                  "_userAddress": "The user whose locked balance has to be updated with `_sovAmount`."
                }
              },
              "depositSOV(address,uint256)": {
                "details": "This is here because there are dependency with other contracts.",
                "params": {
                  "_sovAmount": "The amount of SOV to be added to the locked balance.",
                  "_userAddress": "The user whose locked balance has to be updated with _sovAmount."
                }
              },
              "getLockedBalance(address)": {
                "params": {
                  "_addr": "The address of the user to check the locked balance."
                },
                "return": "_balance The locked balance of the address `_addr`."
              },
              "getUnlockedBalance(address)": {
                "params": {
                  "_addr": "The address of the user to check the unlocked balance."
                },
                "return": "_balance The unlocked balance of the address `_addr`."
              },
              "removeAdmin(address)": {
                "details": "Only callable by an Admin.",
                "params": {
                  "_adminToRemove": "The address of the admin which should be removed."
                }
              },
              "stakeTokens()": {
                "details": "The user should already have a vesting created, else this function will throw error."
              },
              "startMigration(address)": {
                "params": {
                  "_newLockedSOV": "The new locked sov contract address."
                }
              },
              "transfer()": {
                "details": "Address is not specified to discourage selling lockedSOV to other address."
              },
              "withdraw(address)": {
                "params": {
                  "_receiverAddress": "If specified, the unlocked balance will go to this address, else to msg.sender."
                }
              },
              "withdrawAndStakeTokens(address)": {
                "params": {
                  "_receiverAddress": "If specified, the unlocked balance will go to this address, else to msg.sender."
                }
              },
              "withdrawAndStakeTokensFrom(address)": {
                "params": {
                  "_userAddress": "The address of user tokens will be withdrawn."
                }
              }
            },
            "title": "The Locked SOV Contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50604051620019d1380380620019d1833981810160405260a08110156200003757600080fd5b81516020830151604080850151606086015160808701805193519597949692959194919392820192846401000000008211156200007357600080fd5b9083019060208201858111156200008957600080fd5b8251866020820283011164010000000082111715620000a757600080fd5b82525081516020918201928201910280838360005b83811015620000d6578181015183820152602001620000bc565b5050505091909101604052505050506001600160a01b03851662000141576040805162461bcd60e51b815260206004820152601460248201527f496e76616c696420534f5620416464726573732e000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038416620001885760405162461bcd60e51b8152600401808060200182810382526024815260200180620019ad6024913960400191505060405180910390fd5b60258210620001de576040805162461bcd60e51b815260206004820152601560248201527f4475726174696f6e20697320746f6f206c6f6e672e0000000000000000000000604482015290519081900360640190fd5b600380546001600160a01b038088166001600160a01b03199283161790925560048054928716929091169190911790556224ea00808402600155820260025560005b815181101562000278576001600860008484815181106200023d57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010162000220565b50505050505061171f806200028e6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80637195823e116100c3578063c40868931161007c578063c408689314610357578063cc6f03331461037d578063ce46643b14610385578063d74910931461038d578063e554586414610395578063f33bf9a1146103bb57610158565b80637195823e146102df5780638a4068dd146102e7578063904c5b8f146102ef578063a0f52da0146102f7578063b1724b461461031d578063bb3ff62a1461032557610158565b80631785f53c116101155780631785f53c146102195780632b6df82a1461023f5780633e4a89d1146102655780634558269f1461028b57806351cff8d91461029357806370480275146102b957610158565b806308dcb3601461015d5780630efe6a8b146101815780630fb5a6b4146101b5578063129de5bf146101cf57806313d033c0146101f55780631705a3bd146101fd575b600080fd5b6101656103e7565b604080516001600160a01b039092168252519081900360200190f35b6101b36004803603606081101561019757600080fd5b506001600160a01b0381351690602081013590604001356103f6565b005b6101bd610406565b60408051918252519081900360200190f35b6101bd600480360360208110156101e557600080fd5b50356001600160a01b031661040c565b6101bd610427565b61020561042d565b604080519115158252519081900360200190f35b6101b36004803603602081101561022f57600080fd5b50356001600160a01b0316610436565b6101b36004803603602081101561025557600080fd5b50356001600160a01b031661054d565b6102056004803603602081101561027b57600080fd5b50356001600160a01b0316610563565b6101b3610581565b6101b3600480360360208110156102a957600080fd5b50356001600160a01b031661058c565b6101b3600480360360208110156102cf57600080fd5b50356001600160a01b0316610596565b6101656106ff565b6101b361070e565b61016561081c565b6101b36004803603602081101561030d57600080fd5b50356001600160a01b031661082b565b6101bd610a29565b6101b36004803603606081101561033b57600080fd5b506001600160a01b038135169060208101359060400135610a2e565b6101bd6004803603602081101561036d57600080fd5b50356001600160a01b0316610be6565b610165610c01565b6101b3610c11565b6101bd610d53565b6101b3600480360360208110156103ab57600080fd5b50356001600160a01b0316610d59565b6101b3600480360360408110156103d157600080fd5b506001600160a01b038135169060200135610d6c565b6003546001600160a01b031681565b610401838383610d7c565b505050565b60025481565b6001600160a01b031660009081526007602052604090205490565b60015481565b60005460ff1681565b3360009081526008602052604090205460ff16610496576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff16610503576040805162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420616e2061646d696e2e0000000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260086020526040808220805460ff191690555133917fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce91a350565b6105578182610f79565b610560816110af565b50565b6001600160a01b031660009081526008602052604090205460ff1690565b61058a336110af565b565b6105603382610f79565b3360009081526008602052604090205460ff166105f6576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b038116610644576040805162461bcd60e51b815260206004820152601060248201526f24b73b30b634b21020b2323932b9b99760811b604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff16156106b2576040805162461bcd60e51b815260206004820152601960248201527f4164647265737320697320616c72656164792061646d696e2e00000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260086020526040808220805460ff191660011790555133917fbf3f493c772c8c283fd124432c2d0f539ab343faa04258fe88e52912d36b102b91a350565b6005546001600160a01b031681565b60005460ff16610765576040805162461bcd60e51b815260206004820152601e60248201527f4d6967726174696f6e20686173206e6f742079657420737461727465642e0000604482015290519081900360640190fd5b33600081815260066020526040808220805490839055600554825163f33bf9a160e01b8152600481019590955260248501829052915190936001600160a01b039092169263f33bf9a1926044808201939182900301818387803b1580156107cb57600080fd5b505af11580156107df573d6000803e3d6000fd5b50506040805184815290513393507fe4d132f68e97bb85bfbf6346414f11bd7f666e31cf86fe80669273c01c1aec9392509081900360200190a250565b6004546001600160a01b031681565b3360009081526008602052604090205460ff1661088b576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b0381166108d05760405162461bcd60e51b81526004018080602001828103825260228152602001806116486022913960400191505060405180910390fd5b600580546001600160a01b0319166001600160a01b0383811691909117909155600354604080516370a0823160e01b81523060048201529051919092169163095ea7b391849184916370a0823191602480820192602092909190829003018186803b15801561093e57600080fd5b505afa158015610952573d6000803e3d6000fd5b505050506040513d602081101561096857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156109b957600080fd5b505af11580156109cd573d6000803e3d6000fd5b505050506040513d60208110156109e357600080fd5b50506000805460ff191660011781556040516001600160a01b0383169133917fcb867aacde0a366be34dd5a67c52d14fe1a849217e927e74b490e2a12427c1829190a350565b602581565b3360009081526008602052604090205460ff16610a8e576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6004546001600160a01b0384811691161415610adb5760405162461bcd60e51b81526004018080602001828103825260458152602001806116036045913960600191505060405180910390fd5b80610b2d576040805162461bcd60e51b815260206004820152601860248201527f4475726174696f6e2063616e6e6f74206265207a65726f2e0000000000000000604482015290519081900360640190fd5b60258110610b7a576040805162461bcd60e51b8152602060048201526015602482015274223ab930ba34b7b71034b9903a37b7903637b7339760591b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0385169081179091556224ea0083810260015582026002556040805184815260208101849052815133927f11e1e2758f8144de109ed6dc1603825d8c1dac764d01766d27ad893edac53ae1928290030190a3505050565b6001600160a01b031660009081526006602052604090205490565b6000610c0c336110e0565b905090565b6000610c1c336111c1565b9050806001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5757600080fd5b505afa158015610c6b573d6000803e3d6000fd5b505050506040513d6020811015610c8157600080fd5b5051600154148015610cf85750806001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc757600080fd5b505afa158015610cdb573d6000803e3d6000fd5b505050506040513d6020811015610cf157600080fd5b5051600254145b610d49576040805162461bcd60e51b815260206004820152601760248201527f57726f6e672056657374696e67205363686564756c652e000000000000000000604482015290519081900360640190fd5b6105603382611246565b61271081565b610d633382610f79565b610560336110af565b610d7882826000610d7c565b5050565b6127108110610dbc5760405162461bcd60e51b81526004018080602001828103825260268152602001806116c56026913960400191505060405180910390fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810185905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b158015610e1557600080fd5b505af1158015610e29573d6000803e3d6000fd5b505050506040513d6020811015610e3f57600080fd5b5051905080610e7f5760405162461bcd60e51b815260040180806020018281038252603a81526020018061168b603a913960400191505060405180910390fd5b6000610ea3612710610e97868663ffffffff6113c616565b9063ffffffff61142816565b6001600160a01b038616600090815260076020526040902054909150610ecf908263ffffffff61146a16565b6001600160a01b038616600090815260076020908152604080832093909355600690522054610f16908290610f0a908763ffffffff61146a16565b9063ffffffff6114c416565b6001600160a01b0386166000818152600660209081526040918290209390935580518781529283018690528051919233927ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5929181900390910190a35050505050565b806001600160a01b038116610f8b5750815b6001600160a01b038084166000908152600760209081526040808320805490849055600354825163a9059cbb60e01b815287871660048201526024810183905292519195169263a9059cbb926044808201939182900301818787803b158015610ff357600080fd5b505af1158015611007573d6000803e3d6000fd5b505050506040513d602081101561101d57600080fd5b505190508061105d5760405162461bcd60e51b815260040180806020018281038252603a81526020018061168b603a913960400191505060405180910390fd5b826001600160a01b0316856001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb846040518082815260200191505060405180910390a35050505050565b60006110ba826111c1565b90506001600160a01b0381166110d6576110d3826110e0565b90505b610d788282611246565b6004805460015460025460408051630665a06f60e01b81526001600160a01b03878116968201969096526000602482018190526044820194909452606481019290925251919390921691630665a06f916084808301928692919082900301818387803b15801561114f57600080fd5b505af1158015611163573d6000803e3d6000fd5b50505050611170826111c1565b9050806001600160a01b0316826001600160a01b0316336001600160a01b03167fbca00eff836738917bc04c3b9c08d4bb6af3f58f9eb021d294e6b17bc6a3b86560405160405180910390a4919050565b600480546040805163cc49ede760e01b81526001600160a01b038581169482019490945290516000939092169163cc49ede791602480820192602092909190829003018186803b15801561121457600080fd5b505afa158015611228573d6000803e3d6000fd5b505050506040513d602081101561123e57600080fd5b505192915050565b6001600160a01b038083166000908152600660209081526040808320805490849055600354825163095ea7b360e01b815287871660048201526024810183905292519195169363095ea7b393604480850194919392918390030190829087803b1580156112b257600080fd5b505af11580156112c6573d6000803e3d6000fd5b505050506040513d60208110156112dc57600080fd5b5051611321576040805162461bcd60e51b815260206004820152600f60248201526e20b8383937bb32903330b4b632b21760891b604482015290519081900360640190fd5b816001600160a01b0316637547c7a3826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561136757600080fd5b505af115801561137b573d6000803e3d6000fd5b50506040805184815290516001600160a01b038087169450871692507f17a90bf25d618e67de9bc66de5762d97787b11707d112164ab54c37111467f2b9181900360200190a3505050565b6000826113d557506000611422565b828202828482816113e257fe5b041461141f5760405162461bcd60e51b815260040180806020018281038252602181526020018061166a6021913960400191505060405180910390fd5b90505b92915050565b600061141f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611506565b60008282018381101561141f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061141f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115a8565b600081836115925760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561155757818101518382015260200161153f565b50505050905090810190601f1680156115845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161159e57fe5b0495945050505050565b600081848411156115fa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561155757818101518382015260200161153f565b50505090039056fe56657374696e672052656769737472792068617320746f20626520646966666572656e7420666f72206368616e67696e67206475726174696f6e20616e6420636c6966662e4e6577204c6f636b656420534f56204164647265737320697320496e76616c69642e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e426173697320506f696e742068617320746f206265206c657373207468616e2031303030302ea265627a7a72315820439920183213df7e44ae05ae2e295f960beeded8ec3b30c112ffc764170783f964736f6c6343000511003256657374696e67207265676973747279206164647265737320697320696e76616c69642e",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x19D1 CODESIZE SUB DUP1 PUSH3 0x19D1 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xA0 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD DUP1 MLOAD SWAP4 MLOAD SWAP6 SWAP8 SWAP5 SWAP7 SWAP3 SWAP6 SWAP2 SWAP5 SWAP2 SWAP4 SWAP3 DUP3 ADD SWAP3 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xD6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xBC JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 MSTORE POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH3 0x141 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420534F5620416464726573732E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x188 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x19AD PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x25 DUP3 LT PUSH3 0x1DE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4475726174696F6E20697320746F6F206C6F6E672E0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP3 DUP8 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH3 0x24EA00 DUP1 DUP5 MUL PUSH1 0x1 SSTORE DUP3 MUL PUSH1 0x2 SSTORE PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH3 0x278 JUMPI PUSH1 0x1 PUSH1 0x8 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x23D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH3 0x220 JUMP JUMPDEST POP POP POP POP POP POP PUSH2 0x171F DUP1 PUSH3 0x28E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x158 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7195823E GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xC4086893 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xC4086893 EQ PUSH2 0x357 JUMPI DUP1 PUSH4 0xCC6F0333 EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0xCE46643B EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0xD7491093 EQ PUSH2 0x38D JUMPI DUP1 PUSH4 0xE5545864 EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0xF33BF9A1 EQ PUSH2 0x3BB JUMPI PUSH2 0x158 JUMP JUMPDEST DUP1 PUSH4 0x7195823E EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x8A4068DD EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x904C5B8F EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0xA0F52DA0 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0xB1724B46 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xBB3FF62A EQ PUSH2 0x325 JUMPI PUSH2 0x158 JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x219 JUMPI DUP1 PUSH4 0x2B6DF82A EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x3E4A89D1 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x4558269F EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x51CFF8D9 EQ PUSH2 0x293 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x2B9 JUMPI PUSH2 0x158 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0xEFE6A8B EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x129DE5BF EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x1705A3BD EQ PUSH2 0x1FD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x165 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3F6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BD PUSH2 0x406 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x40C JUMP JUMPDEST PUSH2 0x1BD PUSH2 0x427 JUMP JUMPDEST PUSH2 0x205 PUSH2 0x42D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x436 JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x54D JUMP JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x563 JUMP JUMPDEST PUSH2 0x1B3 PUSH2 0x581 JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x58C JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x596 JUMP JUMPDEST PUSH2 0x165 PUSH2 0x6FF JUMP JUMPDEST PUSH2 0x1B3 PUSH2 0x70E JUMP JUMPDEST PUSH2 0x165 PUSH2 0x81C JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x82B JUMP JUMPDEST PUSH2 0x1BD PUSH2 0xA29 JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST PUSH2 0x1BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBE6 JUMP JUMPDEST PUSH2 0x165 PUSH2 0xC01 JUMP JUMPDEST PUSH2 0x1B3 PUSH2 0xC11 JUMP JUMPDEST PUSH2 0x1BD PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD59 JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD6C JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x401 DUP4 DUP4 DUP4 PUSH2 0xD7C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x496 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x503 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420616E2061646D696E2E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP2 PUSH32 0xDB9D5D31320DAF5BC7181D565B6DA4D12E30F0F4D5AA324A992426C14A1D19CE SWAP2 LOG3 POP JUMP JUMPDEST PUSH2 0x557 DUP2 DUP3 PUSH2 0xF79 JUMP JUMPDEST PUSH2 0x560 DUP2 PUSH2 0x10AF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x58A CALLER PUSH2 0x10AF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x560 CALLER DUP3 PUSH2 0xF79 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5F6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x644 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x24B73B30B634B21020B2323932B9B997 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320697320616C72656164792061646D696E2E00000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD CALLER SWAP2 PUSH32 0xBF3F493C772C8C283FD124432C2D0F539AB343FAA04258FE88E52912D36B102B SWAP2 LOG3 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x765 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6967726174696F6E20686173206E6F742079657420737461727465642E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x5 SLOAD DUP3 MLOAD PUSH4 0xF33BF9A1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x24 DUP6 ADD DUP3 SWAP1 MSTORE SWAP2 MLOAD SWAP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xF33BF9A1 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP4 POP PUSH32 0xE4D132F68E97BB85BFBF6346414F11BD7F666E31CF86FE80669273C01C1AEC93 SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x88B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x8D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1648 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 DUP5 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x93E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x952 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x968 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR DUP2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 CALLER SWAP2 PUSH32 0xCB867AACDE0A366BE34DD5A67C52D14FE1A849217E927E74B490E2A12427C182 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x25 DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xA8E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xADB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1603 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xB2D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4475726174696F6E2063616E6E6F74206265207A65726F2E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x25 DUP2 LT PUSH2 0xB7A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x223AB930BA34B7B71034B9903A37B7903637B73397 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH3 0x24EA00 DUP4 DUP2 MUL PUSH1 0x1 SSTORE DUP3 MUL PUSH1 0x2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x11E1E2758F8144DE109ED6DC1603825D8C1DAC764D01766D27AD893EDAC53AE1 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC0C CALLER PUSH2 0x10E0 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC1C CALLER PUSH2 0x11C1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD EQ DUP1 ISZERO PUSH2 0xCF8 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCDB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD EQ JUMPDEST PUSH2 0xD49 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57726F6E672056657374696E67205363686564756C652E000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x560 CALLER DUP3 PUSH2 0x1246 JUMP JUMPDEST PUSH2 0x2710 DUP2 JUMP JUMPDEST PUSH2 0xD63 CALLER DUP3 PUSH2 0xF79 JUMP JUMPDEST PUSH2 0x560 CALLER PUSH2 0x10AF JUMP JUMPDEST PUSH2 0xD78 DUP3 DUP3 PUSH1 0x0 PUSH2 0xD7C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0xDBC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16C5 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE29 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xE7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x168B PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xEA3 PUSH2 0x2710 PUSH2 0xE97 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x13C6 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1428 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xECF SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x146A AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x6 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0xF16 SWAP1 DUP3 SWAP1 PUSH2 0xF0A SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x146A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x14C4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP1 MLOAD DUP8 DUP2 MSTORE SWAP3 DUP4 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 CALLER SWAP3 PUSH32 0xF5681F9D0DB1B911AC18EE83D515A1CF1051853A9EAE418316A2FDF7DEA427C5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xF8B JUMPI POP DUP2 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x3 SLOAD DUP3 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE DUP8 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP3 MLOAD SWAP2 SWAP6 AND SWAP3 PUSH4 0xA9059CBB SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1007 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x105D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x168B PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xD1C19FBCD4551A5EDFB66D43D2E337C04837AFDA3482B42BDF569A8FCCDAE5FB DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10BA DUP3 PUSH2 0x11C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x10D6 JUMPI PUSH2 0x10D3 DUP3 PUSH2 0x10E0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xD78 DUP3 DUP3 PUSH2 0x1246 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x665A06F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP7 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH4 0x665A06F SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 DUP7 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x114F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1163 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1170 DUP3 PUSH2 0x11C1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xBCA00EFF836738917BC04C3B9C08D4BB6AF3F58F9EB021D294E6B17BC6A3B865 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xCC49EDE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH4 0xCC49EDE7 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1228 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x123E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x3 SLOAD DUP3 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE DUP8 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP3 MLOAD SWAP2 SWAP6 AND SWAP4 PUSH4 0x95EA7B3 SWAP4 PUSH1 0x44 DUP1 DUP6 ADD SWAP5 SWAP2 SWAP4 SWAP3 SWAP2 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1321 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x20B8383937BB32903330B4B632B217 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7547C7A3 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP5 POP DUP8 AND SWAP3 POP PUSH32 0x17A90BF25D618E67DE9BC66DE5762D97787B11707D112164AB54C37111467F2B SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x13D5 JUMPI POP PUSH1 0x0 PUSH2 0x1422 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x13E2 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x141F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x166A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x141F DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1506 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x141F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x141F DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1592 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1557 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x153F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1584 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x159E JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x15FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1557 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x153F JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID JUMP PUSH6 0x7374696E6720 MSTORE PUSH6 0x676973747279 KECCAK256 PUSH9 0x617320746F20626520 PUSH5 0x6966666572 PUSH6 0x6E7420666F72 KECCAK256 PUSH4 0x68616E67 PUSH10 0x6E67206475726174696F PUSH15 0x20616E6420636C6966662E4E657720 0x4C PUSH16 0x636B656420534F562041646472657373 KECCAK256 PUSH10 0x7320496E76616C69642E MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77546F6B656E20747261 PUSH15 0x7366657220776173206E6F74207375 PUSH4 0x63657373 PUSH7 0x756C2E20436865 PUSH4 0x6B207265 PUSH4 0x65697665 PUSH19 0x20616464726573732E426173697320506F696E PUSH21 0x2068617320746F206265206C657373207468616E20 BALANCE ADDRESS ADDRESS ADDRESS ADDRESS 0x2E LOG2 PUSH6 0x627A7A723158 KECCAK256 NUMBER SWAP10 KECCAK256 XOR ORIGIN SGT 0xDF PUSH31 0x44AE05AE2E295F960BEEDED8EC3B30C112FFC764170783F964736F6C634300 SDIV GT STOP ORIGIN JUMP PUSH6 0x7374696E6720 PUSH19 0x65676973747279206164647265737320697320 PUSH10 0x6E76616C69642E000000 ",
              "sourceMap": "443:15098:93:-;;;5336:578;8:9:-1;5:2;;;30:1;27;20:12;5:2;5336:578:93;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5336:578:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;5336:578:93;;421:4:-1;412:14;;;;5336:578:93;;;;;412:14:-1;5336:578:93;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;-1:-1;;;;5336:578:93;;;;;;-1:-1:-1;;;;;;;;;5481:18:93;;5473:51;;;;;-1:-1:-1;;;5473:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5536:30:93;;5528:79;;;;-1:-1:-1;;;5528:79:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;598:2;5619:9;:24;5611:58;;;;;-1:-1:-1;;;5611:58:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;5674:3;:18;;-1:-1:-1;;;;;5674:18:93;;;-1:-1:-1;;;;;;5674:18:93;;;;;;;5696:15;:51;;;;;;;;;;;;;;;5768:7;5759:16;;;5674:18;5751:24;5790:19;;-1:-1:-1;5779:30:93;5674:3;5814:97;5846:7;:14;5838:5;:22;5814:97;;;5902:4;5876:7;:23;5884:7;5892:5;5884:14;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5876:23:93;;;;;;;;;;;-1:-1:-1;5876:23:93;:30;;-1:-1:-1;;5876:30:93;;;;;;;;;;-1:-1:-1;5862:7:93;5814:97;;;;5336:578;;;;;443:15098;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101585760003560e01c80637195823e116100c3578063c40868931161007c578063c408689314610357578063cc6f03331461037d578063ce46643b14610385578063d74910931461038d578063e554586414610395578063f33bf9a1146103bb57610158565b80637195823e146102df5780638a4068dd146102e7578063904c5b8f146102ef578063a0f52da0146102f7578063b1724b461461031d578063bb3ff62a1461032557610158565b80631785f53c116101155780631785f53c146102195780632b6df82a1461023f5780633e4a89d1146102655780634558269f1461028b57806351cff8d91461029357806370480275146102b957610158565b806308dcb3601461015d5780630efe6a8b146101815780630fb5a6b4146101b5578063129de5bf146101cf57806313d033c0146101f55780631705a3bd146101fd575b600080fd5b6101656103e7565b604080516001600160a01b039092168252519081900360200190f35b6101b36004803603606081101561019757600080fd5b506001600160a01b0381351690602081013590604001356103f6565b005b6101bd610406565b60408051918252519081900360200190f35b6101bd600480360360208110156101e557600080fd5b50356001600160a01b031661040c565b6101bd610427565b61020561042d565b604080519115158252519081900360200190f35b6101b36004803603602081101561022f57600080fd5b50356001600160a01b0316610436565b6101b36004803603602081101561025557600080fd5b50356001600160a01b031661054d565b6102056004803603602081101561027b57600080fd5b50356001600160a01b0316610563565b6101b3610581565b6101b3600480360360208110156102a957600080fd5b50356001600160a01b031661058c565b6101b3600480360360208110156102cf57600080fd5b50356001600160a01b0316610596565b6101656106ff565b6101b361070e565b61016561081c565b6101b36004803603602081101561030d57600080fd5b50356001600160a01b031661082b565b6101bd610a29565b6101b36004803603606081101561033b57600080fd5b506001600160a01b038135169060208101359060400135610a2e565b6101bd6004803603602081101561036d57600080fd5b50356001600160a01b0316610be6565b610165610c01565b6101b3610c11565b6101bd610d53565b6101b3600480360360208110156103ab57600080fd5b50356001600160a01b0316610d59565b6101b3600480360360408110156103d157600080fd5b506001600160a01b038135169060200135610d6c565b6003546001600160a01b031681565b610401838383610d7c565b505050565b60025481565b6001600160a01b031660009081526007602052604090205490565b60015481565b60005460ff1681565b3360009081526008602052604090205460ff16610496576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff16610503576040805162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420616e2061646d696e2e0000000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260086020526040808220805460ff191690555133917fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce91a350565b6105578182610f79565b610560816110af565b50565b6001600160a01b031660009081526008602052604090205460ff1690565b61058a336110af565b565b6105603382610f79565b3360009081526008602052604090205460ff166105f6576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b038116610644576040805162461bcd60e51b815260206004820152601060248201526f24b73b30b634b21020b2323932b9b99760811b604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff16156106b2576040805162461bcd60e51b815260206004820152601960248201527f4164647265737320697320616c72656164792061646d696e2e00000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260086020526040808220805460ff191660011790555133917fbf3f493c772c8c283fd124432c2d0f539ab343faa04258fe88e52912d36b102b91a350565b6005546001600160a01b031681565b60005460ff16610765576040805162461bcd60e51b815260206004820152601e60248201527f4d6967726174696f6e20686173206e6f742079657420737461727465642e0000604482015290519081900360640190fd5b33600081815260066020526040808220805490839055600554825163f33bf9a160e01b8152600481019590955260248501829052915190936001600160a01b039092169263f33bf9a1926044808201939182900301818387803b1580156107cb57600080fd5b505af11580156107df573d6000803e3d6000fd5b50506040805184815290513393507fe4d132f68e97bb85bfbf6346414f11bd7f666e31cf86fe80669273c01c1aec9392509081900360200190a250565b6004546001600160a01b031681565b3360009081526008602052604090205460ff1661088b576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b0381166108d05760405162461bcd60e51b81526004018080602001828103825260228152602001806116486022913960400191505060405180910390fd5b600580546001600160a01b0319166001600160a01b0383811691909117909155600354604080516370a0823160e01b81523060048201529051919092169163095ea7b391849184916370a0823191602480820192602092909190829003018186803b15801561093e57600080fd5b505afa158015610952573d6000803e3d6000fd5b505050506040513d602081101561096857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156109b957600080fd5b505af11580156109cd573d6000803e3d6000fd5b505050506040513d60208110156109e357600080fd5b50506000805460ff191660011781556040516001600160a01b0383169133917fcb867aacde0a366be34dd5a67c52d14fe1a849217e927e74b490e2a12427c1829190a350565b602581565b3360009081526008602052604090205460ff16610a8e576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6004546001600160a01b0384811691161415610adb5760405162461bcd60e51b81526004018080602001828103825260458152602001806116036045913960600191505060405180910390fd5b80610b2d576040805162461bcd60e51b815260206004820152601860248201527f4475726174696f6e2063616e6e6f74206265207a65726f2e0000000000000000604482015290519081900360640190fd5b60258110610b7a576040805162461bcd60e51b8152602060048201526015602482015274223ab930ba34b7b71034b9903a37b7903637b7339760591b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0385169081179091556224ea0083810260015582026002556040805184815260208101849052815133927f11e1e2758f8144de109ed6dc1603825d8c1dac764d01766d27ad893edac53ae1928290030190a3505050565b6001600160a01b031660009081526006602052604090205490565b6000610c0c336110e0565b905090565b6000610c1c336111c1565b9050806001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5757600080fd5b505afa158015610c6b573d6000803e3d6000fd5b505050506040513d6020811015610c8157600080fd5b5051600154148015610cf85750806001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc757600080fd5b505afa158015610cdb573d6000803e3d6000fd5b505050506040513d6020811015610cf157600080fd5b5051600254145b610d49576040805162461bcd60e51b815260206004820152601760248201527f57726f6e672056657374696e67205363686564756c652e000000000000000000604482015290519081900360640190fd5b6105603382611246565b61271081565b610d633382610f79565b610560336110af565b610d7882826000610d7c565b5050565b6127108110610dbc5760405162461bcd60e51b81526004018080602001828103825260268152602001806116c56026913960400191505060405180910390fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810185905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b158015610e1557600080fd5b505af1158015610e29573d6000803e3d6000fd5b505050506040513d6020811015610e3f57600080fd5b5051905080610e7f5760405162461bcd60e51b815260040180806020018281038252603a81526020018061168b603a913960400191505060405180910390fd5b6000610ea3612710610e97868663ffffffff6113c616565b9063ffffffff61142816565b6001600160a01b038616600090815260076020526040902054909150610ecf908263ffffffff61146a16565b6001600160a01b038616600090815260076020908152604080832093909355600690522054610f16908290610f0a908763ffffffff61146a16565b9063ffffffff6114c416565b6001600160a01b0386166000818152600660209081526040918290209390935580518781529283018690528051919233927ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5929181900390910190a35050505050565b806001600160a01b038116610f8b5750815b6001600160a01b038084166000908152600760209081526040808320805490849055600354825163a9059cbb60e01b815287871660048201526024810183905292519195169263a9059cbb926044808201939182900301818787803b158015610ff357600080fd5b505af1158015611007573d6000803e3d6000fd5b505050506040513d602081101561101d57600080fd5b505190508061105d5760405162461bcd60e51b815260040180806020018281038252603a81526020018061168b603a913960400191505060405180910390fd5b826001600160a01b0316856001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb846040518082815260200191505060405180910390a35050505050565b60006110ba826111c1565b90506001600160a01b0381166110d6576110d3826110e0565b90505b610d788282611246565b6004805460015460025460408051630665a06f60e01b81526001600160a01b03878116968201969096526000602482018190526044820194909452606481019290925251919390921691630665a06f916084808301928692919082900301818387803b15801561114f57600080fd5b505af1158015611163573d6000803e3d6000fd5b50505050611170826111c1565b9050806001600160a01b0316826001600160a01b0316336001600160a01b03167fbca00eff836738917bc04c3b9c08d4bb6af3f58f9eb021d294e6b17bc6a3b86560405160405180910390a4919050565b600480546040805163cc49ede760e01b81526001600160a01b038581169482019490945290516000939092169163cc49ede791602480820192602092909190829003018186803b15801561121457600080fd5b505afa158015611228573d6000803e3d6000fd5b505050506040513d602081101561123e57600080fd5b505192915050565b6001600160a01b038083166000908152600660209081526040808320805490849055600354825163095ea7b360e01b815287871660048201526024810183905292519195169363095ea7b393604480850194919392918390030190829087803b1580156112b257600080fd5b505af11580156112c6573d6000803e3d6000fd5b505050506040513d60208110156112dc57600080fd5b5051611321576040805162461bcd60e51b815260206004820152600f60248201526e20b8383937bb32903330b4b632b21760891b604482015290519081900360640190fd5b816001600160a01b0316637547c7a3826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561136757600080fd5b505af115801561137b573d6000803e3d6000fd5b50506040805184815290516001600160a01b038087169450871692507f17a90bf25d618e67de9bc66de5762d97787b11707d112164ab54c37111467f2b9181900360200190a3505050565b6000826113d557506000611422565b828202828482816113e257fe5b041461141f5760405162461bcd60e51b815260040180806020018281038252602181526020018061166a6021913960400191505060405180910390fd5b90505b92915050565b600061141f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611506565b60008282018381101561141f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061141f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115a8565b600081836115925760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561155757818101518382015260200161153f565b50505050905090810190601f1680156115845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161159e57fe5b0495945050505050565b600081848411156115fa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561155757818101518382015260200161153f565b50505090039056fe56657374696e672052656769737472792068617320746f20626520646966666572656e7420666f72206368616e67696e67206475726174696f6e20616e6420636c6966662e4e6577204c6f636b656420534f56204164647265737320697320496e76616c69642e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e426173697320506f696e742068617320746f206265206c657373207468616e2031303030302ea265627a7a72315820439920183213df7e44ae05ae2e295f960beeded8ec3b30c112ffc764170783f964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x158 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7195823E GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xC4086893 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xC4086893 EQ PUSH2 0x357 JUMPI DUP1 PUSH4 0xCC6F0333 EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0xCE46643B EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0xD7491093 EQ PUSH2 0x38D JUMPI DUP1 PUSH4 0xE5545864 EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0xF33BF9A1 EQ PUSH2 0x3BB JUMPI PUSH2 0x158 JUMP JUMPDEST DUP1 PUSH4 0x7195823E EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x8A4068DD EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x904C5B8F EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0xA0F52DA0 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0xB1724B46 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xBB3FF62A EQ PUSH2 0x325 JUMPI PUSH2 0x158 JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x219 JUMPI DUP1 PUSH4 0x2B6DF82A EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x3E4A89D1 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x4558269F EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x51CFF8D9 EQ PUSH2 0x293 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x2B9 JUMPI PUSH2 0x158 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0xEFE6A8B EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x129DE5BF EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x1705A3BD EQ PUSH2 0x1FD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x165 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3F6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BD PUSH2 0x406 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x40C JUMP JUMPDEST PUSH2 0x1BD PUSH2 0x427 JUMP JUMPDEST PUSH2 0x205 PUSH2 0x42D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x436 JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x54D JUMP JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x563 JUMP JUMPDEST PUSH2 0x1B3 PUSH2 0x581 JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x58C JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x596 JUMP JUMPDEST PUSH2 0x165 PUSH2 0x6FF JUMP JUMPDEST PUSH2 0x1B3 PUSH2 0x70E JUMP JUMPDEST PUSH2 0x165 PUSH2 0x81C JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x82B JUMP JUMPDEST PUSH2 0x1BD PUSH2 0xA29 JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xA2E JUMP JUMPDEST PUSH2 0x1BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBE6 JUMP JUMPDEST PUSH2 0x165 PUSH2 0xC01 JUMP JUMPDEST PUSH2 0x1B3 PUSH2 0xC11 JUMP JUMPDEST PUSH2 0x1BD PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD59 JUMP JUMPDEST PUSH2 0x1B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD6C JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x401 DUP4 DUP4 DUP4 PUSH2 0xD7C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x496 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x503 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420616E2061646D696E2E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP2 PUSH32 0xDB9D5D31320DAF5BC7181D565B6DA4D12E30F0F4D5AA324A992426C14A1D19CE SWAP2 LOG3 POP JUMP JUMPDEST PUSH2 0x557 DUP2 DUP3 PUSH2 0xF79 JUMP JUMPDEST PUSH2 0x560 DUP2 PUSH2 0x10AF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x58A CALLER PUSH2 0x10AF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x560 CALLER DUP3 PUSH2 0xF79 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5F6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x644 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x24B73B30B634B21020B2323932B9B997 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320697320616C72656164792061646D696E2E00000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD CALLER SWAP2 PUSH32 0xBF3F493C772C8C283FD124432C2D0F539AB343FAA04258FE88E52912D36B102B SWAP2 LOG3 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x765 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6967726174696F6E20686173206E6F742079657420737461727465642E0000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH1 0x5 SLOAD DUP3 MLOAD PUSH4 0xF33BF9A1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x24 DUP6 ADD DUP3 SWAP1 MSTORE SWAP2 MLOAD SWAP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xF33BF9A1 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP4 POP PUSH32 0xE4D132F68E97BB85BFBF6346414F11BD7F666E31CF86FE80669273C01C1AEC93 SWAP3 POP SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x88B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x8D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1648 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 DUP5 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x93E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x952 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x968 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR DUP2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 CALLER SWAP2 PUSH32 0xCB867AACDE0A366BE34DD5A67C52D14FE1A849217E927E74B490E2A12427C182 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x25 DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xA8E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xADB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1603 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xB2D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4475726174696F6E2063616E6E6F74206265207A65726F2E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x25 DUP2 LT PUSH2 0xB7A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x223AB930BA34B7B71034B9903A37B7903637B73397 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH3 0x24EA00 DUP4 DUP2 MUL PUSH1 0x1 SSTORE DUP3 MUL PUSH1 0x2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x11E1E2758F8144DE109ED6DC1603825D8C1DAC764D01766D27AD893EDAC53AE1 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC0C CALLER PUSH2 0x10E0 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC1C CALLER PUSH2 0x11C1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD EQ DUP1 ISZERO PUSH2 0xCF8 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCDB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SLOAD EQ JUMPDEST PUSH2 0xD49 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57726F6E672056657374696E67205363686564756C652E000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x560 CALLER DUP3 PUSH2 0x1246 JUMP JUMPDEST PUSH2 0x2710 DUP2 JUMP JUMPDEST PUSH2 0xD63 CALLER DUP3 PUSH2 0xF79 JUMP JUMPDEST PUSH2 0x560 CALLER PUSH2 0x10AF JUMP JUMPDEST PUSH2 0xD78 DUP3 DUP3 PUSH1 0x0 PUSH2 0xD7C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0xDBC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16C5 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE29 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xE7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x168B PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xEA3 PUSH2 0x2710 PUSH2 0xE97 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x13C6 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1428 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0xECF SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x146A AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x6 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0xF16 SWAP1 DUP3 SWAP1 PUSH2 0xF0A SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x146A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x14C4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP1 MLOAD DUP8 DUP2 MSTORE SWAP3 DUP4 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 CALLER SWAP3 PUSH32 0xF5681F9D0DB1B911AC18EE83D515A1CF1051853A9EAE418316A2FDF7DEA427C5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xF8B JUMPI POP DUP2 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x3 SLOAD DUP3 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE DUP8 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP3 MLOAD SWAP2 SWAP6 AND SWAP3 PUSH4 0xA9059CBB SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1007 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x105D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x168B PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xD1C19FBCD4551A5EDFB66D43D2E337C04837AFDA3482B42BDF569A8FCCDAE5FB DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10BA DUP3 PUSH2 0x11C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x10D6 JUMPI PUSH2 0x10D3 DUP3 PUSH2 0x10E0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xD78 DUP3 DUP3 PUSH2 0x1246 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x665A06F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP7 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x64 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH4 0x665A06F SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 DUP7 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x114F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1163 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1170 DUP3 PUSH2 0x11C1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xBCA00EFF836738917BC04C3B9C08D4BB6AF3F58F9EB021D294E6B17BC6A3B865 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xCC49EDE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH4 0xCC49EDE7 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1228 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x123E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x3 SLOAD DUP3 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE DUP8 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP3 MLOAD SWAP2 SWAP6 AND SWAP4 PUSH4 0x95EA7B3 SWAP4 PUSH1 0x44 DUP1 DUP6 ADD SWAP5 SWAP2 SWAP4 SWAP3 SWAP2 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1321 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x20B8383937BB32903330B4B632B217 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7547C7A3 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP5 POP DUP8 AND SWAP3 POP PUSH32 0x17A90BF25D618E67DE9BC66DE5762D97787B11707D112164AB54C37111467F2B SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x13D5 JUMPI POP PUSH1 0x0 PUSH2 0x1422 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x13E2 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x141F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x166A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x141F DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1506 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x141F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x141F DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1592 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1557 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x153F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1584 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x159E JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x15FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1557 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x153F JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID JUMP PUSH6 0x7374696E6720 MSTORE PUSH6 0x676973747279 KECCAK256 PUSH9 0x617320746F20626520 PUSH5 0x6966666572 PUSH6 0x6E7420666F72 KECCAK256 PUSH4 0x68616E67 PUSH10 0x6E67206475726174696F PUSH15 0x20616E6420636C6966662E4E657720 0x4C PUSH16 0x636B656420534F562041646472657373 KECCAK256 PUSH10 0x7320496E76616C69642E MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77546F6B656E20747261 PUSH15 0x7366657220776173206E6F74207375 PUSH4 0x63657373 PUSH7 0x756C2E20436865 PUSH4 0x6B207265 PUSH4 0x65697665 PUSH19 0x20616464726573732E426173697320506F696E PUSH21 0x2068617320746F206265206C657373207468616E20 BALANCE ADDRESS ADDRESS ADDRESS ADDRESS 0x2E LOG2 PUSH6 0x627A7A723158 KECCAK256 NUMBER SWAP10 KECCAK256 XOR ORIGIN SGT 0xDF PUSH31 0x44AE05AE2E295F960BEEDED8EC3B30C112FFC764170783F964736F6C634300 SDIV GT STOP ORIGIN ",
              "sourceMap": "443:15098:93:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;443:15098:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;978:17;;;:::i;:::-;;;;-1:-1:-1;;;;;978:17:93;;;;;;;;;;;;;;8265:153;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8265:153:93;;;;;;;;;;;;;:::i;:::-;;914:23;;;:::i;:::-;;;;;;;;;;;;;;;;15117:122;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15117:122:93;-1:-1:-1;;;;;15117:122:93;;:::i;804:20::-;;;:::i;697:21::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;6513:215;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6513:215:93;-1:-1:-1;;;;;6513:215:93;;:::i;12090:152::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12090:152:93;-1:-1:-1;;;;;12090:152:93;;:::i;15437:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15437:102:93;-1:-1:-1;;;;;15437:102:93;;:::i;10493:82::-;;;:::i;9798:98::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9798:98:93;-1:-1:-1;;;;;9798:98:93;;:::i;6096:247::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6096:247:93;-1:-1:-1;;;;;6096:247:93;;:::i;1125:30::-;;;:::i;12909:223::-;;;:::i;1042:38::-;;;:::i;12389:325::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12389:325:93;-1:-1:-1;;;;;12389:325:93;;:::i;559:41::-;;;:::i;7217:657::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7217:657:93;;;;;;;;;;;;;:::i;14784:118::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14784:118:93;-1:-1:-1;;;;;14784:118:93;;:::i;10972:::-;;;:::i;11270:244::-;;;:::i;509:47::-;;;:::i;11745:152::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11745:152:93;-1:-1:-1;;;;;11745:152:93;;:::i;8722:116::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8722:116:93;;;;;;;;:::i;978:17::-;;;-1:-1:-1;;;;;978:17:93;;:::o;8265:153::-;8367:47;8376:12;8390:10;8402:11;8367:8;:47::i;:::-;8265:153;;;:::o;914:23::-;;;;:::o;15117:122::-;-1:-1:-1;;;;;15212:23:93;15183:16;15212:23;;;:16;:23;;;;;;;15117:122::o;804:20::-;;;;:::o;697:21::-;;;;;;:::o;6513:215::-;4815:10;4807:19;;;;:7;:19;;;;;;;;4799:57;;;;;-1:-1:-1;;;4799:57:93;;;;;;;;;;;;-1:-1:-1;;;4799:57:93;;;;;;;;;;;;;;;-1:-1:-1;;;;;6587:23:93;;;;;;:7;:23;;;;;;;;6579:60;;;;;-1:-1:-1;;;6579:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6643:23:93;;6669:5;6643:23;;;:7;:23;;;;;;:31;;-1:-1:-1;;6643:31:93;;;6684:40;6697:10;;6684:40;;;6513:215;:::o;12090:152::-;12161:37;12171:12;12185;12161:9;:37::i;:::-;12202:36;12225:12;12202:22;:36::i;:::-;12090:152;:::o;15437:102::-;-1:-1:-1;;;;;15521:14:93;15496:12;15521:14;;;:7;:14;;;;;;;;;15437:102::o;10493:82::-;10537:34;10560:10;10537:22;:34::i;:::-;10493:82::o;9798:98::-;9853:39;9863:10;9875:16;9853:9;:39::i;6096:247::-;4815:10;4807:19;;;;:7;:19;;;;;;;;4799:57;;;;;-1:-1:-1;;;4799:57:93;;;;;;;;;;;;-1:-1:-1;;;4799:57:93;;;;;;;;;;;;;;;-1:-1:-1;;;;;6162:23:93;;6154:52;;;;;-1:-1:-1;;;6154:52:93;;;;;;;;;;;;-1:-1:-1;;;6154:52:93;;;;;;;;;;;;;;;-1:-1:-1;;;;;6219:18:93;;;;;;:7;:18;;;;;;;;6218:19;6210:57;;;;;-1:-1:-1;;;6210:57:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6271:18:93;;;;;;:7;:18;;;;;;:25;;-1:-1:-1;;6271:25:93;6292:4;6271:25;;;6306:33;6317:10;;6306:33;;;6096:247;:::o;1125:30::-;;;-1:-1:-1;;;;;1125:30:93;;:::o;12909:223::-;4906:9;;;;4898:52;;;;;-1:-1:-1;;;4898:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;12991:10;12959:14;12976:26;;;:14;:26;;;;;;;;13006:30;;;;13041:12;;:43;;-1:-1:-1;;;13041:43:93;;;;;;;;;;;;;;;;;12976:26;;-1:-1:-1;;;;;13041:12:93;;;;:23;;:43;;;;;;;;;;;12959:14;13041:12;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;13041:43:93;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13094:34:93;;;;;;;;13109:10;;-1:-1:-1;13094:34:93;;-1:-1:-1;13094:34:93;;;;;;;;4954:1;12909:223::o;1042:38::-;;;-1:-1:-1;;;;;1042:38:93;;:::o;12389:325::-;4815:10;4807:19;;;;:7;:19;;;;;;;;4799:57;;;;;-1:-1:-1;;;4799:57:93;;;;;;;;;;;;-1:-1:-1;;;4799:57:93;;;;;;;;;;;;;;;-1:-1:-1;;;;;12467:27:93;;12459:74;;;;-1:-1:-1;;;12459:74:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12537:12;:40;;-1:-1:-1;;;;;;12537:40:93;-1:-1:-1;;;;;12537:40:93;;;;;;;;;;12581:3;;12608:28;;;-1:-1:-1;;;12608:28:93;;12630:4;12608:28;;;;;;12581:3;;;;;:11;;12537:40;;12581:3;;12608:13;;:28;;;;;;;;;;;;;;;12581:3;12608:28;;;5:2:-1;;;;30:1;27;20:12;5:2;12608:28:93;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12608:28:93;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12608:28:93;12581:56;;;-1:-1:-1;;;;;;12581:56:93;;;;;;;-1:-1:-1;;;;;12581:56:93;;;;;;;;;;;;;;;;;;;;12608:28;;12581:56;;;;;;;-1:-1:-1;12581:56:93;;;;5:2:-1;;;;30:1;27;20:12;5:2;12581:56:93;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12581:56:93;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;12641:9:93;:16;;-1:-1:-1;;12641:16:93;12653:4;12641:16;;;12667:43;;-1:-1:-1;;;;;12667:43:93;;;12684:10;;12667:43;;12641:9;12667:43;12389:325;:::o;559:41::-;598:2;559:41;:::o;7217:657::-;4815:10;4807:19;;;;:7;:19;;;;;;;;4799:57;;;;;-1:-1:-1;;;4799:57:93;;;;;;;;;;;;-1:-1:-1;;;4799:57:93;;;;;;;;;;;;;;;7366:15;;-1:-1:-1;;;;;7358:44:93;;;7366:15;;7358:44;;7350:126;;;;-1:-1:-1;;;7350:126:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7556:14;7548:51;;;;;-1:-1:-1;;;7548:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;598:2;7611:9;:24;7603:58;;;;;-1:-1:-1;;;7603:58:93;;;;;;;;;;;;-1:-1:-1;;;7603:58:93;;;;;;;;;;;;;;;7666:15;:51;;-1:-1:-1;;;;;;7666:51:93;-1:-1:-1;;;;;7666:51:93;;;;;;;;7739:7;7730:16;;;-1:-1:-1;7722:24:93;7761:19;;7750:8;:30;7790:80;;;;;;;;;;;;;;7822:10;;7790:80;;;;;;;;7217:657;;;:::o;14784:118::-;-1:-1:-1;;;;;14877:21:93;14848:16;14877:21;;;:14;:21;;;;;;;14784:118::o;10972:::-;11013:23;11060:26;11075:10;11060:14;:26::i;:::-;11042:44;;10972:118;:::o;11270:244::-;11304:20;11340:23;11352:10;11340:11;:23::i;:::-;11304:60;;11386:7;-1:-1:-1;;;;;11386:13:93;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11386:15:93;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11386:15:93;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11386:15:93;11377:5;;:24;:58;;;;;11417:7;-1:-1:-1;;;;;11417:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11417:18:93;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11417:18:93;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11417:18:93;11405:8;;:30;11377:58;11369:94;;;;;-1:-1:-1;;;11369:94:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;11468:42;11481:10;11501:7;11468:12;:42::i;509:47::-;551:5;509:47;:::o;11745:152::-;11816:39;11826:10;11838:16;11816:9;:39::i;:::-;11859:34;11882:10;11859:22;:34::i;8722:116::-;8797:37;8806:12;8820:10;8832:1;8797:8;:37::i;:::-;8722:116;;:::o;8841:779::-;551:5;9060:11;:29;9052:80;;;;-1:-1:-1;;;9052:80:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9152:3;;:55;;;-1:-1:-1;;;9152:55:93;;9169:10;9152:55;;;;9189:4;9152:55;;;;;;;;;;;;9136:13;;-1:-1:-1;;;;;9152:3:93;;:16;;:55;;;;;;;;;;;;;;9136:13;9152:3;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;9152:55:93;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9152:55:93;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9152:55:93;;-1:-1:-1;9152:55:93;9211:79;;;;-1:-1:-1;;;9211:79:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9295:19;9317:48;551:5;9317:27;:10;9332:11;9317:27;:14;:27;:::i;:::-;:31;:48;:31;:48;:::i;:::-;-1:-1:-1;;;;;9403:30:93;;;;;;:16;:30;;;;;;9295:70;;-1:-1:-1;9403:47:93;;9295:70;9403:47;:34;:47;:::i;:::-;-1:-1:-1;;;;;9370:30:93;;;;;;:16;:30;;;;;;;;:80;;;;9485:14;:28;;;;:61;;9534:11;;9485:44;;9518:10;9485:44;:32;:44;:::i;:::-;:48;:61;:48;:61;:::i;:::-;-1:-1:-1;;;;;9454:28:93;;;;;;:14;:28;;;;;;;;;:92;;;;9556:60;;;;;;;;;;;;;9454:28;;9566:10;;9556:60;;;;;;;;;;;8841:779;;;;;:::o;9899:440::-;9992:16;-1:-1:-1;;;;;10016:30:93;;10012:64;;-1:-1:-1;10064:7:93;10012:64;-1:-1:-1;;;;;10097:25:93;;;10080:14;10097:25;;;:16;:25;;;;;;;;;;10126:29;;;;10176:3;;:30;;-1:-1:-1;;;10176:30:93;;;;;;;;;;;;;;;;;10097:25;;10176:3;;:12;;:30;;;;;;;;;;;10080:14;10176:3;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;10176:30:93;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10176:30:93;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10176:30:93;;-1:-1:-1;10176:30:93;10210:79;;;;-1:-1:-1;;;10210:79:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10318:8;-1:-1:-1;;;;;10299:36:93;10309:7;-1:-1:-1;;;;;10299:36:93;;10328:6;10299:36;;;;;;;;;;;;;;;;;;9899:440;;;;;:::o;10578:228::-;10639:19;10661:20;10673:7;10661:11;:20::i;:::-;10639:42;-1:-1:-1;;;;;;10690:25:93;;10686:78;;10736:23;10751:7;10736:14;:23::i;:::-;10722:37;;10686:78;10768:34;10781:7;10790:11;10768:12;:34::i;13410:381::-;13614:15;;;;13660:5;13667:8;;13614:62;;;-1:-1:-1;;;13614:62:93;;-1:-1:-1;;;;;13614:62:93;;;;;;;;;;13473:23;13614:62;;;;;;;;;;;;;;;;;;;;;13473:23;;13614:15;;;;:29;;:62;;;;;13473:23;;13614:62;;;;;;;13473:23;13614:15;:62;;;5:2:-1;;;;30:1;27;20:12;5:2;13614:62:93;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13614:62:93;;;;13698:24;13710:11;13698;:24::i;:::-;13680:42;;13771:15;-1:-1:-1;;;;;13731:56:93;13758:11;-1:-1:-1;;;;;13731:56:93;13746:10;-1:-1:-1;;;;;13731:56:93;;;;;;;;;;;13410:381;;;:::o;13970:144::-;14071:15;;;:39;;;-1:-1:-1;;;14071:39:93;;-1:-1:-1;;;;;14071:39:93;;;;;;;;;;;;14035:23;;14071:15;;;;:26;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14071:39:93;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14071:39:93;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14071:39:93;;13970:144;-1:-1:-1;;13970:144:93:o;14241:301::-;-1:-1:-1;;;;;14328:23:93;;;14311:14;14328:23;;;:14;:23;;;;;;;;;;14355:27;;;;14395:3;;:29;;-1:-1:-1;;;14395:29:93;;;;;;;;;;;;;;;;;14328:23;;14395:3;;:11;;:29;;;;;14328:23;;14395:29;;;;;;;;;:3;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;14395:29:93;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14395:29:93;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14395:29:93;14387:57;;;;;-1:-1:-1;;;14387:57:93;;;;;;;;;;;;-1:-1:-1;;;14387:57:93;;;;;;;;;;;;;;;14461:8;-1:-1:-1;;;;;14448:34:93;;14483:6;14448:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14448:42:93;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;14500:38:93;;;;;;;;-1:-1:-1;;;;;14500:38:93;;;;-1:-1:-1;14500:38:93;;;-1:-1:-1;14500:38:93;;;;;;;;;14241:301;;;:::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2393:1;-1:-1:-1;1999:399:145;;;;;:::o;2817:121::-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;1201:125;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;3411:315::-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1614:175::-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1722:29:145;-1:-1:-1;;;1767:5:145;;;1614:175::o"
            },
            "methodIdentifiers": {
              "MAX_BASIS_POINT()": "d7491093",
              "MAX_DURATION()": "b1724b46",
              "SOV()": "08dcb360",
              "addAdmin(address)": "70480275",
              "adminStatus(address)": "3e4a89d1",
              "changeRegistryCliffAndDuration(address,uint256,uint256)": "bb3ff62a",
              "cliff()": "13d033c0",
              "createVesting()": "cc6f0333",
              "createVestingAndStake()": "4558269f",
              "deposit(address,uint256,uint256)": "0efe6a8b",
              "depositSOV(address,uint256)": "f33bf9a1",
              "duration()": "0fb5a6b4",
              "getLockedBalance(address)": "c4086893",
              "getUnlockedBalance(address)": "129de5bf",
              "migration()": "1705a3bd",
              "newLockedSOV()": "7195823e",
              "removeAdmin(address)": "1785f53c",
              "stakeTokens()": "ce46643b",
              "startMigration(address)": "a0f52da0",
              "transfer()": "8a4068dd",
              "vestingRegistry()": "904c5b8f",
              "withdraw(address)": "51cff8d9",
              "withdrawAndStakeTokens(address)": "e5545864",
              "withdrawAndStakeTokensFrom(address)": "2b6df82a"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "The function to add a new admin."
              },
              "adminStatus(address)": {
                "notice": "The function to check is an address is admin or not."
              },
              "changeRegistryCliffAndDuration(address,uint256,uint256)": {
                "notice": "The function to update the Vesting Registry, Duration and Cliff."
              },
              "constructor": "Setup the required parameters.",
              "createVesting()": {
                "notice": "Creates vesting contract (if it hasn't been created yet) for the calling user."
              },
              "createVestingAndStake()": {
                "notice": "Creates vesting if not already created and Stakes tokens for a user."
              },
              "deposit(address,uint256,uint256)": {
                "notice": "Adds SOV to the user balance (Locked and Unlocked Balance based on `_basisPoint`)."
              },
              "depositSOV(address,uint256)": {
                "notice": "Adds SOV to the locked balance of a user."
              },
              "getLockedBalance(address)": {
                "notice": "The function to get the locked balance of a user."
              },
              "getUnlockedBalance(address)": {
                "notice": "The function to get the unlocked balance of a user."
              },
              "removeAdmin(address)": {
                "notice": "The function to remove an admin."
              },
              "stakeTokens()": {
                "notice": "Stakes tokens for a user who already have a vesting created."
              },
              "startMigration(address)": {
                "notice": "Function to start the process of migration to new contract."
              },
              "transfer()": {
                "notice": "Function to transfer the locked balance from this contract to new LockedSOV Contract."
              },
              "withdraw(address)": {
                "notice": "A function to withdraw the unlocked balance."
              },
              "withdrawAndStakeTokens(address)": {
                "notice": "Withdraws unlocked tokens and Stakes Locked tokens for a user who already have a vesting created."
              },
              "withdrawAndStakeTokensFrom(address)": {
                "notice": "Withdraws unlocked tokens and Stakes Locked tokens for a user who already have a vesting created."
              }
            },
            "notice": "This contract is used to receive reward from other contracts, Create Vesting and Stake Tokens."
          }
        }
      },
      "contracts/mixins/EnumerableAddressSet.sol": {
        "EnumerableAddressSet": {
          "abi": [],
          "devdoc": {
            "details": "Based on 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. * As of v2.5.0, only `address` sets are supported. * Include with `using EnumerableSet for EnumerableSet.AddressSet;`. * _Available since v2.5.0._",
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfe0e138760f8d9a9ad1c1de22ffee2d6f9b571832eea0cc2dc9b8dbc991439564736f6c63430005110032",
              "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xCF 0xE0 0xE1 CODESIZE PUSH23 0xF8D9A9AD1C1DE22FFEE2D6F9B571832EEA0CC2DC9B8DB 0xC9 SWAP2 NUMBER SWAP6 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "528:3873:94:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfe0e138760f8d9a9ad1c1de22ffee2d6f9b571832eea0cc2dc9b8dbc991439564736f6c63430005110032",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xCF 0xE0 0xE1 CODESIZE PUSH23 0xF8D9A9AD1C1DE22FFEE2D6F9B571832EEA0CC2DC9B8DB 0xC9 SWAP2 NUMBER SWAP6 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "528:3873:94:-;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/mixins/EnumerableBytes32Set.sol": {
        "EnumerableBytes32Set": {
          "abi": [],
          "devdoc": {
            "methods": {},
            "title": "Library for managing loan sets."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158209faeb4bbf14ce82a88e29b9ab12137746d4d79a941754ae694ba074551886e4a64736f6c63430005110032",
              "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP16 0xAE 0xB4 0xBB CALL 0x4C 0xE8 0x2A DUP9 0xE2 SWAP12 SWAP11 0xB1 0x21 CALLDATACOPY PUSH21 0x6D4D79A941754AE694BA074551886E4A64736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "500:4833:95:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158209faeb4bbf14ce82a88e29b9ab12137746d4d79a941754ae694ba074551886e4a64736f6c63430005110032",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP16 0xAE 0xB4 0xBB CALL 0x4C 0xE8 0x2A DUP9 0xE2 SWAP12 SWAP11 0xB1 0x21 CALLDATACOPY PUSH21 0x6D4D79A941754AE694BA074551886E4A64736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "500:4833:95:-;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {},
            "notice": "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. * Include with `using EnumerableBytes32Set for EnumerableBytes32Set.Bytes32Set;`."
          }
        }
      },
      "contracts/mixins/FeesHelper.sol": {
        "FeesHelper": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnRewardFail",
              "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": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayBorrowingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayLendingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFee",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "The Fees Helper contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b610ead8061010f6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158203fa5f0991217c7a6bc25349318017db813e7c17231e527f536f7d458f299016564736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH2 0xA9 PUSH2 0xFC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x100 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xEAD DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158203FA5F0991217C7 0xA6 0xBC 0x25 CALLVALUE SWAP4 XOR ADD PUSH30 0xB813E7C17231E527F536F7D458F299016564736F6C634300051100320000 ",
              "sourceMap": "670:8223:96:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;670:8223:96;;780:87:137;853:10;780:87;:::o;670:8223:96:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158203fa5f0991217c7a6bc25349318017db813e7c17231e527f536f7d458f299016564736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158203FA5F0991217C7 0xA6 0xBC 0x25 CALLVALUE SWAP4 XOR ADD PUSH30 0xB813E7C17231E527F536F7D458F299016564736F6C634300051100320000 ",
              "sourceMap": "670:8223:96:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;670:8223:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:67:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;-1:-1:-1;;;;;5443:30:14;;;;;;;;;;;;;;1270:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1270:46:14;-1:-1:-1;;;;;;1270:46:14;;:::i;6768:81::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6768:81:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4372:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4372:55:14;-1:-1:-1;;;;;4372:55:14;;:::i;5558:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5558:53:14;-1:-1:-1;;;;;5558:53:14;;:::i;:::-;;;;;;;;;;;;;;;;;;3097:46;;;:::i;3969:32::-;;;:::i;1527:65::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1527:65:14;;;;;;;;:::i;3376:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3376:55:14;-1:-1:-1;;;;;3376:55:14;;:::i;4925:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4925:48:14;-1:-1:-1;;;;;4925:48:14;;:::i;1744:69::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1744:69:14;;;;;;-1:-1:-1;;;;;1744:69:14;;:::i;2825:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2825:55:14;-1:-1:-1;;;;;2825:55:14;;:::i;2717:41::-;;;:::i;4832:37::-;;;:::i;2013:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2013:52:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:50;;;:::i;1898:76::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1898:76:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4542:47:14;-1:-1:-1;;;;;4542:47:14;;:::i;5650:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5650:57:14;-1:-1:-1;;;;;5650:57:14;;:::i;1087:24::-;;;:::i;6000:39::-;;;:::i;1012:25::-;;;:::i;3887:32::-;;;:::i;7007:17::-;;;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4285:55:14;-1:-1:-1;;;;;4285:55:14;;:::i;1134:83:142:-;;;:::i;2994:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2994:55:14;-1:-1:-1;;;;;2994:55:14;;:::i;5113:49::-;;;:::i;5340:45::-;;;:::i;4075:47::-;;;:::i;5175:29::-;;;:::i;3781:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3781:57:14;-1:-1:-1;;;;;3781:57:14;;:::i;3605:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:57:14;-1:-1:-1;;;;;3605:57:14;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:55:14;-1:-1:-1;;;;;6168:55:14;;:::i;1347:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1347:37:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;;;;;;;;;;;;;;;;1437:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:48:14;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6853:69:14;;;;;;;;;;:::i;6305:31::-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:55:14;-1:-1:-1;;;;;3209:55:14;;:::i;2626:29::-;;;:::i;3490:47::-;;;:::i;4754:35::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;6447:60:14;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1437:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2626:29::-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract calculates and pays lending/borrow fees and rewards."
          }
        }
      },
      "contracts/mixins/InterestUser.sol": {
        "InterestUser": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnRewardFail",
              "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": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayBorrowingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "interestToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "effectiveInterest",
                  "type": "uint256"
                }
              ],
              "name": "PayInterestTransfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayLendingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultWithdraw",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "The Interest User contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b610ead8061010f6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a7231582037e136e66fd7eb5e4ef7093ed76d08bd34e93e6ba937cd826d6f38c10237226364736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH2 0xA9 PUSH2 0xFC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x100 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xEAD DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A7231582037E136E66FD7EB 0x5E 0x4E 0xF7 MULMOD RETURNDATACOPY 0xD7 PUSH14 0x8BD34E93E6BA937CD826D6F38C1 MUL CALLDATACOPY 0x22 PUSH4 0x64736F6C PUSH4 0x43000511 STOP ORIGIN ",
              "sourceMap": "526:2412:97:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;526:2412:97;;780:87:137;853:10;780:87;:::o;526:2412:97:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a7231582037e136e66fd7eb5e4ef7093ed76d08bd34e93e6ba937cd826d6f38c10237226364736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A7231582037E136E66FD7EB 0x5E 0x4E 0xF7 MULMOD RETURNDATACOPY 0xD7 PUSH14 0x8BD34E93E6BA937CD826D6F38C1 MUL CALLDATACOPY 0x22 PUSH4 0x64736F6C PUSH4 0x43000511 STOP ORIGIN ",
              "sourceMap": "526:2412:97:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;526:2412:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:67:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;-1:-1:-1;;;;;5443:30:14;;;;;;;;;;;;;;1270:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1270:46:14;-1:-1:-1;;;;;;1270:46:14;;:::i;6768:81::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6768:81:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4372:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4372:55:14;-1:-1:-1;;;;;4372:55:14;;:::i;5558:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5558:53:14;-1:-1:-1;;;;;5558:53:14;;:::i;:::-;;;;;;;;;;;;;;;;;;3097:46;;;:::i;3969:32::-;;;:::i;1527:65::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1527:65:14;;;;;;;;:::i;3376:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3376:55:14;-1:-1:-1;;;;;3376:55:14;;:::i;4925:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4925:48:14;-1:-1:-1;;;;;4925:48:14;;:::i;1744:69::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1744:69:14;;;;;;-1:-1:-1;;;;;1744:69:14;;:::i;2825:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2825:55:14;-1:-1:-1;;;;;2825:55:14;;:::i;2717:41::-;;;:::i;4832:37::-;;;:::i;2013:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2013:52:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:50;;;:::i;1898:76::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1898:76:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4542:47:14;-1:-1:-1;;;;;4542:47:14;;:::i;5650:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5650:57:14;-1:-1:-1;;;;;5650:57:14;;:::i;1087:24::-;;;:::i;6000:39::-;;;:::i;1012:25::-;;;:::i;3887:32::-;;;:::i;7007:17::-;;;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4285:55:14;-1:-1:-1;;;;;4285:55:14;;:::i;1134:83:142:-;;;:::i;2994:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2994:55:14;-1:-1:-1;;;;;2994:55:14;;:::i;5113:49::-;;;:::i;5340:45::-;;;:::i;4075:47::-;;;:::i;5175:29::-;;;:::i;3781:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3781:57:14;-1:-1:-1;;;;;3781:57:14;;:::i;3605:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:57:14;-1:-1:-1;;;;;3605:57:14;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:55:14;-1:-1:-1;;;;;6168:55:14;;:::i;1347:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1347:37:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;;;;;;;;;;;;;;;;1437:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:48:14;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6853:69:14;;;;;;;;;;:::i;6305:31::-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:55:14;-1:-1:-1;;;;;3209:55:14;;:::i;2626:29::-;;;:::i;3490:47::-;;;:::i;4754:35::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;6447:60:14;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1437:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2626:29::-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract pays loan interests."
          }
        }
      },
      "contracts/mixins/LiquidationHelper.sol": {
        "LiquidationHelper": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "The Liquidation Helper contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b610ead8061010f6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820f03c1b9bb1c235c44c45eb0d4238ac7aca4b143a48332c06066a67db38b5409164736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH2 0xA9 PUSH2 0xFC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x100 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xEAD DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820F03C1B9BB1C235 0xC4 0x4C GASLIMIT 0xEB 0xD TIMESTAMP CODESIZE 0xAC PUSH27 0xCA4B143A48332C06066A67DB38B5409164736F6C63430005110032 ",
              "sourceMap": "436:2147:98:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;436:2147:98;;780:87:137;853:10;780:87;:::o;436:2147:98:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820f03c1b9bb1c235c44c45eb0d4238ac7aca4b143a48332c06066a67db38b5409164736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820F03C1B9BB1C235 0xC4 0x4C GASLIMIT 0xEB 0xD TIMESTAMP CODESIZE 0xAC PUSH27 0xCA4B143A48332C06066A67DB38B5409164736F6C63430005110032 ",
              "sourceMap": "436:2147:98:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;436:2147:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:67:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;-1:-1:-1;;;;;5443:30:14;;;;;;;;;;;;;;1270:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1270:46:14;-1:-1:-1;;;;;;1270:46:14;;:::i;6768:81::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6768:81:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4372:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4372:55:14;-1:-1:-1;;;;;4372:55:14;;:::i;5558:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5558:53:14;-1:-1:-1;;;;;5558:53:14;;:::i;:::-;;;;;;;;;;;;;;;;;;3097:46;;;:::i;3969:32::-;;;:::i;1527:65::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1527:65:14;;;;;;;;:::i;3376:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3376:55:14;-1:-1:-1;;;;;3376:55:14;;:::i;4925:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4925:48:14;-1:-1:-1;;;;;4925:48:14;;:::i;1744:69::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1744:69:14;;;;;;-1:-1:-1;;;;;1744:69:14;;:::i;2825:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2825:55:14;-1:-1:-1;;;;;2825:55:14;;:::i;2717:41::-;;;:::i;4832:37::-;;;:::i;2013:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2013:52:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:50;;;:::i;1898:76::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1898:76:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4542:47:14;-1:-1:-1;;;;;4542:47:14;;:::i;5650:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5650:57:14;-1:-1:-1;;;;;5650:57:14;;:::i;1087:24::-;;;:::i;6000:39::-;;;:::i;1012:25::-;;;:::i;3887:32::-;;;:::i;7007:17::-;;;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4285:55:14;-1:-1:-1;;;;;4285:55:14;;:::i;1134:83:142:-;;;:::i;2994:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2994:55:14;-1:-1:-1;;;;;2994:55:14;;:::i;5113:49::-;;;:::i;5340:45::-;;;:::i;4075:47::-;;;:::i;5175:29::-;;;:::i;3781:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3781:57:14;-1:-1:-1;;;;;3781:57:14;;:::i;3605:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:57:14;-1:-1:-1;;;;;3605:57:14;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:55:14;-1:-1:-1;;;;;6168:55:14;;:::i;1347:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1347:37:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;;;;;;;;;;;;;;;;1437:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:48:14;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6853:69:14;;;;;;;;;;:::i;6305:31::-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:55:14;-1:-1:-1;;;;;3209:55:14;;:::i;2626:29::-;;;:::i;3490:47::-;;;:::i;4754:35::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;6447:60:14;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1437:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2626:29::-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract computes the liquidation amount."
          }
        }
      },
      "contracts/mixins/ModuleCommonFunctionalities.sol": {
        "ModuleCommonFunctionalities": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b610ead8061010f6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158203b4c8ef15d408733af9760c610c5ffa98942da7bb79492c50d6ff4b293231d5b64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH2 0xA9 PUSH2 0xFC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x100 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xEAD DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158203B4C8EF15D4087 CALLER 0xAF SWAP8 PUSH1 0xC6 LT 0xC5 SELFDESTRUCT 0xA9 DUP10 TIMESTAMP 0xDA PUSH28 0xB79492C50D6FF4B293231D5B64736F6C634300051100320000000000 ",
              "sourceMap": "54:114:99:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;54:114:99;;780:87:137;853:10;780:87;:::o;54:114:99:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158203b4c8ef15d408733af9760c610c5ffa98942da7bb79492c50d6ff4b293231d5b64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158203B4C8EF15D4087 CALLER 0xAF SWAP8 PUSH1 0xC6 LT 0xC5 SELFDESTRUCT 0xA9 DUP10 TIMESTAMP 0xDA PUSH28 0xB79492C50D6FF4B293231D5B64736F6C634300051100320000000000 ",
              "sourceMap": "54:114:99:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;54:114:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:67:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;-1:-1:-1;;;;;5443:30:14;;;;;;;;;;;;;;1270:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1270:46:14;-1:-1:-1;;;;;;1270:46:14;;:::i;6768:81::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6768:81:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4372:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4372:55:14;-1:-1:-1;;;;;4372:55:14;;:::i;5558:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5558:53:14;-1:-1:-1;;;;;5558:53:14;;:::i;:::-;;;;;;;;;;;;;;;;;;3097:46;;;:::i;3969:32::-;;;:::i;1527:65::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1527:65:14;;;;;;;;:::i;3376:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3376:55:14;-1:-1:-1;;;;;3376:55:14;;:::i;4925:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4925:48:14;-1:-1:-1;;;;;4925:48:14;;:::i;1744:69::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1744:69:14;;;;;;-1:-1:-1;;;;;1744:69:14;;:::i;2825:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2825:55:14;-1:-1:-1;;;;;2825:55:14;;:::i;2717:41::-;;;:::i;4832:37::-;;;:::i;2013:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2013:52:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:50;;;:::i;1898:76::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1898:76:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4542:47:14;-1:-1:-1;;;;;4542:47:14;;:::i;5650:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5650:57:14;-1:-1:-1;;;;;5650:57:14;;:::i;1087:24::-;;;:::i;6000:39::-;;;:::i;1012:25::-;;;:::i;3887:32::-;;;:::i;7007:17::-;;;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4285:55:14;-1:-1:-1;;;;;4285:55:14;;:::i;1134:83:142:-;;;:::i;2994:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2994:55:14;-1:-1:-1;;;;;2994:55:14;;:::i;5113:49::-;;;:::i;5340:45::-;;;:::i;4075:47::-;;;:::i;5175:29::-;;;:::i;3781:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3781:57:14;-1:-1:-1;;;;;3781:57:14;;:::i;3605:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:57:14;-1:-1:-1;;;;;3605:57:14;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:55:14;-1:-1:-1;;;;;6168:55:14;;:::i;1347:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1347:37:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;;;;;;;;;;;;;;;;1437:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:48:14;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6853:69:14;;;;;;;;;;:::i;6305:31::-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:55:14;-1:-1:-1;;;;;3209:55:14;;:::i;2626:29::-;;;:::i;3490:47::-;;;:::i;4754:35::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;6447:60:14;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1437:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2626:29::-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/mixins/ProtocolTokenUser.sol": {
        "ProtocolTokenUser": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "The Protocol Token User contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b610ead8061010f6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158200760846b14d8eb95523304e8a738751d4fd6ddeb5dadf0235ca13da2334b089964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH2 0xA9 PUSH2 0xFC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x100 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xEAD DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158200760846B14D8EB SWAP6 MSTORE CALLER DIV 0xE8 0xA7 CODESIZE PUSH22 0x1D4FD6DDEB5DADF0235CA13DA2334B089964736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "498:872:100:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;498:872:100;;780:87:137;853:10;780:87;:::o;498:872:100:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158200760846b14d8eb95523304e8a738751d4fd6ddeb5dadf0235ca13da2334b089964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158200760846B14D8EB SWAP6 MSTORE CALLER DIV 0xE8 0xA7 CODESIZE PUSH22 0x1D4FD6DDEB5DADF0235CA13DA2334B089964736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "498:872:100:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:872:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:67:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;-1:-1:-1;;;;;5443:30:14;;;;;;;;;;;;;;1270:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1270:46:14;-1:-1:-1;;;;;;1270:46:14;;:::i;6768:81::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6768:81:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4372:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4372:55:14;-1:-1:-1;;;;;4372:55:14;;:::i;5558:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5558:53:14;-1:-1:-1;;;;;5558:53:14;;:::i;:::-;;;;;;;;;;;;;;;;;;3097:46;;;:::i;3969:32::-;;;:::i;1527:65::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1527:65:14;;;;;;;;:::i;3376:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3376:55:14;-1:-1:-1;;;;;3376:55:14;;:::i;4925:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4925:48:14;-1:-1:-1;;;;;4925:48:14;;:::i;1744:69::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1744:69:14;;;;;;-1:-1:-1;;;;;1744:69:14;;:::i;2825:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2825:55:14;-1:-1:-1;;;;;2825:55:14;;:::i;2717:41::-;;;:::i;4832:37::-;;;:::i;2013:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2013:52:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:50;;;:::i;1898:76::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1898:76:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4542:47:14;-1:-1:-1;;;;;4542:47:14;;:::i;5650:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5650:57:14;-1:-1:-1;;;;;5650:57:14;;:::i;1087:24::-;;;:::i;6000:39::-;;;:::i;1012:25::-;;;:::i;3887:32::-;;;:::i;7007:17::-;;;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4285:55:14;-1:-1:-1;;;;;4285:55:14;;:::i;1134:83:142:-;;;:::i;2994:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2994:55:14;-1:-1:-1;;;;;2994:55:14;;:::i;5113:49::-;;;:::i;5340:45::-;;;:::i;4075:47::-;;;:::i;5175:29::-;;;:::i;3781:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3781:57:14;-1:-1:-1;;;;;3781:57:14;;:::i;3605:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:57:14;-1:-1:-1;;;;;3605:57:14;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:55:14;-1:-1:-1;;;;;6168:55:14;;:::i;1347:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1347:37:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;;;;;;;;;;;;;;;;1437:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:48:14;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6853:69:14;;;;;;;;;;:::i;6305:31::-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:55:14;-1:-1:-1;;;;;3209:55:14;;:::i;2626:29::-;;;:::i;3490:47::-;;;:::i;4754:35::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;6447:60:14;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1437:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2626:29::-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract implements functionality to withdraw protocol tokens."
          }
        }
      },
      "contracts/mixins/RewardHelper.sol": {
        "RewardHelper": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "The Reward Helper contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b610ead8061010f6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820f415291485c860400f82663201ac6d7302130582ad397a2b9332ae1c4e5c1bdd64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH2 0xA9 PUSH2 0xFC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x100 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xEAD DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820F415291485C860 BLOCKHASH 0xF DUP3 PUSH7 0x3201AC6D730213 SDIV DUP3 0xAD CODECOPY PUSH27 0x2B9332AE1C4E5C1BDD64736F6C6343000511003200000000000000 ",
              "sourceMap": "459:965:101:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;459:965:101;;780:87:137;853:10;780:87;:::o;459:965:101:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820f415291485c860400f82663201ac6d7302130582ad397a2b9332ae1c4e5c1bdd64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A72315820F415291485C860 BLOCKHASH 0xF DUP3 PUSH7 0x3201AC6D730213 SDIV DUP3 0xAD CODECOPY PUSH27 0x2B9332AE1C4E5C1BDD64736F6C6343000511003200000000000000 ",
              "sourceMap": "459:965:101:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;459:965:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:67:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;-1:-1:-1;;;;;5443:30:14;;;;;;;;;;;;;;1270:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1270:46:14;-1:-1:-1;;;;;;1270:46:14;;:::i;6768:81::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6768:81:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4372:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4372:55:14;-1:-1:-1;;;;;4372:55:14;;:::i;5558:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5558:53:14;-1:-1:-1;;;;;5558:53:14;;:::i;:::-;;;;;;;;;;;;;;;;;;3097:46;;;:::i;3969:32::-;;;:::i;1527:65::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1527:65:14;;;;;;;;:::i;3376:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3376:55:14;-1:-1:-1;;;;;3376:55:14;;:::i;4925:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4925:48:14;-1:-1:-1;;;;;4925:48:14;;:::i;1744:69::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1744:69:14;;;;;;-1:-1:-1;;;;;1744:69:14;;:::i;2825:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2825:55:14;-1:-1:-1;;;;;2825:55:14;;:::i;2717:41::-;;;:::i;4832:37::-;;;:::i;2013:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2013:52:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:50;;;:::i;1898:76::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1898:76:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4542:47:14;-1:-1:-1;;;;;4542:47:14;;:::i;5650:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5650:57:14;-1:-1:-1;;;;;5650:57:14;;:::i;1087:24::-;;;:::i;6000:39::-;;;:::i;1012:25::-;;;:::i;3887:32::-;;;:::i;7007:17::-;;;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4285:55:14;-1:-1:-1;;;;;4285:55:14;;:::i;1134:83:142:-;;;:::i;2994:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2994:55:14;-1:-1:-1;;;;;2994:55:14;;:::i;5113:49::-;;;:::i;5340:45::-;;;:::i;4075:47::-;;;:::i;5175:29::-;;;:::i;3781:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3781:57:14;-1:-1:-1;;;;;3781:57:14;;:::i;3605:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:57:14;-1:-1:-1;;;;;3605:57:14;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:55:14;-1:-1:-1;;;;;6168:55:14;;:::i;1347:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1347:37:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;;;;;;;;;;;;;;;;1437:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:48:14;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6853:69:14;;;;;;;;;;:::i;6305:31::-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:55:14;-1:-1:-1;;;;;3209:55:14;;:::i;2626:29::-;;;:::i;3490:47::-;;;:::i;4754:35::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;6447:60:14;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1437:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2626:29::-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract calculates the reward for rollover transactions. * A rollover is a renewal of a deposit. Instead of liquidating a deposit on maturity, you can roll it over into a new deposit. The outstanding principal of the old deposit is rolled over with or without the interest outstanding on it."
          }
        }
      },
      "contracts/mixins/VaultController.sol": {
        "VaultController": {
          "abi": [
            {
              "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": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultWithdraw",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "The Vault Controller contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b610ead8061010f6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158208d348fa6d97165ace9fd8dad962d5cdc01639c9a97f03068d7204b6ecb3e470964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH2 0xA9 PUSH2 0xFC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x100 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xEAD DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158208D348FA6D97165 0xAC 0xE9 REVERT DUP14 0xAD SWAP7 0x2D 0x5C 0xDC ADD PUSH4 0x9C9A97F0 ADDRESS PUSH9 0xD7204B6ECB3E470964 PUSH20 0x6F6C634300051100320000000000000000000000 ",
              "sourceMap": "532:2978:102:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;532:2978:102;;780:87:137;853:10;780:87;:::o;532:2978:102:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158208d348fa6d97165ace9fd8dad962d5cdc01639c9a97f03068d7204b6ecb3e470964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158208D348FA6D97165 0xAC 0xE9 REVERT DUP14 0xAD SWAP7 0x2D 0x5C 0xDC ADD PUSH4 0x9C9A97F0 ADDRESS PUSH9 0xD7204B6ECB3E470964 PUSH20 0x6F6C634300051100320000000000000000000000 ",
              "sourceMap": "532:2978:102:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;532:2978:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:67:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;-1:-1:-1;;;;;5443:30:14;;;;;;;;;;;;;;1270:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1270:46:14;-1:-1:-1;;;;;;1270:46:14;;:::i;6768:81::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6768:81:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4372:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4372:55:14;-1:-1:-1;;;;;4372:55:14;;:::i;5558:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5558:53:14;-1:-1:-1;;;;;5558:53:14;;:::i;:::-;;;;;;;;;;;;;;;;;;3097:46;;;:::i;3969:32::-;;;:::i;1527:65::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1527:65:14;;;;;;;;:::i;3376:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3376:55:14;-1:-1:-1;;;;;3376:55:14;;:::i;4925:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4925:48:14;-1:-1:-1;;;;;4925:48:14;;:::i;1744:69::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1744:69:14;;;;;;-1:-1:-1;;;;;1744:69:14;;:::i;2825:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2825:55:14;-1:-1:-1;;;;;2825:55:14;;:::i;2717:41::-;;;:::i;4832:37::-;;;:::i;2013:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2013:52:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:50;;;:::i;1898:76::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1898:76:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4542:47:14;-1:-1:-1;;;;;4542:47:14;;:::i;5650:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5650:57:14;-1:-1:-1;;;;;5650:57:14;;:::i;1087:24::-;;;:::i;6000:39::-;;;:::i;1012:25::-;;;:::i;3887:32::-;;;:::i;7007:17::-;;;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4285:55:14;-1:-1:-1;;;;;4285:55:14;;:::i;1134:83:142:-;;;:::i;2994:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2994:55:14;-1:-1:-1;;;;;2994:55:14;;:::i;5113:49::-;;;:::i;5340:45::-;;;:::i;4075:47::-;;;:::i;5175:29::-;;;:::i;3781:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3781:57:14;-1:-1:-1;;;;;3781:57:14;;:::i;3605:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:57:14;-1:-1:-1;;;;;3605:57:14;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:55:14;-1:-1:-1;;;;;6168:55:14;;:::i;1347:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1347:37:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;;;;;;;;;;;;;;;;1437:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:48:14;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6853:69:14;;;;;;;;;;:::i;6305:31::-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:55:14;-1:-1:-1;;;;;3209:55:14;;:::i;2626:29::-;;;:::i;3490:47::-;;;:::i;4754:35::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;6447:60:14;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1437:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2626:29::-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {},
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract implements functionality to deposit and withdraw wrBTC and other tokens from the vault."
          }
        }
      },
      "contracts/mockup/BlockMockUp.sol": {
        "BlockMockUp": {
          "abi": [
            {
              "constant": true,
              "inputs": [],
              "name": "blockNum",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getBlockNum",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_blockNum",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_blockNum",
                  "type": "uint256"
                }
              ],
              "name": "setBlockNum",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "getBlockNum()": {
                "return": "_blockNum The block number."
              },
              "setBlockNum(uint256)": {
                "params": {
                  "_blockNum": "The block number."
                }
              }
            },
            "title": "Used to get and set mock block number."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060c18061001f6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c80632bdd22901460415780637f6c6f1014605d5780638ae63d6d146075575b600080fd5b605b60048036036020811015605557600080fd5b5035607b565b005b60636080565b60408051918252519081900360200190f35b60636086565b600055565b60005490565b6000548156fea265627a7a723158201726efd13beda1f03c16e7b64b277e0bc88770860b507cb15ec7f4561fe5f2d964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC1 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2BDD2290 EQ PUSH1 0x41 JUMPI DUP1 PUSH4 0x7F6C6F10 EQ PUSH1 0x5D JUMPI DUP1 PUSH4 0x8AE63D6D EQ PUSH1 0x75 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x7B JUMP JUMPDEST STOP JUMPDEST PUSH1 0x63 PUSH1 0x80 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x63 PUSH1 0x86 JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 OR 0x26 0xEF 0xD1 EXTCODESIZE 0xED LOG1 CREATE EXTCODECOPY AND 0xE7 0xB6 0x4B 0x27 PUSH31 0xBC88770860B507CB15EC7F4561FE5F2D964736F6C63430005110032000000 ",
              "sourceMap": "82:386:103:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;82:386:103;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b5060043610603c5760003560e01c80632bdd22901460415780637f6c6f1014605d5780638ae63d6d146075575b600080fd5b605b60048036036020811015605557600080fd5b5035607b565b005b60636080565b60408051918252519081900360200190f35b60636086565b600055565b60005490565b6000548156fea265627a7a723158201726efd13beda1f03c16e7b64b277e0bc88770860b507cb15ec7f4561fe5f2d964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2BDD2290 EQ PUSH1 0x41 JUMPI DUP1 PUSH4 0x7F6C6F10 EQ PUSH1 0x5D JUMPI DUP1 PUSH4 0x8AE63D6D EQ PUSH1 0x75 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x7B JUMP JUMPDEST STOP JUMPDEST PUSH1 0x63 PUSH1 0x80 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x63 PUSH1 0x86 JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 OR 0x26 0xEF 0xD1 EXTCODESIZE 0xED LOG1 CREATE EXTCODECOPY AND 0xE7 0xB6 0x4B 0x27 PUSH31 0xBC88770860B507CB15EC7F4561FE5F2D964736F6C63430005110032000000 ",
              "sourceMap": "82:386:103:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;82:386:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;391:75;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;391:75:103;;:::i;:::-;;218:86;;;:::i;:::-;;;;;;;;;;;;;;;;106:23;;;:::i;391:75::-;442:8;:20;391:75::o;218:86::-;262:17;292:8;218:86;:::o;106:23::-;;;;:::o"
            },
            "methodIdentifiers": {
              "blockNum()": "8ae63d6d",
              "getBlockNum()": "7f6c6f10",
              "setBlockNum(uint256)": "2bdd2290"
            }
          },
          "userdoc": {
            "methods": {
              "getBlockNum()": {
                "notice": "To get the `blockNum`."
              },
              "setBlockNum(uint256)": {
                "notice": "To set the `blockNum`."
              }
            }
          }
        }
      },
      "contracts/mockup/FeeSharingProxyMockup.sol": {
        "FeeSharingProxyMockup": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IProtocol",
                  "name": "_protocol",
                  "type": "address"
                },
                {
                  "internalType": "contract IStaking",
                  "name": "_staking",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "CheckpointAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "FeeWithdrawn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "UserFeeWithdrawn",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_loanPoolToken",
                  "type": "address"
                }
              ],
              "name": "getAccumulatedFees",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lastFeeWithdrawalTime",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "numTokenCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "processedCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocol",
              "outputs": [
                {
                  "internalType": "contract IProtocol",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract IStaking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "testData",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "loanPoolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "maxCheckpoints",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "tokenCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "blockNumber",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "timestamp",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "totalWeightedStake",
                  "type": "uint96"
                },
                {
                  "internalType": "uint96",
                  "name": "numTokens",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "_amount",
                  "type": "uint96"
                }
              ],
              "name": "transferTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "unprocessedAmount",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_loanPoolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "_maxCheckpoints",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                }
              ],
              "name": "withdrawFees",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "getAccumulatedFees(address,address)": {
                "params": {
                  "_loanPoolToken": "Address of the pool token.",
                  "_user": "The address of the user or contract."
                },
                "return": "The accumulated fee for the message sender."
              },
              "transferTokens(address,uint96)": {
                "details": "We just update amount of tokens here and write checkpoint in a separate methods in order to prevent adding checkpoints too often.",
                "params": {
                  "_amount": "Amount to be transferred.",
                  "_token": "Address of the token."
                }
              },
              "withdrawFees(address)": {
                "params": {
                  "_token": "Address of the token"
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516118603803806118608339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b039384166001600160a01b031991821617909155600180549390921692169190911790556117e68061007a6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80637913b451116100715780637913b451146102205780638b6fdcba1461024e5780638ce7442614610290578063a965b3a914610298578063abe979e1146102d4578063f3bdba8f14610309576100b4565b8063016cbd51146100b9578063164e68de146100f157806320020208146101195780633d67df6f146101585780634cf088d91461019857806370530017146101bc575b600080fd5b6100c161032f565b604080516001600160a01b03948516815263ffffffff909316602084015292168183015290519081900360600190f35b6101176004803603602081101561010757600080fd5b50356001600160a01b0316610353565b005b61013f6004803603602081101561012f57600080fd5b50356001600160a01b0316610718565b6040805163ffffffff9092168252519081900360200190f35b6101866004803603604081101561016e57600080fd5b506001600160a01b0381358116916020013516610730565b60408051918252519081900360200190f35b6101a061074a565b604080516001600160a01b039092168252519081900360200190f35b6101e8600480360360408110156101d257600080fd5b506001600160a01b038135169060200135610759565b6040805163ffffffff95861681529390941660208401526001600160601b039182168385015216606082015290519081900360800190f35b61013f6004803603604081101561023657600080fd5b506001600160a01b03813581169160200135166107a5565b6102746004803603602081101561026457600080fd5b50356001600160a01b03166107c8565b604080516001600160601b039092168252519081900360200190f35b6101a06107e3565b610117600480360360608110156102ae57600080fd5b506001600160a01b03813581169163ffffffff60208201351691604090910135166107f2565b610117600480360360408110156102ea57600080fd5b5080356001600160a01b031690602001356001600160601b031661085c565b6101866004803603602081101561031f57600080fd5b50356001600160a01b0316610a8b565b6007546008546001600160a01b0380831692600160a01b900463ffffffff16911683565b6001600160a01b0381166103985760405162461bcd60e51b815260040180806020018281038252602e815260200180611750602e913960400191505060405180910390fd5b60008054604080516310c59ce360e11b81526001600160a01b0385811660048301529151919092169163218b39c691602480830192602092919082900301818787803b1580156103e757600080fd5b505af11580156103fb573d6000803e3d6000fd5b505050506040513d602081101561041157600080fd5b505190506001600160a01b03811661045a5760405162461bcd60e51b815260040180806020018281038252603381526020018061169d6033913960400191505060405180910390fd5b6000805460408051631e4aaa4f60e31b81526001600160a01b0386811660048301523060248301529151919092169163f255527891604480830192602092919082900301818787803b1580156104af57600080fd5b505af11580156104c3573d6000803e3d6000fd5b505050506040513d60208110156104d957600080fd5b50519050806105195760405162461bcd60e51b815260040180806020018281038252603481526020018061177e6034913960400191505060405180910390fd5b826001600160a01b031663095ea7b383836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b505050506040513d60208110156105a357600080fd5b5050604080516340c10f1960e01b81523060048201526024810183905290516000916001600160a01b038516916340c10f199160448082019260209290919082900301818787803b1580156105f757600080fd5b505af115801561060b573d6000803e3d6000fd5b505050506040513d602081101561062157600080fd5b50516040805160608101825281815291925060009161064a918491906117106020830139610a9d565b6001600160a01b038516600090815260066020908152604091829020548251606081018452838152939450610693936001600160601b039091169285926116d090830139610b37565b6001600160a01b038516600090815260066020526040902080546001600160601b0319166001600160601b03929092169190911790556106d284610ba1565b6040805183815290516001600160a01b0386169133917eed5939179dc194223f0edd1517ecee2210b22da7f82c8e4b1795e93b9f06aa9181900360200190a35050505050565b60036020526000908152604090205463ffffffff1681565b60008061073f84846000610c15565b509150505b92915050565b6001546001600160a01b031681565b600260209081526000928352604080842090915290825290205463ffffffff808216916401000000008104909116906001600160601b03600160401b8204811691600160a01b90041684565b600460209081526000928352604080842090915290825290205463ffffffff1681565b6006602052600090815260409020546001600160601b031681565b6000546001600160a01b031681565b604080516060810182526001600160a01b0394851680825263ffffffff9490941660208201819052929094169301839052600780546001600160a01b031990811690931763ffffffff60a01b1916600160a01b909202919091179055600880549091169091179055565b6001600160a01b0382166108a15760405162461bcd60e51b81526004018080602001828103825260308152602001806116106030913960400191505060405180910390fd5b6000816001600160601b0316116108e95760405162461bcd60e51b815260040180806020018281038252602f815260200180611640602f913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526001600160601b038316604482015290516000916001600160a01b038516916323b872dd9160648082019260209290919082900301818787803b15801561094957600080fd5b505af115801561095d573d6000803e3d6000fd5b505050506040513d602081101561097357600080fd5b50519050806109b35760405162461bcd60e51b815260040180806020018281038252602e81526020018061166f602e913960400191505060405180910390fd5b6001600160a01b0383166000908152600660209081526040918290205482516060810190935260378084526109fe936001600160601b03909216928692919061157d90830139610b37565b6001600160a01b038416600090815260066020526040902080546001600160601b0319166001600160601b0392909216919091179055610a3d83610ba1565b604080516001600160601b038416815290516001600160a01b0385169133917f1b89874203ff7f0bba87c969ada3f32fda22ed38a6706d35199d21280c7811b19181900360200190a3505050565b60056020526000908152604090205481565b600081600160601b8410610b2f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610af4578181015183820152602001610adc565b50505050905090810190601f168015610b215780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b6000838301826001600160601b038087169083161015610b985760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610af4578181015183820152602001610adc565b50949350505050565b6001600160a01b03811660009081526005602052604090205462015180429190910310610c12576001600160a01b03811660009081526005602090815260408083204290556006909152902080546001600160601b031981169091556001600160601b0316610c108282610f68565b505b50565b6001600160a01b038084166000908152600460209081526040808320938616835292905290812054819063ffffffff908116908290851615610cc3576001600160a01b03861660009081526003602052604090205463ffffffff90811690831610610cb15760405162461bcd60e51b81526004018080602001828103825260398152602001806115446039913960400191505060405180910390fd5b610cbc828787611239565b9050610d35565b6001600160a01b03861660009081526003602052604090205463ffffffff90811690831610610d1457505050506001600160a01b03821660009081526003602052604081205463ffffffff16610f60565b506001600160a01b03851660009081526003602052604090205463ffffffff165b60008080845b8463ffffffff168163ffffffff161015610f55576001600160a01b03808b16600090815260026020908152604080832063ffffffff8087168552908352818420600154815484516372ec979560e01b815264010000000090910490931660048401529251909592909216926372ec979592602480840193829003018186803b158015610dc657600080fd5b505afa158015610dda573d6000803e3d6000fd5b505050506040513d6020811015610df057600080fd5b50519050600085821415610e05575083610eee565b600160009054906101000a90046001600160a01b03166001600160a01b03166337e6b1c18f60018660000160009054906101000a900463ffffffff16038660000160049054906101000a900463ffffffff166040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018363ffffffff1681526020018263ffffffff168152602001935050505060206040518083038186803b158015610eb757600080fd5b505afa158015610ecb573d6000803e3d6000fd5b505050506040513d6020811015610ee157600080fd5b5051919550909350849050835b8254600090610f31906001600160601b03600160401b8204811691610f2591600160a01b909104811690861663ffffffff61130b16565b9063ffffffff61136b16565b9050610f43888263ffffffff6113ad16565b97505060019093019250610d3b915050565b509195509193505050505b935093915050565b6000610f8c436040518060600160405280603f8152602001611505603f9139611407565b90506000610fb2426040518060800160405280604281526020016114c360429139611407565b6001600160a01b0385811660009081526003602090815260408083205460015482516312916bdd60e11b815263ffffffff6000198b01811660048301524260248301529351979850929091169593941692632522d7ba92604480840193919291829003018186803b15801561102657600080fd5b505afa15801561103a573d6000803e3d6000fd5b505050506040513d602081101561105057600080fd5b5051905063ffffffff82161580159061109a57506001600160a01b038616600090815260026020908152604080832063ffffffff6000198701811685529252909120548582169116145b1561110f576001600160a01b03868116600090815260026020908152604080832063ffffffff6000198801168452909152902080546001600160601b03888116600160a01b02908516600160401b026bffffffffffffffffffffffff60401b19909216919091179092169190911790556111e8565b6040805160808101825263ffffffff808716825285811660208084019182526001600160601b038087168587019081528b8216606087019081526001600160a01b03808f166000818152600287528a81208d8a16825287528a812099518a549851955194518716600160a01b0294909616600160401b026bffffffffffffffffffffffff60401b19958a166401000000000267ffffffff0000000019978b1663ffffffff199a8b161797909716969096179490941694909417161790955584526003905292909120805460018601909216919092161790555b604080516001600160601b038716815290516001600160a01b0388169133917ff61a5f2f4d0b2d871d5bf18717d08a6b0f543afa7e08dad5df1fea150f7296329181900360200190a3505050505050565b6001600160a01b03821660009081526003602052604081205463ffffffff908116908290841661126a5750806112c1565b606463ffffffff8516111561127e57606493505b6112a884870163ffffffff166040518060600160405280603b81526020016115b4603b9139611407565b90508163ffffffff168163ffffffff1611156112c15750805b6001600160a01b038516600090815260026020908152604080832063ffffffff600019860181168552925290912054164381141561130157600019909101905b5095945050505050565b60008261131a57506000610744565b8282028284828161132757fe5b04146113645760405162461bcd60e51b81526004018080602001828103825260218152602001806115ef6021913960400191505060405180910390fd5b9392505050565b600061136483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061145d565b600082820183811015611364576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000816401000000008410610b2f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610af4578181015183820152602001610adc565b600081836114ac5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610af4578181015183820152602001610adc565b5060008385816114b857fe5b049594505050505056fe46656553686172696e6750726f78793a3a5f7772697465436865636b706f696e743a20626c6f636b2074696d657374616d702065786365656473203332206269747346656553686172696e6750726f78793a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747346656553686172696e6750726f78793a3a7769746864726177466565733a206e6f20746f6b656e7320666f722061207769746864726177616c46656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20616d6f756e742065786365656473203936206269747346656553686172696e6750726f78793a3a77697468647261773a20636865636b706f696e7420696e64657820657863656564732033322062697473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20696e76616c6964206164647265737346656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20696e76616c696420616d6f756e745374616b696e673a3a7472616e73666572546f6b656e733a20746f6b656e207472616e73666572206661696c656446656553686172696e6750726f78793a3a7769746864726177466565733a206c6f616e20746f6b656e206e6f7420666f756e6446656553686172696e6750726f78793a3a7769746864726177466565733a20756e70726f636573736564416d6f756e742065786365656473203936206269747346656553686172696e6750726f78793a3a7769746864726177466565733a20706f6f6c20746f6b656e20616d6f756e742065786365656473203936206269747346656553686172696e6750726f78793a3a7769746864726177466565733a20696e76616c6964206164647265737346656553686172696e6750726f78793a3a7769746864726177466565733a206e6f20746f6b656e7320746f207769746864726177a265627a7a72315820db5527f5c7de82698817f5e913dd7bb5c4f1e6b13e88a8165a9b3b093aa8c38964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1860 CODESIZE SUB DUP1 PUSH2 0x1860 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP4 SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x17E6 DUP1 PUSH2 0x7A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7913B451 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x7913B451 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x8B6FDCBA EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x8CE74426 EQ PUSH2 0x290 JUMPI DUP1 PUSH4 0xA965B3A9 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xABE979E1 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0xF3BDBA8F EQ PUSH2 0x309 JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x16CBD51 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x164E68DE EQ PUSH2 0xF1 JUMPI DUP1 PUSH4 0x20020208 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x3D67DF6F EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x70530017 EQ PUSH2 0x1BC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x32F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP3 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x353 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x718 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x730 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x759 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP2 DUP3 AND DUP4 DUP6 ADD MSTORE AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7A5 JUMP JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x7E3 JUMP JUMPDEST PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x85C JUMP JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA8B JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP3 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP2 AND DUP4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x398 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1750 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x10C59CE3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x218B39C6 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x45A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x169D PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1E4AAA4F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xF2555278 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x519 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x177E PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x58D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x60B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP2 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH2 0x64A SWAP2 DUP5 SWAP2 SWAP1 PUSH2 0x1710 PUSH1 0x20 DUP4 ADD CODECOPY PUSH2 0xA9D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP4 DUP2 MSTORE SWAP4 SWAP5 POP PUSH2 0x693 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 PUSH2 0x16D0 SWAP1 DUP4 ADD CODECOPY PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x6D2 DUP5 PUSH2 0xBA1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 CALLER SWAP2 PUSH31 0xED5939179DC194223F0EDD1517ECEE2210B22DA7F82C8E4B1795E93B9F06AA SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x73F DUP5 DUP5 PUSH1 0x0 PUSH2 0xC15 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH5 0x100000000 DUP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV AND DUP5 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP1 DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP3 SWAP1 SWAP5 AND SWAP4 ADD DUP4 SWAP1 MSTORE PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP4 OR PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x8 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x8A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1610 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x8E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1640 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x949 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x95D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x973 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x9B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x166F PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x37 DUP1 DUP5 MSTORE PUSH2 0x9FE SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND SWAP3 DUP7 SWAP3 SWAP2 SWAP1 PUSH2 0x157D SWAP1 DUP4 ADD CODECOPY PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xA3D DUP4 PUSH2 0xBA1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0x1B89874203FF7F0BBA87C969ADA3F32FDA22ED38A6706D35199D21280C7811B1 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x60 SHL DUP5 LT PUSH2 0xB2F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xADC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB21 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0xB98 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xAF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xADC JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH3 0x15180 TIMESTAMP SWAP2 SWAP1 SWAP2 SUB LT PUSH2 0xC12 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 TIMESTAMP SWAP1 SSTORE PUSH1 0x6 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0xC10 DUP3 DUP3 PUSH2 0xF68 JUMP JUMPDEST POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD DUP2 SWAP1 PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP3 SWAP1 DUP6 AND ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP4 AND LT PUSH2 0xCB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1544 PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xCBC DUP3 DUP8 DUP8 PUSH2 0x1239 JUMP JUMPDEST SWAP1 POP PUSH2 0xD35 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP4 AND LT PUSH2 0xD14 JUMPI POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND PUSH2 0xF60 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 JUMPDEST DUP5 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0xF55 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP1 DUP8 AND DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 SLOAD DUP2 SLOAD DUP5 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH5 0x100000000 SWAP1 SWAP2 DIV SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE SWAP3 MLOAD SWAP1 SWAP6 SWAP3 SWAP1 SWAP3 AND SWAP3 PUSH4 0x72EC9795 SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP3 EQ ISZERO PUSH2 0xE05 JUMPI POP DUP4 PUSH2 0xEEE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x37E6B1C1 DUP16 PUSH1 0x1 DUP7 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND SUB DUP7 PUSH1 0x0 ADD PUSH1 0x4 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xECB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP6 POP SWAP1 SWAP4 POP DUP5 SWAP1 POP DUP4 JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xF31 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH2 0xF25 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP7 AND PUSH4 0xFFFFFFFF PUSH2 0x130B AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x136B AND JUMP JUMPDEST SWAP1 POP PUSH2 0xF43 DUP9 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x13AD AND JUMP JUMPDEST SWAP8 POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xD3B SWAP2 POP POP JUMP JUMPDEST POP SWAP2 SWAP6 POP SWAP2 SWAP4 POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF8C NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1505 PUSH1 0x3F SWAP2 CODECOPY PUSH2 0x1407 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xFB2 TIMESTAMP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14C3 PUSH1 0x42 SWAP2 CODECOPY PUSH2 0x1407 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 SLOAD DUP3 MLOAD PUSH4 0x12916BDD PUSH1 0xE1 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP12 ADD DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE TIMESTAMP PUSH1 0x24 DUP4 ADD MSTORE SWAP4 MLOAD SWAP8 SWAP9 POP SWAP3 SWAP1 SWAP2 AND SWAP6 SWAP4 SWAP5 AND SWAP3 PUSH4 0x2522D7BA SWAP3 PUSH1 0x44 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1026 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x103A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1050 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH4 0xFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x109A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP8 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP6 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x110F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP9 DUP2 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP1 DUP6 AND PUSH1 0x1 PUSH1 0x40 SHL MUL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x11E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP8 AND DUP3 MSTORE DUP6 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND DUP6 DUP8 ADD SWAP1 DUP2 MSTORE DUP12 DUP3 AND PUSH1 0x60 DUP8 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 DUP8 MSTORE DUP11 DUP2 KECCAK256 DUP14 DUP11 AND DUP3 MSTORE DUP8 MSTORE DUP11 DUP2 KECCAK256 SWAP10 MLOAD DUP11 SLOAD SWAP9 MLOAD SWAP6 MLOAD SWAP5 MLOAD DUP8 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP5 SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x40 SHL MUL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT SWAP6 DUP11 AND PUSH5 0x100000000 MUL PUSH8 0xFFFFFFFF00000000 NOT SWAP8 DUP12 AND PUSH4 0xFFFFFFFF NOT SWAP11 DUP12 AND OR SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP5 SWAP1 SWAP5 AND SWAP5 SWAP1 SWAP5 OR AND OR SWAP1 SWAP6 SSTORE DUP5 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP7 ADD SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 CALLER SWAP2 PUSH32 0xF61A5F2F4D0B2D871D5BF18717D08A6B0F543AFA7E08DAD5DF1FEA150F729632 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP3 SWAP1 DUP5 AND PUSH2 0x126A JUMPI POP DUP1 PUSH2 0x12C1 JUMP JUMPDEST PUSH1 0x64 PUSH4 0xFFFFFFFF DUP6 AND GT ISZERO PUSH2 0x127E JUMPI PUSH1 0x64 SWAP4 POP JUMPDEST PUSH2 0x12A8 DUP5 DUP8 ADD PUSH4 0xFFFFFFFF AND PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15B4 PUSH1 0x3B SWAP2 CODECOPY PUSH2 0x1407 JUMP JUMPDEST SWAP1 POP DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x12C1 JUMPI POP DUP1 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND NUMBER DUP2 EQ ISZERO PUSH2 0x1301 JUMPI PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x131A JUMPI POP PUSH1 0x0 PUSH2 0x744 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1327 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1364 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15EF PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1364 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x145D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1364 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH5 0x100000000 DUP5 LT PUSH2 0xB2F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xAF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xADC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x14AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xAF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xADC JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x14B8 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID CHAINID PUSH6 0x655368617269 PUSH15 0x6750726F78793A3A5F777269746543 PUSH9 0x65636B706F696E743A KECCAK256 PUSH3 0x6C6F63 PUSH12 0x2074696D657374616D702065 PUSH25 0x6365656473203332206269747346656553686172696E675072 PUSH16 0x78793A3A5F7772697465436865636B70 PUSH16 0x696E743A20626C6F636B206E756D6265 PUSH19 0x20657863656564732033322062697473466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A7769746864726177466565733A206E6F20746F6B656E7320 PUSH7 0x6F722061207769 PUSH21 0x6864726177616C46656553686172696E6750726F78 PUSH26 0x3A3A7472616E73666572546F6B656E733A20616D6F756E742065 PUSH25 0x6365656473203936206269747346656553686172696E675072 PUSH16 0x78793A3A77697468647261773A206368 PUSH6 0x636B706F696E PUSH21 0x20696E646578206578636565647320333220626974 PUSH20 0x536166654D6174683A206D756C7469706C696361 PUSH21 0x696F6E206F766572666C6F7746656553686172696E PUSH8 0x50726F78793A3A74 PUSH19 0x616E73666572546F6B656E733A20696E76616C PUSH10 0x64206164647265737346 PUSH6 0x655368617269 PUSH15 0x6750726F78793A3A7472616E736665 PUSH19 0x546F6B656E733A20696E76616C696420616D6F PUSH22 0x6E745374616B696E673A3A7472616E73666572546F6B PUSH6 0x6E733A20746F PUSH12 0x656E207472616E7366657220 PUSH7 0x61696C65644665 PUSH6 0x53686172696E PUSH8 0x50726F78793A3A77 PUSH10 0x74686472617746656573 GASPRICE KECCAK256 PUSH13 0x6F616E20746F6B656E206E6F74 KECCAK256 PUSH7 0x6F756E64466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A7769746864726177466565733A20756E70726F6365737365 PUSH5 0x416D6F756E PUSH21 0x206578636565647320393620626974734665655368 PUSH2 0x7269 PUSH15 0x6750726F78793A3A77697468647261 PUSH24 0x466565733A20706F6F6C20746F6B656E20616D6F756E7420 PUSH6 0x786365656473 KECCAK256 CODECOPY CALLDATASIZE KECCAK256 PUSH3 0x697473 CHAINID PUSH6 0x655368617269 PUSH15 0x6750726F78793A3A77697468647261 PUSH24 0x466565733A20696E76616C69642061646472657373466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A7769746864726177466565733A206E6F20746F6B656E7320 PUSH21 0x6F207769746864726177A265627A7A72315820DB55 0x27 CREATE2 0xC7 0xDE DUP3 PUSH10 0x8817F5E913DD7BB5C4F1 0xE6 0xB1 RETURNDATACOPY DUP9 0xA8 AND GAS SWAP12 EXTCODESIZE MULMOD GASPRICE 0xA8 0xC3 DUP10 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "71:449:104:-;;;245:98;8:9:-1;5:2;;;30:1;27;20:12;5:2;245:98:104;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;245:98:104;;;;;;;3953:8:50;:20;;-1:-1:-1;;;;;3953:20:50;;;-1:-1:-1;;;;;;3953:20:50;;;;;;;;3977:18;;;;;;;;;;;;;;71:449:104;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100b45760003560e01c80637913b451116100715780637913b451146102205780638b6fdcba1461024e5780638ce7442614610290578063a965b3a914610298578063abe979e1146102d4578063f3bdba8f14610309576100b4565b8063016cbd51146100b9578063164e68de146100f157806320020208146101195780633d67df6f146101585780634cf088d91461019857806370530017146101bc575b600080fd5b6100c161032f565b604080516001600160a01b03948516815263ffffffff909316602084015292168183015290519081900360600190f35b6101176004803603602081101561010757600080fd5b50356001600160a01b0316610353565b005b61013f6004803603602081101561012f57600080fd5b50356001600160a01b0316610718565b6040805163ffffffff9092168252519081900360200190f35b6101866004803603604081101561016e57600080fd5b506001600160a01b0381358116916020013516610730565b60408051918252519081900360200190f35b6101a061074a565b604080516001600160a01b039092168252519081900360200190f35b6101e8600480360360408110156101d257600080fd5b506001600160a01b038135169060200135610759565b6040805163ffffffff95861681529390941660208401526001600160601b039182168385015216606082015290519081900360800190f35b61013f6004803603604081101561023657600080fd5b506001600160a01b03813581169160200135166107a5565b6102746004803603602081101561026457600080fd5b50356001600160a01b03166107c8565b604080516001600160601b039092168252519081900360200190f35b6101a06107e3565b610117600480360360608110156102ae57600080fd5b506001600160a01b03813581169163ffffffff60208201351691604090910135166107f2565b610117600480360360408110156102ea57600080fd5b5080356001600160a01b031690602001356001600160601b031661085c565b6101866004803603602081101561031f57600080fd5b50356001600160a01b0316610a8b565b6007546008546001600160a01b0380831692600160a01b900463ffffffff16911683565b6001600160a01b0381166103985760405162461bcd60e51b815260040180806020018281038252602e815260200180611750602e913960400191505060405180910390fd5b60008054604080516310c59ce360e11b81526001600160a01b0385811660048301529151919092169163218b39c691602480830192602092919082900301818787803b1580156103e757600080fd5b505af11580156103fb573d6000803e3d6000fd5b505050506040513d602081101561041157600080fd5b505190506001600160a01b03811661045a5760405162461bcd60e51b815260040180806020018281038252603381526020018061169d6033913960400191505060405180910390fd5b6000805460408051631e4aaa4f60e31b81526001600160a01b0386811660048301523060248301529151919092169163f255527891604480830192602092919082900301818787803b1580156104af57600080fd5b505af11580156104c3573d6000803e3d6000fd5b505050506040513d60208110156104d957600080fd5b50519050806105195760405162461bcd60e51b815260040180806020018281038252603481526020018061177e6034913960400191505060405180910390fd5b826001600160a01b031663095ea7b383836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b505050506040513d60208110156105a357600080fd5b5050604080516340c10f1960e01b81523060048201526024810183905290516000916001600160a01b038516916340c10f199160448082019260209290919082900301818787803b1580156105f757600080fd5b505af115801561060b573d6000803e3d6000fd5b505050506040513d602081101561062157600080fd5b50516040805160608101825281815291925060009161064a918491906117106020830139610a9d565b6001600160a01b038516600090815260066020908152604091829020548251606081018452838152939450610693936001600160601b039091169285926116d090830139610b37565b6001600160a01b038516600090815260066020526040902080546001600160601b0319166001600160601b03929092169190911790556106d284610ba1565b6040805183815290516001600160a01b0386169133917eed5939179dc194223f0edd1517ecee2210b22da7f82c8e4b1795e93b9f06aa9181900360200190a35050505050565b60036020526000908152604090205463ffffffff1681565b60008061073f84846000610c15565b509150505b92915050565b6001546001600160a01b031681565b600260209081526000928352604080842090915290825290205463ffffffff808216916401000000008104909116906001600160601b03600160401b8204811691600160a01b90041684565b600460209081526000928352604080842090915290825290205463ffffffff1681565b6006602052600090815260409020546001600160601b031681565b6000546001600160a01b031681565b604080516060810182526001600160a01b0394851680825263ffffffff9490941660208201819052929094169301839052600780546001600160a01b031990811690931763ffffffff60a01b1916600160a01b909202919091179055600880549091169091179055565b6001600160a01b0382166108a15760405162461bcd60e51b81526004018080602001828103825260308152602001806116106030913960400191505060405180910390fd5b6000816001600160601b0316116108e95760405162461bcd60e51b815260040180806020018281038252602f815260200180611640602f913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526001600160601b038316604482015290516000916001600160a01b038516916323b872dd9160648082019260209290919082900301818787803b15801561094957600080fd5b505af115801561095d573d6000803e3d6000fd5b505050506040513d602081101561097357600080fd5b50519050806109b35760405162461bcd60e51b815260040180806020018281038252602e81526020018061166f602e913960400191505060405180910390fd5b6001600160a01b0383166000908152600660209081526040918290205482516060810190935260378084526109fe936001600160601b03909216928692919061157d90830139610b37565b6001600160a01b038416600090815260066020526040902080546001600160601b0319166001600160601b0392909216919091179055610a3d83610ba1565b604080516001600160601b038416815290516001600160a01b0385169133917f1b89874203ff7f0bba87c969ada3f32fda22ed38a6706d35199d21280c7811b19181900360200190a3505050565b60056020526000908152604090205481565b600081600160601b8410610b2f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610af4578181015183820152602001610adc565b50505050905090810190601f168015610b215780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b6000838301826001600160601b038087169083161015610b985760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610af4578181015183820152602001610adc565b50949350505050565b6001600160a01b03811660009081526005602052604090205462015180429190910310610c12576001600160a01b03811660009081526005602090815260408083204290556006909152902080546001600160601b031981169091556001600160601b0316610c108282610f68565b505b50565b6001600160a01b038084166000908152600460209081526040808320938616835292905290812054819063ffffffff908116908290851615610cc3576001600160a01b03861660009081526003602052604090205463ffffffff90811690831610610cb15760405162461bcd60e51b81526004018080602001828103825260398152602001806115446039913960400191505060405180910390fd5b610cbc828787611239565b9050610d35565b6001600160a01b03861660009081526003602052604090205463ffffffff90811690831610610d1457505050506001600160a01b03821660009081526003602052604081205463ffffffff16610f60565b506001600160a01b03851660009081526003602052604090205463ffffffff165b60008080845b8463ffffffff168163ffffffff161015610f55576001600160a01b03808b16600090815260026020908152604080832063ffffffff8087168552908352818420600154815484516372ec979560e01b815264010000000090910490931660048401529251909592909216926372ec979592602480840193829003018186803b158015610dc657600080fd5b505afa158015610dda573d6000803e3d6000fd5b505050506040513d6020811015610df057600080fd5b50519050600085821415610e05575083610eee565b600160009054906101000a90046001600160a01b03166001600160a01b03166337e6b1c18f60018660000160009054906101000a900463ffffffff16038660000160049054906101000a900463ffffffff166040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018363ffffffff1681526020018263ffffffff168152602001935050505060206040518083038186803b158015610eb757600080fd5b505afa158015610ecb573d6000803e3d6000fd5b505050506040513d6020811015610ee157600080fd5b5051919550909350849050835b8254600090610f31906001600160601b03600160401b8204811691610f2591600160a01b909104811690861663ffffffff61130b16565b9063ffffffff61136b16565b9050610f43888263ffffffff6113ad16565b97505060019093019250610d3b915050565b509195509193505050505b935093915050565b6000610f8c436040518060600160405280603f8152602001611505603f9139611407565b90506000610fb2426040518060800160405280604281526020016114c360429139611407565b6001600160a01b0385811660009081526003602090815260408083205460015482516312916bdd60e11b815263ffffffff6000198b01811660048301524260248301529351979850929091169593941692632522d7ba92604480840193919291829003018186803b15801561102657600080fd5b505afa15801561103a573d6000803e3d6000fd5b505050506040513d602081101561105057600080fd5b5051905063ffffffff82161580159061109a57506001600160a01b038616600090815260026020908152604080832063ffffffff6000198701811685529252909120548582169116145b1561110f576001600160a01b03868116600090815260026020908152604080832063ffffffff6000198801168452909152902080546001600160601b03888116600160a01b02908516600160401b026bffffffffffffffffffffffff60401b19909216919091179092169190911790556111e8565b6040805160808101825263ffffffff808716825285811660208084019182526001600160601b038087168587019081528b8216606087019081526001600160a01b03808f166000818152600287528a81208d8a16825287528a812099518a549851955194518716600160a01b0294909616600160401b026bffffffffffffffffffffffff60401b19958a166401000000000267ffffffff0000000019978b1663ffffffff199a8b161797909716969096179490941694909417161790955584526003905292909120805460018601909216919092161790555b604080516001600160601b038716815290516001600160a01b0388169133917ff61a5f2f4d0b2d871d5bf18717d08a6b0f543afa7e08dad5df1fea150f7296329181900360200190a3505050505050565b6001600160a01b03821660009081526003602052604081205463ffffffff908116908290841661126a5750806112c1565b606463ffffffff8516111561127e57606493505b6112a884870163ffffffff166040518060600160405280603b81526020016115b4603b9139611407565b90508163ffffffff168163ffffffff1611156112c15750805b6001600160a01b038516600090815260026020908152604080832063ffffffff600019860181168552925290912054164381141561130157600019909101905b5095945050505050565b60008261131a57506000610744565b8282028284828161132757fe5b04146113645760405162461bcd60e51b81526004018080602001828103825260218152602001806115ef6021913960400191505060405180910390fd5b9392505050565b600061136483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061145d565b600082820183811015611364576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000816401000000008410610b2f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610af4578181015183820152602001610adc565b600081836114ac5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610af4578181015183820152602001610adc565b5060008385816114b857fe5b049594505050505056fe46656553686172696e6750726f78793a3a5f7772697465436865636b706f696e743a20626c6f636b2074696d657374616d702065786365656473203332206269747346656553686172696e6750726f78793a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747346656553686172696e6750726f78793a3a7769746864726177466565733a206e6f20746f6b656e7320666f722061207769746864726177616c46656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20616d6f756e742065786365656473203936206269747346656553686172696e6750726f78793a3a77697468647261773a20636865636b706f696e7420696e64657820657863656564732033322062697473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20696e76616c6964206164647265737346656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20696e76616c696420616d6f756e745374616b696e673a3a7472616e73666572546f6b656e733a20746f6b656e207472616e73666572206661696c656446656553686172696e6750726f78793a3a7769746864726177466565733a206c6f616e20746f6b656e206e6f7420666f756e6446656553686172696e6750726f78793a3a7769746864726177466565733a20756e70726f636573736564416d6f756e742065786365656473203936206269747346656553686172696e6750726f78793a3a7769746864726177466565733a20706f6f6c20746f6b656e20616d6f756e742065786365656473203936206269747346656553686172696e6750726f78793a3a7769746864726177466565733a20696e76616c6964206164647265737346656553686172696e6750726f78793a3a7769746864726177466565733a206e6f20746f6b656e7320746f207769746864726177a265627a7a72315820db5527f5c7de82698817f5e913dd7bb5c4f1e6b13e88a8165a9b3b093aa8c38964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7913B451 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x7913B451 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x8B6FDCBA EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x8CE74426 EQ PUSH2 0x290 JUMPI DUP1 PUSH4 0xA965B3A9 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xABE979E1 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0xF3BDBA8F EQ PUSH2 0x309 JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x16CBD51 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x164E68DE EQ PUSH2 0xF1 JUMPI DUP1 PUSH4 0x20020208 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x3D67DF6F EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x70530017 EQ PUSH2 0x1BC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x32F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP3 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x353 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x718 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x730 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x759 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP2 DUP3 AND DUP4 DUP6 ADD MSTORE AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7A5 JUMP JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x7E3 JUMP JUMPDEST PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x117 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x85C JUMP JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA8B JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP3 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP2 AND DUP4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x398 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1750 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x10C59CE3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x218B39C6 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x45A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x169D PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1E4AAA4F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xF2555278 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x519 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x177E PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x58D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x40C10F19 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x60B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP2 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH2 0x64A SWAP2 DUP5 SWAP2 SWAP1 PUSH2 0x1710 PUSH1 0x20 DUP4 ADD CODECOPY PUSH2 0xA9D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP4 DUP2 MSTORE SWAP4 SWAP5 POP PUSH2 0x693 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 PUSH2 0x16D0 SWAP1 DUP4 ADD CODECOPY PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x6D2 DUP5 PUSH2 0xBA1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 CALLER SWAP2 PUSH31 0xED5939179DC194223F0EDD1517ECEE2210B22DA7F82C8E4B1795E93B9F06AA SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x73F DUP5 DUP5 PUSH1 0x0 PUSH2 0xC15 JUMP JUMPDEST POP SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH5 0x100000000 DUP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV AND DUP5 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP1 DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP3 SWAP1 SWAP5 AND SWAP4 ADD DUP4 SWAP1 MSTORE PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP4 OR PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x8 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x8A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1610 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x8E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1640 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x949 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x95D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x973 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x9B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x166F PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x37 DUP1 DUP5 MSTORE PUSH2 0x9FE SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND SWAP3 DUP7 SWAP3 SWAP2 SWAP1 PUSH2 0x157D SWAP1 DUP4 ADD CODECOPY PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xA3D DUP4 PUSH2 0xBA1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0x1B89874203FF7F0BBA87C969ADA3F32FDA22ED38A6706D35199D21280C7811B1 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x60 SHL DUP5 LT PUSH2 0xB2F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xADC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB21 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0xB98 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xAF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xADC JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH3 0x15180 TIMESTAMP SWAP2 SWAP1 SWAP2 SUB LT PUSH2 0xC12 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 TIMESTAMP SWAP1 SSTORE PUSH1 0x6 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0xC10 DUP3 DUP3 PUSH2 0xF68 JUMP JUMPDEST POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD DUP2 SWAP1 PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP3 SWAP1 DUP6 AND ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP4 AND LT PUSH2 0xCB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1544 PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xCBC DUP3 DUP8 DUP8 PUSH2 0x1239 JUMP JUMPDEST SWAP1 POP PUSH2 0xD35 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP4 AND LT PUSH2 0xD14 JUMPI POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND PUSH2 0xF60 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 JUMPDEST DUP5 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0xF55 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP1 DUP8 AND DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 SLOAD DUP2 SLOAD DUP5 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH5 0x100000000 SWAP1 SWAP2 DIV SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE SWAP3 MLOAD SWAP1 SWAP6 SWAP3 SWAP1 SWAP3 AND SWAP3 PUSH4 0x72EC9795 SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP3 EQ ISZERO PUSH2 0xE05 JUMPI POP DUP4 PUSH2 0xEEE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x37E6B1C1 DUP16 PUSH1 0x1 DUP7 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND SUB DUP7 PUSH1 0x0 ADD PUSH1 0x4 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xECB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP6 POP SWAP1 SWAP4 POP DUP5 SWAP1 POP DUP4 JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xF31 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV DUP2 AND SWAP2 PUSH2 0xF25 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP7 AND PUSH4 0xFFFFFFFF PUSH2 0x130B AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x136B AND JUMP JUMPDEST SWAP1 POP PUSH2 0xF43 DUP9 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x13AD AND JUMP JUMPDEST SWAP8 POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0xD3B SWAP2 POP POP JUMP JUMPDEST POP SWAP2 SWAP6 POP SWAP2 SWAP4 POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF8C NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1505 PUSH1 0x3F SWAP2 CODECOPY PUSH2 0x1407 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xFB2 TIMESTAMP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14C3 PUSH1 0x42 SWAP2 CODECOPY PUSH2 0x1407 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 SLOAD DUP3 MLOAD PUSH4 0x12916BDD PUSH1 0xE1 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP12 ADD DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE TIMESTAMP PUSH1 0x24 DUP4 ADD MSTORE SWAP4 MLOAD SWAP8 SWAP9 POP SWAP3 SWAP1 SWAP2 AND SWAP6 SWAP4 SWAP5 AND SWAP3 PUSH4 0x2522D7BA SWAP3 PUSH1 0x44 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1026 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x103A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1050 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH4 0xFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x109A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP8 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP6 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x110F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP9 DUP2 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP1 DUP6 AND PUSH1 0x1 PUSH1 0x40 SHL MUL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x11E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP8 AND DUP3 MSTORE DUP6 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND DUP6 DUP8 ADD SWAP1 DUP2 MSTORE DUP12 DUP3 AND PUSH1 0x60 DUP8 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP16 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 DUP8 MSTORE DUP11 DUP2 KECCAK256 DUP14 DUP11 AND DUP3 MSTORE DUP8 MSTORE DUP11 DUP2 KECCAK256 SWAP10 MLOAD DUP11 SLOAD SWAP9 MLOAD SWAP6 MLOAD SWAP5 MLOAD DUP8 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP5 SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x40 SHL MUL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT SWAP6 DUP11 AND PUSH5 0x100000000 MUL PUSH8 0xFFFFFFFF00000000 NOT SWAP8 DUP12 AND PUSH4 0xFFFFFFFF NOT SWAP11 DUP12 AND OR SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP5 SWAP1 SWAP5 AND SWAP5 SWAP1 SWAP5 OR AND OR SWAP1 SWAP6 SSTORE DUP5 MSTORE PUSH1 0x3 SWAP1 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP7 ADD SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 CALLER SWAP2 PUSH32 0xF61A5F2F4D0B2D871D5BF18717D08A6B0F543AFA7E08DAD5DF1FEA150F729632 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP3 SWAP1 DUP5 AND PUSH2 0x126A JUMPI POP DUP1 PUSH2 0x12C1 JUMP JUMPDEST PUSH1 0x64 PUSH4 0xFFFFFFFF DUP6 AND GT ISZERO PUSH2 0x127E JUMPI PUSH1 0x64 SWAP4 POP JUMPDEST PUSH2 0x12A8 DUP5 DUP8 ADD PUSH4 0xFFFFFFFF AND PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15B4 PUSH1 0x3B SWAP2 CODECOPY PUSH2 0x1407 JUMP JUMPDEST SWAP1 POP DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x12C1 JUMPI POP DUP1 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND NUMBER DUP2 EQ ISZERO PUSH2 0x1301 JUMPI PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x131A JUMPI POP PUSH1 0x0 PUSH2 0x744 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1327 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1364 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15EF PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1364 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x145D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1364 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH5 0x100000000 DUP5 LT PUSH2 0xB2F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xAF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xADC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x14AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xAF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xADC JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x14B8 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID CHAINID PUSH6 0x655368617269 PUSH15 0x6750726F78793A3A5F777269746543 PUSH9 0x65636B706F696E743A KECCAK256 PUSH3 0x6C6F63 PUSH12 0x2074696D657374616D702065 PUSH25 0x6365656473203332206269747346656553686172696E675072 PUSH16 0x78793A3A5F7772697465436865636B70 PUSH16 0x696E743A20626C6F636B206E756D6265 PUSH19 0x20657863656564732033322062697473466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A7769746864726177466565733A206E6F20746F6B656E7320 PUSH7 0x6F722061207769 PUSH21 0x6864726177616C46656553686172696E6750726F78 PUSH26 0x3A3A7472616E73666572546F6B656E733A20616D6F756E742065 PUSH25 0x6365656473203936206269747346656553686172696E675072 PUSH16 0x78793A3A77697468647261773A206368 PUSH6 0x636B706F696E PUSH21 0x20696E646578206578636565647320333220626974 PUSH20 0x536166654D6174683A206D756C7469706C696361 PUSH21 0x696F6E206F766572666C6F7746656553686172696E PUSH8 0x50726F78793A3A74 PUSH19 0x616E73666572546F6B656E733A20696E76616C PUSH10 0x64206164647265737346 PUSH6 0x655368617269 PUSH15 0x6750726F78793A3A7472616E736665 PUSH19 0x546F6B656E733A20696E76616C696420616D6F PUSH22 0x6E745374616B696E673A3A7472616E73666572546F6B PUSH6 0x6E733A20746F PUSH12 0x656E207472616E7366657220 PUSH7 0x61696C65644665 PUSH6 0x53686172696E PUSH8 0x50726F78793A3A77 PUSH10 0x74686472617746656573 GASPRICE KECCAK256 PUSH13 0x6F616E20746F6B656E206E6F74 KECCAK256 PUSH7 0x6F756E64466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A7769746864726177466565733A20756E70726F6365737365 PUSH5 0x416D6F756E PUSH21 0x206578636565647320393620626974734665655368 PUSH2 0x7269 PUSH15 0x6750726F78793A3A77697468647261 PUSH24 0x466565733A20706F6F6C20746F6B656E20616D6F756E7420 PUSH6 0x786365656473 KECCAK256 CODECOPY CALLDATASIZE KECCAK256 PUSH3 0x697473 CHAINID PUSH6 0x655368617269 PUSH15 0x6750726F78793A3A77697468647261 PUSH24 0x466565733A20696E76616C69642061646472657373466565 MSTORE8 PUSH9 0x6172696E6750726F78 PUSH26 0x3A3A7769746864726177466565733A206E6F20746F6B656E7320 PUSH21 0x6F207769746864726177A265627A7A72315820DB55 0x27 CREATE2 0xC7 0xDE DUP3 PUSH10 0x8817F5E913DD7BB5C4F1 0xE6 0xB1 RETURNDATACOPY DUP9 0xA8 AND GAS SWAP12 EXTCODESIZE MULMOD GASPRICE 0xA8 0xC3 DUP10 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "71:449:104:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;71:449:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;217:24;;;:::i;:::-;;;;-1:-1:-1;;;;;217:24:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4143:1125:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4143:1125:50;-1:-1:-1;;;;;4143:1125:50;;:::i;:::-;;2646:53;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2646:53:50;-1:-1:-1;;;;;2646:53:50;;:::i;:::-;;;;;;;;;;;;;;;;;;;8378:198;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8378:198:50;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2416:23;;;:::i;:::-;;;;-1:-1:-1;;;;;2416:23:50;;;;;;;;;;;;;;2500:74;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2500:74:50;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2500:74:50;;;;;;;;;;;;;;;;;;;;;;2759;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2759:74:50;;;;;;;;;;:::i;3087:51::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3087:51:50;-1:-1:-1;;;;;3087:51:50;;:::i;:::-;;;;-1:-1:-1;;;;;3087:51:50;;;;;;;;;;;;;;2388:25;;;:::i;346:172:104:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;346:172:104;;;;;;;;;;;;;;;;;;;:::i;5557:702:50:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5557:702:50;;-1:-1:-1;;;;;5557:702:50;;;;;-1:-1:-1;;;;;5557:702:50;;:::i;2923:56::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2923:56:50;-1:-1:-1;;;;;2923:56:50;;:::i;217:24:104:-;;;;;-1:-1:-1;;;;;217:24:104;;;;-1:-1:-1;;;217:24:104;;;;;;;:::o;4143:1125:50:-;-1:-1:-1;;;;;4200:20:50;;4192:79;;;;-1:-1:-1;;;4192:79:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4276:21;4300:8;;:37;;;-1:-1:-1;;;4300:37:50;;-1:-1:-1;;;;;4300:37:50;;;;;;;;;:8;;;;;:29;;:37;;;;;;;;;;;;;;4276:21;4300:8;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;4300:37:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4300:37:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4300:37:50;;-1:-1:-1;;;;;;4349:27:50;;4341:91;;;;-1:-1:-1;;;4341:91:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4437:14;4454:8;;:44;;;-1:-1:-1;;;4454:44:50;;-1:-1:-1;;;;;4454:44:50;;;;;;;4492:4;4454:44;;;;;;:8;;;;;:21;;:44;;;;;;;;;;;;;;4437:14;4454:8;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;4454:44:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4454:44:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4454:44:50;;-1:-1:-1;4510:10:50;4502:75;;;;-1:-1:-1;;;4502:75:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4710:6;-1:-1:-1;;;;;4703:22:50;;4726:13;4741:6;4703:45;;;;;;;;;;;;;-1:-1:-1;;;;;4703:45:50;-1:-1:-1;;;;;4703:45:50;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4703:45:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4703:45:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;4778:53:50;;;-1:-1:-1;;;4778:53:50;;4817:4;4778:53;;;;;;;;;;;;4752:23;;-1:-1:-1;;;;;4778:30:50;;;;;:53;;;;;4703:45;;4778:53;;;;;;;;4752:23;4778:30;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;4778:53:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4778:53:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4778:53:50;4904:91;;;;;;;;;;;4778:53;;-1:-1:-1;4886:15:50;;4904:91;;4778:53;;4904:91;;4778:53;4904:91;;;:6;:91::i;:::-;-1:-1:-1;;;;;5044:32:50;;;;;;:17;:32;;;;;;;;;;5034:130;;;;;;;;;;4886:109;;-1:-1:-1;5034:130:50;;-1:-1:-1;;;;;5044:32:50;;;;4886:109;;5034:130;;;;;:5;:130::i;:::-;-1:-1:-1;;;;;4999:32:50;;;;;;:17;:32;;;;;:165;;-1:-1:-1;;;;;;4999:165:50;-1:-1:-1;;;;;4999:165:50;;;;;;;;;;5169:29;4999:32;5169:14;:29::i;:::-;5208:56;;;;;;;;-1:-1:-1;;;;;5208:56:50;;;5221:10;;5208:56;;;;;;;;;4143:1125;;;;;:::o;2646:53::-;;;;;;;;;;;;;;;:::o;8378:198::-;8466:7;8479:14;8510:45;8530:5;8537:14;8553:1;8510:19;:45::i;:::-;-1:-1:-1;8497:58:50;-1:-1:-1;;8378:198:50;;;;;:::o;2416:23::-;;;-1:-1:-1;;;;;2416:23:50;;:::o;2500:74::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;2500:74:50;;;;;-1:-1:-1;;;2500:74:50;;;;:::o;2759:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3087:51::-;;;;;;;;;;;;-1:-1:-1;;;;;3087:51:50;;:::o;2388:25::-;;;-1:-1:-1;;;;;2388:25:50;;:::o;346:172:104:-;462:52;;;;;;;;-1:-1:-1;;;;;462:52:104;;;;;;;;;;;;;;;;;;;;;;;;;;451:8;:63;;-1:-1:-1;;;;;;451:63:104;;;;;;-1:-1:-1;;;;451:63:104;-1:-1:-1;;;451:63:104;;;;;;;;;;;;;;;;;;;;346:172::o;5557:702:50:-;-1:-1:-1;;;;;5632:20:50;;5624:81;;;;-1:-1:-1;;;5624:81:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5727:1;5717:7;-1:-1:-1;;;;;5717:11:50;;5709:71;;;;-1:-1:-1;;;5709:71:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5846:72;;;-1:-1:-1;;;5846:72:50;;5882:10;5846:72;;;;5903:4;5846:72;;;;-1:-1:-1;;;;;5846:72:50;;;;;;;;5831:12;;-1:-1:-1;;;;;5846:27:50;;;;;:72;;;;;;;;;;;;;;;5831:12;5846:27;:72;;;5:2:-1;;;;30:1;27;20:12;5:2;5846:72:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5846:72:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5846:72:50;;-1:-1:-1;5846:72:50;5922:66;;;;-1:-1:-1;;;5922:66:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6078:25:50;;;;;;:17;:25;;;;;;;;;;6072:100;;;;;;;;;;;;;;-1:-1:-1;;;;;6078:25:50;;;;6105:7;;6072:100;;;;;;;:5;:100::i;:::-;-1:-1:-1;;;;;6044:25:50;;;;;;:17;:25;;;;;:128;;-1:-1:-1;;;;;;6044:128:50;-1:-1:-1;;;;;6044:128:50;;;;;;;;;;6177:22;6044:25;6177:14;:22::i;:::-;6209:46;;;-1:-1:-1;;;;;6209:46:50;;;;;;-1:-1:-1;;;;;6209:46:50;;;6227:10;;6209:46;;;;;;;;;5557:702;;;:::o;2923:56::-;;;;;;;;;;;;;:::o;1095:146:56:-;1173:6;1204:12;-1:-1:-1;;;1193:9:56;;1185:32;;;;-1:-1:-1;;;1185:32:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1185:32:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:1:56;;1095:146;-1:-1:-1;;1095:146:56:o;1516:172::-;1611:6;1634:5;;;1659:12;-1:-1:-1;;;;;1651:6:56;;;;;;;;1643:29;;;;-1:-1:-1;;;1643:29:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1643:29:56;-1:-1:-1;1683:1:56;1516:172;-1:-1:-1;;;;1516:172:56:o;6389:419:50:-;-1:-1:-1;;;;;6464:29:50;;;;;;:21;:29;;;;;;2338:5;6446:15;:47;;;;:74;6442:363;;-1:-1:-1;;;;;6527:29:50;;;;;;:21;:29;;;;;;;;6559:15;6527:47;;6595:17;:25;;;;;;;-1:-1:-1;;;;;;6685:29:50;;;;;-1:-1:-1;;;;;6595:25:50;6763:37;6549:6;6595:25;6763:21;:37::i;:::-;6442:363;;6389:419;:::o;9503:1778::-;-1:-1:-1;;;;;9663:27:50;;;9627:7;9663:27;;;:20;:27;;;;;;;;:43;;;;;;;;;;;;9627:7;;9663:43;;;;;9627:7;;9808:19;;;9804:552;;-1:-1:-1;;;;;9894:35:50;;;;;;:19;:35;;;;;;;;;;9886:43;;;;9878:113;;;;-1:-1:-1;;;9878:113:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10002:54;10017:5;10024:14;10040:15;10002:14;:54::i;:::-;9996:60;;9804:552;;;-1:-1:-1;;;;;10210:35:50;;;;;;:19;:35;;;;;;;;;;10201:44;;;;10197:109;;-1:-1:-1;;;;;;;;;10264:35:50;;10261:1;10264:35;;;:19;:35;;;;;;;;10253:47;;10197:109;-1:-1:-1;;;;;;10316:35:50;;;;;;:19;:35;;;;;;;;9804:552;10360:14;;;10462:5;10446:808;10473:3;10469:7;;:1;:7;;;10446:808;;;-1:-1:-1;;;;;10520:32:50;;;10488:29;10520:32;;;:16;:32;;;;;;;;:35;;;;;;;;;;;;10579:7;;10607:20;;10579:49;;-1:-1:-1;;;10579:49:50;;10607:20;;;;;;;;10579:49;;;;;10520:35;;10579:7;;;;;:27;;:49;;;;;;;;;;:7;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;10579:49:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10579:49:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10579:49:50;;-1:-1:-1;10633:20:50;10662:26;;;10658:448;;;-1:-1:-1;10712:19:50;10658:448;;;10942:7;;;;;;;;;-1:-1:-1;;;;;10942:7:50;-1:-1:-1;;;;;10942:29:50;;10972:5;11004:1;10979:10;:22;;;;;;;;;;;;:26;11007:10;:20;;;;;;;;;;;;10942:86;;;;;;;;;;;;;-1:-1:-1;;;;;10942:86:50;-1:-1:-1;;;;;10942:86:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10942:86:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10942:86:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10942:86:50;11092:8;;-1:-1:-1;10942:86:50;;-1:-1:-1;11092:8:50;;-1:-1:-1;10942:86:50;10658:448;11187:29;;11110:13;;11126:92;;-1:-1:-1;;;;;;;;11187:29:50;;;;;11126:48;;-1:-1:-1;;;11134:20:50;;;;;;11126:48;;;:33;:48;:::i;:::-;:52;:92;:52;:92;:::i;:::-;11110:108;-1:-1:-1;11232:17:50;:6;11110:108;11232:17;:10;:17;:::i;:::-;11223:26;-1:-1:-1;;10478:3:50;;;;;-1:-1:-1;10446:808:50;;-1:-1:-1;;10446:808:50;;-1:-1:-1;11265:6:50;;-1:-1:-1;11273:3:50;;-1:-1:-1;;;;9503:1778:50;;;;;;;:::o;12773:959::-;12852:18;12873:87;12880:12;12873:87;;;;;;;;;;;;;;;;;:6;:87::i;:::-;12852:108;;12964:21;12988:93;12995:15;12988:93;;;;;;;;;;;;;;;;;:6;:93::i;:::-;-1:-1:-1;;;;;13107:27:50;;;13085:19;13107:27;;;:19;:27;;;;;;;;;;13167:7;:66;;-1:-1:-1;;;13167:66:50;;13107:27;-1:-1:-1;;13200:15:50;;13167:66;;;;;;13217:15;13167:66;;;;;;12964:117;;-1:-1:-1;13107:27:50;;;;;13085:19;;13167:7;;:32;;:66;;;;;13107:27;;13167:66;;;;;;:7;:66;;;5:2:-1;;;;30:1;27;20:12;5:2;13167:66:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13167:66:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13167:66:50;;-1:-1:-1;13241:16:50;;;;;;;:89;;-1:-1:-1;;;;;;13261:24:50;;;;;;:16;:24;;;;;;;;:69;-1:-1:-1;;13286:16:50;;13261:42;;;;;;;;;:54;:69;;;:54;;:69;13241:89;13237:436;;;-1:-1:-1;;;;;13337:24:50;;;;;;;:16;:24;;;;;;;;:42;-1:-1:-1;;13362:16:50;;13337:42;;;;;;;;:82;;-1:-1:-1;;;;;13424:65:50;;;-1:-1:-1;;;13424:65:50;13337:82;;;-1:-1:-1;;;13337:82:50;-1:-1:-1;;;;13337:82:50;;;;;;;13424:65;;;;;;;;;13237:436;;;13546:71;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13546:71:50;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13505:24:50;;;-1:-1:-1;13505:24:50;;;:16;:24;;;;;:38;;;;;;;;;;:112;;;;;;;;;;;;-1:-1:-1;;;13505:112:50;;;;;-1:-1:-1;;;13505:112:50;-1:-1:-1;;;;13505:112:50;;;;;-1:-1:-1;;13505:112:50;;;-1:-1:-1;;13505:112:50;;;;;;;;;;;;;;;;;;;;;;;;;13622:27;;:19;:27;;;;;;:46;;13505:112;13652:16;;13622:46;;;;;;;;;;13237:436;13681:47;;;-1:-1:-1;;;;;13681:47:50;;;;;;-1:-1:-1;;;;;13681:47:50;;;13697:10;;13681:47;;;;;;;;;12773:959;;;;;;:::o;11681:849::-;-1:-1:-1;;;;;11833:35:50;;11799:6;11833:35;;;:19;:35;;;;;;;;;;;11799:6;;11890:20;;11886:406;;-1:-1:-1;12013:12:50;11886:406;;;2381:3;12045:33;;;;12041:84;;;2381:3;12086:33;;12041:84;12135:94;12150:15;12142:5;:23;12135:94;;;;;;;;;;;;;;;;;;;:6;:94::i;:::-;12129:100;;12244:12;12238:18;;:3;:18;;;12234:54;;;-1:-1:-1;12270:12:50;12234:54;-1:-1:-1;;;;;12404:32:50;;12379:22;12404:32;;;:16;:32;;;;;;;;:41;-1:-1:-1;;12437:7:50;;12404:41;;;;;;;;;:53;;12465:12;:31;;12461:52;;;-1:-1:-1;;12503:5:50;;;;12461:52;-1:-1:-1;12523:3:50;11681:849;-1:-1:-1;;;;;11681:849:50:o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2393:1;1999:399;-1:-1:-1;;;1999:399:145:o;2817:121::-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;797:146:56;875:6;906:12;899:5;895:9;;887:32;;;;-1:-1:-1;;;887:32:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3411:315:145;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3579:29:145;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o"
            },
            "methodIdentifiers": {
              "getAccumulatedFees(address,address)": "3d67df6f",
              "lastFeeWithdrawalTime(address)": "f3bdba8f",
              "numTokenCheckpoints(address)": "20020208",
              "processedCheckpoints(address,address)": "7913b451",
              "protocol()": "8ce74426",
              "staking()": "4cf088d9",
              "testData()": "016cbd51",
              "tokenCheckpoints(address,uint256)": "70530017",
              "transferTokens(address,uint96)": "abe979e1",
              "unprocessedAmount(address)": "8b6fdcba",
              "withdraw(address,uint32,address)": "a965b3a9",
              "withdrawFees(address)": "164e68de"
            }
          },
          "userdoc": {
            "methods": {
              "getAccumulatedFees(address,address)": {
                "notice": "Get the accumulated loan pool fee of the message sender."
              },
              "transferTokens(address,uint96)": {
                "notice": "Transfer tokens to this contract."
              },
              "withdrawFees(address)": {
                "notice": "Withdraw fees for the given token: lendingFee + tradingFee + borrowingFee"
              }
            }
          }
        }
      },
      "contracts/mockup/GovernorAlphaMockup.sol": {
        "GovernorAlphaMockup": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "timelock_",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "staking_",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "guardian_",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "quorumVotes_",
                  "type": "uint96"
                },
                {
                  "internalType": "uint96",
                  "name": "_minPercentageVotes",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "ProposalCanceled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address[]",
                  "name": "targets",
                  "type": "address[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "string[]",
                  "name": "signatures",
                  "type": "string[]"
                },
                {
                  "indexed": false,
                  "internalType": "bytes[]",
                  "name": "calldatas",
                  "type": "bytes[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "startBlock",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "endBlock",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "description",
                  "type": "string"
                }
              ],
              "name": "ProposalCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "ProposalExecuted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "ProposalQueued",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "voter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "support",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "votes",
                  "type": "uint256"
                }
              ],
              "name": "VoteCast",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "BALLOT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DOMAIN_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "NAME",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "__abdicate",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "__acceptAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newPendingAdmin",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "__executeSetTimelockPendingAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newPendingAdmin",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "__queueSetTimelockPendingAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                }
              ],
              "name": "cancel",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "support",
                  "type": "bool"
                }
              ],
              "name": "castVote",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "support",
                  "type": "bool"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "castVoteBySig",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                }
              ],
              "name": "execute",
              "outputs": [],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                }
              ],
              "name": "getActions",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "targets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "string[]",
                  "name": "signatures",
                  "type": "string[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "calldatas",
                  "type": "bytes[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "voter",
                  "type": "address"
                }
              ],
              "name": "getReceipt",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bool",
                      "name": "hasVoted",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "support",
                      "type": "bool"
                    },
                    {
                      "internalType": "uint96",
                      "name": "votes",
                      "type": "uint96"
                    }
                  ],
                  "internalType": "struct GovernorAlpha.Receipt",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "guardian",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "latestProposalIds",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "majorityPercentageVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "proposalCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "proposalMaxOperations",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "proposalThreshold",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "proposals",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "startBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "endBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "forVotes",
                  "type": "uint96"
                },
                {
                  "internalType": "uint96",
                  "name": "againstVotes",
                  "type": "uint96"
                },
                {
                  "internalType": "uint96",
                  "name": "quorum",
                  "type": "uint96"
                },
                {
                  "internalType": "uint96",
                  "name": "majorityPercentage",
                  "type": "uint96"
                },
                {
                  "internalType": "uint64",
                  "name": "eta",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "startTime",
                  "type": "uint64"
                },
                {
                  "internalType": "bool",
                  "name": "canceled",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "executed",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "targets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "string[]",
                  "name": "signatures",
                  "type": "string[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "calldatas",
                  "type": "bytes[]"
                },
                {
                  "internalType": "string",
                  "name": "description",
                  "type": "string"
                }
              ],
              "name": "propose",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                }
              ],
              "name": "queue",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "proposalIds",
                  "type": "uint256[]"
                }
              ],
              "name": "queueProposals",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "quorumPercentageVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "quorumVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract IStaking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "proposalId",
                  "type": "uint256"
                }
              ],
              "name": "state",
              "outputs": [
                {
                  "internalType": "enum GovernorAlpha.ProposalState",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "timelock",
              "outputs": [
                {
                  "internalType": "contract ITimelock",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "votingDelay",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "votingPeriod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "__acceptAdmin()": {
                "details": "Timelock wrapper w/ sender check."
              },
              "__executeSetTimelockPendingAdmin(address,uint256)": {
                "details": "Timelock wrapper w/ sender check."
              },
              "__queueSetTimelockPendingAdmin(address,uint256)": {
                "details": "Timelock wrapper w/ sender check."
              },
              "cancel(uint256)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage."
                }
              },
              "castVote(uint256,bool)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage.",
                  "support": "Vote value, yes or no."
                }
              },
              "castVoteBySig(uint256,bool,uint8,bytes32,bytes32)": {
                "details": "The signature needs to be broken up into 3 parameters, known as v, r and s: const r = '0x' + sig.substring(2).substring(0, 64); const s = '0x' + sig.substring(2).substring(64, 128); const v = '0x' + sig.substring(2).substring(128, 130);",
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "support": "Vote value, yes or no.",
                  "v": "The recovery byte of the signature."
                }
              },
              "execute(uint256)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage."
                }
              },
              "getActions(uint256)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage."
                },
                "return": "Arrays of the 4 call parameters: targets, values, signatures, calldatas."
              },
              "getReceipt(uint256,address)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage.",
                  "voter": "A governance stakeholder with voting power."
                },
                "return": "The voter receipt of the proposal."
              },
              "propose(address[],uint256[],string[],bytes[],string)": {
                "params": {
                  "calldatas": "Array of payloads for the calls on proposal execution.",
                  "description": "Text describing the purpose of the proposal.",
                  "signatures": "Array of function signatures to call on proposal execution.",
                  "targets": "Array of contract addresses to perform proposal execution.",
                  "values": "Array of rBTC amounts to send on proposal execution."
                }
              },
              "queue(uint256)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage."
                }
              },
              "state(uint256)": {
                "params": {
                  "proposalId": "Proposal index to access the list proposals[] from storage."
                },
                "return": "The state of the proposal: Canceled, Pending, Active, Defeated, Succeeded, Executed, Expired."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50604051620045b5380380620045b58339810160408190526200003491620000de565b600080546001600160a01b03199081166001600160a01b039788161790915560018054821695871695909517909455600280549094169290941691909117909155600480546001600160601b0319166001600160601b0392831617600160601b600160c01b0319166c010000000000000000000000009290931691909102919091179055620001a1565b8051620000cb816200017c565b92915050565b8051620000cb8162000196565b600080600080600060a08688031215620000f757600080fd5b6000620001058888620000be565b95505060206200011888828901620000be565b94505060406200012b88828901620000be565b93505060606200013e88828901620000d1565b92505060806200015188828901620000d1565b9150509295509295909350565b60006001600160a01b038216620000cb565b6001600160601b031690565b62000187816200015e565b81146200019357600080fd5b50565b620001878162000170565b61440480620001b16000396000f3fe6080604052600436106101cd5760003560e01c8063760fbc13116100f7578063d33219b411610095578063deaaa7cc11610064578063deaaa7cc146104e4578063e23a9a52146104f9578063e265379014610526578063fe0d94c11461053b576101cd565b8063d33219b41461047a578063da35c6641461048f578063da95691a146104a4578063ddf0b009146104c4576101cd565b8063a3f4df7e116100d1578063a3f4df7e14610419578063b2b0d91f1461043b578063b58131b014610450578063b9a6196114610465576101cd565b8063760fbc13146103e45780637bdbe4d01461021357806391500671146103f9576101cd565b8063328dd9821161016f578063452a93201161013e578063452a9320146103605780634634c61f146103825780634b9c9a27146103a25780634cf088d9146103c2576101cd565b8063328dd982146102ce5780633932abb1146102fe5780633e4f49e61461031357806340e58ee514610340576101cd565b806317977c61116101ab57806317977c611461025757806320606b701461027757806321f43e421461028c57806324bc1a64146102ac576101cd565b8063013cf08b146101d257806302a251a31461021357806315373e3d14610235575b600080fd5b3480156101de57600080fd5b506101f26101ed366004612cef565b61054e565b60405161020a9c9b9a99989796959493929190613ec8565b60405180910390f35b34801561021f57600080fd5b506102286105ee565b60405161020a9190613bda565b34801561024157600080fd5b50610255610250366004612d3d565b6105f4565b005b34801561026357600080fd5b50610228610272366004612af7565b610603565b34801561028357600080fd5b50610228610615565b34801561029857600080fd5b506102556102a7366004612b1d565b61062c565b3480156102b857600080fd5b506102c1610713565b60405161020a9190613f89565b3480156102da57600080fd5b506102ee6102e9366004612cef565b61081a565b60405161020a9493929190613b8d565b34801561030a57600080fd5b50610228610aa9565b34801561031f57600080fd5b5061033361032e366004612cef565b610aae565b60405161020a9190613c88565b34801561034c57600080fd5b5061025561035b366004612cef565b610d36565b34801561036c57600080fd5b50610375610f0e565b60405161020a9190613a01565b34801561038e57600080fd5b5061025561039d366004612d6d565b610f1d565b3480156103ae57600080fd5b506102556103bd366004612c3e565b6110b0565b3480156103ce57600080fd5b506103d76110de565b60405161020a9190613c7a565b3480156103f057600080fd5b506102556110ed565b34801561040557600080fd5b50610255610414366004612b1d565b611129565b34801561042557600080fd5b5061042e6111fe565b60405161020a9190613c96565b34801561044757600080fd5b506102c161122f565b34801561045c57600080fd5b506102c161123e565b34801561047157600080fd5b5061025561130b565b34801561048657600080fd5b506103d7611390565b34801561049b57600080fd5b5061022861139f565b3480156104b057600080fd5b506102286104bf366004612b57565b6113a5565b3480156104d057600080fd5b506102556104df366004612cef565b611a2c565b3480156104f057600080fd5b50610228611cdc565b34801561050557600080fd5b50610519610514366004612d0d565b611ce8565b60405161020a9190613df7565b34801561053257600080fd5b506102c1611d57565b610255610549366004612cef565b611d6d565b6005602052600090815260409020805460018201546002830154600390930154919263ffffffff808316936401000000008404909116926001600160601b03600160401b808304821694600160a01b90930482169383831693600160601b8104909316926001600160401b03600160c01b9091048116929082169160ff918104821691600160481b820416906001600160a01b03600160501b909104168c565b600a5b90565b6105ff338383611f4f565b5050565b60066020526000908152604090205481565b604051610621906139eb565b604051809103902081565b6002546001600160a01b0316331461065f5760405162461bcd60e51b815260040161065690613cd7565b60405180910390fd5b600080546040516001600160a01b0390911691630825f38f91839190610689908790602001613a01565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016106b89493929190613a37565b600060405180830381600087803b1580156106d257600080fd5b505af11580156106e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261070e9190810190612cbb565b505050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632522d7ba61075f6001430360405180606001604052806031815260200161420b603191396121ba565b426040518363ffffffff1660e01b815260040161077d929190613f7b565b60206040518083038186803b15801561079557600080fd5b505afa1580156107a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107cd9190810190612dd5565b60045460408051606081019091526032808252929350606492610803926001600160601b031691859161423c60208301396121ea565b6001600160601b03168161081357fe5b0491505090565b6060806060806000600560008781526020019081526020016000209050806004018160050182600601836007018380548060200260200160405190810160405280929190818152602001828054801561089c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161087e575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156108ee57602002820191906000526020600020905b8154815260200190600101908083116108da575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156109c15760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156109ad5780601f10610982576101008083540402835291602001916109ad565b820191906000526020600020905b81548152906001019060200180831161099057829003601f168201915b505050505081526020019060010190610916565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610a935760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610a7f5780601f10610a5457610100808354040283529160200191610a7f565b820191906000526020600020905b815481529060010190602001808311610a6257829003601f168201915b5050505050815260200190600101906109e8565b5050505090509450945094509450509193509193565b600190565b60008160035410158015610ac25750600082115b610ade5760405162461bcd60e51b815260040161065690613ce7565b60008281526005602052604090206003810154600160401b900460ff1615610b0a576002915050610d31565b600181015463ffffffff164311610b25576000915050610d31565b6001810154640100000000900463ffffffff164311610b48576001915050610d31565b600181015460408051606081019091526037808252600092610b8d926001600160601b03600160401b8304811693600160a01b90930416916142906020830139612253565b90506000610bb582606460405180606001604052806025815260200161430960259139612286565b9050610bef816004600c9054906101000a90046001600160601b03166040518060600160405280603f8152602001614174603f91396121ea565b60018401549091506001600160601b03808316600160401b90920416111580610c28575060028301546001600160601b03908116908316105b15610c395760039350505050610d31565b6002830154600160c01b90046001600160401b0316610c5e5760049350505050610d31565b6003830154600160481b900460ff1615610c7e5760079350505050610d31565b6002830154600054604080516360d143f160e11b81529051610d1793600160c01b90046001600160401b0316926001600160a01b03169163c1a287e2916004808301926020929190829003018186803b158015610cda57600080fd5b505afa158015610cee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d129190810190612c9d565b6122d8565b4210610d295760069350505050610d31565b600593505050505b919050565b6000610d4182610aae565b90506007816007811115610d5157fe5b1415610d6f5760405162461bcd60e51b815260040161065690613db7565b60008281526005602052604090206002546001600160a01b03163314610da75760405162461bcd60e51b815260040161065690613d57565b60038101805468ff00000000000000001916600160401b17905560005b6004820154811015610ed1576000546004830180546001600160a01b039092169163591fcdfe919084908110610df657fe5b6000918252602090912001546005850180546001600160a01b039092169185908110610e1e57fe5b9060005260206000200154856006018581548110610e3857fe5b90600052602060002001866007018681548110610e5157fe5b906000526020600020018760020160189054906101000a90046001600160401b03166040518663ffffffff1660e01b8152600401610e93959493929190613b15565b600060405180830381600087803b158015610ead57600080fd5b505af1158015610ec1573d6000803e3d6000fd5b505060019092019150610dc49050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610f019190613bda565b60405180910390a1505050565b6002546001600160a01b031681565b6000604051610f2b906139eb565b604080519182900382208282019091526015825274536f7672796e20476f7665726e6f7220416c70686160581b6020909201919091527fddf6fbf241d6c602c276b8332aecac376ff7e0ef2276d109c25930e6911ca2bd610f8a6122fd565b30604051602001610f9e9493929190613be8565b6040516020818303038152906040528051906020012090506000604051610fc4906139f6565b604051908190038120610fdd9189908990602001613c1d565b6040516020818303038152906040528051906020012090506000828260405160200161100a9291906139ba565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516110479493929190613c45565b6020604051602081039080840390855afa158015611069573d6000803e3d6000fd5b50505060206040510351905061107e81612301565b61109a5760405162461bcd60e51b815260040161065690613d97565b6110a5818a8a611f4f565b505050505050505050565b60005b8181101561070e576110d68383838181106110ca57fe5b90506020020135611a2c565b6001016110b3565b6001546001600160a01b031681565b6002546001600160a01b031633146111175760405162461bcd60e51b815260040161065690613de7565b600280546001600160a01b0319169055565b6002546001600160a01b031633146111535760405162461bcd60e51b815260040161065690613d17565b600080546040516001600160a01b0390911691633a66f9019183919061117d908790602001613a01565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016111ac9493929190613a37565b602060405180830381600087803b1580156111c657600080fd5b505af11580156111da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061070e9190810190612c9d565b60405180604001604052806015815260200174536f7672796e20476f7665726e6f7220416c70686160581b81525081565b6004546001600160601b031681565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632522d7ba61128a60014303604051806060016040528060378152602001614361603791396121ba565b426040518363ffffffff1660e01b81526004016112a8929190613f7b565b60206040518083038186803b1580156112c057600080fd5b505afa1580156112d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112f89190810190612dd5565b905060646001600160601b038216610813565b6002546001600160a01b031633146113355760405162461bcd60e51b815260040161065690613ca7565b6000805460408051630e18b68160e01b815290516001600160a01b0390921692630e18b6819260048084019382900301818387803b15801561137657600080fd5b505af115801561138a573d6000803e3d6000fd5b50505050565b6000546001600160a01b031681565b60035481565b6000806113b061123e565b600180549192506001600160601b038316916001600160a01b03169063836eebee9033906113df90439061233a565b426040518463ffffffff1660e01b81526004016113fe93929190613a0f565b60206040518083038186803b15801561141657600080fd5b505afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061144e9190810190612dd5565b6001600160601b0316116114745760405162461bcd60e51b815260040161065690613d87565b85518751148015611486575084518751145b8015611493575083518751145b6114af5760405162461bcd60e51b815260040161065690613d47565b86516114cd5760405162461bcd60e51b815260040161065690613d77565b6114d56105ee565b875111156114f55760405162461bcd60e51b815260040161065690613d27565b33600090815260066020526040902054801561157257600061151682610aae565b9050600181600781111561152657fe5b14156115445760405162461bcd60e51b815260040161065690613da7565b600081600781111561155257fe5b14156115705760405162461bcd60e51b815260040161065690613d07565b505b600061158043610d12610aa9565b9050600061159082610d126105ee565b60038054600101905590506115a36124e8565b60405180610200016040528060035481526020016115d98560405180606001604052806033815260200161432e603391396121ba565b63ffffffff168152602001611606846040518060600160405280603181526020016141da603191396121ba565b63ffffffff16815260200160006001600160601b0316815260200160006001600160601b03168152602001611669600460009054906101000a90046001600160601b03168860405180606001604052806036815260200161413e603691396121ea565b6001600160601b031681526020016116af6004600c9054906101000a90046001600160601b0316886040518060800160405280604281526020016142c7604291396121ea565b6001600160601b0316815260200160006001600160401b031681526020016116ef426040518060600160405280602a8152602001614398602a9139612362565b6001600160401b03168152602001600015158152602001600015158152602001336001600160a01b031681526020018c81526020018b81526020018a81526020018981525090508060056000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548163ffffffff021916908363ffffffff16021790555060408201518160010160046101000a81548163ffffffff021916908363ffffffff16021790555060608201518160010160086101000a8154816001600160601b0302191690836001600160601b0316021790555060808201518160010160146101000a8154816001600160601b0302191690836001600160601b0316021790555060a08201518160020160006101000a8154816001600160601b0302191690836001600160601b0316021790555060c082015181600201600c6101000a8154816001600160601b0302191690836001600160601b0316021790555060e08201518160020160186101000a8154816001600160401b0302191690836001600160401b031602179055506101008201518160030160006101000a8154816001600160401b0302191690836001600160401b031602179055506101208201518160030160086101000a81548160ff0219169083151502179055506101408201518160030160096101000a81548160ff02191690831515021790555061016082015181600301600a6101000a8154816001600160a01b0302191690836001600160a01b0316021790555061018082015181600401908051906020019061194292919061256e565b506101a0820151805161195f9160058401916020909101906125d3565b506101c0820151805161197c91600684019160209091019061261a565b506101e08201518051611999916007840191602090910190612673565b509050508060000151600660008361016001516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338d8d8d8d89898f604051611a1399989796959493929190613e05565b60405180910390a1519450505050505b95945050505050565b6004611a3782610aae565b6007811115611a4257fe5b14611a5f5760405162461bcd60e51b815260040161065690613cb7565b600081815260056020908152604080832083548251630d48571f60e31b81529251919493611ab89342936001600160a01b0390931692636a42b8f892600480840193919291829003018186803b158015610cda57600080fd5b905060005b6004830154811015611c6057611c58836004018281548110611adb57fe5b6000918252602090912001546005850180546001600160a01b039092169184908110611b0357fe5b9060005260206000200154856006018481548110611b1d57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611bab5780601f10611b8057610100808354040283529160200191611bab565b820191906000526020600020905b815481529060010190602001808311611b8e57829003601f168201915b5050505050866007018581548110611bbf57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611c4d5780601f10611c2257610100808354040283529160200191611c4d565b820191906000526020600020905b815481529060010190602001808311611c3057829003601f168201915b505050505086612389565b600101611abd565b50611c838160405180606001604052806022815260200161426e60229139612362565b8260020160186101000a8154816001600160401b0302191690836001600160401b031602179055507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928382604051610f01929190613ead565b604051610621906139f6565b611cf06126cc565b5060008281526005602090815260408083206001600160a01b03851684526008018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046001600160601b0316918101919091525b92915050565b600454600160601b90046001600160601b031681565b6005611d7882610aae565b6007811115611d8357fe5b14611da05760405162461bcd60e51b815260040161065690613cc7565b600081815260056020526040812060038101805469ff0000000000000000001916600160481b179055905b6004820154811015611f13576000546005830180546001600160a01b0390921691630825f38f919084908110611dfd57fe5b9060005260206000200154846004018481548110611e1757fe5b6000918252602090912001546005860180546001600160a01b039092169186908110611e3f57fe5b9060005260206000200154866006018681548110611e5957fe5b90600052602060002001876007018781548110611e7257fe5b906000526020600020018860020160189054906101000a90046001600160401b03166040518763ffffffff1660e01b8152600401611eb4959493929190613b15565b6000604051808303818588803b158015611ecd57600080fd5b505af1158015611ee1573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611f0a9190810190612cbb565b50600101611dcb565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611f439190613bda565b60405180910390a15050565b6001611f5a83610aae565b6007811115611f6557fe5b14611f825760405162461bcd60e51b815260040161065690613dc7565b60008281526005602090815260408083206001600160a01b038716845260088101909252909120805460ff1615611fcb5760405162461bcd60e51b815260040161065690613cf7565b600180549083015460038401546040516341b775f760e11b81526000936001600160a01b03169263836eebee92612017928b9263ffffffff16916001600160401b031690600401613b65565b60206040518083038186803b15801561202f57600080fd5b505afa158015612043573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120679190810190612dd5565b905083156120d6576120a98360010160089054906101000a90046001600160601b0316826040518060600160405280602781526020016141b360279139612253565b8360010160086101000a8154816001600160601b0302191690836001600160601b03160217905550612139565b6121108360010160149054906101000a90046001600160601b0316826040518060600160405280602781526020016141b360279139612253565b8360010160146101000a8154816001600160601b0302191690836001600160601b031602179055505b8154600160ff199091161761ff00191661010085151502176dffffffffffffffffffffffff00001916620100006001600160601b038316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c46906121aa908890889088908690613a86565b60405180910390a1505050505050565b60008164010000000084106121e25760405162461bcd60e51b81526004016106569190613c96565b509192915050565b60006001600160601b0384166122025750600061224c565b8383026001600160601b03808516908087169083168161221e57fe5b046001600160601b03161483906122485760405162461bcd60e51b81526004016106569190613c96565b5090505b9392505050565b6000838301826001600160601b0380871690831610156122485760405162461bcd60e51b81526004016106569190613c96565b6000816001600160601b0384166122b05760405162461bcd60e51b81526004016106569190613c96565b506000836001600160601b0316856001600160601b0316816122ce57fe5b0495945050505050565b60008282018381101561224c5760405162461bcd60e51b815260040161065690613d37565b4690565b600073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b03831614801590611d515750506001600160a01b0316151590565b60008282111561235c5760405162461bcd60e51b815260040161065690613dd7565b50900390565b600081600160401b84106121e25760405162461bcd60e51b81526004016106569190613c96565b6000546040516001600160a01b039091169063f2b06537906123b79088908890889088908890602001613abb565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016123e99190613bda565b60206040518083038186803b15801561240157600080fd5b505afa158015612415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124399190810190612c7f565b156124565760405162461bcd60e51b815260040161065690613d67565b600054604051633a66f90160e01b81526001600160a01b0390911690633a66f9019061248e9088908890889088908890600401613abb565b602060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124e09190810190612c9d565b505050505050565b604080516102008101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820183905261016082019290925261018081018290526101a081018290526101c081018290526101e081019190915290565b8280548282559060005260206000209081019282156125c3579160200282015b828111156125c357825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061258e565b506125cf9291506126ec565b5090565b82805482825590600052602060002090810192821561260e579160200282015b8281111561260e5782518255916020019190600101906125f3565b506125cf929150612710565b828054828255906000526020600020908101928215612667579160200282015b82811115612667578251805161265791849160209091019061272a565b509160200191906001019061263a565b506125cf929150612797565b8280548282559060005260206000209081019282156126c0579160200282015b828111156126c057825180516126b091849160209091019061272a565b5091602001919060010190612693565b506125cf9291506127ba565b604080516060810182526000808252602082018190529181019190915290565b6105f191905b808211156125cf5780546001600160a01b03191681556001016126f2565b6105f191905b808211156125cf5760008155600101612716565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061276b57805160ff191683800117855561260e565b8280016001018555821561260e579182018281111561260e5782518255916020019190600101906125f3565b6105f191905b808211156125cf5760006127b182826127dd565b5060010161279d565b6105f191905b808211156125cf5760006127d482826127dd565b506001016127c0565b50805460018160011615610100020316600290046000825580601f106128035750612821565b601f0160209004906000526020600020908101906128219190612710565b50565b8035611d5181614105565b600082601f83011261284057600080fd5b813561285361284e82613fbd565b613f97565b9150818183526020840193506020810190508385602084028201111561287857600080fd5b60005b838110156128a4578161288e8882612824565b845250602092830192919091019060010161287b565b5050505092915050565b600082601f8301126128bf57600080fd5b81356128cd61284e82613fbd565b81815260209384019390925082018360005b838110156128a457813586016128f58882612a4c565b84525060209283019291909101906001016128df565b600082601f83011261291c57600080fd5b813561292a61284e82613fbd565b81815260209384019390925082018360005b838110156128a457813586016129528882612a4c565b845250602092830192919091019060010161293c565b60008083601f84011261297a57600080fd5b5081356001600160401b0381111561299157600080fd5b6020830191508360208202830111156129a957600080fd5b9250929050565b600082601f8301126129c157600080fd5b81356129cf61284e82613fbd565b915081818352602084019350602081019050838560208402820111156129f457600080fd5b60005b838110156128a45781612a0a8882612a36565b84525060209283019291909101906001016129f7565b8035611d5181614119565b8051611d5181614119565b8035611d5181614122565b8051611d5181614122565b600082601f830112612a5d57600080fd5b8135612a6b61284e82613fdd565b91508082526020830160208301858383011115612a8757600080fd5b612a928382846140b9565b50505092915050565b600082601f830112612aac57600080fd5b8151612aba61284e82613fdd565b91508082526020830160208301858383011115612ad657600080fd5b612a928382846140c5565b8035611d518161412b565b8051611d5181614134565b600060208284031215612b0957600080fd5b6000612b158484612824565b949350505050565b60008060408385031215612b3057600080fd5b6000612b3c8585612824565b9250506020612b4d85828601612a36565b9150509250929050565b600080600080600060a08688031215612b6f57600080fd5b85356001600160401b03811115612b8557600080fd5b612b918882890161282f565b95505060208601356001600160401b03811115612bad57600080fd5b612bb9888289016129b0565b94505060408601356001600160401b03811115612bd557600080fd5b612be18882890161290b565b93505060608601356001600160401b03811115612bfd57600080fd5b612c09888289016128ae565b92505060808601356001600160401b03811115612c2557600080fd5b612c3188828901612a4c565b9150509295509295909350565b60008060208385031215612c5157600080fd5b82356001600160401b03811115612c6757600080fd5b612c7385828601612968565b92509250509250929050565b600060208284031215612c9157600080fd5b6000612b158484612a2b565b600060208284031215612caf57600080fd5b6000612b158484612a41565b600060208284031215612ccd57600080fd5b81516001600160401b03811115612ce357600080fd5b612b1584828501612a9b565b600060208284031215612d0157600080fd5b6000612b158484612a36565b60008060408385031215612d2057600080fd5b6000612d2c8585612a36565b9250506020612b4d85828601612824565b60008060408385031215612d5057600080fd5b6000612d5c8585612a36565b9250506020612b4d85828601612a20565b600080600080600060a08688031215612d8557600080fd5b6000612d918888612a36565b9550506020612da288828901612a20565b9450506040612db388828901612ae1565b9350506060612dc488828901612a36565b9250506080612c3188828901612a36565b600060208284031215612de757600080fd5b6000612b158484612aec565b6000612dff8383612e2e565b505060200190565b600061224c8383612fd0565b6000612dff8383612fb6565b612e2881614070565b82525050565b612e2881614023565b6000612e4282614016565b612e4c818561401a565b9350612e5783614004565b8060005b83811015612e85578151612e6f8882612df3565b9750612e7a83614004565b925050600101612e5b565b509495945050505050565b6000612e9b82614016565b612ea5818561401a565b935083602082028501612eb785614004565b8060005b85811015612ef15784840389528151612ed48582612e07565b9450612edf83614004565b60209a909a0199925050600101612ebb565b5091979650505050505050565b6000612f0982614016565b612f13818561401a565b935083602082028501612f2585614004565b8060005b85811015612ef15784840389528151612f428582612e07565b9450612f4d83614004565b60209a909a0199925050600101612f29565b6000612f6a82614016565b612f74818561401a565b9350612f7f83614004565b8060005b83811015612e85578151612f978882612e13565b9750612fa283614004565b925050600101612f83565b612e288161402e565b612e28816105f1565b612e28612fcb826105f1565b6105f1565b6000612fdb82614016565b612fe5818561401a565b9350612ff58185602086016140c5565b612ffe816140f1565b9093019392505050565b600081546001811660008114613025576001811461304b5761308a565b607f6002830416613036818761401a565b60ff198416815295505060208501925061308a565b60028204613059818761401a565b95506130648561400a565b60005b8281101561308357815488820152600190910190602001613067565b8701945050505b505092915050565b612e2881614077565b612e2881614082565b612e288161408d565b60006130ba60398361401a565b7f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736581527f6e646572206d75737420626520676f7620677561726469616e00000000000000602082015260400192915050565b600061311960448361401a565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c79206265207175657565642069662069742069732073756363656020820152631959195960e21b604082015260600192915050565b600061318560458361401a565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c7920626520657865637574656420696620697420697320716020820152641d595d595960da1b604082015260600192915050565b60006131f2600283610d31565b61190160f01b815260020192915050565b6000613210604c8361401a565b7f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c81527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208201526b33b7bb1033bab0b93234b0b760a11b604082015260600192915050565b600061328460188361401a565b7f73657450656e64696e6741646d696e2861646472657373290000000000000000815260200192915050565b60006132bd60298361401a565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c69642070728152681bdc1bdcd85b081a5960ba1b602082015260400192915050565b6000613308602d8361401a565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081526c185b1c9958591e481d9bdd1959609a1b602082015260400192915050565b600061335760598361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b60006133dc604a8361401a565b7f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6381527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f6020820152693b1033bab0b93234b0b760b11b604082015260600192915050565b600061344e60288361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981526720616374696f6e7360c01b602082015260400192915050565b600061349860118361401a565b706164646974696f6e206f766572666c6f7760781b815260200192915050565b60006134c5604383610d31565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000613530602783610d31565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20738152667570706f72742960c81b602082015260270192915050565b600061357960448361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6020820152630c2e8c6d60e31b604082015260600192915050565b60006135e5602e8361401a565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2073656e64657220697381526d3713ba10309033bab0b93234b0b760911b602082015260400192915050565b600061363560448361401a565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c7265616479207175657565642061746020820152632065746160e01b604082015260600192915050565b60006136a1602c8361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81526b7669646520616374696f6e7360a01b602082015260400192915050565b60006136ef603f8361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b600061374e602f8361401a565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81526e76616c6964207369676e617475726560881b602082015260400192915050565b600061379f60588361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b600061382460368361401a565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f742063618152751b98d95b08195e1958dd5d1959081c1c9bdc1bdcd85b60521b602082015260400192915050565b600061387c602a8361401a565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e67815269081a5cc818db1bdcd95960b21b602082015260400192915050565b60006138c860158361401a565b747375627472616374696f6e20756e646572666c6f7760581b815260200192915050565b60006138f960368361401a565b7f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e6465815275391036bab9ba1031329033b7bb1033bab0b93234b0b760511b602082015260400192915050565b805160608301906139558482612fad565b5060208201516139686020850182612fad565b50604082015161138a60408501826139b1565b612e2881614098565b612e2881614049565b612e28816140a3565b612e2881614052565b612e288161405e565b612e28816140ae565b612e2881614064565b60006139c5826131e5565b91506139d18285612fbf565b6020820191506139e18284612fbf565b5060200192915050565b6000611d51826134b8565b6000611d5182613523565b60208101611d518284612e2e565b60608101613a1d8286612e1f565b613a2a6020830185612fb6565b612b156040830184612fb6565b60a08101613a458287612e2e565b613a5260208301866130a4565b8181036040830152613a6381613277565b90508181036060830152613a778185612fd0565b9050611a236080830184612fb6565b60808101613a948287612e2e565b613aa16020830186612fb6565b613aae6040830185612fad565b611a2360608301846139a8565b60a08101613ac98288612e2e565b613ad66020830187612fb6565b8181036040830152613ae88186612fd0565b90508181036060830152613afc8185612fd0565b9050613b0b6080830184612fb6565b9695505050505050565b60a08101613b238288612e2e565b613b306020830187612fb6565b8181036040830152613b428186613008565b90508181036060830152613b568185613008565b9050613b0b608083018461398d565b60608101613b738286612e2e565b613b80602083018561397b565b612b15604083018461398d565b60808082528101613b9e8187612e37565b90508181036020830152613bb28186612f5f565b90508181036040830152613bc68185612efe565b90508181036060830152613b0b8184612e90565b60208101611d518284612fb6565b60808101613bf68287612fb6565b613c036020830186612fb6565b613c106040830185612fb6565b611a236060830184612e2e565b60608101613c2b8286612fb6565b613c386020830185612fb6565b612b156040830184612fad565b60808101613c538287612fb6565b613c60602083018661399f565b613c6d6040830185612fb6565b611a236060830184612fb6565b60208101611d518284613092565b60208101611d51828461309b565b6020808252810161224c8184612fd0565b60208082528101611d51816130ad565b60208082528101611d518161310c565b60208082528101611d5181613178565b60208082528101611d5181613203565b60208082528101611d51816132b0565b60208082528101611d51816132fb565b60208082528101611d518161334a565b60208082528101611d51816133cf565b60208082528101611d5181613441565b60208082528101611d518161348b565b60208082528101611d518161356c565b60208082528101611d51816135d8565b60208082528101611d5181613628565b60208082528101611d5181613694565b60208082528101611d51816136e2565b60208082528101611d5181613741565b60208082528101611d5181613792565b60208082528101611d5181613817565b60208082528101611d518161386f565b60208082528101611d51816138bb565b60208082528101611d51816138ec565b60608101611d518284613944565b6101208101613e14828c612fb6565b613e21602083018b612e1f565b8181036040830152613e33818a612e37565b90508181036060830152613e478189612f5f565b90508181036080830152613e5b8188612efe565b905081810360a0830152613e6f8187612e90565b9050613e7e60c0830186612fb6565b613e8b60e0830185612fb6565b818103610100830152613e9e8184612fd0565b9b9a5050505050505050505050565b60408101613ebb8285612fb6565b61224c6020830184612fb6565b6101808101613ed7828f612fb6565b613ee4602083018e613984565b613ef1604083018d613984565b613efe606083018c6139b1565b613f0b608083018b6139b1565b613f1860a083018a6139b1565b613f2560c08301896139b1565b613f3260e0830188613996565b613f40610100830187613996565b613f4e610120830186612fad565b613f5c610140830185612fad565b613f6a610160830184612e2e565b9d9c50505050505050505050505050565b60408101613ebb8285613984565b60208101611d5182846139b1565b6040518181016001600160401b0381118282101715613fb557600080fd5b604052919050565b60006001600160401b03821115613fd357600080fd5b5060209081020190565b60006001600160401b03821115613ff357600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b6000611d518261403d565b151590565b80610d31816140fb565b6001600160a01b031690565b63ffffffff1690565b6001600160401b031690565b60ff1690565b6001600160601b031690565b6000611d51825b6000611d5182614023565b6000611d5182614033565b6000611d51826105f1565b6000611d5182614049565b6000611d5182614052565b6000611d5182614064565b82818337506000910152565b60005b838110156140e05781810151838201526020016140c8565b8381111561138a5750506000910152565b601f01601f191690565b6008811061282157fe5b61410e81614023565b811461282157600080fd5b61410e8161402e565b61410e816105f1565b61410e8161405e565b61410e8161406456fe476f7665726e6f72416c7068613a3a70726f706f73653a206f766572666c6f77206f6e2071756f72756d20636f6d7075746174696f6e476f7665726e6f72416c7068613a3a2073746174653a20746f74616c566f746573202a206d616a6f7269747950657263656e74616765203e2075696e743936476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465206f766572666c6f77476f7665726e6f72416c7068613a3a70726f706f73653a20656e6420626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a71756f72756d566f7465733a20626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a71756f72756d566f7465733a6d756c7469706c69636174696f6e206f766572666c6f77476f7665726e6f72416c7068613a3a71756575653a20455441206f766572666c6f77476f7665726e6f72416c7068613a3a2073746174653a20666f72566f746573202b20616761696e7374566f746573203e2075696e743936476f7665726e6f72416c7068613a3a70726f706f73653a206f766572666c6f77206f6e206d616a6f7269747950657263656e7461676520636f6d7075746174696f6e476f7665726e6f72416c7068613a3a2073746174653a206469766973696f6e206572726f72476f7665726e6f72416c7068613a3a70726f706f73653a20737461727420626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a70726f706f73616c5468726573686f6c643a20626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a70726f706f73653a20737461727454696d65206f766572666c6f77a365627a7a72315820333ef6eb07662bd3f244257b662315ceb039aada4e88a21b510aeefdc524bfce6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x45B5 CODESIZE SUB DUP1 PUSH3 0x45B5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0xDE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD DUP3 AND SWAP6 DUP8 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP5 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 DUP4 AND OR PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH13 0x1000000000000000000000000 SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH3 0x1A1 JUMP JUMPDEST DUP1 MLOAD PUSH3 0xCB DUP2 PUSH3 0x17C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0xCB DUP2 PUSH3 0x196 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x105 DUP9 DUP9 PUSH3 0xBE JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH3 0x118 DUP9 DUP3 DUP10 ADD PUSH3 0xBE JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH3 0x12B DUP9 DUP3 DUP10 ADD PUSH3 0xBE JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH3 0x13E DUP9 DUP3 DUP10 ADD PUSH3 0xD1 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH3 0x151 DUP9 DUP3 DUP10 ADD PUSH3 0xD1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH3 0x187 DUP2 PUSH3 0x15E JUMP JUMPDEST DUP2 EQ PUSH3 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x187 DUP2 PUSH3 0x170 JUMP JUMPDEST PUSH2 0x4404 DUP1 PUSH3 0x1B1 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x760FBC13 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xD33219B4 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xDEAAA7CC GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xDEAAA7CC EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0xE23A9A52 EQ PUSH2 0x4F9 JUMPI DUP1 PUSH4 0xE2653790 EQ PUSH2 0x526 JUMPI DUP1 PUSH4 0xFE0D94C1 EQ PUSH2 0x53B JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0xD33219B4 EQ PUSH2 0x47A JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0x48F JUMPI DUP1 PUSH4 0xDA95691A EQ PUSH2 0x4A4 JUMPI DUP1 PUSH4 0xDDF0B009 EQ PUSH2 0x4C4 JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0xA3F4DF7E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA3F4DF7E EQ PUSH2 0x419 JUMPI DUP1 PUSH4 0xB2B0D91F EQ PUSH2 0x43B JUMPI DUP1 PUSH4 0xB58131B0 EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0xB9A61961 EQ PUSH2 0x465 JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0x760FBC13 EQ PUSH2 0x3E4 JUMPI DUP1 PUSH4 0x7BDBE4D0 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x91500671 EQ PUSH2 0x3F9 JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0x328DD982 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0x452A9320 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x452A9320 EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0x4634C61F EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0x4B9C9A27 EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x3C2 JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0x328DD982 EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x3932ABB1 EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x3E4F49E6 EQ PUSH2 0x313 JUMPI DUP1 PUSH4 0x40E58EE5 EQ PUSH2 0x340 JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0x17977C61 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x17977C61 EQ PUSH2 0x257 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x21F43E42 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x24BC1A64 EQ PUSH2 0x2AC JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0x13CF08B EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x2A251A3 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x15373E3D EQ PUSH2 0x235 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2CEF JUMP JUMPDEST PUSH2 0x54E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x5EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3BDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D3D JUMP JUMPDEST PUSH2 0x5F4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x272 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF7 JUMP JUMPDEST PUSH2 0x603 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x615 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1D JUMP JUMPDEST PUSH2 0x62C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C1 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3F89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CEF JUMP JUMPDEST PUSH2 0x81A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3B8D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0xAA9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x333 PUSH2 0x32E CALLDATASIZE PUSH1 0x4 PUSH2 0x2CEF JUMP JUMPDEST PUSH2 0xAAE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3C88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x35B CALLDATASIZE PUSH1 0x4 PUSH2 0x2CEF JUMP JUMPDEST PUSH2 0xD36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0xF0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3A01 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x39D CALLDATASIZE PUSH1 0x4 PUSH2 0x2D6D JUMP JUMPDEST PUSH2 0xF1D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2C3E JUMP JUMPDEST PUSH2 0x10B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D7 PUSH2 0x10DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3C7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x10ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x414 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1D JUMP JUMPDEST PUSH2 0x1129 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x42E PUSH2 0x11FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3C96 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C1 PUSH2 0x122F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C1 PUSH2 0x123E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x130B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D7 PUSH2 0x1390 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x139F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x4BF CALLDATASIZE PUSH1 0x4 PUSH2 0x2B57 JUMP JUMPDEST PUSH2 0x13A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x4DF CALLDATASIZE PUSH1 0x4 PUSH2 0x2CEF JUMP JUMPDEST PUSH2 0x1A2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x1CDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x514 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D0D JUMP JUMPDEST PUSH2 0x1CE8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3DF7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x532 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C1 PUSH2 0x1D57 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x549 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CEF JUMP JUMPDEST PUSH2 0x1D6D JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP3 PUSH4 0xFFFFFFFF DUP1 DUP4 AND SWAP4 PUSH5 0x100000000 DUP5 DIV SWAP1 SWAP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP1 DUP4 DIV DUP3 AND SWAP5 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV DUP3 AND SWAP4 DUP4 DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV SWAP1 SWAP4 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP3 SWAP1 DUP3 AND SWAP2 PUSH1 0xFF SWAP2 DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x48 SHL DUP3 DIV AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x50 SHL SWAP1 SWAP2 DIV AND DUP13 JUMP JUMPDEST PUSH1 0xA JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5FF CALLER DUP4 DUP4 PUSH2 0x1F4F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x621 SWAP1 PUSH2 0x39EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x65F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3CD7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x825F38F SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x689 SWAP1 DUP8 SWAP1 PUSH1 0x20 ADD PUSH2 0x3A01 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6B8 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3A37 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x70E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2CBB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2522D7BA PUSH2 0x75F PUSH1 0x1 NUMBER SUB PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x420B PUSH1 0x31 SWAP2 CODECOPY PUSH2 0x21BA JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x77D SWAP3 SWAP2 SWAP1 PUSH2 0x3F7B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x795 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x7CD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DD5 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x32 DUP1 DUP3 MSTORE SWAP3 SWAP4 POP PUSH1 0x64 SWAP3 PUSH2 0x803 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP6 SWAP2 PUSH2 0x423C PUSH1 0x20 DUP4 ADD CODECOPY PUSH2 0x21EA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x813 JUMPI INVALID JUMPDEST DIV SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x4 ADD DUP2 PUSH1 0x5 ADD DUP3 PUSH1 0x6 ADD DUP4 PUSH1 0x7 ADD DUP4 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x89C JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x87E JUMPI JUMPDEST POP POP POP POP POP SWAP4 POP DUP3 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x8EE JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x8DA JUMPI JUMPDEST POP POP POP POP POP SWAP3 POP DUP2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x9C1 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x9AD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x982 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x9AD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x990 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x916 JUMP JUMPDEST POP POP POP POP SWAP2 POP DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0xA93 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA7F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA54 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA7F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA62 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x9E8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0xAC2 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0xADE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xB0A JUMPI PUSH1 0x2 SWAP2 POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH4 0xFFFFFFFF AND NUMBER GT PUSH2 0xB25 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND NUMBER GT PUSH2 0xB48 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x37 DUP1 DUP3 MSTORE PUSH1 0x0 SWAP3 PUSH2 0xB8D SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP4 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV AND SWAP2 PUSH2 0x4290 PUSH1 0x20 DUP4 ADD CODECOPY PUSH2 0x2253 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBB5 DUP3 PUSH1 0x64 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4309 PUSH1 0x25 SWAP2 CODECOPY PUSH2 0x2286 JUMP JUMPDEST SWAP1 POP PUSH2 0xBEF DUP2 PUSH1 0x4 PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4174 PUSH1 0x3F SWAP2 CODECOPY PUSH2 0x21EA JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP4 AND PUSH1 0x1 PUSH1 0x40 SHL SWAP1 SWAP3 DIV AND GT ISZERO DUP1 PUSH2 0xC28 JUMPI POP PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND LT JUMPDEST ISZERO PUSH2 0xC39 JUMPI PUSH1 0x3 SWAP4 POP POP POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xC5E JUMPI PUSH1 0x4 SWAP4 POP POP POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x48 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC7E JUMPI PUSH1 0x7 SWAP4 POP POP POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x60D143F1 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH2 0xD17 SWAP4 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xC1A287E2 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD12 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C9D JUMP JUMPDEST PUSH2 0x22D8 JUMP JUMPDEST TIMESTAMP LT PUSH2 0xD29 JUMPI PUSH1 0x6 SWAP4 POP POP POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x5 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD41 DUP3 PUSH2 0xAAE JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0xD51 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xD6F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3DB7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xDA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D57 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH9 0xFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR SWAP1 SSTORE PUSH1 0x0 JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0xED1 JUMPI PUSH1 0x0 SLOAD PUSH1 0x4 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x591FCDFE SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0xDF6 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0xE1E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x6 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xE38 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP7 PUSH1 0x7 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0xE51 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE93 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3B15 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEC1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0xDC4 SWAP1 POP JUMP JUMPDEST POP PUSH32 0x789CF55BE980739DAD1D0699B93B58E806B51C9D96619BFA8FE0A28ABAA7B30C DUP4 PUSH1 0x40 MLOAD PUSH2 0xF01 SWAP2 SWAP1 PUSH2 0x3BDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xF2B SWAP1 PUSH2 0x39EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x15 DUP3 MSTORE PUSH21 0x536F7672796E20476F7665726E6F7220416C706861 PUSH1 0x58 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xDDF6FBF241D6C602C276B8332AECAC376FF7E0EF2276D109C25930E6911CA2BD PUSH2 0xF8A PUSH2 0x22FD JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF9E SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3BE8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xFC4 SWAP1 PUSH2 0x39F6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0xFDD SWAP2 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x20 ADD PUSH2 0x3C1D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x100A SWAP3 SWAP2 SWAP1 PUSH2 0x39BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x1047 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3C45 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1069 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH2 0x107E DUP2 PUSH2 0x2301 JUMP JUMPDEST PUSH2 0x109A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D97 JUMP JUMPDEST PUSH2 0x10A5 DUP2 DUP11 DUP11 PUSH2 0x1F4F JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x70E JUMPI PUSH2 0x10D6 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x10CA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1A2C JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x10B3 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1117 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3DE7 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1153 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D17 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x3A66F901 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x117D SWAP1 DUP8 SWAP1 PUSH1 0x20 ADD PUSH2 0x3A01 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11AC SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3A37 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x70E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x536F7672796E20476F7665726E6F7220416C706861 PUSH1 0x58 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2522D7BA PUSH2 0x128A PUSH1 0x1 NUMBER SUB PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4361 PUSH1 0x37 SWAP2 CODECOPY PUSH2 0x21BA JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12A8 SWAP3 SWAP2 SWAP1 PUSH2 0x3F7B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x12F8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DD5 JUMP JUMPDEST SWAP1 POP PUSH1 0x64 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND PUSH2 0x813 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1335 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3CA7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE18B681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xE18B681 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x138A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13B0 PUSH2 0x123E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x836EEBEE SWAP1 CALLER SWAP1 PUSH2 0x13DF SWAP1 NUMBER SWAP1 PUSH2 0x233A JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13FE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3A0F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x142A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x144E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DD5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x1474 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D87 JUMP JUMPDEST DUP6 MLOAD DUP8 MLOAD EQ DUP1 ISZERO PUSH2 0x1486 JUMPI POP DUP5 MLOAD DUP8 MLOAD EQ JUMPDEST DUP1 ISZERO PUSH2 0x1493 JUMPI POP DUP4 MLOAD DUP8 MLOAD EQ JUMPDEST PUSH2 0x14AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D47 JUMP JUMPDEST DUP7 MLOAD PUSH2 0x14CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST PUSH2 0x14D5 PUSH2 0x5EE JUMP JUMPDEST DUP8 MLOAD GT ISZERO PUSH2 0x14F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D27 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1572 JUMPI PUSH1 0x0 PUSH2 0x1516 DUP3 PUSH2 0xAAE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1526 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1544 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3DA7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1552 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D07 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x1580 NUMBER PUSH2 0xD12 PUSH2 0xAA9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1590 DUP3 PUSH2 0xD12 PUSH2 0x5EE JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE SWAP1 POP PUSH2 0x15A3 PUSH2 0x24E8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x200 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15D9 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x432E PUSH1 0x33 SWAP2 CODECOPY PUSH2 0x21BA JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1606 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x41DA PUSH1 0x31 SWAP2 CODECOPY PUSH2 0x21BA JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1669 PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x413E PUSH1 0x36 SWAP2 CODECOPY PUSH2 0x21EA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16AF PUSH1 0x4 PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x42C7 PUSH1 0x42 SWAP2 CODECOPY PUSH2 0x21EA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16EF TIMESTAMP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4398 PUSH1 0x2A SWAP2 CODECOPY PUSH2 0x2362 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE POP SWAP1 POP DUP1 PUSH1 0x5 PUSH1 0x0 DUP4 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x4 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x120 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x140 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x9 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x160 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0xA PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x180 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1942 SWAP3 SWAP2 SWAP1 PUSH2 0x256E JUMP JUMPDEST POP PUSH2 0x1A0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x195F SWAP2 PUSH1 0x5 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x25D3 JUMP JUMPDEST POP PUSH2 0x1C0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x197C SWAP2 PUSH1 0x6 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x261A JUMP JUMPDEST POP PUSH2 0x1E0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x1999 SWAP2 PUSH1 0x7 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2673 JUMP JUMPDEST POP SWAP1 POP POP DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x6 PUSH1 0x0 DUP4 PUSH2 0x160 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x7D84A6263AE0D98D3329BD7B46BB4E8D6F98CD35A7ADB45C274C8B7FD5EBD5E0 DUP2 PUSH1 0x0 ADD MLOAD CALLER DUP14 DUP14 DUP14 DUP14 DUP10 DUP10 DUP16 PUSH1 0x40 MLOAD PUSH2 0x1A13 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3E05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 MLOAD SWAP5 POP POP POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH2 0x1A37 DUP3 PUSH2 0xAAE JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1A42 JUMPI INVALID JUMPDEST EQ PUSH2 0x1A5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3CB7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SLOAD DUP3 MLOAD PUSH4 0xD48571F PUSH1 0xE3 SHL DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP5 SWAP4 PUSH2 0x1AB8 SWAP4 TIMESTAMP SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH4 0x6A42B8F8 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x4 DUP4 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1C60 JUMPI PUSH2 0x1C58 DUP4 PUSH1 0x4 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1ADB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0x1B03 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x6 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1B1D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1BAB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1B80 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1BAB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B8E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH1 0x7 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1BBF JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1C4D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1C22 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1C4D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1C30 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH2 0x2389 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1ABD JUMP JUMPDEST POP PUSH2 0x1C83 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x426E PUSH1 0x22 SWAP2 CODECOPY PUSH2 0x2362 JUMP JUMPDEST DUP3 PUSH1 0x2 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH32 0x9A2E42FD6722813D69113E7D0079D3D940171428DF7373DF9C7F7617CFDA2892 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0xF01 SWAP3 SWAP2 SWAP1 PUSH2 0x3EAD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x621 SWAP1 PUSH2 0x39F6 JUMP JUMPDEST PUSH2 0x1CF0 PUSH2 0x26CC JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE PUSH1 0x8 ADD DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x1D78 DUP3 PUSH2 0xAAE JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1D83 JUMPI INVALID JUMPDEST EQ PUSH2 0x1DA0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3CC7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH10 0xFF000000000000000000 NOT AND PUSH1 0x1 PUSH1 0x48 SHL OR SWAP1 SSTORE SWAP1 JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1F13 JUMPI PUSH1 0x0 SLOAD PUSH1 0x5 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x825F38F SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x1DFD JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP5 PUSH1 0x4 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1E17 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP7 SWAP1 DUP2 LT PUSH2 0x1E3F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP7 PUSH1 0x6 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1E59 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x7 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1E72 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP9 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EB4 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3B15 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ECD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1F0A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2CBB JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1DCB JUMP JUMPDEST POP PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F DUP3 PUSH1 0x40 MLOAD PUSH2 0x1F43 SWAP2 SWAP1 PUSH2 0x3BDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1F5A DUP4 PUSH2 0xAAE JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1F65 JUMPI INVALID JUMPDEST EQ PUSH2 0x1F82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3DC7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE PUSH1 0x8 DUP2 ADD SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1FCB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3CF7 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD SWAP1 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x41B775F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 PUSH4 0x836EEBEE SWAP3 PUSH2 0x2017 SWAP3 DUP12 SWAP3 PUSH4 0xFFFFFFFF AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x3B65 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x202F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2043 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2067 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DD5 JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x20D6 JUMPI PUSH2 0x20A9 DUP4 PUSH1 0x1 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x41B3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2253 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x2139 JUMP JUMPDEST PUSH2 0x2110 DUP4 PUSH1 0x1 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x41B3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2253 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0xFF NOT SWAP1 SWAP2 AND OR PUSH2 0xFF00 NOT AND PUSH2 0x100 DUP6 ISZERO ISZERO MUL OR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND MUL OR DUP3 SSTORE PUSH1 0x40 MLOAD PUSH32 0x877856338E13F63D0C36822FF0EF736B80934CD90574A3A5BC9262C39D217C46 SWAP1 PUSH2 0x21AA SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP7 SWAP1 PUSH2 0x3A86 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH5 0x100000000 DUP5 LT PUSH2 0x21E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP2 SWAP1 PUSH2 0x3C96 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x2202 JUMPI POP PUSH1 0x0 PUSH2 0x224C JUMP JUMPDEST DUP4 DUP4 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP6 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP4 AND DUP2 PUSH2 0x221E JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND EQ DUP4 SWAP1 PUSH2 0x2248 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP2 SWAP1 PUSH2 0x3C96 JUMP JUMPDEST POP SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x2248 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP2 SWAP1 PUSH2 0x3C96 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x22B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP2 SWAP1 PUSH2 0x3C96 JUMP JUMPDEST POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x22CE JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x224C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D37 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x1D51 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x235C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3DD7 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x40 SHL DUP5 LT PUSH2 0x21E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP2 SWAP1 PUSH2 0x3C96 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2B06537 SWAP1 PUSH2 0x23B7 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x20 ADD PUSH2 0x3ABB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E9 SWAP2 SWAP1 PUSH2 0x3BDA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2415 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2439 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C7F JUMP JUMPDEST ISZERO PUSH2 0x2456 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D67 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3A66F901 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x3A66F901 SWAP1 PUSH2 0x248E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3ABB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x24E0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C9D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x200 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x160 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0x180 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1A0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1C0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1E0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x25C3 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x25C3 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x258E JUMP JUMPDEST POP PUSH2 0x25CF SWAP3 SWAP2 POP PUSH2 0x26EC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x260E JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x260E JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25F3 JUMP JUMPDEST POP PUSH2 0x25CF SWAP3 SWAP2 POP PUSH2 0x2710 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x2667 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2667 JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x2657 SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x272A JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x263A JUMP JUMPDEST POP PUSH2 0x25CF SWAP3 SWAP2 POP PUSH2 0x2797 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x26C0 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x26C0 JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x26B0 SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x272A JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2693 JUMP JUMPDEST POP PUSH2 0x25CF SWAP3 SWAP2 POP PUSH2 0x27BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x5F1 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25CF JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x26F2 JUMP JUMPDEST PUSH2 0x5F1 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25CF JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2716 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x276B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x260E JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x260E JUMPI SWAP2 DUP3 ADD DUP3 DUP2 GT ISZERO PUSH2 0x260E JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x5F1 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25CF JUMPI PUSH1 0x0 PUSH2 0x27B1 DUP3 DUP3 PUSH2 0x27DD JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x279D JUMP JUMPDEST PUSH2 0x5F1 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25CF JUMPI PUSH1 0x0 PUSH2 0x27D4 DUP3 DUP3 PUSH2 0x27DD JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x27C0 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x2803 JUMPI POP PUSH2 0x2821 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2821 SWAP2 SWAP1 PUSH2 0x2710 JUMP JUMPDEST POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D51 DUP2 PUSH2 0x4105 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2853 PUSH2 0x284E DUP3 PUSH2 0x3FBD JUMP JUMPDEST PUSH2 0x3F97 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x2878 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28A4 JUMPI DUP2 PUSH2 0x288E DUP9 DUP3 PUSH2 0x2824 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x287B JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x28CD PUSH2 0x284E DUP3 PUSH2 0x3FBD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28A4 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x28F5 DUP9 DUP3 PUSH2 0x2A4C JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x28DF JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x291C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x292A PUSH2 0x284E DUP3 PUSH2 0x3FBD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28A4 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x2952 DUP9 DUP3 PUSH2 0x2A4C JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x293C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x297A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x29A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29CF PUSH2 0x284E DUP3 PUSH2 0x3FBD JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x29F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28A4 JUMPI DUP2 PUSH2 0x2A0A DUP9 DUP3 PUSH2 0x2A36 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x29F7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D51 DUP2 PUSH2 0x4119 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1D51 DUP2 PUSH2 0x4119 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D51 DUP2 PUSH2 0x4122 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1D51 DUP2 PUSH2 0x4122 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2A5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2A6B PUSH2 0x284E DUP3 PUSH2 0x3FDD JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x2A87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A92 DUP4 DUP3 DUP5 PUSH2 0x40B9 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2AAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2ABA PUSH2 0x284E DUP3 PUSH2 0x3FDD JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x2AD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A92 DUP4 DUP3 DUP5 PUSH2 0x40C5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D51 DUP2 PUSH2 0x412B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1D51 DUP2 PUSH2 0x4134 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B15 DUP5 DUP5 PUSH2 0x2824 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B3C DUP6 DUP6 PUSH2 0x2824 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2B4D DUP6 DUP3 DUP7 ADD PUSH2 0x2A36 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2B6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B91 DUP9 DUP3 DUP10 ADD PUSH2 0x282F JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BB9 DUP9 DUP3 DUP10 ADD PUSH2 0x29B0 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BE1 DUP9 DUP3 DUP10 ADD PUSH2 0x290B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C09 DUP9 DUP3 DUP10 ADD PUSH2 0x28AE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C31 DUP9 DUP3 DUP10 ADD PUSH2 0x2A4C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C73 DUP6 DUP3 DUP7 ADD PUSH2 0x2968 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B15 DUP5 DUP5 PUSH2 0x2A2B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B15 DUP5 DUP5 PUSH2 0x2A41 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B15 DUP5 DUP3 DUP6 ADD PUSH2 0x2A9B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B15 DUP5 DUP5 PUSH2 0x2A36 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D2C DUP6 DUP6 PUSH2 0x2A36 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2B4D DUP6 DUP3 DUP7 ADD PUSH2 0x2824 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D5C DUP6 DUP6 PUSH2 0x2A36 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2B4D DUP6 DUP3 DUP7 ADD PUSH2 0x2A20 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2D85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D91 DUP9 DUP9 PUSH2 0x2A36 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x2DA2 DUP9 DUP3 DUP10 ADD PUSH2 0x2A20 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x2DB3 DUP9 DUP3 DUP10 ADD PUSH2 0x2AE1 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x2DC4 DUP9 DUP3 DUP10 ADD PUSH2 0x2A36 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x2C31 DUP9 DUP3 DUP10 ADD PUSH2 0x2A36 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B15 DUP5 DUP5 PUSH2 0x2AEC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DFF DUP4 DUP4 PUSH2 0x2E2E JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x224C DUP4 DUP4 PUSH2 0x2FD0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DFF DUP4 DUP4 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4070 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4023 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E42 DUP3 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x2E4C DUP2 DUP6 PUSH2 0x401A JUMP JUMPDEST SWAP4 POP PUSH2 0x2E57 DUP4 PUSH2 0x4004 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E85 JUMPI DUP2 MLOAD PUSH2 0x2E6F DUP9 DUP3 PUSH2 0x2DF3 JUMP JUMPDEST SWAP8 POP PUSH2 0x2E7A DUP4 PUSH2 0x4004 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2E5B JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E9B DUP3 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x2EA5 DUP2 DUP6 PUSH2 0x401A JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2EB7 DUP6 PUSH2 0x4004 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2EF1 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x2ED4 DUP6 DUP3 PUSH2 0x2E07 JUMP JUMPDEST SWAP5 POP PUSH2 0x2EDF DUP4 PUSH2 0x4004 JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2EBB JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F09 DUP3 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x2F13 DUP2 DUP6 PUSH2 0x401A JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2F25 DUP6 PUSH2 0x4004 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2EF1 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x2F42 DUP6 DUP3 PUSH2 0x2E07 JUMP JUMPDEST SWAP5 POP PUSH2 0x2F4D DUP4 PUSH2 0x4004 JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F6A DUP3 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x2F74 DUP2 DUP6 PUSH2 0x401A JUMP JUMPDEST SWAP4 POP PUSH2 0x2F7F DUP4 PUSH2 0x4004 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E85 JUMPI DUP2 MLOAD PUSH2 0x2F97 DUP9 DUP3 PUSH2 0x2E13 JUMP JUMPDEST SWAP8 POP PUSH2 0x2FA2 DUP4 PUSH2 0x4004 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2F83 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x402E JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x5F1 JUMP JUMPDEST PUSH2 0x2E28 PUSH2 0x2FCB DUP3 PUSH2 0x5F1 JUMP JUMPDEST PUSH2 0x5F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FDB DUP3 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x2FE5 DUP2 DUP6 PUSH2 0x401A JUMP JUMPDEST SWAP4 POP PUSH2 0x2FF5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x40C5 JUMP JUMPDEST PUSH2 0x2FFE DUP2 PUSH2 0x40F1 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 DUP2 AND PUSH1 0x0 DUP2 EQ PUSH2 0x3025 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x304B JUMPI PUSH2 0x308A JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP4 DIV AND PUSH2 0x3036 DUP2 DUP8 PUSH2 0x401A JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP2 MSTORE SWAP6 POP POP PUSH1 0x20 DUP6 ADD SWAP3 POP PUSH2 0x308A JUMP JUMPDEST PUSH1 0x2 DUP3 DIV PUSH2 0x3059 DUP2 DUP8 PUSH2 0x401A JUMP JUMPDEST SWAP6 POP PUSH2 0x3064 DUP6 PUSH2 0x400A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3083 JUMPI DUP2 SLOAD DUP9 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3067 JUMP JUMPDEST DUP8 ADD SWAP5 POP POP POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4077 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4082 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x408D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30BA PUSH1 0x39 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F61636365707441646D696E3A207365 DUP2 MSTORE PUSH32 0x6E646572206D75737420626520676F7620677561726469616E00000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3119 PUSH1 0x44 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A71756575653A2070726F706F73616C2063 DUP2 MSTORE PUSH32 0x616E206F6E6C7920626520717565756564206966206974206973207375636365 PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x19591959 PUSH1 0xE2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3185 PUSH1 0x45 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A657865637574653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2063616E206F6E6C792062652065786563757465642069662069742069732071 PUSH1 0x20 DUP3 ADD MSTORE PUSH5 0x1D595D5959 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31F2 PUSH1 0x2 DUP4 PUSH2 0xD31 JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3210 PUSH1 0x4C DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F6578656375746553657454696D656C DUP2 MSTORE PUSH32 0x6F636B50656E64696E6741646D696E3A2073656E646572206D75737420626520 PUSH1 0x20 DUP3 ADD MSTORE PUSH12 0x33B7BB1033BAB0B93234B0B7 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3284 PUSH1 0x18 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x73657450656E64696E6741646D696E2861646472657373290000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32BD PUSH1 0x29 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A73746174653A20696E76616C6964207072 DUP2 MSTORE PUSH9 0x1BDC1BDCD85B081A59 PUSH1 0xBA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3308 PUSH1 0x2D DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74657220 DUP2 MSTORE PUSH13 0x185B1C9958591E481D9BDD1959 PUSH1 0x9A SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3357 PUSH1 0x59 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C72656164792070656E64696E672070726F706F73616C00000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33DC PUSH1 0x4A DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F717565756553657454696D656C6F63 DUP2 MSTORE PUSH32 0x6B50656E64696E6741646D696E3A2073656E646572206D75737420626520676F PUSH1 0x20 DUP3 ADD MSTORE PUSH10 0x3B1033BAB0B93234B0B7 PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x344E PUSH1 0x28 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A20746F6F206D616E79 DUP2 MSTORE PUSH8 0x20616374696F6E73 PUSH1 0xC0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3498 PUSH1 0x11 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34C5 PUSH1 0x43 DUP4 PUSH2 0xD31 JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3530 PUSH1 0x27 DUP4 PUSH2 0xD31 JUMP JUMPDEST PUSH32 0x42616C6C6F742875696E743235362070726F706F73616C49642C626F6F6C2073 DUP2 MSTORE PUSH7 0x7570706F727429 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x27 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3579 PUSH1 0x44 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2066756E6374696F6E20696E666F726D6174696F6E206172697479206D69736D PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0xC2E8C6D PUSH1 0xE3 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35E5 PUSH1 0x2E DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2073656E646572206973 DUP2 MSTORE PUSH14 0x3713BA10309033BAB0B93234B0B7 PUSH1 0x91 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3635 PUSH1 0x44 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F71756575654F725265766572743A2070 DUP2 MSTORE PUSH32 0x726F706F73616C20616374696F6E20616C726561647920717565756564206174 PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x20657461 PUSH1 0xE0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36A1 PUSH1 0x2C DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206D7573742070726F DUP2 MSTORE PUSH12 0x7669646520616374696F6E73 PUSH1 0xA0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36EF PUSH1 0x3F DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F736572 DUP2 MSTORE PUSH32 0x20766F7465732062656C6F772070726F706F73616C207468726573686F6C6400 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x374E PUSH1 0x2F DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63617374566F746542795369673A20696E DUP2 MSTORE PUSH15 0x76616C6964207369676E6174757265 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x379F PUSH1 0x58 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C7265616479206163746976652070726F706F73616C0000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3824 PUSH1 0x36 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2063616E6E6F74206361 DUP2 MSTORE PUSH22 0x1B98D95B08195E1958DD5D1959081C1C9BDC1BDCD85B PUSH1 0x52 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x387C PUSH1 0x2A DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74696E67 DUP2 MSTORE PUSH10 0x81A5CC818DB1BDCD959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38C8 PUSH1 0x15 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38F9 PUSH1 0x36 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F61626469636174653A2073656E6465 DUP2 MSTORE PUSH22 0x391036BAB9BA1031329033B7BB1033BAB0B93234B0B7 PUSH1 0x51 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x3955 DUP5 DUP3 PUSH2 0x2FAD JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x3968 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2FAD JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x138A PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x39B1 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4098 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4049 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x40A3 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4052 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x405E JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x40AE JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4064 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C5 DUP3 PUSH2 0x31E5 JUMP JUMPDEST SWAP2 POP PUSH2 0x39D1 DUP3 DUP6 PUSH2 0x2FBF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x39E1 DUP3 DUP5 PUSH2 0x2FBF JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x34B8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x3523 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D51 DUP3 DUP5 PUSH2 0x2E2E JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3A1D DUP3 DUP7 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x3A2A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x2B15 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2FB6 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3A45 DUP3 DUP8 PUSH2 0x2E2E JUMP JUMPDEST PUSH2 0x3A52 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x30A4 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3A63 DUP2 PUSH2 0x3277 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3A77 DUP2 DUP6 PUSH2 0x2FD0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A23 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2FB6 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3A94 DUP3 DUP8 PUSH2 0x2E2E JUMP JUMPDEST PUSH2 0x3AA1 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3AAE PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2FAD JUMP JUMPDEST PUSH2 0x1A23 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x39A8 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3AC9 DUP3 DUP9 PUSH2 0x2E2E JUMP JUMPDEST PUSH2 0x3AD6 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2FB6 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3AE8 DUP2 DUP7 PUSH2 0x2FD0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3AFC DUP2 DUP6 PUSH2 0x2FD0 JUMP JUMPDEST SWAP1 POP PUSH2 0x3B0B PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2FB6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3B23 DUP3 DUP9 PUSH2 0x2E2E JUMP JUMPDEST PUSH2 0x3B30 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2FB6 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3B42 DUP2 DUP7 PUSH2 0x3008 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3B56 DUP2 DUP6 PUSH2 0x3008 JUMP JUMPDEST SWAP1 POP PUSH2 0x3B0B PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x398D JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3B73 DUP3 DUP7 PUSH2 0x2E2E JUMP JUMPDEST PUSH2 0x3B80 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x397B JUMP JUMPDEST PUSH2 0x2B15 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x398D JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3B9E DUP2 DUP8 PUSH2 0x2E37 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3BB2 DUP2 DUP7 PUSH2 0x2F5F JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3BC6 DUP2 DUP6 PUSH2 0x2EFE JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3B0B DUP2 DUP5 PUSH2 0x2E90 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D51 DUP3 DUP5 PUSH2 0x2FB6 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3BF6 DUP3 DUP8 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3C03 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3C10 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x1A23 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2E2E JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3C2B DUP3 DUP7 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3C38 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x2B15 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2FAD JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3C53 DUP3 DUP8 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3C60 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x399F JUMP JUMPDEST PUSH2 0x3C6D PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x1A23 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2FB6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D51 DUP3 DUP5 PUSH2 0x3092 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D51 DUP3 DUP5 PUSH2 0x309B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x224C DUP2 DUP5 PUSH2 0x2FD0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x30AD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x310C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3178 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x32B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x32FB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x334A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x33CF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3441 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x348B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x356C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x35D8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3628 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3694 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x36E2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3741 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3792 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3817 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x386F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x38BB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x38EC JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1D51 DUP3 DUP5 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x3E14 DUP3 DUP13 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3E21 PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x2E1F JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3E33 DUP2 DUP11 PUSH2 0x2E37 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3E47 DUP2 DUP10 PUSH2 0x2F5F JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x3E5B DUP2 DUP9 PUSH2 0x2EFE JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x3E6F DUP2 DUP8 PUSH2 0x2E90 JUMP JUMPDEST SWAP1 POP PUSH2 0x3E7E PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3E8B PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x2FB6 JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x3E9E DUP2 DUP5 PUSH2 0x2FD0 JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3EBB DUP3 DUP6 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x224C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x3ED7 DUP3 DUP16 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3EE4 PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x3984 JUMP JUMPDEST PUSH2 0x3EF1 PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x3984 JUMP JUMPDEST PUSH2 0x3EFE PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x39B1 JUMP JUMPDEST PUSH2 0x3F0B PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x39B1 JUMP JUMPDEST PUSH2 0x3F18 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x39B1 JUMP JUMPDEST PUSH2 0x3F25 PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x39B1 JUMP JUMPDEST PUSH2 0x3F32 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x3996 JUMP JUMPDEST PUSH2 0x3F40 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x3996 JUMP JUMPDEST PUSH2 0x3F4E PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x2FAD JUMP JUMPDEST PUSH2 0x3F5C PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x2FAD JUMP JUMPDEST PUSH2 0x3F6A PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x2E2E JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3EBB DUP3 DUP6 PUSH2 0x3984 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D51 DUP3 DUP5 PUSH2 0x39B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x3FD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x3FF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x403D JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xD31 DUP2 PUSH2 0x40FB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x4023 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x4033 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x5F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x4049 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x4064 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x40E0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x40C8 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x138A JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x8 DUP2 LT PUSH2 0x2821 JUMPI INVALID JUMPDEST PUSH2 0x410E DUP2 PUSH2 0x4023 JUMP JUMPDEST DUP2 EQ PUSH2 0x2821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x410E DUP2 PUSH2 0x402E JUMP JUMPDEST PUSH2 0x410E DUP2 PUSH2 0x5F1 JUMP JUMPDEST PUSH2 0x410E DUP2 PUSH2 0x405E JUMP JUMPDEST PUSH2 0x410E DUP2 PUSH2 0x4064 JUMP INVALID SELFBALANCE PUSH16 0x7665726E6F72416C7068613A3A70726F PUSH17 0x6F73653A206F766572666C6F77206F6E20 PUSH18 0x756F72756D20636F6D7075746174696F6E47 PUSH16 0x7665726E6F72416C7068613A3A207374 PUSH2 0x7465 GASPRICE KECCAK256 PUSH21 0x6F74616C566F746573202A206D616A6F7269747950 PUSH6 0x7263656E7461 PUSH8 0x65203E2075696E74 CODECOPY CALLDATASIZE SELFBALANCE PUSH16 0x7665726E6F72416C7068613A3A5F6361 PUSH20 0x74566F74653A20766F7465206F766572666C6F77 SELFBALANCE PUSH16 0x7665726E6F72416C7068613A3A70726F PUSH17 0x6F73653A20656E6420626C6F636B206E75 PUSH14 0x626572206F766572666C6F77476F PUSH23 0x65726E6F72416C7068613A3A71756F72756D566F746573 GASPRICE KECCAK256 PUSH3 0x6C6F63 PUSH12 0x206E756D626572206F766572 PUSH7 0x6C6F77476F7665 PUSH19 0x6E6F72416C7068613A3A71756F72756D566F74 PUSH6 0x733A6D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77476F7665726E6F7241 PUSH13 0x7068613A3A71756575653A2045 SLOAD COINBASE KECCAK256 PUSH16 0x766572666C6F77476F7665726E6F7241 PUSH13 0x7068613A3A2073746174653A20 PUSH7 0x6F72566F746573 KECCAK256 0x2B KECCAK256 PUSH2 0x6761 PUSH10 0x6E7374566F746573203E KECCAK256 PUSH22 0x696E743936476F7665726E6F72416C7068613A3A7072 PUSH16 0x706F73653A206F766572666C6F77206F PUSH15 0x206D616A6F7269747950657263656E PUSH21 0x61676520636F6D7075746174696F6E476F7665726E PUSH16 0x72416C7068613A3A2073746174653A20 PUSH5 0x6976697369 PUSH16 0x6E206572726F72476F7665726E6F7241 PUSH13 0x7068613A3A70726F706F73653A KECCAK256 PUSH20 0x7461727420626C6F636B206E756D626572206F76 PUSH6 0x72666C6F7747 PUSH16 0x7665726E6F72416C7068613A3A70726F PUSH17 0x6F73616C5468726573686F6C643A20626C PUSH16 0x636B206E756D626572206F766572666C PUSH16 0x77476F7665726E6F72416C7068613A3A PUSH17 0x726F706F73653A20737461727454696D65 KECCAK256 PUSH16 0x766572666C6F77A365627A7A72315820 CALLER RETURNDATACOPY 0xF6 0xEB SMOD PUSH7 0x2BD3F244257B66 0x23 ISZERO 0xCE 0xB0 CODECOPY 0xAA 0xDA 0x4E DUP9 LOG2 SHL MLOAD EXP 0xEE REVERT 0xC5 0x24 0xBF 0xCE PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "103:500:105:-;;;152:220;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:220:105;;;;;;;;;;;;;;;;;;;;;5919:8:51;:31;;-1:-1:-1;;;;;;5919:31:51;;;-1:-1:-1;;;;;5919:31:51;;;;;;;-1:-1:-1;5954:28:51;;;;;;;;;;;;;;5986:8;:20;;;;;;;;;;;;;;;;6010:21;:46;;-1:-1:-1;;;;;;6010:46:51;-1:-1:-1;;;;;6010:46:51;;;;-1:-1:-1;;;;;;;;6060:50:51;;;;;;;;;;;;;;;;103:500:105;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:132;223:13;;241:32;223:13;241:32;;285:805;;;;;;466:3;454:9;445:7;441:23;437:33;434:2;;;483:1;480;473:12;434:2;518:1;535:64;591:7;571:9;535:64;;;525:74;;497:108;636:2;654:64;710:7;701:6;690:9;686:22;654:64;;;644:74;;615:109;755:2;773:64;829:7;820:6;809:9;805:22;773:64;;;763:74;;734:109;874:2;892:63;947:7;938:6;927:9;923:22;892:63;;;882:73;;853:108;992:3;1011:63;1066:7;1057:6;1046:9;1042:22;1011:63;;;1001:73;;971:109;428:662;;;;;;;;;1097:91;;-1:-1;;;;;1257:54;;1159:24;1240:76;1323:104;-1:-1;;;;;1384:38;;1367:60;1434:117;1503:24;1521:5;1503:24;;;1496:5;1493:35;1483:2;;1542:1;1539;1532:12;1483:2;1477:74;;1558:115;1626:23;1643:5;1626:23;;1600:73;103:500:105;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106101cd5760003560e01c8063760fbc13116100f7578063d33219b411610095578063deaaa7cc11610064578063deaaa7cc146104e4578063e23a9a52146104f9578063e265379014610526578063fe0d94c11461053b576101cd565b8063d33219b41461047a578063da35c6641461048f578063da95691a146104a4578063ddf0b009146104c4576101cd565b8063a3f4df7e116100d1578063a3f4df7e14610419578063b2b0d91f1461043b578063b58131b014610450578063b9a6196114610465576101cd565b8063760fbc13146103e45780637bdbe4d01461021357806391500671146103f9576101cd565b8063328dd9821161016f578063452a93201161013e578063452a9320146103605780634634c61f146103825780634b9c9a27146103a25780634cf088d9146103c2576101cd565b8063328dd982146102ce5780633932abb1146102fe5780633e4f49e61461031357806340e58ee514610340576101cd565b806317977c61116101ab57806317977c611461025757806320606b701461027757806321f43e421461028c57806324bc1a64146102ac576101cd565b8063013cf08b146101d257806302a251a31461021357806315373e3d14610235575b600080fd5b3480156101de57600080fd5b506101f26101ed366004612cef565b61054e565b60405161020a9c9b9a99989796959493929190613ec8565b60405180910390f35b34801561021f57600080fd5b506102286105ee565b60405161020a9190613bda565b34801561024157600080fd5b50610255610250366004612d3d565b6105f4565b005b34801561026357600080fd5b50610228610272366004612af7565b610603565b34801561028357600080fd5b50610228610615565b34801561029857600080fd5b506102556102a7366004612b1d565b61062c565b3480156102b857600080fd5b506102c1610713565b60405161020a9190613f89565b3480156102da57600080fd5b506102ee6102e9366004612cef565b61081a565b60405161020a9493929190613b8d565b34801561030a57600080fd5b50610228610aa9565b34801561031f57600080fd5b5061033361032e366004612cef565b610aae565b60405161020a9190613c88565b34801561034c57600080fd5b5061025561035b366004612cef565b610d36565b34801561036c57600080fd5b50610375610f0e565b60405161020a9190613a01565b34801561038e57600080fd5b5061025561039d366004612d6d565b610f1d565b3480156103ae57600080fd5b506102556103bd366004612c3e565b6110b0565b3480156103ce57600080fd5b506103d76110de565b60405161020a9190613c7a565b3480156103f057600080fd5b506102556110ed565b34801561040557600080fd5b50610255610414366004612b1d565b611129565b34801561042557600080fd5b5061042e6111fe565b60405161020a9190613c96565b34801561044757600080fd5b506102c161122f565b34801561045c57600080fd5b506102c161123e565b34801561047157600080fd5b5061025561130b565b34801561048657600080fd5b506103d7611390565b34801561049b57600080fd5b5061022861139f565b3480156104b057600080fd5b506102286104bf366004612b57565b6113a5565b3480156104d057600080fd5b506102556104df366004612cef565b611a2c565b3480156104f057600080fd5b50610228611cdc565b34801561050557600080fd5b50610519610514366004612d0d565b611ce8565b60405161020a9190613df7565b34801561053257600080fd5b506102c1611d57565b610255610549366004612cef565b611d6d565b6005602052600090815260409020805460018201546002830154600390930154919263ffffffff808316936401000000008404909116926001600160601b03600160401b808304821694600160a01b90930482169383831693600160601b8104909316926001600160401b03600160c01b9091048116929082169160ff918104821691600160481b820416906001600160a01b03600160501b909104168c565b600a5b90565b6105ff338383611f4f565b5050565b60066020526000908152604090205481565b604051610621906139eb565b604051809103902081565b6002546001600160a01b0316331461065f5760405162461bcd60e51b815260040161065690613cd7565b60405180910390fd5b600080546040516001600160a01b0390911691630825f38f91839190610689908790602001613a01565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016106b89493929190613a37565b600060405180830381600087803b1580156106d257600080fd5b505af11580156106e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261070e9190810190612cbb565b505050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632522d7ba61075f6001430360405180606001604052806031815260200161420b603191396121ba565b426040518363ffffffff1660e01b815260040161077d929190613f7b565b60206040518083038186803b15801561079557600080fd5b505afa1580156107a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107cd9190810190612dd5565b60045460408051606081019091526032808252929350606492610803926001600160601b031691859161423c60208301396121ea565b6001600160601b03168161081357fe5b0491505090565b6060806060806000600560008781526020019081526020016000209050806004018160050182600601836007018380548060200260200160405190810160405280929190818152602001828054801561089c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161087e575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156108ee57602002820191906000526020600020905b8154815260200190600101908083116108da575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156109c15760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156109ad5780601f10610982576101008083540402835291602001916109ad565b820191906000526020600020905b81548152906001019060200180831161099057829003601f168201915b505050505081526020019060010190610916565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610a935760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610a7f5780601f10610a5457610100808354040283529160200191610a7f565b820191906000526020600020905b815481529060010190602001808311610a6257829003601f168201915b5050505050815260200190600101906109e8565b5050505090509450945094509450509193509193565b600190565b60008160035410158015610ac25750600082115b610ade5760405162461bcd60e51b815260040161065690613ce7565b60008281526005602052604090206003810154600160401b900460ff1615610b0a576002915050610d31565b600181015463ffffffff164311610b25576000915050610d31565b6001810154640100000000900463ffffffff164311610b48576001915050610d31565b600181015460408051606081019091526037808252600092610b8d926001600160601b03600160401b8304811693600160a01b90930416916142906020830139612253565b90506000610bb582606460405180606001604052806025815260200161430960259139612286565b9050610bef816004600c9054906101000a90046001600160601b03166040518060600160405280603f8152602001614174603f91396121ea565b60018401549091506001600160601b03808316600160401b90920416111580610c28575060028301546001600160601b03908116908316105b15610c395760039350505050610d31565b6002830154600160c01b90046001600160401b0316610c5e5760049350505050610d31565b6003830154600160481b900460ff1615610c7e5760079350505050610d31565b6002830154600054604080516360d143f160e11b81529051610d1793600160c01b90046001600160401b0316926001600160a01b03169163c1a287e2916004808301926020929190829003018186803b158015610cda57600080fd5b505afa158015610cee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d129190810190612c9d565b6122d8565b4210610d295760069350505050610d31565b600593505050505b919050565b6000610d4182610aae565b90506007816007811115610d5157fe5b1415610d6f5760405162461bcd60e51b815260040161065690613db7565b60008281526005602052604090206002546001600160a01b03163314610da75760405162461bcd60e51b815260040161065690613d57565b60038101805468ff00000000000000001916600160401b17905560005b6004820154811015610ed1576000546004830180546001600160a01b039092169163591fcdfe919084908110610df657fe5b6000918252602090912001546005850180546001600160a01b039092169185908110610e1e57fe5b9060005260206000200154856006018581548110610e3857fe5b90600052602060002001866007018681548110610e5157fe5b906000526020600020018760020160189054906101000a90046001600160401b03166040518663ffffffff1660e01b8152600401610e93959493929190613b15565b600060405180830381600087803b158015610ead57600080fd5b505af1158015610ec1573d6000803e3d6000fd5b505060019092019150610dc49050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610f019190613bda565b60405180910390a1505050565b6002546001600160a01b031681565b6000604051610f2b906139eb565b604080519182900382208282019091526015825274536f7672796e20476f7665726e6f7220416c70686160581b6020909201919091527fddf6fbf241d6c602c276b8332aecac376ff7e0ef2276d109c25930e6911ca2bd610f8a6122fd565b30604051602001610f9e9493929190613be8565b6040516020818303038152906040528051906020012090506000604051610fc4906139f6565b604051908190038120610fdd9189908990602001613c1d565b6040516020818303038152906040528051906020012090506000828260405160200161100a9291906139ba565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516110479493929190613c45565b6020604051602081039080840390855afa158015611069573d6000803e3d6000fd5b50505060206040510351905061107e81612301565b61109a5760405162461bcd60e51b815260040161065690613d97565b6110a5818a8a611f4f565b505050505050505050565b60005b8181101561070e576110d68383838181106110ca57fe5b90506020020135611a2c565b6001016110b3565b6001546001600160a01b031681565b6002546001600160a01b031633146111175760405162461bcd60e51b815260040161065690613de7565b600280546001600160a01b0319169055565b6002546001600160a01b031633146111535760405162461bcd60e51b815260040161065690613d17565b600080546040516001600160a01b0390911691633a66f9019183919061117d908790602001613a01565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016111ac9493929190613a37565b602060405180830381600087803b1580156111c657600080fd5b505af11580156111da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061070e9190810190612c9d565b60405180604001604052806015815260200174536f7672796e20476f7665726e6f7220416c70686160581b81525081565b6004546001600160601b031681565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632522d7ba61128a60014303604051806060016040528060378152602001614361603791396121ba565b426040518363ffffffff1660e01b81526004016112a8929190613f7b565b60206040518083038186803b1580156112c057600080fd5b505afa1580156112d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112f89190810190612dd5565b905060646001600160601b038216610813565b6002546001600160a01b031633146113355760405162461bcd60e51b815260040161065690613ca7565b6000805460408051630e18b68160e01b815290516001600160a01b0390921692630e18b6819260048084019382900301818387803b15801561137657600080fd5b505af115801561138a573d6000803e3d6000fd5b50505050565b6000546001600160a01b031681565b60035481565b6000806113b061123e565b600180549192506001600160601b038316916001600160a01b03169063836eebee9033906113df90439061233a565b426040518463ffffffff1660e01b81526004016113fe93929190613a0f565b60206040518083038186803b15801561141657600080fd5b505afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061144e9190810190612dd5565b6001600160601b0316116114745760405162461bcd60e51b815260040161065690613d87565b85518751148015611486575084518751145b8015611493575083518751145b6114af5760405162461bcd60e51b815260040161065690613d47565b86516114cd5760405162461bcd60e51b815260040161065690613d77565b6114d56105ee565b875111156114f55760405162461bcd60e51b815260040161065690613d27565b33600090815260066020526040902054801561157257600061151682610aae565b9050600181600781111561152657fe5b14156115445760405162461bcd60e51b815260040161065690613da7565b600081600781111561155257fe5b14156115705760405162461bcd60e51b815260040161065690613d07565b505b600061158043610d12610aa9565b9050600061159082610d126105ee565b60038054600101905590506115a36124e8565b60405180610200016040528060035481526020016115d98560405180606001604052806033815260200161432e603391396121ba565b63ffffffff168152602001611606846040518060600160405280603181526020016141da603191396121ba565b63ffffffff16815260200160006001600160601b0316815260200160006001600160601b03168152602001611669600460009054906101000a90046001600160601b03168860405180606001604052806036815260200161413e603691396121ea565b6001600160601b031681526020016116af6004600c9054906101000a90046001600160601b0316886040518060800160405280604281526020016142c7604291396121ea565b6001600160601b0316815260200160006001600160401b031681526020016116ef426040518060600160405280602a8152602001614398602a9139612362565b6001600160401b03168152602001600015158152602001600015158152602001336001600160a01b031681526020018c81526020018b81526020018a81526020018981525090508060056000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548163ffffffff021916908363ffffffff16021790555060408201518160010160046101000a81548163ffffffff021916908363ffffffff16021790555060608201518160010160086101000a8154816001600160601b0302191690836001600160601b0316021790555060808201518160010160146101000a8154816001600160601b0302191690836001600160601b0316021790555060a08201518160020160006101000a8154816001600160601b0302191690836001600160601b0316021790555060c082015181600201600c6101000a8154816001600160601b0302191690836001600160601b0316021790555060e08201518160020160186101000a8154816001600160401b0302191690836001600160401b031602179055506101008201518160030160006101000a8154816001600160401b0302191690836001600160401b031602179055506101208201518160030160086101000a81548160ff0219169083151502179055506101408201518160030160096101000a81548160ff02191690831515021790555061016082015181600301600a6101000a8154816001600160a01b0302191690836001600160a01b0316021790555061018082015181600401908051906020019061194292919061256e565b506101a0820151805161195f9160058401916020909101906125d3565b506101c0820151805161197c91600684019160209091019061261a565b506101e08201518051611999916007840191602090910190612673565b509050508060000151600660008361016001516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338d8d8d8d89898f604051611a1399989796959493929190613e05565b60405180910390a1519450505050505b95945050505050565b6004611a3782610aae565b6007811115611a4257fe5b14611a5f5760405162461bcd60e51b815260040161065690613cb7565b600081815260056020908152604080832083548251630d48571f60e31b81529251919493611ab89342936001600160a01b0390931692636a42b8f892600480840193919291829003018186803b158015610cda57600080fd5b905060005b6004830154811015611c6057611c58836004018281548110611adb57fe5b6000918252602090912001546005850180546001600160a01b039092169184908110611b0357fe5b9060005260206000200154856006018481548110611b1d57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611bab5780601f10611b8057610100808354040283529160200191611bab565b820191906000526020600020905b815481529060010190602001808311611b8e57829003601f168201915b5050505050866007018581548110611bbf57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611c4d5780601f10611c2257610100808354040283529160200191611c4d565b820191906000526020600020905b815481529060010190602001808311611c3057829003601f168201915b505050505086612389565b600101611abd565b50611c838160405180606001604052806022815260200161426e60229139612362565b8260020160186101000a8154816001600160401b0302191690836001600160401b031602179055507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928382604051610f01929190613ead565b604051610621906139f6565b611cf06126cc565b5060008281526005602090815260408083206001600160a01b03851684526008018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046001600160601b0316918101919091525b92915050565b600454600160601b90046001600160601b031681565b6005611d7882610aae565b6007811115611d8357fe5b14611da05760405162461bcd60e51b815260040161065690613cc7565b600081815260056020526040812060038101805469ff0000000000000000001916600160481b179055905b6004820154811015611f13576000546005830180546001600160a01b0390921691630825f38f919084908110611dfd57fe5b9060005260206000200154846004018481548110611e1757fe5b6000918252602090912001546005860180546001600160a01b039092169186908110611e3f57fe5b9060005260206000200154866006018681548110611e5957fe5b90600052602060002001876007018781548110611e7257fe5b906000526020600020018860020160189054906101000a90046001600160401b03166040518763ffffffff1660e01b8152600401611eb4959493929190613b15565b6000604051808303818588803b158015611ecd57600080fd5b505af1158015611ee1573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611f0a9190810190612cbb565b50600101611dcb565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611f439190613bda565b60405180910390a15050565b6001611f5a83610aae565b6007811115611f6557fe5b14611f825760405162461bcd60e51b815260040161065690613dc7565b60008281526005602090815260408083206001600160a01b038716845260088101909252909120805460ff1615611fcb5760405162461bcd60e51b815260040161065690613cf7565b600180549083015460038401546040516341b775f760e11b81526000936001600160a01b03169263836eebee92612017928b9263ffffffff16916001600160401b031690600401613b65565b60206040518083038186803b15801561202f57600080fd5b505afa158015612043573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120679190810190612dd5565b905083156120d6576120a98360010160089054906101000a90046001600160601b0316826040518060600160405280602781526020016141b360279139612253565b8360010160086101000a8154816001600160601b0302191690836001600160601b03160217905550612139565b6121108360010160149054906101000a90046001600160601b0316826040518060600160405280602781526020016141b360279139612253565b8360010160146101000a8154816001600160601b0302191690836001600160601b031602179055505b8154600160ff199091161761ff00191661010085151502176dffffffffffffffffffffffff00001916620100006001600160601b038316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c46906121aa908890889088908690613a86565b60405180910390a1505050505050565b60008164010000000084106121e25760405162461bcd60e51b81526004016106569190613c96565b509192915050565b60006001600160601b0384166122025750600061224c565b8383026001600160601b03808516908087169083168161221e57fe5b046001600160601b03161483906122485760405162461bcd60e51b81526004016106569190613c96565b5090505b9392505050565b6000838301826001600160601b0380871690831610156122485760405162461bcd60e51b81526004016106569190613c96565b6000816001600160601b0384166122b05760405162461bcd60e51b81526004016106569190613c96565b506000836001600160601b0316856001600160601b0316816122ce57fe5b0495945050505050565b60008282018381101561224c5760405162461bcd60e51b815260040161065690613d37565b4690565b600073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b03831614801590611d515750506001600160a01b0316151590565b60008282111561235c5760405162461bcd60e51b815260040161065690613dd7565b50900390565b600081600160401b84106121e25760405162461bcd60e51b81526004016106569190613c96565b6000546040516001600160a01b039091169063f2b06537906123b79088908890889088908890602001613abb565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016123e99190613bda565b60206040518083038186803b15801561240157600080fd5b505afa158015612415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124399190810190612c7f565b156124565760405162461bcd60e51b815260040161065690613d67565b600054604051633a66f90160e01b81526001600160a01b0390911690633a66f9019061248e9088908890889088908890600401613abb565b602060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124e09190810190612c9d565b505050505050565b604080516102008101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820183905261016082019290925261018081018290526101a081018290526101c081018290526101e081019190915290565b8280548282559060005260206000209081019282156125c3579160200282015b828111156125c357825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061258e565b506125cf9291506126ec565b5090565b82805482825590600052602060002090810192821561260e579160200282015b8281111561260e5782518255916020019190600101906125f3565b506125cf929150612710565b828054828255906000526020600020908101928215612667579160200282015b82811115612667578251805161265791849160209091019061272a565b509160200191906001019061263a565b506125cf929150612797565b8280548282559060005260206000209081019282156126c0579160200282015b828111156126c057825180516126b091849160209091019061272a565b5091602001919060010190612693565b506125cf9291506127ba565b604080516060810182526000808252602082018190529181019190915290565b6105f191905b808211156125cf5780546001600160a01b03191681556001016126f2565b6105f191905b808211156125cf5760008155600101612716565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061276b57805160ff191683800117855561260e565b8280016001018555821561260e579182018281111561260e5782518255916020019190600101906125f3565b6105f191905b808211156125cf5760006127b182826127dd565b5060010161279d565b6105f191905b808211156125cf5760006127d482826127dd565b506001016127c0565b50805460018160011615610100020316600290046000825580601f106128035750612821565b601f0160209004906000526020600020908101906128219190612710565b50565b8035611d5181614105565b600082601f83011261284057600080fd5b813561285361284e82613fbd565b613f97565b9150818183526020840193506020810190508385602084028201111561287857600080fd5b60005b838110156128a4578161288e8882612824565b845250602092830192919091019060010161287b565b5050505092915050565b600082601f8301126128bf57600080fd5b81356128cd61284e82613fbd565b81815260209384019390925082018360005b838110156128a457813586016128f58882612a4c565b84525060209283019291909101906001016128df565b600082601f83011261291c57600080fd5b813561292a61284e82613fbd565b81815260209384019390925082018360005b838110156128a457813586016129528882612a4c565b845250602092830192919091019060010161293c565b60008083601f84011261297a57600080fd5b5081356001600160401b0381111561299157600080fd5b6020830191508360208202830111156129a957600080fd5b9250929050565b600082601f8301126129c157600080fd5b81356129cf61284e82613fbd565b915081818352602084019350602081019050838560208402820111156129f457600080fd5b60005b838110156128a45781612a0a8882612a36565b84525060209283019291909101906001016129f7565b8035611d5181614119565b8051611d5181614119565b8035611d5181614122565b8051611d5181614122565b600082601f830112612a5d57600080fd5b8135612a6b61284e82613fdd565b91508082526020830160208301858383011115612a8757600080fd5b612a928382846140b9565b50505092915050565b600082601f830112612aac57600080fd5b8151612aba61284e82613fdd565b91508082526020830160208301858383011115612ad657600080fd5b612a928382846140c5565b8035611d518161412b565b8051611d5181614134565b600060208284031215612b0957600080fd5b6000612b158484612824565b949350505050565b60008060408385031215612b3057600080fd5b6000612b3c8585612824565b9250506020612b4d85828601612a36565b9150509250929050565b600080600080600060a08688031215612b6f57600080fd5b85356001600160401b03811115612b8557600080fd5b612b918882890161282f565b95505060208601356001600160401b03811115612bad57600080fd5b612bb9888289016129b0565b94505060408601356001600160401b03811115612bd557600080fd5b612be18882890161290b565b93505060608601356001600160401b03811115612bfd57600080fd5b612c09888289016128ae565b92505060808601356001600160401b03811115612c2557600080fd5b612c3188828901612a4c565b9150509295509295909350565b60008060208385031215612c5157600080fd5b82356001600160401b03811115612c6757600080fd5b612c7385828601612968565b92509250509250929050565b600060208284031215612c9157600080fd5b6000612b158484612a2b565b600060208284031215612caf57600080fd5b6000612b158484612a41565b600060208284031215612ccd57600080fd5b81516001600160401b03811115612ce357600080fd5b612b1584828501612a9b565b600060208284031215612d0157600080fd5b6000612b158484612a36565b60008060408385031215612d2057600080fd5b6000612d2c8585612a36565b9250506020612b4d85828601612824565b60008060408385031215612d5057600080fd5b6000612d5c8585612a36565b9250506020612b4d85828601612a20565b600080600080600060a08688031215612d8557600080fd5b6000612d918888612a36565b9550506020612da288828901612a20565b9450506040612db388828901612ae1565b9350506060612dc488828901612a36565b9250506080612c3188828901612a36565b600060208284031215612de757600080fd5b6000612b158484612aec565b6000612dff8383612e2e565b505060200190565b600061224c8383612fd0565b6000612dff8383612fb6565b612e2881614070565b82525050565b612e2881614023565b6000612e4282614016565b612e4c818561401a565b9350612e5783614004565b8060005b83811015612e85578151612e6f8882612df3565b9750612e7a83614004565b925050600101612e5b565b509495945050505050565b6000612e9b82614016565b612ea5818561401a565b935083602082028501612eb785614004565b8060005b85811015612ef15784840389528151612ed48582612e07565b9450612edf83614004565b60209a909a0199925050600101612ebb565b5091979650505050505050565b6000612f0982614016565b612f13818561401a565b935083602082028501612f2585614004565b8060005b85811015612ef15784840389528151612f428582612e07565b9450612f4d83614004565b60209a909a0199925050600101612f29565b6000612f6a82614016565b612f74818561401a565b9350612f7f83614004565b8060005b83811015612e85578151612f978882612e13565b9750612fa283614004565b925050600101612f83565b612e288161402e565b612e28816105f1565b612e28612fcb826105f1565b6105f1565b6000612fdb82614016565b612fe5818561401a565b9350612ff58185602086016140c5565b612ffe816140f1565b9093019392505050565b600081546001811660008114613025576001811461304b5761308a565b607f6002830416613036818761401a565b60ff198416815295505060208501925061308a565b60028204613059818761401a565b95506130648561400a565b60005b8281101561308357815488820152600190910190602001613067565b8701945050505b505092915050565b612e2881614077565b612e2881614082565b612e288161408d565b60006130ba60398361401a565b7f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736581527f6e646572206d75737420626520676f7620677561726469616e00000000000000602082015260400192915050565b600061311960448361401a565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c79206265207175657565642069662069742069732073756363656020820152631959195960e21b604082015260600192915050565b600061318560458361401a565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c7920626520657865637574656420696620697420697320716020820152641d595d595960da1b604082015260600192915050565b60006131f2600283610d31565b61190160f01b815260020192915050565b6000613210604c8361401a565b7f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c81527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208201526b33b7bb1033bab0b93234b0b760a11b604082015260600192915050565b600061328460188361401a565b7f73657450656e64696e6741646d696e2861646472657373290000000000000000815260200192915050565b60006132bd60298361401a565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c69642070728152681bdc1bdcd85b081a5960ba1b602082015260400192915050565b6000613308602d8361401a565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081526c185b1c9958591e481d9bdd1959609a1b602082015260400192915050565b600061335760598361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b60006133dc604a8361401a565b7f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6381527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f6020820152693b1033bab0b93234b0b760b11b604082015260600192915050565b600061344e60288361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981526720616374696f6e7360c01b602082015260400192915050565b600061349860118361401a565b706164646974696f6e206f766572666c6f7760781b815260200192915050565b60006134c5604383610d31565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000613530602783610d31565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20738152667570706f72742960c81b602082015260270192915050565b600061357960448361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6020820152630c2e8c6d60e31b604082015260600192915050565b60006135e5602e8361401a565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2073656e64657220697381526d3713ba10309033bab0b93234b0b760911b602082015260400192915050565b600061363560448361401a565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c7265616479207175657565642061746020820152632065746160e01b604082015260600192915050565b60006136a1602c8361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81526b7669646520616374696f6e7360a01b602082015260400192915050565b60006136ef603f8361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b600061374e602f8361401a565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81526e76616c6964207369676e617475726560881b602082015260400192915050565b600061379f60588361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b600061382460368361401a565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f742063618152751b98d95b08195e1958dd5d1959081c1c9bdc1bdcd85b60521b602082015260400192915050565b600061387c602a8361401a565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e67815269081a5cc818db1bdcd95960b21b602082015260400192915050565b60006138c860158361401a565b747375627472616374696f6e20756e646572666c6f7760581b815260200192915050565b60006138f960368361401a565b7f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e6465815275391036bab9ba1031329033b7bb1033bab0b93234b0b760511b602082015260400192915050565b805160608301906139558482612fad565b5060208201516139686020850182612fad565b50604082015161138a60408501826139b1565b612e2881614098565b612e2881614049565b612e28816140a3565b612e2881614052565b612e288161405e565b612e28816140ae565b612e2881614064565b60006139c5826131e5565b91506139d18285612fbf565b6020820191506139e18284612fbf565b5060200192915050565b6000611d51826134b8565b6000611d5182613523565b60208101611d518284612e2e565b60608101613a1d8286612e1f565b613a2a6020830185612fb6565b612b156040830184612fb6565b60a08101613a458287612e2e565b613a5260208301866130a4565b8181036040830152613a6381613277565b90508181036060830152613a778185612fd0565b9050611a236080830184612fb6565b60808101613a948287612e2e565b613aa16020830186612fb6565b613aae6040830185612fad565b611a2360608301846139a8565b60a08101613ac98288612e2e565b613ad66020830187612fb6565b8181036040830152613ae88186612fd0565b90508181036060830152613afc8185612fd0565b9050613b0b6080830184612fb6565b9695505050505050565b60a08101613b238288612e2e565b613b306020830187612fb6565b8181036040830152613b428186613008565b90508181036060830152613b568185613008565b9050613b0b608083018461398d565b60608101613b738286612e2e565b613b80602083018561397b565b612b15604083018461398d565b60808082528101613b9e8187612e37565b90508181036020830152613bb28186612f5f565b90508181036040830152613bc68185612efe565b90508181036060830152613b0b8184612e90565b60208101611d518284612fb6565b60808101613bf68287612fb6565b613c036020830186612fb6565b613c106040830185612fb6565b611a236060830184612e2e565b60608101613c2b8286612fb6565b613c386020830185612fb6565b612b156040830184612fad565b60808101613c538287612fb6565b613c60602083018661399f565b613c6d6040830185612fb6565b611a236060830184612fb6565b60208101611d518284613092565b60208101611d51828461309b565b6020808252810161224c8184612fd0565b60208082528101611d51816130ad565b60208082528101611d518161310c565b60208082528101611d5181613178565b60208082528101611d5181613203565b60208082528101611d51816132b0565b60208082528101611d51816132fb565b60208082528101611d518161334a565b60208082528101611d51816133cf565b60208082528101611d5181613441565b60208082528101611d518161348b565b60208082528101611d518161356c565b60208082528101611d51816135d8565b60208082528101611d5181613628565b60208082528101611d5181613694565b60208082528101611d51816136e2565b60208082528101611d5181613741565b60208082528101611d5181613792565b60208082528101611d5181613817565b60208082528101611d518161386f565b60208082528101611d51816138bb565b60208082528101611d51816138ec565b60608101611d518284613944565b6101208101613e14828c612fb6565b613e21602083018b612e1f565b8181036040830152613e33818a612e37565b90508181036060830152613e478189612f5f565b90508181036080830152613e5b8188612efe565b905081810360a0830152613e6f8187612e90565b9050613e7e60c0830186612fb6565b613e8b60e0830185612fb6565b818103610100830152613e9e8184612fd0565b9b9a5050505050505050505050565b60408101613ebb8285612fb6565b61224c6020830184612fb6565b6101808101613ed7828f612fb6565b613ee4602083018e613984565b613ef1604083018d613984565b613efe606083018c6139b1565b613f0b608083018b6139b1565b613f1860a083018a6139b1565b613f2560c08301896139b1565b613f3260e0830188613996565b613f40610100830187613996565b613f4e610120830186612fad565b613f5c610140830185612fad565b613f6a610160830184612e2e565b9d9c50505050505050505050505050565b60408101613ebb8285613984565b60208101611d5182846139b1565b6040518181016001600160401b0381118282101715613fb557600080fd5b604052919050565b60006001600160401b03821115613fd357600080fd5b5060209081020190565b60006001600160401b03821115613ff357600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b6000611d518261403d565b151590565b80610d31816140fb565b6001600160a01b031690565b63ffffffff1690565b6001600160401b031690565b60ff1690565b6001600160601b031690565b6000611d51825b6000611d5182614023565b6000611d5182614033565b6000611d51826105f1565b6000611d5182614049565b6000611d5182614052565b6000611d5182614064565b82818337506000910152565b60005b838110156140e05781810151838201526020016140c8565b8381111561138a5750506000910152565b601f01601f191690565b6008811061282157fe5b61410e81614023565b811461282157600080fd5b61410e8161402e565b61410e816105f1565b61410e8161405e565b61410e8161406456fe476f7665726e6f72416c7068613a3a70726f706f73653a206f766572666c6f77206f6e2071756f72756d20636f6d7075746174696f6e476f7665726e6f72416c7068613a3a2073746174653a20746f74616c566f746573202a206d616a6f7269747950657263656e74616765203e2075696e743936476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465206f766572666c6f77476f7665726e6f72416c7068613a3a70726f706f73653a20656e6420626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a71756f72756d566f7465733a20626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a71756f72756d566f7465733a6d756c7469706c69636174696f6e206f766572666c6f77476f7665726e6f72416c7068613a3a71756575653a20455441206f766572666c6f77476f7665726e6f72416c7068613a3a2073746174653a20666f72566f746573202b20616761696e7374566f746573203e2075696e743936476f7665726e6f72416c7068613a3a70726f706f73653a206f766572666c6f77206f6e206d616a6f7269747950657263656e7461676520636f6d7075746174696f6e476f7665726e6f72416c7068613a3a2073746174653a206469766973696f6e206572726f72476f7665726e6f72416c7068613a3a70726f706f73653a20737461727420626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a70726f706f73616c5468726573686f6c643a20626c6f636b206e756d626572206f766572666c6f77476f7665726e6f72416c7068613a3a70726f706f73653a20737461727454696d65206f766572666c6f77a365627a7a72315820333ef6eb07662bd3f244257b662315ceb039aada4e88a21b510aeefdc524bfce6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x760FBC13 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xD33219B4 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xDEAAA7CC GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xDEAAA7CC EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0xE23A9A52 EQ PUSH2 0x4F9 JUMPI DUP1 PUSH4 0xE2653790 EQ PUSH2 0x526 JUMPI DUP1 PUSH4 0xFE0D94C1 EQ PUSH2 0x53B JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0xD33219B4 EQ PUSH2 0x47A JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0x48F JUMPI DUP1 PUSH4 0xDA95691A EQ PUSH2 0x4A4 JUMPI DUP1 PUSH4 0xDDF0B009 EQ PUSH2 0x4C4 JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0xA3F4DF7E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA3F4DF7E EQ PUSH2 0x419 JUMPI DUP1 PUSH4 0xB2B0D91F EQ PUSH2 0x43B JUMPI DUP1 PUSH4 0xB58131B0 EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0xB9A61961 EQ PUSH2 0x465 JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0x760FBC13 EQ PUSH2 0x3E4 JUMPI DUP1 PUSH4 0x7BDBE4D0 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x91500671 EQ PUSH2 0x3F9 JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0x328DD982 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0x452A9320 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x452A9320 EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0x4634C61F EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0x4B9C9A27 EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x3C2 JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0x328DD982 EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x3932ABB1 EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x3E4F49E6 EQ PUSH2 0x313 JUMPI DUP1 PUSH4 0x40E58EE5 EQ PUSH2 0x340 JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0x17977C61 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x17977C61 EQ PUSH2 0x257 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x21F43E42 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x24BC1A64 EQ PUSH2 0x2AC JUMPI PUSH2 0x1CD JUMP JUMPDEST DUP1 PUSH4 0x13CF08B EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x2A251A3 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x15373E3D EQ PUSH2 0x235 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2CEF JUMP JUMPDEST PUSH2 0x54E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x5EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3BDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D3D JUMP JUMPDEST PUSH2 0x5F4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x272 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF7 JUMP JUMPDEST PUSH2 0x603 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x615 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1D JUMP JUMPDEST PUSH2 0x62C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C1 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3F89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CEF JUMP JUMPDEST PUSH2 0x81A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3B8D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0xAA9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x333 PUSH2 0x32E CALLDATASIZE PUSH1 0x4 PUSH2 0x2CEF JUMP JUMPDEST PUSH2 0xAAE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3C88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x35B CALLDATASIZE PUSH1 0x4 PUSH2 0x2CEF JUMP JUMPDEST PUSH2 0xD36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0xF0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3A01 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x39D CALLDATASIZE PUSH1 0x4 PUSH2 0x2D6D JUMP JUMPDEST PUSH2 0xF1D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2C3E JUMP JUMPDEST PUSH2 0x10B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D7 PUSH2 0x10DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3C7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x10ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x414 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1D JUMP JUMPDEST PUSH2 0x1129 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x42E PUSH2 0x11FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3C96 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C1 PUSH2 0x122F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C1 PUSH2 0x123E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x130B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D7 PUSH2 0x1390 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x139F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x4BF CALLDATASIZE PUSH1 0x4 PUSH2 0x2B57 JUMP JUMPDEST PUSH2 0x13A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x255 PUSH2 0x4DF CALLDATASIZE PUSH1 0x4 PUSH2 0x2CEF JUMP JUMPDEST PUSH2 0x1A2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x1CDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x519 PUSH2 0x514 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D0D JUMP JUMPDEST PUSH2 0x1CE8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x3DF7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x532 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C1 PUSH2 0x1D57 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x549 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CEF JUMP JUMPDEST PUSH2 0x1D6D JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP3 PUSH4 0xFFFFFFFF DUP1 DUP4 AND SWAP4 PUSH5 0x100000000 DUP5 DIV SWAP1 SWAP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP1 DUP4 DIV DUP3 AND SWAP5 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV DUP3 AND SWAP4 DUP4 DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x60 SHL DUP2 DIV SWAP1 SWAP4 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP3 SWAP1 DUP3 AND SWAP2 PUSH1 0xFF SWAP2 DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x48 SHL DUP3 DIV AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x50 SHL SWAP1 SWAP2 DIV AND DUP13 JUMP JUMPDEST PUSH1 0xA JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5FF CALLER DUP4 DUP4 PUSH2 0x1F4F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x621 SWAP1 PUSH2 0x39EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x65F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3CD7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x825F38F SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x689 SWAP1 DUP8 SWAP1 PUSH1 0x20 ADD PUSH2 0x3A01 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6B8 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3A37 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x70E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2CBB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2522D7BA PUSH2 0x75F PUSH1 0x1 NUMBER SUB PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x420B PUSH1 0x31 SWAP2 CODECOPY PUSH2 0x21BA JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x77D SWAP3 SWAP2 SWAP1 PUSH2 0x3F7B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x795 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x7CD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DD5 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x32 DUP1 DUP3 MSTORE SWAP3 SWAP4 POP PUSH1 0x64 SWAP3 PUSH2 0x803 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP6 SWAP2 PUSH2 0x423C PUSH1 0x20 DUP4 ADD CODECOPY PUSH2 0x21EA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x813 JUMPI INVALID JUMPDEST DIV SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x4 ADD DUP2 PUSH1 0x5 ADD DUP3 PUSH1 0x6 ADD DUP4 PUSH1 0x7 ADD DUP4 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x89C JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x87E JUMPI JUMPDEST POP POP POP POP POP SWAP4 POP DUP3 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x8EE JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x8DA JUMPI JUMPDEST POP POP POP POP POP SWAP3 POP DUP2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x9C1 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x9AD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x982 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x9AD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x990 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x916 JUMP JUMPDEST POP POP POP POP SWAP2 POP DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0xA93 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA7F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA54 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA7F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA62 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x9E8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0xAC2 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0xADE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xB0A JUMPI PUSH1 0x2 SWAP2 POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH4 0xFFFFFFFF AND NUMBER GT PUSH2 0xB25 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND NUMBER GT PUSH2 0xB48 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x37 DUP1 DUP3 MSTORE PUSH1 0x0 SWAP3 PUSH2 0xB8D SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x40 SHL DUP4 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP4 DIV AND SWAP2 PUSH2 0x4290 PUSH1 0x20 DUP4 ADD CODECOPY PUSH2 0x2253 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBB5 DUP3 PUSH1 0x64 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4309 PUSH1 0x25 SWAP2 CODECOPY PUSH2 0x2286 JUMP JUMPDEST SWAP1 POP PUSH2 0xBEF DUP2 PUSH1 0x4 PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4174 PUSH1 0x3F SWAP2 CODECOPY PUSH2 0x21EA JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP4 AND PUSH1 0x1 PUSH1 0x40 SHL SWAP1 SWAP3 DIV AND GT ISZERO DUP1 PUSH2 0xC28 JUMPI POP PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND LT JUMPDEST ISZERO PUSH2 0xC39 JUMPI PUSH1 0x3 SWAP4 POP POP POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xC5E JUMPI PUSH1 0x4 SWAP4 POP POP POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x48 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC7E JUMPI PUSH1 0x7 SWAP4 POP POP POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x60D143F1 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH2 0xD17 SWAP4 PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xC1A287E2 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD12 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C9D JUMP JUMPDEST PUSH2 0x22D8 JUMP JUMPDEST TIMESTAMP LT PUSH2 0xD29 JUMPI PUSH1 0x6 SWAP4 POP POP POP POP PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x5 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD41 DUP3 PUSH2 0xAAE JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0xD51 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xD6F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3DB7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xDA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D57 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH9 0xFF0000000000000000 NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR SWAP1 SSTORE PUSH1 0x0 JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0xED1 JUMPI PUSH1 0x0 SLOAD PUSH1 0x4 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x591FCDFE SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0xDF6 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0xE1E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x6 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xE38 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP7 PUSH1 0x7 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0xE51 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE93 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3B15 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEC1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0xDC4 SWAP1 POP JUMP JUMPDEST POP PUSH32 0x789CF55BE980739DAD1D0699B93B58E806B51C9D96619BFA8FE0A28ABAA7B30C DUP4 PUSH1 0x40 MLOAD PUSH2 0xF01 SWAP2 SWAP1 PUSH2 0x3BDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xF2B SWAP1 PUSH2 0x39EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x15 DUP3 MSTORE PUSH21 0x536F7672796E20476F7665726E6F7220416C706861 PUSH1 0x58 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xDDF6FBF241D6C602C276B8332AECAC376FF7E0EF2276D109C25930E6911CA2BD PUSH2 0xF8A PUSH2 0x22FD JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF9E SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3BE8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xFC4 SWAP1 PUSH2 0x39F6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 PUSH2 0xFDD SWAP2 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x20 ADD PUSH2 0x3C1D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x100A SWAP3 SWAP2 SWAP1 PUSH2 0x39BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP3 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x1047 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3C45 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1069 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH2 0x107E DUP2 PUSH2 0x2301 JUMP JUMPDEST PUSH2 0x109A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D97 JUMP JUMPDEST PUSH2 0x10A5 DUP2 DUP11 DUP11 PUSH2 0x1F4F JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x70E JUMPI PUSH2 0x10D6 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x10CA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1A2C JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x10B3 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1117 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3DE7 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1153 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D17 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x3A66F901 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x117D SWAP1 DUP8 SWAP1 PUSH1 0x20 ADD PUSH2 0x3A01 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11AC SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3A37 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x70E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x536F7672796E20476F7665726E6F7220416C706861 PUSH1 0x58 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2522D7BA PUSH2 0x128A PUSH1 0x1 NUMBER SUB PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4361 PUSH1 0x37 SWAP2 CODECOPY PUSH2 0x21BA JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12A8 SWAP3 SWAP2 SWAP1 PUSH2 0x3F7B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x12F8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DD5 JUMP JUMPDEST SWAP1 POP PUSH1 0x64 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND PUSH2 0x813 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1335 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3CA7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE18B681 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xE18B681 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x138A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13B0 PUSH2 0x123E JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x836EEBEE SWAP1 CALLER SWAP1 PUSH2 0x13DF SWAP1 NUMBER SWAP1 PUSH2 0x233A JUMP JUMPDEST TIMESTAMP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13FE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3A0F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x142A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x144E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DD5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x1474 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D87 JUMP JUMPDEST DUP6 MLOAD DUP8 MLOAD EQ DUP1 ISZERO PUSH2 0x1486 JUMPI POP DUP5 MLOAD DUP8 MLOAD EQ JUMPDEST DUP1 ISZERO PUSH2 0x1493 JUMPI POP DUP4 MLOAD DUP8 MLOAD EQ JUMPDEST PUSH2 0x14AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D47 JUMP JUMPDEST DUP7 MLOAD PUSH2 0x14CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST PUSH2 0x14D5 PUSH2 0x5EE JUMP JUMPDEST DUP8 MLOAD GT ISZERO PUSH2 0x14F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D27 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1572 JUMPI PUSH1 0x0 PUSH2 0x1516 DUP3 PUSH2 0xAAE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1526 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1544 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3DA7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1552 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D07 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x1580 NUMBER PUSH2 0xD12 PUSH2 0xAA9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1590 DUP3 PUSH2 0xD12 PUSH2 0x5EE JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE SWAP1 POP PUSH2 0x15A3 PUSH2 0x24E8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x200 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15D9 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x432E PUSH1 0x33 SWAP2 CODECOPY PUSH2 0x21BA JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1606 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x41DA PUSH1 0x31 SWAP2 CODECOPY PUSH2 0x21BA JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1669 PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x413E PUSH1 0x36 SWAP2 CODECOPY PUSH2 0x21EA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16AF PUSH1 0x4 PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x42C7 PUSH1 0x42 SWAP2 CODECOPY PUSH2 0x21EA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16EF TIMESTAMP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4398 PUSH1 0x2A SWAP2 CODECOPY PUSH2 0x2362 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE POP SWAP1 POP DUP1 PUSH1 0x5 PUSH1 0x0 DUP4 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x4 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x120 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x140 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x9 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x160 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0xA PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x180 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1942 SWAP3 SWAP2 SWAP1 PUSH2 0x256E JUMP JUMPDEST POP PUSH2 0x1A0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x195F SWAP2 PUSH1 0x5 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x25D3 JUMP JUMPDEST POP PUSH2 0x1C0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x197C SWAP2 PUSH1 0x6 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x261A JUMP JUMPDEST POP PUSH2 0x1E0 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x1999 SWAP2 PUSH1 0x7 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2673 JUMP JUMPDEST POP SWAP1 POP POP DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x6 PUSH1 0x0 DUP4 PUSH2 0x160 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x7D84A6263AE0D98D3329BD7B46BB4E8D6F98CD35A7ADB45C274C8B7FD5EBD5E0 DUP2 PUSH1 0x0 ADD MLOAD CALLER DUP14 DUP14 DUP14 DUP14 DUP10 DUP10 DUP16 PUSH1 0x40 MLOAD PUSH2 0x1A13 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3E05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 MLOAD SWAP5 POP POP POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH2 0x1A37 DUP3 PUSH2 0xAAE JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1A42 JUMPI INVALID JUMPDEST EQ PUSH2 0x1A5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3CB7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SLOAD DUP3 MLOAD PUSH4 0xD48571F PUSH1 0xE3 SHL DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP5 SWAP4 PUSH2 0x1AB8 SWAP4 TIMESTAMP SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH4 0x6A42B8F8 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x4 DUP4 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1C60 JUMPI PUSH2 0x1C58 DUP4 PUSH1 0x4 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1ADB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP5 SWAP1 DUP2 LT PUSH2 0x1B03 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x6 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1B1D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1BAB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1B80 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1BAB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B8E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH1 0x7 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1BBF JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1C4D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1C22 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1C4D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1C30 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP7 PUSH2 0x2389 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1ABD JUMP JUMPDEST POP PUSH2 0x1C83 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x426E PUSH1 0x22 SWAP2 CODECOPY PUSH2 0x2362 JUMP JUMPDEST DUP3 PUSH1 0x2 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH32 0x9A2E42FD6722813D69113E7D0079D3D940171428DF7373DF9C7F7617CFDA2892 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0xF01 SWAP3 SWAP2 SWAP1 PUSH2 0x3EAD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x621 SWAP1 PUSH2 0x39F6 JUMP JUMPDEST PUSH2 0x1CF0 PUSH2 0x26CC JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE PUSH1 0x8 ADD DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x1D78 DUP3 PUSH2 0xAAE JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1D83 JUMPI INVALID JUMPDEST EQ PUSH2 0x1DA0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3CC7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH10 0xFF000000000000000000 NOT AND PUSH1 0x1 PUSH1 0x48 SHL OR SWAP1 SSTORE SWAP1 JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1F13 JUMPI PUSH1 0x0 SLOAD PUSH1 0x5 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x825F38F SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x1DFD JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP5 PUSH1 0x4 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1E17 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x5 DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP7 SWAP1 DUP2 LT PUSH2 0x1E3F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP7 PUSH1 0x6 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1E59 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP8 PUSH1 0x7 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1E72 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP9 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EB4 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3B15 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ECD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1F0A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2CBB JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1DCB JUMP JUMPDEST POP PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F DUP3 PUSH1 0x40 MLOAD PUSH2 0x1F43 SWAP2 SWAP1 PUSH2 0x3BDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1F5A DUP4 PUSH2 0xAAE JUMP JUMPDEST PUSH1 0x7 DUP2 GT ISZERO PUSH2 0x1F65 JUMPI INVALID JUMPDEST EQ PUSH2 0x1F82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3DC7 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE PUSH1 0x8 DUP2 ADD SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1FCB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3CF7 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD SWAP1 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x41B775F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 PUSH4 0x836EEBEE SWAP3 PUSH2 0x2017 SWAP3 DUP12 SWAP3 PUSH4 0xFFFFFFFF AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x3B65 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x202F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2043 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2067 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DD5 JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x20D6 JUMPI PUSH2 0x20A9 DUP4 PUSH1 0x1 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x41B3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2253 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x2139 JUMP JUMPDEST PUSH2 0x2110 DUP4 PUSH1 0x1 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x41B3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x2253 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0xFF NOT SWAP1 SWAP2 AND OR PUSH2 0xFF00 NOT AND PUSH2 0x100 DUP6 ISZERO ISZERO MUL OR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP4 AND MUL OR DUP3 SSTORE PUSH1 0x40 MLOAD PUSH32 0x877856338E13F63D0C36822FF0EF736B80934CD90574A3A5BC9262C39D217C46 SWAP1 PUSH2 0x21AA SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP7 SWAP1 PUSH2 0x3A86 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH5 0x100000000 DUP5 LT PUSH2 0x21E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP2 SWAP1 PUSH2 0x3C96 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x2202 JUMPI POP PUSH1 0x0 PUSH2 0x224C JUMP JUMPDEST DUP4 DUP4 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP6 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP4 AND DUP2 PUSH2 0x221E JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND EQ DUP4 SWAP1 PUSH2 0x2248 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP2 SWAP1 PUSH2 0x3C96 JUMP JUMPDEST POP SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x2248 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP2 SWAP1 PUSH2 0x3C96 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x22B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP2 SWAP1 PUSH2 0x3C96 JUMP JUMPDEST POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x22CE JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x224C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D37 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x1D51 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x235C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3DD7 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x40 SHL DUP5 LT PUSH2 0x21E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP2 SWAP1 PUSH2 0x3C96 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2B06537 SWAP1 PUSH2 0x23B7 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x20 ADD PUSH2 0x3ABB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E9 SWAP2 SWAP1 PUSH2 0x3BDA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2415 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2439 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C7F JUMP JUMPDEST ISZERO PUSH2 0x2456 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x656 SWAP1 PUSH2 0x3D67 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3A66F901 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x3A66F901 SWAP1 PUSH2 0x248E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3ABB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x24E0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C9D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x200 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x160 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0x180 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1A0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1C0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x1E0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x25C3 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x25C3 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x258E JUMP JUMPDEST POP PUSH2 0x25CF SWAP3 SWAP2 POP PUSH2 0x26EC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x260E JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x260E JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25F3 JUMP JUMPDEST POP PUSH2 0x25CF SWAP3 SWAP2 POP PUSH2 0x2710 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x2667 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2667 JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x2657 SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x272A JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x263A JUMP JUMPDEST POP PUSH2 0x25CF SWAP3 SWAP2 POP PUSH2 0x2797 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x26C0 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x26C0 JUMPI DUP3 MLOAD DUP1 MLOAD PUSH2 0x26B0 SWAP2 DUP5 SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x272A JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2693 JUMP JUMPDEST POP PUSH2 0x25CF SWAP3 SWAP2 POP PUSH2 0x27BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x5F1 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25CF JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x26F2 JUMP JUMPDEST PUSH2 0x5F1 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25CF JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2716 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x276B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x260E JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x260E JUMPI SWAP2 DUP3 ADD DUP3 DUP2 GT ISZERO PUSH2 0x260E JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x5F1 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25CF JUMPI PUSH1 0x0 PUSH2 0x27B1 DUP3 DUP3 PUSH2 0x27DD JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x279D JUMP JUMPDEST PUSH2 0x5F1 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25CF JUMPI PUSH1 0x0 PUSH2 0x27D4 DUP3 DUP3 PUSH2 0x27DD JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x27C0 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x2803 JUMPI POP PUSH2 0x2821 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2821 SWAP2 SWAP1 PUSH2 0x2710 JUMP JUMPDEST POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D51 DUP2 PUSH2 0x4105 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2853 PUSH2 0x284E DUP3 PUSH2 0x3FBD JUMP JUMPDEST PUSH2 0x3F97 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x2878 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28A4 JUMPI DUP2 PUSH2 0x288E DUP9 DUP3 PUSH2 0x2824 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x287B JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x28CD PUSH2 0x284E DUP3 PUSH2 0x3FBD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28A4 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x28F5 DUP9 DUP3 PUSH2 0x2A4C JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x28DF JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x291C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x292A PUSH2 0x284E DUP3 PUSH2 0x3FBD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28A4 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x2952 DUP9 DUP3 PUSH2 0x2A4C JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x293C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x297A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x29A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29CF PUSH2 0x284E DUP3 PUSH2 0x3FBD JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x29F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28A4 JUMPI DUP2 PUSH2 0x2A0A DUP9 DUP3 PUSH2 0x2A36 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x29F7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D51 DUP2 PUSH2 0x4119 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1D51 DUP2 PUSH2 0x4119 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D51 DUP2 PUSH2 0x4122 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1D51 DUP2 PUSH2 0x4122 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2A5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2A6B PUSH2 0x284E DUP3 PUSH2 0x3FDD JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x2A87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A92 DUP4 DUP3 DUP5 PUSH2 0x40B9 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2AAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2ABA PUSH2 0x284E DUP3 PUSH2 0x3FDD JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x2AD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A92 DUP4 DUP3 DUP5 PUSH2 0x40C5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1D51 DUP2 PUSH2 0x412B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1D51 DUP2 PUSH2 0x4134 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B15 DUP5 DUP5 PUSH2 0x2824 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B3C DUP6 DUP6 PUSH2 0x2824 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2B4D DUP6 DUP3 DUP7 ADD PUSH2 0x2A36 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2B6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B91 DUP9 DUP3 DUP10 ADD PUSH2 0x282F JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BB9 DUP9 DUP3 DUP10 ADD PUSH2 0x29B0 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BE1 DUP9 DUP3 DUP10 ADD PUSH2 0x290B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C09 DUP9 DUP3 DUP10 ADD PUSH2 0x28AE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C31 DUP9 DUP3 DUP10 ADD PUSH2 0x2A4C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C73 DUP6 DUP3 DUP7 ADD PUSH2 0x2968 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B15 DUP5 DUP5 PUSH2 0x2A2B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B15 DUP5 DUP5 PUSH2 0x2A41 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B15 DUP5 DUP3 DUP6 ADD PUSH2 0x2A9B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B15 DUP5 DUP5 PUSH2 0x2A36 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D2C DUP6 DUP6 PUSH2 0x2A36 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2B4D DUP6 DUP3 DUP7 ADD PUSH2 0x2824 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D5C DUP6 DUP6 PUSH2 0x2A36 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2B4D DUP6 DUP3 DUP7 ADD PUSH2 0x2A20 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2D85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D91 DUP9 DUP9 PUSH2 0x2A36 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x2DA2 DUP9 DUP3 DUP10 ADD PUSH2 0x2A20 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x2DB3 DUP9 DUP3 DUP10 ADD PUSH2 0x2AE1 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x2DC4 DUP9 DUP3 DUP10 ADD PUSH2 0x2A36 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x2C31 DUP9 DUP3 DUP10 ADD PUSH2 0x2A36 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B15 DUP5 DUP5 PUSH2 0x2AEC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DFF DUP4 DUP4 PUSH2 0x2E2E JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x224C DUP4 DUP4 PUSH2 0x2FD0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DFF DUP4 DUP4 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4070 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4023 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E42 DUP3 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x2E4C DUP2 DUP6 PUSH2 0x401A JUMP JUMPDEST SWAP4 POP PUSH2 0x2E57 DUP4 PUSH2 0x4004 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E85 JUMPI DUP2 MLOAD PUSH2 0x2E6F DUP9 DUP3 PUSH2 0x2DF3 JUMP JUMPDEST SWAP8 POP PUSH2 0x2E7A DUP4 PUSH2 0x4004 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2E5B JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E9B DUP3 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x2EA5 DUP2 DUP6 PUSH2 0x401A JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2EB7 DUP6 PUSH2 0x4004 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2EF1 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x2ED4 DUP6 DUP3 PUSH2 0x2E07 JUMP JUMPDEST SWAP5 POP PUSH2 0x2EDF DUP4 PUSH2 0x4004 JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2EBB JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F09 DUP3 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x2F13 DUP2 DUP6 PUSH2 0x401A JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2F25 DUP6 PUSH2 0x4004 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2EF1 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x2F42 DUP6 DUP3 PUSH2 0x2E07 JUMP JUMPDEST SWAP5 POP PUSH2 0x2F4D DUP4 PUSH2 0x4004 JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F6A DUP3 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x2F74 DUP2 DUP6 PUSH2 0x401A JUMP JUMPDEST SWAP4 POP PUSH2 0x2F7F DUP4 PUSH2 0x4004 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E85 JUMPI DUP2 MLOAD PUSH2 0x2F97 DUP9 DUP3 PUSH2 0x2E13 JUMP JUMPDEST SWAP8 POP PUSH2 0x2FA2 DUP4 PUSH2 0x4004 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2F83 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x402E JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x5F1 JUMP JUMPDEST PUSH2 0x2E28 PUSH2 0x2FCB DUP3 PUSH2 0x5F1 JUMP JUMPDEST PUSH2 0x5F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FDB DUP3 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x2FE5 DUP2 DUP6 PUSH2 0x401A JUMP JUMPDEST SWAP4 POP PUSH2 0x2FF5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x40C5 JUMP JUMPDEST PUSH2 0x2FFE DUP2 PUSH2 0x40F1 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 DUP2 AND PUSH1 0x0 DUP2 EQ PUSH2 0x3025 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x304B JUMPI PUSH2 0x308A JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP4 DIV AND PUSH2 0x3036 DUP2 DUP8 PUSH2 0x401A JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP2 MSTORE SWAP6 POP POP PUSH1 0x20 DUP6 ADD SWAP3 POP PUSH2 0x308A JUMP JUMPDEST PUSH1 0x2 DUP3 DIV PUSH2 0x3059 DUP2 DUP8 PUSH2 0x401A JUMP JUMPDEST SWAP6 POP PUSH2 0x3064 DUP6 PUSH2 0x400A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3083 JUMPI DUP2 SLOAD DUP9 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3067 JUMP JUMPDEST DUP8 ADD SWAP5 POP POP POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4077 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4082 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x408D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30BA PUSH1 0x39 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F61636365707441646D696E3A207365 DUP2 MSTORE PUSH32 0x6E646572206D75737420626520676F7620677561726469616E00000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3119 PUSH1 0x44 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A71756575653A2070726F706F73616C2063 DUP2 MSTORE PUSH32 0x616E206F6E6C7920626520717565756564206966206974206973207375636365 PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x19591959 PUSH1 0xE2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3185 PUSH1 0x45 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A657865637574653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2063616E206F6E6C792062652065786563757465642069662069742069732071 PUSH1 0x20 DUP3 ADD MSTORE PUSH5 0x1D595D5959 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31F2 PUSH1 0x2 DUP4 PUSH2 0xD31 JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3210 PUSH1 0x4C DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F6578656375746553657454696D656C DUP2 MSTORE PUSH32 0x6F636B50656E64696E6741646D696E3A2073656E646572206D75737420626520 PUSH1 0x20 DUP3 ADD MSTORE PUSH12 0x33B7BB1033BAB0B93234B0B7 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3284 PUSH1 0x18 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x73657450656E64696E6741646D696E2861646472657373290000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32BD PUSH1 0x29 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A73746174653A20696E76616C6964207072 DUP2 MSTORE PUSH9 0x1BDC1BDCD85B081A59 PUSH1 0xBA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3308 PUSH1 0x2D DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74657220 DUP2 MSTORE PUSH13 0x185B1C9958591E481D9BDD1959 PUSH1 0x9A SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3357 PUSH1 0x59 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C72656164792070656E64696E672070726F706F73616C00000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33DC PUSH1 0x4A DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F717565756553657454696D656C6F63 DUP2 MSTORE PUSH32 0x6B50656E64696E6741646D696E3A2073656E646572206D75737420626520676F PUSH1 0x20 DUP3 ADD MSTORE PUSH10 0x3B1033BAB0B93234B0B7 PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x344E PUSH1 0x28 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A20746F6F206D616E79 DUP2 MSTORE PUSH8 0x20616374696F6E73 PUSH1 0xC0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3498 PUSH1 0x11 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34C5 PUSH1 0x43 DUP4 PUSH2 0xD31 JUMP JUMPDEST PUSH32 0x454950373132446F6D61696E28737472696E67206E616D652C75696E74323536 DUP2 MSTORE PUSH32 0x20636861696E49642C6164647265737320766572696679696E67436F6E747261 PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x637429 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x43 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3530 PUSH1 0x27 DUP4 PUSH2 0xD31 JUMP JUMPDEST PUSH32 0x42616C6C6F742875696E743235362070726F706F73616C49642C626F6F6C2073 DUP2 MSTORE PUSH7 0x7570706F727429 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x27 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3579 PUSH1 0x44 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F73616C DUP2 MSTORE PUSH32 0x2066756E6374696F6E20696E666F726D6174696F6E206172697479206D69736D PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0xC2E8C6D PUSH1 0xE3 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35E5 PUSH1 0x2E DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2073656E646572206973 DUP2 MSTORE PUSH14 0x3713BA10309033BAB0B93234B0B7 PUSH1 0x91 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3635 PUSH1 0x44 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F71756575654F725265766572743A2070 DUP2 MSTORE PUSH32 0x726F706F73616C20616374696F6E20616C726561647920717565756564206174 PUSH1 0x20 DUP3 ADD MSTORE PUSH4 0x20657461 PUSH1 0xE0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36A1 PUSH1 0x2C DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206D7573742070726F DUP2 MSTORE PUSH12 0x7669646520616374696F6E73 PUSH1 0xA0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36EF PUSH1 0x3F DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A2070726F706F736572 DUP2 MSTORE PUSH32 0x20766F7465732062656C6F772070726F706F73616C207468726573686F6C6400 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x374E PUSH1 0x2F DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63617374566F746542795369673A20696E DUP2 MSTORE PUSH15 0x76616C6964207369676E6174757265 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x379F PUSH1 0x58 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A70726F706F73653A206F6E65206C697665 DUP2 MSTORE PUSH32 0x2070726F706F73616C207065722070726F706F7365722C20666F756E6420616E PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20616C7265616479206163746976652070726F706F73616C0000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3824 PUSH1 0x36 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A63616E63656C3A2063616E6E6F74206361 DUP2 MSTORE PUSH22 0x1B98D95B08195E1958DD5D1959081C1C9BDC1BDCD85B PUSH1 0x52 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x387C PUSH1 0x2A DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F63617374566F74653A20766F74696E67 DUP2 MSTORE PUSH10 0x81A5CC818DB1BDCD959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38C8 PUSH1 0x15 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH21 0x7375627472616374696F6E20756E646572666C6F77 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38F9 PUSH1 0x36 DUP4 PUSH2 0x401A JUMP JUMPDEST PUSH32 0x476F7665726E6F72416C7068613A3A5F5F61626469636174653A2073656E6465 DUP2 MSTORE PUSH22 0x391036BAB9BA1031329033B7BB1033BAB0B93234B0B7 PUSH1 0x51 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x3955 DUP5 DUP3 PUSH2 0x2FAD JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x3968 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2FAD JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x138A PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x39B1 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4098 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4049 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x40A3 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4052 JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x405E JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x40AE JUMP JUMPDEST PUSH2 0x2E28 DUP2 PUSH2 0x4064 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C5 DUP3 PUSH2 0x31E5 JUMP JUMPDEST SWAP2 POP PUSH2 0x39D1 DUP3 DUP6 PUSH2 0x2FBF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x39E1 DUP3 DUP5 PUSH2 0x2FBF JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x34B8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x3523 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D51 DUP3 DUP5 PUSH2 0x2E2E JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3A1D DUP3 DUP7 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x3A2A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x2B15 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2FB6 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3A45 DUP3 DUP8 PUSH2 0x2E2E JUMP JUMPDEST PUSH2 0x3A52 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x30A4 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3A63 DUP2 PUSH2 0x3277 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3A77 DUP2 DUP6 PUSH2 0x2FD0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A23 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2FB6 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3A94 DUP3 DUP8 PUSH2 0x2E2E JUMP JUMPDEST PUSH2 0x3AA1 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3AAE PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2FAD JUMP JUMPDEST PUSH2 0x1A23 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x39A8 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3AC9 DUP3 DUP9 PUSH2 0x2E2E JUMP JUMPDEST PUSH2 0x3AD6 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2FB6 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3AE8 DUP2 DUP7 PUSH2 0x2FD0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3AFC DUP2 DUP6 PUSH2 0x2FD0 JUMP JUMPDEST SWAP1 POP PUSH2 0x3B0B PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2FB6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x3B23 DUP3 DUP9 PUSH2 0x2E2E JUMP JUMPDEST PUSH2 0x3B30 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2FB6 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3B42 DUP2 DUP7 PUSH2 0x3008 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3B56 DUP2 DUP6 PUSH2 0x3008 JUMP JUMPDEST SWAP1 POP PUSH2 0x3B0B PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x398D JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3B73 DUP3 DUP7 PUSH2 0x2E2E JUMP JUMPDEST PUSH2 0x3B80 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x397B JUMP JUMPDEST PUSH2 0x2B15 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x398D JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3B9E DUP2 DUP8 PUSH2 0x2E37 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3BB2 DUP2 DUP7 PUSH2 0x2F5F JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3BC6 DUP2 DUP6 PUSH2 0x2EFE JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3B0B DUP2 DUP5 PUSH2 0x2E90 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D51 DUP3 DUP5 PUSH2 0x2FB6 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3BF6 DUP3 DUP8 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3C03 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3C10 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x1A23 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2E2E JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3C2B DUP3 DUP7 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3C38 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x2B15 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2FAD JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x3C53 DUP3 DUP8 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3C60 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x399F JUMP JUMPDEST PUSH2 0x3C6D PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x1A23 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2FB6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D51 DUP3 DUP5 PUSH2 0x3092 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D51 DUP3 DUP5 PUSH2 0x309B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x224C DUP2 DUP5 PUSH2 0x2FD0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x30AD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x310C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3178 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3203 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x32B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x32FB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x334A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x33CF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3441 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x348B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x356C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x35D8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3628 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3694 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x36E2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3741 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3792 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x3817 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x386F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x38BB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1D51 DUP2 PUSH2 0x38EC JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1D51 DUP3 DUP5 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x3E14 DUP3 DUP13 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3E21 PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x2E1F JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3E33 DUP2 DUP11 PUSH2 0x2E37 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3E47 DUP2 DUP10 PUSH2 0x2F5F JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x3E5B DUP2 DUP9 PUSH2 0x2EFE JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x3E6F DUP2 DUP8 PUSH2 0x2E90 JUMP JUMPDEST SWAP1 POP PUSH2 0x3E7E PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3E8B PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x2FB6 JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x3E9E DUP2 DUP5 PUSH2 0x2FD0 JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3EBB DUP3 DUP6 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x224C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x3ED7 DUP3 DUP16 PUSH2 0x2FB6 JUMP JUMPDEST PUSH2 0x3EE4 PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x3984 JUMP JUMPDEST PUSH2 0x3EF1 PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x3984 JUMP JUMPDEST PUSH2 0x3EFE PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x39B1 JUMP JUMPDEST PUSH2 0x3F0B PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x39B1 JUMP JUMPDEST PUSH2 0x3F18 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x39B1 JUMP JUMPDEST PUSH2 0x3F25 PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x39B1 JUMP JUMPDEST PUSH2 0x3F32 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x3996 JUMP JUMPDEST PUSH2 0x3F40 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x3996 JUMP JUMPDEST PUSH2 0x3F4E PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x2FAD JUMP JUMPDEST PUSH2 0x3F5C PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x2FAD JUMP JUMPDEST PUSH2 0x3F6A PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x2E2E JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3EBB DUP3 DUP6 PUSH2 0x3984 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1D51 DUP3 DUP5 PUSH2 0x39B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x3FD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x3FF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x403D JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xD31 DUP2 PUSH2 0x40FB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x4023 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x4033 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x5F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x4049 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D51 DUP3 PUSH2 0x4064 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x40E0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x40C8 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x138A JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x8 DUP2 LT PUSH2 0x2821 JUMPI INVALID JUMPDEST PUSH2 0x410E DUP2 PUSH2 0x4023 JUMP JUMPDEST DUP2 EQ PUSH2 0x2821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x410E DUP2 PUSH2 0x402E JUMP JUMPDEST PUSH2 0x410E DUP2 PUSH2 0x5F1 JUMP JUMPDEST PUSH2 0x410E DUP2 PUSH2 0x405E JUMP JUMPDEST PUSH2 0x410E DUP2 PUSH2 0x4064 JUMP INVALID SELFBALANCE PUSH16 0x7665726E6F72416C7068613A3A70726F PUSH17 0x6F73653A206F766572666C6F77206F6E20 PUSH18 0x756F72756D20636F6D7075746174696F6E47 PUSH16 0x7665726E6F72416C7068613A3A207374 PUSH2 0x7465 GASPRICE KECCAK256 PUSH21 0x6F74616C566F746573202A206D616A6F7269747950 PUSH6 0x7263656E7461 PUSH8 0x65203E2075696E74 CODECOPY CALLDATASIZE SELFBALANCE PUSH16 0x7665726E6F72416C7068613A3A5F6361 PUSH20 0x74566F74653A20766F7465206F766572666C6F77 SELFBALANCE PUSH16 0x7665726E6F72416C7068613A3A70726F PUSH17 0x6F73653A20656E6420626C6F636B206E75 PUSH14 0x626572206F766572666C6F77476F PUSH23 0x65726E6F72416C7068613A3A71756F72756D566F746573 GASPRICE KECCAK256 PUSH3 0x6C6F63 PUSH12 0x206E756D626572206F766572 PUSH7 0x6C6F77476F7665 PUSH19 0x6E6F72416C7068613A3A71756F72756D566F74 PUSH6 0x733A6D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77476F7665726E6F7241 PUSH13 0x7068613A3A71756575653A2045 SLOAD COINBASE KECCAK256 PUSH16 0x766572666C6F77476F7665726E6F7241 PUSH13 0x7068613A3A2073746174653A20 PUSH7 0x6F72566F746573 KECCAK256 0x2B KECCAK256 PUSH2 0x6761 PUSH10 0x6E7374566F746573203E KECCAK256 PUSH22 0x696E743936476F7665726E6F72416C7068613A3A7072 PUSH16 0x706F73653A206F766572666C6F77206F PUSH15 0x206D616A6F7269747950657263656E PUSH21 0x61676520636F6D7075746174696F6E476F7665726E PUSH16 0x72416C7068613A3A2073746174653A20 PUSH5 0x6976697369 PUSH16 0x6E206572726F72476F7665726E6F7241 PUSH13 0x7068613A3A70726F706F73653A KECCAK256 PUSH20 0x7461727420626C6F636B206E756D626572206F76 PUSH6 0x72666C6F7747 PUSH16 0x7665726E6F72416C7068613A3A70726F PUSH17 0x6F73616C5468726573686F6C643A20626C PUSH16 0x636B206E756D626572206F766572666C PUSH16 0x77476F7665726E6F72416C7068613A3A PUSH17 0x726F706F73653A20737461727454696D65 KECCAK256 PUSH16 0x766572666C6F77A365627A7A72315820 CALLER RETURNDATACOPY 0xF6 0xEB SMOD PUSH7 0x2BD3F244257B66 0x23 ISZERO 0xCE 0xB0 CODECOPY 0xAA 0xDA 0x4E DUP9 LOG2 SHL MLOAD EXP 0xEE REVERT 0xC5 0x24 0xBF 0xCE PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "103:500:105:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4434:45:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4434:45:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;375:71:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;375:71:105;;;:::i;:::-;;;;;;;;14699:116:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14699:116:51;;;;;;;;:::i;:::-;;4535:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4535:52:51;;;;;;;;:::i;4652:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4652:122:51;;;:::i;19085:321::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19085:321:51;;;;;;;;:::i;6649:386::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6649:386:51;;;:::i;:::-;;;;;;;;13841:298;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13841:298:51;;;;;;;;:::i;:::-;;;;;;;;;;;1557:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1557:69:51;;;:::i;19647:1277::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19647:1277:51;;;;;;;;:::i;:::-;;;;;;;;12943:670;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12943:670:51;;;;;;;;:::i;2042:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2042:23:51;;;:::i;:::-;;;;;;;;16072:1072;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16072:1072:51;;;;;;;;:::i;449:152:105:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;449:152:105;;;;;;;;:::i;1964:23:51:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1964:23:51;;;:::i;:::-;;;;;;;;18525:151;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18525:151:51;;;:::i;18723:315::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18723:315:51;;;;;;;;:::i;1242:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1242:53:51;;;:::i;:::-;;;;;;;;2216:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2216:35:51;;;:::i;6202:314::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6202:314:51;;;:::i;18320:158::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18320:158:51;;;:::i;1878:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1878:25:51;;;:::i;2113:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2113:28:51;;;:::i;7460:2963::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7460:2963:51;;;;;;;;:::i;10578:570::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10578:570:51;;;;;;;;:::i;4856:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4856:94:51;;;:::i;14380:144::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14380:144:51;;;;;;;;:::i;:::-;;;;;;;;2288:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2288:37:51;;;:::i;12218:549::-;;;;;;;;;:::i;4434:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;4434:45:51;;;;;;-1:-1:-1;;;4434:45:51;;;;;;;;;;-1:-1:-1;;;4434:45:51;;;;;;-1:-1:-1;;;;;;;;4434:45:51;;;;;;;;;;;;;;;;;-1:-1:-1;;;4434:45:51;;;;-1:-1:-1;;;;;;;;4434:45:51;;;;;:::o;375:71:105:-;440:2;375:71;;:::o;14699:116:51:-;14769:42;14779:10;14791;14803:7;14769:9;:42::i;:::-;14699:116;;:::o;4535:52::-;;;;;;;;;;;;;:::o;4652:122::-;4694:80;;;;;;;;;;;;;;4652:122;:::o;19085:321::-;19198:8;;-1:-1:-1;;;;;19198:8:51;19184:10;:22;19176:111;;;;-1:-1:-1;;;19176:111:51;;;;;;;;;;;;;;;;;19291:8;;;19369:27;;-1:-1:-1;;;;;19291:8:51;;;;:27;;:8;;;19369:27;;19380:15;;19369:27;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19369:27:51;;;19398:3;19291:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19291:111:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19291:111:51;;;;;;39:16:-1;36:1;17:17;2:54;101:4;19291:111:51;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;19291:111:51;;;;;;;;;;19085:321;;:::o;6649:386::-;6693:6;6705:23;6734:7;;;;;;;;;-1:-1:-1;;;;;6734:7:51;-1:-1:-1;;;;;6734:32:51;;6772:77;6794:1;6779:12;:16;6772:77;;;;;;;;;;;;;;;;;:6;:77::i;:::-;6855:15;6734:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6734:141:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6734:141:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6734:141:51;;;;;;;;;6931:21;;6925:100;;;;;;;;;;;;;6705:170;;-1:-1:-1;7028:3:51;;6925:100;;-1:-1:-1;;;;;6931:21:51;;6705:170;;6925:100;;;;;:5;:100::i;:::-;-1:-1:-1;;;;;6925:106:51;;;;;;;6918:113;;;6649:386;:::o;13841:298::-;13912:24;13941:23;13969:26;14000:24;14034:18;14055:9;:21;14065:10;14055:21;;;;;;;;;;;14034:42;;14088:1;:9;;14099:1;:8;;14109:1;:12;;14123:1;:11;;14080:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14080:55:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14080:55:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14080:55:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13841:298;;;;;:::o;1557:69::-;1621:1;1557:69;:::o;19647:1277::-;19703:13;19747:10;19730:13;;:27;;:45;;;;;19774:1;19761:10;:14;19730:45;19722:99;;;;-1:-1:-1;;;19722:99:51;;;;;;;;;19825:25;19853:21;;;:9;:21;;;;;19883:17;;;;-1:-1:-1;;;19883:17:51;;;;19879:62;;;19914:22;19907:29;;;;;19879:62;19965:19;;;;;;19949:12;:35;19945:79;;19998:21;19991:28;;;;;19945:79;20048:17;;;;;;;;;20032:12;:33;20028:76;;20079:20;20072:27;;;;;20028:76;20134:17;;;;20128:106;;;;;;;;;;;;;20108:17;;20128:106;;-1:-1:-1;;;;;;;;20134:17:51;;;;;-1:-1:-1;;;20153:21:51;;;;;20128:106;;;;;:5;:106::i;:::-;20108:126;;20238:35;20276:63;20282:10;20294:3;20276:63;;;;;;;;;;;;;;;;;:5;:63::i;:::-;20238:101;;20374:140;20384:28;20417:23;;;;;;;;;-1:-1:-1;;;;;20417:23:51;20374:140;;;;;;;;;;;;;;;;;:5;:140::i;:::-;20522:17;;;;20343:171;;-1:-1:-1;;;;;;20522:49:51;;;-1:-1:-1;;;20522:17:51;;;;:49;;;:81;;-1:-1:-1;20588:15:51;;;;-1:-1:-1;;;;;20588:15:51;;;20575:28;;;;20522:81;20518:126;;;20617:22;20610:29;;;;;;;20518:126;20652:12;;;;-1:-1:-1;;;20652:12:51;;-1:-1:-1;;;;;20652:12:51;20648:63;;20683:23;20676:30;;;;;;;20648:63;20719:17;;;;-1:-1:-1;;;20719:17:51;;;;20715:62;;;20750:22;20743:29;;;;;;;20715:62;20811:12;;;;20825:8;;:23;;;-1:-1:-1;;;20825:23:51;;;;20804:45;;-1:-1:-1;;;20811:12:51;;-1:-1:-1;;;;;20811:12:51;;-1:-1:-1;;;;;20825:8:51;;:21;;:23;;;;;;;;;;;;;;:8;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;20825:23:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20825:23:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;20825:23:51;;;;;;;;;20804:6;:45::i;:::-;20785:15;:64;20781:108;;20863:21;20856:28;;;;;;;20781:108;20900:20;20893:27;;;;;19647:1277;;;;:::o;12943:670::-;12990:19;13012:17;13018:10;13012:5;:17::i;:::-;12990:39;-1:-1:-1;13050:22:51;13041:5;:31;;;;;;;;;;13033:98;;;;-1:-1:-1;;;13033:98:51;;;;;;;;;13136:25;13164:21;;;:9;:21;;;;;13262:8;;-1:-1:-1;;;;;13262:8:51;13248:10;:22;13240:81;;;;-1:-1:-1;;;13240:81:51;;;;;;;;;13326:17;;;:24;;-1:-1:-1;;13326:24:51;-1:-1:-1;;;13326:24:51;;;;13355:217;13379:16;;;:23;13375:27;;13355:217;;;13414:8;;13446:16;;;:19;;-1:-1:-1;;;;;13414:8:51;;;;:26;;13446:16;13463:1;;13446:19;;;;;;;;;;;;;;;;13471:15;;;:18;;-1:-1:-1;;;;;13446:19:51;;;;13487:1;;13471:18;;;;;;;;;;;;;;13495:8;:19;;13515:1;13495:22;;;;;;;;;;;;;;;13523:8;:18;;13542:1;13523:21;;;;;;;;;;;;;;;13550:8;:12;;;;;;;;;;-1:-1:-1;;;;;13550:12:51;13414:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13414:153:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13404:3:51;;;;;-1:-1:-1;13355:217:51;;-1:-1:-1;13355:217:51;;;13581:28;13598:10;13581:28;;;;;;;;;;;;;;;12943:670;;;:::o;2042:23::-;;;-1:-1:-1;;;;;2042:23:51;;:::o;16072:1072::-;16488:23;4694:80;;;;;;;;;;;;;;;;16568:4;;;;;;;;;-1:-1:-1;;;16568:4:51;;;;;;;;16552:22;16576:12;:10;:12::i;:::-;16598:4;16524:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16524:80:51;;;16514:91;;;;;;16488:117;;16696:18;4898:52;;;;;;;;;;;;;;;16727:48;;16755:10;;16767:7;;16727:48;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16727:48:51;;;16717:59;;;;;;16696:80;;16781:14;16837:15;16854:10;16808:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16808:57:51;;;16798:68;;;;;;16781:85;;16870:17;16890:26;16900:6;16908:1;16911;16914;16890:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16890:26:51;;;;;;;;16870:46;;16994:42;17026:9;16994:31;:42::i;:::-;16986:102;;;;-1:-1:-1;;;16986:102:51;;;;;;;;;17099:41;17109:9;17120:10;17132:7;17099:9;:41::i;:::-;17092:48;;;;16072:1072;;;;;:::o;449:152:105:-;523:9;518:80;538:22;;;518:80;;;572:21;578:11;;590:1;578:14;;;;;;;;;;;;;572:5;:21::i;:::-;562:3;;518:80;;1964:23:51;;;-1:-1:-1;;;;;1964:23:51;;:::o;18525:151::-;18580:8;;-1:-1:-1;;;;;18580:8:51;18566:10;:22;18558:89;;;;-1:-1:-1;;;18558:89:51;;;;;;;;;18651:8;:21;;-1:-1:-1;;;;;;18651:21:51;;;18525:151::o;18723:315::-;18834:8;;-1:-1:-1;;;;;18834:8:51;18820:10;:22;18812:109;;;;-1:-1:-1;;;18812:109:51;;;;;;;;;18925:8;;;19001:27;;-1:-1:-1;;;;;18925:8:51;;;;:25;;:8;;;19001:27;;19012:15;;19001:27;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19001:27:51;;;19030:3;18925:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18925:109:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18925:109:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18925:109:51;;;;;;;;1242:53;;;;;;;;;;;;;;-1:-1:-1;;;1242:53:51;;;;:::o;2216:35::-;;;-1:-1:-1;;;;;2216:35:51;;:::o;6202:314::-;6252:6;6264:23;6293:7;;;;;;;;;-1:-1:-1;;;;;6293:7:51;-1:-1:-1;;;;;6293:32:51;;6331:83;6353:1;6338:12;:16;6331:83;;;;;;;;;;;;;;;;;:6;:83::i;:::-;6420:15;6293:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6293:147:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6293:147:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6293:147:51;;;;;;;;;6264:176;-1:-1:-1;6509:3:51;-1:-1:-1;;;;;6490:22:51;;;;18320:158;18378:8;;-1:-1:-1;;;;;18378:8:51;18364:10;:22;18356:92;;;;-1:-1:-1;;;18356:92:51;;;;;;;;;18452:8;;;:22;;;-1:-1:-1;;;18452:22:51;;;;-1:-1:-1;;;;;18452:8:51;;;;:20;;:22;;;;;;;;;;:8;;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;18452:22:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18452:22:51;;;;18320:158::o;1878:25::-;;;-1:-1:-1;;;;;1878:25:51;;:::o;2113:28::-;;;;:::o;7460:2963::-;7638:7;7886:16;7905:19;:17;:19::i;:::-;7940:7;;;7886:38;;-1:-1:-1;;;;;;7940:87:51;;;-1:-1:-1;;;;;7940:7:51;;:21;;7962:10;;7974:23;;7981:12;;7974:6;:23::i;:::-;7999:15;7940:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7940:75:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7940:75:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7940:75:51;;;;;;;;;-1:-1:-1;;;;;7940:87:51;;7928:173;;;;-1:-1:-1;;;7928:173:51;;;;;;;;;8135:6;:13;8117:7;:14;:31;:70;;;;;8170:10;:17;8152:7;:14;:35;8117:70;:108;;;;;8209:9;:16;8191:7;:14;:34;8117:108;8105:199;;;;-1:-1:-1;;;8105:199:51;;;;;;;;;8316:14;;8308:76;;;;-1:-1:-1;;;8308:76:51;;;;;;;;;8414:23;:21;:23::i;:::-;8396:7;:14;:41;;8388:94;;;;-1:-1:-1;;;8388:94:51;;;;;;;;;8532:10;8487:24;8514:29;;;:17;:29;;;;;;8551:21;;8547:449;;8579:42;8624:23;8630:16;8624:5;:23::i;:::-;8579:68;-1:-1:-1;8697:20:51;8665:28;:52;;;;;;;;;;8652:166;;;;-1:-1:-1;;;8652:166:51;;;;;;;;;8868:21;8836:28;:53;;;;;;;;;;8823:168;;;;-1:-1:-1;;;8823:168:51;;;;;;;;;8547:449;;9000:18;9021:35;9028:12;9042:13;:11;:13::i;9021:35::-;9000:56;;9060:16;9079:34;9086:10;9098:14;:12;:14::i;9079:34::-;9118:13;:15;;;;;;9060:53;-1:-1:-1;9346:27:51;;:::i;:::-;9379:783;;;;;;;;9398:13;;9379:783;;;;9429:73;9436:10;9429:73;;;;;;;;;;;;;;;;;:6;:73::i;:::-;9379:783;;;;;;9518:69;9525:8;9518:69;;;;;;;;;;;;;;;;;:6;:69::i;:::-;9379:783;;;;;;9603:1;-1:-1:-1;;;;;9379:783:51;;;;;9624:1;-1:-1:-1;;;;;9379:783:51;;;;;9639:97;9645:21;;;;;;;;;-1:-1:-1;;;;;9645:21:51;9668:9;9639:97;;;;;;;;;;;;;;;;;:5;:97::i;:::-;-1:-1:-1;;;;;9379:783:51;;;;;9762:132;9774:23;;;;;;;;;-1:-1:-1;;;;;9774:23:51;9804:9;9762:132;;;;;;;;;;;;;;;;;:5;:132::i;:::-;-1:-1:-1;;;;;9379:783:51;;;;;9905:1;-1:-1:-1;;;;;9379:783:51;;;;;9923:69;9930:15;9923:69;;;;;;;;;;;;;;;;;:6;:69::i;:::-;-1:-1:-1;;;;;9379:783:51;;;;;10008:5;9379:783;;;;;;10029:5;9379:783;;;;;;10050:10;-1:-1:-1;;;;;9379:783:51;;;;;10075:7;9379:783;;;;10096:6;9379:783;;;;10120:10;9379:783;;;;10147:9;9379:783;;;9346:816;;10195:11;10167:9;:25;10177:11;:14;;;10167:25;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10167:39:51;;;;;-1:-1:-1;;;;;10167:39:51;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10167:39:51;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10167:39:51;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10167:39:51;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;10252:11;:14;;;10210:17;:39;10228:11;:20;;;-1:-1:-1;;;;;10210:39:51;-1:-1:-1;;;;;10210:39:51;;;;;;;;;;;;:56;;;;10276:118;10292:11;:14;;;10308:10;10320:7;10329:6;10337:10;10349:9;10360:10;10372:8;10382:11;10276:118;;;;;;;;;;;;;;;;;;;;;;;10405:14;;-1:-1:-1;;;;;7460:2963:51;;;;;;;;:::o;10578:570::-;10653:23;10632:17;10638:10;10632:5;:17::i;:::-;:44;;;;;;;;;10624:125;;;;-1:-1:-1;;;10624:125:51;;;;;;;;;10753:25;10781:21;;;:9;:21;;;;;;;;10844:8;;:16;;-1:-1:-1;;;10844:16:51;;;;10781:21;;10753:25;10820:41;;10827:15;;-1:-1:-1;;;;;10844:8:51;;;;:14;;:16;;;;;10781:21;;10844:16;;;;;;:8;:16;;;5:2:-1;;;;30:1;27;20:12;10820:41:51;10806:55;-1:-1:-1;10871:9:51;10866:171;10890:16;;;:23;10886:27;;10866:171;;;10925:107;10940:8;:16;;10957:1;10940:19;;;;;;;;;;;;;;;;;;10961:15;;;:18;;-1:-1:-1;;;;;10940:19:51;;;;10977:1;;10961:18;;;;;;;;;;;;;;10981:8;:19;;11001:1;10981:22;;;;;;;;;;;;;;;;;;10925:107;;;;;;;-1:-1:-1;;10925:107:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10981:22;10925:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11005:8;:18;;11024:1;11005:21;;;;;;;;;;;;;;;;;;10925:107;;;;;;;-1:-1:-1;;10925:107:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11005:21;10925:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11028:3;10925:14;:107::i;:::-;10915:3;;10866:171;;;;11055:49;11062:3;11055:49;;;;;;;;;;;;;;;;;:6;:49::i;:::-;11040:8;:12;;;:64;;;;;-1:-1:-1;;;;;11040:64:51;;;;;-1:-1:-1;;;;;11040:64:51;;;;;;11113:31;11128:10;11140:3;11113:31;;;;;;;;4856:94;4898:52;;;;;;14380:144;14456:14;;:::i;:::-;-1:-1:-1;14483:21:51;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;14483:37:51;;;;:30;;:37;;;;;;14476:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14476:44:51;;;;;;;;14380:144;;;;;:::o;2288:37::-;;;-1:-1:-1;;;2288:37:51;;-1:-1:-1;;;;;2288:37:51;;:::o;12218:549::-;12303:20;12282:17;12288:10;12282:5;:17::i;:::-;:41;;;;;;;;;12274:123;;;;-1:-1:-1;;;12274:123:51;;;;;;;;;12401:25;12429:21;;;:9;:21;;;;;12454:17;;;:24;;-1:-1:-1;;12454:24:51;-1:-1:-1;;;12454:24:51;;;12429:21;12483:244;12507:16;;;:23;12503:27;;12483:244;;;12542:8;;12576:15;;;:18;;-1:-1:-1;;;;;12542:8:51;;;;:27;;12576:15;12592:1;;12576:18;;;;;;;;;;;;;;12601:8;:16;;12618:1;12601:19;;;;;;;;;;;;;;;;;;12626:15;;;:18;;-1:-1:-1;;;;;12601:19:51;;;;12642:1;;12626:18;;;;;;;;;;;;;;12650:8;:19;;12670:1;12650:22;;;;;;;;;;;;;;;12678:8;:18;;12697:1;12678:21;;;;;;;;;;;;;;;12705:8;:12;;;;;;;;;;-1:-1:-1;;;;;12705:12:51;12542:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12542:180:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12542:180:51;;;;;;;39:16:-1;36:1;17:17;2:54;101:4;12542:180:51;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;12542:180:51;;;;;;;;;-1:-1:-1;12532:3:51;;12483:244;;;;12735:28;12752:10;12735:28;;;;;;;;;;;;;;;12218:549;;:::o;17427:846::-;17546:20;17525:17;17531:10;17525:5;:17::i;:::-;:41;;;;;;;;;17517:96;;;;-1:-1:-1;;;17517:96:51;;;;;;;;;17617:25;17645:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;17696:24:51;;;;:17;;;:24;;;;;;17732:16;;;;:25;17724:83;;;;-1:-1:-1;;;17724:83:51;;;;;;;;;17826:7;;;17855:19;;;;17876:18;;;;17826:69;;-1:-1:-1;;;17826:69:51;;17811:12;;-1:-1:-1;;;;;17826:7:51;;:21;;:69;;17848:5;;17855:19;;;-1:-1:-1;;;;;17876:18:51;;17826:69;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17826:69:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17826:69:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17826:69:51;;;;;;;;;17811:84;;17904:7;17900:235;;;17938:74;17944:8;:17;;;;;;;;;;-1:-1:-1;;;;;17944:17:51;17963:5;17938:74;;;;;;;;;;;;;;;;;:5;:74::i;:::-;17918:8;:17;;;:94;;;;;-1:-1:-1;;;;;17918:94:51;;;;;-1:-1:-1;;;;;17918:94:51;;;;;;17900:235;;;18052:78;18058:8;:21;;;;;;;;;;-1:-1:-1;;;;;18058:21:51;18081:5;18052:78;;;;;;;;;;;;;;;;;:5;:78::i;:::-;18028:8;:21;;;:102;;;;;-1:-1:-1;;;;;18028:102:51;;;;;-1:-1:-1;;;;;18028:102:51;;;;;;17900:235;18139:23;;18158:4;-1:-1:-1;;18139:23:51;;;;-1:-1:-1;;18166:25:51;18139:23;18166:25;;;;;-1:-1:-1;;18195:21:51;;-1:-1:-1;;;;;18195:21:51;;;;;;18226:43;;;;;;18235:5;;18242:10;;18166:25;;18195:21;;18226:43;;;;;;;;;;17427:846;;;;;;:::o;797:146:56:-;875:6;906:12;899:5;895:9;;887:32;;;;-1:-1:-1;;;887:32:56;;;;;;;;;;-1:-1:-1;937:1:56;;797:146;-1:-1:-1;;797:146:56:o;2411:211::-;2506:6;-1:-1:-1;;;;;2522:6:56;;2518:30;;-1:-1:-1;2542:1:56;2535:8;;2518:30;2563:5;;;-1:-1:-1;;;;;2580:10:56;;;;:5;;;;;;;;;;;;-1:-1:-1;;;;;2580:10:56;;2592:12;2572:33;;;;;-1:-1:-1;;;2572:33:56;;;;;;;;;;-1:-1:-1;2617:1:56;-1:-1:-1;2411:211:56;;;;;;:::o;1516:172::-;1611:6;1634:5;;;1659:12;-1:-1:-1;;;;;1651:6:56;;;;;;;;1643:29;;;;-1:-1:-1;;;1643:29:56;;;;;;;;;2900:312;2995:6;3082:12;-1:-1:-1;;;;;3075:5:56;;3067:28;;;;-1:-1:-1;;;3067:28:56;;;;;;;;;;;3099:8;3114:1;-1:-1:-1;;;;;3110:5:56;:1;-1:-1:-1;;;;;3110:5:56;;;;;;;;2900:312;-1:-1:-1;;;;;2900:312:56:o;20989:147:51:-;21050:7;21075:5;;;21092:6;;;;21084:36;;;;-1:-1:-1;;;21084:36:51;;;;;;;;21958:136;22060:9;21958:136;:::o;318:156:149:-;379:4;405:42;-1:-1:-1;;;;;397:50:149;;;;;;:72;;-1:-1:-1;;;;;;;451:18:149;;;;318:156::o;21201:134:51:-;21262:7;21288:1;21283;:6;;21275:40;;;;-1:-1:-1;;;21275:40:51;;;;;;;;;-1:-1:-1;21326:5:51;;;21201:134::o;946:146:56:-;1024:6;1055:12;-1:-1:-1;;;1044:9:56;;1036:32;;;;-1:-1:-1;;;1036:32:56;;;;;;;;;11654:387:51;11805:8;;11843:47;;-1:-1:-1;;;;;11805:8:51;;;;:27;;11843:47;;11854:6;;11862:5;;11869:9;;11880:4;;11886:3;;11843:47;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11843:47:51;;;11833:58;;;;;;11805:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11805:87:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11805:87:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11805:87:51;;;;;;;;;11804:88;11792:179;;;;-1:-1:-1;;;11792:179:51;;;;;;;;;11975:8;;:62;;-1:-1:-1;;;11975:62:51;;-1:-1:-1;;;;;11975:8:51;;;;:25;;:62;;12001:6;;12009:5;;12016:9;;12027:4;;12033:3;;11975:62;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11975:62:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11975:62:51;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11975:62:51;;;;;;;;;;11654:387;;;;;:::o;103:500:105:-;;;;;;;;;-1:-1:-1;103:500:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;103:500:105;-1:-1:-1;;;;;103:500:105;;;;;;;;;;;-1:-1:-1;103:500:105;;;;;;;-1:-1:-1;103:500:105;;;-1:-1:-1;103:500:105;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;103:500:105;;;-1:-1:-1;103:500:105;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;103:500:105;;;-1:-1:-1;103:500:105;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;103:500:105;;;-1:-1:-1;103:500:105;:::i;:::-;;;;;;;;;-1:-1:-1;103:500:105;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;103:500:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;;;354:80;;;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;;;748:50;;-1:-1;821:4;812:14;;;;840;;;;;702:1;695:9;655:206;;;659:14;237:630;;;;;;;;891:693;;1013:3;1006:4;998:6;994:17;990:27;980:2;;1031:1;1028;1021:12;980:2;1068:6;1055:20;1090:85;1105:69;1167:6;1105:69;;1090:85;1203:21;;;1247:4;1235:17;;;;1081:94;;-1:-1;1260:14;;1235:17;1355:1;1340:238;1365:6;1362:1;1359:13;1340:238;;;1448:3;1435:17;1427:6;1423:30;1472:42;1510:3;1498:10;1472:42;;;1460:55;;-1:-1;1538:4;1529:14;;;;1557;;;;;1387:1;1380:9;1340:238;;1609:696;;1732:3;1725:4;1717:6;1713:17;1709:27;1699:2;;1750:1;1747;1740:12;1699:2;1787:6;1774:20;1809:86;1824:70;1887:6;1824:70;;1809:86;1923:21;;;1967:4;1955:17;;;;1800:95;;-1:-1;1980:14;;1955:17;2075:1;2060:239;2085:6;2082:1;2079:13;2060:239;;;2168:3;2155:17;2147:6;2143:30;2192:43;2231:3;2219:10;2192:43;;;2180:56;;-1:-1;2259:4;2250:14;;;;2278;;;;;2107:1;2100:9;2060:239;;2331:352;;;2461:3;2454:4;2446:6;2442:17;2438:27;2428:2;;2479:1;2476;2469:12;2428:2;-1:-1;2499:20;;-1:-1;;;;;2528:30;;2525:2;;;2571:1;2568;2561:12;2525:2;2605:4;2597:6;2593:17;2581:29;;2656:3;2648:4;2640:6;2636:17;2626:8;2622:32;2619:41;2616:2;;;2673:1;2670;2663:12;2616:2;2421:262;;;;;;2709:707;;2826:3;2819:4;2811:6;2807:17;2803:27;2793:2;;2844:1;2841;2834:12;2793:2;2881:6;2868:20;2903:80;2918:64;2975:6;2918:64;;2903:80;2894:89;;3000:5;3025:6;3018:5;3011:21;3055:4;3047:6;3043:17;3033:27;;3077:4;3072:3;3068:14;3061:21;;3130:6;3177:3;3169:4;3161:6;3157:17;3152:3;3148:27;3145:36;3142:2;;;3194:1;3191;3184:12;3142:2;3219:1;3204:206;3229:6;3226:1;3223:13;3204:206;;;3287:3;3309:37;3342:3;3330:10;3309:37;;;3297:50;;-1:-1;3370:4;3361:14;;;;3389;;;;;3251:1;3244:9;3204:206;;3424:124;3488:20;;3513:30;3488:20;3513:30;;3555:128;3630:13;;3648:30;3630:13;3648:30;;3690:130;3757:20;;3782:33;3757:20;3782:33;;3827:134;3905:13;;3923:33;3905:13;3923:33;;3969:432;;4066:3;4059:4;4051:6;4047:17;4043:27;4033:2;;4084:1;4081;4074:12;4033:2;4121:6;4108:20;4143:60;4158:44;4195:6;4158:44;;4143:60;4134:69;;4223:6;4216:5;4209:21;4259:4;4251:6;4247:17;4292:4;4285:5;4281:16;4327:3;4318:6;4313:3;4309:16;4306:25;4303:2;;;4344:1;4341;4334:12;4303:2;4354:41;4388:6;4383:3;4378;4354:41;;;4026:375;;;;;;;;4410:442;;4522:3;4515:4;4507:6;4503:17;4499:27;4489:2;;4540:1;4537;4530:12;4489:2;4570:6;4564:13;4592:64;4607:48;4648:6;4607:48;;4592:64;4583:73;;4676:6;4669:5;4662:21;4712:4;4704:6;4700:17;4745:4;4738:5;4734:16;4780:3;4771:6;4766:3;4762:16;4759:25;4756:2;;;4797:1;4794;4787:12;4756:2;4807:39;4839:6;4834:3;4829;4807:39;;6032:126;6097:20;;6122:31;6097:20;6122:31;;6165:132;6242:13;;6260:32;6242:13;6260:32;;6304:241;;6408:2;6396:9;6387:7;6383:23;6379:32;6376:2;;;6424:1;6421;6414:12;6376:2;6459:1;6476:53;6521:7;6501:9;6476:53;;;6466:63;6370:175;-1:-1;;;;6370:175;6552:366;;;6673:2;6661:9;6652:7;6648:23;6644:32;6641:2;;;6689:1;6686;6679:12;6641:2;6724:1;6741:53;6786:7;6766:9;6741:53;;;6731:63;;6703:97;6831:2;6849:53;6894:7;6885:6;6874:9;6870:22;6849:53;;;6839:63;;6810:98;6635:283;;;;;;6925:1415;;;;;;7218:3;7206:9;7197:7;7193:23;7189:33;7186:2;;;7235:1;7232;7225:12;7186:2;7270:31;;-1:-1;;;;;7310:30;;7307:2;;;7353:1;7350;7343:12;7307:2;7373:78;7443:7;7434:6;7423:9;7419:22;7373:78;;;7363:88;;7249:208;7516:2;7505:9;7501:18;7488:32;-1:-1;;;;;7532:6;7529:30;7526:2;;;7572:1;7569;7562:12;7526:2;7592:78;7662:7;7653:6;7642:9;7638:22;7592:78;;;7582:88;;7467:209;7735:2;7724:9;7720:18;7707:32;-1:-1;;;;;7751:6;7748:30;7745:2;;;7791:1;7788;7781:12;7745:2;7811:84;7887:7;7878:6;7867:9;7863:22;7811:84;;;7801:94;;7686:215;7960:2;7949:9;7945:18;7932:32;-1:-1;;;;;7976:6;7973:30;7970:2;;;8016:1;8013;8006:12;7970:2;8036:83;8111:7;8102:6;8091:9;8087:22;8036:83;;;8026:93;;7911:214;8184:3;8173:9;8169:19;8156:33;-1:-1;;;;;8201:6;8198:30;8195:2;;;8241:1;8238;8231:12;8195:2;8261:63;8316:7;8307:6;8296:9;8292:22;8261:63;;;8251:73;;8135:195;7180:1160;;;;;;;;;8347:397;;;8486:2;8474:9;8465:7;8461:23;8457:32;8454:2;;;8502:1;8499;8492:12;8454:2;8537:31;;-1:-1;;;;;8577:30;;8574:2;;;8620:1;8617;8610:12;8574:2;8648:80;8720:7;8711:6;8700:9;8696:22;8648:80;;;8638:90;;;;8516:218;8448:296;;;;;;8751:257;;8863:2;8851:9;8842:7;8838:23;8834:32;8831:2;;;8879:1;8876;8869:12;8831:2;8914:1;8931:61;8984:7;8964:9;8931:61;;9015:263;;9130:2;9118:9;9109:7;9105:23;9101:32;9098:2;;;9146:1;9143;9136:12;9098:2;9181:1;9198:64;9254:7;9234:9;9198:64;;9285:360;;9409:2;9397:9;9388:7;9384:23;9380:32;9377:2;;;9425:1;9422;9415:12;9377:2;9460:24;;-1:-1;;;;;9493:30;;9490:2;;;9536:1;9533;9526:12;9490:2;9556:73;9621:7;9612:6;9601:9;9597:22;9556:73;;9652:241;;9756:2;9744:9;9735:7;9731:23;9727:32;9724:2;;;9772:1;9769;9762:12;9724:2;9807:1;9824:53;9869:7;9849:9;9824:53;;10170:366;;;10291:2;10279:9;10270:7;10266:23;10262:32;10259:2;;;10307:1;10304;10297:12;10259:2;10342:1;10359:53;10404:7;10384:9;10359:53;;;10349:63;;10321:97;10449:2;10467:53;10512:7;10503:6;10492:9;10488:22;10467:53;;10543:360;;;10661:2;10649:9;10640:7;10636:23;10632:32;10629:2;;;10677:1;10674;10667:12;10629:2;10712:1;10729:53;10774:7;10754:9;10729:53;;;10719:63;;10691:97;10819:2;10837:50;10879:7;10870:6;10859:9;10855:22;10837:50;;10910:733;;;;;;11077:3;11065:9;11056:7;11052:23;11048:33;11045:2;;;11094:1;11091;11084:12;11045:2;11129:1;11146:53;11191:7;11171:9;11146:53;;;11136:63;;11108:97;11236:2;11254:50;11296:7;11287:6;11276:9;11272:22;11254:50;;;11244:60;;11215:95;11341:2;11359:51;11402:7;11393:6;11382:9;11378:22;11359:51;;;11349:61;;11320:96;11447:2;11465:53;11510:7;11501:6;11490:9;11486:22;11465:53;;;11455:63;;11426:98;11555:3;11574:53;11619:7;11610:6;11599:9;11595:22;11574:53;;11650:261;;11764:2;11752:9;11743:7;11739:23;11735:32;11732:2;;;11780:1;11777;11770:12;11732:2;11815:1;11832:63;11887:7;11867:9;11832:63;;11919:173;;12006:46;12048:3;12040:6;12006:46;;;-1:-1;;12081:4;12072:14;;11999:93;12101:177;;12212:60;12268:3;12260:6;12212:60;;12477:173;;12564:46;12606:3;12598:6;12564:46;;12658:142;12749:45;12788:5;12749:45;;;12744:3;12737:58;12731:69;;;12807:103;12880:24;12898:5;12880:24;;13068:690;;13213:54;13261:5;13213:54;;;13280:86;13359:6;13354:3;13280:86;;;13273:93;;13387:56;13437:5;13387:56;;;13463:7;13491:1;13476:260;13501:6;13498:1;13495:13;13476:260;;;13568:6;13562:13;13589:63;13648:3;13633:13;13589:63;;;13582:70;;13669:60;13722:6;13669:60;;;13659:70;-1:-1;;13523:1;13516:9;13476:260;;;-1:-1;13749:3;;13192:566;-1:-1;;;;;13192:566;13793:888;;13948:59;14001:5;13948:59;;;14020:91;14104:6;14099:3;14020:91;;;14013:98;;14134:3;14176:4;14168:6;14164:17;14159:3;14155:27;14203:61;14258:5;14203:61;;;14284:7;14312:1;14297:345;14322:6;14319:1;14316:13;14297:345;;;14384:9;14378:4;14374:20;14369:3;14362:33;14429:6;14423:13;14451:74;14520:4;14505:13;14451:74;;;14443:82;;14542:65;14600:6;14542:65;;;14630:4;14621:14;;;;;14532:75;-1:-1;;14344:1;14337:9;14297:345;;;-1:-1;14655:4;;13927:754;-1:-1;;;;;;;13927:754;14718:896;;14875:60;14929:5;14875:60;;;14948:92;15033:6;15028:3;14948:92;;;14941:99;;15063:3;15105:4;15097:6;15093:17;15088:3;15084:27;15132:62;15188:5;15132:62;;;15214:7;15242:1;15227:348;15252:6;15249:1;15246:13;15227:348;;;15314:9;15308:4;15304:20;15299:3;15292:33;15359:6;15353:13;15381:76;15452:4;15437:13;15381:76;;;15373:84;;15474:66;15533:6;15474:66;;;15563:4;15554:14;;;;;15464:76;-1:-1;;15274:1;15267:9;15227:348;;15653:690;;15798:54;15846:5;15798:54;;;15865:86;15944:6;15939:3;15865:86;;;15858:93;;15972:56;16022:5;15972:56;;;16048:7;16076:1;16061:260;16086:6;16083:1;16080:13;16061:260;;;16153:6;16147:13;16174:63;16233:3;16218:13;16174:63;;;16167:70;;16254:60;16307:6;16254:60;;;16244:70;-1:-1;;16108:1;16101:9;16061:260;;16351:94;16418:21;16433:5;16418:21;;16563:113;16646:24;16664:5;16646:24;;16683:152;16784:45;16804:24;16822:5;16804:24;;;16784:45;;16842:343;;16952:38;16984:5;16952:38;;;17002:70;17065:6;17060:3;17002:70;;;16995:77;;17077:52;17122:6;17117:3;17110:4;17103:5;17099:16;17077:52;;;17150:29;17172:6;17150:29;;;17141:39;;;;16932:253;-1:-1;;;16932:253;17537:818;;17654:5;17648:12;17688:1;17677:9;17673:17;17701:1;17696:247;;;;17954:1;17949:400;;;;17666:683;;17696:247;17774:4;17770:1;17759:9;17755:17;17751:28;17793:70;17856:6;17851:3;17793:70;;;-1:-1;;17882:25;;17870:38;;17786:77;-1:-1;;17931:4;17922:14;;;-1:-1;17696:247;;17949:400;18018:1;18007:9;18003:17;18034:70;18097:6;18092:3;18034:70;;;18027:77;;18126:37;18157:5;18126:37;;;18179:1;18187:130;18201:6;18198:1;18195:13;18187:130;;;18260:14;;18247:11;;;18240:35;18307:1;18294:15;;;;18223:4;18216:12;18187:130;;;18331:11;;;-1:-1;;;17666:683;;17624:731;;;;;;18363:162;18464:55;18513:5;18464:55;;18703:160;18803:54;18851:5;18803:54;;18870:142;18961:45;19000:5;18961:45;;20902:394;;21062:67;21126:2;21121:3;21062:67;;;21162:34;21142:55;;21231:27;21226:2;21217:12;;21210:49;21287:2;21278:12;;21048:248;-1:-1;;21048:248;21305:442;;21465:67;21529:2;21524:3;21465:67;;;21565:34;21545:55;;21634:34;21629:2;21620:12;;21613:56;-1:-1;;;21698:2;21689:12;;21682:28;21738:2;21729:12;;21451:296;-1:-1;;21451:296;21756:443;;21916:67;21980:2;21975:3;21916:67;;;22016:34;21996:55;;22085:34;22080:2;22071:12;;22064:56;-1:-1;;;22149:2;22140:12;;22133:29;22190:2;22181:12;;21902:297;-1:-1;;21902:297;22208:398;;22386:84;22468:1;22463:3;22386:84;;;-1:-1;;;22483:87;;22598:1;22589:11;;22372:234;-1:-1;;22372:234;22615:450;;22775:67;22839:2;22834:3;22775:67;;;22875:34;22855:55;;22944:34;22939:2;22930:12;;22923:56;-1:-1;;;23008:2;22999:12;;22992:36;23056:2;23047:12;;22761:304;-1:-1;;22761:304;23074:324;;23234:67;23298:2;23293:3;23234:67;;;23334:26;23314:47;;23389:2;23380:12;;23220:178;-1:-1;;23220:178;23407:378;;23567:67;23631:2;23626:3;23567:67;;;23667:34;23647:55;;-1:-1;;;23731:2;23722:12;;23715:33;23776:2;23767:12;;23553:232;-1:-1;;23553:232;23794:382;;23954:67;24018:2;24013:3;23954:67;;;24054:34;24034:55;;-1:-1;;;24118:2;24109:12;;24102:37;24167:2;24158:12;;23940:236;-1:-1;;23940:236;24185:463;;24345:67;24409:2;24404:3;24345:67;;;24445:34;24425:55;;24514:34;24509:2;24500:12;;24493:56;24583:27;24578:2;24569:12;;24562:49;24639:2;24630:12;;24331:317;-1:-1;;24331:317;24657:448;;24817:67;24881:2;24876:3;24817:67;;;24917:34;24897:55;;24986:34;24981:2;24972:12;;24965:56;-1:-1;;;25050:2;25041:12;;25034:34;25096:2;25087:12;;24803:302;-1:-1;;24803:302;25114:377;;25274:67;25338:2;25333:3;25274:67;;;25374:34;25354:55;;-1:-1;;;25438:2;25429:12;;25422:32;25482:2;25473:12;;25260:231;-1:-1;;25260:231;25500:317;;25660:67;25724:2;25719:3;25660:67;;;-1:-1;;;25740:40;;25808:2;25799:12;;25646:171;-1:-1;;25646:171;25826:477;;26004:85;26086:2;26081:3;26004:85;;;26122:34;26102:55;;26191:34;26186:2;26177:12;;26170:56;-1:-1;;;26255:2;26246:12;;26239:27;26294:2;26285:12;;25990:313;-1:-1;;25990:313;26312:412;;26490:85;26572:2;26567:3;26490:85;;;26608:34;26588:55;;-1:-1;;;26672:2;26663:12;;26656:31;26715:2;26706:12;;26476:248;-1:-1;;26476:248;26733:442;;26893:67;26957:2;26952:3;26893:67;;;26993:34;26973:55;;27062:34;27057:2;27048:12;;27041:56;-1:-1;;;27126:2;27117:12;;27110:28;27166:2;27157:12;;26879:296;-1:-1;;26879:296;27184:383;;27344:67;27408:2;27403:3;27344:67;;;27444:34;27424:55;;-1:-1;;;27508:2;27499:12;;27492:38;27558:2;27549:12;;27330:237;-1:-1;;27330:237;27576:442;;27736:67;27800:2;27795:3;27736:67;;;27836:34;27816:55;;27905:34;27900:2;27891:12;;27884:56;-1:-1;;;27969:2;27960:12;;27953:28;28009:2;28000:12;;27722:296;-1:-1;;27722:296;28027:381;;28187:67;28251:2;28246:3;28187:67;;;28287:34;28267:55;;-1:-1;;;28351:2;28342:12;;28335:36;28399:2;28390:12;;28173:235;-1:-1;;28173:235;28417:400;;28577:67;28641:2;28636:3;28577:67;;;28677:34;28657:55;;28746:33;28741:2;28732:12;;28725:55;28808:2;28799:12;;28563:254;-1:-1;;28563:254;28826:384;;28986:67;29050:2;29045:3;28986:67;;;29086:34;29066:55;;-1:-1;;;29150:2;29141:12;;29134:39;29201:2;29192:12;;28972:238;-1:-1;;28972:238;29219:462;;29379:67;29443:2;29438:3;29379:67;;;29479:34;29459:55;;29548:34;29543:2;29534:12;;29527:56;29617:26;29612:2;29603:12;;29596:48;29672:2;29663:12;;29365:316;-1:-1;;29365:316;29690:391;;29850:67;29914:2;29909:3;29850:67;;;29950:34;29930:55;;-1:-1;;;30014:2;30005:12;;29998:46;30072:2;30063:12;;29836:245;-1:-1;;29836:245;30090:379;;30250:67;30314:2;30309:3;30250:67;;;30350:34;30330:55;;-1:-1;;;30414:2;30405:12;;30398:34;30460:2;30451:12;;30236:233;-1:-1;;30236:233;30478:321;;30638:67;30702:2;30697:3;30638:67;;;-1:-1;;;30718:44;;30790:2;30781:12;;30624:175;-1:-1;;30624:175;30808:391;;30968:67;31032:2;31027:3;30968:67;;;31068:34;31048:55;;-1:-1;;;31132:2;31123:12;;31116:46;31190:2;31181:12;;30954:245;-1:-1;;30954:245;31274:626;31489:23;;31419:4;31410:14;;;31518:57;31414:3;31489:23;31518:57;;;31439:142;31657:4;31650:5;31646:16;31640:23;31669:57;31720:4;31715:3;31711:14;31697:12;31669:57;;;31591:141;31806:4;31799:5;31795:16;31789:23;31818:61;31873:4;31868:3;31864:14;31850:12;31818:61;;32137:124;32219:36;32249:5;32219:36;;32268:110;32349:23;32366:5;32349:23;;32385:124;32467:36;32497:5;32467:36;;32516:110;32597:23;32614:5;32597:23;;32633:107;32712:22;32728:5;32712:22;;32747:124;32829:36;32859:5;32829:36;;32878:100;32949:23;32966:5;32949:23;;33102:650;;33357:148;33501:3;33357:148;;;33350:155;;33516:75;33587:3;33578:6;33516:75;;;33613:2;33608:3;33604:12;33597:19;;33627:75;33698:3;33689:6;33627:75;;;-1:-1;33724:2;33715:12;;33338:414;-1:-1;;33338:414;33759:372;;33958:148;34102:3;33958:148;;34138:372;;34337:148;34481:3;34337:148;;34517:213;34635:2;34620:18;;34649:71;34624:9;34693:6;34649:71;;34737:451;34919:2;34904:18;;34933:79;34908:9;34985:6;34933:79;;;35023:72;35091:2;35080:9;35076:18;35067:6;35023:72;;;35106;35174:2;35163:9;35159:18;35150:6;35106:72;;35195:953;35524:3;35509:19;;35539:71;35513:9;35583:6;35539:71;;;35621:80;35697:2;35686:9;35682:18;35673:6;35621:80;;;35749:9;35743:4;35739:20;35734:2;35723:9;35719:18;35712:48;35774:131;35900:4;35774:131;;;35766:139;;35953:9;35947:4;35943:20;35938:2;35927:9;35923:18;35916:48;35978:76;36049:4;36040:6;35978:76;;;35970:84;;36065:73;36133:3;36122:9;36118:19;36109:6;36065:73;;36155:533;36350:3;36335:19;;36365:71;36339:9;36409:6;36365:71;;;36447:72;36515:2;36504:9;36500:18;36491:6;36447:72;;;36530:66;36592:2;36581:9;36577:18;36568:6;36530:66;;;36607:71;36674:2;36663:9;36659:18;36650:6;36607:71;;36695:831;36963:3;36948:19;;36978:71;36952:9;37022:6;36978:71;;;37060:72;37128:2;37117:9;37113:18;37104:6;37060:72;;;37180:9;37174:4;37170:20;37165:2;37154:9;37150:18;37143:48;37205:78;37278:4;37269:6;37205:78;;;37197:86;;37331:9;37325:4;37321:20;37316:2;37305:9;37301:18;37294:48;37356:76;37427:4;37418:6;37356:76;;;37348:84;;37443:73;37511:3;37500:9;37496:19;37487:6;37443:73;;;36934:592;;;;;;;;;37533:817;37794:3;37779:19;;37809:71;37783:9;37853:6;37809:71;;;37891:72;37959:2;37948:9;37944:18;37935:6;37891:72;;;38011:9;38005:4;38001:20;37996:2;37985:9;37981:18;37974:48;38036:75;38106:4;38097:6;38036:75;;;38028:83;;38159:9;38153:4;38149:20;38144:2;38133:9;38129:18;38122:48;38184:73;38252:4;38243:6;38184:73;;;38176:81;;38268:72;38335:3;38324:9;38320:19;38311:6;38268:72;;38357:431;38529:2;38514:18;;38543:71;38518:9;38587:6;38543:71;;;38625;38692:2;38681:9;38677:18;38668:6;38625:71;;;38707;38774:2;38763:9;38759:18;38750:6;38707:71;;38795:1183;39219:3;39234:47;;;39204:19;;39295:108;39204:19;39389:6;39295:108;;;39287:116;;39451:9;39445:4;39441:20;39436:2;39425:9;39421:18;39414:48;39476:108;39579:4;39570:6;39476:108;;;39468:116;;39632:9;39626:4;39622:20;39617:2;39606:9;39602:18;39595:48;39657:120;39772:4;39763:6;39657:120;;;39649:128;;39825:9;39819:4;39815:20;39810:2;39799:9;39795:18;39788:48;39850:118;39963:4;39954:6;39850:118;;39985:213;40103:2;40088:18;;40117:71;40092:9;40161:6;40117:71;;40205:547;40407:3;40392:19;;40422:71;40396:9;40466:6;40422:71;;;40504:72;40572:2;40561:9;40557:18;40548:6;40504:72;;;40587;40655:2;40644:9;40640:18;40631:6;40587:72;;;40670;40738:2;40727:9;40723:18;40714:6;40670:72;;40759:423;40927:2;40912:18;;40941:71;40916:9;40985:6;40941:71;;;41023:72;41091:2;41080:9;41076:18;41067:6;41023:72;;;41106:66;41168:2;41157:9;41153:18;41144:6;41106:66;;41189:539;41387:3;41372:19;;41402:71;41376:9;41446:6;41402:71;;;41484:68;41548:2;41537:9;41533:18;41524:6;41484:68;;;41563:72;41631:2;41620:9;41616:18;41607:6;41563:72;;;41646;41714:2;41703:9;41699:18;41690:6;41646:72;;41735:249;41871:2;41856:18;;41885:89;41860:9;41947:6;41885:89;;42249:247;42384:2;42369:18;;42398:88;42373:9;42459:6;42398:88;;42503:293;42637:2;42651:47;;;42622:18;;42712:74;42622:18;42772:6;42712:74;;43111:407;43302:2;43316:47;;;43287:18;;43377:131;43287:18;43377:131;;43525:407;43716:2;43730:47;;;43701:18;;43791:131;43701:18;43791:131;;43939:407;44130:2;44144:47;;;44115:18;;44205:131;44115:18;44205:131;;44353:407;44544:2;44558:47;;;44529:18;;44619:131;44529:18;44619:131;;44767:407;44958:2;44972:47;;;44943:18;;45033:131;44943:18;45033:131;;45181:407;45372:2;45386:47;;;45357:18;;45447:131;45357:18;45447:131;;45595:407;45786:2;45800:47;;;45771:18;;45861:131;45771:18;45861:131;;46009:407;46200:2;46214:47;;;46185:18;;46275:131;46185:18;46275:131;;46423:407;46614:2;46628:47;;;46599:18;;46689:131;46599:18;46689:131;;46837:407;47028:2;47042:47;;;47013:18;;47103:131;47013:18;47103:131;;47251:407;47442:2;47456:47;;;47427:18;;47517:131;47427:18;47517:131;;47665:407;47856:2;47870:47;;;47841:18;;47931:131;47841:18;47931:131;;48079:407;48270:2;48284:47;;;48255:18;;48345:131;48255:18;48345:131;;48493:407;48684:2;48698:47;;;48669:18;;48759:131;48669:18;48759:131;;48907:407;49098:2;49112:47;;;49083:18;;49173:131;49083:18;49173:131;;49321:407;49512:2;49526:47;;;49497:18;;49587:131;49497:18;49587:131;;49735:407;49926:2;49940:47;;;49911:18;;50001:131;49911:18;50001:131;;50149:407;50340:2;50354:47;;;50325:18;;50415:131;50325:18;50415:131;;50563:407;50754:2;50768:47;;;50739:18;;50829:131;50739:18;50829:131;;50977:407;51168:2;51182:47;;;51153:18;;51243:131;51153:18;51243:131;;51391:407;51582:2;51596:47;;;51567:18;;51657:131;51567:18;51657:131;;51805:317;51975:2;51960:18;;51989:123;51964:9;52085:6;51989:123;;52349:1847;52941:3;52926:19;;52956:71;52930:9;53000:6;52956:71;;;53038:80;53114:2;53103:9;53099:18;53090:6;53038:80;;;53166:9;53160:4;53156:20;53151:2;53140:9;53136:18;53129:48;53191:108;53294:4;53285:6;53191:108;;;53183:116;;53347:9;53341:4;53337:20;53332:2;53321:9;53317:18;53310:48;53372:108;53475:4;53466:6;53372:108;;;53364:116;;53529:9;53523:4;53519:20;53513:3;53502:9;53498:19;53491:49;53554:120;53669:4;53660:6;53554:120;;;53546:128;;53723:9;53717:4;53713:20;53707:3;53696:9;53692:19;53685:49;53748:118;53861:4;53852:6;53748:118;;;53740:126;;53877:73;53945:3;53934:9;53930:19;53921:6;53877:73;;;53961;54029:3;54018:9;54014:19;54005:6;53961:73;;;54083:9;54077:4;54073:20;54067:3;54056:9;54052:19;54045:49;54108:78;54181:4;54172:6;54108:78;;;54100:86;52912:1284;-1:-1;;;;;;;;;;;52912:1284;54203:324;54349:2;54334:18;;54363:71;54338:9;54407:6;54363:71;;;54445:72;54513:2;54502:9;54498:18;54489:6;54445:72;;54534:1391;54934:3;54919:19;;54949:71;54923:9;54993:6;54949:71;;;55031:70;55097:2;55086:9;55082:18;55073:6;55031:70;;;55112;55178:2;55167:9;55163:18;55154:6;55112:70;;;55193;55259:2;55248:9;55244:18;55235:6;55193:70;;;55274:71;55340:3;55329:9;55325:19;55316:6;55274:71;;;55356;55422:3;55411:9;55407:19;55398:6;55356:71;;;55438;55504:3;55493:9;55489:19;55480:6;55438:71;;;55520;55586:3;55575:9;55571:19;55562:6;55520:71;;;55602;55668:3;55657:9;55653:19;55644:6;55602:71;;;55684:67;55746:3;55735:9;55731:19;55722:6;55684:67;;;55762:68;55825:3;55814:9;55810:19;55800:7;55762:68;;;55841:74;55910:3;55899:9;55895:19;55885:7;55841:74;;;54905:1020;;;;;;;;;;;;;;;;55932:320;56076:2;56061:18;;56090:69;56065:9;56132:6;56090:69;;56259:209;56375:2;56360:18;;56389:69;56364:9;56431:6;56389:69;;56475:256;56537:2;56531:9;56563:17;;;-1:-1;;;;;56623:34;;56659:22;;;56620:62;56617:2;;;56695:1;56692;56685:12;56617:2;56711;56704:22;56515:216;;-1:-1;56515:216;56738:304;;-1:-1;;;;;56889:6;56886:30;56883:2;;;56929:1;56926;56919:12;56883:2;-1:-1;56964:4;56952:17;;;57017:15;;56820:222;57993:317;;-1:-1;;;;;58124:6;58121:30;58118:2;;;58164:1;58161;58154:12;58118:2;-1:-1;58295:4;58231;58208:17;;;;-1:-1;;58204:33;58285:15;;58055:255;59299:151;59423:4;59414:14;;59371:79;59942:157;;60036:14;;;60078:4;60065:18;;;59995:104;60271:137;60374:12;;60345:63;61836:178;61954:19;;;62003:4;61994:14;;61947:67;63414:91;;63476:24;63494:5;63476:24;;63512:85;63578:13;63571:21;;63554:43;63683:144;63764:5;63770:52;63764:5;63770:52;;63834:121;-1:-1;;;;;63896:54;;63879:76;64041:88;64113:10;64102:22;;64085:44;64136:96;-1:-1;;;;;64197:30;;64180:52;64239:81;64310:4;64299:16;;64282:38;64327:104;-1:-1;;;;;64388:38;;64371:60;64438:129;;64525:37;64556:5;64574:157;;64671:55;64720:5;64671:55;;65171:144;;65267:43;65304:5;65267:43;;65322:116;;65409:24;65427:5;65409:24;;65688:106;;65766:23;65783:5;65766:23;;65801:106;;65879:23;65896:5;65879:23;;65914:106;;65992:23;66009:5;65992:23;;66028:145;66109:6;66104:3;66099;66086:30;-1:-1;66165:1;66147:16;;66140:27;66079:94;66182:268;66247:1;66254:101;66268:6;66265:1;66262:13;66254:101;;;66335:11;;;66329:18;66316:11;;;66309:39;66290:2;66283:10;66254:101;;;66370:6;66367:1;66364:13;66361:2;;;-1:-1;;66435:1;66417:16;;66410:27;66231:219;66539:97;66627:2;66607:14;-1:-1;;66603:28;;66587:49;66644:110;66732:1;66725:5;66722:12;66712:2;;66738:9;66761:117;66830:24;66848:5;66830:24;;;66823:5;66820:35;66810:2;;66869:1;66866;66859:12;66885:111;66951:21;66966:5;66951:21;;67003:117;67072:24;67090:5;67072:24;;67251:113;67318:22;67334:5;67318:22;;67371:115;67439:23;67456:5;67439:23;"
            },
            "methodIdentifiers": {
              "BALLOT_TYPEHASH()": "deaaa7cc",
              "DOMAIN_TYPEHASH()": "20606b70",
              "NAME()": "a3f4df7e",
              "__abdicate()": "760fbc13",
              "__acceptAdmin()": "b9a61961",
              "__executeSetTimelockPendingAdmin(address,uint256)": "21f43e42",
              "__queueSetTimelockPendingAdmin(address,uint256)": "91500671",
              "cancel(uint256)": "40e58ee5",
              "castVote(uint256,bool)": "15373e3d",
              "castVoteBySig(uint256,bool,uint8,bytes32,bytes32)": "4634c61f",
              "execute(uint256)": "fe0d94c1",
              "getActions(uint256)": "328dd982",
              "getReceipt(uint256,address)": "e23a9a52",
              "guardian()": "452a9320",
              "latestProposalIds(address)": "17977c61",
              "majorityPercentageVotes()": "e2653790",
              "proposalCount()": "da35c664",
              "proposalMaxOperations()": "7bdbe4d0",
              "proposalThreshold()": "b58131b0",
              "proposals(uint256)": "013cf08b",
              "propose(address[],uint256[],string[],bytes[],string)": "da95691a",
              "queue(uint256)": "ddf0b009",
              "queueProposals(uint256[])": "4b9c9a27",
              "quorumPercentageVotes()": "b2b0d91f",
              "quorumVotes()": "24bc1a64",
              "staking()": "4cf088d9",
              "state(uint256)": "3e4f49e6",
              "timelock()": "d33219b4",
              "votingDelay()": "3932abb1",
              "votingPeriod()": "02a251a3"
            }
          },
          "userdoc": {
            "methods": {
              "__abdicate()": {
                "notice": "Sets guardian address to zero."
              },
              "cancel(uint256)": {
                "notice": "Cancel a proposal by looping and cancelling everyone of its calls."
              },
              "castVote(uint256,bool)": {
                "notice": "Casts a vote by sender."
              },
              "castVoteBySig(uint256,bool,uint8,bytes32,bytes32)": {
                "notice": "Voting with EIP-712 Signatures.\t * Voting power can be delegated to any address, and then can be used to vote on proposals. A key benefit to users of by-signature functionality is that they can create a signed vote transaction for free, and have a trusted third-party spend rBTC(or ETH) on gas fees and write it to the blockchain for them.\t * The third party in this scenario, submitting the SOV-holder’s signed transaction holds a voting power that is for only a single proposal. The signatory still holds the power to vote on their own behalf in the proposal if the third party has not yet published the signed transaction that was given to them."
              },
              "execute(uint256)": {
                "notice": "Execute a proposal by looping and performing everyone of its calls."
              },
              "getActions(uint256)": {
                "notice": "Get a proposal list of its calls."
              },
              "getReceipt(uint256,address)": {
                "notice": "Get a proposal receipt."
              },
              "proposalMaxOperations()": {
                "notice": "The maximum number of actions that can be included in a proposal."
              },
              "proposalThreshold()": {
                "notice": "The number of votes required in order for a voter to become a proposer."
              },
              "propose(address[],uint256[],string[],bytes[],string)": {
                "notice": "Create a new proposal."
              },
              "queue(uint256)": {
                "notice": "Enqueue a proposal and everyone of its calls."
              },
              "quorumVotes()": {
                "notice": "The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed."
              },
              "state(uint256)": {
                "notice": "Get a proposal state."
              },
              "votingDelay()": {
                "notice": "The delay before voting on a proposal may take place, once proposed."
              }
            }
          }
        }
      },
      "contracts/mockup/LiquidityMiningMockup.sol": {
        "LiquidityMiningMockup": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "poolToken",
                  "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": true,
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "accumulatedReward",
                  "type": "uint256"
                }
              ],
              "name": "EmergencyWithdraw",
              "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": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocationPoint",
                  "type": "uint256"
                }
              ],
              "name": "PoolTokenAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newAllocationPoint",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldAllocationPoint",
                  "type": "uint256"
                }
              ],
              "name": "PoolTokenUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "RewardClaimed",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "SOVTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Withdraw",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "BONUS_BLOCK_MULTIPLIER",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "PRECISION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SECONDS_PER_BLOCK",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "_allocationPoint",
                  "type": "uint96"
                },
                {
                  "internalType": "bool",
                  "name": "_withUpdate",
                  "type": "bool"
                }
              ],
              "name": "add",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "bonusEndBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "claimReward",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "claimRewardFromAllPools",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                }
              ],
              "name": "emergencyWithdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "endBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "getEstimatedReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getMissedBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_from",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_to",
                  "type": "uint256"
                }
              ],
              "name": "getPassedBlocksWithBonusMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                }
              ],
              "name": "getPoolAccumulatedReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                }
              ],
              "name": "getPoolId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                }
              ],
              "name": "getPoolInfo",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "contract IERC20",
                      "name": "poolToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint96",
                      "name": "allocationPoint",
                      "type": "uint96"
                    },
                    {
                      "internalType": "uint256",
                      "name": "lastRewardBlock",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "accumulatedRewardPerShare",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LiquidityMiningStorage.PoolInfo",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getPoolInfoList",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "contract IERC20",
                      "name": "poolToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint96",
                      "name": "allocationPoint",
                      "type": "uint96"
                    },
                    {
                      "internalType": "uint256",
                      "name": "lastRewardBlock",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "accumulatedRewardPerShare",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LiquidityMiningStorage.PoolInfo[]",
                  "name": "",
                  "type": "tuple[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getPoolLength",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "getUserAccumulatedReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "getUserAccumulatedRewardList",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "getUserBalanceList",
              "outputs": [
                {
                  "internalType": "uint256[2][]",
                  "name": "",
                  "type": "uint256[2][]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "getUserInfo",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "rewardDebt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "accumulatedReward",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LiquidityMiningStorage.UserInfo",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "getUserInfoList",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "rewardDebt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "accumulatedReward",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LiquidityMiningStorage.UserInfo[]",
                  "name": "",
                  "type": "tuple[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "getUserPoolTokenBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_rewardTokensPerBlock",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_startDelayBlocks",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_numberOfBonusBlocks",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_wrapper",
                  "type": "address"
                },
                {
                  "internalType": "contract ILockedSOV",
                  "name": "_lockedSOV",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_unlockedImmediatelyPercent",
                  "type": "uint256"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOV",
              "outputs": [
                {
                  "internalType": "contract ILockedSOV",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "onTokensDeposited",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolInfoList",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "allocationPoint",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "lastRewardBlock",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "accumulatedRewardPerShare",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rewardTokensPerBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "contract ILockedSOV",
                  "name": "_lockedSOV",
                  "type": "address"
                }
              ],
              "name": "setLockedSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_unlockedImmediatelyPercent",
                  "type": "uint256"
                }
              ],
              "name": "setUnlockedImmediatelyPercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_wrapper",
                  "type": "address"
                }
              ],
              "name": "setWrapper",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "startBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "stopMining",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAllocationPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalUsersBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "transferSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "unlockedImmediatelyPercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "_allocationPoint",
                  "type": "uint96"
                },
                {
                  "internalType": "bool",
                  "name": "_updateAllFlag",
                  "type": "bool"
                }
              ],
              "name": "update",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "updateAllPools",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                }
              ],
              "name": "updatePool",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_poolTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint96[]",
                  "name": "_allocationPoints",
                  "type": "uint96[]"
                },
                {
                  "internalType": "bool",
                  "name": "_updateAllFlag",
                  "type": "bool"
                }
              ],
              "name": "updateTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userInfoMap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rewardDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "accumulatedReward",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrapper",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "add(address,uint96,bool)": {
                "params": {
                  "_allocationPoint": "the allocation point (weight) for the given pool",
                  "_poolToken": "the address of pool token",
                  "_withUpdate": "the flag whether we need to update all pools"
                }
              },
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "claimReward(address,address)": {
                "params": {
                  "_poolToken": "the address of pool token",
                  "_user": "the address of user to claim reward from (can be passed only by wrapper contract)"
                }
              },
              "claimRewardFromAllPools(address)": {
                "params": {
                  "_user": "the address of user to claim reward from (can be passed only by wrapper contract)"
                }
              },
              "deposit(address,uint256,address)": {
                "params": {
                  "_amount": "the amount of pool tokens",
                  "_poolToken": "the address of pool token",
                  "_user": "the address of user, tokens will be deposited to it or to msg.sender"
                }
              },
              "emergencyWithdraw(address)": {
                "details": "EMERGENCY ONLY",
                "params": {
                  "_poolToken": "the address of pool token"
                }
              },
              "getEstimatedReward(address,uint256,uint256)": {
                "params": {
                  "_amount": "the amount of tokens to be deposited",
                  "_duration": "the duration of liquidity providing in seconds",
                  "_poolToken": "the address of pool token"
                }
              },
              "getMissedBalance()": {
                "return": "The amount of SOV tokens according to totalUsersBalance  in excess of actual SOV balance of the LM contract."
              },
              "getPoolId(address)": {
                "params": {
                  "_poolToken": "the address of pool token"
                }
              },
              "getPoolInfo(address)": {
                "params": {
                  "_poolToken": "the address of pool token"
                }
              },
              "getUserAccumulatedReward(address,address)": {
                "params": {
                  "_poolToken": "the address of pool token",
                  "_user": "the user address"
                }
              },
              "getUserAccumulatedRewardList(address)": {
                "params": {
                  "_user": "the address of the user"
                }
              },
              "getUserBalanceList(address)": {
                "params": {
                  "_user": "the address of the user"
                }
              },
              "getUserInfo(address,address)": {
                "params": {
                  "_poolToken": "the address of pool token",
                  "_user": "the address of the user"
                }
              },
              "getUserInfoList(address)": {
                "params": {
                  "_user": "the address of the user"
                }
              },
              "getUserPoolTokenBalance(address,address)": {
                "params": {
                  "_poolToken": "the address of pool token",
                  "_user": "the address of the user"
                }
              },
              "initialize(address,uint256,uint256,uint256,address,address,uint256)": {
                "params": {
                  "_SOV": "The SOV token.",
                  "_lockedSOV": "The contract instance address of the lockedSOV vault.  SOV rewards are not paid directly to liquidity providers. Instead they  are deposited into a lockedSOV vault contract.",
                  "_numberOfBonusBlocks": "The number of blocks when each block will  be calculated as N blocks (BONUS_BLOCK_MULTIPLIER).",
                  "_rewardTokensPerBlock": "The number of reward tokens per block.",
                  "_startDelayBlocks": "The number of blocks should be passed to start  mining.",
                  "_unlockedImmediatelyPercent": "The % which determines how much will be unlocked immediately."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "onTokensDeposited(address,uint256)": {
                "details": "only callable by the pool which issues the tokens",
                "params": {
                  "_amount": "the minted amount",
                  "_user": "the user address"
                }
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "setLockedSOV(address)": {
                "params": {
                  "_lockedSOV": "The contract instance address of the lockedSOV vault."
                }
              },
              "setUnlockedImmediatelyPercent(uint256)": {
                "details": "@dev 10000 is 100%",
                "params": {
                  "_unlockedImmediatelyPercent": "The % which determines how much will be unlocked immediately."
                }
              },
              "setWrapper(address)": {
                "details": "can be set to zero address to remove wrapper"
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "transferSOV(address,uint256)": {
                "params": {
                  "_amount": "The amount to be transferred.",
                  "_receiver": "The address of the SOV receiver."
                }
              },
              "update(address,uint96,bool)": {
                "params": {
                  "_allocationPoint": "the allocation point (weight) for the given pool",
                  "_poolToken": "the address of pool token",
                  "_updateAllFlag": "the flag whether we need to update all pools"
                }
              },
              "updateAllPools()": {
                "details": "Be careful of gas spending!"
              },
              "updatePool(address)": {
                "params": {
                  "_poolToken": "the address of pool token"
                }
              },
              "updateTokens(address[],uint96[],bool)": {
                "params": {
                  "_allocationPoints": "array of allocation points (weight) for the given pools",
                  "_poolTokens": "array of addresses of pool tokens",
                  "_updateAllFlag": "the flag whether we need to update all pools"
                }
              },
              "withdraw(address,uint256,address)": {
                "params": {
                  "_amount": "the amount of pool tokens",
                  "_poolToken": "the address of pool token",
                  "_user": "the user address will be used to process a withdrawal (can be passed only by wrapper contract)"
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b61392d806200007a6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c8063787b40261161019d578063c680c0b7116100e9578063e3866c9a116100a2578063f2f46b3b1161007c578063f2f46b3b14610695578063f2fde38b1461069d578063f45346dc146106b0578063f729a404146106c35761030c565b8063e3866c9a1461064d578063e788d8d114610660578063f2801fe7146106755761030c565b8063c680c0b7146105e6578063caa9a08d146105f9578063d0452aa61461060c578063d6a49f0e1461061f578063d8c173c414610632578063da408679146106455761030c565b8063aaf5eb6811610156578063b9ec7d7411610130578063b9ec7d74146105b0578063c1d74258146105b8578063c2167d93146105c0578063c35a934d146105d35761030c565b8063aaf5eb6814610598578063ac210cc7146105a0578063b3944d52146105a85761030c565b8063787b4026146105355780637b46c54f146105585780638da5cb5b1461056b5780638f32d59b146105805780639a13ba2914610588578063a1a6690f146105905761030c565b8063429b62e51161025c5780635d50d0601161021557806362748fbb116101ef57806362748fbb146104dc57806369328dec146104fc5780636ff1c9bc1461050f57806370480275146105225761030c565b80635d50d060146104875780635e379679146104a75780635f02c145146104ba5761030c565b8063429b62e5146103f857806348c84d9e1461041857806348cd4cb114610438578063492e019d146104405780634953c7821461046157806356085d4c146104745761030c565b80631785f53c116102c957806329d0fa3e116102a357806329d0fa3e146103c25780632d0857a2146103ca5780633723de42146103dd578063414d57fb146103e55761030c565b80631785f53c146103945780631aed6553146103a75780631d8f889c146103af5761030c565b806306bfa93814610311578063083c63231461033a57806308dcb3601461034f5780630b1a2851146103645780630c43a7cd1461037757806310a168f91461038c575b600080fd5b61032461031f366004612996565b6106cb565b60405161033191906137bb565b60405180910390f35b61034261074b565b60405161033191906137d7565b610357610751565b60405161033191906135de565b610342610372366004612a6b565b610760565b61038a610385366004612aae565b6107f9565b005b610342610a42565b61038a6103a2366004612996565b610a47565b610342610ac6565b61038a6103bd366004612c31565b610acc565b610342610b52565b61038a6103d8366004612c4f565b610b58565b610342610bbc565b61038a6103f3366004612af1565b610c6e565b61040b610406366004612996565b610d69565b60405161033191906135d0565b61042b610426366004612996565b610d7e565b60405161033191906135bf565b610342610def565b61045361044e366004612996565b610df5565b6040516103319291906137e5565b61038a61046f3660046129b4565b610e38565b6103426104823660046129b4565b610e64565b61049a610495366004612996565b610e86565b604051610331919061358c565b6103426104b5366004612caa565b610f57565b6104cd6104c8366004612c8b565b610f63565b604051610331939291906137f3565b6104ef6104ea366004612996565b610f8f565b60405161033191906135ae565b61038a61050a366004612a1e565b611046565b61038a61051d366004612996565b6111d9565b61038a610530366004612996565b6112dc565b610548610543366004612c4f565b611355565b60405161033194939291906135ec565b61038a610566366004612996565b6113a1565b6105736113bb565b6040516103319190613520565b61040b6113ca565b6103426113ee565b6103426113f4565b6103426113fa565b610573611403565b610342611412565b61038a611418565b610342611437565b61038a6105ce366004612996565b61143c565b61038a6105e1366004612aae565b61149c565b61038a6105f43660046129ee565b611505565b610342610607366004612996565b6116fb565b61034261061a3660046129b4565b611706565b61038a61062d366004612996565b611723565b61038a6106403660046129ee565b6117b4565b61038a6117c1565b61038a61065b366004612b95565b611825565b61066861194c565b604051610331919061359d565b6106886106833660046129b4565b6119e2565b60405161033191906137c9565b610357611a44565b61038a6106ab366004612996565b611a53565b61038a6106be366004612a1e565b611a83565b610342611a90565b6106d3612887565b60006106de83611a96565b9050600781815481106106ed57fe5b60009182526020918290206040805160808101825260039390930290910180546001600160a01b0381168452600160a01b90046001600160601b03169383019390935260018301549082015260029091015460608201529392505050565b60055481565b600c546001600160a01b031681565b60008061076c85611a96565b905060006007828154811061077d57fe5b600091825260208220600390910201915043906107b16107a487601e63ffffffff611ad616565b839063ffffffff611b1816565b905060006107c184898585611b3d565b91506107ea905064e8d4a510006107de8a8463ffffffff611c6016565b9063ffffffff611ad616565b955050505050505b9392505050565b6108016113ca565b8061081b57503360009081526001602052604090205460ff165b6108405760405162461bcd60e51b81526004016108379061371b565b60405180910390fd5b6000826001600160601b0316116108695760405162461bcd60e51b81526004016108379061363b565b6001600160a01b03831661088f5760405162461bcd60e51b81526004016108379061376b565b6001600160a01b038316600090815260086020526040902054156108c55760405162461bcd60e51b81526004016108379061373b565b80156108d3576108d3611418565b600060035443116108e6576003546108e8565b435b600954909150610907906001600160601b03851663ffffffff611b1816565b600955604080516080810182526001600160a01b038087168083526001600160601b0380881660208086019182528587018881526000606088018181526007805460018101825581845299516003909a027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810180549751909816600160a01b029a8a166001600160a01b03199097169690961790981698909817909455517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68983015594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a90910155915481835260089093529083902091909155905133907f38132ae9e6e6c4e777015bac3679dadd42206fad607b97846830be4b412908c390610a34908790613801565b60405180910390a350505050565b600a81565b610a4f6113ca565b610a6b5760405162461bcd60e51b81526004016108379061371b565b6001600160a01b03811660009081526001602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f90610abb908390613520565b60405180910390a150565b60045481565b610ad46113ca565b80610aee57503360009081526001602052604090205460ff165b610b0a5760405162461bcd60e51b81526004016108379061371b565b6001600160a01b038116610b305760405162461bcd60e51b81526004016108379061365b565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60025481565b610b606113ca565b80610b7a57503360009081526001602052604090205460ff165b610b965760405162461bcd60e51b81526004016108379061371b565b6127108110610bb75760405162461bcd60e51b8152600401610837906136bb565b600e55565b600c546040516370a0823160e01b815260009182916001600160a01b03909116906370a0823190610bf1903090600401613520565b60206040518083038186803b158015610c0957600080fd5b505afa158015610c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c419190810190612c6d565b9050600b54811015610c6557600b54610c60908263ffffffff611c9a16565b610c68565b60005b91505090565b610c766113ca565b80610c9057503360009081526001602052604090205460ff165b610cac5760405162461bcd60e51b81526004016108379061371b565b838214610ccb5760405162461bcd60e51b81526004016108379061372b565b8015610cd957610cd9611418565b8360005b81811015610d605782610d0e57610d0e878783818110610cf957fe5b90506020020160206105669190810190612996565b610d58878783818110610d1d57fe5b9050602002016020610d329190810190612996565b868684818110610d3e57fe5b9050602002016020610d539190810190612cc9565b611cdc565b600101610cdd565b50505050505050565b60016020526000908152604090205460ff1681565b600754604080518281526020808402820101909152606091908290828015610db0578160200160208202803883390190505b50905060005b82811015610de757610dc88186611dc1565b828281518110610dd457fe5b6020908102919091010152600101610db6565b509392505050565b60035481565b6000806000610e0384611a96565b9050600060078281548110610e1457fe5b90600052602060002090600302019050610e2d81611eff565b935093505050915091565b6000610e4382611f1c565b90506000610e5084611a96565b9050610e5e81836001611f78565b50505050565b600080610e7084611a96565b9050610e7c8184611dc1565b9150505b92915050565b600754604080518281526020808402820101909152606091908290828015610ec857816020015b610eb56128c1565b815260200190600190039081610ead5790505b50905060005b82811015610de7576000818152600a602090815260408083206001600160a01b03891684529091529020548251839083908110610f0757fe5b6020026020010151600060028110610f1b57fe5b6020020152610f2a8186611dc1565b828281518110610f3657fe5b6020026020010151600160028110610f4a57fe5b6020020152600101610ece565b60006107f28383611ff5565b600a60209081526000928352604080842090915290825290208054600182015460029092015490919083565b600754604080518281526020808402820101909152606091908290828015610fd157816020015b610fbe6128df565b815260200190600190039081610fb65790505b50905060005b82811015610de7576000818152600a602090815260408083206001600160a01b03891684528252918290208251606081018452815481526001820154928101929092526002015491810191909152825183908390811061103357fe5b6020908102919091010152600101610fd7565b6001600160a01b03831660009081526008602052604090205461107b5760405162461bcd60e51b81526004016108379061367b565b600061108682611f1c565b9050600061109385611a96565b90506000600782815481106110a457fe5b60009182526020808320858452600a825260408085206001600160a01b038916865290925292208054600390920290920192508611156110f65760405162461bcd60e51b8152600401610837906136cb565b6110ff83612095565b61110982826121a7565b6111178782866000806121fe565b8054611129908763ffffffff611c9a16565b81556006546001600160a01b031633141561115f57815461115a906001600160a01b0316338863ffffffff61248c16565b61117b565b815461117b906001600160a01b0316858863ffffffff61248c16565b61118582826124e5565b866001600160a01b0316846001600160a01b03167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb886040516111c891906137d7565b60405180910390a350505050505050565b60006111e482611a96565b90506000600782815481106111f557fe5b60009182526020808320858452600a8252604080852033865290925292206003909102909101915061122683612095565b61123082826121a7565b6002810154600b546112479163ffffffff611c9a16565b600b558054600282018054600080855560018501819055909155835461127d906001600160a01b0316338463ffffffff61248c16565b61128784846124e5565b856001600160a01b0316336001600160a01b03167f1401b6ff3b281e84fd77353369caed48ba7e787dd3821db05cc006437360820184846040516112cc9291906137e5565b60405180910390a3505050505050565b6112e46113ca565b6113005760405162461bcd60e51b81526004016108379061371b565b6001600160a01b038116600090815260016020819052604091829020805460ff19169091179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33990610abb908390613520565b6007818154811061136257fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b0382169350600160a01b9091046001600160601b0316919084565b60006113ac82611a96565b90506113b781612095565b5050565b6000546001600160a01b031690565b600080546001600160a01b03166113df61250f565b6001600160a01b031614905090565b600b5481565b60095481565b64e8d4a5100081565b6006546001600160a01b031681565b60075490565b60075460005b818110156113b75761142f81612095565b60010161141e565b601e81565b6114446113ca565b8061145e57503360009081526001602052604090205460ff165b61147a5760405162461bcd60e51b81526004016108379061371b565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6114a46113ca565b806114be57503360009081526001602052604090205460ff165b6114da5760405162461bcd60e51b81526004016108379061371b565b80156114ed576114e8611418565b6114f6565b6114f6836113a1565b6115008383611cdc565b505050565b61150d6113ca565b8061152757503360009081526001602052604090205460ff165b6115435760405162461bcd60e51b81526004016108379061371b565b6001600160a01b0382166115695760405162461bcd60e51b8152600401610837906136fb565b806115865760405162461bcd60e51b81526004016108379061374b565b600c546040516370a0823160e01b81526000916001600160a01b0316906370a08231906115b7903090600401613520565b60206040518083038186803b1580156115cf57600080fd5b505afa1580156115e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116079190810190612c6d565b905080821115611615578091505b600c5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906116479086908690600401613556565b602060405180830381600087803b15801561166157600080fd5b505af1158015611675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116999190810190612b77565b6116b55760405162461bcd60e51b81526004016108379061368b565b826001600160a01b03167fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad836040516116ee91906137d7565b60405180910390a2505050565b6000610e8082611a96565b60006117106128df565b61171a84846119e2565b51949350505050565b600061172e82611f1c565b60075490915060005b81811015611755578061174c81856000611f78565b50600101611737565b50600d546040516315b6fc1560e11b81526001600160a01b0390911690632b6df82a90611786908590600401613520565b600060405180830381600087803b1580156117a057600080fd5b505af1158015610d60573d6000803e3d6000fd5b6113b73382846001612513565b6117c96113ca565b806117e357503360009081526001602052604090205460ff165b6117ff5760405162461bcd60e51b81526004016108379061371b565b6005541561181f5760405162461bcd60e51b81526004016108379061379b565b43600555565b61182d6113ca565b8061184757503360009081526001602052604090205460ff165b6118635760405162461bcd60e51b81526004016108379061371b565b600c546001600160a01b03161561188c5760405162461bcd60e51b81526004016108379061377b565b6001600160a01b0387166118b25760405162461bcd60e51b81526004016108379061376b565b600085116118d25760405162461bcd60e51b8152600401610837906136db565b61271081106118f35760405162461bcd60e51b8152600401610837906136bb565b600c80546001600160a01b03199081166001600160a01b03998a16179091556002969096554394909401600381905592909201600455600680548516918616919091179055600d80549093169316929092179055600e55565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156119d9576000848152602090819020604080516080810182526003860290920180546001600160a01b0381168452600160a01b90046001600160601b031683850152600180820154928401929092526002015460608301529083529092019101611970565b50505050905090565b6119ea6128df565b60006119f584611a96565b6000908152600a602090815260408083206001600160a01b0387168452825291829020825160608101845281548152600182015492810192909252600201549181019190915291505092915050565b600d546001600160a01b031681565b611a5b6113ca565b611a775760405162461bcd60e51b81526004016108379061371b565b611a808161265e565b50565b6115008383836000612513565b600e5481565b6001600160a01b03811660009081526008602052604081205480611acc5760405162461bcd60e51b81526004016108379061367b565b6000190192915050565b60006107f283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126df565b6000828201838110156107f25760405162461bcd60e51b81526004016108379061369b565b6000806000611b4c8585611ff5565b90506000611b9b6009546107de8a60000160149054906101000a90046001600160601b03166001600160601b0316611b8f60025487611c6090919063ffffffff16565b9063ffffffff611c6016565b88546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190611bd0903090600401613520565b60206040518083038186803b158015611be857600080fd5b505afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c209190810190612c6d565b9050611c32818963ffffffff611b1816565b90506000611c4f826107de8564e8d4a5100063ffffffff611c6016565b929a92995091975050505050505050565b600082611c6f57506000610e80565b82820282848281611c7c57fe5b04146107f25760405162461bcd60e51b81526004016108379061370b565b60006107f283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612716565b6000611ce783611a96565b9050600060078281548110611cf857fe5b60009182526020909120600390910201546009546001600160601b03600160a01b90920482169250611d4391851690611d37908463ffffffff611c9a16565b9063ffffffff611b1816565b6009819055508260078381548110611d5757fe5b6000918252602090912060039091020180546001600160601b0392909216600160a01b026001600160a01b039283161790556040519085169033907f7b327867ecd5d7f5165f3d8af5193f1255f215acb14e229b529a4f8a9991abbc90610a34908790869061380f565b60008060078481548110611dd157fe5b60009182526020808320878452600a825260408085206001600160a01b03808a16875293528085206002600390950290920193840154845491516370a0823160e01b815294965091949193919216906370a0823190611e34903090600401613520565b60206040518083038186803b158015611e4c57600080fd5b505afa158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e849190810190612c6d565b9050836001015443118015611e9857508015155b15611ec0576000611ea885611eff565b9150611ebc9050838263ffffffff611b1816565b9250505b611ef48360010154611ee864e8d4a510006107de868860000154611c6090919063ffffffff16565b9063ffffffff611c9a16565b979650505050505050565b600080611f13836000856001015443611b3d565b91509150915091565b6000336001600160a01b03831615610e80576006546001600160a01b0316331480611f5557503360009081526008602052604090205415155b611f715760405162461bcd60e51b81526004016108379061375b565b5090919050565b600060078481548110611f8757fe5b60009182526020808320878452600a825260408085206001600160a01b0389168652909252922060039091029091019150611fc185612095565b611fcb82826121a7565b8154611fe4906001600160a01b031682868660016121fe565b611fee82826124e5565b5050505050565b60006003548310156120075760035492505b600060055411801561201a575060055482115b156120255760055491505b600454821161204a57612043600a611b8f848663ffffffff611c9a16565b9050610e80565b600454831061206357612043828463ffffffff611c9a16565b61204361207b60045484611c9a90919063ffffffff16565b611d37600a611b8f87600454611c9a90919063ffffffff16565b6000600782815481106120a457fe5b90600052602060002090600302019050806001015443116120c55750611a80565b80546040516370a0823160e01b81526000916001600160a01b0316906370a08231906120f5903090600401613520565b60206040518083038186803b15801561210d57600080fd5b505afa158015612121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121459190810190612c6d565b905080612159575043600190910155611a80565b60008061216584611eff565b6002860154919350915061217f908263ffffffff611b1816565b6002850155436001850155600b5461219d908363ffffffff611b1816565b600b555050505050565b8054156113b75760006121dc8260010154611ee864e8d4a510006107de87600201548760000154611c6090919063ffffffff16565b60028301549091506121f4908263ffffffff611b1816565b6002830155505050565b6002840154600c546040516370a0823160e01b81526000916001600160a01b0316906370a0823190612234903090600401613520565b60206040518083038186803b15801561224c57600080fd5b505afa158015612260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122849190810190612c6d565b905081811061246e57600b546122a0908363ffffffff611c9a16565b600b5560006002870155600c54600d5460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926122e0929116908690600401613556565b602060405180830381600087803b1580156122fa57600080fd5b505af115801561230e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123329190810190612b77565b61234e5760405162461bcd60e51b8152600401610837906136eb565b600d54600e54604051630efe6a8b60e01b81526001600160a01b0390921691630efe6a8b916123839189918791600401613571565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b50505050831561241e57600d546040516315b6fc1560e11b81526001600160a01b0390911690632b6df82a906123eb908890600401613520565b600060405180830381600087803b15801561240557600080fd5b505af1158015612419573d6000803e3d6000fd5b505050505b866001600160a01b0316856001600160a01b03167f0aa4d283470c904c551d18bb894d37e17674920f3261a7f854be501e25f421b78460405161246191906137d7565b60405180910390a3610d60565b8215610d605760405162461bcd60e51b81526004016108379061364b565b60405161150090849063a9059cbb60e01b906124ae9086908690602401613556565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612742565b600282015481546125069164e8d4a51000916107de9163ffffffff611c6016565b60019091015550565b3390565b6001600160a01b0384166000908152600860205260409020546125485760405162461bcd60e51b81526004016108379061367b565b60006001600160a01b03831661255e5733612560565b825b9050600061256d86611a96565b905060006007828154811061257e57fe5b60009182526020808320858452600a825260408085206001600160a01b03891686529092529220600390910290910191506125b883612095565b6125c282826121a7565b86156125ff57846125ea5781546125ea906001600160a01b031633308a63ffffffff61282716565b80546125fc908863ffffffff611b1816565b81555b61260982826124e5565b876001600160a01b0316846001600160a01b03167f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f628960405161264c91906137d7565b60405180910390a35050505050505050565b6001600160a01b0381166126845760405162461bcd60e51b81526004016108379061366b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081836127005760405162461bcd60e51b8152600401610837919061362a565b50600083858161270c57fe5b0495945050505050565b6000818484111561273a5760405162461bcd60e51b8152600401610837919061362a565b505050900390565b612754826001600160a01b031661284b565b6127705760405162461bcd60e51b8152600401610837906137ab565b60006060836001600160a01b03168360405161278c9190613514565b6000604051808303816000865af19150503d80600081146127c9576040519150601f19603f3d011682016040523d82523d6000602084013e6127ce565b606091505b5091509150816127f05760405162461bcd60e51b8152600401610837906136ab565b805115610e5e578080602001905161280b9190810190612b77565b610e5e5760405162461bcd60e51b81526004016108379061378b565b604051610e5e9085906323b872dd60e01b906124ae9087908790879060240161352e565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061287f57508115155b949350505050565b604051806080016040528060006001600160a01b0316815260200160006001600160601b0316815260200160008152602001600081525090565b60405180604001604052806002906020820280388339509192915050565b60405180606001604052806000815260200160008152602001600081525090565b8035610e80816138b2565b60008083601f84011261291d57600080fd5b50813567ffffffffffffffff81111561293557600080fd5b60208301915083602082028301111561294d57600080fd5b9250929050565b8035610e80816138c6565b8051610e80816138c6565b8035610e80816138cf565b8035610e80816138d8565b8051610e80816138d8565b8035610e80816138e1565b6000602082840312156129a857600080fd5b6000610e7c8484612900565b600080604083850312156129c757600080fd5b60006129d38585612900565b92505060206129e485828601612900565b9150509250929050565b60008060408385031215612a0157600080fd5b6000612a0d8585612900565b92505060206129e485828601612975565b600080600060608486031215612a3357600080fd5b6000612a3f8686612900565b9350506020612a5086828701612975565b9250506040612a6186828701612900565b9150509250925092565b600080600060608486031215612a8057600080fd5b6000612a8c8686612900565b9350506020612a9d86828701612975565b9250506040612a6186828701612975565b600080600060608486031215612ac357600080fd5b6000612acf8686612900565b9350506020612ae08682870161298b565b9250506040612a6186828701612954565b600080600080600060608688031215612b0957600080fd5b853567ffffffffffffffff811115612b2057600080fd5b612b2c8882890161290b565b9550955050602086013567ffffffffffffffff811115612b4b57600080fd5b612b578882890161290b565b93509350506040612b6a88828901612954565b9150509295509295909350565b600060208284031215612b8957600080fd5b6000610e7c848461295f565b600080600080600080600060e0888a031215612bb057600080fd5b6000612bbc8a8a61296a565b9750506020612bcd8a828b01612975565b9650506040612bde8a828b01612975565b9550506060612bef8a828b01612975565b9450506080612c008a828b01612900565b93505060a0612c118a828b0161296a565b92505060c0612c228a828b01612975565b91505092959891949750929550565b600060208284031215612c4357600080fd5b6000610e7c848461296a565b600060208284031215612c6157600080fd5b6000610e7c8484612975565b600060208284031215612c7f57600080fd5b6000610e7c8484612980565b60008060408385031215612c9e57600080fd5b60006129d38585612975565b60008060408385031215612cbd57600080fd5b6000612a0d8585612975565b600060208284031215612cdb57600080fd5b6000610e7c848461298b565b6000612cf38383612e3b565b505060400190565b6000612d07838361347c565b505060800190565b6000612d1b83836134c6565b505060600190565b6000612d2f83836134f9565b505060200190565b612d408161383e565b82525050565b6000612d5182613826565b612d5b8185613830565b9350612d668361381d565b8060005b83811015612d94578151612d7e8882612ce7565b9750612d898361381d565b925050600101612d6a565b509495945050505050565b6000612daa82613826565b612db48185613830565b9350612dbf8361381d565b8060005b83811015612d94578151612dd78882612cfb565b9750612de28361381d565b925050600101612dc3565b6000612df882613826565b612e028185613830565b9350612e0d8361381d565b8060005b83811015612d94578151612e258882612d0f565b9750612e308361381d565b925050600101612e11565b612e448161382a565b612e4e8184613839565b9250612e5982613823565b8060005b83811015612e87578151612e718782612d23565b9650612e7c8361381d565b925050600101612e5d565b505050505050565b6000612e9a82613826565b612ea48185613830565b9350612eaf8361381d565b8060005b83811015612d94578151612ec78882612d23565b9750612ed28361381d565b925050600101612eb3565b612d4081613849565b6000612ef182613826565b612efb8185613839565b9350612f0b81856020860161387c565b9290920192915050565b612d408161384e565b6000612f2982613826565b612f338185613830565b9350612f4381856020860161387c565b612f4c816138a8565b9093019392505050565b6000612f63601883613830565b7f496e76616c696420616c6c6f636174696f6e20706f696e740000000000000000815260200192915050565b6000612f9c601683613830565b7510db185a5b5a5b99c81c995dd85c990819985a5b195960521b815260200192915050565b6000612fce601a83613830565b7f496e76616c6964206c6f636b6564534f5620416464726573732e000000000000815260200192915050565b6000613007602683613830565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b600061304f601483613830565b73141bdbdb081d1bdad95b881b9bdd08199bdd5b9960621b815260200192915050565b600061307f600f83613830565b6e151c985b9cd9995c8819985a5b1959608a1b815260200192915050565b60006130aa601b83613830565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006130e3602083613830565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b600061311c603783613830565b7f556e6c6f636b656420696d6d6564696174656c792070657263656e742068617381527f20746f206265206c657373207468616e2031303030302e000000000000000000602082015260400192915050565b600061317b601283613830565b714e6f7420656e6f7567682062616c616e636560701b815260200192915050565b60006131a9601383613830565b72496e76616c696420737461727420626c6f636b60681b815260200192915050565b60006131d8600e83613830565b6d105c1c1c9bdd994819985a5b195960921b815260200192915050565b6000613202601883613830565b7f5265636569766572206164647265737320696e76616c69640000000000000000815260200192915050565b600061323b602183613830565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061327e600c83613830565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006132a6600f83613830565b6e082e4e4c2f2e640dad2e6dac2e8c6d608b1b815260200192915050565b60006132d1601383613830565b72151bdad95b88185b1c9958591e481859191959606a1b815260200192915050565b6000613300600e83613830565b6d105b5bdd5b9d081a5b9d985b1a5960921b815260200192915050565b600061332a602d83613830565b7f6f6e6c792077726170706572206f7220706f6f6c73206d61792077697468647281526c30bb903337b91030903ab9b2b960991b602082015260400192915050565b6000613379601583613830565b74496e76616c696420746f6b656e206164647265737360581b815260200192915050565b60006133aa601383613830565b72105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b815260200192915050565b60006133d9602a83613830565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b6000613425600f83613830565b6e105b1c9958591e481cdd1bdc1c1959608a1b815260200192915050565b6000613450601f83613830565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b8051608083019061348d8482612f15565b5060208201516134a0602085018261350b565b5060408201516134b360408501826134f9565b506060820151610e5e60608501826134f9565b805160608301906134d784826134f9565b5060208201516134ea60208501826134f9565b506040820151610e5e60408501825b612d4081613823565b612d4081613871565b612d4081613865565b60006107f28284612ee6565b60208101610e808284612d37565b6060810161353c8286612d37565b6135496020830185612d37565b61287f60408301846134f9565b604081016135648285612d37565b6107f260208301846134f9565b6060810161357f8286612d37565b61354960208301856134f9565b602080825281016107f28184612d46565b602080825281016107f28184612d9f565b602080825281016107f28184612ded565b602080825281016107f28184612e8f565b60208101610e808284612edd565b60208101610e808284612f15565b608081016135fa8287612f15565b613607602083018661350b565b61361460408301856134f9565b61362160608301846134f9565b95945050505050565b602080825281016107f28184612f1e565b60208082528101610e8081612f56565b60208082528101610e8081612f8f565b60208082528101610e8081612fc1565b60208082528101610e8081612ffa565b60208082528101610e8081613042565b60208082528101610e8081613072565b60208082528101610e808161309d565b60208082528101610e80816130d6565b60208082528101610e808161310f565b60208082528101610e808161316e565b60208082528101610e808161319c565b60208082528101610e80816131cb565b60208082528101610e80816131f5565b60208082528101610e808161322e565b60208082528101610e8081613271565b60208082528101610e8081613299565b60208082528101610e80816132c4565b60208082528101610e80816132f3565b60208082528101610e808161331d565b60208082528101610e808161336c565b60208082528101610e808161339d565b60208082528101610e80816133cc565b60208082528101610e8081613418565b60208082528101610e8081613443565b60808101610e80828461347c565b60608101610e8082846134c6565b60208101610e8082846134f9565b6040810161356482856134f9565b6060810161357f82866134f9565b60208101610e808284613502565b604081016135648285613502565b60200190565b90565b5190565b50600290565b90815260200190565b919050565b6000610e8082613859565b151590565b6000610e808261383e565b6001600160a01b031690565b6001600160601b031690565b6000610e8082613865565b60005b8381101561389757818101518382015260200161387f565b83811115610e5e5750506000910152565b601f01601f191690565b6138bb8161383e565b8114611a8057600080fd5b6138bb81613849565b6138bb8161384e565b6138bb81613823565b6138bb8161386556fea365627a7a72315820f129347a7ad7c0b86f8f36163bfe52b7d780d5ac97abf3baa44d2e45f78f03ce6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x392D DUP1 PUSH3 0x7A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x787B4026 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xC680C0B7 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xE3866C9A GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2F46B3B GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x695 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x69D JUMPI DUP1 PUSH4 0xF45346DC EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0xF729A404 EQ PUSH2 0x6C3 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xE3866C9A EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0xE788D8D1 EQ PUSH2 0x660 JUMPI DUP1 PUSH4 0xF2801FE7 EQ PUSH2 0x675 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x5E6 JUMPI DUP1 PUSH4 0xCAA9A08D EQ PUSH2 0x5F9 JUMPI DUP1 PUSH4 0xD0452AA6 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xD6A49F0E EQ PUSH2 0x61F JUMPI DUP1 PUSH4 0xD8C173C4 EQ PUSH2 0x632 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x645 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAAF5EB68 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9EC7D74 GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9EC7D74 EQ PUSH2 0x5B0 JUMPI DUP1 PUSH4 0xC1D74258 EQ PUSH2 0x5B8 JUMPI DUP1 PUSH4 0xC2167D93 EQ PUSH2 0x5C0 JUMPI DUP1 PUSH4 0xC35A934D EQ PUSH2 0x5D3 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAAF5EB68 EQ PUSH2 0x598 JUMPI DUP1 PUSH4 0xAC210CC7 EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0xB3944D52 EQ PUSH2 0x5A8 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x787B4026 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x7B46C54F EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x56B JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x9A13BA29 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0xA1A6690F EQ PUSH2 0x590 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x429B62E5 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x5D50D060 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x62748FBB GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x62748FBB EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0x69328DEC EQ PUSH2 0x4FC JUMPI DUP1 PUSH4 0x6FF1C9BC EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x522 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x5D50D060 EQ PUSH2 0x487 JUMPI DUP1 PUSH4 0x5E379679 EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0x5F02C145 EQ PUSH2 0x4BA JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0x48C84D9E EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x48CD4CB1 EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0x492E019D EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x4953C782 EQ PUSH2 0x461 JUMPI DUP1 PUSH4 0x56085D4C EQ PUSH2 0x474 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x29D0FA3E GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x29D0FA3E EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x2D0857A2 EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0x3723DE42 EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0x414D57FB EQ PUSH2 0x3E5 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x1785F53C EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1AED6553 EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x1D8F889C EQ PUSH2 0x3AF JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6BFA938 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x83C6323 EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0xB1A2851 EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0xC43A7CD EQ PUSH2 0x377 JUMPI DUP1 PUSH4 0x10A168F9 EQ PUSH2 0x38C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x324 PUSH2 0x31F CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x37BB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x342 PUSH2 0x74B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x37D7 JUMP JUMPDEST PUSH2 0x357 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x35DE JUMP JUMPDEST PUSH2 0x342 PUSH2 0x372 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A6B JUMP JUMPDEST PUSH2 0x760 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x385 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AAE JUMP JUMPDEST PUSH2 0x7F9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x342 PUSH2 0xA42 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x3A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xA47 JUMP JUMPDEST PUSH2 0x342 PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2C31 JUMP JUMPDEST PUSH2 0xACC JUMP JUMPDEST PUSH2 0x342 PUSH2 0xB52 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x3D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C4F JUMP JUMPDEST PUSH2 0xB58 JUMP JUMPDEST PUSH2 0x342 PUSH2 0xBBC JUMP JUMPDEST PUSH2 0x38A PUSH2 0x3F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF1 JUMP JUMPDEST PUSH2 0xC6E JUMP JUMPDEST PUSH2 0x40B PUSH2 0x406 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xD69 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x35D0 JUMP JUMPDEST PUSH2 0x42B PUSH2 0x426 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xD7E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x35BF JUMP JUMPDEST PUSH2 0x342 PUSH2 0xDEF JUMP JUMPDEST PUSH2 0x453 PUSH2 0x44E CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xDF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP3 SWAP2 SWAP1 PUSH2 0x37E5 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x46F CALLDATASIZE PUSH1 0x4 PUSH2 0x29B4 JUMP JUMPDEST PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x482 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B4 JUMP JUMPDEST PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x495 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xE86 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x358C JUMP JUMPDEST PUSH2 0x342 PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CAA JUMP JUMPDEST PUSH2 0xF57 JUMP JUMPDEST PUSH2 0x4CD PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C8B JUMP JUMPDEST PUSH2 0xF63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x37F3 JUMP JUMPDEST PUSH2 0x4EF PUSH2 0x4EA CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xF8F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x35AE JUMP JUMPDEST PUSH2 0x38A PUSH2 0x50A CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1E JUMP JUMPDEST PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x51D CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x11D9 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x530 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x12DC JUMP JUMPDEST PUSH2 0x548 PUSH2 0x543 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C4F JUMP JUMPDEST PUSH2 0x1355 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x35EC JUMP JUMPDEST PUSH2 0x38A PUSH2 0x566 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x13A1 JUMP JUMPDEST PUSH2 0x573 PUSH2 0x13BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST PUSH2 0x40B PUSH2 0x13CA JUMP JUMPDEST PUSH2 0x342 PUSH2 0x13EE JUMP JUMPDEST PUSH2 0x342 PUSH2 0x13F4 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x573 PUSH2 0x1403 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x1412 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x1418 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x1437 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x5CE CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x143C JUMP JUMPDEST PUSH2 0x38A PUSH2 0x5E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AAE JUMP JUMPDEST PUSH2 0x149C JUMP JUMPDEST PUSH2 0x38A PUSH2 0x5F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x29EE JUMP JUMPDEST PUSH2 0x1505 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x607 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x16FB JUMP JUMPDEST PUSH2 0x342 PUSH2 0x61A CALLDATASIZE PUSH1 0x4 PUSH2 0x29B4 JUMP JUMPDEST PUSH2 0x1706 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x62D CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x1723 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x640 CALLDATASIZE PUSH1 0x4 PUSH2 0x29EE JUMP JUMPDEST PUSH2 0x17B4 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x17C1 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x65B CALLDATASIZE PUSH1 0x4 PUSH2 0x2B95 JUMP JUMPDEST PUSH2 0x1825 JUMP JUMPDEST PUSH2 0x668 PUSH2 0x194C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x359D JUMP JUMPDEST PUSH2 0x688 PUSH2 0x683 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B4 JUMP JUMPDEST PUSH2 0x19E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x37C9 JUMP JUMPDEST PUSH2 0x357 PUSH2 0x1A44 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x6AB CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x1A53 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x6BE CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1E JUMP JUMPDEST PUSH2 0x1A83 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x1A90 JUMP JUMPDEST PUSH2 0x6D3 PUSH2 0x2887 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DE DUP4 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x6ED JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x3 SWAP4 SWAP1 SWAP4 MUL SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP5 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x76C DUP6 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x77D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD SWAP2 POP NUMBER SWAP1 PUSH2 0x7B1 PUSH2 0x7A4 DUP8 PUSH1 0x1E PUSH4 0xFFFFFFFF PUSH2 0x1AD6 AND JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7C1 DUP5 DUP10 DUP6 DUP6 PUSH2 0x1B3D JUMP JUMPDEST SWAP2 POP PUSH2 0x7EA SWAP1 POP PUSH5 0xE8D4A51000 PUSH2 0x7DE DUP11 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1C60 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1AD6 AND JUMP JUMPDEST SWAP6 POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x801 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0x81B JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x840 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x869 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x363B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x88F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x376B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x8C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x373B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8D3 JUMPI PUSH2 0x8D3 PUSH2 0x1418 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD NUMBER GT PUSH2 0x8E6 JUMPI PUSH1 0x3 SLOAD PUSH2 0x8E8 JUMP JUMPDEST NUMBER JUMPDEST PUSH1 0x9 SLOAD SWAP1 SWAP2 POP PUSH2 0x907 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP9 AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 DUP3 MSTORE DUP6 DUP8 ADD DUP9 DUP2 MSTORE PUSH1 0x0 PUSH1 0x60 DUP9 ADD DUP2 DUP2 MSTORE PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE DUP2 DUP5 MSTORE SWAP10 MLOAD PUSH1 0x3 SWAP1 SWAP11 MUL PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C688 DUP2 ADD DUP1 SLOAD SWAP8 MLOAD SWAP1 SWAP9 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP11 DUP11 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP9 AND SWAP9 SWAP1 SWAP9 OR SWAP1 SWAP5 SSTORE MLOAD PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C689 DUP4 ADD SSTORE SWAP5 MLOAD PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C68A SWAP1 SWAP2 ADD SSTORE SWAP2 SLOAD DUP2 DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP4 MSTORE SWAP1 DUP4 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP1 MLOAD CALLER SWAP1 PUSH32 0x38132AE9E6E6C4E777015BAC3679DADD42206FAD607B97846830BE4B412908C3 SWAP1 PUSH2 0xA34 SWAP1 DUP8 SWAP1 PUSH2 0x3801 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH2 0xA4F PUSH2 0x13CA JUMP JUMPDEST PUSH2 0xA6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0xABB SWAP1 DUP4 SWAP1 PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xAD4 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0xAEE JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xB0A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x365B JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xB60 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0xB7A JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xB96 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0xBB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36BB JUMP JUMPDEST PUSH1 0xE SSTORE JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xBF1 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC41 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C6D JUMP JUMPDEST SWAP1 POP PUSH1 0xB SLOAD DUP2 LT ISZERO PUSH2 0xC65 JUMPI PUSH1 0xB SLOAD PUSH2 0xC60 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST PUSH2 0xC68 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0xC76 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0xC90 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xCAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST DUP4 DUP3 EQ PUSH2 0xCCB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x372B JUMP JUMPDEST DUP1 ISZERO PUSH2 0xCD9 JUMPI PUSH2 0xCD9 PUSH2 0x1418 JUMP JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD60 JUMPI DUP3 PUSH2 0xD0E JUMPI PUSH2 0xD0E DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0xCF9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x566 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xD58 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0xD1D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xD32 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2996 JUMP JUMPDEST DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0xD3E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xD53 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2CC9 JUMP JUMPDEST PUSH2 0x1CDC JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xCDD JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP2 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xDB0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xDE7 JUMPI PUSH2 0xDC8 DUP2 DUP7 PUSH2 0x1DC1 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xDD4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xDB6 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xE03 DUP5 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xE14 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD SWAP1 POP PUSH2 0xE2D DUP2 PUSH2 0x1EFF JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE43 DUP3 PUSH2 0x1F1C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE50 DUP5 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH2 0xE5E DUP2 DUP4 PUSH1 0x1 PUSH2 0x1F78 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE70 DUP5 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH2 0xE7C DUP2 DUP5 PUSH2 0x1DC1 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP2 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xEC8 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xEB5 PUSH2 0x28C1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xEAD JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xDE7 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0xF07 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0xF1B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MSTORE PUSH2 0xF2A DUP2 DUP7 PUSH2 0x1DC1 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF36 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x2 DUP2 LT PUSH2 0xF4A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0xECE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F2 DUP4 DUP4 PUSH2 0x1FF5 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP2 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xFD1 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xFBE PUSH2 0x28DF JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xFB6 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xDE7 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1033 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xFD7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x107B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x367B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1086 DUP3 PUSH2 0x1F1C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1093 DUP6 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x10A4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x3 SWAP1 SWAP3 MUL SWAP1 SWAP3 ADD SWAP3 POP DUP7 GT ISZERO PUSH2 0x10F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36CB JUMP JUMPDEST PUSH2 0x10FF DUP4 PUSH2 0x2095 JUMP JUMPDEST PUSH2 0x1109 DUP3 DUP3 PUSH2 0x21A7 JUMP JUMPDEST PUSH2 0x1117 DUP8 DUP3 DUP7 PUSH1 0x0 DUP1 PUSH2 0x21FE JUMP JUMPDEST DUP1 SLOAD PUSH2 0x1129 SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST DUP2 SSTORE PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO PUSH2 0x115F JUMPI DUP2 SLOAD PUSH2 0x115A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP9 PUSH4 0xFFFFFFFF PUSH2 0x248C AND JUMP JUMPDEST PUSH2 0x117B JUMP JUMPDEST DUP2 SLOAD PUSH2 0x117B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x248C AND JUMP JUMPDEST PUSH2 0x1185 DUP3 DUP3 PUSH2 0x24E5 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9B1BFA7FA9EE420A16E124F794C35AC9F90472ACC99140EB2F6447C714CAD8EB DUP9 PUSH1 0x40 MLOAD PUSH2 0x11C8 SWAP2 SWAP1 PUSH2 0x37D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11E4 DUP3 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x11F5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 CALLER DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x1226 DUP4 PUSH2 0x2095 JUMP JUMPDEST PUSH2 0x1230 DUP3 DUP3 PUSH2 0x21A7 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0xB SLOAD PUSH2 0x1247 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST PUSH1 0xB SSTORE DUP1 SLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0x0 DUP1 DUP6 SSTORE PUSH1 0x1 DUP6 ADD DUP2 SWAP1 SSTORE SWAP1 SWAP2 SSTORE DUP4 SLOAD PUSH2 0x127D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP5 PUSH4 0xFFFFFFFF PUSH2 0x248C AND JUMP JUMPDEST PUSH2 0x1287 DUP5 DUP5 PUSH2 0x24E5 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1401B6FF3B281E84FD77353369CAED48BA7E787DD3821DB05CC0064373608201 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x12CC SWAP3 SWAP2 SWAP1 PUSH2 0x37E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12E4 PUSH2 0x13CA JUMP JUMPDEST PUSH2 0x1300 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0xABB SWAP1 DUP4 SWAP1 PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1362 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP4 POP PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13AC DUP3 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH2 0x13B7 DUP2 PUSH2 0x2095 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13DF PUSH2 0x250F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH5 0xE8D4A51000 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x13B7 JUMPI PUSH2 0x142F DUP2 PUSH2 0x2095 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x141E JUMP JUMPDEST PUSH1 0x1E DUP2 JUMP JUMPDEST PUSH2 0x1444 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0x145E JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x147A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x14A4 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0x14BE JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x14DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14ED JUMPI PUSH2 0x14E8 PUSH2 0x1418 JUMP JUMPDEST PUSH2 0x14F6 JUMP JUMPDEST PUSH2 0x14F6 DUP4 PUSH2 0x13A1 JUMP JUMPDEST PUSH2 0x1500 DUP4 DUP4 PUSH2 0x1CDC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x150D PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0x1527 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1543 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1569 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36FB JUMP JUMPDEST DUP1 PUSH2 0x1586 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x374B JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x15B7 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1607 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C6D JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1615 JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x1647 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3556 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1675 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1699 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2B77 JUMP JUMPDEST PUSH2 0x16B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x368B JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD DUP4 PUSH1 0x40 MLOAD PUSH2 0x16EE SWAP2 SWAP1 PUSH2 0x37D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE80 DUP3 PUSH2 0x1A96 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1710 PUSH2 0x28DF JUMP JUMPDEST PUSH2 0x171A DUP5 DUP5 PUSH2 0x19E2 JUMP JUMPDEST MLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x172E DUP3 PUSH2 0x1F1C JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1755 JUMPI DUP1 PUSH2 0x174C DUP2 DUP6 PUSH1 0x0 PUSH2 0x1F78 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1737 JUMP JUMPDEST POP PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x15B6FC15 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2B6DF82A SWAP1 PUSH2 0x1786 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x13B7 CALLER DUP3 DUP5 PUSH1 0x1 PUSH2 0x2513 JUMP JUMPDEST PUSH2 0x17C9 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0x17E3 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x17FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x5 SLOAD ISZERO PUSH2 0x181F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x379B JUMP JUMPDEST NUMBER PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH2 0x182D PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0x1847 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1863 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x188C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x377B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x18B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x376B JUMP JUMPDEST PUSH1 0x0 DUP6 GT PUSH2 0x18D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36DB JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0x18F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36BB JUMP JUMPDEST PUSH1 0xC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SSTORE NUMBER SWAP5 SWAP1 SWAP5 ADD PUSH1 0x3 DUP2 SWAP1 SSTORE SWAP3 SWAP1 SWAP3 ADD PUSH1 0x4 SSTORE PUSH1 0x6 DUP1 SLOAD DUP6 AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xD DUP1 SLOAD SWAP1 SWAP4 AND SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0xE SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x19D9 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x3 DUP7 MUL SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP5 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 DUP6 ADD MSTORE PUSH1 0x1 DUP1 DUP3 ADD SLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0x60 DUP4 ADD MSTORE SWAP1 DUP4 MSTORE SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x1970 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x19EA PUSH2 0x28DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19F5 DUP5 PUSH2 0x1A96 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1A5B PUSH2 0x13CA JUMP JUMPDEST PUSH2 0x1A77 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH2 0x1A80 DUP2 PUSH2 0x265E JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1500 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x2513 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x1ACC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x367B JUMP JUMPDEST PUSH1 0x0 NOT ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F2 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x26DF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x7F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x369B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1B4C DUP6 DUP6 PUSH2 0x1FF5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B9B PUSH1 0x9 SLOAD PUSH2 0x7DE DUP11 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1B8F PUSH1 0x2 SLOAD DUP8 PUSH2 0x1C60 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1C60 AND JUMP JUMPDEST DUP9 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1BD0 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1C20 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C6D JUMP JUMPDEST SWAP1 POP PUSH2 0x1C32 DUP2 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C4F DUP3 PUSH2 0x7DE DUP6 PUSH5 0xE8D4A51000 PUSH4 0xFFFFFFFF PUSH2 0x1C60 AND JUMP JUMPDEST SWAP3 SWAP11 SWAP3 SWAP10 POP SWAP2 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1C6F JUMPI POP PUSH1 0x0 PUSH2 0xE80 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1C7C JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x7F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x370B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F2 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2716 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CE7 DUP4 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1CF8 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD SLOAD PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP3 POP PUSH2 0x1D43 SWAP2 DUP6 AND SWAP1 PUSH2 0x1D37 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST PUSH1 0x9 DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1D57 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP6 AND SWAP1 CALLER SWAP1 PUSH32 0x7B327867ECD5D7F5165F3D8AF5193F1255F215ACB14E229B529A4F8A9991ABBC SWAP1 PUSH2 0xA34 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x380F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x7 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1DD1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND DUP8 MSTORE SWAP4 MSTORE DUP1 DUP6 KECCAK256 PUSH1 0x2 PUSH1 0x3 SWAP1 SWAP6 MUL SWAP1 SWAP3 ADD SWAP4 DUP5 ADD SLOAD DUP5 SLOAD SWAP2 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP5 SWAP7 POP SWAP2 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1E34 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1E84 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C6D JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 ADD SLOAD NUMBER GT DUP1 ISZERO PUSH2 0x1E98 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1EC0 JUMPI PUSH1 0x0 PUSH2 0x1EA8 DUP6 PUSH2 0x1EFF JUMP JUMPDEST SWAP2 POP PUSH2 0x1EBC SWAP1 POP DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST SWAP3 POP POP JUMPDEST PUSH2 0x1EF4 DUP4 PUSH1 0x1 ADD SLOAD PUSH2 0x1EE8 PUSH5 0xE8D4A51000 PUSH2 0x7DE DUP7 DUP9 PUSH1 0x0 ADD SLOAD PUSH2 0x1C60 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F13 DUP4 PUSH1 0x0 DUP6 PUSH1 0x1 ADD SLOAD NUMBER PUSH2 0x1B3D JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xE80 JUMPI PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x1F55 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO JUMPDEST PUSH2 0x1F71 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x375B JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1F87 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x1FC1 DUP6 PUSH2 0x2095 JUMP JUMPDEST PUSH2 0x1FCB DUP3 DUP3 PUSH2 0x21A7 JUMP JUMPDEST DUP2 SLOAD PUSH2 0x1FE4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP7 DUP7 PUSH1 0x1 PUSH2 0x21FE JUMP JUMPDEST PUSH2 0x1FEE DUP3 DUP3 PUSH2 0x24E5 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD DUP4 LT ISZERO PUSH2 0x2007 JUMPI PUSH1 0x3 SLOAD SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD GT DUP1 ISZERO PUSH2 0x201A JUMPI POP PUSH1 0x5 SLOAD DUP3 GT JUMPDEST ISZERO PUSH2 0x2025 JUMPI PUSH1 0x5 SLOAD SWAP2 POP JUMPDEST PUSH1 0x4 SLOAD DUP3 GT PUSH2 0x204A JUMPI PUSH2 0x2043 PUSH1 0xA PUSH2 0x1B8F DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST SWAP1 POP PUSH2 0xE80 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP4 LT PUSH2 0x2063 JUMPI PUSH2 0x2043 DUP3 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST PUSH2 0x2043 PUSH2 0x207B PUSH1 0x4 SLOAD DUP5 PUSH2 0x1C9A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1D37 PUSH1 0xA PUSH2 0x1B8F DUP8 PUSH1 0x4 SLOAD PUSH2 0x1C9A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x20A4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD SWAP1 POP DUP1 PUSH1 0x1 ADD SLOAD NUMBER GT PUSH2 0x20C5 JUMPI POP PUSH2 0x1A80 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x20F5 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x210D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2121 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2145 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C6D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2159 JUMPI POP NUMBER PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH2 0x1A80 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2165 DUP5 PUSH2 0x1EFF JUMP JUMPDEST PUSH1 0x2 DUP7 ADD SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x217F SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST PUSH1 0x2 DUP6 ADD SSTORE NUMBER PUSH1 0x1 DUP6 ADD SSTORE PUSH1 0xB SLOAD PUSH2 0x219D SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST PUSH1 0xB SSTORE POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD ISZERO PUSH2 0x13B7 JUMPI PUSH1 0x0 PUSH2 0x21DC DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1EE8 PUSH5 0xE8D4A51000 PUSH2 0x7DE DUP8 PUSH1 0x2 ADD SLOAD DUP8 PUSH1 0x0 ADD SLOAD PUSH2 0x1C60 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x21F4 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2234 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x224C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2260 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2284 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C6D JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT PUSH2 0x246E JUMPI PUSH1 0xB SLOAD PUSH2 0x22A0 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x0 PUSH1 0x2 DUP8 ADD SSTORE PUSH1 0xC SLOAD PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x22E0 SWAP3 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3556 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x230E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2332 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2B77 JUMP JUMPDEST PUSH2 0x234E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0xE SLOAD PUSH1 0x40 MLOAD PUSH4 0xEFE6A8B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xEFE6A8B SWAP2 PUSH2 0x2383 SWAP2 DUP10 SWAP2 DUP8 SWAP2 PUSH1 0x4 ADD PUSH2 0x3571 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x239D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP4 ISZERO PUSH2 0x241E JUMPI PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x15B6FC15 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2B6DF82A SWAP1 PUSH2 0x23EB SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2419 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xAA4D283470C904C551D18BB894D37E17674920F3261A7F854BE501E25F421B7 DUP5 PUSH1 0x40 MLOAD PUSH2 0x2461 SWAP2 SWAP1 PUSH2 0x37D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xD60 JUMP JUMPDEST DUP3 ISZERO PUSH2 0xD60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x364B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1500 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x24AE SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x3556 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2742 JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD DUP2 SLOAD PUSH2 0x2506 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x7DE SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x1C60 AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2548 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x367B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x255E JUMPI CALLER PUSH2 0x2560 JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x256D DUP7 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x257E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x25B8 DUP4 PUSH2 0x2095 JUMP JUMPDEST PUSH2 0x25C2 DUP3 DUP3 PUSH2 0x21A7 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x25FF JUMPI DUP5 PUSH2 0x25EA JUMPI DUP2 SLOAD PUSH2 0x25EA SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP11 PUSH4 0xFFFFFFFF PUSH2 0x2827 AND JUMP JUMPDEST DUP1 SLOAD PUSH2 0x25FC SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST DUP2 SSTORE JUMPDEST PUSH2 0x2609 DUP3 DUP3 PUSH2 0x24E5 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5548C837AB068CF56A2C2479DF0882A4922FD203EDB7517321831D95078C5F62 DUP10 PUSH1 0x40 MLOAD PUSH2 0x264C SWAP2 SWAP1 PUSH2 0x37D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2684 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x366B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2700 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP2 SWAP1 PUSH2 0x362A JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x270C JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x273A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP2 SWAP1 PUSH2 0x362A JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x2754 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x284B JUMP JUMPDEST PUSH2 0x2770 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x37AB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x278C SWAP2 SWAP1 PUSH2 0x3514 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x27C9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x27CE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x27F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36AB JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xE5E JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x280B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2B77 JUMP JUMPDEST PUSH2 0xE5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x378B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE5E SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x24AE SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x352E JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x287F JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE80 DUP2 PUSH2 0x38B2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x291D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2935 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x294D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE80 DUP2 PUSH2 0x38C6 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xE80 DUP2 PUSH2 0x38C6 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE80 DUP2 PUSH2 0x38CF JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE80 DUP2 PUSH2 0x38D8 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xE80 DUP2 PUSH2 0x38D8 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE80 DUP2 PUSH2 0x38E1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE7C DUP5 DUP5 PUSH2 0x2900 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x29C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29D3 DUP6 DUP6 PUSH2 0x2900 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x29E4 DUP6 DUP3 DUP7 ADD PUSH2 0x2900 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A0D DUP6 DUP6 PUSH2 0x2900 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x29E4 DUP6 DUP3 DUP7 ADD PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A3F DUP7 DUP7 PUSH2 0x2900 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2A50 DUP7 DUP3 DUP8 ADD PUSH2 0x2975 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2A61 DUP7 DUP3 DUP8 ADD PUSH2 0x2900 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A8C DUP7 DUP7 PUSH2 0x2900 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2A9D DUP7 DUP3 DUP8 ADD PUSH2 0x2975 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2A61 DUP7 DUP3 DUP8 ADD PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2AC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2ACF DUP7 DUP7 PUSH2 0x2900 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2AE0 DUP7 DUP3 DUP8 ADD PUSH2 0x298B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2A61 DUP7 DUP3 DUP8 ADD PUSH2 0x2954 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2B09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2B20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B2C DUP9 DUP3 DUP10 ADD PUSH2 0x290B JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2B4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B57 DUP9 DUP3 DUP10 ADD PUSH2 0x290B JUMP JUMPDEST SWAP4 POP SWAP4 POP POP PUSH1 0x40 PUSH2 0x2B6A DUP9 DUP3 DUP10 ADD PUSH2 0x2954 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE7C DUP5 DUP5 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2BB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2BBC DUP11 DUP11 PUSH2 0x296A JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x2BCD DUP11 DUP3 DUP12 ADD PUSH2 0x2975 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x2BDE DUP11 DUP3 DUP12 ADD PUSH2 0x2975 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x2BEF DUP11 DUP3 DUP12 ADD PUSH2 0x2975 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x2C00 DUP11 DUP3 DUP12 ADD PUSH2 0x2900 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x2C11 DUP11 DUP3 DUP12 ADD PUSH2 0x296A JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x2C22 DUP11 DUP3 DUP12 ADD PUSH2 0x2975 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE7C DUP5 DUP5 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE7C DUP5 DUP5 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE7C DUP5 DUP5 PUSH2 0x2980 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29D3 DUP6 DUP6 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A0D DUP6 DUP6 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE7C DUP5 DUP5 PUSH2 0x298B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CF3 DUP4 DUP4 PUSH2 0x2E3B JUMP JUMPDEST POP POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D07 DUP4 DUP4 PUSH2 0x347C JUMP JUMPDEST POP POP PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D1B DUP4 DUP4 PUSH2 0x34C6 JUMP JUMPDEST POP POP PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D2F DUP4 DUP4 PUSH2 0x34F9 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x2D40 DUP2 PUSH2 0x383E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D51 DUP3 PUSH2 0x3826 JUMP JUMPDEST PUSH2 0x2D5B DUP2 DUP6 PUSH2 0x3830 JUMP JUMPDEST SWAP4 POP PUSH2 0x2D66 DUP4 PUSH2 0x381D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D94 JUMPI DUP2 MLOAD PUSH2 0x2D7E DUP9 DUP3 PUSH2 0x2CE7 JUMP JUMPDEST SWAP8 POP PUSH2 0x2D89 DUP4 PUSH2 0x381D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2D6A JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DAA DUP3 PUSH2 0x3826 JUMP JUMPDEST PUSH2 0x2DB4 DUP2 DUP6 PUSH2 0x3830 JUMP JUMPDEST SWAP4 POP PUSH2 0x2DBF DUP4 PUSH2 0x381D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D94 JUMPI DUP2 MLOAD PUSH2 0x2DD7 DUP9 DUP3 PUSH2 0x2CFB JUMP JUMPDEST SWAP8 POP PUSH2 0x2DE2 DUP4 PUSH2 0x381D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2DC3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DF8 DUP3 PUSH2 0x3826 JUMP JUMPDEST PUSH2 0x2E02 DUP2 DUP6 PUSH2 0x3830 JUMP JUMPDEST SWAP4 POP PUSH2 0x2E0D DUP4 PUSH2 0x381D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D94 JUMPI DUP2 MLOAD PUSH2 0x2E25 DUP9 DUP3 PUSH2 0x2D0F JUMP JUMPDEST SWAP8 POP PUSH2 0x2E30 DUP4 PUSH2 0x381D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2E11 JUMP JUMPDEST PUSH2 0x2E44 DUP2 PUSH2 0x382A JUMP JUMPDEST PUSH2 0x2E4E DUP2 DUP5 PUSH2 0x3839 JUMP JUMPDEST SWAP3 POP PUSH2 0x2E59 DUP3 PUSH2 0x3823 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E87 JUMPI DUP2 MLOAD PUSH2 0x2E71 DUP8 DUP3 PUSH2 0x2D23 JUMP JUMPDEST SWAP7 POP PUSH2 0x2E7C DUP4 PUSH2 0x381D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2E5D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E9A DUP3 PUSH2 0x3826 JUMP JUMPDEST PUSH2 0x2EA4 DUP2 DUP6 PUSH2 0x3830 JUMP JUMPDEST SWAP4 POP PUSH2 0x2EAF DUP4 PUSH2 0x381D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D94 JUMPI DUP2 MLOAD PUSH2 0x2EC7 DUP9 DUP3 PUSH2 0x2D23 JUMP JUMPDEST SWAP8 POP PUSH2 0x2ED2 DUP4 PUSH2 0x381D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2EB3 JUMP JUMPDEST PUSH2 0x2D40 DUP2 PUSH2 0x3849 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EF1 DUP3 PUSH2 0x3826 JUMP JUMPDEST PUSH2 0x2EFB DUP2 DUP6 PUSH2 0x3839 JUMP JUMPDEST SWAP4 POP PUSH2 0x2F0B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x387C JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2D40 DUP2 PUSH2 0x384E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F29 DUP3 PUSH2 0x3826 JUMP JUMPDEST PUSH2 0x2F33 DUP2 DUP6 PUSH2 0x3830 JUMP JUMPDEST SWAP4 POP PUSH2 0x2F43 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x387C JUMP JUMPDEST PUSH2 0x2F4C DUP2 PUSH2 0x38A8 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F63 PUSH1 0x18 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x496E76616C696420616C6C6F636174696F6E20706F696E740000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F9C PUSH1 0x16 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH22 0x10DB185A5B5A5B99C81C995DD85C990819985A5B1959 PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FCE PUSH1 0x1A DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x496E76616C6964206C6F636B6564534F5620416464726573732E000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3007 PUSH1 0x26 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x304F PUSH1 0x14 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH20 0x141BDBDB081D1BDAD95B881B9BDD08199BDD5B99 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x307F PUSH1 0xF DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH15 0x151C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30AA PUSH1 0x1B DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30E3 PUSH1 0x20 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x311C PUSH1 0x37 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x556E6C6F636B656420696D6D6564696174656C792070657263656E7420686173 DUP2 MSTORE PUSH32 0x20746F206265206C657373207468616E2031303030302E000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x317B PUSH1 0x12 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH18 0x4E6F7420656E6F7567682062616C616E6365 PUSH1 0x70 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31A9 PUSH1 0x13 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH19 0x496E76616C696420737461727420626C6F636B PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31D8 PUSH1 0xE DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH14 0x105C1C1C9BDD994819985A5B1959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3202 PUSH1 0x18 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x5265636569766572206164647265737320696E76616C69640000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x323B PUSH1 0x21 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x327E PUSH1 0xC DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32A6 PUSH1 0xF DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH15 0x82E4E4C2F2E640DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32D1 PUSH1 0x13 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH19 0x151BDAD95B88185B1C9958591E481859191959 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3300 PUSH1 0xE DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH14 0x105B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x332A PUSH1 0x2D DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x6F6E6C792077726170706572206F7220706F6F6C73206D617920776974686472 DUP2 MSTORE PUSH13 0x30BB903337B91030903AB9B2B9 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3379 PUSH1 0x15 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH21 0x496E76616C696420746F6B656E2061646472657373 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33AA PUSH1 0x13 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH19 0x105B1C9958591E481A5B9A5D1A585B1A5E9959 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33D9 PUSH1 0x2A DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3425 PUSH1 0xF DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH15 0x105B1C9958591E481CDD1BDC1C1959 PUSH1 0x8A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3450 PUSH1 0x1F DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP4 ADD SWAP1 PUSH2 0x348D DUP5 DUP3 PUSH2 0x2F15 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x34A0 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x350B JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x34B3 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x34F9 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0xE5E PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x34F9 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x34D7 DUP5 DUP3 PUSH2 0x34F9 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x34EA PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x34F9 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0xE5E PUSH1 0x40 DUP6 ADD DUP3 JUMPDEST PUSH2 0x2D40 DUP2 PUSH2 0x3823 JUMP JUMPDEST PUSH2 0x2D40 DUP2 PUSH2 0x3871 JUMP JUMPDEST PUSH2 0x2D40 DUP2 PUSH2 0x3865 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F2 DUP3 DUP5 PUSH2 0x2EE6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x2D37 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x353C DUP3 DUP7 PUSH2 0x2D37 JUMP JUMPDEST PUSH2 0x3549 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2D37 JUMP JUMPDEST PUSH2 0x287F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x34F9 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3564 DUP3 DUP6 PUSH2 0x2D37 JUMP JUMPDEST PUSH2 0x7F2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x34F9 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x357F DUP3 DUP7 PUSH2 0x2D37 JUMP JUMPDEST PUSH2 0x3549 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x34F9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x7F2 DUP2 DUP5 PUSH2 0x2D46 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x7F2 DUP2 DUP5 PUSH2 0x2D9F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x7F2 DUP2 DUP5 PUSH2 0x2DED JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x7F2 DUP2 DUP5 PUSH2 0x2E8F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x2EDD JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x2F15 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x35FA DUP3 DUP8 PUSH2 0x2F15 JUMP JUMPDEST PUSH2 0x3607 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x350B JUMP JUMPDEST PUSH2 0x3614 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x34F9 JUMP JUMPDEST PUSH2 0x3621 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x34F9 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x7F2 DUP2 DUP5 PUSH2 0x2F1E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x2F56 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x2F8F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x2FFA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x3042 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x3072 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x309D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x30D6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x310F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x316E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x319C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x31CB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x31F5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x322E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x3299 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x32C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x32F3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x331D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x336C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x339D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x33CC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x3418 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x347C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x34C6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x34F9 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3564 DUP3 DUP6 PUSH2 0x34F9 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x357F DUP3 DUP7 PUSH2 0x34F9 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x3502 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3564 DUP3 DUP6 PUSH2 0x3502 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x2 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE80 DUP3 PUSH2 0x3859 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE80 DUP3 PUSH2 0x383E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE80 DUP3 PUSH2 0x3865 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3897 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x387F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xE5E JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x38BB DUP2 PUSH2 0x383E JUMP JUMPDEST DUP2 EQ PUSH2 0x1A80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38BB DUP2 PUSH2 0x3849 JUMP JUMPDEST PUSH2 0x38BB DUP2 PUSH2 0x384E JUMP JUMPDEST PUSH2 0x38BB DUP2 PUSH2 0x3823 JUMP JUMPDEST PUSH2 0x38BB DUP2 PUSH2 0x3865 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 CALL 0x29 CALLVALUE PUSH27 0x7AD7C0B86F8F36163BFE52B7D780D5AC97ABF3BAA44D2E45F78F03 0xCE PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "99:452:106:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;99:452:106;;780:87:137;853:10;780:87;:::o;99:452:106:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061030c5760003560e01c8063787b40261161019d578063c680c0b7116100e9578063e3866c9a116100a2578063f2f46b3b1161007c578063f2f46b3b14610695578063f2fde38b1461069d578063f45346dc146106b0578063f729a404146106c35761030c565b8063e3866c9a1461064d578063e788d8d114610660578063f2801fe7146106755761030c565b8063c680c0b7146105e6578063caa9a08d146105f9578063d0452aa61461060c578063d6a49f0e1461061f578063d8c173c414610632578063da408679146106455761030c565b8063aaf5eb6811610156578063b9ec7d7411610130578063b9ec7d74146105b0578063c1d74258146105b8578063c2167d93146105c0578063c35a934d146105d35761030c565b8063aaf5eb6814610598578063ac210cc7146105a0578063b3944d52146105a85761030c565b8063787b4026146105355780637b46c54f146105585780638da5cb5b1461056b5780638f32d59b146105805780639a13ba2914610588578063a1a6690f146105905761030c565b8063429b62e51161025c5780635d50d0601161021557806362748fbb116101ef57806362748fbb146104dc57806369328dec146104fc5780636ff1c9bc1461050f57806370480275146105225761030c565b80635d50d060146104875780635e379679146104a75780635f02c145146104ba5761030c565b8063429b62e5146103f857806348c84d9e1461041857806348cd4cb114610438578063492e019d146104405780634953c7821461046157806356085d4c146104745761030c565b80631785f53c116102c957806329d0fa3e116102a357806329d0fa3e146103c25780632d0857a2146103ca5780633723de42146103dd578063414d57fb146103e55761030c565b80631785f53c146103945780631aed6553146103a75780631d8f889c146103af5761030c565b806306bfa93814610311578063083c63231461033a57806308dcb3601461034f5780630b1a2851146103645780630c43a7cd1461037757806310a168f91461038c575b600080fd5b61032461031f366004612996565b6106cb565b60405161033191906137bb565b60405180910390f35b61034261074b565b60405161033191906137d7565b610357610751565b60405161033191906135de565b610342610372366004612a6b565b610760565b61038a610385366004612aae565b6107f9565b005b610342610a42565b61038a6103a2366004612996565b610a47565b610342610ac6565b61038a6103bd366004612c31565b610acc565b610342610b52565b61038a6103d8366004612c4f565b610b58565b610342610bbc565b61038a6103f3366004612af1565b610c6e565b61040b610406366004612996565b610d69565b60405161033191906135d0565b61042b610426366004612996565b610d7e565b60405161033191906135bf565b610342610def565b61045361044e366004612996565b610df5565b6040516103319291906137e5565b61038a61046f3660046129b4565b610e38565b6103426104823660046129b4565b610e64565b61049a610495366004612996565b610e86565b604051610331919061358c565b6103426104b5366004612caa565b610f57565b6104cd6104c8366004612c8b565b610f63565b604051610331939291906137f3565b6104ef6104ea366004612996565b610f8f565b60405161033191906135ae565b61038a61050a366004612a1e565b611046565b61038a61051d366004612996565b6111d9565b61038a610530366004612996565b6112dc565b610548610543366004612c4f565b611355565b60405161033194939291906135ec565b61038a610566366004612996565b6113a1565b6105736113bb565b6040516103319190613520565b61040b6113ca565b6103426113ee565b6103426113f4565b6103426113fa565b610573611403565b610342611412565b61038a611418565b610342611437565b61038a6105ce366004612996565b61143c565b61038a6105e1366004612aae565b61149c565b61038a6105f43660046129ee565b611505565b610342610607366004612996565b6116fb565b61034261061a3660046129b4565b611706565b61038a61062d366004612996565b611723565b61038a6106403660046129ee565b6117b4565b61038a6117c1565b61038a61065b366004612b95565b611825565b61066861194c565b604051610331919061359d565b6106886106833660046129b4565b6119e2565b60405161033191906137c9565b610357611a44565b61038a6106ab366004612996565b611a53565b61038a6106be366004612a1e565b611a83565b610342611a90565b6106d3612887565b60006106de83611a96565b9050600781815481106106ed57fe5b60009182526020918290206040805160808101825260039390930290910180546001600160a01b0381168452600160a01b90046001600160601b03169383019390935260018301549082015260029091015460608201529392505050565b60055481565b600c546001600160a01b031681565b60008061076c85611a96565b905060006007828154811061077d57fe5b600091825260208220600390910201915043906107b16107a487601e63ffffffff611ad616565b839063ffffffff611b1816565b905060006107c184898585611b3d565b91506107ea905064e8d4a510006107de8a8463ffffffff611c6016565b9063ffffffff611ad616565b955050505050505b9392505050565b6108016113ca565b8061081b57503360009081526001602052604090205460ff165b6108405760405162461bcd60e51b81526004016108379061371b565b60405180910390fd5b6000826001600160601b0316116108695760405162461bcd60e51b81526004016108379061363b565b6001600160a01b03831661088f5760405162461bcd60e51b81526004016108379061376b565b6001600160a01b038316600090815260086020526040902054156108c55760405162461bcd60e51b81526004016108379061373b565b80156108d3576108d3611418565b600060035443116108e6576003546108e8565b435b600954909150610907906001600160601b03851663ffffffff611b1816565b600955604080516080810182526001600160a01b038087168083526001600160601b0380881660208086019182528587018881526000606088018181526007805460018101825581845299516003909a027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810180549751909816600160a01b029a8a166001600160a01b03199097169690961790981698909817909455517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68983015594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a90910155915481835260089093529083902091909155905133907f38132ae9e6e6c4e777015bac3679dadd42206fad607b97846830be4b412908c390610a34908790613801565b60405180910390a350505050565b600a81565b610a4f6113ca565b610a6b5760405162461bcd60e51b81526004016108379061371b565b6001600160a01b03811660009081526001602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f90610abb908390613520565b60405180910390a150565b60045481565b610ad46113ca565b80610aee57503360009081526001602052604090205460ff165b610b0a5760405162461bcd60e51b81526004016108379061371b565b6001600160a01b038116610b305760405162461bcd60e51b81526004016108379061365b565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60025481565b610b606113ca565b80610b7a57503360009081526001602052604090205460ff165b610b965760405162461bcd60e51b81526004016108379061371b565b6127108110610bb75760405162461bcd60e51b8152600401610837906136bb565b600e55565b600c546040516370a0823160e01b815260009182916001600160a01b03909116906370a0823190610bf1903090600401613520565b60206040518083038186803b158015610c0957600080fd5b505afa158015610c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c419190810190612c6d565b9050600b54811015610c6557600b54610c60908263ffffffff611c9a16565b610c68565b60005b91505090565b610c766113ca565b80610c9057503360009081526001602052604090205460ff165b610cac5760405162461bcd60e51b81526004016108379061371b565b838214610ccb5760405162461bcd60e51b81526004016108379061372b565b8015610cd957610cd9611418565b8360005b81811015610d605782610d0e57610d0e878783818110610cf957fe5b90506020020160206105669190810190612996565b610d58878783818110610d1d57fe5b9050602002016020610d329190810190612996565b868684818110610d3e57fe5b9050602002016020610d539190810190612cc9565b611cdc565b600101610cdd565b50505050505050565b60016020526000908152604090205460ff1681565b600754604080518281526020808402820101909152606091908290828015610db0578160200160208202803883390190505b50905060005b82811015610de757610dc88186611dc1565b828281518110610dd457fe5b6020908102919091010152600101610db6565b509392505050565b60035481565b6000806000610e0384611a96565b9050600060078281548110610e1457fe5b90600052602060002090600302019050610e2d81611eff565b935093505050915091565b6000610e4382611f1c565b90506000610e5084611a96565b9050610e5e81836001611f78565b50505050565b600080610e7084611a96565b9050610e7c8184611dc1565b9150505b92915050565b600754604080518281526020808402820101909152606091908290828015610ec857816020015b610eb56128c1565b815260200190600190039081610ead5790505b50905060005b82811015610de7576000818152600a602090815260408083206001600160a01b03891684529091529020548251839083908110610f0757fe5b6020026020010151600060028110610f1b57fe5b6020020152610f2a8186611dc1565b828281518110610f3657fe5b6020026020010151600160028110610f4a57fe5b6020020152600101610ece565b60006107f28383611ff5565b600a60209081526000928352604080842090915290825290208054600182015460029092015490919083565b600754604080518281526020808402820101909152606091908290828015610fd157816020015b610fbe6128df565b815260200190600190039081610fb65790505b50905060005b82811015610de7576000818152600a602090815260408083206001600160a01b03891684528252918290208251606081018452815481526001820154928101929092526002015491810191909152825183908390811061103357fe5b6020908102919091010152600101610fd7565b6001600160a01b03831660009081526008602052604090205461107b5760405162461bcd60e51b81526004016108379061367b565b600061108682611f1c565b9050600061109385611a96565b90506000600782815481106110a457fe5b60009182526020808320858452600a825260408085206001600160a01b038916865290925292208054600390920290920192508611156110f65760405162461bcd60e51b8152600401610837906136cb565b6110ff83612095565b61110982826121a7565b6111178782866000806121fe565b8054611129908763ffffffff611c9a16565b81556006546001600160a01b031633141561115f57815461115a906001600160a01b0316338863ffffffff61248c16565b61117b565b815461117b906001600160a01b0316858863ffffffff61248c16565b61118582826124e5565b866001600160a01b0316846001600160a01b03167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb886040516111c891906137d7565b60405180910390a350505050505050565b60006111e482611a96565b90506000600782815481106111f557fe5b60009182526020808320858452600a8252604080852033865290925292206003909102909101915061122683612095565b61123082826121a7565b6002810154600b546112479163ffffffff611c9a16565b600b558054600282018054600080855560018501819055909155835461127d906001600160a01b0316338463ffffffff61248c16565b61128784846124e5565b856001600160a01b0316336001600160a01b03167f1401b6ff3b281e84fd77353369caed48ba7e787dd3821db05cc006437360820184846040516112cc9291906137e5565b60405180910390a3505050505050565b6112e46113ca565b6113005760405162461bcd60e51b81526004016108379061371b565b6001600160a01b038116600090815260016020819052604091829020805460ff19169091179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33990610abb908390613520565b6007818154811061136257fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b0382169350600160a01b9091046001600160601b0316919084565b60006113ac82611a96565b90506113b781612095565b5050565b6000546001600160a01b031690565b600080546001600160a01b03166113df61250f565b6001600160a01b031614905090565b600b5481565b60095481565b64e8d4a5100081565b6006546001600160a01b031681565b60075490565b60075460005b818110156113b75761142f81612095565b60010161141e565b601e81565b6114446113ca565b8061145e57503360009081526001602052604090205460ff165b61147a5760405162461bcd60e51b81526004016108379061371b565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6114a46113ca565b806114be57503360009081526001602052604090205460ff165b6114da5760405162461bcd60e51b81526004016108379061371b565b80156114ed576114e8611418565b6114f6565b6114f6836113a1565b6115008383611cdc565b505050565b61150d6113ca565b8061152757503360009081526001602052604090205460ff165b6115435760405162461bcd60e51b81526004016108379061371b565b6001600160a01b0382166115695760405162461bcd60e51b8152600401610837906136fb565b806115865760405162461bcd60e51b81526004016108379061374b565b600c546040516370a0823160e01b81526000916001600160a01b0316906370a08231906115b7903090600401613520565b60206040518083038186803b1580156115cf57600080fd5b505afa1580156115e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116079190810190612c6d565b905080821115611615578091505b600c5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906116479086908690600401613556565b602060405180830381600087803b15801561166157600080fd5b505af1158015611675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116999190810190612b77565b6116b55760405162461bcd60e51b81526004016108379061368b565b826001600160a01b03167fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad836040516116ee91906137d7565b60405180910390a2505050565b6000610e8082611a96565b60006117106128df565b61171a84846119e2565b51949350505050565b600061172e82611f1c565b60075490915060005b81811015611755578061174c81856000611f78565b50600101611737565b50600d546040516315b6fc1560e11b81526001600160a01b0390911690632b6df82a90611786908590600401613520565b600060405180830381600087803b1580156117a057600080fd5b505af1158015610d60573d6000803e3d6000fd5b6113b73382846001612513565b6117c96113ca565b806117e357503360009081526001602052604090205460ff165b6117ff5760405162461bcd60e51b81526004016108379061371b565b6005541561181f5760405162461bcd60e51b81526004016108379061379b565b43600555565b61182d6113ca565b8061184757503360009081526001602052604090205460ff165b6118635760405162461bcd60e51b81526004016108379061371b565b600c546001600160a01b03161561188c5760405162461bcd60e51b81526004016108379061377b565b6001600160a01b0387166118b25760405162461bcd60e51b81526004016108379061376b565b600085116118d25760405162461bcd60e51b8152600401610837906136db565b61271081106118f35760405162461bcd60e51b8152600401610837906136bb565b600c80546001600160a01b03199081166001600160a01b03998a16179091556002969096554394909401600381905592909201600455600680548516918616919091179055600d80549093169316929092179055600e55565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156119d9576000848152602090819020604080516080810182526003860290920180546001600160a01b0381168452600160a01b90046001600160601b031683850152600180820154928401929092526002015460608301529083529092019101611970565b50505050905090565b6119ea6128df565b60006119f584611a96565b6000908152600a602090815260408083206001600160a01b0387168452825291829020825160608101845281548152600182015492810192909252600201549181019190915291505092915050565b600d546001600160a01b031681565b611a5b6113ca565b611a775760405162461bcd60e51b81526004016108379061371b565b611a808161265e565b50565b6115008383836000612513565b600e5481565b6001600160a01b03811660009081526008602052604081205480611acc5760405162461bcd60e51b81526004016108379061367b565b6000190192915050565b60006107f283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126df565b6000828201838110156107f25760405162461bcd60e51b81526004016108379061369b565b6000806000611b4c8585611ff5565b90506000611b9b6009546107de8a60000160149054906101000a90046001600160601b03166001600160601b0316611b8f60025487611c6090919063ffffffff16565b9063ffffffff611c6016565b88546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190611bd0903090600401613520565b60206040518083038186803b158015611be857600080fd5b505afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c209190810190612c6d565b9050611c32818963ffffffff611b1816565b90506000611c4f826107de8564e8d4a5100063ffffffff611c6016565b929a92995091975050505050505050565b600082611c6f57506000610e80565b82820282848281611c7c57fe5b04146107f25760405162461bcd60e51b81526004016108379061370b565b60006107f283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612716565b6000611ce783611a96565b9050600060078281548110611cf857fe5b60009182526020909120600390910201546009546001600160601b03600160a01b90920482169250611d4391851690611d37908463ffffffff611c9a16565b9063ffffffff611b1816565b6009819055508260078381548110611d5757fe5b6000918252602090912060039091020180546001600160601b0392909216600160a01b026001600160a01b039283161790556040519085169033907f7b327867ecd5d7f5165f3d8af5193f1255f215acb14e229b529a4f8a9991abbc90610a34908790869061380f565b60008060078481548110611dd157fe5b60009182526020808320878452600a825260408085206001600160a01b03808a16875293528085206002600390950290920193840154845491516370a0823160e01b815294965091949193919216906370a0823190611e34903090600401613520565b60206040518083038186803b158015611e4c57600080fd5b505afa158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e849190810190612c6d565b9050836001015443118015611e9857508015155b15611ec0576000611ea885611eff565b9150611ebc9050838263ffffffff611b1816565b9250505b611ef48360010154611ee864e8d4a510006107de868860000154611c6090919063ffffffff16565b9063ffffffff611c9a16565b979650505050505050565b600080611f13836000856001015443611b3d565b91509150915091565b6000336001600160a01b03831615610e80576006546001600160a01b0316331480611f5557503360009081526008602052604090205415155b611f715760405162461bcd60e51b81526004016108379061375b565b5090919050565b600060078481548110611f8757fe5b60009182526020808320878452600a825260408085206001600160a01b0389168652909252922060039091029091019150611fc185612095565b611fcb82826121a7565b8154611fe4906001600160a01b031682868660016121fe565b611fee82826124e5565b5050505050565b60006003548310156120075760035492505b600060055411801561201a575060055482115b156120255760055491505b600454821161204a57612043600a611b8f848663ffffffff611c9a16565b9050610e80565b600454831061206357612043828463ffffffff611c9a16565b61204361207b60045484611c9a90919063ffffffff16565b611d37600a611b8f87600454611c9a90919063ffffffff16565b6000600782815481106120a457fe5b90600052602060002090600302019050806001015443116120c55750611a80565b80546040516370a0823160e01b81526000916001600160a01b0316906370a08231906120f5903090600401613520565b60206040518083038186803b15801561210d57600080fd5b505afa158015612121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121459190810190612c6d565b905080612159575043600190910155611a80565b60008061216584611eff565b6002860154919350915061217f908263ffffffff611b1816565b6002850155436001850155600b5461219d908363ffffffff611b1816565b600b555050505050565b8054156113b75760006121dc8260010154611ee864e8d4a510006107de87600201548760000154611c6090919063ffffffff16565b60028301549091506121f4908263ffffffff611b1816565b6002830155505050565b6002840154600c546040516370a0823160e01b81526000916001600160a01b0316906370a0823190612234903090600401613520565b60206040518083038186803b15801561224c57600080fd5b505afa158015612260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122849190810190612c6d565b905081811061246e57600b546122a0908363ffffffff611c9a16565b600b5560006002870155600c54600d5460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926122e0929116908690600401613556565b602060405180830381600087803b1580156122fa57600080fd5b505af115801561230e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123329190810190612b77565b61234e5760405162461bcd60e51b8152600401610837906136eb565b600d54600e54604051630efe6a8b60e01b81526001600160a01b0390921691630efe6a8b916123839189918791600401613571565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b50505050831561241e57600d546040516315b6fc1560e11b81526001600160a01b0390911690632b6df82a906123eb908890600401613520565b600060405180830381600087803b15801561240557600080fd5b505af1158015612419573d6000803e3d6000fd5b505050505b866001600160a01b0316856001600160a01b03167f0aa4d283470c904c551d18bb894d37e17674920f3261a7f854be501e25f421b78460405161246191906137d7565b60405180910390a3610d60565b8215610d605760405162461bcd60e51b81526004016108379061364b565b60405161150090849063a9059cbb60e01b906124ae9086908690602401613556565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612742565b600282015481546125069164e8d4a51000916107de9163ffffffff611c6016565b60019091015550565b3390565b6001600160a01b0384166000908152600860205260409020546125485760405162461bcd60e51b81526004016108379061367b565b60006001600160a01b03831661255e5733612560565b825b9050600061256d86611a96565b905060006007828154811061257e57fe5b60009182526020808320858452600a825260408085206001600160a01b03891686529092529220600390910290910191506125b883612095565b6125c282826121a7565b86156125ff57846125ea5781546125ea906001600160a01b031633308a63ffffffff61282716565b80546125fc908863ffffffff611b1816565b81555b61260982826124e5565b876001600160a01b0316846001600160a01b03167f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f628960405161264c91906137d7565b60405180910390a35050505050505050565b6001600160a01b0381166126845760405162461bcd60e51b81526004016108379061366b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081836127005760405162461bcd60e51b8152600401610837919061362a565b50600083858161270c57fe5b0495945050505050565b6000818484111561273a5760405162461bcd60e51b8152600401610837919061362a565b505050900390565b612754826001600160a01b031661284b565b6127705760405162461bcd60e51b8152600401610837906137ab565b60006060836001600160a01b03168360405161278c9190613514565b6000604051808303816000865af19150503d80600081146127c9576040519150601f19603f3d011682016040523d82523d6000602084013e6127ce565b606091505b5091509150816127f05760405162461bcd60e51b8152600401610837906136ab565b805115610e5e578080602001905161280b9190810190612b77565b610e5e5760405162461bcd60e51b81526004016108379061378b565b604051610e5e9085906323b872dd60e01b906124ae9087908790879060240161352e565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061287f57508115155b949350505050565b604051806080016040528060006001600160a01b0316815260200160006001600160601b0316815260200160008152602001600081525090565b60405180604001604052806002906020820280388339509192915050565b60405180606001604052806000815260200160008152602001600081525090565b8035610e80816138b2565b60008083601f84011261291d57600080fd5b50813567ffffffffffffffff81111561293557600080fd5b60208301915083602082028301111561294d57600080fd5b9250929050565b8035610e80816138c6565b8051610e80816138c6565b8035610e80816138cf565b8035610e80816138d8565b8051610e80816138d8565b8035610e80816138e1565b6000602082840312156129a857600080fd5b6000610e7c8484612900565b600080604083850312156129c757600080fd5b60006129d38585612900565b92505060206129e485828601612900565b9150509250929050565b60008060408385031215612a0157600080fd5b6000612a0d8585612900565b92505060206129e485828601612975565b600080600060608486031215612a3357600080fd5b6000612a3f8686612900565b9350506020612a5086828701612975565b9250506040612a6186828701612900565b9150509250925092565b600080600060608486031215612a8057600080fd5b6000612a8c8686612900565b9350506020612a9d86828701612975565b9250506040612a6186828701612975565b600080600060608486031215612ac357600080fd5b6000612acf8686612900565b9350506020612ae08682870161298b565b9250506040612a6186828701612954565b600080600080600060608688031215612b0957600080fd5b853567ffffffffffffffff811115612b2057600080fd5b612b2c8882890161290b565b9550955050602086013567ffffffffffffffff811115612b4b57600080fd5b612b578882890161290b565b93509350506040612b6a88828901612954565b9150509295509295909350565b600060208284031215612b8957600080fd5b6000610e7c848461295f565b600080600080600080600060e0888a031215612bb057600080fd5b6000612bbc8a8a61296a565b9750506020612bcd8a828b01612975565b9650506040612bde8a828b01612975565b9550506060612bef8a828b01612975565b9450506080612c008a828b01612900565b93505060a0612c118a828b0161296a565b92505060c0612c228a828b01612975565b91505092959891949750929550565b600060208284031215612c4357600080fd5b6000610e7c848461296a565b600060208284031215612c6157600080fd5b6000610e7c8484612975565b600060208284031215612c7f57600080fd5b6000610e7c8484612980565b60008060408385031215612c9e57600080fd5b60006129d38585612975565b60008060408385031215612cbd57600080fd5b6000612a0d8585612975565b600060208284031215612cdb57600080fd5b6000610e7c848461298b565b6000612cf38383612e3b565b505060400190565b6000612d07838361347c565b505060800190565b6000612d1b83836134c6565b505060600190565b6000612d2f83836134f9565b505060200190565b612d408161383e565b82525050565b6000612d5182613826565b612d5b8185613830565b9350612d668361381d565b8060005b83811015612d94578151612d7e8882612ce7565b9750612d898361381d565b925050600101612d6a565b509495945050505050565b6000612daa82613826565b612db48185613830565b9350612dbf8361381d565b8060005b83811015612d94578151612dd78882612cfb565b9750612de28361381d565b925050600101612dc3565b6000612df882613826565b612e028185613830565b9350612e0d8361381d565b8060005b83811015612d94578151612e258882612d0f565b9750612e308361381d565b925050600101612e11565b612e448161382a565b612e4e8184613839565b9250612e5982613823565b8060005b83811015612e87578151612e718782612d23565b9650612e7c8361381d565b925050600101612e5d565b505050505050565b6000612e9a82613826565b612ea48185613830565b9350612eaf8361381d565b8060005b83811015612d94578151612ec78882612d23565b9750612ed28361381d565b925050600101612eb3565b612d4081613849565b6000612ef182613826565b612efb8185613839565b9350612f0b81856020860161387c565b9290920192915050565b612d408161384e565b6000612f2982613826565b612f338185613830565b9350612f4381856020860161387c565b612f4c816138a8565b9093019392505050565b6000612f63601883613830565b7f496e76616c696420616c6c6f636174696f6e20706f696e740000000000000000815260200192915050565b6000612f9c601683613830565b7510db185a5b5a5b99c81c995dd85c990819985a5b195960521b815260200192915050565b6000612fce601a83613830565b7f496e76616c6964206c6f636b6564534f5620416464726573732e000000000000815260200192915050565b6000613007602683613830565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b600061304f601483613830565b73141bdbdb081d1bdad95b881b9bdd08199bdd5b9960621b815260200192915050565b600061307f600f83613830565b6e151c985b9cd9995c8819985a5b1959608a1b815260200192915050565b60006130aa601b83613830565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006130e3602083613830565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b600061311c603783613830565b7f556e6c6f636b656420696d6d6564696174656c792070657263656e742068617381527f20746f206265206c657373207468616e2031303030302e000000000000000000602082015260400192915050565b600061317b601283613830565b714e6f7420656e6f7567682062616c616e636560701b815260200192915050565b60006131a9601383613830565b72496e76616c696420737461727420626c6f636b60681b815260200192915050565b60006131d8600e83613830565b6d105c1c1c9bdd994819985a5b195960921b815260200192915050565b6000613202601883613830565b7f5265636569766572206164647265737320696e76616c69640000000000000000815260200192915050565b600061323b602183613830565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061327e600c83613830565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006132a6600f83613830565b6e082e4e4c2f2e640dad2e6dac2e8c6d608b1b815260200192915050565b60006132d1601383613830565b72151bdad95b88185b1c9958591e481859191959606a1b815260200192915050565b6000613300600e83613830565b6d105b5bdd5b9d081a5b9d985b1a5960921b815260200192915050565b600061332a602d83613830565b7f6f6e6c792077726170706572206f7220706f6f6c73206d61792077697468647281526c30bb903337b91030903ab9b2b960991b602082015260400192915050565b6000613379601583613830565b74496e76616c696420746f6b656e206164647265737360581b815260200192915050565b60006133aa601383613830565b72105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b815260200192915050565b60006133d9602a83613830565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b6000613425600f83613830565b6e105b1c9958591e481cdd1bdc1c1959608a1b815260200192915050565b6000613450601f83613830565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b8051608083019061348d8482612f15565b5060208201516134a0602085018261350b565b5060408201516134b360408501826134f9565b506060820151610e5e60608501826134f9565b805160608301906134d784826134f9565b5060208201516134ea60208501826134f9565b506040820151610e5e60408501825b612d4081613823565b612d4081613871565b612d4081613865565b60006107f28284612ee6565b60208101610e808284612d37565b6060810161353c8286612d37565b6135496020830185612d37565b61287f60408301846134f9565b604081016135648285612d37565b6107f260208301846134f9565b6060810161357f8286612d37565b61354960208301856134f9565b602080825281016107f28184612d46565b602080825281016107f28184612d9f565b602080825281016107f28184612ded565b602080825281016107f28184612e8f565b60208101610e808284612edd565b60208101610e808284612f15565b608081016135fa8287612f15565b613607602083018661350b565b61361460408301856134f9565b61362160608301846134f9565b95945050505050565b602080825281016107f28184612f1e565b60208082528101610e8081612f56565b60208082528101610e8081612f8f565b60208082528101610e8081612fc1565b60208082528101610e8081612ffa565b60208082528101610e8081613042565b60208082528101610e8081613072565b60208082528101610e808161309d565b60208082528101610e80816130d6565b60208082528101610e808161310f565b60208082528101610e808161316e565b60208082528101610e808161319c565b60208082528101610e80816131cb565b60208082528101610e80816131f5565b60208082528101610e808161322e565b60208082528101610e8081613271565b60208082528101610e8081613299565b60208082528101610e80816132c4565b60208082528101610e80816132f3565b60208082528101610e808161331d565b60208082528101610e808161336c565b60208082528101610e808161339d565b60208082528101610e80816133cc565b60208082528101610e8081613418565b60208082528101610e8081613443565b60808101610e80828461347c565b60608101610e8082846134c6565b60208101610e8082846134f9565b6040810161356482856134f9565b6060810161357f82866134f9565b60208101610e808284613502565b604081016135648285613502565b60200190565b90565b5190565b50600290565b90815260200190565b919050565b6000610e8082613859565b151590565b6000610e808261383e565b6001600160a01b031690565b6001600160601b031690565b6000610e8082613865565b60005b8381101561389757818101518382015260200161387f565b83811115610e5e5750506000910152565b601f01601f191690565b6138bb8161383e565b8114611a8057600080fd5b6138bb81613849565b6138bb8161384e565b6138bb81613823565b6138bb8161386556fea365627a7a72315820f129347a7ad7c0b86f8f36163bfe52b7d780d5ac97abf3baa44d2e45f78f03ce6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x787B4026 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xC680C0B7 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xE3866C9A GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2F46B3B GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x695 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x69D JUMPI DUP1 PUSH4 0xF45346DC EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0xF729A404 EQ PUSH2 0x6C3 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xE3866C9A EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0xE788D8D1 EQ PUSH2 0x660 JUMPI DUP1 PUSH4 0xF2801FE7 EQ PUSH2 0x675 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x5E6 JUMPI DUP1 PUSH4 0xCAA9A08D EQ PUSH2 0x5F9 JUMPI DUP1 PUSH4 0xD0452AA6 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xD6A49F0E EQ PUSH2 0x61F JUMPI DUP1 PUSH4 0xD8C173C4 EQ PUSH2 0x632 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x645 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAAF5EB68 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9EC7D74 GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9EC7D74 EQ PUSH2 0x5B0 JUMPI DUP1 PUSH4 0xC1D74258 EQ PUSH2 0x5B8 JUMPI DUP1 PUSH4 0xC2167D93 EQ PUSH2 0x5C0 JUMPI DUP1 PUSH4 0xC35A934D EQ PUSH2 0x5D3 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAAF5EB68 EQ PUSH2 0x598 JUMPI DUP1 PUSH4 0xAC210CC7 EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0xB3944D52 EQ PUSH2 0x5A8 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x787B4026 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x7B46C54F EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x56B JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x9A13BA29 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0xA1A6690F EQ PUSH2 0x590 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x429B62E5 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x5D50D060 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x62748FBB GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x62748FBB EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0x69328DEC EQ PUSH2 0x4FC JUMPI DUP1 PUSH4 0x6FF1C9BC EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x522 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x5D50D060 EQ PUSH2 0x487 JUMPI DUP1 PUSH4 0x5E379679 EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0x5F02C145 EQ PUSH2 0x4BA JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0x48C84D9E EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x48CD4CB1 EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0x492E019D EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x4953C782 EQ PUSH2 0x461 JUMPI DUP1 PUSH4 0x56085D4C EQ PUSH2 0x474 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x29D0FA3E GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x29D0FA3E EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x2D0857A2 EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0x3723DE42 EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0x414D57FB EQ PUSH2 0x3E5 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x1785F53C EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1AED6553 EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x1D8F889C EQ PUSH2 0x3AF JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6BFA938 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x83C6323 EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0xB1A2851 EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0xC43A7CD EQ PUSH2 0x377 JUMPI DUP1 PUSH4 0x10A168F9 EQ PUSH2 0x38C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x324 PUSH2 0x31F CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x6CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x37BB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x342 PUSH2 0x74B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x37D7 JUMP JUMPDEST PUSH2 0x357 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x35DE JUMP JUMPDEST PUSH2 0x342 PUSH2 0x372 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A6B JUMP JUMPDEST PUSH2 0x760 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x385 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AAE JUMP JUMPDEST PUSH2 0x7F9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x342 PUSH2 0xA42 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x3A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xA47 JUMP JUMPDEST PUSH2 0x342 PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2C31 JUMP JUMPDEST PUSH2 0xACC JUMP JUMPDEST PUSH2 0x342 PUSH2 0xB52 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x3D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C4F JUMP JUMPDEST PUSH2 0xB58 JUMP JUMPDEST PUSH2 0x342 PUSH2 0xBBC JUMP JUMPDEST PUSH2 0x38A PUSH2 0x3F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF1 JUMP JUMPDEST PUSH2 0xC6E JUMP JUMPDEST PUSH2 0x40B PUSH2 0x406 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xD69 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x35D0 JUMP JUMPDEST PUSH2 0x42B PUSH2 0x426 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xD7E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x35BF JUMP JUMPDEST PUSH2 0x342 PUSH2 0xDEF JUMP JUMPDEST PUSH2 0x453 PUSH2 0x44E CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xDF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP3 SWAP2 SWAP1 PUSH2 0x37E5 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x46F CALLDATASIZE PUSH1 0x4 PUSH2 0x29B4 JUMP JUMPDEST PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x482 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B4 JUMP JUMPDEST PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x495 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xE86 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x358C JUMP JUMPDEST PUSH2 0x342 PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CAA JUMP JUMPDEST PUSH2 0xF57 JUMP JUMPDEST PUSH2 0x4CD PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C8B JUMP JUMPDEST PUSH2 0xF63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x37F3 JUMP JUMPDEST PUSH2 0x4EF PUSH2 0x4EA CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xF8F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x35AE JUMP JUMPDEST PUSH2 0x38A PUSH2 0x50A CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1E JUMP JUMPDEST PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x51D CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x11D9 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x530 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x12DC JUMP JUMPDEST PUSH2 0x548 PUSH2 0x543 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C4F JUMP JUMPDEST PUSH2 0x1355 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x35EC JUMP JUMPDEST PUSH2 0x38A PUSH2 0x566 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x13A1 JUMP JUMPDEST PUSH2 0x573 PUSH2 0x13BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST PUSH2 0x40B PUSH2 0x13CA JUMP JUMPDEST PUSH2 0x342 PUSH2 0x13EE JUMP JUMPDEST PUSH2 0x342 PUSH2 0x13F4 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x573 PUSH2 0x1403 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x1412 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x1418 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x1437 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x5CE CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x143C JUMP JUMPDEST PUSH2 0x38A PUSH2 0x5E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AAE JUMP JUMPDEST PUSH2 0x149C JUMP JUMPDEST PUSH2 0x38A PUSH2 0x5F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x29EE JUMP JUMPDEST PUSH2 0x1505 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x607 CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x16FB JUMP JUMPDEST PUSH2 0x342 PUSH2 0x61A CALLDATASIZE PUSH1 0x4 PUSH2 0x29B4 JUMP JUMPDEST PUSH2 0x1706 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x62D CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x1723 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x640 CALLDATASIZE PUSH1 0x4 PUSH2 0x29EE JUMP JUMPDEST PUSH2 0x17B4 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x17C1 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x65B CALLDATASIZE PUSH1 0x4 PUSH2 0x2B95 JUMP JUMPDEST PUSH2 0x1825 JUMP JUMPDEST PUSH2 0x668 PUSH2 0x194C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x359D JUMP JUMPDEST PUSH2 0x688 PUSH2 0x683 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B4 JUMP JUMPDEST PUSH2 0x19E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x37C9 JUMP JUMPDEST PUSH2 0x357 PUSH2 0x1A44 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x6AB CALLDATASIZE PUSH1 0x4 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0x1A53 JUMP JUMPDEST PUSH2 0x38A PUSH2 0x6BE CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1E JUMP JUMPDEST PUSH2 0x1A83 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x1A90 JUMP JUMPDEST PUSH2 0x6D3 PUSH2 0x2887 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DE DUP4 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x6ED JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x3 SWAP4 SWAP1 SWAP4 MUL SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP5 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x76C DUP6 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x77D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD SWAP2 POP NUMBER SWAP1 PUSH2 0x7B1 PUSH2 0x7A4 DUP8 PUSH1 0x1E PUSH4 0xFFFFFFFF PUSH2 0x1AD6 AND JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7C1 DUP5 DUP10 DUP6 DUP6 PUSH2 0x1B3D JUMP JUMPDEST SWAP2 POP PUSH2 0x7EA SWAP1 POP PUSH5 0xE8D4A51000 PUSH2 0x7DE DUP11 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1C60 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1AD6 AND JUMP JUMPDEST SWAP6 POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x801 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0x81B JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x840 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x869 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x363B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x88F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x376B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x8C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x373B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8D3 JUMPI PUSH2 0x8D3 PUSH2 0x1418 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD NUMBER GT PUSH2 0x8E6 JUMPI PUSH1 0x3 SLOAD PUSH2 0x8E8 JUMP JUMPDEST NUMBER JUMPDEST PUSH1 0x9 SLOAD SWAP1 SWAP2 POP PUSH2 0x907 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP9 AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 DUP3 MSTORE DUP6 DUP8 ADD DUP9 DUP2 MSTORE PUSH1 0x0 PUSH1 0x60 DUP9 ADD DUP2 DUP2 MSTORE PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE DUP2 DUP5 MSTORE SWAP10 MLOAD PUSH1 0x3 SWAP1 SWAP11 MUL PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C688 DUP2 ADD DUP1 SLOAD SWAP8 MLOAD SWAP1 SWAP9 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL SWAP11 DUP11 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP9 AND SWAP9 SWAP1 SWAP9 OR SWAP1 SWAP5 SSTORE MLOAD PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C689 DUP4 ADD SSTORE SWAP5 MLOAD PUSH32 0xA66CC928B5EDB82AF9BD49922954155AB7B0942694BEA4CE44661D9A8736C68A SWAP1 SWAP2 ADD SSTORE SWAP2 SLOAD DUP2 DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP4 MSTORE SWAP1 DUP4 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP1 MLOAD CALLER SWAP1 PUSH32 0x38132AE9E6E6C4E777015BAC3679DADD42206FAD607B97846830BE4B412908C3 SWAP1 PUSH2 0xA34 SWAP1 DUP8 SWAP1 PUSH2 0x3801 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH2 0xA4F PUSH2 0x13CA JUMP JUMPDEST PUSH2 0xA6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0xABB SWAP1 DUP4 SWAP1 PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xAD4 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0xAEE JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xB0A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x365B JUMP JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xB60 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0xB7A JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xB96 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0xBB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36BB JUMP JUMPDEST PUSH1 0xE SSTORE JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xBF1 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC41 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C6D JUMP JUMPDEST SWAP1 POP PUSH1 0xB SLOAD DUP2 LT ISZERO PUSH2 0xC65 JUMPI PUSH1 0xB SLOAD PUSH2 0xC60 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST PUSH2 0xC68 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0xC76 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0xC90 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xCAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST DUP4 DUP3 EQ PUSH2 0xCCB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x372B JUMP JUMPDEST DUP1 ISZERO PUSH2 0xCD9 JUMPI PUSH2 0xCD9 PUSH2 0x1418 JUMP JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD60 JUMPI DUP3 PUSH2 0xD0E JUMPI PUSH2 0xD0E DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0xCF9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x566 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2996 JUMP JUMPDEST PUSH2 0xD58 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0xD1D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xD32 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2996 JUMP JUMPDEST DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0xD3E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xD53 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2CC9 JUMP JUMPDEST PUSH2 0x1CDC JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xCDD JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP2 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xDB0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xDE7 JUMPI PUSH2 0xDC8 DUP2 DUP7 PUSH2 0x1DC1 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xDD4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xDB6 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xE03 DUP5 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xE14 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD SWAP1 POP PUSH2 0xE2D DUP2 PUSH2 0x1EFF JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE43 DUP3 PUSH2 0x1F1C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE50 DUP5 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH2 0xE5E DUP2 DUP4 PUSH1 0x1 PUSH2 0x1F78 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE70 DUP5 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH2 0xE7C DUP2 DUP5 PUSH2 0x1DC1 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP2 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xEC8 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xEB5 PUSH2 0x28C1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xEAD JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xDE7 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0xF07 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0xF1B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MSTORE PUSH2 0xF2A DUP2 DUP7 PUSH2 0x1DC1 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF36 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x2 DUP2 LT PUSH2 0xF4A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0xECE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F2 DUP4 DUP4 PUSH2 0x1FF5 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP2 SWAP1 DUP3 SWAP1 DUP3 DUP1 ISZERO PUSH2 0xFD1 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xFBE PUSH2 0x28DF JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xFB6 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xDE7 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1033 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xFD7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x107B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x367B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1086 DUP3 PUSH2 0x1F1C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1093 DUP6 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x10A4 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x3 SWAP1 SWAP3 MUL SWAP1 SWAP3 ADD SWAP3 POP DUP7 GT ISZERO PUSH2 0x10F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36CB JUMP JUMPDEST PUSH2 0x10FF DUP4 PUSH2 0x2095 JUMP JUMPDEST PUSH2 0x1109 DUP3 DUP3 PUSH2 0x21A7 JUMP JUMPDEST PUSH2 0x1117 DUP8 DUP3 DUP7 PUSH1 0x0 DUP1 PUSH2 0x21FE JUMP JUMPDEST DUP1 SLOAD PUSH2 0x1129 SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST DUP2 SSTORE PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO PUSH2 0x115F JUMPI DUP2 SLOAD PUSH2 0x115A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP9 PUSH4 0xFFFFFFFF PUSH2 0x248C AND JUMP JUMPDEST PUSH2 0x117B JUMP JUMPDEST DUP2 SLOAD PUSH2 0x117B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x248C AND JUMP JUMPDEST PUSH2 0x1185 DUP3 DUP3 PUSH2 0x24E5 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9B1BFA7FA9EE420A16E124F794C35AC9F90472ACC99140EB2F6447C714CAD8EB DUP9 PUSH1 0x40 MLOAD PUSH2 0x11C8 SWAP2 SWAP1 PUSH2 0x37D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11E4 DUP3 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x11F5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 CALLER DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x1226 DUP4 PUSH2 0x2095 JUMP JUMPDEST PUSH2 0x1230 DUP3 DUP3 PUSH2 0x21A7 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0xB SLOAD PUSH2 0x1247 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST PUSH1 0xB SSTORE DUP1 SLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0x0 DUP1 DUP6 SSTORE PUSH1 0x1 DUP6 ADD DUP2 SWAP1 SSTORE SWAP1 SWAP2 SSTORE DUP4 SLOAD PUSH2 0x127D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP5 PUSH4 0xFFFFFFFF PUSH2 0x248C AND JUMP JUMPDEST PUSH2 0x1287 DUP5 DUP5 PUSH2 0x24E5 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1401B6FF3B281E84FD77353369CAED48BA7E787DD3821DB05CC0064373608201 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x12CC SWAP3 SWAP2 SWAP1 PUSH2 0x37E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12E4 PUSH2 0x13CA JUMP JUMPDEST PUSH2 0x1300 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0xABB SWAP1 DUP4 SWAP1 PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1362 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP4 POP PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13AC DUP3 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH2 0x13B7 DUP2 PUSH2 0x2095 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13DF PUSH2 0x250F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH5 0xE8D4A51000 DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x13B7 JUMPI PUSH2 0x142F DUP2 PUSH2 0x2095 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x141E JUMP JUMPDEST PUSH1 0x1E DUP2 JUMP JUMPDEST PUSH2 0x1444 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0x145E JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x147A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x14A4 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0x14BE JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x14DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14ED JUMPI PUSH2 0x14E8 PUSH2 0x1418 JUMP JUMPDEST PUSH2 0x14F6 JUMP JUMPDEST PUSH2 0x14F6 DUP4 PUSH2 0x13A1 JUMP JUMPDEST PUSH2 0x1500 DUP4 DUP4 PUSH2 0x1CDC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x150D PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0x1527 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1543 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1569 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36FB JUMP JUMPDEST DUP1 PUSH2 0x1586 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x374B JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x15B7 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1607 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C6D JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1615 JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x1647 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3556 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1675 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1699 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2B77 JUMP JUMPDEST PUSH2 0x16B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x368B JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD DUP4 PUSH1 0x40 MLOAD PUSH2 0x16EE SWAP2 SWAP1 PUSH2 0x37D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE80 DUP3 PUSH2 0x1A96 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1710 PUSH2 0x28DF JUMP JUMPDEST PUSH2 0x171A DUP5 DUP5 PUSH2 0x19E2 JUMP JUMPDEST MLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x172E DUP3 PUSH2 0x1F1C JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1755 JUMPI DUP1 PUSH2 0x174C DUP2 DUP6 PUSH1 0x0 PUSH2 0x1F78 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1737 JUMP JUMPDEST POP PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x15B6FC15 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2B6DF82A SWAP1 PUSH2 0x1786 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x13B7 CALLER DUP3 DUP5 PUSH1 0x1 PUSH2 0x2513 JUMP JUMPDEST PUSH2 0x17C9 PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0x17E3 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x17FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0x5 SLOAD ISZERO PUSH2 0x181F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x379B JUMP JUMPDEST NUMBER PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH2 0x182D PUSH2 0x13CA JUMP JUMPDEST DUP1 PUSH2 0x1847 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1863 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x188C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x377B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x18B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x376B JUMP JUMPDEST PUSH1 0x0 DUP6 GT PUSH2 0x18D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36DB JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0x18F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36BB JUMP JUMPDEST PUSH1 0xC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SSTORE NUMBER SWAP5 SWAP1 SWAP5 ADD PUSH1 0x3 DUP2 SWAP1 SSTORE SWAP3 SWAP1 SWAP3 ADD PUSH1 0x4 SSTORE PUSH1 0x6 DUP1 SLOAD DUP6 AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xD DUP1 SLOAD SWAP1 SWAP4 AND SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0xE SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x19D9 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x3 DUP7 MUL SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP5 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 DUP6 ADD MSTORE PUSH1 0x1 DUP1 DUP3 ADD SLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0x60 DUP4 ADD MSTORE SWAP1 DUP4 MSTORE SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x1970 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x19EA PUSH2 0x28DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19F5 DUP5 PUSH2 0x1A96 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1A5B PUSH2 0x13CA JUMP JUMPDEST PUSH2 0x1A77 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x371B JUMP JUMPDEST PUSH2 0x1A80 DUP2 PUSH2 0x265E JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1500 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x2513 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x1ACC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x367B JUMP JUMPDEST PUSH1 0x0 NOT ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F2 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x26DF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x7F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x369B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1B4C DUP6 DUP6 PUSH2 0x1FF5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B9B PUSH1 0x9 SLOAD PUSH2 0x7DE DUP11 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1B8F PUSH1 0x2 SLOAD DUP8 PUSH2 0x1C60 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1C60 AND JUMP JUMPDEST DUP9 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1BD0 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1C20 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C6D JUMP JUMPDEST SWAP1 POP PUSH2 0x1C32 DUP2 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C4F DUP3 PUSH2 0x7DE DUP6 PUSH5 0xE8D4A51000 PUSH4 0xFFFFFFFF PUSH2 0x1C60 AND JUMP JUMPDEST SWAP3 SWAP11 SWAP3 SWAP10 POP SWAP2 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1C6F JUMPI POP PUSH1 0x0 PUSH2 0xE80 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1C7C JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x7F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x370B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F2 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2716 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CE7 DUP4 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1CF8 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD SLOAD PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP3 DIV DUP3 AND SWAP3 POP PUSH2 0x1D43 SWAP2 DUP6 AND SWAP1 PUSH2 0x1D37 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST PUSH1 0x9 DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1D57 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP6 AND SWAP1 CALLER SWAP1 PUSH32 0x7B327867ECD5D7F5165F3D8AF5193F1255F215ACB14E229B529A4F8A9991ABBC SWAP1 PUSH2 0xA34 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x380F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x7 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1DD1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND DUP8 MSTORE SWAP4 MSTORE DUP1 DUP6 KECCAK256 PUSH1 0x2 PUSH1 0x3 SWAP1 SWAP6 MUL SWAP1 SWAP3 ADD SWAP4 DUP5 ADD SLOAD DUP5 SLOAD SWAP2 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP5 SWAP7 POP SWAP2 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1E34 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1E84 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C6D JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 ADD SLOAD NUMBER GT DUP1 ISZERO PUSH2 0x1E98 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1EC0 JUMPI PUSH1 0x0 PUSH2 0x1EA8 DUP6 PUSH2 0x1EFF JUMP JUMPDEST SWAP2 POP PUSH2 0x1EBC SWAP1 POP DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST SWAP3 POP POP JUMPDEST PUSH2 0x1EF4 DUP4 PUSH1 0x1 ADD SLOAD PUSH2 0x1EE8 PUSH5 0xE8D4A51000 PUSH2 0x7DE DUP7 DUP9 PUSH1 0x0 ADD SLOAD PUSH2 0x1C60 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F13 DUP4 PUSH1 0x0 DUP6 PUSH1 0x1 ADD SLOAD NUMBER PUSH2 0x1B3D JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xE80 JUMPI PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x1F55 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO JUMPDEST PUSH2 0x1F71 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x375B JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1F87 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x1FC1 DUP6 PUSH2 0x2095 JUMP JUMPDEST PUSH2 0x1FCB DUP3 DUP3 PUSH2 0x21A7 JUMP JUMPDEST DUP2 SLOAD PUSH2 0x1FE4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP7 DUP7 PUSH1 0x1 PUSH2 0x21FE JUMP JUMPDEST PUSH2 0x1FEE DUP3 DUP3 PUSH2 0x24E5 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD DUP4 LT ISZERO PUSH2 0x2007 JUMPI PUSH1 0x3 SLOAD SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD GT DUP1 ISZERO PUSH2 0x201A JUMPI POP PUSH1 0x5 SLOAD DUP3 GT JUMPDEST ISZERO PUSH2 0x2025 JUMPI PUSH1 0x5 SLOAD SWAP2 POP JUMPDEST PUSH1 0x4 SLOAD DUP3 GT PUSH2 0x204A JUMPI PUSH2 0x2043 PUSH1 0xA PUSH2 0x1B8F DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST SWAP1 POP PUSH2 0xE80 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP4 LT PUSH2 0x2063 JUMPI PUSH2 0x2043 DUP3 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST PUSH2 0x2043 PUSH2 0x207B PUSH1 0x4 SLOAD DUP5 PUSH2 0x1C9A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1D37 PUSH1 0xA PUSH2 0x1B8F DUP8 PUSH1 0x4 SLOAD PUSH2 0x1C9A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x20A4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD SWAP1 POP DUP1 PUSH1 0x1 ADD SLOAD NUMBER GT PUSH2 0x20C5 JUMPI POP PUSH2 0x1A80 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x20F5 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x210D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2121 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2145 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C6D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2159 JUMPI POP NUMBER PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE PUSH2 0x1A80 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2165 DUP5 PUSH2 0x1EFF JUMP JUMPDEST PUSH1 0x2 DUP7 ADD SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x217F SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST PUSH1 0x2 DUP6 ADD SSTORE NUMBER PUSH1 0x1 DUP6 ADD SSTORE PUSH1 0xB SLOAD PUSH2 0x219D SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST PUSH1 0xB SSTORE POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD ISZERO PUSH2 0x13B7 JUMPI PUSH1 0x0 PUSH2 0x21DC DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1EE8 PUSH5 0xE8D4A51000 PUSH2 0x7DE DUP8 PUSH1 0x2 ADD SLOAD DUP8 PUSH1 0x0 ADD SLOAD PUSH2 0x1C60 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x21F4 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2234 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x224C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2260 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2284 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2C6D JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT PUSH2 0x246E JUMPI PUSH1 0xB SLOAD PUSH2 0x22A0 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1C9A AND JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x0 PUSH1 0x2 DUP8 ADD SSTORE PUSH1 0xC SLOAD PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x22E0 SWAP3 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3556 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x230E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2332 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2B77 JUMP JUMPDEST PUSH2 0x234E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0xE SLOAD PUSH1 0x40 MLOAD PUSH4 0xEFE6A8B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xEFE6A8B SWAP2 PUSH2 0x2383 SWAP2 DUP10 SWAP2 DUP8 SWAP2 PUSH1 0x4 ADD PUSH2 0x3571 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x239D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP4 ISZERO PUSH2 0x241E JUMPI PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH4 0x15B6FC15 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2B6DF82A SWAP1 PUSH2 0x23EB SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x3520 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2419 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xAA4D283470C904C551D18BB894D37E17674920F3261A7F854BE501E25F421B7 DUP5 PUSH1 0x40 MLOAD PUSH2 0x2461 SWAP2 SWAP1 PUSH2 0x37D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xD60 JUMP JUMPDEST DUP3 ISZERO PUSH2 0xD60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x364B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1500 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x24AE SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x3556 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2742 JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD DUP2 SLOAD PUSH2 0x2506 SWAP2 PUSH5 0xE8D4A51000 SWAP2 PUSH2 0x7DE SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x1C60 AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2548 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x367B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x255E JUMPI CALLER PUSH2 0x2560 JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x256D DUP7 PUSH2 0x1A96 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x257E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE PUSH1 0xA DUP3 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP7 MSTORE SWAP1 SWAP3 MSTORE SWAP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x25B8 DUP4 PUSH2 0x2095 JUMP JUMPDEST PUSH2 0x25C2 DUP3 DUP3 PUSH2 0x21A7 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x25FF JUMPI DUP5 PUSH2 0x25EA JUMPI DUP2 SLOAD PUSH2 0x25EA SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP11 PUSH4 0xFFFFFFFF PUSH2 0x2827 AND JUMP JUMPDEST DUP1 SLOAD PUSH2 0x25FC SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1B18 AND JUMP JUMPDEST DUP2 SSTORE JUMPDEST PUSH2 0x2609 DUP3 DUP3 PUSH2 0x24E5 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5548C837AB068CF56A2C2479DF0882A4922FD203EDB7517321831D95078C5F62 DUP10 PUSH1 0x40 MLOAD PUSH2 0x264C SWAP2 SWAP1 PUSH2 0x37D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2684 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x366B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2700 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP2 SWAP1 PUSH2 0x362A JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x270C JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x273A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP2 SWAP1 PUSH2 0x362A JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x2754 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x284B JUMP JUMPDEST PUSH2 0x2770 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x37AB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x278C SWAP2 SWAP1 PUSH2 0x3514 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x27C9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x27CE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x27F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x36AB JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xE5E JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x280B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2B77 JUMP JUMPDEST PUSH2 0xE5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x837 SWAP1 PUSH2 0x378B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE5E SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x24AE SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x352E JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x287F JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE80 DUP2 PUSH2 0x38B2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x291D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2935 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x294D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE80 DUP2 PUSH2 0x38C6 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xE80 DUP2 PUSH2 0x38C6 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE80 DUP2 PUSH2 0x38CF JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE80 DUP2 PUSH2 0x38D8 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xE80 DUP2 PUSH2 0x38D8 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xE80 DUP2 PUSH2 0x38E1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE7C DUP5 DUP5 PUSH2 0x2900 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x29C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29D3 DUP6 DUP6 PUSH2 0x2900 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x29E4 DUP6 DUP3 DUP7 ADD PUSH2 0x2900 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A0D DUP6 DUP6 PUSH2 0x2900 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x29E4 DUP6 DUP3 DUP7 ADD PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A3F DUP7 DUP7 PUSH2 0x2900 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2A50 DUP7 DUP3 DUP8 ADD PUSH2 0x2975 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2A61 DUP7 DUP3 DUP8 ADD PUSH2 0x2900 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A8C DUP7 DUP7 PUSH2 0x2900 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2A9D DUP7 DUP3 DUP8 ADD PUSH2 0x2975 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2A61 DUP7 DUP3 DUP8 ADD PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2AC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2ACF DUP7 DUP7 PUSH2 0x2900 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2AE0 DUP7 DUP3 DUP8 ADD PUSH2 0x298B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2A61 DUP7 DUP3 DUP8 ADD PUSH2 0x2954 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2B09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2B20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B2C DUP9 DUP3 DUP10 ADD PUSH2 0x290B JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2B4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B57 DUP9 DUP3 DUP10 ADD PUSH2 0x290B JUMP JUMPDEST SWAP4 POP SWAP4 POP POP PUSH1 0x40 PUSH2 0x2B6A DUP9 DUP3 DUP10 ADD PUSH2 0x2954 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE7C DUP5 DUP5 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2BB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2BBC DUP11 DUP11 PUSH2 0x296A JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x2BCD DUP11 DUP3 DUP12 ADD PUSH2 0x2975 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x2BDE DUP11 DUP3 DUP12 ADD PUSH2 0x2975 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x2BEF DUP11 DUP3 DUP12 ADD PUSH2 0x2975 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x2C00 DUP11 DUP3 DUP12 ADD PUSH2 0x2900 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x2C11 DUP11 DUP3 DUP12 ADD PUSH2 0x296A JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x2C22 DUP11 DUP3 DUP12 ADD PUSH2 0x2975 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE7C DUP5 DUP5 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE7C DUP5 DUP5 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE7C DUP5 DUP5 PUSH2 0x2980 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29D3 DUP6 DUP6 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2A0D DUP6 DUP6 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE7C DUP5 DUP5 PUSH2 0x298B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CF3 DUP4 DUP4 PUSH2 0x2E3B JUMP JUMPDEST POP POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D07 DUP4 DUP4 PUSH2 0x347C JUMP JUMPDEST POP POP PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D1B DUP4 DUP4 PUSH2 0x34C6 JUMP JUMPDEST POP POP PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D2F DUP4 DUP4 PUSH2 0x34F9 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x2D40 DUP2 PUSH2 0x383E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D51 DUP3 PUSH2 0x3826 JUMP JUMPDEST PUSH2 0x2D5B DUP2 DUP6 PUSH2 0x3830 JUMP JUMPDEST SWAP4 POP PUSH2 0x2D66 DUP4 PUSH2 0x381D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D94 JUMPI DUP2 MLOAD PUSH2 0x2D7E DUP9 DUP3 PUSH2 0x2CE7 JUMP JUMPDEST SWAP8 POP PUSH2 0x2D89 DUP4 PUSH2 0x381D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2D6A JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DAA DUP3 PUSH2 0x3826 JUMP JUMPDEST PUSH2 0x2DB4 DUP2 DUP6 PUSH2 0x3830 JUMP JUMPDEST SWAP4 POP PUSH2 0x2DBF DUP4 PUSH2 0x381D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D94 JUMPI DUP2 MLOAD PUSH2 0x2DD7 DUP9 DUP3 PUSH2 0x2CFB JUMP JUMPDEST SWAP8 POP PUSH2 0x2DE2 DUP4 PUSH2 0x381D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2DC3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DF8 DUP3 PUSH2 0x3826 JUMP JUMPDEST PUSH2 0x2E02 DUP2 DUP6 PUSH2 0x3830 JUMP JUMPDEST SWAP4 POP PUSH2 0x2E0D DUP4 PUSH2 0x381D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D94 JUMPI DUP2 MLOAD PUSH2 0x2E25 DUP9 DUP3 PUSH2 0x2D0F JUMP JUMPDEST SWAP8 POP PUSH2 0x2E30 DUP4 PUSH2 0x381D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2E11 JUMP JUMPDEST PUSH2 0x2E44 DUP2 PUSH2 0x382A JUMP JUMPDEST PUSH2 0x2E4E DUP2 DUP5 PUSH2 0x3839 JUMP JUMPDEST SWAP3 POP PUSH2 0x2E59 DUP3 PUSH2 0x3823 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E87 JUMPI DUP2 MLOAD PUSH2 0x2E71 DUP8 DUP3 PUSH2 0x2D23 JUMP JUMPDEST SWAP7 POP PUSH2 0x2E7C DUP4 PUSH2 0x381D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2E5D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E9A DUP3 PUSH2 0x3826 JUMP JUMPDEST PUSH2 0x2EA4 DUP2 DUP6 PUSH2 0x3830 JUMP JUMPDEST SWAP4 POP PUSH2 0x2EAF DUP4 PUSH2 0x381D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D94 JUMPI DUP2 MLOAD PUSH2 0x2EC7 DUP9 DUP3 PUSH2 0x2D23 JUMP JUMPDEST SWAP8 POP PUSH2 0x2ED2 DUP4 PUSH2 0x381D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x2EB3 JUMP JUMPDEST PUSH2 0x2D40 DUP2 PUSH2 0x3849 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EF1 DUP3 PUSH2 0x3826 JUMP JUMPDEST PUSH2 0x2EFB DUP2 DUP6 PUSH2 0x3839 JUMP JUMPDEST SWAP4 POP PUSH2 0x2F0B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x387C JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2D40 DUP2 PUSH2 0x384E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F29 DUP3 PUSH2 0x3826 JUMP JUMPDEST PUSH2 0x2F33 DUP2 DUP6 PUSH2 0x3830 JUMP JUMPDEST SWAP4 POP PUSH2 0x2F43 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x387C JUMP JUMPDEST PUSH2 0x2F4C DUP2 PUSH2 0x38A8 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F63 PUSH1 0x18 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x496E76616C696420616C6C6F636174696F6E20706F696E740000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F9C PUSH1 0x16 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH22 0x10DB185A5B5A5B99C81C995DD85C990819985A5B1959 PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FCE PUSH1 0x1A DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x496E76616C6964206C6F636B6564534F5620416464726573732E000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3007 PUSH1 0x26 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x304F PUSH1 0x14 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH20 0x141BDBDB081D1BDAD95B881B9BDD08199BDD5B99 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x307F PUSH1 0xF DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH15 0x151C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30AA PUSH1 0x1B DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30E3 PUSH1 0x20 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x311C PUSH1 0x37 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x556E6C6F636B656420696D6D6564696174656C792070657263656E7420686173 DUP2 MSTORE PUSH32 0x20746F206265206C657373207468616E2031303030302E000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x317B PUSH1 0x12 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH18 0x4E6F7420656E6F7567682062616C616E6365 PUSH1 0x70 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31A9 PUSH1 0x13 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH19 0x496E76616C696420737461727420626C6F636B PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31D8 PUSH1 0xE DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH14 0x105C1C1C9BDD994819985A5B1959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3202 PUSH1 0x18 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x5265636569766572206164647265737320696E76616C69640000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x323B PUSH1 0x21 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x327E PUSH1 0xC DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32A6 PUSH1 0xF DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH15 0x82E4E4C2F2E640DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32D1 PUSH1 0x13 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH19 0x151BDAD95B88185B1C9958591E481859191959 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3300 PUSH1 0xE DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH14 0x105B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x332A PUSH1 0x2D DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x6F6E6C792077726170706572206F7220706F6F6C73206D617920776974686472 DUP2 MSTORE PUSH13 0x30BB903337B91030903AB9B2B9 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3379 PUSH1 0x15 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH21 0x496E76616C696420746F6B656E2061646472657373 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33AA PUSH1 0x13 DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH19 0x105B1C9958591E481A5B9A5D1A585B1A5E9959 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33D9 PUSH1 0x2A DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3425 PUSH1 0xF DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH15 0x105B1C9958591E481CDD1BDC1C1959 PUSH1 0x8A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3450 PUSH1 0x1F DUP4 PUSH2 0x3830 JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP4 ADD SWAP1 PUSH2 0x348D DUP5 DUP3 PUSH2 0x2F15 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x34A0 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x350B JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x34B3 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x34F9 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0xE5E PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x34F9 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x34D7 DUP5 DUP3 PUSH2 0x34F9 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x34EA PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x34F9 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0xE5E PUSH1 0x40 DUP6 ADD DUP3 JUMPDEST PUSH2 0x2D40 DUP2 PUSH2 0x3823 JUMP JUMPDEST PUSH2 0x2D40 DUP2 PUSH2 0x3871 JUMP JUMPDEST PUSH2 0x2D40 DUP2 PUSH2 0x3865 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F2 DUP3 DUP5 PUSH2 0x2EE6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x2D37 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x353C DUP3 DUP7 PUSH2 0x2D37 JUMP JUMPDEST PUSH2 0x3549 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2D37 JUMP JUMPDEST PUSH2 0x287F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x34F9 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3564 DUP3 DUP6 PUSH2 0x2D37 JUMP JUMPDEST PUSH2 0x7F2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x34F9 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x357F DUP3 DUP7 PUSH2 0x2D37 JUMP JUMPDEST PUSH2 0x3549 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x34F9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x7F2 DUP2 DUP5 PUSH2 0x2D46 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x7F2 DUP2 DUP5 PUSH2 0x2D9F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x7F2 DUP2 DUP5 PUSH2 0x2DED JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x7F2 DUP2 DUP5 PUSH2 0x2E8F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x2EDD JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x2F15 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x35FA DUP3 DUP8 PUSH2 0x2F15 JUMP JUMPDEST PUSH2 0x3607 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x350B JUMP JUMPDEST PUSH2 0x3614 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x34F9 JUMP JUMPDEST PUSH2 0x3621 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x34F9 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x7F2 DUP2 DUP5 PUSH2 0x2F1E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x2F56 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x2F8F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x2FFA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x3042 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x3072 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x309D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x30D6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x310F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x316E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x319C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x31CB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x31F5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x322E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x3299 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x32C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x32F3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x331D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x336C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x339D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x33CC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x3418 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xE80 DUP2 PUSH2 0x3443 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x347C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x34C6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x34F9 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3564 DUP3 DUP6 PUSH2 0x34F9 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x357F DUP3 DUP7 PUSH2 0x34F9 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xE80 DUP3 DUP5 PUSH2 0x3502 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3564 DUP3 DUP6 PUSH2 0x3502 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x2 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE80 DUP3 PUSH2 0x3859 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE80 DUP3 PUSH2 0x383E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE80 DUP3 PUSH2 0x3865 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3897 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x387F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xE5E JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x38BB DUP2 PUSH2 0x383E JUMP JUMPDEST DUP2 EQ PUSH2 0x1A80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38BB DUP2 PUSH2 0x3849 JUMP JUMPDEST PUSH2 0x38BB DUP2 PUSH2 0x384E JUMP JUMPDEST PUSH2 0x38BB DUP2 PUSH2 0x3823 JUMP JUMPDEST PUSH2 0x38BB DUP2 PUSH2 0x3865 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 CALL 0x29 CALLVALUE PUSH27 0x7AD7C0B86F8F36163BFE52B7D780D5AC97ABF3BAA44D2E45F78F03 0xCE PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "99:452:106:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;99:452:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21261:159:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1802:23:35;;;:::i;:::-;;;;;;;;2433:17;;;:::i;:::-;;;;;;;;10071:473:32;;;;;;;;;:::i;5532:882::-;;;;;;;;;:::i;:::-;;601:51;;;:::i;828:113:164:-;;;;;;;;;:::i;1723:28:35:-;;;:::i;3073:175:32:-;;;;;;;;;:::i;1549:35:35:-;;;:::i;3437:271:32:-;;;;;;;;;:::i;5053:190::-;;;:::i;7689:479::-;;;;;;;;;:::i;149:38:164:-;;;;;;;;;:::i;:::-;;;;;;;;22854:315:32;;;;;;;;;:::i;:::-;;;;;;;;1641:25:35;;;:::i;319:230:106:-;;;;;;;;;:::i;:::-;;;;;;;;;14759:204:32;;;;;;;;;:::i;9650:199::-;;;;;;;;;:::i;21569:389::-;;;;;;;;;:::i;:::-;;;;;;;;152:164:106;;;;;;;;;:::i;2224:67:35:-;;;;;;;;;:::i;:::-;;;;;;;;;;22425:297:32;;;;;;;;;:::i;:::-;;;;;;;;16117:936;;;;;;;;;:::i;19780:683::-;;;;;;;;;:::i;599:107:164:-;;;;;;;;;:::i;1940:30:35:-;;;;;;;;;:::i;:::-;;;;;;;;;;;10920:117:32;;;;;;;;;:::i;851:68:142:-;;;:::i;:::-;;;;;;;;1134:83;;;:::i;2373:32:35:-;;;:::i;2140:35::-;;;:::i;396:40:32:-;;;:::i;1891:22:35:-;;;:::i;20904:91:32:-;;;:::i;10646:141::-;;;:::i;656:46::-;;;:::i;3815:88::-;;;;;;;;;:::i;6691:252::-;;;;;;;;;:::i;4345:508::-;;;;;;;;;:::i;20552:108::-;;;;;;;;;:::i;23341:179::-;;;;;;;;;:::i;15521:316::-;;;;;;;;;:::i;13192:222::-;;;;;;;;;:::i;3962:123::-;;;:::i;2077:870::-;;;;;;;;;:::i;21054:96::-;;;:::i;:::-;;;;;;;;22117:178;;;;;;;;;:::i;:::-;;;;;;;;2520:27:35;;;:::i;1351:98:142:-;;;;;;;;;:::i;12800:138:32:-;;;;;;;;;:::i;2641:41:35:-;;;:::i;21261:159:32:-;21325:15;;:::i;:::-;21346:14;21363:22;21374:10;21363;:22::i;:::-;21346:39;;21396:12;21409:6;21396:20;;;;;;;;;;;;;;;;;21389:27;;;;;;;;21396:20;;;;;;;;21389:27;;-1:-1:-1;;;;;21389:27:32;;;;-1:-1:-1;;;21389:27:32;;-1:-1:-1;;;;;21389:27:32;;;;;;;;;;;;;;;;;;;;;;;;;;21261:159;-1:-1:-1;;;21261:159:32:o;1802:23:35:-;;;;:::o;2433:17::-;;;-1:-1:-1;;;;;2433:17:35;;:::o;10071:473:32:-;10187:7;10200:14;10217:22;10228:10;10217;:22::i;:::-;10200:39;;10243:21;10267:12;10280:6;10267:20;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10307:12:32;;10337:43;10347:32;:9;700:2;10347:32;:13;:32;:::i;:::-;10337:5;;:43;:9;:43;:::i;:::-;10323:57;;10387:33;10424:52;10450:4;10456:7;10465:5;10472:3;10424:25;:52::i;:::-;10384:92;-1:-1:-1;10487:53:32;;-1:-1:-1;432:4:32;10487:38;:7;10384:92;10487:38;:11;:38;:::i;:::-;:42;:53;:42;:53;:::i;:::-;10480:60;;;;;;;10071:473;;;;;;:::o;5532:882::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;;;;;;;;;5672:1:32;5653:16;-1:-1:-1;;;;;5653:20:32;;5645:57;;;;-1:-1:-1;;;5645:57:32;;;;;;;;;-1:-1:-1;;;;;5714:24:32;;5706:58;;;;-1:-1:-1;;;5706:58:32;;;;;;;;;-1:-1:-1;;;;;5776:22:32;;;;;;:10;:22;;;;;;:27;5768:59;;;;-1:-1:-1;;;5768:59:32;;;;;;;;;5836:11;5832:43;;;5854:16;:14;:16::i;:::-;5879:23;5920:10;;5905:12;:25;:53;;5948:10;;5905:53;;;5933:12;5905:53;5985:20;;5879:79;;-1:-1:-1;5985:42:32;;-1:-1:-1;;;;;5985:42:32;;;:24;:42;:::i;:::-;5962:20;:65;6054:161;;;;;;;;-1:-1:-1;;;;;6054:161:32;;;;;;-1:-1:-1;;;;;6054:161:32;;;;;;;;;;;;;;;;-1:-1:-1;6054:161:32;;;;;;6032:12;27:10:-1;;39:1;23:18;;45:23;;6032:187:32;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6032:187:32;;;;-1:-1:-1;;;;;;6032:187:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6325:19;;6300:22;;;:10;:22;;;;;;;:44;;;;6354:56;;6369:10;;6354:56;;;;6121:16;;6354:56;;;;;;;;;;478:1:164;5532:882:32;;;:::o;601:51::-;650:2;601:51;:::o;828:113:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;886:14:164;;903:5;886:14;;;:6;:14;;;;;;;:22;;-1:-1:-1;;886:22:164;;;917:20;;;;;893:6;;917:20;;;;;;;;;;828:113;:::o;1723:28:35:-;;;;:::o;3073:175:32:-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;-1:-1:-1;;;;;3154:33:32;;3146:72;;;;-1:-1:-1;;;3146:72:32;;;;;;;;;3222:9;:22;;-1:-1:-1;;;;;;3222:22:32;-1:-1:-1;;;;;3222:22:32;;;;;;;;;;3073:175::o;1549:35:35:-;;;;:::o;3437:271:32:-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;3579:5:32;3549:27;:35;3541:103;;;;-1:-1:-1;;;3541:103:32;;;;;;;;;3648:26;:56;3437:271::o;5053:190::-;5135:3;;:28;;-1:-1:-1;;;5135:28:32;;5104:7;;;;-1:-1:-1;;;;;5135:3:32;;;;:13;;:28;;5157:4;;5135:28;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5135:28:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5135:28:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5135:28:32;;;;;;;;;5117:46;;5185:17;;5174:7;:28;;:65;;5209:17;;:30;;5231:7;5209:30;:21;:30;:::i;:::-;5174:65;;;5205:1;5174:65;5167:72;;;5053:190;:::o;7689:479::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;7846:46:32;;;7838:74;;;;-1:-1:-1;;;7838:74:32;;;;;;;;;7921:14;7917:46;;;7942:16;:14;:16::i;:::-;7983:11;7966:14;8005:160;8029:6;8025:1;:10;8005:160;;;8052:14;8047:59;;8074:26;8085:11;;8097:1;8085:14;;;;;;;;;;;;;;;;;;;;;8074:26;8110:50;8123:11;;8135:1;8123:14;;;;;;;;;;;;;;;;;;;;;;8139:17;;8157:1;8139:20;;;;;;;;;;;;;;;;;;;;;;8110:12;:50::i;:::-;8037:3;;8005:160;;;;478:1:164;7689:479:32;;;;;:::o;149:38:164:-;;;;;;;;;;;;;;;:::o;22854:315:32:-;22969:12;:19;23022:21;;;;;;;;;;;;;;;;22930:16;;22969:19;22930:16;;22969:19;23022:21;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;23022:21:32;-1:-1:-1;22992:51:32;-1:-1:-1;23052:9:32;23047:98;23071:6;23067:1;:10;23047:98;;;23105:35;23131:1;23134:5;23105:25;:35::i;:::-;23089:10;23100:1;23089:13;;;;;;;;;;;;;;;;;:51;23079:3;;23047:98;;;-1:-1:-1;23155:10:32;22854:315;-1:-1:-1;;;22854:315:32:o;1641:25:35:-;;;;:::o;319:230:106:-;394:7;403;416:14;433:22;444:10;433;:22::i;:::-;416:39;;459:21;483:12;496:6;483:20;;;;;;;;;;;;;;;;;;459:44;;514:31;540:4;514:25;:31::i;:::-;507:38;;;;;;319:230;;;:::o;14759:204:32:-;14828:19;14850:22;14866:5;14850:15;:22::i;:::-;14828:44;;14877:14;14894:22;14905:10;14894;:22::i;:::-;14877:39;;14920;14933:6;14941:11;14954:4;14920:12;:39::i;:::-;14759:204;;;;:::o;9650:199::-;9742:7;9755:14;9772:22;9783:10;9772;:22::i;:::-;9755:39;;9805:40;9831:6;9839:5;9805:25;:40::i;:::-;9798:47;;;9650:199;;;;;:::o;21569:389::-;21677:12;:19;21738:24;;;;;;;;;;;;;;;;21635:19;;21677;21635;;21677;21738:24;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;21700:62:32;-1:-1:-1;21771:9:32;21766:163;21790:6;21786:1;:10;21766:163;;;21832:14;;;;:11;:14;;;;;;;;-1:-1:-1;;;;;21832:21:32;;;;;;;;;:28;21808:18;;:15;;21844:1;;21808:18;;;;;;;;;;;;21827:1;21808:21;;;;;;;;;;:52;21889:35;21915:1;21918:5;21889:25;:35::i;:::-;21865:15;21881:1;21865:18;;;;;;;;;;;;;;21884:1;21865:21;;;;;;;;;;:59;21798:3;;21766:163;;152:164:106;245:7;265:47;301:5;308:3;265:35;:47::i;2224:67:35:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22425:297:32:-;22528:12;:19;22584:22;;;;;;;;;;;;;;;;22488:17;;22528:19;22488:17;;22528:19;22584:22;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;22551:55:32;-1:-1:-1;22615:9:32;22610:86;22634:6;22630:1;:10;22610:86;;;22670:14;;;;:11;:14;;;;;;;;-1:-1:-1;;;;;22670:21:32;;;;;;;;;;22652:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;:12;;22682:1;;22652:15;;;;;;;;;;;;;;;:39;22642:3;;22610:86;;16117:936;-1:-1:-1;;;;;16217:22:32;;;;;;:10;:22;;;;;;16209:60;;;;-1:-1:-1;;;16209:60:32;;;;;;;;;16273:19;16295:22;16311:5;16295:15;:22::i;:::-;16273:44;;16322:14;16339:22;16350:10;16339;:22::i;:::-;16322:39;;16365:21;16389:12;16402:6;16389:20;;;;;;;;;;;;;;;;16437:19;;;:11;:19;;;;;;-1:-1:-1;;;;;16437:32:32;;;;;;;;;16481:11;;16389:20;;;;;;;;-1:-1:-1;16481:22:32;-1:-1:-1;16481:22:32;16473:53;;;;-1:-1:-1;;;16473:53:32;;;;;;;;;16531:19;16543:6;16531:11;:19::i;:::-;16554:25;16568:4;16574;16554:13;:25::i;:::-;16583:60;16599:10;16611:4;16617:11;16630:5;16637;16583:15;:60::i;:::-;16662:11;;:24;;16678:7;16662:24;:15;:24;:::i;:::-;16648:38;;16754:7;;-1:-1:-1;;;;;16754:7:32;16740:10;:21;16736:229;;;16768:14;;:57;;-1:-1:-1;;;;;16768:14:32;16804:10;16817:7;16768:57;:27;:57;:::i;:::-;16736:229;;;16911:14;;:49;;-1:-1:-1;;;;;16911:14:32;16939:11;16952:7;16911:49;:27;:49;:::i;:::-;16969:29;16987:4;16993;16969:17;:29::i;:::-;17029:10;-1:-1:-1;;;;;17007:42:32;17016:11;-1:-1:-1;;;;;17007:42:32;;17041:7;17007:42;;;;;;;;;;;;;;;16117:936;;;;;;;:::o;19780:683::-;19840:14;19857:22;19868:10;19857;:22::i;:::-;19840:39;;19883:21;19907:12;19920:6;19907:20;;;;;;;;;;;;;;;;19955:19;;;:11;:19;;;;;;19975:10;19955:31;;;;;;;19907:20;;;;;;;;-1:-1:-1;19991:19:32;19967:6;19991:11;:19::i;:::-;20014:25;20028:4;20034;20014:13;:25::i;:::-;20086:22;;;;20064:17;;:45;;;:21;:45;:::i;:::-;20044:17;:65;20134:11;;20181:22;;;;;20113:18;20207:15;;;-1:-1:-1;20226:15:32;;:19;;;20249:26;;;20279:14;;:60;;-1:-1:-1;;;;;20279:14:32;20315:10;20134:11;20279:60;:27;:60;:::i;:::-;20344:29;20362:4;20368;20344:17;:29::i;:::-;20413:10;-1:-1:-1;;;;;20383:76:32;20401:10;-1:-1:-1;;;;;20383:76:32;;20425:10;20437:21;20383:76;;;;;;;;;;;;;;;;19780:683;;;;;;:::o;599:107:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;654:14:164;;;;;;671:4;654:14;;;;;;;;;:21;;-1:-1:-1;;654:21:164;;;;;;684:18;;;;;661:6;;684:18;;1940:30:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1940:30:35;;;-1:-1:-1;;;;1940:30:35;;;-1:-1:-1;;;;;1940:30:35;;;;:::o;10920:117:32:-;10971:14;10988:22;10999:10;10988;:22::i;:::-;10971:39;;11014:19;11026:6;11014:11;:19::i;:::-;10920:117;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2373:32:35:-;;;;:::o;2140:35::-;;;;:::o;396:40:32:-;432:4;396:40;:::o;1891:22:35:-;;;-1:-1:-1;;;;;1891:22:35;;:::o;20904:91:32:-;20972:12;:19;20904:91;:::o;10646:141::-;10700:12;:19;10683:14;10723:61;10747:6;10743:1;:10;10723:61;;;10765:14;10777:1;10765:11;:14::i;:::-;10755:3;;10723:61;;656:46;700:2;656:46;:::o;3815:88::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;3881:7:32;:18;;-1:-1:-1;;;;;;3881:18:32;-1:-1:-1;;;;;3881:18:32;;;;;;;;;;3815:88::o;6691:252::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;6814:14:32;6810:84;;;6835:16;:14;:16::i;:::-;6810:84;;;6867:22;6878:10;6867;:22::i;:::-;6897:42;6910:10;6922:16;6897:12;:42::i;:::-;6691:252;;;:::o;4345:508::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;-1:-1:-1;;;;;4438:23:32;;4430:60;;;;-1:-1:-1;;;4430:60:32;;;;;;;;;4502:12;4494:39;;;;-1:-1:-1;;;4494:39:32;;;;;;;;;4607:3;;:28;;-1:-1:-1;;;4607:28:32;;4590:14;;-1:-1:-1;;;;;4607:3:32;;:13;;:28;;4629:4;;4607:28;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4607:28:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4607:28:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4607:28:32;;;;;;;;;4590:45;;4653:6;4643:7;:16;4639:48;;;4676:6;4666:16;;4639:48;4731:3;;:32;;-1:-1:-1;;;4731:32:32;;-1:-1:-1;;;;;4731:3:32;;;;:12;;:32;;4744:9;;4755:7;;4731:32;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4731:32:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4731:32:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4731:32:32;;;;;;;;;4723:60;;;;-1:-1:-1;;;4723:60:32;;;;;;;;;4830:9;-1:-1:-1;;;;;4815:34:32;;4841:7;4815:34;;;;;;;;;;;;;;;478:1:164;4345:508:32;;:::o;20552:108::-;20614:7;20634:22;20645:10;20634;:22::i;23341:179::-;23432:7;23445:18;;:::i;:::-;23466:30;23478:10;23490:5;23466:11;:30::i;:::-;23507:9;;23341:179;-1:-1:-1;;;;23341:179:32:o;15521:316::-;15582:19;15604:22;15620:5;15604:15;:22::i;:::-;15648:12;:19;15582:44;;-1:-1:-1;15631:14:32;15671:110;15695:6;15691:1;:10;15671:110;;;15730:1;15736:40;15730:1;15757:11;15713:14;15736:12;:40::i;:::-;-1:-1:-1;15703:3:32;;15671:110;;;-1:-1:-1;15784:9:32;;:49;;-1:-1:-1;;;15784:49:32;;-1:-1:-1;;;;;15784:9:32;;;;:36;;:49;;15821:11;;15784:49;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15784:49:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;13192:222:32;13368:42;13377:10;13389:7;13398:5;13405:4;13368:8;:42::i;3962:123::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;4020:8:32;;:13;4012:41;;;;-1:-1:-1;;;4012:41:32;;;;;;;;;4069:12;4058:8;:23;3962:123::o;2077:870::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;2399:3:32;;-1:-1:-1;;;;;2399:3:32;2391:26;2383:58;;;;-1:-1:-1;;;2383:58:32;;;;;;;;;-1:-1:-1;;;;;2453:27:32;;2445:61;;;;-1:-1:-1;;;2445:61:32;;;;;;;;;2538:1;2518:17;:21;2510:53;;;;-1:-1:-1;;;2510:53:32;;;;;;;;;2605:5;2575:27;:35;2567:103;;;;-1:-1:-1;;;2567:103:32;;;;;;;;;2675:3;:10;;-1:-1:-1;;;;;;2675:10:32;;;-1:-1:-1;;;;;2675:10:32;;;;;;;2689:20;:44;;;;2750:12;:32;;;;2737:10;:45;;;2802:33;;;;2786:13;:49;2839:7;:18;;;;;;;;;;;;;2861:9;:22;;;;;;;;;;;;;2887:26;:56;2077:870::o;21054:96::-;21104:17;21134:12;21127:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21127:19:32;;;;-1:-1:-1;;;21127:19:32;;-1:-1:-1;;;;;21127:19:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21054:96;:::o;22117:178::-;22194:15;;:::i;:::-;22215:14;22232:22;22243:10;22232;:22::i;:::-;22265:19;;;;:11;:19;;;;;;;;-1:-1:-1;;;;;22265:26:32;;;;;;;;;;22258:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22117:178:32;;;;:::o;2520:27:35:-;;;-1:-1:-1;;;;;2520:27:35;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;12800:138:32:-;12891:43;12900:10;12912:7;12921:5;12928;12891:8;:43::i;2641:41:35:-;;;;:::o;20663:187:32:-;-1:-1:-1;;;;;20756:22:32;;20726:7;20756:22;;;:10;:22;;;;;;20790:10;20782:43;;;;-1:-1:-1;;;20782:43:32;;;;;;;;;-1:-1:-1;;20836:10:32;;20663:187;-1:-1:-1;;20663:187:32:o;2817:121:145:-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;11899:676:32;12059:7;12068;12081:20;12104:59;12140:11;12153:9;12104:35;:59::i;:::-;12081:82;;12167:25;12195:91;12265:20;;12195:65;12238:5;:21;;;;;;;;;;-1:-1:-1;;;;;12238:21:32;-1:-1:-1;;;;;12195:65:32;:38;12212:20;;12195:12;:16;;:38;;;;:::i;:::-;:42;:65;:42;:65;:::i;:91::-;12318:15;;:40;;-1:-1:-1;;;12318:40:32;;12167:119;;-1:-1:-1;12291:24:32;;-1:-1:-1;;;;;12318:15:32;;;;:25;;:40;;12352:4;;12318:40;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12318:40:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12318:40:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12318:40:32;;;;;;;;;12291:67;-1:-1:-1;12381:39:32;12291:67;12402:17;12381:39;:20;:39;:::i;:::-;12362:58;-1:-1:-1;12424:33:32;12460:54;12362:58;12460:32;:17;432:4;12460:32;:21;:32;:::i;:54::-;12526:17;;;;-1:-1:-1;11899:676:32;;-1:-1:-1;;;;;;;;11899:676:32:o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;1201:125;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;6946:448:32:-;7026:14;7043:22;7054:10;7043;:22::i;:::-;7026:39;;7070:31;7104:12;7117:6;7104:20;;;;;;;;;;;;;;;;;;;;;:36;7167:20;;-1:-1:-1;;;;;;;;7104:36:32;;;;;;-1:-1:-1;7167:71:32;;;;;:49;;7104:36;7167:49;:24;:49;:::i;:::-;:53;:71;:53;:71;:::i;:::-;7144:20;:94;;;;7281:16;7242:12;7255:6;7242:20;;;;;;;;;;;;;;;;;;;;;:55;;-1:-1:-1;;;;;7242:55:32;;;;-1:-1:-1;;;7242:55:32;-1:-1:-1;;;;;7242:55:32;;;;;;7307:83;;;;;;7324:10;;7307:83;;;;7348:16;;7366:23;;7307:83;;8838:678;8928:7;8941:21;8965:12;8978:7;8965:21;;;;;;;;;;;;;;;;9014:20;;;:11;:20;;;;;;-1:-1:-1;;;;;9014:27:32;;;;;;;;;;9082:30;8965:21;;;;;;;9082:30;;;;9143:14;;:39;;-1:-1:-1;;;9143:39:32;;8965:21;;-1:-1:-1;9014:27:32;;9082:30;;8965:21;;9143:14;;:24;;:39;;9176:4;;9143:39;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9143:39:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9143:39:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9143:39:32;;;;;;;;;9116:66;;9205:4;:20;;;9190:12;:35;:60;;;;-1:-1:-1;9229:21:32;;;9190:60;9186:238;;;9260:34;9298:31;9324:4;9298:25;:31::i;:::-;9257:72;-1:-1:-1;9362:57:32;;-1:-1:-1;9362:25:32;9257:72;9362:57;:29;:57;:::i;:::-;9334:85;;9186:238;;9434:78;9496:4;:15;;;9434:57;432:4;9434:42;9450:25;9434:4;:11;;;:15;;:42;;;;:::i;:57::-;:61;:78;:61;:78;:::i;:::-;9427:85;8838:678;-1:-1:-1;;;;;;;8838:678:32:o;11709:187::-;11791:7;11800;11820:72;11846:5;11853:1;11856:5;:21;;;11879:12;11820:25;:72::i;:::-;11813:79;;;;11709:187;;;:::o;17056:349::-;17119:7;17154:10;-1:-1:-1;;;;;17172:19:32;;;17168:212;;17263:7;;-1:-1:-1;;;;;17263:7:32;17249:10;:21;;:52;;-1:-1:-1;17285:10:32;17274:22;;;;:10;:22;;;;;;:27;;17249:52;17241:110;;;;-1:-1:-1;;;17241:110:32;;;;;;;;;-1:-1:-1;17370:5:32;;17390:11;-1:-1:-1;17056:349:32:o;14966:392::-;15072:21;15096:12;15109:7;15096:21;;;;;;;;;;;;;;;;15145:20;;;:11;:20;;;;;;-1:-1:-1;;;;;15145:34:32;;;;;;;;;15096:21;;;;;;;;-1:-1:-1;15184:20:32;15157:7;15184:11;:20::i;:::-;15208:25;15222:4;15228;15208:13;:25::i;:::-;15261:14;;15237:84;;-1:-1:-1;;;;;15261:14:32;15278:4;15284:12;15298:16;15261:14;15237:15;:84::i;:::-;15325:29;15343:4;15349;15325:17;:29::i;:::-;14966:392;;;;;:::o;8352:483::-;8448:7;8473:10;;8465:5;:18;8461:52;;;8498:10;;8490:18;;8461:52;8531:1;8520:8;;:12;:30;;;;;8542:8;;8536:3;:14;8520:30;8516:60;;;8563:8;;8557:14;;8516:60;8590:13;;8583:3;:20;8579:253;;8617:42;650:2;8617:14;:3;8625:5;8617:14;:7;:14;:::i;:42::-;8610:49;;;;8579:253;8683:13;;8674:5;:22;8670:162;;8710:14;:3;8718:5;8710:14;:7;:14;:::i;8670:162::-;8747:80;8804:22;8812:13;;8804:3;:7;;:22;;;;:::i;:::-;8747:52;650:2;8747:24;8765:5;8747:13;;:17;;:24;;;;:::i;11040:666::-;11091:21;11115:12;11128:7;11115:21;;;;;;;;;;;;;;;;;;11091:45;;11201:4;:20;;;11185:12;:36;11181:58;;11228:7;;;11181:58;11270:14;;:39;;-1:-1:-1;;;11270:39:32;;11243:24;;-1:-1:-1;;;;;11270:14:32;;:24;;:39;;11303:4;;11270:39;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11270:39:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11270:39:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11270:39:32;;;;;;;;;11243:66;-1:-1:-1;11317:21:32;11313:83;;-1:-1:-1;11368:12:32;11345:20;;;;:35;11385:7;;11313:83;11401:26;11429:34;11467:31;11493:4;11467:25;:31::i;:::-;11535:30;;;;11400:98;;-1:-1:-1;11400:98:32;-1:-1:-1;11535:62:32;;11400:98;11535:62;:34;:62;:::i;:::-;11502:30;;;:95;11624:12;11601:20;;;:35;11661:17;;:41;;11683:18;11661:41;:21;:41;:::i;:::-;11641:17;:61;-1:-1:-1;;;;11040:666:32;:::o;17408:397::-;17529:11;;:15;17525:277;;17611:25;17639:83;17706:4;:15;;;17639:62;432:4;17639:47;17655:4;:30;;;17639:4;:11;;;:15;;:47;;;;:::i;:83::-;17752:22;;;;17611:111;;-1:-1:-1;17752:45:32;;17611:111;17752:45;:26;:45;:::i;:::-;17727:22;;;:70;-1:-1:-1;17408:397:32;;:::o;18468:1158::-;18665:23;;;;18774:3;;:28;;-1:-1:-1;;;18774:28:32;;18633:29;;-1:-1:-1;;;;;18774:3:32;;:13;;:28;;18796:4;;18774:28;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18774:28:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18774:28:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18774:28:32;;;;;;;;;18756:46;;18821:21;18810:7;:32;18806:817;;18869:17;;:44;;18891:21;18869:44;:21;:44;:::i;:::-;18849:17;:64;18944:1;18918:23;;;:27;19203:3;;19223:9;;19203:54;;-1:-1:-1;;;19203:54:32;;-1:-1:-1;;;;;19203:3:32;;;;:11;;:54;;19223:9;;;19235:21;;19203:54;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19203:54:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19203:54:32;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;19203:54:32;;;;;;;;;19195:81;;;;-1:-1:-1;;;19195:81:32;;;;;;;;;19281:9;;19336:26;;19281:82;;-1:-1:-1;;;19281:82:32;;-1:-1:-1;;;;;19281:9:32;;;;:17;;:82;;19299:12;;19313:21;;19281:82;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19281:82:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19281:82:32;;;;19373:16;19369:84;;;19397:9;;:50;;-1:-1:-1;;;19397:50:32;;-1:-1:-1;;;;;19397:9:32;;;;:36;;:50;;19434:12;;19397:50;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19397:50:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19397:50:32;;;;19369:84;19514:10;-1:-1:-1;;;;;19486:62:32;19500:12;-1:-1:-1;;;;;19486:62:32;;19526:21;19486:62;;;;;;;;;;;;;;;18806:817;;;19573:18;19572:19;19564:54;;;;-1:-1:-1;;;19564:54:32;;;;;;;;654:174:144;765:58;;739:85;;758:5;;-1:-1:-1;;;788:23:144;765:58;;813:2;;817:5;;765:58;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;765:58:144;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;765:58:144;;;179:29:-1;;;;160:49;;;739:18:144;:85::i;17808:268:32:-;18026:30;;;;18010:11;;:62;;432:4;;18010:47;;;:15;:47;:::i;:62::-;17992:15;;;;:80;-1:-1:-1;17808:268:32:o;780:87:137:-;853:10;780:87;:::o;13730:833:32:-;-1:-1:-1;;;;;13857:22:32;;;;;;:10;:22;;;;;;13849:60;;;;-1:-1:-1;;;13849:60:32;;;;;;;;;13913:19;-1:-1:-1;;;;;13935:19:32;;:40;;13965:10;13935:40;;;13957:5;13935:40;13913:62;;13980:14;13997:22;14008:10;13997;:22::i;:::-;13980:39;;14023:21;14047:12;14060:6;14047:20;;;;;;;;;;;;;;;;14095:19;;;:11;:19;;;;;;-1:-1:-1;;;;;14095:32:32;;;;;;;;;14047:20;;;;;;;;-1:-1:-1;14132:19:32;14107:6;14132:11;:19::i;:::-;14193:25;14207:4;14213;14193:13;:25::i;:::-;14227:11;;14223:254;;14333:18;14328:101;;14353:14;;:76;;-1:-1:-1;;;;;14353:14:32;14393:10;14414:4;14421:7;14353:76;:31;:76;:::i;:::-;14448:11;;:24;;14464:7;14448:24;:15;:24;:::i;:::-;14434:38;;14223:254;14480:29;14498:4;14504;14480:17;:29::i;:::-;14539:10;-1:-1:-1;;;;;14518:41:32;14526:11;-1:-1:-1;;;;;14518:41:32;;14551:7;14518:41;;;;;;;;;;;;;;;13730:833;;;;;;;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;3411:315:145:-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1614:175::-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;2564:999:144:-;3111:27;3119:5;-1:-1:-1;;;;;3111:25:144;;:27::i;:::-;3103:71;;;;-1:-1:-1;;;3103:71:144;;;;;;;;;3233:12;3247:23;3282:5;-1:-1:-1;;;;;3274:19:144;3294:4;3274:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3232:67:144;;;;3311:7;3303:52;;;;-1:-1:-1;;;3303:52:144;;;;;;;;;3364:17;;:21;3360:200;;3489:10;3478:30;;;;;;;;;;;;;;3470:85;;;;-1:-1:-1;;;3470:85:144;;;;;;;;831:204;962:68;;936:95;;955:5;;-1:-1:-1;;;985:27:144;962:68;;1014:4;;1020:2;;1024:5;;962:68;;;;639:564:136;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;99:452:106:-;;;;;;;;;;-1:-1:-1;;;;;99:452:106;;;;;;-1:-1:-1;;;;;99:452:106;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;99:452:106;;;-1:-1:-1;;99:452:106:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:352;;;290:3;283:4;275:6;271:17;267:27;257:2;;308:1;305;298:12;257:2;-1:-1;328:20;;368:18;357:30;;354:2;;;400:1;397;390:12;354:2;434:4;426:6;422:17;410:29;;485:3;477:4;469:6;465:17;455:8;451:32;448:41;445:2;;;502:1;499;492:12;445:2;250:262;;;;;;896:124;960:20;;985:30;960:20;985:30;;1027:128;1102:13;;1120:30;1102:13;1120:30;;1162:162;1245:20;;1270:49;1245:20;1270:49;;1508:130;1575:20;;1600:33;1575:20;1600:33;;1645:134;1723:13;;1741:33;1723:13;1741:33;;1786:128;1852:20;;1877:32;1852:20;1877:32;;1921:241;;2025:2;2013:9;2004:7;2000:23;1996:32;1993:2;;;2041:1;2038;2031:12;1993:2;2076:1;2093:53;2138:7;2118:9;2093:53;;2169:366;;;2290:2;2278:9;2269:7;2265:23;2261:32;2258:2;;;2306:1;2303;2296:12;2258:2;2341:1;2358:53;2403:7;2383:9;2358:53;;;2348:63;;2320:97;2448:2;2466:53;2511:7;2502:6;2491:9;2487:22;2466:53;;;2456:63;;2427:98;2252:283;;;;;;2542:366;;;2663:2;2651:9;2642:7;2638:23;2634:32;2631:2;;;2679:1;2676;2669:12;2631:2;2714:1;2731:53;2776:7;2756:9;2731:53;;;2721:63;;2693:97;2821:2;2839:53;2884:7;2875:6;2864:9;2860:22;2839:53;;2915:491;;;;3053:2;3041:9;3032:7;3028:23;3024:32;3021:2;;;3069:1;3066;3059:12;3021:2;3104:1;3121:53;3166:7;3146:9;3121:53;;;3111:63;;3083:97;3211:2;3229:53;3274:7;3265:6;3254:9;3250:22;3229:53;;;3219:63;;3190:98;3319:2;3337:53;3382:7;3373:6;3362:9;3358:22;3337:53;;;3327:63;;3298:98;3015:391;;;;;;3413:491;;;;3551:2;3539:9;3530:7;3526:23;3522:32;3519:2;;;3567:1;3564;3557:12;3519:2;3602:1;3619:53;3664:7;3644:9;3619:53;;;3609:63;;3581:97;3709:2;3727:53;3772:7;3763:6;3752:9;3748:22;3727:53;;;3717:63;;3688:98;3817:2;3835:53;3880:7;3871:6;3860:9;3856:22;3835:53;;3911:483;;;;4045:2;4033:9;4024:7;4020:23;4016:32;4013:2;;;4061:1;4058;4051:12;4013:2;4096:1;4113:53;4158:7;4138:9;4113:53;;;4103:63;;4075:97;4203:2;4221:52;4265:7;4256:6;4245:9;4241:22;4221:52;;;4211:62;;4182:97;4310:2;4328:50;4370:7;4361:6;4350:9;4346:22;4328:50;;4401:795;;;;;;4605:2;4593:9;4584:7;4580:23;4576:32;4573:2;;;4621:1;4618;4611:12;4573:2;4656:31;;4707:18;4696:30;;4693:2;;;4739:1;4736;4729:12;4693:2;4767:80;4839:7;4830:6;4819:9;4815:22;4767:80;;;4757:90;;;;4635:218;4912:2;4901:9;4897:18;4884:32;4936:18;4928:6;4925:30;4922:2;;;4968:1;4965;4958:12;4922:2;4996:79;5067:7;5058:6;5047:9;5043:22;4996:79;;;4986:89;;;;4863:218;5112:2;5130:50;5172:7;5163:6;5152:9;5148:22;5130:50;;;5120:60;;5091:95;4567:629;;;;;;;;;5203:257;;5315:2;5303:9;5294:7;5290:23;5286:32;5283:2;;;5331:1;5328;5321:12;5283:2;5366:1;5383:61;5436:7;5416:9;5383:61;;5467:1067;;;;;;;;5709:3;5697:9;5688:7;5684:23;5680:33;5677:2;;;5726:1;5723;5716:12;5677:2;5761:1;5778:69;5839:7;5819:9;5778:69;;;5768:79;;5740:113;5884:2;5902:53;5947:7;5938:6;5927:9;5923:22;5902:53;;;5892:63;;5863:98;5992:2;6010:53;6055:7;6046:6;6035:9;6031:22;6010:53;;;6000:63;;5971:98;6100:2;6118:53;6163:7;6154:6;6143:9;6139:22;6118:53;;;6108:63;;6079:98;6208:3;6227:53;6272:7;6263:6;6252:9;6248:22;6227:53;;;6217:63;;6187:99;6317:3;6336:73;6401:7;6392:6;6381:9;6377:22;6336:73;;;6326:83;;6296:119;6446:3;6465:53;6510:7;6501:6;6490:9;6486:22;6465:53;;;6455:63;;6425:99;5671:863;;;;;;;;;;;6541:281;;6665:2;6653:9;6644:7;6640:23;6636:32;6633:2;;;6681:1;6678;6671:12;6633:2;6716:1;6733:73;6798:7;6778:9;6733:73;;6829:241;;6933:2;6921:9;6912:7;6908:23;6904:32;6901:2;;;6949:1;6946;6939:12;6901:2;6984:1;7001:53;7046:7;7026:9;7001:53;;7077:263;;7192:2;7180:9;7171:7;7167:23;7163:32;7160:2;;;7208:1;7205;7198:12;7160:2;7243:1;7260:64;7316:7;7296:9;7260:64;;7347:366;;;7468:2;7456:9;7447:7;7443:23;7439:32;7436:2;;;7484:1;7481;7474:12;7436:2;7519:1;7536:53;7581:7;7561:9;7536:53;;7720:366;;;7841:2;7829:9;7820:7;7816:23;7812:32;7809:2;;;7857:1;7854;7847:12;7809:2;7892:1;7909:53;7954:7;7934:9;7909:53;;8093:239;;8196:2;8184:9;8175:7;8171:23;8167:32;8164:2;;;8212:1;8209;8202:12;8164:2;8247:1;8264:52;8308:7;8288:9;8264:52;;8340:253;;8465:88;8549:3;8541:6;8465:88;;;-1:-1;;8582:4;8573:14;;8458:135;8602:265;;8733:94;8823:3;8815:6;8733:94;;;-1:-1;;8856:4;8847:14;;8726:141;8876:265;;9007:94;9097:3;9089:6;9007:94;;;-1:-1;;9130:4;9121:14;;9000:141;9150:173;;9237:46;9279:3;9271:6;9237:46;;;-1:-1;;9312:4;9303:14;;9230:93;9331:113;9414:24;9432:5;9414:24;;;9409:3;9402:37;9396:48;;;9488:842;;9671:73;9738:5;9671:73;;;9757:105;9855:6;9850:3;9757:105;;;9750:112;;9883:75;9952:5;9883:75;;;9978:7;10006:1;9991:317;10016:6;10013:1;10010:13;9991:317;;;10083:6;10077:13;10104:101;10201:3;10186:13;10104:101;;;10097:108;;10222:79;10294:6;10222:79;;;10212:89;-1:-1;;10038:1;10031:9;9991:317;;;-1:-1;10321:3;;9650:680;-1:-1;;;;;9650:680;10431:866;;10620:76;10690:5;10620:76;;;10709:108;10810:6;10805:3;10709:108;;;10702:115;;10838:78;10910:5;10838:78;;;10936:7;10964:1;10949:326;10974:6;10971:1;10968:13;10949:326;;;11041:6;11035:13;11062:107;11165:3;11150:13;11062:107;;;11055:114;;11186:82;11261:6;11186:82;;;11176:92;-1:-1;;10996:1;10989:9;10949:326;;11398:866;;11587:76;11657:5;11587:76;;;11676:108;11777:6;11772:3;11676:108;;;11669:115;;11805:78;11877:5;11805:78;;;11903:7;11931:1;11916:326;11941:6;11938:1;11935:13;11916:326;;;12008:6;12002:13;12029:107;12132:3;12117:13;12029:107;;;12022:114;;12153:82;12228:6;12153:82;;;12143:92;-1:-1;;11963:1;11956:9;11916:326;;12305:624;12424:48;12466:5;12424:48;;;12485:74;12552:6;12547:3;12485:74;;;12478:81;;12580:50;12624:5;12580:50;;;12650:7;12678:1;12663:254;12688:6;12685:1;12682:13;12663:254;;;12755:6;12749:13;12776:63;12835:3;12820:13;12776:63;;;12769:70;;12856:54;12903:6;12856:54;;;12846:64;-1:-1;;12710:1;12703:9;12663:254;;;12667:14;12403:526;;;;;;12968:690;;13113:54;13161:5;13113:54;;;13180:86;13259:6;13254:3;13180:86;;;13173:93;;13287:56;13337:5;13287:56;;;13363:7;13391:1;13376:260;13401:6;13398:1;13395:13;13376:260;;;13468:6;13462:13;13489:63;13548:3;13533:13;13489:63;;;13482:70;;13569:60;13622:6;13569:60;;;13559:70;-1:-1;;13423:1;13416:9;13376:260;;13666:104;13743:21;13758:5;13743:21;;13777:356;;13905:38;13937:5;13905:38;;;13955:88;14036:6;14031:3;13955:88;;;13948:95;;14048:52;14093:6;14088:3;14081:4;14074:5;14070:16;14048:52;;;14112:16;;;;;13885:248;-1:-1;;13885:248;14140:148;14229:53;14276:5;14229:53;;14633:347;;14745:39;14778:5;14745:39;;;14796:71;14860:6;14855:3;14796:71;;;14789:78;;14872:52;14917:6;14912:3;14905:4;14898:5;14894:16;14872:52;;;14945:29;14967:6;14945:29;;;14936:39;;;;14725:255;-1:-1;;;14725:255;14988:324;;15148:67;15212:2;15207:3;15148:67;;;15248:26;15228:47;;15303:2;15294:12;;15134:178;-1:-1;;15134:178;15321:322;;15481:67;15545:2;15540:3;15481:67;;;-1:-1;;;15561:45;;15634:2;15625:12;;15467:176;-1:-1;;15467:176;15652:326;;15812:67;15876:2;15871:3;15812:67;;;15912:28;15892:49;;15969:2;15960:12;;15798:180;-1:-1;;15798:180;15987:375;;16147:67;16211:2;16206:3;16147:67;;;16247:34;16227:55;;-1:-1;;;16311:2;16302:12;;16295:30;16353:2;16344:12;;16133:229;-1:-1;;16133:229;16371:320;;16531:67;16595:2;16590:3;16531:67;;;-1:-1;;;16611:43;;16682:2;16673:12;;16517:174;-1:-1;;16517:174;16700:315;;16860:67;16924:2;16919:3;16860:67;;;-1:-1;;;16940:38;;17006:2;16997:12;;16846:169;-1:-1;;16846:169;17024:327;;17184:67;17248:2;17243:3;17184:67;;;17284:29;17264:50;;17342:2;17333:12;;17170:181;-1:-1;;17170:181;17360:332;;17520:67;17584:2;17579:3;17520:67;;;17620:34;17600:55;;17683:2;17674:12;;17506:186;-1:-1;;17506:186;17701:392;;17861:67;17925:2;17920:3;17861:67;;;17961:34;17941:55;;18030:25;18025:2;18016:12;;18009:47;18084:2;18075:12;;17847:246;-1:-1;;17847:246;18102:318;;18262:67;18326:2;18321:3;18262:67;;;-1:-1;;;18342:41;;18411:2;18402:12;;18248:172;-1:-1;;18248:172;18429:319;;18589:67;18653:2;18648:3;18589:67;;;-1:-1;;;18669:42;;18739:2;18730:12;;18575:173;-1:-1;;18575:173;18757:314;;18917:67;18981:2;18976:3;18917:67;;;-1:-1;;;18997:37;;19062:2;19053:12;;18903:168;-1:-1;;18903:168;19080:324;;19240:67;19304:2;19299:3;19240:67;;;19340:26;19320:47;;19395:2;19386:12;;19226:178;-1:-1;;19226:178;19413:370;;19573:67;19637:2;19632:3;19573:67;;;19673:34;19653:55;;-1:-1;;;19737:2;19728:12;;19721:25;19774:2;19765:12;;19559:224;-1:-1;;19559:224;19792:312;;19952:67;20016:2;20011:3;19952:67;;;-1:-1;;;20032:35;;20095:2;20086:12;;19938:166;-1:-1;;19938:166;20113:315;;20273:67;20337:2;20332:3;20273:67;;;-1:-1;;;20353:38;;20419:2;20410:12;;20259:169;-1:-1;;20259:169;20437:319;;20597:67;20661:2;20656:3;20597:67;;;-1:-1;;;20677:42;;20747:2;20738:12;;20583:173;-1:-1;;20583:173;20765:314;;20925:67;20989:2;20984:3;20925:67;;;-1:-1;;;21005:37;;21070:2;21061:12;;20911:168;-1:-1;;20911:168;21088:382;;21248:67;21312:2;21307:3;21248:67;;;21348:34;21328:55;;-1:-1;;;21412:2;21403:12;;21396:37;21461:2;21452:12;;21234:236;-1:-1;;21234:236;21479:321;;21639:67;21703:2;21698:3;21639:67;;;-1:-1;;;21719:44;;21791:2;21782:12;;21625:175;-1:-1;;21625:175;21809:319;;21969:67;22033:2;22028:3;21969:67;;;-1:-1;;;22049:42;;22119:2;22110:12;;21955:173;-1:-1;;21955:173;22137:379;;22297:67;22361:2;22356:3;22297:67;;;22397:34;22377:55;;-1:-1;;;22461:2;22452:12;;22445:34;22507:2;22498:12;;22283:233;-1:-1;;22283:233;22525:315;;22685:67;22749:2;22744:3;22685:67;;;-1:-1;;;22765:38;;22831:2;22822:12;;22671:169;-1:-1;;22671:169;22849:331;;23009:67;23073:2;23068:3;23009:67;;;23109:33;23089:54;;23171:2;23162:12;;22995:185;-1:-1;;22995:185;23275:848;23491:23;;23420:4;23411:14;;;23520:79;23415:3;23491:23;23520:79;;;23440:165;23689:4;23682:5;23678:16;23672:23;23701:61;23756:4;23751:3;23747:14;23733:12;23701:61;;;23615:153;23852:4;23845:5;23841:16;23835:23;23864:63;23921:4;23916:3;23912:14;23898:12;23864:63;;;23778:155;24027:4;24020:5;24016:16;24010:23;24039:63;24096:4;24091:3;24087:14;24073:12;24039:63;;25145:653;25358:23;;25290:4;25281:14;;;25387:63;25285:3;25358:23;25387:63;;;25310:146;25535:4;25528:5;25524:16;25518:23;25547:63;25604:4;25599:3;25595:14;25581:12;25547:63;;;25466:150;25702:4;25695:5;25691:16;25685:23;25714:63;25771:4;25766:3;25762:14;25748:12;26538:103;26611:24;26629:5;26611:24;;26768:124;26850:36;26880:5;26850:36;;26899:100;26970:23;26987:5;26970:23;;27123:262;;27267:93;27356:3;27347:6;27267:93;;27392:213;27510:2;27495:18;;27524:71;27499:9;27568:6;27524:71;;27612:435;27786:2;27771:18;;27800:71;27775:9;27844:6;27800:71;;;27882:72;27950:2;27939:9;27935:18;27926:6;27882:72;;;27965;28033:2;28022:9;28018:18;28009:6;27965:72;;28054:324;28200:2;28185:18;;28214:71;28189:9;28258:6;28214:71;;;28296:72;28364:2;28353:9;28349:18;28340:6;28296:72;;28385:435;28559:2;28544:18;;28573:71;28548:9;28617:6;28573:71;;;28655:72;28723:2;28712:9;28708:18;28699:6;28655:72;;28827:437;29033:2;29047:47;;;29018:18;;29108:146;29018:18;29240:6;29108:146;;29271:449;29483:2;29497:47;;;29468:18;;29558:152;29468:18;29696:6;29558:152;;29727:449;29939:2;29953:47;;;29924:18;;30014:152;29924:18;30152:6;30014:152;;30183:361;30351:2;30365:47;;;30336:18;;30426:108;30336:18;30520:6;30426:108;;30551:201;30663:2;30648:18;;30677:65;30652:9;30715:6;30677:65;;30759:245;30893:2;30878:18;;30907:87;30882:9;30967:6;30907:87;;31011:575;31227:3;31212:19;;31242:87;31216:9;31302:6;31242:87;;;31340:70;31406:2;31395:9;31391:18;31382:6;31340:70;;;31421:72;31489:2;31478:9;31474:18;31465:6;31421:72;;;31504;31572:2;31561:9;31557:18;31548:6;31504:72;;;31198:388;;;;;;;;31853:301;31991:2;32005:47;;;31976:18;;32066:78;31976:18;32130:6;32066:78;;32161:407;32352:2;32366:47;;;32337:18;;32427:131;32337:18;32427:131;;32575:407;32766:2;32780:47;;;32751:18;;32841:131;32751:18;32841:131;;32989:407;33180:2;33194:47;;;33165:18;;33255:131;33165:18;33255:131;;33403:407;33594:2;33608:47;;;33579:18;;33669:131;33579:18;33669:131;;33817:407;34008:2;34022:47;;;33993:18;;34083:131;33993:18;34083:131;;34231:407;34422:2;34436:47;;;34407:18;;34497:131;34407:18;34497:131;;34645:407;34836:2;34850:47;;;34821:18;;34911:131;34821:18;34911:131;;35059:407;35250:2;35264:47;;;35235:18;;35325:131;35235:18;35325:131;;35473:407;35664:2;35678:47;;;35649:18;;35739:131;35649:18;35739:131;;35887:407;36078:2;36092:47;;;36063:18;;36153:131;36063:18;36153:131;;36301:407;36492:2;36506:47;;;36477:18;;36567:131;36477:18;36567:131;;36715:407;36906:2;36920:47;;;36891:18;;36981:131;36891:18;36981:131;;37129:407;37320:2;37334:47;;;37305:18;;37395:131;37305:18;37395:131;;37543:407;37734:2;37748:47;;;37719:18;;37809:131;37719:18;37809:131;;37957:407;38148:2;38162:47;;;38133:18;;38223:131;38133:18;38223:131;;38371:407;38562:2;38576:47;;;38547:18;;38637:131;38547:18;38637:131;;38785:407;38976:2;38990:47;;;38961:18;;39051:131;38961:18;39051:131;;39199:407;39390:2;39404:47;;;39375:18;;39465:131;39375:18;39465:131;;39613:407;39804:2;39818:47;;;39789:18;;39879:131;39789:18;39879:131;;40027:407;40218:2;40232:47;;;40203:18;;40293:131;40203:18;40293:131;;40441:407;40632:2;40646:47;;;40617:18;;40707:131;40617:18;40707:131;;40855:407;41046:2;41060:47;;;41031:18;;41121:131;41031:18;41121:131;;41269:407;41460:2;41474:47;;;41445:18;;41535:131;41445:18;41535:131;;41683:407;41874:2;41888:47;;;41859:18;;41949:131;41859:18;41949:131;;42097:318;42267:3;42252:19;;42282:123;42256:9;42378:6;42282:123;;42422:317;42592:2;42577:18;;42606:123;42581:9;42702:6;42606:123;;42746:213;42864:2;42849:18;;42878:71;42853:9;42922:6;42878:71;;42966:324;43112:2;43097:18;;43126:71;43101:9;43170:6;43126:71;;43297:435;43471:2;43456:18;;43485:71;43460:9;43529:6;43485:71;;43739:211;43856:2;43841:18;;43870:70;43845:9;43913:6;43870:70;;43957:322;44102:2;44087:18;;44116:70;44091:9;44159:6;44116:70;;44286:170;44429:4;44420:14;;44377:79;44823:93;44903:3;44889:27;45081:156;45203:12;;45174:63;45576:104;-1:-1;45666:4;;45644:36;46721:197;46858:19;;;46907:4;46898:14;;46851:67;47345:130;47466:3;47444:31;-1:-1;47444:31;47995:91;;48057:24;48075:5;48057:24;;48093:85;48159:13;48152:21;;48135:43;48185:107;;48263:24;48281:5;48263:24;;48417:121;-1:-1;;;;;48479:54;;48462:76;48624:104;-1:-1;;;;;48685:38;;48668:60;49329:106;;49407:23;49424:5;49407:23;;49443:268;49508:1;49515:101;49529:6;49526:1;49523:13;49515:101;;;49596:11;;;49590:18;49577:11;;;49570:39;49551:2;49544:10;49515:101;;;49631:6;49628:1;49625:13;49622:2;;;-1:-1;;49696:1;49678:16;;49671:27;49492:219;49719:97;49807:2;49787:14;-1:-1;;49783:28;;49767:49;49824:117;49893:24;49911:5;49893:24;;;49886:5;49883:35;49873:2;;49932:1;49929;49922:12;49948:111;50014:21;50029:5;50014:21;;50066:149;50151:40;50185:5;50151:40;;50386:117;50455:24;50473:5;50455:24;;50510:115;50578:23;50595:5;50578:23;"
            },
            "methodIdentifiers": {
              "BONUS_BLOCK_MULTIPLIER()": "10a168f9",
              "PRECISION()": "aaf5eb68",
              "SECONDS_PER_BLOCK()": "c1d74258",
              "SOV()": "08dcb360",
              "add(address,uint96,bool)": "0c43a7cd",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "bonusEndBlock()": "1aed6553",
              "claimReward(address,address)": "4953c782",
              "claimRewardFromAllPools(address)": "d6a49f0e",
              "deposit(address,uint256,address)": "f45346dc",
              "emergencyWithdraw(address)": "6ff1c9bc",
              "endBlock()": "083c6323",
              "getEstimatedReward(address,uint256,uint256)": "0b1a2851",
              "getMissedBalance()": "3723de42",
              "getPassedBlocksWithBonusMultiplier(uint256,uint256)": "5e379679",
              "getPoolAccumulatedReward(address)": "492e019d",
              "getPoolId(address)": "caa9a08d",
              "getPoolInfo(address)": "06bfa938",
              "getPoolInfoList()": "e788d8d1",
              "getPoolLength()": "b3944d52",
              "getUserAccumulatedReward(address,address)": "56085d4c",
              "getUserAccumulatedRewardList(address)": "48c84d9e",
              "getUserBalanceList(address)": "5d50d060",
              "getUserInfo(address,address)": "f2801fe7",
              "getUserInfoList(address)": "62748fbb",
              "getUserPoolTokenBalance(address,address)": "d0452aa6",
              "initialize(address,uint256,uint256,uint256,address,address,uint256)": "e3866c9a",
              "isOwner()": "8f32d59b",
              "lockedSOV()": "f2f46b3b",
              "onTokensDeposited(address,uint256)": "d8c173c4",
              "owner()": "8da5cb5b",
              "poolInfoList(uint256)": "787b4026",
              "removeAdmin(address)": "1785f53c",
              "rewardTokensPerBlock()": "29d0fa3e",
              "setLockedSOV(address)": "1d8f889c",
              "setUnlockedImmediatelyPercent(uint256)": "2d0857a2",
              "setWrapper(address)": "c2167d93",
              "startBlock()": "48cd4cb1",
              "stopMining()": "da408679",
              "totalAllocationPoint()": "a1a6690f",
              "totalUsersBalance()": "9a13ba29",
              "transferOwnership(address)": "f2fde38b",
              "transferSOV(address,uint256)": "c680c0b7",
              "unlockedImmediatelyPercent()": "f729a404",
              "update(address,uint96,bool)": "c35a934d",
              "updateAllPools()": "b9ec7d74",
              "updatePool(address)": "7b46c54f",
              "updateTokens(address[],uint96[],bool)": "414d57fb",
              "userInfoMap(uint256,address)": "5f02c145",
              "withdraw(address,uint256,address)": "69328dec",
              "wrapper()": "ac210cc7"
            }
          },
          "userdoc": {
            "methods": {
              "add(address,uint96,bool)": {
                "notice": "adds a new lp to the pool. Can only be called by the owner or an admin"
              },
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "claimReward(address,address)": {
                "notice": "transfers reward tokens"
              },
              "claimRewardFromAllPools(address)": {
                "notice": "transfers reward tokens from all pools"
              },
              "deposit(address,uint256,address)": {
                "notice": "deposits pool tokens"
              },
              "emergencyWithdraw(address)": {
                "notice": "withdraws pool tokens without transferring reward tokens"
              },
              "getEstimatedReward(address,uint256,uint256)": {
                "notice": "returns estimated reward"
              },
              "getMissedBalance()": {
                "notice": "Get the missed SOV balance of LM contract."
              },
              "getPoolId(address)": {
                "notice": "returns pool id"
              },
              "getPoolInfo(address)": {
                "notice": "returns pool info for the given token"
              },
              "getPoolInfoList()": {
                "notice": "returns list of pool token's info"
              },
              "getPoolLength()": {
                "notice": "returns count of pool tokens"
              },
              "getUserAccumulatedReward(address,address)": {
                "notice": "returns accumulated reward"
              },
              "getUserAccumulatedRewardList(address)": {
                "notice": "returns accumulated reward for the given user for each pool token"
              },
              "getUserBalanceList(address)": {
                "notice": "returns list of [amount, accumulatedReward] for the given user for each pool token"
              },
              "getUserInfo(address,address)": {
                "notice": "returns UserInfo for the given pool and user"
              },
              "getUserInfoList(address)": {
                "notice": "returns list of UserInfo for the given user for each pool token"
              },
              "getUserPoolTokenBalance(address,address)": {
                "notice": "returns the pool token balance a user has on the contract"
              },
              "initialize(address,uint256,uint256,uint256,address,address,uint256)": {
                "notice": "Initialize mining."
              },
              "onTokensDeposited(address,uint256)": {
                "notice": "if the lending pools directly mint/transfer tokens to this address, process it like a user deposit"
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "setLockedSOV(address)": {
                "notice": "Sets lockedSOV contract."
              },
              "setUnlockedImmediatelyPercent(uint256)": {
                "notice": "Sets unlocked immediately percent."
              },
              "setWrapper(address)": {
                "notice": "sets wrapper proxy contract"
              },
              "stopMining()": {
                "notice": "stops mining by setting end block"
              },
              "transferSOV(address,uint256)": {
                "notice": "Transfers SOV tokens to given address.  Owner use this function to withdraw SOV from LM contract  into another account."
              },
              "update(address,uint96,bool)": {
                "notice": "updates the given pool's reward tokens allocation point"
              },
              "updateAllPools()": {
                "notice": "Updates reward variables for all pools."
              },
              "updatePool(address)": {
                "notice": "Updates reward variables of the given pool to be up-to-date"
              },
              "updateTokens(address[],uint96[],bool)": {
                "notice": "updates the given pools' reward tokens allocation points"
              },
              "withdraw(address,uint256,address)": {
                "notice": "withdraws pool tokens and transfers reward tokens"
              }
            }
          }
        }
      },
      "contracts/mockup/LiquidityPoolV1ConverterMockup.sol": {
        "LiquidityPoolV1ConverterMockup": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "_token0",
                  "type": "address"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "_token1",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "reserveTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060405161016e38038061016e8339818101604052604081101561003357600080fd5b50805160209091015160008054600181810183558280527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56391820180546001600160a01b039687166001600160a01b031991821617909155835491820190935501805493909216921691909117905560be806100b06000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063d031370b14602d575b600080fd5b604760048036036020811015604157600080fd5b50356063565b604080516001600160a01b039092168252519081900360200190f35b60008181548110606f57fe5b6000918252602090912001546001600160a01b031690508156fea265627a7a72315820bb5eaee5240cc277531dcaf9d26babf82671d35d4a1ce578c7caedecef96339564736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x16E CODESIZE SUB DUP1 PUSH2 0x16E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP4 SSTORE DUP3 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP2 DUP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE DUP4 SLOAD SWAP2 DUP3 ADD SWAP1 SWAP4 SSTORE ADD DUP1 SLOAD SWAP4 SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xBE DUP1 PUSH2 0xB0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD031370B EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x47 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x63 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT PUSH1 0x6F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xBB 0x5E 0xAE 0xE5 0x24 0xC 0xC2 PUSH24 0x531DCAF9D26BABF82671D35D4A1CE578C7CAEDECEF963395 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "61:195:107:-;;;137:117;8:9:-1;5:2;;;30:1;27;20:12;5:2;137:117:107;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;137:117:107;;;;;;;192:13;27:10:-1;;39:1;23:18;;;45:23;;192:27:107;;;;;;;;;-1:-1:-1;;;;;192:27:107;;;-1:-1:-1;;;;;;192:27:107;;;;;;;27:10:-1;;23:18;;;45:23;;;223:27:107;;;;;;;;;;;;;;;61:195;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063d031370b14602d575b600080fd5b604760048036036020811015604157600080fd5b50356063565b604080516001600160a01b039092168252519081900360200190f35b60008181548110606f57fe5b6000918252602090912001546001600160a01b031690508156fea265627a7a72315820bb5eaee5240cc277531dcaf9d26babf82671d35d4a1ce578c7caedecef96339564736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD031370B EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x47 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x63 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT PUSH1 0x6F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xBB 0x5E 0xAE 0xE5 0x24 0xC 0xC2 PUSH24 0x531DCAF9D26BABF82671D35D4A1CE578C7CAEDECEF963395 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "61:195:107:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;61:195:107;;;;;;;;;;;;;;;;;;;104:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;104:29:107;;:::i;:::-;;;;-1:-1:-1;;;;;104:29:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;104:29:107;;-1:-1:-1;104:29:107;:::o"
            },
            "methodIdentifiers": {
              "reserveTokens(uint256)": "d031370b"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/mockup/LockedSOVMockup.sol": {
        "LockedSOVMockup": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "_admins",
                  "type": "address[]"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_removedAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_sovAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "Deposited",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_sovAmount",
                  "type": "uint256"
                }
              ],
              "name": "Withdrawn",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newAdmin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_sovAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_sovAmount",
                  "type": "uint256"
                }
              ],
              "name": "depositSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_addr",
                  "type": "address"
                }
              ],
              "name": "getLockedBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_balance",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_addr",
                  "type": "address"
                }
              ],
              "name": "getUnlockedBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_balance",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_adminToRemove",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                }
              ],
              "name": "withdrawAndStakeTokensFrom",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Franklin Richards - powerhousefrank@protonmail.com",
            "details": "This is not a complete mockup of the Locked SOV Contract.",
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_newAdmin": "The address of the new admin."
                }
              },
              "constructor": {
                "params": {
                  "_SOV": "The SOV token address.",
                  "_admins": "The list of admins to be added."
                }
              },
              "deposit(address,uint256,uint256)": {
                "params": {
                  "_basisPoint": "The % (in Basis Point)which determines how much will be unlocked immediately.",
                  "_sovAmount": "The amount of SOV to be added to the locked and/or unlocked balance.",
                  "_userAddress": "The user whose locked balance has to be updated with `_sovAmount`."
                }
              },
              "depositSOV(address,uint256)": {
                "details": "This is here because there are dependency with other contracts.",
                "params": {
                  "_sovAmount": "The amount of SOV to be added to the locked balance.",
                  "_userAddress": "The user whose locked balance has to be updated with _sovAmount."
                }
              },
              "getLockedBalance(address)": {
                "params": {
                  "_addr": "The address of the user to check the locked balance."
                },
                "return": "_balance The locked balance of the address `_addr`."
              },
              "getUnlockedBalance(address)": {
                "params": {
                  "_addr": "The address of the user to check the unlocked balance."
                },
                "return": "_balance The unlocked balance of the address `_addr`."
              },
              "removeAdmin(address)": {
                "params": {
                  "_adminToRemove": "The address of the admin which should be removed."
                }
              },
              "withdrawAndStakeTokensFrom(address)": {
                "params": {
                  "_userAddress": "The address of user tokens will be withdrawn."
                }
              }
            },
            "title": "An mockup for the Locked SOV Contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50604051610cfd380380610cfd8339818101604052604081101561003357600080fd5b81516020830180516040519294929383019291908464010000000082111561005a57600080fd5b90830190602082018581111561006f57600080fd5b825186602082028301116401000000008211171561008c57600080fd5b82525081516020918201928201910280838360005b838110156100b95781810151838201526020016100a1565b5050505091909101604052505050506001600160a01b038216610123576040805162461bcd60e51b815260206004820152601460248201527f496e76616c696420534f5620416464726573732e000000000000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0384161781555b81518110156101945760016003600084848151811061015a57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010161013f565b505050610b57806101a66000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80632b6df82a1161005b5780632b6df82a146101435780637048027514610169578063c40868931461018f578063f33bf9a1146101b557610088565b806308dcb3601461008d5780630efe6a8b146100b1578063129de5bf146100e55780631785f53c1461011d575b600080fd5b6100956101e1565b604080516001600160a01b039092168252519081900360200190f35b6100e3600480360360608110156100c757600080fd5b506001600160a01b0381351690602081013590604001356101f0565b005b61010b600480360360208110156100fb57600080fd5b50356001600160a01b0316610200565b60408051918252519081900360200190f35b6100e36004803603602081101561013357600080fd5b50356001600160a01b031661021b565b6100e36004803603602081101561015957600080fd5b50356001600160a01b0316610332565b6100e36004803603602081101561017f57600080fd5b50356001600160a01b0316610348565b61010b600480360360208110156101a557600080fd5b50356001600160a01b03166104b0565b6100e3600480360360408110156101cb57600080fd5b506001600160a01b0381351690602001356104cb565b6000546001600160a01b031681565b6101fb8383836104db565b505050565b6001600160a01b031660009081526002602052604090205490565b3360009081526003602052604090205460ff1661027b576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205460ff166102e8576040805162461bcd60e51b815260206004820152601760248201527f41646472657373206973206e6f7420616e2061646d696e000000000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260036020526040808220805460ff191690555133917fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce91a350565b61033c81826106d9565b6103458161080e565b50565b3360009081526003602052604090205460ff166103a8576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b0381166103f5576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205460ff1615610463576040805162461bcd60e51b815260206004820152601860248201527f4164647265737320697320616c72656164792061646d696e0000000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260036020526040808220805460ff191660011790555133917fbf3f493c772c8c283fd124432c2d0f539ab343faa04258fe88e52912d36b102b91a350565b6001600160a01b031660009081526001602052604090205490565b6104d7828260006104db565b5050565b612710811061051b5760405162461bcd60e51b8152600401808060200182810382526026815260200180610afd6026913960400191505060405180910390fd5b60008054604080516323b872dd60e01b81523360048201523060248201526044810186905290516001600160a01b03909216916323b872dd9160648082019260209290919082900301818787803b15801561057557600080fd5b505af1158015610589573d6000803e3d6000fd5b505050506040513d602081101561059f57600080fd5b50519050806105df5760405162461bcd60e51b815260040180806020018281038252603a815260200180610ac3603a913960400191505060405180910390fd5b60006106036127106105f7868663ffffffff61086516565b9063ffffffff6108c716565b6001600160a01b03861660009081526002602052604090205490915061062f908263ffffffff61090916565b6001600160a01b03861660009081526002602090815260408083209390935560019052205461067690829061066a908763ffffffff61090916565b9063ffffffff61096316565b6001600160a01b0386166000818152600160209081526040918290209390935580518781529283018690528051919233927ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5929181900390910190a35050505050565b806001600160a01b0381166106eb5750815b6001600160a01b0380841660009081526002602090815260408083208054908490558354825163a9059cbb60e01b815287871660048201526024810183905292519195169263a9059cbb926044808201939182900301818787803b15801561075257600080fd5b505af1158015610766573d6000803e3d6000fd5b505050506040513d602081101561077c57600080fd5b50519050806107bc5760405162461bcd60e51b815260040180806020018281038252603a815260200180610ac3603a913960400191505060405180910390fd5b826001600160a01b0316856001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb846040518082815260200191505060405180910390a35050505050565b6001600160a01b0381166000818152600160209081526040808320805490849055815181815291519094927f70e256e9264f1aa014ac7f20b4a16618647d26695e23c7181ee67a22c37e7521928290030190a35050565b600082610874575060006108c1565b8282028284828161088157fe5b04146108be5760405162461bcd60e51b8152600401808060200182810382526021815260200180610aa26021913960400191505060405180910390fd5b90505b92915050565b60006108be83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506109a5565b6000828201838110156108be576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006108be83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a47565b60008183610a315760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109f65781810151838201526020016109de565b50505050905090810190601f168015610a235780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610a3d57fe5b0495945050505050565b60008184841115610a995760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109f65781810151838201526020016109de565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e426173697320506f696e742068617320746f206265206c657373207468616e2031303030302ea265627a7a723158203f48bdc0ad27b6f713aa0fadd002b0556ac9adabee60adf17665b1eb78d5584264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xCFD CODESIZE SUB DUP1 PUSH2 0xCFD DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 MSTORE POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x123 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420534F5620416464726573732E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR DUP2 SSTORE JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x194 JUMPI PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x15A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0x13F JUMP JUMPDEST POP POP POP PUSH2 0xB57 DUP1 PUSH2 0x1A6 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2B6DF82A GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x2B6DF82A EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0xC4086893 EQ PUSH2 0x18F JUMPI DUP1 PUSH4 0xF33BF9A1 EQ PUSH2 0x1B5 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0xEFE6A8B EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0x129DE5BF EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x11D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1F0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x21B JUMP JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x332 JUMP JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x348 JUMP JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4CB JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1FB DUP4 DUP4 DUP4 PUSH2 0x4DB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x27B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2E8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420616E2061646D696E000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP2 PUSH32 0xDB9D5D31320DAF5BC7181D565B6DA4D12E30F0F4D5AA324A992426C14A1D19CE SWAP2 LOG3 POP JUMP JUMPDEST PUSH2 0x33C DUP2 DUP3 PUSH2 0x6D9 JUMP JUMPDEST PUSH2 0x345 DUP2 PUSH2 0x80E JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x3A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x496E76616C69642041646472657373 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x463 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320697320616C72656164792061646D696E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD CALLER SWAP2 PUSH32 0xBF3F493C772C8C283FD124432C2D0F539AB343FAA04258FE88E52912D36B102B SWAP2 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x4D7 DUP3 DUP3 PUSH1 0x0 PUSH2 0x4DB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0x51B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAFD PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x589 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x5DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC3 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x603 PUSH2 0x2710 PUSH2 0x5F7 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x865 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x8C7 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x62F SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x909 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x676 SWAP1 DUP3 SWAP1 PUSH2 0x66A SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x909 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x963 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP1 MLOAD DUP8 DUP2 MSTORE SWAP3 DUP4 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 CALLER SWAP3 PUSH32 0xF5681F9D0DB1B911AC18EE83D515A1CF1051853A9EAE418316A2FDF7DEA427C5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6EB JUMPI POP DUP2 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE DUP4 SLOAD DUP3 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE DUP8 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP3 MLOAD SWAP2 SWAP6 AND SWAP3 PUSH4 0xA9059CBB SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x752 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x766 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x7BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC3 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xD1C19FBCD4551A5EDFB66D43D2E337C04837AFDA3482B42BDF569A8FCCDAE5FB DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE DUP2 MLOAD DUP2 DUP2 MSTORE SWAP2 MLOAD SWAP1 SWAP5 SWAP3 PUSH32 0x70E256E9264F1AA014AC7F20B4A16618647D26695E23C7181EE67A22C37E7521 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x874 JUMPI POP PUSH1 0x0 PUSH2 0x8C1 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x881 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x8BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAA2 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8BE DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x9A5 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8BE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8BE DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0xA47 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0xA31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9F6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9DE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xA23 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0xA3D JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xA99 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x9F6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9DE JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77546F6B656E20747261 PUSH15 0x7366657220776173206E6F74207375 PUSH4 0x63657373 PUSH7 0x756C2E20436865 PUSH4 0x6B207265 PUSH4 0x65697665 PUSH19 0x20616464726573732E426173697320506F696E PUSH21 0x2068617320746F206265206C657373207468616E20 BALANCE ADDRESS ADDRESS ADDRESS ADDRESS 0x2E LOG2 PUSH6 0x627A7A723158 KECCAK256 EXTCODEHASH 0x48 0xBD 0xC0 0xAD 0x27 0xB6 0xF7 SGT 0xAA 0xF 0xAD 0xD0 MUL 0xB0 SSTORE PUSH11 0xC9ADABEE60ADF17665B1EB PUSH25 0xD5584264736F6C634300051100320000000000000000000000 ",
              "sourceMap": "289:5842:108:-;;;1831:240;8:9:-1;5:2;;;30:1;27;20:12;5:2;1831:240:108;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1831:240:108;;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;1831:240:108;;421:4:-1;412:14;;;;1831:240:108;;;;;412:14:-1;1831:240:108;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;-1:-1;;;;1831:240:108;;;;;;-1:-1:-1;;;;;;;;;1902:18:108;;1894:51;;;;;-1:-1:-1;;;1894:51:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;1949:3;:18;;-1:-1:-1;;;;;;1949:18:108;-1:-1:-1;;;;;1949:18:108;;;;;1971:97;2003:7;:14;1995:5;:22;1971:97;;;2059:4;2033:7;:23;2041:7;2049:5;2041:14;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2033:23:108;;;;;;;;;;;-1:-1:-1;2033:23:108;:30;;-1:-1:-1;;2033:30:108;;;;;;;;;;-1:-1:-1;2019:7:108;1971:97;;;;1831:240;;289:5842;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100885760003560e01c80632b6df82a1161005b5780632b6df82a146101435780637048027514610169578063c40868931461018f578063f33bf9a1146101b557610088565b806308dcb3601461008d5780630efe6a8b146100b1578063129de5bf146100e55780631785f53c1461011d575b600080fd5b6100956101e1565b604080516001600160a01b039092168252519081900360200190f35b6100e3600480360360608110156100c757600080fd5b506001600160a01b0381351690602081013590604001356101f0565b005b61010b600480360360208110156100fb57600080fd5b50356001600160a01b0316610200565b60408051918252519081900360200190f35b6100e36004803603602081101561013357600080fd5b50356001600160a01b031661021b565b6100e36004803603602081101561015957600080fd5b50356001600160a01b0316610332565b6100e36004803603602081101561017f57600080fd5b50356001600160a01b0316610348565b61010b600480360360208110156101a557600080fd5b50356001600160a01b03166104b0565b6100e3600480360360408110156101cb57600080fd5b506001600160a01b0381351690602001356104cb565b6000546001600160a01b031681565b6101fb8383836104db565b505050565b6001600160a01b031660009081526002602052604090205490565b3360009081526003602052604090205460ff1661027b576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205460ff166102e8576040805162461bcd60e51b815260206004820152601760248201527f41646472657373206973206e6f7420616e2061646d696e000000000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260036020526040808220805460ff191690555133917fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce91a350565b61033c81826106d9565b6103458161080e565b50565b3360009081526003602052604090205460ff166103a8576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b0381166103f5576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205460ff1615610463576040805162461bcd60e51b815260206004820152601860248201527f4164647265737320697320616c72656164792061646d696e0000000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260036020526040808220805460ff191660011790555133917fbf3f493c772c8c283fd124432c2d0f539ab343faa04258fe88e52912d36b102b91a350565b6001600160a01b031660009081526001602052604090205490565b6104d7828260006104db565b5050565b612710811061051b5760405162461bcd60e51b8152600401808060200182810382526026815260200180610afd6026913960400191505060405180910390fd5b60008054604080516323b872dd60e01b81523360048201523060248201526044810186905290516001600160a01b03909216916323b872dd9160648082019260209290919082900301818787803b15801561057557600080fd5b505af1158015610589573d6000803e3d6000fd5b505050506040513d602081101561059f57600080fd5b50519050806105df5760405162461bcd60e51b815260040180806020018281038252603a815260200180610ac3603a913960400191505060405180910390fd5b60006106036127106105f7868663ffffffff61086516565b9063ffffffff6108c716565b6001600160a01b03861660009081526002602052604090205490915061062f908263ffffffff61090916565b6001600160a01b03861660009081526002602090815260408083209390935560019052205461067690829061066a908763ffffffff61090916565b9063ffffffff61096316565b6001600160a01b0386166000818152600160209081526040918290209390935580518781529283018690528051919233927ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5929181900390910190a35050505050565b806001600160a01b0381166106eb5750815b6001600160a01b0380841660009081526002602090815260408083208054908490558354825163a9059cbb60e01b815287871660048201526024810183905292519195169263a9059cbb926044808201939182900301818787803b15801561075257600080fd5b505af1158015610766573d6000803e3d6000fd5b505050506040513d602081101561077c57600080fd5b50519050806107bc5760405162461bcd60e51b815260040180806020018281038252603a815260200180610ac3603a913960400191505060405180910390fd5b826001600160a01b0316856001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb846040518082815260200191505060405180910390a35050505050565b6001600160a01b0381166000818152600160209081526040808320805490849055815181815291519094927f70e256e9264f1aa014ac7f20b4a16618647d26695e23c7181ee67a22c37e7521928290030190a35050565b600082610874575060006108c1565b8282028284828161088157fe5b04146108be5760405162461bcd60e51b8152600401808060200182810382526021815260200180610aa26021913960400191505060405180910390fd5b90505b92915050565b60006108be83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506109a5565b6000828201838110156108be576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006108be83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a47565b60008183610a315760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109f65781810151838201526020016109de565b50505050905090810190601f168015610a235780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610a3d57fe5b0495945050505050565b60008184841115610a995760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109f65781810151838201526020016109de565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e426173697320506f696e742068617320746f206265206c657373207468616e2031303030302ea265627a7a723158203f48bdc0ad27b6f713aa0fadd002b0556ac9adabee60adf17665b1eb78d5584264736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2B6DF82A GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x2B6DF82A EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0xC4086893 EQ PUSH2 0x18F JUMPI DUP1 PUSH4 0xF33BF9A1 EQ PUSH2 0x1B5 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0xEFE6A8B EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0x129DE5BF EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x11D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1F0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x21B JUMP JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x332 JUMP JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x348 JUMP JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4CB JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1FB DUP4 DUP4 DUP4 PUSH2 0x4DB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x27B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2E8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420616E2061646D696E000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP2 PUSH32 0xDB9D5D31320DAF5BC7181D565B6DA4D12E30F0F4D5AA324A992426C14A1D19CE SWAP2 LOG3 POP JUMP JUMPDEST PUSH2 0x33C DUP2 DUP3 PUSH2 0x6D9 JUMP JUMPDEST PUSH2 0x345 DUP2 PUSH2 0x80E JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x3A8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x496E76616C69642041646472657373 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x463 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320697320616C72656164792061646D696E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD CALLER SWAP2 PUSH32 0xBF3F493C772C8C283FD124432C2D0F539AB343FAA04258FE88E52912D36B102B SWAP2 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x4D7 DUP3 DUP3 PUSH1 0x0 PUSH2 0x4DB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0x51B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAFD PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x589 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x5DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC3 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x603 PUSH2 0x2710 PUSH2 0x5F7 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x865 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x8C7 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x62F SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x909 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x676 SWAP1 DUP3 SWAP1 PUSH2 0x66A SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x909 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x963 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP1 MLOAD DUP8 DUP2 MSTORE SWAP3 DUP4 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 CALLER SWAP3 PUSH32 0xF5681F9D0DB1B911AC18EE83D515A1CF1051853A9EAE418316A2FDF7DEA427C5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6EB JUMPI POP DUP2 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE DUP4 SLOAD DUP3 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE DUP8 DUP8 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP3 MLOAD SWAP2 SWAP6 AND SWAP3 PUSH4 0xA9059CBB SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x752 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x766 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x7BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC3 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xD1C19FBCD4551A5EDFB66D43D2E337C04837AFDA3482B42BDF569A8FCCDAE5FB DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE DUP2 MLOAD DUP2 DUP2 MSTORE SWAP2 MLOAD SWAP1 SWAP5 SWAP3 PUSH32 0x70E256E9264F1AA014AC7F20B4A16618647D26695E23C7181EE67A22C37E7521 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x874 JUMPI POP PUSH1 0x0 PUSH2 0x8C1 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x881 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x8BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAA2 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8BE DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x9A5 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8BE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8BE DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0xA47 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0xA31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9F6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9DE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xA23 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0xA3D JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xA99 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x9F6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9DE JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77546F6B656E20747261 PUSH15 0x7366657220776173206E6F74207375 PUSH4 0x63657373 PUSH7 0x756C2E20436865 PUSH4 0x6B207265 PUSH4 0x65697665 PUSH19 0x20616464726573732E426173697320506F696E PUSH21 0x2068617320746F206265206C657373207468616E20 BALANCE ADDRESS ADDRESS ADDRESS ADDRESS 0x2E LOG2 PUSH6 0x627A7A723158 KECCAK256 EXTCODEHASH 0x48 0xBD 0xC0 0xAD 0x27 0xB6 0xF7 SGT 0xAA 0xF 0xAD 0xD0 MUL 0xB0 SSTORE PUSH11 0xC9ADABEE60ADF17665B1EB PUSH25 0xD5584264736F6C634300051100320000000000000000000000 ",
              "sourceMap": "289:5842:108:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:5842:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;400:17;;;:::i;:::-;;;;-1:-1:-1;;;;;400:17:108;;;;;;;;;;;;;;3164:153;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3164:153:108;;;;;;;;;;;;;:::i;:::-;;6007:122;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6007:122:108;-1:-1:-1;;;;;6007:122:108;;:::i;:::-;;;;;;;;;;;;;;;;2559:214;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2559:214:108;-1:-1:-1;;;;;2559:214:108;;:::i;4682:152::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4682:152:108;-1:-1:-1;;;;;4682:152:108;;:::i;2180:245::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2180:245:108;-1:-1:-1;;;;;2180:245:108;;:::i;5676:116::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5676:116:108;-1:-1:-1;;;;;5676:116:108;;:::i;3621:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3621:116:108;;;;;;;;:::i;400:17::-;;;-1:-1:-1;;;;;400:17:108;;:::o;3164:153::-;3266:47;3275:12;3289:10;3301:11;3266:8;:47::i;:::-;3164:153;;;:::o;6007:122::-;-1:-1:-1;;;;;6102:23:108;6073:16;6102:23;;;:16;:23;;;;;;;6007:122::o;2559:214::-;1617:10;1609:19;;;;:7;:19;;;;;;;;1601:57;;;;;-1:-1:-1;;;1601:57:108;;;;;;;;;;;;-1:-1:-1;;;1601:57:108;;;;;;;;;;;;;;;-1:-1:-1;;;;;2633:23:108;;;;;;:7;:23;;;;;;;;2625:59;;;;;-1:-1:-1;;;2625:59:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2688:23:108;;2714:5;2688:23;;;:7;:23;;;;;;:31;;-1:-1:-1;;2688:31:108;;;2729:40;2742:10;;2729:40;;;2559:214;:::o;4682:152::-;4753:37;4763:12;4777;4753:9;:37::i;:::-;4794:36;4817:12;4794:22;:36::i;:::-;4682:152;:::o;2180:245::-;1617:10;1609:19;;;;:7;:19;;;;;;;;1601:57;;;;;-1:-1:-1;;;1601:57:108;;;;;;;;;;;;-1:-1:-1;;;1601:57:108;;;;;;;;;;;;;;;-1:-1:-1;;;;;2246:23:108;;2238:51;;;;;-1:-1:-1;;;2238:51:108;;;;;;;;;;;;-1:-1:-1;;;2238:51:108;;;;;;;;;;;;;;;-1:-1:-1;;;;;2302:18:108;;;;;;:7;:18;;;;;;;;2301:19;2293:56;;;;;-1:-1:-1;;;2293:56:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2353:18:108;;;;;;:7;:18;;;;;;:25;;-1:-1:-1;;2353:25:108;2374:4;2353:25;;;2388:33;2399:10;;2388:33;;;2180:245;:::o;5676:116::-;-1:-1:-1;;;;;5767:21:108;5738:16;5767:21;;;:14;:21;;;;;;;5676:116::o;3621:::-;3696:37;3705:12;3719:10;3731:1;3696:8;:37::i;:::-;3621:116;;:::o;3740:749::-;3963:5;3949:11;:19;3941:70;;;;-1:-1:-1;;;3941:70:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4015:13;4031:3;;:55;;;-1:-1:-1;;;4031:55:108;;4048:10;4031:55;;;;4068:4;4031:55;;;;;;;;;;;;-1:-1:-1;;;;;4031:3:108;;;;:16;;:55;;;;;;;;;;;;;;;4015:13;4031:3;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;4031:55:108;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4031:55:108;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4031:55:108;;-1:-1:-1;4031:55:108;4090:79;;;;-1:-1:-1;;;4090:79:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4174:19;4196:38;4228:5;4196:27;:10;4211:11;4196:27;:14;:27;:::i;:::-;:31;:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;4272:30:108;;;;;;:16;:30;;;;;;4174:60;;-1:-1:-1;4272:47:108;;4174:60;4272:47;:34;:47;:::i;:::-;-1:-1:-1;;;;;4239:30:108;;;;;;:16;:30;;;;;;;;:80;;;;4354:14;:28;;;;:61;;4403:11;;4354:44;;4387:10;4354:44;:32;:44;:::i;:::-;:48;:61;:48;:61;:::i;:::-;-1:-1:-1;;;;;4323:28:108;;;;;;:14;:28;;;;;;;;;:92;;;;4425:60;;;;;;;;;;;;;4323:28;;4435:10;;4425:60;;;;;;;;;;;3740:749;;;;;:::o;4837:440::-;4930:16;-1:-1:-1;;;;;4954:30:108;;4950:64;;-1:-1:-1;5002:7:108;4950:64;-1:-1:-1;;;;;5035:25:108;;;5018:14;5035:25;;;:16;:25;;;;;;;;;;5064:29;;;;5114:3;;:30;;-1:-1:-1;;;5114:30:108;;;;;;;;;;;;;;;;;5035:25;;5114:3;;:12;;:30;;;;;;;;;;;5018:14;5114:3;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;5114:30:108;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5114:30:108;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5114:30:108;;-1:-1:-1;5114:30:108;5148:79;;;;-1:-1:-1;;;5148:79:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5256:8;-1:-1:-1;;;;;5237:36:108;5247:7;-1:-1:-1;;;;;5237:36:108;;5266:6;5237:36;;;;;;;;;;;;;;;;;;4837:440;;;;;:::o;5280:187::-;-1:-1:-1;;;;;5358:23:108;;5341:14;5358:23;;;:14;:23;;;;;;;;;;5385:27;;;;5422:41;;;;;;;5358:23;;;5422:41;;;;;;;;5280:187;;:::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2393:1;-1:-1:-1;1999:399:145;;;;;:::o;2817:121::-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;1201:125;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;3411:315::-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1614:175::-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1722:29:145;-1:-1:-1;;;1767:5:145;;;1614:175::o"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "addAdmin(address)": "70480275",
              "deposit(address,uint256,uint256)": "0efe6a8b",
              "depositSOV(address,uint256)": "f33bf9a1",
              "getLockedBalance(address)": "c4086893",
              "getUnlockedBalance(address)": "129de5bf",
              "removeAdmin(address)": "1785f53c",
              "withdrawAndStakeTokensFrom(address)": "2b6df82a"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "The function to add a new admin."
              },
              "constructor": "Setup the required parameters.",
              "deposit(address,uint256,uint256)": {
                "notice": "Adds SOV to the user balance (Locked and Unlocked Balance based on `_basisPoint`)."
              },
              "depositSOV(address,uint256)": {
                "notice": "Adds SOV to the locked balance of a user."
              },
              "getLockedBalance(address)": {
                "notice": "The function to get the locked balance of a user."
              },
              "getUnlockedBalance(address)": {
                "notice": "The function to get the unlocked balance of a user."
              },
              "removeAdmin(address)": {
                "notice": "The function to remove an admin."
              },
              "withdrawAndStakeTokensFrom(address)": {
                "notice": "Withdraws unlocked tokens and Stakes Locked tokens for a user who already have a vesting created."
              }
            }
          }
        }
      },
      "contracts/mockup/MockAffiliates.sol": {
        "MockAffiliates": {
          "abi": [
            {
              "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": "referrer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "isHeld",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tradingFeeTokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmountPaid",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFeeToAffiliate",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tradingFeeTokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmountTryingToPaid",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFeeToAffiliateFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "SetAffiliatesReferrer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "alreadySet",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "userNotFirstTrade",
                  "type": "bool"
                }
              ],
              "name": "SetAffiliatesReferrerFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "SetUserNotFirstTradeFlag",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawAffiliatesReferrerTokenFees",
              "type": "event"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getAffiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getAffiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "referrerTokensList",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "referrerTokensBalances",
                  "type": "uint256[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesReferrerTokenBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesReferrerTokensList",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "tokensList",
                  "type": "address[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesTokenRewardsValueInRbtc",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "rbtcTotalAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getMinReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getReferralsList",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "refList",
                  "type": "address[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tradingFeeTokenBaseAmount",
                  "type": "uint256"
                }
              ],
              "name": "payTradingFeeToAffiliatesReferrer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "referrerBonusSovAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "referrerBonusTokenAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "setAffiliatesReferrer",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "setUserNotFirstTradeFlag",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawAffiliatesReferrerTokenFees",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "withdrawAllAffiliatesReferrerTokenFees",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "getAffiliateRewardsHeld(address)": {
                "params": {
                  "referrer": "The address of the referrer."
                },
                "return": "The affiliateRewardsHeld mapping value by referrer key."
              },
              "getAffiliateTradingTokenFeePercent()": {
                "details": "It returns a value defined at protocol storage (State.sol)",
                "return": "The percentage of fee share w/ 18 decimals."
              },
              "getAffiliatesReferrerBalances(address)": {
                "params": {
                  "referrer": "The address of the referrer."
                },
                "return": "referrerTokensList The array of available tokens (keys).referrerTokensBalances The array of token balances (values)."
              },
              "getAffiliatesReferrerTokenBalance(address,address)": {
                "params": {
                  "referrer": "The address of the referrer.",
                  "token": "The address of the token to get balance for."
                },
                "return": "The affiliatesReferrerBalances mapping value by referrer and token keys."
              },
              "getAffiliatesReferrerTokensList(address)": {
                "params": {
                  "referrer": "The address of a given referrer."
                },
                "return": "tokensList The list of available tokens."
              },
              "getAffiliatesTokenRewardsValueInRbtc(address)": {
                "details": "Get all token rewards estimation value in rbtc.",
                "params": {
                  "referrer": "Address of referrer."
                },
                "return": "The value estimation in rbtc."
              },
              "getMinReferralsToPayout()": {
                "details": "It returns a value defined at protocol storage (State.sol)",
                "return": "The minimum number of referrals set by Protocol."
              },
              "getReferralsList(address)": {
                "params": {
                  "referrer": "The address of a given referrer."
                },
                "return": "The referralsList mapping value by referrer."
              },
              "getUserNotFirstTradeFlag(address)": {
                "params": {
                  "user": "The address of a given user."
                },
                "return": "The userNotFirstTradeFlag mapping value by user."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "payTradingFeeToAffiliatesReferrer(address,address,address,uint256)": {
                "details": "Affiliates program has 2 kind of rewards:    1. x% based on the fee of the token that is traded (in form of the token itself).    2. x% based on the fee of the token that is traded (in form of SOV).  Both are paid in this function.Actually they are not paid, but just holded by protocol until user claims them by  actively calling withdrawAffiliatesReferrerTokenFees() function,  and/or when unvesting lockedSOV.To be precise, what this function does is updating the registers of the rewards  for the referrer including the assignment of the SOV tokens as rewards to the  referrer's vesting contract.",
                "params": {
                  "referrer": "The address of the referrer.",
                  "token": "The address of the token in which the trading/borrowing fee was paid.",
                  "trader": "The address of the trader.",
                  "tradingFeeTokenBaseAmount": "Total trading fee amount, the base for calculating referrer's fees."
                },
                "return": "referrerBonusSovAmount The amount of SOV tokens paid to the referrer (through a vesting contract, lockedSOV).referrerBonusTokenAmount The amount of trading tokens paid directly to the referrer."
              },
              "setAffiliatesReferrer(address,address)": {
                "params": {
                  "referrer": "The address of the referrer the user is coming from.",
                  "user": "The address of the user that is trading on loan pools."
                }
              },
              "setUserNotFirstTradeFlag(address)": {
                "params": {
                  "user": "The address of a given user."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "withdrawAffiliatesReferrerTokenFees(address,address,uint256)": {
                "details": "Rewards are held by protocol in different tokens coming from trading fees.  Referrer has to claim them one by one for every token with accumulated balance.",
                "params": {
                  "amount": "The amount of tokens to claim. If greater than balance, just sends balance.",
                  "receiver": "The address of the withdrawal beneficiary.",
                  "token": "The address of the token to withdraw."
                }
              },
              "withdrawAllAffiliatesReferrerTokenFees(address)": {
                "details": "It's done by looping through its available tokens.",
                "params": {
                  "receiver": "The address of the withdrawal beneficiary."
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b612d368061010f6000396000f3fe608060405234801561001057600080fd5b50600436106103fc5760003560e01c806392d894f811610215578063c9ddf44811610125578063edab119f116100b8578063f2fde38b11610087578063f2fde38b14610d44578063f589a3e714610d6a578063f6ddc8b314610d72578063f706b1f214610d7a578063f851a44014610d82576103fc565b8063edab119f14610c4f578063f06a9c6b14610c57578063f0e085f514610c7d578063f19ece6f14610c85576103fc565b8063d473c2da116100f4578063d473c2da14610bf3578063d485045e14610bfb578063d80100ea14610c21578063e8f6276414610c47576103fc565b8063c9ddf44814610b22578063cb6eacd114610b50578063cd5d808d14610bbd578063d288208c14610beb576103fc565b8063b05f6570116101a8578063b9cffa3e11610177578063b9cffa3e14610a3e578063ba4861e914610a46578063bdee453c14610a4e578063c4a9081514610a74578063c4d66de814610afc576103fc565b8063b05f6570146109c4578063b30643d9146109ea578063b41263b614610a10578063b7e1524114610a18576103fc565b8063acc04348116101e4578063acc0434814610986578063adfcbc981461098e578063ae0a8530146109b4578063afe84009146109bc576103fc565b806392d894f8146108f2578063959083d314610918578063a22473a214610920578063ac92fd8e1461094e576103fc565b80634699f84611610310578063742e6798116102a35780638417a2ae116102725780638417a2ae1461088e5780638456cb59146108b45780638da5cb5b146108bc5780638dc48ba5146108c45780638f32d59b146108ea576103fc565b8063742e67981461086e57806378d849ed146108765780637a8faeb81461087e578063824fcdc914610886576103fc565b806362fff3f6116102df57806362fff3f6146107c157806368c4ac261461081a5780636e663730146108405780637420ca3e14610866576103fc565b80634699f8461461076e5780634f28cac214610776578063569fc1fb1461077e578063574442cc146107b9576103fc565b8063249556fb116103935780633432423c116103625780633432423c146106a45780633452d2d4146106d05780633fca506e146106f65780634115a2b61461071c5780634203e39514610748576103fc565b8063249556fb1461063457806324cc57491461065a5780632a324027146106945780632f4707641461069c576103fc565b806317548b79116103cf57806317548b79146105315780631b7bde74146105585780631c9f66c214610598578063218b39c61461060e576103fc565b8063065d810f146104335780630676c1b7146104925780630d4d11fe146104b6578063115cc0ce1461050b575b60405162461bcd60e51b8152600401808060200182810382526021815260200180612c6b6021913960400191505060405180910390fd5b61045f6004803603604081101561044957600080fd5b506001600160a01b038135169060200135610d8a565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61049a610dca565b604080516001600160a01b039092168252519081900360200190f35b6104f2600480360360808110156104cc57600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610dd9565b6040805192835260208301919091528051918290030190f35b61049a6004803603602081101561052157600080fd5b50356001600160a01b0316611266565b61049a6004803603602081101561054757600080fd5b50356001600160e01b031916611284565b6105866004803603604081101561056e57600080fd5b506001600160a01b038135811691602001351661129f565b60408051918252519081900360200190f35b6105be600480360360208110156105ae57600080fd5b50356001600160a01b03166112bc565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105fa5781810151838201526020016105e2565b505050509050019250505060405180910390f35b61049a6004803603602081101561062457600080fd5b50356001600160a01b03166112e6565b6105be6004803603602081101561064a57600080fd5b50356001600160a01b0316611301565b6106806004803603602081101561067057600080fd5b50356001600160a01b0316611325565b604080519115158252519081900360200190f35b61058661133a565b610586611340565b61045f600480360360408110156106ba57600080fd5b506001600160a01b038135169060200135611346565b610586600480360360208110156106e657600080fd5b50356001600160a01b0316611386565b6105866004803603602081101561070c57600080fd5b50356001600160a01b0316611398565b6106806004803603604081101561073257600080fd5b50803590602001356001600160a01b03166113aa565b6105866004803603602081101561075e57600080fd5b50356001600160a01b03166113ca565b6105866113dc565b6105866113e2565b61079b6004803603602081101561079457600080fd5b50356113e8565b60408051938452602084019290925282820152519081900360600190f35b610586611409565b6107ef600480360360408110156107d757600080fd5b506001600160a01b038135811691602001351661140f565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6106806004803603602081101561083057600080fd5b50356001600160a01b0316611449565b61049a6004803603602081101561085657600080fd5b50356001600160a01b031661145e565b61049a611479565b610586611488565b61049a61148e565b61058661149d565b6105866114a3565b610586600480360360208110156108a457600080fd5b50356001600160a01b03166114a9565b6106806114c4565b61049a6114cd565b61049a600480360360208110156108da57600080fd5b50356001600160a01b03166114dc565b6106806114f7565b6105866004803603602081101561090857600080fd5b50356001600160a01b031661151d565b61058661152f565b6105866004803603604081101561093657600080fd5b506001600160a01b0381358116916020013516611535565b6109846004803603606081101561096457600080fd5b506001600160a01b03813581169160208101359091169060400135611560565b005b61058661178a565b610984600480360360208110156109a457600080fd5b50356001600160a01b0316611790565b6105866118d9565b61049a6118df565b610680600480360360208110156109da57600080fd5b50356001600160a01b03166118ee565b61058660048036036020811015610a0057600080fd5b50356001600160a01b031661190c565b61058661191e565b61058660048036036020811015610a2e57600080fd5b50356001600160a01b0316611924565b61049a611936565b61049a611945565b61058660048036036020811015610a6457600080fd5b50356001600160a01b0316611954565b610a9160048036036020811015610a8a57600080fd5b5035611966565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b61098460048036036020811015610b1257600080fd5b50356001600160a01b03166119d8565b61098460048036036040811015610b3857600080fd5b506001600160a01b0381358116916020013516611a34565b610b6d60048036036020811015610b6657600080fd5b5035611c3c565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b61058660048036036040811015610bd357600080fd5b506001600160a01b0381358116916020013516611c8e565b61049a611cab565b610586611cba565b61058660048036036020811015610c1157600080fd5b50356001600160a01b0316611cc0565b61058660048036036020811015610c3757600080fd5b50356001600160a01b0316611cd2565b61049a611ecf565b610586611ede565b61098460048036036020811015610c6d57600080fd5b50356001600160a01b0316611ee4565b610586611ff8565b610cab60048036036020811015610c9b57600080fd5b50356001600160a01b0316611ffe565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610cef578181015183820152602001610cd7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610d2e578181015183820152602001610d16565b5050505090500194505050505060405180910390f35b61098460048036036020811015610d5a57600080fd5b50356001600160a01b0316612088565b6105866120d9565b6105866120df565b61049a6120e5565b61049a6120f4565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b60315460009081906001600160a01b03163314610e3a576040805162461bcd60e51b815260206004820152601a6024820152791059999a5b1a585d195cce881b9bdd08185d5d1a1bdc9a5e995960321b604482015290519081900360640190fd5b603d5460ff1615610e7b576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6000610e8561191e565b6001600160a01b0388166000908152603460205260409020610ea690612103565b10905060016000610eb68661210a565b6001600160a01b038a166000908152603a60205260409020909450610ee1908863ffffffff61213d16565b610f0f576001600160a01b0389166000908152603a60205260409020610f0d908863ffffffff61215b16565b505b6001600160a01b03808a166000908152603b60209081526040808320938b1683529290522054610f45908563ffffffff6121bb16565b6001600160a01b03808b166000908152603b60209081526040808320938c1683529290522055610f75878761221c565b6001600160a01b038a166000908152603660205260409020549095508315610fc557610fa7818763ffffffff6121bb16565b6001600160a01b038b16600090815260366020526040902055611189565b6001600160a01b038a1660009081526036602052604090205415610ffd576001600160a01b038a166000908152603660205260408120555b61100d868263ffffffff6121bb16565b6037546038546040805163095ea7b360e01b81526001600160a01b03928316600482015260248101859052905193955091169163095ea7b3916044808201926020929091908290030181600087803b15801561106857600080fd5b505af115801561107c573d6000803e3d6000fd5b505050506040513d602081101561109257600080fd5b5050603854604080516001600160a01b038d81166024830152604480830187905283518084039091018152606490920183526020820180516001600160e01b031663f33bf9a160e01b17815292518251600095929092169390918291908083835b602083106111125780518252601f1990920191602091820191016110f3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611174576040519150601f19603f3d011682016040523d82523d6000602084013e611179565b606091505b505090508061118757600093505b505b82156111f857604080516001600160a01b038b81168252602082018a90528183018890526060820189905260808201859052915186151592808c1692908e16917f956d8d442c76f1bedc4178cda59c4ad17c135bd6ec5a603a39fbfe5a320dbbc09181900360a00190a4611259565b604080516001600160a01b038b81168252602082018a905281830188905260608201899052608082018590529151828b16928d16917f0909aef8097f3ad1e03459f173d44656bde668485239e8d83d9dcbc8af63d140919081900360a00190a35b5050505094509492505050565b6001600160a01b039081166000908152603360205260409020541690565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6001600160a01b0381166000908152603a602052604090206060906112e090612377565b92915050565b6023602052600090815260409020546001600160a01b031681565b6001600160a01b03811660009081526034602052604090206060906112e090612377565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b60395490565b6001600160a01b031660009081526036602052604090205490565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b031661150e61241d565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b603d5460ff16156115a1576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6001600160a01b0382166115e65760405162461bcd60e51b815260040180806020018281038252602b815260200180612cad602b913960400191505060405180910390fd5b336000818152603b602090815260408083206001600160a01b038816845290915281205490838211611618578161161a565b835b90506000811161165b5760405162461bcd60e51b8152600401808060200182810382526027815260200180612c446027913960400191505060405180910390fd5b61166361191e565b6001600160a01b038416600090815260346020526040902061168490612103565b10156116c15760405162461bcd60e51b8152600401808060200182810382526032815260200180612bec6032913960400191505060405180910390fd5b60006116d3838363ffffffff61242116565b9050806116e9576116e48488612463565b611712565b6001600160a01b038085166000908152603b60209081526040808320938b168352929052208190555b61172c6001600160a01b038816878463ffffffff6124a616565b866001600160a01b0316866001600160a01b0316856001600160a01b03167f7e121a301046a79dbdc6bb475ff36f651f88a7cb91fefd7cb8aa4b9f4a33b20b856040518082815260200191505060405180910390a450505050505050565b602f5481565b603d5460ff16156117d1576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6001600160a01b0381166118165760405162461bcd60e51b815260040180806020018281038252602b815260200180612cad602b913960400191505060405180910390fd5b3361181f61191e565b6001600160a01b038216600090815260346020526040902061184090612103565b101561187d5760405162461bcd60e51b8152600401808060200182810382526032815260200180612bec6032913960400191505060405180910390fd5b60608061188983611ffe565b9150915060005b82518110156118d2576118ca8382815181106118a857fe5b6020026020010151868484815181106118bd57fe5b6020026020010151611560565b600101611890565b5050505050565b60205481565b602d546001600160a01b031681565b6001600160a01b031660009081526032602052604090205460ff1690565b601d6020526000908152604090205481565b60355490565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6119e06114f7565b611a20576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611a316308ae606760e11b826124f8565b50565b336000908152602260205260409020546001600160a01b0316611a9b576040805162461bcd60e51b815260206004820152601a6024820152791059999a5b1a585d195cce881b9bdd08185d5d1a1bdc9a5e995960321b604482015290519081900360640190fd5b603d5460ff1615611adc576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b611ae4612bcb565b611aed836118ee565b151560408083019182526001600160a01b0385811660009081526033602090815292902054161515908301525180611b26575080602001515b80611b425750816001600160a01b0316836001600160a01b0316145b1580825215611bd3576001600160a01b03838116600090815260336020908152604080832080546001600160a01b03191694871694851790559282526034905220611b8d908461215b565b50816001600160a01b0316836001600160a01b03167f01085a2bdafb7e1bf8c2744a99befcb7d35fd44ce0fec8273e65687bf69b40d260405160405180910390a3611c37565b816001600160a01b0316836001600160a01b03167f5fcda235bf45571cdfcce3194fdec51249320ea208d33ddf19457f971fbce052836020015184604001516040518083151515158152602001821515151581526020019250505060405180910390a35b505050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b60006060611cdf836112bc565b6002549091506001600160a01b031660005b8251811015611ec75782516000906060906001600160a01b0385169063d138f9a160e01b90879086908110611d2257fe5b6020026020010151602d60009054906101000a90046001600160a01b0316603b60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008a8981518110611d7357fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205460405160240180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b60208310611e405780518252601f199092019160209182019101611e21565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611ea0576040519150601f19603f3d011682016040523d82523d6000602084013e611ea5565b606091505b50915091506001821415611ebd576020810151860195505b5050600101611cf1565b505050919050565b6014546001600160a01b031681565b601b5481565b336000908152602260205260409020546001600160a01b0316611f4b576040805162461bcd60e51b815260206004820152601a6024820152791059999a5b1a585d195cce881b9bdd08185d5d1a1bdc9a5e995960321b604482015290519081900360640190fd5b603d5460ff1615611f8c576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6001600160a01b03811660009081526032602052604090205460ff16611a31576001600160a01b038116600081815260326020526040808220805460ff19166001179055517fa4c47359ccbdf26dba0d446255196fdc8d493dea957ded328aaa20f86afa694d9190a250565b60285481565b60608061200a836112bc565b91508151604051908082528060200260200182016040528015612037578160200160208202803883390190505b50905060005b8251811015612082576120638484838151811061205657fe5b6020026020010151611535565b82828151811061206f57fe5b602090810291909101015260010161203d565b50915091565b6120906114f7565b6120d0576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611a3181612572565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6001015490565b60006112e068056bc75e2d631000006121316121246114a3565b859063ffffffff61261316565b9063ffffffff61266c16565b6001600160a01b031660009081526020919091526040902054151590565b6000612167838361213d565b6121b35750600182810180548083018083556000928352602080842090920180546001600160a01b0319166001600160a01b0387169081179091558352908590526040909120556112e0565b5060006112e0565b600082820183811015612215576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60025460375460009182916001600160a01b03918216918391606091849163d138f9a160e01b918a911661226b68056bc75e2d6310000061213161225e6126ae565b8d9063ffffffff61261316565b604080516001600160a01b03948516602482015292909316604483015260648083019190915282518083039091018152608490910182526020810180516001600160e01b03166001600160e01b031990941693909317835290518151919290918291908083835b602083106122f15780518252601f1990920191602091820191016122d2565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114612351576040519150601f19603f3d011682016040523d82523d6000602084013e612356565b606091505b5091509150600182141561236c57602081015193505b509195945050505050565b60608082600101805490506040519080825280602002602001820160405280156123ab578160200160208202803883390190505b50905060005b6001840154811015612416578360010181815481106123cc57fe5b9060005260206000200160009054906101000a90046001600160a01b03168282815181106123f657fe5b6001600160a01b03909216602092830291909101909101526001016123b1565b5092915050565b3390565b600061221583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126b4565b6001600160a01b038083166000818152603b602090815260408083209486168352938152838220829055918152603a90915220611c37908263ffffffff61274b16565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611c37908490612856565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b038316908117909155156125535761254d600d6001600160e01b0319841663ffffffff612a1416565b5061256e565b611c37600d6001600160e01b0319841663ffffffff612a5416565b5050565b6001600160a01b0381166125b75760405162461bcd60e51b8152600401808060200182810382526026815260200180612c1e6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600082612622575060006112e0565b8282028284828161262f57fe5b04146122155760405162461bcd60e51b8152600401808060200182810382526021815260200180612c8c6021913960400191505060405180910390fd5b600061221583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b15565b60205490565b600081848411156127435760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127085781810151838201526020016126f0565b50505050905090810190601f1680156127355780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612757838361213d565b156121b3576001600160a01b0382166000908152602084905260409020546001840154600019918201910180821461280257600085600101828154811061279a57fe5b6000918252602090912001546001870180546001600160a01b0390921692508291859081106127c557fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815290869052604090206001830190555b6001600160a01b0384166000908152602086905260408120556001850180548061282857fe5b600082815260209020810160001990810180546001600160a01b031916905501905550600191506112e09050565b612868826001600160a01b0316612b7a565b6128b9576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106128f75780518252601f1990920191602091820191016128d8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612959576040519150601f19603f3d011682016040523d82523d6000602084013e61295e565b606091505b5091509150816129b5576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115612a0e578080602001905160208110156129d157600080fd5b5051612a0e5760405162461bcd60e51b815260040180806020018281038252602a815260200180612cd8602a913960400191505060405180910390fd5b50505050565b6000612a208383612bb6565b6121b357506001808301805480830180835560009283526020808420909201859055848352908590526040909120556112e0565b6000612a608383612bb6565b156121b35760008281526020849052604090205460018401546000199182019101808214612ad8576000856001018281548110612a9957fe5b9060005260206000200154905080866001018481548110612ab657fe5b6000918252602080832090910192909255918252869052604090206001830190555b60008481526020869052604081205560018501805480612af457fe5b600190038181906000526020600020016000905590556001925050506112e0565b60008183612b645760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156127085781810151838201526020016126f0565b506000838581612b7057fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590612bae57508115155b949350505050565b60009081526020919091526040902054151590565b60408051606081018252600080825260208201819052918101919091529056fe596f757220726566657272616c7320686173206e6f74207265616368656420746865206d696e696d756d20726571756573744f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416666696c69617465733a2063616e6e6f74207769746864726177207a65726f20616d6f756e74416666696c6961746573202d2066616c6c6261636b206e6f7420616c6c6f776564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77416666696c69617465733a2063616e6e6f7420776974686472617720746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820ea0c5699423b4c6afed0907431b2885295317dfdbb6ff53ffafe8dbae7a4571764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH2 0xA9 PUSH2 0xFC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x100 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x2D36 DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3FC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92D894F8 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0xC9DDF448 GT PUSH2 0x125 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xD44 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0xD6A JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0xD72 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xD7A JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xD82 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0xC4F JUMPI DUP1 PUSH4 0xF06A9C6B EQ PUSH2 0xC57 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0xC7D JUMPI DUP1 PUSH4 0xF19ECE6F EQ PUSH2 0xC85 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xD473C2DA GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0xBF3 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0xBFB JUMPI DUP1 PUSH4 0xD80100EA EQ PUSH2 0xC21 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0xC47 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xC9DDF448 EQ PUSH2 0xB22 JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0xB50 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0xBBD JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0xBEB JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xB05F6570 GT PUSH2 0x1A8 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x177 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0xA3E JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0xA46 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0xA4E JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0xA74 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xAFC JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xB05F6570 EQ PUSH2 0x9C4 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x9EA JUMPI DUP1 PUSH4 0xB41263B6 EQ PUSH2 0xA10 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0xA18 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xACC04348 GT PUSH2 0x1E4 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x986 JUMPI DUP1 PUSH4 0xADFCBC98 EQ PUSH2 0x98E JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x9B4 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x9BC JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x8F2 JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x918 JUMPI DUP1 PUSH4 0xA22473A2 EQ PUSH2 0x920 JUMPI DUP1 PUSH4 0xAC92FD8E EQ PUSH2 0x94E JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x310 JUMPI DUP1 PUSH4 0x742E6798 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x8417A2AE GT PUSH2 0x272 JUMPI DUP1 PUSH4 0x8417A2AE EQ PUSH2 0x88E JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x8C4 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x8EA JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x742E6798 EQ PUSH2 0x86E JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0x824FCDC9 EQ PUSH2 0x886 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x62FFF3F6 GT PUSH2 0x2DF JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x7C1 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x81A JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x840 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x866 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x76E JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x776 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x77E JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x7B9 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x249556FB GT PUSH2 0x393 JUMPI DUP1 PUSH4 0x3432423C GT PUSH2 0x362 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x6D0 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x6F6 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x71C JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x748 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x249556FB EQ PUSH2 0x634 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x694 JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x69C JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x17548B79 GT PUSH2 0x3CF JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x531 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0x1C9F66C2 EQ PUSH2 0x598 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x60E JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x433 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0xD4D11FE EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0x115CC0CE EQ PUSH2 0x50B JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2C6B PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x45F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD8A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x49A PUSH2 0xDCA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x4F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x4CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xDD9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x49A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1266 JUMP JUMPDEST PUSH2 0x49A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x547 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x1284 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x129F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x5BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5FA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5E2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x49A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x5BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x64A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1301 JUMP JUMPDEST PUSH2 0x680 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1325 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x586 PUSH2 0x133A JUMP JUMPDEST PUSH2 0x586 PUSH2 0x1340 JUMP JUMPDEST PUSH2 0x45F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1346 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1386 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x680 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x732 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13AA JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x75E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13CA JUMP JUMPDEST PUSH2 0x586 PUSH2 0x13DC JUMP JUMPDEST PUSH2 0x586 PUSH2 0x13E2 JUMP JUMPDEST PUSH2 0x79B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x13E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x586 PUSH2 0x1409 JUMP JUMPDEST PUSH2 0x7EF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x140F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x680 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x830 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1449 JUMP JUMPDEST PUSH2 0x49A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x856 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x145E JUMP JUMPDEST PUSH2 0x49A PUSH2 0x1479 JUMP JUMPDEST PUSH2 0x586 PUSH2 0x1488 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x148E JUMP JUMPDEST PUSH2 0x586 PUSH2 0x149D JUMP JUMPDEST PUSH2 0x586 PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14A9 JUMP JUMPDEST PUSH2 0x680 PUSH2 0x14C4 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x14CD JUMP JUMPDEST PUSH2 0x49A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14DC JUMP JUMPDEST PUSH2 0x680 PUSH2 0x14F7 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x908 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x151D JUMP JUMPDEST PUSH2 0x586 PUSH2 0x152F JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1535 JUMP JUMPDEST PUSH2 0x984 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x964 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1560 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x586 PUSH2 0x178A JUMP JUMPDEST PUSH2 0x984 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1790 JUMP JUMPDEST PUSH2 0x586 PUSH2 0x18D9 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x18DF JUMP JUMPDEST PUSH2 0x680 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18EE JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x190C JUMP JUMPDEST PUSH2 0x586 PUSH2 0x191E JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1924 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x1936 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x1945 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1954 JUMP JUMPDEST PUSH2 0xA91 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1966 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x984 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19D8 JUMP JUMPDEST PUSH2 0x984 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1A34 JUMP JUMPDEST PUSH2 0xB6D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C3C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1C8E JUMP JUMPDEST PUSH2 0x49A PUSH2 0x1CAB JUMP JUMPDEST PUSH2 0x586 PUSH2 0x1CBA JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CC0 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CD2 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x1ECF JUMP JUMPDEST PUSH2 0x586 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x984 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EE4 JUMP JUMPDEST PUSH2 0x586 PUSH2 0x1FF8 JUMP JUMPDEST PUSH2 0xCAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1FFE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCEF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCD7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD2E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD16 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x984 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2088 JUMP JUMPDEST PUSH2 0x586 PUSH2 0x20D9 JUMP JUMPDEST PUSH2 0x586 PUSH2 0x20DF JUMP JUMPDEST PUSH2 0x49A PUSH2 0x20E5 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x20F4 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE3A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH26 0x1059999A5B1A585D195CCE881B9BDD08185D5D1A1BDC9A5E9959 PUSH1 0x32 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xE7B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE85 PUSH2 0x191E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xEA6 SWAP1 PUSH2 0x2103 JUMP JUMPDEST LT SWAP1 POP PUSH1 0x1 PUSH1 0x0 PUSH2 0xEB6 DUP7 PUSH2 0x210A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP5 POP PUSH2 0xEE1 SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x213D AND JUMP JUMPDEST PUSH2 0xF0F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xF0D SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x215B AND JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0xF45 SWAP1 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x21BB AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SSTORE PUSH2 0xF75 DUP8 DUP8 PUSH2 0x221C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP6 POP DUP4 ISZERO PUSH2 0xFC5 JUMPI PUSH2 0xFA7 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x21BB AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1189 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0xFFD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMPDEST PUSH2 0x100D DUP7 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21BB AND JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1068 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x107C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1092 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x38 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP8 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xF33BF9A1 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP6 SWAP3 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1112 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x10F3 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1174 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1179 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1187 JUMPI PUSH1 0x0 SWAP4 POP JUMPDEST POP JUMPDEST DUP3 ISZERO PUSH2 0x11F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP11 SWAP1 MSTORE DUP2 DUP4 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP10 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD DUP7 ISZERO ISZERO SWAP3 DUP1 DUP13 AND SWAP3 SWAP1 DUP15 AND SWAP2 PUSH32 0x956D8D442C76F1BEDC4178CDA59C4AD17C135BD6EC5A603A39FBFE5A320DBBC0 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG4 PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP11 SWAP1 MSTORE DUP2 DUP4 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP10 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD DUP3 DUP12 AND SWAP3 DUP14 AND SWAP2 PUSH32 0x909AEF8097F3AD1E03459F173D44656BDE668485239E8D83D9DCBC8AF63D140 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG3 JUMPDEST POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x60 SWAP1 PUSH2 0x12E0 SWAP1 PUSH2 0x2377 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x60 SWAP1 PUSH2 0x12E0 SWAP1 PUSH2 0x2377 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x150E PUSH2 0x241D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x15A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x15E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2CAD PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 DUP4 DUP3 GT PUSH2 0x1618 JUMPI DUP2 PUSH2 0x161A JUMP JUMPDEST DUP4 JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x165B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2C44 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1663 PUSH2 0x191E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1684 SWAP1 PUSH2 0x2103 JUMP JUMPDEST LT ISZERO PUSH2 0x16C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2BEC PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x16D3 DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2421 AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x16E9 JUMPI PUSH2 0x16E4 DUP5 DUP9 PUSH2 0x2463 JUMP JUMPDEST PUSH2 0x1712 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH2 0x172C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP8 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x24A6 AND JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7E121A301046A79DBDC6BB475FF36F651F88A7CB91FEFD7CB8AA4B9F4A33B20B DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x17D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1816 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2CAD PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH2 0x181F PUSH2 0x191E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1840 SWAP1 PUSH2 0x2103 JUMP JUMPDEST LT ISZERO PUSH2 0x187D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2BEC PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x1889 DUP4 PUSH2 0x1FFE JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x18D2 JUMPI PUSH2 0x18CA DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x18A8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x18BD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1560 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1890 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0x19E0 PUSH2 0x14F7 JUMP JUMPDEST PUSH2 0x1A20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1A31 PUSH4 0x8AE6067 PUSH1 0xE1 SHL DUP3 PUSH2 0x24F8 JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A9B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH26 0x1059999A5B1A585D195CCE881B9BDD08185D5D1A1BDC9A5E9959 PUSH1 0x32 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1ADC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1AE4 PUSH2 0x2BCB JUMP JUMPDEST PUSH2 0x1AED DUP4 PUSH2 0x18EE JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 SWAP1 DUP2 MSTORE SWAP3 SWAP1 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 DUP4 ADD MSTORE MLOAD DUP1 PUSH2 0x1B26 JUMPI POP DUP1 PUSH1 0x20 ADD MLOAD JUMPDEST DUP1 PUSH2 0x1B42 JUMPI POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO DUP1 DUP3 MSTORE ISZERO PUSH2 0x1BD3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP5 DUP8 AND SWAP5 DUP6 OR SWAP1 SSTORE SWAP3 DUP3 MSTORE PUSH1 0x34 SWAP1 MSTORE KECCAK256 PUSH2 0x1B8D SWAP1 DUP5 PUSH2 0x215B JUMP JUMPDEST POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1085A2BDAFB7E1BF8C2744A99BEFCB7D35FD44CE0FEC8273E65687BF69B40D2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x1C37 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5FCDA235BF45571CDFCCE3194FDEC51249320EA208D33DDF19457F971FBCE052 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP1 DUP4 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x1CDF DUP4 PUSH2 0x12BC JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1EC7 JUMPI DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP1 DUP8 SWAP1 DUP7 SWAP1 DUP2 LT PUSH2 0x1D22 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2D PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3B PUSH1 0x0 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x1D73 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1E40 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1E21 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1EA0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EA5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x1EBD JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP7 ADD SWAP6 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1CF1 JUMP JUMPDEST POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH26 0x1059999A5B1A585D195CCE881B9BDD08185D5D1A1BDC9A5E9959 PUSH1 0x32 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1F8C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1A31 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0xA4C47359CCBDF26DBA0D446255196FDC8D493DEA957DED328AAA20F86AFA694D SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x200A DUP4 PUSH2 0x12BC JUMP JUMPDEST SWAP2 POP DUP2 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2037 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2082 JUMPI PUSH2 0x2063 DUP5 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2056 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1535 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x206F JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x203D JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x2090 PUSH2 0x14F7 JUMP JUMPDEST PUSH2 0x20D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1A31 DUP2 PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E0 PUSH9 0x56BC75E2D63100000 PUSH2 0x2131 PUSH2 0x2124 PUSH2 0x14A3 JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2613 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x266C AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2167 DUP4 DUP4 PUSH2 0x213D JUMP JUMPDEST PUSH2 0x21B3 JUMPI POP PUSH1 0x1 DUP3 DUP2 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x12E0 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2215 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x37 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 DUP4 SWAP2 PUSH1 0x60 SWAP2 DUP5 SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP11 SWAP2 AND PUSH2 0x226B PUSH9 0x56BC75E2D63100000 PUSH2 0x2131 PUSH2 0x225E PUSH2 0x26AE JUMP JUMPDEST DUP14 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2613 AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR DUP4 MSTORE SWAP1 MLOAD DUP2 MLOAD SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x22F1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x22D2 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2351 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2356 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x236C JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP4 POP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 PUSH1 0x1 ADD DUP1 SLOAD SWAP1 POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x23AB JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD DUP2 LT ISZERO PUSH2 0x2416 JUMPI DUP4 PUSH1 0x1 ADD DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x23CC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x23F6 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x23B1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2215 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP7 AND DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 KECCAK256 DUP3 SWAP1 SSTORE SWAP2 DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP2 MSTORE KECCAK256 PUSH2 0x1C37 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x274B AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1C37 SWAP1 DUP5 SWAP1 PUSH2 0x2856 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x2553 JUMPI PUSH2 0x254D PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x2A14 AND JUMP JUMPDEST POP PUSH2 0x256E JUMP JUMPDEST PUSH2 0x1C37 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x2A54 AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x25B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2C1E PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2622 JUMPI POP PUSH1 0x0 PUSH2 0x12E0 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x262F JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x2215 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2C8C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2215 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2B15 JUMP JUMPDEST PUSH1 0x20 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2743 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2708 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26F0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2735 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2757 DUP4 DUP4 PUSH2 0x213D JUMP JUMPDEST ISZERO PUSH2 0x21B3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x2802 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x279A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x27C5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE SWAP1 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x2828 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP2 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE ADD SWAP1 SSTORE POP PUSH1 0x1 SWAP2 POP PUSH2 0x12E0 SWAP1 POP JUMP JUMPDEST PUSH2 0x2868 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B7A JUMP JUMPDEST PUSH2 0x28B9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x28F7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x28D8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2959 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x295E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x29B5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2A0E JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2A0E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2CD8 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A20 DUP4 DUP4 PUSH2 0x2BB6 JUMP JUMPDEST PUSH2 0x21B3 JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A60 DUP4 DUP4 PUSH2 0x2BB6 JUMP JUMPDEST ISZERO PUSH2 0x21B3 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x2AD8 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2A99 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2AB6 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x2AF4 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2B64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x2708 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26F0 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x2B70 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2BAE JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID MSIZE PUSH16 0x757220726566657272616C7320686173 KECCAK256 PUSH15 0x6F7420726561636865642074686520 PUSH14 0x696E696D756D2072657175657374 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373416666696C69617465733A2063616E6E PUSH16 0x74207769746864726177207A65726F20 PUSH2 0x6D6F PUSH22 0x6E74416666696C6961746573202D2066616C6C626163 PUSH12 0x206E6F7420616C6C6F776564 MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77416666696C69617465 PUSH20 0x3A2063616E6E6F7420776974686472617720746F KECCAK256 PUSH27 0x65726F20616464726573735361666545524332303A204552433230 KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A265627A7A72315820EA0C569942 EXTCODESIZE 0x4C PUSH11 0xFED0907431B2885295317D REVERT 0xBB PUSH16 0xF53FFAFE8DBAE7A4571764736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "62:370:109:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;62:370:109;;780:87:137;853:10;780:87;:::o;62:370:109:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106103fc5760003560e01c806392d894f811610215578063c9ddf44811610125578063edab119f116100b8578063f2fde38b11610087578063f2fde38b14610d44578063f589a3e714610d6a578063f6ddc8b314610d72578063f706b1f214610d7a578063f851a44014610d82576103fc565b8063edab119f14610c4f578063f06a9c6b14610c57578063f0e085f514610c7d578063f19ece6f14610c85576103fc565b8063d473c2da116100f4578063d473c2da14610bf3578063d485045e14610bfb578063d80100ea14610c21578063e8f6276414610c47576103fc565b8063c9ddf44814610b22578063cb6eacd114610b50578063cd5d808d14610bbd578063d288208c14610beb576103fc565b8063b05f6570116101a8578063b9cffa3e11610177578063b9cffa3e14610a3e578063ba4861e914610a46578063bdee453c14610a4e578063c4a9081514610a74578063c4d66de814610afc576103fc565b8063b05f6570146109c4578063b30643d9146109ea578063b41263b614610a10578063b7e1524114610a18576103fc565b8063acc04348116101e4578063acc0434814610986578063adfcbc981461098e578063ae0a8530146109b4578063afe84009146109bc576103fc565b806392d894f8146108f2578063959083d314610918578063a22473a214610920578063ac92fd8e1461094e576103fc565b80634699f84611610310578063742e6798116102a35780638417a2ae116102725780638417a2ae1461088e5780638456cb59146108b45780638da5cb5b146108bc5780638dc48ba5146108c45780638f32d59b146108ea576103fc565b8063742e67981461086e57806378d849ed146108765780637a8faeb81461087e578063824fcdc914610886576103fc565b806362fff3f6116102df57806362fff3f6146107c157806368c4ac261461081a5780636e663730146108405780637420ca3e14610866576103fc565b80634699f8461461076e5780634f28cac214610776578063569fc1fb1461077e578063574442cc146107b9576103fc565b8063249556fb116103935780633432423c116103625780633432423c146106a45780633452d2d4146106d05780633fca506e146106f65780634115a2b61461071c5780634203e39514610748576103fc565b8063249556fb1461063457806324cc57491461065a5780632a324027146106945780632f4707641461069c576103fc565b806317548b79116103cf57806317548b79146105315780631b7bde74146105585780631c9f66c214610598578063218b39c61461060e576103fc565b8063065d810f146104335780630676c1b7146104925780630d4d11fe146104b6578063115cc0ce1461050b575b60405162461bcd60e51b8152600401808060200182810382526021815260200180612c6b6021913960400191505060405180910390fd5b61045f6004803603604081101561044957600080fd5b506001600160a01b038135169060200135610d8a565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61049a610dca565b604080516001600160a01b039092168252519081900360200190f35b6104f2600480360360808110156104cc57600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610dd9565b6040805192835260208301919091528051918290030190f35b61049a6004803603602081101561052157600080fd5b50356001600160a01b0316611266565b61049a6004803603602081101561054757600080fd5b50356001600160e01b031916611284565b6105866004803603604081101561056e57600080fd5b506001600160a01b038135811691602001351661129f565b60408051918252519081900360200190f35b6105be600480360360208110156105ae57600080fd5b50356001600160a01b03166112bc565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105fa5781810151838201526020016105e2565b505050509050019250505060405180910390f35b61049a6004803603602081101561062457600080fd5b50356001600160a01b03166112e6565b6105be6004803603602081101561064a57600080fd5b50356001600160a01b0316611301565b6106806004803603602081101561067057600080fd5b50356001600160a01b0316611325565b604080519115158252519081900360200190f35b61058661133a565b610586611340565b61045f600480360360408110156106ba57600080fd5b506001600160a01b038135169060200135611346565b610586600480360360208110156106e657600080fd5b50356001600160a01b0316611386565b6105866004803603602081101561070c57600080fd5b50356001600160a01b0316611398565b6106806004803603604081101561073257600080fd5b50803590602001356001600160a01b03166113aa565b6105866004803603602081101561075e57600080fd5b50356001600160a01b03166113ca565b6105866113dc565b6105866113e2565b61079b6004803603602081101561079457600080fd5b50356113e8565b60408051938452602084019290925282820152519081900360600190f35b610586611409565b6107ef600480360360408110156107d757600080fd5b506001600160a01b038135811691602001351661140f565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6106806004803603602081101561083057600080fd5b50356001600160a01b0316611449565b61049a6004803603602081101561085657600080fd5b50356001600160a01b031661145e565b61049a611479565b610586611488565b61049a61148e565b61058661149d565b6105866114a3565b610586600480360360208110156108a457600080fd5b50356001600160a01b03166114a9565b6106806114c4565b61049a6114cd565b61049a600480360360208110156108da57600080fd5b50356001600160a01b03166114dc565b6106806114f7565b6105866004803603602081101561090857600080fd5b50356001600160a01b031661151d565b61058661152f565b6105866004803603604081101561093657600080fd5b506001600160a01b0381358116916020013516611535565b6109846004803603606081101561096457600080fd5b506001600160a01b03813581169160208101359091169060400135611560565b005b61058661178a565b610984600480360360208110156109a457600080fd5b50356001600160a01b0316611790565b6105866118d9565b61049a6118df565b610680600480360360208110156109da57600080fd5b50356001600160a01b03166118ee565b61058660048036036020811015610a0057600080fd5b50356001600160a01b031661190c565b61058661191e565b61058660048036036020811015610a2e57600080fd5b50356001600160a01b0316611924565b61049a611936565b61049a611945565b61058660048036036020811015610a6457600080fd5b50356001600160a01b0316611954565b610a9160048036036020811015610a8a57600080fd5b5035611966565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b61098460048036036020811015610b1257600080fd5b50356001600160a01b03166119d8565b61098460048036036040811015610b3857600080fd5b506001600160a01b0381358116916020013516611a34565b610b6d60048036036020811015610b6657600080fd5b5035611c3c565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b61058660048036036040811015610bd357600080fd5b506001600160a01b0381358116916020013516611c8e565b61049a611cab565b610586611cba565b61058660048036036020811015610c1157600080fd5b50356001600160a01b0316611cc0565b61058660048036036020811015610c3757600080fd5b50356001600160a01b0316611cd2565b61049a611ecf565b610586611ede565b61098460048036036020811015610c6d57600080fd5b50356001600160a01b0316611ee4565b610586611ff8565b610cab60048036036020811015610c9b57600080fd5b50356001600160a01b0316611ffe565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610cef578181015183820152602001610cd7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610d2e578181015183820152602001610d16565b5050505090500194505050505060405180910390f35b61098460048036036020811015610d5a57600080fd5b50356001600160a01b0316612088565b6105866120d9565b6105866120df565b61049a6120e5565b61049a6120f4565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b60315460009081906001600160a01b03163314610e3a576040805162461bcd60e51b815260206004820152601a6024820152791059999a5b1a585d195cce881b9bdd08185d5d1a1bdc9a5e995960321b604482015290519081900360640190fd5b603d5460ff1615610e7b576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6000610e8561191e565b6001600160a01b0388166000908152603460205260409020610ea690612103565b10905060016000610eb68661210a565b6001600160a01b038a166000908152603a60205260409020909450610ee1908863ffffffff61213d16565b610f0f576001600160a01b0389166000908152603a60205260409020610f0d908863ffffffff61215b16565b505b6001600160a01b03808a166000908152603b60209081526040808320938b1683529290522054610f45908563ffffffff6121bb16565b6001600160a01b03808b166000908152603b60209081526040808320938c1683529290522055610f75878761221c565b6001600160a01b038a166000908152603660205260409020549095508315610fc557610fa7818763ffffffff6121bb16565b6001600160a01b038b16600090815260366020526040902055611189565b6001600160a01b038a1660009081526036602052604090205415610ffd576001600160a01b038a166000908152603660205260408120555b61100d868263ffffffff6121bb16565b6037546038546040805163095ea7b360e01b81526001600160a01b03928316600482015260248101859052905193955091169163095ea7b3916044808201926020929091908290030181600087803b15801561106857600080fd5b505af115801561107c573d6000803e3d6000fd5b505050506040513d602081101561109257600080fd5b5050603854604080516001600160a01b038d81166024830152604480830187905283518084039091018152606490920183526020820180516001600160e01b031663f33bf9a160e01b17815292518251600095929092169390918291908083835b602083106111125780518252601f1990920191602091820191016110f3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611174576040519150601f19603f3d011682016040523d82523d6000602084013e611179565b606091505b505090508061118757600093505b505b82156111f857604080516001600160a01b038b81168252602082018a90528183018890526060820189905260808201859052915186151592808c1692908e16917f956d8d442c76f1bedc4178cda59c4ad17c135bd6ec5a603a39fbfe5a320dbbc09181900360a00190a4611259565b604080516001600160a01b038b81168252602082018a905281830188905260608201899052608082018590529151828b16928d16917f0909aef8097f3ad1e03459f173d44656bde668485239e8d83d9dcbc8af63d140919081900360a00190a35b5050505094509492505050565b6001600160a01b039081166000908152603360205260409020541690565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6001600160a01b0381166000908152603a602052604090206060906112e090612377565b92915050565b6023602052600090815260409020546001600160a01b031681565b6001600160a01b03811660009081526034602052604090206060906112e090612377565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b60395490565b6001600160a01b031660009081526036602052604090205490565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b031661150e61241d565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b603d5460ff16156115a1576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6001600160a01b0382166115e65760405162461bcd60e51b815260040180806020018281038252602b815260200180612cad602b913960400191505060405180910390fd5b336000818152603b602090815260408083206001600160a01b038816845290915281205490838211611618578161161a565b835b90506000811161165b5760405162461bcd60e51b8152600401808060200182810382526027815260200180612c446027913960400191505060405180910390fd5b61166361191e565b6001600160a01b038416600090815260346020526040902061168490612103565b10156116c15760405162461bcd60e51b8152600401808060200182810382526032815260200180612bec6032913960400191505060405180910390fd5b60006116d3838363ffffffff61242116565b9050806116e9576116e48488612463565b611712565b6001600160a01b038085166000908152603b60209081526040808320938b168352929052208190555b61172c6001600160a01b038816878463ffffffff6124a616565b866001600160a01b0316866001600160a01b0316856001600160a01b03167f7e121a301046a79dbdc6bb475ff36f651f88a7cb91fefd7cb8aa4b9f4a33b20b856040518082815260200191505060405180910390a450505050505050565b602f5481565b603d5460ff16156117d1576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6001600160a01b0381166118165760405162461bcd60e51b815260040180806020018281038252602b815260200180612cad602b913960400191505060405180910390fd5b3361181f61191e565b6001600160a01b038216600090815260346020526040902061184090612103565b101561187d5760405162461bcd60e51b8152600401808060200182810382526032815260200180612bec6032913960400191505060405180910390fd5b60608061188983611ffe565b9150915060005b82518110156118d2576118ca8382815181106118a857fe5b6020026020010151868484815181106118bd57fe5b6020026020010151611560565b600101611890565b5050505050565b60205481565b602d546001600160a01b031681565b6001600160a01b031660009081526032602052604090205460ff1690565b601d6020526000908152604090205481565b60355490565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6119e06114f7565b611a20576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611a316308ae606760e11b826124f8565b50565b336000908152602260205260409020546001600160a01b0316611a9b576040805162461bcd60e51b815260206004820152601a6024820152791059999a5b1a585d195cce881b9bdd08185d5d1a1bdc9a5e995960321b604482015290519081900360640190fd5b603d5460ff1615611adc576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b611ae4612bcb565b611aed836118ee565b151560408083019182526001600160a01b0385811660009081526033602090815292902054161515908301525180611b26575080602001515b80611b425750816001600160a01b0316836001600160a01b0316145b1580825215611bd3576001600160a01b03838116600090815260336020908152604080832080546001600160a01b03191694871694851790559282526034905220611b8d908461215b565b50816001600160a01b0316836001600160a01b03167f01085a2bdafb7e1bf8c2744a99befcb7d35fd44ce0fec8273e65687bf69b40d260405160405180910390a3611c37565b816001600160a01b0316836001600160a01b03167f5fcda235bf45571cdfcce3194fdec51249320ea208d33ddf19457f971fbce052836020015184604001516040518083151515158152602001821515151581526020019250505060405180910390a35b505050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b60006060611cdf836112bc565b6002549091506001600160a01b031660005b8251811015611ec75782516000906060906001600160a01b0385169063d138f9a160e01b90879086908110611d2257fe5b6020026020010151602d60009054906101000a90046001600160a01b0316603b60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008a8981518110611d7357fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205460405160240180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b60208310611e405780518252601f199092019160209182019101611e21565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611ea0576040519150601f19603f3d011682016040523d82523d6000602084013e611ea5565b606091505b50915091506001821415611ebd576020810151860195505b5050600101611cf1565b505050919050565b6014546001600160a01b031681565b601b5481565b336000908152602260205260409020546001600160a01b0316611f4b576040805162461bcd60e51b815260206004820152601a6024820152791059999a5b1a585d195cce881b9bdd08185d5d1a1bdc9a5e995960321b604482015290519081900360640190fd5b603d5460ff1615611f8c576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6001600160a01b03811660009081526032602052604090205460ff16611a31576001600160a01b038116600081815260326020526040808220805460ff19166001179055517fa4c47359ccbdf26dba0d446255196fdc8d493dea957ded328aaa20f86afa694d9190a250565b60285481565b60608061200a836112bc565b91508151604051908082528060200260200182016040528015612037578160200160208202803883390190505b50905060005b8251811015612082576120638484838151811061205657fe5b6020026020010151611535565b82828151811061206f57fe5b602090810291909101015260010161203d565b50915091565b6120906114f7565b6120d0576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611a3181612572565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6001015490565b60006112e068056bc75e2d631000006121316121246114a3565b859063ffffffff61261316565b9063ffffffff61266c16565b6001600160a01b031660009081526020919091526040902054151590565b6000612167838361213d565b6121b35750600182810180548083018083556000928352602080842090920180546001600160a01b0319166001600160a01b0387169081179091558352908590526040909120556112e0565b5060006112e0565b600082820183811015612215576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60025460375460009182916001600160a01b03918216918391606091849163d138f9a160e01b918a911661226b68056bc75e2d6310000061213161225e6126ae565b8d9063ffffffff61261316565b604080516001600160a01b03948516602482015292909316604483015260648083019190915282518083039091018152608490910182526020810180516001600160e01b03166001600160e01b031990941693909317835290518151919290918291908083835b602083106122f15780518252601f1990920191602091820191016122d2565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114612351576040519150601f19603f3d011682016040523d82523d6000602084013e612356565b606091505b5091509150600182141561236c57602081015193505b509195945050505050565b60608082600101805490506040519080825280602002602001820160405280156123ab578160200160208202803883390190505b50905060005b6001840154811015612416578360010181815481106123cc57fe5b9060005260206000200160009054906101000a90046001600160a01b03168282815181106123f657fe5b6001600160a01b03909216602092830291909101909101526001016123b1565b5092915050565b3390565b600061221583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126b4565b6001600160a01b038083166000818152603b602090815260408083209486168352938152838220829055918152603a90915220611c37908263ffffffff61274b16565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611c37908490612856565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b038316908117909155156125535761254d600d6001600160e01b0319841663ffffffff612a1416565b5061256e565b611c37600d6001600160e01b0319841663ffffffff612a5416565b5050565b6001600160a01b0381166125b75760405162461bcd60e51b8152600401808060200182810382526026815260200180612c1e6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600082612622575060006112e0565b8282028284828161262f57fe5b04146122155760405162461bcd60e51b8152600401808060200182810382526021815260200180612c8c6021913960400191505060405180910390fd5b600061221583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b15565b60205490565b600081848411156127435760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127085781810151838201526020016126f0565b50505050905090810190601f1680156127355780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612757838361213d565b156121b3576001600160a01b0382166000908152602084905260409020546001840154600019918201910180821461280257600085600101828154811061279a57fe5b6000918252602090912001546001870180546001600160a01b0390921692508291859081106127c557fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815290869052604090206001830190555b6001600160a01b0384166000908152602086905260408120556001850180548061282857fe5b600082815260209020810160001990810180546001600160a01b031916905501905550600191506112e09050565b612868826001600160a01b0316612b7a565b6128b9576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106128f75780518252601f1990920191602091820191016128d8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612959576040519150601f19603f3d011682016040523d82523d6000602084013e61295e565b606091505b5091509150816129b5576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115612a0e578080602001905160208110156129d157600080fd5b5051612a0e5760405162461bcd60e51b815260040180806020018281038252602a815260200180612cd8602a913960400191505060405180910390fd5b50505050565b6000612a208383612bb6565b6121b357506001808301805480830180835560009283526020808420909201859055848352908590526040909120556112e0565b6000612a608383612bb6565b156121b35760008281526020849052604090205460018401546000199182019101808214612ad8576000856001018281548110612a9957fe5b9060005260206000200154905080866001018481548110612ab657fe5b6000918252602080832090910192909255918252869052604090206001830190555b60008481526020869052604081205560018501805480612af457fe5b600190038181906000526020600020016000905590556001925050506112e0565b60008183612b645760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156127085781810151838201526020016126f0565b506000838581612b7057fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590612bae57508115155b949350505050565b60009081526020919091526040902054151590565b60408051606081018252600080825260208201819052918101919091529056fe596f757220726566657272616c7320686173206e6f74207265616368656420746865206d696e696d756d20726571756573744f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416666696c69617465733a2063616e6e6f74207769746864726177207a65726f20616d6f756e74416666696c6961746573202d2066616c6c6261636b206e6f7420616c6c6f776564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77416666696c69617465733a2063616e6e6f7420776974686472617720746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820ea0c5699423b4c6afed0907431b2885295317dfdbb6ff53ffafe8dbae7a4571764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3FC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92D894F8 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0xC9DDF448 GT PUSH2 0x125 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xD44 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0xD6A JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0xD72 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xD7A JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xD82 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0xC4F JUMPI DUP1 PUSH4 0xF06A9C6B EQ PUSH2 0xC57 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0xC7D JUMPI DUP1 PUSH4 0xF19ECE6F EQ PUSH2 0xC85 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xD473C2DA GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0xBF3 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0xBFB JUMPI DUP1 PUSH4 0xD80100EA EQ PUSH2 0xC21 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0xC47 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xC9DDF448 EQ PUSH2 0xB22 JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0xB50 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0xBBD JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0xBEB JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xB05F6570 GT PUSH2 0x1A8 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x177 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0xA3E JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0xA46 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0xA4E JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0xA74 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xAFC JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xB05F6570 EQ PUSH2 0x9C4 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x9EA JUMPI DUP1 PUSH4 0xB41263B6 EQ PUSH2 0xA10 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0xA18 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xACC04348 GT PUSH2 0x1E4 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x986 JUMPI DUP1 PUSH4 0xADFCBC98 EQ PUSH2 0x98E JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x9B4 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x9BC JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x8F2 JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x918 JUMPI DUP1 PUSH4 0xA22473A2 EQ PUSH2 0x920 JUMPI DUP1 PUSH4 0xAC92FD8E EQ PUSH2 0x94E JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x310 JUMPI DUP1 PUSH4 0x742E6798 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x8417A2AE GT PUSH2 0x272 JUMPI DUP1 PUSH4 0x8417A2AE EQ PUSH2 0x88E JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x8C4 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x8EA JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x742E6798 EQ PUSH2 0x86E JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0x824FCDC9 EQ PUSH2 0x886 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x62FFF3F6 GT PUSH2 0x2DF JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x7C1 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x81A JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x840 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x866 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x76E JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x776 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x77E JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x7B9 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x249556FB GT PUSH2 0x393 JUMPI DUP1 PUSH4 0x3432423C GT PUSH2 0x362 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x6D0 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x6F6 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x71C JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x748 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x249556FB EQ PUSH2 0x634 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x694 JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x69C JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x17548B79 GT PUSH2 0x3CF JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x531 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0x1C9F66C2 EQ PUSH2 0x598 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x60E JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x433 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0xD4D11FE EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0x115CC0CE EQ PUSH2 0x50B JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2C6B PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x45F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD8A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x49A PUSH2 0xDCA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x4F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x4CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xDD9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x49A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1266 JUMP JUMPDEST PUSH2 0x49A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x547 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x1284 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x129F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x5BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5FA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5E2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x49A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x5BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x64A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1301 JUMP JUMPDEST PUSH2 0x680 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1325 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x586 PUSH2 0x133A JUMP JUMPDEST PUSH2 0x586 PUSH2 0x1340 JUMP JUMPDEST PUSH2 0x45F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1346 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1386 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x680 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x732 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13AA JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x75E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13CA JUMP JUMPDEST PUSH2 0x586 PUSH2 0x13DC JUMP JUMPDEST PUSH2 0x586 PUSH2 0x13E2 JUMP JUMPDEST PUSH2 0x79B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x13E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x586 PUSH2 0x1409 JUMP JUMPDEST PUSH2 0x7EF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x140F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x680 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x830 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1449 JUMP JUMPDEST PUSH2 0x49A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x856 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x145E JUMP JUMPDEST PUSH2 0x49A PUSH2 0x1479 JUMP JUMPDEST PUSH2 0x586 PUSH2 0x1488 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x148E JUMP JUMPDEST PUSH2 0x586 PUSH2 0x149D JUMP JUMPDEST PUSH2 0x586 PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14A9 JUMP JUMPDEST PUSH2 0x680 PUSH2 0x14C4 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x14CD JUMP JUMPDEST PUSH2 0x49A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14DC JUMP JUMPDEST PUSH2 0x680 PUSH2 0x14F7 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x908 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x151D JUMP JUMPDEST PUSH2 0x586 PUSH2 0x152F JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1535 JUMP JUMPDEST PUSH2 0x984 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x964 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1560 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x586 PUSH2 0x178A JUMP JUMPDEST PUSH2 0x984 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1790 JUMP JUMPDEST PUSH2 0x586 PUSH2 0x18D9 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x18DF JUMP JUMPDEST PUSH2 0x680 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18EE JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x190C JUMP JUMPDEST PUSH2 0x586 PUSH2 0x191E JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1924 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x1936 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x1945 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1954 JUMP JUMPDEST PUSH2 0xA91 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1966 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x984 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19D8 JUMP JUMPDEST PUSH2 0x984 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1A34 JUMP JUMPDEST PUSH2 0xB6D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C3C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1C8E JUMP JUMPDEST PUSH2 0x49A PUSH2 0x1CAB JUMP JUMPDEST PUSH2 0x586 PUSH2 0x1CBA JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CC0 JUMP JUMPDEST PUSH2 0x586 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CD2 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x1ECF JUMP JUMPDEST PUSH2 0x586 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x984 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EE4 JUMP JUMPDEST PUSH2 0x586 PUSH2 0x1FF8 JUMP JUMPDEST PUSH2 0xCAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1FFE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCEF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCD7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD2E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD16 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x984 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2088 JUMP JUMPDEST PUSH2 0x586 PUSH2 0x20D9 JUMP JUMPDEST PUSH2 0x586 PUSH2 0x20DF JUMP JUMPDEST PUSH2 0x49A PUSH2 0x20E5 JUMP JUMPDEST PUSH2 0x49A PUSH2 0x20F4 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE3A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH26 0x1059999A5B1A585D195CCE881B9BDD08185D5D1A1BDC9A5E9959 PUSH1 0x32 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xE7B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE85 PUSH2 0x191E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xEA6 SWAP1 PUSH2 0x2103 JUMP JUMPDEST LT SWAP1 POP PUSH1 0x1 PUSH1 0x0 PUSH2 0xEB6 DUP7 PUSH2 0x210A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP5 POP PUSH2 0xEE1 SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x213D AND JUMP JUMPDEST PUSH2 0xF0F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xF0D SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x215B AND JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0xF45 SWAP1 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x21BB AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SSTORE PUSH2 0xF75 DUP8 DUP8 PUSH2 0x221C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP6 POP DUP4 ISZERO PUSH2 0xFC5 JUMPI PUSH2 0xFA7 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x21BB AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1189 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0xFFD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMPDEST PUSH2 0x100D DUP7 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21BB AND JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1068 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x107C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1092 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x38 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP8 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xF33BF9A1 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP6 SWAP3 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1112 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x10F3 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1174 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1179 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1187 JUMPI PUSH1 0x0 SWAP4 POP JUMPDEST POP JUMPDEST DUP3 ISZERO PUSH2 0x11F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP11 SWAP1 MSTORE DUP2 DUP4 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP10 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD DUP7 ISZERO ISZERO SWAP3 DUP1 DUP13 AND SWAP3 SWAP1 DUP15 AND SWAP2 PUSH32 0x956D8D442C76F1BEDC4178CDA59C4AD17C135BD6EC5A603A39FBFE5A320DBBC0 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG4 PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP11 SWAP1 MSTORE DUP2 DUP4 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP10 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD DUP3 DUP12 AND SWAP3 DUP14 AND SWAP2 PUSH32 0x909AEF8097F3AD1E03459F173D44656BDE668485239E8D83D9DCBC8AF63D140 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG3 JUMPDEST POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x60 SWAP1 PUSH2 0x12E0 SWAP1 PUSH2 0x2377 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x60 SWAP1 PUSH2 0x12E0 SWAP1 PUSH2 0x2377 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x150E PUSH2 0x241D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x15A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x15E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2CAD PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 DUP4 DUP3 GT PUSH2 0x1618 JUMPI DUP2 PUSH2 0x161A JUMP JUMPDEST DUP4 JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x165B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2C44 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1663 PUSH2 0x191E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1684 SWAP1 PUSH2 0x2103 JUMP JUMPDEST LT ISZERO PUSH2 0x16C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2BEC PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x16D3 DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2421 AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x16E9 JUMPI PUSH2 0x16E4 DUP5 DUP9 PUSH2 0x2463 JUMP JUMPDEST PUSH2 0x1712 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH2 0x172C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP8 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x24A6 AND JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7E121A301046A79DBDC6BB475FF36F651F88A7CB91FEFD7CB8AA4B9F4A33B20B DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x17D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1816 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2CAD PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH2 0x181F PUSH2 0x191E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1840 SWAP1 PUSH2 0x2103 JUMP JUMPDEST LT ISZERO PUSH2 0x187D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2BEC PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x1889 DUP4 PUSH2 0x1FFE JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x18D2 JUMPI PUSH2 0x18CA DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x18A8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x18BD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1560 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1890 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0x19E0 PUSH2 0x14F7 JUMP JUMPDEST PUSH2 0x1A20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1A31 PUSH4 0x8AE6067 PUSH1 0xE1 SHL DUP3 PUSH2 0x24F8 JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A9B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH26 0x1059999A5B1A585D195CCE881B9BDD08185D5D1A1BDC9A5E9959 PUSH1 0x32 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1ADC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1AE4 PUSH2 0x2BCB JUMP JUMPDEST PUSH2 0x1AED DUP4 PUSH2 0x18EE JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 SWAP1 DUP2 MSTORE SWAP3 SWAP1 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 DUP4 ADD MSTORE MLOAD DUP1 PUSH2 0x1B26 JUMPI POP DUP1 PUSH1 0x20 ADD MLOAD JUMPDEST DUP1 PUSH2 0x1B42 JUMPI POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO DUP1 DUP3 MSTORE ISZERO PUSH2 0x1BD3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP5 DUP8 AND SWAP5 DUP6 OR SWAP1 SSTORE SWAP3 DUP3 MSTORE PUSH1 0x34 SWAP1 MSTORE KECCAK256 PUSH2 0x1B8D SWAP1 DUP5 PUSH2 0x215B JUMP JUMPDEST POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1085A2BDAFB7E1BF8C2744A99BEFCB7D35FD44CE0FEC8273E65687BF69B40D2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x1C37 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5FCDA235BF45571CDFCCE3194FDEC51249320EA208D33DDF19457F971FBCE052 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP1 DUP4 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x1CDF DUP4 PUSH2 0x12BC JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1EC7 JUMPI DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP1 DUP8 SWAP1 DUP7 SWAP1 DUP2 LT PUSH2 0x1D22 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2D PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3B PUSH1 0x0 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x1D73 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1E40 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1E21 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1EA0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EA5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x1EBD JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP7 ADD SWAP6 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1CF1 JUMP JUMPDEST POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH26 0x1059999A5B1A585D195CCE881B9BDD08185D5D1A1BDC9A5E9959 PUSH1 0x32 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1F8C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1A31 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0xA4C47359CCBDF26DBA0D446255196FDC8D493DEA957DED328AAA20F86AFA694D SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x200A DUP4 PUSH2 0x12BC JUMP JUMPDEST SWAP2 POP DUP2 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2037 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2082 JUMPI PUSH2 0x2063 DUP5 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2056 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1535 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x206F JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x203D JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x2090 PUSH2 0x14F7 JUMP JUMPDEST PUSH2 0x20D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1A31 DUP2 PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E0 PUSH9 0x56BC75E2D63100000 PUSH2 0x2131 PUSH2 0x2124 PUSH2 0x14A3 JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2613 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x266C AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2167 DUP4 DUP4 PUSH2 0x213D JUMP JUMPDEST PUSH2 0x21B3 JUMPI POP PUSH1 0x1 DUP3 DUP2 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x12E0 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2215 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x37 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 DUP4 SWAP2 PUSH1 0x60 SWAP2 DUP5 SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP11 SWAP2 AND PUSH2 0x226B PUSH9 0x56BC75E2D63100000 PUSH2 0x2131 PUSH2 0x225E PUSH2 0x26AE JUMP JUMPDEST DUP14 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2613 AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR DUP4 MSTORE SWAP1 MLOAD DUP2 MLOAD SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x22F1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x22D2 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2351 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2356 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x236C JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP4 POP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 PUSH1 0x1 ADD DUP1 SLOAD SWAP1 POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x23AB JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD DUP2 LT ISZERO PUSH2 0x2416 JUMPI DUP4 PUSH1 0x1 ADD DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x23CC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x23F6 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x23B1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2215 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP7 AND DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 KECCAK256 DUP3 SWAP1 SSTORE SWAP2 DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP2 MSTORE KECCAK256 PUSH2 0x1C37 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x274B AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1C37 SWAP1 DUP5 SWAP1 PUSH2 0x2856 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x2553 JUMPI PUSH2 0x254D PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x2A14 AND JUMP JUMPDEST POP PUSH2 0x256E JUMP JUMPDEST PUSH2 0x1C37 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x2A54 AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x25B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2C1E PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2622 JUMPI POP PUSH1 0x0 PUSH2 0x12E0 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x262F JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x2215 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2C8C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2215 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2B15 JUMP JUMPDEST PUSH1 0x20 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2743 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2708 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26F0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2735 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2757 DUP4 DUP4 PUSH2 0x213D JUMP JUMPDEST ISZERO PUSH2 0x21B3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x2802 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x279A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x27C5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE SWAP1 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x2828 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP2 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE ADD SWAP1 SSTORE POP PUSH1 0x1 SWAP2 POP PUSH2 0x12E0 SWAP1 POP JUMP JUMPDEST PUSH2 0x2868 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B7A JUMP JUMPDEST PUSH2 0x28B9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x28F7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x28D8 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2959 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x295E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x29B5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2A0E JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2A0E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2CD8 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A20 DUP4 DUP4 PUSH2 0x2BB6 JUMP JUMPDEST PUSH2 0x21B3 JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A60 DUP4 DUP4 PUSH2 0x2BB6 JUMP JUMPDEST ISZERO PUSH2 0x21B3 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x2AD8 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2A99 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2AB6 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x2AF4 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2B64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x2708 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26F0 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x2B70 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2BAE JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID MSIZE PUSH16 0x757220726566657272616C7320686173 KECCAK256 PUSH15 0x6F7420726561636865642074686520 PUSH14 0x696E696D756D2072657175657374 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373416666696C69617465733A2063616E6E PUSH16 0x74207769746864726177207A65726F20 PUSH2 0x6D6F PUSH22 0x6E74416666696C6961746573202D2066616C6C626163 PUSH12 0x206E6F7420616C6C6F776564 MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77416666696C69617465 PUSH20 0x3A2063616E6E6F7420776974686472617720746F KECCAK256 PUSH27 0x65726F20616464726573735361666545524332303A204552433230 KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A265627A7A72315820EA0C569942 EXTCODESIZE 0x4C PUSH11 0xFED0907431B2885295317D REVERT 0xBB PUSH16 0xF53FFAFE8DBAE7A4571764736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "62:370:109:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;62:370:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1098:43:126;;-1:-1:-1;;;1098:43:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:67:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;-1:-1:-1;;;;;5443:30:14;;;;;;;;;;;;;;9501:2325:126;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;9501:2325:126;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;103:202:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;103:202:109;-1:-1:-1;;;;;103:202:109;;:::i;1270:46:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1270:46:14;-1:-1:-1;;;;;;1270:46:14;;:::i;6768:81::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6768:81:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;16535:201:126;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16535:201:126;-1:-1:-1;;;;;16535:201:126;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;16535:201:126;;;;;;;;;;;;;;;;;4372:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4372:55:14;-1:-1:-1;;;;;4372:55:14;;:::i;4730:164:126:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4730:164:126;-1:-1:-1;;;;;4730:164:126;;:::i;5558:53:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5558:53:14;-1:-1:-1;;;;;5558:53:14;;:::i;:::-;;;;;;;;;;;;;;;;;;3097:46;;;:::i;3969:32::-;;;:::i;1527:65::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1527:65:14;;;;;;;;:::i;3376:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3376:55:14;-1:-1:-1;;;;;3376:55:14;;:::i;4925:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4925:48:14;-1:-1:-1;;;;;4925:48:14;;:::i;1744:69::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1744:69:14;;;;;;-1:-1:-1;;;;;1744:69:14;;:::i;2825:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2825:55:14;-1:-1:-1;;;;;2825:55:14;;:::i;2717:41::-;;;:::i;4832:37::-;;;:::i;2013:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2013:52:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:50;;;:::i;1898:76::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1898:76:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4542:47:14;-1:-1:-1;;;;;4542:47:14;;:::i;5650:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5650:57:14;-1:-1:-1;;;;;5650:57:14;;:::i;1087:24::-;;;:::i;6000:39::-;;;:::i;1012:25::-;;;:::i;3887:32::-;;;:::i;6810:122:126:-;;;:::i;17717:126::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17717:126:126;-1:-1:-1;;;;;17717:126:126;;:::i;7007:17:14:-;;;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4285:55:14;-1:-1:-1;;;;;4285:55:14;;:::i;1134:83:142:-;;;:::i;2994:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2994:55:14;-1:-1:-1;;;;;2994:55:14;;:::i;5113:49::-;;;:::i;17027:164:126:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17027:164:126;;;;;;;;;;:::i;12417:1019::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12417:1019:126;;;;;;;;;;;;;;;;;:::i;:::-;;5340:45:14;;;:::i;13638:592:126:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13638:592:126;-1:-1:-1;;;;;13638:592:126;;:::i;4075:47:14:-;;;:::i;5175:29::-;;;:::i;5077:117:126:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5077:117:126;-1:-1:-1;;;;;5077:117:126;;:::i;3781:57:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3781:57:14;-1:-1:-1;;;;;3781:57:14;;:::i;7153:100:126:-;;;:::i;3605:57:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:57:14;-1:-1:-1;;;;;3605:57:14;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:55:14;-1:-1:-1;;;;;6168:55:14;;:::i;1347:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1347:37:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;;;;;;;;;;;;;;;;308:122:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;308:122:109;-1:-1:-1;;;;;308:122:109;;:::i;3889:652:126:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3889:652:126;;;;;;;;;;:::i;1437:48:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:48:14;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6853:69:14;;;;;;;;;;:::i;6305:31::-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:55:14;-1:-1:-1;;;;;3209:55:14;;:::i;15563:768:126:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15563:768:126;-1:-1:-1;;;;;15563:768:126;;:::i;2626:29:14:-;;;:::i;3490:47::-;;;:::i;5320:220:126:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5320:220:126;-1:-1:-1;;;;;5320:220:126;;:::i;4754:35:14:-;;;:::i;14886:516:126:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14886:516:126;-1:-1:-1;;;;;14886:516:126;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14886:516:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14886:516:126;;;;;;;;;;;;;;;;;;;1351:98:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;6447:60:14:-;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;9501:2325:126:-;3183:15;;9692:30;;;;-1:-1:-1;;;;;3183:15:126;3169:10;:29;3161:68;;;;;-1:-1:-1;;;3161:68:126;;;;;;;;;;;;-1:-1:-1;;;3161:68:126;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;9762:11:126;9811:25;:23;:25::i;:::-;-1:-1:-1;;;;;9776:23:126;;;;;;:13;:23;;;;;:32;;:30;:32::i;:::-;:60;;-1:-1:-1;9869:4:126;9840:26;9982:57;10013:25;9982:30;:57::i;:::-;-1:-1:-1;;;;;10048:38:126;;;;;;:28;:38;;;;;9955:84;;-1:-1:-1;10048:54:126;;10096:5;10048:54;:47;:54;:::i;:::-;10043:110;;-1:-1:-1;;;;;10104:38:126;;;;;;:28;:38;;;;;:49;;10147:5;10104:49;:42;:49;:::i;:::-;;10043:110;-1:-1:-1;;;;;10203:36:126;;;;;;;:26;:36;;;;;;;;:43;;;;;;;;;;:73;;10251:24;10203:73;:47;:73;:::i;:::-;-1:-1:-1;;;;;10157:36:126;;;;;;;:26;:36;;;;;;;;:43;;;;;;;;;:119;10338:52;10194:5;10364:25;10338:18;:52::i;:::-;-1:-1:-1;;;;;10426:30:126;;10394:29;10426:30;;;:20;:30;;;;;;10313:77;;-1:-1:-1;10461:823:126;;;;10586:49;:21;10612:22;10586:49;:25;:49;:::i;:::-;-1:-1:-1;;;;;10553:30:126;;;;;;:20;:30;;;;;:82;10461:823;;;-1:-1:-1;;;;;10828:30:126;;10861:1;10828:30;;;:20;:30;;;;;;:34;10824:86;;-1:-1:-1;;;;;10870:30:126;;10903:1;10870:30;;;:20;:30;;;;;:34;10824:86;10944:49;:22;10971:21;10944:49;:26;:49;:::i;:::-;11005:15;;11030:16;;10998:77;;;-1:-1:-1;;;10998:77:126;;-1:-1:-1;;;;;11030:16:126;;;10998:77;;;;;;;;;;;;10915:78;;-1:-1:-1;11005:15:126;;;10998:31;;:77;;;;;;;;;;;;;;;11005:15;;10998:77;;;5:2:-1;;;;30:1;27;20:12;5:2;10998:77:126;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10998:77:126;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;11104:16:126;;11126:92;;;-1:-1:-1;;;;;11126:92:126;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11126:92:126;;;;;;10998:77;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;11104:115:126;;;;11082:12;;11104:16;;;;;:115;;;;25:18:-1;11104:115:126;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;11104:115:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;11081:138:126;;;11230:7;11225:55;;11269:5;11245:29;;11225:55;10461:823;;11292:21;11288:473;;;11325:209;;;-1:-1:-1;;;;;11325:209:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11288:473;;;11555:201;;;-1:-1:-1;;;;;11555:201:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11288:473;-1:-1:-1;;;;9501:2325:126;;;;;;;:::o;103:202:109:-;-1:-1:-1;;;;;193:28:109;;;173:7;193:28;;;:22;:28;;;;;;;;103:202::o;1270:46:14:-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;16535:201:126:-;-1:-1:-1;;;;;16661:38:126;;;;;;:28;:38;;;;;16615:27;;16661:50;;:48;:50::i;:::-;16648:63;16535:201;-1:-1:-1;;16535:201:126:o;4372:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;4730:164:126:-;-1:-1:-1;;;;;4837:23:126;;;;;;:13;:23;;;;;4797:24;;4837:35;;:33;:35::i;5558:53:14:-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;6810:122:126:-;6897:31;;6810:122;:::o;17717:126::-;-1:-1:-1;;;;;17809:30:126;17789:7;17809:30;;;:20;:30;;;;;;;17717:126::o;7007:17:14:-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;17027:164:126:-;-1:-1:-1;;;;;17144:36:126;;;17124:7;17144:36;;;:26;:36;;;;;;;;:43;;;;;;;;;;;;;17027:164::o;12417:1019::-;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;-1:-1:-1;;;;;12553:22:126;;12545:78;;;;-1:-1:-1;;;12545:78:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12646:10;12627:16;12691:36;;;:26;:36;;;;;;;;-1:-1:-1;;;;;12691:43:126;;;;;;;;;;;12763:29;;;:61;;12804:20;12763:61;;;12795:6;12763:61;12738:86;;12854:1;12837:14;:18;12829:70;;;;-1:-1:-1;;;12829:70:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12948:25;:23;:25::i;:::-;-1:-1:-1;;;;;12912:23:126;;;;;;:13;:23;;;;;:32;;:30;:32::i;:::-;:61;;12904:124;;;;-1:-1:-1;;;12904:124:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13033:31;13067:40;:20;13092:14;13067:40;:24;:40;:::i;:::-;13033:74;-1:-1:-1;13116:28:126;13112:176;;13151:47;13182:8;13192:5;13151:30;:47::i;:::-;13112:176;;;-1:-1:-1;;;;;13214:36:126;;;;;;;:26;:36;;;;;;;;:43;;;;;;;;;:69;;;13112:176;13292:52;-1:-1:-1;;;;;13292:26:126;;13319:8;13329:14;13292:52;:26;:52;:::i;:::-;13410:5;-1:-1:-1;;;;;13354:78:126;13400:8;-1:-1:-1;;;;;13354:78:126;13390:8;-1:-1:-1;;;;;13354:78:126;;13417:14;13354:78;;;;;;;;;;;;;;;;;;161:1:99;;;;12417:1019:126;;;:::o;5340:45:14:-;;;;:::o;13638:592:126:-;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;-1:-1:-1;;;;;13739:22:126;;13731:78;;;;-1:-1:-1;;;13731:78:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13832:10;13891:25;:23;:25::i;:::-;-1:-1:-1;;;;;13855:23:126;;;;;;:13;:23;;;;;:32;;:30;:32::i;:::-;:61;;13847:124;;;;-1:-1:-1;;;13847:124:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13977:31;14010:30;14044:39;14074:8;14044:29;:39::i;:::-;13976:107;;;;14092:9;14087:140;14107:14;:21;14103:1;:25;14087:140;;;14140:82;14176:14;14191:1;14176:17;;;;;;;;;;;;;;14195:8;14205:13;14219:1;14205:16;;;;;;;;;;;;;;14140:35;:82::i;:::-;14130:3;;14087:140;;;;161:1:99;;;13638:592:126;:::o;4075:47:14:-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;5077:117:126:-;-1:-1:-1;;;;;5163:27:126;5146:4;5163:27;;;:21;:27;;;;;;;;;5077:117::o;3781:57:14:-;;;;;;;;;;;;;:::o;7153:100:126:-;7229:20;;7153:100;:::o;3605:57:14:-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;308:122:109:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;367:59:109;-1:-1:-1;;;419:6:109;367:10;:59::i;:::-;308:122;:::o;3889:652:126:-;2949:10;2972:1;2928:32;;;:20;:32;;;;;;-1:-1:-1;;;;;2928:32:126;2920:85;;;;;-1:-1:-1;;;2920:85:126;;;;;;;;;;;;-1:-1:-1;;;2920:85:126;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;4003:41:126;;:::i;:::-;4080:30;4105:4;4080:24;:30::i;:::-;4049:61;;:28;;;;:61;;;-1:-1:-1;;;;;4134:28:126;;;4174:1;4134:28;;;:22;:28;;;;;;;;;:42;;4114:17;;;:62;4199:28;;:49;;;4231:6;:17;;;4199:49;:69;;;;4260:8;-1:-1:-1;;;;;4252:16:126;:4;-1:-1:-1;;;;;4252:16:126;;4199:69;4197:72;4180:89;;;;4273:265;;-1:-1:-1;;;;;4298:28:126;;;;;;;:22;:28;;;;;;;;:39;;-1:-1:-1;;;;;;4298:39:126;;;;;;;;;4342:23;;;:13;:23;;;:33;;4298:28;4342:27;:33::i;:::-;;4413:8;-1:-1:-1;;;;;4385:37:126;4407:4;-1:-1:-1;;;;;4385:37:126;;;;;;;;;;;4273:265;;;4475:8;-1:-1:-1;;;;;4443:90:126;4469:4;-1:-1:-1;;;;;4443:90:126;;4485:6;:17;;;4504:6;:28;;;4443:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4273:265;161:1:99;3889:652:126;;:::o;1437:48:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;15563:768:126:-;15650:23;15679:27;15709:41;15741:8;15709:31;:41::i;:::-;15776:10;;15679:71;;-1:-1:-1;;;;;;15776:10:126;15754:19;15791:537;15811:10;:17;15807:1;:21;15791:537;;;16035:13;;15884:12;;15898:17;;-1:-1:-1;;;;;15923:22:126;;;-1:-1:-1;;;15982:45:126;16035:10;;16046:1;;16035:13;;;;;;;;;;;;16080:10;;;;;;;;;-1:-1:-1;;;;;16080:10:126;16119:26;:36;16146:8;-1:-1:-1;;;;;16119:36:126;-1:-1:-1;;;;;16119:36:126;;;;;;;;;;;;:51;16156:10;16167:1;16156:13;;;;;;;;;;;;;;-1:-1:-1;;;;;16119:51:126;-1:-1:-1;;;;;16119:51:126;;;;;;;;;;;;;15952:248;;;;;;-1:-1:-1;;;;;15952:248:126;-1:-1:-1;;;;;15952:248:126;;;;;;-1:-1:-1;;;;;15952:248:126;-1:-1:-1;;;;;15952:248:126;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15952:248:126;;;;-1:-1:-1;;;;;15952:248:126;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;15952:248:126;15923:283;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15923:283:126;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;15883:323:126;;;;16242:1;16233:7;16230:14;16227:2;;;16308;16302:4;16298:13;16292:20;16275:15;16271:42;16252:61;;16227:2;-1:-1:-1;;15830:3:126;;15791:537;;;;15563:768;;;;;:::o;2626:29:14:-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;5320:220:126:-;2949:10;2972:1;2928:32;;;:20;:32;;;;;;-1:-1:-1;;;;;2928:32:126;2920:85;;;;;-1:-1:-1;;;2920:85:126;;;;;;;;;;;;-1:-1:-1;;;2920:85:126;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;-1:-1:-1;;;;;5424:27:126;;;;;;:21;:27;;;;;;;;5419:118;;-1:-1:-1;;;;;5458:27:126;;;;;;:21;:27;;;;;;:34;;-1:-1:-1;;5458:34:126;5488:4;5458:34;;;5502:30;;;5458:27;5502:30;5320:220;:::o;4754:35:14:-;;;;:::o;14886:516:126:-;14970:35;15007:39;15074:41;15106:8;15074:31;:41::i;:::-;15053:62;;15158:18;:25;15144:40;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15144:40:126;;15119:65;;15193:9;15188:156;15208:18;:25;15204:1;:29;15188:156;;;15273:66;15307:8;15317:18;15336:1;15317:21;;;;;;;;;;;;;;15273:33;:66::i;:::-;15245:22;15268:1;15245:25;;;;;;;;;;;;;;;;;:94;15235:3;;15188:156;;;-1:-1:-1;14886:516:126;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;3876:104:94:-;3959:10;;:17;;3876:104::o;6408:179:126:-;6495:7;6515:68;6576:6;6515:56;6534:36;:34;:36::i;:::-;6515:14;;:56;:18;:56;:::i;:::-;:60;:68;:60;:68;:::i;2064:122:94:-;-1:-1:-1;;;;;2161:16:94;2144:4;2161:16;;;;;;;;;;;;:21;;;2064:122::o;855:205::-;925:4;940:20;949:3;954:5;940:8;:20::i;:::-;935:122;;-1:-1:-1;986:10:94;;;;27::-1;;23:18;;;45:23;;;-1:-1;986:22:94;;;;;;;;;;;;-1:-1:-1;;;;;;986:22:94;-1:-1:-1;;;;;986:22:94;;;;;;;;967:16;;;;;;;;;;:41;1013:11;;935:122;-1:-1:-1;1047:5:94;1040:12;;812:155:145;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;7533:672:126:-;7680:10;;7923:15;;7621:7;;;;-1:-1:-1;;;;;7680:10:126;;;;7621:7;;7775:17;;7680:10;;-1:-1:-1;;;7856:45:126;7908:8;;7923:15;7966:64;8025:4;7966:54;7980:39;:37;:39::i;:::-;7966:9;;:54;:13;:54;:::i;:64::-;7827:209;;;-1:-1:-1;;;;;7827:209:126;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7827:209:126;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;7827:209:126;;;179:29:-1;;;;160:49;;7799:242:126;;;;7827:209;;7799:242;;;;25:18:-1;7799:242:126;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7799:242:126;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7760:281:126;;;;8124:1;8115:7;8112:14;8109:2;;;8165;8159:4;8155:13;8149:20;8133:36;;8109:2;-1:-1:-1;8189:12:126;;7533:672;-1:-1:-1;;;;;7533:672:126:o;2533:249:94:-;2599:16;2621:23;2661:3;:10;;:17;;;;2647:32;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;2647:32:94;;2621:58;;2688:9;2683:79;2703:10;;;:17;2699:21;;2683:79;;;2744:3;:10;;2755:1;2744:13;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2744:13:94;2732:6;2739:1;2732:9;;;;;;;;-1:-1:-1;;;;;2732:25:94;;;:9;;;;;;;;;;;:25;2722:3;;2683:79;;;-1:-1:-1;2772:6:94;2533:249;-1:-1:-1;;2533:249:94:o;780:87:137:-;853:10;780:87;:::o;1201:125:145:-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;14436:196:126:-;-1:-1:-1;;;;;14529:36:126;;;;;;;:26;:36;;;;;;;;:43;;;;;;;;;;;14522:50;;;14576:38;;;:28;:38;;;;:52;;14566:5;14576:52;:45;:52;:::i;654:174:144:-;765:58;;;-1:-1:-1;;;;;765:58:144;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;765:58:144;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;739:85:144;;758:5;;739:18;:85::i;7574:230:14:-;-1:-1:-1;;;;;;7635:17:14;;;;;;:12;:17;;;;;:26;;-1:-1:-1;;;;;;7635:26:14;-1:-1:-1;;;;;7635:26:14;;;;;;;;7670:20;7666:135;;7697:40;:15;-1:-1:-1;;;;;;7724:12:14;;7697:40;:26;:40;:::i;:::-;;7666:135;;;7753:43;:15;-1:-1:-1;;;;;;7783:12:14;;7753:43;:29;:43;:::i;7666:135::-;7574:230;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2817:121;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;5751:115:126:-;5843:19;;5751:115;:::o;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;1175:820:94:-;1248:4;1262:20;1271:3;1276:5;1262:8;:20::i;:::-;1258:734;;;-1:-1:-1;;;;;1313:16:94;;1289:21;1313:16;;;;;;;;;;;1332:1;1358:10;;:17;-1:-1:-1;;1313:20:94;;;;1358:21;1485:26;;;1481:313;;1519:17;1539:3;:10;;1550:9;1539:21;;;;;;;;;;;;;;;;;;;1634:10;;:25;;-1:-1:-1;;;;;1539:21:94;;;;-1:-1:-1;1539:21:94;;1645:13;;1634:25;;;;;;;;;;;;;;;;;;:37;;-1:-1:-1;;;;;;1634:37:94;-1:-1:-1;;;;;1634:37:94;;;;;;1721:20;;;;;;;;;;;;;-1:-1:-1;1744:17:94;;1721:40;;1481:313;-1:-1:-1;;;;;1857:16:94;;:9;:16;;;;;;;;;;1850:23;1926:10;;;:16;;;;;;;;;;;;;;;;-1:-1:-1;;1926:16:94;;;;;-1:-1:-1;;;;;;1926:16:94;;;;;;-1:-1:-1;1926:16:94;;-1:-1:-1;1948:11:94;;-1:-1:-1;1948:11:94;2564:999:144;3111:27;3119:5;-1:-1:-1;;;;;3111:25:144;;:27::i;:::-;3103:71;;;;;-1:-1:-1;;;3103:71:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;3233:12;3247:23;3282:5;-1:-1:-1;;;;;3274:19:144;3294:4;3274:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3274:25:144;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3232:67:144;;;;3311:7;3303:52;;;;;-1:-1:-1;;;3303:52:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3364:17;;:21;3360:200;;3489:10;3478:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3478:30:144;3470:85;;;;-1:-1:-1;;;3470:85:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2564:999;;;;:::o;1293:212:95:-;1370:4;1385:20;1394:3;1399:5;1385:8;:20::i;:::-;1380:122;;-1:-1:-1;1431:10:95;;;;27::-1;;23:18;;;45:23;;;-1:-1;1431:22:95;;;;;;;;;;;;;1412:16;;;;;;;;;;;:41;1458:11;;2102:845;2182:4;2196:20;2205:3;2210:5;2196:8;:20::i;:::-;2192:752;;;2223:21;2247:16;;;;;;;;;;;2266:1;2292:10;;:17;-1:-1:-1;;2247:20:95;;;;2292:21;2428:26;;;2424:318;;2462:17;2482:3;:10;;2493:9;2482:21;;;;;;;;;;;;;;;;2462:41;;2607:9;2579:3;:10;;2590:13;2579:25;;;;;;;;;;;;;;;;;;;:37;;;;2669:20;;;;;;;;;2708:1;2692:17;;2669:40;;2424:318;2807:9;:16;;;;;;;;;;2800:23;2878:10;;;:16;;;;;;;;;;;;;;;;;;;;;;;;2907:4;2900:11;;;;;;3411:315:145;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3579:29:145;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;3145:122:95:-;3225:4;3242:16;;;;;;;;;;;;:21;;;3145:122::o;62:370:109:-;;;;;;;;;-1:-1:-1;62:370:109;;;;;;;;;;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "getAffiliateRewardsHeld(address)": "8417a2ae",
              "getAffiliateTradingTokenFeePercent()": "824fcdc9",
              "getAffiliatesReferrerBalances(address)": "f19ece6f",
              "getAffiliatesReferrerTokenBalance(address,address)": "a22473a2",
              "getAffiliatesReferrerTokensList(address)": "1c9f66c2",
              "getAffiliatesTokenRewardsValueInRbtc(address)": "d80100ea",
              "getAffiliatesUserReferrer(address)": "115cc0ce",
              "getMinReferralsToPayout()": "b41263b6",
              "getReferralsList(address)": "249556fb",
              "getUserNotFirstTradeFlag(address)": "b05f6570",
              "initialize(address)": "c4d66de8",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "payTradingFeeToAffiliatesReferrer(address,address,address,uint256)": "0d4d11fe",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "setAffiliatesReferrer(address,address)": "c9ddf448",
              "setUserNotFirstTradeFlag(address)": "f06a9c6b",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "withdrawAffiliatesReferrerTokenFees(address,address,uint256)": "ac92fd8e",
              "withdrawAllAffiliatesReferrerTokenFees(address)": "adfcbc98",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "getAffiliateRewardsHeld(address)": {
                "notice": "Getter to query the reward amount held for a given referrer."
              },
              "getAffiliateTradingTokenFeePercent()": {
                "notice": "Getter to query the fee share of trading token fee for affiliate program."
              },
              "getAffiliatesReferrerBalances(address)": {
                "notice": "Get all token balances of a referrer."
              },
              "getAffiliatesReferrerTokenBalance(address,address)": {
                "notice": "Getter to query the affiliate balance for a given referrer and token."
              },
              "getAffiliatesReferrerTokensList(address)": {
                "notice": "Get all available tokens at the affiliates program for a given referrer."
              },
              "getMinReferralsToPayout()": {
                "notice": "Getter to query referral threshold for paying out to the referrer."
              },
              "getReferralsList(address)": {
                "notice": "Getter to query the referrals coming from a referrer."
              },
              "getUserNotFirstTradeFlag(address)": {
                "notice": "Getter to query the not-first-trade flag of a user."
              },
              "payTradingFeeToAffiliatesReferrer(address,address,address,uint256)": {
                "notice": "Protocol calls this function to pay the affiliates rewards to a user (referrer)."
              },
              "setAffiliatesReferrer(address,address)": {
                "notice": "Loan pool calls this function to tell affiliates  a user coming from a referrer is trading and should be registered if not yet.  Taking into account some user status flags may lead to the user and referrer  become added or not to the affiliates record."
              },
              "setUserNotFirstTradeFlag(address)": {
                "notice": "Setter to toggle on the not-first-trade flag of a user."
              },
              "withdrawAffiliatesReferrerTokenFees(address,address,uint256)": {
                "notice": "Referrer calls this function to receive its reward in a given token.  It will send the other (non-SOV) reward tokens from trading protocol fees,  to the referrer’s wallet."
              },
              "withdrawAllAffiliatesReferrerTokenFees(address)": {
                "notice": "Withdraw to msg.sender all token fees for a referrer."
              }
            }
          }
        }
      },
      "contracts/mockup/MockLoanTokenLogic.sol": {
        "MockLoanTokenLogic": {
          "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": "burner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                }
              ],
              "name": "FlashBorrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "minter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "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": false,
                  "internalType": "address[]",
                  "name": "addresses",
                  "type": "address[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "limits",
                  "type": "uint256[]"
                }
              ],
              "name": "SetTransactionLimits",
              "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"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "VERSION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assetBorrow",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "assetSupply",
                  "type": "uint256"
                }
              ],
              "name": "_supplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "assetBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "avgBorrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "borrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "burnAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "useLM",
                  "type": "bool"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "redeemed",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "burnAmount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "loanAmountPaid",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "funcId",
                  "type": "string"
                }
              ],
              "name": "checkPause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                }
              ],
              "name": "checkPriceDivergence",
              "outputs": [],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "checkpointPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "checkpointSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "collateralTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "bool[]",
                  "name": "isTorqueLoans",
                  "type": "bool[]"
                }
              ],
              "name": "disableLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "earlyAccessToken",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getBorrowAmountForDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getDepositAmountForBorrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getEstimatedMarginDetails",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                }
              ],
              "name": "getMaxEscrowAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxEscrowAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "initialPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kinkLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidityMiningAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "loanParamsIds",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "loanTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilBaseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilRateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "marginTrade",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "affiliateReferrer",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "marginTradeAffiliate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "marketLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxScaleRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "mintAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "useLM",
                  "type": "bool"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "minted",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                }
              ],
              "name": "nextBorrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "supplyAmount",
                  "type": "uint256"
                }
              ],
              "name": "nextSupplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pauser",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "profitOf",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "setAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "setAffiliatesReferrer",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_baseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_rateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilBaseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilRateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_targetLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_kinkLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_maxScaleRate",
                  "type": "uint256"
                }
              ],
              "name": "setDemandCurve",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "LMAddress",
                  "type": "address"
                }
              ],
              "name": "setLiquidityMiningAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_pauser",
                  "type": "address"
                }
              ],
              "name": "setPauser",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "setUserNotFirstTradeFlag",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "id",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bool",
                      "name": "active",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "minInitialMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanParamsStruct.LoanParams[]",
                  "name": "loanParamsList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bool",
                  "name": "areTorqueLoans",
                  "type": "bool"
                }
              ],
              "name": "setupLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynContractAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "supplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "targetLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "target_",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "funcId",
                  "type": "string"
                },
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "name": "toggleFunctionPause",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tokenPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAssetBorrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAssetSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assetSupply",
                  "type": "uint256"
                }
              ],
              "name": "totalSupplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "transactionLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "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"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "_supplyInterestRate(uint256,uint256)": {
                "params": {
                  "assetBorrow": "The amount of loan tokens on debt.",
                  "assetSupply": "The amount of loan tokens supplied."
                },
                "return": "The next supply interest adjustment."
              },
              "allowance(address,address)": {
                "params": {
                  "_owner": "The account owner of the iTokens.",
                  "_spender": "The account allowed to send the iTokens."
                },
                "return": "The number of iTokens an account is allowing the spender  to send on its behalf."
              },
              "approve(address,uint256)": {
                "params": {
                  "_spender": "The account address that will be able to spend the tokens.",
                  "_value": "The amount of tokens allowed to spend."
                }
              },
              "assetBalanceOf(address)": {
                "return": "The user's balance of underlying token."
              },
              "avgBorrowInterestRate()": {
                "return": "The average borrow interest."
              },
              "balanceOf(address)": {
                "params": {
                  "_owner": "The account owner of the iTokens."
                },
                "return": "The number of iTokens an account owns."
              },
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": {
                "params": {
                  "borrower": "The one paying for the collateral.",
                  "collateralTokenAddress": "The address of the token to be used as  collateral. Cannot be the loan token address.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.  (150% of the withdrawn amount worth in collateral tokens).",
                  "initialLoanDuration": "The duration of the loan in seconds.  If the loan is not paid back until then, it'll need to be rolled over.",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "receiver": "The one receiving the withdrawn amount.",
                  "withdrawAmount": "The amount to be withdrawn (actually borrowed)."
                },
                "return": "New principal and new collateral added to loan."
              },
              "borrowInterestRate()": {
                "return": "The borrow interest rate."
              },
              "burn(address,uint256)": {
                "params": {
                  "burnAmount": "The amount of loan tokens to redeem.",
                  "receiver": "The account getting the minted tokens."
                },
                "return": "The amount of underlying tokens payed to lender."
              },
              "burn(address,uint256,bool)": {
                "params": {
                  "burnAmount": "The amount of pool tokens to redeem.",
                  "receiver": "the receiver of the underlying tokens. note: potetial LM rewards are always sent to the msg.sender",
                  "useLM": "if true -> deposit the pool tokens into the Liquidity Mining contract"
                }
              },
              "checkPause(string)": {
                "details": "Used to read externally from the smart contract to see if a  function is paused.",
                "params": {
                  "funcId": "The function ID, the selector."
                },
                "return": "isPaused Whether the function is paused: true or false."
              },
              "checkpointPrice(address)": {
                "params": {
                  "_user": "The user account as the mapping index."
                },
                "return": "The price on the checkpoint for this user."
              },
              "disableLoanParams(address[],bool[])": {
                "params": {
                  "collateralTokens": "The array of collateral tokens.",
                  "isTorqueLoans": "Whether the loan is a torque loan."
                }
              },
              "getBorrowAmountForDeposit(uint256,uint256,address)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "depositAmount": "The amount of deposit.",
                  "initialLoanDuration": "The duration of the loan."
                },
                "return": "The amount of borrow allowed."
              },
              "getDepositAmountForBorrow(uint256,uint256,address)": {
                "params": {
                  "borrowAmount": "The amount of borrow.",
                  "collateralTokenAddress": "The token address of collateral.",
                  "initialLoanDuration": "The duration of the loan."
                },
                "return": "The amount of deposit required."
              },
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanTokenSent": "The number of loan tokens provided by the user."
                },
                "return": "The principal, the collateral and the interestRate."
              },
              "getMaxEscrowAmount(uint256)": {
                "details": "maxEscrowAmount = liquidity * (100 - interestForDuration) / 100",
                "params": {
                  "leverageAmount": "The chosen multiplier with 18 decimals."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanDataBytes": "Additional loan data (not in use for token swaps).",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "loanTokenSent": "The number of loan tokens provided by the user.",
                  "trader": "The account that performs this trade."
                },
                "return": "New principal and new collateral added to trade."
              },
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": {
                "params": {
                  "affiliateReferrer": "The address of the referrer from affiliates program.",
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanDataBytes": "Additional loan data (not in use for token swaps).",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "loanTokenSent": "The number of loan tokens provided by the user.",
                  "minReturn": "Minimum position size in the collateral tokens",
                  "trader": "The account that performs this trade."
                },
                "return": "New principal and new collateral added to trade."
              },
              "marketLiquidity()": {
                "return": "The market liquidity."
              },
              "mint(address,uint256)": {
                "params": {
                  "depositAmount": "The amount of underlying tokens provided on the  loan. (Not the number of loan tokens to mint).",
                  "receiver": "The account getting the minted tokens."
                },
                "return": "The amount of loan tokens minted."
              },
              "mint(address,uint256,bool)": {
                "params": {
                  "depositAmount": "The amount of underlying tokens provided on the loan.\t\t\t\t\t(Not the number of loan tokens to mint).",
                  "receiver": "the receiver of the tokens",
                  "useLM": "if true -> deposit the pool tokens into the Liquidity Mining contract"
                }
              },
              "nextBorrowInterestRate(uint256)": {
                "params": {
                  "borrowAmount": "The amount of tokens to borrow."
                },
                "return": "The next borrow interest rate."
              },
              "nextSupplyInterestRate(uint256)": {
                "params": {
                  "supplyAmount": "The amount of tokens supplied."
                },
                "return": "Interest that lenders are currently receiving when supplying a given amount of tokens to the pool."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "profitOf(address)": {
                "params": {
                  "user": "The user address."
                },
                "return": "The profit of a user."
              },
              "setAdmin(address)": {
                "params": {
                  "_admin": "The address of the account to grant admin permissions."
                }
              },
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": {
                "details": "These params should be percentages represented  like so: 5% = 5000000000000000000 /// 18 digits precision. rateMultiplier + baseRate can't exceed 100%\t * To maintain a healthy credit score, it's important to keep your credit utilization rate (CUR) low (_lowUtilBaseRate). In general you don't want your CUR to exceed 30%, but increasingly financial experts are recommending that you don't want to go above 10% if you really want an excellent credit score.\t * Interest rates tend to cluster around the kink level of a kinked interest rate model. More info at https://arxiv.org/pdf/2006.13922.pdf and https://compound.finance/governance/proposals/12",
                "params": {
                  "_baseRate": "The interest rate.",
                  "_kinkLevel": "The level that interest rates cluster on kinked model.",
                  "_lowUtilBaseRate": "The credit utilization rate (CUR) low value.",
                  "_lowUtilRateMultiplier": "The precision multiplier for low util base rate.",
                  "_maxScaleRate": "The maximum rate of the scale.",
                  "_rateMultiplier": "The precision multiplier for base rate.",
                  "_targetLevel": "The target level."
                }
              },
              "setLiquidityMiningAddress(address)": {
                "params": {
                  "LMAddress": "the address of the liquidity mining contract"
                }
              },
              "setPauser(address)": {
                "params": {
                  "_pauser": "The address of the account to grant pause permissions."
                }
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": {
                "params": {
                  "areTorqueLoans": "Whether the loan is a torque loan.",
                  "loanParamsList": "The array of loan parameters."
                }
              },
              "supplyInterestRate()": {
                "return": "Interest that lenders are currently receiving when supplying to the pool."
              },
              "toggleFunctionPause(string,bool)": {
                "details": "Combining the hash of \"iToken_FunctionPause\" string and a function  selector gets a slot to write a flag for pause state.",
                "params": {
                  "funcId": "The ID of a function, the selector.",
                  "isPaused": "true/false value of the flag."
                }
              },
              "tokenPrice()": {
                "return": "The loan token price."
              },
              "totalAssetBorrow()": {
                "return": "The total amount of loan tokens on debt."
              },
              "totalAssetSupply()": {
                "details": "Wrapper for internal _totalAssetSupply function.",
                "return": "The total amount of loan tokens on supply."
              },
              "totalSupply()": {
                "return": "The total number of iTokens in existence as of now."
              },
              "totalSupplyInterestRate(uint256)": {
                "params": {
                  "assetSupply": "The amount of loan tokens supplied."
                },
                "return": "Interest that lenders are currently receiving when supplying a given amount of loan tokens to the pool."
              },
              "transfer(address,uint256)": {
                "params": {
                  "_to": "The recipient of the tokens.",
                  "_value": "The amount of tokens sent."
                },
                "return": "Success true/false."
              },
              "transferFrom(address,address,uint256)": {
                "return": "A boolean value indicating whether the operation succeeded."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052600160009081556200001e6001600160e01b036200007216565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000076565b3390565b615c7a80620000866000396000f3fe6080604052600436106103ef5760003560e01c80637ff9b59611610208578063cb926cb311610118578063e41b07e3116100ab578063f06a9c6b1161007a578063f06a9c6b14610aee578063f2fde38b14610b0e578063f6b69f9914610b2e578063f851a44014610b41578063ffa1ad7414610b56576103ef565b8063e41b07e314610a79578063e697d2ee14610a99578063eebc508114610ab9578063ef2b0b3914610ad9576103ef565b8063d8f06c83116100e7578063d8f06c83146109f9578063d97206a414610a19578063dd62ed3e14610a39578063e3cded6114610a59576103ef565b8063cb926cb314610984578063d1a1beb4146109a4578063d65a5021146109c4578063d759dbeb146109e4576103ef565b80639bda3a981161019b578063b9fe1a8f1161016a578063b9fe1a8f146108fa578063ba0e43bf1461091a578063be1942171461092f578063c9ddf4481461094f578063ca37e6661461096f576103ef565b80639bda3a98146108905780639dc29fac146108a55780639fd0506d146108c5578063a9059cbb146108da576103ef565b80638ee6c4e6116101d75780638ee6c4e61461083c5780638f32d59b146108515780638fb807c51461086657806395d89b411461087b576103ef565b80637ff9b596146107dd578063829b38f4146107f25780638325a1c0146108125780638da5cb5b14610827576103ef565b8063313ce56711610303578063631a3ef8116102965780637288b344116102655780637288b3441461075e57806376fd4fdf1461077e578063797bf3851461079e5780637b7933b4146107b35780637e37c08c146107c8576103ef565b8063631a3ef8146106cf5780636b40cd40146106ef578063704b6c021461071e57806370a082311461073e576103ef565b806344a4a003116102d257806344a4a0031461067057806354198ce91461068557806356e07d70146106a5578063612ef80b146106ba576103ef565b8063313ce567146105f95780633291c11a1461061b578063330691ac1461063b57806340c10f1914610650576103ef565b806318498b1d1161038657806323b872dd1161035557806323b872dd1461057057806328a02f19146105905780632d88af4a146105b15780632ea295fa146105d15780632f6b600d146105e4576103ef565b806318498b1d1461050f5780631d0806ae146105315780631f68f20a1461054657806320f6d07c1461055b576103ef565b8063095ea7b3116103c2578063095ea7b31461049857806309ec6b6b146104c557806312416898146104da57806318160ddd146104fa576103ef565b806304797930146103fe57806306947a3a1461043457806306b3efd61461045657806306fdde0314610476575b3480156103fb57600080fd5b50005b34801561040a57600080fd5b5061041e610419366004614b9d565b610b6b565b60405161042b9190615814565b60405180910390f35b34801561044057600080fd5b50610449610d14565b60405161042b919061568b565b34801561046257600080fd5b5061041e610471366004614619565b610d23565b34801561048257600080fd5b5061048b610e0f565b60405161042b9190615893565b3480156104a457600080fd5b506104b86104b33660046146dc565b610e9a565b60405161042b9190615806565b3480156104d157600080fd5b5061041e610f05565b3480156104e657600080fd5b5061041e6104f5366004614b12565b610f1a565b34801561050657600080fd5b5061041e610f45565b34801561051b57600080fd5b5061052f61052a366004614c41565b610f4b565b005b34801561053d57600080fd5b5061041e610f8e565b34801561055257600080fd5b5061041e610f94565b34801561056757600080fd5b5061041e610f9a565b34801561057c57600080fd5b506104b861058b36600461468f565b611029565b6105a361059e366004614a1a565b6110f2565b60405161042b929190615a94565b3480156105bd57600080fd5b5061052f6105cc366004614619565b611317565b6105a36105df366004614873565b61135d565b3480156105f057600080fd5b5061044961163d565b34801561060557600080fd5b5061060e61164c565b60405161042b9190615abd565b34801561062757600080fd5b5061041e610636366004614b12565b611655565b34801561064757600080fd5b5061041e611667565b34801561065c57600080fd5b5061041e61066b3660046146dc565b61166d565b34801561067c57600080fd5b5061041e6116ae565b34801561069157600080fd5b5061041e6106a0366004614619565b6116c0565b3480156106b157600080fd5b5061041e611761565b3480156106c657600080fd5b5061041e611767565b3480156106db57600080fd5b5061041e6106ea366004614b9d565b611798565b3480156106fb57600080fd5b5061070f61070a366004614be0565b611938565b60405161042b93929190615aa2565b34801561072a57600080fd5b5061052f610739366004614619565b611a49565b34801561074a57600080fd5b5061041e610759366004614619565b611a8f565b34801561076a57600080fd5b5061041e610779366004614b4e565b611aaa565b34801561078a57600080fd5b5061041e61079936600461470c565b611b8d565b3480156107aa57600080fd5b50610449611c38565b3480156107bf57600080fd5b5061041e611c4c565b3480156107d457600080fd5b5061041e611c52565b3480156107e957600080fd5b5061041e611c58565b3480156107fe57600080fd5b5061041e61080d366004614b12565b611c96565b34801561081e57600080fd5b5061041e611d16565b34801561083357600080fd5b50610449611d22565b34801561084857600080fd5b50610449611d31565b34801561085d57600080fd5b506104b8611d40565b34801561087257600080fd5b5061041e611d66565b34801561088757600080fd5b5061048b611d96565b34801561089c57600080fd5b50610449611df1565b3480156108b157600080fd5b5061041e6108c03660046146dc565b611e00565b3480156108d157600080fd5b50610449611e74565b3480156108e657600080fd5b506104b86108f53660046146dc565b611e83565b34801561090657600080fd5b5061041e610915366004614b12565b611e93565b34801561092657600080fd5b5061041e611e9e565b34801561093b57600080fd5b506104b861094a366004614aa9565b611ea4565b34801561095b57600080fd5b5061052f61096a366004614655565b611f26565b34801561097b57600080fd5b50610449611f86565b34801561099057600080fd5b5061052f61099f366004614619565b611f95565b3480156109b057600080fd5b5061041e6109bf36600461470c565b611fdb565b3480156109d057600080fd5b5061041e6109df366004614b12565b612025565b3480156109f057600080fd5b5061041e612038565b348015610a0557600080fd5b5061052f610a143660046147f1565b61203e565b348015610a2557600080fd5b5061052f610a34366004614d3d565b61220d565b348015610a4557600080fd5b5061041e610a54366004614655565b612314565b348015610a6557600080fd5b5061052f610a74366004614add565b61233f565b348015610a8557600080fd5b5061041e610a94366004614619565b6123e4565b348015610aa557600080fd5b5061052f610ab436600461474f565b6123f6565b348015610ac557600080fd5b5061041e610ad4366004614619565b6125a7565b348015610ae557600080fd5b5061041e6125c2565b348015610afa57600080fd5b5061052f610b09366004614619565b6125c8565b348015610b1a57600080fd5b5061052f610b29366004614619565b612626565b6105a3610b3c36600461493a565b612656565b348015610b4d57600080fd5b50610449612726565b348015610b6257600080fd5b5061041e612735565b60008315610d0d576001600160a01b038216610b90576017546001600160a01b031691505b600060106000846001604051602001610baa929190615617565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506001600160a01b039182169363e762319f936101009091049092169187918a91869163ca74a5d991610c1b918a9101615814565b60206040518083038186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c6b9190810190614b30565b60016040518663ffffffff1660e01b8152600401610c8d959493929190615705565b60206040518083038186803b158015610ca557600080fd5b505afa158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cdd9190810190614b30565b9150610cf182610ceb611d66565b8661273a565b9350610cff91506127b39050565b821115610d0b57600091505b505b9392505050565b6016546001600160a01b031681565b601c5460009081906001600160a01b031615610dbe57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690610d6b90309087906004016156a7565b60206040518083038186803b158015610d8357600080fd5b505afa158015610d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dbb9190810190614b30565b90505b610e06670de0b6b3a7640000610dfa610dd5611c58565b610dee85610de289611a8f565b9063ffffffff6127e916565b9063ffffffff61280e16565b9063ffffffff61284816565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610e925780601f10610e6757610100808354040283529160200191610e92565b820191906000526020600020905b815481529060010190602001808311610e7557829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ef3908690615814565b60405180910390a35060015b92915050565b6000610f146104f5600061288a565b90505b90565b600080610f25610f9a565b90508015610f3f57610f378184611aaa565b915050610e0a565b50919050565b60155490565b6000610f5986868686611938565b5091505081811015610f865760405162461bcd60e51b8152600401610f7d906158a4565b60405180910390fd5b505050505050565b600e5481565b60055481565b6016546004805460405163250f447f60e11b81526000936001600160a01b0390811693634a1e88fe93610fd993309361010090920490911691016156a7565b60206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f149190810190614b30565b60165460405163115dd4b160e01b81526000916110ea918691869186916001600160a01b03169063115dd4b190611064903390600401615699565b60206040518083038186803b15801561107c57600080fd5b505afa158015611090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110b49190810190614855565b6110e1576001600160a01b03881660009081526014602090815260408083203384529091529020546110e5565b6000195b6128c4565b949350505050565b6000806001600054146111175760405162461bcd60e51b8152600401610f7d90615a44565b6002600055611124612a97565b6111318989898988610f4b565b6001600160a01b03861661114e576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156111815760405162461bcd60e51b8152600401610f7d90615954565b8915806111965750336001600160a01b038616145b6111b25760405162461bcd60e51b8152600401610f7d90615a64565b6001600160a01b038616600090815260126020526040902054156111f5576001600160a01b0386166000908152601260205260409020548711156111f557600080fd5b60045461010090046001600160a01b0316600090815260126020526040902054156112465760045461010090046001600160a01b031660009081526012602052604090205488111561124657600080fd5b600061125387898b612b17565b9050806112725760405162461bcd60e51b8152600401610f7d90615984565b61127a614319565b611282614337565b3082526001600160a01b038816602080840182905260408401919091528101839052606081018b9052608081018a90526112ba612d44565b6112cb8c8260016020020151612dea565b825260208201526112ec6f4b3b4ca85a86c47a098a2240000000008d612848565b9b506112fe8d60008e8c86868c612e39565b6001600055909e909d509b505050505050505050505050565b61131f611d40565b61133b5760405162461bcd60e51b8152600401610f7d906159e4565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806001600054146113825760405162461bcd60e51b8152600401610f7d90615a44565b6002600055886113a45760405162461bcd60e51b8152600401610f7d90615a74565b6113ac612a97565b6001600160a01b038616600090815260126020526040902054156113ef576001600160a01b0386166000908152601260205260409020548711156113ef57600080fd5b3415806113fb57508634145b801561140f57508615158061140f57508915155b801561143657506001600160a01b03861615158061142c57503415155b8061143657508915155b801561145257508915806114525750336001600160a01b038616145b61146e5760405162461bcd60e51b8152600401610f7d90615914565b6001600160a01b03861661148b576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156114be5760405162461bcd60e51b8152600401610f7d906158b4565b6114c6612d44565b6114ce614319565b6114d6614337565b3082526001600160a01b03878116602080850191909152908716604084015281018b905261150e8b611508600061288a565b8c61273a565b8360006020020184600260200201856001602002019290925291905252888160046020020181815250506116258c8c601660009054906101000a90046001600160a01b03166001600160a01b031663ca74a5d9601060008e6001604051602001611579929190615617565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020546040518263ffffffff1660e01b81526004016115bd9190615814565b60206040518083038186803b1580156115d557600080fd5b505afa1580156115e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061160d9190810190614b30565b8b868660405180602001604052806000815250612e39565b6001600055909d909c509a5050505050505050505050565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b60006001600054146116915760405162461bcd60e51b8152600401610f7d90615a44565b60026000556116a08383613098565b90505b600160005592915050565b6000610f146116bb610f9a565b6131a4565b600080827f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb660001b6040516020016116f992919061563d565b604051602081830303815290604052805190602001209050610e068160136000866001600160a01b03166001600160a01b0316815260200190815260200160002054611743611c58565b6001600160a01b0387166000908152601160205260409020546131dc565b600a5481565b600080611774600061288a565b90506000611780610f9a565b9050808211156117935790039050610f17565b505090565b60008315610d0d5760006117ae85610ceb611d66565b925050506117ba6127b3565b8111610d0b576001600160a01b0383166117dd576017546001600160a01b031692505b6000601060008560016040516020016117f7929190615617565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b815292945061192f93600a936001600160a01b03938416936325decac09361010090930416918a918991869163ca74a5d99161186d918c9101615814565b60206040518083038186803b15801561188557600080fd5b505afa158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118bd9190810190614b30565b60016040518663ffffffff1660e01b81526004016118df959493929190615705565b60206040518083038186803b1580156118f757600080fd5b505afa15801561190b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610de29190810190614b30565b92505050610d0d565b600080806001600160a01b038416611959576017546001600160a01b031693505b6000611966858789612b17565b90506119728882612dea565b909450915061197f6127b3565b841115611996575060009250829150819050611a3f565b6119a6878563ffffffff6127e916565b6016546004805460405163d67f707760e01b8152939a506001600160a01b039283169363d67f7077936119eb9361010090930416918a918d918d918a918d9101615747565b60206040518083038186803b158015611a0357600080fd5b505afa158015611a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a3b9190810190614b30565b9250505b9450945094915050565b611a51611d40565b611a6d5760405162461bcd60e51b8152600401610f7d906159e4565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60008215801590611abb5750828210155b15610eff57611b86701d6329f1c35ca4bfabb9f5610000000000610dfa611b7068056bc75e2d63100000601660009054906101000a90046001600160a01b03166001600160a01b0316634699f8466040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3357600080fd5b505afa158015611b47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b6b9190810190614b30565b613236565b610dee611b7d8888613278565b610dee896131a4565b9050610eff565b6000600160005414611bb15760405162461bcd60e51b8152600401610f7d90615a44565b60026000558115611bcc57611bc5836132aa565b9050611bd8565b611bd583613450565b90505b8015611c2c57611c2c600460019054906101000a90046001600160a01b0316858360405180604001604052806015815260200174185cdcd95d081d1c985b9cd9995c8819985a5b1959605a1b815250613607565b60016000559392505050565b60045461010090046001600160a01b031681565b600d5481565b60085481565b600f546000908190426001600160581b03908116911614611c7f57611c7b613667565b9150505b611c90611c8b8261288a565b613733565b91505090565b600080611cb561016d610dfa601c600b5461280e90919063ffffffff16565b90506000611cd268056bc75e2d631000008363ffffffff61323616565b90506000611cef68056bc75e2d63100000610dfa84610dee611767565b9050611d0d85610dfa83670de0b6b3a764000063ffffffff61280e16565b95945050505050565b6000610f146000613762565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316611d576137b8565b6001600160a01b031614905090565b600f546000908190426001600160581b03908116911614611d8d57611d89613667565b9150505b611c908161288a565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e925780601f10610e6757610100808354040283529160200191610e92565b6018546001600160a01b031681565b6000600160005414611e245760405162461bcd60e51b8152600401610f7d90615a44565b6002600055611e3282613450565b905080156116a3576116a3600460019054906101000a90046001600160a01b03168483604051806040016040528060018152602001603560f81b815250613607565b601b546001600160a01b031681565b6000610d0d3384846000196128c4565b6000610eff82613762565b60095481565b60008082604051602001611eb8919061567f565b6040516020818303038152906040528051906020012090506000817fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001611f05929190615663565b60408051808303601f19018152919052805160209091012054949350505050565b60165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf44890611f5890859085906004016156a7565b600060405180830381600087803b158015611f7257600080fd5b505af1158015610f86573d6000803e3d6000fd5b601a546001600160a01b031681565b611f9d611d40565b611fb95760405162461bcd60e51b8152600401610f7d906159e4565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000600160005414611fff5760405162461bcd60e51b8152600401610f7d90615a44565b6002600055811561201b5761201484846137bc565b9050611c2c565b6120148484613098565b6000610eff6104f583610de2600061288a565b60075481565b612046611d40565b8061205b57506019546001600160a01b031633145b6120775760405162461bcd60e51b8152600401610f7d906159e4565b60045460609061010090046001600160a01b031660005b845181101561210157818582815181106120a457fe5b6020026020010151606001906001600160a01b031690816001600160a01b031681525050836120d6576224ea006120d9565b60005b62ffffff168582815181106120ea57fe5b602090810291909101015160e0015260010161208e565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e906121329087906004016157f5565b600060405180830381600087803b15801561214c57600080fd5b505af1158015612160573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261218891908101906147bd565b915060005b8251811015612206578281815181106121a257fe5b6020026020010151601060008784815181106121ba57fe5b602002602001015160800151876040516020016121d8929190615617565b60408051601f198184030181529181528151602092830120835290820192909252016000205560010161218d565b5050505050565b612215611d40565b8061222a57506019546001600160a01b031633145b6122465760405162461bcd60e51b8152600401610f7d906159e4565b68056bc75e2d63100000612260878963ffffffff6127e916565b111561227e5760405162461bcd60e51b8152600401610f7d90615974565b68056bc75e2d63100000612298858763ffffffff6127e916565b11156122b65760405162461bcd60e51b8152600401610f7d90615974565b68056bc75e2d6310000083111580156122d8575068056bc75e2d631000008211155b6122f45760405162461bcd60e51b8152600401610f7d906159a4565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b031633146123695760405162461bcd60e51b8152600401610f7d90615a34565b60008260405160200161237c919061567f565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f26040516020016123c4929190615663565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b6123fe611d40565b8061241357506019546001600160a01b031633145b61242f5760405162461bcd60e51b8152600401610f7d906159e4565b82811461244e5760405162461bcd60e51b8152600401610f7d90615904565b60408051848152602080860282010190915260609084801561247a578160200160208202803883390190505b50905060005b8481101561253d57600086868381811061249657fe5b90506020020160206124ab9190810190614619565b8585848181106124b757fe5b90506020020160206124cc9190810190614837565b6040516020016124dd929190615617565b6040516020818303038152906040528051906020012060001c9050601060008281526020019081526020016000205483838151811061251857fe5b6020908102919091018101919091526000918252601090526040812055600101612480565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a9061256e9084906004016157e4565b600060405180830381600087803b15801561258857600080fd5b505af115801561259c573d6000803e3d6000fd5b505050505050505050565b6001600160a01b031660009081526011602052604090205490565b600b5481565b60165460405163f06a9c6b60e01b81526001600160a01b039091169063f06a9c6b906125f890849060040161568b565b600060405180830381600087803b15801561261257600080fd5b505af1158015612206573d6000803e3d6000fd5b61262e611d40565b61264a5760405162461bcd60e51b8152600401610f7d906159e4565b61265381613845565b50565b6000806001600160a01b038516156126cd5760165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf4489061269a908a9089906004016156a7565b600060405180830381600087803b1580156126b457600080fd5b505af11580156126c8573d6000803e3d6000fd5b505050505b6127138c8c8c8c8c8c8c8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110f292505050565b915091509a509a98505050505050505050565b6019546001600160a01b031681565b600681565b600080600061274986866138c7565b925061279661277e670de0b6b3a7640000611b6b6b0a3098c68eb9427db8000000610dfa83610dee8a8c63ffffffff61280e16565b610dfa88670de0b6b3a764000063ffffffff61280e16565b90506127a8818763ffffffff61323616565b915093509350939050565b600480546040516370a0823160e01b81526000926101009092046001600160a01b0316916370a0823191610fd99130910161568b565b600082820183811015610d0d5760405162461bcd60e51b8152600401610f7d906158e4565b60008261281d57506000610eff565b8282028284828161282a57fe5b0414610d0d5760405162461bcd60e51b8152600401610f7d906159d4565b6000610d0d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506139dd565b6000601554600014610e0a57600c54806128b4576128b16128a9610f9a565b610de26127b3565b90505b610f37818463ffffffff6127e916565b60006000198214612920576040805180820190915260028152610c4d60f21b60208201526128fb908390859063ffffffff613a1416565b6001600160a01b03861660009081526014602090815260408083203384529091529020555b6001600160a01b0384166129465760405162461bcd60e51b8152600401610f7d906158c4565b6001600160a01b03851660009081526013602090815260408083205481518083019092526002825261189b60f11b92820192909252909190612991908390879063ffffffff613a1416565b6001600160a01b038089166000908152601360205260408082208490559189168152908120549192506129ca828863ffffffff6127e916565b6001600160a01b03891660009081526013602052604081208290559091506129f0611c58565b601c549091506001600160a01b038b8116911614801590612a1f5750601c546001600160a01b038a8116911614155b15612a3c57612a308a868684613a40565b612a3c89848484613a40565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a604051612a7f9190615814565b60405180910390a35060019998505050505050505050565b600080356001600160e01b0319167fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001612ad7929190615663565b6040516020818303038152906040528051906020012090506000815490508015612b135760405162461bcd60e51b8152600401610f7d906159e4565b5050565b808215610d0d57600080601660009054906101000a90046001600160a01b03166001600160a01b03166378d849ed6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b6f57600080fd5b505afa158015612b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ba79190810190614637565b60048054604051630a7549df60e21b81526001600160a01b03938416936329d5277c93612be0938c9361010090910490921691016156a7565b604080518083038186803b158015612bf757600080fd5b505afa158015612c0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c2f9190810190614b6d565b9150915081600014158015612c4357508015155b612c5f5760405162461bcd60e51b8152600401610f7d90615a24565b6000612c7582610dfa888663ffffffff61280e16565b60165460048054604051631a51577760e21b81529394506000936001600160a01b03938416936369455ddc93612cb8936101009004909116918d918891016156dd565b60206040518083038186803b158015612cd057600080fd5b505afa158015612ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d089190810190614b30565b9050868114612d2857612d2587610dfa848463ffffffff61280e16565b91505b612d38828663ffffffff6127e916565b98975050505050505050565b600f5442906001600160581b038083169116146126535760165460048054604051630740ff7d60e51b81526001600160a01b039384169363e81fefa093612d94936101009004909116910161568b565b600060405180830381600087803b158015612dae57600080fd5b505af1158015612dc2573d6000803e3d6000fd5b5050600f80546001600160581b0385166affffffffffffffffffffff19909116179055505050565b60008080612e0a670de0b6b3a7640000610dfa868863ffffffff61280e16565b9050612e1f81612e1a600061288a565b6138c7565b9150612e2f826224ea0083613af6565b9250509250929050565b600080612e44612a97565b612e4c6127b3565b602085015111801590612e6b575060208501516001600160a01b031615155b612e875760405162461bcd60e51b8152600401610f7d90615944565b60408501516001600160a01b0316612ead5760208501516001600160a01b031660408601525b6000612ebb8787878c613b57565b60208601516060870151919250612ed291906127e9565b60608601528815612ef2576060850151612eec908a613236565b60608601525b60008915612efe575060015b6000601060008a84604051602001612f17929190615617565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020549050601660009054906101000a90046001600160a01b03166001600160a01b031663585314cf84838f868f8e8e8e6040518963ffffffff1660e01b8152600401612f8f9796959493929190615822565b60408051808303818588803b158015612fa757600080fd5b505af1158015612fbb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250612fe09190810190614b6d565b6080890152602088018190526130085760405162461bcd60e51b8152600401610f7d90615994565b601654602089015160405163f06a9c6b60e01b81526001600160a01b039092169163f06a9c6b9161303b9160040161568b565b600060405180830381600087803b15801561305557600080fd5b505af1158015613069573d6000803e3d6000fd5b505050508660016005811061307a57fe5b6020020151608090970151969c969b50959950505050505050505050565b6000806130a483613d8c565b601c5491935091506000906001600160a01b03161561314257601c54604051636822955360e11b81526001600160a01b039091169063d0452aa6906130ef90309089906004016156a7565b60206040518083038186803b15801561310757600080fd5b505afa15801561311b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061313f9190810190614b30565b90505b6001600160a01b03851660009081526013602052604081205461316b908363ffffffff6127e916565b9050600061317f828663ffffffff6127e916565b905061318d87868887613e96565b5061319a87838387613a40565b5050505092915050565b60008115610e0a5760006131b6613667565b509050610f3783610dfa61016d610dee8568056bc75e2d6310000063ffffffff61280e16565b6000816131eb575060006110ea565b508354611d0d8161322a670de0b6b3a764000061321e88613212898963ffffffff613fb716565b9063ffffffff613ffd16565b9063ffffffff61406816565b9063ffffffff6140cc16565b6000610d0d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a14565b6000821580159061328857508115155b15610eff57611b8682610dfa8568056bc75e2d6310000063ffffffff61280e16565b601c54604051636822955360e11b815260009182916001600160a01b039091169063d0452aa6906132e190309033906004016156c2565b60206040518083038186803b1580156132f957600080fd5b505afa15801561330d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133319190810190614b30565b90508261334d61334033611a8f565b839063ffffffff6127e916565b101561336b5760405162461bcd60e51b8152600401610f7d90615924565b801561344b57828110156133e457601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec906133ad903090859033906004016157bc565b600060405180830381600087803b1580156133c757600080fd5b505af11580156133db573d6000803e3d6000fd5b5050505061344b565b601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec90613418903090879033906004016157bc565b600060405180830381600087803b15801561343257600080fd5b505af1158015613446573d6000803e3d6000fd5b505050505b610e06835b60008161346f5760405162461bcd60e51b8152600401610f7d906159f4565b61347833611a8f565b8211156134ac5760001982146134a05760405162461bcd60e51b8152600401610f7d906159b4565b6134a933611a8f565b91505b6134b4612d44565b60006134c3611c8b600061288a565b905060006134e3670de0b6b3a7640000610dfa868563ffffffff61280e16565b905060006134ef6127b3565b9050819350808411156135145760405162461bcd60e51b8152600401610f7d90615934565b601c546000906001600160a01b0316156135ad57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa69061355a90309033906004016156c2565b60206040518083038186803b15801561357257600080fd5b505afa158015613586573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506135aa9190810190614b30565b90505b336000908152601360205260408120546135cd908363ffffffff6127e916565b905060006135e1828963ffffffff61323616565b90506135ef33898989614112565b506135fc33838389613a40565b505050505050919050565b60405161366190859063a9059cbb60e01b9061362990879087906024016157a1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915283614237565b50505050565b60165460048054604051630d1979fb60e41b8152600093849384936001600160a01b039283169363d1979fb0936136a9933093610100900490911691016156a7565b60c06040518083038186803b1580156136c157600080fd5b505afa1580156136d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136f99190810190614cb6565b509196509450925061372c915068056bc75e2d631000009050610dfa61371f8285613236565b859063ffffffff61280e16565b9150509091565b6015546000908061374657600e54610e06565b610e0681610dfa85670de0b6b3a764000063ffffffff61280e16565b60008082156137ab57600f54426001600160581b0390811691161461378d57613789613667565b9150505b600061379b82610de26127b3565b9050808411156137a9578093505b505b610e0683612e1a8361288a565b3390565b60006137c88383613098565b601c549091506137e49084906001600160a01b031683806128c4565b50601c546040516336305cf160e21b81526001600160a01b039091169063d8c173c49061381790869085906004016157a1565b600060405180830381600087803b15801561383157600080fd5b505af115801561319a573d6000803e3d6000fd5b6001600160a01b03811661386b5760405162461bcd60e51b8152600401610f7d906158d4565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000806138df6138d985610de2610f9a565b84613278565b600554600654600954600a54600b5494955060009485949392919082881015613906578297505b8188111561397957968190039668056bc75e2d631000008290038089111561392c578098505b61394d68056bc75e2d63100000610dfa85610dee898b63ffffffff6127e916565b965061397187610de283610dfa613964878d613236565b8e9063ffffffff61280e16565b9950506139cf565b61399a85610de268056bc75e2d63100000610dfa8c8963ffffffff61280e16565b985093955085936139b1848663ffffffff6127e916565b9550868910156139c3578698506139cf565b858911156139cf578598505b505050505050505092915050565b600081836139fe5760405162461bcd60e51b8152600401610f7d9190615893565b506000838581613a0a57fe5b0495945050505050565b60008184841115613a385760405162461bcd60e51b8152600401610f7d9190615893565b505050900390565b604051600090613a769086907f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb69060200161563d565b60405160208183030381529060405280519060200120905060008360001415613aa25760009250613ad3565b8415613ad3576001600160a01b038616600090815260116020526040902054613ad0908390879086906131dc565b90505b90556001600160a01b039093166000908152601160205260409020929092555050565b600080613b116301e13380610dfa878763ffffffff61280e16565b90506000613b2e68056bc75e2d631000008363ffffffff61323616565b9050613b4d81610dfa8668056bc75e2d6310000063ffffffff61280e16565b9695505050505050565b60175460045460408501516020850151606086015160808701516000956001600160a01b03908116956101009004811694939291908b16851415613bad5760405162461bcd60e51b8152600401610f7d90615a04565b3496508715613c0b57613bd185858a60405180602001604052806000815250613607565b87831115613c0657601654604080516020810190915260008152613c069187916001600160a01b03909116908b870390613607565b613c40565b601654604080518082019091526002815261323760f01b6020820152613c409187916001600160a01b03909116908690613607565b8015613d4357856001600160a01b03168b6001600160a01b0316148015613c6657508615155b8015613c725750808710155b15613d0c57856001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613cb257600080fd5b505af1158015613cc6573d6000803e3d6000fd5b505060165460408051808201909152600481526332382d6160e01b6020820152613d0294508f93506001600160a01b0390911691508490613607565b8087039650613d43565b601654604080518082019091526004815263191c16b160e11b6020820152613d43918d9133916001600160a01b03169085906142f5565b8115613d7e57601654604080518082019091526002815261323960f01b6020820152613d7e91879133916001600160a01b03169086906142f5565b505050505050949350505050565b60008082613dac5760405162461bcd60e51b8152600401610f7d906159c4565b613db4612d44565b613dc1611c8b600061288a565b9050613ddf81610dfa85670de0b6b3a764000063ffffffff61280e16565b915034613e2757613e22600460019054906101000a90046001600160a01b031633308660405180604001604052806002815260200161062760f31b8152506142f5565b613e91565b601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613e7757600080fd5b505af1158015613e8b573d6000803e3d6000fd5b50505050505b915091565b60006001600160a01b038516613ebe5760405162461bcd60e51b8152600401610f7d906158c4565b6001600160a01b038516600090815260136020526040812054613ee7908663ffffffff6127e916565b6001600160a01b0387166000908152601360205260409020819055601554909150613f18908663ffffffff6127e916565b6015556040516001600160a01b038716907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb90613f5a90889088908890615aa2565b60405180910390a2856001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613fa69190615814565b60405180910390a395945050505050565b6000818303818312801590613fcc5750838113155b80613fe15750600083128015613fe157508381135b610d0d5760405162461bcd60e51b8152600401610f7d90615a54565b60008261400c57506000610eff565b826000191480156140205750600160ff1b82145b1561403d5760405162461bcd60e51b8152600401610f7d90615a14565b8282028284828161404a57fe5b0514610d0d5760405162461bcd60e51b8152600401610f7d90615a14565b6000816140875760405162461bcd60e51b8152600401610f7d90615a84565b8160001914801561409b5750600160ff1b83145b156140b85760405162461bcd60e51b8152600401610f7d90615964565b60008284816140c357fe5b05949350505050565b60008282018183128015906140e15750838112155b806140f657506000831280156140f657508381125b610d0d5760405162461bcd60e51b8152600401610f7d906158f4565b6040805180820182526002815261189b60f11b6020808301919091526001600160a01b0387166000908152601390915291822054829161415a9190879063ffffffff613a1416565b9050600a811161417b57614174858263ffffffff6127e916565b9450600090505b6001600160a01b03861660009081526013602052604090208190556015546141a9908663ffffffff61323616565b6015556040516001600160a01b038716907f743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b4644906141eb90889088908890615aa2565b60405180910390a260006001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613fa69190615814565b60006060846001600160a01b031684604051614253919061567f565b6000604051808303816000865af19150503d8060008114614290576040519150601f19603f3d011682016040523d82523d6000602084013e614295565b606091505b50915091508183906142ba5760405162461bcd60e51b8152600401610f7d9190615893565b5080511561220657808060200190516142d69190810190614855565b8390610f865760405162461bcd60e51b8152600401610f7d9190615893565b6040516122069086906323b872dd60e01b90613629908890889088906024016156dd565b60405180608001604052806004906020820280388339509192915050565b6040518060a001604052806005906020820280388339509192915050565b8035610eff81615c11565b8051610eff81615c11565b60008083601f84011261437d57600080fd5b5081356001600160401b0381111561439457600080fd5b6020830191508360208202830111156143ac57600080fd5b9250929050565b600082601f8301126143c457600080fd5b81516143d76143d282615af1565b615acb565b915081818352602084019350602081019050838560208402820111156143fc57600080fd5b60005b8381101561319a578161441288826144bd565b84525060209283019291909101906001016143ff565b600082601f83011261443957600080fd5b81356144476143d282615af1565b915081818352602084019350602081019050838561010084028201111561446d57600080fd5b60005b8381101561319a57816144838882614558565b8452506020909201916101009190910190600101614470565b8035610eff81615c25565b8051610eff81615c25565b8035610eff81615c2e565b8051610eff81615c2e565b60008083601f8401126144da57600080fd5b5081356001600160401b038111156144f157600080fd5b6020830191508360018202830111156143ac57600080fd5b600082601f83011261451a57600080fd5b81356145286143d282615b11565b9150808252602083016020830185838301111561454457600080fd5b61454f838284615b97565b50505092915050565b6000610100828403121561456b57600080fd5b614576610100615acb565b9050600061458484846144b2565b82525060206145958484830161449c565b60208301525060406145a984828501614355565b60408301525060606145bd84828501614355565b60608301525060806145d184828501614355565b60808301525060a06145e5848285016144b2565b60a08301525060c06145f9848285016144b2565b60c08301525060e061460d848285016144b2565b60e08301525092915050565b60006020828403121561462b57600080fd5b60006110ea8484614355565b60006020828403121561464957600080fd5b60006110ea8484614360565b6000806040838503121561466857600080fd5b60006146748585614355565b925050602061468585828601614355565b9150509250929050565b6000806000606084860312156146a457600080fd5b60006146b08686614355565b93505060206146c186828701614355565b92505060406146d2868287016144b2565b9150509250925092565b600080604083850312156146ef57600080fd5b60006146fb8585614355565b9250506020614685858286016144b2565b60008060006060848603121561472157600080fd5b600061472d8686614355565b935050602061473e868287016144b2565b92505060406146d28682870161449c565b6000806000806040858703121561476557600080fd5b84356001600160401b0381111561477b57600080fd5b6147878782880161436b565b945094505060208501356001600160401b038111156147a557600080fd5b6147b18782880161436b565b95989497509550505050565b6000602082840312156147cf57600080fd5b81516001600160401b038111156147e557600080fd5b6110ea848285016143b3565b6000806040838503121561480457600080fd5b82356001600160401b0381111561481a57600080fd5b61482685828601614428565b92505060206146858582860161449c565b60006020828403121561484957600080fd5b60006110ea848461449c565b60006020828403121561486757600080fd5b60006110ea84846144a7565b600080600080600080600080610100898b03121561489057600080fd5b600061489c8b8b6144b2565b98505060206148ad8b828c016144b2565b97505060406148be8b828c016144b2565b96505060606148cf8b828c016144b2565b95505060806148e08b828c01614355565b94505060a06148f18b828c01614355565b93505060c06149028b828c01614355565b92505060e08901356001600160401b0381111561491e57600080fd5b61492a8b828c01614509565b9150509295985092959890939650565b6000806000806000806000806000806101208b8d03121561495a57600080fd5b60006149668d8d6144b2565b9a505060206149778d828e016144b2565b99505060406149888d828e016144b2565b98505060606149998d828e016144b2565b97505060806149aa8d828e01614355565b96505060a06149bb8d828e01614355565b95505060c06149cc8d828e016144b2565b94505060e06149dd8d828e01614355565b9350506101008b01356001600160401b038111156149fa57600080fd5b614a068d828e016144c8565b92509250509295989b9194979a5092959850565b600080600080600080600080610100898b031215614a3757600080fd5b6000614a438b8b6144b2565b9850506020614a548b828c016144b2565b9750506040614a658b828c016144b2565b9650506060614a768b828c016144b2565b9550506080614a878b828c01614355565b94505060a0614a988b828c01614355565b93505060c06149028b828c016144b2565b600060208284031215614abb57600080fd5b81356001600160401b03811115614ad157600080fd5b6110ea84828501614509565b60008060408385031215614af057600080fd5b82356001600160401b03811115614b0657600080fd5b61482685828601614509565b600060208284031215614b2457600080fd5b60006110ea84846144b2565b600060208284031215614b4257600080fd5b60006110ea84846144bd565b60008060408385031215614b6157600080fd5b60006146fb85856144b2565b60008060408385031215614b8057600080fd5b6000614b8c85856144bd565b9250506020614685858286016144bd565b600080600060608486031215614bb257600080fd5b6000614bbe86866144b2565b9350506020614bcf868287016144b2565b92505060406146d286828701614355565b60008060008060808587031215614bf657600080fd5b6000614c0287876144b2565b9450506020614c13878288016144b2565b9350506040614c24878288016144b2565b9250506060614c3587828801614355565b91505092959194509250565b600080600080600060a08688031215614c5957600080fd5b6000614c6588886144b2565b9550506020614c76888289016144b2565b9450506040614c87888289016144b2565b9350506060614c9888828901614355565b9250506080614ca9888289016144b2565b9150509295509295909350565b60008060008060008060c08789031215614ccf57600080fd5b6000614cdb89896144bd565b9650506020614cec89828a016144bd565b9550506040614cfd89828a016144bd565b9450506060614d0e89828a016144bd565b9350506080614d1f89828a016144bd565b92505060a0614d3089828a016144bd565b9150509295509295509295565b600080600080600080600060e0888a031215614d5857600080fd5b6000614d648a8a6144b2565b9750506020614d758a828b016144b2565b9650506040614d868a828b016144b2565b9550506060614d978a828b016144b2565b9450506080614da88a828b016144b2565b93505060a0614db98a828b016144b2565b92505060c0614dca8a828b016144b2565b91505092959891949750929550565b6000614de58383614e1d565b505060200190565b6000614de58383614f90565b6000614e058383615577565b50506101000190565b614e1781615b86565b82525050565b614e1781615b57565b614e17614e3282615b57565b615bcf565b614e4081615b3e565b614e4a8184610e0a565b9250614e5582610f17565b8060005b83811015610f86578151614e6d8782614dd9565b9650614e7883615b38565b925050600101614e59565b6000614e8e82615b44565b614e988185615b4e565b9350614ea383615b38565b8060005b83811015614ed1578151614ebb8882614ded565b9750614ec683615b38565b925050600101614ea7565b509495945050505050565b6000614ee782615b44565b614ef18185615b4e565b9350614efc83615b38565b8060005b83811015614ed1578151614f148882614df9565b9750614f1f83615b38565b925050600101614f00565b614f3381615b48565b614f3d8184610e0a565b9250614f4882610f17565b8060005b83811015610f86578151614f608782614ded565b9650614f6b83615b38565b925050600101614f4c565b614e1781615b62565b614e17614f8b82615b62565b615bda565b614e1781610f17565b614e17614fa582610f17565b610f17565b614e17614fa582615b67565b6000614fc182615b44565b614fcb8185615b4e565b9350614fdb818560208601615ba3565b614fe481615bfb565b9093019392505050565b6000614ff982615b44565b6150038185610e0a565b9350615013818560208601615ba3565b9290920192915050565b600061502a600c83615b4e565b6b636f6c6c20746f6f206c6f7760a01b815260200192915050565b6000615052600283615b4e565b61031360f41b815260200192915050565b6000615070600283615b4e565b61313560f01b815260200192915050565b600061508e602683615b4e565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006150d6601b83615b4e565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061510f602183615b4e565b7f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000615152600e83615b4e565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b600061517c600183615b4e565b603760f81b815260200192915050565b6000615199601283615b4e565b716e6f7420656e6f7567682062616c616e636560701b815260200192915050565b60006151c7600283615b4e565b61333760f01b815260200192915050565b60006151e5600283615b4e565b610c8d60f21b815260200192915050565b6000615203600283615b4e565b61313160f01b815260200192915050565b6000615221602183615b4e565b7f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000615264601583615b4e565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000615295600283615b4e565b61189960f11b815260200192915050565b60006152b3600283615b4e565b61323560f01b815260200192915050565b60006152d1600f83615b4e565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b60006152fc600283615b4e565b61199960f11b815260200192915050565b600061531a600283615b4e565b61313760f01b815260200192915050565b6000615338602183615b4e565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061537b600c83615b4e565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006153a3600283615b4e565b61313960f01b815260200192915050565b60006153c1600283615b4e565b61191b60f11b815260200192915050565b60006153df602783615b4e565b7f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f815266766572666c6f7760c81b602082015260400192915050565b6000615428601d83615b4e565b7f696e76616c6964207261746520636f6c6c61746572616c20746f6b656e000000815260200192915050565b6000615461600a83615b4e565b6937b7363ca830bab9b2b960b11b815260200192915050565b6000615487600c83615b4e565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b60006154af602483615b4e565b7f5369676e6564536166654d6174683a207375627472616374696f6e206f766572815263666c6f7760e01b602082015260400192915050565b60006154f5601883615b4e565b7f34303120757365206f66206578697374696e67206c6f616e0000000000000000815260200192915050565b600061552e600183615b4e565b601b60f91b815260200192915050565b600061554b602083615b4e565b7f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f815260200192915050565b80516101008301906155898482614f90565b50602082015161559c6020850182614f76565b5060408201516155af6040850182614e1d565b5060608201516155c26060850182614e1d565b5060808201516155d56080850182614e1d565b5060a08201516155e860a0850182614f90565b5060c08201516155fb60c0850182614f90565b5060e082015161366160e0850182614f90565b614e1781615b80565b60006156238285614e26565b6014820191506156338284614f7f565b5060010192915050565b60006156498285614e26565b6014820191506156598284614f99565b5060200192915050565b600061566f8285614faa565b6004820191506156598284614f99565b6000610d0d8284614fee565b60208101610eff8284614e1d565b60208101610eff8284614e0e565b604081016156b58285614e1d565b610d0d6020830184614e1d565b604081016156d08285614e1d565b610d0d6020830184614e0e565b606081016156eb8286614e1d565b6156f86020830185614e1d565b6110ea6040830184614f90565b60a081016157138288614e1d565b6157206020830187614e1d565b61572d6040830186614f90565b61573a6060830185614f90565b613b4d6080830184614f76565b60c081016157558289614e1d565b6157626020830188614e1d565b61576f6040830187614f90565b61577c6060830186614f90565b6157896080830185614f90565b61579660a0830184614f90565b979650505050505050565b604081016157af8285614e1d565b610d0d6020830184614f90565b606081016157ca8286614e1d565b6157d76020830185614f90565b6110ea6040830184614e0e565b60208082528101610d0d8184614e83565b60208082528101610d0d8184614edc565b60208101610eff8284614f76565b60208101610eff8284614f90565b6101c08101615831828a614f90565b61583e6020830189614f90565b61584b6040830188614f76565b6158586060830187614f90565b6158656080830186614e37565b615873610100830185614f2a565b8181036101a08301526158868184614fb6565b9998505050505050505050565b60208082528101610d0d8184614fb6565b60208082528101610eff8161501d565b60208082528101610eff81615045565b60208082528101610eff81615063565b60208082528101610eff81615081565b60208082528101610eff816150c9565b60208082528101610eff81615102565b60208082528101610eff81615145565b60208082528101610eff8161516f565b60208082528101610eff8161518c565b60208082528101610eff816151ba565b60208082528101610eff816151d8565b60208082528101610eff816151f6565b60208082528101610eff81615214565b60208082528101610eff81615257565b60208082528101610eff81615288565b60208082528101610eff816152a6565b60208082528101610eff816152c4565b60208082528101610eff816152ef565b60208082528101610eff8161530d565b60208082528101610eff8161532b565b60208082528101610eff8161536e565b60208082528101610eff81615396565b60208082528101610eff816153b4565b60208082528101610eff816153d2565b60208082528101610eff8161541b565b60208082528101610eff81615454565b60208082528101610eff8161547a565b60208082528101610eff816154a2565b60208082528101610eff816154e8565b60208082528101610eff81615521565b60208082528101610eff8161553e565b604081016157af8285614f90565b60608101615ab08286614f90565b6156f86020830185614f90565b60208101610eff828461560e565b6040518181016001600160401b0381118282101715615ae957600080fd5b604052919050565b60006001600160401b03821115615b0757600080fd5b5060209081020190565b60006001600160401b03821115615b2757600080fd5b506020601f91909101601f19160190565b60200190565b50600490565b5190565b50600590565b90815260200190565b6000610eff82615b74565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b6000610eff826000610eff82615b57565b82818337506000910152565b60005b83811015615bbe578181015183820152602001615ba6565b838111156136615750506000910152565b6000610eff82615be5565b6000610eff82615bf0565b6000610eff82615c0b565b6000610eff82615c05565b601f01601f191690565b60f81b90565b60601b90565b615c1a81615b57565b811461265357600080fd5b615c1a81615b62565b615c1a81610f1756fea365627a7a72315820c73210bfed5f9dc340d9bb6d509064e47607585d837100b09c7acb22300cc4966c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH3 0x1E PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x72 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x76 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x5C7A DUP1 PUSH3 0x86 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3EF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7FF9B596 GT PUSH2 0x208 JUMPI DUP1 PUSH4 0xCB926CB3 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0xE41B07E3 GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xF06A9C6B GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xF06A9C6B EQ PUSH2 0xAEE JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB0E JUMPI DUP1 PUSH4 0xF6B69F99 EQ PUSH2 0xB2E JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xB41 JUMPI DUP1 PUSH4 0xFFA1AD74 EQ PUSH2 0xB56 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0xA79 JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0xA99 JUMPI DUP1 PUSH4 0xEEBC5081 EQ PUSH2 0xAB9 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0xAD9 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0xD8F06C83 GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x9F9 JUMPI DUP1 PUSH4 0xD97206A4 EQ PUSH2 0xA19 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xA39 JUMPI DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0xA59 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0xCB926CB3 EQ PUSH2 0x984 JUMPI DUP1 PUSH4 0xD1A1BEB4 EQ PUSH2 0x9A4 JUMPI DUP1 PUSH4 0xD65A5021 EQ PUSH2 0x9C4 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x9E4 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x9BDA3A98 GT PUSH2 0x19B JUMPI DUP1 PUSH4 0xB9FE1A8F GT PUSH2 0x16A JUMPI DUP1 PUSH4 0xB9FE1A8F EQ PUSH2 0x8FA JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x91A JUMPI DUP1 PUSH4 0xBE194217 EQ PUSH2 0x92F JUMPI DUP1 PUSH4 0xC9DDF448 EQ PUSH2 0x94F JUMPI DUP1 PUSH4 0xCA37E666 EQ PUSH2 0x96F JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x9BDA3A98 EQ PUSH2 0x890 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x8A5 JUMPI DUP1 PUSH4 0x9FD0506D EQ PUSH2 0x8C5 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x8DA JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x8EE6C4E6 GT PUSH2 0x1D7 JUMPI DUP1 PUSH4 0x8EE6C4E6 EQ PUSH2 0x83C JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x851 JUMPI DUP1 PUSH4 0x8FB807C5 EQ PUSH2 0x866 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x87B JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x7FF9B596 EQ PUSH2 0x7DD JUMPI DUP1 PUSH4 0x829B38F4 EQ PUSH2 0x7F2 JUMPI DUP1 PUSH4 0x8325A1C0 EQ PUSH2 0x812 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x827 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x303 JUMPI DUP1 PUSH4 0x631A3EF8 GT PUSH2 0x296 JUMPI DUP1 PUSH4 0x7288B344 GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x7288B344 EQ PUSH2 0x75E JUMPI DUP1 PUSH4 0x76FD4FDF EQ PUSH2 0x77E JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x79E JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x7B3 JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x7C8 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x631A3EF8 EQ PUSH2 0x6CF JUMPI DUP1 PUSH4 0x6B40CD40 EQ PUSH2 0x6EF JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH2 0x71E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x73E JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x44A4A003 GT PUSH2 0x2D2 JUMPI DUP1 PUSH4 0x44A4A003 EQ PUSH2 0x670 JUMPI DUP1 PUSH4 0x54198CE9 EQ PUSH2 0x685 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x6A5 JUMPI DUP1 PUSH4 0x612EF80B EQ PUSH2 0x6BA JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x5F9 JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x61B JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x63B JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x650 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x18498B1D GT PUSH2 0x386 JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x355 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x570 JUMPI DUP1 PUSH4 0x28A02F19 EQ PUSH2 0x590 JUMPI DUP1 PUSH4 0x2D88AF4A EQ PUSH2 0x5B1 JUMPI DUP1 PUSH4 0x2EA295FA EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x5E4 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x18498B1D EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x531 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0x20F6D07C EQ PUSH2 0x55B JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x498 JUMPI DUP1 PUSH4 0x9EC6B6B EQ PUSH2 0x4C5 JUMPI DUP1 PUSH4 0x12416898 EQ PUSH2 0x4DA JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x4FA JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x4797930 EQ PUSH2 0x3FE JUMPI DUP1 PUSH4 0x6947A3A EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0x6B3EFD6 EQ PUSH2 0x456 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x476 JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B9D JUMP JUMPDEST PUSH2 0xB6B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP2 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP2 SWAP1 PUSH2 0x568B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x471 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0xD23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48B PUSH2 0xE0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP2 SWAP1 PUSH2 0x5893 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x4B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x46DC JUMP JUMPDEST PUSH2 0xE9A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP2 SWAP1 PUSH2 0x5806 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xF05 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x4F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B12 JUMP JUMPDEST PUSH2 0xF1A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xF45 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0x52A CALLDATASIZE PUSH1 0x4 PUSH2 0x4C41 JUMP JUMPDEST PUSH2 0xF4B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xF8E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xF94 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xF9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x58B CALLDATASIZE PUSH1 0x4 PUSH2 0x468F JUMP JUMPDEST PUSH2 0x1029 JUMP JUMPDEST PUSH2 0x5A3 PUSH2 0x59E CALLDATASIZE PUSH1 0x4 PUSH2 0x4A1A JUMP JUMPDEST PUSH2 0x10F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP3 SWAP2 SWAP1 PUSH2 0x5A94 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0x5CC CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x1317 JUMP JUMPDEST PUSH2 0x5A3 PUSH2 0x5DF CALLDATASIZE PUSH1 0x4 PUSH2 0x4873 JUMP JUMPDEST PUSH2 0x135D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x163D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x60E PUSH2 0x164C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP2 SWAP1 PUSH2 0x5ABD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x636 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B12 JUMP JUMPDEST PUSH2 0x1655 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x647 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1667 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x66B CALLDATASIZE PUSH1 0x4 PUSH2 0x46DC JUMP JUMPDEST PUSH2 0x166D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x16AE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x6A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x16C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1761 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1767 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x6EA CALLDATASIZE PUSH1 0x4 PUSH2 0x4B9D JUMP JUMPDEST PUSH2 0x1798 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x70F PUSH2 0x70A CALLDATASIZE PUSH1 0x4 PUSH2 0x4BE0 JUMP JUMPDEST PUSH2 0x1938 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5AA2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0x739 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x1A49 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x759 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x1A8F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x779 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B4E JUMP JUMPDEST PUSH2 0x1AAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x799 CALLDATASIZE PUSH1 0x4 PUSH2 0x470C JUMP JUMPDEST PUSH2 0x1B8D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x1C38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1C4C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1C52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1C58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x80D CALLDATASIZE PUSH1 0x4 PUSH2 0x4B12 JUMP JUMPDEST PUSH2 0x1C96 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1D16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x833 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x1D22 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x848 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x1D31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x1D40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1D66 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48B PUSH2 0x1D96 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x1DF1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x8C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x46DC JUMP JUMPDEST PUSH2 0x1E00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x1E74 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x8F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x46DC JUMP JUMPDEST PUSH2 0x1E83 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x915 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B12 JUMP JUMPDEST PUSH2 0x1E93 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x926 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1E9E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x94A CALLDATASIZE PUSH1 0x4 PUSH2 0x4AA9 JUMP JUMPDEST PUSH2 0x1EA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0x96A CALLDATASIZE PUSH1 0x4 PUSH2 0x4655 JUMP JUMPDEST PUSH2 0x1F26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x97B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x1F86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x990 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0x99F CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x1F95 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x9BF CALLDATASIZE PUSH1 0x4 PUSH2 0x470C JUMP JUMPDEST PUSH2 0x1FDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x9DF CALLDATASIZE PUSH1 0x4 PUSH2 0x4B12 JUMP JUMPDEST PUSH2 0x2025 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x2038 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0xA14 CALLDATASIZE PUSH1 0x4 PUSH2 0x47F1 JUMP JUMPDEST PUSH2 0x203E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0xA34 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D3D JUMP JUMPDEST PUSH2 0x220D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xA54 CALLDATASIZE PUSH1 0x4 PUSH2 0x4655 JUMP JUMPDEST PUSH2 0x2314 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0xA74 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ADD JUMP JUMPDEST PUSH2 0x233F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xA94 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x23E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0xAB4 CALLDATASIZE PUSH1 0x4 PUSH2 0x474F JUMP JUMPDEST PUSH2 0x23F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xAD4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x25A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x25C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0xB09 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x25C8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0xB29 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x5A3 PUSH2 0xB3C CALLDATASIZE PUSH1 0x4 PUSH2 0x493A JUMP JUMPDEST PUSH2 0x2656 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x2726 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x2735 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xD0D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB90 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBAA SWAP3 SWAP2 SWAP1 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 PUSH4 0xE762319F SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 DUP8 SWAP2 DUP11 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0xC1B SWAP2 DUP11 SWAP2 ADD PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC6B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC8D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5705 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCB9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xCDD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP2 POP PUSH2 0xCF1 DUP3 PUSH2 0xCEB PUSH2 0x1D66 JUMP JUMPDEST DUP7 PUSH2 0x273A JUMP JUMPDEST SWAP4 POP PUSH2 0xCFF SWAP2 POP PUSH2 0x27B3 SWAP1 POP JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0xD0B JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xDBE JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0xD6B SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD97 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xDBB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xE06 PUSH8 0xDE0B6B3A7640000 PUSH2 0xDFA PUSH2 0xDD5 PUSH2 0x1C58 JUMP JUMPDEST PUSH2 0xDEE DUP6 PUSH2 0xDE2 DUP10 PUSH2 0x1A8F JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2848 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE92 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE67 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE92 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE75 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xEF3 SWAP1 DUP7 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF14 PUSH2 0x4F5 PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF25 PUSH2 0xF9A JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xF3F JUMPI PUSH2 0xF37 DUP2 DUP5 PUSH2 0x1AAA JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE0A JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF59 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1938 JUMP JUMPDEST POP SWAP2 POP POP DUP2 DUP2 LT ISZERO PUSH2 0xF86 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x250F447F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0x4A1E88FE SWAP4 PUSH2 0xFD9 SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1005 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xF14 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH2 0x10EA SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x115DD4B1 SWAP1 PUSH2 0x1064 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x5699 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x107C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1090 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x10B4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4855 JUMP JUMPDEST PUSH2 0x10E1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH2 0x28C4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1117 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A44 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1124 PUSH2 0x2A97 JUMP JUMPDEST PUSH2 0x1131 DUP10 DUP10 DUP10 DUP10 DUP9 PUSH2 0xF4B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x114E JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x1181 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5954 JUMP JUMPDEST DUP10 ISZERO DUP1 PUSH2 0x1196 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x11B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A64 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x11F5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x11F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1246 JUMPI PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP9 GT ISZERO PUSH2 0x1246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1253 DUP8 DUP10 DUP12 PUSH2 0x2B17 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1272 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5984 JUMP JUMPDEST PUSH2 0x127A PUSH2 0x4319 JUMP JUMPDEST PUSH2 0x1282 PUSH2 0x4337 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP11 SWAP1 MSTORE PUSH2 0x12BA PUSH2 0x2D44 JUMP JUMPDEST PUSH2 0x12CB DUP13 DUP3 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x2DEA JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x12EC PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP14 PUSH2 0x2848 JUMP JUMPDEST SWAP12 POP PUSH2 0x12FE DUP14 PUSH1 0x0 DUP15 DUP13 DUP7 DUP7 DUP13 PUSH2 0x2E39 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP15 SWAP1 SWAP14 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x131F PUSH2 0x1D40 JUMP JUMPDEST PUSH2 0x133B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1382 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A44 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP9 PUSH2 0x13A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A74 JUMP JUMPDEST PUSH2 0x13AC PUSH2 0x2A97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x13EF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x13EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x13FB JUMPI POP DUP7 CALLVALUE EQ JUMPDEST DUP1 ISZERO PUSH2 0x140F JUMPI POP DUP7 ISZERO ISZERO DUP1 PUSH2 0x140F JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1436 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO DUP1 PUSH2 0x142C JUMPI POP CALLVALUE ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x1436 JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1452 JUMPI POP DUP10 ISZERO DUP1 PUSH2 0x1452 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x146E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5914 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x148B JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x14BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58B4 JUMP JUMPDEST PUSH2 0x14C6 PUSH2 0x2D44 JUMP JUMPDEST PUSH2 0x14CE PUSH2 0x4319 JUMP JUMPDEST PUSH2 0x14D6 PUSH2 0x4337 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 AND PUSH1 0x40 DUP5 ADD MSTORE DUP2 ADD DUP12 SWAP1 MSTORE PUSH2 0x150E DUP12 PUSH2 0x1508 PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST DUP13 PUSH2 0x273A JUMP JUMPDEST DUP4 PUSH1 0x0 PUSH1 0x20 MUL ADD DUP5 PUSH1 0x2 PUSH1 0x20 MUL ADD DUP6 PUSH1 0x1 PUSH1 0x20 MUL ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 MSTORE MSTORE DUP9 DUP2 PUSH1 0x4 PUSH1 0x20 MUL ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x1625 DUP13 DUP13 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCA74A5D9 PUSH1 0x10 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1579 SWAP3 SWAP2 SWAP1 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15BD SWAP2 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x160D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST DUP12 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2E39 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP14 SWAP1 SWAP13 POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A44 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x16A0 DUP4 DUP4 PUSH2 0x3098 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF14 PUSH2 0x16BB PUSH2 0xF9A JUMP JUMPDEST PUSH2 0x31A4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 PUSH1 0x0 SHL PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x16F9 SWAP3 SWAP2 SWAP1 PUSH2 0x563D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xE06 DUP2 PUSH1 0x13 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1743 PUSH2 0x1C58 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x31DC JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1774 PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1780 PUSH2 0xF9A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1793 JUMPI SWAP1 SUB SWAP1 POP PUSH2 0xF17 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xD0D JUMPI PUSH1 0x0 PUSH2 0x17AE DUP6 PUSH2 0xCEB PUSH2 0x1D66 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x17BA PUSH2 0x27B3 JUMP JUMPDEST DUP2 GT PUSH2 0xD0B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x17DD JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x17F7 SWAP3 SWAP2 SWAP1 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH2 0x192F SWAP4 PUSH1 0xA SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x25DECAC0 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0x186D SWAP2 DUP13 SWAP2 ADD PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1899 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x18BD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18DF SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5705 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x190B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xDE2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xD0D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1959 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x1966 DUP6 DUP8 DUP10 PUSH2 0x2B17 JUMP JUMPDEST SWAP1 POP PUSH2 0x1972 DUP9 DUP3 PUSH2 0x2DEA JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH2 0x197F PUSH2 0x27B3 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1996 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1A3F JUMP JUMPDEST PUSH2 0x19A6 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD67F7077 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD67F7077 SWAP4 PUSH2 0x19EB SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP14 SWAP2 DUP14 SWAP2 DUP11 SWAP2 DUP14 SWAP2 ADD PUSH2 0x5747 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1A3B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP3 POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A51 PUSH2 0x1D40 JUMP JUMPDEST PUSH2 0x1A6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST PUSH1 0x19 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1ABB JUMPI POP DUP3 DUP3 LT ISZERO JUMPDEST ISZERO PUSH2 0xEFF JUMPI PUSH2 0x1B86 PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 PUSH2 0xDFA PUSH2 0x1B70 PUSH9 0x56BC75E2D63100000 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4699F846 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B6B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST PUSH2 0x3236 JUMP JUMPDEST PUSH2 0xDEE PUSH2 0x1B7D DUP9 DUP9 PUSH2 0x3278 JUMP JUMPDEST PUSH2 0xDEE DUP10 PUSH2 0x31A4 JUMP JUMPDEST SWAP1 POP PUSH2 0xEFF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1BB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A44 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x1BCC JUMPI PUSH2 0x1BC5 DUP4 PUSH2 0x32AA JUMP JUMPDEST SWAP1 POP PUSH2 0x1BD8 JUMP JUMPDEST PUSH2 0x1BD5 DUP4 PUSH2 0x3450 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x1C2C JUMPI PUSH2 0x1C2C PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x185CDCD95D081D1C985B9CD9995C8819985A5B1959 PUSH1 0x5A SHL DUP2 MSTORE POP PUSH2 0x3607 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1C7F JUMPI PUSH2 0x1C7B PUSH2 0x3667 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C90 PUSH2 0x1C8B DUP3 PUSH2 0x288A JUMP JUMPDEST PUSH2 0x3733 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1CB5 PUSH2 0x16D PUSH2 0xDFA PUSH1 0x1C PUSH1 0xB SLOAD PUSH2 0x280E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1CD2 PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3236 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1CEF PUSH9 0x56BC75E2D63100000 PUSH2 0xDFA DUP5 PUSH2 0xDEE PUSH2 0x1767 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D0D DUP6 PUSH2 0xDFA DUP4 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF14 PUSH1 0x0 PUSH2 0x3762 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D57 PUSH2 0x37B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1D8D JUMPI PUSH2 0x1D89 PUSH2 0x3667 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C90 DUP2 PUSH2 0x288A JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE92 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE67 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE92 JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1E24 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A44 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1E32 DUP3 PUSH2 0x3450 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x16A3 JUMPI PUSH2 0x16A3 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH2 0x3607 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0D CALLER DUP5 DUP5 PUSH1 0x0 NOT PUSH2 0x28C4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x3762 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EB8 SWAP2 SWAP1 PUSH2 0x567F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1F05 SWAP3 SWAP2 SWAP1 PUSH2 0x5663 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x193BBE89 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC9DDF448 SWAP1 PUSH2 0x1F58 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1F9D PUSH2 0x1D40 JUMP JUMPDEST PUSH2 0x1FB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST PUSH1 0x1C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1FFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A44 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x201B JUMPI PUSH2 0x2014 DUP5 DUP5 PUSH2 0x37BC JUMP JUMPDEST SWAP1 POP PUSH2 0x1C2C JUMP JUMPDEST PUSH2 0x2014 DUP5 DUP5 PUSH2 0x3098 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF PUSH2 0x4F5 DUP4 PUSH2 0xDE2 PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2046 PUSH2 0x1D40 JUMP JUMPDEST DUP1 PUSH2 0x205B JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2077 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x2101 JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20A4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x20D6 JUMPI PUSH3 0x24EA00 PUSH2 0x20D9 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20EA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x208E JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x2132 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x57F5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x214C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2160 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2188 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x47BD JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2206 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x21A2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x21BA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x21D8 SWAP3 SWAP2 SWAP1 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x218D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2215 PUSH2 0x1D40 JUMP JUMPDEST DUP1 PUSH2 0x222A JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2246 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x2260 DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST GT ISZERO PUSH2 0x227E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5974 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x2298 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST GT ISZERO PUSH2 0x22B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5974 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x22D8 JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x22F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59A4 JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2369 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A34 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x237C SWAP2 SWAP1 PUSH2 0x567F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x23C4 SWAP3 SWAP2 SWAP1 PUSH2 0x5663 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x23FE PUSH2 0x1D40 JUMP JUMPDEST DUP1 PUSH2 0x2413 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x242F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x244E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5904 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0x247A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x253D JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x2496 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x24AB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4619 JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x24B7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x24CC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4837 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x24DD SWAP3 SWAP2 SWAP1 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2518 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x2480 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0x256E SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x57E4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x259C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF06A9C6B SWAP1 PUSH2 0x25F8 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x568B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2612 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2206 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x262E PUSH2 0x1D40 JUMP JUMPDEST PUSH2 0x264A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST PUSH2 0x2653 DUP2 PUSH2 0x3845 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x26CD JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x193BBE89 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC9DDF448 SWAP1 PUSH2 0x269A SWAP1 DUP11 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x2713 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x10F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP11 POP SWAP11 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2749 DUP7 DUP7 PUSH2 0x38C7 JUMP JUMPDEST SWAP3 POP PUSH2 0x2796 PUSH2 0x277E PUSH8 0xDE0B6B3A7640000 PUSH2 0x1B6B PUSH12 0xA3098C68EB9427DB8000000 PUSH2 0xDFA DUP4 PUSH2 0xDEE DUP11 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST PUSH2 0xDFA DUP9 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x27A8 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x3236 AND JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xFD9 SWAP2 ADDRESS SWAP2 ADD PUSH2 0x568B JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xD0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58E4 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x281D JUMPI POP PUSH1 0x0 PUSH2 0xEFF JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x282A JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xD0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59D4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x39DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x15 SLOAD PUSH1 0x0 EQ PUSH2 0xE0A JUMPI PUSH1 0xC SLOAD DUP1 PUSH2 0x28B4 JUMPI PUSH2 0x28B1 PUSH2 0x28A9 PUSH2 0xF9A JUMP JUMPDEST PUSH2 0xDE2 PUSH2 0x27B3 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xF37 DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ PUSH2 0x2920 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xC4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x28FB SWAP1 DUP4 SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3A14 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2946 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 SWAP1 PUSH2 0x2991 SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3A14 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x29CA DUP3 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP3 SWAP1 SSTORE SWAP1 SWAP2 POP PUSH2 0x29F0 PUSH2 0x1C58 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2A1F JUMPI POP PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x2A3C JUMPI PUSH2 0x2A30 DUP11 DUP7 DUP7 DUP5 PUSH2 0x3A40 JUMP JUMPDEST PUSH2 0x2A3C DUP10 DUP5 DUP5 DUP5 PUSH2 0x3A40 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP11 PUSH1 0x40 MLOAD PUSH2 0x2A7F SWAP2 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2AD7 SWAP3 SWAP2 SWAP1 PUSH2 0x5663 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 SLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2B13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 DUP3 ISZERO PUSH2 0xD0D JUMPI PUSH1 0x0 DUP1 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x78D849ED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B83 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2BA7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4637 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x29D5277C SWAP4 PUSH2 0x2BE0 SWAP4 DUP13 SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C0B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2C2F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B6D JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x2C43 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST PUSH2 0x2C5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A24 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C75 DUP3 PUSH2 0xDFA DUP9 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A515777 PUSH1 0xE2 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x69455DDC SWAP4 PUSH2 0x2CB8 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 DUP14 SWAP2 DUP9 SWAP2 ADD PUSH2 0x56DD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CE4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2D08 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ PUSH2 0x2D28 JUMPI PUSH2 0x2D25 DUP8 PUSH2 0xDFA DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x2D38 DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF SLOAD TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x2653 JUMPI PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x740FF7D PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0xE81FEFA0 SWAP4 PUSH2 0x2D94 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x568B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP6 AND PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2E0A PUSH8 0xDE0B6B3A7640000 PUSH2 0xDFA DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2E1F DUP2 PUSH2 0x2E1A PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST PUSH2 0x38C7 JUMP JUMPDEST SWAP2 POP PUSH2 0x2E2F DUP3 PUSH3 0x24EA00 DUP4 PUSH2 0x3AF6 JUMP JUMPDEST SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E44 PUSH2 0x2A97 JUMP JUMPDEST PUSH2 0x2E4C PUSH2 0x27B3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD GT DUP1 ISZERO SWAP1 PUSH2 0x2E6B JUMPI POP PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST PUSH2 0x2E87 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5944 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EAD JUMPI PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x2EBB DUP8 DUP8 DUP8 DUP13 PUSH2 0x3B57 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP3 POP PUSH2 0x2ED2 SWAP2 SWAP1 PUSH2 0x27E9 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP9 ISZERO PUSH2 0x2EF2 JUMPI PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x2EEC SWAP1 DUP11 PUSH2 0x3236 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 DUP10 ISZERO PUSH2 0x2EFE JUMPI POP PUSH1 0x1 JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2F17 SWAP3 SWAP2 SWAP1 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x585314CF DUP5 DUP4 DUP16 DUP7 DUP16 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F8F SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5822 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2FBB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2FE0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B6D JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0x20 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x3008 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5994 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF06A9C6B SWAP2 PUSH2 0x303B SWAP2 PUSH1 0x4 ADD PUSH2 0x568B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3055 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3069 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP7 PUSH1 0x1 PUSH1 0x5 DUP2 LT PUSH2 0x307A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 SWAP1 SWAP8 ADD MLOAD SWAP7 SWAP13 SWAP7 SWAP12 POP SWAP6 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x30A4 DUP4 PUSH2 0x3D8C JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x3142 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x30EF SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x311B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x313F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x316B SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x317F DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x318D DUP8 DUP7 DUP9 DUP8 PUSH2 0x3E96 JUMP JUMPDEST POP PUSH2 0x319A DUP8 DUP4 DUP4 DUP8 PUSH2 0x3A40 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0xE0A JUMPI PUSH1 0x0 PUSH2 0x31B6 PUSH2 0x3667 JUMP JUMPDEST POP SWAP1 POP PUSH2 0xF37 DUP4 PUSH2 0xDFA PUSH2 0x16D PUSH2 0xDEE DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x31EB JUMPI POP PUSH1 0x0 PUSH2 0x10EA JUMP JUMPDEST POP DUP4 SLOAD PUSH2 0x1D0D DUP2 PUSH2 0x322A PUSH8 0xDE0B6B3A7640000 PUSH2 0x321E DUP9 PUSH2 0x3212 DUP10 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3FB7 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3FFD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x4068 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x40CC AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3A14 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3288 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xEFF JUMPI PUSH2 0x1B86 DUP3 PUSH2 0xDFA DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x32E1 SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x56C2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x330D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3331 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x334D PUSH2 0x3340 CALLER PUSH2 0x1A8F JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST LT ISZERO PUSH2 0x336B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5924 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x344B JUMPI DUP3 DUP2 LT ISZERO PUSH2 0x33E4 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x33AD SWAP1 ADDRESS SWAP1 DUP6 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x57BC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x344B JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x3418 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x57BC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3446 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xE06 DUP4 JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x346F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59F4 JUMP JUMPDEST PUSH2 0x3478 CALLER PUSH2 0x1A8F JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x34AC JUMPI PUSH1 0x0 NOT DUP3 EQ PUSH2 0x34A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59B4 JUMP JUMPDEST PUSH2 0x34A9 CALLER PUSH2 0x1A8F JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x34B4 PUSH2 0x2D44 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34C3 PUSH2 0x1C8B PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34E3 PUSH8 0xDE0B6B3A7640000 PUSH2 0xDFA DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34EF PUSH2 0x27B3 JUMP JUMPDEST SWAP1 POP DUP2 SWAP4 POP DUP1 DUP5 GT ISZERO PUSH2 0x3514 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5934 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x35AD JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x355A SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x56C2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3586 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x35AA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x35CD SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x35E1 DUP3 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3236 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x35EF CALLER DUP10 DUP10 DUP10 PUSH2 0x4112 JUMP JUMPDEST POP PUSH2 0x35FC CALLER DUP4 DUP4 DUP10 PUSH2 0x3A40 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3661 SWAP1 DUP6 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3629 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x57A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE DUP4 PUSH2 0x4237 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD1979FB PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD1979FB0 SWAP4 PUSH2 0x36A9 SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x36C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x36D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x36F9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4CB6 JUMP JUMPDEST POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP PUSH2 0x372C SWAP2 POP PUSH9 0x56BC75E2D63100000 SWAP1 POP PUSH2 0xDFA PUSH2 0x371F DUP3 DUP6 PUSH2 0x3236 JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP2 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x0 SWAP1 DUP1 PUSH2 0x3746 JUMPI PUSH1 0xE SLOAD PUSH2 0xE06 JUMP JUMPDEST PUSH2 0xE06 DUP2 PUSH2 0xDFA DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x37AB JUMPI PUSH1 0xF SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x378D JUMPI PUSH2 0x3789 PUSH2 0x3667 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x379B DUP3 PUSH2 0xDE2 PUSH2 0x27B3 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x37A9 JUMPI DUP1 SWAP4 POP JUMPDEST POP JUMPDEST PUSH2 0xE06 DUP4 PUSH2 0x2E1A DUP4 PUSH2 0x288A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37C8 DUP4 DUP4 PUSH2 0x3098 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH2 0x37E4 SWAP1 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP1 PUSH2 0x28C4 JUMP JUMPDEST POP PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x36305CF1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD8C173C4 SWAP1 PUSH2 0x3817 SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x57A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3831 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x319A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x386B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58D4 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x38DF PUSH2 0x38D9 DUP6 PUSH2 0xDE2 PUSH2 0xF9A JUMP JUMPDEST DUP5 PUSH2 0x3278 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD PUSH1 0xB SLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP3 DUP9 LT ISZERO PUSH2 0x3906 JUMPI DUP3 SWAP8 POP JUMPDEST DUP2 DUP9 GT ISZERO PUSH2 0x3979 JUMPI SWAP7 DUP2 SWAP1 SUB SWAP7 PUSH9 0x56BC75E2D63100000 DUP3 SWAP1 SUB DUP1 DUP10 GT ISZERO PUSH2 0x392C JUMPI DUP1 SWAP9 POP JUMPDEST PUSH2 0x394D PUSH9 0x56BC75E2D63100000 PUSH2 0xDFA DUP6 PUSH2 0xDEE DUP10 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP7 POP PUSH2 0x3971 DUP8 PUSH2 0xDE2 DUP4 PUSH2 0xDFA PUSH2 0x3964 DUP8 DUP14 PUSH2 0x3236 JUMP JUMPDEST DUP15 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP10 POP POP PUSH2 0x39CF JUMP JUMPDEST PUSH2 0x399A DUP6 PUSH2 0xDE2 PUSH9 0x56BC75E2D63100000 PUSH2 0xDFA DUP13 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP9 POP SWAP4 SWAP6 POP DUP6 SWAP4 PUSH2 0x39B1 DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP6 POP DUP7 DUP10 LT ISZERO PUSH2 0x39C3 JUMPI DUP7 SWAP9 POP PUSH2 0x39CF JUMP JUMPDEST DUP6 DUP10 GT ISZERO PUSH2 0x39CF JUMPI DUP6 SWAP9 POP JUMPDEST POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x39FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP2 SWAP1 PUSH2 0x5893 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x3A0A JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3A38 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP2 SWAP1 PUSH2 0x5893 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3A76 SWAP1 DUP7 SWAP1 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 SWAP1 PUSH1 0x20 ADD PUSH2 0x563D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 EQ ISZERO PUSH2 0x3AA2 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x3AD3 JUMP JUMPDEST DUP5 ISZERO PUSH2 0x3AD3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3AD0 SWAP1 DUP4 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x31DC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B11 PUSH4 0x1E13380 PUSH2 0xDFA DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3B2E PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3236 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3B4D DUP2 PUSH2 0xDFA DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x0 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 PUSH2 0x100 SWAP1 DIV DUP2 AND SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP12 AND DUP6 EQ ISZERO PUSH2 0x3BAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A04 JUMP JUMPDEST CALLVALUE SWAP7 POP DUP8 ISZERO PUSH2 0x3C0B JUMPI PUSH2 0x3BD1 DUP6 DUP6 DUP11 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3607 JUMP JUMPDEST DUP8 DUP4 GT ISZERO PUSH2 0x3C06 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x3C06 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP12 DUP8 SUB SWAP1 PUSH2 0x3607 JUMP JUMPDEST PUSH2 0x3C40 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3237 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3C40 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH2 0x3607 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3D43 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x3C66 JUMPI POP DUP7 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3C72 JUMPI POP DUP1 DUP8 LT ISZERO JUMPDEST ISZERO PUSH2 0x3D0C JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3CB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3CC6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x32382D61 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3D02 SWAP5 POP DUP16 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP5 SWAP1 PUSH2 0x3607 JUMP JUMPDEST DUP1 DUP8 SUB SWAP7 POP PUSH2 0x3D43 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x191C16B1 PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3D43 SWAP2 DUP14 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH2 0x42F5 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3D7E JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3239 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3D7E SWAP2 DUP8 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x42F5 JUMP JUMPDEST POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x3DAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59C4 JUMP JUMPDEST PUSH2 0x3DB4 PUSH2 0x2D44 JUMP JUMPDEST PUSH2 0x3DC1 PUSH2 0x1C8B PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST SWAP1 POP PUSH2 0x3DDF DUP2 PUSH2 0xDFA DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x3E27 JUMPI PUSH2 0x3E22 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP PUSH2 0x42F5 JUMP JUMPDEST PUSH2 0x3E91 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3E8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3EBE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3EE7 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH2 0x3F18 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xB4C03061FB5B7FED76389D5AF8F2E0DDB09F8C70D1333ABBB62582835E10ACCB SWAP1 PUSH2 0x3F5A SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x5AA2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3FA6 SWAP2 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x3FCC JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x3FE1 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3FE1 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0xD0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A54 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x400C JUMPI POP PUSH1 0x0 PUSH2 0xEFF JUMP JUMPDEST DUP3 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x4020 JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ JUMPDEST ISZERO PUSH2 0x403D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A14 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x404A JUMPI INVALID JUMPDEST SDIV EQ PUSH2 0xD0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A14 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x4087 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A84 JUMP JUMPDEST DUP2 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x409B JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP4 EQ JUMPDEST ISZERO PUSH2 0x40B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5964 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x40C3 JUMPI INVALID JUMPDEST SDIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x40E1 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x40F6 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x40F6 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0xD0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD DUP3 SWAP2 PUSH2 0x415A SWAP2 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3A14 AND JUMP JUMPDEST SWAP1 POP PUSH1 0xA DUP2 GT PUSH2 0x417B JUMPI PUSH2 0x4174 DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD PUSH2 0x41A9 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x3236 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0x743033787F4738FF4D6A7225CE2BD0977EE5F86B91A902A58F5E4D0B297B4644 SWAP1 PUSH2 0x41EB SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x5AA2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3FA6 SWAP2 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x4253 SWAP2 SWAP1 PUSH2 0x567F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4290 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4295 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP4 SWAP1 PUSH2 0x42BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP2 SWAP1 PUSH2 0x5893 JUMP JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x2206 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x42D6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4855 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0xF86 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP2 SWAP1 PUSH2 0x5893 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2206 SWAP1 DUP7 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x3629 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0x56DD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xEFF DUP2 PUSH2 0x5C11 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xEFF DUP2 PUSH2 0x5C11 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x437D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x43AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x43C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x43D7 PUSH2 0x43D2 DUP3 PUSH2 0x5AF1 JUMP JUMPDEST PUSH2 0x5ACB JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x43FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x319A JUMPI DUP2 PUSH2 0x4412 DUP9 DUP3 PUSH2 0x44BD JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x43FF JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4447 PUSH2 0x43D2 DUP3 PUSH2 0x5AF1 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x446D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x319A JUMPI DUP2 PUSH2 0x4483 DUP9 DUP3 PUSH2 0x4558 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4470 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xEFF DUP2 PUSH2 0x5C25 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xEFF DUP2 PUSH2 0x5C25 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xEFF DUP2 PUSH2 0x5C2E JUMP JUMPDEST DUP1 MLOAD PUSH2 0xEFF DUP2 PUSH2 0x5C2E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x44DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x43AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x451A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4528 PUSH2 0x43D2 DUP3 PUSH2 0x5B11 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x4544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x454F DUP4 DUP3 DUP5 PUSH2 0x5B97 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x456B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4576 PUSH2 0x100 PUSH2 0x5ACB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4584 DUP5 DUP5 PUSH2 0x44B2 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x4595 DUP5 DUP5 DUP4 ADD PUSH2 0x449C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x45A9 DUP5 DUP3 DUP6 ADD PUSH2 0x4355 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x45BD DUP5 DUP3 DUP6 ADD PUSH2 0x4355 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x45D1 DUP5 DUP3 DUP6 ADD PUSH2 0x4355 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x45E5 DUP5 DUP3 DUP6 ADD PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x45F9 DUP5 DUP3 DUP6 ADD PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x460D DUP5 DUP3 DUP6 ADD PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x462B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH2 0x4355 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH2 0x4360 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4674 DUP6 DUP6 PUSH2 0x4355 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4685 DUP6 DUP3 DUP7 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x46A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46B0 DUP7 DUP7 PUSH2 0x4355 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x46C1 DUP7 DUP3 DUP8 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x46D2 DUP7 DUP3 DUP8 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46FB DUP6 DUP6 PUSH2 0x4355 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4685 DUP6 DUP3 DUP7 ADD PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x472D DUP7 DUP7 PUSH2 0x4355 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x473E DUP7 DUP3 DUP8 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x46D2 DUP7 DUP3 DUP8 ADD PUSH2 0x449C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x477B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4787 DUP8 DUP3 DUP9 ADD PUSH2 0x436B JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47B1 DUP8 DUP3 DUP9 ADD PUSH2 0x436B JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10EA DUP5 DUP3 DUP6 ADD PUSH2 0x43B3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x481A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4826 DUP6 DUP3 DUP7 ADD PUSH2 0x4428 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4685 DUP6 DUP3 DUP7 ADD PUSH2 0x449C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH2 0x449C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH2 0x44A7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4890 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x489C DUP12 DUP12 PUSH2 0x44B2 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x48AD DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x48BE DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x48CF DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x48E0 DUP12 DUP3 DUP13 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x48F1 DUP12 DUP3 DUP13 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x4902 DUP12 DUP3 DUP13 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x491E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x492A DUP12 DUP3 DUP13 ADD PUSH2 0x4509 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x495A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4966 DUP14 DUP14 PUSH2 0x44B2 JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x4977 DUP14 DUP3 DUP15 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x4988 DUP14 DUP3 DUP15 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x4999 DUP14 DUP3 DUP15 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x49AA DUP14 DUP3 DUP15 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x49BB DUP14 DUP3 DUP15 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x49CC DUP14 DUP3 DUP15 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x49DD DUP14 DUP3 DUP15 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A06 DUP14 DUP3 DUP15 ADD PUSH2 0x44C8 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4A37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4A43 DUP12 DUP12 PUSH2 0x44B2 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x4A54 DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x4A65 DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x4A76 DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x4A87 DUP12 DUP3 DUP13 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x4A98 DUP12 DUP3 DUP13 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x4902 DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4ABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4AD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10EA DUP5 DUP3 DUP6 ADD PUSH2 0x4509 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4AF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4B06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4826 DUP6 DUP3 DUP7 ADD PUSH2 0x4509 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH2 0x44BD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46FB DUP6 DUP6 PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4B8C DUP6 DUP6 PUSH2 0x44BD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4685 DUP6 DUP3 DUP7 ADD PUSH2 0x44BD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4BB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4BBE DUP7 DUP7 PUSH2 0x44B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4BCF DUP7 DUP3 DUP8 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x46D2 DUP7 DUP3 DUP8 ADD PUSH2 0x4355 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4BF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C02 DUP8 DUP8 PUSH2 0x44B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4C13 DUP8 DUP3 DUP9 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4C24 DUP8 DUP3 DUP9 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4C35 DUP8 DUP3 DUP9 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4C59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C65 DUP9 DUP9 PUSH2 0x44B2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4C76 DUP9 DUP3 DUP10 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4C87 DUP9 DUP3 DUP10 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4C98 DUP9 DUP3 DUP10 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x4CA9 DUP9 DUP3 DUP10 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4CCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4CDB DUP10 DUP10 PUSH2 0x44BD JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x4CEC DUP10 DUP3 DUP11 ADD PUSH2 0x44BD JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x4CFD DUP10 DUP3 DUP11 ADD PUSH2 0x44BD JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x4D0E DUP10 DUP3 DUP11 ADD PUSH2 0x44BD JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x4D1F DUP10 DUP3 DUP11 ADD PUSH2 0x44BD JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x4D30 DUP10 DUP3 DUP11 ADD PUSH2 0x44BD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4D58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4D64 DUP11 DUP11 PUSH2 0x44B2 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x4D75 DUP11 DUP3 DUP12 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x4D86 DUP11 DUP3 DUP12 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x4D97 DUP11 DUP3 DUP12 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x4DA8 DUP11 DUP3 DUP12 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x4DB9 DUP11 DUP3 DUP12 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x4DCA DUP11 DUP3 DUP12 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DE5 DUP4 DUP4 PUSH2 0x4E1D JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DE5 DUP4 DUP4 PUSH2 0x4F90 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E05 DUP4 DUP4 PUSH2 0x5577 JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x4E17 DUP2 PUSH2 0x5B86 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4E17 DUP2 PUSH2 0x5B57 JUMP JUMPDEST PUSH2 0x4E17 PUSH2 0x4E32 DUP3 PUSH2 0x5B57 JUMP JUMPDEST PUSH2 0x5BCF JUMP JUMPDEST PUSH2 0x4E40 DUP2 PUSH2 0x5B3E JUMP JUMPDEST PUSH2 0x4E4A DUP2 DUP5 PUSH2 0xE0A JUMP JUMPDEST SWAP3 POP PUSH2 0x4E55 DUP3 PUSH2 0xF17 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF86 JUMPI DUP2 MLOAD PUSH2 0x4E6D DUP8 DUP3 PUSH2 0x4DD9 JUMP JUMPDEST SWAP7 POP PUSH2 0x4E78 DUP4 PUSH2 0x5B38 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4E59 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E8E DUP3 PUSH2 0x5B44 JUMP JUMPDEST PUSH2 0x4E98 DUP2 DUP6 PUSH2 0x5B4E JUMP JUMPDEST SWAP4 POP PUSH2 0x4EA3 DUP4 PUSH2 0x5B38 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4ED1 JUMPI DUP2 MLOAD PUSH2 0x4EBB DUP9 DUP3 PUSH2 0x4DED JUMP JUMPDEST SWAP8 POP PUSH2 0x4EC6 DUP4 PUSH2 0x5B38 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4EA7 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EE7 DUP3 PUSH2 0x5B44 JUMP JUMPDEST PUSH2 0x4EF1 DUP2 DUP6 PUSH2 0x5B4E JUMP JUMPDEST SWAP4 POP PUSH2 0x4EFC DUP4 PUSH2 0x5B38 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4ED1 JUMPI DUP2 MLOAD PUSH2 0x4F14 DUP9 DUP3 PUSH2 0x4DF9 JUMP JUMPDEST SWAP8 POP PUSH2 0x4F1F DUP4 PUSH2 0x5B38 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4F00 JUMP JUMPDEST PUSH2 0x4F33 DUP2 PUSH2 0x5B48 JUMP JUMPDEST PUSH2 0x4F3D DUP2 DUP5 PUSH2 0xE0A JUMP JUMPDEST SWAP3 POP PUSH2 0x4F48 DUP3 PUSH2 0xF17 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF86 JUMPI DUP2 MLOAD PUSH2 0x4F60 DUP8 DUP3 PUSH2 0x4DED JUMP JUMPDEST SWAP7 POP PUSH2 0x4F6B DUP4 PUSH2 0x5B38 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4F4C JUMP JUMPDEST PUSH2 0x4E17 DUP2 PUSH2 0x5B62 JUMP JUMPDEST PUSH2 0x4E17 PUSH2 0x4F8B DUP3 PUSH2 0x5B62 JUMP JUMPDEST PUSH2 0x5BDA JUMP JUMPDEST PUSH2 0x4E17 DUP2 PUSH2 0xF17 JUMP JUMPDEST PUSH2 0x4E17 PUSH2 0x4FA5 DUP3 PUSH2 0xF17 JUMP JUMPDEST PUSH2 0xF17 JUMP JUMPDEST PUSH2 0x4E17 PUSH2 0x4FA5 DUP3 PUSH2 0x5B67 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FC1 DUP3 PUSH2 0x5B44 JUMP JUMPDEST PUSH2 0x4FCB DUP2 DUP6 PUSH2 0x5B4E JUMP JUMPDEST SWAP4 POP PUSH2 0x4FDB DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5BA3 JUMP JUMPDEST PUSH2 0x4FE4 DUP2 PUSH2 0x5BFB JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FF9 DUP3 PUSH2 0x5B44 JUMP JUMPDEST PUSH2 0x5003 DUP2 DUP6 PUSH2 0xE0A JUMP JUMPDEST SWAP4 POP PUSH2 0x5013 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5BA3 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x502A PUSH1 0xC DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH12 0x636F6C6C20746F6F206C6F77 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5052 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5070 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x508E PUSH1 0x26 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50D6 PUSH1 0x1B DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x510F PUSH1 0x21 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5152 PUSH1 0xE DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x517C PUSH1 0x1 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5199 PUSH1 0x12 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH18 0x6E6F7420656E6F7567682062616C616E6365 PUSH1 0x70 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51C7 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51E5 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5203 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5221 PUSH1 0x21 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5264 PUSH1 0x15 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5295 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B3 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52D1 PUSH1 0xF DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52FC PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x531A PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5338 PUSH1 0x21 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x537B PUSH1 0xC DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53A3 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53C1 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53DF PUSH1 0x27 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206D756C7469706C69636174696F6E206F DUP2 MSTORE PUSH7 0x766572666C6F77 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5428 PUSH1 0x1D DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x696E76616C6964207261746520636F6C6C61746572616C20746F6B656E000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5461 PUSH1 0xA DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH10 0x37B7363CA830BAB9B2B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5487 PUSH1 0xC DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54AF PUSH1 0x24 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 DUP2 MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54F5 PUSH1 0x18 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x34303120757365206F66206578697374696E67206C6F616E0000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x552E PUSH1 0x1 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x554B PUSH1 0x20 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206279207A65726F DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x5589 DUP5 DUP3 PUSH2 0x4F90 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x559C PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4F76 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x55AF PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4E1D JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x55C2 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4E1D JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x55D5 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x4E1D JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x55E8 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4F90 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x55FB PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x4F90 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x3661 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x4E17 DUP2 PUSH2 0x5B80 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5623 DUP3 DUP6 PUSH2 0x4E26 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x5633 DUP3 DUP5 PUSH2 0x4F7F JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5649 DUP3 DUP6 PUSH2 0x4E26 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x5659 DUP3 DUP5 PUSH2 0x4F99 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x566F DUP3 DUP6 PUSH2 0x4FAA JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x5659 DUP3 DUP5 PUSH2 0x4F99 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0D DUP3 DUP5 PUSH2 0x4FEE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEFF DUP3 DUP5 PUSH2 0x4E1D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEFF DUP3 DUP5 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x56B5 DUP3 DUP6 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0xD0D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4E1D JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x56D0 DUP3 DUP6 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0xD0D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x56EB DUP3 DUP7 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x56F8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x10EA PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4F90 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x5713 DUP3 DUP9 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x5720 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x572D PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x573A PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x3B4D PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x5755 DUP3 DUP10 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x5762 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x576F PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x577C PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x5789 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x5796 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4F90 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x57AF DUP3 DUP6 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0xD0D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4F90 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x57CA DUP3 DUP7 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x57D7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x10EA PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD0D DUP2 DUP5 PUSH2 0x4E83 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD0D DUP2 DUP5 PUSH2 0x4EDC JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEFF DUP3 DUP5 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEFF DUP3 DUP5 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x1C0 DUP2 ADD PUSH2 0x5831 DUP3 DUP11 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x583E PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x584B PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4F76 JUMP JUMPDEST PUSH2 0x5858 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x5865 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4E37 JUMP JUMPDEST PUSH2 0x5873 PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4F2A JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x1A0 DUP4 ADD MSTORE PUSH2 0x5886 DUP2 DUP5 PUSH2 0x4FB6 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD0D DUP2 DUP5 PUSH2 0x4FB6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x501D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5045 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5063 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5081 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x50C9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5102 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5145 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x516F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x518C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x51BA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x51D8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x51F6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5214 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5257 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5288 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x52A6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x52C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x52EF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x530D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x532B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x536E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5396 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x53B4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x53D2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x541B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5454 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x547A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x54A2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x54E8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5521 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x553E JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x57AF DUP3 DUP6 PUSH2 0x4F90 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x5AB0 DUP3 DUP7 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x56F8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4F90 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEFF DUP3 DUP5 PUSH2 0x560E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5AE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5B07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST POP PUSH1 0x4 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x5 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x5B74 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x5B57 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5BBE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5BA6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x3661 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x5BE5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x5BF0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x5C0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x5C05 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x5C1A DUP2 PUSH2 0x5B57 JUMP JUMPDEST DUP2 EQ PUSH2 0x2653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5C1A DUP2 PUSH2 0x5B62 JUMP JUMPDEST PUSH2 0x5C1A DUP2 PUSH2 0xF17 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xC7 ORIGIN LT 0xBF 0xED 0x5F SWAP14 0xC3 BLOCKHASH 0xD9 0xBB PUSH14 0x509064E47607585D837100B09C7A 0xCB 0x22 ADDRESS 0xC 0xC4 SWAP7 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "215:704:110:-;;;493:1:143;661:55;;;;697:12:142;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;215:704:110;;780:87:137;853:10;780:87;:::o;215:704:110:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106103ef5760003560e01c80637ff9b59611610208578063cb926cb311610118578063e41b07e3116100ab578063f06a9c6b1161007a578063f06a9c6b14610aee578063f2fde38b14610b0e578063f6b69f9914610b2e578063f851a44014610b41578063ffa1ad7414610b56576103ef565b8063e41b07e314610a79578063e697d2ee14610a99578063eebc508114610ab9578063ef2b0b3914610ad9576103ef565b8063d8f06c83116100e7578063d8f06c83146109f9578063d97206a414610a19578063dd62ed3e14610a39578063e3cded6114610a59576103ef565b8063cb926cb314610984578063d1a1beb4146109a4578063d65a5021146109c4578063d759dbeb146109e4576103ef565b80639bda3a981161019b578063b9fe1a8f1161016a578063b9fe1a8f146108fa578063ba0e43bf1461091a578063be1942171461092f578063c9ddf4481461094f578063ca37e6661461096f576103ef565b80639bda3a98146108905780639dc29fac146108a55780639fd0506d146108c5578063a9059cbb146108da576103ef565b80638ee6c4e6116101d75780638ee6c4e61461083c5780638f32d59b146108515780638fb807c51461086657806395d89b411461087b576103ef565b80637ff9b596146107dd578063829b38f4146107f25780638325a1c0146108125780638da5cb5b14610827576103ef565b8063313ce56711610303578063631a3ef8116102965780637288b344116102655780637288b3441461075e57806376fd4fdf1461077e578063797bf3851461079e5780637b7933b4146107b35780637e37c08c146107c8576103ef565b8063631a3ef8146106cf5780636b40cd40146106ef578063704b6c021461071e57806370a082311461073e576103ef565b806344a4a003116102d257806344a4a0031461067057806354198ce91461068557806356e07d70146106a5578063612ef80b146106ba576103ef565b8063313ce567146105f95780633291c11a1461061b578063330691ac1461063b57806340c10f1914610650576103ef565b806318498b1d1161038657806323b872dd1161035557806323b872dd1461057057806328a02f19146105905780632d88af4a146105b15780632ea295fa146105d15780632f6b600d146105e4576103ef565b806318498b1d1461050f5780631d0806ae146105315780631f68f20a1461054657806320f6d07c1461055b576103ef565b8063095ea7b3116103c2578063095ea7b31461049857806309ec6b6b146104c557806312416898146104da57806318160ddd146104fa576103ef565b806304797930146103fe57806306947a3a1461043457806306b3efd61461045657806306fdde0314610476575b3480156103fb57600080fd5b50005b34801561040a57600080fd5b5061041e610419366004614b9d565b610b6b565b60405161042b9190615814565b60405180910390f35b34801561044057600080fd5b50610449610d14565b60405161042b919061568b565b34801561046257600080fd5b5061041e610471366004614619565b610d23565b34801561048257600080fd5b5061048b610e0f565b60405161042b9190615893565b3480156104a457600080fd5b506104b86104b33660046146dc565b610e9a565b60405161042b9190615806565b3480156104d157600080fd5b5061041e610f05565b3480156104e657600080fd5b5061041e6104f5366004614b12565b610f1a565b34801561050657600080fd5b5061041e610f45565b34801561051b57600080fd5b5061052f61052a366004614c41565b610f4b565b005b34801561053d57600080fd5b5061041e610f8e565b34801561055257600080fd5b5061041e610f94565b34801561056757600080fd5b5061041e610f9a565b34801561057c57600080fd5b506104b861058b36600461468f565b611029565b6105a361059e366004614a1a565b6110f2565b60405161042b929190615a94565b3480156105bd57600080fd5b5061052f6105cc366004614619565b611317565b6105a36105df366004614873565b61135d565b3480156105f057600080fd5b5061044961163d565b34801561060557600080fd5b5061060e61164c565b60405161042b9190615abd565b34801561062757600080fd5b5061041e610636366004614b12565b611655565b34801561064757600080fd5b5061041e611667565b34801561065c57600080fd5b5061041e61066b3660046146dc565b61166d565b34801561067c57600080fd5b5061041e6116ae565b34801561069157600080fd5b5061041e6106a0366004614619565b6116c0565b3480156106b157600080fd5b5061041e611761565b3480156106c657600080fd5b5061041e611767565b3480156106db57600080fd5b5061041e6106ea366004614b9d565b611798565b3480156106fb57600080fd5b5061070f61070a366004614be0565b611938565b60405161042b93929190615aa2565b34801561072a57600080fd5b5061052f610739366004614619565b611a49565b34801561074a57600080fd5b5061041e610759366004614619565b611a8f565b34801561076a57600080fd5b5061041e610779366004614b4e565b611aaa565b34801561078a57600080fd5b5061041e61079936600461470c565b611b8d565b3480156107aa57600080fd5b50610449611c38565b3480156107bf57600080fd5b5061041e611c4c565b3480156107d457600080fd5b5061041e611c52565b3480156107e957600080fd5b5061041e611c58565b3480156107fe57600080fd5b5061041e61080d366004614b12565b611c96565b34801561081e57600080fd5b5061041e611d16565b34801561083357600080fd5b50610449611d22565b34801561084857600080fd5b50610449611d31565b34801561085d57600080fd5b506104b8611d40565b34801561087257600080fd5b5061041e611d66565b34801561088757600080fd5b5061048b611d96565b34801561089c57600080fd5b50610449611df1565b3480156108b157600080fd5b5061041e6108c03660046146dc565b611e00565b3480156108d157600080fd5b50610449611e74565b3480156108e657600080fd5b506104b86108f53660046146dc565b611e83565b34801561090657600080fd5b5061041e610915366004614b12565b611e93565b34801561092657600080fd5b5061041e611e9e565b34801561093b57600080fd5b506104b861094a366004614aa9565b611ea4565b34801561095b57600080fd5b5061052f61096a366004614655565b611f26565b34801561097b57600080fd5b50610449611f86565b34801561099057600080fd5b5061052f61099f366004614619565b611f95565b3480156109b057600080fd5b5061041e6109bf36600461470c565b611fdb565b3480156109d057600080fd5b5061041e6109df366004614b12565b612025565b3480156109f057600080fd5b5061041e612038565b348015610a0557600080fd5b5061052f610a143660046147f1565b61203e565b348015610a2557600080fd5b5061052f610a34366004614d3d565b61220d565b348015610a4557600080fd5b5061041e610a54366004614655565b612314565b348015610a6557600080fd5b5061052f610a74366004614add565b61233f565b348015610a8557600080fd5b5061041e610a94366004614619565b6123e4565b348015610aa557600080fd5b5061052f610ab436600461474f565b6123f6565b348015610ac557600080fd5b5061041e610ad4366004614619565b6125a7565b348015610ae557600080fd5b5061041e6125c2565b348015610afa57600080fd5b5061052f610b09366004614619565b6125c8565b348015610b1a57600080fd5b5061052f610b29366004614619565b612626565b6105a3610b3c36600461493a565b612656565b348015610b4d57600080fd5b50610449612726565b348015610b6257600080fd5b5061041e612735565b60008315610d0d576001600160a01b038216610b90576017546001600160a01b031691505b600060106000846001604051602001610baa929190615617565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506001600160a01b039182169363e762319f936101009091049092169187918a91869163ca74a5d991610c1b918a9101615814565b60206040518083038186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c6b9190810190614b30565b60016040518663ffffffff1660e01b8152600401610c8d959493929190615705565b60206040518083038186803b158015610ca557600080fd5b505afa158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cdd9190810190614b30565b9150610cf182610ceb611d66565b8661273a565b9350610cff91506127b39050565b821115610d0b57600091505b505b9392505050565b6016546001600160a01b031681565b601c5460009081906001600160a01b031615610dbe57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690610d6b90309087906004016156a7565b60206040518083038186803b158015610d8357600080fd5b505afa158015610d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dbb9190810190614b30565b90505b610e06670de0b6b3a7640000610dfa610dd5611c58565b610dee85610de289611a8f565b9063ffffffff6127e916565b9063ffffffff61280e16565b9063ffffffff61284816565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610e925780601f10610e6757610100808354040283529160200191610e92565b820191906000526020600020905b815481529060010190602001808311610e7557829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ef3908690615814565b60405180910390a35060015b92915050565b6000610f146104f5600061288a565b90505b90565b600080610f25610f9a565b90508015610f3f57610f378184611aaa565b915050610e0a565b50919050565b60155490565b6000610f5986868686611938565b5091505081811015610f865760405162461bcd60e51b8152600401610f7d906158a4565b60405180910390fd5b505050505050565b600e5481565b60055481565b6016546004805460405163250f447f60e11b81526000936001600160a01b0390811693634a1e88fe93610fd993309361010090920490911691016156a7565b60206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f149190810190614b30565b60165460405163115dd4b160e01b81526000916110ea918691869186916001600160a01b03169063115dd4b190611064903390600401615699565b60206040518083038186803b15801561107c57600080fd5b505afa158015611090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110b49190810190614855565b6110e1576001600160a01b03881660009081526014602090815260408083203384529091529020546110e5565b6000195b6128c4565b949350505050565b6000806001600054146111175760405162461bcd60e51b8152600401610f7d90615a44565b6002600055611124612a97565b6111318989898988610f4b565b6001600160a01b03861661114e576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156111815760405162461bcd60e51b8152600401610f7d90615954565b8915806111965750336001600160a01b038616145b6111b25760405162461bcd60e51b8152600401610f7d90615a64565b6001600160a01b038616600090815260126020526040902054156111f5576001600160a01b0386166000908152601260205260409020548711156111f557600080fd5b60045461010090046001600160a01b0316600090815260126020526040902054156112465760045461010090046001600160a01b031660009081526012602052604090205488111561124657600080fd5b600061125387898b612b17565b9050806112725760405162461bcd60e51b8152600401610f7d90615984565b61127a614319565b611282614337565b3082526001600160a01b038816602080840182905260408401919091528101839052606081018b9052608081018a90526112ba612d44565b6112cb8c8260016020020151612dea565b825260208201526112ec6f4b3b4ca85a86c47a098a2240000000008d612848565b9b506112fe8d60008e8c86868c612e39565b6001600055909e909d509b505050505050505050505050565b61131f611d40565b61133b5760405162461bcd60e51b8152600401610f7d906159e4565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806001600054146113825760405162461bcd60e51b8152600401610f7d90615a44565b6002600055886113a45760405162461bcd60e51b8152600401610f7d90615a74565b6113ac612a97565b6001600160a01b038616600090815260126020526040902054156113ef576001600160a01b0386166000908152601260205260409020548711156113ef57600080fd5b3415806113fb57508634145b801561140f57508615158061140f57508915155b801561143657506001600160a01b03861615158061142c57503415155b8061143657508915155b801561145257508915806114525750336001600160a01b038616145b61146e5760405162461bcd60e51b8152600401610f7d90615914565b6001600160a01b03861661148b576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156114be5760405162461bcd60e51b8152600401610f7d906158b4565b6114c6612d44565b6114ce614319565b6114d6614337565b3082526001600160a01b03878116602080850191909152908716604084015281018b905261150e8b611508600061288a565b8c61273a565b8360006020020184600260200201856001602002019290925291905252888160046020020181815250506116258c8c601660009054906101000a90046001600160a01b03166001600160a01b031663ca74a5d9601060008e6001604051602001611579929190615617565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020546040518263ffffffff1660e01b81526004016115bd9190615814565b60206040518083038186803b1580156115d557600080fd5b505afa1580156115e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061160d9190810190614b30565b8b868660405180602001604052806000815250612e39565b6001600055909d909c509a5050505050505050505050565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b60006001600054146116915760405162461bcd60e51b8152600401610f7d90615a44565b60026000556116a08383613098565b90505b600160005592915050565b6000610f146116bb610f9a565b6131a4565b600080827f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb660001b6040516020016116f992919061563d565b604051602081830303815290604052805190602001209050610e068160136000866001600160a01b03166001600160a01b0316815260200190815260200160002054611743611c58565b6001600160a01b0387166000908152601160205260409020546131dc565b600a5481565b600080611774600061288a565b90506000611780610f9a565b9050808211156117935790039050610f17565b505090565b60008315610d0d5760006117ae85610ceb611d66565b925050506117ba6127b3565b8111610d0b576001600160a01b0383166117dd576017546001600160a01b031692505b6000601060008560016040516020016117f7929190615617565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b815292945061192f93600a936001600160a01b03938416936325decac09361010090930416918a918991869163ca74a5d99161186d918c9101615814565b60206040518083038186803b15801561188557600080fd5b505afa158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118bd9190810190614b30565b60016040518663ffffffff1660e01b81526004016118df959493929190615705565b60206040518083038186803b1580156118f757600080fd5b505afa15801561190b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610de29190810190614b30565b92505050610d0d565b600080806001600160a01b038416611959576017546001600160a01b031693505b6000611966858789612b17565b90506119728882612dea565b909450915061197f6127b3565b841115611996575060009250829150819050611a3f565b6119a6878563ffffffff6127e916565b6016546004805460405163d67f707760e01b8152939a506001600160a01b039283169363d67f7077936119eb9361010090930416918a918d918d918a918d9101615747565b60206040518083038186803b158015611a0357600080fd5b505afa158015611a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a3b9190810190614b30565b9250505b9450945094915050565b611a51611d40565b611a6d5760405162461bcd60e51b8152600401610f7d906159e4565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60008215801590611abb5750828210155b15610eff57611b86701d6329f1c35ca4bfabb9f5610000000000610dfa611b7068056bc75e2d63100000601660009054906101000a90046001600160a01b03166001600160a01b0316634699f8466040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3357600080fd5b505afa158015611b47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b6b9190810190614b30565b613236565b610dee611b7d8888613278565b610dee896131a4565b9050610eff565b6000600160005414611bb15760405162461bcd60e51b8152600401610f7d90615a44565b60026000558115611bcc57611bc5836132aa565b9050611bd8565b611bd583613450565b90505b8015611c2c57611c2c600460019054906101000a90046001600160a01b0316858360405180604001604052806015815260200174185cdcd95d081d1c985b9cd9995c8819985a5b1959605a1b815250613607565b60016000559392505050565b60045461010090046001600160a01b031681565b600d5481565b60085481565b600f546000908190426001600160581b03908116911614611c7f57611c7b613667565b9150505b611c90611c8b8261288a565b613733565b91505090565b600080611cb561016d610dfa601c600b5461280e90919063ffffffff16565b90506000611cd268056bc75e2d631000008363ffffffff61323616565b90506000611cef68056bc75e2d63100000610dfa84610dee611767565b9050611d0d85610dfa83670de0b6b3a764000063ffffffff61280e16565b95945050505050565b6000610f146000613762565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316611d576137b8565b6001600160a01b031614905090565b600f546000908190426001600160581b03908116911614611d8d57611d89613667565b9150505b611c908161288a565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e925780601f10610e6757610100808354040283529160200191610e92565b6018546001600160a01b031681565b6000600160005414611e245760405162461bcd60e51b8152600401610f7d90615a44565b6002600055611e3282613450565b905080156116a3576116a3600460019054906101000a90046001600160a01b03168483604051806040016040528060018152602001603560f81b815250613607565b601b546001600160a01b031681565b6000610d0d3384846000196128c4565b6000610eff82613762565b60095481565b60008082604051602001611eb8919061567f565b6040516020818303038152906040528051906020012090506000817fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001611f05929190615663565b60408051808303601f19018152919052805160209091012054949350505050565b60165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf44890611f5890859085906004016156a7565b600060405180830381600087803b158015611f7257600080fd5b505af1158015610f86573d6000803e3d6000fd5b601a546001600160a01b031681565b611f9d611d40565b611fb95760405162461bcd60e51b8152600401610f7d906159e4565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000600160005414611fff5760405162461bcd60e51b8152600401610f7d90615a44565b6002600055811561201b5761201484846137bc565b9050611c2c565b6120148484613098565b6000610eff6104f583610de2600061288a565b60075481565b612046611d40565b8061205b57506019546001600160a01b031633145b6120775760405162461bcd60e51b8152600401610f7d906159e4565b60045460609061010090046001600160a01b031660005b845181101561210157818582815181106120a457fe5b6020026020010151606001906001600160a01b031690816001600160a01b031681525050836120d6576224ea006120d9565b60005b62ffffff168582815181106120ea57fe5b602090810291909101015160e0015260010161208e565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e906121329087906004016157f5565b600060405180830381600087803b15801561214c57600080fd5b505af1158015612160573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261218891908101906147bd565b915060005b8251811015612206578281815181106121a257fe5b6020026020010151601060008784815181106121ba57fe5b602002602001015160800151876040516020016121d8929190615617565b60408051601f198184030181529181528151602092830120835290820192909252016000205560010161218d565b5050505050565b612215611d40565b8061222a57506019546001600160a01b031633145b6122465760405162461bcd60e51b8152600401610f7d906159e4565b68056bc75e2d63100000612260878963ffffffff6127e916565b111561227e5760405162461bcd60e51b8152600401610f7d90615974565b68056bc75e2d63100000612298858763ffffffff6127e916565b11156122b65760405162461bcd60e51b8152600401610f7d90615974565b68056bc75e2d6310000083111580156122d8575068056bc75e2d631000008211155b6122f45760405162461bcd60e51b8152600401610f7d906159a4565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b031633146123695760405162461bcd60e51b8152600401610f7d90615a34565b60008260405160200161237c919061567f565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f26040516020016123c4929190615663565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b6123fe611d40565b8061241357506019546001600160a01b031633145b61242f5760405162461bcd60e51b8152600401610f7d906159e4565b82811461244e5760405162461bcd60e51b8152600401610f7d90615904565b60408051848152602080860282010190915260609084801561247a578160200160208202803883390190505b50905060005b8481101561253d57600086868381811061249657fe5b90506020020160206124ab9190810190614619565b8585848181106124b757fe5b90506020020160206124cc9190810190614837565b6040516020016124dd929190615617565b6040516020818303038152906040528051906020012060001c9050601060008281526020019081526020016000205483838151811061251857fe5b6020908102919091018101919091526000918252601090526040812055600101612480565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a9061256e9084906004016157e4565b600060405180830381600087803b15801561258857600080fd5b505af115801561259c573d6000803e3d6000fd5b505050505050505050565b6001600160a01b031660009081526011602052604090205490565b600b5481565b60165460405163f06a9c6b60e01b81526001600160a01b039091169063f06a9c6b906125f890849060040161568b565b600060405180830381600087803b15801561261257600080fd5b505af1158015612206573d6000803e3d6000fd5b61262e611d40565b61264a5760405162461bcd60e51b8152600401610f7d906159e4565b61265381613845565b50565b6000806001600160a01b038516156126cd5760165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf4489061269a908a9089906004016156a7565b600060405180830381600087803b1580156126b457600080fd5b505af11580156126c8573d6000803e3d6000fd5b505050505b6127138c8c8c8c8c8c8c8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110f292505050565b915091509a509a98505050505050505050565b6019546001600160a01b031681565b600681565b600080600061274986866138c7565b925061279661277e670de0b6b3a7640000611b6b6b0a3098c68eb9427db8000000610dfa83610dee8a8c63ffffffff61280e16565b610dfa88670de0b6b3a764000063ffffffff61280e16565b90506127a8818763ffffffff61323616565b915093509350939050565b600480546040516370a0823160e01b81526000926101009092046001600160a01b0316916370a0823191610fd99130910161568b565b600082820183811015610d0d5760405162461bcd60e51b8152600401610f7d906158e4565b60008261281d57506000610eff565b8282028284828161282a57fe5b0414610d0d5760405162461bcd60e51b8152600401610f7d906159d4565b6000610d0d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506139dd565b6000601554600014610e0a57600c54806128b4576128b16128a9610f9a565b610de26127b3565b90505b610f37818463ffffffff6127e916565b60006000198214612920576040805180820190915260028152610c4d60f21b60208201526128fb908390859063ffffffff613a1416565b6001600160a01b03861660009081526014602090815260408083203384529091529020555b6001600160a01b0384166129465760405162461bcd60e51b8152600401610f7d906158c4565b6001600160a01b03851660009081526013602090815260408083205481518083019092526002825261189b60f11b92820192909252909190612991908390879063ffffffff613a1416565b6001600160a01b038089166000908152601360205260408082208490559189168152908120549192506129ca828863ffffffff6127e916565b6001600160a01b03891660009081526013602052604081208290559091506129f0611c58565b601c549091506001600160a01b038b8116911614801590612a1f5750601c546001600160a01b038a8116911614155b15612a3c57612a308a868684613a40565b612a3c89848484613a40565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a604051612a7f9190615814565b60405180910390a35060019998505050505050505050565b600080356001600160e01b0319167fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001612ad7929190615663565b6040516020818303038152906040528051906020012090506000815490508015612b135760405162461bcd60e51b8152600401610f7d906159e4565b5050565b808215610d0d57600080601660009054906101000a90046001600160a01b03166001600160a01b03166378d849ed6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b6f57600080fd5b505afa158015612b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ba79190810190614637565b60048054604051630a7549df60e21b81526001600160a01b03938416936329d5277c93612be0938c9361010090910490921691016156a7565b604080518083038186803b158015612bf757600080fd5b505afa158015612c0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c2f9190810190614b6d565b9150915081600014158015612c4357508015155b612c5f5760405162461bcd60e51b8152600401610f7d90615a24565b6000612c7582610dfa888663ffffffff61280e16565b60165460048054604051631a51577760e21b81529394506000936001600160a01b03938416936369455ddc93612cb8936101009004909116918d918891016156dd565b60206040518083038186803b158015612cd057600080fd5b505afa158015612ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d089190810190614b30565b9050868114612d2857612d2587610dfa848463ffffffff61280e16565b91505b612d38828663ffffffff6127e916565b98975050505050505050565b600f5442906001600160581b038083169116146126535760165460048054604051630740ff7d60e51b81526001600160a01b039384169363e81fefa093612d94936101009004909116910161568b565b600060405180830381600087803b158015612dae57600080fd5b505af1158015612dc2573d6000803e3d6000fd5b5050600f80546001600160581b0385166affffffffffffffffffffff19909116179055505050565b60008080612e0a670de0b6b3a7640000610dfa868863ffffffff61280e16565b9050612e1f81612e1a600061288a565b6138c7565b9150612e2f826224ea0083613af6565b9250509250929050565b600080612e44612a97565b612e4c6127b3565b602085015111801590612e6b575060208501516001600160a01b031615155b612e875760405162461bcd60e51b8152600401610f7d90615944565b60408501516001600160a01b0316612ead5760208501516001600160a01b031660408601525b6000612ebb8787878c613b57565b60208601516060870151919250612ed291906127e9565b60608601528815612ef2576060850151612eec908a613236565b60608601525b60008915612efe575060015b6000601060008a84604051602001612f17929190615617565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020549050601660009054906101000a90046001600160a01b03166001600160a01b031663585314cf84838f868f8e8e8e6040518963ffffffff1660e01b8152600401612f8f9796959493929190615822565b60408051808303818588803b158015612fa757600080fd5b505af1158015612fbb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250612fe09190810190614b6d565b6080890152602088018190526130085760405162461bcd60e51b8152600401610f7d90615994565b601654602089015160405163f06a9c6b60e01b81526001600160a01b039092169163f06a9c6b9161303b9160040161568b565b600060405180830381600087803b15801561305557600080fd5b505af1158015613069573d6000803e3d6000fd5b505050508660016005811061307a57fe5b6020020151608090970151969c969b50959950505050505050505050565b6000806130a483613d8c565b601c5491935091506000906001600160a01b03161561314257601c54604051636822955360e11b81526001600160a01b039091169063d0452aa6906130ef90309089906004016156a7565b60206040518083038186803b15801561310757600080fd5b505afa15801561311b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061313f9190810190614b30565b90505b6001600160a01b03851660009081526013602052604081205461316b908363ffffffff6127e916565b9050600061317f828663ffffffff6127e916565b905061318d87868887613e96565b5061319a87838387613a40565b5050505092915050565b60008115610e0a5760006131b6613667565b509050610f3783610dfa61016d610dee8568056bc75e2d6310000063ffffffff61280e16565b6000816131eb575060006110ea565b508354611d0d8161322a670de0b6b3a764000061321e88613212898963ffffffff613fb716565b9063ffffffff613ffd16565b9063ffffffff61406816565b9063ffffffff6140cc16565b6000610d0d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a14565b6000821580159061328857508115155b15610eff57611b8682610dfa8568056bc75e2d6310000063ffffffff61280e16565b601c54604051636822955360e11b815260009182916001600160a01b039091169063d0452aa6906132e190309033906004016156c2565b60206040518083038186803b1580156132f957600080fd5b505afa15801561330d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133319190810190614b30565b90508261334d61334033611a8f565b839063ffffffff6127e916565b101561336b5760405162461bcd60e51b8152600401610f7d90615924565b801561344b57828110156133e457601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec906133ad903090859033906004016157bc565b600060405180830381600087803b1580156133c757600080fd5b505af11580156133db573d6000803e3d6000fd5b5050505061344b565b601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec90613418903090879033906004016157bc565b600060405180830381600087803b15801561343257600080fd5b505af1158015613446573d6000803e3d6000fd5b505050505b610e06835b60008161346f5760405162461bcd60e51b8152600401610f7d906159f4565b61347833611a8f565b8211156134ac5760001982146134a05760405162461bcd60e51b8152600401610f7d906159b4565b6134a933611a8f565b91505b6134b4612d44565b60006134c3611c8b600061288a565b905060006134e3670de0b6b3a7640000610dfa868563ffffffff61280e16565b905060006134ef6127b3565b9050819350808411156135145760405162461bcd60e51b8152600401610f7d90615934565b601c546000906001600160a01b0316156135ad57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa69061355a90309033906004016156c2565b60206040518083038186803b15801561357257600080fd5b505afa158015613586573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506135aa9190810190614b30565b90505b336000908152601360205260408120546135cd908363ffffffff6127e916565b905060006135e1828963ffffffff61323616565b90506135ef33898989614112565b506135fc33838389613a40565b505050505050919050565b60405161366190859063a9059cbb60e01b9061362990879087906024016157a1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915283614237565b50505050565b60165460048054604051630d1979fb60e41b8152600093849384936001600160a01b039283169363d1979fb0936136a9933093610100900490911691016156a7565b60c06040518083038186803b1580156136c157600080fd5b505afa1580156136d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136f99190810190614cb6565b509196509450925061372c915068056bc75e2d631000009050610dfa61371f8285613236565b859063ffffffff61280e16565b9150509091565b6015546000908061374657600e54610e06565b610e0681610dfa85670de0b6b3a764000063ffffffff61280e16565b60008082156137ab57600f54426001600160581b0390811691161461378d57613789613667565b9150505b600061379b82610de26127b3565b9050808411156137a9578093505b505b610e0683612e1a8361288a565b3390565b60006137c88383613098565b601c549091506137e49084906001600160a01b031683806128c4565b50601c546040516336305cf160e21b81526001600160a01b039091169063d8c173c49061381790869085906004016157a1565b600060405180830381600087803b15801561383157600080fd5b505af115801561319a573d6000803e3d6000fd5b6001600160a01b03811661386b5760405162461bcd60e51b8152600401610f7d906158d4565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000806138df6138d985610de2610f9a565b84613278565b600554600654600954600a54600b5494955060009485949392919082881015613906578297505b8188111561397957968190039668056bc75e2d631000008290038089111561392c578098505b61394d68056bc75e2d63100000610dfa85610dee898b63ffffffff6127e916565b965061397187610de283610dfa613964878d613236565b8e9063ffffffff61280e16565b9950506139cf565b61399a85610de268056bc75e2d63100000610dfa8c8963ffffffff61280e16565b985093955085936139b1848663ffffffff6127e916565b9550868910156139c3578698506139cf565b858911156139cf578598505b505050505050505092915050565b600081836139fe5760405162461bcd60e51b8152600401610f7d9190615893565b506000838581613a0a57fe5b0495945050505050565b60008184841115613a385760405162461bcd60e51b8152600401610f7d9190615893565b505050900390565b604051600090613a769086907f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb69060200161563d565b60405160208183030381529060405280519060200120905060008360001415613aa25760009250613ad3565b8415613ad3576001600160a01b038616600090815260116020526040902054613ad0908390879086906131dc565b90505b90556001600160a01b039093166000908152601160205260409020929092555050565b600080613b116301e13380610dfa878763ffffffff61280e16565b90506000613b2e68056bc75e2d631000008363ffffffff61323616565b9050613b4d81610dfa8668056bc75e2d6310000063ffffffff61280e16565b9695505050505050565b60175460045460408501516020850151606086015160808701516000956001600160a01b03908116956101009004811694939291908b16851415613bad5760405162461bcd60e51b8152600401610f7d90615a04565b3496508715613c0b57613bd185858a60405180602001604052806000815250613607565b87831115613c0657601654604080516020810190915260008152613c069187916001600160a01b03909116908b870390613607565b613c40565b601654604080518082019091526002815261323760f01b6020820152613c409187916001600160a01b03909116908690613607565b8015613d4357856001600160a01b03168b6001600160a01b0316148015613c6657508615155b8015613c725750808710155b15613d0c57856001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613cb257600080fd5b505af1158015613cc6573d6000803e3d6000fd5b505060165460408051808201909152600481526332382d6160e01b6020820152613d0294508f93506001600160a01b0390911691508490613607565b8087039650613d43565b601654604080518082019091526004815263191c16b160e11b6020820152613d43918d9133916001600160a01b03169085906142f5565b8115613d7e57601654604080518082019091526002815261323960f01b6020820152613d7e91879133916001600160a01b03169086906142f5565b505050505050949350505050565b60008082613dac5760405162461bcd60e51b8152600401610f7d906159c4565b613db4612d44565b613dc1611c8b600061288a565b9050613ddf81610dfa85670de0b6b3a764000063ffffffff61280e16565b915034613e2757613e22600460019054906101000a90046001600160a01b031633308660405180604001604052806002815260200161062760f31b8152506142f5565b613e91565b601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613e7757600080fd5b505af1158015613e8b573d6000803e3d6000fd5b50505050505b915091565b60006001600160a01b038516613ebe5760405162461bcd60e51b8152600401610f7d906158c4565b6001600160a01b038516600090815260136020526040812054613ee7908663ffffffff6127e916565b6001600160a01b0387166000908152601360205260409020819055601554909150613f18908663ffffffff6127e916565b6015556040516001600160a01b038716907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb90613f5a90889088908890615aa2565b60405180910390a2856001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613fa69190615814565b60405180910390a395945050505050565b6000818303818312801590613fcc5750838113155b80613fe15750600083128015613fe157508381135b610d0d5760405162461bcd60e51b8152600401610f7d90615a54565b60008261400c57506000610eff565b826000191480156140205750600160ff1b82145b1561403d5760405162461bcd60e51b8152600401610f7d90615a14565b8282028284828161404a57fe5b0514610d0d5760405162461bcd60e51b8152600401610f7d90615a14565b6000816140875760405162461bcd60e51b8152600401610f7d90615a84565b8160001914801561409b5750600160ff1b83145b156140b85760405162461bcd60e51b8152600401610f7d90615964565b60008284816140c357fe5b05949350505050565b60008282018183128015906140e15750838112155b806140f657506000831280156140f657508381125b610d0d5760405162461bcd60e51b8152600401610f7d906158f4565b6040805180820182526002815261189b60f11b6020808301919091526001600160a01b0387166000908152601390915291822054829161415a9190879063ffffffff613a1416565b9050600a811161417b57614174858263ffffffff6127e916565b9450600090505b6001600160a01b03861660009081526013602052604090208190556015546141a9908663ffffffff61323616565b6015556040516001600160a01b038716907f743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b4644906141eb90889088908890615aa2565b60405180910390a260006001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613fa69190615814565b60006060846001600160a01b031684604051614253919061567f565b6000604051808303816000865af19150503d8060008114614290576040519150601f19603f3d011682016040523d82523d6000602084013e614295565b606091505b50915091508183906142ba5760405162461bcd60e51b8152600401610f7d9190615893565b5080511561220657808060200190516142d69190810190614855565b8390610f865760405162461bcd60e51b8152600401610f7d9190615893565b6040516122069086906323b872dd60e01b90613629908890889088906024016156dd565b60405180608001604052806004906020820280388339509192915050565b6040518060a001604052806005906020820280388339509192915050565b8035610eff81615c11565b8051610eff81615c11565b60008083601f84011261437d57600080fd5b5081356001600160401b0381111561439457600080fd5b6020830191508360208202830111156143ac57600080fd5b9250929050565b600082601f8301126143c457600080fd5b81516143d76143d282615af1565b615acb565b915081818352602084019350602081019050838560208402820111156143fc57600080fd5b60005b8381101561319a578161441288826144bd565b84525060209283019291909101906001016143ff565b600082601f83011261443957600080fd5b81356144476143d282615af1565b915081818352602084019350602081019050838561010084028201111561446d57600080fd5b60005b8381101561319a57816144838882614558565b8452506020909201916101009190910190600101614470565b8035610eff81615c25565b8051610eff81615c25565b8035610eff81615c2e565b8051610eff81615c2e565b60008083601f8401126144da57600080fd5b5081356001600160401b038111156144f157600080fd5b6020830191508360018202830111156143ac57600080fd5b600082601f83011261451a57600080fd5b81356145286143d282615b11565b9150808252602083016020830185838301111561454457600080fd5b61454f838284615b97565b50505092915050565b6000610100828403121561456b57600080fd5b614576610100615acb565b9050600061458484846144b2565b82525060206145958484830161449c565b60208301525060406145a984828501614355565b60408301525060606145bd84828501614355565b60608301525060806145d184828501614355565b60808301525060a06145e5848285016144b2565b60a08301525060c06145f9848285016144b2565b60c08301525060e061460d848285016144b2565b60e08301525092915050565b60006020828403121561462b57600080fd5b60006110ea8484614355565b60006020828403121561464957600080fd5b60006110ea8484614360565b6000806040838503121561466857600080fd5b60006146748585614355565b925050602061468585828601614355565b9150509250929050565b6000806000606084860312156146a457600080fd5b60006146b08686614355565b93505060206146c186828701614355565b92505060406146d2868287016144b2565b9150509250925092565b600080604083850312156146ef57600080fd5b60006146fb8585614355565b9250506020614685858286016144b2565b60008060006060848603121561472157600080fd5b600061472d8686614355565b935050602061473e868287016144b2565b92505060406146d28682870161449c565b6000806000806040858703121561476557600080fd5b84356001600160401b0381111561477b57600080fd5b6147878782880161436b565b945094505060208501356001600160401b038111156147a557600080fd5b6147b18782880161436b565b95989497509550505050565b6000602082840312156147cf57600080fd5b81516001600160401b038111156147e557600080fd5b6110ea848285016143b3565b6000806040838503121561480457600080fd5b82356001600160401b0381111561481a57600080fd5b61482685828601614428565b92505060206146858582860161449c565b60006020828403121561484957600080fd5b60006110ea848461449c565b60006020828403121561486757600080fd5b60006110ea84846144a7565b600080600080600080600080610100898b03121561489057600080fd5b600061489c8b8b6144b2565b98505060206148ad8b828c016144b2565b97505060406148be8b828c016144b2565b96505060606148cf8b828c016144b2565b95505060806148e08b828c01614355565b94505060a06148f18b828c01614355565b93505060c06149028b828c01614355565b92505060e08901356001600160401b0381111561491e57600080fd5b61492a8b828c01614509565b9150509295985092959890939650565b6000806000806000806000806000806101208b8d03121561495a57600080fd5b60006149668d8d6144b2565b9a505060206149778d828e016144b2565b99505060406149888d828e016144b2565b98505060606149998d828e016144b2565b97505060806149aa8d828e01614355565b96505060a06149bb8d828e01614355565b95505060c06149cc8d828e016144b2565b94505060e06149dd8d828e01614355565b9350506101008b01356001600160401b038111156149fa57600080fd5b614a068d828e016144c8565b92509250509295989b9194979a5092959850565b600080600080600080600080610100898b031215614a3757600080fd5b6000614a438b8b6144b2565b9850506020614a548b828c016144b2565b9750506040614a658b828c016144b2565b9650506060614a768b828c016144b2565b9550506080614a878b828c01614355565b94505060a0614a988b828c01614355565b93505060c06149028b828c016144b2565b600060208284031215614abb57600080fd5b81356001600160401b03811115614ad157600080fd5b6110ea84828501614509565b60008060408385031215614af057600080fd5b82356001600160401b03811115614b0657600080fd5b61482685828601614509565b600060208284031215614b2457600080fd5b60006110ea84846144b2565b600060208284031215614b4257600080fd5b60006110ea84846144bd565b60008060408385031215614b6157600080fd5b60006146fb85856144b2565b60008060408385031215614b8057600080fd5b6000614b8c85856144bd565b9250506020614685858286016144bd565b600080600060608486031215614bb257600080fd5b6000614bbe86866144b2565b9350506020614bcf868287016144b2565b92505060406146d286828701614355565b60008060008060808587031215614bf657600080fd5b6000614c0287876144b2565b9450506020614c13878288016144b2565b9350506040614c24878288016144b2565b9250506060614c3587828801614355565b91505092959194509250565b600080600080600060a08688031215614c5957600080fd5b6000614c6588886144b2565b9550506020614c76888289016144b2565b9450506040614c87888289016144b2565b9350506060614c9888828901614355565b9250506080614ca9888289016144b2565b9150509295509295909350565b60008060008060008060c08789031215614ccf57600080fd5b6000614cdb89896144bd565b9650506020614cec89828a016144bd565b9550506040614cfd89828a016144bd565b9450506060614d0e89828a016144bd565b9350506080614d1f89828a016144bd565b92505060a0614d3089828a016144bd565b9150509295509295509295565b600080600080600080600060e0888a031215614d5857600080fd5b6000614d648a8a6144b2565b9750506020614d758a828b016144b2565b9650506040614d868a828b016144b2565b9550506060614d978a828b016144b2565b9450506080614da88a828b016144b2565b93505060a0614db98a828b016144b2565b92505060c0614dca8a828b016144b2565b91505092959891949750929550565b6000614de58383614e1d565b505060200190565b6000614de58383614f90565b6000614e058383615577565b50506101000190565b614e1781615b86565b82525050565b614e1781615b57565b614e17614e3282615b57565b615bcf565b614e4081615b3e565b614e4a8184610e0a565b9250614e5582610f17565b8060005b83811015610f86578151614e6d8782614dd9565b9650614e7883615b38565b925050600101614e59565b6000614e8e82615b44565b614e988185615b4e565b9350614ea383615b38565b8060005b83811015614ed1578151614ebb8882614ded565b9750614ec683615b38565b925050600101614ea7565b509495945050505050565b6000614ee782615b44565b614ef18185615b4e565b9350614efc83615b38565b8060005b83811015614ed1578151614f148882614df9565b9750614f1f83615b38565b925050600101614f00565b614f3381615b48565b614f3d8184610e0a565b9250614f4882610f17565b8060005b83811015610f86578151614f608782614ded565b9650614f6b83615b38565b925050600101614f4c565b614e1781615b62565b614e17614f8b82615b62565b615bda565b614e1781610f17565b614e17614fa582610f17565b610f17565b614e17614fa582615b67565b6000614fc182615b44565b614fcb8185615b4e565b9350614fdb818560208601615ba3565b614fe481615bfb565b9093019392505050565b6000614ff982615b44565b6150038185610e0a565b9350615013818560208601615ba3565b9290920192915050565b600061502a600c83615b4e565b6b636f6c6c20746f6f206c6f7760a01b815260200192915050565b6000615052600283615b4e565b61031360f41b815260200192915050565b6000615070600283615b4e565b61313560f01b815260200192915050565b600061508e602683615b4e565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006150d6601b83615b4e565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061510f602183615b4e565b7f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000615152600e83615b4e565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b600061517c600183615b4e565b603760f81b815260200192915050565b6000615199601283615b4e565b716e6f7420656e6f7567682062616c616e636560701b815260200192915050565b60006151c7600283615b4e565b61333760f01b815260200192915050565b60006151e5600283615b4e565b610c8d60f21b815260200192915050565b6000615203600283615b4e565b61313160f01b815260200192915050565b6000615221602183615b4e565b7f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000615264601583615b4e565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000615295600283615b4e565b61189960f11b815260200192915050565b60006152b3600283615b4e565b61323560f01b815260200192915050565b60006152d1600f83615b4e565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b60006152fc600283615b4e565b61199960f11b815260200192915050565b600061531a600283615b4e565b61313760f01b815260200192915050565b6000615338602183615b4e565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061537b600c83615b4e565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006153a3600283615b4e565b61313960f01b815260200192915050565b60006153c1600283615b4e565b61191b60f11b815260200192915050565b60006153df602783615b4e565b7f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f815266766572666c6f7760c81b602082015260400192915050565b6000615428601d83615b4e565b7f696e76616c6964207261746520636f6c6c61746572616c20746f6b656e000000815260200192915050565b6000615461600a83615b4e565b6937b7363ca830bab9b2b960b11b815260200192915050565b6000615487600c83615b4e565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b60006154af602483615b4e565b7f5369676e6564536166654d6174683a207375627472616374696f6e206f766572815263666c6f7760e01b602082015260400192915050565b60006154f5601883615b4e565b7f34303120757365206f66206578697374696e67206c6f616e0000000000000000815260200192915050565b600061552e600183615b4e565b601b60f91b815260200192915050565b600061554b602083615b4e565b7f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f815260200192915050565b80516101008301906155898482614f90565b50602082015161559c6020850182614f76565b5060408201516155af6040850182614e1d565b5060608201516155c26060850182614e1d565b5060808201516155d56080850182614e1d565b5060a08201516155e860a0850182614f90565b5060c08201516155fb60c0850182614f90565b5060e082015161366160e0850182614f90565b614e1781615b80565b60006156238285614e26565b6014820191506156338284614f7f565b5060010192915050565b60006156498285614e26565b6014820191506156598284614f99565b5060200192915050565b600061566f8285614faa565b6004820191506156598284614f99565b6000610d0d8284614fee565b60208101610eff8284614e1d565b60208101610eff8284614e0e565b604081016156b58285614e1d565b610d0d6020830184614e1d565b604081016156d08285614e1d565b610d0d6020830184614e0e565b606081016156eb8286614e1d565b6156f86020830185614e1d565b6110ea6040830184614f90565b60a081016157138288614e1d565b6157206020830187614e1d565b61572d6040830186614f90565b61573a6060830185614f90565b613b4d6080830184614f76565b60c081016157558289614e1d565b6157626020830188614e1d565b61576f6040830187614f90565b61577c6060830186614f90565b6157896080830185614f90565b61579660a0830184614f90565b979650505050505050565b604081016157af8285614e1d565b610d0d6020830184614f90565b606081016157ca8286614e1d565b6157d76020830185614f90565b6110ea6040830184614e0e565b60208082528101610d0d8184614e83565b60208082528101610d0d8184614edc565b60208101610eff8284614f76565b60208101610eff8284614f90565b6101c08101615831828a614f90565b61583e6020830189614f90565b61584b6040830188614f76565b6158586060830187614f90565b6158656080830186614e37565b615873610100830185614f2a565b8181036101a08301526158868184614fb6565b9998505050505050505050565b60208082528101610d0d8184614fb6565b60208082528101610eff8161501d565b60208082528101610eff81615045565b60208082528101610eff81615063565b60208082528101610eff81615081565b60208082528101610eff816150c9565b60208082528101610eff81615102565b60208082528101610eff81615145565b60208082528101610eff8161516f565b60208082528101610eff8161518c565b60208082528101610eff816151ba565b60208082528101610eff816151d8565b60208082528101610eff816151f6565b60208082528101610eff81615214565b60208082528101610eff81615257565b60208082528101610eff81615288565b60208082528101610eff816152a6565b60208082528101610eff816152c4565b60208082528101610eff816152ef565b60208082528101610eff8161530d565b60208082528101610eff8161532b565b60208082528101610eff8161536e565b60208082528101610eff81615396565b60208082528101610eff816153b4565b60208082528101610eff816153d2565b60208082528101610eff8161541b565b60208082528101610eff81615454565b60208082528101610eff8161547a565b60208082528101610eff816154a2565b60208082528101610eff816154e8565b60208082528101610eff81615521565b60208082528101610eff8161553e565b604081016157af8285614f90565b60608101615ab08286614f90565b6156f86020830185614f90565b60208101610eff828461560e565b6040518181016001600160401b0381118282101715615ae957600080fd5b604052919050565b60006001600160401b03821115615b0757600080fd5b5060209081020190565b60006001600160401b03821115615b2757600080fd5b506020601f91909101601f19160190565b60200190565b50600490565b5190565b50600590565b90815260200190565b6000610eff82615b74565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b6000610eff826000610eff82615b57565b82818337506000910152565b60005b83811015615bbe578181015183820152602001615ba6565b838111156136615750506000910152565b6000610eff82615be5565b6000610eff82615bf0565b6000610eff82615c0b565b6000610eff82615c05565b601f01601f191690565b60f81b90565b60601b90565b615c1a81615b57565b811461265357600080fd5b615c1a81615b62565b615c1a81610f1756fea365627a7a72315820c73210bfed5f9dc340d9bb6d509064e47607585d837100b09c7acb22300cc4966c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3EF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7FF9B596 GT PUSH2 0x208 JUMPI DUP1 PUSH4 0xCB926CB3 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0xE41B07E3 GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xF06A9C6B GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xF06A9C6B EQ PUSH2 0xAEE JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB0E JUMPI DUP1 PUSH4 0xF6B69F99 EQ PUSH2 0xB2E JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xB41 JUMPI DUP1 PUSH4 0xFFA1AD74 EQ PUSH2 0xB56 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0xA79 JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0xA99 JUMPI DUP1 PUSH4 0xEEBC5081 EQ PUSH2 0xAB9 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0xAD9 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0xD8F06C83 GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x9F9 JUMPI DUP1 PUSH4 0xD97206A4 EQ PUSH2 0xA19 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xA39 JUMPI DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0xA59 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0xCB926CB3 EQ PUSH2 0x984 JUMPI DUP1 PUSH4 0xD1A1BEB4 EQ PUSH2 0x9A4 JUMPI DUP1 PUSH4 0xD65A5021 EQ PUSH2 0x9C4 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x9E4 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x9BDA3A98 GT PUSH2 0x19B JUMPI DUP1 PUSH4 0xB9FE1A8F GT PUSH2 0x16A JUMPI DUP1 PUSH4 0xB9FE1A8F EQ PUSH2 0x8FA JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x91A JUMPI DUP1 PUSH4 0xBE194217 EQ PUSH2 0x92F JUMPI DUP1 PUSH4 0xC9DDF448 EQ PUSH2 0x94F JUMPI DUP1 PUSH4 0xCA37E666 EQ PUSH2 0x96F JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x9BDA3A98 EQ PUSH2 0x890 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x8A5 JUMPI DUP1 PUSH4 0x9FD0506D EQ PUSH2 0x8C5 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x8DA JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x8EE6C4E6 GT PUSH2 0x1D7 JUMPI DUP1 PUSH4 0x8EE6C4E6 EQ PUSH2 0x83C JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x851 JUMPI DUP1 PUSH4 0x8FB807C5 EQ PUSH2 0x866 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x87B JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x7FF9B596 EQ PUSH2 0x7DD JUMPI DUP1 PUSH4 0x829B38F4 EQ PUSH2 0x7F2 JUMPI DUP1 PUSH4 0x8325A1C0 EQ PUSH2 0x812 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x827 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x303 JUMPI DUP1 PUSH4 0x631A3EF8 GT PUSH2 0x296 JUMPI DUP1 PUSH4 0x7288B344 GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x7288B344 EQ PUSH2 0x75E JUMPI DUP1 PUSH4 0x76FD4FDF EQ PUSH2 0x77E JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x79E JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x7B3 JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x7C8 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x631A3EF8 EQ PUSH2 0x6CF JUMPI DUP1 PUSH4 0x6B40CD40 EQ PUSH2 0x6EF JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH2 0x71E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x73E JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x44A4A003 GT PUSH2 0x2D2 JUMPI DUP1 PUSH4 0x44A4A003 EQ PUSH2 0x670 JUMPI DUP1 PUSH4 0x54198CE9 EQ PUSH2 0x685 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x6A5 JUMPI DUP1 PUSH4 0x612EF80B EQ PUSH2 0x6BA JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x5F9 JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x61B JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x63B JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x650 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x18498B1D GT PUSH2 0x386 JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x355 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x570 JUMPI DUP1 PUSH4 0x28A02F19 EQ PUSH2 0x590 JUMPI DUP1 PUSH4 0x2D88AF4A EQ PUSH2 0x5B1 JUMPI DUP1 PUSH4 0x2EA295FA EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x5E4 JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x18498B1D EQ PUSH2 0x50F JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x531 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0x20F6D07C EQ PUSH2 0x55B JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x498 JUMPI DUP1 PUSH4 0x9EC6B6B EQ PUSH2 0x4C5 JUMPI DUP1 PUSH4 0x12416898 EQ PUSH2 0x4DA JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x4FA JUMPI PUSH2 0x3EF JUMP JUMPDEST DUP1 PUSH4 0x4797930 EQ PUSH2 0x3FE JUMPI DUP1 PUSH4 0x6947A3A EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0x6B3EFD6 EQ PUSH2 0x456 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x476 JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B9D JUMP JUMPDEST PUSH2 0xB6B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP2 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP2 SWAP1 PUSH2 0x568B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x471 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0xD23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48B PUSH2 0xE0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP2 SWAP1 PUSH2 0x5893 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x4B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x46DC JUMP JUMPDEST PUSH2 0xE9A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP2 SWAP1 PUSH2 0x5806 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xF05 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x4F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B12 JUMP JUMPDEST PUSH2 0xF1A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xF45 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0x52A CALLDATASIZE PUSH1 0x4 PUSH2 0x4C41 JUMP JUMPDEST PUSH2 0xF4B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xF8E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xF94 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xF9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x58B CALLDATASIZE PUSH1 0x4 PUSH2 0x468F JUMP JUMPDEST PUSH2 0x1029 JUMP JUMPDEST PUSH2 0x5A3 PUSH2 0x59E CALLDATASIZE PUSH1 0x4 PUSH2 0x4A1A JUMP JUMPDEST PUSH2 0x10F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP3 SWAP2 SWAP1 PUSH2 0x5A94 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0x5CC CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x1317 JUMP JUMPDEST PUSH2 0x5A3 PUSH2 0x5DF CALLDATASIZE PUSH1 0x4 PUSH2 0x4873 JUMP JUMPDEST PUSH2 0x135D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x163D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x60E PUSH2 0x164C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP2 SWAP1 PUSH2 0x5ABD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x636 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B12 JUMP JUMPDEST PUSH2 0x1655 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x647 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1667 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x66B CALLDATASIZE PUSH1 0x4 PUSH2 0x46DC JUMP JUMPDEST PUSH2 0x166D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x16AE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x6A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x16C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1761 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1767 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x6EA CALLDATASIZE PUSH1 0x4 PUSH2 0x4B9D JUMP JUMPDEST PUSH2 0x1798 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x70F PUSH2 0x70A CALLDATASIZE PUSH1 0x4 PUSH2 0x4BE0 JUMP JUMPDEST PUSH2 0x1938 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5AA2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0x739 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x1A49 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x759 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x1A8F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x779 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B4E JUMP JUMPDEST PUSH2 0x1AAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x799 CALLDATASIZE PUSH1 0x4 PUSH2 0x470C JUMP JUMPDEST PUSH2 0x1B8D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x1C38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1C4C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1C52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1C58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x80D CALLDATASIZE PUSH1 0x4 PUSH2 0x4B12 JUMP JUMPDEST PUSH2 0x1C96 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1D16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x833 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x1D22 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x848 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x1D31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x1D40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1D66 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48B PUSH2 0x1D96 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x1DF1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x8C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x46DC JUMP JUMPDEST PUSH2 0x1E00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x1E74 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x8F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x46DC JUMP JUMPDEST PUSH2 0x1E83 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x915 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B12 JUMP JUMPDEST PUSH2 0x1E93 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x926 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x1E9E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x94A CALLDATASIZE PUSH1 0x4 PUSH2 0x4AA9 JUMP JUMPDEST PUSH2 0x1EA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0x96A CALLDATASIZE PUSH1 0x4 PUSH2 0x4655 JUMP JUMPDEST PUSH2 0x1F26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x97B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x1F86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x990 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0x99F CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x1F95 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x9BF CALLDATASIZE PUSH1 0x4 PUSH2 0x470C JUMP JUMPDEST PUSH2 0x1FDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x9DF CALLDATASIZE PUSH1 0x4 PUSH2 0x4B12 JUMP JUMPDEST PUSH2 0x2025 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x2038 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0xA14 CALLDATASIZE PUSH1 0x4 PUSH2 0x47F1 JUMP JUMPDEST PUSH2 0x203E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0xA34 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D3D JUMP JUMPDEST PUSH2 0x220D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xA54 CALLDATASIZE PUSH1 0x4 PUSH2 0x4655 JUMP JUMPDEST PUSH2 0x2314 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0xA74 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ADD JUMP JUMPDEST PUSH2 0x233F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xA94 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x23E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0xAB4 CALLDATASIZE PUSH1 0x4 PUSH2 0x474F JUMP JUMPDEST PUSH2 0x23F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0xAD4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x25A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x25C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0xB09 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x25C8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F PUSH2 0xB29 CALLDATASIZE PUSH1 0x4 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x2626 JUMP JUMPDEST PUSH2 0x5A3 PUSH2 0xB3C CALLDATASIZE PUSH1 0x4 PUSH2 0x493A JUMP JUMPDEST PUSH2 0x2656 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x449 PUSH2 0x2726 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH2 0x2735 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xD0D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB90 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBAA SWAP3 SWAP2 SWAP1 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 PUSH4 0xE762319F SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 DUP8 SWAP2 DUP11 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0xC1B SWAP2 DUP11 SWAP2 ADD PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC6B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC8D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5705 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCB9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xCDD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP2 POP PUSH2 0xCF1 DUP3 PUSH2 0xCEB PUSH2 0x1D66 JUMP JUMPDEST DUP7 PUSH2 0x273A JUMP JUMPDEST SWAP4 POP PUSH2 0xCFF SWAP2 POP PUSH2 0x27B3 SWAP1 POP JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0xD0B JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xDBE JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0xD6B SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD97 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xDBB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xE06 PUSH8 0xDE0B6B3A7640000 PUSH2 0xDFA PUSH2 0xDD5 PUSH2 0x1C58 JUMP JUMPDEST PUSH2 0xDEE DUP6 PUSH2 0xDE2 DUP10 PUSH2 0x1A8F JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2848 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE92 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE67 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE92 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE75 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xEF3 SWAP1 DUP7 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF14 PUSH2 0x4F5 PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF25 PUSH2 0xF9A JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xF3F JUMPI PUSH2 0xF37 DUP2 DUP5 PUSH2 0x1AAA JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE0A JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF59 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1938 JUMP JUMPDEST POP SWAP2 POP POP DUP2 DUP2 LT ISZERO PUSH2 0xF86 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x250F447F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0x4A1E88FE SWAP4 PUSH2 0xFD9 SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1005 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xF14 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH2 0x10EA SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x115DD4B1 SWAP1 PUSH2 0x1064 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x5699 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x107C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1090 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x10B4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4855 JUMP JUMPDEST PUSH2 0x10E1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH2 0x28C4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1117 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A44 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1124 PUSH2 0x2A97 JUMP JUMPDEST PUSH2 0x1131 DUP10 DUP10 DUP10 DUP10 DUP9 PUSH2 0xF4B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x114E JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x1181 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5954 JUMP JUMPDEST DUP10 ISZERO DUP1 PUSH2 0x1196 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x11B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A64 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x11F5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x11F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1246 JUMPI PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP9 GT ISZERO PUSH2 0x1246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1253 DUP8 DUP10 DUP12 PUSH2 0x2B17 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1272 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5984 JUMP JUMPDEST PUSH2 0x127A PUSH2 0x4319 JUMP JUMPDEST PUSH2 0x1282 PUSH2 0x4337 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP11 SWAP1 MSTORE PUSH2 0x12BA PUSH2 0x2D44 JUMP JUMPDEST PUSH2 0x12CB DUP13 DUP3 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x2DEA JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x12EC PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP14 PUSH2 0x2848 JUMP JUMPDEST SWAP12 POP PUSH2 0x12FE DUP14 PUSH1 0x0 DUP15 DUP13 DUP7 DUP7 DUP13 PUSH2 0x2E39 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP15 SWAP1 SWAP14 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x131F PUSH2 0x1D40 JUMP JUMPDEST PUSH2 0x133B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1382 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A44 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP9 PUSH2 0x13A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A74 JUMP JUMPDEST PUSH2 0x13AC PUSH2 0x2A97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x13EF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x13EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x13FB JUMPI POP DUP7 CALLVALUE EQ JUMPDEST DUP1 ISZERO PUSH2 0x140F JUMPI POP DUP7 ISZERO ISZERO DUP1 PUSH2 0x140F JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1436 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO DUP1 PUSH2 0x142C JUMPI POP CALLVALUE ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x1436 JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1452 JUMPI POP DUP10 ISZERO DUP1 PUSH2 0x1452 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x146E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5914 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x148B JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x14BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58B4 JUMP JUMPDEST PUSH2 0x14C6 PUSH2 0x2D44 JUMP JUMPDEST PUSH2 0x14CE PUSH2 0x4319 JUMP JUMPDEST PUSH2 0x14D6 PUSH2 0x4337 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 AND PUSH1 0x40 DUP5 ADD MSTORE DUP2 ADD DUP12 SWAP1 MSTORE PUSH2 0x150E DUP12 PUSH2 0x1508 PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST DUP13 PUSH2 0x273A JUMP JUMPDEST DUP4 PUSH1 0x0 PUSH1 0x20 MUL ADD DUP5 PUSH1 0x2 PUSH1 0x20 MUL ADD DUP6 PUSH1 0x1 PUSH1 0x20 MUL ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 MSTORE MSTORE DUP9 DUP2 PUSH1 0x4 PUSH1 0x20 MUL ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x1625 DUP13 DUP13 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCA74A5D9 PUSH1 0x10 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1579 SWAP3 SWAP2 SWAP1 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15BD SWAP2 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x160D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST DUP12 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2E39 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP14 SWAP1 SWAP13 POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A44 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x16A0 DUP4 DUP4 PUSH2 0x3098 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF14 PUSH2 0x16BB PUSH2 0xF9A JUMP JUMPDEST PUSH2 0x31A4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 PUSH1 0x0 SHL PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x16F9 SWAP3 SWAP2 SWAP1 PUSH2 0x563D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xE06 DUP2 PUSH1 0x13 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1743 PUSH2 0x1C58 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x31DC JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1774 PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1780 PUSH2 0xF9A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1793 JUMPI SWAP1 SUB SWAP1 POP PUSH2 0xF17 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xD0D JUMPI PUSH1 0x0 PUSH2 0x17AE DUP6 PUSH2 0xCEB PUSH2 0x1D66 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x17BA PUSH2 0x27B3 JUMP JUMPDEST DUP2 GT PUSH2 0xD0B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x17DD JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x17F7 SWAP3 SWAP2 SWAP1 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH2 0x192F SWAP4 PUSH1 0xA SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x25DECAC0 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0x186D SWAP2 DUP13 SWAP2 ADD PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1899 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x18BD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18DF SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5705 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x190B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xDE2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xD0D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1959 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x1966 DUP6 DUP8 DUP10 PUSH2 0x2B17 JUMP JUMPDEST SWAP1 POP PUSH2 0x1972 DUP9 DUP3 PUSH2 0x2DEA JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH2 0x197F PUSH2 0x27B3 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1996 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1A3F JUMP JUMPDEST PUSH2 0x19A6 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD67F7077 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD67F7077 SWAP4 PUSH2 0x19EB SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP14 SWAP2 DUP14 SWAP2 DUP11 SWAP2 DUP14 SWAP2 ADD PUSH2 0x5747 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1A3B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP3 POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A51 PUSH2 0x1D40 JUMP JUMPDEST PUSH2 0x1A6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST PUSH1 0x19 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1ABB JUMPI POP DUP3 DUP3 LT ISZERO JUMPDEST ISZERO PUSH2 0xEFF JUMPI PUSH2 0x1B86 PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 PUSH2 0xDFA PUSH2 0x1B70 PUSH9 0x56BC75E2D63100000 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4699F846 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B6B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST PUSH2 0x3236 JUMP JUMPDEST PUSH2 0xDEE PUSH2 0x1B7D DUP9 DUP9 PUSH2 0x3278 JUMP JUMPDEST PUSH2 0xDEE DUP10 PUSH2 0x31A4 JUMP JUMPDEST SWAP1 POP PUSH2 0xEFF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1BB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A44 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x1BCC JUMPI PUSH2 0x1BC5 DUP4 PUSH2 0x32AA JUMP JUMPDEST SWAP1 POP PUSH2 0x1BD8 JUMP JUMPDEST PUSH2 0x1BD5 DUP4 PUSH2 0x3450 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x1C2C JUMPI PUSH2 0x1C2C PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x185CDCD95D081D1C985B9CD9995C8819985A5B1959 PUSH1 0x5A SHL DUP2 MSTORE POP PUSH2 0x3607 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1C7F JUMPI PUSH2 0x1C7B PUSH2 0x3667 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C90 PUSH2 0x1C8B DUP3 PUSH2 0x288A JUMP JUMPDEST PUSH2 0x3733 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1CB5 PUSH2 0x16D PUSH2 0xDFA PUSH1 0x1C PUSH1 0xB SLOAD PUSH2 0x280E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1CD2 PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3236 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1CEF PUSH9 0x56BC75E2D63100000 PUSH2 0xDFA DUP5 PUSH2 0xDEE PUSH2 0x1767 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D0D DUP6 PUSH2 0xDFA DUP4 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF14 PUSH1 0x0 PUSH2 0x3762 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D57 PUSH2 0x37B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1D8D JUMPI PUSH2 0x1D89 PUSH2 0x3667 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C90 DUP2 PUSH2 0x288A JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE92 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE67 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE92 JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1E24 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A44 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1E32 DUP3 PUSH2 0x3450 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x16A3 JUMPI PUSH2 0x16A3 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH2 0x3607 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0D CALLER DUP5 DUP5 PUSH1 0x0 NOT PUSH2 0x28C4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x3762 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EB8 SWAP2 SWAP1 PUSH2 0x567F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1F05 SWAP3 SWAP2 SWAP1 PUSH2 0x5663 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x193BBE89 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC9DDF448 SWAP1 PUSH2 0x1F58 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1F9D PUSH2 0x1D40 JUMP JUMPDEST PUSH2 0x1FB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST PUSH1 0x1C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1FFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A44 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x201B JUMPI PUSH2 0x2014 DUP5 DUP5 PUSH2 0x37BC JUMP JUMPDEST SWAP1 POP PUSH2 0x1C2C JUMP JUMPDEST PUSH2 0x2014 DUP5 DUP5 PUSH2 0x3098 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF PUSH2 0x4F5 DUP4 PUSH2 0xDE2 PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2046 PUSH2 0x1D40 JUMP JUMPDEST DUP1 PUSH2 0x205B JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2077 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x2101 JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20A4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x20D6 JUMPI PUSH3 0x24EA00 PUSH2 0x20D9 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20EA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x208E JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x2132 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x57F5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x214C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2160 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2188 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x47BD JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2206 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x21A2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x21BA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x21D8 SWAP3 SWAP2 SWAP1 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x218D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2215 PUSH2 0x1D40 JUMP JUMPDEST DUP1 PUSH2 0x222A JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2246 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x2260 DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST GT ISZERO PUSH2 0x227E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5974 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x2298 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST GT ISZERO PUSH2 0x22B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5974 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x22D8 JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x22F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59A4 JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2369 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A34 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x237C SWAP2 SWAP1 PUSH2 0x567F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x23C4 SWAP3 SWAP2 SWAP1 PUSH2 0x5663 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x23FE PUSH2 0x1D40 JUMP JUMPDEST DUP1 PUSH2 0x2413 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x242F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x244E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5904 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0x247A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x253D JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x2496 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x24AB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4619 JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x24B7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x24CC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4837 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x24DD SWAP3 SWAP2 SWAP1 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2518 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x2480 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0x256E SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x57E4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x259C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF06A9C6B SWAP1 PUSH2 0x25F8 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x568B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2612 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2206 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x262E PUSH2 0x1D40 JUMP JUMPDEST PUSH2 0x264A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST PUSH2 0x2653 DUP2 PUSH2 0x3845 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x26CD JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x193BBE89 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC9DDF448 SWAP1 PUSH2 0x269A SWAP1 DUP11 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x2713 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x10F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP11 POP SWAP11 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2749 DUP7 DUP7 PUSH2 0x38C7 JUMP JUMPDEST SWAP3 POP PUSH2 0x2796 PUSH2 0x277E PUSH8 0xDE0B6B3A7640000 PUSH2 0x1B6B PUSH12 0xA3098C68EB9427DB8000000 PUSH2 0xDFA DUP4 PUSH2 0xDEE DUP11 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST PUSH2 0xDFA DUP9 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x27A8 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x3236 AND JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xFD9 SWAP2 ADDRESS SWAP2 ADD PUSH2 0x568B JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xD0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58E4 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x281D JUMPI POP PUSH1 0x0 PUSH2 0xEFF JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x282A JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xD0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59D4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x39DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x15 SLOAD PUSH1 0x0 EQ PUSH2 0xE0A JUMPI PUSH1 0xC SLOAD DUP1 PUSH2 0x28B4 JUMPI PUSH2 0x28B1 PUSH2 0x28A9 PUSH2 0xF9A JUMP JUMPDEST PUSH2 0xDE2 PUSH2 0x27B3 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xF37 DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ PUSH2 0x2920 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xC4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x28FB SWAP1 DUP4 SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3A14 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2946 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 SWAP1 PUSH2 0x2991 SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3A14 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x29CA DUP3 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP3 SWAP1 SSTORE SWAP1 SWAP2 POP PUSH2 0x29F0 PUSH2 0x1C58 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2A1F JUMPI POP PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x2A3C JUMPI PUSH2 0x2A30 DUP11 DUP7 DUP7 DUP5 PUSH2 0x3A40 JUMP JUMPDEST PUSH2 0x2A3C DUP10 DUP5 DUP5 DUP5 PUSH2 0x3A40 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP11 PUSH1 0x40 MLOAD PUSH2 0x2A7F SWAP2 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2AD7 SWAP3 SWAP2 SWAP1 PUSH2 0x5663 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 SLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2B13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59E4 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 DUP3 ISZERO PUSH2 0xD0D JUMPI PUSH1 0x0 DUP1 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x78D849ED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B83 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2BA7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4637 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x29D5277C SWAP4 PUSH2 0x2BE0 SWAP4 DUP13 SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C0B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2C2F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B6D JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x2C43 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST PUSH2 0x2C5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A24 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C75 DUP3 PUSH2 0xDFA DUP9 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A515777 PUSH1 0xE2 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x69455DDC SWAP4 PUSH2 0x2CB8 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 DUP14 SWAP2 DUP9 SWAP2 ADD PUSH2 0x56DD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CE4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2D08 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ PUSH2 0x2D28 JUMPI PUSH2 0x2D25 DUP8 PUSH2 0xDFA DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x2D38 DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF SLOAD TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x2653 JUMPI PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x740FF7D PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0xE81FEFA0 SWAP4 PUSH2 0x2D94 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x568B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP6 AND PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2E0A PUSH8 0xDE0B6B3A7640000 PUSH2 0xDFA DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2E1F DUP2 PUSH2 0x2E1A PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST PUSH2 0x38C7 JUMP JUMPDEST SWAP2 POP PUSH2 0x2E2F DUP3 PUSH3 0x24EA00 DUP4 PUSH2 0x3AF6 JUMP JUMPDEST SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E44 PUSH2 0x2A97 JUMP JUMPDEST PUSH2 0x2E4C PUSH2 0x27B3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD GT DUP1 ISZERO SWAP1 PUSH2 0x2E6B JUMPI POP PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST PUSH2 0x2E87 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5944 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EAD JUMPI PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x2EBB DUP8 DUP8 DUP8 DUP13 PUSH2 0x3B57 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP3 POP PUSH2 0x2ED2 SWAP2 SWAP1 PUSH2 0x27E9 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP9 ISZERO PUSH2 0x2EF2 JUMPI PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x2EEC SWAP1 DUP11 PUSH2 0x3236 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 DUP10 ISZERO PUSH2 0x2EFE JUMPI POP PUSH1 0x1 JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2F17 SWAP3 SWAP2 SWAP1 PUSH2 0x5617 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x585314CF DUP5 DUP4 DUP16 DUP7 DUP16 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F8F SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5822 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2FBB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2FE0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B6D JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0x20 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x3008 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5994 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF06A9C6B SWAP2 PUSH2 0x303B SWAP2 PUSH1 0x4 ADD PUSH2 0x568B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3055 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3069 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP7 PUSH1 0x1 PUSH1 0x5 DUP2 LT PUSH2 0x307A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 SWAP1 SWAP8 ADD MLOAD SWAP7 SWAP13 SWAP7 SWAP12 POP SWAP6 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x30A4 DUP4 PUSH2 0x3D8C JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x3142 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x30EF SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x311B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x313F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x316B SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x317F DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x318D DUP8 DUP7 DUP9 DUP8 PUSH2 0x3E96 JUMP JUMPDEST POP PUSH2 0x319A DUP8 DUP4 DUP4 DUP8 PUSH2 0x3A40 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0xE0A JUMPI PUSH1 0x0 PUSH2 0x31B6 PUSH2 0x3667 JUMP JUMPDEST POP SWAP1 POP PUSH2 0xF37 DUP4 PUSH2 0xDFA PUSH2 0x16D PUSH2 0xDEE DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x31EB JUMPI POP PUSH1 0x0 PUSH2 0x10EA JUMP JUMPDEST POP DUP4 SLOAD PUSH2 0x1D0D DUP2 PUSH2 0x322A PUSH8 0xDE0B6B3A7640000 PUSH2 0x321E DUP9 PUSH2 0x3212 DUP10 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3FB7 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3FFD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x4068 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x40CC AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3A14 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3288 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xEFF JUMPI PUSH2 0x1B86 DUP3 PUSH2 0xDFA DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x32E1 SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x56C2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x330D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3331 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x334D PUSH2 0x3340 CALLER PUSH2 0x1A8F JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST LT ISZERO PUSH2 0x336B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5924 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x344B JUMPI DUP3 DUP2 LT ISZERO PUSH2 0x33E4 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x33AD SWAP1 ADDRESS SWAP1 DUP6 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x57BC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x344B JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x3418 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x57BC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3446 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xE06 DUP4 JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x346F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59F4 JUMP JUMPDEST PUSH2 0x3478 CALLER PUSH2 0x1A8F JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x34AC JUMPI PUSH1 0x0 NOT DUP3 EQ PUSH2 0x34A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59B4 JUMP JUMPDEST PUSH2 0x34A9 CALLER PUSH2 0x1A8F JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x34B4 PUSH2 0x2D44 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34C3 PUSH2 0x1C8B PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34E3 PUSH8 0xDE0B6B3A7640000 PUSH2 0xDFA DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34EF PUSH2 0x27B3 JUMP JUMPDEST SWAP1 POP DUP2 SWAP4 POP DUP1 DUP5 GT ISZERO PUSH2 0x3514 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5934 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x35AD JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x355A SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x56C2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3586 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x35AA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B30 JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x35CD SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x35E1 DUP3 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3236 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x35EF CALLER DUP10 DUP10 DUP10 PUSH2 0x4112 JUMP JUMPDEST POP PUSH2 0x35FC CALLER DUP4 DUP4 DUP10 PUSH2 0x3A40 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3661 SWAP1 DUP6 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3629 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x57A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE DUP4 PUSH2 0x4237 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD1979FB PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD1979FB0 SWAP4 PUSH2 0x36A9 SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x56A7 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x36C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x36D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x36F9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4CB6 JUMP JUMPDEST POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP PUSH2 0x372C SWAP2 POP PUSH9 0x56BC75E2D63100000 SWAP1 POP PUSH2 0xDFA PUSH2 0x371F DUP3 DUP6 PUSH2 0x3236 JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP2 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x0 SWAP1 DUP1 PUSH2 0x3746 JUMPI PUSH1 0xE SLOAD PUSH2 0xE06 JUMP JUMPDEST PUSH2 0xE06 DUP2 PUSH2 0xDFA DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x37AB JUMPI PUSH1 0xF SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x378D JUMPI PUSH2 0x3789 PUSH2 0x3667 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x379B DUP3 PUSH2 0xDE2 PUSH2 0x27B3 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x37A9 JUMPI DUP1 SWAP4 POP JUMPDEST POP JUMPDEST PUSH2 0xE06 DUP4 PUSH2 0x2E1A DUP4 PUSH2 0x288A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37C8 DUP4 DUP4 PUSH2 0x3098 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH2 0x37E4 SWAP1 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP1 PUSH2 0x28C4 JUMP JUMPDEST POP PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x36305CF1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD8C173C4 SWAP1 PUSH2 0x3817 SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x57A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3831 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x319A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x386B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58D4 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x38DF PUSH2 0x38D9 DUP6 PUSH2 0xDE2 PUSH2 0xF9A JUMP JUMPDEST DUP5 PUSH2 0x3278 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD PUSH1 0xB SLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP3 DUP9 LT ISZERO PUSH2 0x3906 JUMPI DUP3 SWAP8 POP JUMPDEST DUP2 DUP9 GT ISZERO PUSH2 0x3979 JUMPI SWAP7 DUP2 SWAP1 SUB SWAP7 PUSH9 0x56BC75E2D63100000 DUP3 SWAP1 SUB DUP1 DUP10 GT ISZERO PUSH2 0x392C JUMPI DUP1 SWAP9 POP JUMPDEST PUSH2 0x394D PUSH9 0x56BC75E2D63100000 PUSH2 0xDFA DUP6 PUSH2 0xDEE DUP10 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP7 POP PUSH2 0x3971 DUP8 PUSH2 0xDE2 DUP4 PUSH2 0xDFA PUSH2 0x3964 DUP8 DUP14 PUSH2 0x3236 JUMP JUMPDEST DUP15 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP10 POP POP PUSH2 0x39CF JUMP JUMPDEST PUSH2 0x399A DUP6 PUSH2 0xDE2 PUSH9 0x56BC75E2D63100000 PUSH2 0xDFA DUP13 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP9 POP SWAP4 SWAP6 POP DUP6 SWAP4 PUSH2 0x39B1 DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP6 POP DUP7 DUP10 LT ISZERO PUSH2 0x39C3 JUMPI DUP7 SWAP9 POP PUSH2 0x39CF JUMP JUMPDEST DUP6 DUP10 GT ISZERO PUSH2 0x39CF JUMPI DUP6 SWAP9 POP JUMPDEST POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x39FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP2 SWAP1 PUSH2 0x5893 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x3A0A JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3A38 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP2 SWAP1 PUSH2 0x5893 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x3A76 SWAP1 DUP7 SWAP1 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 SWAP1 PUSH1 0x20 ADD PUSH2 0x563D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 EQ ISZERO PUSH2 0x3AA2 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x3AD3 JUMP JUMPDEST DUP5 ISZERO PUSH2 0x3AD3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3AD0 SWAP1 DUP4 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x31DC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3B11 PUSH4 0x1E13380 PUSH2 0xDFA DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3B2E PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3236 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3B4D DUP2 PUSH2 0xDFA DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x0 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 PUSH2 0x100 SWAP1 DIV DUP2 AND SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP12 AND DUP6 EQ ISZERO PUSH2 0x3BAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A04 JUMP JUMPDEST CALLVALUE SWAP7 POP DUP8 ISZERO PUSH2 0x3C0B JUMPI PUSH2 0x3BD1 DUP6 DUP6 DUP11 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3607 JUMP JUMPDEST DUP8 DUP4 GT ISZERO PUSH2 0x3C06 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x3C06 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP12 DUP8 SUB SWAP1 PUSH2 0x3607 JUMP JUMPDEST PUSH2 0x3C40 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3237 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3C40 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH2 0x3607 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3D43 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x3C66 JUMPI POP DUP7 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3C72 JUMPI POP DUP1 DUP8 LT ISZERO JUMPDEST ISZERO PUSH2 0x3D0C JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3CB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3CC6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x32382D61 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3D02 SWAP5 POP DUP16 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP5 SWAP1 PUSH2 0x3607 JUMP JUMPDEST DUP1 DUP8 SUB SWAP7 POP PUSH2 0x3D43 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x191C16B1 PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3D43 SWAP2 DUP14 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH2 0x42F5 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3D7E JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3239 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3D7E SWAP2 DUP8 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x42F5 JUMP JUMPDEST POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x3DAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x59C4 JUMP JUMPDEST PUSH2 0x3DB4 PUSH2 0x2D44 JUMP JUMPDEST PUSH2 0x3DC1 PUSH2 0x1C8B PUSH1 0x0 PUSH2 0x288A JUMP JUMPDEST SWAP1 POP PUSH2 0x3DDF DUP2 PUSH2 0xDFA DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x280E AND JUMP JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x3E27 JUMPI PUSH2 0x3E22 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP PUSH2 0x42F5 JUMP JUMPDEST PUSH2 0x3E91 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3E8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3EBE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3EE7 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH2 0x3F18 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xB4C03061FB5B7FED76389D5AF8F2E0DDB09F8C70D1333ABBB62582835E10ACCB SWAP1 PUSH2 0x3F5A SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x5AA2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3FA6 SWAP2 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x3FCC JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x3FE1 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3FE1 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0xD0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A54 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x400C JUMPI POP PUSH1 0x0 PUSH2 0xEFF JUMP JUMPDEST DUP3 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x4020 JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ JUMPDEST ISZERO PUSH2 0x403D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A14 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x404A JUMPI INVALID JUMPDEST SDIV EQ PUSH2 0xD0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A14 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x4087 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5A84 JUMP JUMPDEST DUP2 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x409B JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP4 EQ JUMPDEST ISZERO PUSH2 0x40B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x5964 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x40C3 JUMPI INVALID JUMPDEST SDIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x40E1 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x40F6 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x40F6 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0xD0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP1 PUSH2 0x58F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD DUP3 SWAP2 PUSH2 0x415A SWAP2 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3A14 AND JUMP JUMPDEST SWAP1 POP PUSH1 0xA DUP2 GT PUSH2 0x417B JUMPI PUSH2 0x4174 DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x27E9 AND JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD PUSH2 0x41A9 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x3236 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0x743033787F4738FF4D6A7225CE2BD0977EE5F86B91A902A58F5E4D0B297B4644 SWAP1 PUSH2 0x41EB SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x5AA2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3FA6 SWAP2 SWAP1 PUSH2 0x5814 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x4253 SWAP2 SWAP1 PUSH2 0x567F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4290 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4295 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP4 SWAP1 PUSH2 0x42BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP2 SWAP1 PUSH2 0x5893 JUMP JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x2206 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x42D6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4855 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0xF86 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7D SWAP2 SWAP1 PUSH2 0x5893 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2206 SWAP1 DUP7 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x3629 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0x56DD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xEFF DUP2 PUSH2 0x5C11 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xEFF DUP2 PUSH2 0x5C11 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x437D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x43AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x43C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x43D7 PUSH2 0x43D2 DUP3 PUSH2 0x5AF1 JUMP JUMPDEST PUSH2 0x5ACB JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x43FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x319A JUMPI DUP2 PUSH2 0x4412 DUP9 DUP3 PUSH2 0x44BD JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x43FF JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4447 PUSH2 0x43D2 DUP3 PUSH2 0x5AF1 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x446D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x319A JUMPI DUP2 PUSH2 0x4483 DUP9 DUP3 PUSH2 0x4558 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4470 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xEFF DUP2 PUSH2 0x5C25 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xEFF DUP2 PUSH2 0x5C25 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xEFF DUP2 PUSH2 0x5C2E JUMP JUMPDEST DUP1 MLOAD PUSH2 0xEFF DUP2 PUSH2 0x5C2E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x44DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x43AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x451A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4528 PUSH2 0x43D2 DUP3 PUSH2 0x5B11 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x4544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x454F DUP4 DUP3 DUP5 PUSH2 0x5B97 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x456B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4576 PUSH2 0x100 PUSH2 0x5ACB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4584 DUP5 DUP5 PUSH2 0x44B2 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x4595 DUP5 DUP5 DUP4 ADD PUSH2 0x449C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x45A9 DUP5 DUP3 DUP6 ADD PUSH2 0x4355 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x45BD DUP5 DUP3 DUP6 ADD PUSH2 0x4355 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x45D1 DUP5 DUP3 DUP6 ADD PUSH2 0x4355 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x45E5 DUP5 DUP3 DUP6 ADD PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x45F9 DUP5 DUP3 DUP6 ADD PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x460D DUP5 DUP3 DUP6 ADD PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x462B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH2 0x4355 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH2 0x4360 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4674 DUP6 DUP6 PUSH2 0x4355 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4685 DUP6 DUP3 DUP7 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x46A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46B0 DUP7 DUP7 PUSH2 0x4355 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x46C1 DUP7 DUP3 DUP8 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x46D2 DUP7 DUP3 DUP8 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46FB DUP6 DUP6 PUSH2 0x4355 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4685 DUP6 DUP3 DUP7 ADD PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x472D DUP7 DUP7 PUSH2 0x4355 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x473E DUP7 DUP3 DUP8 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x46D2 DUP7 DUP3 DUP8 ADD PUSH2 0x449C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x477B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4787 DUP8 DUP3 DUP9 ADD PUSH2 0x436B JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47B1 DUP8 DUP3 DUP9 ADD PUSH2 0x436B JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10EA DUP5 DUP3 DUP6 ADD PUSH2 0x43B3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x481A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4826 DUP6 DUP3 DUP7 ADD PUSH2 0x4428 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4685 DUP6 DUP3 DUP7 ADD PUSH2 0x449C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH2 0x449C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH2 0x44A7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4890 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x489C DUP12 DUP12 PUSH2 0x44B2 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x48AD DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x48BE DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x48CF DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x48E0 DUP12 DUP3 DUP13 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x48F1 DUP12 DUP3 DUP13 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x4902 DUP12 DUP3 DUP13 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x491E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x492A DUP12 DUP3 DUP13 ADD PUSH2 0x4509 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x495A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4966 DUP14 DUP14 PUSH2 0x44B2 JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x4977 DUP14 DUP3 DUP15 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x4988 DUP14 DUP3 DUP15 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x4999 DUP14 DUP3 DUP15 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x49AA DUP14 DUP3 DUP15 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x49BB DUP14 DUP3 DUP15 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x49CC DUP14 DUP3 DUP15 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x49DD DUP14 DUP3 DUP15 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A06 DUP14 DUP3 DUP15 ADD PUSH2 0x44C8 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4A37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4A43 DUP12 DUP12 PUSH2 0x44B2 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x4A54 DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x4A65 DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x4A76 DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x4A87 DUP12 DUP3 DUP13 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x4A98 DUP12 DUP3 DUP13 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x4902 DUP12 DUP3 DUP13 ADD PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4ABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4AD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10EA DUP5 DUP3 DUP6 ADD PUSH2 0x4509 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4AF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4B06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4826 DUP6 DUP3 DUP7 ADD PUSH2 0x4509 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10EA DUP5 DUP5 PUSH2 0x44BD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x46FB DUP6 DUP6 PUSH2 0x44B2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4B8C DUP6 DUP6 PUSH2 0x44BD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4685 DUP6 DUP3 DUP7 ADD PUSH2 0x44BD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4BB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4BBE DUP7 DUP7 PUSH2 0x44B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4BCF DUP7 DUP3 DUP8 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x46D2 DUP7 DUP3 DUP8 ADD PUSH2 0x4355 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4BF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C02 DUP8 DUP8 PUSH2 0x44B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4C13 DUP8 DUP3 DUP9 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4C24 DUP8 DUP3 DUP9 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4C35 DUP8 DUP3 DUP9 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4C59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C65 DUP9 DUP9 PUSH2 0x44B2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4C76 DUP9 DUP3 DUP10 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4C87 DUP9 DUP3 DUP10 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4C98 DUP9 DUP3 DUP10 ADD PUSH2 0x4355 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x4CA9 DUP9 DUP3 DUP10 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4CCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4CDB DUP10 DUP10 PUSH2 0x44BD JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x4CEC DUP10 DUP3 DUP11 ADD PUSH2 0x44BD JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x4CFD DUP10 DUP3 DUP11 ADD PUSH2 0x44BD JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x4D0E DUP10 DUP3 DUP11 ADD PUSH2 0x44BD JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x4D1F DUP10 DUP3 DUP11 ADD PUSH2 0x44BD JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x4D30 DUP10 DUP3 DUP11 ADD PUSH2 0x44BD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4D58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4D64 DUP11 DUP11 PUSH2 0x44B2 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x4D75 DUP11 DUP3 DUP12 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x4D86 DUP11 DUP3 DUP12 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x4D97 DUP11 DUP3 DUP12 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x4DA8 DUP11 DUP3 DUP12 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x4DB9 DUP11 DUP3 DUP12 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x4DCA DUP11 DUP3 DUP12 ADD PUSH2 0x44B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DE5 DUP4 DUP4 PUSH2 0x4E1D JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DE5 DUP4 DUP4 PUSH2 0x4F90 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E05 DUP4 DUP4 PUSH2 0x5577 JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x4E17 DUP2 PUSH2 0x5B86 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4E17 DUP2 PUSH2 0x5B57 JUMP JUMPDEST PUSH2 0x4E17 PUSH2 0x4E32 DUP3 PUSH2 0x5B57 JUMP JUMPDEST PUSH2 0x5BCF JUMP JUMPDEST PUSH2 0x4E40 DUP2 PUSH2 0x5B3E JUMP JUMPDEST PUSH2 0x4E4A DUP2 DUP5 PUSH2 0xE0A JUMP JUMPDEST SWAP3 POP PUSH2 0x4E55 DUP3 PUSH2 0xF17 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF86 JUMPI DUP2 MLOAD PUSH2 0x4E6D DUP8 DUP3 PUSH2 0x4DD9 JUMP JUMPDEST SWAP7 POP PUSH2 0x4E78 DUP4 PUSH2 0x5B38 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4E59 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E8E DUP3 PUSH2 0x5B44 JUMP JUMPDEST PUSH2 0x4E98 DUP2 DUP6 PUSH2 0x5B4E JUMP JUMPDEST SWAP4 POP PUSH2 0x4EA3 DUP4 PUSH2 0x5B38 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4ED1 JUMPI DUP2 MLOAD PUSH2 0x4EBB DUP9 DUP3 PUSH2 0x4DED JUMP JUMPDEST SWAP8 POP PUSH2 0x4EC6 DUP4 PUSH2 0x5B38 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4EA7 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EE7 DUP3 PUSH2 0x5B44 JUMP JUMPDEST PUSH2 0x4EF1 DUP2 DUP6 PUSH2 0x5B4E JUMP JUMPDEST SWAP4 POP PUSH2 0x4EFC DUP4 PUSH2 0x5B38 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4ED1 JUMPI DUP2 MLOAD PUSH2 0x4F14 DUP9 DUP3 PUSH2 0x4DF9 JUMP JUMPDEST SWAP8 POP PUSH2 0x4F1F DUP4 PUSH2 0x5B38 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4F00 JUMP JUMPDEST PUSH2 0x4F33 DUP2 PUSH2 0x5B48 JUMP JUMPDEST PUSH2 0x4F3D DUP2 DUP5 PUSH2 0xE0A JUMP JUMPDEST SWAP3 POP PUSH2 0x4F48 DUP3 PUSH2 0xF17 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF86 JUMPI DUP2 MLOAD PUSH2 0x4F60 DUP8 DUP3 PUSH2 0x4DED JUMP JUMPDEST SWAP7 POP PUSH2 0x4F6B DUP4 PUSH2 0x5B38 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4F4C JUMP JUMPDEST PUSH2 0x4E17 DUP2 PUSH2 0x5B62 JUMP JUMPDEST PUSH2 0x4E17 PUSH2 0x4F8B DUP3 PUSH2 0x5B62 JUMP JUMPDEST PUSH2 0x5BDA JUMP JUMPDEST PUSH2 0x4E17 DUP2 PUSH2 0xF17 JUMP JUMPDEST PUSH2 0x4E17 PUSH2 0x4FA5 DUP3 PUSH2 0xF17 JUMP JUMPDEST PUSH2 0xF17 JUMP JUMPDEST PUSH2 0x4E17 PUSH2 0x4FA5 DUP3 PUSH2 0x5B67 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FC1 DUP3 PUSH2 0x5B44 JUMP JUMPDEST PUSH2 0x4FCB DUP2 DUP6 PUSH2 0x5B4E JUMP JUMPDEST SWAP4 POP PUSH2 0x4FDB DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5BA3 JUMP JUMPDEST PUSH2 0x4FE4 DUP2 PUSH2 0x5BFB JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FF9 DUP3 PUSH2 0x5B44 JUMP JUMPDEST PUSH2 0x5003 DUP2 DUP6 PUSH2 0xE0A JUMP JUMPDEST SWAP4 POP PUSH2 0x5013 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5BA3 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x502A PUSH1 0xC DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH12 0x636F6C6C20746F6F206C6F77 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5052 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5070 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x508E PUSH1 0x26 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50D6 PUSH1 0x1B DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x510F PUSH1 0x21 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5152 PUSH1 0xE DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x517C PUSH1 0x1 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5199 PUSH1 0x12 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH18 0x6E6F7420656E6F7567682062616C616E6365 PUSH1 0x70 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51C7 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51E5 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5203 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5221 PUSH1 0x21 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5264 PUSH1 0x15 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5295 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B3 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52D1 PUSH1 0xF DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52FC PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x531A PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5338 PUSH1 0x21 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x537B PUSH1 0xC DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53A3 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53C1 PUSH1 0x2 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53DF PUSH1 0x27 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206D756C7469706C69636174696F6E206F DUP2 MSTORE PUSH7 0x766572666C6F77 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5428 PUSH1 0x1D DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x696E76616C6964207261746520636F6C6C61746572616C20746F6B656E000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5461 PUSH1 0xA DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH10 0x37B7363CA830BAB9B2B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5487 PUSH1 0xC DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54AF PUSH1 0x24 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 DUP2 MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54F5 PUSH1 0x18 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x34303120757365206F66206578697374696E67206C6F616E0000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x552E PUSH1 0x1 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x554B PUSH1 0x20 DUP4 PUSH2 0x5B4E JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206279207A65726F DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x5589 DUP5 DUP3 PUSH2 0x4F90 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x559C PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4F76 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x55AF PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4E1D JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x55C2 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4E1D JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x55D5 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x4E1D JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x55E8 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4F90 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x55FB PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x4F90 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x3661 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x4E17 DUP2 PUSH2 0x5B80 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5623 DUP3 DUP6 PUSH2 0x4E26 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x5633 DUP3 DUP5 PUSH2 0x4F7F JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5649 DUP3 DUP6 PUSH2 0x4E26 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x5659 DUP3 DUP5 PUSH2 0x4F99 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x566F DUP3 DUP6 PUSH2 0x4FAA JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x5659 DUP3 DUP5 PUSH2 0x4F99 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0D DUP3 DUP5 PUSH2 0x4FEE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEFF DUP3 DUP5 PUSH2 0x4E1D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEFF DUP3 DUP5 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x56B5 DUP3 DUP6 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0xD0D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4E1D JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x56D0 DUP3 DUP6 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0xD0D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x56EB DUP3 DUP7 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x56F8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x10EA PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4F90 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x5713 DUP3 DUP9 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x5720 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x572D PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x573A PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x3B4D PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x5755 DUP3 DUP10 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x5762 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x576F PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x577C PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x5789 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x5796 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4F90 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x57AF DUP3 DUP6 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0xD0D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4F90 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x57CA DUP3 DUP7 PUSH2 0x4E1D JUMP JUMPDEST PUSH2 0x57D7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x10EA PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4E0E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD0D DUP2 DUP5 PUSH2 0x4E83 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD0D DUP2 DUP5 PUSH2 0x4EDC JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEFF DUP3 DUP5 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEFF DUP3 DUP5 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x1C0 DUP2 ADD PUSH2 0x5831 DUP3 DUP11 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x583E PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x584B PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4F76 JUMP JUMPDEST PUSH2 0x5858 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x5865 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4E37 JUMP JUMPDEST PUSH2 0x5873 PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4F2A JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x1A0 DUP4 ADD MSTORE PUSH2 0x5886 DUP2 DUP5 PUSH2 0x4FB6 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD0D DUP2 DUP5 PUSH2 0x4FB6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x501D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5045 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5063 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5081 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x50C9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5102 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5145 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x516F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x518C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x51BA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x51D8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x51F6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5214 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5257 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5288 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x52A6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x52C4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x52EF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x530D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x532B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x536E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5396 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x53B4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x53D2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x541B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5454 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x547A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x54A2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x54E8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x5521 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xEFF DUP2 PUSH2 0x553E JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x57AF DUP3 DUP6 PUSH2 0x4F90 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x5AB0 DUP3 DUP7 PUSH2 0x4F90 JUMP JUMPDEST PUSH2 0x56F8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4F90 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xEFF DUP3 DUP5 PUSH2 0x560E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5AE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5B07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST POP PUSH1 0x4 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x5 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x5B74 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x5B57 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5BBE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5BA6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x3661 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x5BE5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x5BF0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x5C0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFF DUP3 PUSH2 0x5C05 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x5C1A DUP2 PUSH2 0x5B57 JUMP JUMPDEST DUP2 EQ PUSH2 0x2653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5C1A DUP2 PUSH2 0x5B62 JUMP JUMPDEST PUSH2 0x5C1A DUP2 PUSH2 0xF17 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xC7 ORIGIN LT 0xBF 0xED 0x5F SWAP14 0xC3 BLOCKHASH 0xD9 0xBB PUSH14 0x509064E47607585D837100B09C7A 0xCB 0x22 ADDRESS 0xC 0xC4 SWAP7 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "215:704:110:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;215:704:110;;30250:914:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;30250:914:5;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;559:36:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;559:36:7;;;:::i;:::-;;;;;;;;26169:332:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26169:332:5;;;;;;;;:::i;1977:18:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1977:18:3;;;:::i;:::-;;;;;;;;1489:181:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1489:181:0;;;;;;;;:::i;:::-;;;;;;;;23294:120:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23294:120:5;;;:::i;24056:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24056:219:5;;;;;;;;:::i;1778:80:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1778:80:1;;;:::i;31167:391:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;31167:391:5;;;;;;;;:::i;:::-;;2441:27:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2441:27:3;;;:::i;2150:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2150:23:3;;;:::i;24745:159:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24745:159:5;;;:::i;17300:315::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17300:315:5;;;;;;;;:::i;12249:2583::-;;;;;;;;;:::i;:::-;;;;;;;;;1580:77:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1580:77:7;;;;;;;;:::i;7601:2798:5:-;;;;;;;;;:::i;598:32:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;598:32:7;;;:::i;2021:21:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2021:21:3;;;:::i;:::-;;;;;;;;2633:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2633:48:3;;;;;;;;:::i;2176:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:29:3;;;:::i;3823:156:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3823:156:5;;;;;;;;:::i;22451:120::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22451:120:5;;;:::i;20318:285::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20318:285:5;;;;;;;;:::i;2310:24:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2310:24:3;;;:::i;22119:227:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22119:227:5;;;:::i;28552:995::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;28552:995:5;;;;;;;;:::i;26954:895::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26954:895:5;;;;;;;;:::i;:::-;;;;;;;;;;1386:73:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1386:73:7;;;;;;;;:::i;2035:96:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2035:96:1;;;;;;;;:::i;47566:377:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;47566:377:5;;;;;;;;:::i;1174:410:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1174:410:4;;;;;;;;:::i;2115:31:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2115:31:3;;;:::i;2407:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2407:31:3;;;:::i;2241:36::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2241:36:3;;;:::i;21419:245:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21419:245:5;;;:::i;25557:509::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25557:509:5;;;;;;;;:::i;22757:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22757:101:5;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;976:37:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;976:37:7;;;:::i;1134:83:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;25091:232:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25091:232:5;;;:::i;1998:20:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1998:20:3;;;:::i;633:22:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;633:22:7;;;:::i;4471:340:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4471:340:5;;;;;;;;:::i;899:21:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;899:21:7;;;:::i;16923:145:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16923:145:5;;;;;;;;:::i;23018:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23018:136:5;;;;;;;;:::i;2281:26:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2281:26:3;;;:::i;53404:333:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;53404:333:5;;;;;;;;:::i;475:166:110:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;475:166:110;;;;;;;;:::i;815:31:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:31:7;;;:::i;55680:115:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;55680:115:5;;;;;;;;:::i;528:236:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;528:236:4;;;;;;;;:::i;23646:162:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23646:162:5;;;;;;;;:::i;2208:30:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2208:30:3;;;:::i;1977:745:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1977:745:7;;;;;;;;:::i;4714:816::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4714:816:7;;;;;;;;:::i;2464:123:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2464:123:1;;;;;;;;:::i;5857:447:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5857:447:7;;;;;;;;:::i;2854:51:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2854:51:3;;;;;;;;:::i;2904:587:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2904:587:7;;;;;;;;:::i;21843:115:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21843:115:5;;;;;;;;:::i;2337:27:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2337:27:3;;;:::i;644:144:110:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;644:144:110;;;;;;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1351:98:142;;;;;;;;:::i;15691:938:5:-;;;;;;;;;:::i;658:20:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;658:20:7;;;:::i;2355:35:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2355:35:5;;;:::i;30250:914::-;30450:20;30480:18;;30476:685;;-1:-1:-1;;;;;30509:36:5;;30505:84;;30572:17;;-1:-1:-1;;;;;30572:17:5;;-1:-1:-1;30505:84:5;30594:20;30617:13;:81;30666:22;30690:4;30649:46;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;30649:46:5;;;30639:57;;49:4:-1;30639:57:5;;;;30617:81;;;;;;;;;;;30631:66;30617:81;;30731:21;;30775:16;;;30844:74;;-1:-1:-1;;;30844:74:5;;30617:81;;-1:-1:-1;;;;;;30731:21:5;;;;30718:51;;30731:21;30775:16;;;;;;;30797:22;;30825:13;;30731:21;;30844:60;;:74;;30617:81;;30844:74;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30844:74:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30844:74:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30844:74:5;;;;;;;;;30943:4;30718:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30718:251:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30718:251:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30718:251:5;;;;;;;;;30703:266;;30996:86;31028:12;31042:18;:16;:18::i;:::-;31062:19;30996:31;:86::i;:::-;30975:107;-1:-1:-1;31107:20:5;;-1:-1:-1;31107:18:5;;-1:-1:-1;31107:20:5:i;:::-;31092:12;:35;31088:69;;;31150:1;31135:16;;31088:69;30476:685;;30250:914;;;;;:::o;559:36:7:-;;;-1:-1:-1;;;;;559:36:7;;:::o;26169:332:5:-;26274:22;;26230:7;;;;-1:-1:-1;;;;;26274:22:5;:36;26270:153;;26348:22;;26331:87;;-1:-1:-1;;;26331:87:5;;-1:-1:-1;;;;;26348:22:5;;;;26331:64;;:87;;26404:4;;26411:6;;26331:87;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26331:87:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26331:87:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;26331:87:5;;;;;;;;;26317:101;;26270:153;26433:64;26490:6;26433:52;26472:12;:10;:12::i;:::-;26433:34;26455:11;26433:17;26443:6;26433:9;:17::i;:::-;:21;:34;:21;:34;:::i;:::-;:38;:52;:38;:52;:::i;:::-;:56;:64;:56;:64;:::i;:::-;26426:71;;;26169:332;;;;:::o;1977:18:3:-;;;;;;;;;;;;;;-1:-1:-1;;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1489:181:0:-;1574:10;1556:4;1566:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1566:29:0;;;;;;;;;;:38;;;1613;1556:4;;1566:29;;1613:38;;;;1598:6;;1613:38;;;;;;;;;;-1:-1:-1;1662:4:0;1489:181;;;;;:::o;23294:120:5:-;23345:7;23365:45;23389:20;23407:1;23389:17;:20::i;23365:45::-;23358:52;;23294:120;;:::o;24056:219::-;24131:7;24144:19;24166:18;:16;:18::i;:::-;24144:40;-1:-1:-1;24192:16:5;;24188:84;;24222:45;24242:11;24255;24222:19;:45::i;:::-;24215:52;;;;;24188:84;24056:219;;;;:::o;1778:80:1:-;1842:12;;1778:80;:::o;31167:391:5:-;31356:27;31392:101;31418:14;31434:13;31449:19;31470:22;31392:25;:101::i;:::-;31353:140;;;;31528:9;31505:19;:32;;31497:57;;;;-1:-1:-1;;;31497:57:5;;;;;;;;;;;;;;;;;31167:391;;;;;;:::o;2441:27:3:-;;;;:::o;2150:23::-;;;;:::o;24745:159:5:-;24827:21;;24883:16;;;24814:86;;-1:-1:-1;;;24814:86:5;;24794:7;;-1:-1:-1;;;;;24827:21:5;;;;24814:53;;:86;;24876:4;;24827:21;24883:16;;;;;;;24814:86;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24814:86:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24814:86:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;24814:86:5;;;;;;;;17300:315;17518:21;;17505:58;;-1:-1:-1;;;17505:58:5;;17393:4;;17413:198;;17440:5;;17451:3;;17460:6;;-1:-1:-1;;;;;17518:21:5;;17505:46;;:58;;17552:10;;17505:58;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17505:58:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17505:58:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17505:58:5;;;;;;;;;:101;;-1:-1:-1;;;;;17580:14:5;;;;;;:7;:14;;;;;;;;17595:10;17580:26;;;;;;;;17505:101;;;-1:-1:-1;;17505:101:5;17413:21;:198::i;:::-;17403:208;17300:315;-1:-1:-1;;;;17300:315:5:o;12249:2583::-;12754:7;12766;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;12844:13:5;:11;:13::i;:::-;12862:107;12883:14;12899:13;12914:19;12935:22;12959:9;12862:20;:107::i;:::-;-1:-1:-1;;;;;12978:36:5;;12974:94;;13046:17;;-1:-1:-1;;;;;13046:17:5;;-1:-1:-1;12974:94:5;13106:16;;-1:-1:-1;;;;;13080:42:5;;;13106:16;;;;;13080:42;;13072:57;;;;-1:-1:-1;;;13072:57:5;;;;;;;;;13193:11;;;:35;;-1:-1:-1;13208:10:5;-1:-1:-1;;;;;13208:20:5;;;13193:35;13185:72;;;;-1:-1:-1;;;13185:72:5;;;;;;;;;-1:-1:-1;;;;;13307:40:5;;13350:1;13307:40;;;:16;:40;;;;;;:44;13303:122;;-1:-1:-1;;;;;13384:40:5;;;;;;:16;:40;;;;;;13361:63;;;13353:72;;;;;;13450:16;;;;;-1:-1:-1;;;;;13450:16:5;13470:1;13433:34;;;:16;:34;;;;;;:38;13429:104;;13515:16;;;;;-1:-1:-1;;;;;13515:16:5;13498:34;;;;:16;:34;;;;;;13481:51;;;13473:60;;;;;;13694:20;13717:73;13731:22;13755:19;13776:13;13717;:73::i;:::-;13694:96;-1:-1:-1;13802:17:5;13794:32;;;;-1:-1:-1;;;13794:32:5;;;;;;;;;13831:31;;:::i;:::-;13866:29;;:::i;:::-;13927:4;13900:32;;-1:-1:-1;;;;;13952:25:5;;13900:16;13952;;;:25;;;13981:16;;;:25;;;;14123:14;;:29;;;14288:14;;;:30;;;14322:14;;;:36;;;14363:17;:15;:17::i;:::-;14420:120;14485:14;14504:11;14516:1;14504:14;;;;14420:29;:120::i;:::-;14385:155;;14386:14;;;14385:155;14601:36;14614:6;14622:14;14601:12;:36::i;:::-;14584:53;;14651:177;14671:6;14683:1;14709:14;14746:22;14774:13;14793:11;14810:13;14651:14;:177::i;:::-;493:1:143;1234:14;:38;14641:187:5;;;;-1:-1:-1;12249:2583:5;-1:-1:-1;;;;;;;;;;;;12249:2583:5:o;1580:77:7:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1637:6:7;:16;;-1:-1:-1;;;;;;1637:16:7;-1:-1:-1;;;;;1637:16:7;;;;;;;;;;1580:77::o;7601:2798:5:-;8198:7;8210;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;8295:19:5;8287:33;;;;-1:-1:-1;;;8287:33:5;;;;;;;;;8325:13;:11;:13::i;:::-;-1:-1:-1;;;;;8388:40:5;;8431:1;8388:40;;;:16;:40;;;;;;:44;8384:122;;-1:-1:-1;;;;;8465:40:5;;;;;;:16;:40;;;;;;8442:63;;;8434:72;;;;;;8524:9;:14;;:50;;;8555:19;8542:9;:32;8524:50;8523:101;;;;-1:-1:-1;8584:24:5;;;;:39;;-1:-1:-1;8612:11:5;;;8584:39;8523:180;;;;-1:-1:-1;;;;;;8633:36:5;;;;;:54;;-1:-1:-1;8673:9:5;:14;;8633:54;:69;;;-1:-1:-1;8691:11:5;;;8633:69;8523:227;;;;-1:-1:-1;8712:11:5;;;:37;;-1:-1:-1;8727:10:5;-1:-1:-1;;;;;8727:22:5;;;8712:37;8511:251;;;;-1:-1:-1;;;8511:251:5;;;;;;;;;-1:-1:-1;;;;;9283:36:5;;9279:94;;9351:17;;-1:-1:-1;;;;;9351:17:5;;-1:-1:-1;9279:94:5;9410:16;;-1:-1:-1;;;;;9384:42:5;;;9410:16;;;;;9384:42;;9376:57;;;;-1:-1:-1;;;9376:57:5;;;;;;;;;9438:17;:15;:17::i;:::-;9460:31;;:::i;:::-;9495:29;;:::i;:::-;9556:4;9529:32;;-1:-1:-1;;;;;9581:27:5;;;9529:16;9581;;;:27;;;;9612;;;:16;;;:27;9698:14;;:31;;;9860:134;9715:14;9915:20;9543:1;9915:17;:20::i;:::-;9971:19;9860:31;:134::i;:::-;9810:11;9822:1;9810:14;;;9826:11;9838:1;9826:14;;;9842:11;9854:1;9842:14;;;9809:185;;;;;;;;10060:19;10043:11;10055:1;10043:14;;;:36;;;;;10094:301;10114:6;10126:14;10167:21;;;;;;;;;-1:-1:-1;;;;;10167:21:5;-1:-1:-1;;;;;10146:60:5;;10213:13;:81;10262:22;10286:4;10245:46;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10245:46:5;;;10235:57;;;;;;10227:66;;10213:81;;;;;;;;;;;;10146:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10146:154:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10146:154:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10146:154:5;;;;;;;;;10306:22;10334:13;10353:11;10094:301;;;;;;;;;;;;:14;:301::i;:::-;493:1:143;1234:14;:38;10084:311:5;;;;-1:-1:-1;7601:2798:5;-1:-1:-1;;;;;;;;;;;7601:2798:5:o;598:32:7:-;;;-1:-1:-1;;;;;598:32:7;;:::o;2021:21:3:-;;;;;;:::o;2633:48::-;;;;;;;;;;;;;:::o;2176:29::-;;;;:::o;3823:156:5:-;3909:18;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;3940:35:5;3951:8;3961:13;3940:10;:35::i;:::-;3933:42;;1229:1:143;493;1234:14;:38;3823:156:5;;-1:-1:-1;;3823:156:5:o;22451:120::-;22505:7;22525:42;22548:18;:16;:18::i;:::-;22525:22;:42::i;20318:285::-;20373:6;20428:12;20470:4;2569:66;20476:18;;20453:42;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20453:42:5;;;20443:53;;;;;;20428:68;;20529:70;20539:4;20545:8;:14;20554:4;-1:-1:-1;;;;;20545:14:5;-1:-1:-1;;;;;20545:14:5;;;;;;;;;;;;;20561:12;:10;:12::i;:::-;-1:-1:-1;;;;;20575:23:5;;;;;;:17;:23;;;;;;20529:9;:70::i;2310:24:3:-;;;;:::o;22119:227:5:-;22167:7;22180:19;22202:20;22220:1;22202:17;:20::i;:::-;22180:42;;22226:19;22248:18;:16;:18::i;:::-;22226:40;;22288:11;22274;:25;22270:73;;;22313:25;;;-1:-1:-1;22306:32:5;;22270:73;22119:227;;;:::o;28552:995::-;28751:21;28782:17;;28778:766;;28811:23;28838:86;28870:12;28884:18;:16;:18::i;28838:86::-;28806:118;;;;28953:20;:18;:20::i;:::-;28934:15;:39;28930:610;;-1:-1:-1;;;;;28985:36:5;;28981:84;;29048:17;;-1:-1:-1;;;;;29048:17:5;;-1:-1:-1;28981:84:5;29071:20;29094:13;:81;29143:22;29167:4;29126:46;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;29126:46:5;;;29116:57;;49:4:-1;29116:57:5;;;;29094:81;;;;;;;;;;;29108:66;29094:81;;29206:21;;29265:16;;;29342:74;;-1:-1:-1;;;29342:74:5;;29094:81;;-1:-1:-1;29193:292:5;;29482:2;;-1:-1:-1;;;;;29206:21:5;;;;29193:64;;29206:21;29265:16;;;;;29289:22;;29319:15;;29206:21;;29342:60;;:74;;29094:81;;29342:74;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29342:74:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29342:74:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;29342:74:5;;;;;;;;;29442:4;29193:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29193:277:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29193:277:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;29193:277:5;;;;;;;;:292;29181:304;;;;;;26954:895;27163:17;;;-1:-1:-1;;;;;27242:36:5;;27238:94;;27310:17;;-1:-1:-1;;;;;27310:17:5;;-1:-1:-1;27238:94:5;27336:20;27359:73;27373:22;27397:19;27418:13;27359;:73::i;:::-;27336:96;;27465:59;27495:14;27511:12;27465:29;:59::i;:::-;27437:87;;-1:-1:-1;27437:87:5;-1:-1:-1;27544:20:5;:18;:20::i;:::-;27532:9;:32;27528:64;;;-1:-1:-1;27579:1:5;;-1:-1:-1;27579:1:5;;-1:-1:-1;27579:1:5;;-1:-1:-1;27571:16:5;;27528:64;27612:28;:13;27630:9;27612:28;:17;:28;:::i;:::-;27671:21;;27725:16;;;27658:187;;-1:-1:-1;;;27658:187:5;;27596:44;;-1:-1:-1;;;;;;27671:21:5;;;;27658:62;;:187;;27671:21;27725:16;;;;;27746:22;;27596:44;;27791:19;;27815:12;;27832:9;;27658:187;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27658:187:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27658:187:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;27658:187:5;;;;;;;;;27645:200;;26954:895;;;;;;;;;;:::o;1386:73:7:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1441:5:7;:14;;-1:-1:-1;;;;;;1441:14:7;-1:-1:-1;;;;;1441:14:7;;;;;;;;;;1386:73::o;2035:96:1:-;-1:-1:-1;;;;;2111:16:1;2091:7;2111:16;;;:8;:16;;;;;;;2035:96::o;47566:377:5:-;47658:7;47675:16;;;;;:46;;;47710:11;47695;:26;;47675:46;47671:269;;;47739:196;47928:6;47739:178;47839:77;47852:6;47873:21;;;;;;;;;-1:-1:-1;;;;;47873:21:5;-1:-1:-1;;;;;47860:53:5;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;47860:55:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47860:55:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;47860:55:5;;;;;;;;;47839:12;:77::i;:::-;47739:89;47785:42;47802:11;47815;47785:16;:42::i;:::-;47739:35;47762:11;47739:22;:35::i;:196::-;47728:207;;;;1174:410:4;1278:16;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;1300:87:4;;;;1322:23;1334:10;1322:11;:23::i;:::-;1311:34;;1300:87;;;1365:22;1376:10;1365;:22::i;:::-;1354:33;;1300:87;1480:13;;1476:105;;1500:76;1514:16;;;;;;;;;-1:-1:-1;;;;;1514:16:4;1532:8;1542;1500:76;;;;;;;;;;;;;-1:-1:-1;;;1500:76:4;;;:13;:76::i;:::-;493:1:143;1234:14;:38;1174:410:4;;-1:-1:-1;;;1174:410:4:o;2115:31:3:-;;;;;;-1:-1:-1;;;;;2115:31:3;;:::o;2407:::-;;;;:::o;2241:36::-;;;;:::o;21419:245:5:-;21511:15;;21462:13;;;;21537:15;-1:-1:-1;;;;;21511:42:5;;;:15;;:42;21507:96;;21581:17;:15;:17::i;:::-;21560:38;-1:-1:-1;;21507:96:5;21614:46;21626:33;21644:14;21626:17;:33::i;:::-;21614:11;:46::i;:::-;21607:53;;;21419:245;:::o;25557:509::-;25630:23;25810:27;25840:29;25865:3;25840:20;25857:2;25840:12;;:16;;:20;;;;:::i;:29::-;25810:59;-1:-1:-1;25873:14:5;25890:40;25898:6;25810:59;25890:40;:19;:40;:::i;:::-;25873:57;;25934:19;25956:41;25990:6;25956:29;25978:6;25956:17;:15;:17::i;:41::-;25934:63;-1:-1:-1;26019:43:5;26047:14;26019:23;25934:63;26035:6;26019:23;:15;:23;:::i;:43::-;26001:61;25557:509;-1:-1:-1;;;;;25557:509:5:o;22757:101::-;22808:7;22828:26;22852:1;22828:23;:26::i;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;976:37:7:-;;;-1:-1:-1;;;;;976:37:7;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;25091:232:5:-;25183:15;;25140:7;;;;25209:15;-1:-1:-1;;;;;25183:42:5;;;:15;;:42;25179:96;;25253:17;:15;:17::i;:::-;25232:38;-1:-1:-1;;25179:96:5;25286:33;25304:14;25286:17;:33::i;1998:20:3:-;;;;;;;;;;;;;;;-1:-1:-1;;1998:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;633:22:7;;;-1:-1:-1;;;;;633:22:7;;:::o;4471:340:5:-;4554:22;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;4599:22:5;4610:10;4599;:22::i;:::-;4582:39;-1:-1:-1;4715:19:5;;4711:97;;4741:62;4755:16;;;;;;;;;-1:-1:-1;;;;;4755:16:5;4773:8;4783:14;4741:62;;;;;;;;;;;;;-1:-1:-1;;;4741:62:5;;;:13;:62::i;899:21:7:-;;;-1:-1:-1;;;;;899:21:7;;:::o;16923:145:5:-;16988:4;17005:59;17027:10;17039:3;17044:6;-1:-1:-1;;17005:21:5;:59::i;23018:136::-;23093:7;23113:37;23137:12;23113:23;:37::i;2281:26:3:-;;;;:::o;53404:333:5:-;53467:13;53486:10;53533:6;53516:24;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;53516:24:5;;;53506:35;;;;;;53486:56;;53546:12;53588:3;53601:66;53571:98;;;;;;;;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;53571:98:5;;;53561:109;;49:4:-1;53561:109:5;;;;53700:11;;53404:333;-1:-1:-1;;;;53404:333:5:o;475:166:110:-;577:21;;549:88;;-1:-1:-1;;;549:88:110;;-1:-1:-1;;;;;577:21:110;;;;549:72;;:88;;622:4;;628:8;;549:88;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;549:88:110;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;815:31:7;;;-1:-1:-1;;;;;815:31:7;;:::o;55680:115:5:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;55757:22:5;:34;;-1:-1:-1;;;;;;55757:34:5;-1:-1:-1;;;;;55757:34:5;;;;;;;;;;55680:115::o;528:236:4:-;635:14;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;655:105:4;;;;673:36;685:8;695:13;673:11;:36::i;:::-;666:43;;;;655:105;725:35;736:8;746:13;725:10;:35::i;23646:162:5:-;23721:7;23741:63;23765:38;23790:12;23765:20;23783:1;23765:17;:20::i;2208:30:3:-;;;;:::o;1977:745:7:-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;2162:16;;2097:33;;2162:16;;;-1:-1:-1;;;;;2162:16:7;2134:25;2183:174;2207:14;:21;2203:1;:25;2183:174;;;2270:17;2240:14;2255:1;2240:17;;;;;;;;;;;;;;:27;;:47;-1:-1:-1;;;;;2240:47:7;;;-1:-1:-1;;;;;2240:47:7;;;;;2324:14;:28;;2345:7;2324:28;;;2341:1;2324:28;2292:60;;:14;2307:1;2292:17;;;;;;;;;;;;;;;;;;:29;;:60;2230:3;;2183:174;;;-1:-1:-1;2401:21:7;;2380:75;;-1:-1:-1;;;2380:75:7;;-1:-1:-1;;;;;2401:21:7;;;;2380:59;;:75;;2440:14;;2380:75;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2380:75:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2380:75:7;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2380:75:7;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;2380:75:7;;;;;;;;;2361:94;-1:-1:-1;2464:9:7;2459:260;2483:16;:23;2479:1;:27;2459:260;;;2695:16;2712:1;2695:19;;;;;;;;;;;;;;2518:13;:174;2593:14;2608:1;2593:17;;;;;;;;;;;;;;:33;;;2635:14;2568:106;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2568:106:7;;;2551:130;;49:4:-1;2551:130:7;;;;2518:174;;;;;;;;;;2537:150;2518:174;:196;2508:3;;2459:260;;;;1160:1;;1977:745;;:::o;4714:816::-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;1875:6:3;4951:30:7;:15;4971:9;4951:30;:19;:30;:::i;:::-;:55;;4943:89;;;;-1:-1:-1;;;4943:89:7;;;;;;;;;1875:6:3;5044:44:7;:22;5071:16;5044:44;:26;:44;:::i;:::-;:69;;5036:103;;;;-1:-1:-1;;;5036:103:7;;;;;;;;;1875:6:3;5152:12:7;:37;;:76;;;;;1875:6:3;5193:10:7;:35;;5152:76;5144:104;;;;-1:-1:-1;;;5144:104:7;;;;;;;;;5253:8;:20;;;;5277:14;:32;;;;5313:15;:34;;;;5351:21;:46;5402:11;:26;5445:9;:22;5484:12;:28;4714:816::o;2464:123:1:-;-1:-1:-1;;;;;2558:15:1;;;2538:7;2558:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2464:123::o;5857:447:7:-;6000:6;;-1:-1:-1;;;;;6000:6:7;5986:10;:20;5978:43;;;;-1:-1:-1;;;5978:43:7;;;;;;;;;6065:12;6155:6;6138:24;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6138:24:7;;;6128:35;;;;;;6179:66;6098:154;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6098:154:7;;;6083:174;;;;;;6065:192;;6288:8;6282:4;6275:22;6270:31;;;:::o;2854:51:3:-;;;;;;;;;;;;;:::o;2904:587:7:-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;3030:47;;;3022:74;;;;-1:-1:-1;;;3022:74:7;;;;;;;;;3137:38;;;;;;;;;;;;;;;;3101:33;;3151:16;3137:38;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;3137:38:7;-1:-1:-1;3101:74:7;-1:-1:-1;3184:9:7;3179:225;3199:27;;;3179:225;;;3238:10;3286:16;;3303:1;3286:19;;;;;;;;;;;;;;;;;;;;;;3307:13;;3321:1;3307:16;;;;;;;;;;;;;;;;;;;;;;3269:55;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3269:55:7;;;3259:66;;;;;;3251:75;;3238:88;;3353:13;:17;3367:2;3353:17;;;;;;;;;;;;3331:16;3348:1;3331:19;;;;;;;;;;;;;;;;;;:39;;;;3382:17;;;;:13;:17;;;;;3375:24;3228:3;;3179:225;;;-1:-1:-1;3429:21:7;;3408:79;;-1:-1:-1;;;3408:79:7;;-1:-1:-1;;;;;3429:21:7;;;;3408:61;;:79;;3470:16;;3408:79;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3408:79:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3408:79:7;;;;1160:1;2904:587;;;;:::o;21843:115:5:-;-1:-1:-1;;;;;21930:24:5;21904:13;21930:24;;;:17;:24;;;;;;;21843:115::o;2337:27:3:-;;;;:::o;644:144:110:-;731:21;;703:81;;-1:-1:-1;;;703:81:110;;-1:-1:-1;;;;;731:21:110;;;;703:75;;:81;;779:4;;703:81;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;703:81:110;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;1351:98:142;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;15691:938:5:-;16216:7;;-1:-1:-1;;;;;16310:31:5;;;16306:139;;16374:21;;16346:99;;-1:-1:-1;;;16346:99:5;;-1:-1:-1;;;;;16374:21:5;;;;16346:72;;:99;;16419:6;;16427:17;;16346:99;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16346:99:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16346:99:5;;;;16306:139;16459:166;16476:6;16488:14;16508:13;16527:19;16552:22;16580:6;16592:9;16607:13;;16459:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16459:11:5;;-1:-1:-1;;;16459:166:5:i;:::-;16449:176;;;;15691:938;;;;;;;;;;;;;:::o;658:20:7:-;;;-1:-1:-1;;;;;658:20:7;;:::o;2355:35:5:-;2389:1;2355:35;:::o;37694:703::-;37874:20;37899:29;37933:23;37981:51;38006:12;38020:11;37981:24;:51::i;:::-;37966:66;-1:-1:-1;38162:169:5;38195:132;38213:6;38225:72;38279:17;38225:49;38213:6;38225:37;37966:66;38242:19;38225:37;:16;:37;:::i;38195:132::-;38162:24;:12;38179:6;38162:24;:16;:24;:::i;:169::-;38144:187;-1:-1:-1;38360:33:5;38144:187;38380:12;38360:33;:19;:33;:::i;:::-;38336:57;;37694:703;;;;;;;:::o;46398:126::-;46478:16;;;46471:49;;-1:-1:-1;;;46471:49:5;;46451:7;;46478:16;;;;-1:-1:-1;;;;;46478:16:5;;46471:34;;:49;;46514:4;;46471:49;;;812:155:145;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;1999:399;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;2817:121;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;52722:395:5:-;52796:19;52825:12;;52841:1;52825:17;52821:293;;52873:19;;52972:18;52968:96;;53014:44;53039:18;:16;:18::i;:::-;53014:20;:18;:20::i;:44::-;52998:60;;52968:96;53076:33;:13;53094:14;53076:33;:17;:33;:::i;17998:1140::-;18128:4;-1:-1:-1;;18142:16:5;:31;18138:110;;18209:34;;;;;;;;;;;;-1:-1:-1;;;18209:34:5;;;;;;:16;;18230:6;;18209:34;:20;:34;:::i;:::-;-1:-1:-1;;;;;18180:14:5;;;;;;:7;:14;;;;;;;;18195:10;18180:26;;;;;;;:63;18138:110;-1:-1:-1;;;;;18260:17:5;;18252:32;;;;-1:-1:-1;;;18252:32:5;;;;;;;;;-1:-1:-1;;;;;18313:15:5;;18289:21;18313:15;;;:8;:15;;;;;;;;;18359:31;;;;;;;;;;;-1:-1:-1;;;18359:31:5;;;;;;;18313:15;;18289:21;18359:31;;18313:15;;18377:6;;18359:31;:17;:31;:::i;:::-;-1:-1:-1;;;;;18394:15:5;;;;;;;:8;:15;;;;;;:34;;;18455:13;;;;;;;;;18332:58;;-1:-1:-1;18497:23:5;18455:13;18513:6;18497:23;:15;:23;:::i;:::-;-1:-1:-1;;;;;18524:13:5;;;;;;:8;:13;;;;;:30;;;18472:48;;-1:-1:-1;18620:12:5;:10;:12::i;:::-;18870:22;;18596:36;;-1:-1:-1;;;;;;18861:31:5;;;18870:22;;18861:31;;;;:64;;-1:-1:-1;18903:22:5;;-1:-1:-1;;;;;18896:29:5;;;18903:22;;18896:29;;18861:64;18857:225;;;18932:73;18951:5;18958:13;18973:16;18991:13;18932:18;:73::i;:::-;19010:67;19029:3;19034:11;19047:14;19063:13;19010:18;:67::i;:::-;19107:3;-1:-1:-1;;;;;19091:28:5;19100:5;-1:-1:-1;;;;;19091:28:5;;19112:6;19091:28;;;;;;;;;;;;;;;-1:-1:-1;19130:4:5;;17998:1140;-1:-1:-1;;;;;;;;;17998:1140:5:o;53915:312::-;53996:12;54038:7;;-1:-1:-1;;;;;;54038:7:5;54055:66;54021:102;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;54021:102:5;;;54011:113;;;;;;53996:128;;54128:13;54177:4;54171:11;54159:23;;54198:8;54197:9;54189:34;;;;-1:-1:-1;;;54189:34:5;;;;;;;;;53915:312;;:::o;35831:1405::-;36011:13;36033:24;;36029:1204;;36121:28;36151:33;36215:21;;;;;;;;;-1:-1:-1;;;;;36215:21:5;-1:-1:-1;;;;;36202:46:5;;:48;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36202:48:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36202:48:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36202:48:5;;;;;;;;;36286:16;;;36192:111;;-1:-1:-1;;;36192:111:5;;-1:-1:-1;;;;;36192:69:5;;;;;;:111;;36262:22;;36286:16;;;;;;;;36192:111;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36192:111:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36192:111:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36192:111:5;;;;;;;;;36120:183;;;;36317:20;36341:1;36317:25;;36316:63;;;;-1:-1:-1;36348:30:5;;;36316:63;36308:105;;;;-1:-1:-1;;;36308:105:5;;;;;;;;;36483:23;36509:76;36559:25;36509:45;:19;36533:20;36509:45;:23;:45;:::i;:76::-;36758:21;;36803:16;;;36745:116;;-1:-1:-1;;;36745:116:5;;36483:102;;-1:-1:-1;36709:29:5;;-1:-1:-1;;;;;36758:21:5;;;;36745:57;;:116;;36758:21;36803:16;;;;;;36821:22;;36483:102;;36745:116;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36745:116:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36745:116:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36745:116:5;;;;;;;;;36709:152;;36959:19;36934:21;:44;36930:245;;37102:67;37149:19;37102:42;:15;37122:21;37102:42;:19;:42;:::i;:67::-;37084:85;;36930:245;37195:33;:15;37215:12;37195:33;:19;:33;:::i;:::-;37180:48;35831:1405;-1:-1:-1;;;;;;;;35831:1405:5:o;35182:222::-;35265:15;;35241;;-1:-1:-1;;;;;35265:21:5;;;:15;;:21;35261:140;;35306:21;;35353:16;;;35293:77;;-1:-1:-1;;;35293:77:5;;-1:-1:-1;;;;;35306:21:5;;;;35293:59;;:77;;35306:21;35353:16;;;;;;35293:77;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35293:77:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;35376:15:5;:20;;-1:-1:-1;;;;;35376:20:5;;-1:-1:-1;;35376:20:5;;;;;;-1:-1:-1;;35182:222:5;:::o;51862:662::-;51977:20;;;52059:45;52097:6;52059:33;:13;52077:14;52059:33;:17;:33;:::i;:45::-;52026:78;;52294:70;52319:22;52343:20;52361:1;52343:17;:20::i;:::-;52294:24;:70::i;:::-;52279:85;;52458:62;52474:12;52488:7;52497:22;52458:15;:62::i;:::-;52443:77;;51862:662;;;;;;:::o;39227:2094::-;39473:7;39482;39495:13;:11;:13::i;:::-;39542:20;:18;:20::i;:::-;39524:14;;;;:38;;;;:118;;-1:-1:-1;39612:16:5;;;;-1:-1:-1;;;;;39612:30:5;;;39524:118;39512:161;;;;-1:-1:-1;;;39512:161:5;;;;;;;;;39682:16;;;;-1:-1:-1;;;;;39682:30:5;39678:114;;39738:16;;;;-1:-1:-1;;;;;39719:35:5;:16;;;:35;39678:114;39870:16;39889:84;39906:22;39930:13;39945:11;39958:14;39889:16;:84::i;:::-;40160:14;;;;40141;;;;39870:103;;-1:-1:-1;40141:34:5;;:14;:18;:34::i;:::-;40124:14;;;:51;40201:19;;40197:184;;40342:14;;;;:34;;40361:14;40342:18;:34::i;:::-;40325:14;;;:51;40197:184;40385:24;40480:19;;40476:61;;-1:-1:-1;40528:4:5;40476:61;40541:20;40564:13;:96;40613:22;40637:19;40596:61;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;40596:61:5;;;40586:72;;;;;;40578:81;;40564:96;;;;;;;;;;;;40541:119;;40713:21;;;;;;;;;-1:-1:-1;;;;;40713:21:5;-1:-1:-1;;;;;40700:57:5;;40764:8;40810:12;40827:6;40838:19;40862:13;40880;40898:11;40914:13;40700:231;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40700:231:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40700:231:5;;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;40700:231:5;;;;;;;;;40682:14;;;40665:266;40666:14;;;40665:266;;;40935:34;;;;-1:-1:-1;;;40935:34:5;;;;;;;;;41177:21;;41225:16;;;;41149:93;;-1:-1:-1;;;41149:93:5;;-1:-1:-1;;;;;41177:21:5;;;;41149:75;;:93;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41149:93:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41149:93:5;;;;41255:11;41267:1;41255:14;;;;;;;;;;;41271;;;;;41255;;41271;;-1:-1:-1;39227:2094:5;;-1:-1:-1;;;;;;;;;;39227:2094:5:o;31864:901::-;31943:18;31967:20;32084:30;32100:13;32084:15;:30::i;:::-;32296:22;;32055:59;;-1:-1:-1;32055:59:5;-1:-1:-1;32265:19:5;;-1:-1:-1;;;;;32296:22:5;:36;32292:148;;32368:22;;32351:89;;-1:-1:-1;;;32351:89:5;;-1:-1:-1;;;;;32368:22:5;;;;32351:64;;:89;;32424:4;;32431:8;;32351:89;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32351:89:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32351:89:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;32351:89:5;;;;;;;;;32337:103;;32292:148;-1:-1:-1;;;;;32465:18:5;;32444;32465;;;:8;:18;;;;;;:35;;32488:11;32465:35;:22;:35;:::i;:::-;32444:56;-1:-1:-1;32504:18:5;32525:26;32444:56;32540:10;32525:26;:14;:26;:::i;:::-;32504:47;;32592:56;32598:8;32608:10;32620:13;32635:12;32592:5;:56::i;:::-;;32695:66;32714:8;32724:10;32736;32748:12;32695:18;:66::i;:::-;31864:901;;;;;;;;:::o;47086:242::-;47162:7;47179:16;;47175:150;;47203:26;47235:17;:15;:17::i;:::-;-1:-1:-1;47202:50:5;-1:-1:-1;47264:56:5;47308:11;47264:39;47299:3;47264:30;47202:50;47287:6;47264:30;:22;:30;:::i;20916:383::-;21050:18;21078:21;21074:45;;-1:-1:-1;21113:1:5;21106:8;;21074:45;-1:-1:-1;21152:11:5;;21185:110;21152:11;21185:93;1927:6:3;21185:73:5;21248:8;21185:51;21192:13;21218:16;21185:51;:25;:51;:::i;:::-;:55;:73;:55;:73;:::i;:::-;:77;:93;:77;:93;:::i;:::-;:97;:110;:97;:110;:::i;1201:125:145:-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;55301:245:5:-;55392:7;55409:16;;;;;:36;;-1:-1:-1;55429:16:5;;;55409:36;55405:138;;;55498:40;55526:11;55498:23;:11;55514:6;55498:23;:15;:23;:::i;56237:681::-;56348:22;;56331:91;;-1:-1:-1;;;56331:91:5;;56296:7;;;;-1:-1:-1;;;;;56348:22:5;;;;56331:64;;:91;;56404:4;;56411:10;;56331:91;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56331:91:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;56331:91:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;56331:91:5;;;;;;;;;56309:113;;56476:10;56434:38;56450:21;56460:10;56450:9;:21::i;:::-;56434:11;;:38;:15;:38;:::i;:::-;:52;;56426:83;;;;-1:-1:-1;;;56426:83:5;;;;;;;;;56518:15;;56514:330;;56621:10;56607:11;:24;56603:237;;;56656:22;;56639:89;;-1:-1:-1;;;56639:89:5;;-1:-1:-1;;;;;56656:22:5;;;;56639:49;;:89;;56697:4;;56704:11;;56717:10;;56639:89;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56639:89:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;56639:89:5;;;;56603:237;;;56763:22;;56746:88;;-1:-1:-1;;;56746:88:5;;-1:-1:-1;;;;;56763:22:5;;;;56746:49;;:88;;56804:4;;56811:10;;56823;;56746:88;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56746:88:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;56746:88:5;;;;56603:237;56892:22;56903:10;33643:1275;33701:22;33737:15;33729:30;;;;-1:-1:-1;;;33729:30:5;;;;;;;;;33781:21;33791:10;33781:9;:21::i;:::-;33768:10;:34;33764:129;;;-1:-1:-1;;33817:10:5;:25;33809:40;;;;-1:-1:-1;;;33809:40:5;;;;;;;;;33867:21;33877:10;33867:9;:21::i;:::-;33854:34;;33764:129;33897:17;:15;:17::i;:::-;33919:20;33942:33;33954:20;33972:1;33954:17;:20::i;33942:33::-;33919:56;-1:-1:-1;33980:22:5;34005:40;34038:6;34005:28;:10;33919:56;34005:28;:14;:28;:::i;:40::-;33980:65;;34049:37;34089:20;:18;:20::i;:::-;34049:60;;34131:14;34114:31;;34175:29;34157:14;:47;;34149:62;;;;-1:-1:-1;;;34149:62:5;;;;;;;;;34393:22;;34362:19;;-1:-1:-1;;;;;34393:22:5;:36;34389:150;;34465:22;;34448:91;;-1:-1:-1;;;34448:91:5;;-1:-1:-1;;;;;34465:22:5;;;;34448:64;;:91;;34521:4;;34528:10;;34448:91;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34448:91:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34448:91:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;34448:91:5;;;;;;;;;34434:105;;34389:150;34573:10;34543:18;34564:20;;;:8;:20;;;;;;:37;;34589:11;34564:37;:24;:37;:::i;:::-;34543:58;-1:-1:-1;34605:18:5;34626:26;34543:58;34641:10;34626:26;:14;:26;:::i;:::-;34605:47;;34657:59;34663:10;34675;34687:14;34703:12;34657:5;:59::i;:::-;;34846:68;34865:10;34877;34889;34901:12;34846:18;:68::i;:::-;33643:1275;;;;;;;;;:::o;44412:223::-;44553:67;;44526:105;;44546:5;;-1:-1:-1;;;44576:31:5;44553:67;;44609:2;;44613:6;;44553:67;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;44553:67:5;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;44553:67:5;;;179:29:-1;;;;160:49;;;44622:8:5;44526:19;:105::i;:::-;44412:223;;;;:::o;51023:508::-;51346:21;;51413:16;;;51333:100;;-1:-1:-1;;;51333:100:5;;51073:26;;;;;;-1:-1:-1;;;;;51346:21:5;;;;51333:57;;:100;;51403:4;;51346:21;51413:16;;;;;;51333:100;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51333:100:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;51333:100:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;51333:100:5;;;;;;;;;-1:-1:-1;51268:165:5;;-1:-1:-1;51268:165:5;-1:-1:-1;51268:165:5;-1:-1:-1;51455:72:5;;-1:-1:-1;51520:6:5;;-1:-1:-1;51455:60:5;51474:40;51520:6;51268:165;51474:12;:40::i;:::-;51455:14;;:60;:18;:60;:::i;:72::-;51438:89;;51023:508;;;:::o;46696:217::-;46801:12;;46761:7;;46825:21;:84;;46897:12;;46825:84;;;46849:45;46877:16;46849:23;:11;46865:6;46849:23;:15;:23;:::i;48120:465::-;48198:7;;48241:17;;48237:260;;48269:15;;48295;-1:-1:-1;;;;;48269:42:5;;;:15;;:42;48265:98;;48340:17;:15;:17::i;:::-;48319:38;-1:-1:-1;;48265:98:5;48368:15;48386:40;48411:14;48386:20;:18;:20::i;:40::-;48368:58;;48450:7;48435:12;:22;48431:62;;;48480:7;48465:22;;48431:62;48237:260;;48508:73;48533:12;48547:33;48565:14;48547:17;:33::i;780:87:137:-;853:10;780:87;:::o;55798:436:5:-;55878:14;55944:35;55955:8;55965:13;55944:10;:35::i;:::-;56076:22;;55935:44;;-1:-1:-1;56044:71:5;;56066:8;;-1:-1:-1;;;;;56076:22:5;55935:44;;56044:21;:71::i;:::-;-1:-1:-1;56171:22:5;;56154:76;;-1:-1:-1;;;56154:76:5;;-1:-1:-1;;;;;56171:22:5;;;;56154:58;;:76;;56213:8;;56223:6;;56154:76;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56154:76:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;1538:204:142;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;49432:1397:5:-;49535:16;49557;49576:70;49593:39;49616:15;49593:18;:16;:18::i;:39::-;49634:11;49576:16;:70::i;:::-;49720:8;;49761:14;;49805:11;;49844:9;;49884:12;;49557:89;;-1:-1:-1;49651:19:5;;;;49720:8;49761:14;49805:11;49844:9;49905:26;;;49901:143;;;50024:15;50013:26;;49901:143;50063:13;50052:8;:24;50048:778;;;50221:25;;;;;1875:6:3;50155:37:5;;;50255:23;;;50251:52;;;50291:12;50280:23;;50251:52;50323:82;1875:6:3;50323:55:5;50364:13;50323:36;:18;50346:12;50323:36;:22;:36;:::i;:82::-;50309:96;;50422:92;50502:11;50422:75;50484:12;50422:57;50435:43;50448:16;50466:11;50435:12;:43::i;:::-;50422:8;;:57;:12;:57;:::i;:92::-;50411:103;;50048:778;;;;50541:77;50605:12;50541:59;1875:6:3;50541:32:5;:8;50554:18;50541:32;:12;:32;:::i;:77::-;50530:88;-1:-1:-1;50638:12:5;;-1:-1:-1;50638:12:5;;50669:36;:18;50638:12;50669:36;:22;:36;:::i;:::-;50655:50;;50726:11;50715:8;:22;50711:110;;;50750:11;50739:22;;50711:110;;;50786:11;50775:8;:22;50771:50;;;50810:11;50799:22;;50771:50;49432:1397;;;;;;;;;;;;:::o;3411:315:145:-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1614:175::-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;19597:545:5:-;19797:43;;19772:12;;19797:43;;19814:5;;2569:66;;19797:43;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19797:43:5;;;19787:54;;;;;;19772:69;;19846:21;19875:11;19890:1;19875:16;19871:173;;;19914:1;19898:17;;19871:173;;;19930:16;;19926:118;;-1:-1:-1;;;;;20014:24:5;;;;;;:17;:24;;;;;;19970:69;;19980:4;;19986:11;;19999:13;;19970:9;:69::i;:::-;19953:86;;19926:118;20062:28;;-1:-1:-1;;;;;20098:24:5;;;;;;;:17;:24;;;;;:40;;;;-1:-1:-1;;19597:545:5:o;54658:379::-;54790:28;;54854:43;54888:8;54854:29;:12;54871:11;54854:29;:16;:29;:::i;:43::-;54824:73;-1:-1:-1;54901:15:5;54919:40;54927:6;54824:73;54919:40;:19;:40;:::i;:::-;54901:58;-1:-1:-1;54986:47:5;54901:58;54986:34;:22;55013:6;54986:34;:26;:34;:::i;:47::-;54963:70;54658:379;-1:-1:-1;;;;;;54658:379:5:o;42095:1686::-;42316:17;;42365:16;;42404;;;;;42447:14;;;42489;;;;42537;;;;42272:16;;-1:-1:-1;;;;;42316:17:5;;;;;42365:16;;;;;42404;42447:14;42489;42537;42564:43;;;;;42556:58;;;;-1:-1:-1;;;42556:58:5;;;;;;;;;42630:9;;-1:-1:-1;42648:21:5;;42644:367;;42706:64;42720:17;42739:8;42749:16;42706:64;;;;;;;;;;;;:13;:64::i;:::-;42794:16;42779:12;:31;42775:141;;;42851:21;;42818:92;;;;;;;;;42851:21;42818:92;;;;42832:17;;-1:-1:-1;;;;;42851:21:5;;;;42874:31;;;;42818:13;:92::i;:::-;42644:367;;;42964:21;;42931:75;;;;;;;;;;;;-1:-1:-1;;;42931:75:5;;;;;;42945:17;;-1:-1:-1;;;;;42964:21:5;;;;42987:12;;42931:13;:75::i;:::-;43195:24;;43191:457;;43256:11;-1:-1:-1;;;;;43230:37:5;:22;-1:-1:-1;;;;;43230:37:5;;:54;;;;-1:-1:-1;43271:13:5;;;43230:54;:89;;;;;43300:19;43288:8;:31;;43230:89;43226:418;;;43334:11;-1:-1:-1;;;;;43327:27:5;;43361:19;43327:56;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43327:56:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;43427:21:5;;43389:89;;;;;;;;;;;;-1:-1:-1;;;43389:89:5;;;;;;-1:-1:-1;43403:22:5;;-1:-1:-1;;;;;;43427:21:5;;;;-1:-1:-1;43450:19:5;;43389:13;:89::i;:::-;43496:19;43484:31;;;;43226:418;;;43587:21;;43533:105;;;;;;;;;;;;-1:-1:-1;;;43533:105:5;;;;;;43551:22;;43575:10;;-1:-1:-1;;;;;43587:21:5;;43610:19;;43533:17;:105::i;:::-;43656:18;;43652:126;;43730:21;;43681:92;;;;;;;;;;;;-1:-1:-1;;;43681:92:5;;;;;;43699:17;;43718:10;;-1:-1:-1;;;;;43730:21:5;;43753:13;;43681:17;:92::i;:::-;42095:1686;;;;;;;;;;;;:::o;32980:473::-;33046:18;;33100;33092:33;;;;-1:-1:-1;;;33092:33:5;;;;;;;;;33130:17;:15;:17::i;:::-;33167:33;33179:20;33197:1;33179:17;:20::i;33167:33::-;33152:48;-1:-1:-1;33217:43:5;33152:48;33217:25;:13;33235:6;33217:25;:17;:25;:::i;:43::-;33204:56;-1:-1:-1;33269:9:5;33265:185;;33290:83;33308:16;;;;;;;;;-1:-1:-1;;;;;33308:16:5;33326:10;33346:4;33353:13;33290:83;;;;;;;;;;;;;-1:-1:-1;;;33290:83:5;;;:17;:83::i;:::-;33265:185;;;33396:17;;;;;;;;;-1:-1:-1;;;;;33396:17:5;-1:-1:-1;;;;;33389:33:5;;33429:13;33389:56;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33389:56:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33389:56:5;;;;;33265:185;32980:473;;;:::o;2167:422:0:-;2284:7;-1:-1:-1;;;;;2305:17:0;;2297:32;;;;-1:-1:-1;;;2297:32:0;;;;;;;;;-1:-1:-1;;;;;2353:13:0;;2334:16;2353:13;;;:8;:13;;;;;;:31;;2371:12;2353:31;:17;:31;:::i;:::-;-1:-1:-1;;;;;2388:13:0;;;;;;:8;:13;;;;;:24;;;2432:12;;2334:50;;-1:-1:-1;2432:30:0;;2449:12;2432:30;:16;:30;:::i;:::-;2417:12;:45;2472;;-1:-1:-1;;;;;2472:45:0;;;;;;;2482:12;;2496;;2510:6;;2472:45;;;;;;;;;;2547:3;-1:-1:-1;;;;;2526:39:0;2543:1;-1:-1:-1;;;;;2526:39:0;;2552:12;2526:39;;;;;;;;;;;;;;;2577:8;2167:422;-1:-1:-1;;;;;2167:422:0:o;1774:192:146:-;1830:6;1853:5;;;1871:6;;;;;;:16;;;1886:1;1881;:6;;1871:16;1870:38;;;;1897:1;1893;:5;:14;;;;;1906:1;1902;:5;1893:14;1862:87;;;;-1:-1:-1;;;1862:87:146;;;;;;;;422:488;478:6;694;690:30;;-1:-1:-1;714:1:146;707:8;;690:30;734:1;-1:-1:-1;;734:7:146;:27;;;;;-1:-1:-1;;;745:1:146;:16;734:27;732:30;724:82;;;;-1:-1:-1;;;724:82:146;;;;;;;;;822:5;;;826:1;822;:5;:1;839:5;;;;;:10;831:62;;;;-1:-1:-1;;;831:62:146;;;;;;;;1331:237;1387:6;1407;1399:51;;;;-1:-1:-1;;;1399:51:146;;;;;;;;;1464:1;-1:-1:-1;;1464:7:146;:27;;;;;-1:-1:-1;;;1475:1:146;:16;1464:27;1462:30;1454:76;;;;-1:-1:-1;;;1454:76:146;;;;;;;;;1535:8;1550:1;1546;:5;;;;;;;1331:237;-1:-1:-1;;;;1331:237:146:o;2166:189::-;2222:6;2245:5;;;2263:6;;;;;;:16;;;2278:1;2273;:6;;2263:16;2262:38;;;;2289:1;2285;:5;:14;;;;;2298:1;2294;:5;2285:14;2254:84;;;;-1:-1:-1;;;2254:84:146;;;;;;;;3070:641:0;3256:38;;;;;;;;;;;-1:-1:-1;;;3256:38:0;;;;;;;;-1:-1:-1;;;;;3256:14:0;;3188:7;3256:14;;;:8;:14;;;;;;;3188:7;;3256:38;;:14;3275:12;;3256:38;:18;:38;:::i;:::-;3237:57;;3381:2;3369:8;:14;3365:140;;3457:26;:12;3474:8;3457:26;:16;:26;:::i;:::-;3442:41;;3499:1;3488:12;;3365:140;-1:-1:-1;;;;;3508:14:0;;;;;;:8;:14;;;;;:25;;;3553:12;;:30;;3570:12;3553:30;:16;:30;:::i;:::-;3538:12;:45;3593:46;;-1:-1:-1;;;;;3593:46:0;;;;;;;3604:12;;3618;;3632:6;;3593:46;;;;;;;;;;3671:1;-1:-1:-1;;;;;3648:40:0;3657:4;-1:-1:-1;;;;;3648:40:0;;3675:12;3648:40;;;;;;;45987:292:5;46097:12;46111:23;46138:5;-1:-1:-1;;;;;46138:10:5;46149:4;46138:16;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;46096:58:5;;;;46166:7;46175:8;46158:26;;;;;-1:-1:-1;;;46158:26:5;;;;;;;;;;-1:-1:-1;46193:17:5;;:22;46189:87;;46241:10;46230:30;;;;;;;;;;;;;;46262:8;46222:49;;;;;-1:-1:-1;;;46222:49:5;;;;;;;;;45306:253;45467:77;;45440:115;;45460:5;;-1:-1:-1;;;45490:35:5;45467:77;;45527:4;;45533:2;;45537:6;;45467:77;;;;215:704:110;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;215:704:110;;;-1:-1:-1;;215:704:110:o;:::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;215:704:110;;;-1:-1:-1;;215:704:110:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;301:352;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;-1:-1;469:20;;-1:-1;;;;;498:30;;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;586:2;391:262;;;;;;1051:722;;1179:3;1172:4;1164:6;1160:17;1156:27;1146:2;;1197:1;1194;1187:12;1146:2;1227:6;1221:13;1249:80;1264:64;1321:6;1264:64;;;1249:80;;;1240:89;;1346:5;1371:6;1364:5;1357:21;1401:4;1393:6;1389:17;1379:27;;1423:4;1418:3;1414:14;1407:21;;1476:6;1523:3;1515:4;1507:6;1503:17;1498:3;1494:27;1491:36;1488:2;;;1540:1;1537;1530:12;1488:2;1565:1;1550:217;1575:6;1572:1;1569:13;1550:217;;;1633:3;1655:48;1699:3;1687:10;1655:48;;;1643:61;;-1:-1;1727:4;1718:14;;;;1746;;;;;1597:1;1590:9;1550:217;;1826:783;;1967:3;1960:4;1952:6;1948:17;1944:27;1934:2;;1985:1;1982;1975:12;1934:2;2022:6;2009:20;2044:104;2059:88;2140:6;2059:88;;2044:104;2035:113;;2165:5;2190:6;2183:5;2176:21;2220:4;2212:6;2208:17;2198:27;;2242:4;2237:3;2233:14;2226:21;;2295:6;2344:3;2334:6;2326;2322:19;2317:3;2313:29;2310:38;2307:2;;;2361:1;2358;2351:12;2307:2;2386:1;2371:232;2396:6;2393:1;2390:13;2371:232;;;2454:3;2476:61;2533:3;2521:10;2476:61;;;2464:74;;-1:-1;2561:4;2552:14;;;;2589:6;2580:16;;;;;2418:1;2411:9;2371:232;;2617:124;2681:20;;2706:30;2681:20;2706:30;;2748:128;2823:13;;2841:30;2823:13;2841:30;;2883:130;2950:20;;2975:33;2950:20;2975:33;;3020:134;3098:13;;3116:33;3098:13;3116:33;;3175:336;;;3289:3;3282:4;3274:6;3270:17;3266:27;3256:2;;3307:1;3304;3297:12;3256:2;-1:-1;3327:20;;-1:-1;;;;;3356:30;;3353:2;;;3399:1;3396;3389:12;3353:2;3433:4;3425:6;3421:17;3409:29;;3484:3;3476:4;3468:6;3464:17;3454:8;3450:32;3447:41;3444:2;;;3501:1;3498;3491:12;3520:440;;3621:3;3614:4;3606:6;3602:17;3598:27;3588:2;;3639:1;3636;3629:12;3588:2;3676:6;3663:20;3698:64;3713:48;3754:6;3713:48;;3698:64;3689:73;;3782:6;3775:5;3768:21;3818:4;3810:6;3806:17;3851:4;3844:5;3840:16;3886:3;3877:6;3872:3;3868:16;3865:25;3862:2;;;3903:1;3900;3893:12;3862:2;3913:41;3947:6;3942:3;3937;3913:41;;;3581:379;;;;;;;;4460:1384;;4573:6;4561:9;4556:3;4552:19;4548:32;4545:2;;;4593:1;4590;4583:12;4545:2;4611:22;4626:6;4611:22;;;4602:31;-1:-1;4681:1;4713:49;4758:3;4738:9;4713:49;;;4688:75;;-1:-1;4826:2;4859:46;4901:3;4877:22;;;4859:46;;;4852:4;4845:5;4841:16;4834:72;4784:133;4968:2;5001:49;5046:3;5037:6;5026:9;5022:22;5001:49;;;4994:4;4987:5;4983:16;4976:75;4927:135;5117:2;5150:49;5195:3;5186:6;5175:9;5171:22;5150:49;;;5143:4;5136:5;5132:16;5125:75;5072:139;5272:3;5306:49;5351:3;5342:6;5331:9;5327:22;5306:49;;;5299:4;5292:5;5288:16;5281:75;5221:146;5429:3;5463:49;5508:3;5499:6;5488:9;5484:22;5463:49;;;5456:4;5449:5;5445:16;5438:75;5377:147;5587:3;5621:49;5666:3;5657:6;5646:9;5642:22;5621:49;;;5614:4;5607:5;5603:16;5596:75;5534:148;5739:3;5773:49;5818:3;5809:6;5798:9;5794:22;5773:49;;;5766:4;5759:5;5755:16;5748:75;5692:142;4539:1305;;;;;6129:241;;6233:2;6221:9;6212:7;6208:23;6204:32;6201:2;;;6249:1;6246;6239:12;6201:2;6284:1;6301:53;6346:7;6326:9;6301:53;;6377:263;;6492:2;6480:9;6471:7;6467:23;6463:32;6460:2;;;6508:1;6505;6498:12;6460:2;6543:1;6560:64;6616:7;6596:9;6560:64;;6647:366;;;6768:2;6756:9;6747:7;6743:23;6739:32;6736:2;;;6784:1;6781;6774:12;6736:2;6819:1;6836:53;6881:7;6861:9;6836:53;;;6826:63;;6798:97;6926:2;6944:53;6989:7;6980:6;6969:9;6965:22;6944:53;;;6934:63;;6905:98;6730:283;;;;;;7020:491;;;;7158:2;7146:9;7137:7;7133:23;7129:32;7126:2;;;7174:1;7171;7164:12;7126:2;7209:1;7226:53;7271:7;7251:9;7226:53;;;7216:63;;7188:97;7316:2;7334:53;7379:7;7370:6;7359:9;7355:22;7334:53;;;7324:63;;7295:98;7424:2;7442:53;7487:7;7478:6;7467:9;7463:22;7442:53;;;7432:63;;7403:98;7120:391;;;;;;7518:366;;;7639:2;7627:9;7618:7;7614:23;7610:32;7607:2;;;7655:1;7652;7645:12;7607:2;7690:1;7707:53;7752:7;7732:9;7707:53;;;7697:63;;7669:97;7797:2;7815:53;7860:7;7851:6;7840:9;7836:22;7815:53;;7891:485;;;;8026:2;8014:9;8005:7;8001:23;7997:32;7994:2;;;8042:1;8039;8032:12;7994:2;8077:1;8094:53;8139:7;8119:9;8094:53;;;8084:63;;8056:97;8184:2;8202:53;8247:7;8238:6;8227:9;8223:22;8202:53;;;8192:63;;8163:98;8292:2;8310:50;8352:7;8343:6;8332:9;8328:22;8310:50;;8383:672;;;;;8571:2;8559:9;8550:7;8546:23;8542:32;8539:2;;;8587:1;8584;8577:12;8539:2;8622:31;;-1:-1;;;;;8662:30;;8659:2;;;8705:1;8702;8695:12;8659:2;8733:80;8805:7;8796:6;8785:9;8781:22;8733:80;;;8723:90;;;;8601:218;8878:2;8867:9;8863:18;8850:32;-1:-1;;;;;8894:6;8891:30;8888:2;;;8934:1;8931;8924:12;8888:2;8962:77;9031:7;9022:6;9011:9;9007:22;8962:77;;;8533:522;;;;-1:-1;8952:87;-1:-1;;;;8533:522;9062:392;;9202:2;9190:9;9181:7;9177:23;9173:32;9170:2;;;9218:1;9215;9208:12;9170:2;9253:24;;-1:-1;;;;;9286:30;;9283:2;;;9329:1;9326;9319:12;9283:2;9349:89;9430:7;9421:6;9410:9;9406:22;9349:89;;9461:544;;;9628:2;9616:9;9607:7;9603:23;9599:32;9596:2;;;9644:1;9641;9634:12;9596:2;9679:31;;-1:-1;;;;;9719:30;;9716:2;;;9762:1;9759;9752:12;9716:2;9782:102;9876:7;9867:6;9856:9;9852:22;9782:102;;;9772:112;;9658:232;9921:2;9939:50;9981:7;9972:6;9961:9;9957:22;9939:50;;10012:235;;10113:2;10101:9;10092:7;10088:23;10084:32;10081:2;;;10129:1;10126;10119:12;10081:2;10164:1;10181:50;10223:7;10203:9;10181:50;;10254:257;;10366:2;10354:9;10345:7;10341:23;10337:32;10334:2;;;10382:1;10379;10372:12;10334:2;10417:1;10434:61;10487:7;10467:9;10434:61;;10518:1225;;;;;;;;;10750:3;10738:9;10729:7;10725:23;10721:33;10718:2;;;10767:1;10764;10757:12;10718:2;10802:1;10819:53;10864:7;10844:9;10819:53;;;10809:63;;10781:97;10909:2;10927:53;10972:7;10963:6;10952:9;10948:22;10927:53;;;10917:63;;10888:98;11017:2;11035:53;11080:7;11071:6;11060:9;11056:22;11035:53;;;11025:63;;10996:98;11125:2;11143:53;11188:7;11179:6;11168:9;11164:22;11143:53;;;11133:63;;11104:98;11233:3;11252:53;11297:7;11288:6;11277:9;11273:22;11252:53;;;11242:63;;11212:99;11342:3;11361:53;11406:7;11397:6;11386:9;11382:22;11361:53;;;11351:63;;11321:99;11451:3;11470:53;11515:7;11506:6;11495:9;11491:22;11470:53;;;11460:63;;11430:99;11588:3;11577:9;11573:19;11560:33;-1:-1;;;;;11605:6;11602:30;11599:2;;;11645:1;11642;11635:12;11599:2;11665:62;11719:7;11710:6;11699:9;11695:22;11665:62;;;11655:72;;11539:194;10712:1031;;;;;;;;;;;;11750:1371;;;;;;;;;;;12009:3;11997:9;11988:7;11984:23;11980:33;11977:2;;;12026:1;12023;12016:12;11977:2;12061:1;12078:53;12123:7;12103:9;12078:53;;;12068:63;;12040:97;12168:2;12186:53;12231:7;12222:6;12211:9;12207:22;12186:53;;;12176:63;;12147:98;12276:2;12294:53;12339:7;12330:6;12319:9;12315:22;12294:53;;;12284:63;;12255:98;12384:2;12402:53;12447:7;12438:6;12427:9;12423:22;12402:53;;;12392:63;;12363:98;12492:3;12511:53;12556:7;12547:6;12536:9;12532:22;12511:53;;;12501:63;;12471:99;12601:3;12620:53;12665:7;12656:6;12645:9;12641:22;12620:53;;;12610:63;;12580:99;12710:3;12729:53;12774:7;12765:6;12754:9;12750:22;12729:53;;;12719:63;;12689:99;12819:3;12838:53;12883:7;12874:6;12863:9;12859:22;12838:53;;;12828:63;;12798:99;12956:3;12945:9;12941:19;12928:33;-1:-1;;;;;12973:6;12970:30;12967:2;;;13013:1;13010;13003:12;12967:2;13041:64;13097:7;13088:6;13077:9;13073:22;13041:64;;;13031:74;;;;12907:204;11971:1150;;;;;;;;;;;;;;13128:1225;;;;;;;;;13360:3;13348:9;13339:7;13335:23;13331:33;13328:2;;;13377:1;13374;13367:12;13328:2;13412:1;13429:53;13474:7;13454:9;13429:53;;;13419:63;;13391:97;13519:2;13537:53;13582:7;13573:6;13562:9;13558:22;13537:53;;;13527:63;;13498:98;13627:2;13645:53;13690:7;13681:6;13670:9;13666:22;13645:53;;;13635:63;;13606:98;13735:2;13753:53;13798:7;13789:6;13778:9;13774:22;13753:53;;;13743:63;;13714:98;13843:3;13862:53;13907:7;13898:6;13887:9;13883:22;13862:53;;;13852:63;;13822:99;13952:3;13971:53;14016:7;14007:6;13996:9;13992:22;13971:53;;;13961:63;;13931:99;14061:3;14080:53;14125:7;14116:6;14105:9;14101:22;14080:53;;14360:347;;14474:2;14462:9;14453:7;14449:23;14445:32;14442:2;;;14490:1;14487;14480:12;14442:2;14525:31;;-1:-1;;;;;14565:30;;14562:2;;;14608:1;14605;14598:12;14562:2;14628:63;14683:7;14674:6;14663:9;14659:22;14628:63;;14714:466;;;14842:2;14830:9;14821:7;14817:23;14813:32;14810:2;;;14858:1;14855;14848:12;14810:2;14893:31;;-1:-1;;;;;14933:30;;14930:2;;;14976:1;14973;14966:12;14930:2;14996:63;15051:7;15042:6;15031:9;15027:22;14996:63;;15187:241;;15291:2;15279:9;15270:7;15266:23;15262:32;15259:2;;;15307:1;15304;15297:12;15259:2;15342:1;15359:53;15404:7;15384:9;15359:53;;15435:263;;15550:2;15538:9;15529:7;15525:23;15521:32;15518:2;;;15566:1;15563;15556:12;15518:2;15601:1;15618:64;15674:7;15654:9;15618:64;;15705:366;;;15826:2;15814:9;15805:7;15801:23;15797:32;15794:2;;;15842:1;15839;15832:12;15794:2;15877:1;15894:53;15939:7;15919:9;15894:53;;16078:399;;;16210:2;16198:9;16189:7;16185:23;16181:32;16178:2;;;16226:1;16223;16216:12;16178:2;16261:1;16278:64;16334:7;16314:9;16278:64;;;16268:74;;16240:108;16379:2;16397:64;16453:7;16444:6;16433:9;16429:22;16397:64;;16484:491;;;;16622:2;16610:9;16601:7;16597:23;16593:32;16590:2;;;16638:1;16635;16628:12;16590:2;16673:1;16690:53;16735:7;16715:9;16690:53;;;16680:63;;16652:97;16780:2;16798:53;16843:7;16834:6;16823:9;16819:22;16798:53;;;16788:63;;16759:98;16888:2;16906:53;16951:7;16942:6;16931:9;16927:22;16906:53;;16982:617;;;;;17137:3;17125:9;17116:7;17112:23;17108:33;17105:2;;;17154:1;17151;17144:12;17105:2;17189:1;17206:53;17251:7;17231:9;17206:53;;;17196:63;;17168:97;17296:2;17314:53;17359:7;17350:6;17339:9;17335:22;17314:53;;;17304:63;;17275:98;17404:2;17422:53;17467:7;17458:6;17447:9;17443:22;17422:53;;;17412:63;;17383:98;17512:2;17530:53;17575:7;17566:6;17555:9;17551:22;17530:53;;;17520:63;;17491:98;17099:500;;;;;;;;17606:743;;;;;;17778:3;17766:9;17757:7;17753:23;17749:33;17746:2;;;17795:1;17792;17785:12;17746:2;17830:1;17847:53;17892:7;17872:9;17847:53;;;17837:63;;17809:97;17937:2;17955:53;18000:7;17991:6;17980:9;17976:22;17955:53;;;17945:63;;17916:98;18045:2;18063:53;18108:7;18099:6;18088:9;18084:22;18063:53;;;18053:63;;18024:98;18153:2;18171:53;18216:7;18207:6;18196:9;18192:22;18171:53;;;18161:63;;18132:98;18261:3;18280:53;18325:7;18316:6;18305:9;18301:22;18280:53;;;18270:63;;18240:99;17740:609;;;;;;;;;18356:946;;;;;;;18556:3;18544:9;18535:7;18531:23;18527:33;18524:2;;;18573:1;18570;18563:12;18524:2;18608:1;18625:64;18681:7;18661:9;18625:64;;;18615:74;;18587:108;18726:2;18744:64;18800:7;18791:6;18780:9;18776:22;18744:64;;;18734:74;;18705:109;18845:2;18863:64;18919:7;18910:6;18899:9;18895:22;18863:64;;;18853:74;;18824:109;18964:2;18982:64;19038:7;19029:6;19018:9;19014:22;18982:64;;;18972:74;;18943:109;19083:3;19102:64;19158:7;19149:6;19138:9;19134:22;19102:64;;;19092:74;;19062:110;19203:3;19222:64;19278:7;19269:6;19258:9;19254:22;19222:64;;;19212:74;;19182:110;18518:784;;;;;;;;;19309:995;;;;;;;;19515:3;19503:9;19494:7;19490:23;19486:33;19483:2;;;19532:1;19529;19522:12;19483:2;19567:1;19584:53;19629:7;19609:9;19584:53;;;19574:63;;19546:97;19674:2;19692:53;19737:7;19728:6;19717:9;19713:22;19692:53;;;19682:63;;19653:98;19782:2;19800:53;19845:7;19836:6;19825:9;19821:22;19800:53;;;19790:63;;19761:98;19890:2;19908:53;19953:7;19944:6;19933:9;19929:22;19908:53;;;19898:63;;19869:98;19998:3;20017:53;20062:7;20053:6;20042:9;20038:22;20017:53;;;20007:63;;19977:99;20107:3;20126:53;20171:7;20162:6;20151:9;20147:22;20126:53;;;20116:63;;20086:99;20216:3;20235:53;20280:7;20271:6;20260:9;20256:22;20235:53;;;20225:63;;20195:99;19477:827;;;;;;;;;;;20312:173;;20399:46;20441:3;20433:6;20399:46;;;-1:-1;;20474:4;20465:14;;20392:93;20494:173;;20581:46;20623:3;20615:6;20581:46;;20676:275;;20811:98;20905:3;20897:6;20811:98;;;-1:-1;;20938:6;20929:16;;20804:147;21141:142;21232:45;21271:5;21232:45;;;21227:3;21220:58;21214:69;;;21290:103;21363:24;21381:5;21363:24;;21520:152;21621:45;21641:24;21659:5;21641:24;;;21621:45;;21712:660;21845:52;21891:5;21845:52;;;21910:84;21987:6;21982:3;21910:84;;;21903:91;;22015:54;22063:5;22015:54;;;22089:7;22117:1;22102:258;22127:6;22124:1;22121:13;22102:258;;;22194:6;22188:13;22215:63;22274:3;22259:13;22215:63;;;22208:70;;22295:58;22346:6;22295:58;;;22285:68;-1:-1;;22149:1;22142:9;22102:258;;22411:690;;22556:54;22604:5;22556:54;;;22623:86;22702:6;22697:3;22623:86;;;22616:93;;22730:56;22780:5;22730:56;;;22806:7;22834:1;22819:260;22844:6;22841:1;22838:13;22819:260;;;22911:6;22905:13;22932:63;22991:3;22976:13;22932:63;;;22925:70;;23012:60;23065:6;23012:60;;;23002:70;-1:-1;;22866:1;22859:9;22819:260;;;-1:-1;23092:3;;22535:566;-1:-1;;;;;22535:566;23194:882;;23387:78;23459:5;23387:78;;;23478:110;23581:6;23576:3;23478:110;;;23471:117;;23609:80;23683:5;23609:80;;;23709:7;23737:1;23722:332;23747:6;23744:1;23741:13;23722:332;;;23814:6;23808:13;23835:111;23942:3;23927:13;23835:111;;;23828:118;;23963:84;24040:6;23963:84;;;23953:94;-1:-1;;23769:1;23762:9;23722:332;;24117:660;24250:52;24296:5;24250:52;;;24315:84;24392:6;24387:3;24315:84;;;24308:91;;24420:54;24468:5;24420:54;;;24494:7;24522:1;24507:258;24532:6;24529:1;24526:13;24507:258;;;24599:6;24593:13;24620:63;24679:3;24664:13;24620:63;;;24613:70;;24700:58;24751:6;24700:58;;;24690:68;-1:-1;;24554:1;24547:9;24507:258;;24785:94;24852:21;24867:5;24852:21;;24997:140;25092:39;25109:21;25124:5;25109:21;;;25092:39;;25144:103;25217:24;25235:5;25217:24;;25374:152;25475:45;25495:24;25513:5;25495:24;;;25475:45;;25533:148;25632:43;25651:23;25668:5;25651:23;;25688:343;;25798:38;25830:5;25798:38;;;25848:70;25911:6;25906:3;25848:70;;;25841:77;;25923:52;25968:6;25963:3;25956:4;25949:5;25945:16;25923:52;;;25996:29;26018:6;25996:29;;;25987:39;;;;25778:253;-1:-1;;;25778:253;26038:356;;26166:38;26198:5;26166:38;;;26216:88;26297:6;26292:3;26216:88;;;26209:95;;26309:52;26354:6;26349:3;26342:4;26335:5;26331:16;26309:52;;;26373:16;;;;;26146:248;-1:-1;;26146:248;27586:312;;27746:67;27810:2;27805:3;27746:67;;;-1:-1;;;27826:35;;27889:2;27880:12;;27732:166;-1:-1;;27732:166;27907:301;;28067:66;28131:1;28126:3;28067:66;;;-1:-1;;;28146:25;;28199:2;28190:12;;28053:155;-1:-1;;28053:155;28217:301;;28377:66;28441:1;28436:3;28377:66;;;-1:-1;;;28456:25;;28509:2;28500:12;;28363:155;-1:-1;;28363:155;28527:375;;28687:67;28751:2;28746:3;28687:67;;;28787:34;28767:55;;-1:-1;;;28851:2;28842:12;;28835:30;28893:2;28884:12;;28673:229;-1:-1;;28673:229;28911:327;;29071:67;29135:2;29130:3;29071:67;;;29171:29;29151:50;;29229:2;29220:12;;29057:181;-1:-1;;29057:181;29247:370;;29407:67;29471:2;29466:3;29407:67;;;29507:34;29487:55;;-1:-1;;;29571:2;29562:12;;29555:25;29608:2;29599:12;;29393:224;-1:-1;;29393:224;29626:314;;29786:67;29850:2;29845:3;29786:67;;;-1:-1;;;29866:37;;29931:2;29922:12;;29772:168;-1:-1;;29772:168;29949:300;;30109:66;30173:1;30168:3;30109:66;;;-1:-1;;;30188:24;;30240:2;30231:12;;30095:154;-1:-1;;30095:154;30258:318;;30418:67;30482:2;30477:3;30418:67;;;-1:-1;;;30498:41;;30567:2;30558:12;;30404:172;-1:-1;;30404:172;30585:301;;30745:66;30809:1;30804:3;30745:66;;;-1:-1;;;30824:25;;30877:2;30868:12;;30731:155;-1:-1;;30731:155;30895:301;;31055:66;31119:1;31114:3;31055:66;;;-1:-1;;;31134:25;;31187:2;31178:12;;31041:155;-1:-1;;31041:155;31205:301;;31365:66;31429:1;31424:3;31365:66;;;-1:-1;;;31444:25;;31497:2;31488:12;;31351:155;-1:-1;;31351:155;31515:370;;31675:67;31739:2;31734:3;31675:67;;;31775:34;31755:55;;-1:-1;;;31839:2;31830:12;;31823:25;31876:2;31867:12;;31661:224;-1:-1;;31661:224;31894:321;;32054:67;32118:2;32113:3;32054:67;;;-1:-1;;;32134:44;;32206:2;32197:12;;32040:175;-1:-1;;32040:175;32224:301;;32384:66;32448:1;32443:3;32384:66;;;-1:-1;;;32463:25;;32516:2;32507:12;;32370:155;-1:-1;;32370:155;32534:301;;32694:66;32758:1;32753:3;32694:66;;;-1:-1;;;32773:25;;32826:2;32817:12;;32680:155;-1:-1;;32680:155;32844:315;;33004:67;33068:2;33063:3;33004:67;;;-1:-1;;;33084:38;;33150:2;33141:12;;32990:169;-1:-1;;32990:169;33168:301;;33328:66;33392:1;33387:3;33328:66;;;-1:-1;;;33407:25;;33460:2;33451:12;;33314:155;-1:-1;;33314:155;33478:301;;33638:66;33702:1;33697:3;33638:66;;;-1:-1;;;33717:25;;33770:2;33761:12;;33624:155;-1:-1;;33624:155;33788:370;;33948:67;34012:2;34007:3;33948:67;;;34048:34;34028:55;;-1:-1;;;34112:2;34103:12;;34096:25;34149:2;34140:12;;33934:224;-1:-1;;33934:224;34167:312;;34327:67;34391:2;34386:3;34327:67;;;-1:-1;;;34407:35;;34470:2;34461:12;;34313:166;-1:-1;;34313:166;34488:301;;34648:66;34712:1;34707:3;34648:66;;;-1:-1;;;34727:25;;34780:2;34771:12;;34634:155;-1:-1;;34634:155;34798:301;;34958:66;35022:1;35017:3;34958:66;;;-1:-1;;;35037:25;;35090:2;35081:12;;34944:155;-1:-1;;34944:155;35108:376;;35268:67;35332:2;35327:3;35268:67;;;35368:34;35348:55;;-1:-1;;;35432:2;35423:12;;35416:31;35475:2;35466:12;;35254:230;-1:-1;;35254:230;35493:329;;35653:67;35717:2;35712:3;35653:67;;;35753:31;35733:52;;35813:2;35804:12;;35639:183;-1:-1;;35639:183;35831:310;;35991:67;36055:2;36050:3;35991:67;;;-1:-1;;;36071:33;;36132:2;36123:12;;35977:164;-1:-1;;35977:164;36150:312;;36310:67;36374:2;36369:3;36310:67;;;-1:-1;;;36390:35;;36453:2;36444:12;;36296:166;-1:-1;;36296:166;36471:373;;36631:67;36695:2;36690:3;36631:67;;;36731:34;36711:55;;-1:-1;;;36795:2;36786:12;;36779:28;36835:2;36826:12;;36617:227;-1:-1;;36617:227;36853:324;;37013:67;37077:2;37072:3;37013:67;;;37113:26;37093:47;;37168:2;37159:12;;36999:178;-1:-1;;36999:178;37186:300;;37346:66;37410:1;37405:3;37346:66;;;-1:-1;;;37425:24;;37477:2;37468:12;;37332:154;-1:-1;;37332:154;37495:332;;37655:67;37719:2;37714:3;37655:67;;;37755:34;37735:55;;37818:2;37809:12;;37641:186;-1:-1;;37641:186;37914:1437;38115:23;;38049:6;38040:16;;;38144:63;38044:3;38115:23;38144:63;;;38071:142;38288:4;38281:5;38277:16;38271:23;38300:57;38351:4;38346:3;38342:14;38328:12;38300:57;;;38223:140;38437:4;38430:5;38426:16;38420:23;38449:63;38506:4;38501:3;38497:14;38483:12;38449:63;;;38373:145;38596:4;38589:5;38585:16;38579:23;38608:63;38665:4;38660:3;38656:14;38642:12;38608:63;;;38528:149;38761:4;38754:5;38750:16;38744:23;38773:63;38830:4;38825:3;38821:14;38807:12;38773:63;;;38687:155;38927:4;38920:5;38916:16;38910:23;38939:63;38996:4;38991:3;38987:14;38973:12;38939:63;;;38852:156;39094:4;39087:5;39083:16;39077:23;39106:63;39163:4;39158:3;39154:14;39140:12;39106:63;;;39018:157;39255:4;39248:5;39244:16;39238:23;39267:63;39324:4;39319:3;39315:14;39301:12;39267:63;;39747:107;39826:22;39842:5;39826:22;;39861:370;;40002:75;40073:3;40064:6;40002:75;;;40099:2;40094:3;40090:12;40083:19;;40113:69;40178:3;40169:6;40113:69;;;-1:-1;40204:1;40195:11;;39990:241;-1:-1;;39990:241;40238:383;;40385:75;40456:3;40447:6;40385:75;;;40482:2;40477:3;40473:12;40466:19;;40496:75;40567:3;40558:6;40496:75;;;-1:-1;40593:2;40584:12;;40373:248;-1:-1;;40373:248;40628:378;;40773:73;40842:3;40833:6;40773:73;;;40868:1;40863:3;40859:11;40852:18;;40881:75;40952:3;40943:6;40881:75;;41013:262;;41157:93;41246:3;41237:6;41157:93;;41555:213;41673:2;41658:18;;41687:71;41662:9;41731:6;41687:71;;41775:229;41901:2;41886:18;;41915:79;41890:9;41967:6;41915:79;;42011:324;42157:2;42142:18;;42171:71;42146:9;42215:6;42171:71;;;42253:72;42321:2;42310:9;42306:18;42297:6;42253:72;;42342:340;42496:2;42481:18;;42510:71;42485:9;42554:6;42510:71;;;42592:80;42668:2;42657:9;42653:18;42644:6;42592:80;;42689:435;42863:2;42848:18;;42877:71;42852:9;42921:6;42877:71;;;42959:72;43027:2;43016:9;43012:18;43003:6;42959:72;;;43042;43110:2;43099:9;43095:18;43086:6;43042:72;;43131:647;43355:3;43340:19;;43370:71;43344:9;43414:6;43370:71;;;43452:72;43520:2;43509:9;43505:18;43496:6;43452:72;;;43535;43603:2;43592:9;43588:18;43579:6;43535:72;;;43618;43686:2;43675:9;43671:18;43662:6;43618:72;;;43701:67;43763:3;43752:9;43748:19;43739:6;43701:67;;43785:771;44043:3;44028:19;;44058:71;44032:9;44102:6;44058:71;;;44140:72;44208:2;44197:9;44193:18;44184:6;44140:72;;;44223;44291:2;44280:9;44276:18;44267:6;44223:72;;;44306;44374:2;44363:9;44359:18;44350:6;44306:72;;;44389:73;44457:3;44446:9;44442:19;44433:6;44389:73;;;44473;44541:3;44530:9;44526:19;44517:6;44473:73;;;44014:542;;;;;;;;;;44563:324;44709:2;44694:18;;44723:71;44698:9;44767:6;44723:71;;;44805:72;44873:2;44862:9;44858:18;44849:6;44805:72;;44894:451;45076:2;45061:18;;45090:71;45065:9;45134:6;45090:71;;;45172:72;45240:2;45229:9;45225:18;45216:6;45172:72;;;45255:80;45331:2;45320:9;45316:18;45307:6;45255:80;;45352:361;45520:2;45534:47;;;45505:18;;45595:108;45505:18;45689:6;45595:108;;45720:457;45936:2;45950:47;;;45921:18;;46011:156;45921:18;46153:6;46011:156;;46184:201;46296:2;46281:18;;46310:65;46285:9;46348:6;46310:65;;46392:213;46510:2;46495:18;;46524:71;46499:9;46568:6;46524:71;;46612:1139;47002:3;46987:19;;47017:71;46991:9;47061:6;47017:71;;;47099:72;47167:2;47156:9;47152:18;47143:6;47099:72;;;47182:66;47244:2;47233:9;47229:18;47220:6;47182:66;;;47259:72;47327:2;47316:9;47312:18;47303:6;47259:72;;;47342:119;47456:3;47445:9;47441:19;47432:6;47342:119;;;47472;47586:3;47575:9;47571:19;47562:6;47472:119;;;47640:9;47634:4;47630:20;47624:3;47613:9;47609:19;47602:49;47665:76;47736:4;47727:6;47665:76;;;47657:84;46973:778;-1:-1;;;;;;;;;46973:778;47974:293;48108:2;48122:47;;;48093:18;;48183:74;48093:18;48243:6;48183:74;;48582:407;48773:2;48787:47;;;48758:18;;48848:131;48758:18;48848:131;;48996:407;49187:2;49201:47;;;49172:18;;49262:131;49172:18;49262:131;;49410:407;49601:2;49615:47;;;49586:18;;49676:131;49586:18;49676:131;;49824:407;50015:2;50029:47;;;50000:18;;50090:131;50000:18;50090:131;;50238:407;50429:2;50443:47;;;50414:18;;50504:131;50414:18;50504:131;;50652:407;50843:2;50857:47;;;50828:18;;50918:131;50828:18;50918:131;;51066:407;51257:2;51271:47;;;51242:18;;51332:131;51242:18;51332:131;;51480:407;51671:2;51685:47;;;51656:18;;51746:131;51656:18;51746:131;;51894:407;52085:2;52099:47;;;52070:18;;52160:131;52070:18;52160:131;;52308:407;52499:2;52513:47;;;52484:18;;52574:131;52484:18;52574:131;;52722:407;52913:2;52927:47;;;52898:18;;52988:131;52898:18;52988:131;;53136:407;53327:2;53341:47;;;53312:18;;53402:131;53312:18;53402:131;;53550:407;53741:2;53755:47;;;53726:18;;53816:131;53726:18;53816:131;;53964:407;54155:2;54169:47;;;54140:18;;54230:131;54140:18;54230:131;;54378:407;54569:2;54583:47;;;54554:18;;54644:131;54554:18;54644:131;;54792:407;54983:2;54997:47;;;54968:18;;55058:131;54968:18;55058:131;;55206:407;55397:2;55411:47;;;55382:18;;55472:131;55382:18;55472:131;;55620:407;55811:2;55825:47;;;55796:18;;55886:131;55796:18;55886:131;;56034:407;56225:2;56239:47;;;56210:18;;56300:131;56210:18;56300:131;;56448:407;56639:2;56653:47;;;56624:18;;56714:131;56624:18;56714:131;;56862:407;57053:2;57067:47;;;57038:18;;57128:131;57038:18;57128:131;;57276:407;57467:2;57481:47;;;57452:18;;57542:131;57452:18;57542:131;;57690:407;57881:2;57895:47;;;57866:18;;57956:131;57866:18;57956:131;;58104:407;58295:2;58309:47;;;58280:18;;58370:131;58280:18;58370:131;;58518:407;58709:2;58723:47;;;58694:18;;58784:131;58694:18;58784:131;;58932:407;59123:2;59137:47;;;59108:18;;59198:131;59108:18;59198:131;;59346:407;59537:2;59551:47;;;59522:18;;59612:131;59522:18;59612:131;;59760:407;59951:2;59965:47;;;59936:18;;60026:131;59936:18;60026:131;;60174:407;60365:2;60379:47;;;60350:18;;60440:131;60350:18;60440:131;;60588:407;60779:2;60793:47;;;60764:18;;60854:131;60764:18;60854:131;;61002:407;61193:2;61207:47;;;61178:18;;61268:131;61178:18;61268:131;;61636:324;61782:2;61767:18;;61796:71;61771:9;61840:6;61796:71;;61967:435;62141:2;62126:18;;62155:71;62130:9;62199:6;62155:71;;;62237:72;62305:2;62294:9;62290:18;62281:6;62237:72;;62409:205;62523:2;62508:18;;62537:67;62512:9;62577:6;62537:67;;62621:256;62683:2;62677:9;62709:17;;;-1:-1;;;;;62769:34;;62805:22;;;62766:62;62763:2;;;62841:1;62838;62831:12;62763:2;62857;62850:22;62661:216;;-1:-1;62661:216;62884:304;;-1:-1;;;;;63035:6;63032:30;63029:2;;;63075:1;63072;63065:12;63029:2;-1:-1;63110:4;63098:17;;;63163:15;;62966:222;63530:321;;-1:-1;;;;;63665:6;63662:30;63659:2;;;63705:1;63702;63695:12;63659:2;-1:-1;63836:4;63772;63749:17;;;;-1:-1;;63745:33;63826:15;;63596:255;64291:151;64415:4;64406:14;;64363:79;64735:108;-1:-1;64829:4;;64807:36;64850:137;64953:12;;64924:63;65162:108;-1:-1;65256:4;;65234:36;66289:178;66407:19;;;66456:4;66447:14;;66400:67;67485:91;;67547:24;67565:5;67547:24;;67583:85;67649:13;67642:21;;67625:43;67754:144;-1:-1;;;;;;67815:78;;67798:100;67983:121;-1:-1;;;;;68045:54;;68028:76;68190:81;68261:4;68250:16;;68233:38;68278:129;;68365:37;68396:5;68414:121;68493:37;68524:5;68493:37;;68658:145;68739:6;68734:3;68729;68716:30;-1:-1;68795:1;68777:16;;68770:27;68709:94;68812:268;68877:1;68884:101;68898:6;68895:1;68892:13;68884:101;;;68965:11;;;68959:18;68946:11;;;68939:39;68920:2;68913:10;68884:101;;;69000:6;68997:1;68994:13;68991:2;;;-1:-1;;69065:1;69047:16;;69040:27;68861:219;69088:95;;69152:26;69172:5;69152:26;;69190:90;;69251:24;69269:5;69251:24;;69448:89;;69512:20;69526:5;69512:20;;69625:88;;69687:21;69702:5;69687:21;;69720:97;69808:2;69788:14;-1:-1;;69784:28;;69768:49;69825:96;69900:3;69896:15;;69868:53;69929:94;70003:2;69999:14;;69971:52;70031:117;70100:24;70118:5;70100:24;;;70093:5;70090:35;70080:2;;70139:1;70136;70129:12;70155:111;70221:21;70236:5;70221:21;;70273:117;70342:24;70360:5;70342:24;"
            },
            "methodIdentifiers": {
              "VERSION()": "ffa1ad74",
              "_supplyInterestRate(uint256,uint256)": "7288b344",
              "admin()": "f851a440",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "assetBalanceOf(address)": "06b3efd6",
              "avgBorrowInterestRate()": "44a4a003",
              "balanceOf(address)": "70a08231",
              "baseRate()": "1f68f20a",
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": "2ea295fa",
              "borrowInterestRate()": "8325a1c0",
              "burn(address,uint256)": "9dc29fac",
              "burn(address,uint256,bool)": "76fd4fdf",
              "checkPause(string)": "be194217",
              "checkPriceDivergence(uint256,uint256,uint256,address,uint256)": "18498b1d",
              "checkpointPrice(address)": "eebc5081",
              "checkpointSupply()": "7b7933b4",
              "decimals()": "313ce567",
              "disableLoanParams(address[],bool[])": "e697d2ee",
              "earlyAccessToken()": "ca37e666",
              "getBorrowAmountForDeposit(uint256,uint256,address)": "04797930",
              "getDepositAmountForBorrow(uint256,uint256,address)": "631a3ef8",
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": "6b40cd40",
              "getMaxEscrowAmount(uint256)": "829b38f4",
              "initialPrice()": "1d0806ae",
              "isOwner()": "8f32d59b",
              "kinkLevel()": "56e07d70",
              "liquidityMiningAddress()": "8ee6c4e6",
              "loanParamsIds(uint256)": "3291c11a",
              "loanTokenAddress()": "797bf385",
              "lowUtilBaseRate()": "d759dbeb",
              "lowUtilRateMultiplier()": "7e37c08c",
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": "28a02f19",
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": "f6b69f99",
              "marketLiquidity()": "612ef80b",
              "maxScaleRate()": "ef2b0b39",
              "mint(address,uint256)": "40c10f19",
              "mint(address,uint256,bool)": "d1a1beb4",
              "name()": "06fdde03",
              "nextBorrowInterestRate(uint256)": "b9fe1a8f",
              "nextSupplyInterestRate(uint256)": "d65a5021",
              "owner()": "8da5cb5b",
              "pauser()": "9fd0506d",
              "profitOf(address)": "54198ce9",
              "rateMultiplier()": "330691ac",
              "setAdmin(address)": "704b6c02",
              "setAffiliatesReferrer(address,address)": "c9ddf448",
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "d97206a4",
              "setLiquidityMiningAddress(address)": "cb926cb3",
              "setPauser(address)": "2d88af4a",
              "setUserNotFirstTradeFlag(address)": "f06a9c6b",
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": "d8f06c83",
              "sovrynContractAddress()": "06947a3a",
              "supplyInterestRate()": "09ec6b6b",
              "symbol()": "95d89b41",
              "targetLevel()": "ba0e43bf",
              "target_()": "9bda3a98",
              "toggleFunctionPause(string,bool)": "e3cded61",
              "tokenPrice()": "7ff9b596",
              "totalAssetBorrow()": "20f6d07c",
              "totalAssetSupply()": "8fb807c5",
              "totalSupply()": "18160ddd",
              "totalSupplyInterestRate(uint256)": "12416898",
              "transactionLimit(address)": "e41b07e3",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "wrbtcTokenAddress()": "2f6b600d"
            }
          },
          "userdoc": {
            "methods": {
              "_supplyInterestRate(uint256,uint256)": {
                "notice": "Compute the next supply interest adjustment."
              },
              "allowance(address,address)": {
                "notice": "Get the amount of iTokens allowed to be spent by a  given account on behalf of the owner."
              },
              "approve(address,uint256)": {
                "notice": "Set an amount as the allowance of `spender` over the caller's tokens.\t * Returns a boolean value indicating whether the operation succeeded.\t * 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\t * Emits an {Approval} event."
              },
              "assetBalanceOf(address)": {
                "notice": "Get loan token balance."
              },
              "avgBorrowInterestRate()": {
                "notice": "Wrapper for average borrow interest."
              },
              "balanceOf(address)": {
                "notice": "Get the amount of iTokens owned by an account."
              },
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": {
                "notice": "Borrow funds from the pool. The underlying loan token may not be used as collateral."
              },
              "borrowInterestRate()": {
                "notice": "Get borrow interest rate. The minimum rate the next base protocol borrower will receive for variable-rate loans."
              },
              "burn(address,uint256)": {
                "notice": "Burn loan token wrapper. Adds a pay-out transfer after calling low level _burnToken function. In order to withdraw funds to the pool, call burn on the respective loan token contract. This will burn your loan tokens and send you the underlying token in exchange."
              },
              "burn(address,uint256,bool)": {
                "notice": "withdraws from the lending pool and optionally retrieves the pool tokens from the        Liquidity Mining Contract"
              },
              "checkPause(string)": {
                "notice": "Check whether a function is paused."
              },
              "checkpointPrice(address)": {
                "notice": "Getter for the price checkpoint mapping."
              },
              "disableLoanParams(address[],bool[])": {
                "notice": "Disable loan token parameters."
              },
              "getBorrowAmountForDeposit(uint256,uint256,address)": {
                "notice": "Calculate the borrow allowed for a given deposit.\t * The function for doing over-collateralized borrows against loan tokens expects a minimum amount of collateral be sent to satisfy collateral requirements of the loan, for borrow amount, interest rate, and initial loan duration. To determine appropriate values to pass to this function for a given loan, `getDepositAmountForBorrow` and 'getBorrowAmountForDeposit` are required."
              },
              "getDepositAmountForBorrow(uint256,uint256,address)": {
                "notice": "Calculate the deposit required to a given borrow.\t * The function for doing over-collateralized borrows against loan tokens expects a minimum amount of collateral be sent to satisfy collateral requirements of the loan, for borrow amount, interest rate, and initial loan duration. To determine appropriate values to pass to this function for a given loan, `getDepositAmountForBorrow` and 'getBorrowAmountForDeposit` are required."
              },
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": {
                "notice": "Get margin information on a trade."
              },
              "getMaxEscrowAmount(uint256)": {
                "notice": "Compute the maximum deposit amount under current market conditions."
              },
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": {
                "notice": "Borrow and immediately get into a position.\t * Trading on margin is used to increase an investor's buying power. Margin is the amount of money required to open a position, while leverage is the multiple of exposure to account equity.\t * Leverage allows you to trade positions LARGER than the amount of money in your trading account. Leverage is expressed as a ratio.\t * When trading on margin, investors first deposit some token that then serves as collateral for the loan, and then pay ongoing interest payments on the money they borrow.\t * Margin trading = taking a loan and swapping it: In order to open a margin trade position, 1.- The user calls marginTrade on the loan token contract. 2.- The loan token contract provides the loan and sends it for processing   to the protocol proxy contract. 3.- The protocol proxy contract uses the module LoanOpening to create a   position and swaps the loan tokens to collateral tokens. 4.- The Sovryn Swap network looks up the correct converter and swaps the   tokens. If successful, the position is being held by the protocol proxy contract, which is why positions need to be closed at the protocol proxy contract."
              },
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": {
                "notice": "Wrapper for marginTrade invoking setAffiliatesReferrer to track  referral trade by affiliates program."
              },
              "marketLiquidity()": {
                "notice": "Get current liquidity. A part of total funds supplied are borrowed. Liquidity = supply - borrow"
              },
              "mint(address,uint256)": {
                "notice": "Mint loan token wrapper. Adds a check before calling low level _mintToken function. The function retrieves the tokens from the message sender, so make sure to first approve the loan token contract to access your funds. This is done by calling approve(address spender, uint amount) on the ERC20 token contract, where spender is the loan token contract address and amount is the amount to be deposited."
              },
              "mint(address,uint256,bool)": {
                "notice": "deposit into the lending pool and optionally participate at the Liquidity Mining Program"
              },
              "nextBorrowInterestRate(uint256)": {
                "notice": "Public wrapper for internal call."
              },
              "nextSupplyInterestRate(uint256)": {
                "notice": "Get interest rate w/ added supply."
              },
              "profitOf(address)": {
                "notice": "Wrapper for internal _profitOf low level function."
              },
              "setAdmin(address)": {
                "notice": "Set admin account."
              },
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": {
                "notice": "Set loan token parameters about the demand curve."
              },
              "setLiquidityMiningAddress(address)": {
                "notice": "sets the liquidity mining contract address"
              },
              "setPauser(address)": {
                "notice": "Set pauser account."
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": {
                "notice": "Set loan token parameters."
              },
              "supplyInterestRate()": {
                "notice": "Get interest rate."
              },
              "toggleFunctionPause(string,bool)": {
                "notice": "Set the pause flag for a function to true or false."
              },
              "tokenPrice()": {
                "notice": "Loan token price calculation considering unpaid interests."
              },
              "totalAssetBorrow()": {
                "notice": "Get the total amount of loan tokens on debt. Calls protocol getTotalPrincipal function. In the context of borrowing, principal is the initial size of a loan. It can also be the amount still owed on a loan. If you take out a $50,000 mortgage, for example, the principal is $50,000. If you pay off $30,000, the principal balance now consists of the remaining $20,000."
              },
              "totalAssetSupply()": {
                "notice": "Get the total amount of loan tokens on supply."
              },
              "totalSupply()": {
                "notice": "Get the total supply of iTokens."
              },
              "totalSupplyInterestRate(uint256)": {
                "notice": "Get interest rate w/ added supply assets."
              },
              "transfer(address,uint256)": {
                "notice": "Transfer tokens wrapper. Sets token owner the msg.sender. Sets maximun allowance uint256(-1) to ensure tokens are always transferred."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Moves `_value` loan tokens from `_from` to `_to` using the allowance mechanism. Calls internal _internalTransferFrom function."
              }
            }
          }
        }
      },
      "contracts/mockup/PriceFeedsMoCMockup.sol": {
        "PriceFeedsMoCMockup": {
          "abi": [
            {
              "constant": true,
              "inputs": [],
              "name": "has",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "peek",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "_has",
                  "type": "bool"
                }
              ],
              "name": "setHas",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "setValue",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "value",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061015a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633fa4f2451461005c578063552410771461007657806359e02dd71461009557806361da0693146100b6578063b689d5ac146100d5575b600080fd5b6100646100f1565b60408051918252519081900360200190f35b6100936004803603602081101561008c57600080fd5b50356100f7565b005b61009d6100fc565b6040805192835290151560208301528051918290030190f35b610093600480360360208110156100cc57600080fd5b50351515610109565b6100dd61011c565b604080519115158252519081900360200190f35b60005481565b600055565b60005460015460ff169091565b6001805460ff1916911515919091179055565b60015460ff168156fea265627a7a723158205868f132d6f8e84f91bb7e66423a90ea7b92cc41db5d41258ccd44224194de4364736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15A DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3FA4F245 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x55241077 EQ PUSH2 0x76 JUMPI DUP1 PUSH4 0x59E02DD7 EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0x61DA0693 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xB689D5AC EQ PUSH2 0xD5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x93 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xF7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9D PUSH2 0xFC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x93 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x109 JUMP JUMPDEST PUSH2 0xDD PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0xFF AND SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PC PUSH9 0xF132D6F8E84F91BB7E PUSH7 0x423A90EA7B92CC COINBASE 0xDB 0x5D COINBASE 0x25 DUP13 0xCD DIFFICULTY 0x22 COINBASE SWAP5 0xDE NUMBER PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "216:301:111:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;216:301:111;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100575760003560e01c80633fa4f2451461005c578063552410771461007657806359e02dd71461009557806361da0693146100b6578063b689d5ac146100d5575b600080fd5b6100646100f1565b60408051918252519081900360200190f35b6100936004803603602081101561008c57600080fd5b50356100f7565b005b61009d6100fc565b6040805192835290151560208301528051918290030190f35b610093600480360360208110156100cc57600080fd5b50351515610109565b6100dd61011c565b604080519115158252519081900360200190f35b60005481565b600055565b60005460015460ff169091565b6001805460ff1916911515919091179055565b60015460ff168156fea265627a7a723158205868f132d6f8e84f91bb7e66423a90ea7b92cc41db5d41258ccd44224194de4364736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3FA4F245 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x55241077 EQ PUSH2 0x76 JUMPI DUP1 PUSH4 0x59E02DD7 EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0x61DA0693 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xB689D5AC EQ PUSH2 0xD5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x93 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xF7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9D PUSH2 0xFC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x93 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x109 JUMP JUMPDEST PUSH2 0xDD PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0xFF AND SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PC PUSH9 0xF132D6F8E84F91BB7E PUSH7 0x423A90EA7B92CC COINBASE 0xDB 0x5D COINBASE 0x25 DUP13 0xCD DIFFICULTY 0x22 COINBASE SWAP5 0xDE NUMBER PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "216:301:111:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;216:301:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:20;;;:::i;:::-;;;;;;;;;;;;;;;;397:63;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;397:63:111;;:::i;:::-;;304:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;463:52;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;463:52:111;;;;:::i;285:15::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;262:20;;;;:::o;397:63::-;442:5;:14;397:63::o;304:90::-;343:7;378:5;386:3;;;;304:90;;:::o;463:52::-;501:3;:10;;-1:-1:-1;;501:10:111;;;;;;;;;;463:52::o;285:15::-;;;;;;:::o"
            },
            "methodIdentifiers": {
              "has()": "b689d5ac",
              "peek()": "59e02dd7",
              "setHas(bool)": "61da0693",
              "setValue(uint256)": "55241077",
              "value()": "3fa4f245"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/mockup/ProtocolSettingsMockup.sol": {
        "ProtocolSettingsMockup": {
          "abi": [
            {
              "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": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetAffiliateFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetAffiliateTradingTokenFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetBorrowingFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldController",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newController",
                  "type": "address"
                }
              ],
              "name": "SetFeesController",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetLendingFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetLiquidationIncentivePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "loanPool",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlying",
                  "type": "address"
                }
              ],
              "name": "SetLoanPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "SetLockedSOVAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetMaxSwapSize",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldMinReferrals",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newMinReferrals",
                  "type": "uint256"
                }
              ],
              "name": "SetMinReferralsToPayoutAffiliates",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "oldValue",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newValue",
                  "type": "address"
                }
              ],
              "name": "SetPriceFeedContract",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldProtocol",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newProtocol",
                  "type": "address"
                }
              ],
              "name": "SetProtocolAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldProtocolToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newProtocolToken",
                  "type": "address"
                }
              ],
              "name": "SetProtocolTokenAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newRebatePercent",
                  "type": "uint256"
                }
              ],
              "name": "SetRebatePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetRolloverBaseReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldTokenAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newTokenAddress",
                  "type": "address"
                }
              ],
              "name": "SetSOVTokenAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldSovrynSwapContractRegistryAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newSovrynSwapContractRegistryAddress",
                  "type": "address"
                }
              ],
              "name": "SetSovrynSwapContractRegistryAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldSpecialRebatesPercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newSpecialRebatesPercent",
                  "type": "uint256"
                }
              ],
              "name": "SetSpecialRebates",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "isActive",
                  "type": "bool"
                }
              ],
              "name": "SetSupportedTokens",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetSwapExternalFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "oldValue",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newValue",
                  "type": "address"
                }
              ],
              "name": "SetSwapsImplContract",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetTradingFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldBasisPoint",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newBasisPoint",
                  "type": "uint256"
                }
              ],
              "name": "SetTradingRebateRewardsBasisPoint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldWethToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newWethToken",
                  "type": "address"
                }
              ],
              "name": "SetWrbtcToken",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "oldFlag",
                  "type": "bool"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "newFlag",
                  "type": "bool"
                }
              ],
              "name": "TogglePaused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawBorrowingFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lendingAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tradingAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "borrowingAmount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawLendingFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawTradingFees",
              "type": "event"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "depositProtocolToken",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getFeeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "start",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getLoanPoolsList",
              "outputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "",
                  "type": "bytes32[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getLockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getProtocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getSovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getSpecialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "specialRebatesPercent",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getSwapExternalFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getTradingRebateRewardsBasisPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanPool",
                  "type": "address"
                }
              ],
              "name": "isLoanPool",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isProtocolPaused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setAffiliateFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setAffiliateTradingTokenFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setBorrowingFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amout",
                  "type": "uint256"
                }
              ],
              "name": "setBorrowingFeeTokensHeld",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newController",
                  "type": "address"
                }
              ],
              "name": "setFeesController",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setLendingFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amout",
                  "type": "uint256"
                }
              ],
              "name": "setLendingFeeTokensHeld",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setLiquidationIncentivePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "pools",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                }
              ],
              "name": "setLoanPool",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newLockedSOVAddress",
                  "type": "address"
                }
              ],
              "name": "setLockedSOVAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setMaxDisagreement",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setMaxSwapSize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newMinReferrals",
                  "type": "uint256"
                }
              ],
              "name": "setMinReferralsToPayoutAffiliates",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newContract",
                  "type": "address"
                }
              ],
              "name": "setPriceFeedContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_protocolTokenAddress",
                  "type": "address"
                }
              ],
              "name": "setProtocolTokenAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "rebatePercent",
                  "type": "uint256"
                }
              ],
              "name": "setRebatePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "baseRewardValue",
                  "type": "uint256"
                }
              ],
              "name": "setRolloverBaseReward",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newSovTokenAddress",
                  "type": "address"
                }
              ],
              "name": "setSOVTokenAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setSourceBuffer",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newProtocolAddress",
                  "type": "address"
                }
              ],
              "name": "setSovrynProtocolAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "registryAddress",
                  "type": "address"
                }
              ],
              "name": "setSovrynSwapContractRegistryAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "specialRebatesPercent",
                  "type": "uint256"
                }
              ],
              "name": "setSpecialRebates",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "addrs",
                  "type": "address[]"
                },
                {
                  "internalType": "bool[]",
                  "name": "toggles",
                  "type": "bool[]"
                }
              ],
              "name": "setSupportedTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setSwapExternalFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newContract",
                  "type": "address"
                }
              ],
              "name": "setSwapsImplContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setTradingFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amout",
                  "type": "uint256"
                }
              ],
              "name": "setTradingFeeTokensHeld",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newBasisPoint",
                  "type": "uint256"
                }
              ],
              "name": "setTradingRebateRewardsBasisPoint",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "wrbtcTokenAddress",
                  "type": "address"
                }
              ],
              "name": "setWrbtcToken",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "paused",
                  "type": "bool"
                }
              ],
              "name": "togglePaused",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawBorrowingFees",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "withdrawFees",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawLendingFees",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawProtocolToken",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawTradingFees",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "depositProtocolToken(uint256)": {
                "params": {
                  "amount": "The tokens of fees to send."
                }
              },
              "getLoanPoolsList(uint256,uint256)": {
                "params": {
                  "count": "The limit.",
                  "start": "The offset."
                },
                "return": "The array of loan pools."
              },
              "getSpecialRebates(address,address)": {
                "params": {
                  "destTokenAddress": "The dest of pairs.",
                  "sourceTokenAddress": "The source of pairs."
                },
                "return": "The percent rebates of the pairs."
              },
              "getTradingRebateRewardsBasisPoint()": {
                "return": "The basis point value."
              },
              "isLoanPool(address)": {
                "details": "By querying its underlying token.",
                "params": {
                  "loanPool": "The token address to check."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setAffiliateFeePercent(uint256)": {
                "params": {
                  "newValue": "The new value for affiliateFeePercent."
                }
              },
              "setAffiliateTradingTokenFeePercent(uint256)": {
                "params": {
                  "newValue": "The new value for affiliateTradingTokenFeePercent."
                }
              },
              "setBorrowingFeePercent(uint256)": {
                "params": {
                  "newValue": "The new value for borrowingFeePercent."
                }
              },
              "setFeesController(address)": {
                "details": "The fee sharing proxy must be the feesController of the protocol contract. This allows the fee sharing proxy to withdraw the fees.",
                "params": {
                  "newController": "The new address of the feesController."
                }
              },
              "setLendingFeePercent(uint256)": {
                "params": {
                  "newValue": "The new value for lendingFeePercent."
                }
              },
              "setLiquidationIncentivePercent(uint256)": {
                "params": {
                  "newValue": "The new value for liquidationIncentivePercent."
                }
              },
              "setLoanPool(address[],address[])": {
                "params": {
                  "assets": "The array of addresses of the corresponding underlying tokens.",
                  "pools": "The array of addresses of new loan pool instances."
                }
              },
              "setMaxDisagreement(uint256)": {
                "params": {
                  "newValue": "The new value for maxDisagreement."
                }
              },
              "setMaxSwapSize(uint256)": {
                "params": {
                  "newValue": "The new value for the maximum swap size."
                }
              },
              "setMinReferralsToPayoutAffiliates(uint256)": {
                "params": {
                  "newMinReferrals": "The new minimum number of referrals."
                }
              },
              "setPriceFeedContract(address)": {
                "params": {
                  "newContract": "The address of the Price Feed new instance."
                }
              },
              "setProtocolTokenAddress(address)": {
                "params": {
                  "_protocolTokenAddress": "The address of the protocol token contract."
                }
              },
              "setRebatePercent(uint256)": {
                "params": {
                  "rebatePercent": "The fee rebate percent."
                }
              },
              "setRolloverBaseReward(uint256)": {
                "params": {
                  "baseRewardValue": "The base reward."
                }
              },
              "setSourceBuffer(uint256)": {
                "details": "To avoid rounding issues on the swap rate a small buffer is implemented.",
                "params": {
                  "newValue": "The new value for the maximum source buffer."
                }
              },
              "setSovrynSwapContractRegistryAddress(address)": {
                "params": {
                  "registryAddress": "the address of the registry contract."
                }
              },
              "setSpecialRebates(address,address,uint256)": {
                "params": {
                  "specialRebatesPercent": "The new special fee rebate percent."
                }
              },
              "setSupportedTokens(address[],bool[])": {
                "params": {
                  "addrs": "The array of addresses of the tokens.",
                  "toggles": "The array of flags indicating whether  the corresponding token is supported or not."
                }
              },
              "setSwapExternalFeePercent(uint256)": {
                "params": {
                  "newValue": "the new value for swapExternalFeePercent"
                }
              },
              "setSwapsImplContract(address)": {
                "params": {
                  "newContract": "The address of the asset swapper new instance."
                }
              },
              "setTradingFeePercent(uint256)": {
                "params": {
                  "newValue": "The new value for tradingFeePercent."
                }
              },
              "setTradingRebateRewardsBasisPoint(uint256)": {
                "params": {
                  "newBasisPoint": "Basis point value."
                }
              },
              "setWrbtcToken(address)": {
                "params": {
                  "wrbtcTokenAddress": "The address of the wrBTC contract."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "withdrawBorrowingFees(address,address,uint256)": {
                "params": {
                  "amount": "The amount of fees to get, ignored if greater than balance.",
                  "receiver": "The address of the withdrawal recipient.",
                  "token": "The address of the token instance."
                },
                "return": "Whether withdrawal was successful."
              },
              "withdrawFees(address,address)": {
                "params": {
                  "receiver": "The address of the withdrawal recipient.",
                  "token": "The address of the token instance."
                },
                "return": "The withdrawn amount."
              },
              "withdrawLendingFees(address,address,uint256)": {
                "params": {
                  "amount": "The amount of fees to get, ignored if greater than balance.",
                  "receiver": "The address of the withdrawal recipient.",
                  "token": "The address of the token instance."
                },
                "return": "Whether withdrawal was successful."
              },
              "withdrawProtocolToken(address,uint256)": {
                "details": "Wrapper for ProtocolTokenUser::_withdrawProtocolToken internal function.",
                "params": {
                  "amount": "The amount of tokens to get.",
                  "receiver": "The address of the withdrawal recipient."
                },
                "return": "The protocol token address.Withdrawal success (true/false)."
              },
              "withdrawTradingFees(address,address,uint256)": {
                "params": {
                  "amount": "The amount of fees to get, ignored if greater than balance.",
                  "receiver": "The address of the withdrawal recipient.",
                  "token": "The address of the token instance."
                },
                "return": "Whether withdrawal was successful."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d000006039556000620000ab620000ff60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000103565b3390565b614df280620001136000396000f3fe608060405234801561001057600080fd5b50600436106105815760003560e01c80638dc48ba5116102e5578063cb6eacd11161018d578063e4a47a02116100f4578063f2555278116100ad578063f589a3e711610087578063f589a3e714611342578063f6ddc8b31461134a578063f706b1f214611352578063f851a4401461135a57610581565b8063f2555278146112e6578063f2fde38b14611314578063f44942ec1461133a57610581565b8063e4a47a0214611246578063e8997dbd14611272578063e8f6276414611298578063ea0e3930146112a0578063edab119f146112d6578063f0e085f5146112de57610581565b8063d485045e11610146578063d485045e146111a5578063d9eaaa64146111cb578063da541e09146111f1578063dac8856114611210578063e3ff937014611218578063e41964801461123e57610581565b8063cb6eacd1146110c0578063cd5d808d1461112d578063d21f8e241461115b578063d238db2214611178578063d288208c14611195578063d473c2da1461119d57610581565b8063ae0a85301161024c578063b9cffa3e11610205578063c4a90815116101df578063c4a9081514610fc9578063c4d66de814611051578063c6ce7e4014611077578063c7c333f0146110a357610581565b8063b9cffa3e14610f93578063ba4861e914610f9b578063bdee453c14610fa357610581565b8063ae0a853014610ee4578063afe8400914610eec578063b1558b7214610ef4578063b1ac89ca14610f11578063b30643d914610f47578063b7e1524114610f6d57610581565b80639c53874f1161029e5780639c53874f14610e4b578063a1eb568314610e68578063a2ab1ba114610e85578063a32bb68314610ea2578063a6e7cc2814610ebf578063acc0434814610edc57610581565b80638dc48ba514610d7a5780638f32d59b14610da05780639254e6bf14610da857806392d894f814610dce578063959083d314610df45780639688185714610dfc57610581565b80634115a2b61161044857806368c4ac26116103af57806374626404116103685780637fb202e5116103425780637fb202e514610c8f5780638456cb5914610cac57806384eaa9e014610cb45780638da5cb5b14610d7257610581565b80637462640414610c5957806378d849ed14610c7f5780637a8faeb814610c8757610581565b806368c4ac2614610ba15780636e66373014610bc75780636fbae33b14610bed5780637420ca3e14610c13578063742e679814610c1b57806374326e8f14610c2357610581565b80634f28cac2116104015780634f28cac214610a11578063569fc1fb14610a19578063574442cc14610a5457806359d0d9ec14610a5c57806359e49e0f14610a8a57806362fff3f614610b4857610581565b80634115a2b6146109815780634203e395146109ad578063462096f3146109d35780634699f846146109db5780634bcfe726146109e35780634dd053a5146109eb57610581565b80632a324027116104ec578063355a395f116104a5578063355a395f1461087a5780633c56ae1b146108975780633e526e6b146108b45780633f1ae8b9146108e05780633fca506e146108e8578063402946b91461090e57610581565b80632a324027146107bc5780632d77d0d0146107c45780632f470764146107ea57806332e4706f146107f25780633432423c146108285780633452d2d41461085457610581565b806317f8b7881161053e57806317f8b788146106d05780631a81c191146106ed5780631b7bde7414610713578063218b39c61461075357806324cc57491461077957806329f9986d1461079f57610581565b8063065d810f146105c55780630676c1b71461062457806307024c25146106485780630c615ee914610650578063115dd4b11461066f57806317548b79146106a9575b6040805162461bcd60e51b815260206004820152601460248201527319985b1b189858dac81b9bdd08185b1b1bddd95960621b604482015290519081900360640190fd5b6105f1600480360360408110156105db57600080fd5b506001600160a01b038135169060200135611362565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61062c6113a2565b604080516001600160a01b039092168252519081900360200190f35b61062c6113b1565b61066d6004803603602081101561066657600080fd5b50356113c0565b005b6106956004803603602081101561068557600080fd5b50356001600160a01b03166114de565b604080519115158252519081900360200190f35b61062c600480360360208110156106bf57600080fd5b50356001600160e01b0319166114fe565b61066d600480360360208110156106e657600080fd5b5035611519565b61066d6004803603602081101561070357600080fd5b50356001600160a01b0316611637565b6107416004803603604081101561072957600080fd5b506001600160a01b0381358116916020013516611722565b60408051918252519081900360200190f35b61062c6004803603602081101561076957600080fd5b50356001600160a01b031661173f565b6106956004803603602081101561078f57600080fd5b50356001600160a01b031661175a565b61066d600480360360208110156107b557600080fd5b503561176f565b61074161188d565b61066d600480360360208110156107da57600080fd5b50356001600160a01b0316611893565b6107416119cc565b6106956004803603606081101561080857600080fd5b506001600160a01b038135811691602081013590911690604001356119d2565b6105f16004803603604081101561083e57600080fd5b506001600160a01b038135169060200135611b70565b6107416004803603602081101561086a57600080fd5b50356001600160a01b0316611bb0565b61066d6004803603602081101561089057600080fd5b5035611bc2565b61066d600480360360208110156108ad57600080fd5b5035611c91565b61066d600480360360408110156108ca57600080fd5b506001600160a01b038135169060200135611d51565b610741611d6d565b610741600480360360208110156108fe57600080fd5b50356001600160a01b0316611d73565b6109316004803603604081101561092457600080fd5b5080359060200135611d85565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561096d578181015183820152602001610955565b505050509050019250505060405180910390f35b6106956004803603604081101561099757600080fd5b50803590602001356001600160a01b0316611da2565b610741600480360360208110156109c357600080fd5b50356001600160a01b0316611dc2565b610741611dd4565b610741611dda565b61062c611de0565b61066d60048036036020811015610a0157600080fd5b50356001600160a01b0316611def565b610741611f26565b610a3660048036036020811015610a2f57600080fd5b5035611f2c565b60408051938452602084019290925282820152519081900360600190f35b610741611f4d565b61074160048036036040811015610a7257600080fd5b506001600160a01b0381358116916020013516611f53565b61066d60048036036040811015610aa057600080fd5b810190602081018135600160201b811115610aba57600080fd5b820183602082011115610acc57600080fd5b803590602001918460208302840111600160201b83111715610aed57600080fd5b919390929091602081019035600160201b811115610b0a57600080fd5b820183602082011115610b1c57600080fd5b803590602001918460208302840111600160201b83111715610b3d57600080fd5b509092509050611f7e565b610b7660048036036040811015610b5e57600080fd5b506001600160a01b03813581169160200135166124d9565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b61069560048036036020811015610bb757600080fd5b50356001600160a01b0316612513565b61062c60048036036020811015610bdd57600080fd5b50356001600160a01b0316612528565b61066d60048036036020811015610c0357600080fd5b50356001600160a01b0316612543565b61062c612664565b610741612673565b61069560048036036060811015610c3957600080fd5b506001600160a01b03813581169160208101359091169060400135612679565b61066d60048036036020811015610c6f57600080fd5b50356001600160a01b0316612815565b61062c612900565b61074161290f565b61066d60048036036020811015610ca557600080fd5b5035612915565b6106956129a3565b61066d60048036036040811015610cca57600080fd5b810190602081018135600160201b811115610ce457600080fd5b820183602082011115610cf657600080fd5b803590602001918460208302840111600160201b83111715610d1757600080fd5b919390929091602081019035600160201b811115610d3457600080fd5b820183602082011115610d4657600080fd5b803590602001918460208302840111600160201b83111715610d6757600080fd5b5090925090506129ac565b61062c612b71565b61062c60048036036020811015610d9057600080fd5b50356001600160a01b0316612b80565b610695612b9b565b61066d60048036036020811015610dbe57600080fd5b50356001600160a01b0316612bc1565b61074160048036036020811015610de457600080fd5b50356001600160a01b0316612c9e565b610741612cb0565b610e2860048036036040811015610e1257600080fd5b506001600160a01b038135169060200135612cb6565b604080516001600160a01b03909316835290151560208301528051918290030190f35b61066d60048036036020811015610e6157600080fd5b5035612d58565b61066d60048036036020811015610e7e57600080fd5b5035612e7e565b61066d60048036036020811015610e9b57600080fd5b5035612f95565b61066d60048036036020811015610eb857600080fd5b50356130b3565b61066d60048036036020811015610ed557600080fd5b50356131d1565b61074161325f565b610741613265565b61062c61326b565b61066d60048036036020811015610f0a57600080fd5b503561327a565b61069560048036036060811015610f2757600080fd5b506001600160a01b03813581169160208101359091169060400135613394565b61074160048036036020811015610f5d57600080fd5b50356001600160a01b0316613530565b61074160048036036020811015610f8357600080fd5b50356001600160a01b0316613542565b61062c613554565b61062c613563565b61074160048036036020811015610fb957600080fd5b50356001600160a01b0316613572565b610fe660048036036020811015610fdf57600080fd5b5035613584565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b61066d6004803603602081101561106757600080fd5b50356001600160a01b03166135f6565b61066d6004803603604081101561108d57600080fd5b506001600160a01b0381351690602001356138f7565b61066d600480360360208110156110b957600080fd5b5035613913565b6110dd600480360360208110156110d657600080fd5b50356139e2565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6107416004803603604081101561114357600080fd5b506001600160a01b0381358116916020013516613a34565b61066d6004803603602081101561117157600080fd5b5035613a51565b61066d6004803603602081101561118e57600080fd5b5035613b72565b61062c613c90565b610741613c9f565b610741600480360360208110156111bb57600080fd5b50356001600160a01b0316613ca5565b61066d600480360360208110156111e157600080fd5b50356001600160a01b0316613cb7565b61066d6004803603602081101561120757600080fd5b50351515613ded565b610695613ec5565b61066d6004803603602081101561122e57600080fd5b50356001600160a01b0316613ece565b610741613fef565b61066d6004803603604081101561125c57600080fd5b506001600160a01b038135169060200135613ff5565b61066d6004803603602081101561128857600080fd5b50356001600160a01b0316614011565b61062c6140ee565b61066d600480360360608110156112b657600080fd5b506001600160a01b038135811691602081013590911690604001356140fd565b610741614257565b61074161425d565b610741600480360360408110156112fc57600080fd5b506001600160a01b0381358116916020013516614263565b61066d6004803603602081101561132a57600080fd5b50356001600160a01b03166144ed565b61062c61453e565b61074161454d565b610741614553565b61062c614559565b61062c614568565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6031546001600160a01b031690565b6113c8612b9b565b611408576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615611449576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d63100000811115611498576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b60188054908290556040805182815260208101849052815133927f0628070e9ccbc70e8be34a2fa969f8d314ec049f17bfcb4c2020df4bccd2bf52928290030190a25050565b6001600160a01b0390811660009081526022602052604090205416151590565b6005602052600090815260409020546001600160a01b031681565b611521612b9b565b611561576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff16156115a2576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d631000008111156115f1576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b601b8054908290556040805182815260208101849052815133927f5c61c9c51cb2781bc120817a851f7f27c134d5d191bc5a2b0ea971ba638425e4928290030190a25050565b61163f612b9b565b61167f576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff16156116c0576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b600380546001600160a01b038381166001600160a01b03198316811790935560408051919092168082526020820193909352815133927f480cc6e59585343a9e9d6fe591dad0f80ce93bb2399ca672910f380671b46ba8928290030190a25050565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b611777612b9b565b6117b7576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff16156117f8576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d63100000811115611847576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b603e8054908290556040805182815260208101849052815133927f02bd69d9975fcf3b39b6ab502d77983a0cfce893e47073f502d094c6a94da33b928290030190a25050565b60185481565b61189b612b9b565b6118db576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561191c576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b61192581614577565b611976576040805162461bcd60e51b815260206004820152601e60248201527f726567697374727941646472657373206e6f74206120636f6e74726163740000604482015290519081900360640190fd5b600480546001600160a01b038381166001600160a01b031983161792839055604051918116921690829033907f54c538f1d732806e1bfc25ec56236dac39e6070dd856c0e7efb2bc274709467d90600090a45050565b601f5481565b603d5460009060ff1615611a16576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6014546001600160a01b03163314611a64576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0384166000908152601c6020526040902054829080821115611a8b578091505b81611a9b57600092505050611b69565b611aab818363ffffffff6145b316565b6001600160a01b0387166000908152601c6020908152604080832093909355601d90522054611ae0908363ffffffff6145f516565b6001600160a01b0387166000818152601d6020526040902091909155611b0d90868463ffffffff61464f16565b846001600160a01b0316866001600160a01b0316336001600160a01b03167f2bfaa669aeee298bc85fe2b7dddc312fc28b78622f086063b9a410d7ba9939cf856040518082815260200191505060405180910390a46001925050505b9392505050565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b611bca612b9b565b611c0a576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615611c4b576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b60298054908290556040805182815260208101849052815133927fa645d7b227c34f1f218d53bc3b3ccb9a43eaf2231b33925194f1de755aa3acc3928290030190a25050565b611c99612b9b565b611cd9576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615611d1a576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b601e54611d2d908263ffffffff6145f516565b601e55602e54611d4e906001600160a01b031633308463ffffffff6146a616565b50565b6001600160a01b039091166000908152601c6020526040902055565b602f5490565b602a6020526000908152604090205481565b6060611d996024848463ffffffff61470616565b90505b92915050565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b603e5490565b60155481565b6037546001600160a01b031690565b611df7612b9b565b611e37576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615611e78576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b611e8181614577565b611ed2576040805162461bcd60e51b815260206004820181905260248201527f6e65774c6f636b534f5641646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b603880546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fea3cad8b6739a7a73616cb585fe48a8e8f61d1fd7f9822ccd7580a805357aa7090600090a45050565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b6001600160a01b039182166000908152603c6020908152604080832093909416825291909152205490565b611f86612b9b565b611fc6576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615612007576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b82811461204c576040805162461bcd60e51b815260206004820152600e60248201526d0c6deeadce840dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b60005b838110156124d25782828281811061206357fe5b905060200201356001600160a01b03166001600160a01b031685858381811061208857fe5b905060200201356001600160a01b03166001600160a01b031614156120e4576040805162461bcd60e51b815260206004820152600d60248201526c1c1bdbdb080f4f48185cdcd95d609a1b604482015290519081900360640190fd5b60008585838181106120f257fe5b905060200201356001600160a01b03166001600160a01b0316141561214a576040805162461bcd60e51b81526020600482015260096024820152680706f6f6c203d3d20360bc1b604482015290519081900360640190fd5b600083838381811061215857fe5b905060200201356001600160a01b03166001600160a01b03161415806121b85750600060228187878581811061218a57fe5b6001600160a01b03602091820293909301358316845283019390935260409091016000205416919091141590505b6121fb576040805162461bcd60e51b815260206004820152600f60248201526e706f6f6c206e6f742065786973747360881b604482015290519081900360640190fd5b600083838381811061220957fe5b905060200201356001600160a01b03166001600160a01b03161415612328576000602360006022600089898781811061223e57fe5b6001600160a01b0360209182029390930135831684528381019490945250604091820160009081205482168552928401949094529190910181208054939092166001600160a01b031990931692909217905560228187878581811061229f57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061232285858381811061230257fe5b905060200201356001600160a01b0316602461480590919063ffffffff16565b50612459565b82828281811061233457fe5b905060200201356001600160a01b03166022600087878581811061235457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508484828181106123b457fe5b905060200201356001600160a01b0316602360008585858181106123d457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061245785858381811061243757fe5b905060200201356001600160a01b0316602461481290919063ffffffff16565b505b82828281811061246557fe5b905060200201356001600160a01b03166001600160a01b031685858381811061248a57fe5b6040516001600160a01b036020909202939093013516913391507f919223d371e0ad76f1f32dcbe0750166810bff9a9e4b2735bfcd01c5686c8d8990600090a460010161204f565b5050505050565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b61254b612b9b565b61258b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff16156125cc576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6125d581614577565b6126105760405162461bcd60e51b8152600401808060200182810382526021815260200180614d4f6021913960400191505060405180910390fd5b603780546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907f6105cbfb5494a79f89745763767914b7b60b00defac5e94c7eb28cc5e44c479f90600090a45050565b6003546001600160a01b031681565b60355481565b603d5460009060ff16156126bd576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6014546001600160a01b0316331461270b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038416600090815260196020526040902054829080821115612732578091505b8161274257600092505050611b69565b612752818363ffffffff6145b316565b6001600160a01b038716600090815260196020908152604080832093909355601a90522054612787908363ffffffff6145f516565b6001600160a01b0387166000818152601a60205260409020919091556127b490868463ffffffff61464f16565b846001600160a01b0316866001600160a01b0316336001600160a01b03167f951f1856a4d1d8c0081f50a1aee9fdc008f729d0f22849618016e353179b8dda856040518082815260200191505060405180910390a450600195945050505050565b61281d612b9b565b61285d576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561289e576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b600280546001600160a01b038381166001600160a01b03198316811790935560408051919092168082526020820193909352815133927f05621ab0b721f217895f5337ac1283251172d175ef3dc8c9a0287155f6024ce8928290030190a25050565b6002546001600160a01b031681565b601e5481565b61291d612b9b565b61295d576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561299e576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b602755565b603d5460ff1681565b6129b4612b9b565b6129f4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615612a35576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b828114612a7a576040805162461bcd60e51b815260206004820152600e60248201526d0c6deeadce840dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b60005b838110156124d257828282818110612a9157fe5b90506020020135151560266000878785818110612aaa57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550848482818110612afd57fe5b905060200201356001600160a01b03166001600160a01b0316336001600160a01b03167f24cecc90c7d4bc8c6765b75eedcc61d4e1cc4e4d49cd0756c6dfb5f6cc259b50858585818110612b4d57fe5b604080516020928302949094013515158452519283900301919050a3600101612a7d565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316612bb261481f565b6001600160a01b031614905090565b612bc9612b9b565b612c09576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615612c4a576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b603180546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fe48b1893efaee62da0749dd98dbf0ea62ee472b37f7205114aca36cc9de1122890600090a45050565b60176020526000908152604090205481565b602c5481565b600080612cc1612b9b565b612d01576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615612d42576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b612d4c8484614823565b915091505b9250929050565b612d60612b9b565b612da0576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615612de1576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d63100000811115612e38576040805162461bcd60e51b815260206004820152601660248201527508ccaca40e4cac4c2e8ca40d2e640e8dede40d0d2ced60531b604482015290519081900360640190fd5b602f8054908290556040805182815260208101849052815133927fb12d68e20e5279e25ff10edfc0f82deaa858ea2ac9874cf58518f4e5f9422013928290030190a25050565b612e86612b9b565b612ec6576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615612f07576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b61270f811115612f4f576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b603f8054908290556040805182815260208101849052815133927fc6d322dc6668f20ff04ac11b217aae8e8704e6388bd1dececeab1059db806bf6928290030190a25050565b612f9d612b9b565b612fdd576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561301e576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d6310000081111561306d576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b60218054908290556040805182815260208101849052815133927fa06d9b7b1c979150dcbf5b050626cc7d06c764a12ebf76ec8d16b8d3d7c9ee53928290030190a25050565b6130bb612b9b565b6130fb576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561313c576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d6310000081111561318b576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b60398054908290556040805182815260208101849052815133927f61d3e840cf1074298f10fa77edb788b4e5e554d7d135c93ac5f38f2ce0f6b52d928290030190a25050565b6131d9612b9b565b613219576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561325a576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b602855565b602f5481565b60205481565b602d546001600160a01b031681565b613282612b9b565b6132c2576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615613303576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6000811161334e576040805162461bcd60e51b81526020600482015260136024820152724261736520726577617264206973207a65726f60681b604482015290519081900360640190fd5b602b8054908290556040805182815260208101849052815133927f13cb748cec5c5021a23ec7994522a0911f24f10fdabc909281fbe95914b782f0928290030190a25050565b603d5460009060ff16156133d8576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6014546001600160a01b03163314613426576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b03841660009081526016602052604090205482908082111561344d578091505b8161345d57600092505050611b69565b61346d818363ffffffff6145b316565b6001600160a01b0387166000908152601660209081526040808320939093556017905220546134a2908363ffffffff6145f516565b6001600160a01b0387166000818152601760205260409020919091556134cf90868463ffffffff61464f16565b846001600160a01b0316866001600160a01b0316336001600160a01b03167fabc20bdd02de91df32a6e4a11684e26e0a34dc5a895a314ae51a919bc9f62c60856040518082815260200191505060405180910390a450600195945050505050565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6135fe612b9b565b61363e576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61364f631d18990160e21b826148a0565b613660631a81c19160e01b826148a0565b6136716359e49e0f60e01b826148a0565b613682630427554f60e51b826148a0565b61369363691c6d9160e11b826148a0565b6136a4630c615ee960e01b826148a0565b6136b56302ff16f160e31b826148a0565b6136c66329f9986d60e01b826148a0565b6136d7633487e38960e21b826148a0565b6136e863a32bb68360e01b826148a0565b6136f963a2ab1ba160e01b826148a0565b61370a637fb202e560e01b826148a0565b61371b6314dcf98560e31b826148a0565b61372c63355a395f60e01b826148a0565b61373d63e8997dbd60e01b826148a0565b61374e631e4aaa4f60e31b826148a0565b61375f6358d644e560e11b826148a0565b6137706374326e8f60e01b826148a0565b6137816332e4706f60e01b826148a0565b613792639688185760e01b826148a0565b6137a3633c56ae1b60e01b826148a0565b6137b463402946b960e01b826148a0565b6137c563115dd4b160e01b826148a0565b6137d66302d77d0d60e41b826148a0565b6137e763367aaa9960e21b826148a0565b6137f8630e3ff93760e41b826148a0565b613809636fbae33b60e01b826148a0565b61381a634dd053a560e01b826148a0565b61382b630c7c333f60e41b826148a0565b61383c6358aac5b960e11b826148a0565b61384d63031b39f960e61b826148a0565b61385e6372523d0160e11b826148a0565b61386f633e526e6b60e01b826148a0565b613880631674367b60e21b826148a0565b6138916307024c2560e01b826148a0565b6138a26325e7f39360e11b826148a0565b6138b3633d1250bb60e21b826148a0565b6138c4633f1ae8b960e01b826148a0565b6138d563462096f360e01b826148a0565b6138e663a1eb568360e01b826148a0565b611d4e6301c832c960e71b826148a0565b6001600160a01b03909116600090815260166020526040902055565b61391b612b9b565b61395b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561399c576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b60358054908290556040805182815260208101849052815133927f5b3b73dcee2d869937089aa5282989415bc607389ab2d4164ae83e7a9e1da084928290030190a25050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b613a59612b9b565b613a99576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615613ada576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d63100000811115613b29576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b60208054828255604080518281529283018490528051919233927f7f47cc725826cba6f43b2c0a013328b47d5f16aa9d27d6f0196a37a35c8e53f5929181900390910190a25050565b613b7a612b9b565b613bba576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615613bfb576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d63100000811115613c4a576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b60158054908290556040805182815260208101849052815133927fa6c5bd6650afa784494efd877ecd8b7505efbbbaed74b7dd29f1472d6cd0c492928290030190a25050565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b613cbf612b9b565b613cff576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615613d40576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b613d4981614577565b613d9a576040805162461bcd60e51b815260206004820181905260248201527f7772627463546f6b656e41646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b602d80546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907ec53b30140bc38db3a9070249d614e03304ada9e458b2d2f01d23feed00985a90600090a45050565b613df5612b9b565b613e35576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615158115151415613e82576040805162461bcd60e51b815260206004820152600c60248201526b43616e277420746f67676c6560a01b604482015290519081900360640190fd5b603d805460ff19168215801591821790925560405190919033907f575725fa4843b62a71608b620f6d2a15792407ae40e019230a0500109782f66090600090a450565b603d5460ff1690565b613ed6612b9b565b613f16576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615613f57576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b613f6081614577565b613f9b5760405162461bcd60e51b8152600401808060200182810382526024815260200180614d9a6024913960400191505060405180910390fd5b602e80546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fffdeb9a96d6e1f867bcbb8a64815e576b65141995ab197cf02f7bb34fc186b7590600090a45050565b603f5490565b6001600160a01b03909116600090815260196020526040902055565b614019612b9b565b614059576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561409a576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b601480546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907f83e92cb95ec836f94e25e0a7b31c39f750833a8ce24eaa227a7050aafea08a8490600090a45050565b6014546001600160a01b031681565b614105612b9b565b614145576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615614186576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b683635c9adc5dea000008111156141e4576040805162461bcd60e51b815260206004820152601e60248201527f5370656369616c206665652072656261746520697320746f6f20686967680000604482015290519081900360640190fd5b6001600160a01b038381166000818152603c6020908152604080832094871680845294825291829020805490869055825181815291820186905282519094939233927fd2d3c121d3439420f50efd36f0a01ebdac87111ec00360641c32aea3c6fc3213929081900390910190a450505050565b601b5481565b60285481565b603d5460009060ff16156142a7576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6014546001600160a01b031633146142f5576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0383166000908152601660205260409020548015614364576001600160a01b0384166000908152601660209081526040808320839055601790915290205461434a908263ffffffff6145f516565b6001600160a01b0385166000908152601760205260409020555b6001600160a01b03841660009081526019602052604090205480156143d3576001600160a01b0385166000908152601960209081526040808320839055601a9091529020546143b9908263ffffffff6145f516565b6001600160a01b0386166000908152601a60205260409020555b6001600160a01b0385166000908152601c60205260409020548015614442576001600160a01b0386166000908152601c60209081526040808320839055601d909152902054614428908263ffffffff6145f516565b6001600160a01b0387166000908152601d60205260409020555b600061446482614458868663ffffffff6145f516565b9063ffffffff6145f516565b905080614476579350611d9c92505050565b6144906001600160a01b038816878363ffffffff61464f16565b604080518581526020810185905280820184905290516001600160a01b0380891692908a169133917fa0f881f497620074a74d99fb0378eab58be58cac19de6d38c57bcfeb17861830919081900360600190a49695505050505050565b6144f5612b9b565b614535576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611d4e8161491a565b6038546001600160a01b031690565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906145ab57508115155b949350505050565b6000611d9983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506149bb565b600082820183811015611d99576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526146a1908490614a52565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052614700908590614a52565b50505050565b606082820183811015614754576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b60018501548111614765578061476b565b60018501545b905080158061477a5750808410155b156147855750611b69565b8381036040519080825280602002602001820160405280156147b1578160200160208202803883390190505b50915060005b8482038110156147fc5785600101858201815481106147d257fe5b90600052602060002001548382815181106147e957fe5b60209081029190910101526001016147b7565b50509392505050565b6000816145ab8482614c0a565b6000816145ab8482614cd3565b3390565b601e546000908190839080821115614839578091505b81614857575050602e546001600160a01b0316915060009050612d51565b614867818363ffffffff6145b316565b601e55602e54614887906001600160a01b0316878463ffffffff61464f16565b5050602e546001600160a01b0316946001945092505050565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b038316908117909155156148fb576148f5600d6001600160e01b0319841663ffffffff614cd316565b50614916565b6146a1600d6001600160e01b0319841663ffffffff614c0a16565b5050565b6001600160a01b03811661495f5760405162461bcd60e51b8152600401808060200182810382526026815260200180614d296026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115614a4a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614a0f5781810151838201526020016149f7565b50505050905090810190601f168015614a3c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b614a64826001600160a01b0316614577565b614ab5576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614af35780518252601f199092019160209182019101614ad4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b55576040519150601f19603f3d011682016040523d82523d6000602084013e614b5a565b606091505b509150915081614bb1576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561470057808060200190516020811015614bcd57600080fd5b50516147005760405162461bcd60e51b815260040180806020018281038252602a815260200180614d70602a913960400191505060405180910390fd5b6000614c168383614d13565b15614ccb5760008281526020849052604090205460018401546000199182019101808214614c8e576000856001018281548110614c4f57fe5b9060005260206000200154905080866001018481548110614c6c57fe5b6000918252602080832090910192909255918252869052604090206001830190555b60008481526020869052604081205560018501805480614caa57fe5b60019003818190600052602060002001600090559055600192505050611d9c565b506000611d9c565b6000614cdf8383614d13565b614ccb5750600180830180548083018083556000928352602080842090920185905584835290859052604090912055611d9c565b6000908152602091909152604090205415159056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573736e6577536f76546f6b656e41646472657373206e6f74206120636f6e74726163745361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645f70726f746f636f6c546f6b656e41646472657373206e6f74206120636f6e7472616374a265627a7a72315820f751e3e773085ba79d40514999c823d3056bc92ce9ccfb1672a9ffe6941ed99a64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH3 0xAB PUSH3 0xFF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x103 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x4DF2 DUP1 PUSH3 0x113 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x581 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x2E5 JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0x18D JUMPI DUP1 PUSH4 0xE4A47A02 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0xF2555278 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x1342 JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x134A JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x1352 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x135A JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xF2555278 EQ PUSH2 0x12E6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1314 JUMPI DUP1 PUSH4 0xF44942EC EQ PUSH2 0x133A JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xE4A47A02 EQ PUSH2 0x1246 JUMPI DUP1 PUSH4 0xE8997DBD EQ PUSH2 0x1272 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x1298 JUMPI DUP1 PUSH4 0xEA0E3930 EQ PUSH2 0x12A0 JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x12D6 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x12DE JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xD485045E GT PUSH2 0x146 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x11A5 JUMPI DUP1 PUSH4 0xD9EAAA64 EQ PUSH2 0x11CB JUMPI DUP1 PUSH4 0xDA541E09 EQ PUSH2 0x11F1 JUMPI DUP1 PUSH4 0xDAC88561 EQ PUSH2 0x1210 JUMPI DUP1 PUSH4 0xE3FF9370 EQ PUSH2 0x1218 JUMPI DUP1 PUSH4 0xE4196480 EQ PUSH2 0x123E JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x10C0 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x112D JUMPI DUP1 PUSH4 0xD21F8E24 EQ PUSH2 0x115B JUMPI DUP1 PUSH4 0xD238DB22 EQ PUSH2 0x1178 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x1195 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x119D JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xAE0A8530 GT PUSH2 0x24C JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x205 JUMPI DUP1 PUSH4 0xC4A90815 GT PUSH2 0x1DF JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0xFC9 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1051 JUMPI DUP1 PUSH4 0xC6CE7E40 EQ PUSH2 0x1077 JUMPI DUP1 PUSH4 0xC7C333F0 EQ PUSH2 0x10A3 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0xF93 JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0xF9B JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0xFA3 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0xEE4 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0xEEC JUMPI DUP1 PUSH4 0xB1558B72 EQ PUSH2 0xEF4 JUMPI DUP1 PUSH4 0xB1AC89CA EQ PUSH2 0xF11 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0xF47 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0xF6D JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x9C53874F GT PUSH2 0x29E JUMPI DUP1 PUSH4 0x9C53874F EQ PUSH2 0xE4B JUMPI DUP1 PUSH4 0xA1EB5683 EQ PUSH2 0xE68 JUMPI DUP1 PUSH4 0xA2AB1BA1 EQ PUSH2 0xE85 JUMPI DUP1 PUSH4 0xA32BB683 EQ PUSH2 0xEA2 JUMPI DUP1 PUSH4 0xA6E7CC28 EQ PUSH2 0xEBF JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0xEDC JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0xD7A JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xDA0 JUMPI DUP1 PUSH4 0x9254E6BF EQ PUSH2 0xDA8 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0xDCE JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0xDF4 JUMPI DUP1 PUSH4 0x96881857 EQ PUSH2 0xDFC JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x4115A2B6 GT PUSH2 0x448 JUMPI DUP1 PUSH4 0x68C4AC26 GT PUSH2 0x3AF JUMPI DUP1 PUSH4 0x74626404 GT PUSH2 0x368 JUMPI DUP1 PUSH4 0x7FB202E5 GT PUSH2 0x342 JUMPI DUP1 PUSH4 0x7FB202E5 EQ PUSH2 0xC8F JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0xCAC JUMPI DUP1 PUSH4 0x84EAA9E0 EQ PUSH2 0xCB4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xD72 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x74626404 EQ PUSH2 0xC59 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0xC7F JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0xC87 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0xBA1 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0xBC7 JUMPI DUP1 PUSH4 0x6FBAE33B EQ PUSH2 0xBED JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0xC13 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0xC1B JUMPI DUP1 PUSH4 0x74326E8F EQ PUSH2 0xC23 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x4F28CAC2 GT PUSH2 0x401 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0xA11 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0xA19 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0xA54 JUMPI DUP1 PUSH4 0x59D0D9EC EQ PUSH2 0xA5C JUMPI DUP1 PUSH4 0x59E49E0F EQ PUSH2 0xA8A JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0xB48 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x981 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x9AD JUMPI DUP1 PUSH4 0x462096F3 EQ PUSH2 0x9D3 JUMPI DUP1 PUSH4 0x4699F846 EQ PUSH2 0x9DB JUMPI DUP1 PUSH4 0x4BCFE726 EQ PUSH2 0x9E3 JUMPI DUP1 PUSH4 0x4DD053A5 EQ PUSH2 0x9EB JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x4EC JUMPI DUP1 PUSH4 0x355A395F GT PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x355A395F EQ PUSH2 0x87A JUMPI DUP1 PUSH4 0x3C56AE1B EQ PUSH2 0x897 JUMPI DUP1 PUSH4 0x3E526E6B EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0x3F1AE8B9 EQ PUSH2 0x8E0 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x8E8 JUMPI DUP1 PUSH4 0x402946B9 EQ PUSH2 0x90E JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x7BC JUMPI DUP1 PUSH4 0x2D77D0D0 EQ PUSH2 0x7C4 JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x7EA JUMPI DUP1 PUSH4 0x32E4706F EQ PUSH2 0x7F2 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x828 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x854 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x17F8B788 GT PUSH2 0x53E JUMPI DUP1 PUSH4 0x17F8B788 EQ PUSH2 0x6D0 JUMPI DUP1 PUSH4 0x1A81C191 EQ PUSH2 0x6ED JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x713 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x753 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x779 JUMPI DUP1 PUSH4 0x29F9986D EQ PUSH2 0x79F JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x5C5 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0x7024C25 EQ PUSH2 0x648 JUMPI DUP1 PUSH4 0xC615EE9 EQ PUSH2 0x650 JUMPI DUP1 PUSH4 0x115DD4B1 EQ PUSH2 0x66F JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x6A9 JUMPI JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1362 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x62C PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x62C PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x13C0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x685 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x62C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x14FE JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1519 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x703 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1637 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x729 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1722 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x62C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x173F JUMP JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x175A JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x176F JUMP JUMPDEST PUSH2 0x741 PUSH2 0x188D JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1893 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x19CC JUMP JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x19D2 JUMP JUMPDEST PUSH2 0x5F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x83E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B70 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x86A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1BB0 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x890 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1BC2 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C91 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1D51 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x1D6D JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D73 JUMP JUMPDEST PUSH2 0x931 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1D85 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x96D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x955 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x997 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DA2 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DC2 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x1DD4 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x1DDA JUMP JUMPDEST PUSH2 0x62C PUSH2 0x1DE0 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DEF JUMP JUMPDEST PUSH2 0x741 PUSH2 0x1F26 JUMP JUMPDEST PUSH2 0xA36 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F2C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x741 PUSH2 0x1F4D JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1F53 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xAA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xABA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xACC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1F7E JUMP JUMPDEST PUSH2 0xB76 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x24D9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2513 JUMP JUMPDEST PUSH2 0x62C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2528 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x2664 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x2673 JUMP JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2679 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x2900 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x290F JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2915 JUMP JUMPDEST PUSH2 0x695 PUSH2 0x29A3 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xCE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xD17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xD34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xD67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x29AC JUMP JUMPDEST PUSH2 0x62C PUSH2 0x2B71 JUMP JUMPDEST PUSH2 0x62C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B80 JUMP JUMPDEST PUSH2 0x695 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BC1 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C9E JUMP JUMPDEST PUSH2 0x741 PUSH2 0x2CB0 JUMP JUMPDEST PUSH2 0xE28 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2CB6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2D58 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2E7E JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2F95 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x30B3 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xED5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x31D1 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x325F JUMP JUMPDEST PUSH2 0x741 PUSH2 0x3265 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x326B JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x327A JUMP JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3394 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3530 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3542 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x3554 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x3563 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3572 JUMP JUMPDEST PUSH2 0xFE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3584 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1067 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x35F6 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x108D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x38F7 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3913 JUMP JUMPDEST PUSH2 0x10DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x39E2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3A34 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3A51 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x118E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3B72 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x3C90 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x3C9F JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3CA5 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3CB7 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x3DED JUMP JUMPDEST PUSH2 0x695 PUSH2 0x3EC5 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x122E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3ECE JUMP JUMPDEST PUSH2 0x741 PUSH2 0x3FEF JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3FF5 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4011 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x40EE JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x12B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x40FD JUMP JUMPDEST PUSH2 0x741 PUSH2 0x4257 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x425D JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x4263 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x132A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44ED JUMP JUMPDEST PUSH2 0x62C PUSH2 0x453E JUMP JUMPDEST PUSH2 0x741 PUSH2 0x454D JUMP JUMPDEST PUSH2 0x741 PUSH2 0x4553 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x4559 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x4568 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x13C8 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x1408 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1449 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x1498 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x18 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x628070E9CCBC70E8BE34A2FA969F8D314EC049F17BFCB4C2020DF4BCCD2BF52 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1521 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x1561 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x15A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x15F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1B DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x5C61C9C51CB2781BC120817A851F7F27C134D5D191BC5A2B0EA971BA638425E4 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x163F PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x167F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x16C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x480CC6E59585343A9E9D6FE591DAD0F80CE93BB2399CA672910F380671B46BA8 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1777 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x17B7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x17F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x1847 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3E DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x2BD69D9975FCF3B39B6AB502D77983A0CFCE893E47073F502D094C6A94DA33B SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x189B PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x18DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x191C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1925 DUP2 PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x1976 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x726567697374727941646472657373206E6F74206120636F6E74726163740000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP2 AND SWAP3 AND SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0x54C538F1D732806E1BFC25EC56236DAC39E6070DD856C0E7EFB2BC274709467D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x1A16 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1A64 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x1A8B JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x1A9B JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1B69 JUMP JUMPDEST PUSH2 0x1AAB DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45B3 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1D SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x1AE0 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1B0D SWAP1 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x464F AND JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2BFAA669AEEE298BC85FE2B7DDDC312FC28B78622F086063B9A410D7BA9939CF DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1BCA PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x1C0A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1C4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x29 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0xA645D7B227C34F1F218D53BC3B3CCB9A43EAF2231B33925194F1DE755AA3ACC3 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x1C99 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x1CD9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1D1A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1E SLOAD PUSH2 0x1D2D SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1E SSTORE PUSH1 0x2E SLOAD PUSH2 0x1D4E SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP5 PUSH4 0xFFFFFFFF PUSH2 0x46A6 AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x2F SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D99 PUSH1 0x24 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x4706 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3E SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1DF7 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x1E37 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1E78 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1E81 DUP2 PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x1ED2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E65774C6F636B534F5641646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0xEA3CAD8B6739A7A73616CB585FE48A8E8F61D1FD7F9822CCD7580A805357AA70 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1F86 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x1FC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2007 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP2 EQ PUSH2 0x204C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24D2 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x2063 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x2088 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x20E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1C1BDBDB080F4F48185CDCD95D PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x20F2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x214A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH9 0x706F6F6C203D3D203 PUSH1 0xBC SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x2158 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 PUSH2 0x21B8 JUMPI POP PUSH1 0x0 PUSH1 0x22 DUP2 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x218A JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP2 DUP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD DUP4 AND DUP5 MSTORE DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP2 SWAP1 SWAP2 EQ ISZERO SWAP1 POP JUMPDEST PUSH2 0x21FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x706F6F6C206E6F7420657869737473 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x2209 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2328 JUMPI PUSH1 0x0 PUSH1 0x23 PUSH1 0x0 PUSH1 0x22 PUSH1 0x0 DUP10 DUP10 DUP8 DUP2 DUP2 LT PUSH2 0x223E JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP2 DUP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD DUP4 AND DUP5 MSTORE DUP4 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SLOAD DUP3 AND DUP6 MSTORE SWAP3 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP2 SWAP1 SWAP2 ADD DUP2 KECCAK256 DUP1 SLOAD SWAP4 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0x22 DUP2 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x229F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x2322 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x2302 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x24 PUSH2 0x4805 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0x2459 JUMP JUMPDEST DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x2334 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x22 PUSH1 0x0 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x2354 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x23B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x23 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x23D4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x2457 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x2437 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x24 PUSH2 0x4812 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x2465 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x248A JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP1 SWAP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD AND SWAP2 CALLER SWAP2 POP PUSH32 0x919223D371E0AD76F1F32DCBE0750166810BFF9A9E4B2735BFCD01C5686C8D89 SWAP1 PUSH1 0x0 SWAP1 LOG4 PUSH1 0x1 ADD PUSH2 0x204F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x254B PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x258B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x25CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x25D5 DUP2 PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x2610 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4D4F PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0x6105CBFB5494A79F89745763767914B7B60B00DEFAC5E94C7EB28CC5E44C479F SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x26BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x270B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x2732 JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x2742 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1B69 JUMP JUMPDEST PUSH2 0x2752 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45B3 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1A SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x2787 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x27B4 SWAP1 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x464F AND JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x951F1856A4D1D8C0081F50A1AEE9FDC008F729D0F22849618016E353179B8DDA DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x281D PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x285D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x289E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x5621AB0B721F217895F5337AC1283251172D175EF3DC8C9A0287155F6024CE8 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH2 0x291D PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x295D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x299E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x27 SSTORE JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x29B4 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x29F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2A35 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP2 EQ PUSH2 0x2A7A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24D2 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x2A91 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD ISZERO ISZERO PUSH1 0x26 PUSH1 0x0 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x2AAA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x2AFD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x24CECC90C7D4BC8C6765B75EEDCC61D4E1CC4E4D49CD0756C6DFB5F6CC259B50 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x2B4D JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 SWAP3 DUP4 MUL SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD ISZERO ISZERO DUP5 MSTORE MLOAD SWAP3 DUP4 SWAP1 SUB ADD SWAP2 SWAP1 POP LOG3 PUSH1 0x1 ADD PUSH2 0x2A7D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BB2 PUSH2 0x481F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2BC9 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x2C09 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2C4A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x31 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0xE48B1893EFAEE62DA0749DD98DBF0EA62EE472B37F7205114ACA36CC9DE11228 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2CC1 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x2D01 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2D42 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2D4C DUP5 DUP5 PUSH2 0x4823 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2D60 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x2DA0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2DE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x2E38 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x8CCACA40E4CAC4C2E8CA40D2E640E8DEDE40D0D2CED PUSH1 0x53 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2F DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0xB12D68E20E5279E25FF10EDFC0F82DEAA858EA2AC9874CF58518F4E5F9422013 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x2E86 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x2EC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2F07 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x270F DUP2 GT ISZERO PUSH2 0x2F4F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3F DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0xC6D322DC6668F20FF04AC11B217AAE8E8704E6388BD1DECECEAB1059DB806BF6 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x2F9D PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x2FDD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x301E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x306D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x21 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0xA06D9B7B1C979150DCBF5B050626CC7D06C764A12EBF76EC8D16B8D3D7C9EE53 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x30BB PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x30FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x313C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x318B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x39 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x61D3E840CF1074298F10FA77EDB788B4E5E554D7D135C93AC5F38F2CE0F6B52D SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x31D9 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x3219 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x325A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x28 SSTORE JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x3282 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x32C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3303 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x334E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x4261736520726577617264206973207A65726F PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2B DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x13CB748CEC5C5021A23EC7994522A0911F24F10FDABC909281FBE95914B782F0 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x33D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3426 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x344D JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x345D JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1B69 JUMP JUMPDEST PUSH2 0x346D DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45B3 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x17 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x34A2 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x34CF SWAP1 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x464F AND JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xABC20BDD02DE91DF32A6E4A11684E26E0A34DC5A895A314AE51A919BC9F62C60 DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0x35FE PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x363E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x364F PUSH4 0x1D189901 PUSH1 0xE2 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3660 PUSH4 0x1A81C191 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3671 PUSH4 0x59E49E0F PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3682 PUSH4 0x427554F PUSH1 0xE5 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3693 PUSH4 0x691C6D91 PUSH1 0xE1 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x36A4 PUSH4 0xC615EE9 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x36B5 PUSH4 0x2FF16F1 PUSH1 0xE3 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x36C6 PUSH4 0x29F9986D PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x36D7 PUSH4 0x3487E389 PUSH1 0xE2 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x36E8 PUSH4 0xA32BB683 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x36F9 PUSH4 0xA2AB1BA1 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x370A PUSH4 0x7FB202E5 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x371B PUSH4 0x14DCF985 PUSH1 0xE3 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x372C PUSH4 0x355A395F PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x373D PUSH4 0xE8997DBD PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x374E PUSH4 0x1E4AAA4F PUSH1 0xE3 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x375F PUSH4 0x58D644E5 PUSH1 0xE1 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3770 PUSH4 0x74326E8F PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3781 PUSH4 0x32E4706F PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3792 PUSH4 0x96881857 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x37A3 PUSH4 0x3C56AE1B PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x37B4 PUSH4 0x402946B9 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x37C5 PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x37D6 PUSH4 0x2D77D0D PUSH1 0xE4 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x37E7 PUSH4 0x367AAA99 PUSH1 0xE2 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x37F8 PUSH4 0xE3FF937 PUSH1 0xE4 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3809 PUSH4 0x6FBAE33B PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x381A PUSH4 0x4DD053A5 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x382B PUSH4 0xC7C333F PUSH1 0xE4 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x383C PUSH4 0x58AAC5B9 PUSH1 0xE1 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x384D PUSH4 0x31B39F9 PUSH1 0xE6 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x385E PUSH4 0x72523D01 PUSH1 0xE1 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x386F PUSH4 0x3E526E6B PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3880 PUSH4 0x1674367B PUSH1 0xE2 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3891 PUSH4 0x7024C25 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x38A2 PUSH4 0x25E7F393 PUSH1 0xE1 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x38B3 PUSH4 0x3D1250BB PUSH1 0xE2 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x38C4 PUSH4 0x3F1AE8B9 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x38D5 PUSH4 0x462096F3 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x38E6 PUSH4 0xA1EB5683 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x1D4E PUSH4 0x1C832C9 PUSH1 0xE7 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH2 0x391B PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x395B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x399C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x5B3B73DCEE2D869937089AA5282989415BC607389AB2D4164AE83E7A9E1DA084 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3A59 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x3A99 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3ADA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x3B29 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP1 SLOAD DUP3 DUP3 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP3 DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 CALLER SWAP3 PUSH32 0x7F47CC725826CBA6F43B2C0A013328B47D5F16AA9D27D6F0196A37A35C8E53F5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x3B7A PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x3BBA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3BFB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x3C4A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x15 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0xA6C5BD6650AFA784494EFD877ECD8B7505EFBBBAED74B7DD29F1472D6CD0C492 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3CBF PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x3CFF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3D40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3D49 DUP2 PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x3D9A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7772627463546F6B656E41646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2D DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH31 0xC53B30140BC38DB3A9070249D614E03304ADA9E458B2D2F01D23FEED00985A SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0x3DF5 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x3E35 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 ISZERO ISZERO EQ ISZERO PUSH2 0x3E82 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x43616E277420746F67676C65 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO DUP1 ISZERO SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 CALLER SWAP1 PUSH32 0x575725FA4843B62A71608B620F6D2A15792407AE40E019230A0500109782F660 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3ED6 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x3F16 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3F57 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3F60 DUP2 PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x3F9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4D9A PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2E DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0xFFDEB9A96D6E1F867BCBB8A64815E576B65141995AB197CF02F7BB34FC186B75 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x3F SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH2 0x4019 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x4059 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x409A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0x83E92CB95EC836F94E25E0A7B31C39F750833A8CE24EAA227A7050AAFEA08A84 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x4105 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x4145 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x4186 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x3635C9ADC5DEA00000 DUP2 GT ISZERO PUSH2 0x41E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5370656369616C206665652072656261746520697320746F6F20686967680000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 DUP7 SWAP1 SSTORE DUP3 MLOAD DUP2 DUP2 MSTORE SWAP2 DUP3 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD SWAP1 SWAP5 SWAP4 SWAP3 CALLER SWAP3 PUSH32 0xD2D3C121D3439420F50EFD36F0A01EBDAC87111EC00360641C32AEA3C6FC3213 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x42A7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x42F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4364 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x17 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x434A SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x43D3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x1A SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x43B9 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4442 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x1D SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x4428 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x4464 DUP3 PUSH2 0x4458 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x4476 JUMPI SWAP4 POP PUSH2 0x1D9C SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4490 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP8 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x464F AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP3 SWAP1 DUP11 AND SWAP2 CALLER SWAP2 PUSH32 0xA0F881F497620074A74D99FB0378EAB58BE58CAC19DE6D38C57BCFEB17861830 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x44F5 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x4535 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D4E DUP2 PUSH2 0x491A JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x45AB JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D99 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x49BB JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1D99 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x46A1 SWAP1 DUP5 SWAP1 PUSH2 0x4A52 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x4700 SWAP1 DUP6 SWAP1 PUSH2 0x4A52 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x4754 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD DUP2 GT PUSH2 0x4765 JUMPI DUP1 PUSH2 0x476B JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 PUSH2 0x477A JUMPI POP DUP1 DUP5 LT ISZERO JUMPDEST ISZERO PUSH2 0x4785 JUMPI POP PUSH2 0x1B69 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x47B1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP5 DUP3 SUB DUP2 LT ISZERO PUSH2 0x47FC JUMPI DUP6 PUSH1 0x1 ADD DUP6 DUP3 ADD DUP2 SLOAD DUP2 LT PUSH2 0x47D2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x47E9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x47B7 JUMP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x45AB DUP5 DUP3 PUSH2 0x4C0A JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x45AB DUP5 DUP3 PUSH2 0x4CD3 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1E SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4839 JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x4857 JUMPI POP POP PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2D51 JUMP JUMPDEST PUSH2 0x4867 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45B3 AND JUMP JUMPDEST PUSH1 0x1E SSTORE PUSH1 0x2E SLOAD PUSH2 0x4887 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x464F AND JUMP JUMPDEST POP POP PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 PUSH1 0x1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x48FB JUMPI PUSH2 0x48F5 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x4CD3 AND JUMP JUMPDEST POP PUSH2 0x4916 JUMP JUMPDEST PUSH2 0x46A1 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x4C0A AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x495F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4D29 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x4A4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4A0F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x49F7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4A3C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x4A64 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x4AB5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4AF3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4AD4 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4B55 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4B5A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x4BB1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x4700 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x4700 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4D70 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C16 DUP4 DUP4 PUSH2 0x4D13 JUMP JUMPDEST ISZERO PUSH2 0x4CCB JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x4C8E JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x4C4F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x4C6C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x4CAA JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x1D9C JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1D9C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CDF DUP4 DUP4 PUSH2 0x4D13 JUMP JUMPDEST PUSH2 0x4CCB JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x1D9C JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573736E6577536F76546F6B656E4164647265 PUSH20 0x73206E6F74206120636F6E747261637453616665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x7563636565645F70726F746F636F6C546F6B656E COINBASE PUSH5 0x6472657373 KECCAK256 PUSH15 0x6F74206120636F6E7472616374A265 PUSH3 0x7A7A72 BALANCE PC KECCAK256 0xF7 MLOAD 0xE3 0xE7 PUSH20 0x85BA79D40514999C823D3056BC92CE9CCFB1672 0xA9 SELFDESTRUCT 0xE6 SWAP5 0x1E 0xD9 SWAP11 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "68:2889:112:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;68:2889:112;;780:87:137;853:10;780:87;:::o;68:2889:112:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106105815760003560e01c80638dc48ba5116102e5578063cb6eacd11161018d578063e4a47a02116100f4578063f2555278116100ad578063f589a3e711610087578063f589a3e714611342578063f6ddc8b31461134a578063f706b1f214611352578063f851a4401461135a57610581565b8063f2555278146112e6578063f2fde38b14611314578063f44942ec1461133a57610581565b8063e4a47a0214611246578063e8997dbd14611272578063e8f6276414611298578063ea0e3930146112a0578063edab119f146112d6578063f0e085f5146112de57610581565b8063d485045e11610146578063d485045e146111a5578063d9eaaa64146111cb578063da541e09146111f1578063dac8856114611210578063e3ff937014611218578063e41964801461123e57610581565b8063cb6eacd1146110c0578063cd5d808d1461112d578063d21f8e241461115b578063d238db2214611178578063d288208c14611195578063d473c2da1461119d57610581565b8063ae0a85301161024c578063b9cffa3e11610205578063c4a90815116101df578063c4a9081514610fc9578063c4d66de814611051578063c6ce7e4014611077578063c7c333f0146110a357610581565b8063b9cffa3e14610f93578063ba4861e914610f9b578063bdee453c14610fa357610581565b8063ae0a853014610ee4578063afe8400914610eec578063b1558b7214610ef4578063b1ac89ca14610f11578063b30643d914610f47578063b7e1524114610f6d57610581565b80639c53874f1161029e5780639c53874f14610e4b578063a1eb568314610e68578063a2ab1ba114610e85578063a32bb68314610ea2578063a6e7cc2814610ebf578063acc0434814610edc57610581565b80638dc48ba514610d7a5780638f32d59b14610da05780639254e6bf14610da857806392d894f814610dce578063959083d314610df45780639688185714610dfc57610581565b80634115a2b61161044857806368c4ac26116103af57806374626404116103685780637fb202e5116103425780637fb202e514610c8f5780638456cb5914610cac57806384eaa9e014610cb45780638da5cb5b14610d7257610581565b80637462640414610c5957806378d849ed14610c7f5780637a8faeb814610c8757610581565b806368c4ac2614610ba15780636e66373014610bc75780636fbae33b14610bed5780637420ca3e14610c13578063742e679814610c1b57806374326e8f14610c2357610581565b80634f28cac2116104015780634f28cac214610a11578063569fc1fb14610a19578063574442cc14610a5457806359d0d9ec14610a5c57806359e49e0f14610a8a57806362fff3f614610b4857610581565b80634115a2b6146109815780634203e395146109ad578063462096f3146109d35780634699f846146109db5780634bcfe726146109e35780634dd053a5146109eb57610581565b80632a324027116104ec578063355a395f116104a5578063355a395f1461087a5780633c56ae1b146108975780633e526e6b146108b45780633f1ae8b9146108e05780633fca506e146108e8578063402946b91461090e57610581565b80632a324027146107bc5780632d77d0d0146107c45780632f470764146107ea57806332e4706f146107f25780633432423c146108285780633452d2d41461085457610581565b806317f8b7881161053e57806317f8b788146106d05780631a81c191146106ed5780631b7bde7414610713578063218b39c61461075357806324cc57491461077957806329f9986d1461079f57610581565b8063065d810f146105c55780630676c1b71461062457806307024c25146106485780630c615ee914610650578063115dd4b11461066f57806317548b79146106a9575b6040805162461bcd60e51b815260206004820152601460248201527319985b1b189858dac81b9bdd08185b1b1bddd95960621b604482015290519081900360640190fd5b6105f1600480360360408110156105db57600080fd5b506001600160a01b038135169060200135611362565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61062c6113a2565b604080516001600160a01b039092168252519081900360200190f35b61062c6113b1565b61066d6004803603602081101561066657600080fd5b50356113c0565b005b6106956004803603602081101561068557600080fd5b50356001600160a01b03166114de565b604080519115158252519081900360200190f35b61062c600480360360208110156106bf57600080fd5b50356001600160e01b0319166114fe565b61066d600480360360208110156106e657600080fd5b5035611519565b61066d6004803603602081101561070357600080fd5b50356001600160a01b0316611637565b6107416004803603604081101561072957600080fd5b506001600160a01b0381358116916020013516611722565b60408051918252519081900360200190f35b61062c6004803603602081101561076957600080fd5b50356001600160a01b031661173f565b6106956004803603602081101561078f57600080fd5b50356001600160a01b031661175a565b61066d600480360360208110156107b557600080fd5b503561176f565b61074161188d565b61066d600480360360208110156107da57600080fd5b50356001600160a01b0316611893565b6107416119cc565b6106956004803603606081101561080857600080fd5b506001600160a01b038135811691602081013590911690604001356119d2565b6105f16004803603604081101561083e57600080fd5b506001600160a01b038135169060200135611b70565b6107416004803603602081101561086a57600080fd5b50356001600160a01b0316611bb0565b61066d6004803603602081101561089057600080fd5b5035611bc2565b61066d600480360360208110156108ad57600080fd5b5035611c91565b61066d600480360360408110156108ca57600080fd5b506001600160a01b038135169060200135611d51565b610741611d6d565b610741600480360360208110156108fe57600080fd5b50356001600160a01b0316611d73565b6109316004803603604081101561092457600080fd5b5080359060200135611d85565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561096d578181015183820152602001610955565b505050509050019250505060405180910390f35b6106956004803603604081101561099757600080fd5b50803590602001356001600160a01b0316611da2565b610741600480360360208110156109c357600080fd5b50356001600160a01b0316611dc2565b610741611dd4565b610741611dda565b61062c611de0565b61066d60048036036020811015610a0157600080fd5b50356001600160a01b0316611def565b610741611f26565b610a3660048036036020811015610a2f57600080fd5b5035611f2c565b60408051938452602084019290925282820152519081900360600190f35b610741611f4d565b61074160048036036040811015610a7257600080fd5b506001600160a01b0381358116916020013516611f53565b61066d60048036036040811015610aa057600080fd5b810190602081018135600160201b811115610aba57600080fd5b820183602082011115610acc57600080fd5b803590602001918460208302840111600160201b83111715610aed57600080fd5b919390929091602081019035600160201b811115610b0a57600080fd5b820183602082011115610b1c57600080fd5b803590602001918460208302840111600160201b83111715610b3d57600080fd5b509092509050611f7e565b610b7660048036036040811015610b5e57600080fd5b506001600160a01b03813581169160200135166124d9565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b61069560048036036020811015610bb757600080fd5b50356001600160a01b0316612513565b61062c60048036036020811015610bdd57600080fd5b50356001600160a01b0316612528565b61066d60048036036020811015610c0357600080fd5b50356001600160a01b0316612543565b61062c612664565b610741612673565b61069560048036036060811015610c3957600080fd5b506001600160a01b03813581169160208101359091169060400135612679565b61066d60048036036020811015610c6f57600080fd5b50356001600160a01b0316612815565b61062c612900565b61074161290f565b61066d60048036036020811015610ca557600080fd5b5035612915565b6106956129a3565b61066d60048036036040811015610cca57600080fd5b810190602081018135600160201b811115610ce457600080fd5b820183602082011115610cf657600080fd5b803590602001918460208302840111600160201b83111715610d1757600080fd5b919390929091602081019035600160201b811115610d3457600080fd5b820183602082011115610d4657600080fd5b803590602001918460208302840111600160201b83111715610d6757600080fd5b5090925090506129ac565b61062c612b71565b61062c60048036036020811015610d9057600080fd5b50356001600160a01b0316612b80565b610695612b9b565b61066d60048036036020811015610dbe57600080fd5b50356001600160a01b0316612bc1565b61074160048036036020811015610de457600080fd5b50356001600160a01b0316612c9e565b610741612cb0565b610e2860048036036040811015610e1257600080fd5b506001600160a01b038135169060200135612cb6565b604080516001600160a01b03909316835290151560208301528051918290030190f35b61066d60048036036020811015610e6157600080fd5b5035612d58565b61066d60048036036020811015610e7e57600080fd5b5035612e7e565b61066d60048036036020811015610e9b57600080fd5b5035612f95565b61066d60048036036020811015610eb857600080fd5b50356130b3565b61066d60048036036020811015610ed557600080fd5b50356131d1565b61074161325f565b610741613265565b61062c61326b565b61066d60048036036020811015610f0a57600080fd5b503561327a565b61069560048036036060811015610f2757600080fd5b506001600160a01b03813581169160208101359091169060400135613394565b61074160048036036020811015610f5d57600080fd5b50356001600160a01b0316613530565b61074160048036036020811015610f8357600080fd5b50356001600160a01b0316613542565b61062c613554565b61062c613563565b61074160048036036020811015610fb957600080fd5b50356001600160a01b0316613572565b610fe660048036036020811015610fdf57600080fd5b5035613584565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b61066d6004803603602081101561106757600080fd5b50356001600160a01b03166135f6565b61066d6004803603604081101561108d57600080fd5b506001600160a01b0381351690602001356138f7565b61066d600480360360208110156110b957600080fd5b5035613913565b6110dd600480360360208110156110d657600080fd5b50356139e2565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6107416004803603604081101561114357600080fd5b506001600160a01b0381358116916020013516613a34565b61066d6004803603602081101561117157600080fd5b5035613a51565b61066d6004803603602081101561118e57600080fd5b5035613b72565b61062c613c90565b610741613c9f565b610741600480360360208110156111bb57600080fd5b50356001600160a01b0316613ca5565b61066d600480360360208110156111e157600080fd5b50356001600160a01b0316613cb7565b61066d6004803603602081101561120757600080fd5b50351515613ded565b610695613ec5565b61066d6004803603602081101561122e57600080fd5b50356001600160a01b0316613ece565b610741613fef565b61066d6004803603604081101561125c57600080fd5b506001600160a01b038135169060200135613ff5565b61066d6004803603602081101561128857600080fd5b50356001600160a01b0316614011565b61062c6140ee565b61066d600480360360608110156112b657600080fd5b506001600160a01b038135811691602081013590911690604001356140fd565b610741614257565b61074161425d565b610741600480360360408110156112fc57600080fd5b506001600160a01b0381358116916020013516614263565b61066d6004803603602081101561132a57600080fd5b50356001600160a01b03166144ed565b61062c61453e565b61074161454d565b610741614553565b61062c614559565b61062c614568565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6031546001600160a01b031690565b6113c8612b9b565b611408576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615611449576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d63100000811115611498576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b60188054908290556040805182815260208101849052815133927f0628070e9ccbc70e8be34a2fa969f8d314ec049f17bfcb4c2020df4bccd2bf52928290030190a25050565b6001600160a01b0390811660009081526022602052604090205416151590565b6005602052600090815260409020546001600160a01b031681565b611521612b9b565b611561576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff16156115a2576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d631000008111156115f1576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b601b8054908290556040805182815260208101849052815133927f5c61c9c51cb2781bc120817a851f7f27c134d5d191bc5a2b0ea971ba638425e4928290030190a25050565b61163f612b9b565b61167f576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff16156116c0576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b600380546001600160a01b038381166001600160a01b03198316811790935560408051919092168082526020820193909352815133927f480cc6e59585343a9e9d6fe591dad0f80ce93bb2399ca672910f380671b46ba8928290030190a25050565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b611777612b9b565b6117b7576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff16156117f8576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d63100000811115611847576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b603e8054908290556040805182815260208101849052815133927f02bd69d9975fcf3b39b6ab502d77983a0cfce893e47073f502d094c6a94da33b928290030190a25050565b60185481565b61189b612b9b565b6118db576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561191c576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b61192581614577565b611976576040805162461bcd60e51b815260206004820152601e60248201527f726567697374727941646472657373206e6f74206120636f6e74726163740000604482015290519081900360640190fd5b600480546001600160a01b038381166001600160a01b031983161792839055604051918116921690829033907f54c538f1d732806e1bfc25ec56236dac39e6070dd856c0e7efb2bc274709467d90600090a45050565b601f5481565b603d5460009060ff1615611a16576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6014546001600160a01b03163314611a64576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0384166000908152601c6020526040902054829080821115611a8b578091505b81611a9b57600092505050611b69565b611aab818363ffffffff6145b316565b6001600160a01b0387166000908152601c6020908152604080832093909355601d90522054611ae0908363ffffffff6145f516565b6001600160a01b0387166000818152601d6020526040902091909155611b0d90868463ffffffff61464f16565b846001600160a01b0316866001600160a01b0316336001600160a01b03167f2bfaa669aeee298bc85fe2b7dddc312fc28b78622f086063b9a410d7ba9939cf856040518082815260200191505060405180910390a46001925050505b9392505050565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b611bca612b9b565b611c0a576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615611c4b576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b60298054908290556040805182815260208101849052815133927fa645d7b227c34f1f218d53bc3b3ccb9a43eaf2231b33925194f1de755aa3acc3928290030190a25050565b611c99612b9b565b611cd9576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615611d1a576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b601e54611d2d908263ffffffff6145f516565b601e55602e54611d4e906001600160a01b031633308463ffffffff6146a616565b50565b6001600160a01b039091166000908152601c6020526040902055565b602f5490565b602a6020526000908152604090205481565b6060611d996024848463ffffffff61470616565b90505b92915050565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b603e5490565b60155481565b6037546001600160a01b031690565b611df7612b9b565b611e37576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615611e78576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b611e8181614577565b611ed2576040805162461bcd60e51b815260206004820181905260248201527f6e65774c6f636b534f5641646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b603880546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fea3cad8b6739a7a73616cb585fe48a8e8f61d1fd7f9822ccd7580a805357aa7090600090a45050565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b6001600160a01b039182166000908152603c6020908152604080832093909416825291909152205490565b611f86612b9b565b611fc6576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615612007576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b82811461204c576040805162461bcd60e51b815260206004820152600e60248201526d0c6deeadce840dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b60005b838110156124d25782828281811061206357fe5b905060200201356001600160a01b03166001600160a01b031685858381811061208857fe5b905060200201356001600160a01b03166001600160a01b031614156120e4576040805162461bcd60e51b815260206004820152600d60248201526c1c1bdbdb080f4f48185cdcd95d609a1b604482015290519081900360640190fd5b60008585838181106120f257fe5b905060200201356001600160a01b03166001600160a01b0316141561214a576040805162461bcd60e51b81526020600482015260096024820152680706f6f6c203d3d20360bc1b604482015290519081900360640190fd5b600083838381811061215857fe5b905060200201356001600160a01b03166001600160a01b03161415806121b85750600060228187878581811061218a57fe5b6001600160a01b03602091820293909301358316845283019390935260409091016000205416919091141590505b6121fb576040805162461bcd60e51b815260206004820152600f60248201526e706f6f6c206e6f742065786973747360881b604482015290519081900360640190fd5b600083838381811061220957fe5b905060200201356001600160a01b03166001600160a01b03161415612328576000602360006022600089898781811061223e57fe5b6001600160a01b0360209182029390930135831684528381019490945250604091820160009081205482168552928401949094529190910181208054939092166001600160a01b031990931692909217905560228187878581811061229f57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061232285858381811061230257fe5b905060200201356001600160a01b0316602461480590919063ffffffff16565b50612459565b82828281811061233457fe5b905060200201356001600160a01b03166022600087878581811061235457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508484828181106123b457fe5b905060200201356001600160a01b0316602360008585858181106123d457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061245785858381811061243757fe5b905060200201356001600160a01b0316602461481290919063ffffffff16565b505b82828281811061246557fe5b905060200201356001600160a01b03166001600160a01b031685858381811061248a57fe5b6040516001600160a01b036020909202939093013516913391507f919223d371e0ad76f1f32dcbe0750166810bff9a9e4b2735bfcd01c5686c8d8990600090a460010161204f565b5050505050565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b61254b612b9b565b61258b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff16156125cc576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6125d581614577565b6126105760405162461bcd60e51b8152600401808060200182810382526021815260200180614d4f6021913960400191505060405180910390fd5b603780546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907f6105cbfb5494a79f89745763767914b7b60b00defac5e94c7eb28cc5e44c479f90600090a45050565b6003546001600160a01b031681565b60355481565b603d5460009060ff16156126bd576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6014546001600160a01b0316331461270b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038416600090815260196020526040902054829080821115612732578091505b8161274257600092505050611b69565b612752818363ffffffff6145b316565b6001600160a01b038716600090815260196020908152604080832093909355601a90522054612787908363ffffffff6145f516565b6001600160a01b0387166000818152601a60205260409020919091556127b490868463ffffffff61464f16565b846001600160a01b0316866001600160a01b0316336001600160a01b03167f951f1856a4d1d8c0081f50a1aee9fdc008f729d0f22849618016e353179b8dda856040518082815260200191505060405180910390a450600195945050505050565b61281d612b9b565b61285d576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561289e576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b600280546001600160a01b038381166001600160a01b03198316811790935560408051919092168082526020820193909352815133927f05621ab0b721f217895f5337ac1283251172d175ef3dc8c9a0287155f6024ce8928290030190a25050565b6002546001600160a01b031681565b601e5481565b61291d612b9b565b61295d576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561299e576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b602755565b603d5460ff1681565b6129b4612b9b565b6129f4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615612a35576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b828114612a7a576040805162461bcd60e51b815260206004820152600e60248201526d0c6deeadce840dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b60005b838110156124d257828282818110612a9157fe5b90506020020135151560266000878785818110612aaa57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550848482818110612afd57fe5b905060200201356001600160a01b03166001600160a01b0316336001600160a01b03167f24cecc90c7d4bc8c6765b75eedcc61d4e1cc4e4d49cd0756c6dfb5f6cc259b50858585818110612b4d57fe5b604080516020928302949094013515158452519283900301919050a3600101612a7d565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316612bb261481f565b6001600160a01b031614905090565b612bc9612b9b565b612c09576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615612c4a576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b603180546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fe48b1893efaee62da0749dd98dbf0ea62ee472b37f7205114aca36cc9de1122890600090a45050565b60176020526000908152604090205481565b602c5481565b600080612cc1612b9b565b612d01576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615612d42576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b612d4c8484614823565b915091505b9250929050565b612d60612b9b565b612da0576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615612de1576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d63100000811115612e38576040805162461bcd60e51b815260206004820152601660248201527508ccaca40e4cac4c2e8ca40d2e640e8dede40d0d2ced60531b604482015290519081900360640190fd5b602f8054908290556040805182815260208101849052815133927fb12d68e20e5279e25ff10edfc0f82deaa858ea2ac9874cf58518f4e5f9422013928290030190a25050565b612e86612b9b565b612ec6576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615612f07576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b61270f811115612f4f576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b603f8054908290556040805182815260208101849052815133927fc6d322dc6668f20ff04ac11b217aae8e8704e6388bd1dececeab1059db806bf6928290030190a25050565b612f9d612b9b565b612fdd576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561301e576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d6310000081111561306d576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b60218054908290556040805182815260208101849052815133927fa06d9b7b1c979150dcbf5b050626cc7d06c764a12ebf76ec8d16b8d3d7c9ee53928290030190a25050565b6130bb612b9b565b6130fb576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561313c576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d6310000081111561318b576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b60398054908290556040805182815260208101849052815133927f61d3e840cf1074298f10fa77edb788b4e5e554d7d135c93ac5f38f2ce0f6b52d928290030190a25050565b6131d9612b9b565b613219576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561325a576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b602855565b602f5481565b60205481565b602d546001600160a01b031681565b613282612b9b565b6132c2576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615613303576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6000811161334e576040805162461bcd60e51b81526020600482015260136024820152724261736520726577617264206973207a65726f60681b604482015290519081900360640190fd5b602b8054908290556040805182815260208101849052815133927f13cb748cec5c5021a23ec7994522a0911f24f10fdabc909281fbe95914b782f0928290030190a25050565b603d5460009060ff16156133d8576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6014546001600160a01b03163314613426576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b03841660009081526016602052604090205482908082111561344d578091505b8161345d57600092505050611b69565b61346d818363ffffffff6145b316565b6001600160a01b0387166000908152601660209081526040808320939093556017905220546134a2908363ffffffff6145f516565b6001600160a01b0387166000818152601760205260409020919091556134cf90868463ffffffff61464f16565b846001600160a01b0316866001600160a01b0316336001600160a01b03167fabc20bdd02de91df32a6e4a11684e26e0a34dc5a895a314ae51a919bc9f62c60856040518082815260200191505060405180910390a450600195945050505050565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6135fe612b9b565b61363e576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61364f631d18990160e21b826148a0565b613660631a81c19160e01b826148a0565b6136716359e49e0f60e01b826148a0565b613682630427554f60e51b826148a0565b61369363691c6d9160e11b826148a0565b6136a4630c615ee960e01b826148a0565b6136b56302ff16f160e31b826148a0565b6136c66329f9986d60e01b826148a0565b6136d7633487e38960e21b826148a0565b6136e863a32bb68360e01b826148a0565b6136f963a2ab1ba160e01b826148a0565b61370a637fb202e560e01b826148a0565b61371b6314dcf98560e31b826148a0565b61372c63355a395f60e01b826148a0565b61373d63e8997dbd60e01b826148a0565b61374e631e4aaa4f60e31b826148a0565b61375f6358d644e560e11b826148a0565b6137706374326e8f60e01b826148a0565b6137816332e4706f60e01b826148a0565b613792639688185760e01b826148a0565b6137a3633c56ae1b60e01b826148a0565b6137b463402946b960e01b826148a0565b6137c563115dd4b160e01b826148a0565b6137d66302d77d0d60e41b826148a0565b6137e763367aaa9960e21b826148a0565b6137f8630e3ff93760e41b826148a0565b613809636fbae33b60e01b826148a0565b61381a634dd053a560e01b826148a0565b61382b630c7c333f60e41b826148a0565b61383c6358aac5b960e11b826148a0565b61384d63031b39f960e61b826148a0565b61385e6372523d0160e11b826148a0565b61386f633e526e6b60e01b826148a0565b613880631674367b60e21b826148a0565b6138916307024c2560e01b826148a0565b6138a26325e7f39360e11b826148a0565b6138b3633d1250bb60e21b826148a0565b6138c4633f1ae8b960e01b826148a0565b6138d563462096f360e01b826148a0565b6138e663a1eb568360e01b826148a0565b611d4e6301c832c960e71b826148a0565b6001600160a01b03909116600090815260166020526040902055565b61391b612b9b565b61395b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561399c576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b60358054908290556040805182815260208101849052815133927f5b3b73dcee2d869937089aa5282989415bc607389ab2d4164ae83e7a9e1da084928290030190a25050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b613a59612b9b565b613a99576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615613ada576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d63100000811115613b29576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b60208054828255604080518281529283018490528051919233927f7f47cc725826cba6f43b2c0a013328b47d5f16aa9d27d6f0196a37a35c8e53f5929181900390910190a25050565b613b7a612b9b565b613bba576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615613bfb576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b68056bc75e2d63100000811115613c4a576040805162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b604482015290519081900360640190fd5b60158054908290556040805182815260208101849052815133927fa6c5bd6650afa784494efd877ecd8b7505efbbbaed74b7dd29f1472d6cd0c492928290030190a25050565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b613cbf612b9b565b613cff576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615613d40576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b613d4981614577565b613d9a576040805162461bcd60e51b815260206004820181905260248201527f7772627463546f6b656e41646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b602d80546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907ec53b30140bc38db3a9070249d614e03304ada9e458b2d2f01d23feed00985a90600090a45050565b613df5612b9b565b613e35576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615158115151415613e82576040805162461bcd60e51b815260206004820152600c60248201526b43616e277420746f67676c6560a01b604482015290519081900360640190fd5b603d805460ff19168215801591821790925560405190919033907f575725fa4843b62a71608b620f6d2a15792407ae40e019230a0500109782f66090600090a450565b603d5460ff1690565b613ed6612b9b565b613f16576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615613f57576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b613f6081614577565b613f9b5760405162461bcd60e51b8152600401808060200182810382526024815260200180614d9a6024913960400191505060405180910390fd5b602e80546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fffdeb9a96d6e1f867bcbb8a64815e576b65141995ab197cf02f7bb34fc186b7590600090a45050565b603f5490565b6001600160a01b03909116600090815260196020526040902055565b614019612b9b565b614059576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff161561409a576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b601480546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907f83e92cb95ec836f94e25e0a7b31c39f750833a8ce24eaa227a7050aafea08a8490600090a45050565b6014546001600160a01b031681565b614105612b9b565b614145576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b603d5460ff1615614186576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b683635c9adc5dea000008111156141e4576040805162461bcd60e51b815260206004820152601e60248201527f5370656369616c206665652072656261746520697320746f6f20686967680000604482015290519081900360640190fd5b6001600160a01b038381166000818152603c6020908152604080832094871680845294825291829020805490869055825181815291820186905282519094939233927fd2d3c121d3439420f50efd36f0a01ebdac87111ec00360641c32aea3c6fc3213929081900390910190a450505050565b601b5481565b60285481565b603d5460009060ff16156142a7576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6014546001600160a01b031633146142f5576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0383166000908152601660205260409020548015614364576001600160a01b0384166000908152601660209081526040808320839055601790915290205461434a908263ffffffff6145f516565b6001600160a01b0385166000908152601760205260409020555b6001600160a01b03841660009081526019602052604090205480156143d3576001600160a01b0385166000908152601960209081526040808320839055601a9091529020546143b9908263ffffffff6145f516565b6001600160a01b0386166000908152601a60205260409020555b6001600160a01b0385166000908152601c60205260409020548015614442576001600160a01b0386166000908152601c60209081526040808320839055601d909152902054614428908263ffffffff6145f516565b6001600160a01b0387166000908152601d60205260409020555b600061446482614458868663ffffffff6145f516565b9063ffffffff6145f516565b905080614476579350611d9c92505050565b6144906001600160a01b038816878363ffffffff61464f16565b604080518581526020810185905280820184905290516001600160a01b0380891692908a169133917fa0f881f497620074a74d99fb0378eab58be58cac19de6d38c57bcfeb17861830919081900360600190a49695505050505050565b6144f5612b9b565b614535576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611d4e8161491a565b6038546001600160a01b031690565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906145ab57508115155b949350505050565b6000611d9983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506149bb565b600082820183811015611d99576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526146a1908490614a52565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052614700908590614a52565b50505050565b606082820183811015614754576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b60018501548111614765578061476b565b60018501545b905080158061477a5750808410155b156147855750611b69565b8381036040519080825280602002602001820160405280156147b1578160200160208202803883390190505b50915060005b8482038110156147fc5785600101858201815481106147d257fe5b90600052602060002001548382815181106147e957fe5b60209081029190910101526001016147b7565b50509392505050565b6000816145ab8482614c0a565b6000816145ab8482614cd3565b3390565b601e546000908190839080821115614839578091505b81614857575050602e546001600160a01b0316915060009050612d51565b614867818363ffffffff6145b316565b601e55602e54614887906001600160a01b0316878463ffffffff61464f16565b5050602e546001600160a01b0316946001945092505050565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b038316908117909155156148fb576148f5600d6001600160e01b0319841663ffffffff614cd316565b50614916565b6146a1600d6001600160e01b0319841663ffffffff614c0a16565b5050565b6001600160a01b03811661495f5760405162461bcd60e51b8152600401808060200182810382526026815260200180614d296026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115614a4a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614a0f5781810151838201526020016149f7565b50505050905090810190601f168015614a3c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b614a64826001600160a01b0316614577565b614ab5576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614af35780518252601f199092019160209182019101614ad4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b55576040519150601f19603f3d011682016040523d82523d6000602084013e614b5a565b606091505b509150915081614bb1576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561470057808060200190516020811015614bcd57600080fd5b50516147005760405162461bcd60e51b815260040180806020018281038252602a815260200180614d70602a913960400191505060405180910390fd5b6000614c168383614d13565b15614ccb5760008281526020849052604090205460018401546000199182019101808214614c8e576000856001018281548110614c4f57fe5b9060005260206000200154905080866001018481548110614c6c57fe5b6000918252602080832090910192909255918252869052604090206001830190555b60008481526020869052604081205560018501805480614caa57fe5b60019003818190600052602060002001600090559055600192505050611d9c565b506000611d9c565b6000614cdf8383614d13565b614ccb5750600180830180548083018083556000928352602080842090920185905584835290859052604090912055611d9c565b6000908152602091909152604090205415159056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573736e6577536f76546f6b656e41646472657373206e6f74206120636f6e74726163745361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645f70726f746f636f6c546f6b656e41646472657373206e6f74206120636f6e7472616374a265627a7a72315820f751e3e773085ba79d40514999c823d3056bc92ce9ccfb1672a9ffe6941ed99a64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x581 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x2E5 JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0x18D JUMPI DUP1 PUSH4 0xE4A47A02 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0xF2555278 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x1342 JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x134A JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x1352 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x135A JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xF2555278 EQ PUSH2 0x12E6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1314 JUMPI DUP1 PUSH4 0xF44942EC EQ PUSH2 0x133A JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xE4A47A02 EQ PUSH2 0x1246 JUMPI DUP1 PUSH4 0xE8997DBD EQ PUSH2 0x1272 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x1298 JUMPI DUP1 PUSH4 0xEA0E3930 EQ PUSH2 0x12A0 JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x12D6 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x12DE JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xD485045E GT PUSH2 0x146 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x11A5 JUMPI DUP1 PUSH4 0xD9EAAA64 EQ PUSH2 0x11CB JUMPI DUP1 PUSH4 0xDA541E09 EQ PUSH2 0x11F1 JUMPI DUP1 PUSH4 0xDAC88561 EQ PUSH2 0x1210 JUMPI DUP1 PUSH4 0xE3FF9370 EQ PUSH2 0x1218 JUMPI DUP1 PUSH4 0xE4196480 EQ PUSH2 0x123E JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x10C0 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x112D JUMPI DUP1 PUSH4 0xD21F8E24 EQ PUSH2 0x115B JUMPI DUP1 PUSH4 0xD238DB22 EQ PUSH2 0x1178 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x1195 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x119D JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xAE0A8530 GT PUSH2 0x24C JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x205 JUMPI DUP1 PUSH4 0xC4A90815 GT PUSH2 0x1DF JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0xFC9 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1051 JUMPI DUP1 PUSH4 0xC6CE7E40 EQ PUSH2 0x1077 JUMPI DUP1 PUSH4 0xC7C333F0 EQ PUSH2 0x10A3 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0xF93 JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0xF9B JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0xFA3 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0xEE4 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0xEEC JUMPI DUP1 PUSH4 0xB1558B72 EQ PUSH2 0xEF4 JUMPI DUP1 PUSH4 0xB1AC89CA EQ PUSH2 0xF11 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0xF47 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0xF6D JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x9C53874F GT PUSH2 0x29E JUMPI DUP1 PUSH4 0x9C53874F EQ PUSH2 0xE4B JUMPI DUP1 PUSH4 0xA1EB5683 EQ PUSH2 0xE68 JUMPI DUP1 PUSH4 0xA2AB1BA1 EQ PUSH2 0xE85 JUMPI DUP1 PUSH4 0xA32BB683 EQ PUSH2 0xEA2 JUMPI DUP1 PUSH4 0xA6E7CC28 EQ PUSH2 0xEBF JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0xEDC JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0xD7A JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xDA0 JUMPI DUP1 PUSH4 0x9254E6BF EQ PUSH2 0xDA8 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0xDCE JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0xDF4 JUMPI DUP1 PUSH4 0x96881857 EQ PUSH2 0xDFC JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x4115A2B6 GT PUSH2 0x448 JUMPI DUP1 PUSH4 0x68C4AC26 GT PUSH2 0x3AF JUMPI DUP1 PUSH4 0x74626404 GT PUSH2 0x368 JUMPI DUP1 PUSH4 0x7FB202E5 GT PUSH2 0x342 JUMPI DUP1 PUSH4 0x7FB202E5 EQ PUSH2 0xC8F JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0xCAC JUMPI DUP1 PUSH4 0x84EAA9E0 EQ PUSH2 0xCB4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xD72 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x74626404 EQ PUSH2 0xC59 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0xC7F JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0xC87 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0xBA1 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0xBC7 JUMPI DUP1 PUSH4 0x6FBAE33B EQ PUSH2 0xBED JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0xC13 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0xC1B JUMPI DUP1 PUSH4 0x74326E8F EQ PUSH2 0xC23 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x4F28CAC2 GT PUSH2 0x401 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0xA11 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0xA19 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0xA54 JUMPI DUP1 PUSH4 0x59D0D9EC EQ PUSH2 0xA5C JUMPI DUP1 PUSH4 0x59E49E0F EQ PUSH2 0xA8A JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0xB48 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x981 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x9AD JUMPI DUP1 PUSH4 0x462096F3 EQ PUSH2 0x9D3 JUMPI DUP1 PUSH4 0x4699F846 EQ PUSH2 0x9DB JUMPI DUP1 PUSH4 0x4BCFE726 EQ PUSH2 0x9E3 JUMPI DUP1 PUSH4 0x4DD053A5 EQ PUSH2 0x9EB JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x4EC JUMPI DUP1 PUSH4 0x355A395F GT PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x355A395F EQ PUSH2 0x87A JUMPI DUP1 PUSH4 0x3C56AE1B EQ PUSH2 0x897 JUMPI DUP1 PUSH4 0x3E526E6B EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0x3F1AE8B9 EQ PUSH2 0x8E0 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x8E8 JUMPI DUP1 PUSH4 0x402946B9 EQ PUSH2 0x90E JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x7BC JUMPI DUP1 PUSH4 0x2D77D0D0 EQ PUSH2 0x7C4 JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x7EA JUMPI DUP1 PUSH4 0x32E4706F EQ PUSH2 0x7F2 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x828 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x854 JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x17F8B788 GT PUSH2 0x53E JUMPI DUP1 PUSH4 0x17F8B788 EQ PUSH2 0x6D0 JUMPI DUP1 PUSH4 0x1A81C191 EQ PUSH2 0x6ED JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x713 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x753 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x779 JUMPI DUP1 PUSH4 0x29F9986D EQ PUSH2 0x79F JUMPI PUSH2 0x581 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x5C5 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0x7024C25 EQ PUSH2 0x648 JUMPI DUP1 PUSH4 0xC615EE9 EQ PUSH2 0x650 JUMPI DUP1 PUSH4 0x115DD4B1 EQ PUSH2 0x66F JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x6A9 JUMPI JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1362 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x62C PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x62C PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x13C0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x685 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x62C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x14FE JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1519 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x703 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1637 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x729 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1722 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x62C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x173F JUMP JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x175A JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x176F JUMP JUMPDEST PUSH2 0x741 PUSH2 0x188D JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1893 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x19CC JUMP JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x19D2 JUMP JUMPDEST PUSH2 0x5F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x83E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B70 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x86A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1BB0 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x890 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1BC2 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C91 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1D51 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x1D6D JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D73 JUMP JUMPDEST PUSH2 0x931 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1D85 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x96D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x955 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x997 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DA2 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DC2 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x1DD4 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x1DDA JUMP JUMPDEST PUSH2 0x62C PUSH2 0x1DE0 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DEF JUMP JUMPDEST PUSH2 0x741 PUSH2 0x1F26 JUMP JUMPDEST PUSH2 0xA36 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F2C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x741 PUSH2 0x1F4D JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1F53 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xAA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xABA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xACC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1F7E JUMP JUMPDEST PUSH2 0xB76 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x24D9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2513 JUMP JUMPDEST PUSH2 0x62C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2528 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x2664 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x2673 JUMP JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2679 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2815 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x2900 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x290F JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2915 JUMP JUMPDEST PUSH2 0x695 PUSH2 0x29A3 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xCE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xD17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xD34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xD67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x29AC JUMP JUMPDEST PUSH2 0x62C PUSH2 0x2B71 JUMP JUMPDEST PUSH2 0x62C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B80 JUMP JUMPDEST PUSH2 0x695 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BC1 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C9E JUMP JUMPDEST PUSH2 0x741 PUSH2 0x2CB0 JUMP JUMPDEST PUSH2 0xE28 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2CB6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2D58 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2E7E JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2F95 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x30B3 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xED5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x31D1 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x325F JUMP JUMPDEST PUSH2 0x741 PUSH2 0x3265 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x326B JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x327A JUMP JUMPDEST PUSH2 0x695 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3394 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3530 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3542 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x3554 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x3563 JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3572 JUMP JUMPDEST PUSH2 0xFE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3584 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1067 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x35F6 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x108D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x38F7 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3913 JUMP JUMPDEST PUSH2 0x10DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x39E2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3A34 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3A51 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x118E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3B72 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x3C90 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x3C9F JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3CA5 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3CB7 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x3DED JUMP JUMPDEST PUSH2 0x695 PUSH2 0x3EC5 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x122E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3ECE JUMP JUMPDEST PUSH2 0x741 PUSH2 0x3FEF JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3FF5 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4011 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x40EE JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x12B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x40FD JUMP JUMPDEST PUSH2 0x741 PUSH2 0x4257 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x425D JUMP JUMPDEST PUSH2 0x741 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x4263 JUMP JUMPDEST PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x132A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x44ED JUMP JUMPDEST PUSH2 0x62C PUSH2 0x453E JUMP JUMPDEST PUSH2 0x741 PUSH2 0x454D JUMP JUMPDEST PUSH2 0x741 PUSH2 0x4553 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x4559 JUMP JUMPDEST PUSH2 0x62C PUSH2 0x4568 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x13C8 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x1408 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1449 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x1498 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x18 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x628070E9CCBC70E8BE34A2FA969F8D314EC049F17BFCB4C2020DF4BCCD2BF52 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1521 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x1561 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x15A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x15F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1B DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x5C61C9C51CB2781BC120817A851F7F27C134D5D191BC5A2B0EA971BA638425E4 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x163F PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x167F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x16C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x480CC6E59585343A9E9D6FE591DAD0F80CE93BB2399CA672910F380671B46BA8 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1777 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x17B7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x17F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x1847 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3E DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x2BD69D9975FCF3B39B6AB502D77983A0CFCE893E47073F502D094C6A94DA33B SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x189B PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x18DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x191C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1925 DUP2 PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x1976 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x726567697374727941646472657373206E6F74206120636F6E74726163740000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP2 AND SWAP3 AND SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0x54C538F1D732806E1BFC25EC56236DAC39E6070DD856C0E7EFB2BC274709467D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x1A16 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1A64 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x1A8B JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x1A9B JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1B69 JUMP JUMPDEST PUSH2 0x1AAB DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45B3 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1D SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x1AE0 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1B0D SWAP1 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x464F AND JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2BFAA669AEEE298BC85FE2B7DDDC312FC28B78622F086063B9A410D7BA9939CF DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1BCA PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x1C0A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1C4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x29 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0xA645D7B227C34F1F218D53BC3B3CCB9A43EAF2231B33925194F1DE755AA3ACC3 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x1C99 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x1CD9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1D1A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1E SLOAD PUSH2 0x1D2D SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1E SSTORE PUSH1 0x2E SLOAD PUSH2 0x1D4E SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP5 PUSH4 0xFFFFFFFF PUSH2 0x46A6 AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x2F SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D99 PUSH1 0x24 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x4706 AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3E SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1DF7 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x1E37 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1E78 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1E81 DUP2 PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x1ED2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E65774C6F636B534F5641646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0xEA3CAD8B6739A7A73616CB585FE48A8E8F61D1FD7F9822CCD7580A805357AA70 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1F86 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x1FC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2007 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP2 EQ PUSH2 0x204C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24D2 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x2063 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x2088 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x20E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1C1BDBDB080F4F48185CDCD95D PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x20F2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x214A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH9 0x706F6F6C203D3D203 PUSH1 0xBC SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x2158 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 PUSH2 0x21B8 JUMPI POP PUSH1 0x0 PUSH1 0x22 DUP2 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x218A JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP2 DUP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD DUP4 AND DUP5 MSTORE DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP2 SWAP1 SWAP2 EQ ISZERO SWAP1 POP JUMPDEST PUSH2 0x21FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x706F6F6C206E6F7420657869737473 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x2209 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2328 JUMPI PUSH1 0x0 PUSH1 0x23 PUSH1 0x0 PUSH1 0x22 PUSH1 0x0 DUP10 DUP10 DUP8 DUP2 DUP2 LT PUSH2 0x223E JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP2 DUP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD DUP4 AND DUP5 MSTORE DUP4 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SLOAD DUP3 AND DUP6 MSTORE SWAP3 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP2 SWAP1 SWAP2 ADD DUP2 KECCAK256 DUP1 SLOAD SWAP4 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0x22 DUP2 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x229F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x2322 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x2302 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x24 PUSH2 0x4805 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0x2459 JUMP JUMPDEST DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x2334 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x22 PUSH1 0x0 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x2354 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x23B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x23 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x23D4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x2457 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x2437 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x24 PUSH2 0x4812 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x2465 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x248A JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP1 SWAP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD AND SWAP2 CALLER SWAP2 POP PUSH32 0x919223D371E0AD76F1F32DCBE0750166810BFF9A9E4B2735BFCD01C5686C8D89 SWAP1 PUSH1 0x0 SWAP1 LOG4 PUSH1 0x1 ADD PUSH2 0x204F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x254B PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x258B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x25CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x25D5 DUP2 PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x2610 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4D4F PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0x6105CBFB5494A79F89745763767914B7B60B00DEFAC5E94C7EB28CC5E44C479F SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x26BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x270B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x2732 JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x2742 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1B69 JUMP JUMPDEST PUSH2 0x2752 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45B3 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1A SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x2787 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x27B4 SWAP1 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x464F AND JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x951F1856A4D1D8C0081F50A1AEE9FDC008F729D0F22849618016E353179B8DDA DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x281D PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x285D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x289E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP3 AND DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x5621AB0B721F217895F5337AC1283251172D175EF3DC8C9A0287155F6024CE8 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH2 0x291D PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x295D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x299E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x27 SSTORE JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x29B4 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x29F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2A35 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 DUP2 EQ PUSH2 0x2A7A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24D2 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x2A91 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD ISZERO ISZERO PUSH1 0x26 PUSH1 0x0 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x2AAA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x2AFD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x24CECC90C7D4BC8C6765B75EEDCC61D4E1CC4E4D49CD0756C6DFB5F6CC259B50 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x2B4D JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 SWAP3 DUP4 MUL SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD ISZERO ISZERO DUP5 MSTORE MLOAD SWAP3 DUP4 SWAP1 SUB ADD SWAP2 SWAP1 POP LOG3 PUSH1 0x1 ADD PUSH2 0x2A7D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BB2 PUSH2 0x481F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2BC9 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x2C09 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2C4A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x31 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0xE48B1893EFAEE62DA0749DD98DBF0EA62EE472B37F7205114ACA36CC9DE11228 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2CC1 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x2D01 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2D42 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2D4C DUP5 DUP5 PUSH2 0x4823 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2D60 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x2DA0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2DE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x2E38 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x8CCACA40E4CAC4C2E8CA40D2E640E8DEDE40D0D2CED PUSH1 0x53 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2F DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0xB12D68E20E5279E25FF10EDFC0F82DEAA858EA2AC9874CF58518F4E5F9422013 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x2E86 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x2EC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2F07 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x270F DUP2 GT ISZERO PUSH2 0x2F4F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3F DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0xC6D322DC6668F20FF04AC11B217AAE8E8704E6388BD1DECECEAB1059DB806BF6 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x2F9D PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x2FDD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x301E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x306D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x21 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0xA06D9B7B1C979150DCBF5B050626CC7D06C764A12EBF76EC8D16B8D3D7C9EE53 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x30BB PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x30FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x313C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x318B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x39 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x61D3E840CF1074298F10FA77EDB788B4E5E554D7D135C93AC5F38F2CE0F6B52D SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x31D9 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x3219 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x325A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x28 SSTORE JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x3282 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x32C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3303 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x334E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x4261736520726577617264206973207A65726F PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2B DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x13CB748CEC5C5021A23EC7994522A0911F24F10FDABC909281FBE95914B782F0 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x33D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3426 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x344D JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x345D JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1B69 JUMP JUMPDEST PUSH2 0x346D DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45B3 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x17 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x34A2 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x34CF SWAP1 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x464F AND JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xABC20BDD02DE91DF32A6E4A11684E26E0A34DC5A895A314AE51A919BC9F62C60 DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0x35FE PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x363E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x364F PUSH4 0x1D189901 PUSH1 0xE2 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3660 PUSH4 0x1A81C191 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3671 PUSH4 0x59E49E0F PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3682 PUSH4 0x427554F PUSH1 0xE5 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3693 PUSH4 0x691C6D91 PUSH1 0xE1 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x36A4 PUSH4 0xC615EE9 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x36B5 PUSH4 0x2FF16F1 PUSH1 0xE3 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x36C6 PUSH4 0x29F9986D PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x36D7 PUSH4 0x3487E389 PUSH1 0xE2 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x36E8 PUSH4 0xA32BB683 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x36F9 PUSH4 0xA2AB1BA1 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x370A PUSH4 0x7FB202E5 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x371B PUSH4 0x14DCF985 PUSH1 0xE3 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x372C PUSH4 0x355A395F PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x373D PUSH4 0xE8997DBD PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x374E PUSH4 0x1E4AAA4F PUSH1 0xE3 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x375F PUSH4 0x58D644E5 PUSH1 0xE1 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3770 PUSH4 0x74326E8F PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3781 PUSH4 0x32E4706F PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3792 PUSH4 0x96881857 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x37A3 PUSH4 0x3C56AE1B PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x37B4 PUSH4 0x402946B9 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x37C5 PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x37D6 PUSH4 0x2D77D0D PUSH1 0xE4 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x37E7 PUSH4 0x367AAA99 PUSH1 0xE2 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x37F8 PUSH4 0xE3FF937 PUSH1 0xE4 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3809 PUSH4 0x6FBAE33B PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x381A PUSH4 0x4DD053A5 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x382B PUSH4 0xC7C333F PUSH1 0xE4 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x383C PUSH4 0x58AAC5B9 PUSH1 0xE1 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x384D PUSH4 0x31B39F9 PUSH1 0xE6 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x385E PUSH4 0x72523D01 PUSH1 0xE1 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x386F PUSH4 0x3E526E6B PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3880 PUSH4 0x1674367B PUSH1 0xE2 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x3891 PUSH4 0x7024C25 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x38A2 PUSH4 0x25E7F393 PUSH1 0xE1 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x38B3 PUSH4 0x3D1250BB PUSH1 0xE2 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x38C4 PUSH4 0x3F1AE8B9 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x38D5 PUSH4 0x462096F3 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x38E6 PUSH4 0xA1EB5683 PUSH1 0xE0 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH2 0x1D4E PUSH4 0x1C832C9 PUSH1 0xE7 SHL DUP3 PUSH2 0x48A0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH2 0x391B PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x395B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x399C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x5B3B73DCEE2D869937089AA5282989415BC607389AB2D4164AE83E7A9E1DA084 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3A59 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x3A99 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3ADA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x3B29 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP1 SLOAD DUP3 DUP3 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP3 DUP4 ADD DUP5 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP3 CALLER SWAP3 PUSH32 0x7F47CC725826CBA6F43B2C0A013328B47D5F16AA9D27D6F0196A37A35C8E53F5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x3B7A PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x3BBA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3BFB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x3C4A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x15 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0xA6C5BD6650AFA784494EFD877ECD8B7505EFBBBAED74B7DD29F1472D6CD0C492 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3CBF PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x3CFF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3D40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3D49 DUP2 PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x3D9A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7772627463546F6B656E41646472657373206E6F74206120636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2D DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH31 0xC53B30140BC38DB3A9070249D614E03304ADA9E458B2D2F01D23FEED00985A SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0x3DF5 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x3E35 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 ISZERO ISZERO EQ ISZERO PUSH2 0x3E82 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x43616E277420746F67676C65 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO DUP1 ISZERO SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 CALLER SWAP1 PUSH32 0x575725FA4843B62A71608B620F6D2A15792407AE40E019230A0500109782F660 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3ED6 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x3F16 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3F57 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3F60 DUP2 PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x3F9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4D9A PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2E DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0xFFDEB9A96D6E1F867BCBB8A64815E576B65141995AB197CF02F7BB34FC186B75 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x3F SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH2 0x4019 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x4059 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x409A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0x83E92CB95EC836F94E25E0A7B31C39F750833A8CE24EAA227A7050AAFEA08A84 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x4105 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x4145 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x4186 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH9 0x3635C9ADC5DEA00000 DUP2 GT ISZERO PUSH2 0x41E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5370656369616C206665652072656261746520697320746F6F20686967680000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 DUP7 SWAP1 SSTORE DUP3 MLOAD DUP2 DUP2 MSTORE SWAP2 DUP3 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD SWAP1 SWAP5 SWAP4 SWAP3 CALLER SWAP3 PUSH32 0xD2D3C121D3439420F50EFD36F0A01EBDAC87111EC00360641C32AEA3C6FC3213 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x42A7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x42F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4364 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x17 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x434A SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x43D3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x1A SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x43B9 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x4442 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x1D SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x4428 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x4464 DUP3 PUSH2 0x4458 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x45F5 AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x4476 JUMPI SWAP4 POP PUSH2 0x1D9C SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4490 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP8 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x464F AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP3 SWAP1 DUP11 AND SWAP2 CALLER SWAP2 PUSH32 0xA0F881F497620074A74D99FB0378EAB58BE58CAC19DE6D38C57BCFEB17861830 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x44F5 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x4535 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D4E DUP2 PUSH2 0x491A JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x45AB JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D99 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x49BB JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1D99 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x46A1 SWAP1 DUP5 SWAP1 PUSH2 0x4A52 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x4700 SWAP1 DUP6 SWAP1 PUSH2 0x4A52 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x4754 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD DUP2 GT PUSH2 0x4765 JUMPI DUP1 PUSH2 0x476B JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 PUSH2 0x477A JUMPI POP DUP1 DUP5 LT ISZERO JUMPDEST ISZERO PUSH2 0x4785 JUMPI POP PUSH2 0x1B69 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x47B1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP5 DUP3 SUB DUP2 LT ISZERO PUSH2 0x47FC JUMPI DUP6 PUSH1 0x1 ADD DUP6 DUP3 ADD DUP2 SLOAD DUP2 LT PUSH2 0x47D2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x47E9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x47B7 JUMP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x45AB DUP5 DUP3 PUSH2 0x4C0A JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x45AB DUP5 DUP3 PUSH2 0x4CD3 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1E SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4839 JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x4857 JUMPI POP POP PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x2D51 JUMP JUMPDEST PUSH2 0x4867 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x45B3 AND JUMP JUMPDEST PUSH1 0x1E SSTORE PUSH1 0x2E SLOAD PUSH2 0x4887 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x464F AND JUMP JUMPDEST POP POP PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 PUSH1 0x1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x48FB JUMPI PUSH2 0x48F5 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x4CD3 AND JUMP JUMPDEST POP PUSH2 0x4916 JUMP JUMPDEST PUSH2 0x46A1 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x4C0A AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x495F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4D29 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x4A4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4A0F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x49F7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4A3C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x4A64 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x4AB5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4AF3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4AD4 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4B55 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4B5A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x4BB1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x4700 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x4700 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4D70 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C16 DUP4 DUP4 PUSH2 0x4D13 JUMP JUMPDEST ISZERO PUSH2 0x4CCB JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x4C8E JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x4C4F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x4C6C JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x4CAA JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x1D9C JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1D9C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CDF DUP4 DUP4 PUSH2 0x4D13 JUMP JUMPDEST PUSH2 0x4CCB JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x1D9C JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573736E6577536F76546F6B656E4164647265 PUSH20 0x73206E6F74206120636F6E747261637453616665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x7563636565645F70726F746F636F6C546F6B656E COINBASE PUSH5 0x6472657373 KECCAK256 PUSH15 0x6F74206120636F6E7472616374A265 PUSH3 0x7A7A72 BALANCE PC KECCAK256 0xF7 MLOAD 0xE3 0xE7 PUSH20 0x85BA79D40514999C823D3056BC92CE9CCFB1672 0xA9 SELFDESTRUCT 0xE6 SWAP5 0x1E 0xD9 SWAP11 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "68:2889:112:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;68:2889:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1017:30:132;;;-1:-1:-1;;;1017:30:132;;;;;;;;;;;;-1:-1:-1;;;1017:30:132;;;;;;;;;;;;;;1636:67:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;-1:-1:-1;;;;;5443:30:14;;;;;;;;;;;;;;22515:92:132;;;:::i;8926:268::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8926:268:132;;:::i;:::-;;18819:126;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18819:126:132;-1:-1:-1;;;;;18819:126:132;;:::i;:::-;;;;;;;;;;;;;;;;;;1270:46:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1270:46:14;-1:-1:-1;;;;;;1270:46:14;;:::i;9339:276:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9339:276:132;;:::i;6489:218::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6489:218:132;-1:-1:-1;;;;;6489:218:132;;:::i;6768:81:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6768:81:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4372:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4372:55:14;-1:-1:-1;;;;;4372:55:14;;:::i;5558:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5558:53:14;-1:-1:-1;;;;;5558:53:14;;:::i;9763:290:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9763:290:132;;:::i;3097:46:14:-;;;:::i;19102:461:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19102:461:132;-1:-1:-1;;;;;19102:461:132;;:::i;3969:32:14:-;;;:::i;16695:691:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16695:691:132;;;;;;;;;;;;;;;;;:::i;1527:65:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1527:65:14;;;;;;;;:::i;3376:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3376:55:14;-1:-1:-1;;;;;3376:55:14;;:::i;12140:195:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12140:195:132;;:::i;18071:280::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18071:280:132;;:::i;355:117:112:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;355:117:112;;;;;;;;:::i;22802:94:132:-;;;:::i;4925:48:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4925:48:14;-1:-1:-1;;;;;4925:48:14;;:::i;18506:148:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18506:148:132;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18506:148:132;;;;;;;;;;;;;;;;;1744:69:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1744:69:14;;;;;;-1:-1:-1;;;;;1744:69:14;;:::i;2825:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2825:55:14;-1:-1:-1;;;;;2825:55:14;;:::i;23152:107:132:-;;;:::i;2717:41:14:-;;;:::i;22610:92:132:-;;;:::i;4649:359::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4649:359:132;-1:-1:-1;;;;;4649:359:132;;:::i;4832:37:14:-;;;:::i;2013:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2013:52:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:50;;;:::i;22310:202:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22310:202:132;;;;;;;;;;:::i;6928:831::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6928:831:132;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6928:831:132;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6928:831:132;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6928:831:132;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6928:831:132;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6928:831:132;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;6928:831:132;;-1:-1:-1;6928:831:132;-1:-1:-1;6928:831:132;:::i;1898:76:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1898:76:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4542:47:14;-1:-1:-1;;;;;4542:47:14;;:::i;5650:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5650:57:14;-1:-1:-1;;;;;5650:57:14;;:::i;4302:344:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4302:344:132;-1:-1:-1;;;;;4302:344:132;;:::i;1087:24:14:-;;;:::i;6000:39::-;;;:::i;15648:679:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15648:679:132;;;;;;;;;;;;;;;;;:::i;6121:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6121:220:132;-1:-1:-1;;;;;6121:220:132;;:::i;1012:25:14:-;;;:::i;3887:32::-;;;:::i;11564:113:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11564:113:132;;:::i;7007:17:14:-;;;:::i;8041:335:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8041:335:132;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8041:335:132;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8041:335:132;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8041:335:132;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8041:335:132;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8041:335:132;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8041:335:132;;-1:-1:-1;8041:335:132;-1:-1:-1;8041:335:132;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4285:55:14;-1:-1:-1;;;;;4285:55:14;;:::i;1134:83:142:-;;;:::i;4032:267:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4032:267:132;-1:-1:-1;;;;;4032:267:132;;:::i;2994:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2994:55:14;-1:-1:-1;;;;;2994:55:14;;:::i;5113:49::-;;;:::i;17759:177:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17759:177:132;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;17759:177:132;;;;;;;;;;;;;;;;;;;;;21118:303;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21118:303:132;;:::i;5183:349::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5183:349:132;;:::i;11128:308::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11128:308:132;;:::i;10643:324::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10643:324:132;;:::i;11903:107::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11903:107:132;;:::i;5340:45:14:-;;;:::i;4075:47::-;;;:::i;5175:29::-;;;:::i;20707:303:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20707:303:132;;:::i;14603:679::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14603:679:132;;;;;;;;;;;;;;;;;:::i;3781:57:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3781:57:14;-1:-1:-1;;;;;3781:57:14;;:::i;3605:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:57:14;-1:-1:-1;;;;;3605:57:14;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:55:14;-1:-1:-1;;;;;6168:55:14;;:::i;1347:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1347:37:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;;;;;;;;;;;;;;;;475:2480:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;475:2480:112;-1:-1:-1;;;;;475:2480:112;;:::i;123:113::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;123:113:112;;;;;;;;:::i;5693:286:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5693:286:132;;:::i;1437:48:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:48:14;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6853:69:14;;;;;;;;;;:::i;10198:276:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10198:276:132;;:::i;8517:268::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8517:268:132;;:::i;6305:31:14:-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:55:14;-1:-1:-1;;;;;3209:55:14;;:::i;19690:337:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19690:337:132;-1:-1:-1;;;;;19690:337:132;;:::i;22899:170::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22899:170:132;;;;:::i;23072:77::-;;;:::i;20176:395::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20176:395:132;-1:-1:-1;;;;;20176:395:132;;:::i;23370:122::-;;;:::i;239:113:112:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;239:113:112;;;;;;;;:::i;12630:232:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12630:232:132;-1:-1:-1;;;;;12630:232:132;;:::i;2626:29:14:-;;;:::i;21574:517:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21574:517:132;;;;;;;;;;;;;;;;;:::i;3490:47:14:-;;;:::i;4754:35::-;;;:::i;13156:1081:132:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13156:1081:132;;;;;;;;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;22705:94:132:-;;;:::i;6447:60:14:-;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;22515:92:132:-;22588:15;;-1:-1:-1;;;;;22588:15:132;22515:92;:::o;8926:268::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;9031:6:132;9019:8;:18;;9011:45;;;;;-1:-1:-1;;;9011:45:132;;;;;;;;;;;;-1:-1:-1;;;9011:45:132;;;;;;;;;;;;;;;9079:17;;;9100:28;;;;9138:52;;;;;;;;;;;;;;9159:10;;9138:52;;;;;;;;161:1:99;8926:268:132;:::o;18819:126::-;-1:-1:-1;;;;;18897:30:132;;;18880:4;18897:30;;;:20;:30;;;;;;;:44;;;18819:126::o;1270:46:14:-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;9339:276:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;9446:6:132;9434:8;:18;;9426:45;;;;;-1:-1:-1;;;9426:45:132;;;;;;;;;;;;-1:-1:-1;;;9426:45:132;;;;;;;;;;;;;;;9494:19;;;9517:30;;;;9557:54;;;;;;;;;;;;;;9580:10;;9557:54;;;;;;;;161:1:99;9339:276:132;:::o;6489:218::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;6599:9:132;;;-1:-1:-1;;;;;6612:23:132;;;-1:-1:-1;;;;;;6612:23:132;;;;;;;6645:58;;;6599:9;;;;6645:58;;;;;;;;;;;;6666:10;;6645:58;;;;;;;;161:1:99;6489:218:132;:::o;6768:81:14:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;9763:290:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;9873:6:132;9861:8;:18;;9853:45;;;;;-1:-1:-1;;;9853:45:132;;;;;;;;;;;;-1:-1:-1;;;9853:45:132;;;;;;;;;;;;;;;9921:23;;;9948:34;;;;9992:57;;;;;;;;;;;;;;10018:10;;9992:57;;;;;;;;161:1:99;9763:290:132;:::o;3097:46:14:-;;;;:::o;19102:461:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;19218:35:132;19237:15;19218:18;:35::i;:::-;19210:78;;;;;-1:-1:-1;;;19210:78:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;19340:33;;;-1:-1:-1;;;;;19377:51:132;;;-1:-1:-1;;;;;;19377:51:132;;;;;;;19438:121;;19340:33;;;;19525;;19340;;19475:10;;19438:121;;19293:44;;19438:121;161:1:99;19102:461:132;:::o;3969:32:14:-;;;;:::o;16695:691:132:-;141:5:99;;16816:4:132;;141:5:99;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;16848:14:132;;-1:-1:-1;;;;;16848:14:132;16834:10;:28;16826:53;;;;;-1:-1:-1;;;16826:53:132;;;;;;;;;;;;-1:-1:-1;;;16826:53:132;;;;;;;;;;;;;;;-1:-1:-1;;;;;16938:29:132;;16884:22;16938:29;;;:22;:29;;;;;;16909:6;;16975:24;;;16971:64;;;17023:7;17006:24;;16971:64;17042:19;17038:47;;17075:5;17068:12;;;;;;17038:47;17121:27;:7;17133:14;17121:27;:11;:27;:::i;:::-;-1:-1:-1;;;;;17089:29:132;;;;;;:22;:29;;;;;;;;:59;;;;17184:22;:29;;;;:49;;17218:14;17184:49;:33;:49;:::i;:::-;-1:-1:-1;;;;;17152:29:132;;;;;;:22;:29;;;;;:81;;;;17238:52;;17265:8;17275:14;17238:52;:26;:52;:::i;:::-;17341:8;-1:-1:-1;;;;;17300:66:132;17334:5;-1:-1:-1;;;;;17300:66:132;17322:10;-1:-1:-1;;;;;17300:66:132;;17351:14;17300:66;;;;;;;;;;;;;;;;;;17378:4;17371:11;;;;161:1:99;16695:691:132;;;;;:::o;1527:65:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;12140:195:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;12238:11:132;;;12253:22;;;;12285:46;;;;;;;;;;;;;;12300:10;;12285:46;;;;;;;;161:1:99;12140:195:132;:::o;18071:280::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;18206:17:132;;:29;;18228:6;18206:29;:21;:29;:::i;:::-;18186:17;:49;18274:20;;18267:80;;-1:-1:-1;;;;;18274:20:132;18313:10;18333:4;18340:6;18267:80;:45;:80;:::i;:::-;18071:280;:::o;355:117:112:-;-1:-1:-1;;;;;431:29:112;;;;;;;:22;:29;;;;;:37;355:117::o;22802:94:132:-;22876:16;;22802:94;:::o;4925:48:14:-;;;;;;;;;;;;;:::o;18506:148:132:-;18585:16;18614:36;:12;18637:5;18644;18614:36;:22;:36;:::i;:::-;18607:43;;18506:148;;;;;:::o;1744:69:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;23152:107:132:-;23232:23;;23152:107;:::o;2717:41:14:-;;;;:::o;22610:92:132:-;22683:15;;-1:-1:-1;;;;;22683:15:132;22610:92;:::o;4649:359::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;4752:39:132;4771:19;4752:18;:39::i;:::-;4744:84;;;;;-1:-1:-1;;;4744:84:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4863:16;;;-1:-1:-1;;;;;4883:38:132;;;-1:-1:-1;;;;;;4883:38:132;;;;;;;4931:73;;4863:16;;;4883:38;4863:16;;4951:10;;4931:73;;4833:27;;4931:73;161:1:99;4649:359:132;:::o;4832:37:14:-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;22310:202:132:-;-1:-1:-1;;;;;22456:34:132;;;22414:29;22456:34;;;:14;:34;;;;;;;;:52;;;;;;;;;;;;;22310:202::o;6928:831::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;7047:29:132;;;7039:56;;;;;-1:-1:-1;;;7039:56:132;;;;;;;;;;;;-1:-1:-1;;;7039:56:132;;;;;;;;;;;;;;;7105:9;7100:656;7120:16;;;7100:656;;;7168:6;;7175:1;7168:9;;;;;;;;;;;;;-1:-1:-1;;;;;7168:9:132;-1:-1:-1;;;;;7156:21:132;:5;;7162:1;7156:8;;;;;;;;;;;;;-1:-1:-1;;;;;7156:8:132;-1:-1:-1;;;;;7156:21:132;;;7148:47;;;;;-1:-1:-1;;;7148:47:132;;;;;;;;;;;;-1:-1:-1;;;7148:47:132;;;;;;;;;;;;;;;7228:1;7208:5;;7214:1;7208:8;;;;;;;;;;;;;-1:-1:-1;;;;;7208:8:132;-1:-1:-1;;;;;7208:22:132;;;7200:44;;;;;-1:-1:-1;;;7200:44:132;;;;;;;;;;;;-1:-1:-1;;;7200:44:132;;;;;;;;;;;;;;;7278:1;7257:6;;7264:1;7257:9;;;;;;;;;;;;;-1:-1:-1;;;;;7257:9:132;-1:-1:-1;;;;;7257:23:132;;;:71;;;-1:-1:-1;7326:1:132;7284:20;7326:1;7305:5;;7311:1;7305:8;;;;;;;-1:-1:-1;;;;;7305:8:132;;;;;;;;;;;7284:30;;;;;;;;;;;;-1:-1:-1;7284:30:132;;;:44;;;;;;-1:-1:-1;7257:71:132;7249:99;;;;;-1:-1:-1;;;7249:99:132;;;;;;;;;;;;-1:-1:-1;;;7249:99:132;;;;;;;;;;;;;;;7378:1;7357:6;;7364:1;7357:9;;;;;;;;;;;;;-1:-1:-1;;;;;7357:9:132;-1:-1:-1;;;;;7357:23:132;;7353:344;;;7451:1;7388:20;:52;7409:20;:30;7430:5;;7436:1;7430:8;;;;;;;-1:-1:-1;;;;;7430:8:132;;;;;;;;;;;7409:30;;;;;;;;;-1:-1:-1;7409:30:132;;;;-1:-1:-1;7409:30:132;;;;;;7388:52;;;;;;;;;;;;;;;:65;;;;;;-1:-1:-1;;;;;;7388:65:132;;;;;;;;;7459:20;-1:-1:-1;7480:5:132;;7486:1;7480:8;;;;;;;;;;;;;-1:-1:-1;;;;;7480:8:132;-1:-1:-1;;;;;7459:30:132;-1:-1:-1;;;;;7459:30:132;;;;;;;;;;;;;:43;;;;;-1:-1:-1;;;;;7459:43:132;;;;;-1:-1:-1;;;;;7459:43:132;;;;;;7508:36;7535:5;;7541:1;7535:8;;;;;;;;;;;;;-1:-1:-1;;;;;7535:8:132;7508:12;:26;;:36;;;;:::i;:::-;;7353:344;;;7595:6;;7602:1;7595:9;;;;;;;;;;;;;-1:-1:-1;;;;;7595:9:132;7562:20;:30;7583:5;;7589:1;7583:8;;;;;;;;;;;;;-1:-1:-1;;;;;7583:8:132;-1:-1:-1;;;;;7562:30:132;-1:-1:-1;;;;;7562:30:132;;;;;;;;;;;;;:42;;;;;-1:-1:-1;;;;;7562:42:132;;;;;-1:-1:-1;;;;;7562:42:132;;;;;;7644:5;;7650:1;7644:8;;;;;;;;;;;;;-1:-1:-1;;;;;7644:8:132;7610:20;:31;7631:6;;7638:1;7631:9;;;;;;;;;;;;;-1:-1:-1;;;;;7631:9:132;-1:-1:-1;;;;;7610:31:132;-1:-1:-1;;;;;7610:31:132;;;;;;;;;;;;;:42;;;;;-1:-1:-1;;;;;7610:42:132;;;;;-1:-1:-1;;;;;7610:42:132;;;;;;7658:33;7682:5;;7688:1;7682:8;;;;;;;;;;;;;-1:-1:-1;;;;;7682:8:132;7658:12;:23;;:33;;;;:::i;:::-;;7353:344;7741:6;;7748:1;7741:9;;;;;;;;;;;;;-1:-1:-1;;;;;7741:9:132;-1:-1:-1;;;;;7707:44:132;7731:5;;7737:1;7731:8;;;;;;;7707:44;;-1:-1:-1;;;;;7731:8:132;;;;;;;;;;;7719:10;;-1:-1:-1;7707:44:132;;;;;7138:3;;7100:656;;;;6928:831;;;;:::o;1898:76:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;4302:344:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;4403:38:132;4422:18;4403;:38::i;:::-;4395:84;;;;-1:-1:-1;;;4395:84:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4510:15;;;-1:-1:-1;;;;;4529:36:132;;;-1:-1:-1;;;;;;4529:36:132;;;;;;;4575:67;;4510:15;;;4529:36;4510:15;;4594:10;;4575:67;;4484:23;;4575:67;161:1:99;4302:344:132;:::o;1087:24:14:-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;15648:679:132:-;141:5:99;;15767:4:132;;141:5:99;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;15799:14:132;;-1:-1:-1;;;;;15799:14:132;15785:10;:28;15777:53;;;;;-1:-1:-1;;;15777:53:132;;;;;;;;;;;;-1:-1:-1;;;15777:53:132;;;;;;;;;;;;;;;-1:-1:-1;;;;;15889:27:132;;15835:22;15889:27;;;:20;:27;;;;;;15860:6;;15924:24;;;15920:64;;;15972:7;15955:24;;15920:64;15991:19;15987:47;;16024:5;16017:12;;;;;;15987:47;16068:27;:7;16080:14;16068:27;:11;:27;:::i;:::-;-1:-1:-1;;;;;16038:27:132;;;;;;:20;:27;;;;;;;;:57;;;;16129:20;:27;;;;:47;;16161:14;16129:47;:31;:47;:::i;:::-;-1:-1:-1;;;;;16099:27:132;;;;;;:20;:27;;;;;:77;;;;16181:52;;16208:8;16218:14;16181:52;:26;:52;:::i;:::-;16282:8;-1:-1:-1;;;;;16243:64:132;16275:5;-1:-1:-1;;;;;16243:64:132;16263:10;-1:-1:-1;;;;;16243:64:132;;16292:14;16243:64;;;;;;;;;;;;;;;;;;-1:-1:-1;16319:4:132;;15648:679;-1:-1:-1;;;;;15648:679:132:o;6121:220::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;6231:10:132;;;-1:-1:-1;;;;;6245:24:132;;;-1:-1:-1;;;;;;6245:24:132;;;;;;;6279:58;;;6231:10;;;;6279:58;;;;;;;;;;;;6300:10;;6279:58;;;;;;;;161:1:99;6121:220:132;:::o;1012:25:14:-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;11564:113:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;11647:15:132;:26;11564:113::o;7007:17:14:-;;;;;;:::o;8041:335:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;8165:30:132;;;8157:57;;;;;-1:-1:-1;;;8157:57:132;;;;;;;;;;;;-1:-1:-1;;;8157:57:132;;;;;;;;;;;;;;;8224:9;8219:154;8239:16;;;8219:154;;;8295:7;;8303:1;8295:10;;;;;;;;;;;;;;;8267:15;:25;8283:5;;8289:1;8283:8;;;;;;;;;;;;;-1:-1:-1;;;;;8283:8:132;-1:-1:-1;;;;;8267:25:132;-1:-1:-1;;;;;8267:25:132;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;8347:5;;8353:1;8347:8;;;;;;;;;;;;;-1:-1:-1;;;;;8347:8:132;-1:-1:-1;;;;;8316:52:132;8335:10;-1:-1:-1;;;;;8316:52:132;;8357:7;;8365:1;8357:10;;;;;;;8316:52;;;8357:10;;;;;;;;;;;8316:52;;;;;;;;;;-1:-1:-1;8316:52:132;8257:3;;8219:154;;851:68:142;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;4032:267:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;4160:15:132;;;-1:-1:-1;;;;;4179:36:132;;;-1:-1:-1;;;;;;4179:36:132;;;;;;;4225:70;;4160:15;;;4179:36;4160:15;;4244:10;;4225:70;;4131:26;;4225:70;161:1:99;4032:267:132;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;17759:177:132:-;17866:7;17875:4;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;17892:40:132;17915:8;17925:6;17892:22;:40::i;:::-;17885:47;;;;161:1:99;17759:177:132;;;;;:::o;21118:303::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;21229:6:132;21212:13;:23;;21204:58;;;;;-1:-1:-1;;;21204:58:132;;;;;;;;;;;;-1:-1:-1;;;21204:58:132;;;;;;;;;;;;;;;21294:16;;;21314:32;;;;21356:61;;;;;;;;;;;;;;21373:10;;21356:61;;;;;;;;161:1:99;21118:303:132;:::o;5183:349::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;5311:4:132;5294:13;:21;;5286:48;;;;;-1:-1:-1;;;5286:48:132;;;;;;;;;;;;-1:-1:-1;;;5286:48:132;;;;;;;;;;;;;;;5363:30;;;5397:46;;;;5453:75;;;;;;;;;;;;;;5487:10;;5453:75;;;;;;;;161:1:99;5183:349:132;:::o;11128:308::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;11243:6:132;11231:8;:18;;11223:45;;;;;-1:-1:-1;;;11223:45:132;;;;;;;;;;;;-1:-1:-1;;;11223:45:132;;;;;;;;;;;;;;;11291:27;;;11322:38;;;;11370:62;;;;;;;;;;;;;;11401:10;;11370:62;;;;;;;;161:1:99;11128:308:132;:::o;10643:324::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;10762:6:132;10750:8;:18;;10742:45;;;;;-1:-1:-1;;;10742:45:132;;;;;;;;;;;;-1:-1:-1;;;10742:45:132;;;;;;;;;;;;;;;10810:31;;;10845:42;;;;10897:66;;;;;;;;;;;;;;10932:10;;10897:66;;;;;;;;161:1:99;10643:324:132;:::o;11903:107::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;11983:12:132;:23;11903:107::o;5340:45:14:-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;20707:303:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;20826:1:132;20808:15;:19;20800:51;;;;;-1:-1:-1;;;20800:51:132;;;;;;;;;;;;-1:-1:-1;;;20800:51:132;;;;;;;;;;;;;;;20875:18;;;20897:36;;;;20943:63;;;;;;;;;;;;;;20965:10;;20943:63;;;;;;;;161:1:99;20707:303:132;:::o;14603:679::-;141:5:99;;14722:4:132;;141:5:99;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;14754:14:132;;-1:-1:-1;;;;;14754:14:132;14740:10;:28;14732:53;;;;;-1:-1:-1;;;14732:53:132;;;;;;;;;;;;-1:-1:-1;;;14732:53:132;;;;;;;;;;;;;;;-1:-1:-1;;;;;14844:27:132;;14790:22;14844:27;;;:20;:27;;;;;;14815:6;;14879:24;;;14875:64;;;14927:7;14910:24;;14875:64;14946:19;14942:47;;14979:5;14972:12;;;;;;14942:47;15023:27;:7;15035:14;15023:27;:11;:27;:::i;:::-;-1:-1:-1;;;;;14993:27:132;;;;;;:20;:27;;;;;;;;:57;;;;15084:20;:27;;;;:47;;15116:14;15084:47;:31;:47;:::i;:::-;-1:-1:-1;;;;;15054:27:132;;;;;;:20;:27;;;;;:77;;;;15136:52;;15163:8;15173:14;15136:52;:26;:52;:::i;:::-;15237:8;-1:-1:-1;;;;;15198:64:132;15230:5;-1:-1:-1;;;;;15198:64:132;15218:10;-1:-1:-1;;;;;15198:64:132;;15247:14;15198:64;;;;;;;;;;;;;;;;;;-1:-1:-1;15274:4:132;;14603:679;-1:-1:-1;;;;;14603:679:132:o;3781:57:14:-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;475:2480:112:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;534:54:112;-1:-1:-1;;;581:6:112;534:10;:54::i;:::-;592;-1:-1:-1;;;639:6:112;592:10;:54::i;:::-;650:45;-1:-1:-1;;;688:6:112;650:10;:45::i;:::-;699:52;-1:-1:-1;;;744:6:112;699:10;:52::i;:::-;755:54;-1:-1:-1;;;802:6:112;755:10;:54::i;:::-;813;-1:-1:-1;;;860:6:112;813:10;:54::i;:::-;871:56;-1:-1:-1;;;920:6:112;871:10;:56::i;:::-;931:59;-1:-1:-1;;;983:6:112;931:10;:59::i;:::-;994:56;-1:-1:-1;;;1043:6:112;994:10;:56::i;:::-;1054:68;-1:-1:-1;;;1115:6:112;1054:10;:68::i;:::-;1126:64;-1:-1:-1;;;1183:6:112;1126:10;:64::i;:::-;1194:52;-1:-1:-1;;;1239:6:112;1194:10;:52::i;:::-;1250:49;-1:-1:-1;;;1292:6:112;1250:10;:49::i;:::-;1303:48;-1:-1:-1;;;1344:6:112;1303:10;:48::i;:::-;1355:51;-1:-1:-1;;;1399:6:112;1355:10;:51::i;:::-;1410:46;-1:-1:-1;;;1449:6:112;1410:10;:46::i;:::-;1460:53;-1:-1:-1;;;1506:6:112;1460:10;:53::i;:::-;1517;-1:-1:-1;;;1563:6:112;1517:10;:53::i;:::-;1574:55;-1:-1:-1;;;1622:6:112;1574:10;:55::i;:::-;1633;-1:-1:-1;;;1681:6:112;1633:10;:55::i;:::-;1692:54;-1:-1:-1;;;1739:6:112;1692:10;:54::i;:::-;1750:50;-1:-1:-1;;;1793:6:112;1750:10;:50::i;:::-;1804:44;-1:-1:-1;;;1841:6:112;1804:10;:44::i;:::-;1852:70;-1:-1:-1;;;1915:6:112;1852:10;:70::i;:::-;1926:47;-1:-1:-1;;;1966:6:112;1926:10;:47::i;:::-;1977:57;-1:-1:-1;;;2027:6:112;1977:10;:57::i;:::-;2038:52;-1:-1:-1;;;2083:6:112;2038:10;:52::i;:::-;2094:53;-1:-1:-1;;;2140:6:112;2094:10;:53::i;:::-;2151:67;-1:-1:-1;;;2211:6:112;2151:10;:67::i;:::-;2222:55;-1:-1:-1;;;2270:6:112;2222:10;:55::i;:::-;2282:57;-1:-1:-1;;;2332:6:112;2282:10;:57::i;:::-;2343;-1:-1:-1;;;2393:6:112;2343:10;:57::i;:::-;2404:59;-1:-1:-1;;;2456:6:112;2404:10;:59::i;:::-;2467:51;-1:-1:-1;;;2511:6:112;2467:10;:51::i;:::-;2523:52;-1:-1:-1;;;2568:6:112;2523:10;:52::i;:::-;2579;-1:-1:-1;;;2624:6:112;2579:10;:52::i;:::-;2635:53;-1:-1:-1;;;2681:6:112;2635:10;:53::i;:::-;2692;-1:-1:-1;;;2738:6:112;2692:10;:53::i;:::-;2749:59;-1:-1:-1;;;2801:6:112;2749:10;:59::i;:::-;2813:67;-1:-1:-1;;;2873:6:112;2813:10;:67::i;:::-;2884;-1:-1:-1;;;2944:6:112;2884:10;:67::i;123:113::-;-1:-1:-1;;;;;197:27:112;;;;;;;:20;:27;;;;;:35;123:113::o;5693:286:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;5824:20:132;;;5848:38;;;;5896:79;;;;;;;;;;;;;;5930:10;;5896:79;;;;;;;;161:1:99;5693:286:132;:::o;1437:48:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;10198:276:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;10305:6:132;10293:8;:18;;10285:45;;;;;-1:-1:-1;;;10285:45:132;;;;;;;;;;;;-1:-1:-1;;;10285:45:132;;;;;;;;;;;;;;;10353:19;;;10376:30;;;10416:54;;;;;;;;;;;;;;10353:19;;10439:10;;10416:54;;;;;;;;;;;161:1:99;10198:276:132;:::o;8517:268::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;8622:6:132;8610:8;:18;;8602:45;;;;;-1:-1:-1;;;8602:45:132;;;;;;;;;;;;-1:-1:-1;;;8602:45:132;;;;;;;;;;;;;;;8670:17;;;8691:28;;;;8729:52;;;;;;;;;;;;;;8750:10;;8729:52;;;;;;;;161:1:99;8517:268:132;:::o;6305:31:14:-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;19690:337:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;19785:37:132;19804:17;19785:18;:37::i;:::-;19777:82;;;;;-1:-1:-1;;;19777:82:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19896:10;;;-1:-1:-1;;;;;19911:43:132;;;-1:-1:-1;;;;;;19911:43:132;;;;;;;19964:59;;19896:10;;;19911:43;19896:10;;19978;;19964:59;;19864:21;;19964:59;161:1:99;19690:337:132;:::o;22899:170::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;22975:5:132;;;;22965:15;;;;;;;22957:40;;;;;-1:-1:-1;;;22957:40:132;;;;;;;;;;;;-1:-1:-1;;;22957:40:132;;;;;;;;;;;;;;;23001:5;:14;;-1:-1:-1;;23001:14:132;;;;;;;;;;;23024:41;;23001:14;;;23037:10;;23024:41;;-1:-1:-1;;23024:41:132;22899:170;:::o;23072:77::-;23140:5;;;;23072:77;:::o;20176:395::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;20285:41:132;20304:21;20285:18;:41::i;:::-;20277:90;;;;-1:-1:-1;;;20277:90:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20406:20;;;-1:-1:-1;;;;;20430:44:132;;;-1:-1:-1;;;;;;20430:44:132;;;;;;;20484:83;;20406:20;;;20430:44;20406:20;;20508:10;;20484:83;;20372:31;;20484:83;161:1:99;20176:395:132;:::o;23370:122::-;23458:30;;23370:122;:::o;239:113:112:-;-1:-1:-1;;;;;313:27:112;;;;;;;:20;:27;;;;;:35;239:113::o;12630:232:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;12741:14:132;;;-1:-1:-1;;;;;12759:30:132;;;-1:-1:-1;;;;;;12759:30:132;;;;;;;12799:59;;12741:14;;;12759:30;12741:14;;12817:10;;12799:59;;12717:21;;12799:59;161:1:99;12630:232:132;:::o;2626:29:14:-;;;-1:-1:-1;;;;;2626:29:14;;:::o;21574:517:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;141:5:99;;;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;21789:7:132;21764:21;:32;;21756:75;;;;;-1:-1:-1;;;21756:75:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21871:27:132;;;21836:32;21871:27;;;:14;:27;;;;;;;;:38;;;;;;;;;;;;;;;21913:62;;;;21985:102;;;;;;;;;;;;;21871:38;;;:27;22003:10;;21985:102;;;;;;;;;;;161:1:99;21574:517:132;;;:::o;3490:47:14:-;;;;:::o;4754:35::-;;;;:::o;13156:1081:132:-;141:5:99;;13243:7:132;;141:5:99;;140:6;132:25;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;-1:-1:-1;;;132:25:99;;;;;;;;;;;;;;;13278:14:132;;-1:-1:-1;;;;;13278:14:132;13264:10;:28;13256:53;;;;;-1:-1:-1;;;13256:53:132;;;;;;;;;;;;-1:-1:-1;;;13256:53:132;;;;;;;;;;;;;;;-1:-1:-1;;;;;13339:27:132;;13314:22;13339:27;;;:20;:27;;;;;;13374:18;;13370:147;;-1:-1:-1;;;;;13399:27:132;;13429:1;13399:27;;;:20;:27;;;;;;;;:31;;;13465:20;:27;;;;;;:47;;13497:14;13465:47;:31;:47;:::i;:::-;-1:-1:-1;;;;;13435:27:132;;;;;;:20;:27;;;;;:77;13370:147;-1:-1:-1;;;;;13546:27:132;;13521:22;13546:27;;;:20;:27;;;;;;13581:18;;13577:147;;-1:-1:-1;;;;;13606:27:132;;13636:1;13606:27;;;:20;:27;;;;;;;;:31;;;13672:20;:27;;;;;;:47;;13704:14;13672:47;:31;:47;:::i;:::-;-1:-1:-1;;;;;13642:27:132;;;;;;:20;:27;;;;;:77;13577:147;-1:-1:-1;;;;;13755:29:132;;13728:24;13755:29;;;:22;:29;;;;;;13792:20;;13788:157;;-1:-1:-1;;;;;13819:29:132;;13851:1;13819:29;;;:22;:29;;;;;;;;:33;;;13889:22;:29;;;;;;:51;;13923:16;13889:51;:33;:51;:::i;:::-;-1:-1:-1;;;;;13857:29:132;;;;;;:22;:29;;;;;:83;13788:157;13949:14;13966:56;14005:16;13966:34;:14;13985;13966:34;:18;:34;:::i;:::-;:38;:56;:38;:56;:::i;:::-;13949:73;-1:-1:-1;14030:11:132;14026:40;;14055:6;-1:-1:-1;14048:13:132;;-1:-1:-1;;;14048:13:132;14026:40;14070:44;-1:-1:-1;;;;;14070:26:132;;14097:8;14107:6;14070:44;:26;:44;:::i;:::-;14124:91;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14124:91:132;;;;;;;;14137:10;;14124:91;;;;;;;;;;14227:6;13156:1081;-1:-1:-1;;;;;;13156:1081:132:o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;22705:94:132:-;22779:16;;-1:-1:-1;;;;;22779:16:132;22705:94;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;1201:125:145:-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;654:174:144;765:58;;;-1:-1:-1;;;;;765:58:144;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;765:58:144;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;739:85:144;;758:5;;739:18;:85::i;:::-;654:174;;;:::o;831:204::-;962:68;;;-1:-1:-1;;;;;962:68:144;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;962:68:144;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;936:95:144;;955:5;;936:18;:95::i;:::-;831:204;;;;:::o;4043:467:95:-;4148:23;4191:13;;;4216:12;;;;4208:42;;;;;-1:-1:-1;;;4208:42:95;;;;;;;;;;;;-1:-1:-1;;;4208:42:95;;;;;;;;;;;;;;;4260:10;;;:17;:23;-1:-1:-1;4260:49:95;;4306:3;4260:49;;;4286:10;;;:17;4260:49;4254:55;-1:-1:-1;4317:8:95;;;:24;;;4338:3;4329:5;:12;;4317:24;4313:53;;;-1:-1:-1;4348:13:95;;4313:53;4399:5;4393:3;:11;4379:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4379:26:95;;4370:35;;4414:9;4409:81;4435:5;4429:3;:11;4425:1;:15;4409:81;;;4464:3;:10;;4479:5;4475:1;:9;4464:21;;;;;;;;;;;;;;;;4452:6;4459:1;4452:9;;;;;;;;;;;;;;;;;:33;4442:3;;4409:81;;;-1:-1:-1;;4043:467:95;;;;;:::o;1719:186::-;1803:4;1853:9;1876:25;1890:3;1853:9;1876:13;:25::i;924:180::-;1005:4;1055:9;1078:22;1089:3;1055:9;1078:10;:22::i;780:87:137:-;853:10;780:87;:::o;865:503:100:-;1027:17;;949:7;;;;993:6;;1052:29;;;1048:74;;;1105:12;1088:29;;1048:74;1129:19;1125:71;;-1:-1:-1;;1163:20:100;;-1:-1:-1;;;;;1163:20:100;;-1:-1:-1;1163:20:100;;-1:-1:-1;1155:36:100;;1125:71;1220:32;:12;1237:14;1220:32;:16;:32;:::i;:::-;1200:17;:52;1264:20;;1257:67;;-1:-1:-1;;;;;1264:20:100;1299:8;1309:14;1257:67;:41;:67;:::i;:::-;-1:-1:-1;;1337:20:100;;-1:-1:-1;;;;;1337:20:100;;;;-1:-1:-1;865:503:100;-1:-1:-1;;;865:503:100:o;7574:230:14:-;-1:-1:-1;;;;;;7635:17:14;;;;;;:12;:17;;;;;:26;;-1:-1:-1;;;;;;7635:26:14;-1:-1:-1;;;;;7635:26:14;;;;;;;;7670:20;7666:135;;7697:40;:15;-1:-1:-1;;;;;;7724:12:14;;7697:40;:26;:40;:::i;:::-;;7666:135;;;7753:43;:15;-1:-1:-1;;;;;;7783:12:14;;7753:43;:29;:43;:::i;7666:135::-;7574:230;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;2564:999:144:-;3111:27;3119:5;-1:-1:-1;;;;;3111:25:144;;:27::i;:::-;3103:71;;;;;-1:-1:-1;;;3103:71:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;3233:12;3247:23;3282:5;-1:-1:-1;;;;;3274:19:144;3294:4;3274:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3274:25:144;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3232:67:144;;;;3311:7;3303:52;;;;;-1:-1:-1;;;3303:52:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3364:17;;:21;3360:200;;3489:10;3478:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3478:30:144;3470:85;;;;-1:-1:-1;;;3470:85:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2102:845:95;2182:4;2196:20;2205:3;2210:5;2196:8;:20::i;:::-;2192:752;;;2223:21;2247:16;;;;;;;;;;;2266:1;2292:10;;:17;-1:-1:-1;;2247:20:95;;;;2292:21;2428:26;;;2424:318;;2462:17;2482:3;:10;;2493:9;2482:21;;;;;;;;;;;;;;;;2462:41;;2607:9;2579:3;:10;;2590:13;2579:25;;;;;;;;;;;;;;;;;;;:37;;;;2669:20;;;;;;;;;2708:1;2692:17;;2669:40;;2424:318;2807:9;:16;;;;;;;;;;2800:23;2878:10;;;:16;;;;;;;;;;;;;;;;;;;;;;;;2907:4;2900:11;;;;;;2192:752;-1:-1:-1;2934:5:95;2927:12;;1293:212;1370:4;1385:20;1394:3;1399:5;1385:8;:20::i;:::-;1380:122;;-1:-1:-1;1431:10:95;;;;27::-1;;23:18;;;45:23;;;-1:-1;1431:22:95;;;;;;;;;;;;;1412:16;;;;;;;;;;;:41;1458:11;;3145:122;3225:4;3242:16;;;;;;;;;;;;:21;;;3145:122::o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "depositProtocolToken(uint256)": "3c56ae1b",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "getFeeRebatePercent()": "3f1ae8b9",
              "getLoanPoolsList(uint256,uint256)": "402946b9",
              "getLockedSOVAddress()": "f44942ec",
              "getProtocolAddress()": "07024c25",
              "getSovTokenAddress()": "4bcfe726",
              "getSpecialRebates(address,address)": "59d0d9ec",
              "getSwapExternalFeePercent()": "462096f3",
              "getTradingRebateRewardsBasisPoint()": "e4196480",
              "initialize(address)": "c4d66de8",
              "isLoanPool(address)": "115dd4b1",
              "isOwner()": "8f32d59b",
              "isProtocolPaused()": "dac88561",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "setAffiliateFeePercent(uint256)": "d21f8e24",
              "setAffiliateTradingTokenFeePercent(uint256)": "a32bb683",
              "setBorrowingFeePercent(uint256)": "17f8b788",
              "setBorrowingFeeTokensHeld(address,uint256)": "3e526e6b",
              "setFeesController(address)": "e8997dbd",
              "setLendingFeePercent(uint256)": "d238db22",
              "setLendingFeeTokensHeld(address,uint256)": "c6ce7e40",
              "setLiquidationIncentivePercent(uint256)": "a2ab1ba1",
              "setLoanPool(address[],address[])": "59e49e0f",
              "setLockedSOVAddress(address)": "4dd053a5",
              "setMaxDisagreement(uint256)": "7fb202e5",
              "setMaxSwapSize(uint256)": "355a395f",
              "setMinReferralsToPayoutAffiliates(uint256)": "c7c333f0",
              "setPriceFeedContract(address)": "74626404",
              "setProtocolTokenAddress(address)": "e3ff9370",
              "setRebatePercent(uint256)": "9c53874f",
              "setRolloverBaseReward(uint256)": "b1558b72",
              "setSOVTokenAddress(address)": "6fbae33b",
              "setSourceBuffer(uint256)": "a6e7cc28",
              "setSovrynProtocolAddress(address)": "9254e6bf",
              "setSovrynSwapContractRegistryAddress(address)": "2d77d0d0",
              "setSpecialRebates(address,address,uint256)": "ea0e3930",
              "setSupportedTokens(address[],bool[])": "84eaa9e0",
              "setSwapExternalFeePercent(uint256)": "29f9986d",
              "setSwapsImplContract(address)": "1a81c191",
              "setTradingFeePercent(uint256)": "0c615ee9",
              "setTradingFeeTokensHeld(address,uint256)": "e4a47a02",
              "setTradingRebateRewardsBasisPoint(uint256)": "a1eb5683",
              "setWrbtcToken(address)": "d9eaaa64",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "togglePaused(bool)": "da541e09",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "withdrawBorrowingFees(address,address,uint256)": "32e4706f",
              "withdrawFees(address,address)": "f2555278",
              "withdrawLendingFees(address,address,uint256)": "b1ac89ca",
              "withdrawProtocolToken(address,uint256)": "96881857",
              "withdrawTradingFees(address,address,uint256)": "74326e8f",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "depositProtocolToken(uint256)": {
                "notice": "The owner calls this function to deposit protocol tokens."
              },
              "getLoanPoolsList(uint256,uint256)": {
                "notice": "Get a list of loan pools."
              },
              "getSpecialRebates(address,address)": {
                "notice": "Get a rebate percent of specific pairs."
              },
              "getTradingRebateRewardsBasisPoint()": {
                "notice": "Get the basis point of trading rebate rewards."
              },
              "isLoanPool(address)": {
                "notice": "Check whether a token is a pool token."
              },
              "setAffiliateFeePercent(uint256)": {
                "notice": "Set the value of affiliateFeePercent storage variable."
              },
              "setAffiliateTradingTokenFeePercent(uint256)": {
                "notice": "Set the value of affiliateTradingTokenFeePercent storage variable."
              },
              "setBorrowingFeePercent(uint256)": {
                "notice": "Set the value of borrowingFeePercent storage variable."
              },
              "setFeesController(address)": {
                "notice": "Set the address of the feesController instance."
              },
              "setLendingFeePercent(uint256)": {
                "notice": "Set the value of lendingFeePercent storage variable."
              },
              "setLiquidationIncentivePercent(uint256)": {
                "notice": "Set the value of liquidationIncentivePercent storage variable."
              },
              "setLoanPool(address[],address[])": {
                "notice": "Set a list of loan pools and its tokens."
              },
              "setMaxDisagreement(uint256)": {
                "notice": "Set the value of the maximum swap spread."
              },
              "setMaxSwapSize(uint256)": {
                "notice": "Set the value of the swap size limit."
              },
              "setMinReferralsToPayoutAffiliates(uint256)": {
                "notice": "Update the minimum number of referrals to get affiliates rewards."
              },
              "setPriceFeedContract(address)": {
                "notice": "Set the address of the Price Feed instance."
              },
              "setProtocolTokenAddress(address)": {
                "notice": "Set the protocol token contract address."
              },
              "setRebatePercent(uint256)": {
                "notice": "Set the fee rebate percent."
              },
              "setRolloverBaseReward(uint256)": {
                "notice": "Set rollover base reward. It should be denominated in wrBTC."
              },
              "setSourceBuffer(uint256)": {
                "notice": "Set the value of the maximum source buffer."
              },
              "setSovrynProtocolAddress(address)": {
                "notice": "setting wrong address will break inter module functions calling should be set once"
              },
              "setSovrynSwapContractRegistryAddress(address)": {
                "notice": "Set the contract registry address of the SovrynSwap network."
              },
              "setSpecialRebates(address,address,uint256)": {
                "notice": "Set the special fee rebate percent for specific pair"
              },
              "setSupportedTokens(address[],bool[])": {
                "notice": "Set a list of supported tokens by populating the  storage supportedTokens mapping."
              },
              "setSwapExternalFeePercent(uint256)": {
                "notice": "Set the value of swapExtrernalFeePercent storage variable"
              },
              "setSwapsImplContract(address)": {
                "notice": "Set the address of the asset swapper instance."
              },
              "setTradingFeePercent(uint256)": {
                "notice": "Set the value of tradingFeePercent storage variable."
              },
              "setTradingRebateRewardsBasisPoint(uint256)": {
                "notice": "Set the basis point of trading rebate rewards (SOV), max value is 9999 (99.99% liquid, 0.01% vested)."
              },
              "setWrbtcToken(address)": {
                "notice": "Set the wrBTC contract address."
              },
              "withdrawBorrowingFees(address,address,uint256)": {
                "notice": "The feesController calls this function to withdraw fees accrued from borrowing operations."
              },
              "withdrawFees(address,address)": {
                "notice": "The feesController calls this function to withdraw fees from three sources: lending, trading and borrowing."
              },
              "withdrawLendingFees(address,address,uint256)": {
                "notice": "The feesController calls this function to withdraw fees accrued from lending operations."
              },
              "withdrawProtocolToken(address,uint256)": {
                "notice": "The owner calls this function to withdraw protocol tokens."
              },
              "withdrawTradingFees(address,address,uint256)": {
                "notice": "The feesController calls this function to withdraw fees accrued from trading operations."
              }
            }
          }
        }
      },
      "contracts/mockup/RBTCWrapperProxyMockup.sol": {
        "RBTCWrapperProxyMockup": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract LiquidityMining",
                  "name": "_liquidityMining",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                }
              ],
              "name": "claimReward",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "claimRewardFromAllPools",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidityMining",
              "outputs": [
                {
                  "internalType": "contract LiquidityMining",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_poolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516102bb3803806102bb8339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610256806100656000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630bd69aeb1461005157806385b2d5351461005b578063d279c1911461007f578063f3fef3a3146100a5575b600080fd5b6100596100d1565b005b610063610132565b604080516001600160a01b039092168252519081900360200190f35b6100596004803603602081101561009557600080fd5b50356001600160a01b0316610141565b610059600480360360408110156100bb57600080fd5b506001600160a01b0381351690602001356101ad565b6000805460408051636b524f8760e11b815233600482015290516001600160a01b039092169263d6a49f0e9260248084019382900301818387803b15801561011857600080fd5b505af115801561012c573d6000803e3d6000fd5b50505050565b6000546001600160a01b031681565b60008054604080516324a9e3c160e11b81526001600160a01b03858116600483015233602483015291519190921692634953c782926044808201939182900301818387803b15801561019257600080fd5b505af11580156101a6573d6000803e3d6000fd5b5050505050565b6000805460408051631a4ca37b60e21b81526001600160a01b03868116600483015260248201869052336044830152915191909216926369328dec926064808201939182900301818387803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b50505050505056fea265627a7a72315820eadd2b2058c4761d88e64055d9a230070a3bf9bd5d8e55a12ba46c64f2d175a664736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2BB CODESIZE SUB DUP1 PUSH2 0x2BB DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x256 DUP1 PUSH2 0x65 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBD69AEB EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x85B2D535 EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xD279C191 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0xA5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xD1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x63 PUSH2 0x132 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x141 JUMP JUMPDEST PUSH2 0x59 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AD JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x6B524F87 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xD6A49F0E SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x24A9E3C1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0x4953C782 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE CALLER PUSH1 0x44 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0x69328DEC SWAP3 PUSH1 0x64 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x219 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xEA 0xDD 0x2B KECCAK256 PC 0xC4 PUSH23 0x1D88E64055D9A230070A3BF9BD5D8E55A12BA46C64F2D1 PUSH22 0xA664736F6C6343000511003200000000000000000000 ",
              "sourceMap": "64:518:113:-;;;141:95;8:9:-1;5:2;;;30:1;27;20:12;5:2;141:95:113;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;141:95:113;198:15;:34;;-1:-1:-1;;;;;198:34:113;;;-1:-1:-1;;;;;;198:34:113;;;;;;;;;64:518;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80630bd69aeb1461005157806385b2d5351461005b578063d279c1911461007f578063f3fef3a3146100a5575b600080fd5b6100596100d1565b005b610063610132565b604080516001600160a01b039092168252519081900360200190f35b6100596004803603602081101561009557600080fd5b50356001600160a01b0316610141565b610059600480360360408110156100bb57600080fd5b506001600160a01b0381351690602001356101ad565b6000805460408051636b524f8760e11b815233600482015290516001600160a01b039092169263d6a49f0e9260248084019382900301818387803b15801561011857600080fd5b505af115801561012c573d6000803e3d6000fd5b50505050565b6000546001600160a01b031681565b60008054604080516324a9e3c160e11b81526001600160a01b03858116600483015233602483015291519190921692634953c782926044808201939182900301818387803b15801561019257600080fd5b505af11580156101a6573d6000803e3d6000fd5b5050505050565b6000805460408051631a4ca37b60e21b81526001600160a01b03868116600483015260248201869052336044830152915191909216926369328dec926064808201939182900301818387803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b50505050505056fea265627a7a72315820eadd2b2058c4761d88e64055d9a230070a3bf9bd5d8e55a12ba46c64f2d175a664736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBD69AEB EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x85B2D535 EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xD279C191 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0xA5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xD1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x63 PUSH2 0x132 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x141 JUMP JUMPDEST PUSH2 0x59 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AD JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x6B524F87 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xD6A49F0E SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x24A9E3C1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0x4953C782 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE CALLER PUSH1 0x44 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0x69328DEC SWAP3 PUSH1 0x64 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x219 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xEA 0xDD 0x2B KECCAK256 PC 0xC4 PUSH23 0x1D88E64055D9A230070A3BF9BD5D8E55A12BA46C64F2D1 PUSH22 0xA664736F6C6343000511003200000000000000000000 ",
              "sourceMap": "64:518:113:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;64:518:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;349:101;;;:::i;:::-;;99:38;;;:::i;:::-;;;;-1:-1:-1;;;;;99:38:113;;;;;;;;;;;;;;239:107;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;239:107:113;-1:-1:-1;;;;;239:107:113;;:::i;453:127::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;453:127:113;;;;;;;;:::i;349:101::-;395:15;;;:51;;;-1:-1:-1;;;395:51:113;;435:10;395:51;;;;;;-1:-1:-1;;;;;395:15:113;;;;:39;;:51;;;;;;;;;;:15;;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;395:51:113;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;395:51:113;;;;349:101::o;99:38::-;;;-1:-1:-1;;;;;99:38:113;;:::o;239:107::-;291:15;;;:51;;;-1:-1:-1;;;291:51:113;;-1:-1:-1;;;;;291:51:113;;;;;;;331:10;291:51;;;;;;:15;;;;;:27;;:51;;;;;;;;;;;:15;;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;291:51:113;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;291:51:113;;;;239:107;:::o;453:127::-;519:15;;;:57;;;-1:-1:-1;;;519:57:113;;-1:-1:-1;;;;;519:57:113;;;;;;;;;;;;;565:10;519:57;;;;;;:15;;;;;:24;;:57;;;;;;;;;;;:15;;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;519:57:113;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;519:57:113;;;;453:127;;:::o"
            },
            "methodIdentifiers": {
              "claimReward(address)": "d279c191",
              "claimRewardFromAllPools()": "0bd69aeb",
              "liquidityMining()": "85b2d535",
              "withdraw(address,uint256)": "f3fef3a3"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/mockup/StakingMock.sol": {
        "StakingMock": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "ContractCodeHashAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "ContractCodeHashRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "fromDelegate",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "toDelegate",
                  "type": "address"
                }
              ],
              "name": "DelegateChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegate",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "previousBalance",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newBalance",
                  "type": "uint256"
                }
              ],
              "name": "DelegateStakeChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "previousDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountStaked",
                  "type": "uint256"
                }
              ],
              "name": "ExtendedStakingDuration",
              "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": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "isGovernance",
                  "type": "bool"
                }
              ],
              "name": "StakingWithdrawn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "totalStaked",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensUnlocked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "VestingTokensWithdrawn",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DELEGATION_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DOMAIN_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_DURATION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_VOTING_WEIGHT",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOVToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "WEIGHT_FACTOR",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "allUnlocked",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "balance",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "blockMockUp",
              "outputs": [
                {
                  "internalType": "contract BlockMockUp",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startDate",
                  "type": "uint256"
                }
              ],
              "name": "computeWeightByDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "weight",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "lockDate",
                  "type": "uint256"
                }
              ],
              "name": "delegate",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "lockDate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "delegateBySig",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "delegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "delegates",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "previousLock",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                }
              ],
              "name": "extendStakingDuration",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharing",
              "outputs": [
                {
                  "internalType": "contract IFeeSharingProxy",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedTS",
                  "type": "uint256"
                }
              ],
              "name": "getCurrentStakedUntil",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "getCurrentVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "getPriorStakeByDateForDelegatee",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "getPriorTotalStakesForDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint32",
                  "name": "blockNumber",
                  "type": "uint32"
                },
                {
                  "internalType": "uint256",
                  "name": "time",
                  "type": "uint256"
                }
              ],
              "name": "getPriorTotalVotingPower",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "totalVotingPower",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "getPriorUserStakeByDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                }
              ],
              "name": "getPriorVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "votes",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                }
              ],
              "name": "getPriorWeightedStake",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "votes",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "getStakes",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "dates",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint96[]",
                  "name": "stakes",
                  "type": "uint96[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                }
              ],
              "name": "getWithdrawAmounts",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                },
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "governanceWithdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "governanceWithdrawVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kickoffTS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "migrateToNewStakingContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "newStakingContract",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numDelegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numTotalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numUserStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "receiveApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_blockMockUp",
                  "type": "address"
                }
              ],
              "name": "setBlockMockUpAddr",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_feeSharing",
                  "type": "address"
                }
              ],
              "name": "setFeeSharing",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newStakingContract",
                  "type": "address"
                }
              ],
              "name": "setNewStakingContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingRegistryProxy",
                  "type": "address"
                }
              ],
              "name": "setVestingRegistry",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "_weightScaling",
                  "type": "uint96"
                }
              ],
              "name": "setWeightScaling",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "stakeFor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "stake",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "stakeFor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "stakeWithApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "intervalLength",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "stakeFor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "stakesBySchedule",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                }
              ],
              "name": "timestampToLockDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockDate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "totalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "unlockAllTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "userStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "vestingCodeHashes",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingRegistryLogic",
              "outputs": [
                {
                  "internalType": "contract VestingRegistryLogic",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "vestingWhitelist",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "weightScaling",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startDate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "weightedStakeByDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "power",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "balanceOf(address)": {
                "details": "Iterate checkpoints adding up stakes.",
                "params": {
                  "account": "The address of the account to get the balance of."
                },
                "return": "The number of tokens held."
              },
              "computeWeightByDate(uint256,uint256)": {
                "params": {
                  "date": "The unlocking date.",
                  "startDate": "We compute the weight for the tokens staked until 'date' on 'startDate'."
                }
              },
              "delegate(address,uint256)": {
                "params": {
                  "delegatee": "The address to delegate votes to.",
                  "lockDate": "the date if the position to delegate."
                }
              },
              "delegateBySig(address,uint256,uint256,uint256,uint8,bytes32,bytes32)": {
                "details": "The signature needs to be broken up into 3 parameters, known as v, r and s: const r = '0x' + sig.substring(2).substring(0, 64); const s = '0x' + sig.substring(2).substring(64, 128); const v = '0x' + sig.substring(2).substring(128, 130);",
                "params": {
                  "delegatee": "The address to delegate votes to.",
                  "expiry": "The time at which to expire the signature.",
                  "lockDate": "The date until which the position is locked.",
                  "nonce": "The contract state required to match the signature.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "v": "The recovery byte of the signature."
                }
              },
              "extendStakingDuration(uint256,uint256)": {
                "params": {
                  "previousLock": "The old unlocking timestamp.",
                  "until": "The new unlocking timestamp in seconds."
                }
              },
              "getCurrentStakedUntil(uint256)": {
                "params": {
                  "lockedTS": "The timestamp to get the staked tokens for."
                }
              },
              "getCurrentVotes(address)": {
                "details": "This is a wrapper to simplify arguments. The actual computation is performed on WeightedStaking parent contract.",
                "params": {
                  "account": "The address to get votes balance."
                },
                "return": "The number of current votes for a user account."
              },
              "getPriorStakeByDateForDelegatee(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation. TODO: WeightedStaking::getPriorStakeByDateForDelegatee should probably better be internal instead of a public function.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at."
                },
                "return": "The number of votes the account had as of the given block."
              },
              "getPriorTotalStakesForDate(uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation. TODO: WeightedStaking::getPriorTotalStakesForDate should probably better be internal instead of a public function.",
                "params": {
                  "blockNumber": "The block number to get the vote balance at.",
                  "date": "The date to check the stakes for."
                },
                "return": "The number of votes the account had as of the given block."
              },
              "getPriorTotalVotingPower(uint32,uint256)": {
                "params": {
                  "time": "The timestamp for which to calculate the total voting power."
                },
                "return": "The total voting power at the given time."
              },
              "getPriorUserStakeByDate(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at.",
                  "date": "The lock date."
                },
                "return": "The number of votes the account had as of the given block."
              },
              "getPriorVotes(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation.     Used for Voting, not for fee sharing.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at."
                },
                "return": "The number of votes the delegatee had as of the given block."
              },
              "getPriorWeightedStake(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation.     Used for fee sharing, not voting. TODO: WeightedStaking::getPriorWeightedStake is using the variable name \"votes\" to add up token stake, and that could be misleading.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at."
                },
                "return": "The weighted stake the account had as of the given block."
              },
              "getStakes(address)": {
                "params": {
                  "account": "The address to get stakes."
                },
                "return": "The arrays of dates and stakes."
              },
              "getWithdrawAmounts(uint96,uint256)": {
                "params": {
                  "amount": "The number of tokens to withdraw.",
                  "until": "The date until which the tokens were staked."
                }
              },
              "governanceWithdraw(uint96,uint256,address)": {
                "details": "Can be invoked only by whitelisted contract passed to governanceWithdrawVesting",
                "params": {
                  "amount": "The number of tokens to withdraw.",
                  "receiver": "The receiver of the tokens. If not specified, send to the msg.sender",
                  "until": "The date until which the tokens were staked."
                }
              },
              "governanceWithdrawVesting(address,address)": {
                "details": "Can be invoked only by whitelisted contract passed to governanceWithdrawVesting.",
                "params": {
                  "receiver": "The receiver of the tokens. If not specified, send to the msg.sender",
                  "vesting": "The address of Vesting contract."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "migrateToNewStakingContract()": {
                "details": "Staking contract needs to be set before by the owner. Currently not implemented, just needed for the interface.     In case it's needed at some point in the future,     the implementation needs to be changed first."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "receiveApproval(address,uint256,address,bytes)": {
                "params": {
                  "_data": "The data will be used for low level call."
                }
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "setBlockMockUpAddr(address)": {
                "params": {
                  "_blockMockUp": "the address of BlockMockUp"
                }
              },
              "setFeeSharing(address)": {
                "params": {
                  "_feeSharing": "The address of FeeSharingProxy contract."
                }
              },
              "setNewStakingContract(address)": {
                "details": "Doesn't have any influence as long as migrateToNewStakingContract is not implemented.",
                "params": {
                  "_newStakingContract": "The address of the new staking contract."
                }
              },
              "setVestingRegistry(address)": {
                "params": {
                  "_vestingRegistryProxy": "the address of vesting registry proxy contract"
                }
              },
              "setWeightScaling(uint96)": {
                "params": {
                  "_weightScaling": "The weight scaling."
                }
              },
              "stake(uint96,uint256,address,address)": {
                "params": {
                  "amount": "The number of tokens to stake.",
                  "delegatee": "The address of the delegatee or 0x0 if there is none.",
                  "stakeFor": "The address to stake the tokens for or 0x0 if staking for oneself.",
                  "until": "Timestamp indicating the date until which to stake."
                }
              },
              "stakeWithApproval(address,uint96,uint256,address,address)": {
                "details": "This function will be invoked from receiveApprovalSOV.approveAndCall -> this.receiveApproval -> this.stakeWithApproval",
                "params": {
                  "amount": "The number of tokens to stake.",
                  "delegatee": "The address of the delegatee or 0x0 if there is none.",
                  "sender": "The sender of SOV.approveAndCall",
                  "stakeFor": "The address to stake the tokens for or 0x0 if staking for oneself.",
                  "until": "Timestamp indicating the date until which to stake."
                }
              },
              "stakesBySchedule(uint256,uint256,uint256,uint256,address,address)": {
                "params": {
                  "amount": "The amount of tokens to stake.",
                  "cliff": "The time interval to the first withdraw.",
                  "delegatee": "The address of the delegatee or 0x0 if there is none.",
                  "duration": "The staking duration.",
                  "intervalLength": "The length of each staking interval when cliff passed.",
                  "stakeFor": "The address to stake the tokens for or 0x0 if staking for oneself."
                }
              },
              "timestampToLockDate(uint256)": {
                "params": {
                  "timestamp": "The unlocking timestamp."
                },
                "return": "The actual unlocking date (might be up to 2 weeks shorter than intended)."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "unlockAllTokens()": {
                "details": "Last resort."
              },
              "weightedStakeByDate(address,uint256,uint256,uint256)": {
                "params": {
                  "blockNumber": "The block number, needed for checkpointing.",
                  "date": "The staking date to compute the power for.",
                  "startDate": "The date for which we need to know the power of the stake."
                }
              },
              "withdraw(uint96,uint256,address)": {
                "params": {
                  "amount": "The number of tokens to withdraw.",
                  "receiver": "The receiver of the tokens. If not specified, send to the msg.sender",
                  "until": "The date until which the tokens were staked."
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c0604052600a608081905269534f565374616b696e6760b01b60a09081526200002d9160029190620000ae565b506005805460ff19169055600d80546001600160a01b0316600360a01b179055600062000059620000a9565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000150565b335b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000f157805160ff191683800117855562000121565b8280016001018555821562000121579182015b828111156200012157825182559160200191906001019062000104565b506200012f92915062000133565b5090565b620000ab91905b808211156200012f57600081556001016200013a565b61517980620001606000396000f3fe608060405234801561001057600080fd5b50600436106103a35760003560e01c8063836eebee116101e9578063b4b5ea571161010f578063db27ec18116100ad578063e97ffacb1161007c578063e97ffacb14610cd5578063eefb8c4714610d07578063f09cfc6414610d2a578063f2fde38b14610d4d576103a3565b8063db27ec1814610c2b578063dfb267c214610c57578063e63a562e14610c80578063e7a324dc14610ccd576103a3565b8063cf7b684a116100e9578063cf7b684a14610b99578063d27569e714610bcb578063d5c3846414610bd3578063dab6ca4414610bf0576103a3565b8063b4b5ea5714610b45578063b8a9873214610b6b578063bf626ec114610b91576103a3565b806396a590c111610187578063a58848c511610156578063a58848c514610b07578063adae900214610b0f578063ae81dfe414610b35578063b1724b4614610b3d576103a3565b806396a590c114610a615780639929e88614610ab35780639a377b8214610abb578063a377f24414610ae1576103a3565b80638f32d59b116101c35780638f32d59b1461096a5780638f4ffcb1146109725780639436e7d4146109ff57806394c2ce5814610a35576103a3565b8063836eebee146108f85780638da5cb5b1461092a5780638dae1b1614610932576103a3565b8063450b0601116102ce57806368cefccc1161026c57806372ec97951161023b57806372ec9795146107bb5780637ba6f458146107d85780637ecebe0014610897578063800b64ca146108bd576103a3565b806368cefccc146106d75780636b6fde0e14610737578063704802751461076f57806370a0823114610795576103a3565b80635419675f116102a85780635419675f1461067e5780635e0be60714610686578063626ee2d91461068e57806362cf8a08146106b4576103a3565b8063450b06011461060a5780634b2fea1e146106305780635004b6e414610676576103a3565b80631785f53c1161034657806327dd1b001161031557806327dd1b001461055857806337e6b1c1146105845780633827fca5146105b6578063429b62e5146105e4576103a3565b80631785f53c146104be57806320606b70146104e45780632522d7ba146104ec57806325629ec014610515576103a3565b806307392cc01161038257806307392cc0146104145780630c09ddfd14610445578063104932cf1461049257806317748adc1461049a576103a3565b8062073f99146103a8578063026e402b146103c257806303a18fa3146103f0575b600080fd5b6103b0610d73565b60408051918252519081900360200190f35b6103ee600480360360408110156103d857600080fd5b506001600160a01b038135169060200135610d79565b005b6103f8610d93565b604080516001600160a01b039092168252519081900360200190f35b6104316004803603602081101561042a57600080fd5b5035610da2565b604080519115158252519081900360200190f35b6103ee600480360360a081101561045b57600080fd5b506001600160a01b0381358116916001600160601b0360208201351691604082013591606081013582169160809091013516610db7565b6103f8610e10565b6104a2610e1f565b604080516001600160601b039092168252519081900360200190f35b6103ee600480360360208110156104d457600080fd5b50356001600160a01b0316610e24565b6103b0610ec4565b6104a26004803603604081101561050257600080fd5b5063ffffffff8135169060200135610edf565b6103ee6004803603608081101561052b57600080fd5b506001600160601b03813516906020810135906001600160a01b0360408201358116916060013516610f45565b6103f86004803603604081101561056e57600080fd5b506001600160a01b038135169060200135610f5a565b6104a26004803603606081101561059a57600080fd5b506001600160a01b038135169060208101359060400135610f80565b6103ee600480360360408110156105cc57600080fd5b506001600160a01b0381358116916020013516610ff8565b610431600480360360208110156105fa57600080fd5b50356001600160a01b0316611135565b6103ee6004803603602081101561062057600080fd5b50356001600160a01b031661114a565b6103ee600480360360c081101561064657600080fd5b508035906020810135906040810135906060810135906001600160a01b03608082013581169160a001351661120f565b6103f86112ae565b6103ee6112bd565b6103ee61130b565b6103ee600480360360208110156106a457600080fd5b50356001600160a01b0316611409565b6104a2600480360360408110156106ca57600080fd5b50803590602001356114b8565b61070f600480360360608110156106ed57600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff16611631565b6040805163ffffffff90931683526001600160601b0390911660208301528051918290030190f35b61070f6004803603606081101561074d57600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff1661166c565b6103ee6004803603602081101561078557600080fd5b50356001600160a01b03166116a7565b6104a2600480360360208110156107ab57600080fd5b50356001600160a01b031661174a565b6103b0600480360360208110156107d157600080fd5b50356117b9565b6107fe600480360360208110156107ee57600080fd5b50356001600160a01b0316611823565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561084257818101518382015260200161082a565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610881578181015183820152602001610869565b5050505090500194505050505060405180910390f35b6103b0600480360360208110156108ad57600080fd5b50356001600160a01b031661195e565b6103ee600480360360608110156108d357600080fd5b5080356001600160601b031690602081013590604001356001600160a01b0316611970565b6104a26004803603606081101561090e57600080fd5b506001600160a01b0381351690602081013590604001356119e2565b6103f8611a3a565b6104a26004803603608081101561094857600080fd5b506001600160a01b038135169060208101359060408101359060600135611a49565b610431611acb565b6103ee6004803603608081101561098857600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b8111156109c157600080fd5b8201836020820111156109d357600080fd5b803590602001918460018302840111600160201b831117156109f457600080fd5b509092509050611aef565b610a1c60048036036020811015610a1557600080fd5b5035611dc1565b6040805163ffffffff9092168252519081900360200190f35b610a1c60048036036040811015610a4b57600080fd5b506001600160a01b038135169060200135611dd9565b610a8d60048036036040811015610a7757600080fd5b506001600160601b038135169060200135611dfc565b604080516001600160601b03938416815291909216602082015281519081900390910190f35b610431611e21565b6103ee60048036036020811015610ad157600080fd5b50356001600160a01b0316611e2a565b6103ee60048036036020811015610af757600080fd5b50356001600160a01b0316611edf565b6103f8611fa4565b61043160048036036020811015610b2557600080fd5b50356001600160a01b0316611fb3565b6103f8611fc8565b6103b0611fdc565b6104a260048036036020811015610b5b57600080fd5b50356001600160a01b0316611fe4565b6103ee60048036036020811015610b8157600080fd5b50356001600160601b0316611ffa565b6104a26120c9565b6104a260048036036060811015610baf57600080fd5b506001600160a01b0381351690602081013590604001356120df565b6104a261211c565b6104a260048036036020811015610be957600080fd5b5035612121565b6103ee60048036036060811015610c0657600080fd5b5080356001600160601b031690602081013590604001356001600160a01b031661217d565b610a1c60048036036040811015610c4157600080fd5b506001600160a01b038135169060200135612197565b61070f60048036036040811015610c6d57600080fd5b508035906020013563ffffffff166121ba565b6103ee600480360360e0811015610c9657600080fd5b506001600160a01b038135169060208101359060408101359060608101359060ff6080820135169060a08101359060c001356121ef565b6103b06124c5565b6104a260048036036060811015610ceb57600080fd5b506001600160a01b0381351690602081013590604001356124e0565b6103ee60048036036040811015610d1d57600080fd5b5080359060200135612748565b6104a260048036036040811015610d4057600080fd5b5080359060200135612930565b6103ee60048036036020811015610d6357600080fd5b50356001600160a01b0316612b28565b60015481565b610d84338383612b7c565b610d8f338383612c2e565b5050565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b333014610dfa576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610e0985858585856000612d5b565b5050505050565b6011546001600160a01b031681565b600981565b610e2c611acb565b610e6c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b604051806043614d4182396043019050604051809103902081565b600080610eeb836117b9565b905063059fa6008101815b818111610f3c57610f3084610f1283868a63ffffffff16612f77565b6040518060800160405280605581526020016149b060559139612fdd565b93506212750001610ef6565b50505092915050565b610f5433858585856000612d5b565b50505050565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b600080610f8c836117b9565b905063059fa6008101815b818111610fee576000610fac8883868a611a49565b90506001600160601b03811615610fe357610fe085826040518060800160405280604c8152602001614e7d604c9139612fdd565b94505b506212750001610f97565b5050509392505050565b611000611acb565b8061101a5750336000908152600f602052604090205460ff165b61105a576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038083166000818152600e6020526040808220805460ff191660011790558051633c7925e360e11b815293851660048501525191926378f24bc6926024808301939282900301818387803b1580156110b857600080fd5b505af11580156110cc573d6000803e3d6000fd5b5050506001600160a01b038084166000818152600e6020908152604091829020805460ff1916905581519283529285169282019290925281517f2366e0b6b1af17c0ceed50685c570d519cae11e7faaf007bbe667e94a5ee3cd593509081900390910190a15050565b600f6020526000908152604090205460ff1681565b611152611acb565b611192576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166111ed576040805162461bcd60e51b815260206004820181905260248201527f76657374696e67207265676973747279206164647265737320696e76616c6964604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600061121c8642016117b9565b905063059fa6008511156112325763059fa60094505b600061123f8642016117b9565b90506000858383038161124e57fe5b0460010190506000818a8161125f57fe5b0490506001821061128057611280336001840383028c038689896001612d5b565b8387015b8381116112a15761129a3383838a8a6001612d5b565b8701611284565b5050505050505050505050565b6012546001600160a01b031681565b60055461010090046001600160a01b03166113095760405162461bcd60e51b81526004018080602001828103825260248152602001806148866024913960400191505060405180910390fd5b565b611313611acb565b611353576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6005805460ff19166001179055600354604080516370a0823160e01b815230600482015290517fd8cc4e8d808fe950b07bfffcd83eebf1190cd35ea77fe0c8a7d75a6e9b90e5c1926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156113ca57600080fd5b505afa1580156113de573d6000803e3d6000fd5b505050506040513d60208110156113f457600080fd5b505160408051918252519081900360200190a1565b611411611acb565b611451576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166114965760405162461bcd60e51b815260040180806020018281038252602181526020018061500d6021913960400191505060405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000818310156114f95760405162461bcd60e51b815260040180806020018281038252604c815260200180614cc1604c913960600191505060405180910390fd5b81830363059fa60081111561153f5760405162461bcd60e51b815260040180806020018281038252604d815260200180614d84604d913960600191505060405180910390fd5b6000620151808263059fa600036001600160601b03168161155c57fe5b049050611628600a621232106001600160601b03166115dc600a6009026115be621232108788026040518060400160405280601f81526020017f756e646572666c6f77206f6e207765696768742063616c63756c6174696f6e0081525061307b565b6040518060600160405280602d8152602001614b4b602d91396130e8565b6001600160601b0316816115ec57fe5b046040518060400160405280601e81526020017f6f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e0000815250612fdd565b95945050505050565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b6116af611acb565b6116ef576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6001546000905b63059fa600420181116117b3576117a78261176c8584613174565b6040518060400160405280601c81526020017f5374616b696e673a3a62616c616e63654f663a206f766572666c6f7700000000815250612fdd565b91506212750001611751565b50919050565b60006001548210156117fc5760405162461bcd60e51b815260040180806020018281038252604d815260200180614ad1604d913960600191505060405180910390fd5b60006212750060015484038161180e57fe5b04905060015462127500820201915050919050565b606080600061183763059fa60042016117b9565b60015490915060009062127500015b8281116118795760006118598783613174565b6001600160601b0316111561186f576001909101905b6212750001611846565b50806040519080825280602002602001820160405280156118a4578160200160208202803883390190505b509350806040519080825280602002602001820160405280156118d1578160200160208202803883390190505b5060015490935060009062127500015b8381116119555760006118f48883613174565b90506001600160601b0381161561194a578187848151811061191257fe5b6020026020010181815250508086848151811061192b57fe5b6001600160601b03909216602092830291909101909101526001909201915b5062127500016118e1565b50505050915091565b600c6020526000908152604090205481565b336000908152600e602052604090205460ff166119c3576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6119d083838360016131d5565b6119dd8383836001613521565b505050565b6000806119ee836117b9565b905063059fa6008101815b818111610fee57611a2e84611a108984878b613583565b6040518060800160405280604a8152602001614c77604a9139612fdd565b935062127500016119f9565b6000546001600160a01b031690565b600080611a578686856135eb565b90506001600160601b03811615611abd576000611a7486866114b8565b9050600a6001600160601b0316611aa483836040518060600160405280603d8152602001614b78603d91396130e8565b6001600160601b031681611ab457fe5b04925050611ac2565b600091505b50949350505050565b600080546001600160a01b0316611ae061385f565b6001600160a01b031614905090565b611af7613863565b6001600160a01b0316336001600160a01b031614611b4b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b336001600160a01b03841614611b97576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006060611ba3613872565b90506000611be685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138ca92505050565b905060005b8251811015611c3457828181518110611c0057fe5b60200260200101516001600160e01b031916826001600160e01b0319161415611c2c5760019350611c34565b600101611beb565b5082611c7f576040805162461bcd60e51b81526020600482015260156024820152741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b604482015290519081900360640190fd5b60405160006020820181815290918291829189918991603c018383808284378083019250505093505050506040516020818303038152906040528060200190516060811015611ccd57600080fd5b50602081015160409091015190925090506001600160a01b03808316908b1614611d30576040805162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b888114611d76576040805162461bcd60e51b815260206004820152600f60248201526e0c2dadeeadce840dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b611db587878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138d192505050565b50505050505050505050565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b600080611e098484613a3a565b6000611e158585613ae5565b94859003959350505050565b60055460ff1681565b611e32611acb565b611e72576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116611eb75760405162461bcd60e51b8152600401808060200182810382526029815260200180614f276029913960400191505060405180910390fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b611ee7611acb565b611f27576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116611f82576040805162461bcd60e51b815260206004820152601c60248201527f626c6f636b206d6f636b7570206164647265737320696e76616c696400000000604482015290519081900360640190fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b6000611ff48260014303426119e2565b92915050565b612002611acb565b612042576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160601b038116600111801590612066575060096001600160601b03821611155b6120a15760405162461bcd60e51b815260040180806020018281038252602d815260200180614b1e602d913960400191505060405180910390fd5b600d80546001600160601b03909216600160a01b026001600160a01b03909216919091179055565b600d54600160a01b90046001600160601b031681565b6000806120ed8585856135eb565b90506001600160601b0381161580156121095750612109613b30565b15612112575060015b90505b9392505050565b600a81565b60008181526007602052604081205463ffffffff1680612142576000612115565b6000838152600660209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03169392505050565b61218a83838360006131d5565b6119dd8383836000613521565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b60006040518080614d416043913960430190506040518091039020600260405180828054600181600116156101000203166002900480156122675780601f10612245576101008083540402835291820191612267565b820191906000526020600020905b815481529060010190602001808311612253575b5050915050604051809103902061227c613bac565b3060405160200180858152602001848152602001838152602001826001600160a01b03166001600160a01b0316815260200194505050505060405160208183030381529060405280519060200120905060006040518080614f50604b91396040805191829003604b0182206020808401919091526001600160a01b038d1683830152606083018c9052608083018b905260a08084018b90528251808503909101815260c08401835280519082012061190160f01b60e085015260e28401879052610102808501829052835180860390910181526101228501808552815191840191909120600091829052610142860180865281905260ff8c1661016287015261018286018b90526101a286018a9052935191965092945091926001926101c28083019392601f198301929081900390910190855afa1580156123c2573d6000803e3d6000fd5b5050506020604051035190506123d781613bb0565b6124125760405162461bcd60e51b8152600401808060200182810382526029815260200180614aa86029913960400191505060405180910390fd5b6001600160a01b0381166000908152600c6020526040902080546001810190915589146124705760405162461bcd60e51b81526004018080602001828103825260258152602001806151206025913960400191505060405180910390fd5b874211156124af5760405162461bcd60e51b815260040180806020018281038252602981526020018061485d6029913960400191505060405180910390fd5b6124ba818c8c612b7c565b6112a1818c8c612c2e565b60405180604b614f508239604b019050604051809103902081565b60006124ea613be9565b82106125275760405162461bcd60e51b81526004018080602001828103825260448152602001806150dc6044913960600191505060405180910390fd5b6001600160a01b038416600090815260096020908152604080832086845290915290205463ffffffff1680612560576000915050612115565b6001600160a01b0385166000908152600860209081526040808320878452825280832063ffffffff6000198601811685529252909120541683106125ec576001600160a01b038516600090815260086020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050612115565b6001600160a01b0385166000908152600860209081526040808320878452825280832083805290915290205463ffffffff1683101561262f576000915050612115565b600060001982015b8163ffffffff168163ffffffff1611156126fa57600282820363ffffffff16048103612661614845565b506001600160a01b03881660009081526008602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b031691810191909152908714156126d5576020015194506121159350505050565b805163ffffffff168711156126ec578193506126f3565b6001820392505b5050612637565b506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b612751816117b9565b9050808211156127925760405162461bcd60e51b81526004018080602001828103825260428152602001806148aa6042913960600191505060405180910390fd5b60006127a363059fa60042016117b9565b9050808211156127b1578091505b60006127c13385600143036135eb565b90506000816001600160601b03161161280b5760405162461bcd60e51b815260040180806020018281038252604b815260200180614bf8604b913960600191505060405180910390fd5b612816338583613c2e565b612821338483613cbf565b61282b8482613d42565b6128358382613dba565b336000908152600460209081526040808320878452909152808220548583529120546001600160a01b0391821691168061289f5750336000908152600460209081526040808320878452909152902080546001600160a01b0319166001600160a01b038316179055805b336000908152600460209081526040808320898452909152902080546001600160a01b03191690556128d2828785613e25565b6128dd818685613ec2565b60408051878152602081018790526001600160601b03851681830152905133917f809d79c94c86576d61afef75495b8df415224bf885310fed7ea315039f8c5b4c919081900360600190a2505050505050565b600061293a613be9565b82106129775760405162461bcd60e51b815260040180806020018281038252603f81526020018061502e603f913960400191505060405180910390fd5b60008381526007602052604090205463ffffffff168061299b576000915050611ff4565b600084815260066020908152604080832063ffffffff600019860181168552925290912054168310612a035760008481526006602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050611ff4565b600084815260066020908152604080832083805290915290205463ffffffff16831015612a34576000915050611ff4565b600060001982015b8163ffffffff168163ffffffff161115612aed57600282820363ffffffff16048103612a66614845565b50600087815260066020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415612ac857602001519450611ff49350505050565b805163ffffffff16871115612adf57819350612ae6565b6001820392505b5050612a3c565b50600085815260066020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b612b30611acb565b612b70576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b612b7981613f45565b50565b6001600160a01b03808416600090815260046020908152604080832085845290915281205490911690612baf8584613174565b6001600160a01b03868116600081815260046020908152604080832089845282529182902080546001600160a01b0319168a86169081179091558251898152925195965094938716937fb846dc53d3621f480d692e73f4473156d20f23ff6b2c8237b7130b883226cca99281900390910190a4610e0982858386613fe5565b612c36613b30565b156119dd576000612c50826212750063ffffffff61404916565b6001600160a01b0380861660009081526004602090815260408083208584529091529020549192509081169084168114612c8f57612c8f858584612b7c565b6000336001600160a01b031663c24a0f8b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505050506040513d6020811015612cf657600080fd5b50519050612d0d846224ea0063ffffffff61404916565b925080831415612d53576001600160a01b0380871660009081526004602090815260408083208784529091529020548116925085168214612d5357612d53868685612b7c565b505050505050565b6000856001600160601b031611612da35760405162461bcd60e51b8152600401808060200182810382526043815260200180614bb56043913960600191505060405180910390fd5b80612db457612db1846117b9565b93505b428411612df25760405162461bcd60e51b8152600401808060200182810382526036815260200180614ec96036913960400191505060405180910390fd5b6001600160a01b038316612e04578592505b6001600160a01b038216612e16578291505b80612e3c576000612e2c63059fa60042016117b9565b905080851115612e3a578094505b505b6000612e488486613174565b9050612e56878786886140a3565b6001600160a01b03808516600090815260046020908152604080832089845290915290205481169084168114612f0d576001600160a01b0385811660009081526004602090815260408083208a8452909152902080546001600160a01b031916918616919091179055612eca818784613e25565b612f0a82886040518060400160405280602081526020017f5374616b696e673a3a7374616b653a2062616c616e6365206f766572666c6f77815250612fdd565b96505b612f18848789613ec2565b836001600160a01b0316816001600160a01b0316866001600160a01b03167fb846dc53d3621f480d692e73f4473156d20f23ff6b2c8237b7130b883226cca9896040518082815260200191505060405180910390a45050505050505050565b600080612f8485856114b8565b90506000612f928685612930565b9050600a6001600160601b0316612fc282846040518060600160405280603b8152602001614e42603b91396130e8565b6001600160601b031681612fd257fe5b049695505050505050565b6000838301826001600160601b038087169083161015611ac25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613040578181015183820152602001613028565b50505050905090810190601f16801561306d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000836001600160601b0316836001600160601b0316111582906130e05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613040578181015183820152602001613028565b505050900390565b60006001600160601b03841661310057506000612115565b8383026001600160601b03808516908087169083168161311c57fe5b046001600160601b0316148390611ac25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613040578181015183820152602001613028565b6001600160a01b0382166000818152600a602090815260408083208584528252808320938352600b825280832085845282528083205460001963ffffffff9182160116835292905220546001600160601b03600160201b9091041692915050565b836001600160601b031660011480156131f157506131f1613b30565b156131fb57610f54565b613204836141e8565b92506132108484613a3a565b6001600160a01b038216613222573391505b61322c8385613d42565b613237338486613c2e565b336000908152600460209081526040808320868452909152902054613266906001600160a01b03168486613e25565b8242108015613278575060055460ff16155b8015613282575080155b156133f85760006132938585613ae5565b948590039490506001600160601b038116156133f657600d546001600160a01b03166132f05760405162461bcd60e51b8152600401808060200182810382526030815260200180614a786030913960400191505060405180910390fd5b600354600d546040805163095ea7b360e01b81526001600160a01b0392831660048201526001600160601b03851660248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561335157600080fd5b505af1158015613365573d6000803e3d6000fd5b505050506040513d602081101561337b57600080fd5b5050600d546003546040805163abe979e160e01b81526001600160a01b0392831660048201526001600160601b03851660248201529051919092169163abe979e191604480830192600092919082900301818387803b1580156133dd57600080fd5b505af11580156133f1573d6000803e3d6000fd5b505050505b505b6003546040805163a9059cbb60e01b81526001600160a01b0385811660048301526001600160601b03881660248301529151600093929092169163a9059cbb9160448082019260209290919082900301818787803b15801561345957600080fd5b505af115801561346d573d6000803e3d6000fd5b505050506040513d602081101561348357600080fd5b50519050806134c35760405162461bcd60e51b8152600401808060200182810382526028815260200180614a056028913960400191505060405180910390fd5b604080516001600160601b0387168152602081018690528315158183015290516001600160a01b0385169133917f667b6c8ed8622dae7927a8b0837455098e32037a0181f9a2e21b9b72fead6cc79181900360600190a35050505050565b613529613b30565b15610f54576000613543846212750063ffffffff61404916565b905081806135515750804210155b15610e095760006135663383600143036135eb565b90506001600160601b03811615612d5357612d53818386866131d5565b60008061359085856114b8565b9050600061359f8787866124e0565b9050600a6001600160601b03166135cf82846040518060800160405280604781526020016148ec604791396130e8565b6001600160601b0316816135df57fe5b04979650505050505050565b60006135f5613be9565b82106136325760405162461bcd60e51b815260040180806020018281038252603d815260200180614f9b603d913960400191505060405180910390fd5b61363b836141e8565b6001600160a01b0385166000908152600b6020908152604080832084845290915290205490935063ffffffff1680613677576000915050612115565b6001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff600019860181168552925290912054168310613703576001600160a01b0385166000908152600a6020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050612115565b6001600160a01b0385166000908152600a60209081526040808320878452825280832083805290915290205463ffffffff16831015613746576000915050612115565b600060001982015b8163ffffffff168163ffffffff16111561381157600282820363ffffffff16048103613778614845565b506001600160a01b0388166000908152600a602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b031691810191909152908714156137ec576020015194506121159350505050565b805163ffffffff168711156138035781935061380a565b6001820392505b505061374e565b506001600160a01b0386166000908152600a60209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b3390565b6003546001600160a01b031690565b60408051600180825281830190925260609182919060208083019080388339019050509050630c09ddfd60e01b816000815181106138ac57fe5b6001600160e01b031990921660209283029190910190910152905090565b6020015190565b60006060306001600160a01b0316836040518082805190602001908083835b6020831061390f5780518252601f1990920191602091820191016138f0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613971576040519150601f19603f3d011682016040523d82523d6000602084013e613976565b606091505b5091509150816119dd5760448151116139c05760405162461bcd60e51b81526004018080602001828103825260308152602001806149806030913960400191505060405180910390fd5b6139f36040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b8152508261420d565b60405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613040578181015183820152602001613028565b6000826001600160601b031611613a825760405162461bcd60e51b815260040180806020018281038252604d815260200180614933604d913960600191505060405180910390fd5b6000613a923383600143036135eb565b9050806001600160601b0316836001600160601b031611156119dd5760405162461bcd60e51b8152600401808060200182810382526025815260200180614a536025913960400191505060405180910390fd5b600080613af1426117b9565b90506000613aff84836114b8565b600d54600160a01b90046001600160601b03908116919091029150606490600a878402821604160495945050505050565b6011546040805163dbb049d160e01b815233600482015290516000926001600160a01b03169163dbb049d1916024808301926020929190829003018186803b158015613b7b57600080fd5b505afa158015613b8f573d6000803e3d6000fd5b505050506040513d6020811015613ba557600080fd5b5051905090565b4690565b600073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b03831614801590611ff45750506001600160a01b0316151590565b601254604080516307f6c6f160e41b815290516000926001600160a01b031691637f6c6f10916004808301926020929190829003018186803b158015613b7b57600080fd5b6001600160a01b0383166000818152600b60209081526040808320868452825280832054938352600a8252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526034808352600160201b9091046001600160601b03169392613cb19285928892614c439083013961307b565b9050612d5386868584614307565b6001600160a01b0383166000818152600b60209081526040808320868452825280832054938352600a8252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526033808352600160201b9091046001600160601b03169392613cb19285928892614e0f90830139612fdd565b6000828152600760209081526040808320546006835281842063ffffffff9182166000198101909216855283528184205482516060810190935260358084529194600160201b9091046001600160601b0316939092613dad92859288929190614fd89083013961307b565b9050610e09858483614487565b6000828152600760209081526040808320546006835281842063ffffffff9182166000198101909216855283528184205482516060810190935260348084529194600160201b9091046001600160601b0316939092613dad92859288929190614d0d90830139612fdd565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff94851660001981019095168452909152812054600160201b90046001600160601b0390811691908416821115613eb657613eb382856040518060600160405280603881526020016150a46038913961307b565b90505b612d53868685846145c5565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526037808352600160201b9091046001600160601b03169392613eb3928592889261506d90830139612fdd565b6001600160a01b038116613f8a5760405162461bcd60e51b8152600401808060200182810382526026815260200180614a2d6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b0316846001600160a01b03161415801561401057506000826001600160601b0316115b15610f54576001600160a01b0384161561402f5761402f848284613e25565b6001600160a01b03831615610f5457610f54838284613ec2565b600082820183811015612115576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600354604080516323b872dd60e01b81526001600160a01b0387811660048301523060248301526001600160601b0387166044830152915160009392909216916323b872dd9160648082019260209290919082900301818787803b15801561410a57600080fd5b505af115801561411e573d6000803e3d6000fd5b505050506040513d602081101561413457600080fd5b505190508061414257600080fd5b600061414e8484613174565b90506141738186604051806060016040528060288152602001614eff60289139612fdd565b905061417f8386613dba565b61418a848487613cbf565b604080516001600160601b0380881682526020820186905283168183015290516001600160a01b038616917f0fc5b1bac0416800b42a669229a346b6e5a15db3896339dbdc5fa376e1e4570a919081900360600190a2505050505050565b6000806141f4836117b9565b90508281146142065762127500810192505b5090919050565b6060808390506060839050606060448251845101036040519080825280601f01601f19166020018201604052801561424c576020820181803883390190505b509050806000805b85518110156142a55785818151811061426957fe5b602001015160f81c60f81b83838060010194508151811061428657fe5b60200101906001600160f81b031916908160001a905350600101614254565b5060445b84518110156142fa578481815181106142be57fe5b602001015160f81c60f81b8383806001019450815181106142db57fe5b60200101906001600160f81b031916908160001a9053506001016142a9565b5090979650505050505050565b600061432b436040518060600160405280603e8152602001614dd1603e91396147e8565b905060008363ffffffff1611801561437c57506001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff6000198801811685529252909120548282169116145b156143de576001600160a01b0385166000908152600a602090815260408083208784528252808320600019870163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b03851602179055610e09565b60408051808201825263ffffffff92831681526001600160601b0393841660208083019182526001600160a01b03989098166000818152600a8a528481208982528a5284812088871682528a52848120935184549351909716600160201b02640100000000600160801b031997871663ffffffff19948516179790971696909617909255908452600b875281842095845294909552939020805460019092019093169116179055565b60006144ab436040518060600160405280603e8152602001614dd1603e91396147e8565b905060008363ffffffff161180156144ea5750600084815260066020908152604080832063ffffffff6000198801811685529252909120548282169116145b1561453a576000848152600660209081526040808320600019870163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b03851602179055610f54565b60408051808201825263ffffffff92831681526001600160601b0393841660208083019182526000888152600682528481208887168252825284812093518454935163ffffffff1994851691881691909117640100000000600160801b031916600160201b919098160296909617909255958452600790529091208054909316600190920116179055565b60006145e9436040518060600160405280603e8152602001614dd1603e91396147e8565b6001600160a01b03861660009081526008602090815260408083208884528252808320600019880163ffffffff9081168552925290912054919250600160201b9091046001600160601b03169084161580159061467f57506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff6000198901811685529252909120548382169116145b156146e1576001600160a01b03861660009081526008602090815260408083208884528252808320600019880163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b0386160217905561478b565b60408051808201825263ffffffff80851682526001600160601b0380871660208085019182526001600160a01b038c166000818152600883528781208d825283528781208c871682528352878120965187549451909516600160201b02640100000000600160801b031995871663ffffffff19958616179590951694909417909555938252600984528482208a835290935292909220805460018801909316929091169190911790555b604080518681526001600160601b03808416602083015285168183015290516001600160a01b038816917fc7b38fb25352e6f351f57e2c922f84db5c97e09a6246bbe1d2eedfcdb01c4c62919081900360600190a2505050505050565b600081600160201b841061483d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613040578181015183820152602001613028565b509192915050565b60408051808201909152600080825260208201529056fe5374616b696e673a3a64656c656761746542795369673a207369676e617475726520657870697265647468657265206973206e6f206e6577207374616b696e6720636f6e7472616374207365745374616b696e673a3a657874656e645374616b696e674475726174696f6e3a2063616e6e6f742072656475636520746865207374616b696e67206475726174696f6e57656967687465645374616b696e673a3a5f746f74616c506f776572427944617465466f7244656c6567617465653a206d756c7469706c69636174696f6e206f766572666c6f775374616b696e673a3a77697468647261773a20616d6f756e74206f6620746f6b656e7320746f2062652077697468647261776e206e6565647320746f20626520626967676572207468616e203072656365697665417070726f76616c3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e57656967687465645374616b696e673a3a6765745072696f72546f74616c566f74696e67506f7765723a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e5374616b696e673a3a77697468647261773a20546f6b656e207472616e73666572206661696c65644f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735374616b696e673a3a77697468647261773a206e6f7420656e6f7567682062616c616e63655374616b696e673a3a77697468647261773a2046656553686172696e672061646472657373207761736e2774207365745374616b696e673a3a64656c656761746542795369673a20696e76616c6964207369676e617475726557656967687465645374616b696e673a3a74696d657374616d70546f4c6f636b446174653a2074696d657374616d70206c696573206265666f726520636f6e7472616374206372656174696f6e776569676874207363616c696e6720646f65736e27742062656c6f6e6720746f2072616e6765205b312c20395d6d756c7469706c69636174696f6e206f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e57656967687465645374616b696e673a3a77656967687465645374616b654279446174653a206d756c7469706c69636174696f6e206f766572666c6f775374616b696e673a3a7374616b653a20616d6f756e74206f6620746f6b656e7320746f207374616b65206e6565647320746f20626520626967676572207468616e20305374616b696e673a3a657874656e645374616b696e674475726174696f6e3a206e6f7468696e67207374616b656420756e74696c207468652070726576696f7573206c6f636b20646174655374616b696e673a3a5f6465637265617365557365725374616b653a207374616b656420616d6f756e7420756e646572666c6f7757656967687465645374616b696e673a3a6765745072696f72566f7465733a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e57656967687465645374616b696e673a3a636f6d707574655765696768744279446174653a2064617465206e6565647320746f20626520626967676572207468616e207374617274446174655374616b696e673a3a5f696e6372656173654461696c795374616b653a207374616b656420616d6f756e74206f766572666c6f77454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374295374616b696e673a3a636f6d707574655765696768744279446174653a72656d61696e696e672074696d652063616e277420626520626967676572207468616e206d6178206475726174696f6e5374616b696e673a3a5f77726974655374616b696e67436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735374616b696e673a3a5f696e637265617365557365725374616b653a207374616b656420616d6f756e74206f766572666c6f7757656967687465645374616b696e673a3a5f746f74616c506f7765724279446174653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f7257656967687465645374616b653a206f766572666c6f77206f6e20746f74616c2077656967687420636f6d7075746174696f6e5374616b696e673a3a74696d657374616d70546f4c6f636b446174653a207374616b696e6720706572696f6420746f6f2073686f72745374616b696e673a3a696e6372656173655374616b653a2062616c616e6365206f766572666c6f7763616e277420726573657420746865206e6577207374616b696e6720636f6e747261637420746f203044656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e74323536206578706972792957656967687465645374616b696e673a3a6765745072696f72557365725374616b65416e64446174653a206e6f74207965742064657465726d696e65645374616b696e673a3a5f64656372656173654461696c795374616b653a207374616b656420616d6f756e7420756e646572666c6f7746656553686172696e6720616464726573732073686f756c646e2774206265203057656967687465645374616b696e673a3a6765745072696f72546f74616c5374616b6573466f72446174653a206e6f74207965742064657465726d696e65645374616b696e673a3a5f696e63726561736544656c65676174655374616b653a207374616b656420616d6f756e74206f766572666c6f775374616b696e673a3a5f646563726561736544656c65676174655374616b653a207374616b656420616d6f756e7420756e646572666c6f7757656967687465645374616b696e673a3a6765745072696f725374616b65427944617465466f7244656c6567617465653a206e6f74207965742064657465726d696e65645374616b696e673a3a64656c656761746542795369673a20696e76616c6964206e6f6e6365a265627a7a72315820dbc89f0cb5d2d9ede59edac39673220839052dd43873119e856b1c102ff56e6864736f6c63430005110032",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH10 0x534F565374616B696E67 PUSH1 0xB0 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH3 0x2D SWAP2 PUSH1 0x2 SWAP2 SWAP1 PUSH3 0xAE JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH1 0x0 PUSH3 0x59 PUSH3 0xA9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x150 JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xF1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x121 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x121 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x121 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x104 JUMP JUMPDEST POP PUSH3 0x12F SWAP3 SWAP2 POP PUSH3 0x133 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0xAB SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x12F JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x13A JUMP JUMPDEST PUSH2 0x5179 DUP1 PUSH3 0x160 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3A3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x836EEBEE GT PUSH2 0x1E9 JUMPI DUP1 PUSH4 0xB4B5EA57 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xDB27EC18 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xE97FFACB GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xE97FFACB EQ PUSH2 0xCD5 JUMPI DUP1 PUSH4 0xEEFB8C47 EQ PUSH2 0xD07 JUMPI DUP1 PUSH4 0xF09CFC64 EQ PUSH2 0xD2A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xD4D JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0xC2B JUMPI DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0xC57 JUMPI DUP1 PUSH4 0xE63A562E EQ PUSH2 0xC80 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0xCCD JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0xCF7B684A GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xCF7B684A EQ PUSH2 0xB99 JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0xBCB JUMPI DUP1 PUSH4 0xD5C38464 EQ PUSH2 0xBD3 JUMPI DUP1 PUSH4 0xDAB6CA44 EQ PUSH2 0xBF0 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0xB45 JUMPI DUP1 PUSH4 0xB8A98732 EQ PUSH2 0xB6B JUMPI DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0xB91 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x96A590C1 GT PUSH2 0x187 JUMPI DUP1 PUSH4 0xA58848C5 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0xB07 JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0xB0F JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0xB35 JUMPI DUP1 PUSH4 0xB1724B46 EQ PUSH2 0xB3D JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x96A590C1 EQ PUSH2 0xA61 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0xAB3 JUMPI DUP1 PUSH4 0x9A377B82 EQ PUSH2 0xABB JUMPI DUP1 PUSH4 0xA377F244 EQ PUSH2 0xAE1 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x96A JUMPI DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0x972 JUMPI DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0x9FF JUMPI DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0xA35 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x836EEBEE EQ PUSH2 0x8F8 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x92A JUMPI DUP1 PUSH4 0x8DAE1B16 EQ PUSH2 0x932 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x450B0601 GT PUSH2 0x2CE JUMPI DUP1 PUSH4 0x68CEFCCC GT PUSH2 0x26C JUMPI DUP1 PUSH4 0x72EC9795 GT PUSH2 0x23B JUMPI DUP1 PUSH4 0x72EC9795 EQ PUSH2 0x7BB JUMPI DUP1 PUSH4 0x7BA6F458 EQ PUSH2 0x7D8 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x897 JUMPI DUP1 PUSH4 0x800B64CA EQ PUSH2 0x8BD JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x6D7 JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x76F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x795 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x5419675F GT PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x5419675F EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0x5E0BE607 EQ PUSH2 0x686 JUMPI DUP1 PUSH4 0x626EE2D9 EQ PUSH2 0x68E JUMPI DUP1 PUSH4 0x62CF8A08 EQ PUSH2 0x6B4 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x450B0601 EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0x4B2FEA1E EQ PUSH2 0x630 JUMPI DUP1 PUSH4 0x5004B6E4 EQ PUSH2 0x676 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x346 JUMPI DUP1 PUSH4 0x27DD1B00 GT PUSH2 0x315 JUMPI DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0x37E6B1C1 EQ PUSH2 0x584 JUMPI DUP1 PUSH4 0x3827FCA5 EQ PUSH2 0x5B6 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x5E4 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x1785F53C EQ PUSH2 0x4BE JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0x2522D7BA EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x25629EC0 EQ PUSH2 0x515 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x7392CC0 GT PUSH2 0x382 JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x414 JUMPI DUP1 PUSH4 0xC09DDFD EQ PUSH2 0x445 JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0x17748ADC EQ PUSH2 0x49A JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x3A8 JUMPI DUP1 PUSH4 0x26E402B EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x3F0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B0 PUSH2 0xD73 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD79 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3F8 PUSH2 0xD93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x431 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x80 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xDB7 JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0xE10 JUMP JUMPDEST PUSH2 0x4A2 PUSH2 0xE1F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE24 JUMP JUMPDEST PUSH2 0x3B0 PUSH2 0xEC4 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0xFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xEDF JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0xF45 JUMP JUMPDEST PUSH2 0x3F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF5A JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x59A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF80 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xFF8 JUMP JUMPDEST PUSH2 0x431 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1135 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x114A JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x80 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0xA0 ADD CALLDATALOAD AND PUSH2 0x120F JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x12AE JUMP JUMPDEST PUSH2 0x3EE PUSH2 0x12BD JUMP JUMPDEST PUSH2 0x3EE PUSH2 0x130B JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1409 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14B8 JUMP JUMPDEST PUSH2 0x70F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x1631 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x70F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x166C JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x785 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16A7 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x174A JUMP JUMPDEST PUSH2 0x3B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17B9 JUMP JUMPDEST PUSH2 0x7FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1823 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x842 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x82A JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x881 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x869 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x195E JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1970 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x90E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x19E2 JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x1A3A JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1A49 JUMP JUMPDEST PUSH2 0x431 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x988 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x9C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x9F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1AEF JUMP JUMPDEST PUSH2 0xA1C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1DC1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA1C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1DD9 JUMP JUMPDEST PUSH2 0xA8D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1DFC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 RETURN JUMPDEST PUSH2 0x431 PUSH2 0x1E21 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E2A JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EDF JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x1FA4 JUMP JUMPDEST PUSH2 0x431 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1FB3 JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x1FC8 JUMP JUMPDEST PUSH2 0x3B0 PUSH2 0x1FDC JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1FE4 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1FFA JUMP JUMPDEST PUSH2 0x4A2 PUSH2 0x20C9 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x20DF JUMP JUMPDEST PUSH2 0x4A2 PUSH2 0x211C JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2121 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x217D JUMP JUMPDEST PUSH2 0xA1C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2197 JUMP JUMPDEST PUSH2 0x70F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x21BA JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x21EF JUMP JUMPDEST PUSH2 0x3B0 PUSH2 0x24C5 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x24E0 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2748 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2930 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B28 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD84 CALLER DUP4 DUP4 PUSH2 0x2B7C JUMP JUMPDEST PUSH2 0xD8F CALLER DUP4 DUP4 PUSH2 0x2C2E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0xDFA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE09 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x2D5B JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0xE2C PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0xE6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x43 PUSH2 0x4D41 DUP3 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xEEB DUP4 PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0xF3C JUMPI PUSH2 0xF30 DUP5 PUSH2 0xF12 DUP4 DUP7 DUP11 PUSH4 0xFFFFFFFF AND PUSH2 0x2F77 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x55 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x49B0 PUSH1 0x55 SWAP2 CODECOPY PUSH2 0x2FDD JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0xEF6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xF54 CALLER DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x2D5B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF8C DUP4 PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0xFEE JUMPI PUSH1 0x0 PUSH2 0xFAC DUP9 DUP4 DUP7 DUP11 PUSH2 0x1A49 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0xFE3 JUMPI PUSH2 0xFE0 DUP6 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4E7D PUSH1 0x4C SWAP2 CODECOPY PUSH2 0x2FDD JUMP JUMPDEST SWAP5 POP JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0xF97 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1000 PUSH2 0x1ACB JUMP JUMPDEST DUP1 PUSH2 0x101A JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x105A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD PUSH4 0x3C7925E3 PUSH1 0xE1 SHL DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x4 DUP6 ADD MSTORE MLOAD SWAP2 SWAP3 PUSH4 0x78F24BC6 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP3 DUP6 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 MLOAD PUSH32 0x2366E0B6B1AF17C0CEED50685C570D519CAE11E7FAAF007BBE667E94A5EE3CD5 SWAP4 POP SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1152 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x1192 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x11ED JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67207265676973747279206164647265737320696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x11 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121C DUP7 TIMESTAMP ADD PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP6 GT ISZERO PUSH2 0x1232 JUMPI PUSH4 0x59FA600 SWAP5 POP JUMPDEST PUSH1 0x0 PUSH2 0x123F DUP7 TIMESTAMP ADD PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP4 SUB DUP2 PUSH2 0x124E JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 DUP11 DUP2 PUSH2 0x125F JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 DUP3 LT PUSH2 0x1280 JUMPI PUSH2 0x1280 CALLER PUSH1 0x1 DUP5 SUB DUP4 MUL DUP13 SUB DUP7 DUP10 DUP10 PUSH1 0x1 PUSH2 0x2D5B JUMP JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP4 DUP2 GT PUSH2 0x12A1 JUMPI PUSH2 0x129A CALLER DUP4 DUP4 DUP11 DUP11 PUSH1 0x1 PUSH2 0x2D5B JUMP JUMPDEST DUP8 ADD PUSH2 0x1284 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x12 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1309 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4886 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x1313 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x1353 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xD8CC4E8D808FE950B07BFFFCD83EEBF1190CD35EA77FE0C8A7D75A6E9B90E5C1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1411 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x1451 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1496 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x500D PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT ISZERO PUSH2 0x14F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4CC1 PUSH1 0x4C SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP4 SUB PUSH4 0x59FA600 DUP2 GT ISZERO PUSH2 0x153F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4D84 PUSH1 0x4D SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x15180 DUP3 PUSH4 0x59FA600 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x155C JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1628 PUSH1 0xA PUSH3 0x123210 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x15DC PUSH1 0xA PUSH1 0x9 MUL PUSH2 0x15BE PUSH3 0x123210 DUP8 DUP9 MUL PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x756E646572666C6F77206F6E207765696768742063616C63756C6174696F6E00 DUP2 MSTORE POP PUSH2 0x307B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4B4B PUSH1 0x2D SWAP2 CODECOPY PUSH2 0x30E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x15EC JUMPI INVALID JUMPDEST DIV PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6F766572666C6F77206F6E2077656967687420636F6D7075746174696F6E0000 DUP2 MSTORE POP PUSH2 0x2FDD JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH2 0x16AF PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x16EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 JUMPDEST PUSH4 0x59FA600 TIMESTAMP ADD DUP2 GT PUSH2 0x17B3 JUMPI PUSH2 0x17A7 DUP3 PUSH2 0x176C DUP6 DUP5 PUSH2 0x3174 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5374616B696E673A3A62616C616E63654F663A206F766572666C6F7700000000 DUP2 MSTORE POP PUSH2 0x2FDD JUMP JUMPDEST SWAP2 POP PUSH3 0x127500 ADD PUSH2 0x1751 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD DUP3 LT ISZERO PUSH2 0x17FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4AD1 PUSH1 0x4D SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x127500 PUSH1 0x1 SLOAD DUP5 SUB DUP2 PUSH2 0x180E JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 SLOAD PUSH3 0x127500 DUP3 MUL ADD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x1837 PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x17B9 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x127500 ADD JUMPDEST DUP3 DUP2 GT PUSH2 0x1879 JUMPI PUSH1 0x0 PUSH2 0x1859 DUP8 DUP4 PUSH2 0x3174 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO PUSH2 0x186F JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH3 0x127500 ADD PUSH2 0x1846 JUMP JUMPDEST POP DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x18A4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP4 POP DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x18D1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH1 0x0 SWAP1 PUSH3 0x127500 ADD JUMPDEST DUP4 DUP2 GT PUSH2 0x1955 JUMPI PUSH1 0x0 PUSH2 0x18F4 DUP9 DUP4 PUSH2 0x3174 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x194A JUMPI DUP2 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1912 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x192B JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0x18E1 JUMP JUMPDEST POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x19C3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x19D0 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x19DD DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x3521 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19EE DUP4 PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0xFEE JUMPI PUSH2 0x1A2E DUP5 PUSH2 0x1A10 DUP10 DUP5 DUP8 DUP12 PUSH2 0x3583 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4C77 PUSH1 0x4A SWAP2 CODECOPY PUSH2 0x2FDD JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x19F9 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A57 DUP7 DUP7 DUP6 PUSH2 0x35EB JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x1ABD JUMPI PUSH1 0x0 PUSH2 0x1A74 DUP7 DUP7 PUSH2 0x14B8 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1AA4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4B78 PUSH1 0x3D SWAP2 CODECOPY PUSH2 0x30E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x1AB4 JUMPI INVALID JUMPDEST DIV SWAP3 POP POP PUSH2 0x1AC2 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AE0 PUSH2 0x385F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1AF7 PUSH2 0x3863 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1B4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x1B97 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x1BA3 PUSH2 0x3872 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1BE6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x38CA SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1C34 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1C00 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0x1C2C JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0x1C34 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1BEB JUMP JUMPDEST POP DUP3 PUSH2 0x1C7F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE SWAP1 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP10 SWAP2 DUP10 SWAP2 PUSH1 0x3C ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1CCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0x1D30 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP9 DUP2 EQ PUSH2 0x1D76 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DB5 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x38D1 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E09 DUP5 DUP5 PUSH2 0x3A3A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E15 DUP6 DUP6 PUSH2 0x3AE5 JUMP JUMPDEST SWAP5 DUP6 SWAP1 SUB SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1E32 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x1E72 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1EB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4F27 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1EE7 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x1F27 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1F82 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626C6F636B206D6F636B7570206164647265737320696E76616C696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x12 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FF4 DUP3 PUSH1 0x1 NUMBER SUB TIMESTAMP PUSH2 0x19E2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2002 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x2042 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND PUSH1 0x1 GT DUP1 ISZERO SWAP1 PUSH2 0x2066 JUMPI POP PUSH1 0x9 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND GT ISZERO JUMPDEST PUSH2 0x20A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B1E PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x20ED DUP6 DUP6 DUP6 PUSH2 0x35EB JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO DUP1 ISZERO PUSH2 0x2109 JUMPI POP PUSH2 0x2109 PUSH2 0x3B30 JUMP JUMPDEST ISZERO PUSH2 0x2112 JUMPI POP PUSH1 0x1 JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x2142 JUMPI PUSH1 0x0 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP6 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x218A DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x19DD DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x3521 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH2 0x4D41 PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2267 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2245 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x2267 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2253 JUMPI JUMPDEST POP POP SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH2 0x227C PUSH2 0x3BAC JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH2 0x4F50 PUSH1 0x4B SWAP2 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x4B ADD DUP3 KECCAK256 PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP4 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD DUP13 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP1 DUP5 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP5 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0xE2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH2 0x102 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH2 0x122 DUP6 ADD DUP1 DUP6 MSTORE DUP2 MLOAD SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE PUSH2 0x142 DUP7 ADD DUP1 DUP7 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP13 AND PUSH2 0x162 DUP8 ADD MSTORE PUSH2 0x182 DUP7 ADD DUP12 SWAP1 MSTORE PUSH2 0x1A2 DUP7 ADD DUP11 SWAP1 MSTORE SWAP4 MLOAD SWAP2 SWAP7 POP SWAP3 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1C2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH2 0x23D7 DUP2 PUSH2 0x3BB0 JUMP JUMPDEST PUSH2 0x2412 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4AA8 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0x2470 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5120 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0x24AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x485D PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x24BA DUP2 DUP13 DUP13 PUSH2 0x2B7C JUMP JUMPDEST PUSH2 0x12A1 DUP2 DUP13 DUP13 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x4B PUSH2 0x4F50 DUP3 CODECOPY PUSH1 0x4B ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24EA PUSH2 0x3BE9 JUMP JUMPDEST DUP3 LT PUSH2 0x2527 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x44 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x50DC PUSH1 0x44 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x2560 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x25EC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x262F JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x26FA JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x2661 PUSH2 0x4845 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x26D5 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x2115 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x26EC JUMPI DUP2 SWAP4 POP PUSH2 0x26F3 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x2637 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2751 DUP2 PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2792 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x48AA PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x27A3 PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27B1 JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x27C1 CALLER DUP6 PUSH1 0x1 NUMBER SUB PUSH2 0x35EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x280B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4BF8 PUSH1 0x4B SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2816 CALLER DUP6 DUP4 PUSH2 0x3C2E JUMP JUMPDEST PUSH2 0x2821 CALLER DUP5 DUP4 PUSH2 0x3CBF JUMP JUMPDEST PUSH2 0x282B DUP5 DUP3 PUSH2 0x3D42 JUMP JUMPDEST PUSH2 0x2835 DUP4 DUP3 PUSH2 0x3DBA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 PUSH2 0x289F JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE DUP1 JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x28D2 DUP3 DUP8 DUP6 PUSH2 0x3E25 JUMP JUMPDEST PUSH2 0x28DD DUP2 DUP7 DUP6 PUSH2 0x3EC2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x809D79C94C86576D61AFEF75495B8DF415224BF885310FED7EA315039F8C5B4C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x293A PUSH2 0x3BE9 JUMP JUMPDEST DUP3 LT PUSH2 0x2977 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x502E PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x299B JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1FF4 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x2A03 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x1FF4 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x2A34 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1FF4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x2AED JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x2A66 PUSH2 0x4845 JUMP JUMPDEST POP PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x2AC8 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x1FF4 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x2ADF JUMPI DUP2 SWAP4 POP PUSH2 0x2AE6 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x2A3C JUMP JUMPDEST POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B30 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x2B70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2B79 DUP2 PUSH2 0x3F45 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND SWAP1 PUSH2 0x2BAF DUP6 DUP5 PUSH2 0x3174 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP11 DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP10 DUP2 MSTORE SWAP3 MLOAD SWAP6 SWAP7 POP SWAP5 SWAP4 DUP8 AND SWAP4 PUSH32 0xB846DC53D3621F480D692E73F4473156D20F23FF6B2C8237B7130B883226CCA9 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0xE09 DUP3 DUP6 DUP4 DUP7 PUSH2 0x3FE5 JUMP JUMPDEST PUSH2 0x2C36 PUSH2 0x3B30 JUMP JUMPDEST ISZERO PUSH2 0x19DD JUMPI PUSH1 0x0 PUSH2 0x2C50 DUP3 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x4049 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 AND SWAP1 DUP5 AND DUP2 EQ PUSH2 0x2C8F JUMPI PUSH2 0x2C8F DUP6 DUP6 DUP5 PUSH2 0x2B7C JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC24A0F8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CE0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2CF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x2D0D DUP5 PUSH3 0x24EA00 PUSH4 0xFFFFFFFF PUSH2 0x4049 AND JUMP JUMPDEST SWAP3 POP DUP1 DUP4 EQ ISZERO PUSH2 0x2D53 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 AND SWAP3 POP DUP6 AND DUP3 EQ PUSH2 0x2D53 JUMPI PUSH2 0x2D53 DUP7 DUP7 DUP6 PUSH2 0x2B7C JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x2DA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4BB5 PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x2DB4 JUMPI PUSH2 0x2DB1 DUP5 PUSH2 0x17B9 JUMP JUMPDEST SWAP4 POP JUMPDEST TIMESTAMP DUP5 GT PUSH2 0x2DF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4EC9 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2E04 JUMPI DUP6 SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2E16 JUMPI DUP3 SWAP2 POP JUMPDEST DUP1 PUSH2 0x2E3C JUMPI PUSH1 0x0 PUSH2 0x2E2C PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x2E3A JUMPI DUP1 SWAP5 POP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x2E48 DUP5 DUP7 PUSH2 0x3174 JUMP JUMPDEST SWAP1 POP PUSH2 0x2E56 DUP8 DUP8 DUP7 DUP9 PUSH2 0x40A3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 AND SWAP1 DUP5 AND DUP2 EQ PUSH2 0x2F0D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x2ECA DUP2 DUP8 DUP5 PUSH2 0x3E25 JUMP JUMPDEST PUSH2 0x2F0A DUP3 DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5374616B696E673A3A7374616B653A2062616C616E6365206F766572666C6F77 DUP2 MSTORE POP PUSH2 0x2FDD JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH2 0x2F18 DUP5 DUP8 DUP10 PUSH2 0x3EC2 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB846DC53D3621F480D692E73F4473156D20F23FF6B2C8237B7130B883226CCA9 DUP10 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2F84 DUP6 DUP6 PUSH2 0x14B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2F92 DUP7 DUP6 PUSH2 0x2930 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x2FC2 DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4E42 PUSH1 0x3B SWAP2 CODECOPY PUSH2 0x30E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x2FD2 JUMPI INVALID JUMPDEST DIV SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x1AC2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3040 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3028 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x306D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO DUP3 SWAP1 PUSH2 0x30E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3040 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3028 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x3100 JUMPI POP PUSH1 0x0 PUSH2 0x2115 JUMP JUMPDEST DUP4 DUP4 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP6 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP4 AND DUP2 PUSH2 0x311C JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND EQ DUP4 SWAP1 PUSH2 0x1AC2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3040 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3028 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x0 NOT PUSH4 0xFFFFFFFF SWAP2 DUP3 AND ADD AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x31F1 JUMPI POP PUSH2 0x31F1 PUSH2 0x3B30 JUMP JUMPDEST ISZERO PUSH2 0x31FB JUMPI PUSH2 0xF54 JUMP JUMPDEST PUSH2 0x3204 DUP4 PUSH2 0x41E8 JUMP JUMPDEST SWAP3 POP PUSH2 0x3210 DUP5 DUP5 PUSH2 0x3A3A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3222 JUMPI CALLER SWAP2 POP JUMPDEST PUSH2 0x322C DUP4 DUP6 PUSH2 0x3D42 JUMP JUMPDEST PUSH2 0x3237 CALLER DUP5 DUP7 PUSH2 0x3C2E JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3266 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH2 0x3E25 JUMP JUMPDEST DUP3 TIMESTAMP LT DUP1 ISZERO PUSH2 0x3278 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3282 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x33F8 JUMPI PUSH1 0x0 PUSH2 0x3293 DUP6 DUP6 PUSH2 0x3AE5 JUMP JUMPDEST SWAP5 DUP6 SWAP1 SUB SWAP5 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x33F6 JUMPI PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x32F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A78 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3365 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x337B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0xD SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xABE979E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xABE979E1 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP9 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x346D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x34C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A05 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP4 ISZERO ISZERO DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0x667B6C8ED8622DAE7927A8B0837455098E32037A0181F9A2E21B9B72FEAD6CC7 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3529 PUSH2 0x3B30 JUMP JUMPDEST ISZERO PUSH2 0xF54 JUMPI PUSH1 0x0 PUSH2 0x3543 DUP5 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x4049 AND JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x3551 JUMPI POP DUP1 TIMESTAMP LT ISZERO JUMPDEST ISZERO PUSH2 0xE09 JUMPI PUSH1 0x0 PUSH2 0x3566 CALLER DUP4 PUSH1 0x1 NUMBER SUB PUSH2 0x35EB JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x2D53 JUMPI PUSH2 0x2D53 DUP2 DUP4 DUP7 DUP7 PUSH2 0x31D5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3590 DUP6 DUP6 PUSH2 0x14B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x359F DUP8 DUP8 DUP7 PUSH2 0x24E0 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x35CF DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x48EC PUSH1 0x47 SWAP2 CODECOPY PUSH2 0x30E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x35DF JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35F5 PUSH2 0x3BE9 JUMP JUMPDEST DUP3 LT PUSH2 0x3632 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4F9B PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x363B DUP4 PUSH2 0x41E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP4 POP PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x3677 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x3703 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x3746 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x3811 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x3778 PUSH2 0x4845 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x37EC JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x2115 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x3803 JUMPI DUP2 SWAP4 POP PUSH2 0x380A JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x374E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH4 0xC09DDFD PUSH1 0xE0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x38AC JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x390F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x38F0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3971 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3976 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x19DD JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0x39C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4980 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x39F3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x420D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3040 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3028 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x3A82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4933 PUSH1 0x4D SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A92 CALLER DUP4 PUSH1 0x1 NUMBER SUB PUSH2 0x35EB JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO PUSH2 0x19DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A53 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3AF1 TIMESTAMP PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3AFF DUP5 DUP4 PUSH2 0x14B8 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 POP PUSH1 0x64 SWAP1 PUSH1 0xA DUP8 DUP5 MUL DUP3 AND DIV AND DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDBB049D1 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xDBB049D1 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3BA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x1FF4 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x12 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7F6C6F1 PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x7F6C6F10 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x3CB1 SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x4C43 SWAP1 DUP4 ADD CODECOPY PUSH2 0x307B JUMP JUMPDEST SWAP1 POP PUSH2 0x2D53 DUP7 DUP7 DUP6 DUP5 PUSH2 0x4307 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x33 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x3CB1 SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x4E0F SWAP1 DUP4 ADD CODECOPY PUSH2 0x2FDD JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x6 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP3 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x35 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP1 SWAP3 PUSH2 0x3DAD SWAP3 DUP6 SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x4FD8 SWAP1 DUP4 ADD CODECOPY PUSH2 0x307B JUMP JUMPDEST SWAP1 POP PUSH2 0xE09 DUP6 DUP5 DUP4 PUSH2 0x4487 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x6 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP3 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x34 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP1 SWAP3 PUSH2 0x3DAD SWAP3 DUP6 SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x4D0D SWAP1 DUP4 ADD CODECOPY PUSH2 0x2FDD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP2 SWAP1 DUP5 AND DUP3 GT ISZERO PUSH2 0x3EB6 JUMPI PUSH2 0x3EB3 DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x50A4 PUSH1 0x38 SWAP2 CODECOPY PUSH2 0x307B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2D53 DUP7 DUP7 DUP6 DUP5 PUSH2 0x45C5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x37 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x3EB3 SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x506D SWAP1 DUP4 ADD CODECOPY PUSH2 0x2FDD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3F8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A2D PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x4010 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0xF54 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x402F JUMPI PUSH2 0x402F DUP5 DUP3 DUP5 PUSH2 0x3E25 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xF54 JUMPI PUSH2 0xF54 DUP4 DUP3 DUP5 PUSH2 0x3EC2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2115 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x410A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x411E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x4142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x414E DUP5 DUP5 PUSH2 0x3174 JUMP JUMPDEST SWAP1 POP PUSH2 0x4173 DUP2 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4EFF PUSH1 0x28 SWAP2 CODECOPY PUSH2 0x2FDD JUMP JUMPDEST SWAP1 POP PUSH2 0x417F DUP4 DUP7 PUSH2 0x3DBA JUMP JUMPDEST PUSH2 0x418A DUP5 DUP5 DUP8 PUSH2 0x3CBF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP9 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP4 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH32 0xFC5B1BAC0416800B42A669229A346B6E5A15DB3896339DBDC5FA376E1E4570A SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x41F4 DUP4 PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 EQ PUSH2 0x4206 JUMPI PUSH3 0x127500 DUP2 ADD SWAP3 POP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x424C JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x42A5 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x4269 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x4286 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x4254 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x42FA JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x42BE JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x42DB JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x42A9 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x432B NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4DD1 PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x47E8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x437C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x43DE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP8 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0xE09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 SWAP1 SWAP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA DUP11 MSTORE DUP5 DUP2 KECCAK256 DUP10 DUP3 MSTORE DUP11 MSTORE DUP5 DUP2 KECCAK256 DUP9 DUP8 AND DUP3 MSTORE DUP11 MSTORE DUP5 DUP2 KECCAK256 SWAP4 MLOAD DUP5 SLOAD SWAP4 MLOAD SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP8 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP5 DUP6 AND OR SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP3 SSTORE SWAP1 DUP5 MSTORE PUSH1 0xB DUP8 MSTORE DUP2 DUP5 KECCAK256 SWAP6 DUP5 MSTORE SWAP5 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP3 ADD SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44AB NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4DD1 PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x47E8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x44EA JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x453A JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP8 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0xF54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x6 DUP3 MSTORE DUP5 DUP2 KECCAK256 DUP9 DUP8 AND DUP3 MSTORE DUP3 MSTORE DUP5 DUP2 KECCAK256 SWAP4 MLOAD DUP5 SLOAD SWAP4 MLOAD PUSH4 0xFFFFFFFF NOT SWAP5 DUP6 AND SWAP2 DUP9 AND SWAP2 SWAP1 SWAP2 OR PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL SWAP2 SWAP1 SWAP9 AND MUL SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP3 SSTORE SWAP6 DUP5 MSTORE PUSH1 0x7 SWAP1 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 AND PUSH1 0x1 SWAP1 SWAP3 ADD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45E9 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4DD1 PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x47E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 DUP5 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x467F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP4 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x46E1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND MUL OR SWAP1 SSTORE PUSH2 0x478B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP14 DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP13 DUP8 AND DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP5 MLOAD SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP6 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP6 DUP7 AND OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP6 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x9 DUP5 MSTORE DUP5 DUP3 KECCAK256 DUP11 DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP9 ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH32 0xC7B38FB25352E6F351F57E2C922F84DB5C97E09A6246BBE1D2EEDFCDB01C4C62 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x20 SHL DUP5 LT PUSH2 0x483D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3040 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3028 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP INVALID MSTORE8 PUSH21 0x616B696E673A3A64656C656761746542795369673A KECCAK256 PUSH20 0x69676E6174757265206578706972656474686572 PUSH6 0x206973206E6F KECCAK256 PUSH15 0x6577207374616B696E6720636F6E74 PUSH19 0x616374207365745374616B696E673A3A657874 PUSH6 0x6E645374616B PUSH10 0x6E674475726174696F6E GASPRICE KECCAK256 PUSH4 0x616E6E6F PUSH21 0x2072656475636520746865207374616B696E672064 PUSH22 0x726174696F6E57656967687465645374616B696E673A GASPRICE 0x5F PUSH21 0x6F74616C506F776572427944617465466F7244656C PUSH6 0x67617465653A KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F775374616B696E673A3A PUSH24 0x697468647261773A20616D6F756E74206F6620746F6B656E PUSH20 0x20746F2062652077697468647261776E206E6565 PUSH5 0x7320746F20 PUSH3 0x652062 PUSH10 0x67676572207468616E20 ADDRESS PUSH19 0x656365697665417070726F76616C3A20547261 PUSH15 0x73616374696F6E2065786563757469 PUSH16 0x6E2072657665727465642E5765696768 PUSH21 0x65645374616B696E673A3A6765745072696F72546F PUSH21 0x616C566F74696E67506F7765723A206F766572666C PUSH16 0x77206F6E20746F74616C20766F74696E PUSH8 0x20706F7765722063 PUSH16 0x6D7075746174696F6E5374616B696E67 GASPRICE GASPRICE PUSH24 0x697468647261773A20546F6B656E207472616E7366657220 PUSH7 0x61696C65644F77 PUSH15 0x61626C653A206E6577206F776E6572 KECCAK256 PUSH10 0x7320746865207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x6573735374616B696E673A3A77697468647261 PUSH24 0x3A206E6F7420656E6F7567682062616C616E63655374616B PUSH10 0x6E673A3A776974686472 PUSH2 0x773A KECCAK256 CHAINID PUSH6 0x655368617269 PUSH15 0x672061646472657373207761736E27 PUSH21 0x207365745374616B696E673A3A64656C6567617465 TIMESTAMP PUSH26 0x5369673A20696E76616C6964207369676E617475726557656967 PUSH9 0x7465645374616B696E PUSH8 0x3A3A74696D657374 PUSH2 0x6D70 SLOAD PUSH16 0x4C6F636B446174653A2074696D657374 PUSH2 0x6D70 KECCAK256 PUSH13 0x696573206265666F726520636F PUSH15 0x7472616374206372656174696F6E77 PUSH6 0x696768742073 PUSH4 0x616C696E PUSH8 0x20646F65736E2774 KECCAK256 PUSH3 0x656C6F PUSH15 0x6720746F2072616E6765205B312C20 CODECOPY 0x5D PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77206F6E207765696768 PUSH21 0x20636F6D7075746174696F6E576569676874656453 PUSH21 0x616B696E673A3A77656967687465645374616B6542 PUSH26 0x446174653A206D756C7469706C69636174696F6E206F76657266 PUSH13 0x6F775374616B696E673A3A7374 PUSH2 0x6B65 GASPRICE KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206F6620746F6B656E7320746F207374616B6520 PUSH15 0x6565647320746F2062652062696767 PUSH6 0x72207468616E KECCAK256 ADDRESS MSTORE8 PUSH21 0x616B696E673A3A657874656E645374616B696E6744 PUSH22 0x726174696F6E3A206E6F7468696E67207374616B6564 KECCAK256 PUSH22 0x6E74696C207468652070726576696F7573206C6F636B KECCAK256 PUSH5 0x6174655374 PUSH2 0x6B69 PUSH15 0x673A3A5F6465637265617365557365 PUSH19 0x5374616B653A207374616B656420616D6F756E PUSH21 0x20756E646572666C6F775765696768746564537461 PUSH12 0x696E673A3A6765745072696F PUSH19 0x566F7465733A206F766572666C6F77206F6E20 PUSH21 0x6F74616C20766F74696E6720706F77657220636F6D PUSH17 0x75746174696F6E57656967687465645374 PUSH2 0x6B69 PUSH15 0x673A3A636F6D707574655765696768 PUSH21 0x4279446174653A2064617465206E6565647320746F KECCAK256 PUSH3 0x652062 PUSH10 0x67676572207468616E20 PUSH20 0x74617274446174655374616B696E673A3A5F696E PUSH4 0x72656173 PUSH6 0x4461696C7953 PUSH21 0x616B653A207374616B656420616D6F756E74206F76 PUSH6 0x72666C6F7745 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH22 0x696E7432353620636861696E49642C61646472657373 KECCAK256 PUSH23 0x6572696679696E67436F6E7472616374295374616B696E PUSH8 0x3A3A636F6D707574 PUSH6 0x576569676874 TIMESTAMP PUSH26 0x446174653A72656D61696E696E672074696D652063616E277420 PUSH3 0x652062 PUSH10 0x67676572207468616E20 PUSH14 0x6178206475726174696F6E537461 PUSH12 0x696E673A3A5F777269746553 PUSH21 0x616B696E67436865636B706F696E743A20626C6F63 PUSH12 0x206E756D6265722065786365 PUSH6 0x647320333220 PUSH3 0x697473 MSTORE8 PUSH21 0x616B696E673A3A5F696E6372656173655573657253 PUSH21 0x616B653A207374616B656420616D6F756E74206F76 PUSH6 0x72666C6F7757 PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A5F746F74616C506F776572427944 PUSH2 0x7465 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72576569676874 PUSH6 0x645374616B65 GASPRICE KECCAK256 PUSH16 0x766572666C6F77206F6E20746F74616C KECCAK256 PUSH24 0x656967687420636F6D7075746174696F6E5374616B696E67 GASPRICE GASPRICE PUSH21 0x696D657374616D70546F4C6F636B446174653A2073 PUSH21 0x616B696E6720706572696F6420746F6F2073686F72 PUSH21 0x5374616B696E673A3A696E6372656173655374616B PUSH6 0x3A2062616C61 PUSH15 0x6365206F766572666C6F7763616E27 PUSH21 0x20726573657420746865206E6577207374616B696E PUSH8 0x20636F6E74726163 PUSH21 0x20746F203044656C65676174696F6E286164647265 PUSH20 0x732064656C6567617465652C75696E7432353620 PUSH13 0x6F636B446174652C75696E7432 CALLDATALOAD CALLDATASIZE KECCAK256 PUSH15 0x6F6E63652C75696E74323536206578 PUSH17 0x6972792957656967687465645374616B69 PUSH15 0x673A3A6765745072696F7255736572 MSTORE8 PUSH21 0x616B65416E64446174653A206E6F74207965742064 PUSH6 0x7465726D696E PUSH6 0x645374616B69 PUSH15 0x673A3A5F6465637265617365446169 PUSH13 0x795374616B653A207374616B65 PUSH5 0x20616D6F75 PUSH15 0x7420756E646572666C6F7746656553 PUSH9 0x6172696E6720616464 PUSH19 0x6573732073686F756C646E2774206265203057 PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A6765745072696F72546F74616C53 PUSH21 0x616B6573466F72446174653A206E6F742079657420 PUSH5 0x657465726D PUSH10 0x6E65645374616B696E67 GASPRICE GASPRICE 0x5F PUSH10 0x6E63726561736544656C PUSH6 0x676174655374 PUSH2 0x6B65 GASPRICE KECCAK256 PUSH20 0x74616B656420616D6F756E74206F766572666C6F PUSH24 0x5374616B696E673A3A5F646563726561736544656C656761 PUSH21 0x655374616B653A207374616B656420616D6F756E74 KECCAK256 PUSH22 0x6E646572666C6F7757656967687465645374616B696E PUSH8 0x3A3A676574507269 PUSH16 0x725374616B65427944617465466F7244 PUSH6 0x6C6567617465 PUSH6 0x3A206E6F7420 PUSH26 0x65742064657465726D696E65645374616B696E673A3A64656C65 PUSH8 0x6174654279536967 GASPRICE KECCAK256 PUSH10 0x6E76616C6964206E6F6E PUSH4 0x65A26562 PUSH27 0x7A72315820DBC89F0CB5D2D9EDE59EDAC39673220839052DD43873 GT SWAP15 DUP6 PUSH12 0x1C102FF56E6864736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "1973:26:59:-;99:588:114;1973:26:59;;99:588:114;1973:26:59;;;-1:-1:-1;;;1973:26:59;;;;;;;;;;:::i;:::-;-1:-1:-1;2262:31:59;;;-1:-1:-1;;2262:31:59;;;5091:52;;;-1:-1:-1;;;;;5091:52:59;-1:-1:-1;;;5091:52:59;;;-1:-1:-1;697:12:142;:10;:12::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;99:588:114;;780:87:137;853:10;780:87;;:::o;99:588:114:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;99:588:114;;;-1:-1:-1;99:588:114;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106103a35760003560e01c8063836eebee116101e9578063b4b5ea571161010f578063db27ec18116100ad578063e97ffacb1161007c578063e97ffacb14610cd5578063eefb8c4714610d07578063f09cfc6414610d2a578063f2fde38b14610d4d576103a3565b8063db27ec1814610c2b578063dfb267c214610c57578063e63a562e14610c80578063e7a324dc14610ccd576103a3565b8063cf7b684a116100e9578063cf7b684a14610b99578063d27569e714610bcb578063d5c3846414610bd3578063dab6ca4414610bf0576103a3565b8063b4b5ea5714610b45578063b8a9873214610b6b578063bf626ec114610b91576103a3565b806396a590c111610187578063a58848c511610156578063a58848c514610b07578063adae900214610b0f578063ae81dfe414610b35578063b1724b4614610b3d576103a3565b806396a590c114610a615780639929e88614610ab35780639a377b8214610abb578063a377f24414610ae1576103a3565b80638f32d59b116101c35780638f32d59b1461096a5780638f4ffcb1146109725780639436e7d4146109ff57806394c2ce5814610a35576103a3565b8063836eebee146108f85780638da5cb5b1461092a5780638dae1b1614610932576103a3565b8063450b0601116102ce57806368cefccc1161026c57806372ec97951161023b57806372ec9795146107bb5780637ba6f458146107d85780637ecebe0014610897578063800b64ca146108bd576103a3565b806368cefccc146106d75780636b6fde0e14610737578063704802751461076f57806370a0823114610795576103a3565b80635419675f116102a85780635419675f1461067e5780635e0be60714610686578063626ee2d91461068e57806362cf8a08146106b4576103a3565b8063450b06011461060a5780634b2fea1e146106305780635004b6e414610676576103a3565b80631785f53c1161034657806327dd1b001161031557806327dd1b001461055857806337e6b1c1146105845780633827fca5146105b6578063429b62e5146105e4576103a3565b80631785f53c146104be57806320606b70146104e45780632522d7ba146104ec57806325629ec014610515576103a3565b806307392cc01161038257806307392cc0146104145780630c09ddfd14610445578063104932cf1461049257806317748adc1461049a576103a3565b8062073f99146103a8578063026e402b146103c257806303a18fa3146103f0575b600080fd5b6103b0610d73565b60408051918252519081900360200190f35b6103ee600480360360408110156103d857600080fd5b506001600160a01b038135169060200135610d79565b005b6103f8610d93565b604080516001600160a01b039092168252519081900360200190f35b6104316004803603602081101561042a57600080fd5b5035610da2565b604080519115158252519081900360200190f35b6103ee600480360360a081101561045b57600080fd5b506001600160a01b0381358116916001600160601b0360208201351691604082013591606081013582169160809091013516610db7565b6103f8610e10565b6104a2610e1f565b604080516001600160601b039092168252519081900360200190f35b6103ee600480360360208110156104d457600080fd5b50356001600160a01b0316610e24565b6103b0610ec4565b6104a26004803603604081101561050257600080fd5b5063ffffffff8135169060200135610edf565b6103ee6004803603608081101561052b57600080fd5b506001600160601b03813516906020810135906001600160a01b0360408201358116916060013516610f45565b6103f86004803603604081101561056e57600080fd5b506001600160a01b038135169060200135610f5a565b6104a26004803603606081101561059a57600080fd5b506001600160a01b038135169060208101359060400135610f80565b6103ee600480360360408110156105cc57600080fd5b506001600160a01b0381358116916020013516610ff8565b610431600480360360208110156105fa57600080fd5b50356001600160a01b0316611135565b6103ee6004803603602081101561062057600080fd5b50356001600160a01b031661114a565b6103ee600480360360c081101561064657600080fd5b508035906020810135906040810135906060810135906001600160a01b03608082013581169160a001351661120f565b6103f86112ae565b6103ee6112bd565b6103ee61130b565b6103ee600480360360208110156106a457600080fd5b50356001600160a01b0316611409565b6104a2600480360360408110156106ca57600080fd5b50803590602001356114b8565b61070f600480360360608110156106ed57600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff16611631565b6040805163ffffffff90931683526001600160601b0390911660208301528051918290030190f35b61070f6004803603606081101561074d57600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff1661166c565b6103ee6004803603602081101561078557600080fd5b50356001600160a01b03166116a7565b6104a2600480360360208110156107ab57600080fd5b50356001600160a01b031661174a565b6103b0600480360360208110156107d157600080fd5b50356117b9565b6107fe600480360360208110156107ee57600080fd5b50356001600160a01b0316611823565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561084257818101518382015260200161082a565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610881578181015183820152602001610869565b5050505090500194505050505060405180910390f35b6103b0600480360360208110156108ad57600080fd5b50356001600160a01b031661195e565b6103ee600480360360608110156108d357600080fd5b5080356001600160601b031690602081013590604001356001600160a01b0316611970565b6104a26004803603606081101561090e57600080fd5b506001600160a01b0381351690602081013590604001356119e2565b6103f8611a3a565b6104a26004803603608081101561094857600080fd5b506001600160a01b038135169060208101359060408101359060600135611a49565b610431611acb565b6103ee6004803603608081101561098857600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b8111156109c157600080fd5b8201836020820111156109d357600080fd5b803590602001918460018302840111600160201b831117156109f457600080fd5b509092509050611aef565b610a1c60048036036020811015610a1557600080fd5b5035611dc1565b6040805163ffffffff9092168252519081900360200190f35b610a1c60048036036040811015610a4b57600080fd5b506001600160a01b038135169060200135611dd9565b610a8d60048036036040811015610a7757600080fd5b506001600160601b038135169060200135611dfc565b604080516001600160601b03938416815291909216602082015281519081900390910190f35b610431611e21565b6103ee60048036036020811015610ad157600080fd5b50356001600160a01b0316611e2a565b6103ee60048036036020811015610af757600080fd5b50356001600160a01b0316611edf565b6103f8611fa4565b61043160048036036020811015610b2557600080fd5b50356001600160a01b0316611fb3565b6103f8611fc8565b6103b0611fdc565b6104a260048036036020811015610b5b57600080fd5b50356001600160a01b0316611fe4565b6103ee60048036036020811015610b8157600080fd5b50356001600160601b0316611ffa565b6104a26120c9565b6104a260048036036060811015610baf57600080fd5b506001600160a01b0381351690602081013590604001356120df565b6104a261211c565b6104a260048036036020811015610be957600080fd5b5035612121565b6103ee60048036036060811015610c0657600080fd5b5080356001600160601b031690602081013590604001356001600160a01b031661217d565b610a1c60048036036040811015610c4157600080fd5b506001600160a01b038135169060200135612197565b61070f60048036036040811015610c6d57600080fd5b508035906020013563ffffffff166121ba565b6103ee600480360360e0811015610c9657600080fd5b506001600160a01b038135169060208101359060408101359060608101359060ff6080820135169060a08101359060c001356121ef565b6103b06124c5565b6104a260048036036060811015610ceb57600080fd5b506001600160a01b0381351690602081013590604001356124e0565b6103ee60048036036040811015610d1d57600080fd5b5080359060200135612748565b6104a260048036036040811015610d4057600080fd5b5080359060200135612930565b6103ee60048036036020811015610d6357600080fd5b50356001600160a01b0316612b28565b60015481565b610d84338383612b7c565b610d8f338383612c2e565b5050565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b333014610dfa576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610e0985858585856000612d5b565b5050505050565b6011546001600160a01b031681565b600981565b610e2c611acb565b610e6c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b604051806043614d4182396043019050604051809103902081565b600080610eeb836117b9565b905063059fa6008101815b818111610f3c57610f3084610f1283868a63ffffffff16612f77565b6040518060800160405280605581526020016149b060559139612fdd565b93506212750001610ef6565b50505092915050565b610f5433858585856000612d5b565b50505050565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b600080610f8c836117b9565b905063059fa6008101815b818111610fee576000610fac8883868a611a49565b90506001600160601b03811615610fe357610fe085826040518060800160405280604c8152602001614e7d604c9139612fdd565b94505b506212750001610f97565b5050509392505050565b611000611acb565b8061101a5750336000908152600f602052604090205460ff165b61105a576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038083166000818152600e6020526040808220805460ff191660011790558051633c7925e360e11b815293851660048501525191926378f24bc6926024808301939282900301818387803b1580156110b857600080fd5b505af11580156110cc573d6000803e3d6000fd5b5050506001600160a01b038084166000818152600e6020908152604091829020805460ff1916905581519283529285169282019290925281517f2366e0b6b1af17c0ceed50685c570d519cae11e7faaf007bbe667e94a5ee3cd593509081900390910190a15050565b600f6020526000908152604090205460ff1681565b611152611acb565b611192576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166111ed576040805162461bcd60e51b815260206004820181905260248201527f76657374696e67207265676973747279206164647265737320696e76616c6964604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600061121c8642016117b9565b905063059fa6008511156112325763059fa60094505b600061123f8642016117b9565b90506000858383038161124e57fe5b0460010190506000818a8161125f57fe5b0490506001821061128057611280336001840383028c038689896001612d5b565b8387015b8381116112a15761129a3383838a8a6001612d5b565b8701611284565b5050505050505050505050565b6012546001600160a01b031681565b60055461010090046001600160a01b03166113095760405162461bcd60e51b81526004018080602001828103825260248152602001806148866024913960400191505060405180910390fd5b565b611313611acb565b611353576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6005805460ff19166001179055600354604080516370a0823160e01b815230600482015290517fd8cc4e8d808fe950b07bfffcd83eebf1190cd35ea77fe0c8a7d75a6e9b90e5c1926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156113ca57600080fd5b505afa1580156113de573d6000803e3d6000fd5b505050506040513d60208110156113f457600080fd5b505160408051918252519081900360200190a1565b611411611acb565b611451576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166114965760405162461bcd60e51b815260040180806020018281038252602181526020018061500d6021913960400191505060405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000818310156114f95760405162461bcd60e51b815260040180806020018281038252604c815260200180614cc1604c913960600191505060405180910390fd5b81830363059fa60081111561153f5760405162461bcd60e51b815260040180806020018281038252604d815260200180614d84604d913960600191505060405180910390fd5b6000620151808263059fa600036001600160601b03168161155c57fe5b049050611628600a621232106001600160601b03166115dc600a6009026115be621232108788026040518060400160405280601f81526020017f756e646572666c6f77206f6e207765696768742063616c63756c6174696f6e0081525061307b565b6040518060600160405280602d8152602001614b4b602d91396130e8565b6001600160601b0316816115ec57fe5b046040518060400160405280601e81526020017f6f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e0000815250612fdd565b95945050505050565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b6116af611acb565b6116ef576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6001546000905b63059fa600420181116117b3576117a78261176c8584613174565b6040518060400160405280601c81526020017f5374616b696e673a3a62616c616e63654f663a206f766572666c6f7700000000815250612fdd565b91506212750001611751565b50919050565b60006001548210156117fc5760405162461bcd60e51b815260040180806020018281038252604d815260200180614ad1604d913960600191505060405180910390fd5b60006212750060015484038161180e57fe5b04905060015462127500820201915050919050565b606080600061183763059fa60042016117b9565b60015490915060009062127500015b8281116118795760006118598783613174565b6001600160601b0316111561186f576001909101905b6212750001611846565b50806040519080825280602002602001820160405280156118a4578160200160208202803883390190505b509350806040519080825280602002602001820160405280156118d1578160200160208202803883390190505b5060015490935060009062127500015b8381116119555760006118f48883613174565b90506001600160601b0381161561194a578187848151811061191257fe5b6020026020010181815250508086848151811061192b57fe5b6001600160601b03909216602092830291909101909101526001909201915b5062127500016118e1565b50505050915091565b600c6020526000908152604090205481565b336000908152600e602052604090205460ff166119c3576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6119d083838360016131d5565b6119dd8383836001613521565b505050565b6000806119ee836117b9565b905063059fa6008101815b818111610fee57611a2e84611a108984878b613583565b6040518060800160405280604a8152602001614c77604a9139612fdd565b935062127500016119f9565b6000546001600160a01b031690565b600080611a578686856135eb565b90506001600160601b03811615611abd576000611a7486866114b8565b9050600a6001600160601b0316611aa483836040518060600160405280603d8152602001614b78603d91396130e8565b6001600160601b031681611ab457fe5b04925050611ac2565b600091505b50949350505050565b600080546001600160a01b0316611ae061385f565b6001600160a01b031614905090565b611af7613863565b6001600160a01b0316336001600160a01b031614611b4b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b336001600160a01b03841614611b97576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006060611ba3613872565b90506000611be685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138ca92505050565b905060005b8251811015611c3457828181518110611c0057fe5b60200260200101516001600160e01b031916826001600160e01b0319161415611c2c5760019350611c34565b600101611beb565b5082611c7f576040805162461bcd60e51b81526020600482015260156024820152741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b604482015290519081900360640190fd5b60405160006020820181815290918291829189918991603c018383808284378083019250505093505050506040516020818303038152906040528060200190516060811015611ccd57600080fd5b50602081015160409091015190925090506001600160a01b03808316908b1614611d30576040805162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b888114611d76576040805162461bcd60e51b815260206004820152600f60248201526e0c2dadeeadce840dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b611db587878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138d192505050565b50505050505050505050565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b600080611e098484613a3a565b6000611e158585613ae5565b94859003959350505050565b60055460ff1681565b611e32611acb565b611e72576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116611eb75760405162461bcd60e51b8152600401808060200182810382526029815260200180614f276029913960400191505060405180910390fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b611ee7611acb565b611f27576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116611f82576040805162461bcd60e51b815260206004820152601c60248201527f626c6f636b206d6f636b7570206164647265737320696e76616c696400000000604482015290519081900360640190fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b6000611ff48260014303426119e2565b92915050565b612002611acb565b612042576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160601b038116600111801590612066575060096001600160601b03821611155b6120a15760405162461bcd60e51b815260040180806020018281038252602d815260200180614b1e602d913960400191505060405180910390fd5b600d80546001600160601b03909216600160a01b026001600160a01b03909216919091179055565b600d54600160a01b90046001600160601b031681565b6000806120ed8585856135eb565b90506001600160601b0381161580156121095750612109613b30565b15612112575060015b90505b9392505050565b600a81565b60008181526007602052604081205463ffffffff1680612142576000612115565b6000838152600660209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03169392505050565b61218a83838360006131d5565b6119dd8383836000613521565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b60006040518080614d416043913960430190506040518091039020600260405180828054600181600116156101000203166002900480156122675780601f10612245576101008083540402835291820191612267565b820191906000526020600020905b815481529060010190602001808311612253575b5050915050604051809103902061227c613bac565b3060405160200180858152602001848152602001838152602001826001600160a01b03166001600160a01b0316815260200194505050505060405160208183030381529060405280519060200120905060006040518080614f50604b91396040805191829003604b0182206020808401919091526001600160a01b038d1683830152606083018c9052608083018b905260a08084018b90528251808503909101815260c08401835280519082012061190160f01b60e085015260e28401879052610102808501829052835180860390910181526101228501808552815191840191909120600091829052610142860180865281905260ff8c1661016287015261018286018b90526101a286018a9052935191965092945091926001926101c28083019392601f198301929081900390910190855afa1580156123c2573d6000803e3d6000fd5b5050506020604051035190506123d781613bb0565b6124125760405162461bcd60e51b8152600401808060200182810382526029815260200180614aa86029913960400191505060405180910390fd5b6001600160a01b0381166000908152600c6020526040902080546001810190915589146124705760405162461bcd60e51b81526004018080602001828103825260258152602001806151206025913960400191505060405180910390fd5b874211156124af5760405162461bcd60e51b815260040180806020018281038252602981526020018061485d6029913960400191505060405180910390fd5b6124ba818c8c612b7c565b6112a1818c8c612c2e565b60405180604b614f508239604b019050604051809103902081565b60006124ea613be9565b82106125275760405162461bcd60e51b81526004018080602001828103825260448152602001806150dc6044913960600191505060405180910390fd5b6001600160a01b038416600090815260096020908152604080832086845290915290205463ffffffff1680612560576000915050612115565b6001600160a01b0385166000908152600860209081526040808320878452825280832063ffffffff6000198601811685529252909120541683106125ec576001600160a01b038516600090815260086020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050612115565b6001600160a01b0385166000908152600860209081526040808320878452825280832083805290915290205463ffffffff1683101561262f576000915050612115565b600060001982015b8163ffffffff168163ffffffff1611156126fa57600282820363ffffffff16048103612661614845565b506001600160a01b03881660009081526008602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b031691810191909152908714156126d5576020015194506121159350505050565b805163ffffffff168711156126ec578193506126f3565b6001820392505b5050612637565b506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b612751816117b9565b9050808211156127925760405162461bcd60e51b81526004018080602001828103825260428152602001806148aa6042913960600191505060405180910390fd5b60006127a363059fa60042016117b9565b9050808211156127b1578091505b60006127c13385600143036135eb565b90506000816001600160601b03161161280b5760405162461bcd60e51b815260040180806020018281038252604b815260200180614bf8604b913960600191505060405180910390fd5b612816338583613c2e565b612821338483613cbf565b61282b8482613d42565b6128358382613dba565b336000908152600460209081526040808320878452909152808220548583529120546001600160a01b0391821691168061289f5750336000908152600460209081526040808320878452909152902080546001600160a01b0319166001600160a01b038316179055805b336000908152600460209081526040808320898452909152902080546001600160a01b03191690556128d2828785613e25565b6128dd818685613ec2565b60408051878152602081018790526001600160601b03851681830152905133917f809d79c94c86576d61afef75495b8df415224bf885310fed7ea315039f8c5b4c919081900360600190a2505050505050565b600061293a613be9565b82106129775760405162461bcd60e51b815260040180806020018281038252603f81526020018061502e603f913960400191505060405180910390fd5b60008381526007602052604090205463ffffffff168061299b576000915050611ff4565b600084815260066020908152604080832063ffffffff600019860181168552925290912054168310612a035760008481526006602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050611ff4565b600084815260066020908152604080832083805290915290205463ffffffff16831015612a34576000915050611ff4565b600060001982015b8163ffffffff168163ffffffff161115612aed57600282820363ffffffff16048103612a66614845565b50600087815260066020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415612ac857602001519450611ff49350505050565b805163ffffffff16871115612adf57819350612ae6565b6001820392505b5050612a3c565b50600085815260066020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b612b30611acb565b612b70576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b612b7981613f45565b50565b6001600160a01b03808416600090815260046020908152604080832085845290915281205490911690612baf8584613174565b6001600160a01b03868116600081815260046020908152604080832089845282529182902080546001600160a01b0319168a86169081179091558251898152925195965094938716937fb846dc53d3621f480d692e73f4473156d20f23ff6b2c8237b7130b883226cca99281900390910190a4610e0982858386613fe5565b612c36613b30565b156119dd576000612c50826212750063ffffffff61404916565b6001600160a01b0380861660009081526004602090815260408083208584529091529020549192509081169084168114612c8f57612c8f858584612b7c565b6000336001600160a01b031663c24a0f8b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505050506040513d6020811015612cf657600080fd5b50519050612d0d846224ea0063ffffffff61404916565b925080831415612d53576001600160a01b0380871660009081526004602090815260408083208784529091529020548116925085168214612d5357612d53868685612b7c565b505050505050565b6000856001600160601b031611612da35760405162461bcd60e51b8152600401808060200182810382526043815260200180614bb56043913960600191505060405180910390fd5b80612db457612db1846117b9565b93505b428411612df25760405162461bcd60e51b8152600401808060200182810382526036815260200180614ec96036913960400191505060405180910390fd5b6001600160a01b038316612e04578592505b6001600160a01b038216612e16578291505b80612e3c576000612e2c63059fa60042016117b9565b905080851115612e3a578094505b505b6000612e488486613174565b9050612e56878786886140a3565b6001600160a01b03808516600090815260046020908152604080832089845290915290205481169084168114612f0d576001600160a01b0385811660009081526004602090815260408083208a8452909152902080546001600160a01b031916918616919091179055612eca818784613e25565b612f0a82886040518060400160405280602081526020017f5374616b696e673a3a7374616b653a2062616c616e6365206f766572666c6f77815250612fdd565b96505b612f18848789613ec2565b836001600160a01b0316816001600160a01b0316866001600160a01b03167fb846dc53d3621f480d692e73f4473156d20f23ff6b2c8237b7130b883226cca9896040518082815260200191505060405180910390a45050505050505050565b600080612f8485856114b8565b90506000612f928685612930565b9050600a6001600160601b0316612fc282846040518060600160405280603b8152602001614e42603b91396130e8565b6001600160601b031681612fd257fe5b049695505050505050565b6000838301826001600160601b038087169083161015611ac25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613040578181015183820152602001613028565b50505050905090810190601f16801561306d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000836001600160601b0316836001600160601b0316111582906130e05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613040578181015183820152602001613028565b505050900390565b60006001600160601b03841661310057506000612115565b8383026001600160601b03808516908087169083168161311c57fe5b046001600160601b0316148390611ac25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613040578181015183820152602001613028565b6001600160a01b0382166000818152600a602090815260408083208584528252808320938352600b825280832085845282528083205460001963ffffffff9182160116835292905220546001600160601b03600160201b9091041692915050565b836001600160601b031660011480156131f157506131f1613b30565b156131fb57610f54565b613204836141e8565b92506132108484613a3a565b6001600160a01b038216613222573391505b61322c8385613d42565b613237338486613c2e565b336000908152600460209081526040808320868452909152902054613266906001600160a01b03168486613e25565b8242108015613278575060055460ff16155b8015613282575080155b156133f85760006132938585613ae5565b948590039490506001600160601b038116156133f657600d546001600160a01b03166132f05760405162461bcd60e51b8152600401808060200182810382526030815260200180614a786030913960400191505060405180910390fd5b600354600d546040805163095ea7b360e01b81526001600160a01b0392831660048201526001600160601b03851660248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561335157600080fd5b505af1158015613365573d6000803e3d6000fd5b505050506040513d602081101561337b57600080fd5b5050600d546003546040805163abe979e160e01b81526001600160a01b0392831660048201526001600160601b03851660248201529051919092169163abe979e191604480830192600092919082900301818387803b1580156133dd57600080fd5b505af11580156133f1573d6000803e3d6000fd5b505050505b505b6003546040805163a9059cbb60e01b81526001600160a01b0385811660048301526001600160601b03881660248301529151600093929092169163a9059cbb9160448082019260209290919082900301818787803b15801561345957600080fd5b505af115801561346d573d6000803e3d6000fd5b505050506040513d602081101561348357600080fd5b50519050806134c35760405162461bcd60e51b8152600401808060200182810382526028815260200180614a056028913960400191505060405180910390fd5b604080516001600160601b0387168152602081018690528315158183015290516001600160a01b0385169133917f667b6c8ed8622dae7927a8b0837455098e32037a0181f9a2e21b9b72fead6cc79181900360600190a35050505050565b613529613b30565b15610f54576000613543846212750063ffffffff61404916565b905081806135515750804210155b15610e095760006135663383600143036135eb565b90506001600160601b03811615612d5357612d53818386866131d5565b60008061359085856114b8565b9050600061359f8787866124e0565b9050600a6001600160601b03166135cf82846040518060800160405280604781526020016148ec604791396130e8565b6001600160601b0316816135df57fe5b04979650505050505050565b60006135f5613be9565b82106136325760405162461bcd60e51b815260040180806020018281038252603d815260200180614f9b603d913960400191505060405180910390fd5b61363b836141e8565b6001600160a01b0385166000908152600b6020908152604080832084845290915290205490935063ffffffff1680613677576000915050612115565b6001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff600019860181168552925290912054168310613703576001600160a01b0385166000908152600a6020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050612115565b6001600160a01b0385166000908152600a60209081526040808320878452825280832083805290915290205463ffffffff16831015613746576000915050612115565b600060001982015b8163ffffffff168163ffffffff16111561381157600282820363ffffffff16048103613778614845565b506001600160a01b0388166000908152600a602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b031691810191909152908714156137ec576020015194506121159350505050565b805163ffffffff168711156138035781935061380a565b6001820392505b505061374e565b506001600160a01b0386166000908152600a60209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b3390565b6003546001600160a01b031690565b60408051600180825281830190925260609182919060208083019080388339019050509050630c09ddfd60e01b816000815181106138ac57fe5b6001600160e01b031990921660209283029190910190910152905090565b6020015190565b60006060306001600160a01b0316836040518082805190602001908083835b6020831061390f5780518252601f1990920191602091820191016138f0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613971576040519150601f19603f3d011682016040523d82523d6000602084013e613976565b606091505b5091509150816119dd5760448151116139c05760405162461bcd60e51b81526004018080602001828103825260308152602001806149806030913960400191505060405180910390fd5b6139f36040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b8152508261420d565b60405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613040578181015183820152602001613028565b6000826001600160601b031611613a825760405162461bcd60e51b815260040180806020018281038252604d815260200180614933604d913960600191505060405180910390fd5b6000613a923383600143036135eb565b9050806001600160601b0316836001600160601b031611156119dd5760405162461bcd60e51b8152600401808060200182810382526025815260200180614a536025913960400191505060405180910390fd5b600080613af1426117b9565b90506000613aff84836114b8565b600d54600160a01b90046001600160601b03908116919091029150606490600a878402821604160495945050505050565b6011546040805163dbb049d160e01b815233600482015290516000926001600160a01b03169163dbb049d1916024808301926020929190829003018186803b158015613b7b57600080fd5b505afa158015613b8f573d6000803e3d6000fd5b505050506040513d6020811015613ba557600080fd5b5051905090565b4690565b600073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b03831614801590611ff45750506001600160a01b0316151590565b601254604080516307f6c6f160e41b815290516000926001600160a01b031691637f6c6f10916004808301926020929190829003018186803b158015613b7b57600080fd5b6001600160a01b0383166000818152600b60209081526040808320868452825280832054938352600a8252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526034808352600160201b9091046001600160601b03169392613cb19285928892614c439083013961307b565b9050612d5386868584614307565b6001600160a01b0383166000818152600b60209081526040808320868452825280832054938352600a8252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526033808352600160201b9091046001600160601b03169392613cb19285928892614e0f90830139612fdd565b6000828152600760209081526040808320546006835281842063ffffffff9182166000198101909216855283528184205482516060810190935260358084529194600160201b9091046001600160601b0316939092613dad92859288929190614fd89083013961307b565b9050610e09858483614487565b6000828152600760209081526040808320546006835281842063ffffffff9182166000198101909216855283528184205482516060810190935260348084529194600160201b9091046001600160601b0316939092613dad92859288929190614d0d90830139612fdd565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff94851660001981019095168452909152812054600160201b90046001600160601b0390811691908416821115613eb657613eb382856040518060600160405280603881526020016150a46038913961307b565b90505b612d53868685846145c5565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526037808352600160201b9091046001600160601b03169392613eb3928592889261506d90830139612fdd565b6001600160a01b038116613f8a5760405162461bcd60e51b8152600401808060200182810382526026815260200180614a2d6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b0316846001600160a01b03161415801561401057506000826001600160601b0316115b15610f54576001600160a01b0384161561402f5761402f848284613e25565b6001600160a01b03831615610f5457610f54838284613ec2565b600082820183811015612115576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600354604080516323b872dd60e01b81526001600160a01b0387811660048301523060248301526001600160601b0387166044830152915160009392909216916323b872dd9160648082019260209290919082900301818787803b15801561410a57600080fd5b505af115801561411e573d6000803e3d6000fd5b505050506040513d602081101561413457600080fd5b505190508061414257600080fd5b600061414e8484613174565b90506141738186604051806060016040528060288152602001614eff60289139612fdd565b905061417f8386613dba565b61418a848487613cbf565b604080516001600160601b0380881682526020820186905283168183015290516001600160a01b038616917f0fc5b1bac0416800b42a669229a346b6e5a15db3896339dbdc5fa376e1e4570a919081900360600190a2505050505050565b6000806141f4836117b9565b90508281146142065762127500810192505b5090919050565b6060808390506060839050606060448251845101036040519080825280601f01601f19166020018201604052801561424c576020820181803883390190505b509050806000805b85518110156142a55785818151811061426957fe5b602001015160f81c60f81b83838060010194508151811061428657fe5b60200101906001600160f81b031916908160001a905350600101614254565b5060445b84518110156142fa578481815181106142be57fe5b602001015160f81c60f81b8383806001019450815181106142db57fe5b60200101906001600160f81b031916908160001a9053506001016142a9565b5090979650505050505050565b600061432b436040518060600160405280603e8152602001614dd1603e91396147e8565b905060008363ffffffff1611801561437c57506001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff6000198801811685529252909120548282169116145b156143de576001600160a01b0385166000908152600a602090815260408083208784528252808320600019870163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b03851602179055610e09565b60408051808201825263ffffffff92831681526001600160601b0393841660208083019182526001600160a01b03989098166000818152600a8a528481208982528a5284812088871682528a52848120935184549351909716600160201b02640100000000600160801b031997871663ffffffff19948516179790971696909617909255908452600b875281842095845294909552939020805460019092019093169116179055565b60006144ab436040518060600160405280603e8152602001614dd1603e91396147e8565b905060008363ffffffff161180156144ea5750600084815260066020908152604080832063ffffffff6000198801811685529252909120548282169116145b1561453a576000848152600660209081526040808320600019870163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b03851602179055610f54565b60408051808201825263ffffffff92831681526001600160601b0393841660208083019182526000888152600682528481208887168252825284812093518454935163ffffffff1994851691881691909117640100000000600160801b031916600160201b919098160296909617909255958452600790529091208054909316600190920116179055565b60006145e9436040518060600160405280603e8152602001614dd1603e91396147e8565b6001600160a01b03861660009081526008602090815260408083208884528252808320600019880163ffffffff9081168552925290912054919250600160201b9091046001600160601b03169084161580159061467f57506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff6000198901811685529252909120548382169116145b156146e1576001600160a01b03861660009081526008602090815260408083208884528252808320600019880163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b0386160217905561478b565b60408051808201825263ffffffff80851682526001600160601b0380871660208085019182526001600160a01b038c166000818152600883528781208d825283528781208c871682528352878120965187549451909516600160201b02640100000000600160801b031995871663ffffffff19958616179590951694909417909555938252600984528482208a835290935292909220805460018801909316929091169190911790555b604080518681526001600160601b03808416602083015285168183015290516001600160a01b038816917fc7b38fb25352e6f351f57e2c922f84db5c97e09a6246bbe1d2eedfcdb01c4c62919081900360600190a2505050505050565b600081600160201b841061483d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613040578181015183820152602001613028565b509192915050565b60408051808201909152600080825260208201529056fe5374616b696e673a3a64656c656761746542795369673a207369676e617475726520657870697265647468657265206973206e6f206e6577207374616b696e6720636f6e7472616374207365745374616b696e673a3a657874656e645374616b696e674475726174696f6e3a2063616e6e6f742072656475636520746865207374616b696e67206475726174696f6e57656967687465645374616b696e673a3a5f746f74616c506f776572427944617465466f7244656c6567617465653a206d756c7469706c69636174696f6e206f766572666c6f775374616b696e673a3a77697468647261773a20616d6f756e74206f6620746f6b656e7320746f2062652077697468647261776e206e6565647320746f20626520626967676572207468616e203072656365697665417070726f76616c3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e57656967687465645374616b696e673a3a6765745072696f72546f74616c566f74696e67506f7765723a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e5374616b696e673a3a77697468647261773a20546f6b656e207472616e73666572206661696c65644f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735374616b696e673a3a77697468647261773a206e6f7420656e6f7567682062616c616e63655374616b696e673a3a77697468647261773a2046656553686172696e672061646472657373207761736e2774207365745374616b696e673a3a64656c656761746542795369673a20696e76616c6964207369676e617475726557656967687465645374616b696e673a3a74696d657374616d70546f4c6f636b446174653a2074696d657374616d70206c696573206265666f726520636f6e7472616374206372656174696f6e776569676874207363616c696e6720646f65736e27742062656c6f6e6720746f2072616e6765205b312c20395d6d756c7469706c69636174696f6e206f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e57656967687465645374616b696e673a3a77656967687465645374616b654279446174653a206d756c7469706c69636174696f6e206f766572666c6f775374616b696e673a3a7374616b653a20616d6f756e74206f6620746f6b656e7320746f207374616b65206e6565647320746f20626520626967676572207468616e20305374616b696e673a3a657874656e645374616b696e674475726174696f6e3a206e6f7468696e67207374616b656420756e74696c207468652070726576696f7573206c6f636b20646174655374616b696e673a3a5f6465637265617365557365725374616b653a207374616b656420616d6f756e7420756e646572666c6f7757656967687465645374616b696e673a3a6765745072696f72566f7465733a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e57656967687465645374616b696e673a3a636f6d707574655765696768744279446174653a2064617465206e6565647320746f20626520626967676572207468616e207374617274446174655374616b696e673a3a5f696e6372656173654461696c795374616b653a207374616b656420616d6f756e74206f766572666c6f77454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374295374616b696e673a3a636f6d707574655765696768744279446174653a72656d61696e696e672074696d652063616e277420626520626967676572207468616e206d6178206475726174696f6e5374616b696e673a3a5f77726974655374616b696e67436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735374616b696e673a3a5f696e637265617365557365725374616b653a207374616b656420616d6f756e74206f766572666c6f7757656967687465645374616b696e673a3a5f746f74616c506f7765724279446174653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f7257656967687465645374616b653a206f766572666c6f77206f6e20746f74616c2077656967687420636f6d7075746174696f6e5374616b696e673a3a74696d657374616d70546f4c6f636b446174653a207374616b696e6720706572696f6420746f6f2073686f72745374616b696e673a3a696e6372656173655374616b653a2062616c616e6365206f766572666c6f7763616e277420726573657420746865206e6577207374616b696e6720636f6e747261637420746f203044656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e74323536206578706972792957656967687465645374616b696e673a3a6765745072696f72557365725374616b65416e64446174653a206e6f74207965742064657465726d696e65645374616b696e673a3a5f64656372656173654461696c795374616b653a207374616b656420616d6f756e7420756e646572666c6f7746656553686172696e6720616464726573732073686f756c646e2774206265203057656967687465645374616b696e673a3a6765745072696f72546f74616c5374616b6573466f72446174653a206e6f74207965742064657465726d696e65645374616b696e673a3a5f696e63726561736544656c65676174655374616b653a207374616b656420616d6f756e74206f766572666c6f775374616b696e673a3a5f646563726561736544656c65676174655374616b653a207374616b656420616d6f756e7420756e646572666c6f7757656967687465645374616b696e673a3a6765745072696f725374616b65427944617465466f7244656c6567617465653a206e6f74207965742064657465726d696e65645374616b696e673a3a64656c656761746542795369673a20696e76616c6964206e6f6e6365a265627a7a72315820dbc89f0cb5d2d9ede59edac39673220839052dd43873119e856b1c102ff56e6864736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3A3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x836EEBEE GT PUSH2 0x1E9 JUMPI DUP1 PUSH4 0xB4B5EA57 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xDB27EC18 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xE97FFACB GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xE97FFACB EQ PUSH2 0xCD5 JUMPI DUP1 PUSH4 0xEEFB8C47 EQ PUSH2 0xD07 JUMPI DUP1 PUSH4 0xF09CFC64 EQ PUSH2 0xD2A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xD4D JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0xC2B JUMPI DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0xC57 JUMPI DUP1 PUSH4 0xE63A562E EQ PUSH2 0xC80 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0xCCD JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0xCF7B684A GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xCF7B684A EQ PUSH2 0xB99 JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0xBCB JUMPI DUP1 PUSH4 0xD5C38464 EQ PUSH2 0xBD3 JUMPI DUP1 PUSH4 0xDAB6CA44 EQ PUSH2 0xBF0 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0xB45 JUMPI DUP1 PUSH4 0xB8A98732 EQ PUSH2 0xB6B JUMPI DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0xB91 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x96A590C1 GT PUSH2 0x187 JUMPI DUP1 PUSH4 0xA58848C5 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0xB07 JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0xB0F JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0xB35 JUMPI DUP1 PUSH4 0xB1724B46 EQ PUSH2 0xB3D JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x96A590C1 EQ PUSH2 0xA61 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0xAB3 JUMPI DUP1 PUSH4 0x9A377B82 EQ PUSH2 0xABB JUMPI DUP1 PUSH4 0xA377F244 EQ PUSH2 0xAE1 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x96A JUMPI DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0x972 JUMPI DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0x9FF JUMPI DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0xA35 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x836EEBEE EQ PUSH2 0x8F8 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x92A JUMPI DUP1 PUSH4 0x8DAE1B16 EQ PUSH2 0x932 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x450B0601 GT PUSH2 0x2CE JUMPI DUP1 PUSH4 0x68CEFCCC GT PUSH2 0x26C JUMPI DUP1 PUSH4 0x72EC9795 GT PUSH2 0x23B JUMPI DUP1 PUSH4 0x72EC9795 EQ PUSH2 0x7BB JUMPI DUP1 PUSH4 0x7BA6F458 EQ PUSH2 0x7D8 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x897 JUMPI DUP1 PUSH4 0x800B64CA EQ PUSH2 0x8BD JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x6D7 JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x76F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x795 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x5419675F GT PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x5419675F EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0x5E0BE607 EQ PUSH2 0x686 JUMPI DUP1 PUSH4 0x626EE2D9 EQ PUSH2 0x68E JUMPI DUP1 PUSH4 0x62CF8A08 EQ PUSH2 0x6B4 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x450B0601 EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0x4B2FEA1E EQ PUSH2 0x630 JUMPI DUP1 PUSH4 0x5004B6E4 EQ PUSH2 0x676 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x346 JUMPI DUP1 PUSH4 0x27DD1B00 GT PUSH2 0x315 JUMPI DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0x37E6B1C1 EQ PUSH2 0x584 JUMPI DUP1 PUSH4 0x3827FCA5 EQ PUSH2 0x5B6 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x5E4 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x1785F53C EQ PUSH2 0x4BE JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0x2522D7BA EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x25629EC0 EQ PUSH2 0x515 JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH4 0x7392CC0 GT PUSH2 0x382 JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x414 JUMPI DUP1 PUSH4 0xC09DDFD EQ PUSH2 0x445 JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0x17748ADC EQ PUSH2 0x49A JUMPI PUSH2 0x3A3 JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x3A8 JUMPI DUP1 PUSH4 0x26E402B EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x3F0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B0 PUSH2 0xD73 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD79 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3F8 PUSH2 0xD93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x431 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x42A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x80 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xDB7 JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0xE10 JUMP JUMPDEST PUSH2 0x4A2 PUSH2 0xE1F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE24 JUMP JUMPDEST PUSH2 0x3B0 PUSH2 0xEC4 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0xFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xEDF JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0xF45 JUMP JUMPDEST PUSH2 0x3F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF5A JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x59A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF80 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xFF8 JUMP JUMPDEST PUSH2 0x431 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1135 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x114A JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x80 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0xA0 ADD CALLDATALOAD AND PUSH2 0x120F JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x12AE JUMP JUMPDEST PUSH2 0x3EE PUSH2 0x12BD JUMP JUMPDEST PUSH2 0x3EE PUSH2 0x130B JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1409 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14B8 JUMP JUMPDEST PUSH2 0x70F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x1631 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x70F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x166C JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x785 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x16A7 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x174A JUMP JUMPDEST PUSH2 0x3B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17B9 JUMP JUMPDEST PUSH2 0x7FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1823 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x842 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x82A JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x881 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x869 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x195E JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1970 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x90E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x19E2 JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x1A3A JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1A49 JUMP JUMPDEST PUSH2 0x431 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x988 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x9C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x9F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1AEF JUMP JUMPDEST PUSH2 0xA1C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1DC1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA1C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1DD9 JUMP JUMPDEST PUSH2 0xA8D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1DFC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 RETURN JUMPDEST PUSH2 0x431 PUSH2 0x1E21 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E2A JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EDF JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x1FA4 JUMP JUMPDEST PUSH2 0x431 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1FB3 JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x1FC8 JUMP JUMPDEST PUSH2 0x3B0 PUSH2 0x1FDC JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1FE4 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1FFA JUMP JUMPDEST PUSH2 0x4A2 PUSH2 0x20C9 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x20DF JUMP JUMPDEST PUSH2 0x4A2 PUSH2 0x211C JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2121 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x217D JUMP JUMPDEST PUSH2 0xA1C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2197 JUMP JUMPDEST PUSH2 0x70F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x21BA JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xC96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x21EF JUMP JUMPDEST PUSH2 0x3B0 PUSH2 0x24C5 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x24E0 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2748 JUMP JUMPDEST PUSH2 0x4A2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2930 JUMP JUMPDEST PUSH2 0x3EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B28 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD84 CALLER DUP4 DUP4 PUSH2 0x2B7C JUMP JUMPDEST PUSH2 0xD8F CALLER DUP4 DUP4 PUSH2 0x2C2E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0xDFA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE09 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x2D5B JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0xE2C PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0xE6C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x43 PUSH2 0x4D41 DUP3 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xEEB DUP4 PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0xF3C JUMPI PUSH2 0xF30 DUP5 PUSH2 0xF12 DUP4 DUP7 DUP11 PUSH4 0xFFFFFFFF AND PUSH2 0x2F77 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x55 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x49B0 PUSH1 0x55 SWAP2 CODECOPY PUSH2 0x2FDD JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0xEF6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xF54 CALLER DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x2D5B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF8C DUP4 PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0xFEE JUMPI PUSH1 0x0 PUSH2 0xFAC DUP9 DUP4 DUP7 DUP11 PUSH2 0x1A49 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0xFE3 JUMPI PUSH2 0xFE0 DUP6 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4E7D PUSH1 0x4C SWAP2 CODECOPY PUSH2 0x2FDD JUMP JUMPDEST SWAP5 POP JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0xF97 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1000 PUSH2 0x1ACB JUMP JUMPDEST DUP1 PUSH2 0x101A JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x105A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD PUSH4 0x3C7925E3 PUSH1 0xE1 SHL DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x4 DUP6 ADD MSTORE MLOAD SWAP2 SWAP3 PUSH4 0x78F24BC6 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP3 DUP6 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 MLOAD PUSH32 0x2366E0B6B1AF17C0CEED50685C570D519CAE11E7FAAF007BBE667E94A5EE3CD5 SWAP4 POP SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1152 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x1192 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x11ED JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67207265676973747279206164647265737320696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x11 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x121C DUP7 TIMESTAMP ADD PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP6 GT ISZERO PUSH2 0x1232 JUMPI PUSH4 0x59FA600 SWAP5 POP JUMPDEST PUSH1 0x0 PUSH2 0x123F DUP7 TIMESTAMP ADD PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP4 SUB DUP2 PUSH2 0x124E JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 DUP11 DUP2 PUSH2 0x125F JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 DUP3 LT PUSH2 0x1280 JUMPI PUSH2 0x1280 CALLER PUSH1 0x1 DUP5 SUB DUP4 MUL DUP13 SUB DUP7 DUP10 DUP10 PUSH1 0x1 PUSH2 0x2D5B JUMP JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP4 DUP2 GT PUSH2 0x12A1 JUMPI PUSH2 0x129A CALLER DUP4 DUP4 DUP11 DUP11 PUSH1 0x1 PUSH2 0x2D5B JUMP JUMPDEST DUP8 ADD PUSH2 0x1284 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x12 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1309 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4886 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x1313 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x1353 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xD8CC4E8D808FE950B07BFFFCD83EEBF1190CD35EA77FE0C8A7D75A6E9B90E5C1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1411 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x1451 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1496 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x500D PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT ISZERO PUSH2 0x14F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4CC1 PUSH1 0x4C SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP4 SUB PUSH4 0x59FA600 DUP2 GT ISZERO PUSH2 0x153F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4D84 PUSH1 0x4D SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x15180 DUP3 PUSH4 0x59FA600 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x155C JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1628 PUSH1 0xA PUSH3 0x123210 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x15DC PUSH1 0xA PUSH1 0x9 MUL PUSH2 0x15BE PUSH3 0x123210 DUP8 DUP9 MUL PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x756E646572666C6F77206F6E207765696768742063616C63756C6174696F6E00 DUP2 MSTORE POP PUSH2 0x307B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4B4B PUSH1 0x2D SWAP2 CODECOPY PUSH2 0x30E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x15EC JUMPI INVALID JUMPDEST DIV PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6F766572666C6F77206F6E2077656967687420636F6D7075746174696F6E0000 DUP2 MSTORE POP PUSH2 0x2FDD JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH2 0x16AF PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x16EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 JUMPDEST PUSH4 0x59FA600 TIMESTAMP ADD DUP2 GT PUSH2 0x17B3 JUMPI PUSH2 0x17A7 DUP3 PUSH2 0x176C DUP6 DUP5 PUSH2 0x3174 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5374616B696E673A3A62616C616E63654F663A206F766572666C6F7700000000 DUP2 MSTORE POP PUSH2 0x2FDD JUMP JUMPDEST SWAP2 POP PUSH3 0x127500 ADD PUSH2 0x1751 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD DUP3 LT ISZERO PUSH2 0x17FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4AD1 PUSH1 0x4D SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x127500 PUSH1 0x1 SLOAD DUP5 SUB DUP2 PUSH2 0x180E JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 SLOAD PUSH3 0x127500 DUP3 MUL ADD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x1837 PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x17B9 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x127500 ADD JUMPDEST DUP3 DUP2 GT PUSH2 0x1879 JUMPI PUSH1 0x0 PUSH2 0x1859 DUP8 DUP4 PUSH2 0x3174 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO PUSH2 0x186F JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH3 0x127500 ADD PUSH2 0x1846 JUMP JUMPDEST POP DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x18A4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP4 POP DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x18D1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH1 0x0 SWAP1 PUSH3 0x127500 ADD JUMPDEST DUP4 DUP2 GT PUSH2 0x1955 JUMPI PUSH1 0x0 PUSH2 0x18F4 DUP9 DUP4 PUSH2 0x3174 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x194A JUMPI DUP2 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1912 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x192B JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0x18E1 JUMP JUMPDEST POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x19C3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x19D0 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x19DD DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x3521 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19EE DUP4 PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0xFEE JUMPI PUSH2 0x1A2E DUP5 PUSH2 0x1A10 DUP10 DUP5 DUP8 DUP12 PUSH2 0x3583 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4C77 PUSH1 0x4A SWAP2 CODECOPY PUSH2 0x2FDD JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x19F9 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A57 DUP7 DUP7 DUP6 PUSH2 0x35EB JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x1ABD JUMPI PUSH1 0x0 PUSH2 0x1A74 DUP7 DUP7 PUSH2 0x14B8 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1AA4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4B78 PUSH1 0x3D SWAP2 CODECOPY PUSH2 0x30E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x1AB4 JUMPI INVALID JUMPDEST DIV SWAP3 POP POP PUSH2 0x1AC2 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AE0 PUSH2 0x385F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1AF7 PUSH2 0x3863 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1B4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x1B97 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x1BA3 PUSH2 0x3872 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1BE6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x38CA SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1C34 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1C00 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0x1C2C JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0x1C34 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1BEB JUMP JUMPDEST POP DUP3 PUSH2 0x1C7F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE SWAP1 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP10 SWAP2 DUP10 SWAP2 PUSH1 0x3C ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1CCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0x1D30 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP9 DUP2 EQ PUSH2 0x1D76 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DB5 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x38D1 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E09 DUP5 DUP5 PUSH2 0x3A3A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E15 DUP6 DUP6 PUSH2 0x3AE5 JUMP JUMPDEST SWAP5 DUP6 SWAP1 SUB SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1E32 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x1E72 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1EB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4F27 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1EE7 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x1F27 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1F82 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626C6F636B206D6F636B7570206164647265737320696E76616C696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x12 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FF4 DUP3 PUSH1 0x1 NUMBER SUB TIMESTAMP PUSH2 0x19E2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2002 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x2042 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND PUSH1 0x1 GT DUP1 ISZERO SWAP1 PUSH2 0x2066 JUMPI POP PUSH1 0x9 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND GT ISZERO JUMPDEST PUSH2 0x20A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B1E PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x20ED DUP6 DUP6 DUP6 PUSH2 0x35EB JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO DUP1 ISZERO PUSH2 0x2109 JUMPI POP PUSH2 0x2109 PUSH2 0x3B30 JUMP JUMPDEST ISZERO PUSH2 0x2112 JUMPI POP PUSH1 0x1 JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x2142 JUMPI PUSH1 0x0 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP6 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x218A DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x19DD DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x3521 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH2 0x4D41 PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2267 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2245 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x2267 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2253 JUMPI JUMPDEST POP POP SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH2 0x227C PUSH2 0x3BAC JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH2 0x4F50 PUSH1 0x4B SWAP2 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x4B ADD DUP3 KECCAK256 PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP4 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD DUP13 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP1 DUP5 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP5 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0xE2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH2 0x102 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH2 0x122 DUP6 ADD DUP1 DUP6 MSTORE DUP2 MLOAD SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE PUSH2 0x142 DUP7 ADD DUP1 DUP7 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP13 AND PUSH2 0x162 DUP8 ADD MSTORE PUSH2 0x182 DUP7 ADD DUP12 SWAP1 MSTORE PUSH2 0x1A2 DUP7 ADD DUP11 SWAP1 MSTORE SWAP4 MLOAD SWAP2 SWAP7 POP SWAP3 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1C2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH2 0x23D7 DUP2 PUSH2 0x3BB0 JUMP JUMPDEST PUSH2 0x2412 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4AA8 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0x2470 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5120 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0x24AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x485D PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x24BA DUP2 DUP13 DUP13 PUSH2 0x2B7C JUMP JUMPDEST PUSH2 0x12A1 DUP2 DUP13 DUP13 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x4B PUSH2 0x4F50 DUP3 CODECOPY PUSH1 0x4B ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24EA PUSH2 0x3BE9 JUMP JUMPDEST DUP3 LT PUSH2 0x2527 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x44 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x50DC PUSH1 0x44 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x2560 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x25EC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x262F JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x26FA JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x2661 PUSH2 0x4845 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x26D5 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x2115 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x26EC JUMPI DUP2 SWAP4 POP PUSH2 0x26F3 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x2637 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2751 DUP2 PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2792 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x48AA PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x27A3 PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27B1 JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x27C1 CALLER DUP6 PUSH1 0x1 NUMBER SUB PUSH2 0x35EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x280B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4BF8 PUSH1 0x4B SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2816 CALLER DUP6 DUP4 PUSH2 0x3C2E JUMP JUMPDEST PUSH2 0x2821 CALLER DUP5 DUP4 PUSH2 0x3CBF JUMP JUMPDEST PUSH2 0x282B DUP5 DUP3 PUSH2 0x3D42 JUMP JUMPDEST PUSH2 0x2835 DUP4 DUP3 PUSH2 0x3DBA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 PUSH2 0x289F JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE DUP1 JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x28D2 DUP3 DUP8 DUP6 PUSH2 0x3E25 JUMP JUMPDEST PUSH2 0x28DD DUP2 DUP7 DUP6 PUSH2 0x3EC2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x809D79C94C86576D61AFEF75495B8DF415224BF885310FED7EA315039F8C5B4C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x293A PUSH2 0x3BE9 JUMP JUMPDEST DUP3 LT PUSH2 0x2977 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x502E PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x299B JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1FF4 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x2A03 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x1FF4 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x2A34 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1FF4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x2AED JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x2A66 PUSH2 0x4845 JUMP JUMPDEST POP PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x2AC8 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x1FF4 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x2ADF JUMPI DUP2 SWAP4 POP PUSH2 0x2AE6 JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x2A3C JUMP JUMPDEST POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B30 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x2B70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2B79 DUP2 PUSH2 0x3F45 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND SWAP1 PUSH2 0x2BAF DUP6 DUP5 PUSH2 0x3174 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP11 DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP10 DUP2 MSTORE SWAP3 MLOAD SWAP6 SWAP7 POP SWAP5 SWAP4 DUP8 AND SWAP4 PUSH32 0xB846DC53D3621F480D692E73F4473156D20F23FF6B2C8237B7130B883226CCA9 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0xE09 DUP3 DUP6 DUP4 DUP7 PUSH2 0x3FE5 JUMP JUMPDEST PUSH2 0x2C36 PUSH2 0x3B30 JUMP JUMPDEST ISZERO PUSH2 0x19DD JUMPI PUSH1 0x0 PUSH2 0x2C50 DUP3 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x4049 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 AND SWAP1 DUP5 AND DUP2 EQ PUSH2 0x2C8F JUMPI PUSH2 0x2C8F DUP6 DUP6 DUP5 PUSH2 0x2B7C JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC24A0F8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CE0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2CF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x2D0D DUP5 PUSH3 0x24EA00 PUSH4 0xFFFFFFFF PUSH2 0x4049 AND JUMP JUMPDEST SWAP3 POP DUP1 DUP4 EQ ISZERO PUSH2 0x2D53 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 AND SWAP3 POP DUP6 AND DUP3 EQ PUSH2 0x2D53 JUMPI PUSH2 0x2D53 DUP7 DUP7 DUP6 PUSH2 0x2B7C JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x2DA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4BB5 PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x2DB4 JUMPI PUSH2 0x2DB1 DUP5 PUSH2 0x17B9 JUMP JUMPDEST SWAP4 POP JUMPDEST TIMESTAMP DUP5 GT PUSH2 0x2DF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4EC9 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2E04 JUMPI DUP6 SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2E16 JUMPI DUP3 SWAP2 POP JUMPDEST DUP1 PUSH2 0x2E3C JUMPI PUSH1 0x0 PUSH2 0x2E2C PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x2E3A JUMPI DUP1 SWAP5 POP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x2E48 DUP5 DUP7 PUSH2 0x3174 JUMP JUMPDEST SWAP1 POP PUSH2 0x2E56 DUP8 DUP8 DUP7 DUP9 PUSH2 0x40A3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 AND SWAP1 DUP5 AND DUP2 EQ PUSH2 0x2F0D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x2ECA DUP2 DUP8 DUP5 PUSH2 0x3E25 JUMP JUMPDEST PUSH2 0x2F0A DUP3 DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5374616B696E673A3A7374616B653A2062616C616E6365206F766572666C6F77 DUP2 MSTORE POP PUSH2 0x2FDD JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH2 0x2F18 DUP5 DUP8 DUP10 PUSH2 0x3EC2 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB846DC53D3621F480D692E73F4473156D20F23FF6B2C8237B7130B883226CCA9 DUP10 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2F84 DUP6 DUP6 PUSH2 0x14B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2F92 DUP7 DUP6 PUSH2 0x2930 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x2FC2 DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4E42 PUSH1 0x3B SWAP2 CODECOPY PUSH2 0x30E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x2FD2 JUMPI INVALID JUMPDEST DIV SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x1AC2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3040 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3028 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x306D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO DUP3 SWAP1 PUSH2 0x30E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3040 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3028 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x3100 JUMPI POP PUSH1 0x0 PUSH2 0x2115 JUMP JUMPDEST DUP4 DUP4 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP6 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP4 AND DUP2 PUSH2 0x311C JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND EQ DUP4 SWAP1 PUSH2 0x1AC2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3040 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3028 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x0 NOT PUSH4 0xFFFFFFFF SWAP2 DUP3 AND ADD AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x31F1 JUMPI POP PUSH2 0x31F1 PUSH2 0x3B30 JUMP JUMPDEST ISZERO PUSH2 0x31FB JUMPI PUSH2 0xF54 JUMP JUMPDEST PUSH2 0x3204 DUP4 PUSH2 0x41E8 JUMP JUMPDEST SWAP3 POP PUSH2 0x3210 DUP5 DUP5 PUSH2 0x3A3A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3222 JUMPI CALLER SWAP2 POP JUMPDEST PUSH2 0x322C DUP4 DUP6 PUSH2 0x3D42 JUMP JUMPDEST PUSH2 0x3237 CALLER DUP5 DUP7 PUSH2 0x3C2E JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3266 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH2 0x3E25 JUMP JUMPDEST DUP3 TIMESTAMP LT DUP1 ISZERO PUSH2 0x3278 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3282 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x33F8 JUMPI PUSH1 0x0 PUSH2 0x3293 DUP6 DUP6 PUSH2 0x3AE5 JUMP JUMPDEST SWAP5 DUP6 SWAP1 SUB SWAP5 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x33F6 JUMPI PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x32F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A78 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3365 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x337B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0xD SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xABE979E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xABE979E1 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP9 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x346D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x34C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A05 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP4 ISZERO ISZERO DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0x667B6C8ED8622DAE7927A8B0837455098E32037A0181F9A2E21B9B72FEAD6CC7 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3529 PUSH2 0x3B30 JUMP JUMPDEST ISZERO PUSH2 0xF54 JUMPI PUSH1 0x0 PUSH2 0x3543 DUP5 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x4049 AND JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x3551 JUMPI POP DUP1 TIMESTAMP LT ISZERO JUMPDEST ISZERO PUSH2 0xE09 JUMPI PUSH1 0x0 PUSH2 0x3566 CALLER DUP4 PUSH1 0x1 NUMBER SUB PUSH2 0x35EB JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x2D53 JUMPI PUSH2 0x2D53 DUP2 DUP4 DUP7 DUP7 PUSH2 0x31D5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3590 DUP6 DUP6 PUSH2 0x14B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x359F DUP8 DUP8 DUP7 PUSH2 0x24E0 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x35CF DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x48EC PUSH1 0x47 SWAP2 CODECOPY PUSH2 0x30E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x35DF JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35F5 PUSH2 0x3BE9 JUMP JUMPDEST DUP3 LT PUSH2 0x3632 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4F9B PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x363B DUP4 PUSH2 0x41E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP4 POP PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x3677 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x3703 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x3746 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x3811 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x3778 PUSH2 0x4845 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x37EC JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x2115 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x3803 JUMPI DUP2 SWAP4 POP PUSH2 0x380A JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x374E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH4 0xC09DDFD PUSH1 0xE0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x38AC JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x390F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x38F0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3971 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3976 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x19DD JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0x39C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4980 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x39F3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x420D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3040 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3028 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x3A82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4933 PUSH1 0x4D SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A92 CALLER DUP4 PUSH1 0x1 NUMBER SUB PUSH2 0x35EB JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO PUSH2 0x19DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A53 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3AF1 TIMESTAMP PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3AFF DUP5 DUP4 PUSH2 0x14B8 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 POP PUSH1 0x64 SWAP1 PUSH1 0xA DUP8 DUP5 MUL DUP3 AND DIV AND DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDBB049D1 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xDBB049D1 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3BA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x1FF4 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x12 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7F6C6F1 PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x7F6C6F10 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x3CB1 SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x4C43 SWAP1 DUP4 ADD CODECOPY PUSH2 0x307B JUMP JUMPDEST SWAP1 POP PUSH2 0x2D53 DUP7 DUP7 DUP6 DUP5 PUSH2 0x4307 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x33 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x3CB1 SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x4E0F SWAP1 DUP4 ADD CODECOPY PUSH2 0x2FDD JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x6 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP3 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x35 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP1 SWAP3 PUSH2 0x3DAD SWAP3 DUP6 SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x4FD8 SWAP1 DUP4 ADD CODECOPY PUSH2 0x307B JUMP JUMPDEST SWAP1 POP PUSH2 0xE09 DUP6 DUP5 DUP4 PUSH2 0x4487 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x6 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP3 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x34 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP1 SWAP3 PUSH2 0x3DAD SWAP3 DUP6 SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x4D0D SWAP1 DUP4 ADD CODECOPY PUSH2 0x2FDD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP2 SWAP1 DUP5 AND DUP3 GT ISZERO PUSH2 0x3EB6 JUMPI PUSH2 0x3EB3 DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x50A4 PUSH1 0x38 SWAP2 CODECOPY PUSH2 0x307B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2D53 DUP7 DUP7 DUP6 DUP5 PUSH2 0x45C5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x37 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x3EB3 SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x506D SWAP1 DUP4 ADD CODECOPY PUSH2 0x2FDD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3F8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A2D PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x4010 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0xF54 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x402F JUMPI PUSH2 0x402F DUP5 DUP3 DUP5 PUSH2 0x3E25 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xF54 JUMPI PUSH2 0xF54 DUP4 DUP3 DUP5 PUSH2 0x3EC2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2115 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x410A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x411E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x4142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x414E DUP5 DUP5 PUSH2 0x3174 JUMP JUMPDEST SWAP1 POP PUSH2 0x4173 DUP2 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4EFF PUSH1 0x28 SWAP2 CODECOPY PUSH2 0x2FDD JUMP JUMPDEST SWAP1 POP PUSH2 0x417F DUP4 DUP7 PUSH2 0x3DBA JUMP JUMPDEST PUSH2 0x418A DUP5 DUP5 DUP8 PUSH2 0x3CBF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP9 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP4 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH32 0xFC5B1BAC0416800B42A669229A346B6E5A15DB3896339DBDC5FA376E1E4570A SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x41F4 DUP4 PUSH2 0x17B9 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 EQ PUSH2 0x4206 JUMPI PUSH3 0x127500 DUP2 ADD SWAP3 POP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x424C JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x42A5 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x4269 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x4286 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x4254 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x42FA JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x42BE JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x42DB JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x42A9 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x432B NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4DD1 PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x47E8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x437C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x43DE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP8 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0xE09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 SWAP1 SWAP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA DUP11 MSTORE DUP5 DUP2 KECCAK256 DUP10 DUP3 MSTORE DUP11 MSTORE DUP5 DUP2 KECCAK256 DUP9 DUP8 AND DUP3 MSTORE DUP11 MSTORE DUP5 DUP2 KECCAK256 SWAP4 MLOAD DUP5 SLOAD SWAP4 MLOAD SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP8 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP5 DUP6 AND OR SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP3 SSTORE SWAP1 DUP5 MSTORE PUSH1 0xB DUP8 MSTORE DUP2 DUP5 KECCAK256 SWAP6 DUP5 MSTORE SWAP5 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP3 ADD SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44AB NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4DD1 PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x47E8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x44EA JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x453A JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP8 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0xF54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x6 DUP3 MSTORE DUP5 DUP2 KECCAK256 DUP9 DUP8 AND DUP3 MSTORE DUP3 MSTORE DUP5 DUP2 KECCAK256 SWAP4 MLOAD DUP5 SLOAD SWAP4 MLOAD PUSH4 0xFFFFFFFF NOT SWAP5 DUP6 AND SWAP2 DUP9 AND SWAP2 SWAP1 SWAP2 OR PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL SWAP2 SWAP1 SWAP9 AND MUL SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP3 SSTORE SWAP6 DUP5 MSTORE PUSH1 0x7 SWAP1 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 AND PUSH1 0x1 SWAP1 SWAP3 ADD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45E9 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4DD1 PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x47E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 DUP5 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x467F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP4 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x46E1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND MUL OR SWAP1 SSTORE PUSH2 0x478B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP14 DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP13 DUP8 AND DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP5 MLOAD SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP6 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP6 DUP7 AND OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP6 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x9 DUP5 MSTORE DUP5 DUP3 KECCAK256 DUP11 DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP9 ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH32 0xC7B38FB25352E6F351F57E2C922F84DB5C97E09A6246BBE1D2EEDFCDB01C4C62 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x20 SHL DUP5 LT PUSH2 0x483D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3040 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3028 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP INVALID MSTORE8 PUSH21 0x616B696E673A3A64656C656761746542795369673A KECCAK256 PUSH20 0x69676E6174757265206578706972656474686572 PUSH6 0x206973206E6F KECCAK256 PUSH15 0x6577207374616B696E6720636F6E74 PUSH19 0x616374207365745374616B696E673A3A657874 PUSH6 0x6E645374616B PUSH10 0x6E674475726174696F6E GASPRICE KECCAK256 PUSH4 0x616E6E6F PUSH21 0x2072656475636520746865207374616B696E672064 PUSH22 0x726174696F6E57656967687465645374616B696E673A GASPRICE 0x5F PUSH21 0x6F74616C506F776572427944617465466F7244656C PUSH6 0x67617465653A KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F775374616B696E673A3A PUSH24 0x697468647261773A20616D6F756E74206F6620746F6B656E PUSH20 0x20746F2062652077697468647261776E206E6565 PUSH5 0x7320746F20 PUSH3 0x652062 PUSH10 0x67676572207468616E20 ADDRESS PUSH19 0x656365697665417070726F76616C3A20547261 PUSH15 0x73616374696F6E2065786563757469 PUSH16 0x6E2072657665727465642E5765696768 PUSH21 0x65645374616B696E673A3A6765745072696F72546F PUSH21 0x616C566F74696E67506F7765723A206F766572666C PUSH16 0x77206F6E20746F74616C20766F74696E PUSH8 0x20706F7765722063 PUSH16 0x6D7075746174696F6E5374616B696E67 GASPRICE GASPRICE PUSH24 0x697468647261773A20546F6B656E207472616E7366657220 PUSH7 0x61696C65644F77 PUSH15 0x61626C653A206E6577206F776E6572 KECCAK256 PUSH10 0x7320746865207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x6573735374616B696E673A3A77697468647261 PUSH24 0x3A206E6F7420656E6F7567682062616C616E63655374616B PUSH10 0x6E673A3A776974686472 PUSH2 0x773A KECCAK256 CHAINID PUSH6 0x655368617269 PUSH15 0x672061646472657373207761736E27 PUSH21 0x207365745374616B696E673A3A64656C6567617465 TIMESTAMP PUSH26 0x5369673A20696E76616C6964207369676E617475726557656967 PUSH9 0x7465645374616B696E PUSH8 0x3A3A74696D657374 PUSH2 0x6D70 SLOAD PUSH16 0x4C6F636B446174653A2074696D657374 PUSH2 0x6D70 KECCAK256 PUSH13 0x696573206265666F726520636F PUSH15 0x7472616374206372656174696F6E77 PUSH6 0x696768742073 PUSH4 0x616C696E PUSH8 0x20646F65736E2774 KECCAK256 PUSH3 0x656C6F PUSH15 0x6720746F2072616E6765205B312C20 CODECOPY 0x5D PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77206F6E207765696768 PUSH21 0x20636F6D7075746174696F6E576569676874656453 PUSH21 0x616B696E673A3A77656967687465645374616B6542 PUSH26 0x446174653A206D756C7469706C69636174696F6E206F76657266 PUSH13 0x6F775374616B696E673A3A7374 PUSH2 0x6B65 GASPRICE KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206F6620746F6B656E7320746F207374616B6520 PUSH15 0x6565647320746F2062652062696767 PUSH6 0x72207468616E KECCAK256 ADDRESS MSTORE8 PUSH21 0x616B696E673A3A657874656E645374616B696E6744 PUSH22 0x726174696F6E3A206E6F7468696E67207374616B6564 KECCAK256 PUSH22 0x6E74696C207468652070726576696F7573206C6F636B KECCAK256 PUSH5 0x6174655374 PUSH2 0x6B69 PUSH15 0x673A3A5F6465637265617365557365 PUSH19 0x5374616B653A207374616B656420616D6F756E PUSH21 0x20756E646572666C6F775765696768746564537461 PUSH12 0x696E673A3A6765745072696F PUSH19 0x566F7465733A206F766572666C6F77206F6E20 PUSH21 0x6F74616C20766F74696E6720706F77657220636F6D PUSH17 0x75746174696F6E57656967687465645374 PUSH2 0x6B69 PUSH15 0x673A3A636F6D707574655765696768 PUSH21 0x4279446174653A2064617465206E6565647320746F KECCAK256 PUSH3 0x652062 PUSH10 0x67676572207468616E20 PUSH20 0x74617274446174655374616B696E673A3A5F696E PUSH4 0x72656173 PUSH6 0x4461696C7953 PUSH21 0x616B653A207374616B656420616D6F756E74206F76 PUSH6 0x72666C6F7745 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH22 0x696E7432353620636861696E49642C61646472657373 KECCAK256 PUSH23 0x6572696679696E67436F6E7472616374295374616B696E PUSH8 0x3A3A636F6D707574 PUSH6 0x576569676874 TIMESTAMP PUSH26 0x446174653A72656D61696E696E672074696D652063616E277420 PUSH3 0x652062 PUSH10 0x67676572207468616E20 PUSH14 0x6178206475726174696F6E537461 PUSH12 0x696E673A3A5F777269746553 PUSH21 0x616B696E67436865636B706F696E743A20626C6F63 PUSH12 0x206E756D6265722065786365 PUSH6 0x647320333220 PUSH3 0x697473 MSTORE8 PUSH21 0x616B696E673A3A5F696E6372656173655573657253 PUSH21 0x616B653A207374616B656420616D6F756E74206F76 PUSH6 0x72666C6F7757 PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A5F746F74616C506F776572427944 PUSH2 0x7465 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72576569676874 PUSH6 0x645374616B65 GASPRICE KECCAK256 PUSH16 0x766572666C6F77206F6E20746F74616C KECCAK256 PUSH24 0x656967687420636F6D7075746174696F6E5374616B696E67 GASPRICE GASPRICE PUSH21 0x696D657374616D70546F4C6F636B446174653A2073 PUSH21 0x616B696E6720706572696F6420746F6F2073686F72 PUSH21 0x5374616B696E673A3A696E6372656173655374616B PUSH6 0x3A2062616C61 PUSH15 0x6365206F766572666C6F7763616E27 PUSH21 0x20726573657420746865206E6577207374616B696E PUSH8 0x20636F6E74726163 PUSH21 0x20746F203044656C65676174696F6E286164647265 PUSH20 0x732064656C6567617465652C75696E7432353620 PUSH13 0x6F636B446174652C75696E7432 CALLDATALOAD CALLDATASIZE KECCAK256 PUSH15 0x6F6E63652C75696E74323536206578 PUSH17 0x6972792957656967687465645374616B69 PUSH15 0x673A3A6765745072696F7255736572 MSTORE8 PUSH21 0x616B65416E64446174653A206E6F74207965742064 PUSH6 0x7465726D696E PUSH6 0x645374616B69 PUSH15 0x673A3A5F6465637265617365446169 PUSH13 0x795374616B653A207374616B65 PUSH5 0x20616D6F75 PUSH15 0x7420756E646572666C6F7746656553 PUSH9 0x6172696E6720616464 PUSH19 0x6573732073686F756C646E2774206265203057 PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A6765745072696F72546F74616C53 PUSH21 0x616B6573466F72446174653A206E6F742079657420 PUSH5 0x657465726D PUSH10 0x6E65645374616B696E67 GASPRICE GASPRICE 0x5F PUSH10 0x6E63726561736544656C PUSH6 0x676174655374 PUSH2 0x6B65 GASPRICE KECCAK256 PUSH20 0x74616B656420616D6F756E74206F766572666C6F PUSH24 0x5374616B696E673A3A5F646563726561736544656C656761 PUSH21 0x655374616B653A207374616B656420616D6F756E74 KECCAK256 PUSH22 0x6E646572666C6F7757656967687465645374616B696E PUSH8 0x3A3A676574507269 PUSH16 0x725374616B65427944617465466F7244 PUSH6 0x6C6567617465 PUSH6 0x3A206E6F7420 PUSH26 0x65742064657465726D696E65645374616B696E673A3A64656C65 PUSH8 0x6174654279536967 GASPRICE KECCAK256 PUSH10 0x6E76616C6964206E6F6E PUSH4 0x65A26562 PUSH27 0x7A72315820DBC89F0CB5D2D9EDE59EDAC39673220839052DD43873 GT SWAP15 DUP6 PUSH12 0x1C102FF56E6864736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "99:588:114:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;99:588:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:24:59;;;:::i;:::-;;;;;;;;;;;;;;;;16300:276:57;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16300:276:57;;;;;;;;:::i;:::-;;4986:34:59;;;:::i;:::-;;;;-1:-1:-1;;;;;4986:34:59;;;;;;;;;;;;;;5691:49;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5691:49:59;;:::i;:::-;;;;;;;;;;;;;;;;;;2164:212:57;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;2164:212:57;;;;;-1:-1:-1;;;;;2164:212:57;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5786:48:59:-;;;:::i;1160:44::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1160:44:59;;;;;;;;;;;;;;15926:113:60;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15926:113:60;-1:-1:-1;;;;;15926:113:60;;:::i;2358:122:59:-;;;:::i;1492:621:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1492:621:60;;;;;;;;;:::i;1442:171:57:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;1442:171:57;;;;;;;;;-1:-1:-1;;;;;1442:171:57;;;;;;;;;;;;:::i;2115:64:59:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2115:64:59;;;;;;;;:::i;8916:672:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8916:672:60;;;;;;;;;;;;;:::i;10680:280:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10680:280:57;;;;;;;;;;:::i;5570:38:59:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5570:38:59;-1:-1:-1;;;;;5570:38:59;;:::i;976:236:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;976:236:60;-1:-1:-1;;;;;976:236:60;;:::i;7787:1233:57:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;7787:1233:57;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7787:1233:57;;;;;;;;;;;;:::i;173:30:114:-;;;:::i;24890:401:57:-;;;:::i;25613:128::-;;;:::i;23962:186::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23962:186:57;-1:-1:-1;;;;;23962:186:57;;:::i;13498:830:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13498:830:60;;;;;;;:::i;4346:99:59:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4346:99:59;;-1:-1:-1;;;;;4346:99:59;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;4346:99:59;;;;;;;;;;;;;;;;3804:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3804:103:59;;-1:-1:-1;;;;;3804:103:59;;;;;;;;;;;;;:::i;15697:107:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15697:107:60;-1:-1:-1;;;;;15697:107:60;;:::i;15824:255:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15824:255:57;-1:-1:-1;;;;;15824:255:57;;:::i;14674:564:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14674:564:60;;:::i;25897:876:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25897:876:57;-1:-1:-1;;;;;25897:876:57;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25897:876:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25897:876:57;;;;;;;;;;;;;;;;;;;4774:41:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4774:41:59;-1:-1:-1;;;;;4774:41:59;;:::i;9988:396:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9988:396:57;;-1:-1:-1;;;;;9988:396:57;;;;;;;;;;-1:-1:-1;;;;;9988:396:57;;:::i;5069:614:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5069:614:60;;;;;;;;;;;;;:::i;851:68:142:-;;;:::i;10010:443:60:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;10010:443:60;;;;;;;;;;;;;;;;;;:::i;1134:83:142:-;;;:::i;494:849:48:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;494:849:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;494:849:48;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;494:849:48;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;494:849:48;;-1:-1:-1;494:849:48;-1:-1:-1;494:849:48;:::i;3472:60:59:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3472:60:59;;:::i;:::-;;;;;;;;;;;;;;;;;;;4062:83;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4062:83:59;;;;;;;;:::i;13926:254:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13926:254:57;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13926:254:57;;;;;;;;;;;;;;;;;;;;;;;;2262:31:59;;;:::i;23558:216:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23558:216:57;-1:-1:-1;;;;;23558:216:57;;:::i;315:185:114:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;315:185:114;-1:-1:-1;;;;;315:185:114;;:::i;2040:22:59:-;;;:::i;5310:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5310:48:59;-1:-1:-1;;;;;5310:48:59;;:::i;2805:33::-;;;:::i;1509:48::-;;;:::i;19766:145:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19766:145:57;-1:-1:-1;;;;;19766:145:57;;:::i;24304:252::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24304:252:57;-1:-1:-1;;;;;24304:252:57;;:::i;5091:52:59:-;;;:::i;10922:454:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10922:454:60;;;;;;;;;;;;;:::i;1409:41:59:-;;;:::i;20053:237:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20053:237:57;;:::i;9308:324::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9308:324:57;;-1:-1:-1;;;;;9308:324:57;;;;;;;;;;-1:-1:-1;;;;;9308:324:57;;:::i;4587:79:59:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4587:79:59;;;;;;;;:::i;3264:80::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3264:80:59;;;;;;;;;:::i;18018:1432:57:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;18018:1432:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2566:134:59:-;;;:::i;6946:1208:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6946:1208:60;;;;;;;;;;;;;:::i;4901:1518:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4901:1518:57;;;;;;;:::i;3381:1079:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3381:1079:60;;;;;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;1945:24:59:-;;;;:::o;16300:276:57:-;16366:42;16376:10;16388:9;16399:8;16366:9;:42::i;:::-;16526:46;16540:10;16552:9;16563:8;16526:13;:46::i;:::-;16300:276;;:::o;4986:34:59:-;;;-1:-1:-1;;;;;4986:34:59;;:::o;5691:49::-;;;;;;;;;;;;;;;:::o;2164:212:57:-;323:10:48;345:4;323:27;315:52;;;;;-1:-1:-1;;;315:52:48;;;;;;;;;;;;-1:-1:-1;;;315:52:48;;;;;;;;;;;;;;;2315:57:57;2322:6;2330;2338:5;2345:8;2355:9;2366:5;2315:6;:57::i;:::-;2164:212;;;;;:::o;5786:48:59:-;;;-1:-1:-1;;;;;5786:48:59;;:::o;1160:44::-;1203:1;1160:44;:::o;15926:113:60:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;15984:14:60;;16001:5;15984:14;;;:6;:14;;;;;;;;;:22;;-1:-1:-1;;15984:22:60;;;16015:20;;;;;;;;;;;;;;;;;15926:113;:::o;2358:122:59:-;2400:80;;;;;;;;;;;;;;;;;;2358:122;:::o;1492:621:60:-;1581:23;1746:13;1762:25;1782:4;1762:19;:25::i;:::-;1746:41;-1:-1:-1;1548:9:59;1805:20:60;;1746:41;1860:250;1889:3;1884:1;:8;1860:250;;1934:171;1945:16;1967:40;1985:1;1988:5;1995:11;1967:40;;:17;:40::i;:::-;1934:171;;;;;;;;;;;;;;;;;:5;:171::i;:::-;1915:190;-1:-1:-1;1041:7:59;1894:14:60;1860:250;;;;1492:621;;;;;;:::o;1442:171:57:-;1548:61;1555:10;1567:6;1575:5;1582:8;1592:9;1603:5;1548:6;:61::i;:::-;1442:171;;;;:::o;2115:64:59:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2115:64:59;;:::o;8916:672:60:-;9029:12;9183:13;9199:25;9219:4;9199:19;:25::i;:::-;9183:41;-1:-1:-1;1548:9:59;9242:20:60;;9183:41;9297:288;9326:3;9321:1;:8;9297:288;;9352:20;9375:51;9395:7;9404:1;9407:5;9414:11;9375:19;:51::i;:::-;9352:74;-1:-1:-1;;;;;;9435:17:60;;;9431:150;;9468:107;9474:5;9481:13;9468:107;;;;;;;;;;;;;;;;;:5;:107::i;:::-;9460:115;;9431:150;-1:-1:-1;1041:7:59;9331:14:60;9297:288;;;;8916:672;;;;;;;:::o;10680:280:57:-;792:9:60;:7;:9::i;:::-;:31;;;-1:-1:-1;812:10:60;805:18;;;;:6;:18;;;;;;;;792:31;784:56;;;;;-1:-1:-1;;;784:56:60;;;;;;;;;;;;-1:-1:-1;;;784:56:60;;;;;;;;;;;;;;;-1:-1:-1;;;;;10776:25:57;;;;;;;:16;:25;;;;;;:32;;-1:-1:-1;;10776:32:57;10804:4;10776:32;;;10812:56;;-1:-1:-1;;;10812:56:57;;;;;;;;;;10776:25;;10812:46;;:56;;;;;10776:25;10812:56;;;;;10776:25;;10812:56;;;5:2:-1;;;;30:1;27;20:12;5:2;10812:56:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;10872:25:57;;;10900:5;10872:25;;;:16;:25;;;;;;;;;:33;;-1:-1:-1;;10872:33:57;;;10915:41;;;;;;;;;;;;;;;;;;;-1:-1:-1;10915:41:57;;;;;;;;;10680:280;;:::o;5570:38:59:-;;;;;;;;;;;;;;;:::o;976:236:60:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;1066:35:60;;1058:80;;;;;-1:-1:-1;;;1058:80:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1142:20;:66;;-1:-1:-1;;;;;;1142:66:60;-1:-1:-1;;;;;1142:66:60;;;;;;;;;;976:236::o;7787:1233:57:-;8208:13;8224:44;8262:5;8244:15;:23;8224:19;:44::i;:::-;8208:60;;1548:9:59;8276:8:57;:23;8272:62;;;1548:9:59;8306:23:57;;8272:62;8337:11;8351:47;8389:8;8371:15;:26;8351:19;:47::i;:::-;8337:61;;8402:20;8441:14;8432:5;8426:3;:11;8425:30;;;;;;8458:1;8425:34;8402:57;;8463:25;8500:12;8491:6;:21;;;;;;8463:49;;8633:1;8617:12;:17;8613:142;;8641:109;8648:10;8712:1;8697:12;:16;8676:17;:38;8667:6;:47;8717:5;8724:8;8734:9;8745:4;8641:6;:109::i;:::-;8822:22;;;8805:212;8851:3;8846:1;:8;8805:212;;8937:75;8944:10;8963:17;8983:1;8986:8;8996:9;9007:4;8937:6;:75::i;:::-;8856:19;;8805:212;;;;7787:1233;;;;;;;;;;:::o;173:30:114:-;;;-1:-1:-1;;;;;173:30:114;;:::o;24890:401:57:-;24948:18;;;;;-1:-1:-1;;;;;24948:18:57;24940:81;;;;-1:-1:-1;;;24940:81:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24890:401::o;25613:128::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;25661:11:57;:18;;-1:-1:-1;;25661:18:57;25675:4;25661:18;;;25703:8;;:33;;;-1:-1:-1;;;25703:33:57;;25730:4;25703:33;;;;;;25688:49;;-1:-1:-1;;;;;25703:8:57;;:18;;:33;;;;;;;;;;;;;;:8;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;25703:33:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25703:33:57;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25703:33:57;25688:49;;;;;;;;;;;25703:33;25688:49;;;25613:128::o;23962:186::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;24035:25:57;;24027:71;;;;-1:-1:-1;;;24027:71:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24102:10;:42;;-1:-1:-1;;;;;;24102:42:57;-1:-1:-1;;;;;24102:42:57;;;;;;;;;;23962:186::o;13498:830:60:-;13581:13;13616:9;13608:4;:17;;13600:106;;;;-1:-1:-1;;;13600:106:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13735:16;;;1548:9:59;13764:29:60;-1:-1:-1;13764:29:60;13756:119;;;;-1:-1:-1;;;13756:119:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13920:8;13971:6;13953:13;1548:9:59;13938:28:60;-1:-1:-1;;;;;13931:47:60;;;;;;;13920:58;;14059:265;1448:2:59;1635:11;-1:-1:-1;;;;;14087:196:60;:175;1448:2:59;1203:1;14098:33:60;14137:67;1635:11:59;14167:1:60;14163;:5;14137:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;14087:175;;;;;;;;;;;;;;;;;:5;:175::i;:::-;-1:-1:-1;;;;;14087:196:60;;;;;;;14059:265;;;;;;;;;;;;;;;;;:5;:265::i;:::-;14050:274;13498:830;-1:-1:-1;;;;;13498:830:60:o;4346:99:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4346:99:59;;-1:-1:-1;;;;;4346:99:59;;:::o;3804:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3804:103:59;;-1:-1:-1;;;;;3804:103:59;;:::o;15697:107:60:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;15752:14:60;;;;;;:6;:14;;;;;;;;;:21;;-1:-1:-1;;15752:21:60;15769:4;15752:21;;;15782:18;;;;;;;;;;;;;;;;;15697:107;:::o;15824:255:57:-;15918:9;;15881:14;;15901:175;1548:9:59;15934:15:57;:30;15929:1;:35;15901:175;;15997:74;16003:7;16012:26;16027:7;16036:1;16012:14;:26::i;:::-;15997:74;;;;;;;;;;;;;;;;;:5;:74::i;:::-;15987:84;-1:-1:-1;1041:7:59;15966:14:57;15901:175;;;;15824:255;;;:::o;14674:564:60:-;14743:16;14786:9;;14773;:22;;14765:112;;;;-1:-1:-1;;;14765:112:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15115:25;1041:7:59;15156:9:60;;15144;:21;15143:35;;;;;;15115:63;;15225:9;;1041:7:59;15193:17:60;:29;:41;15182:52;;14674:564;;;;:::o;25897:876:57:-;25954:22;25978;26006:14;26023:51;1548:9:59;26043:15:57;:30;26023:19;:51::i;:::-;26257:9;;26006:68;;-1:-1:-1;26108:13:57;;1041:7:59;26257:21:57;26240:133;26285:6;26280:1;:11;26240:133;;26347:1;26318:26;26333:7;26342:1;26318:14;:26::i;:::-;-1:-1:-1;;;;;26318:30:57;;26314:55;;;26356:7;;;;;26314:55;1041:7:59;26293:14:57;26240:133;;;;26398:5;26384:20;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;26384:20:57;;26376:28;;26430:5;26417:19;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;26417:19:57;-1:-1:-1;26586:9:57;;26408:28;;-1:-1:-1;26552:9:57;;1041:7:59;26586:21:57;26569:201;26614:6;26609:1;:11;26569:201;;26643:14;26660:26;26675:7;26684:1;26660:14;:26::i;:::-;26643:43;-1:-1:-1;;;;;;26695:11:57;;;26691:75;;26725:1;26714:5;26720:1;26714:8;;;;;;;;;;;;;:12;;;;;26744:7;26732:6;26739:1;26732:9;;;;;;;;-1:-1:-1;;;;;26732:19:57;;;:9;;;;;;;;;;;:19;26757:3;;;;;26691:75;-1:-1:-1;1041:7:59;26622:14:57;26569:201;;;;25897:876;;;;;;:::o;4774:41:59:-;;;;;;;;;;;;;:::o;9988:396:57:-;10109:10;10092:28;;;;:16;:28;;;;;;;;10084:53;;;;;-1:-1:-1;;;10084:53:57;;;;;;;;;;;;-1:-1:-1;;;10084:53:57;;;;;;;;;;;;;;;10142:40;10152:6;10160:5;10167:8;10177:4;10142:9;:40::i;:::-;10336:44;10350:6;10358:5;10365:8;10375:4;10336:13;:44::i;:::-;9988:396;;;:::o;5069:614:60:-;5174:12;5328:13;5344:25;5364:4;5344:19;:25::i;:::-;5328:41;-1:-1:-1;1548:9:59;5387:20:60;;5328:41;5442:238;5471:3;5466:1;:8;5442:238;;5505:170;5516:5;5527:61;5557:7;5566:1;5569:5;5576:11;5527:29;:61::i;:::-;5505:170;;;;;;;;;;;;;;;;;:5;:170::i;:::-;5497:178;-1:-1:-1;1041:7:59;5476:14:60;5442:238;;851:68:142;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;10010:443:60:-;10142:12;10160:13;10176:52;10201:7;10210:4;10216:11;10176:24;:52::i;:::-;10160:68;-1:-1:-1;;;;;;10236:10:60;;;10232:218;;10253:13;10269:36;10289:4;10295:9;10269:19;:36::i;:::-;10253:52;;1448:2:59;-1:-1:-1;;;;;10318:102:60;:86;10324:6;10332;10318:86;;;;;;;;;;;;;;;;;:5;:86::i;:::-;-1:-1:-1;;;;;10318:102:60;;;;;;;10310:110;;10232:218;;;;10444:1;10436:9;;10232:218;10010:443;;;;;;;:::o;1134:83:142:-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;494:849:48:-;677:11;:9;:11::i;:::-;-1:-1:-1;;;;;663:25:48;:10;-1:-1:-1;;;;;663:25:48;;655:50;;;;;-1:-1:-1;;;655:50:48;;;;;;;;;;;;-1:-1:-1;;;655:50:48;;;;;;;;;;;;;;;717:10;-1:-1:-1;;;;;717:20:48;;;709:45;;;;;-1:-1:-1;;;709:45:48;;;;;;;;;;;;-1:-1:-1;;;709:45:48;;;;;;;;;;;;;;;786:14;812:25;840:15;:13;:15::i;:::-;812:43;;859:10;872:14;880:5;;872:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;872:7:48;;-1:-1:-1;;;872:14:48:i;:::-;859:27;-1:-1:-1;895:9:48;890:120;914:9;:16;910:1;:20;890:120;;;953:9;963:1;953:12;;;;;;;;;;;;;;-1:-1:-1;;;;;946:19:48;;:3;-1:-1:-1;;;;;946:19:48;;;942:64;;;985:4;973:16;;995:5;;942:64;932:3;;890:120;;;;1021:9;1013:43;;;;;-1:-1:-1;;;1013:43:48;;;;;;;;;;;;-1:-1:-1;;;1013:43:48;;;;;;;;;;;;;;;1159:35;;1091:14;1176:10;1159:35;;;;;1091:14;;;;;;1188:5;;;;1159:35;;1188:5;;;;1159:35;1:33:-1;57:3;49:6;45:16;35:26;;1159:35:48;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1159:35:48;;;1148:76;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1148:76:48;;;;;;;;;;;-1:-1:-1;1148:76:48;-1:-1:-1;;;;;;1236:17:48;;;;;;;1228:45;;;;;-1:-1:-1;;;1228:45:48;;;;;;;;;;;;-1:-1:-1;;;1228:45:48;;;;;;;;;;;;;;;1295:7;1285:6;:17;1277:45;;;;;-1:-1:-1;;;1277:45:48;;;;;;;;;;;;-1:-1:-1;;;1277:45:48;;;;;;;;;;;;;;;1327:12;1333:5;;1327:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1327:5:48;;-1:-1:-1;;;1327:12:48:i;:::-;494:849;;;;;;;;;;:::o;3472:60:59:-;;;;;;;;;;;;;;;:::o;4062:83::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13926:254:57:-;14005:6;14013;14025:38;14049:6;14057:5;14025:23;:38::i;:::-;14067:21;14091:33;14110:6;14118:5;14091:18;:33::i;:::-;14136:23;;;;;13926:254;-1:-1:-1;;;;13926:254:57:o;2262:31:59:-;;;;;;:::o;23558:216:57:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;23647:33:57;;23639:87;;;;-1:-1:-1;;;23639:87:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23730:18;:40;;-1:-1:-1;;;;;23730:40:57;;;;;-1:-1:-1;;;;;;23730:40:57;;;;;;;;;23558:216::o;315:185:114:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;394:26:114;;386:67;;;;;-1:-1:-1;;;386:67:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;457:11;:39;;-1:-1:-1;;;;;;457:39:114;-1:-1:-1;;;;;457:39:114;;;;;;;;;;315:185::o;2040:22:59:-;;;-1:-1:-1;;;;;2040:22:59;;:::o;5310:48::-;;;;;;;;;;;;;;;:::o;2805:33::-;;;;;;-1:-1:-1;;;;;2805:33:59;;:::o;1509:48::-;1548:9;1509:48;:::o;19766:145:57:-;19831:6;19850:57;19864:7;19888:1;19873:12;:16;19891:15;19850:13;:57::i;:::-;19843:64;19766:145;-1:-1:-1;;19766:145:57:o;24304:252::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;24386:36:57;;1809:1:59;24386:36:57;;;;:76;;-1:-1:-1;1850:1:59;-1:-1:-1;;;;;24426:36:57;;;;24386:76;24374:144;;;;-1:-1:-1;;;24374:144:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24522:13;:30;;-1:-1:-1;;;;;24522:30:57;;;-1:-1:-1;;;24522:30:57;-1:-1:-1;;;;;24522:30:57;;;;;;;;;24304:252::o;5091:52:59:-;;;-1:-1:-1;;;5091:52:59;;-1:-1:-1;;;;;5091:52:59;;:::o;10922:454:60:-;11039:6;11051:17;11071:52;11096:7;11105:4;11111:11;11071:24;:52::i;:::-;11051:72;-1:-1:-1;;;;;;11287:15:60;;;:39;;;;;11306:20;:18;:20::i;:::-;11283:69;;;-1:-1:-1;11346:1:60;11283:69;11362:10;-1:-1:-1;10922:454:60;;;;;;:::o;1409:41:59:-;1448:2;1409:41;:::o;20053:237:57:-;20125:6;20159:36;;;:26;:36;;;;;;;;20206:16;:80;;20285:1;20206:80;;;20225:33;;;;:23;:33;;;;;;;;-1:-1:-1;;20259:16:57;;20225:51;;;;;;;;;:57;-1:-1:-1;;;20225:57:57;;-1:-1:-1;;;;;20225:57:57;20199:87;20053:237;-1:-1:-1;;;20053:237:57:o;9308:324::-;9394:41;9404:6;9412:5;9419:8;9429:5;9394:9;:41::i;:::-;9583:45;9597:6;9605:5;9612:8;9622:5;9583:13;:45::i;4587:79:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3264:80::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3264:80:59;;-1:-1:-1;;;;;3264:80:59;;:::o;18018:1432:57:-;18472:23;2400:80:59;;;;;;;;;;;;;;;;;;;18552:4:57;18536:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18560:12;:10;:12::i;:::-;18582:4;18508:80;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18508:80:57;-1:-1:-1;;;;;18508:80:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18508:80:57;;;18498:91;;;;;;18472:117;;18680:18;2612:88:59;;;;;;;;;;;;;;;;;;;18711:67:57;;;;;;;;-1:-1:-1;;;;;18711:67:57;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18711:67:57;;;;;18701:78;;;;;;-1:-1:-1;;;18811:57:57;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18811:57:57;;;;;;18801:68;;;;;;;;;-1:-1:-1;18893:26:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18701:78;;-1:-1:-1;18801:68:57;;-1:-1:-1;;;18893:26:57;;;;;;;18711:67;-1:-1:-1;;18893:26:57;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18893:26:57;;;;;;;;18873:46;;18997:42;19029:9;18997:31;:42::i;:::-;18989:96;;;;-1:-1:-1;;;18989:96:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19106:17:57;;;;;;:6;:17;;;;;:19;;;;;;;;19097:28;;19089:78;;;;-1:-1:-1;;;19089:78:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19186:6;19179:3;:13;;19171:67;;;;-1:-1:-1;;;19171:67:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19242:41;19252:9;19263;19274:8;19242:9;:41::i;:::-;19401:45;19415:9;19426;19437:8;19401:13;:45::i;2566:134:59:-;2612:88;;;;;;;;;;;;;;;;;;2566:134;:::o;6946:1208:60:-;7069:6;7103:24;:22;:24::i;:::-;7089:11;:38;7081:119;;;;-1:-1:-1;;;7081:119:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7227:38:60;;7205:19;7227:38;;;:29;:38;;;;;;;;:44;;;;;;;;;;;7279:17;7275:41;;7310:1;7303:8;;;;;7275:41;-1:-1:-1;;;;;7368:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:59;-1:-1:-1;;7410:16:60;;7368:59;;;;;;;;;:69;;:84;-1:-1:-1;7364:172:60;;-1:-1:-1;;;;;7466:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;-1:-1:-1;;7508:16:60;;;;7466:59;;;;;;;;:65;-1:-1:-1;;;7466:65:60;;-1:-1:-1;;;;;7466:65:60;;-1:-1:-1;7459:72:60;;7364:172;-1:-1:-1;;;;;7589:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:44;;;;;;;;:54;:44;:54;:68;-1:-1:-1;7585:92:60;;;7671:1;7664:8;;;;;7585:92;7681:12;-1:-1:-1;;7716:16:60;;7736:350;7751:5;7743:13;;:5;:13;;;7736:350;;;7805:1;7788:13;;;7787:19;;;7779:27;;7845:20;;:::i;:::-;-1:-1:-1;;;;;;7868:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:49;;;;;;;;;;;;;7845:72;;;;;;;;;;;;;;;-1:-1:-1;;;7845:72:60;;;-1:-1:-1;;;;;7845:72:60;;;;;;;;;7926:27;;7922:160;;;7968:8;;;;-1:-1:-1;7961:15:60;;-1:-1:-1;;;;7961:15:60;7922:160;7992:12;;:26;;;-1:-1:-1;7988:94:60;;;8034:6;8026:14;;7988:94;;;8075:1;8066:6;:10;8058:18;;7988:94;7736:350;;;;;-1:-1:-1;;;;;;8096:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:48;;;;;;;;;;:54;-1:-1:-1;;;;;;;;8096:54:60;;;;;-1:-1:-1;;6946:1208:60;;;;;:::o;4901:1518:57:-;4988:26;5008:5;4988:19;:26::i;:::-;4980:34;;5042:5;5026:12;:21;;5018:100;;;;-1:-1:-1;;;5018:100:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5188:14;5205:51;1548:9:59;5225:15:57;:30;5205:19;:51::i;:::-;5188:68;;5272:6;5264:5;:14;5260:34;;;5288:6;5280:14;;5260:34;5433:13;5449:68;5474:10;5486:12;5515:1;5500:12;:16;5449:24;:68::i;:::-;5433:84;;5538:1;5529:6;-1:-1:-1;;;;;5529:10:57;;5521:98;;;;-1:-1:-1;;;5521:98:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5623:52;5642:10;5654:12;5668:6;5623:18;:52::i;:::-;5679:45;5698:10;5710:5;5717:6;5679:18;:45::i;:::-;5728:41;5748:12;5762:6;5728:19;:41::i;:::-;5773:34;5793:5;5800:6;5773:19;:34::i;:::-;5980:10;5947:20;5970:21;;;:9;:21;;;;;;;;:35;;;;;;;;;;6030:28;;;;;;-1:-1:-1;;;;;5970:35:57;;;;6030:28;;6062:113;;-1:-1:-1;6137:10:57;6127:21;;;;:9;:21;;;;;;;;:28;;;;;;;;:43;;-1:-1:-1;;;;;;6127:43:57;-1:-1:-1;;;;;6127:43:57;;;;;;6062:113;6188:10;6224:1;6178:21;;;:9;:21;;;;;;;;:35;;;;;;;;:48;;-1:-1:-1;;;;;;6178:48:57;;;6230:58;6253:12;6200;6281:6;6230:22;:58::i;:::-;6292:49;6315:10;6327:5;6334:6;6292:22;:49::i;:::-;6351:64;;;;;;;;;;;;-1:-1:-1;;;;;6351:64:57;;;;;;;;6375:10;;6351:64;;;;;;;;;;4901:1518;;;;;;:::o;3381:1079:60:-;3473:6;3507:24;:22;:24::i;:::-;3493:11;:38;3485:114;;;;-1:-1:-1;;;3485:114:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3604:19;3626:32;;;:26;:32;;;;;;;;3666:17;3662:41;;3697:1;3690:8;;;;;3662:41;3748:29;;;;:23;:29;;;;;;;;:47;-1:-1:-1;;3778:16:60;;3748:47;;;;;;;;;:57;;:72;-1:-1:-1;3744:148:60;;3834:29;;;;:23;:29;;;;;;;;-1:-1:-1;;3864:16:60;;;;3834:47;;;;;;;;:53;-1:-1:-1;;;3834:53:60;;-1:-1:-1;;;;;3834:53:60;;-1:-1:-1;3827:60:60;;3744:148;3938:29;;;;:23;:29;;;;;;;;:32;;;;;;;;:42;:32;:42;:56;-1:-1:-1;3934:80:60;;;4008:1;4001:8;;;;;3934:80;4018:12;-1:-1:-1;;4053:16:60;;4073:331;4088:5;4080:13;;:5;:13;;;4073:331;;;4142:1;4125:13;;;4124:19;;;4116:27;;4175:20;;:::i;:::-;-1:-1:-1;4198:29:60;;;;:23;:29;;;;;;;;:37;;;;;;;;;;;;;4175:60;;;;;;;;;;;;;;;-1:-1:-1;;;4175:60:60;;;-1:-1:-1;;;;;4175:60:60;;;;;;;;;4244:27;;4240:160;;;4286:8;;;;-1:-1:-1;4279:15:60;;-1:-1:-1;;;;4279:15:60;4240:160;4310:12;;:26;;;-1:-1:-1;4306:94:60;;;4352:6;4344:14;;4306:94;;;4393:1;4384:6;:10;4376:18;;4306:94;4073:331;;;;;-1:-1:-1;4414:29:60;;;;:23;:29;;;;;;;;:36;;;;;;;;;;:42;-1:-1:-1;;;;;;;;4414:42:60;;;;;-1:-1:-1;;3381:1079:60;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;20613:417:57:-;-1:-1:-1;;;;;20736:20:57;;;20710:23;20736:20;;;:9;:20;;;;;;;;:30;;;;;;;;;;;;;20796:35;20746:9;20757:8;20796:14;:35::i;:::-;-1:-1:-1;;;;;20835:20:57;;;;;;;:9;:20;;;;;;;;:30;;;;;;;;;:42;;-1:-1:-1;;;;;;20835:42:57;;;;;;;;;;20887:64;;;;;;;20770:61;;-1:-1:-1;20835:42:57;20887:64;;;;;;;;;;;;;;20956:70;20971:15;20988:9;20999:16;21017:8;20956:14;:70::i;21145:685::-;21250:20;:18;:20::i;:::-;21246:581;;;21277:16;21296:23;:8;1041:7:59;21296:23:57;:12;:23;:::i;:::-;-1:-1:-1;;;;;21350:20:57;;;21324:23;21350:20;;;:9;:20;;;;;;;;:30;;;;;;;;;21277:42;;-1:-1:-1;21350:30:57;;;;21389:28;;;;21385:87;;21425:41;21435:9;21446;21457:8;21425:9;:41::i;:::-;21551:15;21578:10;-1:-1:-1;;;;;21569:28:57;;:30;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21569:30:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21569:30:57;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21569:30:57;;-1:-1:-1;21615:24:57;:8;1072:7;21615:24;:12;:24;:::i;:::-;21604:35;;21660:7;21648:8;:19;21644:179;;;-1:-1:-1;;;;;21693:20:57;;;;;;;:9;:20;;;;;;;;:30;;;;;;;;;;;;-1:-1:-1;21733:28:57;;;;21729:89;;21770:41;21780:9;21791;21802:8;21770:9;:41::i;:::-;21246:581;;;21145:685;;;:::o;2846:1864::-;3009:1;3000:6;-1:-1:-1;;;;;3000:10:57;;2992:90;;;;-1:-1:-1;;;2992:90:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3092:12;3087:63;;3119:26;3139:5;3119:19;:26::i;:::-;3111:34;;3087:63;3169:15;3161:5;:23;3153:90;;;;-1:-1:-1;;;3153:90:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:22:57;;3308:55;;3352:6;3341:17;;3308:55;-1:-1:-1;;;;;3432:23:57;;3428:59;;3474:8;3462:20;;3428:59;3550:12;3545:136;;3569:14;3586:51;1548:9:59;3606:15:57;:30;3586:19;:51::i;:::-;3569:68;;3654:6;3646:5;:14;3642:34;;;3670:6;3662:14;;3642:34;3545:136;;3685:22;3710:31;3725:8;3735:5;3710:14;:31::i;:::-;3685:56;;3773:47;3788:6;3796;3804:8;3814:5;3773:14;:47::i;:::-;-1:-1:-1;;;;;4146:19:57;;;4118:25;4146:19;;;:9;:19;;;;;;;;:26;;;;;;;;;;;;4180:30;;;;4176:380;;-1:-1:-1;;;;;4247:19:57;;;;;;;:9;:19;;;;;;;;:26;;;;;;;;:38;;-1:-1:-1;;;;;;4247:38:57;;;;;;;;;;4362:65;4385:17;4247:26;4411:15;4362:22;:65::i;:::-;4485:66;4491:15;4508:6;4485:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;4476:75;;4176:380;4587:48;4610:9;4621:5;4628:6;4587:22;:48::i;:::-;4696:9;-1:-1:-1;;;;;4644:62:57;4677:17;-1:-1:-1;;;;;4644:62:57;4660:8;-1:-1:-1;;;;;4644:62:57;;4670:5;4644:62;;;;;;;;;;;;;;;;;;2846:1864;;;;;;;;:::o;2419:430:60:-;2532:12;2550:13;2566:36;2586:4;2592:9;2566:19;:36::i;:::-;2550:52;;2606:13;2622:45;2649:4;2655:11;2622:26;:45::i;:::-;2606:61;;1448:2:59;-1:-1:-1;;;;;2745:100:60;:84;2751:6;2759;2745:84;;;;;;;;;;;;;;;;;:5;:84::i;:::-;-1:-1:-1;;;;;2745:100:60;;;;;;;;2419:430;-1:-1:-1;;;;;;2419:430:60:o;1516:172:56:-;1611:6;1634:5;;;1659:12;-1:-1:-1;;;;;1651:6:56;;;;;;;;1643:29;;;;-1:-1:-1;;;1643:29:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1643:29:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:156;2070:6;2095:1;-1:-1:-1;;;;;2090:6:56;:1;-1:-1:-1;;;;;2090:6:56;;;2098:12;2082:29;;;;;-1:-1:-1;;;2082:29:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2082:29:56;-1:-1:-1;;;2122:5:56;;;1975:156::o;2411:211::-;2506:6;-1:-1:-1;;;;;2522:6:56;;2518:30;;-1:-1:-1;2542:1:56;2535:8;;2518:30;2563:5;;;-1:-1:-1;;;;;2580:10:56;;;;:5;;;;;;;;;;;;-1:-1:-1;;;;;2580:10:56;;2592:12;2572:33;;;;;-1:-1:-1;;;2572:33:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;15382:202:57;-1:-1:-1;;;;;15483:31:57;;15464:6;15483:31;;;:22;:31;;;;;;;;:41;;;;;;;;15525:34;;;:25;:34;;;;;:44;;;;;;;;;-1:-1:-1;;15525:44:57;;;;:48;15483:91;;;;;;;:97;-1:-1:-1;;;;;;;;15483:97:57;;;;15382:202;;;;:::o;11632:1604::-;11908:6;-1:-1:-1;;;;;11908:11:57;11918:1;11908:11;:35;;;;;11923:20;:18;:20::i;:::-;11904:57;;;11950:7;;11904:57;11972:27;11993:5;11972:20;:27::i;:::-;11964:35;;12003:38;12027:6;12035:5;12003:23;:38::i;:::-;-1:-1:-1;;;;;12085:22:57;;12081:49;;12120:10;12109:21;;12081:49;12170:34;12190:5;12197:6;12170:19;:34::i;:::-;12208:45;12227:10;12239:5;12246:6;12208:18;:45::i;:::-;12290:10;12280:21;;;;:9;:21;;;;;;;;:28;;;;;;;;;12257:67;;-1:-1:-1;;;;;12280:28:57;12302:5;12317:6;12257:22;:67::i;:::-;12398:5;12380:15;:23;:39;;;;-1:-1:-1;12408:11:57;;;;12407:12;12380:39;:56;;;;;12424:12;12423:13;12380:56;12376:637;;;12443:21;12467:33;12486:6;12494:5;12467:18;:33::i;:::-;12505:24;;;;;12443:57;-1:-1:-1;;;;;;12620:18:57;;;12616:393;;12662:10;;-1:-1:-1;;;;;12662:10:57;12646:94;;;;-1:-1:-1;;;12646:94:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12884:8;;12909:10;;12884:53;;;-1:-1:-1;;;12884:53:57;;-1:-1:-1;;;;;12909:10:57;;;12884:53;;;;-1:-1:-1;;;;;12884:53:57;;;;;;;;:8;;;;;:16;;:53;;;;;;;;;;;;;;:8;;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;12884:53:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12884:53:57;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;12943:10:57;;12977:8;;12943:60;;;-1:-1:-1;;;12943:60:57;;-1:-1:-1;;;;;12977:8:57;;;12943:60;;;;-1:-1:-1;;;;;12943:60:57;;;;;;;;:10;;;;;:25;;:60;;;;;:10;;:60;;;;;;;:10;;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;12943:60:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12943:60:57;;;;12616:393;12376:637;;13056:8;;:35;;;-1:-1:-1;;;13056:35:57;;-1:-1:-1;;;;;13056:35:57;;;;;;;-1:-1:-1;;;;;13056:35:57;;;;;;;;13041:12;;13056:8;;;;;:17;;:35;;;;;;;;;;;;;;;13041:12;13056:8;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;13056:35:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13056:35:57;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13056:35:57;;-1:-1:-1;13056:35:57;13095:60;;;;-1:-1:-1;;;13095:60:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13165:67;;;-1:-1:-1;;;;;13165:67:57;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13165:67:57;;;13182:10;;13165:67;;;;;;;;;11632:1604;;;;;:::o;13314:420::-;13432:20;:18;:20::i;:::-;13428:303;;;13459:16;13478:20;:5;1041:7:59;13478:20:57;:9;:20;:::i;:::-;13459:39;;13507:12;:43;;;;13542:8;13523:15;:27;;13507:43;13503:224;;;13558:12;13573:64;13598:10;13610:8;13635:1;13620:12;:16;13573:24;:64::i;:::-;13558:79;-1:-1:-1;;;;;;13647:9:57;;;13643:79;;13665:50;13675:5;13682:8;13692;13702:12;13665:9;:50::i;5989:421:60:-;6133:12;6151:13;6167:36;6187:4;6193:9;6167:19;:36::i;:::-;6151:52;;6207:13;6223:59;6255:7;6264:4;6270:11;6223:31;:59::i;:::-;6207:75;;1448:2:59;-1:-1:-1;;;;;6294:112:60;:96;6300:6;6308;6294:96;;;;;;;;;;;;;;;;;:5;:96::i;:::-;-1:-1:-1;;;;;6294:112:60;;;;;;;;5989:421;-1:-1:-1;;;;;;;5989:421:60:o;11735:1209::-;11853:6;11887:24;:22;:24::i;:::-;11873:11;:38;11865:112;;;;-1:-1:-1;;;11865:112:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11989:26;12010:4;11989:20;:26::i;:::-;-1:-1:-1;;;;;12041:34:60;;12019:19;12041:34;;;:25;:34;;;;;;;;:40;;;;;;;;;11982:33;;-1:-1:-1;12041:40:60;;12089:17;12085:41;;12120:1;12113:8;;;;;12085:41;-1:-1:-1;;;;;12178:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:55;-1:-1:-1;;12216:16:60;;12178:55;;;;;;;;;:65;;:80;-1:-1:-1;12174:164:60;;-1:-1:-1;;;;;12272:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;-1:-1:-1;;12310:16:60;;;;12272:55;;;;;;;;:61;-1:-1:-1;;;12272:61:60;;-1:-1:-1;;;;;12272:61:60;;-1:-1:-1;12265:68:60;;12174:164;-1:-1:-1;;;;;12391:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:40;;;;;;;;:50;:40;:50;:64;-1:-1:-1;12387:88:60;;;12469:1;12462:8;;;;;12387:88;12479:12;-1:-1:-1;;12514:16:60;;12534:346;12549:5;12541:13;;:5;:13;;;12534:346;;;12603:1;12586:13;;;12585:19;;;12577:27;;12643:20;;:::i;:::-;-1:-1:-1;;;;;;12666:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:45;;;;;;;;;;;;;12643:68;;;;;;;;;;;;;;;-1:-1:-1;;;12643:68:60;;;-1:-1:-1;;;;;12643:68:60;;;;;;;;;12720:27;;12716:160;;;12762:8;;;;-1:-1:-1;12755:15:60;;-1:-1:-1;;;;12755:15:60;12716:160;12786:12;;:26;;;-1:-1:-1;12782:94:60;;;12828:6;12820:14;;12782:94;;;12869:1;12860:6;:10;12852:18;;12782:94;12534:346;;;;;-1:-1:-1;;;;;;12890:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:44;;;;;;;;;;:50;-1:-1:-1;;;;;;;;12890:50:60;;;;;-1:-1:-1;;11735:1209:60;;;;;:::o;780:87:137:-;853:10;780:87;:::o;26936:85:57:-;27008:8;;-1:-1:-1;;;;;27008:8:57;26936:85;:::o;27231:186::-;27328:15;;;27341:1;27328:15;;;;;;;;;27279;;;;27328;;;;;;;105:10:-1;27328:15:57;88:34:-1;136:17;;-1:-1;27328:15:57;27300:43;;27362:31;;;27347:9;27357:1;27347:12;;;;;;;;-1:-1:-1;;;;;;27347:46:57;;;:12;;;;;;;;;;;:46;27404:9;-1:-1:-1;27231:186:57;:::o;3263:125:48:-;3377:2;3366:14;3360:21;;3348:37::o;2133:344::-;2182:12;2196:23;2231:4;-1:-1:-1;;;;;2223:18:48;2242:5;2223:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2223:25:48;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2181:67:48;;;;2257:7;2252:222;;1386:2:49;2275:10:48;:17;:40;2271:199;;2323:58;;-1:-1:-1;;;2323:58:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2271:199;2406:57;;;;;;;;;;;;;;-1:-1:-1;;;2406:57:48;;;2451:10;2406:16;:57::i;:::-;2399:65;;-1:-1:-1;;;2399:65:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;14848:338:57;14946:1;14937:6;-1:-1:-1;;;;;14937:10:57;;14929:100;;;;-1:-1:-1;;;14929:100:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15033:14;15050:61;15075:10;15087:5;15109:1;15094:12;:16;15050:24;:61::i;:::-;15033:78;;15133:7;-1:-1:-1;;;;;15123:17:57;:6;-1:-1:-1;;;;;15123:17:57;;;15115:67;;;;-1:-1:-1;;;15115:67:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14358:319;14439:6;14451:12;14466:36;14486:15;14466:19;:36::i;:::-;14451:51;;14506:13;14522:32;14542:5;14549:4;14522:19;:32::i;:::-;14610:13;;-1:-1:-1;;;14610:13:57;;-1:-1:-1;;;;;14610:13:57;;;14601:22;;;;;-1:-1:-1;14670:3:57;;1448:2:59;14635:15:57;;;14634:33;;;:39;;;14358:319;-1:-1:-1;;;;;14358:319:57:o;16133:122:60:-;16203:20;;:48;;;-1:-1:-1;;;16203:48:60;;16240:10;16203:48;;;;;;16186:4;;-1:-1:-1;;;;;16203:20:60;;:36;;:48;;;;;;;;;;;;;;:20;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;16203:48:60;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16203:48:60;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16203:48:60;;-1:-1:-1;16133:122:60;:::o;23082:136:57:-;23184:9;23082:136;:::o;318:156:149:-;379:4;405:42;-1:-1:-1;;;;;397:50:149;;;;;;:72;;-1:-1:-1;;;;;;;451:18:149;;;;318:156::o;579:106:114:-;656:11;;:25;;;-1:-1:-1;;;656:25:114;;;;636:7;;-1:-1:-1;;;;;656:11:114;;:23;;:25;;;;;;;;;;;;;;:11;:25;;;5:2:-1;;;;30:1;27;20:12;2530:419:54;-1:-1:-1;;;;;2651:34:54;;2629:19;2651:34;;;:25;:34;;;;;;;;:44;;;;;;;;;2715:31;;;:22;:31;;;;;:41;;;;;;;;2651:44;;;;-1:-1:-1;;2757:16:54;;2715:59;;;;;;;;;;:65;2802:76;;;;;;;;;;;;-1:-1:-1;;;2715:65:54;;;-1:-1:-1;;;;;2715:65:54;;2629:19;2802:76;;2715:65;;2816:5;;2802:76;;;;;:5;:76::i;:::-;2784:94;;2882:63;2903:7;2912:8;2922:12;2936:8;2882:20;:63::i;1875:418::-;-1:-1:-1;;;;;1996:34:54;;1974:19;1996:34;;;:25;:34;;;;;;;;:44;;;;;;;;;2060:31;;;:22;:31;;;;;:41;;;;;;;;1996:44;;;;-1:-1:-1;;2102:16:54;;2060:59;;;;;;;;;;:65;2147:75;;;;;;;;;;;;-1:-1:-1;;;2060:65:54;;;-1:-1:-1;;;;;2060:65:54;;1974:19;2147:75;;2060:65;;2161:5;;2147:75;;;;;:5;:75::i;7493:373::-;7567:19;7589:36;;;:26;:36;;;;;;;;;7645:23;:33;;;;;7589:36;;;;-1:-1:-1;;7679:16:54;;7645:51;;;;;;;;;;:57;7724:77;;;;;;;;;;;;7589:36;;-1:-1:-1;;;7645:57:54;;;-1:-1:-1;;;;;7645:57:54;;7567:19;;7724:77;;7645:57;;7738:5;;7724:77;;;;;;;:5;:77::i;:::-;7706:95;;7805:57;7829:8;7839:12;7853:8;7805:23;:57::i;6922:372::-;6996:19;7018:36;;;:26;:36;;;;;;;;;7074:23;:33;;;;;7018:36;;;;-1:-1:-1;;7108:16:54;;7074:51;;;;;;;;;;:57;7153:76;;;;;;;;;;;;7018:36;;-1:-1:-1;;;7074:57:54;;;-1:-1:-1;;;;;7074:57:54;;6996:19;;7153:76;;7074:57;;7167:5;;7153:76;;;;;;;:5;:76::i;4760:893::-;-1:-1:-1;;;;;4887:40:54;;4865:19;4887:40;;;:29;:40;;;;;;;;:50;;;;;;;;;4957:37;;;:26;:37;;;;;:47;;;;;;;;4887:50;;;;-1:-1:-1;;5005:16:54;;4957:65;;;;;;;;;;:71;-1:-1:-1;;;4957:71:54;;-1:-1:-1;;;;;4957:71:54;;;;4865:19;5460:14;;;;5456:121;;;5492:80;5498:6;5506:5;5492:80;;;;;;;;;;;;;;;;;:5;:80::i;:::-;5481:91;;5456:121;5580:69;5605:9;5616:8;5626:12;5640:8;5580:24;:69::i;4065:446::-;-1:-1:-1;;;;;4192:40:54;;4170:19;4192:40;;;:29;:40;;;;;;;;:50;;;;;;;;;4262:37;;;:26;:37;;;;;:47;;;;;;;;4192:50;;;;-1:-1:-1;;4310:16:54;;4262:65;;;;;;;;;;:71;4355:79;;;;;;;;;;;;-1:-1:-1;;;4262:71:54;;;-1:-1:-1;;;;;4262:71:54;;4170:19;4355:79;;4262:71;;4369:5;;4355:79;;;;;:5;:79::i;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;22143:316:57:-;22270:6;-1:-1:-1;;;;;22260:16:57;:6;-1:-1:-1;;;;;22260:16:57;;;:30;;;;;22289:1;22280:6;-1:-1:-1;;;;;22280:10:57;;22260:30;22256:200;;;-1:-1:-1;;;;;22301:20:57;;;22297:74;;22323:48;22346:6;22354:8;22364:6;22323:22;:48::i;:::-;-1:-1:-1;;;;;22381:20:57;;;22377:74;;22403:48;22426:6;22434:8;22444:6;22403:22;:48::i;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;6739:581:57;6902:8;;:52;;;-1:-1:-1;;;6902:52:57;;-1:-1:-1;;;;;6902:52:57;;;;;;;6940:4;6902:52;;;;-1:-1:-1;;;;;6902:52:57;;;;;;;;6887:12;;6902:8;;;;;:21;;:52;;;;;;;;;;;;;;;6887:12;6902:8;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;6902:52:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6902:52:57;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6902:52:57;;-1:-1:-1;6902:52:57;6958:16;;;;;;7015:14;7032:31;7047:8;7057:5;7032:14;:31::i;:::-;7015:48;;7077:66;7083:7;7092:6;7077:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;7067:76;;7179:34;7199:5;7206:6;7179:19;:34::i;:::-;7217:43;7236:8;7246:5;7253:6;7217:18;:43::i;:::-;7270:46;;;-1:-1:-1;;;;;7270:46:57;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7270:46:57;;;;;;;;;;;;;6739:581;;;;;;:::o;15241:340:60:-;15308:7;15321:20;15344:25;15364:4;15344:19;:25::i;:::-;15321:48;;15516:4;15500:12;:20;15496:67;;1041:7:59;15534:12:60;:24;15527:31;;15496:67;-1:-1:-1;15573:4:60;;15241:340;-1:-1:-1;15241:340:60:o;1719:569:49:-;1808:13;1827:22;1858:4;1827:36;;1867:22;1898:4;1867:36;;1907:19;1386:2;1959:9;:16;1940:9;:16;:35;:57;1929:69;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;1929:69:49;87:34:-1;135:17;;-1:-1;1929:69:49;-1:-1:-1;1907:91:49;-1:-1:-1;1907:91:49;2044:9;;2061:87;2085:9;:16;2081:1;:20;2061:87;;;2131:9;2141:1;2131:12;;;;;;;;;;;;;;;;2113:10;2124:3;;;;;;2113:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2113:30:49;;;;;;;;-1:-1:-1;2103:3:49;;2061:87;;;-1:-1:-1;1386:2:49;2151:105;2193:9;:16;2189:1;:20;2151:105;;;2239:9;2249:1;2239:12;;;;;;;;;;;;;;;;2221:10;2232:3;;;;;;2221:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2221:30:49;;;;;;;;-1:-1:-1;2211:3:49;;2151:105;;;-1:-1:-1;2273:10:49;;1719:569;-1:-1:-1;;;;;;;1719:569:49:o;3209:613:54:-;3336:18;3357:86;3364:12;3357:86;;;;;;;;;;;;;;;;;:6;:86::i;:::-;3336:107;;3467:1;3452:12;:16;;;:104;;;;-1:-1:-1;;;;;;3472:31:54;;;;;;:22;:31;;;;;;;;:41;;;;;;;;:84;-1:-1:-1;;3514:16:54;;3472:59;;;;;;;;;:69;:84;;;:69;;:84;3452:104;3448:371;;;-1:-1:-1;;;;;3563:31:54;;;;;;:22;:31;;;;;;;;:41;;;;;;;;-1:-1:-1;;3605:16:54;;3563:59;;;;;;;;;:76;;-1:-1:-1;;;;;;3563:76:54;-1:-1:-1;;;;;;;;3563:76:54;;;;;;3448:371;;;3713:33;;;;;;;;;;;;;;-1:-1:-1;;;;;3713:33:54;;;;;;;;;;-1:-1:-1;;;;;3655:31:54;;;;-1:-1:-1;3655:31:54;;;:22;:31;;;;;:41;;;;;;;;:55;;;;;;;;;;:91;;;;;;;;;-1:-1:-1;;;3655:91:54;-1:-1:-1;;;;;;3655:91:54;;;-1:-1:-1;;3655:91:54;;;;;;;;;;;;;;;3751:34;;;:25;:34;;;;;:44;;;;;;;;;;:63;;-1:-1:-1;3798:16:54;;;3751:63;;;;;;;;3209:613::o;8090:565::-;8201:18;8222:86;8229:12;8222:86;;;;;;;;;;;;;;;;;:6;:86::i;:::-;8201:107;;8332:1;8317:12;:16;;;:96;;;;-1:-1:-1;8337:33:54;;;;:23;:33;;;;;;;;:76;-1:-1:-1;;8371:16:54;;8337:51;;;;;;;;;:61;:76;;;:61;;:76;8317:96;8313:339;;;8420:33;;;;:23;:33;;;;;;;;-1:-1:-1;;8454:16:54;;8420:51;;;;;;;;;:68;;-1:-1:-1;;;;;;8420:68:54;-1:-1:-1;;;;;;;;8420:68:54;;;;;;8313:339;;;8554:33;;;;;;;;;;;;;;-1:-1:-1;;;;;8554:33:54;;;;;;;;;;-1:-1:-1;8504:33:54;;;:23;:33;;;;;:47;;;;;;;;;;:83;;;;;;-1:-1:-1;;8504:83:54;;;;;;;;;;-1:-1:-1;;;;;;8504:83:54;-1:-1:-1;;;8504:83:54;;;;;;;;;;;;8592:36;;;:26;:36;;;;;:55;;;;;-1:-1:-1;8631:16:54;;;8592:55;;;;8090:565::o;5923:806::-;6056:18;6077:86;6084:12;6077:86;;;;;;;;;;;;;;;;;:6;:86::i;:::-;-1:-1:-1;;;;;6185:37:54;;6167:15;6185:37;;;:26;:37;;;;;;;;:47;;;;;;;;-1:-1:-1;;6233:16:54;;6185:65;;;;;;;;;;;:71;6056:107;;-1:-1:-1;;;;6185:71:54;;;-1:-1:-1;;;;;6185:71:54;;6265:16;;;;;;:110;;-1:-1:-1;;;;;;6285:37:54;;;;;;:26;:37;;;;;;;;:47;;;;;;;;:90;-1:-1:-1;;6333:16:54;;6285:65;;;;;;;;;:75;:90;;;:75;;:90;6265:110;6261:395;;;-1:-1:-1;;;;;6382:37:54;;;;;;:26;:37;;;;;;;;:47;;;;;;;;-1:-1:-1;;6430:16:54;;6382:65;;;;;;;;;:82;;-1:-1:-1;;;;;;6382:82:54;-1:-1:-1;;;;;;;;6382:82:54;;;;;;6261:395;;;6544:33;;;;;;;;;;;;;;-1:-1:-1;;;;;6544:33:54;;;;;;;;;;-1:-1:-1;;;;;6480:37:54;;-1:-1:-1;6480:37:54;;;:26;:37;;;;;:47;;;;;;;;:61;;;;;;;;;;:97;;;;;;;;;-1:-1:-1;;;6480:97:54;-1:-1:-1;;;;;;6480:97:54;;;-1:-1:-1;;6480:97:54;;;;;;;;;;;;;;;6582:40;;;:29;:40;;;;;:50;;;;;;;;;;:69;;6480:97;6635:16;;6582:69;;;;;;;;;;;;;6261:395;6664:61;;;;;;-1:-1:-1;;;;;6664:61:54;;;;;;;;;;;;;;;-1:-1:-1;;;;;6664:61:54;;;;;;;;;;;;;5923:806;;;;;;:::o;797:146:56:-;875:6;906:12;-1:-1:-1;;;895:9:56;;887:32;;;;-1:-1:-1;;;887:32:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;887:32:56;-1:-1:-1;937:1:56;;797:146;-1:-1:-1;;797:146:56:o;99:588:114:-;;;;;;;;;;-1:-1:-1;99:588:114;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "DELEGATION_TYPEHASH()": "e7a324dc",
              "DOMAIN_TYPEHASH()": "20606b70",
              "MAX_DURATION()": "b1724b46",
              "MAX_VOTING_WEIGHT()": "17748adc",
              "SOVToken()": "a58848c5",
              "WEIGHT_FACTOR()": "d27569e7",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "allUnlocked()": "9929e886",
              "balanceOf(address)": "70a08231",
              "blockMockUp()": "5004b6e4",
              "computeWeightByDate(uint256,uint256)": "62cf8a08",
              "delegate(address,uint256)": "026e402b",
              "delegateBySig(address,uint256,uint256,uint256,uint8,bytes32,bytes32)": "e63a562e",
              "delegateStakingCheckpoints(address,uint256,uint32)": "6b6fde0e",
              "delegates(address,uint256)": "27dd1b00",
              "extendStakingDuration(uint256,uint256)": "eefb8c47",
              "feeSharing()": "03a18fa3",
              "getCurrentStakedUntil(uint256)": "d5c38464",
              "getCurrentVotes(address)": "b4b5ea57",
              "getPriorStakeByDateForDelegatee(address,uint256,uint256)": "e97ffacb",
              "getPriorTotalStakesForDate(uint256,uint256)": "f09cfc64",
              "getPriorTotalVotingPower(uint32,uint256)": "2522d7ba",
              "getPriorUserStakeByDate(address,uint256,uint256)": "cf7b684a",
              "getPriorVotes(address,uint256,uint256)": "836eebee",
              "getPriorWeightedStake(address,uint256,uint256)": "37e6b1c1",
              "getStakes(address)": "7ba6f458",
              "getWithdrawAmounts(uint96,uint256)": "96a590c1",
              "governanceWithdraw(uint96,uint256,address)": "800b64ca",
              "governanceWithdrawVesting(address,address)": "3827fca5",
              "isOwner()": "8f32d59b",
              "kickoffTS()": "00073f99",
              "migrateToNewStakingContract()": "5419675f",
              "newStakingContract()": "ae81dfe4",
              "nonces(address)": "7ecebe00",
              "numDelegateStakingCheckpoints(address,uint256)": "94c2ce58",
              "numTotalStakingCheckpoints(uint256)": "9436e7d4",
              "numUserStakingCheckpoints(address,uint256)": "db27ec18",
              "owner()": "8da5cb5b",
              "receiveApproval(address,uint256,address,bytes)": "8f4ffcb1",
              "removeAdmin(address)": "1785f53c",
              "setBlockMockUpAddr(address)": "a377f244",
              "setFeeSharing(address)": "626ee2d9",
              "setNewStakingContract(address)": "9a377b82",
              "setVestingRegistry(address)": "450b0601",
              "setWeightScaling(uint96)": "b8a98732",
              "stake(uint96,uint256,address,address)": "25629ec0",
              "stakeWithApproval(address,uint96,uint256,address,address)": "0c09ddfd",
              "stakesBySchedule(uint256,uint256,uint256,uint256,address,address)": "4b2fea1e",
              "timestampToLockDate(uint256)": "72ec9795",
              "totalStakingCheckpoints(uint256,uint32)": "dfb267c2",
              "transferOwnership(address)": "f2fde38b",
              "unlockAllTokens()": "5e0be607",
              "userStakingCheckpoints(address,uint256,uint32)": "68cefccc",
              "vestingCodeHashes(bytes32)": "07392cc0",
              "vestingRegistryLogic()": "104932cf",
              "vestingWhitelist(address)": "adae9002",
              "weightScaling()": "bf626ec1",
              "weightedStakeByDate(address,uint256,uint256,uint256)": "8dae1b16",
              "withdraw(uint96,uint256,address)": "dab6ca44"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "balanceOf(address)": {
                "notice": "Get the number of staked tokens held by the user account."
              },
              "computeWeightByDate(uint256,uint256)": {
                "notice": "Compute the weight for a specific date."
              },
              "delegate(address,uint256)": {
                "notice": "Delegate votes from `msg.sender` which are locked until lockDate to `delegatee`."
              },
              "delegateBySig(address,uint256,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Delegates votes from signatory to a delegatee account. Voting with EIP-712 Signatures.\t * Voting power can be delegated to any address, and then can be used to vote on proposals. A key benefit to users of by-signature functionality is that they can create a signed vote transaction for free, and have a trusted third-party spend rBTC(or ETH) on gas fees and write it to the blockchain for them.\t * The third party in this scenario, submitting the SOV-holder’s signed transaction holds a voting power that is for only a single proposal. The signatory still holds the power to vote on their own behalf in the proposal if the third party has not yet published the signed transaction that was given to them."
              },
              "extendStakingDuration(uint256,uint256)": {
                "notice": "Extend the staking duration until the specified date."
              },
              "getCurrentStakedUntil(uint256)": {
                "notice": "Get the current number of tokens staked for a day."
              },
              "getCurrentVotes(address)": {
                "notice": "Get the current votes balance for a user account."
              },
              "getPriorStakeByDateForDelegatee(address,uint256,uint256)": {
                "notice": "Determine the prior number of stake for an account as of a block number."
              },
              "getPriorTotalStakesForDate(uint256,uint256)": {
                "notice": "Determine the prior number of stake for an unlocking date as of a block number."
              },
              "getPriorTotalVotingPower(uint32,uint256)": {
                "notice": "Compute the total voting power at a given time."
              },
              "getPriorUserStakeByDate(address,uint256,uint256)": {
                "notice": "Determine the prior number of stake for an account until a certain lock date as of a block number."
              },
              "getPriorVotes(address,uint256,uint256)": {
                "notice": "Determine the prior number of votes for a delegatee as of a block number. Iterate through checkpoints adding up voting power."
              },
              "getPriorWeightedStake(address,uint256,uint256)": {
                "notice": "Determine the prior weighted stake for an account as of a block number. Iterate through checkpoints adding up voting power."
              },
              "getStakes(address)": {
                "notice": "Get list of stakes for a user account."
              },
              "getWithdrawAmounts(uint96,uint256)": {
                "notice": "Get available and punished amount for withdrawing."
              },
              "governanceWithdraw(uint96,uint256,address)": {
                "notice": "Withdraw the given amount of tokens."
              },
              "governanceWithdrawVesting(address,address)": {
                "notice": "Withdraw tokens for vesting contract."
              },
              "migrateToNewStakingContract()": {
                "notice": "Allow a staker to migrate his positions to the new staking contract."
              },
              "receiveApproval(address,uint256,address,bytes)": {
                "notice": "Receives approval from SOV token."
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "setBlockMockUpAddr(address)": {
                "notice": "gets block number from BlockMockUp"
              },
              "setFeeSharing(address)": {
                "notice": "Allow the owner to set a fee sharing proxy contract. We need it for unstaking with slashing."
              },
              "setNewStakingContract(address)": {
                "notice": "Allow the owner to set a new staking contract. As a consequence it allows the stakers to migrate their positions to the new contract."
              },
              "setVestingRegistry(address)": {
                "notice": "sets vesting registry"
              },
              "setWeightScaling(uint96)": {
                "notice": "Allow the owner to set weight scaling. We need it for unstaking with slashing."
              },
              "stake(uint96,uint256,address,address)": {
                "notice": "Stake the given amount for the given duration of time."
              },
              "stakeWithApproval(address,uint96,uint256,address,address)": {
                "notice": "Stake the given amount for the given duration of time."
              },
              "stakesBySchedule(uint256,uint256,uint256,uint256,address,address)": {
                "notice": "Stake tokens according to the vesting schedule."
              },
              "timestampToLockDate(uint256)": {
                "notice": "Unstaking is possible every 2 weeks only. This means, to calculate the key value for the staking checkpoints, we need to map the intended timestamp to the closest available date."
              },
              "unlockAllTokens()": {
                "notice": "Allow the owner to unlock all tokens in case the staking contract is going to be replaced Note: Not reversible on purpose. once unlocked, everything is unlocked. The owner should not be able to just quickly unlock to withdraw his own tokens and lock again."
              },
              "weightedStakeByDate(address,uint256,uint256,uint256)": {
                "notice": "Compute the voting power for a specific date. Power = stake * weight TODO: WeightedStaking::weightedStakeByDate should probably better be internal instead of a public function."
              },
              "withdraw(uint96,uint256,address)": {
                "notice": "Withdraw the given amount of tokens if they are unlocked."
              }
            }
          }
        }
      },
      "contracts/mockup/StakingMockup.sol": {
        "StakingMockup": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "ContractCodeHashAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                }
              ],
              "name": "ContractCodeHashRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "fromDelegate",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "toDelegate",
                  "type": "address"
                }
              ],
              "name": "DelegateChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegate",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "previousBalance",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newBalance",
                  "type": "uint256"
                }
              ],
              "name": "DelegateStakeChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "previousDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountStaked",
                  "type": "uint256"
                }
              ],
              "name": "ExtendedStakingDuration",
              "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": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "isGovernance",
                  "type": "bool"
                }
              ],
              "name": "StakingWithdrawn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "staker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lockedUntil",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "totalStaked",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensUnlocked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "VestingTokensWithdrawn",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DELEGATION_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DOMAIN_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_DURATION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_VOTING_WEIGHT",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "_priorTotalVotingPower",
                  "type": "uint96"
                }
              ],
              "name": "MOCK_priorTotalVotingPower",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "_priorWeightedStake",
                  "type": "uint96"
                }
              ],
              "name": "MOCK_priorWeightedStake",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOVToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "WEIGHT_FACTOR",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "allUnlocked",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "balance",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf_MultipliedByTwo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                }
              ],
              "name": "calculatePriorWeightedStake",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startDate",
                  "type": "uint256"
                }
              ],
              "name": "computeWeightByDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "weight",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "lockDate",
                  "type": "uint256"
                }
              ],
              "name": "delegate",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "lockDate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "delegateBySig",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "delegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "delegates",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "previousLock",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                }
              ],
              "name": "extendStakingDuration",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharing",
              "outputs": [
                {
                  "internalType": "contract IFeeSharingProxy",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedTS",
                  "type": "uint256"
                }
              ],
              "name": "getCurrentStakedUntil",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "getCurrentVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "getPriorStakeByDateForDelegatee",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "getPriorTotalStakesForDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint32",
                  "name": "blockNumber",
                  "type": "uint32"
                },
                {
                  "internalType": "uint256",
                  "name": "time",
                  "type": "uint256"
                }
              ],
              "name": "getPriorTotalVotingPower",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "totalVotingPower",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "getPriorUserStakeByDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                }
              ],
              "name": "getPriorVotes",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "votes",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                }
              ],
              "name": "getPriorWeightedStake",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "getStakes",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "dates",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint96[]",
                  "name": "stakes",
                  "type": "uint96[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                }
              ],
              "name": "getWithdrawAmounts",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                },
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "governanceWithdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "governanceWithdrawVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kickoffTS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "migrateToNewStakingContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "newStakingContract",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numDelegateStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numTotalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "numUserStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "receiveApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "lockedTS",
                  "type": "uint256"
                },
                {
                  "internalType": "uint96",
                  "name": "value",
                  "type": "uint96"
                }
              ],
              "name": "setDelegateStake",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_feeSharing",
                  "type": "address"
                }
              ],
              "name": "setFeeSharing",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newStakingContract",
                  "type": "address"
                }
              ],
              "name": "setNewStakingContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingRegistryProxy",
                  "type": "address"
                }
              ],
              "name": "setVestingRegistry",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "_weightScaling",
                  "type": "uint96"
                }
              ],
              "name": "setWeightScaling",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "stakeFor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "stake",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "stakeFor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "stakeWithApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "intervalLength",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "stakeFor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "stakesBySchedule",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                }
              ],
              "name": "timestampToLockDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockDate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "totalStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "unlockAllTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "name": "userStakingCheckpoints",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "fromBlock",
                  "type": "uint32"
                },
                {
                  "internalType": "uint96",
                  "name": "stake",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "vestingCodeHashes",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingRegistryLogic",
              "outputs": [
                {
                  "internalType": "contract VestingRegistryLogic",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "vestingWhitelist",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "weightScaling",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "date",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startDate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "weightedStakeByDate",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "power",
                  "type": "uint96"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "uint256",
                  "name": "until",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "balanceOf(address)": {
                "details": "Iterate checkpoints adding up stakes.",
                "params": {
                  "account": "The address of the account to get the balance of."
                },
                "return": "The number of tokens held."
              },
              "computeWeightByDate(uint256,uint256)": {
                "params": {
                  "date": "The unlocking date.",
                  "startDate": "We compute the weight for the tokens staked until 'date' on 'startDate'."
                }
              },
              "delegate(address,uint256)": {
                "params": {
                  "delegatee": "The address to delegate votes to.",
                  "lockDate": "the date if the position to delegate."
                }
              },
              "delegateBySig(address,uint256,uint256,uint256,uint8,bytes32,bytes32)": {
                "details": "The signature needs to be broken up into 3 parameters, known as v, r and s: const r = '0x' + sig.substring(2).substring(0, 64); const s = '0x' + sig.substring(2).substring(64, 128); const v = '0x' + sig.substring(2).substring(128, 130);",
                "params": {
                  "delegatee": "The address to delegate votes to.",
                  "expiry": "The time at which to expire the signature.",
                  "lockDate": "The date until which the position is locked.",
                  "nonce": "The contract state required to match the signature.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "v": "The recovery byte of the signature."
                }
              },
              "extendStakingDuration(uint256,uint256)": {
                "params": {
                  "previousLock": "The old unlocking timestamp.",
                  "until": "The new unlocking timestamp in seconds."
                }
              },
              "getCurrentStakedUntil(uint256)": {
                "params": {
                  "lockedTS": "The timestamp to get the staked tokens for."
                }
              },
              "getCurrentVotes(address)": {
                "details": "This is a wrapper to simplify arguments. The actual computation is performed on WeightedStaking parent contract.",
                "params": {
                  "account": "The address to get votes balance."
                },
                "return": "The number of current votes for a user account."
              },
              "getPriorStakeByDateForDelegatee(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation. TODO: WeightedStaking::getPriorStakeByDateForDelegatee should probably better be internal instead of a public function.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at."
                },
                "return": "The number of votes the account had as of the given block."
              },
              "getPriorTotalStakesForDate(uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation. TODO: WeightedStaking::getPriorTotalStakesForDate should probably better be internal instead of a public function.",
                "params": {
                  "blockNumber": "The block number to get the vote balance at.",
                  "date": "The date to check the stakes for."
                },
                "return": "The number of votes the account had as of the given block."
              },
              "getPriorUserStakeByDate(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at.",
                  "date": "The lock date."
                },
                "return": "The number of votes the account had as of the given block."
              },
              "getPriorVotes(address,uint256,uint256)": {
                "details": "Block number must be a finalized block or else this function will revert to prevent misinformation.     Used for Voting, not for fee sharing.",
                "params": {
                  "account": "The address of the account to check.",
                  "blockNumber": "The block number to get the vote balance at."
                },
                "return": "The number of votes the delegatee had as of the given block."
              },
              "getStakes(address)": {
                "params": {
                  "account": "The address to get stakes."
                },
                "return": "The arrays of dates and stakes."
              },
              "getWithdrawAmounts(uint96,uint256)": {
                "params": {
                  "amount": "The number of tokens to withdraw.",
                  "until": "The date until which the tokens were staked."
                }
              },
              "governanceWithdraw(uint96,uint256,address)": {
                "details": "Can be invoked only by whitelisted contract passed to governanceWithdrawVesting",
                "params": {
                  "amount": "The number of tokens to withdraw.",
                  "receiver": "The receiver of the tokens. If not specified, send to the msg.sender",
                  "until": "The date until which the tokens were staked."
                }
              },
              "governanceWithdrawVesting(address,address)": {
                "details": "Can be invoked only by whitelisted contract passed to governanceWithdrawVesting.",
                "params": {
                  "receiver": "The receiver of the tokens. If not specified, send to the msg.sender",
                  "vesting": "The address of Vesting contract."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "migrateToNewStakingContract()": {
                "details": "Staking contract needs to be set before by the owner. Currently not implemented, just needed for the interface.     In case it's needed at some point in the future,     the implementation needs to be changed first."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "receiveApproval(address,uint256,address,bytes)": {
                "params": {
                  "_data": "The data will be used for low level call."
                }
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "setDelegateStake(address,uint256,uint96)": {
                "details": "We need this function to simulate zero delegate checkpoint value."
              },
              "setFeeSharing(address)": {
                "params": {
                  "_feeSharing": "The address of FeeSharingProxy contract."
                }
              },
              "setNewStakingContract(address)": {
                "details": "Doesn't have any influence as long as migrateToNewStakingContract is not implemented.",
                "params": {
                  "_newStakingContract": "The address of the new staking contract."
                }
              },
              "setVestingRegistry(address)": {
                "params": {
                  "_vestingRegistryProxy": "the address of vesting registry proxy contract"
                }
              },
              "setWeightScaling(uint96)": {
                "params": {
                  "_weightScaling": "The weight scaling."
                }
              },
              "stake(uint96,uint256,address,address)": {
                "params": {
                  "amount": "The number of tokens to stake.",
                  "delegatee": "The address of the delegatee or 0x0 if there is none.",
                  "stakeFor": "The address to stake the tokens for or 0x0 if staking for oneself.",
                  "until": "Timestamp indicating the date until which to stake."
                }
              },
              "stakeWithApproval(address,uint96,uint256,address,address)": {
                "details": "This function will be invoked from receiveApprovalSOV.approveAndCall -> this.receiveApproval -> this.stakeWithApproval",
                "params": {
                  "amount": "The number of tokens to stake.",
                  "delegatee": "The address of the delegatee or 0x0 if there is none.",
                  "sender": "The sender of SOV.approveAndCall",
                  "stakeFor": "The address to stake the tokens for or 0x0 if staking for oneself.",
                  "until": "Timestamp indicating the date until which to stake."
                }
              },
              "stakesBySchedule(uint256,uint256,uint256,uint256,address,address)": {
                "params": {
                  "amount": "The amount of tokens to stake.",
                  "cliff": "The time interval to the first withdraw.",
                  "delegatee": "The address of the delegatee or 0x0 if there is none.",
                  "duration": "The staking duration.",
                  "intervalLength": "The length of each staking interval when cliff passed.",
                  "stakeFor": "The address to stake the tokens for or 0x0 if staking for oneself."
                }
              },
              "timestampToLockDate(uint256)": {
                "params": {
                  "timestamp": "The unlocking timestamp."
                },
                "return": "The actual unlocking date (might be up to 2 weeks shorter than intended)."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "unlockAllTokens()": {
                "details": "Last resort."
              },
              "weightedStakeByDate(address,uint256,uint256,uint256)": {
                "params": {
                  "blockNumber": "The block number, needed for checkpointing.",
                  "date": "The staking date to compute the power for.",
                  "startDate": "The date for which we need to know the power of the stake."
                }
              },
              "withdraw(uint96,uint256,address)": {
                "params": {
                  "amount": "The number of tokens to withdraw.",
                  "receiver": "The receiver of the tokens. If not specified, send to the msg.sender",
                  "until": "The date until which the tokens were staked."
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c0604052600a608081905269534f565374616b696e6760b01b60a09081526200002d9160029190620000ae565b506005805460ff19169055600d80546001600160a01b0316600360a01b179055600062000059620000a9565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000150565b335b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000f157805160ff191683800117855562000121565b8280016001018555821562000121579182015b828111156200012157825182559160200191906001019062000104565b506200012f92915062000133565b5090565b620000ab91905b808211156200012f57600081556001016200013a565b61529380620001606000396000f3fe608060405234801561001057600080fd5b50600436106103c45760003560e01c8063800b64ca116101ff578063b8a987321161011a578063dfb267c2116100ad578063eefb8c471161007c578063eefb8c4714610d9e578063f09cfc6414610dc1578063f2fde38b14610de4578063fbbb8ec614610e0a576103c4565b8063dfb267c214610cee578063e63a562e14610d17578063e7a324dc14610d64578063e97ffacb14610d6c576103c4565b8063d5c38464116100e9578063d5c3846414610c44578063dab6ca4414610c61578063daeaf2f214610c9c578063db27ec1814610cc2576103c4565b8063b8a9873214610bdc578063bf626ec114610c02578063cf7b684a14610c0a578063d27569e714610c3c576103c4565b806396a590c111610192578063adae900211610161578063adae900214610b80578063ae81dfe414610ba6578063b1724b4614610bae578063b4b5ea5714610bb6576103c4565b806396a590c114610af85780639929e88614610b4a5780639a377b8214610b52578063a58848c514610b78576103c4565b80638f32d59b116101ce5780638f32d59b14610a015780638f4ffcb114610a095780639436e7d414610a9657806394c2ce5814610acc576103c4565b8063800b64ca14610954578063836eebee1461098f5780638da5cb5b146109c15780638dae1b16146109c9576103c4565b80633827fca5116102ef57806362cf8a081161028257806370a082311161025157806370a082311461082c57806372ec9795146108525780637ba6f4581461086f5780637ecebe001461092e576103c4565b806362cf8a081461074b57806368cefccc1461076e5780636b6fde0e146107ce5780637048027514610806576103c4565b80634b2fea1e116102be5780634b2fea1e146106cf5780635419675f146107155780635e0be6071461071d578063626ee2d914610725576103c4565b80633827fca514610623578063429b62e514610651578063450b060114610677578063472f88f71461069d576103c4565b806317748adc1161036757806325629ec01161033657806325629ec01461055c57806327dd1b001461059f57806332e9f250146105cb57806337e6b1c1146105f1576103c4565b806317748adc146104e15780631785f53c1461050557806320606b701461052b5780632522d7ba14610533576103c4565b806303a18fa3116103a357806303a18fa31461043757806307392cc01461045b5780630c09ddfd1461048c578063104932cf146104d9576103c4565b8062073f99146103c95780630130f0bf146103e3578063026e402b1461040b575b600080fd5b6103d1610e45565b60408051918252519081900360200190f35b610409600480360360208110156103f957600080fd5b50356001600160601b0316610e4b565b005b6104096004803603604081101561042157600080fd5b506001600160a01b038135169060200135610e72565b61043f610e8c565b604080516001600160a01b039092168252519081900360200190f35b6104786004803603602081101561047157600080fd5b5035610e9b565b604080519115158252519081900360200190f35b610409600480360360a08110156104a257600080fd5b506001600160a01b0381358116916001600160601b0360208201351691604082013591606081013582169160809091013516610eb0565b61043f610f09565b6104e9610f18565b604080516001600160601b039092168252519081900360200190f35b6104096004803603602081101561051b57600080fd5b50356001600160a01b0316610f1d565b6103d1610fbd565b6104e96004803603604081101561054957600080fd5b5063ffffffff8135169060200135610fd8565b6104096004803603608081101561057257600080fd5b506001600160601b03813516906020810135906001600160a01b036040820135811691606001351661101e565b61043f600480360360408110156105b557600080fd5b506001600160a01b038135169060200135611033565b6103d1600480360360208110156105e157600080fd5b50356001600160a01b0316611059565b6104e96004803603606081101561060757600080fd5b506001600160a01b038135169060208101359060400135611077565b6104096004803603604081101561063957600080fd5b506001600160a01b03813581169160200135166110b1565b6104786004803603602081101561066757600080fd5b50356001600160a01b03166111ee565b6104096004803603602081101561068d57600080fd5b50356001600160a01b0316611203565b610409600480360360608110156106b357600080fd5b506001600160a01b0381351690602081013590604001356112c8565b610409600480360360c08110156106e557600080fd5b508035906020810135906040810135906060810135906001600160a01b03608082013581169160a00135166112d3565b610409611372565b6104096113c0565b6104096004803603602081101561073b57600080fd5b50356001600160a01b03166114be565b6104e96004803603604081101561076157600080fd5b508035906020013561156d565b6107a66004803603606081101561078457600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff166116e6565b6040805163ffffffff90931683526001600160601b0390911660208301528051918290030190f35b6107a6600480360360608110156107e457600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff16611721565b6104096004803603602081101561081c57600080fd5b50356001600160a01b031661175c565b6104e96004803603602081101561084257600080fd5b50356001600160a01b03166117ff565b6103d16004803603602081101561086857600080fd5b503561186e565b6108956004803603602081101561088557600080fd5b50356001600160a01b03166118d8565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156108d95781810151838201526020016108c1565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610918578181015183820152602001610900565b5050505090500194505050505060405180910390f35b6103d16004803603602081101561094457600080fd5b50356001600160a01b0316611a13565b6104096004803603606081101561096a57600080fd5b5080356001600160601b031690602081013590604001356001600160a01b0316611a25565b6104e9600480360360608110156109a557600080fd5b506001600160a01b038135169060208101359060400135611a97565b61043f611af9565b6104e9600480360360808110156109df57600080fd5b506001600160a01b038135169060208101359060408101359060600135611b08565b610478611b8a565b61040960048036036080811015610a1f57600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610a5857600080fd5b820183602082011115610a6a57600080fd5b803590602001918460018302840111600160201b83111715610a8b57600080fd5b509092509050611bae565b610ab360048036036020811015610aac57600080fd5b5035611e80565b6040805163ffffffff9092168252519081900360200190f35b610ab360048036036040811015610ae257600080fd5b506001600160a01b038135169060200135611e98565b610b2460048036036040811015610b0e57600080fd5b506001600160601b038135169060200135611ebb565b604080516001600160601b03938416815291909216602082015281519081900390910190f35b610478611ee0565b61040960048036036020811015610b6857600080fd5b50356001600160a01b0316611ee9565b61043f611f9e565b61047860048036036020811015610b9657600080fd5b50356001600160a01b0316611fad565b61043f611fc2565b6103d1611fd6565b6104e960048036036020811015610bcc57600080fd5b50356001600160a01b0316611fde565b61040960048036036020811015610bf257600080fd5b50356001600160601b0316611fee565b6104e96120bd565b6104e960048036036060811015610c2057600080fd5b506001600160a01b0381351690602081013590604001356120d3565b6104e961210d565b6104e960048036036020811015610c5a57600080fd5b5035612112565b61040960048036036060811015610c7757600080fd5b5080356001600160601b031690602081013590604001356001600160a01b031661216e565b61040960048036036020811015610cb257600080fd5b50356001600160601b0316612188565b610ab360048036036040811015610cd857600080fd5b506001600160a01b0381351690602001356121b0565b6107a660048036036040811015610d0457600080fd5b508035906020013563ffffffff166121d3565b610409600480360360e0811015610d2d57600080fd5b506001600160a01b038135169060208101359060408101359060608101359060ff6080820135169060a08101359060c00135612208565b6103d16124de565b6104e960048036036060811015610d8257600080fd5b506001600160a01b0381351690602081013590604001356124f9565b61040960048036036040811015610db457600080fd5b5080359060200135612761565b6104e960048036036040811015610dd757600080fd5b5080359060200135612949565b61040960048036036020811015610dfa57600080fd5b50356001600160a01b0316612b41565b61040960048036036060811015610e2057600080fd5b5080356001600160a01b031690602081013590604001356001600160601b0316612b95565b60015481565b601280546bffffffffffffffffffffffff19166001600160601b0392909216919091179055565b610e7d338383612c03565b610e88338383612cb5565b5050565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b333014610ef3576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610f0285858585856000612de2565b5050505050565b6011546001600160a01b031681565b600981565b610f25611b8a565b610f65576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b604051806043614e5b82396043019050604051809103902081565b601154600090600160a01b90046001600160601b031661100157610ffc8383612ffe565b611015565b601154600160a01b90046001600160601b03165b90505b92915050565b61102d33858585856000612de2565b50505050565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b6000611064826117ff565b6002026001600160601b03169050919050565b6012546000906001600160601b031661109a57611095848484613064565b6110a7565b6012546001600160601b03165b90505b9392505050565b6110b9611b8a565b806110d35750336000908152600f602052604090205460ff165b611113576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038083166000818152600e6020526040808220805460ff191660011790558051633c7925e360e11b815293851660048501525191926378f24bc6926024808301939282900301818387803b15801561117157600080fd5b505af1158015611185573d6000803e3d6000fd5b5050506001600160a01b038084166000818152600e6020908152604091829020805460ff1916905581519283529285169282019290925281517f2366e0b6b1af17c0ceed50685c570d519cae11e7faaf007bbe667e94a5ee3cd593509081900390910190a15050565b600f6020526000908152604090205460ff1681565b61120b611b8a565b61124b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166112a6576040805162461bcd60e51b815260206004820181905260248201527f76657374696e67207265676973747279206164647265737320696e76616c6964604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b61102d838383613064565b60006112e086420161186e565b905063059fa6008511156112f65763059fa60094505b600061130386420161186e565b90506000858383038161131257fe5b0460010190506000818a8161132357fe5b0490506001821061134457611344336001840383028c038689896001612de2565b8387015b8381116113655761135e3383838a8a6001612de2565b8701611348565b5050505050505050505050565b60055461010090046001600160a01b03166113be5760405162461bcd60e51b81526004018080602001828103825260248152602001806149a06024913960400191505060405180910390fd5b565b6113c8611b8a565b611408576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6005805460ff19166001179055600354604080516370a0823160e01b815230600482015290517fd8cc4e8d808fe950b07bfffcd83eebf1190cd35ea77fe0c8a7d75a6e9b90e5c1926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561147f57600080fd5b505afa158015611493573d6000803e3d6000fd5b505050506040513d60208110156114a957600080fd5b505160408051918252519081900360200190a1565b6114c6611b8a565b611506576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b03811661154b5760405162461bcd60e51b81526004018080602001828103825260218152602001806151276021913960400191505060405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000818310156115ae5760405162461bcd60e51b815260040180806020018281038252604c815260200180614ddb604c913960600191505060405180910390fd5b81830363059fa6008111156115f45760405162461bcd60e51b815260040180806020018281038252604d815260200180614e9e604d913960600191505060405180910390fd5b6000620151808263059fa600036001600160601b03168161161157fe5b0490506116dd600a621232106001600160601b0316611691600a600902611673621232108788026040518060400160405280601f81526020017f756e646572666c6f77206f6e207765696768742063616c63756c6174696f6e008152506130d2565b6040518060600160405280602d8152602001614c65602d913961317c565b6001600160601b0316816116a157fe5b046040518060400160405280601e81526020017f6f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e0000815250613208565b95945050505050565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b611764611b8a565b6117a4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6001546000905b63059fa600420181116118685761185c826118218584613269565b6040518060400160405280601c81526020017f5374616b696e673a3a62616c616e63654f663a206f766572666c6f7700000000815250613208565b91506212750001611806565b50919050565b60006001548210156118b15760405162461bcd60e51b815260040180806020018281038252604d815260200180614beb604d913960600191505060405180910390fd5b6000621275006001548403816118c357fe5b04905060015462127500820201915050919050565b60608060006118ec63059fa600420161186e565b60015490915060009062127500015b82811161192e57600061190e8783613269565b6001600160601b03161115611924576001909101905b62127500016118fb565b5080604051908082528060200260200182016040528015611959578160200160208202803883390190505b50935080604051908082528060200260200182016040528015611986578160200160208202803883390190505b5060015490935060009062127500015b838111611a0a5760006119a98883613269565b90506001600160601b038116156119ff57818784815181106119c757fe5b602002602001018181525050808684815181106119e057fe5b6001600160601b03909216602092830291909101909101526001909201915b506212750001611996565b50505050915091565b600c6020526000908152604090205481565b336000908152600e602052604090205460ff16611a78576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611a8583838360016132ca565b611a928383836001613616565b505050565b600080611aa38361186e565b905063059fa6008101815b818111611aef57611ae384611ac58984878b613678565b6040518060800160405280604a8152602001614d91604a9139613208565b93506212750001611aae565b5050509392505050565b6000546001600160a01b031690565b600080611b168686856136e0565b90506001600160601b03811615611b7c576000611b33868661156d565b9050600a6001600160601b0316611b6383836040518060600160405280603d8152602001614c92603d913961317c565b6001600160601b031681611b7357fe5b04925050611b81565b600091505b50949350505050565b600080546001600160a01b0316611b9f613954565b6001600160a01b031614905090565b611bb6613958565b6001600160a01b0316336001600160a01b031614611c0a576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b336001600160a01b03841614611c56576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006060611c62613967565b90506000611ca585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139bf92505050565b905060005b8251811015611cf357828181518110611cbf57fe5b60200260200101516001600160e01b031916826001600160e01b0319161415611ceb5760019350611cf3565b600101611caa565b5082611d3e576040805162461bcd60e51b81526020600482015260156024820152741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b604482015290519081900360640190fd5b60405160006020820181815290918291829189918991603c018383808284378083019250505093505050506040516020818303038152906040528060200190516060811015611d8c57600080fd5b50602081015160409091015190925090506001600160a01b03808316908b1614611def576040805162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b888114611e35576040805162461bcd60e51b815260206004820152600f60248201526e0c2dadeeadce840dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b611e7487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139c692505050565b50505050505050505050565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b600080611ec88484613b2f565b6000611ed48585613bda565b94859003959350505050565b60055460ff1681565b611ef1611b8a565b611f31576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116611f765760405162461bcd60e51b81526004018080602001828103825260298152602001806150416029913960400191505060405180910390fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b6000611018826001430342611a97565b611ff6611b8a565b612036576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160601b03811660011180159061205a575060096001600160601b03821611155b6120955760405162461bcd60e51b815260040180806020018281038252602d815260200180614c38602d913960400191505060405180910390fd5b600d80546001600160601b03909216600160a01b026001600160a01b03909216919091179055565b600d54600160a01b90046001600160601b031681565b6000806120e18585856136e0565b90506001600160601b0381161580156120fd57506120fd613c25565b156110a757506001949350505050565b600a81565b60008181526007602052604081205463ffffffff16806121335760006110aa565b6000838152600660209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03169392505050565b61217b83838360006132ca565b611a928383836000613616565b601180546001600160601b03909216600160a01b026001600160a01b03909216919091179055565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b60006040518080614e5b6043913960430190506040518091039020600260405180828054600181600116156101000203166002900480156122805780601f1061225e576101008083540402835291820191612280565b820191906000526020600020905b81548152906001019060200180831161226c575b50509150506040518091039020612295613ca1565b3060405160200180858152602001848152602001838152602001826001600160a01b03166001600160a01b031681526020019450505050506040516020818303038152906040528051906020012090506000604051808061506a604b91396040805191829003604b0182206020808401919091526001600160a01b038d1683830152606083018c9052608083018b905260a08084018b90528251808503909101815260c08401835280519082012061190160f01b60e085015260e28401879052610102808501829052835180860390910181526101228501808552815191840191909120600091829052610142860180865281905260ff8c1661016287015261018286018b90526101a286018a9052935191965092945091926001926101c28083019392601f198301929081900390910190855afa1580156123db573d6000803e3d6000fd5b5050506020604051035190506123f081613ca5565b61242b5760405162461bcd60e51b8152600401808060200182810382526029815260200180614bc26029913960400191505060405180910390fd5b6001600160a01b0381166000908152600c6020526040902080546001810190915589146124895760405162461bcd60e51b815260040180806020018281038252602581526020018061523a6025913960400191505060405180910390fd5b874211156124c85760405162461bcd60e51b81526004018080602001828103825260298152602001806149776029913960400191505060405180910390fd5b6124d3818c8c612c03565b611365818c8c612cb5565b60405180604b61506a8239604b019050604051809103902081565b6000612503613cde565b82106125405760405162461bcd60e51b81526004018080602001828103825260448152602001806151f66044913960600191505060405180910390fd5b6001600160a01b038416600090815260096020908152604080832086845290915290205463ffffffff16806125795760009150506110aa565b6001600160a01b0385166000908152600860209081526040808320878452825280832063ffffffff600019860181168552925290912054168310612605576001600160a01b038516600090815260086020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b031690506110aa565b6001600160a01b0385166000908152600860209081526040808320878452825280832083805290915290205463ffffffff168310156126485760009150506110aa565b600060001982015b8163ffffffff168163ffffffff16111561271357600282820363ffffffff1604810361267a61495f565b506001600160a01b03881660009081526008602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b031691810191909152908714156126ee576020015194506110aa9350505050565b805163ffffffff168711156127055781935061270c565b6001820392505b5050612650565b506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b61276a8161186e565b9050808211156127ab5760405162461bcd60e51b81526004018080602001828103825260428152602001806149c46042913960600191505060405180910390fd5b60006127bc63059fa600420161186e565b9050808211156127ca578091505b60006127da3385600143036136e0565b90506000816001600160601b0316116128245760405162461bcd60e51b815260040180806020018281038252604b815260200180614d12604b913960600191505060405180910390fd5b61282f338583613ce2565b61283a338483613d73565b6128448482613df6565b61284e8382613e6e565b336000908152600460209081526040808320878452909152808220548583529120546001600160a01b039182169116806128b85750336000908152600460209081526040808320878452909152902080546001600160a01b0319166001600160a01b038316179055805b336000908152600460209081526040808320898452909152902080546001600160a01b03191690556128eb828785613ed9565b6128f6818685613f76565b60408051878152602081018790526001600160601b03851681830152905133917f809d79c94c86576d61afef75495b8df415224bf885310fed7ea315039f8c5b4c919081900360600190a2505050505050565b6000612953613cde565b82106129905760405162461bcd60e51b815260040180806020018281038252603f815260200180615148603f913960400191505060405180910390fd5b60008381526007602052604090205463ffffffff16806129b4576000915050611018565b600084815260066020908152604080832063ffffffff600019860181168552925290912054168310612a1c5760008481526006602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050611018565b600084815260066020908152604080832083805290915290205463ffffffff16831015612a4d576000915050611018565b600060001982015b8163ffffffff168163ffffffff161115612b0657600282820363ffffffff16048103612a7f61495f565b50600087815260066020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415612ae1576020015194506110189350505050565b805163ffffffff16871115612af857819350612aff565b6001820392505b5050612a55565b50600085815260066020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b612b49611b8a565b612b89576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b612b9281613ff9565b50565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff94851660001981019095168452909152812054600160201b90046001600160601b031690610f0290869086908590614099565b6001600160a01b03808416600090815260046020908152604080832085845290915281205490911690612c368584613269565b6001600160a01b03868116600081815260046020908152604080832089845282529182902080546001600160a01b0319168a86169081179091558251898152925195965094938716937fb846dc53d3621f480d692e73f4473156d20f23ff6b2c8237b7130b883226cca99281900390910190a4610f02828583866142bc565b612cbd613c25565b15611a92576000612cd7826212750063ffffffff61432016565b6001600160a01b0380861660009081526004602090815260408083208584529091529020549192509081169084168114612d1657612d16858584612c03565b6000336001600160a01b031663c24a0f8b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612d5357600080fd5b505af1158015612d67573d6000803e3d6000fd5b505050506040513d6020811015612d7d57600080fd5b50519050612d94846224ea0063ffffffff61432016565b925080831415612dda576001600160a01b0380871660009081526004602090815260408083208784529091529020548116925085168214612dda57612dda868685612c03565b505050505050565b6000856001600160601b031611612e2a5760405162461bcd60e51b8152600401808060200182810382526043815260200180614ccf6043913960600191505060405180910390fd5b80612e3b57612e388461186e565b93505b428411612e795760405162461bcd60e51b8152600401808060200182810382526036815260200180614fe36036913960400191505060405180910390fd5b6001600160a01b038316612e8b578592505b6001600160a01b038216612e9d578291505b80612ec3576000612eb363059fa600420161186e565b905080851115612ec1578094505b505b6000612ecf8486613269565b9050612edd8787868861437a565b6001600160a01b03808516600090815260046020908152604080832089845290915290205481169084168114612f94576001600160a01b0385811660009081526004602090815260408083208a8452909152902080546001600160a01b031916918616919091179055612f51818784613ed9565b612f9182886040518060400160405280602081526020017f5374616b696e673a3a7374616b653a2062616c616e6365206f766572666c6f77815250613208565b96505b612f9f848789613f76565b836001600160a01b0316816001600160a01b0316866001600160a01b03167fb846dc53d3621f480d692e73f4473156d20f23ff6b2c8237b7130b883226cca9896040518082815260200191505060405180910390a45050505050505050565b60008061300a8361186e565b905063059fa6008101815b81811161305b5761304f8461303183868a63ffffffff166144bf565b604051806080016040528060558152602001614aca60559139613208565b93506212750001613015565b50505092915050565b6000806130708361186e565b905063059fa6008101815b818111611aef5760006130908883868a611b08565b90506001600160601b038116156130c7576130c485826040518060800160405280604c8152602001614f97604c9139613208565b94505b50621275000161307b565b6000836001600160601b0316836001600160601b0316111582906131745760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613139578181015183820152602001613121565b50505050905090810190601f1680156131665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60006001600160601b038416613194575060006110aa565b8383026001600160601b0380851690808716908316816131b057fe5b046001600160601b0316148390611b815760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613139578181015183820152602001613121565b6000838301826001600160601b038087169083161015611b815760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613139578181015183820152602001613121565b6001600160a01b0382166000818152600a602090815260408083208584528252808320938352600b825280832085845282528083205460001963ffffffff9182160116835292905220546001600160601b03600160201b9091041692915050565b836001600160601b031660011480156132e657506132e6613c25565b156132f05761102d565b6132f983614525565b92506133058484613b2f565b6001600160a01b038216613317573391505b6133218385613df6565b61332c338486613ce2565b33600090815260046020908152604080832086845290915290205461335b906001600160a01b03168486613ed9565b824210801561336d575060055460ff16155b8015613377575080155b156134ed5760006133888585613bda565b948590039490506001600160601b038116156134eb57600d546001600160a01b03166133e55760405162461bcd60e51b8152600401808060200182810382526030815260200180614b926030913960400191505060405180910390fd5b600354600d546040805163095ea7b360e01b81526001600160a01b0392831660048201526001600160601b03851660248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561344657600080fd5b505af115801561345a573d6000803e3d6000fd5b505050506040513d602081101561347057600080fd5b5050600d546003546040805163abe979e160e01b81526001600160a01b0392831660048201526001600160601b03851660248201529051919092169163abe979e191604480830192600092919082900301818387803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b505050505b505b6003546040805163a9059cbb60e01b81526001600160a01b0385811660048301526001600160601b03881660248301529151600093929092169163a9059cbb9160448082019260209290919082900301818787803b15801561354e57600080fd5b505af1158015613562573d6000803e3d6000fd5b505050506040513d602081101561357857600080fd5b50519050806135b85760405162461bcd60e51b8152600401808060200182810382526028815260200180614b1f6028913960400191505060405180910390fd5b604080516001600160601b0387168152602081018690528315158183015290516001600160a01b0385169133917f667b6c8ed8622dae7927a8b0837455098e32037a0181f9a2e21b9b72fead6cc79181900360600190a35050505050565b61361e613c25565b1561102d576000613638846212750063ffffffff61432016565b905081806136465750804210155b15610f0257600061365b3383600143036136e0565b90506001600160601b03811615612dda57612dda818386866132ca565b600080613685858561156d565b905060006136948787866124f9565b9050600a6001600160601b03166136c48284604051806080016040528060478152602001614a066047913961317c565b6001600160601b0316816136d457fe5b04979650505050505050565b60006136ea613cde565b82106137275760405162461bcd60e51b815260040180806020018281038252603d8152602001806150b5603d913960400191505060405180910390fd5b61373083614525565b6001600160a01b0385166000908152600b6020908152604080832084845290915290205490935063ffffffff168061376c5760009150506110aa565b6001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff6000198601811685529252909120541683106137f8576001600160a01b0385166000908152600a6020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b031690506110aa565b6001600160a01b0385166000908152600a60209081526040808320878452825280832083805290915290205463ffffffff1683101561383b5760009150506110aa565b600060001982015b8163ffffffff168163ffffffff16111561390657600282820363ffffffff1604810361386d61495f565b506001600160a01b0388166000908152600a602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b031691810191909152908714156138e1576020015194506110aa9350505050565b805163ffffffff168711156138f8578193506138ff565b6001820392505b5050613843565b506001600160a01b0386166000908152600a60209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b3390565b6003546001600160a01b031690565b60408051600180825281830190925260609182919060208083019080388339019050509050630c09ddfd60e01b816000815181106139a157fe5b6001600160e01b031990921660209283029190910190910152905090565b6020015190565b60006060306001600160a01b0316836040518082805190602001908083835b60208310613a045780518252601f1990920191602091820191016139e5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613a66576040519150601f19603f3d011682016040523d82523d6000602084013e613a6b565b606091505b509150915081611a92576044815111613ab55760405162461bcd60e51b8152600401808060200182810382526030815260200180614a9a6030913960400191505060405180910390fd5b613ae86040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b8152508261454a565b60405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613139578181015183820152602001613121565b6000826001600160601b031611613b775760405162461bcd60e51b815260040180806020018281038252604d815260200180614a4d604d913960600191505060405180910390fd5b6000613b873383600143036136e0565b9050806001600160601b0316836001600160601b03161115611a925760405162461bcd60e51b8152600401808060200182810382526025815260200180614b6d6025913960400191505060405180910390fd5b600080613be64261186e565b90506000613bf4848361156d565b600d54600160a01b90046001600160601b03908116919091029150606490600a878402821604160495945050505050565b6011546040805163dbb049d160e01b815233600482015290516000926001600160a01b03169163dbb049d1916024808301926020929190829003018186803b158015613c7057600080fd5b505afa158015613c84573d6000803e3d6000fd5b505050506040513d6020811015613c9a57600080fd5b5051905090565b4690565b600073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b038316148015906110185750506001600160a01b0316151590565b4390565b6001600160a01b0383166000818152600b60209081526040808320868452825280832054938352600a8252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526034808352600160201b9091046001600160601b03169392613d659285928892614d5d908301396130d2565b9050612dda86868584614644565b6001600160a01b0383166000818152600b60209081526040808320868452825280832054938352600a8252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526033808352600160201b9091046001600160601b03169392613d659285928892614f2990830139613208565b6000828152600760209081526040808320546006835281842063ffffffff9182166000198101909216855283528184205482516060810190935260358084529194600160201b9091046001600160601b0316939092613e61928592889291906150f2908301396130d2565b9050610f028584836147c4565b6000828152600760209081526040808320546006835281842063ffffffff9182166000198101909216855283528184205482516060810190935260348084529194600160201b9091046001600160601b0316939092613e6192859288929190614e2790830139613208565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff94851660001981019095168452909152812054600160201b90046001600160601b0390811691908416821115613f6a57613f6782856040518060600160405280603881526020016151be603891396130d2565b90505b612dda86868584614099565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526037808352600160201b9091046001600160601b03169392613f67928592889261518790830139613208565b6001600160a01b03811661403e5760405162461bcd60e51b8152600401808060200182810382526026815260200180614b476026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006140bd436040518060600160405280603e8152602001614eeb603e9139614902565b6001600160a01b03861660009081526008602090815260408083208884528252808320600019880163ffffffff9081168552925290912054919250600160201b9091046001600160601b03169084161580159061415357506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff6000198901811685529252909120548382169116145b156141b5576001600160a01b03861660009081526008602090815260408083208884528252808320600019880163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b0386160217905561425f565b60408051808201825263ffffffff80851682526001600160601b0380871660208085019182526001600160a01b038c166000818152600883528781208d825283528781208c871682528352878120965187549451909516600160201b02640100000000600160801b031995871663ffffffff19958616179590951694909417909555938252600984528482208a835290935292909220805460018801909316929091169190911790555b604080518681526001600160601b03808416602083015285168183015290516001600160a01b038816917fc7b38fb25352e6f351f57e2c922f84db5c97e09a6246bbe1d2eedfcdb01c4c62919081900360600190a2505050505050565b826001600160a01b0316846001600160a01b0316141580156142e757506000826001600160601b0316115b1561102d576001600160a01b0384161561430657614306848284613ed9565b6001600160a01b0383161561102d5761102d838284613f76565b600082820183811015611015576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600354604080516323b872dd60e01b81526001600160a01b0387811660048301523060248301526001600160601b0387166044830152915160009392909216916323b872dd9160648082019260209290919082900301818787803b1580156143e157600080fd5b505af11580156143f5573d6000803e3d6000fd5b505050506040513d602081101561440b57600080fd5b505190508061441957600080fd5b60006144258484613269565b905061444a818660405180606001604052806028815260200161501960289139613208565b90506144568386613e6e565b614461848487613d73565b604080516001600160601b0380881682526020820186905283168183015290516001600160a01b038616917f0fc5b1bac0416800b42a669229a346b6e5a15db3896339dbdc5fa376e1e4570a919081900360600190a2505050505050565b6000806144cc858561156d565b905060006144da8685612949565b9050600a6001600160601b031661450a82846040518060600160405280603b8152602001614f5c603b913961317c565b6001600160601b03168161451a57fe5b049695505050505050565b6000806145318361186e565b90508281146145435762127500810192505b5090919050565b6060808390506060839050606060448251845101036040519080825280601f01601f191660200182016040528015614589576020820181803883390190505b509050806000805b85518110156145e2578581815181106145a657fe5b602001015160f81c60f81b8383806001019450815181106145c357fe5b60200101906001600160f81b031916908160001a905350600101614591565b5060445b8451811015614637578481815181106145fb57fe5b602001015160f81c60f81b83838060010194508151811061461857fe5b60200101906001600160f81b031916908160001a9053506001016145e6565b5090979650505050505050565b6000614668436040518060600160405280603e8152602001614eeb603e9139614902565b905060008363ffffffff161180156146b957506001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff6000198801811685529252909120548282169116145b1561471b576001600160a01b0385166000908152600a602090815260408083208784528252808320600019870163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b03851602179055610f02565b60408051808201825263ffffffff92831681526001600160601b0393841660208083019182526001600160a01b03989098166000818152600a8a528481208982528a5284812088871682528a52848120935184549351909716600160201b02640100000000600160801b031997871663ffffffff19948516179790971696909617909255908452600b875281842095845294909552939020805460019092019093169116179055565b60006147e8436040518060600160405280603e8152602001614eeb603e9139614902565b905060008363ffffffff161180156148275750600084815260066020908152604080832063ffffffff6000198801811685529252909120548282169116145b15614877576000848152600660209081526040808320600019870163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b0385160217905561102d565b60408051808201825263ffffffff92831681526001600160601b0393841660208083019182526000888152600682528481208887168252825284812093518454935163ffffffff1994851691881691909117640100000000600160801b031916600160201b919098160296909617909255958452600790529091208054909316600190920116179055565b600081600160201b84106149575760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613139578181015183820152602001613121565b509192915050565b60408051808201909152600080825260208201529056fe5374616b696e673a3a64656c656761746542795369673a207369676e617475726520657870697265647468657265206973206e6f206e6577207374616b696e6720636f6e7472616374207365745374616b696e673a3a657874656e645374616b696e674475726174696f6e3a2063616e6e6f742072656475636520746865207374616b696e67206475726174696f6e57656967687465645374616b696e673a3a5f746f74616c506f776572427944617465466f7244656c6567617465653a206d756c7469706c69636174696f6e206f766572666c6f775374616b696e673a3a77697468647261773a20616d6f756e74206f6620746f6b656e7320746f2062652077697468647261776e206e6565647320746f20626520626967676572207468616e203072656365697665417070726f76616c3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e57656967687465645374616b696e673a3a6765745072696f72546f74616c566f74696e67506f7765723a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e5374616b696e673a3a77697468647261773a20546f6b656e207472616e73666572206661696c65644f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735374616b696e673a3a77697468647261773a206e6f7420656e6f7567682062616c616e63655374616b696e673a3a77697468647261773a2046656553686172696e672061646472657373207761736e2774207365745374616b696e673a3a64656c656761746542795369673a20696e76616c6964207369676e617475726557656967687465645374616b696e673a3a74696d657374616d70546f4c6f636b446174653a2074696d657374616d70206c696573206265666f726520636f6e7472616374206372656174696f6e776569676874207363616c696e6720646f65736e27742062656c6f6e6720746f2072616e6765205b312c20395d6d756c7469706c69636174696f6e206f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e57656967687465645374616b696e673a3a77656967687465645374616b654279446174653a206d756c7469706c69636174696f6e206f766572666c6f775374616b696e673a3a7374616b653a20616d6f756e74206f6620746f6b656e7320746f207374616b65206e6565647320746f20626520626967676572207468616e20305374616b696e673a3a657874656e645374616b696e674475726174696f6e3a206e6f7468696e67207374616b656420756e74696c207468652070726576696f7573206c6f636b20646174655374616b696e673a3a5f6465637265617365557365725374616b653a207374616b656420616d6f756e7420756e646572666c6f7757656967687465645374616b696e673a3a6765745072696f72566f7465733a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e57656967687465645374616b696e673a3a636f6d707574655765696768744279446174653a2064617465206e6565647320746f20626520626967676572207468616e207374617274446174655374616b696e673a3a5f696e6372656173654461696c795374616b653a207374616b656420616d6f756e74206f766572666c6f77454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374295374616b696e673a3a636f6d707574655765696768744279446174653a72656d61696e696e672074696d652063616e277420626520626967676572207468616e206d6178206475726174696f6e5374616b696e673a3a5f77726974655374616b696e67436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735374616b696e673a3a5f696e637265617365557365725374616b653a207374616b656420616d6f756e74206f766572666c6f7757656967687465645374616b696e673a3a5f746f74616c506f7765724279446174653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f7257656967687465645374616b653a206f766572666c6f77206f6e20746f74616c2077656967687420636f6d7075746174696f6e5374616b696e673a3a74696d657374616d70546f4c6f636b446174653a207374616b696e6720706572696f6420746f6f2073686f72745374616b696e673a3a696e6372656173655374616b653a2062616c616e6365206f766572666c6f7763616e277420726573657420746865206e6577207374616b696e6720636f6e747261637420746f203044656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e74323536206578706972792957656967687465645374616b696e673a3a6765745072696f72557365725374616b65416e64446174653a206e6f74207965742064657465726d696e65645374616b696e673a3a5f64656372656173654461696c795374616b653a207374616b656420616d6f756e7420756e646572666c6f7746656553686172696e6720616464726573732073686f756c646e2774206265203057656967687465645374616b696e673a3a6765745072696f72546f74616c5374616b6573466f72446174653a206e6f74207965742064657465726d696e65645374616b696e673a3a5f696e63726561736544656c65676174655374616b653a207374616b656420616d6f756e74206f766572666c6f775374616b696e673a3a5f646563726561736544656c65676174655374616b653a207374616b656420616d6f756e7420756e646572666c6f7757656967687465645374616b696e673a3a6765745072696f725374616b65427944617465466f7244656c6567617465653a206e6f74207965742064657465726d696e65645374616b696e673a3a64656c656761746542795369673a20696e76616c6964206e6f6e6365a265627a7a7231582070c8659f6a2b539ed56789906ea305ff4a9fbc30164e77e66884ba77da4f7e7464736f6c63430005110032",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH10 0x534F565374616B696E67 PUSH1 0xB0 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH3 0x2D SWAP2 PUSH1 0x2 SWAP2 SWAP1 PUSH3 0xAE JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH1 0x0 PUSH3 0x59 PUSH3 0xA9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x150 JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xF1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x121 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x121 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x121 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x104 JUMP JUMPDEST POP PUSH3 0x12F SWAP3 SWAP2 POP PUSH3 0x133 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0xAB SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x12F JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x13A JUMP JUMPDEST PUSH2 0x5293 DUP1 PUSH3 0x160 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x800B64CA GT PUSH2 0x1FF JUMPI DUP1 PUSH4 0xB8A98732 GT PUSH2 0x11A JUMPI DUP1 PUSH4 0xDFB267C2 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xEEFB8C47 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xEEFB8C47 EQ PUSH2 0xD9E JUMPI DUP1 PUSH4 0xF09CFC64 EQ PUSH2 0xDC1 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xDE4 JUMPI DUP1 PUSH4 0xFBBB8EC6 EQ PUSH2 0xE0A JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0xCEE JUMPI DUP1 PUSH4 0xE63A562E EQ PUSH2 0xD17 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0xD64 JUMPI DUP1 PUSH4 0xE97FFACB EQ PUSH2 0xD6C JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0xD5C38464 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xD5C38464 EQ PUSH2 0xC44 JUMPI DUP1 PUSH4 0xDAB6CA44 EQ PUSH2 0xC61 JUMPI DUP1 PUSH4 0xDAEAF2F2 EQ PUSH2 0xC9C JUMPI DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0xCC2 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0xB8A98732 EQ PUSH2 0xBDC JUMPI DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0xC02 JUMPI DUP1 PUSH4 0xCF7B684A EQ PUSH2 0xC0A JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0xC3C JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x96A590C1 GT PUSH2 0x192 JUMPI DUP1 PUSH4 0xADAE9002 GT PUSH2 0x161 JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0xB80 JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0xBA6 JUMPI DUP1 PUSH4 0xB1724B46 EQ PUSH2 0xBAE JUMPI DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0xBB6 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x96A590C1 EQ PUSH2 0xAF8 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0xB4A JUMPI DUP1 PUSH4 0x9A377B82 EQ PUSH2 0xB52 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0xB78 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1CE JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xA01 JUMPI DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0xA09 JUMPI DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0xA96 JUMPI DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0xACC JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x800B64CA EQ PUSH2 0x954 JUMPI DUP1 PUSH4 0x836EEBEE EQ PUSH2 0x98F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x9C1 JUMPI DUP1 PUSH4 0x8DAE1B16 EQ PUSH2 0x9C9 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x3827FCA5 GT PUSH2 0x2EF JUMPI DUP1 PUSH4 0x62CF8A08 GT PUSH2 0x282 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x251 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x82C JUMPI DUP1 PUSH4 0x72EC9795 EQ PUSH2 0x852 JUMPI DUP1 PUSH4 0x7BA6F458 EQ PUSH2 0x86F JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x92E JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x62CF8A08 EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x76E JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x7CE JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x806 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x4B2FEA1E GT PUSH2 0x2BE JUMPI DUP1 PUSH4 0x4B2FEA1E EQ PUSH2 0x6CF JUMPI DUP1 PUSH4 0x5419675F EQ PUSH2 0x715 JUMPI DUP1 PUSH4 0x5E0BE607 EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0x626EE2D9 EQ PUSH2 0x725 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x3827FCA5 EQ PUSH2 0x623 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x651 JUMPI DUP1 PUSH4 0x450B0601 EQ PUSH2 0x677 JUMPI DUP1 PUSH4 0x472F88F7 EQ PUSH2 0x69D JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x17748ADC GT PUSH2 0x367 JUMPI DUP1 PUSH4 0x25629EC0 GT PUSH2 0x336 JUMPI DUP1 PUSH4 0x25629EC0 EQ PUSH2 0x55C JUMPI DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0x32E9F250 EQ PUSH2 0x5CB JUMPI DUP1 PUSH4 0x37E6B1C1 EQ PUSH2 0x5F1 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x17748ADC EQ PUSH2 0x4E1 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0x2522D7BA EQ PUSH2 0x533 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x3A18FA3 GT PUSH2 0x3A3 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x437 JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0xC09DDFD EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x4D9 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x3C9 JUMPI DUP1 PUSH4 0x130F0BF EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0x26E402B EQ PUSH2 0x40B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D1 PUSH2 0xE45 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0xE4B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xE72 JUMP JUMPDEST PUSH2 0x43F PUSH2 0xE8C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x478 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xE9B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x80 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xEB0 JUMP JUMPDEST PUSH2 0x43F PUSH2 0xF09 JUMP JUMPDEST PUSH2 0x4E9 PUSH2 0xF18 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF1D JUMP JUMPDEST PUSH2 0x3D1 PUSH2 0xFBD JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0xFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFD8 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x101E JUMP JUMPDEST PUSH2 0x43F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1033 JUMP JUMPDEST PUSH2 0x3D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1077 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x639 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0x478 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11EE JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x68D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1203 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x12C8 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x80 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0xA0 ADD CALLDATALOAD AND PUSH2 0x12D3 JUMP JUMPDEST PUSH2 0x409 PUSH2 0x1372 JUMP JUMPDEST PUSH2 0x409 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x73B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14BE JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x156D JUMP JUMPDEST PUSH2 0x7A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x16E6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x7A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x1721 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x175C JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x842 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x17FF JUMP JUMPDEST PUSH2 0x3D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x868 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x186E JUMP JUMPDEST PUSH2 0x895 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8D9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8C1 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x918 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x900 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A13 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x96A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x9A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1A97 JUMP JUMPDEST PUSH2 0x43F PUSH2 0x1AF9 JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x9DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1B08 JUMP JUMPDEST PUSH2 0x478 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xA58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1BAE JUMP JUMPDEST PUSH2 0xAB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E80 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E98 JUMP JUMPDEST PUSH2 0xB24 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 RETURN JUMPDEST PUSH2 0x478 PUSH2 0x1EE0 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EE9 JUMP JUMPDEST PUSH2 0x43F PUSH2 0x1F9E JUMP JUMPDEST PUSH2 0x478 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1FAD JUMP JUMPDEST PUSH2 0x43F PUSH2 0x1FC2 JUMP JUMPDEST PUSH2 0x3D1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1FDE JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1FEE JUMP JUMPDEST PUSH2 0x4E9 PUSH2 0x20BD JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x20D3 JUMP JUMPDEST PUSH2 0x4E9 PUSH2 0x210D JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2112 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x216E JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x2188 JUMP JUMPDEST PUSH2 0xAB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x21B0 JUMP JUMPDEST PUSH2 0x7A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x21D3 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xD2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x2208 JUMP JUMPDEST PUSH2 0x3D1 PUSH2 0x24DE JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x24F9 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2761 JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2949 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B41 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xE20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x2B95 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x12 DUP1 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE7D CALLER DUP4 DUP4 PUSH2 0x2C03 JUMP JUMPDEST PUSH2 0xE88 CALLER DUP4 DUP4 PUSH2 0x2CB5 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0xEF3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF02 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x2DE2 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0xF25 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0xF65 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x43 PUSH2 0x4E5B DUP3 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1001 JUMPI PUSH2 0xFFC DUP4 DUP4 PUSH2 0x2FFE JUMP JUMPDEST PUSH2 0x1015 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x102D CALLER DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x2DE2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1064 DUP3 PUSH2 0x17FF JUMP JUMPDEST PUSH1 0x2 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x12 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x109A JUMPI PUSH2 0x1095 DUP5 DUP5 DUP5 PUSH2 0x3064 JUMP JUMPDEST PUSH2 0x10A7 JUMP JUMPDEST PUSH1 0x12 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x10B9 PUSH2 0x1B8A JUMP JUMPDEST DUP1 PUSH2 0x10D3 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1113 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD PUSH4 0x3C7925E3 PUSH1 0xE1 SHL DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x4 DUP6 ADD MSTORE MLOAD SWAP2 SWAP3 PUSH4 0x78F24BC6 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1185 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP3 DUP6 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 MLOAD PUSH32 0x2366E0B6B1AF17C0CEED50685C570D519CAE11E7FAAF007BBE667E94A5EE3CD5 SWAP4 POP SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x120B PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x124B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x12A6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67207265676973747279206164647265737320696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x11 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x102D DUP4 DUP4 DUP4 PUSH2 0x3064 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E0 DUP7 TIMESTAMP ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP6 GT ISZERO PUSH2 0x12F6 JUMPI PUSH4 0x59FA600 SWAP5 POP JUMPDEST PUSH1 0x0 PUSH2 0x1303 DUP7 TIMESTAMP ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP4 SUB DUP2 PUSH2 0x1312 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 DUP11 DUP2 PUSH2 0x1323 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 DUP3 LT PUSH2 0x1344 JUMPI PUSH2 0x1344 CALLER PUSH1 0x1 DUP5 SUB DUP4 MUL DUP13 SUB DUP7 DUP10 DUP10 PUSH1 0x1 PUSH2 0x2DE2 JUMP JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP4 DUP2 GT PUSH2 0x1365 JUMPI PUSH2 0x135E CALLER DUP4 DUP4 DUP11 DUP11 PUSH1 0x1 PUSH2 0x2DE2 JUMP JUMPDEST DUP8 ADD PUSH2 0x1348 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x49A0 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x13C8 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x1408 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xD8CC4E8D808FE950B07BFFFCD83EEBF1190CD35EA77FE0C8A7D75A6E9B90E5C1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x147F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1493 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x14C6 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x1506 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x154B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5127 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT ISZERO PUSH2 0x15AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4DDB PUSH1 0x4C SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP4 SUB PUSH4 0x59FA600 DUP2 GT ISZERO PUSH2 0x15F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4E9E PUSH1 0x4D SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x15180 DUP3 PUSH4 0x59FA600 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x1611 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x16DD PUSH1 0xA PUSH3 0x123210 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1691 PUSH1 0xA PUSH1 0x9 MUL PUSH2 0x1673 PUSH3 0x123210 DUP8 DUP9 MUL PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x756E646572666C6F77206F6E207765696768742063616C63756C6174696F6E00 DUP2 MSTORE POP PUSH2 0x30D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4C65 PUSH1 0x2D SWAP2 CODECOPY PUSH2 0x317C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x16A1 JUMPI INVALID JUMPDEST DIV PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6F766572666C6F77206F6E2077656967687420636F6D7075746174696F6E0000 DUP2 MSTORE POP PUSH2 0x3208 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH2 0x1764 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x17A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 JUMPDEST PUSH4 0x59FA600 TIMESTAMP ADD DUP2 GT PUSH2 0x1868 JUMPI PUSH2 0x185C DUP3 PUSH2 0x1821 DUP6 DUP5 PUSH2 0x3269 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5374616B696E673A3A62616C616E63654F663A206F766572666C6F7700000000 DUP2 MSTORE POP PUSH2 0x3208 JUMP JUMPDEST SWAP2 POP PUSH3 0x127500 ADD PUSH2 0x1806 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD DUP3 LT ISZERO PUSH2 0x18B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4BEB PUSH1 0x4D SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x127500 PUSH1 0x1 SLOAD DUP5 SUB DUP2 PUSH2 0x18C3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 SLOAD PUSH3 0x127500 DUP3 MUL ADD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x18EC PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x186E JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x127500 ADD JUMPDEST DUP3 DUP2 GT PUSH2 0x192E JUMPI PUSH1 0x0 PUSH2 0x190E DUP8 DUP4 PUSH2 0x3269 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO PUSH2 0x1924 JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH3 0x127500 ADD PUSH2 0x18FB JUMP JUMPDEST POP DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1959 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP4 POP DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1986 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH1 0x0 SWAP1 PUSH3 0x127500 ADD JUMPDEST DUP4 DUP2 GT PUSH2 0x1A0A JUMPI PUSH1 0x0 PUSH2 0x19A9 DUP9 DUP4 PUSH2 0x3269 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x19FF JUMPI DUP2 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x19C7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x19E0 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0x1996 JUMP JUMPDEST POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1A78 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1A85 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x32CA JUMP JUMPDEST PUSH2 0x1A92 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x3616 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AA3 DUP4 PUSH2 0x186E JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x1AEF JUMPI PUSH2 0x1AE3 DUP5 PUSH2 0x1AC5 DUP10 DUP5 DUP8 DUP12 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4D91 PUSH1 0x4A SWAP2 CODECOPY PUSH2 0x3208 JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x1AAE JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B16 DUP7 DUP7 DUP6 PUSH2 0x36E0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x1B7C JUMPI PUSH1 0x0 PUSH2 0x1B33 DUP7 DUP7 PUSH2 0x156D JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1B63 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4C92 PUSH1 0x3D SWAP2 CODECOPY PUSH2 0x317C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x1B73 JUMPI INVALID JUMPDEST DIV SWAP3 POP POP PUSH2 0x1B81 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B9F PUSH2 0x3954 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1BB6 PUSH2 0x3958 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1C0A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x1C56 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x1C62 PUSH2 0x3967 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1CA5 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x39BF SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1CF3 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1CBF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0x1CEB JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0x1CF3 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1CAA JUMP JUMPDEST POP DUP3 PUSH2 0x1D3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE SWAP1 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP10 SWAP2 DUP10 SWAP2 PUSH1 0x3C ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1D8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0x1DEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP9 DUP2 EQ PUSH2 0x1E35 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1E74 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x39C6 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1EC8 DUP5 DUP5 PUSH2 0x3B2F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ED4 DUP6 DUP6 PUSH2 0x3BDA JUMP JUMPDEST SWAP5 DUP6 SWAP1 SUB SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1EF1 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x1F31 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1F76 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5041 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1018 DUP3 PUSH1 0x1 NUMBER SUB TIMESTAMP PUSH2 0x1A97 JUMP JUMPDEST PUSH2 0x1FF6 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x2036 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND PUSH1 0x1 GT DUP1 ISZERO SWAP1 PUSH2 0x205A JUMPI POP PUSH1 0x9 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND GT ISZERO JUMPDEST PUSH2 0x2095 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4C38 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x20E1 DUP6 DUP6 DUP6 PUSH2 0x36E0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO DUP1 ISZERO PUSH2 0x20FD JUMPI POP PUSH2 0x20FD PUSH2 0x3C25 JUMP JUMPDEST ISZERO PUSH2 0x10A7 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x2133 JUMPI PUSH1 0x0 PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP6 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x217B DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH2 0x1A92 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x3616 JUMP JUMPDEST PUSH1 0x11 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH2 0x4E5B PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2280 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x225E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x2280 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x226C JUMPI JUMPDEST POP POP SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH2 0x2295 PUSH2 0x3CA1 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH2 0x506A PUSH1 0x4B SWAP2 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x4B ADD DUP3 KECCAK256 PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP4 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD DUP13 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP1 DUP5 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP5 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0xE2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH2 0x102 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH2 0x122 DUP6 ADD DUP1 DUP6 MSTORE DUP2 MLOAD SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE PUSH2 0x142 DUP7 ADD DUP1 DUP7 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP13 AND PUSH2 0x162 DUP8 ADD MSTORE PUSH2 0x182 DUP7 ADD DUP12 SWAP1 MSTORE PUSH2 0x1A2 DUP7 ADD DUP11 SWAP1 MSTORE SWAP4 MLOAD SWAP2 SWAP7 POP SWAP3 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1C2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH2 0x23F0 DUP2 PUSH2 0x3CA5 JUMP JUMPDEST PUSH2 0x242B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4BC2 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0x2489 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x523A PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0x24C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4977 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x24D3 DUP2 DUP13 DUP13 PUSH2 0x2C03 JUMP JUMPDEST PUSH2 0x1365 DUP2 DUP13 DUP13 PUSH2 0x2CB5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x4B PUSH2 0x506A DUP3 CODECOPY PUSH1 0x4B ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2503 PUSH2 0x3CDE JUMP JUMPDEST DUP3 LT PUSH2 0x2540 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x44 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51F6 PUSH1 0x44 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x2579 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x2605 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x2648 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x2713 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x267A PUSH2 0x495F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x26EE JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x10AA SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x2705 JUMPI DUP2 SWAP4 POP PUSH2 0x270C JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x2650 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x276A DUP2 PUSH2 0x186E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x49C4 PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x27BC PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27CA JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x27DA CALLER DUP6 PUSH1 0x1 NUMBER SUB PUSH2 0x36E0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x2824 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4D12 PUSH1 0x4B SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x282F CALLER DUP6 DUP4 PUSH2 0x3CE2 JUMP JUMPDEST PUSH2 0x283A CALLER DUP5 DUP4 PUSH2 0x3D73 JUMP JUMPDEST PUSH2 0x2844 DUP5 DUP3 PUSH2 0x3DF6 JUMP JUMPDEST PUSH2 0x284E DUP4 DUP3 PUSH2 0x3E6E JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 PUSH2 0x28B8 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE DUP1 JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x28EB DUP3 DUP8 DUP6 PUSH2 0x3ED9 JUMP JUMPDEST PUSH2 0x28F6 DUP2 DUP7 DUP6 PUSH2 0x3F76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x809D79C94C86576D61AFEF75495B8DF415224BF885310FED7EA315039F8C5B4C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2953 PUSH2 0x3CDE JUMP JUMPDEST DUP3 LT PUSH2 0x2990 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5148 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x29B4 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1018 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x2A1C JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x1018 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x2A4D JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1018 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x2B06 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x2A7F PUSH2 0x495F JUMP JUMPDEST POP PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x2AE1 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x1018 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x2AF8 JUMPI DUP2 SWAP4 POP PUSH2 0x2AFF JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x2A55 JUMP JUMPDEST POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B49 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x2B89 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2B92 DUP2 PUSH2 0x3FF9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 PUSH2 0xF02 SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH2 0x4099 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND SWAP1 PUSH2 0x2C36 DUP6 DUP5 PUSH2 0x3269 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP11 DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP10 DUP2 MSTORE SWAP3 MLOAD SWAP6 SWAP7 POP SWAP5 SWAP4 DUP8 AND SWAP4 PUSH32 0xB846DC53D3621F480D692E73F4473156D20F23FF6B2C8237B7130B883226CCA9 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0xF02 DUP3 DUP6 DUP4 DUP7 PUSH2 0x42BC JUMP JUMPDEST PUSH2 0x2CBD PUSH2 0x3C25 JUMP JUMPDEST ISZERO PUSH2 0x1A92 JUMPI PUSH1 0x0 PUSH2 0x2CD7 DUP3 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x4320 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 AND SWAP1 DUP5 AND DUP2 EQ PUSH2 0x2D16 JUMPI PUSH2 0x2D16 DUP6 DUP6 DUP5 PUSH2 0x2C03 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC24A0F8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x2D94 DUP5 PUSH3 0x24EA00 PUSH4 0xFFFFFFFF PUSH2 0x4320 AND JUMP JUMPDEST SWAP3 POP DUP1 DUP4 EQ ISZERO PUSH2 0x2DDA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 AND SWAP3 POP DUP6 AND DUP3 EQ PUSH2 0x2DDA JUMPI PUSH2 0x2DDA DUP7 DUP7 DUP6 PUSH2 0x2C03 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x2E2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4CCF PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x2E3B JUMPI PUSH2 0x2E38 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP4 POP JUMPDEST TIMESTAMP DUP5 GT PUSH2 0x2E79 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4FE3 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2E8B JUMPI DUP6 SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2E9D JUMPI DUP3 SWAP2 POP JUMPDEST DUP1 PUSH2 0x2EC3 JUMPI PUSH1 0x0 PUSH2 0x2EB3 PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x2EC1 JUMPI DUP1 SWAP5 POP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x2ECF DUP5 DUP7 PUSH2 0x3269 JUMP JUMPDEST SWAP1 POP PUSH2 0x2EDD DUP8 DUP8 DUP7 DUP9 PUSH2 0x437A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 AND SWAP1 DUP5 AND DUP2 EQ PUSH2 0x2F94 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x2F51 DUP2 DUP8 DUP5 PUSH2 0x3ED9 JUMP JUMPDEST PUSH2 0x2F91 DUP3 DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5374616B696E673A3A7374616B653A2062616C616E6365206F766572666C6F77 DUP2 MSTORE POP PUSH2 0x3208 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH2 0x2F9F DUP5 DUP8 DUP10 PUSH2 0x3F76 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB846DC53D3621F480D692E73F4473156D20F23FF6B2C8237B7130B883226CCA9 DUP10 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x300A DUP4 PUSH2 0x186E JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x305B JUMPI PUSH2 0x304F DUP5 PUSH2 0x3031 DUP4 DUP7 DUP11 PUSH4 0xFFFFFFFF AND PUSH2 0x44BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x55 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4ACA PUSH1 0x55 SWAP2 CODECOPY PUSH2 0x3208 JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x3015 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3070 DUP4 PUSH2 0x186E JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x1AEF JUMPI PUSH1 0x0 PUSH2 0x3090 DUP9 DUP4 DUP7 DUP11 PUSH2 0x1B08 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x30C7 JUMPI PUSH2 0x30C4 DUP6 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4F97 PUSH1 0x4C SWAP2 CODECOPY PUSH2 0x3208 JUMP JUMPDEST SWAP5 POP JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0x307B JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO DUP3 SWAP1 PUSH2 0x3174 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3139 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3121 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3166 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x3194 JUMPI POP PUSH1 0x0 PUSH2 0x10AA JUMP JUMPDEST DUP4 DUP4 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP6 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP4 AND DUP2 PUSH2 0x31B0 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND EQ DUP4 SWAP1 PUSH2 0x1B81 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3139 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3121 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x1B81 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3139 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3121 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x0 NOT PUSH4 0xFFFFFFFF SWAP2 DUP3 AND ADD AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x32E6 JUMPI POP PUSH2 0x32E6 PUSH2 0x3C25 JUMP JUMPDEST ISZERO PUSH2 0x32F0 JUMPI PUSH2 0x102D JUMP JUMPDEST PUSH2 0x32F9 DUP4 PUSH2 0x4525 JUMP JUMPDEST SWAP3 POP PUSH2 0x3305 DUP5 DUP5 PUSH2 0x3B2F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3317 JUMPI CALLER SWAP2 POP JUMPDEST PUSH2 0x3321 DUP4 DUP6 PUSH2 0x3DF6 JUMP JUMPDEST PUSH2 0x332C CALLER DUP5 DUP7 PUSH2 0x3CE2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x335B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH2 0x3ED9 JUMP JUMPDEST DUP3 TIMESTAMP LT DUP1 ISZERO PUSH2 0x336D JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3377 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x34ED JUMPI PUSH1 0x0 PUSH2 0x3388 DUP6 DUP6 PUSH2 0x3BDA JUMP JUMPDEST SWAP5 DUP6 SWAP1 SUB SWAP5 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x34EB JUMPI PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x33E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B92 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x345A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0xD SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xABE979E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xABE979E1 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x34D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x34E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP9 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x354E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3562 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3578 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x35B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B1F PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP4 ISZERO ISZERO DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0x667B6C8ED8622DAE7927A8B0837455098E32037A0181F9A2E21B9B72FEAD6CC7 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x361E PUSH2 0x3C25 JUMP JUMPDEST ISZERO PUSH2 0x102D JUMPI PUSH1 0x0 PUSH2 0x3638 DUP5 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x4320 AND JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x3646 JUMPI POP DUP1 TIMESTAMP LT ISZERO JUMPDEST ISZERO PUSH2 0xF02 JUMPI PUSH1 0x0 PUSH2 0x365B CALLER DUP4 PUSH1 0x1 NUMBER SUB PUSH2 0x36E0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x2DDA JUMPI PUSH2 0x2DDA DUP2 DUP4 DUP7 DUP7 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3685 DUP6 DUP6 PUSH2 0x156D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3694 DUP8 DUP8 DUP7 PUSH2 0x24F9 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x36C4 DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4A06 PUSH1 0x47 SWAP2 CODECOPY PUSH2 0x317C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x36D4 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36EA PUSH2 0x3CDE JUMP JUMPDEST DUP3 LT PUSH2 0x3727 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x50B5 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3730 DUP4 PUSH2 0x4525 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP4 POP PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x376C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x37F8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x383B JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x3906 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x386D PUSH2 0x495F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x38E1 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x10AA SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x38F8 JUMPI DUP2 SWAP4 POP PUSH2 0x38FF JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x3843 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH4 0xC09DDFD PUSH1 0xE0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x39A1 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3A04 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x39E5 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3A66 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A6B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1A92 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0x3AB5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A9A PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3AE8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x454A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3139 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3121 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x3B77 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A4D PUSH1 0x4D SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B87 CALLER DUP4 PUSH1 0x1 NUMBER SUB PUSH2 0x36E0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO PUSH2 0x1A92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B6D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3BE6 TIMESTAMP PUSH2 0x186E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3BF4 DUP5 DUP4 PUSH2 0x156D JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 POP PUSH1 0x64 SWAP1 PUSH1 0xA DUP8 DUP5 MUL DUP3 AND DIV AND DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDBB049D1 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xDBB049D1 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3C84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x1018 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x3D65 SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x4D5D SWAP1 DUP4 ADD CODECOPY PUSH2 0x30D2 JUMP JUMPDEST SWAP1 POP PUSH2 0x2DDA DUP7 DUP7 DUP6 DUP5 PUSH2 0x4644 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x33 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x3D65 SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x4F29 SWAP1 DUP4 ADD CODECOPY PUSH2 0x3208 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x6 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP3 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x35 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP1 SWAP3 PUSH2 0x3E61 SWAP3 DUP6 SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x50F2 SWAP1 DUP4 ADD CODECOPY PUSH2 0x30D2 JUMP JUMPDEST SWAP1 POP PUSH2 0xF02 DUP6 DUP5 DUP4 PUSH2 0x47C4 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x6 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP3 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x34 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP1 SWAP3 PUSH2 0x3E61 SWAP3 DUP6 SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x4E27 SWAP1 DUP4 ADD CODECOPY PUSH2 0x3208 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP2 SWAP1 DUP5 AND DUP3 GT ISZERO PUSH2 0x3F6A JUMPI PUSH2 0x3F67 DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x51BE PUSH1 0x38 SWAP2 CODECOPY PUSH2 0x30D2 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2DDA DUP7 DUP7 DUP6 DUP5 PUSH2 0x4099 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x37 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x3F67 SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x5187 SWAP1 DUP4 ADD CODECOPY PUSH2 0x3208 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x403E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B47 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40BD NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4EEB PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x4902 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 DUP5 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4153 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP4 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x41B5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND MUL OR SWAP1 SSTORE PUSH2 0x425F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP14 DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP13 DUP8 AND DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP5 MLOAD SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP6 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP6 DUP7 AND OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP6 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x9 DUP5 MSTORE DUP5 DUP3 KECCAK256 DUP11 DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP9 ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH32 0xC7B38FB25352E6F351F57E2C922F84DB5C97E09A6246BBE1D2EEDFCDB01C4C62 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x42E7 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x102D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x4306 JUMPI PUSH2 0x4306 DUP5 DUP3 DUP5 PUSH2 0x3ED9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x102D JUMPI PUSH2 0x102D DUP4 DUP3 DUP5 PUSH2 0x3F76 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1015 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x43E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x43F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x440B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x4419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4425 DUP5 DUP5 PUSH2 0x3269 JUMP JUMPDEST SWAP1 POP PUSH2 0x444A DUP2 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5019 PUSH1 0x28 SWAP2 CODECOPY PUSH2 0x3208 JUMP JUMPDEST SWAP1 POP PUSH2 0x4456 DUP4 DUP7 PUSH2 0x3E6E JUMP JUMPDEST PUSH2 0x4461 DUP5 DUP5 DUP8 PUSH2 0x3D73 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP9 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP4 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH32 0xFC5B1BAC0416800B42A669229A346B6E5A15DB3896339DBDC5FA376E1E4570A SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x44CC DUP6 DUP6 PUSH2 0x156D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x44DA DUP7 DUP6 PUSH2 0x2949 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x450A DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4F5C PUSH1 0x3B SWAP2 CODECOPY PUSH2 0x317C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x451A JUMPI INVALID JUMPDEST DIV SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4531 DUP4 PUSH2 0x186E JUMP JUMPDEST SWAP1 POP DUP3 DUP2 EQ PUSH2 0x4543 JUMPI PUSH3 0x127500 DUP2 ADD SWAP3 POP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4589 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x45E2 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x45A6 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x45C3 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x4591 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x4637 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x45FB JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x4618 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x45E6 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4668 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4EEB PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x4902 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x46B9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x471B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP8 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0xF02 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 SWAP1 SWAP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA DUP11 MSTORE DUP5 DUP2 KECCAK256 DUP10 DUP3 MSTORE DUP11 MSTORE DUP5 DUP2 KECCAK256 DUP9 DUP8 AND DUP3 MSTORE DUP11 MSTORE DUP5 DUP2 KECCAK256 SWAP4 MLOAD DUP5 SLOAD SWAP4 MLOAD SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP8 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP5 DUP6 AND OR SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP3 SSTORE SWAP1 DUP5 MSTORE PUSH1 0xB DUP8 MSTORE DUP2 DUP5 KECCAK256 SWAP6 DUP5 MSTORE SWAP5 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP3 ADD SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47E8 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4EEB PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x4902 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x4827 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x4877 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP8 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0x102D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x6 DUP3 MSTORE DUP5 DUP2 KECCAK256 DUP9 DUP8 AND DUP3 MSTORE DUP3 MSTORE DUP5 DUP2 KECCAK256 SWAP4 MLOAD DUP5 SLOAD SWAP4 MLOAD PUSH4 0xFFFFFFFF NOT SWAP5 DUP6 AND SWAP2 DUP9 AND SWAP2 SWAP1 SWAP2 OR PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL SWAP2 SWAP1 SWAP9 AND MUL SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP3 SSTORE SWAP6 DUP5 MSTORE PUSH1 0x7 SWAP1 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 AND PUSH1 0x1 SWAP1 SWAP3 ADD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x20 SHL DUP5 LT PUSH2 0x4957 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3139 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3121 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP INVALID MSTORE8 PUSH21 0x616B696E673A3A64656C656761746542795369673A KECCAK256 PUSH20 0x69676E6174757265206578706972656474686572 PUSH6 0x206973206E6F KECCAK256 PUSH15 0x6577207374616B696E6720636F6E74 PUSH19 0x616374207365745374616B696E673A3A657874 PUSH6 0x6E645374616B PUSH10 0x6E674475726174696F6E GASPRICE KECCAK256 PUSH4 0x616E6E6F PUSH21 0x2072656475636520746865207374616B696E672064 PUSH22 0x726174696F6E57656967687465645374616B696E673A GASPRICE 0x5F PUSH21 0x6F74616C506F776572427944617465466F7244656C PUSH6 0x67617465653A KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F775374616B696E673A3A PUSH24 0x697468647261773A20616D6F756E74206F6620746F6B656E PUSH20 0x20746F2062652077697468647261776E206E6565 PUSH5 0x7320746F20 PUSH3 0x652062 PUSH10 0x67676572207468616E20 ADDRESS PUSH19 0x656365697665417070726F76616C3A20547261 PUSH15 0x73616374696F6E2065786563757469 PUSH16 0x6E2072657665727465642E5765696768 PUSH21 0x65645374616B696E673A3A6765745072696F72546F PUSH21 0x616C566F74696E67506F7765723A206F766572666C PUSH16 0x77206F6E20746F74616C20766F74696E PUSH8 0x20706F7765722063 PUSH16 0x6D7075746174696F6E5374616B696E67 GASPRICE GASPRICE PUSH24 0x697468647261773A20546F6B656E207472616E7366657220 PUSH7 0x61696C65644F77 PUSH15 0x61626C653A206E6577206F776E6572 KECCAK256 PUSH10 0x7320746865207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x6573735374616B696E673A3A77697468647261 PUSH24 0x3A206E6F7420656E6F7567682062616C616E63655374616B PUSH10 0x6E673A3A776974686472 PUSH2 0x773A KECCAK256 CHAINID PUSH6 0x655368617269 PUSH15 0x672061646472657373207761736E27 PUSH21 0x207365745374616B696E673A3A64656C6567617465 TIMESTAMP PUSH26 0x5369673A20696E76616C6964207369676E617475726557656967 PUSH9 0x7465645374616B696E PUSH8 0x3A3A74696D657374 PUSH2 0x6D70 SLOAD PUSH16 0x4C6F636B446174653A2074696D657374 PUSH2 0x6D70 KECCAK256 PUSH13 0x696573206265666F726520636F PUSH15 0x7472616374206372656174696F6E77 PUSH6 0x696768742073 PUSH4 0x616C696E PUSH8 0x20646F65736E2774 KECCAK256 PUSH3 0x656C6F PUSH15 0x6720746F2072616E6765205B312C20 CODECOPY 0x5D PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77206F6E207765696768 PUSH21 0x20636F6D7075746174696F6E576569676874656453 PUSH21 0x616B696E673A3A77656967687465645374616B6542 PUSH26 0x446174653A206D756C7469706C69636174696F6E206F76657266 PUSH13 0x6F775374616B696E673A3A7374 PUSH2 0x6B65 GASPRICE KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206F6620746F6B656E7320746F207374616B6520 PUSH15 0x6565647320746F2062652062696767 PUSH6 0x72207468616E KECCAK256 ADDRESS MSTORE8 PUSH21 0x616B696E673A3A657874656E645374616B696E6744 PUSH22 0x726174696F6E3A206E6F7468696E67207374616B6564 KECCAK256 PUSH22 0x6E74696C207468652070726576696F7573206C6F636B KECCAK256 PUSH5 0x6174655374 PUSH2 0x6B69 PUSH15 0x673A3A5F6465637265617365557365 PUSH19 0x5374616B653A207374616B656420616D6F756E PUSH21 0x20756E646572666C6F775765696768746564537461 PUSH12 0x696E673A3A6765745072696F PUSH19 0x566F7465733A206F766572666C6F77206F6E20 PUSH21 0x6F74616C20766F74696E6720706F77657220636F6D PUSH17 0x75746174696F6E57656967687465645374 PUSH2 0x6B69 PUSH15 0x673A3A636F6D707574655765696768 PUSH21 0x4279446174653A2064617465206E6565647320746F KECCAK256 PUSH3 0x652062 PUSH10 0x67676572207468616E20 PUSH20 0x74617274446174655374616B696E673A3A5F696E PUSH4 0x72656173 PUSH6 0x4461696C7953 PUSH21 0x616B653A207374616B656420616D6F756E74206F76 PUSH6 0x72666C6F7745 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH22 0x696E7432353620636861696E49642C61646472657373 KECCAK256 PUSH23 0x6572696679696E67436F6E7472616374295374616B696E PUSH8 0x3A3A636F6D707574 PUSH6 0x576569676874 TIMESTAMP PUSH26 0x446174653A72656D61696E696E672074696D652063616E277420 PUSH3 0x652062 PUSH10 0x67676572207468616E20 PUSH14 0x6178206475726174696F6E537461 PUSH12 0x696E673A3A5F777269746553 PUSH21 0x616B696E67436865636B706F696E743A20626C6F63 PUSH12 0x206E756D6265722065786365 PUSH6 0x647320333220 PUSH3 0x697473 MSTORE8 PUSH21 0x616B696E673A3A5F696E6372656173655573657253 PUSH21 0x616B653A207374616B656420616D6F756E74206F76 PUSH6 0x72666C6F7757 PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A5F746F74616C506F776572427944 PUSH2 0x7465 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72576569676874 PUSH6 0x645374616B65 GASPRICE KECCAK256 PUSH16 0x766572666C6F77206F6E20746F74616C KECCAK256 PUSH24 0x656967687420636F6D7075746174696F6E5374616B696E67 GASPRICE GASPRICE PUSH21 0x696D657374616D70546F4C6F636B446174653A2073 PUSH21 0x616B696E6720706572696F6420746F6F2073686F72 PUSH21 0x5374616B696E673A3A696E6372656173655374616B PUSH6 0x3A2062616C61 PUSH15 0x6365206F766572666C6F7763616E27 PUSH21 0x20726573657420746865206E6577207374616B696E PUSH8 0x20636F6E74726163 PUSH21 0x20746F203044656C65676174696F6E286164647265 PUSH20 0x732064656C6567617465652C75696E7432353620 PUSH13 0x6F636B446174652C75696E7432 CALLDATALOAD CALLDATASIZE KECCAK256 PUSH15 0x6F6E63652C75696E74323536206578 PUSH17 0x6972792957656967687465645374616B69 PUSH15 0x673A3A6765745072696F7255736572 MSTORE8 PUSH21 0x616B65416E64446174653A206E6F74207965742064 PUSH6 0x7465726D696E PUSH6 0x645374616B69 PUSH15 0x673A3A5F6465637265617365446169 PUSH13 0x795374616B653A207374616B65 PUSH5 0x20616D6F75 PUSH15 0x7420756E646572666C6F7746656553 PUSH9 0x6172696E6720616464 PUSH19 0x6573732073686F756C646E2774206265203057 PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A6765745072696F72546F74616C53 PUSH21 0x616B6573466F72446174653A206E6F742079657420 PUSH5 0x657465726D PUSH10 0x6E65645374616B696E67 GASPRICE GASPRICE 0x5F PUSH10 0x6E63726561736544656C PUSH6 0x676174655374 PUSH2 0x6B65 GASPRICE KECCAK256 PUSH20 0x74616B656420616D6F756E74206F766572666C6F PUSH24 0x5374616B696E673A3A5F646563726561736544656C656761 PUSH21 0x655374616B653A207374616B656420616D6F756E74 KECCAK256 PUSH22 0x6E646572666C6F7757656967687465645374616B696E PUSH8 0x3A3A676574507269 PUSH16 0x725374616B65427944617465466F7244 PUSH6 0x6C6567617465 PUSH6 0x3A206E6F7420 PUSH26 0x65742064657465726D696E65645374616B696E673A3A64656C65 PUSH8 0x6174654279536967 GASPRICE KECCAK256 PUSH10 0x6E76616C6964206E6F6E PUSH4 0x65A26562 PUSH27 0x7A7231582070C8659F6A2B539ED56789906EA305FF4A9FBC30164E PUSH24 0xE66884BA77DA4F7E7464736F6C6343000511003200000000 ",
              "sourceMap": "1973:26:59:-;71:1535:115;1973:26:59;;71:1535:115;1973:26:59;;;-1:-1:-1;;;1973:26:59;;;;;;;;;;:::i;:::-;-1:-1:-1;2262:31:59;;;-1:-1:-1;;2262:31:59;;;5091:52;;;-1:-1:-1;;;;;5091:52:59;-1:-1:-1;;;5091:52:59;;;-1:-1:-1;697:12:142;:10;:12::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;71:1535:115;;780:87:137;853:10;780:87;;:::o;71:1535:115:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;71:1535:115;;;-1:-1:-1;71:1535:115;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106103c45760003560e01c8063800b64ca116101ff578063b8a987321161011a578063dfb267c2116100ad578063eefb8c471161007c578063eefb8c4714610d9e578063f09cfc6414610dc1578063f2fde38b14610de4578063fbbb8ec614610e0a576103c4565b8063dfb267c214610cee578063e63a562e14610d17578063e7a324dc14610d64578063e97ffacb14610d6c576103c4565b8063d5c38464116100e9578063d5c3846414610c44578063dab6ca4414610c61578063daeaf2f214610c9c578063db27ec1814610cc2576103c4565b8063b8a9873214610bdc578063bf626ec114610c02578063cf7b684a14610c0a578063d27569e714610c3c576103c4565b806396a590c111610192578063adae900211610161578063adae900214610b80578063ae81dfe414610ba6578063b1724b4614610bae578063b4b5ea5714610bb6576103c4565b806396a590c114610af85780639929e88614610b4a5780639a377b8214610b52578063a58848c514610b78576103c4565b80638f32d59b116101ce5780638f32d59b14610a015780638f4ffcb114610a095780639436e7d414610a9657806394c2ce5814610acc576103c4565b8063800b64ca14610954578063836eebee1461098f5780638da5cb5b146109c15780638dae1b16146109c9576103c4565b80633827fca5116102ef57806362cf8a081161028257806370a082311161025157806370a082311461082c57806372ec9795146108525780637ba6f4581461086f5780637ecebe001461092e576103c4565b806362cf8a081461074b57806368cefccc1461076e5780636b6fde0e146107ce5780637048027514610806576103c4565b80634b2fea1e116102be5780634b2fea1e146106cf5780635419675f146107155780635e0be6071461071d578063626ee2d914610725576103c4565b80633827fca514610623578063429b62e514610651578063450b060114610677578063472f88f71461069d576103c4565b806317748adc1161036757806325629ec01161033657806325629ec01461055c57806327dd1b001461059f57806332e9f250146105cb57806337e6b1c1146105f1576103c4565b806317748adc146104e15780631785f53c1461050557806320606b701461052b5780632522d7ba14610533576103c4565b806303a18fa3116103a357806303a18fa31461043757806307392cc01461045b5780630c09ddfd1461048c578063104932cf146104d9576103c4565b8062073f99146103c95780630130f0bf146103e3578063026e402b1461040b575b600080fd5b6103d1610e45565b60408051918252519081900360200190f35b610409600480360360208110156103f957600080fd5b50356001600160601b0316610e4b565b005b6104096004803603604081101561042157600080fd5b506001600160a01b038135169060200135610e72565b61043f610e8c565b604080516001600160a01b039092168252519081900360200190f35b6104786004803603602081101561047157600080fd5b5035610e9b565b604080519115158252519081900360200190f35b610409600480360360a08110156104a257600080fd5b506001600160a01b0381358116916001600160601b0360208201351691604082013591606081013582169160809091013516610eb0565b61043f610f09565b6104e9610f18565b604080516001600160601b039092168252519081900360200190f35b6104096004803603602081101561051b57600080fd5b50356001600160a01b0316610f1d565b6103d1610fbd565b6104e96004803603604081101561054957600080fd5b5063ffffffff8135169060200135610fd8565b6104096004803603608081101561057257600080fd5b506001600160601b03813516906020810135906001600160a01b036040820135811691606001351661101e565b61043f600480360360408110156105b557600080fd5b506001600160a01b038135169060200135611033565b6103d1600480360360208110156105e157600080fd5b50356001600160a01b0316611059565b6104e96004803603606081101561060757600080fd5b506001600160a01b038135169060208101359060400135611077565b6104096004803603604081101561063957600080fd5b506001600160a01b03813581169160200135166110b1565b6104786004803603602081101561066757600080fd5b50356001600160a01b03166111ee565b6104096004803603602081101561068d57600080fd5b50356001600160a01b0316611203565b610409600480360360608110156106b357600080fd5b506001600160a01b0381351690602081013590604001356112c8565b610409600480360360c08110156106e557600080fd5b508035906020810135906040810135906060810135906001600160a01b03608082013581169160a00135166112d3565b610409611372565b6104096113c0565b6104096004803603602081101561073b57600080fd5b50356001600160a01b03166114be565b6104e96004803603604081101561076157600080fd5b508035906020013561156d565b6107a66004803603606081101561078457600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff166116e6565b6040805163ffffffff90931683526001600160601b0390911660208301528051918290030190f35b6107a6600480360360608110156107e457600080fd5b5080356001600160a01b0316906020810135906040013563ffffffff16611721565b6104096004803603602081101561081c57600080fd5b50356001600160a01b031661175c565b6104e96004803603602081101561084257600080fd5b50356001600160a01b03166117ff565b6103d16004803603602081101561086857600080fd5b503561186e565b6108956004803603602081101561088557600080fd5b50356001600160a01b03166118d8565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156108d95781810151838201526020016108c1565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610918578181015183820152602001610900565b5050505090500194505050505060405180910390f35b6103d16004803603602081101561094457600080fd5b50356001600160a01b0316611a13565b6104096004803603606081101561096a57600080fd5b5080356001600160601b031690602081013590604001356001600160a01b0316611a25565b6104e9600480360360608110156109a557600080fd5b506001600160a01b038135169060208101359060400135611a97565b61043f611af9565b6104e9600480360360808110156109df57600080fd5b506001600160a01b038135169060208101359060408101359060600135611b08565b610478611b8a565b61040960048036036080811015610a1f57600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610a5857600080fd5b820183602082011115610a6a57600080fd5b803590602001918460018302840111600160201b83111715610a8b57600080fd5b509092509050611bae565b610ab360048036036020811015610aac57600080fd5b5035611e80565b6040805163ffffffff9092168252519081900360200190f35b610ab360048036036040811015610ae257600080fd5b506001600160a01b038135169060200135611e98565b610b2460048036036040811015610b0e57600080fd5b506001600160601b038135169060200135611ebb565b604080516001600160601b03938416815291909216602082015281519081900390910190f35b610478611ee0565b61040960048036036020811015610b6857600080fd5b50356001600160a01b0316611ee9565b61043f611f9e565b61047860048036036020811015610b9657600080fd5b50356001600160a01b0316611fad565b61043f611fc2565b6103d1611fd6565b6104e960048036036020811015610bcc57600080fd5b50356001600160a01b0316611fde565b61040960048036036020811015610bf257600080fd5b50356001600160601b0316611fee565b6104e96120bd565b6104e960048036036060811015610c2057600080fd5b506001600160a01b0381351690602081013590604001356120d3565b6104e961210d565b6104e960048036036020811015610c5a57600080fd5b5035612112565b61040960048036036060811015610c7757600080fd5b5080356001600160601b031690602081013590604001356001600160a01b031661216e565b61040960048036036020811015610cb257600080fd5b50356001600160601b0316612188565b610ab360048036036040811015610cd857600080fd5b506001600160a01b0381351690602001356121b0565b6107a660048036036040811015610d0457600080fd5b508035906020013563ffffffff166121d3565b610409600480360360e0811015610d2d57600080fd5b506001600160a01b038135169060208101359060408101359060608101359060ff6080820135169060a08101359060c00135612208565b6103d16124de565b6104e960048036036060811015610d8257600080fd5b506001600160a01b0381351690602081013590604001356124f9565b61040960048036036040811015610db457600080fd5b5080359060200135612761565b6104e960048036036040811015610dd757600080fd5b5080359060200135612949565b61040960048036036020811015610dfa57600080fd5b50356001600160a01b0316612b41565b61040960048036036060811015610e2057600080fd5b5080356001600160a01b031690602081013590604001356001600160601b0316612b95565b60015481565b601280546bffffffffffffffffffffffff19166001600160601b0392909216919091179055565b610e7d338383612c03565b610e88338383612cb5565b5050565b600d546001600160a01b031681565b60106020526000908152604090205460ff1681565b333014610ef3576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610f0285858585856000612de2565b5050505050565b6011546001600160a01b031681565b600981565b610f25611b8a565b610f65576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b604051806043614e5b82396043019050604051809103902081565b601154600090600160a01b90046001600160601b031661100157610ffc8383612ffe565b611015565b601154600160a01b90046001600160601b03165b90505b92915050565b61102d33858585856000612de2565b50505050565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b6000611064826117ff565b6002026001600160601b03169050919050565b6012546000906001600160601b031661109a57611095848484613064565b6110a7565b6012546001600160601b03165b90505b9392505050565b6110b9611b8a565b806110d35750336000908152600f602052604090205460ff165b611113576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038083166000818152600e6020526040808220805460ff191660011790558051633c7925e360e11b815293851660048501525191926378f24bc6926024808301939282900301818387803b15801561117157600080fd5b505af1158015611185573d6000803e3d6000fd5b5050506001600160a01b038084166000818152600e6020908152604091829020805460ff1916905581519283529285169282019290925281517f2366e0b6b1af17c0ceed50685c570d519cae11e7faaf007bbe667e94a5ee3cd593509081900390910190a15050565b600f6020526000908152604090205460ff1681565b61120b611b8a565b61124b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166112a6576040805162461bcd60e51b815260206004820181905260248201527f76657374696e67207265676973747279206164647265737320696e76616c6964604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b61102d838383613064565b60006112e086420161186e565b905063059fa6008511156112f65763059fa60094505b600061130386420161186e565b90506000858383038161131257fe5b0460010190506000818a8161132357fe5b0490506001821061134457611344336001840383028c038689896001612de2565b8387015b8381116113655761135e3383838a8a6001612de2565b8701611348565b5050505050505050505050565b60055461010090046001600160a01b03166113be5760405162461bcd60e51b81526004018080602001828103825260248152602001806149a06024913960400191505060405180910390fd5b565b6113c8611b8a565b611408576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6005805460ff19166001179055600354604080516370a0823160e01b815230600482015290517fd8cc4e8d808fe950b07bfffcd83eebf1190cd35ea77fe0c8a7d75a6e9b90e5c1926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561147f57600080fd5b505afa158015611493573d6000803e3d6000fd5b505050506040513d60208110156114a957600080fd5b505160408051918252519081900360200190a1565b6114c6611b8a565b611506576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b03811661154b5760405162461bcd60e51b81526004018080602001828103825260218152602001806151276021913960400191505060405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000818310156115ae5760405162461bcd60e51b815260040180806020018281038252604c815260200180614ddb604c913960600191505060405180910390fd5b81830363059fa6008111156115f45760405162461bcd60e51b815260040180806020018281038252604d815260200180614e9e604d913960600191505060405180910390fd5b6000620151808263059fa600036001600160601b03168161161157fe5b0490506116dd600a621232106001600160601b0316611691600a600902611673621232108788026040518060400160405280601f81526020017f756e646572666c6f77206f6e207765696768742063616c63756c6174696f6e008152506130d2565b6040518060600160405280602d8152602001614c65602d913961317c565b6001600160601b0316816116a157fe5b046040518060400160405280601e81526020017f6f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e0000815250613208565b95945050505050565b600a60209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b600860209081526000938452604080852082529284528284209052825290205463ffffffff811690600160201b90046001600160601b031682565b611764611b8a565b6117a4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6001546000905b63059fa600420181116118685761185c826118218584613269565b6040518060400160405280601c81526020017f5374616b696e673a3a62616c616e63654f663a206f766572666c6f7700000000815250613208565b91506212750001611806565b50919050565b60006001548210156118b15760405162461bcd60e51b815260040180806020018281038252604d815260200180614beb604d913960600191505060405180910390fd5b6000621275006001548403816118c357fe5b04905060015462127500820201915050919050565b60608060006118ec63059fa600420161186e565b60015490915060009062127500015b82811161192e57600061190e8783613269565b6001600160601b03161115611924576001909101905b62127500016118fb565b5080604051908082528060200260200182016040528015611959578160200160208202803883390190505b50935080604051908082528060200260200182016040528015611986578160200160208202803883390190505b5060015490935060009062127500015b838111611a0a5760006119a98883613269565b90506001600160601b038116156119ff57818784815181106119c757fe5b602002602001018181525050808684815181106119e057fe5b6001600160601b03909216602092830291909101909101526001909201915b506212750001611996565b50505050915091565b600c6020526000908152604090205481565b336000908152600e602052604090205460ff16611a78576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611a8583838360016132ca565b611a928383836001613616565b505050565b600080611aa38361186e565b905063059fa6008101815b818111611aef57611ae384611ac58984878b613678565b6040518060800160405280604a8152602001614d91604a9139613208565b93506212750001611aae565b5050509392505050565b6000546001600160a01b031690565b600080611b168686856136e0565b90506001600160601b03811615611b7c576000611b33868661156d565b9050600a6001600160601b0316611b6383836040518060600160405280603d8152602001614c92603d913961317c565b6001600160601b031681611b7357fe5b04925050611b81565b600091505b50949350505050565b600080546001600160a01b0316611b9f613954565b6001600160a01b031614905090565b611bb6613958565b6001600160a01b0316336001600160a01b031614611c0a576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b336001600160a01b03841614611c56576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006060611c62613967565b90506000611ca585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139bf92505050565b905060005b8251811015611cf357828181518110611cbf57fe5b60200260200101516001600160e01b031916826001600160e01b0319161415611ceb5760019350611cf3565b600101611caa565b5082611d3e576040805162461bcd60e51b81526020600482015260156024820152741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b604482015290519081900360640190fd5b60405160006020820181815290918291829189918991603c018383808284378083019250505093505050506040516020818303038152906040528060200190516060811015611d8c57600080fd5b50602081015160409091015190925090506001600160a01b03808316908b1614611def576040805162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b888114611e35576040805162461bcd60e51b815260206004820152600f60248201526e0c2dadeeadce840dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b611e7487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139c692505050565b50505050505050505050565b60076020526000908152604090205463ffffffff1681565b600960209081526000928352604080842090915290825290205463ffffffff1681565b600080611ec88484613b2f565b6000611ed48585613bda565b94859003959350505050565b60055460ff1681565b611ef1611b8a565b611f31576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116611f765760405162461bcd60e51b81526004018080602001828103825260298152602001806150416029913960400191505060405180910390fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6003546001600160a01b031681565b600e6020526000908152604090205460ff1681565b60055461010090046001600160a01b031681565b63059fa60081565b6000611018826001430342611a97565b611ff6611b8a565b612036576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160601b03811660011180159061205a575060096001600160601b03821611155b6120955760405162461bcd60e51b815260040180806020018281038252602d815260200180614c38602d913960400191505060405180910390fd5b600d80546001600160601b03909216600160a01b026001600160a01b03909216919091179055565b600d54600160a01b90046001600160601b031681565b6000806120e18585856136e0565b90506001600160601b0381161580156120fd57506120fd613c25565b156110a757506001949350505050565b600a81565b60008181526007602052604081205463ffffffff16806121335760006110aa565b6000838152600660209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03169392505050565b61217b83838360006132ca565b611a928383836000613616565b601180546001600160601b03909216600160a01b026001600160a01b03909216919091179055565b600b60209081526000928352604080842090915290825290205463ffffffff1681565b600660209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b60006040518080614e5b6043913960430190506040518091039020600260405180828054600181600116156101000203166002900480156122805780601f1061225e576101008083540402835291820191612280565b820191906000526020600020905b81548152906001019060200180831161226c575b50509150506040518091039020612295613ca1565b3060405160200180858152602001848152602001838152602001826001600160a01b03166001600160a01b031681526020019450505050506040516020818303038152906040528051906020012090506000604051808061506a604b91396040805191829003604b0182206020808401919091526001600160a01b038d1683830152606083018c9052608083018b905260a08084018b90528251808503909101815260c08401835280519082012061190160f01b60e085015260e28401879052610102808501829052835180860390910181526101228501808552815191840191909120600091829052610142860180865281905260ff8c1661016287015261018286018b90526101a286018a9052935191965092945091926001926101c28083019392601f198301929081900390910190855afa1580156123db573d6000803e3d6000fd5b5050506020604051035190506123f081613ca5565b61242b5760405162461bcd60e51b8152600401808060200182810382526029815260200180614bc26029913960400191505060405180910390fd5b6001600160a01b0381166000908152600c6020526040902080546001810190915589146124895760405162461bcd60e51b815260040180806020018281038252602581526020018061523a6025913960400191505060405180910390fd5b874211156124c85760405162461bcd60e51b81526004018080602001828103825260298152602001806149776029913960400191505060405180910390fd5b6124d3818c8c612c03565b611365818c8c612cb5565b60405180604b61506a8239604b019050604051809103902081565b6000612503613cde565b82106125405760405162461bcd60e51b81526004018080602001828103825260448152602001806151f66044913960600191505060405180910390fd5b6001600160a01b038416600090815260096020908152604080832086845290915290205463ffffffff16806125795760009150506110aa565b6001600160a01b0385166000908152600860209081526040808320878452825280832063ffffffff600019860181168552925290912054168310612605576001600160a01b038516600090815260086020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b031690506110aa565b6001600160a01b0385166000908152600860209081526040808320878452825280832083805290915290205463ffffffff168310156126485760009150506110aa565b600060001982015b8163ffffffff168163ffffffff16111561271357600282820363ffffffff1604810361267a61495f565b506001600160a01b03881660009081526008602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b031691810191909152908714156126ee576020015194506110aa9350505050565b805163ffffffff168711156127055781935061270c565b6001820392505b5050612650565b506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b61276a8161186e565b9050808211156127ab5760405162461bcd60e51b81526004018080602001828103825260428152602001806149c46042913960600191505060405180910390fd5b60006127bc63059fa600420161186e565b9050808211156127ca578091505b60006127da3385600143036136e0565b90506000816001600160601b0316116128245760405162461bcd60e51b815260040180806020018281038252604b815260200180614d12604b913960600191505060405180910390fd5b61282f338583613ce2565b61283a338483613d73565b6128448482613df6565b61284e8382613e6e565b336000908152600460209081526040808320878452909152808220548583529120546001600160a01b039182169116806128b85750336000908152600460209081526040808320878452909152902080546001600160a01b0319166001600160a01b038316179055805b336000908152600460209081526040808320898452909152902080546001600160a01b03191690556128eb828785613ed9565b6128f6818685613f76565b60408051878152602081018790526001600160601b03851681830152905133917f809d79c94c86576d61afef75495b8df415224bf885310fed7ea315039f8c5b4c919081900360600190a2505050505050565b6000612953613cde565b82106129905760405162461bcd60e51b815260040180806020018281038252603f815260200180615148603f913960400191505060405180910390fd5b60008381526007602052604090205463ffffffff16806129b4576000915050611018565b600084815260066020908152604080832063ffffffff600019860181168552925290912054168310612a1c5760008481526006602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050611018565b600084815260066020908152604080832083805290915290205463ffffffff16831015612a4d576000915050611018565b600060001982015b8163ffffffff168163ffffffff161115612b0657600282820363ffffffff16048103612a7f61495f565b50600087815260066020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415612ae1576020015194506110189350505050565b805163ffffffff16871115612af857819350612aff565b6001820392505b5050612a55565b50600085815260066020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b612b49611b8a565b612b89576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b612b9281613ff9565b50565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff94851660001981019095168452909152812054600160201b90046001600160601b031690610f0290869086908590614099565b6001600160a01b03808416600090815260046020908152604080832085845290915281205490911690612c368584613269565b6001600160a01b03868116600081815260046020908152604080832089845282529182902080546001600160a01b0319168a86169081179091558251898152925195965094938716937fb846dc53d3621f480d692e73f4473156d20f23ff6b2c8237b7130b883226cca99281900390910190a4610f02828583866142bc565b612cbd613c25565b15611a92576000612cd7826212750063ffffffff61432016565b6001600160a01b0380861660009081526004602090815260408083208584529091529020549192509081169084168114612d1657612d16858584612c03565b6000336001600160a01b031663c24a0f8b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612d5357600080fd5b505af1158015612d67573d6000803e3d6000fd5b505050506040513d6020811015612d7d57600080fd5b50519050612d94846224ea0063ffffffff61432016565b925080831415612dda576001600160a01b0380871660009081526004602090815260408083208784529091529020548116925085168214612dda57612dda868685612c03565b505050505050565b6000856001600160601b031611612e2a5760405162461bcd60e51b8152600401808060200182810382526043815260200180614ccf6043913960600191505060405180910390fd5b80612e3b57612e388461186e565b93505b428411612e795760405162461bcd60e51b8152600401808060200182810382526036815260200180614fe36036913960400191505060405180910390fd5b6001600160a01b038316612e8b578592505b6001600160a01b038216612e9d578291505b80612ec3576000612eb363059fa600420161186e565b905080851115612ec1578094505b505b6000612ecf8486613269565b9050612edd8787868861437a565b6001600160a01b03808516600090815260046020908152604080832089845290915290205481169084168114612f94576001600160a01b0385811660009081526004602090815260408083208a8452909152902080546001600160a01b031916918616919091179055612f51818784613ed9565b612f9182886040518060400160405280602081526020017f5374616b696e673a3a7374616b653a2062616c616e6365206f766572666c6f77815250613208565b96505b612f9f848789613f76565b836001600160a01b0316816001600160a01b0316866001600160a01b03167fb846dc53d3621f480d692e73f4473156d20f23ff6b2c8237b7130b883226cca9896040518082815260200191505060405180910390a45050505050505050565b60008061300a8361186e565b905063059fa6008101815b81811161305b5761304f8461303183868a63ffffffff166144bf565b604051806080016040528060558152602001614aca60559139613208565b93506212750001613015565b50505092915050565b6000806130708361186e565b905063059fa6008101815b818111611aef5760006130908883868a611b08565b90506001600160601b038116156130c7576130c485826040518060800160405280604c8152602001614f97604c9139613208565b94505b50621275000161307b565b6000836001600160601b0316836001600160601b0316111582906131745760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613139578181015183820152602001613121565b50505050905090810190601f1680156131665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60006001600160601b038416613194575060006110aa565b8383026001600160601b0380851690808716908316816131b057fe5b046001600160601b0316148390611b815760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613139578181015183820152602001613121565b6000838301826001600160601b038087169083161015611b815760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613139578181015183820152602001613121565b6001600160a01b0382166000818152600a602090815260408083208584528252808320938352600b825280832085845282528083205460001963ffffffff9182160116835292905220546001600160601b03600160201b9091041692915050565b836001600160601b031660011480156132e657506132e6613c25565b156132f05761102d565b6132f983614525565b92506133058484613b2f565b6001600160a01b038216613317573391505b6133218385613df6565b61332c338486613ce2565b33600090815260046020908152604080832086845290915290205461335b906001600160a01b03168486613ed9565b824210801561336d575060055460ff16155b8015613377575080155b156134ed5760006133888585613bda565b948590039490506001600160601b038116156134eb57600d546001600160a01b03166133e55760405162461bcd60e51b8152600401808060200182810382526030815260200180614b926030913960400191505060405180910390fd5b600354600d546040805163095ea7b360e01b81526001600160a01b0392831660048201526001600160601b03851660248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561344657600080fd5b505af115801561345a573d6000803e3d6000fd5b505050506040513d602081101561347057600080fd5b5050600d546003546040805163abe979e160e01b81526001600160a01b0392831660048201526001600160601b03851660248201529051919092169163abe979e191604480830192600092919082900301818387803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b505050505b505b6003546040805163a9059cbb60e01b81526001600160a01b0385811660048301526001600160601b03881660248301529151600093929092169163a9059cbb9160448082019260209290919082900301818787803b15801561354e57600080fd5b505af1158015613562573d6000803e3d6000fd5b505050506040513d602081101561357857600080fd5b50519050806135b85760405162461bcd60e51b8152600401808060200182810382526028815260200180614b1f6028913960400191505060405180910390fd5b604080516001600160601b0387168152602081018690528315158183015290516001600160a01b0385169133917f667b6c8ed8622dae7927a8b0837455098e32037a0181f9a2e21b9b72fead6cc79181900360600190a35050505050565b61361e613c25565b1561102d576000613638846212750063ffffffff61432016565b905081806136465750804210155b15610f0257600061365b3383600143036136e0565b90506001600160601b03811615612dda57612dda818386866132ca565b600080613685858561156d565b905060006136948787866124f9565b9050600a6001600160601b03166136c48284604051806080016040528060478152602001614a066047913961317c565b6001600160601b0316816136d457fe5b04979650505050505050565b60006136ea613cde565b82106137275760405162461bcd60e51b815260040180806020018281038252603d8152602001806150b5603d913960400191505060405180910390fd5b61373083614525565b6001600160a01b0385166000908152600b6020908152604080832084845290915290205490935063ffffffff168061376c5760009150506110aa565b6001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff6000198601811685529252909120541683106137f8576001600160a01b0385166000908152600a6020908152604080832087845282528083206000199490940163ffffffff1683529290522054600160201b90046001600160601b031690506110aa565b6001600160a01b0385166000908152600a60209081526040808320878452825280832083805290915290205463ffffffff1683101561383b5760009150506110aa565b600060001982015b8163ffffffff168163ffffffff16111561390657600282820363ffffffff1604810361386d61495f565b506001600160a01b0388166000908152600a602090815260408083208a8452825280832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b031691810191909152908714156138e1576020015194506110aa9350505050565b805163ffffffff168711156138f8578193506138ff565b6001820392505b5050613843565b506001600160a01b0386166000908152600a60209081526040808320888452825280832063ffffffff909416835292905220546001600160601b03600160201b909104169150509392505050565b3390565b6003546001600160a01b031690565b60408051600180825281830190925260609182919060208083019080388339019050509050630c09ddfd60e01b816000815181106139a157fe5b6001600160e01b031990921660209283029190910190910152905090565b6020015190565b60006060306001600160a01b0316836040518082805190602001908083835b60208310613a045780518252601f1990920191602091820191016139e5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613a66576040519150601f19603f3d011682016040523d82523d6000602084013e613a6b565b606091505b509150915081611a92576044815111613ab55760405162461bcd60e51b8152600401808060200182810382526030815260200180614a9a6030913960400191505060405180910390fd5b613ae86040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b8152508261454a565b60405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613139578181015183820152602001613121565b6000826001600160601b031611613b775760405162461bcd60e51b815260040180806020018281038252604d815260200180614a4d604d913960600191505060405180910390fd5b6000613b873383600143036136e0565b9050806001600160601b0316836001600160601b03161115611a925760405162461bcd60e51b8152600401808060200182810382526025815260200180614b6d6025913960400191505060405180910390fd5b600080613be64261186e565b90506000613bf4848361156d565b600d54600160a01b90046001600160601b03908116919091029150606490600a878402821604160495945050505050565b6011546040805163dbb049d160e01b815233600482015290516000926001600160a01b03169163dbb049d1916024808301926020929190829003018186803b158015613c7057600080fd5b505afa158015613c84573d6000803e3d6000fd5b505050506040513d6020811015613c9a57600080fd5b5051905090565b4690565b600073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b038316148015906110185750506001600160a01b0316151590565b4390565b6001600160a01b0383166000818152600b60209081526040808320868452825280832054938352600a8252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526034808352600160201b9091046001600160601b03169392613d659285928892614d5d908301396130d2565b9050612dda86868584614644565b6001600160a01b0383166000818152600b60209081526040808320868452825280832054938352600a8252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526033808352600160201b9091046001600160601b03169392613d659285928892614f2990830139613208565b6000828152600760209081526040808320546006835281842063ffffffff9182166000198101909216855283528184205482516060810190935260358084529194600160201b9091046001600160601b0316939092613e61928592889291906150f2908301396130d2565b9050610f028584836147c4565b6000828152600760209081526040808320546006835281842063ffffffff9182166000198101909216855283528184205482516060810190935260348084529194600160201b9091046001600160601b0316939092613e6192859288929190614e2790830139613208565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff94851660001981019095168452909152812054600160201b90046001600160601b0390811691908416821115613f6a57613f6782856040518060600160405280603881526020016151be603891396130d2565b90505b612dda86868584614099565b6001600160a01b038316600081815260096020908152604080832086845282528083205493835260088252808320868452825280832063ffffffff948516600019810190951684528252808320548151606081019092526037808352600160201b9091046001600160601b03169392613f67928592889261518790830139613208565b6001600160a01b03811661403e5760405162461bcd60e51b8152600401808060200182810382526026815260200180614b476026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006140bd436040518060600160405280603e8152602001614eeb603e9139614902565b6001600160a01b03861660009081526008602090815260408083208884528252808320600019880163ffffffff9081168552925290912054919250600160201b9091046001600160601b03169084161580159061415357506001600160a01b0386166000908152600860209081526040808320888452825280832063ffffffff6000198901811685529252909120548382169116145b156141b5576001600160a01b03861660009081526008602090815260408083208884528252808320600019880163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b0386160217905561425f565b60408051808201825263ffffffff80851682526001600160601b0380871660208085019182526001600160a01b038c166000818152600883528781208d825283528781208c871682528352878120965187549451909516600160201b02640100000000600160801b031995871663ffffffff19958616179590951694909417909555938252600984528482208a835290935292909220805460018801909316929091169190911790555b604080518681526001600160601b03808416602083015285168183015290516001600160a01b038816917fc7b38fb25352e6f351f57e2c922f84db5c97e09a6246bbe1d2eedfcdb01c4c62919081900360600190a2505050505050565b826001600160a01b0316846001600160a01b0316141580156142e757506000826001600160601b0316115b1561102d576001600160a01b0384161561430657614306848284613ed9565b6001600160a01b0383161561102d5761102d838284613f76565b600082820183811015611015576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600354604080516323b872dd60e01b81526001600160a01b0387811660048301523060248301526001600160601b0387166044830152915160009392909216916323b872dd9160648082019260209290919082900301818787803b1580156143e157600080fd5b505af11580156143f5573d6000803e3d6000fd5b505050506040513d602081101561440b57600080fd5b505190508061441957600080fd5b60006144258484613269565b905061444a818660405180606001604052806028815260200161501960289139613208565b90506144568386613e6e565b614461848487613d73565b604080516001600160601b0380881682526020820186905283168183015290516001600160a01b038616917f0fc5b1bac0416800b42a669229a346b6e5a15db3896339dbdc5fa376e1e4570a919081900360600190a2505050505050565b6000806144cc858561156d565b905060006144da8685612949565b9050600a6001600160601b031661450a82846040518060600160405280603b8152602001614f5c603b913961317c565b6001600160601b03168161451a57fe5b049695505050505050565b6000806145318361186e565b90508281146145435762127500810192505b5090919050565b6060808390506060839050606060448251845101036040519080825280601f01601f191660200182016040528015614589576020820181803883390190505b509050806000805b85518110156145e2578581815181106145a657fe5b602001015160f81c60f81b8383806001019450815181106145c357fe5b60200101906001600160f81b031916908160001a905350600101614591565b5060445b8451811015614637578481815181106145fb57fe5b602001015160f81c60f81b83838060010194508151811061461857fe5b60200101906001600160f81b031916908160001a9053506001016145e6565b5090979650505050505050565b6000614668436040518060600160405280603e8152602001614eeb603e9139614902565b905060008363ffffffff161180156146b957506001600160a01b0385166000908152600a60209081526040808320878452825280832063ffffffff6000198801811685529252909120548282169116145b1561471b576001600160a01b0385166000908152600a602090815260408083208784528252808320600019870163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b03851602179055610f02565b60408051808201825263ffffffff92831681526001600160601b0393841660208083019182526001600160a01b03989098166000818152600a8a528481208982528a5284812088871682528a52848120935184549351909716600160201b02640100000000600160801b031997871663ffffffff19948516179790971696909617909255908452600b875281842095845294909552939020805460019092019093169116179055565b60006147e8436040518060600160405280603e8152602001614eeb603e9139614902565b905060008363ffffffff161180156148275750600084815260066020908152604080832063ffffffff6000198801811685529252909120548282169116145b15614877576000848152600660209081526040808320600019870163ffffffff16845290915290208054640100000000600160801b031916600160201b6001600160601b0385160217905561102d565b60408051808201825263ffffffff92831681526001600160601b0393841660208083019182526000888152600682528481208887168252825284812093518454935163ffffffff1994851691881691909117640100000000600160801b031916600160201b919098160296909617909255958452600790529091208054909316600190920116179055565b600081600160201b84106149575760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613139578181015183820152602001613121565b509192915050565b60408051808201909152600080825260208201529056fe5374616b696e673a3a64656c656761746542795369673a207369676e617475726520657870697265647468657265206973206e6f206e6577207374616b696e6720636f6e7472616374207365745374616b696e673a3a657874656e645374616b696e674475726174696f6e3a2063616e6e6f742072656475636520746865207374616b696e67206475726174696f6e57656967687465645374616b696e673a3a5f746f74616c506f776572427944617465466f7244656c6567617465653a206d756c7469706c69636174696f6e206f766572666c6f775374616b696e673a3a77697468647261773a20616d6f756e74206f6620746f6b656e7320746f2062652077697468647261776e206e6565647320746f20626520626967676572207468616e203072656365697665417070726f76616c3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e57656967687465645374616b696e673a3a6765745072696f72546f74616c566f74696e67506f7765723a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e5374616b696e673a3a77697468647261773a20546f6b656e207472616e73666572206661696c65644f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735374616b696e673a3a77697468647261773a206e6f7420656e6f7567682062616c616e63655374616b696e673a3a77697468647261773a2046656553686172696e672061646472657373207761736e2774207365745374616b696e673a3a64656c656761746542795369673a20696e76616c6964207369676e617475726557656967687465645374616b696e673a3a74696d657374616d70546f4c6f636b446174653a2074696d657374616d70206c696573206265666f726520636f6e7472616374206372656174696f6e776569676874207363616c696e6720646f65736e27742062656c6f6e6720746f2072616e6765205b312c20395d6d756c7469706c69636174696f6e206f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e57656967687465645374616b696e673a3a77656967687465645374616b654279446174653a206d756c7469706c69636174696f6e206f766572666c6f775374616b696e673a3a7374616b653a20616d6f756e74206f6620746f6b656e7320746f207374616b65206e6565647320746f20626520626967676572207468616e20305374616b696e673a3a657874656e645374616b696e674475726174696f6e3a206e6f7468696e67207374616b656420756e74696c207468652070726576696f7573206c6f636b20646174655374616b696e673a3a5f6465637265617365557365725374616b653a207374616b656420616d6f756e7420756e646572666c6f7757656967687465645374616b696e673a3a6765745072696f72566f7465733a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e57656967687465645374616b696e673a3a636f6d707574655765696768744279446174653a2064617465206e6565647320746f20626520626967676572207468616e207374617274446174655374616b696e673a3a5f696e6372656173654461696c795374616b653a207374616b656420616d6f756e74206f766572666c6f77454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374295374616b696e673a3a636f6d707574655765696768744279446174653a72656d61696e696e672074696d652063616e277420626520626967676572207468616e206d6178206475726174696f6e5374616b696e673a3a5f77726974655374616b696e67436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735374616b696e673a3a5f696e637265617365557365725374616b653a207374616b656420616d6f756e74206f766572666c6f7757656967687465645374616b696e673a3a5f746f74616c506f7765724279446174653a206d756c7469706c69636174696f6e206f766572666c6f7757656967687465645374616b696e673a3a6765745072696f7257656967687465645374616b653a206f766572666c6f77206f6e20746f74616c2077656967687420636f6d7075746174696f6e5374616b696e673a3a74696d657374616d70546f4c6f636b446174653a207374616b696e6720706572696f6420746f6f2073686f72745374616b696e673a3a696e6372656173655374616b653a2062616c616e6365206f766572666c6f7763616e277420726573657420746865206e6577207374616b696e6720636f6e747261637420746f203044656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e74323536206578706972792957656967687465645374616b696e673a3a6765745072696f72557365725374616b65416e64446174653a206e6f74207965742064657465726d696e65645374616b696e673a3a5f64656372656173654461696c795374616b653a207374616b656420616d6f756e7420756e646572666c6f7746656553686172696e6720616464726573732073686f756c646e2774206265203057656967687465645374616b696e673a3a6765745072696f72546f74616c5374616b6573466f72446174653a206e6f74207965742064657465726d696e65645374616b696e673a3a5f696e63726561736544656c65676174655374616b653a207374616b656420616d6f756e74206f766572666c6f775374616b696e673a3a5f646563726561736544656c65676174655374616b653a207374616b656420616d6f756e7420756e646572666c6f7757656967687465645374616b696e673a3a6765745072696f725374616b65427944617465466f7244656c6567617465653a206e6f74207965742064657465726d696e65645374616b696e673a3a64656c656761746542795369673a20696e76616c6964206e6f6e6365a265627a7a7231582070c8659f6a2b539ed56789906ea305ff4a9fbc30164e77e66884ba77da4f7e7464736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x800B64CA GT PUSH2 0x1FF JUMPI DUP1 PUSH4 0xB8A98732 GT PUSH2 0x11A JUMPI DUP1 PUSH4 0xDFB267C2 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xEEFB8C47 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xEEFB8C47 EQ PUSH2 0xD9E JUMPI DUP1 PUSH4 0xF09CFC64 EQ PUSH2 0xDC1 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xDE4 JUMPI DUP1 PUSH4 0xFBBB8EC6 EQ PUSH2 0xE0A JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0xDFB267C2 EQ PUSH2 0xCEE JUMPI DUP1 PUSH4 0xE63A562E EQ PUSH2 0xD17 JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0xD64 JUMPI DUP1 PUSH4 0xE97FFACB EQ PUSH2 0xD6C JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0xD5C38464 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xD5C38464 EQ PUSH2 0xC44 JUMPI DUP1 PUSH4 0xDAB6CA44 EQ PUSH2 0xC61 JUMPI DUP1 PUSH4 0xDAEAF2F2 EQ PUSH2 0xC9C JUMPI DUP1 PUSH4 0xDB27EC18 EQ PUSH2 0xCC2 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0xB8A98732 EQ PUSH2 0xBDC JUMPI DUP1 PUSH4 0xBF626EC1 EQ PUSH2 0xC02 JUMPI DUP1 PUSH4 0xCF7B684A EQ PUSH2 0xC0A JUMPI DUP1 PUSH4 0xD27569E7 EQ PUSH2 0xC3C JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x96A590C1 GT PUSH2 0x192 JUMPI DUP1 PUSH4 0xADAE9002 GT PUSH2 0x161 JUMPI DUP1 PUSH4 0xADAE9002 EQ PUSH2 0xB80 JUMPI DUP1 PUSH4 0xAE81DFE4 EQ PUSH2 0xBA6 JUMPI DUP1 PUSH4 0xB1724B46 EQ PUSH2 0xBAE JUMPI DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0xBB6 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x96A590C1 EQ PUSH2 0xAF8 JUMPI DUP1 PUSH4 0x9929E886 EQ PUSH2 0xB4A JUMPI DUP1 PUSH4 0x9A377B82 EQ PUSH2 0xB52 JUMPI DUP1 PUSH4 0xA58848C5 EQ PUSH2 0xB78 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1CE JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xA01 JUMPI DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0xA09 JUMPI DUP1 PUSH4 0x9436E7D4 EQ PUSH2 0xA96 JUMPI DUP1 PUSH4 0x94C2CE58 EQ PUSH2 0xACC JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x800B64CA EQ PUSH2 0x954 JUMPI DUP1 PUSH4 0x836EEBEE EQ PUSH2 0x98F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x9C1 JUMPI DUP1 PUSH4 0x8DAE1B16 EQ PUSH2 0x9C9 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x3827FCA5 GT PUSH2 0x2EF JUMPI DUP1 PUSH4 0x62CF8A08 GT PUSH2 0x282 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x251 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x82C JUMPI DUP1 PUSH4 0x72EC9795 EQ PUSH2 0x852 JUMPI DUP1 PUSH4 0x7BA6F458 EQ PUSH2 0x86F JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x92E JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x62CF8A08 EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0x68CEFCCC EQ PUSH2 0x76E JUMPI DUP1 PUSH4 0x6B6FDE0E EQ PUSH2 0x7CE JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x806 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x4B2FEA1E GT PUSH2 0x2BE JUMPI DUP1 PUSH4 0x4B2FEA1E EQ PUSH2 0x6CF JUMPI DUP1 PUSH4 0x5419675F EQ PUSH2 0x715 JUMPI DUP1 PUSH4 0x5E0BE607 EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0x626EE2D9 EQ PUSH2 0x725 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x3827FCA5 EQ PUSH2 0x623 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x651 JUMPI DUP1 PUSH4 0x450B0601 EQ PUSH2 0x677 JUMPI DUP1 PUSH4 0x472F88F7 EQ PUSH2 0x69D JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x17748ADC GT PUSH2 0x367 JUMPI DUP1 PUSH4 0x25629EC0 GT PUSH2 0x336 JUMPI DUP1 PUSH4 0x25629EC0 EQ PUSH2 0x55C JUMPI DUP1 PUSH4 0x27DD1B00 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0x32E9F250 EQ PUSH2 0x5CB JUMPI DUP1 PUSH4 0x37E6B1C1 EQ PUSH2 0x5F1 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x17748ADC EQ PUSH2 0x4E1 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0x2522D7BA EQ PUSH2 0x533 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH4 0x3A18FA3 GT PUSH2 0x3A3 JUMPI DUP1 PUSH4 0x3A18FA3 EQ PUSH2 0x437 JUMPI DUP1 PUSH4 0x7392CC0 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0xC09DDFD EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0x104932CF EQ PUSH2 0x4D9 JUMPI PUSH2 0x3C4 JUMP JUMPDEST DUP1 PUSH3 0x73F99 EQ PUSH2 0x3C9 JUMPI DUP1 PUSH4 0x130F0BF EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0x26E402B EQ PUSH2 0x40B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D1 PUSH2 0xE45 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0xE4B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xE72 JUMP JUMPDEST PUSH2 0x43F PUSH2 0xE8C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x478 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xE9B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x80 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xEB0 JUMP JUMPDEST PUSH2 0x43F PUSH2 0xF09 JUMP JUMPDEST PUSH2 0x4E9 PUSH2 0xF18 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF1D JUMP JUMPDEST PUSH2 0x3D1 PUSH2 0xFBD JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0xFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFD8 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x101E JUMP JUMPDEST PUSH2 0x43F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1033 JUMP JUMPDEST PUSH2 0x3D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1077 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x639 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0x478 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11EE JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x68D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1203 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x12C8 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x80 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0xA0 ADD CALLDATALOAD AND PUSH2 0x12D3 JUMP JUMPDEST PUSH2 0x409 PUSH2 0x1372 JUMP JUMPDEST PUSH2 0x409 PUSH2 0x13C0 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x73B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14BE JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x156D JUMP JUMPDEST PUSH2 0x7A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x16E6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x7A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x1721 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x175C JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x842 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x17FF JUMP JUMPDEST PUSH2 0x3D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x868 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x186E JUMP JUMPDEST PUSH2 0x895 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8D9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8C1 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x918 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x900 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A13 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x96A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x9A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1A97 JUMP JUMPDEST PUSH2 0x43F PUSH2 0x1AF9 JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x9DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1B08 JUMP JUMPDEST PUSH2 0x478 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xA58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1BAE JUMP JUMPDEST PUSH2 0xAB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E80 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E98 JUMP JUMPDEST PUSH2 0xB24 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 RETURN JUMPDEST PUSH2 0x478 PUSH2 0x1EE0 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EE9 JUMP JUMPDEST PUSH2 0x43F PUSH2 0x1F9E JUMP JUMPDEST PUSH2 0x478 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1FAD JUMP JUMPDEST PUSH2 0x43F PUSH2 0x1FC2 JUMP JUMPDEST PUSH2 0x3D1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1FDE JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1FEE JUMP JUMPDEST PUSH2 0x4E9 PUSH2 0x20BD JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x20D3 JUMP JUMPDEST PUSH2 0x4E9 PUSH2 0x210D JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2112 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x216E JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x2188 JUMP JUMPDEST PUSH2 0xAB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x21B0 JUMP JUMPDEST PUSH2 0x7A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x21D3 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xD2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x2208 JUMP JUMPDEST PUSH2 0x3D1 PUSH2 0x24DE JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x24F9 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2761 JUMP JUMPDEST PUSH2 0x4E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2949 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B41 JUMP JUMPDEST PUSH2 0x409 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xE20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x2B95 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x12 DUP1 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE7D CALLER DUP4 DUP4 PUSH2 0x2C03 JUMP JUMPDEST PUSH2 0xE88 CALLER DUP4 DUP4 PUSH2 0x2CB5 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0xEF3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF02 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x2DE2 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0xF25 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0xF65 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x43 PUSH2 0x4E5B DUP3 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1001 JUMPI PUSH2 0xFFC DUP4 DUP4 PUSH2 0x2FFE JUMP JUMPDEST PUSH2 0x1015 JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x102D CALLER DUP6 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x2DE2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1064 DUP3 PUSH2 0x17FF JUMP JUMPDEST PUSH1 0x2 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x12 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x109A JUMPI PUSH2 0x1095 DUP5 DUP5 DUP5 PUSH2 0x3064 JUMP JUMPDEST PUSH2 0x10A7 JUMP JUMPDEST PUSH1 0x12 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x10B9 PUSH2 0x1B8A JUMP JUMPDEST DUP1 PUSH2 0x10D3 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1113 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD PUSH4 0x3C7925E3 PUSH1 0xE1 SHL DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x4 DUP6 ADD MSTORE MLOAD SWAP2 SWAP3 PUSH4 0x78F24BC6 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1185 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP3 DUP6 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 MLOAD PUSH32 0x2366E0B6B1AF17C0CEED50685C570D519CAE11E7FAAF007BBE667E94A5EE3CD5 SWAP4 POP SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x120B PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x124B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x12A6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x76657374696E67207265676973747279206164647265737320696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x11 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x102D DUP4 DUP4 DUP4 PUSH2 0x3064 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E0 DUP7 TIMESTAMP ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP6 GT ISZERO PUSH2 0x12F6 JUMPI PUSH4 0x59FA600 SWAP5 POP JUMPDEST PUSH1 0x0 PUSH2 0x1303 DUP7 TIMESTAMP ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP4 SUB DUP2 PUSH2 0x1312 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 DUP11 DUP2 PUSH2 0x1323 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 DUP3 LT PUSH2 0x1344 JUMPI PUSH2 0x1344 CALLER PUSH1 0x1 DUP5 SUB DUP4 MUL DUP13 SUB DUP7 DUP10 DUP10 PUSH1 0x1 PUSH2 0x2DE2 JUMP JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP4 DUP2 GT PUSH2 0x1365 JUMPI PUSH2 0x135E CALLER DUP4 DUP4 DUP11 DUP11 PUSH1 0x1 PUSH2 0x2DE2 JUMP JUMPDEST DUP8 ADD PUSH2 0x1348 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x49A0 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x13C8 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x1408 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0xD8CC4E8D808FE950B07BFFFCD83EEBF1190CD35EA77FE0C8A7D75A6E9B90E5C1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x147F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1493 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x14C6 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x1506 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x154B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5127 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT ISZERO PUSH2 0x15AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4DDB PUSH1 0x4C SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP4 SUB PUSH4 0x59FA600 DUP2 GT ISZERO PUSH2 0x15F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4E9E PUSH1 0x4D SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x15180 DUP3 PUSH4 0x59FA600 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x1611 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x16DD PUSH1 0xA PUSH3 0x123210 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1691 PUSH1 0xA PUSH1 0x9 MUL PUSH2 0x1673 PUSH3 0x123210 DUP8 DUP9 MUL PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x756E646572666C6F77206F6E207765696768742063616C63756C6174696F6E00 DUP2 MSTORE POP PUSH2 0x30D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4C65 PUSH1 0x2D SWAP2 CODECOPY PUSH2 0x317C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x16A1 JUMPI INVALID JUMPDEST DIV PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6F766572666C6F77206F6E2077656967687420636F6D7075746174696F6E0000 DUP2 MSTORE POP PUSH2 0x3208 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH2 0x1764 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x17A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 JUMPDEST PUSH4 0x59FA600 TIMESTAMP ADD DUP2 GT PUSH2 0x1868 JUMPI PUSH2 0x185C DUP3 PUSH2 0x1821 DUP6 DUP5 PUSH2 0x3269 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5374616B696E673A3A62616C616E63654F663A206F766572666C6F7700000000 DUP2 MSTORE POP PUSH2 0x3208 JUMP JUMPDEST SWAP2 POP PUSH3 0x127500 ADD PUSH2 0x1806 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD DUP3 LT ISZERO PUSH2 0x18B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4BEB PUSH1 0x4D SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x127500 PUSH1 0x1 SLOAD DUP5 SUB DUP2 PUSH2 0x18C3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 SLOAD PUSH3 0x127500 DUP3 MUL ADD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x18EC PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x186E JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x127500 ADD JUMPDEST DUP3 DUP2 GT PUSH2 0x192E JUMPI PUSH1 0x0 PUSH2 0x190E DUP8 DUP4 PUSH2 0x3269 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO PUSH2 0x1924 JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH3 0x127500 ADD PUSH2 0x18FB JUMP JUMPDEST POP DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1959 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP4 POP DUP1 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1986 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH1 0x0 SWAP1 PUSH3 0x127500 ADD JUMPDEST DUP4 DUP2 GT PUSH2 0x1A0A JUMPI PUSH1 0x0 PUSH2 0x19A9 DUP9 DUP4 PUSH2 0x3269 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x19FF JUMPI DUP2 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x19C7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x19E0 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0x1996 JUMP JUMPDEST POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1A78 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1A85 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x32CA JUMP JUMPDEST PUSH2 0x1A92 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x3616 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1AA3 DUP4 PUSH2 0x186E JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x1AEF JUMPI PUSH2 0x1AE3 DUP5 PUSH2 0x1AC5 DUP10 DUP5 DUP8 DUP12 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4D91 PUSH1 0x4A SWAP2 CODECOPY PUSH2 0x3208 JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x1AAE JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B16 DUP7 DUP7 DUP6 PUSH2 0x36E0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x1B7C JUMPI PUSH1 0x0 PUSH2 0x1B33 DUP7 DUP7 PUSH2 0x156D JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x1B63 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4C92 PUSH1 0x3D SWAP2 CODECOPY PUSH2 0x317C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x1B73 JUMPI INVALID JUMPDEST DIV SWAP3 POP POP PUSH2 0x1B81 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B9F PUSH2 0x3954 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1BB6 PUSH2 0x3958 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1C0A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x1C56 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x1C62 PUSH2 0x3967 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1CA5 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x39BF SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1CF3 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1CBF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0x1CEB JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0x1CF3 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1CAA JUMP JUMPDEST POP DUP3 PUSH2 0x1D3E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE SWAP1 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP10 SWAP2 DUP10 SWAP2 PUSH1 0x3C ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1D8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0x1DEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP9 DUP2 EQ PUSH2 0x1E35 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1E74 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x39C6 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1EC8 DUP5 DUP5 PUSH2 0x3B2F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ED4 DUP6 DUP6 PUSH2 0x3BDA JUMP JUMPDEST SWAP5 DUP6 SWAP1 SUB SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1EF1 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x1F31 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1F76 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5041 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH4 0x59FA600 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1018 DUP3 PUSH1 0x1 NUMBER SUB TIMESTAMP PUSH2 0x1A97 JUMP JUMPDEST PUSH2 0x1FF6 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x2036 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND PUSH1 0x1 GT DUP1 ISZERO SWAP1 PUSH2 0x205A JUMPI POP PUSH1 0x9 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 AND GT ISZERO JUMPDEST PUSH2 0x2095 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4C38 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x20E1 DUP6 DUP6 DUP6 PUSH2 0x36E0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO DUP1 ISZERO PUSH2 0x20FD JUMPI POP PUSH2 0x20FD PUSH2 0x3C25 JUMP JUMPDEST ISZERO PUSH2 0x10A7 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x2133 JUMPI PUSH1 0x0 PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP6 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x217B DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH2 0x1A92 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x3616 JUMP JUMPDEST PUSH1 0x11 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH2 0x4E5B PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2280 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x225E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x2280 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x226C JUMPI JUMPDEST POP POP SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH2 0x2295 PUSH2 0x3CA1 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH2 0x506A PUSH1 0x4B SWAP2 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x4B ADD DUP3 KECCAK256 PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP4 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD DUP13 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP1 DUP5 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP5 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0xE2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH2 0x102 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH2 0x122 DUP6 ADD DUP1 DUP6 MSTORE DUP2 MLOAD SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE PUSH2 0x142 DUP7 ADD DUP1 DUP7 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP13 AND PUSH2 0x162 DUP8 ADD MSTORE PUSH2 0x182 DUP7 ADD DUP12 SWAP1 MSTORE PUSH2 0x1A2 DUP7 ADD DUP11 SWAP1 MSTORE SWAP4 MLOAD SWAP2 SWAP7 POP SWAP3 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1C2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH2 0x23F0 DUP2 PUSH2 0x3CA5 JUMP JUMPDEST PUSH2 0x242B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4BC2 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0x2489 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x523A PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0x24C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4977 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x24D3 DUP2 DUP13 DUP13 PUSH2 0x2C03 JUMP JUMPDEST PUSH2 0x1365 DUP2 DUP13 DUP13 PUSH2 0x2CB5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x4B PUSH2 0x506A DUP3 CODECOPY PUSH1 0x4B ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2503 PUSH2 0x3CDE JUMP JUMPDEST DUP3 LT PUSH2 0x2540 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x44 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51F6 PUSH1 0x44 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x2579 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x2605 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x2648 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x2713 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x267A PUSH2 0x495F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x26EE JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x10AA SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x2705 JUMPI DUP2 SWAP4 POP PUSH2 0x270C JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x2650 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x276A DUP2 PUSH2 0x186E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x49C4 PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x27BC PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x27CA JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x27DA CALLER DUP6 PUSH1 0x1 NUMBER SUB PUSH2 0x36E0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x2824 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4D12 PUSH1 0x4B SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x282F CALLER DUP6 DUP4 PUSH2 0x3CE2 JUMP JUMPDEST PUSH2 0x283A CALLER DUP5 DUP4 PUSH2 0x3D73 JUMP JUMPDEST PUSH2 0x2844 DUP5 DUP3 PUSH2 0x3DF6 JUMP JUMPDEST PUSH2 0x284E DUP4 DUP3 PUSH2 0x3E6E JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 PUSH2 0x28B8 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE DUP1 JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x28EB DUP3 DUP8 DUP6 PUSH2 0x3ED9 JUMP JUMPDEST PUSH2 0x28F6 DUP2 DUP7 DUP6 PUSH2 0x3F76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x809D79C94C86576D61AFEF75495B8DF415224BF885310FED7EA315039F8C5B4C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2953 PUSH2 0x3CDE JUMP JUMPDEST DUP3 LT PUSH2 0x2990 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5148 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x29B4 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1018 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x2A1C JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x1018 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x2A4D JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x1018 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x2B06 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x2A7F PUSH2 0x495F JUMP JUMPDEST POP PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x2AE1 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x1018 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x2AF8 JUMPI DUP2 SWAP4 POP PUSH2 0x2AFF JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x2A55 JUMP JUMPDEST POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B49 PUSH2 0x1B8A JUMP JUMPDEST PUSH2 0x2B89 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2B92 DUP2 PUSH2 0x3FF9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 PUSH2 0xF02 SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH2 0x4099 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND SWAP1 PUSH2 0x2C36 DUP6 DUP5 PUSH2 0x3269 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP11 DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP10 DUP2 MSTORE SWAP3 MLOAD SWAP6 SWAP7 POP SWAP5 SWAP4 DUP8 AND SWAP4 PUSH32 0xB846DC53D3621F480D692E73F4473156D20F23FF6B2C8237B7130B883226CCA9 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0xF02 DUP3 DUP6 DUP4 DUP7 PUSH2 0x42BC JUMP JUMPDEST PUSH2 0x2CBD PUSH2 0x3C25 JUMP JUMPDEST ISZERO PUSH2 0x1A92 JUMPI PUSH1 0x0 PUSH2 0x2CD7 DUP3 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x4320 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 AND SWAP1 DUP5 AND DUP2 EQ PUSH2 0x2D16 JUMPI PUSH2 0x2D16 DUP6 DUP6 DUP5 PUSH2 0x2C03 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC24A0F8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x2D94 DUP5 PUSH3 0x24EA00 PUSH4 0xFFFFFFFF PUSH2 0x4320 AND JUMP JUMPDEST SWAP3 POP DUP1 DUP4 EQ ISZERO PUSH2 0x2DDA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 AND SWAP3 POP DUP6 AND DUP3 EQ PUSH2 0x2DDA JUMPI PUSH2 0x2DDA DUP7 DUP7 DUP6 PUSH2 0x2C03 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x2E2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4CCF PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x2E3B JUMPI PUSH2 0x2E38 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP4 POP JUMPDEST TIMESTAMP DUP5 GT PUSH2 0x2E79 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4FE3 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2E8B JUMPI DUP6 SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2E9D JUMPI DUP3 SWAP2 POP JUMPDEST DUP1 PUSH2 0x2EC3 JUMPI PUSH1 0x0 PUSH2 0x2EB3 PUSH4 0x59FA600 TIMESTAMP ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x2EC1 JUMPI DUP1 SWAP5 POP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x2ECF DUP5 DUP7 PUSH2 0x3269 JUMP JUMPDEST SWAP1 POP PUSH2 0x2EDD DUP8 DUP8 DUP7 DUP9 PUSH2 0x437A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 AND SWAP1 DUP5 AND DUP2 EQ PUSH2 0x2F94 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x2F51 DUP2 DUP8 DUP5 PUSH2 0x3ED9 JUMP JUMPDEST PUSH2 0x2F91 DUP3 DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5374616B696E673A3A7374616B653A2062616C616E6365206F766572666C6F77 DUP2 MSTORE POP PUSH2 0x3208 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH2 0x2F9F DUP5 DUP8 DUP10 PUSH2 0x3F76 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB846DC53D3621F480D692E73F4473156D20F23FF6B2C8237B7130B883226CCA9 DUP10 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x300A DUP4 PUSH2 0x186E JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x305B JUMPI PUSH2 0x304F DUP5 PUSH2 0x3031 DUP4 DUP7 DUP11 PUSH4 0xFFFFFFFF AND PUSH2 0x44BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x55 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4ACA PUSH1 0x55 SWAP2 CODECOPY PUSH2 0x3208 JUMP JUMPDEST SWAP4 POP PUSH3 0x127500 ADD PUSH2 0x3015 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3070 DUP4 PUSH2 0x186E JUMP JUMPDEST SWAP1 POP PUSH4 0x59FA600 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 GT PUSH2 0x1AEF JUMPI PUSH1 0x0 PUSH2 0x3090 DUP9 DUP4 DUP7 DUP11 PUSH2 0x1B08 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x30C7 JUMPI PUSH2 0x30C4 DUP6 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4F97 PUSH1 0x4C SWAP2 CODECOPY PUSH2 0x3208 JUMP JUMPDEST SWAP5 POP JUMPDEST POP PUSH3 0x127500 ADD PUSH2 0x307B JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO DUP3 SWAP1 PUSH2 0x3174 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3139 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3121 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3166 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP5 AND PUSH2 0x3194 JUMPI POP PUSH1 0x0 PUSH2 0x10AA JUMP JUMPDEST DUP4 DUP4 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP6 AND SWAP1 DUP1 DUP8 AND SWAP1 DUP4 AND DUP2 PUSH2 0x31B0 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND EQ DUP4 SWAP1 PUSH2 0x1B81 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3139 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3121 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x1B81 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3139 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3121 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x0 NOT PUSH4 0xFFFFFFFF SWAP2 DUP3 AND ADD AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x32E6 JUMPI POP PUSH2 0x32E6 PUSH2 0x3C25 JUMP JUMPDEST ISZERO PUSH2 0x32F0 JUMPI PUSH2 0x102D JUMP JUMPDEST PUSH2 0x32F9 DUP4 PUSH2 0x4525 JUMP JUMPDEST SWAP3 POP PUSH2 0x3305 DUP5 DUP5 PUSH2 0x3B2F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3317 JUMPI CALLER SWAP2 POP JUMPDEST PUSH2 0x3321 DUP4 DUP6 PUSH2 0x3DF6 JUMP JUMPDEST PUSH2 0x332C CALLER DUP5 DUP7 PUSH2 0x3CE2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x335B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH2 0x3ED9 JUMP JUMPDEST DUP3 TIMESTAMP LT DUP1 ISZERO PUSH2 0x336D JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3377 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x34ED JUMPI PUSH1 0x0 PUSH2 0x3388 DUP6 DUP6 PUSH2 0x3BDA JUMP JUMPDEST SWAP5 DUP6 SWAP1 SUB SWAP5 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x34EB JUMPI PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x33E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B92 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x345A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0xD SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xABE979E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xABE979E1 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x34D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x34E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP9 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x354E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3562 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3578 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x35B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B1F PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP4 ISZERO ISZERO DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0x667B6C8ED8622DAE7927A8B0837455098E32037A0181F9A2E21B9B72FEAD6CC7 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x361E PUSH2 0x3C25 JUMP JUMPDEST ISZERO PUSH2 0x102D JUMPI PUSH1 0x0 PUSH2 0x3638 DUP5 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x4320 AND JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x3646 JUMPI POP DUP1 TIMESTAMP LT ISZERO JUMPDEST ISZERO PUSH2 0xF02 JUMPI PUSH1 0x0 PUSH2 0x365B CALLER DUP4 PUSH1 0x1 NUMBER SUB PUSH2 0x36E0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP2 AND ISZERO PUSH2 0x2DDA JUMPI PUSH2 0x2DDA DUP2 DUP4 DUP7 DUP7 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3685 DUP6 DUP6 PUSH2 0x156D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3694 DUP8 DUP8 DUP7 PUSH2 0x24F9 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x36C4 DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4A06 PUSH1 0x47 SWAP2 CODECOPY PUSH2 0x317C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x36D4 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36EA PUSH2 0x3CDE JUMP JUMPDEST DUP3 LT PUSH2 0x3727 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x50B5 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3730 DUP4 PUSH2 0x4525 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP4 POP PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0x376C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0x37F8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0x383B JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x3906 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0x386D PUSH2 0x495F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0x38E1 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x10AA SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0x38F8 JUMPI DUP2 SWAP4 POP PUSH2 0x38FF JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0x3843 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH4 0xC09DDFD PUSH1 0xE0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x39A1 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3A04 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x39E5 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3A66 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A6B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1A92 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0x3AB5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A9A PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3AE8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x454A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3139 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3121 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT PUSH2 0x3B77 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A4D PUSH1 0x4D SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B87 CALLER DUP4 PUSH1 0x1 NUMBER SUB PUSH2 0x36E0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO PUSH2 0x1A92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B6D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3BE6 TIMESTAMP PUSH2 0x186E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3BF4 DUP5 DUP4 PUSH2 0x156D JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP2 SWAP1 SWAP2 MUL SWAP2 POP PUSH1 0x64 SWAP1 PUSH1 0xA DUP8 DUP5 MUL DUP3 AND DIV AND DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xDBB049D1 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xDBB049D1 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3C84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x1018 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x3D65 SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x4D5D SWAP1 DUP4 ADD CODECOPY PUSH2 0x30D2 JUMP JUMPDEST SWAP1 POP PUSH2 0x2DDA DUP7 DUP7 DUP6 DUP5 PUSH2 0x4644 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0xA DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x33 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x3D65 SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x4F29 SWAP1 DUP4 ADD CODECOPY PUSH2 0x3208 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x6 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP3 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x35 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP1 SWAP3 PUSH2 0x3E61 SWAP3 DUP6 SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x50F2 SWAP1 DUP4 ADD CODECOPY PUSH2 0x30D2 JUMP JUMPDEST SWAP1 POP PUSH2 0xF02 DUP6 DUP5 DUP4 PUSH2 0x47C4 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x6 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP3 AND DUP6 MSTORE DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x34 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP1 SWAP3 PUSH2 0x3E61 SWAP3 DUP6 SWAP3 DUP9 SWAP3 SWAP2 SWAP1 PUSH2 0x4E27 SWAP1 DUP4 ADD CODECOPY PUSH2 0x3208 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 DUP2 AND SWAP2 SWAP1 DUP5 AND DUP3 GT ISZERO PUSH2 0x3F6A JUMPI PUSH2 0x3F67 DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x51BE PUSH1 0x38 SWAP2 CODECOPY PUSH2 0x30D2 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2DDA DUP7 DUP7 DUP6 DUP5 PUSH2 0x4099 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP5 DUP6 AND PUSH1 0x0 NOT DUP2 ADD SWAP1 SWAP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x37 DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP4 SWAP3 PUSH2 0x3F67 SWAP3 DUP6 SWAP3 DUP9 SWAP3 PUSH2 0x5187 SWAP1 DUP4 ADD CODECOPY PUSH2 0x3208 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x403E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4B47 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40BD NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4EEB PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x4902 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 DUP5 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4153 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP4 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x41B5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP7 AND MUL OR SWAP1 SSTORE PUSH2 0x425F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP14 DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP13 DUP8 AND DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP5 MLOAD SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP6 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP6 DUP7 AND OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP6 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x9 DUP5 MSTORE DUP5 DUP3 KECCAK256 DUP11 DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP9 ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH32 0xC7B38FB25352E6F351F57E2C922F84DB5C97E09A6246BBE1D2EEDFCDB01C4C62 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x42E7 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x102D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x4306 JUMPI PUSH2 0x4306 DUP5 DUP3 DUP5 PUSH2 0x3ED9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x102D JUMPI PUSH2 0x102D DUP4 DUP3 DUP5 PUSH2 0x3F76 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1015 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x43E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x43F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x440B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x4419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4425 DUP5 DUP5 PUSH2 0x3269 JUMP JUMPDEST SWAP1 POP PUSH2 0x444A DUP2 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5019 PUSH1 0x28 SWAP2 CODECOPY PUSH2 0x3208 JUMP JUMPDEST SWAP1 POP PUSH2 0x4456 DUP4 DUP7 PUSH2 0x3E6E JUMP JUMPDEST PUSH2 0x4461 DUP5 DUP5 DUP8 PUSH2 0x3D73 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP9 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP4 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH32 0xFC5B1BAC0416800B42A669229A346B6E5A15DB3896339DBDC5FA376E1E4570A SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x44CC DUP6 DUP6 PUSH2 0x156D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x44DA DUP7 DUP6 PUSH2 0x2949 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND PUSH2 0x450A DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4F5C PUSH1 0x3B SWAP2 CODECOPY PUSH2 0x317C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP2 PUSH2 0x451A JUMPI INVALID JUMPDEST DIV SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4531 DUP4 PUSH2 0x186E JUMP JUMPDEST SWAP1 POP DUP3 DUP2 EQ PUSH2 0x4543 JUMPI PUSH3 0x127500 DUP2 ADD SWAP3 POP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4589 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x45E2 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x45A6 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x45C3 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x4591 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x4637 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x45FB JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x4618 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x45E6 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4668 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4EEB PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x4902 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x46B9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x471B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP8 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0xF02 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 SWAP1 SWAP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA DUP11 MSTORE DUP5 DUP2 KECCAK256 DUP10 DUP3 MSTORE DUP11 MSTORE DUP5 DUP2 KECCAK256 DUP9 DUP8 AND DUP3 MSTORE DUP11 MSTORE DUP5 DUP2 KECCAK256 SWAP4 MLOAD DUP5 SLOAD SWAP4 MLOAD SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP8 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP5 DUP6 AND OR SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP3 SSTORE SWAP1 DUP5 MSTORE PUSH1 0xB DUP8 MSTORE DUP2 DUP5 KECCAK256 SWAP6 DUP5 MSTORE SWAP5 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP3 ADD SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47E8 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4EEB PUSH1 0x3E SWAP2 CODECOPY PUSH2 0x4902 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x4827 JUMPI POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP9 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x4877 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP8 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0x102D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x6 DUP3 MSTORE DUP5 DUP2 KECCAK256 DUP9 DUP8 AND DUP3 MSTORE DUP3 MSTORE DUP5 DUP2 KECCAK256 SWAP4 MLOAD DUP5 SLOAD SWAP4 MLOAD PUSH4 0xFFFFFFFF NOT SWAP5 DUP6 AND SWAP2 DUP9 AND SWAP2 SWAP1 SWAP2 OR PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x20 SHL SWAP2 SWAP1 SWAP9 AND MUL SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP3 SSTORE SWAP6 DUP5 MSTORE PUSH1 0x7 SWAP1 MSTORE SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 AND PUSH1 0x1 SWAP1 SWAP3 ADD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x20 SHL DUP5 LT PUSH2 0x4957 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x3139 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3121 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP INVALID MSTORE8 PUSH21 0x616B696E673A3A64656C656761746542795369673A KECCAK256 PUSH20 0x69676E6174757265206578706972656474686572 PUSH6 0x206973206E6F KECCAK256 PUSH15 0x6577207374616B696E6720636F6E74 PUSH19 0x616374207365745374616B696E673A3A657874 PUSH6 0x6E645374616B PUSH10 0x6E674475726174696F6E GASPRICE KECCAK256 PUSH4 0x616E6E6F PUSH21 0x2072656475636520746865207374616B696E672064 PUSH22 0x726174696F6E57656967687465645374616B696E673A GASPRICE 0x5F PUSH21 0x6F74616C506F776572427944617465466F7244656C PUSH6 0x67617465653A KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F775374616B696E673A3A PUSH24 0x697468647261773A20616D6F756E74206F6620746F6B656E PUSH20 0x20746F2062652077697468647261776E206E6565 PUSH5 0x7320746F20 PUSH3 0x652062 PUSH10 0x67676572207468616E20 ADDRESS PUSH19 0x656365697665417070726F76616C3A20547261 PUSH15 0x73616374696F6E2065786563757469 PUSH16 0x6E2072657665727465642E5765696768 PUSH21 0x65645374616B696E673A3A6765745072696F72546F PUSH21 0x616C566F74696E67506F7765723A206F766572666C PUSH16 0x77206F6E20746F74616C20766F74696E PUSH8 0x20706F7765722063 PUSH16 0x6D7075746174696F6E5374616B696E67 GASPRICE GASPRICE PUSH24 0x697468647261773A20546F6B656E207472616E7366657220 PUSH7 0x61696C65644F77 PUSH15 0x61626C653A206E6577206F776E6572 KECCAK256 PUSH10 0x7320746865207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x6573735374616B696E673A3A77697468647261 PUSH24 0x3A206E6F7420656E6F7567682062616C616E63655374616B PUSH10 0x6E673A3A776974686472 PUSH2 0x773A KECCAK256 CHAINID PUSH6 0x655368617269 PUSH15 0x672061646472657373207761736E27 PUSH21 0x207365745374616B696E673A3A64656C6567617465 TIMESTAMP PUSH26 0x5369673A20696E76616C6964207369676E617475726557656967 PUSH9 0x7465645374616B696E PUSH8 0x3A3A74696D657374 PUSH2 0x6D70 SLOAD PUSH16 0x4C6F636B446174653A2074696D657374 PUSH2 0x6D70 KECCAK256 PUSH13 0x696573206265666F726520636F PUSH15 0x7472616374206372656174696F6E77 PUSH6 0x696768742073 PUSH4 0x616C696E PUSH8 0x20646F65736E2774 KECCAK256 PUSH3 0x656C6F PUSH15 0x6720746F2072616E6765205B312C20 CODECOPY 0x5D PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77206F6E207765696768 PUSH21 0x20636F6D7075746174696F6E576569676874656453 PUSH21 0x616B696E673A3A77656967687465645374616B6542 PUSH26 0x446174653A206D756C7469706C69636174696F6E206F76657266 PUSH13 0x6F775374616B696E673A3A7374 PUSH2 0x6B65 GASPRICE KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206F6620746F6B656E7320746F207374616B6520 PUSH15 0x6565647320746F2062652062696767 PUSH6 0x72207468616E KECCAK256 ADDRESS MSTORE8 PUSH21 0x616B696E673A3A657874656E645374616B696E6744 PUSH22 0x726174696F6E3A206E6F7468696E67207374616B6564 KECCAK256 PUSH22 0x6E74696C207468652070726576696F7573206C6F636B KECCAK256 PUSH5 0x6174655374 PUSH2 0x6B69 PUSH15 0x673A3A5F6465637265617365557365 PUSH19 0x5374616B653A207374616B656420616D6F756E PUSH21 0x20756E646572666C6F775765696768746564537461 PUSH12 0x696E673A3A6765745072696F PUSH19 0x566F7465733A206F766572666C6F77206F6E20 PUSH21 0x6F74616C20766F74696E6720706F77657220636F6D PUSH17 0x75746174696F6E57656967687465645374 PUSH2 0x6B69 PUSH15 0x673A3A636F6D707574655765696768 PUSH21 0x4279446174653A2064617465206E6565647320746F KECCAK256 PUSH3 0x652062 PUSH10 0x67676572207468616E20 PUSH20 0x74617274446174655374616B696E673A3A5F696E PUSH4 0x72656173 PUSH6 0x4461696C7953 PUSH21 0x616B653A207374616B656420616D6F756E74206F76 PUSH6 0x72666C6F7745 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH22 0x696E7432353620636861696E49642C61646472657373 KECCAK256 PUSH23 0x6572696679696E67436F6E7472616374295374616B696E PUSH8 0x3A3A636F6D707574 PUSH6 0x576569676874 TIMESTAMP PUSH26 0x446174653A72656D61696E696E672074696D652063616E277420 PUSH3 0x652062 PUSH10 0x67676572207468616E20 PUSH14 0x6178206475726174696F6E537461 PUSH12 0x696E673A3A5F777269746553 PUSH21 0x616B696E67436865636B706F696E743A20626C6F63 PUSH12 0x206E756D6265722065786365 PUSH6 0x647320333220 PUSH3 0x697473 MSTORE8 PUSH21 0x616B696E673A3A5F696E6372656173655573657253 PUSH21 0x616B653A207374616B656420616D6F756E74206F76 PUSH6 0x72666C6F7757 PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A5F746F74616C506F776572427944 PUSH2 0x7465 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77576569676874656453 PUSH21 0x616B696E673A3A6765745072696F72576569676874 PUSH6 0x645374616B65 GASPRICE KECCAK256 PUSH16 0x766572666C6F77206F6E20746F74616C KECCAK256 PUSH24 0x656967687420636F6D7075746174696F6E5374616B696E67 GASPRICE GASPRICE PUSH21 0x696D657374616D70546F4C6F636B446174653A2073 PUSH21 0x616B696E6720706572696F6420746F6F2073686F72 PUSH21 0x5374616B696E673A3A696E6372656173655374616B PUSH6 0x3A2062616C61 PUSH15 0x6365206F766572666C6F7763616E27 PUSH21 0x20726573657420746865206E6577207374616B696E PUSH8 0x20636F6E74726163 PUSH21 0x20746F203044656C65676174696F6E286164647265 PUSH20 0x732064656C6567617465652C75696E7432353620 PUSH13 0x6F636B446174652C75696E7432 CALLDATALOAD CALLDATASIZE KECCAK256 PUSH15 0x6F6E63652C75696E74323536206578 PUSH17 0x6972792957656967687465645374616B69 PUSH15 0x673A3A6765745072696F7255736572 MSTORE8 PUSH21 0x616B65416E64446174653A206E6F74207965742064 PUSH6 0x7465726D696E PUSH6 0x645374616B69 PUSH15 0x673A3A5F6465637265617365446169 PUSH13 0x795374616B653A207374616B65 PUSH5 0x20616D6F75 PUSH15 0x7420756E646572666C6F7746656553 PUSH9 0x6172696E6720616464 PUSH19 0x6573732073686F756C646E2774206265203057 PUSH6 0x696768746564 MSTORE8 PUSH21 0x616B696E673A3A6765745072696F72546F74616C53 PUSH21 0x616B6573466F72446174653A206E6F742079657420 PUSH5 0x657465726D PUSH10 0x6E65645374616B696E67 GASPRICE GASPRICE 0x5F PUSH10 0x6E63726561736544656C PUSH6 0x676174655374 PUSH2 0x6B65 GASPRICE KECCAK256 PUSH20 0x74616B656420616D6F756E74206F766572666C6F PUSH24 0x5374616B696E673A3A5F646563726561736544656C656761 PUSH21 0x655374616B653A207374616B656420616D6F756E74 KECCAK256 PUSH22 0x6E646572666C6F7757656967687465645374616B696E PUSH8 0x3A3A676574507269 PUSH16 0x725374616B65427944617465466F7244 PUSH6 0x6C6567617465 PUSH6 0x3A206E6F7420 PUSH26 0x65742064657465726D696E65645374616B696E673A3A64656C65 PUSH8 0x6174654279536967 GASPRICE KECCAK256 PUSH10 0x6E76616C6964206E6F6E PUSH4 0x65A26562 PUSH27 0x7A7231582070C8659F6A2B539ED56789906EA305FF4A9FBC30164E PUSH24 0xE66884BA77DA4F7E7464736F6C6343000511003200000000 ",
              "sourceMap": "71:1535:115:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;71:1535:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:24:59;;;:::i;:::-;;;;;;;;;;;;;;;;658:116:115;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;658:116:115;-1:-1:-1;;;;;658:116:115;;:::i;:::-;;16300:276:57;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16300:276:57;;;;;;;;:::i;4986:34:59:-;;;:::i;:::-;;;;-1:-1:-1;;;;;4986:34:59;;;;;;;;;;;;;;5691:49;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5691:49:59;;:::i;:::-;;;;;;;;;;;;;;;;;;2164:212:57;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;2164:212:57;;;;;-1:-1:-1;;;;;2164:212:57;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5786:48:59:-;;;:::i;1160:44::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1160:44:59;;;;;;;;;;;;;;15926:113:60;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15926:113:60;-1:-1:-1;;;;;15926:113:60;;:::i;2358:122:59:-;;;:::i;395:231:115:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;395:231:115;;;;;;;;;:::i;1442:171:57:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;1442:171:57;;;;;;;;;-1:-1:-1;;;;;1442:171:57;;;;;;;;;;;;:::i;2115:64:59:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2115:64:59;;;;;;;;:::i;108:121:115:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;108:121:115;-1:-1:-1;;;;;108:121:115;;:::i;777:238::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;777:238:115;;;;;;;;;;;;;:::i;10680:280:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10680:280:57;;;;;;;;;;:::i;5570:38:59:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5570:38:59;-1:-1:-1;;;;;5570:38:59;;:::i;976:236:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;976:236:60;-1:-1:-1;;;;;976:236:60;;:::i;1018:168:115:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1018:168:115;;;;;;;;;;;;;:::i;7787:1233:57:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;7787:1233:57;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7787:1233:57;;;;;;;;;;;;:::i;24890:401::-;;;:::i;25613:128::-;;;:::i;23962:186::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23962:186:57;-1:-1:-1;;;;;23962:186:57;;:::i;13498:830:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13498:830:60;;;;;;;:::i;4346:99:59:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4346:99:59;;-1:-1:-1;;;;;4346:99:59;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;4346:99:59;;;;;;;;;;;;;;;;3804:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3804:103:59;;-1:-1:-1;;;;;3804:103:59;;;;;;;;;;;;;:::i;15697:107:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15697:107:60;-1:-1:-1;;;;;15697:107:60;;:::i;15824:255:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15824:255:57;-1:-1:-1;;;;;15824:255:57;;:::i;14674:564:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14674:564:60;;:::i;25897:876:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25897:876:57;-1:-1:-1;;;;;25897:876:57;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25897:876:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25897:876:57;;;;;;;;;;;;;;;;;;;4774:41:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4774:41:59;-1:-1:-1;;;;;4774:41:59;;:::i;9988:396:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9988:396:57;;-1:-1:-1;;;;;9988:396:57;;;;;;;;;;-1:-1:-1;;;;;9988:396:57;;:::i;5069:614:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5069:614:60;;;;;;;;;;;;;:::i;851:68:142:-;;;:::i;10010:443:60:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;10010:443:60;;;;;;;;;;;;;;;;;;:::i;1134:83:142:-;;;:::i;494:849:48:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;494:849:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;494:849:48;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;494:849:48;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;494:849:48;;-1:-1:-1;494:849:48;-1:-1:-1;494:849:48;:::i;3472:60:59:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3472:60:59;;:::i;:::-;;;;;;;;;;;;;;;;;;;4062:83;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4062:83:59;;;;;;;;:::i;13926:254:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13926:254:57;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13926:254:57;;;;;;;;;;;;;;;;;;;;;;;;2262:31:59;;;:::i;23558:216:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23558:216:57;-1:-1:-1;;;;;23558:216:57;;:::i;2040:22:59:-;;;:::i;5310:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5310:48:59;-1:-1:-1;;;;;5310:48:59;;:::i;2805:33::-;;;:::i;1509:48::-;;;:::i;19766:145:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19766:145:57;-1:-1:-1;;;;;19766:145:57;;:::i;24304:252::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24304:252:57;-1:-1:-1;;;;;24304:252:57;;:::i;5091:52:59:-;;;:::i;10922:454:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10922:454:60;;;;;;;;;;;;;:::i;1409:41:59:-;;;:::i;20053:237:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20053:237:57;;:::i;9308:324::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9308:324:57;;-1:-1:-1;;;;;9308:324:57;;;;;;;;;;-1:-1:-1;;;;;9308:324:57;;:::i;264:128:115:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;264:128:115;-1:-1:-1;;;;;264:128:115;;:::i;4587:79:59:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4587:79:59;;;;;;;;:::i;3264:80::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3264:80:59;;;;;;;;;:::i;18018:1432:57:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;18018:1432:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2566:134:59:-;;;:::i;6946:1208:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6946:1208:60;;;;;;;;;;;;;:::i;4901:1518:57:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4901:1518:57;;;;;;;:::i;3381:1079:60:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3381:1079:60;;;;;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;1274:330:115:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1274:330:115;;-1:-1:-1;;;;;1274:330:115;;;;;;;;;;-1:-1:-1;;;;;1274:330:115;;:::i;1945:24:59:-;;;;:::o;658:116:115:-;730:18;:40;;-1:-1:-1;;730:40:115;-1:-1:-1;;;;;730:40:115;;;;;;;;;;658:116::o;16300:276:57:-;16366:42;16376:10;16388:9;16399:8;16366:9;:42::i;:::-;16526:46;16540:10;16552:9;16563:8;16526:13;:46::i;:::-;16300:276;;:::o;4986:34:59:-;;;-1:-1:-1;;;;;4986:34:59;;:::o;5691:49::-;;;;;;;;;;;;;;;:::o;2164:212:57:-;323:10:48;345:4;323:27;315:52;;;;;-1:-1:-1;;;315:52:48;;;;;;;;;;;;-1:-1:-1;;;315:52:48;;;;;;;;;;;;;;;2315:57:57;2322:6;2330;2338:5;2345:8;2355:9;2366:5;2315:6;:57::i;:::-;2164:212;;;;;:::o;5786:48:59:-;;;-1:-1:-1;;;;;5786:48:59;;:::o;1160:44::-;1203:1;1160:44;:::o;15926:113:60:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;15984:14:60;;16001:5;15984:14;;;:6;:14;;;;;;;;;:22;;-1:-1:-1;;15984:22:60;;;16015:20;;;;;;;;;;;;;;;;;15926:113;:::o;2358:122:59:-;2400:80;;;;;;;;;;;;;;;;;;2358:122;:::o;395:231:115:-;520:21;;484:23;;-1:-1:-1;;;520:21:115;;-1:-1:-1;;;;;520:21:115;:102;;573:49;604:11;617:4;573:30;:49::i;:::-;520:102;;;549:21;;-1:-1:-1;;;549:21:115;;-1:-1:-1;;;;;549:21:115;520:102;513:109;;395:231;;;;;:::o;1442:171:57:-;1548:61;1555:10;1567:6;1575:5;1582:8;1592:9;1603:5;1548:6;:61::i;:::-;1442:171;;;;:::o;2115:64:59:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2115:64:59;;:::o;108:121:115:-;183:7;203:18;213:7;203:9;:18::i;:::-;224:1;203:22;-1:-1:-1;;;;;196:29:115;;;108:121;;;:::o;777:238::-;909:18;;890:6;;-1:-1:-1;;;;;909:18:115;:102;;956:55;984:7;993:11;1006:4;956:27;:55::i;:::-;909:102;;;935:18;;-1:-1:-1;;;;;935:18:115;909:102;902:109;;777:238;;;;;;:::o;10680:280:57:-;792:9:60;:7;:9::i;:::-;:31;;;-1:-1:-1;812:10:60;805:18;;;;:6;:18;;;;;;;;792:31;784:56;;;;;-1:-1:-1;;;784:56:60;;;;;;;;;;;;-1:-1:-1;;;784:56:60;;;;;;;;;;;;;;;-1:-1:-1;;;;;10776:25:57;;;;;;;:16;:25;;;;;;:32;;-1:-1:-1;;10776:32:57;10804:4;10776:32;;;10812:56;;-1:-1:-1;;;10812:56:57;;;;;;;;;;10776:25;;10812:46;;:56;;;;;10776:25;10812:56;;;;;10776:25;;10812:56;;;5:2:-1;;;;30:1;27;20:12;5:2;10812:56:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;10872:25:57;;;10900:5;10872:25;;;:16;:25;;;;;;;;;:33;;-1:-1:-1;;10872:33:57;;;10915:41;;;;;;;;;;;;;;;;;;;-1:-1:-1;10915:41:57;;;;;;;;;10680:280;;:::o;5570:38:59:-;;;;;;;;;;;;;;;:::o;976:236:60:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;1066:35:60;;1058:80;;;;;-1:-1:-1;;;1058:80:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1142:20;:66;;-1:-1:-1;;;;;;1142:66:60;-1:-1:-1;;;;;1142:66:60;;;;;;;;;;976:236::o;1018:168:115:-;1127:55;1155:7;1164:11;1177:4;1127:27;:55::i;7787:1233:57:-;8208:13;8224:44;8262:5;8244:15;:23;8224:19;:44::i;:::-;8208:60;;1548:9:59;8276:8:57;:23;8272:62;;;1548:9:59;8306:23:57;;8272:62;8337:11;8351:47;8389:8;8371:15;:26;8351:19;:47::i;:::-;8337:61;;8402:20;8441:14;8432:5;8426:3;:11;8425:30;;;;;;8458:1;8425:34;8402:57;;8463:25;8500:12;8491:6;:21;;;;;;8463:49;;8633:1;8617:12;:17;8613:142;;8641:109;8648:10;8712:1;8697:12;:16;8676:17;:38;8667:6;:47;8717:5;8724:8;8734:9;8745:4;8641:6;:109::i;:::-;8822:22;;;8805:212;8851:3;8846:1;:8;8805:212;;8937:75;8944:10;8963:17;8983:1;8986:8;8996:9;9007:4;8937:6;:75::i;:::-;8856:19;;8805:212;;;;7787:1233;;;;;;;;;;:::o;24890:401::-;24948:18;;;;;-1:-1:-1;;;;;24948:18:57;24940:81;;;;-1:-1:-1;;;24940:81:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24890:401::o;25613:128::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;25661:11:57;:18;;-1:-1:-1;;25661:18:57;25675:4;25661:18;;;25703:8;;:33;;;-1:-1:-1;;;25703:33:57;;25730:4;25703:33;;;;;;25688:49;;-1:-1:-1;;;;;25703:8:57;;:18;;:33;;;;;;;;;;;;;;:8;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;25703:33:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25703:33:57;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25703:33:57;25688:49;;;;;;;;;;;25703:33;25688:49;;;25613:128::o;23962:186::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;24035:25:57;;24027:71;;;;-1:-1:-1;;;24027:71:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24102:10;:42;;-1:-1:-1;;;;;;24102:42:57;-1:-1:-1;;;;;24102:42:57;;;;;;;;;;23962:186::o;13498:830:60:-;13581:13;13616:9;13608:4;:17;;13600:106;;;;-1:-1:-1;;;13600:106:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13735:16;;;1548:9:59;13764:29:60;-1:-1:-1;13764:29:60;13756:119;;;;-1:-1:-1;;;13756:119:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13920:8;13971:6;13953:13;1548:9:59;13938:28:60;-1:-1:-1;;;;;13931:47:60;;;;;;;13920:58;;14059:265;1448:2:59;1635:11;-1:-1:-1;;;;;14087:196:60;:175;1448:2:59;1203:1;14098:33:60;14137:67;1635:11:59;14167:1:60;14163;:5;14137:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;14087:175;;;;;;;;;;;;;;;;;:5;:175::i;:::-;-1:-1:-1;;;;;14087:196:60;;;;;;;14059:265;;;;;;;;;;;;;;;;;:5;:265::i;:::-;14050:274;13498:830;-1:-1:-1;;;;;13498:830:60:o;4346:99:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4346:99:59;;-1:-1:-1;;;;;4346:99:59;;:::o;3804:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3804:103:59;;-1:-1:-1;;;;;3804:103:59;;:::o;15697:107:60:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;15752:14:60;;;;;;:6;:14;;;;;;;;;:21;;-1:-1:-1;;15752:21:60;15769:4;15752:21;;;15782:18;;;;;;;;;;;;;;;;;15697:107;:::o;15824:255:57:-;15918:9;;15881:14;;15901:175;1548:9:59;15934:15:57;:30;15929:1;:35;15901:175;;15997:74;16003:7;16012:26;16027:7;16036:1;16012:14;:26::i;:::-;15997:74;;;;;;;;;;;;;;;;;:5;:74::i;:::-;15987:84;-1:-1:-1;1041:7:59;15966:14:57;15901:175;;;;15824:255;;;:::o;14674:564:60:-;14743:16;14786:9;;14773;:22;;14765:112;;;;-1:-1:-1;;;14765:112:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15115:25;1041:7:59;15156:9:60;;15144;:21;15143:35;;;;;;15115:63;;15225:9;;1041:7:59;15193:17:60;:29;:41;15182:52;;14674:564;;;;:::o;25897:876:57:-;25954:22;25978;26006:14;26023:51;1548:9:59;26043:15:57;:30;26023:19;:51::i;:::-;26257:9;;26006:68;;-1:-1:-1;26108:13:57;;1041:7:59;26257:21:57;26240:133;26285:6;26280:1;:11;26240:133;;26347:1;26318:26;26333:7;26342:1;26318:14;:26::i;:::-;-1:-1:-1;;;;;26318:30:57;;26314:55;;;26356:7;;;;;26314:55;1041:7:59;26293:14:57;26240:133;;;;26398:5;26384:20;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;26384:20:57;;26376:28;;26430:5;26417:19;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;26417:19:57;-1:-1:-1;26586:9:57;;26408:28;;-1:-1:-1;26552:9:57;;1041:7:59;26586:21:57;26569:201;26614:6;26609:1;:11;26569:201;;26643:14;26660:26;26675:7;26684:1;26660:14;:26::i;:::-;26643:43;-1:-1:-1;;;;;;26695:11:57;;;26691:75;;26725:1;26714:5;26720:1;26714:8;;;;;;;;;;;;;:12;;;;;26744:7;26732:6;26739:1;26732:9;;;;;;;;-1:-1:-1;;;;;26732:19:57;;;:9;;;;;;;;;;;:19;26757:3;;;;;26691:75;-1:-1:-1;1041:7:59;26622:14:57;26569:201;;;;25897:876;;;;;;:::o;4774:41:59:-;;;;;;;;;;;;;:::o;9988:396:57:-;10109:10;10092:28;;;;:16;:28;;;;;;;;10084:53;;;;;-1:-1:-1;;;10084:53:57;;;;;;;;;;;;-1:-1:-1;;;10084:53:57;;;;;;;;;;;;;;;10142:40;10152:6;10160:5;10167:8;10177:4;10142:9;:40::i;:::-;10336:44;10350:6;10358:5;10365:8;10375:4;10336:13;:44::i;:::-;9988:396;;;:::o;5069:614:60:-;5174:12;5328:13;5344:25;5364:4;5344:19;:25::i;:::-;5328:41;-1:-1:-1;1548:9:59;5387:20:60;;5328:41;5442:238;5471:3;5466:1;:8;5442:238;;5505:170;5516:5;5527:61;5557:7;5566:1;5569:5;5576:11;5527:29;:61::i;:::-;5505:170;;;;;;;;;;;;;;;;;:5;:170::i;:::-;5497:178;-1:-1:-1;1041:7:59;5476:14:60;5442:238;;;;5069:614;;;;;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;10010:443:60:-;10142:12;10160:13;10176:52;10201:7;10210:4;10216:11;10176:24;:52::i;:::-;10160:68;-1:-1:-1;;;;;;10236:10:60;;;10232:218;;10253:13;10269:36;10289:4;10295:9;10269:19;:36::i;:::-;10253:52;;1448:2:59;-1:-1:-1;;;;;10318:102:60;:86;10324:6;10332;10318:86;;;;;;;;;;;;;;;;;:5;:86::i;:::-;-1:-1:-1;;;;;10318:102:60;;;;;;;10310:110;;10232:218;;;;10444:1;10436:9;;10232:218;10010:443;;;;;;;:::o;1134:83:142:-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;494:849:48:-;677:11;:9;:11::i;:::-;-1:-1:-1;;;;;663:25:48;:10;-1:-1:-1;;;;;663:25:48;;655:50;;;;;-1:-1:-1;;;655:50:48;;;;;;;;;;;;-1:-1:-1;;;655:50:48;;;;;;;;;;;;;;;717:10;-1:-1:-1;;;;;717:20:48;;;709:45;;;;;-1:-1:-1;;;709:45:48;;;;;;;;;;;;-1:-1:-1;;;709:45:48;;;;;;;;;;;;;;;786:14;812:25;840:15;:13;:15::i;:::-;812:43;;859:10;872:14;880:5;;872:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;872:7:48;;-1:-1:-1;;;872:14:48:i;:::-;859:27;-1:-1:-1;895:9:48;890:120;914:9;:16;910:1;:20;890:120;;;953:9;963:1;953:12;;;;;;;;;;;;;;-1:-1:-1;;;;;946:19:48;;:3;-1:-1:-1;;;;;946:19:48;;;942:64;;;985:4;973:16;;995:5;;942:64;932:3;;890:120;;;;1021:9;1013:43;;;;;-1:-1:-1;;;1013:43:48;;;;;;;;;;;;-1:-1:-1;;;1013:43:48;;;;;;;;;;;;;;;1159:35;;1091:14;1176:10;1159:35;;;;;1091:14;;;;;;1188:5;;;;1159:35;;1188:5;;;;1159:35;1:33:-1;57:3;49:6;45:16;35:26;;1159:35:48;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1159:35:48;;;1148:76;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1148:76:48;;;;;;;;;;;-1:-1:-1;1148:76:48;-1:-1:-1;;;;;;1236:17:48;;;;;;;1228:45;;;;;-1:-1:-1;;;1228:45:48;;;;;;;;;;;;-1:-1:-1;;;1228:45:48;;;;;;;;;;;;;;;1295:7;1285:6;:17;1277:45;;;;;-1:-1:-1;;;1277:45:48;;;;;;;;;;;;-1:-1:-1;;;1277:45:48;;;;;;;;;;;;;;;1327:12;1333:5;;1327:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1327:5:48;;-1:-1:-1;;;1327:12:48:i;:::-;494:849;;;;;;;;;;:::o;3472:60:59:-;;;;;;;;;;;;;;;:::o;4062:83::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13926:254:57:-;14005:6;14013;14025:38;14049:6;14057:5;14025:23;:38::i;:::-;14067:21;14091:33;14110:6;14118:5;14091:18;:33::i;:::-;14136:23;;;;;13926:254;-1:-1:-1;;;;13926:254:57:o;2262:31:59:-;;;;;;:::o;23558:216:57:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;23647:33:57;;23639:87;;;;-1:-1:-1;;;23639:87:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23730:18;:40;;-1:-1:-1;;;;;23730:40:57;;;;;-1:-1:-1;;;;;;23730:40:57;;;;;;;;;23558:216::o;2040:22:59:-;;;-1:-1:-1;;;;;2040:22:59;;:::o;5310:48::-;;;;;;;;;;;;;;;:::o;2805:33::-;;;;;;-1:-1:-1;;;;;2805:33:59;;:::o;1509:48::-;1548:9;1509:48;:::o;19766:145:57:-;19831:6;19850:57;19864:7;19888:1;19873:12;:16;19891:15;19850:13;:57::i;24304:252::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;24386:36:57;;1809:1:59;24386:36:57;;;;:76;;-1:-1:-1;1850:1:59;-1:-1:-1;;;;;24426:36:57;;;;24386:76;24374:144;;;;-1:-1:-1;;;24374:144:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24522:13;:30;;-1:-1:-1;;;;;24522:30:57;;;-1:-1:-1;;;24522:30:57;-1:-1:-1;;;;;24522:30:57;;;;;;;;;24304:252::o;5091:52:59:-;;;-1:-1:-1;;;5091:52:59;;-1:-1:-1;;;;;5091:52:59;;:::o;10922:454:60:-;11039:6;11051:17;11071:52;11096:7;11105:4;11111:11;11071:24;:52::i;:::-;11051:72;-1:-1:-1;;;;;;11287:15:60;;;:39;;;;;11306:20;:18;:20::i;:::-;11283:69;;;-1:-1:-1;11346:1:60;11362:10;10922:454;-1:-1:-1;;;;10922:454:60:o;1409:41:59:-;1448:2;1409:41;:::o;20053:237:57:-;20125:6;20159:36;;;:26;:36;;;;;;;;20206:16;:80;;20285:1;20206:80;;;20225:33;;;;:23;:33;;;;;;;;-1:-1:-1;;20259:16:57;;20225:51;;;;;;;;;:57;-1:-1:-1;;;20225:57:57;;-1:-1:-1;;;;;20225:57:57;20199:87;20053:237;-1:-1:-1;;;20053:237:57:o;9308:324::-;9394:41;9404:6;9412:5;9419:8;9429:5;9394:9;:41::i;:::-;9583:45;9597:6;9605:5;9612:8;9622:5;9583:13;:45::i;264:128:115:-;342:21;:46;;-1:-1:-1;;;;;342:46:115;;;-1:-1:-1;;;342:46:115;-1:-1:-1;;;;;342:46:115;;;;;;;;;264:128::o;4587:79:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3264:80::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3264:80:59;;-1:-1:-1;;;;;3264:80:59;;:::o;18018:1432:57:-;18472:23;2400:80:59;;;;;;;;;;;;;;;;;;;18552:4:57;18536:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18560:12;:10;:12::i;:::-;18582:4;18508:80;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18508:80:57;-1:-1:-1;;;;;18508:80:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18508:80:57;;;18498:91;;;;;;18472:117;;18680:18;2612:88:59;;;;;;;;;;;;;;;;;;;18711:67:57;;;;;;;;-1:-1:-1;;;;;18711:67:57;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18711:67:57;;;;;18701:78;;;;;;-1:-1:-1;;;18811:57:57;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18811:57:57;;;;;;18801:68;;;;;;;;;-1:-1:-1;18893:26:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18701:78;;-1:-1:-1;18801:68:57;;-1:-1:-1;;;18893:26:57;;;;;;;18711:67;-1:-1:-1;;18893:26:57;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18893:26:57;;;;;;;;18873:46;;18997:42;19029:9;18997:31;:42::i;:::-;18989:96;;;;-1:-1:-1;;;18989:96:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19106:17:57;;;;;;:6;:17;;;;;:19;;;;;;;;19097:28;;19089:78;;;;-1:-1:-1;;;19089:78:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19186:6;19179:3;:13;;19171:67;;;;-1:-1:-1;;;19171:67:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19242:41;19252:9;19263;19274:8;19242:9;:41::i;:::-;19401:45;19415:9;19426;19437:8;19401:13;:45::i;2566:134:59:-;2612:88;;;;;;;;;;;;;;;;;;2566:134;:::o;6946:1208:60:-;7069:6;7103:24;:22;:24::i;:::-;7089:11;:38;7081:119;;;;-1:-1:-1;;;7081:119:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7227:38:60;;7205:19;7227:38;;;:29;:38;;;;;;;;:44;;;;;;;;;;;7279:17;7275:41;;7310:1;7303:8;;;;;7275:41;-1:-1:-1;;;;;7368:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:59;-1:-1:-1;;7410:16:60;;7368:59;;;;;;;;;:69;;:84;-1:-1:-1;7364:172:60;;-1:-1:-1;;;;;7466:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;-1:-1:-1;;7508:16:60;;;;7466:59;;;;;;;;:65;-1:-1:-1;;;7466:65:60;;-1:-1:-1;;;;;7466:65:60;;-1:-1:-1;7459:72:60;;7364:172;-1:-1:-1;;;;;7589:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:44;;;;;;;;:54;:44;:54;:68;-1:-1:-1;7585:92:60;;;7671:1;7664:8;;;;;7585:92;7681:12;-1:-1:-1;;7716:16:60;;7736:350;7751:5;7743:13;;:5;:13;;;7736:350;;;7805:1;7788:13;;;7787:19;;;7779:27;;7845:20;;:::i;:::-;-1:-1:-1;;;;;;7868:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:49;;;;;;;;;;;;;7845:72;;;;;;;;;;;;;;;-1:-1:-1;;;7845:72:60;;;-1:-1:-1;;;;;7845:72:60;;;;;;;;;7926:27;;7922:160;;;7968:8;;;;-1:-1:-1;7961:15:60;;-1:-1:-1;;;;7961:15:60;7922:160;7992:12;;:26;;;-1:-1:-1;7988:94:60;;;8034:6;8026:14;;7988:94;;;8075:1;8066:6;:10;8058:18;;7988:94;7736:350;;;;;-1:-1:-1;;;;;;8096:35:60;;;;;;:26;:35;;;;;;;;:41;;;;;;;;:48;;;;;;;;;;:54;-1:-1:-1;;;;;;;;8096:54:60;;;;;-1:-1:-1;;6946:1208:60;;;;;:::o;4901:1518:57:-;4988:26;5008:5;4988:19;:26::i;:::-;4980:34;;5042:5;5026:12;:21;;5018:100;;;;-1:-1:-1;;;5018:100:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5188:14;5205:51;1548:9:59;5225:15:57;:30;5205:19;:51::i;:::-;5188:68;;5272:6;5264:5;:14;5260:34;;;5288:6;5280:14;;5260:34;5433:13;5449:68;5474:10;5486:12;5515:1;5500:12;:16;5449:24;:68::i;:::-;5433:84;;5538:1;5529:6;-1:-1:-1;;;;;5529:10:57;;5521:98;;;;-1:-1:-1;;;5521:98:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5623:52;5642:10;5654:12;5668:6;5623:18;:52::i;:::-;5679:45;5698:10;5710:5;5717:6;5679:18;:45::i;:::-;5728:41;5748:12;5762:6;5728:19;:41::i;:::-;5773:34;5793:5;5800:6;5773:19;:34::i;:::-;5980:10;5947:20;5970:21;;;:9;:21;;;;;;;;:35;;;;;;;;;;6030:28;;;;;;-1:-1:-1;;;;;5970:35:57;;;;6030:28;;6062:113;;-1:-1:-1;6137:10:57;6127:21;;;;:9;:21;;;;;;;;:28;;;;;;;;:43;;-1:-1:-1;;;;;;6127:43:57;-1:-1:-1;;;;;6127:43:57;;;;;;6062:113;6188:10;6224:1;6178:21;;;:9;:21;;;;;;;;:35;;;;;;;;:48;;-1:-1:-1;;;;;;6178:48:57;;;6230:58;6253:12;6200;6281:6;6230:22;:58::i;:::-;6292:49;6315:10;6327:5;6334:6;6292:22;:49::i;:::-;6351:64;;;;;;;;;;;;-1:-1:-1;;;;;6351:64:57;;;;;;;;6375:10;;6351:64;;;;;;;;;;4901:1518;;;;;;:::o;3381:1079:60:-;3473:6;3507:24;:22;:24::i;:::-;3493:11;:38;3485:114;;;;-1:-1:-1;;;3485:114:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3604:19;3626:32;;;:26;:32;;;;;;;;3666:17;3662:41;;3697:1;3690:8;;;;;3662:41;3748:29;;;;:23;:29;;;;;;;;:47;-1:-1:-1;;3778:16:60;;3748:47;;;;;;;;;:57;;:72;-1:-1:-1;3744:148:60;;3834:29;;;;:23;:29;;;;;;;;-1:-1:-1;;3864:16:60;;;;3834:47;;;;;;;;:53;-1:-1:-1;;;3834:53:60;;-1:-1:-1;;;;;3834:53:60;;-1:-1:-1;3827:60:60;;3744:148;3938:29;;;;:23;:29;;;;;;;;:32;;;;;;;;:42;:32;:42;:56;-1:-1:-1;3934:80:60;;;4008:1;4001:8;;;;;3934:80;4018:12;-1:-1:-1;;4053:16:60;;4073:331;4088:5;4080:13;;:5;:13;;;4073:331;;;4142:1;4125:13;;;4124:19;;;4116:27;;4175:20;;:::i;:::-;-1:-1:-1;4198:29:60;;;;:23;:29;;;;;;;;:37;;;;;;;;;;;;;4175:60;;;;;;;;;;;;;;;-1:-1:-1;;;4175:60:60;;;-1:-1:-1;;;;;4175:60:60;;;;;;;;;4244:27;;4240:160;;;4286:8;;;;-1:-1:-1;4279:15:60;;-1:-1:-1;;;;4279:15:60;4240:160;4310:12;;:26;;;-1:-1:-1;4306:94:60;;;4352:6;4344:14;;4306:94;;;4393:1;4384:6;:10;4376:18;;4306:94;4073:331;;;;;-1:-1:-1;4414:29:60;;;;:23;:29;;;;;;;;:36;;;;;;;;;;:42;-1:-1:-1;;;;;;;;4414:42:60;;;;;-1:-1:-1;;3381:1079:60;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;1274:330:115:-;-1:-1:-1;;;;;1393:40:115;;1371:19;1393:40;;;:29;:40;;;;;;;;:50;;;;;;;;;1463:37;;;:26;:37;;;;;:47;;;;;;;;1393:50;;;;-1:-1:-1;;1511:16:115;;1463:65;;;;;;;;;;:71;-1:-1:-1;;;1463:71:115;;-1:-1:-1;;;;;1463:71:115;;1538:62;;1393:40;;:50;;;;1538:24;:62::i;20613:417:57:-;-1:-1:-1;;;;;20736:20:57;;;20710:23;20736:20;;;:9;:20;;;;;;;;:30;;;;;;;;;;;;;20796:35;20746:9;20757:8;20796:14;:35::i;:::-;-1:-1:-1;;;;;20835:20:57;;;;;;;:9;:20;;;;;;;;:30;;;;;;;;;:42;;-1:-1:-1;;;;;;20835:42:57;;;;;;;;;;20887:64;;;;;;;20770:61;;-1:-1:-1;20835:42:57;20887:64;;;;;;;;;;;;;;20956:70;20971:15;20988:9;20999:16;21017:8;20956:14;:70::i;21145:685::-;21250:20;:18;:20::i;:::-;21246:581;;;21277:16;21296:23;:8;1041:7:59;21296:23:57;:12;:23;:::i;:::-;-1:-1:-1;;;;;21350:20:57;;;21324:23;21350:20;;;:9;:20;;;;;;;;:30;;;;;;;;;21277:42;;-1:-1:-1;21350:30:57;;;;21389:28;;;;21385:87;;21425:41;21435:9;21446;21457:8;21425:9;:41::i;:::-;21551:15;21578:10;-1:-1:-1;;;;;21569:28:57;;:30;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21569:30:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21569:30:57;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21569:30:57;;-1:-1:-1;21615:24:57;:8;1072:7;21615:24;:12;:24;:::i;:::-;21604:35;;21660:7;21648:8;:19;21644:179;;;-1:-1:-1;;;;;21693:20:57;;;;;;;:9;:20;;;;;;;;:30;;;;;;;;;;;;-1:-1:-1;21733:28:57;;;;21729:89;;21770:41;21780:9;21791;21802:8;21770:9;:41::i;:::-;21246:581;;;21145:685;;;:::o;2846:1864::-;3009:1;3000:6;-1:-1:-1;;;;;3000:10:57;;2992:90;;;;-1:-1:-1;;;2992:90:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3092:12;3087:63;;3119:26;3139:5;3119:19;:26::i;:::-;3111:34;;3087:63;3169:15;3161:5;:23;3153:90;;;;-1:-1:-1;;;3153:90:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:22:57;;3308:55;;3352:6;3341:17;;3308:55;-1:-1:-1;;;;;3432:23:57;;3428:59;;3474:8;3462:20;;3428:59;3550:12;3545:136;;3569:14;3586:51;1548:9:59;3606:15:57;:30;3586:19;:51::i;:::-;3569:68;;3654:6;3646:5;:14;3642:34;;;3670:6;3662:14;;3642:34;3545:136;;3685:22;3710:31;3725:8;3735:5;3710:14;:31::i;:::-;3685:56;;3773:47;3788:6;3796;3804:8;3814:5;3773:14;:47::i;:::-;-1:-1:-1;;;;;4146:19:57;;;4118:25;4146:19;;;:9;:19;;;;;;;;:26;;;;;;;;;;;;4180:30;;;;4176:380;;-1:-1:-1;;;;;4247:19:57;;;;;;;:9;:19;;;;;;;;:26;;;;;;;;:38;;-1:-1:-1;;;;;;4247:38:57;;;;;;;;;;4362:65;4385:17;4247:26;4411:15;4362:22;:65::i;:::-;4485:66;4491:15;4508:6;4485:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;4476:75;;4176:380;4587:48;4610:9;4621:5;4628:6;4587:22;:48::i;:::-;4696:9;-1:-1:-1;;;;;4644:62:57;4677:17;-1:-1:-1;;;;;4644:62:57;4660:8;-1:-1:-1;;;;;4644:62:57;;4670:5;4644:62;;;;;;;;;;;;;;;;;;2846:1864;;;;;;;;:::o;1492:621:60:-;1581:23;1746:13;1762:25;1782:4;1762:19;:25::i;:::-;1746:41;-1:-1:-1;1548:9:59;1805:20:60;;1746:41;1860:250;1889:3;1884:1;:8;1860:250;;1934:171;1945:16;1967:40;1985:1;1988:5;1995:11;1967:40;;:17;:40::i;:::-;1934:171;;;;;;;;;;;;;;;;;:5;:171::i;:::-;1915:190;-1:-1:-1;1041:7:59;1894:14:60;1860:250;;;;1492:621;;;;;;:::o;8916:672::-;9029:12;9183:13;9199:25;9219:4;9199:19;:25::i;:::-;9183:41;-1:-1:-1;1548:9:59;9242:20:60;;9183:41;9297:288;9326:3;9321:1;:8;9297:288;;9352:20;9375:51;9395:7;9404:1;9407:5;9414:11;9375:19;:51::i;:::-;9352:74;-1:-1:-1;;;;;;9435:17:60;;;9431:150;;9468:107;9474:5;9481:13;9468:107;;;;;;;;;;;;;;;;;:5;:107::i;:::-;9460:115;;9431:150;-1:-1:-1;1041:7:59;9331:14:60;9297:288;;1975:156:56;2070:6;2095:1;-1:-1:-1;;;;;2090:6:56;:1;-1:-1:-1;;;;;2090:6:56;;;2098:12;2082:29;;;;;-1:-1:-1;;;2082:29:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2082:29:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2122:5:56;;;1975:156::o;2411:211::-;2506:6;-1:-1:-1;;;;;2522:6:56;;2518:30;;-1:-1:-1;2542:1:56;2535:8;;2518:30;2563:5;;;-1:-1:-1;;;;;2580:10:56;;;;:5;;;;;;;;;;;;-1:-1:-1;;;;;2580:10:56;;2592:12;2572:33;;;;;-1:-1:-1;;;2572:33:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1516:172:56;1611:6;1634:5;;;1659:12;-1:-1:-1;;;;;1651:6:56;;;;;;;;1643:29;;;;-1:-1:-1;;;1643:29:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;15382:202:57;-1:-1:-1;;;;;15483:31:57;;15464:6;15483:31;;;:22;:31;;;;;;;;:41;;;;;;;;15525:34;;;:25;:34;;;;;:44;;;;;;;;;-1:-1:-1;;15525:44:57;;;;:48;15483:91;;;;;;;:97;-1:-1:-1;;;;;;;;15483:97:57;;;;15382:202;;;;:::o;11632:1604::-;11908:6;-1:-1:-1;;;;;11908:11:57;11918:1;11908:11;:35;;;;;11923:20;:18;:20::i;:::-;11904:57;;;11950:7;;11904:57;11972:27;11993:5;11972:20;:27::i;:::-;11964:35;;12003:38;12027:6;12035:5;12003:23;:38::i;:::-;-1:-1:-1;;;;;12085:22:57;;12081:49;;12120:10;12109:21;;12081:49;12170:34;12190:5;12197:6;12170:19;:34::i;:::-;12208:45;12227:10;12239:5;12246:6;12208:18;:45::i;:::-;12290:10;12280:21;;;;:9;:21;;;;;;;;:28;;;;;;;;;12257:67;;-1:-1:-1;;;;;12280:28:57;12302:5;12317:6;12257:22;:67::i;:::-;12398:5;12380:15;:23;:39;;;;-1:-1:-1;12408:11:57;;;;12407:12;12380:39;:56;;;;;12424:12;12423:13;12380:56;12376:637;;;12443:21;12467:33;12486:6;12494:5;12467:18;:33::i;:::-;12505:24;;;;;12443:57;-1:-1:-1;;;;;;12620:18:57;;;12616:393;;12662:10;;-1:-1:-1;;;;;12662:10:57;12646:94;;;;-1:-1:-1;;;12646:94:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12884:8;;12909:10;;12884:53;;;-1:-1:-1;;;12884:53:57;;-1:-1:-1;;;;;12909:10:57;;;12884:53;;;;-1:-1:-1;;;;;12884:53:57;;;;;;;;:8;;;;;:16;;:53;;;;;;;;;;;;;;:8;;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;12884:53:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12884:53:57;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;12943:10:57;;12977:8;;12943:60;;;-1:-1:-1;;;12943:60:57;;-1:-1:-1;;;;;12977:8:57;;;12943:60;;;;-1:-1:-1;;;;;12943:60:57;;;;;;;;:10;;;;;:25;;:60;;;;;:10;;:60;;;;;;;:10;;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;12943:60:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12943:60:57;;;;12616:393;12376:637;;13056:8;;:35;;;-1:-1:-1;;;13056:35:57;;-1:-1:-1;;;;;13056:35:57;;;;;;;-1:-1:-1;;;;;13056:35:57;;;;;;;;13041:12;;13056:8;;;;;:17;;:35;;;;;;;;;;;;;;;13041:12;13056:8;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;13056:35:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13056:35:57;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13056:35:57;;-1:-1:-1;13056:35:57;13095:60;;;;-1:-1:-1;;;13095:60:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13165:67;;;-1:-1:-1;;;;;13165:67:57;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13165:67:57;;;13182:10;;13165:67;;;;;;;;;11632:1604;;;;;:::o;13314:420::-;13432:20;:18;:20::i;:::-;13428:303;;;13459:16;13478:20;:5;1041:7:59;13478:20:57;:9;:20;:::i;:::-;13459:39;;13507:12;:43;;;;13542:8;13523:15;:27;;13507:43;13503:224;;;13558:12;13573:64;13598:10;13610:8;13635:1;13620:12;:16;13573:24;:64::i;:::-;13558:79;-1:-1:-1;;;;;;13647:9:57;;;13643:79;;13665:50;13675:5;13682:8;13692;13702:12;13665:9;:50::i;5989:421:60:-;6133:12;6151:13;6167:36;6187:4;6193:9;6167:19;:36::i;:::-;6151:52;;6207:13;6223:59;6255:7;6264:4;6270:11;6223:31;:59::i;:::-;6207:75;;1448:2:59;-1:-1:-1;;;;;6294:112:60;:96;6300:6;6308;6294:96;;;;;;;;;;;;;;;;;:5;:96::i;:::-;-1:-1:-1;;;;;6294:112:60;;;;;;;;5989:421;-1:-1:-1;;;;;;;5989:421:60:o;11735:1209::-;11853:6;11887:24;:22;:24::i;:::-;11873:11;:38;11865:112;;;;-1:-1:-1;;;11865:112:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11989:26;12010:4;11989:20;:26::i;:::-;-1:-1:-1;;;;;12041:34:60;;12019:19;12041:34;;;:25;:34;;;;;;;;:40;;;;;;;;;11982:33;;-1:-1:-1;12041:40:60;;12089:17;12085:41;;12120:1;12113:8;;;;;12085:41;-1:-1:-1;;;;;12178:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:55;-1:-1:-1;;12216:16:60;;12178:55;;;;;;;;;:65;;:80;-1:-1:-1;12174:164:60;;-1:-1:-1;;;;;12272:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;-1:-1:-1;;12310:16:60;;;;12272:55;;;;;;;;:61;-1:-1:-1;;;12272:61:60;;-1:-1:-1;;;;;12272:61:60;;-1:-1:-1;12265:68:60;;12174:164;-1:-1:-1;;;;;12391:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:40;;;;;;;;:50;:40;:50;:64;-1:-1:-1;12387:88:60;;;12469:1;12462:8;;;;;12387:88;12479:12;-1:-1:-1;;12514:16:60;;12534:346;12549:5;12541:13;;:5;:13;;;12534:346;;;12603:1;12586:13;;;12585:19;;;12577:27;;12643:20;;:::i;:::-;-1:-1:-1;;;;;;12666:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:45;;;;;;;;;;;;;12643:68;;;;;;;;;;;;;;;-1:-1:-1;;;12643:68:60;;;-1:-1:-1;;;;;12643:68:60;;;;;;;;;12720:27;;12716:160;;;12762:8;;;;-1:-1:-1;12755:15:60;;-1:-1:-1;;;;12755:15:60;12716:160;12786:12;;:26;;;-1:-1:-1;12782:94:60;;;12828:6;12820:14;;12782:94;;;12869:1;12860:6;:10;12852:18;;12782:94;12534:346;;;;;-1:-1:-1;;;;;;12890:31:60;;;;;;:22;:31;;;;;;;;:37;;;;;;;;:44;;;;;;;;;;:50;-1:-1:-1;;;;;;;;12890:50:60;;;;;-1:-1:-1;;11735:1209:60;;;;;:::o;780:87:137:-;853:10;780:87;:::o;26936:85:57:-;27008:8;;-1:-1:-1;;;;;27008:8:57;26936:85;:::o;27231:186::-;27328:15;;;27341:1;27328:15;;;;;;;;;27279;;;;27328;;;;;;;105:10:-1;27328:15:57;88:34:-1;136:17;;-1:-1;27328:15:57;27300:43;;27362:31;;;27347:9;27357:1;27347:12;;;;;;;;-1:-1:-1;;;;;;27347:46:57;;;:12;;;;;;;;;;;:46;27404:9;-1:-1:-1;27231:186:57;:::o;3263:125:48:-;3377:2;3366:14;3360:21;;3348:37::o;2133:344::-;2182:12;2196:23;2231:4;-1:-1:-1;;;;;2223:18:48;2242:5;2223:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2223:25:48;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2181:67:48;;;;2257:7;2252:222;;1386:2:49;2275:10:48;:17;:40;2271:199;;2323:58;;-1:-1:-1;;;2323:58:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2271:199;2406:57;;;;;;;;;;;;;;-1:-1:-1;;;2406:57:48;;;2451:10;2406:16;:57::i;:::-;2399:65;;-1:-1:-1;;;2399:65:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;14848:338:57;14946:1;14937:6;-1:-1:-1;;;;;14937:10:57;;14929:100;;;;-1:-1:-1;;;14929:100:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15033:14;15050:61;15075:10;15087:5;15109:1;15094:12;:16;15050:24;:61::i;:::-;15033:78;;15133:7;-1:-1:-1;;;;;15123:17:57;:6;-1:-1:-1;;;;;15123:17:57;;;15115:67;;;;-1:-1:-1;;;15115:67:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14358:319;14439:6;14451:12;14466:36;14486:15;14466:19;:36::i;:::-;14451:51;;14506:13;14522:32;14542:5;14549:4;14522:19;:32::i;:::-;14610:13;;-1:-1:-1;;;14610:13:57;;-1:-1:-1;;;;;14610:13:57;;;14601:22;;;;;-1:-1:-1;14670:3:57;;1448:2:59;14635:15:57;;;14634:33;;;:39;;;14358:319;-1:-1:-1;;;;;14358:319:57:o;16133:122:60:-;16203:20;;:48;;;-1:-1:-1;;;16203:48:60;;16240:10;16203:48;;;;;;16186:4;;-1:-1:-1;;;;;16203:20:60;;:36;;:48;;;;;;;;;;;;;;:20;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;16203:48:60;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16203:48:60;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16203:48:60;;-1:-1:-1;16133:122:60;:::o;23082:136:57:-;23184:9;23082:136;:::o;318:156:149:-;379:4;405:42;-1:-1:-1;;;;;397:50:149;;;;;;:72;;-1:-1:-1;;;;;;;451:18:149;;;;318:156::o;13148:93:60:-;13225:12;13148:93;:::o;2530:419:54:-;-1:-1:-1;;;;;2651:34:54;;2629:19;2651:34;;;:25;:34;;;;;;;;:44;;;;;;;;;2715:31;;;:22;:31;;;;;:41;;;;;;;;2651:44;;;;-1:-1:-1;;2757:16:54;;2715:59;;;;;;;;;;:65;2802:76;;;;;;;;;;;;-1:-1:-1;;;2715:65:54;;;-1:-1:-1;;;;;2715:65:54;;2629:19;2802:76;;2715:65;;2816:5;;2802:76;;;;;:5;:76::i;:::-;2784:94;;2882:63;2903:7;2912:8;2922:12;2936:8;2882:20;:63::i;1875:418::-;-1:-1:-1;;;;;1996:34:54;;1974:19;1996:34;;;:25;:34;;;;;;;;:44;;;;;;;;;2060:31;;;:22;:31;;;;;:41;;;;;;;;1996:44;;;;-1:-1:-1;;2102:16:54;;2060:59;;;;;;;;;;:65;2147:75;;;;;;;;;;;;-1:-1:-1;;;2060:65:54;;;-1:-1:-1;;;;;2060:65:54;;1974:19;2147:75;;2060:65;;2161:5;;2147:75;;;;;:5;:75::i;7493:373::-;7567:19;7589:36;;;:26;:36;;;;;;;;;7645:23;:33;;;;;7589:36;;;;-1:-1:-1;;7679:16:54;;7645:51;;;;;;;;;;:57;7724:77;;;;;;;;;;;;7589:36;;-1:-1:-1;;;7645:57:54;;;-1:-1:-1;;;;;7645:57:54;;7567:19;;7724:77;;7645:57;;7738:5;;7724:77;;;;;;;:5;:77::i;:::-;7706:95;;7805:57;7829:8;7839:12;7853:8;7805:23;:57::i;6922:372::-;6996:19;7018:36;;;:26;:36;;;;;;;;;7074:23;:33;;;;;7018:36;;;;-1:-1:-1;;7108:16:54;;7074:51;;;;;;;;;;:57;7153:76;;;;;;;;;;;;7018:36;;-1:-1:-1;;;7074:57:54;;;-1:-1:-1;;;;;7074:57:54;;6996:19;;7153:76;;7074:57;;7167:5;;7153:76;;;;;;;:5;:76::i;4760:893::-;-1:-1:-1;;;;;4887:40:54;;4865:19;4887:40;;;:29;:40;;;;;;;;:50;;;;;;;;;4957:37;;;:26;:37;;;;;:47;;;;;;;;4887:50;;;;-1:-1:-1;;5005:16:54;;4957:65;;;;;;;;;;:71;-1:-1:-1;;;4957:71:54;;-1:-1:-1;;;;;4957:71:54;;;;4865:19;5460:14;;;;5456:121;;;5492:80;5498:6;5506:5;5492:80;;;;;;;;;;;;;;;;;:5;:80::i;:::-;5481:91;;5456:121;5580:69;5605:9;5616:8;5626:12;5640:8;5580:24;:69::i;4065:446::-;-1:-1:-1;;;;;4192:40:54;;4170:19;4192:40;;;:29;:40;;;;;;;;:50;;;;;;;;;4262:37;;;:26;:37;;;;;:47;;;;;;;;4192:50;;;;-1:-1:-1;;4310:16:54;;4262:65;;;;;;;;;;:71;4355:79;;;;;;;;;;;;-1:-1:-1;;;4262:71:54;;;-1:-1:-1;;;;;4262:71:54;;4170:19;4355:79;;4262:71;;4369:5;;4355:79;;;;;:5;:79::i;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;5923:806:54:-;6056:18;6077:86;6084:12;6077:86;;;;;;;;;;;;;;;;;:6;:86::i;:::-;-1:-1:-1;;;;;6185:37:54;;6167:15;6185:37;;;:26;:37;;;;;;;;:47;;;;;;;;-1:-1:-1;;6233:16:54;;6185:65;;;;;;;;;;;:71;6056:107;;-1:-1:-1;;;;6185:71:54;;;-1:-1:-1;;;;;6185:71:54;;6265:16;;;;;;:110;;-1:-1:-1;;;;;;6285:37:54;;;;;;:26;:37;;;;;;;;:47;;;;;;;;:90;-1:-1:-1;;6333:16:54;;6285:65;;;;;;;;;:75;:90;;;:75;;:90;6265:110;6261:395;;;-1:-1:-1;;;;;6382:37:54;;;;;;:26;:37;;;;;;;;:47;;;;;;;;-1:-1:-1;;6430:16:54;;6382:65;;;;;;;;;:82;;-1:-1:-1;;;;;;6382:82:54;-1:-1:-1;;;;;;;;6382:82:54;;;;;;6261:395;;;6544:33;;;;;;;;;;;;;;-1:-1:-1;;;;;6544:33:54;;;;;;;;;;-1:-1:-1;;;;;6480:37:54;;-1:-1:-1;6480:37:54;;;:26;:37;;;;;:47;;;;;;;;:61;;;;;;;;;;:97;;;;;;;;;-1:-1:-1;;;6480:97:54;-1:-1:-1;;;;;;6480:97:54;;;-1:-1:-1;;6480:97:54;;;;;;;;;;;;;;;6582:40;;;:29;:40;;;;;:50;;;;;;;;;;:69;;6480:97;6635:16;;6582:69;;;;;;;;;;;;;6261:395;6664:61;;;;;;-1:-1:-1;;;;;6664:61:54;;;;;;;;;;;;;;;-1:-1:-1;;;;;6664:61:54;;;;;;;;;;;;;5923:806;;;;;;:::o;22143:316:57:-;22270:6;-1:-1:-1;;;;;22260:16:57;:6;-1:-1:-1;;;;;22260:16:57;;;:30;;;;;22289:1;22280:6;-1:-1:-1;;;;;22280:10:57;;22260:30;22256:200;;;-1:-1:-1;;;;;22301:20:57;;;22297:74;;22323:48;22346:6;22354:8;22364:6;22323:22;:48::i;:::-;-1:-1:-1;;;;;22381:20:57;;;22377:74;;22403:48;22426:6;22434:8;22444:6;22403:22;:48::i;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;6739:581:57;6902:8;;:52;;;-1:-1:-1;;;6902:52:57;;-1:-1:-1;;;;;6902:52:57;;;;;;;6940:4;6902:52;;;;-1:-1:-1;;;;;6902:52:57;;;;;;;;6887:12;;6902:8;;;;;:21;;:52;;;;;;;;;;;;;;;6887:12;6902:8;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;6902:52:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6902:52:57;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6902:52:57;;-1:-1:-1;6902:52:57;6958:16;;;;;;7015:14;7032:31;7047:8;7057:5;7032:14;:31::i;:::-;7015:48;;7077:66;7083:7;7092:6;7077:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;7067:76;;7179:34;7199:5;7206:6;7179:19;:34::i;:::-;7217:43;7236:8;7246:5;7253:6;7217:18;:43::i;:::-;7270:46;;;-1:-1:-1;;;;;7270:46:57;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7270:46:57;;;;;;;;;;;;;6739:581;;;;;;:::o;2419:430:60:-;2532:12;2550:13;2566:36;2586:4;2592:9;2566:19;:36::i;:::-;2550:52;;2606:13;2622:45;2649:4;2655:11;2622:26;:45::i;:::-;2606:61;;1448:2:59;-1:-1:-1;;;;;2745:100:60;:84;2751:6;2759;2745:84;;;;;;;;;;;;;;;;;:5;:84::i;:::-;-1:-1:-1;;;;;2745:100:60;;;;;;;;2419:430;-1:-1:-1;;;;;;2419:430:60:o;15241:340::-;15308:7;15321:20;15344:25;15364:4;15344:19;:25::i;:::-;15321:48;;15516:4;15500:12;:20;15496:67;;1041:7:59;15534:12:60;:24;15527:31;;15496:67;-1:-1:-1;15573:4:60;;15241:340;-1:-1:-1;15241:340:60:o;1719:569:49:-;1808:13;1827:22;1858:4;1827:36;;1867:22;1898:4;1867:36;;1907:19;1386:2;1959:9;:16;1940:9;:16;:35;:57;1929:69;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;1929:69:49;87:34:-1;135:17;;-1:-1;1929:69:49;-1:-1:-1;1907:91:49;-1:-1:-1;1907:91:49;2044:9;;2061:87;2085:9;:16;2081:1;:20;2061:87;;;2131:9;2141:1;2131:12;;;;;;;;;;;;;;;;2113:10;2124:3;;;;;;2113:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2113:30:49;;;;;;;;-1:-1:-1;2103:3:49;;2061:87;;;-1:-1:-1;1386:2:49;2151:105;2193:9;:16;2189:1;:20;2151:105;;;2239:9;2249:1;2239:12;;;;;;;;;;;;;;;;2221:10;2232:3;;;;;;2221:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2221:30:49;;;;;;;;-1:-1:-1;2211:3:49;;2151:105;;;-1:-1:-1;2273:10:49;;1719:569;-1:-1:-1;;;;;;;1719:569:49:o;3209:613:54:-;3336:18;3357:86;3364:12;3357:86;;;;;;;;;;;;;;;;;:6;:86::i;:::-;3336:107;;3467:1;3452:12;:16;;;:104;;;;-1:-1:-1;;;;;;3472:31:54;;;;;;:22;:31;;;;;;;;:41;;;;;;;;:84;-1:-1:-1;;3514:16:54;;3472:59;;;;;;;;;:69;:84;;;:69;;:84;3452:104;3448:371;;;-1:-1:-1;;;;;3563:31:54;;;;;;:22;:31;;;;;;;;:41;;;;;;;;-1:-1:-1;;3605:16:54;;3563:59;;;;;;;;;:76;;-1:-1:-1;;;;;;3563:76:54;-1:-1:-1;;;;;;;;3563:76:54;;;;;;3448:371;;;3713:33;;;;;;;;;;;;;;-1:-1:-1;;;;;3713:33:54;;;;;;;;;;-1:-1:-1;;;;;3655:31:54;;;;-1:-1:-1;3655:31:54;;;:22;:31;;;;;:41;;;;;;;;:55;;;;;;;;;;:91;;;;;;;;;-1:-1:-1;;;3655:91:54;-1:-1:-1;;;;;;3655:91:54;;;-1:-1:-1;;3655:91:54;;;;;;;;;;;;;;;3751:34;;;:25;:34;;;;;:44;;;;;;;;;;:63;;-1:-1:-1;3798:16:54;;;3751:63;;;;;;;;3209:613::o;8090:565::-;8201:18;8222:86;8229:12;8222:86;;;;;;;;;;;;;;;;;:6;:86::i;:::-;8201:107;;8332:1;8317:12;:16;;;:96;;;;-1:-1:-1;8337:33:54;;;;:23;:33;;;;;;;;:76;-1:-1:-1;;8371:16:54;;8337:51;;;;;;;;;:61;:76;;;:61;;:76;8317:96;8313:339;;;8420:33;;;;:23;:33;;;;;;;;-1:-1:-1;;8454:16:54;;8420:51;;;;;;;;;:68;;-1:-1:-1;;;;;;8420:68:54;-1:-1:-1;;;;;;;;8420:68:54;;;;;;8313:339;;;8554:33;;;;;;;;;;;;;;-1:-1:-1;;;;;8554:33:54;;;;;;;;;;-1:-1:-1;8504:33:54;;;:23;:33;;;;;:47;;;;;;;;;;:83;;;;;;-1:-1:-1;;8504:83:54;;;;;;;;;;-1:-1:-1;;;;;;8504:83:54;-1:-1:-1;;;8504:83:54;;;;;;;;;;;;8592:36;;;:26;:36;;;;;:55;;;;;-1:-1:-1;8631:16:54;;;8592:55;;;;8090:565::o;797:146:56:-;875:6;906:12;-1:-1:-1;;;895:9:56;;887:32;;;;-1:-1:-1;;;887:32:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;887:32:56;-1:-1:-1;937:1:56;;797:146;-1:-1:-1;;797:146:56:o;71:1535:115:-;;;;;;;;;;-1:-1:-1;71:1535:115;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "DELEGATION_TYPEHASH()": "e7a324dc",
              "DOMAIN_TYPEHASH()": "20606b70",
              "MAX_DURATION()": "b1724b46",
              "MAX_VOTING_WEIGHT()": "17748adc",
              "MOCK_priorTotalVotingPower(uint96)": "daeaf2f2",
              "MOCK_priorWeightedStake(uint96)": "0130f0bf",
              "SOVToken()": "a58848c5",
              "WEIGHT_FACTOR()": "d27569e7",
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "allUnlocked()": "9929e886",
              "balanceOf(address)": "70a08231",
              "balanceOf_MultipliedByTwo(address)": "32e9f250",
              "calculatePriorWeightedStake(address,uint256,uint256)": "472f88f7",
              "computeWeightByDate(uint256,uint256)": "62cf8a08",
              "delegate(address,uint256)": "026e402b",
              "delegateBySig(address,uint256,uint256,uint256,uint8,bytes32,bytes32)": "e63a562e",
              "delegateStakingCheckpoints(address,uint256,uint32)": "6b6fde0e",
              "delegates(address,uint256)": "27dd1b00",
              "extendStakingDuration(uint256,uint256)": "eefb8c47",
              "feeSharing()": "03a18fa3",
              "getCurrentStakedUntil(uint256)": "d5c38464",
              "getCurrentVotes(address)": "b4b5ea57",
              "getPriorStakeByDateForDelegatee(address,uint256,uint256)": "e97ffacb",
              "getPriorTotalStakesForDate(uint256,uint256)": "f09cfc64",
              "getPriorTotalVotingPower(uint32,uint256)": "2522d7ba",
              "getPriorUserStakeByDate(address,uint256,uint256)": "cf7b684a",
              "getPriorVotes(address,uint256,uint256)": "836eebee",
              "getPriorWeightedStake(address,uint256,uint256)": "37e6b1c1",
              "getStakes(address)": "7ba6f458",
              "getWithdrawAmounts(uint96,uint256)": "96a590c1",
              "governanceWithdraw(uint96,uint256,address)": "800b64ca",
              "governanceWithdrawVesting(address,address)": "3827fca5",
              "isOwner()": "8f32d59b",
              "kickoffTS()": "00073f99",
              "migrateToNewStakingContract()": "5419675f",
              "newStakingContract()": "ae81dfe4",
              "nonces(address)": "7ecebe00",
              "numDelegateStakingCheckpoints(address,uint256)": "94c2ce58",
              "numTotalStakingCheckpoints(uint256)": "9436e7d4",
              "numUserStakingCheckpoints(address,uint256)": "db27ec18",
              "owner()": "8da5cb5b",
              "receiveApproval(address,uint256,address,bytes)": "8f4ffcb1",
              "removeAdmin(address)": "1785f53c",
              "setDelegateStake(address,uint256,uint96)": "fbbb8ec6",
              "setFeeSharing(address)": "626ee2d9",
              "setNewStakingContract(address)": "9a377b82",
              "setVestingRegistry(address)": "450b0601",
              "setWeightScaling(uint96)": "b8a98732",
              "stake(uint96,uint256,address,address)": "25629ec0",
              "stakeWithApproval(address,uint96,uint256,address,address)": "0c09ddfd",
              "stakesBySchedule(uint256,uint256,uint256,uint256,address,address)": "4b2fea1e",
              "timestampToLockDate(uint256)": "72ec9795",
              "totalStakingCheckpoints(uint256,uint32)": "dfb267c2",
              "transferOwnership(address)": "f2fde38b",
              "unlockAllTokens()": "5e0be607",
              "userStakingCheckpoints(address,uint256,uint32)": "68cefccc",
              "vestingCodeHashes(bytes32)": "07392cc0",
              "vestingRegistryLogic()": "104932cf",
              "vestingWhitelist(address)": "adae9002",
              "weightScaling()": "bf626ec1",
              "weightedStakeByDate(address,uint256,uint256,uint256)": "8dae1b16",
              "withdraw(uint96,uint256,address)": "dab6ca44"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "balanceOf(address)": {
                "notice": "Get the number of staked tokens held by the user account."
              },
              "computeWeightByDate(uint256,uint256)": {
                "notice": "Compute the weight for a specific date."
              },
              "delegate(address,uint256)": {
                "notice": "Delegate votes from `msg.sender` which are locked until lockDate to `delegatee`."
              },
              "delegateBySig(address,uint256,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Delegates votes from signatory to a delegatee account. Voting with EIP-712 Signatures.\t * Voting power can be delegated to any address, and then can be used to vote on proposals. A key benefit to users of by-signature functionality is that they can create a signed vote transaction for free, and have a trusted third-party spend rBTC(or ETH) on gas fees and write it to the blockchain for them.\t * The third party in this scenario, submitting the SOV-holder’s signed transaction holds a voting power that is for only a single proposal. The signatory still holds the power to vote on their own behalf in the proposal if the third party has not yet published the signed transaction that was given to them."
              },
              "extendStakingDuration(uint256,uint256)": {
                "notice": "Extend the staking duration until the specified date."
              },
              "getCurrentStakedUntil(uint256)": {
                "notice": "Get the current number of tokens staked for a day."
              },
              "getCurrentVotes(address)": {
                "notice": "Get the current votes balance for a user account."
              },
              "getPriorStakeByDateForDelegatee(address,uint256,uint256)": {
                "notice": "Determine the prior number of stake for an account as of a block number."
              },
              "getPriorTotalStakesForDate(uint256,uint256)": {
                "notice": "Determine the prior number of stake for an unlocking date as of a block number."
              },
              "getPriorUserStakeByDate(address,uint256,uint256)": {
                "notice": "Determine the prior number of stake for an account until a certain lock date as of a block number."
              },
              "getPriorVotes(address,uint256,uint256)": {
                "notice": "Determine the prior number of votes for a delegatee as of a block number. Iterate through checkpoints adding up voting power."
              },
              "getStakes(address)": {
                "notice": "Get list of stakes for a user account."
              },
              "getWithdrawAmounts(uint96,uint256)": {
                "notice": "Get available and punished amount for withdrawing."
              },
              "governanceWithdraw(uint96,uint256,address)": {
                "notice": "Withdraw the given amount of tokens."
              },
              "governanceWithdrawVesting(address,address)": {
                "notice": "Withdraw tokens for vesting contract."
              },
              "migrateToNewStakingContract()": {
                "notice": "Allow a staker to migrate his positions to the new staking contract."
              },
              "receiveApproval(address,uint256,address,bytes)": {
                "notice": "Receives approval from SOV token."
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "setFeeSharing(address)": {
                "notice": "Allow the owner to set a fee sharing proxy contract. We need it for unstaking with slashing."
              },
              "setNewStakingContract(address)": {
                "notice": "Allow the owner to set a new staking contract. As a consequence it allows the stakers to migrate their positions to the new contract."
              },
              "setVestingRegistry(address)": {
                "notice": "sets vesting registry"
              },
              "setWeightScaling(uint96)": {
                "notice": "Allow the owner to set weight scaling. We need it for unstaking with slashing."
              },
              "stake(uint96,uint256,address,address)": {
                "notice": "Stake the given amount for the given duration of time."
              },
              "stakeWithApproval(address,uint96,uint256,address,address)": {
                "notice": "Stake the given amount for the given duration of time."
              },
              "stakesBySchedule(uint256,uint256,uint256,uint256,address,address)": {
                "notice": "Stake tokens according to the vesting schedule."
              },
              "timestampToLockDate(uint256)": {
                "notice": "Unstaking is possible every 2 weeks only. This means, to calculate the key value for the staking checkpoints, we need to map the intended timestamp to the closest available date."
              },
              "unlockAllTokens()": {
                "notice": "Allow the owner to unlock all tokens in case the staking contract is going to be replaced Note: Not reversible on purpose. once unlocked, everything is unlocked. The owner should not be able to just quickly unlock to withdraw his own tokens and lock again."
              },
              "weightedStakeByDate(address,uint256,uint256,uint256)": {
                "notice": "Compute the voting power for a specific date. Power = stake * weight TODO: WeightedStaking::weightedStakeByDate should probably better be internal instead of a public function."
              },
              "withdraw(uint96,uint256,address)": {
                "notice": "Withdraw the given amount of tokens if they are unlocked."
              }
            }
          }
        }
      },
      "contracts/mockup/StakingRewardsMockUp.sol": {
        "StakingRewardsMockUp": {
          "abi": [
            {
              "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": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "RewardWithdrawn",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "BASE_RATE",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "DIVISOR",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "TWO_WEEKS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "blockMockUp",
              "outputs": [
                {
                  "internalType": "contract BlockMockUp",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "claimedBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "collectReward",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "deploymentBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "considerMaxDuration",
                  "type": "bool"
                }
              ],
              "name": "getStakerCurrentReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lastWithdrawalInterval",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "contract IStaking",
                  "name": "_staking",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDuration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_blockMockUp",
                  "type": "address"
                }
              ],
              "name": "setBlockMockUpAddr",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "setMaxDuration",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract IStaking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "startTime",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "stop",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "stopBlock",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiverAddress",
                  "type": "address"
                }
              ],
              "name": "withdrawTokensByOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "withdrawals",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "collectReward()": {
                "details": "User calls this function to collect SOV staking rewards as per the SIP-0024 program. The weighted stake is calculated using getPriorWeightedStake. Block number sent to the functon must be a finalised block, hence we deduct 1 from the current block. User is only allowed to withdraw after intervals of 14 days."
              },
              "getStakerCurrentReward(bool)": {
                "details": "The collectReward() function internally calls this function to calculate reward amount",
                "params": {
                  "considerMaxDuration": "True: Runs for the maximum duration - used in tx not to run out of gas False - to query total rewards"
                },
                "return": "The timestamp of last withdrawalThe accumulated reward"
              },
              "initialize(address,address)": {
                "params": {
                  "_SOV": "SOV token address",
                  "_staking": "StakingProxy address should be passed"
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setBlockMockUpAddr(address)": {
                "params": {
                  "_blockMockUp": "the address of BlockMockUp"
                }
              },
              "setMaxDuration(uint256)": {
                "details": "Rewards can be collected for a maximum duration at a time. This is to avoid Block Gas Limit failures. Setting it zero would mean that it will loop through the entire duration since the start of rewards program. It should ideally be set to a value, for which the rewards can be easily processed.",
                "params": {
                  "_duration": "Max duration for which rewards can be collected at a go (in seconds)"
                }
              },
              "stop()": {
                "details": "All stakes existing on the contract at the point in time of cancellation continue accruing rewards until the end of the staking period being rewarded"
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "withdrawTokensByOwner(address)": {
                "params": {
                  "_receiverAddress": "The address where the tokens has to be transferred."
                }
              }
            },
            "title": "Staking Rewards Contract MockUp"
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b6113c8806100796000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806378e97925116100b8578063934d1fa41161007c578063934d1fa41461027f578063a377f24414610287578063cf0f34c4146102ad578063d42b779d146102ca578063e62a9f1e146102f0578063f2fde38b1461031657610142565b806378e97925146102255780637a9262a21461022d57806382100e3f146102535780638da5cb5b1461025b5780638f32d59b1461026357610142565b806344bb3b2f1161010a57806344bb3b2f146101cf578063485cc955146101d75780634cf088d9146102055780635004b6e41461020d57806354c5aee1146102155780636db5c8fd1461021d57610142565b806307da68f51461014757806308dcb3601461015157806321f6bf2f146101755780633410fe6e146101ad57806341910f90146101c7575b600080fd5b61014f61033c565b005b6101596103d8565b604080516001600160a01b039092168252519081900360200190f35b6101946004803603602081101561018b57600080fd5b503515156103e7565b6040805192835260208301919091528051918290030190f35b6101b561062d565b60408051918252519081900360200190f35b6101b5610634565b6101b561063a565b61014f600480360360408110156101ed57600080fd5b506001600160a01b0381358116916020013516610640565b610159610877565b610159610886565b61014f61089b565b6101b561091f565b6101b5610925565b6101b56004803603602081101561024357600080fd5b50356001600160a01b031661092b565b6101b561093d565b610159610943565b61026b610952565b604080519115158252519081900360200190f35b6101b5610976565b61014f6004803603602081101561029d57600080fd5b50356001600160a01b031661097d565b61014f600480360360208110156102c357600080fd5b5035610a4a565b6101b5600480360360208110156102e057600080fd5b50356001600160a01b0316610a97565b61014f6004803603602081101561030657600080fd5b50356001600160a01b0316610aa9565b61014f6004803603602081101561032c57600080fd5b50356001600160a01b0316610b74565b610344610952565b610384576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600554156103cb576040805162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481cdd1bdc1c1959608a1b604482015290519081900360640190fd5b6103d3610bc8565b600555565b6001546001600160a01b031681565b60008060008060016103f7610bc8565b3360008181526006602090815260408083205460025482516372ec979560e01b81524260048201819052935198909703985091969395869586959094929386936001600160a01b03909116926372ec97959260248083019392829003018186803b15801561046457600080fd5b505afa158015610478573d6000803e3d6000fd5b505050506040513d602081101561048e57600080fd5b505190508161049f576004546104a1565b815b9a508a8110156104c1575060009950899850610628975050505050505050565b8b1561056a576003546104db908c9063ffffffff610c4916565b95508686106104ea5780610563565b600254604080516372ec979560e01b81526004810189905290516001600160a01b03909216916372ec979591602480820192602092909190829003018186803b15801561053657600080fd5b505afa15801561054a573d6000803e3d6000fd5b505050506040513d602081101561056057600080fd5b50515b945061056e565b8094505b8a5b858110156105e2576105a961059c60206105908b8563ffffffff610cac16565b9063ffffffff610cee16565b8a9063ffffffff610cac16565b94506008548510156105bb5760085494505b6105d66105c9858784610d30565b8b9063ffffffff610c4916565b99506212750001610570565b50886105fe575060009950899850610628975050505050505050565b939950899361061c6227ac406105908b610b9f63ffffffff610e8916565b99505050505050505050505b915091565b6227ac4081565b610b9f81565b60055481565b610648610952565b610688576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600954610100900460ff16806106a1575060095460ff16155b6106dc5760405162461bcd60e51b815260040180806020018281038252602e815260200180611345602e913960400191505060405180910390fd5b600954610100900460ff16158015610707576009805460ff1961ff0019909116610100171660011790555b6001600160a01b038316610759576040805162461bcd60e51b815260206004820152601460248201527324b73b30b634b21029a7ab1020b2323932b9b99760611b604482015290519081900360640190fd5b61076283610ee2565b6107a9576040805162461bcd60e51b815260206004820152601360248201527217d4d3d5881b9bdd08184818dbdb9d1c9858dd606a1b604482015290519081900360640190fd5b600180546001600160a01b038086166001600160a01b0319928316179092556002805485841692169190911790819055604080516372ec979560e01b8152426004820152905191909216916372ec9795916024808301926020929190829003018186803b15801561081957600080fd5b505afa15801561082d573d6000803e3d6000fd5b505050506040513d602081101561084357600080fd5b5051600455610855630114db00610a4a565b61085d610bc8565b6008558015610872576009805461ff00191690555b505050565b6002546001600160a01b031681565b6009546201000090046001600160a01b031681565b6000806108a860016103e7565b909250905081158015906108bc5750600081115b6108ff576040805162461bcd60e51b815260206004820152600f60248201526e1b9bc81d985b1a59081c995dd85c99608a1b604482015290519081900360640190fd5b33600081815260066020526040902083905561091b9082610f1e565b5050565b60035481565b60045481565b60066020526000908152604090205481565b60085481565b6000546001600160a01b031690565b600080546001600160a01b0316610967611033565b6001600160a01b031614905090565b6212750081565b610985610952565b6109c5576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116610a20576040805162461bcd60e51b815260206004820152601c60248201527f626c6f636b206d6f636b7570206164647265737320696e76616c696400000000604482015290519081900360640190fd5b600980546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b610a52610952565b610a92576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600355565b60076020526000908152604090205481565b610ab1610952565b610af1576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610b3c57600080fd5b505afa158015610b50573d6000803e3d6000fd5b505050506040513d6020811015610b6657600080fd5b5051905061091b8282611037565b610b7c610952565b610bbc576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610bc581611182565b50565b6000600960029054906101000a90046001600160a01b03166001600160a01b0316637f6c6f106040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1857600080fd5b505afa158015610c2c573d6000803e3d6000fd5b505050506040513d6020811015610c4257600080fd5b5051905090565b600082820183811015610ca3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000610ca383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611222565b6000610ca383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112b9565b600254604080516337e6b1c160e01b81526001600160a01b0386811660048301526024820186905260448201859052915160009392909216916337e6b1c191606480820192602092909190829003018186803b158015610d8f57600080fd5b505afa158015610da3573d6000803e3d6000fd5b505050506040513d6020811015610db957600080fd5b50516005546bffffffffffffffffffffffff909116915015610e8257600254600554604080516337e6b1c160e01b81526001600160a01b038881166004830152602482019390935260448101869052905160009392909216916337e6b1c191606480820192602092909190829003018186803b158015610e3857600080fd5b505afa158015610e4c573d6000803e3d6000fd5b505050506040513d6020811015610e6257600080fd5b50516bffffffffffffffffffffffff16905081811015610e80578091505b505b9392505050565b600082610e9857506000610ca6565b82820282848281610ea557fe5b0414610ca35760405162461bcd60e51b81526004018080602001828103825260218152602001806113736021913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610f1657508115155b949350505050565b600154604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610f6857600080fd5b505afa158015610f7c573d6000803e3d6000fd5b505050506040513d6020811015610f9257600080fd5b50511015610fe7576040805162461bcd60e51b815260206004820152601f60248201527f6e6f7420656e6f7567682066756e647320746f20726577617264207573657200604482015290519081900360640190fd5b6001600160a01b038216600090815260076020526040902054611010908263ffffffff610c4916565b6001600160a01b03831660009081526007602052604090205561091b8282611037565b3390565b8061107a576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156110d057600080fd5b505af11580156110e4573d6000803e3d6000fd5b505050506040513d60208110156110fa57600080fd5b505161113f576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6040805182815290516001600160a01b038416917f1d3eee4ca001cff39eec6ec7615aacf2f2bd61791273830728ba00ccbd6e1337919081900360200190a25050565b6001600160a01b0381166111c75760405162461bcd60e51b815260040180806020018281038252602681526020018061131f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081848411156112b15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561127657818101518382015260200161125e565b50505050905090810190601f1680156112a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836113085760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561127657818101518382015260200161125e565b50600083858161131457fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820d6e11dd95a1b33ca9379ef9db56207e7e38d1dbde7279ed1f3bf47cb0922a4a564736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x13C8 DUP1 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78E97925 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0x934D1FA4 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0x934D1FA4 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0xA377F244 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xCF0F34C4 EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0xD42B779D EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xE62A9F1E EQ PUSH2 0x2F0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x316 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x78E97925 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x7A9262A2 EQ PUSH2 0x22D JUMPI DUP1 PUSH4 0x82100E3F EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x263 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x44BB3B2F GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x44BB3B2F EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x1D7 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x5004B6E4 EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0x54C5AEE1 EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0x6DB5C8FD EQ PUSH2 0x21D JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x7DA68F5 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x21F6BF2F EQ PUSH2 0x175 JUMPI DUP1 PUSH4 0x3410FE6E EQ PUSH2 0x1AD JUMPI DUP1 PUSH4 0x41910F90 EQ PUSH2 0x1C7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x33C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x159 PUSH2 0x3D8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x194 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B5 PUSH2 0x62D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B5 PUSH2 0x634 JUMP JUMPDEST PUSH2 0x1B5 PUSH2 0x63A JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x640 JUMP JUMPDEST PUSH2 0x159 PUSH2 0x877 JUMP JUMPDEST PUSH2 0x159 PUSH2 0x886 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x89B JUMP JUMPDEST PUSH2 0x1B5 PUSH2 0x91F JUMP JUMPDEST PUSH2 0x1B5 PUSH2 0x925 JUMP JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x92B JUMP JUMPDEST PUSH2 0x1B5 PUSH2 0x93D JUMP JUMPDEST PUSH2 0x159 PUSH2 0x943 JUMP JUMPDEST PUSH2 0x26B PUSH2 0x952 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B5 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x97D JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA4A JUMP JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA97 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x306 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAA9 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB74 JUMP JUMPDEST PUSH2 0x344 PUSH2 0x952 JUMP JUMPDEST PUSH2 0x384 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD ISZERO PUSH2 0x3CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x105B1C9958591E481CDD1BDC1C1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3D3 PUSH2 0xBC8 JUMP JUMPDEST PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x1 PUSH2 0x3F7 PUSH2 0xBC8 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x2 SLOAD DUP3 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE TIMESTAMP PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP4 MLOAD SWAP9 SWAP1 SWAP8 SUB SWAP9 POP SWAP2 SWAP7 SWAP4 SWAP6 DUP7 SWAP6 DUP7 SWAP6 SWAP1 SWAP5 SWAP3 SWAP4 DUP7 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 PUSH4 0x72EC9795 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x464 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x478 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 PUSH2 0x49F JUMPI PUSH1 0x4 SLOAD PUSH2 0x4A1 JUMP JUMPDEST DUP2 JUMPDEST SWAP11 POP DUP11 DUP2 LT ISZERO PUSH2 0x4C1 JUMPI POP PUSH1 0x0 SWAP10 POP DUP10 SWAP9 POP PUSH2 0x628 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP12 ISZERO PUSH2 0x56A JUMPI PUSH1 0x3 SLOAD PUSH2 0x4DB SWAP1 DUP13 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC49 AND JUMP JUMPDEST SWAP6 POP DUP7 DUP7 LT PUSH2 0x4EA JUMPI DUP1 PUSH2 0x563 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x72EC9795 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x54A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP5 POP PUSH2 0x56E JUMP JUMPDEST DUP1 SWAP5 POP JUMPDEST DUP11 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x5E2 JUMPI PUSH2 0x5A9 PUSH2 0x59C PUSH1 0x20 PUSH2 0x590 DUP12 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xCAC AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xCEE AND JUMP JUMPDEST DUP11 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xCAC AND JUMP JUMPDEST SWAP5 POP PUSH1 0x8 SLOAD DUP6 LT ISZERO PUSH2 0x5BB JUMPI PUSH1 0x8 SLOAD SWAP5 POP JUMPDEST PUSH2 0x5D6 PUSH2 0x5C9 DUP6 DUP8 DUP5 PUSH2 0xD30 JUMP JUMPDEST DUP12 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC49 AND JUMP JUMPDEST SWAP10 POP PUSH3 0x127500 ADD PUSH2 0x570 JUMP JUMPDEST POP DUP9 PUSH2 0x5FE JUMPI POP PUSH1 0x0 SWAP10 POP DUP10 SWAP9 POP PUSH2 0x628 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP4 SWAP10 POP DUP10 SWAP4 PUSH2 0x61C PUSH3 0x27AC40 PUSH2 0x590 DUP12 PUSH2 0xB9F PUSH4 0xFFFFFFFF PUSH2 0xE89 AND JUMP JUMPDEST SWAP10 POP POP POP POP POP POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH3 0x27AC40 DUP2 JUMP JUMPDEST PUSH2 0xB9F DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x648 PUSH2 0x952 JUMP JUMPDEST PUSH2 0x688 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x6A1 JUMPI POP PUSH1 0x9 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x6DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1345 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x707 JUMPI PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x759 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x24B73B30B634B21029A7AB1020B2323932B9B997 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x762 DUP4 PUSH2 0xEE2 JUMP JUMPDEST PUSH2 0x7A9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x17D4D3D5881B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP1 SLOAD DUP6 DUP5 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE TIMESTAMP PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x72EC9795 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x819 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x82D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x843 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SSTORE PUSH2 0x855 PUSH4 0x114DB00 PUSH2 0xA4A JUMP JUMPDEST PUSH2 0x85D PUSH2 0xBC8 JUMP JUMPDEST PUSH1 0x8 SSTORE DUP1 ISZERO PUSH2 0x872 JUMPI PUSH1 0x9 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8A8 PUSH1 0x1 PUSH2 0x3E7 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x8BC JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x8FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1B9BC81D985B1A59081C995DD85C99 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE PUSH2 0x91B SWAP1 DUP3 PUSH2 0xF1E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x967 PUSH2 0x1033 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST PUSH2 0x985 PUSH2 0x952 JUMP JUMPDEST PUSH2 0x9C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626C6F636B206D6F636B7570206164647265737320696E76616C696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xA52 PUSH2 0x952 JUMP JUMPDEST PUSH2 0xA92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xAB1 PUSH2 0x952 JUMP JUMPDEST PUSH2 0xAF1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB50 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x91B DUP3 DUP3 PUSH2 0x1037 JUMP JUMPDEST PUSH2 0xB7C PUSH2 0x952 JUMP JUMPDEST PUSH2 0xBBC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xBC5 DUP2 PUSH2 0x1182 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7F6C6F10 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xCA3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCA3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCA3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x12B9 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x37E6B1C1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x37E6B1C1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x5 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP ISZERO PUSH2 0xE82 JUMPI PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x37E6B1C1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x37E6B1C1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xE80 JUMPI DUP1 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xE98 JUMPI POP PUSH1 0x0 PUSH2 0xCA6 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xEA5 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xCA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1373 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0xF16 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF7C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0xFE7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F7420656E6F7567682066756E647320746F20726577617264207573657200 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1010 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC49 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x91B DUP3 DUP3 PUSH2 0x1037 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x107A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x113F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1D1C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0x1D3EEE4CA001CFF39EEC6EC7615AACF2F2BD61791273830728BA00CCBD6E1337 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x11C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x131F PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x12B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1276 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x125E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x12A3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1308 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1276 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x125E JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1314 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373496E697469616C697A61626C653A2063 PUSH16 0x6E747261637420697320616C72656164 PUSH26 0x20696E697469616C697A6564536166654D6174683A206D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72315820 0xD6 0xE1 SAR 0xD9 GAS SHL CALLER 0xCA SWAP4 PUSH26 0xEF9DB56207E7E38D1DBDE7279ED1F3BF47CB0922A4A564736F6C PUSH4 0x43000511 STOP ORIGIN ",
              "sourceMap": "201:634:116:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;201:634:116;;780:87:137;853:10;780:87;:::o;201:634:116:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101425760003560e01c806378e97925116100b8578063934d1fa41161007c578063934d1fa41461027f578063a377f24414610287578063cf0f34c4146102ad578063d42b779d146102ca578063e62a9f1e146102f0578063f2fde38b1461031657610142565b806378e97925146102255780637a9262a21461022d57806382100e3f146102535780638da5cb5b1461025b5780638f32d59b1461026357610142565b806344bb3b2f1161010a57806344bb3b2f146101cf578063485cc955146101d75780634cf088d9146102055780635004b6e41461020d57806354c5aee1146102155780636db5c8fd1461021d57610142565b806307da68f51461014757806308dcb3601461015157806321f6bf2f146101755780633410fe6e146101ad57806341910f90146101c7575b600080fd5b61014f61033c565b005b6101596103d8565b604080516001600160a01b039092168252519081900360200190f35b6101946004803603602081101561018b57600080fd5b503515156103e7565b6040805192835260208301919091528051918290030190f35b6101b561062d565b60408051918252519081900360200190f35b6101b5610634565b6101b561063a565b61014f600480360360408110156101ed57600080fd5b506001600160a01b0381358116916020013516610640565b610159610877565b610159610886565b61014f61089b565b6101b561091f565b6101b5610925565b6101b56004803603602081101561024357600080fd5b50356001600160a01b031661092b565b6101b561093d565b610159610943565b61026b610952565b604080519115158252519081900360200190f35b6101b5610976565b61014f6004803603602081101561029d57600080fd5b50356001600160a01b031661097d565b61014f600480360360208110156102c357600080fd5b5035610a4a565b6101b5600480360360208110156102e057600080fd5b50356001600160a01b0316610a97565b61014f6004803603602081101561030657600080fd5b50356001600160a01b0316610aa9565b61014f6004803603602081101561032c57600080fd5b50356001600160a01b0316610b74565b610344610952565b610384576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600554156103cb576040805162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481cdd1bdc1c1959608a1b604482015290519081900360640190fd5b6103d3610bc8565b600555565b6001546001600160a01b031681565b60008060008060016103f7610bc8565b3360008181526006602090815260408083205460025482516372ec979560e01b81524260048201819052935198909703985091969395869586959094929386936001600160a01b03909116926372ec97959260248083019392829003018186803b15801561046457600080fd5b505afa158015610478573d6000803e3d6000fd5b505050506040513d602081101561048e57600080fd5b505190508161049f576004546104a1565b815b9a508a8110156104c1575060009950899850610628975050505050505050565b8b1561056a576003546104db908c9063ffffffff610c4916565b95508686106104ea5780610563565b600254604080516372ec979560e01b81526004810189905290516001600160a01b03909216916372ec979591602480820192602092909190829003018186803b15801561053657600080fd5b505afa15801561054a573d6000803e3d6000fd5b505050506040513d602081101561056057600080fd5b50515b945061056e565b8094505b8a5b858110156105e2576105a961059c60206105908b8563ffffffff610cac16565b9063ffffffff610cee16565b8a9063ffffffff610cac16565b94506008548510156105bb5760085494505b6105d66105c9858784610d30565b8b9063ffffffff610c4916565b99506212750001610570565b50886105fe575060009950899850610628975050505050505050565b939950899361061c6227ac406105908b610b9f63ffffffff610e8916565b99505050505050505050505b915091565b6227ac4081565b610b9f81565b60055481565b610648610952565b610688576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600954610100900460ff16806106a1575060095460ff16155b6106dc5760405162461bcd60e51b815260040180806020018281038252602e815260200180611345602e913960400191505060405180910390fd5b600954610100900460ff16158015610707576009805460ff1961ff0019909116610100171660011790555b6001600160a01b038316610759576040805162461bcd60e51b815260206004820152601460248201527324b73b30b634b21029a7ab1020b2323932b9b99760611b604482015290519081900360640190fd5b61076283610ee2565b6107a9576040805162461bcd60e51b815260206004820152601360248201527217d4d3d5881b9bdd08184818dbdb9d1c9858dd606a1b604482015290519081900360640190fd5b600180546001600160a01b038086166001600160a01b0319928316179092556002805485841692169190911790819055604080516372ec979560e01b8152426004820152905191909216916372ec9795916024808301926020929190829003018186803b15801561081957600080fd5b505afa15801561082d573d6000803e3d6000fd5b505050506040513d602081101561084357600080fd5b5051600455610855630114db00610a4a565b61085d610bc8565b6008558015610872576009805461ff00191690555b505050565b6002546001600160a01b031681565b6009546201000090046001600160a01b031681565b6000806108a860016103e7565b909250905081158015906108bc5750600081115b6108ff576040805162461bcd60e51b815260206004820152600f60248201526e1b9bc81d985b1a59081c995dd85c99608a1b604482015290519081900360640190fd5b33600081815260066020526040902083905561091b9082610f1e565b5050565b60035481565b60045481565b60066020526000908152604090205481565b60085481565b6000546001600160a01b031690565b600080546001600160a01b0316610967611033565b6001600160a01b031614905090565b6212750081565b610985610952565b6109c5576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116610a20576040805162461bcd60e51b815260206004820152601c60248201527f626c6f636b206d6f636b7570206164647265737320696e76616c696400000000604482015290519081900360640190fd5b600980546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b610a52610952565b610a92576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600355565b60076020526000908152604090205481565b610ab1610952565b610af1576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610b3c57600080fd5b505afa158015610b50573d6000803e3d6000fd5b505050506040513d6020811015610b6657600080fd5b5051905061091b8282611037565b610b7c610952565b610bbc576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610bc581611182565b50565b6000600960029054906101000a90046001600160a01b03166001600160a01b0316637f6c6f106040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1857600080fd5b505afa158015610c2c573d6000803e3d6000fd5b505050506040513d6020811015610c4257600080fd5b5051905090565b600082820183811015610ca3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000610ca383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611222565b6000610ca383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112b9565b600254604080516337e6b1c160e01b81526001600160a01b0386811660048301526024820186905260448201859052915160009392909216916337e6b1c191606480820192602092909190829003018186803b158015610d8f57600080fd5b505afa158015610da3573d6000803e3d6000fd5b505050506040513d6020811015610db957600080fd5b50516005546bffffffffffffffffffffffff909116915015610e8257600254600554604080516337e6b1c160e01b81526001600160a01b038881166004830152602482019390935260448101869052905160009392909216916337e6b1c191606480820192602092909190829003018186803b158015610e3857600080fd5b505afa158015610e4c573d6000803e3d6000fd5b505050506040513d6020811015610e6257600080fd5b50516bffffffffffffffffffffffff16905081811015610e80578091505b505b9392505050565b600082610e9857506000610ca6565b82820282848281610ea557fe5b0414610ca35760405162461bcd60e51b81526004018080602001828103825260218152602001806113736021913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610f1657508115155b949350505050565b600154604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610f6857600080fd5b505afa158015610f7c573d6000803e3d6000fd5b505050506040513d6020811015610f9257600080fd5b50511015610fe7576040805162461bcd60e51b815260206004820152601f60248201527f6e6f7420656e6f7567682066756e647320746f20726577617264207573657200604482015290519081900360640190fd5b6001600160a01b038216600090815260076020526040902054611010908263ffffffff610c4916565b6001600160a01b03831660009081526007602052604090205561091b8282611037565b3390565b8061107a576040805162461bcd60e51b815260206004820152600e60248201526d185b5bdd5b9d081a5b9d985b1a5960921b604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156110d057600080fd5b505af11580156110e4573d6000803e3d6000fd5b505050506040513d60208110156110fa57600080fd5b505161113f576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6040805182815290516001600160a01b038416917f1d3eee4ca001cff39eec6ec7615aacf2f2bd61791273830728ba00ccbd6e1337919081900360200190a25050565b6001600160a01b0381166111c75760405162461bcd60e51b815260040180806020018281038252602681526020018061131f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081848411156112b15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561127657818101518382015260200161125e565b50505050905090810190601f1680156112a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836113085760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561127657818101518382015260200161125e565b50600083858161131457fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820d6e11dd95a1b33ca9379ef9db56207e7e38d1dbde7279ed1f3bf47cb0922a4a564736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78E97925 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0x934D1FA4 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0x934D1FA4 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0xA377F244 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xCF0F34C4 EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0xD42B779D EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xE62A9F1E EQ PUSH2 0x2F0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x316 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x78E97925 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x7A9262A2 EQ PUSH2 0x22D JUMPI DUP1 PUSH4 0x82100E3F EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x263 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x44BB3B2F GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x44BB3B2F EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x1D7 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x5004B6E4 EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0x54C5AEE1 EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0x6DB5C8FD EQ PUSH2 0x21D JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x7DA68F5 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x21F6BF2F EQ PUSH2 0x175 JUMPI DUP1 PUSH4 0x3410FE6E EQ PUSH2 0x1AD JUMPI DUP1 PUSH4 0x41910F90 EQ PUSH2 0x1C7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x33C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x159 PUSH2 0x3D8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x194 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B5 PUSH2 0x62D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B5 PUSH2 0x634 JUMP JUMPDEST PUSH2 0x1B5 PUSH2 0x63A JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x640 JUMP JUMPDEST PUSH2 0x159 PUSH2 0x877 JUMP JUMPDEST PUSH2 0x159 PUSH2 0x886 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x89B JUMP JUMPDEST PUSH2 0x1B5 PUSH2 0x91F JUMP JUMPDEST PUSH2 0x1B5 PUSH2 0x925 JUMP JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x92B JUMP JUMPDEST PUSH2 0x1B5 PUSH2 0x93D JUMP JUMPDEST PUSH2 0x159 PUSH2 0x943 JUMP JUMPDEST PUSH2 0x26B PUSH2 0x952 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B5 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x97D JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA4A JUMP JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA97 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x306 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAA9 JUMP JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB74 JUMP JUMPDEST PUSH2 0x344 PUSH2 0x952 JUMP JUMPDEST PUSH2 0x384 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD ISZERO PUSH2 0x3CB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x105B1C9958591E481CDD1BDC1C1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3D3 PUSH2 0xBC8 JUMP JUMPDEST PUSH1 0x5 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x1 PUSH2 0x3F7 PUSH2 0xBC8 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x2 SLOAD DUP3 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE TIMESTAMP PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP4 MLOAD SWAP9 SWAP1 SWAP8 SUB SWAP9 POP SWAP2 SWAP7 SWAP4 SWAP6 DUP7 SWAP6 DUP7 SWAP6 SWAP1 SWAP5 SWAP3 SWAP4 DUP7 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 PUSH4 0x72EC9795 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x464 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x478 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP2 PUSH2 0x49F JUMPI PUSH1 0x4 SLOAD PUSH2 0x4A1 JUMP JUMPDEST DUP2 JUMPDEST SWAP11 POP DUP11 DUP2 LT ISZERO PUSH2 0x4C1 JUMPI POP PUSH1 0x0 SWAP10 POP DUP10 SWAP9 POP PUSH2 0x628 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP12 ISZERO PUSH2 0x56A JUMPI PUSH1 0x3 SLOAD PUSH2 0x4DB SWAP1 DUP13 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC49 AND JUMP JUMPDEST SWAP6 POP DUP7 DUP7 LT PUSH2 0x4EA JUMPI DUP1 PUSH2 0x563 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x72EC9795 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x54A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP5 POP PUSH2 0x56E JUMP JUMPDEST DUP1 SWAP5 POP JUMPDEST DUP11 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x5E2 JUMPI PUSH2 0x5A9 PUSH2 0x59C PUSH1 0x20 PUSH2 0x590 DUP12 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xCAC AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xCEE AND JUMP JUMPDEST DUP11 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xCAC AND JUMP JUMPDEST SWAP5 POP PUSH1 0x8 SLOAD DUP6 LT ISZERO PUSH2 0x5BB JUMPI PUSH1 0x8 SLOAD SWAP5 POP JUMPDEST PUSH2 0x5D6 PUSH2 0x5C9 DUP6 DUP8 DUP5 PUSH2 0xD30 JUMP JUMPDEST DUP12 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC49 AND JUMP JUMPDEST SWAP10 POP PUSH3 0x127500 ADD PUSH2 0x570 JUMP JUMPDEST POP DUP9 PUSH2 0x5FE JUMPI POP PUSH1 0x0 SWAP10 POP DUP10 SWAP9 POP PUSH2 0x628 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP4 SWAP10 POP DUP10 SWAP4 PUSH2 0x61C PUSH3 0x27AC40 PUSH2 0x590 DUP12 PUSH2 0xB9F PUSH4 0xFFFFFFFF PUSH2 0xE89 AND JUMP JUMPDEST SWAP10 POP POP POP POP POP POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH3 0x27AC40 DUP2 JUMP JUMPDEST PUSH2 0xB9F DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x648 PUSH2 0x952 JUMP JUMPDEST PUSH2 0x688 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x6A1 JUMPI POP PUSH1 0x9 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x6DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1345 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x707 JUMPI PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x759 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x24B73B30B634B21029A7AB1020B2323932B9B997 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x762 DUP4 PUSH2 0xEE2 JUMP JUMPDEST PUSH2 0x7A9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x17D4D3D5881B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP1 SLOAD DUP6 DUP5 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE TIMESTAMP PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x72EC9795 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x819 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x82D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x843 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SSTORE PUSH2 0x855 PUSH4 0x114DB00 PUSH2 0xA4A JUMP JUMPDEST PUSH2 0x85D PUSH2 0xBC8 JUMP JUMPDEST PUSH1 0x8 SSTORE DUP1 ISZERO PUSH2 0x872 JUMPI PUSH1 0x9 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8A8 PUSH1 0x1 PUSH2 0x3E7 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x8BC JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x8FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1B9BC81D985B1A59081C995DD85C99 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE PUSH2 0x91B SWAP1 DUP3 PUSH2 0xF1E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x967 PUSH2 0x1033 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST PUSH2 0x985 PUSH2 0x952 JUMP JUMPDEST PUSH2 0x9C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xA20 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x626C6F636B206D6F636B7570206164647265737320696E76616C696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xA52 PUSH2 0x952 JUMP JUMPDEST PUSH2 0xA92 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xAB1 PUSH2 0x952 JUMP JUMPDEST PUSH2 0xAF1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB50 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x91B DUP3 DUP3 PUSH2 0x1037 JUMP JUMPDEST PUSH2 0xB7C PUSH2 0x952 JUMP JUMPDEST PUSH2 0xBBC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xBC5 DUP2 PUSH2 0x1182 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7F6C6F10 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xCA3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCA3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1222 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCA3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x12B9 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x37E6B1C1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x37E6B1C1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x5 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP ISZERO PUSH2 0xE82 JUMPI PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x37E6B1C1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x37E6B1C1 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xE80 JUMPI DUP1 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xE98 JUMPI POP PUSH1 0x0 PUSH2 0xCA6 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xEA5 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xCA3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1373 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0xF16 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF7C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0xFE7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F7420656E6F7567682066756E647320746F20726577617264207573657200 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1010 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC49 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x91B DUP3 DUP3 PUSH2 0x1037 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x107A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x113F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1D1C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0x1D3EEE4CA001CFF39EEC6EC7615AACF2F2BD61791273830728BA00CCBD6E1337 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x11C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x131F PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x12B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1276 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x125E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x12A3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1308 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1276 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x125E JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1314 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373496E697469616C697A61626C653A2063 PUSH16 0x6E747261637420697320616C72656164 PUSH26 0x20696E697469616C697A6564536166654D6174683A206D756C74 PUSH10 0x706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72315820 0xD6 0xE1 SAR 0xD9 GAS SHL CALLER 0xCA SWAP4 PUSH26 0xEF9DB56207E7E38D1DBDE7279ED1F3BF47CB0922A4A564736F6C PUSH4 0x43000511 STOP ORIGIN ",
              "sourceMap": "201:634:116:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;201:634:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2030:125:61;;;:::i;:::-;;697:17:63;;;:::i;:::-;;;;-1:-1:-1;;;;;697:17:63;;;;;;;;;;;;;;5744:1332:61;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5744:1332:61;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1102:41:63;;;:::i;:::-;;;;;;;;;;;;;;;;941:40;;;:::i;1404:24::-;;;:::i;1414:387:61:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1414:387:61;;;;;;;;;;:::i;765:23:63:-;;;:::i;291:30:116:-;;;:::i;3075:283:61:-;;;:::i;1206:26:63:-;;;:::i;1299:24::-;;;:::i;1486:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1486:46:63;-1:-1:-1;;;;;1486:46:63;;:::i;1711:30::-;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;825:43:63;;;:::i;463:185:116:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;463:185:116;-1:-1:-1;;;;;463:185:116;;:::i;2610:91:61:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2610:91:61;;:::i;1581:50:63:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1581:50:63;-1:-1:-1;;;;;1581:50:63;;:::i;4811:169:61:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4811:169:61;-1:-1:-1;;;;;4811:169:61;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;2030:125:61:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;2077:9:61;;:14;2069:42;;;;;-1:-1:-1;;;2069:42:61;;;;;;;;;;;;-1:-1:-1;;;2069:42:61;;;;;;;;;;;;;;;2127:24;:22;:24::i;:::-;2115:9;:36;2030:125::o;697:17:63:-;;;-1:-1:-1;;;;;697:17:63;;:::o;5744:1332:61:-;5823:30;5855:14;5875:21;5900:26;5956:1;5929:24;:22;:24::i;:::-;6091:10;5961:17;6130:19;;;:11;:19;;;;;;;;;6184:7;;:38;;-1:-1:-1;;;6184:38:61;;5981:15;6184:38;;;;;;;;5929:28;;;;;-1:-1:-1;5981:15:61;;5961:17;;;;;;6091:10;;6130:19;;5961:17;;-1:-1:-1;;;;;6184:7:61;;;;:27;;:38;;;;;6130:19;6184:38;;;;;:7;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;6184:38:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6184:38:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6184:38:61;;-1:-1:-1;6251:18:61;:47;;6289:9;;6251:47;;;6272:14;6251:47;6226:72;;6328:22;6306:19;:44;6302:63;;;-1:-1:-1;6360:1:61;;-1:-1:-1;6360:1:61;;-1:-1:-1;6352:13:61;;-1:-1:-1;;;;;;;;6352:13:61;6302:63;6374:19;6370:253;;;6446:11;;6419:39;;:22;;:39;:26;:39;:::i;:::-;6400:58;;6493:9;6474:16;:28;:98;;6553:19;6474:98;;;6505:7;;:45;;;-1:-1:-1;;;6505:45:61;;;;;;;;;;-1:-1:-1;;;;;6505:7:61;;;;:27;;:45;;;;;;;;;;;;;;;:7;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;6505:45:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6505:45:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6505:45:61;6474:98;6463:109;;6370:253;;;6599:19;6588:30;;6370:253;6644:22;6627:313;6672:8;6668:1;:12;6627:313;;;6720:52;6744:26;6767:2;6745:16;:9;6759:1;6745:16;:13;:16;:::i;:::-;6744:22;:26;:22;:26;:::i;:::-;6720:18;;:52;:22;:52;:::i;:::-;6703:69;;6798:15;;6781:14;:32;6777:70;;;6832:15;;6815:32;;6777:70;6868:67;6886:48;6908:6;6916:14;6932:1;6886:21;:48::i;:::-;6868:13;;:67;:17;:67;:::i;:::-;6852:83;-1:-1:-1;861:7:63;6682:14:61;6627:313;;;-1:-1:-1;6948:18:61;6944:37;;-1:-1:-1;6976:1:61;;-1:-1:-1;6976:1:61;;-1:-1:-1;6968:13:61;;-1:-1:-1;;;;;;;;6968:13:61;6944:37;7010:8;;-1:-1:-1;7010:8:61;;7031:41;1136:7:63;7031:28:61;:13;977:4:63;7031:28:61;:17;:28;:::i;:41::-;7022:50;;5744:1332;;;;;;;;;;;;;:::o;1102:41:63:-;1136:7;1102:41;:::o;941:40::-;977:4;941:40;:::o;1404:24::-;;;;:::o;1414:387:61:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1333:13:141;;;;;;;;:30;;-1:-1:-1;1351:12:141;;;;1350:13;1333:30;1325:89;;;;-1:-1:-1;;;1325:89:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1442:13;;;;;;;1441:14;1459:74;;;;1484:13;:20;;-1:-1:-1;;;;1484:20:141;;;;;1509:19;1500:4;1509:19;;;1459:74;-1:-1:-1;;;;;1510:18:61;;1502:51;;;;;-1:-1:-1;;;1502:51:61;;;;;;;;;;;;-1:-1:-1;;;1502:51:61;;;;;;;;;;;;;;;1565:24;1584:4;1565:18;:24::i;:::-;1557:56;;;;;-1:-1:-1;;;1557:56:61;;;;;;;;;;;;-1:-1:-1;;;1557:56:61;;;;;;;;;;;;;;;1617:3;:18;;-1:-1:-1;;;;;1617:18:61;;;-1:-1:-1;;;;;;1617:18:61;;;;;;;1639:7;:18;;;;;;;;;;;;;;;1673:44;;;-1:-1:-1;;;1673:44:61;;1701:15;1673:44;;;;;;:7;;;;;:27;;:44;;;;;;;;;;;;;;:7;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;1673:44:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1673:44:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1673:44:61;1661:9;:56;1721:30;1736:14;1721;:30::i;:::-;1773:24;:22;:24::i;:::-;1755:15;:42;1543:51:141;;;;1568:13;:21;;-1:-1:-1;;1568:21:141;;;1543:51;1058:1:142;1414:387:61;;:::o;765:23:63:-;;;-1:-1:-1;;;;;765:23:63;;:::o;291:30:116:-;;;;;;-1:-1:-1;;;;;291:30:116;;:::o;3075:283:61:-;3113:22;3139:14;3184:28;3207:4;3184:22;:28::i;:::-;3157:55;;-1:-1:-1;3157:55:61;-1:-1:-1;3224:18:61;;;;;:32;;;3255:1;3246:6;:10;3224:32;3216:60;;;;;-1:-1:-1;;;3216:60:61;;;;;;;;;;;;-1:-1:-1;;;3216:60:61;;;;;;;;;;;;;;;3292:10;3280:23;;;;:11;:23;;;;;:40;;;3324:30;;3347:6;3324:10;:30::i;:::-;3075:283;;:::o;1206:26:63:-;;;;:::o;1299:24::-;;;;:::o;1486:46::-;;;;;;;;;;;;;:::o;1711:30::-;;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;825:43:63:-;861:7;825:43;:::o;463:185:116:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:26:116;;534:67;;;;;-1:-1:-1;;;534:67:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;605:11;:39;;-1:-1:-1;;;;;605:39:116;;;;;-1:-1:-1;;;;;;605:39:116;;;;;;;;;463:185::o;2610:91:61:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;2674:11:61;:23;2610:91::o;1581:50:63:-;;;;;;;;;;;;;:::o;4811:169:61:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;4907:3:61;;:28;;;-1:-1:-1;;;4907:28:61;;4929:4;4907:28;;;;;;4891:13;;-1:-1:-1;;;;;4907:3:61;;:13;;:28;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;4907:28:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4907:28:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4907:28:61;;-1:-1:-1;4939:37:61;4952:16;4907:28;4939:12;:37::i;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;727:106:116:-;784:7;804:11;;;;;;;;;-1:-1:-1;;;;;804:11:116;-1:-1:-1;;;;;804:23:116;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;804:25:116;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;804:25:116;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;804:25:116;;-1:-1:-1;727:106:116;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;-1:-1:-1;812:155:145;;;;;:::o;1201:125::-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;2817:121::-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;3735:427:61:-;3889:7;;:53;;;-1:-1:-1;;;3889:53:61;;-1:-1:-1;;;;;3889:53:61;;;;;;;;;;;;;;;;;;;;;3846:21;;3889:7;;;;;:29;;:53;;;;;;;;;;;;;;;:7;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;3889:53:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3889:53:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3889:53:61;3950:9;;3873:69;;;;;-1:-1:-1;3950:13:61;3946:213;;4002:7;;4041:9;;4002:56;;;-1:-1:-1;;;4002:56:61;;-1:-1:-1;;;;;4002:56:61;;;;;;;;;;;;;;;;;;;;;;3970:29;;4002:7;;;;;:29;;:56;;;;;;;;;;;;;;;:7;:56;;;5:2:-1;;;;30:1;27;20:12;5:2;4002:56:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4002:56:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4002:56:61;3970:88;;;-1:-1:-1;4067:37:61;;;4063:92;;;4128:21;4112:37;;4063:92;3946:213;;3735:427;;;;;:::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;639:564:136;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;4403:252:61:-;4477:3;;:28;;;-1:-1:-1;;;4477:28:61;;4499:4;4477:28;;;;;;4509:6;;-1:-1:-1;;;;;4477:3:61;;:13;;:28;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;4477:28:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4477:28:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4477:28:61;:38;;4469:82;;;;;-1:-1:-1;;;4469:82:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4582:24:61;;;;;;:15;:24;;;;;;:36;;4611:6;4582:36;:28;:36;:::i;:::-;-1:-1:-1;;;;;4555:24:61;;;;;;:15;:24;;;;;:63;4622:29;4571:7;4644:6;4622:12;:29::i;780:87:137:-;853:10;780:87;:::o;5144:222:61:-;5223:12;5215:39;;;;;-1:-1:-1;;;5215:39:61;;;;;;;;;;;;-1:-1:-1;;;5215:39:61;;;;;;;;;;;;;;;5266:3;;:32;;;-1:-1:-1;;;5266:32:61;;-1:-1:-1;;;;;5266:32:61;;;;;;;;;;;;;;;:3;;;;;:12;;:32;;;;;;;;;;;;;;:3;;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;5266:32:61;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5266:32:61;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5266:32:61;5258:60;;;;;-1:-1:-1;;;5258:60:61;;;;;;;;;;;;-1:-1:-1;;;5258:60:61;;;;;;;;;;;;;;;5327:35;;;;;;;;-1:-1:-1;;;;;5327:35:61;;;;;;;;;;;;;5144:222;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;3411:315::-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3579:29:145;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o"
            },
            "methodIdentifiers": {
              "BASE_RATE()": "41910f90",
              "DIVISOR()": "3410fe6e",
              "SOV()": "08dcb360",
              "TWO_WEEKS()": "934d1fa4",
              "blockMockUp()": "5004b6e4",
              "claimedBalances(address)": "d42b779d",
              "collectReward()": "54c5aee1",
              "deploymentBlock()": "82100e3f",
              "getStakerCurrentReward(bool)": "21f6bf2f",
              "initialize(address,address)": "485cc955",
              "isOwner()": "8f32d59b",
              "maxDuration()": "6db5c8fd",
              "owner()": "8da5cb5b",
              "setBlockMockUpAddr(address)": "a377f244",
              "setMaxDuration(uint256)": "cf0f34c4",
              "staking()": "4cf088d9",
              "startTime()": "78e97925",
              "stop()": "07da68f5",
              "stopBlock()": "44bb3b2f",
              "transferOwnership(address)": "f2fde38b",
              "withdrawTokensByOwner(address)": "e62a9f1e",
              "withdrawals(address)": "7a9262a2"
            }
          },
          "userdoc": {
            "methods": {
              "collectReward()": {
                "notice": "Collect rewards"
              },
              "getStakerCurrentReward(bool)": {
                "notice": "Get staker's current accumulated reward"
              },
              "initialize(address,address)": {
                "notice": "Replacement of constructor by initialize function for Upgradable Contracts This function will be called only once by the owner."
              },
              "setBlockMockUpAddr(address)": {
                "notice": "gets block number from BlockMockUp"
              },
              "setMaxDuration(uint256)": {
                "notice": "Sets the max duration"
              },
              "stop()": {
                "notice": "Stops the current rewards program."
              },
              "withdrawTokensByOwner(address)": {
                "notice": "Withdraws all token from the contract by Multisig."
              }
            },
            "notice": "This is used for Testing"
          }
        }
      },
      "contracts/mockup/TimelockHarness.sol": {
        "Administered": {
          "abi": [
            {
              "constant": false,
              "inputs": [],
              "name": "_acceptAdmin",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "_acceptAdmin()": "e9c714f2"
            }
          },
          "userdoc": {
            "methods": {}
          }
        },
        "TimelockHarness": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "admin_",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "delay_",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "txHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "CancelTransaction",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "txHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "ExecuteTransaction",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "NewAdmin",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "newDelay",
                  "type": "uint256"
                }
              ],
              "name": "NewDelay",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newPendingAdmin",
                  "type": "address"
                }
              ],
              "name": "NewPendingAdmin",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "txHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "QueueTransaction",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "GRACE_PERIOD",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAXIMUM_DELAY",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MINIMUM_DELAY",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "acceptAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "cancelTransaction",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "delay",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "executeTransaction",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "admin_",
                  "type": "address"
                }
              ],
              "name": "harnessSetAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pendingAdmin_",
                  "type": "address"
                }
              ],
              "name": "harnessSetPendingAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pendingAdmin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "queueTransaction",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "queuedTransactions",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "delay_",
                  "type": "uint256"
                }
              ],
              "name": "setDelay",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "delay_",
                  "type": "uint256"
                }
              ],
              "name": "setDelayWithoutChecking",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pendingAdmin_",
                  "type": "address"
                }
              ],
              "name": "setPendingAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "cancelTransaction(address,uint256,string,bytes,uint256)": {
                "params": {
                  "data": "The ethereum transaction input data payload.",
                  "eta": "Estimated Time of Accomplishment. The timestamp that the proposal will be available for execution, set once the vote succeeds.",
                  "signature": "The stanndard representation of the function called.",
                  "target": "The contract to call.",
                  "value": "The amount to send in the transaction."
                }
              },
              "executeTransaction(address,uint256,string,bytes,uint256)": {
                "params": {
                  "data": "The ethereum transaction input data payload.",
                  "eta": "Estimated Time of Accomplishment. The timestamp that the proposal will be available for execution, set once the vote succeeds.",
                  "signature": "The stanndard representation of the function called.",
                  "target": "The contract to call.",
                  "value": "The amount to send in the transaction."
                }
              },
              "queueTransaction(address,uint256,string,bytes,uint256)": {
                "params": {
                  "data": "The ethereum transaction input data payload.",
                  "eta": "Estimated Time of Accomplishment. The timestamp that the proposal will be available for execution, set once the vote succeeds.",
                  "signature": "The stanndard representation of the function called.",
                  "target": "The contract to call.",
                  "value": "The amount to send in the transaction."
                }
              },
              "setDelay(uint256)": {
                "params": {
                  "delay_": "The amount of time to wait until execution."
                }
              },
              "setPendingAdmin(address)": {
                "params": {
                  "pendingAdmin_": "The new pending admin address."
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50604051611b72380380611b728339818101604052604081101561003357600080fd5b5080516020909101518181612a3081101561007f5760405162461bcd60e51b8152600401808060200182810382526037815260200180611b036037913960400191505060405180910390fd5b62278d008111156100c15760405162461bcd60e51b8152600401808060200182810382526038815260200180611b3a6038913960400191505060405180910390fd5b600080546001600160a01b039093166001600160a01b0319909316929092179091556002555050611a0c806100f76000396000f3fe6080604052600436106100f35760003560e01c806372b812b41161008a578063c1a287e211610059578063c1a287e21461069e578063e177246e146106b3578063f2b06537146106dd578063f851a4401461071b576100f3565b806372b812b41461060e5780637d645fab146106415780639ddf774f14610656578063b1b43ae514610689576100f3565b80633a66f901116100c65780633a66f9011461031a5780634dd18bf514610479578063591fcdfe146104ac5780636a42b8f8146105f9576100f3565b80630825f38f146100f55780630e18b681146102aa5780631668dfc3146102bf57806326782247146102e9575b005b610235600480360360a081101561010b57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561013a57600080fd5b82018360208201111561014c57600080fd5b803590602001918460018302840111600160201b8311171561016d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156101bf57600080fd5b8201836020820111156101d157600080fd5b803590602001918460018302840111600160201b831117156101f257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610730915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026f578181015183820152602001610257565b50505050905090810190601f16801561029c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102b657600080fd5b506100f3610d15565b3480156102cb57600080fd5b506100f3600480360360208110156102e257600080fd5b5035610db1565b3480156102f557600080fd5b506102fe610de4565b604080516001600160a01b039092168252519081900360200190f35b34801561032657600080fd5b50610467600480360360a081101561033d57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561036c57600080fd5b82018360208201111561037e57600080fd5b803590602001918460018302840111600160201b8311171561039f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156103f157600080fd5b82018360208201111561040357600080fd5b803590602001918460018302840111600160201b8311171561042457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610df3915050565b60408051918252519081900360200190f35b34801561048557600080fd5b506100f36004803603602081101561049c57600080fd5b50356001600160a01b0316611104565b3480156104b857600080fd5b506100f3600480360360a08110156104cf57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104fe57600080fd5b82018360208201111561051057600080fd5b803590602001918460018302840111600160201b8311171561053157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561058357600080fd5b82018360208201111561059557600080fd5b803590602001918460018302840111600160201b831117156105b657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611192915050565b34801561060557600080fd5b50610467611448565b34801561061a57600080fd5b506100f36004803603602081101561063157600080fd5b50356001600160a01b031661144e565b34801561064d57600080fd5b50610467611470565b34801561066257600080fd5b506100f36004803603602081101561067957600080fd5b50356001600160a01b0316611477565b34801561069557600080fd5b50610467611499565b3480156106aa57600080fd5b5061046761149f565b3480156106bf57600080fd5b506100f3600480360360208110156106d657600080fd5b50356114a6565b3480156106e957600080fd5b506107076004803603602081101561070057600080fd5b5035611567565b604080519115158252519081900360200190f35b34801561072757600080fd5b506102fe61157c565b6000546060906001600160a01b0316331461077c5760405162461bcd60e51b81526004018080602001828103825260388152602001806116eb6038913960400191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107eb5781810151838201526020016107d3565b50505050905090810190601f1680156108185780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561084b578181015183820152602001610833565b50505050905090810190601f1680156108785780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301206000818152600390935291205490995060ff1697506108e996505050505050505760405162461bcd60e51b815260040180806020018281038252603d81526020018061183e603d913960400191505060405180910390fd5b826108f261158b565b101561092f5760405162461bcd60e51b815260040180806020018281038252604581526020018061178d6045913960600191505060405180910390fd5b610942836212750063ffffffff61158f16565b61094a61158b565b11156109875760405162461bcd60e51b815260040180806020018281038252603381526020018061175a6033913960400191505060405180910390fd5b6000818152600360205260409020805460ff1916905584516060906109ad575083610a3a565b85805190602001208560405160200180836001600160e01b0319166001600160e01b031916815260040182805190602001908083835b60208310610a025780518252601f1990920191602091820191016109e3565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b60006060896001600160a01b031689846040518082805190602001908083835b60208310610a795780518252601f199092019160209182019101610a5a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610adb576040519150601f19603f3d011682016040523d82523d6000602084013e610ae0565b606091505b509150915081610bed576044815111610b2a5760405162461bcd60e51b815260040180806020018281038252603d815260200180611921603d913960400191505060405180910390fd5b610b696040518060400160405280601e81526020017f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a200000815250826115f0565b60405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bb2578181015183820152602001610b9a565b50505050905090810190601f168015610bdf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c6a578181015183820152602001610c52565b50505050905090810190601f168015610c975780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610cca578181015183820152602001610cb2565b50505050905090810190601f168015610cf75780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b6001546001600160a01b03163314610d5e5760405162461bcd60e51b815260040180806020018281038252603881526020018061187b6038913960400191505060405180910390fd5b60008054336001600160a01b031991821617808355600180549092169091556040516001600160a01b03909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b6001546001600160a01b031681565b600080546001600160a01b03163314610e3d5760405162461bcd60e51b81526004018080602001828103825260368152602001806118eb6036913960400191505060405180910390fd5b610e57600254610e4b61158b565b9063ffffffff61158f16565b821015610e955760405162461bcd60e51b815260040180806020018281038252604981526020018061195e6049913960600191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610f04578181015183820152602001610eec565b50505050905090810190601f168015610f315780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610f64578181015183820152602001610f4c565b50505050905090810190601f168015610f915780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550866001600160a01b0316817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561105c578181015183820152602001611044565b50505050905090810190601f1680156110895780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156110bc5781810151838201526020016110a4565b50505050905090810190601f1680156110e95780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b3330146111425760405162461bcd60e51b81526004018080602001828103825260388152602001806118b36038913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b6000546001600160a01b031633146111db5760405162461bcd60e51b81526004018080602001828103825260378152602001806117236037913960400191505060405180910390fd5b6000858585858560405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561124a578181015183820152602001611232565b50505050905090810190601f1680156112775780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156112aa578181015183820152602001611292565b50505050905090810190601f1680156112d75780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550856001600160a01b0316817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156113a257818101518382015260200161138a565b50505050905090810190601f1680156113cf5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156114025781810151838201526020016113ea565b50505050905090810190601f16801561142f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b62278d0081565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b612a3081565b6212750081565b3330146114e45760405162461bcd60e51b81526004018080602001828103825260318152602001806119a76031913960400191505060405180910390fd5b612a308110156115255760405162461bcd60e51b81526004018080602001828103825260348152602001806117d26034913960400191505060405180910390fd5b62278d00811115610db15760405162461bcd60e51b81526004018080602001828103825260388152602001806118066038913960400191505060405180910390fd5b60036020526000908152604090205460ff1681565b6000546001600160a01b031681565b4290565b6000828201838110156115e9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6060808390506060839050606060448251845101036040519080825280601f01601f19166020018201604052801561162f576020820181803883390190505b509050806000805b85518110156116885785818151811061164c57fe5b602001015160f81c60f81b83838060010194508151811061166957fe5b60200101906001600160f81b031916908160001a905350600101611637565b5060445b84518110156116dd578481815181106116a157fe5b602001015160f81c60f81b8383806001019450815181106116be57fe5b60200101906001600160f81b031916908160001a90535060010161168c565b509097965050505050505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a7231582098bd6b1a416b461ade7c042735caa55f0f176d2b9b7b92d41f320c11a8384de064736f6c6343000511003254696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1B72 CODESIZE SUB DUP1 PUSH2 0x1B72 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD DUP2 DUP2 PUSH2 0x2A30 DUP2 LT ISZERO PUSH2 0x7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B03 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0xC1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B3A PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SSTORE POP POP PUSH2 0x1A0C DUP1 PUSH2 0xF7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x72B812B4 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC1A287E2 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x69E JUMPI DUP1 PUSH4 0xE177246E EQ PUSH2 0x6B3 JUMPI DUP1 PUSH4 0xF2B06537 EQ PUSH2 0x6DD JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x71B JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x72B812B4 EQ PUSH2 0x60E JUMPI DUP1 PUSH4 0x7D645FAB EQ PUSH2 0x641 JUMPI DUP1 PUSH4 0x9DDF774F EQ PUSH2 0x656 JUMPI DUP1 PUSH4 0xB1B43AE5 EQ PUSH2 0x689 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x3A66F901 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3A66F901 EQ PUSH2 0x31A JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0x479 JUMPI DUP1 PUSH4 0x591FCDFE EQ PUSH2 0x4AC JUMPI DUP1 PUSH4 0x6A42B8F8 EQ PUSH2 0x5F9 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x825F38F EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0xE18B681 EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0x1668DFC3 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x2E9 JUMPI JUMPDEST STOP JUMPDEST PUSH2 0x235 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x730 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x257 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x29C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH2 0xD15 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xDB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FE PUSH2 0xDE4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x467 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xDF3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1104 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x1192 SWAP2 POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x467 PUSH2 0x1448 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x144E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x467 PUSH2 0x1470 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1477 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x467 PUSH2 0x1499 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x467 PUSH2 0x149F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x14A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x707 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1567 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FE PUSH2 0x157C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x77C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16EB PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7EB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x818 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x84B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x833 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x878 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP10 POP PUSH1 0xFF AND SWAP8 POP PUSH2 0x8E9 SWAP7 POP POP POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x183E PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x8F2 PUSH2 0x158B JUMP JUMPDEST LT ISZERO PUSH2 0x92F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x178D PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x942 DUP4 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x158F AND JUMP JUMPDEST PUSH2 0x94A PUSH2 0x158B JUMP JUMPDEST GT ISZERO PUSH2 0x987 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x175A PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP5 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x9AD JUMPI POP DUP4 PUSH2 0xA3A JUMP JUMPDEST DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x4 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA02 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x9E3 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA79 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA5A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xADB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xBED JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0xB2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1921 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB69 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x54696D656C6F636B3A3A657865637574655472616E73616374696F6E3A200000 DUP2 MSTORE POP DUP3 PUSH2 0x15F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBB2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB9A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xBDF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0xA560E3198060A2F10670C1EC5B403077EA6AE93CA8DE1C32B451DC1A943CD6E7 DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC6A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC52 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC97 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCCA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCB2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xCF7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x187B PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP1 DUP4 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH32 0x71614071B88DEE5E0B2AE578A9DD7B2EBBE9AE832BA419DC0242CD065A290B6C SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x948B1F6A42EE138B7E34058BA85A37F716D55FF25FF05A763F15BED6A04C8D2C SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE3D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18EB PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE57 PUSH1 0x2 SLOAD PUSH2 0xE4B PUSH2 0x158B JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x158F AND JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xE95 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x49 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x195E PUSH1 0x49 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF04 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEEC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF31 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF64 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF4C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF91 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x76E2796DC3A81D57B0E8504B647FEBCBEEB5F4AF818E164F11EEF8131A6A763F DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x105C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1044 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1089 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10BC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10A4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x10E9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x1142 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18B3 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 PUSH32 0x69D78E38A01985FBB1462961809B4B2D65531BC93B2B94037F3334B82CA4A756 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x11DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1723 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x124A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1232 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1277 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12AA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1292 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x12D7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x2FFFC091A501FD91BFBFF27141450D3ACB40FB8E6D8382B243EC7A812A3AAF87 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13A2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x138A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13CF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1402 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x13EA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x142F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x278D00 DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2A30 DUP2 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x14E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19A7 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A30 DUP2 LT ISZERO PUSH2 0x1525 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17D2 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0xDB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1806 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x15E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x162F JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x1688 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x164C JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1669 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1637 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x16DD JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x16A1 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x16BE JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x168C JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID SLOAD PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A2043616C6C206D PUSH22 0x737420636F6D652066726F6D2061646D696E2E54696D PUSH6 0x6C6F636B3A3A PUSH4 0x616E6365 PUSH13 0x5472616E73616374696F6E3A20 NUMBER PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH6 0x786563757465 SLOAD PUSH19 0x616E73616374696F6E3A205472616E73616374 PUSH10 0x6F6E206973207374616C PUSH6 0x2E54696D656C PUSH16 0x636B3A3A657865637574655472616E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420737572 PUSH17 0x61737365642074696D65206C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D75737420657863 PUSH6 0x6564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420626565 PUSH15 0x207175657565642E54696D656C6F63 PUSH12 0x3A3A61636365707441646D69 PUSH15 0x3A2043616C6C206D75737420636F6D PUSH6 0x2066726F6D20 PUSH17 0x656E64696E6741646D696E2E54696D656C PUSH16 0x636B3A3A73657450656E64696E674164 PUSH14 0x696E3A2043616C6C206D75737420 PUSH4 0x6F6D6520 PUSH7 0x726F6D2054696D PUSH6 0x6C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7175 PUSH6 0x75655472616E PUSH20 0x616374696F6E3A2043616C6C206D75737420636F PUSH14 0x652066726F6D2061646D696E2E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH6 0x786563757469 PUSH16 0x6E2072657665727465642E54696D656C PUSH16 0x636B3A3A71756575655472616E736163 PUSH21 0x696F6E3A20457374696D6174656420657865637574 PUSH10 0x6F6E20626C6F636B206D PUSH22 0x737420736174697366792064656C61792E54696D656C PUSH16 0x636B3A3A73657444656C61793A204361 PUSH13 0x6C206D75737420636F6D652066 PUSH19 0x6F6D2054696D656C6F636B2EA265627A7A7231 PC KECCAK256 SWAP9 0xBD PUSH12 0x1A416B461ADE7C042735CAA5 0x5F 0xF OR PUSH14 0x2B9B7B92D41F320C11A8384DE064 PUSH20 0x6F6C6343000511003254696D656C6F636B3A3A63 PUSH16 0x6E7374727563746F723A2044656C6179 KECCAK256 PUSH14 0x75737420657863656564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E00 ",
              "sourceMap": "145:400:117:-;;;185:78;8:9:-1;5:2;;;30:1;27;20:12;5:2;185:78:117;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;185:78:117;;;;;;;;;2535:7:64;3528:23;;;3520:91;;;;-1:-1:-1;;;3520:91:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2585:7;3623:6;:23;;3615:92;;;;-1:-1:-1;;;3615:92:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3712:5;:14;;-1:-1:-1;;;;;3712:14:64;;;-1:-1:-1;;;;;;3712:14:64;;;;;;;;;;3730:5;:14;-1:-1:-1;;145:400:117;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106100f35760003560e01c806372b812b41161008a578063c1a287e211610059578063c1a287e21461069e578063e177246e146106b3578063f2b06537146106dd578063f851a4401461071b576100f3565b806372b812b41461060e5780637d645fab146106415780639ddf774f14610656578063b1b43ae514610689576100f3565b80633a66f901116100c65780633a66f9011461031a5780634dd18bf514610479578063591fcdfe146104ac5780636a42b8f8146105f9576100f3565b80630825f38f146100f55780630e18b681146102aa5780631668dfc3146102bf57806326782247146102e9575b005b610235600480360360a081101561010b57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561013a57600080fd5b82018360208201111561014c57600080fd5b803590602001918460018302840111600160201b8311171561016d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156101bf57600080fd5b8201836020820111156101d157600080fd5b803590602001918460018302840111600160201b831117156101f257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610730915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026f578181015183820152602001610257565b50505050905090810190601f16801561029c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102b657600080fd5b506100f3610d15565b3480156102cb57600080fd5b506100f3600480360360208110156102e257600080fd5b5035610db1565b3480156102f557600080fd5b506102fe610de4565b604080516001600160a01b039092168252519081900360200190f35b34801561032657600080fd5b50610467600480360360a081101561033d57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561036c57600080fd5b82018360208201111561037e57600080fd5b803590602001918460018302840111600160201b8311171561039f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156103f157600080fd5b82018360208201111561040357600080fd5b803590602001918460018302840111600160201b8311171561042457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610df3915050565b60408051918252519081900360200190f35b34801561048557600080fd5b506100f36004803603602081101561049c57600080fd5b50356001600160a01b0316611104565b3480156104b857600080fd5b506100f3600480360360a08110156104cf57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104fe57600080fd5b82018360208201111561051057600080fd5b803590602001918460018302840111600160201b8311171561053157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561058357600080fd5b82018360208201111561059557600080fd5b803590602001918460018302840111600160201b831117156105b657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250611192915050565b34801561060557600080fd5b50610467611448565b34801561061a57600080fd5b506100f36004803603602081101561063157600080fd5b50356001600160a01b031661144e565b34801561064d57600080fd5b50610467611470565b34801561066257600080fd5b506100f36004803603602081101561067957600080fd5b50356001600160a01b0316611477565b34801561069557600080fd5b50610467611499565b3480156106aa57600080fd5b5061046761149f565b3480156106bf57600080fd5b506100f3600480360360208110156106d657600080fd5b50356114a6565b3480156106e957600080fd5b506107076004803603602081101561070057600080fd5b5035611567565b604080519115158252519081900360200190f35b34801561072757600080fd5b506102fe61157c565b6000546060906001600160a01b0316331461077c5760405162461bcd60e51b81526004018080602001828103825260388152602001806116eb6038913960400191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107eb5781810151838201526020016107d3565b50505050905090810190601f1680156108185780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561084b578181015183820152602001610833565b50505050905090810190601f1680156108785780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301206000818152600390935291205490995060ff1697506108e996505050505050505760405162461bcd60e51b815260040180806020018281038252603d81526020018061183e603d913960400191505060405180910390fd5b826108f261158b565b101561092f5760405162461bcd60e51b815260040180806020018281038252604581526020018061178d6045913960600191505060405180910390fd5b610942836212750063ffffffff61158f16565b61094a61158b565b11156109875760405162461bcd60e51b815260040180806020018281038252603381526020018061175a6033913960400191505060405180910390fd5b6000818152600360205260409020805460ff1916905584516060906109ad575083610a3a565b85805190602001208560405160200180836001600160e01b0319166001600160e01b031916815260040182805190602001908083835b60208310610a025780518252601f1990920191602091820191016109e3565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b60006060896001600160a01b031689846040518082805190602001908083835b60208310610a795780518252601f199092019160209182019101610a5a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610adb576040519150601f19603f3d011682016040523d82523d6000602084013e610ae0565b606091505b509150915081610bed576044815111610b2a5760405162461bcd60e51b815260040180806020018281038252603d815260200180611921603d913960400191505060405180910390fd5b610b696040518060400160405280601e81526020017f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a200000815250826115f0565b60405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bb2578181015183820152602001610b9a565b50505050905090810190601f168015610bdf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c6a578181015183820152602001610c52565b50505050905090810190601f168015610c975780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610cca578181015183820152602001610cb2565b50505050905090810190601f168015610cf75780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b6001546001600160a01b03163314610d5e5760405162461bcd60e51b815260040180806020018281038252603881526020018061187b6038913960400191505060405180910390fd5b60008054336001600160a01b031991821617808355600180549092169091556040516001600160a01b03909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b6001546001600160a01b031681565b600080546001600160a01b03163314610e3d5760405162461bcd60e51b81526004018080602001828103825260368152602001806118eb6036913960400191505060405180910390fd5b610e57600254610e4b61158b565b9063ffffffff61158f16565b821015610e955760405162461bcd60e51b815260040180806020018281038252604981526020018061195e6049913960600191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610f04578181015183820152602001610eec565b50505050905090810190601f168015610f315780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610f64578181015183820152602001610f4c565b50505050905090810190601f168015610f915780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550866001600160a01b0316817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561105c578181015183820152602001611044565b50505050905090810190601f1680156110895780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156110bc5781810151838201526020016110a4565b50505050905090810190601f1680156110e95780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b3330146111425760405162461bcd60e51b81526004018080602001828103825260388152602001806118b36038913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b6000546001600160a01b031633146111db5760405162461bcd60e51b81526004018080602001828103825260378152602001806117236037913960400191505060405180910390fd5b6000858585858560405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561124a578181015183820152602001611232565b50505050905090810190601f1680156112775780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156112aa578181015183820152602001611292565b50505050905090810190601f1680156112d75780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550856001600160a01b0316817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156113a257818101518382015260200161138a565b50505050905090810190601f1680156113cf5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156114025781810151838201526020016113ea565b50505050905090810190601f16801561142f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b62278d0081565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b612a3081565b6212750081565b3330146114e45760405162461bcd60e51b81526004018080602001828103825260318152602001806119a76031913960400191505060405180910390fd5b612a308110156115255760405162461bcd60e51b81526004018080602001828103825260348152602001806117d26034913960400191505060405180910390fd5b62278d00811115610db15760405162461bcd60e51b81526004018080602001828103825260388152602001806118066038913960400191505060405180910390fd5b60036020526000908152604090205460ff1681565b6000546001600160a01b031681565b4290565b6000828201838110156115e9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6060808390506060839050606060448251845101036040519080825280601f01601f19166020018201604052801561162f576020820181803883390190505b509050806000805b85518110156116885785818151811061164c57fe5b602001015160f81c60f81b83838060010194508151811061166957fe5b60200101906001600160f81b031916908160001a905350600101611637565b5060445b84518110156116dd578481815181106116a157fe5b602001015160f81c60f81b8383806001019450815181106116be57fe5b60200101906001600160f81b031916908160001a90535060010161168c565b509097965050505050505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a7231582098bd6b1a416b461ade7c042735caa55f0f176d2b9b7b92d41f320c11a8384de064736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x72B812B4 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC1A287E2 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x69E JUMPI DUP1 PUSH4 0xE177246E EQ PUSH2 0x6B3 JUMPI DUP1 PUSH4 0xF2B06537 EQ PUSH2 0x6DD JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x71B JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x72B812B4 EQ PUSH2 0x60E JUMPI DUP1 PUSH4 0x7D645FAB EQ PUSH2 0x641 JUMPI DUP1 PUSH4 0x9DDF774F EQ PUSH2 0x656 JUMPI DUP1 PUSH4 0xB1B43AE5 EQ PUSH2 0x689 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x3A66F901 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3A66F901 EQ PUSH2 0x31A JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0x479 JUMPI DUP1 PUSH4 0x591FCDFE EQ PUSH2 0x4AC JUMPI DUP1 PUSH4 0x6A42B8F8 EQ PUSH2 0x5F9 JUMPI PUSH2 0xF3 JUMP JUMPDEST DUP1 PUSH4 0x825F38F EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0xE18B681 EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0x1668DFC3 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x2E9 JUMPI JUMPDEST STOP JUMPDEST PUSH2 0x235 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x730 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x257 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x29C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH2 0xD15 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xDB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FE PUSH2 0xDE4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x467 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xDF3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1104 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x1192 SWAP2 POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x467 PUSH2 0x1448 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x144E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x467 PUSH2 0x1470 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1477 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x467 PUSH2 0x1499 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x467 PUSH2 0x149F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x14A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x707 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1567 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FE PUSH2 0x157C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x77C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x16EB PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7EB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x818 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x84B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x833 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x878 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP10 POP PUSH1 0xFF AND SWAP8 POP PUSH2 0x8E9 SWAP7 POP POP POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x183E PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x8F2 PUSH2 0x158B JUMP JUMPDEST LT ISZERO PUSH2 0x92F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x178D PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x942 DUP4 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x158F AND JUMP JUMPDEST PUSH2 0x94A PUSH2 0x158B JUMP JUMPDEST GT ISZERO PUSH2 0x987 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x175A PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP5 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x9AD JUMPI POP DUP4 PUSH2 0xA3A JUMP JUMPDEST DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x4 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA02 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x9E3 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA79 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA5A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xADB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xBED JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0xB2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1921 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB69 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x54696D656C6F636B3A3A657865637574655472616E73616374696F6E3A200000 DUP2 MSTORE POP DUP3 PUSH2 0x15F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBB2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB9A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xBDF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0xA560E3198060A2F10670C1EC5B403077EA6AE93CA8DE1C32B451DC1A943CD6E7 DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC6A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC52 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC97 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCCA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCB2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xCF7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x187B PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP1 DUP4 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH32 0x71614071B88DEE5E0B2AE578A9DD7B2EBBE9AE832BA419DC0242CD065A290B6C SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x948B1F6A42EE138B7E34058BA85A37F716D55FF25FF05A763F15BED6A04C8D2C SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE3D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18EB PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE57 PUSH1 0x2 SLOAD PUSH2 0xE4B PUSH2 0x158B JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x158F AND JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xE95 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x49 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x195E PUSH1 0x49 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF04 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEEC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF31 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF64 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF4C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF91 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x76E2796DC3A81D57B0E8504B647FEBCBEEB5F4AF818E164F11EEF8131A6A763F DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x105C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1044 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1089 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10BC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10A4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x10E9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x1142 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18B3 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 PUSH32 0x69D78E38A01985FBB1462961809B4B2D65531BC93B2B94037F3334B82CA4A756 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x11DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1723 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x124A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1232 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1277 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12AA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1292 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x12D7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x2FFFC091A501FD91BFBFF27141450D3ACB40FB8E6D8382B243EC7A812A3AAF87 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13A2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x138A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13CF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1402 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x13EA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x142F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x278D00 DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2A30 DUP2 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x14E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19A7 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A30 DUP2 LT ISZERO PUSH2 0x1525 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17D2 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0xDB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1806 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x15E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x162F JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x1688 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x164C JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1669 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1637 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x16DD JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x16A1 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x16BE JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x168C JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID SLOAD PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A2043616C6C206D PUSH22 0x737420636F6D652066726F6D2061646D696E2E54696D PUSH6 0x6C6F636B3A3A PUSH4 0x616E6365 PUSH13 0x5472616E73616374696F6E3A20 NUMBER PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH6 0x786563757465 SLOAD PUSH19 0x616E73616374696F6E3A205472616E73616374 PUSH10 0x6F6E206973207374616C PUSH6 0x2E54696D656C PUSH16 0x636B3A3A657865637574655472616E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420737572 PUSH17 0x61737365642074696D65206C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D75737420657863 PUSH6 0x6564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420626565 PUSH15 0x207175657565642E54696D656C6F63 PUSH12 0x3A3A61636365707441646D69 PUSH15 0x3A2043616C6C206D75737420636F6D PUSH6 0x2066726F6D20 PUSH17 0x656E64696E6741646D696E2E54696D656C PUSH16 0x636B3A3A73657450656E64696E674164 PUSH14 0x696E3A2043616C6C206D75737420 PUSH4 0x6F6D6520 PUSH7 0x726F6D2054696D PUSH6 0x6C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7175 PUSH6 0x75655472616E PUSH20 0x616374696F6E3A2043616C6C206D75737420636F PUSH14 0x652066726F6D2061646D696E2E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH6 0x786563757469 PUSH16 0x6E2072657665727465642E54696D656C PUSH16 0x636B3A3A71756575655472616E736163 PUSH21 0x696F6E3A20457374696D6174656420657865637574 PUSH10 0x6F6E20626C6F636B206D PUSH22 0x737420736174697366792064656C61792E54696D656C PUSH16 0x636B3A3A73657444656C61793A204361 PUSH13 0x6C206D75737420636F6D652066 PUSH19 0x6F6D2054696D656C6F636B2EA265627A7A7231 PC KECCAK256 SWAP9 0xBD PUSH12 0x1A416B461ADE7C042735CAA5 0x5F 0xF OR PUSH14 0x2B9B7B92D41F320C11A8384DE064 PUSH20 0x6F6C634300051100320000000000000000000000 ",
              "sourceMap": "145:400:117:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7347:1365:64;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;7347:1365:64;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7347:1365:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7347:1365:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7347:1365:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7347:1365:64;;;;;;;;-1:-1:-1;7347:1365:64;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;7347:1365:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7347:1365:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7347:1365:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7347:1365:64;;-1:-1:-1;;7347:1365:64;;;-1:-1:-1;7347:1365:64;;-1:-1:-1;;7347:1365:64:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7347:1365:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4435:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4435:209:64;;;:::i;266:103:117:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;266:103:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;266:103:117;;:::i;2619:27:64:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2619:27:64;;;:::i;:::-;;;;-1:-1:-1;;;;;2619:27:64;;;;;;;;;;;;;;5457:578;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5457:578:64;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;5457:578:64;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5457:578:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5457:578:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5457:578:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5457:578:64;;;;;;;;-1:-1:-1;5457:578:64;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;5457:578:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5457:578:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5457:578:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5457:578:64;;-1:-1:-1;;5457:578:64;;;-1:-1:-1;5457:578:64;;-1:-1:-1;;5457:578:64:i;:::-;;;;;;;;;;;;;;;;4769:230;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4769:230:64;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4769:230:64;-1:-1:-1;;;;;4769:230:64;;:::i;6461:420::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6461:420:64;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;6461:420:64;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6461:420:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6461:420:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6461:420:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6461:420:64;;;;;;;;-1:-1:-1;6461:420:64;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6461:420:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6461:420:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6461:420:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6461:420:64;;-1:-1:-1;;6461:420:64;;;-1:-1:-1;6461:420:64;;-1:-1:-1;;6461:420:64:i;2649:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2649:20:64;;;:::i;473:70:117:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;473:70:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;473:70:117;-1:-1:-1;;;;;473:70:117;;:::i;2545:47:64:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2545:47:64;;;:::i;372:98:117:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;372:98:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;372:98:117;-1:-1:-1;;;;;372:98:117;;:::i;2495:47:64:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2495:47:64;;;:::i;2446:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2446:46:64;;;:::i;4002:369::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4002:369:64;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4002:369:64;;:::i;2673:50::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2673:50:64;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2673:50:64;;:::i;:::-;;;;;;;;;;;;;;;;;;2596:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2596:20:64;;;:::i;7347:1365::-;7540:5;;7500:12;;-1:-1:-1;;;;;7540:5:64;7526:10;:19;7518:88;;;;-1:-1:-1;;;7518:88:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7611:14;7649:6;7657:5;7664:9;7675:4;7681:3;7638:47;;;;;;-1:-1:-1;;;;;7638:47:64;-1:-1:-1;;;;;7638:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7638:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7638:47:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7638:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7638:47:64;;;-1:-1:-1;;26:21;;;22:32;6:49;;7638:47:64;;;7628:58;;49:4:-1;7628:58:64;;;;7698:26;;;;:18;:26;;;;;;7628:58;;-1:-1:-1;7698:26:64;;;-1:-1:-1;7690:100:64;;-1:-1:-1;;;;;;;7690:100:64;;;-1:-1:-1;;;7690:100:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7825:3;7802:19;:17;:19::i;:::-;:26;;7794:108;;;;-1:-1:-1;;;7794:108:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7937:21;:3;2485:7;7937:21;:7;:21;:::i;:::-;7914:19;:17;:19::i;:::-;:44;;7906:108;;;;-1:-1:-1;;;7906:108:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8048:5;8019:26;;;:18;:26;;;;;:34;;-1:-1:-1;;8019:34:64;;;8088:23;;8058:21;;8084:145;;-1:-1:-1;8134:4:64;8084:145;;;8205:9;8189:27;;;;;;8219:4;8165:59;;;;;;-1:-1:-1;;;;;8165:59:64;;-1:-1:-1;;;;;8165:59:64;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8165:59:64;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8165:59:64;;;8154:70;;8084:145;8287:12;8301:23;8328:6;-1:-1:-1;;;;;8328:11:64;8346:5;8353:8;8328:34;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8328:34:64;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8286:76:64;;;;8371:7;8366:248;;1386:2:49;8389:10:64;:17;:40;8385:225;;8437:71;;-1:-1:-1;;;8437:71:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8385:225;8533:70;;;;;;;;;;;;;;;;;;8591:10;8533:16;:70::i;:::-;8526:78;;-1:-1:-1;;;8526:78:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8526:78:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8385:225;8650:6;-1:-1:-1;;;;;8623:63:64;8642:6;8623:63;8658:5;8665:9;8676:4;8682:3;8623:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8623:63:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8623:63:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8623:63:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8698:10;7347:1365;-1:-1:-1;;;;;;;;;7347:1365:64:o;4435:209::-;4491:12;;-1:-1:-1;;;;;4491:12:64;4477:10;:26;4469:95;;;;-1:-1:-1;;;4469:95:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4568:5;:18;;4576:10;-1:-1:-1;;;;;;4568:18:64;;;;;;;-1:-1:-1;4590:25:64;;;;;;;;4625:15;;-1:-1:-1;;;;;4634:5:64;;;;4625:15;;;4435:209::o;266:103:117:-;326:5;:14;;;350:15;;334:6;;350:15;;;;;266:103;:::o;2619:27:64:-;;;-1:-1:-1;;;;;2619:27:64;;:::o;5457:578::-;5600:7;5635:5;;-1:-1:-1;;;;;5635:5:64;5621:10;:19;5613:86;;;;-1:-1:-1;;;5613:86:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5718:30;5742:5;;5718:19;:17;:19::i;:::-;:23;:30;:23;:30;:::i;:::-;5711:3;:37;;5703:123;;;;-1:-1:-1;;;5703:123:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5831:14;5869:6;5877:5;5884:9;5895:4;5901:3;5858:47;;;;;;-1:-1:-1;;;;;5858:47:64;-1:-1:-1;;;;;5858:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5858:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5858:47:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5858:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5858:47:64;;;5848:58;;;;;;5831:75;;5939:4;5910:18;:26;5929:6;5910:26;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;5978:6;-1:-1:-1;;;;;5953:61:64;5970:6;5953:61;5986:5;5993:9;6004:4;6010:3;5953:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5953:61:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5953:61:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5953:61:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6025:6;5457:578;-1:-1:-1;;;;;;5457:578:64:o;4769:230::-;4836:10;4858:4;4836:27;4828:96;;;;-1:-1:-1;;;4828:96:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4928:12;:28;;-1:-1:-1;;;;;;4928:28:64;-1:-1:-1;;;;;4928:28:64;;;;;;;;;;;4966:29;;4982:12;;;4966:29;;-1:-1:-1;;4966:29:64;4769:230;:::o;6461:420::-;6622:5;;-1:-1:-1;;;;;6622:5:64;6608:10;:19;6600:87;;;;-1:-1:-1;;;6600:87:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6692:14;6730:6;6738:5;6745:9;6756:4;6762:3;6719:47;;;;;;-1:-1:-1;;;;;6719:47:64;-1:-1:-1;;;;;6719:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6719:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6719:47:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6719:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6719:47:64;;;6709:58;;;;;;6692:75;;6800:5;6771:18;:26;6790:6;6771:26;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;6841:6;-1:-1:-1;;;;;6815:62:64;6833:6;6815:62;6849:5;6856:9;6867:4;6873:3;6815:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6815:62:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6815:62:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6815:62:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6461:420;;;;;;:::o;2649:20::-;;;;:::o;473:70:117:-;525:5;:14;;-1:-1:-1;;;;;;525:14:117;-1:-1:-1;;;;;525:14:117;;;;;;;;;;473:70::o;2545:47:64:-;2585:7;2545:47;:::o;372:98:117:-;438:12;:28;;-1:-1:-1;;;;;;438:28:117;-1:-1:-1;;;;;438:28:117;;;;;;;;;;372:98::o;2495:47:64:-;2535:7;2495:47;:::o;2446:46::-;2485:7;2446:46;:::o;4002:369::-;4055:10;4077:4;4055:27;4047:89;;;;-1:-1:-1;;;4047:89:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2535:7;4148:6;:23;;4140:88;;;;-1:-1:-1;;;4140:88:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2585:7;4240:6;:23;;4232:92;;;;-1:-1:-1;;;4232:92:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2673:50;;;;;;;;;;;;;;;:::o;2596:20::-;;;-1:-1:-1;;;;;2596:20:64;;:::o;9013:147::-;9141:15;9013:147;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;1719:569:49:-;1808:13;1827:22;1858:4;1827:36;;1867:22;1898:4;1867:36;;1907:19;1386:2;1959:9;:16;1940:9;:16;:35;:57;1929:69;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;1929:69:49;87:34:-1;135:17;;-1:-1;1929:69:49;-1:-1:-1;1907:91:49;-1:-1:-1;1907:91:49;2044:9;;2061:87;2085:9;:16;2081:1;:20;2061:87;;;2131:9;2141:1;2131:12;;;;;;;;;;;;;;;;2113:10;2124:3;;;;;;2113:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2113:30:49;;;;;;;;-1:-1:-1;2103:3:49;;2061:87;;;-1:-1:-1;1386:2:49;2151:105;2193:9;:16;2189:1;:20;2151:105;;;2239:9;2249:1;2239:12;;;;;;;;;;;;;;;;2221:10;2232:3;;;;;;2221:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2221:30:49;;;;;;;;-1:-1:-1;2211:3:49;;2151:105;;;-1:-1:-1;2273:10:49;;1719:569;-1:-1:-1;;;;;;;1719:569:49:o"
            },
            "methodIdentifiers": {
              "GRACE_PERIOD()": "c1a287e2",
              "MAXIMUM_DELAY()": "7d645fab",
              "MINIMUM_DELAY()": "b1b43ae5",
              "acceptAdmin()": "0e18b681",
              "admin()": "f851a440",
              "cancelTransaction(address,uint256,string,bytes,uint256)": "591fcdfe",
              "delay()": "6a42b8f8",
              "executeTransaction(address,uint256,string,bytes,uint256)": "0825f38f",
              "harnessSetAdmin(address)": "72b812b4",
              "harnessSetPendingAdmin(address)": "9ddf774f",
              "pendingAdmin()": "26782247",
              "queueTransaction(address,uint256,string,bytes,uint256)": "3a66f901",
              "queuedTransactions(bytes32)": "f2b06537",
              "setDelay(uint256)": "e177246e",
              "setDelayWithoutChecking(uint256)": "1668dfc3",
              "setPendingAdmin(address)": "4dd18bf5"
            }
          },
          "userdoc": {
            "methods": {
              "acceptAdmin()": {
                "notice": "Accept a new admin for the timelock."
              },
              "cancelTransaction(address,uint256,string,bytes,uint256)": {
                "notice": "Cancel a transaction."
              },
              "executeTransaction(address,uint256,string,bytes,uint256)": {
                "notice": "Executes a previously queued transaction from the governance."
              },
              "queueTransaction(address,uint256,string,bytes,uint256)": {
                "notice": "Queue a new transaction from the governance contract."
              },
              "setDelay(uint256)": {
                "notice": "Set a new delay when executing the contract calls."
              },
              "setPendingAdmin(address)": {
                "notice": "Set a new pending admin for the timelock."
              }
            }
          }
        },
        "TimelockTest": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "admin_",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "delay_",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "txHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "CancelTransaction",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "txHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "ExecuteTransaction",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "NewAdmin",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "newDelay",
                  "type": "uint256"
                }
              ],
              "name": "NewDelay",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newPendingAdmin",
                  "type": "address"
                }
              ],
              "name": "NewPendingAdmin",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "txHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "QueueTransaction",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "GRACE_PERIOD",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAXIMUM_DELAY",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MINIMUM_DELAY",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "acceptAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "cancelTransaction",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "delay",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "executeTransaction",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "contract Administered",
                  "name": "administered",
                  "type": "address"
                }
              ],
              "name": "harnessAcceptAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "admin_",
                  "type": "address"
                }
              ],
              "name": "harnessSetAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pendingAdmin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "eta",
                  "type": "uint256"
                }
              ],
              "name": "queueTransaction",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "queuedTransactions",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "delay_",
                  "type": "uint256"
                }
              ],
              "name": "setDelay",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pendingAdmin_",
                  "type": "address"
                }
              ],
              "name": "setPendingAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "cancelTransaction(address,uint256,string,bytes,uint256)": {
                "params": {
                  "data": "The ethereum transaction input data payload.",
                  "eta": "Estimated Time of Accomplishment. The timestamp that the proposal will be available for execution, set once the vote succeeds.",
                  "signature": "The stanndard representation of the function called.",
                  "target": "The contract to call.",
                  "value": "The amount to send in the transaction."
                }
              },
              "executeTransaction(address,uint256,string,bytes,uint256)": {
                "params": {
                  "data": "The ethereum transaction input data payload.",
                  "eta": "Estimated Time of Accomplishment. The timestamp that the proposal will be available for execution, set once the vote succeeds.",
                  "signature": "The stanndard representation of the function called.",
                  "target": "The contract to call.",
                  "value": "The amount to send in the transaction."
                }
              },
              "queueTransaction(address,uint256,string,bytes,uint256)": {
                "params": {
                  "data": "The ethereum transaction input data payload.",
                  "eta": "Estimated Time of Accomplishment. The timestamp that the proposal will be available for execution, set once the vote succeeds.",
                  "signature": "The stanndard representation of the function called.",
                  "target": "The contract to call.",
                  "value": "The amount to send in the transaction."
                }
              },
              "setDelay(uint256)": {
                "params": {
                  "delay_": "The amount of time to wait until execution."
                }
              },
              "setPendingAdmin(address)": {
                "params": {
                  "pendingAdmin_": "The new pending admin address."
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50604051611aa4380380611aa48339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b0319166001600160a01b03909316929092178255600255611a3690819061006e90396000f3fe6080604052600436106100e85760003560e01c806372b812b41161008a578063e177246e11610059578063e177246e1461064b578063f2b0653714610675578063f79efaf1146106b3578063f851a440146106e6576100e8565b806372b812b4146105d95780637d645fab1461060c578063b1b43ae514610621578063c1a287e214610636576100e8565b80633a66f901116100c65780633a66f901146102e55780634dd18bf514610444578063591fcdfe146104775780636a42b8f8146105c4576100e8565b80630825f38f146100ea5780630e18b6811461029f57806326782247146102b4575b005b61022a600480360360a081101561010057600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561012f57600080fd5b82018360208201111561014157600080fd5b803590602001918460018302840111600160201b8311171561016257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156101b457600080fd5b8201836020820111156101c657600080fd5b803590602001918460018302840111600160201b831117156101e757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106fb915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026457818101518382015260200161024c565b50505050905090810190601f1680156102915780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ab57600080fd5b506100e8610ce0565b3480156102c057600080fd5b506102c9610d7c565b604080516001600160a01b039092168252519081900360200190f35b3480156102f157600080fd5b50610432600480360360a081101561030857600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561033757600080fd5b82018360208201111561034957600080fd5b803590602001918460018302840111600160201b8311171561036a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156103bc57600080fd5b8201836020820111156103ce57600080fd5b803590602001918460018302840111600160201b831117156103ef57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610d8b915050565b60408051918252519081900360200190f35b34801561045057600080fd5b506100e86004803603602081101561046757600080fd5b50356001600160a01b031661109c565b34801561048357600080fd5b506100e8600480360360a081101561049a57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104c957600080fd5b8201836020820111156104db57600080fd5b803590602001918460018302840111600160201b831117156104fc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561054e57600080fd5b82018360208201111561056057600080fd5b803590602001918460018302840111600160201b8311171561058157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061112a915050565b3480156105d057600080fd5b506104326113e0565b3480156105e557600080fd5b506100e8600480360360208110156105fc57600080fd5b50356001600160a01b03166113e6565b34801561061857600080fd5b5061043261141f565b34801561062d57600080fd5b50610432611426565b34801561064257600080fd5b5061043261142c565b34801561065757600080fd5b506100e86004803603602081101561066e57600080fd5b5035611433565b34801561068157600080fd5b5061069f6004803603602081101561069857600080fd5b5035611527565b604080519115158252519081900360200190f35b3480156106bf57600080fd5b506100e8600480360360208110156106d657600080fd5b50356001600160a01b031661153c565b3480156106f257600080fd5b506102c96115a6565b6000546060906001600160a01b031633146107475760405162461bcd60e51b81526004018080602001828103825260388152602001806117156038913960400191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107b657818101518382015260200161079e565b50505050905090810190601f1680156107e35780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156108165781810151838201526020016107fe565b50505050905090810190601f1680156108435780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301206000818152600390935291205490995060ff1697506108b496505050505050505760405162461bcd60e51b815260040180806020018281038252603d815260200180611868603d913960400191505060405180910390fd5b826108bd6115b5565b10156108fa5760405162461bcd60e51b81526004018080602001828103825260458152602001806117b76045913960600191505060405180910390fd5b61090d836212750063ffffffff6115b916565b6109156115b5565b11156109525760405162461bcd60e51b81526004018080602001828103825260338152602001806117846033913960400191505060405180910390fd5b6000818152600360205260409020805460ff191690558451606090610978575083610a05565b85805190602001208560405160200180836001600160e01b0319166001600160e01b031916815260040182805190602001908083835b602083106109cd5780518252601f1990920191602091820191016109ae565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b60006060896001600160a01b031689846040518082805190602001908083835b60208310610a445780518252601f199092019160209182019101610a25565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610aa6576040519150601f19603f3d011682016040523d82523d6000602084013e610aab565b606091505b509150915081610bb8576044815111610af55760405162461bcd60e51b815260040180806020018281038252603d81526020018061194b603d913960400191505060405180910390fd5b610b346040518060400160405280601e81526020017f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2000008152508261161a565b60405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b7d578181015183820152602001610b65565b50505050905090810190601f168015610baa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c35578181015183820152602001610c1d565b50505050905090810190601f168015610c625780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610c95578181015183820152602001610c7d565b50505050905090810190601f168015610cc25780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b6001546001600160a01b03163314610d295760405162461bcd60e51b81526004018080602001828103825260388152602001806118a56038913960400191505060405180910390fd5b60008054336001600160a01b031991821617808355600180549092169091556040516001600160a01b03909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b6001546001600160a01b031681565b600080546001600160a01b03163314610dd55760405162461bcd60e51b81526004018080602001828103825260368152602001806119156036913960400191505060405180910390fd5b610def600254610de36115b5565b9063ffffffff6115b916565b821015610e2d5760405162461bcd60e51b81526004018080602001828103825260498152602001806119886049913960600191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610e9c578181015183820152602001610e84565b50505050905090810190601f168015610ec95780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610efc578181015183820152602001610ee4565b50505050905090810190601f168015610f295780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550866001600160a01b0316817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610ff4578181015183820152602001610fdc565b50505050905090810190601f1680156110215780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561105457818101518382015260200161103c565b50505050905090810190601f1680156110815780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b3330146110da5760405162461bcd60e51b81526004018080602001828103825260388152602001806118dd6038913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b6000546001600160a01b031633146111735760405162461bcd60e51b815260040180806020018281038252603781526020018061174d6037913960400191505060405180910390fd5b6000858585858560405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156111e25781810151838201526020016111ca565b50505050905090810190601f16801561120f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561124257818101518382015260200161122a565b50505050905090810190601f16801561126f5780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550856001600160a01b0316817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561133a578181015183820152602001611322565b50505050905090810190601f1680156113675780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561139a578181015183820152602001611382565b50505050905090810190601f1680156113c75780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b6000546001600160a01b031633146113fd57600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b62278d0081565b612a3081565b6212750081565b3330146114715760405162461bcd60e51b81526004018080602001828103825260318152602001806119d16031913960400191505060405180910390fd5b612a308110156114b25760405162461bcd60e51b81526004018080602001828103825260348152602001806117fc6034913960400191505060405180910390fd5b62278d008111156114f45760405162461bcd60e51b81526004018080602001828103825260388152602001806118306038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b806001600160a01b031663e9c714f26040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561157757600080fd5b505af115801561158b573d6000803e3d6000fd5b505050506040513d60208110156115a157600080fd5b505050565b6000546001600160a01b031681565b4290565b600082820183811015611613576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6060808390506060839050606060448251845101036040519080825280601f01601f191660200182016040528015611659576020820181803883390190505b509050806000805b85518110156116b25785818151811061167657fe5b602001015160f81c60f81b83838060010194508151811061169357fe5b60200101906001600160f81b031916908160001a905350600101611661565b5060445b8451811015611707578481815181106116cb57fe5b602001015160f81c60f81b8383806001019450815181106116e857fe5b60200101906001600160f81b031916908160001a9053506001016116b6565b509097965050505050505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a72315820bd549be215d85636b8c1724458fc94b3d0d3bfb2dff8dbc045b97a1d8020a6ea64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1AA4 CODESIZE SUB DUP1 PUSH2 0x1AA4 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR DUP3 SSTORE PUSH1 0x2 SSTORE PUSH2 0x1A36 SWAP1 DUP2 SWAP1 PUSH2 0x6E SWAP1 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x72B812B4 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xE177246E GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE177246E EQ PUSH2 0x64B JUMPI DUP1 PUSH4 0xF2B06537 EQ PUSH2 0x675 JUMPI DUP1 PUSH4 0xF79EFAF1 EQ PUSH2 0x6B3 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x6E6 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x72B812B4 EQ PUSH2 0x5D9 JUMPI DUP1 PUSH4 0x7D645FAB EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xB1B43AE5 EQ PUSH2 0x621 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x636 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x3A66F901 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3A66F901 EQ PUSH2 0x2E5 JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0x591FCDFE EQ PUSH2 0x477 JUMPI DUP1 PUSH4 0x6A42B8F8 EQ PUSH2 0x5C4 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x825F38F EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0xE18B681 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x2B4 JUMPI JUMPDEST STOP JUMPDEST PUSH2 0x22A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x6FB SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x264 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x24C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x291 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH2 0xCE0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C9 PUSH2 0xD7C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x36A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xD8B SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x109C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x581 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x112A SWAP2 POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x432 PUSH2 0x13E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x432 PUSH2 0x141F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x432 PUSH2 0x1426 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x642 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x432 PUSH2 0x142C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x657 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1433 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x681 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x69F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1527 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x153C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C9 PUSH2 0x15A6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x747 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1715 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7B6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x79E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7E3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x816 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7FE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x843 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP10 POP PUSH1 0xFF AND SWAP8 POP PUSH2 0x8B4 SWAP7 POP POP POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1868 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x8BD PUSH2 0x15B5 JUMP JUMPDEST LT ISZERO PUSH2 0x8FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17B7 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x90D DUP4 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x15B9 AND JUMP JUMPDEST PUSH2 0x915 PUSH2 0x15B5 JUMP JUMPDEST GT ISZERO PUSH2 0x952 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1784 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP5 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x978 JUMPI POP DUP4 PUSH2 0xA05 JUMP JUMPDEST DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x4 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x9CD JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA44 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA25 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAA6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAAB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xBB8 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0xAF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x194B PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB34 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x54696D656C6F636B3A3A657865637574655472616E73616374696F6E3A200000 DUP2 MSTORE POP DUP3 PUSH2 0x161A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB7D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB65 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xBAA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0xA560E3198060A2F10670C1EC5B403077EA6AE93CA8DE1C32B451DC1A943CD6E7 DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC35 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC1D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC62 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC95 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC7D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xCC2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD29 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18A5 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP1 DUP4 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH32 0x71614071B88DEE5E0B2AE578A9DD7B2EBBE9AE832BA419DC0242CD065A290B6C SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xDD5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1915 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDEF PUSH1 0x2 SLOAD PUSH2 0xDE3 PUSH2 0x15B5 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x15B9 AND JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xE2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x49 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1988 PUSH1 0x49 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE9C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE84 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xEC9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEFC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEE4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF29 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x76E2796DC3A81D57B0E8504B647FEBCBEEB5F4AF818E164F11EEF8131A6A763F DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFDC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1021 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1054 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x103C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1081 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x10DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18DD PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 PUSH32 0x69D78E38A01985FBB1462961809B4B2D65531BC93B2B94037F3334B82CA4A756 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1173 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x174D PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11E2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11CA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x120F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1242 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x122A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x126F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x2FFFC091A501FD91BFBFF27141450D3ACB40FB8E6D8382B243EC7A812A3AAF87 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x133A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1322 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1367 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x139A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1382 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13C7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x278D00 DUP2 JUMP JUMPDEST PUSH2 0x2A30 DUP2 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x1471 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19D1 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A30 DUP2 LT ISZERO PUSH2 0x14B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17FC PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0x14F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1830 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x948B1F6A42EE138B7E34058BA85A37F716D55FF25FF05A763F15BED6A04C8D2C SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE9C714F2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x158B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1613 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1659 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x16B2 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1676 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1693 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1661 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1707 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x16CB JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x16E8 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x16B6 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID SLOAD PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A2043616C6C206D PUSH22 0x737420636F6D652066726F6D2061646D696E2E54696D PUSH6 0x6C6F636B3A3A PUSH4 0x616E6365 PUSH13 0x5472616E73616374696F6E3A20 NUMBER PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH6 0x786563757465 SLOAD PUSH19 0x616E73616374696F6E3A205472616E73616374 PUSH10 0x6F6E206973207374616C PUSH6 0x2E54696D656C PUSH16 0x636B3A3A657865637574655472616E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420737572 PUSH17 0x61737365642074696D65206C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D75737420657863 PUSH6 0x6564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420626565 PUSH15 0x207175657565642E54696D656C6F63 PUSH12 0x3A3A61636365707441646D69 PUSH15 0x3A2043616C6C206D75737420636F6D PUSH6 0x2066726F6D20 PUSH17 0x656E64696E6741646D696E2E54696D656C PUSH16 0x636B3A3A73657450656E64696E674164 PUSH14 0x696E3A2043616C6C206D75737420 PUSH4 0x6F6D6520 PUSH7 0x726F6D2054696D PUSH6 0x6C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7175 PUSH6 0x75655472616E PUSH20 0x616374696F6E3A2043616C6C206D75737420636F PUSH14 0x652066726F6D2061646D696E2E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH6 0x786563757469 PUSH16 0x6E2072657665727465642E54696D656C PUSH16 0x636B3A3A71756575655472616E736163 PUSH21 0x696F6E3A20457374696D6174656420657865637574 PUSH10 0x6F6E20626C6F636B206D PUSH22 0x737420736174697366792064656C61792E54696D656C PUSH16 0x636B3A3A73657444656C61793A204361 PUSH13 0x6C206D75737420636F6D652066 PUSH19 0x6F6D2054696D656C6F636B2EA265627A7A7231 PC KECCAK256 0xBD SLOAD SWAP12 0xE2 ISZERO 0xD8 JUMP CALLDATASIZE 0xB8 0xC1 PUSH19 0x4458FC94B3D0D3BFB2DFF8DBC045B97A1D8020 0xA6 0xEA PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "547:342:117:-;;;584:98;8:9:-1;5:2;;;30:1;27;20:12;5:2;584:98:117;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;584:98:117;;;;;;;3712:5:64;:14;;-1:-1:-1;;;;;;3712:14:64;-1:-1:-1;;;;;3712:14:64;;;;;;;;;3730:5;664:14:117;547:342;;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106100e85760003560e01c806372b812b41161008a578063e177246e11610059578063e177246e1461064b578063f2b0653714610675578063f79efaf1146106b3578063f851a440146106e6576100e8565b806372b812b4146105d95780637d645fab1461060c578063b1b43ae514610621578063c1a287e214610636576100e8565b80633a66f901116100c65780633a66f901146102e55780634dd18bf514610444578063591fcdfe146104775780636a42b8f8146105c4576100e8565b80630825f38f146100ea5780630e18b6811461029f57806326782247146102b4575b005b61022a600480360360a081101561010057600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561012f57600080fd5b82018360208201111561014157600080fd5b803590602001918460018302840111600160201b8311171561016257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156101b457600080fd5b8201836020820111156101c657600080fd5b803590602001918460018302840111600160201b831117156101e757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106fb915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026457818101518382015260200161024c565b50505050905090810190601f1680156102915780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ab57600080fd5b506100e8610ce0565b3480156102c057600080fd5b506102c9610d7c565b604080516001600160a01b039092168252519081900360200190f35b3480156102f157600080fd5b50610432600480360360a081101561030857600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561033757600080fd5b82018360208201111561034957600080fd5b803590602001918460018302840111600160201b8311171561036a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156103bc57600080fd5b8201836020820111156103ce57600080fd5b803590602001918460018302840111600160201b831117156103ef57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610d8b915050565b60408051918252519081900360200190f35b34801561045057600080fd5b506100e86004803603602081101561046757600080fd5b50356001600160a01b031661109c565b34801561048357600080fd5b506100e8600480360360a081101561049a57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104c957600080fd5b8201836020820111156104db57600080fd5b803590602001918460018302840111600160201b831117156104fc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561054e57600080fd5b82018360208201111561056057600080fd5b803590602001918460018302840111600160201b8311171561058157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061112a915050565b3480156105d057600080fd5b506104326113e0565b3480156105e557600080fd5b506100e8600480360360208110156105fc57600080fd5b50356001600160a01b03166113e6565b34801561061857600080fd5b5061043261141f565b34801561062d57600080fd5b50610432611426565b34801561064257600080fd5b5061043261142c565b34801561065757600080fd5b506100e86004803603602081101561066e57600080fd5b5035611433565b34801561068157600080fd5b5061069f6004803603602081101561069857600080fd5b5035611527565b604080519115158252519081900360200190f35b3480156106bf57600080fd5b506100e8600480360360208110156106d657600080fd5b50356001600160a01b031661153c565b3480156106f257600080fd5b506102c96115a6565b6000546060906001600160a01b031633146107475760405162461bcd60e51b81526004018080602001828103825260388152602001806117156038913960400191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156107b657818101518382015260200161079e565b50505050905090810190601f1680156107e35780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156108165781810151838201526020016107fe565b50505050905090810190601f1680156108435780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301206000818152600390935291205490995060ff1697506108b496505050505050505760405162461bcd60e51b815260040180806020018281038252603d815260200180611868603d913960400191505060405180910390fd5b826108bd6115b5565b10156108fa5760405162461bcd60e51b81526004018080602001828103825260458152602001806117b76045913960600191505060405180910390fd5b61090d836212750063ffffffff6115b916565b6109156115b5565b11156109525760405162461bcd60e51b81526004018080602001828103825260338152602001806117846033913960400191505060405180910390fd5b6000818152600360205260409020805460ff191690558451606090610978575083610a05565b85805190602001208560405160200180836001600160e01b0319166001600160e01b031916815260040182805190602001908083835b602083106109cd5780518252601f1990920191602091820191016109ae565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b60006060896001600160a01b031689846040518082805190602001908083835b60208310610a445780518252601f199092019160209182019101610a25565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610aa6576040519150601f19603f3d011682016040523d82523d6000602084013e610aab565b606091505b509150915081610bb8576044815111610af55760405162461bcd60e51b815260040180806020018281038252603d81526020018061194b603d913960400191505060405180910390fd5b610b346040518060400160405280601e81526020017f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2000008152508261161a565b60405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b7d578181015183820152602001610b65565b50505050905090810190601f168015610baa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610c35578181015183820152602001610c1d565b50505050905090810190601f168015610c625780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610c95578181015183820152602001610c7d565b50505050905090810190601f168015610cc25780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b6001546001600160a01b03163314610d295760405162461bcd60e51b81526004018080602001828103825260388152602001806118a56038913960400191505060405180910390fd5b60008054336001600160a01b031991821617808355600180549092169091556040516001600160a01b03909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b6001546001600160a01b031681565b600080546001600160a01b03163314610dd55760405162461bcd60e51b81526004018080602001828103825260368152602001806119156036913960400191505060405180910390fd5b610def600254610de36115b5565b9063ffffffff6115b916565b821015610e2d5760405162461bcd60e51b81526004018080602001828103825260498152602001806119886049913960600191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610e9c578181015183820152602001610e84565b50505050905090810190601f168015610ec95780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610efc578181015183820152602001610ee4565b50505050905090810190601f168015610f295780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550866001600160a01b0316817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610ff4578181015183820152602001610fdc565b50505050905090810190601f1680156110215780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561105457818101518382015260200161103c565b50505050905090810190601f1680156110815780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b3330146110da5760405162461bcd60e51b81526004018080602001828103825260388152602001806118dd6038913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b6000546001600160a01b031633146111735760405162461bcd60e51b815260040180806020018281038252603781526020018061174d6037913960400191505060405180910390fd5b6000858585858560405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156111e25781810151838201526020016111ca565b50505050905090810190601f16801561120f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561124257818101518382015260200161122a565b50505050905090810190601f16801561126f5780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550856001600160a01b0316817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561133a578181015183820152602001611322565b50505050905090810190601f1680156113675780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561139a578181015183820152602001611382565b50505050905090810190601f1680156113c75780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b6000546001600160a01b031633146113fd57600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b62278d0081565b612a3081565b6212750081565b3330146114715760405162461bcd60e51b81526004018080602001828103825260318152602001806119d16031913960400191505060405180910390fd5b612a308110156114b25760405162461bcd60e51b81526004018080602001828103825260348152602001806117fc6034913960400191505060405180910390fd5b62278d008111156114f45760405162461bcd60e51b81526004018080602001828103825260388152602001806118306038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b806001600160a01b031663e9c714f26040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561157757600080fd5b505af115801561158b573d6000803e3d6000fd5b505050506040513d60208110156115a157600080fd5b505050565b6000546001600160a01b031681565b4290565b600082820183811015611613576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6060808390506060839050606060448251845101036040519080825280601f01601f191660200182016040528015611659576020820181803883390190505b509050806000805b85518110156116b25785818151811061167657fe5b602001015160f81c60f81b83838060010194508151811061169357fe5b60200101906001600160f81b031916908160001a905350600101611661565b5060445b8451811015611707578481815181106116cb57fe5b602001015160f81c60f81b8383806001019450815181106116e857fe5b60200101906001600160f81b031916908160001a9053506001016116b6565b509097965050505050505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a72315820bd549be215d85636b8c1724458fc94b3d0d3bfb2dff8dbc045b97a1d8020a6ea64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x72B812B4 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xE177246E GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE177246E EQ PUSH2 0x64B JUMPI DUP1 PUSH4 0xF2B06537 EQ PUSH2 0x675 JUMPI DUP1 PUSH4 0xF79EFAF1 EQ PUSH2 0x6B3 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x6E6 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x72B812B4 EQ PUSH2 0x5D9 JUMPI DUP1 PUSH4 0x7D645FAB EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xB1B43AE5 EQ PUSH2 0x621 JUMPI DUP1 PUSH4 0xC1A287E2 EQ PUSH2 0x636 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x3A66F901 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3A66F901 EQ PUSH2 0x2E5 JUMPI DUP1 PUSH4 0x4DD18BF5 EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0x591FCDFE EQ PUSH2 0x477 JUMPI DUP1 PUSH4 0x6A42B8F8 EQ PUSH2 0x5C4 JUMPI PUSH2 0xE8 JUMP JUMPDEST DUP1 PUSH4 0x825F38F EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0xE18B681 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0x26782247 EQ PUSH2 0x2B4 JUMPI JUMPDEST STOP JUMPDEST PUSH2 0x22A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x6FB SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x264 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x24C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x291 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH2 0xCE0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C9 PUSH2 0xD7C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x432 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x36A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0xD8B SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x109C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x581 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP SWAP2 CALLDATALOAD SWAP3 POP PUSH2 0x112A SWAP2 POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x432 PUSH2 0x13E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x432 PUSH2 0x141F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x432 PUSH2 0x1426 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x642 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x432 PUSH2 0x142C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x657 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1433 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x681 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x69F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1527 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x153C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C9 PUSH2 0x15A6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x747 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1715 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7B6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x79E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x7E3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x816 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7FE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x843 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP10 POP PUSH1 0xFF AND SWAP8 POP PUSH2 0x8B4 SWAP7 POP POP POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1868 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x8BD PUSH2 0x15B5 JUMP JUMPDEST LT ISZERO PUSH2 0x8FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17B7 PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x90D DUP4 PUSH3 0x127500 PUSH4 0xFFFFFFFF PUSH2 0x15B9 AND JUMP JUMPDEST PUSH2 0x915 PUSH2 0x15B5 JUMP JUMPDEST GT ISZERO PUSH2 0x952 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1784 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP5 MLOAD PUSH1 0x60 SWAP1 PUSH2 0x978 JUMPI POP DUP4 PUSH2 0xA05 JUMP JUMPDEST DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x4 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x9CD JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA44 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA25 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAA6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAAB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xBB8 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0xAF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x194B PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB34 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x54696D656C6F636B3A3A657865637574655472616E73616374696F6E3A200000 DUP2 MSTORE POP DUP3 PUSH2 0x161A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB7D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB65 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xBAA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0xA560E3198060A2F10670C1EC5B403077EA6AE93CA8DE1C32B451DC1A943CD6E7 DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC35 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC1D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC62 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC95 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC7D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xCC2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD29 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18A5 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP1 DUP4 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH32 0x71614071B88DEE5E0B2AE578A9DD7B2EBBE9AE832BA419DC0242CD065A290B6C SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xDD5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1915 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDEF PUSH1 0x2 SLOAD PUSH2 0xDE3 PUSH2 0x15B5 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x15B9 AND JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xE2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x49 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1988 PUSH1 0x49 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE9C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE84 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xEC9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEFC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEE4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF29 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x76E2796DC3A81D57B0E8504B647FEBCBEEB5F4AF818E164F11EEF8131A6A763F DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFDC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1021 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1054 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x103C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1081 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x10DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18DD PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 PUSH32 0x69D78E38A01985FBB1462961809B4B2D65531BC93B2B94037F3334B82CA4A756 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1173 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x174D PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11E2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11CA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x120F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1242 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x122A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x126F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x2FFFC091A501FD91BFBFF27141450D3ACB40FB8E6D8382B243EC7A812A3AAF87 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x133A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1322 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1367 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP6 MLOAD DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x139A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1382 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13C7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x278D00 DUP2 JUMP JUMPDEST PUSH2 0x2A30 DUP2 JUMP JUMPDEST PUSH3 0x127500 DUP2 JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x1471 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19D1 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A30 DUP2 LT ISZERO PUSH2 0x14B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17FC PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x278D00 DUP2 GT ISZERO PUSH2 0x14F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1830 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x948B1F6A42EE138B7E34058BA85A37F716D55FF25FF05A763F15BED6A04C8D2C SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE9C714F2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x158B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1613 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1659 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x16B2 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1676 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1693 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1661 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1707 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x16CB JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x16E8 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x16B6 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID SLOAD PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A2043616C6C206D PUSH22 0x737420636F6D652066726F6D2061646D696E2E54696D PUSH6 0x6C6F636B3A3A PUSH4 0x616E6365 PUSH13 0x5472616E73616374696F6E3A20 NUMBER PUSH2 0x6C6C KECCAK256 PUSH14 0x75737420636F6D652066726F6D20 PUSH2 0x646D PUSH10 0x6E2E54696D656C6F636B GASPRICE GASPRICE PUSH6 0x786563757465 SLOAD PUSH19 0x616E73616374696F6E3A205472616E73616374 PUSH10 0x6F6E206973207374616C PUSH6 0x2E54696D656C PUSH16 0x636B3A3A657865637574655472616E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420737572 PUSH17 0x61737365642074696D65206C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D75737420657863 PUSH6 0x6564206D696E PUSH10 0x6D756D2064656C61792E SLOAD PUSH10 0x6D656C6F636B3A3A7365 PUSH21 0x44656C61793A2044656C6179206D757374206E6F74 KECCAK256 PUSH6 0x786365656420 PUSH14 0x6178696D756D2064656C61792E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH9 0x61736E277420626565 PUSH15 0x207175657565642E54696D656C6F63 PUSH12 0x3A3A61636365707441646D69 PUSH15 0x3A2043616C6C206D75737420636F6D PUSH6 0x2066726F6D20 PUSH17 0x656E64696E6741646D696E2E54696D656C PUSH16 0x636B3A3A73657450656E64696E674164 PUSH14 0x696E3A2043616C6C206D75737420 PUSH4 0x6F6D6520 PUSH7 0x726F6D2054696D PUSH6 0x6C6F636B2E54 PUSH10 0x6D656C6F636B3A3A7175 PUSH6 0x75655472616E PUSH20 0x616374696F6E3A2043616C6C206D75737420636F PUSH14 0x652066726F6D2061646D696E2E54 PUSH10 0x6D656C6F636B3A3A6578 PUSH6 0x637574655472 PUSH2 0x6E73 PUSH2 0x6374 PUSH10 0x6F6E3A205472616E7361 PUSH4 0x74696F6E KECCAK256 PUSH6 0x786563757469 PUSH16 0x6E2072657665727465642E54696D656C PUSH16 0x636B3A3A71756575655472616E736163 PUSH21 0x696F6E3A20457374696D6174656420657865637574 PUSH10 0x6F6E20626C6F636B206D PUSH22 0x737420736174697366792064656C61792E54696D656C PUSH16 0x636B3A3A73657444656C61793A204361 PUSH13 0x6C206D75737420636F6D652066 PUSH19 0x6F6D2054696D656C6F636B2EA265627A7A7231 PC KECCAK256 0xBD SLOAD SWAP12 0xE2 ISZERO 0xD8 JUMP CALLDATASIZE 0xB8 0xC1 PUSH19 0x4458FC94B3D0D3BFB2DFF8DBC045B97A1D8020 0xA6 0xEA PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "547:342:117:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7347:1365:64;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;7347:1365:64;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7347:1365:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7347:1365:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7347:1365:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7347:1365:64;;;;;;;;-1:-1:-1;7347:1365:64;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;7347:1365:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7347:1365:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7347:1365:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7347:1365:64;;-1:-1:-1;;7347:1365:64;;;-1:-1:-1;7347:1365:64;;-1:-1:-1;;7347:1365:64:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7347:1365:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4435:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4435:209:64;;;:::i;2619:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2619:27:64;;;:::i;:::-;;;;-1:-1:-1;;;;;2619:27:64;;;;;;;;;;;;;;5457:578;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5457:578:64;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;5457:578:64;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5457:578:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5457:578:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5457:578:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5457:578:64;;;;;;;;-1:-1:-1;5457:578:64;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;5457:578:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5457:578:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5457:578:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5457:578:64;;-1:-1:-1;;5457:578:64;;;-1:-1:-1;5457:578:64;;-1:-1:-1;;5457:578:64:i;:::-;;;;;;;;;;;;;;;;4769:230;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4769:230:64;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4769:230:64;-1:-1:-1;;;;;4769:230:64;;:::i;6461:420::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6461:420:64;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;6461:420:64;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6461:420:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6461:420:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6461:420:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6461:420:64;;;;;;;;-1:-1:-1;6461:420:64;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6461:420:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6461:420:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6461:420:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6461:420:64;;-1:-1:-1;;6461:420:64;;;-1:-1:-1;6461:420:64;;-1:-1:-1;;6461:420:64:i;2649:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2649:20:64;;;:::i;685:102:117:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;685:102:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;685:102:117;-1:-1:-1;;;;;685:102:117;;:::i;2545:47:64:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2545:47:64;;;:::i;2495:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2495:47:64;;;:::i;2446:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2446:46:64;;;:::i;4002:369::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4002:369:64;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4002:369:64;;:::i;2673:50::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2673:50:64;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2673:50:64;;:::i;:::-;;;;;;;;;;;;;;;;;;790:97:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;790:97:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;790:97:117;-1:-1:-1;;;;;790:97:117;;:::i;2596:20:64:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2596:20:64;;;:::i;7347:1365::-;7540:5;;7500:12;;-1:-1:-1;;;;;7540:5:64;7526:10;:19;7518:88;;;;-1:-1:-1;;;7518:88:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7611:14;7649:6;7657:5;7664:9;7675:4;7681:3;7638:47;;;;;;-1:-1:-1;;;;;7638:47:64;-1:-1:-1;;;;;7638:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7638:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7638:47:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7638:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7638:47:64;;;-1:-1:-1;;26:21;;;22:32;6:49;;7638:47:64;;;7628:58;;49:4:-1;7628:58:64;;;;7698:26;;;;:18;:26;;;;;;7628:58;;-1:-1:-1;7698:26:64;;;-1:-1:-1;7690:100:64;;-1:-1:-1;;;;;;;7690:100:64;;;-1:-1:-1;;;7690:100:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7825:3;7802:19;:17;:19::i;:::-;:26;;7794:108;;;;-1:-1:-1;;;7794:108:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7937:21;:3;2485:7;7937:21;:7;:21;:::i;:::-;7914:19;:17;:19::i;:::-;:44;;7906:108;;;;-1:-1:-1;;;7906:108:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8048:5;8019:26;;;:18;:26;;;;;:34;;-1:-1:-1;;8019:34:64;;;8088:23;;8058:21;;8084:145;;-1:-1:-1;8134:4:64;8084:145;;;8205:9;8189:27;;;;;;8219:4;8165:59;;;;;;-1:-1:-1;;;;;8165:59:64;;-1:-1:-1;;;;;8165:59:64;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8165:59:64;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8165:59:64;;;8154:70;;8084:145;8287:12;8301:23;8328:6;-1:-1:-1;;;;;8328:11:64;8346:5;8353:8;8328:34;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8328:34:64;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8286:76:64;;;;8371:7;8366:248;;1386:2:49;8389:10:64;:17;:40;8385:225;;8437:71;;-1:-1:-1;;;8437:71:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8385:225;8533:70;;;;;;;;;;;;;;;;;;8591:10;8533:16;:70::i;:::-;8526:78;;-1:-1:-1;;;8526:78:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8526:78:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8385:225;8650:6;-1:-1:-1;;;;;8623:63:64;8642:6;8623:63;8658:5;8665:9;8676:4;8682:3;8623:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8623:63:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8623:63:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8623:63:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8698:10;7347:1365;-1:-1:-1;;;;;;;;;7347:1365:64:o;4435:209::-;4491:12;;-1:-1:-1;;;;;4491:12:64;4477:10;:26;4469:95;;;;-1:-1:-1;;;4469:95:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4568:5;:18;;4576:10;-1:-1:-1;;;;;;4568:18:64;;;;;;;-1:-1:-1;4590:25:64;;;;;;;;4625:15;;-1:-1:-1;;;;;4634:5:64;;;;4625:15;;;4435:209::o;2619:27::-;;;-1:-1:-1;;;;;2619:27:64;;:::o;5457:578::-;5600:7;5635:5;;-1:-1:-1;;;;;5635:5:64;5621:10;:19;5613:86;;;;-1:-1:-1;;;5613:86:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5718:30;5742:5;;5718:19;:17;:19::i;:::-;:23;:30;:23;:30;:::i;:::-;5711:3;:37;;5703:123;;;;-1:-1:-1;;;5703:123:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5831:14;5869:6;5877:5;5884:9;5895:4;5901:3;5858:47;;;;;;-1:-1:-1;;;;;5858:47:64;-1:-1:-1;;;;;5858:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5858:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5858:47:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5858:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5858:47:64;;;5848:58;;;;;;5831:75;;5939:4;5910:18;:26;5929:6;5910:26;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;5978:6;-1:-1:-1;;;;;5953:61:64;5970:6;5953:61;5986:5;5993:9;6004:4;6010:3;5953:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5953:61:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5953:61:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5953:61:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6025:6;5457:578;-1:-1:-1;;;;;;5457:578:64:o;4769:230::-;4836:10;4858:4;4836:27;4828:96;;;;-1:-1:-1;;;4828:96:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4928:12;:28;;-1:-1:-1;;;;;;4928:28:64;-1:-1:-1;;;;;4928:28:64;;;;;;;;;;;4966:29;;4982:12;;;4966:29;;-1:-1:-1;;4966:29:64;4769:230;:::o;6461:420::-;6622:5;;-1:-1:-1;;;;;6622:5:64;6608:10;:19;6600:87;;;;-1:-1:-1;;;6600:87:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6692:14;6730:6;6738:5;6745:9;6756:4;6762:3;6719:47;;;;;;-1:-1:-1;;;;;6719:47:64;-1:-1:-1;;;;;6719:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6719:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6719:47:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6719:47:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6719:47:64;;;6709:58;;;;;;6692:75;;6800:5;6771:18;:26;6790:6;6771:26;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;6841:6;-1:-1:-1;;;;;6815:62:64;6833:6;6815:62;6849:5;6856:9;6867:4;6873:3;6815:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6815:62:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6815:62:64;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6815:62:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6461:420;;;;;;:::o;2649:20::-;;;;:::o;685:102:117:-;759:5;;-1:-1:-1;;;;;759:5:117;745:10;:19;737:28;;;;;;769:5;:14;;-1:-1:-1;;;;;;769:14:117;-1:-1:-1;;;;;769:14:117;;;;;;;;;;685:102::o;2545:47:64:-;2585:7;2545:47;:::o;2495:::-;2535:7;2495:47;:::o;2446:46::-;2485:7;2446:46;:::o;4002:369::-;4055:10;4077:4;4055:27;4047:89;;;;-1:-1:-1;;;4047:89:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2535:7;4148:6;:23;;4140:88;;;;-1:-1:-1;;;4140:88:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2585:7;4240:6;:23;;4232:92;;;;-1:-1:-1;;;4232:92:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4328:5;:14;;;4352:15;;4336:6;;4352:15;;;;;4002:369;:::o;2673:50::-;;;;;;;;;;;;;;;:::o;790:97:117:-;856:12;-1:-1:-1;;;;;856:25:117;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;856:27:117;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;856:27:117;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;790:97:117:o;2596:20:64:-;;;-1:-1:-1;;;;;2596:20:64;;:::o;9013:147::-;9141:15;9013:147;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;1719:569:49:-;1808:13;1827:22;1858:4;1827:36;;1867:22;1898:4;1867:36;;1907:19;1386:2;1959:9;:16;1940:9;:16;:35;:57;1929:69;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;1929:69:49;87:34:-1;135:17;;-1:-1;1929:69:49;-1:-1:-1;1907:91:49;-1:-1:-1;1907:91:49;2044:9;;2061:87;2085:9;:16;2081:1;:20;2061:87;;;2131:9;2141:1;2131:12;;;;;;;;;;;;;;;;2113:10;2124:3;;;;;;2113:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2113:30:49;;;;;;;;-1:-1:-1;2103:3:49;;2061:87;;;-1:-1:-1;1386:2:49;2151:105;2193:9;:16;2189:1;:20;2151:105;;;2239:9;2249:1;2239:12;;;;;;;;;;;;;;;;2221:10;2232:3;;;;;;2221:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2221:30:49;;;;;;;;-1:-1:-1;2211:3:49;;2151:105;;;-1:-1:-1;2273:10:49;;1719:569;-1:-1:-1;;;;;;;1719:569:49:o"
            },
            "methodIdentifiers": {
              "GRACE_PERIOD()": "c1a287e2",
              "MAXIMUM_DELAY()": "7d645fab",
              "MINIMUM_DELAY()": "b1b43ae5",
              "acceptAdmin()": "0e18b681",
              "admin()": "f851a440",
              "cancelTransaction(address,uint256,string,bytes,uint256)": "591fcdfe",
              "delay()": "6a42b8f8",
              "executeTransaction(address,uint256,string,bytes,uint256)": "0825f38f",
              "harnessAcceptAdmin(address)": "f79efaf1",
              "harnessSetAdmin(address)": "72b812b4",
              "pendingAdmin()": "26782247",
              "queueTransaction(address,uint256,string,bytes,uint256)": "3a66f901",
              "queuedTransactions(bytes32)": "f2b06537",
              "setDelay(uint256)": "e177246e",
              "setPendingAdmin(address)": "4dd18bf5"
            }
          },
          "userdoc": {
            "methods": {
              "acceptAdmin()": {
                "notice": "Accept a new admin for the timelock."
              },
              "cancelTransaction(address,uint256,string,bytes,uint256)": {
                "notice": "Cancel a transaction."
              },
              "executeTransaction(address,uint256,string,bytes,uint256)": {
                "notice": "Executes a previously queued transaction from the governance."
              },
              "queueTransaction(address,uint256,string,bytes,uint256)": {
                "notice": "Queue a new transaction from the governance contract."
              },
              "setDelay(uint256)": {
                "notice": "Set a new delay when executing the contract calls."
              },
              "setPendingAdmin(address)": {
                "notice": "Set a new pending admin for the timelock."
              }
            }
          }
        }
      },
      "contracts/mockup/VestingLogicMockup.sol": {
        "VestingLogicMockup": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanPoolToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint32",
                  "name": "maxCheckpoints",
                  "type": "uint32"
                }
              ],
              "name": "DividendsCollected",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newStakingContract",
                  "type": "address"
                }
              ],
              "name": "MigratedToNewStakingContract",
              "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": "caller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "TokensWithdrawn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "VotesDelegated",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "cliff",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_loanPoolToken",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "_maxCheckpoints",
                  "type": "uint32"
                },
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                }
              ],
              "name": "collectDividends",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_delegatee",
                  "type": "address"
                }
              ],
              "name": "delegate",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "duration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "endDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharingProxy",
              "outputs": [
                {
                  "internalType": "contract IFeeSharingProxy",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "governanceWithdrawTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "migrateToNewStakingContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "receiveApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "stakeTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "stakeTokensWithApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "contract Staking",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "startDate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tokenOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "withdrawTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "collectDividends(address,uint32,address)": {
                "params": {
                  "_loanPoolToken": "The loan pool token address.",
                  "_maxCheckpoints": "Maximum number of checkpoints to be processed.",
                  "_receiver": "The receiver of tokens or msg.sender"
                }
              },
              "delegate(address)": {
                "details": "we had a bug in a loop: \"i < endDate\" instead of \"i <= endDate\""
              },
              "governanceWithdrawTokens(address)": {
                "details": "Can be called only by owner.",
                "params": {
                  "receiver": "The receiving address."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "receiveApproval(address,uint256,address,bytes)": {
                "params": {
                  "_data": "The data will be used for low level call."
                }
              },
              "stakeTokens(uint256)": {
                "params": {
                  "_amount": "The amount of tokens to stake."
                }
              },
              "stakeTokensWithApproval(address,uint256)": {
                "details": "This function will be invoked from receiveApproval.SOV.approveAndCall -> this.receiveApproval -> this.stakeTokensWithApproval",
                "params": {
                  "_amount": "The amount of tokens to stake.",
                  "_sender": "The sender of SOV.approveAndCall"
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "withdrawTokens(address)": {
                "params": {
                  "receiver": "The receiving address."
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b611a16806100796000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80636a26b57f116100ad5780638f32d59b116100715780638f32d59b1461020a5780638f4ffcb11461021f578063a3e6761014610232578063c24a0f8b1461023a578063f2fde38b1461024257610121565b80636a26b57f146101b45780637547c7a3146101bc57806378f24bc6146101cf57806381e45268146101e25780638da5cb5b146101f557610121565b806349df728c116100f457806349df728c146101695780634cf088d91461017e5780635419675f146101865780635c19a95c1461018e57806362dc2f35146101a157610121565b806308dcb360146101265780630b97bc86146101445780630fb5a6b41461015957806313d033c014610161575b600080fd5b61012e610255565b60405161013b91906117d3565b60405180910390f35b61014c610264565b60405161013b9190611872565b61014c61026a565b61014c610270565b61017c61017736600461123e565b610276565b005b61012e6102c5565b61017c6102d4565b61017c61019c36600461123e565b610455565b61017c6101af36600461133a565b61056d565b61012e61067a565b61017c6101ca3660046113e8565b610689565b61017c6101dd36600461123e565b610693565b61017c6101f0366004611282565b6106c8565b6101fd6106f5565b60405161013b9190611709565b610212610704565b60405161013b91906117c5565b61017c61022d3660046112bc565b610728565b6101fd61091c565b61014c61092b565b61017c61025036600461123e565b610931565b6001546001600160a01b031681565b60075481565b60065481565b60055481565b6003546001600160a01b03163314806102925750610292610704565b6102b75760405162461bcd60e51b81526004016102ae90611832565b60405180910390fd5b6102c281600061095e565b50565b6002546001600160a01b031681565b6003546001600160a01b03163314806102f057506102f0610704565b61030c5760405162461bcd60e51b81526004016102ae90611832565b600260009054906101000a90046001600160a01b03166001600160a01b0316635419675f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035c57600080fd5b505af1158015610370573d6000803e3d6000fd5b50505050600260009054906101000a90046001600160a01b03166001600160a01b031663ae81dfe46040518163ffffffff1660e01b815260040160206040518083038186803b1580156103c257600080fd5b505afa1580156103d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103fa9190810190611264565b600280546001600160a01b0319166001600160a01b03928316179081905560405133927f9613f431247983a83a2b3667aa63a5174194ac89328dfadc69be44409521b3c19261044b92911690611709565b60405180910390a2565b6003546001600160a01b0316331461047f5760405162461bcd60e51b81526004016102ae90611832565b6001600160a01b0381166104a55760405162461bcd60e51b81526004016102ae90611842565b600554600754015b6008548110156105285760025460405163026e402b60e01b81526001600160a01b039091169063026e402b906104e99085908590600401611767565b600060405180830381600087803b15801561050357600080fd5b505af1158015610517573d6000803e3d6000fd5b505050506224ea00810190506104ad565b50336001600160a01b03167f734a802cc194e2139bfcc08e10336f24dfa14fd2c5ab70268d8706c055867066826040516105629190611709565b60405180910390a250565b6003546001600160a01b03163314806105895750610589610704565b6105a55760405162461bcd60e51b81526004016102ae90611832565b6001600160a01b0381166105cb5760405162461bcd60e51b81526004016102ae90611852565b6004805460405163a965b3a960e01b81526001600160a01b039091169163a965b3a9916105fe918791879187910161179d565b600060405180830381600087803b15801561061857600080fd5b505af115801561062c573d6000803e3d6000fd5b50505050336001600160a01b03167f5fa0b381cb4bdbc7063d1e5c78b90a634a6d6a12d6cb6fabe450fd4b8d1eab0184838560405161066d9392919061173f565b60405180910390a2505050565b6004546001600160a01b031681565b6102c23382610bfd565b6002546001600160a01b031633146106bd5760405162461bcd60e51b81526004016102ae90611832565b6102c281600161095e565b3330146106e75760405162461bcd60e51b81526004016102ae90611832565b6106f18282610bfd565b5050565b6000546001600160a01b031690565b600080546001600160a01b0316610719610edf565b6001600160a01b031614905090565b610730610ee3565b6001600160a01b0316336001600160a01b0316146107605760405162461bcd60e51b81526004016102ae90611832565b336001600160a01b038416146107885760405162461bcd60e51b81526004016102ae90611832565b60006060610794610ef2565b905060006107d785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f4a92505050565b905060005b8251811015610825578281815181106107f157fe5b60200260200101516001600160e01b031916826001600160e01b031916141561081d5760019350610825565b6001016107dc565b50826108435760405162461bcd60e51b81526004016102ae90611812565b600080600060201b878760405160200161085f939291906116d0565b60405160208183030381529060405280602001905161088191908101906113a5565b9093509150506001600160a01b03808316908b16146108b25760405162461bcd60e51b81526004016102ae90611822565b8881146108d15760405162461bcd60e51b81526004016102ae90611862565b61091087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f5192505050565b50505050505050505050565b6003546001600160a01b031681565b60085481565b610939610704565b6109555760405162461bcd60e51b81526004016102ae90611832565b6102c28161102b565b6001600160a01b0382166109845760405162461bcd60e51b81526004016102ae90611852565b600080600260009054906101000a90046001600160a01b03166001600160a01b0316639929e8866040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d557600080fd5b505afa1580156109e9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a0d9190810190611387565b80610a155750825b15610a235750600854610a26565b50425b600554600754015b818111610bb5576002546040516367bdb42560e11b81526001600160a01b039091169063cf7b684a90610a6d9030908590600019430190600401611782565b60206040518083038186803b158015610a8557600080fd5b505afa158015610a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610abd9190810190611424565b92506bffffffffffffffffffffffff831615610bab578315610b4457600254604051634005b26560e11b81526001600160a01b039091169063800b64ca90610b0d90869085908a906004016118da565b600060405180830381600087803b158015610b2757600080fd5b505af1158015610b3b573d6000803e3d6000fd5b50505050610bab565b6002546040516336adb29160e21b81526001600160a01b039091169063dab6ca4490610b7890869085908a906004016118da565b600060405180830381600087803b158015610b9257600080fd5b505af1158015610ba6573d6000803e3d6000fd5b505050505b6224ea0001610a2e565b50336001600160a01b03167f351b2b7a8b3659a02c6c87ac06e00099a1e5979171161a69eab5d057deb838ec85604051610bef9190611709565b60405180910390a250505050565b600754610c88576002546040516372ec979560e01b81526001600160a01b03909116906372ec979590610c34904290600401611872565b60206040518083038186803b158015610c4c57600080fd5b505afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c849190810190611406565b6007555b6002546006546040516372ec979560e01b81526001600160a01b03909216916372ec979591610cbe914290910190600401611872565b60206040518083038186803b158015610cd657600080fd5b505afa158015610cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d0e9190810190611406565b6008556001546040516323b872dd60e01b81526000916001600160a01b0316906323b872dd90610d4690869030908790600401611717565b602060405180830381600087803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d989190810190611387565b905080610da457600080fd5b60015460025460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392610dda929116908690600401611767565b602060405180830381600087803b158015610df457600080fd5b505af1158015610e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2c9190810190611387565b50600254600554600654600354604051632597f50f60e11b81526001600160a01b0394851694634b2fea1e94610e74948994919390926224ea00923092911690600401611880565b600060405180830381600087803b158015610e8e57600080fd5b505af1158015610ea2573d6000803e3d6000fd5b50505050826001600160a01b03167fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef8360405161066d9190611872565b3390565b6001546001600160a01b031690565b604080516001808252818301909252606091829190602080830190803883390190505090506381e4526860e01b81600081518110610f2c57fe5b6001600160e01b031990921660209283029190910190910152905090565b6020015190565b60006060306001600160a01b031683604051610f6d91906116f6565b6000604051808303816000865af19150503d8060008114610faa576040519150601f19603f3d011682016040523d82523d6000602084013e610faf565b606091505b509150915081611026576044815111610fda5760405162461bcd60e51b81526004016102ae906117f2565b61100d6040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b815250826110ac565b60405162461bcd60e51b81526004016102ae91906117e1565b505050565b6001600160a01b0381166110515760405162461bcd60e51b81526004016102ae90611802565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6060808390506060839050606060448251845101036040519080825280601f01601f1916602001820160405280156110eb576020820181803883390190505b509050806000805b85518110156111445785818151811061110857fe5b602001015160f81c60f81b83838060010194508151811061112557fe5b60200101906001600160f81b031916908160001a9053506001016110f3565b5060445b84518110156111995784818151811061115d57fe5b602001015160f81c60f81b83838060010194508151811061117a57fe5b60200101906001600160f81b031916908160001a905350600101611148565b50909450505050505b92915050565b80356111a28161199b565b80516111a28161199b565b80516111a2816119af565b80516111a2816119b8565b60008083601f8401126111e657600080fd5b50813567ffffffffffffffff8111156111fe57600080fd5b60208301915083600182028301111561121657600080fd5b9250929050565b80356111a2816119b8565b80356111a2816119c1565b80516111a2816119ca565b60006020828403121561125057600080fd5b600061125c84846111a8565b949350505050565b60006020828403121561127657600080fd5b600061125c84846111b3565b6000806040838503121561129557600080fd5b60006112a185856111a8565b92505060206112b28582860161121d565b9150509250929050565b6000806000806000608086880312156112d457600080fd5b60006112e088886111a8565b95505060206112f18882890161121d565b9450506040611302888289016111a8565b935050606086013567ffffffffffffffff81111561131f57600080fd5b61132b888289016111d4565b92509250509295509295909350565b60008060006060848603121561134f57600080fd5b600061135b86866111a8565b935050602061136c86828701611228565b925050604061137d868287016111a8565b9150509250925092565b60006020828403121561139957600080fd5b600061125c84846111be565b6000806000606084860312156113ba57600080fd5b60006113c686866111c9565b93505060206113d7868287016111b3565b925050604061137d868287016111c9565b6000602082840312156113fa57600080fd5b600061125c848461121d565b60006020828403121561141857600080fd5b600061125c84846111c9565b60006020828403121561143657600080fd5b600061125c8484611233565b61144b81611907565b82525050565b61144b81611912565b61144b61146682611917565b611921565b600061147783856118f9565b9350611484838584611955565b50500190565b6000611495826118f5565b61149f81856118f9565b93506114af818560208601611961565b9290920192915050565b61144b8161194a565b60006114cd826118f5565b6114d781856118fe565b93506114e7818560208601611961565b6114f081611991565b9093019392505050565b60006115076030836118fe565b7f72656365697665417070726f76616c3a205472616e73616374696f6e2065786581526f31baba34b7b7103932bb32b93a32b21760811b602082015260400192915050565b60006115596026836118fe565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006115a16015836118fe565b741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b815260200192915050565b60006115d2600f836118fe565b6e0e6cadcc8cae440dad2e6dac2e8c6d608b1b815260200192915050565b60006115fd600c836118fe565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006116256019836118fe565b7f64656c656761746565206164647265737320696e76616c696400000000000000815260200192915050565b600061165e6018836118fe565b7f7265636569766572206164647265737320696e76616c69640000000000000000815260200192915050565b6000611697600f836118fe565b6e0c2dadeeadce840dad2e6dac2e8c6d608b1b815260200192915050565b61144b81611921565b61144b81611930565b61144b81611939565b60006116dc828661145a565b601c820191506116ed82848661146b565b95945050505050565b6000611702828461148a565b9392505050565b602081016111a28284611442565b606081016117258286611442565b6117326020830185611442565b61125c60408301846116b5565b6060810161174d8286611442565b61175a6020830185611442565b61125c60408301846116be565b604081016117758285611442565b61170260208301846116b5565b606081016117908286611442565b61173260208301856116b5565b606081016117ab8286611442565b6117b860208301856116be565b61125c6040830184611442565b602081016111a28284611451565b602081016111a282846114b9565b6020808252810161170281846114c2565b602080825281016111a2816114fa565b602080825281016111a28161154c565b602080825281016111a281611594565b602080825281016111a2816115c5565b602080825281016111a2816115f0565b602080825281016111a281611618565b602080825281016111a281611651565b602080825281016111a28161168a565b602081016111a282846116b5565b60c0810161188e82896116b5565b61189b60208301886116b5565b6118a860408301876116b5565b6118b560608301866116b5565b6118c26080830185611442565b6118cf60a0830184611442565b979650505050505050565b606081016118e882866116c7565b6117b860208301856116b5565b5190565b919050565b90815260200190565b60006111a282611924565b151590565b63ffffffff191690565b90565b6001600160a01b031690565b63ffffffff1690565b6bffffffffffffffffffffffff1690565b60006111a282611907565b82818337506000910152565b60005b8381101561197c578181015183820152602001611964565b8381111561198b576000848401525b50505050565b601f01601f191690565b6119a481611907565b81146102c257600080fd5b6119a481611912565b6119a481611921565b6119a481611930565b6119a48161193956fea365627a7a7231582061b07e0234ac578a8105777d24b9c1f3d872e7883d13ac507b8e4f773e5098a86c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x1A16 DUP1 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x121 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A26B57F GT PUSH2 0xAD JUMPI DUP1 PUSH4 0x8F32D59B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x242 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x7547C7A3 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0x78F24BC6 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x81E45268 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1F5 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x49DF728C GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x49DF728C EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0x5419675F EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0x62DC2F35 EQ PUSH2 0x1A1 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x161 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12E PUSH2 0x255 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x1872 JUMP JUMPDEST PUSH2 0x14C PUSH2 0x26A JUMP JUMPDEST PUSH2 0x14C PUSH2 0x270 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x177 CALLDATASIZE PUSH1 0x4 PUSH2 0x123E JUMP JUMPDEST PUSH2 0x276 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12E PUSH2 0x2C5 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x2D4 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x19C CALLDATASIZE PUSH1 0x4 PUSH2 0x123E JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1AF CALLDATASIZE PUSH1 0x4 PUSH2 0x133A JUMP JUMPDEST PUSH2 0x56D JUMP JUMPDEST PUSH2 0x12E PUSH2 0x67A JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1CA CALLDATASIZE PUSH1 0x4 PUSH2 0x13E8 JUMP JUMPDEST PUSH2 0x689 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0x123E JUMP JUMPDEST PUSH2 0x693 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1282 JUMP JUMPDEST PUSH2 0x6C8 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x6F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH2 0x212 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17C5 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x22D CALLDATASIZE PUSH1 0x4 PUSH2 0x12BC JUMP JUMPDEST PUSH2 0x728 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x91C JUMP JUMPDEST PUSH2 0x14C PUSH2 0x92B JUMP JUMPDEST PUSH2 0x17C PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x123E JUMP JUMPDEST PUSH2 0x931 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x292 JUMPI POP PUSH2 0x292 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x2B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C2 DUP2 PUSH1 0x0 PUSH2 0x95E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x2F0 JUMPI POP PUSH2 0x2F0 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x30C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5419675F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x370 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAE81DFE4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3FA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1264 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP3 PUSH32 0x9613F431247983A83A2B3667AA63A5174194AC89328DFADC69BE44409521B3C1 SWAP3 PUSH2 0x44B SWAP3 SWAP2 AND SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x47F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x4A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1842 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x7 SLOAD ADD JUMPDEST PUSH1 0x8 SLOAD DUP2 LT ISZERO PUSH2 0x528 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x26E402B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x26E402B SWAP1 PUSH2 0x4E9 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1767 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x517 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH3 0x24EA00 DUP2 ADD SWAP1 POP PUSH2 0x4AD JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x734A802CC194E2139BFCC08E10336F24DFA14FD2C5AB70268D8706C055867066 DUP3 PUSH1 0x40 MLOAD PUSH2 0x562 SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x589 JUMPI POP PUSH2 0x589 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x5A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1852 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA965B3A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0xA965B3A9 SWAP2 PUSH2 0x5FE SWAP2 DUP8 SWAP2 DUP8 SWAP2 DUP8 SWAP2 ADD PUSH2 0x179D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x62C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5FA0B381CB4BDBC7063D1E5C78B90A634A6D6A12D6CB6FABE450FD4B8D1EAB01 DUP5 DUP4 DUP6 PUSH1 0x40 MLOAD PUSH2 0x66D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x173F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2C2 CALLER DUP3 PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6BD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH2 0x2C2 DUP2 PUSH1 0x1 PUSH2 0x95E JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x6E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH2 0x6F1 DUP3 DUP3 PUSH2 0xBFD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x719 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x730 PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x760 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x788 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x794 PUSH2 0xEF2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7D7 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xF4A SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x825 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x7F1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0x81D JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0x825 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x7DC JUMP JUMPDEST POP DUP3 PUSH2 0x843 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1812 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 SHL DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x85F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x881 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x13A5 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0x8B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1822 JUMP JUMPDEST DUP9 DUP2 EQ PUSH2 0x8D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1862 JUMP JUMPDEST PUSH2 0x910 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xF51 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x939 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x955 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH2 0x2C2 DUP2 PUSH2 0x102B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x984 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1852 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9929E886 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xA0D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1387 JUMP JUMPDEST DUP1 PUSH2 0xA15 JUMPI POP DUP3 JUMPDEST ISZERO PUSH2 0xA23 JUMPI POP PUSH1 0x8 SLOAD PUSH2 0xA26 JUMP JUMPDEST POP TIMESTAMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x7 SLOAD ADD JUMPDEST DUP2 DUP2 GT PUSH2 0xBB5 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x67BDB425 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xCF7B684A SWAP1 PUSH2 0xA6D SWAP1 ADDRESS SWAP1 DUP6 SWAP1 PUSH1 0x0 NOT NUMBER ADD SWAP1 PUSH1 0x4 ADD PUSH2 0x1782 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xABD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1424 JUMP JUMPDEST SWAP3 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO PUSH2 0xBAB JUMPI DUP4 ISZERO PUSH2 0xB44 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x4005B265 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x800B64CA SWAP1 PUSH2 0xB0D SWAP1 DUP7 SWAP1 DUP6 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x36ADB291 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xDAB6CA44 SWAP1 PUSH2 0xB78 SWAP1 DUP7 SWAP1 DUP6 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH3 0x24EA00 ADD PUSH2 0xA2E JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x351B2B7A8B3659A02C6C87AC06E00099A1E5979171161A69EAB5D057DEB838EC DUP6 PUSH1 0x40 MLOAD PUSH2 0xBEF SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0xC88 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x72EC9795 SWAP1 PUSH2 0xC34 SWAP1 TIMESTAMP SWAP1 PUSH1 0x4 ADD PUSH2 0x1872 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC84 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1406 JUMP JUMPDEST PUSH1 0x7 SSTORE JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x72EC9795 SWAP2 PUSH2 0xCBE SWAP2 TIMESTAMP SWAP1 SWAP2 ADD SWAP1 PUSH1 0x4 ADD PUSH2 0x1872 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD0E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1406 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0xD46 SWAP1 DUP7 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1717 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD98 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1387 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xDA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0xDDA SWAP3 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1767 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE08 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xE2C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1387 JUMP JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2597F50F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND SWAP5 PUSH4 0x4B2FEA1E SWAP5 PUSH2 0xE74 SWAP5 DUP10 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH3 0x24EA00 SWAP3 ADDRESS SWAP3 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1880 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x66D SWAP2 SWAP1 PUSH2 0x1872 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH4 0x81E45268 PUSH1 0xE0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF2C JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xF6D SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xFAA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xFAF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1026 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0xFDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x17F2 JUMP JUMPDEST PUSH2 0x100D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x10AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0x17E1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1051 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1802 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x10EB JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x1144 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1108 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1125 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x10F3 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1199 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x115D JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x117A JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1148 JUMP JUMPDEST POP SWAP1 SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x11A2 DUP2 PUSH2 0x199B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A2 DUP2 PUSH2 0x199B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A2 DUP2 PUSH2 0x19AF JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A2 DUP2 PUSH2 0x19B8 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x11E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x11A2 DUP2 PUSH2 0x19B8 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x11A2 DUP2 PUSH2 0x19C1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A2 DUP2 PUSH2 0x19CA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP5 DUP5 PUSH2 0x11A8 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP5 DUP5 PUSH2 0x11B3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12A1 DUP6 DUP6 PUSH2 0x11A8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x12B2 DUP6 DUP3 DUP7 ADD PUSH2 0x121D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12E0 DUP9 DUP9 PUSH2 0x11A8 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x12F1 DUP9 DUP3 DUP10 ADD PUSH2 0x121D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x1302 DUP9 DUP3 DUP10 ADD PUSH2 0x11A8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x131F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x132B DUP9 DUP3 DUP10 ADD PUSH2 0x11D4 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x134F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x135B DUP7 DUP7 PUSH2 0x11A8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x136C DUP7 DUP3 DUP8 ADD PUSH2 0x1228 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x137D DUP7 DUP3 DUP8 ADD PUSH2 0x11A8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP5 DUP5 PUSH2 0x11BE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x13BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13C6 DUP7 DUP7 PUSH2 0x11C9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x13D7 DUP7 DUP3 DUP8 ADD PUSH2 0x11B3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x137D DUP7 DUP3 DUP8 ADD PUSH2 0x11C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP5 DUP5 PUSH2 0x121D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP5 DUP5 PUSH2 0x11C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP5 DUP5 PUSH2 0x1233 JUMP JUMPDEST PUSH2 0x144B DUP2 PUSH2 0x1907 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x144B DUP2 PUSH2 0x1912 JUMP JUMPDEST PUSH2 0x144B PUSH2 0x1466 DUP3 PUSH2 0x1917 JUMP JUMPDEST PUSH2 0x1921 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1477 DUP4 DUP6 PUSH2 0x18F9 JUMP JUMPDEST SWAP4 POP PUSH2 0x1484 DUP4 DUP6 DUP5 PUSH2 0x1955 JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1495 DUP3 PUSH2 0x18F5 JUMP JUMPDEST PUSH2 0x149F DUP2 DUP6 PUSH2 0x18F9 JUMP JUMPDEST SWAP4 POP PUSH2 0x14AF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1961 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x144B DUP2 PUSH2 0x194A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CD DUP3 PUSH2 0x18F5 JUMP JUMPDEST PUSH2 0x14D7 DUP2 DUP6 PUSH2 0x18FE JUMP JUMPDEST SWAP4 POP PUSH2 0x14E7 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1961 JUMP JUMPDEST PUSH2 0x14F0 DUP2 PUSH2 0x1991 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1507 PUSH1 0x30 DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH32 0x72656365697665417070726F76616C3A205472616E73616374696F6E20657865 DUP2 MSTORE PUSH16 0x31BABA34B7B7103932BB32B93A32B217 PUSH1 0x81 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1559 PUSH1 0x26 DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15A1 PUSH1 0x15 DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15D2 PUSH1 0xF DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15FD PUSH1 0xC DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1625 PUSH1 0x19 DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH32 0x64656C656761746565206164647265737320696E76616C696400000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165E PUSH1 0x18 DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1697 PUSH1 0xF DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x144B DUP2 PUSH2 0x1921 JUMP JUMPDEST PUSH2 0x144B DUP2 PUSH2 0x1930 JUMP JUMPDEST PUSH2 0x144B DUP2 PUSH2 0x1939 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16DC DUP3 DUP7 PUSH2 0x145A JUMP JUMPDEST PUSH1 0x1C DUP3 ADD SWAP2 POP PUSH2 0x16ED DUP3 DUP5 DUP7 PUSH2 0x146B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1702 DUP3 DUP5 PUSH2 0x148A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A2 DUP3 DUP5 PUSH2 0x1442 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1725 DUP3 DUP7 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x1732 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x125C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x16B5 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x174D DUP3 DUP7 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x175A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x125C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x16BE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x1775 DUP3 DUP6 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x1702 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x16B5 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1790 DUP3 DUP7 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x1732 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x16B5 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x17AB DUP3 DUP7 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x17B8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x16BE JUMP JUMPDEST PUSH2 0x125C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1442 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A2 DUP3 DUP5 PUSH2 0x1451 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A2 DUP3 DUP5 PUSH2 0x14B9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1702 DUP2 DUP5 PUSH2 0x14C2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x14FA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x1594 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x15C5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x15F0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x1618 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x1651 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x168A JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A2 DUP3 DUP5 PUSH2 0x16B5 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x188E DUP3 DUP10 PUSH2 0x16B5 JUMP JUMPDEST PUSH2 0x189B PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x16B5 JUMP JUMPDEST PUSH2 0x18A8 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x16B5 JUMP JUMPDEST PUSH2 0x18B5 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x16B5 JUMP JUMPDEST PUSH2 0x18C2 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x18CF PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1442 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x18E8 DUP3 DUP7 PUSH2 0x16C7 JUMP JUMPDEST PUSH2 0x17B8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x16B5 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11A2 DUP3 PUSH2 0x1924 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF NOT AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11A2 DUP3 PUSH2 0x1907 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x197C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1964 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x198B JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x19A4 DUP2 PUSH2 0x1907 JUMP JUMPDEST DUP2 EQ PUSH2 0x2C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A4 DUP2 PUSH2 0x1912 JUMP JUMPDEST PUSH2 0x19A4 DUP2 PUSH2 0x1921 JUMP JUMPDEST PUSH2 0x19A4 DUP2 PUSH2 0x1930 JUMP JUMPDEST PUSH2 0x19A4 DUP2 PUSH2 0x1939 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH2 0xB07E MUL CALLVALUE 0xAC JUMPI DUP11 DUP2 SDIV PUSH24 0x7D24B9C1F3D872E7883D13AC507B8E4F773E5098A86C6578 PUSH17 0x6572696D656E74616CF564736F6C634300 SDIV GT STOP BLOCKHASH ",
              "sourceMap": "110:628:118:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;110:628:118;;780:87:137;853:10;780:87;:::o;110:628:118:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101215760003560e01c80636a26b57f116100ad5780638f32d59b116100715780638f32d59b1461020a5780638f4ffcb11461021f578063a3e6761014610232578063c24a0f8b1461023a578063f2fde38b1461024257610121565b80636a26b57f146101b45780637547c7a3146101bc57806378f24bc6146101cf57806381e45268146101e25780638da5cb5b146101f557610121565b806349df728c116100f457806349df728c146101695780634cf088d91461017e5780635419675f146101865780635c19a95c1461018e57806362dc2f35146101a157610121565b806308dcb360146101265780630b97bc86146101445780630fb5a6b41461015957806313d033c014610161575b600080fd5b61012e610255565b60405161013b91906117d3565b60405180910390f35b61014c610264565b60405161013b9190611872565b61014c61026a565b61014c610270565b61017c61017736600461123e565b610276565b005b61012e6102c5565b61017c6102d4565b61017c61019c36600461123e565b610455565b61017c6101af36600461133a565b61056d565b61012e61067a565b61017c6101ca3660046113e8565b610689565b61017c6101dd36600461123e565b610693565b61017c6101f0366004611282565b6106c8565b6101fd6106f5565b60405161013b9190611709565b610212610704565b60405161013b91906117c5565b61017c61022d3660046112bc565b610728565b6101fd61091c565b61014c61092b565b61017c61025036600461123e565b610931565b6001546001600160a01b031681565b60075481565b60065481565b60055481565b6003546001600160a01b03163314806102925750610292610704565b6102b75760405162461bcd60e51b81526004016102ae90611832565b60405180910390fd5b6102c281600061095e565b50565b6002546001600160a01b031681565b6003546001600160a01b03163314806102f057506102f0610704565b61030c5760405162461bcd60e51b81526004016102ae90611832565b600260009054906101000a90046001600160a01b03166001600160a01b0316635419675f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035c57600080fd5b505af1158015610370573d6000803e3d6000fd5b50505050600260009054906101000a90046001600160a01b03166001600160a01b031663ae81dfe46040518163ffffffff1660e01b815260040160206040518083038186803b1580156103c257600080fd5b505afa1580156103d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103fa9190810190611264565b600280546001600160a01b0319166001600160a01b03928316179081905560405133927f9613f431247983a83a2b3667aa63a5174194ac89328dfadc69be44409521b3c19261044b92911690611709565b60405180910390a2565b6003546001600160a01b0316331461047f5760405162461bcd60e51b81526004016102ae90611832565b6001600160a01b0381166104a55760405162461bcd60e51b81526004016102ae90611842565b600554600754015b6008548110156105285760025460405163026e402b60e01b81526001600160a01b039091169063026e402b906104e99085908590600401611767565b600060405180830381600087803b15801561050357600080fd5b505af1158015610517573d6000803e3d6000fd5b505050506224ea00810190506104ad565b50336001600160a01b03167f734a802cc194e2139bfcc08e10336f24dfa14fd2c5ab70268d8706c055867066826040516105629190611709565b60405180910390a250565b6003546001600160a01b03163314806105895750610589610704565b6105a55760405162461bcd60e51b81526004016102ae90611832565b6001600160a01b0381166105cb5760405162461bcd60e51b81526004016102ae90611852565b6004805460405163a965b3a960e01b81526001600160a01b039091169163a965b3a9916105fe918791879187910161179d565b600060405180830381600087803b15801561061857600080fd5b505af115801561062c573d6000803e3d6000fd5b50505050336001600160a01b03167f5fa0b381cb4bdbc7063d1e5c78b90a634a6d6a12d6cb6fabe450fd4b8d1eab0184838560405161066d9392919061173f565b60405180910390a2505050565b6004546001600160a01b031681565b6102c23382610bfd565b6002546001600160a01b031633146106bd5760405162461bcd60e51b81526004016102ae90611832565b6102c281600161095e565b3330146106e75760405162461bcd60e51b81526004016102ae90611832565b6106f18282610bfd565b5050565b6000546001600160a01b031690565b600080546001600160a01b0316610719610edf565b6001600160a01b031614905090565b610730610ee3565b6001600160a01b0316336001600160a01b0316146107605760405162461bcd60e51b81526004016102ae90611832565b336001600160a01b038416146107885760405162461bcd60e51b81526004016102ae90611832565b60006060610794610ef2565b905060006107d785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f4a92505050565b905060005b8251811015610825578281815181106107f157fe5b60200260200101516001600160e01b031916826001600160e01b031916141561081d5760019350610825565b6001016107dc565b50826108435760405162461bcd60e51b81526004016102ae90611812565b600080600060201b878760405160200161085f939291906116d0565b60405160208183030381529060405280602001905161088191908101906113a5565b9093509150506001600160a01b03808316908b16146108b25760405162461bcd60e51b81526004016102ae90611822565b8881146108d15760405162461bcd60e51b81526004016102ae90611862565b61091087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f5192505050565b50505050505050505050565b6003546001600160a01b031681565b60085481565b610939610704565b6109555760405162461bcd60e51b81526004016102ae90611832565b6102c28161102b565b6001600160a01b0382166109845760405162461bcd60e51b81526004016102ae90611852565b600080600260009054906101000a90046001600160a01b03166001600160a01b0316639929e8866040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d557600080fd5b505afa1580156109e9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a0d9190810190611387565b80610a155750825b15610a235750600854610a26565b50425b600554600754015b818111610bb5576002546040516367bdb42560e11b81526001600160a01b039091169063cf7b684a90610a6d9030908590600019430190600401611782565b60206040518083038186803b158015610a8557600080fd5b505afa158015610a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610abd9190810190611424565b92506bffffffffffffffffffffffff831615610bab578315610b4457600254604051634005b26560e11b81526001600160a01b039091169063800b64ca90610b0d90869085908a906004016118da565b600060405180830381600087803b158015610b2757600080fd5b505af1158015610b3b573d6000803e3d6000fd5b50505050610bab565b6002546040516336adb29160e21b81526001600160a01b039091169063dab6ca4490610b7890869085908a906004016118da565b600060405180830381600087803b158015610b9257600080fd5b505af1158015610ba6573d6000803e3d6000fd5b505050505b6224ea0001610a2e565b50336001600160a01b03167f351b2b7a8b3659a02c6c87ac06e00099a1e5979171161a69eab5d057deb838ec85604051610bef9190611709565b60405180910390a250505050565b600754610c88576002546040516372ec979560e01b81526001600160a01b03909116906372ec979590610c34904290600401611872565b60206040518083038186803b158015610c4c57600080fd5b505afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c849190810190611406565b6007555b6002546006546040516372ec979560e01b81526001600160a01b03909216916372ec979591610cbe914290910190600401611872565b60206040518083038186803b158015610cd657600080fd5b505afa158015610cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d0e9190810190611406565b6008556001546040516323b872dd60e01b81526000916001600160a01b0316906323b872dd90610d4690869030908790600401611717565b602060405180830381600087803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d989190810190611387565b905080610da457600080fd5b60015460025460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392610dda929116908690600401611767565b602060405180830381600087803b158015610df457600080fd5b505af1158015610e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2c9190810190611387565b50600254600554600654600354604051632597f50f60e11b81526001600160a01b0394851694634b2fea1e94610e74948994919390926224ea00923092911690600401611880565b600060405180830381600087803b158015610e8e57600080fd5b505af1158015610ea2573d6000803e3d6000fd5b50505050826001600160a01b03167fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef8360405161066d9190611872565b3390565b6001546001600160a01b031690565b604080516001808252818301909252606091829190602080830190803883390190505090506381e4526860e01b81600081518110610f2c57fe5b6001600160e01b031990921660209283029190910190910152905090565b6020015190565b60006060306001600160a01b031683604051610f6d91906116f6565b6000604051808303816000865af19150503d8060008114610faa576040519150601f19603f3d011682016040523d82523d6000602084013e610faf565b606091505b509150915081611026576044815111610fda5760405162461bcd60e51b81526004016102ae906117f2565b61100d6040518060400160405280601181526020017003932b1b2b4bb32a0b8383937bb30b61d1607d1b815250826110ac565b60405162461bcd60e51b81526004016102ae91906117e1565b505050565b6001600160a01b0381166110515760405162461bcd60e51b81526004016102ae90611802565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6060808390506060839050606060448251845101036040519080825280601f01601f1916602001820160405280156110eb576020820181803883390190505b509050806000805b85518110156111445785818151811061110857fe5b602001015160f81c60f81b83838060010194508151811061112557fe5b60200101906001600160f81b031916908160001a9053506001016110f3565b5060445b84518110156111995784818151811061115d57fe5b602001015160f81c60f81b83838060010194508151811061117a57fe5b60200101906001600160f81b031916908160001a905350600101611148565b50909450505050505b92915050565b80356111a28161199b565b80516111a28161199b565b80516111a2816119af565b80516111a2816119b8565b60008083601f8401126111e657600080fd5b50813567ffffffffffffffff8111156111fe57600080fd5b60208301915083600182028301111561121657600080fd5b9250929050565b80356111a2816119b8565b80356111a2816119c1565b80516111a2816119ca565b60006020828403121561125057600080fd5b600061125c84846111a8565b949350505050565b60006020828403121561127657600080fd5b600061125c84846111b3565b6000806040838503121561129557600080fd5b60006112a185856111a8565b92505060206112b28582860161121d565b9150509250929050565b6000806000806000608086880312156112d457600080fd5b60006112e088886111a8565b95505060206112f18882890161121d565b9450506040611302888289016111a8565b935050606086013567ffffffffffffffff81111561131f57600080fd5b61132b888289016111d4565b92509250509295509295909350565b60008060006060848603121561134f57600080fd5b600061135b86866111a8565b935050602061136c86828701611228565b925050604061137d868287016111a8565b9150509250925092565b60006020828403121561139957600080fd5b600061125c84846111be565b6000806000606084860312156113ba57600080fd5b60006113c686866111c9565b93505060206113d7868287016111b3565b925050604061137d868287016111c9565b6000602082840312156113fa57600080fd5b600061125c848461121d565b60006020828403121561141857600080fd5b600061125c84846111c9565b60006020828403121561143657600080fd5b600061125c8484611233565b61144b81611907565b82525050565b61144b81611912565b61144b61146682611917565b611921565b600061147783856118f9565b9350611484838584611955565b50500190565b6000611495826118f5565b61149f81856118f9565b93506114af818560208601611961565b9290920192915050565b61144b8161194a565b60006114cd826118f5565b6114d781856118fe565b93506114e7818560208601611961565b6114f081611991565b9093019392505050565b60006115076030836118fe565b7f72656365697665417070726f76616c3a205472616e73616374696f6e2065786581526f31baba34b7b7103932bb32b93a32b21760811b602082015260400192915050565b60006115596026836118fe565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006115a16015836118fe565b741b595d1a1bd9081a5cc81b9bdd08185b1b1bddd959605a1b815260200192915050565b60006115d2600f836118fe565b6e0e6cadcc8cae440dad2e6dac2e8c6d608b1b815260200192915050565b60006115fd600c836118fe565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006116256019836118fe565b7f64656c656761746565206164647265737320696e76616c696400000000000000815260200192915050565b600061165e6018836118fe565b7f7265636569766572206164647265737320696e76616c69640000000000000000815260200192915050565b6000611697600f836118fe565b6e0c2dadeeadce840dad2e6dac2e8c6d608b1b815260200192915050565b61144b81611921565b61144b81611930565b61144b81611939565b60006116dc828661145a565b601c820191506116ed82848661146b565b95945050505050565b6000611702828461148a565b9392505050565b602081016111a28284611442565b606081016117258286611442565b6117326020830185611442565b61125c60408301846116b5565b6060810161174d8286611442565b61175a6020830185611442565b61125c60408301846116be565b604081016117758285611442565b61170260208301846116b5565b606081016117908286611442565b61173260208301856116b5565b606081016117ab8286611442565b6117b860208301856116be565b61125c6040830184611442565b602081016111a28284611451565b602081016111a282846114b9565b6020808252810161170281846114c2565b602080825281016111a2816114fa565b602080825281016111a28161154c565b602080825281016111a281611594565b602080825281016111a2816115c5565b602080825281016111a2816115f0565b602080825281016111a281611618565b602080825281016111a281611651565b602080825281016111a28161168a565b602081016111a282846116b5565b60c0810161188e82896116b5565b61189b60208301886116b5565b6118a860408301876116b5565b6118b560608301866116b5565b6118c26080830185611442565b6118cf60a0830184611442565b979650505050505050565b606081016118e882866116c7565b6117b860208301856116b5565b5190565b919050565b90815260200190565b60006111a282611924565b151590565b63ffffffff191690565b90565b6001600160a01b031690565b63ffffffff1690565b6bffffffffffffffffffffffff1690565b60006111a282611907565b82818337506000910152565b60005b8381101561197c578181015183820152602001611964565b8381111561198b576000848401525b50505050565b601f01601f191690565b6119a481611907565b81146102c257600080fd5b6119a481611912565b6119a481611921565b6119a481611930565b6119a48161193956fea365627a7a7231582061b07e0234ac578a8105777d24b9c1f3d872e7883d13ac507b8e4f773e5098a86c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x121 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A26B57F GT PUSH2 0xAD JUMPI DUP1 PUSH4 0x8F32D59B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x8F4FFCB1 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0xA3E67610 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xC24A0F8B EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x242 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x7547C7A3 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0x78F24BC6 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x81E45268 EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1F5 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x49DF728C GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x49DF728C EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0x5419675F EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0x62DC2F35 EQ PUSH2 0x1A1 JUMPI PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xB97BC86 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xFB5A6B4 EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x13D033C0 EQ PUSH2 0x161 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12E PUSH2 0x255 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x1872 JUMP JUMPDEST PUSH2 0x14C PUSH2 0x26A JUMP JUMPDEST PUSH2 0x14C PUSH2 0x270 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x177 CALLDATASIZE PUSH1 0x4 PUSH2 0x123E JUMP JUMPDEST PUSH2 0x276 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12E PUSH2 0x2C5 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x2D4 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x19C CALLDATASIZE PUSH1 0x4 PUSH2 0x123E JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1AF CALLDATASIZE PUSH1 0x4 PUSH2 0x133A JUMP JUMPDEST PUSH2 0x56D JUMP JUMPDEST PUSH2 0x12E PUSH2 0x67A JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1CA CALLDATASIZE PUSH1 0x4 PUSH2 0x13E8 JUMP JUMPDEST PUSH2 0x689 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0x123E JUMP JUMPDEST PUSH2 0x693 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1282 JUMP JUMPDEST PUSH2 0x6C8 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x6F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH2 0x212 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x17C5 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x22D CALLDATASIZE PUSH1 0x4 PUSH2 0x12BC JUMP JUMPDEST PUSH2 0x728 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x91C JUMP JUMPDEST PUSH2 0x14C PUSH2 0x92B JUMP JUMPDEST PUSH2 0x17C PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x123E JUMP JUMPDEST PUSH2 0x931 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x292 JUMPI POP PUSH2 0x292 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x2B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C2 DUP2 PUSH1 0x0 PUSH2 0x95E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x2F0 JUMPI POP PUSH2 0x2F0 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x30C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5419675F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x370 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAE81DFE4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3FA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1264 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP3 PUSH32 0x9613F431247983A83A2B3667AA63A5174194AC89328DFADC69BE44409521B3C1 SWAP3 PUSH2 0x44B SWAP3 SWAP2 AND SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x47F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x4A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1842 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x7 SLOAD ADD JUMPDEST PUSH1 0x8 SLOAD DUP2 LT ISZERO PUSH2 0x528 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x26E402B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x26E402B SWAP1 PUSH2 0x4E9 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1767 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x517 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH3 0x24EA00 DUP2 ADD SWAP1 POP PUSH2 0x4AD JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x734A802CC194E2139BFCC08E10336F24DFA14FD2C5AB70268D8706C055867066 DUP3 PUSH1 0x40 MLOAD PUSH2 0x562 SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x589 JUMPI POP PUSH2 0x589 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x5A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1852 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA965B3A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0xA965B3A9 SWAP2 PUSH2 0x5FE SWAP2 DUP8 SWAP2 DUP8 SWAP2 DUP8 SWAP2 ADD PUSH2 0x179D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x62C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5FA0B381CB4BDBC7063D1E5C78B90A634A6D6A12D6CB6FABE450FD4B8D1EAB01 DUP5 DUP4 DUP6 PUSH1 0x40 MLOAD PUSH2 0x66D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x173F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2C2 CALLER DUP3 PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6BD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH2 0x2C2 DUP2 PUSH1 0x1 PUSH2 0x95E JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x6E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH2 0x6F1 DUP3 DUP3 PUSH2 0xBFD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x719 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x730 PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x760 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x788 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x794 PUSH2 0xEF2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7D7 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xF4A SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x825 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x7F1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ ISZERO PUSH2 0x81D JUMPI PUSH1 0x1 SWAP4 POP PUSH2 0x825 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x7DC JUMP JUMPDEST POP DUP3 PUSH2 0x843 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1812 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 SHL DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x85F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x16D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x881 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x13A5 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP12 AND EQ PUSH2 0x8B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1822 JUMP JUMPDEST DUP9 DUP2 EQ PUSH2 0x8D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1862 JUMP JUMPDEST PUSH2 0x910 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xF51 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x939 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x955 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1832 JUMP JUMPDEST PUSH2 0x2C2 DUP2 PUSH2 0x102B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x984 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1852 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9929E886 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xA0D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1387 JUMP JUMPDEST DUP1 PUSH2 0xA15 JUMPI POP DUP3 JUMPDEST ISZERO PUSH2 0xA23 JUMPI POP PUSH1 0x8 SLOAD PUSH2 0xA26 JUMP JUMPDEST POP TIMESTAMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x7 SLOAD ADD JUMPDEST DUP2 DUP2 GT PUSH2 0xBB5 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x67BDB425 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xCF7B684A SWAP1 PUSH2 0xA6D SWAP1 ADDRESS SWAP1 DUP6 SWAP1 PUSH1 0x0 NOT NUMBER ADD SWAP1 PUSH1 0x4 ADD PUSH2 0x1782 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xABD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1424 JUMP JUMPDEST SWAP3 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO PUSH2 0xBAB JUMPI DUP4 ISZERO PUSH2 0xB44 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x4005B265 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x800B64CA SWAP1 PUSH2 0xB0D SWAP1 DUP7 SWAP1 DUP6 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x36ADB291 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xDAB6CA44 SWAP1 PUSH2 0xB78 SWAP1 DUP7 SWAP1 DUP6 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH3 0x24EA00 ADD PUSH2 0xA2E JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x351B2B7A8B3659A02C6C87AC06E00099A1E5979171161A69EAB5D057DEB838EC DUP6 PUSH1 0x40 MLOAD PUSH2 0xBEF SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0xC88 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x72EC9795 SWAP1 PUSH2 0xC34 SWAP1 TIMESTAMP SWAP1 PUSH1 0x4 ADD PUSH2 0x1872 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC84 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1406 JUMP JUMPDEST PUSH1 0x7 SSTORE JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x72EC9795 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x72EC9795 SWAP2 PUSH2 0xCBE SWAP2 TIMESTAMP SWAP1 SWAP2 ADD SWAP1 PUSH1 0x4 ADD PUSH2 0x1872 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD0E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1406 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0xD46 SWAP1 DUP7 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1717 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD98 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1387 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xDA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0xDDA SWAP3 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1767 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE08 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xE2C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1387 JUMP JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2597F50F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND SWAP5 PUSH4 0x4B2FEA1E SWAP5 PUSH2 0xE74 SWAP5 DUP10 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH3 0x24EA00 SWAP3 ADDRESS SWAP3 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1880 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x66D SWAP2 SWAP1 PUSH2 0x1872 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH4 0x81E45268 PUSH1 0xE0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF2C JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xF6D SWAP2 SWAP1 PUSH2 0x16F6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xFAA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xFAF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1026 JUMPI PUSH1 0x44 DUP2 MLOAD GT PUSH2 0xFDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x17F2 JUMP JUMPDEST PUSH2 0x100D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x3932B1B2B4BB32A0B8383937BB30B61D1 PUSH1 0x7D SHL DUP2 MSTORE POP DUP3 PUSH2 0x10AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0x17E1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1051 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AE SWAP1 PUSH2 0x1802 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 SWAP1 POP PUSH1 0x60 DUP4 SWAP1 POP PUSH1 0x60 PUSH1 0x44 DUP3 MLOAD DUP5 MLOAD ADD SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x10EB JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x1144 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1108 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x1125 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x10F3 JUMP JUMPDEST POP PUSH1 0x44 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1199 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x115D JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL DUP4 DUP4 DUP1 PUSH1 0x1 ADD SWAP5 POP DUP2 MLOAD DUP2 LT PUSH2 0x117A JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x1148 JUMP JUMPDEST POP SWAP1 SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x11A2 DUP2 PUSH2 0x199B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A2 DUP2 PUSH2 0x199B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A2 DUP2 PUSH2 0x19AF JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A2 DUP2 PUSH2 0x19B8 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x11E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x11A2 DUP2 PUSH2 0x19B8 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x11A2 DUP2 PUSH2 0x19C1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11A2 DUP2 PUSH2 0x19CA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP5 DUP5 PUSH2 0x11A8 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP5 DUP5 PUSH2 0x11B3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12A1 DUP6 DUP6 PUSH2 0x11A8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x12B2 DUP6 DUP3 DUP7 ADD PUSH2 0x121D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12E0 DUP9 DUP9 PUSH2 0x11A8 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x12F1 DUP9 DUP3 DUP10 ADD PUSH2 0x121D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x1302 DUP9 DUP3 DUP10 ADD PUSH2 0x11A8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x131F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x132B DUP9 DUP3 DUP10 ADD PUSH2 0x11D4 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x134F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x135B DUP7 DUP7 PUSH2 0x11A8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x136C DUP7 DUP3 DUP8 ADD PUSH2 0x1228 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x137D DUP7 DUP3 DUP8 ADD PUSH2 0x11A8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP5 DUP5 PUSH2 0x11BE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x13BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13C6 DUP7 DUP7 PUSH2 0x11C9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x13D7 DUP7 DUP3 DUP8 ADD PUSH2 0x11B3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x137D DUP7 DUP3 DUP8 ADD PUSH2 0x11C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP5 DUP5 PUSH2 0x121D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP5 DUP5 PUSH2 0x11C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125C DUP5 DUP5 PUSH2 0x1233 JUMP JUMPDEST PUSH2 0x144B DUP2 PUSH2 0x1907 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x144B DUP2 PUSH2 0x1912 JUMP JUMPDEST PUSH2 0x144B PUSH2 0x1466 DUP3 PUSH2 0x1917 JUMP JUMPDEST PUSH2 0x1921 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1477 DUP4 DUP6 PUSH2 0x18F9 JUMP JUMPDEST SWAP4 POP PUSH2 0x1484 DUP4 DUP6 DUP5 PUSH2 0x1955 JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1495 DUP3 PUSH2 0x18F5 JUMP JUMPDEST PUSH2 0x149F DUP2 DUP6 PUSH2 0x18F9 JUMP JUMPDEST SWAP4 POP PUSH2 0x14AF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1961 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x144B DUP2 PUSH2 0x194A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CD DUP3 PUSH2 0x18F5 JUMP JUMPDEST PUSH2 0x14D7 DUP2 DUP6 PUSH2 0x18FE JUMP JUMPDEST SWAP4 POP PUSH2 0x14E7 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1961 JUMP JUMPDEST PUSH2 0x14F0 DUP2 PUSH2 0x1991 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1507 PUSH1 0x30 DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH32 0x72656365697665417070726F76616C3A205472616E73616374696F6E20657865 DUP2 MSTORE PUSH16 0x31BABA34B7B7103932BB32B93A32B217 PUSH1 0x81 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1559 PUSH1 0x26 DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15A1 PUSH1 0x15 DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH21 0x1B595D1A1BD9081A5CC81B9BDD08185B1B1BDDD959 PUSH1 0x5A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15D2 PUSH1 0xF DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH15 0xE6CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15FD PUSH1 0xC DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1625 PUSH1 0x19 DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH32 0x64656C656761746565206164647265737320696E76616C696400000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165E PUSH1 0x18 DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1697 PUSH1 0xF DUP4 PUSH2 0x18FE JUMP JUMPDEST PUSH15 0xC2DADEEADCE840DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x144B DUP2 PUSH2 0x1921 JUMP JUMPDEST PUSH2 0x144B DUP2 PUSH2 0x1930 JUMP JUMPDEST PUSH2 0x144B DUP2 PUSH2 0x1939 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16DC DUP3 DUP7 PUSH2 0x145A JUMP JUMPDEST PUSH1 0x1C DUP3 ADD SWAP2 POP PUSH2 0x16ED DUP3 DUP5 DUP7 PUSH2 0x146B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1702 DUP3 DUP5 PUSH2 0x148A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A2 DUP3 DUP5 PUSH2 0x1442 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1725 DUP3 DUP7 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x1732 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x125C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x16B5 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x174D DUP3 DUP7 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x175A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x125C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x16BE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x1775 DUP3 DUP6 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x1702 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x16B5 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1790 DUP3 DUP7 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x1732 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x16B5 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x17AB DUP3 DUP7 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x17B8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x16BE JUMP JUMPDEST PUSH2 0x125C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1442 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A2 DUP3 DUP5 PUSH2 0x1451 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A2 DUP3 DUP5 PUSH2 0x14B9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1702 DUP2 DUP5 PUSH2 0x14C2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x14FA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x1594 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x15C5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x15F0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x1618 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x1651 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x11A2 DUP2 PUSH2 0x168A JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x11A2 DUP3 DUP5 PUSH2 0x16B5 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x188E DUP3 DUP10 PUSH2 0x16B5 JUMP JUMPDEST PUSH2 0x189B PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x16B5 JUMP JUMPDEST PUSH2 0x18A8 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x16B5 JUMP JUMPDEST PUSH2 0x18B5 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x16B5 JUMP JUMPDEST PUSH2 0x18C2 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x18CF PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1442 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x18E8 DUP3 DUP7 PUSH2 0x16C7 JUMP JUMPDEST PUSH2 0x17B8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x16B5 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11A2 DUP3 PUSH2 0x1924 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF NOT AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11A2 DUP3 PUSH2 0x1907 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x197C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1964 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x198B JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x19A4 DUP2 PUSH2 0x1907 JUMP JUMPDEST DUP2 EQ PUSH2 0x2C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A4 DUP2 PUSH2 0x1912 JUMP JUMPDEST PUSH2 0x19A4 DUP2 PUSH2 0x1921 JUMP JUMPDEST PUSH2 0x19A4 DUP2 PUSH2 0x1930 JUMP JUMPDEST PUSH2 0x19A4 DUP2 PUSH2 0x1939 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH2 0xB07E MUL CALLVALUE 0xAC JUMPI DUP11 DUP2 SDIV PUSH24 0x7D24B9C1F3D872E7883D13AC507B8E4F773E5098A86C6578 PUSH17 0x6572696D656E74616CF564736F6C634300 SDIV GT STOP BLOCKHASH ",
              "sourceMap": "110:628:118:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;110:628:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;506:17:85;;;:::i;:::-;;;;;;;;;;;;;;;;996:24;;;:::i;:::-;;;;;;;;925:23;;;:::i;820:20::-;;;:::i;4159:100:78:-;;;;;;;;;:::i;:::-;;570:22:85;;;:::i;6458:220:78:-;;;:::i;240:496:118:-;;;;;;;;;:::i;5970:387:78:-;;;;;;;;;:::i;702:39:85:-;;;:::i;1463:86:78:-;;;;;;;;;:::i;3813:158::-;;;;;;;;;:::i;1872:129::-;;;;;;;;;:::i;851:68:142:-;;;:::i;:::-;;;;;;;;1134:83;;;:::i;:::-;;;;;;;;494:849:48;;;;;;;;;:::i;641:25:85:-;;;:::i;1066:22::-;;;:::i;1351:98:142:-;;;;;;;;;:::i;506:17:85:-;;;-1:-1:-1;;;;;506:17:85;;:::o;996:24::-;;;;:::o;925:23::-;;;;:::o;820:20::-;;;;:::o;4159:100:78:-;1100:10;;-1:-1:-1;;;;;1100:10:78;1086;:24;;:37;;;1114:9;:7;:9::i;:::-;1078:62;;;;-1:-1:-1;;;1078:62:78;;;;;;;;;;;;;;;;;4223:32;4239:8;4249:5;4223:15;:32::i;:::-;4159:100;:::o;570:22:85:-;;;-1:-1:-1;;;;;570:22:85;;:::o;6458:220:78:-;1100:10;;-1:-1:-1;;;;;1100:10:78;1086;:24;;:37;;;1114:9;:7;:9::i;:::-;1078:62;;;;-1:-1:-1;;;1078:62:78;;;;;;;;;6519:7;;;;;;;;;-1:-1:-1;;;;;6519:7:78;-1:-1:-1;;;;;6519:35:78;;:37;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6519:37:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6519:37:78;;;;6578:7;;;;;;;;;-1:-1:-1;;;;;6578:7:78;-1:-1:-1;;;;;6578:26:78;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6578:28:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6578:28:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6578:28:78;;;;;;;;;6560:7;:47;;-1:-1:-1;;;;;;6560:47:78;-1:-1:-1;;;;;6560:47:78;;;;;;;;6616:58;;6645:10;;6616:58;;;;6665:7;;;6616:58;;;;;;;;;;6458:220::o;240:496:118:-;1283:10:78;;-1:-1:-1;;;;;1283:10:78;1269;:24;1261:49;;;;-1:-1:-1;;;1261:49:78;;;;;;;;;-1:-1:-1;;;;;312:24:118;;304:62;;;;-1:-1:-1;;;304:62:118;;;;;;;;;608:5;;596:9;;:17;579:107;619:7;;615:1;:11;579:107;;;650:7;;:31;;-1:-1:-1;;;650:31:118;;-1:-1:-1;;;;;650:7:118;;;;:16;;:31;;667:10;;679:1;;650:31;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;650:31:118;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;650:31:118;;;;1182:7:85;628:15:118;;;;579:107;;;;709:10;-1:-1:-1;;;;;694:38:118;;721:10;694:38;;;;;;;;;;;;;;;240:496;:::o;5970:387:78:-;1100:10;;-1:-1:-1;;;;;1100:10:78;1086;:24;;:37;;;1114:9;:7;:9::i;:::-;1078:62;;;;-1:-1:-1;;;1078:62:78;;;;;;;;;-1:-1:-1;;;;;6102:23:78;;6094:60;;;;-1:-1:-1;;;6094:60:78;;;;;;;;;6201:15;;;:68;;-1:-1:-1;;;6201:68:78;;-1:-1:-1;;;;;6201:15:78;;;;:24;;:68;;6226:14;;6242:15;;6259:9;;6201:68;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6201:68:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6201:68:78;;;;6298:10;-1:-1:-1;;;;;6279:74:78;;6310:14;6326:9;6337:15;6279:74;;;;;;;;;;;;;;;;;5970:387;;;:::o;702:39:85:-;;;-1:-1:-1;;;;;702:39:85;;:::o;1463:86:78:-;1512:33;1525:10;1537:7;1512:12;:33::i;3813:158::-;3906:7;;-1:-1:-1;;;;;3906:7:78;3884:10;:30;3876:55;;;;-1:-1:-1;;;3876:55:78;;;;;;;;;3936:31;3952:8;3962:4;3936:15;:31::i;1872:129::-;323:10:48;345:4;323:27;315:52;;;;-1:-1:-1;;;315:52:48;;;;;;;;;1967:30:78;1980:7;1989;1967:12;:30::i;:::-;1872:129;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;494:849:48:-;677:11;:9;:11::i;:::-;-1:-1:-1;;;;;663:25:48;:10;-1:-1:-1;;;;;663:25:48;;655:50;;;;-1:-1:-1;;;655:50:48;;;;;;;;;717:10;-1:-1:-1;;;;;717:20:48;;;709:45;;;;-1:-1:-1;;;709:45:48;;;;;;;;;786:14;812:25;840:15;:13;:15::i;:::-;812:43;;859:10;872:14;880:5;;872:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;872:7:48;;-1:-1:-1;;;872:14:48:i;:::-;859:27;-1:-1:-1;895:9:48;890:120;914:9;:16;910:1;:20;890:120;;;953:9;963:1;953:12;;;;;;;;;;;;;;-1:-1:-1;;;;;946:19:48;;:3;-1:-1:-1;;;;;946:19:48;;;942:64;;;985:4;973:16;;995:5;;942:64;932:3;;890:120;;;;1021:9;1013:43;;;;-1:-1:-1;;;1013:43:48;;;;;;;;;1091:14;1109;1184:1;1176:10;;1188:5;;1159:35;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1159:35:48;;;1148:76;;;;;;;;;;;;;;1127:97;;-1:-1:-1;1127:97:48;-1:-1:-1;;;;;;;1236:17:48;;;;;;;1228:45;;;;-1:-1:-1;;;1228:45:48;;;;;;;;;1295:7;1285:6;:17;1277:45;;;;-1:-1:-1;;;1277:45:48;;;;;;;;;1327:12;1333:5;;1327:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1327:5:48;;-1:-1:-1;;;1327:12:48:i;:::-;494:849;;;;;;;;;;:::o;641:25:85:-;;;-1:-1:-1;;;;;641:25:85;;:::o;1066:22::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;4608:1106:78:-;-1:-1:-1;;;;;4691:22:78;;4683:59;;;;-1:-1:-1;;;4683:59:78;;;;;;;;;4747:12;4842:11;4975:7;;;;;;;;;-1:-1:-1;;;;;4975:7:78;-1:-1:-1;;;;;4975:19:78;;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4975:21:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4975:21:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4975:21:78;;;;;;;;;:37;;;;5000:12;4975:37;4971:103;;;-1:-1:-1;5025:7:78;;4971:103;;;-1:-1:-1;5054:15:78;4971:103;5315:5;;5303:9;;:17;5286:378;5327:3;5322:1;:8;5286:378;;5399:7;;:67;;-1:-1:-1;;;5399:67:78;;-1:-1:-1;;;;;5399:7:78;;;;:31;;:67;;5439:4;;5446:1;;-1:-1:-1;;5449:12:78;:16;;5399:67;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5399:67:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5399:67:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5399:67:78;;;;;;;;;5391:75;-1:-1:-1;5504:9:78;;;;5500:160;;5525:12;5521:134;;;5546:7;;:46;;-1:-1:-1;;;5546:46:78;;-1:-1:-1;;;;;5546:7:78;;;;:26;;:46;;5573:5;;5580:1;;5583:8;;5546:46;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5546:46:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5546:46:78;;;;5521:134;;;5612:7;;:36;;-1:-1:-1;;;5612:36:78;;-1:-1:-1;;;;;5612:7:78;;;;:16;;:36;;5629:5;;5636:1;;5639:8;;5612:36;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5612:36:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5612:36:78;;;;5521:134;1182:7:85;5332:15:78;5286:378;;;;5689:10;-1:-1:-1;;;;;5673:37:78;;5701:8;5673:37;;;;;;;;;;;;;;;4608:1106;;;;:::o;2262:665::-;2404:9;;2400:86;;2437:7;;:44;;-1:-1:-1;;;2437:44:78;;-1:-1:-1;;;;;2437:7:78;;;;:27;;:44;;2465:15;;2437:44;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2437:44:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2437:44:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2437:44:78;;;;;;;;;2425:9;:56;2400:86;2499:7;;2545:8;;2499:55;;-1:-1:-1;;;2499:55:78;;-1:-1:-1;;;;;2499:7:78;;;;:27;;:55;;2527:15;:26;;;;2499:55;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:55:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2499:55:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2499:55:78;;;;;;;;;2489:7;:65;2623:3;;:49;;-1:-1:-1;;;2623:49:78;;2608:12;;-1:-1:-1;;;;;2623:3:78;;:16;;:49;;2640:7;;2657:4;;2664:7;;2623:49;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2623:49:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2623:49:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2623:49:78;;;;;;;;;2608:64;;2684:7;2676:16;;;;;;2751:3;;2771:7;;2751:38;;-1:-1:-1;;;2751:38:78;;-1:-1:-1;;;;;2751:3:78;;;;:11;;:38;;2771:7;;;2781;;2751:38;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2751:38:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2751:38:78;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2751:38:78;;;;;;;;;-1:-1:-1;2794:7:78;;2828:5;;2835:8;;2872:10;;2794:89;;-1:-1:-1;;;2794:89:78;;-1:-1:-1;;;;;2794:7:78;;;;:24;;:89;;2819:7;;2828:5;;2835:8;;1182:7:85;;2865:4:78;;2872:10;;;2794:89;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2794:89:78;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2794:89:78;;;;2906:7;-1:-1:-1;;;;;2893:30:78;;2915:7;2893:30;;;;;;;780:87:137;853:10;780:87;:::o;6841:80:78:-;6913:3;;-1:-1:-1;;;;;6913:3:78;6841:80;:::o;7137:192::-;7234:15;;;7247:1;7234:15;;;;;;;;;7185;;;;7234;;;;;;;105:10:-1;7234:15:78;88:34:-1;136:17;;-1:-1;7234:15:78;7206:43;;7268:37;;;7253:9;7263:1;7253:12;;;;;;;;-1:-1:-1;;;;;;7253:52:78;;;:12;;;;;;;;;;;:52;7316:9;-1:-1:-1;7137:192:78;:::o;3263:125:48:-;3377:2;3366:14;3360:21;;3348:37::o;2133:344::-;2182:12;2196:23;2231:4;-1:-1:-1;;;;;2223:18:48;2242:5;2223:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2181:67:48;;;;2257:7;2252:222;;1386:2:49;2275:10:48;:17;:40;2271:199;;2323:58;;-1:-1:-1;;;2323:58:48;;;;;;;;2271:199;2406:57;;;;;;;;;;;;;;-1:-1:-1;;;2406:57:48;;;2451:10;2406:16;:57::i;:::-;2399:65;;-1:-1:-1;;;2399:65:48;;;;;;;;;2271:199;2133:344;;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1719:569:49:-;1808:13;1827:22;1858:4;1827:36;;1867:22;1898:4;1867:36;;1907:19;1386:2;1959:9;:16;1940:9;:16;:35;:57;1929:69;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;1929:69:49;87:34:-1;135:17;;-1:-1;1929:69:49;-1:-1:-1;1907:91:49;-1:-1:-1;1907:91:49;2044:9;;2061:87;2085:9;:16;2081:1;:20;2061:87;;;2131:9;2141:1;2131:12;;;;;;;;;;;;;;;;2113:10;2124:3;;;;;;2113:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2113:30:49;;;;;;;;-1:-1:-1;2103:3:49;;2061:87;;;-1:-1:-1;1386:2:49;2151:105;2193:9;:16;2189:1;:20;2151:105;;;2239:9;2249:1;2239:12;;;;;;;;;;;;;;;;2221:10;2232:3;;;;;;2221:15;;;;;;;;;;;:30;-1:-1:-1;;;;;2221:30:49;;;;;;;;-1:-1:-1;2211:3:49;;2151:105;;;-1:-1:-1;2273:10:49;;-1:-1:-1;;;;;1719:569:49;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;440:128;515:13;;533:30;515:13;533:30;;575:134;653:13;;671:33;653:13;671:33;;730:336;;;844:3;837:4;829:6;825:17;821:27;811:2;;862:1;859;852:12;811:2;-1:-1;882:20;;922:18;911:30;;908:2;;;954:1;951;944:12;908:2;988:4;980:6;976:17;964:29;;1039:3;1031:4;1023:6;1019:17;1009:8;1005:32;1002:41;999:2;;;1056:1;1053;1046:12;999:2;804:262;;;;;;1074:130;1141:20;;1166:33;1141:20;1166:33;;1352:128;1418:20;;1443:32;1418:20;1443:32;;1487:132;1564:13;;1582:32;1564:13;1582:32;;1626:241;;1730:2;1718:9;1709:7;1705:23;1701:32;1698:2;;;1746:1;1743;1736:12;1698:2;1781:1;1798:53;1843:7;1823:9;1798:53;;;1788:63;1692:175;-1:-1;;;;1692:175;1874:263;;1989:2;1977:9;1968:7;1964:23;1960:32;1957:2;;;2005:1;2002;1995:12;1957:2;2040:1;2057:64;2113:7;2093:9;2057:64;;2144:366;;;2265:2;2253:9;2244:7;2240:23;2236:32;2233:2;;;2281:1;2278;2271:12;2233:2;2316:1;2333:53;2378:7;2358:9;2333:53;;;2323:63;;2295:97;2423:2;2441:53;2486:7;2477:6;2466:9;2462:22;2441:53;;;2431:63;;2402:98;2227:283;;;;;;2517:741;;;;;;2691:3;2679:9;2670:7;2666:23;2662:33;2659:2;;;2708:1;2705;2698:12;2659:2;2743:1;2760:53;2805:7;2785:9;2760:53;;;2750:63;;2722:97;2850:2;2868:53;2913:7;2904:6;2893:9;2889:22;2868:53;;;2858:63;;2829:98;2958:2;2976:53;3021:7;3012:6;3001:9;2997:22;2976:53;;;2966:63;;2937:98;3094:2;3083:9;3079:18;3066:32;3118:18;3110:6;3107:30;3104:2;;;3150:1;3147;3140:12;3104:2;3178:64;3234:7;3225:6;3214:9;3210:22;3178:64;;;3168:74;;;;3045:203;2653:605;;;;;;;;;3265:489;;;;3402:2;3390:9;3381:7;3377:23;3373:32;3370:2;;;3418:1;3415;3408:12;3370:2;3453:1;3470:53;3515:7;3495:9;3470:53;;;3460:63;;3432:97;3560:2;3578:52;3622:7;3613:6;3602:9;3598:22;3578:52;;;3568:62;;3539:97;3667:2;3685:53;3730:7;3721:6;3710:9;3706:22;3685:53;;;3675:63;;3646:98;3364:390;;;;;;3761:257;;3873:2;3861:9;3852:7;3848:23;3844:32;3841:2;;;3889:1;3886;3879:12;3841:2;3924:1;3941:61;3994:7;3974:9;3941:61;;4025:551;;;;4182:2;4170:9;4161:7;4157:23;4153:32;4150:2;;;4198:1;4195;4188:12;4150:2;4233:1;4250:64;4306:7;4286:9;4250:64;;;4240:74;;4212:108;4351:2;4369:72;4433:7;4424:6;4413:9;4409:22;4369:72;;;4359:82;;4330:117;4478:2;4496:64;4552:7;4543:6;4532:9;4528:22;4496:64;;4583:241;;4687:2;4675:9;4666:7;4662:23;4658:32;4655:2;;;4703:1;4700;4693:12;4655:2;4738:1;4755:53;4800:7;4780:9;4755:53;;4831:263;;4946:2;4934:9;4925:7;4921:23;4917:32;4914:2;;;4962:1;4959;4952:12;4914:2;4997:1;5014:64;5070:7;5050:9;5014:64;;5101:261;;5215:2;5203:9;5194:7;5190:23;5186:32;5183:2;;;5231:1;5228;5221:12;5183:2;5266:1;5283:63;5338:7;5318:9;5283:63;;5369:113;5452:24;5470:5;5452:24;;;5447:3;5440:37;5434:48;;;5489:104;5566:21;5581:5;5566:21;;5600:152;5701:45;5721:24;5739:5;5721:24;;;5701:45;;5782:310;;5914:88;5995:6;5990:3;5914:88;;;5907:95;;6014:43;6050:6;6045:3;6038:5;6014:43;;;-1:-1;;6070:16;;5900:192;6100:356;;6228:38;6260:5;6228:38;;;6278:88;6359:6;6354:3;6278:88;;;6271:95;;6371:52;6416:6;6411:3;6404:4;6397:5;6393:16;6371:52;;;6435:16;;;;;6208:248;-1:-1;;6208:248;6463:158;6562:53;6609:5;6562:53;;6980:347;;7092:39;7125:5;7092:39;;;7143:71;7207:6;7202:3;7143:71;;;7136:78;;7219:52;7264:6;7259:3;7252:4;7245:5;7241:16;7219:52;;;7292:29;7314:6;7292:29;;;7283:39;;;;7072:255;-1:-1;;;7072:255;7335:385;;7495:67;7559:2;7554:3;7495:67;;;7595:34;7575:55;;-1:-1;;;7659:2;7650:12;;7643:40;7711:2;7702:12;;7481:239;-1:-1;;7481:239;7729:375;;7889:67;7953:2;7948:3;7889:67;;;7989:34;7969:55;;-1:-1;;;8053:2;8044:12;;8037:30;8095:2;8086:12;;7875:229;-1:-1;;7875:229;8113:321;;8273:67;8337:2;8332:3;8273:67;;;-1:-1;;;8353:44;;8425:2;8416:12;;8259:175;-1:-1;;8259:175;8443:315;;8603:67;8667:2;8662:3;8603:67;;;-1:-1;;;8683:38;;8749:2;8740:12;;8589:169;-1:-1;;8589:169;8767:312;;8927:67;8991:2;8986:3;8927:67;;;-1:-1;;;9007:35;;9070:2;9061:12;;8913:166;-1:-1;;8913:166;9088:325;;9248:67;9312:2;9307:3;9248:67;;;9348:27;9328:48;;9404:2;9395:12;;9234:179;-1:-1;;9234:179;9422:324;;9582:67;9646:2;9641:3;9582:67;;;9682:26;9662:47;;9737:2;9728:12;;9568:178;-1:-1;;9568:178;9755:315;;9915:67;9979:2;9974:3;9915:67;;;-1:-1;;;9995:38;;10061:2;10052:12;;9901:169;-1:-1;;9901:169;10078:113;10161:24;10179:5;10161:24;;10198:110;10279:23;10296:5;10279:23;;10315:110;10396:23;10413:5;10396:23;;10432:421;;10607:75;10678:3;10669:6;10607:75;;;10704:2;10699:3;10695:12;10688:19;;10725:103;10824:3;10815:6;10807;10725:103;;;10718:110;10595:258;-1:-1;;;;;10595:258;10860:262;;11004:93;11093:3;11084:6;11004:93;;;10997:100;10985:137;-1:-1;;;10985:137;11129:213;11247:2;11232:18;;11261:71;11236:9;11305:6;11261:71;;11349:435;11523:2;11508:18;;11537:71;11512:9;11581:6;11537:71;;;11619:72;11687:2;11676:9;11672:18;11663:6;11619:72;;;11702;11770:2;11759:9;11755:18;11746:6;11702:72;;11791:431;11963:2;11948:18;;11977:71;11952:9;12021:6;11977:71;;;12059:72;12127:2;12116:9;12112:18;12103:6;12059:72;;;12142:70;12208:2;12197:9;12193:18;12184:6;12142:70;;12229:324;12375:2;12360:18;;12389:71;12364:9;12433:6;12389:71;;;12471:72;12539:2;12528:9;12524:18;12515:6;12471:72;;12560:435;12734:2;12719:18;;12748:71;12723:9;12792:6;12748:71;;;12830:72;12898:2;12887:9;12883:18;12874:6;12830:72;;13002:431;13174:2;13159:18;;13188:71;13163:9;13232:6;13188:71;;;13270:70;13336:2;13325:9;13321:18;13312:6;13270:70;;;13351:72;13419:2;13408:9;13404:18;13395:6;13351:72;;13440:201;13552:2;13537:18;;13566:65;13541:9;13604:6;13566:65;;13648:245;13782:2;13767:18;;13796:87;13771:9;13856:6;13796:87;;14426:301;14564:2;14578:47;;;14549:18;;14639:78;14549:18;14703:6;14639:78;;14734:407;14925:2;14939:47;;;14910:18;;15000:131;14910:18;15000:131;;15148:407;15339:2;15353:47;;;15324:18;;15414:131;15324:18;15414:131;;15562:407;15753:2;15767:47;;;15738:18;;15828:131;15738:18;15828:131;;15976:407;16167:2;16181:47;;;16152:18;;16242:131;16152:18;16242:131;;16390:407;16581:2;16595:47;;;16566:18;;16656:131;16566:18;16656:131;;16804:407;16995:2;17009:47;;;16980:18;;17070:131;16980:18;17070:131;;17218:407;17409:2;17423:47;;;17394:18;;17484:131;17394:18;17484:131;;17632:407;17823:2;17837:47;;;17808:18;;17898:131;17808:18;17898:131;;18046:213;18164:2;18149:18;;18178:71;18153:9;18222:6;18178:71;;18266:771;18524:3;18509:19;;18539:71;18513:9;18583:6;18539:71;;;18621:72;18689:2;18678:9;18674:18;18665:6;18621:72;;;18704;18772:2;18761:9;18757:18;18748:6;18704:72;;;18787;18855:2;18844:9;18840:18;18831:6;18787:72;;;18870:73;18938:3;18927:9;18923:19;18914:6;18870:73;;;18954;19022:3;19011:9;19007:19;18998:6;18954:73;;;18495:542;;;;;;;;;;19044:431;19216:2;19201:18;;19230:69;19205:9;19272:6;19230:69;;;19310:72;19378:2;19367:9;19363:18;19354:6;19310:72;;19482:121;19569:12;;19540:63;19740:144;19875:3;19853:31;-1:-1;19853:31;19893:163;19996:19;;;20045:4;20036:14;;19989:67;20064:91;;20126:24;20144:5;20126:24;;20268:85;20334:13;20327:21;;20310:43;20360:145;-1:-1;;20422:78;;20405:100;20512:72;20574:5;20557:27;20591:121;-1:-1;;;;;20653:54;;20636:76;20798:88;20870:10;20859:22;;20842:44;20893:104;20965:26;20954:38;;20937:60;21004:153;;21099:53;21146:5;21099:53;;21911:145;21992:6;21987:3;21982;21969:30;-1:-1;22048:1;22030:16;;22023:27;21962:94;22065:268;22130:1;22137:101;22151:6;22148:1;22145:13;22137:101;;;22218:11;;;22212:18;22199:11;;;22192:39;22173:2;22166:10;22137:101;;;22253:6;22250:1;22247:13;22244:2;;;22318:1;22309:6;22304:3;22300:16;22293:27;22244:2;22114:219;;;;;22422:97;22510:2;22490:14;-1:-1;;22486:28;;22470:49;22527:117;22596:24;22614:5;22596:24;;;22589:5;22586:35;22576:2;;22635:1;22632;22625:12;22791:111;22857:21;22872:5;22857:21;;22909:117;22978:24;22996:5;22978:24;;23157:115;23225:23;23242:5;23225:23;;23279:115;23347:23;23364:5;23347:23;"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "cliff()": "13d033c0",
              "collectDividends(address,uint32,address)": "62dc2f35",
              "delegate(address)": "5c19a95c",
              "duration()": "0fb5a6b4",
              "endDate()": "c24a0f8b",
              "feeSharingProxy()": "6a26b57f",
              "governanceWithdrawTokens(address)": "78f24bc6",
              "isOwner()": "8f32d59b",
              "migrateToNewStakingContract()": "5419675f",
              "owner()": "8da5cb5b",
              "receiveApproval(address,uint256,address,bytes)": "8f4ffcb1",
              "stakeTokens(uint256)": "7547c7a3",
              "stakeTokensWithApproval(address,uint256)": "81e45268",
              "staking()": "4cf088d9",
              "startDate()": "0b97bc86",
              "tokenOwner()": "a3e67610",
              "transferOwnership(address)": "f2fde38b",
              "withdrawTokens(address)": "49df728c"
            }
          },
          "userdoc": {
            "methods": {
              "collectDividends(address,uint32,address)": {
                "notice": "Collect dividends from fee sharing proxy."
              },
              "governanceWithdrawTokens(address)": {
                "notice": "Withdraws all tokens from the staking contract and forwards them to an address specified by the token owner."
              },
              "migrateToNewStakingContract()": {
                "notice": "Allows the owners to migrate the positions to a new staking contract."
              },
              "receiveApproval(address,uint256,address,bytes)": {
                "notice": "Receives approval from SOV token."
              },
              "stakeTokens(uint256)": {
                "notice": "Stakes tokens according to the vesting schedule."
              },
              "stakeTokensWithApproval(address,uint256)": {
                "notice": "Stakes tokens according to the vesting schedule."
              },
              "withdrawTokens(address)": {
                "notice": "Withdraws unlocked tokens from the staking contract and forwards them to an address specified by the token owner."
              }
            }
          }
        }
      },
      "contracts/mockup/VestingRegistryLogicMockUp.sol": {
        "VestingRegistryLogicMockup": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "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": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "SOVTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "vestingCreationType",
                  "type": "uint256"
                }
              ],
              "name": "TeamVestingCreated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokensStaked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOwner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "vesting",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "vestingCreationType",
                  "type": "uint256"
                }
              ],
              "name": "VestingCreated",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_tokenOwners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_vestingCreationTypes",
                  "type": "uint256[]"
                }
              ],
              "name": "addDeployedVestings",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_vestingCreationType",
                  "type": "uint256"
                }
              ],
              "name": "createTeamVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                }
              ],
              "name": "createVesting",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_vestingCreationType",
                  "type": "uint256"
                }
              ],
              "name": "createVestingAddr",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeSharingProxy",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_vestingCreationType",
                  "type": "uint256"
                }
              ],
              "name": "getTeamVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                }
              ],
              "name": "getVesting",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_duration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_vestingCreationType",
                  "type": "uint256"
                }
              ],
              "name": "getVestingAddr",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingAddress",
                  "type": "address"
                }
              ],
              "name": "getVestingDetails",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "cliff",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenOwner",
                  "type": "address"
                }
              ],
              "name": "getVestingsOf",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "vestingType",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "vestingCreationType",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address",
                      "name": "vestingAddress",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct VestingRegistryStorage.Vesting[]",
                  "name": "",
                  "type": "tuple[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingFactory",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_staking",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_feeSharingProxy",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_vestingOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_lockedSOV",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "_vestingRegistries",
                  "type": "address[]"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isVesting",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingAddress",
                  "type": "address"
                }
              ],
              "name": "isVestingAdress",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isVestingAddr",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOV",
              "outputs": [
                {
                  "internalType": "contract LockedSOV",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vestingFactory",
                  "type": "address"
                }
              ],
              "name": "setVestingFactory",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_vesting",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "stakeTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "staking",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "transferSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingFactory",
              "outputs": [
                {
                  "internalType": "contract IVestingFactory",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "vestingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestingRegistries",
              "outputs": [
                {
                  "internalType": "contract IVestingRegistry",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestings",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "vestingType",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "vestingCreationType",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "vestingAddress",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "vestingsOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "addDeployedVestings(address[],uint256[])": {
                "details": "migration of data from previous vesting registy contracts"
              },
              "createTeamVesting(address,uint256,uint256,uint256,uint256)": {
                "params": {
                  "_amount": "the amount to be staked",
                  "_cliff": "the cliff in seconds",
                  "_duration": "the total duration in seconds",
                  "_tokenOwner": "the owner of the tokens",
                  "_vestingCreationType": "the type of vesting created(e.g. Origin, Bug Bounty etc.)"
                }
              },
              "createVesting(address,uint256,uint256,uint256)": {
                "details": "Calls a public createVestingAddr function with vestingCreationType. This is to accomodate the existing logic for LockedSOVvestingCreationType 0 = LockedSOV",
                "params": {
                  "_amount": "the amount to be staked",
                  "_cliff": "the cliff in seconds",
                  "_duration": "the total duration in seconds",
                  "_tokenOwner": "the owner of the tokens"
                }
              },
              "createVestingAddr(address,uint256,uint256,uint256,uint256)": {
                "params": {
                  "_amount": "the amount to be staked",
                  "_cliff": "the cliff in seconds",
                  "_duration": "the total duration in seconds",
                  "_tokenOwner": "the owner of the tokens",
                  "_vestingCreationType": "the type of vesting created(e.g. Origin, Bug Bounty etc.)"
                }
              },
              "getVesting(address)": {
                "details": "Calls a public getVestingAddr function with cliff and duration. This is to accomodate the existing logic for LockedSOVWe need to use LockedSOV.changeRegistryCliffAndDuration function very judiciouslyvestingCreationType 0 - LockedSOV",
                "params": {
                  "_tokenOwner": "the owner of the tokens"
                }
              },
              "getVestingAddr(address,uint256,uint256,uint256)": {
                "details": "Important: Please use this instead of getVesting function"
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "setVestingFactory(address)": {
                "params": {
                  "_vestingFactory": "the address of vesting factory contract"
                }
              },
              "stakeTokens(address,uint256)": {
                "params": {
                  "_amount": "the amount of tokens to stake",
                  "_vesting": "the address of Vesting contract"
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "transferSOV(address,uint256)": {
                "params": {
                  "_amount": "the amount to be transferred",
                  "_receiver": "the address of the SOV receiver"
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361007016565b6000805462010000600160b01b031916620100006001600160a01b038416908102919091178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610074565b3390565b6126b3806100836000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063c680c0b7116100a2578063efb9573311610071578063efb95733146103e7578063f2f46b3b14610407578063f2fde38b1461040f578063f60826ee14610422576101da565b8063c680c0b71461038e578063cc49ede7146103a1578063dbb049d1146103b4578063dfb9366d146103c7576101da565b8063b810c648116100de578063b810c6481461034d578063bd7b590814610360578063c0e0985214610368578063c36519d11461037b576101da565b80638da5cb5b1461031c5780638dedf009146103245780638f32d59b14610345576101da565b806342a82b4f1161017c57806379a83f5a1161014b57806379a83f5a146102b4578063821bee73146102c7578063842a49d5146102e9578063862e229d14610309576101da565b806342a82b4f1461027e5780634cf088d9146102915780636a26b57f1461029957806370480275146102a1576101da565b80631785f53c116101b85780631785f53c146102255780631f50932614610238578063377220fd1461024b578063429b62e51461025e576101da565b806302df0476146101df5780630665a06f1461020857806308dcb3601461021d575b600080fd5b6101f26101ed366004611d2a565b61042a565b6040516101ff91906123a6565b60405180910390f35b61021b610216366004611d2a565b61048b565b005b6101f26104e6565b61021b610233366004611bfc565b6104f5565b61021b610246366004611d8b565b610574565b61021b610259366004611bfc565b610616565b61027161026c366004611bfc565b610646565b6040516101ff919061249b565b61021b61028c366004611c38565b61065b565b6101f26108ca565b6101f26108d9565b61021b6102af366004611bfc565b6108e8565b61021b6102c2366004611cf0565b610961565b6102da6102d5366004611e8e565b610b0d565b6040516101ff939291906125d3565b6102fc6102f7366004611e8e565b610b37565b6040516101ff91906124a9565b61021b610317366004611d8b565b610b5e565b6101f2610bed565b610337610332366004611bfc565b610c02565b6040516101ff9291906125c5565b610271610cf6565b61021b61035b366004611e00565b610d20565b6101f2610e30565b610271610376366004611bfc565b610e3f565b6101f2610389366004611d2a565b610e54565b61021b61039c366004611cf0565b610e5d565b6101f26103af366004611bfc565b610f9d565b6102716103c2366004611bfc565b6110bc565b6103da6103d5366004611cf0565b6110c2565b6040516101ff91906125b7565b6103fa6103f5366004611bfc565b6110f0565b6040516101ff919061248a565b6102fc61123a565b61021b61041d366004611bfc565b611249565b6102fc611276565b60008060015b90506000868287878760405160200161044d95949392919061234d565b60408051601f198184030181529181528151602092830120600090815260099092529020600201546001600160a01b0316925050505b949350505050565b610493610cf6565b806104ad57503360009081526001602052604090205460ff165b6104d25760405162461bcd60e51b81526004016104c990612537565b60405180910390fd5b6104e0848484846000610574565b50505050565b6005546001600160a01b031681565b6104fd610cf6565b6105195760405162461bcd60e51b81526004016104c990612537565b6001600160a01b03811660009081526001602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f906105699083906123a6565b60405180910390a150565b61057c610cf6565b8061059657503360009081526001602052604090205460ff165b6105b25760405162461bcd60e51b81526004016104c990612537565b60006105c386858560015b86611285565b9050856001600160a01b03167fd6fcfd83804f6b6b63260c7b99eb10060bc1319dbc9177fb6defc7bd614017bf828686898760405161060695949392919061243e565b60405180910390a2505050505050565b61061e610cf6565b61063a5760405162461bcd60e51b81526004016104c990612537565b61064381611535565b50565b60016020526000908152604090205460ff1681565b610663610cf6565b61067f5760405162461bcd60e51b81526004016104c990612537565b600054610100900460ff1680610698575060005460ff16155b6106b45760405162461bcd60e51b81526004016104c990612527565b600054610100900460ff161580156106df576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0388166107055760405162461bcd60e51b81526004016104c9906125a7565b6001600160a01b03871661072b5760405162461bcd60e51b81526004016104c990612587565b6001600160a01b0386166107515760405162461bcd60e51b81526004016104c990612567565b6001600160a01b0385166107775760405162461bcd60e51b81526004016104c990612517565b6001600160a01b03841661079d5760405162461bcd60e51b81526004016104c990612577565b6107a689611535565b600580546001600160a01b03199081166001600160a01b038b8116919091179092556006805482168a84161790556007805482168984161790556008805482168884161790556003805490911691861691909117905560005b828110156108ac57600084848381811061081557fe5b905060200201602061082a9190810190611bfc565b6001600160a01b031614156108515760405162461bcd60e51b81526004016104c9906124b7565b600484848381811061085f57fe5b90506020020160206108749190810190611bfc565b815460018082018455600093845260209093200180546001600160a01b0319166001600160a01b0392909216919091179055016107ff565b5080156108bf576000805461ff00191690555b505050505050505050565b6006546001600160a01b031681565b6007546001600160a01b031681565b6108f0610cf6565b61090c5760405162461bcd60e51b81526004016104c990612537565b6001600160a01b038116600090815260016020819052604091829020805460ff19169091179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339906105699083906123a6565b610969610cf6565b8061098357503360009081526001602052604090205460ff165b61099f5760405162461bcd60e51b81526004016104c990612537565b6001600160a01b0382166109c55760405162461bcd60e51b81526004016104c990612507565b600081116109e55760405162461bcd60e51b81526004016104c9906124f7565b60055460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390610a17908590859060040161241c565b602060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a699190810190611e70565b50604051637547c7a360e01b81526001600160a01b03831690637547c7a390610a969084906004016125b7565b600060405180830381600087803b158015610ab057600080fd5b505af1158015610ac4573d6000803e3d6000fd5b50505050816001600160a01b03167fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef82604051610b0191906125b7565b60405180910390a25050565b6009602052600090815260409020805460018201546002909201549091906001600160a01b031683565b60048181548110610b4457fe5b6000918252602090912001546001600160a01b0316905081565b610b66610cf6565b80610b8057503360009081526001602052604090205460ff165b610b9c5760405162461bcd60e51b81526004016104c990612537565b6000610baa868585846105bd565b9050856001600160a01b03167f3791c6c90c276d011b4b885c0bfba0554342acf50a539baca1b06f070af25ff4828686898760405161060695949392919061243e565b6000546201000090046001600160a01b031690565b6000806000839050806001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4357600080fd5b505afa158015610c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7b9190810190611eac565b816001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b158015610cb457600080fd5b505afa158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cec9190810190611eac565b9250925050915091565b600080546201000090046001600160a01b0316610d1161157d565b6001600160a01b031614905090565b610d28610cf6565b80610d4257503360009081526001602052604090205460ff165b610d5e5760405162461bcd60e51b81526004016104c990612537565b60005b83811015610e29576000858583818110610d7757fe5b9050602002016020610d8c9190810190611bfc565b6001600160a01b03161415610db35760405162461bcd60e51b81526004016104c9906124c7565b6000838383818110610dc157fe5b9050602002013511610de55760405162461bcd60e51b81526004016104c990612547565b610e21858583818110610df457fe5b9050602002016020610e099190810190611bfc565b848484818110610e1557fe5b90506020020135611581565b600101610d61565b5050505050565b6008546001600160a01b031681565b600b6020526000908152604090205460ff1681565b60008080610430565b610e65610cf6565b610e815760405162461bcd60e51b81526004016104c990612537565b6001600160a01b038216610ea75760405162461bcd60e51b81526004016104c990612557565b80610ec45760405162461bcd60e51b81526004016104c9906124f7565b60055460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610ef6908590859060040161241c565b602060405180830381600087803b158015610f1057600080fd5b505af1158015610f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f489190810190611e70565b610f645760405162461bcd60e51b81526004016104c990612597565b816001600160a01b03167fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad82604051610b0191906125b7565b60006110b682600360009054906101000a90046001600160a01b03166001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110299190810190611eac565b600360009054906101000a90046001600160a01b03166001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561107757600080fd5b505afa15801561108b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110af9190810190611eac565b600061042a565b92915050565b50600190565b600a60205281600052604060002081815481106110db57fe5b90600052602060002001600091509150505481565b606080600a6000846001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561116257602002820191906000526020600020905b81548152602001906001019080831161114e575b50505050509050600081519050606082516040519080825280602002602001820160405280156111ac57816020015b611199611b52565b8152602001906001900390816111915790505b50905060005b8281101561123157600960008583815181106111ca57fe5b6020908102919091018101518252818101929092526040908101600020815160608101835281548152600182015493810193909352600201546001600160a01b031690820152825183908390811061121e57fe5b60209081029190910101526001016111b2565b50949350505050565b6003546001600160a01b031681565b611251610cf6565b61126d5760405162461bcd60e51b81526004016104c990612537565b61064381611ac3565b6002546001600160a01b031681565b600080600087858888876040516020016112a395949392919061234d565b60408051601f198184030181529181528151602092830120600081815260099093529120600201549091506001600160a01b031661150f57846001141561138757600254600554600654600754604051637d2fbb8f60e11b81526001600160a01b039485169463fa5f771e9461132e9490821693908216928f928f928f9291169084906004016123b4565b602060405180830381600087803b15801561134857600080fd5b505af115801561135c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113809190810190611c1a565b915061147d565b600260009054906101000a90046001600160a01b03166001600160a01b031663546344f0600560009054906101000a90046001600160a01b0316600660009054906101000a90046001600160a01b03168b8b8b600760009054906101000a90046001600160a01b0316600860009054906101000a90046001600160a01b03166040518863ffffffff1660e01b815260040161142897969594939291906123b4565b602060405180830381600087803b15801561144257600080fd5b505af1158015611456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061147a9190810190611c1a565b91505b6040805160608101825286815260208082018781526001600160a01b038681168486018181526000888152600986528781209651875593516001808801919091559051600290960180546001600160a01b03191696841696909617909555908d168252600a835284822080548086018255908352838320018690558152600b90915291909120805460ff191690911790555b6000908152600960205260409020600201546001600160a01b0316979650505050505050565b6001600160a01b03811661155b5760405162461bcd60e51b81526004016104c9906124e7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6004546001906000908190815b81811015611aba576000600482815481106115a557fe5b60009182526020909120015460405163cc49ede760e01b81526001600160a01b039091169063cc49ede7906115de908b906004016123a6565b60206040518083038186803b1580156115f657600080fd5b505afa15801561160a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061162e9190810190611c1a565b90506001600160a01b038116156117e45760008190508887826001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b15801561167f57600080fd5b505afa158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116b79190810190611eac565b836001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b1580156116f057600080fd5b505afa158015611704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117289190810190611eac565b8b60405160200161173d95949392919061234d565b60408051808303601f1901815282825280516020918201206060840183528a84528184018c81526001600160a01b038781168686018181526000858152600987528781209851895593516001808a01919091559051600290980180546001600160a01b03191698841698909817909755908f168252600a845284822080548088018255908352848320018390558152600b909252919020805460ff19169092179091559450505b6000600483815481106117f357fe5b60009182526020909120015460405163c810a3e360e01b81526001600160a01b039091169063c810a3e39061182c908c906004016123a6565b60206040518083038186803b15801561184457600080fd5b505afa158015611858573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061187c9190810190611c1a565b90506001600160a01b03811615611ab05760008190508987826001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b1580156118cd57600080fd5b505afa1580156118e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119059190810190611eac565b836001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561193e57600080fd5b505afa158015611952573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119769190810190611eac565b8c60405160200161198b95949392919061234d565b6040516020818303038152906040528051906020012060001c955060405180606001604052808881526020018a8152602001836001600160a01b031681525060096000888152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050600a60008b6001600160a01b03166001600160a01b031681526020019081526020016000208690806001815401808255809150509060018203906000526020600020016000909192909190915055506001600b6000846001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550505b505060010161158e565b50505050505050565b6001600160a01b038116611ae95760405162461bcd60e51b81526004016104c9906124d7565b600080546040516001600160a01b03808516936201000090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6040518060600160405280600081526020016000815260200160006001600160a01b031681525090565b80356110b68161264a565b80516110b68161264a565b60008083601f840112611ba457600080fd5b50813567ffffffffffffffff811115611bbc57600080fd5b602083019150836020820283011115611bd457600080fd5b9250929050565b80516110b68161265e565b80356110b681612667565b80516110b681612667565b600060208284031215611c0e57600080fd5b60006104838484611b7c565b600060208284031215611c2c57600080fd5b60006104838484611b87565b60008060008060008060008060e0898b031215611c5457600080fd5b6000611c608b8b611b7c565b9850506020611c718b828c01611b7c565b9750506040611c828b828c01611b7c565b9650506060611c938b828c01611b7c565b9550506080611ca48b828c01611b7c565b94505060a0611cb58b828c01611b7c565b93505060c089013567ffffffffffffffff811115611cd257600080fd5b611cde8b828c01611b92565b92509250509295985092959890939650565b60008060408385031215611d0357600080fd5b6000611d0f8585611b7c565b9250506020611d2085828601611be6565b9150509250929050565b60008060008060808587031215611d4057600080fd5b6000611d4c8787611b7c565b9450506020611d5d87828801611be6565b9350506040611d6e87828801611be6565b9250506060611d7f87828801611be6565b91505092959194509250565b600080600080600060a08688031215611da357600080fd5b6000611daf8888611b7c565b9550506020611dc088828901611be6565b9450506040611dd188828901611be6565b9350506060611de288828901611be6565b9250506080611df388828901611be6565b9150509295509295909350565b60008060008060408587031215611e1657600080fd5b843567ffffffffffffffff811115611e2d57600080fd5b611e3987828801611b92565b9450945050602085013567ffffffffffffffff811115611e5857600080fd5b611e6487828801611b92565b95989497509550505050565b600060208284031215611e8257600080fd5b60006104838484611bdb565b600060208284031215611ea057600080fd5b60006104838484611be6565b600060208284031215611ebe57600080fd5b60006104838484611bf1565b6000611ed683836122fc565b505060600190565b611ee78161260e565b82525050565b611ee7611ef98261260e565b612638565b6000611f0982612601565b611f138185612605565b9350611f1e836125fb565b8060005b83811015611f4c578151611f368882611eca565b9750611f41836125fb565b925050600101611f22565b509495945050505050565b611ee781612619565b611ee78161262d565b6000611f76602083612605565b7f56657374696e67207265676973747279206164647265737320696e76616c6964815260200192915050565b6000611faf601f83612605565b7f746f6b656e206f776e65722063616e6e6f742062652030206164647265737300815260200192915050565b6000611fe8602683612605565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000612030601e83612605565b7f76657374696e67466163746f7279206164647265737320696e76616c69640000815260200192915050565b6000612069600e83612605565b6d185b5bdd5b9d081a5b9d985b1a5960921b815260200192915050565b6000612093601783612605565b7f76657374696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b60006120cc601c83612605565b7f76657374696e674f776e6572206164647265737320696e76616c696400000000815260200192915050565b6000612105602e83612605565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015260400192915050565b6000612155600c83612605565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061217d602c83612605565b7f76657374696e67206372656174696f6e2074797065206d75737420626520677281526b06561746572207468616e20360a41b602082015260400192915050565b60006121cb601883612605565b7f7265636569766572206164647265737320696e76616c69640000000000000000815260200192915050565b6000612204601f83612605565b7f66656553686172696e6750726f7879206164647265737320696e76616c696400815260200192915050565b600061223d601983612605565b7f4c6f636b6564534f56206164647265737320696e76616c696400000000000000815260200192915050565b6000612276601783612605565b7f7374616b696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b60006122af600f83612605565b6e1d1c985b9cd9995c8819985a5b1959608a1b815260200192915050565b60006122da601383612605565b7214d3d5881859191c995cdcc81a5b9d985b1a59606a1b815260200192915050565b8051606083019061230d8482612333565b5060208201516123206020850182612333565b5060408201516104e06040850182611ede565b611ee78161262a565b611ee76123488261262a565b61262a565b60006123598288611eed565b601482019150612369828761233c565b602082019150612379828661233c565b602082019150612389828561233c565b602082019150612399828461233c565b5060200195945050505050565b602081016110b68284611ede565b60e081016123c2828a611ede565b6123cf6020830189611ede565b6123dc6040830188611ede565b6123e96060830187612333565b6123f66080830186612333565b61240360a0830185611ede565b61241060c0830184611ede565b98975050505050505050565b6040810161242a8285611ede565b6124376020830184612333565b9392505050565b60a0810161244c8288611ede565b6124596020830187612333565b6124666040830186612333565b6124736060830185612333565b6124806080830184612333565b9695505050505050565b602080825281016124378184611efe565b602081016110b68284611f57565b602081016110b68284611f60565b602080825281016110b681611f69565b602080825281016110b681611fa2565b602080825281016110b681611fdb565b602080825281016110b681612023565b602080825281016110b68161205c565b602080825281016110b681612086565b602080825281016110b6816120bf565b602080825281016110b6816120f8565b602080825281016110b681612148565b602080825281016110b681612170565b602080825281016110b6816121be565b602080825281016110b6816121f7565b602080825281016110b681612230565b602080825281016110b681612269565b602080825281016110b6816122a2565b602080825281016110b6816122cd565b602081016110b68284612333565b6040810161242a8285612333565b606081016125e18286612333565b6125ee6020830185612333565b6104836040830184611ede565b60200190565b5190565b90815260200190565b60006110b68261261e565b151590565b6001600160a01b031690565b90565b60006110b68261260e565b60006110b68260006110b68260601b90565b6126538161260e565b811461064357600080fd5b61265381612619565b6126538161262a56fea365627a7a723158207c8f2e0de246ffebef083dd4557d8d44cb2b6338b0bc85081ebfc7e3b29954e56c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x70 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x74 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x26B3 DUP1 PUSH2 0x83 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xC680C0B7 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xEFB95733 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xEFB95733 EQ PUSH2 0x3E7 JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x407 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x422 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xCC49EDE7 EQ PUSH2 0x3A1 JUMPI DUP1 PUSH4 0xDBB049D1 EQ PUSH2 0x3B4 JUMPI DUP1 PUSH4 0xDFB9366D EQ PUSH2 0x3C7 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xB810C648 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xB810C648 EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0xC0E09852 EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0xC36519D1 EQ PUSH2 0x37B JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x31C JUMPI DUP1 PUSH4 0x8DEDF009 EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x345 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x42A82B4F GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x79A83F5A GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x79A83F5A EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0x821BEE73 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x842A49D5 EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0x862E229D EQ PUSH2 0x309 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x42A82B4F EQ PUSH2 0x27E JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x2A1 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x1F509326 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0x377220FD EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x25E JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x2DF0476 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x665A06F EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x21D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x1D2A JUMP JUMPDEST PUSH2 0x42A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x23A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21B PUSH2 0x216 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D2A JUMP JUMPDEST PUSH2 0x48B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F2 PUSH2 0x4E6 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x4F5 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x246 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D8B JUMP JUMPDEST PUSH2 0x574 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x259 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x616 JUMP JUMPDEST PUSH2 0x271 PUSH2 0x26C CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x646 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x249B JUMP JUMPDEST PUSH2 0x21B PUSH2 0x28C CALLDATASIZE PUSH1 0x4 PUSH2 0x1C38 JUMP JUMPDEST PUSH2 0x65B JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x8CA JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x2AF CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CF0 JUMP JUMPDEST PUSH2 0x961 JUMP JUMPDEST PUSH2 0x2DA PUSH2 0x2D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E8E JUMP JUMPDEST PUSH2 0xB0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x25D3 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x2F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E8E JUMP JUMPDEST PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x24A9 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x317 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D8B JUMP JUMPDEST PUSH2 0xB5E JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0xBED JUMP JUMPDEST PUSH2 0x337 PUSH2 0x332 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP3 SWAP2 SWAP1 PUSH2 0x25C5 JUMP JUMPDEST PUSH2 0x271 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x35B CALLDATASIZE PUSH1 0x4 PUSH2 0x1E00 JUMP JUMPDEST PUSH2 0xD20 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0xE30 JUMP JUMPDEST PUSH2 0x271 PUSH2 0x376 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x389 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D2A JUMP JUMPDEST PUSH2 0xE54 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x39C CALLDATASIZE PUSH1 0x4 PUSH2 0x1CF0 JUMP JUMPDEST PUSH2 0xE5D JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x3AF CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0xF9D JUMP JUMPDEST PUSH2 0x271 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x3DA PUSH2 0x3D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CF0 JUMP JUMPDEST PUSH2 0x10C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x25B7 JUMP JUMPDEST PUSH2 0x3FA PUSH2 0x3F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x10F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x248A JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x123A JUMP JUMPDEST PUSH2 0x21B PUSH2 0x41D CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x1249 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x44D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x234D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 SWAP1 SWAP3 MSTORE SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x493 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0x4AD JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x4D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4E0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x574 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x4FD PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x519 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0x569 SWAP1 DUP4 SWAP1 PUSH2 0x23A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x57C PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0x596 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x5B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C3 DUP7 DUP6 DUP6 PUSH1 0x1 JUMPDEST DUP7 PUSH2 0x1285 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xD6FCFD83804F6B6B63260C7B99EB10060BC1319DBC9177FB6DEFC7BD614017BF DUP3 DUP7 DUP7 DUP10 DUP8 PUSH1 0x40 MLOAD PUSH2 0x606 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x243E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x61E PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x63A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x643 DUP2 PUSH2 0x1535 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x663 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x67F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x698 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x6B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0x705 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x25A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x72B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2587 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x751 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2567 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x777 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2517 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x79D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2577 JUMP JUMPDEST PUSH2 0x7A6 DUP10 PUSH2 0x1535 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD DUP3 AND DUP11 DUP5 AND OR SWAP1 SSTORE PUSH1 0x7 DUP1 SLOAD DUP3 AND DUP10 DUP5 AND OR SWAP1 SSTORE PUSH1 0x8 DUP1 SLOAD DUP3 AND DUP9 DUP5 AND OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP1 SWAP2 AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x8AC JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x815 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x82A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x851 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24B7 JUMP JUMPDEST PUSH1 0x4 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x85F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x874 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1BFC JUMP JUMPDEST DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE ADD PUSH2 0x7FF JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x8BF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x8F0 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x90C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0x569 SWAP1 DUP4 SWAP1 PUSH2 0x23A6 JUMP JUMPDEST PUSH2 0x969 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0x983 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x99F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x9C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2507 JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x9E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24F7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0xA17 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x241C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xA69 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1E70 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x7547C7A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x7547C7A3 SWAP1 PUSH2 0xA96 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF DUP3 PUSH1 0x40 MLOAD PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xB44 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH2 0xB66 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0xB80 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xB9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBAA DUP7 DUP6 DUP6 DUP5 PUSH2 0x5BD JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x3791C6C90C276D011B4B885C0BFBA0554342ACF50A539BACA1B06F070AF25FF4 DUP3 DUP7 DUP7 DUP10 DUP8 PUSH1 0x40 MLOAD PUSH2 0x606 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x243E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC7B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xCEC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD11 PUSH2 0x157D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xD28 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0xD42 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xD5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE29 JUMPI PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xD77 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xD8C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xDB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24C7 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xDC1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD GT PUSH2 0xDE5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2547 JUMP JUMPDEST PUSH2 0xE21 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xDF4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xE09 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1BFC JUMP JUMPDEST DUP5 DUP5 DUP5 DUP2 DUP2 LT PUSH2 0xE15 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1581 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD61 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x430 JUMP JUMPDEST PUSH2 0xE65 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0xE81 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xEA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2557 JUMP JUMPDEST DUP1 PUSH2 0xEC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24F7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xEF6 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x241C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF24 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xF48 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1E70 JUMP JUMPDEST PUSH2 0xF64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2597 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD DUP3 PUSH1 0x40 MLOAD PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1005 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1029 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1077 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x108B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x10AF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x10DB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0xA PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1162 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x114E JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x60 DUP3 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x11AC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1199 PUSH2 0x1B52 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1191 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1231 JUMPI PUSH1 0x9 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x11CA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x121E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x11B2 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1251 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x126D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x643 DUP2 PUSH2 0x1AC3 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 DUP6 DUP9 DUP9 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x12A3 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x234D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x150F JUMPI DUP5 PUSH1 0x1 EQ ISZERO PUSH2 0x1387 JUMPI PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7D2FBB8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND SWAP5 PUSH4 0xFA5F771E SWAP5 PUSH2 0x132E SWAP5 SWAP1 DUP3 AND SWAP4 SWAP1 DUP3 AND SWAP3 DUP16 SWAP3 DUP16 SWAP3 DUP16 SWAP3 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1348 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x135C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1380 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C1A JUMP JUMPDEST SWAP2 POP PUSH2 0x147D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x546344F0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 DUP12 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1428 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1456 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x147A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C1A JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP8 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP5 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x9 DUP7 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SSTORE SWAP4 MLOAD PUSH1 0x1 DUP1 DUP9 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH1 0x2 SWAP1 SWAP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP7 DUP5 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP6 SSTORE SWAP1 DUP14 AND DUP3 MSTORE PUSH1 0xA DUP4 MSTORE DUP5 DUP3 KECCAK256 DUP1 SLOAD DUP1 DUP7 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE DUP4 DUP4 KECCAK256 ADD DUP7 SWAP1 SSTORE DUP2 MSTORE PUSH1 0xB SWAP1 SWAP2 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x155B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1ABA JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x15A5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC49EDE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xCC49EDE7 SWAP1 PUSH2 0x15DE SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x23A6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x160A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x162E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C1A JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x17E4 JUMPI PUSH1 0x0 DUP2 SWAP1 POP DUP9 DUP8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x167F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1693 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x16B7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1704 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1728 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST DUP12 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x173D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x234D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x60 DUP5 ADD DUP4 MSTORE DUP11 DUP5 MSTORE DUP2 DUP5 ADD DUP13 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP7 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 DUP8 MSTORE DUP8 DUP2 KECCAK256 SWAP9 MLOAD DUP10 SSTORE SWAP4 MLOAD PUSH1 0x1 DUP1 DUP11 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH1 0x2 SWAP1 SWAP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP9 DUP5 AND SWAP9 SWAP1 SWAP9 OR SWAP1 SWAP8 SSTORE SWAP1 DUP16 AND DUP3 MSTORE PUSH1 0xA DUP5 MSTORE DUP5 DUP3 KECCAK256 DUP1 SLOAD DUP1 DUP9 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE DUP5 DUP4 KECCAK256 ADD DUP4 SWAP1 SSTORE DUP2 MSTORE PUSH1 0xB SWAP1 SWAP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SWAP5 POP POP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x17F3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xC810A3E3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC810A3E3 SWAP1 PUSH2 0x182C SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x23A6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1844 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1858 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x187C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C1A JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x1AB0 JUMPI PUSH1 0x0 DUP2 SWAP1 POP DUP10 DUP8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1905 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x193E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1952 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1976 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x198B SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x234D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP6 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0x9 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0xA PUSH1 0x0 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP7 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE POP PUSH1 0x1 PUSH1 0xB PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x158E JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1AE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24D7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 PUSH3 0x10000 SWAP1 SWAP4 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x10B6 DUP2 PUSH2 0x264A JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B6 DUP2 PUSH2 0x264A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1BA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1BD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B6 DUP2 PUSH2 0x265E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x10B6 DUP2 PUSH2 0x2667 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B6 DUP2 PUSH2 0x2667 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1C54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C60 DUP12 DUP12 PUSH2 0x1B7C JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x1C71 DUP12 DUP3 DUP13 ADD PUSH2 0x1B7C JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x1C82 DUP12 DUP3 DUP13 ADD PUSH2 0x1B7C JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x1C93 DUP12 DUP3 DUP13 ADD PUSH2 0x1B7C JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x1CA4 DUP12 DUP3 DUP13 ADD PUSH2 0x1B7C JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x1CB5 DUP12 DUP3 DUP13 ADD PUSH2 0x1B7C JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1CD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CDE DUP12 DUP3 DUP13 ADD PUSH2 0x1B92 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1D0F DUP6 DUP6 PUSH2 0x1B7C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1D20 DUP6 DUP3 DUP7 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1D40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1D4C DUP8 DUP8 PUSH2 0x1B7C JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x1D5D DUP8 DUP3 DUP9 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x1D6E DUP8 DUP3 DUP9 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x1D7F DUP8 DUP3 DUP9 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1DA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1DAF DUP9 DUP9 PUSH2 0x1B7C JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x1DC0 DUP9 DUP3 DUP10 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x1DD1 DUP9 DUP3 DUP10 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x1DE2 DUP9 DUP3 DUP10 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x1DF3 DUP9 DUP3 DUP10 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1E16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E39 DUP8 DUP3 DUP9 ADD PUSH2 0x1B92 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E64 DUP8 DUP3 DUP9 ADD PUSH2 0x1B92 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1BE6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1BF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ED6 DUP4 DUP4 PUSH2 0x22FC JUMP JUMPDEST POP POP PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1EE7 DUP2 PUSH2 0x260E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1EE7 PUSH2 0x1EF9 DUP3 PUSH2 0x260E JUMP JUMPDEST PUSH2 0x2638 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F09 DUP3 PUSH2 0x2601 JUMP JUMPDEST PUSH2 0x1F13 DUP2 DUP6 PUSH2 0x2605 JUMP JUMPDEST SWAP4 POP PUSH2 0x1F1E DUP4 PUSH2 0x25FB JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F4C JUMPI DUP2 MLOAD PUSH2 0x1F36 DUP9 DUP3 PUSH2 0x1ECA JUMP JUMPDEST SWAP8 POP PUSH2 0x1F41 DUP4 PUSH2 0x25FB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1F22 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1EE7 DUP2 PUSH2 0x2619 JUMP JUMPDEST PUSH2 0x1EE7 DUP2 PUSH2 0x262D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F76 PUSH1 0x20 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x56657374696E67207265676973747279206164647265737320696E76616C6964 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FAF PUSH1 0x1F DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x746F6B656E206F776E65722063616E6E6F742062652030206164647265737300 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FE8 PUSH1 0x26 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2030 PUSH1 0x1E DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x76657374696E67466163746F7279206164647265737320696E76616C69640000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2069 PUSH1 0xE DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2093 PUSH1 0x17 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x76657374696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20CC PUSH1 0x1C DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x76657374696E674F776E6572206164647265737320696E76616C696400000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2105 PUSH1 0x2E DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 DUP2 MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2155 PUSH1 0xC DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x217D PUSH1 0x2C DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x76657374696E67206372656174696F6E2074797065206D757374206265206772 DUP2 MSTORE PUSH12 0x6561746572207468616E203 PUSH1 0xA4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21CB PUSH1 0x18 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2204 PUSH1 0x1F DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x66656553686172696E6750726F7879206164647265737320696E76616C696400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x223D PUSH1 0x19 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x4C6F636B6564534F56206164647265737320696E76616C696400000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2276 PUSH1 0x17 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x7374616B696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22AF PUSH1 0xF DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH15 0x1D1C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22DA PUSH1 0x13 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH19 0x14D3D5881859191C995CDCC81A5B9D985B1A59 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x230D DUP5 DUP3 PUSH2 0x2333 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2320 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2333 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4E0 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x1EE7 DUP2 PUSH2 0x262A JUMP JUMPDEST PUSH2 0x1EE7 PUSH2 0x2348 DUP3 PUSH2 0x262A JUMP JUMPDEST PUSH2 0x262A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2359 DUP3 DUP9 PUSH2 0x1EED JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x2369 DUP3 DUP8 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x2379 DUP3 DUP7 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x2389 DUP3 DUP6 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x2399 DUP3 DUP5 PUSH2 0x233C JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x23C2 DUP3 DUP11 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x23CF PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x23DC PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x23E9 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x23F6 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x2403 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x2410 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x1EDE JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x242A DUP3 DUP6 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x2437 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2333 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x244C DUP3 DUP9 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x2459 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x2466 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x2473 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x2480 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2333 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2437 DUP2 DUP5 PUSH2 0x1EFE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x1F57 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x1F60 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x1F69 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x1FA2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x1FDB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x205C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2086 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x20BF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x20F8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2148 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2170 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x21BE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x21F7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2230 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x22A2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x22CD JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x242A DUP3 DUP6 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x25E1 DUP3 DUP7 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x25EE PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x483 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH2 0x261E JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH2 0x260E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x2653 DUP2 PUSH2 0x260E JUMP JUMPDEST DUP2 EQ PUSH2 0x643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2653 DUP2 PUSH2 0x2619 JUMP JUMPDEST PUSH2 0x2653 DUP2 PUSH2 0x262A JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH29 0x8F2E0DE246FFEBEF083DD4557D8D44CB2B6338B0BC85081EBFC7E3B299 SLOAD 0xE5 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "117:177:119:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;;-1:-1:-1;;;;;713:18:142;;;;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;117:177:119;;780:87:137;853:10;780:87;:::o;117:177:119:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063c680c0b7116100a2578063efb9573311610071578063efb95733146103e7578063f2f46b3b14610407578063f2fde38b1461040f578063f60826ee14610422576101da565b8063c680c0b71461038e578063cc49ede7146103a1578063dbb049d1146103b4578063dfb9366d146103c7576101da565b8063b810c648116100de578063b810c6481461034d578063bd7b590814610360578063c0e0985214610368578063c36519d11461037b576101da565b80638da5cb5b1461031c5780638dedf009146103245780638f32d59b14610345576101da565b806342a82b4f1161017c57806379a83f5a1161014b57806379a83f5a146102b4578063821bee73146102c7578063842a49d5146102e9578063862e229d14610309576101da565b806342a82b4f1461027e5780634cf088d9146102915780636a26b57f1461029957806370480275146102a1576101da565b80631785f53c116101b85780631785f53c146102255780631f50932614610238578063377220fd1461024b578063429b62e51461025e576101da565b806302df0476146101df5780630665a06f1461020857806308dcb3601461021d575b600080fd5b6101f26101ed366004611d2a565b61042a565b6040516101ff91906123a6565b60405180910390f35b61021b610216366004611d2a565b61048b565b005b6101f26104e6565b61021b610233366004611bfc565b6104f5565b61021b610246366004611d8b565b610574565b61021b610259366004611bfc565b610616565b61027161026c366004611bfc565b610646565b6040516101ff919061249b565b61021b61028c366004611c38565b61065b565b6101f26108ca565b6101f26108d9565b61021b6102af366004611bfc565b6108e8565b61021b6102c2366004611cf0565b610961565b6102da6102d5366004611e8e565b610b0d565b6040516101ff939291906125d3565b6102fc6102f7366004611e8e565b610b37565b6040516101ff91906124a9565b61021b610317366004611d8b565b610b5e565b6101f2610bed565b610337610332366004611bfc565b610c02565b6040516101ff9291906125c5565b610271610cf6565b61021b61035b366004611e00565b610d20565b6101f2610e30565b610271610376366004611bfc565b610e3f565b6101f2610389366004611d2a565b610e54565b61021b61039c366004611cf0565b610e5d565b6101f26103af366004611bfc565b610f9d565b6102716103c2366004611bfc565b6110bc565b6103da6103d5366004611cf0565b6110c2565b6040516101ff91906125b7565b6103fa6103f5366004611bfc565b6110f0565b6040516101ff919061248a565b6102fc61123a565b61021b61041d366004611bfc565b611249565b6102fc611276565b60008060015b90506000868287878760405160200161044d95949392919061234d565b60408051601f198184030181529181528151602092830120600090815260099092529020600201546001600160a01b0316925050505b949350505050565b610493610cf6565b806104ad57503360009081526001602052604090205460ff165b6104d25760405162461bcd60e51b81526004016104c990612537565b60405180910390fd5b6104e0848484846000610574565b50505050565b6005546001600160a01b031681565b6104fd610cf6565b6105195760405162461bcd60e51b81526004016104c990612537565b6001600160a01b03811660009081526001602052604090819020805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f906105699083906123a6565b60405180910390a150565b61057c610cf6565b8061059657503360009081526001602052604090205460ff165b6105b25760405162461bcd60e51b81526004016104c990612537565b60006105c386858560015b86611285565b9050856001600160a01b03167fd6fcfd83804f6b6b63260c7b99eb10060bc1319dbc9177fb6defc7bd614017bf828686898760405161060695949392919061243e565b60405180910390a2505050505050565b61061e610cf6565b61063a5760405162461bcd60e51b81526004016104c990612537565b61064381611535565b50565b60016020526000908152604090205460ff1681565b610663610cf6565b61067f5760405162461bcd60e51b81526004016104c990612537565b600054610100900460ff1680610698575060005460ff16155b6106b45760405162461bcd60e51b81526004016104c990612527565b600054610100900460ff161580156106df576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0388166107055760405162461bcd60e51b81526004016104c9906125a7565b6001600160a01b03871661072b5760405162461bcd60e51b81526004016104c990612587565b6001600160a01b0386166107515760405162461bcd60e51b81526004016104c990612567565b6001600160a01b0385166107775760405162461bcd60e51b81526004016104c990612517565b6001600160a01b03841661079d5760405162461bcd60e51b81526004016104c990612577565b6107a689611535565b600580546001600160a01b03199081166001600160a01b038b8116919091179092556006805482168a84161790556007805482168984161790556008805482168884161790556003805490911691861691909117905560005b828110156108ac57600084848381811061081557fe5b905060200201602061082a9190810190611bfc565b6001600160a01b031614156108515760405162461bcd60e51b81526004016104c9906124b7565b600484848381811061085f57fe5b90506020020160206108749190810190611bfc565b815460018082018455600093845260209093200180546001600160a01b0319166001600160a01b0392909216919091179055016107ff565b5080156108bf576000805461ff00191690555b505050505050505050565b6006546001600160a01b031681565b6007546001600160a01b031681565b6108f0610cf6565b61090c5760405162461bcd60e51b81526004016104c990612537565b6001600160a01b038116600090815260016020819052604091829020805460ff19169091179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339906105699083906123a6565b610969610cf6565b8061098357503360009081526001602052604090205460ff165b61099f5760405162461bcd60e51b81526004016104c990612537565b6001600160a01b0382166109c55760405162461bcd60e51b81526004016104c990612507565b600081116109e55760405162461bcd60e51b81526004016104c9906124f7565b60055460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390610a17908590859060040161241c565b602060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a699190810190611e70565b50604051637547c7a360e01b81526001600160a01b03831690637547c7a390610a969084906004016125b7565b600060405180830381600087803b158015610ab057600080fd5b505af1158015610ac4573d6000803e3d6000fd5b50505050816001600160a01b03167fb539ca1e5c8d398ddf1c41c30166f33404941683be4683319b57669a93dad4ef82604051610b0191906125b7565b60405180910390a25050565b6009602052600090815260409020805460018201546002909201549091906001600160a01b031683565b60048181548110610b4457fe5b6000918252602090912001546001600160a01b0316905081565b610b66610cf6565b80610b8057503360009081526001602052604090205460ff165b610b9c5760405162461bcd60e51b81526004016104c990612537565b6000610baa868585846105bd565b9050856001600160a01b03167f3791c6c90c276d011b4b885c0bfba0554342acf50a539baca1b06f070af25ff4828686898760405161060695949392919061243e565b6000546201000090046001600160a01b031690565b6000806000839050806001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4357600080fd5b505afa158015610c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7b9190810190611eac565b816001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b158015610cb457600080fd5b505afa158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cec9190810190611eac565b9250925050915091565b600080546201000090046001600160a01b0316610d1161157d565b6001600160a01b031614905090565b610d28610cf6565b80610d4257503360009081526001602052604090205460ff165b610d5e5760405162461bcd60e51b81526004016104c990612537565b60005b83811015610e29576000858583818110610d7757fe5b9050602002016020610d8c9190810190611bfc565b6001600160a01b03161415610db35760405162461bcd60e51b81526004016104c9906124c7565b6000838383818110610dc157fe5b9050602002013511610de55760405162461bcd60e51b81526004016104c990612547565b610e21858583818110610df457fe5b9050602002016020610e099190810190611bfc565b848484818110610e1557fe5b90506020020135611581565b600101610d61565b5050505050565b6008546001600160a01b031681565b600b6020526000908152604090205460ff1681565b60008080610430565b610e65610cf6565b610e815760405162461bcd60e51b81526004016104c990612537565b6001600160a01b038216610ea75760405162461bcd60e51b81526004016104c990612557565b80610ec45760405162461bcd60e51b81526004016104c9906124f7565b60055460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610ef6908590859060040161241c565b602060405180830381600087803b158015610f1057600080fd5b505af1158015610f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f489190810190611e70565b610f645760405162461bcd60e51b81526004016104c990612597565b816001600160a01b03167fe1b0ada289bf82fb641c8c1e1c78f820fae44e8f845760725cdeb09167a289ad82604051610b0191906125b7565b60006110b682600360009054906101000a90046001600160a01b03166001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110299190810190611eac565b600360009054906101000a90046001600160a01b03166001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561107757600080fd5b505afa15801561108b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110af9190810190611eac565b600061042a565b92915050565b50600190565b600a60205281600052604060002081815481106110db57fe5b90600052602060002001600091509150505481565b606080600a6000846001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561116257602002820191906000526020600020905b81548152602001906001019080831161114e575b50505050509050600081519050606082516040519080825280602002602001820160405280156111ac57816020015b611199611b52565b8152602001906001900390816111915790505b50905060005b8281101561123157600960008583815181106111ca57fe5b6020908102919091018101518252818101929092526040908101600020815160608101835281548152600182015493810193909352600201546001600160a01b031690820152825183908390811061121e57fe5b60209081029190910101526001016111b2565b50949350505050565b6003546001600160a01b031681565b611251610cf6565b61126d5760405162461bcd60e51b81526004016104c990612537565b61064381611ac3565b6002546001600160a01b031681565b600080600087858888876040516020016112a395949392919061234d565b60408051601f198184030181529181528151602092830120600081815260099093529120600201549091506001600160a01b031661150f57846001141561138757600254600554600654600754604051637d2fbb8f60e11b81526001600160a01b039485169463fa5f771e9461132e9490821693908216928f928f928f9291169084906004016123b4565b602060405180830381600087803b15801561134857600080fd5b505af115801561135c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113809190810190611c1a565b915061147d565b600260009054906101000a90046001600160a01b03166001600160a01b031663546344f0600560009054906101000a90046001600160a01b0316600660009054906101000a90046001600160a01b03168b8b8b600760009054906101000a90046001600160a01b0316600860009054906101000a90046001600160a01b03166040518863ffffffff1660e01b815260040161142897969594939291906123b4565b602060405180830381600087803b15801561144257600080fd5b505af1158015611456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061147a9190810190611c1a565b91505b6040805160608101825286815260208082018781526001600160a01b038681168486018181526000888152600986528781209651875593516001808801919091559051600290960180546001600160a01b03191696841696909617909555908d168252600a835284822080548086018255908352838320018690558152600b90915291909120805460ff191690911790555b6000908152600960205260409020600201546001600160a01b0316979650505050505050565b6001600160a01b03811661155b5760405162461bcd60e51b81526004016104c9906124e7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6004546001906000908190815b81811015611aba576000600482815481106115a557fe5b60009182526020909120015460405163cc49ede760e01b81526001600160a01b039091169063cc49ede7906115de908b906004016123a6565b60206040518083038186803b1580156115f657600080fd5b505afa15801561160a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061162e9190810190611c1a565b90506001600160a01b038116156117e45760008190508887826001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b15801561167f57600080fd5b505afa158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116b79190810190611eac565b836001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b1580156116f057600080fd5b505afa158015611704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117289190810190611eac565b8b60405160200161173d95949392919061234d565b60408051808303601f1901815282825280516020918201206060840183528a84528184018c81526001600160a01b038781168686018181526000858152600987528781209851895593516001808a01919091559051600290980180546001600160a01b03191698841698909817909755908f168252600a845284822080548088018255908352848320018390558152600b909252919020805460ff19169092179091559450505b6000600483815481106117f357fe5b60009182526020909120015460405163c810a3e360e01b81526001600160a01b039091169063c810a3e39061182c908c906004016123a6565b60206040518083038186803b15801561184457600080fd5b505afa158015611858573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061187c9190810190611c1a565b90506001600160a01b03811615611ab05760008190508987826001600160a01b03166313d033c06040518163ffffffff1660e01b815260040160206040518083038186803b1580156118cd57600080fd5b505afa1580156118e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119059190810190611eac565b836001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561193e57600080fd5b505afa158015611952573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119769190810190611eac565b8c60405160200161198b95949392919061234d565b6040516020818303038152906040528051906020012060001c955060405180606001604052808881526020018a8152602001836001600160a01b031681525060096000888152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050600a60008b6001600160a01b03166001600160a01b031681526020019081526020016000208690806001815401808255809150509060018203906000526020600020016000909192909190915055506001600b6000846001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550505b505060010161158e565b50505050505050565b6001600160a01b038116611ae95760405162461bcd60e51b81526004016104c9906124d7565b600080546040516001600160a01b03808516936201000090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6040518060600160405280600081526020016000815260200160006001600160a01b031681525090565b80356110b68161264a565b80516110b68161264a565b60008083601f840112611ba457600080fd5b50813567ffffffffffffffff811115611bbc57600080fd5b602083019150836020820283011115611bd457600080fd5b9250929050565b80516110b68161265e565b80356110b681612667565b80516110b681612667565b600060208284031215611c0e57600080fd5b60006104838484611b7c565b600060208284031215611c2c57600080fd5b60006104838484611b87565b60008060008060008060008060e0898b031215611c5457600080fd5b6000611c608b8b611b7c565b9850506020611c718b828c01611b7c565b9750506040611c828b828c01611b7c565b9650506060611c938b828c01611b7c565b9550506080611ca48b828c01611b7c565b94505060a0611cb58b828c01611b7c565b93505060c089013567ffffffffffffffff811115611cd257600080fd5b611cde8b828c01611b92565b92509250509295985092959890939650565b60008060408385031215611d0357600080fd5b6000611d0f8585611b7c565b9250506020611d2085828601611be6565b9150509250929050565b60008060008060808587031215611d4057600080fd5b6000611d4c8787611b7c565b9450506020611d5d87828801611be6565b9350506040611d6e87828801611be6565b9250506060611d7f87828801611be6565b91505092959194509250565b600080600080600060a08688031215611da357600080fd5b6000611daf8888611b7c565b9550506020611dc088828901611be6565b9450506040611dd188828901611be6565b9350506060611de288828901611be6565b9250506080611df388828901611be6565b9150509295509295909350565b60008060008060408587031215611e1657600080fd5b843567ffffffffffffffff811115611e2d57600080fd5b611e3987828801611b92565b9450945050602085013567ffffffffffffffff811115611e5857600080fd5b611e6487828801611b92565b95989497509550505050565b600060208284031215611e8257600080fd5b60006104838484611bdb565b600060208284031215611ea057600080fd5b60006104838484611be6565b600060208284031215611ebe57600080fd5b60006104838484611bf1565b6000611ed683836122fc565b505060600190565b611ee78161260e565b82525050565b611ee7611ef98261260e565b612638565b6000611f0982612601565b611f138185612605565b9350611f1e836125fb565b8060005b83811015611f4c578151611f368882611eca565b9750611f41836125fb565b925050600101611f22565b509495945050505050565b611ee781612619565b611ee78161262d565b6000611f76602083612605565b7f56657374696e67207265676973747279206164647265737320696e76616c6964815260200192915050565b6000611faf601f83612605565b7f746f6b656e206f776e65722063616e6e6f742062652030206164647265737300815260200192915050565b6000611fe8602683612605565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000612030601e83612605565b7f76657374696e67466163746f7279206164647265737320696e76616c69640000815260200192915050565b6000612069600e83612605565b6d185b5bdd5b9d081a5b9d985b1a5960921b815260200192915050565b6000612093601783612605565b7f76657374696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b60006120cc601c83612605565b7f76657374696e674f776e6572206164647265737320696e76616c696400000000815260200192915050565b6000612105602e83612605565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015260400192915050565b6000612155600c83612605565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061217d602c83612605565b7f76657374696e67206372656174696f6e2074797065206d75737420626520677281526b06561746572207468616e20360a41b602082015260400192915050565b60006121cb601883612605565b7f7265636569766572206164647265737320696e76616c69640000000000000000815260200192915050565b6000612204601f83612605565b7f66656553686172696e6750726f7879206164647265737320696e76616c696400815260200192915050565b600061223d601983612605565b7f4c6f636b6564534f56206164647265737320696e76616c696400000000000000815260200192915050565b6000612276601783612605565b7f7374616b696e67206164647265737320696e76616c6964000000000000000000815260200192915050565b60006122af600f83612605565b6e1d1c985b9cd9995c8819985a5b1959608a1b815260200192915050565b60006122da601383612605565b7214d3d5881859191c995cdcc81a5b9d985b1a59606a1b815260200192915050565b8051606083019061230d8482612333565b5060208201516123206020850182612333565b5060408201516104e06040850182611ede565b611ee78161262a565b611ee76123488261262a565b61262a565b60006123598288611eed565b601482019150612369828761233c565b602082019150612379828661233c565b602082019150612389828561233c565b602082019150612399828461233c565b5060200195945050505050565b602081016110b68284611ede565b60e081016123c2828a611ede565b6123cf6020830189611ede565b6123dc6040830188611ede565b6123e96060830187612333565b6123f66080830186612333565b61240360a0830185611ede565b61241060c0830184611ede565b98975050505050505050565b6040810161242a8285611ede565b6124376020830184612333565b9392505050565b60a0810161244c8288611ede565b6124596020830187612333565b6124666040830186612333565b6124736060830185612333565b6124806080830184612333565b9695505050505050565b602080825281016124378184611efe565b602081016110b68284611f57565b602081016110b68284611f60565b602080825281016110b681611f69565b602080825281016110b681611fa2565b602080825281016110b681611fdb565b602080825281016110b681612023565b602080825281016110b68161205c565b602080825281016110b681612086565b602080825281016110b6816120bf565b602080825281016110b6816120f8565b602080825281016110b681612148565b602080825281016110b681612170565b602080825281016110b6816121be565b602080825281016110b6816121f7565b602080825281016110b681612230565b602080825281016110b681612269565b602080825281016110b6816122a2565b602080825281016110b6816122cd565b602081016110b68284612333565b6040810161242a8285612333565b606081016125e18286612333565b6125ee6020830185612333565b6104836040830184611ede565b60200190565b5190565b90815260200190565b60006110b68261261e565b151590565b6001600160a01b031690565b90565b60006110b68261260e565b60006110b68260006110b68260601b90565b6126538161260e565b811461064357600080fd5b61265381612619565b6126538161262a56fea365627a7a723158207c8f2e0de246ffebef083dd4557d8d44cb2b6338b0bc85081ebfc7e3b29954e56c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xC680C0B7 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xEFB95733 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xEFB95733 EQ PUSH2 0x3E7 JUMPI DUP1 PUSH4 0xF2F46B3B EQ PUSH2 0x407 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x40F JUMPI DUP1 PUSH4 0xF60826EE EQ PUSH2 0x422 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xC680C0B7 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xCC49EDE7 EQ PUSH2 0x3A1 JUMPI DUP1 PUSH4 0xDBB049D1 EQ PUSH2 0x3B4 JUMPI DUP1 PUSH4 0xDFB9366D EQ PUSH2 0x3C7 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xB810C648 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xB810C648 EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0xBD7B5908 EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0xC0E09852 EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0xC36519D1 EQ PUSH2 0x37B JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x31C JUMPI DUP1 PUSH4 0x8DEDF009 EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x345 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x42A82B4F GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x79A83F5A GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x79A83F5A EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0x821BEE73 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x842A49D5 EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0x862E229D EQ PUSH2 0x309 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x42A82B4F EQ PUSH2 0x27E JUMPI DUP1 PUSH4 0x4CF088D9 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0x6A26B57F EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x2A1 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x1785F53C GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x1F509326 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0x377220FD EQ PUSH2 0x24B JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x25E JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x2DF0476 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x665A06F EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x21D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x1D2A JUMP JUMPDEST PUSH2 0x42A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x23A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21B PUSH2 0x216 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D2A JUMP JUMPDEST PUSH2 0x48B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F2 PUSH2 0x4E6 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x4F5 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x246 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D8B JUMP JUMPDEST PUSH2 0x574 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x259 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x616 JUMP JUMPDEST PUSH2 0x271 PUSH2 0x26C CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x646 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x249B JUMP JUMPDEST PUSH2 0x21B PUSH2 0x28C CALLDATASIZE PUSH1 0x4 PUSH2 0x1C38 JUMP JUMPDEST PUSH2 0x65B JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x8CA JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x2AF CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CF0 JUMP JUMPDEST PUSH2 0x961 JUMP JUMPDEST PUSH2 0x2DA PUSH2 0x2D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E8E JUMP JUMPDEST PUSH2 0xB0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x25D3 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x2F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E8E JUMP JUMPDEST PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x24A9 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x317 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D8B JUMP JUMPDEST PUSH2 0xB5E JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0xBED JUMP JUMPDEST PUSH2 0x337 PUSH2 0x332 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP3 SWAP2 SWAP1 PUSH2 0x25C5 JUMP JUMPDEST PUSH2 0x271 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x35B CALLDATASIZE PUSH1 0x4 PUSH2 0x1E00 JUMP JUMPDEST PUSH2 0xD20 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0xE30 JUMP JUMPDEST PUSH2 0x271 PUSH2 0x376 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x389 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D2A JUMP JUMPDEST PUSH2 0xE54 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x39C CALLDATASIZE PUSH1 0x4 PUSH2 0x1CF0 JUMP JUMPDEST PUSH2 0xE5D JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x3AF CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0xF9D JUMP JUMPDEST PUSH2 0x271 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x3DA PUSH2 0x3D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CF0 JUMP JUMPDEST PUSH2 0x10C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x25B7 JUMP JUMPDEST PUSH2 0x3FA PUSH2 0x3F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x10F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x248A JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x123A JUMP JUMPDEST PUSH2 0x21B PUSH2 0x41D CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x1249 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x1276 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP3 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x44D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x234D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 SWAP1 SWAP3 MSTORE SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x493 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0x4AD JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x4D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4E0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x574 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x4FD PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x519 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP1 PUSH2 0x569 SWAP1 DUP4 SWAP1 PUSH2 0x23A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x57C PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0x596 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x5B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C3 DUP7 DUP6 DUP6 PUSH1 0x1 JUMPDEST DUP7 PUSH2 0x1285 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xD6FCFD83804F6B6B63260C7B99EB10060BC1319DBC9177FB6DEFC7BD614017BF DUP3 DUP7 DUP7 DUP10 DUP8 PUSH1 0x40 MLOAD PUSH2 0x606 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x243E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x61E PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x63A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x643 DUP2 PUSH2 0x1535 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x663 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x67F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x698 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x6B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0x705 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x25A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x72B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2587 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x751 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2567 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x777 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2517 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x79D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2577 JUMP JUMPDEST PUSH2 0x7A6 DUP10 PUSH2 0x1535 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD DUP3 AND DUP11 DUP5 AND OR SWAP1 SSTORE PUSH1 0x7 DUP1 SLOAD DUP3 AND DUP10 DUP5 AND OR SWAP1 SSTORE PUSH1 0x8 DUP1 SLOAD DUP3 AND DUP9 DUP5 AND OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP1 SWAP2 AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x8AC JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x815 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x82A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x851 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24B7 JUMP JUMPDEST PUSH1 0x4 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x85F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x874 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1BFC JUMP JUMPDEST DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE ADD PUSH2 0x7FF JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x8BF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x8F0 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x90C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP1 PUSH2 0x569 SWAP1 DUP4 SWAP1 PUSH2 0x23A6 JUMP JUMPDEST PUSH2 0x969 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0x983 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x99F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x9C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2507 JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x9E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24F7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0xA17 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x241C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xA69 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1E70 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x7547C7A3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x7547C7A3 SWAP1 PUSH2 0xA96 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB539CA1E5C8D398DDF1C41C30166F33404941683BE4683319B57669A93DAD4EF DUP3 PUSH1 0x40 MLOAD PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xB44 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH2 0xB66 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0xB80 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xB9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBAA DUP7 DUP6 DUP6 DUP5 PUSH2 0x5BD JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x3791C6C90C276D011B4B885C0BFBA0554342ACF50A539BACA1B06F070AF25FF4 DUP3 DUP7 DUP7 DUP10 DUP8 PUSH1 0x40 MLOAD PUSH2 0x606 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x243E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC7B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xCEC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD11 PUSH2 0x157D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xD28 PUSH2 0xCF6 JUMP JUMPDEST DUP1 PUSH2 0xD42 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xD5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE29 JUMPI PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xD77 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xD8C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xDB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24C7 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xDC1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD GT PUSH2 0xDE5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2547 JUMP JUMPDEST PUSH2 0xE21 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xDF4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xE09 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1BFC JUMP JUMPDEST DUP5 DUP5 DUP5 DUP2 DUP2 LT PUSH2 0xE15 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1581 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD61 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x430 JUMP JUMPDEST PUSH2 0xE65 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0xE81 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xEA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2557 JUMP JUMPDEST DUP1 PUSH2 0xEC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24F7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xEF6 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x241C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF24 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xF48 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1E70 JUMP JUMPDEST PUSH2 0xF64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2597 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE1B0ADA289BF82FB641C8C1E1C78F820FAE44E8F845760725CDEB09167A289AD DUP3 PUSH1 0x40 MLOAD PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1005 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1029 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1077 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x108B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x10AF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x10DB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0xA PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1162 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x114E JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x60 DUP3 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x11AC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1199 PUSH2 0x1B52 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1191 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1231 JUMPI PUSH1 0x9 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x11CA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x121E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x11B2 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1251 PUSH2 0xCF6 JUMP JUMPDEST PUSH2 0x126D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x643 DUP2 PUSH2 0x1AC3 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 DUP6 DUP9 DUP9 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x12A3 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x234D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x150F JUMPI DUP5 PUSH1 0x1 EQ ISZERO PUSH2 0x1387 JUMPI PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7D2FBB8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND SWAP5 PUSH4 0xFA5F771E SWAP5 PUSH2 0x132E SWAP5 SWAP1 DUP3 AND SWAP4 SWAP1 DUP3 AND SWAP3 DUP16 SWAP3 DUP16 SWAP3 DUP16 SWAP3 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1348 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x135C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1380 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C1A JUMP JUMPDEST SWAP2 POP PUSH2 0x147D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x546344F0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 DUP12 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1428 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1456 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x147A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C1A JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP8 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP5 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x9 DUP7 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SSTORE SWAP4 MLOAD PUSH1 0x1 DUP1 DUP9 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH1 0x2 SWAP1 SWAP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP7 DUP5 AND SWAP7 SWAP1 SWAP7 OR SWAP1 SWAP6 SSTORE SWAP1 DUP14 AND DUP3 MSTORE PUSH1 0xA DUP4 MSTORE DUP5 DUP3 KECCAK256 DUP1 SLOAD DUP1 DUP7 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE DUP4 DUP4 KECCAK256 ADD DUP7 SWAP1 SSTORE DUP2 MSTORE PUSH1 0xB SWAP1 SWAP2 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x155B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1ABA JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x15A5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC49EDE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xCC49EDE7 SWAP1 PUSH2 0x15DE SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x23A6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x160A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x162E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C1A JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x17E4 JUMPI PUSH1 0x0 DUP2 SWAP1 POP DUP9 DUP8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x167F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1693 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x16B7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1704 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1728 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST DUP12 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x173D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x234D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x60 DUP5 ADD DUP4 MSTORE DUP11 DUP5 MSTORE DUP2 DUP5 ADD DUP13 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP7 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 DUP8 MSTORE DUP8 DUP2 KECCAK256 SWAP9 MLOAD DUP10 SSTORE SWAP4 MLOAD PUSH1 0x1 DUP1 DUP11 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH1 0x2 SWAP1 SWAP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP9 DUP5 AND SWAP9 SWAP1 SWAP9 OR SWAP1 SWAP8 SSTORE SWAP1 DUP16 AND DUP3 MSTORE PUSH1 0xA DUP5 MSTORE DUP5 DUP3 KECCAK256 DUP1 SLOAD DUP1 DUP9 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE DUP5 DUP4 KECCAK256 ADD DUP4 SWAP1 SSTORE DUP2 MSTORE PUSH1 0xB SWAP1 SWAP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SWAP5 POP POP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x17F3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xC810A3E3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC810A3E3 SWAP1 PUSH2 0x182C SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x23A6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1844 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1858 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x187C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C1A JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x1AB0 JUMPI PUSH1 0x0 DUP2 SWAP1 POP DUP10 DUP8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x13D033C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1905 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFB5A6B4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x193E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1952 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1976 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1EAC JUMP JUMPDEST DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x198B SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x234D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP6 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0x9 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0xA PUSH1 0x0 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP7 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE POP PUSH1 0x1 PUSH1 0xB PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x158E JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1AE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C9 SWAP1 PUSH2 0x24D7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 PUSH3 0x10000 SWAP1 SWAP4 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x10B6 DUP2 PUSH2 0x264A JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B6 DUP2 PUSH2 0x264A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1BA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1BD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B6 DUP2 PUSH2 0x265E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x10B6 DUP2 PUSH2 0x2667 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B6 DUP2 PUSH2 0x2667 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1C54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C60 DUP12 DUP12 PUSH2 0x1B7C JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x1C71 DUP12 DUP3 DUP13 ADD PUSH2 0x1B7C JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x1C82 DUP12 DUP3 DUP13 ADD PUSH2 0x1B7C JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x1C93 DUP12 DUP3 DUP13 ADD PUSH2 0x1B7C JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x1CA4 DUP12 DUP3 DUP13 ADD PUSH2 0x1B7C JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x1CB5 DUP12 DUP3 DUP13 ADD PUSH2 0x1B7C JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1CD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CDE DUP12 DUP3 DUP13 ADD PUSH2 0x1B92 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1D0F DUP6 DUP6 PUSH2 0x1B7C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1D20 DUP6 DUP3 DUP7 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1D40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1D4C DUP8 DUP8 PUSH2 0x1B7C JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x1D5D DUP8 DUP3 DUP9 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x1D6E DUP8 DUP3 DUP9 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x1D7F DUP8 DUP3 DUP9 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1DA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1DAF DUP9 DUP9 PUSH2 0x1B7C JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x1DC0 DUP9 DUP3 DUP10 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x1DD1 DUP9 DUP3 DUP10 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x1DE2 DUP9 DUP3 DUP10 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x1DF3 DUP9 DUP3 DUP10 ADD PUSH2 0x1BE6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1E16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E39 DUP8 DUP3 DUP9 ADD PUSH2 0x1B92 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E64 DUP8 DUP3 DUP9 ADD PUSH2 0x1B92 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1BE6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x483 DUP5 DUP5 PUSH2 0x1BF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ED6 DUP4 DUP4 PUSH2 0x22FC JUMP JUMPDEST POP POP PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1EE7 DUP2 PUSH2 0x260E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1EE7 PUSH2 0x1EF9 DUP3 PUSH2 0x260E JUMP JUMPDEST PUSH2 0x2638 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F09 DUP3 PUSH2 0x2601 JUMP JUMPDEST PUSH2 0x1F13 DUP2 DUP6 PUSH2 0x2605 JUMP JUMPDEST SWAP4 POP PUSH2 0x1F1E DUP4 PUSH2 0x25FB JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F4C JUMPI DUP2 MLOAD PUSH2 0x1F36 DUP9 DUP3 PUSH2 0x1ECA JUMP JUMPDEST SWAP8 POP PUSH2 0x1F41 DUP4 PUSH2 0x25FB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1F22 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1EE7 DUP2 PUSH2 0x2619 JUMP JUMPDEST PUSH2 0x1EE7 DUP2 PUSH2 0x262D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F76 PUSH1 0x20 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x56657374696E67207265676973747279206164647265737320696E76616C6964 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FAF PUSH1 0x1F DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x746F6B656E206F776E65722063616E6E6F742062652030206164647265737300 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FE8 PUSH1 0x26 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2030 PUSH1 0x1E DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x76657374696E67466163746F7279206164647265737320696E76616C69640000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2069 PUSH1 0xE DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH14 0x185B5BDD5B9D081A5B9D985B1A59 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2093 PUSH1 0x17 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x76657374696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20CC PUSH1 0x1C DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x76657374696E674F776E6572206164647265737320696E76616C696400000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2105 PUSH1 0x2E DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 DUP2 MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2155 PUSH1 0xC DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x217D PUSH1 0x2C DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x76657374696E67206372656174696F6E2074797065206D757374206265206772 DUP2 MSTORE PUSH12 0x6561746572207468616E203 PUSH1 0xA4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21CB PUSH1 0x18 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x7265636569766572206164647265737320696E76616C69640000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2204 PUSH1 0x1F DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x66656553686172696E6750726F7879206164647265737320696E76616C696400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x223D PUSH1 0x19 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x4C6F636B6564534F56206164647265737320696E76616C696400000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2276 PUSH1 0x17 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH32 0x7374616B696E67206164647265737320696E76616C6964000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22AF PUSH1 0xF DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH15 0x1D1C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22DA PUSH1 0x13 DUP4 PUSH2 0x2605 JUMP JUMPDEST PUSH19 0x14D3D5881859191C995CDCC81A5B9D985B1A59 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x230D DUP5 DUP3 PUSH2 0x2333 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2320 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2333 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4E0 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x1EE7 DUP2 PUSH2 0x262A JUMP JUMPDEST PUSH2 0x1EE7 PUSH2 0x2348 DUP3 PUSH2 0x262A JUMP JUMPDEST PUSH2 0x262A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2359 DUP3 DUP9 PUSH2 0x1EED JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x2369 DUP3 DUP8 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x2379 DUP3 DUP7 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x2389 DUP3 DUP6 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x2399 DUP3 DUP5 PUSH2 0x233C JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x23C2 DUP3 DUP11 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x23CF PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x23DC PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x23E9 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x23F6 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x2403 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x2410 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x1EDE JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x242A DUP3 DUP6 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x2437 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2333 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x244C DUP3 DUP9 PUSH2 0x1EDE JUMP JUMPDEST PUSH2 0x2459 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x2466 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x2473 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x2480 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2333 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2437 DUP2 DUP5 PUSH2 0x1EFE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x1F57 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x1F60 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x1F69 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x1FA2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x1FDB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x205C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2086 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x20BF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x20F8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2148 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2170 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x21BE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x21F7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2230 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x22A2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10B6 DUP2 PUSH2 0x22CD JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x10B6 DUP3 DUP5 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x242A DUP3 DUP6 PUSH2 0x2333 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x25E1 DUP3 DUP7 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x25EE PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2333 JUMP JUMPDEST PUSH2 0x483 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1EDE JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH2 0x261E JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH2 0x260E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH1 0x0 PUSH2 0x10B6 DUP3 PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x2653 DUP2 PUSH2 0x260E JUMP JUMPDEST DUP2 EQ PUSH2 0x643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2653 DUP2 PUSH2 0x2619 JUMP JUMPDEST PUSH2 0x2653 DUP2 PUSH2 0x262A JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH29 0x8F2E0DE246FFEBEF083DD4557D8D44CB2B6338B0BC85081EBFC7E3B299 SLOAD 0xE5 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "117:177:119:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;117:177:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6745:357:82;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3885:200;;;;;;;;;:::i;:::-;;880:18:84;;;:::i;828:113:164:-;;;;;;;;;:::i;4405:389:82:-;;;;;;;;;:::i;1979:114::-;;;;;;;;;:::i;149:38:164:-;;;;;;;;;:::i;:::-;;;;;;;;889:969:82;;;;;;;;;:::i;943:22:84:-;;;:::i;999:30::-;;;:::i;599:107:164:-;;;;;;;;;:::i;5692:314:82:-;;;;;;;;;:::i;1447:43:84:-;;;;;;;;;:::i;:::-;;;;;;;;;;798;;;;;;;;;:::i;:::-;;;;;;;;5119:399:82;;;;;;;;;:::i;851:68:142:-;;;:::i;10621:216:82:-;;;;;;;;;:::i;:::-;;;;;;;;;1134:83:142;;;:::i;3054:426:82:-;;;;;;;;;:::i;1098:27:84:-;;;:::i;1791:41::-;;;;;;;;;:::i;7208:361:82:-;;;;;;;;;:::i;2596:302::-;;;;;;;;;:::i;6399:157::-;;;;;;;;;:::i;180:112:119:-;;;;;;;;;:::i;1622:47:84:-;;;;;;;;;:::i;:::-;;;;;;;;10176:357:82;;;;;;;;;:::i;:::-;;;;;;;;725:26:84;;;:::i;1351:98:142:-;;;;;;;;;:::i;648:37:84:-;;;:::i;6745:357:82:-;6887:7;;6924:19;6916:28;6900:44;;6948:11;6997;7010:5;7017:6;7025:9;7036:20;6980:77;;;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;6980:77:82;;;6970:88;;49:4:-1;6970:88:82;;;;6962:97;7070:13;;;:8;:13;;;;;:28;;;-1:-1:-1;;;;;7070:28:82;;-1:-1:-1;;;6745:357:82;;;;;;;:::o;3885:200::-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;;;;;;;;;4020:61:82;4038:11;4051:7;4060:6;4068:9;4079:1;4020:17;:61::i;:::-;3885:200;;;;:::o;880:18:84:-;;;-1:-1:-1;;;;;880:18:84;;:::o;828:113:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;886:14:164;;903:5;886:14;;;:6;:14;;;;;;;:22;;-1:-1:-1;;886:22:164;;;917:20;;;;;893:6;;917:20;;;;;;;;;;828:113;:::o;4405:389:82:-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;4574:15:82;4592:103;4612:11;4625:6;4633:9;4652:19;4644:28;4674:20;4592:19;:103::i;:::-;4574:121;;4719:11;-1:-1:-1;;;;;4704:86:82;;4732:7;4741:6;4749:9;4760:7;4769:20;4704:86;;;;;;;;;;;;;;;;;;;478:1:164;4405:389:82;;;;;:::o;1979:114::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;2054:35:82;2073:15;2054:18;:35::i;:::-;1979:114;:::o;149:38:164:-;;;;;;;;;;;;;;;:::o;889:969:82:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1333:13:141;;;;;;;;:30;;-1:-1:-1;1351:12:141;;;;1350:13;1333:30;1325:89;;;;-1:-1:-1;;;1325:89:141;;;;;;;;;1419:19;1442:13;;;;;;1441:14;1459:74;;;;1484:13;:20;;-1:-1:-1;;;;1484:20:141;;;;;1509:19;1500:4;1509:19;;;1459:74;-1:-1:-1;;;;;1134:18:82;;1126:50;;;;-1:-1:-1;;;1126:50:82;;;;;;;;;-1:-1:-1;;;;;1188:22:82;;1180:58;;;;-1:-1:-1;;;1180:58:82;;;;;;;;;-1:-1:-1;;;;;1250:30:82;;1242:74;;;;-1:-1:-1;;;1242:74:82;;;;;;;;;-1:-1:-1;;;;;1328:27:82;;1320:68;;;;-1:-1:-1;;;1320:68:82;;;;;;;;;-1:-1:-1;;;;;1400:24:82;;1392:62;;;;-1:-1:-1;;;1392:62:82;;;;;;;;;1459:35;1478:15;1459:18;:35::i;:::-;1498:3;:10;;-1:-1:-1;;;;;;1498:10:82;;;-1:-1:-1;;;;;1498:10:82;;;;;;;;;;1512:7;:18;;;;;;;;;;1534:15;:34;;;;;;;;;;1572:12;:28;;;;;;;;;;1604:9;:33;;;;;;;;;;;;;;-1:-1:-1;1641:214:82;1661:29;;;1641:214;;;1743:1;1710:18;;1729:1;1710:21;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1710:35:82;;;1702:80;;;;-1:-1:-1;;;1702:80:82;;;;;;;;;1787:17;1827:18;;1846:1;1827:21;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;1787:63:82;;;;;;;;;;-1:-1:-1;;;;;;1787:63:82;-1:-1:-1;;;;;1787:63:82;;;;;;;;;;1692:3;1641:214;;;;1547:14:141;1543:51;;;1584:5;1568:21;;-1:-1:-1;;1568:21:141;;;1543:51;1058:1:142;889:969:82;;;;;;;;:::o;943:22:84:-;;;-1:-1:-1;;;;;943:22:84;;:::o;999:30::-;;;-1:-1:-1;;;;;999:30:84;;:::o;599:107:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;654:14:164;;;;;;671:4;654:14;;;;;;;;;:21;;-1:-1:-1;;654:21:164;;;;;;684:18;;;;;661:6;;684:18;;5692:314:82;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;-1:-1:-1;;;;;5784:22:82;;5776:58;;;;-1:-1:-1;;;5776:58:82;;;;;;;;;5856:1;5846:7;:11;5838:38;;;;-1:-1:-1;;;5838:38:82;;;;;;;;;5888:3;;5881:38;;-1:-1:-1;;;5881:38:82;;-1:-1:-1;;;;;5888:3:82;;;;5881:19;;:38;;5901:8;;5911:7;;5881:38;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5881:38:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5881:38:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5881:38:82;;;;;;;;;-1:-1:-1;5923:39:82;;-1:-1:-1;;;5923:39:82;;-1:-1:-1;;;;;5923:30:82;;;;;:39;;5954:7;;5923:39;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5923:39:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5923:39:82;;;;5984:8;-1:-1:-1;;;;;5971:31:82;;5994:7;5971:31;;;;;;;;;;;;;;;5692:314;;:::o;1447:43:84:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1447:43:84;;:::o;798:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;798:43:84;;-1:-1:-1;798:43:84;:::o;5119:399:82:-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;5290:15:82;5308:107;5328:11;5341:6;5349:9;5290:15;5360:32;;5308:107;5290:125;;5443:11;-1:-1:-1;;;;;5424:90:82;;5456:7;5465:6;5473:9;5484:7;5493:20;5424:90;;;;;;;;;;;851:68:142;889:7;909:6;;;;-1:-1:-1;;;;;909:6:142;;851:68::o;10621:216:82:-;10696:13;10711:16;10733:20;10769:15;10733:52;;10797:7;-1:-1:-1;;;;;10797:13:82;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10797:15:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10797:15:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10797:15:82;;;;;;;;;10814:7;-1:-1:-1;;;;;10814:16:82;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10814:18:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10814:18:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10814:18:82;;;;;;;;;10789:44;;;;;10621:216;;;:::o;1134:83:142:-;1174:4;1207:6;;;;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;3054:426:82:-;426:9:164;:7;:9::i;:::-;:31;;;-1:-1:-1;446:10:164;439:18;;;;:6;:18;;;;;;;;426:31;418:56;;;;-1:-1:-1;;;418:56:164;;;;;;;;;3191:9:82;3186:291;3206:23;;;3186:291;;;3276:1;3249:12;;3262:1;3249:15;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3249:29:82;;;3241:73;;;;-1:-1:-1;;;3241:73:82;;;;;;;;;3354:1;3327:21;;3349:1;3327:24;;;;;;;;;;;;;:28;3319:85;;;;-1:-1:-1;;;3319:85:82;;;;;;;;;3409:63;3430:12;;3443:1;3430:15;;;;;;;;;;;;;;;;;;;;;;3447:21;;3469:1;3447:24;;;;;;;;;;;;;3409:20;:63::i;:::-;3231:3;;3186:291;;;;3054:426;;;;:::o;1098:27:84:-;;;-1:-1:-1;;;;;1098:27:84;;:::o;1791:41::-;;;;;;;;;;;;;;;:::o;7208:361:82:-;7350:7;;;7379:32;;2596:302;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;;;2684:23:82;;2676:60;;;;-1:-1:-1;;;2676:60:82;;;;;;;;;2748:12;2740:39;;;;-1:-1:-1;;;2740:39:82;;;;;;;;;2798:3;;2791:40;;-1:-1:-1;;;2791:40:82;;-1:-1:-1;;;;;2798:3:82;;;;2791:20;;:40;;2812:9;;2823:7;;2791:40;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2791:40:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2791:40:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2791:40:82;;;;;;;;;2783:68;;;;-1:-1:-1;;;2783:68:82;;;;;;;;;2875:9;-1:-1:-1;;;;;2860:34:82;;2886:7;2860:34;;;;;;;6399:157;6461:7;6481:71;6496:11;6509:9;;;;;;;;;-1:-1:-1;;;;;6509:9:82;-1:-1:-1;;;;;6509:15:82;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6509:17:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6509:17:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6509:17:82;;;;;;;;;6528:9;;;;;;;;;-1:-1:-1;;;;;6528:9:82;-1:-1:-1;;;;;6528:18:82;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6528:20:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6528:20:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6528:20:82;;;;;;;;;6550:1;6481:14;:71::i;:::-;6474:78;6399:157;-1:-1:-1;;6399:157:82:o;180:112:119:-;-1:-1:-1;284:4:119;;180:112::o;1622:47:84:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10176:357:82:-;10243:16;10265:27;10295:10;:23;10306:11;-1:-1:-1;;;;;10295:23:82;-1:-1:-1;;;;;10295:23:82;;;;;;;;;;;;10265:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10322:14;10339:10;:17;10322:34;;10360:26;10403:10;:17;10389:32;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;10360:61:82;-1:-1:-1;10430:9:82;10425:85;10449:6;10445:1;:10;10425:85;;;10482:8;:23;10491:10;10502:1;10491:13;;;;;;;;;;;;;;;;;;;10482:23;;;;;;;;;;;;;-1:-1:-1;10482:23:82;10467:38;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10467:38:82;;;;;:12;;:9;;10477:1;;10467:12;;;;;;;;;;;;;;;:38;10457:3;;10425:85;;;-1:-1:-1;10520:9:82;10176:357;-1:-1:-1;;;;10176:357:82:o;725:26:84:-;;;-1:-1:-1;;;;;725:26:84;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;648:37:84:-;;;-1:-1:-1;;;;;648:37:84;;:::o;7916:820:82:-;8077:7;8090:15;8109:11;8158;8171:5;8178:6;8186:9;8197:20;8141:77;;;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;8141:77:82;;;8131:88;;49:4:-1;8131:88:82;;;;8123:97;8228:13;;;:8;:13;;;;;:28;;;8131:88;;-1:-1:-1;;;;;;8228:28:82;8224:470;;8281:5;8290:1;8281:10;8277:279;;;8309:14;;8338:3;;8343:7;;8384:15;;8309:104;;-1:-1:-1;;;8309:104:82;;-1:-1:-1;;;;;8309:14:82;;;;:28;;:104;;8338:3;;;;8343:7;;;;8352:11;;8365:6;;8373:9;;8384:15;;;8352:11;;8309:104;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8309:104:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8309:104:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8309:104:82;;;;;;;;;8299:114;;8277:279;;;8441:14;;;;;;;;;-1:-1:-1;;;;;8441:14:82;-1:-1:-1;;;;;8441:32:82;;8474:3;;;;;;;;;-1:-1:-1;;;;;8474:3:82;8479:7;;;;;;;;;-1:-1:-1;;;;;8479:7:82;8488:11;8501:6;8509:9;8520:15;;;;;;;;;-1:-1:-1;;;;;8520:15:82;8537:12;;;;;;;;;-1:-1:-1;;;;;8537:12:82;8441:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8441:109:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8441:109:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8441:109:82;;;;;;;;;8431:119;;8277:279;8576:45;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8576:45:82;;;;;;;;;-1:-1:-1;8560:13:82;;;:8;:13;;;;;:61;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8560:61:82;;;;;;;;;;;8626:23;;;;;:10;:23;;;;;27:10:-1;;23:18;;;45:23;;8626:33:82;;;;;;;;;;8664:18;;:9;:18;;;;;;;:25;;-1:-1:-1;;8664:25:82;;;;;;8224:470;8704:13;;;;:8;:13;;;;;:28;;;-1:-1:-1;;;;;8704:28:82;;7916:820;-1:-1:-1;;;;;;;7916:820:82:o;2237:195::-;-1:-1:-1;;;;;2311:29:82;;2303:72;;;;-1:-1:-1;;;2303:72:82;;;;;;;;;2379:14;:49;;-1:-1:-1;;;;;;2379:49:82;-1:-1:-1;;;;;2379:49:82;;;;;;;;;;2237:195::o;780:87:137:-;853:10;780:87;:::o;8856:1241:82:-;9040:17;:24;8972:1;;8950:19;;;;;9068:1026;9092:6;9088:1;:10;9068:1026;;;9110:22;9135:17;9153:1;9135:20;;;;;;;;;;;;;;;;;;:44;;-1:-1:-1;;;9135:44:82;;-1:-1:-1;;;;;9135:20:82;;;;:31;;:44;;9167:11;;9135:44;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9135:44:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9135:44:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9135:44:82;;;;;;;;;9110:69;-1:-1:-1;;;;;;9188:28:82;;;9184:398;;9224:20;9260:14;9224:51;;9328:11;9341;9354:7;-1:-1:-1;;;;;9354:13:82;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9354:15:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9354:15:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9354:15:82;;;;;;;;;9371:7;-1:-1:-1;;;;;9371:16:82;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9371:18:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9371:18:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9371:18:82;;;;;;;;;9391:20;9311:101;;;;;;;;;;;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;9311:101:82;;;9301:112;;49:4:-1;9301:112:82;;;;9441:58;;;;;;;;;;;;;;-1:-1:-1;;;;;9441:58:82;;;;;;;;;-1:-1:-1;9425:13:82;;;:8;:13;;;;;:74;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9425:74:82;;;;;;;;;;;9505:23;;;;;:10;:23;;;;;27:10:-1;;23:18;;;45:23;;9505:33:82;;;;;;;;;;9544:25;;:9;:25;;;;;;:32;;-1:-1:-1;;9544:32:82;;;;;;;9301:112;-1:-1:-1;;9184:398:82;9586:26;9615:17;9633:1;9615:20;;;;;;;;;;;;;;;;;;:48;;-1:-1:-1;;;9615:48:82;;-1:-1:-1;;;;;9615:20:82;;;;:35;;:48;;9651:11;;9615:48;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9615:48:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9615:48:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9615:48:82;;;;;;;;;9586:77;-1:-1:-1;;;;;;9672:32:82;;;9668:422;;9712:20;9748:18;9712:55;;9820:11;9833:15;9850:7;-1:-1:-1;;;;;9850:13:82;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9850:15:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9850:15:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9850:15:82;;;;;;;;;9867:7;-1:-1:-1;;;;;9867:16:82;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9867:18:82;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9867:18:82;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9867:18:82;;;;;;;;;9887:20;9803:105;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9803:105:82;;;9793:116;;;;;;9779:136;;9773:142;;9937:66;;;;;;;;9945:15;9937:66;;;;9962:20;9937:66;;;;9984:18;-1:-1:-1;;;;;9937:66:82;;;;9921:8;:13;9930:3;9921:13;;;;;;;;;;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9921:82:82;;;;;-1:-1:-1;;;;;9921:82:82;;;;;;;;;10009:10;:23;10020:11;-1:-1:-1;;;;;10009:23:82;-1:-1:-1;;;;;10009:23:82;;;;;;;;;;;;10038:3;10009:33;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;10009:33:82;;;;;;;;;;;;;;;;;;;;;;10080:4;10048:9;:29;10058:18;-1:-1:-1;;;;;10048:29:82;-1:-1:-1;;;;;10048:29:82;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;9668:422;;-1:-1:-1;;9100:3:82;;9068:1026;;;;8856:1241;;;;;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;1721:17:142;;;;;-1:-1:-1;;;;;;1721:17:142;;;;;;;;;1538:204::o;117:177:119:-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;117:177:119;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;301:352;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;-1:-1;469:20;;509:18;498:30;;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;586:2;391:262;;;;;;1039:128;1114:13;;1132:30;1114:13;1132:30;;1174:130;1241:20;;1266:33;1241:20;1266:33;;1311:134;1389:13;;1407:33;1389:13;1407:33;;1452:241;;1556:2;1544:9;1535:7;1531:23;1527:32;1524:2;;;1572:1;1569;1562:12;1524:2;1607:1;1624:53;1669:7;1649:9;1624:53;;1700:263;;1815:2;1803:9;1794:7;1790:23;1786:32;1783:2;;;1831:1;1828;1821:12;1783:2;1866:1;1883:64;1939:7;1919:9;1883:64;;1970:1151;;;;;;;;;2211:3;2199:9;2190:7;2186:23;2182:33;2179:2;;;2228:1;2225;2218:12;2179:2;2263:1;2280:53;2325:7;2305:9;2280:53;;;2270:63;;2242:97;2370:2;2388:53;2433:7;2424:6;2413:9;2409:22;2388:53;;;2378:63;;2349:98;2478:2;2496:53;2541:7;2532:6;2521:9;2517:22;2496:53;;;2486:63;;2457:98;2586:2;2604:53;2649:7;2640:6;2629:9;2625:22;2604:53;;;2594:63;;2565:98;2694:3;2713:53;2758:7;2749:6;2738:9;2734:22;2713:53;;;2703:63;;2673:99;2803:3;2822:53;2867:7;2858:6;2847:9;2843:22;2822:53;;;2812:63;;2782:99;2940:3;2929:9;2925:19;2912:33;2965:18;2957:6;2954:30;2951:2;;;2997:1;2994;2987:12;2951:2;3025:80;3097:7;3088:6;3077:9;3073:22;3025:80;;;3015:90;;;;2891:220;2173:948;;;;;;;;;;;;3128:366;;;3249:2;3237:9;3228:7;3224:23;3220:32;3217:2;;;3265:1;3262;3255:12;3217:2;3300:1;3317:53;3362:7;3342:9;3317:53;;;3307:63;;3279:97;3407:2;3425:53;3470:7;3461:6;3450:9;3446:22;3425:53;;;3415:63;;3386:98;3211:283;;;;;;3501:617;;;;;3656:3;3644:9;3635:7;3631:23;3627:33;3624:2;;;3673:1;3670;3663:12;3624:2;3708:1;3725:53;3770:7;3750:9;3725:53;;;3715:63;;3687:97;3815:2;3833:53;3878:7;3869:6;3858:9;3854:22;3833:53;;;3823:63;;3794:98;3923:2;3941:53;3986:7;3977:6;3966:9;3962:22;3941:53;;;3931:63;;3902:98;4031:2;4049:53;4094:7;4085:6;4074:9;4070:22;4049:53;;;4039:63;;4010:98;3618:500;;;;;;;;4125:743;;;;;;4297:3;4285:9;4276:7;4272:23;4268:33;4265:2;;;4314:1;4311;4304:12;4265:2;4349:1;4366:53;4411:7;4391:9;4366:53;;;4356:63;;4328:97;4456:2;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;;;4464:63;;4435:98;4564:2;4582:53;4627:7;4618:6;4607:9;4603:22;4582:53;;;4572:63;;4543:98;4672:2;4690:53;4735:7;4726:6;4715:9;4711:22;4690:53;;;4680:63;;4651:98;4780:3;4799:53;4844:7;4835:6;4824:9;4820:22;4799:53;;;4789:63;;4759:99;4259:609;;;;;;;;;4875:678;;;;;5066:2;5054:9;5045:7;5041:23;5037:32;5034:2;;;5082:1;5079;5072:12;5034:2;5117:31;;5168:18;5157:30;;5154:2;;;5200:1;5197;5190:12;5154:2;5228:80;5300:7;5291:6;5280:9;5276:22;5228:80;;;5218:90;;;;5096:218;5373:2;5362:9;5358:18;5345:32;5397:18;5389:6;5386:30;5383:2;;;5429:1;5426;5419:12;5383:2;5457:80;5529:7;5520:6;5509:9;5505:22;5457:80;;;5028:525;;;;-1:-1;5447:90;-1:-1;;;;5028:525;5560:257;;5672:2;5660:9;5651:7;5647:23;5643:32;5640:2;;;5688:1;5685;5678:12;5640:2;5723:1;5740:61;5793:7;5773:9;5740:61;;5824:241;;5928:2;5916:9;5907:7;5903:23;5899:32;5896:2;;;5944:1;5941;5934:12;5896:2;5979:1;5996:53;6041:7;6021:9;5996:53;;6072:263;;6187:2;6175:9;6166:7;6162:23;6158:32;6155:2;;;6203:1;6200;6193:12;6155:2;6238:1;6255:64;6311:7;6291:9;6255:64;;6343:265;;6474:94;6564:3;6556:6;6474:94;;;-1:-1;;6597:4;6588:14;;6467:141;6616:103;6689:24;6707:5;6689:24;;;6684:3;6677:37;6671:48;;;6846:152;6947:45;6967:24;6985:5;6967:24;;;6947:45;;7096:866;;7285:76;7355:5;7285:76;;;7374:108;7475:6;7470:3;7374:108;;;7367:115;;7503:78;7575:5;7503:78;;;7601:7;7629:1;7614:326;7639:6;7636:1;7633:13;7614:326;;;7706:6;7700:13;7727:107;7830:3;7815:13;7727:107;;;7720:114;;7851:82;7926:6;7851:82;;;7841:92;-1:-1;;7661:1;7654:9;7614:326;;;-1:-1;7953:3;;7264:698;-1:-1;;;;;7264:698;7970:104;8047:21;8062:5;8047:21;;8081:176;8189:62;8245:5;8189:62;;8621:332;;8781:67;8845:2;8840:3;8781:67;;;8881:34;8861:55;;8944:2;8935:12;;8767:186;-1:-1;;8767:186;8962:331;;9122:67;9186:2;9181:3;9122:67;;;9222:33;9202:54;;9284:2;9275:12;;9108:185;-1:-1;;9108:185;9302:375;;9462:67;9526:2;9521:3;9462:67;;;9562:34;9542:55;;-1:-1;;;9626:2;9617:12;;9610:30;9668:2;9659:12;;9448:229;-1:-1;;9448:229;9686:330;;9846:67;9910:2;9905:3;9846:67;;;9946:32;9926:53;;10007:2;9998:12;;9832:184;-1:-1;;9832:184;10025:314;;10185:67;10249:2;10244:3;10185:67;;;-1:-1;;;10265:37;;10330:2;10321:12;;10171:168;-1:-1;;10171:168;10348:323;;10508:67;10572:2;10567:3;10508:67;;;10608:25;10588:46;;10662:2;10653:12;;10494:177;-1:-1;;10494:177;10680:328;;10840:67;10904:2;10899:3;10840:67;;;10940:30;10920:51;;10999:2;10990:12;;10826:182;-1:-1;;10826:182;11017:383;;11177:67;11241:2;11236:3;11177:67;;;11277:34;11257:55;;-1:-1;;;11341:2;11332:12;;11325:38;11391:2;11382:12;;11163:237;-1:-1;;11163:237;11409:312;;11569:67;11633:2;11628:3;11569:67;;;-1:-1;;;11649:35;;11712:2;11703:12;;11555:166;-1:-1;;11555:166;11730:381;;11890:67;11954:2;11949:3;11890:67;;;11990:34;11970:55;;-1:-1;;;12054:2;12045:12;;12038:36;12102:2;12093:12;;11876:235;-1:-1;;11876:235;12120:324;;12280:67;12344:2;12339:3;12280:67;;;12380:26;12360:47;;12435:2;12426:12;;12266:178;-1:-1;;12266:178;12453:331;;12613:67;12677:2;12672:3;12613:67;;;12713:33;12693:54;;12775:2;12766:12;;12599:185;-1:-1;;12599:185;12793:325;;12953:67;13017:2;13012:3;12953:67;;;13053:27;13033:48;;13109:2;13100:12;;12939:179;-1:-1;;12939:179;13127:323;;13287:67;13351:2;13346:3;13287:67;;;13387:25;13367:46;;13441:2;13432:12;;13273:177;-1:-1;;13273:177;13459:315;;13619:67;13683:2;13678:3;13619:67;;;-1:-1;;;13699:38;;13765:2;13756:12;;13605:169;-1:-1;;13605:169;13783:319;;13943:67;14007:2;14002:3;13943:67;;;-1:-1;;;14023:42;;14093:2;14084:12;;13929:173;-1:-1;;13929:173;14195:650;14399:23;;14326:4;14317:14;;;14428:63;14321:3;14399:23;14428:63;;;14346:151;14585:4;14578:5;14574:16;14568:23;14597:63;14654:4;14649:3;14645:14;14631:12;14597:63;;;14507:159;14749:4;14742:5;14738:16;14732:23;14761:63;14818:4;14813:3;14809:14;14795:12;14761:63;;14852:103;14925:24;14943:5;14925:24;;15082:152;15183:45;15203:24;15221:5;15203:24;;;15183:45;;15241:800;;15472:75;15543:3;15534:6;15472:75;;;15569:2;15564:3;15560:12;15553:19;;15583:75;15654:3;15645:6;15583:75;;;15680:2;15675:3;15671:12;15664:19;;15694:75;15765:3;15756:6;15694:75;;;15791:2;15786:3;15782:12;15775:19;;15805:75;15876:3;15867:6;15805:75;;;15902:2;15897:3;15893:12;15886:19;;15916:75;15987:3;15978:6;15916:75;;;-1:-1;16013:2;16004:12;;15460:581;-1:-1;;;;;15460:581;16048:213;16166:2;16151:18;;16180:71;16155:9;16224:6;16180:71;;16268:883;16554:3;16539:19;;16569:71;16543:9;16613:6;16569:71;;;16651:72;16719:2;16708:9;16704:18;16695:6;16651:72;;;16734;16802:2;16791:9;16787:18;16778:6;16734:72;;;16817;16885:2;16874:9;16870:18;16861:6;16817:72;;;16900:73;16968:3;16957:9;16953:19;16944:6;16900:73;;;16984;17052:3;17041:9;17037:19;17028:6;16984:73;;;17068;17136:3;17125:9;17121:19;17112:6;17068:73;;;16525:626;;;;;;;;;;;17158:324;17304:2;17289:18;;17318:71;17293:9;17362:6;17318:71;;;17400:72;17468:2;17457:9;17453:18;17444:6;17400:72;;;17275:207;;;;;;17489:659;17719:3;17704:19;;17734:71;17708:9;17778:6;17734:71;;;17816:72;17884:2;17873:9;17869:18;17860:6;17816:72;;;17899;17967:2;17956:9;17952:18;17943:6;17899:72;;;17982;18050:2;18039:9;18035:18;18026:6;17982:72;;;18065:73;18133:3;18122:9;18118:19;18109:6;18065:73;;;17690:458;;;;;;;;;18155:449;18367:2;18381:47;;;18352:18;;18442:152;18352:18;18580:6;18442:152;;18611:201;18723:2;18708:18;;18737:65;18712:9;18775:6;18737:65;;18819:263;18962:2;18947:18;;18976:96;18951:9;19045:6;18976:96;;19619:407;19810:2;19824:47;;;19795:18;;19885:131;19795:18;19885:131;;20033:407;20224:2;20238:47;;;20209:18;;20299:131;20209:18;20299:131;;20447:407;20638:2;20652:47;;;20623:18;;20713:131;20623:18;20713:131;;20861:407;21052:2;21066:47;;;21037:18;;21127:131;21037:18;21127:131;;21275:407;21466:2;21480:47;;;21451:18;;21541:131;21451:18;21541:131;;21689:407;21880:2;21894:47;;;21865:18;;21955:131;21865:18;21955:131;;22103:407;22294:2;22308:47;;;22279:18;;22369:131;22279:18;22369:131;;22517:407;22708:2;22722:47;;;22693:18;;22783:131;22693:18;22783:131;;22931:407;23122:2;23136:47;;;23107:18;;23197:131;23107:18;23197:131;;23345:407;23536:2;23550:47;;;23521:18;;23611:131;23521:18;23611:131;;23759:407;23950:2;23964:47;;;23935:18;;24025:131;23935:18;24025:131;;24173:407;24364:2;24378:47;;;24349:18;;24439:131;24349:18;24439:131;;24587:407;24778:2;24792:47;;;24763:18;;24853:131;24763:18;24853:131;;25001:407;25192:2;25206:47;;;25177:18;;25267:131;25177:18;25267:131;;25415:407;25606:2;25620:47;;;25591:18;;25681:131;25591:18;25681:131;;25829:407;26020:2;26034:47;;;26005:18;;26095:131;26005:18;26095:131;;26243:213;26361:2;26346:18;;26375:71;26350:9;26419:6;26375:71;;26463:324;26609:2;26594:18;;26623:71;26598:9;26667:6;26623:71;;26794:435;26968:2;26953:18;;26982:71;26957:9;27026:6;26982:71;;;27064:72;27132:2;27121:9;27117:18;27108:6;27064:72;;;27147;27215:2;27204:9;27200:18;27191:6;27147:72;;27236:173;27382:4;27373:14;;27330:79;27416:159;27541:12;;27512:63;27720:200;27860:19;;;27909:4;27900:14;;27853:67;28100:91;;28162:24;28180:5;28162:24;;28198:85;28264:13;28257:21;;28240:43;28290:121;-1:-1;;;;;28352:54;;28335:76;28418:72;28480:5;28463:27;28497:171;;28601:62;28657:5;28601:62;;29436:95;;29500:26;29520:5;29538:89;29602:20;29616:5;29789:2;29785:14;;29757:52;29817:117;29886:24;29904:5;29886:24;;;29879:5;29876:35;29866:2;;29925:1;29922;29915:12;29941:111;30007:21;30022:5;30007:21;;30059:117;30128:24;30146:5;30128:24;"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "addAdmin(address)": "70480275",
              "addDeployedVestings(address[],uint256[])": "b810c648",
              "admins(address)": "429b62e5",
              "createTeamVesting(address,uint256,uint256,uint256,uint256)": "862e229d",
              "createVesting(address,uint256,uint256,uint256)": "0665a06f",
              "createVestingAddr(address,uint256,uint256,uint256,uint256)": "1f509326",
              "feeSharingProxy()": "6a26b57f",
              "getTeamVesting(address,uint256,uint256,uint256)": "c36519d1",
              "getVesting(address)": "cc49ede7",
              "getVestingAddr(address,uint256,uint256,uint256)": "02df0476",
              "getVestingDetails(address)": "8dedf009",
              "getVestingsOf(address)": "efb95733",
              "initialize(address,address,address,address,address,address,address[])": "42a82b4f",
              "isOwner()": "8f32d59b",
              "isVesting(address)": "c0e09852",
              "isVestingAdress(address)": "dbb049d1",
              "lockedSOV()": "f2f46b3b",
              "owner()": "8da5cb5b",
              "removeAdmin(address)": "1785f53c",
              "setVestingFactory(address)": "377220fd",
              "stakeTokens(address,uint256)": "79a83f5a",
              "staking()": "4cf088d9",
              "transferOwnership(address)": "f2fde38b",
              "transferSOV(address,uint256)": "c680c0b7",
              "vestingFactory()": "f60826ee",
              "vestingOwner()": "bd7b5908",
              "vestingRegistries(uint256)": "842a49d5",
              "vestings(uint256)": "821bee73",
              "vestingsOf(address,uint256)": "dfb9366d"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "addDeployedVestings(address[],uint256[])": {
                "notice": "adds vestings that were deployed in previous vesting registries"
              },
              "createTeamVesting(address,uint256,uint256,uint256,uint256)": {
                "notice": "creates Team Vesting contract"
              },
              "createVesting(address,uint256,uint256,uint256)": {
                "notice": "creates Vesting contract"
              },
              "createVestingAddr(address,uint256,uint256,uint256,uint256)": {
                "notice": "creates Vesting contract"
              },
              "getTeamVesting(address,uint256,uint256,uint256)": {
                "notice": "returns team vesting contract address for the given token owner, cliff, duration"
              },
              "getVesting(address)": {
                "notice": "returns vesting contract address for the given token owner"
              },
              "getVestingAddr(address,uint256,uint256,uint256)": {
                "notice": "public function that returns vesting contract address for the given token owner, cliff, duration"
              },
              "getVestingDetails(address)": {
                "notice": "returns cliff and duration for Vesting & TeamVesting contracts"
              },
              "getVestingsOf(address)": {
                "notice": "returns all vesting details for the given token owner"
              },
              "initialize(address,address,address,address,address,address,address[])": {
                "notice": "Replace constructor with initialize function for Upgradable Contracts This function will be called only once by the owner"
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              },
              "setVestingFactory(address)": {
                "notice": "sets vesting factory address"
              },
              "stakeTokens(address,uint256)": {
                "notice": "stakes tokens according to the vesting schedule"
              },
              "transferSOV(address,uint256)": {
                "notice": "transfers SOV tokens to given address"
              }
            }
          }
        }
      },
      "contracts/mockup/lockedSOVFailedMockup.sol": {
        "LockedSOVFailedMockup": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_SOV",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "_admins",
                  "type": "address[]"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_removedAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "SOV",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newAdmin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_userAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_sovAmount",
                  "type": "uint256"
                }
              ],
              "name": "depositSOV",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_addr",
                  "type": "address"
                }
              ],
              "name": "getLockedBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_balance",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_adminToRemove",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Franklin Richards - powerhousefrank@protonmail.com",
            "details": "This is not a complete interface of the Locked SOV Contract.",
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_newAdmin": "The address of the new admin."
                }
              },
              "constructor": {
                "params": {
                  "_SOV": "The SOV token address.",
                  "_admins": "The list of admins to be added."
                }
              },
              "depositSOV(address,uint256)": {
                "params": {
                  "_sovAmount": "The amount of SOV to be added to the locked balance.",
                  "_userAddress": "The user whose locked balance has to be updated with _sovAmount."
                }
              },
              "getLockedBalance(address)": {
                "params": {
                  "_addr": "The address of the user to check the locked balance."
                },
                "return": "_balance The locked balance of the address `_addr`."
              },
              "removeAdmin(address)": {
                "params": {
                  "_adminToRemove": "The address of the admin which should be removed."
                }
              }
            },
            "title": "An interface for the Locked SOV Contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516105fa3803806105fa8339818101604052604081101561003357600080fd5b81516020830180516040519294929383019291908464010000000082111561005a57600080fd5b90830190602082018581111561006f57600080fd5b825186602082028301116401000000008211171561008c57600080fd5b82525081516020918201928201910280838360005b838110156100b95781810151838201526020016100a1565b5050505091909101604052505050506001600160a01b038216610123576040805162461bcd60e51b815260206004820152601460248201527f496e76616c696420534f5620416464726573732e000000000000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0384161781555b81518110156101945760016002600084848151811061015a57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010161013f565b505050610454806101a66000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806308dcb3601461005c5780631785f53c1461008057806370480275146100a8578063c4086893146100ce578063f33bf9a114610106575b600080fd5b610064610132565b604080516001600160a01b039092168252519081900360200190f35b6100a66004803603602081101561009657600080fd5b50356001600160a01b0316610141565b005b6100a6600480360360208110156100be57600080fd5b50356001600160a01b0316610258565b6100f4600480360360208110156100e457600080fd5b50356001600160a01b03166103c0565b60408051918252519081900360200190f35b6100a66004803603604081101561011c57600080fd5b506001600160a01b0381351690602001356103db565b6000546001600160a01b031681565b3360009081526002602052604090205460ff166101a1576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205460ff1661020e576040805162461bcd60e51b815260206004820152601760248201527f41646472657373206973206e6f7420616e2061646d696e000000000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260026020526040808220805460ff191690555133917fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce91a350565b3360009081526002602052604090205460ff166102b8576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b038116610305576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205460ff1615610373576040805162461bcd60e51b815260206004820152601860248201527f4164647265737320697320616c72656164792061646d696e0000000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260026020526040808220805460ff191660011790555133917fbf3f493c772c8c283fd124432c2d0f539ab343faa04258fe88e52912d36b102b91a350565b6001600160a01b031660009081526001602052604090205490565b6040805162461bcd60e51b8152602060048201526014602482015273466f722074657374696e6720707572706f73657360601b604482015290519081900360640190fdfea265627a7a7231582027a88357b37a9971b8772990173ca44e4cec3ad664f0b841bdbb270be0d2d8ee64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x5FA CODESIZE SUB DUP1 PUSH2 0x5FA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 MSTORE POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x123 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420534F5620416464726573732E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR DUP2 SSTORE JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x194 JUMPI PUSH1 0x1 PUSH1 0x2 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x15A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0x13F JUMP JUMPDEST POP POP POP PUSH2 0x454 DUP1 PUSH2 0x1A6 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0xC4086893 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0xF33BF9A1 EQ PUSH2 0x106 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x132 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x141 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x258 JUMP JUMPDEST PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x20E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420616E2061646D696E000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP2 PUSH32 0xDB9D5D31320DAF5BC7181D565B6DA4D12E30F0F4D5AA324A992426C14A1D19CE SWAP2 LOG3 POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x305 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x496E76616C69642041646472657373 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x373 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320697320616C72656164792061646D696E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD CALLER SWAP2 PUSH32 0xBF3F493C772C8C283FD124432C2D0F539AB343FAA04258FE88E52912D36B102B SWAP2 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x466F722074657374696E6720707572706F736573 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x27 0xA8 DUP4 JUMPI 0xB3 PUSH27 0x9971B8772990173CA44E4CEC3AD664F0B841BDBB270BE0D2D8EE64 PUSH20 0x6F6C634300051100320000000000000000000000 ",
              "sourceMap": "295:2971:120:-;;;1419:240;8:9:-1;5:2;;;30:1;27;20:12;5:2;1419:240:120;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1419:240:120;;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;1419:240:120;;421:4:-1;412:14;;;;1419:240:120;;;;;412:14:-1;1419:240:120;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;-1:-1;;;;1419:240:120;;;;;;-1:-1:-1;;;;;;;;;1490:18:120;;1482:51;;;;;-1:-1:-1;;;1482:51:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;1537:3;:18;;-1:-1:-1;;;;;;1537:18:120;-1:-1:-1;;;;;1537:18:120;;;;;1559:97;1591:7;:14;1583:5;:22;1559:97;;;1647:4;1621:7;:23;1629:7;1637:5;1629:14;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1621:23:120;;;;;;;;;;;-1:-1:-1;1621:23:120;:30;;-1:-1:-1;;1621:30:120;;;;;;;;;;-1:-1:-1;1607:7:120;1559:97;;;;1419:240;;295:2971;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100575760003560e01c806308dcb3601461005c5780631785f53c1461008057806370480275146100a8578063c4086893146100ce578063f33bf9a114610106575b600080fd5b610064610132565b604080516001600160a01b039092168252519081900360200190f35b6100a66004803603602081101561009657600080fd5b50356001600160a01b0316610141565b005b6100a6600480360360208110156100be57600080fd5b50356001600160a01b0316610258565b6100f4600480360360208110156100e457600080fd5b50356001600160a01b03166103c0565b60408051918252519081900360200190f35b6100a66004803603604081101561011c57600080fd5b506001600160a01b0381351690602001356103db565b6000546001600160a01b031681565b3360009081526002602052604090205460ff166101a1576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205460ff1661020e576040805162461bcd60e51b815260206004820152601760248201527f41646472657373206973206e6f7420616e2061646d696e000000000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260026020526040808220805460ff191690555133917fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce91a350565b3360009081526002602052604090205460ff166102b8576040805162461bcd60e51b815260206004820152601960248201527827b7363c9030b236b4b71031b0b71031b0b636103a3434b99760391b604482015290519081900360640190fd5b6001600160a01b038116610305576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205460ff1615610373576040805162461bcd60e51b815260206004820152601860248201527f4164647265737320697320616c72656164792061646d696e0000000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260026020526040808220805460ff191660011790555133917fbf3f493c772c8c283fd124432c2d0f539ab343faa04258fe88e52912d36b102b91a350565b6001600160a01b031660009081526001602052604090205490565b6040805162461bcd60e51b8152602060048201526014602482015273466f722074657374696e6720707572706f73657360601b604482015290519081900360640190fdfea265627a7a7231582027a88357b37a9971b8772990173ca44e4cec3ad664f0b841bdbb270be0d2d8ee64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DCB360 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0xC4086893 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0xF33BF9A1 EQ PUSH2 0x106 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x132 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x141 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x258 JUMP JUMPDEST PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x20E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206973206E6F7420616E2061646D696E000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP2 PUSH32 0xDB9D5D31320DAF5BC7181D565B6DA4D12E30F0F4D5AA324A992426C14A1D19CE SWAP2 LOG3 POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x27B7363C9030B236B4B71031B0B71031B0B636103A3434B997 PUSH1 0x39 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x305 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x496E76616C69642041646472657373 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x373 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320697320616C72656164792061646D696E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD CALLER SWAP2 PUSH32 0xBF3F493C772C8C283FD124432C2D0F539AB343FAA04258FE88E52912D36B102B SWAP2 LOG3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x466F722074657374696E6720707572706F736573 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x27 0xA8 DUP4 JUMPI 0xB3 PUSH27 0x9971B8772990173CA44E4CEC3AD664F0B841BDBB270BE0D2D8EE64 PUSH20 0x6F6C634300051100320000000000000000000000 ",
              "sourceMap": "295:2971:120:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;295:2971:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;412:17;;;:::i;:::-;;;;-1:-1:-1;;;;;412:17:120;;;;;;;;;;;;;;2147:214;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2147:214:120;-1:-1:-1;;;;;2147:214:120;;:::i;:::-;;1768:245;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1768:245:120;-1:-1:-1;;;;;1768:245:120;;:::i;3148:116::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3148:116:120;-1:-1:-1;;;;;3148:116:120;;:::i;:::-;;;;;;;;;;;;;;;;2592:347;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2592:347:120;;;;;;;;:::i;412:17::-;;;-1:-1:-1;;;;;412:17:120;;:::o;2147:214::-;1205:10;1197:19;;;;:7;:19;;;;;;;;1189:57;;;;;-1:-1:-1;;;1189:57:120;;;;;;;;;;;;-1:-1:-1;;;1189:57:120;;;;;;;;;;;;;;;-1:-1:-1;;;;;2221:23:120;;;;;;:7;:23;;;;;;;;2213:59;;;;;-1:-1:-1;;;2213:59:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2276:23:120;;2302:5;2276:23;;;:7;:23;;;;;;:31;;-1:-1:-1;;2276:31:120;;;2317:40;2330:10;;2317:40;;;2147:214;:::o;1768:245::-;1205:10;1197:19;;;;:7;:19;;;;;;;;1189:57;;;;;-1:-1:-1;;;1189:57:120;;;;;;;;;;;;-1:-1:-1;;;1189:57:120;;;;;;;;;;;;;;;-1:-1:-1;;;;;1834:23:120;;1826:51;;;;;-1:-1:-1;;;1826:51:120;;;;;;;;;;;;-1:-1:-1;;;1826:51:120;;;;;;;;;;;;;;;-1:-1:-1;;;;;1890:18:120;;;;;;:7;:18;;;;;;;;1889:19;1881:56;;;;;-1:-1:-1;;;1881:56:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1941:18:120;;;;;;:7;:18;;;;;;:25;;-1:-1:-1;;1941:25:120;1962:4;1941:25;;;1976:33;1987:10;;1976:33;;;1768:245;:::o;3148:116::-;-1:-1:-1;;;;;3239:21:120;3210:16;3239:21;;;:14;:21;;;;;;;3148:116::o;2592:347::-;2667:30;;;-1:-1:-1;;;2667:30:120;;;;;;;;;;;;-1:-1:-1;;;2667:30:120;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "SOV()": "08dcb360",
              "addAdmin(address)": "70480275",
              "depositSOV(address,uint256)": "f33bf9a1",
              "getLockedBalance(address)": "c4086893",
              "removeAdmin(address)": "1785f53c"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "The function to add a new admin."
              },
              "constructor": "Setup the required parameters.",
              "depositSOV(address,uint256)": {
                "notice": "Adds SOV to the locked balance of a user."
              },
              "getLockedBalance(address)": {
                "notice": "The function to get the locked balance of a user."
              },
              "removeAdmin(address)": {
                "notice": "The function to remove an admin."
              }
            }
          }
        }
      },
      "contracts/mockup/previousLoanToken/PreviousLoanToken.sol": {
        "PreviousLoanToken": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_newTarget",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_sovrynContractAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_wrbtcTokenAddress",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": "burner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                }
              ],
              "name": "FlashBorrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "minter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "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"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "checkpointSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "initialPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_loanTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kinkLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "loanParamsIds",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "loanTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilBaseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilRateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxScaleRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_newTarget",
                  "type": "address"
                }
              ],
              "name": "setTarget",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynContractAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "targetLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "transactionLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "allowance(address,address)": {
                "params": {
                  "_owner": "The account owner of the iTokens.",
                  "_spender": "The account allowed to send the iTokens."
                },
                "return": "The number of iTokens an account is allowing the spender  to send on its behalf."
              },
              "balanceOf(address)": {
                "params": {
                  "_owner": "The account owner of the iTokens."
                },
                "return": "The number of iTokens an account owns."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "totalSupply()": {
                "return": "The total number of iTokens in existence as of now."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260016000553480156200001657600080fd5b506040516200111e3803806200111e833981810160405260808110156200003c57600080fd5b50805160208201516040830151606090930151919290916000620000686001600160e01b03620000ff16565b600180546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620010fe833981519152908290a350620000b9846001600160e01b036200010316565b620000cd836001600160e01b036200016e16565b620000e1826001600160e01b03620001f816565b620000f5816001600160e01b036200028216565b505050506200040c565b3390565b620001166001600160e01b036200030c16565b62000157576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6200016b816001600160e01b036200033d16565b50565b6200018481620003cf60201b62000b8d1760201c565b620001d6576040805162461bcd60e51b815260206004820152601560248201527f746172676574206e6f74206120636f6e74726163740000000000000000000000604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6200020e81620003cf60201b62000b8d1760201c565b62000260576040805162461bcd60e51b815260206004820152601560248201527f736f7672796e206e6f74206120636f6e74726163740000000000000000000000604482015290519081900360640190fd5b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6200029881620003cf60201b62000b8d1760201c565b620002ea576040805162461bcd60e51b815260206004820152601460248201527f7772627463206e6f74206120636f6e7472616374000000000000000000000000604482015290519081900360640190fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b03166200032e6001600160e01b03620000ff16565b6001600160a01b031614905090565b6001600160a01b038116620003845760405162461bcd60e51b8152600401808060200182810382526026815260200180620010d86026913960400191505060405180910390fd5b6001546040516001600160a01b03808416921690600080516020620010fe83398151915290600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906200040457508115155b949350505050565b610cbc806200041c6000396000f3fe6080604052600436106101665760003560e01c8063797bf385116100d157806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e146105ee578063e41b07e314610629578063ef2b0b391461065c578063f2fde38b1461067157610166565b806395d89b41146105af578063ba0e43bf146105c4578063d759dbeb146105d957610166565b8063797bf385146103e85780637b7933b4146103fd5780637e37c08c146104125780638da5cb5b146104275780638f32d59b1461043c578063906571471461046557610166565b8063313ce56711610123578063313ce567146103035780633291c11a1461032e578063330691ac1461035857806356e07d701461036d57806370a0823114610382578063776d1a01146103b557610166565b806306947a3a146101e257806306fdde031461021357806318160ddd1461029d5780631d0806ae146102c45780631f68f20a146102d95780632f6b600d146102ee575b6108fc5a11610174576101e0565b60185460408051602036601f81018290048202830182019093528282526001600160a01b039093169260609260009181908401838280828437600092018290525084519495509384935091505060208401855af43d604051816000823e8280156101dc578282f35b8282fd5b005b3480156101ee57600080fd5b506101f76106a4565b604080516001600160a01b039092168252519081900360200190f35b34801561021f57600080fd5b506102286106b3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026257818101518382015260200161024a565b50505050905090810190601f16801561028f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a957600080fd5b506102b261073e565b60408051918252519081900360200190f35b3480156102d057600080fd5b506102b2610745565b3480156102e557600080fd5b506102b261074b565b3480156102fa57600080fd5b506101f7610751565b34801561030f57600080fd5b50610318610760565b6040805160ff9092168252519081900360200190f35b34801561033a57600080fd5b506102b26004803603602081101561035157600080fd5b5035610769565b34801561036457600080fd5b506102b261077b565b34801561037957600080fd5b506102b2610781565b34801561038e57600080fd5b506102b2600480360360208110156103a557600080fd5b50356001600160a01b0316610787565b3480156103c157600080fd5b506101e0600480360360208110156103d857600080fd5b50356001600160a01b03166107a2565b3480156103f457600080fd5b506101f76107f6565b34801561040957600080fd5b506102b261080a565b34801561041e57600080fd5b506102b2610810565b34801561043357600080fd5b506101f7610816565b34801561044857600080fd5b50610451610825565b604080519115158252519081900360200190f35b34801561047157600080fd5b506101e06004803603606081101561048857600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156104b357600080fd5b8201836020820111156104c557600080fd5b803590602001918460018302840111640100000000831117156104e757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561053a57600080fd5b82018360208201111561054c57600080fd5b8035906020019184600183028401116401000000008311171561056e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061084b945050505050565b3480156105bb57600080fd5b50610228610979565b3480156105d057600080fd5b506102b26109d4565b3480156105e557600080fd5b506102b26109da565b3480156105fa57600080fd5b506102b26004803603604081101561061157600080fd5b506001600160a01b03813581169160200135166109e0565b34801561063557600080fd5b506102b26004803603602081101561064c57600080fd5b50356001600160a01b0316610a0b565b34801561066857600080fd5b506102b2610a1d565b34801561067d57600080fd5b506101e06004803603602081101561069457600080fd5b50356001600160a01b0316610a23565b6016546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156107365780601f1061070b57610100808354040283529160200191610736565b820191906000526020600020905b81548152906001019060200180831161071957829003601f168201915b505050505081565b6015545b90565b600e5481565b60055481565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526013602052604090205490565b6107aa610825565b6107ea576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6107f381610a74565b50565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b031661083c610ae8565b6001600160a01b031614905090565b610853610825565b610893576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60048054610100600160a81b0319166101006001600160a01b0386160217905581516108c6906002906020850190610bc9565b5080516108da906003906020840190610bc9565b50600460019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561092957600080fd5b505afa15801561093d573d6000803e3d6000fd5b505050506040513d602081101561095357600080fd5b50516004805460ff191660ff9092169190911790555050670de0b6b3a7640000600e5550565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107365780601f1061070b57610100808354040283529160200191610736565b60095481565b60075481565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b60126020526000908152604090205481565b600b5481565b610a2b610825565b610a6b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6107f381610aec565b610a7d81610b8d565b610ac6576040805162461bcd60e51b81526020600482015260156024820152741d185c99d95d081b9bdd08184818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b038116610b315760405162461bcd60e51b8152600401808060200182810382526026815260200180610c626026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610bc157508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610c0a57805160ff1916838001178555610c37565b82800160010185558215610c37579182015b82811115610c37578251825591602001919060010190610c1c565b50610c43929150610c47565b5090565b61074291905b80821115610c435760008155600101610c4d56fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158205074ce08a2aecab455aed4d0306b2e67cdd6acc1656b8df6ff1cb168b80501b964736f6c634300051100324f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x111E CODESIZE SUB DUP1 PUSH3 0x111E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH3 0x3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x0 PUSH3 0x68 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0xFF AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x10FE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0xB9 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x103 AND JUMP JUMPDEST PUSH3 0xCD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x16E AND JUMP JUMPDEST PUSH3 0xE1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x1F8 AND JUMP JUMPDEST PUSH3 0xF5 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x282 AND JUMP JUMPDEST POP POP POP POP PUSH3 0x40C JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH3 0x116 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x30C AND JUMP JUMPDEST PUSH3 0x157 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0x16B DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x33D AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x184 DUP2 PUSH3 0x3CF PUSH1 0x20 SHL PUSH3 0xB8D OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x746172676574206E6F74206120636F6E74726163740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x18 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x20E DUP2 PUSH3 0x3CF PUSH1 0x20 SHL PUSH3 0xB8D OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x260 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736F7672796E206E6F74206120636F6E74726163740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x16 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x298 DUP2 PUSH3 0x3CF PUSH1 0x20 SHL PUSH3 0xB8D OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x2EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7772627463206E6F74206120636F6E7472616374000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x17 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x32E PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0xFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x384 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x10D8 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x10FE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH3 0x404 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xCBC DUP1 PUSH3 0x41C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x166 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x797BF385 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x65C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x671 JUMPI PUSH2 0x166 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5AF JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x5C4 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x5D9 JUMPI PUSH2 0x166 JUMP JUMPDEST DUP1 PUSH4 0x797BF385 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x3FD JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x412 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x43C JUMPI DUP1 PUSH4 0x90657147 EQ PUSH2 0x465 JUMPI PUSH2 0x166 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x123 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x303 JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x32E JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x3B5 JUMPI PUSH2 0x166 JUMP JUMPDEST DUP1 PUSH4 0x6947A3A EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x2EE JUMPI JUMPDEST PUSH2 0x8FC GAS GT PUSH2 0x174 JUMPI PUSH2 0x1E0 JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 CALLDATASIZE PUSH1 0x1F DUP2 ADD DUP3 SWAP1 DIV DUP3 MUL DUP4 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP3 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH1 0x60 SWAP3 PUSH1 0x0 SWAP2 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP DUP5 MLOAD SWAP5 SWAP6 POP SWAP4 DUP5 SWAP4 POP SWAP2 POP POP PUSH1 0x20 DUP5 ADD DUP6 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x40 MLOAD DUP2 PUSH1 0x0 DUP3 RETURNDATACOPY DUP3 DUP1 ISZERO PUSH2 0x1DC JUMPI DUP3 DUP3 RETURN JUMPDEST DUP3 DUP3 REVERT JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F7 PUSH2 0x6A4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x262 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x24A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x28F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x73E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x745 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x74B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F7 PUSH2 0x751 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x318 PUSH2 0x760 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x769 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x77B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x781 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x787 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F7 PUSH2 0x7F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x80A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x810 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x433 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F7 PUSH2 0x816 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x451 PUSH2 0x825 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x84B SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x979 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x9D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x9DA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0xA1D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA23 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x736 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x70B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x736 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x719 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x7AA PUSH2 0x825 JUMP JUMPDEST PUSH2 0x7EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7F3 DUP2 PUSH2 0xA74 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x83C PUSH2 0xAE8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x853 PUSH2 0x825 JUMP JUMPDEST PUSH2 0x893 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH2 0x8C6 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0xBC9 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x8DA SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xBC9 JUMP JUMPDEST POP PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x929 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x93D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP PUSH8 0xDE0B6B3A7640000 PUSH1 0xE SSTORE POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x736 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x70B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x736 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0xA2B PUSH2 0x825 JUMP JUMPDEST PUSH2 0xA6B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7F3 DUP2 PUSH2 0xAEC JUMP JUMPDEST PUSH2 0xA7D DUP2 PUSH2 0xB8D JUMP JUMPDEST PUSH2 0xAC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1D185C99D95D081B9BDD08184818DBDB9D1C9858DD PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x18 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xC62 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0xBC1 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xC0A JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xC37 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xC37 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xC37 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xC1C JUMP JUMPDEST POP PUSH2 0xC43 SWAP3 SWAP2 POP PUSH2 0xC47 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x742 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xC43 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xC4D JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158205074CE08A2AECA 0xB4 SSTORE 0xAE 0xD4 0xD0 ADDRESS PUSH12 0x2E67CDD6ACC1656B8DF6FF1C 0xB1 PUSH9 0xB80501B964736F6C63 NUMBER STOP SDIV GT STOP ORIGIN 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573738BE0079C531659141344CD1FD0A4F284 NOT 0x49 PUSH32 0x9722A3DAAFE3B4186F6B6457E000000000000000000000000000000000000000 ",
              "sourceMap": "351:2024:121:-;;;493:1:143;661:55;;636:289:121;8:9:-1;5:2;;;30:1;27;20:12;5:2;636:289:121;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;636:289:121;;;;;;;;;;;;;;;;;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;;;;;;;;;;;;740:43:142;-1:-1:-1;;740:43:142;-1:-1:-1;769:28:121;787:9;-1:-1:-1;;;;;769:17:121;:28;:::i;:::-;801:22;812:10;-1:-1:-1;;;;;801:10:121;:22;:::i;:::-;827:49;853:22;-1:-1:-1;;;;;827:25:121;:49;:::i;:::-;880:41;902:18;-1:-1:-1;;;;;880:21:121;:41;:::i;:::-;636:289;;;;351:2024;;780:87:137;853:10;780:87;:::o;1351:98:142:-;1028:9;-1:-1:-1;;;;;1028:7:142;:9;:::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;-1:-1:-1;;;;;1417:18:142;:28;:::i;:::-;1351:98;:::o;1441:145:121:-;1502:30;1521:10;1502:18;;;;;:30;;:::i;:::-;1494:64;;;;;-1:-1:-1;;;1494:64:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;1562:7;:20;;-1:-1:-1;;;;;;1562:20:121;-1:-1:-1;;;;;1562:20:121;;;;;;;;;;1441:145::o;1589:210::-;1677:42;1696:22;1677:18;;;;;:42;;:::i;:::-;1669:76;;;;;-1:-1:-1;;;1669:76:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;1749:21;:46;;-1:-1:-1;;;;;;1749:46:121;-1:-1:-1;;;;;1749:46:121;;;;;;;;;;1589:210::o;1802:189::-;1882:38;1901:18;1882;;;;;:38;;:::i;:::-;1874:71;;;;;-1:-1:-1;;;1874:71:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;1949:17;:38;;-1:-1:-1;;;;;;1949:38:121;-1:-1:-1;;;;;1949:38:121;;;;;;;;;;1802:189::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;-1:-1:-1;;;;;1191:10:142;:12;:::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1538:204::-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;-1:-1:-1;;;;;;;;;;;1679:38:142;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;351:2024:121:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106101665760003560e01c8063797bf385116100d157806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e146105ee578063e41b07e314610629578063ef2b0b391461065c578063f2fde38b1461067157610166565b806395d89b41146105af578063ba0e43bf146105c4578063d759dbeb146105d957610166565b8063797bf385146103e85780637b7933b4146103fd5780637e37c08c146104125780638da5cb5b146104275780638f32d59b1461043c578063906571471461046557610166565b8063313ce56711610123578063313ce567146103035780633291c11a1461032e578063330691ac1461035857806356e07d701461036d57806370a0823114610382578063776d1a01146103b557610166565b806306947a3a146101e257806306fdde031461021357806318160ddd1461029d5780631d0806ae146102c45780631f68f20a146102d95780632f6b600d146102ee575b6108fc5a11610174576101e0565b60185460408051602036601f81018290048202830182019093528282526001600160a01b039093169260609260009181908401838280828437600092018290525084519495509384935091505060208401855af43d604051816000823e8280156101dc578282f35b8282fd5b005b3480156101ee57600080fd5b506101f76106a4565b604080516001600160a01b039092168252519081900360200190f35b34801561021f57600080fd5b506102286106b3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026257818101518382015260200161024a565b50505050905090810190601f16801561028f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a957600080fd5b506102b261073e565b60408051918252519081900360200190f35b3480156102d057600080fd5b506102b2610745565b3480156102e557600080fd5b506102b261074b565b3480156102fa57600080fd5b506101f7610751565b34801561030f57600080fd5b50610318610760565b6040805160ff9092168252519081900360200190f35b34801561033a57600080fd5b506102b26004803603602081101561035157600080fd5b5035610769565b34801561036457600080fd5b506102b261077b565b34801561037957600080fd5b506102b2610781565b34801561038e57600080fd5b506102b2600480360360208110156103a557600080fd5b50356001600160a01b0316610787565b3480156103c157600080fd5b506101e0600480360360208110156103d857600080fd5b50356001600160a01b03166107a2565b3480156103f457600080fd5b506101f76107f6565b34801561040957600080fd5b506102b261080a565b34801561041e57600080fd5b506102b2610810565b34801561043357600080fd5b506101f7610816565b34801561044857600080fd5b50610451610825565b604080519115158252519081900360200190f35b34801561047157600080fd5b506101e06004803603606081101561048857600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156104b357600080fd5b8201836020820111156104c557600080fd5b803590602001918460018302840111640100000000831117156104e757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561053a57600080fd5b82018360208201111561054c57600080fd5b8035906020019184600183028401116401000000008311171561056e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061084b945050505050565b3480156105bb57600080fd5b50610228610979565b3480156105d057600080fd5b506102b26109d4565b3480156105e557600080fd5b506102b26109da565b3480156105fa57600080fd5b506102b26004803603604081101561061157600080fd5b506001600160a01b03813581169160200135166109e0565b34801561063557600080fd5b506102b26004803603602081101561064c57600080fd5b50356001600160a01b0316610a0b565b34801561066857600080fd5b506102b2610a1d565b34801561067d57600080fd5b506101e06004803603602081101561069457600080fd5b50356001600160a01b0316610a23565b6016546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156107365780601f1061070b57610100808354040283529160200191610736565b820191906000526020600020905b81548152906001019060200180831161071957829003601f168201915b505050505081565b6015545b90565b600e5481565b60055481565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526013602052604090205490565b6107aa610825565b6107ea576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6107f381610a74565b50565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b031661083c610ae8565b6001600160a01b031614905090565b610853610825565b610893576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60048054610100600160a81b0319166101006001600160a01b0386160217905581516108c6906002906020850190610bc9565b5080516108da906003906020840190610bc9565b50600460019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561092957600080fd5b505afa15801561093d573d6000803e3d6000fd5b505050506040513d602081101561095357600080fd5b50516004805460ff191660ff9092169190911790555050670de0b6b3a7640000600e5550565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107365780601f1061070b57610100808354040283529160200191610736565b60095481565b60075481565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b60126020526000908152604090205481565b600b5481565b610a2b610825565b610a6b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6107f381610aec565b610a7d81610b8d565b610ac6576040805162461bcd60e51b81526020600482015260156024820152741d185c99d95d081b9bdd08184818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b038116610b315760405162461bcd60e51b8152600401808060200182810382526026815260200180610c626026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610bc157508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610c0a57805160ff1916838001178555610c37565b82800160010185558215610c37579182015b82811115610c37578251825591602001919060010190610c1c565b50610c43929150610c47565b5090565b61074291905b80821115610c435760008155600101610c4d56fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158205074ce08a2aecab455aed4d0306b2e67cdd6acc1656b8df6ff1cb168b80501b964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x166 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x797BF385 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x65C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x671 JUMPI PUSH2 0x166 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5AF JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x5C4 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x5D9 JUMPI PUSH2 0x166 JUMP JUMPDEST DUP1 PUSH4 0x797BF385 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x3FD JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x412 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x43C JUMPI DUP1 PUSH4 0x90657147 EQ PUSH2 0x465 JUMPI PUSH2 0x166 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x123 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x303 JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x32E JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x3B5 JUMPI PUSH2 0x166 JUMP JUMPDEST DUP1 PUSH4 0x6947A3A EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x2EE JUMPI JUMPDEST PUSH2 0x8FC GAS GT PUSH2 0x174 JUMPI PUSH2 0x1E0 JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 CALLDATASIZE PUSH1 0x1F DUP2 ADD DUP3 SWAP1 DIV DUP3 MUL DUP4 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP3 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH1 0x60 SWAP3 PUSH1 0x0 SWAP2 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP DUP5 MLOAD SWAP5 SWAP6 POP SWAP4 DUP5 SWAP4 POP SWAP2 POP POP PUSH1 0x20 DUP5 ADD DUP6 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x40 MLOAD DUP2 PUSH1 0x0 DUP3 RETURNDATACOPY DUP3 DUP1 ISZERO PUSH2 0x1DC JUMPI DUP3 DUP3 RETURN JUMPDEST DUP3 DUP3 REVERT JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F7 PUSH2 0x6A4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x262 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x24A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x28F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x73E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x745 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x74B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F7 PUSH2 0x751 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x318 PUSH2 0x760 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x769 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x77B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x781 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x787 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F7 PUSH2 0x7F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x80A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x810 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x433 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F7 PUSH2 0x816 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x451 PUSH2 0x825 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x84B SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x228 PUSH2 0x979 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x9D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0x9DA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B2 PUSH2 0xA1D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA23 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x736 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x70B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x736 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x719 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x7AA PUSH2 0x825 JUMP JUMPDEST PUSH2 0x7EA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7F3 DUP2 PUSH2 0xA74 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x83C PUSH2 0xAE8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x853 PUSH2 0x825 JUMP JUMPDEST PUSH2 0x893 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH2 0x8C6 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0xBC9 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x8DA SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xBC9 JUMP JUMPDEST POP PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x929 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x93D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP PUSH8 0xDE0B6B3A7640000 PUSH1 0xE SSTORE POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x736 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x70B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x736 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0xA2B PUSH2 0x825 JUMP JUMPDEST PUSH2 0xA6B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7F3 DUP2 PUSH2 0xAEC JUMP JUMPDEST PUSH2 0xA7D DUP2 PUSH2 0xB8D JUMP JUMPDEST PUSH2 0xAC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1D185C99D95D081B9BDD08184818DBDB9D1C9858DD PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x18 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xC62 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0xBC1 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xC0A JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xC37 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xC37 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xC37 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xC1C JUMP JUMPDEST POP PUSH2 0xC43 SWAP3 SWAP2 POP PUSH2 0xC47 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x742 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xC43 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xC4D JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158205074CE08A2AECA 0xB4 SSTORE 0xAE 0xD4 0xD0 ADDRESS PUSH12 0x2E67CDD6ACC1656B8DF6FF1C 0xB1 PUSH9 0xB80501B964736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "351:2024:121:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;977:4;964:9;:17;960:39;;988:7;;960:39;1020:7;;1031:28;;;;1051:8;1031:28;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1020:7:121;;;;1031:17;;-1:-1:-1;;1051:8:121;;1031:28;;-1:-1:-1;1051:8:121;;-1:-1:-1;1031:28:121;1:33:-1;99:1;81:16;;74:27;;;-1:-1;1134:11:121;;1031:28;;-1:-1:-1;99:1;;;-1:-1;1134:11:121;-1:-1:-1;;1127:4:121;1117:15;;1109:6;1104:3;1091:61;1168:14;1203:4;1197:11;1235:4;1232:1;1227:3;1212:28;1251:6;1262:37;;;;1331:4;1326:3;1319:17;1262:37;1288:4;1283:3;1276:17;1072:274;351:2024;534:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;534:36:121;;;:::i;:::-;;;;-1:-1:-1;;;;;534:36:121;;;;;;;;;;;;;;1977:18:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1977:18:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1778:80:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1778:80:1;;;:::i;:::-;;;;;;;;;;;;;;;;2441:27:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2441:27:3;;;:::i;2150:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2150:23:3;;;:::i;573:32:121:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;573:32:121;;;:::i;2021:21:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2021:21:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2633:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2633:48:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2633:48:3;;:::i;2176:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:29:3;;;:::i;2310:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2310:24:3;;;:::i;2035:96:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2035:96:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2035:96:1;-1:-1:-1;;;;;2035:96:1;;:::i;1352:86:121:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1352:86:121;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1352:86:121;-1:-1:-1;;;;;1352:86:121;;:::i;2115:31:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2115:31:3;;;:::i;2407:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2407:31:3;;;:::i;2241:36::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2241:36:3;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;1134:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;:::-;;;;;;;;;;;;;;;;;;2076:297:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2076:297:121;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;2076:297:121;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2076:297:121;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2076:297:121;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2076:297:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2076:297:121;;;;;;;;-1:-1:-1;2076:297:121;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;2076:297:121;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2076:297:121;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2076:297:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2076:297:121;;-1:-1:-1;2076:297:121;;-1:-1:-1;;;;;2076:297:121:i;1998:20:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1998:20:3;;;:::i;2281:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2281:26:3;;;:::i;2208:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2208:30:3;;;:::i;2464:123:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2464:123:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2464:123:1;;;;;;;;;;:::i;2854:51:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2854:51:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2854:51:3;-1:-1:-1;;;;;2854:51:3;;:::i;2337:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2337:27:3;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1351:98:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;534:36:121:-;;;-1:-1:-1;;;;;534:36:121;;:::o;1977:18:3:-;;;;;;;;;;;;;;-1:-1:-1;;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1778:80:1:-;1842:12;;1778:80;;:::o;2441:27:3:-;;;;:::o;2150:23::-;;;;:::o;573:32:121:-;;;-1:-1:-1;;;;;573:32:121;;:::o;2021:21:3:-;;;;;;:::o;2633:48::-;;;;;;;;;;;;;:::o;2176:29::-;;;;:::o;2310:24::-;;;;:::o;2035:96:1:-;-1:-1:-1;;;;;2111:16:1;2091:7;2111:16;;;:8;:16;;;;;;;2035:96::o;1352:86:121:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1412:22:121;1423:10;1412;:22::i;:::-;1352:86;:::o;2115:31:3:-;;;;;;-1:-1:-1;;;;;2115:31:3;;:::o;2407:::-;;;;:::o;2241:36::-;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2076:297:121:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;2197:16:121;:36;;-1:-1:-1;;;;;;2197:36:121;;-1:-1:-1;;;;;2197:36:121;;;;;;2238:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;2254:16:121;;;;:6;;:16;;;;;:::i;:::-;;2292;;;;;;;;;-1:-1:-1;;;;;2292:16:121;-1:-1:-1;;;;;2285:33:121;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2285:35:121;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2285:35:121;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2285:35:121;2274:8;:46;;-1:-1:-1;;2274:46:121;;;;;;;;;;;-1:-1:-1;;2340:6:121;2325:12;:21;-1:-1:-1;2076:297:121:o;1998:20:3:-;;;;;;;;;;;;;;;-1:-1:-1;;1998:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2281:26;;;;:::o;2208:30::-;;;;:::o;2464:123:1:-;-1:-1:-1;;;;;2558:15:1;;;2538:7;2558:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2464:123::o;2854:51:3:-;;;;;;;;;;;;;:::o;2337:27::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;1441:145:121:-;1502:30;1521:10;1502:18;:30::i;:::-;1494:64;;;;;-1:-1:-1;;;1494:64:121;;;;;;;;;;;;-1:-1:-1;;;1494:64:121;;;;;;;;;;;;;;;1562:7;:20;;-1:-1:-1;;;;;;1562:20:121;-1:-1:-1;;;;;1562:20:121;;;;;;;;;;1441:145::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;351:2024:121:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;351:2024:121;;;-1:-1:-1;351:2024:121;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "balanceOf(address)": "70a08231",
              "baseRate()": "1f68f20a",
              "checkpointSupply()": "7b7933b4",
              "decimals()": "313ce567",
              "initialPrice()": "1d0806ae",
              "initialize(address,string,string)": "90657147",
              "isOwner()": "8f32d59b",
              "kinkLevel()": "56e07d70",
              "loanParamsIds(uint256)": "3291c11a",
              "loanTokenAddress()": "797bf385",
              "lowUtilBaseRate()": "d759dbeb",
              "lowUtilRateMultiplier()": "7e37c08c",
              "maxScaleRate()": "ef2b0b39",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "rateMultiplier()": "330691ac",
              "setTarget(address)": "776d1a01",
              "sovrynContractAddress()": "06947a3a",
              "symbol()": "95d89b41",
              "targetLevel()": "ba0e43bf",
              "totalSupply()": "18160ddd",
              "transactionLimit(address)": "e41b07e3",
              "transferOwnership(address)": "f2fde38b",
              "wrbtcTokenAddress()": "2f6b600d"
            }
          },
          "userdoc": {
            "methods": {
              "allowance(address,address)": {
                "notice": "Get the amount of iTokens allowed to be spent by a  given account on behalf of the owner."
              },
              "balanceOf(address)": {
                "notice": "Get the amount of iTokens owned by an account."
              },
              "totalSupply()": {
                "notice": "Get the total supply of iTokens."
              }
            }
          }
        }
      },
      "contracts/mockup/previousLoanToken/PreviousLoanTokenSettingsLowerAdmin.sol": {
        "PreviousLoanTokenSettingsLowerAdmin": {
          "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": "burner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                }
              ],
              "name": "FlashBorrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "minter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "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": false,
                  "internalType": "address[]",
                  "name": "addresses",
                  "type": "address[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "limits",
                  "type": "uint256[]"
                }
              ],
              "name": "SetTransactionLimits",
              "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"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "checkpointSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "collateralTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "bool[]",
                  "name": "isTorqueLoans",
                  "type": "bool[]"
                }
              ],
              "name": "disableLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_loanTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                }
              ],
              "name": "init",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "initialPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kinkLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "loanParamsIds",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "loanTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilBaseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilRateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxScaleRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_baseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_rateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilBaseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilRateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_targetLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_kinkLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_maxScaleRate",
                  "type": "uint256"
                }
              ],
              "name": "setDemandCurve",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "addresses",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "limits",
                  "type": "uint256[]"
                }
              ],
              "name": "setTransactionLimits",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "id",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bool",
                      "name": "active",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "minInitialMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanParamsStruct.LoanParams[]",
                  "name": "loanParamsList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bool",
                  "name": "areTorqueLoans",
                  "type": "bool"
                }
              ],
              "name": "setupLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynContractAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "targetLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "funcId",
                  "type": "string"
                },
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "name": "toggleFunctionPause",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "transactionLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "allowance(address,address)": {
                "params": {
                  "_owner": "The account owner of the iTokens.",
                  "_spender": "The account allowed to send the iTokens."
                },
                "return": "The number of iTokens an account is allowing the spender  to send on its behalf."
              },
              "balanceOf(address)": {
                "params": {
                  "_owner": "The account owner of the iTokens."
                },
                "return": "The number of iTokens an account owns."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setTransactionLimits(address[],uint256[])": {
                "params": {
                  "addresses": "the token addresses",
                  "limits": "the limit denominated in the currency of the token address"
                }
              },
              "totalSupply()": {
                "return": "The total number of iTokens in existence as of now."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600090815561001c6001600160e01b0361006f16565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610073565b3390565b611cc1806100826000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638da5cb5b11610104578063d97206a4116100a2578063e697d2ee11610071578063e697d2ee1461035c578063ee60c9331461036f578063ef2b0b3914610382578063f2fde38b1461038a576101cf565b8063d97206a414610310578063dd62ed3e14610323578063e3cded6114610336578063e41b07e314610349576101cf565b8063b2b45df5116100de578063b2b45df5146102d8578063ba0e43bf146102ed578063d759dbeb146102f5578063d8f06c83146102fd576101cf565b80638da5cb5b146102b35780638f32d59b146102bb57806395d89b41146102d0576101cf565b80633291c11a1161017157806370a082311161014b57806370a0823114610288578063797bf3851461029b5780637b7933b4146102a35780637e37c08c146102ab576101cf565b80633291c11a14610265578063330691ac1461027857806356e07d7014610280576101cf565b80631d0806ae116101ad5780631d0806ae146102385780631f68f20a146102405780632f6b600d14610248578063313ce56714610250576101cf565b806306947a3a146101f057806306fdde031461020e57806318160ddd14610223575b60405162461bcd60e51b81526004016101e790611ac3565b60405180910390fd5b6101f861039d565b6040516102059190611a11565b60405180910390f35b6102166103ac565b6040516102059190611a82565b61022b610437565b6040516102059190611a74565b61022b61043e565b61022b610444565b6101f861044a565b610258610459565b6040516102059190611b13565b61022b610273366004611440565b610462565b61022b610474565b61022b61047a565b61022b6102963660046111cd565b610480565b6101f861049b565b61022b6104af565b61022b6104b5565b6101f86104bb565b6102c36104ca565b6040516102059190611a66565b6102166104f0565b6102eb6102e636600461122d565b61054b565b005b61022b610662565b61022b610668565b6102eb61030b3660046113a7565b61066e565b6102eb61031e36600461145e565b610846565b61022b6103313660046111f3565b610956565b6102eb61034436600461140b565b610983565b61022b6103573660046111cd565b610a40565b6102eb61036a3660046112a8565b610a52565b6102eb61037d366004611316565b610c0c565b61022b610ceb565b6102eb6103983660046111cd565b610cf1565b6016546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561042f5780601f106104045761010080835404028352916020019161042f565b820191906000526020600020905b81548152906001019060200180831161041257829003601f168201915b505050505081565b6015545b90565b600e5481565b60055481565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526013602052604090205490565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b03166104e1610d21565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561042f5780601f106104045761010080835404028352916020019161042f565b6105536104ca565b61056f5760405162461bcd60e51b81526004016101e790611af3565b60048054610100600160a81b0319166101006001600160a01b0386160217905581516105a2906002906020850190610dd3565b5080516105b6906003906020840190610dd3565b50600460019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561060557600080fd5b505afa158015610619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061063d91908101906114fa565b6004805460ff191660ff929092169190911790555050670de0b6b3a7640000600e5550565b60095481565b60075481565b33301480610694575061067f6104bb565b6001600160a01b0316336001600160a01b0316145b6106b05760405162461bcd60e51b81526004016101e790611af3565b60045460609061010090046001600160a01b031660005b845181101561073a57818582815181106106dd57fe5b6020026020010151606001906001600160a01b031690816001600160a01b0316815250508361070f576224ea00610712565b60005b62ffffff1685828151811061072357fe5b602090810291909101015160e001526001016106c7565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e9061076b908790600401611a55565b600060405180830381600087803b15801561078557600080fd5b505af1158015610799573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c19190810190611373565b915060005b825181101561083f578281815181106107db57fe5b6020026020010151601060008784815181106107f357fe5b602002602001015160800151876040516020016108119291906119b9565b60408051601f19818403018152918152815160209283012083529082019290925201600020556001016107c6565b5050505050565b3330148061086c57506108576104bb565b6001600160a01b0316336001600160a01b0316145b6108885760405162461bcd60e51b81526004016101e790611af3565b68056bc75e2d631000006108a2878963ffffffff610d2516565b11156108c05760405162461bcd60e51b81526004016101e790611ad3565b68056bc75e2d631000006108da858763ffffffff610d2516565b11156108f85760405162461bcd60e51b81526004016101e790611ad3565b68056bc75e2d63100000831115801561091a575068056bc75e2d631000008211155b6109365760405162461bcd60e51b81526004016101e790611ae3565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b038083166000908152601460209081526040808320938516835292905220545b92915050565b333014806109a957506109946104bb565b6001600160a01b0316336001600160a01b0316145b6109c55760405162461bcd60e51b81526004016101e790611af3565b6000826040516020016109d89190611a05565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001610a209291906119df565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b33301480610a785750610a636104bb565b6001600160a01b0316336001600160a01b0316145b610a945760405162461bcd60e51b81526004016101e790611af3565b828114610ab35760405162461bcd60e51b81526004016101e790611ab3565b604080518481526020808602820101909152606090848015610adf578160200160208202803883390190505b50905060005b84811015610ba2576000868683818110610afb57fe5b9050602002016020610b1091908101906111cd565b858584818110610b1c57fe5b9050602002016020610b3191908101906113ed565b604051602001610b429291906119b9565b6040516020818303038152906040528051906020012060001c90506010600082815260200190815260200160002054838381518110610b7d57fe5b6020908102919091018101919091526000918252601090526040812055600101610ae5565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a90610bd3908490600401611a44565b600060405180830381600087803b158015610bed57600080fd5b505af1158015610c01573d6000803e3d6000fd5b505050505050505050565b610c146104ca565b610c305760405162461bcd60e51b81526004016101e790611af3565b8051825114610c515760405162461bcd60e51b81526004016101e790611b03565b60005b8251811015610cad57818181518110610c6957fe5b602002602001015160126000858481518110610c8157fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002055600101610c54565b507f9bbd2de400810774339120e2f8a2b517ed748595e944529bba8ebabf314d05918282604051610cdf929190611a1f565b60405180910390a15050565b600b5481565b610cf96104ca565b610d155760405162461bcd60e51b81526004016101e790611af3565b610d1e81610d51565b50565b3390565b600082820183811015610d4a5760405162461bcd60e51b81526004016101e790611aa3565b9392505050565b6001600160a01b038116610d775760405162461bcd60e51b81526004016101e790611a93565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e1457805160ff1916838001178555610e41565b82800160010185558215610e41579182015b82811115610e41578251825591602001919060010190610e26565b50610e4d929150610e51565b5090565b61043b91905b80821115610e4d5760008155600101610e57565b803561097d81611c4f565b60008083601f840112610e8857600080fd5b5081356001600160401b03811115610e9f57600080fd5b602083019150836020820283011115610eb757600080fd5b9250929050565b600082601f830112610ecf57600080fd5b8135610ee2610edd82611b47565b611b21565b91508181835260208401935060208101905083856020840282011115610f0757600080fd5b60005b83811015610f335781610f1d8882610e6b565b8452506020928301929190910190600101610f0a565b5050505092915050565b600082601f830112610f4e57600080fd5b8151610f5c610edd82611b47565b91508181835260208401935060208101905083856020840282011115610f8157600080fd5b60005b83811015610f335781610f9788826110a7565b8452506020928301929190910190600101610f84565b600082601f830112610fbe57600080fd5b8135610fcc610edd82611b47565b9150818183526020840193506020810190508385610100840282011115610ff257600080fd5b60005b83811015610f3357816110088882611101565b8452506020909201916101009190910190600101610ff5565b600082601f83011261103257600080fd5b8135611040610edd82611b47565b9150818183526020840193506020810190508385602084028201111561106557600080fd5b60005b83811015610f33578161107b888261109c565b8452506020928301929190910190600101611068565b803561097d81611c63565b803561097d81611c6c565b805161097d81611c6c565b600082601f8301126110c357600080fd5b81356110d1610edd82611b67565b915080825260208301602083018583830111156110ed57600080fd5b6110f8838284611bd5565b50505092915050565b6000610100828403121561111457600080fd5b61111f610100611b21565b9050600061112d848461109c565b825250602061113e84848301611091565b602083015250604061115284828501610e6b565b604083015250606061116684828501610e6b565b606083015250608061117a84828501610e6b565b60808301525060a061118e8482850161109c565b60a08301525060c06111a28482850161109c565b60c08301525060e06111b68482850161109c565b60e08301525092915050565b805161097d81611c75565b6000602082840312156111df57600080fd5b60006111eb8484610e6b565b949350505050565b6000806040838503121561120657600080fd5b60006112128585610e6b565b925050602061122385828601610e6b565b9150509250929050565b60008060006060848603121561124257600080fd5b600061124e8686610e6b565b93505060208401356001600160401b0381111561126a57600080fd5b611276868287016110b2565b92505060408401356001600160401b0381111561129257600080fd5b61129e868287016110b2565b9150509250925092565b600080600080604085870312156112be57600080fd5b84356001600160401b038111156112d457600080fd5b6112e087828801610e76565b945094505060208501356001600160401b038111156112fe57600080fd5b61130a87828801610e76565b95989497509550505050565b6000806040838503121561132957600080fd5b82356001600160401b0381111561133f57600080fd5b61134b85828601610ebe565b92505060208301356001600160401b0381111561136757600080fd5b61122385828601611021565b60006020828403121561138557600080fd5b81516001600160401b0381111561139b57600080fd5b6111eb84828501610f3d565b600080604083850312156113ba57600080fd5b82356001600160401b038111156113d057600080fd5b6113dc85828601610fad565b925050602061122385828601611091565b6000602082840312156113ff57600080fd5b60006111eb8484611091565b6000806040838503121561141e57600080fd5b82356001600160401b0381111561143457600080fd5b6113dc858286016110b2565b60006020828403121561145257600080fd5b60006111eb848461109c565b600080600080600080600060e0888a03121561147957600080fd5b60006114858a8a61109c565b97505060206114968a828b0161109c565b96505060406114a78a828b0161109c565b95505060606114b88a828b0161109c565b94505060806114c98a828b0161109c565b93505060a06114da8a828b0161109c565b92505060c06114eb8a828b0161109c565b91505092959891949750929550565b60006020828403121561150c57600080fd5b60006111eb84846111c2565b6000611524838361154d565b505060200190565b600061152483836116ca565b60006115448383611907565b50506101000190565b61155681611ba6565b82525050565b61155661156882611ba6565b611c0d565b600061157882611b94565b6115828185611b98565b935061158d83611b8e565b8060005b838110156115bb5781516115a58882611518565b97506115b083611b8e565b925050600101611591565b509495945050505050565b60006115d182611b94565b6115db8185611b98565b93506115e683611b8e565b8060005b838110156115bb5781516115fe888261152c565b975061160983611b8e565b9250506001016115ea565b600061161f82611b94565b6116298185611b98565b935061163483611b8e565b8060005b838110156115bb57815161164c8882611538565b975061165783611b8e565b925050600101611638565b600061166d82611b94565b6116778185611b98565b935061168283611b8e565b8060005b838110156115bb57815161169a888261152c565b97506116a583611b8e565b925050600101611686565b61155681611bb1565b6115566116c582611bb1565b611c18565b6115568161043b565b6115566116df82611bb6565b61043b565b60006116ef82611b94565b6116f98185611ba1565b9350611709818560208601611be1565b9290920192915050565b600061171e82611b94565b6117288185611b98565b9350611738818560208601611be1565b61174181611c39565b9093019392505050565b6000611758602683611b98565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006117a0601b83611b98565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006117d9600e83611b98565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000611803603283611b98565b7f4c6f616e546f6b656e53657474696e67734c6f77657241646d696e202d2066618152711b1b189858dac81b9bdd08185b1b1bddd95960721b602082015260400192915050565b6000611857601583611b98565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000611888600f83611b98565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b60006118b3600c83611b98565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006118db601883611b98565b7f6d69736d617463686564206172726179206c656e677468730000000000000000815260200192915050565b805161010083019061191984826116ca565b50602082015161192c60208501826116b0565b50604082015161193f604085018261154d565b506060820151611952606085018261154d565b506080820151611965608085018261154d565b5060a082015161197860a08501826116ca565b5060c082015161198b60c08501826116ca565b5060e082015161199e60e08501826116ca565b50505050565b6115566116df8261043b565b61155681611bcf565b60006119c5828561155c565b6014820191506119d582846116b9565b5060010192915050565b60006119eb82856116d3565b6004820191506119fb82846119a4565b5060200192915050565b6000610d4a82846116e4565b6020810161097d828461154d565b60408082528101611a30818561156d565b905081810360208301526111eb8184611662565b60208082528101610d4a81846115c6565b60208082528101610d4a8184611614565b6020810161097d82846116b0565b6020810161097d82846116ca565b60208082528101610d4a8184611713565b6020808252810161097d8161174b565b6020808252810161097d81611793565b6020808252810161097d816117cc565b6020808252810161097d816117f6565b6020808252810161097d8161184a565b6020808252810161097d8161187b565b6020808252810161097d816118a6565b6020808252810161097d816118ce565b6020810161097d82846119b0565b6040518181016001600160401b0381118282101715611b3f57600080fd5b604052919050565b60006001600160401b03821115611b5d57600080fd5b5060209081020190565b60006001600160401b03821115611b7d57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b600061097d82611bc3565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b82818337506000910152565b60005b83811015611bfc578181015183820152602001611be4565b8381111561199e5750506000910152565b600061097d82611c23565b600061097d82611c2e565b600061097d82611c49565b600061097d82611c43565b601f01601f191690565b60f81b90565b60601b90565b611c5881611ba6565b8114610d1e57600080fd5b611c5881611bb1565b611c588161043b565b611c5881611bcf56fea365627a7a72315820cbdd2e279b2d20be651e448847d6f8d5ff9a0eada105cdb6d26e7f6f4f263d126c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH2 0x1C PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x6F AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x73 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x1CC1 DUP1 PUSH2 0x82 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xD97206A4 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xE697D2EE GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0x35C JUMPI DUP1 PUSH4 0xEE60C933 EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x38A JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0xD97206A4 EQ PUSH2 0x310 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0x336 JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x349 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0xB2B45DF5 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xB2B45DF5 EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x2ED JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x2FD JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2B3 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2D0 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x3291C11A GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x29B JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x2AB JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x3291C11A EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x280 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x1D0806AE GT PUSH2 0x1AD JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x250 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x6947A3A EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x223 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F8 PUSH2 0x39D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x205 SWAP2 SWAP1 PUSH2 0x1A11 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x216 PUSH2 0x3AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x205 SWAP2 SWAP1 PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x437 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x205 SWAP2 SWAP1 PUSH2 0x1A74 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x43E JUMP JUMPDEST PUSH2 0x22B PUSH2 0x444 JUMP JUMPDEST PUSH2 0x1F8 PUSH2 0x44A JUMP JUMPDEST PUSH2 0x258 PUSH2 0x459 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x205 SWAP2 SWAP1 PUSH2 0x1B13 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x1440 JUMP JUMPDEST PUSH2 0x462 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x474 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x47A JUMP JUMPDEST PUSH2 0x22B PUSH2 0x296 CALLDATASIZE PUSH1 0x4 PUSH2 0x11CD JUMP JUMPDEST PUSH2 0x480 JUMP JUMPDEST PUSH2 0x1F8 PUSH2 0x49B JUMP JUMPDEST PUSH2 0x22B PUSH2 0x4AF JUMP JUMPDEST PUSH2 0x22B PUSH2 0x4B5 JUMP JUMPDEST PUSH2 0x1F8 PUSH2 0x4BB JUMP JUMPDEST PUSH2 0x2C3 PUSH2 0x4CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x205 SWAP2 SWAP1 PUSH2 0x1A66 JUMP JUMPDEST PUSH2 0x216 PUSH2 0x4F0 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x2E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x122D JUMP JUMPDEST PUSH2 0x54B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH2 0x662 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x668 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x30B CALLDATASIZE PUSH1 0x4 PUSH2 0x13A7 JUMP JUMPDEST PUSH2 0x66E JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x31E CALLDATASIZE PUSH1 0x4 PUSH2 0x145E JUMP JUMPDEST PUSH2 0x846 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x331 CALLDATASIZE PUSH1 0x4 PUSH2 0x11F3 JUMP JUMPDEST PUSH2 0x956 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x344 CALLDATASIZE PUSH1 0x4 PUSH2 0x140B JUMP JUMPDEST PUSH2 0x983 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x357 CALLDATASIZE PUSH1 0x4 PUSH2 0x11CD JUMP JUMPDEST PUSH2 0xA40 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x36A CALLDATASIZE PUSH1 0x4 PUSH2 0x12A8 JUMP JUMPDEST PUSH2 0xA52 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x37D CALLDATASIZE PUSH1 0x4 PUSH2 0x1316 JUMP JUMPDEST PUSH2 0xC0C JUMP JUMPDEST PUSH2 0x22B PUSH2 0xCEB JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x398 CALLDATASIZE PUSH1 0x4 PUSH2 0x11CD JUMP JUMPDEST PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x42F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x404 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x42F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x412 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4E1 PUSH2 0xD21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x42F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x404 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x42F JUMP JUMPDEST PUSH2 0x553 PUSH2 0x4CA JUMP JUMPDEST PUSH2 0x56F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH2 0x5A2 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0xDD3 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x5B6 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xDD3 JUMP JUMPDEST POP PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x619 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x63D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x14FA JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP PUSH8 0xDE0B6B3A7640000 PUSH1 0xE SSTORE POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0x694 JUMPI POP PUSH2 0x67F PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x6B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x73A JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x70F JUMPI PUSH3 0x24EA00 PUSH2 0x712 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x723 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x6C7 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x76B SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x785 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x799 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x7C1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1373 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x83F JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x7DB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x7F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x811 SWAP3 SWAP2 SWAP1 PUSH2 0x19B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x7C6 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0x86C JUMPI POP PUSH2 0x857 PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x888 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x8A2 DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0xD25 AND JUMP JUMPDEST GT ISZERO PUSH2 0x8C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AD3 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x8DA DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0xD25 AND JUMP JUMPDEST GT ISZERO PUSH2 0x8F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AD3 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x91A JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x936 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AE3 JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0x9A9 JUMPI POP PUSH2 0x994 PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x9C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x9D8 SWAP2 SWAP1 PUSH2 0x1A05 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA20 SWAP3 SWAP2 SWAP1 PUSH2 0x19DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0xA78 JUMPI POP PUSH2 0xA63 PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xA94 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0xAB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AB3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0xADF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xBA2 JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0xAFB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xB10 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x11CD JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0xB1C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xB31 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x13ED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB42 SWAP3 SWAP2 SWAP1 PUSH2 0x19B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xB7D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xAE5 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0xBD3 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1A44 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC14 PUSH2 0x4CA JUMP JUMPDEST PUSH2 0xC30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0xC51 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1B03 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xCAD JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xC69 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x12 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC81 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xC54 JUMP JUMPDEST POP PUSH32 0x9BBD2DE400810774339120E2F8A2B517ED748595E944529BBA8EBABF314D0591 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0xCDF SWAP3 SWAP2 SWAP1 PUSH2 0x1A1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0xCF9 PUSH2 0x4CA JUMP JUMPDEST PUSH2 0xD15 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST PUSH2 0xD1E DUP2 PUSH2 0xD51 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xD4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AA3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD77 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1A93 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xE14 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xE41 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xE41 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xE41 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xE26 JUMP JUMPDEST POP PUSH2 0xE4D SWAP3 SWAP2 POP PUSH2 0xE51 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x43B SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xE4D JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xE57 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x97D DUP2 PUSH2 0x1C4F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xE88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xE9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xEB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xECF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE2 PUSH2 0xEDD DUP3 PUSH2 0x1B47 JUMP JUMPDEST PUSH2 0x1B21 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xF07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF33 JUMPI DUP2 PUSH2 0xF1D DUP9 DUP3 PUSH2 0xE6B JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF0A JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF5C PUSH2 0xEDD DUP3 PUSH2 0x1B47 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xF81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF33 JUMPI DUP2 PUSH2 0xF97 DUP9 DUP3 PUSH2 0x10A7 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xFBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFCC PUSH2 0xEDD DUP3 PUSH2 0x1B47 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xFF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF33 JUMPI DUP2 PUSH2 0x1008 DUP9 DUP3 PUSH2 0x1101 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xFF5 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1032 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1040 PUSH2 0xEDD DUP3 PUSH2 0x1B47 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF33 JUMPI DUP2 PUSH2 0x107B DUP9 DUP3 PUSH2 0x109C JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1068 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x97D DUP2 PUSH2 0x1C63 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x97D DUP2 PUSH2 0x1C6C JUMP JUMPDEST DUP1 MLOAD PUSH2 0x97D DUP2 PUSH2 0x1C6C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x10D1 PUSH2 0xEDD DUP3 PUSH2 0x1B67 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x10ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10F8 DUP4 DUP3 DUP5 PUSH2 0x1BD5 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x111F PUSH2 0x100 PUSH2 0x1B21 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x112D DUP5 DUP5 PUSH2 0x109C JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x113E DUP5 DUP5 DUP4 ADD PUSH2 0x1091 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x1152 DUP5 DUP3 DUP6 ADD PUSH2 0xE6B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x1166 DUP5 DUP3 DUP6 ADD PUSH2 0xE6B JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x117A DUP5 DUP3 DUP6 ADD PUSH2 0xE6B JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x118E DUP5 DUP3 DUP6 ADD PUSH2 0x109C JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x11A2 DUP5 DUP3 DUP6 ADD PUSH2 0x109C JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x11B6 DUP5 DUP3 DUP6 ADD PUSH2 0x109C JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x97D DUP2 PUSH2 0x1C75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11EB DUP5 DUP5 PUSH2 0xE6B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1212 DUP6 DUP6 PUSH2 0xE6B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1223 DUP6 DUP3 DUP7 ADD PUSH2 0xE6B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x124E DUP7 DUP7 PUSH2 0xE6B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x126A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1276 DUP7 DUP3 DUP8 ADD PUSH2 0x10B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x129E DUP7 DUP3 DUP8 ADD PUSH2 0x10B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x12BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12E0 DUP8 DUP3 DUP9 ADD PUSH2 0xE76 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x12FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x130A DUP8 DUP3 DUP9 ADD PUSH2 0xE76 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x133F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x134B DUP6 DUP3 DUP7 ADD PUSH2 0xEBE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1223 DUP6 DUP3 DUP7 ADD PUSH2 0x1021 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x139B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11EB DUP5 DUP3 DUP6 ADD PUSH2 0xF3D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x13BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x13D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13DC DUP6 DUP3 DUP7 ADD PUSH2 0xFAD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1223 DUP6 DUP3 DUP7 ADD PUSH2 0x1091 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11EB DUP5 DUP5 PUSH2 0x1091 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x141E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13DC DUP6 DUP3 DUP7 ADD PUSH2 0x10B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11EB DUP5 DUP5 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x1479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1485 DUP11 DUP11 PUSH2 0x109C JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x1496 DUP11 DUP3 DUP12 ADD PUSH2 0x109C JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x14A7 DUP11 DUP3 DUP12 ADD PUSH2 0x109C JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x14B8 DUP11 DUP3 DUP12 ADD PUSH2 0x109C JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x14C9 DUP11 DUP3 DUP12 ADD PUSH2 0x109C JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x14DA DUP11 DUP3 DUP12 ADD PUSH2 0x109C JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x14EB DUP11 DUP3 DUP12 ADD PUSH2 0x109C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x150C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11EB DUP5 DUP5 PUSH2 0x11C2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1524 DUP4 DUP4 PUSH2 0x154D JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1524 DUP4 DUP4 PUSH2 0x16CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1544 DUP4 DUP4 PUSH2 0x1907 JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1556 DUP2 PUSH2 0x1BA6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1556 PUSH2 0x1568 DUP3 PUSH2 0x1BA6 JUMP JUMPDEST PUSH2 0x1C0D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1578 DUP3 PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x1582 DUP2 DUP6 PUSH2 0x1B98 JUMP JUMPDEST SWAP4 POP PUSH2 0x158D DUP4 PUSH2 0x1B8E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15BB JUMPI DUP2 MLOAD PUSH2 0x15A5 DUP9 DUP3 PUSH2 0x1518 JUMP JUMPDEST SWAP8 POP PUSH2 0x15B0 DUP4 PUSH2 0x1B8E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1591 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15D1 DUP3 PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x15DB DUP2 DUP6 PUSH2 0x1B98 JUMP JUMPDEST SWAP4 POP PUSH2 0x15E6 DUP4 PUSH2 0x1B8E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15BB JUMPI DUP2 MLOAD PUSH2 0x15FE DUP9 DUP3 PUSH2 0x152C JUMP JUMPDEST SWAP8 POP PUSH2 0x1609 DUP4 PUSH2 0x1B8E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x15EA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x161F DUP3 PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x1629 DUP2 DUP6 PUSH2 0x1B98 JUMP JUMPDEST SWAP4 POP PUSH2 0x1634 DUP4 PUSH2 0x1B8E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15BB JUMPI DUP2 MLOAD PUSH2 0x164C DUP9 DUP3 PUSH2 0x1538 JUMP JUMPDEST SWAP8 POP PUSH2 0x1657 DUP4 PUSH2 0x1B8E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1638 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x166D DUP3 PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x1677 DUP2 DUP6 PUSH2 0x1B98 JUMP JUMPDEST SWAP4 POP PUSH2 0x1682 DUP4 PUSH2 0x1B8E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15BB JUMPI DUP2 MLOAD PUSH2 0x169A DUP9 DUP3 PUSH2 0x152C JUMP JUMPDEST SWAP8 POP PUSH2 0x16A5 DUP4 PUSH2 0x1B8E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1686 JUMP JUMPDEST PUSH2 0x1556 DUP2 PUSH2 0x1BB1 JUMP JUMPDEST PUSH2 0x1556 PUSH2 0x16C5 DUP3 PUSH2 0x1BB1 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1556 DUP2 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1556 PUSH2 0x16DF DUP3 PUSH2 0x1BB6 JUMP JUMPDEST PUSH2 0x43B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16EF DUP3 PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x16F9 DUP2 DUP6 PUSH2 0x1BA1 JUMP JUMPDEST SWAP4 POP PUSH2 0x1709 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1BE1 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x171E DUP3 PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x1728 DUP2 DUP6 PUSH2 0x1B98 JUMP JUMPDEST SWAP4 POP PUSH2 0x1738 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1BE1 JUMP JUMPDEST PUSH2 0x1741 DUP2 PUSH2 0x1C39 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1758 PUSH1 0x26 DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17A0 PUSH1 0x1B DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17D9 PUSH1 0xE DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1803 PUSH1 0x32 DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH32 0x4C6F616E546F6B656E53657474696E67734C6F77657241646D696E202D206661 DUP2 MSTORE PUSH18 0x1B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x72 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1857 PUSH1 0x15 DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1888 PUSH1 0xF DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18B3 PUSH1 0xC DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18DB PUSH1 0x18 DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH32 0x6D69736D617463686564206172726179206C656E677468730000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x1919 DUP5 DUP3 PUSH2 0x16CA JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x192C PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x16B0 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x193F PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x154D JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x1952 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x154D JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x1965 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x154D JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x1978 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x16CA JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x198B PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x16CA JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x199E PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x16CA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1556 PUSH2 0x16DF DUP3 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1556 DUP2 PUSH2 0x1BCF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19C5 DUP3 DUP6 PUSH2 0x155C JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x19D5 DUP3 DUP5 PUSH2 0x16B9 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19EB DUP3 DUP6 PUSH2 0x16D3 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x19FB DUP3 DUP5 PUSH2 0x19A4 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD4A DUP3 DUP5 PUSH2 0x16E4 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x97D DUP3 DUP5 PUSH2 0x154D JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1A30 DUP2 DUP6 PUSH2 0x156D JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x11EB DUP2 DUP5 PUSH2 0x1662 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD4A DUP2 DUP5 PUSH2 0x15C6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD4A DUP2 DUP5 PUSH2 0x1614 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x97D DUP3 DUP5 PUSH2 0x16B0 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x97D DUP3 DUP5 PUSH2 0x16CA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD4A DUP2 DUP5 PUSH2 0x1713 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x174B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x1793 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x17F6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x184A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x187B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x18A6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x18CE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x97D DUP3 DUP5 PUSH2 0x19B0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1B3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x1B5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x1B7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97D DUP3 PUSH2 0x1BC3 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BFC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1BE4 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x199E JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97D DUP3 PUSH2 0x1C23 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97D DUP3 PUSH2 0x1C2E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97D DUP3 PUSH2 0x1C49 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97D DUP3 PUSH2 0x1C43 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x1C58 DUP2 PUSH2 0x1BA6 JUMP JUMPDEST DUP2 EQ PUSH2 0xD1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C58 DUP2 PUSH2 0x1BB1 JUMP JUMPDEST PUSH2 0x1C58 DUP2 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1C58 DUP2 PUSH2 0x1BCF JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xCB 0xDD 0x2E 0x27 SWAP12 0x2D KECCAK256 0xBE PUSH6 0x1E448847D6F8 0xD5 SELFDESTRUCT SWAP11 0xE 0xAD LOG1 SDIV 0xCD 0xB6 0xD2 PUSH15 0x7F6F4F263D126C6578706572696D65 PUSH15 0x74616CF564736F6C63430005110040 ",
              "sourceMap": "350:4381:122:-;;;493:1:143;661:55;;;;697:12:142;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;350:4381:122;;780:87:137;853:10;780:87;:::o;350:4381:122:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638da5cb5b11610104578063d97206a4116100a2578063e697d2ee11610071578063e697d2ee1461035c578063ee60c9331461036f578063ef2b0b3914610382578063f2fde38b1461038a576101cf565b8063d97206a414610310578063dd62ed3e14610323578063e3cded6114610336578063e41b07e314610349576101cf565b8063b2b45df5116100de578063b2b45df5146102d8578063ba0e43bf146102ed578063d759dbeb146102f5578063d8f06c83146102fd576101cf565b80638da5cb5b146102b35780638f32d59b146102bb57806395d89b41146102d0576101cf565b80633291c11a1161017157806370a082311161014b57806370a0823114610288578063797bf3851461029b5780637b7933b4146102a35780637e37c08c146102ab576101cf565b80633291c11a14610265578063330691ac1461027857806356e07d7014610280576101cf565b80631d0806ae116101ad5780631d0806ae146102385780631f68f20a146102405780632f6b600d14610248578063313ce56714610250576101cf565b806306947a3a146101f057806306fdde031461020e57806318160ddd14610223575b60405162461bcd60e51b81526004016101e790611ac3565b60405180910390fd5b6101f861039d565b6040516102059190611a11565b60405180910390f35b6102166103ac565b6040516102059190611a82565b61022b610437565b6040516102059190611a74565b61022b61043e565b61022b610444565b6101f861044a565b610258610459565b6040516102059190611b13565b61022b610273366004611440565b610462565b61022b610474565b61022b61047a565b61022b6102963660046111cd565b610480565b6101f861049b565b61022b6104af565b61022b6104b5565b6101f86104bb565b6102c36104ca565b6040516102059190611a66565b6102166104f0565b6102eb6102e636600461122d565b61054b565b005b61022b610662565b61022b610668565b6102eb61030b3660046113a7565b61066e565b6102eb61031e36600461145e565b610846565b61022b6103313660046111f3565b610956565b6102eb61034436600461140b565b610983565b61022b6103573660046111cd565b610a40565b6102eb61036a3660046112a8565b610a52565b6102eb61037d366004611316565b610c0c565b61022b610ceb565b6102eb6103983660046111cd565b610cf1565b6016546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561042f5780601f106104045761010080835404028352916020019161042f565b820191906000526020600020905b81548152906001019060200180831161041257829003601f168201915b505050505081565b6015545b90565b600e5481565b60055481565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526013602052604090205490565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b03166104e1610d21565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561042f5780601f106104045761010080835404028352916020019161042f565b6105536104ca565b61056f5760405162461bcd60e51b81526004016101e790611af3565b60048054610100600160a81b0319166101006001600160a01b0386160217905581516105a2906002906020850190610dd3565b5080516105b6906003906020840190610dd3565b50600460019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561060557600080fd5b505afa158015610619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061063d91908101906114fa565b6004805460ff191660ff929092169190911790555050670de0b6b3a7640000600e5550565b60095481565b60075481565b33301480610694575061067f6104bb565b6001600160a01b0316336001600160a01b0316145b6106b05760405162461bcd60e51b81526004016101e790611af3565b60045460609061010090046001600160a01b031660005b845181101561073a57818582815181106106dd57fe5b6020026020010151606001906001600160a01b031690816001600160a01b0316815250508361070f576224ea00610712565b60005b62ffffff1685828151811061072357fe5b602090810291909101015160e001526001016106c7565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e9061076b908790600401611a55565b600060405180830381600087803b15801561078557600080fd5b505af1158015610799573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c19190810190611373565b915060005b825181101561083f578281815181106107db57fe5b6020026020010151601060008784815181106107f357fe5b602002602001015160800151876040516020016108119291906119b9565b60408051601f19818403018152918152815160209283012083529082019290925201600020556001016107c6565b5050505050565b3330148061086c57506108576104bb565b6001600160a01b0316336001600160a01b0316145b6108885760405162461bcd60e51b81526004016101e790611af3565b68056bc75e2d631000006108a2878963ffffffff610d2516565b11156108c05760405162461bcd60e51b81526004016101e790611ad3565b68056bc75e2d631000006108da858763ffffffff610d2516565b11156108f85760405162461bcd60e51b81526004016101e790611ad3565b68056bc75e2d63100000831115801561091a575068056bc75e2d631000008211155b6109365760405162461bcd60e51b81526004016101e790611ae3565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b038083166000908152601460209081526040808320938516835292905220545b92915050565b333014806109a957506109946104bb565b6001600160a01b0316336001600160a01b0316145b6109c55760405162461bcd60e51b81526004016101e790611af3565b6000826040516020016109d89190611a05565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001610a209291906119df565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b33301480610a785750610a636104bb565b6001600160a01b0316336001600160a01b0316145b610a945760405162461bcd60e51b81526004016101e790611af3565b828114610ab35760405162461bcd60e51b81526004016101e790611ab3565b604080518481526020808602820101909152606090848015610adf578160200160208202803883390190505b50905060005b84811015610ba2576000868683818110610afb57fe5b9050602002016020610b1091908101906111cd565b858584818110610b1c57fe5b9050602002016020610b3191908101906113ed565b604051602001610b429291906119b9565b6040516020818303038152906040528051906020012060001c90506010600082815260200190815260200160002054838381518110610b7d57fe5b6020908102919091018101919091526000918252601090526040812055600101610ae5565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a90610bd3908490600401611a44565b600060405180830381600087803b158015610bed57600080fd5b505af1158015610c01573d6000803e3d6000fd5b505050505050505050565b610c146104ca565b610c305760405162461bcd60e51b81526004016101e790611af3565b8051825114610c515760405162461bcd60e51b81526004016101e790611b03565b60005b8251811015610cad57818181518110610c6957fe5b602002602001015160126000858481518110610c8157fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002055600101610c54565b507f9bbd2de400810774339120e2f8a2b517ed748595e944529bba8ebabf314d05918282604051610cdf929190611a1f565b60405180910390a15050565b600b5481565b610cf96104ca565b610d155760405162461bcd60e51b81526004016101e790611af3565b610d1e81610d51565b50565b3390565b600082820183811015610d4a5760405162461bcd60e51b81526004016101e790611aa3565b9392505050565b6001600160a01b038116610d775760405162461bcd60e51b81526004016101e790611a93565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e1457805160ff1916838001178555610e41565b82800160010185558215610e41579182015b82811115610e41578251825591602001919060010190610e26565b50610e4d929150610e51565b5090565b61043b91905b80821115610e4d5760008155600101610e57565b803561097d81611c4f565b60008083601f840112610e8857600080fd5b5081356001600160401b03811115610e9f57600080fd5b602083019150836020820283011115610eb757600080fd5b9250929050565b600082601f830112610ecf57600080fd5b8135610ee2610edd82611b47565b611b21565b91508181835260208401935060208101905083856020840282011115610f0757600080fd5b60005b83811015610f335781610f1d8882610e6b565b8452506020928301929190910190600101610f0a565b5050505092915050565b600082601f830112610f4e57600080fd5b8151610f5c610edd82611b47565b91508181835260208401935060208101905083856020840282011115610f8157600080fd5b60005b83811015610f335781610f9788826110a7565b8452506020928301929190910190600101610f84565b600082601f830112610fbe57600080fd5b8135610fcc610edd82611b47565b9150818183526020840193506020810190508385610100840282011115610ff257600080fd5b60005b83811015610f3357816110088882611101565b8452506020909201916101009190910190600101610ff5565b600082601f83011261103257600080fd5b8135611040610edd82611b47565b9150818183526020840193506020810190508385602084028201111561106557600080fd5b60005b83811015610f33578161107b888261109c565b8452506020928301929190910190600101611068565b803561097d81611c63565b803561097d81611c6c565b805161097d81611c6c565b600082601f8301126110c357600080fd5b81356110d1610edd82611b67565b915080825260208301602083018583830111156110ed57600080fd5b6110f8838284611bd5565b50505092915050565b6000610100828403121561111457600080fd5b61111f610100611b21565b9050600061112d848461109c565b825250602061113e84848301611091565b602083015250604061115284828501610e6b565b604083015250606061116684828501610e6b565b606083015250608061117a84828501610e6b565b60808301525060a061118e8482850161109c565b60a08301525060c06111a28482850161109c565b60c08301525060e06111b68482850161109c565b60e08301525092915050565b805161097d81611c75565b6000602082840312156111df57600080fd5b60006111eb8484610e6b565b949350505050565b6000806040838503121561120657600080fd5b60006112128585610e6b565b925050602061122385828601610e6b565b9150509250929050565b60008060006060848603121561124257600080fd5b600061124e8686610e6b565b93505060208401356001600160401b0381111561126a57600080fd5b611276868287016110b2565b92505060408401356001600160401b0381111561129257600080fd5b61129e868287016110b2565b9150509250925092565b600080600080604085870312156112be57600080fd5b84356001600160401b038111156112d457600080fd5b6112e087828801610e76565b945094505060208501356001600160401b038111156112fe57600080fd5b61130a87828801610e76565b95989497509550505050565b6000806040838503121561132957600080fd5b82356001600160401b0381111561133f57600080fd5b61134b85828601610ebe565b92505060208301356001600160401b0381111561136757600080fd5b61122385828601611021565b60006020828403121561138557600080fd5b81516001600160401b0381111561139b57600080fd5b6111eb84828501610f3d565b600080604083850312156113ba57600080fd5b82356001600160401b038111156113d057600080fd5b6113dc85828601610fad565b925050602061122385828601611091565b6000602082840312156113ff57600080fd5b60006111eb8484611091565b6000806040838503121561141e57600080fd5b82356001600160401b0381111561143457600080fd5b6113dc858286016110b2565b60006020828403121561145257600080fd5b60006111eb848461109c565b600080600080600080600060e0888a03121561147957600080fd5b60006114858a8a61109c565b97505060206114968a828b0161109c565b96505060406114a78a828b0161109c565b95505060606114b88a828b0161109c565b94505060806114c98a828b0161109c565b93505060a06114da8a828b0161109c565b92505060c06114eb8a828b0161109c565b91505092959891949750929550565b60006020828403121561150c57600080fd5b60006111eb84846111c2565b6000611524838361154d565b505060200190565b600061152483836116ca565b60006115448383611907565b50506101000190565b61155681611ba6565b82525050565b61155661156882611ba6565b611c0d565b600061157882611b94565b6115828185611b98565b935061158d83611b8e565b8060005b838110156115bb5781516115a58882611518565b97506115b083611b8e565b925050600101611591565b509495945050505050565b60006115d182611b94565b6115db8185611b98565b93506115e683611b8e565b8060005b838110156115bb5781516115fe888261152c565b975061160983611b8e565b9250506001016115ea565b600061161f82611b94565b6116298185611b98565b935061163483611b8e565b8060005b838110156115bb57815161164c8882611538565b975061165783611b8e565b925050600101611638565b600061166d82611b94565b6116778185611b98565b935061168283611b8e565b8060005b838110156115bb57815161169a888261152c565b97506116a583611b8e565b925050600101611686565b61155681611bb1565b6115566116c582611bb1565b611c18565b6115568161043b565b6115566116df82611bb6565b61043b565b60006116ef82611b94565b6116f98185611ba1565b9350611709818560208601611be1565b9290920192915050565b600061171e82611b94565b6117288185611b98565b9350611738818560208601611be1565b61174181611c39565b9093019392505050565b6000611758602683611b98565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006117a0601b83611b98565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006117d9600e83611b98565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000611803603283611b98565b7f4c6f616e546f6b656e53657474696e67734c6f77657241646d696e202d2066618152711b1b189858dac81b9bdd08185b1b1bddd95960721b602082015260400192915050565b6000611857601583611b98565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000611888600f83611b98565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b60006118b3600c83611b98565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006118db601883611b98565b7f6d69736d617463686564206172726179206c656e677468730000000000000000815260200192915050565b805161010083019061191984826116ca565b50602082015161192c60208501826116b0565b50604082015161193f604085018261154d565b506060820151611952606085018261154d565b506080820151611965608085018261154d565b5060a082015161197860a08501826116ca565b5060c082015161198b60c08501826116ca565b5060e082015161199e60e08501826116ca565b50505050565b6115566116df8261043b565b61155681611bcf565b60006119c5828561155c565b6014820191506119d582846116b9565b5060010192915050565b60006119eb82856116d3565b6004820191506119fb82846119a4565b5060200192915050565b6000610d4a82846116e4565b6020810161097d828461154d565b60408082528101611a30818561156d565b905081810360208301526111eb8184611662565b60208082528101610d4a81846115c6565b60208082528101610d4a8184611614565b6020810161097d82846116b0565b6020810161097d82846116ca565b60208082528101610d4a8184611713565b6020808252810161097d8161174b565b6020808252810161097d81611793565b6020808252810161097d816117cc565b6020808252810161097d816117f6565b6020808252810161097d8161184a565b6020808252810161097d8161187b565b6020808252810161097d816118a6565b6020808252810161097d816118ce565b6020810161097d82846119b0565b6040518181016001600160401b0381118282101715611b3f57600080fd5b604052919050565b60006001600160401b03821115611b5d57600080fd5b5060209081020190565b60006001600160401b03821115611b7d57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b600061097d82611bc3565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b82818337506000910152565b60005b83811015611bfc578181015183820152602001611be4565b8381111561199e5750506000910152565b600061097d82611c23565b600061097d82611c2e565b600061097d82611c49565b600061097d82611c43565b601f01601f191690565b60f81b90565b60601b90565b611c5881611ba6565b8114610d1e57600080fd5b611c5881611bb1565b611c588161043b565b611c5881611bcf56fea365627a7a72315820cbdd2e279b2d20be651e448847d6f8d5ff9a0eada105cdb6d26e7f6f4f263d126c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xD97206A4 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xE697D2EE GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0x35C JUMPI DUP1 PUSH4 0xEE60C933 EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x38A JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0xD97206A4 EQ PUSH2 0x310 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0x336 JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0x349 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0xB2B45DF5 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xB2B45DF5 EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x2ED JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x2FD JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2B3 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2D0 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x3291C11A GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x29B JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x2AB JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x3291C11A EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x280 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x1D0806AE GT PUSH2 0x1AD JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x250 JUMPI PUSH2 0x1CF JUMP JUMPDEST DUP1 PUSH4 0x6947A3A EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x223 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F8 PUSH2 0x39D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x205 SWAP2 SWAP1 PUSH2 0x1A11 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x216 PUSH2 0x3AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x205 SWAP2 SWAP1 PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x437 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x205 SWAP2 SWAP1 PUSH2 0x1A74 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x43E JUMP JUMPDEST PUSH2 0x22B PUSH2 0x444 JUMP JUMPDEST PUSH2 0x1F8 PUSH2 0x44A JUMP JUMPDEST PUSH2 0x258 PUSH2 0x459 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x205 SWAP2 SWAP1 PUSH2 0x1B13 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x1440 JUMP JUMPDEST PUSH2 0x462 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x474 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x47A JUMP JUMPDEST PUSH2 0x22B PUSH2 0x296 CALLDATASIZE PUSH1 0x4 PUSH2 0x11CD JUMP JUMPDEST PUSH2 0x480 JUMP JUMPDEST PUSH2 0x1F8 PUSH2 0x49B JUMP JUMPDEST PUSH2 0x22B PUSH2 0x4AF JUMP JUMPDEST PUSH2 0x22B PUSH2 0x4B5 JUMP JUMPDEST PUSH2 0x1F8 PUSH2 0x4BB JUMP JUMPDEST PUSH2 0x2C3 PUSH2 0x4CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x205 SWAP2 SWAP1 PUSH2 0x1A66 JUMP JUMPDEST PUSH2 0x216 PUSH2 0x4F0 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x2E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x122D JUMP JUMPDEST PUSH2 0x54B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH2 0x662 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x668 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x30B CALLDATASIZE PUSH1 0x4 PUSH2 0x13A7 JUMP JUMPDEST PUSH2 0x66E JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x31E CALLDATASIZE PUSH1 0x4 PUSH2 0x145E JUMP JUMPDEST PUSH2 0x846 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x331 CALLDATASIZE PUSH1 0x4 PUSH2 0x11F3 JUMP JUMPDEST PUSH2 0x956 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x344 CALLDATASIZE PUSH1 0x4 PUSH2 0x140B JUMP JUMPDEST PUSH2 0x983 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x357 CALLDATASIZE PUSH1 0x4 PUSH2 0x11CD JUMP JUMPDEST PUSH2 0xA40 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x36A CALLDATASIZE PUSH1 0x4 PUSH2 0x12A8 JUMP JUMPDEST PUSH2 0xA52 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x37D CALLDATASIZE PUSH1 0x4 PUSH2 0x1316 JUMP JUMPDEST PUSH2 0xC0C JUMP JUMPDEST PUSH2 0x22B PUSH2 0xCEB JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x398 CALLDATASIZE PUSH1 0x4 PUSH2 0x11CD JUMP JUMPDEST PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x42F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x404 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x42F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x412 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4E1 PUSH2 0xD21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x42F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x404 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x42F JUMP JUMPDEST PUSH2 0x553 PUSH2 0x4CA JUMP JUMPDEST PUSH2 0x56F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH2 0x5A2 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0xDD3 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x5B6 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xDD3 JUMP JUMPDEST POP PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x619 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x63D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x14FA JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP POP PUSH8 0xDE0B6B3A7640000 PUSH1 0xE SSTORE POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0x694 JUMPI POP PUSH2 0x67F PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x6B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x73A JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x70F JUMPI PUSH3 0x24EA00 PUSH2 0x712 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x723 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x6C7 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x76B SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x785 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x799 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x7C1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1373 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x83F JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x7DB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x7F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x811 SWAP3 SWAP2 SWAP1 PUSH2 0x19B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x7C6 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0x86C JUMPI POP PUSH2 0x857 PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x888 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x8A2 DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0xD25 AND JUMP JUMPDEST GT ISZERO PUSH2 0x8C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AD3 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x8DA DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0xD25 AND JUMP JUMPDEST GT ISZERO PUSH2 0x8F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AD3 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x91A JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x936 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AE3 JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0x9A9 JUMPI POP PUSH2 0x994 PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x9C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x9D8 SWAP2 SWAP1 PUSH2 0x1A05 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA20 SWAP3 SWAP2 SWAP1 PUSH2 0x19DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER ADDRESS EQ DUP1 PUSH2 0xA78 JUMPI POP PUSH2 0xA63 PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xA94 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0xAB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AB3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0xADF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xBA2 JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0xAFB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xB10 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x11CD JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0xB1C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0xB31 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x13ED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB42 SWAP3 SWAP2 SWAP1 PUSH2 0x19B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xB7D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xAE5 JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0xBD3 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1A44 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC14 PUSH2 0x4CA JUMP JUMPDEST PUSH2 0xC30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0xC51 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1B03 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xCAD JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xC69 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x12 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC81 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xC54 JUMP JUMPDEST POP PUSH32 0x9BBD2DE400810774339120E2F8A2B517ED748595E944529BBA8EBABF314D0591 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0xCDF SWAP3 SWAP2 SWAP1 PUSH2 0x1A1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0xCF9 PUSH2 0x4CA JUMP JUMPDEST PUSH2 0xD15 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AF3 JUMP JUMPDEST PUSH2 0xD1E DUP2 PUSH2 0xD51 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xD4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1AA3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD77 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E7 SWAP1 PUSH2 0x1A93 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xE14 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xE41 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xE41 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xE41 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xE26 JUMP JUMPDEST POP PUSH2 0xE4D SWAP3 SWAP2 POP PUSH2 0xE51 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x43B SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xE4D JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xE57 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x97D DUP2 PUSH2 0x1C4F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xE88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xE9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xEB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xECF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE2 PUSH2 0xEDD DUP3 PUSH2 0x1B47 JUMP JUMPDEST PUSH2 0x1B21 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xF07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF33 JUMPI DUP2 PUSH2 0xF1D DUP9 DUP3 PUSH2 0xE6B JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF0A JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF5C PUSH2 0xEDD DUP3 PUSH2 0x1B47 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xF81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF33 JUMPI DUP2 PUSH2 0xF97 DUP9 DUP3 PUSH2 0x10A7 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xFBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFCC PUSH2 0xEDD DUP3 PUSH2 0x1B47 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xFF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF33 JUMPI DUP2 PUSH2 0x1008 DUP9 DUP3 PUSH2 0x1101 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xFF5 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1032 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1040 PUSH2 0xEDD DUP3 PUSH2 0x1B47 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF33 JUMPI DUP2 PUSH2 0x107B DUP9 DUP3 PUSH2 0x109C JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1068 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x97D DUP2 PUSH2 0x1C63 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x97D DUP2 PUSH2 0x1C6C JUMP JUMPDEST DUP1 MLOAD PUSH2 0x97D DUP2 PUSH2 0x1C6C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x10D1 PUSH2 0xEDD DUP3 PUSH2 0x1B67 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x10ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10F8 DUP4 DUP3 DUP5 PUSH2 0x1BD5 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x111F PUSH2 0x100 PUSH2 0x1B21 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x112D DUP5 DUP5 PUSH2 0x109C JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x113E DUP5 DUP5 DUP4 ADD PUSH2 0x1091 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x1152 DUP5 DUP3 DUP6 ADD PUSH2 0xE6B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x1166 DUP5 DUP3 DUP6 ADD PUSH2 0xE6B JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x117A DUP5 DUP3 DUP6 ADD PUSH2 0xE6B JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x118E DUP5 DUP3 DUP6 ADD PUSH2 0x109C JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x11A2 DUP5 DUP3 DUP6 ADD PUSH2 0x109C JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x11B6 DUP5 DUP3 DUP6 ADD PUSH2 0x109C JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x97D DUP2 PUSH2 0x1C75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11EB DUP5 DUP5 PUSH2 0xE6B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1212 DUP6 DUP6 PUSH2 0xE6B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1223 DUP6 DUP3 DUP7 ADD PUSH2 0xE6B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x124E DUP7 DUP7 PUSH2 0xE6B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x126A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1276 DUP7 DUP3 DUP8 ADD PUSH2 0x10B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x129E DUP7 DUP3 DUP8 ADD PUSH2 0x10B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x12BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12E0 DUP8 DUP3 DUP9 ADD PUSH2 0xE76 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x12FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x130A DUP8 DUP3 DUP9 ADD PUSH2 0xE76 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x133F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x134B DUP6 DUP3 DUP7 ADD PUSH2 0xEBE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1223 DUP6 DUP3 DUP7 ADD PUSH2 0x1021 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x139B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11EB DUP5 DUP3 DUP6 ADD PUSH2 0xF3D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x13BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x13D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13DC DUP6 DUP3 DUP7 ADD PUSH2 0xFAD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1223 DUP6 DUP3 DUP7 ADD PUSH2 0x1091 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11EB DUP5 DUP5 PUSH2 0x1091 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x141E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13DC DUP6 DUP3 DUP7 ADD PUSH2 0x10B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11EB DUP5 DUP5 PUSH2 0x109C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x1479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1485 DUP11 DUP11 PUSH2 0x109C JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x1496 DUP11 DUP3 DUP12 ADD PUSH2 0x109C JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x14A7 DUP11 DUP3 DUP12 ADD PUSH2 0x109C JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x14B8 DUP11 DUP3 DUP12 ADD PUSH2 0x109C JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x14C9 DUP11 DUP3 DUP12 ADD PUSH2 0x109C JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x14DA DUP11 DUP3 DUP12 ADD PUSH2 0x109C JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x14EB DUP11 DUP3 DUP12 ADD PUSH2 0x109C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x150C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11EB DUP5 DUP5 PUSH2 0x11C2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1524 DUP4 DUP4 PUSH2 0x154D JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1524 DUP4 DUP4 PUSH2 0x16CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1544 DUP4 DUP4 PUSH2 0x1907 JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1556 DUP2 PUSH2 0x1BA6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1556 PUSH2 0x1568 DUP3 PUSH2 0x1BA6 JUMP JUMPDEST PUSH2 0x1C0D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1578 DUP3 PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x1582 DUP2 DUP6 PUSH2 0x1B98 JUMP JUMPDEST SWAP4 POP PUSH2 0x158D DUP4 PUSH2 0x1B8E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15BB JUMPI DUP2 MLOAD PUSH2 0x15A5 DUP9 DUP3 PUSH2 0x1518 JUMP JUMPDEST SWAP8 POP PUSH2 0x15B0 DUP4 PUSH2 0x1B8E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1591 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15D1 DUP3 PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x15DB DUP2 DUP6 PUSH2 0x1B98 JUMP JUMPDEST SWAP4 POP PUSH2 0x15E6 DUP4 PUSH2 0x1B8E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15BB JUMPI DUP2 MLOAD PUSH2 0x15FE DUP9 DUP3 PUSH2 0x152C JUMP JUMPDEST SWAP8 POP PUSH2 0x1609 DUP4 PUSH2 0x1B8E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x15EA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x161F DUP3 PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x1629 DUP2 DUP6 PUSH2 0x1B98 JUMP JUMPDEST SWAP4 POP PUSH2 0x1634 DUP4 PUSH2 0x1B8E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15BB JUMPI DUP2 MLOAD PUSH2 0x164C DUP9 DUP3 PUSH2 0x1538 JUMP JUMPDEST SWAP8 POP PUSH2 0x1657 DUP4 PUSH2 0x1B8E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1638 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x166D DUP3 PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x1677 DUP2 DUP6 PUSH2 0x1B98 JUMP JUMPDEST SWAP4 POP PUSH2 0x1682 DUP4 PUSH2 0x1B8E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15BB JUMPI DUP2 MLOAD PUSH2 0x169A DUP9 DUP3 PUSH2 0x152C JUMP JUMPDEST SWAP8 POP PUSH2 0x16A5 DUP4 PUSH2 0x1B8E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1686 JUMP JUMPDEST PUSH2 0x1556 DUP2 PUSH2 0x1BB1 JUMP JUMPDEST PUSH2 0x1556 PUSH2 0x16C5 DUP3 PUSH2 0x1BB1 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1556 DUP2 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1556 PUSH2 0x16DF DUP3 PUSH2 0x1BB6 JUMP JUMPDEST PUSH2 0x43B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16EF DUP3 PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x16F9 DUP2 DUP6 PUSH2 0x1BA1 JUMP JUMPDEST SWAP4 POP PUSH2 0x1709 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1BE1 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x171E DUP3 PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x1728 DUP2 DUP6 PUSH2 0x1B98 JUMP JUMPDEST SWAP4 POP PUSH2 0x1738 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1BE1 JUMP JUMPDEST PUSH2 0x1741 DUP2 PUSH2 0x1C39 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1758 PUSH1 0x26 DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17A0 PUSH1 0x1B DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17D9 PUSH1 0xE DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1803 PUSH1 0x32 DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH32 0x4C6F616E546F6B656E53657474696E67734C6F77657241646D696E202D206661 DUP2 MSTORE PUSH18 0x1B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x72 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1857 PUSH1 0x15 DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1888 PUSH1 0xF DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18B3 PUSH1 0xC DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18DB PUSH1 0x18 DUP4 PUSH2 0x1B98 JUMP JUMPDEST PUSH32 0x6D69736D617463686564206172726179206C656E677468730000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x1919 DUP5 DUP3 PUSH2 0x16CA JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x192C PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x16B0 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x193F PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x154D JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x1952 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x154D JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x1965 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x154D JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x1978 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x16CA JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x198B PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x16CA JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x199E PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x16CA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1556 PUSH2 0x16DF DUP3 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1556 DUP2 PUSH2 0x1BCF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19C5 DUP3 DUP6 PUSH2 0x155C JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x19D5 DUP3 DUP5 PUSH2 0x16B9 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19EB DUP3 DUP6 PUSH2 0x16D3 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x19FB DUP3 DUP5 PUSH2 0x19A4 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD4A DUP3 DUP5 PUSH2 0x16E4 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x97D DUP3 DUP5 PUSH2 0x154D JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1A30 DUP2 DUP6 PUSH2 0x156D JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x11EB DUP2 DUP5 PUSH2 0x1662 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD4A DUP2 DUP5 PUSH2 0x15C6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD4A DUP2 DUP5 PUSH2 0x1614 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x97D DUP3 DUP5 PUSH2 0x16B0 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x97D DUP3 DUP5 PUSH2 0x16CA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD4A DUP2 DUP5 PUSH2 0x1713 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x174B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x1793 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x17F6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x184A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x187B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x18A6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x97D DUP2 PUSH2 0x18CE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x97D DUP3 DUP5 PUSH2 0x19B0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1B3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x1B5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x1B7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97D DUP3 PUSH2 0x1BC3 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BFC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1BE4 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x199E JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97D DUP3 PUSH2 0x1C23 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97D DUP3 PUSH2 0x1C2E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97D DUP3 PUSH2 0x1C49 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97D DUP3 PUSH2 0x1C43 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x1C58 DUP2 PUSH2 0x1BA6 JUMP JUMPDEST DUP2 EQ PUSH2 0xD1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C58 DUP2 PUSH2 0x1BB1 JUMP JUMPDEST PUSH2 0x1C58 DUP2 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1C58 DUP2 PUSH2 0x1BCF JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xCB 0xDD 0x2E 0x27 SWAP12 0x2D KECCAK256 0xBE PUSH6 0x1E448847D6F8 0xD5 SELFDESTRUCT SWAP11 0xE 0xAD LOG1 SDIV 0xCD 0xB6 0xD2 PUSH15 0x7F6F4F263D126C6578706572696D65 PUSH15 0x74616CF564736F6C63430005110040 ",
              "sourceMap": "350:4381:122:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;350:4381:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1458:60;;-1:-1:-1;;;1458:60:122;;;;;;;;;;;;;;;;640:36;;;:::i;:::-;;;;;;;;;;;;;;;;1977:18:3;;;:::i;:::-;;;;;;;;1778:80:1;;;:::i;:::-;;;;;;;;2441:27:3;;;:::i;2150:23::-;;;:::i;679:32:122:-;;;:::i;2021:21:3:-;;;:::i;:::-;;;;;;;;2633:48;;;;;;;;;:::i;2176:29::-;;;:::i;2310:24::-;;;:::i;2035:96:1:-;;;;;;;;;:::i;2115:31:3:-;;;:::i;2407:::-;;;:::i;2241:36::-;;;:::i;851:68:142:-;;;:::i;1134:83::-;;;:::i;:::-;;;;;;;;1998:20:3;;;:::i;1140:291:122:-;;;;;;;;;:::i;:::-;;2281:26:3;;;:::i;2208:30::-;;;:::i;1525:744:122:-;;;;;;;;;:::i;2995:813::-;;;;;;;;;:::i;2464:123:1:-;;;;;;;;;:::i;3811:408:122:-;;;;;;;;;:::i;2854:51:3:-;;;;;;;;;:::i;2272:587:122:-;;;;;;;;;:::i;4401:328::-;;;;;;;;;:::i;2337:27:3:-;;;:::i;1351:98:142:-;;;;;;;;;:::i;640:36:122:-;;;-1:-1:-1;;;;;640:36:122;;:::o;1977:18:3:-;;;;;;;;;;;;;;-1:-1:-1;;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1778:80:1:-;1842:12;;1778:80;;:::o;2441:27:3:-;;;;:::o;2150:23::-;;;;:::o;679:32:122:-;;;-1:-1:-1;;;;;679:32:122;;:::o;2021:21:3:-;;;;;;:::o;2633:48::-;;;;;;;;;;;;;:::o;2176:29::-;;;;:::o;2310:24::-;;;;:::o;2035:96:1:-;-1:-1:-1;;;;;2111:16:1;2091:7;2111:16;;;:8;:16;;;;;;;2035:96::o;2115:31:3:-;;;;;;-1:-1:-1;;;;;2115:31:3;;:::o;2407:::-;;;;:::o;2241:36::-;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1998:20:3:-;;;;;;;;;;;;;;;-1:-1:-1;;1998:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1140:291:122;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1255:16:122;:36;;-1:-1:-1;;;;;;1255:36:122;;-1:-1:-1;;;;;1255:36:122;;;;;;1296:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;1312:16:122;;;;:6;;:16;;;;;:::i;:::-;;1350;;;;;;;;;-1:-1:-1;;;;;1350:16:122;-1:-1:-1;;;;;1343:33:122;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1343:35:122;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1343:35:122;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1343:35:122;;;;;;;;;1332:8;:46;;-1:-1:-1;;1332:46:122;;;;;;;;;;;;-1:-1:-1;;1398:6:122;1383:12;:21;-1:-1:-1;1140:291:122:o;2281:26:3:-;;;;:::o;2208:30::-;;;;:::o;1525:744:122:-;977:10;999:4;977:27;;:52;;;1022:7;:5;:7::i;:::-;-1:-1:-1;;;;;1008:21:122;:10;-1:-1:-1;;;;;1008:21:122;;977:52;969:77;;;;-1:-1:-1;;;969:77:122;;;;;;;;;1710:16;;1645:33;;1710:16;;;-1:-1:-1;;;;;1710:16:122;1682:25;1731:174;1755:14;:21;1751:1;:25;1731:174;;;1818:17;1788:14;1803:1;1788:17;;;;;;;;;;;;;;:27;;:47;-1:-1:-1;;;;;1788:47:122;;;-1:-1:-1;;;;;1788:47:122;;;;;1872:14;:28;;1893:7;1872:28;;;1889:1;1872:28;1840:60;;:14;1855:1;1840:17;;;;;;;;;;;;;;;;;;:29;;:60;1778:3;;1731:174;;;-1:-1:-1;1949:21:122;;1928:75;;-1:-1:-1;;;1928:75:122;;-1:-1:-1;;;;;1949:21:122;;;;1928:59;;:75;;1988:14;;1928:75;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1928:75:122;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1928:75:122;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1928:75:122;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;1928:75:122;;;;;;;;;1909:94;-1:-1:-1;2012:9:122;2007:259;2031:16;:23;2027:1;:27;2007:259;;;2242:16;2259:1;2242:19;;;;;;;;;;;;;;2066:13;:173;2141:14;2156:1;2141:17;;;;;;;;;;;;;;:33;;;2183:14;2116:105;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2116:105:122;;;2099:129;;49:4:-1;2099:129:122;;;;2066:173;;;;;;;;;;2085:149;2066:173;:195;2056:3;;2007:259;;;;1050:1;;1525:744;;:::o;2995:813::-;977:10;999:4;977:27;;:52;;;1022:7;:5;:7::i;:::-;-1:-1:-1;;;;;1008:21:122;:10;-1:-1:-1;;;;;1008:21:122;;977:52;969:77;;;;-1:-1:-1;;;969:77:122;;;;;;;;;1875:6:3;3232:30:122;:15;3252:9;3232:30;:19;:30;:::i;:::-;:55;;3224:89;;;;-1:-1:-1;;;3224:89:122;;;;;;;;;1875:6:3;3325:44:122;:22;3352:16;3325:44;:26;:44;:::i;:::-;:69;;3317:103;;;;-1:-1:-1;;;3317:103:122;;;;;;;;;1875:6:3;3433:12:122;:37;;:76;;;;;1875:6:3;3474:10:122;:35;;3433:76;3425:104;;;;-1:-1:-1;;;3425:104:122;;;;;;;;;3534:8;:20;;;;3558:14;:32;;;;3594:15;:34;;;;3632:21;:46;3683:11;:26;3725:9;:22;3763:12;:28;2995:813::o;2464:123:1:-;-1:-1:-1;;;;;2558:15:1;;;2538:7;2558:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;2464:123;;;;;:::o;3811:408:122:-;977:10;999:4;977:27;;:52;;;1022:7;:5;:7::i;:::-;-1:-1:-1;;;;;1008:21:122;:10;-1:-1:-1;;;;;1008:21:122;;977:52;969:77;;;;-1:-1:-1;;;969:77:122;;;;;;;;;3980:12;4070:6;4053:24;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4053:24:122;;;4043:35;;;;;;4094:66;4013:154;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4013:154:122;;;3998:174;;;;;;3980:192;;4203:8;4197:4;4190:22;4185:31;3811:408;;:::o;2854:51:3:-;;;;;;;;;;;;;:::o;2272:587:122:-;977:10;999:4;977:27;;:52;;;1022:7;:5;:7::i;:::-;-1:-1:-1;;;;;1008:21:122;:10;-1:-1:-1;;;;;1008:21:122;;977:52;969:77;;;;-1:-1:-1;;;969:77:122;;;;;;;;;2398:47;;;2390:74;;;;-1:-1:-1;;;2390:74:122;;;;;;;;;2505:38;;;;;;;;;;;;;;;;2469:33;;2519:16;2505:38;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;2505:38:122;-1:-1:-1;2469:74:122;-1:-1:-1;2552:9:122;2547:225;2567:27;;;2547:225;;;2606:10;2654:16;;2671:1;2654:19;;;;;;;;;;;;;;;;;;;;;;2675:13;;2689:1;2675:16;;;;;;;;;;;;;;;;;;;;;;2637:55;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2637:55:122;;;2627:66;;;;;;2619:75;;2606:88;;2721:13;:17;2735:2;2721:17;;;;;;;;;;;;2699:16;2716:1;2699:19;;;;;;;;;;;;;;;;;;:39;;;;2750:17;;;;:13;:17;;;;;2743:24;2596:3;;2547:225;;;-1:-1:-1;2797:21:122;;2776:79;;-1:-1:-1;;;2776:79:122;;-1:-1:-1;;;;;2797:21:122;;;;2776:61;;:79;;2838:16;;2776:79;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:79:122;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2776:79:122;;;;1050:1;2272:587;;;;:::o;4401:328::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;4533:6:122;:13;4513:9;:16;:33;4505:70;;;;-1:-1:-1;;;4505:70:122;;;;;;;;;4584:9;4579:99;4603:9;:16;4599:1;:20;4579:99;;;4664:6;4671:1;4664:9;;;;;;;;;;;;;;4631:16;:30;4648:9;4658:1;4648:12;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4631:30:122;;;;;;;;;;;-1:-1:-1;4631:30:122;:42;4621:3;;4579:99;;;;4686:39;4707:9;4718:6;4686:39;;;;;;;;;;;;;;;;4401:328;;:::o;2337:27:3:-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;350:4381:122:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;350:4381:122;;;-1:-1:-1;350:4381:122;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;5:130:-1;72:20;;97:33;72:20;97:33;;160:352;;;290:3;283:4;275:6;271:17;267:27;257:2;;308:1;305;298:12;257:2;-1:-1;328:20;;-1:-1;;;;;357:30;;354:2;;;400:1;397;390:12;354:2;434:4;426:6;422:17;410:29;;485:3;477:4;469:6;465:17;455:8;451:32;448:41;445:2;;;502:1;499;492:12;445:2;250:262;;;;;;538:707;;655:3;648:4;640:6;636:17;632:27;622:2;;673:1;670;663:12;622:2;710:6;697:20;732:80;747:64;804:6;747:64;;;732:80;;;723:89;;829:5;854:6;847:5;840:21;884:4;876:6;872:17;862:27;;906:4;901:3;897:14;890:21;;959:6;1006:3;998:4;990:6;986:17;981:3;977:27;974:36;971:2;;;1023:1;1020;1013:12;971:2;1048:1;1033:206;1058:6;1055:1;1052:13;1033:206;;;1116:3;1138:37;1171:3;1159:10;1138:37;;;1126:50;;-1:-1;1199:4;1190:14;;;;1218;;;;;1080:1;1073:9;1033:206;;;1037:14;615:630;;;;;;;;1643:722;;1771:3;1764:4;1756:6;1752:17;1748:27;1738:2;;1789:1;1786;1779:12;1738:2;1819:6;1813:13;1841:80;1856:64;1913:6;1856:64;;1841:80;1832:89;;1938:5;1963:6;1956:5;1949:21;1993:4;1985:6;1981:17;1971:27;;2015:4;2010:3;2006:14;1999:21;;2068:6;2115:3;2107:4;2099:6;2095:17;2090:3;2086:27;2083:36;2080:2;;;2132:1;2129;2122:12;2080:2;2157:1;2142:217;2167:6;2164:1;2161:13;2142:217;;;2225:3;2247:48;2291:3;2279:10;2247:48;;;2235:61;;-1:-1;2319:4;2310:14;;;;2338;;;;;2189:1;2182:9;2142:217;;2418:783;;2559:3;2552:4;2544:6;2540:17;2536:27;2526:2;;2577:1;2574;2567:12;2526:2;2614:6;2601:20;2636:104;2651:88;2732:6;2651:88;;2636:104;2627:113;;2757:5;2782:6;2775:5;2768:21;2812:4;2804:6;2800:17;2790:27;;2834:4;2829:3;2825:14;2818:21;;2887:6;2936:3;2926:6;2918;2914:19;2909:3;2905:29;2902:38;2899:2;;;2953:1;2950;2943:12;2899:2;2978:1;2963:232;2988:6;2985:1;2982:13;2963:232;;;3046:3;3068:61;3125:3;3113:10;3068:61;;;3056:74;;-1:-1;3153:4;3144:14;;;;3181:6;3172:16;;;;;3010:1;3003:9;2963:232;;3227:707;;3344:3;3337:4;3329:6;3325:17;3321:27;3311:2;;3362:1;3359;3352:12;3311:2;3399:6;3386:20;3421:80;3436:64;3493:6;3436:64;;3421:80;3412:89;;3518:5;3543:6;3536:5;3529:21;3573:4;3565:6;3561:17;3551:27;;3595:4;3590:3;3586:14;3579:21;;3648:6;3695:3;3687:4;3679:6;3675:17;3670:3;3666:27;3663:36;3660:2;;;3712:1;3709;3702:12;3660:2;3737:1;3722:206;3747:6;3744:1;3741:13;3722:206;;;3805:3;3827:37;3860:3;3848:10;3827:37;;;3815:50;;-1:-1;3888:4;3879:14;;;;3907;;;;;3769:1;3762:9;3722:206;;3942:124;4006:20;;4031:30;4006:20;4031:30;;4073:130;4140:20;;4165:33;4140:20;4165:33;;4210:134;4288:13;;4306:33;4288:13;4306:33;;4352:442;;4454:3;4447:4;4439:6;4435:17;4431:27;4421:2;;4472:1;4469;4462:12;4421:2;4509:6;4496:20;4531:65;4546:49;4588:6;4546:49;;4531:65;4522:74;;4616:6;4609:5;4602:21;4652:4;4644:6;4640:17;4685:4;4678:5;4674:16;4720:3;4711:6;4706:3;4702:16;4699:25;4696:2;;;4737:1;4734;4727:12;4696:2;4747:41;4781:6;4776:3;4771;4747:41;;;4414:380;;;;;;;;4843:1384;;4956:6;4944:9;4939:3;4935:19;4931:32;4928:2;;;4976:1;4973;4966:12;4928:2;4994:22;5009:6;4994:22;;;4985:31;-1:-1;5064:1;5096:49;5141:3;5121:9;5096:49;;;5071:75;;-1:-1;5209:2;5242:46;5284:3;5260:22;;;5242:46;;;5235:4;5228:5;5224:16;5217:72;5167:133;5351:2;5384:49;5429:3;5420:6;5409:9;5405:22;5384:49;;;5377:4;5370:5;5366:16;5359:75;5310:135;5500:2;5533:49;5578:3;5569:6;5558:9;5554:22;5533:49;;;5526:4;5519:5;5515:16;5508:75;5455:139;5655:3;5689:49;5734:3;5725:6;5714:9;5710:22;5689:49;;;5682:4;5675:5;5671:16;5664:75;5604:146;5812:3;5846:49;5891:3;5882:6;5871:9;5867:22;5846:49;;;5839:4;5832:5;5828:16;5821:75;5760:147;5970:3;6004:49;6049:3;6040:6;6029:9;6025:22;6004:49;;;5997:4;5990:5;5986:16;5979:75;5917:148;6122:3;6156:49;6201:3;6192:6;6181:9;6177:22;6156:49;;;6149:4;6142:5;6138:16;6131:75;6075:142;4922:1305;;;;;6371:130;6447:13;;6465:31;6447:13;6465:31;;6508:241;;6612:2;6600:9;6591:7;6587:23;6583:32;6580:2;;;6628:1;6625;6618:12;6580:2;6663:1;6680:53;6725:7;6705:9;6680:53;;;6670:63;6574:175;-1:-1;;;;6574:175;6756:366;;;6877:2;6865:9;6856:7;6852:23;6848:32;6845:2;;;6893:1;6890;6883:12;6845:2;6928:1;6945:53;6990:7;6970:9;6945:53;;;6935:63;;6907:97;7035:2;7053:53;7098:7;7089:6;7078:9;7074:22;7053:53;;;7043:63;;7014:98;6839:283;;;;;;7129:703;;;;7287:2;7275:9;7266:7;7262:23;7258:32;7255:2;;;7303:1;7300;7293:12;7255:2;7338:1;7355:53;7400:7;7380:9;7355:53;;;7345:63;;7317:97;7473:2;7462:9;7458:18;7445:32;-1:-1;;;;;7489:6;7486:30;7483:2;;;7529:1;7526;7519:12;7483:2;7549:63;7604:7;7595:6;7584:9;7580:22;7549:63;;;7539:73;;7424:194;7677:2;7666:9;7662:18;7649:32;-1:-1;;;;;7693:6;7690:30;7687:2;;;7733:1;7730;7723:12;7687:2;7753:63;7808:7;7799:6;7788:9;7784:22;7753:63;;;7743:73;;7628:194;7249:583;;;;;;7839:672;;;;;8027:2;8015:9;8006:7;8002:23;7998:32;7995:2;;;8043:1;8040;8033:12;7995:2;8078:31;;-1:-1;;;;;8118:30;;8115:2;;;8161:1;8158;8151:12;8115:2;8189:80;8261:7;8252:6;8241:9;8237:22;8189:80;;;8179:90;;;;8057:218;8334:2;8323:9;8319:18;8306:32;-1:-1;;;;;8350:6;8347:30;8344:2;;;8390:1;8387;8380:12;8344:2;8418:77;8487:7;8478:6;8467:9;8463:22;8418:77;;;7989:522;;;;-1:-1;8408:87;-1:-1;;;;7989:522;8518:638;;;8689:2;8677:9;8668:7;8664:23;8660:32;8657:2;;;8705:1;8702;8695:12;8657:2;8740:31;;-1:-1;;;;;8780:30;;8777:2;;;8823:1;8820;8813:12;8777:2;8843:78;8913:7;8904:6;8893:9;8889:22;8843:78;;;8833:88;;8719:208;8986:2;8975:9;8971:18;8958:32;-1:-1;;;;;9002:6;8999:30;8996:2;;;9042:1;9039;9032:12;8996:2;9062:78;9132:7;9123:6;9112:9;9108:22;9062:78;;9163:392;;9303:2;9291:9;9282:7;9278:23;9274:32;9271:2;;;9319:1;9316;9309:12;9271:2;9354:24;;-1:-1;;;;;9387:30;;9384:2;;;9430:1;9427;9420:12;9384:2;9450:89;9531:7;9522:6;9511:9;9507:22;9450:89;;9562:544;;;9729:2;9717:9;9708:7;9704:23;9700:32;9697:2;;;9745:1;9742;9735:12;9697:2;9780:31;;-1:-1;;;;;9820:30;;9817:2;;;9863:1;9860;9853:12;9817:2;9883:102;9977:7;9968:6;9957:9;9953:22;9883:102;;;9873:112;;9759:232;10022:2;10040:50;10082:7;10073:6;10062:9;10058:22;10040:50;;10113:235;;10214:2;10202:9;10193:7;10189:23;10185:32;10182:2;;;10230:1;10227;10220:12;10182:2;10265:1;10282:50;10324:7;10304:9;10282:50;;10355:466;;;10483:2;10471:9;10462:7;10458:23;10454:32;10451:2;;;10499:1;10496;10489:12;10451:2;10534:31;;-1:-1;;;;;10574:30;;10571:2;;;10617:1;10614;10607:12;10571:2;10637:63;10692:7;10683:6;10672:9;10668:22;10637:63;;10828:241;;10932:2;10920:9;10911:7;10907:23;10903:32;10900:2;;;10948:1;10945;10938:12;10900:2;10983:1;11000:53;11045:7;11025:9;11000:53;;11076:995;;;;;;;;11282:3;11270:9;11261:7;11257:23;11253:33;11250:2;;;11299:1;11296;11289:12;11250:2;11334:1;11351:53;11396:7;11376:9;11351:53;;;11341:63;;11313:97;11441:2;11459:53;11504:7;11495:6;11484:9;11480:22;11459:53;;;11449:63;;11420:98;11549:2;11567:53;11612:7;11603:6;11592:9;11588:22;11567:53;;;11557:63;;11528:98;11657:2;11675:53;11720:7;11711:6;11700:9;11696:22;11675:53;;;11665:63;;11636:98;11765:3;11784:53;11829:7;11820:6;11809:9;11805:22;11784:53;;;11774:63;;11744:99;11874:3;11893:53;11938:7;11929:6;11918:9;11914:22;11893:53;;;11883:63;;11853:99;11983:3;12002:53;12047:7;12038:6;12027:9;12023:22;12002:53;;;11992:63;;11962:99;11244:827;;;;;;;;;;;12078:259;;12191:2;12179:9;12170:7;12166:23;12162:32;12159:2;;;12207:1;12204;12197:12;12159:2;12242:1;12259:62;12313:7;12293:9;12259:62;;12345:173;;12432:46;12474:3;12466:6;12432:46;;;-1:-1;;12507:4;12498:14;;12425:93;12527:173;;12614:46;12656:3;12648:6;12614:46;;12709:275;;12844:98;12938:3;12930:6;12844:98;;;-1:-1;;12971:6;12962:16;;12837:147;13174:103;13247:24;13265:5;13247:24;;;13242:3;13235:37;13229:48;;;13404:152;13505:45;13525:24;13543:5;13525:24;;;13505:45;;13594:690;;13739:54;13787:5;13739:54;;;13806:86;13885:6;13880:3;13806:86;;;13799:93;;13913:56;13963:5;13913:56;;;13989:7;14017:1;14002:260;14027:6;14024:1;14021:13;14002:260;;;14094:6;14088:13;14115:63;14174:3;14159:13;14115:63;;;14108:70;;14195:60;14248:6;14195:60;;;14185:70;-1:-1;;14049:1;14042:9;14002:260;;;-1:-1;14275:3;;13718:566;-1:-1;;;;;13718:566;14323:690;;14468:54;14516:5;14468:54;;;14535:86;14614:6;14609:3;14535:86;;;14528:93;;14642:56;14692:5;14642:56;;;14718:7;14746:1;14731:260;14756:6;14753:1;14750:13;14731:260;;;14823:6;14817:13;14844:63;14903:3;14888:13;14844:63;;;14837:70;;14924:60;14977:6;14924:60;;;14914:70;-1:-1;;14778:1;14771:9;14731:260;;15106:882;;15299:78;15371:5;15299:78;;;15390:110;15493:6;15488:3;15390:110;;;15383:117;;15521:80;15595:5;15521:80;;;15621:7;15649:1;15634:332;15659:6;15656:1;15653:13;15634:332;;;15726:6;15720:13;15747:111;15854:3;15839:13;15747:111;;;15740:118;;15875:84;15952:6;15875:84;;;15865:94;-1:-1;;15681:1;15674:9;15634:332;;16027:690;;16172:54;16220:5;16172:54;;;16239:86;16318:6;16313:3;16239:86;;;16232:93;;16346:56;16396:5;16346:56;;;16422:7;16450:1;16435:260;16460:6;16457:1;16454:13;16435:260;;;16527:6;16521:13;16548:63;16607:3;16592:13;16548:63;;;16541:70;;16628:60;16681:6;16628:60;;;16618:70;-1:-1;;16482:1;16475:9;16435:260;;16725:94;16792:21;16807:5;16792:21;;16937:140;17032:39;17049:21;17064:5;17049:21;;;17032:39;;17084:103;17157:24;17175:5;17157:24;;17314:148;17413:43;17432:23;17449:5;17432:23;;;17413:43;;17469:360;;17599:39;17632:5;17599:39;;;17650:89;17732:6;17727:3;17650:89;;;17643:96;;17744:52;17789:6;17784:3;17777:4;17770:5;17766:16;17744:52;;;17808:16;;;;;17579:250;-1:-1;;17579:250;17836:339;;17944:35;17973:5;17944:35;;;17991:71;18055:6;18050:3;17991:71;;;17984:78;;18067:52;18112:6;18107:3;18100:4;18093:5;18089:16;18067:52;;;18140:29;18162:6;18140:29;;;18131:39;;;;17924:251;-1:-1;;;17924:251;18183:375;;18343:67;18407:2;18402:3;18343:67;;;18443:34;18423:55;;-1:-1;;;18507:2;18498:12;;18491:30;18549:2;18540:12;;18329:229;-1:-1;;18329:229;18567:327;;18727:67;18791:2;18786:3;18727:67;;;18827:29;18807:50;;18885:2;18876:12;;18713:181;-1:-1;;18713:181;18903:314;;19063:67;19127:2;19122:3;19063:67;;;-1:-1;;;19143:37;;19208:2;19199:12;;19049:168;-1:-1;;19049:168;19226:387;;19386:67;19450:2;19445:3;19386:67;;;19486:34;19466:55;;-1:-1;;;19550:2;19541:12;;19534:42;19604:2;19595:12;;19372:241;-1:-1;;19372:241;19622:321;;19782:67;19846:2;19841:3;19782:67;;;-1:-1;;;19862:44;;19934:2;19925:12;;19768:175;-1:-1;;19768:175;19952:315;;20112:67;20176:2;20171:3;20112:67;;;-1:-1;;;20192:38;;20258:2;20249:12;;20098:169;-1:-1;;20098:169;20276:312;;20436:67;20500:2;20495:3;20436:67;;;-1:-1;;;20516:35;;20579:2;20570:12;;20422:166;-1:-1;;20422:166;20597:324;;20757:67;20821:2;20816:3;20757:67;;;20857:26;20837:47;;20912:2;20903:12;;20743:178;-1:-1;;20743:178;21008:1437;21209:23;;21143:6;21134:16;;;21238:63;21138:3;21209:23;21238:63;;;21165:142;21382:4;21375:5;21371:16;21365:23;21394:57;21445:4;21440:3;21436:14;21422:12;21394:57;;;21317:140;21531:4;21524:5;21520:16;21514:23;21543:63;21600:4;21595:3;21591:14;21577:12;21543:63;;;21467:145;21690:4;21683:5;21679:16;21673:23;21702:63;21759:4;21754:3;21750:14;21736:12;21702:63;;;21622:149;21855:4;21848:5;21844:16;21838:23;21867:63;21924:4;21919:3;21915:14;21901:12;21867:63;;;21781:155;22021:4;22014:5;22010:16;22004:23;22033:63;22090:4;22085:3;22081:14;22067:12;22033:63;;;21946:156;22188:4;22181:5;22177:16;22171:23;22200:63;22257:4;22252:3;22248:14;22234:12;22200:63;;;22112:157;22349:4;22342:5;22338:16;22332:23;22361:63;22418:4;22413:3;22409:14;22395:12;22361:63;;;22279:151;21116:1329;;;;22682:152;22783:45;22803:24;22821:5;22803:24;;22841:107;22920:22;22936:5;22920:22;;22955:370;;23096:75;23167:3;23158:6;23096:75;;;23193:2;23188:3;23184:12;23177:19;;23207:69;23272:3;23263:6;23207:69;;;-1:-1;23298:1;23289:11;;23084:241;-1:-1;;23084:241;23332:378;;23477:73;23546:3;23537:6;23477:73;;;23572:1;23567:3;23563:11;23556:18;;23585:75;23656:3;23647:6;23585:75;;;-1:-1;23682:2;23673:12;;23465:245;-1:-1;;23465:245;23717:266;;23863:95;23954:3;23945:6;23863:95;;23990:213;24108:2;24093:18;;24122:71;24097:9;24166:6;24122:71;;24210:620;24456:2;24470:47;;;24441:18;;24531:108;24441:18;24625:6;24531:108;;;24523:116;;24687:9;24681:4;24677:20;24672:2;24661:9;24657:18;24650:48;24712:108;24815:4;24806:6;24712:108;;24837:361;25005:2;25019:47;;;24990:18;;25080:108;24990:18;25174:6;25080:108;;25205:457;25421:2;25435:47;;;25406:18;;25496:156;25406:18;25638:6;25496:156;;25669:201;25781:2;25766:18;;25795:65;25770:9;25833:6;25795:65;;25877:213;25995:2;25980:18;;26009:71;25984:9;26053:6;26009:71;;26097:293;26231:2;26245:47;;;26216:18;;26306:74;26216:18;26366:6;26306:74;;26397:407;26588:2;26602:47;;;26573:18;;26663:131;26573:18;26663:131;;26811:407;27002:2;27016:47;;;26987:18;;27077:131;26987:18;27077:131;;27225:407;27416:2;27430:47;;;27401:18;;27491:131;27401:18;27491:131;;27639:407;27830:2;27844:47;;;27815:18;;27905:131;27815:18;27905:131;;28053:407;28244:2;28258:47;;;28229:18;;28319:131;28229:18;28319:131;;28467:407;28658:2;28672:47;;;28643:18;;28733:131;28643:18;28733:131;;28881:407;29072:2;29086:47;;;29057:18;;29147:131;29057:18;29147:131;;29295:407;29486:2;29500:47;;;29471:18;;29561:131;29471:18;29561:131;;29929:205;30043:2;30028:18;;30057:67;30032:9;30097:6;30057:67;;30141:256;30203:2;30197:9;30229:17;;;-1:-1;;;;;30289:34;;30325:22;;;30286:62;30283:2;;;30361:1;30358;30351:12;30283:2;30377;30370:22;30181:216;;-1:-1;30181:216;30404:304;;-1:-1;;;;;30555:6;30552:30;30549:2;;;30595:1;30592;30585:12;30549:2;-1:-1;30630:4;30618:17;;;30683:15;;30486:222;31672:322;;-1:-1;;;;;31808:6;31805:30;31802:2;;;31848:1;31845;31838:12;31802:2;-1:-1;31979:4;31915;31892:17;;;;-1:-1;;31888:33;31969:15;;31739:255;32001:151;32125:4;32116:14;;32073:79;32657:137;32760:12;;32731:63;33996:178;34114:19;;;34163:4;34154:14;;34107:67;34940:145;35076:3;35054:31;-1:-1;35054:31;35093:91;;35155:24;35173:5;35155:24;;35191:85;35257:13;35250:21;;35233:43;35362:144;-1:-1;;;;;;35423:78;;35406:100;35513:121;-1:-1;;;;;35575:54;;35558:76;35720:81;35791:4;35780:16;;35763:38;35809:145;35890:6;35885:3;35880;35867:30;-1:-1;35946:1;35928:16;;35921:27;35860:94;35963:268;36028:1;36035:101;36049:6;36046:1;36043:13;36035:101;;;36116:11;;;36110:18;36097:11;;;36090:39;36071:2;36064:10;36035:101;;;36151:6;36148:1;36145:13;36142:2;;;-1:-1;;36216:1;36198:16;;36191:27;36012:219;36239:95;;36303:26;36323:5;36303:26;;36341:90;;36402:24;36420:5;36402:24;;36518:89;;36582:20;36596:5;36582:20;;36695:88;;36757:21;36772:5;36757:21;;36790:97;36878:2;36858:14;-1:-1;;36854:28;;36838:49;36895:96;36970:3;36966:15;;36938:53;36999:94;37073:2;37069:14;;37041:52;37101:117;37170:24;37188:5;37170:24;;;37163:5;37160:35;37150:2;;37209:1;37206;37199:12;37225:111;37291:21;37306:5;37291:21;;37343:117;37412:24;37430:5;37412:24;;37591:113;37658:22;37674:5;37658:22;"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "balanceOf(address)": "70a08231",
              "baseRate()": "1f68f20a",
              "checkpointSupply()": "7b7933b4",
              "decimals()": "313ce567",
              "disableLoanParams(address[],bool[])": "e697d2ee",
              "init(address,string,string)": "b2b45df5",
              "initialPrice()": "1d0806ae",
              "isOwner()": "8f32d59b",
              "kinkLevel()": "56e07d70",
              "loanParamsIds(uint256)": "3291c11a",
              "loanTokenAddress()": "797bf385",
              "lowUtilBaseRate()": "d759dbeb",
              "lowUtilRateMultiplier()": "7e37c08c",
              "maxScaleRate()": "ef2b0b39",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "rateMultiplier()": "330691ac",
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "d97206a4",
              "setTransactionLimits(address[],uint256[])": "ee60c933",
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": "d8f06c83",
              "sovrynContractAddress()": "06947a3a",
              "symbol()": "95d89b41",
              "targetLevel()": "ba0e43bf",
              "toggleFunctionPause(string,bool)": "e3cded61",
              "totalSupply()": "18160ddd",
              "transactionLimit(address)": "e41b07e3",
              "transferOwnership(address)": "f2fde38b",
              "wrbtcTokenAddress()": "2f6b600d"
            }
          },
          "userdoc": {
            "methods": {
              "allowance(address,address)": {
                "notice": "Get the amount of iTokens allowed to be spent by a  given account on behalf of the owner."
              },
              "balanceOf(address)": {
                "notice": "Get the amount of iTokens owned by an account."
              },
              "setTransactionLimits(address[],uint256[])": {
                "notice": "sets the transaction limit per token address"
              },
              "totalSupply()": {
                "notice": "Get the total supply of iTokens."
              }
            }
          }
        }
      },
      "contracts/mockup/proxy/ImplementationMockup.sol": {
        "ImplementationMockup": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "ValueChanged",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getValue",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "setValue",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060e18061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063209652551460375780635524107714604f575b600080fd5b603d606b565b60408051918252519081900360200190f35b606960048036036020811015606357600080fd5b50356071565b005b60005490565b60008190556040805182815290517f93fe6d397c74fdf1402a8b72e47b68512f0510d7b98a4bc4cbdf6ac7108b3c599181900360200190a15056fea265627a7a7231582049ef1d9869db8d9ea13ba306edd2c1da29c49020f7210cd8dc75a16ef76269fe64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xE1 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x20965255 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x55241077 EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x69 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x71 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x93FE6D397C74FDF1402A8B72E47B68512F0510D7B98A4BC4CBDF6AC7108B3C59 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x49 0xEF SAR SWAP9 PUSH10 0xDB8D9EA13BA306EDD2C1 0xDA 0x29 0xC4 SWAP1 KECCAK256 0xF7 0x21 0xC 0xD8 0xDC PUSH22 0xA16EF76269FE64736F6C634300051100320000000000 ",
              "sourceMap": "57:217:123:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;57:217:123;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b506004361060325760003560e01c8063209652551460375780635524107714604f575b600080fd5b603d606b565b60408051918252519081900360200190f35b606960048036036020811015606357600080fd5b50356071565b005b60005490565b60008190556040805182815290517f93fe6d397c74fdf1402a8b72e47b68512f0510d7b98a4bc4cbdf6ac7108b3c599181900360200190a15056fea265627a7a7231582049ef1d9869db8d9ea13ba306edd2c1da29c49020f7210cd8dc75a16ef76269fe64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x20965255 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x55241077 EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x69 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x71 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x93FE6D397C74FDF1402A8B72E47B68512F0510D7B98A4BC4CBDF6AC7108B3C59 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x49 0xEF SAR SWAP9 PUSH10 0xDB8D9EA13BA306EDD2C1 0xDA 0x29 0xC4 SWAP1 KECCAK256 0xF7 0x21 0xC 0xD8 0xDC PUSH22 0xA16EF76269FE64736F6C634300051100320000000000 ",
              "sourceMap": "57:217:123:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;57:217:123;;;;;;;;;;;;;;;;;;;;;;;;202:70;;;:::i;:::-;;;;;;;;;;;;;;;;107:92;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;107:92:123;;:::i;:::-;;202:70;243:7;263:5;202:70;:::o;107:92::-;152:5;:14;;;175:20;;;;;;;;;;;;;;;;;107:92;:::o"
            },
            "methodIdentifiers": {
              "getValue()": "20965255",
              "setValue(uint256)": "55241077"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/mockup/proxy/ProxyMockup.sol": {
        "ProxyMockup": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldImplementation",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newImplementation",
                  "type": "address"
                }
              ],
              "name": "ImplementationChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "ValueChanged",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getImplementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getProxyOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "name": "setImplementation",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "setProxyOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "getImplementation()": {
                "return": "Address of the implementation."
              },
              "getProxyOwner()": {
                "return": "Address of the owner."
              },
              "setImplementation(address)": {
                "details": "Wrapper for _setImplementation that exposes the function as public for owner to be able to set a new version of the contract as current pointing implementation.",
                "params": {
                  "_implementation": "Address of the implementation."
                }
              },
              "setProxyOwner(address)": {
                "params": {
                  "_owner": "Address of the owner."
                }
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052610016336001600160e01b0361001b16565b6100ff565b6001600160a01b0381166100605760405162461bcd60e51b81526004018080602001828103825260258152602001806105b26025913960400191505060405180910390fd5b6001600160a01b03811661007b6001600160e01b036100d716565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b6104a48061010e6000396000f3fe60806040526004361061003f5760003560e01c80631ab7710d146100b5578063aaf10f42146100e6578063caaee91c146100fb578063d784d42614610130575b6000610049610163565b90506001600160a01b0381166100905760405162461bcd60e51b81526004018080602001828103825260238152602001806104286023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e8180156100b1578184f35b8184fd5b3480156100c157600080fd5b506100ca61018e565b604080516001600160a01b039092168252519081900360200190f35b3480156100f257600080fd5b506100ca610163565b34801561010757600080fd5b5061012e6004803603602081101561011e57600080fd5b50356001600160a01b03166101b6565b005b34801561013c57600080fd5b5061012e6004803603602081101561015357600080fd5b50356001600160a01b0316610227565b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b6101be61018e565b6001600160a01b0316336001600160a01b03161461021b576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b61022481610295565b50565b61022f61018e565b6001600160a01b0316336001600160a01b03161461028c576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b61022481610348565b6001600160a01b0381166102da5760405162461bcd60e51b815260040180806020018281038252602581526020018061044b6025913960400191505060405180910390fd5b806001600160a01b03166102ec61018e565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b6001600160a01b03811661038d5760405162461bcd60e51b81526004018080602001828103825260298152602001806103ff6029913960400191505060405180910390fd5b806001600160a01b031661039f610163565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a3604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205556fe50726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6964206164647265737350726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e6450726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373a265627a7a72315820ef7e058356cc5834046e4abef994794548d769fe7ee4c8777e075ab0ae056c2364736f6c6343000511003250726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x16 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x1B AND JUMP JUMPDEST PUSH2 0xFF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B2 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x7B PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0xD7 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x4A4 DUP1 PUSH2 0x10E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1AB7710D EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0xCAAEE91C EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0xD784D426 EQ PUSH2 0x130 JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x49 PUSH2 0x163 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x90 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x428 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0xB1 JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCA PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCA PUSH2 0x163 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1BE PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x21B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x224 DUP2 PUSH2 0x295 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x22F PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x28C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x224 DUP2 PUSH2 0x348 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x44B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EC PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x38D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x39F PUSH2 0x163 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SSTORE JUMP INVALID POP PUSH19 0x6F78793A3A736574496D706C656D656E746174 PUSH10 0x6F6E3A20696E76616C69 PUSH5 0x2061646472 PUSH6 0x737350726F78 PUSH26 0x3A3A28293A20696D706C656D656E746174696F6E206E6F742066 PUSH16 0x756E6450726F78793A3A73657450726F PUSH25 0x794F776E65723A20696E76616C69642061646472657373A265 PUSH3 0x7A7A72 BALANCE PC KECCAK256 0xEF PUSH31 0x58356CC5834046E4ABEF994794548D769FE7EE4C8777E075AB0AE056C2364 PUSH20 0x6F6C6343000511003250726F78793A3A73657450 PUSH19 0x6F78794F776E65723A20696E76616C69642061 PUSH5 0x6472657373 ",
              "sourceMap": "99:57:124:-;;;1653:26:147;1668:10;-1:-1:-1;;;;;1653:14:147;:26;:::i;:::-;99:57:124;;2644:249:147;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2776:45:147;;2797:15;-1:-1:-1;;;;;2797:13:147;:15;:::i;:::-;-1:-1:-1;;;;;2776:45:147;;;;;;;;;;;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;2867:19;2862:28::o;2983:134::-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o;99:57:124:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "60806040526004361061003f5760003560e01c80631ab7710d146100b5578063aaf10f42146100e6578063caaee91c146100fb578063d784d42614610130575b6000610049610163565b90506001600160a01b0381166100905760405162461bcd60e51b81526004018080602001828103825260238152602001806104286023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e8180156100b1578184f35b8184fd5b3480156100c157600080fd5b506100ca61018e565b604080516001600160a01b039092168252519081900360200190f35b3480156100f257600080fd5b506100ca610163565b34801561010757600080fd5b5061012e6004803603602081101561011e57600080fd5b50356001600160a01b03166101b6565b005b34801561013c57600080fd5b5061012e6004803603602081101561015357600080fd5b50356001600160a01b0316610227565b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b6101be61018e565b6001600160a01b0316336001600160a01b03161461021b576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b61022481610295565b50565b61022f61018e565b6001600160a01b0316336001600160a01b03161461028c576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b61022481610348565b6001600160a01b0381166102da5760405162461bcd60e51b815260040180806020018281038252602581526020018061044b6025913960400191505060405180910390fd5b806001600160a01b03166102ec61018e565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b6001600160a01b03811661038d5760405162461bcd60e51b81526004018080602001828103825260298152602001806103ff6029913960400191505060405180910390fd5b806001600160a01b031661039f610163565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a3604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205556fe50726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6964206164647265737350726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e6450726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373a265627a7a72315820ef7e058356cc5834046e4abef994794548d769fe7ee4c8777e075ab0ae056c2364736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1AB7710D EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0xCAAEE91C EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0xD784D426 EQ PUSH2 0x130 JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x49 PUSH2 0x163 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x90 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x428 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0xB1 JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCA PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCA PUSH2 0x163 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1BE PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x21B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x224 DUP2 PUSH2 0x295 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x22F PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x28C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x224 DUP2 PUSH2 0x348 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x44B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EC PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x38D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x39F PUSH2 0x163 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SSTORE JUMP INVALID POP PUSH19 0x6F78793A3A736574496D706C656D656E746174 PUSH10 0x6F6E3A20696E76616C69 PUSH5 0x2061646472 PUSH6 0x737350726F78 PUSH26 0x3A3A28293A20696D706C656D656E746174696F6E206E6F742066 PUSH16 0x756E6450726F78793A3A73657450726F PUSH25 0x794F776E65723A20696E76616C69642061646472657373A265 PUSH3 0x7A7A72 BALANCE PC KECCAK256 0xEF PUSH31 0x58356CC5834046E4ABEF994794548D769FE7EE4C8777E075AB0AE056C2364 PUSH20 0x6F6C634300051100320000000000000000000000 ",
              "sourceMap": "99:57:124:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3338:22:147;3363:19;:17;:19::i;:::-;3338:44;-1:-1:-1;;;;;;3394:28:147;;3386:76;;;;-1:-1:-1;;;3386:76:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3502:4;3496:11;3536:12;3533:1;3524:7;3511:38;3627:1;3624;3610:12;3601:7;3585:14;3580:3;3567:62;3645:14;3690:4;3687:1;3678:7;3663:32;3707:6;3718:41;;;;3795:4;3786:7;3779:21;3718:41;3748:4;3739:7;3732:21;2983:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2983:134:147;;;:::i;:::-;;;;-1:-1:-1;;;;;2983:134:147;;;;;;;;;;;;;;2386:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2386:165:147;;;:::i;1404:91:148:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:91:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:91:148;-1:-1:-1;;;;;1404:91:148;;:::i;:::-;;1194:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1194:117:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1194:117:148;-1:-1:-1;;;;;1194:117:148;;:::i;2386:165:147:-;1291:31;;;-1:-1:-1;;;1291:31:147;;;;;;;;;;;;2534:10;;2510:38::o;2983:134::-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o;1404:91:148:-;1801:15:147;:13;:15::i;:::-;-1:-1:-1;;;;;1787:29:147;:10;-1:-1:-1;;;;;1787:29:147;;1779:63;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;;;;1469:22:148;1484:6;1469:14;:22::i;:::-;1404:91;:::o;1194:117::-;1801:15:147;:13;:15::i;:::-;-1:-1:-1;;;;;1787:29:147;:10;-1:-1:-1;;;;;1787:29:147;;1779:63;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;;;;1272:35:148;1291:15;1272:18;:35::i;2644:249:147:-;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2814:6;-1:-1:-1;;;;;2776:45:147;2797:15;:13;:15::i;:::-;-1:-1:-1;;;;;2776:45:147;;;;;;;;;;;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;2867:19;2862:28::o;1971:307::-;-1:-1:-1;;;;;2045:29:147;;2037:83;;;;-1:-1:-1;;;2037:83:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:15;-1:-1:-1;;;;;2129:59:147;2151:19;:17;:19::i;:::-;-1:-1:-1;;;;;2129:59:147;;;;;;;;;;;1291:31;;;-1:-1:-1;;;1291:31:147;;;;;;;;;;;;2243:28;2238:37::o"
            },
            "methodIdentifiers": {
              "getImplementation()": "aaf10f42",
              "getProxyOwner()": "1ab7710d",
              "setImplementation(address)": "d784d426",
              "setProxyOwner(address)": "caaee91c"
            }
          },
          "userdoc": {
            "methods": {
              "getImplementation()": {
                "notice": "Return address of the implementation."
              },
              "getProxyOwner()": {
                "notice": "Return address of the owner."
              },
              "setImplementation(address)": {
                "notice": "Set address of the implementation."
              },
              "setProxyOwner(address)": {
                "notice": "Set address of the owner."
              }
            }
          }
        }
      },
      "contracts/mockup/proxy/StorageMockup.sol": {
        "StorageMockup": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "ValueChanged",
              "type": "event"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820b62dfcb7b902d32f8755266dc809b183b10fef6b89fd56776a31dc91e87b853f64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xB6 0x2D 0xFC 0xB7 0xB9 MUL 0xD3 0x2F DUP8 SSTORE 0x26 PUSH14 0xC809B183B10FEF6B89FD56776A31 0xDC SWAP2 0xE8 PUSH28 0x853F64736F6C63430005110032000000000000000000000000000000 ",
              "sourceMap": "26:79:125:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26:79:125;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a72315820b62dfcb7b902d32f8755266dc809b183b10fef6b89fd56776a31dc91e87b853f64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xB6 0x2D 0xFC 0xB7 0xB9 MUL 0xD3 0x2F DUP8 SSTORE 0x26 PUSH14 0xC809B183B10FEF6B89FD56776A31 0xDC SWAP2 0xE8 PUSH28 0x853F64736F6C63430005110032000000000000000000000000000000 ",
              "sourceMap": "26:79:125:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/modules/Affiliates.sol": {
        "Affiliates": {
          "abi": [
            {
              "inputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": "referrer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "isHeld",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tradingFeeTokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmountPaid",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFeeToAffiliate",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tradingFeeTokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sovBonusAmountTryingToPaid",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFeeToAffiliateFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "SetAffiliatesReferrer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "alreadySet",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "userNotFirstTrade",
                  "type": "bool"
                }
              ],
              "name": "SetAffiliatesReferrerFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "SetUserNotFirstTradeFlag",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawAffiliatesReferrerTokenFees",
              "type": "event"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getAffiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getAffiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "referrerTokensList",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "referrerTokensBalances",
                  "type": "uint256[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesReferrerTokenBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesReferrerTokensList",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "tokensList",
                  "type": "address[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesTokenRewardsValueInRbtc",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "rbtcTotalAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getAffiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getMinReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "getReferralsList",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "refList",
                  "type": "address[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tradingFeeTokenBaseAmount",
                  "type": "uint256"
                }
              ],
              "name": "payTradingFeeToAffiliatesReferrer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "referrerBonusSovAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "referrerBonusTokenAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "setAffiliatesReferrer",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "setUserNotFirstTradeFlag",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawAffiliatesReferrerTokenFees",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "withdrawAllAffiliatesReferrerTokenFees",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Module: Affiliates upgradable  Storage: from State, functions called from Protocol by delegatecall",
            "methods": {
              "getAffiliateRewardsHeld(address)": {
                "params": {
                  "referrer": "The address of the referrer."
                },
                "return": "The affiliateRewardsHeld mapping value by referrer key."
              },
              "getAffiliateTradingTokenFeePercent()": {
                "details": "It returns a value defined at protocol storage (State.sol)",
                "return": "The percentage of fee share w/ 18 decimals."
              },
              "getAffiliatesReferrerBalances(address)": {
                "params": {
                  "referrer": "The address of the referrer."
                },
                "return": "referrerTokensList The array of available tokens (keys).referrerTokensBalances The array of token balances (values)."
              },
              "getAffiliatesReferrerTokenBalance(address,address)": {
                "params": {
                  "referrer": "The address of the referrer.",
                  "token": "The address of the token to get balance for."
                },
                "return": "The affiliatesReferrerBalances mapping value by referrer and token keys."
              },
              "getAffiliatesReferrerTokensList(address)": {
                "params": {
                  "referrer": "The address of a given referrer."
                },
                "return": "tokensList The list of available tokens."
              },
              "getAffiliatesTokenRewardsValueInRbtc(address)": {
                "details": "Get all token rewards estimation value in rbtc.",
                "params": {
                  "referrer": "Address of referrer."
                },
                "return": "The value estimation in rbtc."
              },
              "getAffiliatesUserReferrer(address)": {
                "params": {
                  "user": "The address of the user."
                },
                "return": "The address on affiliatesUserReferrer mapping value by user key."
              },
              "getMinReferralsToPayout()": {
                "details": "It returns a value defined at protocol storage (State.sol)",
                "return": "The minimum number of referrals set by Protocol."
              },
              "getReferralsList(address)": {
                "params": {
                  "referrer": "The address of a given referrer."
                },
                "return": "The referralsList mapping value by referrer."
              },
              "getUserNotFirstTradeFlag(address)": {
                "params": {
                  "user": "The address of a given user."
                },
                "return": "The userNotFirstTradeFlag mapping value by user."
              },
              "initialize(address)": {
                "details": "This contract is designed as a module, this way logic can be  expanded and upgraded w/o losing storage that is kept in the protocol (State.sol)  initialize() is used to register in the proxy external (module) functions  to be called via the proxy.",
                "params": {
                  "target": "The address of a new logic implementation."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "payTradingFeeToAffiliatesReferrer(address,address,address,uint256)": {
                "details": "Affiliates program has 2 kind of rewards:    1. x% based on the fee of the token that is traded (in form of the token itself).    2. x% based on the fee of the token that is traded (in form of SOV).  Both are paid in this function.Actually they are not paid, but just holded by protocol until user claims them by  actively calling withdrawAffiliatesReferrerTokenFees() function,  and/or when unvesting lockedSOV.To be precise, what this function does is updating the registers of the rewards  for the referrer including the assignment of the SOV tokens as rewards to the  referrer's vesting contract.",
                "params": {
                  "referrer": "The address of the referrer.",
                  "token": "The address of the token in which the trading/borrowing fee was paid.",
                  "trader": "The address of the trader.",
                  "tradingFeeTokenBaseAmount": "Total trading fee amount, the base for calculating referrer's fees."
                },
                "return": "referrerBonusSovAmount The amount of SOV tokens paid to the referrer (through a vesting contract, lockedSOV).referrerBonusTokenAmount The amount of trading tokens paid directly to the referrer."
              },
              "setAffiliatesReferrer(address,address)": {
                "params": {
                  "referrer": "The address of the referrer the user is coming from.",
                  "user": "The address of the user that is trading on loan pools."
                }
              },
              "setUserNotFirstTradeFlag(address)": {
                "params": {
                  "user": "The address of a given user."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "withdrawAffiliatesReferrerTokenFees(address,address,uint256)": {
                "details": "Rewards are held by protocol in different tokens coming from trading fees.  Referrer has to claim them one by one for every token with accumulated balance.",
                "params": {
                  "amount": "The amount of tokens to claim. If greater than balance, just sends balance.",
                  "receiver": "The address of the withdrawal beneficiary.",
                  "token": "The address of the token to withdraw."
                }
              },
              "withdrawAllAffiliatesReferrerTokenFees(address)": {
                "details": "It's done by looping through its available tokens.",
                "params": {
                  "receiver": "The address of the withdrawal beneficiary."
                }
              }
            },
            "title": "Affiliates contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d000006039553480156100a557600080fd5b5060006100b96001600160e01b0361010c16565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610110565b3390565b612e6c80620001206000396000f3fe608060405234801561001057600080fd5b50600436106103fc5760003560e01c806392d894f811610215578063c9ddf44811610125578063edab119f116100b8578063f2fde38b11610087578063f2fde38b14610872578063f589a3e714610885578063f6ddc8b31461088d578063f706b1f214610895578063f851a4401461089d576103fc565b8063edab119f1461082e578063f06a9c6b14610836578063f0e085f514610849578063f19ece6f14610851576103fc565b8063d473c2da116100f4578063d473c2da146107f8578063d485045e14610800578063d80100ea14610813578063e8f6276414610826576103fc565b8063c9ddf448146107a3578063cb6eacd1146107b6578063cd5d808d146107dd578063d288208c146107f0576103fc565b8063b05f6570116101a8578063b9cffa3e11610177578063b9cffa3e14610742578063ba4861e91461074a578063bdee453c14610752578063c4a9081514610765578063c4d66de814610790576103fc565b8063b05f657014610701578063b30643d914610714578063b41263b614610727578063b7e152411461072f576103fc565b8063acc04348116101e4578063acc04348146106c9578063adfcbc98146106d1578063ae0a8530146106e4578063afe84009146106ec576103fc565b806392d894f814610686578063959083d314610699578063a22473a2146106a1578063ac92fd8e146106b4576103fc565b80634699f84611610310578063742e6798116102a35780638417a2ae116102725780638417a2ae146106485780638456cb591461065b5780638da5cb5b146106635780638dc48ba51461066b5780638f32d59b1461067e576103fc565b8063742e67981461062857806378d849ed146106305780637a8faeb814610638578063824fcdc914610640576103fc565b806362fff3f6116102df57806362fff3f6146105d657806368c4ac26146105fa5780636e6637301461060d5780637420ca3e14610620576103fc565b80634699f8461461059c5780634f28cac2146105a4578063569fc1fb146105ac578063574442cc146105ce576103fc565b8063249556fb116103935780633432423c116103625780633432423c1461053d5780633452d2d4146105505780633fca506e146105635780634115a2b6146105765780634203e39514610589576103fc565b8063249556fb146104fa57806324cc57491461050d5780632a3240271461052d5780632f47076414610535576103fc565b806317548b79116103cf57806317548b79146104945780631b7bde74146104a75780631c9f66c2146104c7578063218b39c6146104e7576103fc565b8063065d810f1461041d5780630676c1b71461044b5780630d4d11fe14610460578063115cc0ce14610481575b60405162461bcd60e51b815260040161041490612c56565b60405180910390fd5b61043061042b366004612482565b6108a5565b60405161044296959493929190612d1b565b60405180910390f35b6104536108e5565b60405161044291906129c1565b61047361046e3660046123d4565b6108f4565b604051610442929190612ce4565b61045361048f36600461237c565b610ccf565b6104536104a236600461250d565b610ced565b6104ba6104b536600461239a565b610d08565b6040516104429190612cd6565b6104da6104d536600461237c565b610d25565b6040516104429190612a5e565b6104536104f536600461237c565b610d4f565b6104da61050836600461237c565b610d6a565b61052061051b36600461237c565b610d8e565b6040516104429190612a94565b6104ba610da3565b6104ba610da9565b61043061054b366004612482565b610daf565b6104ba61055e36600461237c565b610def565b6104ba61057136600461237c565b610e01565b6105206105843660046124ee565b610e13565b6104ba61059736600461237c565b610e33565b6104ba610e45565b6104ba610e4b565b6105bf6105ba3660046124d0565b610e51565b60405161044293929190612cf2565b6104ba610e72565b6105e96105e436600461239a565b610e78565b604051610442959493929190612d0d565b61052061060836600461237c565b610eb2565b61045361061b36600461237c565b610ec7565b610453610ee2565b6104ba610ef1565b610453610ef7565b6104ba610f06565b6104ba610f0c565b6104ba61065636600461237c565b610f12565b610520610f2d565b610453610f36565b61045361067936600461237c565b610f45565b610520610f60565b6104ba61069436600461237c565b610f86565b6104ba610f98565b6104ba6106af36600461239a565b610f9e565b6106c76106c2366004612435565b610fc9565b005b6104ba611178565b6106c76106df36600461237c565b61117e565b6104ba61126b565b6106f4611271565b6040516104429190612be7565b61052061070f36600461237c565b611280565b6104ba61072236600461237c565b61129e565b6104ba6112b0565b6104ba61073d36600461237c565b6112b6565b6104536112c8565b6104536112d7565b6104ba61076036600461237c565b6112e6565b6107786107733660046124d0565b6112f8565b6040516104429c9b9a99989796959493929190612b34565b6106c761079e36600461237c565b61136a565b6106c76107b136600461239a565b611516565b6107c96107c43660046124d0565b6116c0565b604051610442989796959493929190612abd565b6104ba6107eb36600461239a565b611712565b61045361172f565b6104ba61173e565b6104ba61080e36600461237c565b611744565b6104ba61082136600461237c565b611756565b6104536118da565b6104ba6118e9565b6106c761084436600461237c565b6118ef565b6104ba6119b4565b61086461085f36600461237c565b6119ba565b604051610442929190612a6f565b6106c761088036600461237c565b611a44565b6104ba611a71565b6104ba611a77565b610453611a7d565b610453611a8c565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b60315460009081906001600160a01b031633146109235760405162461bcd60e51b815260040161041490612c76565b603d5460ff16156109465760405162461bcd60e51b815260040161041490612c16565b60006109506112b0565b6001600160a01b038816600090815260346020526040902061097190611a9b565b1090506001600061098186611aa2565b6001600160a01b038a166000908152603a602052604090209094506109ac908863ffffffff611ad516565b6109da576001600160a01b0389166000908152603a602052604090206109d8908863ffffffff611af316565b505b6001600160a01b03808a166000908152603b60209081526040808320938b1683529290522054610a10908563ffffffff611b5316565b6001600160a01b03808b166000908152603b60209081526040808320938c1683529290522055610a408787611b7f565b6001600160a01b038a166000908152603660205260409020549095508315610a9057610a72818763ffffffff611b5316565b6001600160a01b038b16600090815260366020526040902055610c0d565b6001600160a01b038a1660009081526036602052604090205415610ac8576001600160a01b038a166000908152603660205260408120555b610ad8868263ffffffff611b5316565b60375460385460405163095ea7b360e01b81529294506001600160a01b039182169263095ea7b392610b1092169086906004016129f7565b602060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b6291908101906124b2565b506038546040516000916001600160a01b031690610b86908d9086906024016129f7565b60408051601f198184030181529181526020820180516001600160e01b031663f33bf9a160e01b17905251610bbb91906129b5565b6000604051808303816000865af19150503d8060008114610bf8576040519150601f19603f3d011682016040523d82523d6000602084013e610bfd565b606091505b5050905080610c0b57600093505b505b8215610c6e57831515886001600160a01b03168b6001600160a01b03167f956d8d442c76f1bedc4178cda59c4ad17c135bd6ec5a603a39fbfe5a320dbbc08c8b8a8c89604051610c61959493929190612a12565b60405180910390a4610cc2565b876001600160a01b03168a6001600160a01b03167f0909aef8097f3ad1e03459f173d44656bde668485239e8d83d9dcbc8af63d1408b8a898b88604051610cb9959493929190612a12565b60405180910390a35b5050505094509492505050565b6001600160a01b039081166000908152603360205260409020541690565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6001600160a01b0381166000908152603a60205260409020606090610d4990611c7f565b92915050565b6023602052600090815260409020546001600160a01b031681565b6001600160a01b0381166000908152603460205260409020606090610d4990611c7f565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b60395490565b6001600160a01b031660009081526036602052604090205490565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610f77611d25565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b603d5460ff1615610fec5760405162461bcd60e51b815260040161041490612c16565b6001600160a01b0382166110125760405162461bcd60e51b815260040161041490612ca6565b336000818152603b602090815260408083206001600160a01b0388168452909152812054908382116110445781611046565b835b9050600081116110685760405162461bcd60e51b815260040161041490612c36565b6110706112b0565b6001600160a01b038416600090815260346020526040902061109190611a9b565b10156110af5760405162461bcd60e51b815260040161041490612c06565b60006110c1838363ffffffff611d2916565b9050806110d7576110d28488611d6b565b611100565b6001600160a01b038085166000908152603b60209081526040808320938b168352929052208190555b61111a6001600160a01b038816878463ffffffff611dae16565b866001600160a01b0316866001600160a01b0316856001600160a01b03167f7e121a301046a79dbdc6bb475ff36f651f88a7cb91fefd7cb8aa4b9f4a33b20b856040516111679190612cd6565b60405180910390a450505050505050565b602f5481565b603d5460ff16156111a15760405162461bcd60e51b815260040161041490612c16565b6001600160a01b0381166111c75760405162461bcd60e51b815260040161041490612ca6565b336111d06112b0565b6001600160a01b03821660009081526034602052604090206111f190611a9b565b101561120f5760405162461bcd60e51b815260040161041490612c06565b60608061121b836119ba565b9150915060005b82518110156112645761125c83828151811061123a57fe5b60200260200101518684848151811061124f57fe5b6020026020010151610fc9565b600101611222565b5050505050565b60205481565b602d546001600160a01b031681565b6001600160a01b031660009081526032602052604090205460ff1690565b601d6020526000908152604090205481565b60355490565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b611372610f60565b61138e5760405162461bcd60e51b815260040161041490612c96565b63193bbe8960e31b600081905260056020527fa32428c5f7f1f49cbf6b6f0ae7823841efc255f4d2b6125ce4b307c53dc525c7546001600160a01b0316906113d69083611e07565b6113e7630b05f65760e41b83611e07565b6113f863249556fb60e01b83611e07565b61140963f06a9c6b60e01b83611e07565b61141a6306a688ff60e11b83611e07565b61142b63f19ece6f60e01b83611e07565b61143c63511239d160e11b83611e07565b61144d630e4fb36160e11b83611e07565b61145e6356497ec760e11b83611e07565b61146f6315bf979360e31b83611e07565b611480635a0931db60e11b83611e07565b6114916308ae606760e11b83611e07565b6114a263420bd15760e11b83611e07565b6114b363824fcdc960e01b83611e07565b6114c4636c00807560e11b83611e07565b69416666696c696174657360b01b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b336000908152602260205260409020546001600160a01b031661154b5760405162461bcd60e51b815260040161041490612c76565b603d5460ff161561156e5760405162461bcd60e51b815260040161041490612c16565b611576612330565b61157f83611280565b151560408083019182526001600160a01b03858116600090815260336020908152929020541615159083015251806115b8575080602001515b806115d45750816001600160a01b0316836001600160a01b0316145b1580825215611665576001600160a01b03838116600090815260336020908152604080832080546001600160a01b0319169487169485179055928252603490522061161f9084611af3565b50816001600160a01b0316836001600160a01b03167f01085a2bdafb7e1bf8c2744a99befcb7d35fd44ce0fec8273e65687bf69b40d260405160405180910390a36116bb565b816001600160a01b0316836001600160a01b03167f5fcda235bf45571cdfcce3194fdec51249320ea208d33ddf19457f971fbce052836020015184604001516040516116b2929190612aa2565b60405180910390a35b505050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6000606061176383610d25565b6002549091506001600160a01b031660005b82518110156118d25782516000906060906001600160a01b0385169063d138f9a160e01b908790869081106117a657fe5b6020026020010151602d60009054906101000a90046001600160a01b0316603b60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008a89815181106117f757fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054604051602401611832939291906129cf565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161187091906129b5565b600060405180830381855afa9150503d80600081146118ab576040519150601f19603f3d011682016040523d82523d6000602084013e6118b0565b606091505b509150915060018214156118c8576020810151860195505b5050600101611775565b505050919050565b6014546001600160a01b031681565b601b5481565b336000908152602260205260409020546001600160a01b03166119245760405162461bcd60e51b815260040161041490612c76565b603d5460ff16156119475760405162461bcd60e51b815260040161041490612c16565b6001600160a01b03811660009081526032602052604090205460ff166119b1576001600160a01b038116600081815260326020526040808220805460ff19166001179055517fa4c47359ccbdf26dba0d446255196fdc8d493dea957ded328aaa20f86afa694d9190a25b50565b60285481565b6060806119c683610d25565b915081516040519080825280602002602001820160405280156119f3578160200160208202803883390190505b50905060005b8251811015611a3e57611a1f84848381518110611a1257fe5b6020026020010151610f9e565b828281518110611a2b57fe5b60209081029190910101526001016119f9565b50915091565b611a4c610f60565b611a685760405162461bcd60e51b815260040161041490612c96565b6119b181611e81565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6001015490565b6000610d4968056bc75e2d63100000611ac9611abc610f0c565b859063ffffffff611f0316565b9063ffffffff611f3d16565b6001600160a01b031660009081526020919091526040902054151590565b6000611aff8383611ad5565b611b4b5750600182810180548083018083556000928352602080842090920180546001600160a01b0319166001600160a01b038716908117909155835290859052604090912055610d49565b506000610d49565b600082820183811015611b785760405162461bcd60e51b815260040161041490612c46565b9392505050565b60025460375460009182916001600160a01b03918216918391606091849163d138f9a160e01b918a9116611bce68056bc75e2d63100000611ac9611bc1611f7f565b8d9063ffffffff611f0316565b604051602401611be0939291906129cf565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611c1e91906129b5565b600060405180830381855afa9150503d8060008114611c59576040519150601f19603f3d011682016040523d82523d6000602084013e611c5e565b606091505b50915091506001821415611c7457602081015193505b509195945050505050565b6060808260010180549050604051908082528060200260200182016040528015611cb3578160200160208202803883390190505b50905060005b6001840154811015611d1e57836001018181548110611cd457fe5b9060005260206000200160009054906101000a90046001600160a01b0316828281518110611cfe57fe5b6001600160a01b0390921660209283029190910190910152600101611cb9565b5092915050565b3390565b6000611b7883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f85565b6001600160a01b038083166000818152603b602090815260408083209486168352938152838220829055918152603a909152206116bb908263ffffffff611fb116565b6040516116bb90849063a9059cbb60e01b90611dd090869086906024016129f7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526120bc565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b03831690811790915515611e6257611e5c600d6001600160e01b0319841663ffffffff6121a716565b50611e7d565b6116bb600d6001600160e01b0319841663ffffffff6121e716565b5050565b6001600160a01b038116611ea75760405162461bcd60e51b815260040161041490612c26565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600082611f1257506000610d49565b82820282848281611f1f57fe5b0414611b785760405162461bcd60e51b815260040161041490612c86565b6000611b7883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122a8565b60205490565b60008184841115611fa95760405162461bcd60e51b81526004016104149190612bf5565b505050900390565b6000611fbd8383611ad5565b15611b4b576001600160a01b0382166000908152602084905260409020546001840154600019918201910180821461206857600085600101828154811061200057fe5b6000918252602090912001546001870180546001600160a01b03909216925082918590811061202b57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815290869052604090206001830190555b6001600160a01b0384166000908152602086905260408120556001850180548061208e57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555060019150610d499050565b6120ce826001600160a01b03166122df565b6120ea5760405162461bcd60e51b815260040161041490612cc6565b60006060836001600160a01b03168360405161210691906129b5565b6000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b50915091508161216a5760405162461bcd60e51b815260040161041490612c66565b8051156121a1578080602001905161218591908101906124b2565b6121a15760405162461bcd60e51b815260040161041490612cb6565b50505050565b60006121b3838361231b565b611b4b5750600180830180548083018083556000928352602080842090920185905584835290859052604090912055610d49565b60006121f3838361231b565b15611b4b576000828152602084905260409020546001840154600019918201910180821461226b57600085600101828154811061222c57fe5b906000526020600020015490508086600101848154811061224957fe5b6000918252602080832090910192909255918252869052604090206001830190555b6000848152602086905260408120556001850180548061228757fe5b60019003818190600052602060002001600090559055600192505050610d49565b600081836122c95760405162461bcd60e51b81526004016104149190612bf5565b5060008385816122d557fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061231357508115155b949350505050565b60009081526020919091526040902054151590565b604080516060810182526000808252602082018190529181019190915290565b8035610d4981612dfa565b8051610d4981612e0e565b8035610d4981612e17565b8035610d4981612e20565b60006020828403121561238e57600080fd5b60006123138484612350565b600080604083850312156123ad57600080fd5b60006123b98585612350565b92505060206123ca85828601612350565b9150509250929050565b600080600080608085870312156123ea57600080fd5b60006123f68787612350565b945050602061240787828801612350565b935050604061241887828801612350565b925050606061242987828801612366565b91505092959194509250565b60008060006060848603121561244a57600080fd5b60006124568686612350565b935050602061246786828701612350565b925050604061247886828701612366565b9150509250925092565b6000806040838503121561249557600080fd5b60006124a18585612350565b92505060206123ca85828601612366565b6000602082840312156124c457600080fd5b6000612313848461235b565b6000602082840312156124e257600080fd5b60006123138484612366565b6000806040838503121561250157600080fd5b60006123b98585612366565b60006020828403121561251f57600080fd5b60006123138484612371565b6000612537838361254b565b505060200190565b6000612537838361260a565b61255481612d8d565b82525050565b600061256582612d7b565b61256f8185612d7f565b935061257a83612d75565b8060005b838110156125a8578151612592888261252b565b975061259d83612d75565b92505060010161257e565b509495945050505050565b60006125be82612d7b565b6125c88185612d7f565b93506125d383612d75565b8060005b838110156125a85781516125eb888261253f565b97506125f683612d75565b9250506001016125d7565b61255481612d98565b61255481612d9d565b600061261e82612d7b565b6126288185612d88565b9350612638818560208601612dc4565b9290920192915050565b61255481612db9565b600061265682612d7b565b6126608185612d7f565b9350612670818560208601612dc4565b61267981612df0565b9093019392505050565b6000612690603283612d7f565b7f596f757220726566657272616c7320686173206e6f74207265616368656420748152711a19481b5a5b9a5b5d5b481c995c5d595cdd60721b602082015260400192915050565b60006126e4600683612d7f565b6514185d5cd95960d21b815260200192915050565b6000612706602683612d7f565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b600061274e602783612d7f565b7f416666696c69617465733a2063616e6e6f74207769746864726177207a65726f81526608185b5bdd5b9d60ca1b602082015260400192915050565b6000612797601b83612d7f565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006127d0602183612d7f565b7f416666696c6961746573202d2066616c6c6261636b206e6f7420616c6c6f77658152601960fa1b602082015260400192915050565b6000612813602083612d7f565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b600061284c601a83612d7f565b7f416666696c69617465733a206e6f7420617574686f72697a6564000000000000815260200192915050565b6000612885602183612d7f565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006128c8600c83612d7f565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006128f0602b83612d7f565b7f416666696c69617465733a2063616e6e6f7420776974686472617720746f207a81526a65726f206164647265737360a81b602082015260400192915050565b600061293d602a83612d7f565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b6000612989601f83612d7f565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6000611b788284612613565b60208101610d49828461254b565b606081016129dd828661254b565b6129ea602083018561254b565b612313604083018461260a565b60408101612a05828561254b565b611b78602083018461260a565b60a08101612a20828861254b565b612a2d602083018761260a565b612a3a604083018661260a565b612a47606083018561260a565b612a54608083018461260a565b9695505050505050565b60208082528101611b78818461255a565b60408082528101612a80818561255a565b9050818103602083015261231381846125b3565b60208101610d498284612601565b60408101612ab08285612601565b611b786020830184612601565b6101008101612acc828b61260a565b612ad9602083018a612601565b612ae6604083018961254b565b612af3606083018861254b565b612b00608083018761254b565b612b0d60a083018661260a565b612b1a60c083018561260a565b612b2760e083018461260a565b9998505050505050505050565b6101808101612b43828f61260a565b612b50602083018e61260a565b612b5d604083018d61260a565b612b6a606083018c612601565b612b77608083018b61260a565b612b8460a083018a61260a565b612b9160c083018961260a565b612b9e60e083018861260a565b612bac61010083018761260a565b612bba61012083018661260a565b612bc861014083018561254b565b612bd661016083018461254b565b9d9c50505050505050505050505050565b60208101610d498284612642565b60208082528101611b78818461264b565b60208082528101610d4981612683565b60208082528101610d49816126d7565b60208082528101610d49816126f9565b60208082528101610d4981612741565b60208082528101610d498161278a565b60208082528101610d49816127c3565b60208082528101610d4981612806565b60208082528101610d498161283f565b60208082528101610d4981612878565b60208082528101610d49816128bb565b60208082528101610d49816128e3565b60208082528101610d4981612930565b60208082528101610d498161297c565b60208101610d49828461260a565b60408101612a05828561260a565b60608101612d00828661260a565b6129ea602083018561260a565b60a08101612a20828861260a565b60c08101612d29828961260a565b612d36602083018861260a565b612d43604083018761260a565b612d50606083018661260a565b612d5d608083018561260a565b612d6a60a083018461260a565b979650505050505050565b60200190565b5190565b90815260200190565b919050565b6000610d4982612dad565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b6000610d4982612d8d565b60005b83811015612ddf578181015183820152602001612dc7565b838111156121a15750506000910152565b601f01601f191690565b612e0381612d8d565b81146119b157600080fd5b612e0381612d98565b612e0381612d9d565b612e0381612da056fea365627a7a72315820575604888855021bca4cfc9b0d74e8a3f32445740523b2205dc254f518fcbe436c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0xA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0xB9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x10C AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x110 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x2E6C DUP1 PUSH3 0x120 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3FC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92D894F8 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0xC9DDF448 GT PUSH2 0x125 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x872 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x885 JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x88D JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x895 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x89D JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x82E JUMPI DUP1 PUSH4 0xF06A9C6B EQ PUSH2 0x836 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x849 JUMPI DUP1 PUSH4 0xF19ECE6F EQ PUSH2 0x851 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xD473C2DA GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x7F8 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0xD80100EA EQ PUSH2 0x813 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x826 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xC9DDF448 EQ PUSH2 0x7A3 JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7B6 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x7DD JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x7F0 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xB05F6570 GT PUSH2 0x1A8 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x177 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x742 JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x74A JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x752 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x765 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x790 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xB05F6570 EQ PUSH2 0x701 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0xB41263B6 EQ PUSH2 0x727 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x72F JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xACC04348 GT PUSH2 0x1E4 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xADFCBC98 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6E4 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6EC JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x686 JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x699 JUMPI DUP1 PUSH4 0xA22473A2 EQ PUSH2 0x6A1 JUMPI DUP1 PUSH4 0xAC92FD8E EQ PUSH2 0x6B4 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x310 JUMPI DUP1 PUSH4 0x742E6798 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x8417A2AE GT PUSH2 0x272 JUMPI DUP1 PUSH4 0x8417A2AE EQ PUSH2 0x648 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x65B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x663 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x67E JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x742E6798 EQ PUSH2 0x628 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x630 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x638 JUMPI DUP1 PUSH4 0x824FCDC9 EQ PUSH2 0x640 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x62FFF3F6 GT PUSH2 0x2DF JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x5D6 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x60D JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x620 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x59C JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x5A4 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x5AC JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x5CE JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x249556FB GT PUSH2 0x393 JUMPI DUP1 PUSH4 0x3432423C GT PUSH2 0x362 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x550 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x563 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x576 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x589 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x249556FB EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x50D JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x52D JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x535 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x17548B79 GT PUSH2 0x3CF JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0x1C9F66C2 EQ PUSH2 0x4C7 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x4E7 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x41D JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x44B JUMPI DUP1 PUSH4 0xD4D11FE EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0x115CC0CE EQ PUSH2 0x481 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x430 PUSH2 0x42B CALLDATASIZE PUSH1 0x4 PUSH2 0x2482 JUMP JUMPDEST PUSH2 0x8A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x453 PUSH2 0x8E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP2 SWAP1 PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x473 PUSH2 0x46E CALLDATASIZE PUSH1 0x4 PUSH2 0x23D4 JUMP JUMPDEST PUSH2 0x8F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP3 SWAP2 SWAP1 PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x48F CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xCCF JUMP JUMPDEST PUSH2 0x453 PUSH2 0x4A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x250D JUMP JUMPDEST PUSH2 0xCED JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x239A JUMP JUMPDEST PUSH2 0xD08 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP2 SWAP1 PUSH2 0x2CD6 JUMP JUMPDEST PUSH2 0x4DA PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xD25 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP2 SWAP1 PUSH2 0x2A5E JUMP JUMPDEST PUSH2 0x453 PUSH2 0x4F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xD4F JUMP JUMPDEST PUSH2 0x4DA PUSH2 0x508 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xD6A JUMP JUMPDEST PUSH2 0x520 PUSH2 0x51B CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP2 SWAP1 PUSH2 0x2A94 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xDA3 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0x430 PUSH2 0x54B CALLDATASIZE PUSH1 0x4 PUSH2 0x2482 JUMP JUMPDEST PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x55E CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xDEF JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x571 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xE01 JUMP JUMPDEST PUSH2 0x520 PUSH2 0x584 CALLDATASIZE PUSH1 0x4 PUSH2 0x24EE JUMP JUMPDEST PUSH2 0xE13 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x597 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xE33 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xE45 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xE4B JUMP JUMPDEST PUSH2 0x5BF PUSH2 0x5BA CALLDATASIZE PUSH1 0x4 PUSH2 0x24D0 JUMP JUMPDEST PUSH2 0xE51 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xE72 JUMP JUMPDEST PUSH2 0x5E9 PUSH2 0x5E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x239A JUMP JUMPDEST PUSH2 0xE78 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D0D JUMP JUMPDEST PUSH2 0x520 PUSH2 0x608 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xEB2 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x61B CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xEC7 JUMP JUMPDEST PUSH2 0x453 PUSH2 0xEE2 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xEF1 JUMP JUMPDEST PUSH2 0x453 PUSH2 0xEF7 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xF06 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xF0C JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x656 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x520 PUSH2 0xF2D JUMP JUMPDEST PUSH2 0x453 PUSH2 0xF36 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x679 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xF45 JUMP JUMPDEST PUSH2 0x520 PUSH2 0xF60 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x694 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xF86 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xF98 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x6AF CALLDATASIZE PUSH1 0x4 PUSH2 0x239A JUMP JUMPDEST PUSH2 0xF9E JUMP JUMPDEST PUSH2 0x6C7 PUSH2 0x6C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2435 JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4BA PUSH2 0x1178 JUMP JUMPDEST PUSH2 0x6C7 PUSH2 0x6DF CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x117E JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x126B JUMP JUMPDEST PUSH2 0x6F4 PUSH2 0x1271 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP2 SWAP1 PUSH2 0x2BE7 JUMP JUMPDEST PUSH2 0x520 PUSH2 0x70F CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x722 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x129E JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x12B0 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x73D CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x12C8 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x12D7 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x760 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x778 PUSH2 0x773 CALLDATASIZE PUSH1 0x4 PUSH2 0x24D0 JUMP JUMPDEST PUSH2 0x12F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B34 JUMP JUMPDEST PUSH2 0x6C7 PUSH2 0x79E CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x136A JUMP JUMPDEST PUSH2 0x6C7 PUSH2 0x7B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x239A JUMP JUMPDEST PUSH2 0x1516 JUMP JUMPDEST PUSH2 0x7C9 PUSH2 0x7C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x24D0 JUMP JUMPDEST PUSH2 0x16C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2ABD JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x7EB CALLDATASIZE PUSH1 0x4 PUSH2 0x239A JUMP JUMPDEST PUSH2 0x1712 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x172F JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x173E JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x80E CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x1744 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x821 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x1756 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x18E9 JUMP JUMPDEST PUSH2 0x6C7 PUSH2 0x844 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x18EF JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x19B4 JUMP JUMPDEST PUSH2 0x864 PUSH2 0x85F CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x19BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP3 SWAP2 SWAP1 PUSH2 0x2A6F JUMP JUMPDEST PUSH2 0x6C7 PUSH2 0x880 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x1A44 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x1A71 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x1A77 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x1A7D JUMP JUMPDEST PUSH2 0x453 PUSH2 0x1A8C JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x923 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C76 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x946 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C16 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x950 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x971 SWAP1 PUSH2 0x1A9B JUMP JUMPDEST LT SWAP1 POP PUSH1 0x1 PUSH1 0x0 PUSH2 0x981 DUP7 PUSH2 0x1AA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP5 POP PUSH2 0x9AC SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1AD5 AND JUMP JUMPDEST PUSH2 0x9DA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x9D8 SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1AF3 AND JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0xA10 SWAP1 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1B53 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SSTORE PUSH2 0xA40 DUP8 DUP8 PUSH2 0x1B7F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP6 POP DUP4 ISZERO PUSH2 0xA90 JUMPI PUSH2 0xA72 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1B53 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xC0D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0xAC8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMPDEST PUSH2 0xAD8 DUP7 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B53 AND JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0xB10 SWAP3 AND SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x29F7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xB62 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x24B2 JUMP JUMPDEST POP PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xB86 SWAP1 DUP14 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x29F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xF33BF9A1 PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0xBBB SWAP2 SWAP1 PUSH2 0x29B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xBF8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xC0B JUMPI PUSH1 0x0 SWAP4 POP JUMPDEST POP JUMPDEST DUP3 ISZERO PUSH2 0xC6E JUMPI DUP4 ISZERO ISZERO DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x956D8D442C76F1BEDC4178CDA59C4AD17C135BD6EC5A603A39FBFE5A320DBBC0 DUP13 DUP12 DUP11 DUP13 DUP10 PUSH1 0x40 MLOAD PUSH2 0xC61 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2A12 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xCC2 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x909AEF8097F3AD1E03459F173D44656BDE668485239E8D83D9DCBC8AF63D140 DUP12 DUP11 DUP10 DUP12 DUP9 PUSH1 0x40 MLOAD PUSH2 0xCB9 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2A12 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x60 SWAP1 PUSH2 0xD49 SWAP1 PUSH2 0x1C7F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x60 SWAP1 PUSH2 0xD49 SWAP1 PUSH2 0x1C7F JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF77 PUSH2 0x1D25 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xFEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1012 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2CA6 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 DUP4 DUP3 GT PUSH2 0x1044 JUMPI DUP2 PUSH2 0x1046 JUMP JUMPDEST DUP4 JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x1068 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C36 JUMP JUMPDEST PUSH2 0x1070 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1091 SWAP1 PUSH2 0x1A9B JUMP JUMPDEST LT ISZERO PUSH2 0x10AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C06 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10C1 DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1D29 AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x10D7 JUMPI PUSH2 0x10D2 DUP5 DUP9 PUSH2 0x1D6B JUMP JUMPDEST PUSH2 0x1100 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH2 0x111A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP8 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1DAE AND JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7E121A301046A79DBDC6BB475FF36F651F88A7CB91FEFD7CB8AA4B9F4A33B20B DUP6 PUSH1 0x40 MLOAD PUSH2 0x1167 SWAP2 SWAP1 PUSH2 0x2CD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x11A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x11C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2CA6 JUMP JUMPDEST CALLER PUSH2 0x11D0 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x11F1 SWAP1 PUSH2 0x1A9B JUMP JUMPDEST LT ISZERO PUSH2 0x120F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C06 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x121B DUP4 PUSH2 0x19BA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1264 JUMPI PUSH2 0x125C DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x123A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x124F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xFC9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1222 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0x1372 PUSH2 0xF60 JUMP JUMPDEST PUSH2 0x138E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C96 JUMP JUMPDEST PUSH4 0x193BBE89 PUSH1 0xE3 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xA32428C5F7F1F49CBF6B6F0AE7823841EFC255F4D2B6125CE4B307C53DC525C7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x13D6 SWAP1 DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x13E7 PUSH4 0xB05F657 PUSH1 0xE4 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x13F8 PUSH4 0x249556FB PUSH1 0xE0 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x1409 PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x141A PUSH4 0x6A688FF PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x142B PUSH4 0xF19ECE6F PUSH1 0xE0 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x143C PUSH4 0x511239D1 PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x144D PUSH4 0xE4FB361 PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x145E PUSH4 0x56497EC7 PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x146F PUSH4 0x15BF9793 PUSH1 0xE3 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x1480 PUSH4 0x5A0931DB PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x1491 PUSH4 0x8AE6067 PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x14A2 PUSH4 0x420BD157 PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x14B3 PUSH4 0x824FCDC9 PUSH1 0xE0 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x14C4 PUSH4 0x6C008075 PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH10 0x416666696C6961746573 PUSH1 0xB0 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x154B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C76 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x156E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C16 JUMP JUMPDEST PUSH2 0x1576 PUSH2 0x2330 JUMP JUMPDEST PUSH2 0x157F DUP4 PUSH2 0x1280 JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 SWAP1 DUP2 MSTORE SWAP3 SWAP1 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 DUP4 ADD MSTORE MLOAD DUP1 PUSH2 0x15B8 JUMPI POP DUP1 PUSH1 0x20 ADD MLOAD JUMPDEST DUP1 PUSH2 0x15D4 JUMPI POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO DUP1 DUP3 MSTORE ISZERO PUSH2 0x1665 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP5 DUP8 AND SWAP5 DUP6 OR SWAP1 SSTORE SWAP3 DUP3 MSTORE PUSH1 0x34 SWAP1 MSTORE KECCAK256 PUSH2 0x161F SWAP1 DUP5 PUSH2 0x1AF3 JUMP JUMPDEST POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1085A2BDAFB7E1BF8C2744A99BEFCB7D35FD44CE0FEC8273E65687BF69B40D2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x16BB JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5FCDA235BF45571CDFCCE3194FDEC51249320EA208D33DDF19457F971FBCE052 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x16B2 SWAP3 SWAP2 SWAP1 PUSH2 0x2AA2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x1763 DUP4 PUSH2 0xD25 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x18D2 JUMPI DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP1 DUP8 SWAP1 DUP7 SWAP1 DUP2 LT PUSH2 0x17A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2D PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3B PUSH1 0x0 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x17F7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1832 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x1870 SWAP2 SWAP1 PUSH2 0x29B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x18AB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x18B0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x18C8 JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP7 ADD SWAP6 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1775 JUMP JUMPDEST POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1924 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C76 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1947 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x19B1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0xA4C47359CCBDF26DBA0D446255196FDC8D493DEA957DED328AAA20F86AFA694D SWAP2 SWAP1 LOG2 JUMPDEST POP JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x19C6 DUP4 PUSH2 0xD25 JUMP JUMPDEST SWAP2 POP DUP2 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x19F3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1A3E JUMPI PUSH2 0x1A1F DUP5 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A12 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xF9E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1A2B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19F9 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x1A4C PUSH2 0xF60 JUMP JUMPDEST PUSH2 0x1A68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C96 JUMP JUMPDEST PUSH2 0x19B1 DUP2 PUSH2 0x1E81 JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD49 PUSH9 0x56BC75E2D63100000 PUSH2 0x1AC9 PUSH2 0x1ABC PUSH2 0xF0C JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1F03 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1F3D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AFF DUP4 DUP4 PUSH2 0x1AD5 JUMP JUMPDEST PUSH2 0x1B4B JUMPI POP PUSH1 0x1 DUP3 DUP2 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xD49 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xD49 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1B78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C46 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x37 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 DUP4 SWAP2 PUSH1 0x60 SWAP2 DUP5 SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP11 SWAP2 AND PUSH2 0x1BCE PUSH9 0x56BC75E2D63100000 PUSH2 0x1AC9 PUSH2 0x1BC1 PUSH2 0x1F7F JUMP JUMPDEST DUP14 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1F03 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1BE0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x1C1E SWAP2 SWAP1 PUSH2 0x29B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C59 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C5E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x1C74 JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP4 POP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 PUSH1 0x1 ADD DUP1 SLOAD SWAP1 POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1CB3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1D1E JUMPI DUP4 PUSH1 0x1 ADD DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1CD4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1CFE JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1CB9 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B78 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1F85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP7 AND DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 KECCAK256 DUP3 SWAP1 SSTORE SWAP2 DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP2 MSTORE KECCAK256 PUSH2 0x16BB SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1FB1 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16BB SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x1DD0 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x29F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x20BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x1E62 JUMPI PUSH2 0x1E5C PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x21A7 AND JUMP JUMPDEST POP PUSH2 0x1E7D JUMP JUMPDEST PUSH2 0x16BB PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x21E7 AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1EA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C26 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1F12 JUMPI POP PUSH1 0x0 PUSH2 0xD49 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1F1F JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1B78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C86 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B78 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x22A8 JUMP JUMPDEST PUSH1 0x20 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1FA9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP2 SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FBD DUP4 DUP4 PUSH2 0x1AD5 JUMP JUMPDEST ISZERO PUSH2 0x1B4B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x2068 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2000 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x202B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE SWAP1 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x208E JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP2 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE ADD SWAP1 SSTORE POP PUSH1 0x1 SWAP2 POP PUSH2 0xD49 SWAP1 POP JUMP JUMPDEST PUSH2 0x20CE DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x22DF JUMP JUMPDEST PUSH2 0x20EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2CC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2106 SWAP2 SWAP1 PUSH2 0x29B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2143 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2148 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x216A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C66 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x21A1 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x2185 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x24B2 JUMP JUMPDEST PUSH2 0x21A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2CB6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21B3 DUP4 DUP4 PUSH2 0x231B JUMP JUMPDEST PUSH2 0x1B4B JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xD49 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21F3 DUP4 DUP4 PUSH2 0x231B JUMP JUMPDEST ISZERO PUSH2 0x1B4B JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x226B JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x222C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2249 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x2287 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0xD49 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x22C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP2 SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x22D5 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2313 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xD49 DUP2 PUSH2 0x2DFA JUMP JUMPDEST DUP1 MLOAD PUSH2 0xD49 DUP2 PUSH2 0x2E0E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xD49 DUP2 PUSH2 0x2E17 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xD49 DUP2 PUSH2 0x2E20 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x238E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2313 DUP5 DUP5 PUSH2 0x2350 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x23B9 DUP6 DUP6 PUSH2 0x2350 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x23CA DUP6 DUP3 DUP7 ADD PUSH2 0x2350 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x23EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x23F6 DUP8 DUP8 PUSH2 0x2350 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x2407 DUP8 DUP3 DUP9 ADD PUSH2 0x2350 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x2418 DUP8 DUP3 DUP9 ADD PUSH2 0x2350 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x2429 DUP8 DUP3 DUP9 ADD PUSH2 0x2366 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x244A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2456 DUP7 DUP7 PUSH2 0x2350 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2467 DUP7 DUP3 DUP8 ADD PUSH2 0x2350 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2478 DUP7 DUP3 DUP8 ADD PUSH2 0x2366 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x24A1 DUP6 DUP6 PUSH2 0x2350 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x23CA DUP6 DUP3 DUP7 ADD PUSH2 0x2366 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2313 DUP5 DUP5 PUSH2 0x235B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2313 DUP5 DUP5 PUSH2 0x2366 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x23B9 DUP6 DUP6 PUSH2 0x2366 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2313 DUP5 DUP5 PUSH2 0x2371 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2537 DUP4 DUP4 PUSH2 0x254B JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2537 DUP4 DUP4 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2554 DUP2 PUSH2 0x2D8D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2565 DUP3 PUSH2 0x2D7B JUMP JUMPDEST PUSH2 0x256F DUP2 DUP6 PUSH2 0x2D7F JUMP JUMPDEST SWAP4 POP PUSH2 0x257A DUP4 PUSH2 0x2D75 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25A8 JUMPI DUP2 MLOAD PUSH2 0x2592 DUP9 DUP3 PUSH2 0x252B JUMP JUMPDEST SWAP8 POP PUSH2 0x259D DUP4 PUSH2 0x2D75 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x257E JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25BE DUP3 PUSH2 0x2D7B JUMP JUMPDEST PUSH2 0x25C8 DUP2 DUP6 PUSH2 0x2D7F JUMP JUMPDEST SWAP4 POP PUSH2 0x25D3 DUP4 PUSH2 0x2D75 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25A8 JUMPI DUP2 MLOAD PUSH2 0x25EB DUP9 DUP3 PUSH2 0x253F JUMP JUMPDEST SWAP8 POP PUSH2 0x25F6 DUP4 PUSH2 0x2D75 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x25D7 JUMP JUMPDEST PUSH2 0x2554 DUP2 PUSH2 0x2D98 JUMP JUMPDEST PUSH2 0x2554 DUP2 PUSH2 0x2D9D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x261E DUP3 PUSH2 0x2D7B JUMP JUMPDEST PUSH2 0x2628 DUP2 DUP6 PUSH2 0x2D88 JUMP JUMPDEST SWAP4 POP PUSH2 0x2638 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2DC4 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2554 DUP2 PUSH2 0x2DB9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2656 DUP3 PUSH2 0x2D7B JUMP JUMPDEST PUSH2 0x2660 DUP2 DUP6 PUSH2 0x2D7F JUMP JUMPDEST SWAP4 POP PUSH2 0x2670 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2DC4 JUMP JUMPDEST PUSH2 0x2679 DUP2 PUSH2 0x2DF0 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2690 PUSH1 0x32 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x596F757220726566657272616C7320686173206E6F7420726561636865642074 DUP2 MSTORE PUSH18 0x1A19481B5A5B9A5B5D5B481C995C5D595CDD PUSH1 0x72 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26E4 PUSH1 0x6 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2706 PUSH1 0x26 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x274E PUSH1 0x27 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x416666696C69617465733A2063616E6E6F74207769746864726177207A65726F DUP2 MSTORE PUSH7 0x8185B5BDD5B9D PUSH1 0xCA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2797 PUSH1 0x1B DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27D0 PUSH1 0x21 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x416666696C6961746573202D2066616C6C6261636B206E6F7420616C6C6F7765 DUP2 MSTORE PUSH1 0x19 PUSH1 0xFA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2813 PUSH1 0x20 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x284C PUSH1 0x1A DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x416666696C69617465733A206E6F7420617574686F72697A6564000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2885 PUSH1 0x21 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28C8 PUSH1 0xC DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28F0 PUSH1 0x2B DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x416666696C69617465733A2063616E6E6F7420776974686472617720746F207A DUP2 MSTORE PUSH11 0x65726F2061646472657373 PUSH1 0xA8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x293D PUSH1 0x2A DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2989 PUSH1 0x1F DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B78 DUP3 DUP5 PUSH2 0x2613 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD49 DUP3 DUP5 PUSH2 0x254B JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x29DD DUP3 DUP7 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x29EA PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2313 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x260A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2A05 DUP3 DUP6 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x1B78 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x260A JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x2A20 DUP3 DUP9 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2A2D PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2A3A PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2A47 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2A54 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x260A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1B78 DUP2 DUP5 PUSH2 0x255A JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2A80 DUP2 DUP6 PUSH2 0x255A JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x2313 DUP2 DUP5 PUSH2 0x25B3 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD49 DUP3 DUP5 PUSH2 0x2601 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2AB0 DUP3 DUP6 PUSH2 0x2601 JUMP JUMPDEST PUSH2 0x1B78 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2601 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x2ACC DUP3 DUP12 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2AD9 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x2601 JUMP JUMPDEST PUSH2 0x2AE6 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2AF3 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2B00 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2B0D PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B1A PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B27 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x260A JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x2B43 DUP3 DUP16 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B50 PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B5D PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B6A PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x2601 JUMP JUMPDEST PUSH2 0x2B77 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B84 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B91 PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B9E PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2BAC PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2BBA PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2BC8 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2BD6 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x254B JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD49 DUP3 DUP5 PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1B78 DUP2 DUP5 PUSH2 0x264B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x2683 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x26D7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x26F9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x2741 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x278A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x27C3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x2806 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x283F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x2878 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x28BB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x28E3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x2930 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x297C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD49 DUP3 DUP5 PUSH2 0x260A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2A05 DUP3 DUP6 PUSH2 0x260A JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x2D00 DUP3 DUP7 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x29EA PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x260A JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x2A20 DUP3 DUP9 PUSH2 0x260A JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x2D29 DUP3 DUP10 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2D36 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2D43 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2D50 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2D5D PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2D6A PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x260A JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD49 DUP3 PUSH2 0x2DAD JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD49 DUP3 PUSH2 0x2D8D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DDF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2DC7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x21A1 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x2E03 DUP2 PUSH2 0x2D8D JUMP JUMPDEST DUP2 EQ PUSH2 0x19B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E03 DUP2 PUSH2 0x2D98 JUMP JUMPDEST PUSH2 0x2E03 DUP2 PUSH2 0x2D9D JUMP JUMPDEST PUSH2 0x2E03 DUP2 PUSH2 0x2DA0 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 JUMPI JUMP DIV DUP9 DUP9 SSTORE MUL SHL 0xCA 0x4C 0xFC SWAP12 0xD PUSH21 0xE8A3F32445740523B2205DC254F518FCBE436C6578 PUSH17 0x6572696D656E74616CF564736F6C634300 SDIV GT STOP BLOCKHASH ",
              "sourceMap": "764:17081:126:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;959:23:126;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;764:17081:126;;780:87:137;853:10;780:87;:::o;764:17081:126:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106103fc5760003560e01c806392d894f811610215578063c9ddf44811610125578063edab119f116100b8578063f2fde38b11610087578063f2fde38b14610872578063f589a3e714610885578063f6ddc8b31461088d578063f706b1f214610895578063f851a4401461089d576103fc565b8063edab119f1461082e578063f06a9c6b14610836578063f0e085f514610849578063f19ece6f14610851576103fc565b8063d473c2da116100f4578063d473c2da146107f8578063d485045e14610800578063d80100ea14610813578063e8f6276414610826576103fc565b8063c9ddf448146107a3578063cb6eacd1146107b6578063cd5d808d146107dd578063d288208c146107f0576103fc565b8063b05f6570116101a8578063b9cffa3e11610177578063b9cffa3e14610742578063ba4861e91461074a578063bdee453c14610752578063c4a9081514610765578063c4d66de814610790576103fc565b8063b05f657014610701578063b30643d914610714578063b41263b614610727578063b7e152411461072f576103fc565b8063acc04348116101e4578063acc04348146106c9578063adfcbc98146106d1578063ae0a8530146106e4578063afe84009146106ec576103fc565b806392d894f814610686578063959083d314610699578063a22473a2146106a1578063ac92fd8e146106b4576103fc565b80634699f84611610310578063742e6798116102a35780638417a2ae116102725780638417a2ae146106485780638456cb591461065b5780638da5cb5b146106635780638dc48ba51461066b5780638f32d59b1461067e576103fc565b8063742e67981461062857806378d849ed146106305780637a8faeb814610638578063824fcdc914610640576103fc565b806362fff3f6116102df57806362fff3f6146105d657806368c4ac26146105fa5780636e6637301461060d5780637420ca3e14610620576103fc565b80634699f8461461059c5780634f28cac2146105a4578063569fc1fb146105ac578063574442cc146105ce576103fc565b8063249556fb116103935780633432423c116103625780633432423c1461053d5780633452d2d4146105505780633fca506e146105635780634115a2b6146105765780634203e39514610589576103fc565b8063249556fb146104fa57806324cc57491461050d5780632a3240271461052d5780632f47076414610535576103fc565b806317548b79116103cf57806317548b79146104945780631b7bde74146104a75780631c9f66c2146104c7578063218b39c6146104e7576103fc565b8063065d810f1461041d5780630676c1b71461044b5780630d4d11fe14610460578063115cc0ce14610481575b60405162461bcd60e51b815260040161041490612c56565b60405180910390fd5b61043061042b366004612482565b6108a5565b60405161044296959493929190612d1b565b60405180910390f35b6104536108e5565b60405161044291906129c1565b61047361046e3660046123d4565b6108f4565b604051610442929190612ce4565b61045361048f36600461237c565b610ccf565b6104536104a236600461250d565b610ced565b6104ba6104b536600461239a565b610d08565b6040516104429190612cd6565b6104da6104d536600461237c565b610d25565b6040516104429190612a5e565b6104536104f536600461237c565b610d4f565b6104da61050836600461237c565b610d6a565b61052061051b36600461237c565b610d8e565b6040516104429190612a94565b6104ba610da3565b6104ba610da9565b61043061054b366004612482565b610daf565b6104ba61055e36600461237c565b610def565b6104ba61057136600461237c565b610e01565b6105206105843660046124ee565b610e13565b6104ba61059736600461237c565b610e33565b6104ba610e45565b6104ba610e4b565b6105bf6105ba3660046124d0565b610e51565b60405161044293929190612cf2565b6104ba610e72565b6105e96105e436600461239a565b610e78565b604051610442959493929190612d0d565b61052061060836600461237c565b610eb2565b61045361061b36600461237c565b610ec7565b610453610ee2565b6104ba610ef1565b610453610ef7565b6104ba610f06565b6104ba610f0c565b6104ba61065636600461237c565b610f12565b610520610f2d565b610453610f36565b61045361067936600461237c565b610f45565b610520610f60565b6104ba61069436600461237c565b610f86565b6104ba610f98565b6104ba6106af36600461239a565b610f9e565b6106c76106c2366004612435565b610fc9565b005b6104ba611178565b6106c76106df36600461237c565b61117e565b6104ba61126b565b6106f4611271565b6040516104429190612be7565b61052061070f36600461237c565b611280565b6104ba61072236600461237c565b61129e565b6104ba6112b0565b6104ba61073d36600461237c565b6112b6565b6104536112c8565b6104536112d7565b6104ba61076036600461237c565b6112e6565b6107786107733660046124d0565b6112f8565b6040516104429c9b9a99989796959493929190612b34565b6106c761079e36600461237c565b61136a565b6106c76107b136600461239a565b611516565b6107c96107c43660046124d0565b6116c0565b604051610442989796959493929190612abd565b6104ba6107eb36600461239a565b611712565b61045361172f565b6104ba61173e565b6104ba61080e36600461237c565b611744565b6104ba61082136600461237c565b611756565b6104536118da565b6104ba6118e9565b6106c761084436600461237c565b6118ef565b6104ba6119b4565b61086461085f36600461237c565b6119ba565b604051610442929190612a6f565b6106c761088036600461237c565b611a44565b6104ba611a71565b6104ba611a77565b610453611a7d565b610453611a8c565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b60315460009081906001600160a01b031633146109235760405162461bcd60e51b815260040161041490612c76565b603d5460ff16156109465760405162461bcd60e51b815260040161041490612c16565b60006109506112b0565b6001600160a01b038816600090815260346020526040902061097190611a9b565b1090506001600061098186611aa2565b6001600160a01b038a166000908152603a602052604090209094506109ac908863ffffffff611ad516565b6109da576001600160a01b0389166000908152603a602052604090206109d8908863ffffffff611af316565b505b6001600160a01b03808a166000908152603b60209081526040808320938b1683529290522054610a10908563ffffffff611b5316565b6001600160a01b03808b166000908152603b60209081526040808320938c1683529290522055610a408787611b7f565b6001600160a01b038a166000908152603660205260409020549095508315610a9057610a72818763ffffffff611b5316565b6001600160a01b038b16600090815260366020526040902055610c0d565b6001600160a01b038a1660009081526036602052604090205415610ac8576001600160a01b038a166000908152603660205260408120555b610ad8868263ffffffff611b5316565b60375460385460405163095ea7b360e01b81529294506001600160a01b039182169263095ea7b392610b1092169086906004016129f7565b602060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b6291908101906124b2565b506038546040516000916001600160a01b031690610b86908d9086906024016129f7565b60408051601f198184030181529181526020820180516001600160e01b031663f33bf9a160e01b17905251610bbb91906129b5565b6000604051808303816000865af19150503d8060008114610bf8576040519150601f19603f3d011682016040523d82523d6000602084013e610bfd565b606091505b5050905080610c0b57600093505b505b8215610c6e57831515886001600160a01b03168b6001600160a01b03167f956d8d442c76f1bedc4178cda59c4ad17c135bd6ec5a603a39fbfe5a320dbbc08c8b8a8c89604051610c61959493929190612a12565b60405180910390a4610cc2565b876001600160a01b03168a6001600160a01b03167f0909aef8097f3ad1e03459f173d44656bde668485239e8d83d9dcbc8af63d1408b8a898b88604051610cb9959493929190612a12565b60405180910390a35b5050505094509492505050565b6001600160a01b039081166000908152603360205260409020541690565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6001600160a01b0381166000908152603a60205260409020606090610d4990611c7f565b92915050565b6023602052600090815260409020546001600160a01b031681565b6001600160a01b0381166000908152603460205260409020606090610d4990611c7f565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b60395490565b6001600160a01b031660009081526036602052604090205490565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610f77611d25565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b603d5460ff1615610fec5760405162461bcd60e51b815260040161041490612c16565b6001600160a01b0382166110125760405162461bcd60e51b815260040161041490612ca6565b336000818152603b602090815260408083206001600160a01b0388168452909152812054908382116110445781611046565b835b9050600081116110685760405162461bcd60e51b815260040161041490612c36565b6110706112b0565b6001600160a01b038416600090815260346020526040902061109190611a9b565b10156110af5760405162461bcd60e51b815260040161041490612c06565b60006110c1838363ffffffff611d2916565b9050806110d7576110d28488611d6b565b611100565b6001600160a01b038085166000908152603b60209081526040808320938b168352929052208190555b61111a6001600160a01b038816878463ffffffff611dae16565b866001600160a01b0316866001600160a01b0316856001600160a01b03167f7e121a301046a79dbdc6bb475ff36f651f88a7cb91fefd7cb8aa4b9f4a33b20b856040516111679190612cd6565b60405180910390a450505050505050565b602f5481565b603d5460ff16156111a15760405162461bcd60e51b815260040161041490612c16565b6001600160a01b0381166111c75760405162461bcd60e51b815260040161041490612ca6565b336111d06112b0565b6001600160a01b03821660009081526034602052604090206111f190611a9b565b101561120f5760405162461bcd60e51b815260040161041490612c06565b60608061121b836119ba565b9150915060005b82518110156112645761125c83828151811061123a57fe5b60200260200101518684848151811061124f57fe5b6020026020010151610fc9565b600101611222565b5050505050565b60205481565b602d546001600160a01b031681565b6001600160a01b031660009081526032602052604090205460ff1690565b601d6020526000908152604090205481565b60355490565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b611372610f60565b61138e5760405162461bcd60e51b815260040161041490612c96565b63193bbe8960e31b600081905260056020527fa32428c5f7f1f49cbf6b6f0ae7823841efc255f4d2b6125ce4b307c53dc525c7546001600160a01b0316906113d69083611e07565b6113e7630b05f65760e41b83611e07565b6113f863249556fb60e01b83611e07565b61140963f06a9c6b60e01b83611e07565b61141a6306a688ff60e11b83611e07565b61142b63f19ece6f60e01b83611e07565b61143c63511239d160e11b83611e07565b61144d630e4fb36160e11b83611e07565b61145e6356497ec760e11b83611e07565b61146f6315bf979360e31b83611e07565b611480635a0931db60e11b83611e07565b6114916308ae606760e11b83611e07565b6114a263420bd15760e11b83611e07565b6114b363824fcdc960e01b83611e07565b6114c4636c00807560e11b83611e07565b69416666696c696174657360b01b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b336000908152602260205260409020546001600160a01b031661154b5760405162461bcd60e51b815260040161041490612c76565b603d5460ff161561156e5760405162461bcd60e51b815260040161041490612c16565b611576612330565b61157f83611280565b151560408083019182526001600160a01b03858116600090815260336020908152929020541615159083015251806115b8575080602001515b806115d45750816001600160a01b0316836001600160a01b0316145b1580825215611665576001600160a01b03838116600090815260336020908152604080832080546001600160a01b0319169487169485179055928252603490522061161f9084611af3565b50816001600160a01b0316836001600160a01b03167f01085a2bdafb7e1bf8c2744a99befcb7d35fd44ce0fec8273e65687bf69b40d260405160405180910390a36116bb565b816001600160a01b0316836001600160a01b03167f5fcda235bf45571cdfcce3194fdec51249320ea208d33ddf19457f971fbce052836020015184604001516040516116b2929190612aa2565b60405180910390a35b505050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6000606061176383610d25565b6002549091506001600160a01b031660005b82518110156118d25782516000906060906001600160a01b0385169063d138f9a160e01b908790869081106117a657fe5b6020026020010151602d60009054906101000a90046001600160a01b0316603b60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008a89815181106117f757fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054604051602401611832939291906129cf565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161187091906129b5565b600060405180830381855afa9150503d80600081146118ab576040519150601f19603f3d011682016040523d82523d6000602084013e6118b0565b606091505b509150915060018214156118c8576020810151860195505b5050600101611775565b505050919050565b6014546001600160a01b031681565b601b5481565b336000908152602260205260409020546001600160a01b03166119245760405162461bcd60e51b815260040161041490612c76565b603d5460ff16156119475760405162461bcd60e51b815260040161041490612c16565b6001600160a01b03811660009081526032602052604090205460ff166119b1576001600160a01b038116600081815260326020526040808220805460ff19166001179055517fa4c47359ccbdf26dba0d446255196fdc8d493dea957ded328aaa20f86afa694d9190a25b50565b60285481565b6060806119c683610d25565b915081516040519080825280602002602001820160405280156119f3578160200160208202803883390190505b50905060005b8251811015611a3e57611a1f84848381518110611a1257fe5b6020026020010151610f9e565b828281518110611a2b57fe5b60209081029190910101526001016119f9565b50915091565b611a4c610f60565b611a685760405162461bcd60e51b815260040161041490612c96565b6119b181611e81565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6001015490565b6000610d4968056bc75e2d63100000611ac9611abc610f0c565b859063ffffffff611f0316565b9063ffffffff611f3d16565b6001600160a01b031660009081526020919091526040902054151590565b6000611aff8383611ad5565b611b4b5750600182810180548083018083556000928352602080842090920180546001600160a01b0319166001600160a01b038716908117909155835290859052604090912055610d49565b506000610d49565b600082820183811015611b785760405162461bcd60e51b815260040161041490612c46565b9392505050565b60025460375460009182916001600160a01b03918216918391606091849163d138f9a160e01b918a9116611bce68056bc75e2d63100000611ac9611bc1611f7f565b8d9063ffffffff611f0316565b604051602401611be0939291906129cf565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611c1e91906129b5565b600060405180830381855afa9150503d8060008114611c59576040519150601f19603f3d011682016040523d82523d6000602084013e611c5e565b606091505b50915091506001821415611c7457602081015193505b509195945050505050565b6060808260010180549050604051908082528060200260200182016040528015611cb3578160200160208202803883390190505b50905060005b6001840154811015611d1e57836001018181548110611cd457fe5b9060005260206000200160009054906101000a90046001600160a01b0316828281518110611cfe57fe5b6001600160a01b0390921660209283029190910190910152600101611cb9565b5092915050565b3390565b6000611b7883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f85565b6001600160a01b038083166000818152603b602090815260408083209486168352938152838220829055918152603a909152206116bb908263ffffffff611fb116565b6040516116bb90849063a9059cbb60e01b90611dd090869086906024016129f7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526120bc565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b03831690811790915515611e6257611e5c600d6001600160e01b0319841663ffffffff6121a716565b50611e7d565b6116bb600d6001600160e01b0319841663ffffffff6121e716565b5050565b6001600160a01b038116611ea75760405162461bcd60e51b815260040161041490612c26565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600082611f1257506000610d49565b82820282848281611f1f57fe5b0414611b785760405162461bcd60e51b815260040161041490612c86565b6000611b7883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122a8565b60205490565b60008184841115611fa95760405162461bcd60e51b81526004016104149190612bf5565b505050900390565b6000611fbd8383611ad5565b15611b4b576001600160a01b0382166000908152602084905260409020546001840154600019918201910180821461206857600085600101828154811061200057fe5b6000918252602090912001546001870180546001600160a01b03909216925082918590811061202b57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815290869052604090206001830190555b6001600160a01b0384166000908152602086905260408120556001850180548061208e57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555060019150610d499050565b6120ce826001600160a01b03166122df565b6120ea5760405162461bcd60e51b815260040161041490612cc6565b60006060836001600160a01b03168360405161210691906129b5565b6000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b50915091508161216a5760405162461bcd60e51b815260040161041490612c66565b8051156121a1578080602001905161218591908101906124b2565b6121a15760405162461bcd60e51b815260040161041490612cb6565b50505050565b60006121b3838361231b565b611b4b5750600180830180548083018083556000928352602080842090920185905584835290859052604090912055610d49565b60006121f3838361231b565b15611b4b576000828152602084905260409020546001840154600019918201910180821461226b57600085600101828154811061222c57fe5b906000526020600020015490508086600101848154811061224957fe5b6000918252602080832090910192909255918252869052604090206001830190555b6000848152602086905260408120556001850180548061228757fe5b60019003818190600052602060002001600090559055600192505050610d49565b600081836122c95760405162461bcd60e51b81526004016104149190612bf5565b5060008385816122d557fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061231357508115155b949350505050565b60009081526020919091526040902054151590565b604080516060810182526000808252602082018190529181019190915290565b8035610d4981612dfa565b8051610d4981612e0e565b8035610d4981612e17565b8035610d4981612e20565b60006020828403121561238e57600080fd5b60006123138484612350565b600080604083850312156123ad57600080fd5b60006123b98585612350565b92505060206123ca85828601612350565b9150509250929050565b600080600080608085870312156123ea57600080fd5b60006123f68787612350565b945050602061240787828801612350565b935050604061241887828801612350565b925050606061242987828801612366565b91505092959194509250565b60008060006060848603121561244a57600080fd5b60006124568686612350565b935050602061246786828701612350565b925050604061247886828701612366565b9150509250925092565b6000806040838503121561249557600080fd5b60006124a18585612350565b92505060206123ca85828601612366565b6000602082840312156124c457600080fd5b6000612313848461235b565b6000602082840312156124e257600080fd5b60006123138484612366565b6000806040838503121561250157600080fd5b60006123b98585612366565b60006020828403121561251f57600080fd5b60006123138484612371565b6000612537838361254b565b505060200190565b6000612537838361260a565b61255481612d8d565b82525050565b600061256582612d7b565b61256f8185612d7f565b935061257a83612d75565b8060005b838110156125a8578151612592888261252b565b975061259d83612d75565b92505060010161257e565b509495945050505050565b60006125be82612d7b565b6125c88185612d7f565b93506125d383612d75565b8060005b838110156125a85781516125eb888261253f565b97506125f683612d75565b9250506001016125d7565b61255481612d98565b61255481612d9d565b600061261e82612d7b565b6126288185612d88565b9350612638818560208601612dc4565b9290920192915050565b61255481612db9565b600061265682612d7b565b6126608185612d7f565b9350612670818560208601612dc4565b61267981612df0565b9093019392505050565b6000612690603283612d7f565b7f596f757220726566657272616c7320686173206e6f74207265616368656420748152711a19481b5a5b9a5b5d5b481c995c5d595cdd60721b602082015260400192915050565b60006126e4600683612d7f565b6514185d5cd95960d21b815260200192915050565b6000612706602683612d7f565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b600061274e602783612d7f565b7f416666696c69617465733a2063616e6e6f74207769746864726177207a65726f81526608185b5bdd5b9d60ca1b602082015260400192915050565b6000612797601b83612d7f565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006127d0602183612d7f565b7f416666696c6961746573202d2066616c6c6261636b206e6f7420616c6c6f77658152601960fa1b602082015260400192915050565b6000612813602083612d7f565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b600061284c601a83612d7f565b7f416666696c69617465733a206e6f7420617574686f72697a6564000000000000815260200192915050565b6000612885602183612d7f565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006128c8600c83612d7f565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006128f0602b83612d7f565b7f416666696c69617465733a2063616e6e6f7420776974686472617720746f207a81526a65726f206164647265737360a81b602082015260400192915050565b600061293d602a83612d7f565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b6000612989601f83612d7f565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6000611b788284612613565b60208101610d49828461254b565b606081016129dd828661254b565b6129ea602083018561254b565b612313604083018461260a565b60408101612a05828561254b565b611b78602083018461260a565b60a08101612a20828861254b565b612a2d602083018761260a565b612a3a604083018661260a565b612a47606083018561260a565b612a54608083018461260a565b9695505050505050565b60208082528101611b78818461255a565b60408082528101612a80818561255a565b9050818103602083015261231381846125b3565b60208101610d498284612601565b60408101612ab08285612601565b611b786020830184612601565b6101008101612acc828b61260a565b612ad9602083018a612601565b612ae6604083018961254b565b612af3606083018861254b565b612b00608083018761254b565b612b0d60a083018661260a565b612b1a60c083018561260a565b612b2760e083018461260a565b9998505050505050505050565b6101808101612b43828f61260a565b612b50602083018e61260a565b612b5d604083018d61260a565b612b6a606083018c612601565b612b77608083018b61260a565b612b8460a083018a61260a565b612b9160c083018961260a565b612b9e60e083018861260a565b612bac61010083018761260a565b612bba61012083018661260a565b612bc861014083018561254b565b612bd661016083018461254b565b9d9c50505050505050505050505050565b60208101610d498284612642565b60208082528101611b78818461264b565b60208082528101610d4981612683565b60208082528101610d49816126d7565b60208082528101610d49816126f9565b60208082528101610d4981612741565b60208082528101610d498161278a565b60208082528101610d49816127c3565b60208082528101610d4981612806565b60208082528101610d498161283f565b60208082528101610d4981612878565b60208082528101610d49816128bb565b60208082528101610d49816128e3565b60208082528101610d4981612930565b60208082528101610d498161297c565b60208101610d49828461260a565b60408101612a05828561260a565b60608101612d00828661260a565b6129ea602083018561260a565b60a08101612a20828861260a565b60c08101612d29828961260a565b612d36602083018861260a565b612d43604083018761260a565b612d50606083018661260a565b612d5d608083018561260a565b612d6a60a083018461260a565b979650505050505050565b60200190565b5190565b90815260200190565b919050565b6000610d4982612dad565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b6000610d4982612d8d565b60005b83811015612ddf578181015183820152602001612dc7565b838111156121a15750506000910152565b601f01601f191690565b612e0381612d8d565b81146119b157600080fd5b612e0381612d98565b612e0381612d9d565b612e0381612da056fea365627a7a72315820575604888855021bca4cfc9b0d74e8a3f32445740523b2205dc254f518fcbe436c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3FC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92D894F8 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0xC9DDF448 GT PUSH2 0x125 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x872 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x885 JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x88D JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x895 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x89D JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x82E JUMPI DUP1 PUSH4 0xF06A9C6B EQ PUSH2 0x836 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x849 JUMPI DUP1 PUSH4 0xF19ECE6F EQ PUSH2 0x851 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xD473C2DA GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x7F8 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0xD80100EA EQ PUSH2 0x813 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x826 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xC9DDF448 EQ PUSH2 0x7A3 JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7B6 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x7DD JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x7F0 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xB05F6570 GT PUSH2 0x1A8 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x177 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x742 JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x74A JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x752 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x765 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x790 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xB05F6570 EQ PUSH2 0x701 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0xB41263B6 EQ PUSH2 0x727 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x72F JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0xACC04348 GT PUSH2 0x1E4 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xADFCBC98 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6E4 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6EC JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x686 JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x699 JUMPI DUP1 PUSH4 0xA22473A2 EQ PUSH2 0x6A1 JUMPI DUP1 PUSH4 0xAC92FD8E EQ PUSH2 0x6B4 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x310 JUMPI DUP1 PUSH4 0x742E6798 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x8417A2AE GT PUSH2 0x272 JUMPI DUP1 PUSH4 0x8417A2AE EQ PUSH2 0x648 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x65B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x663 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x67E JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x742E6798 EQ PUSH2 0x628 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x630 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x638 JUMPI DUP1 PUSH4 0x824FCDC9 EQ PUSH2 0x640 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x62FFF3F6 GT PUSH2 0x2DF JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x5D6 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x60D JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x620 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x59C JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x5A4 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x5AC JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x5CE JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x249556FB GT PUSH2 0x393 JUMPI DUP1 PUSH4 0x3432423C GT PUSH2 0x362 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x550 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x563 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x576 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x589 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x249556FB EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x50D JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x52D JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x535 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x17548B79 GT PUSH2 0x3CF JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0x1C9F66C2 EQ PUSH2 0x4C7 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x4E7 JUMPI PUSH2 0x3FC JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x41D JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x44B JUMPI DUP1 PUSH4 0xD4D11FE EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0x115CC0CE EQ PUSH2 0x481 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x430 PUSH2 0x42B CALLDATASIZE PUSH1 0x4 PUSH2 0x2482 JUMP JUMPDEST PUSH2 0x8A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x453 PUSH2 0x8E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP2 SWAP1 PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x473 PUSH2 0x46E CALLDATASIZE PUSH1 0x4 PUSH2 0x23D4 JUMP JUMPDEST PUSH2 0x8F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP3 SWAP2 SWAP1 PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x48F CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xCCF JUMP JUMPDEST PUSH2 0x453 PUSH2 0x4A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x250D JUMP JUMPDEST PUSH2 0xCED JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x239A JUMP JUMPDEST PUSH2 0xD08 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP2 SWAP1 PUSH2 0x2CD6 JUMP JUMPDEST PUSH2 0x4DA PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xD25 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP2 SWAP1 PUSH2 0x2A5E JUMP JUMPDEST PUSH2 0x453 PUSH2 0x4F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xD4F JUMP JUMPDEST PUSH2 0x4DA PUSH2 0x508 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xD6A JUMP JUMPDEST PUSH2 0x520 PUSH2 0x51B CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP2 SWAP1 PUSH2 0x2A94 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xDA3 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0x430 PUSH2 0x54B CALLDATASIZE PUSH1 0x4 PUSH2 0x2482 JUMP JUMPDEST PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x55E CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xDEF JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x571 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xE01 JUMP JUMPDEST PUSH2 0x520 PUSH2 0x584 CALLDATASIZE PUSH1 0x4 PUSH2 0x24EE JUMP JUMPDEST PUSH2 0xE13 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x597 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xE33 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xE45 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xE4B JUMP JUMPDEST PUSH2 0x5BF PUSH2 0x5BA CALLDATASIZE PUSH1 0x4 PUSH2 0x24D0 JUMP JUMPDEST PUSH2 0xE51 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xE72 JUMP JUMPDEST PUSH2 0x5E9 PUSH2 0x5E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x239A JUMP JUMPDEST PUSH2 0xE78 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D0D JUMP JUMPDEST PUSH2 0x520 PUSH2 0x608 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xEB2 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x61B CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xEC7 JUMP JUMPDEST PUSH2 0x453 PUSH2 0xEE2 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xEF1 JUMP JUMPDEST PUSH2 0x453 PUSH2 0xEF7 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xF06 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xF0C JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x656 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x520 PUSH2 0xF2D JUMP JUMPDEST PUSH2 0x453 PUSH2 0xF36 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x679 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xF45 JUMP JUMPDEST PUSH2 0x520 PUSH2 0xF60 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x694 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0xF86 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0xF98 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x6AF CALLDATASIZE PUSH1 0x4 PUSH2 0x239A JUMP JUMPDEST PUSH2 0xF9E JUMP JUMPDEST PUSH2 0x6C7 PUSH2 0x6C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2435 JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4BA PUSH2 0x1178 JUMP JUMPDEST PUSH2 0x6C7 PUSH2 0x6DF CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x117E JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x126B JUMP JUMPDEST PUSH2 0x6F4 PUSH2 0x1271 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP2 SWAP1 PUSH2 0x2BE7 JUMP JUMPDEST PUSH2 0x520 PUSH2 0x70F CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x722 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x129E JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x12B0 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x73D CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x12C8 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x12D7 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x760 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x12E6 JUMP JUMPDEST PUSH2 0x778 PUSH2 0x773 CALLDATASIZE PUSH1 0x4 PUSH2 0x24D0 JUMP JUMPDEST PUSH2 0x12F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B34 JUMP JUMPDEST PUSH2 0x6C7 PUSH2 0x79E CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x136A JUMP JUMPDEST PUSH2 0x6C7 PUSH2 0x7B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x239A JUMP JUMPDEST PUSH2 0x1516 JUMP JUMPDEST PUSH2 0x7C9 PUSH2 0x7C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x24D0 JUMP JUMPDEST PUSH2 0x16C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2ABD JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x7EB CALLDATASIZE PUSH1 0x4 PUSH2 0x239A JUMP JUMPDEST PUSH2 0x1712 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x172F JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x173E JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x80E CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x1744 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x821 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x1756 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x18E9 JUMP JUMPDEST PUSH2 0x6C7 PUSH2 0x844 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x18EF JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x19B4 JUMP JUMPDEST PUSH2 0x864 PUSH2 0x85F CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x19BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP3 SWAP2 SWAP1 PUSH2 0x2A6F JUMP JUMPDEST PUSH2 0x6C7 PUSH2 0x880 CALLDATASIZE PUSH1 0x4 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x1A44 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x1A71 JUMP JUMPDEST PUSH2 0x4BA PUSH2 0x1A77 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x1A7D JUMP JUMPDEST PUSH2 0x453 PUSH2 0x1A8C JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x923 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C76 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x946 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C16 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x950 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x971 SWAP1 PUSH2 0x1A9B JUMP JUMPDEST LT SWAP1 POP PUSH1 0x1 PUSH1 0x0 PUSH2 0x981 DUP7 PUSH2 0x1AA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP5 POP PUSH2 0x9AC SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1AD5 AND JUMP JUMPDEST PUSH2 0x9DA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x9D8 SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1AF3 AND JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0xA10 SWAP1 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1B53 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SSTORE PUSH2 0xA40 DUP8 DUP8 PUSH2 0x1B7F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP6 POP DUP4 ISZERO PUSH2 0xA90 JUMPI PUSH2 0xA72 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1B53 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xC0D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0xAC8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMPDEST PUSH2 0xAD8 DUP7 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B53 AND JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0xB10 SWAP3 AND SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x29F7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xB62 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x24B2 JUMP JUMPDEST POP PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xB86 SWAP1 DUP14 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x29F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xF33BF9A1 PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0xBBB SWAP2 SWAP1 PUSH2 0x29B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xBF8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xC0B JUMPI PUSH1 0x0 SWAP4 POP JUMPDEST POP JUMPDEST DUP3 ISZERO PUSH2 0xC6E JUMPI DUP4 ISZERO ISZERO DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x956D8D442C76F1BEDC4178CDA59C4AD17C135BD6EC5A603A39FBFE5A320DBBC0 DUP13 DUP12 DUP11 DUP13 DUP10 PUSH1 0x40 MLOAD PUSH2 0xC61 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2A12 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xCC2 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x909AEF8097F3AD1E03459F173D44656BDE668485239E8D83D9DCBC8AF63D140 DUP12 DUP11 DUP10 DUP12 DUP9 PUSH1 0x40 MLOAD PUSH2 0xCB9 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2A12 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x60 SWAP1 PUSH2 0xD49 SWAP1 PUSH2 0x1C7F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x60 SWAP1 PUSH2 0xD49 SWAP1 PUSH2 0x1C7F JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF77 PUSH2 0x1D25 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xFEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1012 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2CA6 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 DUP4 DUP3 GT PUSH2 0x1044 JUMPI DUP2 PUSH2 0x1046 JUMP JUMPDEST DUP4 JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x1068 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C36 JUMP JUMPDEST PUSH2 0x1070 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1091 SWAP1 PUSH2 0x1A9B JUMP JUMPDEST LT ISZERO PUSH2 0x10AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C06 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10C1 DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1D29 AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x10D7 JUMPI PUSH2 0x10D2 DUP5 DUP9 PUSH2 0x1D6B JUMP JUMPDEST PUSH2 0x1100 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH2 0x111A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP8 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1DAE AND JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7E121A301046A79DBDC6BB475FF36F651F88A7CB91FEFD7CB8AA4B9F4A33B20B DUP6 PUSH1 0x40 MLOAD PUSH2 0x1167 SWAP2 SWAP1 PUSH2 0x2CD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x11A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x11C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2CA6 JUMP JUMPDEST CALLER PUSH2 0x11D0 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x11F1 SWAP1 PUSH2 0x1A9B JUMP JUMPDEST LT ISZERO PUSH2 0x120F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C06 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x121B DUP4 PUSH2 0x19BA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1264 JUMPI PUSH2 0x125C DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x123A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x124F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xFC9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1222 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0x1372 PUSH2 0xF60 JUMP JUMPDEST PUSH2 0x138E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C96 JUMP JUMPDEST PUSH4 0x193BBE89 PUSH1 0xE3 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xA32428C5F7F1F49CBF6B6F0AE7823841EFC255F4D2B6125CE4B307C53DC525C7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x13D6 SWAP1 DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x13E7 PUSH4 0xB05F657 PUSH1 0xE4 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x13F8 PUSH4 0x249556FB PUSH1 0xE0 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x1409 PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x141A PUSH4 0x6A688FF PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x142B PUSH4 0xF19ECE6F PUSH1 0xE0 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x143C PUSH4 0x511239D1 PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x144D PUSH4 0xE4FB361 PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x145E PUSH4 0x56497EC7 PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x146F PUSH4 0x15BF9793 PUSH1 0xE3 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x1480 PUSH4 0x5A0931DB PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x1491 PUSH4 0x8AE6067 PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x14A2 PUSH4 0x420BD157 PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x14B3 PUSH4 0x824FCDC9 PUSH1 0xE0 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH2 0x14C4 PUSH4 0x6C008075 PUSH1 0xE1 SHL DUP4 PUSH2 0x1E07 JUMP JUMPDEST PUSH10 0x416666696C6961746573 PUSH1 0xB0 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x154B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C76 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x156E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C16 JUMP JUMPDEST PUSH2 0x1576 PUSH2 0x2330 JUMP JUMPDEST PUSH2 0x157F DUP4 PUSH2 0x1280 JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 SWAP1 DUP2 MSTORE SWAP3 SWAP1 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 DUP4 ADD MSTORE MLOAD DUP1 PUSH2 0x15B8 JUMPI POP DUP1 PUSH1 0x20 ADD MLOAD JUMPDEST DUP1 PUSH2 0x15D4 JUMPI POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO DUP1 DUP3 MSTORE ISZERO PUSH2 0x1665 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP5 DUP8 AND SWAP5 DUP6 OR SWAP1 SSTORE SWAP3 DUP3 MSTORE PUSH1 0x34 SWAP1 MSTORE KECCAK256 PUSH2 0x161F SWAP1 DUP5 PUSH2 0x1AF3 JUMP JUMPDEST POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1085A2BDAFB7E1BF8C2744A99BEFCB7D35FD44CE0FEC8273E65687BF69B40D2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x16BB JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5FCDA235BF45571CDFCCE3194FDEC51249320EA208D33DDF19457F971FBCE052 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x16B2 SWAP3 SWAP2 SWAP1 PUSH2 0x2AA2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x1763 DUP4 PUSH2 0xD25 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x18D2 JUMPI DUP3 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP1 DUP8 SWAP1 DUP7 SWAP1 DUP2 LT PUSH2 0x17A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2D PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x3B PUSH1 0x0 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x17F7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1832 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x1870 SWAP2 SWAP1 PUSH2 0x29B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x18AB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x18B0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x18C8 JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP7 ADD SWAP6 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1775 JUMP JUMPDEST POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1924 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C76 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1947 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x19B1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0xA4C47359CCBDF26DBA0D446255196FDC8D493DEA957DED328AAA20F86AFA694D SWAP2 SWAP1 LOG2 JUMPDEST POP JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x19C6 DUP4 PUSH2 0xD25 JUMP JUMPDEST SWAP2 POP DUP2 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x19F3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1A3E JUMPI PUSH2 0x1A1F DUP5 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A12 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xF9E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1A2B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19F9 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x1A4C PUSH2 0xF60 JUMP JUMPDEST PUSH2 0x1A68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C96 JUMP JUMPDEST PUSH2 0x19B1 DUP2 PUSH2 0x1E81 JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD49 PUSH9 0x56BC75E2D63100000 PUSH2 0x1AC9 PUSH2 0x1ABC PUSH2 0xF0C JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1F03 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1F3D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AFF DUP4 DUP4 PUSH2 0x1AD5 JUMP JUMPDEST PUSH2 0x1B4B JUMPI POP PUSH1 0x1 DUP3 DUP2 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xD49 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xD49 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1B78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C46 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x37 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 DUP4 SWAP2 PUSH1 0x60 SWAP2 DUP5 SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP11 SWAP2 AND PUSH2 0x1BCE PUSH9 0x56BC75E2D63100000 PUSH2 0x1AC9 PUSH2 0x1BC1 PUSH2 0x1F7F JUMP JUMPDEST DUP14 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1F03 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1BE0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x29CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x1C1E SWAP2 SWAP1 PUSH2 0x29B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C59 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C5E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x1C74 JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP4 POP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 PUSH1 0x1 ADD DUP1 SLOAD SWAP1 POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1CB3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1D1E JUMPI DUP4 PUSH1 0x1 ADD DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1CD4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1CFE JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1CB9 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B78 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1F85 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP7 AND DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 KECCAK256 DUP3 SWAP1 SSTORE SWAP2 DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP2 MSTORE KECCAK256 PUSH2 0x16BB SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1FB1 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16BB SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x1DD0 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x29F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x20BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x1E62 JUMPI PUSH2 0x1E5C PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x21A7 AND JUMP JUMPDEST POP PUSH2 0x1E7D JUMP JUMPDEST PUSH2 0x16BB PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x21E7 AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1EA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C26 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1F12 JUMPI POP PUSH1 0x0 PUSH2 0xD49 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1F1F JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1B78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C86 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B78 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x22A8 JUMP JUMPDEST PUSH1 0x20 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1FA9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP2 SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FBD DUP4 DUP4 PUSH2 0x1AD5 JUMP JUMPDEST ISZERO PUSH2 0x1B4B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x2068 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2000 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x202B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE SWAP1 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x208E JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP2 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE ADD SWAP1 SSTORE POP PUSH1 0x1 SWAP2 POP PUSH2 0xD49 SWAP1 POP JUMP JUMPDEST PUSH2 0x20CE DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x22DF JUMP JUMPDEST PUSH2 0x20EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2CC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2106 SWAP2 SWAP1 PUSH2 0x29B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2143 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2148 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x216A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2C66 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x21A1 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x2185 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x24B2 JUMP JUMPDEST PUSH2 0x21A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP1 PUSH2 0x2CB6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21B3 DUP4 DUP4 PUSH2 0x231B JUMP JUMPDEST PUSH2 0x1B4B JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xD49 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21F3 DUP4 DUP4 PUSH2 0x231B JUMP JUMPDEST ISZERO PUSH2 0x1B4B JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x226B JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x222C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2249 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x2287 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0xD49 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x22C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x414 SWAP2 SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x22D5 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2313 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xD49 DUP2 PUSH2 0x2DFA JUMP JUMPDEST DUP1 MLOAD PUSH2 0xD49 DUP2 PUSH2 0x2E0E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xD49 DUP2 PUSH2 0x2E17 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xD49 DUP2 PUSH2 0x2E20 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x238E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2313 DUP5 DUP5 PUSH2 0x2350 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x23B9 DUP6 DUP6 PUSH2 0x2350 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x23CA DUP6 DUP3 DUP7 ADD PUSH2 0x2350 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x23EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x23F6 DUP8 DUP8 PUSH2 0x2350 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x2407 DUP8 DUP3 DUP9 ADD PUSH2 0x2350 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x2418 DUP8 DUP3 DUP9 ADD PUSH2 0x2350 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x2429 DUP8 DUP3 DUP9 ADD PUSH2 0x2366 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x244A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2456 DUP7 DUP7 PUSH2 0x2350 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2467 DUP7 DUP3 DUP8 ADD PUSH2 0x2350 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2478 DUP7 DUP3 DUP8 ADD PUSH2 0x2366 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x24A1 DUP6 DUP6 PUSH2 0x2350 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x23CA DUP6 DUP3 DUP7 ADD PUSH2 0x2366 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2313 DUP5 DUP5 PUSH2 0x235B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2313 DUP5 DUP5 PUSH2 0x2366 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x23B9 DUP6 DUP6 PUSH2 0x2366 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2313 DUP5 DUP5 PUSH2 0x2371 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2537 DUP4 DUP4 PUSH2 0x254B JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2537 DUP4 DUP4 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2554 DUP2 PUSH2 0x2D8D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2565 DUP3 PUSH2 0x2D7B JUMP JUMPDEST PUSH2 0x256F DUP2 DUP6 PUSH2 0x2D7F JUMP JUMPDEST SWAP4 POP PUSH2 0x257A DUP4 PUSH2 0x2D75 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25A8 JUMPI DUP2 MLOAD PUSH2 0x2592 DUP9 DUP3 PUSH2 0x252B JUMP JUMPDEST SWAP8 POP PUSH2 0x259D DUP4 PUSH2 0x2D75 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x257E JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25BE DUP3 PUSH2 0x2D7B JUMP JUMPDEST PUSH2 0x25C8 DUP2 DUP6 PUSH2 0x2D7F JUMP JUMPDEST SWAP4 POP PUSH2 0x25D3 DUP4 PUSH2 0x2D75 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25A8 JUMPI DUP2 MLOAD PUSH2 0x25EB DUP9 DUP3 PUSH2 0x253F JUMP JUMPDEST SWAP8 POP PUSH2 0x25F6 DUP4 PUSH2 0x2D75 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x25D7 JUMP JUMPDEST PUSH2 0x2554 DUP2 PUSH2 0x2D98 JUMP JUMPDEST PUSH2 0x2554 DUP2 PUSH2 0x2D9D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x261E DUP3 PUSH2 0x2D7B JUMP JUMPDEST PUSH2 0x2628 DUP2 DUP6 PUSH2 0x2D88 JUMP JUMPDEST SWAP4 POP PUSH2 0x2638 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2DC4 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2554 DUP2 PUSH2 0x2DB9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2656 DUP3 PUSH2 0x2D7B JUMP JUMPDEST PUSH2 0x2660 DUP2 DUP6 PUSH2 0x2D7F JUMP JUMPDEST SWAP4 POP PUSH2 0x2670 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2DC4 JUMP JUMPDEST PUSH2 0x2679 DUP2 PUSH2 0x2DF0 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2690 PUSH1 0x32 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x596F757220726566657272616C7320686173206E6F7420726561636865642074 DUP2 MSTORE PUSH18 0x1A19481B5A5B9A5B5D5B481C995C5D595CDD PUSH1 0x72 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26E4 PUSH1 0x6 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2706 PUSH1 0x26 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x274E PUSH1 0x27 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x416666696C69617465733A2063616E6E6F74207769746864726177207A65726F DUP2 MSTORE PUSH7 0x8185B5BDD5B9D PUSH1 0xCA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2797 PUSH1 0x1B DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27D0 PUSH1 0x21 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x416666696C6961746573202D2066616C6C6261636B206E6F7420616C6C6F7765 DUP2 MSTORE PUSH1 0x19 PUSH1 0xFA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2813 PUSH1 0x20 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x284C PUSH1 0x1A DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x416666696C69617465733A206E6F7420617574686F72697A6564000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2885 PUSH1 0x21 DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28C8 PUSH1 0xC DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28F0 PUSH1 0x2B DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x416666696C69617465733A2063616E6E6F7420776974686472617720746F207A DUP2 MSTORE PUSH11 0x65726F2061646472657373 PUSH1 0xA8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x293D PUSH1 0x2A DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2989 PUSH1 0x1F DUP4 PUSH2 0x2D7F JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B78 DUP3 DUP5 PUSH2 0x2613 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD49 DUP3 DUP5 PUSH2 0x254B JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x29DD DUP3 DUP7 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x29EA PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2313 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x260A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2A05 DUP3 DUP6 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x1B78 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x260A JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x2A20 DUP3 DUP9 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2A2D PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2A3A PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2A47 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2A54 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x260A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1B78 DUP2 DUP5 PUSH2 0x255A JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2A80 DUP2 DUP6 PUSH2 0x255A JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x2313 DUP2 DUP5 PUSH2 0x25B3 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD49 DUP3 DUP5 PUSH2 0x2601 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2AB0 DUP3 DUP6 PUSH2 0x2601 JUMP JUMPDEST PUSH2 0x1B78 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2601 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x2ACC DUP3 DUP12 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2AD9 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x2601 JUMP JUMPDEST PUSH2 0x2AE6 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2AF3 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2B00 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2B0D PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B1A PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B27 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x260A JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x2B43 DUP3 DUP16 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B50 PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B5D PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B6A PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x2601 JUMP JUMPDEST PUSH2 0x2B77 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B84 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B91 PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2B9E PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2BAC PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2BBA PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2BC8 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2BD6 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x254B JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD49 DUP3 DUP5 PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1B78 DUP2 DUP5 PUSH2 0x264B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x2683 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x26D7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x26F9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x2741 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x278A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x27C3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x2806 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x283F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x2878 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x28BB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x28E3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x2930 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xD49 DUP2 PUSH2 0x297C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xD49 DUP3 DUP5 PUSH2 0x260A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2A05 DUP3 DUP6 PUSH2 0x260A JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x2D00 DUP3 DUP7 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x29EA PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x260A JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x2A20 DUP3 DUP9 PUSH2 0x260A JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x2D29 DUP3 DUP10 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2D36 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2D43 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2D50 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2D5D PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x260A JUMP JUMPDEST PUSH2 0x2D6A PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x260A JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD49 DUP3 PUSH2 0x2DAD JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD49 DUP3 PUSH2 0x2D8D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DDF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2DC7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x21A1 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x2E03 DUP2 PUSH2 0x2D8D JUMP JUMPDEST DUP2 EQ PUSH2 0x19B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E03 DUP2 PUSH2 0x2D98 JUMP JUMPDEST PUSH2 0x2E03 DUP2 PUSH2 0x2D9D JUMP JUMPDEST PUSH2 0x2E03 DUP2 PUSH2 0x2DA0 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 JUMPI JUMP DIV DUP9 DUP9 SSTORE MUL SHL 0xCA 0x4C 0xFC SWAP12 0xD PUSH21 0xE8A3F32445740523B2205DC254F518FCBE436C6578 PUSH17 0x6572696D656E74616CF564736F6C634300 SDIV GT STOP BLOCKHASH ",
              "sourceMap": "764:17081:126:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;764:17081:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1098:43;;-1:-1:-1;;;1098:43:126;;;;;;;;;;;;;;;;1636:67:14;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;;;;;9501:2325:126;;;;;;;;;:::i;:::-;;;;;;;;;17392:122;;;;;;;;;:::i;1270:46:14:-;;;;;;;;;:::i;6768:81::-;;;;;;;;;:::i;:::-;;;;;;;;16535:201:126;;;;;;;;;:::i;:::-;;;;;;;;4372:55:14;;;;;;;;;:::i;4730:164:126:-;;;;;;;;;:::i;5558:53:14:-;;;;;;;;;:::i;:::-;;;;;;;;3097:46;;;:::i;3969:32::-;;;:::i;1527:65::-;;;;;;;;;:::i;3376:55::-;;;;;;;;;:::i;4925:48::-;;;;;;;;;:::i;1744:69::-;;;;;;;;;:::i;2825:55::-;;;;;;;;;:::i;2717:41::-;;;:::i;4832:37::-;;;:::i;2013:52::-;;;;;;;;;:::i;:::-;;;;;;;;;;5060:50;;;:::i;1898:76::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;4542:47;;;;;;;;;:::i;5650:57::-;;;;;;;;;:::i;1087:24::-;;;:::i;6000:39::-;;;:::i;1012:25::-;;;:::i;3887:32::-;;;:::i;6810:122:126:-;;;:::i;17717:126::-;;;;;;;;;:::i;7007:17:14:-;;;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;;;;:::i;1134:83:142:-;;;:::i;2994:55:14:-;;;;;;;;;:::i;5113:49::-;;;:::i;17027:164:126:-;;;;;;;;;:::i;12417:1019::-;;;;;;;;;:::i;:::-;;5340:45:14;;;:::i;13638:592:126:-;;;;;;;;;:::i;4075:47:14:-;;;:::i;5175:29::-;;;:::i;:::-;;;;;;;;5077:117:126;;;;;;;;;:::i;3781:57:14:-;;;;;;;;;:::i;7153:100:126:-;;;:::i;3605:57:14:-;;;;;;;;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;;;;:::i;1347:37::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1554:1231:126;;;;;;;;;:::i;3889:652::-;;;;;;;;;:::i;1437:48:14:-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;6853:69;;;;;;;;;:::i;6305:31::-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;;;;:::i;15563:768:126:-;;;;;;;;;:::i;2626:29:14:-;;;:::i;3490:47::-;;;:::i;5320:220:126:-;;;;;;;;;:::i;4754:35:14:-;;;:::i;14886:516:126:-;;;;;;;;;:::i;:::-;;;;;;;;;1351:98:142;;;;;;;;;:::i;6447:60:14:-;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;9501:2325:126:-;3183:15;;9692:30;;;;-1:-1:-1;;;;;3183:15:126;3169:10;:29;3161:68;;;;-1:-1:-1;;;3161:68:126;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;9762:11:126;9811:25;:23;:25::i;:::-;-1:-1:-1;;;;;9776:23:126;;;;;;:13;:23;;;;;:32;;:30;:32::i;:::-;:60;;-1:-1:-1;9869:4:126;9840:26;9982:57;10013:25;9982:30;:57::i;:::-;-1:-1:-1;;;;;10048:38:126;;;;;;:28;:38;;;;;9955:84;;-1:-1:-1;10048:54:126;;10096:5;10048:54;:47;:54;:::i;:::-;10043:110;;-1:-1:-1;;;;;10104:38:126;;;;;;:28;:38;;;;;:49;;10147:5;10104:49;:42;:49;:::i;:::-;;10043:110;-1:-1:-1;;;;;10203:36:126;;;;;;;:26;:36;;;;;;;;:43;;;;;;;;;;:73;;10251:24;10203:73;:47;:73;:::i;:::-;-1:-1:-1;;;;;10157:36:126;;;;;;;:26;:36;;;;;;;;:43;;;;;;;;;:119;10338:52;10194:5;10364:25;10338:18;:52::i;:::-;-1:-1:-1;;;;;10426:30:126;;10394:29;10426:30;;;:20;:30;;;;;;10313:77;;-1:-1:-1;10461:823:126;;;;10586:49;:21;10612:22;10586:49;:25;:49;:::i;:::-;-1:-1:-1;;;;;10553:30:126;;;;;;:20;:30;;;;;:82;10461:823;;;-1:-1:-1;;;;;10828:30:126;;10861:1;10828:30;;;:20;:30;;;;;;:34;10824:86;;-1:-1:-1;;;;;10870:30:126;;10903:1;10870:30;;;:20;:30;;;;;:34;10824:86;10944:49;:22;10971:21;10944:49;:26;:49;:::i;:::-;11005:15;;11030:16;;10998:77;;-1:-1:-1;;;10998:77:126;;10915:78;;-1:-1:-1;;;;;;11005:15:126;;;;10998:31;;:77;;11030:16;;10915:78;;10998:77;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10998:77:126;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10998:77:126;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10998:77:126;;;;;;;;;-1:-1:-1;11104:16:126;;11126:92;;11082:12;;-1:-1:-1;;;;;11104:16:126;;11126:92;;11181:8;;11191:26;;11126:92;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;11126:92:126;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;11104:115:126;;;11126:92;11104:115;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;11081:138:126;;;11230:7;11225:55;;11269:5;11245:29;;11225:55;10461:823;;11292:21;11288:473;;;11402:6;11325:209;;11391:5;-1:-1:-1;;;;;11325:209:126;11355:8;-1:-1:-1;;;;;11325:209:126;;11369:6;11414:25;11445:24;11475:22;11503:26;11325:209;;;;;;;;;;;;;;;;;;;11288:473;;;11625:5;-1:-1:-1;;;;;11555:201:126;11589:8;-1:-1:-1;;;;;11555:201:126;;11603:6;11636:25;11667:24;11697:22;11725:26;11555:201;;;;;;;;;;;;;;;;;;;11288:473;-1:-1:-1;;;;9501:2325:126;;;;;;;:::o;17392:122::-;-1:-1:-1;;;;;17482:28:126;;;17462:7;17482:28;;;:22;:28;;;;;;;;17392:122::o;1270:46:14:-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;16535:201:126:-;-1:-1:-1;;;;;16661:38:126;;;;;;:28;:38;;;;;16615:27;;16661:50;;:48;:50::i;:::-;16648:63;16535:201;-1:-1:-1;;16535:201:126:o;4372:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;4730:164:126:-;-1:-1:-1;;;;;4837:23:126;;;;;;:13;:23;;;;;4797:24;;4837:35;;:33;:35::i;5558:53:14:-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;6810:122:126:-;6897:31;;6810:122;:::o;17717:126::-;-1:-1:-1;;;;;17809:30:126;17789:7;17809:30;;;:20;:30;;;;;;;17717:126::o;7007:17:14:-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;17027:164:126:-;-1:-1:-1;;;;;17144:36:126;;;17124:7;17144:36;;;:26;:36;;;;;;;;:43;;;;;;;;;;;;;17027:164::o;12417:1019::-;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;-1:-1:-1;;;;;12553:22:126;;12545:78;;;;-1:-1:-1;;;12545:78:126;;;;;;;;;12646:10;12627:16;12691:36;;;:26;:36;;;;;;;;-1:-1:-1;;;;;12691:43:126;;;;;;;;;;;12763:29;;;:61;;12804:20;12763:61;;;12795:6;12763:61;12738:86;;12854:1;12837:14;:18;12829:70;;;;-1:-1:-1;;;12829:70:126;;;;;;;;;12948:25;:23;:25::i;:::-;-1:-1:-1;;;;;12912:23:126;;;;;;:13;:23;;;;;:32;;:30;:32::i;:::-;:61;;12904:124;;;;-1:-1:-1;;;12904:124:126;;;;;;;;;13033:31;13067:40;:20;13092:14;13067:40;:24;:40;:::i;:::-;13033:74;-1:-1:-1;13116:28:126;13112:176;;13151:47;13182:8;13192:5;13151:30;:47::i;:::-;13112:176;;;-1:-1:-1;;;;;13214:36:126;;;;;;;:26;:36;;;;;;;;:43;;;;;;;;;:69;;;13112:176;13292:52;-1:-1:-1;;;;;13292:26:126;;13319:8;13329:14;13292:52;:26;:52;:::i;:::-;13410:5;-1:-1:-1;;;;;13354:78:126;13400:8;-1:-1:-1;;;;;13354:78:126;13390:8;-1:-1:-1;;;;;13354:78:126;;13417:14;13354:78;;;;;;;;;;;;;;;161:1:99;;;;12417:1019:126;;;:::o;5340:45:14:-;;;;:::o;13638:592:126:-;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;-1:-1:-1;;;;;13739:22:126;;13731:78;;;;-1:-1:-1;;;13731:78:126;;;;;;;;;13832:10;13891:25;:23;:25::i;:::-;-1:-1:-1;;;;;13855:23:126;;;;;;:13;:23;;;;;:32;;:30;:32::i;:::-;:61;;13847:124;;;;-1:-1:-1;;;13847:124:126;;;;;;;;;13977:31;14010:30;14044:39;14074:8;14044:29;:39::i;:::-;13976:107;;;;14092:9;14087:140;14107:14;:21;14103:1;:25;14087:140;;;14140:82;14176:14;14191:1;14176:17;;;;;;;;;;;;;;14195:8;14205:13;14219:1;14205:16;;;;;;;;;;;;;;14140:35;:82::i;:::-;14130:3;;14087:140;;;;161:1:99;;;13638:592:126;:::o;4075:47:14:-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;5077:117:126:-;-1:-1:-1;;;;;5163:27:126;5146:4;5163:27;;;:21;:27;;;;;;;;;5077:117::o;3781:57:14:-;;;;;;;;;;;;;:::o;7153:100:126:-;7229:20;;7153:100;:::o;3605:57:14:-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1554:1231:126:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;1613:33:126;1649:49;;;:12;:49;;;;-1:-1:-1;;;;;1649:49:126;;1702:55;;1750:6;1702:10;:55::i;:::-;1761:58;-1:-1:-1;;;1812:6:126;1761:10;:58::i;:::-;1823:50;-1:-1:-1;;;1866:6:126;1823:10;:50::i;:::-;1877:58;-1:-1:-1;;;1928:6:126;1877:10;:58::i;:::-;1939:67;-1:-1:-1;;;1999:6:126;1939:10;:67::i;:::-;2010:63;-1:-1:-1;;;2066:6:126;2010:10;:63::i;:::-;2077:67;-1:-1:-1;;;2137:6:126;2077:10;:67::i;:::-;2148:65;-1:-1:-1;;;2206:6:126;2148:10;:65::i;:::-;2217:69;-1:-1:-1;;;2279:6:126;2217:10;:69::i;:::-;2290:72;-1:-1:-1;;;2355:6:126;2290:10;:72::i;:::-;2366:57;-1:-1:-1;;;2416:6:126;2366:10;:57::i;:::-;2427:59;-1:-1:-1;;;2479:6:126;2427:10;:59::i;:::-;2490:57;-1:-1:-1;;;2540:6:126;2490:10;:57::i;:::-;2551:68;-1:-1:-1;;;2612:6:126;2551:10;:68::i;:::-;2623:70;-1:-1:-1;;;2686:6:126;2623:10;:70::i;:::-;-1:-1:-1;;;2760:6:126;-1:-1:-1;;;;;2702:79:126;2733:25;-1:-1:-1;;;;;2702:79:126;;;;;;;;;;;1058:1:142;1554:1231:126;:::o;3889:652::-;2949:10;2972:1;2928:32;;;:20;:32;;;;;;-1:-1:-1;;;;;2928:32:126;2920:85;;;;-1:-1:-1;;;2920:85:126;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;4003:41:126;;:::i;:::-;4080:30;4105:4;4080:24;:30::i;:::-;4049:61;;:28;;;;:61;;;-1:-1:-1;;;;;4134:28:126;;;4174:1;4134:28;;;:22;:28;;;;;;;;;:42;;4114:17;;;:62;4199:28;;:49;;;4231:6;:17;;;4199:49;:69;;;;4260:8;-1:-1:-1;;;;;4252:16:126;:4;-1:-1:-1;;;;;4252:16:126;;4199:69;4197:72;4180:89;;;;4273:265;;-1:-1:-1;;;;;4298:28:126;;;;;;;:22;:28;;;;;;;;:39;;-1:-1:-1;;;;;;4298:39:126;;;;;;;;;4342:23;;;:13;:23;;;:33;;4298:28;4342:27;:33::i;:::-;;4413:8;-1:-1:-1;;;;;4385:37:126;4407:4;-1:-1:-1;;;;;4385:37:126;;;;;;;;;;;4273:265;;;4475:8;-1:-1:-1;;;;;4443:90:126;4469:4;-1:-1:-1;;;;;4443:90:126;;4485:6;:17;;;4504:6;:28;;;4443:90;;;;;;;;;;;;;;;;4273:265;161:1:99;3889:652:126;;:::o;1437:48:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;15563:768:126:-;15650:23;15679:27;15709:41;15741:8;15709:31;:41::i;:::-;15776:10;;15679:71;;-1:-1:-1;;;;;;15776:10:126;15754:19;15791:537;15811:10;:17;15807:1;:21;15791:537;;;16035:13;;15884:12;;15898:17;;-1:-1:-1;;;;;15923:22:126;;;-1:-1:-1;;;15982:45:126;16035:10;;16046:1;;16035:13;;;;;;;;;;;;16080:10;;;;;;;;;-1:-1:-1;;;;;16080:10:126;16119:26;:36;16146:8;-1:-1:-1;;;;;16119:36:126;-1:-1:-1;;;;;16119:36:126;;;;;;;;;;;;:51;16156:10;16167:1;16156:13;;;;;;;;;;;;;;-1:-1:-1;;;;;16119:51:126;-1:-1:-1;;;;;16119:51:126;;;;;;;;;;;;;15952:248;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;15952:248:126;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;15952:248:126;;;179:29:-1;;;;160:49;;;15923:283:126;;;;15952:248;15923:283;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;15883:323:126;;;;16242:1;16233:7;16230:14;16227:2;;;16308;16302:4;16298:13;16292:20;16275:15;16271:42;16252:61;;16227:2;-1:-1:-1;;15830:3:126;;15791:537;;;;15563:768;;;;;:::o;2626:29:14:-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;5320:220:126:-;2949:10;2972:1;2928:32;;;:20;:32;;;;;;-1:-1:-1;;;;;2928:32:126;2920:85;;;;-1:-1:-1;;;2920:85:126;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;-1:-1:-1;;;;;5424:27:126;;;;;;:21;:27;;;;;;;;5419:118;;-1:-1:-1;;;;;5458:27:126;;;;;;:21;:27;;;;;;:34;;-1:-1:-1;;5458:34:126;5488:4;5458:34;;;5502:30;;;5458:27;5502:30;5419:118;5320:220;:::o;4754:35:14:-;;;;:::o;14886:516:126:-;14970:35;15007:39;15074:41;15106:8;15074:31;:41::i;:::-;15053:62;;15158:18;:25;15144:40;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15144:40:126;;15119:65;;15193:9;15188:156;15208:18;:25;15204:1;:29;15188:156;;;15273:66;15307:8;15317:18;15336:1;15317:21;;;;;;;;;;;;;;15273:33;:66::i;:::-;15245:22;15268:1;15245:25;;;;;;;;;;;;;;;;;:94;15235:3;;15188:156;;;-1:-1:-1;14886:516:126;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;3876:104:94:-;3959:10;;:17;;3876:104::o;6408:179:126:-;6495:7;6515:68;6576:6;6515:56;6534:36;:34;:36::i;:::-;6515:14;;:56;:18;:56;:::i;:::-;:60;:68;:60;:68;:::i;2064:122:94:-;-1:-1:-1;;;;;2161:16:94;2144:4;2161:16;;;;;;;;;;;;:21;;;2064:122::o;855:205::-;925:4;940:20;949:3;954:5;940:8;:20::i;:::-;935:122;;-1:-1:-1;986:10:94;;;;27::-1;;23:18;;;45:23;;;-1:-1;986:22:94;;;;;;;;;;;;-1:-1:-1;;;;;;986:22:94;-1:-1:-1;;;;;986:22:94;;;;;;;;967:16;;;;;;;;;;:41;1013:11;;935:122;-1:-1:-1;1047:5:94;1040:12;;812:155:145;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;7533:672:126:-;7680:10;;7923:15;;7621:7;;;;-1:-1:-1;;;;;7680:10:126;;;;7621:7;;7775:17;;7680:10;;-1:-1:-1;;;7856:45:126;7908:8;;7923:15;7966:64;8025:4;7966:54;7980:39;:37;:39::i;:::-;7966:9;;:54;:13;:54;:::i;:64::-;7827:209;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;7827:209:126;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;7827:209:126;;;179:29:-1;;;;160:49;;;7799:242:126;;;;7827:209;7799:242;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7760:281:126;;;;8124:1;8115:7;8112:14;8109:2;;;8165;8159:4;8155:13;8149:20;8133:36;;8109:2;-1:-1:-1;8189:12:126;;7533:672;-1:-1:-1;;;;;7533:672:126:o;2533:249:94:-;2599:16;2621:23;2661:3;:10;;:17;;;;2647:32;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;2647:32:94;;2621:58;;2688:9;2683:79;2703:10;;;:17;2699:21;;2683:79;;;2744:3;:10;;2755:1;2744:13;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2744:13:94;2732:6;2739:1;2732:9;;;;;;;;-1:-1:-1;;;;;2732:25:94;;;:9;;;;;;;;;;;:25;2722:3;;2683:79;;;-1:-1:-1;2772:6:94;2533:249;-1:-1:-1;;2533:249:94:o;780:87:137:-;853:10;780:87;:::o;1201:125:145:-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;14436:196:126:-;-1:-1:-1;;;;;14529:36:126;;;;;;;:26;:36;;;;;;;;:43;;;;;;;;;;;14522:50;;;14576:38;;;:28;:38;;;;:52;;14566:5;14576:52;:45;:52;:::i;654:174:144:-;765:58;;739:85;;758:5;;-1:-1:-1;;;788:23:144;765:58;;813:2;;817:5;;765:58;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;765:58:144;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;765:58:144;;;179:29:-1;;;;160:49;;;739:18:144;:85::i;7574:230:14:-;-1:-1:-1;;;;;;7635:17:14;;;;;;:12;:17;;;;;:26;;-1:-1:-1;;;;;;7635:26:14;-1:-1:-1;;;;;7635:26:14;;;;;;;;7670:20;7666:135;;7697:40;:15;-1:-1:-1;;;;;;7724:12:14;;7697:40;:26;:40;:::i;:::-;;7666:135;;;7753:43;:15;-1:-1:-1;;;;;;7783:12:14;;7753:43;:29;:43;:::i;7666:135::-;7574:230;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;2817:121;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;5751:115:126:-;5843:19;;5751:115;:::o;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;1175:820:94:-;1248:4;1262:20;1271:3;1276:5;1262:8;:20::i;:::-;1258:734;;;-1:-1:-1;;;;;1313:16:94;;1289:21;1313:16;;;;;;;;;;;1332:1;1358:10;;:17;-1:-1:-1;;1313:20:94;;;;1358:21;1485:26;;;1481:313;;1519:17;1539:3;:10;;1550:9;1539:21;;;;;;;;;;;;;;;;;;;1634:10;;:25;;-1:-1:-1;;;;;1539:21:94;;;;-1:-1:-1;1539:21:94;;1645:13;;1634:25;;;;;;;;;;;;;;;;;;:37;;-1:-1:-1;;;;;;1634:37:94;-1:-1:-1;;;;;1634:37:94;;;;;;1721:20;;;;;;;;;;;;;-1:-1:-1;1744:17:94;;1721:40;;1481:313;-1:-1:-1;;;;;1857:16:94;;:9;:16;;;;;;;;;;1850:23;1926:10;;;:16;;;;;;;;;;;;;;;;-1:-1:-1;;1926:16:94;;;;;-1:-1:-1;;;;;;1926:16:94;;;;;;-1:-1:-1;1926:16:94;;-1:-1:-1;1948:11:94;;-1:-1:-1;1948:11:94;2564:999:144;3111:27;3119:5;-1:-1:-1;;;;;3111:25:144;;:27::i;:::-;3103:71;;;;-1:-1:-1;;;3103:71:144;;;;;;;;;3233:12;3247:23;3282:5;-1:-1:-1;;;;;3274:19:144;3294:4;3274:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3232:67:144;;;;3311:7;3303:52;;;;-1:-1:-1;;;3303:52:144;;;;;;;;;3364:17;;:21;3360:200;;3489:10;3478:30;;;;;;;;;;;;;;3470:85;;;;-1:-1:-1;;;3470:85:144;;;;;;;;;2564:999;;;;:::o;1293:212:95:-;1370:4;1385:20;1394:3;1399:5;1385:8;:20::i;:::-;1380:122;;-1:-1:-1;1431:10:95;;;;27::-1;;23:18;;;45:23;;;-1:-1;1431:22:95;;;;;;;;;;;;;1412:16;;;;;;;;;;;:41;1458:11;;2102:845;2182:4;2196:20;2205:3;2210:5;2196:8;:20::i;:::-;2192:752;;;2223:21;2247:16;;;;;;;;;;;2266:1;2292:10;;:17;-1:-1:-1;;2247:20:95;;;;2292:21;2428:26;;;2424:318;;2462:17;2482:3;:10;;2493:9;2482:21;;;;;;;;;;;;;;;;2462:41;;2607:9;2579:3;:10;;2590:13;2579:25;;;;;;;;;;;;;;;;;;;:37;;;;2669:20;;;;;;;;;2708:1;2692:17;;2669:40;;2424:318;2807:9;:16;;;;;;;;;;2800:23;2878:10;;;:16;;;;;;;;;;;;;;;;;;;;;;;;2907:4;2900:11;;;;;;3411:315:145;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;3145:122:95:-;3225:4;3242:16;;;;;;;;;;;;:21;;;3145:122::o;764:17081:126:-;;;;;;;;;-1:-1:-1;764:17081:126;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:128;217:13;;235:30;217:13;235:30;;277:130;344:20;;369:33;344:20;369:33;;414:128;480:20;;505:32;480:20;505:32;;686:241;;790:2;778:9;769:7;765:23;761:32;758:2;;;806:1;803;796:12;758:2;841:1;858:53;903:7;883:9;858:53;;934:366;;;1055:2;1043:9;1034:7;1030:23;1026:32;1023:2;;;1071:1;1068;1061:12;1023:2;1106:1;1123:53;1168:7;1148:9;1123:53;;;1113:63;;1085:97;1213:2;1231:53;1276:7;1267:6;1256:9;1252:22;1231:53;;;1221:63;;1192:98;1017:283;;;;;;1307:617;;;;;1462:3;1450:9;1441:7;1437:23;1433:33;1430:2;;;1479:1;1476;1469:12;1430:2;1514:1;1531:53;1576:7;1556:9;1531:53;;;1521:63;;1493:97;1621:2;1639:53;1684:7;1675:6;1664:9;1660:22;1639:53;;;1629:63;;1600:98;1729:2;1747:53;1792:7;1783:6;1772:9;1768:22;1747:53;;;1737:63;;1708:98;1837:2;1855:53;1900:7;1891:6;1880:9;1876:22;1855:53;;;1845:63;;1816:98;1424:500;;;;;;;;1931:491;;;;2069:2;2057:9;2048:7;2044:23;2040:32;2037:2;;;2085:1;2082;2075:12;2037:2;2120:1;2137:53;2182:7;2162:9;2137:53;;;2127:63;;2099:97;2227:2;2245:53;2290:7;2281:6;2270:9;2266:22;2245:53;;;2235:63;;2206:98;2335:2;2353:53;2398:7;2389:6;2378:9;2374:22;2353:53;;;2343:63;;2314:98;2031:391;;;;;;2429:366;;;2550:2;2538:9;2529:7;2525:23;2521:32;2518:2;;;2566:1;2563;2556:12;2518:2;2601:1;2618:53;2663:7;2643:9;2618:53;;;2608:63;;2580:97;2708:2;2726:53;2771:7;2762:6;2751:9;2747:22;2726:53;;2802:257;;2914:2;2902:9;2893:7;2889:23;2885:32;2882:2;;;2930:1;2927;2920:12;2882:2;2965:1;2982:61;3035:7;3015:9;2982:61;;3066:241;;3170:2;3158:9;3149:7;3145:23;3141:32;3138:2;;;3186:1;3183;3176:12;3138:2;3221:1;3238:53;3283:7;3263:9;3238:53;;3314:366;;;3435:2;3423:9;3414:7;3410:23;3406:32;3403:2;;;3451:1;3448;3441:12;3403:2;3486:1;3503:53;3548:7;3528:9;3503:53;;3687:239;;3790:2;3778:9;3769:7;3765:23;3761:32;3758:2;;;3806:1;3803;3796:12;3758:2;3841:1;3858:52;3902:7;3882:9;3858:52;;3934:173;;4021:46;4063:3;4055:6;4021:46;;;-1:-1;;4096:4;4087:14;;4014:93;4116:173;;4203:46;4245:3;4237:6;4203:46;;4297:103;4370:24;4388:5;4370:24;;;4365:3;4358:37;4352:48;;;4558:690;;4703:54;4751:5;4703:54;;;4770:86;4849:6;4844:3;4770:86;;;4763:93;;4877:56;4927:5;4877:56;;;4953:7;4981:1;4966:260;4991:6;4988:1;4985:13;4966:260;;;5058:6;5052:13;5079:63;5138:3;5123:13;5079:63;;;5072:70;;5159:60;5212:6;5159:60;;;5149:70;-1:-1;;5013:1;5006:9;4966:260;;;-1:-1;5239:3;;4682:566;-1:-1;;;;;4682:566;5287:690;;5432:54;5480:5;5432:54;;;5499:86;5578:6;5573:3;5499:86;;;5492:93;;5606:56;5656:5;5606:56;;;5682:7;5710:1;5695:260;5720:6;5717:1;5714:13;5695:260;;;5787:6;5781:13;5808:63;5867:3;5852:13;5808:63;;;5801:70;;5888:60;5941:6;5888:60;;;5878:70;-1:-1;;5742:1;5735:9;5695:260;;5985:104;6062:21;6077:5;6062:21;;6096:113;6179:24;6197:5;6179:24;;6216:356;;6344:38;6376:5;6344:38;;;6394:88;6475:6;6470:3;6394:88;;;6387:95;;6487:52;6532:6;6527:3;6520:4;6513:5;6509:16;6487:52;;;6551:16;;;;;6324:248;-1:-1;;6324:248;6579:168;6683:58;6735:5;6683:58;;6754:347;;6866:39;6899:5;6866:39;;;6917:71;6981:6;6976:3;6917:71;;;6910:78;;6993:52;7038:6;7033:3;7026:4;7019:5;7015:16;6993:52;;;7066:29;7088:6;7066:29;;;7057:39;;;;6846:255;-1:-1;;;6846:255;7109:387;;7269:67;7333:2;7328:3;7269:67;;;7369:34;7349:55;;-1:-1;;;7433:2;7424:12;;7417:42;7487:2;7478:12;;7255:241;-1:-1;;7255:241;7505:305;;7665:66;7729:1;7724:3;7665:66;;;-1:-1;;;7744:29;;7801:2;7792:12;;7651:159;-1:-1;;7651:159;7819:375;;7979:67;8043:2;8038:3;7979:67;;;8079:34;8059:55;;-1:-1;;;8143:2;8134:12;;8127:30;8185:2;8176:12;;7965:229;-1:-1;;7965:229;8203:376;;8363:67;8427:2;8422:3;8363:67;;;8463:34;8443:55;;-1:-1;;;8527:2;8518:12;;8511:31;8570:2;8561:12;;8349:230;-1:-1;;8349:230;8588:327;;8748:67;8812:2;8807:3;8748:67;;;8848:29;8828:50;;8906:2;8897:12;;8734:181;-1:-1;;8734:181;8924:370;;9084:67;9148:2;9143:3;9084:67;;;9184:34;9164:55;;-1:-1;;;9248:2;9239:12;;9232:25;9285:2;9276:12;;9070:224;-1:-1;;9070:224;9303:332;;9463:67;9527:2;9522:3;9463:67;;;9563:34;9543:55;;9626:2;9617:12;;9449:186;-1:-1;;9449:186;9644:326;;9804:67;9868:2;9863:3;9804:67;;;9904:28;9884:49;;9961:2;9952:12;;9790:180;-1:-1;;9790:180;9979:370;;10139:67;10203:2;10198:3;10139:67;;;10239:34;10219:55;;-1:-1;;;10303:2;10294:12;;10287:25;10340:2;10331:12;;10125:224;-1:-1;;10125:224;10358:312;;10518:67;10582:2;10577:3;10518:67;;;-1:-1;;;10598:35;;10661:2;10652:12;;10504:166;-1:-1;;10504:166;10679:380;;10839:67;10903:2;10898:3;10839:67;;;10939:34;10919:55;;-1:-1;;;11003:2;10994:12;;10987:35;11050:2;11041:12;;10825:234;-1:-1;;10825:234;11068:379;;11228:67;11292:2;11287:3;11228:67;;;11328:34;11308:55;;-1:-1;;;11392:2;11383:12;;11376:34;11438:2;11429:12;;11214:233;-1:-1;;11214:233;11456:331;;11616:67;11680:2;11675:3;11616:67;;;11716:33;11696:54;;11778:2;11769:12;;11602:185;-1:-1;;11602:185;12025:262;;12169:93;12258:3;12249:6;12169:93;;12294:213;12412:2;12397:18;;12426:71;12401:9;12470:6;12426:71;;12514:435;12688:2;12673:18;;12702:71;12677:9;12746:6;12702:71;;;12784:72;12852:2;12841:9;12837:18;12828:6;12784:72;;;12867;12935:2;12924:9;12920:18;12911:6;12867:72;;12956:324;13102:2;13087:18;;13116:71;13091:9;13160:6;13116:71;;;13198:72;13266:2;13255:9;13251:18;13242:6;13198:72;;13287:659;13517:3;13502:19;;13532:71;13506:9;13576:6;13532:71;;;13614:72;13682:2;13671:9;13667:18;13658:6;13614:72;;;13697;13765:2;13754:9;13750:18;13741:6;13697:72;;;13780;13848:2;13837:9;13833:18;13824:6;13780:72;;;13863:73;13931:3;13920:9;13916:19;13907:6;13863:73;;;13488:458;;;;;;;;;13953:361;14121:2;14135:47;;;14106:18;;14196:108;14106:18;14290:6;14196:108;;14321:620;14567:2;14581:47;;;14552:18;;14642:108;14552:18;14736:6;14642:108;;;14634:116;;14798:9;14792:4;14788:20;14783:2;14772:9;14768:18;14761:48;14823:108;14926:4;14917:6;14823:108;;14948:201;15060:2;15045:18;;15074:65;15049:9;15112:6;15074:65;;15156:300;15290:2;15275:18;;15304:65;15279:9;15342:6;15304:65;;;15380:66;15442:2;15431:9;15427:18;15418:6;15380:66;;15463:983;15771:3;15756:19;;15786:71;15760:9;15830:6;15786:71;;;15868:66;15930:2;15919:9;15915:18;15906:6;15868:66;;;15945:72;16013:2;16002:9;15998:18;15989:6;15945:72;;;16028;16096:2;16085:9;16081:18;16072:6;16028:72;;;16111:73;16179:3;16168:9;16164:19;16155:6;16111:73;;;16195;16263:3;16252:9;16248:19;16239:6;16195:73;;;16279;16347:3;16336:9;16332:19;16323:6;16279:73;;;16363;16431:3;16420:9;16416:19;16407:6;16363:73;;;15742:704;;;;;;;;;;;;16453:1435;16875:3;16860:19;;16890:71;16864:9;16934:6;16890:71;;;16972:72;17040:2;17029:9;17025:18;17016:6;16972:72;;;17055;17123:2;17112:9;17108:18;17099:6;17055:72;;;17138:66;17200:2;17189:9;17185:18;17176:6;17138:66;;;17215:73;17283:3;17272:9;17268:19;17259:6;17215:73;;;17299;17367:3;17356:9;17352:19;17343:6;17299:73;;;17383;17451:3;17440:9;17436:19;17427:6;17383:73;;;17467;17535:3;17524:9;17520:19;17511:6;17467:73;;;17551;17619:3;17608:9;17604:19;17595:6;17551:73;;;17635;17703:3;17692:9;17688:19;17679:6;17635:73;;;17719:74;17788:3;17777:9;17773:19;17763:7;17719:74;;;17804;17873:3;17862:9;17858:19;17848:7;17804:74;;;16846:1042;;;;;;;;;;;;;;;;17895:255;18034:2;18019:18;;18048:92;18023:9;18113:6;18048:92;;18157:301;18295:2;18309:47;;;18280:18;;18370:78;18280:18;18434:6;18370:78;;18465:407;18656:2;18670:47;;;18641:18;;18731:131;18641:18;18731:131;;18879:407;19070:2;19084:47;;;19055:18;;19145:131;19055:18;19145:131;;19293:407;19484:2;19498:47;;;19469:18;;19559:131;19469:18;19559:131;;19707:407;19898:2;19912:47;;;19883:18;;19973:131;19883:18;19973:131;;20121:407;20312:2;20326:47;;;20297:18;;20387:131;20297:18;20387:131;;20535:407;20726:2;20740:47;;;20711:18;;20801:131;20711:18;20801:131;;20949:407;21140:2;21154:47;;;21125:18;;21215:131;21125:18;21215:131;;21363:407;21554:2;21568:47;;;21539:18;;21629:131;21539:18;21629:131;;21777:407;21968:2;21982:47;;;21953:18;;22043:131;21953:18;22043:131;;22191:407;22382:2;22396:47;;;22367:18;;22457:131;22367:18;22457:131;;22605:407;22796:2;22810:47;;;22781:18;;22871:131;22781:18;22871:131;;23019:407;23210:2;23224:47;;;23195:18;;23285:131;23195:18;23285:131;;23433:407;23624:2;23638:47;;;23609:18;;23699:131;23609:18;23699:131;;23847:213;23965:2;23950:18;;23979:71;23954:9;24023:6;23979:71;;24067:324;24213:2;24198:18;;24227:71;24202:9;24271:6;24227:71;;24398:435;24572:2;24557:18;;24586:71;24561:9;24630:6;24586:71;;;24668:72;24736:2;24725:9;24721:18;24712:6;24668:72;;24840:659;25070:3;25055:19;;25085:71;25059:9;25129:6;25085:71;;25506:771;25764:3;25749:19;;25779:71;25753:9;25823:6;25779:71;;;25861:72;25929:2;25918:9;25914:18;25905:6;25861:72;;;25944;26012:2;26001:9;25997:18;25988:6;25944:72;;;26027;26095:2;26084:9;26080:18;26071:6;26027:72;;;26110:73;26178:3;26167:9;26163:19;26154:6;26110:73;;;26194;26262:3;26251:9;26247:19;26238:6;26194:73;;;25735:542;;;;;;;;;;26284:151;26408:4;26399:14;;26356:79;26600:137;26703:12;;26674:63;27376:178;27494:19;;;27543:4;27534:14;;27487:67;27750:144;27885:3;27863:31;-1:-1;27863:31;28074:91;;28136:24;28154:5;28136:24;;28172:85;28238:13;28231:21;;28214:43;28264:72;28326:5;28309:27;28343:144;-1:-1;;;;;;28404:78;;28387:100;28494:121;-1:-1;;;;;28556:54;;28539:76;28701:163;;28801:58;28853:5;28801:58;;29008:268;29073:1;29080:101;29094:6;29091:1;29088:13;29080:101;;;29161:11;;;29155:18;29142:11;;;29135:39;29116:2;29109:10;29080:101;;;29196:6;29193:1;29190:13;29187:2;;;-1:-1;;29261:1;29243:16;;29236:27;29057:219;29284:97;29372:2;29352:14;-1:-1;;29348:28;;29332:49;29389:117;29458:24;29476:5;29458:24;;;29451:5;29448:35;29438:2;;29497:1;29494;29487:12;29513:111;29579:21;29594:5;29579:21;;29631:117;29700:24;29718:5;29700:24;;29755:115;29823:23;29840:5;29823:23;"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "getAffiliateRewardsHeld(address)": "8417a2ae",
              "getAffiliateTradingTokenFeePercent()": "824fcdc9",
              "getAffiliatesReferrerBalances(address)": "f19ece6f",
              "getAffiliatesReferrerTokenBalance(address,address)": "a22473a2",
              "getAffiliatesReferrerTokensList(address)": "1c9f66c2",
              "getAffiliatesTokenRewardsValueInRbtc(address)": "d80100ea",
              "getAffiliatesUserReferrer(address)": "115cc0ce",
              "getMinReferralsToPayout()": "b41263b6",
              "getReferralsList(address)": "249556fb",
              "getUserNotFirstTradeFlag(address)": "b05f6570",
              "initialize(address)": "c4d66de8",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "payTradingFeeToAffiliatesReferrer(address,address,address,uint256)": "0d4d11fe",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "setAffiliatesReferrer(address,address)": "c9ddf448",
              "setUserNotFirstTradeFlag(address)": "f06a9c6b",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "withdrawAffiliatesReferrerTokenFees(address,address,uint256)": "ac92fd8e",
              "withdrawAllAffiliatesReferrerTokenFees(address)": "adfcbc98",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "constructor": "Void constructor.",
              "getAffiliateRewardsHeld(address)": {
                "notice": "Getter to query the reward amount held for a given referrer."
              },
              "getAffiliateTradingTokenFeePercent()": {
                "notice": "Getter to query the fee share of trading token fee for affiliate program."
              },
              "getAffiliatesReferrerBalances(address)": {
                "notice": "Get all token balances of a referrer."
              },
              "getAffiliatesReferrerTokenBalance(address,address)": {
                "notice": "Getter to query the affiliate balance for a given referrer and token."
              },
              "getAffiliatesReferrerTokensList(address)": {
                "notice": "Get all available tokens at the affiliates program for a given referrer."
              },
              "getAffiliatesUserReferrer(address)": {
                "notice": "Getter to query the address of referrer for a given user."
              },
              "getMinReferralsToPayout()": {
                "notice": "Getter to query referral threshold for paying out to the referrer."
              },
              "getReferralsList(address)": {
                "notice": "Getter to query the referrals coming from a referrer."
              },
              "getUserNotFirstTradeFlag(address)": {
                "notice": "Getter to query the not-first-trade flag of a user."
              },
              "initialize(address)": {
                "notice": "Set delegate callable functions by proxy contract."
              },
              "payTradingFeeToAffiliatesReferrer(address,address,address,uint256)": {
                "notice": "Protocol calls this function to pay the affiliates rewards to a user (referrer)."
              },
              "setAffiliatesReferrer(address,address)": {
                "notice": "Loan pool calls this function to tell affiliates  a user coming from a referrer is trading and should be registered if not yet.  Taking into account some user status flags may lead to the user and referrer  become added or not to the affiliates record."
              },
              "setUserNotFirstTradeFlag(address)": {
                "notice": "Setter to toggle on the not-first-trade flag of a user."
              },
              "withdrawAffiliatesReferrerTokenFees(address,address,uint256)": {
                "notice": "Referrer calls this function to receive its reward in a given token.  It will send the other (non-SOV) reward tokens from trading protocol fees,  to the referrer’s wallet."
              },
              "withdrawAllAffiliatesReferrerTokenFees(address)": {
                "notice": "Withdraw to msg.sender all token fees for a referrer."
              }
            },
            "notice": "Track referrals and reward referrers (affiliates) with tokens.  In-detail specifications are found at https://wiki.sovryn.app/en/community/Affiliates"
          }
        }
      },
      "contracts/modules/LoanClosingsBase.sol": {
        "LoanClosingsBase": {
          "abi": [
            {
              "inputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "closer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "repayAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralWithdrawAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                }
              ],
              "name": "CloseWithDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "closer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "positionCloseSize",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanCloseAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "exitPrice",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentLeverage",
                  "type": "uint256"
                }
              ],
              "name": "CloseWithSwap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnRewardFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "ExternalSwap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "liquidator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "repayAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralWithdrawAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                }
              ],
              "name": "Liquidate",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "LoanSwap",
              "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": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayBorrowingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "interestToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "effectiveInterest",
                  "type": "uint256"
                }
              ],
              "name": "PayInterestTransfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayLendingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultWithdraw",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "shouldRefund",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountInRbtc",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "threshold",
                  "type": "uint256"
                }
              ],
              "name": "swapExcess",
              "type": "event"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "closeAmount",
                  "type": "uint256"
                }
              ],
              "name": "liquidate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "loanCloseAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "seizedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "seizedToken",
                  "type": "address"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "paySwapExcessToBorrowerThreshold",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "rollover",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "liquidate(bytes32,address,uint256)": {
                "details": "Public wrapper for _liquidate internal function.\t * The caller needs to approve the closeAmount prior to calling. Will not liquidate more than is needed to restore the desired margin (maintenance +5%).\t * Whenever the current margin of a loan falls below maintenance margin, it needs to be liquidated. Anybody can initiate a liquidation and buy the collateral tokens at a discounted rate (5%).",
                "params": {
                  "closeAmount": "The amount to close in loanTokens.",
                  "loanId": "The ID of the loan to liquidate.  loanId is the ID of the loan, which is created on loan opening.  It can be obtained either by parsing the Trade event or by reading  the open loans from the contract by calling getActiveLoans or getUserLoans.",
                  "receiver": "The receiver of the seized amount."
                },
                "return": "loanCloseAmount The amount of the collateral token of the loan.seizedAmount The seized amount in the collateral token.seizedToken The loan token address."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "rollover(bytes32,bytes)": {
                "details": "Public wrapper for _rollover internal function.\t * Each loan has a duration. In case of a margin trade it is set to 28 days, in case of borrowing, it can be set by the user. On loan openning, the user pays the interest for this duration in advance. If closing early, he gets the excess refunded. If it is not closed before the end date, it needs to be rolled over. On rollover the interest is paid for the next period. In case of margin trading it's 28 days, in case of borrowing it's a month.\t * The function rollover on the protocol contract extends the loan duration by the maximum term (28 days for margin trades at the moment of writing), pays the interest to the lender and refunds the caller for the gas cost by sending 2 * the gas cost using the fast gas price as base for the calculation.",
                "params": {
                  "loanId": "The ID of the loan to roll over. // param calldata The payload for the call. These loan DataBytes are additional loan data (not in use for token swaps)."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "LoanClosingsBase contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d00000603955348015620000a657600080fd5b506000620000bc6001600160e01b036200011016565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000114565b3390565b614ead80620001246000396000f3fe60806040526004361061036b5760003560e01c806392d894f8116101c6578063cf0eda84116100f7578063ee54a4ec11610095578063f589a3e71161006f578063f589a3e7146109a5578063f6ddc8b3146109ba578063f706b1f2146109cf578063f851a440146109e45761036b565b8063ee54a4ec1461095b578063f0e085f514610970578063f2fde38b146109855761036b565b8063d485045e116100d1578063d485045e146108ef578063e4f3e7391461090f578063e8f6276414610931578063edab119f146109465761036b565b8063cf0eda84146108a5578063d288208c146108c5578063d473c2da146108da5761036b565b8063b9cffa3e11610164578063c4a908151161013e578063c4a90815146107f7578063c4d66de81461082f578063cb6eacd114610851578063cd5d808d146108855761036b565b8063b9cffa3e146107ad578063ba4861e9146107c2578063bdee453c146107d75761036b565b8063ae0a8530116101a0578063ae0a853014610736578063afe840091461074b578063b30643d91461076d578063b7e152411461078d5761036b565b806392d894f8146106ec578063959083d31461070c578063acc04348146107215761036b565b80634f28cac2116102a0578063742e67981161023e5780638456cb59116102185780638456cb591461068d5780638da5cb5b146106a25780638dc48ba5146106b75780638f32d59b146106d75761036b565b8063742e67981461064e57806378d849ed146106635780637a8faeb8146106785761036b565b806362fff3f61161027a57806362fff3f6146105c857806368c4ac26146105f95780636e663730146106195780637420ca3e146106395761036b565b80634f28cac21461056f578063569fc1fb14610584578063574442cc146105b35761036b565b80632f4707641161030d5780633fca506e116102e75780633fca506e146104fa5780634115a2b61461051a5780634203e3951461053a5780634699f8461461055a5761036b565b80632f470764146104a55780633432423c146104ba5780633452d2d4146104da5761036b565b80631b7bde74116103495780631b7bde7414610416578063218b39c61461044357806324cc5749146104635780632a324027146104905761036b565b8063065d810f146103995780630676c1b7146103d457806317548b79146103f6575b34801561037757600080fd5b5060405162461bcd60e51b815260040161039090614c53565b60405180910390fd5b3480156103a557600080fd5b506103b96103b4366004613eea565b6109f9565b6040516103cb96959493929190614d62565b60405180910390f35b3480156103e057600080fd5b506103e9610a39565b6040516103cb91906147c5565b34801561040257600080fd5b506103e9610411366004614018565b610a48565b34801561042257600080fd5b50610436610431366004613eb0565b610a63565b6040516103cb9190614d03565b34801561044f57600080fd5b506103e961045e366004613e92565b610a80565b34801561046f57600080fd5b5061048361047e366004613e92565b610a9b565b6040516103cb9190614991565b34801561049c57600080fd5b50610436610ab0565b3480156104b157600080fd5b50610436610ab6565b3480156104c657600080fd5b506103b96104d5366004613eea565b610abc565b3480156104e657600080fd5b506104366104f5366004613e92565b610afc565b34801561050657600080fd5b50610436610515366004613e92565b610b0e565b34801561052657600080fd5b50610483610535366004613f56565b610b20565b34801561054657600080fd5b50610436610555366004613e92565b610b40565b34801561056657600080fd5b50610436610b52565b34801561057b57600080fd5b50610436610b58565b34801561059057600080fd5b506105a461059f366004613f38565b610b5e565b6040516103cb93929190614d39565b3480156105bf57600080fd5b50610436610b7f565b3480156105d457600080fd5b506105e86105e3366004613eb0565b610b85565b6040516103cb959493929190614d47565b34801561060557600080fd5b50610483610614366004613e92565b610bbf565b34801561062557600080fd5b506103e9610634366004613e92565b610bd4565b34801561064557600080fd5b506103e9610bef565b34801561065a57600080fd5b50610436610bfe565b34801561066f57600080fd5b506103e9610c04565b34801561068457600080fd5b50610436610c13565b34801561069957600080fd5b50610483610c19565b3480156106ae57600080fd5b506103e9610c22565b3480156106c357600080fd5b506103e96106d2366004613e92565b610c31565b3480156106e357600080fd5b50610483610c4c565b3480156106f857600080fd5b50610436610707366004613e92565b610c72565b34801561071857600080fd5b50610436610c84565b34801561072d57600080fd5b50610436610c8a565b34801561074257600080fd5b50610436610c90565b34801561075757600080fd5b50610760610c96565b6040516103cb9190614ae4565b34801561077957600080fd5b50610436610788366004613e92565b610ca5565b34801561079957600080fd5b506104366107a8366004613e92565b610cb7565b3480156107b957600080fd5b506103e9610cc9565b3480156107ce57600080fd5b506103e9610cd8565b3480156107e357600080fd5b506104366107f2366004613e92565b610ce7565b34801561080357600080fd5b50610817610812366004613f38565b610cf9565b6040516103cb9c9b9a99989796959493929190614a31565b34801561083b57600080fd5b5061084f61084a366004613e92565b610d6b565b005b34801561085d57600080fd5b5061087161086c366004613f38565b610e40565b6040516103cb9897969594939291906149ba565b34801561089157600080fd5b506104366108a0366004613eb0565b610e92565b3480156108b157600080fd5b5061084f6108c0366004613fc2565b610eaf565b3480156108d157600080fd5b506103e9610f3b565b3480156108e657600080fd5b50610436610f4a565b3480156108fb57600080fd5b5061043661090a366004613e92565b610f50565b61092261091d366004613f75565b610f62565b6040516103cb93929190614d11565b34801561093d57600080fd5b506103e9610fd0565b34801561095257600080fd5b50610436610fdf565b34801561096757600080fd5b50610436610fe5565b34801561097c57600080fd5b50610436610fef565b34801561099157600080fd5b5061084f6109a0366004613e92565b610ff5565b3480156109b157600080fd5b50610436611025565b3480156109c657600080fd5b5061043661102b565b3480156109db57600080fd5b506103e9611031565b3480156109f057600080fd5b506103e9611040565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610c6361104f565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b610d73610c4c565b610d8f5760405162461bcd60e51b815260040161039090614c23565b63e4f3e73960e01b600081905260056020527fe1cb396722e7eabe79fbbfe4b479997758c9eb9965437583a97ce608d5a86600546001600160a01b031690610dd79083611053565b610de86333c3b6a160e21b83611053565b6f4c6f616e436c6f73696e67734261736560801b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b600160005414610ed15760405162461bcd60e51b815260040161039090614c93565b6002600055603d5460ff1615610ef95760405162461bcd60e51b815260040161039090614b03565b333214610f185760405162461bcd60e51b815260040161039090614bd3565b610f3183604051806020016040528060008152506110cf565b5050600160005550565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6000806000600160005414610f895760405162461bcd60e51b815260040161039090614c93565b6002600055603d5460ff1615610fb15760405162461bcd60e51b815260040161039090614b03565b610fbc868686611a2a565b600160005591989097509095509350505050565b6014546001600160a01b031681565b601b5481565b6509184e72a00081565b60285481565b610ffd610c4c565b6110195760405162461bcd60e51b815260040161039090614c23565b61102281612042565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b038316908117909155156110ae576110a8600d6001600160e01b0319841663ffffffff6120c416565b506110cb565b6110c9600d6001600160e01b0319841663ffffffff61210e16565b505b5050565b6000828152600660209081526040808320600181015484526007909252909120600382015460ff166111135760405162461bcd60e51b815260040161039090614c83565b80546111315760405162461bcd60e51b815260040161039090614c43565b600782015461114890610e1063ffffffff6121cf16565b42116111665760405162461bcd60e51b815260040161039090614bc3565b600b8201546001600160a01b03908116600090815260226020526040902054166111a25760405162461bcd60e51b815260040161039090614b83565b600b82015460028201546111c2916001600160a01b039081169116612218565b81546000818152600c60209081526040808320600b808801546001600160a01b039081168652908452828520600288015482168087529452919093206003860154600a8801549495919461121e94879490928116911642612302565b600080856007015442111561127157600786015461124390429063ffffffff6121cf16565b845490925061125990839063ffffffff61235d16565b905061126e816201518063ffffffff61239716565b90505b6006850154156113d05760006113336907baab4146b63dd0000061132789600b0160009054906101000a90046001600160a01b03166001600160a01b0316638325a1c06040518163ffffffff1660e01b815260040160206040518083038186803b1580156112de57600080fd5b505afa1580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113169190810190614036565b60048b01549063ffffffff61235d16565b9063ffffffff61239716565b600185015490915061134b908263ffffffff6123d916565b600185018190558554611364919063ffffffff6121cf16565b6001850155808555600686015483106113ab576113a162015180611395858a600701546123d990919063ffffffff16565b9063ffffffff6123d916565b60078801556113ca565b600686015460078801546113c49163ffffffff6123d916565b60078801555b50611420565b622819a08210611402576113f8620151806113958489600701546123d990919063ffffffff16565b6007870155611420565b600786015461141a90622819a063ffffffff6123d916565b60078701555b6007860154600090611438904263ffffffff6121cf16565b855490915061144e90829063ffffffff61235d16565b9050611463816201518063ffffffff61239716565b600186015490915061147b908263ffffffff6123d916565b60018601556002840154611495908263ffffffff6123d916565b60028501556114aa818363ffffffff6123d916565b905060008061167a89604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508960405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600482015481526020016005820154815260200160068201548152505060008660018f6123fe565b5091509150828211156118af5760028801546116a1906001600160a01b031684840361248e565b1561188c5761186f89604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508960405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160048201548152602001600582015481526020016006820154815250508585038d612594565b509092506118859050818363ffffffff6121cf16565b90506118af565b600a89015460028901546118af916001600160a01b0390811691168585036125ed565b60058901546118c4908263ffffffff6121cf16565b60058a015583156118f057600b89015460028901546118f0916001600160a01b0390811691168661267b565b6003880154600289015460048b015460009261191a926001600160a01b0391821692911690612720565b905080156119555760058a0154611937908263ffffffff6121cf16565b60058b01556003890154611955906001600160a01b0316338361287b565b60028054908a015460038b01546004808e015460058f01546040516317f8680960e11b81526000966001600160a01b0390811696632ff0d012966119a296918316959216939192016148f1565b604080518083038186803b1580156119b957600080fd5b505afa1580156119cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119f19190810190614054565b5090506729a2241af62c00008111611a1b5760405162461bcd60e51b815260040161039090614c33565b50505050505050505050505050565b60008381526006602090815260408083206001810154845260079092528220600382015483928392909160ff16611a735760405162461bcd60e51b815260040161039090614c83565b8054611a915760405162461bcd60e51b815260040161039090614c43565b6002805490820154600383015460048581015460058701546040516317f8680960e11b815260009687966001600160a01b0391821696632ff0d01296611ae396928416959390911693919291016148f1565b604080518083038186803b158015611afa57600080fd5b505afa158015611b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b329190810190614054565b915091508260050154821115611b5a5760405162461bcd60e51b815260040161039090614bc3565b879650600080611b7986600401548760050154868860050154876128b1565b509150915081891015611ba157611b9a82611327838c63ffffffff61235d16565b9750611bb8565b81891115611bb457819850809750611bb8565b8097505b88611bd55760405162461bcd60e51b815260040161039090614bf3565b6002850154611bee906001600160a01b0316308b6129e5565b6000611dce87604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508760405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160048201548152602001600582015481526020016006820154815250508c8a600a0160009054906101000a90046001600160a01b0316612b06565b9050808a1115611dfb576002860154600a880154611dfb916001600160a01b039081169116838d0361287b565b8015611e22576002860154600b880154611e22916001600160a01b03908116911683612b74565b60038601546001600160a01b031697508815611e5d576005870154611e4d908a63ffffffff6121cf16565b6005880155611e5d888d8b61287b565b611e67878b612bd7565b6120328660405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600482015481526020016005820154815260200160068201548152505088604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508c8c888a6002612cae565b5050505050505093509350939050565b6001600160a01b0381166120685760405162461bcd60e51b815260040161039090614b23565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006120d08383612d39565b6121045750600180830180548083018083556000928352602080842090920185905584835290859052604090912055612108565b5060005b92915050565b600061211a8383612d39565b15612104576000828152602084905260409020546001840154600019918201910180821461219257600085600101828154811061215357fe5b906000526020600020015490508086600101848154811061217057fe5b6000918252602080832090910192909255918252869052604090206001830190555b600084815260208690526040812055600185018054806121ae57fe5b60019003818190600052602060002001600090559055600192505050612108565b600061221183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d4e565b9392505050565b6001600160a01b038083166000908152600b6020908152604080832093851683529290529081206001810154909190158015906122585750600482015415155b156122f55761228f6201518061132784600101546122838660040154426121cf90919063ffffffff16565b9063ffffffff61235d16565b42600484015560028301549091508111156122ab575060028101545b80156122f05760038201546122c6908263ffffffff6123d916565b600383015560028201546122e0908263ffffffff6121cf16565b60028301556122f084848361267b565b6122fc565b4260048301555b50505050565b60006123386a07259756a8d619980000006113276015546122838b600001546122838d60020154896121cf90919063ffffffff16565b6002880183905590508015612354576123548387878785612d7a565b50505050505050565b60008261236c57506000612108565b8282028284828161237957fe5b04146122115760405162461bcd60e51b815260040161039090614c13565b600061221183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506130c5565b6000828201838110156122115760405162461bcd60e51b815260040161039090614b33565b6000806000612437896000015189608001518a606001518c61014001518b8e60a001518b61242d57600061242f565b8c5b60008c6130fc565b919450925090508583101561245e5760405162461bcd60e51b815260040161039090614c03565b8860a001518211156124825760405162461bcd60e51b815260040161039090614b73565b96509650969350505050565b600254602d54604051630a7549df60e21b8152600092839283926001600160a01b03928316926329d5277c926124cc928a92909116906004016147d3565b604080518083038186803b1580156124e357600080fd5b505afa1580156124f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061251b9190810190614054565b9092509050600061253682611327878663ffffffff61235d16565b90507fe46714304b3de2a7b58afcc0bafe0a6deabd30a647332cb479124142fdb14b0b6509184e72a000821186836509184e72a00060405161257b949392919061499f565b60405180910390a16509184e72a0001095945050505050565b60008060006125bc8760000151876060015188608001518a6101400151898a6000808c6130fc565b91945092509050848211156125e35760405162461bcd60e51b815260040161039090614b73565b9450945094915050565b80156110c9576001600160a01b03821660009081526016602052604090205461261c908263ffffffff6123d916565b6001600160a01b0380841660008181526016602052604090819020939093559151908516907f40a75ae5f7a5336e75f7c7977e12c4b46a9ac0f30de01a2d5b6c1a4f4af635879061266e908590614d03565b60405180910390a3505050565b600061269f68056bc75e2d631000006113276015548561235d90919063ffffffff16565b90506126ac8484836125ed565b6126c683856126c1858563ffffffff6121cf16565b612b74565b6001600160a01b038085169084167f220e66e3e759e1382aa86cd8af5abca05ebf3ad564f223ae62d977678337272a612705858563ffffffff6121cf16565b6040516127129190614d03565b60405180910390a350505050565b60025460405163d138f9a160e01b815260009182916001600160a01b039091169063d138f9a190612759908790899088906004016148c9565b60206040518083038186803b15801561277157600080fd5b505afa158015612785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127a99190810190614036565b600254602d54602b5460405163d138f9a160e01b81529394506000936001600160a01b039384169363d138f9a1936127e9939116918b91906004016148c9565b60206040518083038186803b15801561280157600080fd5b505afa158015612815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128399190810190614036565b905061287161286068056bc75e2d63100000611327602c548661235d90919063ffffffff16565b61139583600263ffffffff61235d16565b9695505050505050565b80156110c957602d546001600160a01b03848116911614156128a6576128a1828261325a565b6110c9565b6110c9838383612b74565b6021546000908190848611806128c5575083155b156128cf576129da565b8086116128e35750869150859050846129da565b60006128fd86674563918244f4000063ffffffff6123d916565b905061292068056bc75e2d631000006113278b612283858463ffffffff6123d916565b935061294e612941670de0b6b3a76400006113278b8963ffffffff61235d16565b859063ffffffff6121cf16565b935061297c612963828463ffffffff6121cf16565b6113278668056bc75e2d6310000063ffffffff61235d16565b93508884111561298a578893505b6129b36129a68368056bc75e2d6310000063ffffffff6123d916565b859063ffffffff61235d16565b92506129ca6064611327858863ffffffff61239716565b9250878311156129d8578792505b505b955095509592505050565b8015612ae85734612a01576129fc83338484613323565b6128a1565b602d546001600160a01b03848116911614612a2e5760405162461bcd60e51b815260040161039090614b43565b80341015612a4e5760405162461bcd60e51b815260040161039090614cf3565b602d60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a9e57600080fd5b505af1158015612ab2573d6000803e3d6000fd5b505050506001600160a01b03831630149050612ad457612ad483308484613323565b803411156128a1576128a13382340361336f565b34156110c95760405162461bcd60e51b815260040161039090614b43565b60008281612b1586888461340b565b90506000818310612b2e57509081900390600090612b4c565b5060009190819003908115612b4c57612b4c8760600151868461287b565b8015612b6657612b66876060015189610160015183612b74565b50909150505b949350505050565b80156110c957612b946001600160a01b038416838363ffffffff6135a916565b816001600160a01b0316836001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a18360405161266e9190614d03565b80612bf45760405162461bcd60e51b815260040161039090614c63565b8160040154811415612c905760006004830181905560038301805460ff1916905542600784015560028301558154612c3490600f9063ffffffff61210e16565b508154600b8301546001600160a01b03166000908152601160205260409020612c629163ffffffff61210e16565b508154600a8301546001600160a01b031660009081526012602052604090206110a89163ffffffff61210e16565b6004820154612ca5908263ffffffff6121cf16565b60048301555050565b6002816002811115612cbc57fe5b1415612354578560000151336001600160a01b03168761014001516001600160a01b03167f46fa03303782eb2f686515f6c0100f9a62dabe587b0d3f5a4fc0c822d6e532d38961016001518b606001518c608001518b8b8b8b604051612d289796959493929190614894565b60405180910390a450505050505050565b60009081526020919091526040902054151590565b60008184841115612d725760405162461bcd60e51b81526004016103909190614af2565b505050900390565b602f546002546001600160a01b038581166000908152603c602090815260408083208885168452909152812054909392919091169015612ddd576001600160a01b038087166000908152603c602090815260408083209389168352929052205491505b6037546000906060906001600160a01b038085169163d138f9a160e01b918b9116612e1b68056bc75e2d631000006113278c8b63ffffffff61235d16565b604051602401612e2d939291906148c9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612e6b91906147ae565b600060405180830381855afa9150503d8060008114612ea6576040519150601f19603f3d011682016040523d82523d6000602084013e612eab565b606091505b50915091506001821415612ec157602081015194505b84156130b95760375460385460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612efd92911690899060040161495b565b602060405180830381600087803b158015612f1757600080fd5b505af1158015612f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f4f9190810190613f1a565b50603854603f546040516000926001600160a01b031691612f76918e918a91602401614976565b60408051601f198184030181529181526020820180516001600160e01b0316630efe6a8b60e01b17905251612fab91906147ae565b6000604051808303816000865af19150503d8060008114612fe8576040519150601f19603f3d011682016040523d82523d6000602084013e612fed565b606091505b50509050801561306457601f5461300a908763ffffffff6123d916565b601f55603754603f546040518c926001600160a01b0390811692908f16917ff41c644671512f1cda76abfe6038e3d7d526c1377a5a8c692f81703901db215091613057918b918d91614d39565b60405180910390a46130b7565b603754603f546040518c926001600160a01b0390811692908f16917f483f67ea49f76ac15e15bbad68b52788ca47d50aef1e4acfe95e5e307e710812916130ae918b918d91614d39565b60405180910390a45b505b50505050505050505050565b600081836130e65760405162461bcd60e51b81526004016103909190614af2565b5060008385816130f257fe5b0495945050505050565b6040805160a0810182526001600160a01b03808b16825289811660208084019190915230838501819052606080850191909152918a1660808401528351918201845288825281018790529182018590526000918291829161316191908e888886613602565b90935091506131708b83613827565b600254602754604051631e2c62d360e01b81526001600160a01b0390921691631e2c62d3916131a9918f918f9188918a91600401614919565b60206040518083038186803b1580156131c157600080fd5b505afa1580156131d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131f99190810190614036565b9050896001600160a01b03168b6001600160a01b03168d7fb4eb3c9b62efcce7021cba5fd9cd0c44df91c2272806ccc5e57df7c912e8d7168c868860405161324393929190614976565b60405180910390a499509950999650505050505050565b80156110cb57602d546001600160a01b031647808311156132d657604051632e1a7d4d60e01b81526001600160a01b03831690632e1a7d4d906132a39084870390600401614d03565b600060405180830381600087803b1580156132bd57600080fd5b505af11580156132d1573d6000803e3d6000fd5b505050505b6132e0848461336f565b836001600160a01b0316826001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a1856040516127129190614d03565b80156122fc576001600160a01b038316301415613354576122f06001600160a01b038516838363ffffffff6135a916565b6122fc6001600160a01b03851684848463ffffffff6138f516565b8047101561338f5760405162461bcd60e51b815260040161039090614ba3565b6000826001600160a01b0316826040516133a8906147ba565b60006040518083038185875af1925050503d80600081146133e5576040519150601f19603f3d011682016040523d82523d6000602084013e6133ea565b606091505b50509050806110c95760405162461bcd60e51b815260040161039090614b93565b60006134208361016001518560600151612218565b82516000908152600c602090815260408083206101608701516001600160a01b039081168552600b845282852060608a0151909116855290925290912060e08501514290811115613472575060e08501515b61349183876000015189606001518a608001518a610140015186612302565b600086608001518610156134c257608087015184546134bb9190611327908963ffffffff61235d16565b90506134c6565b5082545b83546134d8908263ffffffff6121cf16565b845560018301546134ef908263ffffffff6121cf16565b600184015560e087015160009061350c908463ffffffff6121cf16565b905061351e818363ffffffff61235d16565b9050613533816201518063ffffffff61239716565b90508760800151871015613560576001850154613556908263ffffffff6121cf16565b6001860155613568565b600060018601555b835461357a908863ffffffff6121cf16565b8455600284015481811161358f576000613593565b8181035b6002909501949094559450505050509392505050565b6040516110c990849063a9059cbb60e01b906135cb908690869060240161495b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613919565b845160009081901515806136195750602087015115155b6136355760405162461bcd60e51b815260040161039090614c73565b602087015161364657865160208801525b60208701518751111561366b5760405162461bcd60e51b815260040161039090614bb3565b6000806000876137285760408a01516136e757851561369c576136958a60005b60200201516139fe565b90506136b0565b6136ad8a60005b6020020151613a2e565b90505b80156136e25760808b01518b516136d391908b908e60015b602002015185613a52565b89516136df90826121cf565b8a525b613728565b85156136ff576136f88a600261368b565b905061370d565b61370a8a60026136a3565b90505b80156137285760408a015161372290826123d9565b60408b01525b8651156137475760405162461bcd60e51b815260040161039090614ca3565b6137518b8b613ba2565b60408c0151919450925061379d578951821461377f5760405162461bcd60e51b815260040161039090614cd3565b801561379857613795828263ffffffff6123d916565b91505b613817565b60208a01518211156137c15760405162461bcd60e51b815260040161039090614b63565b60408a01518310156137e55760405162461bcd60e51b815260040161039090614b13565b80156138175760808b015160208c015161380491908b908e60006136c8565b613814838263ffffffff6121cf16565b92505b5090999098509650505050505050565b60295480156110c957602d546000906001600160a01b03858116911614156138505750816138d5565b600254604051635967aa7560e11b81526001600160a01b039091169063b2cf54ea90613882908790879060040161495b565b60206040518083038186803b15801561389a57600080fd5b505afa1580156138ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506138d29190810190614036565b90505b818111156122fc5760405162461bcd60e51b815260040161039090614be3565b6040516122fc9085906323b872dd60e01b906135cb908790879087906024016148c9565b61392b826001600160a01b0316613cb4565b6139475760405162461bcd60e51b815260040161039090614ce3565b60006060836001600160a01b03168360405161396391906147ae565b6000604051808303816000865af19150503d80600081146139a0576040519150601f19603f3d011682016040523d82523d6000602084013e6139a5565b606091505b5091509150816139c75760405162461bcd60e51b815260040161039090614b53565b8051156122fc57808060200190516139e29190810190613f1a565b6122fc5760405162461bcd60e51b815260040161039090614cb3565b600061210868056bc75e2d63100000613a22603e548561235d90919063ffffffff16565b9063ffffffff613ced16565b600061210868056bc75e2d63100000613a226018548561235d90919063ffffffff16565b808015613b9a576001600160a01b038681166000908152603360205260409020541615613b08576001600160a01b03808716600090815260336020526040902054613aa09116878684613d2f565b5050613b05613ac768056bc75e2d631000006113276039548561235d90919063ffffffff16565b613af9613aec68056bc75e2d631000006113276020548761235d90919063ffffffff16565b849063ffffffff6121cf16565b9063ffffffff6121cf16565b90505b6001600160a01b038416600090815260196020526040902054613b31908263ffffffff6123d916565b6001600160a01b03808616600081815260196020526040908190209390935591518792918916907fb23479169712c443e6b00fb0cec3506a5f5926f541df4243d313e11c8c5c71ed90613b85908690614d03565b60405180910390a4613b9a8686868686612d7a565b505050505050565b815160208084015160408086015160608781015187519588015188850151945160009889989497630957ba1160e21b97613be99792969195929492939192916024016147ee565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260035491519092506000916001600160a01b031690613c3b9084906147ae565b600060405180830381855af49150503d8060008114613c76576040519150601f19603f3d011682016040523d82523d6000602084013e613c7b565b606091505b509250905080613c9d5760405162461bcd60e51b815260040161039090614cc3565b602082015193506040820151925050509250929050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590612b6c575050151592915050565b600061221183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613dc8565b6031546040516306a688ff60e11b815260009182916001600160a01b0390911690630d4d11fe90613d6a908990899089908990600401614856565b6040805180830381600087803b158015613d8357600080fd5b505af1158015613d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613dbb9190810190614054565b9097909650945050505050565b60008183613de95760405162461bcd60e51b81526004016103909190614af2565b5083613df757506000612211565b6000836001860381613e0557fe5b0460010195945050505050565b803561210881614e3b565b805161210881614e4f565b803561210881614e58565b803561210881614e61565b60008083601f840112613e5057600080fd5b50813567ffffffffffffffff811115613e6857600080fd5b602083019150836001820283011115613e8057600080fd5b9250929050565b805161210881614e58565b600060208284031215613ea457600080fd5b6000612b6c8484613e12565b60008060408385031215613ec357600080fd5b6000613ecf8585613e12565b9250506020613ee085828601613e12565b9150509250929050565b60008060408385031215613efd57600080fd5b6000613f098585613e12565b9250506020613ee085828601613e28565b600060208284031215613f2c57600080fd5b6000612b6c8484613e1d565b600060208284031215613f4a57600080fd5b6000612b6c8484613e28565b60008060408385031215613f6957600080fd5b6000613ecf8585613e28565b600080600060608486031215613f8a57600080fd5b6000613f968686613e28565b9350506020613fa786828701613e12565b9250506040613fb886828701613e28565b9150509250925092565b600080600060408486031215613fd757600080fd5b6000613fe38686613e28565b935050602084013567ffffffffffffffff81111561400057600080fd5b61400c86828701613e3e565b92509250509250925092565b60006020828403121561402a57600080fd5b6000612b6c8484613e33565b60006020828403121561404857600080fd5b6000612b6c8484613e87565b6000806040838503121561406757600080fd5b60006140738585613e87565b9250506020613ee085828601613e87565b61408d81614dce565b82525050565b61408d81614dd9565b61408d81614dde565b60006140b082614dbc565b6140ba8185614dc0565b93506140ca818560208601614e05565b9290920192915050565b61408d81614dfa565b60006140e882614dbc565b6140f28185614dc5565b9350614102818560208601614e05565b61410b81614e31565b9093019392505050565b6000614122600683614dc5565b6514185d5cd95960d21b815260200192915050565b6000614144601b83614dc5565b7f696e73756666696369656e742073776170206c69717569646974790000000000815260200192915050565b600061417d602683614dc5565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006141c5601b83614dc5565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006141fe601083614dc5565b6f1ddc9bdb99c8185cdcd95d081cd95b9d60821b815260200192915050565b600061422a602083614dc5565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000614263601383614dc5565b72737761702066696c6c20746f6f206c6172676560681b815260200192915050565b6000614292601783614dc5565b7f65786365737369766520736f7572636520616d6f756e74000000000000000000815260200192915050565b60006142cb600e83614dc5565b6d34b73b30b634b2103632b73232b960911b815260200192915050565b60006142f5603a83614dc5565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b6000614354601d83614dc5565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b600061438d601c83614dc5565b7f736f75726365416d6f756e74206c6172676572207468616e206d617800000000815260200192915050565b60006143c6601083614dc5565b6f3432b0b63a343c903837b9b4ba34b7b760811b815260200192915050565b60006143f2601283614dc5565b711bdb9b1e481153d05cc818d85b8818d85b1b60721b815260200192915050565b6000614420600e83614dc5565b6d7377617020746f6f206c6172676560901b815260200192915050565b600061444a601483614dc5565b736e6f7468696e6720746f206c697175696461746560601b815260200192915050565b600061447a601883614dc5565b7f696e73756666696369656e74206465737420616d6f756e740000000000000000815260200192915050565b60006144b3602183614dc5565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006144f6600c83614dc5565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061451e601283614dc5565b713ab73432b0b63a343c903837b9b4ba34b7b760711b815260200192915050565b600061454c601583614dc5565b746c6f616e506172616d73206e6f742065786973747360581b815260200192915050565b600061457d601483614dc5565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b60006145ad601083614dc5565b6f6e6f7468696e6720746f20636c6f736560801b815260200192915050565b60006145d9602e83614dc5565b7f6d696e206f72206d617820736f7572636520746f6b656e20616d6f756e74206e81526d1959591cc81d1bc81899481cd95d60921b602082015260400192915050565b6000612108600083614dc0565b6000614636600e83614dc5565b6d1b1bd85b881a5cc818db1bdcd95960921b815260200192915050565b6000614660600c83614dc5565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b6000614688600d83614dc5565b6c696e76616c696420737461746560981b815260200192915050565b60006146b1602a83614dc5565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006146fd600b83614dc5565b6a1cddd85c0819985a5b195960aa1b815260200192915050565b6000614724601683614dc5565b751cddd85c081d1bdbc81b185c99d9481d1bc8199a5b1b60521b815260200192915050565b6000614756601f83614dc5565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b600061478f601083614dc5565b6f3737ba1032b737bab3b41032ba3432b960811b815260200192915050565b600061221182846140a5565b60006121088261461c565b602081016121088284614084565b604081016147e18285614084565b6122116020830184614084565b60e081016147fc828a614084565b6148096020830189614084565b6148166040830188614084565b6148236060830187614084565b614830608083018661409c565b61483d60a083018561409c565b61484a60c083018461409c565b98975050505050505050565b608081016148648287614084565b6148716020830186614084565b61487e6040830185614084565b61488b606083018461409c565b95945050505050565b60e081016148a2828a614084565b6148af6020830189614084565b6148bc6040830188614084565b614823606083018761409c565b606081016148d78286614084565b6148e46020830185614084565b612b6c604083018461409c565b608081016148ff8287614084565b61490c6020830186614084565b61487e604083018561409c565b60a081016149278288614084565b6149346020830187614084565b614941604083018661409c565b61494e606083018561409c565b612871608083018461409c565b604081016149698285614084565b612211602083018461409c565b606081016149848286614084565b6148e4602083018561409c565b602081016121088284614093565b608081016149ad8287614093565b61490c602083018661409c565b61010081016149c9828b61409c565b6149d6602083018a614093565b6149e36040830189614084565b6149f06060830188614084565b6149fd6080830187614084565b614a0a60a083018661409c565b614a1760c083018561409c565b614a2460e083018461409c565b9998505050505050505050565b6101808101614a40828f61409c565b614a4d602083018e61409c565b614a5a604083018d61409c565b614a67606083018c614093565b614a74608083018b61409c565b614a8160a083018a61409c565b614a8e60c083018961409c565b614a9b60e083018861409c565b614aa961010083018761409c565b614ab761012083018661409c565b614ac5610140830185614084565b614ad3610160830184614084565b9d9c50505050505050505050505050565b6020810161210882846140d4565b6020808252810161221181846140dd565b6020808252810161210881614115565b6020808252810161210881614137565b6020808252810161210881614170565b60208082528101612108816141b8565b60208082528101612108816141f1565b602080825281016121088161421d565b6020808252810161210881614256565b6020808252810161210881614285565b60208082528101612108816142be565b60208082528101612108816142e8565b6020808252810161210881614347565b6020808252810161210881614380565b60208082528101612108816143b9565b60208082528101612108816143e5565b6020808252810161210881614413565b602080825281016121088161443d565b602080825281016121088161446d565b60208082528101612108816144a6565b60208082528101612108816144e9565b6020808252810161210881614511565b602080825281016121088161453f565b6020808252810161210881614570565b60208082528101612108816145a0565b60208082528101612108816145cc565b6020808252810161210881614629565b6020808252810161210881614653565b602080825281016121088161467b565b60208082528101612108816146a4565b60208082528101612108816146f0565b6020808252810161210881614717565b6020808252810161210881614749565b6020808252810161210881614782565b60208101612108828461409c565b60608101614d1f828661409c565b614d2c602083018561409c565b612b6c6040830184614084565b60608101614984828661409c565b60a08101614d55828861409c565b614934602083018761409c565b60c08101614d70828961409c565b614d7d602083018861409c565b614d8a604083018761409c565b614d97606083018661409c565b614da4608083018561409c565b614db160a083018461409c565b979650505050505050565b5190565b919050565b90815260200190565b600061210882614dee565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b600061210882614dce565b60005b83811015614e20578181015183820152602001614e08565b838111156122fc5750506000910152565b601f01601f191690565b614e4481614dce565b811461102257600080fd5b614e4481614dd9565b614e4481614dde565b614e4481614de156fea365627a7a723158201a2a2471b762f4ea0583c9a91260c4bd51d329a1a5d388ee674225aee81d5f9a6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH3 0xBC PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x110 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x114 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x4EAD DUP1 PUSH3 0x124 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92D894F8 GT PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCF0EDA84 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xEE54A4EC GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x9A5 JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x9BA JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x9CF JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x9E4 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xEE54A4EC EQ PUSH2 0x95B JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x970 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x985 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xD485045E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x8EF JUMPI DUP1 PUSH4 0xE4F3E739 EQ PUSH2 0x90F JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x931 JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x946 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xCF0EDA84 EQ PUSH2 0x8A5 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x8C5 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x8DA JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xC4A90815 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x7F7 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x82F JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x851 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x885 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x7AD JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x7C2 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x7D7 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xAE0A8530 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x736 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x76D JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x78D JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x6EC JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x721 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x4F28CAC2 GT PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x742E6798 GT PUSH2 0x23E JUMPI DUP1 PUSH4 0x8456CB59 GT PUSH2 0x218 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x68D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6A2 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x6B7 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x6D7 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x742E6798 EQ PUSH2 0x64E JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x663 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x678 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x62FFF3F6 GT PUSH2 0x27A JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x5C8 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5F9 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x619 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x639 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x56F JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x584 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x5B3 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x2F470764 GT PUSH2 0x30D JUMPI DUP1 PUSH4 0x3FCA506E GT PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x53A JUMPI DUP1 PUSH4 0x4699F846 EQ PUSH2 0x55A JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x2F470764 EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x4DA JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x1B7BDE74 GT PUSH2 0x349 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x490 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3D4 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x3F6 JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C53 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B9 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EEA JUMP JUMPDEST PUSH2 0x9F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D62 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xA39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x47C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x411 CALLDATASIZE PUSH1 0x4 PUSH2 0x4018 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x431 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EB0 JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xA80 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x47E CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4991 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xAB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xAB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B9 PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EEA JUMP JUMPDEST PUSH2 0xABC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x4F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xAFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x515 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xB0E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x535 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F56 JUMP JUMPDEST PUSH2 0xB20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x555 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xB40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xB52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xB58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5A4 PUSH2 0x59F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F38 JUMP JUMPDEST PUSH2 0xB5E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D39 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xB7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E8 PUSH2 0x5E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EB0 JUMP JUMPDEST PUSH2 0xB85 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D47 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x614 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xBBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x625 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x634 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xBD4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xBEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xBFE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC04 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x684 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xC19 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC22 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x6D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xC31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xC4C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x707 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xC72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x760 PUSH2 0xC96 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4AE4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x788 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xCA5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x7A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xCB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xCC9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xCD8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x7F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xCE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x803 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x817 PUSH2 0x812 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F38 JUMP JUMPDEST PUSH2 0xCF9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x83B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84F PUSH2 0x84A CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xD6B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x871 PUSH2 0x86C CALLDATASIZE PUSH1 0x4 PUSH2 0x3F38 JUMP JUMPDEST PUSH2 0xE40 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x49BA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x891 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x8A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EB0 JUMP JUMPDEST PUSH2 0xE92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84F PUSH2 0x8C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FC2 JUMP JUMPDEST PUSH2 0xEAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xF3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x90A CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xF50 JUMP JUMPDEST PUSH2 0x922 PUSH2 0x91D CALLDATASIZE PUSH1 0x4 PUSH2 0x3F75 JUMP JUMPDEST PUSH2 0xF62 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D11 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xFD0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xFDF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xFE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xFEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84F PUSH2 0x9A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xFF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x1025 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x102B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x1031 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x1040 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC63 PUSH2 0x104F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0xD73 PUSH2 0xC4C JUMP JUMPDEST PUSH2 0xD8F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C23 JUMP JUMPDEST PUSH4 0xE4F3E739 PUSH1 0xE0 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xE1CB396722E7EABE79FBBFE4B479997758C9EB9965437583A97CE608D5A86600 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xDD7 SWAP1 DUP4 PUSH2 0x1053 JUMP JUMPDEST PUSH2 0xDE8 PUSH4 0x33C3B6A1 PUSH1 0xE2 SHL DUP4 PUSH2 0x1053 JUMP JUMPDEST PUSH16 0x4C6F616E436C6F73696E677342617365 PUSH1 0x80 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xED1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C93 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xEF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B03 JUMP JUMPDEST CALLER ORIGIN EQ PUSH2 0xF18 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BD3 JUMP JUMPDEST PUSH2 0xF31 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x10CF JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xF89 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C93 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xFB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B03 JUMP JUMPDEST PUSH2 0xFBC DUP7 DUP7 DUP7 PUSH2 0x1A2A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH6 0x9184E72A000 DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xFFD PUSH2 0xC4C JUMP JUMPDEST PUSH2 0x1019 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C23 JUMP JUMPDEST PUSH2 0x1022 DUP2 PUSH2 0x2042 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x10AE JUMPI PUSH2 0x10A8 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x20C4 AND JUMP JUMPDEST POP PUSH2 0x10CB JUMP JUMPDEST PUSH2 0x10C9 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x210E AND JUMP JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x1113 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C83 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x1131 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C43 JUMP JUMPDEST PUSH1 0x7 DUP3 ADD SLOAD PUSH2 0x1148 SWAP1 PUSH2 0xE10 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST TIMESTAMP GT PUSH2 0x1166 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BC3 JUMP JUMPDEST PUSH1 0xB DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND PUSH2 0x11A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B83 JUMP JUMPDEST PUSH1 0xB DUP3 ADD SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0x11C2 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND PUSH2 0x2218 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xB DUP1 DUP9 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP7 MSTORE SWAP1 DUP5 MSTORE DUP3 DUP6 KECCAK256 PUSH1 0x2 DUP9 ADD SLOAD DUP3 AND DUP1 DUP8 MSTORE SWAP5 MSTORE SWAP2 SWAP1 SWAP4 KECCAK256 PUSH1 0x3 DUP7 ADD SLOAD PUSH1 0xA DUP9 ADD SLOAD SWAP5 SWAP6 SWAP2 SWAP5 PUSH2 0x121E SWAP5 DUP8 SWAP5 SWAP1 SWAP3 DUP2 AND SWAP2 AND TIMESTAMP PUSH2 0x2302 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x7 ADD SLOAD TIMESTAMP GT ISZERO PUSH2 0x1271 JUMPI PUSH1 0x7 DUP7 ADD SLOAD PUSH2 0x1243 SWAP1 TIMESTAMP SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP3 POP PUSH2 0x1259 SWAP1 DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP1 POP PUSH2 0x126E DUP2 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x2397 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x6 DUP6 ADD SLOAD ISZERO PUSH2 0x13D0 JUMPI PUSH1 0x0 PUSH2 0x1333 PUSH10 0x7BAAB4146B63DD00000 PUSH2 0x1327 DUP10 PUSH1 0xB ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8325A1C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1316 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4036 JUMP JUMPDEST PUSH1 0x4 DUP12 ADD SLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2397 AND JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x134B SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x1 DUP6 ADD DUP2 SWAP1 SSTORE DUP6 SLOAD PUSH2 0x1364 SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SSTORE DUP1 DUP6 SSTORE PUSH1 0x6 DUP7 ADD SLOAD DUP4 LT PUSH2 0x13AB JUMPI PUSH2 0x13A1 PUSH3 0x15180 PUSH2 0x1395 DUP6 DUP11 PUSH1 0x7 ADD SLOAD PUSH2 0x23D9 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x7 DUP9 ADD SSTORE PUSH2 0x13CA JUMP JUMPDEST PUSH1 0x6 DUP7 ADD SLOAD PUSH1 0x7 DUP9 ADD SLOAD PUSH2 0x13C4 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x7 DUP9 ADD SSTORE JUMPDEST POP PUSH2 0x1420 JUMP JUMPDEST PUSH3 0x2819A0 DUP3 LT PUSH2 0x1402 JUMPI PUSH2 0x13F8 PUSH3 0x15180 PUSH2 0x1395 DUP5 DUP10 PUSH1 0x7 ADD SLOAD PUSH2 0x23D9 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x7 DUP8 ADD SSTORE PUSH2 0x1420 JUMP JUMPDEST PUSH1 0x7 DUP7 ADD SLOAD PUSH2 0x141A SWAP1 PUSH3 0x2819A0 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x7 DUP8 ADD SSTORE JUMPDEST PUSH1 0x7 DUP7 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1438 SWAP1 TIMESTAMP PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH2 0x144E SWAP1 DUP3 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1463 DUP2 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x2397 AND JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x147B SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SSTORE PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x1495 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x2 DUP6 ADD SSTORE PUSH2 0x14AA DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x167A DUP10 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP10 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP PUSH1 0x0 DUP7 PUSH1 0x1 DUP16 PUSH2 0x23FE JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP3 DUP3 GT ISZERO PUSH2 0x18AF JUMPI PUSH1 0x2 DUP9 ADD SLOAD PUSH2 0x16A1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 SUB PUSH2 0x248E JUMP JUMPDEST ISZERO PUSH2 0x188C JUMPI PUSH2 0x186F DUP10 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP10 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP6 DUP6 SUB DUP14 PUSH2 0x2594 JUMP JUMPDEST POP SWAP1 SWAP3 POP PUSH2 0x1885 SWAP1 POP DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x18AF JUMP JUMPDEST PUSH1 0xA DUP10 ADD SLOAD PUSH1 0x2 DUP10 ADD SLOAD PUSH2 0x18AF SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP6 DUP6 SUB PUSH2 0x25ED JUMP JUMPDEST PUSH1 0x5 DUP10 ADD SLOAD PUSH2 0x18C4 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x5 DUP11 ADD SSTORE DUP4 ISZERO PUSH2 0x18F0 JUMPI PUSH1 0xB DUP10 ADD SLOAD PUSH1 0x2 DUP10 ADD SLOAD PUSH2 0x18F0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP7 PUSH2 0x267B JUMP JUMPDEST PUSH1 0x3 DUP9 ADD SLOAD PUSH1 0x2 DUP10 ADD SLOAD PUSH1 0x4 DUP12 ADD SLOAD PUSH1 0x0 SWAP3 PUSH2 0x191A SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP3 SWAP2 AND SWAP1 PUSH2 0x2720 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1955 JUMPI PUSH1 0x5 DUP11 ADD SLOAD PUSH2 0x1937 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x5 DUP12 ADD SSTORE PUSH1 0x3 DUP10 ADD SLOAD PUSH2 0x1955 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP4 PUSH2 0x287B JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 DUP11 ADD SLOAD PUSH1 0x3 DUP12 ADD SLOAD PUSH1 0x4 DUP1 DUP15 ADD SLOAD PUSH1 0x5 DUP16 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x17F86809 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP7 PUSH4 0x2FF0D012 SWAP7 PUSH2 0x19A2 SWAP7 SWAP2 DUP4 AND SWAP6 SWAP3 AND SWAP4 SWAP2 SWAP3 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x19F1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4054 JUMP JUMPDEST POP SWAP1 POP PUSH8 0x29A2241AF62C0000 DUP2 GT PUSH2 0x1A1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C33 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 PUSH1 0x3 DUP3 ADD SLOAD DUP4 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 PUSH1 0xFF AND PUSH2 0x1A73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C83 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x1A91 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C43 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x4 DUP6 DUP2 ADD SLOAD PUSH1 0x5 DUP8 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x17F86809 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP7 DUP8 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP7 PUSH4 0x2FF0D012 SWAP7 PUSH2 0x1AE3 SWAP7 SWAP3 DUP5 AND SWAP6 SWAP4 SWAP1 SWAP2 AND SWAP4 SWAP2 SWAP3 SWAP2 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B0E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B32 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4054 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH1 0x5 ADD SLOAD DUP3 GT ISZERO PUSH2 0x1B5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BC3 JUMP JUMPDEST DUP8 SWAP7 POP PUSH1 0x0 DUP1 PUSH2 0x1B79 DUP7 PUSH1 0x4 ADD SLOAD DUP8 PUSH1 0x5 ADD SLOAD DUP7 DUP9 PUSH1 0x5 ADD SLOAD DUP8 PUSH2 0x28B1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP10 LT ISZERO PUSH2 0x1BA1 JUMPI PUSH2 0x1B9A DUP3 PUSH2 0x1327 DUP4 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP8 POP PUSH2 0x1BB8 JUMP JUMPDEST DUP2 DUP10 GT ISZERO PUSH2 0x1BB4 JUMPI DUP2 SWAP9 POP DUP1 SWAP8 POP PUSH2 0x1BB8 JUMP JUMPDEST DUP1 SWAP8 POP JUMPDEST DUP9 PUSH2 0x1BD5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BF3 JUMP JUMPDEST PUSH1 0x2 DUP6 ADD SLOAD PUSH2 0x1BEE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS DUP12 PUSH2 0x29E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DCE DUP8 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP13 DUP11 PUSH1 0xA ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B06 JUMP JUMPDEST SWAP1 POP DUP1 DUP11 GT ISZERO PUSH2 0x1DFB JUMPI PUSH1 0x2 DUP7 ADD SLOAD PUSH1 0xA DUP9 ADD SLOAD PUSH2 0x1DFB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP4 DUP14 SUB PUSH2 0x287B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1E22 JUMPI PUSH1 0x2 DUP7 ADD SLOAD PUSH1 0xB DUP9 ADD SLOAD PUSH2 0x1E22 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP4 PUSH2 0x2B74 JUMP JUMPDEST PUSH1 0x3 DUP7 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP8 POP DUP9 ISZERO PUSH2 0x1E5D JUMPI PUSH1 0x5 DUP8 ADD SLOAD PUSH2 0x1E4D SWAP1 DUP11 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x5 DUP9 ADD SSTORE PUSH2 0x1E5D DUP9 DUP14 DUP12 PUSH2 0x287B JUMP JUMPDEST PUSH2 0x1E67 DUP8 DUP12 PUSH2 0x2BD7 JUMP JUMPDEST PUSH2 0x2032 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP9 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP13 DUP13 DUP9 DUP11 PUSH1 0x2 PUSH2 0x2CAE JUMP JUMPDEST POP POP POP POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2068 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20D0 DUP4 DUP4 PUSH2 0x2D39 JUMP JUMPDEST PUSH2 0x2104 JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x2108 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x211A DUP4 DUP4 PUSH2 0x2D39 JUMP JUMPDEST ISZERO PUSH2 0x2104 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x2192 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2153 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2170 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x21AE JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x2108 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2211 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2D4E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP2 SWAP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2258 JUMPI POP PUSH1 0x4 DUP3 ADD SLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x22F5 JUMPI PUSH2 0x228F PUSH3 0x15180 PUSH2 0x1327 DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x2283 DUP7 PUSH1 0x4 ADD SLOAD TIMESTAMP PUSH2 0x21CF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0x22AB JUMPI POP PUSH1 0x2 DUP2 ADD SLOAD JUMPDEST DUP1 ISZERO PUSH2 0x22F0 JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH2 0x22C6 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x3 DUP4 ADD SSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0x22E0 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SSTORE PUSH2 0x22F0 DUP5 DUP5 DUP4 PUSH2 0x267B JUMP JUMPDEST PUSH2 0x22FC JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP4 ADD SSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2338 PUSH11 0x7259756A8D61998000000 PUSH2 0x1327 PUSH1 0x15 SLOAD PUSH2 0x2283 DUP12 PUSH1 0x0 ADD SLOAD PUSH2 0x2283 DUP14 PUSH1 0x2 ADD SLOAD DUP10 PUSH2 0x21CF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP9 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x2354 JUMPI PUSH2 0x2354 DUP4 DUP8 DUP8 DUP8 DUP6 PUSH2 0x2D7A JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x236C JUMPI POP PUSH1 0x0 PUSH2 0x2108 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2379 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x2211 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C13 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2211 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x30C5 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2211 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B33 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2437 DUP10 PUSH1 0x0 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD DUP13 PUSH2 0x140 ADD MLOAD DUP12 DUP15 PUSH1 0xA0 ADD MLOAD DUP12 PUSH2 0x242D JUMPI PUSH1 0x0 PUSH2 0x242F JUMP JUMPDEST DUP13 JUMPDEST PUSH1 0x0 DUP13 PUSH2 0x30FC JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP DUP6 DUP4 LT ISZERO PUSH2 0x245E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C03 JUMP JUMPDEST DUP9 PUSH1 0xA0 ADD MLOAD DUP3 GT ISZERO PUSH2 0x2482 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B73 JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x2D SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x29D5277C SWAP3 PUSH2 0x24CC SWAP3 DUP11 SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x47D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x251B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4054 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2536 DUP3 PUSH2 0x1327 DUP8 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP1 POP PUSH32 0xE46714304B3DE2A7B58AFCC0BAFE0A6DEABD30A647332CB479124142FDB14B0B PUSH6 0x9184E72A000 DUP3 GT DUP7 DUP4 PUSH6 0x9184E72A000 PUSH1 0x40 MLOAD PUSH2 0x257B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH6 0x9184E72A000 LT SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x25BC DUP8 PUSH1 0x0 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP11 PUSH2 0x140 ADD MLOAD DUP10 DUP11 PUSH1 0x0 DUP1 DUP13 PUSH2 0x30FC JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP DUP5 DUP3 GT ISZERO PUSH2 0x25E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B73 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10C9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x261C SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0x40A75AE5F7A5336E75F7C7977E12C4B46A9AC0F30DE01A2D5B6C1A4F4AF63587 SWAP1 PUSH2 0x266E SWAP1 DUP6 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x269F PUSH9 0x56BC75E2D63100000 PUSH2 0x1327 PUSH1 0x15 SLOAD DUP6 PUSH2 0x235D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x26AC DUP5 DUP5 DUP4 PUSH2 0x25ED JUMP JUMPDEST PUSH2 0x26C6 DUP4 DUP6 PUSH2 0x26C1 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH2 0x2B74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP1 DUP5 AND PUSH32 0x220E66E3E759E1382AA86CD8AF5ABCA05EBF3AD564F223AE62D977678337272A PUSH2 0x2705 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2712 SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD138F9A1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD138F9A1 SWAP1 PUSH2 0x2759 SWAP1 DUP8 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2785 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x27A9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4036 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x2D SLOAD PUSH1 0x2B SLOAD PUSH1 0x40 MLOAD PUSH4 0xD138F9A1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0xD138F9A1 SWAP4 PUSH2 0x27E9 SWAP4 SWAP2 AND SWAP2 DUP12 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2801 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2815 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2839 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4036 JUMP JUMPDEST SWAP1 POP PUSH2 0x2871 PUSH2 0x2860 PUSH9 0x56BC75E2D63100000 PUSH2 0x1327 PUSH1 0x2C SLOAD DUP7 PUSH2 0x235D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1395 DUP4 PUSH1 0x2 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10C9 JUMPI PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x28A6 JUMPI PUSH2 0x28A1 DUP3 DUP3 PUSH2 0x325A JUMP JUMPDEST PUSH2 0x10C9 JUMP JUMPDEST PUSH2 0x10C9 DUP4 DUP4 DUP4 PUSH2 0x2B74 JUMP JUMPDEST PUSH1 0x21 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP5 DUP7 GT DUP1 PUSH2 0x28C5 JUMPI POP DUP4 ISZERO JUMPDEST ISZERO PUSH2 0x28CF JUMPI PUSH2 0x29DA JUMP JUMPDEST DUP1 DUP7 GT PUSH2 0x28E3 JUMPI POP DUP7 SWAP2 POP DUP6 SWAP1 POP DUP5 PUSH2 0x29DA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28FD DUP7 PUSH8 0x4563918244F40000 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2920 PUSH9 0x56BC75E2D63100000 PUSH2 0x1327 DUP12 PUSH2 0x2283 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST SWAP4 POP PUSH2 0x294E PUSH2 0x2941 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1327 DUP12 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST SWAP4 POP PUSH2 0x297C PUSH2 0x2963 DUP3 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH2 0x1327 DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP4 POP DUP9 DUP5 GT ISZERO PUSH2 0x298A JUMPI DUP9 SWAP4 POP JUMPDEST PUSH2 0x29B3 PUSH2 0x29A6 DUP4 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP3 POP PUSH2 0x29CA PUSH1 0x64 PUSH2 0x1327 DUP6 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x2397 AND JUMP JUMPDEST SWAP3 POP DUP8 DUP4 GT ISZERO PUSH2 0x29D8 JUMPI DUP8 SWAP3 POP JUMPDEST POP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2AE8 JUMPI CALLVALUE PUSH2 0x2A01 JUMPI PUSH2 0x29FC DUP4 CALLER DUP5 DUP5 PUSH2 0x3323 JUMP JUMPDEST PUSH2 0x28A1 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x2A2E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B43 JUMP JUMPDEST DUP1 CALLVALUE LT ISZERO PUSH2 0x2A4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CF3 JUMP JUMPDEST PUSH1 0x2D PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ SWAP1 POP PUSH2 0x2AD4 JUMPI PUSH2 0x2AD4 DUP4 ADDRESS DUP5 DUP5 PUSH2 0x3323 JUMP JUMPDEST DUP1 CALLVALUE GT ISZERO PUSH2 0x28A1 JUMPI PUSH2 0x28A1 CALLER DUP3 CALLVALUE SUB PUSH2 0x336F JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x10C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B43 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 PUSH2 0x2B15 DUP7 DUP9 DUP5 PUSH2 0x340B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x2B2E JUMPI POP SWAP1 DUP2 SWAP1 SUB SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x2B4C JUMP JUMPDEST POP PUSH1 0x0 SWAP2 SWAP1 DUP2 SWAP1 SUB SWAP1 DUP2 ISZERO PUSH2 0x2B4C JUMPI PUSH2 0x2B4C DUP8 PUSH1 0x60 ADD MLOAD DUP7 DUP5 PUSH2 0x287B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2B66 JUMPI PUSH2 0x2B66 DUP8 PUSH1 0x60 ADD MLOAD DUP10 PUSH2 0x160 ADD MLOAD DUP4 PUSH2 0x2B74 JUMP JUMPDEST POP SWAP1 SWAP2 POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10C9 JUMPI PUSH2 0x2B94 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x35A9 AND JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP4 PUSH1 0x40 MLOAD PUSH2 0x266E SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST DUP1 PUSH2 0x2BF4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST DUP2 PUSH1 0x4 ADD SLOAD DUP2 EQ ISZERO PUSH2 0x2C90 JUMPI PUSH1 0x0 PUSH1 0x4 DUP4 ADD DUP2 SWAP1 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE TIMESTAMP PUSH1 0x7 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD SSTORE DUP2 SLOAD PUSH2 0x2C34 SWAP1 PUSH1 0xF SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x210E AND JUMP JUMPDEST POP DUP2 SLOAD PUSH1 0xB DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2C62 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x210E AND JUMP JUMPDEST POP DUP2 SLOAD PUSH1 0xA DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x10A8 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x210E AND JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH2 0x2CA5 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x4 DUP4 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2CBC JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2354 JUMPI DUP6 PUSH1 0x0 ADD MLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH2 0x140 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x46FA03303782EB2F686515F6C0100F9A62DABE587B0D3F5A4FC0C822D6E532D3 DUP10 PUSH2 0x160 ADD MLOAD DUP12 PUSH1 0x60 ADD MLOAD DUP13 PUSH1 0x80 ADD MLOAD DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD PUSH2 0x2D28 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4894 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2D72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x4AF2 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x2F SLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 ISZERO PUSH2 0x2DDD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP2 POP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP12 SWAP2 AND PUSH2 0x2E1B PUSH9 0x56BC75E2D63100000 PUSH2 0x1327 DUP13 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2E2D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2E6B SWAP2 SWAP1 PUSH2 0x47AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2EA6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2EAB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x2EC1 JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP5 POP JUMPDEST DUP5 ISZERO PUSH2 0x30B9 JUMPI PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x2EFD SWAP3 SWAP2 AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x495B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2F4F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3F1A JUMP JUMPDEST POP PUSH1 0x38 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x2F76 SWAP2 DUP15 SWAP2 DUP11 SWAP2 PUSH1 0x24 ADD PUSH2 0x4976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xEFE6A8B PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2FAB SWAP2 SWAP1 PUSH2 0x47AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2FE8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2FED JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 ISZERO PUSH2 0x3064 JUMPI PUSH1 0x1F SLOAD PUSH2 0x300A SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x1F SSTORE PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0xF41C644671512F1CDA76ABFE6038E3D7D526C1377A5A8C692F81703901DB2150 SWAP2 PUSH2 0x3057 SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4D39 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x30B7 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0x483F67EA49F76AC15E15BBAD68B52788CA47D50AEF1E4ACFE95E5E307E710812 SWAP2 PUSH2 0x30AE SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4D39 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x30E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x4AF2 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x30F2 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP3 MSTORE DUP10 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS DUP4 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP11 AND PUSH1 0x80 DUP5 ADD MSTORE DUP4 MLOAD SWAP2 DUP3 ADD DUP5 MSTORE DUP9 DUP3 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE SWAP2 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x3161 SWAP2 SWAP1 DUP15 DUP9 DUP9 DUP7 PUSH2 0x3602 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x3170 DUP12 DUP4 PUSH2 0x3827 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x27 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1E2C62D3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x1E2C62D3 SWAP2 PUSH2 0x31A9 SWAP2 DUP16 SWAP2 DUP16 SWAP2 DUP9 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x4919 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x31F9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4036 JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH32 0xB4EB3C9B62EFCCE7021CBA5FD9CD0C44DF91C2272806CCC5E57DF7C912E8D716 DUP13 DUP7 DUP9 PUSH1 0x40 MLOAD PUSH2 0x3243 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4976 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10CB JUMPI PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SELFBALANCE DUP1 DUP4 GT ISZERO PUSH2 0x32D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x32A3 SWAP1 DUP5 DUP8 SUB SWAP1 PUSH1 0x4 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x32E0 DUP5 DUP5 PUSH2 0x336F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2712 SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x22FC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x3354 JUMPI PUSH2 0x22F0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x35A9 AND JUMP JUMPDEST PUSH2 0x22FC PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x38F5 AND JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x338F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BA3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x33A8 SWAP1 PUSH2 0x47BA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x33E5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x33EA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x10C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B93 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3420 DUP4 PUSH2 0x160 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x2218 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0x160 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP6 MSTORE PUSH1 0xB DUP5 MSTORE DUP3 DUP6 KECCAK256 PUSH1 0x60 DUP11 ADD MLOAD SWAP1 SWAP2 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0xE0 DUP6 ADD MLOAD TIMESTAMP SWAP1 DUP2 GT ISZERO PUSH2 0x3472 JUMPI POP PUSH1 0xE0 DUP6 ADD MLOAD JUMPDEST PUSH2 0x3491 DUP4 DUP8 PUSH1 0x0 ADD MLOAD DUP10 PUSH1 0x60 ADD MLOAD DUP11 PUSH1 0x80 ADD MLOAD DUP11 PUSH2 0x140 ADD MLOAD DUP7 PUSH2 0x2302 JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x80 ADD MLOAD DUP7 LT ISZERO PUSH2 0x34C2 JUMPI PUSH1 0x80 DUP8 ADD MLOAD DUP5 SLOAD PUSH2 0x34BB SWAP2 SWAP1 PUSH2 0x1327 SWAP1 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP1 POP PUSH2 0x34C6 JUMP JUMPDEST POP DUP3 SLOAD JUMPDEST DUP4 SLOAD PUSH2 0x34D8 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST DUP5 SSTORE PUSH1 0x1 DUP4 ADD SLOAD PUSH2 0x34EF SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE PUSH1 0xE0 DUP8 ADD MLOAD PUSH1 0x0 SWAP1 PUSH2 0x350C SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x351E DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3533 DUP2 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x2397 AND JUMP JUMPDEST SWAP1 POP DUP8 PUSH1 0x80 ADD MLOAD DUP8 LT ISZERO PUSH2 0x3560 JUMPI PUSH1 0x1 DUP6 ADD SLOAD PUSH2 0x3556 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SSTORE PUSH2 0x3568 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP7 ADD SSTORE JUMPDEST DUP4 SLOAD PUSH2 0x357A SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST DUP5 SSTORE PUSH1 0x2 DUP5 ADD SLOAD DUP2 DUP2 GT PUSH2 0x358F JUMPI PUSH1 0x0 PUSH2 0x3593 JUMP JUMPDEST DUP2 DUP2 SUB JUMPDEST PUSH1 0x2 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE SWAP5 POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10C9 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x35CB SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x495B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3919 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x3619 JUMPI POP PUSH1 0x20 DUP8 ADD MLOAD ISZERO ISZERO JUMPDEST PUSH2 0x3635 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C73 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH2 0x3646 JUMPI DUP7 MLOAD PUSH1 0x20 DUP9 ADD MSTORE JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD DUP8 MLOAD GT ISZERO PUSH2 0x366B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BB3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH2 0x3728 JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x36E7 JUMPI DUP6 ISZERO PUSH2 0x369C JUMPI PUSH2 0x3695 DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x39FE JUMP JUMPDEST SWAP1 POP PUSH2 0x36B0 JUMP JUMPDEST PUSH2 0x36AD DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x3A2E JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x36E2 JUMPI PUSH1 0x80 DUP12 ADD MLOAD DUP12 MLOAD PUSH2 0x36D3 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x1 JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP6 PUSH2 0x3A52 JUMP JUMPDEST DUP10 MLOAD PUSH2 0x36DF SWAP1 DUP3 PUSH2 0x21CF JUMP JUMPDEST DUP11 MSTORE JUMPDEST PUSH2 0x3728 JUMP JUMPDEST DUP6 ISZERO PUSH2 0x36FF JUMPI PUSH2 0x36F8 DUP11 PUSH1 0x2 PUSH2 0x368B JUMP JUMPDEST SWAP1 POP PUSH2 0x370D JUMP JUMPDEST PUSH2 0x370A DUP11 PUSH1 0x2 PUSH2 0x36A3 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x3728 JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x3722 SWAP1 DUP3 PUSH2 0x23D9 JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MSTORE JUMPDEST DUP7 MLOAD ISZERO PUSH2 0x3747 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CA3 JUMP JUMPDEST PUSH2 0x3751 DUP12 DUP12 PUSH2 0x3BA2 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x379D JUMPI DUP10 MLOAD DUP3 EQ PUSH2 0x377F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CD3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3798 JUMPI PUSH2 0x3795 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x3817 JUMP JUMPDEST PUSH1 0x20 DUP11 ADD MLOAD DUP3 GT ISZERO PUSH2 0x37C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B63 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD DUP4 LT ISZERO PUSH2 0x37E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B13 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3817 JUMPI PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x3804 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x0 PUSH2 0x36C8 JUMP JUMPDEST PUSH2 0x3814 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST SWAP3 POP JUMPDEST POP SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP1 ISZERO PUSH2 0x10C9 JUMPI PUSH1 0x2D SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x3850 JUMPI POP DUP2 PUSH2 0x38D5 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5967AA75 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xB2CF54EA SWAP1 PUSH2 0x3882 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x495B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x389A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x38D2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4036 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x22FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BE3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22FC SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x35CB SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x48C9 JUMP JUMPDEST PUSH2 0x392B DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3CB4 JUMP JUMPDEST PUSH2 0x3947 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x3963 SWAP2 SWAP1 PUSH2 0x47AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x39A0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x39C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B53 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x22FC JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x39E2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3F1A JUMP JUMPDEST PUSH2 0x22FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CB3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2108 PUSH9 0x56BC75E2D63100000 PUSH2 0x3A22 PUSH1 0x3E SLOAD DUP6 PUSH2 0x235D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3CED AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2108 PUSH9 0x56BC75E2D63100000 PUSH2 0x3A22 PUSH1 0x18 SLOAD DUP6 PUSH2 0x235D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x3B9A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x3B08 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3AA0 SWAP2 AND DUP8 DUP7 DUP5 PUSH2 0x3D2F JUMP JUMPDEST POP POP PUSH2 0x3B05 PUSH2 0x3AC7 PUSH9 0x56BC75E2D63100000 PUSH2 0x1327 PUSH1 0x39 SLOAD DUP6 PUSH2 0x235D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3AF9 PUSH2 0x3AEC PUSH9 0x56BC75E2D63100000 PUSH2 0x1327 PUSH1 0x20 SLOAD DUP8 PUSH2 0x235D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3B31 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD DUP8 SWAP3 SWAP2 DUP10 AND SWAP1 PUSH32 0xB23479169712C443E6B00FB0CEC3506A5F5926F541DF4243D313E11C8C5C71ED SWAP1 PUSH2 0x3B85 SWAP1 DUP7 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3B9A DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2D7A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD PUSH1 0x60 DUP8 DUP2 ADD MLOAD DUP8 MLOAD SWAP6 DUP9 ADD MLOAD DUP9 DUP6 ADD MLOAD SWAP5 MLOAD PUSH1 0x0 SWAP9 DUP10 SWAP9 SWAP5 SWAP8 PUSH4 0x957BA11 PUSH1 0xE2 SHL SWAP8 PUSH2 0x3BE9 SWAP8 SWAP3 SWAP7 SWAP2 SWAP6 SWAP3 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 PUSH1 0x24 ADD PUSH2 0x47EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE PUSH1 0x3 SLOAD SWAP2 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x3C3B SWAP1 DUP5 SWAP1 PUSH2 0x47AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3C76 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3C7B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0x3C9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CC3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP3 ADD MLOAD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2B6C JUMPI POP POP ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2211 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x3DC8 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x40 MLOAD PUSH4 0x6A688FF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD4D11FE SWAP1 PUSH2 0x3D6A SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4856 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D97 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3DBB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4054 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x3DE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x4AF2 JUMP JUMPDEST POP DUP4 PUSH2 0x3DF7 JUMPI POP PUSH1 0x0 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 DUP7 SUB DUP2 PUSH2 0x3E05 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2108 DUP2 PUSH2 0x4E3B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2108 DUP2 PUSH2 0x4E4F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2108 DUP2 PUSH2 0x4E58 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2108 DUP2 PUSH2 0x4E61 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3E50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3E68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3E80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2108 DUP2 PUSH2 0x4E58 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B6C DUP5 DUP5 PUSH2 0x3E12 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3ECF DUP6 DUP6 PUSH2 0x3E12 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3EE0 DUP6 DUP3 DUP7 ADD PUSH2 0x3E12 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3F09 DUP6 DUP6 PUSH2 0x3E12 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3EE0 DUP6 DUP3 DUP7 ADD PUSH2 0x3E28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B6C DUP5 DUP5 PUSH2 0x3E1D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B6C DUP5 DUP5 PUSH2 0x3E28 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3ECF DUP6 DUP6 PUSH2 0x3E28 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3F8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3F96 DUP7 DUP7 PUSH2 0x3E28 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3FA7 DUP7 DUP3 DUP8 ADD PUSH2 0x3E12 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3FB8 DUP7 DUP3 DUP8 ADD PUSH2 0x3E28 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3FD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3FE3 DUP7 DUP7 PUSH2 0x3E28 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4000 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x400C DUP7 DUP3 DUP8 ADD PUSH2 0x3E3E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x402A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B6C DUP5 DUP5 PUSH2 0x3E33 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4048 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B6C DUP5 DUP5 PUSH2 0x3E87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4067 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4073 DUP6 DUP6 PUSH2 0x3E87 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3EE0 DUP6 DUP3 DUP7 ADD PUSH2 0x3E87 JUMP JUMPDEST PUSH2 0x408D DUP2 PUSH2 0x4DCE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x408D DUP2 PUSH2 0x4DD9 JUMP JUMPDEST PUSH2 0x408D DUP2 PUSH2 0x4DDE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40B0 DUP3 PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x40BA DUP2 DUP6 PUSH2 0x4DC0 JUMP JUMPDEST SWAP4 POP PUSH2 0x40CA DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4E05 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x408D DUP2 PUSH2 0x4DFA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40E8 DUP3 PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x40F2 DUP2 DUP6 PUSH2 0x4DC5 JUMP JUMPDEST SWAP4 POP PUSH2 0x4102 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4E05 JUMP JUMPDEST PUSH2 0x410B DUP2 PUSH2 0x4E31 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4122 PUSH1 0x6 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4144 PUSH1 0x1B DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x696E73756666696369656E742073776170206C69717569646974790000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x417D PUSH1 0x26 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41C5 PUSH1 0x1B DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41FE PUSH1 0x10 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH16 0x1DDC9BDB99C8185CDCD95D081CD95B9D PUSH1 0x82 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x422A PUSH1 0x20 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4263 PUSH1 0x13 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH19 0x737761702066696C6C20746F6F206C61726765 PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4292 PUSH1 0x17 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x65786365737369766520736F7572636520616D6F756E74000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42CB PUSH1 0xE DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH14 0x34B73B30B634B2103632B73232B9 PUSH1 0x91 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42F5 PUSH1 0x3A DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x416464726573733A20756E61626C6520746F2073656E642076616C75652C2072 DUP2 MSTORE PUSH32 0x6563697069656E74206D61792068617665207265766572746564000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4354 PUSH1 0x1D DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E6365000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x438D PUSH1 0x1C DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x736F75726365416D6F756E74206C6172676572207468616E206D617800000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43C6 PUSH1 0x10 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH16 0x3432B0B63A343C903837B9B4BA34B7B7 PUSH1 0x81 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43F2 PUSH1 0x12 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH18 0x1BDB9B1E481153D05CC818D85B8818D85B1B PUSH1 0x72 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4420 PUSH1 0xE DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH14 0x7377617020746F6F206C61726765 PUSH1 0x90 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x444A PUSH1 0x14 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH20 0x6E6F7468696E6720746F206C6971756964617465 PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x447A PUSH1 0x18 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x696E73756666696369656E74206465737420616D6F756E740000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B3 PUSH1 0x21 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44F6 PUSH1 0xC DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x451E PUSH1 0x12 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH18 0x3AB73432B0B63A343C903837B9B4BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x454C PUSH1 0x15 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH21 0x6C6F616E506172616D73206E6F7420657869737473 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x457D PUSH1 0x14 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45AD PUSH1 0x10 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH16 0x6E6F7468696E6720746F20636C6F7365 PUSH1 0x80 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45D9 PUSH1 0x2E DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x6D696E206F72206D617820736F7572636520746F6B656E20616D6F756E74206E DUP2 MSTORE PUSH14 0x1959591CC81D1BC81899481CD95D PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2108 PUSH1 0x0 DUP4 PUSH2 0x4DC0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4636 PUSH1 0xE DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH14 0x1B1BD85B881A5CC818DB1BDCD959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4660 PUSH1 0xC DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4688 PUSH1 0xD DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH13 0x696E76616C6964207374617465 PUSH1 0x98 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46B1 PUSH1 0x2A DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46FD PUSH1 0xB DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH11 0x1CDDD85C0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4724 PUSH1 0x16 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH22 0x1CDDD85C081D1BDBC81B185C99D9481D1BC8199A5B1B PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4756 PUSH1 0x1F DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x478F PUSH1 0x10 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH16 0x3737BA1032B737BAB3B41032BA3432B9 PUSH1 0x81 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2211 DUP3 DUP5 PUSH2 0x40A5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2108 DUP3 PUSH2 0x461C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2108 DUP3 DUP5 PUSH2 0x4084 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x47E1 DUP3 DUP6 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x2211 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4084 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x47FC DUP3 DUP11 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4809 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4816 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4823 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4830 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x483D PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x484A PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4864 DUP3 DUP8 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4871 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x487E PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x488B PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x48A2 DUP3 DUP11 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x48AF PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x48BC PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4823 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x48D7 DUP3 DUP7 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x48E4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x2B6C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x48FF DUP3 DUP8 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x490C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x487E PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4927 DUP3 DUP9 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4934 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4941 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x494E PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x2871 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4969 DUP3 DUP6 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x2211 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4984 DUP3 DUP7 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x48E4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2108 DUP3 DUP5 PUSH2 0x4093 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x49AD DUP3 DUP8 PUSH2 0x4093 JUMP JUMPDEST PUSH2 0x490C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x49C9 DUP3 DUP12 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x49D6 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x4093 JUMP JUMPDEST PUSH2 0x49E3 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x49F0 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x49FD PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4A0A PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A17 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A24 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x4A40 DUP3 DUP16 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A4D PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A5A PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A67 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x4093 JUMP JUMPDEST PUSH2 0x4A74 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A81 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A8E PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A9B PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4AA9 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4AB7 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4AC5 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4AD3 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x4084 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2108 DUP3 DUP5 PUSH2 0x40D4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2211 DUP2 DUP5 PUSH2 0x40DD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4115 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4137 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4170 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x41B8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x41F1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x421D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4256 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x42BE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x42E8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4347 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4380 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x43B9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x43E5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4413 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x443D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x446D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x44A6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x44E9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4511 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x453F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4570 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x45CC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4629 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4653 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x467B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x46A4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4717 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4749 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4782 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2108 DUP3 DUP5 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4D1F DUP3 DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4D2C PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x2B6C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4084 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4984 DUP3 DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4D55 DUP3 DUP9 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4934 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x409C JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x4D70 DUP3 DUP10 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4D7D PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4D8A PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4D97 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4DA4 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4DB1 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2108 DUP3 PUSH2 0x4DEE JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2108 DUP3 PUSH2 0x4DCE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4E20 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4E08 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x22FC JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x4E44 DUP2 PUSH2 0x4DCE JUMP JUMPDEST DUP2 EQ PUSH2 0x1022 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E44 DUP2 PUSH2 0x4DD9 JUMP JUMPDEST PUSH2 0x4E44 DUP2 PUSH2 0x4DDE JUMP JUMPDEST PUSH2 0x4E44 DUP2 PUSH2 0x4DE1 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 BYTE 0x2A 0x24 PUSH18 0xB762F4EA0583C9A91260C4BD51D329A1A5D3 DUP9 0xEE PUSH8 0x4225AEE81D5F9A6C PUSH6 0x78706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100400000000000000000000000 ",
              "sourceMap": "764:24197:127:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;1299:23:127;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;764:24197:127;;780:87:137;853:10;780:87;:::o;764:24197:127:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "60806040526004361061036b5760003560e01c806392d894f8116101c6578063cf0eda84116100f7578063ee54a4ec11610095578063f589a3e71161006f578063f589a3e7146109a5578063f6ddc8b3146109ba578063f706b1f2146109cf578063f851a440146109e45761036b565b8063ee54a4ec1461095b578063f0e085f514610970578063f2fde38b146109855761036b565b8063d485045e116100d1578063d485045e146108ef578063e4f3e7391461090f578063e8f6276414610931578063edab119f146109465761036b565b8063cf0eda84146108a5578063d288208c146108c5578063d473c2da146108da5761036b565b8063b9cffa3e11610164578063c4a908151161013e578063c4a90815146107f7578063c4d66de81461082f578063cb6eacd114610851578063cd5d808d146108855761036b565b8063b9cffa3e146107ad578063ba4861e9146107c2578063bdee453c146107d75761036b565b8063ae0a8530116101a0578063ae0a853014610736578063afe840091461074b578063b30643d91461076d578063b7e152411461078d5761036b565b806392d894f8146106ec578063959083d31461070c578063acc04348146107215761036b565b80634f28cac2116102a0578063742e67981161023e5780638456cb59116102185780638456cb591461068d5780638da5cb5b146106a25780638dc48ba5146106b75780638f32d59b146106d75761036b565b8063742e67981461064e57806378d849ed146106635780637a8faeb8146106785761036b565b806362fff3f61161027a57806362fff3f6146105c857806368c4ac26146105f95780636e663730146106195780637420ca3e146106395761036b565b80634f28cac21461056f578063569fc1fb14610584578063574442cc146105b35761036b565b80632f4707641161030d5780633fca506e116102e75780633fca506e146104fa5780634115a2b61461051a5780634203e3951461053a5780634699f8461461055a5761036b565b80632f470764146104a55780633432423c146104ba5780633452d2d4146104da5761036b565b80631b7bde74116103495780631b7bde7414610416578063218b39c61461044357806324cc5749146104635780632a324027146104905761036b565b8063065d810f146103995780630676c1b7146103d457806317548b79146103f6575b34801561037757600080fd5b5060405162461bcd60e51b815260040161039090614c53565b60405180910390fd5b3480156103a557600080fd5b506103b96103b4366004613eea565b6109f9565b6040516103cb96959493929190614d62565b60405180910390f35b3480156103e057600080fd5b506103e9610a39565b6040516103cb91906147c5565b34801561040257600080fd5b506103e9610411366004614018565b610a48565b34801561042257600080fd5b50610436610431366004613eb0565b610a63565b6040516103cb9190614d03565b34801561044f57600080fd5b506103e961045e366004613e92565b610a80565b34801561046f57600080fd5b5061048361047e366004613e92565b610a9b565b6040516103cb9190614991565b34801561049c57600080fd5b50610436610ab0565b3480156104b157600080fd5b50610436610ab6565b3480156104c657600080fd5b506103b96104d5366004613eea565b610abc565b3480156104e657600080fd5b506104366104f5366004613e92565b610afc565b34801561050657600080fd5b50610436610515366004613e92565b610b0e565b34801561052657600080fd5b50610483610535366004613f56565b610b20565b34801561054657600080fd5b50610436610555366004613e92565b610b40565b34801561056657600080fd5b50610436610b52565b34801561057b57600080fd5b50610436610b58565b34801561059057600080fd5b506105a461059f366004613f38565b610b5e565b6040516103cb93929190614d39565b3480156105bf57600080fd5b50610436610b7f565b3480156105d457600080fd5b506105e86105e3366004613eb0565b610b85565b6040516103cb959493929190614d47565b34801561060557600080fd5b50610483610614366004613e92565b610bbf565b34801561062557600080fd5b506103e9610634366004613e92565b610bd4565b34801561064557600080fd5b506103e9610bef565b34801561065a57600080fd5b50610436610bfe565b34801561066f57600080fd5b506103e9610c04565b34801561068457600080fd5b50610436610c13565b34801561069957600080fd5b50610483610c19565b3480156106ae57600080fd5b506103e9610c22565b3480156106c357600080fd5b506103e96106d2366004613e92565b610c31565b3480156106e357600080fd5b50610483610c4c565b3480156106f857600080fd5b50610436610707366004613e92565b610c72565b34801561071857600080fd5b50610436610c84565b34801561072d57600080fd5b50610436610c8a565b34801561074257600080fd5b50610436610c90565b34801561075757600080fd5b50610760610c96565b6040516103cb9190614ae4565b34801561077957600080fd5b50610436610788366004613e92565b610ca5565b34801561079957600080fd5b506104366107a8366004613e92565b610cb7565b3480156107b957600080fd5b506103e9610cc9565b3480156107ce57600080fd5b506103e9610cd8565b3480156107e357600080fd5b506104366107f2366004613e92565b610ce7565b34801561080357600080fd5b50610817610812366004613f38565b610cf9565b6040516103cb9c9b9a99989796959493929190614a31565b34801561083b57600080fd5b5061084f61084a366004613e92565b610d6b565b005b34801561085d57600080fd5b5061087161086c366004613f38565b610e40565b6040516103cb9897969594939291906149ba565b34801561089157600080fd5b506104366108a0366004613eb0565b610e92565b3480156108b157600080fd5b5061084f6108c0366004613fc2565b610eaf565b3480156108d157600080fd5b506103e9610f3b565b3480156108e657600080fd5b50610436610f4a565b3480156108fb57600080fd5b5061043661090a366004613e92565b610f50565b61092261091d366004613f75565b610f62565b6040516103cb93929190614d11565b34801561093d57600080fd5b506103e9610fd0565b34801561095257600080fd5b50610436610fdf565b34801561096757600080fd5b50610436610fe5565b34801561097c57600080fd5b50610436610fef565b34801561099157600080fd5b5061084f6109a0366004613e92565b610ff5565b3480156109b157600080fd5b50610436611025565b3480156109c657600080fd5b5061043661102b565b3480156109db57600080fd5b506103e9611031565b3480156109f057600080fd5b506103e9611040565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610c6361104f565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b610d73610c4c565b610d8f5760405162461bcd60e51b815260040161039090614c23565b63e4f3e73960e01b600081905260056020527fe1cb396722e7eabe79fbbfe4b479997758c9eb9965437583a97ce608d5a86600546001600160a01b031690610dd79083611053565b610de86333c3b6a160e21b83611053565b6f4c6f616e436c6f73696e67734261736560801b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b600160005414610ed15760405162461bcd60e51b815260040161039090614c93565b6002600055603d5460ff1615610ef95760405162461bcd60e51b815260040161039090614b03565b333214610f185760405162461bcd60e51b815260040161039090614bd3565b610f3183604051806020016040528060008152506110cf565b5050600160005550565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6000806000600160005414610f895760405162461bcd60e51b815260040161039090614c93565b6002600055603d5460ff1615610fb15760405162461bcd60e51b815260040161039090614b03565b610fbc868686611a2a565b600160005591989097509095509350505050565b6014546001600160a01b031681565b601b5481565b6509184e72a00081565b60285481565b610ffd610c4c565b6110195760405162461bcd60e51b815260040161039090614c23565b61102281612042565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b038316908117909155156110ae576110a8600d6001600160e01b0319841663ffffffff6120c416565b506110cb565b6110c9600d6001600160e01b0319841663ffffffff61210e16565b505b5050565b6000828152600660209081526040808320600181015484526007909252909120600382015460ff166111135760405162461bcd60e51b815260040161039090614c83565b80546111315760405162461bcd60e51b815260040161039090614c43565b600782015461114890610e1063ffffffff6121cf16565b42116111665760405162461bcd60e51b815260040161039090614bc3565b600b8201546001600160a01b03908116600090815260226020526040902054166111a25760405162461bcd60e51b815260040161039090614b83565b600b82015460028201546111c2916001600160a01b039081169116612218565b81546000818152600c60209081526040808320600b808801546001600160a01b039081168652908452828520600288015482168087529452919093206003860154600a8801549495919461121e94879490928116911642612302565b600080856007015442111561127157600786015461124390429063ffffffff6121cf16565b845490925061125990839063ffffffff61235d16565b905061126e816201518063ffffffff61239716565b90505b6006850154156113d05760006113336907baab4146b63dd0000061132789600b0160009054906101000a90046001600160a01b03166001600160a01b0316638325a1c06040518163ffffffff1660e01b815260040160206040518083038186803b1580156112de57600080fd5b505afa1580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113169190810190614036565b60048b01549063ffffffff61235d16565b9063ffffffff61239716565b600185015490915061134b908263ffffffff6123d916565b600185018190558554611364919063ffffffff6121cf16565b6001850155808555600686015483106113ab576113a162015180611395858a600701546123d990919063ffffffff16565b9063ffffffff6123d916565b60078801556113ca565b600686015460078801546113c49163ffffffff6123d916565b60078801555b50611420565b622819a08210611402576113f8620151806113958489600701546123d990919063ffffffff16565b6007870155611420565b600786015461141a90622819a063ffffffff6123d916565b60078701555b6007860154600090611438904263ffffffff6121cf16565b855490915061144e90829063ffffffff61235d16565b9050611463816201518063ffffffff61239716565b600186015490915061147b908263ffffffff6123d916565b60018601556002840154611495908263ffffffff6123d916565b60028501556114aa818363ffffffff6123d916565b905060008061167a89604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508960405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600482015481526020016005820154815260200160068201548152505060008660018f6123fe565b5091509150828211156118af5760028801546116a1906001600160a01b031684840361248e565b1561188c5761186f89604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508960405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160048201548152602001600582015481526020016006820154815250508585038d612594565b509092506118859050818363ffffffff6121cf16565b90506118af565b600a89015460028901546118af916001600160a01b0390811691168585036125ed565b60058901546118c4908263ffffffff6121cf16565b60058a015583156118f057600b89015460028901546118f0916001600160a01b0390811691168661267b565b6003880154600289015460048b015460009261191a926001600160a01b0391821692911690612720565b905080156119555760058a0154611937908263ffffffff6121cf16565b60058b01556003890154611955906001600160a01b0316338361287b565b60028054908a015460038b01546004808e015460058f01546040516317f8680960e11b81526000966001600160a01b0390811696632ff0d012966119a296918316959216939192016148f1565b604080518083038186803b1580156119b957600080fd5b505afa1580156119cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119f19190810190614054565b5090506729a2241af62c00008111611a1b5760405162461bcd60e51b815260040161039090614c33565b50505050505050505050505050565b60008381526006602090815260408083206001810154845260079092528220600382015483928392909160ff16611a735760405162461bcd60e51b815260040161039090614c83565b8054611a915760405162461bcd60e51b815260040161039090614c43565b6002805490820154600383015460048581015460058701546040516317f8680960e11b815260009687966001600160a01b0391821696632ff0d01296611ae396928416959390911693919291016148f1565b604080518083038186803b158015611afa57600080fd5b505afa158015611b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b329190810190614054565b915091508260050154821115611b5a5760405162461bcd60e51b815260040161039090614bc3565b879650600080611b7986600401548760050154868860050154876128b1565b509150915081891015611ba157611b9a82611327838c63ffffffff61235d16565b9750611bb8565b81891115611bb457819850809750611bb8565b8097505b88611bd55760405162461bcd60e51b815260040161039090614bf3565b6002850154611bee906001600160a01b0316308b6129e5565b6000611dce87604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508760405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160048201548152602001600582015481526020016006820154815250508c8a600a0160009054906101000a90046001600160a01b0316612b06565b9050808a1115611dfb576002860154600a880154611dfb916001600160a01b039081169116838d0361287b565b8015611e22576002860154600b880154611e22916001600160a01b03908116911683612b74565b60038601546001600160a01b031697508815611e5d576005870154611e4d908a63ffffffff6121cf16565b6005880155611e5d888d8b61287b565b611e67878b612bd7565b6120328660405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600482015481526020016005820154815260200160068201548152505088604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508c8c888a6002612cae565b5050505050505093509350939050565b6001600160a01b0381166120685760405162461bcd60e51b815260040161039090614b23565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006120d08383612d39565b6121045750600180830180548083018083556000928352602080842090920185905584835290859052604090912055612108565b5060005b92915050565b600061211a8383612d39565b15612104576000828152602084905260409020546001840154600019918201910180821461219257600085600101828154811061215357fe5b906000526020600020015490508086600101848154811061217057fe5b6000918252602080832090910192909255918252869052604090206001830190555b600084815260208690526040812055600185018054806121ae57fe5b60019003818190600052602060002001600090559055600192505050612108565b600061221183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d4e565b9392505050565b6001600160a01b038083166000908152600b6020908152604080832093851683529290529081206001810154909190158015906122585750600482015415155b156122f55761228f6201518061132784600101546122838660040154426121cf90919063ffffffff16565b9063ffffffff61235d16565b42600484015560028301549091508111156122ab575060028101545b80156122f05760038201546122c6908263ffffffff6123d916565b600383015560028201546122e0908263ffffffff6121cf16565b60028301556122f084848361267b565b6122fc565b4260048301555b50505050565b60006123386a07259756a8d619980000006113276015546122838b600001546122838d60020154896121cf90919063ffffffff16565b6002880183905590508015612354576123548387878785612d7a565b50505050505050565b60008261236c57506000612108565b8282028284828161237957fe5b04146122115760405162461bcd60e51b815260040161039090614c13565b600061221183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506130c5565b6000828201838110156122115760405162461bcd60e51b815260040161039090614b33565b6000806000612437896000015189608001518a606001518c61014001518b8e60a001518b61242d57600061242f565b8c5b60008c6130fc565b919450925090508583101561245e5760405162461bcd60e51b815260040161039090614c03565b8860a001518211156124825760405162461bcd60e51b815260040161039090614b73565b96509650969350505050565b600254602d54604051630a7549df60e21b8152600092839283926001600160a01b03928316926329d5277c926124cc928a92909116906004016147d3565b604080518083038186803b1580156124e357600080fd5b505afa1580156124f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061251b9190810190614054565b9092509050600061253682611327878663ffffffff61235d16565b90507fe46714304b3de2a7b58afcc0bafe0a6deabd30a647332cb479124142fdb14b0b6509184e72a000821186836509184e72a00060405161257b949392919061499f565b60405180910390a16509184e72a0001095945050505050565b60008060006125bc8760000151876060015188608001518a6101400151898a6000808c6130fc565b91945092509050848211156125e35760405162461bcd60e51b815260040161039090614b73565b9450945094915050565b80156110c9576001600160a01b03821660009081526016602052604090205461261c908263ffffffff6123d916565b6001600160a01b0380841660008181526016602052604090819020939093559151908516907f40a75ae5f7a5336e75f7c7977e12c4b46a9ac0f30de01a2d5b6c1a4f4af635879061266e908590614d03565b60405180910390a3505050565b600061269f68056bc75e2d631000006113276015548561235d90919063ffffffff16565b90506126ac8484836125ed565b6126c683856126c1858563ffffffff6121cf16565b612b74565b6001600160a01b038085169084167f220e66e3e759e1382aa86cd8af5abca05ebf3ad564f223ae62d977678337272a612705858563ffffffff6121cf16565b6040516127129190614d03565b60405180910390a350505050565b60025460405163d138f9a160e01b815260009182916001600160a01b039091169063d138f9a190612759908790899088906004016148c9565b60206040518083038186803b15801561277157600080fd5b505afa158015612785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127a99190810190614036565b600254602d54602b5460405163d138f9a160e01b81529394506000936001600160a01b039384169363d138f9a1936127e9939116918b91906004016148c9565b60206040518083038186803b15801561280157600080fd5b505afa158015612815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128399190810190614036565b905061287161286068056bc75e2d63100000611327602c548661235d90919063ffffffff16565b61139583600263ffffffff61235d16565b9695505050505050565b80156110c957602d546001600160a01b03848116911614156128a6576128a1828261325a565b6110c9565b6110c9838383612b74565b6021546000908190848611806128c5575083155b156128cf576129da565b8086116128e35750869150859050846129da565b60006128fd86674563918244f4000063ffffffff6123d916565b905061292068056bc75e2d631000006113278b612283858463ffffffff6123d916565b935061294e612941670de0b6b3a76400006113278b8963ffffffff61235d16565b859063ffffffff6121cf16565b935061297c612963828463ffffffff6121cf16565b6113278668056bc75e2d6310000063ffffffff61235d16565b93508884111561298a578893505b6129b36129a68368056bc75e2d6310000063ffffffff6123d916565b859063ffffffff61235d16565b92506129ca6064611327858863ffffffff61239716565b9250878311156129d8578792505b505b955095509592505050565b8015612ae85734612a01576129fc83338484613323565b6128a1565b602d546001600160a01b03848116911614612a2e5760405162461bcd60e51b815260040161039090614b43565b80341015612a4e5760405162461bcd60e51b815260040161039090614cf3565b602d60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a9e57600080fd5b505af1158015612ab2573d6000803e3d6000fd5b505050506001600160a01b03831630149050612ad457612ad483308484613323565b803411156128a1576128a13382340361336f565b34156110c95760405162461bcd60e51b815260040161039090614b43565b60008281612b1586888461340b565b90506000818310612b2e57509081900390600090612b4c565b5060009190819003908115612b4c57612b4c8760600151868461287b565b8015612b6657612b66876060015189610160015183612b74565b50909150505b949350505050565b80156110c957612b946001600160a01b038416838363ffffffff6135a916565b816001600160a01b0316836001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a18360405161266e9190614d03565b80612bf45760405162461bcd60e51b815260040161039090614c63565b8160040154811415612c905760006004830181905560038301805460ff1916905542600784015560028301558154612c3490600f9063ffffffff61210e16565b508154600b8301546001600160a01b03166000908152601160205260409020612c629163ffffffff61210e16565b508154600a8301546001600160a01b031660009081526012602052604090206110a89163ffffffff61210e16565b6004820154612ca5908263ffffffff6121cf16565b60048301555050565b6002816002811115612cbc57fe5b1415612354578560000151336001600160a01b03168761014001516001600160a01b03167f46fa03303782eb2f686515f6c0100f9a62dabe587b0d3f5a4fc0c822d6e532d38961016001518b606001518c608001518b8b8b8b604051612d289796959493929190614894565b60405180910390a450505050505050565b60009081526020919091526040902054151590565b60008184841115612d725760405162461bcd60e51b81526004016103909190614af2565b505050900390565b602f546002546001600160a01b038581166000908152603c602090815260408083208885168452909152812054909392919091169015612ddd576001600160a01b038087166000908152603c602090815260408083209389168352929052205491505b6037546000906060906001600160a01b038085169163d138f9a160e01b918b9116612e1b68056bc75e2d631000006113278c8b63ffffffff61235d16565b604051602401612e2d939291906148c9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612e6b91906147ae565b600060405180830381855afa9150503d8060008114612ea6576040519150601f19603f3d011682016040523d82523d6000602084013e612eab565b606091505b50915091506001821415612ec157602081015194505b84156130b95760375460385460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612efd92911690899060040161495b565b602060405180830381600087803b158015612f1757600080fd5b505af1158015612f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f4f9190810190613f1a565b50603854603f546040516000926001600160a01b031691612f76918e918a91602401614976565b60408051601f198184030181529181526020820180516001600160e01b0316630efe6a8b60e01b17905251612fab91906147ae565b6000604051808303816000865af19150503d8060008114612fe8576040519150601f19603f3d011682016040523d82523d6000602084013e612fed565b606091505b50509050801561306457601f5461300a908763ffffffff6123d916565b601f55603754603f546040518c926001600160a01b0390811692908f16917ff41c644671512f1cda76abfe6038e3d7d526c1377a5a8c692f81703901db215091613057918b918d91614d39565b60405180910390a46130b7565b603754603f546040518c926001600160a01b0390811692908f16917f483f67ea49f76ac15e15bbad68b52788ca47d50aef1e4acfe95e5e307e710812916130ae918b918d91614d39565b60405180910390a45b505b50505050505050505050565b600081836130e65760405162461bcd60e51b81526004016103909190614af2565b5060008385816130f257fe5b0495945050505050565b6040805160a0810182526001600160a01b03808b16825289811660208084019190915230838501819052606080850191909152918a1660808401528351918201845288825281018790529182018590526000918291829161316191908e888886613602565b90935091506131708b83613827565b600254602754604051631e2c62d360e01b81526001600160a01b0390921691631e2c62d3916131a9918f918f9188918a91600401614919565b60206040518083038186803b1580156131c157600080fd5b505afa1580156131d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131f99190810190614036565b9050896001600160a01b03168b6001600160a01b03168d7fb4eb3c9b62efcce7021cba5fd9cd0c44df91c2272806ccc5e57df7c912e8d7168c868860405161324393929190614976565b60405180910390a499509950999650505050505050565b80156110cb57602d546001600160a01b031647808311156132d657604051632e1a7d4d60e01b81526001600160a01b03831690632e1a7d4d906132a39084870390600401614d03565b600060405180830381600087803b1580156132bd57600080fd5b505af11580156132d1573d6000803e3d6000fd5b505050505b6132e0848461336f565b836001600160a01b0316826001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a1856040516127129190614d03565b80156122fc576001600160a01b038316301415613354576122f06001600160a01b038516838363ffffffff6135a916565b6122fc6001600160a01b03851684848463ffffffff6138f516565b8047101561338f5760405162461bcd60e51b815260040161039090614ba3565b6000826001600160a01b0316826040516133a8906147ba565b60006040518083038185875af1925050503d80600081146133e5576040519150601f19603f3d011682016040523d82523d6000602084013e6133ea565b606091505b50509050806110c95760405162461bcd60e51b815260040161039090614b93565b60006134208361016001518560600151612218565b82516000908152600c602090815260408083206101608701516001600160a01b039081168552600b845282852060608a0151909116855290925290912060e08501514290811115613472575060e08501515b61349183876000015189606001518a608001518a610140015186612302565b600086608001518610156134c257608087015184546134bb9190611327908963ffffffff61235d16565b90506134c6565b5082545b83546134d8908263ffffffff6121cf16565b845560018301546134ef908263ffffffff6121cf16565b600184015560e087015160009061350c908463ffffffff6121cf16565b905061351e818363ffffffff61235d16565b9050613533816201518063ffffffff61239716565b90508760800151871015613560576001850154613556908263ffffffff6121cf16565b6001860155613568565b600060018601555b835461357a908863ffffffff6121cf16565b8455600284015481811161358f576000613593565b8181035b6002909501949094559450505050509392505050565b6040516110c990849063a9059cbb60e01b906135cb908690869060240161495b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613919565b845160009081901515806136195750602087015115155b6136355760405162461bcd60e51b815260040161039090614c73565b602087015161364657865160208801525b60208701518751111561366b5760405162461bcd60e51b815260040161039090614bb3565b6000806000876137285760408a01516136e757851561369c576136958a60005b60200201516139fe565b90506136b0565b6136ad8a60005b6020020151613a2e565b90505b80156136e25760808b01518b516136d391908b908e60015b602002015185613a52565b89516136df90826121cf565b8a525b613728565b85156136ff576136f88a600261368b565b905061370d565b61370a8a60026136a3565b90505b80156137285760408a015161372290826123d9565b60408b01525b8651156137475760405162461bcd60e51b815260040161039090614ca3565b6137518b8b613ba2565b60408c0151919450925061379d578951821461377f5760405162461bcd60e51b815260040161039090614cd3565b801561379857613795828263ffffffff6123d916565b91505b613817565b60208a01518211156137c15760405162461bcd60e51b815260040161039090614b63565b60408a01518310156137e55760405162461bcd60e51b815260040161039090614b13565b80156138175760808b015160208c015161380491908b908e60006136c8565b613814838263ffffffff6121cf16565b92505b5090999098509650505050505050565b60295480156110c957602d546000906001600160a01b03858116911614156138505750816138d5565b600254604051635967aa7560e11b81526001600160a01b039091169063b2cf54ea90613882908790879060040161495b565b60206040518083038186803b15801561389a57600080fd5b505afa1580156138ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506138d29190810190614036565b90505b818111156122fc5760405162461bcd60e51b815260040161039090614be3565b6040516122fc9085906323b872dd60e01b906135cb908790879087906024016148c9565b61392b826001600160a01b0316613cb4565b6139475760405162461bcd60e51b815260040161039090614ce3565b60006060836001600160a01b03168360405161396391906147ae565b6000604051808303816000865af19150503d80600081146139a0576040519150601f19603f3d011682016040523d82523d6000602084013e6139a5565b606091505b5091509150816139c75760405162461bcd60e51b815260040161039090614b53565b8051156122fc57808060200190516139e29190810190613f1a565b6122fc5760405162461bcd60e51b815260040161039090614cb3565b600061210868056bc75e2d63100000613a22603e548561235d90919063ffffffff16565b9063ffffffff613ced16565b600061210868056bc75e2d63100000613a226018548561235d90919063ffffffff16565b808015613b9a576001600160a01b038681166000908152603360205260409020541615613b08576001600160a01b03808716600090815260336020526040902054613aa09116878684613d2f565b5050613b05613ac768056bc75e2d631000006113276039548561235d90919063ffffffff16565b613af9613aec68056bc75e2d631000006113276020548761235d90919063ffffffff16565b849063ffffffff6121cf16565b9063ffffffff6121cf16565b90505b6001600160a01b038416600090815260196020526040902054613b31908263ffffffff6123d916565b6001600160a01b03808616600081815260196020526040908190209390935591518792918916907fb23479169712c443e6b00fb0cec3506a5f5926f541df4243d313e11c8c5c71ed90613b85908690614d03565b60405180910390a4613b9a8686868686612d7a565b505050505050565b815160208084015160408086015160608781015187519588015188850151945160009889989497630957ba1160e21b97613be99792969195929492939192916024016147ee565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260035491519092506000916001600160a01b031690613c3b9084906147ae565b600060405180830381855af49150503d8060008114613c76576040519150601f19603f3d011682016040523d82523d6000602084013e613c7b565b606091505b509250905080613c9d5760405162461bcd60e51b815260040161039090614cc3565b602082015193506040820151925050509250929050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590612b6c575050151592915050565b600061221183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613dc8565b6031546040516306a688ff60e11b815260009182916001600160a01b0390911690630d4d11fe90613d6a908990899089908990600401614856565b6040805180830381600087803b158015613d8357600080fd5b505af1158015613d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613dbb9190810190614054565b9097909650945050505050565b60008183613de95760405162461bcd60e51b81526004016103909190614af2565b5083613df757506000612211565b6000836001860381613e0557fe5b0460010195945050505050565b803561210881614e3b565b805161210881614e4f565b803561210881614e58565b803561210881614e61565b60008083601f840112613e5057600080fd5b50813567ffffffffffffffff811115613e6857600080fd5b602083019150836001820283011115613e8057600080fd5b9250929050565b805161210881614e58565b600060208284031215613ea457600080fd5b6000612b6c8484613e12565b60008060408385031215613ec357600080fd5b6000613ecf8585613e12565b9250506020613ee085828601613e12565b9150509250929050565b60008060408385031215613efd57600080fd5b6000613f098585613e12565b9250506020613ee085828601613e28565b600060208284031215613f2c57600080fd5b6000612b6c8484613e1d565b600060208284031215613f4a57600080fd5b6000612b6c8484613e28565b60008060408385031215613f6957600080fd5b6000613ecf8585613e28565b600080600060608486031215613f8a57600080fd5b6000613f968686613e28565b9350506020613fa786828701613e12565b9250506040613fb886828701613e28565b9150509250925092565b600080600060408486031215613fd757600080fd5b6000613fe38686613e28565b935050602084013567ffffffffffffffff81111561400057600080fd5b61400c86828701613e3e565b92509250509250925092565b60006020828403121561402a57600080fd5b6000612b6c8484613e33565b60006020828403121561404857600080fd5b6000612b6c8484613e87565b6000806040838503121561406757600080fd5b60006140738585613e87565b9250506020613ee085828601613e87565b61408d81614dce565b82525050565b61408d81614dd9565b61408d81614dde565b60006140b082614dbc565b6140ba8185614dc0565b93506140ca818560208601614e05565b9290920192915050565b61408d81614dfa565b60006140e882614dbc565b6140f28185614dc5565b9350614102818560208601614e05565b61410b81614e31565b9093019392505050565b6000614122600683614dc5565b6514185d5cd95960d21b815260200192915050565b6000614144601b83614dc5565b7f696e73756666696369656e742073776170206c69717569646974790000000000815260200192915050565b600061417d602683614dc5565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006141c5601b83614dc5565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006141fe601083614dc5565b6f1ddc9bdb99c8185cdcd95d081cd95b9d60821b815260200192915050565b600061422a602083614dc5565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000614263601383614dc5565b72737761702066696c6c20746f6f206c6172676560681b815260200192915050565b6000614292601783614dc5565b7f65786365737369766520736f7572636520616d6f756e74000000000000000000815260200192915050565b60006142cb600e83614dc5565b6d34b73b30b634b2103632b73232b960911b815260200192915050565b60006142f5603a83614dc5565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b6000614354601d83614dc5565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b600061438d601c83614dc5565b7f736f75726365416d6f756e74206c6172676572207468616e206d617800000000815260200192915050565b60006143c6601083614dc5565b6f3432b0b63a343c903837b9b4ba34b7b760811b815260200192915050565b60006143f2601283614dc5565b711bdb9b1e481153d05cc818d85b8818d85b1b60721b815260200192915050565b6000614420600e83614dc5565b6d7377617020746f6f206c6172676560901b815260200192915050565b600061444a601483614dc5565b736e6f7468696e6720746f206c697175696461746560601b815260200192915050565b600061447a601883614dc5565b7f696e73756666696369656e74206465737420616d6f756e740000000000000000815260200192915050565b60006144b3602183614dc5565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006144f6600c83614dc5565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b600061451e601283614dc5565b713ab73432b0b63a343c903837b9b4ba34b7b760711b815260200192915050565b600061454c601583614dc5565b746c6f616e506172616d73206e6f742065786973747360581b815260200192915050565b600061457d601483614dc5565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b60006145ad601083614dc5565b6f6e6f7468696e6720746f20636c6f736560801b815260200192915050565b60006145d9602e83614dc5565b7f6d696e206f72206d617820736f7572636520746f6b656e20616d6f756e74206e81526d1959591cc81d1bc81899481cd95d60921b602082015260400192915050565b6000612108600083614dc0565b6000614636600e83614dc5565b6d1b1bd85b881a5cc818db1bdcd95960921b815260200192915050565b6000614660600c83614dc5565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b6000614688600d83614dc5565b6c696e76616c696420737461746560981b815260200192915050565b60006146b1602a83614dc5565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006146fd600b83614dc5565b6a1cddd85c0819985a5b195960aa1b815260200192915050565b6000614724601683614dc5565b751cddd85c081d1bdbc81b185c99d9481d1bc8199a5b1b60521b815260200192915050565b6000614756601f83614dc5565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b600061478f601083614dc5565b6f3737ba1032b737bab3b41032ba3432b960811b815260200192915050565b600061221182846140a5565b60006121088261461c565b602081016121088284614084565b604081016147e18285614084565b6122116020830184614084565b60e081016147fc828a614084565b6148096020830189614084565b6148166040830188614084565b6148236060830187614084565b614830608083018661409c565b61483d60a083018561409c565b61484a60c083018461409c565b98975050505050505050565b608081016148648287614084565b6148716020830186614084565b61487e6040830185614084565b61488b606083018461409c565b95945050505050565b60e081016148a2828a614084565b6148af6020830189614084565b6148bc6040830188614084565b614823606083018761409c565b606081016148d78286614084565b6148e46020830185614084565b612b6c604083018461409c565b608081016148ff8287614084565b61490c6020830186614084565b61487e604083018561409c565b60a081016149278288614084565b6149346020830187614084565b614941604083018661409c565b61494e606083018561409c565b612871608083018461409c565b604081016149698285614084565b612211602083018461409c565b606081016149848286614084565b6148e4602083018561409c565b602081016121088284614093565b608081016149ad8287614093565b61490c602083018661409c565b61010081016149c9828b61409c565b6149d6602083018a614093565b6149e36040830189614084565b6149f06060830188614084565b6149fd6080830187614084565b614a0a60a083018661409c565b614a1760c083018561409c565b614a2460e083018461409c565b9998505050505050505050565b6101808101614a40828f61409c565b614a4d602083018e61409c565b614a5a604083018d61409c565b614a67606083018c614093565b614a74608083018b61409c565b614a8160a083018a61409c565b614a8e60c083018961409c565b614a9b60e083018861409c565b614aa961010083018761409c565b614ab761012083018661409c565b614ac5610140830185614084565b614ad3610160830184614084565b9d9c50505050505050505050505050565b6020810161210882846140d4565b6020808252810161221181846140dd565b6020808252810161210881614115565b6020808252810161210881614137565b6020808252810161210881614170565b60208082528101612108816141b8565b60208082528101612108816141f1565b602080825281016121088161421d565b6020808252810161210881614256565b6020808252810161210881614285565b60208082528101612108816142be565b60208082528101612108816142e8565b6020808252810161210881614347565b6020808252810161210881614380565b60208082528101612108816143b9565b60208082528101612108816143e5565b6020808252810161210881614413565b602080825281016121088161443d565b602080825281016121088161446d565b60208082528101612108816144a6565b60208082528101612108816144e9565b6020808252810161210881614511565b602080825281016121088161453f565b6020808252810161210881614570565b60208082528101612108816145a0565b60208082528101612108816145cc565b6020808252810161210881614629565b6020808252810161210881614653565b602080825281016121088161467b565b60208082528101612108816146a4565b60208082528101612108816146f0565b6020808252810161210881614717565b6020808252810161210881614749565b6020808252810161210881614782565b60208101612108828461409c565b60608101614d1f828661409c565b614d2c602083018561409c565b612b6c6040830184614084565b60608101614984828661409c565b60a08101614d55828861409c565b614934602083018761409c565b60c08101614d70828961409c565b614d7d602083018861409c565b614d8a604083018761409c565b614d97606083018661409c565b614da4608083018561409c565b614db160a083018461409c565b979650505050505050565b5190565b919050565b90815260200190565b600061210882614dee565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b600061210882614dce565b60005b83811015614e20578181015183820152602001614e08565b838111156122fc5750506000910152565b601f01601f191690565b614e4481614dce565b811461102257600080fd5b614e4481614dd9565b614e4481614dde565b614e4481614de156fea365627a7a723158201a2a2471b762f4ea0583c9a91260c4bd51d329a1a5d388ee674225aee81d5f9a6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92D894F8 GT PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCF0EDA84 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xEE54A4EC GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x9A5 JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x9BA JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x9CF JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x9E4 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xEE54A4EC EQ PUSH2 0x95B JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x970 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x985 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xD485045E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x8EF JUMPI DUP1 PUSH4 0xE4F3E739 EQ PUSH2 0x90F JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x931 JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x946 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xCF0EDA84 EQ PUSH2 0x8A5 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x8C5 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x8DA JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xC4A90815 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x7F7 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x82F JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x851 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x885 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x7AD JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x7C2 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x7D7 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xAE0A8530 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x736 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x76D JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x78D JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x6EC JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x721 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x4F28CAC2 GT PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x742E6798 GT PUSH2 0x23E JUMPI DUP1 PUSH4 0x8456CB59 GT PUSH2 0x218 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x68D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6A2 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x6B7 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x6D7 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x742E6798 EQ PUSH2 0x64E JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x663 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x678 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x62FFF3F6 GT PUSH2 0x27A JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x5C8 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5F9 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x619 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x639 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x56F JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x584 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x5B3 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x2F470764 GT PUSH2 0x30D JUMPI DUP1 PUSH4 0x3FCA506E GT PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x53A JUMPI DUP1 PUSH4 0x4699F846 EQ PUSH2 0x55A JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x2F470764 EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x4DA JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x1B7BDE74 GT PUSH2 0x349 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x490 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3D4 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x3F6 JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C53 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B9 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EEA JUMP JUMPDEST PUSH2 0x9F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D62 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xA39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x47C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x411 CALLDATASIZE PUSH1 0x4 PUSH2 0x4018 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x431 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EB0 JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xA80 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x47E CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4991 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xAB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xAB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B9 PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EEA JUMP JUMPDEST PUSH2 0xABC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x4F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xAFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x515 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xB0E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x535 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F56 JUMP JUMPDEST PUSH2 0xB20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x555 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xB40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xB52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xB58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5A4 PUSH2 0x59F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F38 JUMP JUMPDEST PUSH2 0xB5E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D39 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xB7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E8 PUSH2 0x5E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EB0 JUMP JUMPDEST PUSH2 0xB85 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D47 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x614 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xBBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x625 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x634 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xBD4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xBEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xBFE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC04 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x684 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xC19 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC22 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x6D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xC31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xC4C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x707 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xC72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x760 PUSH2 0xC96 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4AE4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x788 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xCA5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x7A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xCB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xCC9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xCD8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x7F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xCE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x803 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x817 PUSH2 0x812 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F38 JUMP JUMPDEST PUSH2 0xCF9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x83B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84F PUSH2 0x84A CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xD6B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x871 PUSH2 0x86C CALLDATASIZE PUSH1 0x4 PUSH2 0x3F38 JUMP JUMPDEST PUSH2 0xE40 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x49BA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x891 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x8A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EB0 JUMP JUMPDEST PUSH2 0xE92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84F PUSH2 0x8C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FC2 JUMP JUMPDEST PUSH2 0xEAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xF3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x90A CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xF50 JUMP JUMPDEST PUSH2 0x922 PUSH2 0x91D CALLDATASIZE PUSH1 0x4 PUSH2 0x3F75 JUMP JUMPDEST PUSH2 0xF62 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D11 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xFD0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xFDF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xFE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xFEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84F PUSH2 0x9A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E92 JUMP JUMPDEST PUSH2 0xFF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x1025 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x102B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x1031 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x1040 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC63 PUSH2 0x104F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0xD73 PUSH2 0xC4C JUMP JUMPDEST PUSH2 0xD8F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C23 JUMP JUMPDEST PUSH4 0xE4F3E739 PUSH1 0xE0 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xE1CB396722E7EABE79FBBFE4B479997758C9EB9965437583A97CE608D5A86600 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xDD7 SWAP1 DUP4 PUSH2 0x1053 JUMP JUMPDEST PUSH2 0xDE8 PUSH4 0x33C3B6A1 PUSH1 0xE2 SHL DUP4 PUSH2 0x1053 JUMP JUMPDEST PUSH16 0x4C6F616E436C6F73696E677342617365 PUSH1 0x80 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xED1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C93 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xEF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B03 JUMP JUMPDEST CALLER ORIGIN EQ PUSH2 0xF18 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BD3 JUMP JUMPDEST PUSH2 0xF31 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x10CF JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xF89 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C93 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xFB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B03 JUMP JUMPDEST PUSH2 0xFBC DUP7 DUP7 DUP7 PUSH2 0x1A2A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH6 0x9184E72A000 DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xFFD PUSH2 0xC4C JUMP JUMPDEST PUSH2 0x1019 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C23 JUMP JUMPDEST PUSH2 0x1022 DUP2 PUSH2 0x2042 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x10AE JUMPI PUSH2 0x10A8 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x20C4 AND JUMP JUMPDEST POP PUSH2 0x10CB JUMP JUMPDEST PUSH2 0x10C9 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x210E AND JUMP JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x1113 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C83 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x1131 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C43 JUMP JUMPDEST PUSH1 0x7 DUP3 ADD SLOAD PUSH2 0x1148 SWAP1 PUSH2 0xE10 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST TIMESTAMP GT PUSH2 0x1166 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BC3 JUMP JUMPDEST PUSH1 0xB DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND PUSH2 0x11A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B83 JUMP JUMPDEST PUSH1 0xB DUP3 ADD SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0x11C2 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND PUSH2 0x2218 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xB DUP1 DUP9 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP7 MSTORE SWAP1 DUP5 MSTORE DUP3 DUP6 KECCAK256 PUSH1 0x2 DUP9 ADD SLOAD DUP3 AND DUP1 DUP8 MSTORE SWAP5 MSTORE SWAP2 SWAP1 SWAP4 KECCAK256 PUSH1 0x3 DUP7 ADD SLOAD PUSH1 0xA DUP9 ADD SLOAD SWAP5 SWAP6 SWAP2 SWAP5 PUSH2 0x121E SWAP5 DUP8 SWAP5 SWAP1 SWAP3 DUP2 AND SWAP2 AND TIMESTAMP PUSH2 0x2302 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x7 ADD SLOAD TIMESTAMP GT ISZERO PUSH2 0x1271 JUMPI PUSH1 0x7 DUP7 ADD SLOAD PUSH2 0x1243 SWAP1 TIMESTAMP SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP3 POP PUSH2 0x1259 SWAP1 DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP1 POP PUSH2 0x126E DUP2 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x2397 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x6 DUP6 ADD SLOAD ISZERO PUSH2 0x13D0 JUMPI PUSH1 0x0 PUSH2 0x1333 PUSH10 0x7BAAB4146B63DD00000 PUSH2 0x1327 DUP10 PUSH1 0xB ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8325A1C0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1316 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4036 JUMP JUMPDEST PUSH1 0x4 DUP12 ADD SLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2397 AND JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x134B SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x1 DUP6 ADD DUP2 SWAP1 SSTORE DUP6 SLOAD PUSH2 0x1364 SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SSTORE DUP1 DUP6 SSTORE PUSH1 0x6 DUP7 ADD SLOAD DUP4 LT PUSH2 0x13AB JUMPI PUSH2 0x13A1 PUSH3 0x15180 PUSH2 0x1395 DUP6 DUP11 PUSH1 0x7 ADD SLOAD PUSH2 0x23D9 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x7 DUP9 ADD SSTORE PUSH2 0x13CA JUMP JUMPDEST PUSH1 0x6 DUP7 ADD SLOAD PUSH1 0x7 DUP9 ADD SLOAD PUSH2 0x13C4 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x7 DUP9 ADD SSTORE JUMPDEST POP PUSH2 0x1420 JUMP JUMPDEST PUSH3 0x2819A0 DUP3 LT PUSH2 0x1402 JUMPI PUSH2 0x13F8 PUSH3 0x15180 PUSH2 0x1395 DUP5 DUP10 PUSH1 0x7 ADD SLOAD PUSH2 0x23D9 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x7 DUP8 ADD SSTORE PUSH2 0x1420 JUMP JUMPDEST PUSH1 0x7 DUP7 ADD SLOAD PUSH2 0x141A SWAP1 PUSH3 0x2819A0 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x7 DUP8 ADD SSTORE JUMPDEST PUSH1 0x7 DUP7 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1438 SWAP1 TIMESTAMP PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH2 0x144E SWAP1 DUP3 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1463 DUP2 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x2397 AND JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x147B SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SSTORE PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x1495 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x2 DUP6 ADD SSTORE PUSH2 0x14AA DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x167A DUP10 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP10 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP PUSH1 0x0 DUP7 PUSH1 0x1 DUP16 PUSH2 0x23FE JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP3 DUP3 GT ISZERO PUSH2 0x18AF JUMPI PUSH1 0x2 DUP9 ADD SLOAD PUSH2 0x16A1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 SUB PUSH2 0x248E JUMP JUMPDEST ISZERO PUSH2 0x188C JUMPI PUSH2 0x186F DUP10 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP10 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP6 DUP6 SUB DUP14 PUSH2 0x2594 JUMP JUMPDEST POP SWAP1 SWAP3 POP PUSH2 0x1885 SWAP1 POP DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x18AF JUMP JUMPDEST PUSH1 0xA DUP10 ADD SLOAD PUSH1 0x2 DUP10 ADD SLOAD PUSH2 0x18AF SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP6 DUP6 SUB PUSH2 0x25ED JUMP JUMPDEST PUSH1 0x5 DUP10 ADD SLOAD PUSH2 0x18C4 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x5 DUP11 ADD SSTORE DUP4 ISZERO PUSH2 0x18F0 JUMPI PUSH1 0xB DUP10 ADD SLOAD PUSH1 0x2 DUP10 ADD SLOAD PUSH2 0x18F0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP7 PUSH2 0x267B JUMP JUMPDEST PUSH1 0x3 DUP9 ADD SLOAD PUSH1 0x2 DUP10 ADD SLOAD PUSH1 0x4 DUP12 ADD SLOAD PUSH1 0x0 SWAP3 PUSH2 0x191A SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP3 SWAP2 AND SWAP1 PUSH2 0x2720 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1955 JUMPI PUSH1 0x5 DUP11 ADD SLOAD PUSH2 0x1937 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x5 DUP12 ADD SSTORE PUSH1 0x3 DUP10 ADD SLOAD PUSH2 0x1955 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP4 PUSH2 0x287B JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 DUP11 ADD SLOAD PUSH1 0x3 DUP12 ADD SLOAD PUSH1 0x4 DUP1 DUP15 ADD SLOAD PUSH1 0x5 DUP16 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x17F86809 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP7 PUSH4 0x2FF0D012 SWAP7 PUSH2 0x19A2 SWAP7 SWAP2 DUP4 AND SWAP6 SWAP3 AND SWAP4 SWAP2 SWAP3 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x19F1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4054 JUMP JUMPDEST POP SWAP1 POP PUSH8 0x29A2241AF62C0000 DUP2 GT PUSH2 0x1A1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C33 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 PUSH1 0x3 DUP3 ADD SLOAD DUP4 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 PUSH1 0xFF AND PUSH2 0x1A73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C83 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x1A91 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C43 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x4 DUP6 DUP2 ADD SLOAD PUSH1 0x5 DUP8 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x17F86809 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP7 DUP8 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP7 PUSH4 0x2FF0D012 SWAP7 PUSH2 0x1AE3 SWAP7 SWAP3 DUP5 AND SWAP6 SWAP4 SWAP1 SWAP2 AND SWAP4 SWAP2 SWAP3 SWAP2 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B0E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B32 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4054 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH1 0x5 ADD SLOAD DUP3 GT ISZERO PUSH2 0x1B5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BC3 JUMP JUMPDEST DUP8 SWAP7 POP PUSH1 0x0 DUP1 PUSH2 0x1B79 DUP7 PUSH1 0x4 ADD SLOAD DUP8 PUSH1 0x5 ADD SLOAD DUP7 DUP9 PUSH1 0x5 ADD SLOAD DUP8 PUSH2 0x28B1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP10 LT ISZERO PUSH2 0x1BA1 JUMPI PUSH2 0x1B9A DUP3 PUSH2 0x1327 DUP4 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP8 POP PUSH2 0x1BB8 JUMP JUMPDEST DUP2 DUP10 GT ISZERO PUSH2 0x1BB4 JUMPI DUP2 SWAP9 POP DUP1 SWAP8 POP PUSH2 0x1BB8 JUMP JUMPDEST DUP1 SWAP8 POP JUMPDEST DUP9 PUSH2 0x1BD5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BF3 JUMP JUMPDEST PUSH1 0x2 DUP6 ADD SLOAD PUSH2 0x1BEE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS DUP12 PUSH2 0x29E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DCE DUP8 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP13 DUP11 PUSH1 0xA ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2B06 JUMP JUMPDEST SWAP1 POP DUP1 DUP11 GT ISZERO PUSH2 0x1DFB JUMPI PUSH1 0x2 DUP7 ADD SLOAD PUSH1 0xA DUP9 ADD SLOAD PUSH2 0x1DFB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP4 DUP14 SUB PUSH2 0x287B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1E22 JUMPI PUSH1 0x2 DUP7 ADD SLOAD PUSH1 0xB DUP9 ADD SLOAD PUSH2 0x1E22 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP4 PUSH2 0x2B74 JUMP JUMPDEST PUSH1 0x3 DUP7 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP8 POP DUP9 ISZERO PUSH2 0x1E5D JUMPI PUSH1 0x5 DUP8 ADD SLOAD PUSH2 0x1E4D SWAP1 DUP11 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x5 DUP9 ADD SSTORE PUSH2 0x1E5D DUP9 DUP14 DUP12 PUSH2 0x287B JUMP JUMPDEST PUSH2 0x1E67 DUP8 DUP12 PUSH2 0x2BD7 JUMP JUMPDEST PUSH2 0x2032 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP9 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP13 DUP13 DUP9 DUP11 PUSH1 0x2 PUSH2 0x2CAE JUMP JUMPDEST POP POP POP POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2068 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20D0 DUP4 DUP4 PUSH2 0x2D39 JUMP JUMPDEST PUSH2 0x2104 JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x2108 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x211A DUP4 DUP4 PUSH2 0x2D39 JUMP JUMPDEST ISZERO PUSH2 0x2104 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x2192 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2153 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2170 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x21AE JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x2108 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2211 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2D4E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP2 SWAP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2258 JUMPI POP PUSH1 0x4 DUP3 ADD SLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x22F5 JUMPI PUSH2 0x228F PUSH3 0x15180 PUSH2 0x1327 DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x2283 DUP7 PUSH1 0x4 ADD SLOAD TIMESTAMP PUSH2 0x21CF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0x22AB JUMPI POP PUSH1 0x2 DUP2 ADD SLOAD JUMPDEST DUP1 ISZERO PUSH2 0x22F0 JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH2 0x22C6 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x3 DUP4 ADD SSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0x22E0 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SSTORE PUSH2 0x22F0 DUP5 DUP5 DUP4 PUSH2 0x267B JUMP JUMPDEST PUSH2 0x22FC JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP4 ADD SSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2338 PUSH11 0x7259756A8D61998000000 PUSH2 0x1327 PUSH1 0x15 SLOAD PUSH2 0x2283 DUP12 PUSH1 0x0 ADD SLOAD PUSH2 0x2283 DUP14 PUSH1 0x2 ADD SLOAD DUP10 PUSH2 0x21CF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP9 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x2354 JUMPI PUSH2 0x2354 DUP4 DUP8 DUP8 DUP8 DUP6 PUSH2 0x2D7A JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x236C JUMPI POP PUSH1 0x0 PUSH2 0x2108 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2379 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x2211 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C13 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2211 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x30C5 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2211 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B33 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2437 DUP10 PUSH1 0x0 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD DUP13 PUSH2 0x140 ADD MLOAD DUP12 DUP15 PUSH1 0xA0 ADD MLOAD DUP12 PUSH2 0x242D JUMPI PUSH1 0x0 PUSH2 0x242F JUMP JUMPDEST DUP13 JUMPDEST PUSH1 0x0 DUP13 PUSH2 0x30FC JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP DUP6 DUP4 LT ISZERO PUSH2 0x245E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C03 JUMP JUMPDEST DUP9 PUSH1 0xA0 ADD MLOAD DUP3 GT ISZERO PUSH2 0x2482 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B73 JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x2D SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x29D5277C SWAP3 PUSH2 0x24CC SWAP3 DUP11 SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x47D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x251B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4054 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2536 DUP3 PUSH2 0x1327 DUP8 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP1 POP PUSH32 0xE46714304B3DE2A7B58AFCC0BAFE0A6DEABD30A647332CB479124142FDB14B0B PUSH6 0x9184E72A000 DUP3 GT DUP7 DUP4 PUSH6 0x9184E72A000 PUSH1 0x40 MLOAD PUSH2 0x257B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH6 0x9184E72A000 LT SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x25BC DUP8 PUSH1 0x0 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP11 PUSH2 0x140 ADD MLOAD DUP10 DUP11 PUSH1 0x0 DUP1 DUP13 PUSH2 0x30FC JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP DUP5 DUP3 GT ISZERO PUSH2 0x25E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B73 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10C9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x261C SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0x40A75AE5F7A5336E75F7C7977E12C4B46A9AC0F30DE01A2D5B6C1A4F4AF63587 SWAP1 PUSH2 0x266E SWAP1 DUP6 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x269F PUSH9 0x56BC75E2D63100000 PUSH2 0x1327 PUSH1 0x15 SLOAD DUP6 PUSH2 0x235D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x26AC DUP5 DUP5 DUP4 PUSH2 0x25ED JUMP JUMPDEST PUSH2 0x26C6 DUP4 DUP6 PUSH2 0x26C1 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH2 0x2B74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP1 DUP5 AND PUSH32 0x220E66E3E759E1382AA86CD8AF5ABCA05EBF3AD564F223AE62D977678337272A PUSH2 0x2705 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2712 SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD138F9A1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD138F9A1 SWAP1 PUSH2 0x2759 SWAP1 DUP8 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2785 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x27A9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4036 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x2D SLOAD PUSH1 0x2B SLOAD PUSH1 0x40 MLOAD PUSH4 0xD138F9A1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0xD138F9A1 SWAP4 PUSH2 0x27E9 SWAP4 SWAP2 AND SWAP2 DUP12 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2801 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2815 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2839 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4036 JUMP JUMPDEST SWAP1 POP PUSH2 0x2871 PUSH2 0x2860 PUSH9 0x56BC75E2D63100000 PUSH2 0x1327 PUSH1 0x2C SLOAD DUP7 PUSH2 0x235D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1395 DUP4 PUSH1 0x2 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10C9 JUMPI PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x28A6 JUMPI PUSH2 0x28A1 DUP3 DUP3 PUSH2 0x325A JUMP JUMPDEST PUSH2 0x10C9 JUMP JUMPDEST PUSH2 0x10C9 DUP4 DUP4 DUP4 PUSH2 0x2B74 JUMP JUMPDEST PUSH1 0x21 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP5 DUP7 GT DUP1 PUSH2 0x28C5 JUMPI POP DUP4 ISZERO JUMPDEST ISZERO PUSH2 0x28CF JUMPI PUSH2 0x29DA JUMP JUMPDEST DUP1 DUP7 GT PUSH2 0x28E3 JUMPI POP DUP7 SWAP2 POP DUP6 SWAP1 POP DUP5 PUSH2 0x29DA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28FD DUP7 PUSH8 0x4563918244F40000 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2920 PUSH9 0x56BC75E2D63100000 PUSH2 0x1327 DUP12 PUSH2 0x2283 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST SWAP4 POP PUSH2 0x294E PUSH2 0x2941 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1327 DUP12 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST SWAP4 POP PUSH2 0x297C PUSH2 0x2963 DUP3 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH2 0x1327 DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP4 POP DUP9 DUP5 GT ISZERO PUSH2 0x298A JUMPI DUP9 SWAP4 POP JUMPDEST PUSH2 0x29B3 PUSH2 0x29A6 DUP4 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP3 POP PUSH2 0x29CA PUSH1 0x64 PUSH2 0x1327 DUP6 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x2397 AND JUMP JUMPDEST SWAP3 POP DUP8 DUP4 GT ISZERO PUSH2 0x29D8 JUMPI DUP8 SWAP3 POP JUMPDEST POP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2AE8 JUMPI CALLVALUE PUSH2 0x2A01 JUMPI PUSH2 0x29FC DUP4 CALLER DUP5 DUP5 PUSH2 0x3323 JUMP JUMPDEST PUSH2 0x28A1 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x2A2E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B43 JUMP JUMPDEST DUP1 CALLVALUE LT ISZERO PUSH2 0x2A4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CF3 JUMP JUMPDEST PUSH1 0x2D PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ SWAP1 POP PUSH2 0x2AD4 JUMPI PUSH2 0x2AD4 DUP4 ADDRESS DUP5 DUP5 PUSH2 0x3323 JUMP JUMPDEST DUP1 CALLVALUE GT ISZERO PUSH2 0x28A1 JUMPI PUSH2 0x28A1 CALLER DUP3 CALLVALUE SUB PUSH2 0x336F JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x10C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B43 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 PUSH2 0x2B15 DUP7 DUP9 DUP5 PUSH2 0x340B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x2B2E JUMPI POP SWAP1 DUP2 SWAP1 SUB SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x2B4C JUMP JUMPDEST POP PUSH1 0x0 SWAP2 SWAP1 DUP2 SWAP1 SUB SWAP1 DUP2 ISZERO PUSH2 0x2B4C JUMPI PUSH2 0x2B4C DUP8 PUSH1 0x60 ADD MLOAD DUP7 DUP5 PUSH2 0x287B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2B66 JUMPI PUSH2 0x2B66 DUP8 PUSH1 0x60 ADD MLOAD DUP10 PUSH2 0x160 ADD MLOAD DUP4 PUSH2 0x2B74 JUMP JUMPDEST POP SWAP1 SWAP2 POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10C9 JUMPI PUSH2 0x2B94 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x35A9 AND JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP4 PUSH1 0x40 MLOAD PUSH2 0x266E SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST DUP1 PUSH2 0x2BF4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C63 JUMP JUMPDEST DUP2 PUSH1 0x4 ADD SLOAD DUP2 EQ ISZERO PUSH2 0x2C90 JUMPI PUSH1 0x0 PUSH1 0x4 DUP4 ADD DUP2 SWAP1 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE TIMESTAMP PUSH1 0x7 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD SSTORE DUP2 SLOAD PUSH2 0x2C34 SWAP1 PUSH1 0xF SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x210E AND JUMP JUMPDEST POP DUP2 SLOAD PUSH1 0xB DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2C62 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x210E AND JUMP JUMPDEST POP DUP2 SLOAD PUSH1 0xA DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x10A8 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x210E AND JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH2 0x2CA5 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x4 DUP4 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2CBC JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2354 JUMPI DUP6 PUSH1 0x0 ADD MLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH2 0x140 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x46FA03303782EB2F686515F6C0100F9A62DABE587B0D3F5A4FC0C822D6E532D3 DUP10 PUSH2 0x160 ADD MLOAD DUP12 PUSH1 0x60 ADD MLOAD DUP13 PUSH1 0x80 ADD MLOAD DUP12 DUP12 DUP12 DUP12 PUSH1 0x40 MLOAD PUSH2 0x2D28 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4894 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2D72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x4AF2 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x2F SLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 ISZERO PUSH2 0x2DDD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP2 POP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP12 SWAP2 AND PUSH2 0x2E1B PUSH9 0x56BC75E2D63100000 PUSH2 0x1327 DUP13 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2E2D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2E6B SWAP2 SWAP1 PUSH2 0x47AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2EA6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2EAB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x2EC1 JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP5 POP JUMPDEST DUP5 ISZERO PUSH2 0x30B9 JUMPI PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x2EFD SWAP3 SWAP2 AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x495B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2F4F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3F1A JUMP JUMPDEST POP PUSH1 0x38 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x2F76 SWAP2 DUP15 SWAP2 DUP11 SWAP2 PUSH1 0x24 ADD PUSH2 0x4976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xEFE6A8B PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2FAB SWAP2 SWAP1 PUSH2 0x47AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2FE8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2FED JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 ISZERO PUSH2 0x3064 JUMPI PUSH1 0x1F SLOAD PUSH2 0x300A SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x1F SSTORE PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0xF41C644671512F1CDA76ABFE6038E3D7D526C1377A5A8C692F81703901DB2150 SWAP2 PUSH2 0x3057 SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4D39 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x30B7 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0x483F67EA49F76AC15E15BBAD68B52788CA47D50AEF1E4ACFE95E5E307E710812 SWAP2 PUSH2 0x30AE SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4D39 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x30E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x4AF2 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x30F2 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP3 MSTORE DUP10 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS DUP4 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP11 AND PUSH1 0x80 DUP5 ADD MSTORE DUP4 MLOAD SWAP2 DUP3 ADD DUP5 MSTORE DUP9 DUP3 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE SWAP2 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x3161 SWAP2 SWAP1 DUP15 DUP9 DUP9 DUP7 PUSH2 0x3602 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x3170 DUP12 DUP4 PUSH2 0x3827 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x27 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1E2C62D3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x1E2C62D3 SWAP2 PUSH2 0x31A9 SWAP2 DUP16 SWAP2 DUP16 SWAP2 DUP9 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x4919 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x31F9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4036 JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH32 0xB4EB3C9B62EFCCE7021CBA5FD9CD0C44DF91C2272806CCC5E57DF7C912E8D716 DUP13 DUP7 DUP9 PUSH1 0x40 MLOAD PUSH2 0x3243 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4976 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10CB JUMPI PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SELFBALANCE DUP1 DUP4 GT ISZERO PUSH2 0x32D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x32A3 SWAP1 DUP5 DUP8 SUB SWAP1 PUSH1 0x4 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x32E0 DUP5 DUP5 PUSH2 0x336F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2712 SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x22FC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x3354 JUMPI PUSH2 0x22F0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x35A9 AND JUMP JUMPDEST PUSH2 0x22FC PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x38F5 AND JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x338F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BA3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x33A8 SWAP1 PUSH2 0x47BA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x33E5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x33EA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x10C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B93 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3420 DUP4 PUSH2 0x160 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x2218 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0x160 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP6 MSTORE PUSH1 0xB DUP5 MSTORE DUP3 DUP6 KECCAK256 PUSH1 0x60 DUP11 ADD MLOAD SWAP1 SWAP2 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0xE0 DUP6 ADD MLOAD TIMESTAMP SWAP1 DUP2 GT ISZERO PUSH2 0x3472 JUMPI POP PUSH1 0xE0 DUP6 ADD MLOAD JUMPDEST PUSH2 0x3491 DUP4 DUP8 PUSH1 0x0 ADD MLOAD DUP10 PUSH1 0x60 ADD MLOAD DUP11 PUSH1 0x80 ADD MLOAD DUP11 PUSH2 0x140 ADD MLOAD DUP7 PUSH2 0x2302 JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x80 ADD MLOAD DUP7 LT ISZERO PUSH2 0x34C2 JUMPI PUSH1 0x80 DUP8 ADD MLOAD DUP5 SLOAD PUSH2 0x34BB SWAP2 SWAP1 PUSH2 0x1327 SWAP1 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP1 POP PUSH2 0x34C6 JUMP JUMPDEST POP DUP3 SLOAD JUMPDEST DUP4 SLOAD PUSH2 0x34D8 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST DUP5 SSTORE PUSH1 0x1 DUP4 ADD SLOAD PUSH2 0x34EF SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE PUSH1 0xE0 DUP8 ADD MLOAD PUSH1 0x0 SWAP1 PUSH2 0x350C SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x351E DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x235D AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3533 DUP2 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x2397 AND JUMP JUMPDEST SWAP1 POP DUP8 PUSH1 0x80 ADD MLOAD DUP8 LT ISZERO PUSH2 0x3560 JUMPI PUSH1 0x1 DUP6 ADD SLOAD PUSH2 0x3556 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SSTORE PUSH2 0x3568 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP7 ADD SSTORE JUMPDEST DUP4 SLOAD PUSH2 0x357A SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST DUP5 SSTORE PUSH1 0x2 DUP5 ADD SLOAD DUP2 DUP2 GT PUSH2 0x358F JUMPI PUSH1 0x0 PUSH2 0x3593 JUMP JUMPDEST DUP2 DUP2 SUB JUMPDEST PUSH1 0x2 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE SWAP5 POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10C9 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x35CB SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x495B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3919 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x3619 JUMPI POP PUSH1 0x20 DUP8 ADD MLOAD ISZERO ISZERO JUMPDEST PUSH2 0x3635 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4C73 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH2 0x3646 JUMPI DUP7 MLOAD PUSH1 0x20 DUP9 ADD MSTORE JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD DUP8 MLOAD GT ISZERO PUSH2 0x366B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BB3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH2 0x3728 JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x36E7 JUMPI DUP6 ISZERO PUSH2 0x369C JUMPI PUSH2 0x3695 DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x39FE JUMP JUMPDEST SWAP1 POP PUSH2 0x36B0 JUMP JUMPDEST PUSH2 0x36AD DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x3A2E JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x36E2 JUMPI PUSH1 0x80 DUP12 ADD MLOAD DUP12 MLOAD PUSH2 0x36D3 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x1 JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP6 PUSH2 0x3A52 JUMP JUMPDEST DUP10 MLOAD PUSH2 0x36DF SWAP1 DUP3 PUSH2 0x21CF JUMP JUMPDEST DUP11 MSTORE JUMPDEST PUSH2 0x3728 JUMP JUMPDEST DUP6 ISZERO PUSH2 0x36FF JUMPI PUSH2 0x36F8 DUP11 PUSH1 0x2 PUSH2 0x368B JUMP JUMPDEST SWAP1 POP PUSH2 0x370D JUMP JUMPDEST PUSH2 0x370A DUP11 PUSH1 0x2 PUSH2 0x36A3 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x3728 JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x3722 SWAP1 DUP3 PUSH2 0x23D9 JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MSTORE JUMPDEST DUP7 MLOAD ISZERO PUSH2 0x3747 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CA3 JUMP JUMPDEST PUSH2 0x3751 DUP12 DUP12 PUSH2 0x3BA2 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x379D JUMPI DUP10 MLOAD DUP3 EQ PUSH2 0x377F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CD3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3798 JUMPI PUSH2 0x3795 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x3817 JUMP JUMPDEST PUSH1 0x20 DUP11 ADD MLOAD DUP3 GT ISZERO PUSH2 0x37C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B63 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD DUP4 LT ISZERO PUSH2 0x37E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B13 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3817 JUMPI PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x3804 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x0 PUSH2 0x36C8 JUMP JUMPDEST PUSH2 0x3814 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST SWAP3 POP JUMPDEST POP SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP1 ISZERO PUSH2 0x10C9 JUMPI PUSH1 0x2D SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x3850 JUMPI POP DUP2 PUSH2 0x38D5 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5967AA75 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xB2CF54EA SWAP1 PUSH2 0x3882 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x495B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x389A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x38D2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4036 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x22FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4BE3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22FC SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x35CB SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x48C9 JUMP JUMPDEST PUSH2 0x392B DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3CB4 JUMP JUMPDEST PUSH2 0x3947 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x3963 SWAP2 SWAP1 PUSH2 0x47AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x39A0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x39A5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x39C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4B53 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x22FC JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x39E2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3F1A JUMP JUMPDEST PUSH2 0x22FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CB3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2108 PUSH9 0x56BC75E2D63100000 PUSH2 0x3A22 PUSH1 0x3E SLOAD DUP6 PUSH2 0x235D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3CED AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2108 PUSH9 0x56BC75E2D63100000 PUSH2 0x3A22 PUSH1 0x18 SLOAD DUP6 PUSH2 0x235D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x3B9A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x3B08 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3AA0 SWAP2 AND DUP8 DUP7 DUP5 PUSH2 0x3D2F JUMP JUMPDEST POP POP PUSH2 0x3B05 PUSH2 0x3AC7 PUSH9 0x56BC75E2D63100000 PUSH2 0x1327 PUSH1 0x39 SLOAD DUP6 PUSH2 0x235D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3AF9 PUSH2 0x3AEC PUSH9 0x56BC75E2D63100000 PUSH2 0x1327 PUSH1 0x20 SLOAD DUP8 PUSH2 0x235D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21CF AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3B31 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x23D9 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD DUP8 SWAP3 SWAP2 DUP10 AND SWAP1 PUSH32 0xB23479169712C443E6B00FB0CEC3506A5F5926F541DF4243D313E11C8C5C71ED SWAP1 PUSH2 0x3B85 SWAP1 DUP7 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3B9A DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2D7A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD PUSH1 0x60 DUP8 DUP2 ADD MLOAD DUP8 MLOAD SWAP6 DUP9 ADD MLOAD DUP9 DUP6 ADD MLOAD SWAP5 MLOAD PUSH1 0x0 SWAP9 DUP10 SWAP9 SWAP5 SWAP8 PUSH4 0x957BA11 PUSH1 0xE2 SHL SWAP8 PUSH2 0x3BE9 SWAP8 SWAP3 SWAP7 SWAP2 SWAP6 SWAP3 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 PUSH1 0x24 ADD PUSH2 0x47EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE PUSH1 0x3 SLOAD SWAP2 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x3C3B SWAP1 DUP5 SWAP1 PUSH2 0x47AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3C76 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3C7B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0x3C9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CC3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP3 ADD MLOAD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2B6C JUMPI POP POP ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2211 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x3DC8 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x40 MLOAD PUSH4 0x6A688FF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD4D11FE SWAP1 PUSH2 0x3D6A SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4856 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D97 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3DBB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4054 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x3DE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x4AF2 JUMP JUMPDEST POP DUP4 PUSH2 0x3DF7 JUMPI POP PUSH1 0x0 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 DUP7 SUB DUP2 PUSH2 0x3E05 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2108 DUP2 PUSH2 0x4E3B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2108 DUP2 PUSH2 0x4E4F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2108 DUP2 PUSH2 0x4E58 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2108 DUP2 PUSH2 0x4E61 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3E50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3E68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3E80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2108 DUP2 PUSH2 0x4E58 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B6C DUP5 DUP5 PUSH2 0x3E12 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3ECF DUP6 DUP6 PUSH2 0x3E12 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3EE0 DUP6 DUP3 DUP7 ADD PUSH2 0x3E12 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3F09 DUP6 DUP6 PUSH2 0x3E12 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3EE0 DUP6 DUP3 DUP7 ADD PUSH2 0x3E28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B6C DUP5 DUP5 PUSH2 0x3E1D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B6C DUP5 DUP5 PUSH2 0x3E28 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3ECF DUP6 DUP6 PUSH2 0x3E28 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3F8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3F96 DUP7 DUP7 PUSH2 0x3E28 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3FA7 DUP7 DUP3 DUP8 ADD PUSH2 0x3E12 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3FB8 DUP7 DUP3 DUP8 ADD PUSH2 0x3E28 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3FD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3FE3 DUP7 DUP7 PUSH2 0x3E28 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4000 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x400C DUP7 DUP3 DUP8 ADD PUSH2 0x3E3E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x402A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B6C DUP5 DUP5 PUSH2 0x3E33 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4048 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B6C DUP5 DUP5 PUSH2 0x3E87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4067 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4073 DUP6 DUP6 PUSH2 0x3E87 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3EE0 DUP6 DUP3 DUP7 ADD PUSH2 0x3E87 JUMP JUMPDEST PUSH2 0x408D DUP2 PUSH2 0x4DCE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x408D DUP2 PUSH2 0x4DD9 JUMP JUMPDEST PUSH2 0x408D DUP2 PUSH2 0x4DDE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40B0 DUP3 PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x40BA DUP2 DUP6 PUSH2 0x4DC0 JUMP JUMPDEST SWAP4 POP PUSH2 0x40CA DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4E05 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x408D DUP2 PUSH2 0x4DFA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40E8 DUP3 PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x40F2 DUP2 DUP6 PUSH2 0x4DC5 JUMP JUMPDEST SWAP4 POP PUSH2 0x4102 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4E05 JUMP JUMPDEST PUSH2 0x410B DUP2 PUSH2 0x4E31 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4122 PUSH1 0x6 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4144 PUSH1 0x1B DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x696E73756666696369656E742073776170206C69717569646974790000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x417D PUSH1 0x26 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41C5 PUSH1 0x1B DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41FE PUSH1 0x10 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH16 0x1DDC9BDB99C8185CDCD95D081CD95B9D PUSH1 0x82 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x422A PUSH1 0x20 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4263 PUSH1 0x13 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH19 0x737761702066696C6C20746F6F206C61726765 PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4292 PUSH1 0x17 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x65786365737369766520736F7572636520616D6F756E74000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42CB PUSH1 0xE DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH14 0x34B73B30B634B2103632B73232B9 PUSH1 0x91 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42F5 PUSH1 0x3A DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x416464726573733A20756E61626C6520746F2073656E642076616C75652C2072 DUP2 MSTORE PUSH32 0x6563697069656E74206D61792068617665207265766572746564000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4354 PUSH1 0x1D DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E6365000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x438D PUSH1 0x1C DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x736F75726365416D6F756E74206C6172676572207468616E206D617800000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43C6 PUSH1 0x10 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH16 0x3432B0B63A343C903837B9B4BA34B7B7 PUSH1 0x81 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43F2 PUSH1 0x12 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH18 0x1BDB9B1E481153D05CC818D85B8818D85B1B PUSH1 0x72 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4420 PUSH1 0xE DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH14 0x7377617020746F6F206C61726765 PUSH1 0x90 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x444A PUSH1 0x14 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH20 0x6E6F7468696E6720746F206C6971756964617465 PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x447A PUSH1 0x18 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x696E73756666696369656E74206465737420616D6F756E740000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B3 PUSH1 0x21 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44F6 PUSH1 0xC DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x451E PUSH1 0x12 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH18 0x3AB73432B0B63A343C903837B9B4BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x454C PUSH1 0x15 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH21 0x6C6F616E506172616D73206E6F7420657869737473 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x457D PUSH1 0x14 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45AD PUSH1 0x10 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH16 0x6E6F7468696E6720746F20636C6F7365 PUSH1 0x80 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45D9 PUSH1 0x2E DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x6D696E206F72206D617820736F7572636520746F6B656E20616D6F756E74206E DUP2 MSTORE PUSH14 0x1959591CC81D1BC81899481CD95D PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2108 PUSH1 0x0 DUP4 PUSH2 0x4DC0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4636 PUSH1 0xE DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH14 0x1B1BD85B881A5CC818DB1BDCD959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4660 PUSH1 0xC DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4688 PUSH1 0xD DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH13 0x696E76616C6964207374617465 PUSH1 0x98 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46B1 PUSH1 0x2A DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46FD PUSH1 0xB DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH11 0x1CDDD85C0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4724 PUSH1 0x16 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH22 0x1CDDD85C081D1BDBC81B185C99D9481D1BC8199A5B1B PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4756 PUSH1 0x1F DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x478F PUSH1 0x10 DUP4 PUSH2 0x4DC5 JUMP JUMPDEST PUSH16 0x3737BA1032B737BAB3B41032BA3432B9 PUSH1 0x81 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2211 DUP3 DUP5 PUSH2 0x40A5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2108 DUP3 PUSH2 0x461C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2108 DUP3 DUP5 PUSH2 0x4084 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x47E1 DUP3 DUP6 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x2211 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4084 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x47FC DUP3 DUP11 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4809 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4816 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4823 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4830 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x483D PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x484A PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4864 DUP3 DUP8 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4871 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x487E PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x488B PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x48A2 DUP3 DUP11 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x48AF PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x48BC PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4823 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x48D7 DUP3 DUP7 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x48E4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x2B6C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x48FF DUP3 DUP8 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x490C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x487E PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4927 DUP3 DUP9 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4934 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4941 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x494E PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x2871 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4969 DUP3 DUP6 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x2211 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4984 DUP3 DUP7 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x48E4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2108 DUP3 DUP5 PUSH2 0x4093 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x49AD DUP3 DUP8 PUSH2 0x4093 JUMP JUMPDEST PUSH2 0x490C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x49C9 DUP3 DUP12 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x49D6 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x4093 JUMP JUMPDEST PUSH2 0x49E3 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x49F0 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x49FD PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4A0A PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A17 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A24 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x4A40 DUP3 DUP16 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A4D PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A5A PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A67 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x4093 JUMP JUMPDEST PUSH2 0x4A74 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A81 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A8E PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4A9B PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4AA9 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4AB7 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4AC5 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x4AD3 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x4084 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2108 DUP3 DUP5 PUSH2 0x40D4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2211 DUP2 DUP5 PUSH2 0x40DD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4115 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4137 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4170 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x41B8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x41F1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x421D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4256 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x42BE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x42E8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4347 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4380 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x43B9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x43E5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4413 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x443D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x446D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x44A6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x44E9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4511 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x453F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4570 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x45CC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4629 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4653 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x467B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x46A4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4717 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4749 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2108 DUP2 PUSH2 0x4782 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2108 DUP3 DUP5 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4D1F DUP3 DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4D2C PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x2B6C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4084 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4984 DUP3 DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4D55 DUP3 DUP9 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4934 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x409C JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x4D70 DUP3 DUP10 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4D7D PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4D8A PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4D97 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4DA4 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x409C JUMP JUMPDEST PUSH2 0x4DB1 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x409C JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2108 DUP3 PUSH2 0x4DEE JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2108 DUP3 PUSH2 0x4DCE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4E20 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4E08 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x22FC JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x4E44 DUP2 PUSH2 0x4DCE JUMP JUMPDEST DUP2 EQ PUSH2 0x1022 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E44 DUP2 PUSH2 0x4DD9 JUMP JUMPDEST PUSH2 0x4E44 DUP2 PUSH2 0x4DDE JUMP JUMPDEST PUSH2 0x4E44 DUP2 PUSH2 0x4DE1 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 BYTE 0x2A 0x24 PUSH18 0xB762F4EA0583C9A91260C4BD51D329A1A5D3 DUP9 0xEE PUSH8 0x4225AEE81D5F9A6C PUSH6 0x78706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100400000000000000000000000 ",
              "sourceMap": "764:24197:127:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;764:24197:127;1349:30;;-1:-1:-1;;;1349:30:127;;;;;;;;;;;;;;;;1636:67:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5443:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5443:30:14;;;:::i;:::-;;;;;;;;1270:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1270:46:14;;;;;;;;:::i;6768:81::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6768:81:14;;;;;;;;:::i;:::-;;;;;;;;4372:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4372:55:14;;;;;;;;:::i;5558:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5558:53:14;;;;;;;;:::i;:::-;;;;;;;;3097:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3097:46:14;;;:::i;3969:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3969:32:14;;;:::i;1527:65::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1527:65:14;;;;;;;;:::i;3376:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3376:55:14;;;;;;;;:::i;4925:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4925:48:14;;;;;;;;:::i;1744:69::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1744:69:14;;;;;;;;:::i;2825:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2825:55:14;;;;;;;;:::i;2717:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2717:41:14;;;:::i;4832:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4832:37:14;;;:::i;2013:52::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2013:52:14;;;;;;;;:::i;:::-;;;;;;;;;;5060:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5060:50:14;;;:::i;1898:76::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1898:76:14;;;;;;;;:::i;:::-;;;;;;;;;;;;4542:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4542:47:14;;;;;;;;:::i;5650:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5650:57:14;;;;;;;;:::i;1087:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1087:24:14;;;:::i;6000:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6000:39:14;;;:::i;1012:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1012:25:14;;;:::i;3887:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3887:32:14;;;:::i;7007:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7007:17:14;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;4285:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4285:55:14;;;;;;;;:::i;1134:83:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;2994:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2994:55:14;;;;;;;;:::i;5113:49::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5113:49:14;;;:::i;5340:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5340:45:14;;;:::i;4075:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4075:47:14;;;:::i;5175:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5175:29:14;;;:::i;:::-;;;;;;;;3781:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3781:57:14;;;;;;;;:::i;3605:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3605:57:14;;;;;;;;:::i;6272:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6272:30:14;;;:::i;1174:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1174:48:14;;;:::i;6168:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6168:55:14;;;;;;;;:::i;1347:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1347:37:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1386:323:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1386:323:127;;;;;;;;:::i;:::-;;1437:48:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1437:48:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;6853:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6853:69:14;;;;;;;;:::i;4183:343:127:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4183:343:127;;;;;;;;:::i;6305:31:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6305:31:14;;;:::i;4651:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4651:43:14;;;:::i;3209:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3209:55:14;;;;;;;;:::i;2786:312:127:-;;;;;;;;;:::i;:::-;;;;;;;;;;2626:29:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2626:29:14;;;:::i;3490:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3490:47:14;;;:::i;1173:73:127:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1173:73:127;;;:::i;4754:35:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4754:35:14;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1351:98:142;;;;;;;;:::i;6447:60:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6447:60:14;;;:::i;4198:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4198:55:14;;;:::i;5207:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5207:35:14;;;:::i;5389:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5389:20:14;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1386:323:127:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;1445:33:127;1481:37;;;:12;:37;;;;-1:-1:-1;;;;;1481:37:127;;1522:43;;1558:6;1522:10;:43::i;:::-;1569:42;-1:-1:-1;;;1604:6:127;1569:10;:42::i;:::-;-1:-1:-1;;;1678:6:127;-1:-1:-1;;;;;1620:85:127;1651:25;-1:-1:-1;;;;;1620:85:127;;;;;;;;;;;1058:1:142;1386:323:127;:::o;1437:48:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4183:343:127:-;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;4410:10:127;4424:9;4410:23;4402:54;;;;-1:-1:-1;;;4402:54:127;;;;;;;;;4471:51;4486:6;4471:51;;;;;;;;;;;;:9;:51::i;:::-;-1:-1:-1;;493:1:143;1234:14;:38;-1:-1:-1;4183:343:127:o;6305:31:14:-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2786:312:127:-;2964:23;2992:20;3017:19;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;3053:41:127;3064:6;3072:8;3082:11;3053:10;:41::i;:::-;493:1:143;1234:14;:38;3046:48:127;;;;-1:-1:-1;3046:48:127;;-1:-1:-1;2786:312:127;-1:-1:-1;;;;2786:312:127:o;2626:29:14:-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;1173:73:127:-;1232:14;1173:73;:::o;4754:35:14:-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;780:87:137:-;853:10;780:87;:::o;7574:230:14:-;-1:-1:-1;;;;;;7635:17:14;;;;;;:12;:17;;;;;:26;;-1:-1:-1;;;;;;7635:26:14;-1:-1:-1;;;;;7635:26:14;;;;;;;;7670:20;7666:135;;7697:40;:15;-1:-1:-1;;;;;;7724:12:14;;7697:40;:26;:40;:::i;:::-;;7666:135;;;7753:43;:15;-1:-1:-1;;;;;;7783:12:14;;7753:43;:29;:43;:::i;:::-;;7666:135;7574:230;;:::o;8780:5370:127:-;8856:22;8881:13;;;:5;:13;;;;;;;;8946:22;;;;8935:34;;:10;:34;;;;;;8982:16;;;;;;8974:43;;;;-1:-1:-1;;;8974:43:127;;;;;;;;;9029:18;;9021:57;;;;-1:-1:-1;;;9021:57:127;;;;;;;;;9108:22;;;;:32;;9135:4;9108:32;:26;:32;:::i;:::-;9090:15;:50;9082:79;;;;-1:-1:-1;;;9082:79:127;;;;;;;;;9194:16;;;;-1:-1:-1;;;;;9194:16:127;;;9223:1;9173:38;;;:20;:38;;;;;;;9165:79;;;;-1:-1:-1;;;9165:79:127;;;;;;;;;9302:16;;;;9320:25;;;;9289:57;;-1:-1:-1;;;;;9302:16:127;;;;9320:25;9289:12;:57::i;:::-;9405:12;;9351:38;9392:26;;;:12;:26;;;;;;;;9467:14;9482:16;;;;-1:-1:-1;;;;;9482:16:127;;;9467:32;;;;;;;;9500:25;;;;;;9467:59;;;;;;;;;9653:31;;;;9779:18;;;;9392:26;;9467:59;;9531:290;;9392:26;;9500:25;;9653:31;;;9779:18;9802:15;9531:34;:290::i;:::-;9936:24;9964;10014:9;:22;;;9996:15;:40;9992:244;;;10082:22;;;;10062:43;;:15;;:43;:19;:43;:::i;:::-;10150:28;;10043:62;;-1:-1:-1;10129:50:127;;10043:62;;10129:50;:20;:50;:::i;:::-;10110:69;-1:-1:-1;10203:28:127;10110:69;10224:6;10203:28;:20;:28;:::i;:::-;10184:47;;9992:244;10414:27;;;;:32;10410:1115;;10525:18;10546:91;10624:12;10546:73;10580:9;:16;;;;;;;;;;-1:-1:-1;;;;;10580:16:127;-1:-1:-1;;;;;10570:46:127;;:48;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10570:48:127;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10570:48:127;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10570:48:127;;;;;;;;;10546:19;;;;;:73;:23;:73;:::i;:::-;:77;:91;:77;:91;:::i;:::-;10676:30;;;;10525:112;;-1:-1:-1;10676:46:127;;10525:112;10676:46;:34;:46;:::i;:::-;10643:30;;;:79;;;10795:28;;10760:64;;10643:79;10760:64;:34;:64;:::i;:::-;10727:30;;;:97;10830:41;;;11000:27;;;;10980:47;;10976:280;;11060:56;11109:6;11060:44;11087:16;11060:9;:22;;;:26;;:44;;;;:::i;:::-;:48;:56;:48;:56;:::i;:::-;11035:22;;;:81;10976:280;;;11222:27;;;;11195:22;;;;:55;;;:26;:55;:::i;:::-;11170:22;;;:80;10976:280;10410:1115;;;;960:13;11325:16;:25;11321:200;;11383:56;11432:6;11383:44;11410:16;11383:9;:22;;;:26;;:44;;;;:::i;:56::-;11358:22;;;:81;11321:200;;;11482:22;;;;:33;;960:13;11482:33;:26;:33;:::i;:::-;11457:22;;;:58;11321:200;11562:22;;;;11529:30;;11562:43;;11589:15;11562:43;:26;:43;:::i;:::-;11661:28;;11529:76;;-1:-1:-1;11634:56:127;;11529:76;;11634:56;:26;:56;:::i;:::-;11609:81;-1:-1:-1;11719:34:127;11609:81;11746:6;11719:34;:26;:34;:::i;:::-;11791:30;;;;11694:59;;-1:-1:-1;11791:58:127;;11694:59;11791:58;:34;:58;:::i;:::-;11758:30;;;:91;11886:29;;;;:57;;11920:22;11886:57;:33;:57;:::i;:::-;11854:29;;;:89;11999:44;:22;12026:16;11999:44;:26;:44;:::i;:::-;11974:69;;12115:31;12148:29;12186:255;12209:9;12186:255;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12186:255:127;-1:-1:-1;;;;;12186:255:127;-1:-1:-1;;;;;12186:255:127;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12186:255:127;-1:-1:-1;;;;;12186:255:127;-1:-1:-1;;;;;12186:255:127;;;;;12224:15;12186:255;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12186:255:127;-1:-1:-1;;;;;12186:255:127;-1:-1:-1;;;;;12186:255:127;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12186:255:127;-1:-1:-1;;;;;12186:255:127;-1:-1:-1;;;;;12186:255:127;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12186:255:127;-1:-1:-1;;;;;12186:255:127;-1:-1:-1;;;;;12186:255:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12245:1;12328:22;12386:4;12423:13;12186:17;:255::i;:::-;12114:327;;;;;12533:22;12507:23;:48;12503:708;;;12665:25;;;;12648:93;;-1:-1:-1;;;;;12665:25:127;12692:48;;;12648:16;:93::i;:::-;12644:563;;;12781:157;12803:9;12781:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12781:157:127;-1:-1:-1;;;;;12781:157:127;-1:-1:-1;;;;;12781:157:127;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12781:157:127;-1:-1:-1;;;;;12781:157:127;-1:-1:-1;;;;;12781:157:127;;;;;12819:15;12781:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12781:157:127;-1:-1:-1;;;;;12781:157:127;-1:-1:-1;;;;;12781:157:127;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12781:157:127;-1:-1:-1;;;;;12781:157:127;-1:-1:-1;;;;;12781:157:127;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12781:157:127;-1:-1:-1;;;;;12781:157:127;-1:-1:-1;;;;;12781:157:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12867:22;12841:23;:48;12919:13;12781:15;:157::i;:::-;-1:-1:-1;12749:189:127;;-1:-1:-1;12968:50:127;;-1:-1:-1;12968:21:127;12749:189;12968:50;:25;:50;:::i;:::-;12944:74;;12644:563;;;13105:18;;;;13125:25;;;;13090:111;;-1:-1:-1;;;;;13105:18:127;;;;13125:25;13152:48;;;13090:14;:111::i;:::-;13284:20;;;;:47;;13309:21;13284:47;:24;:47;:::i;:::-;13261:20;;;:70;13340:21;;13336:152;;13421:16;;;;13439:25;;;;13400:83;;-1:-1:-1;;;;;13421:16:127;;;;13439:25;13466:16;13400:20;:83::i;:::-;13536:31;;;;13569:25;;;;13596:19;;;;13492:22;;13517:99;;-1:-1:-1;;;;;13536:31:127;;;;13569:25;;;13517:18;:99::i;:::-;13492:124;-1:-1:-1;13625:19:127;;13621:210;;13705:20;;;;:40;;13730:14;13705:40;:24;:40;:::i;:::-;13682:20;;;:63;13766:31;;;;13751:75;;-1:-1:-1;;;;;13766:31:127;13799:10;13811:14;13751;:75::i;:::-;13878:10;;;13912:25;;;;13943:31;;;;13980:19;;;;;14005:20;;;;13866:164;;-1:-1:-1;;;13866:164:127;;13836:21;;-1:-1:-1;;;;;13878:10:127;;;;13866:40;;:164;;13912:25;;;;13943:31;;;13980:19;;13866:164;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13866:164:127;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13866:164:127;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13866:164:127;;;;;;;;;13835:195;;;14062:7;14046:13;:23;14034:112;;;;-1:-1:-1;;;14034:112:127;;;;;;;;;8780:5370;;;;;;;;;;;;;:::o;5341:2709::-;5451:23;5558:13;;;:5;:13;;;;;;;;5623:22;;;;5612:34;;:10;:34;;;;;5659:16;;;;5451:23;;;;5558:13;;5659:16;;5651:43;;;;-1:-1:-1;;;5651:43:127;;;;;;;;;5706:18;;5698:57;;;;-1:-1:-1;;;5698:57:127;;;;;;;;;5831:10;;;5865:25;;;;5896:31;;;;5933:19;;;;;5958:20;;;;5819:164;;-1:-1:-1;;;5819:164:127;;5761:21;;;;-1:-1:-1;;;;;5831:10:127;;;;5819:40;;:164;;5865:25;;;;5896:31;;;;;5933:19;;5958:20;5819:164;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5819:164:127;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5819:164:127;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5819:164:127;;;;;;;;;5760:223;;;;6012:15;:33;;;5995:13;:50;;5987:79;;;;-1:-1:-1;;;5987:79:127;;;;;;;;;6089:11;6071:29;;6168:23;6193:19;6221:162;6249:9;:19;;;6274:9;:20;;;6300:13;6319:15;:33;;;6358:20;6221:22;:162::i;:::-;6167:216;;;;;6410:15;6392;:33;6388:324;;;6447:53;6484:15;6447:32;:11;6463:15;6447:32;:15;:32;:::i;:53::-;6432:68;;6388:324;;;6533:15;6515;:33;6511:201;;;6619:15;6601:33;;6654:11;6639:26;;6511:201;;;6696:11;6681:26;;6511:201;6724:20;6716:53;;;;-1:-1:-1;;;6716:53:127;;;;;;;;;6854:25;;;;6826:86;;-1:-1:-1;;;;;6854:25:127;6889:4;6896:15;6826:27;:86::i;:::-;6998:35;7036:91;7063:9;7036:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7036:91:127;-1:-1:-1;;;;;7036:91:127;-1:-1:-1;;;;;7036:91:127;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7036:91:127;-1:-1:-1;;;;;7036:91:127;-1:-1:-1;;;;;7036:91:127;;;;;7074:15;7036:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7036:91:127;-1:-1:-1;;;;;7036:91:127;-1:-1:-1;;;;;7036:91:127;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7036:91:127;-1:-1:-1;;;;;7036:91:127;-1:-1:-1;;;;;7036:91:127;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7036:91:127;-1:-1:-1;;;;;7036:91:127;-1:-1:-1;;;;;7036:91:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7091:15;7108:9;:18;;;;;;;;;;-1:-1:-1;;;;;7108:18:127;7036:26;:91::i;:::-;6998:129;;7154:27;7136:15;:45;7132:217;;;7251:25;;;;7278:18;;;;7236:108;;-1:-1:-1;;;;;7251:25:127;;;;7278:18;7298:45;;;7236:14;:108::i;:::-;7357:32;;7353:278;;7553:25;;;;7580:16;;;;7539:87;;-1:-1:-1;;;;;7553:25:127;;;;7580:16;7598:27;7539:13;:87::i;:::-;7649:31;;;;-1:-1:-1;;;;;7649:31:127;;-1:-1:-1;7689:17:127;;7685:151;;7736:20;;;;:38;;7761:12;7736:38;:24;:38;:::i;:::-;7713:20;;;:61;7780:51;7795:11;7808:8;7818:12;7780:14;:51::i;:::-;7840:38;7851:9;7862:15;7840:10;:38::i;:::-;7883:163;7906:15;7883:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7883:163:127;-1:-1:-1;;;;;7883:163:127;-1:-1:-1;;;;;7883:163:127;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7883:163:127;-1:-1:-1;;;;;7883:163:127;-1:-1:-1;;;;;7883:163:127;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7883:163:127;-1:-1:-1;;;;;7883:163:127;-1:-1:-1;;;;;7883:163:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7926:9;7883:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7883:163:127;-1:-1:-1;;;;;7883:163:127;-1:-1:-1;;;;;7883:163:127;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7883:163:127;-1:-1:-1;;;;;7883:163:127;-1:-1:-1;;;;;7883:163:127;;;;;7940:15;7960:12;7977:20;8002:13;8020:22;7883:18;:163::i;:::-;5341:2709;;;;;;;;;;;;;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1293:212:95:-;1370:4;1385:20;1394:3;1399:5;1385:8;:20::i;:::-;1380:122;;-1:-1:-1;1431:10:95;;;;27::-1;;23:18;;;45:23;;;-1:-1;1431:22:95;;;;;;;;;;;;;1412:16;;;;;;;;;;;:41;1458:11;;1380:122;-1:-1:-1;1492:5:95;1380:122;1293:212;;;;:::o;2102:845::-;2182:4;2196:20;2205:3;2210:5;2196:8;:20::i;:::-;2192:752;;;2223:21;2247:16;;;;;;;;;;;2266:1;2292:10;;:17;-1:-1:-1;;2247:20:95;;;;2292:21;2428:26;;;2424:318;;2462:17;2482:3;:10;;2493:9;2482:21;;;;;;;;;;;;;;;;2462:41;;2607:9;2579:3;:10;;2590:13;2579:25;;;;;;;;;;;;;;;;;;;:37;;;;2669:20;;;;;;;;;2708:1;2692:17;;2669:40;;2424:318;2807:9;:16;;;;;;;;;;2800:23;2878:10;;;:16;;;;;;;;;;;;;;;;;;;;;;;;2907:4;2900:11;;;;;;1201:125:145;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1272:50;1201:125;-1:-1:-1;;;1201:125:145:o;1036:930:97:-;-1:-1:-1;;;;;1155:22:97;;;1110:42;1155:22;;;:14;:22;;;;;;;;:37;;;;;;;;;;;1232:30;;;;1155:37;;1110:42;1232:35;;;;:80;;-1:-1:-1;1271:36:97;;;;:41;;1232:80;1228:735;;;1337:105;1435:6;1337:93;1399:19;:30;;;1337:57;1357:19;:36;;;1337:15;:19;;:57;;;;:::i;:::-;:61;:93;:61;:93;:::i;:105::-;1487:15;1448:36;;;:54;1530:29;;;;1319:123;;-1:-1:-1;1512:47:97;;1508:100;;;-1:-1:-1;1579:29:97;;;;1508:100;1618:20;;1614:275;;1678:29;;;;:50;;1712:15;1678:50;:33;:50;:::i;:::-;1646:29;;;:82;1766:29;;;;:50;;1800:15;1766:50;:33;:50;:::i;:::-;1734:29;;;:82;1823:60;1844:6;1852:13;1867:15;1823:20;:60::i;:::-;1228:735;;;1943:15;1904:36;;;:54;1228:735;1036:930;;;;:::o;6369:621:96:-;6647:26;6679:139;6798:15;6679:109;6770:17;;6679:86;6736:17;:28;;;6679:52;6696:17;:34;;;6679:12;:16;;:52;;;;:::i;:139::-;6823:34;;;:49;;;6647:171;-1:-1:-1;6881:23:96;;6877:110;;6911:71;6925:4;6931:6;6939:8;6949:12;6963:18;6911:13;:71::i;:::-;6369:621;;;;;;;:::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;2817:121;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;18743:923:127;18972:31;19008:29;19042:32;19161:333;19175:9;:12;;;19192:15;:31;;;19228:15;:25;;;19258:9;:18;;;19281:10;19320:9;:20;;;19369:23;:80;;19448:1;19369:80;;;19399:15;19369:80;19454:5;19477:13;19161:9;:333::i;:::-;19084:410;;-1:-1:-1;19084:410:127;-1:-1:-1;19084:410:127;-1:-1:-1;19506:42:127;;;;19498:79;;;;-1:-1:-1;;;19498:79:127;;;;;;;;;19614:9;:20;;;19589:21;:45;;19581:81;;;;-1:-1:-1;;;19581:81:127;;;;;;;;;18743:923;;;;;;;;;;:::o;17809:442::-;17950:10;;17987;;17938:61;;-1:-1:-1;;;17938:61:127;;17884:4;;;;;;-1:-1:-1;;;;;17950:10:127;;;;17938:33;;:61;;17972:5;;17987:10;;;;17938:61;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17938:61:127;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17938:61:127;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17938:61:127;;;;;;;;;17894:105;;-1:-1:-1;17894:105:127;-1:-1:-1;18003:20:127;18026:39;17894:105;18026:20;:6;17894:105;18026:20;:10;:20;:::i;:39::-;18003:62;;18074:115;1232:14;18085:12;:47;18134:6;18142:12;1232:14;18074:115;;;;;;;;;;;;;;;;;;1232:14;-1:-1:-1;;17809:442:127;-1:-1:-1;;;;;17809:442:127:o;20174:707::-;20342:31;20378:29;20412:32;20531:271;20545:9;:12;;;20562:15;:25;;;20592:15;:31;;;20628:9;:18;;;20651:10;20690;20729:1;20762:5;20785:13;20531:9;:271::i;:::-;20454:348;;-1:-1:-1;20454:348:127;-1:-1:-1;20454:348:127;-1:-1:-1;20814:35:127;;;;20806:71;;;;-1:-1:-1;;;20806:71:127;;;;;;;;;20174:707;;;;;;;;:::o;5885:395:96:-;5987:15;;5983:294;;-1:-1:-1;;;;;6118:30:96;;;;;;:20;:30;;;;;;:46;;6153:10;6118:46;:34;:46;:::i;:::-;-1:-1:-1;;;;;6085:30:96;;;;;;;:20;:30;;;;;;;:79;;;;6175:41;;;;;;;;;;6205:10;;6175:41;;;;;;;;;;5885:395;;;:::o;2234:702:97:-;2350:18;2371:50;2414:6;2371:38;2391:17;;2371:15;:19;;:38;;;;:::i;:50::-;2350:71;;2641:49;2656:6;2664:13;2679:10;2641:14;:49::i;:::-;2762:69;2776:13;2791:6;2799:31;:15;2819:10;2799:31;:19;:31;:::i;:::-;2762:13;:69::i;:::-;-1:-1:-1;;;;;2857:75:97;;;;;;;2900:31;:15;2920:10;2900:31;:19;:31;:::i;:::-;2857:75;;;;;;;;;;;;;;;2234:702;;;;:::o;819:603:101:-;1017:10;;1005:77;;-1:-1:-1;;;1005:77:101;;945:14;;;;-1:-1:-1;;;;;1017:10:101;;;;1005:35;;:77;;1041:9;;1052:15;;1069:12;;1005:77;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1005:77:101;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1005:77:101;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1005:77:101;;;;;;;;;1147:10;;1179;;1209:18;;1135:93;;-1:-1:-1;;;1135:93:101;;965:117;;-1:-1:-1;1086:43:101;;-1:-1:-1;;;;;1147:10:101;;;;1135:35;;:93;;1179:10;;;1192:15;;1209:18;1135:93;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1135:93:101;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1135:93:101;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1135:93:101;;;;;;;;;1086:142;;1243:139;1312:69;1374:6;1312:57;1346:22;;1312:29;:33;;:57;;;;:::i;:69::-;1243:47;:35;1288:1;1243:47;:44;:47;:::i;:139::-;1233:149;819:603;-1:-1:-1;;;;;;819:603:101:o;21073:297:127:-;21182:16;;21178:189;;21231:10;;-1:-1:-1;;;;;21209:33:127;;;21231:10;;21209:33;21205:158;;;21250:41;21269:8;21279:11;21250:18;:41::i;:::-;21205:158;;;21309:48;21323:10;21335:8;21345:11;21309:13;:48::i;1121:1460:98:-;1423:27;;1318:23;;;;1458:33;;;;:62;;-1:-1:-1;1495:25:98;;1458:62;1454:233;;;1527:55;;1454:233;1614:16;1597:13;:33;1593:94;;-1:-1:-1;1645:9:98;;-1:-1:-1;1656:10:98;;-1:-1:-1;1668:13:98;1637:45;;1593:94;1736:21;1760:30;:17;1782:7;1760:30;:21;:30;:::i;:::-;1736:54;-1:-1:-1;1928:52:98;1973:6;1928:40;1958:9;1928:25;1736:54;1973:6;1928:25;:17;:25;:::i;:52::-;1910:70;-1:-1:-1;2002:69:98;2022:48;2063:6;2022:36;:10;2037:20;2022:36;:14;:36;:::i;:48::-;2002:15;;:69;:19;:69;:::i;:::-;1984:87;-1:-1:-1;2093:68:98;2125:35;:13;2143:16;2125:35;:17;:35;:::i;:::-;2093:27;:15;2113:6;2093:27;:19;:27;:::i;:68::-;2075:86;;2187:9;2169:15;:27;2165:70;;;2221:9;2203:27;;2165:70;2337:49;2357:28;:16;2378:6;2357:28;:20;:28;:::i;:::-;2337:15;;:49;:19;:49;:::i;:::-;2323:63;-1:-1:-1;2404:46:98;2446:3;2404:37;2323:63;2420:20;2404:37;:15;:37;:::i;:46::-;2390:60;;2472:10;2458:11;:24;2454:64;;;2503:10;2489:24;;2454:64;-1:-1:-1;1121:1460:98;;;;;;;;;;:::o;16805:753:127:-;16930:20;;16926:629;;16961:9;16957:535;;16983:63;16997:9;17008:10;17020:8;17030:15;16983:13;:63::i;:::-;16957:535;;;17093:10;;-1:-1:-1;;;;;17072:32:127;;;17093:10;;17072:32;17064:61;;;;-1:-1:-1;;;17064:61:127;;;;;;;;;17152:15;17139:9;:28;;17131:57;;;;-1:-1:-1;;;17131:57:127;;;;;;;;;17194:10;;;;;;;;;-1:-1:-1;;;;;17194:10:127;-1:-1:-1;;;;;17194:18:127;;17219:15;17194:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17194:43:127;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;;17247:25:127;;17267:4;17247:25;;-1:-1:-1;17243:111:127;;17281:66;17295:9;17314:4;17321:8;17331:15;17281:13;:66::i;:::-;17375:15;17363:9;:27;17359:128;;;17422:58;17440:10;17464:15;17452:9;:27;17422:17;:58::i;16926:629::-;17515:9;:14;17507:43;;;;-1:-1:-1;;;17507:43:127;;;;;;;;14690:2056;14856:7;14907:15;14856:7;15072:72;15088:15;15105:9;14907:15;15072;:72::i;:::-;15037:107;;15149:34;15353:24;15322:27;:55;15318:938;;-1:-1:-1;15555:55:127;;;;;15678:1;;15318:938;;;-1:-1:-1;16099:1:127;;15959:55;;;;;16110:29;;16106:146;;16169:77;16184:15;:25;;;16211:8;16221:24;16169:14;:77::i;:::-;16432:31;;16428:276;;16613:86;16627:15;:25;;;16654:9;:16;;;16672:26;16613:13;:86::i;:::-;-1:-1:-1;16715:27:127;;-1:-1:-1;;14690:2056:127;;;;;;;:::o;2297:195:102:-;2388:10;;2384:105;;2405:37;-1:-1:-1;;;;;2405:26:102;;2432:2;2436:5;2405:37;:26;:37;:::i;:::-;2474:2;-1:-1:-1;;;;;2453:31:102;2467:5;-1:-1:-1;;;;;2453:31:102;;2478:5;2453:31;;;;;;;21546:583:127;21636:20;21628:49;;;;-1:-1:-1;;;21628:49:127;;;;;;;;;21705:9;:19;;;21686:15;:38;21682:444;;;21753:1;21731:19;;;:23;;;21759:16;;;:24;;-1:-1:-1;;21759:24:127;;;21813:15;21788:22;;;:40;21833:25;;;:29;21896:12;;21867:42;;:14;;:42;:28;:42;:::i;:::-;-1:-1:-1;21961:12:127;;21929:16;;;;-1:-1:-1;;;;;21929:16:127;21961:12;21914:32;;;:14;:32;;;;;:60;;;:46;:60;:::i;:::-;-1:-1:-1;22030:12:127;;21996:18;;;;-1:-1:-1;;;;;21996:18:127;22030:12;21979:36;;;:16;:36;;;;;:64;;;:50;:64;:::i;21682:444::-;22081:19;;;;:40;;22105:15;22081:40;:23;:40;:::i;:::-;22059:19;;;:62;21546:583;;:::o;24234:725::-;24498:22;24485:9;:35;;;;;;;;;24481:474;;;24618:9;:12;;;24588:10;-1:-1:-1;;;;;24530:425:127;24545:9;:18;;;-1:-1:-1;;;;;24530:425:127;;24646:9;:16;;;24678:15;:25;;;24722:15;:31;;;24778:15;24818:21;24870:20;24920:13;24530:425;;;;;;;;;;;;;;;;;;;;;24234:725;;;;;;;:::o;3145:122:95:-;3225:4;3242:16;;;;;;;;;;;;:21;;;3145:122::o;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;7367:1524:96:-;7557:16;;7599:10;;-1:-1:-1;;;;;7618:24:96;;;7505:20;7618:24;;;:14;:24;;;;;;;;:38;;;;;;;;;;;7505:20;;7557:16;7599:10;;;;;7618:42;7614:116;;-1:-1:-1;;;;;7687:24:96;;;;;;;:14;:24;;;;;;;;:38;;;;;;;;;;;-1:-1:-1;7614:116:96;7996:15;;7834:12;;7848:17;;-1:-1:-1;;;;;7872:22:96;;;;-1:-1:-1;;;7929:45:96;7981:8;;7996:15;8086:44;8123:6;8086:32;:9;8100:17;8086:32;:13;:32;:::i;:44::-;7900:236;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;7900:236:96;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;7900:236:96;;;179:29:-1;;;;160:49;;;7872:269:96;;;;7900:236;7872:269;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7833:308:96;;;;8224:1;8215:7;8212:14;8209:2;;;8265;8259:4;8255:13;8249:20;8233:36;;8209:2;8286:17;;8282:606;;8317:15;;8342:16;;8310:63;;-1:-1:-1;;;8310:63:96;;-1:-1:-1;;;;;8317:15:96;;;;8310:31;;:63;;8342:16;;;8360:12;;8310:63;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8310:63:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8310:63:96;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8310:63:96;;;;;;;;;-1:-1:-1;8402:16:96;;8510:30;;8430:111;;8380:12;;-1:-1:-1;;;;;8402:16:96;;8430:111;;8490:4;;8496:12;;8430:111;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;8430:111:96;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;8402:145:96;;;8430:111;8402:145;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8379:168:96;;;8557:7;8553:331;;;8592:17;;:35;;8614:12;8592:35;:21;:35;:::i;:::-;8572:17;:55;8656:15;;8714:30;;8639:106;;8673:6;;-1:-1:-1;;;;;8656:15:96;;;;8639:106;;;;;;;;8681:17;;8700:12;;8639:106;;;;;;;;;;8553:331;;;8789:15;;8847:30;;8768:110;;8806:6;;-1:-1:-1;;;;;8789:15:96;;;;8768:110;;;;;;;;8814:17;;8833:12;;8768:110;;;;;;;;;;8553:331;8282:606;;7367:1524;;;;;;;;;;:::o;3411:315:145:-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1194:1199:151:-;1626:339;;;;;;;;-1:-1:-1;;;;;1626:339:151;;;;;;;;;;;;;;;;1687:4;1626:339;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1467:31;;;;;;1626:339;;;1835:6;1846:9;1860:13;1467:31;1626:10;:339::i;:::-;1575:390;;-1:-1:-1;1575:390:151;-1:-1:-1;2012:50:151;2027:11;1575:390;2012:14;:50::i;:::-;2143:10;;2266:15;;2131:154;;-1:-1:-1;;;2131:154:151;;-1:-1:-1;;;;;2143:10:151;;;;2131:46;;:154;;2182:11;;2198:9;;2212:21;;2238:23;;2131:154;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2131:154:151;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2131:154:151;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2131:154:151;;;;;;;;;2108:177;;2325:9;-1:-1:-1;;;;;2295:94:151;2312:11;-1:-1:-1;;;;;2295:94:151;2304:6;2295:94;2336:4;2342:21;2365:23;2295:94;;;;;;;;;;;;;;;;;1194:1199;;;;;;;;;;;;;:::o;1304:341:102:-;1376:10;;1372:270;;1419:10;;-1:-1:-1;;;;;1419:10:102;1452:21;1482:15;;;1478:70;;;1505:37;;-1:-1:-1;;;1505:37:102;;-1:-1:-1;;;;;1505:20:102;;;;;:37;;1526:15;;;;1505:37;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1505:37:102;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1505:37:102;;;;1478:70;1552:28;1570:2;1574:5;1552:17;:28::i;:::-;1627:2;-1:-1:-1;;;;;1591:46:102;1613:11;-1:-1:-1;;;;;1591:46:102;;1631:5;1591:46;;;;;;;2769:272;2876:10;;2872:166;;-1:-1:-1;;;;;2897:21:102;;2913:4;2897:21;2893:141;;;2926:37;-1:-1:-1;;;;;2926:26:102;;2953:2;2957:5;2926:37;:26;:37;:::i;2893:141::-;2981:47;-1:-1:-1;;;;;2981:30:102;;3012:4;3018:2;3022:5;2981:47;:30;:47;:::i;2414:330:136:-;2514:6;2489:21;:31;;2481:73;;;;-1:-1:-1;;;2481:73:136;;;;;;;;;2608:12;2626:9;-1:-1:-1;;;;;2626:14:136;2647:6;2626:32;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2607:51:136;;;2670:7;2662:78;;;;-1:-1:-1;;;2662:78:136;;;;;;;;22132:2099:127;22266:7;22319:57;22332:9;:16;;;22350:15;:25;;;22319:12;:57::i;:::-;22435:12;;22381:38;22422:26;;;:12;:26;;;;;;;;22512:16;;;;-1:-1:-1;;;;;22497:32:127;;;;;:14;:32;;;;;22530:25;;;;22497:59;;;;;;;;;;;22622:22;;;;22584:15;;22607:37;;22603:90;;;-1:-1:-1;22666:22:127;;;;22603:90;22697:287;22736:17;22758:9;:12;;;22775:15;:25;;;22819:15;:31;;;22945:9;:18;;;22968:12;22697:34;:287::i;:::-;22989:24;23038:9;:19;;;23021:14;:36;23017:207;;;23136:19;;;;23083:28;;:73;;23136:19;23083:48;;23116:14;23083:48;:32;:48;:::i;:73::-;23064:92;;23017:207;;;-1:-1:-1;23191:28:127;;23017:207;23289:28;;:50;;23322:16;23289:50;:32;:50;:::i;:::-;23258:81;;23376:30;;;;:52;;23411:16;23376:52;:34;:52;:::i;:::-;23343:30;;;:85;23498:22;;;;23463:32;;23498:40;;23525:12;23498:40;:26;:40;:::i;:::-;23463:75;-1:-1:-1;23569:46:127;23463:75;23598:16;23569:46;:28;:46;:::i;:::-;23542:73;-1:-1:-1;23646:36:127;23542:73;23675:6;23646:36;:28;:36;:::i;:::-;23619:63;;23708:9;:19;;;23691:14;:36;23687:195;;;23767:30;;;;:60;;23802:24;23767:60;:34;:60;:::i;:::-;23734:30;;;:93;23687:195;;;23876:1;23843:30;;;:34;23687:195;23968:34;;:54;;24007:14;23968:54;:38;:54;:::i;:::-;23931:91;;24047:29;;;;24112:36;;;:79;;24190:1;24112:79;;;24163:24;24151:9;:36;24112:79;24080:29;;;;:111;;;;24203:24;-1:-1:-1;;;;;22132:2099:127;;;;;:::o;654:174:144:-;765:58;;739:85;;758:5;;-1:-1:-1;;;788:23:144;765:58;;813:2;;817:5;;765:58;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;765:58:144;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;765:58:144;;;179:29:-1;;;;160:49;;;739:18:144;:85::i;2909:2766:151:-;3381:7;;3105;;;;3381:12;;;:28;;-1:-1:-1;3397:7:151;;;;:12;;3381:28;3373:87;;;;-1:-1:-1;;;3373:87:151;;;;;;;;;3469:7;;;;3465:45;;3498:7;;;3488;;:17;3465:45;3532:7;;;;3521;;:18;;3513:59;;;;-1:-1:-1;;;3513:59:151;;;;;;;;;3577:31;3612:29;3646:18;3673:8;3668:851;;3709:7;;;;3705:810;;3797:14;3793:131;;;3833:28;3853:4;3858:1;3853:7;;;;;3833:19;:28::i;:::-;3820:41;;3793:131;;;3894:23;3909:4;3914:1;3909:7;;;;;3894:14;:23::i;:::-;3881:36;;3793:131;3934:15;;3930:303;;3980:8;;;;4019;;3958:227;;3980:8;4005:6;;3980:5;4068:1;4062:8;;;;;4168:10;3958:14;:227::i;:::-;4203:7;;:23;;4215:10;4203:11;:23::i;:::-;4193:33;;3930:303;3705:810;;;4309:14;4305:131;;;4345:28;4365:4;4370:1;4365:7;;4345:28;4332:41;;4305:131;;;4406:23;4421:4;4426:1;4421:7;;4406:23;4393:36;;4305:131;4446:15;;4442:68;;4480:7;;;;:23;;4492:10;4480:11;:23::i;:::-;4470:7;;;:33;4442:68;4531:20;;:25;4523:51;;;;-1:-1:-1;;;4523:51:151;;;;;;;;;4630:32;4650:5;4657:4;4630:19;:32::i;:::-;4671:7;;;;4579:83;;-1:-1:-1;4579:83:151;-1:-1:-1;4667:945:151;;4830:7;;4805:32;;4797:67;;;;-1:-1:-1;;;4797:67:151;;;;;;;;;4874:15;;4870:94;;4921:37;:21;4947:10;4921:37;:25;:37;:::i;:::-;4897:61;;4870:94;4667:945;;;5156:7;;;;5131:32;;;5123:64;;;;-1:-1:-1;;;5123:64:151;;;;;;;;;5227:7;;;;5200:34;;;5192:74;;;;-1:-1:-1;;;5192:74:151;;;;;;;;;5276:15;;5272:336;;5320:8;;;;;5369;;;5299:231;;5320:8;5344:6;;5320:5;5415:1;5409:8;;5299:231;5563:39;:23;5591:10;5563:39;:27;:39;:::i;:::-;5537:65;;5272:336;-1:-1:-1;5624:23:151;;;;-1:-1:-1;2909:2766:151;-1:-1:-1;;;;;;;2909:2766:151:o;7706:398::-;7809:11;;7828:17;;7824:277;;7904:10;;7852:19;;-1:-1:-1;;;;;7880:35:151;;;7904:10;;7880:35;7876:162;;;-1:-1:-1;7937:6:151;7876:162;;;7987:10;;7975:57;;-1:-1:-1;;;7975:57:151;;-1:-1:-1;;;;;7987:10:151;;;;7975:35;;:57;;8011:12;;8025:6;;7975:57;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7975:57:151;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7975:57:151;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7975:57:151;;;;;;;;;7961:71;;7876:162;8065:12;8050:11;:27;;8042:54;;;;-1:-1:-1;;;8042:54:151;;;;;;;;831:204:144;962:68;;936:95;;955:5;;-1:-1:-1;;;985:27:144;962:68;;1014:4;;1020:2;;1024:5;;962:68;;;;2564:999;3111:27;3119:5;-1:-1:-1;;;;;3111:25:144;;:27::i;:::-;3103:71;;;;-1:-1:-1;;;3103:71:144;;;;;;;;;3233:12;3247:23;3282:5;-1:-1:-1;;;;;3274:19:144;3294:4;3274:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3232:67:144;;;;3311:7;3303:52;;;;-1:-1:-1;;;3303:52:144;;;;;;;;;3364:17;;:21;3360:200;;3489:10;3478:30;;;;;;;;;;;;;;3470:85;;;;-1:-1:-1;;;3470:85:144;;;;;;;;1172:159:96;1248:7;1268:59;1320:6;1268:43;1287:23;;1268:14;:18;;:43;;;;:::i;:::-;:51;:59;:51;:59;:::i;882:148::-;953:7;973:53;1019:6;973:37;992:17;;973:14;:18;;:37;;;;:::i;3804:940::-;3973:10;4025:15;;4021:720;;-1:-1:-1;;;;;4051:28:96;;;4091:1;4051:28;;;:22;:28;;;;;;;:42;4047:343;;-1:-1:-1;;;;;4127:28:96;;;;;;;:22;:28;;;;;;4101:91;;4127:28;4150:4;4163:8;4173:18;4101:25;:91::i;:::-;;;4219:165;4311:67;4371:6;4311:55;4334:31;;4311:18;:22;;:55;;;;:::i;:67::-;4220:79;4243:55;4291:6;4243:43;4266:19;;4243:18;:22;;:43;;;;:::i;:55::-;4220:18;;:79;:22;:79;:::i;:::-;4219:85;:165;:85;:165;:::i;:::-;4198:186;;4047:343;-1:-1:-1;;;;;4504:30:96;;;;;;:20;:30;;;;;;:54;;4539:18;4504:54;:34;:54;:::i;:::-;-1:-1:-1;;;;;4471:30:96;;;;;;;:20;:30;;;;;;;:87;;;;4569:57;;4599:6;;4471:30;4569:57;;;;;;;4607:18;;4569:57;;;;;;;;;;4673:63;4687:4;4693:6;4701:8;4711:12;4725:10;4673:13;:63::i;:::-;3804:940;;;;;;:::o;6021:741:151:-;6290:8;;;6320;;;;6348;;;;;6190:17;6382:8;;;;6422:7;;6460;;;;6498;;;;6213:325;;6121:31;;;;6190:17;;-1:-1:-1;;;6241:43:151;6213:325;;6290:8;;6320;;6348;;6382;;6422:7;;6460;6213:325;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;6213:325:151;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;6213:325:151;;;179:29:-1;;;;160:49;;;6577:9:151;;:28;;6213:325;;-1:-1:-1;;;;;;;;6577:9:151;;:28;;6213:325;;6577:28;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;6559:46:151;-1:-1:-1;6559:46:151;-1:-1:-1;6559:46:151;6609:31;;;;-1:-1:-1;;;6609:31:151;;;;;;;;;6702:2;6696:4;6692:13;6686:20;6659:47;;6751:2;6745:4;6741:13;6735:20;6710:45;;6654:105;;;;;;;:::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;;1183:15:136;;;1148:51;-1:-1:-1;;639:564:136:o;3821:129:145:-;3883:7;3903:43;3911:1;3914;3903:43;;;;;;;;;;;;;;;;;:7;:43::i;3045:393:96:-;3340:15;;3312:122;;-1:-1:-1;;;3312:122:96;;3181:32;;;;-1:-1:-1;;;;;3340:15:96;;;;3312:82;;:122;;3395:8;;3405:6;;3413:8;;3423:10;;3312:122;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3312:122:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3312:122:96;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3312:122:96;;;;;;;;;3255:179;;;;-1:-1:-1;3045:393:96;-1:-1:-1;;;;;3045:393:96:o;4045:285:145:-;4144:7;4233:12;4225:6;4217:29;;;;-1:-1:-1;;;4217:29:145;;;;;;;;;;-1:-1:-1;4255:6:145;4251:30;;-1:-1:-1;4275:1:145;4268:8;;4251:30;4284:9;4307:1;4302;4298;:5;4297:11;;;;;;4312:1;4296:17;;4045:285;-1:-1:-1;;;;;4045:285:145:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:128;217:13;;235:30;217:13;235:30;;277:130;344:20;;369:33;344:20;369:33;;414:128;480:20;;505:32;480:20;505:32;;563:336;;;677:3;670:4;662:6;658:17;654:27;644:2;;695:1;692;685:12;644:2;-1:-1;715:20;;755:18;744:30;;741:2;;;787:1;784;777:12;741:2;821:4;813:6;809:17;797:29;;872:3;864:4;856:6;852:17;842:8;838:32;835:41;832:2;;;889:1;886;879:12;832:2;637:262;;;;;;1044:134;1122:13;;1140:33;1122:13;1140:33;;1185:241;;1289:2;1277:9;1268:7;1264:23;1260:32;1257:2;;;1305:1;1302;1295:12;1257:2;1340:1;1357:53;1402:7;1382:9;1357:53;;1433:366;;;1554:2;1542:9;1533:7;1529:23;1525:32;1522:2;;;1570:1;1567;1560:12;1522:2;1605:1;1622:53;1667:7;1647:9;1622:53;;;1612:63;;1584:97;1712:2;1730:53;1775:7;1766:6;1755:9;1751:22;1730:53;;;1720:63;;1691:98;1516:283;;;;;;1806:366;;;1927:2;1915:9;1906:7;1902:23;1898:32;1895:2;;;1943:1;1940;1933:12;1895:2;1978:1;1995:53;2040:7;2020:9;1995:53;;;1985:63;;1957:97;2085:2;2103:53;2148:7;2139:6;2128:9;2124:22;2103:53;;2179:257;;2291:2;2279:9;2270:7;2266:23;2262:32;2259:2;;;2307:1;2304;2297:12;2259:2;2342:1;2359:61;2412:7;2392:9;2359:61;;2443:241;;2547:2;2535:9;2526:7;2522:23;2518:32;2515:2;;;2563:1;2560;2553:12;2515:2;2598:1;2615:53;2660:7;2640:9;2615:53;;2691:366;;;2812:2;2800:9;2791:7;2787:23;2783:32;2780:2;;;2828:1;2825;2818:12;2780:2;2863:1;2880:53;2925:7;2905:9;2880:53;;3064:491;;;;3202:2;3190:9;3181:7;3177:23;3173:32;3170:2;;;3218:1;3215;3208:12;3170:2;3253:1;3270:53;3315:7;3295:9;3270:53;;;3260:63;;3232:97;3360:2;3378:53;3423:7;3414:6;3403:9;3399:22;3378:53;;;3368:63;;3339:98;3468:2;3486:53;3531:7;3522:6;3511:9;3507:22;3486:53;;;3476:63;;3447:98;3164:391;;;;;;3562:490;;;;3702:2;3690:9;3681:7;3677:23;3673:32;3670:2;;;3718:1;3715;3708:12;3670:2;3753:1;3770:53;3815:7;3795:9;3770:53;;;3760:63;;3732:97;3888:2;3877:9;3873:18;3860:32;3912:18;3904:6;3901:30;3898:2;;;3944:1;3941;3934:12;3898:2;3972:64;4028:7;4019:6;4008:9;4004:22;3972:64;;;3962:74;;;;3839:203;3664:388;;;;;;4059:239;;4162:2;4150:9;4141:7;4137:23;4133:32;4130:2;;;4178:1;4175;4168:12;4130:2;4213:1;4230:52;4274:7;4254:9;4230:52;;4305:263;;4420:2;4408:9;4399:7;4395:23;4391:32;4388:2;;;4436:1;4433;4426:12;4388:2;4471:1;4488:64;4544:7;4524:9;4488:64;;4575:399;;;4707:2;4695:9;4686:7;4682:23;4678:32;4675:2;;;4723:1;4720;4713:12;4675:2;4758:1;4775:64;4831:7;4811:9;4775:64;;;4765:74;;4737:108;4876:2;4894:64;4950:7;4941:6;4930:9;4926:22;4894:64;;4981:113;5064:24;5082:5;5064:24;;;5059:3;5052:37;5046:48;;;5101:104;5178:21;5193:5;5178:21;;5212:113;5295:24;5313:5;5295:24;;5332:356;;5460:38;5492:5;5460:38;;;5510:88;5591:6;5586:3;5510:88;;;5503:95;;5603:52;5648:6;5643:3;5636:4;5629:5;5625:16;5603:52;;;5667:16;;;;;5440:248;-1:-1;;5440:248;5695:168;5799:58;5851:5;5799:58;;5870:347;;5982:39;6015:5;5982:39;;;6033:71;6097:6;6092:3;6033:71;;;6026:78;;6109:52;6154:6;6149:3;6142:4;6135:5;6131:16;6109:52;;;6182:29;6204:6;6182:29;;;6173:39;;;;5962:255;-1:-1;;;5962:255;6225:305;;6385:66;6449:1;6444:3;6385:66;;;-1:-1;;;6464:29;;6521:2;6512:12;;6371:159;-1:-1;;6371:159;6539:327;;6699:67;6763:2;6758:3;6699:67;;;6799:29;6779:50;;6857:2;6848:12;;6685:181;-1:-1;;6685:181;6875:375;;7035:67;7099:2;7094:3;7035:67;;;7135:34;7115:55;;-1:-1;;;7199:2;7190:12;;7183:30;7241:2;7232:12;;7021:229;-1:-1;;7021:229;7259:327;;7419:67;7483:2;7478:3;7419:67;;;7519:29;7499:50;;7577:2;7568:12;;7405:181;-1:-1;;7405:181;7595:316;;7755:67;7819:2;7814:3;7755:67;;;-1:-1;;;7835:39;;7902:2;7893:12;;7741:170;-1:-1;;7741:170;7920:332;;8080:67;8144:2;8139:3;8080:67;;;8180:34;8160:55;;8243:2;8234:12;;8066:186;-1:-1;;8066:186;8261:319;;8421:67;8485:2;8480:3;8421:67;;;-1:-1;;;8501:42;;8571:2;8562:12;;8407:173;-1:-1;;8407:173;8589:323;;8749:67;8813:2;8808:3;8749:67;;;8849:25;8829:46;;8903:2;8894:12;;8735:177;-1:-1;;8735:177;8921:314;;9081:67;9145:2;9140:3;9081:67;;;-1:-1;;;9161:37;;9226:2;9217:12;;9067:168;-1:-1;;9067:168;9244:395;;9404:67;9468:2;9463:3;9404:67;;;9504:34;9484:55;;9573:28;9568:2;9559:12;;9552:50;9630:2;9621:12;;9390:249;-1:-1;;9390:249;9648:329;;9808:67;9872:2;9867:3;9808:67;;;9908:31;9888:52;;9968:2;9959:12;;9794:183;-1:-1;;9794:183;9986:328;;10146:67;10210:2;10205:3;10146:67;;;10246:30;10226:51;;10305:2;10296:12;;10132:182;-1:-1;;10132:182;10323:316;;10483:67;10547:2;10542:3;10483:67;;;-1:-1;;;10563:39;;10630:2;10621:12;;10469:170;-1:-1;;10469:170;10648:318;;10808:67;10872:2;10867:3;10808:67;;;-1:-1;;;10888:41;;10957:2;10948:12;;10794:172;-1:-1;;10794:172;10975:314;;11135:67;11199:2;11194:3;11135:67;;;-1:-1;;;11215:37;;11280:2;11271:12;;11121:168;-1:-1;;11121:168;11298:320;;11458:67;11522:2;11517:3;11458:67;;;-1:-1;;;11538:43;;11609:2;11600:12;;11444:174;-1:-1;;11444:174;11627:324;;11787:67;11851:2;11846:3;11787:67;;;11887:26;11867:47;;11942:2;11933:12;;11773:178;-1:-1;;11773:178;11960:370;;12120:67;12184:2;12179:3;12120:67;;;12220:34;12200:55;;-1:-1;;;12284:2;12275:12;;12268:25;12321:2;12312:12;;12106:224;-1:-1;;12106:224;12339:312;;12499:67;12563:2;12558:3;12499:67;;;-1:-1;;;12579:35;;12642:2;12633:12;;12485:166;-1:-1;;12485:166;12660:318;;12820:67;12884:2;12879:3;12820:67;;;-1:-1;;;12900:41;;12969:2;12960:12;;12806:172;-1:-1;;12806:172;12987:321;;13147:67;13211:2;13206:3;13147:67;;;-1:-1;;;13227:44;;13299:2;13290:12;;13133:175;-1:-1;;13133:175;13317:320;;13477:67;13541:2;13536:3;13477:67;;;-1:-1;;;13557:43;;13628:2;13619:12;;13463:174;-1:-1;;13463:174;13646:316;;13806:67;13870:2;13865:3;13806:67;;;-1:-1;;;13886:39;;13953:2;13944:12;;13792:170;-1:-1;;13792:170;13971:383;;14131:67;14195:2;14190:3;14131:67;;;14231:34;14211:55;;-1:-1;;;14295:2;14286:12;;14279:38;14345:2;14336:12;;14117:237;-1:-1;;14117:237;14363:296;;14540:83;14621:1;14616:3;14540:83;;14668:314;;14828:67;14892:2;14887:3;14828:67;;;-1:-1;;;14908:37;;14973:2;14964:12;;14814:168;-1:-1;;14814:168;14991:312;;15151:67;15215:2;15210:3;15151:67;;;-1:-1;;;15231:35;;15294:2;15285:12;;15137:166;-1:-1;;15137:166;15312:313;;15472:67;15536:2;15531:3;15472:67;;;-1:-1;;;15552:36;;15616:2;15607:12;;15458:167;-1:-1;;15458:167;15634:379;;15794:67;15858:2;15853:3;15794:67;;;15894:34;15874:55;;-1:-1;;;15958:2;15949:12;;15942:34;16004:2;15995:12;;15780:233;-1:-1;;15780:233;16022:311;;16182:67;16246:2;16241:3;16182:67;;;-1:-1;;;16262:34;;16324:2;16315:12;;16168:165;-1:-1;;16168:165;16342:322;;16502:67;16566:2;16561:3;16502:67;;;-1:-1;;;16582:45;;16655:2;16646:12;;16488:176;-1:-1;;16488:176;16673:331;;16833:67;16897:2;16892:3;16833:67;;;16933:33;16913:54;;16995:2;16986:12;;16819:185;-1:-1;;16819:185;17013:316;;17173:67;17237:2;17232:3;17173:67;;;-1:-1;;;17253:39;;17320:2;17311:12;;17159:170;-1:-1;;17159:170;17457:262;;17601:93;17690:3;17681:6;17601:93;;17726:370;;17924:147;18067:3;17924:147;;18103:213;18221:2;18206:18;;18235:71;18210:9;18279:6;18235:71;;18323:324;18469:2;18454:18;;18483:71;18458:9;18527:6;18483:71;;;18565:72;18633:2;18622:9;18618:18;18609:6;18565:72;;18654:883;18940:3;18925:19;;18955:71;18929:9;18999:6;18955:71;;;19037:72;19105:2;19094:9;19090:18;19081:6;19037:72;;;19120;19188:2;19177:9;19173:18;19164:6;19120:72;;;19203;19271:2;19260:9;19256:18;19247:6;19203:72;;;19286:73;19354:3;19343:9;19339:19;19330:6;19286:73;;;19370;19438:3;19427:9;19423:19;19414:6;19370:73;;;19454;19522:3;19511:9;19507:19;19498:6;19454:73;;;18911:626;;;;;;;;;;;19544:547;19746:3;19731:19;;19761:71;19735:9;19805:6;19761:71;;;19843:72;19911:2;19900:9;19896:18;19887:6;19843:72;;;19926;19994:2;19983:9;19979:18;19970:6;19926:72;;;20009;20077:2;20066:9;20062:18;20053:6;20009:72;;;19717:374;;;;;;;;20098:883;20384:3;20369:19;;20399:71;20373:9;20443:6;20399:71;;;20481:72;20549:2;20538:9;20534:18;20525:6;20481:72;;;20564;20632:2;20621:9;20617:18;20608:6;20564:72;;;20647;20715:2;20704:9;20700:18;20691:6;20647:72;;20988:435;21162:2;21147:18;;21176:71;21151:9;21220:6;21176:71;;;21258:72;21326:2;21315:9;21311:18;21302:6;21258:72;;;21341;21409:2;21398:9;21394:18;21385:6;21341:72;;21430:547;21632:3;21617:19;;21647:71;21621:9;21691:6;21647:71;;;21729:72;21797:2;21786:9;21782:18;21773:6;21729:72;;;21812;21880:2;21869:9;21865:18;21856:6;21812:72;;21984:659;22214:3;22199:19;;22229:71;22203:9;22273:6;22229:71;;;22311:72;22379:2;22368:9;22364:18;22355:6;22311:72;;;22394;22462:2;22451:9;22447:18;22438:6;22394:72;;;22477;22545:2;22534:9;22530:18;22521:6;22477:72;;;22560:73;22628:3;22617:9;22613:19;22604:6;22560:73;;22650:324;22796:2;22781:18;;22810:71;22785:9;22854:6;22810:71;;;22892:72;22960:2;22949:9;22945:18;22936:6;22892:72;;22981:435;23155:2;23140:18;;23169:71;23144:9;23213:6;23169:71;;;23251:72;23319:2;23308:9;23304:18;23295:6;23251:72;;23423:201;23535:2;23520:18;;23549:65;23524:9;23587:6;23549:65;;23631:535;23827:3;23812:19;;23842:65;23816:9;23880:6;23842:65;;;23918:72;23986:2;23975:9;23971:18;23962:6;23918:72;;24173:983;24481:3;24466:19;;24496:71;24470:9;24540:6;24496:71;;;24578:66;24640:2;24629:9;24625:18;24616:6;24578:66;;;24655:72;24723:2;24712:9;24708:18;24699:6;24655:72;;;24738;24806:2;24795:9;24791:18;24782:6;24738:72;;;24821:73;24889:3;24878:9;24874:19;24865:6;24821:73;;;24905;24973:3;24962:9;24958:19;24949:6;24905:73;;;24989;25057:3;25046:9;25042:19;25033:6;24989:73;;;25073;25141:3;25130:9;25126:19;25117:6;25073:73;;;24452:704;;;;;;;;;;;;25163:1435;25585:3;25570:19;;25600:71;25574:9;25644:6;25600:71;;;25682:72;25750:2;25739:9;25735:18;25726:6;25682:72;;;25765;25833:2;25822:9;25818:18;25809:6;25765:72;;;25848:66;25910:2;25899:9;25895:18;25886:6;25848:66;;;25925:73;25993:3;25982:9;25978:19;25969:6;25925:73;;;26009;26077:3;26066:9;26062:19;26053:6;26009:73;;;26093;26161:3;26150:9;26146:19;26137:6;26093:73;;;26177;26245:3;26234:9;26230:19;26221:6;26177:73;;;26261;26329:3;26318:9;26314:19;26305:6;26261:73;;;26345;26413:3;26402:9;26398:19;26389:6;26345:73;;;26429:74;26498:3;26487:9;26483:19;26473:7;26429:74;;;26514;26583:3;26572:9;26568:19;26558:7;26514:74;;;25556:1042;;;;;;;;;;;;;;;;26605:255;26744:2;26729:18;;26758:92;26733:9;26823:6;26758:92;;26867:301;27005:2;27019:47;;;26990:18;;27080:78;26990:18;27144:6;27080:78;;27175:407;27366:2;27380:47;;;27351:18;;27441:131;27351:18;27441:131;;27589:407;27780:2;27794:47;;;27765:18;;27855:131;27765:18;27855:131;;28003:407;28194:2;28208:47;;;28179:18;;28269:131;28179:18;28269:131;;28417:407;28608:2;28622:47;;;28593:18;;28683:131;28593:18;28683:131;;28831:407;29022:2;29036:47;;;29007:18;;29097:131;29007:18;29097:131;;29245:407;29436:2;29450:47;;;29421:18;;29511:131;29421:18;29511:131;;29659:407;29850:2;29864:47;;;29835:18;;29925:131;29835:18;29925:131;;30073:407;30264:2;30278:47;;;30249:18;;30339:131;30249:18;30339:131;;30487:407;30678:2;30692:47;;;30663:18;;30753:131;30663:18;30753:131;;30901:407;31092:2;31106:47;;;31077:18;;31167:131;31077:18;31167:131;;31315:407;31506:2;31520:47;;;31491:18;;31581:131;31491:18;31581:131;;31729:407;31920:2;31934:47;;;31905:18;;31995:131;31905:18;31995:131;;32143:407;32334:2;32348:47;;;32319:18;;32409:131;32319:18;32409:131;;32557:407;32748:2;32762:47;;;32733:18;;32823:131;32733:18;32823:131;;32971:407;33162:2;33176:47;;;33147:18;;33237:131;33147:18;33237:131;;33385:407;33576:2;33590:47;;;33561:18;;33651:131;33561:18;33651:131;;33799:407;33990:2;34004:47;;;33975:18;;34065:131;33975:18;34065:131;;34213:407;34404:2;34418:47;;;34389:18;;34479:131;34389:18;34479:131;;34627:407;34818:2;34832:47;;;34803:18;;34893:131;34803:18;34893:131;;35041:407;35232:2;35246:47;;;35217:18;;35307:131;35217:18;35307:131;;35455:407;35646:2;35660:47;;;35631:18;;35721:131;35631:18;35721:131;;35869:407;36060:2;36074:47;;;36045:18;;36135:131;36045:18;36135:131;;36283:407;36474:2;36488:47;;;36459:18;;36549:131;36459:18;36549:131;;36697:407;36888:2;36902:47;;;36873:18;;36963:131;36873:18;36963:131;;37111:407;37302:2;37316:47;;;37287:18;;37377:131;37287:18;37377:131;;37525:407;37716:2;37730:47;;;37701:18;;37791:131;37701:18;37791:131;;37939:407;38130:2;38144:47;;;38115:18;;38205:131;38115:18;38205:131;;38353:407;38544:2;38558:47;;;38529:18;;38619:131;38529:18;38619:131;;38767:407;38958:2;38972:47;;;38943:18;;39033:131;38943:18;39033:131;;39181:407;39372:2;39386:47;;;39357:18;;39447:131;39357:18;39447:131;;39595:407;39786:2;39800:47;;;39771:18;;39861:131;39771:18;39861:131;;40009:407;40200:2;40214:47;;;40185:18;;40275:131;40185:18;40275:131;;40423:213;40541:2;40526:18;;40555:71;40530:9;40599:6;40555:71;;40643:435;40817:2;40802:18;;40831:71;40806:9;40875:6;40831:71;;;40913:72;40981:2;40970:9;40966:18;40957:6;40913:72;;;40996;41064:2;41053:9;41049:18;41040:6;40996:72;;41085:435;41259:2;41244:18;;41273:71;41248:9;41317:6;41273:71;;41527:659;41757:3;41742:19;;41772:71;41746:9;41816:6;41772:71;;;41854:72;41922:2;41911:9;41907:18;41898:6;41854:72;;42193:771;42451:3;42436:19;;42466:71;42440:9;42510:6;42466:71;;;42548:72;42616:2;42605:9;42601:18;42592:6;42548:72;;;42631;42699:2;42688:9;42684:18;42675:6;42631:72;;;42714;42782:2;42771:9;42767:18;42758:6;42714:72;;;42797:73;42865:3;42854:9;42850:19;42841:6;42797:73;;;42881;42949:3;42938:9;42934:19;42925:6;42881:73;;;42422:542;;;;;;;;;;42971:121;43058:12;;43029:63;43229:144;43364:3;43342:31;-1:-1;43342:31;43382:163;43485:19;;;43534:4;43525:14;;43478:67;43553:91;;43615:24;43633:5;43615:24;;43651:85;43717:13;43710:21;;43693:43;43743:72;43805:5;43788:27;43822:144;-1:-1;;;;;;43883:78;;43866:100;43973:121;-1:-1;;;;;44035:54;;44018:76;44180:163;;44280:58;44332:5;44280:58;;44487:268;44552:1;44559:101;44573:6;44570:1;44567:13;44559:101;;;44640:11;;;44634:18;44621:11;;;44614:39;44595:2;44588:10;44559:101;;;44675:6;44672:1;44669:13;44666:2;;;-1:-1;;44740:1;44722:16;;44715:27;44536:219;44763:97;44851:2;44831:14;-1:-1;;44827:28;;44811:49;44868:117;44937:24;44955:5;44937:24;;;44930:5;44927:35;44917:2;;44976:1;44973;44966:12;44992:111;45058:21;45073:5;45058:21;;45110:117;45179:24;45197:5;45179:24;;45234:115;45302:23;45319:5;45302:23;"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "initialize(address)": "c4d66de8",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidate(bytes32,address,uint256)": "e4f3e739",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "paySwapExcessToBorrowerThreshold()": "ee54a4ec",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rollover(bytes32,bytes)": "cf0eda84",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "liquidate(bytes32,address,uint256)": {
                "notice": "Liquidate an unhealty loan."
              },
              "rollover(bytes32,bytes)": {
                "notice": "Roll over a loan."
              }
            },
            "notice": "Ways to close a loan: liquidation, rollover. Margin trade  positions are always closed with a swap. * Loans are liquidated if the position goes below margin maintenance."
          }
        }
      },
      "contracts/modules/LoanClosingsWith.sol": {
        "LoanClosingsWith": {
          "abi": [
            {
              "inputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "closer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "repayAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralWithdrawAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                }
              ],
              "name": "CloseWithDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "closer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "positionCloseSize",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanCloseAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "exitPrice",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentLeverage",
                  "type": "uint256"
                }
              ],
              "name": "CloseWithSwap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnRewardFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "ExternalSwap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "liquidator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "repayAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralWithdrawAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                }
              ],
              "name": "Liquidate",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "LoanSwap",
              "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": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayBorrowingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "interestToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "effectiveInterest",
                  "type": "uint256"
                }
              ],
              "name": "PayInterestTransfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayLendingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultWithdraw",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "shouldRefund",
                  "type": "bool"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountInRbtc",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "threshold",
                  "type": "uint256"
                }
              ],
              "name": "swapExcess",
              "type": "event"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "name": "closeWithDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "loanCloseAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "withdrawToken",
                  "type": "address"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "swapAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "returnTokenIsCollateral",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "closeWithSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "loanCloseAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "withdrawToken",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "paySwapExcessToBorrowerThreshold",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "closeWithDeposit(bytes32,address,uint256)": {
                "details": "Public wrapper for _closeWithDeposit internal function.",
                "params": {
                  "depositAmount": "Defines how much of the position should be closed.  It is denominated in loan tokens. (e.g. rBTC on a iSUSD contract).    If depositAmount > principal, the complete loan will be closed    else deposit amount (partial closure).",
                  "loanId": "The id of the loan.",
                  "receiver": "The receiver of the remainder."
                },
                "return": "loanCloseAmount The amount of the collateral token of the loan.withdrawAmount The withdraw amount in the collateral token.withdrawToken The loan token address."
              },
              "closeWithSwap(bytes32,address,uint256,bool,bytes)": {
                "details": "Public wrapper for _closeWithSwap internal function.",
                "params": {
                  "loanId": "The id of the loan.",
                  "receiver": "The receiver of the remainder (unused collateral + profit).",
                  "returnTokenIsCollateral": "Defines if the remainder should be paid out  in collateral tokens or underlying loan tokens.",
                  "swapAmount": "Defines how much of the position should be closed and  is denominated in collateral tokens.     If swapAmount >= collateral, the complete position will be closed.     Else if returnTokenIsCollateral, (swapAmount/collateral) * principal will be swapped (partial closure).     Else coveredPrincipal"
                },
                "return": "loanCloseAmount The amount of the collateral token of the loan.withdrawAmount The withdraw amount in the collateral token.withdrawToken The loan token address."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "LoanClosingsWith contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d00000603955348015620000a657600080fd5b506000620000bc6001600160e01b036200011016565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000114565b3390565b6150fd80620001246000396000f3fe60806040526004361061036b5760003560e01c80638f32d59b116101c6578063cd5d808d116100f7578063f0e085f511610095578063f6ddc8b31161006f578063f6ddc8b31461099a578063f706b1f2146109af578063f851a440146109c4578063f8de21d2146109d95761036b565b8063f0e085f514610950578063f2fde38b14610965578063f589a3e7146109855761036b565b8063d485045e116100d1578063d485045e146108f1578063e8f6276414610911578063edab119f14610926578063ee54a4ec1461093b5761036b565b8063cd5d808d146108a7578063d288208c146108c7578063d473c2da146108dc5761036b565b8063b7e1524111610164578063bdee453c1161013e578063bdee453c146107f9578063c4a9081514610819578063c4d66de814610851578063cb6eacd1146108735761036b565b8063b7e15241146107af578063b9cffa3e146107cf578063ba4861e9146107e45761036b565b8063acc04348116101a0578063acc0434814610743578063ae0a853014610758578063afe840091461076d578063b30643d91461078f5761036b565b80638f32d59b146106f957806392d894f81461070e578063959083d31461072e5761036b565b80634699f846116102a05780637420ca3e1161023e5780637a8faeb8116102185780637a8faeb81461069a5780638456cb59146106af5780638da5cb5b146106c45780638dc48ba5146106d95761036b565b80637420ca3e1461065b578063742e67981461067057806378d849ed146106855761036b565b8063574442cc1161027a578063574442cc146105d557806362fff3f6146105ea57806368c4ac261461061b5780636e6637301461063b5761036b565b80634699f8461461057c5780634f28cac214610591578063569fc1fb146105a65761036b565b80632f4707641161030d578063366f513b116102e7578063366f513b146104fa5780633fca506e1461051c5780634115a2b61461053c5780634203e3951461055c5761036b565b80632f470764146104a55780633432423c146104ba5780633452d2d4146104da5761036b565b80631b7bde74116103495780631b7bde7414610416578063218b39c61461044357806324cc5749146104635780632a324027146104905761036b565b8063065d810f146103995780630676c1b7146103d457806317548b79146103f6575b34801561037757600080fd5b5060405162461bcd60e51b815260040161039090614e11565b60405180910390fd5b3480156103a557600080fd5b506103b96103b4366004614022565b6109f9565b6040516103cb96959493929190614f50565b60405180910390f35b3480156103e057600080fd5b506103e9610a39565b6040516103cb9190614971565b34801561040257600080fd5b506103e9610411366004614187565b610a48565b34801561042257600080fd5b50610436610431366004613fe8565b610a63565b6040516103cb9190614ef1565b34801561044f57600080fd5b506103e961045e366004613fca565b610a80565b34801561046f57600080fd5b5061048361047e366004613fca565b610a9b565b6040516103cb9190614b6f565b34801561049c57600080fd5b50610436610ab0565b3480156104b157600080fd5b50610436610ab6565b3480156104c657600080fd5b506103b96104d5366004614022565b610abc565b3480156104e657600080fd5b506104366104f5366004613fca565b610afc565b61050d6105083660046140ad565b610b0e565b6040516103cb93929190614eff565b34801561052857600080fd5b50610436610537366004613fca565b610b7c565b34801561054857600080fd5b5061048361055736600461408e565b610b8e565b34801561056857600080fd5b50610436610577366004613fca565b610bae565b34801561058857600080fd5b50610436610bc0565b34801561059d57600080fd5b50610436610bc6565b3480156105b257600080fd5b506105c66105c1366004614070565b610bcc565b6040516103cb93929190614f27565b3480156105e157600080fd5b50610436610bed565b3480156105f657600080fd5b5061060a610605366004613fe8565b610bf3565b6040516103cb959493929190614f35565b34801561062757600080fd5b50610483610636366004613fca565b610c2d565b34801561064757600080fd5b506103e9610656366004613fca565b610c42565b34801561066757600080fd5b506103e9610c5d565b34801561067c57600080fd5b50610436610c6c565b34801561069157600080fd5b506103e9610c72565b3480156106a657600080fd5b50610436610c81565b3480156106bb57600080fd5b50610483610c87565b3480156106d057600080fd5b506103e9610c90565b3480156106e557600080fd5b506103e96106f4366004613fca565b610c9f565b34801561070557600080fd5b50610483610cba565b34801561071a57600080fd5b50610436610729366004613fca565b610ce0565b34801561073a57600080fd5b50610436610cf2565b34801561074f57600080fd5b50610436610cf8565b34801561076457600080fd5b50610436610cfe565b34801561077957600080fd5b50610782610d04565b6040516103cb9190614cc2565b34801561079b57600080fd5b506104366107aa366004613fca565b610d13565b3480156107bb57600080fd5b506104366107ca366004613fca565b610d25565b3480156107db57600080fd5b506103e9610d37565b3480156107f057600080fd5b506103e9610d46565b34801561080557600080fd5b50610436610814366004613fca565b610d55565b34801561082557600080fd5b50610839610834366004614070565b610d67565b6040516103cb9c9b9a99989796959493929190614c0f565b34801561085d57600080fd5b5061087161086c366004613fca565b610dd9565b005b34801561087f57600080fd5b5061089361088e366004614070565b610eae565b6040516103cb989796959493929190614b98565b3480156108b357600080fd5b506104366108c2366004613fe8565b610f00565b3480156108d357600080fd5b506103e9610f1d565b3480156108e857600080fd5b50610436610f2c565b3480156108fd57600080fd5b5061043661090c366004613fca565b610f32565b34801561091d57600080fd5b506103e9610f44565b34801561093257600080fd5b50610436610f53565b34801561094757600080fd5b50610436610f59565b34801561095c57600080fd5b50610436610f63565b34801561097157600080fd5b50610871610980366004613fca565b610f69565b34801561099157600080fd5b50610436610f99565b3480156109a657600080fd5b50610436610f9f565b3480156109bb57600080fd5b506103e9610fa5565b3480156109d057600080fd5b506103e9610fb4565b3480156109e557600080fd5b5061050d6109f43660046140fa565b610fc3565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b6000806000600160005414610b355760405162461bcd60e51b815260040161039090614e71565b6002600055603d5460ff1615610b5d5760405162461bcd60e51b815260040161039090614ce1565b610b68868686611044565b600160005591989097509095509350505050565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610cd1611503565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b610de1610cba565b610dfd5760405162461bcd60e51b815260040161039090614dc1565b63366f513b60e01b600081905260056020527ff4ddf72383625730676ae80f4e72796030e502d9e3dce442215377f640213bd6546001600160a01b031690610e459083611507565b610e56637c6f10e960e11b83611507565b6f098dec2dc86d8dee6d2dccee6aed2e8d60831b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b6509184e72a00081565b60285481565b610f71610cba565b610f8d5760405162461bcd60e51b815260040161039090614dc1565b610f9681611583565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6000806000600160005414610fea5760405162461bcd60e51b815260040161039090614e71565b6002600055603d5460ff16156110125760405162461bcd60e51b815260040161039090614ce1565b61102e8888888860405180602001604052806000815250611605565b6001600055919a90995090975095505050505050565b60008080836110655760405162461bcd60e51b815260040161039090614e01565b600060066000888152602001908152602001600020905060006007600083600101548152602001908152602001600020905061125c82604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508260405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016004820154815260200160058201548152602001600682015481525050611f3f565b8160040154861161126d5785611273565b81600401545b9450600061143e83604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508360405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016004820154815260200160058201548152602001600682015481525050888b611fda565b90508015611467576002820154600b840154611467916001600160a01b03908116911683612048565b826004015486141561147f57826005015494506114ad565b6114aa836004015461149e88866005015461216e90919063ffffffff16565b9063ffffffff6121b116565b94505b60038201546001600160a01b0316935084156114e85760058301546114d8908663ffffffff6121f316565b60058401556114e8848987612235565b6114f783838888600080612266565b50505093509350939050565b3390565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b038316908117909155156115625761155c600d6001600160e01b0319841663ffffffff61257716565b5061157f565b61157d600d6001600160e01b0319841663ffffffff6125bf16565b505b5050565b6001600160a01b0381166115a95760405162461bcd60e51b815260040161039090614d01565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008080856116265760405162461bcd60e51b815260040161039090614e51565b6000600660008a8152602001908152602001600020905060006007600083600101548152602001908152602001600020905061181d82604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508260405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016004820154815260200160058201548152602001600682015481525050611f3f565b8160050154881161182e5787611834565b81600501545b9750600082600501548914806118475750875b15611a6e578260050154891461187b57611876836005015461149e8b866004015461216e90919063ffffffff16565b611881565b82600401545b9550856118a05760405162461bcd60e51b815260040161039090614e31565b611a6783604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508360405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016004820154815260200160058201548152602001600682015481525050888d611fda565b9050611a72565b5060005b600080611c3e85604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508560405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160048201548152602001600582015481526020016006820154815250508d868e8e612680565b9d509850909250905082611e835781975084600401548214611c76576005850154611c739061149e8a8463ffffffff61216e16565b97505b87611c935760405162461bcd60e51b815260040161039090614e31565b611e5a85604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508560405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160048201548152602001600582015481526020016006820154815250508a8f611fda565b9250611e7c83611e70898563ffffffff61279c16565b9063ffffffff6121f316565b9650611e87565b8192505b82611ea45760405162461bcd60e51b815260040161039090614e81565b8015611ec5576005850154611ebf908263ffffffff6121f316565b60058601555b6002840154600b860154611ee6916001600160a01b039081169116856127c1565b89611efe5760028401546001600160a01b0316611f0d565b60038401546001600160a01b03165b95508615611f2057611f20868d89612235565b611f2f85858a848f6001612266565b5050505050955095509592505050565b8160600151611f605760405162461bcd60e51b815260040161039090614e61565b8161014001516001600160a01b0316336001600160a01b03161480611fa0575081516000908152600a6020908152604080832033845290915290205460ff165b611fbc5760405162461bcd60e51b815260040161039090614dc1565b805161157f5760405162461bcd60e51b815260040161039090614df1565b60008281611fe9868884612831565b9050600081831061200257509081900390600090612020565b50600091908190039081156120205761202087606001518684612235565b801561203a5761203a8760600151896101600151836127c1565b50909150505b949350505050565b801561215057346120645761205f833384846129d0565b61214b565b602d546001600160a01b038481169116146120915760405162461bcd60e51b815260040161039090614d21565b803410156120b15760405162461bcd60e51b815260040161039090614ee1565b602d60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561210157600080fd5b505af1158015612115573d6000803e3d6000fd5b505050506001600160a01b0383163014905061213757612137833084846129d0565b8034111561214b5761214b33823403612a27565b61157d565b341561157d5760405162461bcd60e51b815260040161039090614d21565b60008261217d575060006121ab565b8282028284828161218a57fe5b04146121a85760405162461bcd60e51b815260040161039090614db1565b90505b92915050565b60006121a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ac3565b60006121a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612afa565b801561157d57602d546001600160a01b038481169116141561225b5761214b8282612b26565b61157d8383836127c1565b6122708685612bfd565b60028054908601546003870154600489015460058a01546040516001600160a01b0395861695600095869586956060958a956317f8680960e11b956122be9581169416929190602401614ac5565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516122fc919061495a565b600060405180830381855afa9150503d8060008114612337576040519150601f19603f3d011682016040523d82523d6000602084013e61233c565b606091505b509150915060018214156123595760208101519350604081015192505b600086600281111561236757fe5b1480612375575060048b0154155b806123835750896005015484115b61239f5760405162461bcd60e51b815260040161039090614dd1565b61256a8a60405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160048201548152602001600582015481526020016006820154815250508c604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508b8b878c8a8d612cd4565b5050505050505050505050565b60006125838383612e2d565b6125b757506001808301805480830180835560009283526020808420909201859055848352908590526040909120556121ab565b5060006121ab565b60006125cb8383612e2d565b156125b7576000828152602084905260409020546001840154600019918201910180821461264357600085600101828154811061260457fe5b906000526020600020015490508086600101848154811061262157fe5b6000918252602080832090910192909255918252869052604090206001830190555b6000848152602086905260408120556001850180548061265f57fe5b600190038181906000526020600020016000905590556001925050506121ab565b6000806000806000806126978c8c8c8c8c8c612e42565b9450909250905087156126fc57889550858211156126e3576126bf8b60600151878403612ed2565b156126df576126da8b606001518d6101400151888503612235565b6126e3565b8195505b808a116126f15760006126f5565b808a035b935061277c565b89811461271b5760405162461bcd60e51b815260040161039090614de1565b8b60a001518a141561273457889550888203935061277c565b8b608001518210612774578b6080015195508b60800151820393506127698b608001518d6101400151838f60a0015103612235565b5060a08b015161277c565b819550600093505b898111612789578961278b565b805b945050509650965096509692505050565b6000828201838110156121a85760405162461bcd60e51b815260040161039090614d11565b801561157d576127e16001600160a01b038416838363ffffffff612fd816565b816001600160a01b0316836001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a1836040516128249190614ef1565b60405180910390a3505050565b60006128468361016001518560600151613031565b82516000908152600c602090815260408083206101608701516001600160a01b039081168552600b845282852060608a0151909116855290925290912060e08501514290811115612898575060e08501515b6128b783876000015189606001518a608001518a610140015186613115565b600086608001518610156128e857608087015184546128e1919061149e908963ffffffff61216e16565b90506128ec565b5082545b83546128fe908263ffffffff6121f316565b84556001830154612915908263ffffffff6121f316565b600184015560e0870151600090612932908463ffffffff6121f316565b9050612944818363ffffffff61216e16565b9050612959816201518063ffffffff6121b116565b9050876080015187101561298657600185015461297c908263ffffffff6121f316565b600186015561298e565b600060018601555b83546129a0908863ffffffff6121f316565b845560028401548181116129b55760006129b9565b8181035b6002909501949094559450505050505b9392505050565b8015612a21576001600160a01b038316301415612a0657612a016001600160a01b038516838363ffffffff612fd816565b612a21565b612a216001600160a01b03851684848463ffffffff61317016565b50505050565b80471015612a475760405162461bcd60e51b815260040161039090614d71565b6000826001600160a01b031682604051612a6090614966565b60006040518083038185875af1925050503d8060008114612a9d576040519150601f19603f3d011682016040523d82523d6000602084013e612aa2565b606091505b505090508061157d5760405162461bcd60e51b815260040161039090614d61565b60008183612ae45760405162461bcd60e51b81526004016103909190614cd0565b506000838581612af057fe5b0495945050505050565b60008184841115612b1e5760405162461bcd60e51b81526004016103909190614cd0565b505050900390565b801561157f57602d546001600160a01b03164780831115612ba257604051632e1a7d4d60e01b81526001600160a01b03831690632e1a7d4d90612b6f9084870390600401614ef1565b600060405180830381600087803b158015612b8957600080fd5b505af1158015612b9d573d6000803e3d6000fd5b505050505b612bac8484612a27565b836001600160a01b0316826001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a185604051612bef9190614ef1565b60405180910390a350505050565b80612c1a5760405162461bcd60e51b815260040161039090614e21565b8160040154811415612cb65760006004830181905560038301805460ff1916905542600784015560028301558154612c5a90600f9063ffffffff6125bf16565b508154600b8301546001600160a01b03166000908152601160205260409020612c889163ffffffff6125bf16565b508154600a8301546001600160a01b0316600090815260126020526040902061155c9163ffffffff6125bf16565b6004820154612ccb908263ffffffff6121f316565b60048301555050565b6000816002811115612ce257fe5b1415612d5b5786600001518761016001516001600160a01b03168861014001516001600160a01b03167f6349c1a02ec126f7f4fc6e6837e1859006e90e9901635c442d29271e77b96fb6338c606001518d608001518c8c8c8b604051612d4e979695949392919061497f565b60405180910390a4612e23565b6001816002811115612d6957fe5b1415612e23578215612d9157612d8e6ec097ce7bc90715b34b9f1000000000846121b1565b92505b8115612db457612db16f4b3b4ca85a86c47a098a224000000000836121b1565b91505b86600001518761016001516001600160a01b03168861014001516001600160a01b03167f2ed7b29b4ca95cf3bb9a44f703872a66e6aa5e8f07b675fa9a5c124a1e5d73528b608001518c60600151338b8d8b8b604051612e1a9796959493929190614a02565b60405180910390a45b5050505050505050565b60009081526020919091526040902054151590565b6000806000612e7b896000015189608001518a606001518c61014001518b8e60a001518b612e71576000612e73565b8c5b60008c613194565b9194509250905085831015612ea25760405162461bcd60e51b815260040161039090614da1565b8860a00151821115612ec65760405162461bcd60e51b815260040161039090614d51565b96509650969350505050565b600254602d54604051630a7549df60e21b8152600092839283926001600160a01b03928316926329d5277c92612f10928a92909116906004016149e7565b604080518083038186803b158015612f2757600080fd5b505afa158015612f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f5f91908101906141c3565b90925090506000612f7a8261149e878663ffffffff61216e16565b90507fe46714304b3de2a7b58afcc0bafe0a6deabd30a647332cb479124142fdb14b0b6509184e72a000821186836509184e72a000604051612fbf9493929190614b7d565b60405180910390a16509184e72a0001095945050505050565b60405161157d90849063a9059cbb60e01b90612ffa9086908690602401614b39565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526132f2565b6001600160a01b038083166000908152600b6020908152604080832093851683529290529081206001810154909190158015906130715750600482015415155b15613109576130a86201518061149e846001015461309c8660040154426121f390919063ffffffff16565b9063ffffffff61216e16565b42600484015560028301549091508111156130c4575060028101545b8015612a015760038201546130df908263ffffffff61279c16565b600383015560028201546130f9908263ffffffff6121f316565b6002830155612a018484836133d7565b42600483015550505050565b600061314b6a07259756a8d6199800000061149e60155461309c8b6000015461309c8d60020154896121f390919063ffffffff16565b600288018390559050801561316757613167838787878561346e565b50505050505050565b604051612a219085906323b872dd60e01b90612ffa90879087908790602401614a9d565b6040805160a0810182526001600160a01b03808b16825289811660208084019190915230838501819052606080850191909152918a166080840152835191820184528882528101879052918201859052600091829182916131f991908e8888866137b8565b90935091506132088b836139dd565b600254602754604051631e2c62d360e01b81526001600160a01b0390921691631e2c62d391613241918f918f9188918a91600401614aed565b60206040518083038186803b15801561325957600080fd5b505afa15801561326d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061329191908101906141a5565b9050896001600160a01b03168b6001600160a01b03168d7fb4eb3c9b62efcce7021cba5fd9cd0c44df91c2272806ccc5e57df7c912e8d7168c86886040516132db93929190614b54565b60405180910390a499509950999650505050505050565b613304826001600160a01b0316613aab565b6133205760405162461bcd60e51b815260040161039090614ed1565b60006060836001600160a01b03168360405161333c919061495a565b6000604051808303816000865af19150503d8060008114613379576040519150601f19603f3d011682016040523d82523d6000602084013e61337e565b606091505b5091509150816133a05760405162461bcd60e51b815260040161039090614d31565b805115612a2157808060200190516133bb9190810190614052565b612a215760405162461bcd60e51b815260040161039090614ea1565b60006133fb68056bc75e2d6310000061149e6015548561216e90919063ffffffff16565b9050613408848483613ae4565b613422838561341d858563ffffffff6121f316565b6127c1565b6001600160a01b038085169084167f220e66e3e759e1382aa86cd8af5abca05ebf3ad564f223ae62d977678337272a613461858563ffffffff6121f316565b604051612bef9190614ef1565b602f546002546001600160a01b038581166000908152603c6020908152604080832088851684529091528120549093929190911690156134d1576001600160a01b038087166000908152603c602090815260408083209389168352929052205491505b6037546000906060906001600160a01b038085169163d138f9a160e01b918b911661350f68056bc75e2d6310000061149e8c8b63ffffffff61216e16565b60405160240161352193929190614a9d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161355f919061495a565b600060405180830381855afa9150503d806000811461359a576040519150601f19603f3d011682016040523d82523d6000602084013e61359f565b606091505b509150915060018214156135b557602081015194505b84156137ac5760375460385460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926135f1929116908990600401614b39565b602060405180830381600087803b15801561360b57600080fd5b505af115801561361f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136439190810190614052565b50603854603f546040516000926001600160a01b03169161366a918e918a91602401614b54565b60408051601f198184030181529181526020820180516001600160e01b0316630efe6a8b60e01b1790525161369f919061495a565b6000604051808303816000865af19150503d80600081146136dc576040519150601f19603f3d011682016040523d82523d6000602084013e6136e1565b606091505b50509050801561375857601f546136fe908763ffffffff61279c16565b601f55603754603f546040518c926001600160a01b0390811692908f16917ff41c644671512f1cda76abfe6038e3d7d526c1377a5a8c692f81703901db21509161374b918b918d91614f27565b60405180910390a461256a565b603754603f546040518c926001600160a01b0390811692908f16917f483f67ea49f76ac15e15bbad68b52788ca47d50aef1e4acfe95e5e307e710812916137a2918b918d91614f27565b60405180910390a4505b50505050505050505050565b845160009081901515806137cf5750602087015115155b6137eb5760405162461bcd60e51b815260040161039090614e41565b60208701516137fc57865160208801525b6020870151875111156138215760405162461bcd60e51b815260040161039090614d81565b6000806000876138de5760408a015161389d5785156138525761384b8a60005b6020020151613b65565b9050613866565b6138638a60005b6020020151613b95565b90505b80156138985760808b01518b5161388991908b908e60015b602002015185613bb9565b895161389590826121f3565b8a525b6138de565b85156138b5576138ae8a6002613841565b90506138c3565b6138c08a6002613859565b90505b80156138de5760408a01516138d8908261279c565b60408b01525b8651156138fd5760405162461bcd60e51b815260040161039090614e91565b6139078b8b613cfd565b60408c0151919450925061395357895182146139355760405162461bcd60e51b815260040161039090614ec1565b801561394e5761394b828263ffffffff61279c16565b91505b6139cd565b60208a01518211156139775760405162461bcd60e51b815260040161039090614d41565b60408a015183101561399b5760405162461bcd60e51b815260040161039090614cf1565b80156139cd5760808b015160208c01516139ba91908b908e600061387e565b6139ca838263ffffffff6121f316565b92505b5090999098509650505050505050565b602954801561157d57602d546000906001600160a01b0385811691161415613a06575081613a8b565b600254604051635967aa7560e11b81526001600160a01b039091169063b2cf54ea90613a389087908790600401614b39565b60206040518083038186803b158015613a5057600080fd5b505afa158015613a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613a8891908101906141a5565b90505b81811115612a215760405162461bcd60e51b815260040161039090614d91565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590612040575050151592915050565b801561157d576001600160a01b038216600090815260166020526040902054613b13908263ffffffff61279c16565b6001600160a01b0380841660008181526016602052604090819020939093559151908516907f40a75ae5f7a5336e75f7c7977e12c4b46a9ac0f30de01a2d5b6c1a4f4af6358790612824908590614ef1565b60006121ab68056bc75e2d63100000613b89603e548561216e90919063ffffffff16565b9063ffffffff613e0f16565b60006121ab68056bc75e2d63100000613b896018548561216e90919063ffffffff16565b808015613cf5576001600160a01b038681166000908152603360205260409020541615613c63576001600160a01b03808716600090815260336020526040902054613c079116878684613e51565b5050613c60613c2e68056bc75e2d6310000061149e6039548561216e90919063ffffffff16565b611e70613c5368056bc75e2d6310000061149e6020548761216e90919063ffffffff16565b849063ffffffff6121f316565b90505b6001600160a01b038416600090815260196020526040902054613c8c908263ffffffff61279c16565b6001600160a01b03808616600081815260196020526040908190209390935591518792918916907fb23479169712c443e6b00fb0cec3506a5f5926f541df4243d313e11c8c5c71ed90613ce0908690614ef1565b60405180910390a4613cf5868686868661346e565b505050505050565b815160208084015160408086015160608781015187519588015188850151945160009889989497630957ba1160e21b97613d44979296919592949293919291602401614a2a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260035491519092506000916001600160a01b031690613d9690849061495a565b600060405180830381855af49150503d8060008114613dd1576040519150601f19603f3d011682016040523d82523d6000602084013e613dd6565b606091505b509250905080613df85760405162461bcd60e51b815260040161039090614eb1565b602082015193506040820151925050509250929050565b60006121a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613eea565b6031546040516306a688ff60e11b815260009182916001600160a01b0390911690630d4d11fe90613e8c908990899089908990600401614a5f565b6040805180830381600087803b158015613ea557600080fd5b505af1158015613eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613edd91908101906141c3565b9097909650945050505050565b60008183613f0b5760405162461bcd60e51b81526004016103909190614cd0565b5083613f19575060006129c9565b6000836001860381613f2757fe5b0460010195945050505050565b80356121ab8161508b565b80356121ab8161509f565b80516121ab8161509f565b80356121ab816150a8565b80356121ab816150b1565b600082601f830112613f7c57600080fd5b8135613f8f613f8a82614fd1565b614faa565b91508082526020830160208301858383011115613fab57600080fd5b613fb6838284615049565b50505092915050565b80516121ab816150a8565b600060208284031215613fdc57600080fd5b60006120408484613f34565b60008060408385031215613ffb57600080fd5b60006140078585613f34565b925050602061401885828601613f34565b9150509250929050565b6000806040838503121561403557600080fd5b60006140418585613f34565b925050602061401885828601613f55565b60006020828403121561406457600080fd5b60006120408484613f4a565b60006020828403121561408257600080fd5b60006120408484613f55565b600080604083850312156140a157600080fd5b60006140078585613f55565b6000806000606084860312156140c257600080fd5b60006140ce8686613f55565b93505060206140df86828701613f34565b92505060406140f086828701613f55565b9150509250925092565b600080600080600060a0868803121561411257600080fd5b600061411e8888613f55565b955050602061412f88828901613f34565b945050604061414088828901613f55565b935050606061415188828901613f3f565b925050608086013567ffffffffffffffff81111561416e57600080fd5b61417a88828901613f6b565b9150509295509295909350565b60006020828403121561419957600080fd5b60006120408484613f60565b6000602082840312156141b757600080fd5b60006120408484613fbf565b600080604083850312156141d657600080fd5b60006141e28585613fbf565b925050602061401885828601613fbf565b6141fc81615037565b82525050565b6141fc8161500b565b6141fc81615016565b6141fc8161501b565b600061422882614ff9565b6142328185614ffd565b9350614242818560208601615055565b9290920192915050565b6141fc8161503e565b600061426082614ff9565b61426a8185615002565b935061427a818560208601615055565b61428381615081565b9093019392505050565b600061429a600683615002565b6514185d5cd95960d21b815260200192915050565b60006142bc601b83615002565b7f696e73756666696369656e742073776170206c69717569646974790000000000815260200192915050565b60006142f5602683615002565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b600061433d601b83615002565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614376601083615002565b6f1ddc9bdb99c8185cdcd95d081cd95b9d60821b815260200192915050565b60006143a2602083615002565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b60006143db601383615002565b72737761702066696c6c20746f6f206c6172676560681b815260200192915050565b600061440a601783615002565b7f65786365737369766520736f7572636520616d6f756e74000000000000000000815260200192915050565b6000614443603a83615002565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b60006144a2601d83615002565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b60006144db601c83615002565b7f736f75726365416d6f756e74206c6172676572207468616e206d617800000000815260200192915050565b6000614514600e83615002565b6d7377617020746f6f206c6172676560901b815260200192915050565b600061453e601883615002565b7f696e73756666696369656e74206465737420616d6f756e740000000000000000815260200192915050565b6000614577602183615002565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006145ba600c83615002565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006145e2601283615002565b713ab73432b0b63a343c903837b9b4ba34b7b760711b815260200192915050565b6000614610600a83615002565b6939bbb0b81032b93937b960b11b815260200192915050565b6000614636601583615002565b746c6f616e506172616d73206e6f742065786973747360581b815260200192915050565b6000614667601283615002565b7106465706f736974416d6f756e74203d3d20360741b815260200192915050565b6000614695601483615002565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b60006146c5601083615002565b6f6e6f7468696e6720746f20636c6f736560801b815260200192915050565b60006146f1601483615002565b7306c6f616e436c6f7365416d6f756e74203d3d20360641b815260200192915050565b6000614721602e83615002565b7f6d696e206f72206d617820736f7572636520746f6b656e20616d6f756e74206e81526d1959591cc81d1bc81899481cd95d60921b602082015260400192915050565b60006121ab600083614ffd565b600061477e600f83615002565b6e073776170416d6f756e74203d3d203608c1b815260200192915050565b60006147a9600e83615002565b6d1b1bd85b881a5cc818db1bdcd95960921b815260200192915050565b60006147d3600c83615002565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b60006147fb601b83615002565b7f636c6f7365416d6f756e74206973203020616674657220737761700000000000815260200192915050565b6000614834600d83615002565b6c696e76616c696420737461746560981b815260200192915050565b600061485d602a83615002565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006148a9600b83615002565b6a1cddd85c0819985a5b195960aa1b815260200192915050565b60006148d0601683615002565b751cddd85c081d1bdbc81b185c99d9481d1bc8199a5b1b60521b815260200192915050565b6000614902601f83615002565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b600061493b601083615002565b6f3737ba1032b737bab3b41032ba3432b960811b815260200192915050565b60006129c9828461421d565b60006121ab82614764565b602081016121ab8284614202565b60e0810161498d828a6141f3565b61499a6020830189614202565b6149a76040830188614202565b6149b46060830187614214565b6149c16080830186614214565b6149ce60a0830185614214565b6149db60c0830184614214565b98975050505050505050565b604081016149f58285614202565b6129c96020830184614202565b60e08101614a10828a614202565b614a1d6020830189614202565b6149a760408301886141f3565b60e08101614a38828a614202565b614a456020830189614202565b614a526040830188614202565b6149b46060830187614202565b60808101614a6d8287614202565b614a7a6020830186614202565b614a876040830185614202565b614a946060830184614214565b95945050505050565b60608101614aab8286614202565b614ab86020830185614202565b6120406040830184614214565b60808101614ad38287614202565b614ae06020830186614202565b614a876040830185614214565b60a08101614afb8288614202565b614b086020830187614202565b614b156040830186614214565b614b226060830185614214565b614b2f6080830184614214565b9695505050505050565b60408101614b478285614202565b6129c96020830184614214565b60608101614b628286614202565b614ab86020830185614214565b602081016121ab828461420b565b60808101614b8b828761420b565b614ae06020830186614214565b6101008101614ba7828b614214565b614bb4602083018a61420b565b614bc16040830189614202565b614bce6060830188614202565b614bdb6080830187614202565b614be860a0830186614214565b614bf560c0830185614214565b614c0260e0830184614214565b9998505050505050505050565b6101808101614c1e828f614214565b614c2b602083018e614214565b614c38604083018d614214565b614c45606083018c61420b565b614c52608083018b614214565b614c5f60a083018a614214565b614c6c60c0830189614214565b614c7960e0830188614214565b614c87610100830187614214565b614c95610120830186614214565b614ca3610140830185614202565b614cb1610160830184614202565b9d9c50505050505050505050505050565b602081016121ab828461424c565b602080825281016121a88184614255565b602080825281016121ab8161428d565b602080825281016121ab816142af565b602080825281016121ab816142e8565b602080825281016121ab81614330565b602080825281016121ab81614369565b602080825281016121ab81614395565b602080825281016121ab816143ce565b602080825281016121ab816143fd565b602080825281016121ab81614436565b602080825281016121ab81614495565b602080825281016121ab816144ce565b602080825281016121ab81614507565b602080825281016121ab81614531565b602080825281016121ab8161456a565b602080825281016121ab816145ad565b602080825281016121ab816145d5565b602080825281016121ab81614603565b602080825281016121ab81614629565b602080825281016121ab8161465a565b602080825281016121ab81614688565b602080825281016121ab816146b8565b602080825281016121ab816146e4565b602080825281016121ab81614714565b602080825281016121ab81614771565b602080825281016121ab8161479c565b602080825281016121ab816147c6565b602080825281016121ab816147ee565b602080825281016121ab81614827565b602080825281016121ab81614850565b602080825281016121ab8161489c565b602080825281016121ab816148c3565b602080825281016121ab816148f5565b602080825281016121ab8161492e565b602081016121ab8284614214565b60608101614f0d8286614214565b614f1a6020830185614214565b6120406040830184614202565b60608101614b628286614214565b60a08101614f438288614214565b614b086020830187614214565b60c08101614f5e8289614214565b614f6b6020830188614214565b614f786040830187614214565b614f856060830186614214565b614f926080830185614214565b614f9f60a0830184614214565b979650505050505050565b60405181810167ffffffffffffffff81118282101715614fc957600080fd5b604052919050565b600067ffffffffffffffff821115614fe857600080fd5b506020601f91909101601f19160190565b5190565b919050565b90815260200190565b60006121ab8261502b565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b60006121ab825b60006121ab8261500b565b82818337506000910152565b60005b83811015615070578181015183820152602001615058565b83811115612a215750506000910152565b601f01601f191690565b6150948161500b565b8114610f9657600080fd5b61509481615016565b6150948161501b565b6150948161501e56fea365627a7a72315820909f47cdbe6bcd7333144117f30f39bd528209d834828d4d83253fa4da74e9e76c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH3 0xBC PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x110 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x114 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x50FD DUP1 PUSH3 0x124 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCD5D808D GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xF0E085F5 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF6DDC8B3 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x99A JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x9AF JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x9C4 JUMPI DUP1 PUSH4 0xF8DE21D2 EQ PUSH2 0x9D9 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x950 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x965 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x985 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xD485045E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x8F1 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x911 JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x926 JUMPI DUP1 PUSH4 0xEE54A4EC EQ PUSH2 0x93B JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x8A7 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x8C7 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x8DC JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB7E15241 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xBDEE453C GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x7F9 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x819 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x851 JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x873 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x7AF JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x7CF JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x7E4 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xACC04348 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x743 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x758 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x76D JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x78F JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x6F9 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x70E JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x72E JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x7420CA3E GT PUSH2 0x23E JUMPI DUP1 PUSH4 0x7A8FAEB8 GT PUSH2 0x218 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x69A JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x6AF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x6D9 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x65B JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x670 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x685 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x574442CC GT PUSH2 0x27A JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x5D5 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x5EA JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x61B JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x63B JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x591 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x5A6 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x2F470764 GT PUSH2 0x30D JUMPI DUP1 PUSH4 0x366F513B GT PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x366F513B EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x51C JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x53C JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x55C JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x2F470764 EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x4DA JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x1B7BDE74 GT PUSH2 0x349 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x490 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3D4 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x3F6 JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E11 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B9 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x9F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F50 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xA39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4971 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x411 CALLDATASIZE PUSH1 0x4 PUSH2 0x4187 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x431 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FE8 JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4EF1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xA80 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x47E CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4B6F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xAB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xAB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B9 PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4022 JUMP JUMPDEST PUSH2 0xABC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x4F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xAFC JUMP JUMPDEST PUSH2 0x50D PUSH2 0x508 CALLDATASIZE PUSH1 0x4 PUSH2 0x40AD JUMP JUMPDEST PUSH2 0xB0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4EFF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x537 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xB7C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x557 CALLDATASIZE PUSH1 0x4 PUSH2 0x408E JUMP JUMPDEST PUSH2 0xB8E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x577 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xBAE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xBC0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xBC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5C6 PUSH2 0x5C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4070 JUMP JUMPDEST PUSH2 0xBCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F27 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xBED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x60A PUSH2 0x605 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FE8 JUMP JUMPDEST PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x636 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xC2D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x647 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x656 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xC42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC6C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC81 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xC87 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x6F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xC9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xCBA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x729 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xCE0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xCF2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xCF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xCFE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x782 PUSH2 0xD04 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4CC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x7AA CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xD13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x7CA CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xD25 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xD37 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xD46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x814 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xD55 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x839 PUSH2 0x834 CALLDATASIZE PUSH1 0x4 PUSH2 0x4070 JUMP JUMPDEST PUSH2 0xD67 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x871 PUSH2 0x86C CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xDD9 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x893 PUSH2 0x88E CALLDATASIZE PUSH1 0x4 PUSH2 0x4070 JUMP JUMPDEST PUSH2 0xEAE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B98 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x8C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FE8 JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xF1D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x90C CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xF32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xF44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x947 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF59 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF63 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x871 PUSH2 0x980 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xF69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF99 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xFA5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xFB4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x50D PUSH2 0x9F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x40FA JUMP JUMPDEST PUSH2 0xFC3 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xB35 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E71 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB5D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CE1 JUMP JUMPDEST PUSH2 0xB68 DUP7 DUP7 DUP7 PUSH2 0x1044 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCD1 PUSH2 0x1503 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0xDE1 PUSH2 0xCBA JUMP JUMPDEST PUSH2 0xDFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DC1 JUMP JUMPDEST PUSH4 0x366F513B PUSH1 0xE0 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xF4DDF72383625730676AE80F4E72796030E502D9E3DCE442215377F640213BD6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xE45 SWAP1 DUP4 PUSH2 0x1507 JUMP JUMPDEST PUSH2 0xE56 PUSH4 0x7C6F10E9 PUSH1 0xE1 SHL DUP4 PUSH2 0x1507 JUMP JUMPDEST PUSH16 0x98DEC2DC86D8DEE6D2DCCEE6AED2E8D PUSH1 0x83 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH6 0x9184E72A000 DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xF71 PUSH2 0xCBA JUMP JUMPDEST PUSH2 0xF8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DC1 JUMP JUMPDEST PUSH2 0xF96 DUP2 PUSH2 0x1583 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xFEA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E71 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1012 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CE1 JUMP JUMPDEST PUSH2 0x102E DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1605 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP2 SWAP11 SWAP1 SWAP10 POP SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP4 PUSH2 0x1065 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E01 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH1 0x1 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH2 0x125C DUP3 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP3 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP PUSH2 0x1F3F JUMP JUMPDEST DUP2 PUSH1 0x4 ADD SLOAD DUP7 GT PUSH2 0x126D JUMPI DUP6 PUSH2 0x1273 JUMP JUMPDEST DUP2 PUSH1 0x4 ADD SLOAD JUMPDEST SWAP5 POP PUSH1 0x0 PUSH2 0x143E DUP4 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP9 DUP12 PUSH2 0x1FDA JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1467 JUMPI PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0xB DUP5 ADD SLOAD PUSH2 0x1467 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP4 PUSH2 0x2048 JUMP JUMPDEST DUP3 PUSH1 0x4 ADD SLOAD DUP7 EQ ISZERO PUSH2 0x147F JUMPI DUP3 PUSH1 0x5 ADD SLOAD SWAP5 POP PUSH2 0x14AD JUMP JUMPDEST PUSH2 0x14AA DUP4 PUSH1 0x4 ADD SLOAD PUSH2 0x149E DUP9 DUP7 PUSH1 0x5 ADD SLOAD PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21B1 AND JUMP JUMPDEST SWAP5 POP JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP DUP5 ISZERO PUSH2 0x14E8 JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH2 0x14D8 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x5 DUP5 ADD SSTORE PUSH2 0x14E8 DUP5 DUP10 DUP8 PUSH2 0x2235 JUMP JUMPDEST PUSH2 0x14F7 DUP4 DUP4 DUP9 DUP9 PUSH1 0x0 DUP1 PUSH2 0x2266 JUMP JUMPDEST POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x1562 JUMPI PUSH2 0x155C PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x2577 AND JUMP JUMPDEST POP PUSH2 0x157F JUMP JUMPDEST PUSH2 0x157D PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x25BF AND JUMP JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D01 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP6 PUSH2 0x1626 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E51 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH1 0x1 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH2 0x181D DUP3 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP3 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP PUSH2 0x1F3F JUMP JUMPDEST DUP2 PUSH1 0x5 ADD SLOAD DUP9 GT PUSH2 0x182E JUMPI DUP8 PUSH2 0x1834 JUMP JUMPDEST DUP2 PUSH1 0x5 ADD SLOAD JUMPDEST SWAP8 POP PUSH1 0x0 DUP3 PUSH1 0x5 ADD SLOAD DUP10 EQ DUP1 PUSH2 0x1847 JUMPI POP DUP8 JUMPDEST ISZERO PUSH2 0x1A6E JUMPI DUP3 PUSH1 0x5 ADD SLOAD DUP10 EQ PUSH2 0x187B JUMPI PUSH2 0x1876 DUP4 PUSH1 0x5 ADD SLOAD PUSH2 0x149E DUP12 DUP7 PUSH1 0x4 ADD SLOAD PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1881 JUMP JUMPDEST DUP3 PUSH1 0x4 ADD SLOAD JUMPDEST SWAP6 POP DUP6 PUSH2 0x18A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E31 JUMP JUMPDEST PUSH2 0x1A67 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP9 DUP14 PUSH2 0x1FDA JUMP JUMPDEST SWAP1 POP PUSH2 0x1A72 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C3E DUP6 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP6 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP14 DUP7 DUP15 DUP15 PUSH2 0x2680 JUMP JUMPDEST SWAP14 POP SWAP9 POP SWAP1 SWAP3 POP SWAP1 POP DUP3 PUSH2 0x1E83 JUMPI DUP2 SWAP8 POP DUP5 PUSH1 0x4 ADD SLOAD DUP3 EQ PUSH2 0x1C76 JUMPI PUSH1 0x5 DUP6 ADD SLOAD PUSH2 0x1C73 SWAP1 PUSH2 0x149E DUP11 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x216E AND JUMP JUMPDEST SWAP8 POP JUMPDEST DUP8 PUSH2 0x1C93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E31 JUMP JUMPDEST PUSH2 0x1E5A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP6 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP11 DUP16 PUSH2 0x1FDA JUMP JUMPDEST SWAP3 POP PUSH2 0x1E7C DUP4 PUSH2 0x1E70 DUP10 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x279C AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST SWAP7 POP PUSH2 0x1E87 JUMP JUMPDEST DUP2 SWAP3 POP JUMPDEST DUP3 PUSH2 0x1EA4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E81 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1EC5 JUMPI PUSH1 0x5 DUP6 ADD SLOAD PUSH2 0x1EBF SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x5 DUP7 ADD SSTORE JUMPDEST PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0xB DUP7 ADD SLOAD PUSH2 0x1EE6 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP6 PUSH2 0x27C1 JUMP JUMPDEST DUP10 PUSH2 0x1EFE JUMPI PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F0D JUMP JUMPDEST PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP6 POP DUP7 ISZERO PUSH2 0x1F20 JUMPI PUSH2 0x1F20 DUP7 DUP14 DUP10 PUSH2 0x2235 JUMP JUMPDEST PUSH2 0x1F2F DUP6 DUP6 DUP11 DUP5 DUP16 PUSH1 0x1 PUSH2 0x2266 JUMP JUMPDEST POP POP POP POP POP SWAP6 POP SWAP6 POP SWAP6 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x60 ADD MLOAD PUSH2 0x1F60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E61 JUMP JUMPDEST DUP2 PUSH2 0x140 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1FA0 JUMPI POP DUP2 MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1FBC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DC1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x157F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DF1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 PUSH2 0x1FE9 DUP7 DUP9 DUP5 PUSH2 0x2831 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x2002 JUMPI POP SWAP1 DUP2 SWAP1 SUB SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x2020 JUMP JUMPDEST POP PUSH1 0x0 SWAP2 SWAP1 DUP2 SWAP1 SUB SWAP1 DUP2 ISZERO PUSH2 0x2020 JUMPI PUSH2 0x2020 DUP8 PUSH1 0x60 ADD MLOAD DUP7 DUP5 PUSH2 0x2235 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x203A JUMPI PUSH2 0x203A DUP8 PUSH1 0x60 ADD MLOAD DUP10 PUSH2 0x160 ADD MLOAD DUP4 PUSH2 0x27C1 JUMP JUMPDEST POP SWAP1 SWAP2 POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2150 JUMPI CALLVALUE PUSH2 0x2064 JUMPI PUSH2 0x205F DUP4 CALLER DUP5 DUP5 PUSH2 0x29D0 JUMP JUMPDEST PUSH2 0x214B JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x2091 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D21 JUMP JUMPDEST DUP1 CALLVALUE LT ISZERO PUSH2 0x20B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4EE1 JUMP JUMPDEST PUSH1 0x2D PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ SWAP1 POP PUSH2 0x2137 JUMPI PUSH2 0x2137 DUP4 ADDRESS DUP5 DUP5 PUSH2 0x29D0 JUMP JUMPDEST DUP1 CALLVALUE GT ISZERO PUSH2 0x214B JUMPI PUSH2 0x214B CALLER DUP3 CALLVALUE SUB PUSH2 0x2A27 JUMP JUMPDEST PUSH2 0x157D JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x157D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D21 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x217D JUMPI POP PUSH1 0x0 PUSH2 0x21AB JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x218A JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x21A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DB1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21A8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2AC3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21A8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2AFA JUMP JUMPDEST DUP1 ISZERO PUSH2 0x157D JUMPI PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x225B JUMPI PUSH2 0x214B DUP3 DUP3 PUSH2 0x2B26 JUMP JUMPDEST PUSH2 0x157D DUP4 DUP4 DUP4 PUSH2 0x27C1 JUMP JUMPDEST PUSH2 0x2270 DUP7 DUP6 PUSH2 0x2BFD JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 DUP7 ADD SLOAD PUSH1 0x3 DUP8 ADD SLOAD PUSH1 0x4 DUP10 ADD SLOAD PUSH1 0x5 DUP11 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND SWAP6 PUSH1 0x0 SWAP6 DUP7 SWAP6 DUP7 SWAP6 PUSH1 0x60 SWAP6 DUP11 SWAP6 PUSH4 0x17F86809 PUSH1 0xE1 SHL SWAP6 PUSH2 0x22BE SWAP6 DUP2 AND SWAP5 AND SWAP3 SWAP2 SWAP1 PUSH1 0x24 ADD PUSH2 0x4AC5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x22FC SWAP2 SWAP1 PUSH2 0x495A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2337 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x233C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x2359 JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP2 ADD MLOAD SWAP3 POP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2367 JUMPI INVALID JUMPDEST EQ DUP1 PUSH2 0x2375 JUMPI POP PUSH1 0x4 DUP12 ADD SLOAD ISZERO JUMPDEST DUP1 PUSH2 0x2383 JUMPI POP DUP10 PUSH1 0x5 ADD SLOAD DUP5 GT JUMPDEST PUSH2 0x239F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DD1 JUMP JUMPDEST PUSH2 0x256A DUP11 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP13 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP12 DUP12 DUP8 DUP13 DUP11 DUP14 PUSH2 0x2CD4 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2583 DUP4 DUP4 PUSH2 0x2E2D JUMP JUMPDEST PUSH2 0x25B7 JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x21AB JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x21AB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25CB DUP4 DUP4 PUSH2 0x2E2D JUMP JUMPDEST ISZERO PUSH2 0x25B7 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x2643 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2604 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2621 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x265F JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x21AB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2697 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x2E42 JUMP JUMPDEST SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP8 ISZERO PUSH2 0x26FC JUMPI DUP9 SWAP6 POP DUP6 DUP3 GT ISZERO PUSH2 0x26E3 JUMPI PUSH2 0x26BF DUP12 PUSH1 0x60 ADD MLOAD DUP8 DUP5 SUB PUSH2 0x2ED2 JUMP JUMPDEST ISZERO PUSH2 0x26DF JUMPI PUSH2 0x26DA DUP12 PUSH1 0x60 ADD MLOAD DUP14 PUSH2 0x140 ADD MLOAD DUP9 DUP6 SUB PUSH2 0x2235 JUMP JUMPDEST PUSH2 0x26E3 JUMP JUMPDEST DUP2 SWAP6 POP JUMPDEST DUP1 DUP11 GT PUSH2 0x26F1 JUMPI PUSH1 0x0 PUSH2 0x26F5 JUMP JUMPDEST DUP1 DUP11 SUB JUMPDEST SWAP4 POP PUSH2 0x277C JUMP JUMPDEST DUP10 DUP2 EQ PUSH2 0x271B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DE1 JUMP JUMPDEST DUP12 PUSH1 0xA0 ADD MLOAD DUP11 EQ ISZERO PUSH2 0x2734 JUMPI DUP9 SWAP6 POP DUP9 DUP3 SUB SWAP4 POP PUSH2 0x277C JUMP JUMPDEST DUP12 PUSH1 0x80 ADD MLOAD DUP3 LT PUSH2 0x2774 JUMPI DUP12 PUSH1 0x80 ADD MLOAD SWAP6 POP DUP12 PUSH1 0x80 ADD MLOAD DUP3 SUB SWAP4 POP PUSH2 0x2769 DUP12 PUSH1 0x80 ADD MLOAD DUP14 PUSH2 0x140 ADD MLOAD DUP4 DUP16 PUSH1 0xA0 ADD MLOAD SUB PUSH2 0x2235 JUMP JUMPDEST POP PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x277C JUMP JUMPDEST DUP2 SWAP6 POP PUSH1 0x0 SWAP4 POP JUMPDEST DUP10 DUP2 GT PUSH2 0x2789 JUMPI DUP10 PUSH2 0x278B JUMP JUMPDEST DUP1 JUMPDEST SWAP5 POP POP POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x21A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D11 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x157D JUMPI PUSH2 0x27E1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2FD8 AND JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2824 SWAP2 SWAP1 PUSH2 0x4EF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2846 DUP4 PUSH2 0x160 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x3031 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0x160 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP6 MSTORE PUSH1 0xB DUP5 MSTORE DUP3 DUP6 KECCAK256 PUSH1 0x60 DUP11 ADD MLOAD SWAP1 SWAP2 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0xE0 DUP6 ADD MLOAD TIMESTAMP SWAP1 DUP2 GT ISZERO PUSH2 0x2898 JUMPI POP PUSH1 0xE0 DUP6 ADD MLOAD JUMPDEST PUSH2 0x28B7 DUP4 DUP8 PUSH1 0x0 ADD MLOAD DUP10 PUSH1 0x60 ADD MLOAD DUP11 PUSH1 0x80 ADD MLOAD DUP11 PUSH2 0x140 ADD MLOAD DUP7 PUSH2 0x3115 JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x80 ADD MLOAD DUP7 LT ISZERO PUSH2 0x28E8 JUMPI PUSH1 0x80 DUP8 ADD MLOAD DUP5 SLOAD PUSH2 0x28E1 SWAP2 SWAP1 PUSH2 0x149E SWAP1 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x216E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x28EC JUMP JUMPDEST POP DUP3 SLOAD JUMPDEST DUP4 SLOAD PUSH2 0x28FE SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST DUP5 SSTORE PUSH1 0x1 DUP4 ADD SLOAD PUSH2 0x2915 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE PUSH1 0xE0 DUP8 ADD MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2932 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2944 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x216E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2959 DUP2 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x21B1 AND JUMP JUMPDEST SWAP1 POP DUP8 PUSH1 0x80 ADD MLOAD DUP8 LT ISZERO PUSH2 0x2986 JUMPI PUSH1 0x1 DUP6 ADD SLOAD PUSH2 0x297C SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SSTORE PUSH2 0x298E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP7 ADD SSTORE JUMPDEST DUP4 SLOAD PUSH2 0x29A0 SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST DUP5 SSTORE PUSH1 0x2 DUP5 ADD SLOAD DUP2 DUP2 GT PUSH2 0x29B5 JUMPI PUSH1 0x0 PUSH2 0x29B9 JUMP JUMPDEST DUP2 DUP2 SUB JUMPDEST PUSH1 0x2 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE SWAP5 POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2A21 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x2A06 JUMPI PUSH2 0x2A01 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2FD8 AND JUMP JUMPDEST PUSH2 0x2A21 JUMP JUMPDEST PUSH2 0x2A21 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3170 AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x2A47 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D71 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x2A60 SWAP1 PUSH2 0x4966 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2A9D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2AA2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x157D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D61 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2AE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x4CD0 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x2AF0 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2B1E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x4CD0 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x157F JUMPI PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SELFBALANCE DUP1 DUP4 GT ISZERO PUSH2 0x2BA2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x2B6F SWAP1 DUP5 DUP8 SUB SWAP1 PUSH1 0x4 ADD PUSH2 0x4EF1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B9D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x2BAC DUP5 DUP5 PUSH2 0x2A27 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2BEF SWAP2 SWAP1 PUSH2 0x4EF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x2C1A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E21 JUMP JUMPDEST DUP2 PUSH1 0x4 ADD SLOAD DUP2 EQ ISZERO PUSH2 0x2CB6 JUMPI PUSH1 0x0 PUSH1 0x4 DUP4 ADD DUP2 SWAP1 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE TIMESTAMP PUSH1 0x7 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD SSTORE DUP2 SLOAD PUSH2 0x2C5A SWAP1 PUSH1 0xF SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x25BF AND JUMP JUMPDEST POP DUP2 SLOAD PUSH1 0xB DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2C88 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x25BF AND JUMP JUMPDEST POP DUP2 SLOAD PUSH1 0xA DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x155C SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x25BF AND JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH2 0x2CCB SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x4 DUP4 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2CE2 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2D5B JUMPI DUP7 PUSH1 0x0 ADD MLOAD DUP8 PUSH2 0x160 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH2 0x140 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6349C1A02EC126F7F4FC6E6837E1859006E90E9901635C442D29271E77B96FB6 CALLER DUP13 PUSH1 0x60 ADD MLOAD DUP14 PUSH1 0x80 ADD MLOAD DUP13 DUP13 DUP13 DUP12 PUSH1 0x40 MLOAD PUSH2 0x2D4E SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x497F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2E23 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2D69 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2E23 JUMPI DUP3 ISZERO PUSH2 0x2D91 JUMPI PUSH2 0x2D8E PUSH15 0xC097CE7BC90715B34B9F1000000000 DUP5 PUSH2 0x21B1 JUMP JUMPDEST SWAP3 POP JUMPDEST DUP2 ISZERO PUSH2 0x2DB4 JUMPI PUSH2 0x2DB1 PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP4 PUSH2 0x21B1 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP7 PUSH1 0x0 ADD MLOAD DUP8 PUSH2 0x160 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH2 0x140 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2ED7B29B4CA95CF3BB9A44F703872A66E6AA5E8F07B675FA9A5C124A1E5D7352 DUP12 PUSH1 0x80 ADD MLOAD DUP13 PUSH1 0x60 ADD MLOAD CALLER DUP12 DUP14 DUP12 DUP12 PUSH1 0x40 MLOAD PUSH2 0x2E1A SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2E7B DUP10 PUSH1 0x0 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD DUP13 PUSH2 0x140 ADD MLOAD DUP12 DUP15 PUSH1 0xA0 ADD MLOAD DUP12 PUSH2 0x2E71 JUMPI PUSH1 0x0 PUSH2 0x2E73 JUMP JUMPDEST DUP13 JUMPDEST PUSH1 0x0 DUP13 PUSH2 0x3194 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP DUP6 DUP4 LT ISZERO PUSH2 0x2EA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DA1 JUMP JUMPDEST DUP9 PUSH1 0xA0 ADD MLOAD DUP3 GT ISZERO PUSH2 0x2EC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D51 JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x2D SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x29D5277C SWAP3 PUSH2 0x2F10 SWAP3 DUP11 SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x49E7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2F5F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41C3 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2F7A DUP3 PUSH2 0x149E DUP8 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x216E AND JUMP JUMPDEST SWAP1 POP PUSH32 0xE46714304B3DE2A7B58AFCC0BAFE0A6DEABD30A647332CB479124142FDB14B0B PUSH6 0x9184E72A000 DUP3 GT DUP7 DUP4 PUSH6 0x9184E72A000 PUSH1 0x40 MLOAD PUSH2 0x2FBF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH6 0x9184E72A000 LT SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x157D SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x2FFA SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x4B39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x32F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP2 SWAP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3071 JUMPI POP PUSH1 0x4 DUP3 ADD SLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x3109 JUMPI PUSH2 0x30A8 PUSH3 0x15180 PUSH2 0x149E DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x309C DUP7 PUSH1 0x4 ADD SLOAD TIMESTAMP PUSH2 0x21F3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x216E AND JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0x30C4 JUMPI POP PUSH1 0x2 DUP2 ADD SLOAD JUMPDEST DUP1 ISZERO PUSH2 0x2A01 JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH2 0x30DF SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x279C AND JUMP JUMPDEST PUSH1 0x3 DUP4 ADD SSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0x30F9 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SSTORE PUSH2 0x2A01 DUP5 DUP5 DUP4 PUSH2 0x33D7 JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP4 ADD SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x314B PUSH11 0x7259756A8D61998000000 PUSH2 0x149E PUSH1 0x15 SLOAD PUSH2 0x309C DUP12 PUSH1 0x0 ADD SLOAD PUSH2 0x309C DUP14 PUSH1 0x2 ADD SLOAD DUP10 PUSH2 0x21F3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP9 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x3167 JUMPI PUSH2 0x3167 DUP4 DUP8 DUP8 DUP8 DUP6 PUSH2 0x346E JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A21 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x2FFA SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x4A9D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP3 MSTORE DUP10 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS DUP4 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP11 AND PUSH1 0x80 DUP5 ADD MSTORE DUP4 MLOAD SWAP2 DUP3 ADD DUP5 MSTORE DUP9 DUP3 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE SWAP2 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x31F9 SWAP2 SWAP1 DUP15 DUP9 DUP9 DUP7 PUSH2 0x37B8 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x3208 DUP12 DUP4 PUSH2 0x39DD JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x27 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1E2C62D3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x1E2C62D3 SWAP2 PUSH2 0x3241 SWAP2 DUP16 SWAP2 DUP16 SWAP2 DUP9 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x4AED JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x326D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3291 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41A5 JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH32 0xB4EB3C9B62EFCCE7021CBA5FD9CD0C44DF91C2272806CCC5E57DF7C912E8D716 DUP13 DUP7 DUP9 PUSH1 0x40 MLOAD PUSH2 0x32DB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B54 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3304 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3AAB JUMP JUMPDEST PUSH2 0x3320 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4ED1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x333C SWAP2 SWAP1 PUSH2 0x495A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3379 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x337E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x33A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D31 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2A21 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x33BB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4052 JUMP JUMPDEST PUSH2 0x2A21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4EA1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33FB PUSH9 0x56BC75E2D63100000 PUSH2 0x149E PUSH1 0x15 SLOAD DUP6 PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3408 DUP5 DUP5 DUP4 PUSH2 0x3AE4 JUMP JUMPDEST PUSH2 0x3422 DUP4 DUP6 PUSH2 0x341D DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH2 0x27C1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP1 DUP5 AND PUSH32 0x220E66E3E759E1382AA86CD8AF5ABCA05EBF3AD564F223AE62D977678337272A PUSH2 0x3461 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2BEF SWAP2 SWAP1 PUSH2 0x4EF1 JUMP JUMPDEST PUSH1 0x2F SLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 ISZERO PUSH2 0x34D1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP2 POP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP12 SWAP2 AND PUSH2 0x350F PUSH9 0x56BC75E2D63100000 PUSH2 0x149E DUP13 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x216E AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3521 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A9D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x355F SWAP2 SWAP1 PUSH2 0x495A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x359A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x359F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x35B5 JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP5 POP JUMPDEST DUP5 ISZERO PUSH2 0x37AC JUMPI PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x35F1 SWAP3 SWAP2 AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4B39 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x360B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x361F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3643 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4052 JUMP JUMPDEST POP PUSH1 0x38 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x366A SWAP2 DUP15 SWAP2 DUP11 SWAP2 PUSH1 0x24 ADD PUSH2 0x4B54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xEFE6A8B PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x369F SWAP2 SWAP1 PUSH2 0x495A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x36DC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x36E1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 ISZERO PUSH2 0x3758 JUMPI PUSH1 0x1F SLOAD PUSH2 0x36FE SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x279C AND JUMP JUMPDEST PUSH1 0x1F SSTORE PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0xF41C644671512F1CDA76ABFE6038E3D7D526C1377A5A8C692F81703901DB2150 SWAP2 PUSH2 0x374B SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4F27 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x256A JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0x483F67EA49F76AC15E15BBAD68B52788CA47D50AEF1E4ACFE95E5E307E710812 SWAP2 PUSH2 0x37A2 SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4F27 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x37CF JUMPI POP PUSH1 0x20 DUP8 ADD MLOAD ISZERO ISZERO JUMPDEST PUSH2 0x37EB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E41 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH2 0x37FC JUMPI DUP7 MLOAD PUSH1 0x20 DUP9 ADD MSTORE JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD DUP8 MLOAD GT ISZERO PUSH2 0x3821 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D81 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH2 0x38DE JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x389D JUMPI DUP6 ISZERO PUSH2 0x3852 JUMPI PUSH2 0x384B DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x3B65 JUMP JUMPDEST SWAP1 POP PUSH2 0x3866 JUMP JUMPDEST PUSH2 0x3863 DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x3B95 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x3898 JUMPI PUSH1 0x80 DUP12 ADD MLOAD DUP12 MLOAD PUSH2 0x3889 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x1 JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP6 PUSH2 0x3BB9 JUMP JUMPDEST DUP10 MLOAD PUSH2 0x3895 SWAP1 DUP3 PUSH2 0x21F3 JUMP JUMPDEST DUP11 MSTORE JUMPDEST PUSH2 0x38DE JUMP JUMPDEST DUP6 ISZERO PUSH2 0x38B5 JUMPI PUSH2 0x38AE DUP11 PUSH1 0x2 PUSH2 0x3841 JUMP JUMPDEST SWAP1 POP PUSH2 0x38C3 JUMP JUMPDEST PUSH2 0x38C0 DUP11 PUSH1 0x2 PUSH2 0x3859 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x38DE JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x38D8 SWAP1 DUP3 PUSH2 0x279C JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MSTORE JUMPDEST DUP7 MLOAD ISZERO PUSH2 0x38FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E91 JUMP JUMPDEST PUSH2 0x3907 DUP12 DUP12 PUSH2 0x3CFD JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x3953 JUMPI DUP10 MLOAD DUP3 EQ PUSH2 0x3935 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x394E JUMPI PUSH2 0x394B DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x279C AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x39CD JUMP JUMPDEST PUSH1 0x20 DUP11 ADD MLOAD DUP3 GT ISZERO PUSH2 0x3977 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D41 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD DUP4 LT ISZERO PUSH2 0x399B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CF1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x39CD JUMPI PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x39BA SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x0 PUSH2 0x387E JUMP JUMPDEST PUSH2 0x39CA DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST SWAP3 POP JUMPDEST POP SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP1 ISZERO PUSH2 0x157D JUMPI PUSH1 0x2D SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x3A06 JUMPI POP DUP2 PUSH2 0x3A8B JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5967AA75 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xB2CF54EA SWAP1 PUSH2 0x3A38 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4B39 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A64 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3A88 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41A5 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2A21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D91 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2040 JUMPI POP POP ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x157D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3B13 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x279C AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0x40A75AE5F7A5336E75F7C7977E12C4B46A9AC0F30DE01A2D5B6C1A4F4AF63587 SWAP1 PUSH2 0x2824 SWAP1 DUP6 SWAP1 PUSH2 0x4EF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AB PUSH9 0x56BC75E2D63100000 PUSH2 0x3B89 PUSH1 0x3E SLOAD DUP6 PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3E0F AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AB PUSH9 0x56BC75E2D63100000 PUSH2 0x3B89 PUSH1 0x18 SLOAD DUP6 PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x3CF5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x3C63 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3C07 SWAP2 AND DUP8 DUP7 DUP5 PUSH2 0x3E51 JUMP JUMPDEST POP POP PUSH2 0x3C60 PUSH2 0x3C2E PUSH9 0x56BC75E2D63100000 PUSH2 0x149E PUSH1 0x39 SLOAD DUP6 PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1E70 PUSH2 0x3C53 PUSH9 0x56BC75E2D63100000 PUSH2 0x149E PUSH1 0x20 SLOAD DUP8 PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3C8C SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x279C AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD DUP8 SWAP3 SWAP2 DUP10 AND SWAP1 PUSH32 0xB23479169712C443E6B00FB0CEC3506A5F5926F541DF4243D313E11C8C5C71ED SWAP1 PUSH2 0x3CE0 SWAP1 DUP7 SWAP1 PUSH2 0x4EF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3CF5 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x346E JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD PUSH1 0x60 DUP8 DUP2 ADD MLOAD DUP8 MLOAD SWAP6 DUP9 ADD MLOAD DUP9 DUP6 ADD MLOAD SWAP5 MLOAD PUSH1 0x0 SWAP9 DUP10 SWAP9 SWAP5 SWAP8 PUSH4 0x957BA11 PUSH1 0xE2 SHL SWAP8 PUSH2 0x3D44 SWAP8 SWAP3 SWAP7 SWAP2 SWAP6 SWAP3 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 PUSH1 0x24 ADD PUSH2 0x4A2A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE PUSH1 0x3 SLOAD SWAP2 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x3D96 SWAP1 DUP5 SWAP1 PUSH2 0x495A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3DD1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DD6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0x3DF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4EB1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP3 ADD MLOAD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21A8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x3EEA JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x40 MLOAD PUSH4 0x6A688FF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD4D11FE SWAP1 PUSH2 0x3E8C SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A5F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3EA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EB9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3EDD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41C3 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x3F0B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x4CD0 JUMP JUMPDEST POP DUP4 PUSH2 0x3F19 JUMPI POP PUSH1 0x0 PUSH2 0x29C9 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 DUP7 SUB DUP2 PUSH2 0x3F27 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x21AB DUP2 PUSH2 0x508B JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x21AB DUP2 PUSH2 0x509F JUMP JUMPDEST DUP1 MLOAD PUSH2 0x21AB DUP2 PUSH2 0x509F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x21AB DUP2 PUSH2 0x50A8 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x21AB DUP2 PUSH2 0x50B1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3F7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3F8F PUSH2 0x3F8A DUP3 PUSH2 0x4FD1 JUMP JUMPDEST PUSH2 0x4FAA JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x3FAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3FB6 DUP4 DUP3 DUP5 PUSH2 0x5049 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x21AB DUP2 PUSH2 0x50A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2040 DUP5 DUP5 PUSH2 0x3F34 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4007 DUP6 DUP6 PUSH2 0x3F34 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4018 DUP6 DUP3 DUP7 ADD PUSH2 0x3F34 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4035 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4041 DUP6 DUP6 PUSH2 0x3F34 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4018 DUP6 DUP3 DUP7 ADD PUSH2 0x3F55 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4064 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2040 DUP5 DUP5 PUSH2 0x3F4A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4082 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2040 DUP5 DUP5 PUSH2 0x3F55 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4007 DUP6 DUP6 PUSH2 0x3F55 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x40C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x40CE DUP7 DUP7 PUSH2 0x3F55 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x40DF DUP7 DUP3 DUP8 ADD PUSH2 0x3F34 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x40F0 DUP7 DUP3 DUP8 ADD PUSH2 0x3F55 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4112 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x411E DUP9 DUP9 PUSH2 0x3F55 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x412F DUP9 DUP3 DUP10 ADD PUSH2 0x3F34 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4140 DUP9 DUP3 DUP10 ADD PUSH2 0x3F55 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4151 DUP9 DUP3 DUP10 ADD PUSH2 0x3F3F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x416E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x417A DUP9 DUP3 DUP10 ADD PUSH2 0x3F6B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2040 DUP5 DUP5 PUSH2 0x3F60 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2040 DUP5 DUP5 PUSH2 0x3FBF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x41E2 DUP6 DUP6 PUSH2 0x3FBF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4018 DUP6 DUP3 DUP7 ADD PUSH2 0x3FBF JUMP JUMPDEST PUSH2 0x41FC DUP2 PUSH2 0x5037 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x41FC DUP2 PUSH2 0x500B JUMP JUMPDEST PUSH2 0x41FC DUP2 PUSH2 0x5016 JUMP JUMPDEST PUSH2 0x41FC DUP2 PUSH2 0x501B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4228 DUP3 PUSH2 0x4FF9 JUMP JUMPDEST PUSH2 0x4232 DUP2 DUP6 PUSH2 0x4FFD JUMP JUMPDEST SWAP4 POP PUSH2 0x4242 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5055 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x41FC DUP2 PUSH2 0x503E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4260 DUP3 PUSH2 0x4FF9 JUMP JUMPDEST PUSH2 0x426A DUP2 DUP6 PUSH2 0x5002 JUMP JUMPDEST SWAP4 POP PUSH2 0x427A DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5055 JUMP JUMPDEST PUSH2 0x4283 DUP2 PUSH2 0x5081 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x429A PUSH1 0x6 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42BC PUSH1 0x1B DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x696E73756666696369656E742073776170206C69717569646974790000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42F5 PUSH1 0x26 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x433D PUSH1 0x1B DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4376 PUSH1 0x10 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH16 0x1DDC9BDB99C8185CDCD95D081CD95B9D PUSH1 0x82 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43A2 PUSH1 0x20 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43DB PUSH1 0x13 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH19 0x737761702066696C6C20746F6F206C61726765 PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x440A PUSH1 0x17 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x65786365737369766520736F7572636520616D6F756E74000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4443 PUSH1 0x3A DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x416464726573733A20756E61626C6520746F2073656E642076616C75652C2072 DUP2 MSTORE PUSH32 0x6563697069656E74206D61792068617665207265766572746564000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44A2 PUSH1 0x1D DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E6365000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44DB PUSH1 0x1C DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x736F75726365416D6F756E74206C6172676572207468616E206D617800000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4514 PUSH1 0xE DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH14 0x7377617020746F6F206C61726765 PUSH1 0x90 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x453E PUSH1 0x18 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x696E73756666696369656E74206465737420616D6F756E740000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4577 PUSH1 0x21 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45BA PUSH1 0xC DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45E2 PUSH1 0x12 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH18 0x3AB73432B0B63A343C903837B9B4BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4610 PUSH1 0xA DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH10 0x39BBB0B81032B93937B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4636 PUSH1 0x15 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH21 0x6C6F616E506172616D73206E6F7420657869737473 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4667 PUSH1 0x12 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH18 0x6465706F736974416D6F756E74203D3D203 PUSH1 0x74 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4695 PUSH1 0x14 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46C5 PUSH1 0x10 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH16 0x6E6F7468696E6720746F20636C6F7365 PUSH1 0x80 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46F1 PUSH1 0x14 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH20 0x6C6F616E436C6F7365416D6F756E74203D3D203 PUSH1 0x64 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4721 PUSH1 0x2E DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x6D696E206F72206D617820736F7572636520746F6B656E20616D6F756E74206E DUP2 MSTORE PUSH14 0x1959591CC81D1BC81899481CD95D PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AB PUSH1 0x0 DUP4 PUSH2 0x4FFD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x477E PUSH1 0xF DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH15 0x73776170416D6F756E74203D3D203 PUSH1 0x8C SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47A9 PUSH1 0xE DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH14 0x1B1BD85B881A5CC818DB1BDCD959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47D3 PUSH1 0xC DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47FB PUSH1 0x1B DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x636C6F7365416D6F756E74206973203020616674657220737761700000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4834 PUSH1 0xD DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH13 0x696E76616C6964207374617465 PUSH1 0x98 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x485D PUSH1 0x2A DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48A9 PUSH1 0xB DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH11 0x1CDDD85C0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48D0 PUSH1 0x16 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH22 0x1CDDD85C081D1BDBC81B185C99D9481D1BC8199A5B1B PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4902 PUSH1 0x1F DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x493B PUSH1 0x10 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH16 0x3737BA1032B737BAB3B41032BA3432B9 PUSH1 0x81 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29C9 DUP3 DUP5 PUSH2 0x421D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AB DUP3 PUSH2 0x4764 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x21AB DUP3 DUP5 PUSH2 0x4202 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x498D DUP3 DUP11 PUSH2 0x41F3 JUMP JUMPDEST PUSH2 0x499A PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x49A7 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x49B4 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x49C1 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x49CE PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x49DB PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x49F5 DUP3 DUP6 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x29C9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4202 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x4A10 DUP3 DUP11 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A1D PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x49A7 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x41F3 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x4A38 DUP3 DUP11 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A45 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A52 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x49B4 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4202 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4A6D DUP3 DUP8 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A7A PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A87 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A94 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4AAB DUP3 DUP7 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4AB8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x2040 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4AD3 DUP3 DUP8 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4AE0 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A87 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4AFB DUP3 DUP9 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4B08 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4B15 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4B22 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4B2F PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4B47 DUP3 DUP6 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x29C9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4B62 DUP3 DUP7 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4AB8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x21AB DUP3 DUP5 PUSH2 0x420B JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4B8B DUP3 DUP8 PUSH2 0x420B JUMP JUMPDEST PUSH2 0x4AE0 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x4BA7 DUP3 DUP12 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4BB4 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x420B JUMP JUMPDEST PUSH2 0x4BC1 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4BCE PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4BDB PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4BE8 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4BF5 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C02 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x4C1E DUP3 DUP16 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C2B PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C38 PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C45 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x420B JUMP JUMPDEST PUSH2 0x4C52 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C5F PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C6C PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C79 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C87 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C95 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4CA3 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4CB1 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x4202 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x21AB DUP3 DUP5 PUSH2 0x424C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21A8 DUP2 DUP5 PUSH2 0x4255 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x428D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x42AF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x42E8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4330 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4369 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4395 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x43CE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x43FD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4436 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4495 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x44CE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4531 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x456A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x45AD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4603 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4629 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x465A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4688 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x46B8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x46E4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4714 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4771 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x479C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x47C6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x47EE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4827 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4850 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x489C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x48C3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x48F5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x492E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x21AB DUP3 DUP5 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4F0D DUP3 DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4F1A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x2040 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4202 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4B62 DUP3 DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4F43 DUP3 DUP9 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4B08 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x4F5E DUP3 DUP10 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4F6B PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4F78 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4F85 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4F92 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4F9F PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4FC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4FE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AB DUP3 PUSH2 0x502B JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AB DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x21AB DUP3 PUSH2 0x500B JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5070 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5058 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2A21 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x5094 DUP2 PUSH2 0x500B JUMP JUMPDEST DUP2 EQ PUSH2 0xF96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5094 DUP2 PUSH2 0x5016 JUMP JUMPDEST PUSH2 0x5094 DUP2 PUSH2 0x501B JUMP JUMPDEST PUSH2 0x5094 DUP2 PUSH2 0x501E JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 SWAP1 SWAP16 SELFBALANCE 0xCD 0xBE PUSH12 0xCD7333144117F30F39BD5282 MULMOD 0xD8 CALLVALUE DUP3 DUP14 0x4D DUP4 0x25 EXTCODEHASH LOG4 0xDA PUSH21 0xE9E76C6578706572696D656E74616CF564736F6C63 NUMBER STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "864:27583:128:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;1352:23:128;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;864:27583:128;;780:87:137;853:10;780:87;:::o;864:27583:128:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "60806040526004361061036b5760003560e01c80638f32d59b116101c6578063cd5d808d116100f7578063f0e085f511610095578063f6ddc8b31161006f578063f6ddc8b31461099a578063f706b1f2146109af578063f851a440146109c4578063f8de21d2146109d95761036b565b8063f0e085f514610950578063f2fde38b14610965578063f589a3e7146109855761036b565b8063d485045e116100d1578063d485045e146108f1578063e8f6276414610911578063edab119f14610926578063ee54a4ec1461093b5761036b565b8063cd5d808d146108a7578063d288208c146108c7578063d473c2da146108dc5761036b565b8063b7e1524111610164578063bdee453c1161013e578063bdee453c146107f9578063c4a9081514610819578063c4d66de814610851578063cb6eacd1146108735761036b565b8063b7e15241146107af578063b9cffa3e146107cf578063ba4861e9146107e45761036b565b8063acc04348116101a0578063acc0434814610743578063ae0a853014610758578063afe840091461076d578063b30643d91461078f5761036b565b80638f32d59b146106f957806392d894f81461070e578063959083d31461072e5761036b565b80634699f846116102a05780637420ca3e1161023e5780637a8faeb8116102185780637a8faeb81461069a5780638456cb59146106af5780638da5cb5b146106c45780638dc48ba5146106d95761036b565b80637420ca3e1461065b578063742e67981461067057806378d849ed146106855761036b565b8063574442cc1161027a578063574442cc146105d557806362fff3f6146105ea57806368c4ac261461061b5780636e6637301461063b5761036b565b80634699f8461461057c5780634f28cac214610591578063569fc1fb146105a65761036b565b80632f4707641161030d578063366f513b116102e7578063366f513b146104fa5780633fca506e1461051c5780634115a2b61461053c5780634203e3951461055c5761036b565b80632f470764146104a55780633432423c146104ba5780633452d2d4146104da5761036b565b80631b7bde74116103495780631b7bde7414610416578063218b39c61461044357806324cc5749146104635780632a324027146104905761036b565b8063065d810f146103995780630676c1b7146103d457806317548b79146103f6575b34801561037757600080fd5b5060405162461bcd60e51b815260040161039090614e11565b60405180910390fd5b3480156103a557600080fd5b506103b96103b4366004614022565b6109f9565b6040516103cb96959493929190614f50565b60405180910390f35b3480156103e057600080fd5b506103e9610a39565b6040516103cb9190614971565b34801561040257600080fd5b506103e9610411366004614187565b610a48565b34801561042257600080fd5b50610436610431366004613fe8565b610a63565b6040516103cb9190614ef1565b34801561044f57600080fd5b506103e961045e366004613fca565b610a80565b34801561046f57600080fd5b5061048361047e366004613fca565b610a9b565b6040516103cb9190614b6f565b34801561049c57600080fd5b50610436610ab0565b3480156104b157600080fd5b50610436610ab6565b3480156104c657600080fd5b506103b96104d5366004614022565b610abc565b3480156104e657600080fd5b506104366104f5366004613fca565b610afc565b61050d6105083660046140ad565b610b0e565b6040516103cb93929190614eff565b34801561052857600080fd5b50610436610537366004613fca565b610b7c565b34801561054857600080fd5b5061048361055736600461408e565b610b8e565b34801561056857600080fd5b50610436610577366004613fca565b610bae565b34801561058857600080fd5b50610436610bc0565b34801561059d57600080fd5b50610436610bc6565b3480156105b257600080fd5b506105c66105c1366004614070565b610bcc565b6040516103cb93929190614f27565b3480156105e157600080fd5b50610436610bed565b3480156105f657600080fd5b5061060a610605366004613fe8565b610bf3565b6040516103cb959493929190614f35565b34801561062757600080fd5b50610483610636366004613fca565b610c2d565b34801561064757600080fd5b506103e9610656366004613fca565b610c42565b34801561066757600080fd5b506103e9610c5d565b34801561067c57600080fd5b50610436610c6c565b34801561069157600080fd5b506103e9610c72565b3480156106a657600080fd5b50610436610c81565b3480156106bb57600080fd5b50610483610c87565b3480156106d057600080fd5b506103e9610c90565b3480156106e557600080fd5b506103e96106f4366004613fca565b610c9f565b34801561070557600080fd5b50610483610cba565b34801561071a57600080fd5b50610436610729366004613fca565b610ce0565b34801561073a57600080fd5b50610436610cf2565b34801561074f57600080fd5b50610436610cf8565b34801561076457600080fd5b50610436610cfe565b34801561077957600080fd5b50610782610d04565b6040516103cb9190614cc2565b34801561079b57600080fd5b506104366107aa366004613fca565b610d13565b3480156107bb57600080fd5b506104366107ca366004613fca565b610d25565b3480156107db57600080fd5b506103e9610d37565b3480156107f057600080fd5b506103e9610d46565b34801561080557600080fd5b50610436610814366004613fca565b610d55565b34801561082557600080fd5b50610839610834366004614070565b610d67565b6040516103cb9c9b9a99989796959493929190614c0f565b34801561085d57600080fd5b5061087161086c366004613fca565b610dd9565b005b34801561087f57600080fd5b5061089361088e366004614070565b610eae565b6040516103cb989796959493929190614b98565b3480156108b357600080fd5b506104366108c2366004613fe8565b610f00565b3480156108d357600080fd5b506103e9610f1d565b3480156108e857600080fd5b50610436610f2c565b3480156108fd57600080fd5b5061043661090c366004613fca565b610f32565b34801561091d57600080fd5b506103e9610f44565b34801561093257600080fd5b50610436610f53565b34801561094757600080fd5b50610436610f59565b34801561095c57600080fd5b50610436610f63565b34801561097157600080fd5b50610871610980366004613fca565b610f69565b34801561099157600080fd5b50610436610f99565b3480156109a657600080fd5b50610436610f9f565b3480156109bb57600080fd5b506103e9610fa5565b3480156109d057600080fd5b506103e9610fb4565b3480156109e557600080fd5b5061050d6109f43660046140fa565b610fc3565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b6000806000600160005414610b355760405162461bcd60e51b815260040161039090614e71565b6002600055603d5460ff1615610b5d5760405162461bcd60e51b815260040161039090614ce1565b610b68868686611044565b600160005591989097509095509350505050565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610cd1611503565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b610de1610cba565b610dfd5760405162461bcd60e51b815260040161039090614dc1565b63366f513b60e01b600081905260056020527ff4ddf72383625730676ae80f4e72796030e502d9e3dce442215377f640213bd6546001600160a01b031690610e459083611507565b610e56637c6f10e960e11b83611507565b6f098dec2dc86d8dee6d2dccee6aed2e8d60831b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b6509184e72a00081565b60285481565b610f71610cba565b610f8d5760405162461bcd60e51b815260040161039090614dc1565b610f9681611583565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6000806000600160005414610fea5760405162461bcd60e51b815260040161039090614e71565b6002600055603d5460ff16156110125760405162461bcd60e51b815260040161039090614ce1565b61102e8888888860405180602001604052806000815250611605565b6001600055919a90995090975095505050505050565b60008080836110655760405162461bcd60e51b815260040161039090614e01565b600060066000888152602001908152602001600020905060006007600083600101548152602001908152602001600020905061125c82604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508260405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016004820154815260200160058201548152602001600682015481525050611f3f565b8160040154861161126d5785611273565b81600401545b9450600061143e83604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508360405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016004820154815260200160058201548152602001600682015481525050888b611fda565b90508015611467576002820154600b840154611467916001600160a01b03908116911683612048565b826004015486141561147f57826005015494506114ad565b6114aa836004015461149e88866005015461216e90919063ffffffff16565b9063ffffffff6121b116565b94505b60038201546001600160a01b0316935084156114e85760058301546114d8908663ffffffff6121f316565b60058401556114e8848987612235565b6114f783838888600080612266565b50505093509350939050565b3390565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b038316908117909155156115625761155c600d6001600160e01b0319841663ffffffff61257716565b5061157f565b61157d600d6001600160e01b0319841663ffffffff6125bf16565b505b5050565b6001600160a01b0381166115a95760405162461bcd60e51b815260040161039090614d01565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008080856116265760405162461bcd60e51b815260040161039090614e51565b6000600660008a8152602001908152602001600020905060006007600083600101548152602001908152602001600020905061181d82604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508260405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016004820154815260200160058201548152602001600682015481525050611f3f565b8160050154881161182e5787611834565b81600501545b9750600082600501548914806118475750875b15611a6e578260050154891461187b57611876836005015461149e8b866004015461216e90919063ffffffff16565b611881565b82600401545b9550856118a05760405162461bcd60e51b815260040161039090614e31565b611a6783604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508360405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016004820154815260200160058201548152602001600682015481525050888d611fda565b9050611a72565b5060005b600080611c3e85604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508560405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160048201548152602001600582015481526020016006820154815250508d868e8e612680565b9d509850909250905082611e835781975084600401548214611c76576005850154611c739061149e8a8463ffffffff61216e16565b97505b87611c935760405162461bcd60e51b815260040161039090614e31565b611e5a85604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508560405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160048201548152602001600582015481526020016006820154815250508a8f611fda565b9250611e7c83611e70898563ffffffff61279c16565b9063ffffffff6121f316565b9650611e87565b8192505b82611ea45760405162461bcd60e51b815260040161039090614e81565b8015611ec5576005850154611ebf908263ffffffff6121f316565b60058601555b6002840154600b860154611ee6916001600160a01b039081169116856127c1565b89611efe5760028401546001600160a01b0316611f0d565b60038401546001600160a01b03165b95508615611f2057611f20868d89612235565b611f2f85858a848f6001612266565b5050505050955095509592505050565b8160600151611f605760405162461bcd60e51b815260040161039090614e61565b8161014001516001600160a01b0316336001600160a01b03161480611fa0575081516000908152600a6020908152604080832033845290915290205460ff165b611fbc5760405162461bcd60e51b815260040161039090614dc1565b805161157f5760405162461bcd60e51b815260040161039090614df1565b60008281611fe9868884612831565b9050600081831061200257509081900390600090612020565b50600091908190039081156120205761202087606001518684612235565b801561203a5761203a8760600151896101600151836127c1565b50909150505b949350505050565b801561215057346120645761205f833384846129d0565b61214b565b602d546001600160a01b038481169116146120915760405162461bcd60e51b815260040161039090614d21565b803410156120b15760405162461bcd60e51b815260040161039090614ee1565b602d60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561210157600080fd5b505af1158015612115573d6000803e3d6000fd5b505050506001600160a01b0383163014905061213757612137833084846129d0565b8034111561214b5761214b33823403612a27565b61157d565b341561157d5760405162461bcd60e51b815260040161039090614d21565b60008261217d575060006121ab565b8282028284828161218a57fe5b04146121a85760405162461bcd60e51b815260040161039090614db1565b90505b92915050565b60006121a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ac3565b60006121a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612afa565b801561157d57602d546001600160a01b038481169116141561225b5761214b8282612b26565b61157d8383836127c1565b6122708685612bfd565b60028054908601546003870154600489015460058a01546040516001600160a01b0395861695600095869586956060958a956317f8680960e11b956122be9581169416929190602401614ac5565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516122fc919061495a565b600060405180830381855afa9150503d8060008114612337576040519150601f19603f3d011682016040523d82523d6000602084013e61233c565b606091505b509150915060018214156123595760208101519350604081015192505b600086600281111561236757fe5b1480612375575060048b0154155b806123835750896005015484115b61239f5760405162461bcd60e51b815260040161039090614dd1565b61256a8a60405180610100016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160048201548152602001600582015481526020016006820154815250508c604051806101800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600b820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508b8b878c8a8d612cd4565b5050505050505050505050565b60006125838383612e2d565b6125b757506001808301805480830180835560009283526020808420909201859055848352908590526040909120556121ab565b5060006121ab565b60006125cb8383612e2d565b156125b7576000828152602084905260409020546001840154600019918201910180821461264357600085600101828154811061260457fe5b906000526020600020015490508086600101848154811061262157fe5b6000918252602080832090910192909255918252869052604090206001830190555b6000848152602086905260408120556001850180548061265f57fe5b600190038181906000526020600020016000905590556001925050506121ab565b6000806000806000806126978c8c8c8c8c8c612e42565b9450909250905087156126fc57889550858211156126e3576126bf8b60600151878403612ed2565b156126df576126da8b606001518d6101400151888503612235565b6126e3565b8195505b808a116126f15760006126f5565b808a035b935061277c565b89811461271b5760405162461bcd60e51b815260040161039090614de1565b8b60a001518a141561273457889550888203935061277c565b8b608001518210612774578b6080015195508b60800151820393506127698b608001518d6101400151838f60a0015103612235565b5060a08b015161277c565b819550600093505b898111612789578961278b565b805b945050509650965096509692505050565b6000828201838110156121a85760405162461bcd60e51b815260040161039090614d11565b801561157d576127e16001600160a01b038416838363ffffffff612fd816565b816001600160a01b0316836001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a1836040516128249190614ef1565b60405180910390a3505050565b60006128468361016001518560600151613031565b82516000908152600c602090815260408083206101608701516001600160a01b039081168552600b845282852060608a0151909116855290925290912060e08501514290811115612898575060e08501515b6128b783876000015189606001518a608001518a610140015186613115565b600086608001518610156128e857608087015184546128e1919061149e908963ffffffff61216e16565b90506128ec565b5082545b83546128fe908263ffffffff6121f316565b84556001830154612915908263ffffffff6121f316565b600184015560e0870151600090612932908463ffffffff6121f316565b9050612944818363ffffffff61216e16565b9050612959816201518063ffffffff6121b116565b9050876080015187101561298657600185015461297c908263ffffffff6121f316565b600186015561298e565b600060018601555b83546129a0908863ffffffff6121f316565b845560028401548181116129b55760006129b9565b8181035b6002909501949094559450505050505b9392505050565b8015612a21576001600160a01b038316301415612a0657612a016001600160a01b038516838363ffffffff612fd816565b612a21565b612a216001600160a01b03851684848463ffffffff61317016565b50505050565b80471015612a475760405162461bcd60e51b815260040161039090614d71565b6000826001600160a01b031682604051612a6090614966565b60006040518083038185875af1925050503d8060008114612a9d576040519150601f19603f3d011682016040523d82523d6000602084013e612aa2565b606091505b505090508061157d5760405162461bcd60e51b815260040161039090614d61565b60008183612ae45760405162461bcd60e51b81526004016103909190614cd0565b506000838581612af057fe5b0495945050505050565b60008184841115612b1e5760405162461bcd60e51b81526004016103909190614cd0565b505050900390565b801561157f57602d546001600160a01b03164780831115612ba257604051632e1a7d4d60e01b81526001600160a01b03831690632e1a7d4d90612b6f9084870390600401614ef1565b600060405180830381600087803b158015612b8957600080fd5b505af1158015612b9d573d6000803e3d6000fd5b505050505b612bac8484612a27565b836001600160a01b0316826001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a185604051612bef9190614ef1565b60405180910390a350505050565b80612c1a5760405162461bcd60e51b815260040161039090614e21565b8160040154811415612cb65760006004830181905560038301805460ff1916905542600784015560028301558154612c5a90600f9063ffffffff6125bf16565b508154600b8301546001600160a01b03166000908152601160205260409020612c889163ffffffff6125bf16565b508154600a8301546001600160a01b0316600090815260126020526040902061155c9163ffffffff6125bf16565b6004820154612ccb908263ffffffff6121f316565b60048301555050565b6000816002811115612ce257fe5b1415612d5b5786600001518761016001516001600160a01b03168861014001516001600160a01b03167f6349c1a02ec126f7f4fc6e6837e1859006e90e9901635c442d29271e77b96fb6338c606001518d608001518c8c8c8b604051612d4e979695949392919061497f565b60405180910390a4612e23565b6001816002811115612d6957fe5b1415612e23578215612d9157612d8e6ec097ce7bc90715b34b9f1000000000846121b1565b92505b8115612db457612db16f4b3b4ca85a86c47a098a224000000000836121b1565b91505b86600001518761016001516001600160a01b03168861014001516001600160a01b03167f2ed7b29b4ca95cf3bb9a44f703872a66e6aa5e8f07b675fa9a5c124a1e5d73528b608001518c60600151338b8d8b8b604051612e1a9796959493929190614a02565b60405180910390a45b5050505050505050565b60009081526020919091526040902054151590565b6000806000612e7b896000015189608001518a606001518c61014001518b8e60a001518b612e71576000612e73565b8c5b60008c613194565b9194509250905085831015612ea25760405162461bcd60e51b815260040161039090614da1565b8860a00151821115612ec65760405162461bcd60e51b815260040161039090614d51565b96509650969350505050565b600254602d54604051630a7549df60e21b8152600092839283926001600160a01b03928316926329d5277c92612f10928a92909116906004016149e7565b604080518083038186803b158015612f2757600080fd5b505afa158015612f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f5f91908101906141c3565b90925090506000612f7a8261149e878663ffffffff61216e16565b90507fe46714304b3de2a7b58afcc0bafe0a6deabd30a647332cb479124142fdb14b0b6509184e72a000821186836509184e72a000604051612fbf9493929190614b7d565b60405180910390a16509184e72a0001095945050505050565b60405161157d90849063a9059cbb60e01b90612ffa9086908690602401614b39565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526132f2565b6001600160a01b038083166000908152600b6020908152604080832093851683529290529081206001810154909190158015906130715750600482015415155b15613109576130a86201518061149e846001015461309c8660040154426121f390919063ffffffff16565b9063ffffffff61216e16565b42600484015560028301549091508111156130c4575060028101545b8015612a015760038201546130df908263ffffffff61279c16565b600383015560028201546130f9908263ffffffff6121f316565b6002830155612a018484836133d7565b42600483015550505050565b600061314b6a07259756a8d6199800000061149e60155461309c8b6000015461309c8d60020154896121f390919063ffffffff16565b600288018390559050801561316757613167838787878561346e565b50505050505050565b604051612a219085906323b872dd60e01b90612ffa90879087908790602401614a9d565b6040805160a0810182526001600160a01b03808b16825289811660208084019190915230838501819052606080850191909152918a166080840152835191820184528882528101879052918201859052600091829182916131f991908e8888866137b8565b90935091506132088b836139dd565b600254602754604051631e2c62d360e01b81526001600160a01b0390921691631e2c62d391613241918f918f9188918a91600401614aed565b60206040518083038186803b15801561325957600080fd5b505afa15801561326d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061329191908101906141a5565b9050896001600160a01b03168b6001600160a01b03168d7fb4eb3c9b62efcce7021cba5fd9cd0c44df91c2272806ccc5e57df7c912e8d7168c86886040516132db93929190614b54565b60405180910390a499509950999650505050505050565b613304826001600160a01b0316613aab565b6133205760405162461bcd60e51b815260040161039090614ed1565b60006060836001600160a01b03168360405161333c919061495a565b6000604051808303816000865af19150503d8060008114613379576040519150601f19603f3d011682016040523d82523d6000602084013e61337e565b606091505b5091509150816133a05760405162461bcd60e51b815260040161039090614d31565b805115612a2157808060200190516133bb9190810190614052565b612a215760405162461bcd60e51b815260040161039090614ea1565b60006133fb68056bc75e2d6310000061149e6015548561216e90919063ffffffff16565b9050613408848483613ae4565b613422838561341d858563ffffffff6121f316565b6127c1565b6001600160a01b038085169084167f220e66e3e759e1382aa86cd8af5abca05ebf3ad564f223ae62d977678337272a613461858563ffffffff6121f316565b604051612bef9190614ef1565b602f546002546001600160a01b038581166000908152603c6020908152604080832088851684529091528120549093929190911690156134d1576001600160a01b038087166000908152603c602090815260408083209389168352929052205491505b6037546000906060906001600160a01b038085169163d138f9a160e01b918b911661350f68056bc75e2d6310000061149e8c8b63ffffffff61216e16565b60405160240161352193929190614a9d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161355f919061495a565b600060405180830381855afa9150503d806000811461359a576040519150601f19603f3d011682016040523d82523d6000602084013e61359f565b606091505b509150915060018214156135b557602081015194505b84156137ac5760375460385460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926135f1929116908990600401614b39565b602060405180830381600087803b15801561360b57600080fd5b505af115801561361f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136439190810190614052565b50603854603f546040516000926001600160a01b03169161366a918e918a91602401614b54565b60408051601f198184030181529181526020820180516001600160e01b0316630efe6a8b60e01b1790525161369f919061495a565b6000604051808303816000865af19150503d80600081146136dc576040519150601f19603f3d011682016040523d82523d6000602084013e6136e1565b606091505b50509050801561375857601f546136fe908763ffffffff61279c16565b601f55603754603f546040518c926001600160a01b0390811692908f16917ff41c644671512f1cda76abfe6038e3d7d526c1377a5a8c692f81703901db21509161374b918b918d91614f27565b60405180910390a461256a565b603754603f546040518c926001600160a01b0390811692908f16917f483f67ea49f76ac15e15bbad68b52788ca47d50aef1e4acfe95e5e307e710812916137a2918b918d91614f27565b60405180910390a4505b50505050505050505050565b845160009081901515806137cf5750602087015115155b6137eb5760405162461bcd60e51b815260040161039090614e41565b60208701516137fc57865160208801525b6020870151875111156138215760405162461bcd60e51b815260040161039090614d81565b6000806000876138de5760408a015161389d5785156138525761384b8a60005b6020020151613b65565b9050613866565b6138638a60005b6020020151613b95565b90505b80156138985760808b01518b5161388991908b908e60015b602002015185613bb9565b895161389590826121f3565b8a525b6138de565b85156138b5576138ae8a6002613841565b90506138c3565b6138c08a6002613859565b90505b80156138de5760408a01516138d8908261279c565b60408b01525b8651156138fd5760405162461bcd60e51b815260040161039090614e91565b6139078b8b613cfd565b60408c0151919450925061395357895182146139355760405162461bcd60e51b815260040161039090614ec1565b801561394e5761394b828263ffffffff61279c16565b91505b6139cd565b60208a01518211156139775760405162461bcd60e51b815260040161039090614d41565b60408a015183101561399b5760405162461bcd60e51b815260040161039090614cf1565b80156139cd5760808b015160208c01516139ba91908b908e600061387e565b6139ca838263ffffffff6121f316565b92505b5090999098509650505050505050565b602954801561157d57602d546000906001600160a01b0385811691161415613a06575081613a8b565b600254604051635967aa7560e11b81526001600160a01b039091169063b2cf54ea90613a389087908790600401614b39565b60206040518083038186803b158015613a5057600080fd5b505afa158015613a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613a8891908101906141a5565b90505b81811115612a215760405162461bcd60e51b815260040161039090614d91565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590612040575050151592915050565b801561157d576001600160a01b038216600090815260166020526040902054613b13908263ffffffff61279c16565b6001600160a01b0380841660008181526016602052604090819020939093559151908516907f40a75ae5f7a5336e75f7c7977e12c4b46a9ac0f30de01a2d5b6c1a4f4af6358790612824908590614ef1565b60006121ab68056bc75e2d63100000613b89603e548561216e90919063ffffffff16565b9063ffffffff613e0f16565b60006121ab68056bc75e2d63100000613b896018548561216e90919063ffffffff16565b808015613cf5576001600160a01b038681166000908152603360205260409020541615613c63576001600160a01b03808716600090815260336020526040902054613c079116878684613e51565b5050613c60613c2e68056bc75e2d6310000061149e6039548561216e90919063ffffffff16565b611e70613c5368056bc75e2d6310000061149e6020548761216e90919063ffffffff16565b849063ffffffff6121f316565b90505b6001600160a01b038416600090815260196020526040902054613c8c908263ffffffff61279c16565b6001600160a01b03808616600081815260196020526040908190209390935591518792918916907fb23479169712c443e6b00fb0cec3506a5f5926f541df4243d313e11c8c5c71ed90613ce0908690614ef1565b60405180910390a4613cf5868686868661346e565b505050505050565b815160208084015160408086015160608781015187519588015188850151945160009889989497630957ba1160e21b97613d44979296919592949293919291602401614a2a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260035491519092506000916001600160a01b031690613d9690849061495a565b600060405180830381855af49150503d8060008114613dd1576040519150601f19603f3d011682016040523d82523d6000602084013e613dd6565b606091505b509250905080613df85760405162461bcd60e51b815260040161039090614eb1565b602082015193506040820151925050509250929050565b60006121a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613eea565b6031546040516306a688ff60e11b815260009182916001600160a01b0390911690630d4d11fe90613e8c908990899089908990600401614a5f565b6040805180830381600087803b158015613ea557600080fd5b505af1158015613eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613edd91908101906141c3565b9097909650945050505050565b60008183613f0b5760405162461bcd60e51b81526004016103909190614cd0565b5083613f19575060006129c9565b6000836001860381613f2757fe5b0460010195945050505050565b80356121ab8161508b565b80356121ab8161509f565b80516121ab8161509f565b80356121ab816150a8565b80356121ab816150b1565b600082601f830112613f7c57600080fd5b8135613f8f613f8a82614fd1565b614faa565b91508082526020830160208301858383011115613fab57600080fd5b613fb6838284615049565b50505092915050565b80516121ab816150a8565b600060208284031215613fdc57600080fd5b60006120408484613f34565b60008060408385031215613ffb57600080fd5b60006140078585613f34565b925050602061401885828601613f34565b9150509250929050565b6000806040838503121561403557600080fd5b60006140418585613f34565b925050602061401885828601613f55565b60006020828403121561406457600080fd5b60006120408484613f4a565b60006020828403121561408257600080fd5b60006120408484613f55565b600080604083850312156140a157600080fd5b60006140078585613f55565b6000806000606084860312156140c257600080fd5b60006140ce8686613f55565b93505060206140df86828701613f34565b92505060406140f086828701613f55565b9150509250925092565b600080600080600060a0868803121561411257600080fd5b600061411e8888613f55565b955050602061412f88828901613f34565b945050604061414088828901613f55565b935050606061415188828901613f3f565b925050608086013567ffffffffffffffff81111561416e57600080fd5b61417a88828901613f6b565b9150509295509295909350565b60006020828403121561419957600080fd5b60006120408484613f60565b6000602082840312156141b757600080fd5b60006120408484613fbf565b600080604083850312156141d657600080fd5b60006141e28585613fbf565b925050602061401885828601613fbf565b6141fc81615037565b82525050565b6141fc8161500b565b6141fc81615016565b6141fc8161501b565b600061422882614ff9565b6142328185614ffd565b9350614242818560208601615055565b9290920192915050565b6141fc8161503e565b600061426082614ff9565b61426a8185615002565b935061427a818560208601615055565b61428381615081565b9093019392505050565b600061429a600683615002565b6514185d5cd95960d21b815260200192915050565b60006142bc601b83615002565b7f696e73756666696369656e742073776170206c69717569646974790000000000815260200192915050565b60006142f5602683615002565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b600061433d601b83615002565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614376601083615002565b6f1ddc9bdb99c8185cdcd95d081cd95b9d60821b815260200192915050565b60006143a2602083615002565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b60006143db601383615002565b72737761702066696c6c20746f6f206c6172676560681b815260200192915050565b600061440a601783615002565b7f65786365737369766520736f7572636520616d6f756e74000000000000000000815260200192915050565b6000614443603a83615002565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b60006144a2601d83615002565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b60006144db601c83615002565b7f736f75726365416d6f756e74206c6172676572207468616e206d617800000000815260200192915050565b6000614514600e83615002565b6d7377617020746f6f206c6172676560901b815260200192915050565b600061453e601883615002565b7f696e73756666696369656e74206465737420616d6f756e740000000000000000815260200192915050565b6000614577602183615002565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006145ba600c83615002565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006145e2601283615002565b713ab73432b0b63a343c903837b9b4ba34b7b760711b815260200192915050565b6000614610600a83615002565b6939bbb0b81032b93937b960b11b815260200192915050565b6000614636601583615002565b746c6f616e506172616d73206e6f742065786973747360581b815260200192915050565b6000614667601283615002565b7106465706f736974416d6f756e74203d3d20360741b815260200192915050565b6000614695601483615002565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b60006146c5601083615002565b6f6e6f7468696e6720746f20636c6f736560801b815260200192915050565b60006146f1601483615002565b7306c6f616e436c6f7365416d6f756e74203d3d20360641b815260200192915050565b6000614721602e83615002565b7f6d696e206f72206d617820736f7572636520746f6b656e20616d6f756e74206e81526d1959591cc81d1bc81899481cd95d60921b602082015260400192915050565b60006121ab600083614ffd565b600061477e600f83615002565b6e073776170416d6f756e74203d3d203608c1b815260200192915050565b60006147a9600e83615002565b6d1b1bd85b881a5cc818db1bdcd95960921b815260200192915050565b60006147d3600c83615002565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b60006147fb601b83615002565b7f636c6f7365416d6f756e74206973203020616674657220737761700000000000815260200192915050565b6000614834600d83615002565b6c696e76616c696420737461746560981b815260200192915050565b600061485d602a83615002565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006148a9600b83615002565b6a1cddd85c0819985a5b195960aa1b815260200192915050565b60006148d0601683615002565b751cddd85c081d1bdbc81b185c99d9481d1bc8199a5b1b60521b815260200192915050565b6000614902601f83615002565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b600061493b601083615002565b6f3737ba1032b737bab3b41032ba3432b960811b815260200192915050565b60006129c9828461421d565b60006121ab82614764565b602081016121ab8284614202565b60e0810161498d828a6141f3565b61499a6020830189614202565b6149a76040830188614202565b6149b46060830187614214565b6149c16080830186614214565b6149ce60a0830185614214565b6149db60c0830184614214565b98975050505050505050565b604081016149f58285614202565b6129c96020830184614202565b60e08101614a10828a614202565b614a1d6020830189614202565b6149a760408301886141f3565b60e08101614a38828a614202565b614a456020830189614202565b614a526040830188614202565b6149b46060830187614202565b60808101614a6d8287614202565b614a7a6020830186614202565b614a876040830185614202565b614a946060830184614214565b95945050505050565b60608101614aab8286614202565b614ab86020830185614202565b6120406040830184614214565b60808101614ad38287614202565b614ae06020830186614202565b614a876040830185614214565b60a08101614afb8288614202565b614b086020830187614202565b614b156040830186614214565b614b226060830185614214565b614b2f6080830184614214565b9695505050505050565b60408101614b478285614202565b6129c96020830184614214565b60608101614b628286614202565b614ab86020830185614214565b602081016121ab828461420b565b60808101614b8b828761420b565b614ae06020830186614214565b6101008101614ba7828b614214565b614bb4602083018a61420b565b614bc16040830189614202565b614bce6060830188614202565b614bdb6080830187614202565b614be860a0830186614214565b614bf560c0830185614214565b614c0260e0830184614214565b9998505050505050505050565b6101808101614c1e828f614214565b614c2b602083018e614214565b614c38604083018d614214565b614c45606083018c61420b565b614c52608083018b614214565b614c5f60a083018a614214565b614c6c60c0830189614214565b614c7960e0830188614214565b614c87610100830187614214565b614c95610120830186614214565b614ca3610140830185614202565b614cb1610160830184614202565b9d9c50505050505050505050505050565b602081016121ab828461424c565b602080825281016121a88184614255565b602080825281016121ab8161428d565b602080825281016121ab816142af565b602080825281016121ab816142e8565b602080825281016121ab81614330565b602080825281016121ab81614369565b602080825281016121ab81614395565b602080825281016121ab816143ce565b602080825281016121ab816143fd565b602080825281016121ab81614436565b602080825281016121ab81614495565b602080825281016121ab816144ce565b602080825281016121ab81614507565b602080825281016121ab81614531565b602080825281016121ab8161456a565b602080825281016121ab816145ad565b602080825281016121ab816145d5565b602080825281016121ab81614603565b602080825281016121ab81614629565b602080825281016121ab8161465a565b602080825281016121ab81614688565b602080825281016121ab816146b8565b602080825281016121ab816146e4565b602080825281016121ab81614714565b602080825281016121ab81614771565b602080825281016121ab8161479c565b602080825281016121ab816147c6565b602080825281016121ab816147ee565b602080825281016121ab81614827565b602080825281016121ab81614850565b602080825281016121ab8161489c565b602080825281016121ab816148c3565b602080825281016121ab816148f5565b602080825281016121ab8161492e565b602081016121ab8284614214565b60608101614f0d8286614214565b614f1a6020830185614214565b6120406040830184614202565b60608101614b628286614214565b60a08101614f438288614214565b614b086020830187614214565b60c08101614f5e8289614214565b614f6b6020830188614214565b614f786040830187614214565b614f856060830186614214565b614f926080830185614214565b614f9f60a0830184614214565b979650505050505050565b60405181810167ffffffffffffffff81118282101715614fc957600080fd5b604052919050565b600067ffffffffffffffff821115614fe857600080fd5b506020601f91909101601f19160190565b5190565b919050565b90815260200190565b60006121ab8261502b565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b60006121ab825b60006121ab8261500b565b82818337506000910152565b60005b83811015615070578181015183820152602001615058565b83811115612a215750506000910152565b601f01601f191690565b6150948161500b565b8114610f9657600080fd5b61509481615016565b6150948161501b565b6150948161501e56fea365627a7a72315820909f47cdbe6bcd7333144117f30f39bd528209d834828d4d83253fa4da74e9e76c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCD5D808D GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xF0E085F5 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF6DDC8B3 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x99A JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x9AF JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x9C4 JUMPI DUP1 PUSH4 0xF8DE21D2 EQ PUSH2 0x9D9 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x950 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x965 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x985 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xD485045E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x8F1 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x911 JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x926 JUMPI DUP1 PUSH4 0xEE54A4EC EQ PUSH2 0x93B JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x8A7 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x8C7 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x8DC JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB7E15241 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xBDEE453C GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x7F9 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x819 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x851 JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x873 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x7AF JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x7CF JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x7E4 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xACC04348 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x743 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x758 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x76D JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x78F JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x6F9 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x70E JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x72E JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x7420CA3E GT PUSH2 0x23E JUMPI DUP1 PUSH4 0x7A8FAEB8 GT PUSH2 0x218 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x69A JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x6AF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x6D9 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x65B JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x670 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x685 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x574442CC GT PUSH2 0x27A JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x5D5 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x5EA JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x61B JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x63B JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x591 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x5A6 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x2F470764 GT PUSH2 0x30D JUMPI DUP1 PUSH4 0x366F513B GT PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x366F513B EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x51C JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x53C JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x55C JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x2F470764 EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x4DA JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x1B7BDE74 GT PUSH2 0x349 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x490 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3D4 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x3F6 JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E11 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B9 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x9F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F50 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xA39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4971 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x411 CALLDATASIZE PUSH1 0x4 PUSH2 0x4187 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x431 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FE8 JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4EF1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xA80 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x47E CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4B6F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xAB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xAB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B9 PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4022 JUMP JUMPDEST PUSH2 0xABC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x4F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xAFC JUMP JUMPDEST PUSH2 0x50D PUSH2 0x508 CALLDATASIZE PUSH1 0x4 PUSH2 0x40AD JUMP JUMPDEST PUSH2 0xB0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4EFF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x537 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xB7C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x557 CALLDATASIZE PUSH1 0x4 PUSH2 0x408E JUMP JUMPDEST PUSH2 0xB8E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x568 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x577 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xBAE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xBC0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xBC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5C6 PUSH2 0x5C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4070 JUMP JUMPDEST PUSH2 0xBCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F27 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xBED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x60A PUSH2 0x605 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FE8 JUMP JUMPDEST PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x636 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xC2D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x647 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x656 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xC42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x667 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC6C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC81 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xC87 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x6F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xC9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xCBA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x729 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xCE0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xCF2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xCF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xCFE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x782 PUSH2 0xD04 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x4CC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x7AA CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xD13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x7CA CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xD25 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xD37 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xD46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x814 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xD55 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x839 PUSH2 0x834 CALLDATASIZE PUSH1 0x4 PUSH2 0x4070 JUMP JUMPDEST PUSH2 0xD67 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x871 PUSH2 0x86C CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xDD9 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x893 PUSH2 0x88E CALLDATASIZE PUSH1 0x4 PUSH2 0x4070 JUMP JUMPDEST PUSH2 0xEAE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B98 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x8C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FE8 JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xF1D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x90C CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xF32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xF44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x947 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF59 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF63 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x871 PUSH2 0x980 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCA JUMP JUMPDEST PUSH2 0xF69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF99 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xFA5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xFB4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x50D PUSH2 0x9F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x40FA JUMP JUMPDEST PUSH2 0xFC3 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xB35 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E71 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB5D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CE1 JUMP JUMPDEST PUSH2 0xB68 DUP7 DUP7 DUP7 PUSH2 0x1044 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCD1 PUSH2 0x1503 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0xDE1 PUSH2 0xCBA JUMP JUMPDEST PUSH2 0xDFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DC1 JUMP JUMPDEST PUSH4 0x366F513B PUSH1 0xE0 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xF4DDF72383625730676AE80F4E72796030E502D9E3DCE442215377F640213BD6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xE45 SWAP1 DUP4 PUSH2 0x1507 JUMP JUMPDEST PUSH2 0xE56 PUSH4 0x7C6F10E9 PUSH1 0xE1 SHL DUP4 PUSH2 0x1507 JUMP JUMPDEST PUSH16 0x98DEC2DC86D8DEE6D2DCCEE6AED2E8D PUSH1 0x83 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH6 0x9184E72A000 DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xF71 PUSH2 0xCBA JUMP JUMPDEST PUSH2 0xF8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DC1 JUMP JUMPDEST PUSH2 0xF96 DUP2 PUSH2 0x1583 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xFEA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E71 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1012 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CE1 JUMP JUMPDEST PUSH2 0x102E DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1605 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP2 SWAP11 SWAP1 SWAP10 POP SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP4 PUSH2 0x1065 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E01 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH1 0x1 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH2 0x125C DUP3 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP3 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP PUSH2 0x1F3F JUMP JUMPDEST DUP2 PUSH1 0x4 ADD SLOAD DUP7 GT PUSH2 0x126D JUMPI DUP6 PUSH2 0x1273 JUMP JUMPDEST DUP2 PUSH1 0x4 ADD SLOAD JUMPDEST SWAP5 POP PUSH1 0x0 PUSH2 0x143E DUP4 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP9 DUP12 PUSH2 0x1FDA JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1467 JUMPI PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0xB DUP5 ADD SLOAD PUSH2 0x1467 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP4 PUSH2 0x2048 JUMP JUMPDEST DUP3 PUSH1 0x4 ADD SLOAD DUP7 EQ ISZERO PUSH2 0x147F JUMPI DUP3 PUSH1 0x5 ADD SLOAD SWAP5 POP PUSH2 0x14AD JUMP JUMPDEST PUSH2 0x14AA DUP4 PUSH1 0x4 ADD SLOAD PUSH2 0x149E DUP9 DUP7 PUSH1 0x5 ADD SLOAD PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21B1 AND JUMP JUMPDEST SWAP5 POP JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP DUP5 ISZERO PUSH2 0x14E8 JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH2 0x14D8 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x5 DUP5 ADD SSTORE PUSH2 0x14E8 DUP5 DUP10 DUP8 PUSH2 0x2235 JUMP JUMPDEST PUSH2 0x14F7 DUP4 DUP4 DUP9 DUP9 PUSH1 0x0 DUP1 PUSH2 0x2266 JUMP JUMPDEST POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x1562 JUMPI PUSH2 0x155C PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x2577 AND JUMP JUMPDEST POP PUSH2 0x157F JUMP JUMPDEST PUSH2 0x157D PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x25BF AND JUMP JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D01 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP6 PUSH2 0x1626 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E51 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH1 0x1 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH2 0x181D DUP3 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP3 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP PUSH2 0x1F3F JUMP JUMPDEST DUP2 PUSH1 0x5 ADD SLOAD DUP9 GT PUSH2 0x182E JUMPI DUP8 PUSH2 0x1834 JUMP JUMPDEST DUP2 PUSH1 0x5 ADD SLOAD JUMPDEST SWAP8 POP PUSH1 0x0 DUP3 PUSH1 0x5 ADD SLOAD DUP10 EQ DUP1 PUSH2 0x1847 JUMPI POP DUP8 JUMPDEST ISZERO PUSH2 0x1A6E JUMPI DUP3 PUSH1 0x5 ADD SLOAD DUP10 EQ PUSH2 0x187B JUMPI PUSH2 0x1876 DUP4 PUSH1 0x5 ADD SLOAD PUSH2 0x149E DUP12 DUP7 PUSH1 0x4 ADD SLOAD PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1881 JUMP JUMPDEST DUP3 PUSH1 0x4 ADD SLOAD JUMPDEST SWAP6 POP DUP6 PUSH2 0x18A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E31 JUMP JUMPDEST PUSH2 0x1A67 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP9 DUP14 PUSH2 0x1FDA JUMP JUMPDEST SWAP1 POP PUSH2 0x1A72 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C3E DUP6 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP6 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP14 DUP7 DUP15 DUP15 PUSH2 0x2680 JUMP JUMPDEST SWAP14 POP SWAP9 POP SWAP1 SWAP3 POP SWAP1 POP DUP3 PUSH2 0x1E83 JUMPI DUP2 SWAP8 POP DUP5 PUSH1 0x4 ADD SLOAD DUP3 EQ PUSH2 0x1C76 JUMPI PUSH1 0x5 DUP6 ADD SLOAD PUSH2 0x1C73 SWAP1 PUSH2 0x149E DUP11 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x216E AND JUMP JUMPDEST SWAP8 POP JUMPDEST DUP8 PUSH2 0x1C93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E31 JUMP JUMPDEST PUSH2 0x1E5A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP6 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP11 DUP16 PUSH2 0x1FDA JUMP JUMPDEST SWAP3 POP PUSH2 0x1E7C DUP4 PUSH2 0x1E70 DUP10 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x279C AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST SWAP7 POP PUSH2 0x1E87 JUMP JUMPDEST DUP2 SWAP3 POP JUMPDEST DUP3 PUSH2 0x1EA4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E81 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1EC5 JUMPI PUSH1 0x5 DUP6 ADD SLOAD PUSH2 0x1EBF SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x5 DUP7 ADD SSTORE JUMPDEST PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0xB DUP7 ADD SLOAD PUSH2 0x1EE6 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP6 PUSH2 0x27C1 JUMP JUMPDEST DUP10 PUSH2 0x1EFE JUMPI PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F0D JUMP JUMPDEST PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP6 POP DUP7 ISZERO PUSH2 0x1F20 JUMPI PUSH2 0x1F20 DUP7 DUP14 DUP10 PUSH2 0x2235 JUMP JUMPDEST PUSH2 0x1F2F DUP6 DUP6 DUP11 DUP5 DUP16 PUSH1 0x1 PUSH2 0x2266 JUMP JUMPDEST POP POP POP POP POP SWAP6 POP SWAP6 POP SWAP6 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x60 ADD MLOAD PUSH2 0x1F60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E61 JUMP JUMPDEST DUP2 PUSH2 0x140 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1FA0 JUMPI POP DUP2 MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1FBC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DC1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x157F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DF1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 PUSH2 0x1FE9 DUP7 DUP9 DUP5 PUSH2 0x2831 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x2002 JUMPI POP SWAP1 DUP2 SWAP1 SUB SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x2020 JUMP JUMPDEST POP PUSH1 0x0 SWAP2 SWAP1 DUP2 SWAP1 SUB SWAP1 DUP2 ISZERO PUSH2 0x2020 JUMPI PUSH2 0x2020 DUP8 PUSH1 0x60 ADD MLOAD DUP7 DUP5 PUSH2 0x2235 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x203A JUMPI PUSH2 0x203A DUP8 PUSH1 0x60 ADD MLOAD DUP10 PUSH2 0x160 ADD MLOAD DUP4 PUSH2 0x27C1 JUMP JUMPDEST POP SWAP1 SWAP2 POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2150 JUMPI CALLVALUE PUSH2 0x2064 JUMPI PUSH2 0x205F DUP4 CALLER DUP5 DUP5 PUSH2 0x29D0 JUMP JUMPDEST PUSH2 0x214B JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x2091 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D21 JUMP JUMPDEST DUP1 CALLVALUE LT ISZERO PUSH2 0x20B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4EE1 JUMP JUMPDEST PUSH1 0x2D PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ SWAP1 POP PUSH2 0x2137 JUMPI PUSH2 0x2137 DUP4 ADDRESS DUP5 DUP5 PUSH2 0x29D0 JUMP JUMPDEST DUP1 CALLVALUE GT ISZERO PUSH2 0x214B JUMPI PUSH2 0x214B CALLER DUP3 CALLVALUE SUB PUSH2 0x2A27 JUMP JUMPDEST PUSH2 0x157D JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x157D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D21 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x217D JUMPI POP PUSH1 0x0 PUSH2 0x21AB JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x218A JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x21A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DB1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21A8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2AC3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21A8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2AFA JUMP JUMPDEST DUP1 ISZERO PUSH2 0x157D JUMPI PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x225B JUMPI PUSH2 0x214B DUP3 DUP3 PUSH2 0x2B26 JUMP JUMPDEST PUSH2 0x157D DUP4 DUP4 DUP4 PUSH2 0x27C1 JUMP JUMPDEST PUSH2 0x2270 DUP7 DUP6 PUSH2 0x2BFD JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 DUP7 ADD SLOAD PUSH1 0x3 DUP8 ADD SLOAD PUSH1 0x4 DUP10 ADD SLOAD PUSH1 0x5 DUP11 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND SWAP6 PUSH1 0x0 SWAP6 DUP7 SWAP6 DUP7 SWAP6 PUSH1 0x60 SWAP6 DUP11 SWAP6 PUSH4 0x17F86809 PUSH1 0xE1 SHL SWAP6 PUSH2 0x22BE SWAP6 DUP2 AND SWAP5 AND SWAP3 SWAP2 SWAP1 PUSH1 0x24 ADD PUSH2 0x4AC5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x22FC SWAP2 SWAP1 PUSH2 0x495A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2337 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x233C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x2359 JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP2 ADD MLOAD SWAP3 POP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2367 JUMPI INVALID JUMPDEST EQ DUP1 PUSH2 0x2375 JUMPI POP PUSH1 0x4 DUP12 ADD SLOAD ISZERO JUMPDEST DUP1 PUSH2 0x2383 JUMPI POP DUP10 PUSH1 0x5 ADD SLOAD DUP5 GT JUMPDEST PUSH2 0x239F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DD1 JUMP JUMPDEST PUSH2 0x256A DUP11 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP13 PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x9 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP12 DUP12 DUP8 DUP13 DUP11 DUP14 PUSH2 0x2CD4 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2583 DUP4 DUP4 PUSH2 0x2E2D JUMP JUMPDEST PUSH2 0x25B7 JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x21AB JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x21AB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25CB DUP4 DUP4 PUSH2 0x2E2D JUMP JUMPDEST ISZERO PUSH2 0x25B7 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x2643 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2604 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2621 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x265F JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x21AB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2697 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x2E42 JUMP JUMPDEST SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP8 ISZERO PUSH2 0x26FC JUMPI DUP9 SWAP6 POP DUP6 DUP3 GT ISZERO PUSH2 0x26E3 JUMPI PUSH2 0x26BF DUP12 PUSH1 0x60 ADD MLOAD DUP8 DUP5 SUB PUSH2 0x2ED2 JUMP JUMPDEST ISZERO PUSH2 0x26DF JUMPI PUSH2 0x26DA DUP12 PUSH1 0x60 ADD MLOAD DUP14 PUSH2 0x140 ADD MLOAD DUP9 DUP6 SUB PUSH2 0x2235 JUMP JUMPDEST PUSH2 0x26E3 JUMP JUMPDEST DUP2 SWAP6 POP JUMPDEST DUP1 DUP11 GT PUSH2 0x26F1 JUMPI PUSH1 0x0 PUSH2 0x26F5 JUMP JUMPDEST DUP1 DUP11 SUB JUMPDEST SWAP4 POP PUSH2 0x277C JUMP JUMPDEST DUP10 DUP2 EQ PUSH2 0x271B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DE1 JUMP JUMPDEST DUP12 PUSH1 0xA0 ADD MLOAD DUP11 EQ ISZERO PUSH2 0x2734 JUMPI DUP9 SWAP6 POP DUP9 DUP3 SUB SWAP4 POP PUSH2 0x277C JUMP JUMPDEST DUP12 PUSH1 0x80 ADD MLOAD DUP3 LT PUSH2 0x2774 JUMPI DUP12 PUSH1 0x80 ADD MLOAD SWAP6 POP DUP12 PUSH1 0x80 ADD MLOAD DUP3 SUB SWAP4 POP PUSH2 0x2769 DUP12 PUSH1 0x80 ADD MLOAD DUP14 PUSH2 0x140 ADD MLOAD DUP4 DUP16 PUSH1 0xA0 ADD MLOAD SUB PUSH2 0x2235 JUMP JUMPDEST POP PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x277C JUMP JUMPDEST DUP2 SWAP6 POP PUSH1 0x0 SWAP4 POP JUMPDEST DUP10 DUP2 GT PUSH2 0x2789 JUMPI DUP10 PUSH2 0x278B JUMP JUMPDEST DUP1 JUMPDEST SWAP5 POP POP POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x21A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D11 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x157D JUMPI PUSH2 0x27E1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2FD8 AND JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2824 SWAP2 SWAP1 PUSH2 0x4EF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2846 DUP4 PUSH2 0x160 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x3031 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0x160 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP6 MSTORE PUSH1 0xB DUP5 MSTORE DUP3 DUP6 KECCAK256 PUSH1 0x60 DUP11 ADD MLOAD SWAP1 SWAP2 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0xE0 DUP6 ADD MLOAD TIMESTAMP SWAP1 DUP2 GT ISZERO PUSH2 0x2898 JUMPI POP PUSH1 0xE0 DUP6 ADD MLOAD JUMPDEST PUSH2 0x28B7 DUP4 DUP8 PUSH1 0x0 ADD MLOAD DUP10 PUSH1 0x60 ADD MLOAD DUP11 PUSH1 0x80 ADD MLOAD DUP11 PUSH2 0x140 ADD MLOAD DUP7 PUSH2 0x3115 JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x80 ADD MLOAD DUP7 LT ISZERO PUSH2 0x28E8 JUMPI PUSH1 0x80 DUP8 ADD MLOAD DUP5 SLOAD PUSH2 0x28E1 SWAP2 SWAP1 PUSH2 0x149E SWAP1 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x216E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x28EC JUMP JUMPDEST POP DUP3 SLOAD JUMPDEST DUP4 SLOAD PUSH2 0x28FE SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST DUP5 SSTORE PUSH1 0x1 DUP4 ADD SLOAD PUSH2 0x2915 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE PUSH1 0xE0 DUP8 ADD MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2932 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2944 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x216E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2959 DUP2 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x21B1 AND JUMP JUMPDEST SWAP1 POP DUP8 PUSH1 0x80 ADD MLOAD DUP8 LT ISZERO PUSH2 0x2986 JUMPI PUSH1 0x1 DUP6 ADD SLOAD PUSH2 0x297C SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SSTORE PUSH2 0x298E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP7 ADD SSTORE JUMPDEST DUP4 SLOAD PUSH2 0x29A0 SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST DUP5 SSTORE PUSH1 0x2 DUP5 ADD SLOAD DUP2 DUP2 GT PUSH2 0x29B5 JUMPI PUSH1 0x0 PUSH2 0x29B9 JUMP JUMPDEST DUP2 DUP2 SUB JUMPDEST PUSH1 0x2 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 SSTORE SWAP5 POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2A21 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH2 0x2A06 JUMPI PUSH2 0x2A01 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2FD8 AND JUMP JUMPDEST PUSH2 0x2A21 JUMP JUMPDEST PUSH2 0x2A21 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3170 AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x2A47 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D71 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x2A60 SWAP1 PUSH2 0x4966 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2A9D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2AA2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x157D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D61 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2AE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x4CD0 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x2AF0 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2B1E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x4CD0 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x157F JUMPI PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SELFBALANCE DUP1 DUP4 GT ISZERO PUSH2 0x2BA2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x2B6F SWAP1 DUP5 DUP8 SUB SWAP1 PUSH1 0x4 ADD PUSH2 0x4EF1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B9D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x2BAC DUP5 DUP5 PUSH2 0x2A27 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2BEF SWAP2 SWAP1 PUSH2 0x4EF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x2C1A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E21 JUMP JUMPDEST DUP2 PUSH1 0x4 ADD SLOAD DUP2 EQ ISZERO PUSH2 0x2CB6 JUMPI PUSH1 0x0 PUSH1 0x4 DUP4 ADD DUP2 SWAP1 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE TIMESTAMP PUSH1 0x7 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD SSTORE DUP2 SLOAD PUSH2 0x2C5A SWAP1 PUSH1 0xF SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x25BF AND JUMP JUMPDEST POP DUP2 SLOAD PUSH1 0xB DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2C88 SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x25BF AND JUMP JUMPDEST POP DUP2 SLOAD PUSH1 0xA DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x155C SWAP2 PUSH4 0xFFFFFFFF PUSH2 0x25BF AND JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH2 0x2CCB SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x4 DUP4 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2CE2 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2D5B JUMPI DUP7 PUSH1 0x0 ADD MLOAD DUP8 PUSH2 0x160 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH2 0x140 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6349C1A02EC126F7F4FC6E6837E1859006E90E9901635C442D29271E77B96FB6 CALLER DUP13 PUSH1 0x60 ADD MLOAD DUP14 PUSH1 0x80 ADD MLOAD DUP13 DUP13 DUP13 DUP12 PUSH1 0x40 MLOAD PUSH2 0x2D4E SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x497F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2E23 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2D69 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2E23 JUMPI DUP3 ISZERO PUSH2 0x2D91 JUMPI PUSH2 0x2D8E PUSH15 0xC097CE7BC90715B34B9F1000000000 DUP5 PUSH2 0x21B1 JUMP JUMPDEST SWAP3 POP JUMPDEST DUP2 ISZERO PUSH2 0x2DB4 JUMPI PUSH2 0x2DB1 PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP4 PUSH2 0x21B1 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP7 PUSH1 0x0 ADD MLOAD DUP8 PUSH2 0x160 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH2 0x140 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2ED7B29B4CA95CF3BB9A44F703872A66E6AA5E8F07B675FA9A5C124A1E5D7352 DUP12 PUSH1 0x80 ADD MLOAD DUP13 PUSH1 0x60 ADD MLOAD CALLER DUP12 DUP14 DUP12 DUP12 PUSH1 0x40 MLOAD PUSH2 0x2E1A SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2E7B DUP10 PUSH1 0x0 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD DUP13 PUSH2 0x140 ADD MLOAD DUP12 DUP15 PUSH1 0xA0 ADD MLOAD DUP12 PUSH2 0x2E71 JUMPI PUSH1 0x0 PUSH2 0x2E73 JUMP JUMPDEST DUP13 JUMPDEST PUSH1 0x0 DUP13 PUSH2 0x3194 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP DUP6 DUP4 LT ISZERO PUSH2 0x2EA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4DA1 JUMP JUMPDEST DUP9 PUSH1 0xA0 ADD MLOAD DUP3 GT ISZERO PUSH2 0x2EC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D51 JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x2D SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x29D5277C SWAP3 PUSH2 0x2F10 SWAP3 DUP11 SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x49E7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2F5F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41C3 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2F7A DUP3 PUSH2 0x149E DUP8 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x216E AND JUMP JUMPDEST SWAP1 POP PUSH32 0xE46714304B3DE2A7B58AFCC0BAFE0A6DEABD30A647332CB479124142FDB14B0B PUSH6 0x9184E72A000 DUP3 GT DUP7 DUP4 PUSH6 0x9184E72A000 PUSH1 0x40 MLOAD PUSH2 0x2FBF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH6 0x9184E72A000 LT SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x157D SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x2FFA SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x4B39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x32F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP2 SWAP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3071 JUMPI POP PUSH1 0x4 DUP3 ADD SLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x3109 JUMPI PUSH2 0x30A8 PUSH3 0x15180 PUSH2 0x149E DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x309C DUP7 PUSH1 0x4 ADD SLOAD TIMESTAMP PUSH2 0x21F3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x216E AND JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0x30C4 JUMPI POP PUSH1 0x2 DUP2 ADD SLOAD JUMPDEST DUP1 ISZERO PUSH2 0x2A01 JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH2 0x30DF SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x279C AND JUMP JUMPDEST PUSH1 0x3 DUP4 ADD SSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0x30F9 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SSTORE PUSH2 0x2A01 DUP5 DUP5 DUP4 PUSH2 0x33D7 JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP4 ADD SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x314B PUSH11 0x7259756A8D61998000000 PUSH2 0x149E PUSH1 0x15 SLOAD PUSH2 0x309C DUP12 PUSH1 0x0 ADD SLOAD PUSH2 0x309C DUP14 PUSH1 0x2 ADD SLOAD DUP10 PUSH2 0x21F3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP9 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x3167 JUMPI PUSH2 0x3167 DUP4 DUP8 DUP8 DUP8 DUP6 PUSH2 0x346E JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A21 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x2FFA SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x4A9D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP3 MSTORE DUP10 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS DUP4 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP11 AND PUSH1 0x80 DUP5 ADD MSTORE DUP4 MLOAD SWAP2 DUP3 ADD DUP5 MSTORE DUP9 DUP3 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE SWAP2 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x31F9 SWAP2 SWAP1 DUP15 DUP9 DUP9 DUP7 PUSH2 0x37B8 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x3208 DUP12 DUP4 PUSH2 0x39DD JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x27 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1E2C62D3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x1E2C62D3 SWAP2 PUSH2 0x3241 SWAP2 DUP16 SWAP2 DUP16 SWAP2 DUP9 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x4AED JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x326D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3291 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41A5 JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH32 0xB4EB3C9B62EFCCE7021CBA5FD9CD0C44DF91C2272806CCC5E57DF7C912E8D716 DUP13 DUP7 DUP9 PUSH1 0x40 MLOAD PUSH2 0x32DB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B54 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3304 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3AAB JUMP JUMPDEST PUSH2 0x3320 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4ED1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x333C SWAP2 SWAP1 PUSH2 0x495A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3379 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x337E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x33A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D31 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2A21 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x33BB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4052 JUMP JUMPDEST PUSH2 0x2A21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4EA1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33FB PUSH9 0x56BC75E2D63100000 PUSH2 0x149E PUSH1 0x15 SLOAD DUP6 PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3408 DUP5 DUP5 DUP4 PUSH2 0x3AE4 JUMP JUMPDEST PUSH2 0x3422 DUP4 DUP6 PUSH2 0x341D DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH2 0x27C1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP1 DUP5 AND PUSH32 0x220E66E3E759E1382AA86CD8AF5ABCA05EBF3AD564F223AE62D977678337272A PUSH2 0x3461 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2BEF SWAP2 SWAP1 PUSH2 0x4EF1 JUMP JUMPDEST PUSH1 0x2F SLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 ISZERO PUSH2 0x34D1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP2 POP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP12 SWAP2 AND PUSH2 0x350F PUSH9 0x56BC75E2D63100000 PUSH2 0x149E DUP13 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x216E AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3521 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A9D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x355F SWAP2 SWAP1 PUSH2 0x495A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x359A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x359F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x35B5 JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP5 POP JUMPDEST DUP5 ISZERO PUSH2 0x37AC JUMPI PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x35F1 SWAP3 SWAP2 AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4B39 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x360B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x361F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3643 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4052 JUMP JUMPDEST POP PUSH1 0x38 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x366A SWAP2 DUP15 SWAP2 DUP11 SWAP2 PUSH1 0x24 ADD PUSH2 0x4B54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xEFE6A8B PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x369F SWAP2 SWAP1 PUSH2 0x495A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x36DC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x36E1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 ISZERO PUSH2 0x3758 JUMPI PUSH1 0x1F SLOAD PUSH2 0x36FE SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x279C AND JUMP JUMPDEST PUSH1 0x1F SSTORE PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0xF41C644671512F1CDA76ABFE6038E3D7D526C1377A5A8C692F81703901DB2150 SWAP2 PUSH2 0x374B SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4F27 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x256A JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0x483F67EA49F76AC15E15BBAD68B52788CA47D50AEF1E4ACFE95E5E307E710812 SWAP2 PUSH2 0x37A2 SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4F27 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x37CF JUMPI POP PUSH1 0x20 DUP8 ADD MLOAD ISZERO ISZERO JUMPDEST PUSH2 0x37EB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E41 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH2 0x37FC JUMPI DUP7 MLOAD PUSH1 0x20 DUP9 ADD MSTORE JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD DUP8 MLOAD GT ISZERO PUSH2 0x3821 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D81 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH2 0x38DE JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x389D JUMPI DUP6 ISZERO PUSH2 0x3852 JUMPI PUSH2 0x384B DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x3B65 JUMP JUMPDEST SWAP1 POP PUSH2 0x3866 JUMP JUMPDEST PUSH2 0x3863 DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x3B95 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x3898 JUMPI PUSH1 0x80 DUP12 ADD MLOAD DUP12 MLOAD PUSH2 0x3889 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x1 JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP6 PUSH2 0x3BB9 JUMP JUMPDEST DUP10 MLOAD PUSH2 0x3895 SWAP1 DUP3 PUSH2 0x21F3 JUMP JUMPDEST DUP11 MSTORE JUMPDEST PUSH2 0x38DE JUMP JUMPDEST DUP6 ISZERO PUSH2 0x38B5 JUMPI PUSH2 0x38AE DUP11 PUSH1 0x2 PUSH2 0x3841 JUMP JUMPDEST SWAP1 POP PUSH2 0x38C3 JUMP JUMPDEST PUSH2 0x38C0 DUP11 PUSH1 0x2 PUSH2 0x3859 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x38DE JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x38D8 SWAP1 DUP3 PUSH2 0x279C JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MSTORE JUMPDEST DUP7 MLOAD ISZERO PUSH2 0x38FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4E91 JUMP JUMPDEST PUSH2 0x3907 DUP12 DUP12 PUSH2 0x3CFD JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x3953 JUMPI DUP10 MLOAD DUP3 EQ PUSH2 0x3935 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4EC1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x394E JUMPI PUSH2 0x394B DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x279C AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x39CD JUMP JUMPDEST PUSH1 0x20 DUP11 ADD MLOAD DUP3 GT ISZERO PUSH2 0x3977 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D41 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD DUP4 LT ISZERO PUSH2 0x399B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4CF1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x39CD JUMPI PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x39BA SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x0 PUSH2 0x387E JUMP JUMPDEST PUSH2 0x39CA DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST SWAP3 POP JUMPDEST POP SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP1 ISZERO PUSH2 0x157D JUMPI PUSH1 0x2D SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x3A06 JUMPI POP DUP2 PUSH2 0x3A8B JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5967AA75 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xB2CF54EA SWAP1 PUSH2 0x3A38 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4B39 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A64 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3A88 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41A5 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2A21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4D91 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2040 JUMPI POP POP ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x157D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3B13 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x279C AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0x40A75AE5F7A5336E75F7C7977E12C4B46A9AC0F30DE01A2D5B6C1A4F4AF63587 SWAP1 PUSH2 0x2824 SWAP1 DUP6 SWAP1 PUSH2 0x4EF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AB PUSH9 0x56BC75E2D63100000 PUSH2 0x3B89 PUSH1 0x3E SLOAD DUP6 PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3E0F AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AB PUSH9 0x56BC75E2D63100000 PUSH2 0x3B89 PUSH1 0x18 SLOAD DUP6 PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x3CF5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x3C63 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3C07 SWAP2 AND DUP8 DUP7 DUP5 PUSH2 0x3E51 JUMP JUMPDEST POP POP PUSH2 0x3C60 PUSH2 0x3C2E PUSH9 0x56BC75E2D63100000 PUSH2 0x149E PUSH1 0x39 SLOAD DUP6 PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1E70 PUSH2 0x3C53 PUSH9 0x56BC75E2D63100000 PUSH2 0x149E PUSH1 0x20 SLOAD DUP8 PUSH2 0x216E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21F3 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3C8C SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x279C AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD DUP8 SWAP3 SWAP2 DUP10 AND SWAP1 PUSH32 0xB23479169712C443E6B00FB0CEC3506A5F5926F541DF4243D313E11C8C5C71ED SWAP1 PUSH2 0x3CE0 SWAP1 DUP7 SWAP1 PUSH2 0x4EF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3CF5 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x346E JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD PUSH1 0x60 DUP8 DUP2 ADD MLOAD DUP8 MLOAD SWAP6 DUP9 ADD MLOAD DUP9 DUP6 ADD MLOAD SWAP5 MLOAD PUSH1 0x0 SWAP9 DUP10 SWAP9 SWAP5 SWAP8 PUSH4 0x957BA11 PUSH1 0xE2 SHL SWAP8 PUSH2 0x3D44 SWAP8 SWAP3 SWAP7 SWAP2 SWAP6 SWAP3 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 PUSH1 0x24 ADD PUSH2 0x4A2A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE PUSH1 0x3 SLOAD SWAP2 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x3D96 SWAP1 DUP5 SWAP1 PUSH2 0x495A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3DD1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DD6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0x3DF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x4EB1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP3 ADD MLOAD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21A8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x3EEA JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x40 MLOAD PUSH4 0x6A688FF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD4D11FE SWAP1 PUSH2 0x3E8C SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A5F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3EA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EB9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3EDD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41C3 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x3F0B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x4CD0 JUMP JUMPDEST POP DUP4 PUSH2 0x3F19 JUMPI POP PUSH1 0x0 PUSH2 0x29C9 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 DUP7 SUB DUP2 PUSH2 0x3F27 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x21AB DUP2 PUSH2 0x508B JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x21AB DUP2 PUSH2 0x509F JUMP JUMPDEST DUP1 MLOAD PUSH2 0x21AB DUP2 PUSH2 0x509F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x21AB DUP2 PUSH2 0x50A8 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x21AB DUP2 PUSH2 0x50B1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3F7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3F8F PUSH2 0x3F8A DUP3 PUSH2 0x4FD1 JUMP JUMPDEST PUSH2 0x4FAA JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x3FAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3FB6 DUP4 DUP3 DUP5 PUSH2 0x5049 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x21AB DUP2 PUSH2 0x50A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2040 DUP5 DUP5 PUSH2 0x3F34 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4007 DUP6 DUP6 PUSH2 0x3F34 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4018 DUP6 DUP3 DUP7 ADD PUSH2 0x3F34 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4035 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4041 DUP6 DUP6 PUSH2 0x3F34 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4018 DUP6 DUP3 DUP7 ADD PUSH2 0x3F55 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4064 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2040 DUP5 DUP5 PUSH2 0x3F4A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4082 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2040 DUP5 DUP5 PUSH2 0x3F55 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4007 DUP6 DUP6 PUSH2 0x3F55 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x40C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x40CE DUP7 DUP7 PUSH2 0x3F55 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x40DF DUP7 DUP3 DUP8 ADD PUSH2 0x3F34 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x40F0 DUP7 DUP3 DUP8 ADD PUSH2 0x3F55 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4112 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x411E DUP9 DUP9 PUSH2 0x3F55 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x412F DUP9 DUP3 DUP10 ADD PUSH2 0x3F34 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4140 DUP9 DUP3 DUP10 ADD PUSH2 0x3F55 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4151 DUP9 DUP3 DUP10 ADD PUSH2 0x3F3F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x416E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x417A DUP9 DUP3 DUP10 ADD PUSH2 0x3F6B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2040 DUP5 DUP5 PUSH2 0x3F60 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2040 DUP5 DUP5 PUSH2 0x3FBF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x41E2 DUP6 DUP6 PUSH2 0x3FBF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4018 DUP6 DUP3 DUP7 ADD PUSH2 0x3FBF JUMP JUMPDEST PUSH2 0x41FC DUP2 PUSH2 0x5037 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x41FC DUP2 PUSH2 0x500B JUMP JUMPDEST PUSH2 0x41FC DUP2 PUSH2 0x5016 JUMP JUMPDEST PUSH2 0x41FC DUP2 PUSH2 0x501B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4228 DUP3 PUSH2 0x4FF9 JUMP JUMPDEST PUSH2 0x4232 DUP2 DUP6 PUSH2 0x4FFD JUMP JUMPDEST SWAP4 POP PUSH2 0x4242 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5055 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x41FC DUP2 PUSH2 0x503E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4260 DUP3 PUSH2 0x4FF9 JUMP JUMPDEST PUSH2 0x426A DUP2 DUP6 PUSH2 0x5002 JUMP JUMPDEST SWAP4 POP PUSH2 0x427A DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5055 JUMP JUMPDEST PUSH2 0x4283 DUP2 PUSH2 0x5081 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x429A PUSH1 0x6 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42BC PUSH1 0x1B DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x696E73756666696369656E742073776170206C69717569646974790000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42F5 PUSH1 0x26 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x433D PUSH1 0x1B DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4376 PUSH1 0x10 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH16 0x1DDC9BDB99C8185CDCD95D081CD95B9D PUSH1 0x82 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43A2 PUSH1 0x20 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43DB PUSH1 0x13 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH19 0x737761702066696C6C20746F6F206C61726765 PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x440A PUSH1 0x17 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x65786365737369766520736F7572636520616D6F756E74000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4443 PUSH1 0x3A DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x416464726573733A20756E61626C6520746F2073656E642076616C75652C2072 DUP2 MSTORE PUSH32 0x6563697069656E74206D61792068617665207265766572746564000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44A2 PUSH1 0x1D DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E6365000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44DB PUSH1 0x1C DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x736F75726365416D6F756E74206C6172676572207468616E206D617800000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4514 PUSH1 0xE DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH14 0x7377617020746F6F206C61726765 PUSH1 0x90 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x453E PUSH1 0x18 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x696E73756666696369656E74206465737420616D6F756E740000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4577 PUSH1 0x21 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45BA PUSH1 0xC DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45E2 PUSH1 0x12 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH18 0x3AB73432B0B63A343C903837B9B4BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4610 PUSH1 0xA DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH10 0x39BBB0B81032B93937B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4636 PUSH1 0x15 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH21 0x6C6F616E506172616D73206E6F7420657869737473 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4667 PUSH1 0x12 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH18 0x6465706F736974416D6F756E74203D3D203 PUSH1 0x74 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4695 PUSH1 0x14 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46C5 PUSH1 0x10 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH16 0x6E6F7468696E6720746F20636C6F7365 PUSH1 0x80 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46F1 PUSH1 0x14 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH20 0x6C6F616E436C6F7365416D6F756E74203D3D203 PUSH1 0x64 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4721 PUSH1 0x2E DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x6D696E206F72206D617820736F7572636520746F6B656E20616D6F756E74206E DUP2 MSTORE PUSH14 0x1959591CC81D1BC81899481CD95D PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AB PUSH1 0x0 DUP4 PUSH2 0x4FFD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x477E PUSH1 0xF DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH15 0x73776170416D6F756E74203D3D203 PUSH1 0x8C SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47A9 PUSH1 0xE DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH14 0x1B1BD85B881A5CC818DB1BDCD959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47D3 PUSH1 0xC DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47FB PUSH1 0x1B DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x636C6F7365416D6F756E74206973203020616674657220737761700000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4834 PUSH1 0xD DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH13 0x696E76616C6964207374617465 PUSH1 0x98 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x485D PUSH1 0x2A DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48A9 PUSH1 0xB DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH11 0x1CDDD85C0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48D0 PUSH1 0x16 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH22 0x1CDDD85C081D1BDBC81B185C99D9481D1BC8199A5B1B PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4902 PUSH1 0x1F DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x493B PUSH1 0x10 DUP4 PUSH2 0x5002 JUMP JUMPDEST PUSH16 0x3737BA1032B737BAB3B41032BA3432B9 PUSH1 0x81 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29C9 DUP3 DUP5 PUSH2 0x421D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AB DUP3 PUSH2 0x4764 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x21AB DUP3 DUP5 PUSH2 0x4202 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x498D DUP3 DUP11 PUSH2 0x41F3 JUMP JUMPDEST PUSH2 0x499A PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x49A7 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x49B4 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x49C1 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x49CE PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x49DB PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x49F5 DUP3 DUP6 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x29C9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4202 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x4A10 DUP3 DUP11 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A1D PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x49A7 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x41F3 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x4A38 DUP3 DUP11 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A45 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A52 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x49B4 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4202 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4A6D DUP3 DUP8 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A7A PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A87 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A94 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4AAB DUP3 DUP7 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4AB8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x2040 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4AD3 DUP3 DUP8 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4AE0 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4A87 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4AFB DUP3 DUP9 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4B08 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4B15 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4B22 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4B2F PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4B47 DUP3 DUP6 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x29C9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4B62 DUP3 DUP7 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4AB8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x21AB DUP3 DUP5 PUSH2 0x420B JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4B8B DUP3 DUP8 PUSH2 0x420B JUMP JUMPDEST PUSH2 0x4AE0 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x4BA7 DUP3 DUP12 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4BB4 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x420B JUMP JUMPDEST PUSH2 0x4BC1 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4BCE PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4BDB PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4BE8 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4BF5 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C02 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x4C1E DUP3 DUP16 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C2B PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C38 PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C45 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x420B JUMP JUMPDEST PUSH2 0x4C52 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C5F PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C6C PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C79 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C87 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4C95 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4CA3 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x4202 JUMP JUMPDEST PUSH2 0x4CB1 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x4202 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x21AB DUP3 DUP5 PUSH2 0x424C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21A8 DUP2 DUP5 PUSH2 0x4255 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x428D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x42AF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x42E8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4330 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4369 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4395 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x43CE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x43FD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4436 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4495 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x44CE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4531 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x456A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x45AD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4603 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4629 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x465A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4688 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x46B8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x46E4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4714 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4771 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x479C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x47C6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x47EE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4827 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x4850 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x489C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x48C3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x48F5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x21AB DUP2 PUSH2 0x492E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x21AB DUP3 DUP5 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4F0D DUP3 DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4F1A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x2040 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4202 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4B62 DUP3 DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4F43 DUP3 DUP9 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4B08 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4214 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x4F5E DUP3 DUP10 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4F6B PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4F78 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4F85 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4F92 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4214 JUMP JUMPDEST PUSH2 0x4F9F PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4214 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4FC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4FE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AB DUP3 PUSH2 0x502B JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AB DUP3 JUMPDEST PUSH1 0x0 PUSH2 0x21AB DUP3 PUSH2 0x500B JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5070 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5058 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2A21 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x5094 DUP2 PUSH2 0x500B JUMP JUMPDEST DUP2 EQ PUSH2 0xF96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5094 DUP2 PUSH2 0x5016 JUMP JUMPDEST PUSH2 0x5094 DUP2 PUSH2 0x501B JUMP JUMPDEST PUSH2 0x5094 DUP2 PUSH2 0x501E JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 SWAP1 SWAP16 SELFBALANCE 0xCD 0xBE PUSH12 0xCD7333144117F30F39BD5282 MULMOD 0xD8 CALLVALUE DUP3 DUP14 0x4D DUP4 0x25 EXTCODEHASH LOG4 0xDA PUSH21 0xE9E76C6578706572696D656E74616CF564736F6C63 NUMBER STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "864:27583:128:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;864:27583:128;1402:30;;-1:-1:-1;;;1402:30:128;;;;;;;;;;;;;;;;1636:67:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5443:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5443:30:14;;;:::i;:::-;;;;;;;;1270:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1270:46:14;;;;;;;;:::i;6768:81::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6768:81:14;;;;;;;;:::i;:::-;;;;;;;;4372:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4372:55:14;;;;;;;;:::i;5558:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5558:53:14;;;;;;;;:::i;:::-;;;;;;;;3097:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3097:46:14;;;:::i;3969:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3969:32:14;;;:::i;1527:65::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1527:65:14;;;;;;;;:::i;3376:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3376:55:14;;;;;;;;:::i;2473:334:128:-;;;;;;;;;:::i;:::-;;;;;;;;;;4925:48:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4925:48:14;;;;;;;;:::i;1744:69::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1744:69:14;;;;;;;;:::i;2825:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2825:55:14;;;;;;;;:::i;2717:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2717:41:14;;;:::i;4832:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4832:37:14;;;:::i;2013:52::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2013:52:14;;;;;;;;:::i;:::-;;;;;;;;;;5060:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5060:50:14;;;:::i;1898:76::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1898:76:14;;;;;;;;:::i;:::-;;;;;;;;;;;;4542:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4542:47:14;;;;;;;;:::i;5650:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5650:57:14;;;;;;;;:::i;1087:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1087:24:14;;;:::i;6000:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6000:39:14;;;:::i;1012:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1012:25:14;;;:::i;3887:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3887:32:14;;;:::i;7007:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7007:17:14;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;4285:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4285:55:14;;;;;;;;:::i;1134:83:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;2994:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2994:55:14;;;;;;;;:::i;5113:49::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5113:49:14;;;:::i;5340:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5340:45:14;;;:::i;4075:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4075:47:14;;;:::i;5175:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5175:29:14;;;:::i;:::-;;;;;;;;3781:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3781:57:14;;;;;;;;:::i;3605:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3605:57:14;;;;;;;;:::i;6272:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6272:30:14;;;:::i;1174:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1174:48:14;;;:::i;6168:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6168:55:14;;;;;;;;:::i;1347:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1347:37:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1439:342:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1439:342:128;;;;;;;;:::i;:::-;;1437:48:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1437:48:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;6853:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6853:69:14;;;;;;;;:::i;6305:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6305:31:14;;;:::i;4651:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4651:43:14;;;:::i;3209:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3209:55:14;;;;;;;;:::i;2626:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2626:29:14;;;:::i;3490:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3490:47:14;;;:::i;1226:73:128:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1226:73:128;;;:::i;4754:35:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4754:35:14;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1351:98:142;;;;;;;;:::i;6447:60:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6447:60:14;;;:::i;4198:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4198:55:14;;;:::i;5207:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5207:35:14;;;:::i;5389:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5389:20:14;;;:::i;3813:538:128:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3813:538:128;;;;;;;;:::i;1636:67:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;2473:334:128:-;2660:23;2688:22;2715:21;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;2753:50:128;2771:6;2779:8;2789:13;2753:17;:50::i;:::-;493:1:143;1234:14;:38;2746:57:128;;;;-1:-1:-1;2746:57:128;;-1:-1:-1;2473:334:128;-1:-1:-1;;;;2473:334:128:o;4925:48:14:-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1439:342:128:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;1498:33:128;1534:44;;;:12;:44;;;;-1:-1:-1;;;;;1534:44:128;;1582:50;;1625:6;1582:10;:50::i;:::-;1636:47;-1:-1:-1;;;1676:6:128;1636:10;:47::i;:::-;-1:-1:-1;;;1750:6:128;-1:-1:-1;;;;;1692:85:128;1723:25;-1:-1:-1;;;;;1692:85:128;;;;;;;;;;;1058:1:142;1439:342:128;:::o;1437:48:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2626:29::-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;1226:73:128:-;1285:14;1226:73;:::o;4754:35:14:-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;3813:538:128:-;4135:23;4163:22;4190:21;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;4231:116:128;4251:6;4263:8;4277:10;4293:23;4231:116;;;;;;;;;;;;:14;:116::i;:::-;493:1:143;1234:14;:38;4221:126:128;;;;-1:-1:-1;4221:126:128;;-1:-1:-1;3813:538:128;-1:-1:-1;;;;;;3813:538:128:o;4964:1464::-;5113:23;;;5207:18;5199:49;;;;-1:-1:-1;;;5199:49:128;;;;;;;;;5253:22;5278:5;:13;5284:6;5278:13;;;;;;;;;;;5253:38;;5295:34;5332:10;:34;5343:9;:22;;;5332:34;;;;;;;;;;;5295:71;;5370:44;5387:9;5370:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5370:44:128;-1:-1:-1;;;;;5370:44:128;-1:-1:-1;;;;;5370:44:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5370:44:128;-1:-1:-1;;;;;5370:44:128;-1:-1:-1;;;;;5370:44:128;;;;;5398:15;5370:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5370:44:128;-1:-1:-1;;;;;5370:44:128;-1:-1:-1;;;;;5370:44:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5370:44:128;-1:-1:-1;;;;;5370:44:128;-1:-1:-1;;;;;5370:44:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5370:44:128;-1:-1:-1;;;;;5370:44:128;-1:-1:-1;;;;;5370:44:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:16;:44::i;:::-;5501:9;:19;;;5485:13;:35;:73;;5545:13;5485:73;;;5523:9;:19;;;5485:73;5467:91;;5563:35;5601:81;5628:9;5601:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5601:81:128;-1:-1:-1;;;;;5601:81:128;-1:-1:-1;;;;;5601:81:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5601:81:128;-1:-1:-1;;;;;5601:81:128;-1:-1:-1;;;;;5601:81:128;;;;;5639:15;5601:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5601:81:128;-1:-1:-1;;;;;5601:81:128;-1:-1:-1;;;;;5601:81:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5601:81:128;-1:-1:-1;;;;;5601:81:128;-1:-1:-1;;;;;5601:81:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5601:81:128;-1:-1:-1;;;;;5601:81:128;-1:-1:-1;;;;;5601:81:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5656:15;5673:8;5601:26;:81::i;:::-;5563:119;-1:-1:-1;5691:32:128;;5687:149;;5758:25;;;;5785:16;;;;5730:101;;-1:-1:-1;;;;;5758:25:128;;;;5785:16;5803:27;5730;:101::i;:::-;5863:9;:19;;;5844:15;:38;5840:190;;;5906:9;:20;;;5889:37;;5840:190;;;5959:66;6005:9;:19;;;5959:41;5984:15;5959:9;:20;;;:24;;:41;;;;:::i;:::-;:45;:66;:45;:66;:::i;:::-;5942:83;;5840:190;6050:31;;;;-1:-1:-1;;;;;6050:31:128;;-1:-1:-1;6090:19:128;;6086:159;;6139:20;;;;:40;;6164:14;6139:40;:24;:40;:::i;:::-;6116:20;;;:63;6185:55;6200:13;6215:8;6225:14;6185;:55::i;:::-;6249:175;6268:9;6282:15;6302;6322:14;6367:1;6402:18;6249:14;:175::i;:::-;4964:1464;;;;;;;;;;:::o;780:87:137:-;853:10;780:87;:::o;7574:230:14:-;-1:-1:-1;;;;;;7635:17:14;;;;;;:12;:17;;;;;:26;;-1:-1:-1;;;;;;7635:26:14;-1:-1:-1;;;;;7635:26:14;;;;;;;;7670:20;7666:135;;7697:40;:15;-1:-1:-1;;;;;;7724:12:14;;7697:40;:26;:40;:::i;:::-;;7666:135;;;7753:43;:15;-1:-1:-1;;;;;;7783:12:14;;7753:43;:29;:43;:::i;:::-;;7666:135;7574:230;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;7393:3996:128:-;7568:23;;;7662:15;7654:43;;;;-1:-1:-1;;;7654:43:128;;;;;;;;;7702:22;7727:5;:13;7733:6;7727:13;;;;;;;;;;;7702:38;;7744:34;7781:10;:34;7792:9;:22;;;7781:34;;;;;;;;;;;7744:71;;7819:44;7836:9;7819:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7819:44:128;-1:-1:-1;;;;;7819:44:128;-1:-1:-1;;;;;7819:44:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7819:44:128;-1:-1:-1;;;;;7819:44:128;-1:-1:-1;;;;;7819:44:128;;;;;7847:15;7819:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7819:44:128;-1:-1:-1;;;;;7819:44:128;-1:-1:-1;;;;;7819:44:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7819:44:128;-1:-1:-1;;;;;7819:44:128;-1:-1:-1;;;;;7819:44:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7819:44:128;-1:-1:-1;;;;;7819:44:128;-1:-1:-1;;;;;7819:44:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:16;:44::i;:::-;7933:9;:20;;;7920:10;:33;:69;;7979:10;7920:69;;;7956:9;:20;;;7920:69;7907:82;;7994:35;8051:9;:20;;;8037:10;:34;:61;;;;8075:23;8037:61;8033:1040;;;8440:9;:20;;;8426:10;:34;:128;;8493:61;8533:9;:20;;;8493:35;8517:10;8493:9;:19;;;:23;;:35;;;;:::i;:61::-;8426:128;;;8467:9;:19;;;8426:128;8408:146;-1:-1:-1;8567:20:128;8559:53;;;;-1:-1:-1;;;8559:53:128;;;;;;;;;8760:81;8787:9;8760:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8760:81:128;-1:-1:-1;;;;;8760:81:128;-1:-1:-1;;;;;8760:81:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8760:81:128;-1:-1:-1;;;;;8760:81:128;-1:-1:-1;;;;;8760:81:128;;;;;8798:15;8760:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8760:81:128;-1:-1:-1;;;;;8760:81:128;-1:-1:-1;;;;;8760:81:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8760:81:128;-1:-1:-1;;;;;8760:81:128;-1:-1:-1;;;;;8760:81:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8760:81:128;-1:-1:-1;;;;;8760:81:128;-1:-1:-1;;;;;8760:81:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8815:15;8832:8;8760:26;:81::i;:::-;8730:111;;8033:1040;;;-1:-1:-1;9067:1:128;8033:1040;9077:24;9105:22;9284:378;9312:9;9284:378;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9284:378:128;-1:-1:-1;;;;;9284:378:128;-1:-1:-1;;;;;9284:378:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9284:378:128;-1:-1:-1;;;;;9284:378:128;-1:-1:-1;;;;;9284:378:128;;;;;9326:15;9284:378;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9284:378:128;-1:-1:-1;;;;;9284:378:128;-1:-1:-1;;;;;9284:378:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9284:378:128;-1:-1:-1;;;;;9284:378:128;-1:-1:-1;;;;;9284:378:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9284:378:128;-1:-1:-1;;;;;9284:378:128;-1:-1:-1;;;;;9284:378:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9346:10;9479:27;9617:23;9645:13;9284:23;:378::i;:::-;9219:443;-1:-1:-1;9219:443:128;-1:-1:-1;9219:443:128;;-1:-1:-1;9219:443:128;-1:-1:-1;9671:32:128;9667:833;;9855:16;9837:34;;9900:9;:19;;;9880:16;:39;9876:136;;9985:20;;;;9945:61;;:35;:15;9965:14;9945:35;:19;:35;:::i;:61::-;9927:79;;9876:136;10024:20;10016:53;;;;-1:-1:-1;;;10016:53:128;;;;;;;;;10151:81;10178:9;10151:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10151:81:128;-1:-1:-1;;;;;10151:81:128;-1:-1:-1;;;;;10151:81:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10151:81:128;-1:-1:-1;;;;;10151:81:128;-1:-1:-1;;;;;10151:81:128;;;;;10189:15;10151:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10151:81:128;-1:-1:-1;;;;;10151:81:128;-1:-1:-1;;;;;10151:81:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10151:81:128;-1:-1:-1;;;;;10151:81:128;-1:-1:-1;;;;;10151:81:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10151:81:128;-1:-1:-1;;;;;10151:81:128;-1:-1:-1;;;;;10151:81:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10206:15;10223:8;10151:26;:81::i;:::-;10121:111;-1:-1:-1;10306:69:128;10121:111;10306:36;:14;10325:16;10306:36;:18;:36;:::i;:::-;:40;:69;:40;:69;:::i;:::-;10289:86;;9667:833;;;10479:16;10449:46;;9667:833;10512:32;10504:72;;;;-1:-1:-1;;;10504:72:128;;;;;;;;;10662:19;;10658:98;;10711:20;;;;:40;;10736:14;10711:40;:24;:40;:::i;:::-;10688:20;;;:63;10658:98;10952:25;;;;10979:16;;;;10938:87;;-1:-1:-1;;;;;10952:25:128;;;;10979:16;10997:27;10938:13;:87::i;:::-;11046:23;:85;;11106:25;;;;-1:-1:-1;;;;;11106:25:128;11046:85;;;11072:31;;;;-1:-1:-1;;;;;11072:31:128;11046:85;11030:101;-1:-1:-1;11140:19:128;;11136:90;;11166:55;11181:13;11196:8;11206:14;11166;:55::i;:::-;11230:155;11249:9;11263:15;11283;11303:14;11322:10;11366:15;11230:14;:155::i;:::-;7393:3996;;;;;;;;;;;;;;:::o;11560:318::-;11670:9;:16;;;11662:43;;;;-1:-1:-1;;;11662:43:128;;;;;;;;;11731:9;:18;;;-1:-1:-1;;;;;11717:32:128;:10;-1:-1:-1;;;;;11717:32:128;;:79;;;-1:-1:-1;11771:12:128;;11753:31;;;;:17;:31;;;;;;;;11785:10;11753:43;;;;;;;;;;11717:79;11709:104;;;;-1:-1:-1;;;11709:104:128;;;;;;;;;11825:18;;11817:57;;;;-1:-1:-1;;;11817:57:128;;;;;;;;12509:2099;12675:7;12726:15;12675:7;12893:72;12909:15;12926:9;12726:15;12893;:72::i;:::-;12858:107;;12970:34;13177:24;13146:27;:55;13142:955;;-1:-1:-1;13383:55:128;;;;;13508:1;;13142:955;;;-1:-1:-1;13938:1:128;;13796:55;;;;;13949:29;;13945:148;;14010:77;14025:15;:25;;;14052:8;14062:24;14010:14;:77::i;:::-;14284:31;;14280:286;;14475:86;14489:15;:25;;;14516:9;:16;;;14534:26;14475:13;:86::i;:::-;-1:-1:-1;14577:27:128;;-1:-1:-1;;12509:2099:128;;;;;;;:::o;14947:755::-;15072:20;;15068:631;;15103:9;15099:537;;15125:63;15139:9;15150:10;15162:8;15172:15;15125:13;:63::i;:::-;15099:537;;;15235:10;;-1:-1:-1;;;;;15214:32:128;;;15235:10;;15214:32;15206:61;;;;-1:-1:-1;;;15206:61:128;;;;;;;;;15294:15;15281:9;:28;;15273:57;;;;-1:-1:-1;;;15273:57:128;;;;;;;;;15336:10;;;;;;;;;-1:-1:-1;;;;;15336:10:128;-1:-1:-1;;;;;15336:18:128;;15361:15;15336:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15336:43:128;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;;15389:25:128;;15409:4;15389:25;;-1:-1:-1;15385:111:128;;15423:66;15437:9;15456:4;15463:8;15473:15;15423:13;:66::i;:::-;15517:15;15505:9;:27;15501:130;;;15566:58;15584:10;15608:15;15596:9;:27;15566:17;:58::i;:::-;15068:631;;;15659:9;:14;15651:43;;;;-1:-1:-1;;;15651:43:128;;;;;;;;1999:399:145;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;2393:1;-1:-1:-1;1999:399:145;;;;;:::o;2817:121::-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;1201:125::-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;21510:297:128:-;21619:16;;21615:189;;21668:10;;-1:-1:-1;;;;;21646:33:128;;;21668:10;;21646:33;21642:158;;;21687:41;21706:8;21716:11;21687:18;:41::i;21642:158::-;21746:48;21760:10;21772:8;21782:11;21746:13;:48::i;22244:1377::-;22468:38;22479:9;22490:15;22468:10;:38::i;:::-;22533:10;;;22842:25;;;;22874:31;;;;22912:19;;;;22938:20;;;;22756:208;;-1:-1:-1;;;;;22533:10:128;;;;22511:19;;;;;;22704:17;;22533:10;;-1:-1:-1;;;22785:50:128;22756:208;;22842:25;;;22874:31;;22912:19;22938:20;22756:208;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;22756:208:128;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;22756:208:128;;;179:29:-1;;;;160:49;;;22728:241:128;;;;22756:208;22728:241;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;22689:280:128;;;;23002:1;22993:7;22990:14;22987:2;;;23044;23038:4;23034:13;23028:20;23011:37;;23093:2;23087:4;23083:13;23077:20;23053:44;;22987:2;23266:18;23253:9;:31;;;;;;;;;:63;;;-1:-1:-1;23292:19:128;;;;:24;23253:63;:142;;;;23362:15;:33;;;23346:13;:49;23253:142;23241:183;;;;-1:-1:-1;;;23241:183:128;;;;;;;;;23429:188;23452:15;23429:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23429:188:128;-1:-1:-1;;;;;23429:188:128;-1:-1:-1;;;;;23429:188:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23429:188:128;-1:-1:-1;;;;;23429:188:128;-1:-1:-1;;;;;23429:188:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23429:188:128;-1:-1:-1;;;;;23429:188:128;-1:-1:-1;;;;;23429:188:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23472:9;23429:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23429:188:128;-1:-1:-1;;;;;23429:188:128;-1:-1:-1;;;;;23429:188:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23429:188:128;-1:-1:-1;;;;;23429:188:128;-1:-1:-1;;;;;23429:188:128;;;;;23486:15;23506:21;23532:20;23557:24;23586:13;23604:9;23429:18;:188::i;:::-;22244:1377;;;;;;;;;;;:::o;1293:212:95:-;1370:4;1385:20;1394:3;1399:5;1385:8;:20::i;:::-;1380:122;;-1:-1:-1;1431:10:95;;;;27::-1;;23:18;;;45:23;;;-1:-1;1431:22:95;;;;;;;;;;;;;1412:16;;;;;;;;;;;:41;1458:11;;1380:122;-1:-1:-1;1492:5:95;1485:12;;2102:845;2182:4;2196:20;2205:3;2210:5;2196:8;:20::i;:::-;2192:752;;;2223:21;2247:16;;;;;;;;;;;2266:1;2292:10;;:17;-1:-1:-1;;2247:20:95;;;;2292:21;2428:26;;;2424:318;;2462:17;2482:3;:10;;2493:9;2482:21;;;;;;;;;;;;;;;;2462:41;;2607:9;2579:3;:10;;2590:13;2579:25;;;;;;;;;;;;;;;;;;;:37;;;;2669:20;;;;;;;;;2708:1;2692:17;;2669:40;;2424:318;2807:9;:16;;;;;;;;;;2800:23;2878:10;;;:16;;;;;;;;;;;;;;;;;;;;;;;;2907:4;2900:11;;;;;;17438:2444:128;17673:24;17702:22;17729;17756:32;17798:31;17833:29;17943:136;17965:9;17979:15;17999:10;18014:15;18034:23;18062:13;17943:17;:136::i;:::-;17866:213;-1:-1:-1;17866:213:128;;-1:-1:-1;17866:213:128;-1:-1:-1;18084:1702:128;;;;18137:15;18118:34;;18222:16;18196:23;:42;18192:572;;;18344:87;18361:15;:25;;;18414:16;18388:23;:42;18344:16;:87::i;:::-;18340:419;;;18440:105;18455:15;:25;;;18482:9;:18;;;18528:16;18502:23;:42;18440:14;:105::i;:::-;18340:419;;;18729:23;18710:42;;18340:419;18798:21;18785:10;:34;:75;;18859:1;18785:75;;;18835:21;18822:10;:34;18785:75;18768:92;;18084:1702;;;18909:10;18884:21;:35;18876:58;;;;-1:-1:-1;;;18876:58:128;;;;;;;;;18958:9;:20;;;18944:10;:34;18940:842;;;19074:15;19055:34;;19138:15;19112:23;:41;19095:58;;18940:842;;;19270:9;:19;;;19243:23;:46;19239:538;;19371:9;:19;;;19352:38;;19440:9;:19;;;19414:23;:45;19397:62;;19519:113;19534:15;:31;;;19567:9;:18;;;19610:21;19587:9;:20;;;:44;19519:14;:113::i;:::-;-1:-1:-1;19663:20:128;;;;19239:538;;;19722:23;19703:42;;19769:1;19752:18;;19239:538;19831:10;19807:21;:34;:71;;19868:10;19807:71;;;19844:21;19807:71;19790:88;;17438:2444;;;;;;;;;;;;;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;2297:195:102;2388:10;;2384:105;;2405:37;-1:-1:-1;;;;;2405:26:102;;2432:2;2436:5;2405:37;:26;:37;:::i;:::-;2474:2;-1:-1:-1;;;;;2453:31:102;2467:5;-1:-1:-1;;;;;2453:31:102;;2478:5;2453:31;;;;;;;;;;;;;;;2297:195;;;:::o;24743:2103:128:-;24877:7;24931:57;24944:9;:16;;;24962:15;:25;;;24931:12;:57::i;:::-;25047:12;;24993:38;25034:26;;;:12;:26;;;;;;;;25124:16;;;;-1:-1:-1;;;;;25109:32:128;;;;;:14;:32;;;;;25142:25;;;;25109:59;;;;;;;;;;;25234:22;;;;25196:15;;25219:37;;25215:90;;;-1:-1:-1;25278:22:128;;;;25215:90;25309:287;25348:17;25370:9;:12;;;25387:15;:25;;;25431:15;:31;;;25557:9;:18;;;25580:12;25309:34;:287::i;:::-;25601:24;25650:9;:19;;;25633:14;:36;25629:207;;;25748:19;;;;25695:28;;:73;;25748:19;25695:48;;25728:14;25695:48;:32;:48;:::i;:73::-;25676:92;;25629:207;;;-1:-1:-1;25803:28:128;;25629:207;25902:28;;:50;;25935:16;25902:50;:32;:50;:::i;:::-;25871:81;;25989:30;;;;:52;;26024:16;25989:52;:34;:52;:::i;:::-;25956:30;;;:85;26112:22;;;;26077:32;;26112:40;;26139:12;26112:40;:26;:40;:::i;:::-;26077:75;-1:-1:-1;26183:46:128;26077:75;26212:16;26183:46;:28;:46;:::i;:::-;26156:73;-1:-1:-1;26260:36:128;26156:73;26289:6;26260:36;:28;:36;:::i;:::-;26233:63;;26322:9;:19;;;26305:14;:36;26301:195;;;26381:30;;;;:60;;26416:24;26381:60;:34;:60;:::i;:::-;26348:30;;;:93;26301:195;;;26490:1;26457:30;;;:34;26301:195;26583:34;;:54;;26622:14;26583:54;:38;:54;:::i;:::-;26546:91;;26662:29;;;;26727:36;;;:79;;26805:1;26727:79;;;26778:24;26766:9;:36;26727:79;26695:29;;;;:111;;;;26818:24;-1:-1:-1;;;;;24743:2103:128;;;;;;:::o;2769:272:102:-;2876:10;;2872:166;;-1:-1:-1;;;;;2897:21:102;;2913:4;2897:21;2893:141;;;2926:37;-1:-1:-1;;;;;2926:26:102;;2953:2;2957:5;2926:37;:26;:37;:::i;:::-;2893:141;;;2981:47;-1:-1:-1;;;;;2981:30:102;;3012:4;3018:2;3022:5;2981:47;:30;:47;:::i;:::-;2769:272;;;;:::o;2414:330:136:-;2514:6;2489:21;:31;;2481:73;;;;-1:-1:-1;;;2481:73:136;;;;;;;;;2608:12;2626:9;-1:-1:-1;;;;;2626:14:136;2647:6;2626:32;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2607:51:136;;;2670:7;2662:78;;;;-1:-1:-1;;;2662:78:136;;;;;;;;3411:315:145;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1614:175::-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;1304:341:102:-;1376:10;;1372:270;;1419:10;;-1:-1:-1;;;;;1419:10:102;1452:21;1482:15;;;1478:70;;;1505:37;;-1:-1:-1;;;1505:37:102;;-1:-1:-1;;;;;1505:20:102;;;;;:37;;1526:15;;;;1505:37;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1505:37:102;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1505:37:102;;;;1478:70;1552:28;1570:2;1574:5;1552:17;:28::i;:::-;1627:2;-1:-1:-1;;;;;1591:46:102;1613:11;-1:-1:-1;;;;;1591:46:102;;1631:5;1591:46;;;;;;;;;;;;;;;1372:270;;1304:341;;:::o;23797:583:128:-;23887:20;23879:49;;;;-1:-1:-1;;;23879:49:128;;;;;;;;;23956:9;:19;;;23937:15;:38;23933:444;;;24004:1;23982:19;;;:23;;;24010:16;;;:24;;-1:-1:-1;;24010:24:128;;;24064:15;24039:22;;;:40;24084:25;;;:29;24147:12;;24118:42;;:14;;:42;:28;:42;:::i;:::-;-1:-1:-1;24212:12:128;;24180:16;;;;-1:-1:-1;;;;;24180:16:128;24212:12;24165:32;;;:14;:32;;;;;:60;;;:46;:60;:::i;:::-;-1:-1:-1;24281:12:128;;24247:18;;;;-1:-1:-1;;;;;24247:18:128;24281:12;24230:36;;;:16;:36;;;;;:64;;;:50;:64;:::i;23933:444::-;24332:19;;;;:40;;24356:15;24332:40;:23;:40;:::i;:::-;24310:19;;;:62;23797:583;;:::o;26849:1596::-;27149:18;27136:9;:31;;;;;;;;;27132:1310;;;27278:9;:12;;;27245:9;:16;;;-1:-1:-1;;;;;27179:438:128;27201:9;:18;;;-1:-1:-1;;;;;27179:438:128;;27307:10;27334:15;:25;;;27379:15;:31;;;27436:15;27477:21;27530:20;27581:13;27179:438;;;;;;;;;;;;;;;;;;;;;27132:1310;;;27645:15;27632:9;:28;;;;;;;;;27628:814;;;27719:29;;27715:120;;27783:46;27796:6;27804:24;27783:12;:46::i;:::-;27756:73;;27715:120;27889:18;;27885:87;;27931:35;27944:6;27952:13;27931:12;:35::i;:::-;27915:51;;27885:87;28076:9;:12;;;28043:9;:16;;;-1:-1:-1;;;;;27982:455:128;28001:9;:18;;;-1:-1:-1;;;;;27982:455:128;;28105:15;:31;;;28162:15;:25;;;28207:10;28234:21;28283:15;28324:24;28399:13;27982:455;;;;;;;;;;;;;;;;;;;;;27628:814;26849:1596;;;;;;;;:::o;3145:122:95:-;3225:4;3242:16;;;;;;;;;;;;:21;;;3145:122::o;20392:926:128:-;20621:31;20657:29;20691:32;20810:336;20824:9;:12;;;20841:15;:31;;;20877:15;:25;;;20907:9;:18;;;20930:10;20970:9;:20;;;21020:23;:81;;21100:1;21020:81;;;21050:15;21020:81;21106:5;21129:13;20810:9;:336::i;:::-;20733:413;;-1:-1:-1;20733:413:128;-1:-1:-1;20733:413:128;-1:-1:-1;21158:42:128;;;;21150:79;;;;-1:-1:-1;;;21150:79:128;;;;;;;;;21266:9;:20;;;21241:21;:45;;21233:81;;;;-1:-1:-1;;;21233:81:128;;;;;;;;;20392:926;;;;;;;;;;:::o;15959:442::-;16100:10;;16137;;16088:61;;-1:-1:-1;;;16088:61:128;;16034:4;;;;;;-1:-1:-1;;;;;16100:10:128;;;;16088:33;;:61;;16122:5;;16137:10;;;;16088:61;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16088:61:128;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16088:61:128;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16088:61:128;;;;;;;;;16044:105;;-1:-1:-1;16044:105:128;-1:-1:-1;16153:20:128;16176:39;16044:105;16176:20;:6;16044:105;16176:20;:10;:20;:::i;:39::-;16153:62;;16224:115;1285:14;16235:12;:47;16284:6;16292:12;1285:14;16224:115;;;;;;;;;;;;;;;;;;1285:14;-1:-1:-1;;15959:442:128;-1:-1:-1;;;;;15959:442:128:o;654:174:144:-;765:58;;739:85;;758:5;;-1:-1:-1;;;788:23:144;765:58;;813:2;;817:5;;765:58;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;765:58:144;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;765:58:144;;;179:29:-1;;;;160:49;;;739:18:144;:85::i;1036:930:97:-;-1:-1:-1;;;;;1155:22:97;;;1110:42;1155:22;;;:14;:22;;;;;;;;:37;;;;;;;;;;;1232:30;;;;1155:37;;1110:42;1232:35;;;;:80;;-1:-1:-1;1271:36:97;;;;:41;;1232:80;1228:735;;;1337:105;1435:6;1337:93;1399:19;:30;;;1337:57;1357:19;:36;;;1337:15;:19;;:57;;;;:::i;:::-;:61;:93;:61;:93;:::i;:105::-;1487:15;1448:36;;;:54;1530:29;;;;1319:123;;-1:-1:-1;1512:47:97;;1508:100;;;-1:-1:-1;1579:29:97;;;;1508:100;1618:20;;1614:275;;1678:29;;;;:50;;1712:15;1678:50;:33;:50;:::i;:::-;1646:29;;;:82;1766:29;;;;:50;;1800:15;1766:50;:33;:50;:::i;:::-;1734:29;;;:82;1823:60;1844:6;1852:13;1867:15;1823:20;:60::i;1228:735::-;1943:15;1904:36;;;:54;1036:930;;;;:::o;6369:621:96:-;6647:26;6679:139;6798:15;6679:109;6770:17;;6679:86;6736:17;:28;;;6679:52;6696:17;:34;;;6679:12;:16;;:52;;;;:::i;:139::-;6823:34;;;:49;;;6647:171;-1:-1:-1;6881:23:96;;6877:110;;6911:71;6925:4;6931:6;6939:8;6949:12;6963:18;6911:13;:71::i;:::-;6369:621;;;;;;;:::o;831:204:144:-;962:68;;936:95;;955:5;;-1:-1:-1;;;985:27:144;962:68;;1014:4;;1020:2;;1024:5;;962:68;;;;1194:1199:151;1626:339;;;;;;;;-1:-1:-1;;;;;1626:339:151;;;;;;;;;;;;;;;;1687:4;1626:339;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1467:31;;;;;;1626:339;;;1835:6;1846:9;1860:13;1467:31;1626:10;:339::i;:::-;1575:390;;-1:-1:-1;1575:390:151;-1:-1:-1;2012:50:151;2027:11;1575:390;2012:14;:50::i;:::-;2143:10;;2266:15;;2131:154;;-1:-1:-1;;;2131:154:151;;-1:-1:-1;;;;;2143:10:151;;;;2131:46;;:154;;2182:11;;2198:9;;2212:21;;2238:23;;2131:154;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2131:154:151;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2131:154:151;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2131:154:151;;;;;;;;;2108:177;;2325:9;-1:-1:-1;;;;;2295:94:151;2312:11;-1:-1:-1;;;;;2295:94:151;2304:6;2295:94;2336:4;2342:21;2365:23;2295:94;;;;;;;;;;;;;;;;;1194:1199;;;;;;;;;;;;;:::o;2564:999:144:-;3111:27;3119:5;-1:-1:-1;;;;;3111:25:144;;:27::i;:::-;3103:71;;;;-1:-1:-1;;;3103:71:144;;;;;;;;;3233:12;3247:23;3282:5;-1:-1:-1;;;;;3274:19:144;3294:4;3274:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3232:67:144;;;;3311:7;3303:52;;;;-1:-1:-1;;;3303:52:144;;;;;;;;;3364:17;;:21;3360:200;;3489:10;3478:30;;;;;;;;;;;;;;3470:85;;;;-1:-1:-1;;;3470:85:144;;;;;;;;2234:702:97;2350:18;2371:50;2414:6;2371:38;2391:17;;2371:15;:19;;:38;;;;:::i;:50::-;2350:71;;2641:49;2656:6;2664:13;2679:10;2641:14;:49::i;:::-;2762:69;2776:13;2791:6;2799:31;:15;2819:10;2799:31;:19;:31;:::i;:::-;2762:13;:69::i;:::-;-1:-1:-1;;;;;2857:75:97;;;;;;;2900:31;:15;2920:10;2900:31;:19;:31;:::i;:::-;2857:75;;;;;;;7367:1524:96;7557:16;;7599:10;;-1:-1:-1;;;;;7618:24:96;;;7505:20;7618:24;;;:14;:24;;;;;;;;:38;;;;;;;;;;;7505:20;;7557:16;7599:10;;;;;7618:42;7614:116;;-1:-1:-1;;;;;7687:24:96;;;;;;;:14;:24;;;;;;;;:38;;;;;;;;;;;-1:-1:-1;7614:116:96;7996:15;;7834:12;;7848:17;;-1:-1:-1;;;;;7872:22:96;;;;-1:-1:-1;;;7929:45:96;7981:8;;7996:15;8086:44;8123:6;8086:32;:9;8100:17;8086:32;:13;:32;:::i;:44::-;7900:236;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;7900:236:96;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;7900:236:96;;;179:29:-1;;;;160:49;;;7872:269:96;;;;7900:236;7872:269;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7833:308:96;;;;8224:1;8215:7;8212:14;8209:2;;;8265;8259:4;8255:13;8249:20;8233:36;;8209:2;8286:17;;8282:606;;8317:15;;8342:16;;8310:63;;-1:-1:-1;;;8310:63:96;;-1:-1:-1;;;;;8317:15:96;;;;8310:31;;:63;;8342:16;;;8360:12;;8310:63;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8310:63:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8310:63:96;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8310:63:96;;;;;;;;;-1:-1:-1;8402:16:96;;8510:30;;8430:111;;8380:12;;-1:-1:-1;;;;;8402:16:96;;8430:111;;8490:4;;8496:12;;8430:111;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;8430:111:96;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;8402:145:96;;;8430:111;8402:145;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8379:168:96;;;8557:7;8553:331;;;8592:17;;:35;;8614:12;8592:35;:21;:35;:::i;:::-;8572:17;:55;8656:15;;8714:30;;8639:106;;8673:6;;-1:-1:-1;;;;;8656:15:96;;;;8639:106;;;;;;;;8681:17;;8700:12;;8639:106;;;;;;;;;;8553:331;;;8789:15;;8847:30;;8768:110;;8806:6;;-1:-1:-1;;;;;8789:15:96;;;;8768:110;;;;;;;;8814:17;;8833:12;;8768:110;;;;;;;;;;8282:606;;7367:1524;;;;;;;;;;:::o;2909:2766:151:-;3381:7;;3105;;;;3381:12;;;:28;;-1:-1:-1;3397:7:151;;;;:12;;3381:28;3373:87;;;;-1:-1:-1;;;3373:87:151;;;;;;;;;3469:7;;;;3465:45;;3498:7;;;3488;;:17;3465:45;3532:7;;;;3521;;:18;;3513:59;;;;-1:-1:-1;;;3513:59:151;;;;;;;;;3577:31;3612:29;3646:18;3673:8;3668:851;;3709:7;;;;3705:810;;3797:14;3793:131;;;3833:28;3853:4;3858:1;3853:7;;;;;3833:19;:28::i;:::-;3820:41;;3793:131;;;3894:23;3909:4;3914:1;3909:7;;;;;3894:14;:23::i;:::-;3881:36;;3793:131;3934:15;;3930:303;;3980:8;;;;4019;;3958:227;;3980:8;4005:6;;3980:5;4068:1;4062:8;;;;;4168:10;3958:14;:227::i;:::-;4203:7;;:23;;4215:10;4203:11;:23::i;:::-;4193:33;;3930:303;3705:810;;;4309:14;4305:131;;;4345:28;4365:4;4370:1;4365:7;;4345:28;4332:41;;4305:131;;;4406:23;4421:4;4426:1;4421:7;;4406:23;4393:36;;4305:131;4446:15;;4442:68;;4480:7;;;;:23;;4492:10;4480:11;:23::i;:::-;4470:7;;;:33;4442:68;4531:20;;:25;4523:51;;;;-1:-1:-1;;;4523:51:151;;;;;;;;;4630:32;4650:5;4657:4;4630:19;:32::i;:::-;4671:7;;;;4579:83;;-1:-1:-1;4579:83:151;-1:-1:-1;4667:945:151;;4830:7;;4805:32;;4797:67;;;;-1:-1:-1;;;4797:67:151;;;;;;;;;4874:15;;4870:94;;4921:37;:21;4947:10;4921:37;:25;:37;:::i;:::-;4897:61;;4870:94;4667:945;;;5156:7;;;;5131:32;;;5123:64;;;;-1:-1:-1;;;5123:64:151;;;;;;;;;5227:7;;;;5200:34;;;5192:74;;;;-1:-1:-1;;;5192:74:151;;;;;;;;;5276:15;;5272:336;;5320:8;;;;;5369;;;5299:231;;5320:8;5344:6;;5320:5;5415:1;5409:8;;5299:231;5563:39;:23;5591:10;5563:39;:27;:39;:::i;:::-;5537:65;;5272:336;-1:-1:-1;5624:23:151;;;;-1:-1:-1;2909:2766:151;-1:-1:-1;;;;;;;2909:2766:151:o;7706:398::-;7809:11;;7828:17;;7824:277;;7904:10;;7852:19;;-1:-1:-1;;;;;7880:35:151;;;7904:10;;7880:35;7876:162;;;-1:-1:-1;7937:6:151;7876:162;;;7987:10;;7975:57;;-1:-1:-1;;;7975:57:151;;-1:-1:-1;;;;;7987:10:151;;;;7975:35;;:57;;8011:12;;8025:6;;7975:57;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7975:57:151;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7975:57:151;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7975:57:151;;;;;;;;;7961:71;;7876:162;8065:12;8050:11;:27;;8042:54;;;;-1:-1:-1;;;8042:54:151;;;;;;;;639:564:136;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;;1183:15:136;;;1148:51;-1:-1:-1;;639:564:136:o;5885:395:96:-;5987:15;;5983:294;;-1:-1:-1;;;;;6118:30:96;;;;;;:20;:30;;;;;;:46;;6153:10;6118:46;:34;:46;:::i;:::-;-1:-1:-1;;;;;6085:30:96;;;;;;;:20;:30;;;;;;;:79;;;;6175:41;;;;;;;;;;6205:10;;6175:41;;1172:159;1248:7;1268:59;1320:6;1268:43;1287:23;;1268:14;:18;;:43;;;;:::i;:::-;:51;:59;:51;:59;:::i;882:148::-;953:7;973:53;1019:6;973:37;992:17;;973:14;:18;;:37;;;;:::i;3804:940::-;3973:10;4025:15;;4021:720;;-1:-1:-1;;;;;4051:28:96;;;4091:1;4051:28;;;:22;:28;;;;;;;:42;4047:343;;-1:-1:-1;;;;;4127:28:96;;;;;;;:22;:28;;;;;;4101:91;;4127:28;4150:4;4163:8;4173:18;4101:25;:91::i;:::-;;;4219:165;4311:67;4371:6;4311:55;4334:31;;4311:18;:22;;:55;;;;:::i;:67::-;4220:79;4243:55;4291:6;4243:43;4266:19;;4243:18;:22;;:43;;;;:::i;:55::-;4220:18;;:79;:22;:79;:::i;4219:165::-;4198:186;;4047:343;-1:-1:-1;;;;;4504:30:96;;;;;;:20;:30;;;;;;:54;;4539:18;4504:54;:34;:54;:::i;:::-;-1:-1:-1;;;;;4471:30:96;;;;;;;:20;:30;;;;;;;:87;;;;4569:57;;4599:6;;4471:30;4569:57;;;;;;;4607:18;;4569:57;;;;;;;;;;4673:63;4687:4;4693:6;4701:8;4711:12;4725:10;4673:13;:63::i;:::-;3804:940;;;;;;:::o;6021:741:151:-;6290:8;;;6320;;;;6348;;;;;6190:17;6382:8;;;;6422:7;;6460;;;;6498;;;;6213:325;;6121:31;;;;6190:17;;-1:-1:-1;;;6241:43:151;6213:325;;6290:8;;6320;;6348;;6382;;6422:7;;6460;6213:325;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;6213:325:151;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;6213:325:151;;;179:29:-1;;;;160:49;;;6577:9:151;;:28;;6213:325;;-1:-1:-1;;;;;;;;6577:9:151;;:28;;6213:325;;6577:28;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;6559:46:151;-1:-1:-1;6559:46:151;-1:-1:-1;6559:46:151;6609:31;;;;-1:-1:-1;;;6609:31:151;;;;;;;;;6702:2;6696:4;6692:13;6686:20;6659:47;;6751:2;6745:4;6741:13;6735:20;6710:45;;6654:105;;;;;;;:::o;3821:129:145:-;3883:7;3903:43;3911:1;3914;3903:43;;;;;;;;;;;;;;;;;:7;:43::i;3045:393:96:-;3340:15;;3312:122;;-1:-1:-1;;;3312:122:96;;3181:32;;;;-1:-1:-1;;;;;3340:15:96;;;;3312:82;;:122;;3395:8;;3405:6;;3413:8;;3423:10;;3312:122;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3312:122:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3312:122:96;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3312:122:96;;;;;;;;;3255:179;;;;-1:-1:-1;3045:393:96;-1:-1:-1;;;;;3045:393:96:o;4045:285:145:-;4144:7;4233:12;4225:6;4217:29;;;;-1:-1:-1;;;4217:29:145;;;;;;;;;;-1:-1:-1;4255:6:145;4251:30;;-1:-1:-1;4275:1:145;4268:8;;4251:30;4284:9;4307:1;4302;4298;:5;4297:11;;;;;;4312:1;4296:17;;4045:285;-1:-1:-1;;;;;4045:285:145:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:124;206:20;;231:30;206:20;231:30;;273:128;348:13;;366:30;348:13;366:30;;408:130;475:20;;500:33;475:20;500:33;;545:128;611:20;;636:32;611:20;636:32;;681:440;;782:3;775:4;767:6;763:17;759:27;749:2;;800:1;797;790:12;749:2;837:6;824:20;859:64;874:48;915:6;874:48;;;859:64;;;850:73;;943:6;936:5;929:21;979:4;971:6;967:17;1012:4;1005:5;1001:16;1047:3;1038:6;1033:3;1029:16;1026:25;1023:2;;;1064:1;1061;1054:12;1023:2;1074:41;1108:6;1103:3;1098;1074:41;;;742:379;;;;;;;;1266:134;1344:13;;1362:33;1344:13;1362:33;;1407:241;;1511:2;1499:9;1490:7;1486:23;1482:32;1479:2;;;1527:1;1524;1517:12;1479:2;1562:1;1579:53;1624:7;1604:9;1579:53;;1655:366;;;1776:2;1764:9;1755:7;1751:23;1747:32;1744:2;;;1792:1;1789;1782:12;1744:2;1827:1;1844:53;1889:7;1869:9;1844:53;;;1834:63;;1806:97;1934:2;1952:53;1997:7;1988:6;1977:9;1973:22;1952:53;;;1942:63;;1913:98;1738:283;;;;;;2028:366;;;2149:2;2137:9;2128:7;2124:23;2120:32;2117:2;;;2165:1;2162;2155:12;2117:2;2200:1;2217:53;2262:7;2242:9;2217:53;;;2207:63;;2179:97;2307:2;2325:53;2370:7;2361:6;2350:9;2346:22;2325:53;;2401:257;;2513:2;2501:9;2492:7;2488:23;2484:32;2481:2;;;2529:1;2526;2519:12;2481:2;2564:1;2581:61;2634:7;2614:9;2581:61;;2665:241;;2769:2;2757:9;2748:7;2744:23;2740:32;2737:2;;;2785:1;2782;2775:12;2737:2;2820:1;2837:53;2882:7;2862:9;2837:53;;2913:366;;;3034:2;3022:9;3013:7;3009:23;3005:32;3002:2;;;3050:1;3047;3040:12;3002:2;3085:1;3102:53;3147:7;3127:9;3102:53;;3286:491;;;;3424:2;3412:9;3403:7;3399:23;3395:32;3392:2;;;3440:1;3437;3430:12;3392:2;3475:1;3492:53;3537:7;3517:9;3492:53;;;3482:63;;3454:97;3582:2;3600:53;3645:7;3636:6;3625:9;3621:22;3600:53;;;3590:63;;3561:98;3690:2;3708:53;3753:7;3744:6;3733:9;3729:22;3708:53;;;3698:63;;3669:98;3386:391;;;;;;3784:841;;;;;;3962:3;3950:9;3941:7;3937:23;3933:33;3930:2;;;3979:1;3976;3969:12;3930:2;4014:1;4031:53;4076:7;4056:9;4031:53;;;4021:63;;3993:97;4121:2;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;;;4129:63;;4100:98;4229:2;4247:53;4292:7;4283:6;4272:9;4268:22;4247:53;;;4237:63;;4208:98;4337:2;4355:50;4397:7;4388:6;4377:9;4373:22;4355:50;;;4345:60;;4316:95;4470:3;4459:9;4455:19;4442:33;4495:18;4487:6;4484:30;4481:2;;;4527:1;4524;4517:12;4481:2;4547:62;4601:7;4592:6;4581:9;4577:22;4547:62;;;4537:72;;4421:194;3924:701;;;;;;;;;4632:239;;4735:2;4723:9;4714:7;4710:23;4706:32;4703:2;;;4751:1;4748;4741:12;4703:2;4786:1;4803:52;4847:7;4827:9;4803:52;;4878:263;;4993:2;4981:9;4972:7;4968:23;4964:32;4961:2;;;5009:1;5006;4999:12;4961:2;5044:1;5061:64;5117:7;5097:9;5061:64;;5148:399;;;5280:2;5268:9;5259:7;5255:23;5251:32;5248:2;;;5296:1;5293;5286:12;5248:2;5331:1;5348:64;5404:7;5384:9;5348:64;;;5338:74;;5310:108;5449:2;5467:64;5523:7;5514:6;5503:9;5499:22;5467:64;;5554:142;5645:45;5684:5;5645:45;;;5640:3;5633:58;5627:69;;;5703:113;5786:24;5804:5;5786:24;;5823:104;5900:21;5915:5;5900:21;;5934:113;6017:24;6035:5;6017:24;;6054:356;;6182:38;6214:5;6182:38;;;6232:88;6313:6;6308:3;6232:88;;;6225:95;;6325:52;6370:6;6365:3;6358:4;6351:5;6347:16;6325:52;;;6389:16;;;;;6162:248;-1:-1;;6162:248;6417:168;6521:58;6573:5;6521:58;;6592:347;;6704:39;6737:5;6704:39;;;6755:71;6819:6;6814:3;6755:71;;;6748:78;;6831:52;6876:6;6871:3;6864:4;6857:5;6853:16;6831:52;;;6904:29;6926:6;6904:29;;;6895:39;;;;6684:255;-1:-1;;;6684:255;6947:305;;7107:66;7171:1;7166:3;7107:66;;;-1:-1;;;7186:29;;7243:2;7234:12;;7093:159;-1:-1;;7093:159;7261:327;;7421:67;7485:2;7480:3;7421:67;;;7521:29;7501:50;;7579:2;7570:12;;7407:181;-1:-1;;7407:181;7597:375;;7757:67;7821:2;7816:3;7757:67;;;7857:34;7837:55;;-1:-1;;;7921:2;7912:12;;7905:30;7963:2;7954:12;;7743:229;-1:-1;;7743:229;7981:327;;8141:67;8205:2;8200:3;8141:67;;;8241:29;8221:50;;8299:2;8290:12;;8127:181;-1:-1;;8127:181;8317:316;;8477:67;8541:2;8536:3;8477:67;;;-1:-1;;;8557:39;;8624:2;8615:12;;8463:170;-1:-1;;8463:170;8642:332;;8802:67;8866:2;8861:3;8802:67;;;8902:34;8882:55;;8965:2;8956:12;;8788:186;-1:-1;;8788:186;8983:319;;9143:67;9207:2;9202:3;9143:67;;;-1:-1;;;9223:42;;9293:2;9284:12;;9129:173;-1:-1;;9129:173;9311:323;;9471:67;9535:2;9530:3;9471:67;;;9571:25;9551:46;;9625:2;9616:12;;9457:177;-1:-1;;9457:177;9643:395;;9803:67;9867:2;9862:3;9803:67;;;9903:34;9883:55;;9972:28;9967:2;9958:12;;9951:50;10029:2;10020:12;;9789:249;-1:-1;;9789:249;10047:329;;10207:67;10271:2;10266:3;10207:67;;;10307:31;10287:52;;10367:2;10358:12;;10193:183;-1:-1;;10193:183;10385:328;;10545:67;10609:2;10604:3;10545:67;;;10645:30;10625:51;;10704:2;10695:12;;10531:182;-1:-1;;10531:182;10722:314;;10882:67;10946:2;10941:3;10882:67;;;-1:-1;;;10962:37;;11027:2;11018:12;;10868:168;-1:-1;;10868:168;11045:324;;11205:67;11269:2;11264:3;11205:67;;;11305:26;11285:47;;11360:2;11351:12;;11191:178;-1:-1;;11191:178;11378:370;;11538:67;11602:2;11597:3;11538:67;;;11638:34;11618:55;;-1:-1;;;11702:2;11693:12;;11686:25;11739:2;11730:12;;11524:224;-1:-1;;11524:224;11757:312;;11917:67;11981:2;11976:3;11917:67;;;-1:-1;;;11997:35;;12060:2;12051:12;;11903:166;-1:-1;;11903:166;12078:318;;12238:67;12302:2;12297:3;12238:67;;;-1:-1;;;12318:41;;12387:2;12378:12;;12224:172;-1:-1;;12224:172;12405:310;;12565:67;12629:2;12624:3;12565:67;;;-1:-1;;;12645:33;;12706:2;12697:12;;12551:164;-1:-1;;12551:164;12724:321;;12884:67;12948:2;12943:3;12884:67;;;-1:-1;;;12964:44;;13036:2;13027:12;;12870:175;-1:-1;;12870:175;13054:318;;13214:67;13278:2;13273:3;13214:67;;;-1:-1;;;13294:41;;13363:2;13354:12;;13200:172;-1:-1;;13200:172;13381:320;;13541:67;13605:2;13600:3;13541:67;;;-1:-1;;;13621:43;;13692:2;13683:12;;13527:174;-1:-1;;13527:174;13710:316;;13870:67;13934:2;13929:3;13870:67;;;-1:-1;;;13950:39;;14017:2;14008:12;;13856:170;-1:-1;;13856:170;14035:320;;14195:67;14259:2;14254:3;14195:67;;;-1:-1;;;14275:43;;14346:2;14337:12;;14181:174;-1:-1;;14181:174;14364:383;;14524:67;14588:2;14583:3;14524:67;;;14624:34;14604:55;;-1:-1;;;14688:2;14679:12;;14672:38;14738:2;14729:12;;14510:237;-1:-1;;14510:237;14756:296;;14933:83;15014:1;15009:3;14933:83;;15061:315;;15221:67;15285:2;15280:3;15221:67;;;-1:-1;;;15301:38;;15367:2;15358:12;;15207:169;-1:-1;;15207:169;15385:314;;15545:67;15609:2;15604:3;15545:67;;;-1:-1;;;15625:37;;15690:2;15681:12;;15531:168;-1:-1;;15531:168;15708:312;;15868:67;15932:2;15927:3;15868:67;;;-1:-1;;;15948:35;;16011:2;16002:12;;15854:166;-1:-1;;15854:166;16029:327;;16189:67;16253:2;16248:3;16189:67;;;16289:29;16269:50;;16347:2;16338:12;;16175:181;-1:-1;;16175:181;16365:313;;16525:67;16589:2;16584:3;16525:67;;;-1:-1;;;16605:36;;16669:2;16660:12;;16511:167;-1:-1;;16511:167;16687:379;;16847:67;16911:2;16906:3;16847:67;;;16947:34;16927:55;;-1:-1;;;17011:2;17002:12;;16995:34;17057:2;17048:12;;16833:233;-1:-1;;16833:233;17075:311;;17235:67;17299:2;17294:3;17235:67;;;-1:-1;;;17315:34;;17377:2;17368:12;;17221:165;-1:-1;;17221:165;17395:322;;17555:67;17619:2;17614:3;17555:67;;;-1:-1;;;17635:45;;17708:2;17699:12;;17541:176;-1:-1;;17541:176;17726:331;;17886:67;17950:2;17945:3;17886:67;;;17986:33;17966:54;;18048:2;18039:12;;17872:185;-1:-1;;17872:185;18066:316;;18226:67;18290:2;18285:3;18226:67;;;-1:-1;;;18306:39;;18373:2;18364:12;;18212:170;-1:-1;;18212:170;18510:262;;18654:93;18743:3;18734:6;18654:93;;18779:370;;18977:147;19120:3;18977:147;;19156:213;19274:2;19259:18;;19288:71;19263:9;19332:6;19288:71;;19376:899;19670:3;19655:19;;19685:79;19659:9;19737:6;19685:79;;;19775:72;19843:2;19832:9;19828:18;19819:6;19775:72;;;19858;19926:2;19915:9;19911:18;19902:6;19858:72;;;19941;20009:2;19998:9;19994:18;19985:6;19941:72;;;20024:73;20092:3;20081:9;20077:19;20068:6;20024:73;;;20108;20176:3;20165:9;20161:19;20152:6;20108:73;;;20192;20260:3;20249:9;20245:19;20236:6;20192:73;;;19641:634;;;;;;;;;;;20282:324;20428:2;20413:18;;20442:71;20417:9;20486:6;20442:71;;;20524:72;20592:2;20581:9;20577:18;20568:6;20524:72;;20613:899;20907:3;20892:19;;20922:71;20896:9;20966:6;20922:71;;;21004:72;21072:2;21061:9;21057:18;21048:6;21004:72;;;21087:80;21163:2;21152:9;21148:18;21139:6;21087:80;;21519:883;21805:3;21790:19;;21820:71;21794:9;21864:6;21820:71;;;21902:72;21970:2;21959:9;21955:18;21946:6;21902:72;;;21985;22053:2;22042:9;22038:18;22029:6;21985:72;;;22068;22136:2;22125:9;22121:18;22112:6;22068:72;;22409:547;22611:3;22596:19;;22626:71;22600:9;22670:6;22626:71;;;22708:72;22776:2;22765:9;22761:18;22752:6;22708:72;;;22791;22859:2;22848:9;22844:18;22835:6;22791:72;;;22874;22942:2;22931:9;22927:18;22918:6;22874:72;;;22582:374;;;;;;;;22963:435;23137:2;23122:18;;23151:71;23126:9;23195:6;23151:71;;;23233:72;23301:2;23290:9;23286:18;23277:6;23233:72;;;23316;23384:2;23373:9;23369:18;23360:6;23316:72;;23405:547;23607:3;23592:19;;23622:71;23596:9;23666:6;23622:71;;;23704:72;23772:2;23761:9;23757:18;23748:6;23704:72;;;23787;23855:2;23844:9;23840:18;23831:6;23787:72;;23959:659;24189:3;24174:19;;24204:71;24178:9;24248:6;24204:71;;;24286:72;24354:2;24343:9;24339:18;24330:6;24286:72;;;24369;24437:2;24426:9;24422:18;24413:6;24369:72;;;24452;24520:2;24509:9;24505:18;24496:6;24452:72;;;24535:73;24603:3;24592:9;24588:19;24579:6;24535:73;;;24160:458;;;;;;;;;24625:324;24771:2;24756:18;;24785:71;24760:9;24829:6;24785:71;;;24867:72;24935:2;24924:9;24920:18;24911:6;24867:72;;24956:435;25130:2;25115:18;;25144:71;25119:9;25188:6;25144:71;;;25226:72;25294:2;25283:9;25279:18;25270:6;25226:72;;25398:201;25510:2;25495:18;;25524:65;25499:9;25562:6;25524:65;;25606:535;25802:3;25787:19;;25817:65;25791:9;25855:6;25817:65;;;25893:72;25961:2;25950:9;25946:18;25937:6;25893:72;;26148:983;26456:3;26441:19;;26471:71;26445:9;26515:6;26471:71;;;26553:66;26615:2;26604:9;26600:18;26591:6;26553:66;;;26630:72;26698:2;26687:9;26683:18;26674:6;26630:72;;;26713;26781:2;26770:9;26766:18;26757:6;26713:72;;;26796:73;26864:3;26853:9;26849:19;26840:6;26796:73;;;26880;26948:3;26937:9;26933:19;26924:6;26880:73;;;26964;27032:3;27021:9;27017:19;27008:6;26964:73;;;27048;27116:3;27105:9;27101:19;27092:6;27048:73;;;26427:704;;;;;;;;;;;;27138:1435;27560:3;27545:19;;27575:71;27549:9;27619:6;27575:71;;;27657:72;27725:2;27714:9;27710:18;27701:6;27657:72;;;27740;27808:2;27797:9;27793:18;27784:6;27740:72;;;27823:66;27885:2;27874:9;27870:18;27861:6;27823:66;;;27900:73;27968:3;27957:9;27953:19;27944:6;27900:73;;;27984;28052:3;28041:9;28037:19;28028:6;27984:73;;;28068;28136:3;28125:9;28121:19;28112:6;28068:73;;;28152;28220:3;28209:9;28205:19;28196:6;28152:73;;;28236;28304:3;28293:9;28289:19;28280:6;28236:73;;;28320;28388:3;28377:9;28373:19;28364:6;28320:73;;;28404:74;28473:3;28462:9;28458:19;28448:7;28404:74;;;28489;28558:3;28547:9;28543:19;28533:7;28489:74;;;27531:1042;;;;;;;;;;;;;;;;28580:255;28719:2;28704:18;;28733:92;28708:9;28798:6;28733:92;;28842:301;28980:2;28994:47;;;28965:18;;29055:78;28965:18;29119:6;29055:78;;29150:407;29341:2;29355:47;;;29326:18;;29416:131;29326:18;29416:131;;29564:407;29755:2;29769:47;;;29740:18;;29830:131;29740:18;29830:131;;29978:407;30169:2;30183:47;;;30154:18;;30244:131;30154:18;30244:131;;30392:407;30583:2;30597:47;;;30568:18;;30658:131;30568:18;30658:131;;30806:407;30997:2;31011:47;;;30982:18;;31072:131;30982:18;31072:131;;31220:407;31411:2;31425:47;;;31396:18;;31486:131;31396:18;31486:131;;31634:407;31825:2;31839:47;;;31810:18;;31900:131;31810:18;31900:131;;32048:407;32239:2;32253:47;;;32224:18;;32314:131;32224:18;32314:131;;32462:407;32653:2;32667:47;;;32638:18;;32728:131;32638:18;32728:131;;32876:407;33067:2;33081:47;;;33052:18;;33142:131;33052:18;33142:131;;33290:407;33481:2;33495:47;;;33466:18;;33556:131;33466:18;33556:131;;33704:407;33895:2;33909:47;;;33880:18;;33970:131;33880:18;33970:131;;34118:407;34309:2;34323:47;;;34294:18;;34384:131;34294:18;34384:131;;34532:407;34723:2;34737:47;;;34708:18;;34798:131;34708:18;34798:131;;34946:407;35137:2;35151:47;;;35122:18;;35212:131;35122:18;35212:131;;35360:407;35551:2;35565:47;;;35536:18;;35626:131;35536:18;35626:131;;35774:407;35965:2;35979:47;;;35950:18;;36040:131;35950:18;36040:131;;36188:407;36379:2;36393:47;;;36364:18;;36454:131;36364:18;36454:131;;36602:407;36793:2;36807:47;;;36778:18;;36868:131;36778:18;36868:131;;37016:407;37207:2;37221:47;;;37192:18;;37282:131;37192:18;37282:131;;37430:407;37621:2;37635:47;;;37606:18;;37696:131;37606:18;37696:131;;37844:407;38035:2;38049:47;;;38020:18;;38110:131;38020:18;38110:131;;38258:407;38449:2;38463:47;;;38434:18;;38524:131;38434:18;38524:131;;38672:407;38863:2;38877:47;;;38848:18;;38938:131;38848:18;38938:131;;39086:407;39277:2;39291:47;;;39262:18;;39352:131;39262:18;39352:131;;39500:407;39691:2;39705:47;;;39676:18;;39766:131;39676:18;39766:131;;39914:407;40105:2;40119:47;;;40090:18;;40180:131;40090:18;40180:131;;40328:407;40519:2;40533:47;;;40504:18;;40594:131;40504:18;40594:131;;40742:407;40933:2;40947:47;;;40918:18;;41008:131;40918:18;41008:131;;41156:407;41347:2;41361:47;;;41332:18;;41422:131;41332:18;41422:131;;41570:407;41761:2;41775:47;;;41746:18;;41836:131;41746:18;41836:131;;41984:407;42175:2;42189:47;;;42160:18;;42250:131;42160:18;42250:131;;42398:407;42589:2;42603:47;;;42574:18;;42664:131;42574:18;42664:131;;42812:213;42930:2;42915:18;;42944:71;42919:9;42988:6;42944:71;;43032:435;43206:2;43191:18;;43220:71;43195:9;43264:6;43220:71;;;43302:72;43370:2;43359:9;43355:18;43346:6;43302:72;;;43385;43453:2;43442:9;43438:18;43429:6;43385:72;;43474:435;43648:2;43633:18;;43662:71;43637:9;43706:6;43662:71;;43916:659;44146:3;44131:19;;44161:71;44135:9;44205:6;44161:71;;;44243:72;44311:2;44300:9;44296:18;44287:6;44243:72;;44582:771;44840:3;44825:19;;44855:71;44829:9;44899:6;44855:71;;;44937:72;45005:2;44994:9;44990:18;44981:6;44937:72;;;45020;45088:2;45077:9;45073:18;45064:6;45020:72;;;45103;45171:2;45160:9;45156:18;45147:6;45103:72;;;45186:73;45254:3;45243:9;45239:19;45230:6;45186:73;;;45270;45338:3;45327:9;45323:19;45314:6;45270:73;;;44811:542;;;;;;;;;;45360:256;45422:2;45416:9;45448:17;;;45523:18;45508:34;;45544:22;;;45505:62;45502:2;;;45580:1;45577;45570:12;45502:2;45596;45589:22;45400:216;;-1:-1;45400:216;45623:321;;45766:18;45758:6;45755:30;45752:2;;;45798:1;45795;45788:12;45752:2;-1:-1;45929:4;45865;45842:17;;;;-1:-1;;45838:33;45919:15;;45689:255;45951:121;46038:12;;46009:63;46209:144;46344:3;46322:31;-1:-1;46322:31;46362:163;46465:19;;;46514:4;46505:14;;46458:67;46533:91;;46595:24;46613:5;46595:24;;46631:85;46697:13;46690:21;;46673:43;46723:72;46785:5;46768:27;46802:144;-1:-1;;;;;;46863:78;;46846:100;46953:121;-1:-1;;;;;47015:54;;46998:76;47160:129;;47247:37;47278:5;47296:163;;47396:58;47448:5;47396:58;;47846:145;47927:6;47922:3;47917;47904:30;-1:-1;47983:1;47965:16;;47958:27;47897:94;48000:268;48065:1;48072:101;48086:6;48083:1;48080:13;48072:101;;;48153:11;;;48147:18;48134:11;;;48127:39;48108:2;48101:10;48072:101;;;48188:6;48185:1;48182:13;48179:2;;;-1:-1;;48253:1;48235:16;;48228:27;48049:219;48276:97;48364:2;48344:14;-1:-1;;48340:28;;48324:49;48381:117;48450:24;48468:5;48450:24;;;48443:5;48440:35;48430:2;;48489:1;48486;48479:12;48505:111;48571:21;48586:5;48571:21;;48623:117;48692:24;48710:5;48692:24;;48747:115;48815:23;48832:5;48815:23;"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "closeWithDeposit(bytes32,address,uint256)": "366f513b",
              "closeWithSwap(bytes32,address,uint256,bool,bytes)": "f8de21d2",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "initialize(address)": "c4d66de8",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "paySwapExcessToBorrowerThreshold()": "ee54a4ec",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "closeWithDeposit(bytes32,address,uint256)": {
                "notice": "Closes a loan by doing a deposit."
              },
              "closeWithSwap(bytes32,address,uint256,bool,bytes)": {
                "notice": "Close a position by swapping the collateral back to loan tokens paying the lender and withdrawing the remainder."
              }
            },
            "notice": "Close a loan w/deposit, close w/swap. There are 2 functions for ending a loan on the  protocol contract: closeWithSwap and closeWithDeposit. Margin trade  positions are always closed with a swap. * Loans are liquidated if the position goes below margin maintenance."
          }
        }
      },
      "contracts/modules/LoanMaintenance.sol": {
        "LoanMaintenance": {
          "abi": [
            {
              "inputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newPrincipal",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newCollateral",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestDuration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                }
              ],
              "name": "Borrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegated",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "isActive",
                  "type": "bool"
                }
              ],
              "name": "DelegatedManagerSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "rate",
                  "type": "uint256"
                }
              ],
              "name": "DepositCollateral",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnRewardFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "ExternalSwap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "LoanSwap",
              "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": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayBorrowingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "interestToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "effectiveInterest",
                  "type": "uint256"
                }
              ],
              "name": "PayInterestTransfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayLendingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "positionSize",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "borrowedAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "settlementDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "entryPrice",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "entryLeverage",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentLeverage",
                  "type": "uint256"
                }
              ],
              "name": "Trade",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultWithdraw",
              "type": "event"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "name": "depositCollateral",
              "outputs": [],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "useCollateral",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "extendLoanDuration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "secondsExtended",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "start",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "unsafeOnly",
                  "type": "bool"
                }
              ],
              "name": "getActiveLoans",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "loanId",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "principal",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "collateral",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "interestOwedPerDay",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "interestDepositRemaining",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startRate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "currentMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLiquidatable",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxSeizable",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanMaintenance.LoanReturnData[]",
                  "name": "loansData",
                  "type": "tuple[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                }
              ],
              "name": "getLenderInterestData",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "interestPaid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestPaidDate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestOwedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestUnPaid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestFeePercent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                }
              ],
              "name": "getLoan",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "loanId",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "principal",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "collateral",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "interestOwedPerDay",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "interestDepositRemaining",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startRate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "currentMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLiquidatable",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxSeizable",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanMaintenance.LoanReturnData",
                  "name": "loanData",
                  "type": "tuple"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                }
              ],
              "name": "getLoanInterestData",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "interestOwedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestDepositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestDepositRemaining",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "start",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanType",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "isLender",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "unsafeOnly",
                  "type": "bool"
                }
              ],
              "name": "getUserLoans",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "loanId",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "principal",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "collateral",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "interestOwedPerDay",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "interestDepositRemaining",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startRate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "currentMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLiquidatable",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxSeizable",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanMaintenance.LoanReturnData[]",
                  "name": "loansData",
                  "type": "tuple[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                }
              ],
              "name": "reduceLoanDuration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "secondsReduced",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                }
              ],
              "name": "withdrawAccruedInterest",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawCollateral",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "actualWithdrawAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "depositCollateral(bytes32,uint256)": {
                "params": {
                  "depositAmount": "The amount to be deposited in collateral tokens.",
                  "loanId": "A unique ID representing the loan."
                },
                "return": "actualWithdrawAmount The amount withdrawn taking into account drawdowns."
              },
              "extendLoanDuration(bytes32,uint256,bool,bytes)": {
                "params": {
                  "depositAmount": "The amount to be deposited in loan tokens. Used to pay the interest for the new duration.",
                  "loanId": "A unique ID representing the loan.",
                  "useCollateral": "Whether pay interests w/ the collateral. If true, depositAmount of loan tokens\t\t\t\t\twill be purchased with the collateral. // param calldata The payload for the call. These loan DataBytes are additional loan data (not in use for token swaps)."
                },
                "return": "secondsExtended The amount of time in seconds the loan is extended."
              },
              "getActiveLoans(uint256,uint256,bool)": {
                "params": {
                  "count": "The maximum number of results.",
                  "start": "The lower loan ID to start with.",
                  "unsafeOnly": "The safe filter (True/False)."
                },
                "return": "loansData The data structure w/ loan information."
              },
              "getLenderInterestData(address,address)": {
                "params": {
                  "lender": "The lender address.",
                  "loanToken": "The loan token address."
                },
                "return": "interestPaid The total amount of interest that has been paid to a lender so far.interestPaidDate The date of the last interest pay out, or 0 if no interest has been withdrawn yet.interestOwedPerDay The amount of interest the lender is earning per day.interestUnPaid The total amount of interest the lender is owned and not yet withdrawn.interestFeePercent The fee retained by the protocol before interest is paid to the lender.principalTotal The total amount of outstanding principal the lender has loaned."
              },
              "getLoan(bytes32)": {
                "params": {
                  "loanId": "A unique ID representing the loan."
                },
                "return": "loansData The data structure w/ loan information."
              },
              "getLoanInterestData(bytes32)": {
                "params": {
                  "loanId": "A unique ID representing the loan."
                },
                "return": "loanToken The loan token that interest is paid in.interestOwedPerDay The amount of interest the borrower is paying per day.interestDepositTotal The total amount of interest the borrower has deposited.interestDepositRemaining The amount of deposited interest that is not yet owed to a lender."
              },
              "getUserLoans(address,uint256,uint256,uint256,bool,bool)": {
                "params": {
                  "count": "The maximum number of results.",
                  "isLender": "Whether the user is lender or borrower.",
                  "loanType": "The type of loan.  loanType 0: all loans.  loanType 1: margin trade loans.  loanType 2: non-margin trade loans.",
                  "start": "The lower loan ID to start with.",
                  "unsafeOnly": "The safe filter (True/False).",
                  "user": "The user address."
                },
                "return": "loansData The array of loans as query result."
              },
              "initialize(address)": {
                "params": {
                  "target": "The address of the logic contract instance."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "reduceLoanDuration(bytes32,address,uint256)": {
                "params": {
                  "loanId": "A unique ID representing the loan.",
                  "receiver": "The account getting the withdrawal.",
                  "withdrawAmount": "The amount to be withdrawn in loan tokens."
                },
                "return": "secondsReduced The amount of time in seconds the loan is reduced."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "withdrawAccruedInterest(address)": {
                "details": "Wrapper for _payInterest internal function.",
                "params": {
                  "loanToken": "The loan token address."
                }
              },
              "withdrawCollateral(bytes32,address,uint256)": {
                "params": {
                  "loanId": "A unique ID representing the loan.",
                  "receiver": "The account getting the withdrawal.",
                  "withdrawAmount": "The amount to be withdrawn in collateral tokens."
                },
                "return": "actualWithdrawAmount The amount withdrawn taking into account drawdowns."
              }
            },
            "title": "Loan Maintenance contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d00000603955348015620000a657600080fd5b506000620000bc6001600160e01b036200011016565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000114565b3390565b6151db80620001246000396000f3fe6080604052600436106103b85760003560e01c80638f32d59b116101f2578063cfc85c061161010d578063e8f62764116100a0578063f589a3e71161006f578063f589a3e714610aeb578063f6ddc8b314610b00578063f706b1f214610b15578063f851a44014610b2a576103b8565b8063e8f6276414610a8c578063edab119f14610aa1578063f0e085f514610ab6578063f2fde38b14610acb576103b8565b8063d485045e116100dc578063d485045e14610a19578063db35400d14610a39578063dea9b46414610a59578063e81fefa014610a6c576103b8565b8063cfc85c06146109bc578063d1979fb0146109cf578063d288208c146109ef578063d473c2da14610a04576103b8565b8063b7e1524111610185578063c4a9081511610154578063c4a908151461090e578063c4d66de814610946578063cb6eacd114610968578063cd5d808d1461099c576103b8565b8063b7e15241146108a4578063b9cffa3e146108c4578063ba4861e9146108d9578063bdee453c146108ee576103b8565b8063acc04348116101c1578063acc0434814610838578063ae0a85301461084d578063afe8400914610862578063b30643d914610884576103b8565b80638f32d59b146107be57806392d894f8146107d3578063959083d3146107f35780639b16cd8714610808576103b8565b80634699f846116102e25780637420ca3e116102755780638456cb59116102445780638456cb59146107475780638932f5f71461075c5780638da5cb5b146107895780638dc48ba51461079e576103b8565b80637420ca3e146106f3578063742e67981461070857806378d849ed1461071d5780637a8faeb814610732576103b8565b806360857c2c116102b157806360857c2c1461066257806362fff3f61461068257806368c4ac26146106b35780636e663730146106d3576103b8565b80634699f846146105f45780634f28cac214610609578063569fc1fb1461061e578063574442cc1461064d576103b8565b806324cc57491161035a5780633452d2d4116103295780633452d2d4146105745780633fca506e146105945780634115a2b6146105b45780634203e395146105d4576103b8565b806324cc5749146104fd5780632a3240271461052a5780632f4707641461053f5780633432423c14610554576103b8565b8063122f0e3a11610396578063122f0e3a1461047057806317548b791461049d5780631b7bde74146104bd578063218b39c6146104dd576103b8565b806302a3fe64146103e6578063065d810f1461041c5780630676c1b71461044e575b3480156103c457600080fd5b5060405162461bcd60e51b81526004016103dd90614fa2565b60405180910390fd5b3480156103f257600080fd5b50610406610401366004614000565b610b3f565b6040516104139190614cec565b60405180910390f35b34801561042857600080fd5b5061043c610437366004613fd0565b610c8c565b6040516104139695949392919061508a565b34801561045a57600080fd5b50610463610ccc565b6040516104139190614b3a565b34801561047c57600080fd5b5061049061048b3660046140e2565b610cdb565b6040516104139190615061565b3480156104a957600080fd5b506104636104b83660046141cc565b61107b565b3480156104c957600080fd5b506104906104d8366004613f96565b611096565b3480156104e957600080fd5b506104636104f8366004613f78565b6110b3565b34801561050957600080fd5b5061051d610518366004613f78565b6110ce565b6040516104139190614cfd565b34801561053657600080fd5b506104906110e3565b34801561054b57600080fd5b506104906110e9565b34801561056057600080fd5b5061043c61056f366004613fd0565b6110ef565b34801561058057600080fd5b5061049061058f366004613f78565b61112f565b3480156105a057600080fd5b506104906105af366004613f78565b611141565b3480156105c057600080fd5b5061051d6105cf3660046140c3565b611153565b3480156105e057600080fd5b506104906105ef366004613f78565b611173565b34801561060057600080fd5b50610490611185565b34801561061557600080fd5b5061049061118b565b34801561062a57600080fd5b5061063e6106393660046140a5565b611191565b60405161041393929190614e35565b34801561065957600080fd5b506104906111b2565b34801561066e57600080fd5b5061040661067d366004614238565b6111b8565b34801561068e57600080fd5b506106a261069d366004613f96565b6112b7565b60405161041395949392919061506f565b3480156106bf57600080fd5b5061051d6106ce366004613f78565b6112f1565b3480156106df57600080fd5b506104636106ee366004613f78565b611306565b3480156106ff57600080fd5b50610463611321565b34801561071457600080fd5b50610490611330565b34801561072957600080fd5b50610463611336565b34801561073e57600080fd5b50610490611345565b34801561075357600080fd5b5061051d61134b565b34801561076857600080fd5b5061077c6107773660046140a5565b611354565b6040516104139190615052565b34801561079557600080fd5b5061046361136e565b3480156107aa57600080fd5b506104636107b9366004613f78565b61137d565b3480156107ca57600080fd5b5061051d611398565b3480156107df57600080fd5b506104906107ee366004613f78565b6113be565b3480156107ff57600080fd5b506104906113d0565b34801561081457600080fd5b506108286108233660046140a5565b6113d6565b6040516104139493929190614cd1565b34801561084457600080fd5b50610490611467565b34801561085957600080fd5b5061049061146d565b34801561086e57600080fd5b50610877611473565b6040516104139190614e43565b34801561089057600080fd5b5061049061089f366004613f78565b611482565b3480156108b057600080fd5b506104906108bf366004613f78565b611494565b3480156108d057600080fd5b506104636114a6565b3480156108e557600080fd5b506104636114b5565b3480156108fa57600080fd5b50610490610909366004613f78565b6114c4565b34801561091a57600080fd5b5061092e6109293660046140a5565b6114d6565b6040516104139c9b9a99989796959493929190614d82565b34801561095257600080fd5b50610966610961366004613f78565b611548565b005b34801561097457600080fd5b506109886109833660046140a5565b6116a3565b604051610413989796959493929190614d0b565b3480156109a857600080fd5b506104906109b7366004613f96565b6116f5565b6104906109ca36600461414e565b611712565b3480156109db57600080fd5b5061043c6109ea366004613f96565b611b8a565b3480156109fb57600080fd5b50610463611c79565b348015610a1057600080fd5b50610490611c88565b348015610a2557600080fd5b50610490610a34366004613f78565b611c8e565b348015610a4557600080fd5b50610490610a543660046140e2565b611ca0565b610966610a6736600461412f565b611ec5565b348015610a7857600080fd5b50610966610a87366004613f78565b6120ec565b348015610a9857600080fd5b5061046361211c565b348015610aad57600080fd5b5061049061212b565b348015610ac257600080fd5b50610490612131565b348015610ad757600080fd5b50610966610ae6366004613f78565b612137565b348015610af757600080fd5b50610490612164565b348015610b0c57600080fd5b5061049061216a565b348015610b2157600080fd5b50610463612170565b348015610b3657600080fd5b5061046361217f565b6060600083610b65576001600160a01b0388166000908152601260205260409020610b7e565b6001600160a01b03881660009081526011602052604090205b90506000610baa610b8e8361218e565b610b9e8a8a63ffffffff61219516565b9063ffffffff6121ba16565b9050808810610bbb5750610c829050565b86604051908082528060200260200182016040528015610bf557816020015b610be2613d6a565b815260200190600190039081610bda5790505b50925060008882035b8015610c715788821415610c1157610c71565b610c19613d6a565b610c39610c3286600019858f010163ffffffff6121d016565b8a896121f4565b8051909150610c485750610c68565b80868481518110610c5557fe5b6020908102919091010152506001909101905b60001901610bfe565b5087811015610c7e578084525b5050505b9695505050505050565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6000600160005414610cff5760405162461bcd60e51b81526004016103dd90614fd2565b6002600055603d5460ff1615610d275760405162461bcd60e51b81526004016103dd90614e72565b81610d445760405162461bcd60e51b81526004016103dd90614e62565b6000848152600660209081526040808320600181015484526007909252909120600382015460ff16610d885760405162461bcd60e51b81526004016103dd90614fc2565b600a8201546001600160a01b0316331480610dbe575081546000908152600a6020908152604080832033845290915290205460ff165b610dda5760405162461bcd60e51b81526004016103dd90614f72565b600681015415610dfc5760405162461bcd60e51b81526004016103dd90614ea2565b42826007015411610e1f5760405162461bcd60e51b81526004016103dd90615002565b600b8201546002820154610e3f916001600160a01b03908116911661257a565b81546000818152600c6020526040902060028301546003840154600a8601549293610e7f93859391926001600160a01b0392831692908116911642612658565b6000610ebf62015180610eb38460000154610ea74289600701546126b390919063ffffffff16565b9063ffffffff6126f516565b9063ffffffff61272f16565b9050808610610ee05760405162461bcd60e51b81526004016103dd90614f42565b602d5460028401546001600160a01b0390811691161415610f0a57610f058787612771565b610f23565b6002830154610f23906001600160a01b03168888612849565b8154610f3c90610eb3886201518063ffffffff6126f516565b945084846007015411610f615760405162461bcd60e51b81526004016103dd90614ee2565b6007840154610f76908663ffffffff6126b316565b600785018190554210610f9b5760405162461bcd60e51b81526004016103dd90614ee2565b6007840154600090610fb3904263ffffffff6126b316565b9050610e108111610fd65760405162461bcd60e51b81526004016103dd90614ee2565b6001830154610feb908863ffffffff6126b316565b6001840155600b858101546001600160a01b039081166000908152602092835260408082206002808a01549094168352909352919091200154611034908863ffffffff6126b316565b600b958601546001600160a01b0390811660009081526020978852604080822060029889015490931682529190975286209094019390935550506001909155509392505050565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b606060006111d96111c9600f61218e565b610b9e878763ffffffff61219516565b90508085106111e857506112b0565b8360405190808252806020026020018201604052801561122257816020015b61120f613d6a565b8152602001906001900390816112075790505b50915060008582035b80156112a0578582141561123e576112a0565b611246613d6a565b611268611260600f600019858c010163ffffffff6121d016565b6000886121f4565b80519091506112775750611297565b8085848151811061128457fe5b6020908102919091010152506001909101905b6000190161122b565b50848110156112ad578083525b50505b9392505050565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b61135c613d6a565b611368826000806121f4565b92915050565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b03166113af6128ba565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b60008181526006602081815260408084206001808201548652600780855283872060020154888852600c86529387208054920154959094529201546001600160a01b0390911693919291908142821061142f5742611431565b815b905080821161144157600061145c565b61145c62015180610eb387610ea7868663ffffffff6126b316565b925050509193509193565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b611550611398565b61156c5760405162461bcd60e51b81526004016103dd90614f72565b6337aa6d1960e21b600081905260056020527fa56283bb23bc3f9d1e31fd0b79ab29917294036597bcddbdbeb3da57495b10ad546001600160a01b0316906115b490836128be565b6115c563db35400d60e01b836128be565b6115d6630740ff7d60e51b836128be565b6115e76367e42e0360e11b836128be565b6115f8630917871d60e11b836128be565b611609630d1979fb60e41b836128be565b61161a639b16cd8760e01b836128be565b61162a62a8ff9960e21b836128be565b61163b638932f5f760e01b836128be565b61164c6318215f0b60e21b836128be565b6e4c6f616e4d61696e74656e616e636560881b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b60006001600054146117365760405162461bcd60e51b81526004016103dd90614fd2565b6002600055603d5460ff161561175e5760405162461bcd60e51b81526004016103dd90614e72565b8461177b5760405162461bcd60e51b81526004016103dd90614f82565b6000868152600660209081526040808320600181015484526007909252909120600382015460ff166117bf5760405162461bcd60e51b81526004016103dd90614fc2565b8515806117d85750600a8201546001600160a01b031633145b806117fe575081546000908152600a6020908152604080832033845290915290205460ff165b61181a5760405162461bcd60e51b81526004016103dd90614f72565b60068101541561183c5760405162461bcd60e51b81526004016103dd90614ea2565b3415806118645750851580156118645750602d5460028201546001600160a01b039081169116145b6118805760405162461bcd60e51b81526004016103dd90614ed2565b600b82015460028201546118a0916001600160a01b03908116911661257a565b81546000818152600c6020526040902060028301546003840154600a86015492936118e093859391926001600160a01b0392831692908116911642612658565b6000836007015442111561195057600784015461190490429063ffffffff6126b316565b825490915061191a90829063ffffffff6126f516565b905061192f816201518063ffffffff61272f16565b90508089116119505760405162461bcd60e51b81526004016103dd90614eb2565b87156119d15760408051610100808201835285548252600186015460ff811615156020840152046001600160a01b039081169282019290925260028501548216606082015260038501549091166080820152600484015460a0820152600584015460c0820152600684015460e08201526119cc9085908b612934565b611a18565b346119ef5760028301546119cc906001600160a01b0316338b612a60565b883414611a0e5760405162461bcd60e51b81526004016103dd90615032565b611a183334612ac4565b8015611a5257611a2e898263ffffffff6126b316565b600b8501546002850154919a50611a52916001600160a01b03918216911683612b6a565b8154611a6b90610eb38b6201518063ffffffff6126f516565b6007850154909550611a83908663ffffffff61219516565b600785018190554210611aa85760405162461bcd60e51b81526004016103dd90614ee2565b6007840154600090611ac0904263ffffffff6126b316565b9050610e108111611ae35760405162461bcd60e51b81526004016103dd90614ee2565b6001830154611af8908b63ffffffff61219516565b6001840155600b858101546001600160a01b039081166000908152602092835260408082206002808a01549094168352909352919091200154611b41908b63ffffffff61219516565b600b958601546001600160a01b03908116600090815260209788526040808220600298890154909316825291909752862090940193909355505060019091555095945050505050565b600080600080600080611b9b613df5565b506001600160a01b038089166000908152600b60209081526040808320938b16835292815290829020825160a081018452815481526001820154928101839052600282015493810193909352600381015460608401526004015460808301819052611c1b916201518091610eb39190610ea790429063ffffffff6126b316565b93508060400151841115611c3157806040015193505b606081015180611c42576000611c48565b81608001515b60208301516080840151611c5d576000611c5f565b865b6015549451939d929c50909a509850919650945092505050565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6000600160005414611cc45760405162461bcd60e51b81526004016103dd90614fd2565b6002600055603d5460ff1615611cec5760405162461bcd60e51b81526004016103dd90614e72565b81611d095760405162461bcd60e51b81526004016103dd90614e62565b6000848152600660209081526040808320600181015484526007909252909120600382015460ff16611d4d5760405162461bcd60e51b81526004016103dd90614fc2565b600a8201546001600160a01b0316331480611d83575081546000908152600a6020908152604080832033845290915290205460ff165b611d9f5760405162461bcd60e51b81526004016103dd90614f72565b600280549082015460038301546004808601546005808801549087015460405163f80b25fb60e01b81526000976001600160a01b039081169763f80b25fb97611df397918316969216949193919201614c59565b60206040518083038186803b158015611e0b57600080fd5b505afa158015611e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e4391908101906141ea565b905080851115611e5557809350611e59565b8493505b6005830154611e6e908563ffffffff6126b316565b6005840155602d5460038301546001600160a01b0390811691161415611e9d57611e988685612771565b611eb6565b6003820154611eb6906001600160a01b03168786612849565b50506001600055509392505050565b600160005414611ee75760405162461bcd60e51b81526004016103dd90614fd2565b6002600055603d5460ff1615611f0f5760405162461bcd60e51b81526004016103dd90614e72565b80611f2c5760405162461bcd60e51b81526004016103dd90614f82565b6000828152600660209081526040808320600181015484526007909252909120600382015460ff16611f705760405162461bcd60e51b81526004016103dd90614fc2565b341580611f8f5750602d5460038201546001600160a01b039081169116145b611fab5760405162461bcd60e51b81526004016103dd90614ed2565b6005820154611fc0908463ffffffff61219516565b600583015534611fe8576003810154611fe3906001600160a01b03163385612a60565b612011565b8234146120075760405162461bcd60e51b81526004016103dd90615032565b6120113334612ac4565b60028054600383015491830154604051630a7549df60e21b81526000936001600160a01b03938416936329d5277c936120539392821692911690600401614b48565b604080518083038186803b15801561206a57600080fd5b505afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120a29190810190614208565b5090507fc3c4f75ea99730f240c3ea8d68f7a9b94584539caf936f566e8b9f8fe13036f48585836040516120d893929190614e35565b60405180910390a150506001600055505050565b603d5460ff161561210f5760405162461bcd60e51b81526004016103dd90614e72565b612119338261257a565b50565b6014546001600160a01b031681565b601b5481565b60285481565b61213f611398565b61215b5760405162461bcd60e51b81526004016103dd90614f72565b61211981612c01565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6001015490565b6000828201838110156112b05760405162461bcd60e51b81526004016103dd90614ec2565b60008183106121c957816112b0565b5090919050565b60008260010182815481106121e157fe5b9060005260206000200154905092915050565b6121fc613d6a565b612204613e24565b5060008481526006602081815260409283902083516101808101855281548152600182015492810192909252600281015493820193909352600383015460ff161515606082015260048301546080820152600583015460a08201529082015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a8201546001600160a01b03908116610140830152600b909201549091166101608201526122b5613e88565b506020808201516000908152600782526040908190208151610100808201845282548252600183015460ff81161515958301959095526001600160a01b03940484169281019290925260028101548316606083015260038101549092166080820152600482015460a0820152600582015460c082015260069091015460e082015284156123735784600114801561234f575060e081015115155b806123675750846002148015612367575060e0810151155b61237357506112b09050565b61237b613ecc565b506000868152600c6020908152604080832081516060808201845282548252600183015494820194909452600291820154818401529054928501516080808701519088015160a089015194516317f8680960e11b815293969586956001600160a01b0390911694632ff0d012946123fa94909390929091600401614c31565b604080518083038186803b15801561241157600080fd5b505afa158015612425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124499190810190614208565b915091506000808560c00151841161247f5761247487608001518860a00151868960c0015187612c83565b509092509050612492565b881561249257506112b095505050505050565b604051806101e001604052808c815260200187606001516001600160a01b0316815260200187608001516001600160a01b03168152602001886080015181526020018860a00151815260200186600001518152602001428960e0015110156124fb576000612521565b61252162015180610eb38960000151610ea7428e60e001516126b390919063ffffffff16565b8152602001886101200151815260200188610100015181526020018760c0015181526020018581526020018760e0015181526020018860e001518152602001838152602001828152509750505050505050509392505050565b6001600160a01b038083166000908152600b6020908152604080832093851683529290529081206001810154909190158015906125ba5750600482015415155b1561264b576125e562015180610eb38460010154610ea78660040154426126b390919063ffffffff16565b4260048401556002830154909150811115612601575060028101545b801561264657600382015461261c908263ffffffff61219516565b60038301556002820154612636908263ffffffff6126b316565b6002830155612646848483612b6a565b612652565b4260048301555b50505050565b600061268e6a07259756a8d61998000000610eb3601554610ea78b60000154610ea78d60020154896126b390919063ffffffff16565b60028801839055905080156126aa576126aa8387878785612db7565b50505050505050565b60006112b083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613102565b60008261270457506000611368565b8282028284828161271157fe5b04146112b05760405162461bcd60e51b81526004016103dd90614f62565b60006112b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061312e565b801561284557602d546001600160a01b031647808311156127ed57604051632e1a7d4d60e01b81526001600160a01b03831690632e1a7d4d906127ba9084870390600401615061565b600060405180830381600087803b1580156127d457600080fd5b505af11580156127e8573d6000803e3d6000fd5b505050505b6127f78484613165565b836001600160a01b0316826001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a18560405161283a9190615061565b60405180910390a350505b5050565b80156128b5576128696001600160a01b038416838363ffffffff61320116565b816001600160a01b0316836001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a1836040516128ac9190615061565b60405180910390a35b505050565b3390565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b0383169081179091551561291957612913600d6001600160e01b0319841663ffffffff61325a16565b50612845565b6128b5600d6001600160e01b0319841663ffffffff6132a216565b600061297f84600001548460800151856060015187600a0160009054906101000a90046001600160a01b03168860050154600088600160405180602001604052806000815250613363565b50600586015490925061299991508263ffffffff6126b316565b60058501819055600254606085015160808601516004808901546040516317f8680960e11b81526000966001600160a01b0390961695632ff0d012956129e495909490939201614c31565b604080518083038186803b1580156129fb57600080fd5b505afa158015612a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a339190810190614208565b5090508360c001518111612a595760405162461bcd60e51b81526004016103dd90614f92565b5050505050565b80156128b557612a816001600160a01b03841683308463ffffffff6134c116565b816001600160a01b0316836001600160a01b03167f2790b90165fd3973ad7edde4eca71b4f8808dd4857a2a3a3e8ae5642a5cb196e836040516128ac9190615061565b602d5460408051630d0e30db60e41b815290516001600160a01b0390921691829163d0e30db091859160048082019260009290919082900301818588803b158015612b0e57600080fd5b505af1158015612b22573d6000803e3d6000fd5b5050505050826001600160a01b0316816001600160a01b03167f2790b90165fd3973ad7edde4eca71b4f8808dd4857a2a3a3e8ae5642a5cb196e846040516128ac9190615061565b6000612b8e68056bc75e2d63100000610eb3601554856126f590919063ffffffff16565b9050612b9b8484836134e5565b612bb58385612bb0858563ffffffff6126b316565b612849565b6001600160a01b038085169084167f220e66e3e759e1382aa86cd8af5abca05ebf3ad564f223ae62d977678337272a612bf4858563ffffffff6126b316565b60405161283a9190615061565b6001600160a01b038116612c275760405162461bcd60e51b81526004016103dd90614e92565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b602154600090819084861180612c97575083155b15612ca157612dac565b808611612cb5575086915085905084612dac565b6000612ccf86674563918244f4000063ffffffff61219516565b9050612cf268056bc75e2d63100000610eb38b610ea7858463ffffffff61219516565b9350612d20612d13670de0b6b3a7640000610eb38b8963ffffffff6126f516565b859063ffffffff6126b316565b9350612d4e612d35828463ffffffff6126b316565b610eb38668056bc75e2d6310000063ffffffff6126f516565b935088841115612d5c578893505b612d85612d788368056bc75e2d6310000063ffffffff61219516565b859063ffffffff6126f516565b9250612d9c6064610eb3858863ffffffff61272f16565b925087831115612daa578792505b505b955095509592505050565b602f546002546001600160a01b038581166000908152603c602090815260408083208885168452909152812054909392919091169015612e1a576001600160a01b038087166000908152603c602090815260408083209389168352929052205491505b6037546000906060906001600160a01b038085169163d138f9a160e01b918b9116612e5868056bc75e2d63100000610eb38c8b63ffffffff6126f516565b604051602401612e6a93929190614c09565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612ea89190614b23565b600060405180830381855afa9150503d8060008114612ee3576040519150601f19603f3d011682016040523d82523d6000602084013e612ee8565b606091505b50915091506001821415612efe57602081015194505b84156130f65760375460385460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612f3a929116908990600401614c9b565b602060405180830381600087803b158015612f5457600080fd5b505af1158015612f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f8c9190810190614087565b50603854603f546040516000926001600160a01b031691612fb3918e918a91602401614cb6565b60408051601f198184030181529181526020820180516001600160e01b0316630efe6a8b60e01b17905251612fe89190614b23565b6000604051808303816000865af19150503d8060008114613025576040519150601f19603f3d011682016040523d82523d6000602084013e61302a565b606091505b5050905080156130a157601f54613047908763ffffffff61219516565b601f55603754603f546040518c926001600160a01b0390811692908f16917ff41c644671512f1cda76abfe6038e3d7d526c1377a5a8c692f81703901db215091613094918b918d91614e35565b60405180910390a46130f4565b603754603f546040518c926001600160a01b0390811692908f16917f483f67ea49f76ac15e15bbad68b52788ca47d50aef1e4acfe95e5e307e710812916130eb918b918d91614e35565b60405180910390a45b505b50505050505050505050565b600081848411156131265760405162461bcd60e51b81526004016103dd9190614e51565b505050900390565b6000818361314f5760405162461bcd60e51b81526004016103dd9190614e51565b50600083858161315b57fe5b0495945050505050565b804710156131855760405162461bcd60e51b81526004016103dd90614f22565b6000826001600160a01b03168260405161319e90614b2f565b60006040518083038185875af1925050503d80600081146131db576040519150601f19603f3d011682016040523d82523d6000602084013e6131e0565b606091505b50509050806128b55760405162461bcd60e51b81526004016103dd90614f12565b6040516128b590849063a9059cbb60e01b906132239086908690602401614c9b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613566565b6000613266838361364b565b61329a5750600180830180548083018083556000928352602080842090920185905584835290859052604090912055611368565b506000611368565b60006132ae838361364b565b1561329a57600082815260208490526040902054600184015460001991820191018082146133265760008560010182815481106132e757fe5b906000526020600020015490508086600101848154811061330457fe5b6000918252602080832090910192909255918252869052604090206001830190555b6000848152602086905260408120556001850180548061334257fe5b60019003818190600052602060002001600090559055600192505050611368565b6040805160a0810182526001600160a01b03808b16825289811660208084019190915230838501819052606080850191909152918a166080840152835191820184528882528101879052918201859052600091829182916133c891908e888886613660565b90935091506133d78b83613885565b600254602754604051631e2c62d360e01b81526001600160a01b0390921691631e2c62d391613410918f918f9188918a91600401614c59565b60206040518083038186803b15801561342857600080fd5b505afa15801561343c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061346091908101906141ea565b9050896001600160a01b03168b6001600160a01b03168d7fb4eb3c9b62efcce7021cba5fd9cd0c44df91c2272806ccc5e57df7c912e8d7168c86886040516134aa93929190614cb6565b60405180910390a499509950999650505050505050565b6040516126529085906323b872dd60e01b9061322390879087908790602401614c09565b80156128b5576001600160a01b038216600090815260166020526040902054613514908263ffffffff61219516565b6001600160a01b0380841660008181526016602052604090819020939093559151908516907f40a75ae5f7a5336e75f7c7977e12c4b46a9ac0f30de01a2d5b6c1a4f4af63587906128ac908590615061565b613578826001600160a01b0316613953565b6135945760405162461bcd60e51b81526004016103dd90615042565b60006060836001600160a01b0316836040516135b09190614b23565b6000604051808303816000865af19150503d80600081146135ed576040519150601f19603f3d011682016040523d82523d6000602084013e6135f2565b606091505b5091509150816136145760405162461bcd60e51b81526004016103dd90614ef2565b805115612652578080602001905161362f9190810190614087565b6126525760405162461bcd60e51b81526004016103dd90614ff2565b60009081526020919091526040902054151590565b845160009081901515806136775750602087015115155b6136935760405162461bcd60e51b81526004016103dd90614fb2565b60208701516136a457865160208801525b6020870151875111156136c95760405162461bcd60e51b81526004016103dd90614f32565b6000806000876137865760408a01516137455785156136fa576136f38a60005b602002015161398f565b905061370e565b61370b8a60005b60200201516139bf565b90505b80156137405760808b01518b5161373191908b908e60015b6020020151856139e3565b895161373d90826126b3565b8a525b613786565b851561375d576137568a60026136e9565b905061376b565b6137688a6002613701565b90505b80156137865760408a01516137809082612195565b60408b01525b8651156137a55760405162461bcd60e51b81526004016103dd90614fe2565b6137af8b8b613b33565b60408c015191945092506137fb57895182146137dd5760405162461bcd60e51b81526004016103dd90615022565b80156137f6576137f3828263ffffffff61219516565b91505b613875565b60208a015182111561381f5760405162461bcd60e51b81526004016103dd90614f02565b60408a01518310156138435760405162461bcd60e51b81526004016103dd90614e82565b80156138755760808b015160208c015161386291908b908e6000613726565b613872838263ffffffff6126b316565b92505b5090999098509650505050505050565b60295480156128b557602d546000906001600160a01b03858116911614156138ae575081613933565b600254604051635967aa7560e11b81526001600160a01b039091169063b2cf54ea906138e09087908790600401614c9b565b60206040518083038186803b1580156138f857600080fd5b505afa15801561390c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061393091908101906141ea565b90505b818111156126525760405162461bcd60e51b81526004016103dd90614f52565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061398757508115155b949350505050565b600061136868056bc75e2d631000006139b3603e54856126f590919063ffffffff16565b9063ffffffff613c4516565b600061136868056bc75e2d631000006139b3601854856126f590919063ffffffff16565b808015613b2b576001600160a01b038681166000908152603360205260409020541615613a99576001600160a01b03808716600090815260336020526040902054613a319116878684613c87565b5050613a96613a5868056bc75e2d63100000610eb3603954856126f590919063ffffffff16565b613a8a613a7d68056bc75e2d63100000610eb3602054876126f590919063ffffffff16565b849063ffffffff6126b316565b9063ffffffff6126b316565b90505b6001600160a01b038416600090815260196020526040902054613ac2908263ffffffff61219516565b6001600160a01b03808616600081815260196020526040908190209390935591518792918916907fb23479169712c443e6b00fb0cec3506a5f5926f541df4243d313e11c8c5c71ed90613b16908690615061565b60405180910390a4613b2b8686868686612db7565b505050505050565b815160208084015160408086015160608781015187519588015188850151945160009889989497630957ba1160e21b97613b7a979296919592949293919291602401614b63565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260035491519092506000916001600160a01b031690613bcc908490614b23565b600060405180830381855af49150503d8060008114613c07576040519150601f19603f3d011682016040523d82523d6000602084013e613c0c565b606091505b509250905080613c2e5760405162461bcd60e51b81526004016103dd90615012565b602082015193506040820151925050509250929050565b60006112b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d20565b6031546040516306a688ff60e11b815260009182916001600160a01b0390911690630d4d11fe90613cc2908990899089908990600401614bcb565b6040805180830381600087803b158015613cdb57600080fd5b505af1158015613cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613d139190810190614208565b9097909650945050505050565b60008183613d415760405162461bcd60e51b81526004016103dd9190614e51565b5083613d4f575060006112b0565b6000836001860381613d5d57fe5b0460010195945050505050565b604051806101e001604052806000801916815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915290565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b60405180606001604052806000815260200160008152602001600081525090565b803561136881615169565b80356113688161517d565b80516113688161517d565b803561136881615186565b80356113688161518f565b60008083601f840112613f3657600080fd5b50813567ffffffffffffffff811115613f4e57600080fd5b602083019150836001820283011115613f6657600080fd5b9250929050565b805161136881615186565b600060208284031215613f8a57600080fd5b60006139878484613eed565b60008060408385031215613fa957600080fd5b6000613fb58585613eed565b9250506020613fc685828601613eed565b9150509250929050565b60008060408385031215613fe357600080fd5b6000613fef8585613eed565b9250506020613fc685828601613f0e565b60008060008060008060c0878903121561401957600080fd5b60006140258989613eed565b965050602061403689828a01613f0e565b955050604061404789828a01613f0e565b945050606061405889828a01613f0e565b935050608061406989828a01613ef8565b92505060a061407a89828a01613ef8565b9150509295509295509295565b60006020828403121561409957600080fd5b60006139878484613f03565b6000602082840312156140b757600080fd5b60006139878484613f0e565b600080604083850312156140d657600080fd5b6000613fb58585613f0e565b6000806000606084860312156140f757600080fd5b60006141038686613f0e565b935050602061411486828701613eed565b925050604061412586828701613f0e565b9150509250925092565b6000806040838503121561414257600080fd5b6000613fef8585613f0e565b60008060008060006080868803121561416657600080fd5b60006141728888613f0e565b955050602061418388828901613f0e565b945050604061419488828901613ef8565b935050606086013567ffffffffffffffff8111156141b157600080fd5b6141bd88828901613f24565b92509250509295509295909350565b6000602082840312156141de57600080fd5b60006139878484613f19565b6000602082840312156141fc57600080fd5b60006139878484613f6d565b6000806040838503121561421b57600080fd5b60006142278585613f6d565b9250506020613fc685828601613f6d565b60008060006060848603121561424d57600080fd5b60006142598686613f0e565b935050602061426a86828701613f0e565b925050604061412586828701613ef8565b600061428783836149f9565b50506101e00190565b614299816150fc565b82525050565b60006142aa826150ea565b6142b481856150ee565b93506142bf836150e4565b8060005b838110156142ed5781516142d7888261427b565b97506142e2836150e4565b9250506001016142c3565b509495945050505050565b61429981615107565b6142998161510c565b6000614315826150ea565b61431f81856150f7565b935061432f818560208601615133565b9290920192915050565b61429981615128565b600061434d826150ea565b61435781856150ee565b9350614367818560208601615133565b6143708161515f565b9093019392505050565b60006143876013836150ee565b7207769746864726177416d6f756e74206973203606c1b815260200192915050565b60006143b66006836150ee565b6514185d5cd95960d21b815260200192915050565b60006143d8601b836150ee565b7f696e73756666696369656e742073776170206c69717569646974790000000000815260200192915050565b60006144116026836150ee565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006144596014836150ee565b73696e646566696e6974652d7465726d206f6e6c7960601b815260200192915050565b60006144896022836150ee565b7f6465706f7369742063616e6e6f7420636f766572206261636b20696e746572658152611cdd60f21b602082015260400192915050565b60006144cd601b836150ee565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006145066010836150ee565b6f1ddc9bdb99c8185cdcd95d081cd95b9d60821b815260200192915050565b6000614532600e836150ee565b6d1b1bd85b881d1bdbc81cda1bdc9d60921b815260200192915050565b600061455c6020836150ee565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b60006145956013836150ee565b72737761702066696c6c20746f6f206c6172676560681b815260200192915050565b60006145c4603a836150ee565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b6000614623601d836150ee565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b600061465c601c836150ee565b7f736f75726365416d6f756e74206c6172676572207468616e206d617800000000815260200192915050565b60006146956018836150ee565b7f776974686472617720616d6f756e7420746f6f20686967680000000000000000815260200192915050565b60006146ce600e836150ee565b6d7377617020746f6f206c6172676560901b815260200192915050565b60006146f86021836150ee565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061473b600c836150ee565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006147636012836150ee565b7106465706f736974416d6f756e7420697320360741b815260200192915050565b60006147916012836150ee565b713ab73432b0b63a343c903837b9b4ba34b7b760711b815260200192915050565b60006147bf6014836150ee565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b60006147ef602e836150ee565b7f6d696e206f72206d617820736f7572636520746f6b656e20616d6f756e74206e81526d1959591cc81d1bc81899481cd95d60921b602082015260400192915050565b60006113686000836150f7565b600061484c600e836150ee565b6d1b1bd85b881a5cc818db1bdcd95960921b815260200192915050565b6000614876600c836150ee565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b600061489e600d836150ee565b6c696e76616c696420737461746560981b815260200192915050565b60006148c7602a836150ee565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006149136013836150ee565b721b1bd85b881d195c9b481a185cc8195b991959606a1b815260200192915050565b6000614942600b836150ee565b6a1cddd85c0819985a5b195960aa1b815260200192915050565b60006149696016836150ee565b751cddd85c081d1bdbc81b185c99d9481d1bc8199a5b1b60521b815260200192915050565b600061499b6016836150ee565b750cae8d0cae440c8cae0dee6d2e840dad2e6dac2e8c6d60531b815260200192915050565b60006149cd601f836150ee565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b80516101e0830190614a0b8482614301565b506020820151614a1e6020850182614290565b506040820151614a316040850182614290565b506060820151614a446060850182614301565b506080820151614a576080850182614301565b5060a0820151614a6a60a0850182614301565b5060c0820151614a7d60c0850182614301565b5060e0820151614a9060e0850182614301565b50610100820151614aa5610100850182614301565b50610120820151614aba610120850182614301565b50610140820151614acf610140850182614301565b50610160820151614ae4610160850182614301565b50610180820151614af9610180850182614301565b506101a0820151614b0e6101a0850182614301565b506101c08201516126526101c0850182614301565b60006112b0828461430a565b600061136882614832565b602081016113688284614290565b60408101614b568285614290565b6112b06020830184614290565b60e08101614b71828a614290565b614b7e6020830189614290565b614b8b6040830188614290565b614b986060830187614290565b614ba56080830186614301565b614bb260a0830185614301565b614bbf60c0830184614301565b98975050505050505050565b60808101614bd98287614290565b614be66020830186614290565b614bf36040830185614290565b614c006060830184614301565b95945050505050565b60608101614c178286614290565b614c246020830185614290565b6139876040830184614301565b60808101614c3f8287614290565b614c4c6020830186614290565b614bf36040830185614301565b60a08101614c678288614290565b614c746020830187614290565b614c816040830186614301565b614c8e6060830185614301565b610c826080830184614301565b60408101614ca98285614290565b6112b06020830184614301565b60608101614cc48286614290565b614c246020830185614301565b60808101614cdf8287614290565b614c4c6020830186614301565b602080825281016112b0818461429f565b6020810161136882846142f8565b6101008101614d1a828b614301565b614d27602083018a6142f8565b614d346040830189614290565b614d416060830188614290565b614d4e6080830187614290565b614d5b60a0830186614301565b614d6860c0830185614301565b614d7560e0830184614301565b9998505050505050505050565b6101808101614d91828f614301565b614d9e602083018e614301565b614dab604083018d614301565b614db8606083018c6142f8565b614dc5608083018b614301565b614dd260a083018a614301565b614ddf60c0830189614301565b614dec60e0830188614301565b614dfa610100830187614301565b614e08610120830186614301565b614e16610140830185614290565b614e24610160830184614290565b9d9c50505050505050505050505050565b60608101614cc48286614301565b602081016113688284614339565b602080825281016112b08184614342565b602080825281016113688161437a565b60208082528101611368816143a9565b60208082528101611368816143cb565b6020808252810161136881614404565b602080825281016113688161444c565b602080825281016113688161447c565b60208082528101611368816144c0565b60208082528101611368816144f9565b6020808252810161136881614525565b602080825281016113688161454f565b6020808252810161136881614588565b60208082528101611368816145b7565b6020808252810161136881614616565b602080825281016113688161464f565b6020808252810161136881614688565b60208082528101611368816146c1565b60208082528101611368816146eb565b602080825281016113688161472e565b6020808252810161136881614756565b6020808252810161136881614784565b60208082528101611368816147b2565b60208082528101611368816147e2565b602080825281016113688161483f565b6020808252810161136881614869565b6020808252810161136881614891565b60208082528101611368816148ba565b6020808252810161136881614906565b6020808252810161136881614935565b602080825281016113688161495c565b602080825281016113688161498e565b60208082528101611368816149c0565b6101e0810161136882846149f9565b602081016113688284614301565b60a0810161507d8288614301565b614c746020830187614301565b60c081016150988289614301565b6150a56020830188614301565b6150b26040830187614301565b6150bf6060830186614301565b6150cc6080830185614301565b6150d960a0830184614301565b979650505050505050565b60200190565b5190565b90815260200190565b919050565b60006113688261511c565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b6000611368826150fc565b60005b8381101561514e578181015183820152602001615136565b838111156126525750506000910152565b601f01601f191690565b615172816150fc565b811461211957600080fd5b61517281615107565b6151728161510c565b6151728161510f56fea365627a7a72315820b3d093ffc265e335120e6e62403e08e98e698da67cd5b65ec32fcf17c887d7796c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH3 0xBC PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x110 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x114 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x51DB DUP1 PUSH3 0x124 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3B8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1F2 JUMPI DUP1 PUSH4 0xCFC85C06 GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xE8F62764 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0xAEB JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0xB00 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xB15 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xB2A JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0xE8F62764 EQ PUSH2 0xA8C JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0xAA1 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0xAB6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xACB JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0xD485045E GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0xA19 JUMPI DUP1 PUSH4 0xDB35400D EQ PUSH2 0xA39 JUMPI DUP1 PUSH4 0xDEA9B464 EQ PUSH2 0xA59 JUMPI DUP1 PUSH4 0xE81FEFA0 EQ PUSH2 0xA6C JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0xCFC85C06 EQ PUSH2 0x9BC JUMPI DUP1 PUSH4 0xD1979FB0 EQ PUSH2 0x9CF JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x9EF JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0xA04 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0xB7E15241 GT PUSH2 0x185 JUMPI DUP1 PUSH4 0xC4A90815 GT PUSH2 0x154 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x90E JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x946 JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x968 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x99C JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x8A4 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x8C4 JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x8D9 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x8EE JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0xACC04348 GT PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x838 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x84D JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x862 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x884 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x7BE JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x7D3 JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x7F3 JUMPI DUP1 PUSH4 0x9B16CD87 EQ PUSH2 0x808 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x7420CA3E GT PUSH2 0x275 JUMPI DUP1 PUSH4 0x8456CB59 GT PUSH2 0x244 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x747 JUMPI DUP1 PUSH4 0x8932F5F7 EQ PUSH2 0x75C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x789 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x79E JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x6F3 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x708 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x732 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x60857C2C GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x60857C2C EQ PUSH2 0x662 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x682 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x6B3 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x6D3 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x5F4 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x609 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x64D JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x24CC5749 GT PUSH2 0x35A JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x329 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x574 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x594 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x5B4 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x5D4 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x52A JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x53F JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x554 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x122F0E3A GT PUSH2 0x396 JUMPI DUP1 PUSH4 0x122F0E3A EQ PUSH2 0x470 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x49D JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x4DD JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x2A3FE64 EQ PUSH2 0x3E6 JUMPI DUP1 PUSH4 0x65D810F EQ PUSH2 0x41C JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x44E JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FA2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x406 PUSH2 0x401 CALLDATASIZE PUSH1 0x4 PUSH2 0x4000 JUMP JUMPDEST PUSH2 0xB3F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP2 SWAP1 PUSH2 0x4CEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43C PUSH2 0x437 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FD0 JUMP JUMPDEST PUSH2 0xC8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x508A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0xCCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP2 SWAP1 PUSH2 0x4B3A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x40E2 JUMP JUMPDEST PUSH2 0xCDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP2 SWAP1 PUSH2 0x5061 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x4B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x41CC JUMP JUMPDEST PUSH2 0x107B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x4D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F96 JUMP JUMPDEST PUSH2 0x1096 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x4F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x10B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51D PUSH2 0x518 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x10CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP2 SWAP1 PUSH2 0x4CFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x10E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x10E9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43C PUSH2 0x56F CALLDATASIZE PUSH1 0x4 PUSH2 0x3FD0 JUMP JUMPDEST PUSH2 0x10EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x58F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x112F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x5AF CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1141 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51D PUSH2 0x5CF CALLDATASIZE PUSH1 0x4 PUSH2 0x40C3 JUMP JUMPDEST PUSH2 0x1153 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x5EF CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1173 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x1185 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x118B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x63E PUSH2 0x639 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A5 JUMP JUMPDEST PUSH2 0x1191 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x11B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x406 PUSH2 0x67D CALLDATASIZE PUSH1 0x4 PUSH2 0x4238 JUMP JUMPDEST PUSH2 0x11B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6A2 PUSH2 0x69D CALLDATASIZE PUSH1 0x4 PUSH2 0x3F96 JUMP JUMPDEST PUSH2 0x12B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x506F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51D PUSH2 0x6CE CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x12F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x6EE CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1306 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x1321 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x1330 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x729 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x1336 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x1345 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51D PUSH2 0x134B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x77C PUSH2 0x777 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A5 JUMP JUMPDEST PUSH2 0x1354 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP2 SWAP1 PUSH2 0x5052 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x795 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x136E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x7B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x137D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51D PUSH2 0x1398 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x7EE CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x13BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x13D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x814 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x828 PUSH2 0x823 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A5 JUMP JUMPDEST PUSH2 0x13D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4CD1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x844 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x1467 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x146D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x877 PUSH2 0x1473 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP2 SWAP1 PUSH2 0x4E43 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x890 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x89F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1482 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x8BF CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1494 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x14A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x14B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x909 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x14C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x92E PUSH2 0x929 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A5 JUMP JUMPDEST PUSH2 0x14D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x966 PUSH2 0x961 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1548 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x974 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x988 PUSH2 0x983 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A5 JUMP JUMPDEST PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x9B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F96 JUMP JUMPDEST PUSH2 0x16F5 JUMP JUMPDEST PUSH2 0x490 PUSH2 0x9CA CALLDATASIZE PUSH1 0x4 PUSH2 0x414E JUMP JUMPDEST PUSH2 0x1712 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43C PUSH2 0x9EA CALLDATASIZE PUSH1 0x4 PUSH2 0x3F96 JUMP JUMPDEST PUSH2 0x1B8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x1C79 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x1C88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0xA34 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1C8E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0xA54 CALLDATASIZE PUSH1 0x4 PUSH2 0x40E2 JUMP JUMPDEST PUSH2 0x1CA0 JUMP JUMPDEST PUSH2 0x966 PUSH2 0xA67 CALLDATASIZE PUSH1 0x4 PUSH2 0x412F JUMP JUMPDEST PUSH2 0x1EC5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x966 PUSH2 0xA87 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x20EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x211C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x212B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x2131 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x966 PUSH2 0xAE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x2137 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x2164 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x216A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x2170 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x217F JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH2 0xB65 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xB7E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBAA PUSH2 0xB8E DUP4 PUSH2 0x218E JUMP JUMPDEST PUSH2 0xB9E DUP11 DUP11 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21BA AND JUMP JUMPDEST SWAP1 POP DUP1 DUP9 LT PUSH2 0xBBB JUMPI POP PUSH2 0xC82 SWAP1 POP JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xBF5 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xBE2 PUSH2 0x3D6A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xBDA JUMPI SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x0 DUP9 DUP3 SUB JUMPDEST DUP1 ISZERO PUSH2 0xC71 JUMPI DUP9 DUP3 EQ ISZERO PUSH2 0xC11 JUMPI PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC19 PUSH2 0x3D6A JUMP JUMPDEST PUSH2 0xC39 PUSH2 0xC32 DUP7 PUSH1 0x0 NOT DUP6 DUP16 ADD ADD PUSH4 0xFFFFFFFF PUSH2 0x21D0 AND JUMP JUMPDEST DUP11 DUP10 PUSH2 0x21F4 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP PUSH2 0xC48 JUMPI POP PUSH2 0xC68 JUMP JUMPDEST DUP1 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC55 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x0 NOT ADD PUSH2 0xBFE JUMP JUMPDEST POP DUP8 DUP2 LT ISZERO PUSH2 0xC7E JUMPI DUP1 DUP5 MSTORE JUMPDEST POP POP POP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xCFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FD2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xD27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E72 JUMP JUMPDEST DUP2 PUSH2 0xD44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E62 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0xD88 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FC2 JUMP JUMPDEST PUSH1 0xA DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0xDBE JUMPI POP DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xDDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x6 DUP2 ADD SLOAD ISZERO PUSH2 0xDFC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EA2 JUMP JUMPDEST TIMESTAMP DUP3 PUSH1 0x7 ADD SLOAD GT PUSH2 0xE1F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x5002 JUMP JUMPDEST PUSH1 0xB DUP3 ADD SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0xE3F SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND PUSH2 0x257A JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0xA DUP7 ADD SLOAD SWAP3 SWAP4 PUSH2 0xE7F SWAP4 DUP6 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 SWAP1 DUP2 AND SWAP2 AND TIMESTAMP PUSH2 0x2658 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEBF PUSH3 0x15180 PUSH2 0xEB3 DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0xEA7 TIMESTAMP DUP10 PUSH1 0x7 ADD SLOAD PUSH2 0x26B3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x272F AND JUMP JUMPDEST SWAP1 POP DUP1 DUP7 LT PUSH2 0xEE0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F42 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xF0A JUMPI PUSH2 0xF05 DUP8 DUP8 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0xF23 JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0xF23 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH2 0x2849 JUMP JUMPDEST DUP2 SLOAD PUSH2 0xF3C SWAP1 PUSH2 0xEB3 DUP9 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST SWAP5 POP DUP5 DUP5 PUSH1 0x7 ADD SLOAD GT PUSH2 0xF61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EE2 JUMP JUMPDEST PUSH1 0x7 DUP5 ADD SLOAD PUSH2 0xF76 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0x7 DUP6 ADD DUP2 SWAP1 SSTORE TIMESTAMP LT PUSH2 0xF9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EE2 JUMP JUMPDEST PUSH1 0x7 DUP5 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0xFB3 SWAP1 TIMESTAMP PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP1 POP PUSH2 0xE10 DUP2 GT PUSH2 0xFD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EE2 JUMP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD PUSH2 0xFEB SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE PUSH1 0xB DUP6 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 DUP1 DUP11 ADD SLOAD SWAP1 SWAP5 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x1034 SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0xB SWAP6 DUP7 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 DUP9 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 SWAP9 DUP10 ADD SLOAD SWAP1 SWAP4 AND DUP3 MSTORE SWAP2 SWAP1 SWAP8 MSTORE DUP7 KECCAK256 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 SSTORE POP POP PUSH1 0x1 SWAP1 SWAP2 SSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x11D9 PUSH2 0x11C9 PUSH1 0xF PUSH2 0x218E JUMP JUMPDEST PUSH2 0xB9E DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 LT PUSH2 0x11E8 JUMPI POP PUSH2 0x12B0 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1222 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x120F PUSH2 0x3D6A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1207 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 DUP6 DUP3 SUB JUMPDEST DUP1 ISZERO PUSH2 0x12A0 JUMPI DUP6 DUP3 EQ ISZERO PUSH2 0x123E JUMPI PUSH2 0x12A0 JUMP JUMPDEST PUSH2 0x1246 PUSH2 0x3D6A JUMP JUMPDEST PUSH2 0x1268 PUSH2 0x1260 PUSH1 0xF PUSH1 0x0 NOT DUP6 DUP13 ADD ADD PUSH4 0xFFFFFFFF PUSH2 0x21D0 AND JUMP JUMPDEST PUSH1 0x0 DUP9 PUSH2 0x21F4 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP PUSH2 0x1277 JUMPI POP PUSH2 0x1297 JUMP JUMPDEST DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1284 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x0 NOT ADD PUSH2 0x122B JUMP JUMPDEST POP DUP5 DUP2 LT ISZERO PUSH2 0x12AD JUMPI DUP1 DUP4 MSTORE JUMPDEST POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x135C PUSH2 0x3D6A JUMP JUMPDEST PUSH2 0x1368 DUP3 PUSH1 0x0 DUP1 PUSH2 0x21F4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13AF PUSH2 0x28BA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD DUP7 MSTORE PUSH1 0x7 DUP1 DUP6 MSTORE DUP4 DUP8 KECCAK256 PUSH1 0x2 ADD SLOAD DUP9 DUP9 MSTORE PUSH1 0xC DUP7 MSTORE SWAP4 DUP8 KECCAK256 DUP1 SLOAD SWAP3 ADD SLOAD SWAP6 SWAP1 SWAP5 MSTORE SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP4 SWAP2 SWAP3 SWAP2 SWAP1 DUP2 TIMESTAMP DUP3 LT PUSH2 0x142F JUMPI TIMESTAMP PUSH2 0x1431 JUMP JUMPDEST DUP2 JUMPDEST SWAP1 POP DUP1 DUP3 GT PUSH2 0x1441 JUMPI PUSH1 0x0 PUSH2 0x145C JUMP JUMPDEST PUSH2 0x145C PUSH3 0x15180 PUSH2 0xEB3 DUP8 PUSH2 0xEA7 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP3 POP POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0x1550 PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x156C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F72 JUMP JUMPDEST PUSH4 0x37AA6D19 PUSH1 0xE2 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xA56283BB23BC3F9D1E31FD0B79AB29917294036597BCDDBDBEB3DA57495B10AD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x15B4 SWAP1 DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x15C5 PUSH4 0xDB35400D PUSH1 0xE0 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x15D6 PUSH4 0x740FF7D PUSH1 0xE5 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x15E7 PUSH4 0x67E42E03 PUSH1 0xE1 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x15F8 PUSH4 0x917871D PUSH1 0xE1 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x1609 PUSH4 0xD1979FB PUSH1 0xE4 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x161A PUSH4 0x9B16CD87 PUSH1 0xE0 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x162A PUSH3 0xA8FF99 PUSH1 0xE2 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x163B PUSH4 0x8932F5F7 PUSH1 0xE0 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x164C PUSH4 0x18215F0B PUSH1 0xE2 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH15 0x4C6F616E4D61696E74656E616E6365 PUSH1 0x88 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1736 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FD2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x175E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E72 JUMP JUMPDEST DUP5 PUSH2 0x177B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F82 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x17BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FC2 JUMP JUMPDEST DUP6 ISZERO DUP1 PUSH2 0x17D8 JUMPI POP PUSH1 0xA DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST DUP1 PUSH2 0x17FE JUMPI POP DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x181A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x6 DUP2 ADD SLOAD ISZERO PUSH2 0x183C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EA2 JUMP JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x1864 JUMPI POP DUP6 ISZERO DUP1 ISZERO PUSH2 0x1864 JUMPI POP PUSH1 0x2D SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ JUMPDEST PUSH2 0x1880 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4ED2 JUMP JUMPDEST PUSH1 0xB DUP3 ADD SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0x18A0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND PUSH2 0x257A JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0xA DUP7 ADD SLOAD SWAP3 SWAP4 PUSH2 0x18E0 SWAP4 DUP6 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 SWAP1 DUP2 AND SWAP2 AND TIMESTAMP PUSH2 0x2658 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x7 ADD SLOAD TIMESTAMP GT ISZERO PUSH2 0x1950 JUMPI PUSH1 0x7 DUP5 ADD SLOAD PUSH2 0x1904 SWAP1 TIMESTAMP SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST DUP3 SLOAD SWAP1 SWAP2 POP PUSH2 0x191A SWAP1 DUP3 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x192F DUP2 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x272F AND JUMP JUMPDEST SWAP1 POP DUP1 DUP10 GT PUSH2 0x1950 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EB2 JUMP JUMPDEST DUP8 ISZERO PUSH2 0x19D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP1 DUP3 ADD DUP4 MSTORE DUP6 SLOAD DUP3 MSTORE PUSH1 0x1 DUP7 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP6 ADD SLOAD DUP3 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x3 DUP6 ADD SLOAD SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x4 DUP5 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x5 DUP5 ADD SLOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x19CC SWAP1 DUP6 SWAP1 DUP12 PUSH2 0x2934 JUMP JUMPDEST PUSH2 0x1A18 JUMP JUMPDEST CALLVALUE PUSH2 0x19EF JUMPI PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0x19CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP12 PUSH2 0x2A60 JUMP JUMPDEST DUP9 CALLVALUE EQ PUSH2 0x1A0E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x5032 JUMP JUMPDEST PUSH2 0x1A18 CALLER CALLVALUE PUSH2 0x2AC4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1A52 JUMPI PUSH2 0x1A2E DUP10 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0xB DUP6 ADD SLOAD PUSH1 0x2 DUP6 ADD SLOAD SWAP2 SWAP11 POP PUSH2 0x1A52 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0x2B6A JUMP JUMPDEST DUP2 SLOAD PUSH2 0x1A6B SWAP1 PUSH2 0xEB3 DUP12 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST PUSH1 0x7 DUP6 ADD SLOAD SWAP1 SWAP6 POP PUSH2 0x1A83 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x7 DUP6 ADD DUP2 SWAP1 SSTORE TIMESTAMP LT PUSH2 0x1AA8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EE2 JUMP JUMPDEST PUSH1 0x7 DUP5 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1AC0 SWAP1 TIMESTAMP PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP1 POP PUSH2 0xE10 DUP2 GT PUSH2 0x1AE3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EE2 JUMP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD PUSH2 0x1AF8 SWAP1 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE PUSH1 0xB DUP6 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 DUP1 DUP11 ADD SLOAD SWAP1 SWAP5 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x1B41 SWAP1 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0xB SWAP6 DUP7 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 DUP9 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 SWAP9 DUP10 ADD SLOAD SWAP1 SWAP4 AND DUP3 MSTORE SWAP2 SWAP1 SWAP8 MSTORE DUP7 KECCAK256 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 SSTORE POP POP PUSH1 0x1 SWAP1 SWAP2 SSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1B9B PUSH2 0x3DF5 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 DUP2 MSTORE SWAP1 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0xA0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x2 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 ADD SLOAD PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH2 0x1C1B SWAP2 PUSH3 0x15180 SWAP2 PUSH2 0xEB3 SWAP2 SWAP1 PUSH2 0xEA7 SWAP1 TIMESTAMP SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP4 POP DUP1 PUSH1 0x40 ADD MLOAD DUP5 GT ISZERO PUSH2 0x1C31 JUMPI DUP1 PUSH1 0x40 ADD MLOAD SWAP4 POP JUMPDEST PUSH1 0x60 DUP2 ADD MLOAD DUP1 PUSH2 0x1C42 JUMPI PUSH1 0x0 PUSH2 0x1C48 JUMP JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH2 0x1C5D JUMPI PUSH1 0x0 PUSH2 0x1C5F JUMP JUMPDEST DUP7 JUMPDEST PUSH1 0x15 SLOAD SWAP5 MLOAD SWAP4 SWAP14 SWAP3 SWAP13 POP SWAP1 SWAP11 POP SWAP9 POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1CC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FD2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1CEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E72 JUMP JUMPDEST DUP2 PUSH2 0x1D09 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E62 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x1D4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FC2 JUMP JUMPDEST PUSH1 0xA DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x1D83 JUMPI POP DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1D9F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x4 DUP1 DUP7 ADD SLOAD PUSH1 0x5 DUP1 DUP9 ADD SLOAD SWAP1 DUP8 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xF80B25FB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP8 PUSH4 0xF80B25FB SWAP8 PUSH2 0x1DF3 SWAP8 SWAP2 DUP4 AND SWAP7 SWAP3 AND SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 ADD PUSH2 0x4C59 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E1F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1E43 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41EA JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1E55 JUMPI DUP1 SWAP4 POP PUSH2 0x1E59 JUMP JUMPDEST DUP5 SWAP4 POP JUMPDEST PUSH1 0x5 DUP4 ADD SLOAD PUSH2 0x1E6E SWAP1 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0x5 DUP5 ADD SSTORE PUSH1 0x2D SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x1E9D JUMPI PUSH2 0x1E98 DUP7 DUP6 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x1EB6 JUMP JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD PUSH2 0x1EB6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 PUSH2 0x2849 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1EE7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FD2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1F0F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E72 JUMP JUMPDEST DUP1 PUSH2 0x1F2C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F82 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x1F70 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FC2 JUMP JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x1F8F JUMPI POP PUSH1 0x2D SLOAD PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ JUMPDEST PUSH2 0x1FAB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4ED2 JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SLOAD PUSH2 0x1FC0 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x5 DUP4 ADD SSTORE CALLVALUE PUSH2 0x1FE8 JUMPI PUSH1 0x3 DUP2 ADD SLOAD PUSH2 0x1FE3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP6 PUSH2 0x2A60 JUMP JUMPDEST PUSH2 0x2011 JUMP JUMPDEST DUP3 CALLVALUE EQ PUSH2 0x2007 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x5032 JUMP JUMPDEST PUSH2 0x2011 CALLER CALLVALUE PUSH2 0x2AC4 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x3 DUP4 ADD SLOAD SWAP2 DUP4 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x29D5277C SWAP4 PUSH2 0x2053 SWAP4 SWAP3 DUP3 AND SWAP3 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4B48 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x206A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x207E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x20A2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4208 JUMP JUMPDEST POP SWAP1 POP PUSH32 0xC3C4F75EA99730F240C3EA8D68F7A9B94584539CAF936F566E8B9F8FE13036F4 DUP6 DUP6 DUP4 PUSH1 0x40 MLOAD PUSH2 0x20D8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x210F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E72 JUMP JUMPDEST PUSH2 0x2119 CALLER DUP3 PUSH2 0x257A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x213F PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x215B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x2119 DUP2 PUSH2 0x2C01 JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x12B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EC2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x21C9 JUMPI DUP2 PUSH2 0x12B0 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x21E1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x21FC PUSH2 0x3D6A JUMP JUMPDEST PUSH2 0x2204 PUSH2 0x3E24 JUMP JUMPDEST POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD PUSH2 0x180 DUP2 ADD DUP6 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x4 DUP4 ADD SLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 DUP3 ADD SLOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x7 DUP3 ADD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x8 DUP3 ADD SLOAD PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x9 DUP3 ADD SLOAD PUSH2 0x120 DUP3 ADD MSTORE PUSH1 0xA DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0xB SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 AND PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x22B5 PUSH2 0x3E88 JUMP JUMPDEST POP PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP2 MLOAD PUSH2 0x100 DUP1 DUP3 ADD DUP5 MSTORE DUP3 SLOAD DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO SWAP6 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DIV DUP5 AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP2 ADD SLOAD DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x5 DUP3 ADD SLOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x6 SWAP1 SWAP2 ADD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE DUP5 ISZERO PUSH2 0x2373 JUMPI DUP5 PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x234F JUMPI POP PUSH1 0xE0 DUP2 ADD MLOAD ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x2367 JUMPI POP DUP5 PUSH1 0x2 EQ DUP1 ISZERO PUSH2 0x2367 JUMPI POP PUSH1 0xE0 DUP2 ADD MLOAD ISZERO JUMPDEST PUSH2 0x2373 JUMPI POP PUSH2 0x12B0 SWAP1 POP JUMP JUMPDEST PUSH2 0x237B PUSH2 0x3ECC JUMP JUMPDEST POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP5 MSTORE DUP3 SLOAD DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 SWAP2 DUP3 ADD SLOAD DUP2 DUP5 ADD MSTORE SWAP1 SLOAD SWAP3 DUP6 ADD MLOAD PUSH1 0x80 DUP1 DUP8 ADD MLOAD SWAP1 DUP9 ADD MLOAD PUSH1 0xA0 DUP10 ADD MLOAD SWAP5 MLOAD PUSH4 0x17F86809 PUSH1 0xE1 SHL DUP2 MSTORE SWAP4 SWAP7 SWAP6 DUP7 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP5 PUSH4 0x2FF0D012 SWAP5 PUSH2 0x23FA SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x4 ADD PUSH2 0x4C31 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2425 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2449 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4208 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 DUP6 PUSH1 0xC0 ADD MLOAD DUP5 GT PUSH2 0x247F JUMPI PUSH2 0x2474 DUP8 PUSH1 0x80 ADD MLOAD DUP9 PUSH1 0xA0 ADD MLOAD DUP7 DUP10 PUSH1 0xC0 ADD MLOAD DUP8 PUSH2 0x2C83 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2492 JUMP JUMPDEST DUP9 ISZERO PUSH2 0x2492 JUMPI POP PUSH2 0x12B0 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1E0 ADD PUSH1 0x40 MSTORE DUP1 DUP13 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x80 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP10 PUSH1 0xE0 ADD MLOAD LT ISZERO PUSH2 0x24FB JUMPI PUSH1 0x0 PUSH2 0x2521 JUMP JUMPDEST PUSH2 0x2521 PUSH3 0x15180 PUSH2 0xEB3 DUP10 PUSH1 0x0 ADD MLOAD PUSH2 0xEA7 TIMESTAMP DUP15 PUSH1 0xE0 ADD MLOAD PUSH2 0x26B3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH2 0x120 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH2 0x100 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0xE0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xE0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP SWAP8 POP POP POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP2 SWAP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x25BA JUMPI POP PUSH1 0x4 DUP3 ADD SLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x264B JUMPI PUSH2 0x25E5 PUSH3 0x15180 PUSH2 0xEB3 DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0xEA7 DUP7 PUSH1 0x4 ADD SLOAD TIMESTAMP PUSH2 0x26B3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0x2601 JUMPI POP PUSH1 0x2 DUP2 ADD SLOAD JUMPDEST DUP1 ISZERO PUSH2 0x2646 JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH2 0x261C SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x3 DUP4 ADD SSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0x2636 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SSTORE PUSH2 0x2646 DUP5 DUP5 DUP4 PUSH2 0x2B6A JUMP JUMPDEST PUSH2 0x2652 JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP4 ADD SSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x268E PUSH11 0x7259756A8D61998000000 PUSH2 0xEB3 PUSH1 0x15 SLOAD PUSH2 0xEA7 DUP12 PUSH1 0x0 ADD SLOAD PUSH2 0xEA7 DUP14 PUSH1 0x2 ADD SLOAD DUP10 PUSH2 0x26B3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP9 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x26AA JUMPI PUSH2 0x26AA DUP4 DUP8 DUP8 DUP8 DUP6 PUSH2 0x2DB7 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12B0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3102 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2704 JUMPI POP PUSH1 0x0 PUSH2 0x1368 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2711 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x12B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F62 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12B0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x312E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2845 JUMPI PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SELFBALANCE DUP1 DUP4 GT ISZERO PUSH2 0x27ED JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x27BA SWAP1 DUP5 DUP8 SUB SWAP1 PUSH1 0x4 ADD PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x27F7 DUP5 DUP5 PUSH2 0x3165 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x283A SWAP2 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMPDEST POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x28B5 JUMPI PUSH2 0x2869 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP4 PUSH1 0x40 MLOAD PUSH2 0x28AC SWAP2 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x2919 JUMPI PUSH2 0x2913 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x325A AND JUMP JUMPDEST POP PUSH2 0x2845 JUMP JUMPDEST PUSH2 0x28B5 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x32A2 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x297F DUP5 PUSH1 0x0 ADD SLOAD DUP5 PUSH1 0x80 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD DUP8 PUSH1 0xA ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x5 ADD SLOAD PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3363 JUMP JUMPDEST POP PUSH1 0x5 DUP7 ADD SLOAD SWAP1 SWAP3 POP PUSH2 0x2999 SWAP2 POP DUP3 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0x5 DUP6 ADD DUP2 SWAP1 SSTORE PUSH1 0x2 SLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0x4 DUP1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x17F86809 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND SWAP6 PUSH4 0x2FF0D012 SWAP6 PUSH2 0x29E4 SWAP6 SWAP1 SWAP5 SWAP1 SWAP4 SWAP3 ADD PUSH2 0x4C31 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A0F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2A33 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4208 JUMP JUMPDEST POP SWAP1 POP DUP4 PUSH1 0xC0 ADD MLOAD DUP2 GT PUSH2 0x2A59 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F92 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x28B5 JUMPI PUSH2 0x2A81 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 ADDRESS DUP5 PUSH4 0xFFFFFFFF PUSH2 0x34C1 AND JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2790B90165FD3973AD7EDDE4ECA71B4F8808DD4857A2A3A3E8AE5642A5CB196E DUP4 PUSH1 0x40 MLOAD PUSH2 0x28AC SWAP2 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD0E30DB PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP3 SWAP2 PUSH4 0xD0E30DB0 SWAP2 DUP6 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B22 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2790B90165FD3973AD7EDDE4ECA71B4F8808DD4857A2A3A3E8AE5642A5CB196E DUP5 PUSH1 0x40 MLOAD PUSH2 0x28AC SWAP2 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B8E PUSH9 0x56BC75E2D63100000 PUSH2 0xEB3 PUSH1 0x15 SLOAD DUP6 PUSH2 0x26F5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2B9B DUP5 DUP5 DUP4 PUSH2 0x34E5 JUMP JUMPDEST PUSH2 0x2BB5 DUP4 DUP6 PUSH2 0x2BB0 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH2 0x2849 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP1 DUP5 AND PUSH32 0x220E66E3E759E1382AA86CD8AF5ABCA05EBF3AD564F223AE62D977678337272A PUSH2 0x2BF4 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283A SWAP2 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2C27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E92 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x21 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP5 DUP7 GT DUP1 PUSH2 0x2C97 JUMPI POP DUP4 ISZERO JUMPDEST ISZERO PUSH2 0x2CA1 JUMPI PUSH2 0x2DAC JUMP JUMPDEST DUP1 DUP7 GT PUSH2 0x2CB5 JUMPI POP DUP7 SWAP2 POP DUP6 SWAP1 POP DUP5 PUSH2 0x2DAC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CCF DUP7 PUSH8 0x4563918244F40000 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2CF2 PUSH9 0x56BC75E2D63100000 PUSH2 0xEB3 DUP12 PUSH2 0xEA7 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST SWAP4 POP PUSH2 0x2D20 PUSH2 0x2D13 PUSH8 0xDE0B6B3A7640000 PUSH2 0xEB3 DUP12 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP4 POP PUSH2 0x2D4E PUSH2 0x2D35 DUP3 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH2 0xEB3 DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST SWAP4 POP DUP9 DUP5 GT ISZERO PUSH2 0x2D5C JUMPI DUP9 SWAP4 POP JUMPDEST PUSH2 0x2D85 PUSH2 0x2D78 DUP4 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST SWAP3 POP PUSH2 0x2D9C PUSH1 0x64 PUSH2 0xEB3 DUP6 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x272F AND JUMP JUMPDEST SWAP3 POP DUP8 DUP4 GT ISZERO PUSH2 0x2DAA JUMPI DUP8 SWAP3 POP JUMPDEST POP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2F SLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 ISZERO PUSH2 0x2E1A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP2 POP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP12 SWAP2 AND PUSH2 0x2E58 PUSH9 0x56BC75E2D63100000 PUSH2 0xEB3 DUP13 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2E6A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2EA8 SWAP2 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2EE3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2EE8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x2EFE JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP5 POP JUMPDEST DUP5 ISZERO PUSH2 0x30F6 JUMPI PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x2F3A SWAP3 SWAP2 AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4C9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2F8C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4087 JUMP JUMPDEST POP PUSH1 0x38 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x2FB3 SWAP2 DUP15 SWAP2 DUP11 SWAP2 PUSH1 0x24 ADD PUSH2 0x4CB6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xEFE6A8B PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2FE8 SWAP2 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3025 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x302A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 ISZERO PUSH2 0x30A1 JUMPI PUSH1 0x1F SLOAD PUSH2 0x3047 SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x1F SSTORE PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0xF41C644671512F1CDA76ABFE6038E3D7D526C1377A5A8C692F81703901DB2150 SWAP2 PUSH2 0x3094 SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4E35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x30F4 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0x483F67EA49F76AC15E15BBAD68B52788CA47D50AEF1E4ACFE95E5E307E710812 SWAP2 PUSH2 0x30EB SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4E35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3126 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP2 SWAP1 PUSH2 0x4E51 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x314F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP2 SWAP1 PUSH2 0x4E51 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x315B JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x3185 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F22 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x319E SWAP1 PUSH2 0x4B2F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31DB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31E0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x28B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F12 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28B5 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3223 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x4C9B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3566 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3266 DUP4 DUP4 PUSH2 0x364B JUMP JUMPDEST PUSH2 0x329A JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x1368 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1368 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32AE DUP4 DUP4 PUSH2 0x364B JUMP JUMPDEST ISZERO PUSH2 0x329A JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x3326 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x32E7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x3304 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x3342 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x1368 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP3 MSTORE DUP10 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS DUP4 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP11 AND PUSH1 0x80 DUP5 ADD MSTORE DUP4 MLOAD SWAP2 DUP3 ADD DUP5 MSTORE DUP9 DUP3 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE SWAP2 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x33C8 SWAP2 SWAP1 DUP15 DUP9 DUP9 DUP7 PUSH2 0x3660 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x33D7 DUP12 DUP4 PUSH2 0x3885 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x27 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1E2C62D3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x1E2C62D3 SWAP2 PUSH2 0x3410 SWAP2 DUP16 SWAP2 DUP16 SWAP2 DUP9 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x4C59 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x343C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3460 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41EA JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH32 0xB4EB3C9B62EFCCE7021CBA5FD9CD0C44DF91C2272806CCC5E57DF7C912E8D716 DUP13 DUP7 DUP9 PUSH1 0x40 MLOAD PUSH2 0x34AA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4CB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2652 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x3223 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x4C09 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x28B5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3514 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0x40A75AE5F7A5336E75F7C7977E12C4B46A9AC0F30DE01A2D5B6C1A4F4AF63587 SWAP1 PUSH2 0x28AC SWAP1 DUP6 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH2 0x3578 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3953 JUMP JUMPDEST PUSH2 0x3594 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x5042 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x35B0 SWAP2 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x35ED JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x35F2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3614 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EF2 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2652 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x362F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4087 JUMP JUMPDEST PUSH2 0x2652 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FF2 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x3677 JUMPI POP PUSH1 0x20 DUP8 ADD MLOAD ISZERO ISZERO JUMPDEST PUSH2 0x3693 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FB2 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH2 0x36A4 JUMPI DUP7 MLOAD PUSH1 0x20 DUP9 ADD MSTORE JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD DUP8 MLOAD GT ISZERO PUSH2 0x36C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH2 0x3786 JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x3745 JUMPI DUP6 ISZERO PUSH2 0x36FA JUMPI PUSH2 0x36F3 DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x398F JUMP JUMPDEST SWAP1 POP PUSH2 0x370E JUMP JUMPDEST PUSH2 0x370B DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x39BF JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x3740 JUMPI PUSH1 0x80 DUP12 ADD MLOAD DUP12 MLOAD PUSH2 0x3731 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x1 JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP6 PUSH2 0x39E3 JUMP JUMPDEST DUP10 MLOAD PUSH2 0x373D SWAP1 DUP3 PUSH2 0x26B3 JUMP JUMPDEST DUP11 MSTORE JUMPDEST PUSH2 0x3786 JUMP JUMPDEST DUP6 ISZERO PUSH2 0x375D JUMPI PUSH2 0x3756 DUP11 PUSH1 0x2 PUSH2 0x36E9 JUMP JUMPDEST SWAP1 POP PUSH2 0x376B JUMP JUMPDEST PUSH2 0x3768 DUP11 PUSH1 0x2 PUSH2 0x3701 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x3786 JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x3780 SWAP1 DUP3 PUSH2 0x2195 JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MSTORE JUMPDEST DUP7 MLOAD ISZERO PUSH2 0x37A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FE2 JUMP JUMPDEST PUSH2 0x37AF DUP12 DUP12 PUSH2 0x3B33 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x37FB JUMPI DUP10 MLOAD DUP3 EQ PUSH2 0x37DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x5022 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x37F6 JUMPI PUSH2 0x37F3 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x3875 JUMP JUMPDEST PUSH1 0x20 DUP11 ADD MLOAD DUP3 GT ISZERO PUSH2 0x381F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F02 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD DUP4 LT ISZERO PUSH2 0x3843 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E82 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3875 JUMPI PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x3862 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x0 PUSH2 0x3726 JUMP JUMPDEST PUSH2 0x3872 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP3 POP JUMPDEST POP SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP1 ISZERO PUSH2 0x28B5 JUMPI PUSH1 0x2D SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x38AE JUMPI POP DUP2 PUSH2 0x3933 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5967AA75 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xB2CF54EA SWAP1 PUSH2 0x38E0 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4C9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x390C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3930 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41EA JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2652 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F52 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x3987 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1368 PUSH9 0x56BC75E2D63100000 PUSH2 0x39B3 PUSH1 0x3E SLOAD DUP6 PUSH2 0x26F5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3C45 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1368 PUSH9 0x56BC75E2D63100000 PUSH2 0x39B3 PUSH1 0x18 SLOAD DUP6 PUSH2 0x26F5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x3B2B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x3A99 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3A31 SWAP2 AND DUP8 DUP7 DUP5 PUSH2 0x3C87 JUMP JUMPDEST POP POP PUSH2 0x3A96 PUSH2 0x3A58 PUSH9 0x56BC75E2D63100000 PUSH2 0xEB3 PUSH1 0x39 SLOAD DUP6 PUSH2 0x26F5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3A8A PUSH2 0x3A7D PUSH9 0x56BC75E2D63100000 PUSH2 0xEB3 PUSH1 0x20 SLOAD DUP8 PUSH2 0x26F5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3AC2 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD DUP8 SWAP3 SWAP2 DUP10 AND SWAP1 PUSH32 0xB23479169712C443E6B00FB0CEC3506A5F5926F541DF4243D313E11C8C5C71ED SWAP1 PUSH2 0x3B16 SWAP1 DUP7 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3B2B DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2DB7 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD PUSH1 0x60 DUP8 DUP2 ADD MLOAD DUP8 MLOAD SWAP6 DUP9 ADD MLOAD DUP9 DUP6 ADD MLOAD SWAP5 MLOAD PUSH1 0x0 SWAP9 DUP10 SWAP9 SWAP5 SWAP8 PUSH4 0x957BA11 PUSH1 0xE2 SHL SWAP8 PUSH2 0x3B7A SWAP8 SWAP3 SWAP7 SWAP2 SWAP6 SWAP3 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 PUSH1 0x24 ADD PUSH2 0x4B63 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE PUSH1 0x3 SLOAD SWAP2 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x3BCC SWAP1 DUP5 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3C07 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3C0C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0x3C2E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x5012 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP3 ADD MLOAD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12B0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x3D20 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x40 MLOAD PUSH4 0x6A688FF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD4D11FE SWAP1 PUSH2 0x3CC2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4BCB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3CDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3CEF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3D13 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4208 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x3D41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP2 SWAP1 PUSH2 0x4E51 JUMP JUMPDEST POP DUP4 PUSH2 0x3D4F JUMPI POP PUSH1 0x0 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 DUP7 SUB DUP2 PUSH2 0x3D5D JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1E0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x180 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x140 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x160 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1368 DUP2 PUSH2 0x5169 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1368 DUP2 PUSH2 0x517D JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1368 DUP2 PUSH2 0x517D JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1368 DUP2 PUSH2 0x5186 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1368 DUP2 PUSH2 0x518F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3F36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3F4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3F66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1368 DUP2 PUSH2 0x5186 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP5 DUP5 PUSH2 0x3EED JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3FB5 DUP6 DUP6 PUSH2 0x3EED JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3FC6 DUP6 DUP3 DUP7 ADD PUSH2 0x3EED JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3FEF DUP6 DUP6 PUSH2 0x3EED JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3FC6 DUP6 DUP3 DUP7 ADD PUSH2 0x3F0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4019 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4025 DUP10 DUP10 PUSH2 0x3EED JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x4036 DUP10 DUP3 DUP11 ADD PUSH2 0x3F0E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x4047 DUP10 DUP3 DUP11 ADD PUSH2 0x3F0E JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x4058 DUP10 DUP3 DUP11 ADD PUSH2 0x3F0E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x4069 DUP10 DUP3 DUP11 ADD PUSH2 0x3EF8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x407A DUP10 DUP3 DUP11 ADD PUSH2 0x3EF8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4099 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP5 DUP5 PUSH2 0x3F03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP5 DUP5 PUSH2 0x3F0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3FB5 DUP6 DUP6 PUSH2 0x3F0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x40F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4103 DUP7 DUP7 PUSH2 0x3F0E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4114 DUP7 DUP3 DUP8 ADD PUSH2 0x3EED JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4125 DUP7 DUP3 DUP8 ADD PUSH2 0x3F0E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3FEF DUP6 DUP6 PUSH2 0x3F0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4172 DUP9 DUP9 PUSH2 0x3F0E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4183 DUP9 DUP3 DUP10 ADD PUSH2 0x3F0E JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4194 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x41B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41BD DUP9 DUP3 DUP10 ADD PUSH2 0x3F24 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP5 DUP5 PUSH2 0x3F19 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP5 DUP5 PUSH2 0x3F6D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x421B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4227 DUP6 DUP6 PUSH2 0x3F6D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3FC6 DUP6 DUP3 DUP7 ADD PUSH2 0x3F6D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x424D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4259 DUP7 DUP7 PUSH2 0x3F0E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x426A DUP7 DUP3 DUP8 ADD PUSH2 0x3F0E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4125 DUP7 DUP3 DUP8 ADD PUSH2 0x3EF8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4287 DUP4 DUP4 PUSH2 0x49F9 JUMP JUMPDEST POP POP PUSH2 0x1E0 ADD SWAP1 JUMP JUMPDEST PUSH2 0x4299 DUP2 PUSH2 0x50FC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42AA DUP3 PUSH2 0x50EA JUMP JUMPDEST PUSH2 0x42B4 DUP2 DUP6 PUSH2 0x50EE JUMP JUMPDEST SWAP4 POP PUSH2 0x42BF DUP4 PUSH2 0x50E4 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42ED JUMPI DUP2 MLOAD PUSH2 0x42D7 DUP9 DUP3 PUSH2 0x427B JUMP JUMPDEST SWAP8 POP PUSH2 0x42E2 DUP4 PUSH2 0x50E4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x42C3 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4299 DUP2 PUSH2 0x5107 JUMP JUMPDEST PUSH2 0x4299 DUP2 PUSH2 0x510C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4315 DUP3 PUSH2 0x50EA JUMP JUMPDEST PUSH2 0x431F DUP2 DUP6 PUSH2 0x50F7 JUMP JUMPDEST SWAP4 POP PUSH2 0x432F DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5133 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4299 DUP2 PUSH2 0x5128 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x434D DUP3 PUSH2 0x50EA JUMP JUMPDEST PUSH2 0x4357 DUP2 DUP6 PUSH2 0x50EE JUMP JUMPDEST SWAP4 POP PUSH2 0x4367 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5133 JUMP JUMPDEST PUSH2 0x4370 DUP2 PUSH2 0x515F JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4387 PUSH1 0x13 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH19 0x7769746864726177416D6F756E74206973203 PUSH1 0x6C SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43B6 PUSH1 0x6 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43D8 PUSH1 0x1B DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x696E73756666696369656E742073776170206C69717569646974790000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4411 PUSH1 0x26 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4459 PUSH1 0x14 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH20 0x696E646566696E6974652D7465726D206F6E6C79 PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4489 PUSH1 0x22 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x6465706F7369742063616E6E6F7420636F766572206261636B20696E74657265 DUP2 MSTORE PUSH2 0x1CDD PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44CD PUSH1 0x1B DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4506 PUSH1 0x10 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH16 0x1DDC9BDB99C8185CDCD95D081CD95B9D PUSH1 0x82 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4532 PUSH1 0xE DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH14 0x1B1BD85B881D1BDBC81CDA1BDC9D PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x455C PUSH1 0x20 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4595 PUSH1 0x13 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH19 0x737761702066696C6C20746F6F206C61726765 PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45C4 PUSH1 0x3A DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x416464726573733A20756E61626C6520746F2073656E642076616C75652C2072 DUP2 MSTORE PUSH32 0x6563697069656E74206D61792068617665207265766572746564000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4623 PUSH1 0x1D DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E6365000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x465C PUSH1 0x1C DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x736F75726365416D6F756E74206C6172676572207468616E206D617800000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4695 PUSH1 0x18 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x776974686472617720616D6F756E7420746F6F20686967680000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46CE PUSH1 0xE DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH14 0x7377617020746F6F206C61726765 PUSH1 0x90 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46F8 PUSH1 0x21 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x473B PUSH1 0xC DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4763 PUSH1 0x12 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH18 0x6465706F736974416D6F756E74206973203 PUSH1 0x74 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4791 PUSH1 0x12 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH18 0x3AB73432B0B63A343C903837B9B4BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47BF PUSH1 0x14 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47EF PUSH1 0x2E DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x6D696E206F72206D617820736F7572636520746F6B656E20616D6F756E74206E DUP2 MSTORE PUSH14 0x1959591CC81D1BC81899481CD95D PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1368 PUSH1 0x0 DUP4 PUSH2 0x50F7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x484C PUSH1 0xE DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH14 0x1B1BD85B881A5CC818DB1BDCD959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4876 PUSH1 0xC DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x489E PUSH1 0xD DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH13 0x696E76616C6964207374617465 PUSH1 0x98 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C7 PUSH1 0x2A DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4913 PUSH1 0x13 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH19 0x1B1BD85B881D195C9B481A185CC8195B991959 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4942 PUSH1 0xB DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH11 0x1CDDD85C0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4969 PUSH1 0x16 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH22 0x1CDDD85C081D1BDBC81B185C99D9481D1BC8199A5B1B PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x499B PUSH1 0x16 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH22 0xCAE8D0CAE440C8CAE0DEE6D2E840DAD2E6DAC2E8C6D PUSH1 0x53 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49CD PUSH1 0x1F DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1E0 DUP4 ADD SWAP1 PUSH2 0x4A0B DUP5 DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x4A1E PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4290 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4A31 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4290 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4A44 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x4A57 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x4A6A PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x4A7D PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x4A90 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x4AA5 PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x4ABA PUSH2 0x120 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x140 DUP3 ADD MLOAD PUSH2 0x4ACF PUSH2 0x140 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x4AE4 PUSH2 0x160 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x180 DUP3 ADD MLOAD PUSH2 0x4AF9 PUSH2 0x180 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x1A0 DUP3 ADD MLOAD PUSH2 0x4B0E PUSH2 0x1A0 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x1C0 DUP3 ADD MLOAD PUSH2 0x2652 PUSH2 0x1C0 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12B0 DUP3 DUP5 PUSH2 0x430A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1368 DUP3 PUSH2 0x4832 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1368 DUP3 DUP5 PUSH2 0x4290 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4B56 DUP3 DUP6 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x12B0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4290 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x4B71 DUP3 DUP11 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4B7E PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4B8B PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4B98 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4BA5 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4BB2 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4BBF PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4BD9 DUP3 DUP8 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4BE6 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4BF3 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C00 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4C17 DUP3 DUP7 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C24 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x3987 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4C3F DUP3 DUP8 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C4C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4BF3 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4C67 DUP3 DUP9 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C74 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C81 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4C8E PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0xC82 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4CA9 DUP3 DUP6 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x12B0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4CC4 DUP3 DUP7 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C24 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4CDF DUP3 DUP8 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C4C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12B0 DUP2 DUP5 PUSH2 0x429F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1368 DUP3 DUP5 PUSH2 0x42F8 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x4D1A DUP3 DUP12 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4D27 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x42F8 JUMP JUMPDEST PUSH2 0x4D34 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4D41 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4D4E PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4D5B PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4D68 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4D75 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x4D91 DUP3 DUP16 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4D9E PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4DAB PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4DB8 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x42F8 JUMP JUMPDEST PUSH2 0x4DC5 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4DD2 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4DDF PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4DEC PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4DFA PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4E08 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4E16 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4E24 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x4290 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4CC4 DUP3 DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1368 DUP3 DUP5 PUSH2 0x4339 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12B0 DUP2 DUP5 PUSH2 0x4342 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x437A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x43A9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x43CB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4404 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x444C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x447C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x44C0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x44F9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4525 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x454F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4588 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x45B7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4616 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x464F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4688 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x46C1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x46EB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x472E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4756 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4784 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x47B2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x47E2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x483F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4869 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4891 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x48BA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4906 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4935 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x495C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x498E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x49C0 JUMP JUMPDEST PUSH2 0x1E0 DUP2 ADD PUSH2 0x1368 DUP3 DUP5 PUSH2 0x49F9 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1368 DUP3 DUP5 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x507D DUP3 DUP9 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4C74 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x5098 DUP3 DUP10 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x50A5 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x50B2 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x50BF PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x50CC PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x50D9 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1368 DUP3 PUSH2 0x511C JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1368 DUP3 PUSH2 0x50FC JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x514E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5136 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2652 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x5172 DUP2 PUSH2 0x50FC JUMP JUMPDEST DUP2 EQ PUSH2 0x2119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5172 DUP2 PUSH2 0x5107 JUMP JUMPDEST PUSH2 0x5172 DUP2 PUSH2 0x510C JUMP JUMPDEST PUSH2 0x5172 DUP2 PUSH2 0x510F JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xB3 0xD0 SWAP4 SELFDESTRUCT 0xC2 PUSH6 0xE335120E6E62 BLOCKHASH RETURNDATACOPY ADDMOD 0xE9 DUP15 PUSH10 0x8DA67CD5B65EC32FCF17 0xC8 DUP8 0xD7 PUSH26 0x6C6578706572696D656E74616CF564736F6C6343000511004000 ",
              "sourceMap": "834:20322:129:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;1478:23:129;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;834:20322:129;;780:87:137;853:10;780:87;:::o;834:20322:129:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106103b85760003560e01c80638f32d59b116101f2578063cfc85c061161010d578063e8f62764116100a0578063f589a3e71161006f578063f589a3e714610aeb578063f6ddc8b314610b00578063f706b1f214610b15578063f851a44014610b2a576103b8565b8063e8f6276414610a8c578063edab119f14610aa1578063f0e085f514610ab6578063f2fde38b14610acb576103b8565b8063d485045e116100dc578063d485045e14610a19578063db35400d14610a39578063dea9b46414610a59578063e81fefa014610a6c576103b8565b8063cfc85c06146109bc578063d1979fb0146109cf578063d288208c146109ef578063d473c2da14610a04576103b8565b8063b7e1524111610185578063c4a9081511610154578063c4a908151461090e578063c4d66de814610946578063cb6eacd114610968578063cd5d808d1461099c576103b8565b8063b7e15241146108a4578063b9cffa3e146108c4578063ba4861e9146108d9578063bdee453c146108ee576103b8565b8063acc04348116101c1578063acc0434814610838578063ae0a85301461084d578063afe8400914610862578063b30643d914610884576103b8565b80638f32d59b146107be57806392d894f8146107d3578063959083d3146107f35780639b16cd8714610808576103b8565b80634699f846116102e25780637420ca3e116102755780638456cb59116102445780638456cb59146107475780638932f5f71461075c5780638da5cb5b146107895780638dc48ba51461079e576103b8565b80637420ca3e146106f3578063742e67981461070857806378d849ed1461071d5780637a8faeb814610732576103b8565b806360857c2c116102b157806360857c2c1461066257806362fff3f61461068257806368c4ac26146106b35780636e663730146106d3576103b8565b80634699f846146105f45780634f28cac214610609578063569fc1fb1461061e578063574442cc1461064d576103b8565b806324cc57491161035a5780633452d2d4116103295780633452d2d4146105745780633fca506e146105945780634115a2b6146105b45780634203e395146105d4576103b8565b806324cc5749146104fd5780632a3240271461052a5780632f4707641461053f5780633432423c14610554576103b8565b8063122f0e3a11610396578063122f0e3a1461047057806317548b791461049d5780631b7bde74146104bd578063218b39c6146104dd576103b8565b806302a3fe64146103e6578063065d810f1461041c5780630676c1b71461044e575b3480156103c457600080fd5b5060405162461bcd60e51b81526004016103dd90614fa2565b60405180910390fd5b3480156103f257600080fd5b50610406610401366004614000565b610b3f565b6040516104139190614cec565b60405180910390f35b34801561042857600080fd5b5061043c610437366004613fd0565b610c8c565b6040516104139695949392919061508a565b34801561045a57600080fd5b50610463610ccc565b6040516104139190614b3a565b34801561047c57600080fd5b5061049061048b3660046140e2565b610cdb565b6040516104139190615061565b3480156104a957600080fd5b506104636104b83660046141cc565b61107b565b3480156104c957600080fd5b506104906104d8366004613f96565b611096565b3480156104e957600080fd5b506104636104f8366004613f78565b6110b3565b34801561050957600080fd5b5061051d610518366004613f78565b6110ce565b6040516104139190614cfd565b34801561053657600080fd5b506104906110e3565b34801561054b57600080fd5b506104906110e9565b34801561056057600080fd5b5061043c61056f366004613fd0565b6110ef565b34801561058057600080fd5b5061049061058f366004613f78565b61112f565b3480156105a057600080fd5b506104906105af366004613f78565b611141565b3480156105c057600080fd5b5061051d6105cf3660046140c3565b611153565b3480156105e057600080fd5b506104906105ef366004613f78565b611173565b34801561060057600080fd5b50610490611185565b34801561061557600080fd5b5061049061118b565b34801561062a57600080fd5b5061063e6106393660046140a5565b611191565b60405161041393929190614e35565b34801561065957600080fd5b506104906111b2565b34801561066e57600080fd5b5061040661067d366004614238565b6111b8565b34801561068e57600080fd5b506106a261069d366004613f96565b6112b7565b60405161041395949392919061506f565b3480156106bf57600080fd5b5061051d6106ce366004613f78565b6112f1565b3480156106df57600080fd5b506104636106ee366004613f78565b611306565b3480156106ff57600080fd5b50610463611321565b34801561071457600080fd5b50610490611330565b34801561072957600080fd5b50610463611336565b34801561073e57600080fd5b50610490611345565b34801561075357600080fd5b5061051d61134b565b34801561076857600080fd5b5061077c6107773660046140a5565b611354565b6040516104139190615052565b34801561079557600080fd5b5061046361136e565b3480156107aa57600080fd5b506104636107b9366004613f78565b61137d565b3480156107ca57600080fd5b5061051d611398565b3480156107df57600080fd5b506104906107ee366004613f78565b6113be565b3480156107ff57600080fd5b506104906113d0565b34801561081457600080fd5b506108286108233660046140a5565b6113d6565b6040516104139493929190614cd1565b34801561084457600080fd5b50610490611467565b34801561085957600080fd5b5061049061146d565b34801561086e57600080fd5b50610877611473565b6040516104139190614e43565b34801561089057600080fd5b5061049061089f366004613f78565b611482565b3480156108b057600080fd5b506104906108bf366004613f78565b611494565b3480156108d057600080fd5b506104636114a6565b3480156108e557600080fd5b506104636114b5565b3480156108fa57600080fd5b50610490610909366004613f78565b6114c4565b34801561091a57600080fd5b5061092e6109293660046140a5565b6114d6565b6040516104139c9b9a99989796959493929190614d82565b34801561095257600080fd5b50610966610961366004613f78565b611548565b005b34801561097457600080fd5b506109886109833660046140a5565b6116a3565b604051610413989796959493929190614d0b565b3480156109a857600080fd5b506104906109b7366004613f96565b6116f5565b6104906109ca36600461414e565b611712565b3480156109db57600080fd5b5061043c6109ea366004613f96565b611b8a565b3480156109fb57600080fd5b50610463611c79565b348015610a1057600080fd5b50610490611c88565b348015610a2557600080fd5b50610490610a34366004613f78565b611c8e565b348015610a4557600080fd5b50610490610a543660046140e2565b611ca0565b610966610a6736600461412f565b611ec5565b348015610a7857600080fd5b50610966610a87366004613f78565b6120ec565b348015610a9857600080fd5b5061046361211c565b348015610aad57600080fd5b5061049061212b565b348015610ac257600080fd5b50610490612131565b348015610ad757600080fd5b50610966610ae6366004613f78565b612137565b348015610af757600080fd5b50610490612164565b348015610b0c57600080fd5b5061049061216a565b348015610b2157600080fd5b50610463612170565b348015610b3657600080fd5b5061046361217f565b6060600083610b65576001600160a01b0388166000908152601260205260409020610b7e565b6001600160a01b03881660009081526011602052604090205b90506000610baa610b8e8361218e565b610b9e8a8a63ffffffff61219516565b9063ffffffff6121ba16565b9050808810610bbb5750610c829050565b86604051908082528060200260200182016040528015610bf557816020015b610be2613d6a565b815260200190600190039081610bda5790505b50925060008882035b8015610c715788821415610c1157610c71565b610c19613d6a565b610c39610c3286600019858f010163ffffffff6121d016565b8a896121f4565b8051909150610c485750610c68565b80868481518110610c5557fe5b6020908102919091010152506001909101905b60001901610bfe565b5087811015610c7e578084525b5050505b9695505050505050565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6000600160005414610cff5760405162461bcd60e51b81526004016103dd90614fd2565b6002600055603d5460ff1615610d275760405162461bcd60e51b81526004016103dd90614e72565b81610d445760405162461bcd60e51b81526004016103dd90614e62565b6000848152600660209081526040808320600181015484526007909252909120600382015460ff16610d885760405162461bcd60e51b81526004016103dd90614fc2565b600a8201546001600160a01b0316331480610dbe575081546000908152600a6020908152604080832033845290915290205460ff165b610dda5760405162461bcd60e51b81526004016103dd90614f72565b600681015415610dfc5760405162461bcd60e51b81526004016103dd90614ea2565b42826007015411610e1f5760405162461bcd60e51b81526004016103dd90615002565b600b8201546002820154610e3f916001600160a01b03908116911661257a565b81546000818152600c6020526040902060028301546003840154600a8601549293610e7f93859391926001600160a01b0392831692908116911642612658565b6000610ebf62015180610eb38460000154610ea74289600701546126b390919063ffffffff16565b9063ffffffff6126f516565b9063ffffffff61272f16565b9050808610610ee05760405162461bcd60e51b81526004016103dd90614f42565b602d5460028401546001600160a01b0390811691161415610f0a57610f058787612771565b610f23565b6002830154610f23906001600160a01b03168888612849565b8154610f3c90610eb3886201518063ffffffff6126f516565b945084846007015411610f615760405162461bcd60e51b81526004016103dd90614ee2565b6007840154610f76908663ffffffff6126b316565b600785018190554210610f9b5760405162461bcd60e51b81526004016103dd90614ee2565b6007840154600090610fb3904263ffffffff6126b316565b9050610e108111610fd65760405162461bcd60e51b81526004016103dd90614ee2565b6001830154610feb908863ffffffff6126b316565b6001840155600b858101546001600160a01b039081166000908152602092835260408082206002808a01549094168352909352919091200154611034908863ffffffff6126b316565b600b958601546001600160a01b0390811660009081526020978852604080822060029889015490931682529190975286209094019390935550506001909155509392505050565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b606060006111d96111c9600f61218e565b610b9e878763ffffffff61219516565b90508085106111e857506112b0565b8360405190808252806020026020018201604052801561122257816020015b61120f613d6a565b8152602001906001900390816112075790505b50915060008582035b80156112a0578582141561123e576112a0565b611246613d6a565b611268611260600f600019858c010163ffffffff6121d016565b6000886121f4565b80519091506112775750611297565b8085848151811061128457fe5b6020908102919091010152506001909101905b6000190161122b565b50848110156112ad578083525b50505b9392505050565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b61135c613d6a565b611368826000806121f4565b92915050565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b03166113af6128ba565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b60008181526006602081815260408084206001808201548652600780855283872060020154888852600c86529387208054920154959094529201546001600160a01b0390911693919291908142821061142f5742611431565b815b905080821161144157600061145c565b61145c62015180610eb387610ea7868663ffffffff6126b316565b925050509193509193565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b611550611398565b61156c5760405162461bcd60e51b81526004016103dd90614f72565b6337aa6d1960e21b600081905260056020527fa56283bb23bc3f9d1e31fd0b79ab29917294036597bcddbdbeb3da57495b10ad546001600160a01b0316906115b490836128be565b6115c563db35400d60e01b836128be565b6115d6630740ff7d60e51b836128be565b6115e76367e42e0360e11b836128be565b6115f8630917871d60e11b836128be565b611609630d1979fb60e41b836128be565b61161a639b16cd8760e01b836128be565b61162a62a8ff9960e21b836128be565b61163b638932f5f760e01b836128be565b61164c6318215f0b60e21b836128be565b6e4c6f616e4d61696e74656e616e636560881b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b60006001600054146117365760405162461bcd60e51b81526004016103dd90614fd2565b6002600055603d5460ff161561175e5760405162461bcd60e51b81526004016103dd90614e72565b8461177b5760405162461bcd60e51b81526004016103dd90614f82565b6000868152600660209081526040808320600181015484526007909252909120600382015460ff166117bf5760405162461bcd60e51b81526004016103dd90614fc2565b8515806117d85750600a8201546001600160a01b031633145b806117fe575081546000908152600a6020908152604080832033845290915290205460ff165b61181a5760405162461bcd60e51b81526004016103dd90614f72565b60068101541561183c5760405162461bcd60e51b81526004016103dd90614ea2565b3415806118645750851580156118645750602d5460028201546001600160a01b039081169116145b6118805760405162461bcd60e51b81526004016103dd90614ed2565b600b82015460028201546118a0916001600160a01b03908116911661257a565b81546000818152600c6020526040902060028301546003840154600a86015492936118e093859391926001600160a01b0392831692908116911642612658565b6000836007015442111561195057600784015461190490429063ffffffff6126b316565b825490915061191a90829063ffffffff6126f516565b905061192f816201518063ffffffff61272f16565b90508089116119505760405162461bcd60e51b81526004016103dd90614eb2565b87156119d15760408051610100808201835285548252600186015460ff811615156020840152046001600160a01b039081169282019290925260028501548216606082015260038501549091166080820152600484015460a0820152600584015460c0820152600684015460e08201526119cc9085908b612934565b611a18565b346119ef5760028301546119cc906001600160a01b0316338b612a60565b883414611a0e5760405162461bcd60e51b81526004016103dd90615032565b611a183334612ac4565b8015611a5257611a2e898263ffffffff6126b316565b600b8501546002850154919a50611a52916001600160a01b03918216911683612b6a565b8154611a6b90610eb38b6201518063ffffffff6126f516565b6007850154909550611a83908663ffffffff61219516565b600785018190554210611aa85760405162461bcd60e51b81526004016103dd90614ee2565b6007840154600090611ac0904263ffffffff6126b316565b9050610e108111611ae35760405162461bcd60e51b81526004016103dd90614ee2565b6001830154611af8908b63ffffffff61219516565b6001840155600b858101546001600160a01b039081166000908152602092835260408082206002808a01549094168352909352919091200154611b41908b63ffffffff61219516565b600b958601546001600160a01b03908116600090815260209788526040808220600298890154909316825291909752862090940193909355505060019091555095945050505050565b600080600080600080611b9b613df5565b506001600160a01b038089166000908152600b60209081526040808320938b16835292815290829020825160a081018452815481526001820154928101839052600282015493810193909352600381015460608401526004015460808301819052611c1b916201518091610eb39190610ea790429063ffffffff6126b316565b93508060400151841115611c3157806040015193505b606081015180611c42576000611c48565b81608001515b60208301516080840151611c5d576000611c5f565b865b6015549451939d929c50909a509850919650945092505050565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6000600160005414611cc45760405162461bcd60e51b81526004016103dd90614fd2565b6002600055603d5460ff1615611cec5760405162461bcd60e51b81526004016103dd90614e72565b81611d095760405162461bcd60e51b81526004016103dd90614e62565b6000848152600660209081526040808320600181015484526007909252909120600382015460ff16611d4d5760405162461bcd60e51b81526004016103dd90614fc2565b600a8201546001600160a01b0316331480611d83575081546000908152600a6020908152604080832033845290915290205460ff165b611d9f5760405162461bcd60e51b81526004016103dd90614f72565b600280549082015460038301546004808601546005808801549087015460405163f80b25fb60e01b81526000976001600160a01b039081169763f80b25fb97611df397918316969216949193919201614c59565b60206040518083038186803b158015611e0b57600080fd5b505afa158015611e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e4391908101906141ea565b905080851115611e5557809350611e59565b8493505b6005830154611e6e908563ffffffff6126b316565b6005840155602d5460038301546001600160a01b0390811691161415611e9d57611e988685612771565b611eb6565b6003820154611eb6906001600160a01b03168786612849565b50506001600055509392505050565b600160005414611ee75760405162461bcd60e51b81526004016103dd90614fd2565b6002600055603d5460ff1615611f0f5760405162461bcd60e51b81526004016103dd90614e72565b80611f2c5760405162461bcd60e51b81526004016103dd90614f82565b6000828152600660209081526040808320600181015484526007909252909120600382015460ff16611f705760405162461bcd60e51b81526004016103dd90614fc2565b341580611f8f5750602d5460038201546001600160a01b039081169116145b611fab5760405162461bcd60e51b81526004016103dd90614ed2565b6005820154611fc0908463ffffffff61219516565b600583015534611fe8576003810154611fe3906001600160a01b03163385612a60565b612011565b8234146120075760405162461bcd60e51b81526004016103dd90615032565b6120113334612ac4565b60028054600383015491830154604051630a7549df60e21b81526000936001600160a01b03938416936329d5277c936120539392821692911690600401614b48565b604080518083038186803b15801561206a57600080fd5b505afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120a29190810190614208565b5090507fc3c4f75ea99730f240c3ea8d68f7a9b94584539caf936f566e8b9f8fe13036f48585836040516120d893929190614e35565b60405180910390a150506001600055505050565b603d5460ff161561210f5760405162461bcd60e51b81526004016103dd90614e72565b612119338261257a565b50565b6014546001600160a01b031681565b601b5481565b60285481565b61213f611398565b61215b5760405162461bcd60e51b81526004016103dd90614f72565b61211981612c01565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6001015490565b6000828201838110156112b05760405162461bcd60e51b81526004016103dd90614ec2565b60008183106121c957816112b0565b5090919050565b60008260010182815481106121e157fe5b9060005260206000200154905092915050565b6121fc613d6a565b612204613e24565b5060008481526006602081815260409283902083516101808101855281548152600182015492810192909252600281015493820193909352600383015460ff161515606082015260048301546080820152600583015460a08201529082015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a8201546001600160a01b03908116610140830152600b909201549091166101608201526122b5613e88565b506020808201516000908152600782526040908190208151610100808201845282548252600183015460ff81161515958301959095526001600160a01b03940484169281019290925260028101548316606083015260038101549092166080820152600482015460a0820152600582015460c082015260069091015460e082015284156123735784600114801561234f575060e081015115155b806123675750846002148015612367575060e0810151155b61237357506112b09050565b61237b613ecc565b506000868152600c6020908152604080832081516060808201845282548252600183015494820194909452600291820154818401529054928501516080808701519088015160a089015194516317f8680960e11b815293969586956001600160a01b0390911694632ff0d012946123fa94909390929091600401614c31565b604080518083038186803b15801561241157600080fd5b505afa158015612425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124499190810190614208565b915091506000808560c00151841161247f5761247487608001518860a00151868960c0015187612c83565b509092509050612492565b881561249257506112b095505050505050565b604051806101e001604052808c815260200187606001516001600160a01b0316815260200187608001516001600160a01b03168152602001886080015181526020018860a00151815260200186600001518152602001428960e0015110156124fb576000612521565b61252162015180610eb38960000151610ea7428e60e001516126b390919063ffffffff16565b8152602001886101200151815260200188610100015181526020018760c0015181526020018581526020018760e0015181526020018860e001518152602001838152602001828152509750505050505050509392505050565b6001600160a01b038083166000908152600b6020908152604080832093851683529290529081206001810154909190158015906125ba5750600482015415155b1561264b576125e562015180610eb38460010154610ea78660040154426126b390919063ffffffff16565b4260048401556002830154909150811115612601575060028101545b801561264657600382015461261c908263ffffffff61219516565b60038301556002820154612636908263ffffffff6126b316565b6002830155612646848483612b6a565b612652565b4260048301555b50505050565b600061268e6a07259756a8d61998000000610eb3601554610ea78b60000154610ea78d60020154896126b390919063ffffffff16565b60028801839055905080156126aa576126aa8387878785612db7565b50505050505050565b60006112b083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613102565b60008261270457506000611368565b8282028284828161271157fe5b04146112b05760405162461bcd60e51b81526004016103dd90614f62565b60006112b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061312e565b801561284557602d546001600160a01b031647808311156127ed57604051632e1a7d4d60e01b81526001600160a01b03831690632e1a7d4d906127ba9084870390600401615061565b600060405180830381600087803b1580156127d457600080fd5b505af11580156127e8573d6000803e3d6000fd5b505050505b6127f78484613165565b836001600160a01b0316826001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a18560405161283a9190615061565b60405180910390a350505b5050565b80156128b5576128696001600160a01b038416838363ffffffff61320116565b816001600160a01b0316836001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a1836040516128ac9190615061565b60405180910390a35b505050565b3390565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b0383169081179091551561291957612913600d6001600160e01b0319841663ffffffff61325a16565b50612845565b6128b5600d6001600160e01b0319841663ffffffff6132a216565b600061297f84600001548460800151856060015187600a0160009054906101000a90046001600160a01b03168860050154600088600160405180602001604052806000815250613363565b50600586015490925061299991508263ffffffff6126b316565b60058501819055600254606085015160808601516004808901546040516317f8680960e11b81526000966001600160a01b0390961695632ff0d012956129e495909490939201614c31565b604080518083038186803b1580156129fb57600080fd5b505afa158015612a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a339190810190614208565b5090508360c001518111612a595760405162461bcd60e51b81526004016103dd90614f92565b5050505050565b80156128b557612a816001600160a01b03841683308463ffffffff6134c116565b816001600160a01b0316836001600160a01b03167f2790b90165fd3973ad7edde4eca71b4f8808dd4857a2a3a3e8ae5642a5cb196e836040516128ac9190615061565b602d5460408051630d0e30db60e41b815290516001600160a01b0390921691829163d0e30db091859160048082019260009290919082900301818588803b158015612b0e57600080fd5b505af1158015612b22573d6000803e3d6000fd5b5050505050826001600160a01b0316816001600160a01b03167f2790b90165fd3973ad7edde4eca71b4f8808dd4857a2a3a3e8ae5642a5cb196e846040516128ac9190615061565b6000612b8e68056bc75e2d63100000610eb3601554856126f590919063ffffffff16565b9050612b9b8484836134e5565b612bb58385612bb0858563ffffffff6126b316565b612849565b6001600160a01b038085169084167f220e66e3e759e1382aa86cd8af5abca05ebf3ad564f223ae62d977678337272a612bf4858563ffffffff6126b316565b60405161283a9190615061565b6001600160a01b038116612c275760405162461bcd60e51b81526004016103dd90614e92565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b602154600090819084861180612c97575083155b15612ca157612dac565b808611612cb5575086915085905084612dac565b6000612ccf86674563918244f4000063ffffffff61219516565b9050612cf268056bc75e2d63100000610eb38b610ea7858463ffffffff61219516565b9350612d20612d13670de0b6b3a7640000610eb38b8963ffffffff6126f516565b859063ffffffff6126b316565b9350612d4e612d35828463ffffffff6126b316565b610eb38668056bc75e2d6310000063ffffffff6126f516565b935088841115612d5c578893505b612d85612d788368056bc75e2d6310000063ffffffff61219516565b859063ffffffff6126f516565b9250612d9c6064610eb3858863ffffffff61272f16565b925087831115612daa578792505b505b955095509592505050565b602f546002546001600160a01b038581166000908152603c602090815260408083208885168452909152812054909392919091169015612e1a576001600160a01b038087166000908152603c602090815260408083209389168352929052205491505b6037546000906060906001600160a01b038085169163d138f9a160e01b918b9116612e5868056bc75e2d63100000610eb38c8b63ffffffff6126f516565b604051602401612e6a93929190614c09565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612ea89190614b23565b600060405180830381855afa9150503d8060008114612ee3576040519150601f19603f3d011682016040523d82523d6000602084013e612ee8565b606091505b50915091506001821415612efe57602081015194505b84156130f65760375460385460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612f3a929116908990600401614c9b565b602060405180830381600087803b158015612f5457600080fd5b505af1158015612f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f8c9190810190614087565b50603854603f546040516000926001600160a01b031691612fb3918e918a91602401614cb6565b60408051601f198184030181529181526020820180516001600160e01b0316630efe6a8b60e01b17905251612fe89190614b23565b6000604051808303816000865af19150503d8060008114613025576040519150601f19603f3d011682016040523d82523d6000602084013e61302a565b606091505b5050905080156130a157601f54613047908763ffffffff61219516565b601f55603754603f546040518c926001600160a01b0390811692908f16917ff41c644671512f1cda76abfe6038e3d7d526c1377a5a8c692f81703901db215091613094918b918d91614e35565b60405180910390a46130f4565b603754603f546040518c926001600160a01b0390811692908f16917f483f67ea49f76ac15e15bbad68b52788ca47d50aef1e4acfe95e5e307e710812916130eb918b918d91614e35565b60405180910390a45b505b50505050505050505050565b600081848411156131265760405162461bcd60e51b81526004016103dd9190614e51565b505050900390565b6000818361314f5760405162461bcd60e51b81526004016103dd9190614e51565b50600083858161315b57fe5b0495945050505050565b804710156131855760405162461bcd60e51b81526004016103dd90614f22565b6000826001600160a01b03168260405161319e90614b2f565b60006040518083038185875af1925050503d80600081146131db576040519150601f19603f3d011682016040523d82523d6000602084013e6131e0565b606091505b50509050806128b55760405162461bcd60e51b81526004016103dd90614f12565b6040516128b590849063a9059cbb60e01b906132239086908690602401614c9b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613566565b6000613266838361364b565b61329a5750600180830180548083018083556000928352602080842090920185905584835290859052604090912055611368565b506000611368565b60006132ae838361364b565b1561329a57600082815260208490526040902054600184015460001991820191018082146133265760008560010182815481106132e757fe5b906000526020600020015490508086600101848154811061330457fe5b6000918252602080832090910192909255918252869052604090206001830190555b6000848152602086905260408120556001850180548061334257fe5b60019003818190600052602060002001600090559055600192505050611368565b6040805160a0810182526001600160a01b03808b16825289811660208084019190915230838501819052606080850191909152918a166080840152835191820184528882528101879052918201859052600091829182916133c891908e888886613660565b90935091506133d78b83613885565b600254602754604051631e2c62d360e01b81526001600160a01b0390921691631e2c62d391613410918f918f9188918a91600401614c59565b60206040518083038186803b15801561342857600080fd5b505afa15801561343c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061346091908101906141ea565b9050896001600160a01b03168b6001600160a01b03168d7fb4eb3c9b62efcce7021cba5fd9cd0c44df91c2272806ccc5e57df7c912e8d7168c86886040516134aa93929190614cb6565b60405180910390a499509950999650505050505050565b6040516126529085906323b872dd60e01b9061322390879087908790602401614c09565b80156128b5576001600160a01b038216600090815260166020526040902054613514908263ffffffff61219516565b6001600160a01b0380841660008181526016602052604090819020939093559151908516907f40a75ae5f7a5336e75f7c7977e12c4b46a9ac0f30de01a2d5b6c1a4f4af63587906128ac908590615061565b613578826001600160a01b0316613953565b6135945760405162461bcd60e51b81526004016103dd90615042565b60006060836001600160a01b0316836040516135b09190614b23565b6000604051808303816000865af19150503d80600081146135ed576040519150601f19603f3d011682016040523d82523d6000602084013e6135f2565b606091505b5091509150816136145760405162461bcd60e51b81526004016103dd90614ef2565b805115612652578080602001905161362f9190810190614087565b6126525760405162461bcd60e51b81526004016103dd90614ff2565b60009081526020919091526040902054151590565b845160009081901515806136775750602087015115155b6136935760405162461bcd60e51b81526004016103dd90614fb2565b60208701516136a457865160208801525b6020870151875111156136c95760405162461bcd60e51b81526004016103dd90614f32565b6000806000876137865760408a01516137455785156136fa576136f38a60005b602002015161398f565b905061370e565b61370b8a60005b60200201516139bf565b90505b80156137405760808b01518b5161373191908b908e60015b6020020151856139e3565b895161373d90826126b3565b8a525b613786565b851561375d576137568a60026136e9565b905061376b565b6137688a6002613701565b90505b80156137865760408a01516137809082612195565b60408b01525b8651156137a55760405162461bcd60e51b81526004016103dd90614fe2565b6137af8b8b613b33565b60408c015191945092506137fb57895182146137dd5760405162461bcd60e51b81526004016103dd90615022565b80156137f6576137f3828263ffffffff61219516565b91505b613875565b60208a015182111561381f5760405162461bcd60e51b81526004016103dd90614f02565b60408a01518310156138435760405162461bcd60e51b81526004016103dd90614e82565b80156138755760808b015160208c015161386291908b908e6000613726565b613872838263ffffffff6126b316565b92505b5090999098509650505050505050565b60295480156128b557602d546000906001600160a01b03858116911614156138ae575081613933565b600254604051635967aa7560e11b81526001600160a01b039091169063b2cf54ea906138e09087908790600401614c9b565b60206040518083038186803b1580156138f857600080fd5b505afa15801561390c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061393091908101906141ea565b90505b818111156126525760405162461bcd60e51b81526004016103dd90614f52565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061398757508115155b949350505050565b600061136868056bc75e2d631000006139b3603e54856126f590919063ffffffff16565b9063ffffffff613c4516565b600061136868056bc75e2d631000006139b3601854856126f590919063ffffffff16565b808015613b2b576001600160a01b038681166000908152603360205260409020541615613a99576001600160a01b03808716600090815260336020526040902054613a319116878684613c87565b5050613a96613a5868056bc75e2d63100000610eb3603954856126f590919063ffffffff16565b613a8a613a7d68056bc75e2d63100000610eb3602054876126f590919063ffffffff16565b849063ffffffff6126b316565b9063ffffffff6126b316565b90505b6001600160a01b038416600090815260196020526040902054613ac2908263ffffffff61219516565b6001600160a01b03808616600081815260196020526040908190209390935591518792918916907fb23479169712c443e6b00fb0cec3506a5f5926f541df4243d313e11c8c5c71ed90613b16908690615061565b60405180910390a4613b2b8686868686612db7565b505050505050565b815160208084015160408086015160608781015187519588015188850151945160009889989497630957ba1160e21b97613b7a979296919592949293919291602401614b63565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260035491519092506000916001600160a01b031690613bcc908490614b23565b600060405180830381855af49150503d8060008114613c07576040519150601f19603f3d011682016040523d82523d6000602084013e613c0c565b606091505b509250905080613c2e5760405162461bcd60e51b81526004016103dd90615012565b602082015193506040820151925050509250929050565b60006112b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d20565b6031546040516306a688ff60e11b815260009182916001600160a01b0390911690630d4d11fe90613cc2908990899089908990600401614bcb565b6040805180830381600087803b158015613cdb57600080fd5b505af1158015613cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613d139190810190614208565b9097909650945050505050565b60008183613d415760405162461bcd60e51b81526004016103dd9190614e51565b5083613d4f575060006112b0565b6000836001860381613d5d57fe5b0460010195945050505050565b604051806101e001604052806000801916815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915290565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b60405180606001604052806000815260200160008152602001600081525090565b803561136881615169565b80356113688161517d565b80516113688161517d565b803561136881615186565b80356113688161518f565b60008083601f840112613f3657600080fd5b50813567ffffffffffffffff811115613f4e57600080fd5b602083019150836001820283011115613f6657600080fd5b9250929050565b805161136881615186565b600060208284031215613f8a57600080fd5b60006139878484613eed565b60008060408385031215613fa957600080fd5b6000613fb58585613eed565b9250506020613fc685828601613eed565b9150509250929050565b60008060408385031215613fe357600080fd5b6000613fef8585613eed565b9250506020613fc685828601613f0e565b60008060008060008060c0878903121561401957600080fd5b60006140258989613eed565b965050602061403689828a01613f0e565b955050604061404789828a01613f0e565b945050606061405889828a01613f0e565b935050608061406989828a01613ef8565b92505060a061407a89828a01613ef8565b9150509295509295509295565b60006020828403121561409957600080fd5b60006139878484613f03565b6000602082840312156140b757600080fd5b60006139878484613f0e565b600080604083850312156140d657600080fd5b6000613fb58585613f0e565b6000806000606084860312156140f757600080fd5b60006141038686613f0e565b935050602061411486828701613eed565b925050604061412586828701613f0e565b9150509250925092565b6000806040838503121561414257600080fd5b6000613fef8585613f0e565b60008060008060006080868803121561416657600080fd5b60006141728888613f0e565b955050602061418388828901613f0e565b945050604061419488828901613ef8565b935050606086013567ffffffffffffffff8111156141b157600080fd5b6141bd88828901613f24565b92509250509295509295909350565b6000602082840312156141de57600080fd5b60006139878484613f19565b6000602082840312156141fc57600080fd5b60006139878484613f6d565b6000806040838503121561421b57600080fd5b60006142278585613f6d565b9250506020613fc685828601613f6d565b60008060006060848603121561424d57600080fd5b60006142598686613f0e565b935050602061426a86828701613f0e565b925050604061412586828701613ef8565b600061428783836149f9565b50506101e00190565b614299816150fc565b82525050565b60006142aa826150ea565b6142b481856150ee565b93506142bf836150e4565b8060005b838110156142ed5781516142d7888261427b565b97506142e2836150e4565b9250506001016142c3565b509495945050505050565b61429981615107565b6142998161510c565b6000614315826150ea565b61431f81856150f7565b935061432f818560208601615133565b9290920192915050565b61429981615128565b600061434d826150ea565b61435781856150ee565b9350614367818560208601615133565b6143708161515f565b9093019392505050565b60006143876013836150ee565b7207769746864726177416d6f756e74206973203606c1b815260200192915050565b60006143b66006836150ee565b6514185d5cd95960d21b815260200192915050565b60006143d8601b836150ee565b7f696e73756666696369656e742073776170206c69717569646974790000000000815260200192915050565b60006144116026836150ee565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006144596014836150ee565b73696e646566696e6974652d7465726d206f6e6c7960601b815260200192915050565b60006144896022836150ee565b7f6465706f7369742063616e6e6f7420636f766572206261636b20696e746572658152611cdd60f21b602082015260400192915050565b60006144cd601b836150ee565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006145066010836150ee565b6f1ddc9bdb99c8185cdcd95d081cd95b9d60821b815260200192915050565b6000614532600e836150ee565b6d1b1bd85b881d1bdbc81cda1bdc9d60921b815260200192915050565b600061455c6020836150ee565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b60006145956013836150ee565b72737761702066696c6c20746f6f206c6172676560681b815260200192915050565b60006145c4603a836150ee565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b6000614623601d836150ee565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b600061465c601c836150ee565b7f736f75726365416d6f756e74206c6172676572207468616e206d617800000000815260200192915050565b60006146956018836150ee565b7f776974686472617720616d6f756e7420746f6f20686967680000000000000000815260200192915050565b60006146ce600e836150ee565b6d7377617020746f6f206c6172676560901b815260200192915050565b60006146f86021836150ee565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061473b600c836150ee565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006147636012836150ee565b7106465706f736974416d6f756e7420697320360741b815260200192915050565b60006147916012836150ee565b713ab73432b0b63a343c903837b9b4ba34b7b760711b815260200192915050565b60006147bf6014836150ee565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b60006147ef602e836150ee565b7f6d696e206f72206d617820736f7572636520746f6b656e20616d6f756e74206e81526d1959591cc81d1bc81899481cd95d60921b602082015260400192915050565b60006113686000836150f7565b600061484c600e836150ee565b6d1b1bd85b881a5cc818db1bdcd95960921b815260200192915050565b6000614876600c836150ee565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b600061489e600d836150ee565b6c696e76616c696420737461746560981b815260200192915050565b60006148c7602a836150ee565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006149136013836150ee565b721b1bd85b881d195c9b481a185cc8195b991959606a1b815260200192915050565b6000614942600b836150ee565b6a1cddd85c0819985a5b195960aa1b815260200192915050565b60006149696016836150ee565b751cddd85c081d1bdbc81b185c99d9481d1bc8199a5b1b60521b815260200192915050565b600061499b6016836150ee565b750cae8d0cae440c8cae0dee6d2e840dad2e6dac2e8c6d60531b815260200192915050565b60006149cd601f836150ee565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b80516101e0830190614a0b8482614301565b506020820151614a1e6020850182614290565b506040820151614a316040850182614290565b506060820151614a446060850182614301565b506080820151614a576080850182614301565b5060a0820151614a6a60a0850182614301565b5060c0820151614a7d60c0850182614301565b5060e0820151614a9060e0850182614301565b50610100820151614aa5610100850182614301565b50610120820151614aba610120850182614301565b50610140820151614acf610140850182614301565b50610160820151614ae4610160850182614301565b50610180820151614af9610180850182614301565b506101a0820151614b0e6101a0850182614301565b506101c08201516126526101c0850182614301565b60006112b0828461430a565b600061136882614832565b602081016113688284614290565b60408101614b568285614290565b6112b06020830184614290565b60e08101614b71828a614290565b614b7e6020830189614290565b614b8b6040830188614290565b614b986060830187614290565b614ba56080830186614301565b614bb260a0830185614301565b614bbf60c0830184614301565b98975050505050505050565b60808101614bd98287614290565b614be66020830186614290565b614bf36040830185614290565b614c006060830184614301565b95945050505050565b60608101614c178286614290565b614c246020830185614290565b6139876040830184614301565b60808101614c3f8287614290565b614c4c6020830186614290565b614bf36040830185614301565b60a08101614c678288614290565b614c746020830187614290565b614c816040830186614301565b614c8e6060830185614301565b610c826080830184614301565b60408101614ca98285614290565b6112b06020830184614301565b60608101614cc48286614290565b614c246020830185614301565b60808101614cdf8287614290565b614c4c6020830186614301565b602080825281016112b0818461429f565b6020810161136882846142f8565b6101008101614d1a828b614301565b614d27602083018a6142f8565b614d346040830189614290565b614d416060830188614290565b614d4e6080830187614290565b614d5b60a0830186614301565b614d6860c0830185614301565b614d7560e0830184614301565b9998505050505050505050565b6101808101614d91828f614301565b614d9e602083018e614301565b614dab604083018d614301565b614db8606083018c6142f8565b614dc5608083018b614301565b614dd260a083018a614301565b614ddf60c0830189614301565b614dec60e0830188614301565b614dfa610100830187614301565b614e08610120830186614301565b614e16610140830185614290565b614e24610160830184614290565b9d9c50505050505050505050505050565b60608101614cc48286614301565b602081016113688284614339565b602080825281016112b08184614342565b602080825281016113688161437a565b60208082528101611368816143a9565b60208082528101611368816143cb565b6020808252810161136881614404565b602080825281016113688161444c565b602080825281016113688161447c565b60208082528101611368816144c0565b60208082528101611368816144f9565b6020808252810161136881614525565b602080825281016113688161454f565b6020808252810161136881614588565b60208082528101611368816145b7565b6020808252810161136881614616565b602080825281016113688161464f565b6020808252810161136881614688565b60208082528101611368816146c1565b60208082528101611368816146eb565b602080825281016113688161472e565b6020808252810161136881614756565b6020808252810161136881614784565b60208082528101611368816147b2565b60208082528101611368816147e2565b602080825281016113688161483f565b6020808252810161136881614869565b6020808252810161136881614891565b60208082528101611368816148ba565b6020808252810161136881614906565b6020808252810161136881614935565b602080825281016113688161495c565b602080825281016113688161498e565b60208082528101611368816149c0565b6101e0810161136882846149f9565b602081016113688284614301565b60a0810161507d8288614301565b614c746020830187614301565b60c081016150988289614301565b6150a56020830188614301565b6150b26040830187614301565b6150bf6060830186614301565b6150cc6080830185614301565b6150d960a0830184614301565b979650505050505050565b60200190565b5190565b90815260200190565b919050565b60006113688261511c565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b6000611368826150fc565b60005b8381101561514e578181015183820152602001615136565b838111156126525750506000910152565b601f01601f191690565b615172816150fc565b811461211957600080fd5b61517281615107565b6151728161510c565b6151728161510f56fea365627a7a72315820b3d093ffc265e335120e6e62403e08e98e698da67cd5b65ec32fcf17c887d7796c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3B8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1F2 JUMPI DUP1 PUSH4 0xCFC85C06 GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xE8F62764 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0xAEB JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0xB00 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xB15 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xB2A JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0xE8F62764 EQ PUSH2 0xA8C JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0xAA1 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0xAB6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xACB JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0xD485045E GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0xA19 JUMPI DUP1 PUSH4 0xDB35400D EQ PUSH2 0xA39 JUMPI DUP1 PUSH4 0xDEA9B464 EQ PUSH2 0xA59 JUMPI DUP1 PUSH4 0xE81FEFA0 EQ PUSH2 0xA6C JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0xCFC85C06 EQ PUSH2 0x9BC JUMPI DUP1 PUSH4 0xD1979FB0 EQ PUSH2 0x9CF JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x9EF JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0xA04 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0xB7E15241 GT PUSH2 0x185 JUMPI DUP1 PUSH4 0xC4A90815 GT PUSH2 0x154 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x90E JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x946 JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x968 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x99C JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x8A4 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x8C4 JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x8D9 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x8EE JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0xACC04348 GT PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x838 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x84D JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x862 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x884 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x7BE JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x7D3 JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x7F3 JUMPI DUP1 PUSH4 0x9B16CD87 EQ PUSH2 0x808 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x7420CA3E GT PUSH2 0x275 JUMPI DUP1 PUSH4 0x8456CB59 GT PUSH2 0x244 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x747 JUMPI DUP1 PUSH4 0x8932F5F7 EQ PUSH2 0x75C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x789 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x79E JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x6F3 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x708 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x732 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x60857C2C GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x60857C2C EQ PUSH2 0x662 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x682 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x6B3 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x6D3 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x5F4 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x609 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x64D JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x24CC5749 GT PUSH2 0x35A JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x329 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x574 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x594 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x5B4 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x5D4 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x52A JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x53F JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x554 JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x122F0E3A GT PUSH2 0x396 JUMPI DUP1 PUSH4 0x122F0E3A EQ PUSH2 0x470 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x49D JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x4DD JUMPI PUSH2 0x3B8 JUMP JUMPDEST DUP1 PUSH4 0x2A3FE64 EQ PUSH2 0x3E6 JUMPI DUP1 PUSH4 0x65D810F EQ PUSH2 0x41C JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x44E JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FA2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x406 PUSH2 0x401 CALLDATASIZE PUSH1 0x4 PUSH2 0x4000 JUMP JUMPDEST PUSH2 0xB3F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP2 SWAP1 PUSH2 0x4CEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43C PUSH2 0x437 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FD0 JUMP JUMPDEST PUSH2 0xC8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x508A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0xCCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP2 SWAP1 PUSH2 0x4B3A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x40E2 JUMP JUMPDEST PUSH2 0xCDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP2 SWAP1 PUSH2 0x5061 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x4B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x41CC JUMP JUMPDEST PUSH2 0x107B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x4D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F96 JUMP JUMPDEST PUSH2 0x1096 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x4F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x10B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51D PUSH2 0x518 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x10CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP2 SWAP1 PUSH2 0x4CFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x10E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x10E9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43C PUSH2 0x56F CALLDATASIZE PUSH1 0x4 PUSH2 0x3FD0 JUMP JUMPDEST PUSH2 0x10EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x58F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x112F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x5AF CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1141 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51D PUSH2 0x5CF CALLDATASIZE PUSH1 0x4 PUSH2 0x40C3 JUMP JUMPDEST PUSH2 0x1153 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x5EF CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1173 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x1185 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x118B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x63E PUSH2 0x639 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A5 JUMP JUMPDEST PUSH2 0x1191 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E35 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x11B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x406 PUSH2 0x67D CALLDATASIZE PUSH1 0x4 PUSH2 0x4238 JUMP JUMPDEST PUSH2 0x11B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6A2 PUSH2 0x69D CALLDATASIZE PUSH1 0x4 PUSH2 0x3F96 JUMP JUMPDEST PUSH2 0x12B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x506F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51D PUSH2 0x6CE CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x12F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x6EE CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1306 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x1321 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x1330 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x729 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x1336 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x1345 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51D PUSH2 0x134B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x77C PUSH2 0x777 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A5 JUMP JUMPDEST PUSH2 0x1354 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP2 SWAP1 PUSH2 0x5052 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x795 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x136E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x7B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x137D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51D PUSH2 0x1398 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x7EE CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x13BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x13D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x814 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x828 PUSH2 0x823 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A5 JUMP JUMPDEST PUSH2 0x13D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4CD1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x844 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x1467 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x146D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x877 PUSH2 0x1473 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP2 SWAP1 PUSH2 0x4E43 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x890 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x89F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1482 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x8BF CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1494 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x14A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x14B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x909 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x14C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x92E PUSH2 0x929 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A5 JUMP JUMPDEST PUSH2 0x14D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x966 PUSH2 0x961 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1548 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x974 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x988 PUSH2 0x983 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A5 JUMP JUMPDEST PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x413 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x9B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F96 JUMP JUMPDEST PUSH2 0x16F5 JUMP JUMPDEST PUSH2 0x490 PUSH2 0x9CA CALLDATASIZE PUSH1 0x4 PUSH2 0x414E JUMP JUMPDEST PUSH2 0x1712 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43C PUSH2 0x9EA CALLDATASIZE PUSH1 0x4 PUSH2 0x3F96 JUMP JUMPDEST PUSH2 0x1B8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x1C79 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x1C88 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0xA34 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x1C8E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0xA54 CALLDATASIZE PUSH1 0x4 PUSH2 0x40E2 JUMP JUMPDEST PUSH2 0x1CA0 JUMP JUMPDEST PUSH2 0x966 PUSH2 0xA67 CALLDATASIZE PUSH1 0x4 PUSH2 0x412F JUMP JUMPDEST PUSH2 0x1EC5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x966 PUSH2 0xA87 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x20EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x211C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x212B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x2131 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x966 PUSH2 0xAE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x2137 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x2164 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x490 PUSH2 0x216A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x2170 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x463 PUSH2 0x217F JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH2 0xB65 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xB7E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBAA PUSH2 0xB8E DUP4 PUSH2 0x218E JUMP JUMPDEST PUSH2 0xB9E DUP11 DUP11 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x21BA AND JUMP JUMPDEST SWAP1 POP DUP1 DUP9 LT PUSH2 0xBBB JUMPI POP PUSH2 0xC82 SWAP1 POP JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xBF5 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xBE2 PUSH2 0x3D6A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xBDA JUMPI SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x0 DUP9 DUP3 SUB JUMPDEST DUP1 ISZERO PUSH2 0xC71 JUMPI DUP9 DUP3 EQ ISZERO PUSH2 0xC11 JUMPI PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC19 PUSH2 0x3D6A JUMP JUMPDEST PUSH2 0xC39 PUSH2 0xC32 DUP7 PUSH1 0x0 NOT DUP6 DUP16 ADD ADD PUSH4 0xFFFFFFFF PUSH2 0x21D0 AND JUMP JUMPDEST DUP11 DUP10 PUSH2 0x21F4 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP PUSH2 0xC48 JUMPI POP PUSH2 0xC68 JUMP JUMPDEST DUP1 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC55 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x0 NOT ADD PUSH2 0xBFE JUMP JUMPDEST POP DUP8 DUP2 LT ISZERO PUSH2 0xC7E JUMPI DUP1 DUP5 MSTORE JUMPDEST POP POP POP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xCFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FD2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xD27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E72 JUMP JUMPDEST DUP2 PUSH2 0xD44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E62 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0xD88 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FC2 JUMP JUMPDEST PUSH1 0xA DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0xDBE JUMPI POP DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xDDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x6 DUP2 ADD SLOAD ISZERO PUSH2 0xDFC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EA2 JUMP JUMPDEST TIMESTAMP DUP3 PUSH1 0x7 ADD SLOAD GT PUSH2 0xE1F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x5002 JUMP JUMPDEST PUSH1 0xB DUP3 ADD SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0xE3F SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND PUSH2 0x257A JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0xA DUP7 ADD SLOAD SWAP3 SWAP4 PUSH2 0xE7F SWAP4 DUP6 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 SWAP1 DUP2 AND SWAP2 AND TIMESTAMP PUSH2 0x2658 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEBF PUSH3 0x15180 PUSH2 0xEB3 DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0xEA7 TIMESTAMP DUP10 PUSH1 0x7 ADD SLOAD PUSH2 0x26B3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x272F AND JUMP JUMPDEST SWAP1 POP DUP1 DUP7 LT PUSH2 0xEE0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F42 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0xF0A JUMPI PUSH2 0xF05 DUP8 DUP8 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0xF23 JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0xF23 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH2 0x2849 JUMP JUMPDEST DUP2 SLOAD PUSH2 0xF3C SWAP1 PUSH2 0xEB3 DUP9 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST SWAP5 POP DUP5 DUP5 PUSH1 0x7 ADD SLOAD GT PUSH2 0xF61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EE2 JUMP JUMPDEST PUSH1 0x7 DUP5 ADD SLOAD PUSH2 0xF76 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0x7 DUP6 ADD DUP2 SWAP1 SSTORE TIMESTAMP LT PUSH2 0xF9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EE2 JUMP JUMPDEST PUSH1 0x7 DUP5 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0xFB3 SWAP1 TIMESTAMP PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP1 POP PUSH2 0xE10 DUP2 GT PUSH2 0xFD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EE2 JUMP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD PUSH2 0xFEB SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE PUSH1 0xB DUP6 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 DUP1 DUP11 ADD SLOAD SWAP1 SWAP5 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x1034 SWAP1 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0xB SWAP6 DUP7 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 DUP9 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 SWAP9 DUP10 ADD SLOAD SWAP1 SWAP4 AND DUP3 MSTORE SWAP2 SWAP1 SWAP8 MSTORE DUP7 KECCAK256 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 SSTORE POP POP PUSH1 0x1 SWAP1 SWAP2 SSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x11D9 PUSH2 0x11C9 PUSH1 0xF PUSH2 0x218E JUMP JUMPDEST PUSH2 0xB9E DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 LT PUSH2 0x11E8 JUMPI POP PUSH2 0x12B0 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1222 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x120F PUSH2 0x3D6A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1207 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 DUP6 DUP3 SUB JUMPDEST DUP1 ISZERO PUSH2 0x12A0 JUMPI DUP6 DUP3 EQ ISZERO PUSH2 0x123E JUMPI PUSH2 0x12A0 JUMP JUMPDEST PUSH2 0x1246 PUSH2 0x3D6A JUMP JUMPDEST PUSH2 0x1268 PUSH2 0x1260 PUSH1 0xF PUSH1 0x0 NOT DUP6 DUP13 ADD ADD PUSH4 0xFFFFFFFF PUSH2 0x21D0 AND JUMP JUMPDEST PUSH1 0x0 DUP9 PUSH2 0x21F4 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP PUSH2 0x1277 JUMPI POP PUSH2 0x1297 JUMP JUMPDEST DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1284 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x0 NOT ADD PUSH2 0x122B JUMP JUMPDEST POP DUP5 DUP2 LT ISZERO PUSH2 0x12AD JUMPI DUP1 DUP4 MSTORE JUMPDEST POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x135C PUSH2 0x3D6A JUMP JUMPDEST PUSH2 0x1368 DUP3 PUSH1 0x0 DUP1 PUSH2 0x21F4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13AF PUSH2 0x28BA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 DUP1 DUP3 ADD SLOAD DUP7 MSTORE PUSH1 0x7 DUP1 DUP6 MSTORE DUP4 DUP8 KECCAK256 PUSH1 0x2 ADD SLOAD DUP9 DUP9 MSTORE PUSH1 0xC DUP7 MSTORE SWAP4 DUP8 KECCAK256 DUP1 SLOAD SWAP3 ADD SLOAD SWAP6 SWAP1 SWAP5 MSTORE SWAP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP4 SWAP2 SWAP3 SWAP2 SWAP1 DUP2 TIMESTAMP DUP3 LT PUSH2 0x142F JUMPI TIMESTAMP PUSH2 0x1431 JUMP JUMPDEST DUP2 JUMPDEST SWAP1 POP DUP1 DUP3 GT PUSH2 0x1441 JUMPI PUSH1 0x0 PUSH2 0x145C JUMP JUMPDEST PUSH2 0x145C PUSH3 0x15180 PUSH2 0xEB3 DUP8 PUSH2 0xEA7 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP3 POP POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0x1550 PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x156C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F72 JUMP JUMPDEST PUSH4 0x37AA6D19 PUSH1 0xE2 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xA56283BB23BC3F9D1E31FD0B79AB29917294036597BCDDBDBEB3DA57495B10AD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x15B4 SWAP1 DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x15C5 PUSH4 0xDB35400D PUSH1 0xE0 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x15D6 PUSH4 0x740FF7D PUSH1 0xE5 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x15E7 PUSH4 0x67E42E03 PUSH1 0xE1 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x15F8 PUSH4 0x917871D PUSH1 0xE1 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x1609 PUSH4 0xD1979FB PUSH1 0xE4 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x161A PUSH4 0x9B16CD87 PUSH1 0xE0 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x162A PUSH3 0xA8FF99 PUSH1 0xE2 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x163B PUSH4 0x8932F5F7 PUSH1 0xE0 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH2 0x164C PUSH4 0x18215F0B PUSH1 0xE2 SHL DUP4 PUSH2 0x28BE JUMP JUMPDEST PUSH15 0x4C6F616E4D61696E74656E616E6365 PUSH1 0x88 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1736 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FD2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x175E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E72 JUMP JUMPDEST DUP5 PUSH2 0x177B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F82 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x17BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FC2 JUMP JUMPDEST DUP6 ISZERO DUP1 PUSH2 0x17D8 JUMPI POP PUSH1 0xA DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST DUP1 PUSH2 0x17FE JUMPI POP DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x181A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x6 DUP2 ADD SLOAD ISZERO PUSH2 0x183C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EA2 JUMP JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x1864 JUMPI POP DUP6 ISZERO DUP1 ISZERO PUSH2 0x1864 JUMPI POP PUSH1 0x2D SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ JUMPDEST PUSH2 0x1880 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4ED2 JUMP JUMPDEST PUSH1 0xB DUP3 ADD SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0x18A0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND PUSH2 0x257A JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0xA DUP7 ADD SLOAD SWAP3 SWAP4 PUSH2 0x18E0 SWAP4 DUP6 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 SWAP1 DUP2 AND SWAP2 AND TIMESTAMP PUSH2 0x2658 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x7 ADD SLOAD TIMESTAMP GT ISZERO PUSH2 0x1950 JUMPI PUSH1 0x7 DUP5 ADD SLOAD PUSH2 0x1904 SWAP1 TIMESTAMP SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST DUP3 SLOAD SWAP1 SWAP2 POP PUSH2 0x191A SWAP1 DUP3 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x192F DUP2 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x272F AND JUMP JUMPDEST SWAP1 POP DUP1 DUP10 GT PUSH2 0x1950 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EB2 JUMP JUMPDEST DUP8 ISZERO PUSH2 0x19D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP1 DUP3 ADD DUP4 MSTORE DUP6 SLOAD DUP3 MSTORE PUSH1 0x1 DUP7 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP6 ADD SLOAD DUP3 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x3 DUP6 ADD SLOAD SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x4 DUP5 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x5 DUP5 ADD SLOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x19CC SWAP1 DUP6 SWAP1 DUP12 PUSH2 0x2934 JUMP JUMPDEST PUSH2 0x1A18 JUMP JUMPDEST CALLVALUE PUSH2 0x19EF JUMPI PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0x19CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP12 PUSH2 0x2A60 JUMP JUMPDEST DUP9 CALLVALUE EQ PUSH2 0x1A0E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x5032 JUMP JUMPDEST PUSH2 0x1A18 CALLER CALLVALUE PUSH2 0x2AC4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1A52 JUMPI PUSH2 0x1A2E DUP10 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0xB DUP6 ADD SLOAD PUSH1 0x2 DUP6 ADD SLOAD SWAP2 SWAP11 POP PUSH2 0x1A52 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0x2B6A JUMP JUMPDEST DUP2 SLOAD PUSH2 0x1A6B SWAP1 PUSH2 0xEB3 DUP12 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST PUSH1 0x7 DUP6 ADD SLOAD SWAP1 SWAP6 POP PUSH2 0x1A83 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x7 DUP6 ADD DUP2 SWAP1 SSTORE TIMESTAMP LT PUSH2 0x1AA8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EE2 JUMP JUMPDEST PUSH1 0x7 DUP5 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1AC0 SWAP1 TIMESTAMP PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP1 POP PUSH2 0xE10 DUP2 GT PUSH2 0x1AE3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EE2 JUMP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD PUSH2 0x1AF8 SWAP1 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x1 DUP5 ADD SSTORE PUSH1 0xB DUP6 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 DUP1 DUP11 ADD SLOAD SWAP1 SWAP5 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x1B41 SWAP1 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0xB SWAP6 DUP7 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 DUP9 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 SWAP9 DUP10 ADD SLOAD SWAP1 SWAP4 AND DUP3 MSTORE SWAP2 SWAP1 SWAP8 MSTORE DUP7 KECCAK256 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 SSTORE POP POP PUSH1 0x1 SWAP1 SWAP2 SSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1B9B PUSH2 0x3DF5 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 DUP2 MSTORE SWAP1 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0xA0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x2 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 ADD SLOAD PUSH1 0x80 DUP4 ADD DUP2 SWAP1 MSTORE PUSH2 0x1C1B SWAP2 PUSH3 0x15180 SWAP2 PUSH2 0xEB3 SWAP2 SWAP1 PUSH2 0xEA7 SWAP1 TIMESTAMP SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP4 POP DUP1 PUSH1 0x40 ADD MLOAD DUP5 GT ISZERO PUSH2 0x1C31 JUMPI DUP1 PUSH1 0x40 ADD MLOAD SWAP4 POP JUMPDEST PUSH1 0x60 DUP2 ADD MLOAD DUP1 PUSH2 0x1C42 JUMPI PUSH1 0x0 PUSH2 0x1C48 JUMP JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH2 0x1C5D JUMPI PUSH1 0x0 PUSH2 0x1C5F JUMP JUMPDEST DUP7 JUMPDEST PUSH1 0x15 SLOAD SWAP5 MLOAD SWAP4 SWAP14 SWAP3 SWAP13 POP SWAP1 SWAP11 POP SWAP9 POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1CC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FD2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1CEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E72 JUMP JUMPDEST DUP2 PUSH2 0x1D09 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E62 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x1D4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FC2 JUMP JUMPDEST PUSH1 0xA DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 PUSH2 0x1D83 JUMPI POP DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1D9F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x4 DUP1 DUP7 ADD SLOAD PUSH1 0x5 DUP1 DUP9 ADD SLOAD SWAP1 DUP8 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xF80B25FB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP8 PUSH4 0xF80B25FB SWAP8 PUSH2 0x1DF3 SWAP8 SWAP2 DUP4 AND SWAP7 SWAP3 AND SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 ADD PUSH2 0x4C59 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E1F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1E43 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41EA JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1E55 JUMPI DUP1 SWAP4 POP PUSH2 0x1E59 JUMP JUMPDEST DUP5 SWAP4 POP JUMPDEST PUSH1 0x5 DUP4 ADD SLOAD PUSH2 0x1E6E SWAP1 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0x5 DUP5 ADD SSTORE PUSH1 0x2D SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x1E9D JUMPI PUSH2 0x1E98 DUP7 DUP6 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x1EB6 JUMP JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD PUSH2 0x1EB6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 PUSH2 0x2849 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1EE7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FD2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1F0F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E72 JUMP JUMPDEST DUP1 PUSH2 0x1F2C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F82 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x1F70 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FC2 JUMP JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x1F8F JUMPI POP PUSH1 0x2D SLOAD PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ JUMPDEST PUSH2 0x1FAB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4ED2 JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SLOAD PUSH2 0x1FC0 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x5 DUP4 ADD SSTORE CALLVALUE PUSH2 0x1FE8 JUMPI PUSH1 0x3 DUP2 ADD SLOAD PUSH2 0x1FE3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP6 PUSH2 0x2A60 JUMP JUMPDEST PUSH2 0x2011 JUMP JUMPDEST DUP3 CALLVALUE EQ PUSH2 0x2007 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x5032 JUMP JUMPDEST PUSH2 0x2011 CALLER CALLVALUE PUSH2 0x2AC4 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x3 DUP4 ADD SLOAD SWAP2 DUP4 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x29D5277C SWAP4 PUSH2 0x2053 SWAP4 SWAP3 DUP3 AND SWAP3 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4B48 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x206A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x207E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x20A2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4208 JUMP JUMPDEST POP SWAP1 POP PUSH32 0xC3C4F75EA99730F240C3EA8D68F7A9B94584539CAF936F566E8B9F8FE13036F4 DUP6 DUP6 DUP4 PUSH1 0x40 MLOAD PUSH2 0x20D8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x210F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E72 JUMP JUMPDEST PUSH2 0x2119 CALLER DUP3 PUSH2 0x257A JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x213F PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x215B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F72 JUMP JUMPDEST PUSH2 0x2119 DUP2 PUSH2 0x2C01 JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x12B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EC2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x21C9 JUMPI DUP2 PUSH2 0x12B0 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x21E1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x21FC PUSH2 0x3D6A JUMP JUMPDEST PUSH2 0x2204 PUSH2 0x3E24 JUMP JUMPDEST POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD PUSH2 0x180 DUP2 ADD DUP6 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x4 DUP4 ADD SLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 DUP3 ADD SLOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x7 DUP3 ADD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x8 DUP3 ADD SLOAD PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x9 DUP3 ADD SLOAD PUSH2 0x120 DUP3 ADD MSTORE PUSH1 0xA DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0xB SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 AND PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x22B5 PUSH2 0x3E88 JUMP JUMPDEST POP PUSH1 0x20 DUP1 DUP3 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 DUP3 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP2 MLOAD PUSH2 0x100 DUP1 DUP3 ADD DUP5 MSTORE DUP3 SLOAD DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO SWAP6 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DIV DUP5 AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP2 ADD SLOAD DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x5 DUP3 ADD SLOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x6 SWAP1 SWAP2 ADD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE DUP5 ISZERO PUSH2 0x2373 JUMPI DUP5 PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x234F JUMPI POP PUSH1 0xE0 DUP2 ADD MLOAD ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x2367 JUMPI POP DUP5 PUSH1 0x2 EQ DUP1 ISZERO PUSH2 0x2367 JUMPI POP PUSH1 0xE0 DUP2 ADD MLOAD ISZERO JUMPDEST PUSH2 0x2373 JUMPI POP PUSH2 0x12B0 SWAP1 POP JUMP JUMPDEST PUSH2 0x237B PUSH2 0x3ECC JUMP JUMPDEST POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP5 MSTORE DUP3 SLOAD DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 SWAP2 DUP3 ADD SLOAD DUP2 DUP5 ADD MSTORE SWAP1 SLOAD SWAP3 DUP6 ADD MLOAD PUSH1 0x80 DUP1 DUP8 ADD MLOAD SWAP1 DUP9 ADD MLOAD PUSH1 0xA0 DUP10 ADD MLOAD SWAP5 MLOAD PUSH4 0x17F86809 PUSH1 0xE1 SHL DUP2 MSTORE SWAP4 SWAP7 SWAP6 DUP7 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP5 PUSH4 0x2FF0D012 SWAP5 PUSH2 0x23FA SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x4 ADD PUSH2 0x4C31 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2425 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2449 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4208 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 DUP6 PUSH1 0xC0 ADD MLOAD DUP5 GT PUSH2 0x247F JUMPI PUSH2 0x2474 DUP8 PUSH1 0x80 ADD MLOAD DUP9 PUSH1 0xA0 ADD MLOAD DUP7 DUP10 PUSH1 0xC0 ADD MLOAD DUP8 PUSH2 0x2C83 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2492 JUMP JUMPDEST DUP9 ISZERO PUSH2 0x2492 JUMPI POP PUSH2 0x12B0 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1E0 ADD PUSH1 0x40 MSTORE DUP1 DUP13 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x80 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP10 PUSH1 0xE0 ADD MLOAD LT ISZERO PUSH2 0x24FB JUMPI PUSH1 0x0 PUSH2 0x2521 JUMP JUMPDEST PUSH2 0x2521 PUSH3 0x15180 PUSH2 0xEB3 DUP10 PUSH1 0x0 ADD MLOAD PUSH2 0xEA7 TIMESTAMP DUP15 PUSH1 0xE0 ADD MLOAD PUSH2 0x26B3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH2 0x120 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH2 0x100 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0xE0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xE0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP SWAP8 POP POP POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP2 SWAP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x25BA JUMPI POP PUSH1 0x4 DUP3 ADD SLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x264B JUMPI PUSH2 0x25E5 PUSH3 0x15180 PUSH2 0xEB3 DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0xEA7 DUP7 PUSH1 0x4 ADD SLOAD TIMESTAMP PUSH2 0x26B3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0x2601 JUMPI POP PUSH1 0x2 DUP2 ADD SLOAD JUMPDEST DUP1 ISZERO PUSH2 0x2646 JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH2 0x261C SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x3 DUP4 ADD SSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0x2636 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SSTORE PUSH2 0x2646 DUP5 DUP5 DUP4 PUSH2 0x2B6A JUMP JUMPDEST PUSH2 0x2652 JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP4 ADD SSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x268E PUSH11 0x7259756A8D61998000000 PUSH2 0xEB3 PUSH1 0x15 SLOAD PUSH2 0xEA7 DUP12 PUSH1 0x0 ADD SLOAD PUSH2 0xEA7 DUP14 PUSH1 0x2 ADD SLOAD DUP10 PUSH2 0x26B3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP9 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x26AA JUMPI PUSH2 0x26AA DUP4 DUP8 DUP8 DUP8 DUP6 PUSH2 0x2DB7 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12B0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3102 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2704 JUMPI POP PUSH1 0x0 PUSH2 0x1368 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x2711 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x12B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F62 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12B0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x312E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2845 JUMPI PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SELFBALANCE DUP1 DUP4 GT ISZERO PUSH2 0x27ED JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x27BA SWAP1 DUP5 DUP8 SUB SWAP1 PUSH1 0x4 ADD PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x27F7 DUP5 DUP5 PUSH2 0x3165 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP6 PUSH1 0x40 MLOAD PUSH2 0x283A SWAP2 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMPDEST POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x28B5 JUMPI PUSH2 0x2869 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP4 PUSH1 0x40 MLOAD PUSH2 0x28AC SWAP2 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x2919 JUMPI PUSH2 0x2913 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x325A AND JUMP JUMPDEST POP PUSH2 0x2845 JUMP JUMPDEST PUSH2 0x28B5 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x32A2 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x297F DUP5 PUSH1 0x0 ADD SLOAD DUP5 PUSH1 0x80 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD DUP8 PUSH1 0xA ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x5 ADD SLOAD PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3363 JUMP JUMPDEST POP PUSH1 0x5 DUP7 ADD SLOAD SWAP1 SWAP3 POP PUSH2 0x2999 SWAP2 POP DUP3 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0x5 DUP6 ADD DUP2 SWAP1 SSTORE PUSH1 0x2 SLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0x4 DUP1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x17F86809 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND SWAP6 PUSH4 0x2FF0D012 SWAP6 PUSH2 0x29E4 SWAP6 SWAP1 SWAP5 SWAP1 SWAP4 SWAP3 ADD PUSH2 0x4C31 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A0F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2A33 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4208 JUMP JUMPDEST POP SWAP1 POP DUP4 PUSH1 0xC0 ADD MLOAD DUP2 GT PUSH2 0x2A59 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F92 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x28B5 JUMPI PUSH2 0x2A81 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 ADDRESS DUP5 PUSH4 0xFFFFFFFF PUSH2 0x34C1 AND JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2790B90165FD3973AD7EDDE4ECA71B4F8808DD4857A2A3A3E8AE5642A5CB196E DUP4 PUSH1 0x40 MLOAD PUSH2 0x28AC SWAP2 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD0E30DB PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP3 SWAP2 PUSH4 0xD0E30DB0 SWAP2 DUP6 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B22 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2790B90165FD3973AD7EDDE4ECA71B4F8808DD4857A2A3A3E8AE5642A5CB196E DUP5 PUSH1 0x40 MLOAD PUSH2 0x28AC SWAP2 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B8E PUSH9 0x56BC75E2D63100000 PUSH2 0xEB3 PUSH1 0x15 SLOAD DUP6 PUSH2 0x26F5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2B9B DUP5 DUP5 DUP4 PUSH2 0x34E5 JUMP JUMPDEST PUSH2 0x2BB5 DUP4 DUP6 PUSH2 0x2BB0 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH2 0x2849 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP1 DUP5 AND PUSH32 0x220E66E3E759E1382AA86CD8AF5ABCA05EBF3AD564F223AE62D977678337272A PUSH2 0x2BF4 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283A SWAP2 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2C27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E92 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x21 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP5 DUP7 GT DUP1 PUSH2 0x2C97 JUMPI POP DUP4 ISZERO JUMPDEST ISZERO PUSH2 0x2CA1 JUMPI PUSH2 0x2DAC JUMP JUMPDEST DUP1 DUP7 GT PUSH2 0x2CB5 JUMPI POP DUP7 SWAP2 POP DUP6 SWAP1 POP DUP5 PUSH2 0x2DAC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CCF DUP7 PUSH8 0x4563918244F40000 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2CF2 PUSH9 0x56BC75E2D63100000 PUSH2 0xEB3 DUP12 PUSH2 0xEA7 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST SWAP4 POP PUSH2 0x2D20 PUSH2 0x2D13 PUSH8 0xDE0B6B3A7640000 PUSH2 0xEB3 DUP12 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP4 POP PUSH2 0x2D4E PUSH2 0x2D35 DUP3 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST PUSH2 0xEB3 DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST SWAP4 POP DUP9 DUP5 GT ISZERO PUSH2 0x2D5C JUMPI DUP9 SWAP4 POP JUMPDEST PUSH2 0x2D85 PUSH2 0x2D78 DUP4 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST SWAP3 POP PUSH2 0x2D9C PUSH1 0x64 PUSH2 0xEB3 DUP6 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x272F AND JUMP JUMPDEST SWAP3 POP DUP8 DUP4 GT ISZERO PUSH2 0x2DAA JUMPI DUP8 SWAP3 POP JUMPDEST POP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2F SLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 ISZERO PUSH2 0x2E1A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP2 POP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP12 SWAP2 AND PUSH2 0x2E58 PUSH9 0x56BC75E2D63100000 PUSH2 0xEB3 DUP13 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x26F5 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2E6A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C09 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2EA8 SWAP2 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2EE3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2EE8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x2EFE JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP5 POP JUMPDEST DUP5 ISZERO PUSH2 0x30F6 JUMPI PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x2F3A SWAP3 SWAP2 AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4C9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2F8C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4087 JUMP JUMPDEST POP PUSH1 0x38 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x2FB3 SWAP2 DUP15 SWAP2 DUP11 SWAP2 PUSH1 0x24 ADD PUSH2 0x4CB6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xEFE6A8B PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2FE8 SWAP2 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3025 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x302A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 ISZERO PUSH2 0x30A1 JUMPI PUSH1 0x1F SLOAD PUSH2 0x3047 SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x1F SSTORE PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0xF41C644671512F1CDA76ABFE6038E3D7D526C1377A5A8C692F81703901DB2150 SWAP2 PUSH2 0x3094 SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4E35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x30F4 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0x483F67EA49F76AC15E15BBAD68B52788CA47D50AEF1E4ACFE95E5E307E710812 SWAP2 PUSH2 0x30EB SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4E35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3126 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP2 SWAP1 PUSH2 0x4E51 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x314F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP2 SWAP1 PUSH2 0x4E51 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x315B JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x3185 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F22 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x319E SWAP1 PUSH2 0x4B2F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31DB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31E0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x28B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F12 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28B5 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3223 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x4C9B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3566 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3266 DUP4 DUP4 PUSH2 0x364B JUMP JUMPDEST PUSH2 0x329A JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x1368 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1368 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32AE DUP4 DUP4 PUSH2 0x364B JUMP JUMPDEST ISZERO PUSH2 0x329A JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x3326 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x32E7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x3304 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x3342 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x1368 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP3 MSTORE DUP10 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS DUP4 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP11 AND PUSH1 0x80 DUP5 ADD MSTORE DUP4 MLOAD SWAP2 DUP3 ADD DUP5 MSTORE DUP9 DUP3 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE SWAP2 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x33C8 SWAP2 SWAP1 DUP15 DUP9 DUP9 DUP7 PUSH2 0x3660 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x33D7 DUP12 DUP4 PUSH2 0x3885 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x27 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1E2C62D3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x1E2C62D3 SWAP2 PUSH2 0x3410 SWAP2 DUP16 SWAP2 DUP16 SWAP2 DUP9 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x4C59 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x343C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3460 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41EA JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH32 0xB4EB3C9B62EFCCE7021CBA5FD9CD0C44DF91C2272806CCC5E57DF7C912E8D716 DUP13 DUP7 DUP9 PUSH1 0x40 MLOAD PUSH2 0x34AA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4CB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2652 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x3223 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x4C09 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x28B5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3514 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0x40A75AE5F7A5336E75F7C7977E12C4B46A9AC0F30DE01A2D5B6C1A4F4AF63587 SWAP1 PUSH2 0x28AC SWAP1 DUP6 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH2 0x3578 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3953 JUMP JUMPDEST PUSH2 0x3594 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x5042 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x35B0 SWAP2 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x35ED JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x35F2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3614 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4EF2 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2652 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x362F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4087 JUMP JUMPDEST PUSH2 0x2652 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FF2 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x3677 JUMPI POP PUSH1 0x20 DUP8 ADD MLOAD ISZERO ISZERO JUMPDEST PUSH2 0x3693 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FB2 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH2 0x36A4 JUMPI DUP7 MLOAD PUSH1 0x20 DUP9 ADD MSTORE JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD DUP8 MLOAD GT ISZERO PUSH2 0x36C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F32 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH2 0x3786 JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x3745 JUMPI DUP6 ISZERO PUSH2 0x36FA JUMPI PUSH2 0x36F3 DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x398F JUMP JUMPDEST SWAP1 POP PUSH2 0x370E JUMP JUMPDEST PUSH2 0x370B DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x39BF JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x3740 JUMPI PUSH1 0x80 DUP12 ADD MLOAD DUP12 MLOAD PUSH2 0x3731 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x1 JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP6 PUSH2 0x39E3 JUMP JUMPDEST DUP10 MLOAD PUSH2 0x373D SWAP1 DUP3 PUSH2 0x26B3 JUMP JUMPDEST DUP11 MSTORE JUMPDEST PUSH2 0x3786 JUMP JUMPDEST DUP6 ISZERO PUSH2 0x375D JUMPI PUSH2 0x3756 DUP11 PUSH1 0x2 PUSH2 0x36E9 JUMP JUMPDEST SWAP1 POP PUSH2 0x376B JUMP JUMPDEST PUSH2 0x3768 DUP11 PUSH1 0x2 PUSH2 0x3701 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x3786 JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x3780 SWAP1 DUP3 PUSH2 0x2195 JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MSTORE JUMPDEST DUP7 MLOAD ISZERO PUSH2 0x37A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4FE2 JUMP JUMPDEST PUSH2 0x37AF DUP12 DUP12 PUSH2 0x3B33 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x37FB JUMPI DUP10 MLOAD DUP3 EQ PUSH2 0x37DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x5022 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x37F6 JUMPI PUSH2 0x37F3 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x3875 JUMP JUMPDEST PUSH1 0x20 DUP11 ADD MLOAD DUP3 GT ISZERO PUSH2 0x381F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F02 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD DUP4 LT ISZERO PUSH2 0x3843 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4E82 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3875 JUMPI PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x3862 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x0 PUSH2 0x3726 JUMP JUMPDEST PUSH2 0x3872 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP3 POP JUMPDEST POP SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP1 ISZERO PUSH2 0x28B5 JUMPI PUSH1 0x2D SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x38AE JUMPI POP DUP2 PUSH2 0x3933 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5967AA75 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xB2CF54EA SWAP1 PUSH2 0x38E0 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4C9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x390C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3930 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x41EA JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2652 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x4F52 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x3987 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1368 PUSH9 0x56BC75E2D63100000 PUSH2 0x39B3 PUSH1 0x3E SLOAD DUP6 PUSH2 0x26F5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3C45 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1368 PUSH9 0x56BC75E2D63100000 PUSH2 0x39B3 PUSH1 0x18 SLOAD DUP6 PUSH2 0x26F5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x3B2B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x3A99 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3A31 SWAP2 AND DUP8 DUP7 DUP5 PUSH2 0x3C87 JUMP JUMPDEST POP POP PUSH2 0x3A96 PUSH2 0x3A58 PUSH9 0x56BC75E2D63100000 PUSH2 0xEB3 PUSH1 0x39 SLOAD DUP6 PUSH2 0x26F5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3A8A PUSH2 0x3A7D PUSH9 0x56BC75E2D63100000 PUSH2 0xEB3 PUSH1 0x20 SLOAD DUP8 PUSH2 0x26F5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x26B3 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3AC2 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x2195 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD DUP8 SWAP3 SWAP2 DUP10 AND SWAP1 PUSH32 0xB23479169712C443E6B00FB0CEC3506A5F5926F541DF4243D313E11C8C5C71ED SWAP1 PUSH2 0x3B16 SWAP1 DUP7 SWAP1 PUSH2 0x5061 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3B2B DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2DB7 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD PUSH1 0x60 DUP8 DUP2 ADD MLOAD DUP8 MLOAD SWAP6 DUP9 ADD MLOAD DUP9 DUP6 ADD MLOAD SWAP5 MLOAD PUSH1 0x0 SWAP9 DUP10 SWAP9 SWAP5 SWAP8 PUSH4 0x957BA11 PUSH1 0xE2 SHL SWAP8 PUSH2 0x3B7A SWAP8 SWAP3 SWAP7 SWAP2 SWAP6 SWAP3 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 PUSH1 0x24 ADD PUSH2 0x4B63 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE PUSH1 0x3 SLOAD SWAP2 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x3BCC SWAP1 DUP5 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3C07 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3C0C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0x3C2E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP1 PUSH2 0x5012 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP3 ADD MLOAD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12B0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x3D20 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x40 MLOAD PUSH4 0x6A688FF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD4D11FE SWAP1 PUSH2 0x3CC2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4BCB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3CDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3CEF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3D13 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4208 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x3D41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DD SWAP2 SWAP1 PUSH2 0x4E51 JUMP JUMPDEST POP DUP4 PUSH2 0x3D4F JUMPI POP PUSH1 0x0 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 DUP7 SUB DUP2 PUSH2 0x3D5D JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1E0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x180 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x140 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x160 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1368 DUP2 PUSH2 0x5169 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1368 DUP2 PUSH2 0x517D JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1368 DUP2 PUSH2 0x517D JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1368 DUP2 PUSH2 0x5186 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1368 DUP2 PUSH2 0x518F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3F36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3F4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3F66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1368 DUP2 PUSH2 0x5186 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP5 DUP5 PUSH2 0x3EED JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3FB5 DUP6 DUP6 PUSH2 0x3EED JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3FC6 DUP6 DUP3 DUP7 ADD PUSH2 0x3EED JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3FEF DUP6 DUP6 PUSH2 0x3EED JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3FC6 DUP6 DUP3 DUP7 ADD PUSH2 0x3F0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4019 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4025 DUP10 DUP10 PUSH2 0x3EED JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x4036 DUP10 DUP3 DUP11 ADD PUSH2 0x3F0E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x4047 DUP10 DUP3 DUP11 ADD PUSH2 0x3F0E JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x4058 DUP10 DUP3 DUP11 ADD PUSH2 0x3F0E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x4069 DUP10 DUP3 DUP11 ADD PUSH2 0x3EF8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x407A DUP10 DUP3 DUP11 ADD PUSH2 0x3EF8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4099 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP5 DUP5 PUSH2 0x3F03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP5 DUP5 PUSH2 0x3F0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3FB5 DUP6 DUP6 PUSH2 0x3F0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x40F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4103 DUP7 DUP7 PUSH2 0x3F0E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4114 DUP7 DUP3 DUP8 ADD PUSH2 0x3EED JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4125 DUP7 DUP3 DUP8 ADD PUSH2 0x3F0E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3FEF DUP6 DUP6 PUSH2 0x3F0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4172 DUP9 DUP9 PUSH2 0x3F0E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4183 DUP9 DUP3 DUP10 ADD PUSH2 0x3F0E JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4194 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x41B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41BD DUP9 DUP3 DUP10 ADD PUSH2 0x3F24 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP5 DUP5 PUSH2 0x3F19 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP5 DUP5 PUSH2 0x3F6D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x421B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4227 DUP6 DUP6 PUSH2 0x3F6D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3FC6 DUP6 DUP3 DUP7 ADD PUSH2 0x3F6D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x424D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4259 DUP7 DUP7 PUSH2 0x3F0E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x426A DUP7 DUP3 DUP8 ADD PUSH2 0x3F0E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4125 DUP7 DUP3 DUP8 ADD PUSH2 0x3EF8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4287 DUP4 DUP4 PUSH2 0x49F9 JUMP JUMPDEST POP POP PUSH2 0x1E0 ADD SWAP1 JUMP JUMPDEST PUSH2 0x4299 DUP2 PUSH2 0x50FC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42AA DUP3 PUSH2 0x50EA JUMP JUMPDEST PUSH2 0x42B4 DUP2 DUP6 PUSH2 0x50EE JUMP JUMPDEST SWAP4 POP PUSH2 0x42BF DUP4 PUSH2 0x50E4 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42ED JUMPI DUP2 MLOAD PUSH2 0x42D7 DUP9 DUP3 PUSH2 0x427B JUMP JUMPDEST SWAP8 POP PUSH2 0x42E2 DUP4 PUSH2 0x50E4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x42C3 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4299 DUP2 PUSH2 0x5107 JUMP JUMPDEST PUSH2 0x4299 DUP2 PUSH2 0x510C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4315 DUP3 PUSH2 0x50EA JUMP JUMPDEST PUSH2 0x431F DUP2 DUP6 PUSH2 0x50F7 JUMP JUMPDEST SWAP4 POP PUSH2 0x432F DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5133 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4299 DUP2 PUSH2 0x5128 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x434D DUP3 PUSH2 0x50EA JUMP JUMPDEST PUSH2 0x4357 DUP2 DUP6 PUSH2 0x50EE JUMP JUMPDEST SWAP4 POP PUSH2 0x4367 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5133 JUMP JUMPDEST PUSH2 0x4370 DUP2 PUSH2 0x515F JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4387 PUSH1 0x13 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH19 0x7769746864726177416D6F756E74206973203 PUSH1 0x6C SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43B6 PUSH1 0x6 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43D8 PUSH1 0x1B DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x696E73756666696369656E742073776170206C69717569646974790000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4411 PUSH1 0x26 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4459 PUSH1 0x14 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH20 0x696E646566696E6974652D7465726D206F6E6C79 PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4489 PUSH1 0x22 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x6465706F7369742063616E6E6F7420636F766572206261636B20696E74657265 DUP2 MSTORE PUSH2 0x1CDD PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44CD PUSH1 0x1B DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4506 PUSH1 0x10 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH16 0x1DDC9BDB99C8185CDCD95D081CD95B9D PUSH1 0x82 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4532 PUSH1 0xE DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH14 0x1B1BD85B881D1BDBC81CDA1BDC9D PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x455C PUSH1 0x20 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4595 PUSH1 0x13 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH19 0x737761702066696C6C20746F6F206C61726765 PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45C4 PUSH1 0x3A DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x416464726573733A20756E61626C6520746F2073656E642076616C75652C2072 DUP2 MSTORE PUSH32 0x6563697069656E74206D61792068617665207265766572746564000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4623 PUSH1 0x1D DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E6365000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x465C PUSH1 0x1C DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x736F75726365416D6F756E74206C6172676572207468616E206D617800000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4695 PUSH1 0x18 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x776974686472617720616D6F756E7420746F6F20686967680000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46CE PUSH1 0xE DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH14 0x7377617020746F6F206C61726765 PUSH1 0x90 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46F8 PUSH1 0x21 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x473B PUSH1 0xC DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4763 PUSH1 0x12 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH18 0x6465706F736974416D6F756E74206973203 PUSH1 0x74 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4791 PUSH1 0x12 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH18 0x3AB73432B0B63A343C903837B9B4BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47BF PUSH1 0x14 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47EF PUSH1 0x2E DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x6D696E206F72206D617820736F7572636520746F6B656E20616D6F756E74206E DUP2 MSTORE PUSH14 0x1959591CC81D1BC81899481CD95D PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1368 PUSH1 0x0 DUP4 PUSH2 0x50F7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x484C PUSH1 0xE DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH14 0x1B1BD85B881A5CC818DB1BDCD959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4876 PUSH1 0xC DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x489E PUSH1 0xD DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH13 0x696E76616C6964207374617465 PUSH1 0x98 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C7 PUSH1 0x2A DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4913 PUSH1 0x13 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH19 0x1B1BD85B881D195C9B481A185CC8195B991959 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4942 PUSH1 0xB DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH11 0x1CDDD85C0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4969 PUSH1 0x16 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH22 0x1CDDD85C081D1BDBC81B185C99D9481D1BC8199A5B1B PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x499B PUSH1 0x16 DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH22 0xCAE8D0CAE440C8CAE0DEE6D2E840DAD2E6DAC2E8C6D PUSH1 0x53 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49CD PUSH1 0x1F DUP4 PUSH2 0x50EE JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1E0 DUP4 ADD SWAP1 PUSH2 0x4A0B DUP5 DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x4A1E PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4290 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4A31 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4290 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4A44 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x4A57 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x4A6A PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x4A7D PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x4A90 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x4AA5 PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x4ABA PUSH2 0x120 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x140 DUP3 ADD MLOAD PUSH2 0x4ACF PUSH2 0x140 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x4AE4 PUSH2 0x160 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x180 DUP3 ADD MLOAD PUSH2 0x4AF9 PUSH2 0x180 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x1A0 DUP3 ADD MLOAD PUSH2 0x4B0E PUSH2 0x1A0 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST POP PUSH2 0x1C0 DUP3 ADD MLOAD PUSH2 0x2652 PUSH2 0x1C0 DUP6 ADD DUP3 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12B0 DUP3 DUP5 PUSH2 0x430A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1368 DUP3 PUSH2 0x4832 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1368 DUP3 DUP5 PUSH2 0x4290 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4B56 DUP3 DUP6 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x12B0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4290 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x4B71 DUP3 DUP11 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4B7E PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4B8B PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4B98 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4BA5 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4BB2 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4BBF PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4BD9 DUP3 DUP8 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4BE6 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4BF3 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C00 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4C17 DUP3 DUP7 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C24 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x3987 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4C3F DUP3 DUP8 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C4C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4BF3 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4C67 DUP3 DUP9 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C74 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C81 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4C8E PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0xC82 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4CA9 DUP3 DUP6 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x12B0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4CC4 DUP3 DUP7 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C24 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x4CDF DUP3 DUP8 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4C4C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12B0 DUP2 DUP5 PUSH2 0x429F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1368 DUP3 DUP5 PUSH2 0x42F8 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x4D1A DUP3 DUP12 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4D27 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x42F8 JUMP JUMPDEST PUSH2 0x4D34 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4D41 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4D4E PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4D5B PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4D68 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4D75 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x4D91 DUP3 DUP16 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4D9E PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4DAB PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4DB8 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x42F8 JUMP JUMPDEST PUSH2 0x4DC5 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4DD2 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4DDF PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4DEC PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4DFA PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4E08 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4E16 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x4290 JUMP JUMPDEST PUSH2 0x4E24 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x4290 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4CC4 DUP3 DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1368 DUP3 DUP5 PUSH2 0x4339 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12B0 DUP2 DUP5 PUSH2 0x4342 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x437A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x43A9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x43CB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4404 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x444C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x447C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x44C0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x44F9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4525 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x454F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4588 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x45B7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4616 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x464F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4688 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x46C1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x46EB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x472E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4756 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4784 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x47B2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x47E2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x483F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4869 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4891 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x48BA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4906 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x4935 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x495C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x498E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1368 DUP2 PUSH2 0x49C0 JUMP JUMPDEST PUSH2 0x1E0 DUP2 ADD PUSH2 0x1368 DUP3 DUP5 PUSH2 0x49F9 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1368 DUP3 DUP5 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x507D DUP3 DUP9 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x4C74 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4301 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x5098 DUP3 DUP10 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x50A5 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x50B2 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x50BF PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x50CC PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4301 JUMP JUMPDEST PUSH2 0x50D9 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4301 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1368 DUP3 PUSH2 0x511C JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1368 DUP3 PUSH2 0x50FC JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x514E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5136 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2652 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x5172 DUP2 PUSH2 0x50FC JUMP JUMPDEST DUP2 EQ PUSH2 0x2119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5172 DUP2 PUSH2 0x5107 JUMP JUMPDEST PUSH2 0x5172 DUP2 PUSH2 0x510C JUMP JUMPDEST PUSH2 0x5172 DUP2 PUSH2 0x510F JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xB3 0xD0 SWAP4 SELFDESTRUCT 0xC2 PUSH6 0xE335120E6E62 BLOCKHASH RETURNDATACOPY ADDMOD 0xE9 DUP15 PUSH10 0x8DA67CD5B65EC32FCF17 0xC8 DUP8 0xD7 PUSH26 0x6C6578706572696D656E74616CF564736F6C6343000511004000 ",
              "sourceMap": "834:20322:129:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;834:20322:129;1609:30;;-1:-1:-1;;;1609:30:129;;;;;;;;;;;;;;;;15317:866;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15317:866:129;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1636:67:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;5443:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5443:30:14;;;:::i;:::-;;;;;;;;9671:2277:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9671:2277:129;;;;;;;;:::i;:::-;;;;;;;;1270:46:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1270:46:14;;;;;;;;:::i;6768:81::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6768:81:14;;;;;;;;:::i;4372:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4372:55:14;;;;;;;;:::i;5558:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5558:53:14;;;;;;;;:::i;:::-;;;;;;;;3097:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3097:46:14;;;:::i;3969:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3969:32:14;;;:::i;1527:65::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1527:65:14;;;;;;;;:::i;3376:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3376:55:14;;;;;;;;:::i;4925:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4925:48:14;;;;;;;;:::i;1744:69::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1744:69:14;;;;;;;;:::i;2825:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2825:55:14;;;;;;;;:::i;2717:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2717:41:14;;;:::i;4832:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4832:37:14;;;:::i;2013:52::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2013:52:14;;;;;;;;:::i;:::-;;;;;;;;;;5060:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5060:50:14;;;:::i;16866:736:129:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16866:736:129;;;;;;;;:::i;1898:76:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1898:76:14;;;;;;;;:::i;:::-;;;;;;;;;;;;4542:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4542:47:14;;;;;;;;:::i;5650:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5650:57:14;;;;;;;;:::i;1087:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1087:24:14;;;:::i;6000:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6000:39:14;;;:::i;1012:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1012:25:14;;;:::i;3887:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3887:32:14;;;:::i;7007:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7007:17:14;;;:::i;16420:177:129:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16420:177:129;;;;;;;;:::i;:::-;;;;;;;;851:68:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;4285:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4285:55:14;;;;;;;;:::i;1134:83:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;2994:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2994:55:14;;;;;;;;:::i;5113:49::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5113:49:14;;;:::i;14100:660:129:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14100:660:129;;;;;;;;:::i;:::-;;;;;;;;;;;5340:45:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5340:45:14;;;:::i;4075:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4075:47:14;;;:::i;5175:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5175:29:14;;;:::i;:::-;;;;;;;;3781:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3781:57:14;;;;;;;;:::i;3605:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3605:57:14;;;;;;;;:::i;6272:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6272:30:14;;;:::i;1174:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1174:48:14;;;:::i;6168:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6168:55:14;;;;;;;;:::i;1347:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1347:37:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1773:784:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1773:784:129;;;;;;;;:::i;:::-;;1437:48:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1437:48:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;6853:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6853:69:14;;;;;;;;:::i;6367:2944:129:-;;;;;;;;;:::i;12753:878::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12753:878:129;;;;;;;;:::i;6305:31:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6305:31:14;;;:::i;4651:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4651:43:14;;;:::i;3209:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3209:55:14;;;;;;;;:::i;4234:1160:129:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4234:1160:129;;;;;;;;:::i;2875:986::-;;;;;;;;;:::i;5559:182::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5559:182:129;;;;;;;;:::i;2626:29:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2626:29:14;;;:::i;3490:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3490:47:14;;;:::i;4754:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4754:35:14;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1351:98:142;;;;;;;;:::i;6447:60:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6447:60:14;;;:::i;4198:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4198:55:14;;;:::i;5207:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5207:35:14;;;:::i;5389:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5389:20:14;;;:::i;15317:866:129:-;15471:33;15510:43;15556:8;:56;;-1:-1:-1;;;;;15590:22:129;;;;;;:16;:22;;;;;15556:56;;;-1:-1:-1;;;;;15567:20:129;;;;;;:14;:20;;;;;15556:56;15510:102;;15617:11;15631:37;15655:12;:3;:10;:12::i;:::-;15631:16;:5;15641;15631:16;:9;:16;:::i;:::-;:23;:37;:23;:37;:::i;:::-;15617:51;;15685:3;15676:5;:12;15672:44;;-1:-1:-1;15695:16:129;;-1:-1:-1;15695:16:129;15672:44;15753:5;15732:27;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;15720:39:129;-1:-1:-1;15763:17:129;15801:11;;;15784:312;15814:5;;15784:312;;15848:5;15835:9;:18;15831:41;;;15861:5;;15831:41;15876:30;;:::i;:::-;15913:86;15928:22;:3;-1:-1:-1;;15936:9:129;;;:13;15928:22;:7;:22;:::i;:::-;15968:8;15983:10;15913:8;:86::i;:::-;16008:15;;15876:123;;-1:-1:-1;16004:34:129;;16030:8;;;16004:34;16067:8;16044:9;16054;16044:20;;;;;;;;;;;;;;;;;:31;-1:-1:-1;16080:11:129;;;;;15784:312;-1:-1:-1;;15821:3:129;15784:312;;;;16116:5;16104:9;:17;16100:80;;;16161:9;16150;16143:28;16137:39;15317:866;;;;;;;;;;;;:::o;1636:67:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;9671:2277:129:-;9811:22;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;9847:19:129;9839:51;;;;-1:-1:-1;;;9839:51:129;;;;;;;;;9894:22;9919:13;;;:5;:13;;;;;;;;9984:22;;;;9973:34;;:10;:34;;;;;;10020:16;;;;;;10012:43;;;;-1:-1:-1;;;10012:43:129;;;;;;;;;10081:18;;;;-1:-1:-1;;;;;10081:18:129;10067:10;:32;;:79;;-1:-1:-1;10121:12:129;;10103:31;;;;:17;:31;;;;;;;;10135:10;10103:43;;;;;;;;;;10067:79;10059:104;;;;-1:-1:-1;;;10059:104:129;;;;;;;;;10175:27;;;;:32;10167:65;;;;-1:-1:-1;;;10167:65:129;;;;;;;;;10269:15;10244:9;:22;;;:40;10236:72;;;;-1:-1:-1;;;10236:72:129;;;;;;;;;10368:16;;;;10386:25;;;;10355:57;;-1:-1:-1;;;;;10368:16:129;;;;10386:25;10355:12;:57::i;:::-;10471:12;;10417:38;10458:26;;;:12;:26;;;;;10567:25;;;;10611:31;;;;10737:18;;;;10458:26;;10489:290;;10458:26;;10471:12;;-1:-1:-1;;;;;10567:25:129;;;;10611:31;;;;10737:18;10760:15;10489:34;:290::i;:::-;10784:32;10819:88;10901:5;10819:77;10867:17;:28;;;10819:43;10846:15;10819:9;:22;;;:26;;:43;;;;:::i;:::-;:47;:77;:47;:77;:::i;:::-;:81;:88;:81;:88;:::i;:::-;10784:123;;10936:24;10919:14;:41;10911:78;;;;-1:-1:-1;;;10911:78:129;;;;;;;;;11060:10;;11023:25;;;;-1:-1:-1;;;;;11023:25:129;;;11060:10;;11023:48;11019:190;;;11078:44;11097:8;11107:14;11078:18;:44::i;:::-;11019:190;;;11152:25;;;;11138:66;;-1:-1:-1;;;;;11152:25:129;11179:8;11189:14;11138:13;:66::i;:::-;11260:28;;11230:59;;:25;:14;11249:5;11230:25;:18;:25;:::i;:59::-;11213:76;;11327:14;11302:9;:22;;;:39;11294:66;;;;-1:-1:-1;;;11294:66:129;;;;;;;;;11390:22;;;;:42;;11417:14;11390:42;:26;:42;:::i;:::-;11365:22;;;:67;;;11470:15;-1:-1:-1;11437:67:129;;;;-1:-1:-1;;;11437:67:129;;;;;;;;;11531:22;;;;11509:19;;11531:43;;11558:15;11531:43;:26;:43;:::i;:::-;11509:65;;11659:4;11645:11;:18;11637:45;;;;-1:-1:-1;;;11637:45:129;;;;;;;;;11720:30;;;;:50;;11755:14;11720:50;:34;:50;:::i;:::-;11687:30;;;:83;11847:14;11862:16;;;;-1:-1:-1;;;;;11862:16:129;;;11847:32;;;;;;;;;;;;11880:25;;;;;;;;11847:59;;;;;;;;;:73;;:97;;11929:14;11847:97;:81;:97;:::i;:::-;11775:14;11790:16;;;;-1:-1:-1;;;;;11790:16:129;;;11775:32;;;;;;;;;;;;11808:25;;;;;;;;11775:59;;;;;;;;:69;;;:169;;;;-1:-1:-1;;11790:16:129;1234:38:143;;;-1:-1:-1;9671:2277:129;;-1:-1:-1;;;9671:2277:129:o;1270:46:14:-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;16866:736:129:-;16969:33;17008:11;17022:48;17046:23;:14;:21;:23::i;:::-;17022:16;:5;17032;17022:16;:9;:16;:::i;:48::-;17008:62;;17087:3;17078:5;:12;17074:44;;-1:-1:-1;17097:16:129;;17074:44;17155:5;17134:27;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;17122:39:129;-1:-1:-1;17165:17:129;17203:11;;;17186:329;17216:5;;17186:329;;17250:5;17237:9;:18;17233:41;;;17263:5;;17233:41;17278:30;;:::i;:::-;17315:103;17330:33;:14;-1:-1:-1;;17349:9:129;;;:13;17330:33;:18;:33;:::i;:::-;17381:1;17402:10;17315:8;:103::i;:::-;17427:15;;17278:140;;-1:-1:-1;17423:34:129;;17449:8;;;17423:34;17486:8;17463:9;17473;17463:20;;;;;;;;;;;;;;;;;:31;-1:-1:-1;17499:11:129;;;;;17186:329;-1:-1:-1;;17223:3:129;17186:329;;;;17535:5;17523:9;:17;17519:80;;;17580:9;17569;17562:28;17556:39;16866:736;;;;;;;;:::o;1898:76:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;16420:177:129:-;16476:30;;:::i;:::-;16522:71;16536:6;16548:1;16568:5;16522:8;:71::i;:::-;16512:81;16420:177;-1:-1:-1;;16420:177:129:o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;14100:660:129:-;14178:17;14329:13;;;:5;:13;;;;;;;;:26;;;;;14318:38;;:10;:38;;;;;;:48;;;14391:20;;;:12;:20;;;;;:31;;14449:33;;;14510:13;;;;:26;;;-1:-1:-1;;;;;14318:48:129;;;;14391:31;;14449:33;14178:17;;14563:15;:30;-1:-1:-1;14563:63:129;;14611:15;14563:63;;;14596:12;14563:63;14540:86;;14672:12;14657;:27;:99;;14755:1;14657:99;;;14687:65;14746:5;14687:54;14722:18;14687:30;:12;14704;14687:30;:16;:30;:::i;:65::-;14630:126;;14100:660;;;;;;;:::o;5340:45:14:-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1773:784:129:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;1832:33:129;1868:45;;;:12;:45;;;;-1:-1:-1;;;;;1868:45:129;;1917:51;;1961:6;1917:10;:51::i;:::-;1972:52;-1:-1:-1;;;2017:6:129;1972:10;:52::i;:::-;2028:57;-1:-1:-1;;;2078:6:129;2028:10;:57::i;:::-;2089:52;-1:-1:-1;;;2134:6:129;2089:10;:52::i;:::-;2145;-1:-1:-1;;;2190:6:129;2145:10;:52::i;:::-;2201:55;-1:-1:-1;;;2249:6:129;2201:10;:55::i;:::-;2260:53;-1:-1:-1;;;2306:6:129;2260:10;:53::i;:::-;2317:46;-1:-1:-1;;;2356:6:129;2317:10;:46::i;:::-;2367:41;-1:-1:-1;;;2401:6:129;2367:10;:41::i;:::-;2412:48;-1:-1:-1;;;2453:6:129;2412:10;:48::i;:::-;-1:-1:-1;;;2527:6:129;-1:-1:-1;;;;;2469:84:129;2500:25;-1:-1:-1;;;;;2469:84:129;;;;;;;;;;;1058:1:142;1773:784:129;:::o;1437:48:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6367:2944:129:-;6569:23;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;6606:18:129;6598:49;;;;-1:-1:-1;;;6598:49:129;;;;;;;;;6651:22;6676:13;;;:5;:13;;;;;;;;6741:22;;;;6730:34;;:10;:34;;;;;;6777:16;;;;;;6769:43;;;;-1:-1:-1;;;6769:43:129;;;;;;;;;6825:13;6824:14;:50;;;-1:-1:-1;6856:18:129;;;;-1:-1:-1;;;;;6856:18:129;6842:10;:32;6824:50;:97;;;-1:-1:-1;6896:12:129;;6878:31;;;;:17;:31;;;;;;;;6910:10;6878:43;;;;;;;;;;6824:97;6816:122;;;;-1:-1:-1;;;6816:122:129;;;;;;;;;6950:27;;;;:32;6942:65;;;;-1:-1:-1;;;6942:65:129;;;;;;;;;7019:9;:14;;:86;;;7039:13;7038:14;:66;;;;-1:-1:-1;7093:10:129;;7056:25;;;;-1:-1:-1;;;;;7056:25:129;;;7093:10;;7056:48;7038:66;7011:115;;;;-1:-1:-1;;;7011:115:129;;;;;;;;;7186:16;;;;7204:25;;;;7173:57;;-1:-1:-1;;;;;7186:16:129;;;;7204:25;7173:12;:57::i;:::-;7289:12;;7235:38;7276:26;;;:12;:26;;;;;7385:25;;;;7429:31;;;;7555:18;;;;7276:26;;7307:290;;7276:26;;7289:12;;-1:-1:-1;;;;;7385:25:129;;;;7429:31;;;;7555:18;7578:15;7307:34;:290::i;:::-;7720:24;7770:9;:22;;;7752:15;:40;7748:328;;;7838:22;;;;7818:43;;:15;;:43;:19;:43;:::i;:::-;7906:28;;7799:62;;-1:-1:-1;7885:50:129;;7799:62;;7885:50;:20;:50;:::i;:::-;7866:69;-1:-1:-1;7959:27:129;7866:69;7980:5;7959:27;:20;:27;:::i;:::-;7940:46;;8016:16;8000:13;:32;7992:79;;;;-1:-1:-1;;;7992:79:129;;;;;;;;;8108:13;8104:327;;;8128:60;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8128:60:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8146:9;;8174:13;8128:17;:60::i;:::-;8104:327;;;8208:9;8204:223;;8243:25;;;;8230:66;;-1:-1:-1;;;;;8243:25:129;8270:10;8282:13;8230:12;:66::i;8204:223::-;8335:13;8322:9;:26;8314:61;;;;-1:-1:-1;;;8314:61:129;;;;;;;;;8381:40;8399:10;8411:9;8381:17;:40::i;:::-;8439:21;;8435:209;;8483:35;:13;8501:16;8483:35;:17;:35;:::i;:::-;8577:16;;;;8595:25;;;;8467:51;;-1:-1:-1;8556:83:129;;-1:-1:-1;;;;;8577:16:129;;;;8595:25;8622:16;8556:20;:83::i;:::-;8695:28;;8666:58;;:24;:13;8684:5;8666:24;:17;:24;:::i;:58::-;8754:22;;;;8648:76;;-1:-1:-1;8754:43:129;;8648:76;8754:43;:26;:43;:::i;:::-;8729:22;;;:68;;;8835:15;-1:-1:-1;8802:67:129;;;;-1:-1:-1;;;8802:67:129;;;;;;;;;8896:22;;;;8874:19;;8896:43;;8923:15;8896:43;:26;:43;:::i;:::-;8874:65;;9024:4;9010:11;:18;9002:45;;;;-1:-1:-1;;;9002:45:129;;;;;;;;;9085:30;;;;:49;;9120:13;9085:49;:34;:49;:::i;:::-;9052:30;;;:82;9211:14;9226:16;;;;-1:-1:-1;;;;;9226:16:129;;;9211:32;;;;;;;;;;;;9244:25;;;;;;;;9211:59;;;;;;;;;:73;;:96;;9293:13;9211:96;:81;:96;:::i;:::-;9139:14;9154:16;;;;-1:-1:-1;;;;;9154:16:129;;;9139:32;;;;;;;;;;;;9172:25;;;;;;;;9139:59;;;;;;;;:69;;;:168;;;;-1:-1:-1;;9154:16:129;1234:38:143;;;-1:-1:-1;6367:2944:129;;-1:-1:-1;;;;;6367:2944:129:o;12753:878::-;12852:20;12877:24;12906:26;12937:22;12964:26;12995:22;13027:41;;:::i;:::-;-1:-1:-1;;;;;;13071:22:129;;;;;;;:14;:22;;;;;;;;:33;;;;;;;;;;;;13027:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13126:104;;13224:5;;13126:93;;13027:77;13126:57;;:15;;:57;:19;:57;:::i;:104::-;13109:121;;13255:19;:29;;;13238:14;:46;13234:98;;;13303:19;:29;;;13286:46;;13234:98;13349:29;;;;13383:34;:77;;13459:1;13383:77;;;13420:19;:36;;;13383:77;13465:30;;;;13500:36;;;;:62;;13561:1;13500:62;;;13544:14;13500:62;13567:17;;13589:34;;13337:290;;;;-1:-1:-1;13337:290:129;;-1:-1:-1;13337:290:129;-1:-1:-1;13567:17:129;;-1:-1:-1;13589:34:129;-1:-1:-1;12753:878:129;-1:-1:-1;;;12753:878:129:o;6305:31:14:-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;4234:1160:129:-;4374:28;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;4416:19:129;4408:51;;;;-1:-1:-1;;;4408:51:129;;;;;;;;;4463:22;4488:13;;;:5;:13;;;;;;;;4553:22;;;;4542:34;;:10;:34;;;;;;4589:16;;;;;;4581:43;;;;-1:-1:-1;;;4581:43:129;;;;;;;;;4650:18;;;;-1:-1:-1;;;;;4650:18:129;4636:10;:32;;:79;;-1:-1:-1;4690:12:129;;4672:31;;;;:17;:31;;;;;;;;4704:10;4672:43;;;;;;;;;;4636:79;4628:104;;;;-1:-1:-1;;;4628:104:129;;;;;;;;;4774:10;;;4806:25;;;;4837:31;;;;4874:19;;;;;4899:20;;;;;4925:33;;;;4762:201;;-1:-1:-1;;;4762:201:129;;4737:19;;-1:-1:-1;;;;;4774:10:129;;;;4762:38;;:201;;4806:25;;;;4837:31;;;4874:19;;4899:20;;4762:201;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4762:201:129;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4762:201:129;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4762:201:129;;;;;;;;;4737:226;;4989:11;4972:14;:28;4968:131;;;5030:11;5007:34;;4968:131;;;5080:14;5057:37;;4968:131;5126:20;;;;:46;;5151:20;5126:46;:24;:46;:::i;:::-;5103:20;;;:69;5224:10;;5181:31;;;;-1:-1:-1;;;;;5181:31:129;;;5224:10;;5181:54;5177:214;;;5242:50;5261:8;5271:20;5242:18;:50::i;:::-;5177:214;;;5322:31;;;;5308:78;;-1:-1:-1;;;;;5322:31:129;5355:8;5365:20;5308:13;:78::i;:::-;-1:-1:-1;;493:1:143;1234:14;:38;-1:-1:-1;4234:1160:129;;-1:-1:-1;;;4234:1160:129:o;2875:986::-;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;3046:18:129;3038:49;;;;-1:-1:-1;;;3038:49:129;;;;;;;;;3091:22;3116:13;;;:5;:13;;;;;;;;3181:22;;;;3170:34;;:10;:34;;;;;;3217:16;;;;;;3209:43;;;;-1:-1:-1;;;3209:43:129;;;;;;;;;3264:9;:14;;:72;;-1:-1:-1;3325:10:129;;3282:31;;;;-1:-1:-1;;;;;3282:31:129;;;3325:10;;3282:54;3264:72;3256:101;;;;-1:-1:-1;;;3256:101:129;;;;;;;;;3385:20;;;;:39;;3410:13;3385:39;:24;:39;:::i;:::-;3362:20;;;:62;3433:9;3429:224;;3467:31;;;;3454:72;;-1:-1:-1;;;;;3467:31:129;3500:10;3512:13;3454:12;:72::i;:::-;3429:224;;;3563:13;3550:9;:26;3542:61;;;;-1:-1:-1;;;3542:61:129;;;;;;;;;3608:40;3626:10;3638:9;3608:17;:40::i;:::-;3704:10;;;3726:31;;;;3759:25;;;;3692:93;;-1:-1:-1;;;3692:93:129;;3658:28;;-1:-1:-1;;;;;3704:10:129;;;;3692:33;;:93;;3726:31;;;;3759:25;;;3692:93;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3692:93:129;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3692:93:129;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3692:93:129;;;;;;;;;3657:128;;;3795:62;3813:6;3821:13;3836:20;3795:62;;;;;;;;;;;;;;;;;-1:-1:-1;;493:1:143;1234:14;:38;-1:-1:-1;;;2875:986:129:o;5559:182::-;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;5680:57:129;5697:10;5724:9;5680:12;:57::i;:::-;5559:182;:::o;2626:29:14:-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;4656:104:95:-;4739:10;;:17;;4656:104::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;5479:104;5542:7;5567:2;5562;:7;:17;;5577:2;5562:17;;;-1:-1:-1;5572:2:145;;5555:24;-1:-1:-1;5479:104:145:o;5215:116:95:-;5290:7;5310:3;:10;;5321:5;5310:17;;;;;;;;;;;;;;;;5303:24;;5215:116;;;;:::o;18005:1865:129:-;18106:30;;:::i;:::-;18142:21;;:::i;:::-;-1:-1:-1;18166:13:129;;;;:5;:13;;;;;;;;;18142:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18142:37:129;;;;;;;;;;;;;;;;;;;18183:33;;:::i;:::-;-1:-1:-1;18230:22:129;;;;;18219:34;;;;:10;:34;;;;;;;18183:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18183:70:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18262:13;;18258:170;;18289:8;18301:1;18289:13;:49;;;;-1:-1:-1;18306:27:129;;;;:32;;18289:49;18288:106;;;;18344:8;18356:1;18344:13;:49;;;;-1:-1:-1;18361:27:129;;;;:32;18344:49;18282:142;;-1:-1:-1;18403:15:129;;-1:-1:-1;18403:15:129;18282:142;18432:37;;:::i;:::-;-1:-1:-1;18472:20:129;;;;:12;:20;;;;;;;;18432:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18568:10;;18602:25;;;;18633:31;;;;;18670:19;;;;18695:20;;;;18556:164;;-1:-1:-1;;;18556:164:129;;18432:60;;18472:20;;;-1:-1:-1;;;;;18568:10:129;;;;18556:40;;:164;;18602:25;;18633:31;;18670:19;;18556:164;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18556:164:129;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18556:164:129;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18556:164:129;;;;;;;;;18497:223;;;;18725:23;18752:19;18796:15;:33;;;18779:13;:50;18775:310;;18871:162;18899:9;:19;;;18924:9;:20;;;18950:13;18969:15;:33;;;19008:20;18871:22;:162::i;:::-;-1:-1:-1;18836:197:129;;-1:-1:-1;18836:197:129;-1:-1:-1;18775:310:129;;;19048:10;19044:41;;;-1:-1:-1;19065:15:129;;-1:-1:-1;;;;;;19065:15:129;19044:41;19099:767;;;;;;;;19128:6;19099:767;;;;19151:15;:25;;;-1:-1:-1;;;;;19099:767:129;;;;;19199:15;:31;;;-1:-1:-1;;;;;19099:767:129;;;;;19247:9;:19;;;19099:767;;;;19284:9;:20;;;19099:767;;;;19330:17;:28;;;19099:767;;;;19416:15;19390:9;:22;;;:41;;:146;;19535:1;19390:146;;;19439:88;19521:5;19439:77;19487:17;:28;;;19439:43;19466:15;19439:9;:22;;;:26;;:43;;;;:::i;:88::-;19099:767;;;;19553:9;:19;;;19099:767;;;;19591:9;:21;;;19099:767;;;;19637:15;:33;;;19099:767;;;;19691:13;19099:767;;;;19723:15;:27;;;19099:767;;;;19770:9;:22;;;19099:767;;;;19815:15;19099:767;;;;19849:11;19099:767;;;19089:777;;;;;;;;;18005:1865;;;;;:::o;1036:930:97:-;-1:-1:-1;;;;;1155:22:97;;;1110:42;1155:22;;;:14;:22;;;;;;;;:37;;;;;;;;;;;1232:30;;;;1155:37;;1110:42;1232:35;;;;:80;;-1:-1:-1;1271:36:97;;;;:41;;1232:80;1228:735;;;1337:105;1435:6;1337:93;1399:19;:30;;;1337:57;1357:19;:36;;;1337:15;:19;;:57;;;;:::i;:105::-;1487:15;1448:36;;;:54;1530:29;;;;1319:123;;-1:-1:-1;1512:47:97;;1508:100;;;-1:-1:-1;1579:29:97;;;;1508:100;1618:20;;1614:275;;1678:29;;;;:50;;1712:15;1678:50;:33;:50;:::i;:::-;1646:29;;;:82;1766:29;;;;:50;;1800:15;1766:50;:33;:50;:::i;:::-;1734:29;;;:82;1823:60;1844:6;1852:13;1867:15;1823:20;:60::i;:::-;1228:735;;;1943:15;1904:36;;;:54;1228:735;1036:930;;;;:::o;6369:621:96:-;6647:26;6679:139;6798:15;6679:109;6770:17;;6679:86;6736:17;:28;;;6679:52;6696:17;:34;;;6679:12;:16;;:52;;;;:::i;:139::-;6823:34;;;:49;;;6647:171;-1:-1:-1;6881:23:96;;6877:110;;6911:71;6925:4;6931:6;6939:8;6949:12;6963:18;6911:13;:71::i;:::-;6369:621;;;;;;;:::o;1201:125:145:-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;1999:399::-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;2817:121;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;1304:341:102:-;1376:10;;1372:270;;1419:10;;-1:-1:-1;;;;;1419:10:102;1452:21;1482:15;;;1478:70;;;1505:37;;-1:-1:-1;;;1505:37:102;;-1:-1:-1;;;;;1505:20:102;;;;;:37;;1526:15;;;;1505:37;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1505:37:102;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1505:37:102;;;;1478:70;1552:28;1570:2;1574:5;1552:17;:28::i;:::-;1627:2;-1:-1:-1;;;;;1591:46:102;1613:11;-1:-1:-1;;;;;1591:46:102;;1631:5;1591:46;;;;;;;;;;;;;;;1372:270;;;1304:341;;:::o;2297:195::-;2388:10;;2384:105;;2405:37;-1:-1:-1;;;;;2405:26:102;;2432:2;2436:5;2405:37;:26;:37;:::i;:::-;2474:2;-1:-1:-1;;;;;2453:31:102;2467:5;-1:-1:-1;;;;;2453:31:102;;2478:5;2453:31;;;;;;;;;;;;;;;2384:105;2297:195;;;:::o;780:87:137:-;853:10;780:87;:::o;7574:230:14:-;-1:-1:-1;;;;;;7635:17:14;;;;;;:12;:17;;;;;:26;;-1:-1:-1;;;;;;7635:26:14;-1:-1:-1;;;;;7635:26:14;;;;;;;;7670:20;7666:135;;7697:40;:15;-1:-1:-1;;;;;;7724:12:14;;7697:40;:26;:40;:::i;:::-;;7666:135;;;7753:43;:15;-1:-1:-1;;;;;;7783:12:14;;7753:43;:29;:43;:::i;20125:1029:129:-;20319:29;20357:395;20372:9;:12;;;20390:15;:31;;;20427:15;:25;;;20458:9;:18;;;;;;;;;;-1:-1:-1;;;;;20458:18:129;20482:9;:20;;;20533:1;20596:13;20703:4;20357:395;;;;;;;;;;;;:9;:395::i;:::-;-1:-1:-1;20779:20:129;;;;20316:436;;-1:-1:-1;20779:47:129;;-1:-1:-1;20316:436:129;20779:47;:24;:47;:::i;:::-;20756:20;;;:70;;;20914:10;;20948:25;;;;20979:31;;;;21016:19;;;;;20902:164;;-1:-1:-1;;;20902:164:129;;20872:21;;-1:-1:-1;;;;;20914:10:129;;;;20902:40;;:164;;20948:25;;20979:31;;21016:19;20902:164;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20902:164:129;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20902:164:129;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;20902:164:129;;;;;;;;;20871:195;;;21094:15;:33;;;21078:13;:49;21070:80;;;;-1:-1:-1;;;21070:80:129;;;;;;;;;20125:1029;;;;;:::o;1871:218:102:-;1963:10;;1959:127;;1980:58;-1:-1:-1;;;;;1980:30:102;;2011:4;2025;2032:5;1980:58;:30;:58;:::i;:::-;2069:4;-1:-1:-1;;;;;2049:32:102;2062:5;-1:-1:-1;;;;;2049:32:102;;2075:5;2049:32;;;;;;;939:204;1034:10;;1048:34;;;-1:-1:-1;;;1048:34:102;;;;-1:-1:-1;;;;;1034:10:102;;;;;;1048:19;;1074:5;;1048:34;;;;;1008:23;;1048:34;;;;;;;;1074:5;1034:10;1048:34;;;5:2:-1;;;;30:1;27;20:12;5:2;1048:34:102;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1048:34:102;;;;;1127:4;-1:-1:-1;;;;;1092:47:102;1113:11;-1:-1:-1;;;;;1092:47:102;;1133:5;1092:47;;;;;;;2234:702:97;2350:18;2371:50;2414:6;2371:38;2391:17;;2371:15;:19;;:38;;;;:::i;:50::-;2350:71;;2641:49;2656:6;2664:13;2679:10;2641:14;:49::i;:::-;2762:69;2776:13;2791:6;2799:31;:15;2819:10;2799:31;:19;:31;:::i;:::-;2762:13;:69::i;:::-;-1:-1:-1;;;;;2857:75:97;;;;;;;2900:31;:15;2920:10;2900:31;:19;:31;:::i;:::-;2857:75;;;;;;;1538:204:142;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1121:1460:98:-;1423:27;;1318:23;;;;1458:33;;;;:62;;-1:-1:-1;1495:25:98;;1458:62;1454:233;;;1527:55;;1454:233;1614:16;1597:13;:33;1593:94;;-1:-1:-1;1645:9:98;;-1:-1:-1;1656:10:98;;-1:-1:-1;1668:13:98;1637:45;;1593:94;1736:21;1760:30;:17;1782:7;1760:30;:21;:30;:::i;:::-;1736:54;-1:-1:-1;1928:52:98;1973:6;1928:40;1958:9;1928:25;1736:54;1973:6;1928:25;:17;:25;:::i;:52::-;1910:70;-1:-1:-1;2002:69:98;2022:48;2063:6;2022:36;:10;2037:20;2022:36;:14;:36;:::i;:48::-;2002:15;;:69;:19;:69;:::i;:::-;1984:87;-1:-1:-1;2093:68:98;2125:35;:13;2143:16;2125:35;:17;:35;:::i;:::-;2093:27;:15;2113:6;2093:27;:19;:27;:::i;:68::-;2075:86;;2187:9;2169:15;:27;2165:70;;;2221:9;2203:27;;2165:70;2337:49;2357:28;:16;2378:6;2357:28;:20;:28;:::i;:::-;2337:15;;:49;:19;:49;:::i;:::-;2323:63;-1:-1:-1;2404:46:98;2446:3;2404:37;2323:63;2420:20;2404:37;:15;:37;:::i;:46::-;2390:60;;2472:10;2458:11;:24;2454:64;;;2503:10;2489:24;;2454:64;-1:-1:-1;1121:1460:98;;;;;;;;;;:::o;7367:1524:96:-;7557:16;;7599:10;;-1:-1:-1;;;;;7618:24:96;;;7505:20;7618:24;;;:14;:24;;;;;;;;:38;;;;;;;;;;;7505:20;;7557:16;7599:10;;;;;7618:42;7614:116;;-1:-1:-1;;;;;7687:24:96;;;;;;;:14;:24;;;;;;;;:38;;;;;;;;;;;-1:-1:-1;7614:116:96;7996:15;;7834:12;;7848:17;;-1:-1:-1;;;;;7872:22:96;;;;-1:-1:-1;;;7929:45:96;7981:8;;7996:15;8086:44;8123:6;8086:32;:9;8100:17;8086:32;:13;:32;:::i;:44::-;7900:236;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;7900:236:96;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;7900:236:96;;;179:29:-1;;;;160:49;;;7872:269:96;;;;7900:236;7872:269;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7833:308:96;;;;8224:1;8215:7;8212:14;8209:2;;;8265;8259:4;8255:13;8249:20;8233:36;;8209:2;8286:17;;8282:606;;8317:15;;8342:16;;8310:63;;-1:-1:-1;;;8310:63:96;;-1:-1:-1;;;;;8317:15:96;;;;8310:31;;:63;;8342:16;;;8360:12;;8310:63;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8310:63:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8310:63:96;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8310:63:96;;;;;;;;;-1:-1:-1;8402:16:96;;8510:30;;8430:111;;8380:12;;-1:-1:-1;;;;;8402:16:96;;8430:111;;8490:4;;8496:12;;8430:111;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;8430:111:96;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;8402:145:96;;;8430:111;8402:145;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8379:168:96;;;8557:7;8553:331;;;8592:17;;:35;;8614:12;8592:35;:21;:35;:::i;:::-;8572:17;:55;8656:15;;8714:30;;8639:106;;8673:6;;-1:-1:-1;;;;;8656:15:96;;;;8639:106;;;;;;;;8681:17;;8700:12;;8639:106;;;;;;;;;;8553:331;;;8789:15;;8847:30;;8768:110;;8806:6;;-1:-1:-1;;;;;8789:15:96;;;;8768:110;;;;;;;;8814:17;;8833:12;;8768:110;;;;;;;;;;8553:331;8282:606;;7367:1524;;;;;;;;;;:::o;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;3411:315::-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;2414:330:136:-;2514:6;2489:21;:31;;2481:73;;;;-1:-1:-1;;;2481:73:136;;;;;;;;;2608:12;2626:9;-1:-1:-1;;;;;2626:14:136;2647:6;2626:32;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2607:51:136;;;2670:7;2662:78;;;;-1:-1:-1;;;2662:78:136;;;;;;;;654:174:144;765:58;;739:85;;758:5;;-1:-1:-1;;;788:23:144;765:58;;813:2;;817:5;;765:58;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;765:58:144;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;765:58:144;;;179:29:-1;;;;160:49;;;739:18:144;:85::i;1293:212:95:-;1370:4;1385:20;1394:3;1399:5;1385:8;:20::i;:::-;1380:122;;-1:-1:-1;1431:10:95;;;;27::-1;;23:18;;;45:23;;;-1:-1;1431:22:95;;;;;;;;;;;;;1412:16;;;;;;;;;;;:41;1458:11;;1380:122;-1:-1:-1;1492:5:95;1485:12;;2102:845;2182:4;2196:20;2205:3;2210:5;2196:8;:20::i;:::-;2192:752;;;2223:21;2247:16;;;;;;;;;;;2266:1;2292:10;;:17;-1:-1:-1;;2247:20:95;;;;2292:21;2428:26;;;2424:318;;2462:17;2482:3;:10;;2493:9;2482:21;;;;;;;;;;;;;;;;2462:41;;2607:9;2579:3;:10;;2590:13;2579:25;;;;;;;;;;;;;;;;;;;:37;;;;2669:20;;;;;;;;;2708:1;2692:17;;2669:40;;2424:318;2807:9;:16;;;;;;;;;;2800:23;2878:10;;;:16;;;;;;;;;;;;;;;;;;;;;;;;2907:4;2900:11;;;;;;1194:1199:151;1626:339;;;;;;;;-1:-1:-1;;;;;1626:339:151;;;;;;;;;;;;;;;;1687:4;1626:339;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1467:31;;;;;;1626:339;;;1835:6;1846:9;1860:13;1467:31;1626:10;:339::i;:::-;1575:390;;-1:-1:-1;1575:390:151;-1:-1:-1;2012:50:151;2027:11;1575:390;2012:14;:50::i;:::-;2143:10;;2266:15;;2131:154;;-1:-1:-1;;;2131:154:151;;-1:-1:-1;;;;;2143:10:151;;;;2131:46;;:154;;2182:11;;2198:9;;2212:21;;2238:23;;2131:154;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2131:154:151;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2131:154:151;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2131:154:151;;;;;;;;;2108:177;;2325:9;-1:-1:-1;;;;;2295:94:151;2312:11;-1:-1:-1;;;;;2295:94:151;2304:6;2295:94;2336:4;2342:21;2365:23;2295:94;;;;;;;;;;;;;;;;;1194:1199;;;;;;;;;;;;;:::o;831:204:144:-;962:68;;936:95;;955:5;;-1:-1:-1;;;985:27:144;962:68;;1014:4;;1020:2;;1024:5;;962:68;;;;5885:395:96;5987:15;;5983:294;;-1:-1:-1;;;;;6118:30:96;;;;;;:20;:30;;;;;;:46;;6153:10;6118:46;:34;:46;:::i;:::-;-1:-1:-1;;;;;6085:30:96;;;;;;;:20;:30;;;;;;;:79;;;;6175:41;;;;;;;;;;6205:10;;6175:41;;2564:999:144;3111:27;3119:5;-1:-1:-1;;;;;3111:25:144;;:27::i;:::-;3103:71;;;;-1:-1:-1;;;3103:71:144;;;;;;;;;3233:12;3247:23;3282:5;-1:-1:-1;;;;;3274:19:144;3294:4;3274:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3232:67:144;;;;3311:7;3303:52;;;;-1:-1:-1;;;3303:52:144;;;;;;;;;3364:17;;:21;3360:200;;3489:10;3478:30;;;;;;;;;;;;;;3470:85;;;;-1:-1:-1;;;3470:85:144;;;;;;;;3145:122:95;3225:4;3242:16;;;;;;;;;;;;:21;;;3145:122::o;2909:2766:151:-;3381:7;;3105;;;;3381:12;;;:28;;-1:-1:-1;3397:7:151;;;;:12;;3381:28;3373:87;;;;-1:-1:-1;;;3373:87:151;;;;;;;;;3469:7;;;;3465:45;;3498:7;;;3488;;:17;3465:45;3532:7;;;;3521;;:18;;3513:59;;;;-1:-1:-1;;;3513:59:151;;;;;;;;;3577:31;3612:29;3646:18;3673:8;3668:851;;3709:7;;;;3705:810;;3797:14;3793:131;;;3833:28;3853:4;3858:1;3853:7;;;;;3833:19;:28::i;:::-;3820:41;;3793:131;;;3894:23;3909:4;3914:1;3909:7;;;;;3894:14;:23::i;:::-;3881:36;;3793:131;3934:15;;3930:303;;3980:8;;;;4019;;3958:227;;3980:8;4005:6;;3980:5;4068:1;4062:8;;;;;4168:10;3958:14;:227::i;:::-;4203:7;;:23;;4215:10;4203:11;:23::i;:::-;4193:33;;3930:303;3705:810;;;4309:14;4305:131;;;4345:28;4365:4;4370:1;4365:7;;4345:28;4332:41;;4305:131;;;4406:23;4421:4;4426:1;4421:7;;4406:23;4393:36;;4305:131;4446:15;;4442:68;;4480:7;;;;:23;;4492:10;4480:11;:23::i;:::-;4470:7;;;:33;4442:68;4531:20;;:25;4523:51;;;;-1:-1:-1;;;4523:51:151;;;;;;;;;4630:32;4650:5;4657:4;4630:19;:32::i;:::-;4671:7;;;;4579:83;;-1:-1:-1;4579:83:151;-1:-1:-1;4667:945:151;;4830:7;;4805:32;;4797:67;;;;-1:-1:-1;;;4797:67:151;;;;;;;;;4874:15;;4870:94;;4921:37;:21;4947:10;4921:37;:25;:37;:::i;:::-;4897:61;;4870:94;4667:945;;;5156:7;;;;5131:32;;;5123:64;;;;-1:-1:-1;;;5123:64:151;;;;;;;;;5227:7;;;;5200:34;;;5192:74;;;;-1:-1:-1;;;5192:74:151;;;;;;;;;5276:15;;5272:336;;5320:8;;;;;5369;;;5299:231;;5320:8;5344:6;;5320:5;5415:1;5409:8;;5299:231;5563:39;:23;5591:10;5563:39;:27;:39;:::i;:::-;5537:65;;5272:336;-1:-1:-1;5624:23:151;;;;-1:-1:-1;2909:2766:151;-1:-1:-1;;;;;;;2909:2766:151:o;7706:398::-;7809:11;;7828:17;;7824:277;;7904:10;;7852:19;;-1:-1:-1;;;;;7880:35:151;;;7904:10;;7880:35;7876:162;;;-1:-1:-1;7937:6:151;7876:162;;;7987:10;;7975:57;;-1:-1:-1;;;7975:57:151;;-1:-1:-1;;;;;7987:10:151;;;;7975:35;;:57;;8011:12;;8025:6;;7975:57;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7975:57:151;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7975:57:151;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7975:57:151;;;;;;;;;7961:71;;7876:162;8065:12;8050:11;:27;;8042:54;;;;-1:-1:-1;;;8042:54:151;;;;;;;;639:564:136;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;1172:159:96:-;1248:7;1268:59;1320:6;1268:43;1287:23;;1268:14;:18;;:43;;;;:::i;:::-;:51;:59;:51;:59;:::i;882:148::-;953:7;973:53;1019:6;973:37;992:17;;973:14;:18;;:37;;;;:::i;3804:940::-;3973:10;4025:15;;4021:720;;-1:-1:-1;;;;;4051:28:96;;;4091:1;4051:28;;;:22;:28;;;;;;;:42;4047:343;;-1:-1:-1;;;;;4127:28:96;;;;;;;:22;:28;;;;;;4101:91;;4127:28;4150:4;4163:8;4173:18;4101:25;:91::i;:::-;;;4219:165;4311:67;4371:6;4311:55;4334:31;;4311:18;:22;;:55;;;;:::i;:67::-;4220:79;4243:55;4291:6;4243:43;4266:19;;4243:18;:22;;:43;;;;:::i;:55::-;4220:18;;:79;:22;:79;:::i;:::-;4219:85;:165;:85;:165;:::i;:::-;4198:186;;4047:343;-1:-1:-1;;;;;4504:30:96;;;;;;:20;:30;;;;;;:54;;4539:18;4504:54;:34;:54;:::i;:::-;-1:-1:-1;;;;;4471:30:96;;;;;;;:20;:30;;;;;;;:87;;;;4569:57;;4599:6;;4471:30;4569:57;;;;;;;4607:18;;4569:57;;;;;;;;;;4673:63;4687:4;4693:6;4701:8;4711:12;4725:10;4673:13;:63::i;:::-;3804:940;;;;;;:::o;6021:741:151:-;6290:8;;;6320;;;;6348;;;;;6190:17;6382:8;;;;6422:7;;6460;;;;6498;;;;6213:325;;6121:31;;;;6190:17;;-1:-1:-1;;;6241:43:151;6213:325;;6290:8;;6320;;6348;;6382;;6422:7;;6460;6213:325;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;6213:325:151;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;6213:325:151;;;179:29:-1;;;;160:49;;;6577:9:151;;:28;;6213:325;;-1:-1:-1;;;;;;;;6577:9:151;;:28;;6213:325;;6577:28;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;6559:46:151;-1:-1:-1;6559:46:151;-1:-1:-1;6559:46:151;6609:31;;;;-1:-1:-1;;;6609:31:151;;;;;;;;;6702:2;6696:4;6692:13;6686:20;6659:47;;6751:2;6745:4;6741:13;6735:20;6710:45;;6654:105;;;;;;;:::o;3821:129:145:-;3883:7;3903:43;3911:1;3914;3903:43;;;;;;;;;;;;;;;;;:7;:43::i;3045:393:96:-;3340:15;;3312:122;;-1:-1:-1;;;3312:122:96;;3181:32;;;;-1:-1:-1;;;;;3340:15:96;;;;3312:82;;:122;;3395:8;;3405:6;;3413:8;;3423:10;;3312:122;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3312:122:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3312:122:96;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3312:122:96;;;;;;;;;3255:179;;;;-1:-1:-1;3045:393:96;-1:-1:-1;;;;;3045:393:96:o;4045:285:145:-;4144:7;4233:12;4225:6;4217:29;;;;-1:-1:-1;;;4217:29:145;;;;;;;;;;-1:-1:-1;4255:6:145;4251:30;;-1:-1:-1;4275:1:145;4268:8;;4251:30;4284:9;4307:1;4302;4298;:5;4297:11;;;;;;4312:1;4296:17;;4045:285;-1:-1:-1;;;;;4045:285:145:o;834:20322:129:-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;834:20322:129;;;;;;-1:-1:-1;;;;;834:20322:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;834:20322:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;834:20322:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:124;206:20;;231:30;206:20;231:30;;273:128;348:13;;366:30;348:13;366:30;;408:130;475:20;;500:33;475:20;500:33;;545:128;611:20;;636:32;611:20;636:32;;694:336;;;808:3;801:4;793:6;789:17;785:27;775:2;;826:1;823;816:12;775:2;-1:-1;846:20;;886:18;875:30;;872:2;;;918:1;915;908:12;872:2;952:4;944:6;940:17;928:29;;1003:3;995:4;987:6;983:17;973:8;969:32;966:41;963:2;;;1020:1;1017;1010:12;963:2;768:262;;;;;;1175:134;1253:13;;1271:33;1253:13;1271:33;;1316:241;;1420:2;1408:9;1399:7;1395:23;1391:32;1388:2;;;1436:1;1433;1426:12;1388:2;1471:1;1488:53;1533:7;1513:9;1488:53;;1564:366;;;1685:2;1673:9;1664:7;1660:23;1656:32;1653:2;;;1701:1;1698;1691:12;1653:2;1736:1;1753:53;1798:7;1778:9;1753:53;;;1743:63;;1715:97;1843:2;1861:53;1906:7;1897:6;1886:9;1882:22;1861:53;;;1851:63;;1822:98;1647:283;;;;;;1937:366;;;2058:2;2046:9;2037:7;2033:23;2029:32;2026:2;;;2074:1;2071;2064:12;2026:2;2109:1;2126:53;2171:7;2151:9;2126:53;;;2116:63;;2088:97;2216:2;2234:53;2279:7;2270:6;2259:9;2255:22;2234:53;;2310:857;;;;;;;2493:3;2481:9;2472:7;2468:23;2464:33;2461:2;;;2510:1;2507;2500:12;2461:2;2545:1;2562:53;2607:7;2587:9;2562:53;;;2552:63;;2524:97;2652:2;2670:53;2715:7;2706:6;2695:9;2691:22;2670:53;;;2660:63;;2631:98;2760:2;2778:53;2823:7;2814:6;2803:9;2799:22;2778:53;;;2768:63;;2739:98;2868:2;2886:53;2931:7;2922:6;2911:9;2907:22;2886:53;;;2876:63;;2847:98;2976:3;2995:50;3037:7;3028:6;3017:9;3013:22;2995:50;;;2985:60;;2955:96;3082:3;3101:50;3143:7;3134:6;3123:9;3119:22;3101:50;;;3091:60;;3061:96;2455:712;;;;;;;;;3174:257;;3286:2;3274:9;3265:7;3261:23;3257:32;3254:2;;;3302:1;3299;3292:12;3254:2;3337:1;3354:61;3407:7;3387:9;3354:61;;3438:241;;3542:2;3530:9;3521:7;3517:23;3513:32;3510:2;;;3558:1;3555;3548:12;3510:2;3593:1;3610:53;3655:7;3635:9;3610:53;;3686:366;;;3807:2;3795:9;3786:7;3782:23;3778:32;3775:2;;;3823:1;3820;3813:12;3775:2;3858:1;3875:53;3920:7;3900:9;3875:53;;4059:491;;;;4197:2;4185:9;4176:7;4172:23;4168:32;4165:2;;;4213:1;4210;4203:12;4165:2;4248:1;4265:53;4310:7;4290:9;4265:53;;;4255:63;;4227:97;4355:2;4373:53;4418:7;4409:6;4398:9;4394:22;4373:53;;;4363:63;;4334:98;4463:2;4481:53;4526:7;4517:6;4506:9;4502:22;4481:53;;;4471:63;;4442:98;4159:391;;;;;;4557:366;;;4678:2;4666:9;4657:7;4653:23;4649:32;4646:2;;;4694:1;4691;4684:12;4646:2;4729:1;4746:53;4791:7;4771:9;4746:53;;4930:735;;;;;;5101:3;5089:9;5080:7;5076:23;5072:33;5069:2;;;5118:1;5115;5108:12;5069:2;5153:1;5170:53;5215:7;5195:9;5170:53;;;5160:63;;5132:97;5260:2;5278:53;5323:7;5314:6;5303:9;5299:22;5278:53;;;5268:63;;5239:98;5368:2;5386:50;5428:7;5419:6;5408:9;5404:22;5386:50;;;5376:60;;5347:95;5501:2;5490:9;5486:18;5473:32;5525:18;5517:6;5514:30;5511:2;;;5557:1;5554;5547:12;5511:2;5585:64;5641:7;5632:6;5621:9;5617:22;5585:64;;;5575:74;;;;5452:203;5063:602;;;;;;;;;5672:239;;5775:2;5763:9;5754:7;5750:23;5746:32;5743:2;;;5791:1;5788;5781:12;5743:2;5826:1;5843:52;5887:7;5867:9;5843:52;;5918:263;;6033:2;6021:9;6012:7;6008:23;6004:32;6001:2;;;6049:1;6046;6039:12;6001:2;6084:1;6101:64;6157:7;6137:9;6101:64;;6188:399;;;6320:2;6308:9;6299:7;6295:23;6291:32;6288:2;;;6336:1;6333;6326:12;6288:2;6371:1;6388:64;6444:7;6424:9;6388:64;;;6378:74;;6350:108;6489:2;6507:64;6563:7;6554:6;6543:9;6539:22;6507:64;;6594:485;;;;6729:2;6717:9;6708:7;6704:23;6700:32;6697:2;;;6745:1;6742;6735:12;6697:2;6780:1;6797:53;6842:7;6822:9;6797:53;;;6787:63;;6759:97;6887:2;6905:53;6950:7;6941:6;6930:9;6926:22;6905:53;;;6895:63;;6866:98;6995:2;7013:50;7055:7;7046:6;7035:9;7031:22;7013:50;;7087:295;;7232:108;7336:3;7328:6;7232:108;;;-1:-1;;7369:6;7360:16;;7225:157;7390:103;7463:24;7481:5;7463:24;;;7458:3;7451:37;7445:48;;;7711:922;;7914:83;7991:5;7914:83;;;8010:115;8118:6;8113:3;8010:115;;;8003:122;;8146:85;8225:5;8146:85;;;8251:7;8279:1;8264:347;8289:6;8286:1;8283:13;8264:347;;;8356:6;8350:13;8377:121;8494:3;8479:13;8377:121;;;8370:128;;8515:89;8597:6;8515:89;;;8505:99;-1:-1;;8311:1;8304:9;8264:347;;;-1:-1;8624:3;;7893:740;-1:-1;;;;;7893:740;8641:104;8718:21;8733:5;8718:21;;8752:103;8825:24;8843:5;8825:24;;8982:356;;9110:38;9142:5;9110:38;;;9160:88;9241:6;9236:3;9160:88;;;9153:95;;9253:52;9298:6;9293:3;9286:4;9279:5;9275:16;9253:52;;;9317:16;;;;;9090:248;-1:-1;;9090:248;9345:168;9449:58;9501:5;9449:58;;9520:347;;9632:39;9665:5;9632:39;;;9683:71;9747:6;9742:3;9683:71;;;9676:78;;9759:52;9804:6;9799:3;9792:4;9785:5;9781:16;9759:52;;;9832:29;9854:6;9832:29;;;9823:39;;;;9612:255;-1:-1;;;9612:255;9875:319;;10035:67;10099:2;10094:3;10035:67;;;-1:-1;;;10115:42;;10185:2;10176:12;;10021:173;-1:-1;;10021:173;10203:305;;10363:66;10427:1;10422:3;10363:66;;;-1:-1;;;10442:29;;10499:2;10490:12;;10349:159;-1:-1;;10349:159;10517:327;;10677:67;10741:2;10736:3;10677:67;;;10777:29;10757:50;;10835:2;10826:12;;10663:181;-1:-1;;10663:181;10853:375;;11013:67;11077:2;11072:3;11013:67;;;11113:34;11093:55;;-1:-1;;;11177:2;11168:12;;11161:30;11219:2;11210:12;;10999:229;-1:-1;;10999:229;11237:320;;11397:67;11461:2;11456:3;11397:67;;;-1:-1;;;11477:43;;11548:2;11539:12;;11383:174;-1:-1;;11383:174;11566:371;;11726:67;11790:2;11785:3;11726:67;;;11826:34;11806:55;;-1:-1;;;11890:2;11881:12;;11874:26;11928:2;11919:12;;11712:225;-1:-1;;11712:225;11946:327;;12106:67;12170:2;12165:3;12106:67;;;12206:29;12186:50;;12264:2;12255:12;;12092:181;-1:-1;;12092:181;12282:316;;12442:67;12506:2;12501:3;12442:67;;;-1:-1;;;12522:39;;12589:2;12580:12;;12428:170;-1:-1;;12428:170;12607:314;;12767:67;12831:2;12826:3;12767:67;;;-1:-1;;;12847:37;;12912:2;12903:12;;12753:168;-1:-1;;12753:168;12930:332;;13090:67;13154:2;13149:3;13090:67;;;13190:34;13170:55;;13253:2;13244:12;;13076:186;-1:-1;;13076:186;13271:319;;13431:67;13495:2;13490:3;13431:67;;;-1:-1;;;13511:42;;13581:2;13572:12;;13417:173;-1:-1;;13417:173;13599:395;;13759:67;13823:2;13818:3;13759:67;;;13859:34;13839:55;;13928:28;13923:2;13914:12;;13907:50;13985:2;13976:12;;13745:249;-1:-1;;13745:249;14003:329;;14163:67;14227:2;14222:3;14163:67;;;14263:31;14243:52;;14323:2;14314:12;;14149:183;-1:-1;;14149:183;14341:328;;14501:67;14565:2;14560:3;14501:67;;;14601:30;14581:51;;14660:2;14651:12;;14487:182;-1:-1;;14487:182;14678:324;;14838:67;14902:2;14897:3;14838:67;;;14938:26;14918:47;;14993:2;14984:12;;14824:178;-1:-1;;14824:178;15011:314;;15171:67;15235:2;15230:3;15171:67;;;-1:-1;;;15251:37;;15316:2;15307:12;;15157:168;-1:-1;;15157:168;15334:370;;15494:67;15558:2;15553:3;15494:67;;;15594:34;15574:55;;-1:-1;;;15658:2;15649:12;;15642:25;15695:2;15686:12;;15480:224;-1:-1;;15480:224;15713:312;;15873:67;15937:2;15932:3;15873:67;;;-1:-1;;;15953:35;;16016:2;16007:12;;15859:166;-1:-1;;15859:166;16034:318;;16194:67;16258:2;16253:3;16194:67;;;-1:-1;;;16274:41;;16343:2;16334:12;;16180:172;-1:-1;;16180:172;16361:318;;16521:67;16585:2;16580:3;16521:67;;;-1:-1;;;16601:41;;16670:2;16661:12;;16507:172;-1:-1;;16507:172;16688:320;;16848:67;16912:2;16907:3;16848:67;;;-1:-1;;;16928:43;;16999:2;16990:12;;16834:174;-1:-1;;16834:174;17017:383;;17177:67;17241:2;17236:3;17177:67;;;17277:34;17257:55;;-1:-1;;;17341:2;17332:12;;17325:38;17391:2;17382:12;;17163:237;-1:-1;;17163:237;17409:296;;17586:83;17667:1;17662:3;17586:83;;17714:314;;17874:67;17938:2;17933:3;17874:67;;;-1:-1;;;17954:37;;18019:2;18010:12;;17860:168;-1:-1;;17860:168;18037:312;;18197:67;18261:2;18256:3;18197:67;;;-1:-1;;;18277:35;;18340:2;18331:12;;18183:166;-1:-1;;18183:166;18358:313;;18518:67;18582:2;18577:3;18518:67;;;-1:-1;;;18598:36;;18662:2;18653:12;;18504:167;-1:-1;;18504:167;18680:379;;18840:67;18904:2;18899:3;18840:67;;;18940:34;18920:55;;-1:-1;;;19004:2;18995:12;;18988:34;19050:2;19041:12;;18826:233;-1:-1;;18826:233;19068:319;;19228:67;19292:2;19287:3;19228:67;;;-1:-1;;;19308:42;;19378:2;19369:12;;19214:173;-1:-1;;19214:173;19396:311;;19556:67;19620:2;19615:3;19556:67;;;-1:-1;;;19636:34;;19698:2;19689:12;;19542:165;-1:-1;;19542:165;19716:322;;19876:67;19940:2;19935:3;19876:67;;;-1:-1;;;19956:45;;20029:2;20020:12;;19862:176;-1:-1;;19862:176;20047:322;;20207:67;20271:2;20266:3;20207:67;;;-1:-1;;;20287:45;;20360:2;20351:12;;20193:176;-1:-1;;20193:176;20378:331;;20538:67;20602:2;20597:3;20538:67;;;20638:33;20618:54;;20700:2;20691:12;;20524:185;-1:-1;;20524:185;20802:2654;21031:23;;20961:6;20952:16;;;21060:63;20956:3;21031:23;21060:63;;;20983:146;21207:4;21200:5;21196:16;21190:23;21219:63;21276:4;21271:3;21267:14;21253:12;21219:63;;;21139:149;21372:4;21365:5;21361:16;21355:23;21384:63;21441:4;21436:3;21432:14;21418:12;21384:63;;;21298:155;21531:4;21524:5;21520:16;21514:23;21543:63;21600:4;21595:3;21591:14;21577:12;21543:63;;;21463:149;21691:4;21684:5;21680:16;21674:23;21703:63;21760:4;21755:3;21751:14;21737:12;21703:63;;;21622:150;21859:4;21852:5;21848:16;21842:23;21871:63;21928:4;21923:3;21919:14;21905:12;21871:63;;;21782:158;22033:4;22026:5;22022:16;22016:23;22045:63;22102:4;22097:3;22093:14;22079:12;22045:63;;;21950:164;22192:4;22185:5;22181:16;22175:23;22204:63;22261:4;22256:3;22252:14;22238:12;22204:63;;;22124:149;22353:6;22346:5;22342:18;22336:25;22367:65;22424:6;22419:3;22415:16;22401:12;22367:65;;;22283:155;22524:6;22517:5;22513:18;22507:25;22538:65;22595:6;22590:3;22586:16;22572:12;22538:65;;;22448:161;22691:6;22684:5;22680:18;22674:25;22705:65;22762:6;22757:3;22753:16;22739:12;22705:65;;;22619:157;22856:6;22849:5;22845:18;22839:25;22870:65;22927:6;22922:3;22918:16;22904:12;22870:65;;;22786:155;23022:6;23015:5;23011:18;23005:25;23036:65;23093:6;23088:3;23084:16;23070:12;23036:65;;;22951:156;23191:6;23184:5;23180:18;23174:25;23205:65;23262:6;23257:3;23253:16;23239:12;23205:65;;;23117:159;23356:6;23349:5;23345:18;23339:25;23370:65;23427:6;23422:3;23418:16;23404:12;23370:65;;26425:262;;26569:93;26658:3;26649:6;26569:93;;26694:370;;26892:147;27035:3;26892:147;;27071:213;27189:2;27174:18;;27203:71;27178:9;27247:6;27203:71;;27291:324;27437:2;27422:18;;27451:71;27426:9;27495:6;27451:71;;;27533:72;27601:2;27590:9;27586:18;27577:6;27533:72;;27622:883;27908:3;27893:19;;27923:71;27897:9;27967:6;27923:71;;;28005:72;28073:2;28062:9;28058:18;28049:6;28005:72;;;28088;28156:2;28145:9;28141:18;28132:6;28088:72;;;28171;28239:2;28228:9;28224:18;28215:6;28171:72;;;28254:73;28322:3;28311:9;28307:19;28298:6;28254:73;;;28338;28406:3;28395:9;28391:19;28382:6;28338:73;;;28422;28490:3;28479:9;28475:19;28466:6;28422:73;;;27879:626;;;;;;;;;;;28512:547;28714:3;28699:19;;28729:71;28703:9;28773:6;28729:71;;;28811:72;28879:2;28868:9;28864:18;28855:6;28811:72;;;28894;28962:2;28951:9;28947:18;28938:6;28894:72;;;28977;29045:2;29034:9;29030:18;29021:6;28977:72;;;28685:374;;;;;;;;29066:435;29240:2;29225:18;;29254:71;29229:9;29298:6;29254:71;;;29336:72;29404:2;29393:9;29389:18;29380:6;29336:72;;;29419;29487:2;29476:9;29472:18;29463:6;29419:72;;29508:547;29710:3;29695:19;;29725:71;29699:9;29769:6;29725:71;;;29807:72;29875:2;29864:9;29860:18;29851:6;29807:72;;;29890;29958:2;29947:9;29943:18;29934:6;29890:72;;30062:659;30292:3;30277:19;;30307:71;30281:9;30351:6;30307:71;;;30389:72;30457:2;30446:9;30442:18;30433:6;30389:72;;;30472;30540:2;30529:9;30525:18;30516:6;30472:72;;;30555;30623:2;30612:9;30608:18;30599:6;30555:72;;;30638:73;30706:3;30695:9;30691:19;30682:6;30638:73;;30728:324;30874:2;30859:18;;30888:71;30863:9;30932:6;30888:71;;;30970:72;31038:2;31027:9;31023:18;31014:6;30970:72;;31059:435;31233:2;31218:18;;31247:71;31222:9;31291:6;31247:71;;;31329:72;31397:2;31386:9;31382:18;31373:6;31329:72;;31501:547;31703:3;31688:19;;31718:71;31692:9;31762:6;31718:71;;;31800:72;31868:2;31857:9;31853:18;31844:6;31800:72;;32055:477;32281:2;32295:47;;;32266:18;;32356:166;32266:18;32508:6;32356:166;;32539:201;32651:2;32636:18;;32665:65;32640:9;32703:6;32665:65;;32747:983;33055:3;33040:19;;33070:71;33044:9;33114:6;33070:71;;;33152:66;33214:2;33203:9;33199:18;33190:6;33152:66;;;33229:72;33297:2;33286:9;33282:18;33273:6;33229:72;;;33312;33380:2;33369:9;33365:18;33356:6;33312:72;;;33395:73;33463:3;33452:9;33448:19;33439:6;33395:73;;;33479;33547:3;33536:9;33532:19;33523:6;33479:73;;;33563;33631:3;33620:9;33616:19;33607:6;33563:73;;;33647;33715:3;33704:9;33700:19;33691:6;33647:73;;;33026:704;;;;;;;;;;;;33737:1435;34159:3;34144:19;;34174:71;34148:9;34218:6;34174:71;;;34256:72;34324:2;34313:9;34309:18;34300:6;34256:72;;;34339;34407:2;34396:9;34392:18;34383:6;34339:72;;;34422:66;34484:2;34473:9;34469:18;34460:6;34422:66;;;34499:73;34567:3;34556:9;34552:19;34543:6;34499:73;;;34583;34651:3;34640:9;34636:19;34627:6;34583:73;;;34667;34735:3;34724:9;34720:19;34711:6;34667:73;;;34751;34819:3;34808:9;34804:19;34795:6;34751:73;;;34835;34903:3;34892:9;34888:19;34879:6;34835:73;;;34919;34987:3;34976:9;34972:19;34963:6;34919:73;;;35003:74;35072:3;35061:9;35057:19;35047:7;35003:74;;;35088;35157:3;35146:9;35142:19;35132:7;35088:74;;;34130:1042;;;;;;;;;;;;;;;;35179:435;35353:2;35338:18;;35367:71;35342:9;35411:6;35367:71;;35621:255;35760:2;35745:18;;35774:92;35749:9;35839:6;35774:92;;35883:301;36021:2;36035:47;;;36006:18;;36096:78;36006:18;36160:6;36096:78;;36191:407;36382:2;36396:47;;;36367:18;;36457:131;36367:18;36457:131;;36605:407;36796:2;36810:47;;;36781:18;;36871:131;36781:18;36871:131;;37019:407;37210:2;37224:47;;;37195:18;;37285:131;37195:18;37285:131;;37433:407;37624:2;37638:47;;;37609:18;;37699:131;37609:18;37699:131;;37847:407;38038:2;38052:47;;;38023:18;;38113:131;38023:18;38113:131;;38261:407;38452:2;38466:47;;;38437:18;;38527:131;38437:18;38527:131;;38675:407;38866:2;38880:47;;;38851:18;;38941:131;38851:18;38941:131;;39089:407;39280:2;39294:47;;;39265:18;;39355:131;39265:18;39355:131;;39503:407;39694:2;39708:47;;;39679:18;;39769:131;39679:18;39769:131;;39917:407;40108:2;40122:47;;;40093:18;;40183:131;40093:18;40183:131;;40331:407;40522:2;40536:47;;;40507:18;;40597:131;40507:18;40597:131;;40745:407;40936:2;40950:47;;;40921:18;;41011:131;40921:18;41011:131;;41159:407;41350:2;41364:47;;;41335:18;;41425:131;41335:18;41425:131;;41573:407;41764:2;41778:47;;;41749:18;;41839:131;41749:18;41839:131;;41987:407;42178:2;42192:47;;;42163:18;;42253:131;42163:18;42253:131;;42401:407;42592:2;42606:47;;;42577:18;;42667:131;42577:18;42667:131;;42815:407;43006:2;43020:47;;;42991:18;;43081:131;42991:18;43081:131;;43229:407;43420:2;43434:47;;;43405:18;;43495:131;43405:18;43495:131;;43643:407;43834:2;43848:47;;;43819:18;;43909:131;43819:18;43909:131;;44057:407;44248:2;44262:47;;;44233:18;;44323:131;44233:18;44323:131;;44471:407;44662:2;44676:47;;;44647:18;;44737:131;44647:18;44737:131;;44885:407;45076:2;45090:47;;;45061:18;;45151:131;45061:18;45151:131;;45299:407;45490:2;45504:47;;;45475:18;;45565:131;45475:18;45565:131;;45713:407;45904:2;45918:47;;;45889:18;;45979:131;45889:18;45979:131;;46127:407;46318:2;46332:47;;;46303:18;;46393:131;46303:18;46393:131;;46541:407;46732:2;46746:47;;;46717:18;;46807:131;46717:18;46807:131;;46955:407;47146:2;47160:47;;;47131:18;;47221:131;47131:18;47221:131;;47369:407;47560:2;47574:47;;;47545:18;;47635:131;47545:18;47635:131;;47783:407;47974:2;47988:47;;;47959:18;;48049:131;47959:18;48049:131;;48197:407;48388:2;48402:47;;;48373:18;;48463:131;48373:18;48463:131;;48611:407;48802:2;48816:47;;;48787:18;;48877:131;48787:18;48877:131;;49025:346;49209:3;49194:19;;49224:137;49198:9;49334:6;49224:137;;49378:213;49496:2;49481:18;;49510:71;49485:9;49554:6;49510:71;;50040:659;50270:3;50255:19;;50285:71;50259:9;50329:6;50285:71;;;50367:72;50435:2;50424:9;50420:18;50411:6;50367:72;;50706:771;50964:3;50949:19;;50979:71;50953:9;51023:6;50979:71;;;51061:72;51129:2;51118:9;51114:18;51105:6;51061:72;;;51144;51212:2;51201:9;51197:18;51188:6;51144:72;;;51227;51295:2;51284:9;51280:18;51271:6;51227:72;;;51310:73;51378:3;51367:9;51363:19;51354:6;51310:73;;;51394;51462:3;51451:9;51447:19;51438:6;51394:73;;;50935:542;;;;;;;;;;51484:180;51637:4;51628:14;;51585:79;51671:166;51803:12;;51774:63;52246:207;52393:19;;;52442:4;52433:14;;52386:67;52462:144;52597:3;52575:31;-1:-1;52575:31;52786:91;;52848:24;52866:5;52848:24;;52884:85;52950:13;52943:21;;52926:43;52976:72;53038:5;53021:27;53055:144;-1:-1;;;;;;53116:78;;53099:100;53206:121;-1:-1;;;;;53268:54;;53251:76;53413:163;;53513:58;53565:5;53513:58;;53720:268;53785:1;53792:101;53806:6;53803:1;53800:13;53792:101;;;53873:11;;;53867:18;53854:11;;;53847:39;53828:2;53821:10;53792:101;;;53908:6;53905:1;53902:13;53899:2;;;-1:-1;;53973:1;53955:16;;53948:27;53769:219;53996:97;54084:2;54064:14;-1:-1;;54060:28;;54044:49;54101:117;54170:24;54188:5;54170:24;;;54163:5;54160:35;54150:2;;54209:1;54206;54199:12;54225:111;54291:21;54306:5;54291:21;;54343:117;54412:24;54430:5;54412:24;;54467:115;54535:23;54552:5;54535:23;"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "depositCollateral(bytes32,uint256)": "dea9b464",
              "extendLoanDuration(bytes32,uint256,bool,bytes)": "cfc85c06",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "getActiveLoans(uint256,uint256,bool)": "60857c2c",
              "getLenderInterestData(address,address)": "d1979fb0",
              "getLoan(bytes32)": "8932f5f7",
              "getLoanInterestData(bytes32)": "9b16cd87",
              "getUserLoans(address,uint256,uint256,uint256,bool,bool)": "02a3fe64",
              "initialize(address)": "c4d66de8",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "reduceLoanDuration(bytes32,address,uint256)": "122f0e3a",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "withdrawAccruedInterest(address)": "e81fefa0",
              "withdrawCollateral(bytes32,address,uint256)": "db35400d",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "constructor": "Empty public constructor.",
              "depositCollateral(bytes32,uint256)": {
                "notice": "Increase the margin of a position by depositing additional collateral."
              },
              "extendLoanDuration(bytes32,uint256,bool,bytes)": {
                "notice": "Extend the loan duration by as much time as depositAmount can buy."
              },
              "getActiveLoans(uint256,uint256,bool)": {
                "notice": "Get all active loans."
              },
              "getLenderInterestData(address,address)": {
                "notice": "Get current lender interest data totals for all loans  with a specific oracle and interest token."
              },
              "getLoan(bytes32)": {
                "notice": "Get one loan data structure by matching ID.\t * Wrapper to internal _getLoan call."
              },
              "getLoanInterestData(bytes32)": {
                "notice": "Get current interest data for a loan."
              },
              "getUserLoans(address,uint256,uint256,uint256,bool,bool)": {
                "notice": "Get all user loans.\t * Only returns data for loans that are active."
              },
              "initialize(address)": {
                "notice": "Set initial values of proxy targets."
              },
              "reduceLoanDuration(bytes32,address,uint256)": {
                "notice": "Reduce the loan duration by withdrawing from the deposited interest."
              },
              "withdrawAccruedInterest(address)": {
                "notice": "Withdraw accrued loan interest."
              },
              "withdrawCollateral(bytes32,address,uint256)": {
                "notice": "Withdraw from the collateral. This reduces the margin of a position."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains functions to query loan data and to modify its status by withdrawing or depositing collateral."
          }
        }
      },
      "contracts/modules/LoanOpenings.sol": {
        "LoanOpenings": {
          "abi": [
            {
              "inputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newPrincipal",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newCollateral",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestDuration",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "collateralToLoanRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentMargin",
                  "type": "uint256"
                }
              ],
              "name": "Borrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "delegated",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "isActive",
                  "type": "bool"
                }
              ],
              "name": "DelegatedManagerSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnRewardFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "ExternalSwap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "LoanSwap",
              "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": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayBorrowingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "interestToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "effectiveInterest",
                  "type": "uint256"
                }
              ],
              "name": "PayInterestTransfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayLendingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "positionSize",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "borrowedAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "settlementDate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "entryPrice",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "entryLeverage",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentLeverage",
                  "type": "uint256"
                }
              ],
              "name": "Trade",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultWithdraw",
              "type": "event"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "isTorqueLoan",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "initialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[4]",
                  "name": "sentAddresses",
                  "type": "address[4]"
                },
                {
                  "internalType": "uint256[5]",
                  "name": "sentValues",
                  "type": "uint256[5]"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "borrowOrTradeFromPool",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "newPrincipal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "newCollateral",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "marginAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "isTorqueLoan",
                  "type": "bool"
                }
              ],
              "name": "getBorrowAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "newPrincipal",
                  "type": "uint256"
                }
              ],
              "name": "getEstimatedMarginExposure",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "newPrincipal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "marginAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "isTorqueLoan",
                  "type": "bool"
                }
              ],
              "name": "getRequiredCollateral",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "collateralAmountRequired",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "delegated",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "toggle",
                  "type": "bool"
                }
              ],
              "name": "setDelegatedManager",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "borrowOrTradeFromPool(bytes32,bytes32,bool,uint256,address[4],uint256[5],bytes)": {
                "details": "Note: Only callable by loan pools (iTokens). Wrapper to _borrowOrTrade internal function.",
                "params": {
                  "initialMargin": "The initial amount of margin.",
                  "isTorqueLoan": "Whether the loan is a Torque loan.",
                  "loanDataBytes": "The payload for the call. These loan DataBytes are  additional loan data (not in use for token swaps).",
                  "loanId": "The ID of the loan. If 0, start a new loan.",
                  "loanParamsId": "The ID of the loan parameters.",
                  "sentAddresses": "The addresses to send tokens: lender, borrower,  receiver and manager:    lender: must match loan if loanId provided.    borrower: must match loan if loanId provided.    receiver: receiver of funds (address(0) assumes borrower address).    manager: delegated manager of loan unless address(0).",
                  "sentValues": "The values to send:    newRate: New loan interest rate.    newPrincipal: New loan size (borrowAmount + any borrowed interest).    torqueInterest: New amount of interest to escrow for Torque loan (determines initial loan length).    loanTokenReceived: Total loanToken deposit (amount not sent to borrower in the case of Torque loans).    collateralTokenReceived: Total collateralToken deposit."
                },
                "return": "newPrincipal The new loan size.newCollateral The new collateral amount."
              },
              "getBorrowAmount(address,address,uint256,uint256,bool)": {
                "details": "Basically borrowAmount = collateral / marginAmount\t * Collateral is something that helps secure a loan. When you borrow money, you agree that your lender can take something and sell it to get their money back if you fail to repay the loan. That's the collateral.",
                "params": {
                  "collateralToken": "The collateral token instance address.",
                  "collateralTokenAmount": "The amount of collateral.",
                  "isTorqueLoan": "Whether the loan is a Torque loan.",
                  "loanToken": "The loan token instance address.",
                  "marginAmount": "The amount of margin of the trade."
                },
                "return": "borrowAmount The borrow amount."
              },
              "getEstimatedMarginExposure(address,address,uint256,uint256,uint256,uint256)": {
                "params": {
                  "collateralToken": "The collateral token instance address.",
                  "collateralTokenSent": "The amount of collateral tokens sent.",
                  "interestRate": "The interest rate. Percentage w/ 18 decimals.",
                  "loanToken": "The loan token instance address.",
                  "loanTokenSent": "The amount of loan tokens sent.",
                  "newPrincipal": "The updated amount of principal (current debt)."
                },
                "return": "The margin exposure."
              },
              "getRequiredCollateral(address,address,uint256,uint256,bool)": {
                "details": "Calls internal _getRequiredCollateral and add fees.",
                "params": {
                  "collateralToken": "The collateral token instance address.",
                  "isTorqueLoan": "Whether the loan is a Torque loan.",
                  "loanToken": "The loan token instance address.",
                  "marginAmount": "The amount of margin of the trade.",
                  "newPrincipal": "The updated amount of principal (current debt)."
                },
                "return": "collateralAmountRequired The required collateral."
              },
              "initialize(address)": {
                "params": {
                  "target": "The address of the target contract."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setDelegatedManager(bytes32,address,bool)": {
                "details": "Wrapper for _setDelegatedManager internal function.",
                "params": {
                  "delegated": "The address of the delegated manager.",
                  "loanId": "The ID of the loan. If 0, start a new loan.",
                  "toggle": "The flag true/false for the delegated manager."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Loan Openings contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d00000603955348015620000a657600080fd5b506000620000bc6001600160e01b036200011016565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000114565b3390565b614de880620001246000396000f3fe6080604052600436106103815760003560e01c80638dc48ba5116101d1578063cb6eacd111610102578063e8f62764116100a0578063f589a3e71161006f578063f589a3e714610a05578063f6ddc8b314610a1a578063f706b1f214610a2f578063f851a44014610a4457610381565b8063e8f62764146109a6578063edab119f146109bb578063f0e085f5146109d0578063f2fde38b146109e557610381565b8063d473c2da116100dc578063d473c2da14610931578063d485045e14610946578063d67f707714610966578063e762319f1461098657610381565b8063cb6eacd1146108c8578063cd5d808d146108fc578063d288208c1461091c57610381565b8063b30643d91161016f578063ba4861e911610149578063ba4861e91461083b578063bdee453c14610850578063c4a9081514610870578063c4d66de8146108a857610381565b8063b30643d9146107e6578063b7e1524114610806578063b9cffa3e1461082657610381565b8063959083d3116101ab578063959083d314610785578063acc043481461079a578063ae0a8530146107af578063afe84009146107c457610381565b80638dc48ba5146107305780638f32d59b1461075057806392d894f81461076557610381565b80634203e395116102b657806368c4ac261161025457806378d849ed1161022357806378d849ed146106dc5780637a8faeb8146106f15780638456cb59146107065780638da5cb5b1461071b57610381565b806368c4ac26146106725780636e663730146106925780637420ca3e146106b2578063742e6798146106c757610381565b8063569fc1fb11610290578063569fc1fb146105dc578063574442cc1461060b578063585314cf1461062057806362fff3f61461064157610381565b80634203e395146105925780634699f846146105b25780634f28cac2146105c757610381565b80632a324027116103235780633432423c116102fd5780633432423c146105125780633452d2d4146105325780633fca506e146105525780634115a2b61461057257610381565b80632a324027146104c65780632f470764146104db57806333d8991f146104f057610381565b80631b7bde741161035f5780631b7bde741461042c578063218b39c61461045957806324cc57491461047957806325decac0146104a657610381565b8063065d810f146103af5780630676c1b7146103ea57806317548b791461040c575b34801561038d57600080fd5b5060405162461bcd60e51b81526004016103a690614b91565b60405180910390fd5b3480156103bb57600080fd5b506103cf6103ca366004613c4a565b610a59565b6040516103e196959493929190614c86565b60405180910390f35b3480156103f657600080fd5b506103ff610a99565b6040516103e1919061462e565b34801561041857600080fd5b506103ff610427366004613ddd565b610aa8565b34801561043857600080fd5b5061044c610447366004613b14565b610ac3565b6040516103e19190614c41565b34801561046557600080fd5b506103ff610474366004613af6565b610ae0565b34801561048557600080fd5b50610499610494366004613af6565b610afb565b6040516103e191906148ee565b3480156104b257600080fd5b5061044c6104c1366004613b4e565b610b10565b3480156104d257600080fd5b5061044c610b6b565b3480156104e757600080fd5b5061044c610b71565b3480156104fc57600080fd5b5061051061050b366004613cd5565b610b77565b005b34801561051e57600080fd5b506103cf61052d366004613c4a565b610be4565b34801561053e57600080fd5b5061044c61054d366004613af6565b610c24565b34801561055e57600080fd5b5061044c61056d366004613af6565b610c36565b34801561057e57600080fd5b5061049961058d366004613cb6565b610c48565b34801561059e57600080fd5b5061044c6105ad366004613af6565b610c68565b3480156105be57600080fd5b5061044c610c7a565b3480156105d357600080fd5b5061044c610c80565b3480156105e857600080fd5b506105fc6105f7366004613c98565b610c86565b6040516103e193929190614c5d565b34801561061757600080fd5b5061044c610ca7565b61063361062e366004613d22565b610cad565b6040516103e1929190614c4f565b34801561064d57600080fd5b5061066161065c366004613b14565b610eee565b6040516103e1959493929190614c6b565b34801561067e57600080fd5b5061049961068d366004613af6565b610f28565b34801561069e57600080fd5b506103ff6106ad366004613af6565b610f3d565b3480156106be57600080fd5b506103ff610f58565b3480156106d357600080fd5b5061044c610f67565b3480156106e857600080fd5b506103ff610f6d565b3480156106fd57600080fd5b5061044c610f7c565b34801561071257600080fd5b50610499610f82565b34801561072757600080fd5b506103ff610f8b565b34801561073c57600080fd5b506103ff61074b366004613af6565b610f9a565b34801561075c57600080fd5b50610499610fb5565b34801561077157600080fd5b5061044c610780366004613af6565b610fdb565b34801561079157600080fd5b5061044c610fed565b3480156107a657600080fd5b5061044c610ff3565b3480156107bb57600080fd5b5061044c610ff9565b3480156107d057600080fd5b506107d9610fff565b6040516103e191906149f2565b3480156107f257600080fd5b5061044c610801366004613af6565b61100e565b34801561081257600080fd5b5061044c610821366004613af6565b611020565b34801561083257600080fd5b506103ff611032565b34801561084757600080fd5b506103ff611041565b34801561085c57600080fd5b5061044c61086b366004613af6565b611050565b34801561087c57600080fd5b5061089061088b366004613c98565b611062565b6040516103e19c9b9a9998979695949392919061493f565b3480156108b457600080fd5b506105106108c3366004613af6565b6110d4565b3480156108d457600080fd5b506108e86108e3366004613c98565b6111d7565b6040516103e19897969594939291906148fc565b34801561090857600080fd5b5061044c610917366004613b14565b611229565b34801561092857600080fd5b506103ff611246565b34801561093d57600080fd5b5061044c611255565b34801561095257600080fd5b5061044c610961366004613af6565b61125b565b34801561097257600080fd5b5061044c610981366004613bc3565b61126d565b34801561099257600080fd5b5061044c6109a1366004613b4e565b61133b565b3480156109b257600080fd5b506103ff6114af565b3480156109c757600080fd5b5061044c6114be565b3480156109dc57600080fd5b5061044c6114c4565b3480156109f157600080fd5b50610510610a00366004613af6565b6114ca565b348015610a1157600080fd5b5061044c6114fa565b348015610a2657600080fd5b5061044c611500565b348015610a3b57600080fd5b506103ff611506565b348015610a5057600080fd5b506103ff611515565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60008215610b6257610b258686868686611524565b9050600082610b3c57610b378261165d565b610b45565b610b4582611693565b90508015610b6057610b5d828263ffffffff6116b716565b91505b505b95945050505050565b60185481565b601f5481565b603d5460ff1615610b9a5760405162461bcd60e51b81526004016103a690614a21565b6000838152600660205260409020600a01546001600160a01b03163314610bd35760405162461bcd60e51b81526004016103a690614b51565b610bdf833384846116e3565b505050565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600080600160005414610cd25760405162461bcd60e51b81526004016103a690614bc1565b6002600055603d5460ff1615610cfa5760405162461bcd60e51b81526004016103a690614a21565b341580610d0657508215155b610d225760405162461bcd60e51b81526004016103a690614bf1565b336000908152602260205260409020546001600160a01b0316610d575760405162461bcd60e51b81526004016103a690614b31565b610d5f6139a1565b5060008a815260076020908152604091829020825161010080820185528254808352600184015460ff811615159584019590955293046001600160a01b039081169482019490945260028201548416606082015260038201549093166080840152600481015460a0840152600581015460c08401526006015460e0830152610df95760405162461bcd60e51b81526004016103a690614b81565b60608101516080820151600091610e169160208a01358c8e611524565b905080610e355760405162461bcd60e51b81526004016103a690614b21565b610ed6828c8c848d8d6004806020026040519081016040528092919082600460200280828437600092019190915250506040805160a081810190925291508f906005908390839080828437600081840152601f19601f8201169050808301925050505050508d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061175892505050565b6001600055909d909c509a5050505050505050505050565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610fcc611a7f565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6110dc610fb5565b6110f85760405162461bcd60e51b81526004016103a690614b51565b63585314cf60e01b600081905260056020527f3df489372d475309a1c47de60a9f2a7f9fd0740ddf05bda875d2be32c6722031546001600160a01b0316906111409083611a83565b6111516333d8991f60e01b83611a83565b61116263d67f707760e01b83611a83565b61117262977b2b60e61b83611a83565b61118363e762319f60e01b83611a83565b6b4c6f616e4f70656e696e677360a01b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b60006224ea008161129e6907baab4146b63dd00000611292868863ffffffff611afd16565b9063ffffffff611b3716565b905060006112b962015180611292858563ffffffff611afd16565b905060006112cd898363ffffffff611b7916565b905060006112da8261165d565b905080156112f5576112f2828263ffffffff611b7916565b91505b60006113028d8d85611bbb565b9050806113185760009650505050505050611331565b6113288a8263ffffffff6116b716565b96505050505050505b9695505050505050565b60008215610b62578115611365576113628368056bc75e2d6310000063ffffffff6116b716565b92505b8360008361137b576113768261165d565b611384565b61138482611693565b9050801561139f5761139c828263ffffffff611b7916565b91505b866001600160a01b0316886001600160a01b031614156113dd576113d6856112928468056bc75e2d6310000063ffffffff611afd16565b92506114a4565b600254604051630a7549df60e21b815260009182916001600160a01b03909116906329d5277c90611414908c908e9060040161463c565b604080518083038186803b15801561142b57600080fd5b505afa15801561143f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114639190810190613e19565b91509150806000146114a15761149e816112928981866114928a68056bc75e2d6310000063ffffffff611afd16565b9063ffffffff611afd16565b94505b50505b505095945050505050565b6014546001600160a01b031681565b601b5481565b60285481565b6114d2610fb5565b6114ee5760405162461bcd60e51b81526004016103a690614b51565b6114f781611c50565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6000846001600160a01b0316866001600160a01b031614156115645761155d68056bc75e2d63100000611292868663ffffffff611afd16565b905061161f565b600254604051630a7549df60e21b815260009182916001600160a01b03909116906329d5277c9061159b908a908c9060040161463c565b604080518083038186803b1580156115b257600080fd5b505afa1580156115c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115ea9190810190613e19565b915091508160001461161c5761161968056bc75e2d631000006112928761149286838c8863ffffffff611afd16565b92505b50505b81801561162b57508015155b15610b625761133181611651856112928368056bc75e2d6310000063ffffffff611afd16565b9063ffffffff6116b716565b600061168d68056bc75e2d6310000061168160185485611afd90919063ffffffff16565b9063ffffffff611cd216565b92915050565b600061168d68056bc75e2d63100000611681601b5485611afd90919063ffffffff16565b6000828201838110156116dc5760405162461bcd60e51b81526004016103a690614a71565b9392505050565b6000848152600a602090815260408083206001600160a01b038681168086529190935292819020805460ff1916851515179055519085169086907f0eef4f90457a741c97d76fcf13fa231fefdcc7649bdb3cb49157c37111c984339061174a9086906148ee565b60405180910390a450505050565b60008089606001516001600160a01b03168a608001516001600160a01b031614156117955760405162461bcd60e51b81526004016103a690614a91565b8960a001518610156117b95760405162461bcd60e51b81526004016103a690614c21565b60e08a01511515806117ce5750604084015115155b6117ea5760405162461bcd60e51b81526004016103a690614a41565b6000600660006117fd8d8d8b8b8b611d14565b81526020019081526020016000209050600061183b8c838860006005811061182157fe5b602002015189600160200201518a6002602002015161210f565b9050611856818760035b60200201519063ffffffff611b7916565b606087015289156118d8576060860151156118835760405162461bcd60e51b81526004016103a690614af1565b60006118958760046020020151611693565b60808e015160608f01519192509082156118d0576118be8a60016020020151865484848761232b565b6118ca838a6004611845565b60808a01525b505050611931565b60006119098c8e606001518f608001518b6001600481106118f557fe5b602002015160608c0151600080808e6123ca565b60608a015250905061192a818860045b60200201519063ffffffff6116b716565b6080880152505b60408051610180810182528354815260018401546020820152600284015491810191909152600383015460ff16151560608201526004808401546080830152600584015460a0830152600684015460c0830152600784015460e083015260088401546101008301526009840154610120830152600a8401546001600160a01b03908116610140840152600b850154166101608301526119db918e918b908a9060200201518d612528565b6119f75760405162461bcd60e51b81526004016103a690614b61565b60808601516005830154611a0a916116b7565b60058301558915611a34576007820154611a2a904263ffffffff611b7916565b6040870152611a54565b611a4e6f4b3b4ca85a86c47a098a22400000000089611b37565b60408701525b611a618c8389898e61262e565b50505060208301516080909301519299929850919650505050505050565b3390565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b03831690811790915515611ade57611ad8600d6001600160e01b0319841663ffffffff6128fb16565b50611af9565b610bdf600d6001600160e01b0319841663ffffffff61294316565b5050565b600082611b0c5750600061168d565b82820282848281611b1957fe5b04146116dc5760405162461bcd60e51b81526004016103a690614b41565b60006116dc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a04565b60006116dc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a3b565b60035460048054604051633f24927360e21b81526000936001600160a01b039081169363fc9249cc93611bf8938a938a938a93909116910161471c565b60206040518083038186803b158015611c1057600080fd5b505afa158015611c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c489190810190613dfb565b949350505050565b6001600160a01b038116611c765760405162461bcd60e51b81526004016103a690614a51565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006116dc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a67565b60008560200151611d375760405162461bcd60e51b81526004016103a690614bb1565b8251602080850151606086015191850151909190611d536139e5565b89611eaa576001600160a01b0384166000908152602a60209081526040918290208054600101908190558d519251611d929392899289929091016145da565b60408051601f19818403018152918152815160209283012060008181526006909352912054909a5015611dd75760405162461bcd60e51b81526004016103a690614ae1565b5060408051610180810182528a81528b5160208201526000918101829052600160608201526080810183905260a081018290524260c082015260e0810182905261010081018a90526101208101919091526001600160a01b038085166101408301528516610160820152611e52600f8b63ffffffff6128fb16565b506001600160a01b0385166000908152601160205260409020611e7b908b63ffffffff6128fb16565b506001600160a01b0384166000908152601260205260409020611ea4908b63ffffffff6128fb16565b5061202b565b5060008981526006602081815260409283902083516101808101855281548152600182015492810192909252600281015493820193909352600383015460ff161580156060830181905260048501546080840152600585015460a08401529284015460c0830152600784015460e083015260088401546101008301526009840154610120830152600a8401546001600160a01b03908116610140840152600b9094015490931661016082015291611f6457508060e0015142105b611f805760405162461bcd60e51b81526004016103a690614b01565b836001600160a01b03168161014001516001600160a01b031614611fb65760405162461bcd60e51b81526004016103a690614a61565b846001600160a01b03168161016001516001600160a01b031614611fec5760405162461bcd60e51b81526004016103a690614ac1565b8a516020820151146120105760405162461bcd60e51b81526004016103a690614a11565b6080810151612025908363ffffffff6116b716565b60808201525b6001600160a01b03831615612047576120478a858560016116e3565b60008a81526006602081815260409283902084518155908401516001820155918301516002830155606083015160038301805460ff19169115159190911790556080830151600483015560a0830151600583015560c08301519082015560e0820151600782015561010082015160088201556101208201516009820155610140820151600a820180546001600160a01b03199081166001600160a01b039384161790915561016090930151600b90920180549093169116179055509698975050505050505050565b600b8401546060860151600091612131916001600160a01b0390911690612ab1565b84546000818152600c60209081526040808320600b808b01546001600160a01b03908116865290845282852060608d0180518316875294529190932060e08b0151925160808c0151600a8c0154959692956121929488949392911642612b8f565b6000811580156121a55750600789015415155b156121d3576121d0620151806112928660000154611492428e60070154611b7990919063ffffffff16565b90505b60006121f36907baab4146b63dd000006112928a8c63ffffffff611afd16565b8554909150612208908263ffffffff6116b716565b8555600184015461221f908263ffffffff6116b716565b60018501558261228e57845461224c90429061165190611292620151806114928d8963ffffffff6116b716565b60078b01819055612263904263ffffffff611b7916565b9250610e1083116122865760405162461bcd60e51b81526004016103a690614a81565b8695506122d2565b60078a01546122ad576122a7428463ffffffff6116b716565b60078b01555b6122cf6201518061129283611492428f60070154611b7990919063ffffffff16565b95505b60018501546122e7908763ffffffff6116b716565b600186015583546122fe908963ffffffff6116b716565b84556002840154612315908763ffffffff6116b716565b8460020181905550505050505095945050505050565b80156123c3576001600160a01b0383166000908152601c602052604090205461235a908263ffffffff6116b716565b6001600160a01b038085166000818152601c6020526040908190209390935591518692918816907ffb6c38ae4fdd498b3a5003f02ca4ca5340dfedb36b1b100c679eb60633b2c0a7906123ae908690614c41565b60405180910390a46123c38585858585612bdd565b5050505050565b6040805160a0810182526001600160a01b03808b16825289811660208084019190915230838501819052606080850191909152918a1660808401528351918201845288825281018790529182018590526000918291829161242f91908e888886612f28565b909350915061243e8b8361314a565b600254602754604051631e2c62d360e01b81526001600160a01b0390921691631e2c62d391612477918f918f9188918a91600401614779565b60206040518083038186803b15801561248f57600080fd5b505afa1580156124a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124c79190810190613dfb565b9050896001600160a01b03168b6001600160a01b03168d7fb4eb3c9b62efcce7021cba5fd9cd0c44df91c2272806ccc5e57df7c912e8d7168c8688604051612511939291906148d3565b60405180910390a499509950999650505050505050565b600061255068056bc75e2d631000006112928468055005f0c61448000063ffffffff611afd16565b9150818310156126225760a08501511561261a5760025460608701516080808901519088015160a089015160405163f80b25fb60e01b81526000956001600160a01b03169463f80b25fb946125ad94919390928c90600401614779565b60206040518083038186803b1580156125c557600080fd5b505afa1580156125d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125fd9190810190613dfb565b905082612610858363ffffffff6116b716565b1015915050610b62565b506000610b62565b50600195945050505050565b6002546060860151608087015160048088015460058901546040516317f8680960e11b815260009687966001600160a01b0390911695632ff0d01295612678959294919301614751565b604080518083038186803b15801561268f57600080fd5b505afa1580156126a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126c79190810190613e19565b915091508660c0015182116126ee5760405162461bcd60e51b81526004016103a690614b71565b428660060154141561284e576002546060880151608089015160405163524efd4b60e01b81526000936001600160a01b03169263524efd4b926127339260040161463c565b60206040518083038186803b15801561274b57600080fd5b505afa15801561275f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127839190810190613dfb565b60025460808a015160608b015160405163524efd4b60e01b81529394506000936001600160a01b039093169263524efd4b926127c392909160040161463c565b60206040518083038186803b1580156127db57600080fd5b505afa1580156127ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128139190810190613dfb565b90506000612827838363ffffffff611afd16565b90508561284357606087015161283e908290611b37565b612845565b835b60098a01555050505b60408051610180810182528754815260018801546020820152600288015491810191909152600387015460ff161515606082015260048701546080820152600587015460a0820152600687015460c0820152600787015460e082015260088701546101008201526009870154610120820152600a8701546001600160a01b03908116610140830152600b880154166101608201526128f29088908787858789613218565b50505050505050565b60006129078383613365565b61293b575060018083018054808301808355600092835260208084209092018590558483529085905260409091205561168d565b50600061168d565b600061294f8383613365565b1561293b57600082815260208490526040902054600184015460001991820191018082146129c757600085600101828154811061298857fe5b90600052602060002001549050808660010184815481106129a557fe5b6000918252602080832090910192909255918252869052604090206001830190555b600084815260208690526040812055600185018054806129e357fe5b6001900381819060005260206000200160009055905560019250505061168d565b60008183612a255760405162461bcd60e51b81526004016103a69190614a00565b506000838581612a3157fe5b0495945050505050565b60008184841115612a5f5760405162461bcd60e51b81526004016103a69190614a00565b505050900390565b60008183612a885760405162461bcd60e51b81526004016103a69190614a00565b5083612a96575060006116dc565b6000836001860381612aa457fe5b0460010195945050505050565b6001600160a01b038083166000908152600b602090815260408083209385168352929052908120600181015490919015801590612af15750600482015415155b15612b8257612b1c620151806112928460010154611492866004015442611b7990919063ffffffff16565b4260048401556002830154909150811115612b38575060028101545b8015612b7d576003820154612b53908263ffffffff6116b716565b60038301556002820154612b6d908263ffffffff611b7916565b6002830155612b7d84848361337a565b612b89565b4260048301555b50505050565b6000612bc56a07259756a8d619980000006112926015546114928b600001546114928d6002015489611b7990919063ffffffff16565b60028801839055905080156128f2576128f283878787855b602f546002546001600160a01b038581166000908152603c602090815260408083208885168452909152812054909392919091169015612c40576001600160a01b038087166000908152603c602090815260408083209389168352929052205491505b6037546000906060906001600160a01b038085169163d138f9a160e01b918b9116612c7e68056bc75e2d631000006112928c8b63ffffffff611afd16565b604051602401612c90939291906146f4565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612cce9190614622565b600060405180830381855afa9150503d8060008114612d09576040519150601f19603f3d011682016040523d82523d6000602084013e612d0e565b606091505b50915091506001821415612d2457602081015194505b8415612f1c5760375460385460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612d609291169089906004016148b8565b602060405180830381600087803b158015612d7a57600080fd5b505af1158015612d8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612db29190810190613c7a565b50603854603f546040516000926001600160a01b031691612dd9918e918a916024016148d3565b60408051601f198184030181529181526020820180516001600160e01b0316630efe6a8b60e01b17905251612e0e9190614622565b6000604051808303816000865af19150503d8060008114612e4b576040519150601f19603f3d011682016040523d82523d6000602084013e612e50565b606091505b505090508015612ec757601f54612e6d908763ffffffff6116b716565b601f55603754603f546040518c926001600160a01b0390811692908f16917ff41c644671512f1cda76abfe6038e3d7d526c1377a5a8c692f81703901db215091612eba918b918d91614c5d565b60405180910390a4612f1a565b603754603f546040518c926001600160a01b0390811692908f16917f483f67ea49f76ac15e15bbad68b52788ca47d50aef1e4acfe95e5e307e71081291612f11918b918d91614c5d565b60405180910390a45b505b50505050505050505050565b84516000908190151580612f3f5750602087015115155b612f5b5760405162461bcd60e51b81526004016103a690614ba1565b6020870151612f6c57865160208801525b602087015187511115612f915760405162461bcd60e51b81526004016103a690614ad1565b60008060008761304b5760408a015161300d578515612fc257612fbb8a60005b602002015161341f565b9050612fd6565b612fd38a60005b602002015161165d565b90505b80156130085760808b01518b51612ff991908b908e60015b602002015185613443565b613005818b6000611845565b8a525b61304b565b85156130255761301e8a6002612fb1565b9050613033565b6130308a6002612fc9565b90505b801561304b57613045818b6002611919565b60408b01525b86511561306a5760405162461bcd60e51b81526004016103a690614bd1565b6130748b8b613593565b60408c015191945092506130c057895182146130a25760405162461bcd60e51b81526004016103a690614c11565b80156130bb576130b8828263ffffffff6116b716565b91505b61313a565b60208a01518211156130e45760405162461bcd60e51b81526004016103a690614ab1565b60408a01518310156131085760405162461bcd60e51b81526004016103a690614a31565b801561313a5760808b015160208c015161312791908b908e6000612fee565b613137838263ffffffff611b7916565b92505b5090999098509650505050505050565b6029548015610bdf57602d546000906001600160a01b03858116911614156131735750816131f8565b600254604051635967aa7560e11b81526001600160a01b039091169063b2cf54ea906131a590879087906004016148b8565b60206040518083038186803b1580156131bd57600080fd5b505afa1580156131d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131f59190810190613dfb565b90505b81811115612b895760405162461bcd60e51b81526004016103a690614b11565b801561329b5785518551602087015160608a015160808b01516001600160a01b0393841693909216917f7bd8cbb7ba34b33004f3deda0fd36c92fc0360acbd97843360037b467a538f909190896001602002015160808b01518b516040808e0151905161328e969594939291908e908e906147bb565b60405180910390a46128f2565b6132b56f4b3b4ca85a86c47a098a22400000000083611b37565b865190925085600060200201516001600160a01b031686600160200201516001600160a01b03167ff640c1cfe1a912a0b0152b5a542e5c2403142eed75b06cde526cee54b1580e5c8a608001518b606001518960046005811061331457fe5b60200201518a600160200201518b6000602002015160e08f01518d600360200201518e600260200201518d60405161335499989796959493929190614832565b60405180910390a450505050505050565b60009081526020919091526040902054151590565b600061339e68056bc75e2d6310000061129260155485611afd90919063ffffffff16565b90506133ab8484836136a5565b6133c583856133c0858563ffffffff611b7916565b613733565b6001600160a01b038085169084167f220e66e3e759e1382aa86cd8af5abca05ebf3ad564f223ae62d977678337272a613404858563ffffffff611b7916565b6040516134119190614c41565b60405180910390a350505050565b600061168d68056bc75e2d63100000611681603e5485611afd90919063ffffffff16565b80801561358b576001600160a01b0386811660009081526033602052604090205416156134f9576001600160a01b038087166000908152603360205260409020546134919116878684613796565b50506134f66134b868056bc75e2d6310000061129260395485611afd90919063ffffffff16565b6134ea6134dd68056bc75e2d6310000061129260205487611afd90919063ffffffff16565b849063ffffffff611b7916565b9063ffffffff611b7916565b90505b6001600160a01b038416600090815260196020526040902054613522908263ffffffff6116b716565b6001600160a01b03808616600081815260196020526040908190209390935591518792918916907fb23479169712c443e6b00fb0cec3506a5f5926f541df4243d313e11c8c5c71ed90613576908690614c41565b60405180910390a461358b8686868686612bdd565b505050505050565b815160208084015160408086015160608781015187519588015188850151945160009889989497630957ba1160e21b976135da979296919592949293919291602401614657565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260035491519092506000916001600160a01b03169061362c908490614622565b600060405180830381855af49150503d8060008114613667576040519150601f19603f3d011682016040523d82523d6000602084013e61366c565b606091505b50925090508061368e5760405162461bcd60e51b81526004016103a690614c01565b602082015193506040820151925050509250929050565b8015610bdf576001600160a01b0382166000908152601660205260409020546136d4908263ffffffff6116b716565b6001600160a01b0380841660008181526016602052604090819020939093559151908516907f40a75ae5f7a5336e75f7c7977e12c4b46a9ac0f30de01a2d5b6c1a4f4af6358790613726908590614c41565b60405180910390a3505050565b8015610bdf576137536001600160a01b038416838363ffffffff61382f16565b816001600160a01b0316836001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a1836040516137269190614c41565b6031546040516306a688ff60e11b815260009182916001600160a01b0390911690630d4d11fe906137d19089908990899089906004016146bf565b6040805180830381600087803b1580156137ea57600080fd5b505af11580156137fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506138229190810190613e19565b9097909650945050505050565b604051610bdf90849063a9059cbb60e01b9061385190869086906024016148b8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613895826001600160a01b0316613968565b6138b15760405162461bcd60e51b81526004016103a690614c31565b60006060836001600160a01b0316836040516138cd9190614622565b6000604051808303816000865af19150503d806000811461390a576040519150601f19603f3d011682016040523d82523d6000602084013e61390f565b606091505b5091509150816139315760405162461bcd60e51b81526004016103a690614aa1565b805115612b89578080602001905161394c9190810190613c7a565b612b895760405162461bcd60e51b81526004016103a690614be1565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611c48575050151592915050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915290565b803561168d81614d76565b806080810183101561168d57600080fd5b8060a0810183101561168d57600080fd5b803561168d81614d8a565b805161168d81614d8a565b803561168d81614d93565b803561168d81614d9c565b60008083601f840112613ab457600080fd5b50813567ffffffffffffffff811115613acc57600080fd5b602083019150836001820283011115613ae457600080fd5b9250929050565b805161168d81614d93565b600060208284031215613b0857600080fd5b6000611c488484613a49565b60008060408385031215613b2757600080fd5b6000613b338585613a49565b9250506020613b4485828601613a49565b9150509250929050565b600080600080600060a08688031215613b6657600080fd5b6000613b728888613a49565b9550506020613b8388828901613a49565b9450506040613b9488828901613a8c565b9350506060613ba588828901613a8c565b9250506080613bb688828901613a76565b9150509295509295909350565b60008060008060008060c08789031215613bdc57600080fd5b6000613be88989613a49565b9650506020613bf989828a01613a49565b9550506040613c0a89828a01613a8c565b9450506060613c1b89828a01613a8c565b9350506080613c2c89828a01613a8c565b92505060a0613c3d89828a01613a8c565b9150509295509295509295565b60008060408385031215613c5d57600080fd5b6000613c698585613a49565b9250506020613b4485828601613a8c565b600060208284031215613c8c57600080fd5b6000611c488484613a81565b600060208284031215613caa57600080fd5b6000611c488484613a8c565b60008060408385031215613cc957600080fd5b6000613b338585613a8c565b600080600060608486031215613cea57600080fd5b6000613cf68686613a8c565b9350506020613d0786828701613a49565b9250506040613d1886828701613a76565b9150509250925092565b6000806000806000806000806101c0898b031215613d3f57600080fd5b6000613d4b8b8b613a8c565b9850506020613d5c8b828c01613a8c565b9750506040613d6d8b828c01613a76565b9650506060613d7e8b828c01613a8c565b9550506080613d8f8b828c01613a54565b945050610100613da18b828c01613a65565b9350506101a089013567ffffffffffffffff811115613dbf57600080fd5b613dcb8b828c01613aa2565b92509250509295985092959890939650565b600060208284031215613def57600080fd5b6000611c488484613a97565b600060208284031215613e0d57600080fd5b6000611c488484613aeb565b60008060408385031215613e2c57600080fd5b6000613e388585613aeb565b9250506020613b4485828601613aeb565b613e5281614cf2565b82525050565b613e52613e6482614cf2565b614d55565b613e5281614cfd565b613e5281614d02565b613e52613e8782614d02565b614d02565b6000613e9782614ce0565b613ea18185614ce4565b9350613eb1818560208601614d29565b9290920192915050565b613e5281614d1e565b6000613ecf82614ce0565b613ed98185614ce9565b9350613ee9818560208601614d29565b613ef281614d66565b9093019392505050565b6000613f09601383614ce9565b720d8dec2dca0c2e4c2dae640dad2e6dac2e8c6d606b1b815260200192915050565b6000613f38600683614ce9565b6514185d5cd95960d21b815260200192915050565b6000613f5a601b83614ce9565b7f696e73756666696369656e742073776170206c69717569646974790000000000815260200192915050565b6000613f93601083614ce9565b6f1a5b9d985b1a59081a5b9d195c995cdd60821b815260200192915050565b6000613fbf602683614ce9565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000614007601183614ce9565b700c4dee4e4deeecae440dad2e6dac2e8c6d607b1b815260200192915050565b6000614034601b83614ce9565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061406d600e83614ce9565b6d1b1bd85b881d1bdbc81cda1bdc9d60921b815260200192915050565b6000614097601583614ce9565b740c6ded8d8c2e8cae4c2d85ed8dec2dc40dac2e8c6d605b1b815260200192915050565b60006140c8602083614ce9565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000614101601383614ce9565b72737761702066696c6c20746f6f206c6172676560681b815260200192915050565b6000614130600f83614ce9565b6e0d8cadcc8cae440dad2e6dac2e8c6d608b1b815260200192915050565b600061415b601c83614ce9565b7f736f75726365416d6f756e74206c6172676572207468616e206d617800000000815260200192915050565b6000614194600b83614ce9565b6a6c6f616e2065786973747360a81b815260200192915050565b60006141bb601283614ce9565b7139bab938363ab9903637b0b7103a37b5b2b760711b815260200192915050565b60006141e9600e83614ce9565b6d1b1bd85b881a185cc8195b99195960921b815260200192915050565b6000614213600e83614ce9565b6d7377617020746f6f206c6172676560901b815260200192915050565b600061423d600f83614ce9565b6e0636f6c6c61746572616c206973203608c1b815260200192915050565b6000614268600e83614ce9565b6d1b9bdd08185d5d1a1bdc9a5e995960921b815260200192915050565b6000614292602183614ce9565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006142d5600c83614ce9565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006142fd601783614ce9565b7f636f6c6c61746572616c20696e73756666696369656e74000000000000000000815260200192915050565b6000614336601283614ce9565b713ab73432b0b63a343c903837b9b4ba34b7b760711b815260200192915050565b6000614364601583614ce9565b746c6f616e506172616d73206e6f742065786973747360581b815260200192915050565b6000614395601483614ce9565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b60006143c5602e83614ce9565b7f6d696e206f72206d617820736f7572636520746f6b656e20616d6f756e74206e81526d1959591cc81d1bc81899481cd95d60921b602082015260400192915050565b6000614415601383614ce9565b721b1bd85b94185c985b5cc8191a5cd8589b1959606a1b815260200192915050565b6000614444600c83614ce9565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b600061446c600d83614ce9565b6c696e76616c696420737461746560981b815260200192915050565b6000614495602a83614ce9565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006144e1602183614ce9565b7f6c6f616e446174614279746573207265717569726564207769746820657468658152603960f91b602082015260400192915050565b6000614524600b83614ce9565b6a1cddd85c0819985a5b195960aa1b815260200192915050565b600061454b601683614ce9565b751cddd85c081d1bdbc81b185c99d9481d1bc8199a5b1b60521b815260200192915050565b600061457d601583614ce9565b74696e697469616c4d617267696e20746f6f206c6f7760581b815260200192915050565b60006145ae601f83614ce9565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b60006145e68287613e7b565b6020820191506145f68286613e58565b6014820191506146068285613e58565b6014820191506146168284613e7b565b50602001949350505050565b60006116dc8284613e8c565b6020810161168d8284613e49565b6040810161464a8285613e49565b6116dc6020830184613e49565b60e08101614665828a613e49565b6146726020830189613e49565b61467f6040830188613e49565b61468c6060830187613e49565b6146996080830186613e72565b6146a660a0830185613e72565b6146b360c0830184613e72565b98975050505050505050565b608081016146cd8287613e49565b6146da6020830186613e49565b6146e76040830185613e49565b610b626060830184613e72565b606081016147028286613e49565b61470f6020830185613e49565b611c486040830184613e72565b6080810161472a8287613e49565b6147376020830186613e49565b6147446040830185613e72565b610b626060830184613e49565b6080810161475f8287613e49565b61476c6020830186613e49565b6146e76040830185613e72565b60a081016147878288613e49565b6147946020830187613e49565b6147a16040830186613e72565b6147ae6060830185613e72565b6113316080830184613e72565b61010081016147ca828b613e49565b6147d7602083018a613e49565b6147e46040830189613e72565b6147f16060830188613e72565b6147fe6080830187613e72565b61480b60a0830186613e72565b61481860c0830185613e72565b61482560e0830184613e72565b9998505050505050505050565b6101208101614841828c613e49565b61484e602083018b613e49565b61485b604083018a613e72565b6148686060830189613e72565b6148756080830188613e72565b61488260a0830187613e72565b61488f60c0830186613e72565b61489c60e0830185613e72565b6148aa610100830184613e72565b9a9950505050505050505050565b604081016148c68285613e49565b6116dc6020830184613e72565b606081016148e18286613e49565b61470f6020830185613e72565b6020810161168d8284613e69565b610100810161490b828b613e72565b614918602083018a613e69565b6149256040830189613e49565b6149326060830188613e49565b6147fe6080830187613e49565b610180810161494e828f613e72565b61495b602083018e613e72565b614968604083018d613e72565b614975606083018c613e69565b614982608083018b613e72565b61498f60a083018a613e72565b61499c60c0830189613e72565b6149a960e0830188613e72565b6149b7610100830187613e72565b6149c5610120830186613e72565b6149d3610140830185613e49565b6149e1610160830184613e49565b9d9c50505050505050505050505050565b6020810161168d8284613ebb565b602080825281016116dc8184613ec4565b6020808252810161168d81613efc565b6020808252810161168d81613f2b565b6020808252810161168d81613f4d565b6020808252810161168d81613f86565b6020808252810161168d81613fb2565b6020808252810161168d81613ffa565b6020808252810161168d81614027565b6020808252810161168d81614060565b6020808252810161168d8161408a565b6020808252810161168d816140bb565b6020808252810161168d816140f4565b6020808252810161168d81614123565b6020808252810161168d8161414e565b6020808252810161168d81614187565b6020808252810161168d816141ae565b6020808252810161168d816141dc565b6020808252810161168d81614206565b6020808252810161168d81614230565b6020808252810161168d8161425b565b6020808252810161168d81614285565b6020808252810161168d816142c8565b6020808252810161168d816142f0565b6020808252810161168d81614329565b6020808252810161168d81614357565b6020808252810161168d81614388565b6020808252810161168d816143b8565b6020808252810161168d81614408565b6020808252810161168d81614437565b6020808252810161168d8161445f565b6020808252810161168d81614488565b6020808252810161168d816144d4565b6020808252810161168d81614517565b6020808252810161168d8161453e565b6020808252810161168d81614570565b6020808252810161168d816145a1565b6020810161168d8284613e72565b604081016148c68285613e72565b606081016148e18286613e72565b60a08101614c798288613e72565b6147946020830187613e72565b60c08101614c948289613e72565b614ca16020830188613e72565b614cae6040830187613e72565b614cbb6060830186613e72565b614cc86080830185613e72565b614cd560a0830184613e72565b979650505050505050565b5190565b919050565b90815260200190565b600061168d82614d12565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b600061168d82614cf2565b60005b83811015614d44578181015183820152602001614d2c565b83811115612b895750506000910152565b600061168d82600061168d82614d70565b601f01601f191690565b60601b90565b614d7f81614cf2565b81146114f757600080fd5b614d7f81614cfd565b614d7f81614d02565b614d7f81614d0556fea365627a7a723158207bc20adaee0729fbf3a580fbbe72ecda0826701f4cd0162938fc39fb5b20477d6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH3 0xBC PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x110 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x114 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x4DE8 DUP1 PUSH3 0x124 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x381 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xE8F62764 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0xA05 JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0xA1A JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xA2F JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xA44 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x9A6 JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x9BB JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x9D0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x9E5 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0xD473C2DA GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x931 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x946 JUMPI DUP1 PUSH4 0xD67F7077 EQ PUSH2 0x966 JUMPI DUP1 PUSH4 0xE762319F EQ PUSH2 0x986 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x8C8 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x91C JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0xBA4861E9 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x83B JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x850 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x870 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x8A8 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x7E6 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x806 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x826 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x959083D3 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x785 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x79A JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x7AF JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x7C4 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x730 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x750 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x765 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x4203E395 GT PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x68C4AC26 GT PUSH2 0x254 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x6DC JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x6F1 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x706 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x71B JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x672 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x6B2 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x6C7 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x569FC1FB GT PUSH2 0x290 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x5DC JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x60B JUMPI DUP1 PUSH4 0x585314CF EQ PUSH2 0x620 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x641 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x4203E395 EQ PUSH2 0x592 JUMPI DUP1 PUSH4 0x4699F846 EQ PUSH2 0x5B2 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x5C7 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x323 JUMPI DUP1 PUSH4 0x3432423C GT PUSH2 0x2FD JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x552 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x572 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x4DB JUMPI DUP1 PUSH4 0x33D8991F EQ PUSH2 0x4F0 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x1B7BDE74 GT PUSH2 0x35F JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x42C JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x479 JUMPI DUP1 PUSH4 0x25DECAC0 EQ PUSH2 0x4A6 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x3AF JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3EA JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x40C JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CF PUSH2 0x3CA CALLDATASIZE PUSH1 0x4 PUSH2 0x3C4A JUMP JUMPDEST PUSH2 0xA59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C86 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP2 SWAP1 PUSH2 0x462E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x427 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DDD JUMP JUMPDEST PUSH2 0xAA8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x447 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B14 JUMP JUMPDEST PUSH2 0xAC3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP2 SWAP1 PUSH2 0x4C41 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x474 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xAE0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x499 PUSH2 0x494 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xAFB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP2 SWAP1 PUSH2 0x48EE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x4C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B4E JUMP JUMPDEST PUSH2 0xB10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xB6B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xB71 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x510 PUSH2 0x50B CALLDATASIZE PUSH1 0x4 PUSH2 0x3CD5 JUMP JUMPDEST PUSH2 0xB77 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CF PUSH2 0x52D CALLDATASIZE PUSH1 0x4 PUSH2 0x3C4A JUMP JUMPDEST PUSH2 0xBE4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x54D CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xC24 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x56D CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xC36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x499 PUSH2 0x58D CALLDATASIZE PUSH1 0x4 PUSH2 0x3CB6 JUMP JUMPDEST PUSH2 0xC48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x5AD CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xC68 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xC7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xC80 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5FC PUSH2 0x5F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C98 JUMP JUMPDEST PUSH2 0xC86 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x617 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xCA7 JUMP JUMPDEST PUSH2 0x633 PUSH2 0x62E CALLDATASIZE PUSH1 0x4 PUSH2 0x3D22 JUMP JUMPDEST PUSH2 0xCAD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP3 SWAP2 SWAP1 PUSH2 0x4C4F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x661 PUSH2 0x65C CALLDATASIZE PUSH1 0x4 PUSH2 0x3B14 JUMP JUMPDEST PUSH2 0xEEE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C6B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x499 PUSH2 0x68D CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xF28 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x6AD CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xF3D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0xF58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xF67 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0xF6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xF7C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x499 PUSH2 0xF82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0xF8B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x74B CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xF9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x499 PUSH2 0xFB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x780 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xFDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x791 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xFED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xFF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xFF9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D9 PUSH2 0xFFF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP2 SWAP1 PUSH2 0x49F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x801 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0x100E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x821 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0x1020 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x1032 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x1041 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x86B CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0x1050 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x890 PUSH2 0x88B CALLDATASIZE PUSH1 0x4 PUSH2 0x3C98 JUMP JUMPDEST PUSH2 0x1062 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x493F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x510 PUSH2 0x8C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0x10D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8E8 PUSH2 0x8E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C98 JUMP JUMPDEST PUSH2 0x11D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x48FC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x908 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x917 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B14 JUMP JUMPDEST PUSH2 0x1229 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x928 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x1246 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x1255 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x961 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0x125B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x981 CALLDATASIZE PUSH1 0x4 PUSH2 0x3BC3 JUMP JUMPDEST PUSH2 0x126D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x992 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x9A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B4E JUMP JUMPDEST PUSH2 0x133B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x14AF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x14BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x14C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x510 PUSH2 0xA00 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0x14CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x14FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x1500 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x1506 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x1515 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO PUSH2 0xB62 JUMPI PUSH2 0xB25 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1524 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0xB3C JUMPI PUSH2 0xB37 DUP3 PUSH2 0x165D JUMP JUMPDEST PUSH2 0xB45 JUMP JUMPDEST PUSH2 0xB45 DUP3 PUSH2 0x1693 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xB60 JUMPI PUSH2 0xB5D DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST SWAP2 POP JUMPDEST POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB9A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A21 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0xA ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xBD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B51 JUMP JUMPDEST PUSH2 0xBDF DUP4 CALLER DUP5 DUP5 PUSH2 0x16E3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xCD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4BC1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xCFA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A21 JUMP JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0xD06 JUMPI POP DUP3 ISZERO ISZERO JUMPDEST PUSH2 0xD22 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4BF1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD57 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B31 JUMP JUMPDEST PUSH2 0xD5F PUSH2 0x39A1 JUMP JUMPDEST POP PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH2 0x100 DUP1 DUP3 ADD DUP6 MSTORE DUP3 SLOAD DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO SWAP6 DUP5 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP3 ADD SLOAD DUP5 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x3 DUP3 ADD SLOAD SWAP1 SWAP4 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x6 ADD SLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0xDF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B81 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x0 SWAP2 PUSH2 0xE16 SWAP2 PUSH1 0x20 DUP11 ADD CALLDATALOAD DUP13 DUP15 PUSH2 0x1524 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xE35 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B21 JUMP JUMPDEST PUSH2 0xED6 DUP3 DUP13 DUP13 DUP5 DUP14 DUP14 PUSH1 0x4 DUP1 PUSH1 0x20 MUL PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP3 PUSH1 0x4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 DUP2 ADD SWAP1 SWAP3 MSTORE SWAP2 POP DUP16 SWAP1 PUSH1 0x5 SWAP1 DUP4 SWAP1 DUP4 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP DUP14 DUP14 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1758 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP14 SWAP1 SWAP13 POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFCC PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0x10DC PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0x10F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B51 JUMP JUMPDEST PUSH4 0x585314CF PUSH1 0xE0 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0x3DF489372D475309A1C47DE60A9F2A7F9FD0740DDF05BDA875D2BE32C6722031 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x1140 SWAP1 DUP4 PUSH2 0x1A83 JUMP JUMPDEST PUSH2 0x1151 PUSH4 0x33D8991F PUSH1 0xE0 SHL DUP4 PUSH2 0x1A83 JUMP JUMPDEST PUSH2 0x1162 PUSH4 0xD67F7077 PUSH1 0xE0 SHL DUP4 PUSH2 0x1A83 JUMP JUMPDEST PUSH2 0x1172 PUSH3 0x977B2B PUSH1 0xE6 SHL DUP4 PUSH2 0x1A83 JUMP JUMPDEST PUSH2 0x1183 PUSH4 0xE762319F PUSH1 0xE0 SHL DUP4 PUSH2 0x1A83 JUMP JUMPDEST PUSH12 0x4C6F616E4F70656E696E6773 PUSH1 0xA0 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x24EA00 DUP2 PUSH2 0x129E PUSH10 0x7BAAB4146B63DD00000 PUSH2 0x1292 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1B37 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12B9 PUSH3 0x15180 PUSH2 0x1292 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12CD DUP10 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12DA DUP3 PUSH2 0x165D JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x12F5 JUMPI PUSH2 0x12F2 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x1302 DUP14 DUP14 DUP6 PUSH2 0x1BBB JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1318 JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x1331 JUMP JUMPDEST PUSH2 0x1328 DUP11 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO PUSH2 0xB62 JUMPI DUP2 ISZERO PUSH2 0x1365 JUMPI PUSH2 0x1362 DUP4 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST SWAP3 POP JUMPDEST DUP4 PUSH1 0x0 DUP4 PUSH2 0x137B JUMPI PUSH2 0x1376 DUP3 PUSH2 0x165D JUMP JUMPDEST PUSH2 0x1384 JUMP JUMPDEST PUSH2 0x1384 DUP3 PUSH2 0x1693 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x139F JUMPI PUSH2 0x139C DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP2 POP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x13DD JUMPI PUSH2 0x13D6 DUP6 PUSH2 0x1292 DUP5 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP3 POP PUSH2 0x14A4 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x29D5277C SWAP1 PUSH2 0x1414 SWAP1 DUP13 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x463C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x142B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x143F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1463 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E19 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 PUSH1 0x0 EQ PUSH2 0x14A1 JUMPI PUSH2 0x149E DUP2 PUSH2 0x1292 DUP10 DUP2 DUP7 PUSH2 0x1492 DUP11 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP JUMPDEST POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x14D2 PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0x14EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B51 JUMP JUMPDEST PUSH2 0x14F7 DUP2 PUSH2 0x1C50 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1564 JUMPI PUSH2 0x155D PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP1 POP PUSH2 0x161F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x29D5277C SWAP1 PUSH2 0x159B SWAP1 DUP11 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x463C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x15EA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E19 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ PUSH2 0x161C JUMPI PUSH2 0x1619 PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 DUP8 PUSH2 0x1492 DUP7 DUP4 DUP13 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP3 POP JUMPDEST POP POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x162B JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xB62 JUMPI PUSH2 0x1331 DUP2 PUSH2 0x1651 DUP6 PUSH2 0x1292 DUP4 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x168D PUSH9 0x56BC75E2D63100000 PUSH2 0x1681 PUSH1 0x18 SLOAD DUP6 PUSH2 0x1AFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1CD2 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x168D PUSH9 0x56BC75E2D63100000 PUSH2 0x1681 PUSH1 0x1B SLOAD DUP6 PUSH2 0x1AFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x16DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A71 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP1 DUP7 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO OR SWAP1 SSTORE MLOAD SWAP1 DUP6 AND SWAP1 DUP7 SWAP1 PUSH32 0xEEF4F90457A741C97D76FCF13FA231FEFDCC7649BDB3CB49157C37111C98433 SWAP1 PUSH2 0x174A SWAP1 DUP7 SWAP1 PUSH2 0x48EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP10 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1795 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A91 JUMP JUMPDEST DUP10 PUSH1 0xA0 ADD MLOAD DUP7 LT ISZERO PUSH2 0x17B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4C21 JUMP JUMPDEST PUSH1 0xE0 DUP11 ADD MLOAD ISZERO ISZERO DUP1 PUSH2 0x17CE JUMPI POP PUSH1 0x40 DUP5 ADD MLOAD ISZERO ISZERO JUMPDEST PUSH2 0x17EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A41 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 PUSH2 0x17FD DUP14 DUP14 DUP12 DUP12 DUP12 PUSH2 0x1D14 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x183B DUP13 DUP4 DUP9 PUSH1 0x0 PUSH1 0x5 DUP2 LT PUSH2 0x1821 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP10 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD DUP11 PUSH1 0x2 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x210F JUMP JUMPDEST SWAP1 POP PUSH2 0x1856 DUP2 DUP8 PUSH1 0x3 JUMPDEST PUSH1 0x20 MUL ADD MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE DUP10 ISZERO PUSH2 0x18D8 JUMPI PUSH1 0x60 DUP7 ADD MLOAD ISZERO PUSH2 0x1883 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4AF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1895 DUP8 PUSH1 0x4 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x1693 JUMP JUMPDEST PUSH1 0x80 DUP15 ADD MLOAD PUSH1 0x60 DUP16 ADD MLOAD SWAP2 SWAP3 POP SWAP1 DUP3 ISZERO PUSH2 0x18D0 JUMPI PUSH2 0x18BE DUP11 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD DUP7 SLOAD DUP5 DUP5 DUP8 PUSH2 0x232B JUMP JUMPDEST PUSH2 0x18CA DUP4 DUP11 PUSH1 0x4 PUSH2 0x1845 JUMP JUMPDEST PUSH1 0x80 DUP11 ADD MSTORE JUMPDEST POP POP POP PUSH2 0x1931 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1909 DUP13 DUP15 PUSH1 0x60 ADD MLOAD DUP16 PUSH1 0x80 ADD MLOAD DUP12 PUSH1 0x1 PUSH1 0x4 DUP2 LT PUSH2 0x18F5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 DUP13 ADD MLOAD PUSH1 0x0 DUP1 DUP1 DUP15 PUSH2 0x23CA JUMP JUMPDEST PUSH1 0x60 DUP11 ADD MSTORE POP SWAP1 POP PUSH2 0x192A DUP2 DUP9 PUSH1 0x4 JUMPDEST PUSH1 0x20 MUL ADD MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x80 DUP9 ADD MSTORE POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x180 DUP2 ADD DUP3 MSTORE DUP4 SLOAD DUP2 MSTORE PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x2 DUP5 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x4 DUP1 DUP5 ADD SLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x5 DUP5 ADD SLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x7 DUP5 ADD SLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x8 DUP5 ADD SLOAD PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x9 DUP5 ADD SLOAD PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0xA DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP5 ADD MSTORE PUSH1 0xB DUP6 ADD SLOAD AND PUSH2 0x160 DUP4 ADD MSTORE PUSH2 0x19DB SWAP2 DUP15 SWAP2 DUP12 SWAP1 DUP11 SWAP1 PUSH1 0x20 MUL ADD MLOAD DUP14 PUSH2 0x2528 JUMP JUMPDEST PUSH2 0x19F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B61 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0x5 DUP4 ADD SLOAD PUSH2 0x1A0A SWAP2 PUSH2 0x16B7 JUMP JUMPDEST PUSH1 0x5 DUP4 ADD SSTORE DUP10 ISZERO PUSH2 0x1A34 JUMPI PUSH1 0x7 DUP3 ADD SLOAD PUSH2 0x1A2A SWAP1 TIMESTAMP PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x1A54 JUMP JUMPDEST PUSH2 0x1A4E PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP10 PUSH2 0x1B37 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MSTORE JUMPDEST PUSH2 0x1A61 DUP13 DUP4 DUP10 DUP10 DUP15 PUSH2 0x262E JUMP JUMPDEST POP POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x80 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP10 SWAP3 SWAP9 POP SWAP2 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x1ADE JUMPI PUSH2 0x1AD8 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x28FB AND JUMP JUMPDEST POP PUSH2 0x1AF9 JUMP JUMPDEST PUSH2 0xBDF PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x2943 AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B0C JUMPI POP PUSH1 0x0 PUSH2 0x168D JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B19 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x16DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B41 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16DC DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2A04 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16DC DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2A3B JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3F249273 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0xFC9249CC SWAP4 PUSH2 0x1BF8 SWAP4 DUP11 SWAP4 DUP11 SWAP4 DUP11 SWAP4 SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x471C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C24 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1C48 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DFB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1C76 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A51 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16DC DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x1D37 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4BB1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD SWAP2 DUP6 ADD MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x1D53 PUSH2 0x39E5 JUMP JUMPDEST DUP10 PUSH2 0x1EAA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE DUP14 MLOAD SWAP3 MLOAD PUSH2 0x1D92 SWAP4 SWAP3 DUP10 SWAP3 DUP10 SWAP3 SWAP1 SWAP2 ADD PUSH2 0x45DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP11 POP ISZERO PUSH2 0x1DD7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4AE1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH2 0x180 DUP2 ADD DUP3 MSTORE DUP11 DUP2 MSTORE DUP12 MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE TIMESTAMP PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP11 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH2 0x140 DUP4 ADD MSTORE DUP6 AND PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x1E52 PUSH1 0xF DUP12 PUSH4 0xFFFFFFFF PUSH2 0x28FB AND JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1E7B SWAP1 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x28FB AND JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1EA4 SWAP1 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x28FB AND JUMP JUMPDEST POP PUSH2 0x202B JUMP JUMPDEST POP PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD PUSH2 0x180 DUP2 ADD DUP6 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x5 DUP6 ADD SLOAD PUSH1 0xA0 DUP5 ADD MSTORE SWAP3 DUP5 ADD SLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x7 DUP5 ADD SLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x8 DUP5 ADD SLOAD PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x9 DUP5 ADD SLOAD PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0xA DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP5 ADD MSTORE PUSH1 0xB SWAP1 SWAP5 ADD SLOAD SWAP1 SWAP4 AND PUSH2 0x160 DUP3 ADD MSTORE SWAP2 PUSH2 0x1F64 JUMPI POP DUP1 PUSH1 0xE0 ADD MLOAD TIMESTAMP LT JUMPDEST PUSH2 0x1F80 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B01 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH2 0x140 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1FB6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A61 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH2 0x160 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1FEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4AC1 JUMP JUMPDEST DUP11 MLOAD PUSH1 0x20 DUP3 ADD MLOAD EQ PUSH2 0x2010 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A11 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0x2025 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x2047 JUMPI PUSH2 0x2047 DUP11 DUP6 DUP6 PUSH1 0x1 PUSH2 0x16E3 JUMP JUMPDEST PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SSTORE SWAP1 DUP5 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x2 DUP4 ADD SSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x4 DUP4 ADD SSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0x5 DUP4 ADD SSTORE PUSH1 0xC0 DUP4 ADD MLOAD SWAP1 DUP3 ADD SSTORE PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x7 DUP3 ADD SSTORE PUSH2 0x100 DUP3 ADD MLOAD PUSH1 0x8 DUP3 ADD SSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH1 0x9 DUP3 ADD SSTORE PUSH2 0x140 DUP3 ADD MLOAD PUSH1 0xA DUP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x160 SWAP1 SWAP4 ADD MLOAD PUSH1 0xB SWAP1 SWAP3 ADD DUP1 SLOAD SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE POP SWAP7 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB DUP5 ADD SLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 SWAP2 PUSH2 0x2131 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH2 0x2AB1 JUMP JUMPDEST DUP5 SLOAD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xB DUP1 DUP12 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP7 MSTORE SWAP1 DUP5 MSTORE DUP3 DUP6 KECCAK256 PUSH1 0x60 DUP14 ADD DUP1 MLOAD DUP4 AND DUP8 MSTORE SWAP5 MSTORE SWAP2 SWAP1 SWAP4 KECCAK256 PUSH1 0xE0 DUP12 ADD MLOAD SWAP3 MLOAD PUSH1 0x80 DUP13 ADD MLOAD PUSH1 0xA DUP13 ADD SLOAD SWAP6 SWAP7 SWAP3 SWAP6 PUSH2 0x2192 SWAP5 DUP9 SWAP5 SWAP4 SWAP3 SWAP2 AND TIMESTAMP PUSH2 0x2B8F JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x21A5 JUMPI POP PUSH1 0x7 DUP10 ADD SLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x21D3 JUMPI PUSH2 0x21D0 PUSH3 0x15180 PUSH2 0x1292 DUP7 PUSH1 0x0 ADD SLOAD PUSH2 0x1492 TIMESTAMP DUP15 PUSH1 0x7 ADD SLOAD PUSH2 0x1B79 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x21F3 PUSH10 0x7BAAB4146B63DD00000 PUSH2 0x1292 DUP11 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH2 0x2208 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST DUP6 SSTORE PUSH1 0x1 DUP5 ADD SLOAD PUSH2 0x221F SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SSTORE DUP3 PUSH2 0x228E JUMPI DUP5 SLOAD PUSH2 0x224C SWAP1 TIMESTAMP SWAP1 PUSH2 0x1651 SWAP1 PUSH2 0x1292 PUSH3 0x15180 PUSH2 0x1492 DUP14 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x7 DUP12 ADD DUP2 SWAP1 SSTORE PUSH2 0x2263 SWAP1 TIMESTAMP PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP3 POP PUSH2 0xE10 DUP4 GT PUSH2 0x2286 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A81 JUMP JUMPDEST DUP7 SWAP6 POP PUSH2 0x22D2 JUMP JUMPDEST PUSH1 0x7 DUP11 ADD SLOAD PUSH2 0x22AD JUMPI PUSH2 0x22A7 TIMESTAMP DUP5 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x7 DUP12 ADD SSTORE JUMPDEST PUSH2 0x22CF PUSH3 0x15180 PUSH2 0x1292 DUP4 PUSH2 0x1492 TIMESTAMP DUP16 PUSH1 0x7 ADD SLOAD PUSH2 0x1B79 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD PUSH2 0x22E7 SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SSTORE DUP4 SLOAD PUSH2 0x22FE SWAP1 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST DUP5 SSTORE PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x2315 SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST DUP5 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x23C3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x235A SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD DUP7 SWAP3 SWAP2 DUP9 AND SWAP1 PUSH32 0xFB6C38AE4FDD498B3A5003F02CA4CA5340DFEDB36B1B100C679EB60633B2C0A7 SWAP1 PUSH2 0x23AE SWAP1 DUP7 SWAP1 PUSH2 0x4C41 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x23C3 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2BDD JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP3 MSTORE DUP10 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS DUP4 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP11 AND PUSH1 0x80 DUP5 ADD MSTORE DUP4 MLOAD SWAP2 DUP3 ADD DUP5 MSTORE DUP9 DUP3 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE SWAP2 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x242F SWAP2 SWAP1 DUP15 DUP9 DUP9 DUP7 PUSH2 0x2F28 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x243E DUP12 DUP4 PUSH2 0x314A JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x27 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1E2C62D3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x1E2C62D3 SWAP2 PUSH2 0x2477 SWAP2 DUP16 SWAP2 DUP16 SWAP2 DUP9 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x4779 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x248F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x24C7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DFB JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH32 0xB4EB3C9B62EFCCE7021CBA5FD9CD0C44DF91C2272806CCC5E57DF7C912E8D716 DUP13 DUP7 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2511 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x48D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2550 PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 DUP5 PUSH9 0x55005F0C614480000 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP2 POP DUP2 DUP4 LT ISZERO PUSH2 0x2622 JUMPI PUSH1 0xA0 DUP6 ADD MLOAD ISZERO PUSH2 0x261A JUMPI PUSH1 0x2 SLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP1 DUP10 ADD MLOAD SWAP1 DUP9 ADD MLOAD PUSH1 0xA0 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF80B25FB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 PUSH4 0xF80B25FB SWAP5 PUSH2 0x25AD SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x4779 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x25FD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DFB JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x2610 DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST LT ISZERO SWAP2 POP POP PUSH2 0xB62 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xB62 JUMP JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x4 DUP1 DUP9 ADD SLOAD PUSH1 0x5 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x17F86809 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP7 DUP8 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP6 PUSH4 0x2FF0D012 SWAP6 PUSH2 0x2678 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 ADD PUSH2 0x4751 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x268F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x26C7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E19 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 PUSH1 0xC0 ADD MLOAD DUP3 GT PUSH2 0x26EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B71 JUMP JUMPDEST TIMESTAMP DUP7 PUSH1 0x6 ADD SLOAD EQ ISZERO PUSH2 0x284E JUMPI PUSH1 0x2 SLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x524EFD4B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 PUSH4 0x524EFD4B SWAP3 PUSH2 0x2733 SWAP3 PUSH1 0x4 ADD PUSH2 0x463C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x274B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x275F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2783 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DFB JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x80 DUP11 ADD MLOAD PUSH1 0x60 DUP12 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x524EFD4B PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH4 0x524EFD4B SWAP3 PUSH2 0x27C3 SWAP3 SWAP1 SWAP2 PUSH1 0x4 ADD PUSH2 0x463C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2813 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2827 DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x2843 JUMPI PUSH1 0x60 DUP8 ADD MLOAD PUSH2 0x283E SWAP1 DUP3 SWAP1 PUSH2 0x1B37 JUMP JUMPDEST PUSH2 0x2845 JUMP JUMPDEST DUP4 JUMPDEST PUSH1 0x9 DUP11 ADD SSTORE POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x180 DUP2 ADD DUP3 MSTORE DUP8 SLOAD DUP2 MSTORE PUSH1 0x1 DUP9 ADD SLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x2 DUP9 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP8 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x4 DUP8 ADD SLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x5 DUP8 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x6 DUP8 ADD SLOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x8 DUP8 ADD SLOAD PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x9 DUP8 ADD SLOAD PUSH2 0x120 DUP3 ADD MSTORE PUSH1 0xA DUP8 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0xB DUP9 ADD SLOAD AND PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x28F2 SWAP1 DUP9 SWAP1 DUP8 DUP8 DUP6 DUP8 DUP10 PUSH2 0x3218 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2907 DUP4 DUP4 PUSH2 0x3365 JUMP JUMPDEST PUSH2 0x293B JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x168D JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x294F DUP4 DUP4 PUSH2 0x3365 JUMP JUMPDEST ISZERO PUSH2 0x293B JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x29C7 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2988 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x29A5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x29E3 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x168D JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2A25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP2 SWAP1 PUSH2 0x4A00 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x2A31 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2A5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP2 SWAP1 PUSH2 0x4A00 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2A88 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP2 SWAP1 PUSH2 0x4A00 JUMP JUMPDEST POP DUP4 PUSH2 0x2A96 JUMPI POP PUSH1 0x0 PUSH2 0x16DC JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 DUP7 SUB DUP2 PUSH2 0x2AA4 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP2 SWAP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2AF1 JUMPI POP PUSH1 0x4 DUP3 ADD SLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2B82 JUMPI PUSH2 0x2B1C PUSH3 0x15180 PUSH2 0x1292 DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x1492 DUP7 PUSH1 0x4 ADD SLOAD TIMESTAMP PUSH2 0x1B79 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0x2B38 JUMPI POP PUSH1 0x2 DUP2 ADD SLOAD JUMPDEST DUP1 ISZERO PUSH2 0x2B7D JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH2 0x2B53 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x3 DUP4 ADD SSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0x2B6D SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SSTORE PUSH2 0x2B7D DUP5 DUP5 DUP4 PUSH2 0x337A JUMP JUMPDEST PUSH2 0x2B89 JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP4 ADD SSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BC5 PUSH11 0x7259756A8D61998000000 PUSH2 0x1292 PUSH1 0x15 SLOAD PUSH2 0x1492 DUP12 PUSH1 0x0 ADD SLOAD PUSH2 0x1492 DUP14 PUSH1 0x2 ADD SLOAD DUP10 PUSH2 0x1B79 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP9 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x28F2 JUMPI PUSH2 0x28F2 DUP4 DUP8 DUP8 DUP8 DUP6 JUMPDEST PUSH1 0x2F SLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 ISZERO PUSH2 0x2C40 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP2 POP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP12 SWAP2 AND PUSH2 0x2C7E PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 DUP13 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C90 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2CCE SWAP2 SWAP1 PUSH2 0x4622 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2D09 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D0E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x2D24 JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP5 POP JUMPDEST DUP5 ISZERO PUSH2 0x2F1C JUMPI PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x2D60 SWAP3 SWAP2 AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x48B8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2DB2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3C7A JUMP JUMPDEST POP PUSH1 0x38 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x2DD9 SWAP2 DUP15 SWAP2 DUP11 SWAP2 PUSH1 0x24 ADD PUSH2 0x48D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xEFE6A8B PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2E0E SWAP2 SWAP1 PUSH2 0x4622 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2E4B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2E50 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 ISZERO PUSH2 0x2EC7 JUMPI PUSH1 0x1F SLOAD PUSH2 0x2E6D SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x1F SSTORE PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0xF41C644671512F1CDA76ABFE6038E3D7D526C1377A5A8C692F81703901DB2150 SWAP2 PUSH2 0x2EBA SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4C5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2F1A JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0x483F67EA49F76AC15E15BBAD68B52788CA47D50AEF1E4ACFE95E5E307E710812 SWAP2 PUSH2 0x2F11 SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4C5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x2F3F JUMPI POP PUSH1 0x20 DUP8 ADD MLOAD ISZERO ISZERO JUMPDEST PUSH2 0x2F5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4BA1 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH2 0x2F6C JUMPI DUP7 MLOAD PUSH1 0x20 DUP9 ADD MSTORE JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD DUP8 MLOAD GT ISZERO PUSH2 0x2F91 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4AD1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH2 0x304B JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x300D JUMPI DUP6 ISZERO PUSH2 0x2FC2 JUMPI PUSH2 0x2FBB DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x341F JUMP JUMPDEST SWAP1 POP PUSH2 0x2FD6 JUMP JUMPDEST PUSH2 0x2FD3 DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x165D JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x3008 JUMPI PUSH1 0x80 DUP12 ADD MLOAD DUP12 MLOAD PUSH2 0x2FF9 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x1 JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP6 PUSH2 0x3443 JUMP JUMPDEST PUSH2 0x3005 DUP2 DUP12 PUSH1 0x0 PUSH2 0x1845 JUMP JUMPDEST DUP11 MSTORE JUMPDEST PUSH2 0x304B JUMP JUMPDEST DUP6 ISZERO PUSH2 0x3025 JUMPI PUSH2 0x301E DUP11 PUSH1 0x2 PUSH2 0x2FB1 JUMP JUMPDEST SWAP1 POP PUSH2 0x3033 JUMP JUMPDEST PUSH2 0x3030 DUP11 PUSH1 0x2 PUSH2 0x2FC9 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x304B JUMPI PUSH2 0x3045 DUP2 DUP12 PUSH1 0x2 PUSH2 0x1919 JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MSTORE JUMPDEST DUP7 MLOAD ISZERO PUSH2 0x306A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH2 0x3074 DUP12 DUP12 PUSH2 0x3593 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x30C0 JUMPI DUP10 MLOAD DUP3 EQ PUSH2 0x30A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4C11 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x30BB JUMPI PUSH2 0x30B8 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x313A JUMP JUMPDEST PUSH1 0x20 DUP11 ADD MLOAD DUP3 GT ISZERO PUSH2 0x30E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4AB1 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD DUP4 LT ISZERO PUSH2 0x3108 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x313A JUMPI PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x3127 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x0 PUSH2 0x2FEE JUMP JUMPDEST PUSH2 0x3137 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP3 POP JUMPDEST POP SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP1 ISZERO PUSH2 0xBDF JUMPI PUSH1 0x2D SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x3173 JUMPI POP DUP2 PUSH2 0x31F8 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5967AA75 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xB2CF54EA SWAP1 PUSH2 0x31A5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x48B8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x31F5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DFB JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2B89 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B11 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x329B JUMPI DUP6 MLOAD DUP6 MLOAD PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH32 0x7BD8CBB7BA34B33004F3DEDA0FD36C92FC0360ACBD97843360037B467A538F90 SWAP2 SWAP1 DUP10 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 DUP12 ADD MLOAD DUP12 MLOAD PUSH1 0x40 DUP1 DUP15 ADD MLOAD SWAP1 MLOAD PUSH2 0x328E SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH2 0x47BB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x28F2 JUMP JUMPDEST PUSH2 0x32B5 PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP4 PUSH2 0x1B37 JUMP JUMPDEST DUP7 MLOAD SWAP1 SWAP3 POP DUP6 PUSH1 0x0 PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF640C1CFE1A912A0B0152B5A542E5C2403142EED75B06CDE526CEE54B1580E5C DUP11 PUSH1 0x80 ADD MLOAD DUP12 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x4 PUSH1 0x5 DUP2 LT PUSH2 0x3314 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP11 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD DUP12 PUSH1 0x0 PUSH1 0x20 MUL ADD MLOAD PUSH1 0xE0 DUP16 ADD MLOAD DUP14 PUSH1 0x3 PUSH1 0x20 MUL ADD MLOAD DUP15 PUSH1 0x2 PUSH1 0x20 MUL ADD MLOAD DUP14 PUSH1 0x40 MLOAD PUSH2 0x3354 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4832 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x339E PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 PUSH1 0x15 SLOAD DUP6 PUSH2 0x1AFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x33AB DUP5 DUP5 DUP4 PUSH2 0x36A5 JUMP JUMPDEST PUSH2 0x33C5 DUP4 DUP6 PUSH2 0x33C0 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST PUSH2 0x3733 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP1 DUP5 AND PUSH32 0x220E66E3E759E1382AA86CD8AF5ABCA05EBF3AD564F223AE62D977678337272A PUSH2 0x3404 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3411 SWAP2 SWAP1 PUSH2 0x4C41 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x168D PUSH9 0x56BC75E2D63100000 PUSH2 0x1681 PUSH1 0x3E SLOAD DUP6 PUSH2 0x1AFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x358B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x34F9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3491 SWAP2 AND DUP8 DUP7 DUP5 PUSH2 0x3796 JUMP JUMPDEST POP POP PUSH2 0x34F6 PUSH2 0x34B8 PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 PUSH1 0x39 SLOAD DUP6 PUSH2 0x1AFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x34EA PUSH2 0x34DD PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 PUSH1 0x20 SLOAD DUP8 PUSH2 0x1AFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3522 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD DUP8 SWAP3 SWAP2 DUP10 AND SWAP1 PUSH32 0xB23479169712C443E6B00FB0CEC3506A5F5926F541DF4243D313E11C8C5C71ED SWAP1 PUSH2 0x3576 SWAP1 DUP7 SWAP1 PUSH2 0x4C41 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x358B DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2BDD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD PUSH1 0x60 DUP8 DUP2 ADD MLOAD DUP8 MLOAD SWAP6 DUP9 ADD MLOAD DUP9 DUP6 ADD MLOAD SWAP5 MLOAD PUSH1 0x0 SWAP9 DUP10 SWAP9 SWAP5 SWAP8 PUSH4 0x957BA11 PUSH1 0xE2 SHL SWAP8 PUSH2 0x35DA SWAP8 SWAP3 SWAP7 SWAP2 SWAP6 SWAP3 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 PUSH1 0x24 ADD PUSH2 0x4657 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE PUSH1 0x3 SLOAD SWAP2 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x362C SWAP1 DUP5 SWAP1 PUSH2 0x4622 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3667 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x366C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0x368E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4C01 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP3 ADD MLOAD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0xBDF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x36D4 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0x40A75AE5F7A5336E75F7C7977E12C4B46A9AC0F30DE01A2D5B6C1A4F4AF63587 SWAP1 PUSH2 0x3726 SWAP1 DUP6 SWAP1 PUSH2 0x4C41 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0xBDF JUMPI PUSH2 0x3753 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x382F AND JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP4 PUSH1 0x40 MLOAD PUSH2 0x3726 SWAP2 SWAP1 PUSH2 0x4C41 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x40 MLOAD PUSH4 0x6A688FF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD4D11FE SWAP1 PUSH2 0x37D1 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x46BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3822 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E19 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBDF SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3851 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x48B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3895 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3968 JUMP JUMPDEST PUSH2 0x38B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4C31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x38CD SWAP2 SWAP1 PUSH2 0x4622 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x390A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x390F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3931 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4AA1 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2B89 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x394C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3C7A JUMP JUMPDEST PUSH2 0x2B89 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4BE1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x1C48 JUMPI POP POP ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x180 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x140 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x160 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x168D DUP2 PUSH2 0x4D76 JUMP JUMPDEST DUP1 PUSH1 0x80 DUP2 ADD DUP4 LT ISZERO PUSH2 0x168D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xA0 DUP2 ADD DUP4 LT ISZERO PUSH2 0x168D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x168D DUP2 PUSH2 0x4D8A JUMP JUMPDEST DUP1 MLOAD PUSH2 0x168D DUP2 PUSH2 0x4D8A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x168D DUP2 PUSH2 0x4D93 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x168D DUP2 PUSH2 0x4D9C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3AB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3ACC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3AE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x168D DUP2 PUSH2 0x4D93 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3B08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C48 DUP5 DUP5 PUSH2 0x3A49 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B33 DUP6 DUP6 PUSH2 0x3A49 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3B44 DUP6 DUP3 DUP7 ADD PUSH2 0x3A49 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3B66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B72 DUP9 DUP9 PUSH2 0x3A49 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x3B83 DUP9 DUP3 DUP10 ADD PUSH2 0x3A49 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x3B94 DUP9 DUP3 DUP10 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x3BA5 DUP9 DUP3 DUP10 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x3BB6 DUP9 DUP3 DUP10 ADD PUSH2 0x3A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3BDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3BE8 DUP10 DUP10 PUSH2 0x3A49 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x3BF9 DUP10 DUP3 DUP11 ADD PUSH2 0x3A49 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x3C0A DUP10 DUP3 DUP11 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x3C1B DUP10 DUP3 DUP11 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x3C2C DUP10 DUP3 DUP11 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x3C3D DUP10 DUP3 DUP11 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3C5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3C69 DUP6 DUP6 PUSH2 0x3A49 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3B44 DUP6 DUP3 DUP7 ADD PUSH2 0x3A8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C48 DUP5 DUP5 PUSH2 0x3A81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3CAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C48 DUP5 DUP5 PUSH2 0x3A8C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3CC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B33 DUP6 DUP6 PUSH2 0x3A8C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3CEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3CF6 DUP7 DUP7 PUSH2 0x3A8C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3D07 DUP7 DUP3 DUP8 ADD PUSH2 0x3A49 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3D18 DUP7 DUP3 DUP8 ADD PUSH2 0x3A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1C0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x3D3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3D4B DUP12 DUP12 PUSH2 0x3A8C JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x3D5C DUP12 DUP3 DUP13 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x3D6D DUP12 DUP3 DUP13 ADD PUSH2 0x3A76 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x3D7E DUP12 DUP3 DUP13 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x3D8F DUP12 DUP3 DUP13 ADD PUSH2 0x3A54 JUMP JUMPDEST SWAP5 POP POP PUSH2 0x100 PUSH2 0x3DA1 DUP12 DUP3 DUP13 ADD PUSH2 0x3A65 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x1A0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3DBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3DCB DUP12 DUP3 DUP13 ADD PUSH2 0x3AA2 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3DEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C48 DUP5 DUP5 PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C48 DUP5 DUP5 PUSH2 0x3AEB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3E38 DUP6 DUP6 PUSH2 0x3AEB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3B44 DUP6 DUP3 DUP7 ADD PUSH2 0x3AEB JUMP JUMPDEST PUSH2 0x3E52 DUP2 PUSH2 0x4CF2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3E52 PUSH2 0x3E64 DUP3 PUSH2 0x4CF2 JUMP JUMPDEST PUSH2 0x4D55 JUMP JUMPDEST PUSH2 0x3E52 DUP2 PUSH2 0x4CFD JUMP JUMPDEST PUSH2 0x3E52 DUP2 PUSH2 0x4D02 JUMP JUMPDEST PUSH2 0x3E52 PUSH2 0x3E87 DUP3 PUSH2 0x4D02 JUMP JUMPDEST PUSH2 0x4D02 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E97 DUP3 PUSH2 0x4CE0 JUMP JUMPDEST PUSH2 0x3EA1 DUP2 DUP6 PUSH2 0x4CE4 JUMP JUMPDEST SWAP4 POP PUSH2 0x3EB1 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D29 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3E52 DUP2 PUSH2 0x4D1E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3ECF DUP3 PUSH2 0x4CE0 JUMP JUMPDEST PUSH2 0x3ED9 DUP2 DUP6 PUSH2 0x4CE9 JUMP JUMPDEST SWAP4 POP PUSH2 0x3EE9 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D29 JUMP JUMPDEST PUSH2 0x3EF2 DUP2 PUSH2 0x4D66 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F09 PUSH1 0x13 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH19 0xD8DEC2DCA0C2E4C2DAE640DAD2E6DAC2E8C6D PUSH1 0x6B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F38 PUSH1 0x6 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5A PUSH1 0x1B DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x696E73756666696369656E742073776170206C69717569646974790000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F93 PUSH1 0x10 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH16 0x1A5B9D985B1A59081A5B9D195C995CDD PUSH1 0x82 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FBF PUSH1 0x26 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4007 PUSH1 0x11 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH17 0xC4DEE4E4DEEECAE440DAD2E6DAC2E8C6D PUSH1 0x7B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4034 PUSH1 0x1B DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x406D PUSH1 0xE DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH14 0x1B1BD85B881D1BDBC81CDA1BDC9D PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4097 PUSH1 0x15 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH21 0xC6DED8D8C2E8CAE4C2D85ED8DEC2DC40DAC2E8C6D PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40C8 PUSH1 0x20 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4101 PUSH1 0x13 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH19 0x737761702066696C6C20746F6F206C61726765 PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4130 PUSH1 0xF DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH15 0xD8CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415B PUSH1 0x1C DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x736F75726365416D6F756E74206C6172676572207468616E206D617800000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4194 PUSH1 0xB DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH11 0x6C6F616E20657869737473 PUSH1 0xA8 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41BB PUSH1 0x12 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH18 0x39BAB938363AB9903637B0B7103A37B5B2B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41E9 PUSH1 0xE DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH14 0x1B1BD85B881A185CC8195B991959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4213 PUSH1 0xE DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH14 0x7377617020746F6F206C61726765 PUSH1 0x90 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x423D PUSH1 0xF DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH15 0x636F6C6C61746572616C206973203 PUSH1 0x8C SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4268 PUSH1 0xE DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH14 0x1B9BDD08185D5D1A1BDC9A5E9959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4292 PUSH1 0x21 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42D5 PUSH1 0xC DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42FD PUSH1 0x17 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x636F6C6C61746572616C20696E73756666696369656E74000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4336 PUSH1 0x12 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH18 0x3AB73432B0B63A343C903837B9B4BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4364 PUSH1 0x15 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH21 0x6C6F616E506172616D73206E6F7420657869737473 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4395 PUSH1 0x14 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43C5 PUSH1 0x2E DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x6D696E206F72206D617820736F7572636520746F6B656E20616D6F756E74206E DUP2 MSTORE PUSH14 0x1959591CC81D1BC81899481CD95D PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4415 PUSH1 0x13 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH19 0x1B1BD85B94185C985B5CC8191A5CD8589B1959 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4444 PUSH1 0xC DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x446C PUSH1 0xD DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH13 0x696E76616C6964207374617465 PUSH1 0x98 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4495 PUSH1 0x2A DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44E1 PUSH1 0x21 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x6C6F616E44617461427974657320726571756972656420776974682065746865 DUP2 MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4524 PUSH1 0xB DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH11 0x1CDDD85C0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x454B PUSH1 0x16 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH22 0x1CDDD85C081D1BDBC81B185C99D9481D1BC8199A5B1B PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x457D PUSH1 0x15 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH21 0x696E697469616C4D617267696E20746F6F206C6F77 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45AE PUSH1 0x1F DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45E6 DUP3 DUP8 PUSH2 0x3E7B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x45F6 DUP3 DUP7 PUSH2 0x3E58 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x4606 DUP3 DUP6 PUSH2 0x3E58 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x4616 DUP3 DUP5 PUSH2 0x3E7B JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16DC DUP3 DUP5 PUSH2 0x3E8C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x168D DUP3 DUP5 PUSH2 0x3E49 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x464A DUP3 DUP6 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x16DC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3E49 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x4665 DUP3 DUP11 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x4672 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x467F PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x468C PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x4699 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x46A6 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x46B3 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x46CD DUP3 DUP8 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x46DA PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x46E7 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0xB62 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4702 DUP3 DUP7 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x470F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x1C48 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x472A DUP3 DUP8 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x4737 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x4744 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0xB62 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x3E49 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x475F DUP3 DUP8 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x476C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x46E7 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4787 DUP3 DUP9 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x4794 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x47A1 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x47AE PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x1331 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x47CA DUP3 DUP12 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x47D7 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x47E4 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x47F1 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x47FE PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x480B PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4818 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4825 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x4841 DUP3 DUP13 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x484E PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x485B PUSH1 0x40 DUP4 ADD DUP11 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4868 PUSH1 0x60 DUP4 ADD DUP10 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4875 PUSH1 0x80 DUP4 ADD DUP9 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4882 PUSH1 0xA0 DUP4 ADD DUP8 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x488F PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x489C PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x48AA PUSH2 0x100 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x48C6 DUP3 DUP6 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x16DC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x48E1 DUP3 DUP7 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x470F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x168D DUP3 DUP5 PUSH2 0x3E69 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x490B DUP3 DUP12 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4918 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x3E69 JUMP JUMPDEST PUSH2 0x4925 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x4932 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x47FE PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x494E DUP3 DUP16 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x495B PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4968 PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4975 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x3E69 JUMP JUMPDEST PUSH2 0x4982 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x498F PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x499C PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x49A9 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x49B7 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x49C5 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x49D3 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x49E1 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x3E49 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x168D DUP3 DUP5 PUSH2 0x3EBB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x16DC DUP2 DUP5 PUSH2 0x3EC4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x3EFC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x3F2B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x3F4D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x3F86 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x3FB2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x3FFA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4027 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4060 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x408A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x40BB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x40F4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4123 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x414E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4187 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x41AE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x41DC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4206 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4230 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x425B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x42C8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x42F0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4329 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4357 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4388 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x43B8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4408 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4437 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x445F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4488 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x44D4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4517 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x453E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4570 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x45A1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x168D DUP3 DUP5 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x48C6 DUP3 DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x48E1 DUP3 DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4C79 DUP3 DUP9 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4794 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x4C94 DUP3 DUP10 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4CA1 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4CAE PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4CBB PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4CC8 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4CD5 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x168D DUP3 PUSH2 0x4D12 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x168D DUP3 PUSH2 0x4CF2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D44 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4D2C JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2B89 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x168D DUP3 PUSH1 0x0 PUSH2 0x168D DUP3 PUSH2 0x4D70 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x4D7F DUP2 PUSH2 0x4CF2 JUMP JUMPDEST DUP2 EQ PUSH2 0x14F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4D7F DUP2 PUSH2 0x4CFD JUMP JUMPDEST PUSH2 0x4D7F DUP2 PUSH2 0x4D02 JUMP JUMPDEST PUSH2 0x4D7F DUP2 PUSH2 0x4D05 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH28 0xC20ADAEE0729FBF3A580FBBE72ECDA0826701F4CD0162938FC39FB5B KECCAK256 SELFBALANCE PUSH30 0x6C6578706572696D656E74616CF564736F6C634300051100400000000000 ",
              "sourceMap": "676:27624:130:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;794:23:130;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;676:27624:130;;780:87:137;853:10;780:87;:::o;676:27624:130:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106103815760003560e01c80638dc48ba5116101d1578063cb6eacd111610102578063e8f62764116100a0578063f589a3e71161006f578063f589a3e714610a05578063f6ddc8b314610a1a578063f706b1f214610a2f578063f851a44014610a4457610381565b8063e8f62764146109a6578063edab119f146109bb578063f0e085f5146109d0578063f2fde38b146109e557610381565b8063d473c2da116100dc578063d473c2da14610931578063d485045e14610946578063d67f707714610966578063e762319f1461098657610381565b8063cb6eacd1146108c8578063cd5d808d146108fc578063d288208c1461091c57610381565b8063b30643d91161016f578063ba4861e911610149578063ba4861e91461083b578063bdee453c14610850578063c4a9081514610870578063c4d66de8146108a857610381565b8063b30643d9146107e6578063b7e1524114610806578063b9cffa3e1461082657610381565b8063959083d3116101ab578063959083d314610785578063acc043481461079a578063ae0a8530146107af578063afe84009146107c457610381565b80638dc48ba5146107305780638f32d59b1461075057806392d894f81461076557610381565b80634203e395116102b657806368c4ac261161025457806378d849ed1161022357806378d849ed146106dc5780637a8faeb8146106f15780638456cb59146107065780638da5cb5b1461071b57610381565b806368c4ac26146106725780636e663730146106925780637420ca3e146106b2578063742e6798146106c757610381565b8063569fc1fb11610290578063569fc1fb146105dc578063574442cc1461060b578063585314cf1461062057806362fff3f61461064157610381565b80634203e395146105925780634699f846146105b25780634f28cac2146105c757610381565b80632a324027116103235780633432423c116102fd5780633432423c146105125780633452d2d4146105325780633fca506e146105525780634115a2b61461057257610381565b80632a324027146104c65780632f470764146104db57806333d8991f146104f057610381565b80631b7bde741161035f5780631b7bde741461042c578063218b39c61461045957806324cc57491461047957806325decac0146104a657610381565b8063065d810f146103af5780630676c1b7146103ea57806317548b791461040c575b34801561038d57600080fd5b5060405162461bcd60e51b81526004016103a690614b91565b60405180910390fd5b3480156103bb57600080fd5b506103cf6103ca366004613c4a565b610a59565b6040516103e196959493929190614c86565b60405180910390f35b3480156103f657600080fd5b506103ff610a99565b6040516103e1919061462e565b34801561041857600080fd5b506103ff610427366004613ddd565b610aa8565b34801561043857600080fd5b5061044c610447366004613b14565b610ac3565b6040516103e19190614c41565b34801561046557600080fd5b506103ff610474366004613af6565b610ae0565b34801561048557600080fd5b50610499610494366004613af6565b610afb565b6040516103e191906148ee565b3480156104b257600080fd5b5061044c6104c1366004613b4e565b610b10565b3480156104d257600080fd5b5061044c610b6b565b3480156104e757600080fd5b5061044c610b71565b3480156104fc57600080fd5b5061051061050b366004613cd5565b610b77565b005b34801561051e57600080fd5b506103cf61052d366004613c4a565b610be4565b34801561053e57600080fd5b5061044c61054d366004613af6565b610c24565b34801561055e57600080fd5b5061044c61056d366004613af6565b610c36565b34801561057e57600080fd5b5061049961058d366004613cb6565b610c48565b34801561059e57600080fd5b5061044c6105ad366004613af6565b610c68565b3480156105be57600080fd5b5061044c610c7a565b3480156105d357600080fd5b5061044c610c80565b3480156105e857600080fd5b506105fc6105f7366004613c98565b610c86565b6040516103e193929190614c5d565b34801561061757600080fd5b5061044c610ca7565b61063361062e366004613d22565b610cad565b6040516103e1929190614c4f565b34801561064d57600080fd5b5061066161065c366004613b14565b610eee565b6040516103e1959493929190614c6b565b34801561067e57600080fd5b5061049961068d366004613af6565b610f28565b34801561069e57600080fd5b506103ff6106ad366004613af6565b610f3d565b3480156106be57600080fd5b506103ff610f58565b3480156106d357600080fd5b5061044c610f67565b3480156106e857600080fd5b506103ff610f6d565b3480156106fd57600080fd5b5061044c610f7c565b34801561071257600080fd5b50610499610f82565b34801561072757600080fd5b506103ff610f8b565b34801561073c57600080fd5b506103ff61074b366004613af6565b610f9a565b34801561075c57600080fd5b50610499610fb5565b34801561077157600080fd5b5061044c610780366004613af6565b610fdb565b34801561079157600080fd5b5061044c610fed565b3480156107a657600080fd5b5061044c610ff3565b3480156107bb57600080fd5b5061044c610ff9565b3480156107d057600080fd5b506107d9610fff565b6040516103e191906149f2565b3480156107f257600080fd5b5061044c610801366004613af6565b61100e565b34801561081257600080fd5b5061044c610821366004613af6565b611020565b34801561083257600080fd5b506103ff611032565b34801561084757600080fd5b506103ff611041565b34801561085c57600080fd5b5061044c61086b366004613af6565b611050565b34801561087c57600080fd5b5061089061088b366004613c98565b611062565b6040516103e19c9b9a9998979695949392919061493f565b3480156108b457600080fd5b506105106108c3366004613af6565b6110d4565b3480156108d457600080fd5b506108e86108e3366004613c98565b6111d7565b6040516103e19897969594939291906148fc565b34801561090857600080fd5b5061044c610917366004613b14565b611229565b34801561092857600080fd5b506103ff611246565b34801561093d57600080fd5b5061044c611255565b34801561095257600080fd5b5061044c610961366004613af6565b61125b565b34801561097257600080fd5b5061044c610981366004613bc3565b61126d565b34801561099257600080fd5b5061044c6109a1366004613b4e565b61133b565b3480156109b257600080fd5b506103ff6114af565b3480156109c757600080fd5b5061044c6114be565b3480156109dc57600080fd5b5061044c6114c4565b3480156109f157600080fd5b50610510610a00366004613af6565b6114ca565b348015610a1157600080fd5b5061044c6114fa565b348015610a2657600080fd5b5061044c611500565b348015610a3b57600080fd5b506103ff611506565b348015610a5057600080fd5b506103ff611515565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60008215610b6257610b258686868686611524565b9050600082610b3c57610b378261165d565b610b45565b610b4582611693565b90508015610b6057610b5d828263ffffffff6116b716565b91505b505b95945050505050565b60185481565b601f5481565b603d5460ff1615610b9a5760405162461bcd60e51b81526004016103a690614a21565b6000838152600660205260409020600a01546001600160a01b03163314610bd35760405162461bcd60e51b81526004016103a690614b51565b610bdf833384846116e3565b505050565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600080600160005414610cd25760405162461bcd60e51b81526004016103a690614bc1565b6002600055603d5460ff1615610cfa5760405162461bcd60e51b81526004016103a690614a21565b341580610d0657508215155b610d225760405162461bcd60e51b81526004016103a690614bf1565b336000908152602260205260409020546001600160a01b0316610d575760405162461bcd60e51b81526004016103a690614b31565b610d5f6139a1565b5060008a815260076020908152604091829020825161010080820185528254808352600184015460ff811615159584019590955293046001600160a01b039081169482019490945260028201548416606082015260038201549093166080840152600481015460a0840152600581015460c08401526006015460e0830152610df95760405162461bcd60e51b81526004016103a690614b81565b60608101516080820151600091610e169160208a01358c8e611524565b905080610e355760405162461bcd60e51b81526004016103a690614b21565b610ed6828c8c848d8d6004806020026040519081016040528092919082600460200280828437600092019190915250506040805160a081810190925291508f906005908390839080828437600081840152601f19601f8201169050808301925050505050508d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061175892505050565b6001600055909d909c509a5050505050505050505050565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610fcc611a7f565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6110dc610fb5565b6110f85760405162461bcd60e51b81526004016103a690614b51565b63585314cf60e01b600081905260056020527f3df489372d475309a1c47de60a9f2a7f9fd0740ddf05bda875d2be32c6722031546001600160a01b0316906111409083611a83565b6111516333d8991f60e01b83611a83565b61116263d67f707760e01b83611a83565b61117262977b2b60e61b83611a83565b61118363e762319f60e01b83611a83565b6b4c6f616e4f70656e696e677360a01b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b60006224ea008161129e6907baab4146b63dd00000611292868863ffffffff611afd16565b9063ffffffff611b3716565b905060006112b962015180611292858563ffffffff611afd16565b905060006112cd898363ffffffff611b7916565b905060006112da8261165d565b905080156112f5576112f2828263ffffffff611b7916565b91505b60006113028d8d85611bbb565b9050806113185760009650505050505050611331565b6113288a8263ffffffff6116b716565b96505050505050505b9695505050505050565b60008215610b62578115611365576113628368056bc75e2d6310000063ffffffff6116b716565b92505b8360008361137b576113768261165d565b611384565b61138482611693565b9050801561139f5761139c828263ffffffff611b7916565b91505b866001600160a01b0316886001600160a01b031614156113dd576113d6856112928468056bc75e2d6310000063ffffffff611afd16565b92506114a4565b600254604051630a7549df60e21b815260009182916001600160a01b03909116906329d5277c90611414908c908e9060040161463c565b604080518083038186803b15801561142b57600080fd5b505afa15801561143f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114639190810190613e19565b91509150806000146114a15761149e816112928981866114928a68056bc75e2d6310000063ffffffff611afd16565b9063ffffffff611afd16565b94505b50505b505095945050505050565b6014546001600160a01b031681565b601b5481565b60285481565b6114d2610fb5565b6114ee5760405162461bcd60e51b81526004016103a690614b51565b6114f781611c50565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6000846001600160a01b0316866001600160a01b031614156115645761155d68056bc75e2d63100000611292868663ffffffff611afd16565b905061161f565b600254604051630a7549df60e21b815260009182916001600160a01b03909116906329d5277c9061159b908a908c9060040161463c565b604080518083038186803b1580156115b257600080fd5b505afa1580156115c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115ea9190810190613e19565b915091508160001461161c5761161968056bc75e2d631000006112928761149286838c8863ffffffff611afd16565b92505b50505b81801561162b57508015155b15610b625761133181611651856112928368056bc75e2d6310000063ffffffff611afd16565b9063ffffffff6116b716565b600061168d68056bc75e2d6310000061168160185485611afd90919063ffffffff16565b9063ffffffff611cd216565b92915050565b600061168d68056bc75e2d63100000611681601b5485611afd90919063ffffffff16565b6000828201838110156116dc5760405162461bcd60e51b81526004016103a690614a71565b9392505050565b6000848152600a602090815260408083206001600160a01b038681168086529190935292819020805460ff1916851515179055519085169086907f0eef4f90457a741c97d76fcf13fa231fefdcc7649bdb3cb49157c37111c984339061174a9086906148ee565b60405180910390a450505050565b60008089606001516001600160a01b03168a608001516001600160a01b031614156117955760405162461bcd60e51b81526004016103a690614a91565b8960a001518610156117b95760405162461bcd60e51b81526004016103a690614c21565b60e08a01511515806117ce5750604084015115155b6117ea5760405162461bcd60e51b81526004016103a690614a41565b6000600660006117fd8d8d8b8b8b611d14565b81526020019081526020016000209050600061183b8c838860006005811061182157fe5b602002015189600160200201518a6002602002015161210f565b9050611856818760035b60200201519063ffffffff611b7916565b606087015289156118d8576060860151156118835760405162461bcd60e51b81526004016103a690614af1565b60006118958760046020020151611693565b60808e015160608f01519192509082156118d0576118be8a60016020020151865484848761232b565b6118ca838a6004611845565b60808a01525b505050611931565b60006119098c8e606001518f608001518b6001600481106118f557fe5b602002015160608c0151600080808e6123ca565b60608a015250905061192a818860045b60200201519063ffffffff6116b716565b6080880152505b60408051610180810182528354815260018401546020820152600284015491810191909152600383015460ff16151560608201526004808401546080830152600584015460a0830152600684015460c0830152600784015460e083015260088401546101008301526009840154610120830152600a8401546001600160a01b03908116610140840152600b850154166101608301526119db918e918b908a9060200201518d612528565b6119f75760405162461bcd60e51b81526004016103a690614b61565b60808601516005830154611a0a916116b7565b60058301558915611a34576007820154611a2a904263ffffffff611b7916565b6040870152611a54565b611a4e6f4b3b4ca85a86c47a098a22400000000089611b37565b60408701525b611a618c8389898e61262e565b50505060208301516080909301519299929850919650505050505050565b3390565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b03831690811790915515611ade57611ad8600d6001600160e01b0319841663ffffffff6128fb16565b50611af9565b610bdf600d6001600160e01b0319841663ffffffff61294316565b5050565b600082611b0c5750600061168d565b82820282848281611b1957fe5b04146116dc5760405162461bcd60e51b81526004016103a690614b41565b60006116dc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a04565b60006116dc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a3b565b60035460048054604051633f24927360e21b81526000936001600160a01b039081169363fc9249cc93611bf8938a938a938a93909116910161471c565b60206040518083038186803b158015611c1057600080fd5b505afa158015611c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c489190810190613dfb565b949350505050565b6001600160a01b038116611c765760405162461bcd60e51b81526004016103a690614a51565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006116dc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a67565b60008560200151611d375760405162461bcd60e51b81526004016103a690614bb1565b8251602080850151606086015191850151909190611d536139e5565b89611eaa576001600160a01b0384166000908152602a60209081526040918290208054600101908190558d519251611d929392899289929091016145da565b60408051601f19818403018152918152815160209283012060008181526006909352912054909a5015611dd75760405162461bcd60e51b81526004016103a690614ae1565b5060408051610180810182528a81528b5160208201526000918101829052600160608201526080810183905260a081018290524260c082015260e0810182905261010081018a90526101208101919091526001600160a01b038085166101408301528516610160820152611e52600f8b63ffffffff6128fb16565b506001600160a01b0385166000908152601160205260409020611e7b908b63ffffffff6128fb16565b506001600160a01b0384166000908152601260205260409020611ea4908b63ffffffff6128fb16565b5061202b565b5060008981526006602081815260409283902083516101808101855281548152600182015492810192909252600281015493820193909352600383015460ff161580156060830181905260048501546080840152600585015460a08401529284015460c0830152600784015460e083015260088401546101008301526009840154610120830152600a8401546001600160a01b03908116610140840152600b9094015490931661016082015291611f6457508060e0015142105b611f805760405162461bcd60e51b81526004016103a690614b01565b836001600160a01b03168161014001516001600160a01b031614611fb65760405162461bcd60e51b81526004016103a690614a61565b846001600160a01b03168161016001516001600160a01b031614611fec5760405162461bcd60e51b81526004016103a690614ac1565b8a516020820151146120105760405162461bcd60e51b81526004016103a690614a11565b6080810151612025908363ffffffff6116b716565b60808201525b6001600160a01b03831615612047576120478a858560016116e3565b60008a81526006602081815260409283902084518155908401516001820155918301516002830155606083015160038301805460ff19169115159190911790556080830151600483015560a0830151600583015560c08301519082015560e0820151600782015561010082015160088201556101208201516009820155610140820151600a820180546001600160a01b03199081166001600160a01b039384161790915561016090930151600b90920180549093169116179055509698975050505050505050565b600b8401546060860151600091612131916001600160a01b0390911690612ab1565b84546000818152600c60209081526040808320600b808b01546001600160a01b03908116865290845282852060608d0180518316875294529190932060e08b0151925160808c0151600a8c0154959692956121929488949392911642612b8f565b6000811580156121a55750600789015415155b156121d3576121d0620151806112928660000154611492428e60070154611b7990919063ffffffff16565b90505b60006121f36907baab4146b63dd000006112928a8c63ffffffff611afd16565b8554909150612208908263ffffffff6116b716565b8555600184015461221f908263ffffffff6116b716565b60018501558261228e57845461224c90429061165190611292620151806114928d8963ffffffff6116b716565b60078b01819055612263904263ffffffff611b7916565b9250610e1083116122865760405162461bcd60e51b81526004016103a690614a81565b8695506122d2565b60078a01546122ad576122a7428463ffffffff6116b716565b60078b01555b6122cf6201518061129283611492428f60070154611b7990919063ffffffff16565b95505b60018501546122e7908763ffffffff6116b716565b600186015583546122fe908963ffffffff6116b716565b84556002840154612315908763ffffffff6116b716565b8460020181905550505050505095945050505050565b80156123c3576001600160a01b0383166000908152601c602052604090205461235a908263ffffffff6116b716565b6001600160a01b038085166000818152601c6020526040908190209390935591518692918816907ffb6c38ae4fdd498b3a5003f02ca4ca5340dfedb36b1b100c679eb60633b2c0a7906123ae908690614c41565b60405180910390a46123c38585858585612bdd565b5050505050565b6040805160a0810182526001600160a01b03808b16825289811660208084019190915230838501819052606080850191909152918a1660808401528351918201845288825281018790529182018590526000918291829161242f91908e888886612f28565b909350915061243e8b8361314a565b600254602754604051631e2c62d360e01b81526001600160a01b0390921691631e2c62d391612477918f918f9188918a91600401614779565b60206040518083038186803b15801561248f57600080fd5b505afa1580156124a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124c79190810190613dfb565b9050896001600160a01b03168b6001600160a01b03168d7fb4eb3c9b62efcce7021cba5fd9cd0c44df91c2272806ccc5e57df7c912e8d7168c8688604051612511939291906148d3565b60405180910390a499509950999650505050505050565b600061255068056bc75e2d631000006112928468055005f0c61448000063ffffffff611afd16565b9150818310156126225760a08501511561261a5760025460608701516080808901519088015160a089015160405163f80b25fb60e01b81526000956001600160a01b03169463f80b25fb946125ad94919390928c90600401614779565b60206040518083038186803b1580156125c557600080fd5b505afa1580156125d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125fd9190810190613dfb565b905082612610858363ffffffff6116b716565b1015915050610b62565b506000610b62565b50600195945050505050565b6002546060860151608087015160048088015460058901546040516317f8680960e11b815260009687966001600160a01b0390911695632ff0d01295612678959294919301614751565b604080518083038186803b15801561268f57600080fd5b505afa1580156126a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126c79190810190613e19565b915091508660c0015182116126ee5760405162461bcd60e51b81526004016103a690614b71565b428660060154141561284e576002546060880151608089015160405163524efd4b60e01b81526000936001600160a01b03169263524efd4b926127339260040161463c565b60206040518083038186803b15801561274b57600080fd5b505afa15801561275f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127839190810190613dfb565b60025460808a015160608b015160405163524efd4b60e01b81529394506000936001600160a01b039093169263524efd4b926127c392909160040161463c565b60206040518083038186803b1580156127db57600080fd5b505afa1580156127ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128139190810190613dfb565b90506000612827838363ffffffff611afd16565b90508561284357606087015161283e908290611b37565b612845565b835b60098a01555050505b60408051610180810182528754815260018801546020820152600288015491810191909152600387015460ff161515606082015260048701546080820152600587015460a0820152600687015460c0820152600787015460e082015260088701546101008201526009870154610120820152600a8701546001600160a01b03908116610140830152600b880154166101608201526128f29088908787858789613218565b50505050505050565b60006129078383613365565b61293b575060018083018054808301808355600092835260208084209092018590558483529085905260409091205561168d565b50600061168d565b600061294f8383613365565b1561293b57600082815260208490526040902054600184015460001991820191018082146129c757600085600101828154811061298857fe5b90600052602060002001549050808660010184815481106129a557fe5b6000918252602080832090910192909255918252869052604090206001830190555b600084815260208690526040812055600185018054806129e357fe5b6001900381819060005260206000200160009055905560019250505061168d565b60008183612a255760405162461bcd60e51b81526004016103a69190614a00565b506000838581612a3157fe5b0495945050505050565b60008184841115612a5f5760405162461bcd60e51b81526004016103a69190614a00565b505050900390565b60008183612a885760405162461bcd60e51b81526004016103a69190614a00565b5083612a96575060006116dc565b6000836001860381612aa457fe5b0460010195945050505050565b6001600160a01b038083166000908152600b602090815260408083209385168352929052908120600181015490919015801590612af15750600482015415155b15612b8257612b1c620151806112928460010154611492866004015442611b7990919063ffffffff16565b4260048401556002830154909150811115612b38575060028101545b8015612b7d576003820154612b53908263ffffffff6116b716565b60038301556002820154612b6d908263ffffffff611b7916565b6002830155612b7d84848361337a565b612b89565b4260048301555b50505050565b6000612bc56a07259756a8d619980000006112926015546114928b600001546114928d6002015489611b7990919063ffffffff16565b60028801839055905080156128f2576128f283878787855b602f546002546001600160a01b038581166000908152603c602090815260408083208885168452909152812054909392919091169015612c40576001600160a01b038087166000908152603c602090815260408083209389168352929052205491505b6037546000906060906001600160a01b038085169163d138f9a160e01b918b9116612c7e68056bc75e2d631000006112928c8b63ffffffff611afd16565b604051602401612c90939291906146f4565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612cce9190614622565b600060405180830381855afa9150503d8060008114612d09576040519150601f19603f3d011682016040523d82523d6000602084013e612d0e565b606091505b50915091506001821415612d2457602081015194505b8415612f1c5760375460385460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612d609291169089906004016148b8565b602060405180830381600087803b158015612d7a57600080fd5b505af1158015612d8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612db29190810190613c7a565b50603854603f546040516000926001600160a01b031691612dd9918e918a916024016148d3565b60408051601f198184030181529181526020820180516001600160e01b0316630efe6a8b60e01b17905251612e0e9190614622565b6000604051808303816000865af19150503d8060008114612e4b576040519150601f19603f3d011682016040523d82523d6000602084013e612e50565b606091505b505090508015612ec757601f54612e6d908763ffffffff6116b716565b601f55603754603f546040518c926001600160a01b0390811692908f16917ff41c644671512f1cda76abfe6038e3d7d526c1377a5a8c692f81703901db215091612eba918b918d91614c5d565b60405180910390a4612f1a565b603754603f546040518c926001600160a01b0390811692908f16917f483f67ea49f76ac15e15bbad68b52788ca47d50aef1e4acfe95e5e307e71081291612f11918b918d91614c5d565b60405180910390a45b505b50505050505050505050565b84516000908190151580612f3f5750602087015115155b612f5b5760405162461bcd60e51b81526004016103a690614ba1565b6020870151612f6c57865160208801525b602087015187511115612f915760405162461bcd60e51b81526004016103a690614ad1565b60008060008761304b5760408a015161300d578515612fc257612fbb8a60005b602002015161341f565b9050612fd6565b612fd38a60005b602002015161165d565b90505b80156130085760808b01518b51612ff991908b908e60015b602002015185613443565b613005818b6000611845565b8a525b61304b565b85156130255761301e8a6002612fb1565b9050613033565b6130308a6002612fc9565b90505b801561304b57613045818b6002611919565b60408b01525b86511561306a5760405162461bcd60e51b81526004016103a690614bd1565b6130748b8b613593565b60408c015191945092506130c057895182146130a25760405162461bcd60e51b81526004016103a690614c11565b80156130bb576130b8828263ffffffff6116b716565b91505b61313a565b60208a01518211156130e45760405162461bcd60e51b81526004016103a690614ab1565b60408a01518310156131085760405162461bcd60e51b81526004016103a690614a31565b801561313a5760808b015160208c015161312791908b908e6000612fee565b613137838263ffffffff611b7916565b92505b5090999098509650505050505050565b6029548015610bdf57602d546000906001600160a01b03858116911614156131735750816131f8565b600254604051635967aa7560e11b81526001600160a01b039091169063b2cf54ea906131a590879087906004016148b8565b60206040518083038186803b1580156131bd57600080fd5b505afa1580156131d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131f59190810190613dfb565b90505b81811115612b895760405162461bcd60e51b81526004016103a690614b11565b801561329b5785518551602087015160608a015160808b01516001600160a01b0393841693909216917f7bd8cbb7ba34b33004f3deda0fd36c92fc0360acbd97843360037b467a538f909190896001602002015160808b01518b516040808e0151905161328e969594939291908e908e906147bb565b60405180910390a46128f2565b6132b56f4b3b4ca85a86c47a098a22400000000083611b37565b865190925085600060200201516001600160a01b031686600160200201516001600160a01b03167ff640c1cfe1a912a0b0152b5a542e5c2403142eed75b06cde526cee54b1580e5c8a608001518b606001518960046005811061331457fe5b60200201518a600160200201518b6000602002015160e08f01518d600360200201518e600260200201518d60405161335499989796959493929190614832565b60405180910390a450505050505050565b60009081526020919091526040902054151590565b600061339e68056bc75e2d6310000061129260155485611afd90919063ffffffff16565b90506133ab8484836136a5565b6133c583856133c0858563ffffffff611b7916565b613733565b6001600160a01b038085169084167f220e66e3e759e1382aa86cd8af5abca05ebf3ad564f223ae62d977678337272a613404858563ffffffff611b7916565b6040516134119190614c41565b60405180910390a350505050565b600061168d68056bc75e2d63100000611681603e5485611afd90919063ffffffff16565b80801561358b576001600160a01b0386811660009081526033602052604090205416156134f9576001600160a01b038087166000908152603360205260409020546134919116878684613796565b50506134f66134b868056bc75e2d6310000061129260395485611afd90919063ffffffff16565b6134ea6134dd68056bc75e2d6310000061129260205487611afd90919063ffffffff16565b849063ffffffff611b7916565b9063ffffffff611b7916565b90505b6001600160a01b038416600090815260196020526040902054613522908263ffffffff6116b716565b6001600160a01b03808616600081815260196020526040908190209390935591518792918916907fb23479169712c443e6b00fb0cec3506a5f5926f541df4243d313e11c8c5c71ed90613576908690614c41565b60405180910390a461358b8686868686612bdd565b505050505050565b815160208084015160408086015160608781015187519588015188850151945160009889989497630957ba1160e21b976135da979296919592949293919291602401614657565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260035491519092506000916001600160a01b03169061362c908490614622565b600060405180830381855af49150503d8060008114613667576040519150601f19603f3d011682016040523d82523d6000602084013e61366c565b606091505b50925090508061368e5760405162461bcd60e51b81526004016103a690614c01565b602082015193506040820151925050509250929050565b8015610bdf576001600160a01b0382166000908152601660205260409020546136d4908263ffffffff6116b716565b6001600160a01b0380841660008181526016602052604090819020939093559151908516907f40a75ae5f7a5336e75f7c7977e12c4b46a9ac0f30de01a2d5b6c1a4f4af6358790613726908590614c41565b60405180910390a3505050565b8015610bdf576137536001600160a01b038416838363ffffffff61382f16565b816001600160a01b0316836001600160a01b03167fc44aeefa68e8b9c1ad5f7be4b0dd194580f81f5c362862e72196503a320eb7a1836040516137269190614c41565b6031546040516306a688ff60e11b815260009182916001600160a01b0390911690630d4d11fe906137d19089908990899089906004016146bf565b6040805180830381600087803b1580156137ea57600080fd5b505af11580156137fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506138229190810190613e19565b9097909650945050505050565b604051610bdf90849063a9059cbb60e01b9061385190869086906024016148b8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613895826001600160a01b0316613968565b6138b15760405162461bcd60e51b81526004016103a690614c31565b60006060836001600160a01b0316836040516138cd9190614622565b6000604051808303816000865af19150503d806000811461390a576040519150601f19603f3d011682016040523d82523d6000602084013e61390f565b606091505b5091509150816139315760405162461bcd60e51b81526004016103a690614aa1565b805115612b89578080602001905161394c9190810190613c7a565b612b895760405162461bcd60e51b81526004016103a690614be1565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611c48575050151592915050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915290565b803561168d81614d76565b806080810183101561168d57600080fd5b8060a0810183101561168d57600080fd5b803561168d81614d8a565b805161168d81614d8a565b803561168d81614d93565b803561168d81614d9c565b60008083601f840112613ab457600080fd5b50813567ffffffffffffffff811115613acc57600080fd5b602083019150836001820283011115613ae457600080fd5b9250929050565b805161168d81614d93565b600060208284031215613b0857600080fd5b6000611c488484613a49565b60008060408385031215613b2757600080fd5b6000613b338585613a49565b9250506020613b4485828601613a49565b9150509250929050565b600080600080600060a08688031215613b6657600080fd5b6000613b728888613a49565b9550506020613b8388828901613a49565b9450506040613b9488828901613a8c565b9350506060613ba588828901613a8c565b9250506080613bb688828901613a76565b9150509295509295909350565b60008060008060008060c08789031215613bdc57600080fd5b6000613be88989613a49565b9650506020613bf989828a01613a49565b9550506040613c0a89828a01613a8c565b9450506060613c1b89828a01613a8c565b9350506080613c2c89828a01613a8c565b92505060a0613c3d89828a01613a8c565b9150509295509295509295565b60008060408385031215613c5d57600080fd5b6000613c698585613a49565b9250506020613b4485828601613a8c565b600060208284031215613c8c57600080fd5b6000611c488484613a81565b600060208284031215613caa57600080fd5b6000611c488484613a8c565b60008060408385031215613cc957600080fd5b6000613b338585613a8c565b600080600060608486031215613cea57600080fd5b6000613cf68686613a8c565b9350506020613d0786828701613a49565b9250506040613d1886828701613a76565b9150509250925092565b6000806000806000806000806101c0898b031215613d3f57600080fd5b6000613d4b8b8b613a8c565b9850506020613d5c8b828c01613a8c565b9750506040613d6d8b828c01613a76565b9650506060613d7e8b828c01613a8c565b9550506080613d8f8b828c01613a54565b945050610100613da18b828c01613a65565b9350506101a089013567ffffffffffffffff811115613dbf57600080fd5b613dcb8b828c01613aa2565b92509250509295985092959890939650565b600060208284031215613def57600080fd5b6000611c488484613a97565b600060208284031215613e0d57600080fd5b6000611c488484613aeb565b60008060408385031215613e2c57600080fd5b6000613e388585613aeb565b9250506020613b4485828601613aeb565b613e5281614cf2565b82525050565b613e52613e6482614cf2565b614d55565b613e5281614cfd565b613e5281614d02565b613e52613e8782614d02565b614d02565b6000613e9782614ce0565b613ea18185614ce4565b9350613eb1818560208601614d29565b9290920192915050565b613e5281614d1e565b6000613ecf82614ce0565b613ed98185614ce9565b9350613ee9818560208601614d29565b613ef281614d66565b9093019392505050565b6000613f09601383614ce9565b720d8dec2dca0c2e4c2dae640dad2e6dac2e8c6d606b1b815260200192915050565b6000613f38600683614ce9565b6514185d5cd95960d21b815260200192915050565b6000613f5a601b83614ce9565b7f696e73756666696369656e742073776170206c69717569646974790000000000815260200192915050565b6000613f93601083614ce9565b6f1a5b9d985b1a59081a5b9d195c995cdd60821b815260200192915050565b6000613fbf602683614ce9565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000614007601183614ce9565b700c4dee4e4deeecae440dad2e6dac2e8c6d607b1b815260200192915050565b6000614034601b83614ce9565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061406d600e83614ce9565b6d1b1bd85b881d1bdbc81cda1bdc9d60921b815260200192915050565b6000614097601583614ce9565b740c6ded8d8c2e8cae4c2d85ed8dec2dc40dac2e8c6d605b1b815260200192915050565b60006140c8602083614ce9565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000614101601383614ce9565b72737761702066696c6c20746f6f206c6172676560681b815260200192915050565b6000614130600f83614ce9565b6e0d8cadcc8cae440dad2e6dac2e8c6d608b1b815260200192915050565b600061415b601c83614ce9565b7f736f75726365416d6f756e74206c6172676572207468616e206d617800000000815260200192915050565b6000614194600b83614ce9565b6a6c6f616e2065786973747360a81b815260200192915050565b60006141bb601283614ce9565b7139bab938363ab9903637b0b7103a37b5b2b760711b815260200192915050565b60006141e9600e83614ce9565b6d1b1bd85b881a185cc8195b99195960921b815260200192915050565b6000614213600e83614ce9565b6d7377617020746f6f206c6172676560901b815260200192915050565b600061423d600f83614ce9565b6e0636f6c6c61746572616c206973203608c1b815260200192915050565b6000614268600e83614ce9565b6d1b9bdd08185d5d1a1bdc9a5e995960921b815260200192915050565b6000614292602183614ce9565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006142d5600c83614ce9565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006142fd601783614ce9565b7f636f6c6c61746572616c20696e73756666696369656e74000000000000000000815260200192915050565b6000614336601283614ce9565b713ab73432b0b63a343c903837b9b4ba34b7b760711b815260200192915050565b6000614364601583614ce9565b746c6f616e506172616d73206e6f742065786973747360581b815260200192915050565b6000614395601483614ce9565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b60006143c5602e83614ce9565b7f6d696e206f72206d617820736f7572636520746f6b656e20616d6f756e74206e81526d1959591cc81d1bc81899481cd95d60921b602082015260400192915050565b6000614415601383614ce9565b721b1bd85b94185c985b5cc8191a5cd8589b1959606a1b815260200192915050565b6000614444600c83614ce9565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b600061446c600d83614ce9565b6c696e76616c696420737461746560981b815260200192915050565b6000614495602a83614ce9565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006144e1602183614ce9565b7f6c6f616e446174614279746573207265717569726564207769746820657468658152603960f91b602082015260400192915050565b6000614524600b83614ce9565b6a1cddd85c0819985a5b195960aa1b815260200192915050565b600061454b601683614ce9565b751cddd85c081d1bdbc81b185c99d9481d1bc8199a5b1b60521b815260200192915050565b600061457d601583614ce9565b74696e697469616c4d617267696e20746f6f206c6f7760581b815260200192915050565b60006145ae601f83614ce9565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b60006145e68287613e7b565b6020820191506145f68286613e58565b6014820191506146068285613e58565b6014820191506146168284613e7b565b50602001949350505050565b60006116dc8284613e8c565b6020810161168d8284613e49565b6040810161464a8285613e49565b6116dc6020830184613e49565b60e08101614665828a613e49565b6146726020830189613e49565b61467f6040830188613e49565b61468c6060830187613e49565b6146996080830186613e72565b6146a660a0830185613e72565b6146b360c0830184613e72565b98975050505050505050565b608081016146cd8287613e49565b6146da6020830186613e49565b6146e76040830185613e49565b610b626060830184613e72565b606081016147028286613e49565b61470f6020830185613e49565b611c486040830184613e72565b6080810161472a8287613e49565b6147376020830186613e49565b6147446040830185613e72565b610b626060830184613e49565b6080810161475f8287613e49565b61476c6020830186613e49565b6146e76040830185613e72565b60a081016147878288613e49565b6147946020830187613e49565b6147a16040830186613e72565b6147ae6060830185613e72565b6113316080830184613e72565b61010081016147ca828b613e49565b6147d7602083018a613e49565b6147e46040830189613e72565b6147f16060830188613e72565b6147fe6080830187613e72565b61480b60a0830186613e72565b61481860c0830185613e72565b61482560e0830184613e72565b9998505050505050505050565b6101208101614841828c613e49565b61484e602083018b613e49565b61485b604083018a613e72565b6148686060830189613e72565b6148756080830188613e72565b61488260a0830187613e72565b61488f60c0830186613e72565b61489c60e0830185613e72565b6148aa610100830184613e72565b9a9950505050505050505050565b604081016148c68285613e49565b6116dc6020830184613e72565b606081016148e18286613e49565b61470f6020830185613e72565b6020810161168d8284613e69565b610100810161490b828b613e72565b614918602083018a613e69565b6149256040830189613e49565b6149326060830188613e49565b6147fe6080830187613e49565b610180810161494e828f613e72565b61495b602083018e613e72565b614968604083018d613e72565b614975606083018c613e69565b614982608083018b613e72565b61498f60a083018a613e72565b61499c60c0830189613e72565b6149a960e0830188613e72565b6149b7610100830187613e72565b6149c5610120830186613e72565b6149d3610140830185613e49565b6149e1610160830184613e49565b9d9c50505050505050505050505050565b6020810161168d8284613ebb565b602080825281016116dc8184613ec4565b6020808252810161168d81613efc565b6020808252810161168d81613f2b565b6020808252810161168d81613f4d565b6020808252810161168d81613f86565b6020808252810161168d81613fb2565b6020808252810161168d81613ffa565b6020808252810161168d81614027565b6020808252810161168d81614060565b6020808252810161168d8161408a565b6020808252810161168d816140bb565b6020808252810161168d816140f4565b6020808252810161168d81614123565b6020808252810161168d8161414e565b6020808252810161168d81614187565b6020808252810161168d816141ae565b6020808252810161168d816141dc565b6020808252810161168d81614206565b6020808252810161168d81614230565b6020808252810161168d8161425b565b6020808252810161168d81614285565b6020808252810161168d816142c8565b6020808252810161168d816142f0565b6020808252810161168d81614329565b6020808252810161168d81614357565b6020808252810161168d81614388565b6020808252810161168d816143b8565b6020808252810161168d81614408565b6020808252810161168d81614437565b6020808252810161168d8161445f565b6020808252810161168d81614488565b6020808252810161168d816144d4565b6020808252810161168d81614517565b6020808252810161168d8161453e565b6020808252810161168d81614570565b6020808252810161168d816145a1565b6020810161168d8284613e72565b604081016148c68285613e72565b606081016148e18286613e72565b60a08101614c798288613e72565b6147946020830187613e72565b60c08101614c948289613e72565b614ca16020830188613e72565b614cae6040830187613e72565b614cbb6060830186613e72565b614cc86080830185613e72565b614cd560a0830184613e72565b979650505050505050565b5190565b919050565b90815260200190565b600061168d82614d12565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b600061168d82614cf2565b60005b83811015614d44578181015183820152602001614d2c565b83811115612b895750506000910152565b600061168d82600061168d82614d70565b601f01601f191690565b60601b90565b614d7f81614cf2565b81146114f757600080fd5b614d7f81614cfd565b614d7f81614d02565b614d7f81614d0556fea365627a7a723158207bc20adaee0729fbf3a580fbbe72ecda0826701f4cd0162938fc39fb5b20477d6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x381 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xE8F62764 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0xA05 JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0xA1A JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xA2F JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xA44 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x9A6 JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x9BB JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x9D0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x9E5 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0xD473C2DA GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x931 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x946 JUMPI DUP1 PUSH4 0xD67F7077 EQ PUSH2 0x966 JUMPI DUP1 PUSH4 0xE762319F EQ PUSH2 0x986 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x8C8 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x91C JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0xBA4861E9 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x83B JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x850 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x870 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x8A8 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x7E6 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x806 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x826 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x959083D3 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x785 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x79A JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x7AF JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x7C4 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x730 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x750 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x765 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x4203E395 GT PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x68C4AC26 GT PUSH2 0x254 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x6DC JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x6F1 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x706 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x71B JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x672 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x6B2 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x6C7 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x569FC1FB GT PUSH2 0x290 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x5DC JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x60B JUMPI DUP1 PUSH4 0x585314CF EQ PUSH2 0x620 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x641 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x4203E395 EQ PUSH2 0x592 JUMPI DUP1 PUSH4 0x4699F846 EQ PUSH2 0x5B2 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x5C7 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x323 JUMPI DUP1 PUSH4 0x3432423C GT PUSH2 0x2FD JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x552 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x572 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x4DB JUMPI DUP1 PUSH4 0x33D8991F EQ PUSH2 0x4F0 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x1B7BDE74 GT PUSH2 0x35F JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x42C JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x479 JUMPI DUP1 PUSH4 0x25DECAC0 EQ PUSH2 0x4A6 JUMPI PUSH2 0x381 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x3AF JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3EA JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x40C JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CF PUSH2 0x3CA CALLDATASIZE PUSH1 0x4 PUSH2 0x3C4A JUMP JUMPDEST PUSH2 0xA59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C86 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP2 SWAP1 PUSH2 0x462E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x427 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DDD JUMP JUMPDEST PUSH2 0xAA8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x447 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B14 JUMP JUMPDEST PUSH2 0xAC3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP2 SWAP1 PUSH2 0x4C41 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x474 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xAE0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x499 PUSH2 0x494 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xAFB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP2 SWAP1 PUSH2 0x48EE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x4C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B4E JUMP JUMPDEST PUSH2 0xB10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xB6B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xB71 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x510 PUSH2 0x50B CALLDATASIZE PUSH1 0x4 PUSH2 0x3CD5 JUMP JUMPDEST PUSH2 0xB77 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CF PUSH2 0x52D CALLDATASIZE PUSH1 0x4 PUSH2 0x3C4A JUMP JUMPDEST PUSH2 0xBE4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x54D CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xC24 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x56D CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xC36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x499 PUSH2 0x58D CALLDATASIZE PUSH1 0x4 PUSH2 0x3CB6 JUMP JUMPDEST PUSH2 0xC48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x5AD CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xC68 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xC7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xC80 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5FC PUSH2 0x5F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C98 JUMP JUMPDEST PUSH2 0xC86 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x617 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xCA7 JUMP JUMPDEST PUSH2 0x633 PUSH2 0x62E CALLDATASIZE PUSH1 0x4 PUSH2 0x3D22 JUMP JUMPDEST PUSH2 0xCAD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP3 SWAP2 SWAP1 PUSH2 0x4C4F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x661 PUSH2 0x65C CALLDATASIZE PUSH1 0x4 PUSH2 0x3B14 JUMP JUMPDEST PUSH2 0xEEE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C6B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x499 PUSH2 0x68D CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xF28 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x6AD CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xF3D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0xF58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xF67 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0xF6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xF7C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x499 PUSH2 0xF82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0xF8B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x74B CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xF9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x499 PUSH2 0xFB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x780 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0xFDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x791 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xFED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xFF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0xFF9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D9 PUSH2 0xFFF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP2 SWAP1 PUSH2 0x49F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x801 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0x100E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x821 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0x1020 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x1032 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x1041 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x86B CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0x1050 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x890 PUSH2 0x88B CALLDATASIZE PUSH1 0x4 PUSH2 0x3C98 JUMP JUMPDEST PUSH2 0x1062 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x493F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x510 PUSH2 0x8C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0x10D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8E8 PUSH2 0x8E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C98 JUMP JUMPDEST PUSH2 0x11D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x48FC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x908 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x917 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B14 JUMP JUMPDEST PUSH2 0x1229 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x928 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x1246 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x1255 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x961 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0x125B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x981 CALLDATASIZE PUSH1 0x4 PUSH2 0x3BC3 JUMP JUMPDEST PUSH2 0x126D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x992 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x9A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B4E JUMP JUMPDEST PUSH2 0x133B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x14AF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x14BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x14C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x510 PUSH2 0xA00 CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF6 JUMP JUMPDEST PUSH2 0x14CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x14FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44C PUSH2 0x1500 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x1506 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FF PUSH2 0x1515 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO PUSH2 0xB62 JUMPI PUSH2 0xB25 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1524 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0xB3C JUMPI PUSH2 0xB37 DUP3 PUSH2 0x165D JUMP JUMPDEST PUSH2 0xB45 JUMP JUMPDEST PUSH2 0xB45 DUP3 PUSH2 0x1693 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xB60 JUMPI PUSH2 0xB5D DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST SWAP2 POP JUMPDEST POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB9A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A21 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0xA ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xBD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B51 JUMP JUMPDEST PUSH2 0xBDF DUP4 CALLER DUP5 DUP5 PUSH2 0x16E3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xCD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4BC1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xCFA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A21 JUMP JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0xD06 JUMPI POP DUP3 ISZERO ISZERO JUMPDEST PUSH2 0xD22 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4BF1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD57 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B31 JUMP JUMPDEST PUSH2 0xD5F PUSH2 0x39A1 JUMP JUMPDEST POP PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH2 0x100 DUP1 DUP3 ADD DUP6 MSTORE DUP3 SLOAD DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO SWAP6 DUP5 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP3 ADD SLOAD DUP5 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x3 DUP3 ADD SLOAD SWAP1 SWAP4 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x6 ADD SLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0xDF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B81 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x0 SWAP2 PUSH2 0xE16 SWAP2 PUSH1 0x20 DUP11 ADD CALLDATALOAD DUP13 DUP15 PUSH2 0x1524 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xE35 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B21 JUMP JUMPDEST PUSH2 0xED6 DUP3 DUP13 DUP13 DUP5 DUP14 DUP14 PUSH1 0x4 DUP1 PUSH1 0x20 MUL PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP3 PUSH1 0x4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 DUP2 ADD SWAP1 SWAP3 MSTORE SWAP2 POP DUP16 SWAP1 PUSH1 0x5 SWAP1 DUP4 SWAP1 DUP4 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP DUP14 DUP14 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1758 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP14 SWAP1 SWAP13 POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFCC PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0x10DC PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0x10F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B51 JUMP JUMPDEST PUSH4 0x585314CF PUSH1 0xE0 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0x3DF489372D475309A1C47DE60A9F2A7F9FD0740DDF05BDA875D2BE32C6722031 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x1140 SWAP1 DUP4 PUSH2 0x1A83 JUMP JUMPDEST PUSH2 0x1151 PUSH4 0x33D8991F PUSH1 0xE0 SHL DUP4 PUSH2 0x1A83 JUMP JUMPDEST PUSH2 0x1162 PUSH4 0xD67F7077 PUSH1 0xE0 SHL DUP4 PUSH2 0x1A83 JUMP JUMPDEST PUSH2 0x1172 PUSH3 0x977B2B PUSH1 0xE6 SHL DUP4 PUSH2 0x1A83 JUMP JUMPDEST PUSH2 0x1183 PUSH4 0xE762319F PUSH1 0xE0 SHL DUP4 PUSH2 0x1A83 JUMP JUMPDEST PUSH12 0x4C6F616E4F70656E696E6773 PUSH1 0xA0 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x24EA00 DUP2 PUSH2 0x129E PUSH10 0x7BAAB4146B63DD00000 PUSH2 0x1292 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1B37 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12B9 PUSH3 0x15180 PUSH2 0x1292 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12CD DUP10 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12DA DUP3 PUSH2 0x165D JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x12F5 JUMPI PUSH2 0x12F2 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH2 0x1302 DUP14 DUP14 DUP6 PUSH2 0x1BBB JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1318 JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x1331 JUMP JUMPDEST PUSH2 0x1328 DUP11 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO PUSH2 0xB62 JUMPI DUP2 ISZERO PUSH2 0x1365 JUMPI PUSH2 0x1362 DUP4 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST SWAP3 POP JUMPDEST DUP4 PUSH1 0x0 DUP4 PUSH2 0x137B JUMPI PUSH2 0x1376 DUP3 PUSH2 0x165D JUMP JUMPDEST PUSH2 0x1384 JUMP JUMPDEST PUSH2 0x1384 DUP3 PUSH2 0x1693 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x139F JUMPI PUSH2 0x139C DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP2 POP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x13DD JUMPI PUSH2 0x13D6 DUP6 PUSH2 0x1292 DUP5 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP3 POP PUSH2 0x14A4 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x29D5277C SWAP1 PUSH2 0x1414 SWAP1 DUP13 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x463C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x142B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x143F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1463 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E19 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 PUSH1 0x0 EQ PUSH2 0x14A1 JUMPI PUSH2 0x149E DUP2 PUSH2 0x1292 DUP10 DUP2 DUP7 PUSH2 0x1492 DUP11 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP JUMPDEST POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x14D2 PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0x14EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B51 JUMP JUMPDEST PUSH2 0x14F7 DUP2 PUSH2 0x1C50 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1564 JUMPI PUSH2 0x155D PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP1 POP PUSH2 0x161F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x29D5277C SWAP1 PUSH2 0x159B SWAP1 DUP11 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x463C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x15EA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E19 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ PUSH2 0x161C JUMPI PUSH2 0x1619 PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 DUP8 PUSH2 0x1492 DUP7 DUP4 DUP13 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP3 POP JUMPDEST POP POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x162B JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xB62 JUMPI PUSH2 0x1331 DUP2 PUSH2 0x1651 DUP6 PUSH2 0x1292 DUP4 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x168D PUSH9 0x56BC75E2D63100000 PUSH2 0x1681 PUSH1 0x18 SLOAD DUP6 PUSH2 0x1AFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1CD2 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x168D PUSH9 0x56BC75E2D63100000 PUSH2 0x1681 PUSH1 0x1B SLOAD DUP6 PUSH2 0x1AFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x16DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A71 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP1 DUP7 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO OR SWAP1 SSTORE MLOAD SWAP1 DUP6 AND SWAP1 DUP7 SWAP1 PUSH32 0xEEF4F90457A741C97D76FCF13FA231FEFDCC7649BDB3CB49157C37111C98433 SWAP1 PUSH2 0x174A SWAP1 DUP7 SWAP1 PUSH2 0x48EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP10 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1795 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A91 JUMP JUMPDEST DUP10 PUSH1 0xA0 ADD MLOAD DUP7 LT ISZERO PUSH2 0x17B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4C21 JUMP JUMPDEST PUSH1 0xE0 DUP11 ADD MLOAD ISZERO ISZERO DUP1 PUSH2 0x17CE JUMPI POP PUSH1 0x40 DUP5 ADD MLOAD ISZERO ISZERO JUMPDEST PUSH2 0x17EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A41 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 PUSH2 0x17FD DUP14 DUP14 DUP12 DUP12 DUP12 PUSH2 0x1D14 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x183B DUP13 DUP4 DUP9 PUSH1 0x0 PUSH1 0x5 DUP2 LT PUSH2 0x1821 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP10 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD DUP11 PUSH1 0x2 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x210F JUMP JUMPDEST SWAP1 POP PUSH2 0x1856 DUP2 DUP8 PUSH1 0x3 JUMPDEST PUSH1 0x20 MUL ADD MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE DUP10 ISZERO PUSH2 0x18D8 JUMPI PUSH1 0x60 DUP7 ADD MLOAD ISZERO PUSH2 0x1883 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4AF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1895 DUP8 PUSH1 0x4 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x1693 JUMP JUMPDEST PUSH1 0x80 DUP15 ADD MLOAD PUSH1 0x60 DUP16 ADD MLOAD SWAP2 SWAP3 POP SWAP1 DUP3 ISZERO PUSH2 0x18D0 JUMPI PUSH2 0x18BE DUP11 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD DUP7 SLOAD DUP5 DUP5 DUP8 PUSH2 0x232B JUMP JUMPDEST PUSH2 0x18CA DUP4 DUP11 PUSH1 0x4 PUSH2 0x1845 JUMP JUMPDEST PUSH1 0x80 DUP11 ADD MSTORE JUMPDEST POP POP POP PUSH2 0x1931 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1909 DUP13 DUP15 PUSH1 0x60 ADD MLOAD DUP16 PUSH1 0x80 ADD MLOAD DUP12 PUSH1 0x1 PUSH1 0x4 DUP2 LT PUSH2 0x18F5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 DUP13 ADD MLOAD PUSH1 0x0 DUP1 DUP1 DUP15 PUSH2 0x23CA JUMP JUMPDEST PUSH1 0x60 DUP11 ADD MSTORE POP SWAP1 POP PUSH2 0x192A DUP2 DUP9 PUSH1 0x4 JUMPDEST PUSH1 0x20 MUL ADD MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x80 DUP9 ADD MSTORE POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x180 DUP2 ADD DUP3 MSTORE DUP4 SLOAD DUP2 MSTORE PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x2 DUP5 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x4 DUP1 DUP5 ADD SLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x5 DUP5 ADD SLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x7 DUP5 ADD SLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x8 DUP5 ADD SLOAD PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x9 DUP5 ADD SLOAD PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0xA DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP5 ADD MSTORE PUSH1 0xB DUP6 ADD SLOAD AND PUSH2 0x160 DUP4 ADD MSTORE PUSH2 0x19DB SWAP2 DUP15 SWAP2 DUP12 SWAP1 DUP11 SWAP1 PUSH1 0x20 MUL ADD MLOAD DUP14 PUSH2 0x2528 JUMP JUMPDEST PUSH2 0x19F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B61 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0x5 DUP4 ADD SLOAD PUSH2 0x1A0A SWAP2 PUSH2 0x16B7 JUMP JUMPDEST PUSH1 0x5 DUP4 ADD SSTORE DUP10 ISZERO PUSH2 0x1A34 JUMPI PUSH1 0x7 DUP3 ADD SLOAD PUSH2 0x1A2A SWAP1 TIMESTAMP PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x1A54 JUMP JUMPDEST PUSH2 0x1A4E PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP10 PUSH2 0x1B37 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MSTORE JUMPDEST PUSH2 0x1A61 DUP13 DUP4 DUP10 DUP10 DUP15 PUSH2 0x262E JUMP JUMPDEST POP POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x80 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP10 SWAP3 SWAP9 POP SWAP2 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x1ADE JUMPI PUSH2 0x1AD8 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x28FB AND JUMP JUMPDEST POP PUSH2 0x1AF9 JUMP JUMPDEST PUSH2 0xBDF PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x2943 AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B0C JUMPI POP PUSH1 0x0 PUSH2 0x168D JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B19 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x16DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B41 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16DC DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2A04 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16DC DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2A3B JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3F249273 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0xFC9249CC SWAP4 PUSH2 0x1BF8 SWAP4 DUP11 SWAP4 DUP11 SWAP4 DUP11 SWAP4 SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x471C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C24 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1C48 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DFB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1C76 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A51 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16DC DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x1D37 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4BB1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD SWAP2 DUP6 ADD MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x1D53 PUSH2 0x39E5 JUMP JUMPDEST DUP10 PUSH2 0x1EAA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE DUP14 MLOAD SWAP3 MLOAD PUSH2 0x1D92 SWAP4 SWAP3 DUP10 SWAP3 DUP10 SWAP3 SWAP1 SWAP2 ADD PUSH2 0x45DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP11 POP ISZERO PUSH2 0x1DD7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4AE1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH2 0x180 DUP2 ADD DUP3 MSTORE DUP11 DUP2 MSTORE DUP12 MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE TIMESTAMP PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP11 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH2 0x140 DUP4 ADD MSTORE DUP6 AND PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x1E52 PUSH1 0xF DUP12 PUSH4 0xFFFFFFFF PUSH2 0x28FB AND JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1E7B SWAP1 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x28FB AND JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1EA4 SWAP1 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x28FB AND JUMP JUMPDEST POP PUSH2 0x202B JUMP JUMPDEST POP PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD PUSH2 0x180 DUP2 ADD DUP6 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x5 DUP6 ADD SLOAD PUSH1 0xA0 DUP5 ADD MSTORE SWAP3 DUP5 ADD SLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x7 DUP5 ADD SLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x8 DUP5 ADD SLOAD PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x9 DUP5 ADD SLOAD PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0xA DUP5 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP5 ADD MSTORE PUSH1 0xB SWAP1 SWAP5 ADD SLOAD SWAP1 SWAP4 AND PUSH2 0x160 DUP3 ADD MSTORE SWAP2 PUSH2 0x1F64 JUMPI POP DUP1 PUSH1 0xE0 ADD MLOAD TIMESTAMP LT JUMPDEST PUSH2 0x1F80 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B01 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH2 0x140 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1FB6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A61 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH2 0x160 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1FEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4AC1 JUMP JUMPDEST DUP11 MLOAD PUSH1 0x20 DUP3 ADD MLOAD EQ PUSH2 0x2010 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A11 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0x2025 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x2047 JUMPI PUSH2 0x2047 DUP11 DUP6 DUP6 PUSH1 0x1 PUSH2 0x16E3 JUMP JUMPDEST PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SSTORE SWAP1 DUP5 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x2 DUP4 ADD SSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x4 DUP4 ADD SSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0x5 DUP4 ADD SSTORE PUSH1 0xC0 DUP4 ADD MLOAD SWAP1 DUP3 ADD SSTORE PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x7 DUP3 ADD SSTORE PUSH2 0x100 DUP3 ADD MLOAD PUSH1 0x8 DUP3 ADD SSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH1 0x9 DUP3 ADD SSTORE PUSH2 0x140 DUP3 ADD MLOAD PUSH1 0xA DUP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x160 SWAP1 SWAP4 ADD MLOAD PUSH1 0xB SWAP1 SWAP3 ADD DUP1 SLOAD SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE POP SWAP7 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB DUP5 ADD SLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 SWAP2 PUSH2 0x2131 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH2 0x2AB1 JUMP JUMPDEST DUP5 SLOAD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xB DUP1 DUP12 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP7 MSTORE SWAP1 DUP5 MSTORE DUP3 DUP6 KECCAK256 PUSH1 0x60 DUP14 ADD DUP1 MLOAD DUP4 AND DUP8 MSTORE SWAP5 MSTORE SWAP2 SWAP1 SWAP4 KECCAK256 PUSH1 0xE0 DUP12 ADD MLOAD SWAP3 MLOAD PUSH1 0x80 DUP13 ADD MLOAD PUSH1 0xA DUP13 ADD SLOAD SWAP6 SWAP7 SWAP3 SWAP6 PUSH2 0x2192 SWAP5 DUP9 SWAP5 SWAP4 SWAP3 SWAP2 AND TIMESTAMP PUSH2 0x2B8F JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x21A5 JUMPI POP PUSH1 0x7 DUP10 ADD SLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x21D3 JUMPI PUSH2 0x21D0 PUSH3 0x15180 PUSH2 0x1292 DUP7 PUSH1 0x0 ADD SLOAD PUSH2 0x1492 TIMESTAMP DUP15 PUSH1 0x7 ADD SLOAD PUSH2 0x1B79 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x21F3 PUSH10 0x7BAAB4146B63DD00000 PUSH2 0x1292 DUP11 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH2 0x2208 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST DUP6 SSTORE PUSH1 0x1 DUP5 ADD SLOAD PUSH2 0x221F SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SSTORE DUP3 PUSH2 0x228E JUMPI DUP5 SLOAD PUSH2 0x224C SWAP1 TIMESTAMP SWAP1 PUSH2 0x1651 SWAP1 PUSH2 0x1292 PUSH3 0x15180 PUSH2 0x1492 DUP14 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x7 DUP12 ADD DUP2 SWAP1 SSTORE PUSH2 0x2263 SWAP1 TIMESTAMP PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP3 POP PUSH2 0xE10 DUP4 GT PUSH2 0x2286 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A81 JUMP JUMPDEST DUP7 SWAP6 POP PUSH2 0x22D2 JUMP JUMPDEST PUSH1 0x7 DUP11 ADD SLOAD PUSH2 0x22AD JUMPI PUSH2 0x22A7 TIMESTAMP DUP5 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x7 DUP12 ADD SSTORE JUMPDEST PUSH2 0x22CF PUSH3 0x15180 PUSH2 0x1292 DUP4 PUSH2 0x1492 TIMESTAMP DUP16 PUSH1 0x7 ADD SLOAD PUSH2 0x1B79 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD PUSH2 0x22E7 SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SSTORE DUP4 SLOAD PUSH2 0x22FE SWAP1 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST DUP5 SSTORE PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x2315 SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST DUP5 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x23C3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x235A SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD DUP7 SWAP3 SWAP2 DUP9 AND SWAP1 PUSH32 0xFB6C38AE4FDD498B3A5003F02CA4CA5340DFEDB36B1B100C679EB60633B2C0A7 SWAP1 PUSH2 0x23AE SWAP1 DUP7 SWAP1 PUSH2 0x4C41 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x23C3 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2BDD JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP3 MSTORE DUP10 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS DUP4 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP11 AND PUSH1 0x80 DUP5 ADD MSTORE DUP4 MLOAD SWAP2 DUP3 ADD DUP5 MSTORE DUP9 DUP3 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE SWAP2 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x242F SWAP2 SWAP1 DUP15 DUP9 DUP9 DUP7 PUSH2 0x2F28 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x243E DUP12 DUP4 PUSH2 0x314A JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x27 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1E2C62D3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x1E2C62D3 SWAP2 PUSH2 0x2477 SWAP2 DUP16 SWAP2 DUP16 SWAP2 DUP9 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x4779 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x248F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x24C7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DFB JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP14 PUSH32 0xB4EB3C9B62EFCCE7021CBA5FD9CD0C44DF91C2272806CCC5E57DF7C912E8D716 DUP13 DUP7 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2511 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x48D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP10 POP SWAP10 POP SWAP10 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2550 PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 DUP5 PUSH9 0x55005F0C614480000 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP2 POP DUP2 DUP4 LT ISZERO PUSH2 0x2622 JUMPI PUSH1 0xA0 DUP6 ADD MLOAD ISZERO PUSH2 0x261A JUMPI PUSH1 0x2 SLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP1 DUP10 ADD MLOAD SWAP1 DUP9 ADD MLOAD PUSH1 0xA0 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF80B25FB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 PUSH4 0xF80B25FB SWAP5 PUSH2 0x25AD SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x4779 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x25FD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DFB JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x2610 DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST LT ISZERO SWAP2 POP POP PUSH2 0xB62 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xB62 JUMP JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x4 DUP1 DUP9 ADD SLOAD PUSH1 0x5 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x17F86809 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP7 DUP8 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP6 PUSH4 0x2FF0D012 SWAP6 PUSH2 0x2678 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 ADD PUSH2 0x4751 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x268F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x26C7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E19 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 PUSH1 0xC0 ADD MLOAD DUP3 GT PUSH2 0x26EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B71 JUMP JUMPDEST TIMESTAMP DUP7 PUSH1 0x6 ADD SLOAD EQ ISZERO PUSH2 0x284E JUMPI PUSH1 0x2 SLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x524EFD4B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 PUSH4 0x524EFD4B SWAP3 PUSH2 0x2733 SWAP3 PUSH1 0x4 ADD PUSH2 0x463C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x274B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x275F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2783 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DFB JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x80 DUP11 ADD MLOAD PUSH1 0x60 DUP12 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x524EFD4B PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH4 0x524EFD4B SWAP3 PUSH2 0x27C3 SWAP3 SWAP1 SWAP2 PUSH1 0x4 ADD PUSH2 0x463C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2813 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2827 DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x2843 JUMPI PUSH1 0x60 DUP8 ADD MLOAD PUSH2 0x283E SWAP1 DUP3 SWAP1 PUSH2 0x1B37 JUMP JUMPDEST PUSH2 0x2845 JUMP JUMPDEST DUP4 JUMPDEST PUSH1 0x9 DUP11 ADD SSTORE POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x180 DUP2 ADD DUP3 MSTORE DUP8 SLOAD DUP2 MSTORE PUSH1 0x1 DUP9 ADD SLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x2 DUP9 ADD SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP8 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x4 DUP8 ADD SLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x5 DUP8 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x6 DUP8 ADD SLOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x8 DUP8 ADD SLOAD PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x9 DUP8 ADD SLOAD PUSH2 0x120 DUP3 ADD MSTORE PUSH1 0xA DUP8 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0xB DUP9 ADD SLOAD AND PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x28F2 SWAP1 DUP9 SWAP1 DUP8 DUP8 DUP6 DUP8 DUP10 PUSH2 0x3218 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2907 DUP4 DUP4 PUSH2 0x3365 JUMP JUMPDEST PUSH2 0x293B JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x168D JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x294F DUP4 DUP4 PUSH2 0x3365 JUMP JUMPDEST ISZERO PUSH2 0x293B JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x29C7 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2988 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x29A5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x29E3 JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x168D JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2A25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP2 SWAP1 PUSH2 0x4A00 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x2A31 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2A5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP2 SWAP1 PUSH2 0x4A00 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2A88 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP2 SWAP1 PUSH2 0x4A00 JUMP JUMPDEST POP DUP4 PUSH2 0x2A96 JUMPI POP PUSH1 0x0 PUSH2 0x16DC JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 DUP7 SUB DUP2 PUSH2 0x2AA4 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP2 SWAP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2AF1 JUMPI POP PUSH1 0x4 DUP3 ADD SLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2B82 JUMPI PUSH2 0x2B1C PUSH3 0x15180 PUSH2 0x1292 DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x1492 DUP7 PUSH1 0x4 ADD SLOAD TIMESTAMP PUSH2 0x1B79 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP5 ADD SSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0x2B38 JUMPI POP PUSH1 0x2 DUP2 ADD SLOAD JUMPDEST DUP1 ISZERO PUSH2 0x2B7D JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH2 0x2B53 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x3 DUP4 ADD SSTORE PUSH1 0x2 DUP3 ADD SLOAD PUSH2 0x2B6D SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST PUSH1 0x2 DUP4 ADD SSTORE PUSH2 0x2B7D DUP5 DUP5 DUP4 PUSH2 0x337A JUMP JUMPDEST PUSH2 0x2B89 JUMP JUMPDEST TIMESTAMP PUSH1 0x4 DUP4 ADD SSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BC5 PUSH11 0x7259756A8D61998000000 PUSH2 0x1292 PUSH1 0x15 SLOAD PUSH2 0x1492 DUP12 PUSH1 0x0 ADD SLOAD PUSH2 0x1492 DUP14 PUSH1 0x2 ADD SLOAD DUP10 PUSH2 0x1B79 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP9 ADD DUP4 SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x28F2 JUMPI PUSH2 0x28F2 DUP4 DUP8 DUP8 DUP8 DUP6 JUMPDEST PUSH1 0x2F SLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 ISZERO PUSH2 0x2C40 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP2 POP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP12 SWAP2 AND PUSH2 0x2C7E PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 DUP13 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x1AFD AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C90 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x46F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2CCE SWAP2 SWAP1 PUSH2 0x4622 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2D09 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D0E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x2D24 JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP5 POP JUMPDEST DUP5 ISZERO PUSH2 0x2F1C JUMPI PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x2D60 SWAP3 SWAP2 AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x48B8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2DB2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3C7A JUMP JUMPDEST POP PUSH1 0x38 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x2DD9 SWAP2 DUP15 SWAP2 DUP11 SWAP2 PUSH1 0x24 ADD PUSH2 0x48D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xEFE6A8B PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2E0E SWAP2 SWAP1 PUSH2 0x4622 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2E4B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2E50 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 ISZERO PUSH2 0x2EC7 JUMPI PUSH1 0x1F SLOAD PUSH2 0x2E6D SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x1F SSTORE PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0xF41C644671512F1CDA76ABFE6038E3D7D526C1377A5A8C692F81703901DB2150 SWAP2 PUSH2 0x2EBA SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4C5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2F1A JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0x483F67EA49F76AC15E15BBAD68B52788CA47D50AEF1E4ACFE95E5E307E710812 SWAP2 PUSH2 0x2F11 SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x4C5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x2F3F JUMPI POP PUSH1 0x20 DUP8 ADD MLOAD ISZERO ISZERO JUMPDEST PUSH2 0x2F5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4BA1 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH2 0x2F6C JUMPI DUP7 MLOAD PUSH1 0x20 DUP9 ADD MSTORE JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD DUP8 MLOAD GT ISZERO PUSH2 0x2F91 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4AD1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH2 0x304B JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x300D JUMPI DUP6 ISZERO PUSH2 0x2FC2 JUMPI PUSH2 0x2FBB DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x341F JUMP JUMPDEST SWAP1 POP PUSH2 0x2FD6 JUMP JUMPDEST PUSH2 0x2FD3 DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x165D JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x3008 JUMPI PUSH1 0x80 DUP12 ADD MLOAD DUP12 MLOAD PUSH2 0x2FF9 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x1 JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP6 PUSH2 0x3443 JUMP JUMPDEST PUSH2 0x3005 DUP2 DUP12 PUSH1 0x0 PUSH2 0x1845 JUMP JUMPDEST DUP11 MSTORE JUMPDEST PUSH2 0x304B JUMP JUMPDEST DUP6 ISZERO PUSH2 0x3025 JUMPI PUSH2 0x301E DUP11 PUSH1 0x2 PUSH2 0x2FB1 JUMP JUMPDEST SWAP1 POP PUSH2 0x3033 JUMP JUMPDEST PUSH2 0x3030 DUP11 PUSH1 0x2 PUSH2 0x2FC9 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x304B JUMPI PUSH2 0x3045 DUP2 DUP12 PUSH1 0x2 PUSH2 0x1919 JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MSTORE JUMPDEST DUP7 MLOAD ISZERO PUSH2 0x306A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH2 0x3074 DUP12 DUP12 PUSH2 0x3593 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x30C0 JUMPI DUP10 MLOAD DUP3 EQ PUSH2 0x30A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4C11 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x30BB JUMPI PUSH2 0x30B8 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x313A JUMP JUMPDEST PUSH1 0x20 DUP11 ADD MLOAD DUP3 GT ISZERO PUSH2 0x30E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4AB1 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD DUP4 LT ISZERO PUSH2 0x3108 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4A31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x313A JUMPI PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x3127 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x0 PUSH2 0x2FEE JUMP JUMPDEST PUSH2 0x3137 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP3 POP JUMPDEST POP SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP1 ISZERO PUSH2 0xBDF JUMPI PUSH1 0x2D SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x3173 JUMPI POP DUP2 PUSH2 0x31F8 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5967AA75 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xB2CF54EA SWAP1 PUSH2 0x31A5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x48B8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x31F5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DFB JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2B89 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4B11 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x329B JUMPI DUP6 MLOAD DUP6 MLOAD PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH32 0x7BD8CBB7BA34B33004F3DEDA0FD36C92FC0360ACBD97843360037B467A538F90 SWAP2 SWAP1 DUP10 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 DUP12 ADD MLOAD DUP12 MLOAD PUSH1 0x40 DUP1 DUP15 ADD MLOAD SWAP1 MLOAD PUSH2 0x328E SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH2 0x47BB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x28F2 JUMP JUMPDEST PUSH2 0x32B5 PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP4 PUSH2 0x1B37 JUMP JUMPDEST DUP7 MLOAD SWAP1 SWAP3 POP DUP6 PUSH1 0x0 PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF640C1CFE1A912A0B0152B5A542E5C2403142EED75B06CDE526CEE54B1580E5C DUP11 PUSH1 0x80 ADD MLOAD DUP12 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x4 PUSH1 0x5 DUP2 LT PUSH2 0x3314 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP11 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD DUP12 PUSH1 0x0 PUSH1 0x20 MUL ADD MLOAD PUSH1 0xE0 DUP16 ADD MLOAD DUP14 PUSH1 0x3 PUSH1 0x20 MUL ADD MLOAD DUP15 PUSH1 0x2 PUSH1 0x20 MUL ADD MLOAD DUP14 PUSH1 0x40 MLOAD PUSH2 0x3354 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4832 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x339E PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 PUSH1 0x15 SLOAD DUP6 PUSH2 0x1AFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x33AB DUP5 DUP5 DUP4 PUSH2 0x36A5 JUMP JUMPDEST PUSH2 0x33C5 DUP4 DUP6 PUSH2 0x33C0 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST PUSH2 0x3733 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP1 DUP5 AND PUSH32 0x220E66E3E759E1382AA86CD8AF5ABCA05EBF3AD564F223AE62D977678337272A PUSH2 0x3404 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3411 SWAP2 SWAP1 PUSH2 0x4C41 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x168D PUSH9 0x56BC75E2D63100000 PUSH2 0x1681 PUSH1 0x3E SLOAD DUP6 PUSH2 0x1AFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x358B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x34F9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3491 SWAP2 AND DUP8 DUP7 DUP5 PUSH2 0x3796 JUMP JUMPDEST POP POP PUSH2 0x34F6 PUSH2 0x34B8 PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 PUSH1 0x39 SLOAD DUP6 PUSH2 0x1AFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x34EA PUSH2 0x34DD PUSH9 0x56BC75E2D63100000 PUSH2 0x1292 PUSH1 0x20 SLOAD DUP8 PUSH2 0x1AFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1B79 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3522 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD DUP8 SWAP3 SWAP2 DUP10 AND SWAP1 PUSH32 0xB23479169712C443E6B00FB0CEC3506A5F5926F541DF4243D313E11C8C5C71ED SWAP1 PUSH2 0x3576 SWAP1 DUP7 SWAP1 PUSH2 0x4C41 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x358B DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2BDD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD PUSH1 0x60 DUP8 DUP2 ADD MLOAD DUP8 MLOAD SWAP6 DUP9 ADD MLOAD DUP9 DUP6 ADD MLOAD SWAP5 MLOAD PUSH1 0x0 SWAP9 DUP10 SWAP9 SWAP5 SWAP8 PUSH4 0x957BA11 PUSH1 0xE2 SHL SWAP8 PUSH2 0x35DA SWAP8 SWAP3 SWAP7 SWAP2 SWAP6 SWAP3 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 PUSH1 0x24 ADD PUSH2 0x4657 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE PUSH1 0x3 SLOAD SWAP2 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x362C SWAP1 DUP5 SWAP1 PUSH2 0x4622 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3667 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x366C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0x368E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4C01 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP3 ADD MLOAD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0xBDF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x36D4 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x16B7 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0x40A75AE5F7A5336E75F7C7977E12C4B46A9AC0F30DE01A2D5B6C1A4F4AF63587 SWAP1 PUSH2 0x3726 SWAP1 DUP6 SWAP1 PUSH2 0x4C41 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0xBDF JUMPI PUSH2 0x3753 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x382F AND JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC44AEEFA68E8B9C1AD5F7BE4B0DD194580F81F5C362862E72196503A320EB7A1 DUP4 PUSH1 0x40 MLOAD PUSH2 0x3726 SWAP2 SWAP1 PUSH2 0x4C41 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x40 MLOAD PUSH4 0x6A688FF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD4D11FE SWAP1 PUSH2 0x37D1 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x46BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3822 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E19 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBDF SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3851 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x48B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3895 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3968 JUMP JUMPDEST PUSH2 0x38B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4C31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x38CD SWAP2 SWAP1 PUSH2 0x4622 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x390A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x390F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3931 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4AA1 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2B89 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x394C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3C7A JUMP JUMPDEST PUSH2 0x2B89 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A6 SWAP1 PUSH2 0x4BE1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x1C48 JUMPI POP POP ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x180 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x140 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x160 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x168D DUP2 PUSH2 0x4D76 JUMP JUMPDEST DUP1 PUSH1 0x80 DUP2 ADD DUP4 LT ISZERO PUSH2 0x168D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xA0 DUP2 ADD DUP4 LT ISZERO PUSH2 0x168D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x168D DUP2 PUSH2 0x4D8A JUMP JUMPDEST DUP1 MLOAD PUSH2 0x168D DUP2 PUSH2 0x4D8A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x168D DUP2 PUSH2 0x4D93 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x168D DUP2 PUSH2 0x4D9C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3AB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3ACC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3AE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x168D DUP2 PUSH2 0x4D93 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3B08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C48 DUP5 DUP5 PUSH2 0x3A49 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B33 DUP6 DUP6 PUSH2 0x3A49 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3B44 DUP6 DUP3 DUP7 ADD PUSH2 0x3A49 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3B66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B72 DUP9 DUP9 PUSH2 0x3A49 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x3B83 DUP9 DUP3 DUP10 ADD PUSH2 0x3A49 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x3B94 DUP9 DUP3 DUP10 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x3BA5 DUP9 DUP3 DUP10 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x3BB6 DUP9 DUP3 DUP10 ADD PUSH2 0x3A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3BDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3BE8 DUP10 DUP10 PUSH2 0x3A49 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x3BF9 DUP10 DUP3 DUP11 ADD PUSH2 0x3A49 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x3C0A DUP10 DUP3 DUP11 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x3C1B DUP10 DUP3 DUP11 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x3C2C DUP10 DUP3 DUP11 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x3C3D DUP10 DUP3 DUP11 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3C5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3C69 DUP6 DUP6 PUSH2 0x3A49 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3B44 DUP6 DUP3 DUP7 ADD PUSH2 0x3A8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C48 DUP5 DUP5 PUSH2 0x3A81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3CAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C48 DUP5 DUP5 PUSH2 0x3A8C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3CC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B33 DUP6 DUP6 PUSH2 0x3A8C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3CEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3CF6 DUP7 DUP7 PUSH2 0x3A8C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3D07 DUP7 DUP3 DUP8 ADD PUSH2 0x3A49 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3D18 DUP7 DUP3 DUP8 ADD PUSH2 0x3A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1C0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x3D3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3D4B DUP12 DUP12 PUSH2 0x3A8C JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x3D5C DUP12 DUP3 DUP13 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x3D6D DUP12 DUP3 DUP13 ADD PUSH2 0x3A76 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x3D7E DUP12 DUP3 DUP13 ADD PUSH2 0x3A8C JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x3D8F DUP12 DUP3 DUP13 ADD PUSH2 0x3A54 JUMP JUMPDEST SWAP5 POP POP PUSH2 0x100 PUSH2 0x3DA1 DUP12 DUP3 DUP13 ADD PUSH2 0x3A65 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x1A0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3DBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3DCB DUP12 DUP3 DUP13 ADD PUSH2 0x3AA2 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3DEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C48 DUP5 DUP5 PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C48 DUP5 DUP5 PUSH2 0x3AEB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3E38 DUP6 DUP6 PUSH2 0x3AEB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3B44 DUP6 DUP3 DUP7 ADD PUSH2 0x3AEB JUMP JUMPDEST PUSH2 0x3E52 DUP2 PUSH2 0x4CF2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3E52 PUSH2 0x3E64 DUP3 PUSH2 0x4CF2 JUMP JUMPDEST PUSH2 0x4D55 JUMP JUMPDEST PUSH2 0x3E52 DUP2 PUSH2 0x4CFD JUMP JUMPDEST PUSH2 0x3E52 DUP2 PUSH2 0x4D02 JUMP JUMPDEST PUSH2 0x3E52 PUSH2 0x3E87 DUP3 PUSH2 0x4D02 JUMP JUMPDEST PUSH2 0x4D02 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E97 DUP3 PUSH2 0x4CE0 JUMP JUMPDEST PUSH2 0x3EA1 DUP2 DUP6 PUSH2 0x4CE4 JUMP JUMPDEST SWAP4 POP PUSH2 0x3EB1 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D29 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3E52 DUP2 PUSH2 0x4D1E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3ECF DUP3 PUSH2 0x4CE0 JUMP JUMPDEST PUSH2 0x3ED9 DUP2 DUP6 PUSH2 0x4CE9 JUMP JUMPDEST SWAP4 POP PUSH2 0x3EE9 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D29 JUMP JUMPDEST PUSH2 0x3EF2 DUP2 PUSH2 0x4D66 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F09 PUSH1 0x13 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH19 0xD8DEC2DCA0C2E4C2DAE640DAD2E6DAC2E8C6D PUSH1 0x6B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F38 PUSH1 0x6 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5A PUSH1 0x1B DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x696E73756666696369656E742073776170206C69717569646974790000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F93 PUSH1 0x10 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH16 0x1A5B9D985B1A59081A5B9D195C995CDD PUSH1 0x82 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FBF PUSH1 0x26 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4007 PUSH1 0x11 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH17 0xC4DEE4E4DEEECAE440DAD2E6DAC2E8C6D PUSH1 0x7B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4034 PUSH1 0x1B DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x406D PUSH1 0xE DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH14 0x1B1BD85B881D1BDBC81CDA1BDC9D PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4097 PUSH1 0x15 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH21 0xC6DED8D8C2E8CAE4C2D85ED8DEC2DC40DAC2E8C6D PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40C8 PUSH1 0x20 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4101 PUSH1 0x13 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH19 0x737761702066696C6C20746F6F206C61726765 PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4130 PUSH1 0xF DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH15 0xD8CADCC8CAE440DAD2E6DAC2E8C6D PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415B PUSH1 0x1C DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x736F75726365416D6F756E74206C6172676572207468616E206D617800000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4194 PUSH1 0xB DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH11 0x6C6F616E20657869737473 PUSH1 0xA8 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41BB PUSH1 0x12 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH18 0x39BAB938363AB9903637B0B7103A37B5B2B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41E9 PUSH1 0xE DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH14 0x1B1BD85B881A185CC8195B991959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4213 PUSH1 0xE DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH14 0x7377617020746F6F206C61726765 PUSH1 0x90 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x423D PUSH1 0xF DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH15 0x636F6C6C61746572616C206973203 PUSH1 0x8C SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4268 PUSH1 0xE DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH14 0x1B9BDD08185D5D1A1BDC9A5E9959 PUSH1 0x92 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4292 PUSH1 0x21 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42D5 PUSH1 0xC DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42FD PUSH1 0x17 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x636F6C6C61746572616C20696E73756666696369656E74000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4336 PUSH1 0x12 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH18 0x3AB73432B0B63A343C903837B9B4BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4364 PUSH1 0x15 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH21 0x6C6F616E506172616D73206E6F7420657869737473 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4395 PUSH1 0x14 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43C5 PUSH1 0x2E DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x6D696E206F72206D617820736F7572636520746F6B656E20616D6F756E74206E DUP2 MSTORE PUSH14 0x1959591CC81D1BC81899481CD95D PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4415 PUSH1 0x13 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH19 0x1B1BD85B94185C985B5CC8191A5CD8589B1959 PUSH1 0x6A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4444 PUSH1 0xC DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x446C PUSH1 0xD DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH13 0x696E76616C6964207374617465 PUSH1 0x98 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4495 PUSH1 0x2A DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44E1 PUSH1 0x21 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x6C6F616E44617461427974657320726571756972656420776974682065746865 DUP2 MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4524 PUSH1 0xB DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH11 0x1CDDD85C0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x454B PUSH1 0x16 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH22 0x1CDDD85C081D1BDBC81B185C99D9481D1BC8199A5B1B PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x457D PUSH1 0x15 DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH21 0x696E697469616C4D617267696E20746F6F206C6F77 PUSH1 0x58 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45AE PUSH1 0x1F DUP4 PUSH2 0x4CE9 JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45E6 DUP3 DUP8 PUSH2 0x3E7B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x45F6 DUP3 DUP7 PUSH2 0x3E58 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x4606 DUP3 DUP6 PUSH2 0x3E58 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x4616 DUP3 DUP5 PUSH2 0x3E7B JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16DC DUP3 DUP5 PUSH2 0x3E8C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x168D DUP3 DUP5 PUSH2 0x3E49 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x464A DUP3 DUP6 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x16DC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3E49 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x4665 DUP3 DUP11 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x4672 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x467F PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x468C PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x4699 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x46A6 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x46B3 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x46CD DUP3 DUP8 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x46DA PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x46E7 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0xB62 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4702 DUP3 DUP7 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x470F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x1C48 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x472A DUP3 DUP8 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x4737 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x4744 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0xB62 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x3E49 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x475F DUP3 DUP8 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x476C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x46E7 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4787 DUP3 DUP9 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x4794 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x47A1 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x47AE PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x1331 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x47CA DUP3 DUP12 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x47D7 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x47E4 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x47F1 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x47FE PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x480B PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4818 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4825 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x4841 DUP3 DUP13 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x484E PUSH1 0x20 DUP4 ADD DUP12 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x485B PUSH1 0x40 DUP4 ADD DUP11 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4868 PUSH1 0x60 DUP4 ADD DUP10 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4875 PUSH1 0x80 DUP4 ADD DUP9 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4882 PUSH1 0xA0 DUP4 ADD DUP8 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x488F PUSH1 0xC0 DUP4 ADD DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x489C PUSH1 0xE0 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x48AA PUSH2 0x100 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x48C6 DUP3 DUP6 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x16DC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x48E1 DUP3 DUP7 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x470F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x168D DUP3 DUP5 PUSH2 0x3E69 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x490B DUP3 DUP12 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4918 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x3E69 JUMP JUMPDEST PUSH2 0x4925 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x4932 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x47FE PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x494E DUP3 DUP16 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x495B PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4968 PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4975 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x3E69 JUMP JUMPDEST PUSH2 0x4982 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x498F PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x499C PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x49A9 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x49B7 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x49C5 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x49D3 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x3E49 JUMP JUMPDEST PUSH2 0x49E1 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x3E49 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x168D DUP3 DUP5 PUSH2 0x3EBB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x16DC DUP2 DUP5 PUSH2 0x3EC4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x3EFC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x3F2B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x3F4D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x3F86 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x3FB2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x3FFA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4027 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4060 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x408A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x40BB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x40F4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4123 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x414E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4187 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x41AE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x41DC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4206 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4230 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x425B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x42C8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x42F0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4329 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4357 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4388 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x43B8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4408 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4437 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x445F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4488 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x44D4 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4517 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x453E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x4570 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x168D DUP2 PUSH2 0x45A1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x168D DUP3 DUP5 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x48C6 DUP3 DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x48E1 DUP3 DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4C79 DUP3 DUP9 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4794 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x3E72 JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x4C94 DUP3 DUP10 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4CA1 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4CAE PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4CBB PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4CC8 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x3E72 JUMP JUMPDEST PUSH2 0x4CD5 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x3E72 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x168D DUP3 PUSH2 0x4D12 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x168D DUP3 PUSH2 0x4CF2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D44 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4D2C JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2B89 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x168D DUP3 PUSH1 0x0 PUSH2 0x168D DUP3 PUSH2 0x4D70 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x4D7F DUP2 PUSH2 0x4CF2 JUMP JUMPDEST DUP2 EQ PUSH2 0x14F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4D7F DUP2 PUSH2 0x4CFD JUMP JUMPDEST PUSH2 0x4D7F DUP2 PUSH2 0x4D02 JUMP JUMPDEST PUSH2 0x4D7F DUP2 PUSH2 0x4D05 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH28 0xC20ADAEE0729FBF3A580FBBE72ECDA0826701F4CD0162938FC39FB5B KECCAK256 SELFBALANCE PUSH30 0x6C6578706572696D656E74616CF564736F6C634300051100400000000000 ",
              "sourceMap": "676:27624:130:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;676:27624:130;925:30;;-1:-1:-1;;;925:30:130;;;;;;;;;;;;;;;;1636:67:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5443:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5443:30:14;;;:::i;:::-;;;;;;;;1270:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1270:46:14;;;;;;;;:::i;6768:81::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6768:81:14;;;;;;;;:::i;:::-;;;;;;;;4372:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4372:55:14;;;;;;;;:::i;5558:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5558:53:14;;;;;;;;:::i;:::-;;;;;;;;6827:994:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6827:994:130;;;;;;;;:::i;3097:46:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3097:46:14;;;:::i;3969:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3969:32:14;;;:::i;4448:242:130:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4448:242:130;;;;;;;;:::i;:::-;;1527:65:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1527:65:14;;;;;;;;:::i;3376:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3376:55:14;;;;;;;;:::i;4925:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4925:48:14;;;;;;;;:::i;1744:69::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1744:69:14;;;;;;;;:::i;2825:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2825:55:14;;;;;;;;:::i;2717:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2717:41:14;;;:::i;4832:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4832:37:14;;;:::i;2013:52::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2013:52:14;;;;;;;;:::i;:::-;;;;;;;;;;5060:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5060:50:14;;;:::i;3031:1108:130:-;;;;;;;;;:::i;:::-;;;;;;;;;1898:76:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1898:76:14;;;;;;;;:::i;:::-;;;;;;;;;;;;4542:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4542:47:14;;;;;;;;:::i;5650:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5650:57:14;;;;;;;;:::i;1087:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1087:24:14;;;:::i;6000:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6000:39:14;;;:::i;1012:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1012:25:14;;;:::i;3887:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3887:32:14;;;:::i;7007:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7007:17:14;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;4285:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4285:55:14;;;;;;;;:::i;1134:83:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;2994:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2994:55:14;;;;;;;;:::i;5113:49::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5113:49:14;;;:::i;5340:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5340:45:14;;;:::i;4075:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4075:47:14;;;:::i;5175:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5175:29:14;;;:::i;:::-;;;;;;;;3781:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3781:57:14;;;;;;;;:::i;3605:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3605:57:14;;;;;;;;:::i;6272:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6272:30:14;;;:::i;1174:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1174:48:14;;;:::i;6168:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6168:55:14;;;;;;;;:::i;1347:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1347:37:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1087:530:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1087:530:130;;;;;;;;:::i;1437:48:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1437:48:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;6853:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6853:69:14;;;;;;;;:::i;6305:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6305:31:14;;;:::i;4651:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4651:43:14;;;:::i;3209:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3209:55:14;;;;;;;;:::i;5516:810:130:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5516:810:130;;;;;;;;:::i;8525:1339::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8525:1339:130;;;;;;;;:::i;2626:29:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2626:29:14;;;:::i;3490:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3490:47:14;;;:::i;4754:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4754:35:14;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1351:98:142;;;;;;;;:::i;6447:60:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6447:60:14;;;:::i;4198:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4198:55:14;;;:::i;5207:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5207:35:14;;;:::i;5389:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5389:20:14;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;6827:994:130:-;6999:32;7041:17;;7037:781;;7092:92;7115:9;7126:15;7143:12;7157;7171;7092:22;:92::i;:::-;7065:119;;7609:11;7623:12;:100;;7683:40;7698:24;7683:14;:40::i;:::-;7623:100;;;7638:42;7655:24;7638:16;:42::i;:::-;7609:114;-1:-1:-1;7732:8:130;;7728:86;;7775:33;:24;7804:3;7775:33;:28;:33;:::i;:::-;7748:60;;7728:86;7037:781;;6827:994;;;;;;;:::o;3097:46:14:-;;;;:::o;3969:32::-;;;;:::o;4448:242:130:-;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;4569:13:130;;;;:5;:13;;;;;:22;;;-1:-1:-1;;;;;4569:22:130;4595:10;4569:36;4561:61;;;;-1:-1:-1;;;4561:61:130;;;;;;;;;4627:59;4648:6;4656:10;4668:9;4679:6;4627:20;:59::i;:::-;4448:242;;;:::o;1527:65:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;3031:1108:130:-;3309:20;3331:21;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;3366:9:130;:14;;:43;;-1:-1:-1;3384:25:130;;;3366:43;3358:89;;;;-1:-1:-1;;;3358:89:130;;;;;;;;;3516:10;3539:1;3495:32;;;:20;:32;;;;;;-1:-1:-1;;;;;3495:32:130;3487:73;;;;-1:-1:-1;;;3487:73:130;;;;;;;;;3565:33;;:::i;:::-;-1:-1:-1;3601:24:130;;;;:10;:24;;;;;;;;;3565:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3565:60:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3629:57;;;;-1:-1:-1;;;3629:57:130;;;;;;;;;3783:25;;;;3810:31;;;;3722:32;;3760:126;;3843:13;;;;3858;3873:12;3760:22;:126::i;:::-;3722:164;-1:-1:-1;3898:29:130;3890:57;;;;-1:-1:-1;;;3890:57:130;;;;;;;;;3962:173;3982:15;4003:6;4015:12;4033:24;4063:13;4082;3962:173;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;3962:173:130;;;;;;;;;;;-1:-1:-1;4101:10:130;;3962:173;;;;4101:10;;3962:173;4101:10;3962:173;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3962:173:130;;;;;4117:13;;3962:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3962:14:130;;-1:-1:-1;;;3962:173:130:i;:::-;493:1:143;1234:14;:38;3952:183:130;;;;-1:-1:-1;3031:1108:130;-1:-1:-1;;;;;;;;;;;3031:1108:130:o;1898:76:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1087:530:130:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;1146:33:130;1182:49;;;:12;:49;;;;-1:-1:-1;;;;;1182:49:130;;1235:55;;1283:6;1235:10;:55::i;:::-;1294:53;-1:-1:-1;;;1340:6:130;1294:10;:53::i;:::-;1351:60;-1:-1:-1;;;1404:6:130;1351:10;:60::i;:::-;1415:55;-1:-1:-1;;;1463:6:130;1415:10;:55::i;:::-;1474:49;-1:-1:-1;;;1516:6:130;1474:10;:49::i;:::-;-1:-1:-1;;;1590:6:130;-1:-1:-1;;;;;1532:81:130;1563:25;-1:-1:-1;;;;;1532:81:130;;;;;;;;;;;1058:1:142;1087:530:130;:::o;1437:48:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;5516:810:130:-;5730:7;5765;5730;5809:48;5844:12;5809:30;:12;5826;5809:30;:16;:30;:::i;:::-;:34;:48;:34;:48;:::i;:::-;5788:69;-1:-1:-1;5862:30:130;5895:38;5927:5;5895:27;:11;5788:69;5895:27;:15;:27;:::i;:38::-;5862:71;-1:-1:-1;5938:18:130;5959:41;:13;5862:71;5959:41;:17;:41;:::i;:::-;5938:62;;6004:18;6025:26;6040:10;6025:14;:26::i;:::-;6004:47;-1:-1:-1;6059:15:130;;6055:70;;6094:26;:10;6109;6094:26;:14;:26;:::i;:::-;6081:39;;6055:70;6129:22;6154:60;6175:9;6186:15;6203:10;6154:20;:60::i;:::-;6129:85;-1:-1:-1;6222:19:130;6218:105;;6255:1;6248:8;;;;;;;;;;6218:105;6279:39;:19;6303:14;6279:39;:23;:39;:::i;:::-;6272:46;;;;;;;;5516:810;;;;;;;;;:::o;8525:1339::-;8700:20;8730:17;;8726:1135;;8758:12;8754:110;;;8793:24;:12;8810:6;8793:24;:16;:24;:::i;:::-;8778:39;;8754:110;8889:21;8868:18;8929:12;:72;;8975:26;8990:10;8975:14;:26::i;:::-;8929:72;;;8944:28;8961:10;8944:16;:28::i;:::-;8915:86;-1:-1:-1;9010:8:130;;9006:58;;9039:19;:10;9054:3;9039:19;:14;:19;:::i;:::-;9026:32;;9006:58;9085:15;-1:-1:-1;;;;;9072:28:130;:9;-1:-1:-1;;;;;9072:28:130;;9068:395;;;9123:40;9150:12;9123:22;:10;9138:6;9123:22;:14;:22;:::i;:40::-;9108:55;;9068:395;;;9253:10;;9241:61;;-1:-1:-1;;;9241:61:130;;9182:24;;;;-1:-1:-1;;;;;9253:10:130;;;;9241:33;;:61;;9275:15;;9292:9;;9241:61;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9241:61:130;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9241:61:130;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9241:61:130;;;;;;;;;9181:121;;;;9312:21;9337:1;9312:26;9308:150;;9362:89;9429:21;9362:62;9411:12;9362:62;9389:16;9362:22;:10;9377:6;9362:22;:14;:22;:::i;:::-;:26;:44;:26;:44;:::i;:89::-;9347:104;;9308:150;9068:395;;;8726:1135;;8525:1339;;;;;;;:::o;2626:29:14:-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;27141:1157:130:-;27316:29;27368:15;-1:-1:-1;;;;;27355:28:130;:9;-1:-1:-1;;;;;27355:28:130;;27351:732;;;27414:42;27449:6;27414:30;:12;27431;27414:30;:16;:30;:::i;:42::-;27390:66;;27351:732;;;27729:10;;27717:61;;-1:-1:-1;;;27717:61:130;;27658:24;;;;-1:-1:-1;;;;;27729:10:130;;;;27717:33;;:61;;27751:15;;27768:9;;27717:61;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27717:61:130;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27717:61:130;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;27717:61:130;;;;;;;;;27657:121;;;;27787:16;27807:1;27787:21;27783:296;;27840:91;27924:6;27840:79;27906:12;27840:61;27884:16;27840:79;:12;27857:21;27840:39;:16;:39;:::i;:91::-;27816:115;;27783:296;27351:732;;;28139:12;:42;;;;-1:-1:-1;28155:26:130;;;28139:42;28135:160;;;28212:78;28268:21;28212:51;28250:12;28212:33;28268:21;28238:6;28212:33;:25;:33;:::i;:51::-;:55;:78;:55;:78;:::i;882:148:96:-;953:7;973:53;1019:6;973:37;992:17;;973:14;:18;;:37;;;;:::i;:::-;:45;:53;:45;:53;:::i;:::-;966:60;882:148;-1:-1:-1;;882:148:96:o;1925:510::-;1998:7;2018:55;2066:6;2018:39;2037:19;;2018:14;:18;;:39;;;;:::i;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;19418:237:130:-;19539:25;;;;:17;:25;;;;;;;;-1:-1:-1;;;;;19539:36:130;;;;;;;;;;;;;;:45;;-1:-1:-1;;19539:45:130;;;;;;;19594:57;;;;;19539:25;;19594:57;;;;19539:45;;19594:57;;;;;;;;;;19418:237;;;;:::o;11198:3186::-;11477:7;11486;11542:15;:25;;;-1:-1:-1;;;;;11507:60:130;:15;:31;;;-1:-1:-1;;;;;11507:60:130;;;11499:94;;;;-1:-1:-1;;;11499:94:130;;;;;;;;;11622:15;:32;;;11605:13;:49;;11597:83;;;;-1:-1:-1;;;11597:83:130;;;;;;;;;11782:27;;;;:32;;;:54;;-1:-1:-1;11818:13:130;;;;:18;;11782:54;11770:112;;;;-1:-1:-1;;;11770:112:130;;;;;;;;;11910:22;11935:5;:89;11941:82;11957:15;11974:6;11982:13;11997;12012:10;11941:15;:82::i;:::-;11935:89;;;;;;;;;;;11910:114;;12057:14;12077:166;12102:15;12123:9;12138:10;12149:1;12138:13;;;;;;;;;;;12169:10;12180:1;12169:13;;;;12206:10;12217:1;12206:13;;;;12077:19;:166::i;:::-;12057:186;-1:-1:-1;12321:25:130;12057:186;12321:10;12332:1;12321:13;;;;;;:25;:17;:25;:::i;:::-;12305:13;;;:41;12351:1349;;;;12382:13;;;;:18;12374:49;;;;-1:-1:-1;;;12374:49:130;;;;;;;;;12429:20;12452:31;12469:10;12480:1;12469:13;;;;12452:16;:31::i;:::-;12560;;;;12617:25;;;;12429:54;;-1:-1:-1;12560:31:130;12651:17;;12647:363;;12676:240;12699:13;12713:1;12699:16;;;;12735:12;;12754:16;12791:10;12898:12;12676:16;:240::i;:::-;12939:65;12991:12;12939:10;12950:1;12939:13;;:65;12923:13;;;:81;12647:363;12351:1349;;;;;;13162:22;13225:383;13240:6;13252:15;:25;;;13283:15;:31;;;13320:13;13334:1;13320:16;;;;;;;;;;;13355:13;;;;13417:1;;;13590:13;13225:9;:383::i;:::-;13208:13;;;13189:419;-1:-1:-1;13189:419:130;-1:-1:-1;13629:66:130;13189:419;13208:10;13640:1;13629:13;;;;;;:66;:50;:66;:::i;:::-;13613:13;;;:82;-1:-1:-1;12351:1349:130;13741:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13741:106:130;;;;;;;;;;;;;;;;;;13764:15;;13792:13;;13807:10;;:13;;;;13822:24;13741:22;:106::i;:::-;13729:152;;;;-1:-1:-1;;;13729:152:130;;;;;;;;;13934:13;;;;13909:20;;;;:39;;:24;:39::i;:::-;13886:20;;;:62;13953:267;;;;14039:22;;;;:43;;14066:15;14039:43;:26;:43;:::i;:::-;14023:13;;;:59;13953:267;;;14180:35;14193:6;14201:13;14180:12;:35::i;:::-;14164:13;;;:51;13953:267;14224:82;14238:15;14255:9;14266:13;14281:10;14293:12;14224:13;:82::i;:::-;-1:-1:-1;;;14319:13:130;;;;14334;;;;;14319;;14334;;-1:-1:-1;11198:3186:130;;-1:-1:-1;;;;;;;11198:3186:130:o;780:87:137:-;853:10;780:87;:::o;7574:230:14:-;-1:-1:-1;;;;;;7635:17:14;;;;;;:12;:17;;;;;:26;;-1:-1:-1;;;;;;7635:26:14;-1:-1:-1;;;;;7635:26:14;;;;;;;;7670:20;7666:135;;7697:40;:15;-1:-1:-1;;;;;;7724:12:14;;7697:40;:26;:40;:::i;:::-;;7666:135;;;7753:43;:15;-1:-1:-1;;;;;;7783:12:14;;7753:43;:29;:43;:::i;7666:135::-;7574:230;;:::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;2817:121;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;1201:125::-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;7127:318:151:-;7314:9;;7404:33;;;7303:138;;-1:-1:-1;;;7303:138:151;;7256:23;;-1:-1:-1;;;;;7314:9:151;;;;7303:44;;:138;;7352:11;;7368:9;;7382:17;;7404:33;;;;7303:138;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7303:138:151;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7303:138:151;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7303::151;;;;;;;;;7285:156;7127:318;-1:-1:-1;;;;7127:318:151:o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;3821:129:145:-;3883:7;3903:43;3911:1;3914;3903:43;;;;;;;;;;;;;;;;;:7;:43::i;21973:1720:130:-;22166:7;22187:15;:22;;;22179:54;;;;-1:-1:-1;;;22179:54:130;;;;;;;;;22255:16;;;22294;;;;22332;;;;22375:13;;;;22294:16;;22332;22393:21;;:::i;:::-;22423:11;22419:1129;;-1:-1:-1;;;;;22441:23:130;;;;;;:13;:23;;;;;;;;;:25;;;;;;;;22507:18;;22490:79;;;;22507:18;22527:6;;22455:8;;22441:25;;22490:79;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;22490:79:130;;;22480:90;;49:4:-1;22480:90:130;;;;22583:13;;;;:5;:13;;;;;:16;22480:90;;-1:-1:-1;22583:21:130;22575:45;;;;-1:-1:-1;;;22575:45:130;;;;;;;;;-1:-1:-1;22638:367:130;;;;;;;;;;;22679:18;;22638:367;;;;-1:-1:-1;22638:367:130;;;;;;22735:4;22638:367;;;;;;;;;;;;;;;;22830:15;22638:367;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22638:367:130;;;;;;;;;;;;;23011:33;:14;22653:6;23011:33;:25;:33;:::i;:::-;-1:-1:-1;;;;;;23049:22:130;;;;;;:14;:22;;;;;:41;;23083:6;23049:41;:33;:41;:::i;:::-;-1:-1:-1;;;;;;23095:26:130;;;;;;:16;:26;;;;;:45;;23133:6;23095:45;:37;:45;:::i;:::-;;22419:1129;;;-1:-1:-1;23168:13:130;;;;:5;:13;;;;;;;;;23156:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23156:25:130;;;;;;;;;;;;;;;;;;;;23194:60;;;23232:9;:22;;;23214:15;:40;23194:60;23186:87;;;;-1:-1:-1;;;23186:87:130;;;;;;;;;23308:8;-1:-1:-1;;;;;23286:30:130;:9;:18;;;-1:-1:-1;;;;;23286:30:130;;23278:60;;;;-1:-1:-1;;;23278:60:130;;;;;;;;;23371:6;-1:-1:-1;;;;;23351:26:130;:9;:16;;;-1:-1:-1;;;;;23351:26:130;;23343:54;;;;-1:-1:-1;;;23343:54:130;;;;;;;;;23436:18;;23410:22;;;;:44;23402:76;;;;-1:-1:-1;;;23402:76:130;;;;;;;;;23506:19;;;;:37;;23530:12;23506:37;:23;:37;:::i;:::-;23484:19;;;:59;22419:1129;-1:-1:-1;;;;;23556:21:130;;;23552:90;;23584:53;23605:6;23613:8;23623:7;23632:4;23584:20;:53::i;:::-;23646:13;;;;:5;:13;;;;;;;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23646:25:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23646:25:130;;;-1:-1:-1;;;;;23646:25:130;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23646:13:130;;21973:1720;-1:-1:-1;;;;;;;;21973:1720:130:o;24142:2502::-;24448:16;;;;24466:25;;;;24357:30;;24435:57;;-1:-1:-1;;;;;24448:16:130;;;;24435:12;:57::i;:::-;24551:12;;24497:38;24538:26;;;:12;:26;;;;;;;;24613:14;24628:16;;;;-1:-1:-1;;;;;24628:16:130;;;24613:32;;;;;;;;24646:25;;;;;24613:59;;;;;;;;;;24699:27;;;;24809:25;;24853:31;;;;24979:18;;;;24538:26;;24613:59;;24731:290;;24538:26;;24551:12;24809:25;24853:31;24979:18;25002:15;24731:34;:290::i;:::-;25026:32;25066:16;;:47;;;;-1:-1:-1;25086:22:130;;;;:27;;25066:47;25062:256;;;25147:166;25307:5;25147:150;25268:17;:28;;;25147:53;25184:15;25147:9;:27;;;:36;;:53;;;;:::i;:166::-;25120:193;;25062:256;25322:18;25343:43;25373:12;25343:25;:12;25360:7;25343:25;:16;:25;:::i;:43::-;25453:28;;25322:64;;-1:-1:-1;25453:44:130;;25322:64;25453:44;:32;:44;:::i;:::-;25422:75;;25534:30;;;;:46;;25569:10;25534:46;:34;:46;:::i;:::-;25501:30;;;:79;25589:16;25585:726;;25786:28;;25726:119;;25825:15;;25726:89;;:55;25775:5;25726:44;:14;25745:24;25726:44;:18;:44;:::i;:119::-;25701:22;;;:144;;;25865:43;;25892:15;25865:43;:26;:43;:::i;:::-;25851:57;;25995:4;25981:11;:18;25973:45;;;;-1:-1:-1;;;25973:45:130;;;;;;;;;26049:14;26024:39;;25585:726;;;26108:22;;;;26104:102;;26168:32;:15;26188:11;26168:32;:19;:32;:::i;:::-;26143:22;;;:57;26104:102;26236:70;26300:5;26236:59;26284:10;26236:43;26263:15;26236:9;:22;;;:26;;:43;;;;:::i;:70::-;26211:95;;25585:726;26348:30;;;;:58;;26383:22;26348:58;:34;:58;:::i;:::-;26315:30;;;:91;26495:34;;:52;;26534:12;26495:52;:38;:52;:::i;:::-;26458:89;;26583:29;;;;:57;;26617:22;26583:57;:33;:57;:::i;:::-;26551:19;:29;;:89;;;;24142:2502;;;;;;;;;;;;:::o;5085:517:96:-;5233:17;;5229:370;;-1:-1:-1;;;;;5368:32:96;;;;;;:22;:32;;;;;;:50;;5405:12;5368:50;:36;:50;:::i;:::-;-1:-1:-1;;;;;5333:32:96;;;;;;;:22;:32;;;;;;;:85;;;;5429:53;;5461:6;;5333:32;5429:53;;;;;;;5469:12;;5429:53;;;;;;;;;;5529:65;5543:4;5549:6;5557:8;5567:12;5581;5529:13;:65::i;:::-;5085:517;;;;;:::o;1194:1199:151:-;1626:339;;;;;;;;-1:-1:-1;;;;;1626:339:151;;;;;;;;;;;;;;;;1687:4;1626:339;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1467:31;;;;;;1626:339;;;1835:6;1846:9;1860:13;1467:31;1626:10;:339::i;:::-;1575:390;;-1:-1:-1;1575:390:151;-1:-1:-1;2012:50:151;2027:11;1575:390;2012:14;:50::i;:::-;2143:10;;2266:15;;2131:154;;-1:-1:-1;;;2131:154:151;;-1:-1:-1;;;;;2143:10:151;;;;2131:46;;:154;;2182:11;;2198:9;;2212:21;;2238:23;;2131:154;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2131:154:151;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2131:154:151;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2131:154:151;;;;;;;;;2108:177;;2325:9;-1:-1:-1;;;;;2295:94:151;2312:11;-1:-1:-1;;;;;2295:94:151;2304:6;2295:94;2336:4;2342:21;2365:23;2295:94;;;;;;;;;;;;;;;;;1194:1199;;;;;;;;;;;;;:::o;20124:845:130:-;20330:4;20412:53;20455:9;20412:38;:24;20441:8;20412:38;:28;:38;:::i;:53::-;20385:80;;20490:24;20474:13;:40;20470:481;;;20587:20;;;;:25;20583:364;;20659:10;;20693:25;;;;20726:31;;;;;20765:19;;;;20792:20;;;;20647:193;;-1:-1:-1;;;20647:193:130;;20620:19;;-1:-1:-1;;;;;20659:10:130;;20647:38;;:193;;20693:25;;20726:31;;20820:13;;20647:193;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20647:193:130;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20647:193:130;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;20647:193:130;;;;;;;;;20620:220;-1:-1:-1;20887:24:130;20853:30;:13;20620:220;20853:30;:17;:30;:::i;:::-;:58;;20846:65;;;;;20583:364;-1:-1:-1;20936:5:130;20929:12;;20583:364;-1:-1:-1;20961:4:130;20124:845;;;;;;;:::o;15434:1221::-;15760:10;;15794:25;;;;15825:31;;;;15862:19;;;;;15887:20;;;;15748:164;;-1:-1:-1;;;15748:164:130;;15690:21;;;;-1:-1:-1;;;;;15760:10:130;;;;15748:40;;:164;;15794:25;;15825:31;;15748:164;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15748:164:130;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15748:164:130;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15748:164:130;;;;;;;;;15689:223;;;;15940:15;:33;;;15924:13;:49;15916:80;;;;-1:-1:-1;;;15916:80:130;;;;;;;;;16033:15;16005:9;:24;;;:43;16001:522;;;16107:10;;16134:25;;;;16161:31;;;;16095:98;;-1:-1:-1;;;16095:98:130;;16055:33;;-1:-1:-1;;;;;16107:10:130;;16095:38;;:98;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16095:98:130;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16095:98:130;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16095:98:130;;;;;;;;;16250:10;;16277:31;;;;16310:25;;;;16238:98;;-1:-1:-1;;;16238:98:130;;16055:138;;-1:-1:-1;16198:33:130;;-1:-1:-1;;;;;16250:10:130;;;;16238:38;;:98;;16277:31;;16238:98;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16238:98:130;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16238:98:130;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16238:98:130;;;;;;;;;16198:138;-1:-1:-1;16341:21:130;16365:56;:25;16198:138;16365:56;:29;:56;:::i;:::-;16341:80;;16448:12;:70;;16504:13;;;;16486:32;;:13;;:17;:32::i;:::-;16448:70;;;16463:20;16448:70;16426:19;;;:92;-1:-1:-1;;;16001:522:130;16527:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16527:124:130;;;;;;;;;;;;;;;;;;16546:15;;16574:13;16589:10;16601:20;16623:13;16638:12;16527:18;:124::i;:::-;15434:1221;;;;;;;:::o;1293:212:95:-;1370:4;1385:20;1394:3;1399:5;1385:8;:20::i;:::-;1380:122;;-1:-1:-1;1431:10:95;;;;27::-1;;23:18;;;45:23;;;-1:-1;1431:22:95;;;;;;;;;;;;;1412:16;;;;;;;;;;;:41;1458:11;;1380:122;-1:-1:-1;1492:5:95;1485:12;;2102:845;2182:4;2196:20;2205:3;2210:5;2196:8;:20::i;:::-;2192:752;;;2223:21;2247:16;;;;;;;;;;;2266:1;2292:10;;:17;-1:-1:-1;;2247:20:95;;;;2292:21;2428:26;;;2424:318;;2462:17;2482:3;:10;;2493:9;2482:21;;;;;;;;;;;;;;;;2462:41;;2607:9;2579:3;:10;;2590:13;2579:25;;;;;;;;;;;;;;;;;;;:37;;;;2669:20;;;;;;;;;2708:1;2692:17;;2669:40;;2424:318;2807:9;:16;;;;;;;;;;2800:23;2878:10;;;:16;;;;;;;;;;;;;;;;;;;;;;;;2907:4;2900:11;;;;;;3411:315:145;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1614:175::-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;4045:285::-;4144:7;4233:12;4225:6;4217:29;;;;-1:-1:-1;;;4217:29:145;;;;;;;;;;-1:-1:-1;4255:6:145;4251:30;;-1:-1:-1;4275:1:145;4268:8;;4251:30;4284:9;4307:1;4302;4298;:5;4297:11;;;;;;4312:1;4296:17;;4045:285;-1:-1:-1;;;;;4045:285:145:o;1036:930:97:-;-1:-1:-1;;;;;1155:22:97;;;1110:42;1155:22;;;:14;:22;;;;;;;;:37;;;;;;;;;;;1232:30;;;;1155:37;;1110:42;1232:35;;;;:80;;-1:-1:-1;1271:36:97;;;;:41;;1232:80;1228:735;;;1337:105;1435:6;1337:93;1399:19;:30;;;1337:57;1357:19;:36;;;1337:15;:19;;:57;;;;:::i;:105::-;1487:15;1448:36;;;:54;1530:29;;;;1319:123;;-1:-1:-1;1512:47:97;;1508:100;;;-1:-1:-1;1579:29:97;;;;1508:100;1618:20;;1614:275;;1678:29;;;;:50;;1712:15;1678:50;:33;:50;:::i;:::-;1646:29;;;:82;1766:29;;;;:50;;1800:15;1766:50;:33;:50;:::i;:::-;1734:29;;;:82;1823:60;1844:6;1852:13;1867:15;1823:20;:60::i;:::-;1228:735;;;1943:15;1904:36;;;:54;1228:735;1036:930;;;;:::o;6369:621:96:-;6647:26;6679:139;6798:15;6679:109;6770:17;;6679:86;6736:17;:28;;;6679:52;6696:17;:34;;;6679:12;:16;;:52;;;;:::i;:139::-;6823:34;;;:49;;;6647:171;-1:-1:-1;6881:23:96;;6877:110;;6911:71;6925:4;6931:6;6939:8;6949:12;6963:18;7367:1524;7557:16;;7599:10;;-1:-1:-1;;;;;7618:24:96;;;7505:20;7618:24;;;:14;:24;;;;;;;;:38;;;;;;;;;;;7505:20;;7557:16;7599:10;;;;;7618:42;7614:116;;-1:-1:-1;;;;;7687:24:96;;;;;;;:14;:24;;;;;;;;:38;;;;;;;;;;;-1:-1:-1;7614:116:96;7996:15;;7834:12;;7848:17;;-1:-1:-1;;;;;7872:22:96;;;;-1:-1:-1;;;7929:45:96;7981:8;;7996:15;8086:44;8123:6;8086:32;:9;8100:17;8086:32;:13;:32;:::i;:44::-;7900:236;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;7900:236:96;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;7900:236:96;;;179:29:-1;;;;160:49;;;7872:269:96;;;;7900:236;7872:269;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7833:308:96;;;;8224:1;8215:7;8212:14;8209:2;;;8265;8259:4;8255:13;8249:20;8233:36;;8209:2;8286:17;;8282:606;;8317:15;;8342:16;;8310:63;;-1:-1:-1;;;8310:63:96;;-1:-1:-1;;;;;8317:15:96;;;;8310:31;;:63;;8342:16;;;8360:12;;8310:63;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8310:63:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8310:63:96;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8310:63:96;;;;;;;;;-1:-1:-1;8402:16:96;;8510:30;;8430:111;;8380:12;;-1:-1:-1;;;;;8402:16:96;;8430:111;;8490:4;;8496:12;;8430:111;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;8430:111:96;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;8402:145:96;;;8430:111;8402:145;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8379:168:96;;;8557:7;8553:331;;;8592:17;;:35;;8614:12;8592:35;:21;:35;:::i;:::-;8572:17;:55;8656:15;;8714:30;;8639:106;;8673:6;;-1:-1:-1;;;;;8656:15:96;;;;8639:106;;;;;;;;8681:17;;8700:12;;8639:106;;;;;;;;;;8553:331;;;8789:15;;8847:30;;8768:110;;8806:6;;-1:-1:-1;;;;;8789:15:96;;;;8768:110;;;;;;;;8814:17;;8833:12;;8768:110;;;;;;;;;;8553:331;8282:606;;7367:1524;;;;;;;;;;:::o;2909:2766:151:-;3381:7;;3105;;;;3381:12;;;:28;;-1:-1:-1;3397:7:151;;;;:12;;3381:28;3373:87;;;;-1:-1:-1;;;3373:87:151;;;;;;;;;3469:7;;;;3465:45;;3498:7;;;3488;;:17;3465:45;3532:7;;;;3521;;:18;;3513:59;;;;-1:-1:-1;;;3513:59:151;;;;;;;;;3577:31;3612:29;3646:18;3673:8;3668:851;;3709:7;;;;3705:810;;3797:14;3793:131;;;3833:28;3853:4;3858:1;3853:7;;;;;3833:19;:28::i;:::-;3820:41;;3793:131;;;3894:23;3909:4;3914:1;3909:7;;;;;3894:14;:23::i;:::-;3881:36;;3793:131;3934:15;;3930:303;;3980:8;;;;4019;;3958:227;;3980:8;4005:6;;3980:5;4068:1;4062:8;;;;;4168:10;3958:14;:227::i;:::-;4203:23;4215:10;4203:4;4208:1;4203:7;;:23;4193:33;;3930:303;3705:810;;;4309:14;4305:131;;;4345:28;4365:4;4370:1;4365:7;;4345:28;4332:41;;4305:131;;;4406:23;4421:4;4426:1;4421:7;;4406:23;4393:36;;4305:131;4446:15;;4442:68;;4480:23;4492:10;4480:4;4485:1;4480:7;;:23;4470:7;;;:33;4442:68;4531:20;;:25;4523:51;;;;-1:-1:-1;;;4523:51:151;;;;;;;;;4630:32;4650:5;4657:4;4630:19;:32::i;:::-;4671:7;;;;4579:83;;-1:-1:-1;4579:83:151;-1:-1:-1;4667:945:151;;4830:7;;4805:32;;4797:67;;;;-1:-1:-1;;;4797:67:151;;;;;;;;;4874:15;;4870:94;;4921:37;:21;4947:10;4921:37;:25;:37;:::i;:::-;4897:61;;4870:94;4667:945;;;5156:7;;;;5131:32;;;5123:64;;;;-1:-1:-1;;;5123:64:151;;;;;;;;;5227:7;;;;5200:34;;;5192:74;;;;-1:-1:-1;;;5192:74:151;;;;;;;;;5276:15;;5272:336;;5320:8;;;;;5369;;;5299:231;;5320:8;5344:6;;5320:5;5415:1;5409:8;;5299:231;5563:39;:23;5591:10;5563:39;:27;:39;:::i;:::-;5537:65;;5272:336;-1:-1:-1;5624:23:151;;;;-1:-1:-1;2909:2766:151;-1:-1:-1;;;;;;;2909:2766:151:o;7706:398::-;7809:11;;7828:17;;7824:277;;7904:10;;7852:19;;-1:-1:-1;;;;;7880:35:151;;;7904:10;;7880:35;7876:162;;;-1:-1:-1;7937:6:151;7876:162;;;7987:10;;7975:57;;-1:-1:-1;;;7975:57:151;;-1:-1:-1;;;;;7987:10:151;;;;7975:35;;:57;;8011:12;;8025:6;;7975:57;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7975:57:151;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7975:57:151;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7975:57:151;;;;;;;;;7961:71;;7876:162;8065:12;8050:11;:27;;8042:54;;;;-1:-1:-1;;;8042:54:151;;;;;;;;17781:1339:130;18029:12;18025:1092;;;18140:12;;18107:16;;;18065;;;18169:25;;;;18214:31;;;;-1:-1:-1;;;;;18053:448:130;;;;;;;;;;18169:25;18271:10;18079:1;18271:13;;;;18307;;;;18344;;18380;;;;;18053:448;;;;;;18271:13;18307;18344;18380;18420:20;;18472:6;;18053:448;;;;;;;;;;18025:1092;;;18571:28;18584:6;18592;18571:12;:28::i;:::-;18694:12;;18562:37;;-1:-1:-1;18661:13:130;18694:12;18661:16;;;;-1:-1:-1;;;;;18610:502:130;18621:13;18635:1;18621:16;;;;-1:-1:-1;;;;;18610:502:130;;18723:15;:31;;;18780:15;:25;;;18825:10;18836:1;18825:13;;;;;;;;;;;18861:10;18872:1;18861:13;;;;18899:10;18910:1;18899:13;;;;18936:22;;;;18983:10;18994:1;18983:13;;;;19044:10;19055:1;19044:13;;;;19081:6;18610:502;;;;;;;;;;;;;;;;;;;;;;;17781:1339;;;;;;;:::o;3145:122:95:-;3225:4;3242:16;;;;;;;;;;;;:21;;;3145:122::o;2234:702:97:-;2350:18;2371:50;2414:6;2371:38;2391:17;;2371:15;:19;;:38;;;;:::i;:50::-;2350:71;;2641:49;2656:6;2664:13;2679:10;2641:14;:49::i;:::-;2762:69;2776:13;2791:6;2799:31;:15;2819:10;2799:31;:19;:31;:::i;:::-;2762:13;:69::i;:::-;-1:-1:-1;;;;;2857:75:97;;;;;;;2900:31;:15;2920:10;2900:31;:19;:31;:::i;:::-;2857:75;;;;;;;;;;;;;;;2234:702;;;;:::o;1172:159:96:-;1248:7;1268:59;1320:6;1268:43;1287:23;;1268:14;:18;;:43;;;;:::i;3804:940::-;3973:10;4025:15;;4021:720;;-1:-1:-1;;;;;4051:28:96;;;4091:1;4051:28;;;:22;:28;;;;;;;:42;4047:343;;-1:-1:-1;;;;;4127:28:96;;;;;;;:22;:28;;;;;;4101:91;;4127:28;4150:4;4163:8;4173:18;4101:25;:91::i;:::-;;;4219:165;4311:67;4371:6;4311:55;4334:31;;4311:18;:22;;:55;;;;:::i;:67::-;4220:79;4243:55;4291:6;4243:43;4266:19;;4243:18;:22;;:43;;;;:::i;:55::-;4220:18;;:79;:22;:79;:::i;:::-;4219:85;:165;:85;:165;:::i;:::-;4198:186;;4047:343;-1:-1:-1;;;;;4504:30:96;;;;;;:20;:30;;;;;;:54;;4539:18;4504:54;:34;:54;:::i;:::-;-1:-1:-1;;;;;4471:30:96;;;;;;;:20;:30;;;;;;;:87;;;;4569:57;;4599:6;;4471:30;4569:57;;;;;;;4607:18;;4569:57;;;;;;;;;;4673:63;4687:4;4693:6;4701:8;4711:12;4725:10;4673:13;:63::i;:::-;3804:940;;;;;;:::o;6021:741:151:-;6290:8;;;6320;;;;6348;;;;;6190:17;6382:8;;;;6422:7;;6460;;;;6498;;;;6213:325;;6121:31;;;;6190:17;;-1:-1:-1;;;6241:43:151;6213:325;;6290:8;;6320;;6348;;6382;;6422:7;;6460;6213:325;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;6213:325:151;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;6213:325:151;;;179:29:-1;;;;160:49;;;6577:9:151;;:28;;6213:325;;-1:-1:-1;;;;;;;;6577:9:151;;:28;;6213:325;;6577:28;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;6559:46:151;-1:-1:-1;6559:46:151;-1:-1:-1;6559:46:151;6609:31;;;;-1:-1:-1;;;6609:31:151;;;;;;;;;6702:2;6696:4;6692:13;6686:20;6659:47;;6751:2;6745:4;6741:13;6735:20;6710:45;;6654:105;;;;;;;:::o;5885:395:96:-;5987:15;;5983:294;;-1:-1:-1;;;;;6118:30:96;;;;;;:20;:30;;;;;;:46;;6153:10;6118:46;:34;:46;:::i;:::-;-1:-1:-1;;;;;6085:30:96;;;;;;;:20;:30;;;;;;;:79;;;;6175:41;;;;;;;;;;6205:10;;6175:41;;;;;;;;;;5885:395;;;:::o;2297:195:102:-;2388:10;;2384:105;;2405:37;-1:-1:-1;;;;;2405:26:102;;2432:2;2436:5;2405:37;:26;:37;:::i;:::-;2474:2;-1:-1:-1;;;;;2453:31:102;2467:5;-1:-1:-1;;;;;2453:31:102;;2478:5;2453:31;;;;;;;3045:393:96;3340:15;;3312:122;;-1:-1:-1;;;3312:122:96;;3181:32;;;;-1:-1:-1;;;;;3340:15:96;;;;3312:82;;:122;;3395:8;;3405:6;;3413:8;;3423:10;;3312:122;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3312:122:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3312:122:96;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3312:122:96;;;;;;;;;3255:179;;;;-1:-1:-1;3045:393:96;-1:-1:-1;;;;;3045:393:96:o;654:174:144:-;765:58;;739:85;;758:5;;-1:-1:-1;;;788:23:144;765:58;;813:2;;817:5;;765:58;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;765:58:144;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;765:58:144;;;179:29:-1;;;;160:49;;;3111:27:144;3119:5;-1:-1:-1;;;;;3111:25:144;;:27::i;:::-;3103:71;;;;-1:-1:-1;;;3103:71:144;;;;;;;;;3233:12;3247:23;3282:5;-1:-1:-1;;;;;3274:19:144;3294:4;3274:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3232:67:144;;;;3311:7;3303:52;;;;-1:-1:-1;;;3303:52:144;;;;;;;;;3364:17;;:21;3360:200;;3489:10;3478:30;;;;;;;;;;;;;;3470:85;;;;-1:-1:-1;;;3470:85:144;;;;;;;;639:564:136;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;;1183:15:136;;;1148:51;-1:-1:-1;;639:564:136:o;676:27624:130:-;;;;;;;;;-1:-1:-1;676:27624:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;676:27624:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;161:176;260:6;292:15;278:30;;275:39;-1:-1;272:2;;;327:1;324;317:12;364:176;463:6;495:15;481:30;;478:39;-1:-1;475:2;;;530:1;527;520:12;548:124;612:20;;637:30;612:20;637:30;;679:128;754:13;;772:30;754:13;772:30;;814:130;881:20;;906:33;881:20;906:33;;951:128;1017:20;;1042:32;1017:20;1042:32;;1100:336;;;1214:3;1207:4;1199:6;1195:17;1191:27;1181:2;;1232:1;1229;1222:12;1181:2;-1:-1;1252:20;;1292:18;1281:30;;1278:2;;;1324:1;1321;1314:12;1278:2;1358:4;1350:6;1346:17;1334:29;;1409:3;1401:4;1393:6;1389:17;1379:8;1375:32;1372:41;1369:2;;;1426:1;1423;1416:12;1369:2;1174:262;;;;;;1581:134;1659:13;;1677:33;1659:13;1677:33;;1722:241;;1826:2;1814:9;1805:7;1801:23;1797:32;1794:2;;;1842:1;1839;1832:12;1794:2;1877:1;1894:53;1939:7;1919:9;1894:53;;1970:366;;;2091:2;2079:9;2070:7;2066:23;2062:32;2059:2;;;2107:1;2104;2097:12;2059:2;2142:1;2159:53;2204:7;2184:9;2159:53;;;2149:63;;2121:97;2249:2;2267:53;2312:7;2303:6;2292:9;2288:22;2267:53;;;2257:63;;2228:98;2053:283;;;;;;2343:737;;;;;;2512:3;2500:9;2491:7;2487:23;2483:33;2480:2;;;2529:1;2526;2519:12;2480:2;2564:1;2581:53;2626:7;2606:9;2581:53;;;2571:63;;2543:97;2671:2;2689:53;2734:7;2725:6;2714:9;2710:22;2689:53;;;2679:63;;2650:98;2779:2;2797:53;2842:7;2833:6;2822:9;2818:22;2797:53;;;2787:63;;2758:98;2887:2;2905:53;2950:7;2941:6;2930:9;2926:22;2905:53;;;2895:63;;2866:98;2995:3;3014:50;3056:7;3047:6;3036:9;3032:22;3014:50;;;3004:60;;2974:96;2474:606;;;;;;;;;3087:869;;;;;;;3276:3;3264:9;3255:7;3251:23;3247:33;3244:2;;;3293:1;3290;3283:12;3244:2;3328:1;3345:53;3390:7;3370:9;3345:53;;;3335:63;;3307:97;3435:2;3453:53;3498:7;3489:6;3478:9;3474:22;3453:53;;;3443:63;;3414:98;3543:2;3561:53;3606:7;3597:6;3586:9;3582:22;3561:53;;;3551:63;;3522:98;3651:2;3669:53;3714:7;3705:6;3694:9;3690:22;3669:53;;;3659:63;;3630:98;3759:3;3778:53;3823:7;3814:6;3803:9;3799:22;3778:53;;;3768:63;;3738:99;3868:3;3887:53;3932:7;3923:6;3912:9;3908:22;3887:53;;;3877:63;;3847:99;3238:718;;;;;;;;;3963:366;;;4084:2;4072:9;4063:7;4059:23;4055:32;4052:2;;;4100:1;4097;4090:12;4052:2;4135:1;4152:53;4197:7;4177:9;4152:53;;;4142:63;;4114:97;4242:2;4260:53;4305:7;4296:6;4285:9;4281:22;4260:53;;4336:257;;4448:2;4436:9;4427:7;4423:23;4419:32;4416:2;;;4464:1;4461;4454:12;4416:2;4499:1;4516:61;4569:7;4549:9;4516:61;;4600:241;;4704:2;4692:9;4683:7;4679:23;4675:32;4672:2;;;4720:1;4717;4710:12;4672:2;4755:1;4772:53;4817:7;4797:9;4772:53;;4848:366;;;4969:2;4957:9;4948:7;4944:23;4940:32;4937:2;;;4985:1;4982;4975:12;4937:2;5020:1;5037:53;5082:7;5062:9;5037:53;;5221:485;;;;5356:2;5344:9;5335:7;5331:23;5327:32;5324:2;;;5372:1;5369;5362:12;5324:2;5407:1;5424:53;5469:7;5449:9;5424:53;;;5414:63;;5386:97;5514:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;;;5522:63;;5493:98;5622:2;5640:50;5682:7;5673:6;5662:9;5658:22;5640:50;;;5630:60;;5601:95;5318:388;;;;;;5713:1213;;;;;;;;;5985:3;5973:9;5964:7;5960:23;5956:33;5953:2;;;6002:1;5999;5992:12;5953:2;6037:1;6054:53;6099:7;6079:9;6054:53;;;6044:63;;6016:97;6144:2;6162:53;6207:7;6198:6;6187:9;6183:22;6162:53;;;6152:63;;6123:98;6252:2;6270:50;6312:7;6303:6;6292:9;6288:22;6270:50;;;6260:60;;6231:95;6357:2;6375:53;6420:7;6411:6;6400:9;6396:22;6375:53;;;6365:63;;6336:98;6465:3;6484:78;6554:7;6545:6;6534:9;6530:22;6484:78;;;6474:88;;6444:124;6599:3;6618:78;6688:7;6679:6;6668:9;6664:22;6618:78;;;6608:88;;6578:124;6761:3;6750:9;6746:19;6733:33;6786:18;6778:6;6775:30;6772:2;;;6818:1;6815;6808:12;6772:2;6846:64;6902:7;6893:6;6882:9;6878:22;6846:64;;;6836:74;;;;6712:204;5947:979;;;;;;;;;;;;6933:239;;7036:2;7024:9;7015:7;7011:23;7007:32;7004:2;;;7052:1;7049;7042:12;7004:2;7087:1;7104:52;7148:7;7128:9;7104:52;;7179:263;;7294:2;7282:9;7273:7;7269:23;7265:32;7262:2;;;7310:1;7307;7300:12;7262:2;7345:1;7362:64;7418:7;7398:9;7362:64;;7449:399;;;7581:2;7569:9;7560:7;7556:23;7552:32;7549:2;;;7597:1;7594;7587:12;7549:2;7632:1;7649:64;7705:7;7685:9;7649:64;;;7639:74;;7611:108;7750:2;7768:64;7824:7;7815:6;7804:9;7800:22;7768:64;;7855:113;7938:24;7956:5;7938:24;;;7933:3;7926:37;7920:48;;;7975:152;8076:45;8096:24;8114:5;8096:24;;;8076:45;;8134:104;8211:21;8226:5;8211:21;;8245:113;8328:24;8346:5;8328:24;;8365:152;8466:45;8486:24;8504:5;8486:24;;;8466:45;;8524:356;;8652:38;8684:5;8652:38;;;8702:88;8783:6;8778:3;8702:88;;;8695:95;;8795:52;8840:6;8835:3;8828:4;8821:5;8817:16;8795:52;;;8859:16;;;;;8632:248;-1:-1;;8632:248;8887:168;8991:58;9043:5;8991:58;;9062:347;;9174:39;9207:5;9174:39;;;9225:71;9289:6;9284:3;9225:71;;;9218:78;;9301:52;9346:6;9341:3;9334:4;9327:5;9323:16;9301:52;;;9374:29;9396:6;9374:29;;;9365:39;;;;9154:255;-1:-1;;;9154:255;9417:319;;9577:67;9641:2;9636:3;9577:67;;;-1:-1;;;9657:42;;9727:2;9718:12;;9563:173;-1:-1;;9563:173;9745:305;;9905:66;9969:1;9964:3;9905:66;;;-1:-1;;;9984:29;;10041:2;10032:12;;9891:159;-1:-1;;9891:159;10059:327;;10219:67;10283:2;10278:3;10219:67;;;10319:29;10299:50;;10377:2;10368:12;;10205:181;-1:-1;;10205:181;10395:316;;10555:67;10619:2;10614:3;10555:67;;;-1:-1;;;10635:39;;10702:2;10693:12;;10541:170;-1:-1;;10541:170;10720:375;;10880:67;10944:2;10939:3;10880:67;;;10980:34;10960:55;;-1:-1;;;11044:2;11035:12;;11028:30;11086:2;11077:12;;10866:229;-1:-1;;10866:229;11104:317;;11264:67;11328:2;11323:3;11264:67;;;-1:-1;;;11344:40;;11412:2;11403:12;;11250:171;-1:-1;;11250:171;11430:327;;11590:67;11654:2;11649:3;11590:67;;;11690:29;11670:50;;11748:2;11739:12;;11576:181;-1:-1;;11576:181;11766:314;;11926:67;11990:2;11985:3;11926:67;;;-1:-1;;;12006:37;;12071:2;12062:12;;11912:168;-1:-1;;11912:168;12089:321;;12249:67;12313:2;12308:3;12249:67;;;-1:-1;;;12329:44;;12401:2;12392:12;;12235:175;-1:-1;;12235:175;12419:332;;12579:67;12643:2;12638:3;12579:67;;;12679:34;12659:55;;12742:2;12733:12;;12565:186;-1:-1;;12565:186;12760:319;;12920:67;12984:2;12979:3;12920:67;;;-1:-1;;;13000:42;;13070:2;13061:12;;12906:173;-1:-1;;12906:173;13088:315;;13248:67;13312:2;13307:3;13248:67;;;-1:-1;;;13328:38;;13394:2;13385:12;;13234:169;-1:-1;;13234:169;13412:328;;13572:67;13636:2;13631:3;13572:67;;;13672:30;13652:51;;13731:2;13722:12;;13558:182;-1:-1;;13558:182;13749:311;;13909:67;13973:2;13968:3;13909:67;;;-1:-1;;;13989:34;;14051:2;14042:12;;13895:165;-1:-1;;13895:165;14069:318;;14229:67;14293:2;14288:3;14229:67;;;-1:-1;;;14309:41;;14378:2;14369:12;;14215:172;-1:-1;;14215:172;14396:314;;14556:67;14620:2;14615:3;14556:67;;;-1:-1;;;14636:37;;14701:2;14692:12;;14542:168;-1:-1;;14542:168;14719:314;;14879:67;14943:2;14938:3;14879:67;;;-1:-1;;;14959:37;;15024:2;15015:12;;14865:168;-1:-1;;14865:168;15042:315;;15202:67;15266:2;15261:3;15202:67;;;-1:-1;;;15282:38;;15348:2;15339:12;;15188:169;-1:-1;;15188:169;15366:314;;15526:67;15590:2;15585:3;15526:67;;;-1:-1;;;15606:37;;15671:2;15662:12;;15512:168;-1:-1;;15512:168;15689:370;;15849:67;15913:2;15908:3;15849:67;;;15949:34;15929:55;;-1:-1;;;16013:2;16004:12;;15997:25;16050:2;16041:12;;15835:224;-1:-1;;15835:224;16068:312;;16228:67;16292:2;16287:3;16228:67;;;-1:-1;;;16308:35;;16371:2;16362:12;;16214:166;-1:-1;;16214:166;16389:323;;16549:67;16613:2;16608:3;16549:67;;;16649:25;16629:46;;16703:2;16694:12;;16535:177;-1:-1;;16535:177;16721:318;;16881:67;16945:2;16940:3;16881:67;;;-1:-1;;;16961:41;;17030:2;17021:12;;16867:172;-1:-1;;16867:172;17048:321;;17208:67;17272:2;17267:3;17208:67;;;-1:-1;;;17288:44;;17360:2;17351:12;;17194:175;-1:-1;;17194:175;17378:320;;17538:67;17602:2;17597:3;17538:67;;;-1:-1;;;17618:43;;17689:2;17680:12;;17524:174;-1:-1;;17524:174;17707:383;;17867:67;17931:2;17926:3;17867:67;;;17967:34;17947:55;;-1:-1;;;18031:2;18022:12;;18015:38;18081:2;18072:12;;17853:237;-1:-1;;17853:237;18099:319;;18259:67;18323:2;18318:3;18259:67;;;-1:-1;;;18339:42;;18409:2;18400:12;;18245:173;-1:-1;;18245:173;18427:312;;18587:67;18651:2;18646:3;18587:67;;;-1:-1;;;18667:35;;18730:2;18721:12;;18573:166;-1:-1;;18573:166;18748:313;;18908:67;18972:2;18967:3;18908:67;;;-1:-1;;;18988:36;;19052:2;19043:12;;18894:167;-1:-1;;18894:167;19070:379;;19230:67;19294:2;19289:3;19230:67;;;19330:34;19310:55;;-1:-1;;;19394:2;19385:12;;19378:34;19440:2;19431:12;;19216:233;-1:-1;;19216:233;19458:370;;19618:67;19682:2;19677:3;19618:67;;;19718:34;19698:55;;-1:-1;;;19782:2;19773:12;;19766:25;19819:2;19810:12;;19604:224;-1:-1;;19604:224;19837:311;;19997:67;20061:2;20056:3;19997:67;;;-1:-1;;;20077:34;;20139:2;20130:12;;19983:165;-1:-1;;19983:165;20157:322;;20317:67;20381:2;20376:3;20317:67;;;-1:-1;;;20397:45;;20470:2;20461:12;;20303:176;-1:-1;;20303:176;20488:321;;20648:67;20712:2;20707:3;20648:67;;;-1:-1;;;20728:44;;20800:2;20791:12;;20634:175;-1:-1;;20634:175;20818:331;;20978:67;21042:2;21037:3;20978:67;;;21078:33;21058:54;;21140:2;21131:12;;20964:185;-1:-1;;20964:185;21436:661;;21639:75;21710:3;21701:6;21639:75;;;21736:2;21731:3;21727:12;21720:19;;21750:75;21821:3;21812:6;21750:75;;;21847:2;21842:3;21838:12;21831:19;;21861:75;21932:3;21923:6;21861:75;;;21958:2;21953:3;21949:12;21942:19;;21972:75;22043:3;22034:6;21972:75;;;-1:-1;22069:2;22060:12;;21627:470;-1:-1;;;;21627:470;22104:262;;22248:93;22337:3;22328:6;22248:93;;22373:213;22491:2;22476:18;;22505:71;22480:9;22549:6;22505:71;;22593:324;22739:2;22724:18;;22753:71;22728:9;22797:6;22753:71;;;22835:72;22903:2;22892:9;22888:18;22879:6;22835:72;;22924:883;23210:3;23195:19;;23225:71;23199:9;23269:6;23225:71;;;23307:72;23375:2;23364:9;23360:18;23351:6;23307:72;;;23390;23458:2;23447:9;23443:18;23434:6;23390:72;;;23473;23541:2;23530:9;23526:18;23517:6;23473:72;;;23556:73;23624:3;23613:9;23609:19;23600:6;23556:73;;;23640;23708:3;23697:9;23693:19;23684:6;23640:73;;;23724;23792:3;23781:9;23777:19;23768:6;23724:73;;;23181:626;;;;;;;;;;;23814:547;24016:3;24001:19;;24031:71;24005:9;24075:6;24031:71;;;24113:72;24181:2;24170:9;24166:18;24157:6;24113:72;;;24196;24264:2;24253:9;24249:18;24240:6;24196:72;;;24279;24347:2;24336:9;24332:18;24323:6;24279:72;;24368:435;24542:2;24527:18;;24556:71;24531:9;24600:6;24556:71;;;24638:72;24706:2;24695:9;24691:18;24682:6;24638:72;;;24721;24789:2;24778:9;24774:18;24765:6;24721:72;;24810:547;25012:3;24997:19;;25027:71;25001:9;25071:6;25027:71;;;25109:72;25177:2;25166:9;25162:18;25153:6;25109:72;;;25192;25260:2;25249:9;25245:18;25236:6;25192:72;;;25275;25343:2;25332:9;25328:18;25319:6;25275:72;;25364:547;25566:3;25551:19;;25581:71;25555:9;25625:6;25581:71;;;25663:72;25731:2;25720:9;25716:18;25707:6;25663:72;;;25746;25814:2;25803:9;25799:18;25790:6;25746:72;;25918:659;26148:3;26133:19;;26163:71;26137:9;26207:6;26163:71;;;26245:72;26313:2;26302:9;26298:18;26289:6;26245:72;;;26328;26396:2;26385:9;26381:18;26372:6;26328:72;;;26411;26479:2;26468:9;26464:18;26455:6;26411:72;;;26494:73;26562:3;26551:9;26547:19;26538:6;26494:73;;26584:995;26898:3;26883:19;;26913:71;26887:9;26957:6;26913:71;;;26995:72;27063:2;27052:9;27048:18;27039:6;26995:72;;;27078;27146:2;27135:9;27131:18;27122:6;27078:72;;;27161;27229:2;27218:9;27214:18;27205:6;27161:72;;;27244:73;27312:3;27301:9;27297:19;27288:6;27244:73;;;27328;27396:3;27385:9;27381:19;27372:6;27328:73;;;27412;27480:3;27469:9;27465:19;27456:6;27412:73;;;27496;27564:3;27553:9;27549:19;27540:6;27496:73;;;26869:710;;;;;;;;;;;;27586:1107;27928:3;27913:19;;27943:71;27917:9;27987:6;27943:71;;;28025:72;28093:2;28082:9;28078:18;28069:6;28025:72;;;28108;28176:2;28165:9;28161:18;28152:6;28108:72;;;28191;28259:2;28248:9;28244:18;28235:6;28191:72;;;28274:73;28342:3;28331:9;28327:19;28318:6;28274:73;;;28358;28426:3;28415:9;28411:19;28402:6;28358:73;;;28442;28510:3;28499:9;28495:19;28486:6;28442:73;;;28526;28594:3;28583:9;28579:19;28570:6;28526:73;;;28610;28678:3;28667:9;28663:19;28654:6;28610:73;;;27899:794;;;;;;;;;;;;;28700:324;28846:2;28831:18;;28860:71;28835:9;28904:6;28860:71;;;28942:72;29010:2;28999:9;28995:18;28986:6;28942:72;;29031:435;29205:2;29190:18;;29219:71;29194:9;29263:6;29219:71;;;29301:72;29369:2;29358:9;29354:18;29345:6;29301:72;;29473:201;29585:2;29570:18;;29599:65;29574:9;29637:6;29599:65;;29681:983;29989:3;29974:19;;30004:71;29978:9;30048:6;30004:71;;;30086:66;30148:2;30137:9;30133:18;30124:6;30086:66;;;30163:72;30231:2;30220:9;30216:18;30207:6;30163:72;;;30246;30314:2;30303:9;30299:18;30290:6;30246:72;;;30329:73;30397:3;30386:9;30382:19;30373:6;30329:73;;30671:1435;31093:3;31078:19;;31108:71;31082:9;31152:6;31108:71;;;31190:72;31258:2;31247:9;31243:18;31234:6;31190:72;;;31273;31341:2;31330:9;31326:18;31317:6;31273:72;;;31356:66;31418:2;31407:9;31403:18;31394:6;31356:66;;;31433:73;31501:3;31490:9;31486:19;31477:6;31433:73;;;31517;31585:3;31574:9;31570:19;31561:6;31517:73;;;31601;31669:3;31658:9;31654:19;31645:6;31601:73;;;31685;31753:3;31742:9;31738:19;31729:6;31685:73;;;31769;31837:3;31826:9;31822:19;31813:6;31769:73;;;31853;31921:3;31910:9;31906:19;31897:6;31853:73;;;31937:74;32006:3;31995:9;31991:19;31981:7;31937:74;;;32022;32091:3;32080:9;32076:19;32066:7;32022:74;;;31064:1042;;;;;;;;;;;;;;;;32113:255;32252:2;32237:18;;32266:92;32241:9;32331:6;32266:92;;32375:301;32513:2;32527:47;;;32498:18;;32588:78;32498:18;32652:6;32588:78;;32683:407;32874:2;32888:47;;;32859:18;;32949:131;32859:18;32949:131;;33097:407;33288:2;33302:47;;;33273:18;;33363:131;33273:18;33363:131;;33511:407;33702:2;33716:47;;;33687:18;;33777:131;33687:18;33777:131;;33925:407;34116:2;34130:47;;;34101:18;;34191:131;34101:18;34191:131;;34339:407;34530:2;34544:47;;;34515:18;;34605:131;34515:18;34605:131;;34753:407;34944:2;34958:47;;;34929:18;;35019:131;34929:18;35019:131;;35167:407;35358:2;35372:47;;;35343:18;;35433:131;35343:18;35433:131;;35581:407;35772:2;35786:47;;;35757:18;;35847:131;35757:18;35847:131;;35995:407;36186:2;36200:47;;;36171:18;;36261:131;36171:18;36261:131;;36409:407;36600:2;36614:47;;;36585:18;;36675:131;36585:18;36675:131;;36823:407;37014:2;37028:47;;;36999:18;;37089:131;36999:18;37089:131;;37237:407;37428:2;37442:47;;;37413:18;;37503:131;37413:18;37503:131;;37651:407;37842:2;37856:47;;;37827:18;;37917:131;37827:18;37917:131;;38065:407;38256:2;38270:47;;;38241:18;;38331:131;38241:18;38331:131;;38479:407;38670:2;38684:47;;;38655:18;;38745:131;38655:18;38745:131;;38893:407;39084:2;39098:47;;;39069:18;;39159:131;39069:18;39159:131;;39307:407;39498:2;39512:47;;;39483:18;;39573:131;39483:18;39573:131;;39721:407;39912:2;39926:47;;;39897:18;;39987:131;39897:18;39987:131;;40135:407;40326:2;40340:47;;;40311:18;;40401:131;40311:18;40401:131;;40549:407;40740:2;40754:47;;;40725:18;;40815:131;40725:18;40815:131;;40963:407;41154:2;41168:47;;;41139:18;;41229:131;41139:18;41229:131;;41377:407;41568:2;41582:47;;;41553:18;;41643:131;41553:18;41643:131;;41791:407;41982:2;41996:47;;;41967:18;;42057:131;41967:18;42057:131;;42205:407;42396:2;42410:47;;;42381:18;;42471:131;42381:18;42471:131;;42619:407;42810:2;42824:47;;;42795:18;;42885:131;42795:18;42885:131;;43033:407;43224:2;43238:47;;;43209:18;;43299:131;43209:18;43299:131;;43447:407;43638:2;43652:47;;;43623:18;;43713:131;43623:18;43713:131;;43861:407;44052:2;44066:47;;;44037:18;;44127:131;44037:18;44127:131;;44275:407;44466:2;44480:47;;;44451:18;;44541:131;44451:18;44541:131;;44689:407;44880:2;44894:47;;;44865:18;;44955:131;44865:18;44955:131;;45103:407;45294:2;45308:47;;;45279:18;;45369:131;45279:18;45369:131;;45517:407;45708:2;45722:47;;;45693:18;;45783:131;45693:18;45783:131;;45931:407;46122:2;46136:47;;;46107:18;;46197:131;46107:18;46197:131;;46345:407;46536:2;46550:47;;;46521:18;;46611:131;46521:18;46611:131;;46759:407;46950:2;46964:47;;;46935:18;;47025:131;46935:18;47025:131;;47173:213;47291:2;47276:18;;47305:71;47280:9;47349:6;47305:71;;47393:324;47539:2;47524:18;;47553:71;47528:9;47597:6;47553:71;;47724:435;47898:2;47883:18;;47912:71;47887:9;47956:6;47912:71;;48166:659;48396:3;48381:19;;48411:71;48385:9;48455:6;48411:71;;;48493:72;48561:2;48550:9;48546:18;48537:6;48493:72;;48832:771;49090:3;49075:19;;49105:71;49079:9;49149:6;49105:71;;;49187:72;49255:2;49244:9;49240:18;49231:6;49187:72;;;49270;49338:2;49327:9;49323:18;49314:6;49270:72;;;49353;49421:2;49410:9;49406:18;49397:6;49353:72;;;49436:73;49504:3;49493:9;49489:19;49480:6;49436:73;;;49520;49588:3;49577:9;49573:19;49564:6;49520:73;;;49061:542;;;;;;;;;;49610:121;49697:12;;49668:63;49868:144;50003:3;49981:31;-1:-1;49981:31;50021:163;50124:19;;;50173:4;50164:14;;50117:67;50192:91;;50254:24;50272:5;50254:24;;50290:85;50356:13;50349:21;;50332:43;50382:72;50444:5;50427:27;50461:144;-1:-1;;;;;;50522:78;;50505:100;50612:121;-1:-1;;;;;50674:54;;50657:76;50819:163;;50919:58;50971:5;50919:58;;51126:268;51191:1;51198:101;51212:6;51209:1;51206:13;51198:101;;;51279:11;;;51273:18;51260:11;;;51253:39;51234:2;51227:10;51198:101;;;51314:6;51311:1;51308:13;51305:2;;;-1:-1;;51379:1;51361:16;;51354:27;51175:219;51402:95;;51466:26;51486:5;51585:89;51649:20;51663:5;51649:20;;51762:97;51850:2;51830:14;-1:-1;;51826:28;;51810:49;51867:94;51941:2;51937:14;;51909:52;51969:117;52038:24;52056:5;52038:24;;;52031:5;52028:35;52018:2;;52077:1;52074;52067:12;52093:111;52159:21;52174:5;52159:21;;52211:117;52280:24;52298:5;52280:24;;52335:115;52403:23;52420:5;52403:23;"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowOrTradeFromPool(bytes32,bytes32,bool,uint256,address[4],uint256[5],bytes)": "585314cf",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "getBorrowAmount(address,address,uint256,uint256,bool)": "e762319f",
              "getEstimatedMarginExposure(address,address,uint256,uint256,uint256,uint256)": "d67f7077",
              "getRequiredCollateral(address,address,uint256,uint256,bool)": "25decac0",
              "initialize(address)": "c4d66de8",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "setDelegatedManager(bytes32,address,bool)": "33d8991f",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "borrowOrTradeFromPool(bytes32,bytes32,bool,uint256,address[4],uint256[5],bytes)": {
                "notice": "Borrow or trade from pool."
              },
              "getBorrowAmount(address,address,uint256,uint256,bool)": {
                "notice": "Get the borrow amount of a trade loan."
              },
              "getEstimatedMarginExposure(address,address,uint256,uint256,uint256,uint256)": {
                "notice": "Get the estimated margin exposure.\t * Margin is the money borrowed from a broker to purchase an investment and is the difference between the total value of investment and the loan amount. Margin trading refers to the practice of using borrowed funds from a broker to trade a financial asset, which forms the collateral for the loan from the broker."
              },
              "getRequiredCollateral(address,address,uint256,uint256,bool)": {
                "notice": "Get the required collateral."
              },
              "initialize(address)": {
                "notice": "Set function selectors on target contract."
              },
              "setDelegatedManager(bytes32,address,bool)": {
                "notice": "Set the delegated manager."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains functions to borrow and trade."
          }
        }
      },
      "contracts/modules/LoanSettings.sol": {
        "LoanSettings": {
          "abi": [
            {
              "inputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "name": "LoanParamsDisabled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "LoanParamsIdDisabled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "LoanParamsIdSetup",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "name": "LoanParamsSetup",
              "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": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "loanParamsIdList",
                  "type": "bytes32[]"
                }
              ],
              "name": "disableLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "loanParamsIdList",
                  "type": "bytes32[]"
                }
              ],
              "name": "getLoanParams",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "id",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bool",
                      "name": "active",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "minInitialMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanParamsStruct.LoanParams[]",
                  "name": "loanParamsList",
                  "type": "tuple[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "start",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getLoanParamsList",
              "outputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "loanParamsList",
                  "type": "bytes32[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                }
              ],
              "name": "getTotalPrincipal",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                }
              ],
              "name": "minInitialMargin",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "id",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bool",
                      "name": "active",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "minInitialMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanParamsStruct.LoanParams[]",
                  "name": "loanParamsList",
                  "type": "tuple[]"
                }
              ],
              "name": "setupLoanParams",
              "outputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "loanParamsIdList",
                  "type": "bytes32[]"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "disableLoanParams(bytes32[])": {
                "params": {
                  "loanParamsIdList": "The array of loan parameters IDs to deactivate."
                }
              },
              "getLoanParams(bytes32[])": {
                "params": {
                  "loanParamsIdList": "The array of loan parameters IDs to match."
                },
                "return": "loanParamsList The result array of loan parameters."
              },
              "getLoanParamsList(address,uint256,uint256)": {
                "params": {
                  "count": "The page limit.",
                  "owner": "The address of the loan owner.",
                  "start": "The page offset."
                },
                "return": "loanParamsList The result array of loan parameters."
              },
              "getTotalPrincipal(address,address)": {
                "params": {
                  "lender": "The address of the lender.",
                  "loanToken": "The address of the token instance."
                },
                "return": "The total principal of the loans."
              },
              "initialize(address)": {
                "params": {
                  "target": "The address of the target contract."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[])": {
                "details": "For each loan calls _setupLoanParams internal function.",
                "params": {
                  "loanParamsList": "The array of loan parameters."
                },
                "return": "loanParamsIdList The array of loan parameters IDs."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Loan Settings contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d000006039553480156100a557600080fd5b5060006100b96001600160e01b0361010c16565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610110565b3390565b6123528061011f6000396000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c80638f32d59b116101e9578063cb6eacd11161010f578063edab119f116100ad578063f6ddc8b31161007c578063f6ddc8b314610773578063f706b1f21461077b578063f851a44014610783578063fe30fa6a1461078b57610399565b8063edab119f14610748578063f0e085f514610750578063f2fde38b14610758578063f589a3e71461076b57610399565b8063d288208c116100e9578063d288208c1461071d578063d473c2da14610725578063d485045e1461072d578063e8f627641461074057610399565b8063cb6eacd1146106d0578063cd5d808d146106f7578063cf59e67b1461070a57610399565b8063b30643d911610187578063bdee453c11610156578063bdee453c1461066a578063c4a908151461067d578063c4d66de8146106a8578063ca74a5d9146106bd57610399565b8063b30643d914610634578063b7e1524114610647578063b9cffa3e1461065a578063ba4861e91461066257610399565b8063a1ae275e116101c3578063a1ae275e146105ef578063acc043481461060f578063ae0a853014610617578063afe840091461061f57610399565b80638f32d59b146105cc57806392d894f8146105d4578063959083d3146105e757610399565b80634699f846116102ce5780636e6637301161026c5780637a8faeb81161023b5780637a8faeb8146105a15780638456cb59146105a95780638da5cb5b146105b15780638dc48ba5146105b957610399565b80636e663730146105765780637420ca3e14610589578063742e67981461059157806378d849ed1461059957610399565b8063569fc1fb116102a8578063569fc1fb14610515578063574442cc1461053757806362fff3f61461053f57806368c4ac261461056357610399565b80634699f846146104f25780634a1e88fe146104fa5780634f28cac21461050d57610399565b80632d9cd0761161033b5780633452d2d4116103155780633452d2d4146104a65780633fca506e146104b95780634115a2b6146104cc5780634203e395146104df57610399565b80632d9cd0761461046b5780632f4707641461048b5780633432423c1461049357610399565b80631b7bde74116103775780631b7bde7414610410578063218b39c61461043057806324cc5749146104435780632a3240271461046357610399565b8063065d810f146103ba5780630676c1b7146103e857806317548b79146103fd575b60405162461bcd60e51b81526004016103b190612140565b60405180910390fd5b6103cd6103c83660046119d0565b61079e565b6040516103df969594939291906121e2565b60405180910390f35b6103f06107de565b6040516103df9190611f2c565b6103f061040b366004611b37565b6107ed565b61042361041e366004611996565b610808565b6040516103df9190612160565b6103f061043e366004611970565b610825565b610456610451366004611970565b610840565b6040516103df9190611f9a565b610423610855565b61047e610479366004611a8f565b61085b565b6040516103df9190611f89565b610423610990565b6103cd6104a13660046119d0565b610996565b6104236104b4366004611970565b6109d6565b6104236104c7366004611970565b6109e8565b6104566104da366004611b18565b6109fa565b6104236104ed366004611970565b610a1a565b610423610a2c565b610423610508366004611996565b610a32565b610423610a5f565b610528610523366004611afa565b610a65565b6040516103df9392919061216e565b610423610a86565b61055261054d366004611996565b610a8c565b6040516103df959493929190612196565b610456610571366004611970565b610ac6565b6103f0610584366004611970565b610adb565b6103f0610af6565b610423610b05565b6103f0610b0b565b610423610b1a565b610456610b20565b6103f0610b29565b6103f06105c7366004611970565b610b38565b610456610b53565b6104236105e2366004611970565b610b79565b610423610b8b565b6106026105fd366004611ac4565b610b91565b6040516103df9190611f78565b610423610c3f565b610423610c45565b610627610c4b565b6040516103df91906120d2565b610423610642366004611970565b610c5a565b610423610655366004611970565b610c6c565b6103f0610c7e565b6103f0610c8d565b610423610678366004611970565b610c9c565b61069061068b366004611afa565b610cae565b6040516103df9c9b9a9998979695949392919061201f565b6106bb6106b6366004611970565b610d20565b005b6104236106cb366004611afa565b610e35565b6106e36106de366004611afa565b610e4a565b6040516103df989796959493929190611fa8565b610423610705366004611996565b610e9c565b610602610718366004611a00565b610eb9565b6103f0610fa7565b610423610fb6565b61042361073b366004611970565b610fbc565b6103f0610fce565b610423610fdd565b610423610fe3565b6106bb610766366004611970565b610fe9565b610423611019565b61042361101f565b6103f0611025565b6103f0611034565b6106bb610799366004611a4d565b611043565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b6060815160405190808252806020026020018201604052801561089857816020015b610885611734565b81526020019060019003908161087d5790505b5090506000805b835181101561097c576108b0611734565b600760008684815181106108c057fe5b6020908102919091018101518252818101929092526040908101600020815161010080820184528254808352600184015460ff811615159684019690965294046001600160a01b039081169382019390935260028201548316606082015260038201549092166080830152600481015460a0830152600581015460c08301526006015460e082015291506109545750610974565b8084848151811061096157fe5b6020908102919091010152506001909101905b60010161089f565b50815181101561098a578082525b50919050565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b6001600160a01b038083166000908152600b60209081526040808320938516835292905220545b92915050565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b6a611254565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b603d5460609060ff1615610bb75760405162461bcd60e51b81526004016103b1906120e0565b604080518381526020808502820101909152828015610be0578160200160208202803883390190505b50905060005b82811015610c3857610c19848483818110610bfd57fe5b90506101000201803603610c149190810190611b55565b611258565b828281518110610c2557fe5b6020908102919091010152600101610be6565b5092915050565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b610d28610b53565b610d445760405162461bcd60e51b81526004016103b190612110565b6350d713af60e11b600081905260056020527fd30397261808d9f908fb53c9c06f1db90c071662dd2733a285622dd2a05d930b546001600160a01b031690610d8c90836114b4565b610d9d637f187d3560e11b836114b4565b610dae6316ce683b60e11b836114b4565b610dbf63cf59e67b60e01b836114b4565b610dd063250f447f60e11b836114b4565b610de163ca74a5d960e01b836114b4565b6b4c6f616e53657474696e677360a01b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b60009081526007602052604090206004015490565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6001600160a01b0383166000908152601360205260408120606091610efc610ee08361152e565b610ef0878763ffffffff61153516565b9063ffffffff61155a16565b9050808510610f0d5750610fa09050565b83604051908082528060200260200182016040528015610f37578160200160208202803883390190505b50925060008582035b8015610f8f5785821415610f5357610f8f565b610f6984600019838a010163ffffffff61157016565b858381518110610f7557fe5b602090810291909101015260019091019060001901610f40565b5084811015610f9c578084525b5050505b9392505050565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610ff1610b53565b61100d5760405162461bcd60e51b81526004016103b190612110565b61101681611594565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b603d5460ff16156110665760405162461bcd60e51b81526004016103b1906120e0565b60005b8181101561124f576007600084848481811061108157fe5b90506020020135815260200190815260200160002060010160019054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b0316146110dd5760405162461bcd60e51b81526004016103b190612150565b6000600760008585858181106110ef57fe5b90506020020135815260200190815260200160002060010160006101000a81548160ff021916908315150217905550611126611734565b6007600085858581811061113657fe5b60209081029290920135835250818101929092526040908101600020815161010080820184528254808352600184015460ff811615159684019690965294046001600160a01b039081168285018190526002840154821660608401819052600385015490921660808401819052600485015460a08501819052600586015460c0860181905260069096015460e0860181905296519498509096929592947f33ba3970cc4ef3751cb2cf450d111607ca946ffdf885fd12fa1b527e7322d4d7946111ff9490611f3a565b60405180910390a480604001516001600160a01b031681600001517f79acc6f251e660ec98b41cefbc34894afd4f95c94f1ebf330c17bf965744581360405160405180910390a350600101611069565b505050565b3390565b600080826060015183608001518460a001518560c001518660e001514260405160200161128a96959493929190611ec2565b60408051601f19818403018152918152815160209283012060008181526007909352912054909150156112cf5760405162461bcd60e51b81526004016103b190612130565b60608301516001600160a01b0316158015906112f7575060808301516001600160a01b031615155b801561130a57508260c001518360a00151115b8015611327575060e083015115806113275750610e108360e00151115b6113435760405162461bcd60e51b81526004016103b190612120565b808352600160208085018281523360408088018281526000878152600786528281208a51815594519685018054925160ff1990931697151597909717610100600160a81b0319166101006001600160a01b03938416021790965560608901516002850180546001600160a01b031990811692841692909217905560808a0151600386018054909216921691909117905560a0880151600484015560c0880151600584015560e08801516006909301929092558352601390915290206114089082611616565b5082608001516001600160a01b031683606001516001600160a01b0316827f65f58dd38f9c97af071dcbb7fb2d3b9e16e6d89858396c9c9243a6ec16b7ec6b86604001518760a001518860c001518960e0015160405161146b9493929190611f3a565b60405180910390a482604001516001600160a01b0316817f6e233dbc3e1e4737da0f210a5bab972f5367ddaef0c4ba4027194f9cd03893ce60405160405180910390a392915050565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b0383169081179091551561150f57611509600d6001600160e01b0319841663ffffffff61161616565b5061152a565b61124f600d6001600160e01b0319841663ffffffff61165e16565b5050565b6001015490565b600082820183811015610fa05760405162461bcd60e51b81526004016103b190612100565b60008183106115695781610fa0565b5090919050565b600082600101828154811061158157fe5b9060005260206000200154905092915050565b6001600160a01b0381166115ba5760405162461bcd60e51b81526004016103b1906120f0565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000611622838361171f565b6116565750600180830180548083018083556000928352602080842090920185905584835290859052604090912055610a59565b506000610a59565b600061166a838361171f565b1561165657600082815260208490526040902054600184015460001991820191018082146116e25760008560010182815481106116a357fe5b90600052602060002001549050808660010184815481106116c057fe5b6000918252602080832090910192909255918252869052604090206001830190555b600084815260208690526040812055600185018054806116fe57fe5b60019003818190600052602060002001600090559055600192505050610a59565b60009081526020919091526040902054151590565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b8035610a59816122e0565b60008083601f84011261179557600080fd5b50813567ffffffffffffffff8111156117ad57600080fd5b6020830191508360208202830111156117c557600080fd5b9250929050565b600082601f8301126117dd57600080fd5b81356117f06117eb82612263565b61223c565b9150818183526020840193506020810190508385602084028201111561181557600080fd5b60005b83811015611841578161182b8882611899565b8452506020928301929190910190600101611818565b5050505092915050565b60008083601f84011261185d57600080fd5b50813567ffffffffffffffff81111561187557600080fd5b602083019150836101008202830111156117c557600080fd5b8035610a59816122f4565b8035610a59816122fd565b8035610a5981612306565b600061010082840312156118c257600080fd5b6118cd61010061223c565b905060006118db8484611899565b82525060206118ec8484830161188e565b602083015250604061190084828501611778565b604083015250606061191484828501611778565b606083015250608061192884828501611778565b60808301525060a061193c84828501611899565b60a08301525060c061195084828501611899565b60c08301525060e061196484828501611899565b60e08301525092915050565b60006020828403121561198257600080fd5b600061198e8484611778565b949350505050565b600080604083850312156119a957600080fd5b60006119b58585611778565b92505060206119c685828601611778565b9150509250929050565b600080604083850312156119e357600080fd5b60006119ef8585611778565b92505060206119c685828601611899565b600080600060608486031215611a1557600080fd5b6000611a218686611778565b9350506020611a3286828701611899565b9250506040611a4386828701611899565b9150509250925092565b60008060208385031215611a6057600080fd5b823567ffffffffffffffff811115611a7757600080fd5b611a8385828601611783565b92509250509250929050565b600060208284031215611aa157600080fd5b813567ffffffffffffffff811115611ab857600080fd5b61198e848285016117cc565b60008060208385031215611ad757600080fd5b823567ffffffffffffffff811115611aee57600080fd5b611a838582860161184b565b600060208284031215611b0c57600080fd5b600061198e8484611899565b60008060408385031215611b2b57600080fd5b60006119b58585611899565b600060208284031215611b4957600080fd5b600061198e84846118a4565b60006101008284031215611b6857600080fd5b600061198e84846118af565b6000611b808383611c6d565b505060200190565b6000611b948383611e14565b50506101000190565b611ba681612297565b82525050565b611ba6611bb882612297565b6122ce565b6000611bc88261228a565b611bd2818561228e565b9350611bdd83612284565b8060005b83811015611c0b578151611bf58882611b74565b9750611c0083612284565b925050600101611be1565b509495945050505050565b6000611c218261228a565b611c2b818561228e565b9350611c3683612284565b8060005b83811015611c0b578151611c4e8882611b88565b9750611c5983612284565b925050600101611c3a565b611ba6816122a2565b611ba6816122a7565b611ba6816122c3565b6000611c8c60068361228e565b6514185d5cd95960d21b815260200192915050565b6000611cae60268361228e565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000611cf6601b8361228e565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611d2f600c8361228e565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000611d57600e8361228e565b6d696e76616c696420706172616d7360901b815260200192915050565b6000611d8160118361228e565b706c6f616e506172616d732065786973747360781b815260200192915050565b6000611dae60238361228e565b7f4c6f616e53657474696e6773202d2066616c6c6261636b206e6f7420616c6c6f8152621dd95960ea1b602082015260400192915050565b6000611df360128361228e565b713ab730baba3437b934bd32b21037bbb732b960711b815260200192915050565b8051610100830190611e268482611c6d565b506020820151611e396020850182611c64565b506040820151611e4c6040850182611b9d565b506060820151611e5f6060850182611b9d565b506080820151611e726080850182611b9d565b5060a0820151611e8560a0850182611c6d565b5060c0820151611e9860c0850182611c6d565b5060e0820151611eab60e0850182611c6d565b50505050565b611ba6611ebd826122a7565b6122a7565b6000611ece8289611bac565b601482019150611ede8288611bac565b601482019150611eee8287611eb1565b602082019150611efe8286611eb1565b602082019150611f0e8285611eb1565b602082019150611f1e8284611eb1565b506020019695505050505050565b60208101610a598284611b9d565b60808101611f488287611b9d565b611f556020830186611c6d565b611f626040830185611c6d565b611f6f6060830184611c6d565b95945050505050565b60208082528101610fa08184611bbd565b60208082528101610fa08184611c16565b60208101610a598284611c64565b6101008101611fb7828b611c6d565b611fc4602083018a611c64565b611fd16040830189611b9d565b611fde6060830188611b9d565b611feb6080830187611b9d565b611ff860a0830186611c6d565b61200560c0830185611c6d565b61201260e0830184611c6d565b9998505050505050505050565b610180810161202e828f611c6d565b61203b602083018e611c6d565b612048604083018d611c6d565b612055606083018c611c64565b612062608083018b611c6d565b61206f60a083018a611c6d565b61207c60c0830189611c6d565b61208960e0830188611c6d565b612097610100830187611c6d565b6120a5610120830186611c6d565b6120b3610140830185611b9d565b6120c1610160830184611b9d565b9d9c50505050505050505050505050565b60208101610a598284611c76565b60208082528101610a5981611c7f565b60208082528101610a5981611ca1565b60208082528101610a5981611ce9565b60208082528101610a5981611d22565b60208082528101610a5981611d4a565b60208082528101610a5981611d74565b60208082528101610a5981611da1565b60208082528101610a5981611de6565b60208101610a598284611c6d565b6060810161217c8286611c6d565b6121896020830185611c6d565b61198e6040830184611c6d565b60a081016121a48288611c6d565b6121b16020830187611c6d565b6121be6040830186611c6d565b6121cb6060830185611c6d565b6121d86080830184611c6d565b9695505050505050565b60c081016121f08289611c6d565b6121fd6020830188611c6d565b61220a6040830187611c6d565b6122176060830186611c6d565b6122246080830185611c6d565b61223160a0830184611c6d565b979650505050505050565b60405181810167ffffffffffffffff8111828210171561225b57600080fd5b604052919050565b600067ffffffffffffffff82111561227a57600080fd5b5060209081020190565b60200190565b5190565b90815260200190565b6000610a59826122b7565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b6000610a5982612297565b6000610a59826000610a598260601b90565b6122e981612297565b811461101657600080fd5b6122e9816122a2565b6122e9816122a7565b6122e9816122aa56fea365627a7a72315820e11484f28fbf22e3f1146895150df214b6490e13eeee931844c3d49f6ab400c76c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0xA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0xB9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x10C AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x110 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x2352 DUP1 PUSH2 0x11F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x399 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1E9 JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xF6DDC8B3 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x773 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x77B JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x783 JUMPI DUP1 PUSH4 0xFE30FA6A EQ PUSH2 0x78B JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x748 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x750 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x758 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x76B JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0xD288208C GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x740 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x6D0 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x6F7 JUMPI DUP1 PUSH4 0xCF59E67B EQ PUSH2 0x70A JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 GT PUSH2 0x187 JUMPI DUP1 PUSH4 0xBDEE453C GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x66A JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x67D JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x6A8 JUMPI DUP1 PUSH4 0xCA74A5D9 EQ PUSH2 0x6BD JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x634 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x662 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0xA1AE275E GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xA1AE275E EQ PUSH2 0x5EF JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x60F JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x61F JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x5CC JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x5E7 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x2CE JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x26C JUMPI DUP1 PUSH4 0x7A8FAEB8 GT PUSH2 0x23B JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x5A1 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x5A9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5B1 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x5B9 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x576 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x591 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x599 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x569FC1FB GT PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x515 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x53F JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x563 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0x4A1E88FE EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x50D JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x2D9CD076 GT PUSH2 0x33B JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x315 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4B9 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x4DF JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x2D9CD076 EQ PUSH2 0x46B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x48B JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x493 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x1B7BDE74 GT PUSH2 0x377 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x410 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x430 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x463 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x3FD JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2140 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3CD PUSH2 0x3C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x19D0 JUMP JUMPDEST PUSH2 0x79E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x21E2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3F0 PUSH2 0x7DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP2 SWAP1 PUSH2 0x1F2C JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0x40B CALLDATASIZE PUSH1 0x4 PUSH2 0x1B37 JUMP JUMPDEST PUSH2 0x7ED JUMP JUMPDEST PUSH2 0x423 PUSH2 0x41E CALLDATASIZE PUSH1 0x4 PUSH2 0x1996 JUMP JUMPDEST PUSH2 0x808 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP2 SWAP1 PUSH2 0x2160 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0x43E CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0x825 JUMP JUMPDEST PUSH2 0x456 PUSH2 0x451 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0x840 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP2 SWAP1 PUSH2 0x1F9A JUMP JUMPDEST PUSH2 0x423 PUSH2 0x855 JUMP JUMPDEST PUSH2 0x47E PUSH2 0x479 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A8F JUMP JUMPDEST PUSH2 0x85B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP2 SWAP1 PUSH2 0x1F89 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x990 JUMP JUMPDEST PUSH2 0x3CD PUSH2 0x4A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x19D0 JUMP JUMPDEST PUSH2 0x996 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x4B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0x9D6 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x4C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0x9E8 JUMP JUMPDEST PUSH2 0x456 PUSH2 0x4DA CALLDATASIZE PUSH1 0x4 PUSH2 0x1B18 JUMP JUMPDEST PUSH2 0x9FA JUMP JUMPDEST PUSH2 0x423 PUSH2 0x4ED CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xA1A JUMP JUMPDEST PUSH2 0x423 PUSH2 0xA2C JUMP JUMPDEST PUSH2 0x423 PUSH2 0x508 CALLDATASIZE PUSH1 0x4 PUSH2 0x1996 JUMP JUMPDEST PUSH2 0xA32 JUMP JUMPDEST PUSH2 0x423 PUSH2 0xA5F JUMP JUMPDEST PUSH2 0x528 PUSH2 0x523 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFA JUMP JUMPDEST PUSH2 0xA65 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x216E JUMP JUMPDEST PUSH2 0x423 PUSH2 0xA86 JUMP JUMPDEST PUSH2 0x552 PUSH2 0x54D CALLDATASIZE PUSH1 0x4 PUSH2 0x1996 JUMP JUMPDEST PUSH2 0xA8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2196 JUMP JUMPDEST PUSH2 0x456 PUSH2 0x571 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0x584 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xADB JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0x423 PUSH2 0xB05 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xB0B JUMP JUMPDEST PUSH2 0x423 PUSH2 0xB1A JUMP JUMPDEST PUSH2 0x456 PUSH2 0xB20 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0x5C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xB38 JUMP JUMPDEST PUSH2 0x456 PUSH2 0xB53 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x5E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xB79 JUMP JUMPDEST PUSH2 0x423 PUSH2 0xB8B JUMP JUMPDEST PUSH2 0x602 PUSH2 0x5FD CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0xB91 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP2 SWAP1 PUSH2 0x1F78 JUMP JUMPDEST PUSH2 0x423 PUSH2 0xC3F JUMP JUMPDEST PUSH2 0x423 PUSH2 0xC45 JUMP JUMPDEST PUSH2 0x627 PUSH2 0xC4B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP2 SWAP1 PUSH2 0x20D2 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x642 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x423 PUSH2 0x655 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xC6C JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xC7E JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xC8D JUMP JUMPDEST PUSH2 0x423 PUSH2 0x678 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xC9C JUMP JUMPDEST PUSH2 0x690 PUSH2 0x68B CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFA JUMP JUMPDEST PUSH2 0xCAE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x201F JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x6B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xD20 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x423 PUSH2 0x6CB CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFA JUMP JUMPDEST PUSH2 0xE35 JUMP JUMPDEST PUSH2 0x6E3 PUSH2 0x6DE CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFA JUMP JUMPDEST PUSH2 0xE4A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1FA8 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x705 CALLDATASIZE PUSH1 0x4 PUSH2 0x1996 JUMP JUMPDEST PUSH2 0xE9C JUMP JUMPDEST PUSH2 0x602 PUSH2 0x718 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A00 JUMP JUMPDEST PUSH2 0xEB9 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xFA7 JUMP JUMPDEST PUSH2 0x423 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x73B CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xFBC JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xFCE JUMP JUMPDEST PUSH2 0x423 PUSH2 0xFDD JUMP JUMPDEST PUSH2 0x423 PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x766 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xFE9 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x101F JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0x1025 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0x1034 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x799 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A4D JUMP JUMPDEST PUSH2 0x1043 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x898 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x885 PUSH2 0x1734 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x87D JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x97C JUMPI PUSH2 0x8B0 PUSH2 0x1734 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x8C0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH2 0x100 DUP1 DUP3 ADD DUP5 MSTORE DUP3 SLOAD DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP5 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP3 ADD SLOAD DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x3 DUP3 ADD SLOAD SWAP1 SWAP3 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x6 ADD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x954 JUMPI POP PUSH2 0x974 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x961 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x1 ADD PUSH2 0x89F JUMP JUMPDEST POP DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x98A JUMPI DUP1 DUP3 MSTORE JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB6A PUSH2 0x1254 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xBB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x20E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP3 DUP1 ISZERO PUSH2 0xBE0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xC38 JUMPI PUSH2 0xC19 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xBFD JUMPI INVALID JUMPDEST SWAP1 POP PUSH2 0x100 MUL ADD DUP1 CALLDATASIZE SUB PUSH2 0xC14 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1B55 JUMP JUMPDEST PUSH2 0x1258 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC25 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xBE6 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0xD28 PUSH2 0xB53 JUMP JUMPDEST PUSH2 0xD44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2110 JUMP JUMPDEST PUSH4 0x50D713AF PUSH1 0xE1 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xD30397261808D9F908FB53C9C06F1DB90C071662DD2733A285622DD2A05D930B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xD8C SWAP1 DUP4 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xD9D PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP4 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xDAE PUSH4 0x16CE683B PUSH1 0xE1 SHL DUP4 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xDBF PUSH4 0xCF59E67B PUSH1 0xE0 SHL DUP4 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xDD0 PUSH4 0x250F447F PUSH1 0xE1 SHL DUP4 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xDE1 PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP4 PUSH2 0x14B4 JUMP JUMPDEST PUSH12 0x4C6F616E53657474696E6773 PUSH1 0xA0 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x60 SWAP2 PUSH2 0xEFC PUSH2 0xEE0 DUP4 PUSH2 0x152E JUMP JUMPDEST PUSH2 0xEF0 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1535 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x155A AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 LT PUSH2 0xF0D JUMPI POP PUSH2 0xFA0 SWAP1 POP JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xF37 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x0 DUP6 DUP3 SUB JUMPDEST DUP1 ISZERO PUSH2 0xF8F JUMPI DUP6 DUP3 EQ ISZERO PUSH2 0xF53 JUMPI PUSH2 0xF8F JUMP JUMPDEST PUSH2 0xF69 DUP5 PUSH1 0x0 NOT DUP4 DUP11 ADD ADD PUSH4 0xFFFFFFFF PUSH2 0x1570 AND JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF75 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x0 NOT ADD PUSH2 0xF40 JUMP JUMPDEST POP DUP5 DUP2 LT ISZERO PUSH2 0xF9C JUMPI DUP1 DUP5 MSTORE JUMPDEST POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xFF1 PUSH2 0xB53 JUMP JUMPDEST PUSH2 0x100D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2110 JUMP JUMPDEST PUSH2 0x1016 DUP2 PUSH2 0x1594 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1066 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x20E0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x124F JUMPI PUSH1 0x7 PUSH1 0x0 DUP5 DUP5 DUP5 DUP2 DUP2 LT PUSH2 0x1081 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x10DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2150 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x10EF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x1126 PUSH2 0x1734 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x1136 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD DUP4 MSTORE POP DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH2 0x100 DUP1 DUP3 ADD DUP5 MSTORE DUP3 SLOAD DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP5 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x2 DUP5 ADD SLOAD DUP3 AND PUSH1 0x60 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x3 DUP6 ADD SLOAD SWAP1 SWAP3 AND PUSH1 0x80 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0xA0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0xC0 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD PUSH1 0xE0 DUP7 ADD DUP2 SWAP1 MSTORE SWAP7 MLOAD SWAP5 SWAP9 POP SWAP1 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 PUSH32 0x33BA3970CC4EF3751CB2CF450D111607CA946FFDF885FD12FA1B527E7322D4D7 SWAP5 PUSH2 0x11FF SWAP5 SWAP1 PUSH2 0x1F3A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP1 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH32 0x79ACC6F251E660EC98B41CEFBC34894AFD4F95C94F1EBF330C17BF9657445813 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 ADD PUSH2 0x1069 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x60 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD DUP5 PUSH1 0xA0 ADD MLOAD DUP6 PUSH1 0xC0 ADD MLOAD DUP7 PUSH1 0xE0 ADD MLOAD TIMESTAMP PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x128A SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1EC2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x12CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2130 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x12F7 JUMPI POP PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x130A JUMPI POP DUP3 PUSH1 0xC0 ADD MLOAD DUP4 PUSH1 0xA0 ADD MLOAD GT JUMPDEST DUP1 ISZERO PUSH2 0x1327 JUMPI POP PUSH1 0xE0 DUP4 ADD MLOAD ISZERO DUP1 PUSH2 0x1327 JUMPI POP PUSH2 0xE10 DUP4 PUSH1 0xE0 ADD MLOAD GT JUMPDEST PUSH2 0x1343 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2120 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP6 ADD DUP3 DUP2 MSTORE CALLER PUSH1 0x40 DUP1 DUP9 ADD DUP3 DUP2 MSTORE PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x7 DUP7 MSTORE DUP3 DUP2 KECCAK256 DUP11 MLOAD DUP2 SSTORE SWAP5 MLOAD SWAP7 DUP6 ADD DUP1 SLOAD SWAP3 MLOAD PUSH1 0xFF NOT SWAP1 SWAP4 AND SWAP8 ISZERO ISZERO SWAP8 SWAP1 SWAP8 OR PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND MUL OR SWAP1 SWAP7 SSTORE PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x2 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP3 DUP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0x80 DUP11 ADD MLOAD PUSH1 0x3 DUP7 ADD DUP1 SLOAD SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0x4 DUP5 ADD SSTORE PUSH1 0xC0 DUP9 ADD MLOAD PUSH1 0x5 DUP5 ADD SSTORE PUSH1 0xE0 DUP9 ADD MLOAD PUSH1 0x6 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP4 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x1408 SWAP1 DUP3 PUSH2 0x1616 JUMP JUMPDEST POP DUP3 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH32 0x65F58DD38F9C97AF071DCBB7FB2D3B9E16E6D89858396C9C9243A6EC16B7EC6B DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0xA0 ADD MLOAD DUP9 PUSH1 0xC0 ADD MLOAD DUP10 PUSH1 0xE0 ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x146B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1F3A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x6E233DBC3E1E4737DA0F210A5BAB972F5367DDAEF0C4BA4027194F9CD03893CE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x150F JUMPI PUSH2 0x1509 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x1616 AND JUMP JUMPDEST POP PUSH2 0x152A JUMP JUMPDEST PUSH2 0x124F PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x165E AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xFA0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2100 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x1569 JUMPI DUP2 PUSH2 0xFA0 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1581 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x20F0 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1622 DUP4 DUP4 PUSH2 0x171F JUMP JUMPDEST PUSH2 0x1656 JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xA59 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xA59 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x166A DUP4 DUP4 PUSH2 0x171F JUMP JUMPDEST ISZERO PUSH2 0x1656 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x16E2 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x16A3 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x16C0 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x16FE JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0xA59 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xA59 DUP2 PUSH2 0x22E0 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1795 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x17AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x17C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x17DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x17F0 PUSH2 0x17EB DUP3 PUSH2 0x2263 JUMP JUMPDEST PUSH2 0x223C JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1841 JUMPI DUP2 PUSH2 0x182B DUP9 DUP3 PUSH2 0x1899 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1818 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x185D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1875 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH2 0x100 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x17C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0xA59 DUP2 PUSH2 0x22F4 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xA59 DUP2 PUSH2 0x22FD JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xA59 DUP2 PUSH2 0x2306 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18CD PUSH2 0x100 PUSH2 0x223C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x18DB DUP5 DUP5 PUSH2 0x1899 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x18EC DUP5 DUP5 DUP4 ADD PUSH2 0x188E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x1900 DUP5 DUP3 DUP6 ADD PUSH2 0x1778 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x1914 DUP5 DUP3 DUP6 ADD PUSH2 0x1778 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x1928 DUP5 DUP3 DUP6 ADD PUSH2 0x1778 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x193C DUP5 DUP3 DUP6 ADD PUSH2 0x1899 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x1950 DUP5 DUP3 DUP6 ADD PUSH2 0x1899 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x1964 DUP5 DUP3 DUP6 ADD PUSH2 0x1899 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x198E DUP5 DUP5 PUSH2 0x1778 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19B5 DUP6 DUP6 PUSH2 0x1778 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x19C6 DUP6 DUP3 DUP7 ADD PUSH2 0x1778 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19EF DUP6 DUP6 PUSH2 0x1778 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x19C6 DUP6 DUP3 DUP7 ADD PUSH2 0x1899 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1A15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1A21 DUP7 DUP7 PUSH2 0x1778 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1A32 DUP7 DUP3 DUP8 ADD PUSH2 0x1899 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1A43 DUP7 DUP3 DUP8 ADD PUSH2 0x1899 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1A60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A83 DUP6 DUP3 DUP7 ADD PUSH2 0x1783 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x198E DUP5 DUP3 DUP6 ADD PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1AD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A83 DUP6 DUP3 DUP7 ADD PUSH2 0x184B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x198E DUP5 DUP5 PUSH2 0x1899 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19B5 DUP6 DUP6 PUSH2 0x1899 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x198E DUP5 DUP5 PUSH2 0x18A4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x198E DUP5 DUP5 PUSH2 0x18AF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B80 DUP4 DUP4 PUSH2 0x1C6D JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B94 DUP4 DUP4 PUSH2 0x1E14 JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1BA6 DUP2 PUSH2 0x2297 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1BA6 PUSH2 0x1BB8 DUP3 PUSH2 0x2297 JUMP JUMPDEST PUSH2 0x22CE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BC8 DUP3 PUSH2 0x228A JUMP JUMPDEST PUSH2 0x1BD2 DUP2 DUP6 PUSH2 0x228E JUMP JUMPDEST SWAP4 POP PUSH2 0x1BDD DUP4 PUSH2 0x2284 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C0B JUMPI DUP2 MLOAD PUSH2 0x1BF5 DUP9 DUP3 PUSH2 0x1B74 JUMP JUMPDEST SWAP8 POP PUSH2 0x1C00 DUP4 PUSH2 0x2284 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1BE1 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C21 DUP3 PUSH2 0x228A JUMP JUMPDEST PUSH2 0x1C2B DUP2 DUP6 PUSH2 0x228E JUMP JUMPDEST SWAP4 POP PUSH2 0x1C36 DUP4 PUSH2 0x2284 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C0B JUMPI DUP2 MLOAD PUSH2 0x1C4E DUP9 DUP3 PUSH2 0x1B88 JUMP JUMPDEST SWAP8 POP PUSH2 0x1C59 DUP4 PUSH2 0x2284 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1C3A JUMP JUMPDEST PUSH2 0x1BA6 DUP2 PUSH2 0x22A2 JUMP JUMPDEST PUSH2 0x1BA6 DUP2 PUSH2 0x22A7 JUMP JUMPDEST PUSH2 0x1BA6 DUP2 PUSH2 0x22C3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C8C PUSH1 0x6 DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CAE PUSH1 0x26 DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CF6 PUSH1 0x1B DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D2F PUSH1 0xC DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D57 PUSH1 0xE DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH14 0x696E76616C696420706172616D73 PUSH1 0x90 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D81 PUSH1 0x11 DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH17 0x6C6F616E506172616D7320657869737473 PUSH1 0x78 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DAE PUSH1 0x23 DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH32 0x4C6F616E53657474696E6773202D2066616C6C6261636B206E6F7420616C6C6F DUP2 MSTORE PUSH3 0x1DD959 PUSH1 0xEA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DF3 PUSH1 0x12 DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH18 0x3AB730BABA3437B934BD32B21037BBB732B9 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x1E26 DUP5 DUP3 PUSH2 0x1C6D JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x1E39 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x1C64 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x1E4C PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1B9D JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x1E5F PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x1B9D JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x1E72 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x1B9D JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x1E85 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x1C6D JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x1E98 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x1C6D JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x1EAB PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x1C6D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1BA6 PUSH2 0x1EBD DUP3 PUSH2 0x22A7 JUMP JUMPDEST PUSH2 0x22A7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ECE DUP3 DUP10 PUSH2 0x1BAC JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x1EDE DUP3 DUP9 PUSH2 0x1BAC JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x1EEE DUP3 DUP8 PUSH2 0x1EB1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x1EFE DUP3 DUP7 PUSH2 0x1EB1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x1F0E DUP3 DUP6 PUSH2 0x1EB1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x1F1E DUP3 DUP5 PUSH2 0x1EB1 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xA59 DUP3 DUP5 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x1F48 DUP3 DUP8 PUSH2 0x1B9D JUMP JUMPDEST PUSH2 0x1F55 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x1F62 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x1F6F PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1C6D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFA0 DUP2 DUP5 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFA0 DUP2 DUP5 PUSH2 0x1C16 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xA59 DUP3 DUP5 PUSH2 0x1C64 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x1FB7 DUP3 DUP12 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x1FC4 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x1C64 JUMP JUMPDEST PUSH2 0x1FD1 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x1B9D JUMP JUMPDEST PUSH2 0x1FDE PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x1B9D JUMP JUMPDEST PUSH2 0x1FEB PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x1B9D JUMP JUMPDEST PUSH2 0x1FF8 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2005 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2012 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x1C6D JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x202E DUP3 DUP16 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x203B PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2048 PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2055 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x1C64 JUMP JUMPDEST PUSH2 0x2062 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x206F PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x207C PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2089 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2097 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x20A5 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x20B3 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x1B9D JUMP JUMPDEST PUSH2 0x20C1 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x1B9D JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xA59 DUP3 DUP5 PUSH2 0x1C76 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1C7F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1CA1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1D22 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1D4A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1D74 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1DA1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1DE6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xA59 DUP3 DUP5 PUSH2 0x1C6D JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x217C DUP3 DUP7 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2189 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x198E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1C6D JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x21A4 DUP3 DUP9 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x21B1 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x21BE PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x21CB PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x21D8 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1C6D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x21F0 DUP3 DUP10 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x21FD PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x220A PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2217 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2224 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2231 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1C6D JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x225B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x227A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA59 DUP3 PUSH2 0x22B7 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA59 DUP3 PUSH2 0x2297 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA59 DUP3 PUSH1 0x0 PUSH2 0xA59 DUP3 PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x22E9 DUP2 PUSH2 0x2297 JUMP JUMPDEST DUP2 EQ PUSH2 0x1016 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22E9 DUP2 PUSH2 0x22A2 JUMP JUMPDEST PUSH2 0x22E9 DUP2 PUSH2 0x22A7 JUMP JUMPDEST PUSH2 0x22E9 DUP2 PUSH2 0x22AA JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xE1 EQ DUP5 CALLCODE DUP16 0xBF 0x22 0xE3 CALL EQ PUSH9 0x95150DF214B6490E13 0xEE 0xEE SWAP4 XOR DIFFICULTY 0xC3 0xD4 SWAP16 PUSH11 0xB400C76C6578706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100400000000000000000000000 ",
              "sourceMap": "577:6234:131:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;710:23:131;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;577:6234:131;;780:87:137;853:10;780:87;:::o;577:6234:131:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106103995760003560e01c80638f32d59b116101e9578063cb6eacd11161010f578063edab119f116100ad578063f6ddc8b31161007c578063f6ddc8b314610773578063f706b1f21461077b578063f851a44014610783578063fe30fa6a1461078b57610399565b8063edab119f14610748578063f0e085f514610750578063f2fde38b14610758578063f589a3e71461076b57610399565b8063d288208c116100e9578063d288208c1461071d578063d473c2da14610725578063d485045e1461072d578063e8f627641461074057610399565b8063cb6eacd1146106d0578063cd5d808d146106f7578063cf59e67b1461070a57610399565b8063b30643d911610187578063bdee453c11610156578063bdee453c1461066a578063c4a908151461067d578063c4d66de8146106a8578063ca74a5d9146106bd57610399565b8063b30643d914610634578063b7e1524114610647578063b9cffa3e1461065a578063ba4861e91461066257610399565b8063a1ae275e116101c3578063a1ae275e146105ef578063acc043481461060f578063ae0a853014610617578063afe840091461061f57610399565b80638f32d59b146105cc57806392d894f8146105d4578063959083d3146105e757610399565b80634699f846116102ce5780636e6637301161026c5780637a8faeb81161023b5780637a8faeb8146105a15780638456cb59146105a95780638da5cb5b146105b15780638dc48ba5146105b957610399565b80636e663730146105765780637420ca3e14610589578063742e67981461059157806378d849ed1461059957610399565b8063569fc1fb116102a8578063569fc1fb14610515578063574442cc1461053757806362fff3f61461053f57806368c4ac261461056357610399565b80634699f846146104f25780634a1e88fe146104fa5780634f28cac21461050d57610399565b80632d9cd0761161033b5780633452d2d4116103155780633452d2d4146104a65780633fca506e146104b95780634115a2b6146104cc5780634203e395146104df57610399565b80632d9cd0761461046b5780632f4707641461048b5780633432423c1461049357610399565b80631b7bde74116103775780631b7bde7414610410578063218b39c61461043057806324cc5749146104435780632a3240271461046357610399565b8063065d810f146103ba5780630676c1b7146103e857806317548b79146103fd575b60405162461bcd60e51b81526004016103b190612140565b60405180910390fd5b6103cd6103c83660046119d0565b61079e565b6040516103df969594939291906121e2565b60405180910390f35b6103f06107de565b6040516103df9190611f2c565b6103f061040b366004611b37565b6107ed565b61042361041e366004611996565b610808565b6040516103df9190612160565b6103f061043e366004611970565b610825565b610456610451366004611970565b610840565b6040516103df9190611f9a565b610423610855565b61047e610479366004611a8f565b61085b565b6040516103df9190611f89565b610423610990565b6103cd6104a13660046119d0565b610996565b6104236104b4366004611970565b6109d6565b6104236104c7366004611970565b6109e8565b6104566104da366004611b18565b6109fa565b6104236104ed366004611970565b610a1a565b610423610a2c565b610423610508366004611996565b610a32565b610423610a5f565b610528610523366004611afa565b610a65565b6040516103df9392919061216e565b610423610a86565b61055261054d366004611996565b610a8c565b6040516103df959493929190612196565b610456610571366004611970565b610ac6565b6103f0610584366004611970565b610adb565b6103f0610af6565b610423610b05565b6103f0610b0b565b610423610b1a565b610456610b20565b6103f0610b29565b6103f06105c7366004611970565b610b38565b610456610b53565b6104236105e2366004611970565b610b79565b610423610b8b565b6106026105fd366004611ac4565b610b91565b6040516103df9190611f78565b610423610c3f565b610423610c45565b610627610c4b565b6040516103df91906120d2565b610423610642366004611970565b610c5a565b610423610655366004611970565b610c6c565b6103f0610c7e565b6103f0610c8d565b610423610678366004611970565b610c9c565b61069061068b366004611afa565b610cae565b6040516103df9c9b9a9998979695949392919061201f565b6106bb6106b6366004611970565b610d20565b005b6104236106cb366004611afa565b610e35565b6106e36106de366004611afa565b610e4a565b6040516103df989796959493929190611fa8565b610423610705366004611996565b610e9c565b610602610718366004611a00565b610eb9565b6103f0610fa7565b610423610fb6565b61042361073b366004611970565b610fbc565b6103f0610fce565b610423610fdd565b610423610fe3565b6106bb610766366004611970565b610fe9565b610423611019565b61042361101f565b6103f0611025565b6103f0611034565b6106bb610799366004611a4d565b611043565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b6060815160405190808252806020026020018201604052801561089857816020015b610885611734565b81526020019060019003908161087d5790505b5090506000805b835181101561097c576108b0611734565b600760008684815181106108c057fe5b6020908102919091018101518252818101929092526040908101600020815161010080820184528254808352600184015460ff811615159684019690965294046001600160a01b039081169382019390935260028201548316606082015260038201549092166080830152600481015460a0830152600581015460c08301526006015460e082015291506109545750610974565b8084848151811061096157fe5b6020908102919091010152506001909101905b60010161089f565b50815181101561098a578082525b50919050565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b6001600160a01b038083166000908152600b60209081526040808320938516835292905220545b92915050565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b6a611254565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b603d5460609060ff1615610bb75760405162461bcd60e51b81526004016103b1906120e0565b604080518381526020808502820101909152828015610be0578160200160208202803883390190505b50905060005b82811015610c3857610c19848483818110610bfd57fe5b90506101000201803603610c149190810190611b55565b611258565b828281518110610c2557fe5b6020908102919091010152600101610be6565b5092915050565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b610d28610b53565b610d445760405162461bcd60e51b81526004016103b190612110565b6350d713af60e11b600081905260056020527fd30397261808d9f908fb53c9c06f1db90c071662dd2733a285622dd2a05d930b546001600160a01b031690610d8c90836114b4565b610d9d637f187d3560e11b836114b4565b610dae6316ce683b60e11b836114b4565b610dbf63cf59e67b60e01b836114b4565b610dd063250f447f60e11b836114b4565b610de163ca74a5d960e01b836114b4565b6b4c6f616e53657474696e677360a01b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b60009081526007602052604090206004015490565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6001600160a01b0383166000908152601360205260408120606091610efc610ee08361152e565b610ef0878763ffffffff61153516565b9063ffffffff61155a16565b9050808510610f0d5750610fa09050565b83604051908082528060200260200182016040528015610f37578160200160208202803883390190505b50925060008582035b8015610f8f5785821415610f5357610f8f565b610f6984600019838a010163ffffffff61157016565b858381518110610f7557fe5b602090810291909101015260019091019060001901610f40565b5084811015610f9c578084525b5050505b9392505050565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610ff1610b53565b61100d5760405162461bcd60e51b81526004016103b190612110565b61101681611594565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b603d5460ff16156110665760405162461bcd60e51b81526004016103b1906120e0565b60005b8181101561124f576007600084848481811061108157fe5b90506020020135815260200190815260200160002060010160019054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b0316146110dd5760405162461bcd60e51b81526004016103b190612150565b6000600760008585858181106110ef57fe5b90506020020135815260200190815260200160002060010160006101000a81548160ff021916908315150217905550611126611734565b6007600085858581811061113657fe5b60209081029290920135835250818101929092526040908101600020815161010080820184528254808352600184015460ff811615159684019690965294046001600160a01b039081168285018190526002840154821660608401819052600385015490921660808401819052600485015460a08501819052600586015460c0860181905260069096015460e0860181905296519498509096929592947f33ba3970cc4ef3751cb2cf450d111607ca946ffdf885fd12fa1b527e7322d4d7946111ff9490611f3a565b60405180910390a480604001516001600160a01b031681600001517f79acc6f251e660ec98b41cefbc34894afd4f95c94f1ebf330c17bf965744581360405160405180910390a350600101611069565b505050565b3390565b600080826060015183608001518460a001518560c001518660e001514260405160200161128a96959493929190611ec2565b60408051601f19818403018152918152815160209283012060008181526007909352912054909150156112cf5760405162461bcd60e51b81526004016103b190612130565b60608301516001600160a01b0316158015906112f7575060808301516001600160a01b031615155b801561130a57508260c001518360a00151115b8015611327575060e083015115806113275750610e108360e00151115b6113435760405162461bcd60e51b81526004016103b190612120565b808352600160208085018281523360408088018281526000878152600786528281208a51815594519685018054925160ff1990931697151597909717610100600160a81b0319166101006001600160a01b03938416021790965560608901516002850180546001600160a01b031990811692841692909217905560808a0151600386018054909216921691909117905560a0880151600484015560c0880151600584015560e08801516006909301929092558352601390915290206114089082611616565b5082608001516001600160a01b031683606001516001600160a01b0316827f65f58dd38f9c97af071dcbb7fb2d3b9e16e6d89858396c9c9243a6ec16b7ec6b86604001518760a001518860c001518960e0015160405161146b9493929190611f3a565b60405180910390a482604001516001600160a01b0316817f6e233dbc3e1e4737da0f210a5bab972f5367ddaef0c4ba4027194f9cd03893ce60405160405180910390a392915050565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b0383169081179091551561150f57611509600d6001600160e01b0319841663ffffffff61161616565b5061152a565b61124f600d6001600160e01b0319841663ffffffff61165e16565b5050565b6001015490565b600082820183811015610fa05760405162461bcd60e51b81526004016103b190612100565b60008183106115695781610fa0565b5090919050565b600082600101828154811061158157fe5b9060005260206000200154905092915050565b6001600160a01b0381166115ba5760405162461bcd60e51b81526004016103b1906120f0565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000611622838361171f565b6116565750600180830180548083018083556000928352602080842090920185905584835290859052604090912055610a59565b506000610a59565b600061166a838361171f565b1561165657600082815260208490526040902054600184015460001991820191018082146116e25760008560010182815481106116a357fe5b90600052602060002001549050808660010184815481106116c057fe5b6000918252602080832090910192909255918252869052604090206001830190555b600084815260208690526040812055600185018054806116fe57fe5b60019003818190600052602060002001600090559055600192505050610a59565b60009081526020919091526040902054151590565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b8035610a59816122e0565b60008083601f84011261179557600080fd5b50813567ffffffffffffffff8111156117ad57600080fd5b6020830191508360208202830111156117c557600080fd5b9250929050565b600082601f8301126117dd57600080fd5b81356117f06117eb82612263565b61223c565b9150818183526020840193506020810190508385602084028201111561181557600080fd5b60005b83811015611841578161182b8882611899565b8452506020928301929190910190600101611818565b5050505092915050565b60008083601f84011261185d57600080fd5b50813567ffffffffffffffff81111561187557600080fd5b602083019150836101008202830111156117c557600080fd5b8035610a59816122f4565b8035610a59816122fd565b8035610a5981612306565b600061010082840312156118c257600080fd5b6118cd61010061223c565b905060006118db8484611899565b82525060206118ec8484830161188e565b602083015250604061190084828501611778565b604083015250606061191484828501611778565b606083015250608061192884828501611778565b60808301525060a061193c84828501611899565b60a08301525060c061195084828501611899565b60c08301525060e061196484828501611899565b60e08301525092915050565b60006020828403121561198257600080fd5b600061198e8484611778565b949350505050565b600080604083850312156119a957600080fd5b60006119b58585611778565b92505060206119c685828601611778565b9150509250929050565b600080604083850312156119e357600080fd5b60006119ef8585611778565b92505060206119c685828601611899565b600080600060608486031215611a1557600080fd5b6000611a218686611778565b9350506020611a3286828701611899565b9250506040611a4386828701611899565b9150509250925092565b60008060208385031215611a6057600080fd5b823567ffffffffffffffff811115611a7757600080fd5b611a8385828601611783565b92509250509250929050565b600060208284031215611aa157600080fd5b813567ffffffffffffffff811115611ab857600080fd5b61198e848285016117cc565b60008060208385031215611ad757600080fd5b823567ffffffffffffffff811115611aee57600080fd5b611a838582860161184b565b600060208284031215611b0c57600080fd5b600061198e8484611899565b60008060408385031215611b2b57600080fd5b60006119b58585611899565b600060208284031215611b4957600080fd5b600061198e84846118a4565b60006101008284031215611b6857600080fd5b600061198e84846118af565b6000611b808383611c6d565b505060200190565b6000611b948383611e14565b50506101000190565b611ba681612297565b82525050565b611ba6611bb882612297565b6122ce565b6000611bc88261228a565b611bd2818561228e565b9350611bdd83612284565b8060005b83811015611c0b578151611bf58882611b74565b9750611c0083612284565b925050600101611be1565b509495945050505050565b6000611c218261228a565b611c2b818561228e565b9350611c3683612284565b8060005b83811015611c0b578151611c4e8882611b88565b9750611c5983612284565b925050600101611c3a565b611ba6816122a2565b611ba6816122a7565b611ba6816122c3565b6000611c8c60068361228e565b6514185d5cd95960d21b815260200192915050565b6000611cae60268361228e565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000611cf6601b8361228e565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611d2f600c8361228e565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000611d57600e8361228e565b6d696e76616c696420706172616d7360901b815260200192915050565b6000611d8160118361228e565b706c6f616e506172616d732065786973747360781b815260200192915050565b6000611dae60238361228e565b7f4c6f616e53657474696e6773202d2066616c6c6261636b206e6f7420616c6c6f8152621dd95960ea1b602082015260400192915050565b6000611df360128361228e565b713ab730baba3437b934bd32b21037bbb732b960711b815260200192915050565b8051610100830190611e268482611c6d565b506020820151611e396020850182611c64565b506040820151611e4c6040850182611b9d565b506060820151611e5f6060850182611b9d565b506080820151611e726080850182611b9d565b5060a0820151611e8560a0850182611c6d565b5060c0820151611e9860c0850182611c6d565b5060e0820151611eab60e0850182611c6d565b50505050565b611ba6611ebd826122a7565b6122a7565b6000611ece8289611bac565b601482019150611ede8288611bac565b601482019150611eee8287611eb1565b602082019150611efe8286611eb1565b602082019150611f0e8285611eb1565b602082019150611f1e8284611eb1565b506020019695505050505050565b60208101610a598284611b9d565b60808101611f488287611b9d565b611f556020830186611c6d565b611f626040830185611c6d565b611f6f6060830184611c6d565b95945050505050565b60208082528101610fa08184611bbd565b60208082528101610fa08184611c16565b60208101610a598284611c64565b6101008101611fb7828b611c6d565b611fc4602083018a611c64565b611fd16040830189611b9d565b611fde6060830188611b9d565b611feb6080830187611b9d565b611ff860a0830186611c6d565b61200560c0830185611c6d565b61201260e0830184611c6d565b9998505050505050505050565b610180810161202e828f611c6d565b61203b602083018e611c6d565b612048604083018d611c6d565b612055606083018c611c64565b612062608083018b611c6d565b61206f60a083018a611c6d565b61207c60c0830189611c6d565b61208960e0830188611c6d565b612097610100830187611c6d565b6120a5610120830186611c6d565b6120b3610140830185611b9d565b6120c1610160830184611b9d565b9d9c50505050505050505050505050565b60208101610a598284611c76565b60208082528101610a5981611c7f565b60208082528101610a5981611ca1565b60208082528101610a5981611ce9565b60208082528101610a5981611d22565b60208082528101610a5981611d4a565b60208082528101610a5981611d74565b60208082528101610a5981611da1565b60208082528101610a5981611de6565b60208101610a598284611c6d565b6060810161217c8286611c6d565b6121896020830185611c6d565b61198e6040830184611c6d565b60a081016121a48288611c6d565b6121b16020830187611c6d565b6121be6040830186611c6d565b6121cb6060830185611c6d565b6121d86080830184611c6d565b9695505050505050565b60c081016121f08289611c6d565b6121fd6020830188611c6d565b61220a6040830187611c6d565b6122176060830186611c6d565b6122246080830185611c6d565b61223160a0830184611c6d565b979650505050505050565b60405181810167ffffffffffffffff8111828210171561225b57600080fd5b604052919050565b600067ffffffffffffffff82111561227a57600080fd5b5060209081020190565b60200190565b5190565b90815260200190565b6000610a59826122b7565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b6000610a5982612297565b6000610a59826000610a598260601b90565b6122e981612297565b811461101657600080fd5b6122e9816122a2565b6122e9816122a7565b6122e9816122aa56fea365627a7a72315820e11484f28fbf22e3f1146895150df214b6490e13eeee931844c3d49f6ab400c76c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x399 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1E9 JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xF6DDC8B3 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x773 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x77B JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x783 JUMPI DUP1 PUSH4 0xFE30FA6A EQ PUSH2 0x78B JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x748 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x750 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x758 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x76B JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0xD288208C GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x740 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x6D0 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x6F7 JUMPI DUP1 PUSH4 0xCF59E67B EQ PUSH2 0x70A JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 GT PUSH2 0x187 JUMPI DUP1 PUSH4 0xBDEE453C GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x66A JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x67D JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x6A8 JUMPI DUP1 PUSH4 0xCA74A5D9 EQ PUSH2 0x6BD JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x634 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x662 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0xA1AE275E GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xA1AE275E EQ PUSH2 0x5EF JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x60F JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x61F JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x5CC JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x5E7 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x2CE JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x26C JUMPI DUP1 PUSH4 0x7A8FAEB8 GT PUSH2 0x23B JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x5A1 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x5A9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5B1 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x5B9 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x576 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x591 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x599 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x569FC1FB GT PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x515 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x53F JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x563 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0x4A1E88FE EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x50D JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x2D9CD076 GT PUSH2 0x33B JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x315 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4B9 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x4DF JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x2D9CD076 EQ PUSH2 0x46B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x48B JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x493 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x1B7BDE74 GT PUSH2 0x377 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x410 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x430 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x463 JUMPI PUSH2 0x399 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x3FD JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2140 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3CD PUSH2 0x3C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x19D0 JUMP JUMPDEST PUSH2 0x79E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x21E2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3F0 PUSH2 0x7DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP2 SWAP1 PUSH2 0x1F2C JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0x40B CALLDATASIZE PUSH1 0x4 PUSH2 0x1B37 JUMP JUMPDEST PUSH2 0x7ED JUMP JUMPDEST PUSH2 0x423 PUSH2 0x41E CALLDATASIZE PUSH1 0x4 PUSH2 0x1996 JUMP JUMPDEST PUSH2 0x808 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP2 SWAP1 PUSH2 0x2160 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0x43E CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0x825 JUMP JUMPDEST PUSH2 0x456 PUSH2 0x451 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0x840 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP2 SWAP1 PUSH2 0x1F9A JUMP JUMPDEST PUSH2 0x423 PUSH2 0x855 JUMP JUMPDEST PUSH2 0x47E PUSH2 0x479 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A8F JUMP JUMPDEST PUSH2 0x85B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP2 SWAP1 PUSH2 0x1F89 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x990 JUMP JUMPDEST PUSH2 0x3CD PUSH2 0x4A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x19D0 JUMP JUMPDEST PUSH2 0x996 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x4B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0x9D6 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x4C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0x9E8 JUMP JUMPDEST PUSH2 0x456 PUSH2 0x4DA CALLDATASIZE PUSH1 0x4 PUSH2 0x1B18 JUMP JUMPDEST PUSH2 0x9FA JUMP JUMPDEST PUSH2 0x423 PUSH2 0x4ED CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xA1A JUMP JUMPDEST PUSH2 0x423 PUSH2 0xA2C JUMP JUMPDEST PUSH2 0x423 PUSH2 0x508 CALLDATASIZE PUSH1 0x4 PUSH2 0x1996 JUMP JUMPDEST PUSH2 0xA32 JUMP JUMPDEST PUSH2 0x423 PUSH2 0xA5F JUMP JUMPDEST PUSH2 0x528 PUSH2 0x523 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFA JUMP JUMPDEST PUSH2 0xA65 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x216E JUMP JUMPDEST PUSH2 0x423 PUSH2 0xA86 JUMP JUMPDEST PUSH2 0x552 PUSH2 0x54D CALLDATASIZE PUSH1 0x4 PUSH2 0x1996 JUMP JUMPDEST PUSH2 0xA8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2196 JUMP JUMPDEST PUSH2 0x456 PUSH2 0x571 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0x584 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xADB JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0x423 PUSH2 0xB05 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xB0B JUMP JUMPDEST PUSH2 0x423 PUSH2 0xB1A JUMP JUMPDEST PUSH2 0x456 PUSH2 0xB20 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0x5C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xB38 JUMP JUMPDEST PUSH2 0x456 PUSH2 0xB53 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x5E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xB79 JUMP JUMPDEST PUSH2 0x423 PUSH2 0xB8B JUMP JUMPDEST PUSH2 0x602 PUSH2 0x5FD CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0xB91 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP2 SWAP1 PUSH2 0x1F78 JUMP JUMPDEST PUSH2 0x423 PUSH2 0xC3F JUMP JUMPDEST PUSH2 0x423 PUSH2 0xC45 JUMP JUMPDEST PUSH2 0x627 PUSH2 0xC4B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP2 SWAP1 PUSH2 0x20D2 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x642 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x423 PUSH2 0x655 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xC6C JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xC7E JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xC8D JUMP JUMPDEST PUSH2 0x423 PUSH2 0x678 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xC9C JUMP JUMPDEST PUSH2 0x690 PUSH2 0x68B CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFA JUMP JUMPDEST PUSH2 0xCAE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x201F JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x6B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xD20 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x423 PUSH2 0x6CB CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFA JUMP JUMPDEST PUSH2 0xE35 JUMP JUMPDEST PUSH2 0x6E3 PUSH2 0x6DE CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFA JUMP JUMPDEST PUSH2 0xE4A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DF SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1FA8 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x705 CALLDATASIZE PUSH1 0x4 PUSH2 0x1996 JUMP JUMPDEST PUSH2 0xE9C JUMP JUMPDEST PUSH2 0x602 PUSH2 0x718 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A00 JUMP JUMPDEST PUSH2 0xEB9 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xFA7 JUMP JUMPDEST PUSH2 0x423 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x73B CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xFBC JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0xFCE JUMP JUMPDEST PUSH2 0x423 PUSH2 0xFDD JUMP JUMPDEST PUSH2 0x423 PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x766 CALLDATASIZE PUSH1 0x4 PUSH2 0x1970 JUMP JUMPDEST PUSH2 0xFE9 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x101F JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0x1025 JUMP JUMPDEST PUSH2 0x3F0 PUSH2 0x1034 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x799 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A4D JUMP JUMPDEST PUSH2 0x1043 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x898 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x885 PUSH2 0x1734 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x87D JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x97C JUMPI PUSH2 0x8B0 PUSH2 0x1734 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x8C0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH2 0x100 DUP1 DUP3 ADD DUP5 MSTORE DUP3 SLOAD DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP5 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP3 ADD SLOAD DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x3 DUP3 ADD SLOAD SWAP1 SWAP3 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x6 ADD SLOAD PUSH1 0xE0 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x954 JUMPI POP PUSH2 0x974 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x961 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x1 ADD PUSH2 0x89F JUMP JUMPDEST POP DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x98A JUMPI DUP1 DUP3 MSTORE JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB6A PUSH2 0x1254 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xBB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x20E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE DUP3 DUP1 ISZERO PUSH2 0xBE0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xC38 JUMPI PUSH2 0xC19 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xBFD JUMPI INVALID JUMPDEST SWAP1 POP PUSH2 0x100 MUL ADD DUP1 CALLDATASIZE SUB PUSH2 0xC14 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1B55 JUMP JUMPDEST PUSH2 0x1258 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC25 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xBE6 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0xD28 PUSH2 0xB53 JUMP JUMPDEST PUSH2 0xD44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2110 JUMP JUMPDEST PUSH4 0x50D713AF PUSH1 0xE1 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xD30397261808D9F908FB53C9C06F1DB90C071662DD2733A285622DD2A05D930B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xD8C SWAP1 DUP4 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xD9D PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP4 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xDAE PUSH4 0x16CE683B PUSH1 0xE1 SHL DUP4 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xDBF PUSH4 0xCF59E67B PUSH1 0xE0 SHL DUP4 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xDD0 PUSH4 0x250F447F PUSH1 0xE1 SHL DUP4 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xDE1 PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP4 PUSH2 0x14B4 JUMP JUMPDEST PUSH12 0x4C6F616E53657474696E6773 PUSH1 0xA0 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x60 SWAP2 PUSH2 0xEFC PUSH2 0xEE0 DUP4 PUSH2 0x152E JUMP JUMPDEST PUSH2 0xEF0 DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1535 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x155A AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 LT PUSH2 0xF0D JUMPI POP PUSH2 0xFA0 SWAP1 POP JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xF37 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x0 DUP6 DUP3 SUB JUMPDEST DUP1 ISZERO PUSH2 0xF8F JUMPI DUP6 DUP3 EQ ISZERO PUSH2 0xF53 JUMPI PUSH2 0xF8F JUMP JUMPDEST PUSH2 0xF69 DUP5 PUSH1 0x0 NOT DUP4 DUP11 ADD ADD PUSH4 0xFFFFFFFF PUSH2 0x1570 AND JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF75 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x0 NOT ADD PUSH2 0xF40 JUMP JUMPDEST POP DUP5 DUP2 LT ISZERO PUSH2 0xF9C JUMPI DUP1 DUP5 MSTORE JUMPDEST POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xFF1 PUSH2 0xB53 JUMP JUMPDEST PUSH2 0x100D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2110 JUMP JUMPDEST PUSH2 0x1016 DUP2 PUSH2 0x1594 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1066 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x20E0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x124F JUMPI PUSH1 0x7 PUSH1 0x0 DUP5 DUP5 DUP5 DUP2 DUP2 LT PUSH2 0x1081 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x10DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2150 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x10EF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x1126 PUSH2 0x1734 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x1136 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD DUP4 MSTORE POP DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH2 0x100 DUP1 DUP3 ADD DUP5 MSTORE DUP3 SLOAD DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0xFF DUP2 AND ISZERO ISZERO SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP5 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x2 DUP5 ADD SLOAD DUP3 AND PUSH1 0x60 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x3 DUP6 ADD SLOAD SWAP1 SWAP3 AND PUSH1 0x80 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0xA0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0xC0 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD PUSH1 0xE0 DUP7 ADD DUP2 SWAP1 MSTORE SWAP7 MLOAD SWAP5 SWAP9 POP SWAP1 SWAP7 SWAP3 SWAP6 SWAP3 SWAP5 PUSH32 0x33BA3970CC4EF3751CB2CF450D111607CA946FFDF885FD12FA1B527E7322D4D7 SWAP5 PUSH2 0x11FF SWAP5 SWAP1 PUSH2 0x1F3A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP1 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH32 0x79ACC6F251E660EC98B41CEFBC34894AFD4F95C94F1EBF330C17BF9657445813 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 ADD PUSH2 0x1069 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x60 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD DUP5 PUSH1 0xA0 ADD MLOAD DUP6 PUSH1 0xC0 ADD MLOAD DUP7 PUSH1 0xE0 ADD MLOAD TIMESTAMP PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x128A SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1EC2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x12CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2130 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x12F7 JUMPI POP PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x130A JUMPI POP DUP3 PUSH1 0xC0 ADD MLOAD DUP4 PUSH1 0xA0 ADD MLOAD GT JUMPDEST DUP1 ISZERO PUSH2 0x1327 JUMPI POP PUSH1 0xE0 DUP4 ADD MLOAD ISZERO DUP1 PUSH2 0x1327 JUMPI POP PUSH2 0xE10 DUP4 PUSH1 0xE0 ADD MLOAD GT JUMPDEST PUSH2 0x1343 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2120 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP6 ADD DUP3 DUP2 MSTORE CALLER PUSH1 0x40 DUP1 DUP9 ADD DUP3 DUP2 MSTORE PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x7 DUP7 MSTORE DUP3 DUP2 KECCAK256 DUP11 MLOAD DUP2 SSTORE SWAP5 MLOAD SWAP7 DUP6 ADD DUP1 SLOAD SWAP3 MLOAD PUSH1 0xFF NOT SWAP1 SWAP4 AND SWAP8 ISZERO ISZERO SWAP8 SWAP1 SWAP8 OR PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND MUL OR SWAP1 SWAP7 SSTORE PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x2 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP3 DUP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0x80 DUP11 ADD MLOAD PUSH1 0x3 DUP7 ADD DUP1 SLOAD SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0x4 DUP5 ADD SSTORE PUSH1 0xC0 DUP9 ADD MLOAD PUSH1 0x5 DUP5 ADD SSTORE PUSH1 0xE0 DUP9 ADD MLOAD PUSH1 0x6 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP4 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH2 0x1408 SWAP1 DUP3 PUSH2 0x1616 JUMP JUMPDEST POP DUP3 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH32 0x65F58DD38F9C97AF071DCBB7FB2D3B9E16E6D89858396C9C9243A6EC16B7EC6B DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0xA0 ADD MLOAD DUP9 PUSH1 0xC0 ADD MLOAD DUP10 PUSH1 0xE0 ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x146B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1F3A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x6E233DBC3E1E4737DA0F210A5BAB972F5367DDAEF0C4BA4027194F9CD03893CE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x150F JUMPI PUSH2 0x1509 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x1616 AND JUMP JUMPDEST POP PUSH2 0x152A JUMP JUMPDEST PUSH2 0x124F PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x165E AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xFA0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x2100 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x1569 JUMPI DUP2 PUSH2 0xFA0 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1581 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B1 SWAP1 PUSH2 0x20F0 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1622 DUP4 DUP4 PUSH2 0x171F JUMP JUMPDEST PUSH2 0x1656 JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xA59 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xA59 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x166A DUP4 DUP4 PUSH2 0x171F JUMP JUMPDEST ISZERO PUSH2 0x1656 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x16E2 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x16A3 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x16C0 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x16FE JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0xA59 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xA59 DUP2 PUSH2 0x22E0 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1795 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x17AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x17C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x17DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x17F0 PUSH2 0x17EB DUP3 PUSH2 0x2263 JUMP JUMPDEST PUSH2 0x223C JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1841 JUMPI DUP2 PUSH2 0x182B DUP9 DUP3 PUSH2 0x1899 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1818 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x185D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1875 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH2 0x100 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x17C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0xA59 DUP2 PUSH2 0x22F4 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xA59 DUP2 PUSH2 0x22FD JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xA59 DUP2 PUSH2 0x2306 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18CD PUSH2 0x100 PUSH2 0x223C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x18DB DUP5 DUP5 PUSH2 0x1899 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x18EC DUP5 DUP5 DUP4 ADD PUSH2 0x188E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x1900 DUP5 DUP3 DUP6 ADD PUSH2 0x1778 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x1914 DUP5 DUP3 DUP6 ADD PUSH2 0x1778 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x1928 DUP5 DUP3 DUP6 ADD PUSH2 0x1778 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x193C DUP5 DUP3 DUP6 ADD PUSH2 0x1899 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x1950 DUP5 DUP3 DUP6 ADD PUSH2 0x1899 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x1964 DUP5 DUP3 DUP6 ADD PUSH2 0x1899 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x198E DUP5 DUP5 PUSH2 0x1778 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19B5 DUP6 DUP6 PUSH2 0x1778 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x19C6 DUP6 DUP3 DUP7 ADD PUSH2 0x1778 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19EF DUP6 DUP6 PUSH2 0x1778 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x19C6 DUP6 DUP3 DUP7 ADD PUSH2 0x1899 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1A15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1A21 DUP7 DUP7 PUSH2 0x1778 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1A32 DUP7 DUP3 DUP8 ADD PUSH2 0x1899 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1A43 DUP7 DUP3 DUP8 ADD PUSH2 0x1899 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1A60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A83 DUP6 DUP3 DUP7 ADD PUSH2 0x1783 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x198E DUP5 DUP3 DUP6 ADD PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1AD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A83 DUP6 DUP3 DUP7 ADD PUSH2 0x184B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x198E DUP5 DUP5 PUSH2 0x1899 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19B5 DUP6 DUP6 PUSH2 0x1899 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x198E DUP5 DUP5 PUSH2 0x18A4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x198E DUP5 DUP5 PUSH2 0x18AF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B80 DUP4 DUP4 PUSH2 0x1C6D JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B94 DUP4 DUP4 PUSH2 0x1E14 JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1BA6 DUP2 PUSH2 0x2297 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1BA6 PUSH2 0x1BB8 DUP3 PUSH2 0x2297 JUMP JUMPDEST PUSH2 0x22CE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BC8 DUP3 PUSH2 0x228A JUMP JUMPDEST PUSH2 0x1BD2 DUP2 DUP6 PUSH2 0x228E JUMP JUMPDEST SWAP4 POP PUSH2 0x1BDD DUP4 PUSH2 0x2284 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C0B JUMPI DUP2 MLOAD PUSH2 0x1BF5 DUP9 DUP3 PUSH2 0x1B74 JUMP JUMPDEST SWAP8 POP PUSH2 0x1C00 DUP4 PUSH2 0x2284 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1BE1 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C21 DUP3 PUSH2 0x228A JUMP JUMPDEST PUSH2 0x1C2B DUP2 DUP6 PUSH2 0x228E JUMP JUMPDEST SWAP4 POP PUSH2 0x1C36 DUP4 PUSH2 0x2284 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C0B JUMPI DUP2 MLOAD PUSH2 0x1C4E DUP9 DUP3 PUSH2 0x1B88 JUMP JUMPDEST SWAP8 POP PUSH2 0x1C59 DUP4 PUSH2 0x2284 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1C3A JUMP JUMPDEST PUSH2 0x1BA6 DUP2 PUSH2 0x22A2 JUMP JUMPDEST PUSH2 0x1BA6 DUP2 PUSH2 0x22A7 JUMP JUMPDEST PUSH2 0x1BA6 DUP2 PUSH2 0x22C3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C8C PUSH1 0x6 DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CAE PUSH1 0x26 DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CF6 PUSH1 0x1B DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D2F PUSH1 0xC DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D57 PUSH1 0xE DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH14 0x696E76616C696420706172616D73 PUSH1 0x90 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D81 PUSH1 0x11 DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH17 0x6C6F616E506172616D7320657869737473 PUSH1 0x78 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DAE PUSH1 0x23 DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH32 0x4C6F616E53657474696E6773202D2066616C6C6261636B206E6F7420616C6C6F DUP2 MSTORE PUSH3 0x1DD959 PUSH1 0xEA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DF3 PUSH1 0x12 DUP4 PUSH2 0x228E JUMP JUMPDEST PUSH18 0x3AB730BABA3437B934BD32B21037BBB732B9 PUSH1 0x71 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x1E26 DUP5 DUP3 PUSH2 0x1C6D JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x1E39 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x1C64 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x1E4C PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1B9D JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x1E5F PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x1B9D JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x1E72 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x1B9D JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x1E85 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x1C6D JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x1E98 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x1C6D JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x1EAB PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x1C6D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1BA6 PUSH2 0x1EBD DUP3 PUSH2 0x22A7 JUMP JUMPDEST PUSH2 0x22A7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ECE DUP3 DUP10 PUSH2 0x1BAC JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x1EDE DUP3 DUP9 PUSH2 0x1BAC JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x1EEE DUP3 DUP8 PUSH2 0x1EB1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x1EFE DUP3 DUP7 PUSH2 0x1EB1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x1F0E DUP3 DUP6 PUSH2 0x1EB1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x1F1E DUP3 DUP5 PUSH2 0x1EB1 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xA59 DUP3 DUP5 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x1F48 DUP3 DUP8 PUSH2 0x1B9D JUMP JUMPDEST PUSH2 0x1F55 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x1F62 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x1F6F PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1C6D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFA0 DUP2 DUP5 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xFA0 DUP2 DUP5 PUSH2 0x1C16 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xA59 DUP3 DUP5 PUSH2 0x1C64 JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x1FB7 DUP3 DUP12 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x1FC4 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x1C64 JUMP JUMPDEST PUSH2 0x1FD1 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x1B9D JUMP JUMPDEST PUSH2 0x1FDE PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x1B9D JUMP JUMPDEST PUSH2 0x1FEB PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x1B9D JUMP JUMPDEST PUSH2 0x1FF8 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2005 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2012 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x1C6D JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x202E DUP3 DUP16 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x203B PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2048 PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2055 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x1C64 JUMP JUMPDEST PUSH2 0x2062 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x206F PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x207C PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2089 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2097 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x20A5 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x20B3 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x1B9D JUMP JUMPDEST PUSH2 0x20C1 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x1B9D JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xA59 DUP3 DUP5 PUSH2 0x1C76 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1C7F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1CA1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1D22 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1D4A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1D74 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1DA1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xA59 DUP2 PUSH2 0x1DE6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xA59 DUP3 DUP5 PUSH2 0x1C6D JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x217C DUP3 DUP7 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2189 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x198E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1C6D JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x21A4 DUP3 DUP9 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x21B1 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x21BE PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x21CB PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x21D8 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1C6D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x21F0 DUP3 DUP10 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x21FD PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x220A PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2217 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2224 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1C6D JUMP JUMPDEST PUSH2 0x2231 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1C6D JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x225B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x227A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA59 DUP3 PUSH2 0x22B7 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA59 DUP3 PUSH2 0x2297 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA59 DUP3 PUSH1 0x0 PUSH2 0xA59 DUP3 PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x22E9 DUP2 PUSH2 0x2297 JUMP JUMPDEST DUP2 EQ PUSH2 0x1016 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22E9 DUP2 PUSH2 0x22A2 JUMP JUMPDEST PUSH2 0x22E9 DUP2 PUSH2 0x22A7 JUMP JUMPDEST PUSH2 0x22E9 DUP2 PUSH2 0x22AA JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xE1 EQ DUP5 CALLCODE DUP16 0xBF 0x22 0xE3 CALL EQ PUSH9 0x95150DF214B6490E13 0xEE 0xEE SWAP4 XOR DIFFICULTY 0xC3 0xD4 SWAP16 PUSH11 0xB400C76C6578706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100400000000000000000000000 ",
              "sourceMap": "577:6234:131:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;577:6234:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;841:45;;-1:-1:-1;;;841:45:131;;;;;;;;;;;;;;;;1636:67:14;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;;;;;1270:46;;;;;;;;;:::i;6768:81::-;;;;;;;;;:::i;:::-;;;;;;;;4372:55;;;;;;;;;:::i;5558:53::-;;;;;;;;;:::i;:::-;;;;;;;;3097:46;;;:::i;3293:559:131:-;;;;;;;;;:::i;:::-;;;;;;;;3969:32:14;;;:::i;1527:65::-;;;;;;;;;:::i;3376:55::-;;;;;;;;;:::i;4925:48::-;;;;;;;;;:::i;1744:69::-;;;;;;;;;:::i;2825:55::-;;;;;;;;;:::i;2717:41::-;;;:::i;5026:157:131:-;;;;;;;;;:::i;4832:37:14:-;;;:::i;2013:52::-;;;;;;;;;:::i;:::-;;;;;;;;;;5060:50;;;:::i;1898:76::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;4542:47;;;;;;;;;:::i;5650:57::-;;;;;;;;;:::i;1087:24::-;;;:::i;6000:39::-;;;:::i;1012:25::-;;;:::i;3887:32::-;;;:::i;7007:17::-;;;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;;;;:::i;1134:83:142:-;;;:::i;2994:55:14:-;;;;;;;;;:::i;5113:49::-;;;:::i;1876:315:131:-;;;;;;;;;:::i;:::-;;;;;;;;5340:45:14;;;:::i;4075:47::-;;;:::i;5175:29::-;;;:::i;:::-;;;;;;;;3781:57;;;;;;;;;:::i;3605:::-;;;;;;;;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;;;;:::i;1347:37::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1018:555:131;;;;;;;;;:::i;:::-;;6673:136;;;;;;;;;:::i;1437:48:14:-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;6853:69;;;;;;;;;:::i;4154:640:131:-;;;;;;;;;:::i;6305:31:14:-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;;;;:::i;2626:29::-;;;:::i;3490:47::-;;;:::i;4754:35::-;;;:::i;1351:98:142:-;;;;;;;;;:::i;6447:60:14:-;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;2380:699:131:-;;;;;;;;;:::i;1636:67:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3293:559:131:-;3372:34;3446:16;:23;3429:41;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;3412:58:131;-1:-1:-1;3474:17:131;;3496:248;3520:16;:23;3516:1;:27;3496:248;;;3555:33;;:::i;:::-;3591:10;:31;3602:16;3619:1;3602:19;;;;;;;;;;;;;;;;;;;3591:31;;;;;;;;;;;;;-1:-1:-1;3591:31:131;3555:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3555:67:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3627:49:131;;3662:8;;;3627:49;3708:15;3680:14;3695:9;3680:25;;;;;;;;;;;;;;;;;:43;-1:-1:-1;3728:11:131;;;;;3496:248;3545:3;;3496:248;;;;3764:14;:21;3752:9;:33;3748:101;;;3830:9;3814:14;3807:33;3801:44;3293:559;;;;:::o;3969:32:14:-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;5026:157:131:-;-1:-1:-1;;;;;5131:22:131;;;5111:7;5131:22;;;:14;:22;;;;;;;;:33;;;;;;;;;:48;5026:157;;;;;:::o;4832:37:14:-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;1876:315:131:-;141:5:99;;1971:33:131;;141:5:99;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;2029:36:131;;;;;;;;;;;;;;;;2043:14;2029:36;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;2029:36:131;-1:-1:-1;2010:55:131;-1:-1:-1;2074:9:131;2069:119;2089:25;;;2069:119;;;2148:35;2165:14;;2180:1;2165:17;;;;;;;;;;;;2148:35;;;;;;;;;;;;:16;:35::i;:::-;2126:16;2143:1;2126:19;;;;;;;;;;;;;;;;;:57;2116:3;;2069:119;;;;1876:315;;;;:::o;5340:45:14:-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1018:555:131:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;1077:33:131;1113:43;;;:12;:43;;;;-1:-1:-1;;;;;1113:43:131;;1160:49;;1202:6;1160:10;:49::i;:::-;1213:51;-1:-1:-1;;;1257:6:131;1213:10;:51::i;:::-;1268:47;-1:-1:-1;;;1308:6:131;1268:10;:47::i;:::-;1319:51;-1:-1:-1;;;1363:6:131;1319:10;:51::i;:::-;1374;-1:-1:-1;;;1418:6:131;1374:10;:51::i;:::-;1429:50;-1:-1:-1;;;1472:6:131;1429:10;:50::i;:::-;-1:-1:-1;;;1546:6:131;-1:-1:-1;;;;;1488:81:131;1519:25;-1:-1:-1;;;;;1488:81:131;;;;;;;;;;;1058:1:142;1018:555:131;:::o;6673:136::-;6744:7;6764:24;;;:10;:24;;;;;:41;;;;6673:136::o;1437:48:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4154:640:131:-;-1:-1:-1;;;;;4341:24:131;;4295:43;4341:24;;;:17;:24;;;;;4258:31;;4383:37;4407:12;4341:24;4407:10;:12::i;:::-;4383:16;:5;4393;4383:16;:9;:16;:::i;:::-;:23;:37;:23;:37;:::i;:::-;4369:51;;4437:3;4428:5;:12;4424:49;;-1:-1:-1;4447:21:131;;-1:-1:-1;4447:21:131;4424:49;4508:5;4494:20;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4494:20:131;-1:-1:-1;4477:37:131;-1:-1:-1;4518:17:131;4556:11;;;4539:163;4569:5;;4539:163;;4603:5;4590:9;:18;4586:41;;;4616:5;;4586:41;4659:22;:3;-1:-1:-1;;4667:9:131;;;:13;4659:22;:7;:22;:::i;:::-;4631:14;4646:9;4631:25;;;;;;;;;;;;;;;;;:50;4686:11;;;;;-1:-1:-1;;4576:3:131;4539:163;;;;4722:5;4710:9;:17;4706:85;;;4772:9;4756:14;4749:33;4743:44;4154:640;;;;;;;;;:::o;6305:31:14:-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2626:29::-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;2380:699:131:-;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;2476:9:131;2471:605;2491:27;;;2471:605;;;2552:10;:31;2563:16;;2580:1;2563:19;;;;;;;;;;;;;2552:31;;;;;;;;;;;:37;;;;;;;;;;-1:-1:-1;;;;;2552:37:131;-1:-1:-1;;;;;2538:51:131;:10;-1:-1:-1;;;;;2538:51:131;;2530:82;;;;-1:-1:-1;;;2530:82:131;;;;;;;;;2658:5;2617:10;:31;2628:16;;2645:1;2628:19;;;;;;;;;;;;;2617:31;;;;;;;;;;;:38;;;:46;;;;;;;;;;;;;;;;;;2669:33;;:::i;:::-;2705:10;:31;2716:16;;2733:1;2716:19;;;;;;;;;;;;;;;;2705:31;;-1:-1:-1;2705:31:131;;;;;;;;;;;-1:-1:-1;2705:31:131;2669:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2669:67:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2746:252;;2669:67;;-1:-1:-1;2669:67:131;;;;;;2746:252;;;;2669:67;2746:252;;;;;;;;;;3049:15;:21;;;-1:-1:-1;;;;;3008:63:131;3029:15;:18;;;3008:63;;;;;;;;;;-1:-1:-1;2520:3:131;;2471:605;;;;2380:699;;:::o;780:87:137:-;853:10;780:87;:::o;5340:1330:131:-;5419:7;5432:20;5496:15;:25;;;5528:15;:31;;;5566:15;:32;;;5605:15;:33;;;5645:15;:27;;;5679:15;5473:227;;;;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;5473:227:131;;;5458:247;;49:4:-1;5458:247:131;;;;5717:24;;;;:10;:24;;;;;:27;5458:247;;-1:-1:-1;5717:32:131;5709:62;;;;-1:-1:-1;;;5709:62:131;;;;;;;;;5788:25;;;;-1:-1:-1;;;;;5788:39:131;;;;;:92;;-1:-1:-1;5835:31:131;;;;-1:-1:-1;;;;;5835:45:131;;;5788:92;:168;;;;;5923:15;:33;;;5888:15;:32;;;:68;5788:168;:248;;;;-1:-1:-1;5965:27:131;;;;:32;;:70;;;6031:4;6001:15;:27;;;:34;5965:70;5776:344;;;;-1:-1:-1;;;5776:344:131;;;;;;;;;6125:33;;;6187:4;6162:22;;;;:29;;;6219:10;6195:21;;;;:34;;;-1:-1:-1;6234:24:131;;;:10;:24;;;;;:42;;;;;;;;;;;;;-1:-1:-1;;6234:42:131;;;;;;;;;;-1:-1:-1;;;;;;6234:42:131;;-1:-1:-1;;;;;6234:42:131;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6234:42:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6280:29;;:17;:29;;;;;:54;;6125:33;6280:40;:54::i;:::-;;6437:15;:31;;;-1:-1:-1;;;;;6344:235:131;6407:15;:25;;;-1:-1:-1;;;;;6344:235:131;6364:12;6344:235;6381:15;:21;;;6473:15;:32;;;6510:15;:33;;;6548:15;:27;;;6344:235;;;;;;;;;;;;;;;;;;6620:15;:21;;;-1:-1:-1;;;;;6588:54:131;6606:12;6588:54;;;;;;;;;;6654:12;5340:1330;-1:-1:-1;;5340:1330:131:o;7574:230:14:-;-1:-1:-1;;;;;;7635:17:14;;;;;;:12;:17;;;;;:26;;-1:-1:-1;;;;;;7635:26:14;-1:-1:-1;;;;;7635:26:14;;;;;;;;7670:20;7666:135;;7697:40;:15;-1:-1:-1;;;;;;7724:12:14;;7697:40;:26;:40;:::i;:::-;;7666:135;;;7753:43;:15;-1:-1:-1;;;;;;7783:12:14;;7753:43;:29;:43;:::i;7666:135::-;7574:230;;:::o;4656:104:95:-;4739:10;;:17;;4656:104::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;5479:104;5542:7;5567:2;5562;:7;:17;;5577:2;5562:17;;;-1:-1:-1;5572:2:145;;5555:24;-1:-1:-1;5479:104:145:o;5215:116:95:-;5290:7;5310:3;:10;;5321:5;5310:17;;;;;;;;;;;;;;;;5303:24;;5215:116;;;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1293:212:95:-;1370:4;1385:20;1394:3;1399:5;1385:8;:20::i;:::-;1380:122;;-1:-1:-1;1431:10:95;;;;27::-1;;23:18;;;45:23;;;-1:-1;1431:22:95;;;;;;;;;;;;;1412:16;;;;;;;;;;;:41;1458:11;;1380:122;-1:-1:-1;1492:5:95;1485:12;;2102:845;2182:4;2196:20;2205:3;2210:5;2196:8;:20::i;:::-;2192:752;;;2223:21;2247:16;;;;;;;;;;;2266:1;2292:10;;:17;-1:-1:-1;;2247:20:95;;;;2292:21;2428:26;;;2424:318;;2462:17;2482:3;:10;;2493:9;2482:21;;;;;;;;;;;;;;;;2462:41;;2607:9;2579:3;:10;;2590:13;2579:25;;;;;;;;;;;;;;;;;;;:37;;;;2669:20;;;;;;;;;2708:1;2692:17;;2669:40;;2424:318;2807:9;:16;;;;;;;;;;2800:23;2878:10;;;:16;;;;;;;;;;;;;;;;;;;;;;;;2907:4;2900:11;;;;;;3145:122;3225:4;3242:16;;;;;;;;;;;;:21;;;3145:122::o;577:6234:131:-;;;;;;;;;-1:-1:-1;577:6234:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:352;;;290:3;283:4;275:6;271:17;267:27;257:2;;308:1;305;298:12;257:2;-1:-1;328:20;;368:18;357:30;;354:2;;;400:1;397;390:12;354:2;434:4;426:6;422:17;410:29;;485:3;477:4;469:6;465:17;455:8;451:32;448:41;445:2;;;502:1;499;492:12;445:2;250:262;;;;;;538:707;;655:3;648:4;640:6;636:17;632:27;622:2;;673:1;670;663:12;622:2;710:6;697:20;732:80;747:64;804:6;747:64;;;732:80;;;723:89;;829:5;854:6;847:5;840:21;884:4;876:6;872:17;862:27;;906:4;901:3;897:14;890:21;;959:6;1006:3;998:4;990:6;986:17;981:3;977:27;974:36;971:2;;;1023:1;1020;1013:12;971:2;1048:1;1033:206;1058:6;1055:1;1052:13;1033:206;;;1116:3;1138:37;1171:3;1159:10;1138:37;;;1126:50;;-1:-1;1199:4;1190:14;;;;1218;;;;;1080:1;1073:9;1033:206;;;1037:14;615:630;;;;;;;;1298:380;;;1454:3;1447:4;1439:6;1435:17;1431:27;1421:2;;1472:1;1469;1462:12;1421:2;-1:-1;1492:20;;1532:18;1521:30;;1518:2;;;1564:1;1561;1554:12;1518:2;1598:4;1590:6;1586:17;1574:29;;1651:3;1641:6;1633;1629:19;1619:8;1615:34;1612:43;1609:2;;;1668:1;1665;1658:12;1686:124;1750:20;;1775:30;1750:20;1775:30;;1817:130;1884:20;;1909:33;1884:20;1909:33;;1954:128;2020:20;;2045:32;2020:20;2045:32;;2130:1388;;2247:6;2235:9;2230:3;2226:19;2222:32;2219:2;;;2267:1;2264;2257:12;2219:2;2285:22;2300:6;2285:22;;;2276:31;-1:-1;2355:1;2387:49;2432:3;2412:9;2387:49;;;2362:75;;-1:-1;2500:2;2533:46;2575:3;2551:22;;;2533:46;;;2526:4;2519:5;2515:16;2508:72;2458:133;2642:2;2675:49;2720:3;2711:6;2700:9;2696:22;2675:49;;;2668:4;2661:5;2657:16;2650:75;2601:135;2791:2;2824:49;2869:3;2860:6;2849:9;2845:22;2824:49;;;2817:4;2810:5;2806:16;2799:75;2746:139;2946:3;2980:49;3025:3;3016:6;3005:9;3001:22;2980:49;;;2973:4;2966:5;2962:16;2955:75;2895:146;3103:3;3137:49;3182:3;3173:6;3162:9;3158:22;3137:49;;;3130:4;3123:5;3119:16;3112:75;3051:147;3261:3;3295:49;3340:3;3331:6;3320:9;3316:22;3295:49;;;3288:4;3281:5;3277:16;3270:75;3208:148;3413:3;3447:49;3492:3;3483:6;3472:9;3468:22;3447:49;;;3440:4;3433:5;3429:16;3422:75;3366:142;2213:1305;;;;;3662:241;;3766:2;3754:9;3745:7;3741:23;3737:32;3734:2;;;3782:1;3779;3772:12;3734:2;3817:1;3834:53;3879:7;3859:9;3834:53;;;3824:63;3728:175;-1:-1;;;;3728:175;3910:366;;;4031:2;4019:9;4010:7;4006:23;4002:32;3999:2;;;4047:1;4044;4037:12;3999:2;4082:1;4099:53;4144:7;4124:9;4099:53;;;4089:63;;4061:97;4189:2;4207:53;4252:7;4243:6;4232:9;4228:22;4207:53;;;4197:63;;4168:98;3993:283;;;;;;4283:366;;;4404:2;4392:9;4383:7;4379:23;4375:32;4372:2;;;4420:1;4417;4410:12;4372:2;4455:1;4472:53;4517:7;4497:9;4472:53;;;4462:63;;4434:97;4562:2;4580:53;4625:7;4616:6;4605:9;4601:22;4580:53;;4656:491;;;;4794:2;4782:9;4773:7;4769:23;4765:32;4762:2;;;4810:1;4807;4800:12;4762:2;4845:1;4862:53;4907:7;4887:9;4862:53;;;4852:63;;4824:97;4952:2;4970:53;5015:7;5006:6;4995:9;4991:22;4970:53;;;4960:63;;4931:98;5060:2;5078:53;5123:7;5114:6;5103:9;5099:22;5078:53;;;5068:63;;5039:98;4756:391;;;;;;5154:397;;;5293:2;5281:9;5272:7;5268:23;5264:32;5261:2;;;5309:1;5306;5299:12;5261:2;5344:31;;5395:18;5384:30;;5381:2;;;5427:1;5424;5417:12;5381:2;5455:80;5527:7;5518:6;5507:9;5503:22;5455:80;;;5445:90;;;;5323:218;5255:296;;;;;;5558:377;;5687:2;5675:9;5666:7;5662:23;5658:32;5655:2;;;5703:1;5700;5693:12;5655:2;5738:31;;5789:18;5778:30;;5775:2;;;5821:1;5818;5811:12;5775:2;5841:78;5911:7;5902:6;5891:9;5887:22;5841:78;;5942:449;;;6107:2;6095:9;6086:7;6082:23;6078:32;6075:2;;;6123:1;6120;6113:12;6075:2;6158:31;;6209:18;6198:30;;6195:2;;;6241:1;6238;6231:12;6195:2;6269:106;6367:7;6358:6;6347:9;6343:22;6269:106;;6398:241;;6502:2;6490:9;6481:7;6477:23;6473:32;6470:2;;;6518:1;6515;6508:12;6470:2;6553:1;6570:53;6615:7;6595:9;6570:53;;6646:366;;;6767:2;6755:9;6746:7;6742:23;6738:32;6735:2;;;6783:1;6780;6773:12;6735:2;6818:1;6835:53;6880:7;6860:9;6835:53;;7019:239;;7122:2;7110:9;7101:7;7097:23;7093:32;7090:2;;;7138:1;7135;7128:12;7090:2;7173:1;7190:52;7234:7;7214:9;7190:52;;7265:298;;7397:3;7385:9;7376:7;7372:23;7368:33;7365:2;;;7414:1;7411;7404:12;7365:2;7449:1;7466:81;7539:7;7519:9;7466:81;;7571:173;;7658:46;7700:3;7692:6;7658:46;;;-1:-1;;7733:4;7724:14;;7651:93;7753:275;;7888:98;7982:3;7974:6;7888:98;;;-1:-1;;8015:6;8006:16;;7881:147;8036:103;8109:24;8127:5;8109:24;;;8104:3;8097:37;8091:48;;;8266:152;8367:45;8387:24;8405:5;8387:24;;;8367:45;;8456:690;;8601:54;8649:5;8601:54;;;8668:86;8747:6;8742:3;8668:86;;;8661:93;;8775:56;8825:5;8775:56;;;8851:7;8879:1;8864:260;8889:6;8886:1;8883:13;8864:260;;;8956:6;8950:13;8977:63;9036:3;9021:13;8977:63;;;8970:70;;9057:60;9110:6;9057:60;;;9047:70;-1:-1;;8911:1;8904:9;8864:260;;;-1:-1;9137:3;;8580:566;-1:-1;;;;;8580:566;9239:882;;9432:78;9504:5;9432:78;;;9523:110;9626:6;9621:3;9523:110;;;9516:117;;9654:80;9728:5;9654:80;;;9754:7;9782:1;9767:332;9792:6;9789:1;9786:13;9767:332;;;9859:6;9853:13;9880:111;9987:3;9972:13;9880:111;;;9873:118;;10008:84;10085:6;10008:84;;;9998:94;-1:-1;;9814:1;9807:9;9767:332;;10129:94;10196:21;10211:5;10196:21;;10341:103;10414:24;10432:5;10414:24;;10571:168;10675:58;10727:5;10675:58;;10747:305;;10907:66;10971:1;10966:3;10907:66;;;-1:-1;;;10986:29;;11043:2;11034:12;;10893:159;-1:-1;;10893:159;11061:375;;11221:67;11285:2;11280:3;11221:67;;;11321:34;11301:55;;-1:-1;;;11385:2;11376:12;;11369:30;11427:2;11418:12;;11207:229;-1:-1;;11207:229;11445:327;;11605:67;11669:2;11664:3;11605:67;;;11705:29;11685:50;;11763:2;11754:12;;11591:181;-1:-1;;11591:181;11781:312;;11941:67;12005:2;12000:3;11941:67;;;-1:-1;;;12021:35;;12084:2;12075:12;;11927:166;-1:-1;;11927:166;12102:314;;12262:67;12326:2;12321:3;12262:67;;;-1:-1;;;12342:37;;12407:2;12398:12;;12248:168;-1:-1;;12248:168;12425:317;;12585:67;12649:2;12644:3;12585:67;;;-1:-1;;;12665:40;;12733:2;12724:12;;12571:171;-1:-1;;12571:171;12751:372;;12911:67;12975:2;12970:3;12911:67;;;13011:34;12991:55;;-1:-1;;;13075:2;13066:12;;13059:27;13114:2;13105:12;;12897:226;-1:-1;;12897:226;13132:318;;13292:67;13356:2;13351:3;13292:67;;;-1:-1;;;13372:41;;13441:2;13432:12;;13278:172;-1:-1;;13278:172;13537:1437;13738:23;;13672:6;13663:16;;;13767:63;13667:3;13738:23;13767:63;;;13694:142;13911:4;13904:5;13900:16;13894:23;13923:57;13974:4;13969:3;13965:14;13951:12;13923:57;;;13846:140;14060:4;14053:5;14049:16;14043:23;14072:63;14129:4;14124:3;14120:14;14106:12;14072:63;;;13996:145;14219:4;14212:5;14208:16;14202:23;14231:63;14288:4;14283:3;14279:14;14265:12;14231:63;;;14151:149;14384:4;14377:5;14373:16;14367:23;14396:63;14453:4;14448:3;14444:14;14430:12;14396:63;;;14310:155;14550:4;14543:5;14539:16;14533:23;14562:63;14619:4;14614:3;14610:14;14596:12;14562:63;;;14475:156;14717:4;14710:5;14706:16;14700:23;14729:63;14786:4;14781:3;14777:14;14763:12;14729:63;;;14641:157;14878:4;14871:5;14867:16;14861:23;14890:63;14947:4;14942:3;14938:14;14924:12;14890:63;;;14808:151;13645:1329;;;;15211:152;15312:45;15332:24;15350:5;15332:24;;;15312:45;;15370:939;;15629:75;15700:3;15691:6;15629:75;;;15726:2;15721:3;15717:12;15710:19;;15740:75;15811:3;15802:6;15740:75;;;15837:2;15832:3;15828:12;15821:19;;15851:75;15922:3;15913:6;15851:75;;;15948:2;15943:3;15939:12;15932:19;;15962:75;16033:3;16024:6;15962:75;;;16059:2;16054:3;16050:12;16043:19;;16073:75;16144:3;16135:6;16073:75;;;16170:2;16165:3;16161:12;16154:19;;16184:75;16255:3;16246:6;16184:75;;;-1:-1;16281:2;16272:12;;15617:692;-1:-1;;;;;;15617:692;16316:213;16434:2;16419:18;;16448:71;16423:9;16492:6;16448:71;;16536:547;16738:3;16723:19;;16753:71;16727:9;16797:6;16753:71;;;16835:72;16903:2;16892:9;16888:18;16879:6;16835:72;;;16918;16986:2;16975:9;16971:18;16962:6;16918:72;;;17001;17069:2;17058:9;17054:18;17045:6;17001:72;;;16709:374;;;;;;;;17090:361;17258:2;17272:47;;;17243:18;;17333:108;17243:18;17427:6;17333:108;;17458:457;17674:2;17688:47;;;17659:18;;17749:156;17659:18;17891:6;17749:156;;17922:201;18034:2;18019:18;;18048:65;18023:9;18086:6;18048:65;;18130:983;18438:3;18423:19;;18453:71;18427:9;18497:6;18453:71;;;18535:66;18597:2;18586:9;18582:18;18573:6;18535:66;;;18612:72;18680:2;18669:9;18665:18;18656:6;18612:72;;;18695;18763:2;18752:9;18748:18;18739:6;18695:72;;;18778:73;18846:3;18835:9;18831:19;18822:6;18778:73;;;18862;18930:3;18919:9;18915:19;18906:6;18862:73;;;18946;19014:3;19003:9;18999:19;18990:6;18946:73;;;19030;19098:3;19087:9;19083:19;19074:6;19030:73;;;18409:704;;;;;;;;;;;;19120:1435;19542:3;19527:19;;19557:71;19531:9;19601:6;19557:71;;;19639:72;19707:2;19696:9;19692:18;19683:6;19639:72;;;19722;19790:2;19779:9;19775:18;19766:6;19722:72;;;19805:66;19867:2;19856:9;19852:18;19843:6;19805:66;;;19882:73;19950:3;19939:9;19935:19;19926:6;19882:73;;;19966;20034:3;20023:9;20019:19;20010:6;19966:73;;;20050;20118:3;20107:9;20103:19;20094:6;20050:73;;;20134;20202:3;20191:9;20187:19;20178:6;20134:73;;;20218;20286:3;20275:9;20271:19;20262:6;20218:73;;;20302;20370:3;20359:9;20355:19;20346:6;20302:73;;;20386:74;20455:3;20444:9;20440:19;20430:7;20386:74;;;20471;20540:3;20529:9;20525:19;20515:7;20471:74;;;19513:1042;;;;;;;;;;;;;;;;20562:255;20701:2;20686:18;;20715:92;20690:9;20780:6;20715:92;;20824:407;21015:2;21029:47;;;21000:18;;21090:131;21000:18;21090:131;;21238:407;21429:2;21443:47;;;21414:18;;21504:131;21414:18;21504:131;;21652:407;21843:2;21857:47;;;21828:18;;21918:131;21828:18;21918:131;;22066:407;22257:2;22271:47;;;22242:18;;22332:131;22242:18;22332:131;;22480:407;22671:2;22685:47;;;22656:18;;22746:131;22656:18;22746:131;;22894:407;23085:2;23099:47;;;23070:18;;23160:131;23070:18;23160:131;;23308:407;23499:2;23513:47;;;23484:18;;23574:131;23484:18;23574:131;;23722:407;23913:2;23927:47;;;23898:18;;23988:131;23898:18;23988:131;;24136:213;24254:2;24239:18;;24268:71;24243:9;24312:6;24268:71;;24356:435;24530:2;24515:18;;24544:71;24519:9;24588:6;24544:71;;;24626:72;24694:2;24683:9;24679:18;24670:6;24626:72;;;24709;24777:2;24766:9;24762:18;24753:6;24709:72;;24798:659;25028:3;25013:19;;25043:71;25017:9;25087:6;25043:71;;;25125:72;25193:2;25182:9;25178:18;25169:6;25125:72;;;25208;25276:2;25265:9;25261:18;25252:6;25208:72;;;25291;25359:2;25348:9;25344:18;25335:6;25291:72;;;25374:73;25442:3;25431:9;25427:19;25418:6;25374:73;;;24999:458;;;;;;;;;25464:771;25722:3;25707:19;;25737:71;25711:9;25781:6;25737:71;;;25819:72;25887:2;25876:9;25872:18;25863:6;25819:72;;;25902;25970:2;25959:9;25955:18;25946:6;25902:72;;;25985;26053:2;26042:9;26038:18;26029:6;25985:72;;;26068:73;26136:3;26125:9;26121:19;26112:6;26068:73;;;26152;26220:3;26209:9;26205:19;26196:6;26152:73;;;25693:542;;;;;;;;;;26242:256;26304:2;26298:9;26330:17;;;26405:18;26390:34;;26426:22;;;26387:62;26384:2;;;26462:1;26459;26452:12;26384:2;26478;26471:22;26282:216;;-1:-1;26282:216;26505:304;;26664:18;26656:6;26653:30;26650:2;;;26696:1;26693;26686:12;26650:2;-1:-1;26731:4;26719:17;;;26784:15;;26587:222;26816:151;26940:4;26931:14;;26888:79;27156:137;27259:12;;27230:63;27723:178;27841:19;;;27890:4;27881:14;;27834:67;28292:91;;28354:24;28372:5;28354:24;;28390:85;28456:13;28449:21;;28432:43;28482:72;28544:5;28527:27;28561:144;-1:-1;;;;;;28622:78;;28605:100;28712:121;-1:-1;;;;;28774:54;;28757:76;28919:163;;29019:58;29071:5;29019:58;;29225:95;;29289:26;29309:5;29327:89;29391:20;29405:5;29578:2;29574:14;;29546:52;29606:117;29675:24;29693:5;29675:24;;;29668:5;29665:35;29655:2;;29714:1;29711;29704:12;29730:111;29796:21;29811:5;29796:21;;29848:117;29917:24;29935:5;29917:24;;29972:115;30040:23;30057:5;30040:23;"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "disableLoanParams(bytes32[])": "fe30fa6a",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "getLoanParams(bytes32[])": "2d9cd076",
              "getLoanParamsList(address,uint256,uint256)": "cf59e67b",
              "getTotalPrincipal(address,address)": "4a1e88fe",
              "initialize(address)": "c4d66de8",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minInitialMargin(bytes32)": "ca74a5d9",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[])": "a1ae275e",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "constructor": "Empty public constructor.",
              "disableLoanParams(bytes32[])": {
                "notice": "Deactivate LoanParams for future loans. Active loans using it are unaffected."
              },
              "getLoanParams(bytes32[])": {
                "notice": "Get loan parameters for every matching IDs."
              },
              "getLoanParamsList(address,uint256,uint256)": {
                "notice": "Get loan parameters for an owner and a given page defined by an offset and a limit."
              },
              "getTotalPrincipal(address,address)": {
                "notice": "Get the total principal of the loans by a lender."
              },
              "initialize(address)": {
                "notice": "Set function selectors on target contract."
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[])": {
                "notice": "Setup loan parameters, by looping every loan and populating its parameters."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains functions to get and set loan parameters."
          }
        }
      },
      "contracts/modules/ProtocolSettings.sol": {
        "ProtocolSettings": {
          "abi": [
            {
              "inputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetAffiliateFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetAffiliateTradingTokenFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetBorrowingFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldController",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newController",
                  "type": "address"
                }
              ],
              "name": "SetFeesController",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetLendingFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetLiquidationIncentivePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "loanPool",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlying",
                  "type": "address"
                }
              ],
              "name": "SetLoanPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "SetLockedSOVAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetMaxSwapSize",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldMinReferrals",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newMinReferrals",
                  "type": "uint256"
                }
              ],
              "name": "SetMinReferralsToPayoutAffiliates",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "oldValue",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newValue",
                  "type": "address"
                }
              ],
              "name": "SetPriceFeedContract",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldProtocol",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newProtocol",
                  "type": "address"
                }
              ],
              "name": "SetProtocolAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldProtocolToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newProtocolToken",
                  "type": "address"
                }
              ],
              "name": "SetProtocolTokenAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newRebatePercent",
                  "type": "uint256"
                }
              ],
              "name": "SetRebatePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetRolloverBaseReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldTokenAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newTokenAddress",
                  "type": "address"
                }
              ],
              "name": "SetSOVTokenAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldSovrynSwapContractRegistryAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newSovrynSwapContractRegistryAddress",
                  "type": "address"
                }
              ],
              "name": "SetSovrynSwapContractRegistryAddress",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldSpecialRebatesPercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newSpecialRebatesPercent",
                  "type": "uint256"
                }
              ],
              "name": "SetSpecialRebates",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "isActive",
                  "type": "bool"
                }
              ],
              "name": "SetSupportedTokens",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetSwapExternalFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "oldValue",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newValue",
                  "type": "address"
                }
              ],
              "name": "SetSwapsImplContract",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldValue",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "SetTradingFeePercent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldBasisPoint",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newBasisPoint",
                  "type": "uint256"
                }
              ],
              "name": "SetTradingRebateRewardsBasisPoint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldWethToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newWethToken",
                  "type": "address"
                }
              ],
              "name": "SetWrbtcToken",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "oldFlag",
                  "type": "bool"
                },
                {
                  "indexed": true,
                  "internalType": "bool",
                  "name": "newFlag",
                  "type": "bool"
                }
              ],
              "name": "TogglePaused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawBorrowingFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lendingAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tradingAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "borrowingAmount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawLendingFees",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "WithdrawTradingFees",
              "type": "event"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "depositProtocolToken",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getFeeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "start",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getLoanPoolsList",
              "outputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "",
                  "type": "bytes32[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getLockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getProtocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getSovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getSpecialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "specialRebatesPercent",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getSwapExternalFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getTradingRebateRewardsBasisPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanPool",
                  "type": "address"
                }
              ],
              "name": "isLoanPool",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isProtocolPaused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setAffiliateFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setAffiliateTradingTokenFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setBorrowingFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newController",
                  "type": "address"
                }
              ],
              "name": "setFeesController",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setLendingFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setLiquidationIncentivePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "pools",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                }
              ],
              "name": "setLoanPool",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newLockedSOVAddress",
                  "type": "address"
                }
              ],
              "name": "setLockedSOVAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setMaxDisagreement",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setMaxSwapSize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newMinReferrals",
                  "type": "uint256"
                }
              ],
              "name": "setMinReferralsToPayoutAffiliates",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newContract",
                  "type": "address"
                }
              ],
              "name": "setPriceFeedContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_protocolTokenAddress",
                  "type": "address"
                }
              ],
              "name": "setProtocolTokenAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "rebatePercent",
                  "type": "uint256"
                }
              ],
              "name": "setRebatePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "baseRewardValue",
                  "type": "uint256"
                }
              ],
              "name": "setRolloverBaseReward",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newSovTokenAddress",
                  "type": "address"
                }
              ],
              "name": "setSOVTokenAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setSourceBuffer",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newProtocolAddress",
                  "type": "address"
                }
              ],
              "name": "setSovrynProtocolAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "registryAddress",
                  "type": "address"
                }
              ],
              "name": "setSovrynSwapContractRegistryAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "specialRebatesPercent",
                  "type": "uint256"
                }
              ],
              "name": "setSpecialRebates",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "addrs",
                  "type": "address[]"
                },
                {
                  "internalType": "bool[]",
                  "name": "toggles",
                  "type": "bool[]"
                }
              ],
              "name": "setSupportedTokens",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setSwapExternalFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newContract",
                  "type": "address"
                }
              ],
              "name": "setSwapsImplContract",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newValue",
                  "type": "uint256"
                }
              ],
              "name": "setTradingFeePercent",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newBasisPoint",
                  "type": "uint256"
                }
              ],
              "name": "setTradingRebateRewardsBasisPoint",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "wrbtcTokenAddress",
                  "type": "address"
                }
              ],
              "name": "setWrbtcToken",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "paused",
                  "type": "bool"
                }
              ],
              "name": "togglePaused",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawBorrowingFees",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "withdrawFees",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawLendingFees",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawProtocolToken",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "withdrawTradingFees",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "depositProtocolToken(uint256)": {
                "params": {
                  "amount": "The tokens of fees to send."
                }
              },
              "getLoanPoolsList(uint256,uint256)": {
                "params": {
                  "count": "The limit.",
                  "start": "The offset."
                },
                "return": "The array of loan pools."
              },
              "getSpecialRebates(address,address)": {
                "params": {
                  "destTokenAddress": "The dest of pairs.",
                  "sourceTokenAddress": "The source of pairs."
                },
                "return": "The percent rebates of the pairs."
              },
              "getTradingRebateRewardsBasisPoint()": {
                "return": "The basis point value."
              },
              "initialize(address)": {
                "params": {
                  "target": "The address of the target contract."
                }
              },
              "isLoanPool(address)": {
                "details": "By querying its underlying token.",
                "params": {
                  "loanPool": "The token address to check."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "setAffiliateFeePercent(uint256)": {
                "params": {
                  "newValue": "The new value for affiliateFeePercent."
                }
              },
              "setAffiliateTradingTokenFeePercent(uint256)": {
                "params": {
                  "newValue": "The new value for affiliateTradingTokenFeePercent."
                }
              },
              "setBorrowingFeePercent(uint256)": {
                "params": {
                  "newValue": "The new value for borrowingFeePercent."
                }
              },
              "setFeesController(address)": {
                "details": "The fee sharing proxy must be the feesController of the protocol contract. This allows the fee sharing proxy to withdraw the fees.",
                "params": {
                  "newController": "The new address of the feesController."
                }
              },
              "setLendingFeePercent(uint256)": {
                "params": {
                  "newValue": "The new value for lendingFeePercent."
                }
              },
              "setLiquidationIncentivePercent(uint256)": {
                "params": {
                  "newValue": "The new value for liquidationIncentivePercent."
                }
              },
              "setLoanPool(address[],address[])": {
                "params": {
                  "assets": "The array of addresses of the corresponding underlying tokens.",
                  "pools": "The array of addresses of new loan pool instances."
                }
              },
              "setMaxDisagreement(uint256)": {
                "params": {
                  "newValue": "The new value for maxDisagreement."
                }
              },
              "setMaxSwapSize(uint256)": {
                "params": {
                  "newValue": "The new value for the maximum swap size."
                }
              },
              "setMinReferralsToPayoutAffiliates(uint256)": {
                "params": {
                  "newMinReferrals": "The new minimum number of referrals."
                }
              },
              "setPriceFeedContract(address)": {
                "params": {
                  "newContract": "The address of the Price Feed new instance."
                }
              },
              "setProtocolTokenAddress(address)": {
                "params": {
                  "_protocolTokenAddress": "The address of the protocol token contract."
                }
              },
              "setRebatePercent(uint256)": {
                "params": {
                  "rebatePercent": "The fee rebate percent."
                }
              },
              "setRolloverBaseReward(uint256)": {
                "params": {
                  "baseRewardValue": "The base reward."
                }
              },
              "setSourceBuffer(uint256)": {
                "details": "To avoid rounding issues on the swap rate a small buffer is implemented.",
                "params": {
                  "newValue": "The new value for the maximum source buffer."
                }
              },
              "setSovrynSwapContractRegistryAddress(address)": {
                "params": {
                  "registryAddress": "the address of the registry contract."
                }
              },
              "setSpecialRebates(address,address,uint256)": {
                "params": {
                  "specialRebatesPercent": "The new special fee rebate percent."
                }
              },
              "setSupportedTokens(address[],bool[])": {
                "params": {
                  "addrs": "The array of addresses of the tokens.",
                  "toggles": "The array of flags indicating whether  the corresponding token is supported or not."
                }
              },
              "setSwapExternalFeePercent(uint256)": {
                "params": {
                  "newValue": "the new value for swapExternalFeePercent"
                }
              },
              "setSwapsImplContract(address)": {
                "params": {
                  "newContract": "The address of the asset swapper new instance."
                }
              },
              "setTradingFeePercent(uint256)": {
                "params": {
                  "newValue": "The new value for tradingFeePercent."
                }
              },
              "setTradingRebateRewardsBasisPoint(uint256)": {
                "params": {
                  "newBasisPoint": "Basis point value."
                }
              },
              "setWrbtcToken(address)": {
                "params": {
                  "wrbtcTokenAddress": "The address of the wrBTC contract."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              },
              "withdrawBorrowingFees(address,address,uint256)": {
                "params": {
                  "amount": "The amount of fees to get, ignored if greater than balance.",
                  "receiver": "The address of the withdrawal recipient.",
                  "token": "The address of the token instance."
                },
                "return": "Whether withdrawal was successful."
              },
              "withdrawFees(address,address)": {
                "params": {
                  "receiver": "The address of the withdrawal recipient.",
                  "token": "The address of the token instance."
                },
                "return": "The withdrawn amount."
              },
              "withdrawLendingFees(address,address,uint256)": {
                "params": {
                  "amount": "The amount of fees to get, ignored if greater than balance.",
                  "receiver": "The address of the withdrawal recipient.",
                  "token": "The address of the token instance."
                },
                "return": "Whether withdrawal was successful."
              },
              "withdrawProtocolToken(address,uint256)": {
                "details": "Wrapper for ProtocolTokenUser::_withdrawProtocolToken internal function.",
                "params": {
                  "amount": "The amount of tokens to get.",
                  "receiver": "The address of the withdrawal recipient."
                },
                "return": "The protocol token address.Withdrawal success (true/false)."
              },
              "withdrawTradingFees(address,address,uint256)": {
                "params": {
                  "amount": "The amount of fees to get, ignored if greater than balance.",
                  "receiver": "The address of the withdrawal recipient.",
                  "token": "The address of the token instance."
                },
                "return": "Whether withdrawal was successful."
              }
            },
            "title": "Protocol Settings contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d00000603955348015620000a657600080fd5b506000620000bc6001600160e01b036200011016565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000114565b3390565b6144a480620001246000396000f3fe608060405234801561001057600080fd5b50600436106105305760003560e01c80638dc48ba5116102af578063cb6eacd111610172578063e8997dbd116100d9578063f2fde38b11610092578063f2fde38b14610b6d578063f44942ec14610b80578063f589a3e714610b88578063f6ddc8b314610b90578063f706b1f214610b98578063f851a44014610ba057610530565b8063e8997dbd14610b1c578063e8f6276414610b2f578063ea0e393014610b37578063edab119f14610b4a578063f0e085f514610b52578063f255527814610b5a57610530565b8063d485045e1161012b578063d485045e14610ac0578063d9eaaa6414610ad3578063da541e0914610ae6578063dac8856114610af9578063e3ff937014610b01578063e419648014610b1457610530565b8063cb6eacd114610a50578063cd5d808d14610a77578063d21f8e2414610a8a578063d238db2214610a9d578063d288208c14610ab0578063d473c2da14610ab857610530565b8063ae0a853011610216578063b9cffa3e116101cf578063b9cffa3e146109dc578063ba4861e9146109e4578063bdee453c146109ec578063c4a90815146109ff578063c4d66de814610a2a578063c7c333f014610a3d57610530565b8063ae0a853014610973578063afe840091461097b578063b1558b7214610990578063b1ac89ca146109a3578063b30643d9146109b6578063b7e15241146109c957610530565b80639c53874f116102685780639c53874f1461090c578063a1eb56831461091f578063a2ab1ba114610932578063a32bb68314610945578063a6e7cc2814610958578063acc043481461096b57610530565b80638dc48ba5146108a25780638f32d59b146108b55780639254e6bf146108bd57806392d894f8146108d0578063959083d3146108e357806396881857146108eb57610530565b80634203e395116103f75780636e6637301161035e57806378d849ed1161031757806378d849ed1461085c5780637a8faeb8146108645780637fb202e51461086c5780638456cb591461087f57806384eaa9e0146108875780638da5cb5b1461089a57610530565b80636e663730146108005780636fbae33b146108135780637420ca3e14610826578063742e67981461082e57806374326e8f14610836578063746264041461084957610530565b8063569fc1fb116103b0578063569fc1fb14610779578063574442cc1461079b57806359d0d9ec146107a357806359e49e0f146107b657806362fff3f6146107c957806368c4ac26146107ed57610530565b80634203e39514610733578063462096f3146107465780634699f8461461074e5780634bcfe726146107565780634dd053a51461075e5780634f28cac21461077157610530565b80632a3240271161049b578063355a395f11610454578063355a395f146106bf5780633c56ae1b146106d25780633f1ae8b9146106e55780633fca506e146106ed578063402946b9146107005780634115a2b61461072057610530565b80632a324027146106635780632d77d0d01461066b5780632f4707641461067e57806332e4706f146106865780633432423c146106995780633452d2d4146106ac57610530565b806317f8b788116104ed57806317f8b788146105e45780631a81c191146105f75780631b7bde741461060a578063218b39c61461062a57806324cc57491461063d57806329f9986d1461065057610530565b8063065d810f146105515780630676c1b71461057f57806307024c25146105945780630c615ee91461059c578063115dd4b1146105b157806317548b79146105d1575b60405162461bcd60e51b815260040161054890614250565b60405180910390fd5b61056461055f366004613868565b610ba8565b60405161057696959493929190614353565b60405180910390f35b610587610be8565b6040516105769190613f71565b610587610bf7565b6105af6105aa366004613944565b610c06565b005b6105c46105bf3660046137c3565b610cbe565b6040516105769190614009565b6105876105df366004613981565b610cde565b6105af6105f2366004613944565b610cf9565b6105af6106053660046137c3565b610da5565b61061d6106183660046137e1565b610e41565b60405161057691906142d0565b6105876106383660046137c3565b610e5e565b6105c461064b3660046137c3565b610e79565b6105af61065e366004613944565b610e8e565b61061d610f3a565b6105af6106793660046137c3565b610f40565b61061d611002565b6105c461069436600461381b565b611008565b6105646106a7366004613868565b611164565b61061d6106ba3660046137c3565b6111a4565b6105af6106cd366004613944565b6111b6565b6105af6106e0366004613944565b611239565b61061d6112b7565b61061d6106fb3660046137c3565b6112bd565b61071361070e36600461399f565b6112cf565b6040516105769190613ff8565b6105c461072e366004613962565b6112ec565b61061d6107413660046137c3565b61130c565b61061d61131e565b61061d611324565b61058761132a565b6105af61076c3660046137c3565b611339565b61061d6113f9565b61078c610787366004613944565b6113ff565b604051610576939291906142ec565b61061d611420565b61061d6107b13660046137e1565b611426565b6105af6107c4366004613898565b611451565b6107dc6107d73660046137e1565b611901565b604051610576959493929190614307565b6105c46107fb3660046137c3565b61193b565b61058761080e3660046137c3565b611950565b6105af6108213660046137c3565b61196b565b610587611a2b565b61061d611a3a565b6105c461084436600461381b565b611a40565b6105af6108573660046137c3565b611b86565b610587611c22565b61061d611c31565b6105af61087a366004613944565b611c37565b6105c4611c83565b6105af610895366004613898565b611c8c565b610587611df5565b6105876108b03660046137c3565b611e04565b6105c4611e1f565b6105af6108cb3660046137c3565b611e45565b61061d6108de3660046137c3565b611ee0565b61061d611ef2565b6108fe6108f9366004613868565b611ef8565b604051610576929190613fc2565b6105af61091a366004613944565b611f58565b6105af61092d366004613944565b612004565b6105af610940366004613944565b6120a9565b6105af610953366004613944565b612155565b6105af610966366004613944565b612201565b61061d61224d565b61061d612253565b610983612259565b6040516105769190614141565b6105af61099e366004613944565b612268565b6105c46109b136600461381b565b61230b565b61061d6109c43660046137c3565b612451565b61061d6109d73660046137c3565b612463565b610587612475565b610587612484565b61061d6109fa3660046137c3565b612493565b610a12610a0d366004613944565b6124a5565b6040516105769c9b9a9998979695949392919061408e565b6105af610a383660046137c3565b612517565b6105af610a4b366004613944565b6128a5565b610a63610a5e366004613944565b612928565b604051610576989796959493929190614017565b61061d610a853660046137e1565b61297a565b6105af610a98366004613944565b612997565b6105af610aab366004613944565b612a43565b610587612aef565b61061d612afe565b61061d610ace3660046137c3565b612b04565b6105af610ae13660046137c3565b612b16565b6105af610af4366004613908565b612bd5565b6105c4612c65565b6105af610b0f3660046137c3565b612c6e565b61061d612d2e565b6105af610b2a3660046137c3565b612d34565b610587612dcf565b6105af610b4536600461381b565b612dde565b61061d612ec3565b61061d612ec9565b61061d610b683660046137e1565b612ecf565b6105af610b7b3660046137c3565b61311d565b61058761314a565b61061d613159565b61061d61315f565b610587613165565b610587613174565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6031546001600160a01b031690565b610c0e611e1f565b610c2a5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610c4d5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115610c765760405162461bcd60e51b815260040161054890614200565b601880549082905560405133907f0628070e9ccbc70e8be34a2fa969f8d314ec049f17bfcb4c2020df4bccd2bf5290610cb290849086906142de565b60405180910390a25050565b6001600160a01b0390811660009081526022602052604090205416151590565b6005602052600090815260409020546001600160a01b031681565b610d01611e1f565b610d1d5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610d405760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115610d695760405162461bcd60e51b815260040161054890614200565b601b80549082905560405133907f5c61c9c51cb2781bc120817a851f7f27c134d5d191bc5a2b0ea971ba638425e490610cb290849086906142de565b610dad611e1f565b610dc95760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610dec5760405162461bcd60e51b815260040161054890614160565b600380546001600160a01b038381166001600160a01b031983161790925560405191169033907f480cc6e59585343a9e9d6fe591dad0f80ce93bb2399ca672910f380671b46ba890610cb29084908690613f7f565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b610e96611e1f565b610eb25760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610ed55760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115610efe5760405162461bcd60e51b815260040161054890614200565b603e80549082905560405133907f02bd69d9975fcf3b39b6ab502d77983a0cfce893e47073f502d094c6a94da33b90610cb290849086906142de565b60185481565b610f48611e1f565b610f645760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610f875760405162461bcd60e51b815260040161054890614160565b610f9081613183565b610fac5760405162461bcd60e51b815260040161054890614210565b600480546001600160a01b038381166001600160a01b031983161792839055604051918116921690829033907f54c538f1d732806e1bfc25ec56236dac39e6070dd856c0e7efb2bc274709467d90600090a45050565b601f5481565b603d5460009060ff161561102e5760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b031633146110585760405162461bcd60e51b815260040161054890614240565b6001600160a01b0384166000908152601c602052604090205482908082111561107f578091505b8161108f5760009250505061115d565b61109f818363ffffffff6131bf16565b6001600160a01b0387166000908152601c6020908152604080832093909355601d905220546110d4908363ffffffff61320116565b6001600160a01b0387166000818152601d602052604090209190915561110190868463ffffffff61322616565b846001600160a01b0316866001600160a01b0316336001600160a01b03167f2bfaa669aeee298bc85fe2b7dddc312fc28b78622f086063b9a410d7ba9939cf8560405161114e91906142d0565b60405180910390a46001925050505b9392505050565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b6111be611e1f565b6111da5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156111fd5760405162461bcd60e51b815260040161054890614160565b602980549082905560405133907fa645d7b227c34f1f218d53bc3b3ccb9a43eaf2231b33925194f1de755aa3acc390610cb290849086906142de565b611241611e1f565b61125d5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156112805760405162461bcd60e51b815260040161054890614160565b601e54611293908263ffffffff61320116565b601e55602e546112b4906001600160a01b031633308463ffffffff61328416565b50565b602f5490565b602a6020526000908152604090205481565b60606112e36024848463ffffffff6132ae16565b90505b92915050565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b603e5490565b60155481565b6037546001600160a01b031690565b611341611e1f565b61135d5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156113805760405162461bcd60e51b815260040161054890614160565b61138981613183565b6113a55760405162461bcd60e51b815260040161054890614180565b603880546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fea3cad8b6739a7a73616cb585fe48a8e8f61d1fd7f9822ccd7580a805357aa7090600090a45050565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b6001600160a01b039182166000908152603c6020908152604080832093909416825291909152205490565b611459611e1f565b6114755760405162461bcd60e51b815260040161054890614240565b603d5460ff16156114985760405162461bcd60e51b815260040161054890614160565b8281146114b75760405162461bcd60e51b8152600401610548906141e0565b60005b838110156118fa578282828181106114ce57fe5b90506020020160206114e391908101906137c3565b6001600160a01b03168585838181106114f857fe5b905060200201602061150d91908101906137c3565b6001600160a01b031614156115345760405162461bcd60e51b815260040161054890614270565b600085858381811061154257fe5b905060200201602061155791908101906137c3565b6001600160a01b0316141561157e5760405162461bcd60e51b8152600401610548906142c0565b600083838381811061158c57fe5b90506020020160206115a191908101906137c3565b6001600160a01b03161415806115f8575060006022818787858181106115c357fe5b90506020020160206115d891908101906137c3565b6001600160a01b0390811682526020820192909252604001600020541614155b6116145760405162461bcd60e51b815260040161054890614220565b600083838381811061162257fe5b905060200201602061163791908101906137c3565b6001600160a01b03161415611746576000602360006022600089898781811061165c57fe5b905060200201602061167191908101906137c3565b6001600160a01b0390811682526020808301939093526040918201600090812054821685529284019490945291909101812080546001600160a01b031916939092169290921790556022818787858181106116c857fe5b90506020020160206116dd91908101906137c3565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b0319169290911691909117905561174085858381811061171d57fe5b905060200201602061173291908101906137c3565b60249063ffffffff61338416565b50611868565b82828281811061175257fe5b905060200201602061176791908101906137c3565b6022600087878581811061177757fe5b905060200201602061178c91908101906137c3565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b031916929091169190911790558484828181106117c957fe5b90506020020160206117de91908101906137c3565b602360008585858181106117ee57fe5b905060200201602061180391908101906137c3565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b0319169290911691909117905561186685858381811061184357fe5b905060200201602061185891908101906137c3565b60249063ffffffff61339116565b505b82828281811061187457fe5b905060200201602061188991908101906137c3565b6001600160a01b031685858381811061189e57fe5b90506020020160206118b391908101906137c3565b6001600160a01b0316336001600160a01b03167f919223d371e0ad76f1f32dcbe0750166810bff9a9e4b2735bfcd01c5686c8d8960405160405180910390a46001016114ba565b5050505050565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b611973611e1f565b61198f5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156119b25760405162461bcd60e51b815260040161054890614160565b6119bb81613183565b6119d75760405162461bcd60e51b8152600401610548906141d0565b603780546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907f6105cbfb5494a79f89745763767914b7b60b00defac5e94c7eb28cc5e44c479f90600090a45050565b6003546001600160a01b031681565b60355481565b603d5460009060ff1615611a665760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b03163314611a905760405162461bcd60e51b815260040161054890614240565b6001600160a01b038416600090815260196020526040902054829080821115611ab7578091505b81611ac75760009250505061115d565b611ad7818363ffffffff6131bf16565b6001600160a01b038716600090815260196020908152604080832093909355601a90522054611b0c908363ffffffff61320116565b6001600160a01b0387166000818152601a6020526040902091909155611b3990868463ffffffff61322616565b846001600160a01b0316866001600160a01b0316336001600160a01b03167f951f1856a4d1d8c0081f50a1aee9fdc008f729d0f22849618016e353179b8dda8560405161114e91906142d0565b611b8e611e1f565b611baa5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611bcd5760405162461bcd60e51b815260040161054890614160565b600280546001600160a01b038381166001600160a01b031983161790925560405191169033907f05621ab0b721f217895f5337ac1283251172d175ef3dc8c9a0287155f6024ce890610cb29084908690613f7f565b6002546001600160a01b031681565b601e5481565b611c3f611e1f565b611c5b5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611c7e5760405162461bcd60e51b815260040161054890614160565b602755565b603d5460ff1681565b611c94611e1f565b611cb05760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611cd35760405162461bcd60e51b815260040161054890614160565b828114611cf25760405162461bcd60e51b8152600401610548906141e0565b60005b838110156118fa57828282818110611d0957fe5b9050602002016020611d1e9190810190613908565b60266000878785818110611d2e57fe5b9050602002016020611d4391908101906137c3565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055848482818110611d7757fe5b9050602002016020611d8c91908101906137c3565b6001600160a01b0316337f24cecc90c7d4bc8c6765b75eedcc61d4e1cc4e4d49cd0756c6dfb5f6cc259b50858585818110611dc357fe5b9050602002016020611dd89190810190613908565b604051611de59190614009565b60405180910390a3600101611cf5565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316611e3661339e565b6001600160a01b031614905090565b611e4d611e1f565b611e695760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611e8c5760405162461bcd60e51b815260040161054890614160565b603180546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fe48b1893efaee62da0749dd98dbf0ea62ee472b37f7205114aca36cc9de1122890600090a45050565b60176020526000908152604090205481565b602c5481565b600080611f03611e1f565b611f1f5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611f425760405162461bcd60e51b815260040161054890614160565b611f4c84846133a2565b915091505b9250929050565b611f60611e1f565b611f7c5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611f9f5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115611fc85760405162461bcd60e51b8152600401610548906141b0565b602f80549082905560405133907fb12d68e20e5279e25ff10edfc0f82deaa858ea2ac9874cf58518f4e5f942201390610cb290849086906142de565b61200c611e1f565b6120285760405162461bcd60e51b815260040161054890614240565b603d5460ff161561204b5760405162461bcd60e51b815260040161054890614160565b61270f81111561206d5760405162461bcd60e51b815260040161054890614200565b603f80549082905560405133907fc6d322dc6668f20ff04ac11b217aae8e8704e6388bd1dececeab1059db806bf690610cb290849086906142de565b6120b1611e1f565b6120cd5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156120f05760405162461bcd60e51b815260040161054890614160565b68056bc75e2d631000008111156121195760405162461bcd60e51b815260040161054890614200565b602180549082905560405133907fa06d9b7b1c979150dcbf5b050626cc7d06c764a12ebf76ec8d16b8d3d7c9ee5390610cb290849086906142de565b61215d611e1f565b6121795760405162461bcd60e51b815260040161054890614240565b603d5460ff161561219c5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d631000008111156121c55760405162461bcd60e51b815260040161054890614200565b603980549082905560405133907f61d3e840cf1074298f10fa77edb788b4e5e554d7d135c93ac5f38f2ce0f6b52d90610cb290849086906142de565b612209611e1f565b6122255760405162461bcd60e51b815260040161054890614240565b603d5460ff16156122485760405162461bcd60e51b815260040161054890614160565b602855565b602f5481565b60205481565b602d546001600160a01b031681565b612270611e1f565b61228c5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156122af5760405162461bcd60e51b815260040161054890614160565b600081116122cf5760405162461bcd60e51b815260040161054890614170565b602b80549082905560405133907f13cb748cec5c5021a23ec7994522a0911f24f10fdabc909281fbe95914b782f090610cb290849086906142de565b603d5460009060ff16156123315760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b0316331461235b5760405162461bcd60e51b815260040161054890614240565b6001600160a01b038416600090815260166020526040902054829080821115612382578091505b816123925760009250505061115d565b6123a2818363ffffffff6131bf16565b6001600160a01b0387166000908152601660209081526040808320939093556017905220546123d7908363ffffffff61320116565b6001600160a01b03871660008181526017602052604090209190915561240490868463ffffffff61322616565b846001600160a01b0316866001600160a01b0316336001600160a01b03167fabc20bdd02de91df32a6e4a11684e26e0a34dc5a895a314ae51a919bc9f62c608560405161114e91906142d0565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b61251f611e1f565b61253b5760405162461bcd60e51b815260040161054890614240565b631d18990160e21b600081905260056020527fe1ae43de9a4a3eb1abb1a58087a8aff0717a77c07be9f83ced74911b33b030e3546001600160a01b031690612583908361341f565b612594631a81c19160e01b8361341f565b6125a56359e49e0f60e01b8361341f565b6125b6630427554f60e51b8361341f565b6125c763691c6d9160e11b8361341f565b6125d8630c615ee960e01b8361341f565b6125e96302ff16f160e31b8361341f565b6125fa6329f9986d60e01b8361341f565b61260b633487e38960e21b8361341f565b61261c63a32bb68360e01b8361341f565b61262d63a2ab1ba160e01b8361341f565b61263e637fb202e560e01b8361341f565b61264f6314dcf98560e31b8361341f565b61266063355a395f60e01b8361341f565b61267163e8997dbd60e01b8361341f565b612682631e4aaa4f60e31b8361341f565b6126936358d644e560e11b8361341f565b6126a46374326e8f60e01b8361341f565b6126b56332e4706f60e01b8361341f565b6126c6639688185760e01b8361341f565b6126d7633c56ae1b60e01b8361341f565b6126e863402946b960e01b8361341f565b6126f963115dd4b160e01b8361341f565b61270a6302d77d0d60e41b8361341f565b61271b63367aaa9960e21b8361341f565b61272c630e3ff93760e41b8361341f565b61273d6358aac5b960e11b8361341f565b61274e639c53874f60e01b8361341f565b61275f630ea0e39360e41b8361341f565b612770639254e6bf60e01b8361341f565b612781636fbae33b60e01b8361341f565b612792634dd053a560e01b8361341f565b6127a3630c7c333f60e41b8361341f565b6127b4631674367b60e21b8361341f565b6127c56307024c2560e01b8361341f565b6127d66325e7f39360e11b8361341f565b6127e7633d1250bb60e21b8361341f565b6127f8633f1ae8b960e01b8361341f565b61280963da541e0960e01b8361341f565b61281a63dac8856160e01b8361341f565b61282b63462096f360e01b8361341f565b61283c63a1eb568360e01b8361341f565b61284d6301c832c960e71b8361341f565b6f50726f746f636f6c53657474696e677360801b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6128ad611e1f565b6128c95760405162461bcd60e51b815260040161054890614240565b603d5460ff16156128ec5760405162461bcd60e51b815260040161054890614160565b603580549082905560405133907f5b3b73dcee2d869937089aa5282989415bc607389ab2d4164ae83e7a9e1da08490610cb290849086906142de565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b61299f611e1f565b6129bb5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156129de5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115612a075760405162461bcd60e51b815260040161054890614200565b602080549082905560405133907f7f47cc725826cba6f43b2c0a013328b47d5f16aa9d27d6f0196a37a35c8e53f590610cb290849086906142de565b612a4b611e1f565b612a675760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612a8a5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115612ab35760405162461bcd60e51b815260040161054890614200565b601580549082905560405133907fa6c5bd6650afa784494efd877ecd8b7505efbbbaed74b7dd29f1472d6cd0c49290610cb290849086906142de565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b612b1e611e1f565b612b3a5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612b5d5760405162461bcd60e51b815260040161054890614160565b612b6681613183565b612b825760405162461bcd60e51b8152600401610548906141f0565b602d80546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907ec53b30140bc38db3a9070249d614e03304ada9e458b2d2f01d23feed00985a90600090a45050565b612bdd611e1f565b612bf95760405162461bcd60e51b815260040161054890614240565b603d5460ff1615158115151415612c225760405162461bcd60e51b8152600401610548906142a0565b603d805460ff19168215801591821790925560405190919033907f575725fa4843b62a71608b620f6d2a15792407ae40e019230a0500109782f66090600090a450565b603d5460ff1690565b612c76611e1f565b612c925760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612cb55760405162461bcd60e51b815260040161054890614160565b612cbe81613183565b612cda5760405162461bcd60e51b815260040161054890614290565b602e80546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fffdeb9a96d6e1f867bcbb8a64815e576b65141995ab197cf02f7bb34fc186b7590600090a45050565b603f5490565b612d3c611e1f565b612d585760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612d7b5760405162461bcd60e51b815260040161054890614160565b601480546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907f83e92cb95ec836f94e25e0a7b31c39f750833a8ce24eaa227a7050aafea08a8490600090a45050565b6014546001600160a01b031681565b612de6611e1f565b612e025760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612e255760405162461bcd60e51b815260040161054890614160565b683635c9adc5dea00000811115612e4e5760405162461bcd60e51b815260040161054890614260565b6001600160a01b038381166000818152603c60209081526040808320948716808452949091529081902080549085905590519092919033907fd2d3c121d3439420f50efd36f0a01ebdac87111ec00360641c32aea3c6fc321390612eb590869088906142de565b60405180910390a450505050565b601b5481565b60285481565b603d5460009060ff1615612ef55760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b03163314612f1f5760405162461bcd60e51b815260040161054890614240565b6001600160a01b0383166000908152601660205260409020548015612f8e576001600160a01b03841660009081526016602090815260408083208390556017909152902054612f74908263ffffffff61320116565b6001600160a01b0385166000908152601760205260409020555b6001600160a01b0384166000908152601960205260409020548015612ffd576001600160a01b0385166000908152601960209081526040808320839055601a909152902054612fe3908263ffffffff61320116565b6001600160a01b0386166000908152601a60205260409020555b6001600160a01b0385166000908152601c6020526040902054801561306c576001600160a01b0386166000908152601c60209081526040808320839055601d909152902054613052908263ffffffff61320116565b6001600160a01b0387166000908152601d60205260409020555b600061308e82613082868663ffffffff61320116565b9063ffffffff61320116565b9050806130a05793506112e692505050565b6130ba6001600160a01b038816878363ffffffff61322616565b856001600160a01b0316876001600160a01b0316336001600160a01b03167fa0f881f497620074a74d99fb0378eab58be58cac19de6d38c57bcfeb1786183087878760405161310b939291906142ec565b60405180910390a49695505050505050565b613125611e1f565b6131415760405162461bcd60e51b815260040161054890614240565b6112b481613499565b6038546001600160a01b031690565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906131b757508115155b949350505050565b60006112e383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061351b565b6000828201838110156112e35760405162461bcd60e51b8152600401610548906141a0565b60405161327f90849063a9059cbb60e01b906132489086908690602401613fdd565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613547565b505050565b6040516132a89085906323b872dd60e01b9061324890879087908790602401613f9a565b50505050565b6060828201838110156132d35760405162461bcd60e51b815260040161054890614230565b600185015481116132e457806132ea565b60018501545b90508015806132f95750808410155b15613304575061115d565b838103604051908082528060200260200182016040528015613330578160200160208202803883390190505b50915060005b84820381101561337b57856001018582018154811061335157fe5b906000526020600020015483828151811061336857fe5b6020908102919091010152600101613336565b50509392505050565b6000816131b7848261362c565b6000816131b784826136f5565b3390565b601e5460009081908390808211156133b8578091505b816133d6575050602e546001600160a01b0316915060009050611f51565b6133e6818363ffffffff6131bf16565b601e55602e54613406906001600160a01b0316878463ffffffff61322616565b5050602e546001600160a01b0316946001945092505050565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b0383169081179091551561347a57613474600d6001600160e01b0319841663ffffffff6136f516565b50613495565b61327f600d6001600160e01b0319841663ffffffff61362c16565b5050565b6001600160a01b0381166134bf5760405162461bcd60e51b815260040161054890614190565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000818484111561353f5760405162461bcd60e51b8152600401610548919061414f565b505050900390565b613559826001600160a01b0316613183565b6135755760405162461bcd60e51b8152600401610548906142b0565b60006060836001600160a01b0316836040516135919190613f65565b6000604051808303816000865af19150503d80600081146135ce576040519150601f19603f3d011682016040523d82523d6000602084013e6135d3565b606091505b5091509150816135f55760405162461bcd60e51b8152600401610548906141c0565b8051156132a857808060200190516136109190810190613926565b6132a85760405162461bcd60e51b815260040161054890614280565b60006136388383613735565b156136ed57600082815260208490526040902054600184015460001991820191018082146136b057600085600101828154811061367157fe5b906000526020600020015490508086600101848154811061368e57fe5b6000918252602080832090910192909255918252869052604090206001830190555b600084815260208690526040812055600185018054806136cc57fe5b600190038181906000526020600020016000905590556001925050506112e6565b5060006112e6565b60006137018383613735565b6136ed57506001808301805480830180835560009283526020808420909201859055848352908590526040909120556112e6565b60009081526020919091526040902054151590565b80356112e681614432565b60008083601f84011261376757600080fd5b50813567ffffffffffffffff81111561377f57600080fd5b602083019150836020820283011115611f5157600080fd5b80356112e681614446565b80516112e681614446565b80356112e68161444f565b80356112e681614458565b6000602082840312156137d557600080fd5b60006131b7848461374a565b600080604083850312156137f457600080fd5b6000613800858561374a565b92505060206138118582860161374a565b9150509250929050565b60008060006060848603121561383057600080fd5b600061383c868661374a565b935050602061384d8682870161374a565b925050604061385e868287016137ad565b9150509250925092565b6000806040838503121561387b57600080fd5b6000613887858561374a565b9250506020613811858286016137ad565b600080600080604085870312156138ae57600080fd5b843567ffffffffffffffff8111156138c557600080fd5b6138d187828801613755565b9450945050602085013567ffffffffffffffff8111156138f057600080fd5b6138fc87828801613755565b95989497509550505050565b60006020828403121561391a57600080fd5b60006131b78484613797565b60006020828403121561393857600080fd5b60006131b784846137a2565b60006020828403121561395657600080fd5b60006131b784846137ad565b6000806040838503121561397557600080fd5b600061380085856137ad565b60006020828403121561399357600080fd5b60006131b784846137b8565b600080604083850312156139b257600080fd5b600061388785856137ad565b60006139ca8383613a43565b505060200190565b6139db816143c5565b82525050565b60006139ec826143b3565b6139f681856143b7565b9350613a01836143ad565b8060005b83811015613a2f578151613a1988826139be565b9750613a24836143ad565b925050600101613a05565b509495945050505050565b6139db816143d0565b6139db816143d5565b6000613a57826143b3565b613a6181856143c0565b9350613a718185602086016143fc565b9290920192915050565b6139db816143f1565b6000613a8f826143b3565b613a9981856143b7565b9350613aa98185602086016143fc565b613ab281614428565b9093019392505050565b6000613ac96006836143b7565b6514185d5cd95960d21b815260200192915050565b6000613aeb6013836143b7565b724261736520726577617264206973207a65726f60681b815260200192915050565b6000613b1a6020836143b7565b7f6e65774c6f636b534f5641646472657373206e6f74206120636f6e7472616374815260200192915050565b6000613b536026836143b7565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000613b9b601b836143b7565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613bd46016836143b7565b7508ccaca40e4cac4c2e8ca40d2e640e8dede40d0d2ced60531b815260200192915050565b6000613c066020836143b7565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000613c3f6021836143b7565b7f6e6577536f76546f6b656e41646472657373206e6f74206120636f6e747261638152601d60fa1b602082015260400192915050565b6000613c82600e836143b7565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000613cac6020836143b7565b7f7772627463546f6b656e41646472657373206e6f74206120636f6e7472616374815260200192915050565b6000613ce5600e836143b7565b6d0ecc2d8eaca40e8dede40d0d2ced60931b815260200192915050565b6000613d0f601e836143b7565b7f726567697374727941646472657373206e6f74206120636f6e74726163740000815260200192915050565b6000613d48600f836143b7565b6e706f6f6c206e6f742065786973747360881b815260200192915050565b6000613d736011836143b7565b706164646974696f6e206f766572666c6f7760781b815260200192915050565b6000613da0600c836143b7565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000613dc86014836143b7565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b6000613df8601e836143b7565b7f5370656369616c206665652072656261746520697320746f6f20686967680000815260200192915050565b6000613e31600d836143b7565b6c1c1bdbdb080f4f48185cdcd95d609a1b815260200192915050565b6000613e5a602a836143b7565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b6000613ea66024836143b7565b7f5f70726f746f636f6c546f6b656e41646472657373206e6f74206120636f6e748152631c9858dd60e21b602082015260400192915050565b6000613eec600c836143b7565b6b43616e277420746f67676c6560a01b815260200192915050565b6000613f14601f836143b7565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6000613f4d6009836143b7565b680706f6f6c203d3d20360bc1b815260200192915050565b600061115d8284613a4c565b602081016112e682846139d2565b60408101613f8d82856139d2565b61115d60208301846139d2565b60608101613fa882866139d2565b613fb560208301856139d2565b6131b76040830184613a43565b60408101613fd082856139d2565b61115d6020830184613a3a565b60408101613feb82856139d2565b61115d6020830184613a43565b602080825281016112e381846139e1565b602081016112e68284613a3a565b6101008101614026828b613a43565b614033602083018a613a3a565b61404060408301896139d2565b61404d60608301886139d2565b61405a60808301876139d2565b61406760a0830186613a43565b61407460c0830185613a43565b61408160e0830184613a43565b9998505050505050505050565b610180810161409d828f613a43565b6140aa602083018e613a43565b6140b7604083018d613a43565b6140c4606083018c613a3a565b6140d1608083018b613a43565b6140de60a083018a613a43565b6140eb60c0830189613a43565b6140f860e0830188613a43565b614106610100830187613a43565b614114610120830186613a43565b6141226101408301856139d2565b6141306101608301846139d2565b9d9c50505050505050505050505050565b602081016112e68284613a7b565b602080825281016112e38184613a84565b602080825281016112e681613abc565b602080825281016112e681613ade565b602080825281016112e681613b0d565b602080825281016112e681613b46565b602080825281016112e681613b8e565b602080825281016112e681613bc7565b602080825281016112e681613bf9565b602080825281016112e681613c32565b602080825281016112e681613c75565b602080825281016112e681613c9f565b602080825281016112e681613cd8565b602080825281016112e681613d02565b602080825281016112e681613d3b565b602080825281016112e681613d66565b602080825281016112e681613d93565b602080825281016112e681613dbb565b602080825281016112e681613deb565b602080825281016112e681613e24565b602080825281016112e681613e4d565b602080825281016112e681613e99565b602080825281016112e681613edf565b602080825281016112e681613f07565b602080825281016112e681613f40565b602081016112e68284613a43565b60408101613feb8285613a43565b606081016142fa8286613a43565b613fb56020830185613a43565b60a081016143158288613a43565b6143226020830187613a43565b61432f6040830186613a43565b61433c6060830185613a43565b6143496080830184613a43565b9695505050505050565b60c081016143618289613a43565b61436e6020830188613a43565b61437b6040830187613a43565b6143886060830186613a43565b6143956080830185613a43565b6143a260a0830184613a43565b979650505050505050565b60200190565b5190565b90815260200190565b919050565b60006112e6826143e5565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b60006112e6826143c5565b60005b838110156144175781810151838201526020016143ff565b838111156132a85750506000910152565b601f01601f191690565b61443b816143c5565b81146112b457600080fd5b61443b816143d0565b61443b816143d5565b61443b816143d856fea365627a7a72315820f4d4c23f5e3817de22e785e86303b09912a3ff0f304c0938df405e5850c3292b6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH3 0xBC PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x110 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x114 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x44A4 DUP1 PUSH3 0x124 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x530 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x2AF JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0x172 JUMPI DUP1 PUSH4 0xE8997DBD GT PUSH2 0xD9 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x92 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB6D JUMPI DUP1 PUSH4 0xF44942EC EQ PUSH2 0xB80 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0xB88 JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0xB90 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xB98 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xBA0 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0xE8997DBD EQ PUSH2 0xB1C JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0xB2F JUMPI DUP1 PUSH4 0xEA0E3930 EQ PUSH2 0xB37 JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0xB4A JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0xB52 JUMPI DUP1 PUSH4 0xF2555278 EQ PUSH2 0xB5A JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0xD485045E GT PUSH2 0x12B JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0xAC0 JUMPI DUP1 PUSH4 0xD9EAAA64 EQ PUSH2 0xAD3 JUMPI DUP1 PUSH4 0xDA541E09 EQ PUSH2 0xAE6 JUMPI DUP1 PUSH4 0xDAC88561 EQ PUSH2 0xAF9 JUMPI DUP1 PUSH4 0xE3FF9370 EQ PUSH2 0xB01 JUMPI DUP1 PUSH4 0xE4196480 EQ PUSH2 0xB14 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0xA50 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0xA77 JUMPI DUP1 PUSH4 0xD21F8E24 EQ PUSH2 0xA8A JUMPI DUP1 PUSH4 0xD238DB22 EQ PUSH2 0xA9D JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0xAB0 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0xAB8 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0xAE0A8530 GT PUSH2 0x216 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x1CF JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x9DC JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x9E4 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x9EC JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x9FF JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xA2A JUMPI DUP1 PUSH4 0xC7C333F0 EQ PUSH2 0xA3D JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x973 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x97B JUMPI DUP1 PUSH4 0xB1558B72 EQ PUSH2 0x990 JUMPI DUP1 PUSH4 0xB1AC89CA EQ PUSH2 0x9A3 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x9B6 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x9C9 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x9C53874F GT PUSH2 0x268 JUMPI DUP1 PUSH4 0x9C53874F EQ PUSH2 0x90C JUMPI DUP1 PUSH4 0xA1EB5683 EQ PUSH2 0x91F JUMPI DUP1 PUSH4 0xA2AB1BA1 EQ PUSH2 0x932 JUMPI DUP1 PUSH4 0xA32BB683 EQ PUSH2 0x945 JUMPI DUP1 PUSH4 0xA6E7CC28 EQ PUSH2 0x958 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x96B JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x8A2 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x8B5 JUMPI DUP1 PUSH4 0x9254E6BF EQ PUSH2 0x8BD JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x8D0 JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x8E3 JUMPI DUP1 PUSH4 0x96881857 EQ PUSH2 0x8EB JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x4203E395 GT PUSH2 0x3F7 JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x35E JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x317 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x85C JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x864 JUMPI DUP1 PUSH4 0x7FB202E5 EQ PUSH2 0x86C JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x87F JUMPI DUP1 PUSH4 0x84EAA9E0 EQ PUSH2 0x887 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x89A JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0x6FBAE33B EQ PUSH2 0x813 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x82E JUMPI DUP1 PUSH4 0x74326E8F EQ PUSH2 0x836 JUMPI DUP1 PUSH4 0x74626404 EQ PUSH2 0x849 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x569FC1FB GT PUSH2 0x3B0 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x779 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x79B JUMPI DUP1 PUSH4 0x59D0D9EC EQ PUSH2 0x7A3 JUMPI DUP1 PUSH4 0x59E49E0F EQ PUSH2 0x7B6 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x7C9 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x7ED JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x4203E395 EQ PUSH2 0x733 JUMPI DUP1 PUSH4 0x462096F3 EQ PUSH2 0x746 JUMPI DUP1 PUSH4 0x4699F846 EQ PUSH2 0x74E JUMPI DUP1 PUSH4 0x4BCFE726 EQ PUSH2 0x756 JUMPI DUP1 PUSH4 0x4DD053A5 EQ PUSH2 0x75E JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x771 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x49B JUMPI DUP1 PUSH4 0x355A395F GT PUSH2 0x454 JUMPI DUP1 PUSH4 0x355A395F EQ PUSH2 0x6BF JUMPI DUP1 PUSH4 0x3C56AE1B EQ PUSH2 0x6D2 JUMPI DUP1 PUSH4 0x3F1AE8B9 EQ PUSH2 0x6E5 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x6ED JUMPI DUP1 PUSH4 0x402946B9 EQ PUSH2 0x700 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x720 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x663 JUMPI DUP1 PUSH4 0x2D77D0D0 EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0x32E4706F EQ PUSH2 0x686 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x699 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x6AC JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x17F8B788 GT PUSH2 0x4ED JUMPI DUP1 PUSH4 0x17F8B788 EQ PUSH2 0x5E4 JUMPI DUP1 PUSH4 0x1A81C191 EQ PUSH2 0x5F7 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x62A JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x29F9986D EQ PUSH2 0x650 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x551 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0x7024C25 EQ PUSH2 0x594 JUMPI DUP1 PUSH4 0xC615EE9 EQ PUSH2 0x59C JUMPI DUP1 PUSH4 0x115DD4B1 EQ PUSH2 0x5B1 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x5D1 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4250 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x564 PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x3868 JUMP JUMPDEST PUSH2 0xBA8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4353 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x587 PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0x3F71 JUMP JUMPDEST PUSH2 0x587 PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0xC06 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5C4 PUSH2 0x5BF CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0xCBE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0x4009 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x5DF CALLDATASIZE PUSH1 0x4 PUSH2 0x3981 JUMP JUMPDEST PUSH2 0xCDE JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x5F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0xCF9 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x605 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0xDA5 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x618 CALLDATASIZE PUSH1 0x4 PUSH2 0x37E1 JUMP JUMPDEST PUSH2 0xE41 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0x42D0 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x638 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0xE5E JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x64B CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0xE79 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x65E CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0xE8E JUMP JUMPDEST PUSH2 0x61D PUSH2 0xF3A JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x679 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0xF40 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x1002 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x694 CALLDATASIZE PUSH1 0x4 PUSH2 0x381B JUMP JUMPDEST PUSH2 0x1008 JUMP JUMPDEST PUSH2 0x564 PUSH2 0x6A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3868 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x6BA CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x6CD CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x11B6 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x6E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x1239 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x12B7 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x6FB CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x12BD JUMP JUMPDEST PUSH2 0x713 PUSH2 0x70E CALLDATASIZE PUSH1 0x4 PUSH2 0x399F JUMP JUMPDEST PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0x3FF8 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x72E CALLDATASIZE PUSH1 0x4 PUSH2 0x3962 JUMP JUMPDEST PUSH2 0x12EC JUMP JUMPDEST PUSH2 0x61D PUSH2 0x741 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x130C JUMP JUMPDEST PUSH2 0x61D PUSH2 0x131E JUMP JUMPDEST PUSH2 0x61D PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x132A JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x76C CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x1339 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x13F9 JUMP JUMPDEST PUSH2 0x78C PUSH2 0x787 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x13FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST PUSH2 0x61D PUSH2 0x1420 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x7B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x37E1 JUMP JUMPDEST PUSH2 0x1426 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x7C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3898 JUMP JUMPDEST PUSH2 0x1451 JUMP JUMPDEST PUSH2 0x7DC PUSH2 0x7D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x37E1 JUMP JUMPDEST PUSH2 0x1901 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4307 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x7FB CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x193B JUMP JUMPDEST PUSH2 0x587 PUSH2 0x80E CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x1950 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x821 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x196B JUMP JUMPDEST PUSH2 0x587 PUSH2 0x1A2B JUMP JUMPDEST PUSH2 0x61D PUSH2 0x1A3A JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x844 CALLDATASIZE PUSH1 0x4 PUSH2 0x381B JUMP JUMPDEST PUSH2 0x1A40 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x857 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x1B86 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x1C22 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x1C31 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x87A CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x1C37 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x895 CALLDATASIZE PUSH1 0x4 PUSH2 0x3898 JUMP JUMPDEST PUSH2 0x1C8C JUMP JUMPDEST PUSH2 0x587 PUSH2 0x1DF5 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x8B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x1E04 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x8CB CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x1E45 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x8DE CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x1EE0 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x1EF2 JUMP JUMPDEST PUSH2 0x8FE PUSH2 0x8F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3868 JUMP JUMPDEST PUSH2 0x1EF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP3 SWAP2 SWAP1 PUSH2 0x3FC2 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x91A CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x1F58 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x92D CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2004 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x940 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x20A9 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x953 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2155 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x966 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2201 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x224D JUMP JUMPDEST PUSH2 0x61D PUSH2 0x2253 JUMP JUMPDEST PUSH2 0x983 PUSH2 0x2259 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0x4141 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x99E CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2268 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x9B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x381B JUMP JUMPDEST PUSH2 0x230B JUMP JUMPDEST PUSH2 0x61D PUSH2 0x9C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2451 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x9D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2463 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x2475 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x2484 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x9FA CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2493 JUMP JUMPDEST PUSH2 0xA12 PUSH2 0xA0D CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x24A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x408E JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xA38 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2517 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xA4B CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x28A5 JUMP JUMPDEST PUSH2 0xA63 PUSH2 0xA5E CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2928 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4017 JUMP JUMPDEST PUSH2 0x61D PUSH2 0xA85 CALLDATASIZE PUSH1 0x4 PUSH2 0x37E1 JUMP JUMPDEST PUSH2 0x297A JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xA98 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2997 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xAAB CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2A43 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x2AEF JUMP JUMPDEST PUSH2 0x61D PUSH2 0x2AFE JUMP JUMPDEST PUSH2 0x61D PUSH2 0xACE CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2B04 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xAE1 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2B16 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xAF4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3908 JUMP JUMPDEST PUSH2 0x2BD5 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x2C65 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xB0F CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2C6E JUMP JUMPDEST PUSH2 0x61D PUSH2 0x2D2E JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xB2A CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2D34 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x2DCF JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xB45 CALLDATASIZE PUSH1 0x4 PUSH2 0x381B JUMP JUMPDEST PUSH2 0x2DDE JUMP JUMPDEST PUSH2 0x61D PUSH2 0x2EC3 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x2EC9 JUMP JUMPDEST PUSH2 0x61D PUSH2 0xB68 CALLDATASIZE PUSH1 0x4 PUSH2 0x37E1 JUMP JUMPDEST PUSH2 0x2ECF JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xB7B CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x311D JUMP JUMPDEST PUSH2 0x587 PUSH2 0x314A JUMP JUMPDEST PUSH2 0x61D PUSH2 0x3159 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x315F JUMP JUMPDEST PUSH2 0x587 PUSH2 0x3165 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x3174 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xC0E PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0xC2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xC4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x18 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x628070E9CCBC70E8BE34A2FA969F8D314EC049F17BFCB4C2020DF4BCCD2BF52 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xD01 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0xD1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xD40 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0xD69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x5C61C9C51CB2781BC120817A851F7F27C134D5D191BC5A2B0EA971BA638425E4 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0xDAD PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0xDC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xDEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 CALLER SWAP1 PUSH32 0x480CC6E59585343A9E9D6FE591DAD0F80CE93BB2399CA672910F380671B46BA8 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x3F7F JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xE96 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0xEB2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xED5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0xEFE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x3E DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x2BD69D9975FCF3B39B6AB502D77983A0CFCE893E47073F502D094C6A94DA33B SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xF48 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0xF64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xF87 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0xF90 DUP2 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0xFAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4210 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP2 AND SWAP3 AND SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0x54C538F1D732806E1BFC25EC56236DAC39E6070DD856C0E7EFB2BC274709467D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x102E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1058 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x107F JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x108F JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x115D JUMP JUMPDEST PUSH2 0x109F DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x31BF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1D SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x10D4 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1101 SWAP1 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3226 AND JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2BFAA669AEEE298BC85FE2B7DDDC312FC28B78622F086063B9A410D7BA9939CF DUP6 PUSH1 0x40 MLOAD PUSH2 0x114E SWAP2 SWAP1 PUSH2 0x42D0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x11BE PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x11DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x11FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x29 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xA645D7B227C34F1F218D53BC3B3CCB9A43EAF2231B33925194F1DE755AA3ACC3 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0x1241 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x125D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1280 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x1E SLOAD PUSH2 0x1293 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1E SSTORE PUSH1 0x2E SLOAD PUSH2 0x12B4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3284 AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2F SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x12E3 PUSH1 0x24 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x32AE AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3E SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1341 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x135D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1380 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0x1389 DUP2 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x13A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4180 JUMP JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0xEA3CAD8B6739A7A73616CB585FE48A8E8F61D1FD7F9822CCD7580A805357AA70 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1459 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1475 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1498 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x14B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41E0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18FA JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x14CE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x14E3 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x14F8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x150D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1534 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4270 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x1542 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1557 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x157E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x42C0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x158C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x15A1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 PUSH2 0x15F8 JUMPI POP PUSH1 0x0 PUSH1 0x22 DUP2 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x15C3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x15D8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD AND EQ ISZERO JUMPDEST PUSH2 0x1614 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4220 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x1622 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1637 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1746 JUMPI PUSH1 0x0 PUSH1 0x23 PUSH1 0x0 PUSH1 0x22 PUSH1 0x0 DUP10 DUP10 DUP8 DUP2 DUP2 LT PUSH2 0x165C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1671 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SLOAD DUP3 AND DUP6 MSTORE SWAP3 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP2 SWAP1 SWAP2 ADD DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0x22 DUP2 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x16C8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x16DD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1740 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x171D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1732 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3384 AND JUMP JUMPDEST POP PUSH2 0x1868 JUMP JUMPDEST DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x1752 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1767 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x0 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x1777 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x178C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x17C9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x17DE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x17EE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1803 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1866 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x1843 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1858 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3391 AND JUMP JUMPDEST POP JUMPDEST DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x1874 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1889 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x189E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x18B3 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x919223D371E0AD76F1F32DCBE0750166810BFF9A9E4B2735BFCD01C5686C8D89 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 ADD PUSH2 0x14BA JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1973 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x198F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x19B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0x19BB DUP2 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x19D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41D0 JUMP JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0x6105CBFB5494A79F89745763767914B7B60B00DEFAC5E94C7EB28CC5E44C479F SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x1A66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1A90 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x1AB7 JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x1AC7 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x115D JUMP JUMPDEST PUSH2 0x1AD7 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x31BF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1A SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x1B0C SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1B39 SWAP1 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3226 AND JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x951F1856A4D1D8C0081F50A1AEE9FDC008F729D0F22849618016E353179B8DDA DUP6 PUSH1 0x40 MLOAD PUSH2 0x114E SWAP2 SWAP1 PUSH2 0x42D0 JUMP JUMPDEST PUSH2 0x1B8E PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1BAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1BCD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 CALLER SWAP1 PUSH32 0x5621AB0B721F217895F5337AC1283251172D175EF3DC8C9A0287155F6024CE8 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x3F7F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1C3F PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1C5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1C7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x27 SSTORE JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1C94 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1CB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1CD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x1CF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41E0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18FA JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x1D09 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1D1E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3908 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x0 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x1D2E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1D43 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x1D77 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1D8C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH32 0x24CECC90C7D4BC8C6765B75EEDCC61D4E1CC4E4D49CD0756C6DFB5F6CC259B50 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x1DC3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1DD8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3908 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DE5 SWAP2 SWAP1 PUSH2 0x4009 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 ADD PUSH2 0x1CF5 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E36 PUSH2 0x339E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1E4D PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1E69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1E8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x31 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0xE48B1893EFAEE62DA0749DD98DBF0EA62EE472B37F7205114ACA36CC9DE11228 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F03 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1F1F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1F42 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0x1F4C DUP5 DUP5 PUSH2 0x33A2 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F60 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1F7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1F9F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x1FC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41B0 JUMP JUMPDEST PUSH1 0x2F DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xB12D68E20E5279E25FF10EDFC0F82DEAA858EA2AC9874CF58518F4E5F9422013 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0x200C PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2028 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x204B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0x270F DUP2 GT ISZERO PUSH2 0x206D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x3F DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xC6D322DC6668F20FF04AC11B217AAE8E8704E6388BD1DECECEAB1059DB806BF6 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0x20B1 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x20CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x20F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x2119 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x21 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xA06D9B7B1C979150DCBF5B050626CC7D06C764A12EBF76EC8D16B8D3D7C9EE53 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0x215D PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2179 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x219C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x21C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x61D3E840CF1074298F10FA77EDB788B4E5E554D7D135C93AC5F38F2CE0F6B52D SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0x2209 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2225 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2248 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x28 SSTORE JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2270 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x228C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x22AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x22CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4170 JUMP JUMPDEST PUSH1 0x2B DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x13CB748CEC5C5021A23EC7994522A0911F24F10FDABC909281FBE95914B782F0 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x2331 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x235B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x2382 JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x2392 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x115D JUMP JUMPDEST PUSH2 0x23A2 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x31BF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x17 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x23D7 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x2404 SWAP1 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3226 AND JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xABC20BDD02DE91DF32A6E4A11684E26E0A34DC5A895A314AE51A919BC9F62C60 DUP6 PUSH1 0x40 MLOAD PUSH2 0x114E SWAP2 SWAP1 PUSH2 0x42D0 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0x251F PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x253B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH4 0x1D189901 PUSH1 0xE2 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xE1AE43DE9A4A3EB1ABB1A58087A8AFF0717A77C07BE9F83CED74911B33B030E3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2583 SWAP1 DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2594 PUSH4 0x1A81C191 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x25A5 PUSH4 0x59E49E0F PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x25B6 PUSH4 0x427554F PUSH1 0xE5 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x25C7 PUSH4 0x691C6D91 PUSH1 0xE1 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x25D8 PUSH4 0xC615EE9 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x25E9 PUSH4 0x2FF16F1 PUSH1 0xE3 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x25FA PUSH4 0x29F9986D PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x260B PUSH4 0x3487E389 PUSH1 0xE2 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x261C PUSH4 0xA32BB683 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x262D PUSH4 0xA2AB1BA1 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x263E PUSH4 0x7FB202E5 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x264F PUSH4 0x14DCF985 PUSH1 0xE3 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2660 PUSH4 0x355A395F PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2671 PUSH4 0xE8997DBD PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2682 PUSH4 0x1E4AAA4F PUSH1 0xE3 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2693 PUSH4 0x58D644E5 PUSH1 0xE1 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x26A4 PUSH4 0x74326E8F PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x26B5 PUSH4 0x32E4706F PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x26C6 PUSH4 0x96881857 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x26D7 PUSH4 0x3C56AE1B PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x26E8 PUSH4 0x402946B9 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x26F9 PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x270A PUSH4 0x2D77D0D PUSH1 0xE4 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x271B PUSH4 0x367AAA99 PUSH1 0xE2 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x272C PUSH4 0xE3FF937 PUSH1 0xE4 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x273D PUSH4 0x58AAC5B9 PUSH1 0xE1 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x274E PUSH4 0x9C53874F PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x275F PUSH4 0xEA0E393 PUSH1 0xE4 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2770 PUSH4 0x9254E6BF PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2781 PUSH4 0x6FBAE33B PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2792 PUSH4 0x4DD053A5 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x27A3 PUSH4 0xC7C333F PUSH1 0xE4 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x27B4 PUSH4 0x1674367B PUSH1 0xE2 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x27C5 PUSH4 0x7024C25 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x27D6 PUSH4 0x25E7F393 PUSH1 0xE1 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x27E7 PUSH4 0x3D1250BB PUSH1 0xE2 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x27F8 PUSH4 0x3F1AE8B9 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2809 PUSH4 0xDA541E09 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x281A PUSH4 0xDAC88561 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x282B PUSH4 0x462096F3 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x283C PUSH4 0xA1EB5683 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x284D PUSH4 0x1C832C9 PUSH1 0xE7 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH16 0x50726F746F636F6C53657474696E6773 PUSH1 0x80 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0x28AD PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x28C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x28EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x35 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x5B3B73DCEE2D869937089AA5282989415BC607389AB2D4164AE83E7A9E1DA084 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x299F PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x29BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x29DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x2A07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x20 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x7F47CC725826CBA6F43B2C0A013328B47D5F16AA9D27D6F0196A37A35C8E53F5 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0x2A4B PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2A67 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2A8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x2AB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xA6C5BD6650AFA784494EFD877ECD8B7505EFBBBAED74B7DD29F1472D6CD0C492 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2B1E PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2B3A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2B5D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0x2B66 DUP2 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x2B82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41F0 JUMP JUMPDEST PUSH1 0x2D DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH31 0xC53B30140BC38DB3A9070249D614E03304ADA9E458B2D2F01D23FEED00985A SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0x2BDD PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2BF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 ISZERO ISZERO EQ ISZERO PUSH2 0x2C22 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x42A0 JUMP JUMPDEST PUSH1 0x3D DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO DUP1 ISZERO SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 CALLER SWAP1 PUSH32 0x575725FA4843B62A71608B620F6D2A15792407AE40E019230A0500109782F660 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2C76 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2C92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2CB5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0x2CBE DUP2 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x2CDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4290 JUMP JUMPDEST PUSH1 0x2E DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0xFFDEB9A96D6E1F867BCBB8A64815E576B65141995AB197CF02F7BB34FC186B75 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x3F SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2D3C PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2D58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2D7B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x14 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0x83E92CB95EC836F94E25E0A7B31C39F750833A8CE24EAA227A7050AAFEA08A84 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2DE6 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2E02 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2E25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x3635C9ADC5DEA00000 DUP2 GT ISZERO PUSH2 0x2E4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4260 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 DUP6 SWAP1 SSTORE SWAP1 MLOAD SWAP1 SWAP3 SWAP2 SWAP1 CALLER SWAP1 PUSH32 0xD2D3C121D3439420F50EFD36F0A01EBDAC87111EC00360641C32AEA3C6FC3213 SWAP1 PUSH2 0x2EB5 SWAP1 DUP7 SWAP1 DUP9 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x2EF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2F1F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x2F8E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x17 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2F74 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x2FFD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x1A SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2FE3 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x306C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x1D SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3052 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x308E DUP3 PUSH2 0x3082 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x30A0 JUMPI SWAP4 POP PUSH2 0x12E6 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x30BA PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP8 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3226 AND JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA0F881F497620074A74D99FB0378EAB58BE58CAC19DE6D38C57BCFEB17861830 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x310B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3125 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x3141 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH2 0x12B4 DUP2 PUSH2 0x3499 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x31B7 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x351B JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x12E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x327F SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3248 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x3FDD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3547 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32A8 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x3248 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x3F9A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x32D3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4230 JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD DUP2 GT PUSH2 0x32E4 JUMPI DUP1 PUSH2 0x32EA JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 PUSH2 0x32F9 JUMPI POP DUP1 DUP5 LT ISZERO JUMPDEST ISZERO PUSH2 0x3304 JUMPI POP PUSH2 0x115D JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3330 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP5 DUP3 SUB DUP2 LT ISZERO PUSH2 0x337B JUMPI DUP6 PUSH1 0x1 ADD DUP6 DUP3 ADD DUP2 SLOAD DUP2 LT PUSH2 0x3351 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3368 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3336 JUMP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x31B7 DUP5 DUP3 PUSH2 0x362C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x31B7 DUP5 DUP3 PUSH2 0x36F5 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1E SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x33B8 JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x33D6 JUMPI POP POP PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x1F51 JUMP JUMPDEST PUSH2 0x33E6 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x31BF AND JUMP JUMPDEST PUSH1 0x1E SSTORE PUSH1 0x2E SLOAD PUSH2 0x3406 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3226 AND JUMP JUMPDEST POP POP PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 PUSH1 0x1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x347A JUMPI PUSH2 0x3474 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x36F5 AND JUMP JUMPDEST POP PUSH2 0x3495 JUMP JUMPDEST PUSH2 0x327F PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x362C AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x34BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4190 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x353F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP2 SWAP1 PUSH2 0x414F JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x3559 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x3575 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x42B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x3591 SWAP2 SWAP1 PUSH2 0x3F65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x35CE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x35D3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x35F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41C0 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x32A8 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x3610 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3926 JUMP JUMPDEST PUSH2 0x32A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4280 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3638 DUP4 DUP4 PUSH2 0x3735 JUMP JUMPDEST ISZERO PUSH2 0x36ED JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x36B0 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3671 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x368E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x36CC JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x12E6 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x12E6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3701 DUP4 DUP4 PUSH2 0x3735 JUMP JUMPDEST PUSH2 0x36ED JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x12E6 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x12E6 DUP2 PUSH2 0x4432 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3767 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x377F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1F51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x12E6 DUP2 PUSH2 0x4446 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x12E6 DUP2 PUSH2 0x4446 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x12E6 DUP2 PUSH2 0x444F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x12E6 DUP2 PUSH2 0x4458 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x37D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x31B7 DUP5 DUP5 PUSH2 0x374A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3800 DUP6 DUP6 PUSH2 0x374A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3811 DUP6 DUP3 DUP7 ADD PUSH2 0x374A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3830 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x383C DUP7 DUP7 PUSH2 0x374A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x384D DUP7 DUP3 DUP8 ADD PUSH2 0x374A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x385E DUP7 DUP3 DUP8 ADD PUSH2 0x37AD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x387B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3887 DUP6 DUP6 PUSH2 0x374A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3811 DUP6 DUP3 DUP7 ADD PUSH2 0x37AD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x38AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x38C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38D1 DUP8 DUP3 DUP9 ADD PUSH2 0x3755 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x38F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38FC DUP8 DUP3 DUP9 ADD PUSH2 0x3755 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x391A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x31B7 DUP5 DUP5 PUSH2 0x3797 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3938 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x31B7 DUP5 DUP5 PUSH2 0x37A2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3956 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x31B7 DUP5 DUP5 PUSH2 0x37AD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3975 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3800 DUP6 DUP6 PUSH2 0x37AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3993 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x31B7 DUP5 DUP5 PUSH2 0x37B8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3887 DUP6 DUP6 PUSH2 0x37AD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39CA DUP4 DUP4 PUSH2 0x3A43 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x39DB DUP2 PUSH2 0x43C5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39EC DUP3 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x39F6 DUP2 DUP6 PUSH2 0x43B7 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A01 DUP4 PUSH2 0x43AD JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A2F JUMPI DUP2 MLOAD PUSH2 0x3A19 DUP9 DUP3 PUSH2 0x39BE JUMP JUMPDEST SWAP8 POP PUSH2 0x3A24 DUP4 PUSH2 0x43AD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x3A05 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x39DB DUP2 PUSH2 0x43D0 JUMP JUMPDEST PUSH2 0x39DB DUP2 PUSH2 0x43D5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A57 DUP3 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x3A61 DUP2 DUP6 PUSH2 0x43C0 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A71 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x43FC JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x39DB DUP2 PUSH2 0x43F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A8F DUP3 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x3A99 DUP2 DUP6 PUSH2 0x43B7 JUMP JUMPDEST SWAP4 POP PUSH2 0x3AA9 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x43FC JUMP JUMPDEST PUSH2 0x3AB2 DUP2 PUSH2 0x4428 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AC9 PUSH1 0x6 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AEB PUSH1 0x13 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH19 0x4261736520726577617264206973207A65726F PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B1A PUSH1 0x20 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x6E65774C6F636B534F5641646472657373206E6F74206120636F6E7472616374 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B53 PUSH1 0x26 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B9B PUSH1 0x1B DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BD4 PUSH1 0x16 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH22 0x8CCACA40E4CAC4C2E8CA40D2E640E8DEDE40D0D2CED PUSH1 0x53 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C06 PUSH1 0x20 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C3F PUSH1 0x21 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x6E6577536F76546F6B656E41646472657373206E6F74206120636F6E74726163 DUP2 MSTORE PUSH1 0x1D PUSH1 0xFA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C82 PUSH1 0xE DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CAC PUSH1 0x20 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x7772627463546F6B656E41646472657373206E6F74206120636F6E7472616374 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CE5 PUSH1 0xE DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D0F PUSH1 0x1E DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x726567697374727941646472657373206E6F74206120636F6E74726163740000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D48 PUSH1 0xF DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH15 0x706F6F6C206E6F7420657869737473 PUSH1 0x88 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D73 PUSH1 0x11 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DA0 PUSH1 0xC DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DC8 PUSH1 0x14 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DF8 PUSH1 0x1E DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x5370656369616C206665652072656261746520697320746F6F20686967680000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E31 PUSH1 0xD DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH13 0x1C1BDBDB080F4F48185CDCD95D PUSH1 0x9A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E5A PUSH1 0x2A DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EA6 PUSH1 0x24 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x5F70726F746F636F6C546F6B656E41646472657373206E6F74206120636F6E74 DUP2 MSTORE PUSH4 0x1C9858DD PUSH1 0xE2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EEC PUSH1 0xC DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH12 0x43616E277420746F67676C65 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F14 PUSH1 0x1F DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F4D PUSH1 0x9 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH9 0x706F6F6C203D3D203 PUSH1 0xBC SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x115D DUP3 DUP5 PUSH2 0x3A4C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x12E6 DUP3 DUP5 PUSH2 0x39D2 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3F8D DUP3 DUP6 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x115D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x39D2 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3FA8 DUP3 DUP7 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x3FB5 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x31B7 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3A43 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3FD0 DUP3 DUP6 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x115D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3A3A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3FEB DUP3 DUP6 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x115D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3A43 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E3 DUP2 DUP5 PUSH2 0x39E1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x12E6 DUP3 DUP5 PUSH2 0x3A3A JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x4026 DUP3 DUP12 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4033 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x3A3A JUMP JUMPDEST PUSH2 0x4040 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x404D PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x405A PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x4067 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4074 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4081 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x3A43 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x409D DUP3 DUP16 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x40AA PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x40B7 PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x40C4 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x3A3A JUMP JUMPDEST PUSH2 0x40D1 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x40DE PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x40EB PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x40F8 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4106 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4114 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4122 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x4130 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x39D2 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x12E6 DUP3 DUP5 PUSH2 0x3A7B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E3 DUP2 DUP5 PUSH2 0x3A84 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3ABC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3ADE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3B0D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3B46 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3B8E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3BC7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3C32 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3C75 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3C9F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3CD8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3D02 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3D3B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3D66 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3D93 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3DBB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3DEB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3E24 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3E4D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3E99 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3EDF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3F07 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3F40 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x12E6 DUP3 DUP5 PUSH2 0x3A43 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3FEB DUP3 DUP6 PUSH2 0x3A43 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x42FA DUP3 DUP7 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x3FB5 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3A43 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4315 DUP3 DUP9 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4322 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x432F PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x433C PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4349 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x3A43 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x4361 DUP3 DUP10 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x436E PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x437B PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4388 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4395 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x43A2 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x3A43 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E6 DUP3 PUSH2 0x43E5 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E6 DUP3 PUSH2 0x43C5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4417 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x43FF JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x32A8 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x443B DUP2 PUSH2 0x43C5 JUMP JUMPDEST DUP2 EQ PUSH2 0x12B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x443B DUP2 PUSH2 0x43D0 JUMP JUMPDEST PUSH2 0x443B DUP2 PUSH2 0x43D5 JUMP JUMPDEST PUSH2 0x443B DUP2 PUSH2 0x43D8 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 DELEGATECALL 0xD4 0xC2 EXTCODEHASH 0x5E CODESIZE OR 0xDE 0x22 0xE7 DUP6 0xE8 PUSH4 0x3B09912 LOG3 SELFDESTRUCT 0xF ADDRESS 0x4C MULMOD CODESIZE 0xDF BLOCKHASH 0x5E PC POP 0xC3 0x29 0x2B PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "667:22827:132:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;886:23:132;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;667:22827:132;;780:87:137;853:10;780:87;:::o;667:22827:132:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106105305760003560e01c80638dc48ba5116102af578063cb6eacd111610172578063e8997dbd116100d9578063f2fde38b11610092578063f2fde38b14610b6d578063f44942ec14610b80578063f589a3e714610b88578063f6ddc8b314610b90578063f706b1f214610b98578063f851a44014610ba057610530565b8063e8997dbd14610b1c578063e8f6276414610b2f578063ea0e393014610b37578063edab119f14610b4a578063f0e085f514610b52578063f255527814610b5a57610530565b8063d485045e1161012b578063d485045e14610ac0578063d9eaaa6414610ad3578063da541e0914610ae6578063dac8856114610af9578063e3ff937014610b01578063e419648014610b1457610530565b8063cb6eacd114610a50578063cd5d808d14610a77578063d21f8e2414610a8a578063d238db2214610a9d578063d288208c14610ab0578063d473c2da14610ab857610530565b8063ae0a853011610216578063b9cffa3e116101cf578063b9cffa3e146109dc578063ba4861e9146109e4578063bdee453c146109ec578063c4a90815146109ff578063c4d66de814610a2a578063c7c333f014610a3d57610530565b8063ae0a853014610973578063afe840091461097b578063b1558b7214610990578063b1ac89ca146109a3578063b30643d9146109b6578063b7e15241146109c957610530565b80639c53874f116102685780639c53874f1461090c578063a1eb56831461091f578063a2ab1ba114610932578063a32bb68314610945578063a6e7cc2814610958578063acc043481461096b57610530565b80638dc48ba5146108a25780638f32d59b146108b55780639254e6bf146108bd57806392d894f8146108d0578063959083d3146108e357806396881857146108eb57610530565b80634203e395116103f75780636e6637301161035e57806378d849ed1161031757806378d849ed1461085c5780637a8faeb8146108645780637fb202e51461086c5780638456cb591461087f57806384eaa9e0146108875780638da5cb5b1461089a57610530565b80636e663730146108005780636fbae33b146108135780637420ca3e14610826578063742e67981461082e57806374326e8f14610836578063746264041461084957610530565b8063569fc1fb116103b0578063569fc1fb14610779578063574442cc1461079b57806359d0d9ec146107a357806359e49e0f146107b657806362fff3f6146107c957806368c4ac26146107ed57610530565b80634203e39514610733578063462096f3146107465780634699f8461461074e5780634bcfe726146107565780634dd053a51461075e5780634f28cac21461077157610530565b80632a3240271161049b578063355a395f11610454578063355a395f146106bf5780633c56ae1b146106d25780633f1ae8b9146106e55780633fca506e146106ed578063402946b9146107005780634115a2b61461072057610530565b80632a324027146106635780632d77d0d01461066b5780632f4707641461067e57806332e4706f146106865780633432423c146106995780633452d2d4146106ac57610530565b806317f8b788116104ed57806317f8b788146105e45780631a81c191146105f75780631b7bde741461060a578063218b39c61461062a57806324cc57491461063d57806329f9986d1461065057610530565b8063065d810f146105515780630676c1b71461057f57806307024c25146105945780630c615ee91461059c578063115dd4b1146105b157806317548b79146105d1575b60405162461bcd60e51b815260040161054890614250565b60405180910390fd5b61056461055f366004613868565b610ba8565b60405161057696959493929190614353565b60405180910390f35b610587610be8565b6040516105769190613f71565b610587610bf7565b6105af6105aa366004613944565b610c06565b005b6105c46105bf3660046137c3565b610cbe565b6040516105769190614009565b6105876105df366004613981565b610cde565b6105af6105f2366004613944565b610cf9565b6105af6106053660046137c3565b610da5565b61061d6106183660046137e1565b610e41565b60405161057691906142d0565b6105876106383660046137c3565b610e5e565b6105c461064b3660046137c3565b610e79565b6105af61065e366004613944565b610e8e565b61061d610f3a565b6105af6106793660046137c3565b610f40565b61061d611002565b6105c461069436600461381b565b611008565b6105646106a7366004613868565b611164565b61061d6106ba3660046137c3565b6111a4565b6105af6106cd366004613944565b6111b6565b6105af6106e0366004613944565b611239565b61061d6112b7565b61061d6106fb3660046137c3565b6112bd565b61071361070e36600461399f565b6112cf565b6040516105769190613ff8565b6105c461072e366004613962565b6112ec565b61061d6107413660046137c3565b61130c565b61061d61131e565b61061d611324565b61058761132a565b6105af61076c3660046137c3565b611339565b61061d6113f9565b61078c610787366004613944565b6113ff565b604051610576939291906142ec565b61061d611420565b61061d6107b13660046137e1565b611426565b6105af6107c4366004613898565b611451565b6107dc6107d73660046137e1565b611901565b604051610576959493929190614307565b6105c46107fb3660046137c3565b61193b565b61058761080e3660046137c3565b611950565b6105af6108213660046137c3565b61196b565b610587611a2b565b61061d611a3a565b6105c461084436600461381b565b611a40565b6105af6108573660046137c3565b611b86565b610587611c22565b61061d611c31565b6105af61087a366004613944565b611c37565b6105c4611c83565b6105af610895366004613898565b611c8c565b610587611df5565b6105876108b03660046137c3565b611e04565b6105c4611e1f565b6105af6108cb3660046137c3565b611e45565b61061d6108de3660046137c3565b611ee0565b61061d611ef2565b6108fe6108f9366004613868565b611ef8565b604051610576929190613fc2565b6105af61091a366004613944565b611f58565b6105af61092d366004613944565b612004565b6105af610940366004613944565b6120a9565b6105af610953366004613944565b612155565b6105af610966366004613944565b612201565b61061d61224d565b61061d612253565b610983612259565b6040516105769190614141565b6105af61099e366004613944565b612268565b6105c46109b136600461381b565b61230b565b61061d6109c43660046137c3565b612451565b61061d6109d73660046137c3565b612463565b610587612475565b610587612484565b61061d6109fa3660046137c3565b612493565b610a12610a0d366004613944565b6124a5565b6040516105769c9b9a9998979695949392919061408e565b6105af610a383660046137c3565b612517565b6105af610a4b366004613944565b6128a5565b610a63610a5e366004613944565b612928565b604051610576989796959493929190614017565b61061d610a853660046137e1565b61297a565b6105af610a98366004613944565b612997565b6105af610aab366004613944565b612a43565b610587612aef565b61061d612afe565b61061d610ace3660046137c3565b612b04565b6105af610ae13660046137c3565b612b16565b6105af610af4366004613908565b612bd5565b6105c4612c65565b6105af610b0f3660046137c3565b612c6e565b61061d612d2e565b6105af610b2a3660046137c3565b612d34565b610587612dcf565b6105af610b4536600461381b565b612dde565b61061d612ec3565b61061d612ec9565b61061d610b683660046137e1565b612ecf565b6105af610b7b3660046137c3565b61311d565b61058761314a565b61061d613159565b61061d61315f565b610587613165565b610587613174565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6031546001600160a01b031690565b610c0e611e1f565b610c2a5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610c4d5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115610c765760405162461bcd60e51b815260040161054890614200565b601880549082905560405133907f0628070e9ccbc70e8be34a2fa969f8d314ec049f17bfcb4c2020df4bccd2bf5290610cb290849086906142de565b60405180910390a25050565b6001600160a01b0390811660009081526022602052604090205416151590565b6005602052600090815260409020546001600160a01b031681565b610d01611e1f565b610d1d5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610d405760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115610d695760405162461bcd60e51b815260040161054890614200565b601b80549082905560405133907f5c61c9c51cb2781bc120817a851f7f27c134d5d191bc5a2b0ea971ba638425e490610cb290849086906142de565b610dad611e1f565b610dc95760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610dec5760405162461bcd60e51b815260040161054890614160565b600380546001600160a01b038381166001600160a01b031983161790925560405191169033907f480cc6e59585343a9e9d6fe591dad0f80ce93bb2399ca672910f380671b46ba890610cb29084908690613f7f565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b610e96611e1f565b610eb25760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610ed55760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115610efe5760405162461bcd60e51b815260040161054890614200565b603e80549082905560405133907f02bd69d9975fcf3b39b6ab502d77983a0cfce893e47073f502d094c6a94da33b90610cb290849086906142de565b60185481565b610f48611e1f565b610f645760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610f875760405162461bcd60e51b815260040161054890614160565b610f9081613183565b610fac5760405162461bcd60e51b815260040161054890614210565b600480546001600160a01b038381166001600160a01b031983161792839055604051918116921690829033907f54c538f1d732806e1bfc25ec56236dac39e6070dd856c0e7efb2bc274709467d90600090a45050565b601f5481565b603d5460009060ff161561102e5760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b031633146110585760405162461bcd60e51b815260040161054890614240565b6001600160a01b0384166000908152601c602052604090205482908082111561107f578091505b8161108f5760009250505061115d565b61109f818363ffffffff6131bf16565b6001600160a01b0387166000908152601c6020908152604080832093909355601d905220546110d4908363ffffffff61320116565b6001600160a01b0387166000818152601d602052604090209190915561110190868463ffffffff61322616565b846001600160a01b0316866001600160a01b0316336001600160a01b03167f2bfaa669aeee298bc85fe2b7dddc312fc28b78622f086063b9a410d7ba9939cf8560405161114e91906142d0565b60405180910390a46001925050505b9392505050565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b6111be611e1f565b6111da5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156111fd5760405162461bcd60e51b815260040161054890614160565b602980549082905560405133907fa645d7b227c34f1f218d53bc3b3ccb9a43eaf2231b33925194f1de755aa3acc390610cb290849086906142de565b611241611e1f565b61125d5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156112805760405162461bcd60e51b815260040161054890614160565b601e54611293908263ffffffff61320116565b601e55602e546112b4906001600160a01b031633308463ffffffff61328416565b50565b602f5490565b602a6020526000908152604090205481565b60606112e36024848463ffffffff6132ae16565b90505b92915050565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b603e5490565b60155481565b6037546001600160a01b031690565b611341611e1f565b61135d5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156113805760405162461bcd60e51b815260040161054890614160565b61138981613183565b6113a55760405162461bcd60e51b815260040161054890614180565b603880546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fea3cad8b6739a7a73616cb585fe48a8e8f61d1fd7f9822ccd7580a805357aa7090600090a45050565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b6001600160a01b039182166000908152603c6020908152604080832093909416825291909152205490565b611459611e1f565b6114755760405162461bcd60e51b815260040161054890614240565b603d5460ff16156114985760405162461bcd60e51b815260040161054890614160565b8281146114b75760405162461bcd60e51b8152600401610548906141e0565b60005b838110156118fa578282828181106114ce57fe5b90506020020160206114e391908101906137c3565b6001600160a01b03168585838181106114f857fe5b905060200201602061150d91908101906137c3565b6001600160a01b031614156115345760405162461bcd60e51b815260040161054890614270565b600085858381811061154257fe5b905060200201602061155791908101906137c3565b6001600160a01b0316141561157e5760405162461bcd60e51b8152600401610548906142c0565b600083838381811061158c57fe5b90506020020160206115a191908101906137c3565b6001600160a01b03161415806115f8575060006022818787858181106115c357fe5b90506020020160206115d891908101906137c3565b6001600160a01b0390811682526020820192909252604001600020541614155b6116145760405162461bcd60e51b815260040161054890614220565b600083838381811061162257fe5b905060200201602061163791908101906137c3565b6001600160a01b03161415611746576000602360006022600089898781811061165c57fe5b905060200201602061167191908101906137c3565b6001600160a01b0390811682526020808301939093526040918201600090812054821685529284019490945291909101812080546001600160a01b031916939092169290921790556022818787858181106116c857fe5b90506020020160206116dd91908101906137c3565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b0319169290911691909117905561174085858381811061171d57fe5b905060200201602061173291908101906137c3565b60249063ffffffff61338416565b50611868565b82828281811061175257fe5b905060200201602061176791908101906137c3565b6022600087878581811061177757fe5b905060200201602061178c91908101906137c3565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b031916929091169190911790558484828181106117c957fe5b90506020020160206117de91908101906137c3565b602360008585858181106117ee57fe5b905060200201602061180391908101906137c3565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b0319169290911691909117905561186685858381811061184357fe5b905060200201602061185891908101906137c3565b60249063ffffffff61339116565b505b82828281811061187457fe5b905060200201602061188991908101906137c3565b6001600160a01b031685858381811061189e57fe5b90506020020160206118b391908101906137c3565b6001600160a01b0316336001600160a01b03167f919223d371e0ad76f1f32dcbe0750166810bff9a9e4b2735bfcd01c5686c8d8960405160405180910390a46001016114ba565b5050505050565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b611973611e1f565b61198f5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156119b25760405162461bcd60e51b815260040161054890614160565b6119bb81613183565b6119d75760405162461bcd60e51b8152600401610548906141d0565b603780546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907f6105cbfb5494a79f89745763767914b7b60b00defac5e94c7eb28cc5e44c479f90600090a45050565b6003546001600160a01b031681565b60355481565b603d5460009060ff1615611a665760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b03163314611a905760405162461bcd60e51b815260040161054890614240565b6001600160a01b038416600090815260196020526040902054829080821115611ab7578091505b81611ac75760009250505061115d565b611ad7818363ffffffff6131bf16565b6001600160a01b038716600090815260196020908152604080832093909355601a90522054611b0c908363ffffffff61320116565b6001600160a01b0387166000818152601a6020526040902091909155611b3990868463ffffffff61322616565b846001600160a01b0316866001600160a01b0316336001600160a01b03167f951f1856a4d1d8c0081f50a1aee9fdc008f729d0f22849618016e353179b8dda8560405161114e91906142d0565b611b8e611e1f565b611baa5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611bcd5760405162461bcd60e51b815260040161054890614160565b600280546001600160a01b038381166001600160a01b031983161790925560405191169033907f05621ab0b721f217895f5337ac1283251172d175ef3dc8c9a0287155f6024ce890610cb29084908690613f7f565b6002546001600160a01b031681565b601e5481565b611c3f611e1f565b611c5b5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611c7e5760405162461bcd60e51b815260040161054890614160565b602755565b603d5460ff1681565b611c94611e1f565b611cb05760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611cd35760405162461bcd60e51b815260040161054890614160565b828114611cf25760405162461bcd60e51b8152600401610548906141e0565b60005b838110156118fa57828282818110611d0957fe5b9050602002016020611d1e9190810190613908565b60266000878785818110611d2e57fe5b9050602002016020611d4391908101906137c3565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055848482818110611d7757fe5b9050602002016020611d8c91908101906137c3565b6001600160a01b0316337f24cecc90c7d4bc8c6765b75eedcc61d4e1cc4e4d49cd0756c6dfb5f6cc259b50858585818110611dc357fe5b9050602002016020611dd89190810190613908565b604051611de59190614009565b60405180910390a3600101611cf5565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316611e3661339e565b6001600160a01b031614905090565b611e4d611e1f565b611e695760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611e8c5760405162461bcd60e51b815260040161054890614160565b603180546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fe48b1893efaee62da0749dd98dbf0ea62ee472b37f7205114aca36cc9de1122890600090a45050565b60176020526000908152604090205481565b602c5481565b600080611f03611e1f565b611f1f5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611f425760405162461bcd60e51b815260040161054890614160565b611f4c84846133a2565b915091505b9250929050565b611f60611e1f565b611f7c5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611f9f5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115611fc85760405162461bcd60e51b8152600401610548906141b0565b602f80549082905560405133907fb12d68e20e5279e25ff10edfc0f82deaa858ea2ac9874cf58518f4e5f942201390610cb290849086906142de565b61200c611e1f565b6120285760405162461bcd60e51b815260040161054890614240565b603d5460ff161561204b5760405162461bcd60e51b815260040161054890614160565b61270f81111561206d5760405162461bcd60e51b815260040161054890614200565b603f80549082905560405133907fc6d322dc6668f20ff04ac11b217aae8e8704e6388bd1dececeab1059db806bf690610cb290849086906142de565b6120b1611e1f565b6120cd5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156120f05760405162461bcd60e51b815260040161054890614160565b68056bc75e2d631000008111156121195760405162461bcd60e51b815260040161054890614200565b602180549082905560405133907fa06d9b7b1c979150dcbf5b050626cc7d06c764a12ebf76ec8d16b8d3d7c9ee5390610cb290849086906142de565b61215d611e1f565b6121795760405162461bcd60e51b815260040161054890614240565b603d5460ff161561219c5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d631000008111156121c55760405162461bcd60e51b815260040161054890614200565b603980549082905560405133907f61d3e840cf1074298f10fa77edb788b4e5e554d7d135c93ac5f38f2ce0f6b52d90610cb290849086906142de565b612209611e1f565b6122255760405162461bcd60e51b815260040161054890614240565b603d5460ff16156122485760405162461bcd60e51b815260040161054890614160565b602855565b602f5481565b60205481565b602d546001600160a01b031681565b612270611e1f565b61228c5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156122af5760405162461bcd60e51b815260040161054890614160565b600081116122cf5760405162461bcd60e51b815260040161054890614170565b602b80549082905560405133907f13cb748cec5c5021a23ec7994522a0911f24f10fdabc909281fbe95914b782f090610cb290849086906142de565b603d5460009060ff16156123315760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b0316331461235b5760405162461bcd60e51b815260040161054890614240565b6001600160a01b038416600090815260166020526040902054829080821115612382578091505b816123925760009250505061115d565b6123a2818363ffffffff6131bf16565b6001600160a01b0387166000908152601660209081526040808320939093556017905220546123d7908363ffffffff61320116565b6001600160a01b03871660008181526017602052604090209190915561240490868463ffffffff61322616565b846001600160a01b0316866001600160a01b0316336001600160a01b03167fabc20bdd02de91df32a6e4a11684e26e0a34dc5a895a314ae51a919bc9f62c608560405161114e91906142d0565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b61251f611e1f565b61253b5760405162461bcd60e51b815260040161054890614240565b631d18990160e21b600081905260056020527fe1ae43de9a4a3eb1abb1a58087a8aff0717a77c07be9f83ced74911b33b030e3546001600160a01b031690612583908361341f565b612594631a81c19160e01b8361341f565b6125a56359e49e0f60e01b8361341f565b6125b6630427554f60e51b8361341f565b6125c763691c6d9160e11b8361341f565b6125d8630c615ee960e01b8361341f565b6125e96302ff16f160e31b8361341f565b6125fa6329f9986d60e01b8361341f565b61260b633487e38960e21b8361341f565b61261c63a32bb68360e01b8361341f565b61262d63a2ab1ba160e01b8361341f565b61263e637fb202e560e01b8361341f565b61264f6314dcf98560e31b8361341f565b61266063355a395f60e01b8361341f565b61267163e8997dbd60e01b8361341f565b612682631e4aaa4f60e31b8361341f565b6126936358d644e560e11b8361341f565b6126a46374326e8f60e01b8361341f565b6126b56332e4706f60e01b8361341f565b6126c6639688185760e01b8361341f565b6126d7633c56ae1b60e01b8361341f565b6126e863402946b960e01b8361341f565b6126f963115dd4b160e01b8361341f565b61270a6302d77d0d60e41b8361341f565b61271b63367aaa9960e21b8361341f565b61272c630e3ff93760e41b8361341f565b61273d6358aac5b960e11b8361341f565b61274e639c53874f60e01b8361341f565b61275f630ea0e39360e41b8361341f565b612770639254e6bf60e01b8361341f565b612781636fbae33b60e01b8361341f565b612792634dd053a560e01b8361341f565b6127a3630c7c333f60e41b8361341f565b6127b4631674367b60e21b8361341f565b6127c56307024c2560e01b8361341f565b6127d66325e7f39360e11b8361341f565b6127e7633d1250bb60e21b8361341f565b6127f8633f1ae8b960e01b8361341f565b61280963da541e0960e01b8361341f565b61281a63dac8856160e01b8361341f565b61282b63462096f360e01b8361341f565b61283c63a1eb568360e01b8361341f565b61284d6301c832c960e71b8361341f565b6f50726f746f636f6c53657474696e677360801b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6128ad611e1f565b6128c95760405162461bcd60e51b815260040161054890614240565b603d5460ff16156128ec5760405162461bcd60e51b815260040161054890614160565b603580549082905560405133907f5b3b73dcee2d869937089aa5282989415bc607389ab2d4164ae83e7a9e1da08490610cb290849086906142de565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b61299f611e1f565b6129bb5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156129de5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115612a075760405162461bcd60e51b815260040161054890614200565b602080549082905560405133907f7f47cc725826cba6f43b2c0a013328b47d5f16aa9d27d6f0196a37a35c8e53f590610cb290849086906142de565b612a4b611e1f565b612a675760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612a8a5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115612ab35760405162461bcd60e51b815260040161054890614200565b601580549082905560405133907fa6c5bd6650afa784494efd877ecd8b7505efbbbaed74b7dd29f1472d6cd0c49290610cb290849086906142de565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b612b1e611e1f565b612b3a5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612b5d5760405162461bcd60e51b815260040161054890614160565b612b6681613183565b612b825760405162461bcd60e51b8152600401610548906141f0565b602d80546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907ec53b30140bc38db3a9070249d614e03304ada9e458b2d2f01d23feed00985a90600090a45050565b612bdd611e1f565b612bf95760405162461bcd60e51b815260040161054890614240565b603d5460ff1615158115151415612c225760405162461bcd60e51b8152600401610548906142a0565b603d805460ff19168215801591821790925560405190919033907f575725fa4843b62a71608b620f6d2a15792407ae40e019230a0500109782f66090600090a450565b603d5460ff1690565b612c76611e1f565b612c925760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612cb55760405162461bcd60e51b815260040161054890614160565b612cbe81613183565b612cda5760405162461bcd60e51b815260040161054890614290565b602e80546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fffdeb9a96d6e1f867bcbb8a64815e576b65141995ab197cf02f7bb34fc186b7590600090a45050565b603f5490565b612d3c611e1f565b612d585760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612d7b5760405162461bcd60e51b815260040161054890614160565b601480546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907f83e92cb95ec836f94e25e0a7b31c39f750833a8ce24eaa227a7050aafea08a8490600090a45050565b6014546001600160a01b031681565b612de6611e1f565b612e025760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612e255760405162461bcd60e51b815260040161054890614160565b683635c9adc5dea00000811115612e4e5760405162461bcd60e51b815260040161054890614260565b6001600160a01b038381166000818152603c60209081526040808320948716808452949091529081902080549085905590519092919033907fd2d3c121d3439420f50efd36f0a01ebdac87111ec00360641c32aea3c6fc321390612eb590869088906142de565b60405180910390a450505050565b601b5481565b60285481565b603d5460009060ff1615612ef55760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b03163314612f1f5760405162461bcd60e51b815260040161054890614240565b6001600160a01b0383166000908152601660205260409020548015612f8e576001600160a01b03841660009081526016602090815260408083208390556017909152902054612f74908263ffffffff61320116565b6001600160a01b0385166000908152601760205260409020555b6001600160a01b0384166000908152601960205260409020548015612ffd576001600160a01b0385166000908152601960209081526040808320839055601a909152902054612fe3908263ffffffff61320116565b6001600160a01b0386166000908152601a60205260409020555b6001600160a01b0385166000908152601c6020526040902054801561306c576001600160a01b0386166000908152601c60209081526040808320839055601d909152902054613052908263ffffffff61320116565b6001600160a01b0387166000908152601d60205260409020555b600061308e82613082868663ffffffff61320116565b9063ffffffff61320116565b9050806130a05793506112e692505050565b6130ba6001600160a01b038816878363ffffffff61322616565b856001600160a01b0316876001600160a01b0316336001600160a01b03167fa0f881f497620074a74d99fb0378eab58be58cac19de6d38c57bcfeb1786183087878760405161310b939291906142ec565b60405180910390a49695505050505050565b613125611e1f565b6131415760405162461bcd60e51b815260040161054890614240565b6112b481613499565b6038546001600160a01b031690565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906131b757508115155b949350505050565b60006112e383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061351b565b6000828201838110156112e35760405162461bcd60e51b8152600401610548906141a0565b60405161327f90849063a9059cbb60e01b906132489086908690602401613fdd565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613547565b505050565b6040516132a89085906323b872dd60e01b9061324890879087908790602401613f9a565b50505050565b6060828201838110156132d35760405162461bcd60e51b815260040161054890614230565b600185015481116132e457806132ea565b60018501545b90508015806132f95750808410155b15613304575061115d565b838103604051908082528060200260200182016040528015613330578160200160208202803883390190505b50915060005b84820381101561337b57856001018582018154811061335157fe5b906000526020600020015483828151811061336857fe5b6020908102919091010152600101613336565b50509392505050565b6000816131b7848261362c565b6000816131b784826136f5565b3390565b601e5460009081908390808211156133b8578091505b816133d6575050602e546001600160a01b0316915060009050611f51565b6133e6818363ffffffff6131bf16565b601e55602e54613406906001600160a01b0316878463ffffffff61322616565b5050602e546001600160a01b0316946001945092505050565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b0383169081179091551561347a57613474600d6001600160e01b0319841663ffffffff6136f516565b50613495565b61327f600d6001600160e01b0319841663ffffffff61362c16565b5050565b6001600160a01b0381166134bf5760405162461bcd60e51b815260040161054890614190565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000818484111561353f5760405162461bcd60e51b8152600401610548919061414f565b505050900390565b613559826001600160a01b0316613183565b6135755760405162461bcd60e51b8152600401610548906142b0565b60006060836001600160a01b0316836040516135919190613f65565b6000604051808303816000865af19150503d80600081146135ce576040519150601f19603f3d011682016040523d82523d6000602084013e6135d3565b606091505b5091509150816135f55760405162461bcd60e51b8152600401610548906141c0565b8051156132a857808060200190516136109190810190613926565b6132a85760405162461bcd60e51b815260040161054890614280565b60006136388383613735565b156136ed57600082815260208490526040902054600184015460001991820191018082146136b057600085600101828154811061367157fe5b906000526020600020015490508086600101848154811061368e57fe5b6000918252602080832090910192909255918252869052604090206001830190555b600084815260208690526040812055600185018054806136cc57fe5b600190038181906000526020600020016000905590556001925050506112e6565b5060006112e6565b60006137018383613735565b6136ed57506001808301805480830180835560009283526020808420909201859055848352908590526040909120556112e6565b60009081526020919091526040902054151590565b80356112e681614432565b60008083601f84011261376757600080fd5b50813567ffffffffffffffff81111561377f57600080fd5b602083019150836020820283011115611f5157600080fd5b80356112e681614446565b80516112e681614446565b80356112e68161444f565b80356112e681614458565b6000602082840312156137d557600080fd5b60006131b7848461374a565b600080604083850312156137f457600080fd5b6000613800858561374a565b92505060206138118582860161374a565b9150509250929050565b60008060006060848603121561383057600080fd5b600061383c868661374a565b935050602061384d8682870161374a565b925050604061385e868287016137ad565b9150509250925092565b6000806040838503121561387b57600080fd5b6000613887858561374a565b9250506020613811858286016137ad565b600080600080604085870312156138ae57600080fd5b843567ffffffffffffffff8111156138c557600080fd5b6138d187828801613755565b9450945050602085013567ffffffffffffffff8111156138f057600080fd5b6138fc87828801613755565b95989497509550505050565b60006020828403121561391a57600080fd5b60006131b78484613797565b60006020828403121561393857600080fd5b60006131b784846137a2565b60006020828403121561395657600080fd5b60006131b784846137ad565b6000806040838503121561397557600080fd5b600061380085856137ad565b60006020828403121561399357600080fd5b60006131b784846137b8565b600080604083850312156139b257600080fd5b600061388785856137ad565b60006139ca8383613a43565b505060200190565b6139db816143c5565b82525050565b60006139ec826143b3565b6139f681856143b7565b9350613a01836143ad565b8060005b83811015613a2f578151613a1988826139be565b9750613a24836143ad565b925050600101613a05565b509495945050505050565b6139db816143d0565b6139db816143d5565b6000613a57826143b3565b613a6181856143c0565b9350613a718185602086016143fc565b9290920192915050565b6139db816143f1565b6000613a8f826143b3565b613a9981856143b7565b9350613aa98185602086016143fc565b613ab281614428565b9093019392505050565b6000613ac96006836143b7565b6514185d5cd95960d21b815260200192915050565b6000613aeb6013836143b7565b724261736520726577617264206973207a65726f60681b815260200192915050565b6000613b1a6020836143b7565b7f6e65774c6f636b534f5641646472657373206e6f74206120636f6e7472616374815260200192915050565b6000613b536026836143b7565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000613b9b601b836143b7565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613bd46016836143b7565b7508ccaca40e4cac4c2e8ca40d2e640e8dede40d0d2ced60531b815260200192915050565b6000613c066020836143b7565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000613c3f6021836143b7565b7f6e6577536f76546f6b656e41646472657373206e6f74206120636f6e747261638152601d60fa1b602082015260400192915050565b6000613c82600e836143b7565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000613cac6020836143b7565b7f7772627463546f6b656e41646472657373206e6f74206120636f6e7472616374815260200192915050565b6000613ce5600e836143b7565b6d0ecc2d8eaca40e8dede40d0d2ced60931b815260200192915050565b6000613d0f601e836143b7565b7f726567697374727941646472657373206e6f74206120636f6e74726163740000815260200192915050565b6000613d48600f836143b7565b6e706f6f6c206e6f742065786973747360881b815260200192915050565b6000613d736011836143b7565b706164646974696f6e206f766572666c6f7760781b815260200192915050565b6000613da0600c836143b7565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000613dc86014836143b7565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b6000613df8601e836143b7565b7f5370656369616c206665652072656261746520697320746f6f20686967680000815260200192915050565b6000613e31600d836143b7565b6c1c1bdbdb080f4f48185cdcd95d609a1b815260200192915050565b6000613e5a602a836143b7565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b6000613ea66024836143b7565b7f5f70726f746f636f6c546f6b656e41646472657373206e6f74206120636f6e748152631c9858dd60e21b602082015260400192915050565b6000613eec600c836143b7565b6b43616e277420746f67676c6560a01b815260200192915050565b6000613f14601f836143b7565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6000613f4d6009836143b7565b680706f6f6c203d3d20360bc1b815260200192915050565b600061115d8284613a4c565b602081016112e682846139d2565b60408101613f8d82856139d2565b61115d60208301846139d2565b60608101613fa882866139d2565b613fb560208301856139d2565b6131b76040830184613a43565b60408101613fd082856139d2565b61115d6020830184613a3a565b60408101613feb82856139d2565b61115d6020830184613a43565b602080825281016112e381846139e1565b602081016112e68284613a3a565b6101008101614026828b613a43565b614033602083018a613a3a565b61404060408301896139d2565b61404d60608301886139d2565b61405a60808301876139d2565b61406760a0830186613a43565b61407460c0830185613a43565b61408160e0830184613a43565b9998505050505050505050565b610180810161409d828f613a43565b6140aa602083018e613a43565b6140b7604083018d613a43565b6140c4606083018c613a3a565b6140d1608083018b613a43565b6140de60a083018a613a43565b6140eb60c0830189613a43565b6140f860e0830188613a43565b614106610100830187613a43565b614114610120830186613a43565b6141226101408301856139d2565b6141306101608301846139d2565b9d9c50505050505050505050505050565b602081016112e68284613a7b565b602080825281016112e38184613a84565b602080825281016112e681613abc565b602080825281016112e681613ade565b602080825281016112e681613b0d565b602080825281016112e681613b46565b602080825281016112e681613b8e565b602080825281016112e681613bc7565b602080825281016112e681613bf9565b602080825281016112e681613c32565b602080825281016112e681613c75565b602080825281016112e681613c9f565b602080825281016112e681613cd8565b602080825281016112e681613d02565b602080825281016112e681613d3b565b602080825281016112e681613d66565b602080825281016112e681613d93565b602080825281016112e681613dbb565b602080825281016112e681613deb565b602080825281016112e681613e24565b602080825281016112e681613e4d565b602080825281016112e681613e99565b602080825281016112e681613edf565b602080825281016112e681613f07565b602080825281016112e681613f40565b602081016112e68284613a43565b60408101613feb8285613a43565b606081016142fa8286613a43565b613fb56020830185613a43565b60a081016143158288613a43565b6143226020830187613a43565b61432f6040830186613a43565b61433c6060830185613a43565b6143496080830184613a43565b9695505050505050565b60c081016143618289613a43565b61436e6020830188613a43565b61437b6040830187613a43565b6143886060830186613a43565b6143956080830185613a43565b6143a260a0830184613a43565b979650505050505050565b60200190565b5190565b90815260200190565b919050565b60006112e6826143e5565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b60006112e6826143c5565b60005b838110156144175781810151838201526020016143ff565b838111156132a85750506000910152565b601f01601f191690565b61443b816143c5565b81146112b457600080fd5b61443b816143d0565b61443b816143d5565b61443b816143d856fea365627a7a72315820f4d4c23f5e3817de22e785e86303b09912a3ff0f304c0938df405e5850c3292b6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x530 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x2AF JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0x172 JUMPI DUP1 PUSH4 0xE8997DBD GT PUSH2 0xD9 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x92 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB6D JUMPI DUP1 PUSH4 0xF44942EC EQ PUSH2 0xB80 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0xB88 JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0xB90 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xB98 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xBA0 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0xE8997DBD EQ PUSH2 0xB1C JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0xB2F JUMPI DUP1 PUSH4 0xEA0E3930 EQ PUSH2 0xB37 JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0xB4A JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0xB52 JUMPI DUP1 PUSH4 0xF2555278 EQ PUSH2 0xB5A JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0xD485045E GT PUSH2 0x12B JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0xAC0 JUMPI DUP1 PUSH4 0xD9EAAA64 EQ PUSH2 0xAD3 JUMPI DUP1 PUSH4 0xDA541E09 EQ PUSH2 0xAE6 JUMPI DUP1 PUSH4 0xDAC88561 EQ PUSH2 0xAF9 JUMPI DUP1 PUSH4 0xE3FF9370 EQ PUSH2 0xB01 JUMPI DUP1 PUSH4 0xE4196480 EQ PUSH2 0xB14 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0xA50 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0xA77 JUMPI DUP1 PUSH4 0xD21F8E24 EQ PUSH2 0xA8A JUMPI DUP1 PUSH4 0xD238DB22 EQ PUSH2 0xA9D JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0xAB0 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0xAB8 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0xAE0A8530 GT PUSH2 0x216 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x1CF JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x9DC JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x9E4 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x9EC JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x9FF JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xA2A JUMPI DUP1 PUSH4 0xC7C333F0 EQ PUSH2 0xA3D JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x973 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x97B JUMPI DUP1 PUSH4 0xB1558B72 EQ PUSH2 0x990 JUMPI DUP1 PUSH4 0xB1AC89CA EQ PUSH2 0x9A3 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x9B6 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x9C9 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x9C53874F GT PUSH2 0x268 JUMPI DUP1 PUSH4 0x9C53874F EQ PUSH2 0x90C JUMPI DUP1 PUSH4 0xA1EB5683 EQ PUSH2 0x91F JUMPI DUP1 PUSH4 0xA2AB1BA1 EQ PUSH2 0x932 JUMPI DUP1 PUSH4 0xA32BB683 EQ PUSH2 0x945 JUMPI DUP1 PUSH4 0xA6E7CC28 EQ PUSH2 0x958 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x96B JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x8A2 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x8B5 JUMPI DUP1 PUSH4 0x9254E6BF EQ PUSH2 0x8BD JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x8D0 JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x8E3 JUMPI DUP1 PUSH4 0x96881857 EQ PUSH2 0x8EB JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x4203E395 GT PUSH2 0x3F7 JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x35E JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x317 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x85C JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x864 JUMPI DUP1 PUSH4 0x7FB202E5 EQ PUSH2 0x86C JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x87F JUMPI DUP1 PUSH4 0x84EAA9E0 EQ PUSH2 0x887 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x89A JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0x6FBAE33B EQ PUSH2 0x813 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x82E JUMPI DUP1 PUSH4 0x74326E8F EQ PUSH2 0x836 JUMPI DUP1 PUSH4 0x74626404 EQ PUSH2 0x849 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x569FC1FB GT PUSH2 0x3B0 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x779 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x79B JUMPI DUP1 PUSH4 0x59D0D9EC EQ PUSH2 0x7A3 JUMPI DUP1 PUSH4 0x59E49E0F EQ PUSH2 0x7B6 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x7C9 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x7ED JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x4203E395 EQ PUSH2 0x733 JUMPI DUP1 PUSH4 0x462096F3 EQ PUSH2 0x746 JUMPI DUP1 PUSH4 0x4699F846 EQ PUSH2 0x74E JUMPI DUP1 PUSH4 0x4BCFE726 EQ PUSH2 0x756 JUMPI DUP1 PUSH4 0x4DD053A5 EQ PUSH2 0x75E JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x771 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x49B JUMPI DUP1 PUSH4 0x355A395F GT PUSH2 0x454 JUMPI DUP1 PUSH4 0x355A395F EQ PUSH2 0x6BF JUMPI DUP1 PUSH4 0x3C56AE1B EQ PUSH2 0x6D2 JUMPI DUP1 PUSH4 0x3F1AE8B9 EQ PUSH2 0x6E5 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x6ED JUMPI DUP1 PUSH4 0x402946B9 EQ PUSH2 0x700 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x720 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x663 JUMPI DUP1 PUSH4 0x2D77D0D0 EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0x32E4706F EQ PUSH2 0x686 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x699 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x6AC JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x17F8B788 GT PUSH2 0x4ED JUMPI DUP1 PUSH4 0x17F8B788 EQ PUSH2 0x5E4 JUMPI DUP1 PUSH4 0x1A81C191 EQ PUSH2 0x5F7 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x62A JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x29F9986D EQ PUSH2 0x650 JUMPI PUSH2 0x530 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x551 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0x7024C25 EQ PUSH2 0x594 JUMPI DUP1 PUSH4 0xC615EE9 EQ PUSH2 0x59C JUMPI DUP1 PUSH4 0x115DD4B1 EQ PUSH2 0x5B1 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x5D1 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4250 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x564 PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x3868 JUMP JUMPDEST PUSH2 0xBA8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4353 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x587 PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0x3F71 JUMP JUMPDEST PUSH2 0x587 PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0xC06 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5C4 PUSH2 0x5BF CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0xCBE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0x4009 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x5DF CALLDATASIZE PUSH1 0x4 PUSH2 0x3981 JUMP JUMPDEST PUSH2 0xCDE JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x5F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0xCF9 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x605 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0xDA5 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x618 CALLDATASIZE PUSH1 0x4 PUSH2 0x37E1 JUMP JUMPDEST PUSH2 0xE41 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0x42D0 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x638 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0xE5E JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x64B CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0xE79 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x65E CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0xE8E JUMP JUMPDEST PUSH2 0x61D PUSH2 0xF3A JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x679 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0xF40 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x1002 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x694 CALLDATASIZE PUSH1 0x4 PUSH2 0x381B JUMP JUMPDEST PUSH2 0x1008 JUMP JUMPDEST PUSH2 0x564 PUSH2 0x6A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3868 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x6BA CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x6CD CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x11B6 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x6E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x1239 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x12B7 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x6FB CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x12BD JUMP JUMPDEST PUSH2 0x713 PUSH2 0x70E CALLDATASIZE PUSH1 0x4 PUSH2 0x399F JUMP JUMPDEST PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0x3FF8 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x72E CALLDATASIZE PUSH1 0x4 PUSH2 0x3962 JUMP JUMPDEST PUSH2 0x12EC JUMP JUMPDEST PUSH2 0x61D PUSH2 0x741 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x130C JUMP JUMPDEST PUSH2 0x61D PUSH2 0x131E JUMP JUMPDEST PUSH2 0x61D PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x132A JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x76C CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x1339 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x13F9 JUMP JUMPDEST PUSH2 0x78C PUSH2 0x787 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x13FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST PUSH2 0x61D PUSH2 0x1420 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x7B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x37E1 JUMP JUMPDEST PUSH2 0x1426 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x7C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3898 JUMP JUMPDEST PUSH2 0x1451 JUMP JUMPDEST PUSH2 0x7DC PUSH2 0x7D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x37E1 JUMP JUMPDEST PUSH2 0x1901 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4307 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x7FB CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x193B JUMP JUMPDEST PUSH2 0x587 PUSH2 0x80E CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x1950 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x821 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x196B JUMP JUMPDEST PUSH2 0x587 PUSH2 0x1A2B JUMP JUMPDEST PUSH2 0x61D PUSH2 0x1A3A JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x844 CALLDATASIZE PUSH1 0x4 PUSH2 0x381B JUMP JUMPDEST PUSH2 0x1A40 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x857 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x1B86 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x1C22 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x1C31 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x87A CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x1C37 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x895 CALLDATASIZE PUSH1 0x4 PUSH2 0x3898 JUMP JUMPDEST PUSH2 0x1C8C JUMP JUMPDEST PUSH2 0x587 PUSH2 0x1DF5 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x8B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x1E04 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x8CB CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x1E45 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x8DE CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x1EE0 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x1EF2 JUMP JUMPDEST PUSH2 0x8FE PUSH2 0x8F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3868 JUMP JUMPDEST PUSH2 0x1EF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP3 SWAP2 SWAP1 PUSH2 0x3FC2 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x91A CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x1F58 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x92D CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2004 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x940 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x20A9 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x953 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2155 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x966 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2201 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x224D JUMP JUMPDEST PUSH2 0x61D PUSH2 0x2253 JUMP JUMPDEST PUSH2 0x983 PUSH2 0x2259 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0x4141 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x99E CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2268 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x9B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x381B JUMP JUMPDEST PUSH2 0x230B JUMP JUMPDEST PUSH2 0x61D PUSH2 0x9C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2451 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x9D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2463 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x2475 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x2484 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x9FA CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2493 JUMP JUMPDEST PUSH2 0xA12 PUSH2 0xA0D CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x24A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x408E JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xA38 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2517 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xA4B CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x28A5 JUMP JUMPDEST PUSH2 0xA63 PUSH2 0xA5E CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2928 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4017 JUMP JUMPDEST PUSH2 0x61D PUSH2 0xA85 CALLDATASIZE PUSH1 0x4 PUSH2 0x37E1 JUMP JUMPDEST PUSH2 0x297A JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xA98 CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2997 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xAAB CALLDATASIZE PUSH1 0x4 PUSH2 0x3944 JUMP JUMPDEST PUSH2 0x2A43 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x2AEF JUMP JUMPDEST PUSH2 0x61D PUSH2 0x2AFE JUMP JUMPDEST PUSH2 0x61D PUSH2 0xACE CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2B04 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xAE1 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2B16 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xAF4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3908 JUMP JUMPDEST PUSH2 0x2BD5 JUMP JUMPDEST PUSH2 0x5C4 PUSH2 0x2C65 JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xB0F CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2C6E JUMP JUMPDEST PUSH2 0x61D PUSH2 0x2D2E JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xB2A CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x2D34 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x2DCF JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xB45 CALLDATASIZE PUSH1 0x4 PUSH2 0x381B JUMP JUMPDEST PUSH2 0x2DDE JUMP JUMPDEST PUSH2 0x61D PUSH2 0x2EC3 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x2EC9 JUMP JUMPDEST PUSH2 0x61D PUSH2 0xB68 CALLDATASIZE PUSH1 0x4 PUSH2 0x37E1 JUMP JUMPDEST PUSH2 0x2ECF JUMP JUMPDEST PUSH2 0x5AF PUSH2 0xB7B CALLDATASIZE PUSH1 0x4 PUSH2 0x37C3 JUMP JUMPDEST PUSH2 0x311D JUMP JUMPDEST PUSH2 0x587 PUSH2 0x314A JUMP JUMPDEST PUSH2 0x61D PUSH2 0x3159 JUMP JUMPDEST PUSH2 0x61D PUSH2 0x315F JUMP JUMPDEST PUSH2 0x587 PUSH2 0x3165 JUMP JUMPDEST PUSH2 0x587 PUSH2 0x3174 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xC0E PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0xC2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xC4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x18 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x628070E9CCBC70E8BE34A2FA969F8D314EC049F17BFCB4C2020DF4BCCD2BF52 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xD01 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0xD1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xD40 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0xD69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x5C61C9C51CB2781BC120817A851F7F27C134D5D191BC5A2B0EA971BA638425E4 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0xDAD PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0xDC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xDEC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 CALLER SWAP1 PUSH32 0x480CC6E59585343A9E9D6FE591DAD0F80CE93BB2399CA672910F380671B46BA8 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x3F7F JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xE96 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0xEB2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xED5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0xEFE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x3E DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x2BD69D9975FCF3B39B6AB502D77983A0CFCE893E47073F502D094C6A94DA33B SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xF48 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0xF64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xF87 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0xF90 DUP2 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0xFAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4210 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP2 AND SWAP3 AND SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0x54C538F1D732806E1BFC25EC56236DAC39E6070DD856C0E7EFB2BC274709467D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x102E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1058 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x107F JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x108F JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x115D JUMP JUMPDEST PUSH2 0x109F DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x31BF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1D SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x10D4 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1101 SWAP1 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3226 AND JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2BFAA669AEEE298BC85FE2B7DDDC312FC28B78622F086063B9A410D7BA9939CF DUP6 PUSH1 0x40 MLOAD PUSH2 0x114E SWAP2 SWAP1 PUSH2 0x42D0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x11BE PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x11DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x11FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x29 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xA645D7B227C34F1F218D53BC3B3CCB9A43EAF2231B33925194F1DE755AA3ACC3 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0x1241 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x125D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1280 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x1E SLOAD PUSH2 0x1293 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1E SSTORE PUSH1 0x2E SLOAD PUSH2 0x12B4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3284 AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2F SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x12E3 PUSH1 0x24 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x32AE AND JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3E SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1341 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x135D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1380 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0x1389 DUP2 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x13A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4180 JUMP JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0xEA3CAD8B6739A7A73616CB585FE48A8E8F61D1FD7F9822CCD7580A805357AA70 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1459 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1475 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1498 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x14B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41E0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18FA JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x14CE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x14E3 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x14F8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x150D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1534 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4270 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x1542 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1557 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x157E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x42C0 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x158C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x15A1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 PUSH2 0x15F8 JUMPI POP PUSH1 0x0 PUSH1 0x22 DUP2 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x15C3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x15D8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD AND EQ ISZERO JUMPDEST PUSH2 0x1614 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4220 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x1622 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1637 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1746 JUMPI PUSH1 0x0 PUSH1 0x23 PUSH1 0x0 PUSH1 0x22 PUSH1 0x0 DUP10 DUP10 DUP8 DUP2 DUP2 LT PUSH2 0x165C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1671 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SLOAD DUP3 AND DUP6 MSTORE SWAP3 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP2 SWAP1 SWAP2 ADD DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0x22 DUP2 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x16C8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x16DD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1740 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x171D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1732 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3384 AND JUMP JUMPDEST POP PUSH2 0x1868 JUMP JUMPDEST DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x1752 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1767 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x0 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x1777 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x178C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x17C9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x17DE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x17EE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1803 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1866 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x1843 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1858 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x24 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3391 AND JUMP JUMPDEST POP JUMPDEST DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x1874 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1889 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x189E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x18B3 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x919223D371E0AD76F1F32DCBE0750166810BFF9A9E4B2735BFCD01C5686C8D89 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 ADD PUSH2 0x14BA JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1973 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x198F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x19B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0x19BB DUP2 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x19D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41D0 JUMP JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0x6105CBFB5494A79F89745763767914B7B60B00DEFAC5E94C7EB28CC5E44C479F SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x1A66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1A90 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x1AB7 JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x1AC7 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x115D JUMP JUMPDEST PUSH2 0x1AD7 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x31BF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x1A SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x1B0C SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1B39 SWAP1 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3226 AND JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x951F1856A4D1D8C0081F50A1AEE9FDC008F729D0F22849618016E353179B8DDA DUP6 PUSH1 0x40 MLOAD PUSH2 0x114E SWAP2 SWAP1 PUSH2 0x42D0 JUMP JUMPDEST PUSH2 0x1B8E PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1BAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1BCD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP1 CALLER SWAP1 PUSH32 0x5621AB0B721F217895F5337AC1283251172D175EF3DC8C9A0287155F6024CE8 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x3F7F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1C3F PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1C5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1C7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x27 SSTORE JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1C94 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1CB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1CD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x1CF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41E0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18FA JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x1D09 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1D1E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3908 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x0 DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x1D2E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1D43 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x1D77 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1D8C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x37C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH32 0x24CECC90C7D4BC8C6765B75EEDCC61D4E1CC4E4D49CD0756C6DFB5F6CC259B50 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x1DC3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x1DD8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3908 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DE5 SWAP2 SWAP1 PUSH2 0x4009 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 ADD PUSH2 0x1CF5 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E36 PUSH2 0x339E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1E4D PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1E69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1E8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x31 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0xE48B1893EFAEE62DA0749DD98DBF0EA62EE472B37F7205114ACA36CC9DE11228 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F03 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1F1F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1F42 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0x1F4C DUP5 DUP5 PUSH2 0x33A2 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F60 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1F7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1F9F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x1FC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41B0 JUMP JUMPDEST PUSH1 0x2F DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xB12D68E20E5279E25FF10EDFC0F82DEAA858EA2AC9874CF58518F4E5F9422013 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0x200C PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2028 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x204B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0x270F DUP2 GT ISZERO PUSH2 0x206D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x3F DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xC6D322DC6668F20FF04AC11B217AAE8E8704E6388BD1DECECEAB1059DB806BF6 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0x20B1 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x20CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x20F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x2119 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x21 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xA06D9B7B1C979150DCBF5B050626CC7D06C764A12EBF76EC8D16B8D3D7C9EE53 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0x215D PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2179 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x219C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x21C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x61D3E840CF1074298F10FA77EDB788B4E5E554D7D135C93AC5F38F2CE0F6B52D SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0x2209 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2225 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2248 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x28 SSTORE JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2270 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x228C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x22AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x22CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4170 JUMP JUMPDEST PUSH1 0x2B DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x13CB748CEC5C5021A23EC7994522A0911F24F10FDABC909281FBE95914B782F0 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x2331 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x235B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x2382 JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x2392 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x115D JUMP JUMPDEST PUSH2 0x23A2 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x31BF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x17 SWAP1 MSTORE KECCAK256 SLOAD PUSH2 0x23D7 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x2404 SWAP1 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3226 AND JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xABC20BDD02DE91DF32A6E4A11684E26E0A34DC5A895A314AE51A919BC9F62C60 DUP6 PUSH1 0x40 MLOAD PUSH2 0x114E SWAP2 SWAP1 PUSH2 0x42D0 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0x251F PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x253B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH4 0x1D189901 PUSH1 0xE2 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xE1AE43DE9A4A3EB1ABB1A58087A8AFF0717A77C07BE9F83CED74911B33B030E3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2583 SWAP1 DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2594 PUSH4 0x1A81C191 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x25A5 PUSH4 0x59E49E0F PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x25B6 PUSH4 0x427554F PUSH1 0xE5 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x25C7 PUSH4 0x691C6D91 PUSH1 0xE1 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x25D8 PUSH4 0xC615EE9 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x25E9 PUSH4 0x2FF16F1 PUSH1 0xE3 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x25FA PUSH4 0x29F9986D PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x260B PUSH4 0x3487E389 PUSH1 0xE2 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x261C PUSH4 0xA32BB683 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x262D PUSH4 0xA2AB1BA1 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x263E PUSH4 0x7FB202E5 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x264F PUSH4 0x14DCF985 PUSH1 0xE3 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2660 PUSH4 0x355A395F PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2671 PUSH4 0xE8997DBD PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2682 PUSH4 0x1E4AAA4F PUSH1 0xE3 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2693 PUSH4 0x58D644E5 PUSH1 0xE1 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x26A4 PUSH4 0x74326E8F PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x26B5 PUSH4 0x32E4706F PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x26C6 PUSH4 0x96881857 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x26D7 PUSH4 0x3C56AE1B PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x26E8 PUSH4 0x402946B9 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x26F9 PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x270A PUSH4 0x2D77D0D PUSH1 0xE4 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x271B PUSH4 0x367AAA99 PUSH1 0xE2 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x272C PUSH4 0xE3FF937 PUSH1 0xE4 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x273D PUSH4 0x58AAC5B9 PUSH1 0xE1 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x274E PUSH4 0x9C53874F PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x275F PUSH4 0xEA0E393 PUSH1 0xE4 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2770 PUSH4 0x9254E6BF PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2781 PUSH4 0x6FBAE33B PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2792 PUSH4 0x4DD053A5 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x27A3 PUSH4 0xC7C333F PUSH1 0xE4 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x27B4 PUSH4 0x1674367B PUSH1 0xE2 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x27C5 PUSH4 0x7024C25 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x27D6 PUSH4 0x25E7F393 PUSH1 0xE1 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x27E7 PUSH4 0x3D1250BB PUSH1 0xE2 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x27F8 PUSH4 0x3F1AE8B9 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x2809 PUSH4 0xDA541E09 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x281A PUSH4 0xDAC88561 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x282B PUSH4 0x462096F3 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x283C PUSH4 0xA1EB5683 PUSH1 0xE0 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH2 0x284D PUSH4 0x1C832C9 PUSH1 0xE7 SHL DUP4 PUSH2 0x341F JUMP JUMPDEST PUSH16 0x50726F746F636F6C53657474696E6773 PUSH1 0x80 SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0x28AD PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x28C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x28EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x35 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x5B3B73DCEE2D869937089AA5282989415BC607389AB2D4164AE83E7A9E1DA084 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x299F PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x29BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x29DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x2A07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x20 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x7F47CC725826CBA6F43B2C0A013328B47D5F16AA9D27D6F0196A37A35C8E53F5 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH2 0x2A4B PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2A67 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2A8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 GT ISZERO PUSH2 0x2AB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD SWAP1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0xA6C5BD6650AFA784494EFD877ECD8B7505EFBBBAED74B7DD29F1472D6CD0C492 SWAP1 PUSH2 0xCB2 SWAP1 DUP5 SWAP1 DUP7 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2B1E PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2B3A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2B5D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0x2B66 DUP2 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x2B82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41F0 JUMP JUMPDEST PUSH1 0x2D DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH31 0xC53B30140BC38DB3A9070249D614E03304ADA9E458B2D2F01D23FEED00985A SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0x2BDD PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2BF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 ISZERO ISZERO EQ ISZERO PUSH2 0x2C22 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x42A0 JUMP JUMPDEST PUSH1 0x3D DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO DUP1 ISZERO SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 CALLER SWAP1 PUSH32 0x575725FA4843B62A71608B620F6D2A15792407AE40E019230A0500109782F660 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2C76 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2C92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2CB5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH2 0x2CBE DUP2 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x2CDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4290 JUMP JUMPDEST PUSH1 0x2E DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0xFFDEB9A96D6E1F867BCBB8A64815E576B65141995AB197CF02F7BB34FC186B75 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x3F SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2D3C PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2D58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2D7B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x14 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 CALLER SWAP1 PUSH32 0x83E92CB95EC836F94E25E0A7B31C39F750833A8CE24EAA227A7050AAFEA08A84 SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x2DE6 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x2E02 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2E25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH9 0x3635C9ADC5DEA00000 DUP2 GT ISZERO PUSH2 0x2E4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4260 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 DUP6 SWAP1 SSTORE SWAP1 MLOAD SWAP1 SWAP3 SWAP2 SWAP1 CALLER SWAP1 PUSH32 0xD2D3C121D3439420F50EFD36F0A01EBDAC87111EC00360641C32AEA3C6FC3213 SWAP1 PUSH2 0x2EB5 SWAP1 DUP7 SWAP1 DUP9 SWAP1 PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x2EF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4160 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2F1F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x2F8E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x17 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2F74 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x2FFD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x1A SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2FE3 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x306C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x1D SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3052 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x308E DUP3 PUSH2 0x3082 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3201 AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x30A0 JUMPI SWAP4 POP PUSH2 0x12E6 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x30BA PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP8 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3226 AND JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA0F881F497620074A74D99FB0378EAB58BE58CAC19DE6D38C57BCFEB17861830 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x310B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3125 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x3141 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4240 JUMP JUMPDEST PUSH2 0x12B4 DUP2 PUSH2 0x3499 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x31B7 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x351B JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x12E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x327F SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3248 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x24 ADD PUSH2 0x3FDD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3547 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32A8 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x3248 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x3F9A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x32D3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4230 JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD DUP2 GT PUSH2 0x32E4 JUMPI DUP1 PUSH2 0x32EA JUMP JUMPDEST PUSH1 0x1 DUP6 ADD SLOAD JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 PUSH2 0x32F9 JUMPI POP DUP1 DUP5 LT ISZERO JUMPDEST ISZERO PUSH2 0x3304 JUMPI POP PUSH2 0x115D JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3330 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP5 DUP3 SUB DUP2 LT ISZERO PUSH2 0x337B JUMPI DUP6 PUSH1 0x1 ADD DUP6 DUP3 ADD DUP2 SLOAD DUP2 LT PUSH2 0x3351 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3368 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3336 JUMP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x31B7 DUP5 DUP3 PUSH2 0x362C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x31B7 DUP5 DUP3 PUSH2 0x36F5 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1E SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x33B8 JUMPI DUP1 SWAP2 POP JUMPDEST DUP2 PUSH2 0x33D6 JUMPI POP POP PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH2 0x1F51 JUMP JUMPDEST PUSH2 0x33E6 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x31BF AND JUMP JUMPDEST PUSH1 0x1E SSTORE PUSH1 0x2E SLOAD PUSH2 0x3406 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3226 AND JUMP JUMPDEST POP POP PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 PUSH1 0x1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x347A JUMPI PUSH2 0x3474 PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x36F5 AND JUMP JUMPDEST POP PUSH2 0x3495 JUMP JUMPDEST PUSH2 0x327F PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x362C AND JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x34BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4190 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x353F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP2 SWAP1 PUSH2 0x414F JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x3559 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x3575 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x42B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x3591 SWAP2 SWAP1 PUSH2 0x3F65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x35CE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x35D3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x35F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x41C0 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x32A8 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x3610 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3926 JUMP JUMPDEST PUSH2 0x32A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x548 SWAP1 PUSH2 0x4280 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3638 DUP4 DUP4 PUSH2 0x3735 JUMP JUMPDEST ISZERO PUSH2 0x36ED JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x36B0 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3671 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x368E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x36CC JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x12E6 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x12E6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3701 DUP4 DUP4 PUSH2 0x3735 JUMP JUMPDEST PUSH2 0x36ED JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x12E6 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x12E6 DUP2 PUSH2 0x4432 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3767 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x377F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1F51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x12E6 DUP2 PUSH2 0x4446 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x12E6 DUP2 PUSH2 0x4446 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x12E6 DUP2 PUSH2 0x444F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x12E6 DUP2 PUSH2 0x4458 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x37D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x31B7 DUP5 DUP5 PUSH2 0x374A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3800 DUP6 DUP6 PUSH2 0x374A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3811 DUP6 DUP3 DUP7 ADD PUSH2 0x374A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3830 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x383C DUP7 DUP7 PUSH2 0x374A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x384D DUP7 DUP3 DUP8 ADD PUSH2 0x374A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x385E DUP7 DUP3 DUP8 ADD PUSH2 0x37AD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x387B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3887 DUP6 DUP6 PUSH2 0x374A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3811 DUP6 DUP3 DUP7 ADD PUSH2 0x37AD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x38AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x38C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38D1 DUP8 DUP3 DUP9 ADD PUSH2 0x3755 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x38F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38FC DUP8 DUP3 DUP9 ADD PUSH2 0x3755 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x391A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x31B7 DUP5 DUP5 PUSH2 0x3797 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3938 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x31B7 DUP5 DUP5 PUSH2 0x37A2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3956 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x31B7 DUP5 DUP5 PUSH2 0x37AD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3975 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3800 DUP6 DUP6 PUSH2 0x37AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3993 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x31B7 DUP5 DUP5 PUSH2 0x37B8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3887 DUP6 DUP6 PUSH2 0x37AD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39CA DUP4 DUP4 PUSH2 0x3A43 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x39DB DUP2 PUSH2 0x43C5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39EC DUP3 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x39F6 DUP2 DUP6 PUSH2 0x43B7 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A01 DUP4 PUSH2 0x43AD JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A2F JUMPI DUP2 MLOAD PUSH2 0x3A19 DUP9 DUP3 PUSH2 0x39BE JUMP JUMPDEST SWAP8 POP PUSH2 0x3A24 DUP4 PUSH2 0x43AD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x3A05 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x39DB DUP2 PUSH2 0x43D0 JUMP JUMPDEST PUSH2 0x39DB DUP2 PUSH2 0x43D5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A57 DUP3 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x3A61 DUP2 DUP6 PUSH2 0x43C0 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A71 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x43FC JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x39DB DUP2 PUSH2 0x43F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A8F DUP3 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x3A99 DUP2 DUP6 PUSH2 0x43B7 JUMP JUMPDEST SWAP4 POP PUSH2 0x3AA9 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x43FC JUMP JUMPDEST PUSH2 0x3AB2 DUP2 PUSH2 0x4428 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AC9 PUSH1 0x6 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AEB PUSH1 0x13 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH19 0x4261736520726577617264206973207A65726F PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B1A PUSH1 0x20 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x6E65774C6F636B534F5641646472657373206E6F74206120636F6E7472616374 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B53 PUSH1 0x26 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B9B PUSH1 0x1B DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BD4 PUSH1 0x16 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH22 0x8CCACA40E4CAC4C2E8CA40D2E640E8DEDE40D0D2CED PUSH1 0x53 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C06 PUSH1 0x20 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C3F PUSH1 0x21 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x6E6577536F76546F6B656E41646472657373206E6F74206120636F6E74726163 DUP2 MSTORE PUSH1 0x1D PUSH1 0xFA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C82 PUSH1 0xE DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CAC PUSH1 0x20 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x7772627463546F6B656E41646472657373206E6F74206120636F6E7472616374 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CE5 PUSH1 0xE DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH14 0xECC2D8EACA40E8DEDE40D0D2CED PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D0F PUSH1 0x1E DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x726567697374727941646472657373206E6F74206120636F6E74726163740000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D48 PUSH1 0xF DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH15 0x706F6F6C206E6F7420657869737473 PUSH1 0x88 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D73 PUSH1 0x11 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH17 0x6164646974696F6E206F766572666C6F77 PUSH1 0x78 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DA0 PUSH1 0xC DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DC8 PUSH1 0x14 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DF8 PUSH1 0x1E DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x5370656369616C206665652072656261746520697320746F6F20686967680000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E31 PUSH1 0xD DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH13 0x1C1BDBDB080F4F48185CDCD95D PUSH1 0x9A SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E5A PUSH1 0x2A DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EA6 PUSH1 0x24 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x5F70726F746F636F6C546F6B656E41646472657373206E6F74206120636F6E74 DUP2 MSTORE PUSH4 0x1C9858DD PUSH1 0xE2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EEC PUSH1 0xC DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH12 0x43616E277420746F67676C65 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F14 PUSH1 0x1F DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F4D PUSH1 0x9 DUP4 PUSH2 0x43B7 JUMP JUMPDEST PUSH9 0x706F6F6C203D3D203 PUSH1 0xBC SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x115D DUP3 DUP5 PUSH2 0x3A4C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x12E6 DUP3 DUP5 PUSH2 0x39D2 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3F8D DUP3 DUP6 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x115D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x39D2 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3FA8 DUP3 DUP7 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x3FB5 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x31B7 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3A43 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3FD0 DUP3 DUP6 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x115D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3A3A JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3FEB DUP3 DUP6 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x115D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3A43 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E3 DUP2 DUP5 PUSH2 0x39E1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x12E6 DUP3 DUP5 PUSH2 0x3A3A JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x4026 DUP3 DUP12 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4033 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x3A3A JUMP JUMPDEST PUSH2 0x4040 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x404D PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x405A PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x4067 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4074 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4081 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x3A43 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x409D DUP3 DUP16 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x40AA PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x40B7 PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x40C4 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x3A3A JUMP JUMPDEST PUSH2 0x40D1 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x40DE PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x40EB PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x40F8 PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4106 PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4114 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4122 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x39D2 JUMP JUMPDEST PUSH2 0x4130 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x39D2 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x12E6 DUP3 DUP5 PUSH2 0x3A7B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E3 DUP2 DUP5 PUSH2 0x3A84 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3ABC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3ADE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3B0D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3B46 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3B8E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3BC7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3C32 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3C75 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3C9F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3CD8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3D02 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3D3B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3D66 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3D93 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3DBB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3DEB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3E24 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3E4D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3E99 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3EDF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3F07 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x12E6 DUP2 PUSH2 0x3F40 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x12E6 DUP3 DUP5 PUSH2 0x3A43 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3FEB DUP3 DUP6 PUSH2 0x3A43 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x42FA DUP3 DUP7 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x3FB5 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3A43 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x4315 DUP3 DUP9 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4322 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x432F PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x433C PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4349 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x3A43 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x4361 DUP3 DUP10 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x436E PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x437B PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4388 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x4395 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x3A43 JUMP JUMPDEST PUSH2 0x43A2 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x3A43 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E6 DUP3 PUSH2 0x43E5 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E6 DUP3 PUSH2 0x43C5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4417 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x43FF JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x32A8 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x443B DUP2 PUSH2 0x43C5 JUMP JUMPDEST DUP2 EQ PUSH2 0x12B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x443B DUP2 PUSH2 0x43D0 JUMP JUMPDEST PUSH2 0x443B DUP2 PUSH2 0x43D5 JUMP JUMPDEST PUSH2 0x443B DUP2 PUSH2 0x43D8 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 DELEGATECALL 0xD4 0xC2 EXTCODEHASH 0x5E CODESIZE OR 0xDE 0x22 0xE7 DUP6 0xE8 PUSH4 0x3B09912 LOG3 SELFDESTRUCT 0xF ADDRESS 0x4C MULMOD CODESIZE 0xDF BLOCKHASH 0x5E PC POP 0xC3 0x29 0x2B PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "667:22827:132:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:22827:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1017:30;;-1:-1:-1;;;1017:30:132;;;;;;;;;;;;;;;;1636:67:14;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;;;;;22515:92:132;;;:::i;8926:268::-;;;;;;;;;:::i;:::-;;18819:126;;;;;;;;;:::i;:::-;;;;;;;;1270:46:14;;;;;;;;;:::i;9339:276:132:-;;;;;;;;;:::i;6489:218::-;;;;;;;;;:::i;6768:81:14:-;;;;;;;;;:::i;:::-;;;;;;;;4372:55;;;;;;;;;:::i;5558:53::-;;;;;;;;;:::i;9763:290:132:-;;;;;;;;;:::i;3097:46:14:-;;;:::i;19102:461:132:-;;;;;;;;;:::i;3969:32:14:-;;;:::i;16695:691:132:-;;;;;;;;;:::i;1527:65:14:-;;;;;;;;;:::i;3376:55::-;;;;;;;;;:::i;12140:195:132:-;;;;;;;;;:::i;18071:280::-;;;;;;;;;:::i;22802:94::-;;;:::i;4925:48:14:-;;;;;;;;;:::i;18506:148:132:-;;;;;;;;;:::i;:::-;;;;;;;;1744:69:14;;;;;;;;;:::i;2825:55::-;;;;;;;;;:::i;23152:107:132:-;;;:::i;2717:41:14:-;;;:::i;22610:92:132:-;;;:::i;4649:359::-;;;;;;;;;:::i;4832:37:14:-;;;:::i;2013:52::-;;;;;;;;;:::i;:::-;;;;;;;;;;5060:50;;;:::i;22310:202:132:-;;;;;;;;;:::i;6928:831::-;;;;;;;;;:::i;1898:76:14:-;;;;;;;;;:::i;:::-;;;;;;;;;;;;4542:47;;;;;;;;;:::i;5650:57::-;;;;;;;;;:::i;4302:344:132:-;;;;;;;;;:::i;1087:24:14:-;;;:::i;6000:39::-;;;:::i;15648:679:132:-;;;;;;;;;:::i;6121:220::-;;;;;;;;;:::i;1012:25:14:-;;;:::i;3887:32::-;;;:::i;11564:113:132:-;;;;;;;;;:::i;7007:17:14:-;;;:::i;8041:335:132:-;;;;;;;;;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;;;;:::i;1134:83:142:-;;;:::i;4032:267:132:-;;;;;;;;;:::i;2994:55:14:-;;;;;;;;;:::i;5113:49::-;;;:::i;17759:177:132:-;;;;;;;;;:::i;:::-;;;;;;;;;21118:303;;;;;;;;;:::i;5183:349::-;;;;;;;;;:::i;11128:308::-;;;;;;;;;:::i;10643:324::-;;;;;;;;;:::i;11903:107::-;;;;;;;;;:::i;5340:45:14:-;;;:::i;4075:47::-;;;:::i;5175:29::-;;;:::i;:::-;;;;;;;;20707:303:132;;;;;;;;;:::i;14603:679::-;;;;;;;;;:::i;3781:57:14:-;;;;;;;;;:::i;3605:::-;;;;;;;;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;;;;:::i;1347:37::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1179:2749:132;;;;;;;;;:::i;5693:286::-;;;;;;;;;:::i;1437:48:14:-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;6853:69;;;;;;;;;:::i;10198:276:132:-;;;;;;;;;:::i;8517:268::-;;;;;;;;;:::i;6305:31:14:-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;;;;:::i;19690:337:132:-;;;;;;;;;:::i;22899:170::-;;;;;;;;;:::i;23072:77::-;;;:::i;20176:395::-;;;;;;;;;:::i;23370:122::-;;;:::i;12630:232::-;;;;;;;;;:::i;2626:29:14:-;;;:::i;21574:517:132:-;;;;;;;;;:::i;3490:47:14:-;;;:::i;4754:35::-;;;:::i;13156:1081:132:-;;;;;;;;;:::i;1351:98:142:-;;;;;;;;;:::i;22705:94:132:-;;;:::i;6447:60:14:-;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;22515:92:132:-;22588:15;;-1:-1:-1;;;;;22588:15:132;22515:92;:::o;8926:268::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;9031:6:132;9019:8;:18;;9011:45;;;;-1:-1:-1;;;9011:45:132;;;;;;;;;9079:17;;;9100:28;;;;9138:52;;9159:10;;9138:52;;;;9079:17;;9120:8;;9138:52;;;;;;;;;;161:1:99;8926:268:132;:::o;18819:126::-;-1:-1:-1;;;;;18897:30:132;;;18880:4;18897:30;;;:20;:30;;;;;;;:44;;;18819:126::o;1270:46:14:-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;9339:276:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;9446:6:132;9434:8;:18;;9426:45;;;;-1:-1:-1;;;9426:45:132;;;;;;;;;9494:19;;;9517:30;;;;9557:54;;9580:10;;9557:54;;;;9494:19;;9539:8;;9557:54;;6489:218;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;6599:9:132;;;-1:-1:-1;;;;;6612:23:132;;;-1:-1:-1;;;;;;6612:23:132;;;;;;6645:58;;6599:9;;;6666:10;;6645:58;;;;6599:9;;6624:11;;6645:58;;6768:81:14;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;9763:290:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;9873:6:132;9861:8;:18;;9853:45;;;;-1:-1:-1;;;9853:45:132;;;;;;;;;9921:23;;;9948:34;;;;9992:57;;10018:10;;9992:57;;;;9921:23;;9974:8;;9992:57;;3097:46:14;;;;:::o;19102:461:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;19218:35:132;19237:15;19218:18;:35::i;:::-;19210:78;;;;-1:-1:-1;;;19210:78:132;;;;;;;;;19340:33;;;-1:-1:-1;;;;;19377:51:132;;;-1:-1:-1;;;;;;19377:51:132;;;;;;;19438:121;;19340:33;;;;19525;;19340;;19475:10;;19438:121;;19293:44;;19438:121;161:1:99;19102:461:132;:::o;3969:32:14:-;;;;:::o;16695:691:132:-;141:5:99;;16816:4:132;;141:5:99;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;16848:14:132;;-1:-1:-1;;;;;16848:14:132;16834:10;:28;16826:53;;;;-1:-1:-1;;;16826:53:132;;;;;;;;;-1:-1:-1;;;;;16938:29:132;;16884:22;16938:29;;;:22;:29;;;;;;16909:6;;16975:24;;;16971:64;;;17023:7;17006:24;;16971:64;17042:19;17038:47;;17075:5;17068:12;;;;;;17038:47;17121:27;:7;17133:14;17121:27;:11;:27;:::i;:::-;-1:-1:-1;;;;;17089:29:132;;;;;;:22;:29;;;;;;;;:59;;;;17184:22;:29;;;;:49;;17218:14;17184:49;:33;:49;:::i;:::-;-1:-1:-1;;;;;17152:29:132;;;;;;:22;:29;;;;;:81;;;;17238:52;;17265:8;17275:14;17238:52;:26;:52;:::i;:::-;17341:8;-1:-1:-1;;;;;17300:66:132;17334:5;-1:-1:-1;;;;;17300:66:132;17322:10;-1:-1:-1;;;;;17300:66:132;;17351:14;17300:66;;;;;;;;;;;;;;;17378:4;17371:11;;;;161:1:99;16695:691:132;;;;;:::o;1527:65:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;12140:195:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;12238:11:132;;;12253:22;;;;12285:46;;12300:10;;12285:46;;;;12238:11;;12267:8;;12285:46;;18071:280;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;18206:17:132;;:29;;18228:6;18206:29;:21;:29;:::i;:::-;18186:17;:49;18274:20;;18267:80;;-1:-1:-1;;;;;18274:20:132;18313:10;18333:4;18340:6;18267:80;:45;:80;:::i;:::-;18071:280;:::o;22802:94::-;22876:16;;22802:94;:::o;4925:48:14:-;;;;;;;;;;;;;:::o;18506:148:132:-;18585:16;18614:36;:12;18637:5;18644;18614:36;:22;:36;:::i;:::-;18607:43;;18506:148;;;;;:::o;1744:69:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;23152:107:132:-;23232:23;;23152:107;:::o;2717:41:14:-;;;;:::o;22610:92:132:-;22683:15;;-1:-1:-1;;;;;22683:15:132;22610:92;:::o;4649:359::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;4752:39:132;4771:19;4752:18;:39::i;:::-;4744:84;;;;-1:-1:-1;;;4744:84:132;;;;;;;;;4863:16;;;-1:-1:-1;;;;;4883:38:132;;;-1:-1:-1;;;;;;4883:38:132;;;;;;;4931:73;;4863:16;;;4883:38;4863:16;;4951:10;;4931:73;;4833:27;;4931:73;161:1:99;4649:359:132;:::o;4832:37:14:-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;22310:202:132:-;-1:-1:-1;;;;;22456:34:132;;;22414:29;22456:34;;;:14;:34;;;;;;;;:52;;;;;;;;;;;;;22310:202::o;6928:831::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;7047:29:132;;;7039:56;;;;-1:-1:-1;;;7039:56:132;;;;;;;;;7105:9;7100:656;7120:16;;;7100:656;;;7168:6;;7175:1;7168:9;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7156:21:132;:5;;7162:1;7156:8;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7156:21:132;;;7148:47;;;;-1:-1:-1;;;7148:47:132;;;;;;;;;7228:1;7208:5;;7214:1;7208:8;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7208:22:132;;;7200:44;;;;-1:-1:-1;;;7200:44:132;;;;;;;;;7278:1;7257:6;;7264:1;7257:9;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7257:23:132;;;:71;;;-1:-1:-1;7326:1:132;7284:20;7326:1;7305:5;;7311:1;7305:8;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7284:30:132;;;;;;;;;;;;;;-1:-1:-1;7284:30:132;;;:44;;7257:71;7249:99;;;;-1:-1:-1;;;7249:99:132;;;;;;;;;7378:1;7357:6;;7364:1;7357:9;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7357:23:132;;7353:344;;;7451:1;7388:20;:52;7409:20;:30;7430:5;;7436:1;7430:8;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7409:30:132;;;;;;;;;;;;;;;;;-1:-1:-1;7409:30:132;;;;;;7388:52;;;;;;;;;;;;;;;:65;;-1:-1:-1;;;;;;7388:65:132;;;;;;;;;;;7459:20;-1:-1:-1;7480:5:132;;7486:1;7480:8;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7459:30:132;;;;;;;;;;;;;;-1:-1:-1;7459:30:132;:43;;-1:-1:-1;;;;;;7459:43:132;;;;;;;;;;;7508:36;7535:5;;7541:1;7535:8;;;;;;;;;;;;;;;;;;;;;;7508:12;;:36;:26;:36;:::i;:::-;;7353:344;;;7595:6;;7602:1;7595:9;;;;;;;;;;;;;;;;;;;;;;7562:20;:30;7583:5;;7589:1;7583:8;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7562:30:132;;;;;;;;;;;;;;-1:-1:-1;7562:30:132;:42;;-1:-1:-1;;;;;;7562:42:132;;;;;;;;;;;7644:5;;7650:1;7644:8;;;;;;;;;;;;;;;;;;;;;;7610:20;:31;7631:6;;7638:1;7631:9;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7610:31:132;;;;;;;;;;;;;;-1:-1:-1;7610:31:132;:42;;-1:-1:-1;;;;;;7610:42:132;;;;;;;;;;;7658:33;7682:5;;7688:1;7682:8;;;;;;;;;;;;;;;;;;;;;;7658:12;;:33;:23;:33;:::i;:::-;;7353:344;7741:6;;7748:1;7741:9;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7707:44:132;7731:5;;7737:1;7731:8;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7707:44:132;7719:10;-1:-1:-1;;;;;7707:44:132;;;;;;;;;;;7138:3;;7100:656;;;;6928:831;;;;:::o;1898:76:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;4302:344:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;4403:38:132;4422:18;4403;:38::i;:::-;4395:84;;;;-1:-1:-1;;;4395:84:132;;;;;;;;;4510:15;;;-1:-1:-1;;;;;4529:36:132;;;-1:-1:-1;;;;;;4529:36:132;;;;;;;4575:67;;4510:15;;;4529:36;4510:15;;4594:10;;4575:67;;4484:23;;4575:67;161:1:99;4302:344:132;:::o;1087:24:14:-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;15648:679:132:-;141:5:99;;15767:4:132;;141:5:99;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;15799:14:132;;-1:-1:-1;;;;;15799:14:132;15785:10;:28;15777:53;;;;-1:-1:-1;;;15777:53:132;;;;;;;;;-1:-1:-1;;;;;15889:27:132;;15835:22;15889:27;;;:20;:27;;;;;;15860:6;;15924:24;;;15920:64;;;15972:7;15955:24;;15920:64;15991:19;15987:47;;16024:5;16017:12;;;;;;15987:47;16068:27;:7;16080:14;16068:27;:11;:27;:::i;:::-;-1:-1:-1;;;;;16038:27:132;;;;;;:20;:27;;;;;;;;:57;;;;16129:20;:27;;;;:47;;16161:14;16129:47;:31;:47;:::i;:::-;-1:-1:-1;;;;;16099:27:132;;;;;;:20;:27;;;;;:77;;;;16181:52;;16208:8;16218:14;16181:52;:26;:52;:::i;:::-;16282:8;-1:-1:-1;;;;;16243:64:132;16275:5;-1:-1:-1;;;;;16243:64:132;16263:10;-1:-1:-1;;;;;16243:64:132;;16292:14;16243:64;;;;;;;6121:220;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;6231:10:132;;;-1:-1:-1;;;;;6245:24:132;;;-1:-1:-1;;;;;;6245:24:132;;;;;;6279:58;;6231:10;;;6300;;6279:58;;;;6231:10;;6258:11;;6279:58;;1012:25:14;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;11564:113:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;11647:15:132;:26;11564:113::o;7007:17:14:-;;;;;;:::o;8041:335:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;8165:30:132;;;8157:57;;;;-1:-1:-1;;;8157:57:132;;;;;;;;;8224:9;8219:154;8239:16;;;8219:154;;;8295:7;;8303:1;8295:10;;;;;;;;;;;;;;;;;;;;;;8267:15;:25;8283:5;;8289:1;8283:8;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8267:25:132;;;;;;;;;;;;-1:-1:-1;8267:25:132;:38;;-1:-1:-1;;8267:38:132;;;;;;;;;;8347:5;;8353:1;8347:8;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8316:52:132;8335:10;8316:52;8357:7;;8365:1;8357:10;;;;;;;;;;;;;;;;;;;;;;8316:52;;;;;;;;;;;;;;;8257:3;;8219:154;;851:68:142;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;4032:267:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;4160:15:132;;;-1:-1:-1;;;;;4179:36:132;;;-1:-1:-1;;;;;;4179:36:132;;;;;;;4225:70;;4160:15;;;4179:36;4160:15;;4244:10;;4225:70;;4131:26;;4225:70;161:1:99;4032:267:132;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;17759:177:132:-;17866:7;17875:4;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;17892:40:132;17915:8;17925:6;17892:22;:40::i;:::-;17885:47;;;;161:1:99;17759:177:132;;;;;:::o;21118:303::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;21229:6:132;21212:13;:23;;21204:58;;;;-1:-1:-1;;;21204:58:132;;;;;;;;;21294:16;;;21314:32;;;;21356:61;;21373:10;;21356:61;;;;21294:16;;21333:13;;21356:61;;5183:349;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;5311:4:132;5294:13;:21;;5286:48;;;;-1:-1:-1;;;5286:48:132;;;;;;;;;5363:30;;;5397:46;;;;5453:75;;5487:10;;5453:75;;;;5363:30;;5430:13;;5453:75;;11128:308;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;11243:6:132;11231:8;:18;;11223:45;;;;-1:-1:-1;;;11223:45:132;;;;;;;;;11291:27;;;11322:38;;;;11370:62;;11401:10;;11370:62;;;;11291:27;;11352:8;;11370:62;;10643:324;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;10762:6:132;10750:8;:18;;10742:45;;;;-1:-1:-1;;;10742:45:132;;;;;;;;;10810:31;;;10845:42;;;;10897:66;;10932:10;;10897:66;;;;10810:31;;10879:8;;10897:66;;11903:107;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;11983:12:132;:23;11903:107::o;5340:45:14:-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;20707:303:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;20826:1:132;20808:15;:19;20800:51;;;;-1:-1:-1;;;20800:51:132;;;;;;;;;20875:18;;;20897:36;;;;20943:63;;20965:10;;20943:63;;;;20875:18;;20918:15;;20943:63;;14603:679;141:5:99;;14722:4:132;;141:5:99;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;14754:14:132;;-1:-1:-1;;;;;14754:14:132;14740:10;:28;14732:53;;;;-1:-1:-1;;;14732:53:132;;;;;;;;;-1:-1:-1;;;;;14844:27:132;;14790:22;14844:27;;;:20;:27;;;;;;14815:6;;14879:24;;;14875:64;;;14927:7;14910:24;;14875:64;14946:19;14942:47;;14979:5;14972:12;;;;;;14942:47;15023:27;:7;15035:14;15023:27;:11;:27;:::i;:::-;-1:-1:-1;;;;;14993:27:132;;;;;;:20;:27;;;;;;;;:57;;;;15084:20;:27;;;;:47;;15116:14;15084:47;:31;:47;:::i;:::-;-1:-1:-1;;;;;15054:27:132;;;;;;:20;:27;;;;;:77;;;;15136:52;;15163:8;15173:14;15136:52;:26;:52;:::i;:::-;15237:8;-1:-1:-1;;;;;15198:64:132;15230:5;-1:-1:-1;;;;;15198:64:132;15218:10;-1:-1:-1;;;;;15198:64:132;;15247:14;15198:64;;;;;;;3781:57:14;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1179:2749:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;1238:33:132;1274:48;;;:12;:48;;;;-1:-1:-1;;;;;1274:48:132;;1326:54;;1373:6;1326:10;:54::i;:::-;1384;-1:-1:-1;;;1431:6:132;1384:10;:54::i;:::-;1442:45;-1:-1:-1;;;1480:6:132;1442:10;:45::i;:::-;1491:52;-1:-1:-1;;;1536:6:132;1491:10;:52::i;:::-;1547:54;-1:-1:-1;;;1594:6:132;1547:10;:54::i;:::-;1605;-1:-1:-1;;;1652:6:132;1605:10;:54::i;:::-;1663:56;-1:-1:-1;;;1712:6:132;1663:10;:56::i;:::-;1723:59;-1:-1:-1;;;1775:6:132;1723:10;:59::i;:::-;1786:56;-1:-1:-1;;;1835:6:132;1786:10;:56::i;:::-;1846:68;-1:-1:-1;;;1907:6:132;1846:10;:68::i;:::-;1918:64;-1:-1:-1;;;1975:6:132;1918:10;:64::i;:::-;1986:52;-1:-1:-1;;;2031:6:132;1986:10;:52::i;:::-;2042:49;-1:-1:-1;;;2084:6:132;2042:10;:49::i;:::-;2095:48;-1:-1:-1;;;2136:6:132;2095:10;:48::i;:::-;2147:51;-1:-1:-1;;;2191:6:132;2147:10;:51::i;:::-;2202:46;-1:-1:-1;;;2241:6:132;2202:10;:46::i;:::-;2252:53;-1:-1:-1;;;2298:6:132;2252:10;:53::i;:::-;2309;-1:-1:-1;;;2355:6:132;2309:10;:53::i;:::-;2366:55;-1:-1:-1;;;2414:6:132;2366:10;:55::i;:::-;2425;-1:-1:-1;;;2473:6:132;2425:10;:55::i;:::-;2484:54;-1:-1:-1;;;2531:6:132;2484:10;:54::i;:::-;2542:50;-1:-1:-1;;;2585:6:132;2542:10;:50::i;:::-;2596:44;-1:-1:-1;;;2633:6:132;2596:10;:44::i;:::-;2644:70;-1:-1:-1;;;2707:6:132;2644:10;:70::i;:::-;2718:47;-1:-1:-1;;;2758:6:132;2718:10;:47::i;:::-;2769:57;-1:-1:-1;;;2819:6:132;2769:10;:57::i;:::-;2830:55;-1:-1:-1;;;2878:6:132;2830:10;:55::i;:::-;2889:50;-1:-1:-1;;;2932:6:132;2889:10;:50::i;:::-;2943:51;-1:-1:-1;;;2987:6:132;2943:10;:51::i;:::-;2998:58;-1:-1:-1;;;3049:6:132;2998:10;:58::i;:::-;3060:52;-1:-1:-1;;;3105:6:132;3060:10;:52::i;:::-;3116:53;-1:-1:-1;;;3162:6:132;3116:10;:53::i;:::-;3173:67;-1:-1:-1;;;3233:6:132;3173:10;:67::i;:::-;3244:51;-1:-1:-1;;;3288:6:132;3244:10;:51::i;:::-;3299:52;-1:-1:-1;;;3344:6:132;3299:10;:52::i;:::-;3355;-1:-1:-1;;;3400:6:132;3355:10;:52::i;:::-;3411:53;-1:-1:-1;;;3457:6:132;3411:10;:53::i;:::-;3468;-1:-1:-1;;;3514:6:132;3468:10;:53::i;:::-;3525:46;-1:-1:-1;;;3564:6:132;3525:10;:46::i;:::-;3575:50;-1:-1:-1;;;3618:6:132;3575:10;:50::i;:::-;3629:59;-1:-1:-1;;;3681:6:132;3629:10;:59::i;:::-;3692:67;-1:-1:-1;;;3752:6:132;3692:10;:67::i;:::-;3763;-1:-1:-1;;;3823:6:132;3763:10;:67::i;:::-;-1:-1:-1;;;3897:6:132;-1:-1:-1;;;;;3839:85:132;3870:25;-1:-1:-1;;;;;3839:85:132;;;;;;;;;;;1058:1:142;1179:2749:132;:::o;5693:286::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;5824:20:132;;;5848:38;;;;5896:79;;5930:10;;5896:79;;;;5824:20;;5871:15;;5896:79;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;10198:276:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;10305:6:132;10293:8;:18;;10285:45;;;;-1:-1:-1;;;10285:45:132;;;;;;;;;10353:19;;;10376:30;;;;10416:54;;10439:10;;10416:54;;;;10353:19;;10398:8;;10416:54;;8517:268;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;8622:6:132;8610:8;:18;;8602:45;;;;-1:-1:-1;;;8602:45:132;;;;;;;;;8670:17;;;8691:28;;;;8729:52;;8750:10;;8729:52;;;;8670:17;;8711:8;;8729:52;;6305:31:14;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;19690:337:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;19785:37:132;19804:17;19785:18;:37::i;:::-;19777:82;;;;-1:-1:-1;;;19777:82:132;;;;;;;;;19896:10;;;-1:-1:-1;;;;;19911:43:132;;;-1:-1:-1;;;;;;19911:43:132;;;;;;;19964:59;;19896:10;;;19911:43;19896:10;;19978;;19964:59;;19864:21;;19964:59;161:1:99;19690:337:132;:::o;22899:170::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;22975:5:132;;;;22965:15;;;;;;;22957:40;;;;-1:-1:-1;;;22957:40:132;;;;;;;;;23001:5;:14;;-1:-1:-1;;23001:14:132;;;;;;;;;;;23024:41;;23001:14;;;23037:10;;23024:41;;-1:-1:-1;;23024:41:132;22899:170;:::o;23072:77::-;23140:5;;;;23072:77;:::o;20176:395::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;20285:41:132;20304:21;20285:18;:41::i;:::-;20277:90;;;;-1:-1:-1;;;20277:90:132;;;;;;;;;20406:20;;;-1:-1:-1;;;;;20430:44:132;;;-1:-1:-1;;;;;;20430:44:132;;;;;;;20484:83;;20406:20;;;20430:44;20406:20;;20508:10;;20484:83;;20372:31;;20484:83;161:1:99;20176:395:132;:::o;23370:122::-;23458:30;;23370:122;:::o;12630:232::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;12741:14:132;;;-1:-1:-1;;;;;12759:30:132;;;-1:-1:-1;;;;;;12759:30:132;;;;;;;12799:59;;12741:14;;;12759:30;12741:14;;12817:10;;12799:59;;12717:21;;12799:59;161:1:99;12630:232:132;:::o;2626:29:14:-;;;-1:-1:-1;;;;;2626:29:14;;:::o;21574:517:132:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;21789:7:132;21764:21;:32;;21756:75;;;;-1:-1:-1;;;21756:75:132;;;;;;;;;-1:-1:-1;;;;;21871:27:132;;;21836:32;21871:27;;;:14;:27;;;;;;;;:38;;;;;;;;;;;;;;;;21913:62;;;;21985:102;;21871:38;;;:27;22003:10;;21985:102;;;;21871:38;;21913:62;;21985:102;;;;;;;;;;161:1:99;21574:517:132;;;:::o;3490:47:14:-;;;;:::o;4754:35::-;;;;:::o;13156:1081:132:-;141:5:99;;13243:7:132;;141:5:99;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;13278:14:132;;-1:-1:-1;;;;;13278:14:132;13264:10;:28;13256:53;;;;-1:-1:-1;;;13256:53:132;;;;;;;;;-1:-1:-1;;;;;13339:27:132;;13314:22;13339:27;;;:20;:27;;;;;;13374:18;;13370:147;;-1:-1:-1;;;;;13399:27:132;;13429:1;13399:27;;;:20;:27;;;;;;;;:31;;;13465:20;:27;;;;;;:47;;13497:14;13465:47;:31;:47;:::i;:::-;-1:-1:-1;;;;;13435:27:132;;;;;;:20;:27;;;;;:77;13370:147;-1:-1:-1;;;;;13546:27:132;;13521:22;13546:27;;;:20;:27;;;;;;13581:18;;13577:147;;-1:-1:-1;;;;;13606:27:132;;13636:1;13606:27;;;:20;:27;;;;;;;;:31;;;13672:20;:27;;;;;;:47;;13704:14;13672:47;:31;:47;:::i;:::-;-1:-1:-1;;;;;13642:27:132;;;;;;:20;:27;;;;;:77;13577:147;-1:-1:-1;;;;;13755:29:132;;13728:24;13755:29;;;:22;:29;;;;;;13792:20;;13788:157;;-1:-1:-1;;;;;13819:29:132;;13851:1;13819:29;;;:22;:29;;;;;;;;:33;;;13889:22;:29;;;;;;:51;;13923:16;13889:51;:33;:51;:::i;:::-;-1:-1:-1;;;;;13857:29:132;;;;;;:22;:29;;;;;:83;13788:157;13949:14;13966:56;14005:16;13966:34;:14;13985;13966:34;:18;:34;:::i;:::-;:38;:56;:38;:56;:::i;:::-;13949:73;-1:-1:-1;14030:11:132;14026:40;;14055:6;-1:-1:-1;14048:13:132;;-1:-1:-1;;;14048:13:132;14026:40;14070:44;-1:-1:-1;;;;;14070:26:132;;14097:8;14107:6;14070:44;:26;:44;:::i;:::-;14156:8;-1:-1:-1;;;;;14124:91:132;14149:5;-1:-1:-1;;;;;14124:91:132;14137:10;-1:-1:-1;;;;;14124:91:132;;14166:14;14182;14198:16;14124:91;;;;;;;;;;;;;;;;;14227:6;13156:1081;-1:-1:-1;;;;;;13156:1081:132:o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;22705:94:132:-;22779:16;;-1:-1:-1;;;;;22779:16:132;22705:94;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;1201:125:145:-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;654:174:144;765:58;;739:85;;758:5;;-1:-1:-1;;;788:23:144;765:58;;813:2;;817:5;;765:58;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;765:58:144;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;765:58:144;;;179:29:-1;;;;160:49;;;739:18:144;:85::i;:::-;654:174;;;:::o;831:204::-;962:68;;936:95;;955:5;;-1:-1:-1;;;985:27:144;962:68;;1014:4;;1020:2;;1024:5;;962:68;;;;936:95;831:204;;;;:::o;4043:467:95:-;4148:23;4191:13;;;4216:12;;;;4208:42;;;;-1:-1:-1;;;4208:42:95;;;;;;;;;4260:10;;;:17;:23;-1:-1:-1;4260:49:95;;4306:3;4260:49;;;4286:10;;;:17;4260:49;4254:55;-1:-1:-1;4317:8:95;;;:24;;;4338:3;4329:5;:12;;4317:24;4313:53;;;-1:-1:-1;4348:13:95;;4313:53;4399:5;4393:3;:11;4379:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4379:26:95;;4370:35;;4414:9;4409:81;4435:5;4429:3;:11;4425:1;:15;4409:81;;;4464:3;:10;;4479:5;4475:1;:9;4464:21;;;;;;;;;;;;;;;;4452:6;4459:1;4452:9;;;;;;;;;;;;;;;;;:33;4442:3;;4409:81;;;-1:-1:-1;;4043:467:95;;;;;:::o;1719:186::-;1803:4;1853:9;1876:25;1890:3;1853:9;1876:13;:25::i;924:180::-;1005:4;1055:9;1078:22;1089:3;1055:9;1078:10;:22::i;780:87:137:-;853:10;780:87;:::o;865:503:100:-;1027:17;;949:7;;;;993:6;;1052:29;;;1048:74;;;1105:12;1088:29;;1048:74;1129:19;1125:71;;-1:-1:-1;;1163:20:100;;-1:-1:-1;;;;;1163:20:100;;-1:-1:-1;1163:20:100;;-1:-1:-1;1155:36:100;;1125:71;1220:32;:12;1237:14;1220:32;:16;:32;:::i;:::-;1200:17;:52;1264:20;;1257:67;;-1:-1:-1;;;;;1264:20:100;1299:8;1309:14;1257:67;:41;:67;:::i;:::-;-1:-1:-1;;1337:20:100;;-1:-1:-1;;;;;1337:20:100;;;;-1:-1:-1;865:503:100;-1:-1:-1;;;865:503:100:o;7574:230:14:-;-1:-1:-1;;;;;;7635:17:14;;;;;;:12;:17;;;;;:26;;-1:-1:-1;;;;;;7635:26:14;-1:-1:-1;;;;;7635:26:14;;;;;;;;7670:20;7666:135;;7697:40;:15;-1:-1:-1;;;;;;7724:12:14;;7697:40;:26;:40;:::i;:::-;;7666:135;;;7753:43;:15;-1:-1:-1;;;;;;7783:12:14;;7753:43;:29;:43;:::i;7666:135::-;7574:230;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;2564:999:144:-;3111:27;3119:5;-1:-1:-1;;;;;3111:25:144;;:27::i;:::-;3103:71;;;;-1:-1:-1;;;3103:71:144;;;;;;;;;3233:12;3247:23;3282:5;-1:-1:-1;;;;;3274:19:144;3294:4;3274:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3232:67:144;;;;3311:7;3303:52;;;;-1:-1:-1;;;3303:52:144;;;;;;;;;3364:17;;:21;3360:200;;3489:10;3478:30;;;;;;;;;;;;;;3470:85;;;;-1:-1:-1;;;3470:85:144;;;;;;;;2102:845:95;2182:4;2196:20;2205:3;2210:5;2196:8;:20::i;:::-;2192:752;;;2223:21;2247:16;;;;;;;;;;;2266:1;2292:10;;:17;-1:-1:-1;;2247:20:95;;;;2292:21;2428:26;;;2424:318;;2462:17;2482:3;:10;;2493:9;2482:21;;;;;;;;;;;;;;;;2462:41;;2607:9;2579:3;:10;;2590:13;2579:25;;;;;;;;;;;;;;;;;;;:37;;;;2669:20;;;;;;;;;2708:1;2692:17;;2669:40;;2424:318;2807:9;:16;;;;;;;;;;2800:23;2878:10;;;:16;;;;;;;;;;;;;;;;;;;;;;;;2907:4;2900:11;;;;;;2192:752;-1:-1:-1;2934:5:95;2927:12;;1293:212;1370:4;1385:20;1394:3;1399:5;1385:8;:20::i;:::-;1380:122;;-1:-1:-1;1431:10:95;;;;27::-1;;23:18;;;45:23;;;-1:-1;1431:22:95;;;;;;;;;;;;;1412:16;;;;;;;;;;;:41;1458:11;;3145:122;3225:4;3242:16;;;;;;;;;;;;:21;;;3145:122::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:352;;;290:3;283:4;275:6;271:17;267:27;257:2;;308:1;305;298:12;257:2;-1:-1;328:20;;368:18;357:30;;354:2;;;400:1;397;390:12;354:2;434:4;426:6;422:17;410:29;;485:3;477:4;469:6;465:17;455:8;451:32;448:41;445:2;;;502:1;499;492:12;892:124;956:20;;981:30;956:20;981:30;;1023:128;1098:13;;1116:30;1098:13;1116:30;;1158:130;1225:20;;1250:33;1225:20;1250:33;;1295:128;1361:20;;1386:32;1361:20;1386:32;;1567:241;;1671:2;1659:9;1650:7;1646:23;1642:32;1639:2;;;1687:1;1684;1677:12;1639:2;1722:1;1739:53;1784:7;1764:9;1739:53;;1815:366;;;1936:2;1924:9;1915:7;1911:23;1907:32;1904:2;;;1952:1;1949;1942:12;1904:2;1987:1;2004:53;2049:7;2029:9;2004:53;;;1994:63;;1966:97;2094:2;2112:53;2157:7;2148:6;2137:9;2133:22;2112:53;;;2102:63;;2073:98;1898:283;;;;;;2188:491;;;;2326:2;2314:9;2305:7;2301:23;2297:32;2294:2;;;2342:1;2339;2332:12;2294:2;2377:1;2394:53;2439:7;2419:9;2394:53;;;2384:63;;2356:97;2484:2;2502:53;2547:7;2538:6;2527:9;2523:22;2502:53;;;2492:63;;2463:98;2592:2;2610:53;2655:7;2646:6;2635:9;2631:22;2610:53;;;2600:63;;2571:98;2288:391;;;;;;2686:366;;;2807:2;2795:9;2786:7;2782:23;2778:32;2775:2;;;2823:1;2820;2813:12;2775:2;2858:1;2875:53;2920:7;2900:9;2875:53;;;2865:63;;2837:97;2965:2;2983:53;3028:7;3019:6;3008:9;3004:22;2983:53;;3432:678;;;;;3623:2;3611:9;3602:7;3598:23;3594:32;3591:2;;;3639:1;3636;3629:12;3591:2;3674:31;;3725:18;3714:30;;3711:2;;;3757:1;3754;3747:12;3711:2;3785:80;3857:7;3848:6;3837:9;3833:22;3785:80;;;3775:90;;;;3653:218;3930:2;3919:9;3915:18;3902:32;3954:18;3946:6;3943:30;3940:2;;;3986:1;3983;3976:12;3940:2;4014:80;4086:7;4077:6;4066:9;4062:22;4014:80;;;3585:525;;;;-1:-1;4004:90;-1:-1;;;;3585:525;4796:235;;4897:2;4885:9;4876:7;4872:23;4868:32;4865:2;;;4913:1;4910;4903:12;4865:2;4948:1;4965:50;5007:7;4987:9;4965:50;;5038:257;;5150:2;5138:9;5129:7;5125:23;5121:32;5118:2;;;5166:1;5163;5156:12;5118:2;5201:1;5218:61;5271:7;5251:9;5218:61;;5302:241;;5406:2;5394:9;5385:7;5381:23;5377:32;5374:2;;;5422:1;5419;5412:12;5374:2;5457:1;5474:53;5519:7;5499:9;5474:53;;5550:366;;;5671:2;5659:9;5650:7;5646:23;5642:32;5639:2;;;5687:1;5684;5677:12;5639:2;5722:1;5739:53;5784:7;5764:9;5739:53;;5923:239;;6026:2;6014:9;6005:7;6001:23;5997:32;5994:2;;;6042:1;6039;6032:12;5994:2;6077:1;6094:52;6138:7;6118:9;6094:52;;6417:366;;;6538:2;6526:9;6517:7;6513:23;6509:32;6506:2;;;6554:1;6551;6544:12;6506:2;6589:1;6606:53;6651:7;6631:9;6606:53;;6791:173;;6878:46;6920:3;6912:6;6878:46;;;-1:-1;;6953:4;6944:14;;6871:93;6972:113;7055:24;7073:5;7055:24;;;7050:3;7043:37;7037:48;;;7123:690;;7268:54;7316:5;7268:54;;;7335:86;7414:6;7409:3;7335:86;;;7328:93;;7442:56;7492:5;7442:56;;;7518:7;7546:1;7531:260;7556:6;7553:1;7550:13;7531:260;;;7623:6;7617:13;7644:63;7703:3;7688:13;7644:63;;;7637:70;;7724:60;7777:6;7724:60;;;7714:70;-1:-1;;7578:1;7571:9;7531:260;;;-1:-1;7804:3;;7247:566;-1:-1;;;;;7247:566;7821:104;7898:21;7913:5;7898:21;;7932:103;8005:24;8023:5;8005:24;;8162:356;;8290:38;8322:5;8290:38;;;8340:88;8421:6;8416:3;8340:88;;;8333:95;;8433:52;8478:6;8473:3;8466:4;8459:5;8455:16;8433:52;;;8497:16;;;;;8270:248;-1:-1;;8270:248;8525:168;8629:58;8681:5;8629:58;;8700:347;;8812:39;8845:5;8812:39;;;8863:71;8927:6;8922:3;8863:71;;;8856:78;;8939:52;8984:6;8979:3;8972:4;8965:5;8961:16;8939:52;;;9012:29;9034:6;9012:29;;;9003:39;;;;8792:255;-1:-1;;;8792:255;9055:305;;9215:66;9279:1;9274:3;9215:66;;;-1:-1;;;9294:29;;9351:2;9342:12;;9201:159;-1:-1;;9201:159;9369:319;;9529:67;9593:2;9588:3;9529:67;;;-1:-1;;;9609:42;;9679:2;9670:12;;9515:173;-1:-1;;9515:173;9697:332;;9857:67;9921:2;9916:3;9857:67;;;9957:34;9937:55;;10020:2;10011:12;;9843:186;-1:-1;;9843:186;10038:375;;10198:67;10262:2;10257:3;10198:67;;;10298:34;10278:55;;-1:-1;;;10362:2;10353:12;;10346:30;10404:2;10395:12;;10184:229;-1:-1;;10184:229;10422:327;;10582:67;10646:2;10641:3;10582:67;;;10682:29;10662:50;;10740:2;10731:12;;10568:181;-1:-1;;10568:181;10758:322;;10918:67;10982:2;10977:3;10918:67;;;-1:-1;;;10998:45;;11071:2;11062:12;;10904:176;-1:-1;;10904:176;11089:332;;11249:67;11313:2;11308:3;11249:67;;;11349:34;11329:55;;11412:2;11403:12;;11235:186;-1:-1;;11235:186;11430:370;;11590:67;11654:2;11649:3;11590:67;;;11690:34;11670:55;;-1:-1;;;11754:2;11745:12;;11738:25;11791:2;11782:12;;11576:224;-1:-1;;11576:224;11809:314;;11969:67;12033:2;12028:3;11969:67;;;-1:-1;;;12049:37;;12114:2;12105:12;;11955:168;-1:-1;;11955:168;12132:332;;12292:67;12356:2;12351:3;12292:67;;;12392:34;12372:55;;12455:2;12446:12;;12278:186;-1:-1;;12278:186;12473:314;;12633:67;12697:2;12692:3;12633:67;;;-1:-1;;;12713:37;;12778:2;12769:12;;12619:168;-1:-1;;12619:168;12796:330;;12956:67;13020:2;13015:3;12956:67;;;13056:32;13036:53;;13117:2;13108:12;;12942:184;-1:-1;;12942:184;13135:315;;13295:67;13359:2;13354:3;13295:67;;;-1:-1;;;13375:38;;13441:2;13432:12;;13281:169;-1:-1;;13281:169;13459:317;;13619:67;13683:2;13678:3;13619:67;;;-1:-1;;;13699:40;;13767:2;13758:12;;13605:171;-1:-1;;13605:171;13785:312;;13945:67;14009:2;14004:3;13945:67;;;-1:-1;;;14025:35;;14088:2;14079:12;;13931:166;-1:-1;;13931:166;14106:320;;14266:67;14330:2;14325:3;14266:67;;;-1:-1;;;14346:43;;14417:2;14408:12;;14252:174;-1:-1;;14252:174;14435:330;;14595:67;14659:2;14654:3;14595:67;;;14695:32;14675:53;;14756:2;14747:12;;14581:184;-1:-1;;14581:184;14774:313;;14934:67;14998:2;14993:3;14934:67;;;-1:-1;;;15014:36;;15078:2;15069:12;;14920:167;-1:-1;;14920:167;15096:379;;15256:67;15320:2;15315:3;15256:67;;;15356:34;15336:55;;-1:-1;;;15420:2;15411:12;;15404:34;15466:2;15457:12;;15242:233;-1:-1;;15242:233;15484:373;;15644:67;15708:2;15703:3;15644:67;;;15744:34;15724:55;;-1:-1;;;15808:2;15799:12;;15792:28;15848:2;15839:12;;15630:227;-1:-1;;15630:227;15866:312;;16026:67;16090:2;16085:3;16026:67;;;-1:-1;;;16106:35;;16169:2;16160:12;;16012:166;-1:-1;;16012:166;16187:331;;16347:67;16411:2;16406:3;16347:67;;;16447:33;16427:54;;16509:2;16500:12;;16333:185;-1:-1;;16333:185;16527:308;;16687:66;16751:1;16746:3;16687:66;;;-1:-1;;;16766:32;;16826:2;16817:12;;16673:162;-1:-1;;16673:162;16963:262;;17107:93;17196:3;17187:6;17107:93;;17232:213;17350:2;17335:18;;17364:71;17339:9;17408:6;17364:71;;17452:324;17598:2;17583:18;;17612:71;17587:9;17656:6;17612:71;;;17694:72;17762:2;17751:9;17747:18;17738:6;17694:72;;17783:435;17957:2;17942:18;;17971:71;17946:9;18015:6;17971:71;;;18053:72;18121:2;18110:9;18106:18;18097:6;18053:72;;;18136;18204:2;18193:9;18189:18;18180:6;18136:72;;18225:312;18365:2;18350:18;;18379:71;18354:9;18423:6;18379:71;;;18461:66;18523:2;18512:9;18508:18;18499:6;18461:66;;18544:324;18690:2;18675:18;;18704:71;18679:9;18748:6;18704:71;;;18786:72;18854:2;18843:9;18839:18;18830:6;18786:72;;18875:361;19043:2;19057:47;;;19028:18;;19118:108;19028:18;19212:6;19118:108;;19243:201;19355:2;19340:18;;19369:65;19344:9;19407:6;19369:65;;19451:983;19759:3;19744:19;;19774:71;19748:9;19818:6;19774:71;;;19856:66;19918:2;19907:9;19903:18;19894:6;19856:66;;;19933:72;20001:2;19990:9;19986:18;19977:6;19933:72;;;20016;20084:2;20073:9;20069:18;20060:6;20016:72;;;20099:73;20167:3;20156:9;20152:19;20143:6;20099:73;;;20183;20251:3;20240:9;20236:19;20227:6;20183:73;;;20267;20335:3;20324:9;20320:19;20311:6;20267:73;;;20351;20419:3;20408:9;20404:19;20395:6;20351:73;;;19730:704;;;;;;;;;;;;20441:1435;20863:3;20848:19;;20878:71;20852:9;20922:6;20878:71;;;20960:72;21028:2;21017:9;21013:18;21004:6;20960:72;;;21043;21111:2;21100:9;21096:18;21087:6;21043:72;;;21126:66;21188:2;21177:9;21173:18;21164:6;21126:66;;;21203:73;21271:3;21260:9;21256:19;21247:6;21203:73;;;21287;21355:3;21344:9;21340:19;21331:6;21287:73;;;21371;21439:3;21428:9;21424:19;21415:6;21371:73;;;21455;21523:3;21512:9;21508:19;21499:6;21455:73;;;21539;21607:3;21596:9;21592:19;21583:6;21539:73;;;21623;21691:3;21680:9;21676:19;21667:6;21623:73;;;21707:74;21776:3;21765:9;21761:19;21751:7;21707:74;;;21792;21861:3;21850:9;21846:19;21836:7;21792:74;;;20834:1042;;;;;;;;;;;;;;;;21883:255;22022:2;22007:18;;22036:92;22011:9;22101:6;22036:92;;22145:301;22283:2;22297:47;;;22268:18;;22358:78;22268:18;22422:6;22358:78;;22453:407;22644:2;22658:47;;;22629:18;;22719:131;22629:18;22719:131;;22867:407;23058:2;23072:47;;;23043:18;;23133:131;23043:18;23133:131;;23281:407;23472:2;23486:47;;;23457:18;;23547:131;23457:18;23547:131;;23695:407;23886:2;23900:47;;;23871:18;;23961:131;23871:18;23961:131;;24109:407;24300:2;24314:47;;;24285:18;;24375:131;24285:18;24375:131;;24523:407;24714:2;24728:47;;;24699:18;;24789:131;24699:18;24789:131;;24937:407;25128:2;25142:47;;;25113:18;;25203:131;25113:18;25203:131;;25351:407;25542:2;25556:47;;;25527:18;;25617:131;25527:18;25617:131;;25765:407;25956:2;25970:47;;;25941:18;;26031:131;25941:18;26031:131;;26179:407;26370:2;26384:47;;;26355:18;;26445:131;26355:18;26445:131;;26593:407;26784:2;26798:47;;;26769:18;;26859:131;26769:18;26859:131;;27007:407;27198:2;27212:47;;;27183:18;;27273:131;27183:18;27273:131;;27421:407;27612:2;27626:47;;;27597:18;;27687:131;27597:18;27687:131;;27835:407;28026:2;28040:47;;;28011:18;;28101:131;28011:18;28101:131;;28249:407;28440:2;28454:47;;;28425:18;;28515:131;28425:18;28515:131;;28663:407;28854:2;28868:47;;;28839:18;;28929:131;28839:18;28929:131;;29077:407;29268:2;29282:47;;;29253:18;;29343:131;29253:18;29343:131;;29491:407;29682:2;29696:47;;;29667:18;;29757:131;29667:18;29757:131;;29905:407;30096:2;30110:47;;;30081:18;;30171:131;30081:18;30171:131;;30319:407;30510:2;30524:47;;;30495:18;;30585:131;30495:18;30585:131;;30733:407;30924:2;30938:47;;;30909:18;;30999:131;30909:18;30999:131;;31147:407;31338:2;31352:47;;;31323:18;;31413:131;31323:18;31413:131;;31561:407;31752:2;31766:47;;;31737:18;;31827:131;31737:18;31827:131;;31975:213;32093:2;32078:18;;32107:71;32082:9;32151:6;32107:71;;32195:324;32341:2;32326:18;;32355:71;32330:9;32399:6;32355:71;;32526:435;32700:2;32685:18;;32714:71;32689:9;32758:6;32714:71;;;32796:72;32864:2;32853:9;32849:18;32840:6;32796:72;;32968:659;33198:3;33183:19;;33213:71;33187:9;33257:6;33213:71;;;33295:72;33363:2;33352:9;33348:18;33339:6;33295:72;;;33378;33446:2;33435:9;33431:18;33422:6;33378:72;;;33461;33529:2;33518:9;33514:18;33505:6;33461:72;;;33544:73;33612:3;33601:9;33597:19;33588:6;33544:73;;;33169:458;;;;;;;;;33634:771;33892:3;33877:19;;33907:71;33881:9;33951:6;33907:71;;;33989:72;34057:2;34046:9;34042:18;34033:6;33989:72;;;34072;34140:2;34129:9;34125:18;34116:6;34072:72;;;34155;34223:2;34212:9;34208:18;34199:6;34155:72;;;34238:73;34306:3;34295:9;34291:19;34282:6;34238:73;;;34322;34390:3;34379:9;34375:19;34366:6;34322:73;;;33863:542;;;;;;;;;;34412:151;34536:4;34527:14;;34484:79;34570:137;34673:12;;34644:63;35087:178;35205:19;;;35254:4;35245:14;;35198:67;35274:144;35409:3;35387:31;-1:-1;35387:31;35598:91;;35660:24;35678:5;35660:24;;35696:85;35762:13;35755:21;;35738:43;35788:72;35850:5;35833:27;35867:144;-1:-1;;;;;;35928:78;;35911:100;36018:121;-1:-1;;;;;36080:54;;36063:76;36225:163;;36325:58;36377:5;36325:58;;36532:268;36597:1;36604:101;36618:6;36615:1;36612:13;36604:101;;;36685:11;;;36679:18;36666:11;;;36659:39;36640:2;36633:10;36604:101;;;36720:6;36717:1;36714:13;36711:2;;;-1:-1;;36785:1;36767:16;;36760:27;36581:219;36808:97;36896:2;36876:14;-1:-1;;36872:28;;36856:49;36913:117;36982:24;37000:5;36982:24;;;36975:5;36972:35;36962:2;;37021:1;37018;37011:12;37037:111;37103:21;37118:5;37103:21;;37155:117;37224:24;37242:5;37224:24;;37279:115;37347:23;37364:5;37347:23;"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "depositProtocolToken(uint256)": "3c56ae1b",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "getFeeRebatePercent()": "3f1ae8b9",
              "getLoanPoolsList(uint256,uint256)": "402946b9",
              "getLockedSOVAddress()": "f44942ec",
              "getProtocolAddress()": "07024c25",
              "getSovTokenAddress()": "4bcfe726",
              "getSpecialRebates(address,address)": "59d0d9ec",
              "getSwapExternalFeePercent()": "462096f3",
              "getTradingRebateRewardsBasisPoint()": "e4196480",
              "initialize(address)": "c4d66de8",
              "isLoanPool(address)": "115dd4b1",
              "isOwner()": "8f32d59b",
              "isProtocolPaused()": "dac88561",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "setAffiliateFeePercent(uint256)": "d21f8e24",
              "setAffiliateTradingTokenFeePercent(uint256)": "a32bb683",
              "setBorrowingFeePercent(uint256)": "17f8b788",
              "setFeesController(address)": "e8997dbd",
              "setLendingFeePercent(uint256)": "d238db22",
              "setLiquidationIncentivePercent(uint256)": "a2ab1ba1",
              "setLoanPool(address[],address[])": "59e49e0f",
              "setLockedSOVAddress(address)": "4dd053a5",
              "setMaxDisagreement(uint256)": "7fb202e5",
              "setMaxSwapSize(uint256)": "355a395f",
              "setMinReferralsToPayoutAffiliates(uint256)": "c7c333f0",
              "setPriceFeedContract(address)": "74626404",
              "setProtocolTokenAddress(address)": "e3ff9370",
              "setRebatePercent(uint256)": "9c53874f",
              "setRolloverBaseReward(uint256)": "b1558b72",
              "setSOVTokenAddress(address)": "6fbae33b",
              "setSourceBuffer(uint256)": "a6e7cc28",
              "setSovrynProtocolAddress(address)": "9254e6bf",
              "setSovrynSwapContractRegistryAddress(address)": "2d77d0d0",
              "setSpecialRebates(address,address,uint256)": "ea0e3930",
              "setSupportedTokens(address[],bool[])": "84eaa9e0",
              "setSwapExternalFeePercent(uint256)": "29f9986d",
              "setSwapsImplContract(address)": "1a81c191",
              "setTradingFeePercent(uint256)": "0c615ee9",
              "setTradingRebateRewardsBasisPoint(uint256)": "a1eb5683",
              "setWrbtcToken(address)": "d9eaaa64",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "togglePaused(bool)": "da541e09",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "withdrawBorrowingFees(address,address,uint256)": "32e4706f",
              "withdrawFees(address,address)": "f2555278",
              "withdrawLendingFees(address,address,uint256)": "b1ac89ca",
              "withdrawProtocolToken(address,uint256)": "96881857",
              "withdrawTradingFees(address,address,uint256)": "74326e8f",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "constructor": "Empty public constructor.",
              "depositProtocolToken(uint256)": {
                "notice": "The owner calls this function to deposit protocol tokens."
              },
              "getLoanPoolsList(uint256,uint256)": {
                "notice": "Get a list of loan pools."
              },
              "getSpecialRebates(address,address)": {
                "notice": "Get a rebate percent of specific pairs."
              },
              "getTradingRebateRewardsBasisPoint()": {
                "notice": "Get the basis point of trading rebate rewards."
              },
              "initialize(address)": {
                "notice": "Set function selectors on target contract."
              },
              "isLoanPool(address)": {
                "notice": "Check whether a token is a pool token."
              },
              "setAffiliateFeePercent(uint256)": {
                "notice": "Set the value of affiliateFeePercent storage variable."
              },
              "setAffiliateTradingTokenFeePercent(uint256)": {
                "notice": "Set the value of affiliateTradingTokenFeePercent storage variable."
              },
              "setBorrowingFeePercent(uint256)": {
                "notice": "Set the value of borrowingFeePercent storage variable."
              },
              "setFeesController(address)": {
                "notice": "Set the address of the feesController instance."
              },
              "setLendingFeePercent(uint256)": {
                "notice": "Set the value of lendingFeePercent storage variable."
              },
              "setLiquidationIncentivePercent(uint256)": {
                "notice": "Set the value of liquidationIncentivePercent storage variable."
              },
              "setLoanPool(address[],address[])": {
                "notice": "Set a list of loan pools and its tokens."
              },
              "setMaxDisagreement(uint256)": {
                "notice": "Set the value of the maximum swap spread."
              },
              "setMaxSwapSize(uint256)": {
                "notice": "Set the value of the swap size limit."
              },
              "setMinReferralsToPayoutAffiliates(uint256)": {
                "notice": "Update the minimum number of referrals to get affiliates rewards."
              },
              "setPriceFeedContract(address)": {
                "notice": "Set the address of the Price Feed instance."
              },
              "setProtocolTokenAddress(address)": {
                "notice": "Set the protocol token contract address."
              },
              "setRebatePercent(uint256)": {
                "notice": "Set the fee rebate percent."
              },
              "setRolloverBaseReward(uint256)": {
                "notice": "Set rollover base reward. It should be denominated in wrBTC."
              },
              "setSourceBuffer(uint256)": {
                "notice": "Set the value of the maximum source buffer."
              },
              "setSovrynProtocolAddress(address)": {
                "notice": "setting wrong address will break inter module functions calling should be set once"
              },
              "setSovrynSwapContractRegistryAddress(address)": {
                "notice": "Set the contract registry address of the SovrynSwap network."
              },
              "setSpecialRebates(address,address,uint256)": {
                "notice": "Set the special fee rebate percent for specific pair"
              },
              "setSupportedTokens(address[],bool[])": {
                "notice": "Set a list of supported tokens by populating the  storage supportedTokens mapping."
              },
              "setSwapExternalFeePercent(uint256)": {
                "notice": "Set the value of swapExtrernalFeePercent storage variable"
              },
              "setSwapsImplContract(address)": {
                "notice": "Set the address of the asset swapper instance."
              },
              "setTradingFeePercent(uint256)": {
                "notice": "Set the value of tradingFeePercent storage variable."
              },
              "setTradingRebateRewardsBasisPoint(uint256)": {
                "notice": "Set the basis point of trading rebate rewards (SOV), max value is 9999 (99.99% liquid, 0.01% vested)."
              },
              "setWrbtcToken(address)": {
                "notice": "Set the wrBTC contract address."
              },
              "withdrawBorrowingFees(address,address,uint256)": {
                "notice": "The feesController calls this function to withdraw fees accrued from borrowing operations."
              },
              "withdrawFees(address,address)": {
                "notice": "The feesController calls this function to withdraw fees from three sources: lending, trading and borrowing."
              },
              "withdrawLendingFees(address,address,uint256)": {
                "notice": "The feesController calls this function to withdraw fees accrued from lending operations."
              },
              "withdrawProtocolToken(address,uint256)": {
                "notice": "The owner calls this function to withdraw protocol tokens."
              },
              "withdrawTradingFees(address,address,uint256)": {
                "notice": "The feesController calls this function to withdraw fees accrued from trading operations."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains functions to customize protocol settings."
          }
        }
      },
      "contracts/modules/SwapsExternal.sol": {
        "SwapsExternal": {
          "abi": [
            {
              "inputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnRewardFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "ExternalSwap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "LoanSwap",
              "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": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayBorrowingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayLendingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultDeposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "VaultWithdraw",
              "type": "event"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                }
              ],
              "name": "checkPriceDivergence",
              "outputs": [],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmount",
                  "type": "uint256"
                }
              ],
              "name": "getSwapExpectedReturn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "returnToSender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "requiredDestTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "swapData",
                  "type": "bytes"
                }
              ],
              "name": "swapExternal",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "destTokenAmountReceived",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmountUsed",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "checkPriceDivergence(address,address,uint256,uint256)": {
                "params": {
                  "destToken": "The address of the destiny token instance.",
                  "minReturn": "The amount (max slippage) that will be compared to the swapsExpectedReturn.\t ",
                  "sourceToken": "The address of the source token instance.",
                  "sourceTokenAmount": "The amount of source tokens."
                }
              },
              "getSwapExpectedReturn(address,address,uint256)": {
                "details": "External wrapper that calls SwapsUser::_swapsExpectedReturn",
                "params": {
                  "destToken": "The address of the destiny token instance.",
                  "sourceToken": "The address of the source token instance.",
                  "sourceTokenAmount": "The amount of source tokens."
                },
                "return": "The expected return value."
              },
              "initialize(address)": {
                "params": {
                  "target": "The address of the target contract."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "swapExternal(address,address,address,address,uint256,uint256,uint256,bytes)": {
                "details": "External wrapper that calls SwapsUser::_swapsCall after turning potential incoming rBTC into wrBTC tokens.",
                "params": {
                  "destToken": "The address of the destiny token instance.",
                  "receiver": "The address of the recipient account.",
                  "requiredDestTokenAmount": "The amount of required destiny tokens.",
                  "returnToSender": "The address of the sender account.",
                  "sourceToken": "The address of the source token instance.",
                  "sourceTokenAmount": "The amount of source tokens.",
                  "swapData": "Additional swap data (not in use yet)."
                },
                "return": "destTokenAmountReceived The amount of destiny tokens sent.sourceTokenAmountUsed The amount of source tokens spent."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Swaps External contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d000006039553480156100a557600080fd5b5060006100b96001600160e01b0361010c16565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610110565b3390565b61303180620001206000396000f3fe60806040526004361061036b5760003560e01c80638f32d59b116101c6578063cb6eacd1116100f7578063edab119f11610095578063f589a3e71161006f578063f589a3e7146109af578063f6ddc8b3146109c4578063f706b1f2146109d9578063f851a440146109ee5761036b565b8063edab119f14610965578063f0e085f51461097a578063f2fde38b1461098f5761036b565b8063d473c2da116100d1578063d473c2da146108fa578063d485045e1461090f578063e321b5401461092f578063e8f62764146109505761036b565b8063cb6eacd114610891578063cd5d808d146108c5578063d288208c146108e55761036b565b8063b30643d911610164578063ba4861e91161013e578063ba4861e914610804578063bdee453c14610819578063c4a9081514610839578063c4d66de8146108715761036b565b8063b30643d9146107af578063b7e15241146107cf578063b9cffa3e146107ef5761036b565b8063acc04348116101a0578063acc0434814610741578063ae0a853014610756578063afe840091461076b578063b17da56e1461078d5761036b565b80638f32d59b146106f757806392d894f81461070c578063959083d31461072c5761036b565b80634f28cac2116102a05780637420ca3e1161023e5780637a8faeb8116102185780637a8faeb8146106985780638456cb59146106ad5780638da5cb5b146106c25780638dc48ba5146106d75761036b565b80637420ca3e14610659578063742e67981461066e57806378d849ed146106835761036b565b806362fff3f61161027a57806362fff3f6146105c857806368c4ac26146105f957806369455ddc146106195780636e663730146106395761036b565b80634f28cac21461056f578063569fc1fb14610584578063574442cc146105b35761036b565b80632f4707641161030d5780633fca506e116102e75780633fca506e146104fa5780634115a2b61461051a5780634203e3951461053a5780634699f8461461055a5761036b565b80632f470764146104a55780633432423c146104ba5780633452d2d4146104da5761036b565b80631b7bde74116103495780631b7bde7414610416578063218b39c61461044357806324cc5749146104635780632a324027146104905761036b565b8063065d810f146103995780630676c1b7146103d457806317548b79146103f6575b34801561037757600080fd5b5060405162461bcd60e51b815260040161039090612d95565b60405180910390fd5b3480156103a557600080fd5b506103b96103b4366004612428565b610a03565b6040516103cb96959493929190612e8b565b60405180910390f35b3480156103e057600080fd5b506103e9610a43565b6040516103cb9190612a27565b34801561040257600080fd5b506103e96104113660046124b3565b610a52565b34801561042257600080fd5b50610436610431366004612278565b610a6d565b6040516103cb9190612e15565b34801561044f57600080fd5b506103e961045e36600461225a565b610a8a565b34801561046f57600080fd5b5061048361047e36600461225a565b610aa5565b6040516103cb9190612b6e565b34801561049c57600080fd5b50610436610aba565b3480156104b157600080fd5b50610436610ac0565b3480156104c657600080fd5b506103b96104d5366004612428565b610ac6565b3480156104e657600080fd5b506104366104f536600461225a565b610b06565b34801561050657600080fd5b5061043661051536600461225a565b610b18565b34801561052657600080fd5b50610483610535366004612494565b610b2a565b34801561054657600080fd5b5061043661055536600461225a565b610b4a565b34801561056657600080fd5b50610436610b5c565b34801561057b57600080fd5b50610436610b62565b34801561059057600080fd5b506105a461059f366004612476565b610b68565b6040516103cb93929190612e31565b3480156105bf57600080fd5b50610436610b89565b3480156105d457600080fd5b506105e86105e3366004612278565b610b8f565b6040516103cb959493929190612e3f565b34801561060557600080fd5b5061048361061436600461225a565b610bc9565b34801561062557600080fd5b5061043661063436600461237a565b610bde565b34801561064557600080fd5b506103e961065436600461225a565b610bf5565b34801561066557600080fd5b506103e9610c10565b34801561067a57600080fd5b50610436610c1f565b34801561068f57600080fd5b506103e9610c25565b3480156106a457600080fd5b50610436610c34565b3480156106b957600080fd5b50610483610c3a565b3480156106ce57600080fd5b506103e9610c43565b3480156106e357600080fd5b506103e96106f236600461225a565b610c52565b34801561070357600080fd5b50610483610c6d565b34801561071857600080fd5b5061043661072736600461225a565b610c93565b34801561073857600080fd5b50610436610ca5565b34801561074d57600080fd5b50610436610cab565b34801561076257600080fd5b50610436610cb1565b34801561077757600080fd5b50610780610cb7565b6040516103cb9190612ca6565b34801561079957600080fd5b506107ad6107a83660046123c7565b610cc6565b005b3480156107bb57600080fd5b506104366107ca36600461225a565b610cfc565b3480156107db57600080fd5b506104366107ea36600461225a565b610d0e565b3480156107fb57600080fd5b506103e9610d20565b34801561081057600080fd5b506103e9610d2f565b34801561082557600080fd5b5061043661083436600461225a565b610d3e565b34801561084557600080fd5b50610859610854366004612476565b610d50565b6040516103cb9c9b9a99989796959493929190612bf3565b34801561087d57600080fd5b506107ad61088c36600461225a565b610dc2565b34801561089d57600080fd5b506108b16108ac366004612476565b610ea5565b6040516103cb989796959493929190612b7c565b3480156108d157600080fd5b506104366108e0366004612278565b610ef7565b3480156108f157600080fd5b506103e9610f14565b34801561090657600080fd5b50610436610f23565b34801561091b57600080fd5b5061043661092a36600461225a565b610f29565b61094261093d3660046122b2565b610f3b565b6040516103cb929190612e23565b34801561095c57600080fd5b506103e9611291565b34801561097157600080fd5b506104366112a0565b34801561098657600080fd5b506104366112a6565b34801561099b57600080fd5b506107ad6109aa36600461225a565b6112ac565b3480156109bb57600080fd5b506104366112dc565b3480156109d057600080fd5b506104366112e2565b3480156109e557600080fd5b506103e96112e8565b3480156109fa57600080fd5b506103e96112f7565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6000610beb848484611306565b90505b9392505050565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610c84611393565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b6000610cd3858585611306565b905081811015610cf55760405162461bcd60e51b815260040161039090612d45565b5050505050565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b610dca610c6d565b610de65760405162461bcd60e51b815260040161039090612d75565b63038c86d560e61b600081905260056020527fe705b9be7ab1128120df187531812b4c979d3ce42ed227d7df3b23e95341849e546001600160a01b031690610e2e9083611397565b610e3f631a51577760e21b83611397565b610e506358bed2b760e11b83611397565b6c14ddd85c1cd15e1d195c9b985b609a1b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b600080600160005414610f605760405162461bcd60e51b815260040161039090612db5565b6002600055603d5460ff1615610f885760405162461bcd60e51b815260040161039090612cc5565b85610fa55760405162461bcd60e51b815260040161039090612cd5565b610fb18a8a8887610cc6565b341561108e576001600160a01b038a16610fd457602d546001600160a01b031699505b602d546001600160a01b038b81169116146110015760405162461bcd60e51b815260040161039090612d55565b8534146110205760405162461bcd60e51b815260040161039090612d85565b602d60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b15801561107057600080fd5b505af1158015611084573d6000803e3d6000fd5b50505050506111bd565b6040516370a0823160e01b81528a906000906001600160a01b038316906370a08231906110bf903090600401612a27565b60206040518083038186803b1580156110d757600080fd5b505afa1580156110eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061110f91908101906124d1565b905061112c6001600160a01b038d1633308b63ffffffff61141316565b6111b881836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161115c9190612a27565b60206040518083038186803b15801561117457600080fd5b505afa158015611188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111ac91908101906124d1565b9063ffffffff61147416565b975050505b6040805160a0810182526001600160a01b03808d1682528b81166020808401919091528b821683850152908a166060808401919091523360808401528351908101845289815290810189905291820187905261121e916000808760016114bf565b8092508193505050886001600160a01b03168a6001600160a01b0316336001600160a01b03167f03d3f38d1a433bb469c160c1704d282fe2b74819ba8ec9c223e685dd2a0b05478486604051611275929190612e23565b60405180910390a4600160005590999098509650505050505050565b6014546001600160a01b031681565b601b5481565b60285481565b6112b4610c6d565b6112d05760405162461bcd60e51b815260040161039090612d75565b6112d9816116e4565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b60035460048054604051633f24927360e21b81526000936001600160a01b039081169363fc9249cc93611343938a938a938a939091169101612b03565b60206040518083038186803b15801561135b57600080fd5b505afa15801561136f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610beb91908101906124d1565b3390565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b038316908117909155156113f2576113ec600d6001600160e01b0319841663ffffffff61176616565b5061140f565b61140d600d6001600160e01b0319841663ffffffff6117ae16565b505b5050565b60405161146e9085906323b872dd60e01b9061143790879087908790602401612adb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261186f565b50505050565b60006114b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611954565b90505b92915050565b845160009081901515806114d65750602087015115155b6114f25760405162461bcd60e51b815260040161039090612da5565b602087015161150357865160208801525b6020870151875111156115285760405162461bcd60e51b815260040161039090612d35565b6000806000876115e55760408a01516115a4578515611559576115528a60005b6020020151611980565b905061156d565b61156a8a60005b60200201516119b0565b90505b801561159f5760808b01518b5161159091908b908e60015b6020020151856119d4565b895161159c9082611474565b8a525b6115e5565b85156115bc576115b58a6002611548565b90506115ca565b6115c78a6002611560565b90505b80156115e55760408a01516115df9082611b24565b60408b01525b8651156116045760405162461bcd60e51b815260040161039090612dc5565b61160e8b8b611b49565b60408c0151919450925061165a578951821461163c5760405162461bcd60e51b815260040161039090612df5565b801561165557611652828263ffffffff611b2416565b91505b6116d4565b60208a015182111561167e5760405162461bcd60e51b815260040161039090612d25565b60408a01518310156116a25760405162461bcd60e51b815260040161039090612ce5565b80156116d45760808b015160208c01516116c191908b908e6000611585565b6116d1838263ffffffff61147416565b92505b5090999098509650505050505050565b6001600160a01b03811661170a5760405162461bcd60e51b815260040161039090612cf5565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006117728383611c5b565b6117a657506001808301805480830180835560009283526020808420909201859055848352908590526040909120556114b9565b5060006114b9565b60006117ba8383611c5b565b156117a657600082815260208490526040902054600184015460001991820191018082146118325760008560010182815481106117f357fe5b906000526020600020015490508086600101848154811061181057fe5b6000918252602080832090910192909255918252869052604090206001830190555b6000848152602086905260408120556001850180548061184e57fe5b600190038181906000526020600020016000905590556001925050506114b9565b611881826001600160a01b0316611c70565b61189d5760405162461bcd60e51b815260040161039090612e05565b60006060836001600160a01b0316836040516118b99190612a1b565b6000604051808303816000865af19150503d80600081146118f6576040519150601f19603f3d011682016040523d82523d6000602084013e6118fb565b606091505b50915091508161191d5760405162461bcd60e51b815260040161039090612d15565b80511561146e57808060200190516119389190810190612458565b61146e5760405162461bcd60e51b815260040161039090612dd5565b600081848411156119785760405162461bcd60e51b81526004016103909190612cb4565b505050900390565b60006114b968056bc75e2d631000006119a4603e5485611cac90919063ffffffff16565b9063ffffffff611ce616565b60006114b968056bc75e2d631000006119a460185485611cac90919063ffffffff16565b808015611b1c576001600160a01b038681166000908152603360205260409020541615611a8a576001600160a01b03808716600090815260336020526040902054611a229116878684611d28565b5050611a87611a5568056bc75e2d63100000611a4960395485611cac90919063ffffffff16565b9063ffffffff611dc116565b6111ac611a7a68056bc75e2d63100000611a4960205487611cac90919063ffffffff16565b849063ffffffff61147416565b90505b6001600160a01b038416600090815260196020526040902054611ab3908263ffffffff611b2416565b6001600160a01b03808616600081815260196020526040908190209390935591518792918916907fb23479169712c443e6b00fb0cec3506a5f5926f541df4243d313e11c8c5c71ed90611b07908690612e15565b60405180910390a4611b1c8686868686611e03565b505050505050565b6000828201838110156114b65760405162461bcd60e51b815260040161039090612d05565b815160208084015160408086015160608781015187519588015188850151945160009889989497630957ba1160e21b97611b90979296919592949293919291602401612a35565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260035491519092506000916001600160a01b031690611be2908490612a1b565b600060405180830381855af49150503d8060008114611c1d576040519150601f19603f3d011682016040523d82523d6000602084013e611c22565b606091505b509250905080611c445760405162461bcd60e51b815260040161039090612de5565b602082015193506040820151925050509250929050565b60009081526020919091526040902054151590565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611ca457508115155b949350505050565b600082611cbb575060006114b9565b82820282848281611cc857fe5b04146114b65760405162461bcd60e51b815260040161039090612d65565b60006114b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061214e565b6031546040516306a688ff60e11b815260009182916001600160a01b0390911690630d4d11fe90611d63908990899089908990600401612a9d565b6040805180830381600087803b158015611d7c57600080fd5b505af1158015611d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611db491908101906124ef565b9097909650945050505050565b60006114b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612198565b602f546002546001600160a01b038581166000908152603c602090815260408083208885168452909152812054909392919091169015611e66576001600160a01b038087166000908152603c602090815260408083209389168352929052205491505b6037546000906060906001600160a01b038085169163d138f9a160e01b918b9116611ea468056bc75e2d63100000611a498c8b63ffffffff611cac16565b604051602401611eb693929190612adb565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611ef49190612a1b565b600060405180830381855afa9150503d8060008114611f2f576040519150601f19603f3d011682016040523d82523d6000602084013e611f34565b606091505b50915091506001821415611f4a57602081015194505b84156121425760375460385460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392611f86929116908990600401612b38565b602060405180830381600087803b158015611fa057600080fd5b505af1158015611fb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fd89190810190612458565b50603854603f546040516000926001600160a01b031691611fff918e918a91602401612b53565b60408051601f198184030181529181526020820180516001600160e01b0316630efe6a8b60e01b179052516120349190612a1b565b6000604051808303816000865af19150503d8060008114612071576040519150601f19603f3d011682016040523d82523d6000602084013e612076565b606091505b5050905080156120ed57601f54612093908763ffffffff611b2416565b601f55603754603f546040518c926001600160a01b0390811692908f16917ff41c644671512f1cda76abfe6038e3d7d526c1377a5a8c692f81703901db2150916120e0918b918d91612e31565b60405180910390a4612140565b603754603f546040518c926001600160a01b0390811692908f16917f483f67ea49f76ac15e15bbad68b52788ca47d50aef1e4acfe95e5e307e71081291612137918b918d91612e31565b60405180910390a45b505b50505050505050505050565b6000818361216f5760405162461bcd60e51b81526004016103909190612cb4565b508361217d57506000610bee565b600083600186038161218b57fe5b0460010195945050505050565b600081836121b95760405162461bcd60e51b81526004016103909190612cb4565b5060008385816121c557fe5b0495945050505050565b80356114b981612fbf565b80516114b981612fd3565b80356114b981612fdc565b80356114b981612fe5565b600082601f83011261220c57600080fd5b813561221f61221a82612f0c565b612ee5565b9150808252602083016020830185838301111561223b57600080fd5b612246838284612f7d565b50505092915050565b80516114b981612fdc565b60006020828403121561226c57600080fd5b6000611ca484846121cf565b6000806040838503121561228b57600080fd5b600061229785856121cf565b92505060206122a8858286016121cf565b9150509250929050565b600080600080600080600080610100898b0312156122cf57600080fd5b60006122db8b8b6121cf565b98505060206122ec8b828c016121cf565b97505060406122fd8b828c016121cf565b965050606061230e8b828c016121cf565b955050608061231f8b828c016121e5565b94505060a06123308b828c016121e5565b93505060c06123418b828c016121e5565b92505060e089013567ffffffffffffffff81111561235e57600080fd5b61236a8b828c016121fb565b9150509295985092959890939650565b60008060006060848603121561238f57600080fd5b600061239b86866121cf565b93505060206123ac868287016121cf565b92505060406123bd868287016121e5565b9150509250925092565b600080600080608085870312156123dd57600080fd5b60006123e987876121cf565b94505060206123fa878288016121cf565b935050604061240b878288016121e5565b925050606061241c878288016121e5565b91505092959194509250565b6000806040838503121561243b57600080fd5b600061244785856121cf565b92505060206122a8858286016121e5565b60006020828403121561246a57600080fd5b6000611ca484846121da565b60006020828403121561248857600080fd5b6000611ca484846121e5565b600080604083850312156124a757600080fd5b600061229785856121e5565b6000602082840312156124c557600080fd5b6000611ca484846121f0565b6000602082840312156124e357600080fd5b6000611ca4848461224f565b6000806040838503121561250257600080fd5b600061250e858561224f565b92505060206122a88582860161224f565b61252881612f46565b82525050565b61252881612f51565b61252881612f56565b600061254b82612f34565b6125558185612f38565b9350612565818560208601612f89565b9290920192915050565b61252881612f72565b600061258382612f34565b61258d8185612f3d565b935061259d818560208601612f89565b6125a681612fb5565b9093019392505050565b60006125bd600683612f3d565b6514185d5cd95960d21b815260200192915050565b60006125df601683612f3d565b750736f75726365546f6b656e416d6f756e74203d3d20360541b815260200192915050565b6000612611601b83612f3d565b7f696e73756666696369656e742073776170206c69717569646974790000000000815260200192915050565b600061264a602683612f3d565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000612692601b83612f3d565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006126cb602083612f3d565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000612704601383612f3d565b72737761702066696c6c20746f6f206c6172676560681b815260200192915050565b6000612733601c83612f3d565b7f736f75726365416d6f756e74206c6172676572207468616e206d617800000000815260200192915050565b600061276c601f83612f3d565b7f64657374546f6b656e416d6f756e74526563656976656420746f6f206c6f7700815260200192915050565b60006127a5601483612f3d565b730e6deeae4c6caa8ded6cadc40dad2e6dac2e8c6d60631b815260200192915050565b60006127d5602183612f3d565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000612818600c83612f3d565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000612840601a83612f3d565b7f736f75726365546f6b656e416d6f756e74206d69736d61746368000000000000815260200192915050565b6000612879601483612f3d565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b60006128a9602e83612f3d565b7f6d696e206f72206d617820736f7572636520746f6b656e20616d6f756e74206e81526d1959591cc81d1bc81899481cd95d60921b602082015260400192915050565b60006128f9600c83612f3d565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b6000612921600d83612f3d565b6c696e76616c696420737461746560981b815260200192915050565b600061294a602a83612f3d565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b6000612996600b83612f3d565b6a1cddd85c0819985a5b195960aa1b815260200192915050565b60006129bd601683612f3d565b751cddd85c081d1bdbc81b185c99d9481d1bc8199a5b1b60521b815260200192915050565b60006129ef601f83612f3d565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6000610bee8284612540565b602081016114b9828461251f565b60e08101612a43828a61251f565b612a50602083018961251f565b612a5d604083018861251f565b612a6a606083018761251f565b612a776080830186612537565b612a8460a0830185612537565b612a9160c0830184612537565b98975050505050505050565b60808101612aab828761251f565b612ab8602083018661251f565b612ac5604083018561251f565b612ad26060830184612537565b95945050505050565b60608101612ae9828661251f565b612af6602083018561251f565b611ca46040830184612537565b60808101612b11828761251f565b612b1e602083018661251f565b612b2b6040830185612537565b612ad2606083018461251f565b60408101612b46828561251f565b610bee6020830184612537565b60608101612b61828661251f565b612af66020830185612537565b602081016114b9828461252e565b6101008101612b8b828b612537565b612b98602083018a61252e565b612ba5604083018961251f565b612bb2606083018861251f565b612bbf608083018761251f565b612bcc60a0830186612537565b612bd960c0830185612537565b612be660e0830184612537565b9998505050505050505050565b6101808101612c02828f612537565b612c0f602083018e612537565b612c1c604083018d612537565b612c29606083018c61252e565b612c36608083018b612537565b612c4360a083018a612537565b612c5060c0830189612537565b612c5d60e0830188612537565b612c6b610100830187612537565b612c79610120830186612537565b612c8761014083018561251f565b612c9561016083018461251f565b9d9c50505050505050505050505050565b602081016114b9828461256f565b602080825281016114b68184612578565b602080825281016114b9816125b0565b602080825281016114b9816125d2565b602080825281016114b981612604565b602080825281016114b98161263d565b602080825281016114b981612685565b602080825281016114b9816126be565b602080825281016114b9816126f7565b602080825281016114b981612726565b602080825281016114b98161275f565b602080825281016114b981612798565b602080825281016114b9816127c8565b602080825281016114b98161280b565b602080825281016114b981612833565b602080825281016114b98161286c565b602080825281016114b98161289c565b602080825281016114b9816128ec565b602080825281016114b981612914565b602080825281016114b98161293d565b602080825281016114b981612989565b602080825281016114b9816129b0565b602080825281016114b9816129e2565b602081016114b98284612537565b60408101612b468285612537565b60608101612b618286612537565b60a08101612e4d8288612537565b612e5a6020830187612537565b612e676040830186612537565b612e746060830185612537565b612e816080830184612537565b9695505050505050565b60c08101612e998289612537565b612ea66020830188612537565b612eb36040830187612537565b612ec06060830186612537565b612ecd6080830185612537565b612eda60a0830184612537565b979650505050505050565b60405181810167ffffffffffffffff81118282101715612f0457600080fd5b604052919050565b600067ffffffffffffffff821115612f2357600080fd5b506020601f91909101601f19160190565b5190565b919050565b90815260200190565b60006114b982612f66565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b60006114b982612f46565b82818337506000910152565b60005b83811015612fa4578181015183820152602001612f8c565b8381111561146e5750506000910152565b601f01601f191690565b612fc881612f46565b81146112d957600080fd5b612fc881612f51565b612fc881612f56565b612fc881612f5956fea365627a7a7231582032c9ec4eaced0eacddcd9254ec8cf2d4e04c7e54a3d0d4726fe9202ee73454936c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0xA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0xB9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x10C AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x110 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x3031 DUP1 PUSH3 0x120 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x9AF JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x9C4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x9D9 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x9EE JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x965 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x97A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x98F JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xD473C2DA GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x8FA JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x90F JUMPI DUP1 PUSH4 0xE321B540 EQ PUSH2 0x92F JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x950 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x891 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x8C5 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x8E5 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xBA4861E9 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x804 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x819 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x839 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x871 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x7AF JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x7CF JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x7EF JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xACC04348 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x741 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x756 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x76B JUMPI DUP1 PUSH4 0xB17DA56E EQ PUSH2 0x78D JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x6F7 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x72C JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x4F28CAC2 GT PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x7420CA3E GT PUSH2 0x23E JUMPI DUP1 PUSH4 0x7A8FAEB8 GT PUSH2 0x218 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x698 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x6AD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6C2 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x6D7 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x659 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x66E JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x683 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x62FFF3F6 GT PUSH2 0x27A JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x5C8 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5F9 JUMPI DUP1 PUSH4 0x69455DDC EQ PUSH2 0x619 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x639 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x56F JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x584 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x5B3 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x2F470764 GT PUSH2 0x30D JUMPI DUP1 PUSH4 0x3FCA506E GT PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x53A JUMPI DUP1 PUSH4 0x4699F846 EQ PUSH2 0x55A JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x2F470764 EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x4DA JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x1B7BDE74 GT PUSH2 0x349 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x490 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3D4 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x3F6 JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D95 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B9 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2428 JUMP JUMPDEST PUSH2 0xA03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xA43 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2A27 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x411 CALLDATASIZE PUSH1 0x4 PUSH2 0x24B3 JUMP JUMPDEST PUSH2 0xA52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x431 CALLDATASIZE PUSH1 0x4 PUSH2 0x2278 JUMP JUMPDEST PUSH2 0xA6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2E15 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xA8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x47E CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xAA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2B6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xABA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xAC0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B9 PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2428 JUMP JUMPDEST PUSH2 0xAC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x4F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xB06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x515 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xB18 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x535 CALLDATASIZE PUSH1 0x4 PUSH2 0x2494 JUMP JUMPDEST PUSH2 0xB2A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x555 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xB4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xB5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xB62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5A4 PUSH2 0x59F CALLDATASIZE PUSH1 0x4 PUSH2 0x2476 JUMP JUMPDEST PUSH2 0xB68 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2E31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xB89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E8 PUSH2 0x5E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2278 JUMP JUMPDEST PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2E3F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x614 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xBC9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x625 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x634 CALLDATASIZE PUSH1 0x4 PUSH2 0x237A JUMP JUMPDEST PUSH2 0xBDE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x654 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xBF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC1F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC25 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC34 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xC3A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC43 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x6F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xC52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x703 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xC6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x727 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xC93 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xCA5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xCAB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x762 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xCB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x777 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x780 PUSH2 0xCB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2CA6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7AD PUSH2 0x7A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C7 JUMP JUMPDEST PUSH2 0xCC6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x7CA CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xCFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x7EA CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xD20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xD2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x834 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xD3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x845 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x859 PUSH2 0x854 CALLDATASIZE PUSH1 0x4 PUSH2 0x2476 JUMP JUMPDEST PUSH2 0xD50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2BF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7AD PUSH2 0x88C CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xDC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B1 PUSH2 0x8AC CALLDATASIZE PUSH1 0x4 PUSH2 0x2476 JUMP JUMPDEST PUSH2 0xEA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B7C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x8E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2278 JUMP JUMPDEST PUSH2 0xEF7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xF14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x92A CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xF29 JUMP JUMPDEST PUSH2 0x942 PUSH2 0x93D CALLDATASIZE PUSH1 0x4 PUSH2 0x22B2 JUMP JUMPDEST PUSH2 0xF3B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP3 SWAP2 SWAP1 PUSH2 0x2E23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x1291 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x12A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x12A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7AD PUSH2 0x9AA CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0x12AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x12DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x12E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x12E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x12F7 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBEB DUP5 DUP5 DUP5 PUSH2 0x1306 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC84 PUSH2 0x1393 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCD3 DUP6 DUP6 DUP6 PUSH2 0x1306 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xCF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0xDCA PUSH2 0xC6D JUMP JUMPDEST PUSH2 0xDE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D75 JUMP JUMPDEST PUSH4 0x38C86D5 PUSH1 0xE6 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xE705B9BE7AB1128120DF187531812B4C979D3CE42ED227D7DF3B23E95341849E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xE2E SWAP1 DUP4 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0xE3F PUSH4 0x1A515777 PUSH1 0xE2 SHL DUP4 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0xE50 PUSH4 0x58BED2B7 PUSH1 0xE1 SHL DUP4 PUSH2 0x1397 JUMP JUMPDEST PUSH13 0x14DDD85C1CD15E1D195C9B985B PUSH1 0x9A SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xF60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2DB5 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xF88 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2CC5 JUMP JUMPDEST DUP6 PUSH2 0xFA5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2CD5 JUMP JUMPDEST PUSH2 0xFB1 DUP11 DUP11 DUP9 DUP8 PUSH2 0xCC6 JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x108E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH2 0xFD4 JUMPI PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP10 POP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 AND EQ PUSH2 0x1001 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D55 JUMP JUMPDEST DUP6 CALLVALUE EQ PUSH2 0x1020 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D85 JUMP JUMPDEST PUSH1 0x2D PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1070 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1084 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE DUP11 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x10BF SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2A27 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x110F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x24D1 JUMP JUMPDEST SWAP1 POP PUSH2 0x112C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND CALLER ADDRESS DUP12 PUSH4 0xFFFFFFFF PUSH2 0x1413 AND JUMP JUMPDEST PUSH2 0x11B8 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x115C SWAP2 SWAP1 PUSH2 0x2A27 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x11AC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x24D1 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1474 AND JUMP JUMPDEST SWAP8 POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP14 AND DUP3 MSTORE DUP12 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP12 DUP3 AND DUP4 DUP6 ADD MSTORE SWAP1 DUP11 AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLER PUSH1 0x80 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 DUP2 ADD DUP5 MSTORE DUP10 DUP2 MSTORE SWAP1 DUP2 ADD DUP10 SWAP1 MSTORE SWAP2 DUP3 ADD DUP8 SWAP1 MSTORE PUSH2 0x121E SWAP2 PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH2 0x14BF JUMP JUMPDEST DUP1 SWAP3 POP DUP2 SWAP4 POP POP POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x3D3F38D1A433BB469C160C1704D282FE2B74819BA8EC9C223E685DD2A0B0547 DUP5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1275 SWAP3 SWAP2 SWAP1 PUSH2 0x2E23 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x12B4 PUSH2 0xC6D JUMP JUMPDEST PUSH2 0x12D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D75 JUMP JUMPDEST PUSH2 0x12D9 DUP2 PUSH2 0x16E4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3F249273 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0xFC9249CC SWAP4 PUSH2 0x1343 SWAP4 DUP11 SWAP4 DUP11 SWAP4 DUP11 SWAP4 SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x2B03 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x135B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x136F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xBEB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x24D1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x13F2 JUMPI PUSH2 0x13EC PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x1766 AND JUMP JUMPDEST POP PUSH2 0x140F JUMP JUMPDEST PUSH2 0x140D PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x17AE AND JUMP JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x146E SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x1437 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x2ADB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x186F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B6 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x14D6 JUMPI POP PUSH1 0x20 DUP8 ADD MLOAD ISZERO ISZERO JUMPDEST PUSH2 0x14F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2DA5 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH2 0x1503 JUMPI DUP7 MLOAD PUSH1 0x20 DUP9 ADD MSTORE JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD DUP8 MLOAD GT ISZERO PUSH2 0x1528 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D35 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH2 0x15E5 JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x15A4 JUMPI DUP6 ISZERO PUSH2 0x1559 JUMPI PUSH2 0x1552 DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x1980 JUMP JUMPDEST SWAP1 POP PUSH2 0x156D JUMP JUMPDEST PUSH2 0x156A DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x19B0 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x159F JUMPI PUSH1 0x80 DUP12 ADD MLOAD DUP12 MLOAD PUSH2 0x1590 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x1 JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP6 PUSH2 0x19D4 JUMP JUMPDEST DUP10 MLOAD PUSH2 0x159C SWAP1 DUP3 PUSH2 0x1474 JUMP JUMPDEST DUP11 MSTORE JUMPDEST PUSH2 0x15E5 JUMP JUMPDEST DUP6 ISZERO PUSH2 0x15BC JUMPI PUSH2 0x15B5 DUP11 PUSH1 0x2 PUSH2 0x1548 JUMP JUMPDEST SWAP1 POP PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x15C7 DUP11 PUSH1 0x2 PUSH2 0x1560 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x15E5 JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x15DF SWAP1 DUP3 PUSH2 0x1B24 JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MSTORE JUMPDEST DUP7 MLOAD ISZERO PUSH2 0x1604 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2DC5 JUMP JUMPDEST PUSH2 0x160E DUP12 DUP12 PUSH2 0x1B49 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x165A JUMPI DUP10 MLOAD DUP3 EQ PUSH2 0x163C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2DF5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1655 JUMPI PUSH2 0x1652 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B24 AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x16D4 JUMP JUMPDEST PUSH1 0x20 DUP11 ADD MLOAD DUP3 GT ISZERO PUSH2 0x167E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D25 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD DUP4 LT ISZERO PUSH2 0x16A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2CE5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x16D4 JUMPI PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x16C1 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x0 PUSH2 0x1585 JUMP JUMPDEST PUSH2 0x16D1 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1474 AND JUMP JUMPDEST SWAP3 POP JUMPDEST POP SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x170A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2CF5 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1772 DUP4 DUP4 PUSH2 0x1C5B JUMP JUMPDEST PUSH2 0x17A6 JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x14B9 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x14B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17BA DUP4 DUP4 PUSH2 0x1C5B JUMP JUMPDEST ISZERO PUSH2 0x17A6 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x1832 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x17F3 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1810 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x184E JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x14B9 JUMP JUMPDEST PUSH2 0x1881 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C70 JUMP JUMPDEST PUSH2 0x189D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2E05 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x18B9 SWAP2 SWAP1 PUSH2 0x2A1B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x18F6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x18FB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x191D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D15 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x146E JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x1938 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2458 JUMP JUMPDEST PUSH2 0x146E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2DD5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1978 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B9 PUSH9 0x56BC75E2D63100000 PUSH2 0x19A4 PUSH1 0x3E SLOAD DUP6 PUSH2 0x1CAC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1CE6 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B9 PUSH9 0x56BC75E2D63100000 PUSH2 0x19A4 PUSH1 0x18 SLOAD DUP6 PUSH2 0x1CAC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x1B1C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x1A8A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1A22 SWAP2 AND DUP8 DUP7 DUP5 PUSH2 0x1D28 JUMP JUMPDEST POP POP PUSH2 0x1A87 PUSH2 0x1A55 PUSH9 0x56BC75E2D63100000 PUSH2 0x1A49 PUSH1 0x39 SLOAD DUP6 PUSH2 0x1CAC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1DC1 AND JUMP JUMPDEST PUSH2 0x11AC PUSH2 0x1A7A PUSH9 0x56BC75E2D63100000 PUSH2 0x1A49 PUSH1 0x20 SLOAD DUP8 PUSH2 0x1CAC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1474 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1AB3 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B24 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD DUP8 SWAP3 SWAP2 DUP10 AND SWAP1 PUSH32 0xB23479169712C443E6B00FB0CEC3506A5F5926F541DF4243D313E11C8C5C71ED SWAP1 PUSH2 0x1B07 SWAP1 DUP7 SWAP1 PUSH2 0x2E15 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1B1C DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1E03 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x14B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D05 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD PUSH1 0x60 DUP8 DUP2 ADD MLOAD DUP8 MLOAD SWAP6 DUP9 ADD MLOAD DUP9 DUP6 ADD MLOAD SWAP5 MLOAD PUSH1 0x0 SWAP9 DUP10 SWAP9 SWAP5 SWAP8 PUSH4 0x957BA11 PUSH1 0xE2 SHL SWAP8 PUSH2 0x1B90 SWAP8 SWAP3 SWAP7 SWAP2 SWAP6 SWAP3 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 PUSH1 0x24 ADD PUSH2 0x2A35 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE PUSH1 0x3 SLOAD SWAP2 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x1BE2 SWAP1 DUP5 SWAP1 PUSH2 0x2A1B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C1D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C22 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0x1C44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2DE5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP3 ADD MLOAD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x1CA4 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1CBB JUMPI POP PUSH1 0x0 PUSH2 0x14B9 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1CC8 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x14B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D65 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B6 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x214E JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x40 MLOAD PUSH4 0x6A688FF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD4D11FE SWAP1 PUSH2 0x1D63 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1DB4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x24EF JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B6 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2198 JUMP JUMPDEST PUSH1 0x2F SLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 ISZERO PUSH2 0x1E66 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP2 POP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP12 SWAP2 AND PUSH2 0x1EA4 PUSH9 0x56BC75E2D63100000 PUSH2 0x1A49 DUP13 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x1CAC AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1EB6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2ADB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x1EF4 SWAP2 SWAP1 PUSH2 0x2A1B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1F2F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1F34 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x1F4A JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP5 POP JUMPDEST DUP5 ISZERO PUSH2 0x2142 JUMPI PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x1F86 SWAP3 SWAP2 AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x2B38 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FB4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1FD8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2458 JUMP JUMPDEST POP PUSH1 0x38 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x1FFF SWAP2 DUP15 SWAP2 DUP11 SWAP2 PUSH1 0x24 ADD PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xEFE6A8B PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2034 SWAP2 SWAP1 PUSH2 0x2A1B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2071 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2076 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 ISZERO PUSH2 0x20ED JUMPI PUSH1 0x1F SLOAD PUSH2 0x2093 SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1B24 AND JUMP JUMPDEST PUSH1 0x1F SSTORE PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0xF41C644671512F1CDA76ABFE6038E3D7D526C1377A5A8C692F81703901DB2150 SWAP2 PUSH2 0x20E0 SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x2E31 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2140 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0x483F67EA49F76AC15E15BBAD68B52788CA47D50AEF1E4ACFE95E5E307E710812 SWAP2 PUSH2 0x2137 SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x2E31 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x216F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST POP DUP4 PUSH2 0x217D JUMPI POP PUSH1 0x0 PUSH2 0xBEE JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 DUP7 SUB DUP2 PUSH2 0x218B JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x21B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x21C5 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x14B9 DUP2 PUSH2 0x2FBF JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14B9 DUP2 PUSH2 0x2FD3 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x14B9 DUP2 PUSH2 0x2FDC JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x14B9 DUP2 PUSH2 0x2FE5 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x220C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x221F PUSH2 0x221A DUP3 PUSH2 0x2F0C JUMP JUMPDEST PUSH2 0x2EE5 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x223B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2246 DUP4 DUP3 DUP5 PUSH2 0x2F7D JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14B9 DUP2 PUSH2 0x2FDC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x226C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CA4 DUP5 DUP5 PUSH2 0x21CF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x228B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2297 DUP6 DUP6 PUSH2 0x21CF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x22A8 DUP6 DUP3 DUP7 ADD PUSH2 0x21CF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x22CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22DB DUP12 DUP12 PUSH2 0x21CF JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x22EC DUP12 DUP3 DUP13 ADD PUSH2 0x21CF JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x22FD DUP12 DUP3 DUP13 ADD PUSH2 0x21CF JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x230E DUP12 DUP3 DUP13 ADD PUSH2 0x21CF JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x231F DUP12 DUP3 DUP13 ADD PUSH2 0x21E5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x2330 DUP12 DUP3 DUP13 ADD PUSH2 0x21E5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x2341 DUP12 DUP3 DUP13 ADD PUSH2 0x21E5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x235E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x236A DUP12 DUP3 DUP13 ADD PUSH2 0x21FB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x238F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x239B DUP7 DUP7 PUSH2 0x21CF JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x23AC DUP7 DUP3 DUP8 ADD PUSH2 0x21CF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x23BD DUP7 DUP3 DUP8 ADD PUSH2 0x21E5 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x23DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x23E9 DUP8 DUP8 PUSH2 0x21CF JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x23FA DUP8 DUP3 DUP9 ADD PUSH2 0x21CF JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x240B DUP8 DUP3 DUP9 ADD PUSH2 0x21E5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x241C DUP8 DUP3 DUP9 ADD PUSH2 0x21E5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x243B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2447 DUP6 DUP6 PUSH2 0x21CF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x22A8 DUP6 DUP3 DUP7 ADD PUSH2 0x21E5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x246A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CA4 DUP5 DUP5 PUSH2 0x21DA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CA4 DUP5 DUP5 PUSH2 0x21E5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2297 DUP6 DUP6 PUSH2 0x21E5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CA4 DUP5 DUP5 PUSH2 0x21F0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CA4 DUP5 DUP5 PUSH2 0x224F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x250E DUP6 DUP6 PUSH2 0x224F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x22A8 DUP6 DUP3 DUP7 ADD PUSH2 0x224F JUMP JUMPDEST PUSH2 0x2528 DUP2 PUSH2 0x2F46 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2528 DUP2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x2528 DUP2 PUSH2 0x2F56 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x254B DUP3 PUSH2 0x2F34 JUMP JUMPDEST PUSH2 0x2555 DUP2 DUP6 PUSH2 0x2F38 JUMP JUMPDEST SWAP4 POP PUSH2 0x2565 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2F89 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2528 DUP2 PUSH2 0x2F72 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2583 DUP3 PUSH2 0x2F34 JUMP JUMPDEST PUSH2 0x258D DUP2 DUP6 PUSH2 0x2F3D JUMP JUMPDEST SWAP4 POP PUSH2 0x259D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2F89 JUMP JUMPDEST PUSH2 0x25A6 DUP2 PUSH2 0x2FB5 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25BD PUSH1 0x6 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25DF PUSH1 0x16 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH22 0x736F75726365546F6B656E416D6F756E74203D3D203 PUSH1 0x54 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2611 PUSH1 0x1B DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x696E73756666696369656E742073776170206C69717569646974790000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x264A PUSH1 0x26 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2692 PUSH1 0x1B DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26CB PUSH1 0x20 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2704 PUSH1 0x13 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH19 0x737761702066696C6C20746F6F206C61726765 PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2733 PUSH1 0x1C DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x736F75726365416D6F756E74206C6172676572207468616E206D617800000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x276C PUSH1 0x1F DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x64657374546F6B656E416D6F756E74526563656976656420746F6F206C6F7700 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27A5 PUSH1 0x14 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH20 0xE6DEEAE4C6CAA8DED6CADC40DAD2E6DAC2E8C6D PUSH1 0x63 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27D5 PUSH1 0x21 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2818 PUSH1 0xC DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2840 PUSH1 0x1A DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x736F75726365546F6B656E416D6F756E74206D69736D61746368000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2879 PUSH1 0x14 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28A9 PUSH1 0x2E DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x6D696E206F72206D617820736F7572636520746F6B656E20616D6F756E74206E DUP2 MSTORE PUSH14 0x1959591CC81D1BC81899481CD95D PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28F9 PUSH1 0xC DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2921 PUSH1 0xD DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH13 0x696E76616C6964207374617465 PUSH1 0x98 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x294A PUSH1 0x2A DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2996 PUSH1 0xB DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH11 0x1CDDD85C0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29BD PUSH1 0x16 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH22 0x1CDDD85C081D1BDBC81B185C99D9481D1BC8199A5B1B PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29EF PUSH1 0x1F DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBEE DUP3 DUP5 PUSH2 0x2540 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x14B9 DUP3 DUP5 PUSH2 0x251F JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x2A43 DUP3 DUP11 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2A50 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2A5D PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2A6A PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2A77 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2A84 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2A91 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x2AAB DUP3 DUP8 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2AB8 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2AC5 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2AD2 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x2AE9 DUP3 DUP7 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2AF6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x1CA4 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x2B11 DUP3 DUP8 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2B1E PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2B2B PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2AD2 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x251F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2B46 DUP3 DUP6 PUSH2 0x251F JUMP JUMPDEST PUSH2 0xBEE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x2B61 DUP3 DUP7 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2AF6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x14B9 DUP3 DUP5 PUSH2 0x252E JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x2B8B DUP3 DUP12 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2B98 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x252E JUMP JUMPDEST PUSH2 0x2BA5 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2BB2 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2BBF PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2BCC PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2BD9 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2BE6 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x2C02 DUP3 DUP16 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C0F PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C1C PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C29 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x252E JUMP JUMPDEST PUSH2 0x2C36 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C43 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C50 PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C5D PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C6B PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C79 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C87 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2C95 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x251F JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x14B9 DUP3 DUP5 PUSH2 0x256F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B6 DUP2 DUP5 PUSH2 0x2578 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x25B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x25D2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2604 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x263D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2685 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x26BE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x26F7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2726 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x275F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2798 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x27C8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x280B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2833 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x286C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x289C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x28EC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2914 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x293D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2989 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x29B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x29E2 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x14B9 DUP3 DUP5 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2B46 DUP3 DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x2B61 DUP3 DUP7 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x2E4D DUP3 DUP9 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2E5A PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2E67 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2E74 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2E81 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x2E99 DUP3 DUP10 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2EA6 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2EB3 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2EC0 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2ECD PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2EDA PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2F04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2F23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B9 DUP3 PUSH2 0x2F66 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B9 DUP3 PUSH2 0x2F46 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2FA4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8C JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x146E JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x2FC8 DUP2 PUSH2 0x2F46 JUMP JUMPDEST DUP2 EQ PUSH2 0x12D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2FC8 DUP2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x2FC8 DUP2 PUSH2 0x2F56 JUMP JUMPDEST PUSH2 0x2FC8 DUP2 PUSH2 0x2F59 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 ORIGIN 0xC9 0xEC 0x4E 0xAC 0xED 0xE 0xAC 0xDD 0xCD SWAP3 SLOAD 0xEC DUP13 CALLCODE 0xD4 0xE0 0x4C PUSH31 0x54A3D0D4726FE9202EE73454936C6578706572696D656E74616CF564736F6C PUSH4 0x43000511 STOP BLOCKHASH ",
              "sourceMap": "642:4875:133:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;777:23:133;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;642:4875:133;;780:87:137;853:10;780:87;:::o;642:4875:133:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "60806040526004361061036b5760003560e01c80638f32d59b116101c6578063cb6eacd1116100f7578063edab119f11610095578063f589a3e71161006f578063f589a3e7146109af578063f6ddc8b3146109c4578063f706b1f2146109d9578063f851a440146109ee5761036b565b8063edab119f14610965578063f0e085f51461097a578063f2fde38b1461098f5761036b565b8063d473c2da116100d1578063d473c2da146108fa578063d485045e1461090f578063e321b5401461092f578063e8f62764146109505761036b565b8063cb6eacd114610891578063cd5d808d146108c5578063d288208c146108e55761036b565b8063b30643d911610164578063ba4861e91161013e578063ba4861e914610804578063bdee453c14610819578063c4a9081514610839578063c4d66de8146108715761036b565b8063b30643d9146107af578063b7e15241146107cf578063b9cffa3e146107ef5761036b565b8063acc04348116101a0578063acc0434814610741578063ae0a853014610756578063afe840091461076b578063b17da56e1461078d5761036b565b80638f32d59b146106f757806392d894f81461070c578063959083d31461072c5761036b565b80634f28cac2116102a05780637420ca3e1161023e5780637a8faeb8116102185780637a8faeb8146106985780638456cb59146106ad5780638da5cb5b146106c25780638dc48ba5146106d75761036b565b80637420ca3e14610659578063742e67981461066e57806378d849ed146106835761036b565b806362fff3f61161027a57806362fff3f6146105c857806368c4ac26146105f957806369455ddc146106195780636e663730146106395761036b565b80634f28cac21461056f578063569fc1fb14610584578063574442cc146105b35761036b565b80632f4707641161030d5780633fca506e116102e75780633fca506e146104fa5780634115a2b61461051a5780634203e3951461053a5780634699f8461461055a5761036b565b80632f470764146104a55780633432423c146104ba5780633452d2d4146104da5761036b565b80631b7bde74116103495780631b7bde7414610416578063218b39c61461044357806324cc5749146104635780632a324027146104905761036b565b8063065d810f146103995780630676c1b7146103d457806317548b79146103f6575b34801561037757600080fd5b5060405162461bcd60e51b815260040161039090612d95565b60405180910390fd5b3480156103a557600080fd5b506103b96103b4366004612428565b610a03565b6040516103cb96959493929190612e8b565b60405180910390f35b3480156103e057600080fd5b506103e9610a43565b6040516103cb9190612a27565b34801561040257600080fd5b506103e96104113660046124b3565b610a52565b34801561042257600080fd5b50610436610431366004612278565b610a6d565b6040516103cb9190612e15565b34801561044f57600080fd5b506103e961045e36600461225a565b610a8a565b34801561046f57600080fd5b5061048361047e36600461225a565b610aa5565b6040516103cb9190612b6e565b34801561049c57600080fd5b50610436610aba565b3480156104b157600080fd5b50610436610ac0565b3480156104c657600080fd5b506103b96104d5366004612428565b610ac6565b3480156104e657600080fd5b506104366104f536600461225a565b610b06565b34801561050657600080fd5b5061043661051536600461225a565b610b18565b34801561052657600080fd5b50610483610535366004612494565b610b2a565b34801561054657600080fd5b5061043661055536600461225a565b610b4a565b34801561056657600080fd5b50610436610b5c565b34801561057b57600080fd5b50610436610b62565b34801561059057600080fd5b506105a461059f366004612476565b610b68565b6040516103cb93929190612e31565b3480156105bf57600080fd5b50610436610b89565b3480156105d457600080fd5b506105e86105e3366004612278565b610b8f565b6040516103cb959493929190612e3f565b34801561060557600080fd5b5061048361061436600461225a565b610bc9565b34801561062557600080fd5b5061043661063436600461237a565b610bde565b34801561064557600080fd5b506103e961065436600461225a565b610bf5565b34801561066557600080fd5b506103e9610c10565b34801561067a57600080fd5b50610436610c1f565b34801561068f57600080fd5b506103e9610c25565b3480156106a457600080fd5b50610436610c34565b3480156106b957600080fd5b50610483610c3a565b3480156106ce57600080fd5b506103e9610c43565b3480156106e357600080fd5b506103e96106f236600461225a565b610c52565b34801561070357600080fd5b50610483610c6d565b34801561071857600080fd5b5061043661072736600461225a565b610c93565b34801561073857600080fd5b50610436610ca5565b34801561074d57600080fd5b50610436610cab565b34801561076257600080fd5b50610436610cb1565b34801561077757600080fd5b50610780610cb7565b6040516103cb9190612ca6565b34801561079957600080fd5b506107ad6107a83660046123c7565b610cc6565b005b3480156107bb57600080fd5b506104366107ca36600461225a565b610cfc565b3480156107db57600080fd5b506104366107ea36600461225a565b610d0e565b3480156107fb57600080fd5b506103e9610d20565b34801561081057600080fd5b506103e9610d2f565b34801561082557600080fd5b5061043661083436600461225a565b610d3e565b34801561084557600080fd5b50610859610854366004612476565b610d50565b6040516103cb9c9b9a99989796959493929190612bf3565b34801561087d57600080fd5b506107ad61088c36600461225a565b610dc2565b34801561089d57600080fd5b506108b16108ac366004612476565b610ea5565b6040516103cb989796959493929190612b7c565b3480156108d157600080fd5b506104366108e0366004612278565b610ef7565b3480156108f157600080fd5b506103e9610f14565b34801561090657600080fd5b50610436610f23565b34801561091b57600080fd5b5061043661092a36600461225a565b610f29565b61094261093d3660046122b2565b610f3b565b6040516103cb929190612e23565b34801561095c57600080fd5b506103e9611291565b34801561097157600080fd5b506104366112a0565b34801561098657600080fd5b506104366112a6565b34801561099b57600080fd5b506107ad6109aa36600461225a565b6112ac565b3480156109bb57600080fd5b506104366112dc565b3480156109d057600080fd5b506104366112e2565b3480156109e557600080fd5b506103e96112e8565b3480156109fa57600080fd5b506103e96112f7565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6000610beb848484611306565b90505b9392505050565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610c84611393565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b6000610cd3858585611306565b905081811015610cf55760405162461bcd60e51b815260040161039090612d45565b5050505050565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b610dca610c6d565b610de65760405162461bcd60e51b815260040161039090612d75565b63038c86d560e61b600081905260056020527fe705b9be7ab1128120df187531812b4c979d3ce42ed227d7df3b23e95341849e546001600160a01b031690610e2e9083611397565b610e3f631a51577760e21b83611397565b610e506358bed2b760e11b83611397565b6c14ddd85c1cd15e1d195c9b985b609a1b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b600080600160005414610f605760405162461bcd60e51b815260040161039090612db5565b6002600055603d5460ff1615610f885760405162461bcd60e51b815260040161039090612cc5565b85610fa55760405162461bcd60e51b815260040161039090612cd5565b610fb18a8a8887610cc6565b341561108e576001600160a01b038a16610fd457602d546001600160a01b031699505b602d546001600160a01b038b81169116146110015760405162461bcd60e51b815260040161039090612d55565b8534146110205760405162461bcd60e51b815260040161039090612d85565b602d60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b15801561107057600080fd5b505af1158015611084573d6000803e3d6000fd5b50505050506111bd565b6040516370a0823160e01b81528a906000906001600160a01b038316906370a08231906110bf903090600401612a27565b60206040518083038186803b1580156110d757600080fd5b505afa1580156110eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061110f91908101906124d1565b905061112c6001600160a01b038d1633308b63ffffffff61141316565b6111b881836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161115c9190612a27565b60206040518083038186803b15801561117457600080fd5b505afa158015611188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111ac91908101906124d1565b9063ffffffff61147416565b975050505b6040805160a0810182526001600160a01b03808d1682528b81166020808401919091528b821683850152908a166060808401919091523360808401528351908101845289815290810189905291820187905261121e916000808760016114bf565b8092508193505050886001600160a01b03168a6001600160a01b0316336001600160a01b03167f03d3f38d1a433bb469c160c1704d282fe2b74819ba8ec9c223e685dd2a0b05478486604051611275929190612e23565b60405180910390a4600160005590999098509650505050505050565b6014546001600160a01b031681565b601b5481565b60285481565b6112b4610c6d565b6112d05760405162461bcd60e51b815260040161039090612d75565b6112d9816116e4565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b60035460048054604051633f24927360e21b81526000936001600160a01b039081169363fc9249cc93611343938a938a938a939091169101612b03565b60206040518083038186803b15801561135b57600080fd5b505afa15801561136f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610beb91908101906124d1565b3390565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b038316908117909155156113f2576113ec600d6001600160e01b0319841663ffffffff61176616565b5061140f565b61140d600d6001600160e01b0319841663ffffffff6117ae16565b505b5050565b60405161146e9085906323b872dd60e01b9061143790879087908790602401612adb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261186f565b50505050565b60006114b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611954565b90505b92915050565b845160009081901515806114d65750602087015115155b6114f25760405162461bcd60e51b815260040161039090612da5565b602087015161150357865160208801525b6020870151875111156115285760405162461bcd60e51b815260040161039090612d35565b6000806000876115e55760408a01516115a4578515611559576115528a60005b6020020151611980565b905061156d565b61156a8a60005b60200201516119b0565b90505b801561159f5760808b01518b5161159091908b908e60015b6020020151856119d4565b895161159c9082611474565b8a525b6115e5565b85156115bc576115b58a6002611548565b90506115ca565b6115c78a6002611560565b90505b80156115e55760408a01516115df9082611b24565b60408b01525b8651156116045760405162461bcd60e51b815260040161039090612dc5565b61160e8b8b611b49565b60408c0151919450925061165a578951821461163c5760405162461bcd60e51b815260040161039090612df5565b801561165557611652828263ffffffff611b2416565b91505b6116d4565b60208a015182111561167e5760405162461bcd60e51b815260040161039090612d25565b60408a01518310156116a25760405162461bcd60e51b815260040161039090612ce5565b80156116d45760808b015160208c01516116c191908b908e6000611585565b6116d1838263ffffffff61147416565b92505b5090999098509650505050505050565b6001600160a01b03811661170a5760405162461bcd60e51b815260040161039090612cf5565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006117728383611c5b565b6117a657506001808301805480830180835560009283526020808420909201859055848352908590526040909120556114b9565b5060006114b9565b60006117ba8383611c5b565b156117a657600082815260208490526040902054600184015460001991820191018082146118325760008560010182815481106117f357fe5b906000526020600020015490508086600101848154811061181057fe5b6000918252602080832090910192909255918252869052604090206001830190555b6000848152602086905260408120556001850180548061184e57fe5b600190038181906000526020600020016000905590556001925050506114b9565b611881826001600160a01b0316611c70565b61189d5760405162461bcd60e51b815260040161039090612e05565b60006060836001600160a01b0316836040516118b99190612a1b565b6000604051808303816000865af19150503d80600081146118f6576040519150601f19603f3d011682016040523d82523d6000602084013e6118fb565b606091505b50915091508161191d5760405162461bcd60e51b815260040161039090612d15565b80511561146e57808060200190516119389190810190612458565b61146e5760405162461bcd60e51b815260040161039090612dd5565b600081848411156119785760405162461bcd60e51b81526004016103909190612cb4565b505050900390565b60006114b968056bc75e2d631000006119a4603e5485611cac90919063ffffffff16565b9063ffffffff611ce616565b60006114b968056bc75e2d631000006119a460185485611cac90919063ffffffff16565b808015611b1c576001600160a01b038681166000908152603360205260409020541615611a8a576001600160a01b03808716600090815260336020526040902054611a229116878684611d28565b5050611a87611a5568056bc75e2d63100000611a4960395485611cac90919063ffffffff16565b9063ffffffff611dc116565b6111ac611a7a68056bc75e2d63100000611a4960205487611cac90919063ffffffff16565b849063ffffffff61147416565b90505b6001600160a01b038416600090815260196020526040902054611ab3908263ffffffff611b2416565b6001600160a01b03808616600081815260196020526040908190209390935591518792918916907fb23479169712c443e6b00fb0cec3506a5f5926f541df4243d313e11c8c5c71ed90611b07908690612e15565b60405180910390a4611b1c8686868686611e03565b505050505050565b6000828201838110156114b65760405162461bcd60e51b815260040161039090612d05565b815160208084015160408086015160608781015187519588015188850151945160009889989497630957ba1160e21b97611b90979296919592949293919291602401612a35565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260035491519092506000916001600160a01b031690611be2908490612a1b565b600060405180830381855af49150503d8060008114611c1d576040519150601f19603f3d011682016040523d82523d6000602084013e611c22565b606091505b509250905080611c445760405162461bcd60e51b815260040161039090612de5565b602082015193506040820151925050509250929050565b60009081526020919091526040902054151590565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611ca457508115155b949350505050565b600082611cbb575060006114b9565b82820282848281611cc857fe5b04146114b65760405162461bcd60e51b815260040161039090612d65565b60006114b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061214e565b6031546040516306a688ff60e11b815260009182916001600160a01b0390911690630d4d11fe90611d63908990899089908990600401612a9d565b6040805180830381600087803b158015611d7c57600080fd5b505af1158015611d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611db491908101906124ef565b9097909650945050505050565b60006114b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612198565b602f546002546001600160a01b038581166000908152603c602090815260408083208885168452909152812054909392919091169015611e66576001600160a01b038087166000908152603c602090815260408083209389168352929052205491505b6037546000906060906001600160a01b038085169163d138f9a160e01b918b9116611ea468056bc75e2d63100000611a498c8b63ffffffff611cac16565b604051602401611eb693929190612adb565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611ef49190612a1b565b600060405180830381855afa9150503d8060008114611f2f576040519150601f19603f3d011682016040523d82523d6000602084013e611f34565b606091505b50915091506001821415611f4a57602081015194505b84156121425760375460385460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392611f86929116908990600401612b38565b602060405180830381600087803b158015611fa057600080fd5b505af1158015611fb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fd89190810190612458565b50603854603f546040516000926001600160a01b031691611fff918e918a91602401612b53565b60408051601f198184030181529181526020820180516001600160e01b0316630efe6a8b60e01b179052516120349190612a1b565b6000604051808303816000865af19150503d8060008114612071576040519150601f19603f3d011682016040523d82523d6000602084013e612076565b606091505b5050905080156120ed57601f54612093908763ffffffff611b2416565b601f55603754603f546040518c926001600160a01b0390811692908f16917ff41c644671512f1cda76abfe6038e3d7d526c1377a5a8c692f81703901db2150916120e0918b918d91612e31565b60405180910390a4612140565b603754603f546040518c926001600160a01b0390811692908f16917f483f67ea49f76ac15e15bbad68b52788ca47d50aef1e4acfe95e5e307e71081291612137918b918d91612e31565b60405180910390a45b505b50505050505050505050565b6000818361216f5760405162461bcd60e51b81526004016103909190612cb4565b508361217d57506000610bee565b600083600186038161218b57fe5b0460010195945050505050565b600081836121b95760405162461bcd60e51b81526004016103909190612cb4565b5060008385816121c557fe5b0495945050505050565b80356114b981612fbf565b80516114b981612fd3565b80356114b981612fdc565b80356114b981612fe5565b600082601f83011261220c57600080fd5b813561221f61221a82612f0c565b612ee5565b9150808252602083016020830185838301111561223b57600080fd5b612246838284612f7d565b50505092915050565b80516114b981612fdc565b60006020828403121561226c57600080fd5b6000611ca484846121cf565b6000806040838503121561228b57600080fd5b600061229785856121cf565b92505060206122a8858286016121cf565b9150509250929050565b600080600080600080600080610100898b0312156122cf57600080fd5b60006122db8b8b6121cf565b98505060206122ec8b828c016121cf565b97505060406122fd8b828c016121cf565b965050606061230e8b828c016121cf565b955050608061231f8b828c016121e5565b94505060a06123308b828c016121e5565b93505060c06123418b828c016121e5565b92505060e089013567ffffffffffffffff81111561235e57600080fd5b61236a8b828c016121fb565b9150509295985092959890939650565b60008060006060848603121561238f57600080fd5b600061239b86866121cf565b93505060206123ac868287016121cf565b92505060406123bd868287016121e5565b9150509250925092565b600080600080608085870312156123dd57600080fd5b60006123e987876121cf565b94505060206123fa878288016121cf565b935050604061240b878288016121e5565b925050606061241c878288016121e5565b91505092959194509250565b6000806040838503121561243b57600080fd5b600061244785856121cf565b92505060206122a8858286016121e5565b60006020828403121561246a57600080fd5b6000611ca484846121da565b60006020828403121561248857600080fd5b6000611ca484846121e5565b600080604083850312156124a757600080fd5b600061229785856121e5565b6000602082840312156124c557600080fd5b6000611ca484846121f0565b6000602082840312156124e357600080fd5b6000611ca4848461224f565b6000806040838503121561250257600080fd5b600061250e858561224f565b92505060206122a88582860161224f565b61252881612f46565b82525050565b61252881612f51565b61252881612f56565b600061254b82612f34565b6125558185612f38565b9350612565818560208601612f89565b9290920192915050565b61252881612f72565b600061258382612f34565b61258d8185612f3d565b935061259d818560208601612f89565b6125a681612fb5565b9093019392505050565b60006125bd600683612f3d565b6514185d5cd95960d21b815260200192915050565b60006125df601683612f3d565b750736f75726365546f6b656e416d6f756e74203d3d20360541b815260200192915050565b6000612611601b83612f3d565b7f696e73756666696369656e742073776170206c69717569646974790000000000815260200192915050565b600061264a602683612f3d565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000612692601b83612f3d565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006126cb602083612f3d565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000612704601383612f3d565b72737761702066696c6c20746f6f206c6172676560681b815260200192915050565b6000612733601c83612f3d565b7f736f75726365416d6f756e74206c6172676572207468616e206d617800000000815260200192915050565b600061276c601f83612f3d565b7f64657374546f6b656e416d6f756e74526563656976656420746f6f206c6f7700815260200192915050565b60006127a5601483612f3d565b730e6deeae4c6caa8ded6cadc40dad2e6dac2e8c6d60631b815260200192915050565b60006127d5602183612f3d565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000612818600c83612f3d565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000612840601a83612f3d565b7f736f75726365546f6b656e416d6f756e74206d69736d61746368000000000000815260200192915050565b6000612879601483612f3d565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b60006128a9602e83612f3d565b7f6d696e206f72206d617820736f7572636520746f6b656e20616d6f756e74206e81526d1959591cc81d1bc81899481cd95d60921b602082015260400192915050565b60006128f9600c83612f3d565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b6000612921600d83612f3d565b6c696e76616c696420737461746560981b815260200192915050565b600061294a602a83612f3d565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b6000612996600b83612f3d565b6a1cddd85c0819985a5b195960aa1b815260200192915050565b60006129bd601683612f3d565b751cddd85c081d1bdbc81b185c99d9481d1bc8199a5b1b60521b815260200192915050565b60006129ef601f83612f3d565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6000610bee8284612540565b602081016114b9828461251f565b60e08101612a43828a61251f565b612a50602083018961251f565b612a5d604083018861251f565b612a6a606083018761251f565b612a776080830186612537565b612a8460a0830185612537565b612a9160c0830184612537565b98975050505050505050565b60808101612aab828761251f565b612ab8602083018661251f565b612ac5604083018561251f565b612ad26060830184612537565b95945050505050565b60608101612ae9828661251f565b612af6602083018561251f565b611ca46040830184612537565b60808101612b11828761251f565b612b1e602083018661251f565b612b2b6040830185612537565b612ad2606083018461251f565b60408101612b46828561251f565b610bee6020830184612537565b60608101612b61828661251f565b612af66020830185612537565b602081016114b9828461252e565b6101008101612b8b828b612537565b612b98602083018a61252e565b612ba5604083018961251f565b612bb2606083018861251f565b612bbf608083018761251f565b612bcc60a0830186612537565b612bd960c0830185612537565b612be660e0830184612537565b9998505050505050505050565b6101808101612c02828f612537565b612c0f602083018e612537565b612c1c604083018d612537565b612c29606083018c61252e565b612c36608083018b612537565b612c4360a083018a612537565b612c5060c0830189612537565b612c5d60e0830188612537565b612c6b610100830187612537565b612c79610120830186612537565b612c8761014083018561251f565b612c9561016083018461251f565b9d9c50505050505050505050505050565b602081016114b9828461256f565b602080825281016114b68184612578565b602080825281016114b9816125b0565b602080825281016114b9816125d2565b602080825281016114b981612604565b602080825281016114b98161263d565b602080825281016114b981612685565b602080825281016114b9816126be565b602080825281016114b9816126f7565b602080825281016114b981612726565b602080825281016114b98161275f565b602080825281016114b981612798565b602080825281016114b9816127c8565b602080825281016114b98161280b565b602080825281016114b981612833565b602080825281016114b98161286c565b602080825281016114b98161289c565b602080825281016114b9816128ec565b602080825281016114b981612914565b602080825281016114b98161293d565b602080825281016114b981612989565b602080825281016114b9816129b0565b602080825281016114b9816129e2565b602081016114b98284612537565b60408101612b468285612537565b60608101612b618286612537565b60a08101612e4d8288612537565b612e5a6020830187612537565b612e676040830186612537565b612e746060830185612537565b612e816080830184612537565b9695505050505050565b60c08101612e998289612537565b612ea66020830188612537565b612eb36040830187612537565b612ec06060830186612537565b612ecd6080830185612537565b612eda60a0830184612537565b979650505050505050565b60405181810167ffffffffffffffff81118282101715612f0457600080fd5b604052919050565b600067ffffffffffffffff821115612f2357600080fd5b506020601f91909101601f19160190565b5190565b919050565b90815260200190565b60006114b982612f66565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b60006114b982612f46565b82818337506000910152565b60005b83811015612fa4578181015183820152602001612f8c565b8381111561146e5750506000910152565b601f01601f191690565b612fc881612f46565b81146112d957600080fd5b612fc881612f51565b612fc881612f56565b612fc881612f5956fea365627a7a7231582032c9ec4eaced0eacddcd9254ec8cf2d4e04c7e54a3d0d4726fe9202ee73454936c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x9AF JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x9C4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x9D9 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x9EE JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x965 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x97A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x98F JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xD473C2DA GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x8FA JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x90F JUMPI DUP1 PUSH4 0xE321B540 EQ PUSH2 0x92F JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x950 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x891 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x8C5 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x8E5 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xBA4861E9 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x804 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x819 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x839 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x871 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x7AF JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x7CF JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x7EF JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0xACC04348 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x741 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x756 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x76B JUMPI DUP1 PUSH4 0xB17DA56E EQ PUSH2 0x78D JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x6F7 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x72C JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x4F28CAC2 GT PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x7420CA3E GT PUSH2 0x23E JUMPI DUP1 PUSH4 0x7A8FAEB8 GT PUSH2 0x218 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x698 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x6AD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6C2 JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x6D7 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x659 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x66E JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x683 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x62FFF3F6 GT PUSH2 0x27A JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x5C8 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5F9 JUMPI DUP1 PUSH4 0x69455DDC EQ PUSH2 0x619 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x639 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x56F JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x584 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x5B3 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x2F470764 GT PUSH2 0x30D JUMPI DUP1 PUSH4 0x3FCA506E GT PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x53A JUMPI DUP1 PUSH4 0x4699F846 EQ PUSH2 0x55A JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x2F470764 EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x4DA JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x1B7BDE74 GT PUSH2 0x349 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x443 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x490 JUMPI PUSH2 0x36B JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3D4 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x3F6 JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D95 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B9 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2428 JUMP JUMPDEST PUSH2 0xA03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xA43 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2A27 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x411 CALLDATASIZE PUSH1 0x4 PUSH2 0x24B3 JUMP JUMPDEST PUSH2 0xA52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x431 CALLDATASIZE PUSH1 0x4 PUSH2 0x2278 JUMP JUMPDEST PUSH2 0xA6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2E15 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xA8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x47E CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xAA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2B6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xABA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xAC0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B9 PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2428 JUMP JUMPDEST PUSH2 0xAC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x4F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xB06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x515 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xB18 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x535 CALLDATASIZE PUSH1 0x4 PUSH2 0x2494 JUMP JUMPDEST PUSH2 0xB2A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x555 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xB4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xB5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xB62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5A4 PUSH2 0x59F CALLDATASIZE PUSH1 0x4 PUSH2 0x2476 JUMP JUMPDEST PUSH2 0xB68 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2E31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xB89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E8 PUSH2 0x5E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2278 JUMP JUMPDEST PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2E3F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0x614 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xBC9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x625 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x634 CALLDATASIZE PUSH1 0x4 PUSH2 0x237A JUMP JUMPDEST PUSH2 0xBDE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x654 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xBF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC1F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC25 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xC34 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xC3A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xC43 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x6F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xC52 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x703 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xC6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x727 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xC93 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xCA5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xCAB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x762 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xCB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x777 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x780 PUSH2 0xCB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2CA6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7AD PUSH2 0x7A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x23C7 JUMP JUMPDEST PUSH2 0xCC6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x7CA CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xCFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x7EA CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xD20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xD2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x834 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xD3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x845 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x859 PUSH2 0x854 CALLDATASIZE PUSH1 0x4 PUSH2 0x2476 JUMP JUMPDEST PUSH2 0xD50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2BF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7AD PUSH2 0x88C CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xDC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B1 PUSH2 0x8AC CALLDATASIZE PUSH1 0x4 PUSH2 0x2476 JUMP JUMPDEST PUSH2 0xEA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B7C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x8E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2278 JUMP JUMPDEST PUSH2 0xEF7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0xF14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0xF23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x92A CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0xF29 JUMP JUMPDEST PUSH2 0x942 PUSH2 0x93D CALLDATASIZE PUSH1 0x4 PUSH2 0x22B2 JUMP JUMPDEST PUSH2 0xF3B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CB SWAP3 SWAP2 SWAP1 PUSH2 0x2E23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x1291 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x12A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x12A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7AD PUSH2 0x9AA CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0x12AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x12DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x12E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x12E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E9 PUSH2 0x12F7 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBEB DUP5 DUP5 DUP5 PUSH2 0x1306 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC84 PUSH2 0x1393 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCD3 DUP6 DUP6 DUP6 PUSH2 0x1306 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xCF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D45 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH2 0xDCA PUSH2 0xC6D JUMP JUMPDEST PUSH2 0xDE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D75 JUMP JUMPDEST PUSH4 0x38C86D5 PUSH1 0xE6 SHL PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0xE705B9BE7AB1128120DF187531812B4C979D3CE42ED227D7DF3B23E95341849E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xE2E SWAP1 DUP4 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0xE3F PUSH4 0x1A515777 PUSH1 0xE2 SHL DUP4 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0xE50 PUSH4 0x58BED2B7 PUSH1 0xE1 SHL DUP4 PUSH2 0x1397 JUMP JUMPDEST PUSH13 0x14DDD85C1CD15E1D195C9B985B PUSH1 0x9A SHL DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x1420E3A2094D671BC2EB897941FA3D94FFA37F0CB6D530651946250A2151CB7F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0xF60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2DB5 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH1 0x3D SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xF88 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2CC5 JUMP JUMPDEST DUP6 PUSH2 0xFA5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2CD5 JUMP JUMPDEST PUSH2 0xFB1 DUP11 DUP11 DUP9 DUP8 PUSH2 0xCC6 JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x108E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH2 0xFD4 JUMPI PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP10 POP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 AND EQ PUSH2 0x1001 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D55 JUMP JUMPDEST DUP6 CALLVALUE EQ PUSH2 0x1020 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D85 JUMP JUMPDEST PUSH1 0x2D PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1070 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1084 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE DUP11 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x10BF SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2A27 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x110F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x24D1 JUMP JUMPDEST SWAP1 POP PUSH2 0x112C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND CALLER ADDRESS DUP12 PUSH4 0xFFFFFFFF PUSH2 0x1413 AND JUMP JUMPDEST PUSH2 0x11B8 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x115C SWAP2 SWAP1 PUSH2 0x2A27 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x11AC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x24D1 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1474 AND JUMP JUMPDEST SWAP8 POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP14 AND DUP3 MSTORE DUP12 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP12 DUP3 AND DUP4 DUP6 ADD MSTORE SWAP1 DUP11 AND PUSH1 0x60 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLER PUSH1 0x80 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 DUP2 ADD DUP5 MSTORE DUP10 DUP2 MSTORE SWAP1 DUP2 ADD DUP10 SWAP1 MSTORE SWAP2 DUP3 ADD DUP8 SWAP1 MSTORE PUSH2 0x121E SWAP2 PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH2 0x14BF JUMP JUMPDEST DUP1 SWAP3 POP DUP2 SWAP4 POP POP POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x3D3F38D1A433BB469C160C1704D282FE2B74819BA8EC9C223E685DD2A0B0547 DUP5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1275 SWAP3 SWAP2 SWAP1 PUSH2 0x2E23 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x12B4 PUSH2 0xC6D JUMP JUMPDEST PUSH2 0x12D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D75 JUMP JUMPDEST PUSH2 0x12D9 DUP2 PUSH2 0x16E4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3F249273 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0xFC9249CC SWAP4 PUSH2 0x1343 SWAP4 DUP11 SWAP4 DUP11 SWAP4 DUP11 SWAP4 SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x2B03 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x135B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x136F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xBEB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x24D1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE ISZERO PUSH2 0x13F2 JUMPI PUSH2 0x13EC PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x1766 AND JUMP JUMPDEST POP PUSH2 0x140F JUMP JUMPDEST PUSH2 0x140D PUSH1 0xD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP5 AND PUSH4 0xFFFFFFFF PUSH2 0x17AE AND JUMP JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x146E SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x1437 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x2ADB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x186F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B6 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1954 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x14D6 JUMPI POP PUSH1 0x20 DUP8 ADD MLOAD ISZERO ISZERO JUMPDEST PUSH2 0x14F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2DA5 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH2 0x1503 JUMPI DUP7 MLOAD PUSH1 0x20 DUP9 ADD MSTORE JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD DUP8 MLOAD GT ISZERO PUSH2 0x1528 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D35 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 PUSH2 0x15E5 JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x15A4 JUMPI DUP6 ISZERO PUSH2 0x1559 JUMPI PUSH2 0x1552 DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x1980 JUMP JUMPDEST SWAP1 POP PUSH2 0x156D JUMP JUMPDEST PUSH2 0x156A DUP11 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH2 0x19B0 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x159F JUMPI PUSH1 0x80 DUP12 ADD MLOAD DUP12 MLOAD PUSH2 0x1590 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x1 JUMPDEST PUSH1 0x20 MUL ADD MLOAD DUP6 PUSH2 0x19D4 JUMP JUMPDEST DUP10 MLOAD PUSH2 0x159C SWAP1 DUP3 PUSH2 0x1474 JUMP JUMPDEST DUP11 MSTORE JUMPDEST PUSH2 0x15E5 JUMP JUMPDEST DUP6 ISZERO PUSH2 0x15BC JUMPI PUSH2 0x15B5 DUP11 PUSH1 0x2 PUSH2 0x1548 JUMP JUMPDEST SWAP1 POP PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x15C7 DUP11 PUSH1 0x2 PUSH2 0x1560 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x15E5 JUMPI PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x15DF SWAP1 DUP3 PUSH2 0x1B24 JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MSTORE JUMPDEST DUP7 MLOAD ISZERO PUSH2 0x1604 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2DC5 JUMP JUMPDEST PUSH2 0x160E DUP12 DUP12 PUSH2 0x1B49 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x165A JUMPI DUP10 MLOAD DUP3 EQ PUSH2 0x163C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2DF5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1655 JUMPI PUSH2 0x1652 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B24 AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x16D4 JUMP JUMPDEST PUSH1 0x20 DUP11 ADD MLOAD DUP3 GT ISZERO PUSH2 0x167E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D25 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD DUP4 LT ISZERO PUSH2 0x16A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2CE5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x16D4 JUMPI PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x16C1 SWAP2 SWAP1 DUP12 SWAP1 DUP15 PUSH1 0x0 PUSH2 0x1585 JUMP JUMPDEST PUSH2 0x16D1 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1474 AND JUMP JUMPDEST SWAP3 POP JUMPDEST POP SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x170A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2CF5 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1772 DUP4 DUP4 PUSH2 0x1C5B JUMP JUMPDEST PUSH2 0x17A6 JUMPI POP PUSH1 0x1 DUP1 DUP4 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP6 SWAP1 SSTORE DUP5 DUP4 MSTORE SWAP1 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0x14B9 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x14B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17BA DUP4 DUP4 PUSH2 0x1C5B JUMP JUMPDEST ISZERO PUSH2 0x17A6 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x0 NOT SWAP2 DUP3 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x1832 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x17F3 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1810 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 DUP6 ADD DUP1 SLOAD DUP1 PUSH2 0x184E JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x14B9 JUMP JUMPDEST PUSH2 0x1881 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C70 JUMP JUMPDEST PUSH2 0x189D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2E05 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x18B9 SWAP2 SWAP1 PUSH2 0x2A1B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x18F6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x18FB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x191D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D15 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x146E JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x1938 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2458 JUMP JUMPDEST PUSH2 0x146E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2DD5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1978 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B9 PUSH9 0x56BC75E2D63100000 PUSH2 0x19A4 PUSH1 0x3E SLOAD DUP6 PUSH2 0x1CAC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1CE6 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B9 PUSH9 0x56BC75E2D63100000 PUSH2 0x19A4 PUSH1 0x18 SLOAD DUP6 PUSH2 0x1CAC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x1B1C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x1A8A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1A22 SWAP2 AND DUP8 DUP7 DUP5 PUSH2 0x1D28 JUMP JUMPDEST POP POP PUSH2 0x1A87 PUSH2 0x1A55 PUSH9 0x56BC75E2D63100000 PUSH2 0x1A49 PUSH1 0x39 SLOAD DUP6 PUSH2 0x1CAC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1DC1 AND JUMP JUMPDEST PUSH2 0x11AC PUSH2 0x1A7A PUSH9 0x56BC75E2D63100000 PUSH2 0x1A49 PUSH1 0x20 SLOAD DUP8 PUSH2 0x1CAC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1474 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1AB3 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1B24 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD DUP8 SWAP3 SWAP2 DUP10 AND SWAP1 PUSH32 0xB23479169712C443E6B00FB0CEC3506A5F5926F541DF4243D313E11C8C5C71ED SWAP1 PUSH2 0x1B07 SWAP1 DUP7 SWAP1 PUSH2 0x2E15 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1B1C DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1E03 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x14B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D05 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD PUSH1 0x60 DUP8 DUP2 ADD MLOAD DUP8 MLOAD SWAP6 DUP9 ADD MLOAD DUP9 DUP6 ADD MLOAD SWAP5 MLOAD PUSH1 0x0 SWAP9 DUP10 SWAP9 SWAP5 SWAP8 PUSH4 0x957BA11 PUSH1 0xE2 SHL SWAP8 PUSH2 0x1B90 SWAP8 SWAP3 SWAP7 SWAP2 SWAP6 SWAP3 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 PUSH1 0x24 ADD PUSH2 0x2A35 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE PUSH1 0x3 SLOAD SWAP2 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x1BE2 SWAP1 DUP5 SWAP1 PUSH2 0x2A1B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C1D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C22 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0x1C44 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2DE5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD SWAP4 POP PUSH1 0x40 DUP3 ADD MLOAD SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x1CA4 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1CBB JUMPI POP PUSH1 0x0 PUSH2 0x14B9 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1CC8 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x14B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP1 PUSH2 0x2D65 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B6 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x214E JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x40 MLOAD PUSH4 0x6A688FF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD4D11FE SWAP1 PUSH2 0x1D63 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1DB4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x24EF JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B6 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2198 JUMP JUMPDEST PUSH1 0x2F SLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 ISZERO PUSH2 0x1E66 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP2 POP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP2 PUSH4 0xD138F9A1 PUSH1 0xE0 SHL SWAP2 DUP12 SWAP2 AND PUSH2 0x1EA4 PUSH9 0x56BC75E2D63100000 PUSH2 0x1A49 DUP13 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x1CAC AND JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1EB6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2ADB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x1EF4 SWAP2 SWAP1 PUSH2 0x2A1B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1F2F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1F34 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x1 DUP3 EQ ISZERO PUSH2 0x1F4A JUMPI PUSH1 0x20 DUP2 ADD MLOAD SWAP5 POP JUMPDEST DUP5 ISZERO PUSH2 0x2142 JUMPI PUSH1 0x37 SLOAD PUSH1 0x38 SLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x1F86 SWAP3 SWAP2 AND SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x2B38 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FB4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1FD8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2458 JUMP JUMPDEST POP PUSH1 0x38 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x1FFF SWAP2 DUP15 SWAP2 DUP11 SWAP2 PUSH1 0x24 ADD PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xEFE6A8B PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x2034 SWAP2 SWAP1 PUSH2 0x2A1B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2071 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2076 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 ISZERO PUSH2 0x20ED JUMPI PUSH1 0x1F SLOAD PUSH2 0x2093 SWAP1 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x1B24 AND JUMP JUMPDEST PUSH1 0x1F SSTORE PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0xF41C644671512F1CDA76ABFE6038E3D7D526C1377A5A8C692F81703901DB2150 SWAP2 PUSH2 0x20E0 SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x2E31 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2140 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x3F SLOAD PUSH1 0x40 MLOAD DUP13 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 SWAP1 DUP16 AND SWAP2 PUSH32 0x483F67EA49F76AC15E15BBAD68B52788CA47D50AEF1E4ACFE95E5E307E710812 SWAP2 PUSH2 0x2137 SWAP2 DUP12 SWAP2 DUP14 SWAP2 PUSH2 0x2E31 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x216F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST POP DUP4 PUSH2 0x217D JUMPI POP PUSH1 0x0 PUSH2 0xBEE JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 DUP7 SUB DUP2 PUSH2 0x218B JUMPI INVALID JUMPDEST DIV PUSH1 0x1 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x21B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x21C5 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x14B9 DUP2 PUSH2 0x2FBF JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14B9 DUP2 PUSH2 0x2FD3 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x14B9 DUP2 PUSH2 0x2FDC JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x14B9 DUP2 PUSH2 0x2FE5 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x220C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x221F PUSH2 0x221A DUP3 PUSH2 0x2F0C JUMP JUMPDEST PUSH2 0x2EE5 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x223B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2246 DUP4 DUP3 DUP5 PUSH2 0x2F7D JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14B9 DUP2 PUSH2 0x2FDC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x226C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CA4 DUP5 DUP5 PUSH2 0x21CF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x228B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2297 DUP6 DUP6 PUSH2 0x21CF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x22A8 DUP6 DUP3 DUP7 ADD PUSH2 0x21CF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x22CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x22DB DUP12 DUP12 PUSH2 0x21CF JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x22EC DUP12 DUP3 DUP13 ADD PUSH2 0x21CF JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x22FD DUP12 DUP3 DUP13 ADD PUSH2 0x21CF JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x230E DUP12 DUP3 DUP13 ADD PUSH2 0x21CF JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x231F DUP12 DUP3 DUP13 ADD PUSH2 0x21E5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x2330 DUP12 DUP3 DUP13 ADD PUSH2 0x21E5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x2341 DUP12 DUP3 DUP13 ADD PUSH2 0x21E5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x235E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x236A DUP12 DUP3 DUP13 ADD PUSH2 0x21FB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x238F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x239B DUP7 DUP7 PUSH2 0x21CF JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x23AC DUP7 DUP3 DUP8 ADD PUSH2 0x21CF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x23BD DUP7 DUP3 DUP8 ADD PUSH2 0x21E5 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x23DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x23E9 DUP8 DUP8 PUSH2 0x21CF JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x23FA DUP8 DUP3 DUP9 ADD PUSH2 0x21CF JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x240B DUP8 DUP3 DUP9 ADD PUSH2 0x21E5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x241C DUP8 DUP3 DUP9 ADD PUSH2 0x21E5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x243B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2447 DUP6 DUP6 PUSH2 0x21CF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x22A8 DUP6 DUP3 DUP7 ADD PUSH2 0x21E5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x246A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CA4 DUP5 DUP5 PUSH2 0x21DA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CA4 DUP5 DUP5 PUSH2 0x21E5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2297 DUP6 DUP6 PUSH2 0x21E5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CA4 DUP5 DUP5 PUSH2 0x21F0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CA4 DUP5 DUP5 PUSH2 0x224F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x250E DUP6 DUP6 PUSH2 0x224F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x22A8 DUP6 DUP3 DUP7 ADD PUSH2 0x224F JUMP JUMPDEST PUSH2 0x2528 DUP2 PUSH2 0x2F46 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2528 DUP2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x2528 DUP2 PUSH2 0x2F56 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x254B DUP3 PUSH2 0x2F34 JUMP JUMPDEST PUSH2 0x2555 DUP2 DUP6 PUSH2 0x2F38 JUMP JUMPDEST SWAP4 POP PUSH2 0x2565 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2F89 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2528 DUP2 PUSH2 0x2F72 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2583 DUP3 PUSH2 0x2F34 JUMP JUMPDEST PUSH2 0x258D DUP2 DUP6 PUSH2 0x2F3D JUMP JUMPDEST SWAP4 POP PUSH2 0x259D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2F89 JUMP JUMPDEST PUSH2 0x25A6 DUP2 PUSH2 0x2FB5 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25BD PUSH1 0x6 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH6 0x14185D5CD959 PUSH1 0xD2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25DF PUSH1 0x16 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH22 0x736F75726365546F6B656E416D6F756E74203D3D203 PUSH1 0x54 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2611 PUSH1 0x1B DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x696E73756666696369656E742073776170206C69717569646974790000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x264A PUSH1 0x26 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2692 PUSH1 0x1B DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26CB PUSH1 0x20 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2704 PUSH1 0x13 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH19 0x737761702066696C6C20746F6F206C61726765 PUSH1 0x68 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2733 PUSH1 0x1C DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x736F75726365416D6F756E74206C6172676572207468616E206D617800000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x276C PUSH1 0x1F DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x64657374546F6B656E416D6F756E74526563656976656420746F6F206C6F7700 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27A5 PUSH1 0x14 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH20 0xE6DEEAE4C6CAA8DED6CADC40DAD2E6DAC2E8C6D PUSH1 0x63 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27D5 PUSH1 0x21 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2818 PUSH1 0xC DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2840 PUSH1 0x1A DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x736F75726365546F6B656E416D6F756E74206D69736D61746368000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2879 PUSH1 0x14 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH20 0x19985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28A9 PUSH1 0x2E DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x6D696E206F72206D617820736F7572636520746F6B656E20616D6F756E74206E DUP2 MSTORE PUSH14 0x1959591CC81D1BC81899481CD95D PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28F9 PUSH1 0xC DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2921 PUSH1 0xD DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH13 0x696E76616C6964207374617465 PUSH1 0x98 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x294A PUSH1 0x2A DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2996 PUSH1 0xB DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH11 0x1CDDD85C0819985A5B1959 PUSH1 0xAA SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29BD PUSH1 0x16 DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH22 0x1CDDD85C081D1BDBC81B185C99D9481D1BC8199A5B1B PUSH1 0x52 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29EF PUSH1 0x1F DUP4 PUSH2 0x2F3D JUMP JUMPDEST PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBEE DUP3 DUP5 PUSH2 0x2540 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x14B9 DUP3 DUP5 PUSH2 0x251F JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x2A43 DUP3 DUP11 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2A50 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2A5D PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2A6A PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2A77 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2A84 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2A91 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x2AAB DUP3 DUP8 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2AB8 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2AC5 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2AD2 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x2AE9 DUP3 DUP7 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2AF6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x1CA4 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x2B11 DUP3 DUP8 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2B1E PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2B2B PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2AD2 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x251F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2B46 DUP3 DUP6 PUSH2 0x251F JUMP JUMPDEST PUSH2 0xBEE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x2B61 DUP3 DUP7 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2AF6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x14B9 DUP3 DUP5 PUSH2 0x252E JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x2B8B DUP3 DUP12 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2B98 PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x252E JUMP JUMPDEST PUSH2 0x2BA5 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2BB2 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2BBF PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2BCC PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2BD9 PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2BE6 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x180 DUP2 ADD PUSH2 0x2C02 DUP3 DUP16 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C0F PUSH1 0x20 DUP4 ADD DUP15 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C1C PUSH1 0x40 DUP4 ADD DUP14 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C29 PUSH1 0x60 DUP4 ADD DUP13 PUSH2 0x252E JUMP JUMPDEST PUSH2 0x2C36 PUSH1 0x80 DUP4 ADD DUP12 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C43 PUSH1 0xA0 DUP4 ADD DUP11 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C50 PUSH1 0xC0 DUP4 ADD DUP10 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C5D PUSH1 0xE0 DUP4 ADD DUP9 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C6B PUSH2 0x100 DUP4 ADD DUP8 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C79 PUSH2 0x120 DUP4 ADD DUP7 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2C87 PUSH2 0x140 DUP4 ADD DUP6 PUSH2 0x251F JUMP JUMPDEST PUSH2 0x2C95 PUSH2 0x160 DUP4 ADD DUP5 PUSH2 0x251F JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x14B9 DUP3 DUP5 PUSH2 0x256F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B6 DUP2 DUP5 PUSH2 0x2578 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x25B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x25D2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2604 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x263D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2685 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x26BE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x26F7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2726 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x275F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2798 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x27C8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x280B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2833 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x286C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x289C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x28EC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2914 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x293D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x2989 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x29B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B9 DUP2 PUSH2 0x29E2 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x14B9 DUP3 DUP5 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x2B46 DUP3 DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x2B61 DUP3 DUP7 PUSH2 0x2537 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x2E4D DUP3 DUP9 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2E5A PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2E67 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2E74 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2E81 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x2E99 DUP3 DUP10 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2EA6 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2EB3 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2EC0 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2ECD PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x2537 JUMP JUMPDEST PUSH2 0x2EDA PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2537 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2F04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2F23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B9 DUP3 PUSH2 0x2F66 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B9 DUP3 PUSH2 0x2F46 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2FA4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8C JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x146E JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x2FC8 DUP2 PUSH2 0x2F46 JUMP JUMPDEST DUP2 EQ PUSH2 0x12D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2FC8 DUP2 PUSH2 0x2F51 JUMP JUMPDEST PUSH2 0x2FC8 DUP2 PUSH2 0x2F56 JUMP JUMPDEST PUSH2 0x2FC8 DUP2 PUSH2 0x2F59 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 ORIGIN 0xC9 0xEC 0x4E 0xAC 0xED 0xE 0xAC 0xDD 0xCD SWAP3 SLOAD 0xEC DUP13 CALLCODE 0xD4 0xE0 0x4C PUSH31 0x54A3D0D4726FE9202EE73454936C6578706572696D656E74616CF564736F6C PUSH4 0x43000511 STOP BLOCKHASH ",
              "sourceMap": "642:4875:133:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;642:4875:133;908:30;;-1:-1:-1;;;908:30:133;;;;;;;;;;;;;;;;1636:67:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5443:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5443:30:14;;;:::i;:::-;;;;;;;;1270:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1270:46:14;;;;;;;;:::i;6768:81::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6768:81:14;;;;;;;;:::i;:::-;;;;;;;;4372:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4372:55:14;;;;;;;;:::i;5558:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5558:53:14;;;;;;;;:::i;:::-;;;;;;;;3097:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3097:46:14;;;:::i;3969:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3969:32:14;;;:::i;1527:65::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1527:65:14;;;;;;;;:::i;3376:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3376:55:14;;;;;;;;:::i;4925:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4925:48:14;;;;;;;;:::i;1744:69::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1744:69:14;;;;;;;;:::i;2825:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2825:55:14;;;;;;;;:::i;2717:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2717:41:14;;;:::i;4832:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4832:37:14;;;:::i;2013:52::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2013:52:14;;;;;;;;:::i;:::-;;;;;;;;;;5060:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5060:50:14;;;:::i;1898:76::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1898:76:14;;;;;;;;:::i;:::-;;;;;;;;;;;;4542:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4542:47:14;;;;;;;;:::i;4617:217:133:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4617:217:133;;;;;;;;:::i;5650:57:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5650:57:14;;;;;;;;:::i;1087:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1087:24:14;;;:::i;6000:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6000:39:14;;;:::i;1012:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1012:25:14;;;:::i;3887:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3887:32:14;;;:::i;7007:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7007:17:14;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;4285:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4285:55:14;;;;;;;;:::i;1134:83:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;2994:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2994:55:14;;;;;;;;:::i;5113:49::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5113:49:14;;;:::i;5340:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5340:45:14;;;:::i;4075:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4075:47:14;;;:::i;5175:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5175:29:14;;;:::i;:::-;;;;;;;;5203:312:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5203:312:133;;;;;;;;:::i;:::-;;3781:57:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3781:57:14;;;;;;;;:::i;3605:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3605:57:14;;;;;;;;:::i;6272:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6272:30:14;;;:::i;1174:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1174:48:14;;;:::i;6168:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6168:55:14;;;;;;;;:::i;1347:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1347:37:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1070:397:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1070:397:133;;;;;;;;:::i;1437:48:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1437:48:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;6853:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6853:69:14;;;;;;;;:::i;6305:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6305:31:14;;;:::i;4651:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4651:43:14;;;:::i;3209:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3209:55:14;;;;;;;;:::i;2258:1989:133:-;;;;;;;;;:::i;:::-;;;;;;;;;2626:29:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2626:29:14;;;:::i;3490:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3490:47:14;;;:::i;4754:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4754:35:14;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1351:98:142;;;;;;;;:::i;6447:60:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6447:60:14;;;:::i;4198:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4198:55:14;;;:::i;5207:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5207:35:14;;;:::i;5389:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5389:20:14;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;4617:217:133:-;4747:7;4767:63;4788:11;4801:9;4812:17;4767:20;:63::i;:::-;4760:70;;4617:217;;;;;;:::o;5650:57:14:-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;5203:312:133:-;5346:23;5372:63;5393:11;5406:9;5417:17;5372:20;:63::i;:::-;5346:89;;5466:9;5447:15;:28;;5439:72;;;;-1:-1:-1;;;5439:72:133;;;;;;;;;5203:312;;;;;:::o;3781:57:14:-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1070:397:133:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;-1:-1:-1;;;1129:33:133;1165:40;;;:12;:40;;;;-1:-1:-1;;;;;1165:40:133;;1209:46;;1248:6;1209:10;:46::i;:::-;1259:55;-1:-1:-1;;;1307:6:133;1259:10;:55::i;:::-;1318:54;-1:-1:-1;;;1365:6:133;1318:10;:54::i;:::-;-1:-1:-1;;;1439:6:133;-1:-1:-1;;;;;1381:82:133;1412:25;-1:-1:-1;;;;;1381:82:133;;;;;;;;;;;1058:1:142;1070:397:133;:::o;1437:48:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2258:1989:133:-;2534:31;2567:29;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;141:5:99;;;;140:6;132:25;;;;-1:-1:-1;;;132:25:99;;;;;;;;;2610:22:133;2602:57;;;;-1:-1:-1;;;2602:57:133;;;;;;;;;2663:74;2684:11;2697:9;2708:17;2727:9;2663:20;:74::i;:::-;2799:9;:14;2795:799;;-1:-1:-1;;;;;2824:25:133;;2820:76;;2879:10;;-1:-1:-1;;;;;2879:10:133;;-1:-1:-1;2820:76:133;2931:10;;-1:-1:-1;;;;;2908:34:133;;;2931:10;;2908:34;2900:67;;;;-1:-1:-1;;;2900:67:133;;;;;;;;;2993:17;2980:9;:30;2972:69;;;;-1:-1:-1;;;2972:69:133;;;;;;;;;3099:10;;;;;;;;;-1:-1:-1;;;;;3099:10:133;-1:-1:-1;;;;;3099:18:133;;3124:17;3099:45;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3099:45:133;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3099:45:133;;;;;2795:799;;;3296:44;;-1:-1:-1;;;3296:44:133;;3254:11;;3218:26;;-1:-1:-1;;;;;3296:29:133;;;;;:44;;3334:4;;3296:44;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3296:44:133;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3296:44:133;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3296:44:133;;;;;;;;;3272:68;-1:-1:-1;3346:82:133;-1:-1:-1;;;;;3346:36:133;;3383:10;3403:4;3410:17;3346:82;:36;:82;:::i;:::-;3526:63;3575:13;3526:19;-1:-1:-1;;;;;3526:29:133;;3564:4;3526:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3526:44:133;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3526:44:133;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3526:44:133;;;;;;;;;:48;:63;:48;:63;:::i;:::-;3506:83;;2795:799;;;3688:421;;;;;;;;-1:-1:-1;;;;;3688:421:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3775:10;3688:421;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4010:8:133;4023:4;3688:10;:421::i;:::-;3637:472;;;;;;;;4176:9;-1:-1:-1;;;;;4119:124:133;4160:11;-1:-1:-1;;;;;4119:124:133;4136:10;-1:-1:-1;;;;;4119:124:133;;4190:21;4216:23;4119:124;;;;;;;;;;;;;;;;493:1:143;1234:14;:38;2258:1989:133;;;;-1:-1:-1;2258:1989:133;-1:-1:-1;;;;;;;2258:1989:133:o;2626:29:14:-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;7127:318:151:-;7314:9;;7404:33;;;7303:138;;-1:-1:-1;;;7303:138:151;;7256:23;;-1:-1:-1;;;;;7314:9:151;;;;7303:44;;:138;;7352:11;;7368:9;;7382:17;;7404:33;;;;7303:138;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7303:138:151;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7303:138:151;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7303::151;;;;;;;;780:87:137;853:10;780:87;:::o;7574:230:14:-;-1:-1:-1;;;;;;7635:17:14;;;;;;:12;:17;;;;;:26;;-1:-1:-1;;;;;;7635:26:14;-1:-1:-1;;;;;7635:26:14;;;;;;;;7670:20;7666:135;;7697:40;:15;-1:-1:-1;;;;;;7724:12:14;;7697:40;:26;:40;:::i;:::-;;7666:135;;;7753:43;:15;-1:-1:-1;;;;;;7783:12:14;;7753:43;:29;:43;:::i;:::-;;7666:135;7574:230;;:::o;831:204:144:-;962:68;;936:95;;955:5;;-1:-1:-1;;;985:27:144;962:68;;1014:4;;1020:2;;1024:5;;962:68;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;962:68:144;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;962:68:144;;;179:29:-1;;;;160:49;;;936:18:144;:95::i;:::-;831:204;;;;:::o;1201:125:145:-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1272:50;;1201:125;;;;;:::o;2909:2766:151:-;3381:7;;3105;;;;3381:12;;;:28;;-1:-1:-1;3397:7:151;;;;:12;;3381:28;3373:87;;;;-1:-1:-1;;;3373:87:151;;;;;;;;;3469:7;;;;3465:45;;3498:7;;;3488;;:17;3465:45;3532:7;;;;3521;;:18;;3513:59;;;;-1:-1:-1;;;3513:59:151;;;;;;;;;3577:31;3612:29;3646:18;3673:8;3668:851;;3709:7;;;;3705:810;;3797:14;3793:131;;;3833:28;3853:4;3858:1;3853:7;;;;;3833:19;:28::i;:::-;3820:41;;3793:131;;;3894:23;3909:4;3914:1;3909:7;;;;;3894:14;:23::i;:::-;3881:36;;3793:131;3934:15;;3930:303;;3980:8;;;;4019;;3958:227;;3980:8;4005:6;;3980:5;4068:1;4062:8;;;;;4168:10;3958:14;:227::i;:::-;4203:7;;:23;;4215:10;4203:11;:23::i;:::-;4193:33;;3930:303;3705:810;;;4309:14;4305:131;;;4345:28;4365:4;4370:1;4365:7;;4345:28;4332:41;;4305:131;;;4406:23;4421:4;4426:1;4421:7;;4406:23;4393:36;;4305:131;4446:15;;4442:68;;4480:7;;;;:23;;4492:10;4480:11;:23::i;:::-;4470:7;;;:33;4442:68;4531:20;;:25;4523:51;;;;-1:-1:-1;;;4523:51:151;;;;;;;;;4630:32;4650:5;4657:4;4630:19;:32::i;:::-;4671:7;;;;4579:83;;-1:-1:-1;4579:83:151;-1:-1:-1;4667:945:151;;4830:7;;4805:32;;4797:67;;;;-1:-1:-1;;;4797:67:151;;;;;;;;;4874:15;;4870:94;;4921:37;:21;4947:10;4921:37;:25;:37;:::i;:::-;4897:61;;4870:94;4667:945;;;5156:7;;;;5131:32;;;5123:64;;;;-1:-1:-1;;;5123:64:151;;;;;;;;;5227:7;;;;5200:34;;;5192:74;;;;-1:-1:-1;;;5192:74:151;;;;;;;;;5276:15;;5272:336;;5320:8;;;;;5369;;;5299:231;;5320:8;5344:6;;5320:5;5415:1;5409:8;;5299:231;5563:39;:23;5591:10;5563:39;:27;:39;:::i;:::-;5537:65;;5272:336;-1:-1:-1;5624:23:151;;;;-1:-1:-1;2909:2766:151;-1:-1:-1;;;;;;;2909:2766:151:o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;1293:212:95:-;1370:4;1385:20;1394:3;1399:5;1385:8;:20::i;:::-;1380:122;;-1:-1:-1;1431:10:95;;;;27::-1;;23:18;;;45:23;;;-1:-1;1431:22:95;;;;;;;;;;;;;1412:16;;;;;;;;;;;:41;1458:11;;1380:122;-1:-1:-1;1492:5:95;1485:12;;2102:845;2182:4;2196:20;2205:3;2210:5;2196:8;:20::i;:::-;2192:752;;;2223:21;2247:16;;;;;;;;;;;2266:1;2292:10;;:17;-1:-1:-1;;2247:20:95;;;;2292:21;2428:26;;;2424:318;;2462:17;2482:3;:10;;2493:9;2482:21;;;;;;;;;;;;;;;;2462:41;;2607:9;2579:3;:10;;2590:13;2579:25;;;;;;;;;;;;;;;;;;;:37;;;;2669:20;;;;;;;;;2708:1;2692:17;;2669:40;;2424:318;2807:9;:16;;;;;;;;;;2800:23;2878:10;;;:16;;;;;;;;;;;;;;;;;;;;;;;;2907:4;2900:11;;;;;;2564:999:144;3111:27;3119:5;-1:-1:-1;;;;;3111:25:144;;:27::i;:::-;3103:71;;;;-1:-1:-1;;;3103:71:144;;;;;;;;;3233:12;3247:23;3282:5;-1:-1:-1;;;;;3274:19:144;3294:4;3274:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3232:67:144;;;;3311:7;3303:52;;;;-1:-1:-1;;;3303:52:144;;;;;;;;;3364:17;;:21;3360:200;;3489:10;3478:30;;;;;;;;;;;;;;3470:85;;;;-1:-1:-1;;;3470:85:144;;;;;;;;1614:175:145;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;1172:159:96:-;1248:7;1268:59;1320:6;1268:43;1287:23;;1268:14;:18;;:43;;;;:::i;:::-;:51;:59;:51;:59;:::i;882:148::-;953:7;973:53;1019:6;973:37;992:17;;973:14;:18;;:37;;;;:::i;3804:940::-;3973:10;4025:15;;4021:720;;-1:-1:-1;;;;;4051:28:96;;;4091:1;4051:28;;;:22;:28;;;;;;;:42;4047:343;;-1:-1:-1;;;;;4127:28:96;;;;;;;:22;:28;;;;;;4101:91;;4127:28;4150:4;4163:8;4173:18;4101:25;:91::i;:::-;;;4219:165;4311:67;4371:6;4311:55;4334:31;;4311:18;:22;;:55;;;;:::i;:::-;:59;:67;:59;:67;:::i;:::-;4220:79;4243:55;4291:6;4243:43;4266:19;;4243:18;:22;;:43;;;;:::i;:55::-;4220:18;;:79;:22;:79;:::i;4219:165::-;4198:186;;4047:343;-1:-1:-1;;;;;4504:30:96;;;;;;:20;:30;;;;;;:54;;4539:18;4504:54;:34;:54;:::i;:::-;-1:-1:-1;;;;;4471:30:96;;;;;;;:20;:30;;;;;;;:87;;;;4569:57;;4599:6;;4471:30;4569:57;;;;;;;4607:18;;4569:57;;;;;;;;;;4673:63;4687:4;4693:6;4701:8;4711:12;4725:10;4673:13;:63::i;:::-;3804:940;;;;;;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;6021:741:151;6290:8;;;6320;;;;6348;;;;;6190:17;6382:8;;;;6422:7;;6460;;;;6498;;;;6213:325;;6121:31;;;;6190:17;;-1:-1:-1;;;6241:43:151;6213:325;;6290:8;;6320;;6348;;6382;;6422:7;;6460;6213:325;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;6213:325:151;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;6213:325:151;;;179:29:-1;;;;160:49;;;6577:9:151;;:28;;6213:325;;-1:-1:-1;;;;;;;;6577:9:151;;:28;;6213:325;;6577:28;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;6559:46:151;-1:-1:-1;6559:46:151;-1:-1:-1;6559:46:151;6609:31;;;;-1:-1:-1;;;6609:31:151;;;;;;;;;6702:2;6696:4;6692:13;6686:20;6659:47;;6751:2;6745:4;6741:13;6735:20;6710:45;;6654:105;;;;;;;:::o;3145:122:95:-;3225:4;3242:16;;;;;;;;;;;;:21;;;3145:122::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;3821:129;3883:7;3903:43;3911:1;3914;3903:43;;;;;;;;;;;;;;;;;:7;:43::i;3045:393:96:-;3340:15;;3312:122;;-1:-1:-1;;;3312:122:96;;3181:32;;;;-1:-1:-1;;;;;3340:15:96;;;;3312:82;;:122;;3395:8;;3405:6;;3413:8;;3423:10;;3312:122;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3312:122:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3312:122:96;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3312:122:96;;;;;;;;;3255:179;;;;-1:-1:-1;3045:393:96;-1:-1:-1;;;;;3045:393:96:o;2817:121:145:-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;7367:1524:96:-;7557:16;;7599:10;;-1:-1:-1;;;;;7618:24:96;;;7505:20;7618:24;;;:14;:24;;;;;;;;:38;;;;;;;;;;;7505:20;;7557:16;7599:10;;;;;7618:42;7614:116;;-1:-1:-1;;;;;7687:24:96;;;;;;;:14;:24;;;;;;;;:38;;;;;;;;;;;-1:-1:-1;7614:116:96;7996:15;;7834:12;;7848:17;;-1:-1:-1;;;;;7872:22:96;;;;-1:-1:-1;;;7929:45:96;7981:8;;7996:15;8086:44;8123:6;8086:32;:9;8100:17;8086:32;:13;:32;:::i;:44::-;7900:236;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;7900:236:96;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;7900:236:96;;;179:29:-1;;;;160:49;;;7872:269:96;;;;7900:236;7872:269;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7833:308:96;;;;8224:1;8215:7;8212:14;8209:2;;;8265;8259:4;8255:13;8249:20;8233:36;;8209:2;8286:17;;8282:606;;8317:15;;8342:16;;8310:63;;-1:-1:-1;;;8310:63:96;;-1:-1:-1;;;;;8317:15:96;;;;8310:31;;:63;;8342:16;;;8360:12;;8310:63;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8310:63:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8310:63:96;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8310:63:96;;;;;;;;;-1:-1:-1;8402:16:96;;8510:30;;8430:111;;8380:12;;-1:-1:-1;;;;;8402:16:96;;8430:111;;8490:4;;8496:12;;8430:111;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;8430:111:96;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;8402:145:96;;;8430:111;8402:145;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8379:168:96;;;8557:7;8553:331;;;8592:17;;:35;;8614:12;8592:35;:21;:35;:::i;:::-;8572:17;:55;8656:15;;8714:30;;8639:106;;8673:6;;-1:-1:-1;;;;;8656:15:96;;;;8639:106;;;;;;;;8681:17;;8700:12;;8639:106;;;;;;;;;;8553:331;;;8789:15;;8847:30;;8768:110;;8806:6;;-1:-1:-1;;;;;8789:15:96;;;;8768:110;;;;;;;;8814:17;;8833:12;;8768:110;;;;;;;;;;8553:331;8282:606;;7367:1524;;;;;;;;;;:::o;4045:285:145:-;4144:7;4233:12;4225:6;4217:29;;;;-1:-1:-1;;;4217:29:145;;;;;;;;;;-1:-1:-1;4255:6:145;4251:30;;-1:-1:-1;4275:1:145;4268:8;;4251:30;4284:9;4307:1;4302;4298;:5;4297:11;;;;;;4312:1;4296:17;;4045:285;-1:-1:-1;;;;;4045:285:145:o;3411:315::-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:128;217:13;;235:30;217:13;235:30;;277:130;344:20;;369:33;344:20;369:33;;414:128;480:20;;505:32;480:20;505:32;;550:440;;651:3;644:4;636:6;632:17;628:27;618:2;;669:1;666;659:12;618:2;706:6;693:20;728:64;743:48;784:6;743:48;;;728:64;;;719:73;;812:6;805:5;798:21;848:4;840:6;836:17;881:4;874:5;870:16;916:3;907:6;902:3;898:16;895:25;892:2;;;933:1;930;923:12;892:2;943:41;977:6;972:3;967;943:41;;;611:379;;;;;;;;1135:134;1213:13;;1231:33;1213:13;1231:33;;1276:241;;1380:2;1368:9;1359:7;1355:23;1351:32;1348:2;;;1396:1;1393;1386:12;1348:2;1431:1;1448:53;1493:7;1473:9;1448:53;;1524:366;;;1645:2;1633:9;1624:7;1620:23;1616:32;1613:2;;;1661:1;1658;1651:12;1613:2;1696:1;1713:53;1758:7;1738:9;1713:53;;;1703:63;;1675:97;1803:2;1821:53;1866:7;1857:6;1846:9;1842:22;1821:53;;;1811:63;;1782:98;1607:283;;;;;;1897:1225;;;;;;;;;2129:3;2117:9;2108:7;2104:23;2100:33;2097:2;;;2146:1;2143;2136:12;2097:2;2181:1;2198:53;2243:7;2223:9;2198:53;;;2188:63;;2160:97;2288:2;2306:53;2351:7;2342:6;2331:9;2327:22;2306:53;;;2296:63;;2267:98;2396:2;2414:53;2459:7;2450:6;2439:9;2435:22;2414:53;;;2404:63;;2375:98;2504:2;2522:53;2567:7;2558:6;2547:9;2543:22;2522:53;;;2512:63;;2483:98;2612:3;2631:53;2676:7;2667:6;2656:9;2652:22;2631:53;;;2621:63;;2591:99;2721:3;2740:53;2785:7;2776:6;2765:9;2761:22;2740:53;;;2730:63;;2700:99;2830:3;2849:53;2894:7;2885:6;2874:9;2870:22;2849:53;;;2839:63;;2809:99;2967:3;2956:9;2952:19;2939:33;2992:18;2984:6;2981:30;2978:2;;;3024:1;3021;3014:12;2978:2;3044:62;3098:7;3089:6;3078:9;3074:22;3044:62;;;3034:72;;2918:194;2091:1031;;;;;;;;;;;;3129:491;;;;3267:2;3255:9;3246:7;3242:23;3238:32;3235:2;;;3283:1;3280;3273:12;3235:2;3318:1;3335:53;3380:7;3360:9;3335:53;;;3325:63;;3297:97;3425:2;3443:53;3488:7;3479:6;3468:9;3464:22;3443:53;;;3433:63;;3404:98;3533:2;3551:53;3596:7;3587:6;3576:9;3572:22;3551:53;;;3541:63;;3512:98;3229:391;;;;;;3627:617;;;;;3782:3;3770:9;3761:7;3757:23;3753:33;3750:2;;;3799:1;3796;3789:12;3750:2;3834:1;3851:53;3896:7;3876:9;3851:53;;;3841:63;;3813:97;3941:2;3959:53;4004:7;3995:6;3984:9;3980:22;3959:53;;;3949:63;;3920:98;4049:2;4067:53;4112:7;4103:6;4092:9;4088:22;4067:53;;;4057:63;;4028:98;4157:2;4175:53;4220:7;4211:6;4200:9;4196:22;4175:53;;;4165:63;;4136:98;3744:500;;;;;;;;4251:366;;;4372:2;4360:9;4351:7;4347:23;4343:32;4340:2;;;4388:1;4385;4378:12;4340:2;4423:1;4440:53;4485:7;4465:9;4440:53;;;4430:63;;4402:97;4530:2;4548:53;4593:7;4584:6;4573:9;4569:22;4548:53;;4624:257;;4736:2;4724:9;4715:7;4711:23;4707:32;4704:2;;;4752:1;4749;4742:12;4704:2;4787:1;4804:61;4857:7;4837:9;4804:61;;4888:241;;4992:2;4980:9;4971:7;4967:23;4963:32;4960:2;;;5008:1;5005;4998:12;4960:2;5043:1;5060:53;5105:7;5085:9;5060:53;;5136:366;;;5257:2;5245:9;5236:7;5232:23;5228:32;5225:2;;;5273:1;5270;5263:12;5225:2;5308:1;5325:53;5370:7;5350:9;5325:53;;5509:239;;5612:2;5600:9;5591:7;5587:23;5583:32;5580:2;;;5628:1;5625;5618:12;5580:2;5663:1;5680:52;5724:7;5704:9;5680:52;;5755:263;;5870:2;5858:9;5849:7;5845:23;5841:32;5838:2;;;5886:1;5883;5876:12;5838:2;5921:1;5938:64;5994:7;5974:9;5938:64;;6025:399;;;6157:2;6145:9;6136:7;6132:23;6128:32;6125:2;;;6173:1;6170;6163:12;6125:2;6208:1;6225:64;6281:7;6261:9;6225:64;;;6215:74;;6187:108;6326:2;6344:64;6400:7;6391:6;6380:9;6376:22;6344:64;;6431:113;6514:24;6532:5;6514:24;;;6509:3;6502:37;6496:48;;;6551:104;6628:21;6643:5;6628:21;;6662:113;6745:24;6763:5;6745:24;;6782:356;;6910:38;6942:5;6910:38;;;6960:88;7041:6;7036:3;6960:88;;;6953:95;;7053:52;7098:6;7093:3;7086:4;7079:5;7075:16;7053:52;;;7117:16;;;;;6890:248;-1:-1;;6890:248;7145:168;7249:58;7301:5;7249:58;;7320:347;;7432:39;7465:5;7432:39;;;7483:71;7547:6;7542:3;7483:71;;;7476:78;;7559:52;7604:6;7599:3;7592:4;7585:5;7581:16;7559:52;;;7632:29;7654:6;7632:29;;;7623:39;;;;7412:255;-1:-1;;;7412:255;7675:305;;7835:66;7899:1;7894:3;7835:66;;;-1:-1;;;7914:29;;7971:2;7962:12;;7821:159;-1:-1;;7821:159;7989:322;;8149:67;8213:2;8208:3;8149:67;;;-1:-1;;;8229:45;;8302:2;8293:12;;8135:176;-1:-1;;8135:176;8320:327;;8480:67;8544:2;8539:3;8480:67;;;8580:29;8560:50;;8638:2;8629:12;;8466:181;-1:-1;;8466:181;8656:375;;8816:67;8880:2;8875:3;8816:67;;;8916:34;8896:55;;-1:-1;;;8980:2;8971:12;;8964:30;9022:2;9013:12;;8802:229;-1:-1;;8802:229;9040:327;;9200:67;9264:2;9259:3;9200:67;;;9300:29;9280:50;;9358:2;9349:12;;9186:181;-1:-1;;9186:181;9376:332;;9536:67;9600:2;9595:3;9536:67;;;9636:34;9616:55;;9699:2;9690:12;;9522:186;-1:-1;;9522:186;9717:319;;9877:67;9941:2;9936:3;9877:67;;;-1:-1;;;9957:42;;10027:2;10018:12;;9863:173;-1:-1;;9863:173;10045:328;;10205:67;10269:2;10264:3;10205:67;;;10305:30;10285:51;;10364:2;10355:12;;10191:182;-1:-1;;10191:182;10382:331;;10542:67;10606:2;10601:3;10542:67;;;10642:33;10622:54;;10704:2;10695:12;;10528:185;-1:-1;;10528:185;10722:320;;10882:67;10946:2;10941:3;10882:67;;;-1:-1;;;10962:43;;11033:2;11024:12;;10868:174;-1:-1;;10868:174;11051:370;;11211:67;11275:2;11270:3;11211:67;;;11311:34;11291:55;;-1:-1;;;11375:2;11366:12;;11359:25;11412:2;11403:12;;11197:224;-1:-1;;11197:224;11430:312;;11590:67;11654:2;11649:3;11590:67;;;-1:-1;;;11670:35;;11733:2;11724:12;;11576:166;-1:-1;;11576:166;11751:326;;11911:67;11975:2;11970:3;11911:67;;;12011:28;11991:49;;12068:2;12059:12;;11897:180;-1:-1;;11897:180;12086:320;;12246:67;12310:2;12305:3;12246:67;;;-1:-1;;;12326:43;;12397:2;12388:12;;12232:174;-1:-1;;12232:174;12415:383;;12575:67;12639:2;12634:3;12575:67;;;12675:34;12655:55;;-1:-1;;;12739:2;12730:12;;12723:38;12789:2;12780:12;;12561:237;-1:-1;;12561:237;12807:312;;12967:67;13031:2;13026:3;12967:67;;;-1:-1;;;13047:35;;13110:2;13101:12;;12953:166;-1:-1;;12953:166;13128:313;;13288:67;13352:2;13347:3;13288:67;;;-1:-1;;;13368:36;;13432:2;13423:12;;13274:167;-1:-1;;13274:167;13450:379;;13610:67;13674:2;13669:3;13610:67;;;13710:34;13690:55;;-1:-1;;;13774:2;13765:12;;13758:34;13820:2;13811:12;;13596:233;-1:-1;;13596:233;13838:311;;13998:67;14062:2;14057:3;13998:67;;;-1:-1;;;14078:34;;14140:2;14131:12;;13984:165;-1:-1;;13984:165;14158:322;;14318:67;14382:2;14377:3;14318:67;;;-1:-1;;;14398:45;;14471:2;14462:12;;14304:176;-1:-1;;14304:176;14489:331;;14649:67;14713:2;14708:3;14649:67;;;14749:33;14729:54;;14811:2;14802:12;;14635:185;-1:-1;;14635:185;14948:262;;15092:93;15181:3;15172:6;15092:93;;15217:213;15335:2;15320:18;;15349:71;15324:9;15393:6;15349:71;;15437:883;15723:3;15708:19;;15738:71;15712:9;15782:6;15738:71;;;15820:72;15888:2;15877:9;15873:18;15864:6;15820:72;;;15903;15971:2;15960:9;15956:18;15947:6;15903:72;;;15986;16054:2;16043:9;16039:18;16030:6;15986:72;;;16069:73;16137:3;16126:9;16122:19;16113:6;16069:73;;;16153;16221:3;16210:9;16206:19;16197:6;16153:73;;;16237;16305:3;16294:9;16290:19;16281:6;16237:73;;;15694:626;;;;;;;;;;;16327:547;16529:3;16514:19;;16544:71;16518:9;16588:6;16544:71;;;16626:72;16694:2;16683:9;16679:18;16670:6;16626:72;;;16709;16777:2;16766:9;16762:18;16753:6;16709:72;;;16792;16860:2;16849:9;16845:18;16836:6;16792:72;;;16500:374;;;;;;;;16881:435;17055:2;17040:18;;17069:71;17044:9;17113:6;17069:71;;;17151:72;17219:2;17208:9;17204:18;17195:6;17151:72;;;17234;17302:2;17291:9;17287:18;17278:6;17234:72;;17323:547;17525:3;17510:19;;17540:71;17514:9;17584:6;17540:71;;;17622:72;17690:2;17679:9;17675:18;17666:6;17622:72;;;17705;17773:2;17762:9;17758:18;17749:6;17705:72;;;17788;17856:2;17845:9;17841:18;17832:6;17788:72;;17877:324;18023:2;18008:18;;18037:71;18012:9;18081:6;18037:71;;;18119:72;18187:2;18176:9;18172:18;18163:6;18119:72;;18208:435;18382:2;18367:18;;18396:71;18371:9;18440:6;18396:71;;;18478:72;18546:2;18535:9;18531:18;18522:6;18478:72;;18650:201;18762:2;18747:18;;18776:65;18751:9;18814:6;18776:65;;18858:983;19166:3;19151:19;;19181:71;19155:9;19225:6;19181:71;;;19263:66;19325:2;19314:9;19310:18;19301:6;19263:66;;;19340:72;19408:2;19397:9;19393:18;19384:6;19340:72;;;19423;19491:2;19480:9;19476:18;19467:6;19423:72;;;19506:73;19574:3;19563:9;19559:19;19550:6;19506:73;;;19590;19658:3;19647:9;19643:19;19634:6;19590:73;;;19674;19742:3;19731:9;19727:19;19718:6;19674:73;;;19758;19826:3;19815:9;19811:19;19802:6;19758:73;;;19137:704;;;;;;;;;;;;19848:1435;20270:3;20255:19;;20285:71;20259:9;20329:6;20285:71;;;20367:72;20435:2;20424:9;20420:18;20411:6;20367:72;;;20450;20518:2;20507:9;20503:18;20494:6;20450:72;;;20533:66;20595:2;20584:9;20580:18;20571:6;20533:66;;;20610:73;20678:3;20667:9;20663:19;20654:6;20610:73;;;20694;20762:3;20751:9;20747:19;20738:6;20694:73;;;20778;20846:3;20835:9;20831:19;20822:6;20778:73;;;20862;20930:3;20919:9;20915:19;20906:6;20862:73;;;20946;21014:3;21003:9;20999:19;20990:6;20946:73;;;21030;21098:3;21087:9;21083:19;21074:6;21030:73;;;21114:74;21183:3;21172:9;21168:19;21158:7;21114:74;;;21199;21268:3;21257:9;21253:19;21243:7;21199:74;;;20241:1042;;;;;;;;;;;;;;;;21290:255;21429:2;21414:18;;21443:92;21418:9;21508:6;21443:92;;21552:301;21690:2;21704:47;;;21675:18;;21765:78;21675:18;21829:6;21765:78;;21860:407;22051:2;22065:47;;;22036:18;;22126:131;22036:18;22126:131;;22274:407;22465:2;22479:47;;;22450:18;;22540:131;22450:18;22540:131;;22688:407;22879:2;22893:47;;;22864:18;;22954:131;22864:18;22954:131;;23102:407;23293:2;23307:47;;;23278:18;;23368:131;23278:18;23368:131;;23516:407;23707:2;23721:47;;;23692:18;;23782:131;23692:18;23782:131;;23930:407;24121:2;24135:47;;;24106:18;;24196:131;24106:18;24196:131;;24344:407;24535:2;24549:47;;;24520:18;;24610:131;24520:18;24610:131;;24758:407;24949:2;24963:47;;;24934:18;;25024:131;24934:18;25024:131;;25172:407;25363:2;25377:47;;;25348:18;;25438:131;25348:18;25438:131;;25586:407;25777:2;25791:47;;;25762:18;;25852:131;25762:18;25852:131;;26000:407;26191:2;26205:47;;;26176:18;;26266:131;26176:18;26266:131;;26414:407;26605:2;26619:47;;;26590:18;;26680:131;26590:18;26680:131;;26828:407;27019:2;27033:47;;;27004:18;;27094:131;27004:18;27094:131;;27242:407;27433:2;27447:47;;;27418:18;;27508:131;27418:18;27508:131;;27656:407;27847:2;27861:47;;;27832:18;;27922:131;27832:18;27922:131;;28070:407;28261:2;28275:47;;;28246:18;;28336:131;28246:18;28336:131;;28484:407;28675:2;28689:47;;;28660:18;;28750:131;28660:18;28750:131;;28898:407;29089:2;29103:47;;;29074:18;;29164:131;29074:18;29164:131;;29312:407;29503:2;29517:47;;;29488:18;;29578:131;29488:18;29578:131;;29726:407;29917:2;29931:47;;;29902:18;;29992:131;29902:18;29992:131;;30140:407;30331:2;30345:47;;;30316:18;;30406:131;30316:18;30406:131;;30554:213;30672:2;30657:18;;30686:71;30661:9;30730:6;30686:71;;30774:324;30920:2;30905:18;;30934:71;30909:9;30978:6;30934:71;;31105:435;31279:2;31264:18;;31293:71;31268:9;31337:6;31293:71;;31547:659;31777:3;31762:19;;31792:71;31766:9;31836:6;31792:71;;;31874:72;31942:2;31931:9;31927:18;31918:6;31874:72;;;31957;32025:2;32014:9;32010:18;32001:6;31957:72;;;32040;32108:2;32097:9;32093:18;32084:6;32040:72;;;32123:73;32191:3;32180:9;32176:19;32167:6;32123:73;;;31748:458;;;;;;;;;32213:771;32471:3;32456:19;;32486:71;32460:9;32530:6;32486:71;;;32568:72;32636:2;32625:9;32621:18;32612:6;32568:72;;;32651;32719:2;32708:9;32704:18;32695:6;32651:72;;;32734;32802:2;32791:9;32787:18;32778:6;32734:72;;;32817:73;32885:3;32874:9;32870:19;32861:6;32817:73;;;32901;32969:3;32958:9;32954:19;32945:6;32901:73;;;32442:542;;;;;;;;;;32991:256;33053:2;33047:9;33079:17;;;33154:18;33139:34;;33175:22;;;33136:62;33133:2;;;33211:1;33208;33201:12;33133:2;33227;33220:22;33031:216;;-1:-1;33031:216;33254:321;;33397:18;33389:6;33386:30;33383:2;;;33429:1;33426;33419:12;33383:2;-1:-1;33560:4;33496;33473:17;;;;-1:-1;;33469:33;33550:15;;33320:255;33582:121;33669:12;;33640:63;33840:144;33975:3;33953:31;-1:-1;33953:31;33993:163;34096:19;;;34145:4;34136:14;;34089:67;34164:91;;34226:24;34244:5;34226:24;;34262:85;34328:13;34321:21;;34304:43;34354:72;34416:5;34399:27;34433:144;-1:-1;;;;;;34494:78;;34477:100;34584:121;-1:-1;;;;;34646:54;;34629:76;34791:163;;34891:58;34943:5;34891:58;;35098:145;35179:6;35174:3;35169;35156:30;-1:-1;35235:1;35217:16;;35210:27;35149:94;35252:268;35317:1;35324:101;35338:6;35335:1;35332:13;35324:101;;;35405:11;;;35399:18;35386:11;;;35379:39;35360:2;35353:10;35324:101;;;35440:6;35437:1;35434:13;35431:2;;;-1:-1;;35505:1;35487:16;;35480:27;35301:219;35528:97;35616:2;35596:14;-1:-1;;35592:28;;35576:49;35633:117;35702:24;35720:5;35702:24;;;35695:5;35692:35;35682:2;;35741:1;35738;35731:12;35757:111;35823:21;35838:5;35823:21;;35875:117;35944:24;35962:5;35944:24;;35999:115;36067:23;36084:5;36067:23;"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "checkPriceDivergence(address,address,uint256,uint256)": "b17da56e",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "getSwapExpectedReturn(address,address,uint256)": "69455ddc",
              "initialize(address)": "c4d66de8",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapExternal(address,address,address,address,uint256,uint256,uint256,bytes)": "e321b540",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "checkPriceDivergence(address,address,uint256,uint256)": {
                "notice": "Check the slippage based on the swapExpectedReturn."
              },
              "constructor": "Empty public constructor.",
              "getSwapExpectedReturn(address,address,uint256)": {
                "notice": "Get the swap expected return value."
              },
              "initialize(address)": {
                "notice": "Set function selectors on target contract."
              },
              "swapExternal(address,address,address,address,uint256,uint256,uint256,bytes)": {
                "notice": "Perform a swap w/ tokens or rBTC as source currency."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains functions to calculate and execute swaps."
          }
        }
      },
      "contracts/modules/interfaces/ProtocolAffiliatesInterface.sol": {
        "ProtocolAffiliatesInterface": {
          "abi": [
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user_",
                  "type": "address"
                }
              ],
              "name": "getUserNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "affiliate",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "payTradingFeeToAffiliatesReferrer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "affiliatesBonusSOVAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "affiliatesBonusTokenAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "referrer",
                  "type": "address"
                }
              ],
              "name": "setAffiliatesReferrer",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user_",
                  "type": "address"
                }
              ],
              "name": "setUserNotFirstTradeFlag",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getUserNotFirstTradeFlag(address)": "b05f6570",
              "payTradingFeeToAffiliatesReferrer(address,address,address,uint256)": "0d4d11fe",
              "setAffiliatesReferrer(address,address)": "c9ddf448",
              "setUserNotFirstTradeFlag(address)": "f06a9c6b"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/multisig/MultiSigKeyHolders.sol": {
        "MultiSigKeyHolders": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "account",
                  "type": "string"
                }
              ],
              "name": "BitcoinAddressAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "account",
                  "type": "string"
                }
              ],
              "name": "BitcoinAddressRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "required",
                  "type": "uint256"
                }
              ],
              "name": "BitcoinRequirementChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "EthereumAddressAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "EthereumAddressRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "required",
                  "type": "uint256"
                }
              ],
              "name": "EthereumRequirementChanged",
              "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"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "MAX_OWNER_COUNT",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "_address",
                  "type": "string"
                }
              ],
              "name": "addBitcoinAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "string[]",
                  "name": "_address",
                  "type": "string[]"
                }
              ],
              "name": "addBitcoinAddresses",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_address",
                  "type": "address"
                }
              ],
              "name": "addEthereumAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_address",
                  "type": "address[]"
                }
              ],
              "name": "addEthereumAddresses",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_ethereumAddress",
                  "type": "address[]"
                },
                {
                  "internalType": "string[]",
                  "name": "_bitcoinAddress",
                  "type": "string[]"
                }
              ],
              "name": "addEthereumAndBitcoinAddresses",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "bitcoinRequired",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_required",
                  "type": "uint256"
                }
              ],
              "name": "changeBitcoinRequirement",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_required",
                  "type": "uint256"
                }
              ],
              "name": "changeEthereumRequirement",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "ethereumRequired",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getBitcoinAddresses",
              "outputs": [
                {
                  "internalType": "string[]",
                  "name": "",
                  "type": "string[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getEthereumAddresses",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "_address",
                  "type": "string"
                }
              ],
              "name": "isBitcoinAddressOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_address",
                  "type": "address"
                }
              ],
              "name": "isEthereumAddressOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "_address",
                  "type": "string"
                }
              ],
              "name": "removeBitcoinAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "string[]",
                  "name": "_address",
                  "type": "string[]"
                }
              ],
              "name": "removeBitcoinAddresses",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_address",
                  "type": "address"
                }
              ],
              "name": "removeEthereumAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_address",
                  "type": "address[]"
                }
              ],
              "name": "removeEthereumAddresses",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_ethereumAddress",
                  "type": "address[]"
                },
                {
                  "internalType": "string[]",
                  "name": "_bitcoinAddress",
                  "type": "string[]"
                }
              ],
              "name": "removeEthereumAndBitcoinAddresses",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "addBitcoinAddress(string)": {
                "params": {
                  "_address": "The address to be added."
                }
              },
              "addBitcoinAddresses(string[])": {
                "params": {
                  "_address": "The addresses to be added."
                }
              },
              "addEthereumAddress(address)": {
                "params": {
                  "_address": "The address to be added."
                }
              },
              "addEthereumAddresses(address[])": {
                "params": {
                  "_address": "The addresses to be added."
                }
              },
              "addEthereumAndBitcoinAddresses(address[],string[])": {
                "params": {
                  "_bitcoinAddress": "the bitcoin addresses to be added.",
                  "_ethereumAddress": "the rBTC addresses to be added."
                }
              },
              "changeBitcoinRequirement(uint256)": {
                "params": {
                  "_required": "The new value of the bitcoinRequired flag."
                }
              },
              "changeEthereumRequirement(uint256)": {
                "params": {
                  "_required": "The new value of the ethereumRequired flag."
                }
              },
              "isBitcoinAddressOwner(string)": {
                "params": {
                  "_address": "The bitcoin address to be checked."
                }
              },
              "isEthereumAddressOwner(address)": {
                "params": {
                  "_address": "The rBTC address to be checked."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeBitcoinAddress(string)": {
                "params": {
                  "_address": "The address to be removed."
                }
              },
              "removeBitcoinAddresses(string[])": {
                "params": {
                  "_address": "The addresses to be removed."
                }
              },
              "removeEthereumAddress(address)": {
                "params": {
                  "_address": "The address to be removed."
                }
              },
              "removeEthereumAddresses(address[])": {
                "params": {
                  "_address": "The addresses to be removed."
                }
              },
              "removeEthereumAndBitcoinAddresses(address[],string[])": {
                "params": {
                  "_bitcoinAddress": "The bitcoin addresses to be removed.",
                  "_ethereumAddress": "The rBTC addresses to be removed."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Multi Signature Key Holders contract. * This contract contains the implementation of functions to add and remove key holders w/ rBTC and BTC addresses."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526002600381905560065560006100216001600160e01b0361007016565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610074565b3390565b6118e8806100836000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80639360142f116100b8578063d3096ae01161007c578063d3096ae01461027f578063d4c0008b14610292578063d74f8edd146102a7578063f2fde38b146102af578063f56bd732146102c2578063faa139fe146102d557610142565b80639360142f14610220578063a3f3fe3d14610233578063b5ee184814610246578063b78ece3214610259578063d2bc3e081461026c57610142565b80634bb9e2f81161010a5780634bb9e2f8146101b55780635d345fef146101c8578063840943de146101db5780638cada17b146101ee5780638da5cb5b146101f65780638f32d59b1461020b57610142565b806303ba2780146101475780632697d0e11461015c57806329e0dc181461016f5780632bb094311461018d57806343e12b9f146101a0575b600080fd5b61015a610155366004611408565b6102e8565b005b61015a61016a36600461139f565b610349565b6101776103c6565b6040516101849190611784565b60405180910390f35b61015a61019b36600461139f565b6103cc565b6101a8610451565b6040516101849190611734565b61015a6101c3366004611472565b61052a565b61015a6101d6366004611408565b610603565b61015a6101e936600461143d565b61064a565b61017761067a565b6101fe610680565b6040516101849190611715565b61021361068f565b6040516101849190611745565b61015a61022e366004611344565b6106b3565b610213610241366004611344565b6106e0565b61015a61025436600461143d565b6106fe565b61015a610267366004611344565b61072b565b61015a61027a366004611472565b610758565b61015a61028d36600461136a565b610824565b61029a61086b565b6040516101849190611723565b6101776108cd565b61015a6102bd366004611344565b6108d2565b61015a6102d036600461136a565b6108ff565b6102136102e336600461143d565b610946565b6102f061068f565b6103155760405162461bcd60e51b815260040161030c90611774565b60405180910390fd5b60005b81518110156103455761033d82828151811061033057fe5b6020026020010151610972565b600101610318565b5050565b61035161068f565b61036d5760405162461bcd60e51b815260040161030c90611774565b60005b825181101561039d5761039583828151811061038857fe5b6020026020010151610b50565b600101610370565b5060005b81518110156103c1576103b982828151811061033057fe5b6001016103a1565b505050565b60065481565b6103d461068f565b6103f05760405162461bcd60e51b815260040161030c90611774565b60005b82518110156104205761041883828151811061040b57fe5b6020026020010151610d27565b6001016103f3565b5060005b81518110156103c15761044982828151811061043c57fe5b6020026020010151610e69565b600101610424565b60606005805480602002602001604051908101604052809291908181526020016000905b828210156105205760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561050c5780601f106104e15761010080835404028352916020019161050c565b820191906000526020600020905b8154815290600101906020018083116104ef57829003601f168201915b505050505081526020019060010190610475565b5050505090505b90565b61053261068f565b61054e5760405162461bcd60e51b815260040161030c90611774565b60055481603282118015906105635750818111155b801561056e57508015155b801561057957508115155b6040518060400160405280601081526020016f125b9d985b1a59081c995c5d5a5c995960821b815250906105c05760405162461bcd60e51b815260040161030c9190611753565b5060068390556040517fce34ac3fc7f2531f33952b09096a26cf746a2bf1ef14ba108747982e9f9a41e8906105f6908590611784565b60405180910390a1505050565b61060b61068f565b6106275760405162461bcd60e51b815260040161030c90611774565b60005b81518110156103455761064282828151811061043c57fe5b60010161062a565b61065261068f565b61066e5760405162461bcd60e51b815260040161030c90611774565b61067781610972565b50565b60035481565b6000546001600160a01b031690565b600080546001600160a01b03166106a4610fbc565b6001600160a01b031614905090565b6106bb61068f565b6106d75760405162461bcd60e51b815260040161030c90611774565b61067781610d27565b6001600160a01b031660009081526001602052604090205460ff1690565b61070661068f565b6107225760405162461bcd60e51b815260040161030c90611774565b61067781610e69565b61073361068f565b61074f5760405162461bcd60e51b815260040161030c90611774565b61067781610b50565b61076061068f565b61077c5760405162461bcd60e51b815260040161030c90611774565b60025481603282118015906107915750818111155b801561079c57508015155b80156107a757508115155b6040518060400160405280601081526020016f125b9d985b1a59081c995c5d5a5c995960821b815250906107ee5760405162461bcd60e51b815260040161030c9190611753565b5060038390556040517fbb1682552d0ed7d0d9bb09a76c2a4758555420126c8c1816a25b7a041f26e90c906105f6908590611784565b61082c61068f565b6108485760405162461bcd60e51b815260040161030c90611774565b60005b81518110156103455761086382828151811061038857fe5b60010161084b565b606060028054806020026020016040519081016040528092919081815260200182805480156108c357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108a5575b5050505050905090565b603281565b6108da61068f565b6108f65760405162461bcd60e51b815260040161030c90611774565b61067781610fc0565b61090761068f565b6109235760405162461bcd60e51b815260040161030c90611774565b60005b81518110156103455761093e82828151811061040b57fe5b600101610926565b600060048260405161095891906116fd565b9081526040519081900360200190205460ff169050919050565b805160408051808201909152600f81526e496e76616c6964206164647265737360881b6020820152906109b85760405162461bcd60e51b815260040161030c9190611753565b506004816040516109c991906116fd565b9081526040519081900360200190205460ff1615610b165760006004826040516109f391906116fd565b908152604051908190036020019020546005546001600160f81b03610100909204919091169150600019018114610add57600580546000198101908110610a3657fe5b906000526020600020016005826001600160f81b031681548110610a5657fe5b906000526020600020019080546001816001161561010002031660029004610a7f929190611041565b508060046005836001600160f81b031681548110610a9957fe5b90600052602060002001604051610ab09190611709565b90815260405190819003602001902080546001600160f81b03929092166101000260ff9092169190911790555b6005805490610af09060001983016110c6565b50600482604051610b0191906116fd565b90815260405190819003602001902060009055505b7f61d47078ad00d7177b977bf2d70f83d7c86266a51aa241ded9afa89cd83bee4681604051610b459190611753565b60405180910390a150565b60408051808201909152600f81526e496e76616c6964206164647265737360881b60208201526001600160a01b038216610b9d5760405162461bcd60e51b815260040161030c9190611753565b506001600160a01b03811660009081526001602052604090205460ff1615610cf0576001600160a01b0381166000908152600160205260409020546002546101009091046001600160f81b031690600019018114610cc157600280546000198101908110610c0757fe5b600091825260209091200154600280546001600160a01b03909216916001600160f81b038416908110610c3657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600160006002846001600160f81b031681548110610c7f57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902080546001600160f81b03929092166101000260ff9092169190911790555b6002805490610cd49060001983016110ea565b50506001600160a01b0381166000908152600160205260408120555b6040516001600160a01b038216907f336a6bdd1075ef08c19331af1a3ac0d66b1910852390725e0fdddeff191717c190600090a250565b60408051808201909152600f81526e496e76616c6964206164647265737360881b60208201526001600160a01b038216610d745760405162461bcd60e51b815260040161030c9190611753565b506001600160a01b03811660009081526001602052604090205460ff16610e32576040805180820182526001808252600280546001600160f81b0390811660208086019182526001600160a01b0388166000818152918690529681209551865492519093166101000292151560ff199092169190911760ff1691909117909355805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191690911790555b6040516001600160a01b038216907f2d0197c2d3ef0c60b1e4909be06fae62a74bb52bd433e9b27c96fdcefcc022a390600090a250565b805160408051808201909152600f81526e496e76616c6964206164647265737360881b602082015290610eaf5760405162461bcd60e51b815260040161030c9190611753565b50600481604051610ec091906116fd565b9081526040519081900360200190205460ff16610f8d57604080518082018252600181526005546001600160f81b031660208201529051600490610f059084906116fd565b90815260405190819003602090810190912082518154938301516001600160f81b03166101000290151560ff199094169390931760ff1692909217909155600580546001810180835560009290925283519192610f8a927f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0909201919085019061110e565b50505b7f44a353d346cb67fe7f36026d2e29eb2954e23594866a194420cf38941607f23e81604051610b459190611753565b3390565b6001600160a01b038116610fe65760405162461bcd60e51b815260040161030c90611764565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061107a57805485556110b6565b828001600101855582156110b657600052602060002091601f016020900482015b828111156110b657825482559160010191906001019061109b565b506110c292915061117c565b5090565b8154818355818111156103c1576000838152602090206103c1918101908301611196565b8154818355818111156103c1576000838152602090206103c191810190830161117c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061114f57805160ff19168380011785556110b6565b828001600101855582156110b6579182015b828111156110b6578251825591602001919060010190611161565b61052791905b808211156110c25760008155600101611182565b61052791905b808211156110c25760006111b082826111b9565b5060010161119c565b50805460018160011615610100020316600290046000825580601f106111df5750610677565b601f016020900490600052602060002090810190610677919061117c565b803561120881611888565b92915050565b600082601f83011261121f57600080fd5b813561123261122d826117b9565b611792565b9150818183526020840193506020810190508385602084028201111561125757600080fd5b60005b83811015611283578161126d88826111fd565b845250602092830192919091019060010161125a565b5050505092915050565b600082601f83011261129e57600080fd5b81356112ac61122d826117b9565b81815260209384019390925082018360005b8381101561128357813586016112d488826112ea565b84525060209283019291909101906001016112be565b600082601f8301126112fb57600080fd5b813561130961122d826117da565b9150808252602083016020830185838301111561132557600080fd5b611330838284611842565b50505092915050565b80356112088161189c565b60006020828403121561135657600080fd5b600061136284846111fd565b949350505050565b60006020828403121561137c57600080fd5b813567ffffffffffffffff81111561139357600080fd5b6113628482850161120e565b600080604083850312156113b257600080fd5b823567ffffffffffffffff8111156113c957600080fd5b6113d58582860161120e565b925050602083013567ffffffffffffffff8111156113f257600080fd5b6113fe8582860161128d565b9150509250929050565b60006020828403121561141a57600080fd5b813567ffffffffffffffff81111561143157600080fd5b6113628482850161128d565b60006020828403121561144f57600080fd5b813567ffffffffffffffff81111561146657600080fd5b611362848285016112ea565b60006020828403121561148457600080fd5b60006113628484611339565b600061149c83836114b7565b505060200190565b60006114b08383611596565b9392505050565b6114c081611826565b82525050565b60006114d182611814565b6114db8185611818565b93506114e683611802565b8060005b838110156115145781516114fe8882611490565b975061150983611802565b9250506001016114ea565b509495945050505050565b600061152a82611814565b6115348185611818565b93508360208202850161154685611802565b8060005b85811015611580578484038952815161156385826114a4565b945061156e83611802565b60209a909a019992505060010161154a565b5091979650505050505050565b6114c081611831565b60006115a182611814565b6115ab8185611818565b93506115bb81856020860161184e565b6115c48161187e565b9093019392505050565b60006115d982611814565b6115e38185611821565b93506115f381856020860161184e565b9290920192915050565b60008154600181166000811461161a576001811461163d5761167c565b607f600283041661162b8187611821565b60ff198416815295508501925061167c565b6002820461164b8187611821565b955061165685611808565b60005b8281101561167557815488820152600190910190602001611659565b5050850192505b505092915050565b6000611691602683611818565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006116d9600c83611818565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6114c081610527565b60006114b082846115ce565b60006114b082846115fd565b6020810161120882846114b7565b602080825281016114b081846114c6565b602080825281016114b0818461151f565b60208101611208828461158d565b602080825281016114b08184611596565b6020808252810161120881611684565b60208082528101611208816116cc565b6020810161120882846116f4565b60405181810167ffffffffffffffff811182821017156117b157600080fd5b604052919050565b600067ffffffffffffffff8211156117d057600080fd5b5060209081020190565b600067ffffffffffffffff8211156117f157600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b919050565b600061120882611836565b151590565b6001600160a01b031690565b82818337506000910152565b60005b83811015611869578181015183820152602001611851565b83811115611878576000848401525b50505050565b601f01601f191690565b61189181611826565b811461067757600080fd5b6118918161052756fea365627a7a723158206a2746dbcf76ed599d41646390ecec3eaccef32fb291692210be4188d2be3b476c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x2 PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x6 SSTORE PUSH1 0x0 PUSH2 0x21 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x70 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x74 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x18E8 DUP1 PUSH2 0x83 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9360142F GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xD3096AE0 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xD3096AE0 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0xD4C0008B EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0xD74F8EDD EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2AF JUMPI DUP1 PUSH4 0xF56BD732 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0xFAA139FE EQ PUSH2 0x2D5 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x9360142F EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xA3F3FE3D EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0xB5EE1848 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0xB78ECE32 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0xD2BC3E08 EQ PUSH2 0x26C JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x4BB9E2F8 GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x4BB9E2F8 EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x5D345FEF EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x840943DE EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x8CADA17B EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x20B JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x3BA2780 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x2697D0E1 EQ PUSH2 0x15C JUMPI DUP1 PUSH4 0x29E0DC18 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x2BB09431 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x43E12B9F EQ PUSH2 0x1A0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x155 CALLDATASIZE PUSH1 0x4 PUSH2 0x1408 JUMP JUMPDEST PUSH2 0x2E8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15A PUSH2 0x16A CALLDATASIZE PUSH1 0x4 PUSH2 0x139F JUMP JUMPDEST PUSH2 0x349 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x3C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x184 SWAP2 SWAP1 PUSH2 0x1784 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15A PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x139F JUMP JUMPDEST PUSH2 0x3CC JUMP JUMPDEST PUSH2 0x1A8 PUSH2 0x451 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x184 SWAP2 SWAP1 PUSH2 0x1734 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1472 JUMP JUMPDEST PUSH2 0x52A JUMP JUMPDEST PUSH2 0x15A PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1408 JUMP JUMPDEST PUSH2 0x603 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x1E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x143D JUMP JUMPDEST PUSH2 0x64A JUMP JUMPDEST PUSH2 0x177 PUSH2 0x67A JUMP JUMPDEST PUSH2 0x1FE PUSH2 0x680 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x184 SWAP2 SWAP1 PUSH2 0x1715 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x68F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x184 SWAP2 SWAP1 PUSH2 0x1745 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x22E CALLDATASIZE PUSH1 0x4 PUSH2 0x1344 JUMP JUMPDEST PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x241 CALLDATASIZE PUSH1 0x4 PUSH2 0x1344 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x143D JUMP JUMPDEST PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x15A PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0x1344 JUMP JUMPDEST PUSH2 0x72B JUMP JUMPDEST PUSH2 0x15A PUSH2 0x27A CALLDATASIZE PUSH1 0x4 PUSH2 0x1472 JUMP JUMPDEST PUSH2 0x758 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x28D CALLDATASIZE PUSH1 0x4 PUSH2 0x136A JUMP JUMPDEST PUSH2 0x824 JUMP JUMPDEST PUSH2 0x29A PUSH2 0x86B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x184 SWAP2 SWAP1 PUSH2 0x1723 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x8CD JUMP JUMPDEST PUSH2 0x15A PUSH2 0x2BD CALLDATASIZE PUSH1 0x4 PUSH2 0x1344 JUMP JUMPDEST PUSH2 0x8D2 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x2D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x136A JUMP JUMPDEST PUSH2 0x8FF JUMP JUMPDEST PUSH2 0x213 PUSH2 0x2E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x143D JUMP JUMPDEST PUSH2 0x946 JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x315 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x345 JUMPI PUSH2 0x33D DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x330 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x972 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x318 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x351 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x36D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x39D JUMPI PUSH2 0x395 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x388 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xB50 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x370 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x3C1 JUMPI PUSH2 0x3B9 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x330 JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x3A1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3D4 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x3F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x420 JUMPI PUSH2 0x418 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x40B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xD27 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3F3 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x3C1 JUMPI PUSH2 0x449 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x43C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x424 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x5 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4EF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x475 JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x532 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x54E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 PUSH1 0x32 DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0x563 JUMPI POP DUP2 DUP2 GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x56E JUMPI POP DUP1 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x579 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH16 0x125B9D985B1A59081C995C5D5A5C9959 PUSH1 0x82 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x5C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST POP PUSH1 0x6 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xCE34AC3FC7F2531F33952B09096A26CF746A2BF1EF14BA108747982E9F9A41E8 SWAP1 PUSH2 0x5F6 SWAP1 DUP6 SWAP1 PUSH2 0x1784 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x60B PUSH2 0x68F JUMP JUMPDEST PUSH2 0x627 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x345 JUMPI PUSH2 0x642 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x43C JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x62A JUMP JUMPDEST PUSH2 0x652 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x66E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH2 0x677 DUP2 PUSH2 0x972 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6A4 PUSH2 0xFBC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x68F JUMP JUMPDEST PUSH2 0x6D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH2 0x677 DUP2 PUSH2 0xD27 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x706 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x722 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH2 0x677 DUP2 PUSH2 0xE69 JUMP JUMPDEST PUSH2 0x733 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x74F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH2 0x677 DUP2 PUSH2 0xB50 JUMP JUMPDEST PUSH2 0x760 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x77C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 PUSH1 0x32 DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0x791 JUMPI POP DUP2 DUP2 GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x79C JUMPI POP DUP1 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x7A7 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH16 0x125B9D985B1A59081C995C5D5A5C9959 PUSH1 0x82 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x7EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST POP PUSH1 0x3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xBB1682552D0ED7D0D9BB09A76C2A4758555420126C8C1816A25B7A041F26E90C SWAP1 PUSH2 0x5F6 SWAP1 DUP6 SWAP1 PUSH2 0x1784 JUMP JUMPDEST PUSH2 0x82C PUSH2 0x68F JUMP JUMPDEST PUSH2 0x848 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x345 JUMPI PUSH2 0x863 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x388 JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x84B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x8C3 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8A5 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x32 DUP2 JUMP JUMPDEST PUSH2 0x8DA PUSH2 0x68F JUMP JUMPDEST PUSH2 0x8F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH2 0x677 DUP2 PUSH2 0xFC0 JUMP JUMPDEST PUSH2 0x907 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x923 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x345 JUMPI PUSH2 0x93E DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x40B JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x926 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 PUSH1 0x40 MLOAD PUSH2 0x958 SWAP2 SWAP1 PUSH2 0x16FD JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xF DUP2 MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH2 0x9B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST POP PUSH1 0x4 DUP2 PUSH1 0x40 MLOAD PUSH2 0x9C9 SWAP2 SWAP1 PUSH2 0x16FD JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB16 JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 PUSH1 0x40 MLOAD PUSH2 0x9F3 SWAP2 SWAP1 PUSH2 0x16FD JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 AND SWAP2 POP PUSH1 0x0 NOT ADD DUP2 EQ PUSH2 0xADD JUMPI PUSH1 0x5 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0xA36 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x5 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND DUP2 SLOAD DUP2 LT PUSH2 0xA56 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH2 0xA7F SWAP3 SWAP2 SWAP1 PUSH2 0x1041 JUMP JUMPDEST POP DUP1 PUSH1 0x4 PUSH1 0x5 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND DUP2 SLOAD DUP2 LT PUSH2 0xA99 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD PUSH2 0xAB0 SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH1 0xFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x5 DUP1 SLOAD SWAP1 PUSH2 0xAF0 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x10C6 JUMP JUMPDEST POP PUSH1 0x4 DUP3 PUSH1 0x40 MLOAD PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x16FD JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SSTORE POP JUMPDEST PUSH32 0x61D47078AD00D7177B977BF2D70F83D7C86266A51AA241DED9AFA89CD83BEE46 DUP2 PUSH1 0x40 MLOAD PUSH2 0xB45 SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xF DUP2 MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xCF0 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SLOAD PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND SWAP1 PUSH1 0x0 NOT ADD DUP2 EQ PUSH2 0xCC1 JUMPI PUSH1 0x2 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0xC07 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB DUP5 AND SWAP1 DUP2 LT PUSH2 0xC36 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x1 PUSH1 0x0 PUSH1 0x2 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND DUP2 SLOAD DUP2 LT PUSH2 0xC7F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH1 0xFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 PUSH2 0xCD4 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x10EA JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0x336A6BDD1075EF08C19331AF1A3AC0D66B1910852390725E0FDDDEFF191717C1 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xF DUP2 MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xD74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xE32 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP1 DUP3 MSTORE PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB SWAP1 DUP2 AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE SWAP2 DUP7 SWAP1 MSTORE SWAP7 DUP2 KECCAK256 SWAP6 MLOAD DUP7 SLOAD SWAP3 MLOAD SWAP1 SWAP4 AND PUSH2 0x100 MUL SWAP3 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0xFF AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP4 SSTORE DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE SWAP1 SWAP2 MSTORE PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0x2D0197C2D3EF0C60B1E4909BE06FAE62A74BB52BD433E9B27C96FDCEFCC022A3 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xF DUP2 MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH2 0xEAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST POP PUSH1 0x4 DUP2 PUSH1 0x40 MLOAD PUSH2 0xEC0 SWAP2 SWAP1 PUSH2 0x16FD JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4 SWAP1 PUSH2 0xF05 SWAP1 DUP5 SWAP1 PUSH2 0x16FD JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 SWAP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND PUSH2 0x100 MUL SWAP1 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH1 0xFF AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 SWAP1 SWAP3 MSTORE DUP4 MLOAD SWAP2 SWAP3 PUSH2 0xF8A SWAP3 PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH2 0x110E JUMP JUMPDEST POP POP JUMPDEST PUSH32 0x44A353D346CB67FE7F36026D2E29EB2954E23594866A194420CF38941607F23E DUP2 PUSH1 0x40 MLOAD PUSH2 0xB45 SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xFE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1764 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x107A JUMPI DUP1 SLOAD DUP6 SSTORE PUSH2 0x10B6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x10B6 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x10B6 JUMPI DUP3 SLOAD DUP3 SSTORE SWAP2 PUSH1 0x1 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x109B JUMP JUMPDEST POP PUSH2 0x10C2 SWAP3 SWAP2 POP PUSH2 0x117C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x3C1 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0x1196 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x3C1 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0x117C JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x114F JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x10B6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x10B6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x10B6 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1161 JUMP JUMPDEST PUSH2 0x527 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x10C2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1182 JUMP JUMPDEST PUSH2 0x527 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x10C2 JUMPI PUSH1 0x0 PUSH2 0x11B0 DUP3 DUP3 PUSH2 0x11B9 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x119C JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x11DF JUMPI POP PUSH2 0x677 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x677 SWAP2 SWAP1 PUSH2 0x117C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1208 DUP2 PUSH2 0x1888 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x121F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1232 PUSH2 0x122D DUP3 PUSH2 0x17B9 JUMP JUMPDEST PUSH2 0x1792 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1283 JUMPI DUP2 PUSH2 0x126D DUP9 DUP3 PUSH2 0x11FD JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x125A JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x129E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x12AC PUSH2 0x122D DUP3 PUSH2 0x17B9 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1283 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x12D4 DUP9 DUP3 PUSH2 0x12EA JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x12BE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x12FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1309 PUSH2 0x122D DUP3 PUSH2 0x17DA JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x1325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1330 DUP4 DUP3 DUP5 PUSH2 0x1842 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1208 DUP2 PUSH2 0x189C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1362 DUP5 DUP5 PUSH2 0x11FD JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x137C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1393 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1362 DUP5 DUP3 DUP6 ADD PUSH2 0x120E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x13B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x13C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13D5 DUP6 DUP3 DUP7 ADD PUSH2 0x120E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x13F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13FE DUP6 DUP3 DUP7 ADD PUSH2 0x128D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x141A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1431 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1362 DUP5 DUP3 DUP6 ADD PUSH2 0x128D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x144F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1362 DUP5 DUP3 DUP6 ADD PUSH2 0x12EA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1362 DUP5 DUP5 PUSH2 0x1339 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x149C DUP4 DUP4 PUSH2 0x14B7 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B0 DUP4 DUP4 PUSH2 0x1596 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x14C0 DUP2 PUSH2 0x1826 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14D1 DUP3 PUSH2 0x1814 JUMP JUMPDEST PUSH2 0x14DB DUP2 DUP6 PUSH2 0x1818 JUMP JUMPDEST SWAP4 POP PUSH2 0x14E6 DUP4 PUSH2 0x1802 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1514 JUMPI DUP2 MLOAD PUSH2 0x14FE DUP9 DUP3 PUSH2 0x1490 JUMP JUMPDEST SWAP8 POP PUSH2 0x1509 DUP4 PUSH2 0x1802 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x14EA JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x152A DUP3 PUSH2 0x1814 JUMP JUMPDEST PUSH2 0x1534 DUP2 DUP6 PUSH2 0x1818 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x1546 DUP6 PUSH2 0x1802 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1580 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x1563 DUP6 DUP3 PUSH2 0x14A4 JUMP JUMPDEST SWAP5 POP PUSH2 0x156E DUP4 PUSH2 0x1802 JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x154A JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x14C0 DUP2 PUSH2 0x1831 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15A1 DUP3 PUSH2 0x1814 JUMP JUMPDEST PUSH2 0x15AB DUP2 DUP6 PUSH2 0x1818 JUMP JUMPDEST SWAP4 POP PUSH2 0x15BB DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x184E JUMP JUMPDEST PUSH2 0x15C4 DUP2 PUSH2 0x187E JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15D9 DUP3 PUSH2 0x1814 JUMP JUMPDEST PUSH2 0x15E3 DUP2 DUP6 PUSH2 0x1821 JUMP JUMPDEST SWAP4 POP PUSH2 0x15F3 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x184E JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 DUP2 AND PUSH1 0x0 DUP2 EQ PUSH2 0x161A JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x163D JUMPI PUSH2 0x167C JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP4 DIV AND PUSH2 0x162B DUP2 DUP8 PUSH2 0x1821 JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP2 MSTORE SWAP6 POP DUP6 ADD SWAP3 POP PUSH2 0x167C JUMP JUMPDEST PUSH1 0x2 DUP3 DIV PUSH2 0x164B DUP2 DUP8 PUSH2 0x1821 JUMP JUMPDEST SWAP6 POP PUSH2 0x1656 DUP6 PUSH2 0x1808 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1675 JUMPI DUP2 SLOAD DUP9 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x1659 JUMP JUMPDEST POP POP DUP6 ADD SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1691 PUSH1 0x26 DUP4 PUSH2 0x1818 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16D9 PUSH1 0xC DUP4 PUSH2 0x1818 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x14C0 DUP2 PUSH2 0x527 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B0 DUP3 DUP5 PUSH2 0x15CE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B0 DUP3 DUP5 PUSH2 0x15FD JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1208 DUP3 DUP5 PUSH2 0x14B7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B0 DUP2 DUP5 PUSH2 0x14C6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B0 DUP2 DUP5 PUSH2 0x151F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1208 DUP3 DUP5 PUSH2 0x158D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B0 DUP2 DUP5 PUSH2 0x1596 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1208 DUP2 PUSH2 0x1684 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1208 DUP2 PUSH2 0x16CC JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1208 DUP3 DUP5 PUSH2 0x16F4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x17B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x17D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x17F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1208 DUP3 PUSH2 0x1836 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1869 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1851 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1878 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x1891 DUP2 PUSH2 0x1826 JUMP JUMPDEST DUP2 EQ PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1891 DUP2 PUSH2 0x527 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH11 0x2746DBCF76ED599D416463 SWAP1 0xEC 0xEC RETURNDATACOPY 0xAC 0xCE RETURN 0x2F 0xB2 SWAP2 PUSH10 0x2210BE4188D2BE3B476C PUSH6 0x78706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100400000000000000000000000 ",
              "sourceMap": "278:8408:135:-;;;792:1;758:35;;;;1025:34;;-1:-1:-1;697:12:142;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;278:8408:135;;780:87:137;853:10;780:87;:::o;278:8408:135:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101425760003560e01c80639360142f116100b8578063d3096ae01161007c578063d3096ae01461027f578063d4c0008b14610292578063d74f8edd146102a7578063f2fde38b146102af578063f56bd732146102c2578063faa139fe146102d557610142565b80639360142f14610220578063a3f3fe3d14610233578063b5ee184814610246578063b78ece3214610259578063d2bc3e081461026c57610142565b80634bb9e2f81161010a5780634bb9e2f8146101b55780635d345fef146101c8578063840943de146101db5780638cada17b146101ee5780638da5cb5b146101f65780638f32d59b1461020b57610142565b806303ba2780146101475780632697d0e11461015c57806329e0dc181461016f5780632bb094311461018d57806343e12b9f146101a0575b600080fd5b61015a610155366004611408565b6102e8565b005b61015a61016a36600461139f565b610349565b6101776103c6565b6040516101849190611784565b60405180910390f35b61015a61019b36600461139f565b6103cc565b6101a8610451565b6040516101849190611734565b61015a6101c3366004611472565b61052a565b61015a6101d6366004611408565b610603565b61015a6101e936600461143d565b61064a565b61017761067a565b6101fe610680565b6040516101849190611715565b61021361068f565b6040516101849190611745565b61015a61022e366004611344565b6106b3565b610213610241366004611344565b6106e0565b61015a61025436600461143d565b6106fe565b61015a610267366004611344565b61072b565b61015a61027a366004611472565b610758565b61015a61028d36600461136a565b610824565b61029a61086b565b6040516101849190611723565b6101776108cd565b61015a6102bd366004611344565b6108d2565b61015a6102d036600461136a565b6108ff565b6102136102e336600461143d565b610946565b6102f061068f565b6103155760405162461bcd60e51b815260040161030c90611774565b60405180910390fd5b60005b81518110156103455761033d82828151811061033057fe5b6020026020010151610972565b600101610318565b5050565b61035161068f565b61036d5760405162461bcd60e51b815260040161030c90611774565b60005b825181101561039d5761039583828151811061038857fe5b6020026020010151610b50565b600101610370565b5060005b81518110156103c1576103b982828151811061033057fe5b6001016103a1565b505050565b60065481565b6103d461068f565b6103f05760405162461bcd60e51b815260040161030c90611774565b60005b82518110156104205761041883828151811061040b57fe5b6020026020010151610d27565b6001016103f3565b5060005b81518110156103c15761044982828151811061043c57fe5b6020026020010151610e69565b600101610424565b60606005805480602002602001604051908101604052809291908181526020016000905b828210156105205760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561050c5780601f106104e15761010080835404028352916020019161050c565b820191906000526020600020905b8154815290600101906020018083116104ef57829003601f168201915b505050505081526020019060010190610475565b5050505090505b90565b61053261068f565b61054e5760405162461bcd60e51b815260040161030c90611774565b60055481603282118015906105635750818111155b801561056e57508015155b801561057957508115155b6040518060400160405280601081526020016f125b9d985b1a59081c995c5d5a5c995960821b815250906105c05760405162461bcd60e51b815260040161030c9190611753565b5060068390556040517fce34ac3fc7f2531f33952b09096a26cf746a2bf1ef14ba108747982e9f9a41e8906105f6908590611784565b60405180910390a1505050565b61060b61068f565b6106275760405162461bcd60e51b815260040161030c90611774565b60005b81518110156103455761064282828151811061043c57fe5b60010161062a565b61065261068f565b61066e5760405162461bcd60e51b815260040161030c90611774565b61067781610972565b50565b60035481565b6000546001600160a01b031690565b600080546001600160a01b03166106a4610fbc565b6001600160a01b031614905090565b6106bb61068f565b6106d75760405162461bcd60e51b815260040161030c90611774565b61067781610d27565b6001600160a01b031660009081526001602052604090205460ff1690565b61070661068f565b6107225760405162461bcd60e51b815260040161030c90611774565b61067781610e69565b61073361068f565b61074f5760405162461bcd60e51b815260040161030c90611774565b61067781610b50565b61076061068f565b61077c5760405162461bcd60e51b815260040161030c90611774565b60025481603282118015906107915750818111155b801561079c57508015155b80156107a757508115155b6040518060400160405280601081526020016f125b9d985b1a59081c995c5d5a5c995960821b815250906107ee5760405162461bcd60e51b815260040161030c9190611753565b5060038390556040517fbb1682552d0ed7d0d9bb09a76c2a4758555420126c8c1816a25b7a041f26e90c906105f6908590611784565b61082c61068f565b6108485760405162461bcd60e51b815260040161030c90611774565b60005b81518110156103455761086382828151811061038857fe5b60010161084b565b606060028054806020026020016040519081016040528092919081815260200182805480156108c357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108a5575b5050505050905090565b603281565b6108da61068f565b6108f65760405162461bcd60e51b815260040161030c90611774565b61067781610fc0565b61090761068f565b6109235760405162461bcd60e51b815260040161030c90611774565b60005b81518110156103455761093e82828151811061040b57fe5b600101610926565b600060048260405161095891906116fd565b9081526040519081900360200190205460ff169050919050565b805160408051808201909152600f81526e496e76616c6964206164647265737360881b6020820152906109b85760405162461bcd60e51b815260040161030c9190611753565b506004816040516109c991906116fd565b9081526040519081900360200190205460ff1615610b165760006004826040516109f391906116fd565b908152604051908190036020019020546005546001600160f81b03610100909204919091169150600019018114610add57600580546000198101908110610a3657fe5b906000526020600020016005826001600160f81b031681548110610a5657fe5b906000526020600020019080546001816001161561010002031660029004610a7f929190611041565b508060046005836001600160f81b031681548110610a9957fe5b90600052602060002001604051610ab09190611709565b90815260405190819003602001902080546001600160f81b03929092166101000260ff9092169190911790555b6005805490610af09060001983016110c6565b50600482604051610b0191906116fd565b90815260405190819003602001902060009055505b7f61d47078ad00d7177b977bf2d70f83d7c86266a51aa241ded9afa89cd83bee4681604051610b459190611753565b60405180910390a150565b60408051808201909152600f81526e496e76616c6964206164647265737360881b60208201526001600160a01b038216610b9d5760405162461bcd60e51b815260040161030c9190611753565b506001600160a01b03811660009081526001602052604090205460ff1615610cf0576001600160a01b0381166000908152600160205260409020546002546101009091046001600160f81b031690600019018114610cc157600280546000198101908110610c0757fe5b600091825260209091200154600280546001600160a01b03909216916001600160f81b038416908110610c3657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600160006002846001600160f81b031681548110610c7f57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902080546001600160f81b03929092166101000260ff9092169190911790555b6002805490610cd49060001983016110ea565b50506001600160a01b0381166000908152600160205260408120555b6040516001600160a01b038216907f336a6bdd1075ef08c19331af1a3ac0d66b1910852390725e0fdddeff191717c190600090a250565b60408051808201909152600f81526e496e76616c6964206164647265737360881b60208201526001600160a01b038216610d745760405162461bcd60e51b815260040161030c9190611753565b506001600160a01b03811660009081526001602052604090205460ff16610e32576040805180820182526001808252600280546001600160f81b0390811660208086019182526001600160a01b0388166000818152918690529681209551865492519093166101000292151560ff199092169190911760ff1691909117909355805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191690911790555b6040516001600160a01b038216907f2d0197c2d3ef0c60b1e4909be06fae62a74bb52bd433e9b27c96fdcefcc022a390600090a250565b805160408051808201909152600f81526e496e76616c6964206164647265737360881b602082015290610eaf5760405162461bcd60e51b815260040161030c9190611753565b50600481604051610ec091906116fd565b9081526040519081900360200190205460ff16610f8d57604080518082018252600181526005546001600160f81b031660208201529051600490610f059084906116fd565b90815260405190819003602090810190912082518154938301516001600160f81b03166101000290151560ff199094169390931760ff1692909217909155600580546001810180835560009290925283519192610f8a927f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0909201919085019061110e565b50505b7f44a353d346cb67fe7f36026d2e29eb2954e23594866a194420cf38941607f23e81604051610b459190611753565b3390565b6001600160a01b038116610fe65760405162461bcd60e51b815260040161030c90611764565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061107a57805485556110b6565b828001600101855582156110b657600052602060002091601f016020900482015b828111156110b657825482559160010191906001019061109b565b506110c292915061117c565b5090565b8154818355818111156103c1576000838152602090206103c1918101908301611196565b8154818355818111156103c1576000838152602090206103c191810190830161117c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061114f57805160ff19168380011785556110b6565b828001600101855582156110b6579182015b828111156110b6578251825591602001919060010190611161565b61052791905b808211156110c25760008155600101611182565b61052791905b808211156110c25760006111b082826111b9565b5060010161119c565b50805460018160011615610100020316600290046000825580601f106111df5750610677565b601f016020900490600052602060002090810190610677919061117c565b803561120881611888565b92915050565b600082601f83011261121f57600080fd5b813561123261122d826117b9565b611792565b9150818183526020840193506020810190508385602084028201111561125757600080fd5b60005b83811015611283578161126d88826111fd565b845250602092830192919091019060010161125a565b5050505092915050565b600082601f83011261129e57600080fd5b81356112ac61122d826117b9565b81815260209384019390925082018360005b8381101561128357813586016112d488826112ea565b84525060209283019291909101906001016112be565b600082601f8301126112fb57600080fd5b813561130961122d826117da565b9150808252602083016020830185838301111561132557600080fd5b611330838284611842565b50505092915050565b80356112088161189c565b60006020828403121561135657600080fd5b600061136284846111fd565b949350505050565b60006020828403121561137c57600080fd5b813567ffffffffffffffff81111561139357600080fd5b6113628482850161120e565b600080604083850312156113b257600080fd5b823567ffffffffffffffff8111156113c957600080fd5b6113d58582860161120e565b925050602083013567ffffffffffffffff8111156113f257600080fd5b6113fe8582860161128d565b9150509250929050565b60006020828403121561141a57600080fd5b813567ffffffffffffffff81111561143157600080fd5b6113628482850161128d565b60006020828403121561144f57600080fd5b813567ffffffffffffffff81111561146657600080fd5b611362848285016112ea565b60006020828403121561148457600080fd5b60006113628484611339565b600061149c83836114b7565b505060200190565b60006114b08383611596565b9392505050565b6114c081611826565b82525050565b60006114d182611814565b6114db8185611818565b93506114e683611802565b8060005b838110156115145781516114fe8882611490565b975061150983611802565b9250506001016114ea565b509495945050505050565b600061152a82611814565b6115348185611818565b93508360208202850161154685611802565b8060005b85811015611580578484038952815161156385826114a4565b945061156e83611802565b60209a909a019992505060010161154a565b5091979650505050505050565b6114c081611831565b60006115a182611814565b6115ab8185611818565b93506115bb81856020860161184e565b6115c48161187e565b9093019392505050565b60006115d982611814565b6115e38185611821565b93506115f381856020860161184e565b9290920192915050565b60008154600181166000811461161a576001811461163d5761167c565b607f600283041661162b8187611821565b60ff198416815295508501925061167c565b6002820461164b8187611821565b955061165685611808565b60005b8281101561167557815488820152600190910190602001611659565b5050850192505b505092915050565b6000611691602683611818565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006116d9600c83611818565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6114c081610527565b60006114b082846115ce565b60006114b082846115fd565b6020810161120882846114b7565b602080825281016114b081846114c6565b602080825281016114b0818461151f565b60208101611208828461158d565b602080825281016114b08184611596565b6020808252810161120881611684565b60208082528101611208816116cc565b6020810161120882846116f4565b60405181810167ffffffffffffffff811182821017156117b157600080fd5b604052919050565b600067ffffffffffffffff8211156117d057600080fd5b5060209081020190565b600067ffffffffffffffff8211156117f157600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b919050565b600061120882611836565b151590565b6001600160a01b031690565b82818337506000910152565b60005b83811015611869578181015183820152602001611851565b83811115611878576000848401525b50505050565b601f01601f191690565b61189181611826565b811461067757600080fd5b6118918161052756fea365627a7a723158206a2746dbcf76ed599d41646390ecec3eaccef32fb291692210be4188d2be3b476c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9360142F GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xD3096AE0 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xD3096AE0 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0xD4C0008B EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0xD74F8EDD EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2AF JUMPI DUP1 PUSH4 0xF56BD732 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0xFAA139FE EQ PUSH2 0x2D5 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x9360142F EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xA3F3FE3D EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0xB5EE1848 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0xB78ECE32 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0xD2BC3E08 EQ PUSH2 0x26C JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x4BB9E2F8 GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x4BB9E2F8 EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x5D345FEF EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x840943DE EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x8CADA17B EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x20B JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x3BA2780 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x2697D0E1 EQ PUSH2 0x15C JUMPI DUP1 PUSH4 0x29E0DC18 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x2BB09431 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x43E12B9F EQ PUSH2 0x1A0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x155 CALLDATASIZE PUSH1 0x4 PUSH2 0x1408 JUMP JUMPDEST PUSH2 0x2E8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15A PUSH2 0x16A CALLDATASIZE PUSH1 0x4 PUSH2 0x139F JUMP JUMPDEST PUSH2 0x349 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x3C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x184 SWAP2 SWAP1 PUSH2 0x1784 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15A PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x139F JUMP JUMPDEST PUSH2 0x3CC JUMP JUMPDEST PUSH2 0x1A8 PUSH2 0x451 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x184 SWAP2 SWAP1 PUSH2 0x1734 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1472 JUMP JUMPDEST PUSH2 0x52A JUMP JUMPDEST PUSH2 0x15A PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1408 JUMP JUMPDEST PUSH2 0x603 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x1E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x143D JUMP JUMPDEST PUSH2 0x64A JUMP JUMPDEST PUSH2 0x177 PUSH2 0x67A JUMP JUMPDEST PUSH2 0x1FE PUSH2 0x680 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x184 SWAP2 SWAP1 PUSH2 0x1715 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x68F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x184 SWAP2 SWAP1 PUSH2 0x1745 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x22E CALLDATASIZE PUSH1 0x4 PUSH2 0x1344 JUMP JUMPDEST PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x241 CALLDATASIZE PUSH1 0x4 PUSH2 0x1344 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x143D JUMP JUMPDEST PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x15A PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0x1344 JUMP JUMPDEST PUSH2 0x72B JUMP JUMPDEST PUSH2 0x15A PUSH2 0x27A CALLDATASIZE PUSH1 0x4 PUSH2 0x1472 JUMP JUMPDEST PUSH2 0x758 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x28D CALLDATASIZE PUSH1 0x4 PUSH2 0x136A JUMP JUMPDEST PUSH2 0x824 JUMP JUMPDEST PUSH2 0x29A PUSH2 0x86B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x184 SWAP2 SWAP1 PUSH2 0x1723 JUMP JUMPDEST PUSH2 0x177 PUSH2 0x8CD JUMP JUMPDEST PUSH2 0x15A PUSH2 0x2BD CALLDATASIZE PUSH1 0x4 PUSH2 0x1344 JUMP JUMPDEST PUSH2 0x8D2 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x2D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x136A JUMP JUMPDEST PUSH2 0x8FF JUMP JUMPDEST PUSH2 0x213 PUSH2 0x2E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x143D JUMP JUMPDEST PUSH2 0x946 JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x315 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x345 JUMPI PUSH2 0x33D DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x330 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x972 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x318 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x351 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x36D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x39D JUMPI PUSH2 0x395 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x388 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xB50 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x370 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x3C1 JUMPI PUSH2 0x3B9 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x330 JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x3A1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3D4 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x3F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x420 JUMPI PUSH2 0x418 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x40B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xD27 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3F3 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x3C1 JUMPI PUSH2 0x449 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x43C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x424 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x5 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV SWAP3 DUP4 ADD DUP6 SWAP1 DIV DUP6 MUL DUP2 ADD DUP6 ADD SWAP1 SWAP2 MSTORE DUP2 DUP2 MSTORE SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4EF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x475 JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x532 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x54E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 PUSH1 0x32 DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0x563 JUMPI POP DUP2 DUP2 GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x56E JUMPI POP DUP1 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x579 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH16 0x125B9D985B1A59081C995C5D5A5C9959 PUSH1 0x82 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x5C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST POP PUSH1 0x6 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xCE34AC3FC7F2531F33952B09096A26CF746A2BF1EF14BA108747982E9F9A41E8 SWAP1 PUSH2 0x5F6 SWAP1 DUP6 SWAP1 PUSH2 0x1784 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x60B PUSH2 0x68F JUMP JUMPDEST PUSH2 0x627 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x345 JUMPI PUSH2 0x642 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x43C JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x62A JUMP JUMPDEST PUSH2 0x652 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x66E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH2 0x677 DUP2 PUSH2 0x972 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6A4 PUSH2 0xFBC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x68F JUMP JUMPDEST PUSH2 0x6D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH2 0x677 DUP2 PUSH2 0xD27 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x706 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x722 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH2 0x677 DUP2 PUSH2 0xE69 JUMP JUMPDEST PUSH2 0x733 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x74F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH2 0x677 DUP2 PUSH2 0xB50 JUMP JUMPDEST PUSH2 0x760 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x77C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 PUSH1 0x32 DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0x791 JUMPI POP DUP2 DUP2 GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x79C JUMPI POP DUP1 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x7A7 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH16 0x125B9D985B1A59081C995C5D5A5C9959 PUSH1 0x82 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x7EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST POP PUSH1 0x3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xBB1682552D0ED7D0D9BB09A76C2A4758555420126C8C1816A25B7A041F26E90C SWAP1 PUSH2 0x5F6 SWAP1 DUP6 SWAP1 PUSH2 0x1784 JUMP JUMPDEST PUSH2 0x82C PUSH2 0x68F JUMP JUMPDEST PUSH2 0x848 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x345 JUMPI PUSH2 0x863 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x388 JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x84B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x8C3 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8A5 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x32 DUP2 JUMP JUMPDEST PUSH2 0x8DA PUSH2 0x68F JUMP JUMPDEST PUSH2 0x8F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH2 0x677 DUP2 PUSH2 0xFC0 JUMP JUMPDEST PUSH2 0x907 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x923 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1774 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x345 JUMPI PUSH2 0x93E DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x40B JUMPI INVALID JUMPDEST PUSH1 0x1 ADD PUSH2 0x926 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 PUSH1 0x40 MLOAD PUSH2 0x958 SWAP2 SWAP1 PUSH2 0x16FD JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xF DUP2 MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH2 0x9B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST POP PUSH1 0x4 DUP2 PUSH1 0x40 MLOAD PUSH2 0x9C9 SWAP2 SWAP1 PUSH2 0x16FD JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB16 JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 PUSH1 0x40 MLOAD PUSH2 0x9F3 SWAP2 SWAP1 PUSH2 0x16FD JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 AND SWAP2 POP PUSH1 0x0 NOT ADD DUP2 EQ PUSH2 0xADD JUMPI PUSH1 0x5 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0xA36 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x5 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND DUP2 SLOAD DUP2 LT PUSH2 0xA56 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH2 0xA7F SWAP3 SWAP2 SWAP1 PUSH2 0x1041 JUMP JUMPDEST POP DUP1 PUSH1 0x4 PUSH1 0x5 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND DUP2 SLOAD DUP2 LT PUSH2 0xA99 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD PUSH2 0xAB0 SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH1 0xFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x5 DUP1 SLOAD SWAP1 PUSH2 0xAF0 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x10C6 JUMP JUMPDEST POP PUSH1 0x4 DUP3 PUSH1 0x40 MLOAD PUSH2 0xB01 SWAP2 SWAP1 PUSH2 0x16FD JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SSTORE POP JUMPDEST PUSH32 0x61D47078AD00D7177B977BF2D70F83D7C86266A51AA241DED9AFA89CD83BEE46 DUP2 PUSH1 0x40 MLOAD PUSH2 0xB45 SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xF DUP2 MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xCF0 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SLOAD PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND SWAP1 PUSH1 0x0 NOT ADD DUP2 EQ PUSH2 0xCC1 JUMPI PUSH1 0x2 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0xC07 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB DUP5 AND SWAP1 DUP2 LT PUSH2 0xC36 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x1 PUSH1 0x0 PUSH1 0x2 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND DUP2 SLOAD DUP2 LT PUSH2 0xC7F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH1 0xFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 PUSH2 0xCD4 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x10EA JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0x336A6BDD1075EF08C19331AF1A3AC0D66B1910852390725E0FDDDEFF191717C1 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xF DUP2 MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xD74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xE32 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP1 DUP3 MSTORE PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB SWAP1 DUP2 AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE SWAP2 DUP7 SWAP1 MSTORE SWAP7 DUP2 KECCAK256 SWAP6 MLOAD DUP7 SLOAD SWAP3 MLOAD SWAP1 SWAP4 AND PUSH2 0x100 MUL SWAP3 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0xFF AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP4 SSTORE DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE SWAP1 SWAP2 MSTORE PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0x2D0197C2D3EF0C60B1E4909BE06FAE62A74BB52BD433E9B27C96FDCEFCC022A3 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xF DUP2 MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH2 0xEAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST POP PUSH1 0x4 DUP2 PUSH1 0x40 MLOAD PUSH2 0xEC0 SWAP2 SWAP1 PUSH2 0x16FD JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4 SWAP1 PUSH2 0xF05 SWAP1 DUP5 SWAP1 PUSH2 0x16FD JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 SWAP2 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND PUSH2 0x100 MUL SWAP1 ISZERO ISZERO PUSH1 0xFF NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH1 0xFF AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP1 DUP4 SSTORE PUSH1 0x0 SWAP3 SWAP1 SWAP3 MSTORE DUP4 MLOAD SWAP2 SWAP3 PUSH2 0xF8A SWAP3 PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH2 0x110E JUMP JUMPDEST POP POP JUMPDEST PUSH32 0x44A353D346CB67FE7F36026D2E29EB2954E23594866A194420CF38941607F23E DUP2 PUSH1 0x40 MLOAD PUSH2 0xB45 SWAP2 SWAP1 PUSH2 0x1753 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xFE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30C SWAP1 PUSH2 0x1764 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x107A JUMPI DUP1 SLOAD DUP6 SSTORE PUSH2 0x10B6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x10B6 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x10B6 JUMPI DUP3 SLOAD DUP3 SSTORE SWAP2 PUSH1 0x1 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x109B JUMP JUMPDEST POP PUSH2 0x10C2 SWAP3 SWAP2 POP PUSH2 0x117C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x3C1 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0x1196 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x3C1 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0x117C JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x114F JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x10B6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x10B6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x10B6 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1161 JUMP JUMPDEST PUSH2 0x527 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x10C2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1182 JUMP JUMPDEST PUSH2 0x527 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x10C2 JUMPI PUSH1 0x0 PUSH2 0x11B0 DUP3 DUP3 PUSH2 0x11B9 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x119C JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x11DF JUMPI POP PUSH2 0x677 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x677 SWAP2 SWAP1 PUSH2 0x117C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1208 DUP2 PUSH2 0x1888 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x121F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1232 PUSH2 0x122D DUP3 PUSH2 0x17B9 JUMP JUMPDEST PUSH2 0x1792 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1283 JUMPI DUP2 PUSH2 0x126D DUP9 DUP3 PUSH2 0x11FD JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x125A JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x129E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x12AC PUSH2 0x122D DUP3 PUSH2 0x17B9 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1283 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x12D4 DUP9 DUP3 PUSH2 0x12EA JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x12BE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x12FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1309 PUSH2 0x122D DUP3 PUSH2 0x17DA JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x1325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1330 DUP4 DUP3 DUP5 PUSH2 0x1842 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1208 DUP2 PUSH2 0x189C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1362 DUP5 DUP5 PUSH2 0x11FD JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x137C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1393 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1362 DUP5 DUP3 DUP6 ADD PUSH2 0x120E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x13B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x13C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13D5 DUP6 DUP3 DUP7 ADD PUSH2 0x120E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x13F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13FE DUP6 DUP3 DUP7 ADD PUSH2 0x128D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x141A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1431 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1362 DUP5 DUP3 DUP6 ADD PUSH2 0x128D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x144F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1362 DUP5 DUP3 DUP6 ADD PUSH2 0x12EA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1362 DUP5 DUP5 PUSH2 0x1339 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x149C DUP4 DUP4 PUSH2 0x14B7 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B0 DUP4 DUP4 PUSH2 0x1596 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x14C0 DUP2 PUSH2 0x1826 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14D1 DUP3 PUSH2 0x1814 JUMP JUMPDEST PUSH2 0x14DB DUP2 DUP6 PUSH2 0x1818 JUMP JUMPDEST SWAP4 POP PUSH2 0x14E6 DUP4 PUSH2 0x1802 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1514 JUMPI DUP2 MLOAD PUSH2 0x14FE DUP9 DUP3 PUSH2 0x1490 JUMP JUMPDEST SWAP8 POP PUSH2 0x1509 DUP4 PUSH2 0x1802 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x14EA JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x152A DUP3 PUSH2 0x1814 JUMP JUMPDEST PUSH2 0x1534 DUP2 DUP6 PUSH2 0x1818 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x1546 DUP6 PUSH2 0x1802 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1580 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x1563 DUP6 DUP3 PUSH2 0x14A4 JUMP JUMPDEST SWAP5 POP PUSH2 0x156E DUP4 PUSH2 0x1802 JUMP JUMPDEST PUSH1 0x20 SWAP11 SWAP1 SWAP11 ADD SWAP10 SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x154A JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x14C0 DUP2 PUSH2 0x1831 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15A1 DUP3 PUSH2 0x1814 JUMP JUMPDEST PUSH2 0x15AB DUP2 DUP6 PUSH2 0x1818 JUMP JUMPDEST SWAP4 POP PUSH2 0x15BB DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x184E JUMP JUMPDEST PUSH2 0x15C4 DUP2 PUSH2 0x187E JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15D9 DUP3 PUSH2 0x1814 JUMP JUMPDEST PUSH2 0x15E3 DUP2 DUP6 PUSH2 0x1821 JUMP JUMPDEST SWAP4 POP PUSH2 0x15F3 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x184E JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 DUP2 AND PUSH1 0x0 DUP2 EQ PUSH2 0x161A JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x163D JUMPI PUSH2 0x167C JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP4 DIV AND PUSH2 0x162B DUP2 DUP8 PUSH2 0x1821 JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP2 MSTORE SWAP6 POP DUP6 ADD SWAP3 POP PUSH2 0x167C JUMP JUMPDEST PUSH1 0x2 DUP3 DIV PUSH2 0x164B DUP2 DUP8 PUSH2 0x1821 JUMP JUMPDEST SWAP6 POP PUSH2 0x1656 DUP6 PUSH2 0x1808 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1675 JUMPI DUP2 SLOAD DUP9 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x1659 JUMP JUMPDEST POP POP DUP6 ADD SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1691 PUSH1 0x26 DUP4 PUSH2 0x1818 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16D9 PUSH1 0xC DUP4 PUSH2 0x1818 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x14C0 DUP2 PUSH2 0x527 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B0 DUP3 DUP5 PUSH2 0x15CE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B0 DUP3 DUP5 PUSH2 0x15FD JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1208 DUP3 DUP5 PUSH2 0x14B7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B0 DUP2 DUP5 PUSH2 0x14C6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B0 DUP2 DUP5 PUSH2 0x151F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1208 DUP3 DUP5 PUSH2 0x158D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x14B0 DUP2 DUP5 PUSH2 0x1596 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1208 DUP2 PUSH2 0x1684 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1208 DUP2 PUSH2 0x16CC JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x1208 DUP3 DUP5 PUSH2 0x16F4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x17B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x17D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x17F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1208 DUP3 PUSH2 0x1836 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1869 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1851 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1878 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x1891 DUP2 PUSH2 0x1826 JUMP JUMPDEST DUP2 EQ PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1891 DUP2 PUSH2 0x527 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH11 0x2746DBCF76ED599D416463 SWAP1 0xEC 0xEC RETURNDATACOPY 0xAC 0xCE RETURN 0x2F 0xB2 SWAP2 PUSH10 0x2210BE4188D2BE3B476C PUSH6 0x78706572696D PUSH6 0x6E74616CF564 PUSH20 0x6F6C634300051100400000000000000000000000 ",
              "sourceMap": "278:8408:135:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;278:8408:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5972:172;;;;;;;;;:::i;:::-;;8335:349;;;;;;;;;:::i;1025:34::-;;;:::i;:::-;;;;;;;;;;;;;;;;7788:340;;;;;;;;;:::i;7154:100::-;;;:::i;:::-;;;;;;;;7385:203;;;;;;;;;:::i;4968:166::-;;;;;;;;;:::i;5741:110::-;;;;;;;;;:::i;758:35::-;;;:::i;851:68:142:-;;;:::i;:::-;;;;;;;;1134:83;;;:::i;:::-;;;;;;;;1821:100:135;;;;;;;;;:::i;4005:130::-;;;;;;;;;:::i;4748:104::-;;;;;;;;;:::i;2799:106::-;;;;;;;;;:::i;4429:207::-;;;;;;;;;:::i;3023:175::-;;;;;;;;;:::i;4193:103::-;;;:::i;:::-;;;;;;;;336:44;;;:::i;1351:98:142:-;;;;;;;;;:::i;2034:169:135:-;;;;;;;;;:::i;6959:134::-;;;;;;;;;:::i;5972:172::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;;;6056:9:135;6051:90;6075:8;:15;6071:1;:19;6051:90;;;6102:34;6124:8;6133:1;6124:11;;;;;;;;;;;;;;6102:21;:34::i;:::-;6092:3;;6051:90;;;;5972:172;:::o;8335:349::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;8472:9:135;8467:107;8491:16;:23;8487:1;:27;8467:107;;;8526:43;8549:16;8566:1;8549:19;;;;;;;;;;;;;;8526:22;:43::i;:::-;8516:3;;8467:107;;;-1:-1:-1;8582:9:135;8577:104;8601:15;:22;8597:1;:26;8577:104;;;8635:41;8657:15;8673:1;8657:18;;;;;;;8635:41;8625:3;;8577:104;;;;8335:349;;:::o;1025:34::-;;;;:::o;7788:340::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;7922:9:135;7917:104;7941:16;:23;7937:1;:27;7917:104;;;7976:40;7996:16;8013:1;7996:19;;;;;;;;;;;;;;7976;:40::i;:::-;7966:3;;7917:104;;;-1:-1:-1;8029:9:135;8024:101;8048:15;:22;8044:1;:26;8024:101;;;8082:38;8101:15;8117:1;8101:18;;;;;;;;;;;;;;8082;:38::i;:::-;8072:3;;8024:101;;7154:100;7206:15;7234:16;7227:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7227:23:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7154:100;;:::o;7385:203::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;7472:16:135;:23;7497:9;378:2;1567:29;;;;;:56;;;1613:10;1600:9;:23;;1567:56;:74;;;;-1:-1:-1;1627:14:135;;;1567:74;:93;;;;-1:-1:-1;1645:15:135;;;1567:93;1662:22;;;;;;;;;;;;;-1:-1:-1;;;1662:22:135;;;1559:126;;;;;-1:-1:-1;;;1559:126:135;;;;;;;;;;-1:-1:-1;7512:15:135;:27;;;7548:36;;;;;;7530:9;;7548:36;;;;;;;;;;1058:1:142;;7385:203:135;:::o;4968:166::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;5049:9:135;5044:87;5068:8;:15;5064:1;:19;5044:87;;;5095:31;5114:8;5123:1;5114:11;;;;;;;5095:31;5085:3;;5044:87;;5741:110;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;5816:31:135;5838:8;5816:21;:31::i;:::-;5741:110;:::o;758:35::-;;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1821:100:135:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1888:29:135;1908:8;1888:19;:29::i;4005:130::-;-1:-1:-1;;;;;4093:32:135;4076:4;4093:32;;;:22;:32;;;;;:38;;;;4005:130::o;4748:104::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;4820:28:135;4839:8;4820:18;:28::i;2799:106::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;2869:32:135;2892:8;2869:22;:32::i;4429:207::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;4517:17:135;:24;4543:9;378:2;1567:29;;;;;:56;;;1613:10;1600:9;:23;;1567:56;:74;;;;-1:-1:-1;1627:14:135;;;1567:74;:93;;;;-1:-1:-1;1645:15:135;;;1567:93;1662:22;;;;;;;;;;;;;-1:-1:-1;;;1662:22:135;;;1559:126;;;;;-1:-1:-1;;;1559:126:135;;;;;;;;;;-1:-1:-1;4558:16:135;:28;;;4595:37;;;;;;4577:9;;4595:37;;3023:175;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;3109:9:135;3104:91;3128:8;:15;3124:1;:19;3104:91;;;3155:35;3178:8;3187:1;3178:11;;;;;;;3155:35;3145:3;;3104:91;;4193:103;4246:16;4275:17;4268:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4268:24:135;;;;;;;;;;;;;;;;;;;;;;;4193:103;:::o;336:44::-;378:2;336:44;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;2034:169:135:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;2117:9:135;2112:88;2136:8;:15;2132:1;:19;2112:88;;;2163:32;2183:8;2192:1;2183:11;;;;;;;2163:32;2153:3;;2112:88;;6959:134;7035:4;7052:21;7074:8;7052:31;;;;;;;;;;;;;;;;;;;;;:37;;;;-1:-1:-1;6959:134:135;;;:::o;6282:550::-;6358:22;;6387:21;;;;;;;;;;;;-1:-1:-1;;;6387:21:135;;;;;6350:59;;;;-1:-1:-1;;;6350:59:135;;;;;;;;;;;6418:21;6440:8;6418:31;;;;;;;;;;;;;;;;;;;;;:37;;;6414:374;;;6462:13;6478:21;6500:8;6478:31;;;;;;;;;;;;;;;;;;;;;:37;6533:16;:23;-1:-1:-1;;;;;6478:37:135;;;;;;;;;-1:-1:-1;;;6533:27:135;6524:36;;6520:191;;6594:16;6611:23;;-1:-1:-1;;6611:27:135;;;6594:45;;;;;;;;;;;;;6568:16;6585:5;-1:-1:-1;;;;;6568:23:135;;;;;;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6700:5;6645:21;6667:16;6684:5;-1:-1:-1;;;;;6667:23:135;;;;;;;;;;;;;;;;6645:46;;;;;;;;;;;;;;;;;;;;;:60;;-1:-1:-1;;;;;6645:60:135;;;;;;;;;;;;;;;;6520:191;6715:16;:25;;;;;-1:-1:-1;;6715:25:135;;;:::i;:::-;;6752:21;6774:8;6752:31;;;;;;;;;;;;;;;;;;;;;;6745:38;;-1:-1:-1;6414:374:135;6797:31;6819:8;6797:31;;;;;;;;;;;;;;;6282:550;:::o;3333:551::-;3428:21;;;;;;;;;;;;-1:-1:-1;;;3428:21:135;;;;-1:-1:-1;;;;;3404:22:135;;3396:54;;;;-1:-1:-1;;;3396:54:135;;;;;;;;;;-1:-1:-1;;;;;;3459:32:135;;;;;;:22;:32;;;;;:38;;;3455:384;;;-1:-1:-1;;;;;3520:32:135;;3504:13;3520:32;;;:22;:32;;;;;:38;3576:17;:24;3520:38;;;;-1:-1:-1;;;;;3520:38:135;;-1:-1:-1;;3576:28:135;3567:37;;3563:197;;3639:17;3657:24;;-1:-1:-1;;3657:28:135;;;3639:47;;;;;;;;;;;;;;;;3612:17;:24;;-1:-1:-1;;;;;3639:47:135;;;;-1:-1:-1;;;;;3612:24:135;;;;;;;;;;;;;;;;;:74;;;;;-1:-1:-1;;;;;3612:74:135;;;;;-1:-1:-1;;;;;3612:74:135;;;;;;3749:5;3692:22;:48;3715:17;3733:5;-1:-1:-1;;;;;3715:24:135;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3715:24:135;3692:48;;;;;;;;;;;;:62;;-1:-1:-1;;;;;3692:62:135;;;;3715:24;3692:62;;;;;;;;;;;3563:197;3764:17;:26;;;;;-1:-1:-1;;3764:26:135;;;:::i;:::-;-1:-1:-1;;;;;;;3802:32:135;;;;;;:22;:32;;;;;3795:39;3455:384;3848:32;;-1:-1:-1;;;;;3848:32:135;;;;;;;;3333:551;:::o;2333:352::-;2425:21;;;;;;;;;;;;-1:-1:-1;;;2425:21:135;;;;-1:-1:-1;;;;;2401:22:135;;2393:54;;;;-1:-1:-1;;;2393:54:135;;;;;;;;;;-1:-1:-1;;;;;;2457:32:135;;;;;;:22;:32;;;;;:38;;;2452:190;;2537:63;;;;;;;;2551:4;2537:63;;;2572:17;:24;;-1:-1:-1;;;;;2537:63:135;;;;;;;;;;-1:-1:-1;;;;;2502:32:135;;-1:-1:-1;2502:32:135;;;;;;;;;;:98;;;;;;;;;;;;;;-1:-1:-1;;2502:98:135;;;;;;;;;;;;;;;;27:10:-1;;23:18;;;45:23;;2605:32:135;;;;;;;-1:-1:-1;;;;;;2605:32:135;;;;;;2452:190;2651:30;;-1:-1:-1;;;;;2651:30:135;;;;;;;;2333:352;:::o;5267:357::-;5340:22;;5369:21;;;;;;;;;;;;-1:-1:-1;;;5369:21:135;;;;;5332:59;;;;-1:-1:-1;;;5332:59:135;;;;;;;;;;;5401:21;5423:8;5401:31;;;;;;;;;;;;;;;;;;;;;:37;;;5396:186;;5479:62;;;;;;;;5493:4;5479:62;;5514:16;:23;-1:-1:-1;;;;;5479:62:135;;;;;5445:31;;:21;;:31;;5467:8;;5445:31;;;;;;;;;;;;;;;;;;;:96;;;;;;;;-1:-1:-1;;;;;5445:96:135;;;;;;-1:-1:-1;;5445:96:135;;;;;;;;;;;;;;;;5546:16;27:10:-1;;5445:96:135;23:18:-1;;45:23;;;5445:96:135;5546:31;;;;;;23:18:-1;;5546:31:135;;;;;;;;;;;;:::i;:::-;;;5396:186;5591:29;5611:8;5591:29;;;;;;;780:87:137;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;278:8408:135:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;278:8408:135;;;-1:-1:-1;278:8408:135;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;;;354:80;;;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;;;748:50;;-1:-1;821:4;812:14;;;;840;;;;;702:1;695:9;655:206;;;659:14;237:630;;;;;;;;892:696;;1015:3;1008:4;1000:6;996:17;992:27;982:2;;1033:1;1030;1023:12;982:2;1070:6;1057:20;1092:86;1107:70;1170:6;1107:70;;1092:86;1206:21;;;1250:4;1238:17;;;;1083:95;;-1:-1;1263:14;;1238:17;1358:1;1343:239;1368:6;1365:1;1362:13;1343:239;;;1451:3;1438:17;1430:6;1426:30;1475:43;1514:3;1502:10;1475:43;;;1463:56;;-1:-1;1542:4;1533:14;;;;1561;;;;;1390:1;1383:9;1343:239;;1597:434;;1695:3;1688:4;1680:6;1676:17;1672:27;1662:2;;1713:1;1710;1703:12;1662:2;1750:6;1737:20;1772:61;1787:45;1825:6;1787:45;;1772:61;1763:70;;1853:6;1846:5;1839:21;1889:4;1881:6;1877:17;1922:4;1915:5;1911:16;1957:3;1948:6;1943:3;1939:16;1936:25;1933:2;;;1974:1;1971;1964:12;1933:2;1984:41;2018:6;2013:3;2008;1984:41;;;1655:376;;;;;;;;2490:130;2557:20;;2582:33;2557:20;2582:33;;2627:241;;2731:2;2719:9;2710:7;2706:23;2702:32;2699:2;;;2747:1;2744;2737:12;2699:2;2782:1;2799:53;2844:7;2824:9;2799:53;;;2789:63;2693:175;-1:-1;;;;2693:175;2875:377;;3004:2;2992:9;2983:7;2979:23;2975:32;2972:2;;;3020:1;3017;3010:12;2972:2;3055:31;;3106:18;3095:30;;3092:2;;;3138:1;3135;3128:12;3092:2;3158:78;3228:7;3219:6;3208:9;3204:22;3158:78;;3259:650;;;3436:2;3424:9;3415:7;3411:23;3407:32;3404:2;;;3452:1;3449;3442:12;3404:2;3487:31;;3538:18;3527:30;;3524:2;;;3570:1;3567;3560:12;3524:2;3590:78;3660:7;3651:6;3640:9;3636:22;3590:78;;;3580:88;;3466:208;3733:2;3722:9;3718:18;3705:32;3757:18;3749:6;3746:30;3743:2;;;3789:1;3786;3779:12;3743:2;3809:84;3885:7;3876:6;3865:9;3861:22;3809:84;;;3799:94;;3684:215;3398:511;;;;;;3916:389;;4051:2;4039:9;4030:7;4026:23;4022:32;4019:2;;;4067:1;4064;4057:12;4019:2;4102:31;;4153:18;4142:30;;4139:2;;;4185:1;4182;4175:12;4139:2;4205:84;4281:7;4272:6;4261:9;4257:22;4205:84;;4312:347;;4426:2;4414:9;4405:7;4401:23;4397:32;4394:2;;;4442:1;4439;4432:12;4394:2;4477:31;;4528:18;4517:30;;4514:2;;;4560:1;4557;4550:12;4514:2;4580:63;4635:7;4626:6;4615:9;4611:22;4580:63;;4666:241;;4770:2;4758:9;4749:7;4745:23;4741:32;4738:2;;;4786:1;4783;4776:12;4738:2;4821:1;4838:53;4883:7;4863:9;4838:53;;4915:173;;5002:46;5044:3;5036:6;5002:46;;;-1:-1;;5077:4;5068:14;;4995:93;5097:181;;5210:62;5268:3;5260:6;5210:62;;;5196:76;5189:89;-1:-1;;;5189:89;5286:103;5359:24;5377:5;5359:24;;;5354:3;5347:37;5341:48;;;5547:690;;5692:54;5740:5;5692:54;;;5759:86;5838:6;5833:3;5759:86;;;5752:93;;5866:56;5916:5;5866:56;;;5942:7;5970:1;5955:260;5980:6;5977:1;5974:13;5955:260;;;6047:6;6041:13;6068:63;6127:3;6112:13;6068:63;;;6061:70;;6148:60;6201:6;6148:60;;;6138:70;-1:-1;;6002:1;5995:9;5955:260;;;-1:-1;6228:3;;5671:566;-1:-1;;;;;5671:566;6274:896;;6431:60;6485:5;6431:60;;;6504:92;6589:6;6584:3;6504:92;;;6497:99;;6619:3;6661:4;6653:6;6649:17;6644:3;6640:27;6688:62;6744:5;6688:62;;;6770:7;6798:1;6783:348;6808:6;6805:1;6802:13;6783:348;;;6870:9;6864:4;6860:20;6855:3;6848:33;6915:6;6909:13;6937:76;7008:4;6993:13;6937:76;;;6929:84;;7030:66;7089:6;7030:66;;;7119:4;7110:14;;;;;7020:76;-1:-1;;6830:1;6823:9;6783:348;;;-1:-1;7144:4;;6410:760;-1:-1;;;;;;;6410:760;7178:104;7255:21;7270:5;7255:21;;7289:347;;7401:39;7434:5;7401:39;;;7452:71;7516:6;7511:3;7452:71;;;7445:78;;7528:52;7573:6;7568:3;7561:4;7554:5;7550:16;7528:52;;;7601:29;7623:6;7601:29;;;7592:39;;;;7381:255;-1:-1;;;7381:255;7643:360;;7773:39;7806:5;7773:39;;;7824:89;7906:6;7901:3;7824:89;;;7817:96;;7918:52;7963:6;7958:3;7951:4;7944:5;7940:16;7918:52;;;7982:16;;;;;7753:250;-1:-1;;7753:250;8707:884;;8844:5;8838:12;8878:1;8867:9;8863:17;8891:1;8886:268;;;;9165:1;9160:425;;;;8856:729;;8886:268;8964:4;8960:1;8949:9;8945:17;8941:28;8983:89;9065:6;9060:3;8983:89;;;-1:-1;;9091:25;;9079:38;;8976:96;-1:-1;9131:16;;;-1:-1;8886:268;;9160:425;9229:1;9218:9;9214:17;9245:89;9327:6;9322:3;9245:89;;;9238:96;;9356:38;9388:5;9356:38;;;9410:1;9418:130;9432:6;9429:1;9426:13;9418:130;;;9491:14;;9478:11;;;9471:35;9538:1;9525:15;;;;9454:4;9447:12;9418:130;;;-1:-1;;9562:16;;;-1:-1;8856:729;;8814:777;;;;;;9600:375;;9760:67;9824:2;9819:3;9760:67;;;9860:34;9840:55;;-1:-1;;;9924:2;9915:12;;9908:30;9966:2;9957:12;;9746:229;-1:-1;;9746:229;9984:312;;10144:67;10208:2;10203:3;10144:67;;;-1:-1;;;10224:35;;10287:2;10278:12;;10130:166;-1:-1;;10130:166;10304:113;10387:24;10405:5;10387:24;;10424:266;;10570:95;10661:3;10652:6;10570:95;;10697:260;;10840:92;10928:3;10919:6;10840:92;;10964:213;11082:2;11067:18;;11096:71;11071:9;11140:6;11096:71;;11184:361;11352:2;11366:47;;;11337:18;;11427:108;11337:18;11521:6;11427:108;;11552:385;11732:2;11746:47;;;11717:18;;11807:120;11717:18;11913:6;11807:120;;11944:201;12056:2;12041:18;;12070:65;12045:9;12108:6;12070:65;;12152:293;12286:2;12300:47;;;12271:18;;12361:74;12271:18;12421:6;12361:74;;12760:407;12951:2;12965:47;;;12936:18;;13026:131;12936:18;13026:131;;13174:407;13365:2;13379:47;;;13350:18;;13440:131;13350:18;13440:131;;13588:213;13706:2;13691:18;;13720:71;13695:9;13764:6;13720:71;;13808:256;13870:2;13864:9;13896:17;;;13971:18;13956:34;;13992:22;;;13953:62;13950:2;;;14028:1;14025;14018:12;13950:2;14044;14037:22;13848:216;;-1:-1;13848:216;14071:304;;14230:18;14222:6;14219:30;14216:2;;;14262:1;14259;14252:12;14216:2;-1:-1;14297:4;14285:17;;;14350:15;;14153:222;14699:318;;14839:18;14831:6;14828:30;14825:2;;;14871:1;14868;14861:12;14825:2;-1:-1;15002:4;14938;14915:17;;;;-1:-1;;14911:33;14992:15;;14762:255;15353:151;15477:4;15468:14;;15425:79;15675:158;;15770:14;;;15812:4;15799:18;;;15729:104;15840:137;15943:12;;15914:63;16625:178;16743:19;;;16792:4;16783:14;;16736:67;17339:145;17475:3;17453:31;-1:-1;17453:31;17492:91;;17554:24;17572:5;17554:24;;17590:85;17656:13;17649:21;;17632:43;17682:121;-1:-1;;;;;17744:54;;17727:76;17890:145;17971:6;17966:3;17961;17948:30;-1:-1;18027:1;18009:16;;18002:27;17941:94;18044:268;18109:1;18116:101;18130:6;18127:1;18124:13;18116:101;;;18197:11;;;18191:18;18178:11;;;18171:39;18152:2;18145:10;18116:101;;;18232:6;18229:1;18226:13;18223:2;;;18297:1;18288:6;18283:3;18279:16;18272:27;18223:2;18093:219;;;;;18320:97;18408:2;18388:14;-1:-1;;18384:28;;18368:49;18425:117;18494:24;18512:5;18494:24;;;18487:5;18484:35;18474:2;;18533:1;18530;18523:12;18549:117;18618:24;18636:5;18618:24;"
            },
            "methodIdentifiers": {
              "MAX_OWNER_COUNT()": "d74f8edd",
              "addBitcoinAddress(string)": "b5ee1848",
              "addBitcoinAddresses(string[])": "5d345fef",
              "addEthereumAddress(address)": "9360142f",
              "addEthereumAddresses(address[])": "f56bd732",
              "addEthereumAndBitcoinAddresses(address[],string[])": "2bb09431",
              "bitcoinRequired()": "29e0dc18",
              "changeBitcoinRequirement(uint256)": "4bb9e2f8",
              "changeEthereumRequirement(uint256)": "d2bc3e08",
              "ethereumRequired()": "8cada17b",
              "getBitcoinAddresses()": "43e12b9f",
              "getEthereumAddresses()": "d4c0008b",
              "isBitcoinAddressOwner(string)": "faa139fe",
              "isEthereumAddressOwner(address)": "a3f3fe3d",
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "removeBitcoinAddress(string)": "840943de",
              "removeBitcoinAddresses(string[])": "03ba2780",
              "removeEthereumAddress(address)": "b78ece32",
              "removeEthereumAddresses(address[])": "d3096ae0",
              "removeEthereumAndBitcoinAddresses(address[],string[])": "2697d0e1",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {
              "addBitcoinAddress(string)": {
                "notice": "Add bitcoin address to the key holders."
              },
              "addBitcoinAddresses(string[])": {
                "notice": "Add bitcoin addresses to the key holders."
              },
              "addEthereumAddress(address)": {
                "notice": "Add rBTC address to the key holders."
              },
              "addEthereumAddresses(address[])": {
                "notice": "Add rBTC addresses to the key holders."
              },
              "addEthereumAndBitcoinAddresses(address[],string[])": {
                "notice": "Add rBTC and bitcoin addresses to the key holders."
              },
              "changeBitcoinRequirement(uint256)": {
                "notice": "Set flag bitcoinRequired to true/false."
              },
              "changeEthereumRequirement(uint256)": {
                "notice": "Set flag ethereumRequired to true/false."
              },
              "getBitcoinAddresses()": {
                "notice": "Get array of bitcoin key holders."
              },
              "getEthereumAddresses()": {
                "notice": "Get array of rBTC key holders."
              },
              "isBitcoinAddressOwner(string)": {
                "notice": "Get whether bitcoin address is a key holder."
              },
              "isEthereumAddressOwner(address)": {
                "notice": "Get whether rBTC address is a key holder."
              },
              "removeBitcoinAddress(string)": {
                "notice": "Remove bitcoin address to the key holders."
              },
              "removeBitcoinAddresses(string[])": {
                "notice": "Remove bitcoin addresses to the key holders."
              },
              "removeEthereumAddress(address)": {
                "notice": "Remove rBTC address to the key holders."
              },
              "removeEthereumAddresses(address[])": {
                "notice": "Remove rBTC addresses to the key holders."
              },
              "removeEthereumAndBitcoinAddresses(address[],string[])": {
                "notice": "Remove rBTC and bitcoin addresses to the key holders."
              }
            }
          }
        }
      },
      "contracts/openzeppelin/Address.sol": {
        "Address": {
          "abi": [],
          "devdoc": {
            "details": "Collection of functions related to the address type",
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a4593b755f6e6e186845e20a4d4b6a0189752e3ae7e4a9625a49f71af75cbd2a64736f6c63430005110032",
              "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 LOG4 MSIZE EXTCODESIZE PUSH22 0x5F6E6E186845E20A4D4B6A0189752E3AE7E4A9625A49 0xF7 BYTE 0xF7 0x5C 0xBD 0x2A PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "101:2645:136:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a4593b755f6e6e186845e20a4d4b6a0189752e3ae7e4a9625a49f71af75cbd2a64736f6c63430005110032",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 LOG4 MSIZE EXTCODESIZE PUSH22 0x5F6E6E186845E20A4D4B6A0189752E3AE7E4A9625A49 0xF7 BYTE 0xF7 0x5C 0xBD 0x2A PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "101:2645:136:-;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/openzeppelin/Context.sol": {
        "Context": {
          "abi": [
            {
              "inputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/openzeppelin/ERC20.sol": {
        "ERC20": {
          "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"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "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}. For a generic mechanism see {ERC20Mintable}. * TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. * We have followed general OpenZeppelin guidelines: functions revert instead of 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. * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.",
            "methods": {
              "allowance(address,address)": {
                "details": "See {IERC20-allowance}."
              },
              "approve(address,uint256)": {
                "details": "See {IERC20-approve}.\t * Requirements:\t * - `spender` cannot be the zero address."
              },
              "balanceOf(address)": {
                "details": "See {IERC20-balanceOf}."
              },
              "decreaseAllowance(address,uint256)": {
                "details": "Atomically decreases the allowance granted to `spender` by the caller.\t * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.\t * Emits an {Approval} event indicating the updated allowance.\t * Requirements:\t * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
              },
              "increaseAllowance(address,uint256)": {
                "details": "Atomically increases the allowance granted to `spender` by the caller.\t * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.\t * Emits an {Approval} event indicating the updated allowance.\t * Requirements:\t * - `spender` cannot be the zero address."
              },
              "totalSupply()": {
                "details": "See {IERC20-totalSupply}."
              },
              "transfer(address,uint256)": {
                "details": "See {IERC20-transfer}.\t * Requirements:\t * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC20-transferFrom}.\t * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20};\t * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405261083b806100136000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d5610212565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610218565b6100b96004803603604081101561013357600080fd5b506001600160a01b0381351690602001356102a5565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102f9565b6100b96004803603604081101561018557600080fd5b506001600160a01b038135169060200135610314565b6100b9600480360360408110156101b157600080fd5b506001600160a01b038135169060200135610382565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610396565b60006102096102026103c1565b84846103c5565b50600192915050565b60025490565b60006102258484846104b1565b61029b846102316103c1565b61029685604051806060016040528060288152602001610771602891396001600160a01b038a1660009081526001602052604081209061026f6103c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61060d16565b6103c5565b5060019392505050565b60006102096102b26103c1565b8461029685600160006102c36103c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6106a416565b6001600160a01b031660009081526020819052604090205490565b60006102096103216103c1565b84610296856040518060600160405280602581526020016107e2602591396001600061034b6103c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61060d16565b600061020961038f6103c1565b84846104b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661040a5760405162461bcd60e51b81526004018080602001828103825260248152602001806107be6024913960400191505060405180910390fd5b6001600160a01b03821661044f5760405162461bcd60e51b81526004018080602001828103825260228152602001806107296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104f65760405162461bcd60e51b81526004018080602001828103825260258152602001806107996025913960400191505060405180910390fd5b6001600160a01b03821661053b5760405162461bcd60e51b81526004018080602001828103825260238152602001806107066023913960400191505060405180910390fd5b61057e8160405180606001604052806026815260200161074b602691396001600160a01b038616600090815260208190526040902054919063ffffffff61060d16565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546105b3908263ffffffff6106a416565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561069c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610661578181015183820152602001610649565b50505050905090810190601f16801561068e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156106fe576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820e60d4c6cee092c439a49f6863dadea59fa84bf4296a18da835a9abb18e990c9d64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x83B DUP1 PUSH2 0x13 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1C7 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x11D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD5 PUSH2 0x212 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x218 JUMP JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2A5 JUMP JUMPDEST PUSH2 0xD5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2F9 JUMP JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x314 JUMP JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x382 JUMP JUMPDEST PUSH2 0xD5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x396 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209 PUSH2 0x202 PUSH2 0x3C1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x3C5 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x225 DUP5 DUP5 DUP5 PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0x29B DUP5 PUSH2 0x231 PUSH2 0x3C1 JUMP JUMPDEST PUSH2 0x296 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x771 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x26F PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x60D AND JUMP JUMPDEST PUSH2 0x3C5 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209 PUSH2 0x2B2 PUSH2 0x3C1 JUMP JUMPDEST DUP5 PUSH2 0x296 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x2C3 PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x6A4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209 PUSH2 0x321 PUSH2 0x3C1 JUMP JUMPDEST DUP5 PUSH2 0x296 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x7E2 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x34B PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x60D AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209 PUSH2 0x38F PUSH2 0x3C1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x40A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x7BE PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x44F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x729 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x4F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x799 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x53B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x706 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x57E DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x74B PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x60D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x5B3 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x6A4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x69C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x661 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x649 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x68E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x6FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA265627A PUSH27 0x72315820E60D4C6CEE092C439A49F6863DADEA59FA84BF4296A18D 0xA8 CALLDATALOAD 0xA9 0xAB 0xB1 DUP15 SWAP10 0xC SWAP14 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "1252:6215:138:-;;;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d5610212565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610218565b6100b96004803603604081101561013357600080fd5b506001600160a01b0381351690602001356102a5565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102f9565b6100b96004803603604081101561018557600080fd5b506001600160a01b038135169060200135610314565b6100b9600480360360408110156101b157600080fd5b506001600160a01b038135169060200135610382565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610396565b60006102096102026103c1565b84846103c5565b50600192915050565b60025490565b60006102258484846104b1565b61029b846102316103c1565b61029685604051806060016040528060288152602001610771602891396001600160a01b038a1660009081526001602052604081209061026f6103c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61060d16565b6103c5565b5060019392505050565b60006102096102b26103c1565b8461029685600160006102c36103c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6106a416565b6001600160a01b031660009081526020819052604090205490565b60006102096103216103c1565b84610296856040518060600160405280602581526020016107e2602591396001600061034b6103c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61060d16565b600061020961038f6103c1565b84846104b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661040a5760405162461bcd60e51b81526004018080602001828103825260248152602001806107be6024913960400191505060405180910390fd5b6001600160a01b03821661044f5760405162461bcd60e51b81526004018080602001828103825260228152602001806107296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104f65760405162461bcd60e51b81526004018080602001828103825260258152602001806107996025913960400191505060405180910390fd5b6001600160a01b03821661053b5760405162461bcd60e51b81526004018080602001828103825260238152602001806107066023913960400191505060405180910390fd5b61057e8160405180606001604052806026815260200161074b602691396001600160a01b038616600090815260208190526040902054919063ffffffff61060d16565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546105b3908263ffffffff6106a416565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561069c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610661578181015183820152602001610649565b50505050905090810190601f16801561068e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156106fe576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820e60d4c6cee092c439a49f6863dadea59fa84bf4296a18da835a9abb18e990c9d64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1C7 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x11D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD5 PUSH2 0x212 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x218 JUMP JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2A5 JUMP JUMPDEST PUSH2 0xD5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2F9 JUMP JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x314 JUMP JUMPDEST PUSH2 0xB9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x382 JUMP JUMPDEST PUSH2 0xD5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x396 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209 PUSH2 0x202 PUSH2 0x3C1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x3C5 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x225 DUP5 DUP5 DUP5 PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0x29B DUP5 PUSH2 0x231 PUSH2 0x3C1 JUMP JUMPDEST PUSH2 0x296 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x771 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x26F PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x60D AND JUMP JUMPDEST PUSH2 0x3C5 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209 PUSH2 0x2B2 PUSH2 0x3C1 JUMP JUMPDEST DUP5 PUSH2 0x296 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x2C3 PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x6A4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209 PUSH2 0x321 PUSH2 0x3C1 JUMP JUMPDEST DUP5 PUSH2 0x296 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x7E2 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x34B PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x60D AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209 PUSH2 0x38F PUSH2 0x3C1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x40A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x7BE PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x44F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x729 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x4F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x799 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x53B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x706 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x57E DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x74B PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x60D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x5B3 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x6A4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x69C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x661 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x649 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x68E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x6FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA265627A PUSH27 0x72315820E60D4C6CEE092C439A49F6863DADEA59FA84BF4296A18D 0xA8 CALLDATALOAD 0xA9 0xAB 0xB1 DUP15 SWAP10 0xC SWAP14 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "1252:6215:138:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1252:6215:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2341:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2341:134:138;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1517:80;;;:::i;:::-;;;;;;;;;;;;;;;;2894:288;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2894:288:138;;;;;;;;;;;;;;;;;:::i;3538:192::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3538:192:138;;;;;;;;:::i;1643:99::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1643:99:138;-1:-1:-1;;;;;1643:99:138;;:::i;4172:243::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4172:243:138;;;;;;;;:::i;1918:140::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1918:140:138;;;;;;;;:::i;2104:123::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2104:123:138;;;;;;;;;;:::i;2341:134::-;2407:4;2417:39;2426:12;:10;:12::i;:::-;2440:7;2449:6;2417:8;:39::i;:::-;-1:-1:-1;2467:4:138;2341:134;;;;:::o;1517:80::-;1581:12;;1517:80;:::o;2894:288::-;2992:4;3002:36;3012:6;3020:9;3031:6;3002:9;:36::i;:::-;3042:121;3051:6;3059:12;:10;:12::i;:::-;3073:89;3111:6;3073:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3073:19:138;;;;;;:11;:19;;;;;;3093:12;:10;:12::i;:::-;-1:-1:-1;;;;;3073:33:138;;;;;;;;;;;;-1:-1:-1;3073:33:138;;;:89;;:37;:89;:::i;:::-;3042:8;:121::i;:::-;-1:-1:-1;3174:4:138;2894:288;;;;;:::o;3538:192::-;3618:4;3628:83;3637:12;:10;:12::i;:::-;3651:7;3660:50;3699:10;3660:11;:25;3672:12;:10;:12::i;:::-;-1:-1:-1;;;;;3660:25:138;;;;;;;;;;;;;;;;;-1:-1:-1;3660:25:138;;;:34;;;;;;;;;;;:50;:38;:50;:::i;1643:99::-;-1:-1:-1;;;;;1720:18:138;1700:7;1720:18;;;;;;;;;;;;1643:99::o;4172:243::-;4257:4;4267:129;4276:12;:10;:12::i;:::-;4290:7;4299:96;4338:15;4299:96;;;;;;;;;;;;;;;;;:11;:25;4311:12;:10;:12::i;:::-;-1:-1:-1;;;;;4299:25:138;;;;;;;;;;;;;;;;;-1:-1:-1;4299:25:138;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;1918:140::-;1987:4;1997:42;2007:12;:10;:12::i;:::-;2021:9;2032:6;1997:9;:42::i;2104:123::-;-1:-1:-1;;;;;2196:18:138;;;2176:7;2196:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2104:123::o;780:87:137:-;853:10;780:87;:::o;6780:314:138:-;-1:-1:-1;;;;;6876:19:138;;6868:68;;;;-1:-1:-1;;;6868:68:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6948:21:138;;6940:68;;;;-1:-1:-1;;;6940:68:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7013:18:138;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7058:32;;;;;;;;;;;;;;;;;6780:314;;;:::o;4844:440::-;-1:-1:-1;;;;;4944:20:138;;4936:70;;;;-1:-1:-1;;;4936:70:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5018:23:138;;5010:71;;;;-1:-1:-1;;;5010:71:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5106;5128:6;5106:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5106:17:138;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5086:17:138;;;:9;:17;;;;;;;;;;;:91;;;;5204:20;;;;;;;:32;;5229:6;5204:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5181:20:138;;;:9;:20;;;;;;;;;;;;:55;;;;5245:35;;;;;;;5181:20;;5245:35;;;;;;;;;;;;;4844:440;;;:::o;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/openzeppelin/ERC20Detailed.sol": {
        "ERC20Detailed": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "decimals",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Optional functions from the ERC20 standard.",
            "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.\t * This value changes when {approve} or {transferFrom} are called."
              },
              "approve(address,uint256)": {
                "details": "Sets `amount` as the allowance of `spender` over the caller's tokens.\t * Returns a boolean value indicating whether the operation succeeded.\t * 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\t * Emits an {Approval} event."
              },
              "balanceOf(address)": {
                "details": "Returns the amount of tokens owned by `account`."
              },
              "constructor": {
                "details": "Sets the values for `name`, `symbol`, and `decimals`. All three 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`).\t * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei.\t * 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": "Returns the amount of tokens in existence."
              },
              "transfer(address,uint256)": {
                "details": "Moves `amount` tokens from the caller's account to `recipient`.\t * Returns a boolean value indicating whether the operation succeeded.\t * Emits a {Transfer} event."
              },
              "transferFrom(address,address,uint256)": {
                "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\t * Returns a boolean value indicating whether the operation succeeded.\t * Emits a {Transfer} event."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "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"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/openzeppelin/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"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interface of the ERC20 standard as defined in the EIP. Does not include the optional functions; to access them see {ERC20Detailed}.",
            "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.\t * This value changes when {approve} or {transferFrom} are called."
              },
              "approve(address,uint256)": {
                "details": "Sets `amount` as the allowance of `spender` over the caller's tokens.\t * Returns a boolean value indicating whether the operation succeeded.\t * 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\t * Emits an {Approval} event."
              },
              "balanceOf(address)": {
                "details": "Returns the amount of tokens owned by `account`."
              },
              "totalSupply()": {
                "details": "Returns the amount of tokens in existence."
              },
              "transfer(address,uint256)": {
                "details": "Moves `amount` tokens from the caller's account to `recipient`.\t * Returns a boolean value indicating whether the operation succeeded.\t * Emits a {Transfer} event."
              },
              "transferFrom(address,address,uint256)": {
                "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\t * Returns a boolean value indicating whether the operation succeeded.\t * Emits a {Transfer} event."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/openzeppelin/Initializable.sol": {
        "Initializable": {
          "abi": [],
          "devdoc": {
            "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 a proxied contract can't have 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. * 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.",
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582073e3346a725fcee309f34fb191bfb30b7d92c7dd6e89070dd25456743e4c95a964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH20 0xE3346A725FCEE309F34FB191BFB30B7D92C7DD6E DUP10 SMOD 0xD 0xD2 SLOAD JUMP PUSH21 0x3E4C95A964736F6C63430005110032000000000000 ",
              "sourceMap": "968:631:141:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;968:631:141;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a7231582073e3346a725fcee309f34fb191bfb30b7d92c7dd6e89070dd25456743e4c95a964736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH20 0xE3346A725FCEE309F34FB191BFB30B7D92C7DD6E DUP10 SMOD 0xD 0xD2 SLOAD JUMP PUSH21 0x3E4C95A964736F6C63430005110032000000000000 ",
              "sourceMap": "968:631:141:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/openzeppelin/Ownable.sol": {
        "Ownable": {
          "abi": [
            {
              "inputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "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. * 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.",
            "methods": {
              "constructor": {
                "details": "Initializes the contract setting the deployer as the initial owner."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/openzeppelin/ReentrancyGuard.sol": {
        "ReentrancyGuard": {
          "abi": [],
          "devdoc": {
            "author": "Remco Bloemen <remco@2π.com>, Eenae <alexey@mixbytes.io>",
            "details": "If you mark a function `nonReentrant`, you should also mark it `external`.",
            "methods": {},
            "title": "Helps contracts guard against reentrancy attacks."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055348015601457600080fd5b50603e8060226000396000f3fe6080604052600080fdfea265627a7a72315820382ede5c555ad85908ae4b697b46f5b9bfda5de8ae1a248459dee50f9e5b4f6464736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH1 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x22 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CODESIZE 0x2E 0xDE 0x5C SSTORE GAS 0xD8 MSIZE ADDMOD 0xAE 0x4B PUSH10 0x7B46F5B9BFDA5DE8AE1A 0x24 DUP5 MSIZE 0xDE 0xE5 0xF SWAP15 JUMPDEST 0x4F PUSH5 0x64736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "256:1022:143:-;;;493:1;661:55;;256:1022;8:9:-1;5:2;;;30:1;27;20:12;5:2;256:1022:143;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600080fdfea265627a7a72315820382ede5c555ad85908ae4b697b46f5b9bfda5de8ae1a248459dee50f9e5b4f6464736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CODESIZE 0x2E 0xDE 0x5C SSTORE GAS 0xD8 MSIZE ADDMOD 0xAE 0x4B PUSH10 0x7B46F5B9BFDA5DE8AE1A 0x24 DUP5 MSIZE 0xDE 0xE5 0xF SWAP15 JUMPDEST 0x4F PUSH5 0x64736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "256:1022:143:-;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/openzeppelin/SafeERC20.sol": {
        "SafeERC20": {
          "abi": [],
          "devdoc": {
            "details": "Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.",
            "methods": {},
            "title": "SafeERC20"
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820f0b606c0926a4696dffdbaa990cb8c9f8b2f26c188aae5db28592ad86e1ef65a64736f6c63430005110032",
              "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CREATE 0xB6 MOD 0xC0 SWAP3 PUSH11 0x4696DFFDBAA990CB8C9F8B 0x2F 0x26 0xC1 DUP9 0xAA 0xE5 0xDB 0x28 MSIZE 0x2A 0xD8 PUSH15 0x1EF65A64736F6C6343000511003200 ",
              "sourceMap": "575:2990:144:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820f0b606c0926a4696dffdbaa990cb8c9f8b2f26c188aae5db28592ad86e1ef65a64736f6c63430005110032",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CREATE 0xB6 MOD 0xC0 SWAP3 PUSH11 0x4696DFFDBAA990CB8C9F8B 0x2F 0x26 0xC1 DUP9 0xAA 0xE5 0xDB 0x28 MSIZE 0x2A 0xD8 PUSH15 0x1EF65A64736F6C6343000511003200 ",
              "sourceMap": "575:2990:144:-;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/openzeppelin/SafeMath.sol": {
        "SafeMath": {
          "abi": [],
          "devdoc": {
            "details": "Wrappers over Solidity's arithmetic operations with added overflow checks. * Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. * Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.",
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a95f17a5913d4bc5dc1b8390bc9725ee6dbfe22a0d28392465fc9e7a9564f5e964736f6c63430005110032",
              "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xA9 0x5F OR 0xA5 SWAP2 RETURNDATASIZE 0x4B 0xC5 0xDC SHL DUP4 SWAP1 0xBC SWAP8 0x25 0xEE PUSH14 0xBFE22A0D28392465FC9E7A9564F5 0xE9 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "597:4988:145:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a95f17a5913d4bc5dc1b8390bc9725ee6dbfe22a0d28392465fc9e7a9564f5e964736f6c63430005110032",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xA9 0x5F OR 0xA5 SWAP2 RETURNDATASIZE 0x4B 0xC5 0xDC SHL DUP4 SWAP1 0xBC SWAP8 0x25 0xEE PUSH14 0xBFE22A0D28392465FC9E7A9564F5 0xE9 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "597:4988:145:-;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/openzeppelin/SignedSafeMath.sol": {
        "SignedSafeMath": {
          "abi": [],
          "devdoc": {
            "details": "Signed math operations with safety checks that revert on error.",
            "methods": {},
            "title": "SignedSafeMath"
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158206d3dd42b8d778b5044f96efa43ccd806ab2cfba5a7d43911425ed8b99917771164736f6c63430005110032",
              "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH14 0x3DD42B8D778B5044F96EFA43CCD8 MOD 0xAB 0x2C 0xFB 0xA5 0xA7 0xD4 CODECOPY GT TIMESTAMP 0x5E 0xD8 0xB9 SWAP10 OR PUSH24 0x1164736F6C63430005110032000000000000000000000000 ",
              "sourceMap": "138:2219:146:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158206d3dd42b8d778b5044f96efa43ccd806ab2cfba5a7d43911425ed8b99917771164736f6c63430005110032",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH14 0x3DD42B8D778B5044F96EFA43CCD8 MOD 0xAB 0x2C 0xFB 0xA5 0xA7 0xD4 CODECOPY GT TIMESTAMP 0x5E 0xD8 0xB9 SWAP10 OR PUSH24 0x1164736F6C63430005110032000000000000000000000000 ",
              "sourceMap": "138:2219:146:-;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/proxy/Proxy.sol": {
        "Proxy": {
          "abi": [
            {
              "inputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldImplementation",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newImplementation",
                  "type": "address"
                }
              ],
              "name": "ImplementationChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getImplementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getProxyOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "UpgradableProxy is the contract that inherits Proxy and wraps these functions.",
            "methods": {
              "getImplementation()": {
                "return": "Address of the implementation."
              },
              "getProxyOwner()": {
                "return": "Address of the owner."
              }
            },
            "title": "Base Proxy contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610023336001600160e01b0361002816565b61010c565b6001600160a01b03811661006d5760405162461bcd60e51b81526004018080602001828103825260258152602001806102a76025913960400191505060405180910390fd5b6001600160a01b0381166100886001600160e01b036100e416565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b61018c8061011b6000396000f3fe6080604052600436106100295760003560e01c80631ab7710d1461009f578063aaf10f42146100d0575b60006100336100e1565b90506001600160a01b03811661007a5760405162461bcd60e51b81526004018080602001828103825260238152602001806101356023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e81801561009b578184f35b8184fd5b3480156100ab57600080fd5b506100b461010c565b604080516001600160a01b039092168252519081900360200190f35b3480156100dc57600080fd5b506100b45b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f019020549056fe50726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e64a265627a7a7231582027a7a873f4b285598b63221898f6cf634961c783565310c02e91eb3721b55f7a64736f6c6343000511003250726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x28 AND JUMP JUMPDEST PUSH2 0x10C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2A7 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0xE4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x18C DUP1 PUSH2 0x11B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0xD0 JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x33 PUSH2 0xE1 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x135 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x9B JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB4 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB4 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP INVALID POP PUSH19 0x6F78793A3A28293A20696D706C656D656E7461 PUSH21 0x696F6E206E6F7420666F756E64A265627A7A723158 KECCAK256 0x27 0xA7 0xA8 PUSH20 0xF4B285598B63221898F6CF634961C783565310C0 0x2E SWAP2 0xEB CALLDATACOPY 0x21 0xB5 0x5F PUSH27 0x64736F6C6343000511003250726F78793A3A73657450726F78794F PUSH24 0x6E65723A20696E76616C6964206164647265737300000000 ",
              "sourceMap": "1227:2588:147:-;;;1628:55;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1653:26:147;1668:10;-1:-1:-1;;;;;1653:14:147;:26;:::i;:::-;1227:2588;;2644:249;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2776:45:147;;2797:15;-1:-1:-1;;;;;2797:13:147;:15;:::i;:::-;-1:-1:-1;;;;;2776:45:147;;;;;;;;;;;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;2867:19;2862:28::o;2983:134::-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o;1227:2588::-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106100295760003560e01c80631ab7710d1461009f578063aaf10f42146100d0575b60006100336100e1565b90506001600160a01b03811661007a5760405162461bcd60e51b81526004018080602001828103825260238152602001806101356023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e81801561009b578184f35b8184fd5b3480156100ab57600080fd5b506100b461010c565b604080516001600160a01b039092168252519081900360200190f35b3480156100dc57600080fd5b506100b45b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f019020549056fe50726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e64a265627a7a7231582027a7a873f4b285598b63221898f6cf634961c783565310c02e91eb3721b55f7a64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1AB7710D EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0xD0 JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x33 PUSH2 0xE1 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x135 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0x9B JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB4 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB4 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP INVALID POP PUSH19 0x6F78793A3A28293A20696D706C656D656E7461 PUSH21 0x696F6E206E6F7420666F756E64A265627A7A723158 KECCAK256 0x27 0xA7 0xA8 PUSH20 0xF4B285598B63221898F6CF634961C783565310C0 0x2E SWAP2 0xEB CALLDATACOPY 0x21 0xB5 0x5F PUSH27 0x64736F6C6343000511003200000000000000000000000000000000 ",
              "sourceMap": "1227:2588:147:-;;;;;;;;;;;;;;;;;;;;;;;3338:22;3363:19;:17;:19::i;:::-;3338:44;-1:-1:-1;;;;;;3394:28:147;;3386:76;;;;-1:-1:-1;;;3386:76:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3502:4;3496:11;3536:12;3533:1;3524:7;3511:38;3627:1;3624;3610:12;3601:7;3585:14;3580:3;3567:62;3645:14;3690:4;3687:1;3678:7;3663:32;3707:6;3718:41;;;;3795:4;3786:7;3779:21;3718:41;3748:4;3739:7;3732:21;2983:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2983:134:147;;;:::i;:::-;;;;-1:-1:-1;;;;;2983:134:147;;;;;;;;;;;;;;2386:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2386:165:147;;;1291:31;;;-1:-1:-1;;;1291:31:147;;;;;;;;;;;;2534:10;;2510:38::o;2983:134::-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o"
            },
            "methodIdentifiers": {
              "getImplementation()": "aaf10f42",
              "getProxyOwner()": "1ab7710d"
            }
          },
          "userdoc": {
            "methods": {
              "constructor": "Set sender as an owner.",
              "getImplementation()": {
                "notice": "Return address of the implementation."
              },
              "getProxyOwner()": {
                "notice": "Return address of the owner."
              }
            },
            "notice": "The proxy performs delegated calls to the contract implementation it is pointing to. This way upgradable contracts are possible on blockchain. * Delegating proxy contracts are widely used for both upgradeability and gas savings. These proxies rely on a logic contract (also known as implementation contract or master copy) that is called using delegatecall. This allows proxies to keep a persistent state (storage and balance) while the code is delegated to the logic contract. * Proxy contract is meant to be inherited and its internal functions _setImplementation and _setProxyOwner to be called when upgrades become neccessary. * The loan token (iToken) contract as well as the protocol contract act as proxies, delegating all calls to underlying contracts. Therefore, if you want to interact with them using web3, you need to use the ABIs from the contracts containing the actual logic or the interface contract.  ABI for LoanToken contracts: LoanTokenLogicStandard  ABI for Protocol contract: ISovryn"
          }
        }
      },
      "contracts/proxy/UpgradableProxy.sol": {
        "UpgradableProxy": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldImplementation",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newImplementation",
                  "type": "address"
                }
              ],
              "name": "ImplementationChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_oldOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "payable": true,
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getImplementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "getProxyOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_implementation",
                  "type": "address"
                }
              ],
              "name": "setImplementation",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "setProxyOwner",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "getImplementation()": {
                "return": "Address of the implementation."
              },
              "getProxyOwner()": {
                "return": "Address of the owner."
              },
              "setImplementation(address)": {
                "details": "Wrapper for _setImplementation that exposes the function as public for owner to be able to set a new version of the contract as current pointing implementation.",
                "params": {
                  "_implementation": "Address of the implementation."
                }
              },
              "setProxyOwner(address)": {
                "params": {
                  "_owner": "Address of the owner."
                }
              }
            },
            "title": "Upgradable Proxy contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052610016336001600160e01b0361001b16565b6100ff565b6001600160a01b0381166100605760405162461bcd60e51b81526004018080602001828103825260258152602001806105b26025913960400191505060405180910390fd5b6001600160a01b03811661007b6001600160e01b036100d716565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b6104a48061010e6000396000f3fe60806040526004361061003f5760003560e01c80631ab7710d146100b5578063aaf10f42146100e6578063caaee91c146100fb578063d784d42614610130575b6000610049610163565b90506001600160a01b0381166100905760405162461bcd60e51b81526004018080602001828103825260238152602001806104286023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e8180156100b1578184f35b8184fd5b3480156100c157600080fd5b506100ca61018e565b604080516001600160a01b039092168252519081900360200190f35b3480156100f257600080fd5b506100ca610163565b34801561010757600080fd5b5061012e6004803603602081101561011e57600080fd5b50356001600160a01b03166101b6565b005b34801561013c57600080fd5b5061012e6004803603602081101561015357600080fd5b50356001600160a01b0316610227565b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b6101be61018e565b6001600160a01b0316336001600160a01b03161461021b576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b61022481610295565b50565b61022f61018e565b6001600160a01b0316336001600160a01b03161461028c576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b61022481610348565b6001600160a01b0381166102da5760405162461bcd60e51b815260040180806020018281038252602581526020018061044b6025913960400191505060405180910390fd5b806001600160a01b03166102ec61018e565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b6001600160a01b03811661038d5760405162461bcd60e51b81526004018080602001828103825260298152602001806103ff6029913960400191505060405180910390fd5b806001600160a01b031661039f610163565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a3604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205556fe50726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6964206164647265737350726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e6450726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373a265627a7a72315820060c7648b077b1feacd58b3a3ba09a37aa2f753fa37d6997215dcc1fc575547f64736f6c6343000511003250726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x16 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x1B AND JUMP JUMPDEST PUSH2 0xFF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B2 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x7B PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0xD7 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x4A4 DUP1 PUSH2 0x10E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1AB7710D EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0xCAAEE91C EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0xD784D426 EQ PUSH2 0x130 JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x49 PUSH2 0x163 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x90 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x428 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0xB1 JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCA PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCA PUSH2 0x163 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1BE PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x21B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x224 DUP2 PUSH2 0x295 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x22F PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x28C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x224 DUP2 PUSH2 0x348 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x44B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EC PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x38D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x39F PUSH2 0x163 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SSTORE JUMP INVALID POP PUSH19 0x6F78793A3A736574496D706C656D656E746174 PUSH10 0x6F6E3A20696E76616C69 PUSH5 0x2061646472 PUSH6 0x737350726F78 PUSH26 0x3A3A28293A20696D706C656D656E746174696F6E206E6F742066 PUSH16 0x756E6450726F78793A3A73657450726F PUSH25 0x794F776E65723A20696E76616C69642061646472657373A265 PUSH3 0x7A7A72 BALANCE PC KECCAK256 MOD 0xC PUSH23 0x48B077B1FEACD58B3A3BA09A37AA2F753FA37D6997215D 0xCC 0x1F 0xC5 PUSH22 0x547F64736F6C6343000511003250726F78793A3A7365 PUSH21 0x50726F78794F776E65723A20696E76616C69642061 PUSH5 0x6472657373 ",
              "sourceMap": "862:635:148:-;;;1653:26:147;1668:10;-1:-1:-1;;;;;1653:14:147;:26;:::i;:::-;862:635:148;;2644:249:147;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2776:45:147;;2797:15;-1:-1:-1;;;;;2797:13:147;:15;:::i;:::-;-1:-1:-1;;;;;2776:45:147;;;;;;;;;;;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;2867:19;2862:28::o;2983:134::-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o;862:635:148:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "60806040526004361061003f5760003560e01c80631ab7710d146100b5578063aaf10f42146100e6578063caaee91c146100fb578063d784d42614610130575b6000610049610163565b90506001600160a01b0381166100905760405162461bcd60e51b81526004018080602001828103825260238152602001806104286023913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e8180156100b1578184f35b8184fd5b3480156100c157600080fd5b506100ca61018e565b604080516001600160a01b039092168252519081900360200190f35b3480156100f257600080fd5b506100ca610163565b34801561010757600080fd5b5061012e6004803603602081101561011e57600080fd5b50356001600160a01b03166101b6565b005b34801561013c57600080fd5b5061012e6004803603602081101561015357600080fd5b50356001600160a01b0316610227565b604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205490565b604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f0190205490565b6101be61018e565b6001600160a01b0316336001600160a01b03161461021b576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b61022481610295565b50565b61022f61018e565b6001600160a01b0316336001600160a01b03161461028c576040805162461bcd60e51b8152602060048201526015602482015274141c9bde1e4e8e881858d8d95cdcc819195b9a5959605a1b604482015290519081900360640190fd5b61022481610348565b6001600160a01b0381166102da5760405162461bcd60e51b815260040180806020018281038252602581526020018061044b6025913960400191505060405180910390fd5b806001600160a01b03166102ec61018e565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3604080516e35b2bc97383937bc3c9737bbb732b960891b8152905190819003600f01902055565b6001600160a01b03811661038d5760405162461bcd60e51b81526004018080602001828103825260298152602001806103ff6029913960400191505060405180910390fd5b806001600160a01b031661039f610163565b6001600160a01b03167fcfbf4028add9318bbf716f08c348595afb063b0e9feed1f86d33681a4b3ed4d360405160405180910390a3604080517135b2bc9734b6b83632b6b2b73a30ba34b7b760711b815290519081900360120190205556fe50726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c6964206164647265737350726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e6450726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373a265627a7a72315820060c7648b077b1feacd58b3a3ba09a37aa2f753fa37d6997215dcc1fc575547f64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1AB7710D EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0xAAF10F42 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0xCAAEE91C EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0xD784D426 EQ PUSH2 0x130 JUMPI JUMPDEST PUSH1 0x0 PUSH2 0x49 PUSH2 0x163 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x90 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x428 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLDATASIZE PUSH1 0x0 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE DUP4 DUP6 GAS DELEGATECALL RETURNDATASIZE DUP1 PUSH1 0x0 DUP5 RETURNDATACOPY DUP2 DUP1 ISZERO PUSH2 0xB1 JUMPI DUP2 DUP5 RETURN JUMPDEST DUP2 DUP5 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCA PUSH2 0x18E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCA PUSH2 0x163 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1BE PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x21B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x224 DUP2 PUSH2 0x295 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x22F PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x28C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x141C9BDE1E4E8E881858D8D95CDCC819195B9A5959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x224 DUP2 PUSH2 0x348 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x44B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2EC PUSH2 0x18E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH15 0x35B2BC97383937BC3C9737BBB732B9 PUSH1 0x89 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xF ADD SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x38D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x39F PUSH2 0x163 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xCFBF4028ADD9318BBF716F08C348595AFB063B0E9FEED1F86D33681A4B3ED4D3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD PUSH18 0x35B2BC9734B6B83632B6B2B73A30BA34B7B7 PUSH1 0x71 SHL DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x12 ADD SWAP1 KECCAK256 SSTORE JUMP INVALID POP PUSH19 0x6F78793A3A736574496D706C656D656E746174 PUSH10 0x6F6E3A20696E76616C69 PUSH5 0x2061646472 PUSH6 0x737350726F78 PUSH26 0x3A3A28293A20696D706C656D656E746174696F6E206E6F742066 PUSH16 0x756E6450726F78793A3A73657450726F PUSH25 0x794F776E65723A20696E76616C69642061646472657373A265 PUSH3 0x7A7A72 BALANCE PC KECCAK256 MOD 0xC PUSH23 0x48B077B1FEACD58B3A3BA09A37AA2F753FA37D6997215D 0xCC 0x1F 0xC5 PUSH22 0x547F64736F6C63430005110032000000000000000000 ",
              "sourceMap": "862:635:148:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3338:22:147;3363:19;:17;:19::i;:::-;3338:44;-1:-1:-1;;;;;;3394:28:147;;3386:76;;;;-1:-1:-1;;;3386:76:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3502:4;3496:11;3536:12;3533:1;3524:7;3511:38;3627:1;3624;3610:12;3601:7;3585:14;3580:3;3567:62;3645:14;3690:4;3687:1;3678:7;3663:32;3707:6;3718:41;;;;3795:4;3786:7;3779:21;3718:41;3748:4;3739:7;3732:21;2983:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2983:134:147;;;:::i;:::-;;;;-1:-1:-1;;;;;2983:134:147;;;;;;;;;;;;;;2386:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2386:165:147;;;:::i;1404:91:148:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:91:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:91:148;-1:-1:-1;;;;;1404:91:148;;:::i;:::-;;1194:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1194:117:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1194:117:148;-1:-1:-1;;;;;1194:117:148;;:::i;2386:165:147:-;1291:31;;;-1:-1:-1;;;1291:31:147;;;;;;;;;;;;2534:10;;2510:38::o;2983:134::-;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;3100:10;;3085:29::o;1404:91:148:-;1801:15:147;:13;:15::i;:::-;-1:-1:-1;;;;;1787:29:147;:10;-1:-1:-1;;;;;1787:29:147;;1779:63;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;;;;1469:22:148;1484:6;1469:14;:22::i;:::-;1404:91;:::o;1194:117::-;1801:15:147;:13;:15::i;:::-;-1:-1:-1;;;;;1787:29:147;:10;-1:-1:-1;;;;;1787:29:147;;1779:63;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;-1:-1:-1;;;1779:63:147;;;;;;;;;;;;;;;1272:35:148;1291:15;1272:18;:35::i;2644:249:147:-;-1:-1:-1;;;;;2705:20:147;;2697:70;;;;-1:-1:-1;;;2697:70:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2814:6;-1:-1:-1;;;;;2776:45:147;2797:15;:13;:15::i;:::-;-1:-1:-1;;;;;2776:45:147;;;;;;;;;;;1362:28;;;-1:-1:-1;;;1362:28:147;;;;;;;;;;;;2867:19;2862:28::o;1971:307::-;-1:-1:-1;;;;;2045:29:147;;2037:83;;;;-1:-1:-1;;;2037:83:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:15;-1:-1:-1;;;;;2129:59:147;2151:19;:17;:19::i;:::-;-1:-1:-1;;;;;2129:59:147;;;;;;;;;;;1291:31;;;-1:-1:-1;;;1291:31:147;;;;;;;;;;;;2243:28;2238:37::o"
            },
            "methodIdentifiers": {
              "getImplementation()": "aaf10f42",
              "getProxyOwner()": "1ab7710d",
              "setImplementation(address)": "d784d426",
              "setProxyOwner(address)": "caaee91c"
            }
          },
          "userdoc": {
            "methods": {
              "getImplementation()": {
                "notice": "Return address of the implementation."
              },
              "getProxyOwner()": {
                "notice": "Return address of the owner."
              },
              "setImplementation(address)": {
                "notice": "Set address of the implementation."
              },
              "setProxyOwner(address)": {
                "notice": "Set address of the owner."
              }
            },
            "notice": "A disadvantage of the immutable ledger is that nobody can change the source code of a smart contract after it’s been deployed. In order to fix bugs or introduce new features, smart contracts need to be upgradable somehow. * Although it is not possible to upgrade the code of an already deployed smart contract, it is possible to set-up a proxy contract architecture that will allow to use new deployed contracts as if the main logic had been upgraded. * A proxy architecture pattern is such that all message calls go through a Proxy contract that will redirect them to the latest deployed contract logic. To upgrade, a new version of the contract is deployed, and the Proxy is updated to reference the new contract address."
          }
        }
      },
      "contracts/rsk/RSKAddrValidator.sol": {
        "RSKAddrValidator": {
          "abi": [],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158203e576a576939c805940ad9329eaf80efef3f5be653f81edd570f41daee7ce11164736f6c63430005110032",
              "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 RETURNDATACOPY JUMPI PUSH11 0x576939C805940AD9329EAF DUP1 0xEF 0xEF EXTCODEHASH JUMPDEST 0xE6 MSTORE8 0xF8 0x1E 0xDD JUMPI 0xF COINBASE 0xDA 0xEE PUSH29 0xE11164736F6C6343000511003200000000000000000000000000000000 ",
              "sourceMap": "57:716:149:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158203e576a576939c805940ad9329eaf80efef3f5be653f81edd570f41daee7ce11164736f6c63430005110032",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 RETURNDATACOPY JUMPI PUSH11 0x576939C805940AD9329EAF DUP1 0xEF 0xEF EXTCODEHASH JUMPDEST 0xE6 MSTORE8 0xF8 0x1E 0xDD JUMPI 0xF COINBASE 0xDA 0xEE PUSH29 0xE11164736F6C6343000511003200000000000000000000000000000000 ",
              "sourceMap": "57:716:149:-;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/swaps/ISwapsImpl.sol": {
        "ISwapsImpl": {
          "abi": [
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "optionalContractAddress",
                  "type": "address"
                }
              ],
              "name": "internalExpectedRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "sovrynSwapContractRegistryAddress",
                  "type": "address"
                }
              ],
              "name": "internalExpectedReturn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "expectedReturn",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiverAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "returnToSenderAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minSourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxSourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "requiredDestTokenAmount",
                  "type": "uint256"
                }
              ],
              "name": "internalSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "destTokenAmountReceived",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmountUsed",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "internalExpectedRate(address,address,uint256,address)": "c8c8f395",
              "internalExpectedReturn(address,address,uint256,address)": "fc9249cc",
              "internalSwap(address,address,address,address,uint256,uint256,uint256)": "255ee844"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/swaps/SwapsUser.sol": {
        "SwapsUser": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "feeRebatePercent",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "basisPoint",
                  "type": "uint256"
                }
              ],
              "name": "EarnRewardFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "ExternalSwap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sourceToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "destToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "sourceAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "destAmount",
                  "type": "uint256"
                }
              ],
              "name": "LoanSwap",
              "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": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayBorrowingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayLendingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "payer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "PayTradingFee",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "prevModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newModuleContractAddress",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "module",
                  "type": "bytes32"
                }
              ],
              "name": "ProtocolModuleContractReplaced",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Perform token swaps for loans and trades."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b610ead8061010f6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158209eb283ccb68bd311f5df04fbd3476c58c0a776f08a203eeeaf00fa85f132647e64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH2 0xA9 PUSH2 0xFC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x100 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xEAD DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158209EB283CCB68BD3 GT CREATE2 0xDF DIV 0xFB 0xD3 SELFBALANCE PUSH13 0x58C0A776F08A203EEEAF00FA85 CALL ORIGIN PUSH5 0x7E64736F6C PUSH4 0x43000511 STOP ORIGIN ",
              "sourceMap": "390:7716:151:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;390:7716:151;;780:87:137;853:10;780:87;:::o;390:7716:151:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158209eb283ccb68bd311f5df04fbd3476c58c0a776f08a203eeeaf00fa85f132647e64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF589A3E7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0x8EC JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0x8F4 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0x8FC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x904 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0x8BC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x8C4 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0x7DB JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0x87E JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0x886 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0x8AC JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xB9CFFA3E GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x71D JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x753 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x6D1 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x6F7 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x68B JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x6C1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x655 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x635 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x53D JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x5E1 JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x4E3 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x50F JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x46B JUMPI PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x421 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x95B JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x976 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x993 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x33D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA6B JUMP JUMPDEST PUSH2 0x562 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x5B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x447 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB2C JUMP JUMPDEST PUSH2 0x378 PUSH2 0xB35 JUMP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB44 JUMP JUMPDEST PUSH2 0x447 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xB9D JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xBA3 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBA9 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x70D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBCA JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x378 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x770 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST PUSH2 0x7F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xC7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xCD0 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xCED JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xCFC JUMP JUMPDEST PUSH2 0x3E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD14 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0x8EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E9 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xD89 JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x378 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB76 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0xD77 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xD80 DUP2 PUSH2 0xDB1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xDF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158209EB283CCB68BD3 GT CREATE2 0xDF DIV 0xFB 0xD3 SELFBALANCE PUSH13 0x58C0A776F08A203EEEAF00FA85 CALL ORIGIN PUSH5 0x7E64736F6C PUSH4 0x43000511 STOP ORIGIN ",
              "sourceMap": "390:7716:151:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;390:7716:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:67:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:30;;;:::i;:::-;;;;-1:-1:-1;;;;;5443:30:14;;;;;;;;;;;;;;1270:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1270:46:14;-1:-1:-1;;;;;;1270:46:14;;:::i;6768:81::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6768:81:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4372:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4372:55:14;-1:-1:-1;;;;;4372:55:14;;:::i;5558:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5558:53:14;-1:-1:-1;;;;;5558:53:14;;:::i;:::-;;;;;;;;;;;;;;;;;;3097:46;;;:::i;3969:32::-;;;:::i;1527:65::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1527:65:14;;;;;;;;:::i;3376:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3376:55:14;-1:-1:-1;;;;;3376:55:14;;:::i;4925:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4925:48:14;-1:-1:-1;;;;;4925:48:14;;:::i;1744:69::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1744:69:14;;;;;;-1:-1:-1;;;;;1744:69:14;;:::i;2825:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2825:55:14;-1:-1:-1;;;;;2825:55:14;;:::i;2717:41::-;;;:::i;4832:37::-;;;:::i;2013:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2013:52:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:50;;;:::i;1898:76::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1898:76:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4542:47:14;-1:-1:-1;;;;;4542:47:14;;:::i;5650:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5650:57:14;-1:-1:-1;;;;;5650:57:14;;:::i;1087:24::-;;;:::i;6000:39::-;;;:::i;1012:25::-;;;:::i;3887:32::-;;;:::i;7007:17::-;;;:::i;851:68:142:-;;;:::i;4285:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4285:55:14;-1:-1:-1;;;;;4285:55:14;;:::i;1134:83:142:-;;;:::i;2994:55:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2994:55:14;-1:-1:-1;;;;;2994:55:14;;:::i;5113:49::-;;;:::i;5340:45::-;;;:::i;4075:47::-;;;:::i;5175:29::-;;;:::i;3781:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3781:57:14;-1:-1:-1;;;;;3781:57:14;;:::i;3605:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:57:14;-1:-1:-1;;;;;3605:57:14;;:::i;6272:30::-;;;:::i;1174:48::-;;;:::i;6168:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:55:14;-1:-1:-1;;;;;6168:55:14;;:::i;1347:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1347:37:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;;;;;;;;;;;;;;;;1437:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:48:14;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6853:69:14;;;;;;;;;;:::i;6305:31::-;;;:::i;4651:43::-;;;:::i;3209:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:55:14;-1:-1:-1;;;;;3209:55:14;;:::i;2626:29::-;;;:::i;3490:47::-;;;:::i;4754:35::-;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;6447:60:14;;;:::i;4198:55::-;;;:::i;5207:35::-;;;:::i;5389:20::-;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;3097:46::-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;1437:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2626:29::-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/swaps/connectors/SwapsImplSovrynSwap.sol": {
        "SwapsImplSovrynSwap": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "source",
                  "type": "string"
                }
              ],
              "name": "getContractHexName",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "result",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sovrynSwapRegistryAddress",
                  "type": "address"
                }
              ],
              "name": "getSovrynSwapNetworkContract",
              "outputs": [
                {
                  "internalType": "contract ISovrynSwapNetwork",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "sovrynSwapContractRegistryAddress",
                  "type": "address"
                }
              ],
              "name": "internalExpectedRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "sovrynSwapContractRegistryAddress",
                  "type": "address"
                }
              ],
              "name": "internalExpectedReturn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "expectedReturn",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiverAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "returnToSenderAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minSourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxSourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "requiredDestTokenAmount",
                  "type": "uint256"
                }
              ],
              "name": "internalSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "destTokenAmountReceived",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmountUsed",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "getContractHexName(string)": {
                "params": {
                  "source": "The name of the contract."
                }
              },
              "getSovrynSwapNetworkContract(address)": {
                "params": {
                  "sovrynSwapRegistryAddress": "The address of the registry."
                }
              },
              "internalExpectedRate(address,address,uint256,address)": {
                "params": {
                  "destTokenAddress": "The address of the destination token contract.",
                  "sourceTokenAddress": "The address of the source token contract.",
                  "sourceTokenAmount": "The amount of source tokens to get the rate for."
                }
              },
              "internalExpectedReturn(address,address,uint256,address)": {
                "params": {
                  "destTokenAddress": "The address of the destination token contract.",
                  "sourceTokenAddress": "The address of the source token contract.",
                  "sourceTokenAmount": "The amount of source tokens to get the return for."
                }
              },
              "internalSwap(address,address,address,address,uint256,uint256,uint256)": {
                "params": {
                  "destTokenAddress": "The address of the destination tokens.",
                  "maxSourceTokenAmount": "The maximum amount of source tokens to swapped.",
                  "minSourceTokenAmount": "The minimum amount of source tokens to swapped (only considered if requiredDestTokens == 0).",
                  "receiverAddress": "The address who will received the swap token results",
                  "requiredDestTokenAmount": "The required amount of destination tokens.",
                  "returnToSenderAddress": "The address to return unspent tokens to (when called by the protocol, it's always the protocol contract).",
                  "sourceTokenAddress": "The address of the source tokens."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Swaps Implementation Sovryn contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b6125688061010f6000396000f3fe6080604052600436106103765760003560e01c80638f32d59b116101d1578063ca83d57511610102578063edab119f116100a0578063f6ddc8b31161006f578063f6ddc8b314610d73578063f706b1f214610d88578063f851a44014610d9d578063fc9249cc14610db257610376565b8063edab119f14610cff578063f0e085f514610d14578063f2fde38b14610d29578063f589a3e714610d5e57610376565b8063d288208c116100dc578063d288208c14610c8d578063d473c2da14610ca2578063d485045e14610cb7578063e8f6276414610cea57610376565b8063ca83d57514610ba5578063cb6eacd114610bd8578063cd5d808d14610c5257610376565b8063b30643d91161016f578063ba4861e911610149578063ba4861e914610a7f578063bdee453c14610a94578063c4a9081514610ac7578063c8c8f39514610b5c57610376565b8063b30643d914610a04578063b7e1524114610a37578063b9cffa3e14610a6a57610376565b8063acc04348116101ab578063acc0434814610914578063ae0a853014610929578063afe840091461093e578063b1fb7f561461095357610376565b80638f32d59b146108b757806392d894f8146108cc578063959083d3146108ff57610376565b80634699f846116102ab5780637420ca3e116102495780637a8faeb8116102235780637a8faeb8146108455780638456cb591461085a5780638da5cb5b1461086f5780638dc48ba51461088457610376565b80637420ca3e14610806578063742e67981461081b57806378d849ed1461083057610376565b8063574442cc11610285578063574442cc1461072557806362fff3f61461073a57806368c4ac26146107a05780636e663730146107d357610376565b80634699f846146106b35780634f28cac2146106c8578063569fc1fb146106dd57610376565b80632a324027116103185780633452d2d4116102f25780633452d2d4146105e15780633fca506e146106145780634115a2b6146106475780634203e3951461068057610376565b80632a3240271461057e5780632f470764146105935780633432423c146105a857610376565b80631b7bde74116103545780631b7bde741461044c578063218b39c61461049957806324cc5749146104cc578063255ee8441461051357610376565b8063065d810f1461037b5780630676c1b7146103e757806317548b7914610418575b600080fd5b34801561038757600080fd5b506103b46004803603604081101561039e57600080fd5b506001600160a01b038135169060200135610dfb565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156103f357600080fd5b506103fc610e3b565b604080516001600160a01b039092168252519081900360200190f35b34801561042457600080fd5b506103fc6004803603602081101561043b57600080fd5b50356001600160e01b031916610e4a565b34801561045857600080fd5b506104876004803603604081101561046f57600080fd5b506001600160a01b0381358116916020013516610e65565b60408051918252519081900360200190f35b3480156104a557600080fd5b506103fc600480360360208110156104bc57600080fd5b50356001600160a01b0316610e82565b3480156104d857600080fd5b506104ff600480360360208110156104ef57600080fd5b50356001600160a01b0316610e9d565b604080519115158252519081900360200190f35b610565600480360360e081101561052957600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c00135610eb2565b6040805192835260208301919091528051918290030190f35b34801561058a57600080fd5b5061048761145e565b34801561059f57600080fd5b50610487611464565b3480156105b457600080fd5b506103b4600480360360408110156105cb57600080fd5b506001600160a01b03813516906020013561146a565b3480156105ed57600080fd5b506104876004803603602081101561060457600080fd5b50356001600160a01b03166114aa565b34801561062057600080fd5b506104876004803603602081101561063757600080fd5b50356001600160a01b03166114bc565b34801561065357600080fd5b506104ff6004803603604081101561066a57600080fd5b50803590602001356001600160a01b03166114ce565b34801561068c57600080fd5b50610487600480360360208110156106a357600080fd5b50356001600160a01b03166114ee565b3480156106bf57600080fd5b50610487611500565b3480156106d457600080fd5b50610487611506565b3480156106e957600080fd5b506107076004803603602081101561070057600080fd5b503561150c565b60408051938452602084019290925282820152519081900360600190f35b34801561073157600080fd5b5061048761152d565b34801561074657600080fd5b506107756004803603604081101561075d57600080fd5b506001600160a01b0381358116916020013516611533565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b3480156107ac57600080fd5b506104ff600480360360208110156107c357600080fd5b50356001600160a01b031661156d565b3480156107df57600080fd5b506103fc600480360360208110156107f657600080fd5b50356001600160a01b0316611582565b34801561081257600080fd5b506103fc61159d565b34801561082757600080fd5b506104876115ac565b34801561083c57600080fd5b506103fc6115b2565b34801561085157600080fd5b506104876115c1565b34801561086657600080fd5b506104ff6115c7565b34801561087b57600080fd5b506103fc6115d0565b34801561089057600080fd5b506103fc600480360360208110156108a757600080fd5b50356001600160a01b03166115df565b3480156108c357600080fd5b506104ff6115fa565b3480156108d857600080fd5b50610487600480360360208110156108ef57600080fd5b50356001600160a01b0316611620565b34801561090b57600080fd5b50610487611632565b34801561092057600080fd5b50610487611638565b34801561093557600080fd5b5061048761163e565b34801561094a57600080fd5b506103fc611644565b34801561095f57600080fd5b506104876004803603602081101561097657600080fd5b810190602081018135600160201b81111561099057600080fd5b8201836020820111156109a257600080fd5b803590602001918460018302840111600160201b831117156109c357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611653945050505050565b348015610a1057600080fd5b5061048760048036036020811015610a2757600080fd5b50356001600160a01b031661165a565b348015610a4357600080fd5b5061048760048036036020811015610a5a57600080fd5b50356001600160a01b031661166c565b348015610a7657600080fd5b506103fc61167e565b348015610a8b57600080fd5b506103fc61168d565b348015610aa057600080fd5b5061048760048036036020811015610ab757600080fd5b50356001600160a01b031661169c565b348015610ad357600080fd5b50610af160048036036020811015610aea57600080fd5b50356116ae565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b348015610b6857600080fd5b5061048760048036036080811015610b7f57600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516611720565b348015610bb157600080fd5b506103fc60048036036020811015610bc857600080fd5b50356001600160a01b0316611931565b348015610be457600080fd5b50610c0260048036036020811015610bfb57600080fd5b50356119df565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b348015610c5e57600080fd5b5061048760048036036040811015610c7557600080fd5b506001600160a01b0381358116916020013516611a31565b348015610c9957600080fd5b506103fc611a4e565b348015610cae57600080fd5b50610487611a5d565b348015610cc357600080fd5b5061048760048036036020811015610cda57600080fd5b50356001600160a01b0316611a63565b348015610cf657600080fd5b506103fc611a75565b348015610d0b57600080fd5b50610487611a84565b348015610d2057600080fd5b50610487611a8a565b348015610d3557600080fd5b50610d5c60048036036020811015610d4c57600080fd5b50356001600160a01b0316611a90565b005b348015610d6a57600080fd5b50610487611ae4565b348015610d7f57600080fd5b50610487611aea565b348015610d9457600080fd5b506103fc611af0565b348015610da957600080fd5b506103fc611aff565b348015610dbe57600080fd5b5061048760048036036080811015610dd557600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516611b0e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b600080876001600160a01b0316896001600160a01b03161415610f0d576040805162461bcd60e51b815260206004820152600e60248201526d1cdbdd5c98d9480f4f4819195cdd60921b604482015290519081900360640190fd5b6001600160a01b03891660009081526026602052604090205460ff168015610f4d57506001600160a01b03881660009081526026602052604090205460ff165b610f8f576040805162461bcd60e51b815260206004820152600e60248201526d696e76616c696420746f6b656e7360901b604482015290519081900360640190fd5b600454600090610fa7906001600160a01b0316611931565b6040805163d734fa1960e01b81526001600160a01b038d811660048301528c8116602483015291519293506060929184169163d734fa1991604480820192600092909190829003018186803b158015610fff57600080fd5b505afa158015611013573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561103c57600080fd5b8101908080516040519392919084600160201b82111561105b57600080fd5b90830190602082018581111561107057600080fd5b82518660208202830111600160201b8211171561108c57600080fd5b82525081516020918201928201910280838360005b838110156110b95781810151838201526020016110a1565b505050509050016040525050509050600080905087935060008611156111e2576110e58c8c888a611cfc565b935085836001600160a01b0316637f9c0ecd84876040518363ffffffff1660e01b81526004018080602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561114e578181015183820152602001611136565b50505050905001935050505060206040518083038186803b15801561117257600080fd5b505afa158015611186573d6000803e3d6000fd5b505050506040513d602081101561119c57600080fd5b505110156111db5760405162461bcd60e51b81526004018080602001828103825260248152602001806124b06024913960400191505060405180910390fd5b50846112c5565b83156112c5576112c26103e86112b66103e3866001600160a01b0316637f9c0ecd878a6040518363ffffffff1660e01b81526004018080602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561125a578181015183820152602001611242565b50505050905001935050505060206040518083038186803b15801561127e57600080fd5b505afa158015611292573d6000803e3d6000fd5b505050506040513d60208110156112a857600080fd5b50519063ffffffff611e2316565b9063ffffffff611e8516565b90505b60008411611311576040805162461bcd60e51b815260206004820152601460248201527363616e6e6f742073776170203020746f6b656e7360601b604482015290519081900360640190fd5b61131c848d85611ec7565b826001600160a01b031663b77d239b8386848e6000806040518763ffffffff1660e01b81526004018080602001878152602001868152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828103825288818151815260200191508051906020019060200280838360005b838110156113c35781810151838201526020016113ab565b50505050905001975050505050505050602060405180830381600087803b1580156113ed57600080fd5b505af1158015611401573d6000803e3d6000fd5b505050506040513d602081101561141757600080fd5b505194506001600160a01b038916301461144f578684101561144f5761144f6001600160a01b038d168a868a0363ffffffff611f7016565b50505097509795505050505050565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316611611611fc7565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b6020015190565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b60008061172c83611931565b6040805163d734fa1960e01b81526001600160a01b038981166004830152888116602483015291519293506060929184169163d734fa1991604480820192600092909190829003018186803b15801561178457600080fd5b505afa158015611798573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156117c157600080fd5b8101908080516040519392919084600160201b8211156117e057600080fd5b9083019060208201858111156117f557600080fd5b82518660208202830111600160201b8211171561181157600080fd5b82525081516020918201928201910280838360005b8381101561183e578181015183820152602001611826565b5050505090500160405250505090506000826001600160a01b0316637f9c0ecd83886040518363ffffffff1660e01b81526004018080602001838152602001828103825284818151815260200191508051906020019060200280838360005b838110156118b557818101518382015260200161189d565b50505050905001935050505060206040518083038186803b1580156118d957600080fd5b505afa1580156118ed573d6000803e3d6000fd5b505050506040513d602081101561190357600080fd5b50519050611923866112b683670de0b6b3a764000063ffffffff611e2316565b93505050505b949350505050565b600080829050806001600160a01b031663bb34534c61197860405180604001604052806011815260200170536f7672796e537761704e6574776f726b60781b815250611653565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156119ac57600080fd5b505afa1580156119c0573d6000803e3d6000fd5b505050506040513d60208110156119d657600080fd5b50519392505050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b611a986115fa565b611ad8576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611ae181611fcb565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b600080611b1a83611931565b6040805163d734fa1960e01b81526001600160a01b038981166004830152888116602483015291519293506060929184169163d734fa1991604480820192600092909190829003018186803b158015611b7257600080fd5b505afa158015611b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611baf57600080fd5b8101908080516040519392919084600160201b821115611bce57600080fd5b908301906020820185811115611be357600080fd5b82518660208202830111600160201b82111715611bff57600080fd5b82525081516020918201928201910280838360005b83811015611c2c578181015183820152602001611c14565b505050509050016040525050509050816001600160a01b0316637f9c0ecd82876040518363ffffffff1660e01b81526004018080602001838152602001828103825284818151815260200191508051906020019060200280838360005b83811015611ca1578181015183820152602001611c89565b50505050905001935050505060206040518083038186803b158015611cc557600080fd5b505afa158015611cd9573d6000803e3d6000fd5b505050506040513d6020811015611cef57600080fd5b5051979650505050505050565b6002546040805163524efd4b60e01b81526001600160a01b038781166004830152868116602483015291516000938493169163524efd4b916044808301926020929190829003018186803b158015611d5357600080fd5b505afa158015611d67573d6000803e3d6000fd5b505050506040513d6020811015611d7d57600080fd5b5051905080611d8f5782915050611929565b600454600090611dad908890889087906001600160a01b0316611720565b9050611dc3816112b6878563ffffffff611e2316565b92506000611dd9846103e863ffffffff611e8516565b9050602854811115611dea57506028545b611dfa848263ffffffff61206c16565b9350831580611e0857508484115b15611e1857849350505050611929565b505050949350505050565b600082611e3257506000611e7f565b82820282848281611e3f57fe5b0414611e7c5760405162461bcd60e51b815260040180806020018281038252602181526020018061248f6021913960400191505060405180910390fd5b90505b92915050565b6000611e7c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120c6565b60408051636eb1769f60e11b81523060048201526001600160a01b038381166024830152915160009285169163dd62ed3e916044808301926020929190829003018186803b158015611f1857600080fd5b505afa158015611f2c573d6000803e3d6000fd5b505050506040513d6020811015611f4257600080fd5b5051905083811015611f6a57611f6a6001600160a01b0384168360001963ffffffff61216816565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611fc2908490612277565b505050565b3390565b6001600160a01b0381166120105760405162461bcd60e51b81526004018080602001828103825260268152602001806124696026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015611e7c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081836121525760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121175781810151838201526020016120ff565b50505050905090810190601f1680156121445780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161215e57fe5b0495945050505050565b8015806121ee575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156121c057600080fd5b505afa1580156121d4573d6000803e3d6000fd5b505050506040513d60208110156121ea57600080fd5b5051155b6122295760405162461bcd60e51b81526004018080602001828103825260368152602001806124fe6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052611fc29084905b612289826001600160a01b031661242f565b6122da576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106123185780518252601f1990920191602091820191016122f9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461237a576040519150601f19603f3d011682016040523d82523d6000602084013e61237f565b606091505b5091509150816123d6576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611f6a578080602001905160208110156123f257600080fd5b5051611f6a5760405162461bcd60e51b815260040180806020018281038252602a8152602001806124d4602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061192957505015159291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77696e73756666696369656e7420736f7572636520746f6b656e732070726f76696465642e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158200f6c819e7e9bdc872acaad6f2644590ab0ec9111dda594b17f2e56de36ecf8ed64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH2 0xA9 PUSH2 0xFC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x100 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x2568 DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x376 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xCA83D575 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF6DDC8B3 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0xD73 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xD88 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xD9D JUMPI DUP1 PUSH4 0xFC9249CC EQ PUSH2 0xDB2 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0xCFF JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0xD14 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xD29 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0xD5E JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xD288208C GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0xC8D JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0xCA2 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0xCB7 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0xCEA JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xCA83D575 EQ PUSH2 0xBA5 JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0xBD8 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0xC52 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0xBA4861E9 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0xA7F JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0xA94 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0xAC7 JUMPI DUP1 PUSH4 0xC8C8F395 EQ PUSH2 0xB5C JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 EQ PUSH2 0xA04 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0xA37 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0xA6A JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xACC04348 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x914 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x929 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x93E JUMPI DUP1 PUSH4 0xB1FB7F56 EQ PUSH2 0x953 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x8B7 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x8CC JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x8FF JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x2AB JUMPI DUP1 PUSH4 0x7420CA3E GT PUSH2 0x249 JUMPI DUP1 PUSH4 0x7A8FAEB8 GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x845 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x85A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x86F JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x884 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x806 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x81B JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x830 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x574442CC GT PUSH2 0x285 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x73A JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x7A0 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x7D3 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x6B3 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x6C8 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x6DD JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x318 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2F2 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x5E1 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x614 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x680 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x593 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x5A8 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x1B7BDE74 GT PUSH2 0x354 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x499 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0x255EE844 EQ PUSH2 0x513 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3E7 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x418 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDFB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0xE3B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xE4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xE65 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE9D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xEB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x145E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1464 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x146A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14EE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1500 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1506 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x707 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x150C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x152D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x746 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x775 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x75D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1533 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x156D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1582 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x159D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x15AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x83C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x15B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x851 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x15C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x866 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FF PUSH2 0x15C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x15D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x890 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15DF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FF PUSH2 0x15FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1620 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x90B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1632 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1638 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x935 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x163E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x1644 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x976 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x990 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1653 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x165A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x166C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x167E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x168D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x169C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x16AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xB7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x1720 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1931 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC02 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x19DF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1A31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x1A4E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1A5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A63 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x1A75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1A84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1A8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD5C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A90 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1AE4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1AEA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x1AF0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x1AFF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xDD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x1B0E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF0D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1CDBDD5C98D9480F4F4819195CDD PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0xF4D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xF8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x696E76616C696420746F6B656E73 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xFA7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1931 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD734FA19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP13 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 SWAP2 DUP5 AND SWAP2 PUSH4 0xD734FA19 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1013 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x103C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x105B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1070 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT OR ISZERO PUSH2 0x108C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10B9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10A1 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP DUP8 SWAP4 POP PUSH1 0x0 DUP7 GT ISZERO PUSH2 0x11E2 JUMPI PUSH2 0x10E5 DUP13 DUP13 DUP9 DUP11 PUSH2 0x1CFC JUMP JUMPDEST SWAP4 POP DUP6 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7F9C0ECD DUP5 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x114E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1136 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1172 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1186 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x119C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x11DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24B0 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH2 0x12C5 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x12C5 JUMPI PUSH2 0x12C2 PUSH2 0x3E8 PUSH2 0x12B6 PUSH2 0x3E3 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7F9C0ECD DUP8 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x125A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1242 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x127E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1292 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1E23 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1E85 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 DUP5 GT PUSH2 0x1311 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x63616E6E6F742073776170203020746F6B656E73 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x131C DUP5 DUP14 DUP6 PUSH2 0x1EC7 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB77D239B DUP4 DUP7 DUP5 DUP15 PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP9 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13C3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x13AB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1401 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ PUSH2 0x144F JUMPI DUP7 DUP5 LT ISZERO PUSH2 0x144F JUMPI PUSH2 0x144F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP11 DUP7 DUP11 SUB PUSH4 0xFFFFFFFF PUSH2 0x1F70 AND JUMP JUMPDEST POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1611 PUSH2 0x1FC7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x172C DUP4 PUSH2 0x1931 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD734FA19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 SWAP2 DUP5 AND SWAP2 PUSH4 0xD734FA19 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1798 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x17E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x17F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT OR ISZERO PUSH2 0x1811 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x183E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1826 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7F9C0ECD DUP4 DUP9 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18B5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x189D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1903 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1923 DUP7 PUSH2 0x12B6 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x1E23 AND JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBB34534C PUSH2 0x1978 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x536F7672796E537761704E6574776F726B PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x1653 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1A98 PUSH2 0x15FA JUMP JUMPDEST PUSH2 0x1AD8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1AE1 DUP2 PUSH2 0x1FCB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B1A DUP4 PUSH2 0x1931 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD734FA19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 SWAP2 DUP5 AND SWAP2 PUSH4 0xD734FA19 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x1BCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1BE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT OR ISZERO PUSH2 0x1BFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C2C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1C14 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP1 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7F9C0ECD DUP3 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1CA1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1C89 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CD9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x524EFD4B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x524EFD4B SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x1D8F JUMPI DUP3 SWAP2 POP POP PUSH2 0x1929 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1DAD SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1720 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DC3 DUP2 PUSH2 0x12B6 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1E23 AND JUMP JUMPDEST SWAP3 POP PUSH1 0x0 PUSH2 0x1DD9 DUP5 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x1E85 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x28 SLOAD DUP2 GT ISZERO PUSH2 0x1DEA JUMPI POP PUSH1 0x28 SLOAD JUMPDEST PUSH2 0x1DFA DUP5 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x206C AND JUMP JUMPDEST SWAP4 POP DUP4 ISZERO DUP1 PUSH2 0x1E08 JUMPI POP DUP5 DUP5 GT JUMPDEST ISZERO PUSH2 0x1E18 JUMPI DUP5 SWAP4 POP POP POP POP PUSH2 0x1929 JUMP JUMPDEST POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1E32 JUMPI POP PUSH1 0x0 PUSH2 0x1E7F JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1E3F JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1E7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x248F PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E7C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x20C6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1F6A JUMPI PUSH2 0x1F6A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH1 0x0 NOT PUSH4 0xFFFFFFFF PUSH2 0x2168 AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1FC2 SWAP1 DUP5 SWAP1 PUSH2 0x2277 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2010 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2469 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1E7C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2152 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2117 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x20FF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2144 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x215E JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x21EE JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO JUMPDEST PUSH2 0x2229 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24FE PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1FC2 SWAP1 DUP5 SWAP1 JUMPDEST PUSH2 0x2289 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x242F JUMP JUMPDEST PUSH2 0x22DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2318 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x22F9 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x237A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x237F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x23D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1F6A JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1F6A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24D4 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x1929 JUMPI POP POP ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373536166654D6174683A206D756C746970 PUSH13 0x69636174696F6E206F76657266 PUSH13 0x6F77696E73756666696369656E PUSH21 0x20736F7572636520746F6B656E732070726F766964 PUSH6 0x642E53616665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x7563636565645361666545524332303A20617070 PUSH19 0x6F76652066726F6D206E6F6E2D7A65726F2074 PUSH16 0x206E6F6E2D7A65726F20616C6C6F7761 PUSH15 0x6365A265627A7A723158200F6C819E PUSH31 0x9BDC872ACAAD6F2644590AB0EC9111DDA594B17F2E56DE36ECF8ED64736F6C PUSH4 0x43000511 STOP ORIGIN ",
              "sourceMap": "585:9648:152:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;585:9648:152;;780:87:137;853:10;780:87;:::o;585:9648:152:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106103765760003560e01c80638f32d59b116101d1578063ca83d57511610102578063edab119f116100a0578063f6ddc8b31161006f578063f6ddc8b314610d73578063f706b1f214610d88578063f851a44014610d9d578063fc9249cc14610db257610376565b8063edab119f14610cff578063f0e085f514610d14578063f2fde38b14610d29578063f589a3e714610d5e57610376565b8063d288208c116100dc578063d288208c14610c8d578063d473c2da14610ca2578063d485045e14610cb7578063e8f6276414610cea57610376565b8063ca83d57514610ba5578063cb6eacd114610bd8578063cd5d808d14610c5257610376565b8063b30643d91161016f578063ba4861e911610149578063ba4861e914610a7f578063bdee453c14610a94578063c4a9081514610ac7578063c8c8f39514610b5c57610376565b8063b30643d914610a04578063b7e1524114610a37578063b9cffa3e14610a6a57610376565b8063acc04348116101ab578063acc0434814610914578063ae0a853014610929578063afe840091461093e578063b1fb7f561461095357610376565b80638f32d59b146108b757806392d894f8146108cc578063959083d3146108ff57610376565b80634699f846116102ab5780637420ca3e116102495780637a8faeb8116102235780637a8faeb8146108455780638456cb591461085a5780638da5cb5b1461086f5780638dc48ba51461088457610376565b80637420ca3e14610806578063742e67981461081b57806378d849ed1461083057610376565b8063574442cc11610285578063574442cc1461072557806362fff3f61461073a57806368c4ac26146107a05780636e663730146107d357610376565b80634699f846146106b35780634f28cac2146106c8578063569fc1fb146106dd57610376565b80632a324027116103185780633452d2d4116102f25780633452d2d4146105e15780633fca506e146106145780634115a2b6146106475780634203e3951461068057610376565b80632a3240271461057e5780632f470764146105935780633432423c146105a857610376565b80631b7bde74116103545780631b7bde741461044c578063218b39c61461049957806324cc5749146104cc578063255ee8441461051357610376565b8063065d810f1461037b5780630676c1b7146103e757806317548b7914610418575b600080fd5b34801561038757600080fd5b506103b46004803603604081101561039e57600080fd5b506001600160a01b038135169060200135610dfb565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156103f357600080fd5b506103fc610e3b565b604080516001600160a01b039092168252519081900360200190f35b34801561042457600080fd5b506103fc6004803603602081101561043b57600080fd5b50356001600160e01b031916610e4a565b34801561045857600080fd5b506104876004803603604081101561046f57600080fd5b506001600160a01b0381358116916020013516610e65565b60408051918252519081900360200190f35b3480156104a557600080fd5b506103fc600480360360208110156104bc57600080fd5b50356001600160a01b0316610e82565b3480156104d857600080fd5b506104ff600480360360208110156104ef57600080fd5b50356001600160a01b0316610e9d565b604080519115158252519081900360200190f35b610565600480360360e081101561052957600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c00135610eb2565b6040805192835260208301919091528051918290030190f35b34801561058a57600080fd5b5061048761145e565b34801561059f57600080fd5b50610487611464565b3480156105b457600080fd5b506103b4600480360360408110156105cb57600080fd5b506001600160a01b03813516906020013561146a565b3480156105ed57600080fd5b506104876004803603602081101561060457600080fd5b50356001600160a01b03166114aa565b34801561062057600080fd5b506104876004803603602081101561063757600080fd5b50356001600160a01b03166114bc565b34801561065357600080fd5b506104ff6004803603604081101561066a57600080fd5b50803590602001356001600160a01b03166114ce565b34801561068c57600080fd5b50610487600480360360208110156106a357600080fd5b50356001600160a01b03166114ee565b3480156106bf57600080fd5b50610487611500565b3480156106d457600080fd5b50610487611506565b3480156106e957600080fd5b506107076004803603602081101561070057600080fd5b503561150c565b60408051938452602084019290925282820152519081900360600190f35b34801561073157600080fd5b5061048761152d565b34801561074657600080fd5b506107756004803603604081101561075d57600080fd5b506001600160a01b0381358116916020013516611533565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b3480156107ac57600080fd5b506104ff600480360360208110156107c357600080fd5b50356001600160a01b031661156d565b3480156107df57600080fd5b506103fc600480360360208110156107f657600080fd5b50356001600160a01b0316611582565b34801561081257600080fd5b506103fc61159d565b34801561082757600080fd5b506104876115ac565b34801561083c57600080fd5b506103fc6115b2565b34801561085157600080fd5b506104876115c1565b34801561086657600080fd5b506104ff6115c7565b34801561087b57600080fd5b506103fc6115d0565b34801561089057600080fd5b506103fc600480360360208110156108a757600080fd5b50356001600160a01b03166115df565b3480156108c357600080fd5b506104ff6115fa565b3480156108d857600080fd5b50610487600480360360208110156108ef57600080fd5b50356001600160a01b0316611620565b34801561090b57600080fd5b50610487611632565b34801561092057600080fd5b50610487611638565b34801561093557600080fd5b5061048761163e565b34801561094a57600080fd5b506103fc611644565b34801561095f57600080fd5b506104876004803603602081101561097657600080fd5b810190602081018135600160201b81111561099057600080fd5b8201836020820111156109a257600080fd5b803590602001918460018302840111600160201b831117156109c357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611653945050505050565b348015610a1057600080fd5b5061048760048036036020811015610a2757600080fd5b50356001600160a01b031661165a565b348015610a4357600080fd5b5061048760048036036020811015610a5a57600080fd5b50356001600160a01b031661166c565b348015610a7657600080fd5b506103fc61167e565b348015610a8b57600080fd5b506103fc61168d565b348015610aa057600080fd5b5061048760048036036020811015610ab757600080fd5b50356001600160a01b031661169c565b348015610ad357600080fd5b50610af160048036036020811015610aea57600080fd5b50356116ae565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b348015610b6857600080fd5b5061048760048036036080811015610b7f57600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516611720565b348015610bb157600080fd5b506103fc60048036036020811015610bc857600080fd5b50356001600160a01b0316611931565b348015610be457600080fd5b50610c0260048036036020811015610bfb57600080fd5b50356119df565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b348015610c5e57600080fd5b5061048760048036036040811015610c7557600080fd5b506001600160a01b0381358116916020013516611a31565b348015610c9957600080fd5b506103fc611a4e565b348015610cae57600080fd5b50610487611a5d565b348015610cc357600080fd5b5061048760048036036020811015610cda57600080fd5b50356001600160a01b0316611a63565b348015610cf657600080fd5b506103fc611a75565b348015610d0b57600080fd5b50610487611a84565b348015610d2057600080fd5b50610487611a8a565b348015610d3557600080fd5b50610d5c60048036036020811015610d4c57600080fd5b50356001600160a01b0316611a90565b005b348015610d6a57600080fd5b50610487611ae4565b348015610d7f57600080fd5b50610487611aea565b348015610d9457600080fd5b506103fc611af0565b348015610da957600080fd5b506103fc611aff565b348015610dbe57600080fd5b5061048760048036036080811015610dd557600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516611b0e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b600080876001600160a01b0316896001600160a01b03161415610f0d576040805162461bcd60e51b815260206004820152600e60248201526d1cdbdd5c98d9480f4f4819195cdd60921b604482015290519081900360640190fd5b6001600160a01b03891660009081526026602052604090205460ff168015610f4d57506001600160a01b03881660009081526026602052604090205460ff165b610f8f576040805162461bcd60e51b815260206004820152600e60248201526d696e76616c696420746f6b656e7360901b604482015290519081900360640190fd5b600454600090610fa7906001600160a01b0316611931565b6040805163d734fa1960e01b81526001600160a01b038d811660048301528c8116602483015291519293506060929184169163d734fa1991604480820192600092909190829003018186803b158015610fff57600080fd5b505afa158015611013573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561103c57600080fd5b8101908080516040519392919084600160201b82111561105b57600080fd5b90830190602082018581111561107057600080fd5b82518660208202830111600160201b8211171561108c57600080fd5b82525081516020918201928201910280838360005b838110156110b95781810151838201526020016110a1565b505050509050016040525050509050600080905087935060008611156111e2576110e58c8c888a611cfc565b935085836001600160a01b0316637f9c0ecd84876040518363ffffffff1660e01b81526004018080602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561114e578181015183820152602001611136565b50505050905001935050505060206040518083038186803b15801561117257600080fd5b505afa158015611186573d6000803e3d6000fd5b505050506040513d602081101561119c57600080fd5b505110156111db5760405162461bcd60e51b81526004018080602001828103825260248152602001806124b06024913960400191505060405180910390fd5b50846112c5565b83156112c5576112c26103e86112b66103e3866001600160a01b0316637f9c0ecd878a6040518363ffffffff1660e01b81526004018080602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561125a578181015183820152602001611242565b50505050905001935050505060206040518083038186803b15801561127e57600080fd5b505afa158015611292573d6000803e3d6000fd5b505050506040513d60208110156112a857600080fd5b50519063ffffffff611e2316565b9063ffffffff611e8516565b90505b60008411611311576040805162461bcd60e51b815260206004820152601460248201527363616e6e6f742073776170203020746f6b656e7360601b604482015290519081900360640190fd5b61131c848d85611ec7565b826001600160a01b031663b77d239b8386848e6000806040518763ffffffff1660e01b81526004018080602001878152602001868152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828103825288818151815260200191508051906020019060200280838360005b838110156113c35781810151838201526020016113ab565b50505050905001975050505050505050602060405180830381600087803b1580156113ed57600080fd5b505af1158015611401573d6000803e3d6000fd5b505050506040513d602081101561141757600080fd5b505194506001600160a01b038916301461144f578684101561144f5761144f6001600160a01b038d168a868a0363ffffffff611f7016565b50505097509795505050505050565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316611611611fc7565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b6020015190565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b60008061172c83611931565b6040805163d734fa1960e01b81526001600160a01b038981166004830152888116602483015291519293506060929184169163d734fa1991604480820192600092909190829003018186803b15801561178457600080fd5b505afa158015611798573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156117c157600080fd5b8101908080516040519392919084600160201b8211156117e057600080fd5b9083019060208201858111156117f557600080fd5b82518660208202830111600160201b8211171561181157600080fd5b82525081516020918201928201910280838360005b8381101561183e578181015183820152602001611826565b5050505090500160405250505090506000826001600160a01b0316637f9c0ecd83886040518363ffffffff1660e01b81526004018080602001838152602001828103825284818151815260200191508051906020019060200280838360005b838110156118b557818101518382015260200161189d565b50505050905001935050505060206040518083038186803b1580156118d957600080fd5b505afa1580156118ed573d6000803e3d6000fd5b505050506040513d602081101561190357600080fd5b50519050611923866112b683670de0b6b3a764000063ffffffff611e2316565b93505050505b949350505050565b600080829050806001600160a01b031663bb34534c61197860405180604001604052806011815260200170536f7672796e537761704e6574776f726b60781b815250611653565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156119ac57600080fd5b505afa1580156119c0573d6000803e3d6000fd5b505050506040513d60208110156119d657600080fd5b50519392505050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b611a986115fa565b611ad8576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b611ae181611fcb565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b600080611b1a83611931565b6040805163d734fa1960e01b81526001600160a01b038981166004830152888116602483015291519293506060929184169163d734fa1991604480820192600092909190829003018186803b158015611b7257600080fd5b505afa158015611b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611baf57600080fd5b8101908080516040519392919084600160201b821115611bce57600080fd5b908301906020820185811115611be357600080fd5b82518660208202830111600160201b82111715611bff57600080fd5b82525081516020918201928201910280838360005b83811015611c2c578181015183820152602001611c14565b505050509050016040525050509050816001600160a01b0316637f9c0ecd82876040518363ffffffff1660e01b81526004018080602001838152602001828103825284818151815260200191508051906020019060200280838360005b83811015611ca1578181015183820152602001611c89565b50505050905001935050505060206040518083038186803b158015611cc557600080fd5b505afa158015611cd9573d6000803e3d6000fd5b505050506040513d6020811015611cef57600080fd5b5051979650505050505050565b6002546040805163524efd4b60e01b81526001600160a01b038781166004830152868116602483015291516000938493169163524efd4b916044808301926020929190829003018186803b158015611d5357600080fd5b505afa158015611d67573d6000803e3d6000fd5b505050506040513d6020811015611d7d57600080fd5b5051905080611d8f5782915050611929565b600454600090611dad908890889087906001600160a01b0316611720565b9050611dc3816112b6878563ffffffff611e2316565b92506000611dd9846103e863ffffffff611e8516565b9050602854811115611dea57506028545b611dfa848263ffffffff61206c16565b9350831580611e0857508484115b15611e1857849350505050611929565b505050949350505050565b600082611e3257506000611e7f565b82820282848281611e3f57fe5b0414611e7c5760405162461bcd60e51b815260040180806020018281038252602181526020018061248f6021913960400191505060405180910390fd5b90505b92915050565b6000611e7c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120c6565b60408051636eb1769f60e11b81523060048201526001600160a01b038381166024830152915160009285169163dd62ed3e916044808301926020929190829003018186803b158015611f1857600080fd5b505afa158015611f2c573d6000803e3d6000fd5b505050506040513d6020811015611f4257600080fd5b5051905083811015611f6a57611f6a6001600160a01b0384168360001963ffffffff61216816565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611fc2908490612277565b505050565b3390565b6001600160a01b0381166120105760405162461bcd60e51b81526004018080602001828103825260268152602001806124696026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015611e7c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081836121525760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121175781810151838201526020016120ff565b50505050905090810190601f1680156121445780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161215e57fe5b0495945050505050565b8015806121ee575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156121c057600080fd5b505afa1580156121d4573d6000803e3d6000fd5b505050506040513d60208110156121ea57600080fd5b5051155b6122295760405162461bcd60e51b81526004018080602001828103825260368152602001806124fe6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052611fc29084905b612289826001600160a01b031661242f565b6122da576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106123185780518252601f1990920191602091820191016122f9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461237a576040519150601f19603f3d011682016040523d82523d6000602084013e61237f565b606091505b5091509150816123d6576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611f6a578080602001905160208110156123f257600080fd5b5051611f6a5760405162461bcd60e51b815260040180806020018281038252602a8152602001806124d4602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061192957505015159291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77696e73756666696369656e7420736f7572636520746f6b656e732070726f76696465642e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158200f6c819e7e9bdc872acaad6f2644590ab0ec9111dda594b17f2e56de36ecf8ed64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x376 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F32D59B GT PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xCA83D575 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xEDAB119F GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF6DDC8B3 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0xD73 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xD88 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xD9D JUMPI DUP1 PUSH4 0xFC9249CC EQ PUSH2 0xDB2 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xEDAB119F EQ PUSH2 0xCFF JUMPI DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0xD14 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xD29 JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0xD5E JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xD288208C GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0xC8D JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0xCA2 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0xCB7 JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0xCEA JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xCA83D575 EQ PUSH2 0xBA5 JUMPI DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0xBD8 JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0xC52 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 GT PUSH2 0x16F JUMPI DUP1 PUSH4 0xBA4861E9 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0xA7F JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0xA94 JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0xAC7 JUMPI DUP1 PUSH4 0xC8C8F395 EQ PUSH2 0xB5C JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 EQ PUSH2 0xA04 JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0xA37 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0xA6A JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0xACC04348 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x914 JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x929 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x93E JUMPI DUP1 PUSH4 0xB1FB7F56 EQ PUSH2 0x953 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x8B7 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x8CC JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x8FF JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 GT PUSH2 0x2AB JUMPI DUP1 PUSH4 0x7420CA3E GT PUSH2 0x249 JUMPI DUP1 PUSH4 0x7A8FAEB8 GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x845 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x85A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x86F JUMPI DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x884 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x806 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x81B JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x830 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x574442CC GT PUSH2 0x285 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x725 JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x73A JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x7A0 JUMPI DUP1 PUSH4 0x6E663730 EQ PUSH2 0x7D3 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x4699F846 EQ PUSH2 0x6B3 JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x6C8 JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x6DD JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 GT PUSH2 0x318 JUMPI DUP1 PUSH4 0x3452D2D4 GT PUSH2 0x2F2 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x5E1 JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x614 JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0x4203E395 EQ PUSH2 0x680 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x2A324027 EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x593 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x5A8 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x1B7BDE74 GT PUSH2 0x354 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x499 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0x255EE844 EQ PUSH2 0x513 JUMPI PUSH2 0x376 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3E7 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x418 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xDFB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0xE3B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xE4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xE65 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE9D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x565 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xEB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x145E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1464 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x146A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14EE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1500 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1506 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x707 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x150C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x152D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x746 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x775 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x75D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1533 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x156D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1582 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x159D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x15AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x83C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x15B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x851 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x15C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x866 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FF PUSH2 0x15C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x15D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x890 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15DF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FF PUSH2 0x15FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1620 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x90B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1632 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1638 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x935 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x163E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x1644 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x976 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x990 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x9C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1653 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x165A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x166C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x167E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x168D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x169C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x16AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xB7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x1720 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1931 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC02 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x19DF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1A31 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x1A4E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1A5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A63 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x1A75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1A84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1A8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD5C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A90 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1AE4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH2 0x1AEA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x1AF0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC PUSH2 0x1AFF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xDD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x1B0E JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF0D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1CDBDD5C98D9480F4F4819195CDD PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0xF4D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xF8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x696E76616C696420746F6B656E73 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xFA7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1931 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD734FA19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP13 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 SWAP2 DUP5 AND SWAP2 PUSH4 0xD734FA19 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1013 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x103C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x105B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1070 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT OR ISZERO PUSH2 0x108C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10B9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10A1 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP DUP8 SWAP4 POP PUSH1 0x0 DUP7 GT ISZERO PUSH2 0x11E2 JUMPI PUSH2 0x10E5 DUP13 DUP13 DUP9 DUP11 PUSH2 0x1CFC JUMP JUMPDEST SWAP4 POP DUP6 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7F9C0ECD DUP5 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x114E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1136 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1172 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1186 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x119C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD LT ISZERO PUSH2 0x11DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24B0 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH2 0x12C5 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x12C5 JUMPI PUSH2 0x12C2 PUSH2 0x3E8 PUSH2 0x12B6 PUSH2 0x3E3 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7F9C0ECD DUP8 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x125A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1242 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x127E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1292 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1E23 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1E85 AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 DUP5 GT PUSH2 0x1311 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x63616E6E6F742073776170203020746F6B656E73 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x131C DUP5 DUP14 DUP6 PUSH2 0x1EC7 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB77D239B DUP4 DUP7 DUP5 DUP15 PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP9 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13C3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x13AB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1401 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND ADDRESS EQ PUSH2 0x144F JUMPI DUP7 DUP5 LT ISZERO PUSH2 0x144F JUMPI PUSH2 0x144F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP11 DUP7 DUP11 SUB PUSH4 0xFFFFFFFF PUSH2 0x1F70 AND JUMP JUMPDEST POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1611 PUSH2 0x1FC7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x172C DUP4 PUSH2 0x1931 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD734FA19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 SWAP2 DUP5 AND SWAP2 PUSH4 0xD734FA19 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1798 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x17E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x17F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT OR ISZERO PUSH2 0x1811 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x183E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1826 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7F9C0ECD DUP4 DUP9 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18B5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x189D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1903 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1923 DUP7 PUSH2 0x12B6 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x1E23 AND JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBB34534C PUSH2 0x1978 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x536F7672796E537761704E6574776F726B PUSH1 0x78 SHL DUP2 MSTORE POP PUSH2 0x1653 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1A98 PUSH2 0x15FA JUMP JUMPDEST PUSH2 0x1AD8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1AE1 DUP2 PUSH2 0x1FCB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B1A DUP4 PUSH2 0x1931 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD734FA19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 SWAP2 DUP5 AND SWAP2 PUSH4 0xD734FA19 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x1BCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1BE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT OR ISZERO PUSH2 0x1BFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C2C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1C14 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP SWAP1 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7F9C0ECD DUP3 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1CA1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1C89 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CD9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x524EFD4B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x524EFD4B SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x1D8F JUMPI DUP3 SWAP2 POP POP PUSH2 0x1929 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1DAD SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1720 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DC3 DUP2 PUSH2 0x12B6 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1E23 AND JUMP JUMPDEST SWAP3 POP PUSH1 0x0 PUSH2 0x1DD9 DUP5 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x1E85 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x28 SLOAD DUP2 GT ISZERO PUSH2 0x1DEA JUMPI POP PUSH1 0x28 SLOAD JUMPDEST PUSH2 0x1DFA DUP5 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x206C AND JUMP JUMPDEST SWAP4 POP DUP4 ISZERO DUP1 PUSH2 0x1E08 JUMPI POP DUP5 DUP5 GT JUMPDEST ISZERO PUSH2 0x1E18 JUMPI DUP5 SWAP4 POP POP POP POP PUSH2 0x1929 JUMP JUMPDEST POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1E32 JUMPI POP PUSH1 0x0 PUSH2 0x1E7F JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1E3F JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1E7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x248F PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E7C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x20C6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1F6A JUMPI PUSH2 0x1F6A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH1 0x0 NOT PUSH4 0xFFFFFFFF PUSH2 0x2168 AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1FC2 SWAP1 DUP5 SWAP1 PUSH2 0x2277 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2010 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2469 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1E7C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2152 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2117 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x20FF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2144 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x215E JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x21EE JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO JUMPDEST PUSH2 0x2229 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24FE PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1FC2 SWAP1 DUP5 SWAP1 JUMPDEST PUSH2 0x2289 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x242F JUMP JUMPDEST PUSH2 0x22DA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2318 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x22F9 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x237A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x237F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x23D6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1F6A JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1F6A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24D4 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x1929 JUMPI POP POP ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373536166654D6174683A206D756C746970 PUSH13 0x69636174696F6E206F76657266 PUSH13 0x6F77696E73756666696369656E PUSH21 0x20736F7572636520746F6B656E732070726F766964 PUSH6 0x642E53616665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x7563636565645361666545524332303A20617070 PUSH19 0x6F76652066726F6D206E6F6E2D7A65726F2074 PUSH16 0x206E6F6E2D7A65726F20616C6C6F7761 PUSH15 0x6365A265627A7A723158200F6C819E PUSH31 0x9BDC872ACAAD6F2644590AB0EC9111DDA594B17F2E56DE36ECF8ED64736F6C PUSH4 0x43000511 STOP ORIGIN ",
              "sourceMap": "585:9648:152:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:67:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1636:67:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5443:30:14;;;:::i;:::-;;;;-1:-1:-1;;;;;5443:30:14;;;;;;;;;;;;;;1270:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1270:46:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1270:46:14;-1:-1:-1;;;;;;1270:46:14;;:::i;6768:81::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6768:81:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6768:81:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4372:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4372:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4372:55:14;-1:-1:-1;;;;;4372:55:14;;:::i;5558:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5558:53:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5558:53:14;-1:-1:-1;;;;;5558:53:14;;:::i;:::-;;;;;;;;;;;;;;;;;;2988:2678:152;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;2988:2678:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3097:46:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3097:46:14;;;:::i;3969:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3969:32:14;;;:::i;1527:65::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1527:65:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1527:65:14;;;;;;;;:::i;3376:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3376:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3376:55:14;-1:-1:-1;;;;;3376:55:14;;:::i;4925:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4925:48:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4925:48:14;-1:-1:-1;;;;;4925:48:14;;:::i;1744:69::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1744:69:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1744:69:14;;;;;;-1:-1:-1;;;;;1744:69:14;;:::i;2825:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2825:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2825:55:14;-1:-1:-1;;;;;2825:55:14;;:::i;2717:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2717:41:14;;;:::i;4832:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4832:37:14;;;:::i;2013:52::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2013:52:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2013:52:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5060:50:14;;;:::i;1898:76::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1898:76:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1898:76:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4542:47:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4542:47:14;-1:-1:-1;;;;;4542:47:14;;:::i;5650:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5650:57:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5650:57:14;-1:-1:-1;;;;;5650:57:14;;:::i;1087:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1087:24:14;;;:::i;6000:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6000:39:14;;;:::i;1012:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1012:25:14;;;:::i;3887:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3887:32:14;;;:::i;7007:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7007:17:14;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;4285:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4285:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4285:55:14;-1:-1:-1;;;;;4285:55:14;;:::i;1134:83:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;2994:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2994:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2994:55:14;-1:-1:-1;;;;;2994:55:14;;:::i;5113:49::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5113:49:14;;;:::i;5340:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5340:45:14;;;:::i;4075:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4075:47:14;;;:::i;5175:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5175:29:14;;;:::i;846:144:152:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;846:144:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;846:144:152;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;846:144:152;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;846:144:152;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;846:144:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;846:144:152;;-1:-1:-1;846:144:152;;-1:-1:-1;;;;;846:144:152:i;3781:57:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3781:57:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3781:57:14;-1:-1:-1;;;;;3781:57:14;;:::i;3605:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3605:57:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:57:14;-1:-1:-1;;;;;3605:57:14;;:::i;6272:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6272:30:14;;;:::i;1174:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1174:48:14;;;:::i;6168:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6168:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:55:14;-1:-1:-1;;;;;6168:55:14;;:::i;1347:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1347:37:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1347:37:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;;;;;;;;;;;;;;;;8645:672:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8645:672:152;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;8645:672:152;;;;;;;;;;;;;;;;;;;;;;:::i;1149:505::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1149:505:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1149:505:152;-1:-1:-1;;;;;1149:505:152;;:::i;1437:48:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1437:48:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:48:14;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6853:69:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6853:69:14;;;;;;;;;;:::i;6305:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6305:31:14;;;:::i;4651:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4651:43:14;;;:::i;3209:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3209:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:55:14;-1:-1:-1;;;;;3209:55:14;;:::i;2626:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2626:29:14;;;:::i;3490:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3490:47:14;;;:::i;4754:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4754:35:14;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1351:98:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;6447:60:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6447:60:14;;;:::i;4198:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4198:55:14;;;:::i;5207:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5207:35:14;;;:::i;5389:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5389:20:14;;;:::i;9663:568:152:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9663:568:152;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;9663:568:152;;;;;;;;;;;;;;;;;;;;;;:::i;1636:67:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;2988:2678:152:-;3254:31;3287:29;3352:16;-1:-1:-1;;;;;3330:38:152;:18;-1:-1:-1;;;;;3330:38:152;;;3322:65;;;;;-1:-1:-1;;;3322:65:152;;;;;;;;;;;;-1:-1:-1;;;3322:65:152;;;;;;;;;;;;;;;-1:-1:-1;;;;;3399:35:152;;;;;;:15;:35;;;;;;;;:72;;;;-1:-1:-1;;;;;;3438:33:152;;;;;;:15;:33;;;;;;;;3399:72;3391:99;;;;;-1:-1:-1;;;3391:99:152;;;;;;;;;;;;-1:-1:-1;;;3391:99:152;;;;;;;;;;;;;;;3563:33;;3495:36;;3534:63;;-1:-1:-1;;;;;3563:33:152;3534:28;:63::i;:::-;3624:86;;;-1:-1:-1;;;3624:86:152;;-1:-1:-1;;;;;3624:86:152;;;;;;;;;;;;;;;;3495:102;;-1:-1:-1;3601:20:152;;3624:32;;;;;;:86;;;;;-1:-1:-1;;3624:86:152;;;;;;;;:32;:86;;;5:2:-1;;;;30:1;27;20:12;5:2;3624:86:152;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3624:86:152;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3624:86:152;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;3624:86:152;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;3624:86:152;;421:4:-1;412:14;;;;3624:86:152;;;;;412:14:-1;3624:86:152;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3624:86:152;;;;;;;;;;;3601:109;;3715:17;3735:1;3715:21;;3764:20;3740:44;;4020:1;3994:23;:27;3990:737;;;4052:131;4083:18;4107:16;4129:23;4158:20;4052:25;:131::i;:::-;4028:155;;4377:23;4316:17;-1:-1:-1;;;;;4316:28:152;;4345:4;4351:21;4316:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4316:57:152;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4316:57:152;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4316:57:152;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4316:57:152;:84;;4303:146;;;;-1:-1:-1;;;4303:146:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4466:23:152;3990:737;;;4504:25;;4500:227;;4646:76;4717:4;4646:66;4708:3;4646:17;-1:-1:-1;;;;;4646:28:152;;4675:4;4681:21;4646:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4646:57:152;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4646:57:152;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4646:57:152;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4646:57:152;;:66;:61;:66;:::i;:::-;:70;:76;:70;:76;:::i;:::-;4634:88;;4500:227;4763:1;4739:21;:25;4731:58;;;;;-1:-1:-1;;;4731:58:152;;;;;;;;;;;;-1:-1:-1;;;4731:58:152;;;;;;;;;;;;;;;4794:84;4808:21;4831:18;4859:17;4794:13;:84::i;:::-;5037:17;-1:-1:-1;;;;;5037:31:152;;5069:4;5075:21;5098:9;5109:15;5134:1;5138;5037:103;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5037:103:152;-1:-1:-1;;;;;5037:103:152;;;;;;-1:-1:-1;;;;;5037:103:152;-1:-1:-1;;;;;5037:103:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5037:103:152;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5037:103:152;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5037:103:152;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5037:103:152;;-1:-1:-1;;;;;;5405:38:152;;5438:4;5405:38;5401:262;;5478:20;5454:21;:44;5450:209;;;5545:108;-1:-1:-1;;;;;5545:39:152;;5585:21;5608:44;;;5545:108;:39;:108;:::i;:::-;2988:2678;;;;;;;;;;;;;:::o;3097:46:14:-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;846:144:152:-;979:2;967:15;961:22;;946:41::o;3781:57:14:-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;8645:672:152:-;8831:7;8844:36;8883:63;8912:33;8883:28;:63::i;:::-;8973:86;;;-1:-1:-1;;;8973:86:152;;-1:-1:-1;;;;;8973:86:152;;;;;;;;;;;;;;;;8844:102;;-1:-1:-1;8950:20:152;;8973:32;;;;;;:86;;;;;-1:-1:-1;;8973:86:152;;;;;;;;:32;:86;;;5:2:-1;;;;30:1;27;20:12;5:2;8973:86:152;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8973:86:152;;;;;;39:16:-1;36:1;17:17;2:54;101:4;8973:86:152;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;8973:86:152;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;8973:86:152;;421:4:-1;412:14;;;;8973:86:152;;;;;412:14:-1;8973:86:152;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8973:86:152;;;;;;;;;;;8950:109;;9122:22;9147:17;-1:-1:-1;;;;;9147:28:152;;9176:4;9182:17;9147:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9147:53:152;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9147:53:152;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9147:53:152;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9147:53:152;;-1:-1:-1;9264:49:152;9295:17;9264:26;9147:53;9283:6;9264:26;:18;:26;:::i;:49::-;9257:56;;;;;8645:672;;;;;;;:::o;1149:505::-;1243:18;1471:34;1526:25;1471:81;;1582:16;-1:-1:-1;;;;;1582:26:152;;1609:39;;;;;;;;;;;;;;-1:-1:-1;;;1609:39:152;;;:18;:39::i;:::-;1582:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1582:67:152;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1582:67:152;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1582:67:152;;1149:505;-1:-1:-1;;;1149:505:152:o;1437:48:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2626:29::-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;9663:568:152:-;9851:22;9879:36;9918:63;9947:33;9918:28;:63::i;:::-;10008:86;;;-1:-1:-1;;;10008:86:152;;-1:-1:-1;;;;;10008:86:152;;;;;;;;;;;;;;;;9879:102;;-1:-1:-1;9985:20:152;;10008:32;;;;;;:86;;;;;-1:-1:-1;;10008:86:152;;;;;;;;:32;:86;;;5:2:-1;;;;30:1;27;20:12;5:2;10008:86:152;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10008:86:152;;;;;;39:16:-1;36:1;17:17;2:54;101:4;10008:86:152;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;10008:86:152;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;10008:86:152;;421:4:-1;412:14;;;;10008:86:152;;;;;412:14:-1;10008:86:152;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10008:86:152;;;;;;;;;;;9985:109;;10174:17;-1:-1:-1;;;;;10174:28:152;;10203:4;10209:17;10174:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10174:53:152;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10174:53:152;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10174:53:152;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10174:53:152;;9663:568;-1:-1:-1;;;;;;;9663:568:152:o;6927:1364::-;7192:10;;7180:76;;;-1:-1:-1;;;7180:76:152;;-1:-1:-1;;;;;7180:76:152;;;;;;;;;;;;;;;;7113:29;;;;7192:10;;7180:38;;:76;;;;;;;;;;;;;;7192:10;7180:76;;;5:2:-1;;;;30:1;27;20:12;5:2;7180:76:152;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7180:76:152;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7180:76:152;;-1:-1:-1;7264:26:152;7260:59;;7299:20;7292:27;;;;;7260:59;7540:33;;7433:20;;7459:115;;7480:18;;7500:16;;7518:20;;-1:-1:-1;;;;;7540:33:152;7459:20;:115::i;:::-;7433:141;-1:-1:-1;7695:68:152;7433:141;7695:50;:23;7723:21;7695:50;:27;:50;:::i;:68::-;7671:92;-1:-1:-1;7973:14:152;7990:31;7671:92;8016:4;7990:31;:25;:31;:::i;:::-;7973:48;;8038:12;;8029:6;:21;8025:48;;;-1:-1:-1;8061:12:152;;8025:48;8101:33;:21;8127:6;8101:33;:25;:33;:::i;:::-;8077:57;-1:-1:-1;8184:26:152;;;:74;;;8238:20;8214:21;:44;8184:74;8180:107;;;8267:20;8260:27;;;;;;;8180:107;6927:1364;;;;;;;;;:::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2393:1;-1:-1:-1;1999:399:145;;;;;:::o;2817:121::-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;6044:317:152:-;6183:64;;;-1:-1:-1;;;6183:64:152;;6222:4;6183:64;;;;-1:-1:-1;;;;;6183:64:152;;;;;;;;;6159:21;;6183:30;;;;;:64;;;;;;;;;;;;;;:30;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;6183:64:152;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6183:64:152;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6183:64:152;;-1:-1:-1;6255:27:152;;;6251:107;;;6289:64;-1:-1:-1;;;;;6289:32:152;;6322:17;-1:-1:-1;;6289:64:152;:32;:64;:::i;:::-;6044:317;;;;:::o;654:174:144:-;765:58;;;-1:-1:-1;;;;;765:58:144;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;765:58:144;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;739:85:144;;758:5;;739:18;:85::i;:::-;654:174;;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;3411:315;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1038:561:144:-;1382:10;;;1381:62;;-1:-1:-1;1398:39:144;;;-1:-1:-1;;;1398:39:144;;1422:4;1398:39;;;;-1:-1:-1;;;;;1398:39:144;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;1398:39:144;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1398:39:144;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1398:39:144;:44;1381:62;1373:129;;;;-1:-1:-1;;;1373:129:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1532:62;;;-1:-1:-1;;;;;1532:62:144;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1532:62:144;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1506:89:144;;1525:5;;2564:999;3111:27;3119:5;-1:-1:-1;;;;;3111:25:144;;:27::i;:::-;3103:71;;;;;-1:-1:-1;;;3103:71:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;3233:12;3247:23;3282:5;-1:-1:-1;;;;;3274:19:144;3294:4;3274:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3274:25:144;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3232:67:144;;;;3311:7;3303:52;;;;;-1:-1:-1;;;3303:52:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3364:17;;:21;3360:200;;3489:10;3478:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3478:30:144;3470:85;;;;-1:-1:-1;;;3470:85:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;639:564:136;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;;1183:15:136;;;1148:51;-1:-1:-1;;639:564:136:o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "getContractHexName(string)": "b1fb7f56",
              "getSovrynSwapNetworkContract(address)": "ca83d575",
              "internalExpectedRate(address,address,uint256,address)": "c8c8f395",
              "internalExpectedReturn(address,address,uint256,address)": "fc9249cc",
              "internalSwap(address,address,address,address,uint256,uint256,uint256)": "255ee844",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "getContractHexName(string)": {
                "notice": "Get the hex name of a contract."
              },
              "getSovrynSwapNetworkContract(address)": {
                "notice": "Look up the Sovryn swap network contract registered at the given address."
              },
              "internalExpectedRate(address,address,uint256,address)": {
                "notice": "Get the expected rate for 1 source token when exchanging the  given amount of source tokens."
              },
              "internalExpectedReturn(address,address,uint256,address)": {
                "notice": "Get the expected return amount when exchanging the given  amount of source tokens."
              },
              "internalSwap(address,address,address,address,uint256,uint256,uint256)": {
                "notice": "Swap the source token for the destination token on the oracle based AMM. On loan opening: minSourceTokenAmount = maxSourceTokenAmount and requiredDestTokenAmount = 0     -> swap the minSourceTokenAmount On loan rollover: (swap interest) minSourceTokenAmount = 0, maxSourceTokenAmount = complete collateral and requiredDestTokenAmount > 0     -> amount of required source tokens to swap is estimated (want to fill requiredDestTokenAmount, not more). maxSourceTokenAMount is not exceeded. On loan closure: minSourceTokenAmount <= maxSourceTokenAmount and requiredDestTokenAmount >= 0     -> same as on rollover. minimum amount is not considered at all."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the implementation of swap process and rate calculations for Sovryn network."
          }
        }
      },
      "contracts/swaps/connectors/interfaces/IContractRegistry.sol": {
        "IContractRegistry": {
          "abi": [
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "contractName",
                  "type": "bytes32"
                }
              ],
              "name": "addressOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "addressOf(bytes32)": "bb34534c"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/swaps/connectors/interfaces/ISovrynSwapNetwork.sol": {
        "ISovrynSwapNetwork": {
          "abi": [
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "_sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "_targetToken",
                  "type": "address"
                }
              ],
              "name": "conversionPath",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "_path",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_beneficiary",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_affiliateAccount",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_affiliateFee",
                  "type": "uint256"
                }
              ],
              "name": "convertByPath",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "_path",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "rateByPath",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "conversionPath(address,address)": "d734fa19",
              "convertByPath(address[],uint256,uint256,address,address,uint256)": "b77d239b",
              "rateByPath(address[],uint256)": "7f9c0ecd"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/swaps/connectors/testnet/SwapsImplLocal.sol": {
        "SwapsImplLocal": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliateRewardsHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "affiliateTradingTokenFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesReferrerBalances",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "affiliatesUserReferrer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowerNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "borrowerOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "borrowingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "delegatedManagers",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feeRebatePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "feesController",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "unused",
                  "type": "address"
                }
              ],
              "name": "internalExpectedRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "unused",
                  "type": "address"
                }
              ],
              "name": "internalExpectedReturn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sourceTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "destTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "returnToSenderAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minSourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxSourceTokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "requiredDestTokenAmount",
                  "type": "uint256"
                }
              ],
              "name": "internalSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "destTokenAmountReceived",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "sourceTokenAmountUsed",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lenderInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principalTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "owedTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "paidTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "lenderOrders",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "lockedAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "createdTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lendingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "lendingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidationIncentivePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanInterest",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "owedPerDay",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositTotal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "updatedTimestamp",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loanParams",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minInitialMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maintenanceMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxLoanTerm",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "loanPoolToUnderlying",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "loans",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "loanParamsId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "pendingTradesId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "active",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "endTimestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startMargin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "startRate",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lockedSOVAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "name": "logicTargets",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxDisagreement",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxSwapSize",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "minReferralsToPayout",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "protocolTokenPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverBaseReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rolloverFlexFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sourceBuffer",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynSwapContractRegistryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "specialRebates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "supportedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "swapsImpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tradingFeePercent",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensHeld",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "tradingFeeTokensPaid",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "underlyingToLoanPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userNotFirstTradeFlag",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcToken",
              "outputs": [
                {
                  "internalType": "contract IWrbtcERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "internalExpectedRate(address,address,uint256,address)": {
                "params": {
                  "destTokenAddress": "The address of the destiny tokens.",
                  "sourceTokenAddress": "The address of the source tokens.",
                  "sourceTokenAmount": "The amount of source tokens.",
                  "unused": "Fourth parameter ignored."
                },
                "return": "precision The expected price rate."
              },
              "internalExpectedReturn(address,address,uint256,address)": {
                "params": {
                  "destTokenAddress": "The address of the destiny tokens.",
                  "sourceTokenAddress": "The address of the source tokens.",
                  "sourceTokenAmount": "The amount of source tokens.",
                  "unused": "Fourth parameter ignored."
                },
                "return": "precision The expected return."
              },
              "internalSwap(address,address,address,address,uint256,uint256,uint256)": {
                "params": {
                  "destTokenAddress": "The address of the destiny tokens.",
                  "sourceTokenAddress": "The address of the source tokens."
                },
                "return": "destTokenAmountReceived The amount of destiny tokens sent.sourceTokenAmountUsed The amount of source tokens spent."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Swaps Implementation Local contract."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b6119648061010f6000396000f3fe6080604052600436106103505760003560e01c80638dc48ba5116101c6578063cb6eacd1116100f7578063f0e085f511610095578063f6ddc8b31161006f578063f6ddc8b314610c69578063f706b1f214610c7e578063f851a44014610c93578063fc9249cc14610a8557610350565b8063f0e085f514610c0a578063f2fde38b14610c1f578063f589a3e714610c5457610350565b8063d473c2da116100d1578063d473c2da14610b98578063d485045e14610bad578063e8f6276414610be0578063edab119f14610bf557610350565b8063cb6eacd114610ace578063cd5d808d14610b48578063d288208c14610b8357610350565b8063b30643d911610164578063ba4861e91161013e578063ba4861e9146109a8578063bdee453c146109bd578063c4a90815146109f0578063c8c8f39514610a8557610350565b8063b30643d91461092d578063b7e1524114610960578063b9cffa3e1461099357610350565b8063959083d3116101a0578063959083d3146108d9578063acc04348146108ee578063ae0a853014610903578063afe840091461091857610350565b80638dc48ba51461085e5780638f32d59b1461089157806392d894f8146108a657610350565b80634203e395116102a05780636e6637301161023e57806378d849ed1161021857806378d849ed1461080a5780637a8faeb81461081f5780638456cb59146108345780638da5cb5b1461084957610350565b80636e663730146107ad5780637420ca3e146107e0578063742e6798146107f557610350565b8063569fc1fb1161027a578063569fc1fb146106b7578063574442cc146106ff57806362fff3f61461071457806368c4ac261461077a57610350565b80634203e3951461065a5780634699f8461461068d5780634f28cac2146106a257610350565b8063255ee8441161030d5780633432423c116102e75780633432423c146105825780633452d2d4146105bb5780633fca506e146105ee5780634115a2b61461062157610350565b8063255ee844146104ed5780632a324027146105585780632f4707641461056d57610350565b8063065d810f146103555780630676c1b7146103c157806317548b79146103f25780631b7bde7414610426578063218b39c61461047357806324cc5749146104a6575b600080fd5b34801561036157600080fd5b5061038e6004803603604081101561037857600080fd5b506001600160a01b038135169060200135610ca8565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156103cd57600080fd5b506103d6610ce8565b604080516001600160a01b039092168252519081900360200190f35b3480156103fe57600080fd5b506103d66004803603602081101561041557600080fd5b50356001600160e01b031916610cf7565b34801561043257600080fd5b506104616004803603604081101561044957600080fd5b506001600160a01b0381358116916020013516610d12565b60408051918252519081900360200190f35b34801561047f57600080fd5b506103d66004803603602081101561049657600080fd5b50356001600160a01b0316610d2f565b3480156104b257600080fd5b506104d9600480360360208110156104c957600080fd5b50356001600160a01b0316610d4a565b604080519115158252519081900360200190f35b61053f600480360360e081101561050357600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c00135610d5f565b6040805192835260208301919091528051918290030190f35b34801561056457600080fd5b50610461610fe9565b34801561057957600080fd5b50610461610fef565b34801561058e57600080fd5b5061038e600480360360408110156105a557600080fd5b506001600160a01b038135169060200135610ff5565b3480156105c757600080fd5b50610461600480360360208110156105de57600080fd5b50356001600160a01b0316611035565b3480156105fa57600080fd5b506104616004803603602081101561061157600080fd5b50356001600160a01b0316611047565b34801561062d57600080fd5b506104d96004803603604081101561064457600080fd5b50803590602001356001600160a01b0316611059565b34801561066657600080fd5b506104616004803603602081101561067d57600080fd5b50356001600160a01b0316611079565b34801561069957600080fd5b5061046161108b565b3480156106ae57600080fd5b50610461611091565b3480156106c357600080fd5b506106e1600480360360208110156106da57600080fd5b5035611097565b60408051938452602084019290925282820152519081900360600190f35b34801561070b57600080fd5b506104616110b8565b34801561072057600080fd5b5061074f6004803603604081101561073757600080fd5b506001600160a01b03813581169160200135166110be565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561078657600080fd5b506104d96004803603602081101561079d57600080fd5b50356001600160a01b03166110f8565b3480156107b957600080fd5b506103d6600480360360208110156107d057600080fd5b50356001600160a01b031661110d565b3480156107ec57600080fd5b506103d6611128565b34801561080157600080fd5b50610461611137565b34801561081657600080fd5b506103d661113d565b34801561082b57600080fd5b5061046161114c565b34801561084057600080fd5b506104d9611152565b34801561085557600080fd5b506103d661115b565b34801561086a57600080fd5b506103d66004803603602081101561088157600080fd5b50356001600160a01b031661116a565b34801561089d57600080fd5b506104d9611185565b3480156108b257600080fd5b50610461600480360360208110156108c957600080fd5b50356001600160a01b03166111ab565b3480156108e557600080fd5b506104616111bd565b3480156108fa57600080fd5b506104616111c3565b34801561090f57600080fd5b506104616111c9565b34801561092457600080fd5b506103d66111cf565b34801561093957600080fd5b506104616004803603602081101561095057600080fd5b50356001600160a01b03166111de565b34801561096c57600080fd5b506104616004803603602081101561098357600080fd5b50356001600160a01b03166111f0565b34801561099f57600080fd5b506103d6611202565b3480156109b457600080fd5b506103d6611211565b3480156109c957600080fd5b50610461600480360360208110156109e057600080fd5b50356001600160a01b0316611220565b3480156109fc57600080fd5b50610a1a60048036036020811015610a1357600080fd5b5035611232565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b348015610a9157600080fd5b5061046160048036036080811015610aa857600080fd5b506001600160a01b038135811691602081013582169160408201359160600135166112a4565b348015610ada57600080fd5b50610af860048036036020811015610af157600080fd5b5035611353565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b348015610b5457600080fd5b5061046160048036036040811015610b6b57600080fd5b506001600160a01b03813581169160200135166113a5565b348015610b8f57600080fd5b506103d66113c2565b348015610ba457600080fd5b506104616113d1565b348015610bb957600080fd5b5061046160048036036020811015610bd057600080fd5b50356001600160a01b03166113d7565b348015610bec57600080fd5b506103d66113e9565b348015610c0157600080fd5b506104616113f8565b348015610c1657600080fd5b506104616113fe565b348015610c2b57600080fd5b50610c5260048036036020811015610c4257600080fd5b50356001600160a01b0316611404565b005b348015610c6057600080fd5b50610461611458565b348015610c7557600080fd5b5061046161145e565b348015610c8a57600080fd5b506103d6611464565b348015610c9f57600080fd5b506103d6611473565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b600080876001600160a01b0316896001600160a01b03161415610dba576040805162461bcd60e51b815260206004820152600e60248201526d1cdbdd5c98d9480f4f4819195cdd60921b604482015290519081900360640190fd5b60025460408051630a7549df60e21b81526001600160a01b038c811660048301528b81166024830152825160009485949216926329d5277c926044808301939192829003018186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d6040811015610e3957600080fd5b508051602090910151909250905084610e7657869250610e6f81610e63858563ffffffff61148216565b9063ffffffff6114e416565b9350610edb565b849350610e8d82610e63868463ffffffff61148216565b925086831115610edb576040805162461bcd60e51b815260206004820152601460248201527319195cdd105b5bdd5b9d081d1bdbc819dc99585d60621b604482015290519081900360640190fd5b60408051632770a7eb60e21b81523060048201526024810185905290516001600160a01b038d1691639dc29fac91604480830192600092919082900301818387803b158015610f2957600080fd5b505af1158015610f3d573d6000803e3d6000fd5b5050604080516340c10f1960e01b81523060048201526024810188905290516001600160a01b038e1693506340c10f199250604480830192600092919082900301818387803b158015610f8f57600080fd5b505af1158015610fa3573d6000803e3d6000fd5b505050506001600160a01b0388163014610fdb5785831015610fdb57610fdb6001600160a01b038c168985890363ffffffff61152616565b505097509795505050505050565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b031661119c61157d565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b60025460408051630a7549df60e21b81526001600160a01b038781166004830152868116602483015282516000948594859493909116926329d5277c9260448083019392829003018186803b1580156112fc57600080fd5b505afa158015611310573d6000803e3d6000fd5b505050506040513d604081101561132657600080fd5b508051602090910151909250905061134881610e63878563ffffffff61148216565b979650505050505050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b61140c611185565b61144c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61145581611581565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b600082611491575060006114de565b8282028284828161149e57fe5b04146114db5760405162461bcd60e51b81526004018080602001828103825260218152602001806118e56021913960400191505060405180910390fd5b90505b92915050565b60006114db83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611622565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526115789084906116c4565b505050565b3390565b6001600160a01b0381166115c65760405162461bcd60e51b81526004018080602001828103825260268152602001806118bf6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600081836116ae5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561167357818101518382015260200161165b565b50505050905090810190601f1680156116a05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816116ba57fe5b0495945050505050565b6116d6826001600160a01b0316611882565b611727576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106117655780518252601f199092019160209182019101611746565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146117c7576040519150601f19603f3d011682016040523d82523d6000602084013e6117cc565b606091505b509150915081611823576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561187c5780806020019051602081101561183f57600080fd5b505161187c5760405162461bcd60e51b815260040180806020018281038252602a815260200180611906602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906118b657508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820b09420dc7c58427c9d56d9af3e0a903f0b17df169d8cdcfca81d1b4dec4ec38764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH8 0x8AC7230489E80000 PUSH1 0x15 SSTORE PUSH8 0x214E8348C4F0000 PUSH1 0x18 SSTORE PUSH8 0x13FBE85EDC90000 PUSH1 0x1B SSTORE PUSH8 0x4563918244F40000 PUSH1 0x20 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x21 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x27 SSTORE PUSH2 0x2710 PUSH1 0x28 SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x29 SSTORE PUSH6 0xF478E084000 PUSH1 0x2B SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x2C SSTORE PUSH9 0x2B5E3AF16B1880000 PUSH1 0x2F SSTORE PUSH1 0x3 PUSH1 0x35 SSTORE PUSH9 0x1158E460913D00000 PUSH1 0x39 SSTORE PUSH1 0x0 PUSH2 0xA9 PUSH2 0xFC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x100 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x1964 DUP1 PUSH2 0x10F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x350 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xF0E085F5 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF6DDC8B3 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0xC69 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xC7E JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xC93 JUMPI DUP1 PUSH4 0xFC9249CC EQ PUSH2 0xA85 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0xC0A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC1F JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0xC54 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xD473C2DA GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0xB98 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0xBAD JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0xBE0 JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0xBF5 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0xACE JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0xB48 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0xB83 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xBA4861E9 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x9A8 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x9BD JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x9F0 JUMPI DUP1 PUSH4 0xC8C8F395 EQ PUSH2 0xA85 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x92D JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x960 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x993 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x959083D3 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x8D9 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x8EE JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x903 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x918 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x85E JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x891 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x8A6 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x4203E395 GT PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x23E JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x218 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x80A JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x81F JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x834 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x849 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x7AD JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x7E0 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x7F5 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x569FC1FB GT PUSH2 0x27A JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x6B7 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x6FF JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x77A JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x4203E395 EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0x4699F846 EQ PUSH2 0x68D JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x6A2 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x255EE844 GT PUSH2 0x30D JUMPI DUP1 PUSH4 0x3432423C GT PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x582 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x5BB JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x621 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x255EE844 EQ PUSH2 0x4ED JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x56D JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3C1 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x3F2 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x473 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x4A6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0xCE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xCF7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xD12 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD4A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x53F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xD5F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0xFE9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0xFEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1035 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1047 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1059 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1079 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x108B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x1091 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1097 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x10B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x737 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x10BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x110D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x1128 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x801 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x1137 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x816 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x113D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x114C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH2 0x1152 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x115B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x881 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x116A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH2 0x1185 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x11BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x11C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x90F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x11C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x11CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x950 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x1202 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x1211 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1220 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x12A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xADA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAF8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1353 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x13A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x13C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x13D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x13E9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x13F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x13FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1404 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x1458 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x145E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x1464 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x1473 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xDBA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1CDBDD5C98D9480F4F4819195CDD PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 AND SWAP3 PUSH4 0x29D5277C SWAP3 PUSH1 0x44 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP5 PUSH2 0xE76 JUMPI DUP7 SWAP3 POP PUSH2 0xE6F DUP2 PUSH2 0xE63 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1482 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x14E4 AND JUMP JUMPDEST SWAP4 POP PUSH2 0xEDB JUMP JUMPDEST DUP5 SWAP4 POP PUSH2 0xE8D DUP3 PUSH2 0xE63 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1482 AND JUMP JUMPDEST SWAP3 POP DUP7 DUP4 GT ISZERO PUSH2 0xEDB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x19195CDD105B5BDD5B9D081D1BDBC819DC99585D PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x2770A7EB PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH4 0x9DC29FAC SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND SWAP4 POP PUSH4 0x40C10F19 SWAP3 POP PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND ADDRESS EQ PUSH2 0xFDB JUMPI DUP6 DUP4 LT ISZERO PUSH2 0xFDB JUMPI PUSH2 0xFDB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP10 DUP6 DUP10 SUB PUSH4 0xFFFFFFFF PUSH2 0x1526 AND JUMP JUMPDEST POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x119C PUSH2 0x157D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 DUP6 SWAP5 SWAP4 SWAP1 SWAP2 AND SWAP3 PUSH4 0x29D5277C SWAP3 PUSH1 0x44 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1310 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1348 DUP2 PUSH2 0xE63 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1482 AND JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x140C PUSH2 0x1185 JUMP JUMPDEST PUSH2 0x144C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1455 DUP2 PUSH2 0x1581 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1491 JUMPI POP PUSH1 0x0 PUSH2 0x14DE JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x149E JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x14DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18E5 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14DB DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1622 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1578 SWAP1 DUP5 SWAP1 PUSH2 0x16C4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18BF PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x16AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1673 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x165B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x16A0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x16BA JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x16D6 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1882 JUMP JUMPDEST PUSH2 0x1727 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1765 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1746 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x17C7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1823 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x187C JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x183F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x187C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1906 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x18B6 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373536166654D6174683A206D756C746970 PUSH13 0x69636174696F6E206F76657266 PUSH13 0x6F775361666545524332303A20 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A265627A7A72315820B09420DC7C PC TIMESTAMP PUSH29 0x9D56D9AF3E0A903F0B17DF169D8CDCFCA81D1B4DEC4EC38764736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "646:3284:155:-;;;493:1:143;661:55;;2752:6:14;2717:41;;3132:11;3097:46;;3527:10;3490:47;;4112:10;4075:47;;4243:10;4198:55;;4684:10;4651:43;;4784:5;4754:35;;4861:8;4832:37;;5096:14;5060:50;;5153:9;5113:49;;5374:11;5340:45;;6038:1;6000:39;;6496:11;6447:60;;677:17:142;697:12;:10;;;:12;;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;646:3284:155;;780:87:137;853:10;780:87;:::o;646:3284:155:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106103505760003560e01c80638dc48ba5116101c6578063cb6eacd1116100f7578063f0e085f511610095578063f6ddc8b31161006f578063f6ddc8b314610c69578063f706b1f214610c7e578063f851a44014610c93578063fc9249cc14610a8557610350565b8063f0e085f514610c0a578063f2fde38b14610c1f578063f589a3e714610c5457610350565b8063d473c2da116100d1578063d473c2da14610b98578063d485045e14610bad578063e8f6276414610be0578063edab119f14610bf557610350565b8063cb6eacd114610ace578063cd5d808d14610b48578063d288208c14610b8357610350565b8063b30643d911610164578063ba4861e91161013e578063ba4861e9146109a8578063bdee453c146109bd578063c4a90815146109f0578063c8c8f39514610a8557610350565b8063b30643d91461092d578063b7e1524114610960578063b9cffa3e1461099357610350565b8063959083d3116101a0578063959083d3146108d9578063acc04348146108ee578063ae0a853014610903578063afe840091461091857610350565b80638dc48ba51461085e5780638f32d59b1461089157806392d894f8146108a657610350565b80634203e395116102a05780636e6637301161023e57806378d849ed1161021857806378d849ed1461080a5780637a8faeb81461081f5780638456cb59146108345780638da5cb5b1461084957610350565b80636e663730146107ad5780637420ca3e146107e0578063742e6798146107f557610350565b8063569fc1fb1161027a578063569fc1fb146106b7578063574442cc146106ff57806362fff3f61461071457806368c4ac261461077a57610350565b80634203e3951461065a5780634699f8461461068d5780634f28cac2146106a257610350565b8063255ee8441161030d5780633432423c116102e75780633432423c146105825780633452d2d4146105bb5780633fca506e146105ee5780634115a2b61461062157610350565b8063255ee844146104ed5780632a324027146105585780632f4707641461056d57610350565b8063065d810f146103555780630676c1b7146103c157806317548b79146103f25780631b7bde7414610426578063218b39c61461047357806324cc5749146104a6575b600080fd5b34801561036157600080fd5b5061038e6004803603604081101561037857600080fd5b506001600160a01b038135169060200135610ca8565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156103cd57600080fd5b506103d6610ce8565b604080516001600160a01b039092168252519081900360200190f35b3480156103fe57600080fd5b506103d66004803603602081101561041557600080fd5b50356001600160e01b031916610cf7565b34801561043257600080fd5b506104616004803603604081101561044957600080fd5b506001600160a01b0381358116916020013516610d12565b60408051918252519081900360200190f35b34801561047f57600080fd5b506103d66004803603602081101561049657600080fd5b50356001600160a01b0316610d2f565b3480156104b257600080fd5b506104d9600480360360208110156104c957600080fd5b50356001600160a01b0316610d4a565b604080519115158252519081900360200190f35b61053f600480360360e081101561050357600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c00135610d5f565b6040805192835260208301919091528051918290030190f35b34801561056457600080fd5b50610461610fe9565b34801561057957600080fd5b50610461610fef565b34801561058e57600080fd5b5061038e600480360360408110156105a557600080fd5b506001600160a01b038135169060200135610ff5565b3480156105c757600080fd5b50610461600480360360208110156105de57600080fd5b50356001600160a01b0316611035565b3480156105fa57600080fd5b506104616004803603602081101561061157600080fd5b50356001600160a01b0316611047565b34801561062d57600080fd5b506104d96004803603604081101561064457600080fd5b50803590602001356001600160a01b0316611059565b34801561066657600080fd5b506104616004803603602081101561067d57600080fd5b50356001600160a01b0316611079565b34801561069957600080fd5b5061046161108b565b3480156106ae57600080fd5b50610461611091565b3480156106c357600080fd5b506106e1600480360360208110156106da57600080fd5b5035611097565b60408051938452602084019290925282820152519081900360600190f35b34801561070b57600080fd5b506104616110b8565b34801561072057600080fd5b5061074f6004803603604081101561073757600080fd5b506001600160a01b03813581169160200135166110be565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561078657600080fd5b506104d96004803603602081101561079d57600080fd5b50356001600160a01b03166110f8565b3480156107b957600080fd5b506103d6600480360360208110156107d057600080fd5b50356001600160a01b031661110d565b3480156107ec57600080fd5b506103d6611128565b34801561080157600080fd5b50610461611137565b34801561081657600080fd5b506103d661113d565b34801561082b57600080fd5b5061046161114c565b34801561084057600080fd5b506104d9611152565b34801561085557600080fd5b506103d661115b565b34801561086a57600080fd5b506103d66004803603602081101561088157600080fd5b50356001600160a01b031661116a565b34801561089d57600080fd5b506104d9611185565b3480156108b257600080fd5b50610461600480360360208110156108c957600080fd5b50356001600160a01b03166111ab565b3480156108e557600080fd5b506104616111bd565b3480156108fa57600080fd5b506104616111c3565b34801561090f57600080fd5b506104616111c9565b34801561092457600080fd5b506103d66111cf565b34801561093957600080fd5b506104616004803603602081101561095057600080fd5b50356001600160a01b03166111de565b34801561096c57600080fd5b506104616004803603602081101561098357600080fd5b50356001600160a01b03166111f0565b34801561099f57600080fd5b506103d6611202565b3480156109b457600080fd5b506103d6611211565b3480156109c957600080fd5b50610461600480360360208110156109e057600080fd5b50356001600160a01b0316611220565b3480156109fc57600080fd5b50610a1a60048036036020811015610a1357600080fd5b5035611232565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b348015610a9157600080fd5b5061046160048036036080811015610aa857600080fd5b506001600160a01b038135811691602081013582169160408201359160600135166112a4565b348015610ada57600080fd5b50610af860048036036020811015610af157600080fd5b5035611353565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b348015610b5457600080fd5b5061046160048036036040811015610b6b57600080fd5b506001600160a01b03813581169160200135166113a5565b348015610b8f57600080fd5b506103d66113c2565b348015610ba457600080fd5b506104616113d1565b348015610bb957600080fd5b5061046160048036036020811015610bd057600080fd5b50356001600160a01b03166113d7565b348015610bec57600080fd5b506103d66113e9565b348015610c0157600080fd5b506104616113f8565b348015610c1657600080fd5b506104616113fe565b348015610c2b57600080fd5b50610c5260048036036020811015610c4257600080fd5b50356001600160a01b0316611404565b005b348015610c6057600080fd5b50610461611458565b348015610c7557600080fd5b5061046161145e565b348015610c8a57600080fd5b506103d6611464565b348015610c9f57600080fd5b506103d6611473565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b600080876001600160a01b0316896001600160a01b03161415610dba576040805162461bcd60e51b815260206004820152600e60248201526d1cdbdd5c98d9480f4f4819195cdd60921b604482015290519081900360640190fd5b60025460408051630a7549df60e21b81526001600160a01b038c811660048301528b81166024830152825160009485949216926329d5277c926044808301939192829003018186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d6040811015610e3957600080fd5b508051602090910151909250905084610e7657869250610e6f81610e63858563ffffffff61148216565b9063ffffffff6114e416565b9350610edb565b849350610e8d82610e63868463ffffffff61148216565b925086831115610edb576040805162461bcd60e51b815260206004820152601460248201527319195cdd105b5bdd5b9d081d1bdbc819dc99585d60621b604482015290519081900360640190fd5b60408051632770a7eb60e21b81523060048201526024810185905290516001600160a01b038d1691639dc29fac91604480830192600092919082900301818387803b158015610f2957600080fd5b505af1158015610f3d573d6000803e3d6000fd5b5050604080516340c10f1960e01b81523060048201526024810188905290516001600160a01b038e1693506340c10f199250604480830192600092919082900301818387803b158015610f8f57600080fd5b505af1158015610fa3573d6000803e3d6000fd5b505050506001600160a01b0388163014610fdb5785831015610fdb57610fdb6001600160a01b038c168985890363ffffffff61152616565b505097509795505050505050565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b031661119c61157d565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b60025460408051630a7549df60e21b81526001600160a01b038781166004830152868116602483015282516000948594859493909116926329d5277c9260448083019392829003018186803b1580156112fc57600080fd5b505afa158015611310573d6000803e3d6000fd5b505050506040513d604081101561132657600080fd5b508051602090910151909250905061134881610e63878563ffffffff61148216565b979650505050505050565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b61140c611185565b61144c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61145581611581565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b600082611491575060006114de565b8282028284828161149e57fe5b04146114db5760405162461bcd60e51b81526004018080602001828103825260218152602001806118e56021913960400191505060405180910390fd5b90505b92915050565b60006114db83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611622565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526115789084906116c4565b505050565b3390565b6001600160a01b0381166115c65760405162461bcd60e51b81526004018080602001828103825260268152602001806118bf6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600081836116ae5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561167357818101518382015260200161165b565b50505050905090810190601f1680156116a05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816116ba57fe5b0495945050505050565b6116d6826001600160a01b0316611882565b611727576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106117655780518252601f199092019160209182019101611746565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146117c7576040519150601f19603f3d011682016040523d82523d6000602084013e6117cc565b606091505b509150915081611823576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561187c5780806020019051602081101561183f57600080fd5b505161187c5760405162461bcd60e51b815260040180806020018281038252602a815260200180611906602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906118b657508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820b09420dc7c58427c9d56d9af3e0a903f0b17df169d8cdcfca81d1b4dec4ec38764736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x350 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DC48BA5 GT PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCB6EACD1 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xF0E085F5 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xF6DDC8B3 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF6DDC8B3 EQ PUSH2 0xC69 JUMPI DUP1 PUSH4 0xF706B1F2 EQ PUSH2 0xC7E JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xC93 JUMPI DUP1 PUSH4 0xFC9249CC EQ PUSH2 0xA85 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xF0E085F5 EQ PUSH2 0xC0A JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC1F JUMPI DUP1 PUSH4 0xF589A3E7 EQ PUSH2 0xC54 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xD473C2DA GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xD473C2DA EQ PUSH2 0xB98 JUMPI DUP1 PUSH4 0xD485045E EQ PUSH2 0xBAD JUMPI DUP1 PUSH4 0xE8F62764 EQ PUSH2 0xBE0 JUMPI DUP1 PUSH4 0xEDAB119F EQ PUSH2 0xBF5 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xCB6EACD1 EQ PUSH2 0xACE JUMPI DUP1 PUSH4 0xCD5D808D EQ PUSH2 0xB48 JUMPI DUP1 PUSH4 0xD288208C EQ PUSH2 0xB83 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xBA4861E9 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xBA4861E9 EQ PUSH2 0x9A8 JUMPI DUP1 PUSH4 0xBDEE453C EQ PUSH2 0x9BD JUMPI DUP1 PUSH4 0xC4A90815 EQ PUSH2 0x9F0 JUMPI DUP1 PUSH4 0xC8C8F395 EQ PUSH2 0xA85 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0xB30643D9 EQ PUSH2 0x92D JUMPI DUP1 PUSH4 0xB7E15241 EQ PUSH2 0x960 JUMPI DUP1 PUSH4 0xB9CFFA3E EQ PUSH2 0x993 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x959083D3 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x959083D3 EQ PUSH2 0x8D9 JUMPI DUP1 PUSH4 0xACC04348 EQ PUSH2 0x8EE JUMPI DUP1 PUSH4 0xAE0A8530 EQ PUSH2 0x903 JUMPI DUP1 PUSH4 0xAFE84009 EQ PUSH2 0x918 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x8DC48BA5 EQ PUSH2 0x85E JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x891 JUMPI DUP1 PUSH4 0x92D894F8 EQ PUSH2 0x8A6 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x4203E395 GT PUSH2 0x2A0 JUMPI DUP1 PUSH4 0x6E663730 GT PUSH2 0x23E JUMPI DUP1 PUSH4 0x78D849ED GT PUSH2 0x218 JUMPI DUP1 PUSH4 0x78D849ED EQ PUSH2 0x80A JUMPI DUP1 PUSH4 0x7A8FAEB8 EQ PUSH2 0x81F JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x834 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x849 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x6E663730 EQ PUSH2 0x7AD JUMPI DUP1 PUSH4 0x7420CA3E EQ PUSH2 0x7E0 JUMPI DUP1 PUSH4 0x742E6798 EQ PUSH2 0x7F5 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x569FC1FB GT PUSH2 0x27A JUMPI DUP1 PUSH4 0x569FC1FB EQ PUSH2 0x6B7 JUMPI DUP1 PUSH4 0x574442CC EQ PUSH2 0x6FF JUMPI DUP1 PUSH4 0x62FFF3F6 EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0x68C4AC26 EQ PUSH2 0x77A JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x4203E395 EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0x4699F846 EQ PUSH2 0x68D JUMPI DUP1 PUSH4 0x4F28CAC2 EQ PUSH2 0x6A2 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x255EE844 GT PUSH2 0x30D JUMPI DUP1 PUSH4 0x3432423C GT PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x3432423C EQ PUSH2 0x582 JUMPI DUP1 PUSH4 0x3452D2D4 EQ PUSH2 0x5BB JUMPI DUP1 PUSH4 0x3FCA506E EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0x4115A2B6 EQ PUSH2 0x621 JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x255EE844 EQ PUSH2 0x4ED JUMPI DUP1 PUSH4 0x2A324027 EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0x2F470764 EQ PUSH2 0x56D JUMPI PUSH2 0x350 JUMP JUMPDEST DUP1 PUSH4 0x65D810F EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x676C1B7 EQ PUSH2 0x3C1 JUMPI DUP1 PUSH4 0x17548B79 EQ PUSH2 0x3F2 JUMPI DUP1 PUSH4 0x1B7BDE74 EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0x218B39C6 EQ PUSH2 0x473 JUMPI DUP1 PUSH4 0x24CC5749 EQ PUSH2 0x4A6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP6 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0xCE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0xCF7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xD12 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD4A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x53F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xD5F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0xFE9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0xFEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1035 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1047 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1059 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1079 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x108B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x1091 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1097 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x10B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x737 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x10BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x110D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x1128 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x801 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x1137 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x816 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x113D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x114C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH2 0x1152 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x115B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x881 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x116A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH2 0x1185 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x11BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x11C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x90F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x11C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x11CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x950 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x1202 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x1211 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1220 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA1A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP13 DUP14 MSTORE PUSH1 0x20 DUP14 ADD SWAP12 SWAP1 SWAP12 MSTORE DUP12 DUP12 ADD SWAP10 SWAP1 SWAP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE PUSH1 0x80 DUP11 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x140 DUP6 ADD MSTORE AND PUSH2 0x160 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x180 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x12A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xADA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAF8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1353 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE SWAP7 ISZERO ISZERO PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP9 DUP9 ADD MSTORE SWAP4 DUP6 AND PUSH1 0x60 DUP9 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x13A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x13C2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x13D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x13E9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x13F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x13FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1404 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x1458 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH2 0x145E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x1464 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x1473 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x31 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x23 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x32 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xDBA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1CDBDD5C98D9480F4F4819195CDD PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP3 AND SWAP3 PUSH4 0x29D5277C SWAP3 PUSH1 0x44 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP5 PUSH2 0xE76 JUMPI DUP7 SWAP3 POP PUSH2 0xE6F DUP2 PUSH2 0xE63 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1482 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x14E4 AND JUMP JUMPDEST SWAP4 POP PUSH2 0xEDB JUMP JUMPDEST DUP5 SWAP4 POP PUSH2 0xE8D DUP3 PUSH2 0xE63 DUP7 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1482 AND JUMP JUMPDEST SWAP3 POP DUP7 DUP4 GT ISZERO PUSH2 0xEDB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x19195CDD105B5BDD5B9D081D1BDBC819DC99585D PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x2770A7EB PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH4 0x9DC29FAC SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND SWAP4 POP PUSH4 0x40C10F19 SWAP3 POP PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND ADDRESS EQ PUSH2 0xFDB JUMPI DUP6 DUP4 LT ISZERO PUSH2 0xFDB JUMPI PUSH2 0xFDB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP10 DUP6 DUP10 SUB PUSH4 0xFFFFFFFF PUSH2 0x1526 AND JUMP JUMPDEST POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 SWAP1 SWAP6 ADD SLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP7 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x29 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x2B SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 DUP6 JUMP JUMPDEST PUSH1 0x26 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x119C PUSH2 0x157D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x20 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1D PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1C PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x37 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD SWAP7 DUP7 ADD SLOAD PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x8 DUP9 ADD SLOAD PUSH1 0x9 DUP10 ADD SLOAD PUSH1 0xA DUP11 ADD SLOAD PUSH1 0xB SWAP1 SWAP11 ADD SLOAD SWAP9 SWAP11 SWAP8 SWAP10 SWAP7 SWAP9 PUSH1 0xFF SWAP1 SWAP7 AND SWAP8 SWAP5 SWAP7 SWAP5 SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP13 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 DUP6 SWAP5 SWAP4 SWAP1 SWAP2 AND SWAP3 PUSH4 0x29D5277C SWAP3 PUSH1 0x44 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1310 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1348 DUP2 PUSH2 0xE63 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x1482 AND JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x6 SWAP1 SWAP7 ADD SLOAD SWAP5 SWAP6 PUSH1 0xFF DUP6 AND SWAP6 PUSH2 0x100 SWAP1 SWAP6 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 SWAP5 DUP2 AND SWAP5 SWAP4 AND SWAP3 DUP9 JUMP JUMPDEST PUSH1 0x3C PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x27 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x28 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x140C PUSH2 0x1185 JUMP JUMPDEST PUSH2 0x144C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1455 DUP2 PUSH2 0x1581 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x39 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x21 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x30 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1491 JUMPI POP PUSH1 0x0 PUSH2 0x14DE JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x149E JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x14DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18E5 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14DB DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1622 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1578 SWAP1 DUP5 SWAP1 PUSH2 0x16C4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18BF PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x16AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1673 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x165B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x16A0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x16BA JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x16D6 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1882 JUMP JUMPDEST PUSH2 0x1727 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1765 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1746 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x17C7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1823 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x187C JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x183F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x187C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1906 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x18B6 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373536166654D6174683A206D756C746970 PUSH13 0x69636174696F6E206F76657266 PUSH13 0x6F775361666545524332303A20 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A265627A7A72315820B09420DC7C PC TIMESTAMP PUSH29 0x9D56D9AF3E0A903F0B17DF169D8CDCFCA81D1B4DEC4EC38764736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "646:3284:155:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:67:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1636:67:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1636:67:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5443:30:14;;;:::i;:::-;;;;-1:-1:-1;;;;;5443:30:14;;;;;;;;;;;;;;1270:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1270:46:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1270:46:14;-1:-1:-1;;;;;;1270:46:14;;:::i;6768:81::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6768:81:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6768:81:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4372:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4372:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4372:55:14;-1:-1:-1;;;;;4372:55:14;;:::i;5558:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5558:53:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5558:53:14;-1:-1:-1;;;;;5558:53:14;;:::i;:::-;;;;;;;;;;;;;;;;;;1040:1346:155;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;1040:1346:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3097:46:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3097:46:14;;;:::i;3969:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3969:32:14;;;:::i;1527:65::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1527:65:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1527:65:14;;;;;;;;:::i;3376:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3376:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3376:55:14;-1:-1:-1;;;;;3376:55:14;;:::i;4925:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4925:48:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4925:48:14;-1:-1:-1;;;;;4925:48:14;;:::i;1744:69::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1744:69:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1744:69:14;;;;;;-1:-1:-1;;;;;1744:69:14;;:::i;2825:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2825:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2825:55:14;-1:-1:-1;;;;;2825:55:14;;:::i;2717:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2717:41:14;;;:::i;4832:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4832:37:14;;;:::i;2013:52::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2013:52:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2013:52:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5060:50:14;;;:::i;1898:76::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1898:76:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1898:76:14;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4542:47:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4542:47:14;-1:-1:-1;;;;;4542:47:14;;:::i;5650:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5650:57:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5650:57:14;-1:-1:-1;;;;;5650:57:14;;:::i;1087:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1087:24:14;;;:::i;6000:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6000:39:14;;;:::i;1012:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1012:25:14;;;:::i;3887:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3887:32:14;;;:::i;7007:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7007:17:14;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;4285:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4285:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4285:55:14;-1:-1:-1;;;;;4285:55:14;;:::i;1134:83:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;2994:55:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2994:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2994:55:14;-1:-1:-1;;;;;2994:55:14;;:::i;5113:49::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5113:49:14;;;:::i;5340:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5340:45:14;;;:::i;4075:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4075:47:14;;;:::i;5175:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5175:29:14;;;:::i;3781:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3781:57:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3781:57:14;-1:-1:-1;;;;;3781:57:14;;:::i;3605:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3605:57:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:57:14;-1:-1:-1;;;;;3605:57:14;;:::i;6272:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6272:30:14;;;:::i;1174:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1174:48:14;;;:::i;6168:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6168:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6168:55:14;-1:-1:-1;;;;;6168:55:14;;:::i;1347:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1347:37:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1347:37:14;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;;;;;;;;;;;;;;;;2775:385:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2775:385:155;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;2775:385:155;;;;;;;;;;;;;;;;;;;;;;:::i;1437:48:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1437:48:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:48:14;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6853:69:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6853:69:14;;;;;;;;;;:::i;6305:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6305:31:14;;;:::i;4651:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4651:43:14;;;:::i;3209:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3209:55:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3209:55:14;-1:-1:-1;;;;;3209:55:14;;:::i;2626:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2626:29:14;;;:::i;3490:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3490:47:14;;;:::i;4754:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4754:35:14;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1351:98:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;:::-;;6447:60:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6447:60:14;;;:::i;4198:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4198:55:14;;;:::i;5207:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5207:35:14;;;:::i;5389:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5389:20:14;;;:::i;1636:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5443:30::-;;;-1:-1:-1;;;;;5443:30:14;;:::o;1270:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1270:46:14;;:::o;6768:81::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4372:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4372:55:14;;:::o;5558:53::-;;;;;;;;;;;;;;;:::o;1040:1346:155:-;1310:31;1343:29;1408:16;-1:-1:-1;;;;;1386:38:155;:18;-1:-1:-1;;;;;1386:38:155;;;1378:65;;;;;-1:-1:-1;;;1378:65:155;;;;;;;;;;;;-1:-1:-1;;;1378:65:155;;;;;;;;;;;;;;;1501:10;;1489:71;;;-1:-1:-1;;;1489:71:155;;-1:-1:-1;;;;;1489:71:155;;;;;;;;;;;;;;;;1449:17;;;;1501:10;;;1489:33;;:71;;;;;;;;;;;;1501:10;1489:71;;;5:2:-1;;;;30:1;27;20:12;5:2;1489:71:155;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1489:71:155;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1489:71:155;;;;;;;;;-1:-1:-1;1489:71:155;-1:-1:-1;1569:28:155;1565:399;;1628:20;;-1:-1:-1;1679:50:155;1719:9;1679:35;1628:20;1704:9;1679:35;:24;:35;:::i;:::-;:39;:50;:39;:50;:::i;:::-;1653:76;;1565:399;;;1771:23;;-1:-1:-1;1823:53:155;1866:9;1823:38;1771:23;1851:9;1823:38;:27;:38;:::i;:53::-;1799:77;;1914:20;1889:21;:45;;1881:78;;;;;-1:-1:-1;;;1881:78:155;;;;;;;;;;;;-1:-1:-1;;;1881:78:155;;;;;;;;;;;;;;;1968:72;;;-1:-1:-1;;;1968:72:155;;2011:4;1968:72;;;;;;;;;;;;-1:-1:-1;;;;;1968:34:155;;;;;:72;;;;;-1:-1:-1;;1968:72:155;;;;;;;-1:-1:-1;1968:34:155;:72;;;5:2:-1;;;;30:1;27;20:12;5:2;1968:72:155;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2044:72:155;;;-1:-1:-1;;;2044:72:155;;2085:4;2044:72;;;;;;;;;;;;-1:-1:-1;;;;;2044:32:155;;;-1:-1:-1;2044:32:155;;-1:-1:-1;2044:72:155;;;;;-1:-1:-1;;2044:72:155;;;;;;;-1:-1:-1;2044:32:155;:72;;;5:2:-1;;;;30:1;27;20:12;5:2;2044:72:155;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;;2125:38:155;;2158:4;2125:38;2121:262;;2198:20;2174:21;:44;2170:209;;;2265:108;-1:-1:-1;;;;;2265:39:155;;2305:21;2328:44;;;2265:108;:39;:108;:::i;:::-;1040:1346;;;;;;;;;;;;:::o;3097:46:14:-;;;;:::o;3969:32::-;;;;:::o;1527:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3376:55::-;;;;;;;;;;;;;:::o;4925:48::-;;;;;;;;;;;;;:::o;1744:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2825:55::-;;;;;;;;;;;;;:::o;2717:41::-;;;;:::o;4832:37::-;;;;:::o;2013:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5060:50::-;;;;:::o;1898:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4542:47::-;;;;;;;;;;;;;;;:::o;5650:57::-;;;;;;;;;;;;-1:-1:-1;;;;;5650:57:14;;:::o;1087:24::-;;;-1:-1:-1;;;;;1087:24:14;;:::o;6000:39::-;;;;:::o;1012:25::-;;;-1:-1:-1;;;;;1012:25:14;;:::o;3887:32::-;;;;:::o;7007:17::-;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;4285:55:14:-;;;;;;;;;;;;-1:-1:-1;;;;;4285:55:14;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;2994:55:14:-;;;;;;;;;;;;;:::o;5113:49::-;;;;:::o;5340:45::-;;;;:::o;4075:47::-;;;;:::o;5175:29::-;;;-1:-1:-1;;;;;5175:29:14;;:::o;3781:57::-;;;;;;;;;;;;;:::o;3605:::-;;;;;;;;;;;;;:::o;6272:30::-;;;-1:-1:-1;;;;;6272:30:14;;:::o;1174:48::-;;;-1:-1:-1;;;;;1174:48:14;;:::o;6168:55::-;;;;;;;;;;;;;:::o;1347:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:37:14;;;;;;:::o;2775:385:155:-;3019:10;;3007:71;;;-1:-1:-1;;;3007:71:155;;-1:-1:-1;;;;;3007:71:155;;;;;;;;;;;;;;;;2934:7;;;;;;3019:10;;;;;3007:33;;:71;;;;;;;;;;;3019:10;3007:71;;;5:2:-1;;;;30:1;27;20:12;5:2;3007:71:155;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3007:71:155;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3007:71:155;;;;;;;;;-1:-1:-1;3007:71:155;-1:-1:-1;3090:66:155;3007:71;3090:39;:17;3007:71;3090:39;:21;:39;:::i;:66::-;3083:73;2775:385;-1:-1:-1;;;;;;;2775:385:155:o;1437:48:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1437:48:14;;;;;;;;;;;;:::o;6853:69::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6305:31::-;;;-1:-1:-1;;;;;6305:31:14;;:::o;4651:43::-;;;;:::o;3209:55::-;;;;;;;;;;;;;:::o;2626:29::-;;;-1:-1:-1;;;;;2626:29:14;;:::o;3490:47::-;;;;:::o;4754:35::-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;6447:60:14:-;;;;:::o;4198:55::-;;;;:::o;5207:35::-;;;-1:-1:-1;;;;;5207:35:14;;:::o;5389:20::-;;;-1:-1:-1;;;;;5389:20:14;;:::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2393:1;-1:-1:-1;1999:399:145;;;;;:::o;2817:121::-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;654:174:144:-;765:58;;;-1:-1:-1;;;;;765:58:144;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;765:58:144;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;739:85:144;;758:5;;739:18;:85::i;:::-;654:174;;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;3411:315:145:-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;2564:999:144:-;3111:27;3119:5;-1:-1:-1;;;;;3111:25:144;;:27::i;:::-;3103:71;;;;;-1:-1:-1;;;3103:71:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;3233:12;3247:23;3282:5;-1:-1:-1;;;;;3274:19:144;3294:4;3274:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3274:25:144;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3232:67:144;;;;3311:7;3303:52;;;;;-1:-1:-1;;;3303:52:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3364:17;;:21;3360:200;;3489:10;3478:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3478:30:144;3470:85;;;;-1:-1:-1;;;3470:85:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2564:999;;;;:::o;639:564:136:-;699:4;1121:20;;975:66;1156:23;;;;;;:42;;-1:-1:-1;1183:15:136;;;1156:42;1148:51;639:564;-1:-1:-1;;;;639:564:136:o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "affiliateFeePercent()": "ae0a8530",
              "affiliateRewardsHeld(address)": "bdee453c",
              "affiliateTradingTokenFeePercent()": "f589a3e7",
              "affiliatesReferrerBalances(address,address)": "1b7bde74",
              "affiliatesUserReferrer(address)": "6e663730",
              "borrowerNonce(address)": "3fca506e",
              "borrowerOrders(address,bytes32)": "065d810f",
              "borrowingFeePercent()": "edab119f",
              "borrowingFeeTokensHeld(address)": "b7e15241",
              "borrowingFeeTokensPaid(address)": "b30643d9",
              "delegatedManagers(bytes32,address)": "4115a2b6",
              "feeRebatePercent()": "acc04348",
              "feesController()": "e8f62764",
              "internalExpectedRate(address,address,uint256,address)": "c8c8f395",
              "internalExpectedReturn(address,address,uint256,address)": "fc9249cc",
              "internalSwap(address,address,address,address,uint256,uint256,uint256)": "255ee844",
              "isOwner()": "8f32d59b",
              "lenderInterest(address,address)": "62fff3f6",
              "lenderOrders(address,bytes32)": "3432423c",
              "lendingFeePercent()": "4699f846",
              "lendingFeeTokensHeld(address)": "4203e395",
              "lendingFeeTokensPaid(address)": "92d894f8",
              "liquidationIncentivePercent()": "f6ddc8b3",
              "loanInterest(bytes32)": "569fc1fb",
              "loanParams(bytes32)": "cb6eacd1",
              "loanPoolToUnderlying(address)": "8dc48ba5",
              "loans(bytes32)": "c4a90815",
              "lockedSOVAddress()": "d288208c",
              "logicTargets(bytes4)": "17548b79",
              "maxDisagreement()": "d473c2da",
              "maxSwapSize()": "4f28cac2",
              "minReferralsToPayout()": "742e6798",
              "owner()": "8da5cb5b",
              "pause()": "8456cb59",
              "priceFeeds()": "78d849ed",
              "protocolAddress()": "0676c1b7",
              "protocolTokenAddress()": "f706b1f2",
              "protocolTokenHeld()": "7a8faeb8",
              "protocolTokenPaid()": "2f470764",
              "rolloverBaseReward()": "574442cc",
              "rolloverFlexFeePercent()": "959083d3",
              "sourceBuffer()": "f0e085f5",
              "sovTokenAddress()": "b9cffa3e",
              "sovrynSwapContractRegistryAddress()": "ba4861e9",
              "specialRebates(address,address)": "cd5d808d",
              "supportedTokens(address)": "68c4ac26",
              "swapsImpl()": "7420ca3e",
              "tradingFeePercent()": "2a324027",
              "tradingFeeTokensHeld(address)": "d485045e",
              "tradingFeeTokensPaid(address)": "3452d2d4",
              "transferOwnership(address)": "f2fde38b",
              "underlyingToLoanPool(address)": "218b39c6",
              "userNotFirstTradeFlag(address)": "24cc5749",
              "wrbtcToken()": "afe84009"
            }
          },
          "userdoc": {
            "methods": {
              "internalExpectedRate(address,address,uint256,address)": {
                "notice": "Calculate the expected price rate of swapping a given amount  of tokens."
              },
              "internalExpectedReturn(address,address,uint256,address)": {
                "notice": "Calculate the expected return of swapping a given amount  of tokens."
              },
              "internalSwap(address,address,address,address,uint256,uint256,uint256)": {
                "notice": "Swap two tokens."
              }
            },
            "notice": "This contract code comes from bZx. bZx is a protocol for tokenized margin trading and lending https://bzx.network similar to the dYdX protocol. * This contract contains the implementation of swap process and rate calculations."
          }
        }
      },
      "contracts/testhelpers/FlashLoanerTest.sol": {
        "FlashLoanerTest": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                }
              ],
              "name": "BalanceOf",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "iToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                }
              ],
              "name": "ExecuteOperation",
              "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"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "iToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "doStuffWithFlashLoan",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "iToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                }
              ],
              "name": "executeOperation",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "success",
                  "type": "bytes"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b610ad8806100796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80632a77b18b1461005c57806332d85333146100855780638da5cb5b1461009a5780638f32d59b146100af578063f2fde38b146100c4575b600080fd5b61006f61006a3660046106ec565b6100d7565b60405161007c9190610918565b60405180910390f35b6100986100933660046106ec565b6101f2565b005b6100a26103d8565b60405161007c91906108b9565b6100b76103e7565b60405161007c919061090a565b6100986100d23660046106c6565b61040b565b60607fb3283e62da596472bfaced2b06c099416a162887a48327e0ffbcb4e682064600846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161012691906108b9565b60206040518083038186803b15801561013e57600080fd5b505afa158015610152573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610176919081019061078c565b6040516101839190610959565b60405180910390a17fc2b282e2bfa85928b833b779034da20be2d6c7536ef9afd46b64f327d8ecdc8b8484846040516101be939291906108c7565b60405180910390a16101d184848461043b565b506040805180820190915260018152603160f81b60208201525b9392505050565b6101fa6103e7565b61021f5760405162461bcd60e51b815260040161021690610949565b60405180910390fd5b60607fb3283e62da596472bfaced2b06c099416a162887a48327e0ffbcb4e682064600846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161026e91906108b9565b60206040518083038186803b15801561028657600080fd5b505afa15801561029a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102be919081019061078c565b6040516102cb9190610959565b60405180910390a16102de8484846104bb565b90507fb3283e62da596472bfaced2b06c099416a162887a48327e0ffbcb4e682064600846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161032d91906108b9565b60206040518083038186803b15801561034557600080fd5b505afa158015610359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061037d919081019061078c565b60405161038a9190610959565b60405180910390a16103b5604051806040016040528060018152602001603160f81b81525082610594565b156103d25760405162461bcd60e51b815260040161021690610939565b50505050565b6000546001600160a01b031690565b600080546001600160a01b03166103fc6105c1565b6001600160a01b031614905090565b6104136103e7565b61042f5760405162461bcd60e51b815260040161021690610949565b610438816105c5565b50565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061046990859085906004016108ef565b602060405180830381600087803b15801561048357600080fd5b505af1158015610497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103d29190810190610739565b60606000839050806001600160a01b031663c5bf0e9d8430308989896040516024016104e9939291906108c7565b60408051601f198184030181529181526020820180516001600160e01b0316632a77b18b60e01b1790525160e086901b6001600160e01b03191681526105359493929190600401610967565b600060405180830381600087803b15801561054f57600080fd5b505af1158015610563573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261058b9190810190610757565b95945050505050565b600081518351146105a7575060006105bb565b818051906020012083805190602001201490505b92915050565b3390565b6001600160a01b0381166105eb5760405162461bcd60e51b815260040161021690610929565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b80356105bb81610a6f565b80516105bb81610a83565b600082601f83011261066d57600080fd5b815161068061067b826109e5565b6109be565b9150808252602083016020830185838301111561069c57600080fd5b6106a7838284610a39565b50505092915050565b80356105bb81610a8c565b80516105bb81610a8c565b6000602082840312156106d857600080fd5b60006106e48484610646565b949350505050565b60008060006060848603121561070157600080fd5b600061070d8686610646565b935050602061071e86828701610646565b925050604061072f868287016106b0565b9150509250925092565b60006020828403121561074b57600080fd5b60006106e48484610651565b60006020828403121561076957600080fd5b815167ffffffffffffffff81111561078057600080fd5b6106e48482850161065c565b60006020828403121561079e57600080fd5b60006106e484846106bb565b6107b381610a1a565b82525050565b6107b381610a25565b60006107cd82610a0d565b6107d78185610a11565b93506107e7818560208601610a39565b6107f081610a65565b9093019392505050565b6000610807602683610a11565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b600061084f601783610a11565b7f6661696c656420657865637574654f7065726174696f6e000000000000000000815260200192915050565b6000610888600c83610a11565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006105bb600083610a11565b6107b381610a36565b602081016105bb82846107aa565b606081016108d582866107aa565b6108e260208301856107aa565b6106e460408301846108b0565b604081016108fd82856107aa565b6101eb60208301846108b0565b602081016105bb82846107b9565b602080825281016101eb81846107c2565b602080825281016105bb816107fa565b602080825281016105bb81610842565b602080825281016105bb8161087b565b602081016105bb82846108b0565b60a0810161097582876108b0565b61098260208301866107aa565b61098f60408301856107aa565b81810360608301526109a0816108a3565b905081810360808301526109b481846107c2565b9695505050505050565b60405181810167ffffffffffffffff811182821017156109dd57600080fd5b604052919050565b600067ffffffffffffffff8211156109fc57600080fd5b506020601f91909101601f19160190565b5190565b90815260200190565b60006105bb82610a2a565b151590565b6001600160a01b031690565b90565b60005b83811015610a54578181015183820152602001610a3c565b838111156103d25750506000910152565b601f01601f191690565b610a7881610a1a565b811461043857600080fd5b610a7881610a25565b610a7881610a3656fea365627a7a723158207956168941223f93355be7b1faf26ce9bdaa759d4e334072aa0b4e3b4fa26d4d6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xAD8 DUP1 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2A77B18B EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x32D85333 EQ PUSH2 0x85 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xAF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x6EC JUMP JUMPDEST PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP2 SWAP1 PUSH2 0x918 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x98 PUSH2 0x93 CALLDATASIZE PUSH1 0x4 PUSH2 0x6EC JUMP JUMPDEST PUSH2 0x1F2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA2 PUSH2 0x3D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP2 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0xB7 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP2 SWAP1 PUSH2 0x90A JUMP JUMPDEST PUSH2 0x98 PUSH2 0xD2 CALLDATASIZE PUSH1 0x4 PUSH2 0x6C6 JUMP JUMPDEST PUSH2 0x40B JUMP JUMPDEST PUSH1 0x60 PUSH32 0xB3283E62DA596472BFACED2B06C099416A162887A48327E0FFBCB4E682064600 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x126 SWAP2 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x152 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x176 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x78C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x183 SWAP2 SWAP1 PUSH2 0x959 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0xC2B282E2BFA85928B833B779034DA20BE2D6C7536EF9AFD46B64F327D8ECDC8B DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1BE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x1D1 DUP5 DUP5 DUP5 PUSH2 0x43B JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1FA PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x21F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x216 SWAP1 PUSH2 0x949 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH32 0xB3283E62DA596472BFACED2B06C099416A162887A48327E0FFBCB4E682064600 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26E SWAP2 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x286 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2BE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x78C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2CB SWAP2 SWAP1 PUSH2 0x959 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x2DE DUP5 DUP5 DUP5 PUSH2 0x4BB JUMP JUMPDEST SWAP1 POP PUSH32 0xB3283E62DA596472BFACED2B06C099416A162887A48327E0FFBCB4E682064600 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32D SWAP2 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x359 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x37D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x78C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x38A SWAP2 SWAP1 PUSH2 0x959 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x3B5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP3 PUSH2 0x594 JUMP JUMPDEST ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x216 SWAP1 PUSH2 0x939 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3FC PUSH2 0x5C1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x413 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x42F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x216 SWAP1 PUSH2 0x949 JUMP JUMPDEST PUSH2 0x438 DUP2 PUSH2 0x5C5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x469 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x8EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x497 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3D2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x739 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC5BF0E9D DUP5 ADDRESS ADDRESS DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4E9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2A77B18B PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH1 0xE0 DUP7 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH2 0x535 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x967 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x563 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x58B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x757 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x5A7 JUMPI POP PUSH1 0x0 PUSH2 0x5BB JUMP JUMPDEST DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5EB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x216 SWAP1 PUSH2 0x929 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x5BB DUP2 PUSH2 0xA6F JUMP JUMPDEST DUP1 MLOAD PUSH2 0x5BB DUP2 PUSH2 0xA83 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x680 PUSH2 0x67B DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH2 0x9BE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x69C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6A7 DUP4 DUP3 DUP5 PUSH2 0xA39 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x5BB DUP2 PUSH2 0xA8C JUMP JUMPDEST DUP1 MLOAD PUSH2 0x5BB DUP2 PUSH2 0xA8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E4 DUP5 DUP5 PUSH2 0x646 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x70D DUP7 DUP7 PUSH2 0x646 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x71E DUP7 DUP3 DUP8 ADD PUSH2 0x646 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x72F DUP7 DUP3 DUP8 ADD PUSH2 0x6B0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x74B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E4 DUP5 DUP5 PUSH2 0x651 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6E4 DUP5 DUP3 DUP6 ADD PUSH2 0x65C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x79E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E4 DUP5 DUP5 PUSH2 0x6BB JUMP JUMPDEST PUSH2 0x7B3 DUP2 PUSH2 0xA1A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x7B3 DUP2 PUSH2 0xA25 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7CD DUP3 PUSH2 0xA0D JUMP JUMPDEST PUSH2 0x7D7 DUP2 DUP6 PUSH2 0xA11 JUMP JUMPDEST SWAP4 POP PUSH2 0x7E7 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA39 JUMP JUMPDEST PUSH2 0x7F0 DUP2 PUSH2 0xA65 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x807 PUSH1 0x26 DUP4 PUSH2 0xA11 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84F PUSH1 0x17 DUP4 PUSH2 0xA11 JUMP JUMPDEST PUSH32 0x6661696C656420657865637574654F7065726174696F6E000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x888 PUSH1 0xC DUP4 PUSH2 0xA11 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BB PUSH1 0x0 DUP4 PUSH2 0xA11 JUMP JUMPDEST PUSH2 0x7B3 DUP2 PUSH2 0xA36 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x5BB DUP3 DUP5 PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x8D5 DUP3 DUP7 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x8E2 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x6E4 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x8B0 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x8FD DUP3 DUP6 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x1EB PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x8B0 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x5BB DUP3 DUP5 PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1EB DUP2 DUP5 PUSH2 0x7C2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x5BB DUP2 PUSH2 0x7FA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x5BB DUP2 PUSH2 0x842 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x5BB DUP2 PUSH2 0x87B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x5BB DUP3 DUP5 PUSH2 0x8B0 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x975 DUP3 DUP8 PUSH2 0x8B0 JUMP JUMPDEST PUSH2 0x982 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x98F PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x7AA JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x9A0 DUP2 PUSH2 0x8A3 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x9B4 DUP2 DUP5 PUSH2 0x7C2 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x9DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x9FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BB DUP3 PUSH2 0xA2A JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA54 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA3C JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x3D2 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0xA78 DUP2 PUSH2 0xA1A JUMP JUMPDEST DUP2 EQ PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA78 DUP2 PUSH2 0xA25 JUMP JUMPDEST PUSH2 0xA78 DUP2 PUSH2 0xA36 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH26 0x56168941223F93355BE7B1FAF26CE9BDAA759D4E334072AA0B4E EXTCODESIZE 0x4F LOG2 PUSH14 0x4D6C6578706572696D656E74616C CREATE2 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "211:1723:156:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;211:1723:156;;780:87:137;853:10;780:87;:::o;211:1723:156:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100575760003560e01c80632a77b18b1461005c57806332d85333146100855780638da5cb5b1461009a5780638f32d59b146100af578063f2fde38b146100c4575b600080fd5b61006f61006a3660046106ec565b6100d7565b60405161007c9190610918565b60405180910390f35b6100986100933660046106ec565b6101f2565b005b6100a26103d8565b60405161007c91906108b9565b6100b76103e7565b60405161007c919061090a565b6100986100d23660046106c6565b61040b565b60607fb3283e62da596472bfaced2b06c099416a162887a48327e0ffbcb4e682064600846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161012691906108b9565b60206040518083038186803b15801561013e57600080fd5b505afa158015610152573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610176919081019061078c565b6040516101839190610959565b60405180910390a17fc2b282e2bfa85928b833b779034da20be2d6c7536ef9afd46b64f327d8ecdc8b8484846040516101be939291906108c7565b60405180910390a16101d184848461043b565b506040805180820190915260018152603160f81b60208201525b9392505050565b6101fa6103e7565b61021f5760405162461bcd60e51b815260040161021690610949565b60405180910390fd5b60607fb3283e62da596472bfaced2b06c099416a162887a48327e0ffbcb4e682064600846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161026e91906108b9565b60206040518083038186803b15801561028657600080fd5b505afa15801561029a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102be919081019061078c565b6040516102cb9190610959565b60405180910390a16102de8484846104bb565b90507fb3283e62da596472bfaced2b06c099416a162887a48327e0ffbcb4e682064600846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161032d91906108b9565b60206040518083038186803b15801561034557600080fd5b505afa158015610359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061037d919081019061078c565b60405161038a9190610959565b60405180910390a16103b5604051806040016040528060018152602001603160f81b81525082610594565b156103d25760405162461bcd60e51b815260040161021690610939565b50505050565b6000546001600160a01b031690565b600080546001600160a01b03166103fc6105c1565b6001600160a01b031614905090565b6104136103e7565b61042f5760405162461bcd60e51b815260040161021690610949565b610438816105c5565b50565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061046990859085906004016108ef565b602060405180830381600087803b15801561048357600080fd5b505af1158015610497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103d29190810190610739565b60606000839050806001600160a01b031663c5bf0e9d8430308989896040516024016104e9939291906108c7565b60408051601f198184030181529181526020820180516001600160e01b0316632a77b18b60e01b1790525160e086901b6001600160e01b03191681526105359493929190600401610967565b600060405180830381600087803b15801561054f57600080fd5b505af1158015610563573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261058b9190810190610757565b95945050505050565b600081518351146105a7575060006105bb565b818051906020012083805190602001201490505b92915050565b3390565b6001600160a01b0381166105eb5760405162461bcd60e51b815260040161021690610929565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b80356105bb81610a6f565b80516105bb81610a83565b600082601f83011261066d57600080fd5b815161068061067b826109e5565b6109be565b9150808252602083016020830185838301111561069c57600080fd5b6106a7838284610a39565b50505092915050565b80356105bb81610a8c565b80516105bb81610a8c565b6000602082840312156106d857600080fd5b60006106e48484610646565b949350505050565b60008060006060848603121561070157600080fd5b600061070d8686610646565b935050602061071e86828701610646565b925050604061072f868287016106b0565b9150509250925092565b60006020828403121561074b57600080fd5b60006106e48484610651565b60006020828403121561076957600080fd5b815167ffffffffffffffff81111561078057600080fd5b6106e48482850161065c565b60006020828403121561079e57600080fd5b60006106e484846106bb565b6107b381610a1a565b82525050565b6107b381610a25565b60006107cd82610a0d565b6107d78185610a11565b93506107e7818560208601610a39565b6107f081610a65565b9093019392505050565b6000610807602683610a11565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b600061084f601783610a11565b7f6661696c656420657865637574654f7065726174696f6e000000000000000000815260200192915050565b6000610888600c83610a11565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006105bb600083610a11565b6107b381610a36565b602081016105bb82846107aa565b606081016108d582866107aa565b6108e260208301856107aa565b6106e460408301846108b0565b604081016108fd82856107aa565b6101eb60208301846108b0565b602081016105bb82846107b9565b602080825281016101eb81846107c2565b602080825281016105bb816107fa565b602080825281016105bb81610842565b602080825281016105bb8161087b565b602081016105bb82846108b0565b60a0810161097582876108b0565b61098260208301866107aa565b61098f60408301856107aa565b81810360608301526109a0816108a3565b905081810360808301526109b481846107c2565b9695505050505050565b60405181810167ffffffffffffffff811182821017156109dd57600080fd5b604052919050565b600067ffffffffffffffff8211156109fc57600080fd5b506020601f91909101601f19160190565b5190565b90815260200190565b60006105bb82610a2a565b151590565b6001600160a01b031690565b90565b60005b83811015610a54578181015183820152602001610a3c565b838111156103d25750506000910152565b601f01601f191690565b610a7881610a1a565b811461043857600080fd5b610a7881610a25565b610a7881610a3656fea365627a7a723158207956168941223f93355be7b1faf26ce9bdaa759d4e334072aa0b4e3b4fa26d4d6c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2A77B18B EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x32D85333 EQ PUSH2 0x85 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xAF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x6EC JUMP JUMPDEST PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP2 SWAP1 PUSH2 0x918 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x98 PUSH2 0x93 CALLDATASIZE PUSH1 0x4 PUSH2 0x6EC JUMP JUMPDEST PUSH2 0x1F2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA2 PUSH2 0x3D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP2 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0xB7 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C SWAP2 SWAP1 PUSH2 0x90A JUMP JUMPDEST PUSH2 0x98 PUSH2 0xD2 CALLDATASIZE PUSH1 0x4 PUSH2 0x6C6 JUMP JUMPDEST PUSH2 0x40B JUMP JUMPDEST PUSH1 0x60 PUSH32 0xB3283E62DA596472BFACED2B06C099416A162887A48327E0FFBCB4E682064600 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x126 SWAP2 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x152 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x176 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x78C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x183 SWAP2 SWAP1 PUSH2 0x959 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0xC2B282E2BFA85928B833B779034DA20BE2D6C7536EF9AFD46B64F327D8ECDC8B DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1BE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x1D1 DUP5 DUP5 DUP5 PUSH2 0x43B JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1FA PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x21F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x216 SWAP1 PUSH2 0x949 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH32 0xB3283E62DA596472BFACED2B06C099416A162887A48327E0FFBCB4E682064600 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26E SWAP2 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x286 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2BE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x78C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2CB SWAP2 SWAP1 PUSH2 0x959 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x2DE DUP5 DUP5 DUP5 PUSH2 0x4BB JUMP JUMPDEST SWAP1 POP PUSH32 0xB3283E62DA596472BFACED2B06C099416A162887A48327E0FFBCB4E682064600 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32D SWAP2 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x359 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x37D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x78C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x38A SWAP2 SWAP1 PUSH2 0x959 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x3B5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP3 PUSH2 0x594 JUMP JUMPDEST ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x216 SWAP1 PUSH2 0x939 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3FC PUSH2 0x5C1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x413 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x42F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x216 SWAP1 PUSH2 0x949 JUMP JUMPDEST PUSH2 0x438 DUP2 PUSH2 0x5C5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x469 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x8EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x497 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3D2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x739 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC5BF0E9D DUP5 ADDRESS ADDRESS DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4E9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x2A77B18B PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH1 0xE0 DUP7 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND DUP2 MSTORE PUSH2 0x535 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x967 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x563 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x58B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x757 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x5A7 JUMPI POP PUSH1 0x0 PUSH2 0x5BB JUMP JUMPDEST DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5EB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x216 SWAP1 PUSH2 0x929 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x5BB DUP2 PUSH2 0xA6F JUMP JUMPDEST DUP1 MLOAD PUSH2 0x5BB DUP2 PUSH2 0xA83 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x680 PUSH2 0x67B DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH2 0x9BE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x69C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6A7 DUP4 DUP3 DUP5 PUSH2 0xA39 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x5BB DUP2 PUSH2 0xA8C JUMP JUMPDEST DUP1 MLOAD PUSH2 0x5BB DUP2 PUSH2 0xA8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E4 DUP5 DUP5 PUSH2 0x646 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x70D DUP7 DUP7 PUSH2 0x646 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x71E DUP7 DUP3 DUP8 ADD PUSH2 0x646 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x72F DUP7 DUP3 DUP8 ADD PUSH2 0x6B0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x74B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E4 DUP5 DUP5 PUSH2 0x651 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6E4 DUP5 DUP3 DUP6 ADD PUSH2 0x65C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x79E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E4 DUP5 DUP5 PUSH2 0x6BB JUMP JUMPDEST PUSH2 0x7B3 DUP2 PUSH2 0xA1A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x7B3 DUP2 PUSH2 0xA25 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7CD DUP3 PUSH2 0xA0D JUMP JUMPDEST PUSH2 0x7D7 DUP2 DUP6 PUSH2 0xA11 JUMP JUMPDEST SWAP4 POP PUSH2 0x7E7 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA39 JUMP JUMPDEST PUSH2 0x7F0 DUP2 PUSH2 0xA65 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x807 PUSH1 0x26 DUP4 PUSH2 0xA11 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84F PUSH1 0x17 DUP4 PUSH2 0xA11 JUMP JUMPDEST PUSH32 0x6661696C656420657865637574654F7065726174696F6E000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x888 PUSH1 0xC DUP4 PUSH2 0xA11 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BB PUSH1 0x0 DUP4 PUSH2 0xA11 JUMP JUMPDEST PUSH2 0x7B3 DUP2 PUSH2 0xA36 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x5BB DUP3 DUP5 PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x8D5 DUP3 DUP7 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x8E2 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x6E4 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x8B0 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x8FD DUP3 DUP6 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x1EB PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x8B0 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x5BB DUP3 DUP5 PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1EB DUP2 DUP5 PUSH2 0x7C2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x5BB DUP2 PUSH2 0x7FA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x5BB DUP2 PUSH2 0x842 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x5BB DUP2 PUSH2 0x87B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x5BB DUP3 DUP5 PUSH2 0x8B0 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x975 DUP3 DUP8 PUSH2 0x8B0 JUMP JUMPDEST PUSH2 0x982 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x98F PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x7AA JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x9A0 DUP2 PUSH2 0x8A3 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x9B4 DUP2 DUP5 PUSH2 0x7C2 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x9DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x9FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BB DUP3 PUSH2 0xA2A JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA54 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA3C JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x3D2 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH2 0xA78 DUP2 PUSH2 0xA1A JUMP JUMPDEST DUP2 EQ PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA78 DUP2 PUSH2 0xA25 JUMP JUMPDEST PUSH2 0xA78 DUP2 PUSH2 0xA36 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 PUSH26 0x56168941223F93355BE7B1FAF26CE9BDAA759D4E334072AA0B4E EXTCODESIZE 0x4F LOG2 PUSH14 0x4D6C6578706572696D656E74616C CREATE2 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "211:1723:156:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;211:1723:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;841:322;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1166:443;;;;;;;;;:::i;:::-;;851:68:142;;;:::i;:::-;;;;;;;;1134:83;;;:::i;:::-;;;;;;;;1351:98;;;;;;;;;:::i;841:322:156:-;949:20;980:53;997:9;-1:-1:-1;;;;;990:27:156;;1026:4;990:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;990:42:156;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;990:42:156;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;990:42:156;;;;;;;;;980:53;;;;;;;;;;;;;;;1042:47;1059:9;1070:6;1078:10;1042:47;;;;;;;;;;;;;;;;;1093:45;1108:9;1119:6;1127:10;1093:14;:45::i;:::-;-1:-1:-1;1149:10:156;;;;;;;;;;;;-1:-1:-1;;;1149:10:156;;;;841:322;;;;;;:::o;1166:443::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;;;1275:19:156;1303:49;1320:5;-1:-1:-1;;;;;1313:23:156;;1345:4;1313:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1313:38:156;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1313:38:156;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1313:38:156;;;;;;;;;1303:49;;;;;;;;;;;;;;;1366:44;1388:5;1395:6;1403;1366:21;:44::i;:::-;1357:53;;1420:49;1437:5;-1:-1:-1;;;;;1430:23:156;;1462:4;1430:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:38:156;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1430:38:156;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1430:38:156;;;;;;;;;1420:49;;;;;;;;;;;;;;;1515:46;1542:10;;;;;;;;;;;;;-1:-1:-1;;;1542:10:156;;;1554:6;1515:26;:46::i;:::-;1511:95;;;1568:33;;-1:-1:-1;;;1568:33:156;;;;;;;;1511:95;1058:1:142;1166:443:156;;;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1351:98::-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;687:151:156:-;788:46;;-1:-1:-1;;;788:46:156;;-1:-1:-1;;;;;788:26:156;;;;;:46;;815:6;;823:10;;788:46;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;788:46:156;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;788:46:156;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;788:46:156;;;;;;;;250:434;368:20;394:34;451:6;394:64;;472:14;-1:-1:-1;;;;;472:26:156;;504:15;533:4;552;640:9;651:6;659:15;571:104;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;571:104:156;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;472:208:156;;;;;-1:-1:-1;;;;;;472:208:156;;;;;;;;571:104;472:208;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;472:208:156;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;472:208:156;;;;;;39:16:-1;36:1;17:17;2:54;101:4;472:208:156;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;472:208:156;;;;;;;;;462:218;250:434;-1:-1:-1;;;;;250:434:156:o;1612:203::-;1703:4;1729:1;:8;1717:1;:8;:20;1713:99;;-1:-1:-1;1751:5:156;1744:12;;1713:99;1805:1;1795:12;;;;;;1789:1;1779:12;;;;;;:28;1772:35;;1713:99;1612:203;;;;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:128;217:13;;235:30;217:13;235:30;;278:442;;390:3;383:4;375:6;371:17;367:27;357:2;;408:1;405;398:12;357:2;438:6;432:13;460:64;475:48;516:6;475:48;;;460:64;;;451:73;;544:6;537:5;530:21;580:4;572:6;568:17;613:4;606:5;602:16;648:3;639:6;634:3;630:16;627:25;624:2;;;665:1;662;655:12;624:2;675:39;707:6;702:3;697;675:39;;;350:370;;;;;;;;728:130;795:20;;820:33;795:20;820:33;;865:134;943:13;;961:33;943:13;961:33;;1006:241;;1110:2;1098:9;1089:7;1085:23;1081:32;1078:2;;;1126:1;1123;1116:12;1078:2;1161:1;1178:53;1223:7;1203:9;1178:53;;;1168:63;1072:175;-1:-1;;;;1072:175;1254:491;;;;1392:2;1380:9;1371:7;1367:23;1363:32;1360:2;;;1408:1;1405;1398:12;1360:2;1443:1;1460:53;1505:7;1485:9;1460:53;;;1450:63;;1422:97;1550:2;1568:53;1613:7;1604:6;1593:9;1589:22;1568:53;;;1558:63;;1529:98;1658:2;1676:53;1721:7;1712:6;1701:9;1697:22;1676:53;;;1666:63;;1637:98;1354:391;;;;;;1752:257;;1864:2;1852:9;1843:7;1839:23;1835:32;1832:2;;;1880:1;1877;1870:12;1832:2;1915:1;1932:61;1985:7;1965:9;1932:61;;2016:360;;2140:2;2128:9;2119:7;2115:23;2111:32;2108:2;;;2156:1;2153;2146:12;2108:2;2191:24;;2235:18;2224:30;;2221:2;;;2267:1;2264;2257:12;2221:2;2287:73;2352:7;2343:6;2332:9;2328:22;2287:73;;2383:263;;2498:2;2486:9;2477:7;2473:23;2469:32;2466:2;;;2514:1;2511;2504:12;2466:2;2549:1;2566:64;2622:7;2602:9;2566:64;;2653:113;2736:24;2754:5;2736:24;;;2731:3;2724:37;2718:48;;;2773:104;2850:21;2865:5;2850:21;;2884:343;;2994:38;3026:5;2994:38;;;3044:70;3107:6;3102:3;3044:70;;;3037:77;;3119:52;3164:6;3159:3;3152:4;3145:5;3141:16;3119:52;;;3192:29;3214:6;3192:29;;;3183:39;;;;2974:253;-1:-1;;;2974:253;3235:375;;3395:67;3459:2;3454:3;3395:67;;;3495:34;3475:55;;-1:-1;;;3559:2;3550:12;;3543:30;3601:2;3592:12;;3381:229;-1:-1;;3381:229;3619:323;;3779:67;3843:2;3838:3;3779:67;;;3879:25;3859:46;;3933:2;3924:12;;3765:177;-1:-1;;3765:177;3951:312;;4111:67;4175:2;4170:3;4111:67;;;-1:-1;;;4191:35;;4254:2;4245:12;;4097:166;-1:-1;;4097:166;4272:262;;4432:66;4496:1;4491:3;4432:66;;4542:113;4625:24;4643:5;4625:24;;4662:213;4780:2;4765:18;;4794:71;4769:9;4838:6;4794:71;;4882:435;5056:2;5041:18;;5070:71;5045:9;5114:6;5070:71;;;5152:72;5220:2;5209:9;5205:18;5196:6;5152:72;;;5235;5303:2;5292:9;5288:18;5279:6;5235:72;;5324:324;5470:2;5455:18;;5484:71;5459:9;5528:6;5484:71;;;5566:72;5634:2;5623:9;5619:18;5610:6;5566:72;;5655:201;5767:2;5752:18;;5781:65;5756:9;5819:6;5781:65;;5863:297;5999:2;6013:47;;;5984:18;;6074:76;5984:18;6136:6;6074:76;;6167:407;6358:2;6372:47;;;6343:18;;6433:131;6343:18;6433:131;;6581:407;6772:2;6786:47;;;6757:18;;6847:131;6757:18;6847:131;;6995:407;7186:2;7200:47;;;7171:18;;7261:131;7171:18;7261:131;;7409:213;7527:2;7512:18;;7541:71;7516:9;7585:6;7541:71;;7629:937;7950:3;7935:19;;7965:71;7939:9;8009:6;7965:71;;;8047:72;8115:2;8104:9;8100:18;8091:6;8047:72;;;8130;8198:2;8187:9;8183:18;8174:6;8130:72;;;8250:9;8244:4;8240:20;8235:2;8224:9;8220:18;8213:48;8275:131;8401:4;8275:131;;;8267:139;;8455:9;8449:4;8445:20;8439:3;8428:9;8424:19;8417:49;8480:76;8551:4;8542:6;8480:76;;;8472:84;7921:645;-1:-1;;;;;;7921:645;8573:256;8635:2;8629:9;8661:17;;;8736:18;8721:34;;8757:22;;;8718:62;8715:2;;;8793:1;8790;8783:12;8715:2;8809;8802:22;8613:216;;-1:-1;8613:216;8836:321;;8979:18;8971:6;8968:30;8965:2;;;9011:1;9008;9001:12;8965:2;-1:-1;9142:4;9078;9055:17;;;;-1:-1;;9051:33;9132:15;;8902:255;9164:121;9251:12;;9222:63;9293:162;9395:19;;;9444:4;9435:14;;9388:67;9635:91;;9697:24;9715:5;9697:24;;9733:85;9799:13;9792:21;;9775:43;9825:121;-1:-1;;;;;9887:54;;9870:76;9953:72;10015:5;9998:27;10033:268;10098:1;10105:101;10119:6;10116:1;10113:13;10105:101;;;10186:11;;;10180:18;10167:11;;;10160:39;10141:2;10134:10;10105:101;;;10221:6;10218:1;10215:13;10212:2;;;-1:-1;;10286:1;10268:16;;10261:27;10082:219;10309:97;10397:2;10377:14;-1:-1;;10373:28;;10357:49;10414:117;10483:24;10501:5;10483:24;;;10476:5;10473:35;10463:2;;10522:1;10519;10512:12;10538:111;10604:21;10619:5;10604:21;;10656:117;10725:24;10743:5;10725:24;"
            },
            "methodIdentifiers": {
              "doStuffWithFlashLoan(address,address,uint256)": "32d85333",
              "executeOperation(address,address,uint256)": "2a77b18b",
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/testhelpers/ITokenFlashLoanTest.sol": {
        "ITokenFlashLoanTest": {
          "abi": [
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "signature",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "flashBorrow",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "flashBorrow(uint256,address,address,string,bytes)": "c5bf0e9d"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/testhelpers/LoanTokenLogicTest.sol": {
        "LoanTokenLogicTest": {
          "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": "burner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "loanToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "loanAmount",
                  "type": "uint256"
                }
              ],
              "name": "FlashBorrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "minter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assetAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "price",
                  "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": false,
                  "internalType": "address[]",
                  "name": "addresses",
                  "type": "address[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "limits",
                  "type": "uint256[]"
                }
              ],
              "name": "SetTransactionLimits",
              "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"
            },
            {
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "VERSION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assetBorrow",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "assetSupply",
                  "type": "uint256"
                }
              ],
              "name": "_supplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "assetBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "avgBorrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "baseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "withdrawAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "borrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "borrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "burnAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "useLM",
                  "type": "bool"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "redeemed",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "burnAmount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "loanAmountPaid",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "funcId",
                  "type": "string"
                }
              ],
              "name": "checkPause",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                }
              ],
              "name": "checkPriceDivergence",
              "outputs": [],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "checkpointPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "checkpointSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "collateralTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "bool[]",
                  "name": "isTorqueLoans",
                  "type": "bool[]"
                }
              ],
              "name": "disableLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "earlyAccessToken",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getBorrowAmountForDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "initialLoanDuration",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getDepositAmountForBorrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                }
              ],
              "name": "getEstimatedMarginDetails",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "principal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateral",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRate",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "name": "getMarginBorrowAmountAndRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                }
              ],
              "name": "getMaxEscrowAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxEscrowAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "initialPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "kinkLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "liquidityMiningAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "loanParamsIds",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "loanTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilBaseRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "lowUtilRateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "marginTrade",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "loanId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "leverageAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "loanTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralTokenSent",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "collateralTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "trader",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "affiliateReferrer",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "loanDataBytes",
                  "type": "bytes"
                }
              ],
              "name": "marginTradeAffiliate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "marketLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "maxScaleRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "mintAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "useLM",
                  "type": "bool"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "minted",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmount",
                  "type": "uint256"
                }
              ],
              "name": "nextBorrowInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "supplyAmount",
                  "type": "uint256"
                }
              ],
              "name": "nextSupplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "pauser",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "profitOf",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "rateMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "setAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_baseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_rateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilBaseRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_lowUtilRateMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_targetLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_kinkLevel",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_maxScaleRate",
                  "type": "uint256"
                }
              ],
              "name": "setDemandCurve",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "LMAddress",
                  "type": "address"
                }
              ],
              "name": "setLiquidityMiningAddress",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_pauser",
                  "type": "address"
                }
              ],
              "name": "setPauser",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "id",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bool",
                      "name": "active",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "loanToken",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "collateralToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "minInitialMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maintenanceMargin",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxLoanTerm",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct LoanParamsStruct.LoanParams[]",
                  "name": "loanParamsList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bool",
                  "name": "areTorqueLoans",
                  "type": "bool"
                }
              ],
              "name": "setupLoanParams",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "sovrynContractAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "supplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "targetLevel",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "target_",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "string",
                  "name": "funcId",
                  "type": "string"
                },
                {
                  "internalType": "bool",
                  "name": "isPaused",
                  "type": "bool"
                }
              ],
              "name": "toggleFunctionPause",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "tokenPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAssetBorrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalAssetSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assetSupply",
                  "type": "uint256"
                }
              ],
              "name": "totalSupplyInterestRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "transactionLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "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"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "wrbtcTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "_supplyInterestRate(uint256,uint256)": {
                "params": {
                  "assetBorrow": "The amount of loan tokens on debt.",
                  "assetSupply": "The amount of loan tokens supplied."
                },
                "return": "The next supply interest adjustment."
              },
              "allowance(address,address)": {
                "params": {
                  "_owner": "The account owner of the iTokens.",
                  "_spender": "The account allowed to send the iTokens."
                },
                "return": "The number of iTokens an account is allowing the spender  to send on its behalf."
              },
              "approve(address,uint256)": {
                "params": {
                  "_spender": "The account address that will be able to spend the tokens.",
                  "_value": "The amount of tokens allowed to spend."
                }
              },
              "assetBalanceOf(address)": {
                "return": "The user's balance of underlying token."
              },
              "avgBorrowInterestRate()": {
                "return": "The average borrow interest."
              },
              "balanceOf(address)": {
                "params": {
                  "_owner": "The account owner of the iTokens."
                },
                "return": "The number of iTokens an account owns."
              },
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": {
                "params": {
                  "borrower": "The one paying for the collateral.",
                  "collateralTokenAddress": "The address of the token to be used as  collateral. Cannot be the loan token address.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.  (150% of the withdrawn amount worth in collateral tokens).",
                  "initialLoanDuration": "The duration of the loan in seconds.  If the loan is not paid back until then, it'll need to be rolled over.",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "receiver": "The one receiving the withdrawn amount.",
                  "withdrawAmount": "The amount to be withdrawn (actually borrowed)."
                },
                "return": "New principal and new collateral added to loan."
              },
              "borrowInterestRate()": {
                "return": "The borrow interest rate."
              },
              "burn(address,uint256)": {
                "params": {
                  "burnAmount": "The amount of loan tokens to redeem.",
                  "receiver": "The account getting the minted tokens."
                },
                "return": "The amount of underlying tokens payed to lender."
              },
              "burn(address,uint256,bool)": {
                "params": {
                  "burnAmount": "The amount of pool tokens to redeem.",
                  "receiver": "the receiver of the underlying tokens. note: potetial LM rewards are always sent to the msg.sender",
                  "useLM": "if true -> deposit the pool tokens into the Liquidity Mining contract"
                }
              },
              "checkPause(string)": {
                "details": "Used to read externally from the smart contract to see if a  function is paused.",
                "params": {
                  "funcId": "The function ID, the selector."
                },
                "return": "isPaused Whether the function is paused: true or false."
              },
              "checkpointPrice(address)": {
                "params": {
                  "_user": "The user account as the mapping index."
                },
                "return": "The price on the checkpoint for this user."
              },
              "disableLoanParams(address[],bool[])": {
                "params": {
                  "collateralTokens": "The array of collateral tokens.",
                  "isTorqueLoans": "Whether the loan is a torque loan."
                }
              },
              "getBorrowAmountForDeposit(uint256,uint256,address)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "depositAmount": "The amount of deposit.",
                  "initialLoanDuration": "The duration of the loan."
                },
                "return": "The amount of borrow allowed."
              },
              "getDepositAmountForBorrow(uint256,uint256,address)": {
                "params": {
                  "borrowAmount": "The amount of borrow.",
                  "collateralTokenAddress": "The token address of collateral.",
                  "initialLoanDuration": "The duration of the loan."
                },
                "return": "The amount of deposit required."
              },
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanTokenSent": "The number of loan tokens provided by the user."
                },
                "return": "The principal, the collateral and the interestRate."
              },
              "getMaxEscrowAmount(uint256)": {
                "details": "maxEscrowAmount = liquidity * (100 - interestForDuration) / 100",
                "params": {
                  "leverageAmount": "The chosen multiplier with 18 decimals."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": {
                "params": {
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanDataBytes": "Additional loan data (not in use for token swaps).",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "loanTokenSent": "The number of loan tokens provided by the user.",
                  "trader": "The account that performs this trade."
                },
                "return": "New principal and new collateral added to trade."
              },
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": {
                "params": {
                  "affiliateReferrer": "The address of the referrer from affiliates program.",
                  "collateralTokenAddress": "The token address of collateral.",
                  "collateralTokenSent": "The amount of collateral tokens provided by the user.",
                  "leverageAmount": "The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.",
                  "loanDataBytes": "Additional loan data (not in use for token swaps).",
                  "loanId": "The ID of the loan, 0 for a new loan.",
                  "loanTokenSent": "The number of loan tokens provided by the user.",
                  "minReturn": "Minimum position size in the collateral tokens",
                  "trader": "The account that performs this trade."
                },
                "return": "New principal and new collateral added to trade."
              },
              "marketLiquidity()": {
                "return": "The market liquidity."
              },
              "mint(address,uint256)": {
                "params": {
                  "depositAmount": "The amount of underlying tokens provided on the  loan. (Not the number of loan tokens to mint).",
                  "receiver": "The account getting the minted tokens."
                },
                "return": "The amount of loan tokens minted."
              },
              "mint(address,uint256,bool)": {
                "params": {
                  "depositAmount": "The amount of underlying tokens provided on the loan.\t\t\t\t\t(Not the number of loan tokens to mint).",
                  "receiver": "the receiver of the tokens",
                  "useLM": "if true -> deposit the pool tokens into the Liquidity Mining contract"
                }
              },
              "nextBorrowInterestRate(uint256)": {
                "params": {
                  "borrowAmount": "The amount of tokens to borrow."
                },
                "return": "The next borrow interest rate."
              },
              "nextSupplyInterestRate(uint256)": {
                "params": {
                  "supplyAmount": "The amount of tokens supplied."
                },
                "return": "Interest that lenders are currently receiving when supplying a given amount of tokens to the pool."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "profitOf(address)": {
                "params": {
                  "user": "The user address."
                },
                "return": "The profit of a user."
              },
              "setAdmin(address)": {
                "params": {
                  "_admin": "The address of the account to grant admin permissions."
                }
              },
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": {
                "details": "These params should be percentages represented  like so: 5% = 5000000000000000000 /// 18 digits precision. rateMultiplier + baseRate can't exceed 100%\t * To maintain a healthy credit score, it's important to keep your credit utilization rate (CUR) low (_lowUtilBaseRate). In general you don't want your CUR to exceed 30%, but increasingly financial experts are recommending that you don't want to go above 10% if you really want an excellent credit score.\t * Interest rates tend to cluster around the kink level of a kinked interest rate model. More info at https://arxiv.org/pdf/2006.13922.pdf and https://compound.finance/governance/proposals/12",
                "params": {
                  "_baseRate": "The interest rate.",
                  "_kinkLevel": "The level that interest rates cluster on kinked model.",
                  "_lowUtilBaseRate": "The credit utilization rate (CUR) low value.",
                  "_lowUtilRateMultiplier": "The precision multiplier for low util base rate.",
                  "_maxScaleRate": "The maximum rate of the scale.",
                  "_rateMultiplier": "The precision multiplier for base rate.",
                  "_targetLevel": "The target level."
                }
              },
              "setLiquidityMiningAddress(address)": {
                "params": {
                  "LMAddress": "the address of the liquidity mining contract"
                }
              },
              "setPauser(address)": {
                "params": {
                  "_pauser": "The address of the account to grant pause permissions."
                }
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": {
                "params": {
                  "areTorqueLoans": "Whether the loan is a torque loan.",
                  "loanParamsList": "The array of loan parameters."
                }
              },
              "supplyInterestRate()": {
                "return": "Interest that lenders are currently receiving when supplying to the pool."
              },
              "toggleFunctionPause(string,bool)": {
                "details": "Combining the hash of \"iToken_FunctionPause\" string and a function  selector gets a slot to write a flag for pause state.",
                "params": {
                  "funcId": "The ID of a function, the selector.",
                  "isPaused": "true/false value of the flag."
                }
              },
              "tokenPrice()": {
                "return": "The loan token price."
              },
              "totalAssetBorrow()": {
                "return": "The total amount of loan tokens on debt."
              },
              "totalAssetSupply()": {
                "details": "Wrapper for internal _totalAssetSupply function.",
                "return": "The total amount of loan tokens on supply."
              },
              "totalSupply()": {
                "return": "The total number of iTokens in existence as of now."
              },
              "totalSupplyInterestRate(uint256)": {
                "params": {
                  "assetSupply": "The amount of loan tokens supplied."
                },
                "return": "Interest that lenders are currently receiving when supplying a given amount of loan tokens to the pool."
              },
              "transfer(address,uint256)": {
                "params": {
                  "_to": "The recipient of the tokens.",
                  "_value": "The amount of tokens sent."
                },
                "return": "Success true/false."
              },
              "transferFrom(address,address,uint256)": {
                "return": "A boolean value indicating whether the operation succeeded."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052600160009081556200001e6001600160e01b036200007216565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000076565b3390565b615ba380620000866000396000f3fe6080604052600436106103e45760003560e01c80637e37c08c11610208578063ca37e66611610118578063e3cded61116100ab578063ef2b0b391161007a578063ef2b0b3914610ace578063f2fde38b14610ae3578063f6b69f9914610b03578063f851a44014610b16578063ffa1ad7414610b2b576103e4565b8063e3cded6114610a4e578063e41b07e314610a6e578063e697d2ee14610a8e578063eebc508114610aae576103e4565b8063d759dbeb116100e7578063d759dbeb146109d9578063d8f06c83146109ee578063d97206a414610a0e578063dd62ed3e14610a2e576103e4565b8063ca37e66614610964578063cb926cb314610979578063d1a1beb414610999578063d65a5021146109b9576103e4565b80638fb807c51161019b5780639fd0506d1161016a5780639fd0506d146108da578063a9059cbb146108ef578063b9fe1a8f1461090f578063ba0e43bf1461092f578063be19421714610944576103e4565b80638fb807c51461087b57806395d89b41146108905780639bda3a98146108a55780639dc29fac146108ba576103e4565b80638d875e3c116101d75780638d875e3c1461081c5780638da5cb5b1461083c5780638ee6c4e6146108515780638f32d59b14610866576103e4565b80637e37c08c146107bd5780637ff9b596146107d2578063829b38f4146107e75780638325a1c014610807576103e4565b80632f6b600d11610303578063612ef80b1161029657806370a082311161026557806370a08231146107335780637288b3441461075357806376fd4fdf14610773578063797bf385146107935780637b7933b4146107a8576103e4565b8063612ef80b146106af578063631a3ef8146106c45780636b40cd40146106e4578063704b6c0214610713576103e4565b806340c10f19116102d257806340c10f191461064557806344a4a0031461066557806354198ce91461067a57806356e07d701461069a576103e4565b80632f6b600d146105d9578063313ce567146105ee5780633291c11a14610610578063330691ac14610630576103e4565b806318498b1d1161037b57806323b872dd1161034a57806323b872dd1461056557806328a02f19146105855780632d88af4a146105a65780632ea295fa146105c6576103e4565b806318498b1d146105045780631d0806ae146105265780631f68f20a1461053b57806320f6d07c14610550576103e4565b8063095ea7b3116103b7578063095ea7b31461048d57806309ec6b6b146104ba57806312416898146104cf57806318160ddd146104ef576103e4565b806304797930146103f357806306947a3a1461042957806306b3efd61461044b57806306fdde031461046b575b3480156103f057600080fd5b50005b3480156103ff57600080fd5b5061041361040e366004614ac6565b610b40565b604051610420919061573d565b60405180910390f35b34801561043557600080fd5b5061043e610ce9565b60405161042091906155b4565b34801561045757600080fd5b50610413610466366004614542565b610cf8565b34801561047757600080fd5b50610480610de4565b60405161042091906157bc565b34801561049957600080fd5b506104ad6104a8366004614605565b610e6f565b604051610420919061572f565b3480156104c657600080fd5b50610413610eda565b3480156104db57600080fd5b506104136104ea366004614a3b565b610eef565b3480156104fb57600080fd5b50610413610f1a565b34801561051057600080fd5b5061052461051f366004614b6a565b610f20565b005b34801561053257600080fd5b50610413610f63565b34801561054757600080fd5b50610413610f69565b34801561055c57600080fd5b50610413610f6f565b34801561057157600080fd5b506104ad6105803660046145b8565b610ffe565b610598610593366004614943565b6110c7565b6040516104209291906159bd565b3480156105b257600080fd5b506105246105c1366004614542565b6112ec565b6105986105d436600461479c565b611332565b3480156105e557600080fd5b5061043e611612565b3480156105fa57600080fd5b50610603611621565b60405161042091906159e6565b34801561061c57600080fd5b5061041361062b366004614a3b565b61162a565b34801561063c57600080fd5b5061041361163c565b34801561065157600080fd5b50610413610660366004614605565b611642565b34801561067157600080fd5b50610413611683565b34801561068657600080fd5b50610413610695366004614542565b611695565b3480156106a657600080fd5b50610413611736565b3480156106bb57600080fd5b5061041361173c565b3480156106d057600080fd5b506104136106df366004614ac6565b61176d565b3480156106f057600080fd5b506107046106ff366004614b09565b61190d565b604051610420939291906159cb565b34801561071f57600080fd5b5061052461072e366004614542565b611a1e565b34801561073f57600080fd5b5061041361074e366004614542565b611a64565b34801561075f57600080fd5b5061041361076e366004614a77565b611a7f565b34801561077f57600080fd5b5061041361078e366004614635565b611b62565b34801561079f57600080fd5b5061043e611c0d565b3480156107b457600080fd5b50610413611c21565b3480156107c957600080fd5b50610413611c27565b3480156107de57600080fd5b50610413611c2d565b3480156107f357600080fd5b50610413610802366004614a3b565b611c6b565b34801561081357600080fd5b50610413611ceb565b34801561082857600080fd5b50610598610837366004614a77565b611cf7565b34801561084857600080fd5b5061043e611d10565b34801561085d57600080fd5b5061043e611d1f565b34801561087257600080fd5b506104ad611d2e565b34801561088757600080fd5b50610413611d54565b34801561089c57600080fd5b50610480611d84565b3480156108b157600080fd5b5061043e611ddf565b3480156108c657600080fd5b506104136108d5366004614605565b611dee565b3480156108e657600080fd5b5061043e611e62565b3480156108fb57600080fd5b506104ad61090a366004614605565b611e71565b34801561091b57600080fd5b5061041361092a366004614a3b565b611e81565b34801561093b57600080fd5b50610413611e8c565b34801561095057600080fd5b506104ad61095f3660046149d2565b611e92565b34801561097057600080fd5b5061043e611f14565b34801561098557600080fd5b50610524610994366004614542565b611f23565b3480156109a557600080fd5b506104136109b4366004614635565b611f69565b3480156109c557600080fd5b506104136109d4366004614a3b565b611fb3565b3480156109e557600080fd5b50610413611fc6565b3480156109fa57600080fd5b50610524610a0936600461471a565b611fcc565b348015610a1a57600080fd5b50610524610a29366004614c66565b61219b565b348015610a3a57600080fd5b50610413610a4936600461457e565b6122a2565b348015610a5a57600080fd5b50610524610a69366004614a06565b6122cd565b348015610a7a57600080fd5b50610413610a89366004614542565b612372565b348015610a9a57600080fd5b50610524610aa9366004614678565b612384565b348015610aba57600080fd5b50610413610ac9366004614542565b612535565b348015610ada57600080fd5b50610413612550565b348015610aef57600080fd5b50610524610afe366004614542565b612556565b610598610b11366004614863565b612586565b348015610b2257600080fd5b5061043e612656565b348015610b3757600080fd5b50610413612665565b60008315610ce2576001600160a01b038216610b65576017546001600160a01b031691505b600060106000846001604051602001610b7f929190615540565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506001600160a01b039182169363e762319f936101009091049092169187918a91869163ca74a5d991610bf0918a910161573d565b60206040518083038186803b158015610c0857600080fd5b505afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c409190810190614a59565b60016040518663ffffffff1660e01b8152600401610c6295949392919061562e565b60206040518083038186803b158015610c7a57600080fd5b505afa158015610c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cb29190810190614a59565b9150610cc682610cc0611d54565b8661266a565b9350610cd491506126e39050565b821115610ce057600091505b505b9392505050565b6016546001600160a01b031681565b601c5460009081906001600160a01b031615610d9357601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690610d4090309087906004016155d0565b60206040518083038186803b158015610d5857600080fd5b505afa158015610d6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d909190810190614a59565b90505b610ddb670de0b6b3a7640000610dcf610daa611c2d565b610dc385610db789611a64565b9063ffffffff61271916565b9063ffffffff61273e16565b9063ffffffff61277816565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610e675780601f10610e3c57610100808354040283529160200191610e67565b820191906000526020600020905b815481529060010190602001808311610e4a57829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ec890869061573d565b60405180910390a35060015b92915050565b6000610ee96104ea60006127ba565b90505b90565b600080610efa610f6f565b90508015610f1457610f0c8184611a7f565b915050610ddf565b50919050565b60155490565b6000610f2e8686868661190d565b5091505081811015610f5b5760405162461bcd60e51b8152600401610f52906157cd565b60405180910390fd5b505050505050565b600e5481565b60055481565b6016546004805460405163250f447f60e11b81526000936001600160a01b0390811693634a1e88fe93610fae93309361010090920490911691016155d0565b60206040518083038186803b158015610fc657600080fd5b505afa158015610fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ee99190810190614a59565b60165460405163115dd4b160e01b81526000916110bf918691869186916001600160a01b03169063115dd4b1906110399033906004016155c2565b60206040518083038186803b15801561105157600080fd5b505afa158015611065573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611089919081019061477e565b6110b6576001600160a01b03881660009081526014602090815260408083203384529091529020546110ba565b6000195b6127f4565b949350505050565b6000806001600054146110ec5760405162461bcd60e51b8152600401610f529061596d565b60026000556110f96129c7565b6111068989898988610f20565b6001600160a01b038616611123576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156111565760405162461bcd60e51b8152600401610f529061587d565b89158061116b5750336001600160a01b038616145b6111875760405162461bcd60e51b8152600401610f529061598d565b6001600160a01b038616600090815260126020526040902054156111ca576001600160a01b0386166000908152601260205260409020548711156111ca57600080fd5b60045461010090046001600160a01b03166000908152601260205260409020541561121b5760045461010090046001600160a01b031660009081526012602052604090205488111561121b57600080fd5b600061122887898b612a47565b9050806112475760405162461bcd60e51b8152600401610f52906158ad565b61124f614249565b611257614267565b3082526001600160a01b038816602080840182905260408401919091528101839052606081018b9052608081018a905261128f612c74565b6112a08c8260016020020151612d1a565b825260208201526112c16f4b3b4ca85a86c47a098a2240000000008d612778565b9b506112d38d60008e8c86868c612d69565b6001600055909e909d509b505050505050505050505050565b6112f4611d2e565b6113105760405162461bcd60e51b8152600401610f529061590d565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806001600054146113575760405162461bcd60e51b8152600401610f529061596d565b6002600055886113795760405162461bcd60e51b8152600401610f529061599d565b6113816129c7565b6001600160a01b038616600090815260126020526040902054156113c4576001600160a01b0386166000908152601260205260409020548711156113c457600080fd5b3415806113d057508634145b80156113e45750861515806113e457508915155b801561140b57506001600160a01b03861615158061140157503415155b8061140b57508915155b801561142757508915806114275750336001600160a01b038616145b6114435760405162461bcd60e51b8152600401610f529061583d565b6001600160a01b038616611460576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156114935760405162461bcd60e51b8152600401610f52906157dd565b61149b612c74565b6114a3614249565b6114ab614267565b3082526001600160a01b03878116602080850191909152908716604084015281018b90526114e38b6114dd60006127ba565b8c61266a565b8360006020020184600260200201856001602002019290925291905252888160046020020181815250506115fa8c8c601660009054906101000a90046001600160a01b03166001600160a01b031663ca74a5d9601060008e600160405160200161154e929190615540565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020546040518263ffffffff1660e01b8152600401611592919061573d565b60206040518083038186803b1580156115aa57600080fd5b505afa1580156115be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115e29190810190614a59565b8b868660405180602001604052806000815250612d69565b6001600055909d909c509a5050505050505050505050565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b60006001600054146116665760405162461bcd60e51b8152600401610f529061596d565b60026000556116758383612fc8565b90505b600160005592915050565b6000610ee9611690610f6f565b6130d4565b600080827f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb660001b6040516020016116ce929190615566565b604051602081830303815290604052805190602001209050610ddb8160136000866001600160a01b03166001600160a01b0316815260200190815260200160002054611718611c2d565b6001600160a01b03871660009081526011602052604090205461310c565b600a5481565b60008061174960006127ba565b90506000611755610f6f565b9050808211156117685790039050610eec565b505090565b60008315610ce257600061178385610cc0611d54565b9250505061178f6126e3565b8111610ce0576001600160a01b0383166117b2576017546001600160a01b031692505b6000601060008560016040516020016117cc929190615540565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b815292945061190493600a936001600160a01b03938416936325decac09361010090930416918a918991869163ca74a5d991611842918c910161573d565b60206040518083038186803b15801561185a57600080fd5b505afa15801561186e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118929190810190614a59565b60016040518663ffffffff1660e01b81526004016118b495949392919061562e565b60206040518083038186803b1580156118cc57600080fd5b505afa1580156118e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610db79190810190614a59565b92505050610ce2565b600080806001600160a01b03841661192e576017546001600160a01b031693505b600061193b858789612a47565b90506119478882612d1a565b90945091506119546126e3565b84111561196b575060009250829150819050611a14565b61197b878563ffffffff61271916565b6016546004805460405163d67f707760e01b8152939a506001600160a01b039283169363d67f7077936119c09361010090930416918a918d918d918a918d9101615670565b60206040518083038186803b1580156119d857600080fd5b505afa1580156119ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a109190810190614a59565b9250505b9450945094915050565b611a26611d2e565b611a425760405162461bcd60e51b8152600401610f529061590d565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60008215801590611a905750828210155b15610ed457611b5b701d6329f1c35ca4bfabb9f5610000000000610dcf611b4568056bc75e2d63100000601660009054906101000a90046001600160a01b03166001600160a01b0316634699f8466040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b409190810190614a59565b613166565b610dc3611b5288886131a8565b610dc3896130d4565b9050610ed4565b6000600160005414611b865760405162461bcd60e51b8152600401610f529061596d565b60026000558115611ba157611b9a836131da565b9050611bad565b611baa83613380565b90505b8015611c0157611c01600460019054906101000a90046001600160a01b0316858360405180604001604052806015815260200174185cdcd95d081d1c985b9cd9995c8819985a5b1959605a1b815250613537565b60016000559392505050565b60045461010090046001600160a01b031681565b600d5481565b60085481565b600f546000908190426001600160581b03908116911614611c5457611c50613597565b9150505b611c65611c60826127ba565b613663565b91505090565b600080611c8a61016d610dcf601c600b5461273e90919063ffffffff16565b90506000611ca768056bc75e2d631000008363ffffffff61316616565b90506000611cc468056bc75e2d63100000610dcf84610dc361173c565b9050611ce285610dcf83670de0b6b3a764000063ffffffff61273e16565b95945050505050565b6000610ee96000613692565b600080611d048484612d1a565b915091505b9250929050565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316611d456136e8565b6001600160a01b031614905090565b600f546000908190426001600160581b03908116911614611d7b57611d77613597565b9150505b611c65816127ba565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e675780601f10610e3c57610100808354040283529160200191610e67565b6018546001600160a01b031681565b6000600160005414611e125760405162461bcd60e51b8152600401610f529061596d565b6002600055611e2082613380565b9050801561167857611678600460019054906101000a90046001600160a01b03168483604051806040016040528060018152602001603560f81b815250613537565b601b546001600160a01b031681565b6000610ce23384846000196127f4565b6000610ed482613692565b60095481565b60008082604051602001611ea691906155a8565b6040516020818303038152906040528051906020012090506000817fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001611ef392919061558c565b60408051808303601f19018152919052805160209091012054949350505050565b601a546001600160a01b031681565b611f2b611d2e565b611f475760405162461bcd60e51b8152600401610f529061590d565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000600160005414611f8d5760405162461bcd60e51b8152600401610f529061596d565b60026000558115611fa957611fa284846136ec565b9050611c01565b611fa28484612fc8565b6000610ed46104ea83610db760006127ba565b60075481565b611fd4611d2e565b80611fe957506019546001600160a01b031633145b6120055760405162461bcd60e51b8152600401610f529061590d565b60045460609061010090046001600160a01b031660005b845181101561208f578185828151811061203257fe5b6020026020010151606001906001600160a01b031690816001600160a01b03168152505083612064576224ea00612067565b60005b62ffffff1685828151811061207857fe5b602090810291909101015160e0015260010161201c565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e906120c090879060040161571e565b600060405180830381600087803b1580156120da57600080fd5b505af11580156120ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211691908101906146e6565b915060005b82518110156121945782818151811061213057fe5b60200260200101516010600087848151811061214857fe5b60200260200101516080015187604051602001612166929190615540565b60408051601f198184030181529181528151602092830120835290820192909252016000205560010161211b565b5050505050565b6121a3611d2e565b806121b857506019546001600160a01b031633145b6121d45760405162461bcd60e51b8152600401610f529061590d565b68056bc75e2d631000006121ee878963ffffffff61271916565b111561220c5760405162461bcd60e51b8152600401610f529061589d565b68056bc75e2d63100000612226858763ffffffff61271916565b11156122445760405162461bcd60e51b8152600401610f529061589d565b68056bc75e2d631000008311158015612266575068056bc75e2d631000008211155b6122825760405162461bcd60e51b8152600401610f52906158cd565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b031633146122f75760405162461bcd60e51b8152600401610f529061595d565b60008260405160200161230a91906155a8565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f260405160200161235292919061558c565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b61238c611d2e565b806123a157506019546001600160a01b031633145b6123bd5760405162461bcd60e51b8152600401610f529061590d565b8281146123dc5760405162461bcd60e51b8152600401610f529061582d565b604080518481526020808602820101909152606090848015612408578160200160208202803883390190505b50905060005b848110156124cb57600086868381811061242457fe5b90506020020160206124399190810190614542565b85858481811061244557fe5b905060200201602061245a9190810190614760565b60405160200161246b929190615540565b6040516020818303038152906040528051906020012060001c905060106000828152602001908152602001600020548383815181106124a657fe5b602090810291909101810191909152600091825260109052604081205560010161240e565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a906124fc90849060040161570d565b600060405180830381600087803b15801561251657600080fd5b505af115801561252a573d6000803e3d6000fd5b505050505050505050565b6001600160a01b031660009081526011602052604090205490565b600b5481565b61255e611d2e565b61257a5760405162461bcd60e51b8152600401610f529061590d565b61258381613775565b50565b6000806001600160a01b038516156125fd5760165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf448906125ca908a9089906004016155d0565b600060405180830381600087803b1580156125e457600080fd5b505af11580156125f8573d6000803e3d6000fd5b505050505b6126438c8c8c8c8c8c8c8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110c792505050565b915091509a509a98505050505050505050565b6019546001600160a01b031681565b600681565b600080600061267986866137f7565b92506126c66126ae670de0b6b3a7640000611b406b0a3098c68eb9427db8000000610dcf83610dc38a8c63ffffffff61273e16565b610dcf88670de0b6b3a764000063ffffffff61273e16565b90506126d8818763ffffffff61316616565b915093509350939050565b600480546040516370a0823160e01b81526000926101009092046001600160a01b0316916370a0823191610fae913091016155b4565b600082820183811015610ce25760405162461bcd60e51b8152600401610f529061580d565b60008261274d57506000610ed4565b8282028284828161275a57fe5b0414610ce25760405162461bcd60e51b8152600401610f52906158fd565b6000610ce283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061390d565b6000601554600014610ddf57600c54806127e4576127e16127d9610f6f565b610db76126e3565b90505b610f0c818463ffffffff61271916565b60006000198214612850576040805180820190915260028152610c4d60f21b602082015261282b908390859063ffffffff61394416565b6001600160a01b03861660009081526014602090815260408083203384529091529020555b6001600160a01b0384166128765760405162461bcd60e51b8152600401610f52906157ed565b6001600160a01b03851660009081526013602090815260408083205481518083019092526002825261189b60f11b928201929092529091906128c1908390879063ffffffff61394416565b6001600160a01b038089166000908152601360205260408082208490559189168152908120549192506128fa828863ffffffff61271916565b6001600160a01b0389166000908152601360205260408120829055909150612920611c2d565b601c549091506001600160a01b038b811691161480159061294f5750601c546001600160a01b038a8116911614155b1561296c576129608a868684613970565b61296c89848484613970565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a6040516129af919061573d565b60405180910390a35060019998505050505050505050565b600080356001600160e01b0319167fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001612a0792919061558c565b6040516020818303038152906040528051906020012090506000815490508015612a435760405162461bcd60e51b8152600401610f529061590d565b5050565b808215610ce257600080601660009054906101000a90046001600160a01b03166001600160a01b03166378d849ed6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a9f57600080fd5b505afa158015612ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ad79190810190614560565b60048054604051630a7549df60e21b81526001600160a01b03938416936329d5277c93612b10938c9361010090910490921691016155d0565b604080518083038186803b158015612b2757600080fd5b505afa158015612b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b5f9190810190614a96565b9150915081600014158015612b7357508015155b612b8f5760405162461bcd60e51b8152600401610f529061594d565b6000612ba582610dcf888663ffffffff61273e16565b60165460048054604051631a51577760e21b81529394506000936001600160a01b03938416936369455ddc93612be8936101009004909116918d91889101615606565b60206040518083038186803b158015612c0057600080fd5b505afa158015612c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c389190810190614a59565b9050868114612c5857612c5587610dcf848463ffffffff61273e16565b91505b612c68828663ffffffff61271916565b98975050505050505050565b600f5442906001600160581b038083169116146125835760165460048054604051630740ff7d60e51b81526001600160a01b039384169363e81fefa093612cc493610100900490911691016155b4565b600060405180830381600087803b158015612cde57600080fd5b505af1158015612cf2573d6000803e3d6000fd5b5050600f80546001600160581b0385166affffffffffffffffffffff19909116179055505050565b60008080612d3a670de0b6b3a7640000610dcf868863ffffffff61273e16565b9050612d4f81612d4a60006127ba565b6137f7565b9150612d5f826224ea0083613a26565b9250509250929050565b600080612d746129c7565b612d7c6126e3565b602085015111801590612d9b575060208501516001600160a01b031615155b612db75760405162461bcd60e51b8152600401610f529061586d565b60408501516001600160a01b0316612ddd5760208501516001600160a01b031660408601525b6000612deb8787878c613a87565b60208601516060870151919250612e029190612719565b60608601528815612e22576060850151612e1c908a613166565b60608601525b60008915612e2e575060015b6000601060008a84604051602001612e47929190615540565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020549050601660009054906101000a90046001600160a01b03166001600160a01b031663585314cf84838f868f8e8e8e6040518963ffffffff1660e01b8152600401612ebf979695949392919061574b565b60408051808303818588803b158015612ed757600080fd5b505af1158015612eeb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250612f109190810190614a96565b608089015260208801819052612f385760405162461bcd60e51b8152600401610f52906158bd565b601654602089015160405163f06a9c6b60e01b81526001600160a01b039092169163f06a9c6b91612f6b916004016155b4565b600060405180830381600087803b158015612f8557600080fd5b505af1158015612f99573d6000803e3d6000fd5b5050505086600160058110612faa57fe5b6020020151608090970151969c969b50959950505050505050505050565b600080612fd483613cbc565b601c5491935091506000906001600160a01b03161561307257601c54604051636822955360e11b81526001600160a01b039091169063d0452aa69061301f90309089906004016155d0565b60206040518083038186803b15801561303757600080fd5b505afa15801561304b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061306f9190810190614a59565b90505b6001600160a01b03851660009081526013602052604081205461309b908363ffffffff61271916565b905060006130af828663ffffffff61271916565b90506130bd87868887613dc6565b506130ca87838387613970565b5050505092915050565b60008115610ddf5760006130e6613597565b509050610f0c83610dcf61016d610dc38568056bc75e2d6310000063ffffffff61273e16565b60008161311b575060006110bf565b508354611ce28161315a670de0b6b3a764000061314e88613142898963ffffffff613ee716565b9063ffffffff613f2d16565b9063ffffffff613f9816565b9063ffffffff613ffc16565b6000610ce283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613944565b600082158015906131b857508115155b15610ed457611b5b82610dcf8568056bc75e2d6310000063ffffffff61273e16565b601c54604051636822955360e11b815260009182916001600160a01b039091169063d0452aa69061321190309033906004016155eb565b60206040518083038186803b15801561322957600080fd5b505afa15801561323d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506132619190810190614a59565b90508261327d61327033611a64565b839063ffffffff61271916565b101561329b5760405162461bcd60e51b8152600401610f529061584d565b801561337b578281101561331457601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec906132dd903090859033906004016156e5565b600060405180830381600087803b1580156132f757600080fd5b505af115801561330b573d6000803e3d6000fd5b5050505061337b565b601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec90613348903090879033906004016156e5565b600060405180830381600087803b15801561336257600080fd5b505af1158015613376573d6000803e3d6000fd5b505050505b610ddb835b60008161339f5760405162461bcd60e51b8152600401610f529061591d565b6133a833611a64565b8211156133dc5760001982146133d05760405162461bcd60e51b8152600401610f52906158dd565b6133d933611a64565b91505b6133e4612c74565b60006133f3611c6060006127ba565b90506000613413670de0b6b3a7640000610dcf868563ffffffff61273e16565b9050600061341f6126e3565b9050819350808411156134445760405162461bcd60e51b8152600401610f529061585d565b601c546000906001600160a01b0316156134dd57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa69061348a90309033906004016155eb565b60206040518083038186803b1580156134a257600080fd5b505afa1580156134b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134da9190810190614a59565b90505b336000908152601360205260408120546134fd908363ffffffff61271916565b90506000613511828963ffffffff61316616565b905061351f33898989614042565b5061352c33838389613970565b505050505050919050565b60405161359190859063a9059cbb60e01b9061355990879087906024016156ca565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915283614167565b50505050565b60165460048054604051630d1979fb60e41b8152600093849384936001600160a01b039283169363d1979fb0936135d9933093610100900490911691016155d0565b60c06040518083038186803b1580156135f157600080fd5b505afa158015613605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136299190810190614bdf565b509196509450925061365c915068056bc75e2d631000009050610dcf61364f8285613166565b859063ffffffff61273e16565b9150509091565b6015546000908061367657600e54610ddb565b610ddb81610dcf85670de0b6b3a764000063ffffffff61273e16565b60008082156136db57600f54426001600160581b039081169116146136bd576136b9613597565b9150505b60006136cb82610db76126e3565b9050808411156136d9578093505b505b610ddb83612d4a836127ba565b3390565b60006136f88383612fc8565b601c549091506137149084906001600160a01b031683806127f4565b50601c546040516336305cf160e21b81526001600160a01b039091169063d8c173c49061374790869085906004016156ca565b600060405180830381600087803b15801561376157600080fd5b505af11580156130ca573d6000803e3d6000fd5b6001600160a01b03811661379b5760405162461bcd60e51b8152600401610f52906157fd565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008061380f61380985610db7610f6f565b846131a8565b600554600654600954600a54600b5494955060009485949392919082881015613836578297505b818811156138a957968190039668056bc75e2d631000008290038089111561385c578098505b61387d68056bc75e2d63100000610dcf85610dc3898b63ffffffff61271916565b96506138a187610db783610dcf613894878d613166565b8e9063ffffffff61273e16565b9950506138ff565b6138ca85610db768056bc75e2d63100000610dcf8c8963ffffffff61273e16565b985093955085936138e1848663ffffffff61271916565b9550868910156138f3578698506138ff565b858911156138ff578598505b505050505050505092915050565b6000818361392e5760405162461bcd60e51b8152600401610f5291906157bc565b50600083858161393a57fe5b0495945050505050565b600081848411156139685760405162461bcd60e51b8152600401610f5291906157bc565b505050900390565b6040516000906139a69086907f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb690602001615566565b604051602081830303815290604052805190602001209050600083600014156139d25760009250613a03565b8415613a03576001600160a01b038616600090815260116020526040902054613a009083908790869061310c565b90505b90556001600160a01b039093166000908152601160205260409020929092555050565b600080613a416301e13380610dcf878763ffffffff61273e16565b90506000613a5e68056bc75e2d631000008363ffffffff61316616565b9050613a7d81610dcf8668056bc75e2d6310000063ffffffff61273e16565b9695505050505050565b60175460045460408501516020850151606086015160808701516000956001600160a01b03908116956101009004811694939291908b16851415613add5760405162461bcd60e51b8152600401610f529061592d565b3496508715613b3b57613b0185858a60405180602001604052806000815250613537565b87831115613b3657601654604080516020810190915260008152613b369187916001600160a01b03909116908b870390613537565b613b70565b601654604080518082019091526002815261323760f01b6020820152613b709187916001600160a01b03909116908690613537565b8015613c7357856001600160a01b03168b6001600160a01b0316148015613b9657508615155b8015613ba25750808710155b15613c3c57856001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613be257600080fd5b505af1158015613bf6573d6000803e3d6000fd5b505060165460408051808201909152600481526332382d6160e01b6020820152613c3294508f93506001600160a01b0390911691508490613537565b8087039650613c73565b601654604080518082019091526004815263191c16b160e11b6020820152613c73918d9133916001600160a01b0316908590614225565b8115613cae57601654604080518082019091526002815261323960f01b6020820152613cae91879133916001600160a01b0316908690614225565b505050505050949350505050565b60008082613cdc5760405162461bcd60e51b8152600401610f52906158ed565b613ce4612c74565b613cf1611c6060006127ba565b9050613d0f81610dcf85670de0b6b3a764000063ffffffff61273e16565b915034613d5757613d52600460019054906101000a90046001600160a01b031633308660405180604001604052806002815260200161062760f31b815250614225565b613dc1565b601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613da757600080fd5b505af1158015613dbb573d6000803e3d6000fd5b50505050505b915091565b60006001600160a01b038516613dee5760405162461bcd60e51b8152600401610f52906157ed565b6001600160a01b038516600090815260136020526040812054613e17908663ffffffff61271916565b6001600160a01b0387166000908152601360205260409020819055601554909150613e48908663ffffffff61271916565b6015556040516001600160a01b038716907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb90613e8a908890889088906159cb565b60405180910390a2856001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613ed6919061573d565b60405180910390a395945050505050565b6000818303818312801590613efc5750838113155b80613f115750600083128015613f1157508381135b610ce25760405162461bcd60e51b8152600401610f529061597d565b600082613f3c57506000610ed4565b82600019148015613f505750600160ff1b82145b15613f6d5760405162461bcd60e51b8152600401610f529061593d565b82820282848281613f7a57fe5b0514610ce25760405162461bcd60e51b8152600401610f529061593d565b600081613fb75760405162461bcd60e51b8152600401610f52906159ad565b81600019148015613fcb5750600160ff1b83145b15613fe85760405162461bcd60e51b8152600401610f529061588d565b6000828481613ff357fe5b05949350505050565b60008282018183128015906140115750838112155b80614026575060008312801561402657508381125b610ce25760405162461bcd60e51b8152600401610f529061581d565b6040805180820182526002815261189b60f11b6020808301919091526001600160a01b0387166000908152601390915291822054829161408a9190879063ffffffff61394416565b9050600a81116140ab576140a4858263ffffffff61271916565b9450600090505b6001600160a01b03861660009081526013602052604090208190556015546140d9908663ffffffff61316616565b6015556040516001600160a01b038716907f743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b46449061411b908890889088906159cb565b60405180910390a260006001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613ed6919061573d565b60006060846001600160a01b03168460405161418391906155a8565b6000604051808303816000865af19150503d80600081146141c0576040519150601f19603f3d011682016040523d82523d6000602084013e6141c5565b606091505b50915091508183906141ea5760405162461bcd60e51b8152600401610f5291906157bc565b508051156121945780806020019051614206919081019061477e565b8390610f5b5760405162461bcd60e51b8152600401610f5291906157bc565b6040516121949086906323b872dd60e01b9061355990889088908890602401615606565b60405180608001604052806004906020820280388339509192915050565b6040518060a001604052806005906020820280388339509192915050565b8035610ed481615b3a565b8051610ed481615b3a565b60008083601f8401126142ad57600080fd5b5081356001600160401b038111156142c457600080fd5b602083019150836020820283011115611d0957600080fd5b600082601f8301126142ed57600080fd5b81516143006142fb82615a1a565b6159f4565b9150818183526020840193506020810190508385602084028201111561432557600080fd5b60005b838110156130ca578161433b88826143e6565b8452506020928301929190910190600101614328565b600082601f83011261436257600080fd5b81356143706142fb82615a1a565b915081818352602084019350602081019050838561010084028201111561439657600080fd5b60005b838110156130ca57816143ac8882614481565b8452506020909201916101009190910190600101614399565b8035610ed481615b4e565b8051610ed481615b4e565b8035610ed481615b57565b8051610ed481615b57565b60008083601f84011261440357600080fd5b5081356001600160401b0381111561441a57600080fd5b602083019150836001820283011115611d0957600080fd5b600082601f83011261444357600080fd5b81356144516142fb82615a3a565b9150808252602083016020830185838301111561446d57600080fd5b614478838284615ac0565b50505092915050565b6000610100828403121561449457600080fd5b61449f6101006159f4565b905060006144ad84846143db565b82525060206144be848483016143c5565b60208301525060406144d284828501614285565b60408301525060606144e684828501614285565b60608301525060806144fa84828501614285565b60808301525060a061450e848285016143db565b60a08301525060c0614522848285016143db565b60c08301525060e0614536848285016143db565b60e08301525092915050565b60006020828403121561455457600080fd5b60006110bf8484614285565b60006020828403121561457257600080fd5b60006110bf8484614290565b6000806040838503121561459157600080fd5b600061459d8585614285565b92505060206145ae85828601614285565b9150509250929050565b6000806000606084860312156145cd57600080fd5b60006145d98686614285565b93505060206145ea86828701614285565b92505060406145fb868287016143db565b9150509250925092565b6000806040838503121561461857600080fd5b60006146248585614285565b92505060206145ae858286016143db565b60008060006060848603121561464a57600080fd5b60006146568686614285565b9350506020614667868287016143db565b92505060406145fb868287016143c5565b6000806000806040858703121561468e57600080fd5b84356001600160401b038111156146a457600080fd5b6146b08782880161429b565b945094505060208501356001600160401b038111156146ce57600080fd5b6146da8782880161429b565b95989497509550505050565b6000602082840312156146f857600080fd5b81516001600160401b0381111561470e57600080fd5b6110bf848285016142dc565b6000806040838503121561472d57600080fd5b82356001600160401b0381111561474357600080fd5b61474f85828601614351565b92505060206145ae858286016143c5565b60006020828403121561477257600080fd5b60006110bf84846143c5565b60006020828403121561479057600080fd5b60006110bf84846143d0565b600080600080600080600080610100898b0312156147b957600080fd5b60006147c58b8b6143db565b98505060206147d68b828c016143db565b97505060406147e78b828c016143db565b96505060606147f88b828c016143db565b95505060806148098b828c01614285565b94505060a061481a8b828c01614285565b93505060c061482b8b828c01614285565b92505060e08901356001600160401b0381111561484757600080fd5b6148538b828c01614432565b9150509295985092959890939650565b6000806000806000806000806000806101208b8d03121561488357600080fd5b600061488f8d8d6143db565b9a505060206148a08d828e016143db565b99505060406148b18d828e016143db565b98505060606148c28d828e016143db565b97505060806148d38d828e01614285565b96505060a06148e48d828e01614285565b95505060c06148f58d828e016143db565b94505060e06149068d828e01614285565b9350506101008b01356001600160401b0381111561492357600080fd5b61492f8d828e016143f1565b92509250509295989b9194979a5092959850565b600080600080600080600080610100898b03121561496057600080fd5b600061496c8b8b6143db565b985050602061497d8b828c016143db565b975050604061498e8b828c016143db565b965050606061499f8b828c016143db565b95505060806149b08b828c01614285565b94505060a06149c18b828c01614285565b93505060c061482b8b828c016143db565b6000602082840312156149e457600080fd5b81356001600160401b038111156149fa57600080fd5b6110bf84828501614432565b60008060408385031215614a1957600080fd5b82356001600160401b03811115614a2f57600080fd5b61474f85828601614432565b600060208284031215614a4d57600080fd5b60006110bf84846143db565b600060208284031215614a6b57600080fd5b60006110bf84846143e6565b60008060408385031215614a8a57600080fd5b600061462485856143db565b60008060408385031215614aa957600080fd5b6000614ab585856143e6565b92505060206145ae858286016143e6565b600080600060608486031215614adb57600080fd5b6000614ae786866143db565b9350506020614af8868287016143db565b92505060406145fb86828701614285565b60008060008060808587031215614b1f57600080fd5b6000614b2b87876143db565b9450506020614b3c878288016143db565b9350506040614b4d878288016143db565b9250506060614b5e87828801614285565b91505092959194509250565b600080600080600060a08688031215614b8257600080fd5b6000614b8e88886143db565b9550506020614b9f888289016143db565b9450506040614bb0888289016143db565b9350506060614bc188828901614285565b9250506080614bd2888289016143db565b9150509295509295909350565b60008060008060008060c08789031215614bf857600080fd5b6000614c0489896143e6565b9650506020614c1589828a016143e6565b9550506040614c2689828a016143e6565b9450506060614c3789828a016143e6565b9350506080614c4889828a016143e6565b92505060a0614c5989828a016143e6565b9150509295509295509295565b600080600080600080600060e0888a031215614c8157600080fd5b6000614c8d8a8a6143db565b9750506020614c9e8a828b016143db565b9650506040614caf8a828b016143db565b9550506060614cc08a828b016143db565b9450506080614cd18a828b016143db565b93505060a0614ce28a828b016143db565b92505060c0614cf38a828b016143db565b91505092959891949750929550565b6000614d0e8383614d46565b505060200190565b6000614d0e8383614eb9565b6000614d2e83836154a0565b50506101000190565b614d4081615aaf565b82525050565b614d4081615a80565b614d40614d5b82615a80565b615af8565b614d6981615a67565b614d738184610ddf565b9250614d7e82610eec565b8060005b83811015610f5b578151614d968782614d02565b9650614da183615a61565b925050600101614d82565b6000614db782615a6d565b614dc18185615a77565b9350614dcc83615a61565b8060005b83811015614dfa578151614de48882614d16565b9750614def83615a61565b925050600101614dd0565b509495945050505050565b6000614e1082615a6d565b614e1a8185615a77565b9350614e2583615a61565b8060005b83811015614dfa578151614e3d8882614d22565b9750614e4883615a61565b925050600101614e29565b614e5c81615a71565b614e668184610ddf565b9250614e7182610eec565b8060005b83811015610f5b578151614e898782614d16565b9650614e9483615a61565b925050600101614e75565b614d4081615a8b565b614d40614eb482615a8b565b615b03565b614d4081610eec565b614d40614ece82610eec565b610eec565b614d40614ece82615a90565b6000614eea82615a6d565b614ef48185615a77565b9350614f04818560208601615acc565b614f0d81615b24565b9093019392505050565b6000614f2282615a6d565b614f2c8185610ddf565b9350614f3c818560208601615acc565b9290920192915050565b6000614f53600c83615a77565b6b636f6c6c20746f6f206c6f7760a01b815260200192915050565b6000614f7b600283615a77565b61031360f41b815260200192915050565b6000614f99600283615a77565b61313560f01b815260200192915050565b6000614fb7602683615a77565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000614fff601b83615a77565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000615038602183615a77565b7f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061507b600e83615a77565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b60006150a5600183615a77565b603760f81b815260200192915050565b60006150c2601283615a77565b716e6f7420656e6f7567682062616c616e636560701b815260200192915050565b60006150f0600283615a77565b61333760f01b815260200192915050565b600061510e600283615a77565b610c8d60f21b815260200192915050565b600061512c600283615a77565b61313160f01b815260200192915050565b600061514a602183615a77565b7f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061518d601583615a77565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b60006151be600283615a77565b61189960f11b815260200192915050565b60006151dc600283615a77565b61323560f01b815260200192915050565b60006151fa600f83615a77565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b6000615225600283615a77565b61199960f11b815260200192915050565b6000615243600283615a77565b61313760f01b815260200192915050565b6000615261602183615a77565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006152a4600c83615a77565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006152cc600283615a77565b61313960f01b815260200192915050565b60006152ea600283615a77565b61191b60f11b815260200192915050565b6000615308602783615a77565b7f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f815266766572666c6f7760c81b602082015260400192915050565b6000615351601d83615a77565b7f696e76616c6964207261746520636f6c6c61746572616c20746f6b656e000000815260200192915050565b600061538a600a83615a77565b6937b7363ca830bab9b2b960b11b815260200192915050565b60006153b0600c83615a77565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b60006153d8602483615a77565b7f5369676e6564536166654d6174683a207375627472616374696f6e206f766572815263666c6f7760e01b602082015260400192915050565b600061541e601883615a77565b7f34303120757365206f66206578697374696e67206c6f616e0000000000000000815260200192915050565b6000615457600183615a77565b601b60f91b815260200192915050565b6000615474602083615a77565b7f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f815260200192915050565b80516101008301906154b28482614eb9565b5060208201516154c56020850182614e9f565b5060408201516154d86040850182614d46565b5060608201516154eb6060850182614d46565b5060808201516154fe6080850182614d46565b5060a082015161551160a0850182614eb9565b5060c082015161552460c0850182614eb9565b5060e082015161359160e0850182614eb9565b614d4081615aa9565b600061554c8285614d4f565b60148201915061555c8284614ea8565b5060010192915050565b60006155728285614d4f565b6014820191506155828284614ec2565b5060200192915050565b60006155988285614ed3565b6004820191506155828284614ec2565b6000610ce28284614f17565b60208101610ed48284614d46565b60208101610ed48284614d37565b604081016155de8285614d46565b610ce26020830184614d46565b604081016155f98285614d46565b610ce26020830184614d37565b606081016156148286614d46565b6156216020830185614d46565b6110bf6040830184614eb9565b60a0810161563c8288614d46565b6156496020830187614d46565b6156566040830186614eb9565b6156636060830185614eb9565b613a7d6080830184614e9f565b60c0810161567e8289614d46565b61568b6020830188614d46565b6156986040830187614eb9565b6156a56060830186614eb9565b6156b26080830185614eb9565b6156bf60a0830184614eb9565b979650505050505050565b604081016156d88285614d46565b610ce26020830184614eb9565b606081016156f38286614d46565b6157006020830185614eb9565b6110bf6040830184614d37565b60208082528101610ce28184614dac565b60208082528101610ce28184614e05565b60208101610ed48284614e9f565b60208101610ed48284614eb9565b6101c0810161575a828a614eb9565b6157676020830189614eb9565b6157746040830188614e9f565b6157816060830187614eb9565b61578e6080830186614d60565b61579c610100830185614e53565b8181036101a08301526157af8184614edf565b9998505050505050505050565b60208082528101610ce28184614edf565b60208082528101610ed481614f46565b60208082528101610ed481614f6e565b60208082528101610ed481614f8c565b60208082528101610ed481614faa565b60208082528101610ed481614ff2565b60208082528101610ed48161502b565b60208082528101610ed48161506e565b60208082528101610ed481615098565b60208082528101610ed4816150b5565b60208082528101610ed4816150e3565b60208082528101610ed481615101565b60208082528101610ed48161511f565b60208082528101610ed48161513d565b60208082528101610ed481615180565b60208082528101610ed4816151b1565b60208082528101610ed4816151cf565b60208082528101610ed4816151ed565b60208082528101610ed481615218565b60208082528101610ed481615236565b60208082528101610ed481615254565b60208082528101610ed481615297565b60208082528101610ed4816152bf565b60208082528101610ed4816152dd565b60208082528101610ed4816152fb565b60208082528101610ed481615344565b60208082528101610ed48161537d565b60208082528101610ed4816153a3565b60208082528101610ed4816153cb565b60208082528101610ed481615411565b60208082528101610ed48161544a565b60208082528101610ed481615467565b604081016156d88285614eb9565b606081016159d98286614eb9565b6156216020830185614eb9565b60208101610ed48284615537565b6040518181016001600160401b0381118282101715615a1257600080fd5b604052919050565b60006001600160401b03821115615a3057600080fd5b5060209081020190565b60006001600160401b03821115615a5057600080fd5b506020601f91909101601f19160190565b60200190565b50600490565b5190565b50600590565b90815260200190565b6000610ed482615a9d565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b6000610ed4826000610ed482615a80565b82818337506000910152565b60005b83811015615ae7578181015183820152602001615acf565b838111156135915750506000910152565b6000610ed482615b0e565b6000610ed482615b19565b6000610ed482615b34565b6000610ed482615b2e565b601f01601f191690565b60f81b90565b60601b90565b615b4381615a80565b811461258357600080fd5b615b4381615a8b565b615b4381610eec56fea365627a7a72315820b1119067289ba830ac5e34407071c22d97663395cb09deb2a30fb0a7c9bf9bd86c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH3 0x1E PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x72 AND JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x76 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x5BA3 DUP1 PUSH3 0x86 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3E4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E37C08C GT PUSH2 0x208 JUMPI DUP1 PUSH4 0xCA37E666 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0xE3CDED61 GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xEF2B0B39 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0xACE JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xAE3 JUMPI DUP1 PUSH4 0xF6B69F99 EQ PUSH2 0xB03 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xB16 JUMPI DUP1 PUSH4 0xFFA1AD74 EQ PUSH2 0xB2B JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0xA4E JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0xA6E JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0xA8E JUMPI DUP1 PUSH4 0xEEBC5081 EQ PUSH2 0xAAE JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0xD759DBEB GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x9D9 JUMPI DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x9EE JUMPI DUP1 PUSH4 0xD97206A4 EQ PUSH2 0xA0E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xA2E JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0xCA37E666 EQ PUSH2 0x964 JUMPI DUP1 PUSH4 0xCB926CB3 EQ PUSH2 0x979 JUMPI DUP1 PUSH4 0xD1A1BEB4 EQ PUSH2 0x999 JUMPI DUP1 PUSH4 0xD65A5021 EQ PUSH2 0x9B9 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x8FB807C5 GT PUSH2 0x19B JUMPI DUP1 PUSH4 0x9FD0506D GT PUSH2 0x16A JUMPI DUP1 PUSH4 0x9FD0506D EQ PUSH2 0x8DA JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x8EF JUMPI DUP1 PUSH4 0xB9FE1A8F EQ PUSH2 0x90F JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x92F JUMPI DUP1 PUSH4 0xBE194217 EQ PUSH2 0x944 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x8FB807C5 EQ PUSH2 0x87B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x890 JUMPI DUP1 PUSH4 0x9BDA3A98 EQ PUSH2 0x8A5 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x8BA JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x8D875E3C GT PUSH2 0x1D7 JUMPI DUP1 PUSH4 0x8D875E3C EQ PUSH2 0x81C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x83C JUMPI DUP1 PUSH4 0x8EE6C4E6 EQ PUSH2 0x851 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x866 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x7BD JUMPI DUP1 PUSH4 0x7FF9B596 EQ PUSH2 0x7D2 JUMPI DUP1 PUSH4 0x829B38F4 EQ PUSH2 0x7E7 JUMPI DUP1 PUSH4 0x8325A1C0 EQ PUSH2 0x807 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x2F6B600D GT PUSH2 0x303 JUMPI DUP1 PUSH4 0x612EF80B GT PUSH2 0x296 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x733 JUMPI DUP1 PUSH4 0x7288B344 EQ PUSH2 0x753 JUMPI DUP1 PUSH4 0x76FD4FDF EQ PUSH2 0x773 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x793 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x7A8 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x612EF80B EQ PUSH2 0x6AF JUMPI DUP1 PUSH4 0x631A3EF8 EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0x6B40CD40 EQ PUSH2 0x6E4 JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH2 0x713 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 GT PUSH2 0x2D2 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x44A4A003 EQ PUSH2 0x665 JUMPI DUP1 PUSH4 0x54198CE9 EQ PUSH2 0x67A JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x69A JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x5D9 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x610 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x630 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x18498B1D GT PUSH2 0x37B JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x34A JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0x28A02F19 EQ PUSH2 0x585 JUMPI DUP1 PUSH4 0x2D88AF4A EQ PUSH2 0x5A6 JUMPI DUP1 PUSH4 0x2EA295FA EQ PUSH2 0x5C6 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x18498B1D EQ PUSH2 0x504 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x526 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x53B JUMPI DUP1 PUSH4 0x20F6D07C EQ PUSH2 0x550 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x3B7 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x9EC6B6B EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x12416898 EQ PUSH2 0x4CF JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x4EF JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x4797930 EQ PUSH2 0x3F3 JUMPI DUP1 PUSH4 0x6947A3A EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0x6B3EFD6 EQ PUSH2 0x44B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x46B JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x40E CALLDATASIZE PUSH1 0x4 PUSH2 0x4AC6 JUMP JUMPDEST PUSH2 0xB40 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP2 SWAP1 PUSH2 0x573D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0xCE9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP2 SWAP1 PUSH2 0x55B4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x466 CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x480 PUSH2 0xDE4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP2 SWAP1 PUSH2 0x57BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AD PUSH2 0x4A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4605 JUMP JUMPDEST PUSH2 0xE6F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP2 SWAP1 PUSH2 0x572F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xEDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x4EA CALLDATASIZE PUSH1 0x4 PUSH2 0x4A3B JUMP JUMPDEST PUSH2 0xEEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xF1A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0x51F CALLDATASIZE PUSH1 0x4 PUSH2 0x4B6A JUMP JUMPDEST PUSH2 0xF20 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x532 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xF63 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x547 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xF69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xF6F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AD PUSH2 0x580 CALLDATASIZE PUSH1 0x4 PUSH2 0x45B8 JUMP JUMPDEST PUSH2 0xFFE JUMP JUMPDEST PUSH2 0x598 PUSH2 0x593 CALLDATASIZE PUSH1 0x4 PUSH2 0x4943 JUMP JUMPDEST PUSH2 0x10C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP3 SWAP2 SWAP1 PUSH2 0x59BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0x5C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x12EC JUMP JUMPDEST PUSH2 0x598 PUSH2 0x5D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x479C JUMP JUMPDEST PUSH2 0x1332 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1612 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x603 PUSH2 0x1621 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP2 SWAP1 PUSH2 0x59E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x62B CALLDATASIZE PUSH1 0x4 PUSH2 0x4A3B JUMP JUMPDEST PUSH2 0x162A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x163C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x660 CALLDATASIZE PUSH1 0x4 PUSH2 0x4605 JUMP JUMPDEST PUSH2 0x1642 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1683 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x695 CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x1695 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1736 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x173C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x6DF CALLDATASIZE PUSH1 0x4 PUSH2 0x4AC6 JUMP JUMPDEST PUSH2 0x176D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x704 PUSH2 0x6FF CALLDATASIZE PUSH1 0x4 PUSH2 0x4B09 JUMP JUMPDEST PUSH2 0x190D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x59CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0x72E CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x1A1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x74E CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x1A64 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x76E CALLDATASIZE PUSH1 0x4 PUSH2 0x4A77 JUMP JUMPDEST PUSH2 0x1A7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x77F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x78E CALLDATASIZE PUSH1 0x4 PUSH2 0x4635 JUMP JUMPDEST PUSH2 0x1B62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1C0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1C21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1C27 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1C2D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x802 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A3B JUMP JUMPDEST PUSH2 0x1C6B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x813 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1CEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x837 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A77 JUMP JUMPDEST PUSH2 0x1CF7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x848 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1D10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1D1F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AD PUSH2 0x1D2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1D54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x480 PUSH2 0x1D84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1DDF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x8D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4605 JUMP JUMPDEST PUSH2 0x1DEE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1E62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AD PUSH2 0x90A CALLDATASIZE PUSH1 0x4 PUSH2 0x4605 JUMP JUMPDEST PUSH2 0x1E71 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x92A CALLDATASIZE PUSH1 0x4 PUSH2 0x4A3B JUMP JUMPDEST PUSH2 0x1E81 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1E8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x950 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AD PUSH2 0x95F CALLDATASIZE PUSH1 0x4 PUSH2 0x49D2 JUMP JUMPDEST PUSH2 0x1E92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1F14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0x994 CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x1F23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x9B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4635 JUMP JUMPDEST PUSH2 0x1F69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x9D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A3B JUMP JUMPDEST PUSH2 0x1FB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1FC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0xA09 CALLDATASIZE PUSH1 0x4 PUSH2 0x471A JUMP JUMPDEST PUSH2 0x1FCC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0xA29 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C66 JUMP JUMPDEST PUSH2 0x219B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xA49 CALLDATASIZE PUSH1 0x4 PUSH2 0x457E JUMP JUMPDEST PUSH2 0x22A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0xA69 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A06 JUMP JUMPDEST PUSH2 0x22CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xA89 CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x2372 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0xAA9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4678 JUMP JUMPDEST PUSH2 0x2384 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xABA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xAC9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x2535 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xADA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x2550 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0xAFE CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x2556 JUMP JUMPDEST PUSH2 0x598 PUSH2 0xB11 CALLDATASIZE PUSH1 0x4 PUSH2 0x4863 JUMP JUMPDEST PUSH2 0x2586 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x2656 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x2665 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB65 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB7F SWAP3 SWAP2 SWAP1 PUSH2 0x5540 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 PUSH4 0xE762319F SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 DUP8 SWAP2 DUP11 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0xBF0 SWAP2 DUP11 SWAP2 ADD PUSH2 0x573D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC40 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC62 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x562E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xCB2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP2 POP PUSH2 0xCC6 DUP3 PUSH2 0xCC0 PUSH2 0x1D54 JUMP JUMPDEST DUP7 PUSH2 0x266A JUMP JUMPDEST SWAP4 POP PUSH2 0xCD4 SWAP2 POP PUSH2 0x26E3 SWAP1 POP JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0xCE0 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xD93 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0xD40 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD90 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xDDB PUSH8 0xDE0B6B3A7640000 PUSH2 0xDCF PUSH2 0xDAA PUSH2 0x1C2D JUMP JUMPDEST PUSH2 0xDC3 DUP6 PUSH2 0xDB7 DUP10 PUSH2 0x1A64 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2778 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE67 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE3C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE67 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE4A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xEC8 SWAP1 DUP7 SWAP1 PUSH2 0x573D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEE9 PUSH2 0x4EA PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xEFA PUSH2 0xF6F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xF14 JUMPI PUSH2 0xF0C DUP2 DUP5 PUSH2 0x1A7F JUMP JUMPDEST SWAP2 POP POP PUSH2 0xDDF JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF2E DUP7 DUP7 DUP7 DUP7 PUSH2 0x190D JUMP JUMPDEST POP SWAP2 POP POP DUP2 DUP2 LT ISZERO PUSH2 0xF5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x57CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x250F447F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0x4A1E88FE SWAP4 PUSH2 0xFAE SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xEE9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH2 0x10BF SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x115DD4B1 SWAP1 PUSH2 0x1039 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x55C2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1051 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1065 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1089 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x477E JUMP JUMPDEST PUSH2 0x10B6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x10BA JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH2 0x27F4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x10EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x10F9 PUSH2 0x29C7 JUMP JUMPDEST PUSH2 0x1106 DUP10 DUP10 DUP10 DUP10 DUP9 PUSH2 0xF20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x1123 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x1156 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x587D JUMP JUMPDEST DUP10 ISZERO DUP1 PUSH2 0x116B JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x1187 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x598D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x11CA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x11CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x121B JUMPI PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP9 GT ISZERO PUSH2 0x121B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1228 DUP8 DUP10 DUP12 PUSH2 0x2A47 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1247 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x58AD JUMP JUMPDEST PUSH2 0x124F PUSH2 0x4249 JUMP JUMPDEST PUSH2 0x1257 PUSH2 0x4267 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP11 SWAP1 MSTORE PUSH2 0x128F PUSH2 0x2C74 JUMP JUMPDEST PUSH2 0x12A0 DUP13 DUP3 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x2D1A JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x12C1 PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP14 PUSH2 0x2778 JUMP JUMPDEST SWAP12 POP PUSH2 0x12D3 DUP14 PUSH1 0x0 DUP15 DUP13 DUP7 DUP7 DUP13 PUSH2 0x2D69 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP15 SWAP1 SWAP14 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12F4 PUSH2 0x1D2E JUMP JUMPDEST PUSH2 0x1310 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1357 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP9 PUSH2 0x1379 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x599D JUMP JUMPDEST PUSH2 0x1381 PUSH2 0x29C7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x13C4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x13C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x13D0 JUMPI POP DUP7 CALLVALUE EQ JUMPDEST DUP1 ISZERO PUSH2 0x13E4 JUMPI POP DUP7 ISZERO ISZERO DUP1 PUSH2 0x13E4 JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x140B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO DUP1 PUSH2 0x1401 JUMPI POP CALLVALUE ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x140B JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1427 JUMPI POP DUP10 ISZERO DUP1 PUSH2 0x1427 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x1443 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x583D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x1460 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x1493 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x57DD JUMP JUMPDEST PUSH2 0x149B PUSH2 0x2C74 JUMP JUMPDEST PUSH2 0x14A3 PUSH2 0x4249 JUMP JUMPDEST PUSH2 0x14AB PUSH2 0x4267 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 AND PUSH1 0x40 DUP5 ADD MSTORE DUP2 ADD DUP12 SWAP1 MSTORE PUSH2 0x14E3 DUP12 PUSH2 0x14DD PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST DUP13 PUSH2 0x266A JUMP JUMPDEST DUP4 PUSH1 0x0 PUSH1 0x20 MUL ADD DUP5 PUSH1 0x2 PUSH1 0x20 MUL ADD DUP6 PUSH1 0x1 PUSH1 0x20 MUL ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 MSTORE MSTORE DUP9 DUP2 PUSH1 0x4 PUSH1 0x20 MUL ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x15FA DUP13 DUP13 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCA74A5D9 PUSH1 0x10 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x154E SWAP3 SWAP2 SWAP1 PUSH2 0x5540 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1592 SWAP2 SWAP1 PUSH2 0x573D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x15E2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST DUP12 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2D69 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP14 SWAP1 SWAP13 POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1666 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1675 DUP4 DUP4 PUSH2 0x2FC8 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEE9 PUSH2 0x1690 PUSH2 0xF6F JUMP JUMPDEST PUSH2 0x30D4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 PUSH1 0x0 SHL PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x16CE SWAP3 SWAP2 SWAP1 PUSH2 0x5566 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xDDB DUP2 PUSH1 0x13 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1718 PUSH2 0x1C2D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x310C JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1749 PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1755 PUSH2 0xF6F JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1768 JUMPI SWAP1 SUB SWAP1 POP PUSH2 0xEEC JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x0 PUSH2 0x1783 DUP6 PUSH2 0xCC0 PUSH2 0x1D54 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x178F PUSH2 0x26E3 JUMP JUMPDEST DUP2 GT PUSH2 0xCE0 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x17B2 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x17CC SWAP3 SWAP2 SWAP1 PUSH2 0x5540 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH2 0x1904 SWAP4 PUSH1 0xA SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x25DECAC0 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0x1842 SWAP2 DUP13 SWAP2 ADD PUSH2 0x573D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x185A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x186E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1892 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18B4 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x562E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xDB7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xCE2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x192E JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x193B DUP6 DUP8 DUP10 PUSH2 0x2A47 JUMP JUMPDEST SWAP1 POP PUSH2 0x1947 DUP9 DUP3 PUSH2 0x2D1A JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH2 0x1954 PUSH2 0x26E3 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x196B JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1A14 JUMP JUMPDEST PUSH2 0x197B DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD67F7077 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD67F7077 SWAP4 PUSH2 0x19C0 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP14 SWAP2 DUP14 SWAP2 DUP11 SWAP2 DUP14 SWAP2 ADD PUSH2 0x5670 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19EC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1A10 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP3 POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A26 PUSH2 0x1D2E JUMP JUMPDEST PUSH2 0x1A42 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH1 0x19 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1A90 JUMPI POP DUP3 DUP3 LT ISZERO JUMPDEST ISZERO PUSH2 0xED4 JUMPI PUSH2 0x1B5B PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 PUSH2 0xDCF PUSH2 0x1B45 PUSH9 0x56BC75E2D63100000 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4699F846 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B40 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST PUSH2 0x3166 JUMP JUMPDEST PUSH2 0xDC3 PUSH2 0x1B52 DUP9 DUP9 PUSH2 0x31A8 JUMP JUMPDEST PUSH2 0xDC3 DUP10 PUSH2 0x30D4 JUMP JUMPDEST SWAP1 POP PUSH2 0xED4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1B86 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x1BA1 JUMPI PUSH2 0x1B9A DUP4 PUSH2 0x31DA JUMP JUMPDEST SWAP1 POP PUSH2 0x1BAD JUMP JUMPDEST PUSH2 0x1BAA DUP4 PUSH2 0x3380 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x1C01 JUMPI PUSH2 0x1C01 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x185CDCD95D081D1C985B9CD9995C8819985A5B1959 PUSH1 0x5A SHL DUP2 MSTORE POP PUSH2 0x3537 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1C54 JUMPI PUSH2 0x1C50 PUSH2 0x3597 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C65 PUSH2 0x1C60 DUP3 PUSH2 0x27BA JUMP JUMPDEST PUSH2 0x3663 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C8A PUSH2 0x16D PUSH2 0xDCF PUSH1 0x1C PUSH1 0xB SLOAD PUSH2 0x273E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1CA7 PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3166 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1CC4 PUSH9 0x56BC75E2D63100000 PUSH2 0xDCF DUP5 PUSH2 0xDC3 PUSH2 0x173C JUMP JUMPDEST SWAP1 POP PUSH2 0x1CE2 DUP6 PUSH2 0xDCF DUP4 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEE9 PUSH1 0x0 PUSH2 0x3692 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D04 DUP5 DUP5 PUSH2 0x2D1A JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D45 PUSH2 0x36E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1D7B JUMPI PUSH2 0x1D77 PUSH2 0x3597 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C65 DUP2 PUSH2 0x27BA JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE67 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE3C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE67 JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1E12 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1E20 DUP3 PUSH2 0x3380 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1678 JUMPI PUSH2 0x1678 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH2 0x3537 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE2 CALLER DUP5 DUP5 PUSH1 0x0 NOT PUSH2 0x27F4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x3692 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EA6 SWAP2 SWAP1 PUSH2 0x55A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EF3 SWAP3 SWAP2 SWAP1 PUSH2 0x558C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1F2B PUSH2 0x1D2E JUMP JUMPDEST PUSH2 0x1F47 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH1 0x1C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1F8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x1FA9 JUMPI PUSH2 0x1FA2 DUP5 DUP5 PUSH2 0x36EC JUMP JUMPDEST SWAP1 POP PUSH2 0x1C01 JUMP JUMPDEST PUSH2 0x1FA2 DUP5 DUP5 PUSH2 0x2FC8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 PUSH2 0x4EA DUP4 PUSH2 0xDB7 PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1FD4 PUSH2 0x1D2E JUMP JUMPDEST DUP1 PUSH2 0x1FE9 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2005 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x208F JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2032 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x2064 JUMPI PUSH3 0x24EA00 PUSH2 0x2067 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2078 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x201C JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x20C0 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x571E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2116 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x46E6 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2194 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2130 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2148 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2166 SWAP3 SWAP2 SWAP1 PUSH2 0x5540 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x211B JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x21A3 PUSH2 0x1D2E JUMP JUMPDEST DUP1 PUSH2 0x21B8 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x21D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x21EE DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST GT ISZERO PUSH2 0x220C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x589D JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x2226 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST GT ISZERO PUSH2 0x2244 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x589D JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x2266 JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x2282 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x58CD JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x22F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x595D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x230A SWAP2 SWAP1 PUSH2 0x55A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2352 SWAP3 SWAP2 SWAP1 PUSH2 0x558C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x238C PUSH2 0x1D2E JUMP JUMPDEST DUP1 PUSH2 0x23A1 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x23BD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x23DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x582D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0x2408 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x24CB JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x2424 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x2439 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4542 JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x2445 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x245A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4760 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x246B SWAP3 SWAP2 SWAP1 PUSH2 0x5540 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x24A6 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x240E JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0x24FC SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x570D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x252A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x255E PUSH2 0x1D2E JUMP JUMPDEST PUSH2 0x257A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH2 0x2583 DUP2 PUSH2 0x3775 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x25FD JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x193BBE89 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC9DDF448 SWAP1 PUSH2 0x25CA SWAP1 DUP11 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x2643 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x10C7 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP11 POP SWAP11 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2679 DUP7 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP3 POP PUSH2 0x26C6 PUSH2 0x26AE PUSH8 0xDE0B6B3A7640000 PUSH2 0x1B40 PUSH12 0xA3098C68EB9427DB8000000 PUSH2 0xDCF DUP4 PUSH2 0xDC3 DUP11 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST PUSH2 0xDCF DUP9 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x26D8 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x3166 AND JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xFAE SWAP2 ADDRESS SWAP2 ADD PUSH2 0x55B4 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x580D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x274D JUMPI POP PUSH1 0x0 PUSH2 0xED4 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x275A JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xCE2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x58FD JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE2 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x390D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x15 SLOAD PUSH1 0x0 EQ PUSH2 0xDDF JUMPI PUSH1 0xC SLOAD DUP1 PUSH2 0x27E4 JUMPI PUSH2 0x27E1 PUSH2 0x27D9 PUSH2 0xF6F JUMP JUMPDEST PUSH2 0xDB7 PUSH2 0x26E3 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xF0C DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ PUSH2 0x2850 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xC4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x282B SWAP1 DUP4 SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3944 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2876 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x57ED JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 SWAP1 PUSH2 0x28C1 SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3944 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x28FA DUP3 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP3 SWAP1 SSTORE SWAP1 SWAP2 POP PUSH2 0x2920 PUSH2 0x1C2D JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x294F JUMPI POP PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x296C JUMPI PUSH2 0x2960 DUP11 DUP7 DUP7 DUP5 PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x296C DUP10 DUP5 DUP5 DUP5 PUSH2 0x3970 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP11 PUSH1 0x40 MLOAD PUSH2 0x29AF SWAP2 SWAP1 PUSH2 0x573D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2A07 SWAP3 SWAP2 SWAP1 PUSH2 0x558C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 SLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2A43 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 DUP3 ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x0 DUP1 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x78D849ED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AB3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2AD7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4560 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x29D5277C SWAP4 PUSH2 0x2B10 SWAP4 DUP13 SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2B5F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A96 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x2B73 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST PUSH2 0x2B8F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x594D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BA5 DUP3 PUSH2 0xDCF DUP9 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A515777 PUSH1 0xE2 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x69455DDC SWAP4 PUSH2 0x2BE8 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 DUP14 SWAP2 DUP9 SWAP2 ADD PUSH2 0x5606 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2C38 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ PUSH2 0x2C58 JUMPI PUSH2 0x2C55 DUP8 PUSH2 0xDCF DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x2C68 DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF SLOAD TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x2583 JUMPI PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x740FF7D PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0xE81FEFA0 SWAP4 PUSH2 0x2CC4 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x55B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CF2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP6 AND PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2D3A PUSH8 0xDE0B6B3A7640000 PUSH2 0xDCF DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D4F DUP2 PUSH2 0x2D4A PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x2D5F DUP3 PUSH3 0x24EA00 DUP4 PUSH2 0x3A26 JUMP JUMPDEST SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2D74 PUSH2 0x29C7 JUMP JUMPDEST PUSH2 0x2D7C PUSH2 0x26E3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD GT DUP1 ISZERO SWAP1 PUSH2 0x2D9B JUMPI POP PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST PUSH2 0x2DB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x586D JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2DDD JUMPI PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x2DEB DUP8 DUP8 DUP8 DUP13 PUSH2 0x3A87 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP3 POP PUSH2 0x2E02 SWAP2 SWAP1 PUSH2 0x2719 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP9 ISZERO PUSH2 0x2E22 JUMPI PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x2E1C SWAP1 DUP11 PUSH2 0x3166 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 DUP10 ISZERO PUSH2 0x2E2E JUMPI POP PUSH1 0x1 JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2E47 SWAP3 SWAP2 SWAP1 PUSH2 0x5540 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x585314CF DUP5 DUP4 DUP16 DUP7 DUP16 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2EBF SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x574B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2ED7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2F10 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A96 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0x20 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x2F38 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x58BD JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF06A9C6B SWAP2 PUSH2 0x2F6B SWAP2 PUSH1 0x4 ADD PUSH2 0x55B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP7 PUSH1 0x1 PUSH1 0x5 DUP2 LT PUSH2 0x2FAA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 SWAP1 SWAP8 ADD MLOAD SWAP7 SWAP13 SWAP7 SWAP12 POP SWAP6 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2FD4 DUP4 PUSH2 0x3CBC JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x3072 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x301F SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3037 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x304B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x306F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x309B SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x30AF DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x30BD DUP8 DUP7 DUP9 DUP8 PUSH2 0x3DC6 JUMP JUMPDEST POP PUSH2 0x30CA DUP8 DUP4 DUP4 DUP8 PUSH2 0x3970 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 PUSH2 0x30E6 PUSH2 0x3597 JUMP JUMPDEST POP SWAP1 POP PUSH2 0xF0C DUP4 PUSH2 0xDCF PUSH2 0x16D PUSH2 0xDC3 DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x311B JUMPI POP PUSH1 0x0 PUSH2 0x10BF JUMP JUMPDEST POP DUP4 SLOAD PUSH2 0x1CE2 DUP2 PUSH2 0x315A PUSH8 0xDE0B6B3A7640000 PUSH2 0x314E DUP9 PUSH2 0x3142 DUP10 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3EE7 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3F2D AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3F98 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3FFC AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE2 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3944 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x31B8 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xED4 JUMPI PUSH2 0x1B5B DUP3 PUSH2 0xDCF DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x3211 SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x55EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x323D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3261 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x327D PUSH2 0x3270 CALLER PUSH2 0x1A64 JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST LT ISZERO PUSH2 0x329B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x584D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x337B JUMPI DUP3 DUP2 LT ISZERO PUSH2 0x3314 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x32DD SWAP1 ADDRESS SWAP1 DUP6 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x56E5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x330B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x337B JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x3348 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x56E5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3376 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xDDB DUP4 JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x339F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x591D JUMP JUMPDEST PUSH2 0x33A8 CALLER PUSH2 0x1A64 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x33DC JUMPI PUSH1 0x0 NOT DUP3 EQ PUSH2 0x33D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x58DD JUMP JUMPDEST PUSH2 0x33D9 CALLER PUSH2 0x1A64 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x33E4 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33F3 PUSH2 0x1C60 PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3413 PUSH8 0xDE0B6B3A7640000 PUSH2 0xDCF DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x341F PUSH2 0x26E3 JUMP JUMPDEST SWAP1 POP DUP2 SWAP4 POP DUP1 DUP5 GT ISZERO PUSH2 0x3444 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x585D JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x34DD JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x348A SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x55EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x34A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x34B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x34DA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x34FD SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3511 DUP3 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3166 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x351F CALLER DUP10 DUP10 DUP10 PUSH2 0x4042 JUMP JUMPDEST POP PUSH2 0x352C CALLER DUP4 DUP4 DUP10 PUSH2 0x3970 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3591 SWAP1 DUP6 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3559 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x56CA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE DUP4 PUSH2 0x4167 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD1979FB PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD1979FB0 SWAP4 PUSH2 0x35D9 SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3605 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3629 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4BDF JUMP JUMPDEST POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP PUSH2 0x365C SWAP2 POP PUSH9 0x56BC75E2D63100000 SWAP1 POP PUSH2 0xDCF PUSH2 0x364F DUP3 DUP6 PUSH2 0x3166 JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP2 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x0 SWAP1 DUP1 PUSH2 0x3676 JUMPI PUSH1 0xE SLOAD PUSH2 0xDDB JUMP JUMPDEST PUSH2 0xDDB DUP2 PUSH2 0xDCF DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x36DB JUMPI PUSH1 0xF SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x36BD JUMPI PUSH2 0x36B9 PUSH2 0x3597 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x36CB DUP3 PUSH2 0xDB7 PUSH2 0x26E3 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x36D9 JUMPI DUP1 SWAP4 POP JUMPDEST POP JUMPDEST PUSH2 0xDDB DUP4 PUSH2 0x2D4A DUP4 PUSH2 0x27BA JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36F8 DUP4 DUP4 PUSH2 0x2FC8 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH2 0x3714 SWAP1 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP1 PUSH2 0x27F4 JUMP JUMPDEST POP PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x36305CF1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD8C173C4 SWAP1 PUSH2 0x3747 SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x56CA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x30CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x379B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x57FD JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x380F PUSH2 0x3809 DUP6 PUSH2 0xDB7 PUSH2 0xF6F JUMP JUMPDEST DUP5 PUSH2 0x31A8 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD PUSH1 0xB SLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP3 DUP9 LT ISZERO PUSH2 0x3836 JUMPI DUP3 SWAP8 POP JUMPDEST DUP2 DUP9 GT ISZERO PUSH2 0x38A9 JUMPI SWAP7 DUP2 SWAP1 SUB SWAP7 PUSH9 0x56BC75E2D63100000 DUP3 SWAP1 SUB DUP1 DUP10 GT ISZERO PUSH2 0x385C JUMPI DUP1 SWAP9 POP JUMPDEST PUSH2 0x387D PUSH9 0x56BC75E2D63100000 PUSH2 0xDCF DUP6 PUSH2 0xDC3 DUP10 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP7 POP PUSH2 0x38A1 DUP8 PUSH2 0xDB7 DUP4 PUSH2 0xDCF PUSH2 0x3894 DUP8 DUP14 PUSH2 0x3166 JUMP JUMPDEST DUP15 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP10 POP POP PUSH2 0x38FF JUMP JUMPDEST PUSH2 0x38CA DUP6 PUSH2 0xDB7 PUSH9 0x56BC75E2D63100000 PUSH2 0xDCF DUP13 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP9 POP SWAP4 SWAP6 POP DUP6 SWAP4 PUSH2 0x38E1 DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP6 POP DUP7 DUP10 LT ISZERO PUSH2 0x38F3 JUMPI DUP7 SWAP9 POP PUSH2 0x38FF JUMP JUMPDEST DUP6 DUP10 GT ISZERO PUSH2 0x38FF JUMPI DUP6 SWAP9 POP JUMPDEST POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x392E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP2 SWAP1 PUSH2 0x57BC JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x393A JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3968 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP2 SWAP1 PUSH2 0x57BC JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x39A6 SWAP1 DUP7 SWAP1 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 SWAP1 PUSH1 0x20 ADD PUSH2 0x5566 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 EQ ISZERO PUSH2 0x39D2 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x3A03 JUMP JUMPDEST DUP5 ISZERO PUSH2 0x3A03 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3A00 SWAP1 DUP4 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x310C JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3A41 PUSH4 0x1E13380 PUSH2 0xDCF DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A5E PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3166 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3A7D DUP2 PUSH2 0xDCF DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x0 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 PUSH2 0x100 SWAP1 DIV DUP2 AND SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP12 AND DUP6 EQ ISZERO PUSH2 0x3ADD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x592D JUMP JUMPDEST CALLVALUE SWAP7 POP DUP8 ISZERO PUSH2 0x3B3B JUMPI PUSH2 0x3B01 DUP6 DUP6 DUP11 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3537 JUMP JUMPDEST DUP8 DUP4 GT ISZERO PUSH2 0x3B36 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x3B36 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP12 DUP8 SUB SWAP1 PUSH2 0x3537 JUMP JUMPDEST PUSH2 0x3B70 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3237 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3B70 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH2 0x3537 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3C73 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x3B96 JUMPI POP DUP7 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3BA2 JUMPI POP DUP1 DUP8 LT ISZERO JUMPDEST ISZERO PUSH2 0x3C3C JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x32382D61 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3C32 SWAP5 POP DUP16 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP5 SWAP1 PUSH2 0x3537 JUMP JUMPDEST DUP1 DUP8 SUB SWAP7 POP PUSH2 0x3C73 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x191C16B1 PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3C73 SWAP2 DUP14 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH2 0x4225 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3CAE JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3239 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3CAE SWAP2 DUP8 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x4225 JUMP JUMPDEST POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x3CDC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x58ED JUMP JUMPDEST PUSH2 0x3CE4 PUSH2 0x2C74 JUMP JUMPDEST PUSH2 0x3CF1 PUSH2 0x1C60 PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST SWAP1 POP PUSH2 0x3D0F DUP2 PUSH2 0xDCF DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x3D57 JUMPI PUSH2 0x3D52 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP PUSH2 0x4225 JUMP JUMPDEST PUSH2 0x3DC1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3DA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3DBB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3DEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x57ED JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3E17 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH2 0x3E48 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xB4C03061FB5B7FED76389D5AF8F2E0DDB09F8C70D1333ABBB62582835E10ACCB SWAP1 PUSH2 0x3E8A SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x59CB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3ED6 SWAP2 SWAP1 PUSH2 0x573D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x3EFC JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x3F11 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3F11 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0xCE2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x597D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3F3C JUMPI POP PUSH1 0x0 PUSH2 0xED4 JUMP JUMPDEST DUP3 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x3F50 JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ JUMPDEST ISZERO PUSH2 0x3F6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x593D JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x3F7A JUMPI INVALID JUMPDEST SDIV EQ PUSH2 0xCE2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x593D JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3FB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x59AD JUMP JUMPDEST DUP2 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x3FCB JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP4 EQ JUMPDEST ISZERO PUSH2 0x3FE8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x588D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x3FF3 JUMPI INVALID JUMPDEST SDIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x4011 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x4026 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x4026 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0xCE2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x581D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD DUP3 SWAP2 PUSH2 0x408A SWAP2 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3944 AND JUMP JUMPDEST SWAP1 POP PUSH1 0xA DUP2 GT PUSH2 0x40AB JUMPI PUSH2 0x40A4 DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD PUSH2 0x40D9 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x3166 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0x743033787F4738FF4D6A7225CE2BD0977EE5F86B91A902A58F5E4D0B297B4644 SWAP1 PUSH2 0x411B SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x59CB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3ED6 SWAP2 SWAP1 PUSH2 0x573D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x4183 SWAP2 SWAP1 PUSH2 0x55A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x41C0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x41C5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP4 SWAP1 PUSH2 0x41EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP2 SWAP1 PUSH2 0x57BC JUMP JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x2194 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x4206 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x477E JUMP JUMPDEST DUP4 SWAP1 PUSH2 0xF5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP2 SWAP1 PUSH2 0x57BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2194 SWAP1 DUP7 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x3559 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0x5606 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xED4 DUP2 PUSH2 0x5B3A JUMP JUMPDEST DUP1 MLOAD PUSH2 0xED4 DUP2 PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x42AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1D09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x42ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4300 PUSH2 0x42FB DUP3 PUSH2 0x5A1A JUMP JUMPDEST PUSH2 0x59F4 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x4325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x30CA JUMPI DUP2 PUSH2 0x433B DUP9 DUP3 PUSH2 0x43E6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4328 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4370 PUSH2 0x42FB DUP3 PUSH2 0x5A1A JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x4396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x30CA JUMPI DUP2 PUSH2 0x43AC DUP9 DUP3 PUSH2 0x4481 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4399 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xED4 DUP2 PUSH2 0x5B4E JUMP JUMPDEST DUP1 MLOAD PUSH2 0xED4 DUP2 PUSH2 0x5B4E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xED4 DUP2 PUSH2 0x5B57 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xED4 DUP2 PUSH2 0x5B57 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x441A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1D09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4451 PUSH2 0x42FB DUP3 PUSH2 0x5A3A JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x446D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4478 DUP4 DUP3 DUP5 PUSH2 0x5AC0 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x449F PUSH2 0x100 PUSH2 0x59F4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x44AD DUP5 DUP5 PUSH2 0x43DB JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x44BE DUP5 DUP5 DUP4 ADD PUSH2 0x43C5 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x44D2 DUP5 DUP3 DUP6 ADD PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x44E6 DUP5 DUP3 DUP6 ADD PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x44FA DUP5 DUP3 DUP6 ADD PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x450E DUP5 DUP3 DUP6 ADD PUSH2 0x43DB JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x4522 DUP5 DUP3 DUP6 ADD PUSH2 0x43DB JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x4536 DUP5 DUP3 DUP6 ADD PUSH2 0x43DB JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10BF DUP5 DUP5 PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10BF DUP5 DUP5 PUSH2 0x4290 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x459D DUP6 DUP6 PUSH2 0x4285 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x45AE DUP6 DUP3 DUP7 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x45CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x45D9 DUP7 DUP7 PUSH2 0x4285 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x45EA DUP7 DUP3 DUP8 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x45FB DUP7 DUP3 DUP8 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4624 DUP6 DUP6 PUSH2 0x4285 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x45AE DUP6 DUP3 DUP7 ADD PUSH2 0x43DB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x464A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4656 DUP7 DUP7 PUSH2 0x4285 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4667 DUP7 DUP3 DUP8 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x45FB DUP7 DUP3 DUP8 ADD PUSH2 0x43C5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x468E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46B0 DUP8 DUP3 DUP9 ADD PUSH2 0x429B JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46DA DUP8 DUP3 DUP9 ADD PUSH2 0x429B JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x470E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10BF DUP5 DUP3 DUP6 ADD PUSH2 0x42DC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x472D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x474F DUP6 DUP3 DUP7 ADD PUSH2 0x4351 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x45AE DUP6 DUP3 DUP7 ADD PUSH2 0x43C5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4772 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10BF DUP5 DUP5 PUSH2 0x43C5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4790 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10BF DUP5 DUP5 PUSH2 0x43D0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x47B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x47C5 DUP12 DUP12 PUSH2 0x43DB JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x47D6 DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x47E7 DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x47F8 DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x4809 DUP12 DUP3 DUP13 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x481A DUP12 DUP3 DUP13 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x482B DUP12 DUP3 DUP13 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4853 DUP12 DUP3 DUP13 ADD PUSH2 0x4432 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x4883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x488F DUP14 DUP14 PUSH2 0x43DB JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x48A0 DUP14 DUP3 DUP15 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x48B1 DUP14 DUP3 DUP15 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x48C2 DUP14 DUP3 DUP15 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x48D3 DUP14 DUP3 DUP15 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x48E4 DUP14 DUP3 DUP15 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x48F5 DUP14 DUP3 DUP15 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x4906 DUP14 DUP3 DUP15 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4923 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x492F DUP14 DUP3 DUP15 ADD PUSH2 0x43F1 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x496C DUP12 DUP12 PUSH2 0x43DB JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x497D DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x498E DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x499F DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x49B0 DUP12 DUP3 DUP13 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x49C1 DUP12 DUP3 DUP13 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x482B DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10BF DUP5 DUP3 DUP6 ADD PUSH2 0x4432 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4A2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x474F DUP6 DUP3 DUP7 ADD PUSH2 0x4432 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10BF DUP5 DUP5 PUSH2 0x43DB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10BF DUP5 DUP5 PUSH2 0x43E6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4624 DUP6 DUP6 PUSH2 0x43DB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4AA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4AB5 DUP6 DUP6 PUSH2 0x43E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x45AE DUP6 DUP3 DUP7 ADD PUSH2 0x43E6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4ADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4AE7 DUP7 DUP7 PUSH2 0x43DB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4AF8 DUP7 DUP3 DUP8 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x45FB DUP7 DUP3 DUP8 ADD PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4B1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4B2B DUP8 DUP8 PUSH2 0x43DB JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4B3C DUP8 DUP3 DUP9 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4B4D DUP8 DUP3 DUP9 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4B5E DUP8 DUP3 DUP9 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4B82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4B8E DUP9 DUP9 PUSH2 0x43DB JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4B9F DUP9 DUP3 DUP10 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4BB0 DUP9 DUP3 DUP10 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4BC1 DUP9 DUP3 DUP10 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x4BD2 DUP9 DUP3 DUP10 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4BF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C04 DUP10 DUP10 PUSH2 0x43E6 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x4C15 DUP10 DUP3 DUP11 ADD PUSH2 0x43E6 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x4C26 DUP10 DUP3 DUP11 ADD PUSH2 0x43E6 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x4C37 DUP10 DUP3 DUP11 ADD PUSH2 0x43E6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x4C48 DUP10 DUP3 DUP11 ADD PUSH2 0x43E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x4C59 DUP10 DUP3 DUP11 ADD PUSH2 0x43E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4C81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C8D DUP11 DUP11 PUSH2 0x43DB JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x4C9E DUP11 DUP3 DUP12 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x4CAF DUP11 DUP3 DUP12 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x4CC0 DUP11 DUP3 DUP12 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x4CD1 DUP11 DUP3 DUP12 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x4CE2 DUP11 DUP3 DUP12 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x4CF3 DUP11 DUP3 DUP12 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D0E DUP4 DUP4 PUSH2 0x4D46 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D0E DUP4 DUP4 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D2E DUP4 DUP4 PUSH2 0x54A0 JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x4D40 DUP2 PUSH2 0x5AAF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4D40 DUP2 PUSH2 0x5A80 JUMP JUMPDEST PUSH2 0x4D40 PUSH2 0x4D5B DUP3 PUSH2 0x5A80 JUMP JUMPDEST PUSH2 0x5AF8 JUMP JUMPDEST PUSH2 0x4D69 DUP2 PUSH2 0x5A67 JUMP JUMPDEST PUSH2 0x4D73 DUP2 DUP5 PUSH2 0xDDF JUMP JUMPDEST SWAP3 POP PUSH2 0x4D7E DUP3 PUSH2 0xEEC JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5B JUMPI DUP2 MLOAD PUSH2 0x4D96 DUP8 DUP3 PUSH2 0x4D02 JUMP JUMPDEST SWAP7 POP PUSH2 0x4DA1 DUP4 PUSH2 0x5A61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4D82 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DB7 DUP3 PUSH2 0x5A6D JUMP JUMPDEST PUSH2 0x4DC1 DUP2 DUP6 PUSH2 0x5A77 JUMP JUMPDEST SWAP4 POP PUSH2 0x4DCC DUP4 PUSH2 0x5A61 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DFA JUMPI DUP2 MLOAD PUSH2 0x4DE4 DUP9 DUP3 PUSH2 0x4D16 JUMP JUMPDEST SWAP8 POP PUSH2 0x4DEF DUP4 PUSH2 0x5A61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4DD0 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E10 DUP3 PUSH2 0x5A6D JUMP JUMPDEST PUSH2 0x4E1A DUP2 DUP6 PUSH2 0x5A77 JUMP JUMPDEST SWAP4 POP PUSH2 0x4E25 DUP4 PUSH2 0x5A61 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DFA JUMPI DUP2 MLOAD PUSH2 0x4E3D DUP9 DUP3 PUSH2 0x4D22 JUMP JUMPDEST SWAP8 POP PUSH2 0x4E48 DUP4 PUSH2 0x5A61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4E29 JUMP JUMPDEST PUSH2 0x4E5C DUP2 PUSH2 0x5A71 JUMP JUMPDEST PUSH2 0x4E66 DUP2 DUP5 PUSH2 0xDDF JUMP JUMPDEST SWAP3 POP PUSH2 0x4E71 DUP3 PUSH2 0xEEC JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5B JUMPI DUP2 MLOAD PUSH2 0x4E89 DUP8 DUP3 PUSH2 0x4D16 JUMP JUMPDEST SWAP7 POP PUSH2 0x4E94 DUP4 PUSH2 0x5A61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4E75 JUMP JUMPDEST PUSH2 0x4D40 DUP2 PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x4D40 PUSH2 0x4EB4 DUP3 PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x5B03 JUMP JUMPDEST PUSH2 0x4D40 DUP2 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x4D40 PUSH2 0x4ECE DUP3 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x4D40 PUSH2 0x4ECE DUP3 PUSH2 0x5A90 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EEA DUP3 PUSH2 0x5A6D JUMP JUMPDEST PUSH2 0x4EF4 DUP2 DUP6 PUSH2 0x5A77 JUMP JUMPDEST SWAP4 POP PUSH2 0x4F04 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5ACC JUMP JUMPDEST PUSH2 0x4F0D DUP2 PUSH2 0x5B24 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F22 DUP3 PUSH2 0x5A6D JUMP JUMPDEST PUSH2 0x4F2C DUP2 DUP6 PUSH2 0xDDF JUMP JUMPDEST SWAP4 POP PUSH2 0x4F3C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5ACC JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F53 PUSH1 0xC DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH12 0x636F6C6C20746F6F206C6F77 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F7B PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F99 PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FB7 PUSH1 0x26 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FFF PUSH1 0x1B DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5038 PUSH1 0x21 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x507B PUSH1 0xE DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50A5 PUSH1 0x1 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50C2 PUSH1 0x12 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH18 0x6E6F7420656E6F7567682062616C616E6365 PUSH1 0x70 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50F0 PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x510E PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x512C PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x514A PUSH1 0x21 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x518D PUSH1 0x15 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51BE PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51DC PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51FA PUSH1 0xF DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5225 PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5243 PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5261 PUSH1 0x21 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52A4 PUSH1 0xC DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52CC PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52EA PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5308 PUSH1 0x27 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206D756C7469706C69636174696F6E206F DUP2 MSTORE PUSH7 0x766572666C6F77 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5351 PUSH1 0x1D DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x696E76616C6964207261746520636F6C6C61746572616C20746F6B656E000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x538A PUSH1 0xA DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH10 0x37B7363CA830BAB9B2B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53B0 PUSH1 0xC DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53D8 PUSH1 0x24 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 DUP2 MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x541E PUSH1 0x18 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x34303120757365206F66206578697374696E67206C6F616E0000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5457 PUSH1 0x1 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5474 PUSH1 0x20 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206279207A65726F DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x54B2 DUP5 DUP3 PUSH2 0x4EB9 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x54C5 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4E9F JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x54D8 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4D46 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x54EB PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4D46 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x54FE PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x4D46 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x5511 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4EB9 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x5524 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x4EB9 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x3591 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x4D40 DUP2 PUSH2 0x5AA9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x554C DUP3 DUP6 PUSH2 0x4D4F JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x555C DUP3 DUP5 PUSH2 0x4EA8 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5572 DUP3 DUP6 PUSH2 0x4D4F JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x5582 DUP3 DUP5 PUSH2 0x4EC2 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5598 DUP3 DUP6 PUSH2 0x4ED3 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x5582 DUP3 DUP5 PUSH2 0x4EC2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE2 DUP3 DUP5 PUSH2 0x4F17 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xED4 DUP3 DUP5 PUSH2 0x4D46 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xED4 DUP3 DUP5 PUSH2 0x4D37 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x55DE DUP3 DUP6 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0xCE2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D46 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x55F9 DUP3 DUP6 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0xCE2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D37 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x5614 DUP3 DUP7 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x5621 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x10BF PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x563C DUP3 DUP9 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x5649 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x5656 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x5663 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x3A7D PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x567E DUP3 DUP10 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x568B PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x5698 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x56A5 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x56B2 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x56BF PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4EB9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x56D8 DUP3 DUP6 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0xCE2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x56F3 DUP3 DUP7 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x5700 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x10BF PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4D37 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCE2 DUP2 DUP5 PUSH2 0x4DAC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCE2 DUP2 DUP5 PUSH2 0x4E05 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xED4 DUP3 DUP5 PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xED4 DUP3 DUP5 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x1C0 DUP2 ADD PUSH2 0x575A DUP3 DUP11 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x5767 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x5774 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4E9F JUMP JUMPDEST PUSH2 0x5781 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x578E PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4D60 JUMP JUMPDEST PUSH2 0x579C PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4E53 JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x1A0 DUP4 ADD MSTORE PUSH2 0x57AF DUP2 DUP5 PUSH2 0x4EDF JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCE2 DUP2 DUP5 PUSH2 0x4EDF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x4F46 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x4F6E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x4F8C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x4FAA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x4FF2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x502B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x506E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5098 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x50B5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x50E3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5101 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x511F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x513D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5180 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x51B1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x51CF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x51ED JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5218 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5236 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5254 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5297 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x52BF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x52DD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x52FB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5344 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x537D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x53A3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x53CB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5411 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x544A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5467 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x56D8 DUP3 DUP6 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x59D9 DUP3 DUP7 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x5621 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xED4 DUP3 DUP5 PUSH2 0x5537 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5A12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5A30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5A50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST POP PUSH1 0x4 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x5 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x5A9D JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x5A80 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5AE7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5ACF JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x3591 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x5B0E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x5B19 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x5B34 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x5B2E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x5B43 DUP2 PUSH2 0x5A80 JUMP JUMPDEST DUP2 EQ PUSH2 0x2583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5B43 DUP2 PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x5B43 DUP2 PUSH2 0xEEC JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xB1 GT SWAP1 PUSH8 0x289BA830AC5E3440 PUSH17 0x71C22D97663395CB09DEB2A30FB0A7C9BF SWAP12 0xD8 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "115:252:158:-;;;493:1:143;661:55;;;;697:12:142;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;650:137;115:252:158;;780:87:137;853:10;780:87;:::o;115:252:158:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "6080604052600436106103e45760003560e01c80637e37c08c11610208578063ca37e66611610118578063e3cded61116100ab578063ef2b0b391161007a578063ef2b0b3914610ace578063f2fde38b14610ae3578063f6b69f9914610b03578063f851a44014610b16578063ffa1ad7414610b2b576103e4565b8063e3cded6114610a4e578063e41b07e314610a6e578063e697d2ee14610a8e578063eebc508114610aae576103e4565b8063d759dbeb116100e7578063d759dbeb146109d9578063d8f06c83146109ee578063d97206a414610a0e578063dd62ed3e14610a2e576103e4565b8063ca37e66614610964578063cb926cb314610979578063d1a1beb414610999578063d65a5021146109b9576103e4565b80638fb807c51161019b5780639fd0506d1161016a5780639fd0506d146108da578063a9059cbb146108ef578063b9fe1a8f1461090f578063ba0e43bf1461092f578063be19421714610944576103e4565b80638fb807c51461087b57806395d89b41146108905780639bda3a98146108a55780639dc29fac146108ba576103e4565b80638d875e3c116101d75780638d875e3c1461081c5780638da5cb5b1461083c5780638ee6c4e6146108515780638f32d59b14610866576103e4565b80637e37c08c146107bd5780637ff9b596146107d2578063829b38f4146107e75780638325a1c014610807576103e4565b80632f6b600d11610303578063612ef80b1161029657806370a082311161026557806370a08231146107335780637288b3441461075357806376fd4fdf14610773578063797bf385146107935780637b7933b4146107a8576103e4565b8063612ef80b146106af578063631a3ef8146106c45780636b40cd40146106e4578063704b6c0214610713576103e4565b806340c10f19116102d257806340c10f191461064557806344a4a0031461066557806354198ce91461067a57806356e07d701461069a576103e4565b80632f6b600d146105d9578063313ce567146105ee5780633291c11a14610610578063330691ac14610630576103e4565b806318498b1d1161037b57806323b872dd1161034a57806323b872dd1461056557806328a02f19146105855780632d88af4a146105a65780632ea295fa146105c6576103e4565b806318498b1d146105045780631d0806ae146105265780631f68f20a1461053b57806320f6d07c14610550576103e4565b8063095ea7b3116103b7578063095ea7b31461048d57806309ec6b6b146104ba57806312416898146104cf57806318160ddd146104ef576103e4565b806304797930146103f357806306947a3a1461042957806306b3efd61461044b57806306fdde031461046b575b3480156103f057600080fd5b50005b3480156103ff57600080fd5b5061041361040e366004614ac6565b610b40565b604051610420919061573d565b60405180910390f35b34801561043557600080fd5b5061043e610ce9565b60405161042091906155b4565b34801561045757600080fd5b50610413610466366004614542565b610cf8565b34801561047757600080fd5b50610480610de4565b60405161042091906157bc565b34801561049957600080fd5b506104ad6104a8366004614605565b610e6f565b604051610420919061572f565b3480156104c657600080fd5b50610413610eda565b3480156104db57600080fd5b506104136104ea366004614a3b565b610eef565b3480156104fb57600080fd5b50610413610f1a565b34801561051057600080fd5b5061052461051f366004614b6a565b610f20565b005b34801561053257600080fd5b50610413610f63565b34801561054757600080fd5b50610413610f69565b34801561055c57600080fd5b50610413610f6f565b34801561057157600080fd5b506104ad6105803660046145b8565b610ffe565b610598610593366004614943565b6110c7565b6040516104209291906159bd565b3480156105b257600080fd5b506105246105c1366004614542565b6112ec565b6105986105d436600461479c565b611332565b3480156105e557600080fd5b5061043e611612565b3480156105fa57600080fd5b50610603611621565b60405161042091906159e6565b34801561061c57600080fd5b5061041361062b366004614a3b565b61162a565b34801561063c57600080fd5b5061041361163c565b34801561065157600080fd5b50610413610660366004614605565b611642565b34801561067157600080fd5b50610413611683565b34801561068657600080fd5b50610413610695366004614542565b611695565b3480156106a657600080fd5b50610413611736565b3480156106bb57600080fd5b5061041361173c565b3480156106d057600080fd5b506104136106df366004614ac6565b61176d565b3480156106f057600080fd5b506107046106ff366004614b09565b61190d565b604051610420939291906159cb565b34801561071f57600080fd5b5061052461072e366004614542565b611a1e565b34801561073f57600080fd5b5061041361074e366004614542565b611a64565b34801561075f57600080fd5b5061041361076e366004614a77565b611a7f565b34801561077f57600080fd5b5061041361078e366004614635565b611b62565b34801561079f57600080fd5b5061043e611c0d565b3480156107b457600080fd5b50610413611c21565b3480156107c957600080fd5b50610413611c27565b3480156107de57600080fd5b50610413611c2d565b3480156107f357600080fd5b50610413610802366004614a3b565b611c6b565b34801561081357600080fd5b50610413611ceb565b34801561082857600080fd5b50610598610837366004614a77565b611cf7565b34801561084857600080fd5b5061043e611d10565b34801561085d57600080fd5b5061043e611d1f565b34801561087257600080fd5b506104ad611d2e565b34801561088757600080fd5b50610413611d54565b34801561089c57600080fd5b50610480611d84565b3480156108b157600080fd5b5061043e611ddf565b3480156108c657600080fd5b506104136108d5366004614605565b611dee565b3480156108e657600080fd5b5061043e611e62565b3480156108fb57600080fd5b506104ad61090a366004614605565b611e71565b34801561091b57600080fd5b5061041361092a366004614a3b565b611e81565b34801561093b57600080fd5b50610413611e8c565b34801561095057600080fd5b506104ad61095f3660046149d2565b611e92565b34801561097057600080fd5b5061043e611f14565b34801561098557600080fd5b50610524610994366004614542565b611f23565b3480156109a557600080fd5b506104136109b4366004614635565b611f69565b3480156109c557600080fd5b506104136109d4366004614a3b565b611fb3565b3480156109e557600080fd5b50610413611fc6565b3480156109fa57600080fd5b50610524610a0936600461471a565b611fcc565b348015610a1a57600080fd5b50610524610a29366004614c66565b61219b565b348015610a3a57600080fd5b50610413610a4936600461457e565b6122a2565b348015610a5a57600080fd5b50610524610a69366004614a06565b6122cd565b348015610a7a57600080fd5b50610413610a89366004614542565b612372565b348015610a9a57600080fd5b50610524610aa9366004614678565b612384565b348015610aba57600080fd5b50610413610ac9366004614542565b612535565b348015610ada57600080fd5b50610413612550565b348015610aef57600080fd5b50610524610afe366004614542565b612556565b610598610b11366004614863565b612586565b348015610b2257600080fd5b5061043e612656565b348015610b3757600080fd5b50610413612665565b60008315610ce2576001600160a01b038216610b65576017546001600160a01b031691505b600060106000846001604051602001610b7f929190615540565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b81529294506001600160a01b039182169363e762319f936101009091049092169187918a91869163ca74a5d991610bf0918a910161573d565b60206040518083038186803b158015610c0857600080fd5b505afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c409190810190614a59565b60016040518663ffffffff1660e01b8152600401610c6295949392919061562e565b60206040518083038186803b158015610c7a57600080fd5b505afa158015610c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cb29190810190614a59565b9150610cc682610cc0611d54565b8661266a565b9350610cd491506126e39050565b821115610ce057600091505b505b9392505050565b6016546001600160a01b031681565b601c5460009081906001600160a01b031615610d9357601c54604051636822955360e11b81526001600160a01b039091169063d0452aa690610d4090309087906004016155d0565b60206040518083038186803b158015610d5857600080fd5b505afa158015610d6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d909190810190614a59565b90505b610ddb670de0b6b3a7640000610dcf610daa611c2d565b610dc385610db789611a64565b9063ffffffff61271916565b9063ffffffff61273e16565b9063ffffffff61277816565b9150505b919050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610e675780601f10610e3c57610100808354040283529160200191610e67565b820191906000526020600020905b815481529060010190602001808311610e4a57829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ec890869061573d565b60405180910390a35060015b92915050565b6000610ee96104ea60006127ba565b90505b90565b600080610efa610f6f565b90508015610f1457610f0c8184611a7f565b915050610ddf565b50919050565b60155490565b6000610f2e8686868661190d565b5091505081811015610f5b5760405162461bcd60e51b8152600401610f52906157cd565b60405180910390fd5b505050505050565b600e5481565b60055481565b6016546004805460405163250f447f60e11b81526000936001600160a01b0390811693634a1e88fe93610fae93309361010090920490911691016155d0565b60206040518083038186803b158015610fc657600080fd5b505afa158015610fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ee99190810190614a59565b60165460405163115dd4b160e01b81526000916110bf918691869186916001600160a01b03169063115dd4b1906110399033906004016155c2565b60206040518083038186803b15801561105157600080fd5b505afa158015611065573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611089919081019061477e565b6110b6576001600160a01b03881660009081526014602090815260408083203384529091529020546110ba565b6000195b6127f4565b949350505050565b6000806001600054146110ec5760405162461bcd60e51b8152600401610f529061596d565b60026000556110f96129c7565b6111068989898988610f20565b6001600160a01b038616611123576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156111565760405162461bcd60e51b8152600401610f529061587d565b89158061116b5750336001600160a01b038616145b6111875760405162461bcd60e51b8152600401610f529061598d565b6001600160a01b038616600090815260126020526040902054156111ca576001600160a01b0386166000908152601260205260409020548711156111ca57600080fd5b60045461010090046001600160a01b03166000908152601260205260409020541561121b5760045461010090046001600160a01b031660009081526012602052604090205488111561121b57600080fd5b600061122887898b612a47565b9050806112475760405162461bcd60e51b8152600401610f52906158ad565b61124f614249565b611257614267565b3082526001600160a01b038816602080840182905260408401919091528101839052606081018b9052608081018a905261128f612c74565b6112a08c8260016020020151612d1a565b825260208201526112c16f4b3b4ca85a86c47a098a2240000000008d612778565b9b506112d38d60008e8c86868c612d69565b6001600055909e909d509b505050505050505050505050565b6112f4611d2e565b6113105760405162461bcd60e51b8152600401610f529061590d565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806001600054146113575760405162461bcd60e51b8152600401610f529061596d565b6002600055886113795760405162461bcd60e51b8152600401610f529061599d565b6113816129c7565b6001600160a01b038616600090815260126020526040902054156113c4576001600160a01b0386166000908152601260205260409020548711156113c457600080fd5b3415806113d057508634145b80156113e45750861515806113e457508915155b801561140b57506001600160a01b03861615158061140157503415155b8061140b57508915155b801561142757508915806114275750336001600160a01b038616145b6114435760405162461bcd60e51b8152600401610f529061583d565b6001600160a01b038616611460576017546001600160a01b031695505b6004546001600160a01b038781166101009092041614156114935760405162461bcd60e51b8152600401610f52906157dd565b61149b612c74565b6114a3614249565b6114ab614267565b3082526001600160a01b03878116602080850191909152908716604084015281018b90526114e38b6114dd60006127ba565b8c61266a565b8360006020020184600260200201856001602002019290925291905252888160046020020181815250506115fa8c8c601660009054906101000a90046001600160a01b03166001600160a01b031663ca74a5d9601060008e600160405160200161154e929190615540565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020546040518263ffffffff1660e01b8152600401611592919061573d565b60206040518083038186803b1580156115aa57600080fd5b505afa1580156115be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115e29190810190614a59565b8b868660405180602001604052806000815250612d69565b6001600055909d909c509a5050505050505050505050565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b60006001600054146116665760405162461bcd60e51b8152600401610f529061596d565b60026000556116758383612fc8565b90505b600160005592915050565b6000610ee9611690610f6f565b6130d4565b600080827f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb660001b6040516020016116ce929190615566565b604051602081830303815290604052805190602001209050610ddb8160136000866001600160a01b03166001600160a01b0316815260200190815260200160002054611718611c2d565b6001600160a01b03871660009081526011602052604090205461310c565b600a5481565b60008061174960006127ba565b90506000611755610f6f565b9050808211156117685790039050610eec565b505090565b60008315610ce257600061178385610cc0611d54565b9250505061178f6126e3565b8111610ce0576001600160a01b0383166117b2576017546001600160a01b031692505b6000601060008560016040516020016117cc929190615540565b60408051601f19818403018152918152815160209283012083529082019290925281016000205460165460048054935163ca74a5d960e01b815292945061190493600a936001600160a01b03938416936325decac09361010090930416918a918991869163ca74a5d991611842918c910161573d565b60206040518083038186803b15801561185a57600080fd5b505afa15801561186e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118929190810190614a59565b60016040518663ffffffff1660e01b81526004016118b495949392919061562e565b60206040518083038186803b1580156118cc57600080fd5b505afa1580156118e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610db79190810190614a59565b92505050610ce2565b600080806001600160a01b03841661192e576017546001600160a01b031693505b600061193b858789612a47565b90506119478882612d1a565b90945091506119546126e3565b84111561196b575060009250829150819050611a14565b61197b878563ffffffff61271916565b6016546004805460405163d67f707760e01b8152939a506001600160a01b039283169363d67f7077936119c09361010090930416918a918d918d918a918d9101615670565b60206040518083038186803b1580156119d857600080fd5b505afa1580156119ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a109190810190614a59565b9250505b9450945094915050565b611a26611d2e565b611a425760405162461bcd60e51b8152600401610f529061590d565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60008215801590611a905750828210155b15610ed457611b5b701d6329f1c35ca4bfabb9f5610000000000610dcf611b4568056bc75e2d63100000601660009054906101000a90046001600160a01b03166001600160a01b0316634699f8466040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b409190810190614a59565b613166565b610dc3611b5288886131a8565b610dc3896130d4565b9050610ed4565b6000600160005414611b865760405162461bcd60e51b8152600401610f529061596d565b60026000558115611ba157611b9a836131da565b9050611bad565b611baa83613380565b90505b8015611c0157611c01600460019054906101000a90046001600160a01b0316858360405180604001604052806015815260200174185cdcd95d081d1c985b9cd9995c8819985a5b1959605a1b815250613537565b60016000559392505050565b60045461010090046001600160a01b031681565b600d5481565b60085481565b600f546000908190426001600160581b03908116911614611c5457611c50613597565b9150505b611c65611c60826127ba565b613663565b91505090565b600080611c8a61016d610dcf601c600b5461273e90919063ffffffff16565b90506000611ca768056bc75e2d631000008363ffffffff61316616565b90506000611cc468056bc75e2d63100000610dcf84610dc361173c565b9050611ce285610dcf83670de0b6b3a764000063ffffffff61273e16565b95945050505050565b6000610ee96000613692565b600080611d048484612d1a565b915091505b9250929050565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316611d456136e8565b6001600160a01b031614905090565b600f546000908190426001600160581b03908116911614611d7b57611d77613597565b9150505b611c65816127ba565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e675780601f10610e3c57610100808354040283529160200191610e67565b6018546001600160a01b031681565b6000600160005414611e125760405162461bcd60e51b8152600401610f529061596d565b6002600055611e2082613380565b9050801561167857611678600460019054906101000a90046001600160a01b03168483604051806040016040528060018152602001603560f81b815250613537565b601b546001600160a01b031681565b6000610ce23384846000196127f4565b6000610ed482613692565b60095481565b60008082604051602001611ea691906155a8565b6040516020818303038152906040528051906020012090506000817fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001611ef392919061558c565b60408051808303601f19018152919052805160209091012054949350505050565b601a546001600160a01b031681565b611f2b611d2e565b611f475760405162461bcd60e51b8152600401610f529061590d565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000600160005414611f8d5760405162461bcd60e51b8152600401610f529061596d565b60026000558115611fa957611fa284846136ec565b9050611c01565b611fa28484612fc8565b6000610ed46104ea83610db760006127ba565b60075481565b611fd4611d2e565b80611fe957506019546001600160a01b031633145b6120055760405162461bcd60e51b8152600401610f529061590d565b60045460609061010090046001600160a01b031660005b845181101561208f578185828151811061203257fe5b6020026020010151606001906001600160a01b031690816001600160a01b03168152505083612064576224ea00612067565b60005b62ffffff1685828151811061207857fe5b602090810291909101015160e0015260010161201c565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e906120c090879060040161571e565b600060405180830381600087803b1580156120da57600080fd5b505af11580156120ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211691908101906146e6565b915060005b82518110156121945782818151811061213057fe5b60200260200101516010600087848151811061214857fe5b60200260200101516080015187604051602001612166929190615540565b60408051601f198184030181529181528151602092830120835290820192909252016000205560010161211b565b5050505050565b6121a3611d2e565b806121b857506019546001600160a01b031633145b6121d45760405162461bcd60e51b8152600401610f529061590d565b68056bc75e2d631000006121ee878963ffffffff61271916565b111561220c5760405162461bcd60e51b8152600401610f529061589d565b68056bc75e2d63100000612226858763ffffffff61271916565b11156122445760405162461bcd60e51b8152600401610f529061589d565b68056bc75e2d631000008311158015612266575068056bc75e2d631000008211155b6122825760405162461bcd60e51b8152600401610f52906158cd565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b031633146122f75760405162461bcd60e51b8152600401610f529061595d565b60008260405160200161230a91906155a8565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f260405160200161235292919061558c565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b61238c611d2e565b806123a157506019546001600160a01b031633145b6123bd5760405162461bcd60e51b8152600401610f529061590d565b8281146123dc5760405162461bcd60e51b8152600401610f529061582d565b604080518481526020808602820101909152606090848015612408578160200160208202803883390190505b50905060005b848110156124cb57600086868381811061242457fe5b90506020020160206124399190810190614542565b85858481811061244557fe5b905060200201602061245a9190810190614760565b60405160200161246b929190615540565b6040516020818303038152906040528051906020012060001c905060106000828152602001908152602001600020548383815181106124a657fe5b602090810291909101810191909152600091825260109052604081205560010161240e565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a906124fc90849060040161570d565b600060405180830381600087803b15801561251657600080fd5b505af115801561252a573d6000803e3d6000fd5b505050505050505050565b6001600160a01b031660009081526011602052604090205490565b600b5481565b61255e611d2e565b61257a5760405162461bcd60e51b8152600401610f529061590d565b61258381613775565b50565b6000806001600160a01b038516156125fd5760165460405163193bbe8960e31b81526001600160a01b039091169063c9ddf448906125ca908a9089906004016155d0565b600060405180830381600087803b1580156125e457600080fd5b505af11580156125f8573d6000803e3d6000fd5b505050505b6126438c8c8c8c8c8c8c8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110c792505050565b915091509a509a98505050505050505050565b6019546001600160a01b031681565b600681565b600080600061267986866137f7565b92506126c66126ae670de0b6b3a7640000611b406b0a3098c68eb9427db8000000610dcf83610dc38a8c63ffffffff61273e16565b610dcf88670de0b6b3a764000063ffffffff61273e16565b90506126d8818763ffffffff61316616565b915093509350939050565b600480546040516370a0823160e01b81526000926101009092046001600160a01b0316916370a0823191610fae913091016155b4565b600082820183811015610ce25760405162461bcd60e51b8152600401610f529061580d565b60008261274d57506000610ed4565b8282028284828161275a57fe5b0414610ce25760405162461bcd60e51b8152600401610f52906158fd565b6000610ce283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061390d565b6000601554600014610ddf57600c54806127e4576127e16127d9610f6f565b610db76126e3565b90505b610f0c818463ffffffff61271916565b60006000198214612850576040805180820190915260028152610c4d60f21b602082015261282b908390859063ffffffff61394416565b6001600160a01b03861660009081526014602090815260408083203384529091529020555b6001600160a01b0384166128765760405162461bcd60e51b8152600401610f52906157ed565b6001600160a01b03851660009081526013602090815260408083205481518083019092526002825261189b60f11b928201929092529091906128c1908390879063ffffffff61394416565b6001600160a01b038089166000908152601360205260408082208490559189168152908120549192506128fa828863ffffffff61271916565b6001600160a01b0389166000908152601360205260408120829055909150612920611c2d565b601c549091506001600160a01b038b811691161480159061294f5750601c546001600160a01b038a8116911614155b1561296c576129608a868684613970565b61296c89848484613970565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a6040516129af919061573d565b60405180910390a35060019998505050505050505050565b600080356001600160e01b0319167fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001612a0792919061558c565b6040516020818303038152906040528051906020012090506000815490508015612a435760405162461bcd60e51b8152600401610f529061590d565b5050565b808215610ce257600080601660009054906101000a90046001600160a01b03166001600160a01b03166378d849ed6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a9f57600080fd5b505afa158015612ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ad79190810190614560565b60048054604051630a7549df60e21b81526001600160a01b03938416936329d5277c93612b10938c9361010090910490921691016155d0565b604080518083038186803b158015612b2757600080fd5b505afa158015612b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b5f9190810190614a96565b9150915081600014158015612b7357508015155b612b8f5760405162461bcd60e51b8152600401610f529061594d565b6000612ba582610dcf888663ffffffff61273e16565b60165460048054604051631a51577760e21b81529394506000936001600160a01b03938416936369455ddc93612be8936101009004909116918d91889101615606565b60206040518083038186803b158015612c0057600080fd5b505afa158015612c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c389190810190614a59565b9050868114612c5857612c5587610dcf848463ffffffff61273e16565b91505b612c68828663ffffffff61271916565b98975050505050505050565b600f5442906001600160581b038083169116146125835760165460048054604051630740ff7d60e51b81526001600160a01b039384169363e81fefa093612cc493610100900490911691016155b4565b600060405180830381600087803b158015612cde57600080fd5b505af1158015612cf2573d6000803e3d6000fd5b5050600f80546001600160581b0385166affffffffffffffffffffff19909116179055505050565b60008080612d3a670de0b6b3a7640000610dcf868863ffffffff61273e16565b9050612d4f81612d4a60006127ba565b6137f7565b9150612d5f826224ea0083613a26565b9250509250929050565b600080612d746129c7565b612d7c6126e3565b602085015111801590612d9b575060208501516001600160a01b031615155b612db75760405162461bcd60e51b8152600401610f529061586d565b60408501516001600160a01b0316612ddd5760208501516001600160a01b031660408601525b6000612deb8787878c613a87565b60208601516060870151919250612e029190612719565b60608601528815612e22576060850151612e1c908a613166565b60608601525b60008915612e2e575060015b6000601060008a84604051602001612e47929190615540565b6040516020818303038152906040528051906020012060001c8152602001908152602001600020549050601660009054906101000a90046001600160a01b03166001600160a01b031663585314cf84838f868f8e8e8e6040518963ffffffff1660e01b8152600401612ebf979695949392919061574b565b60408051808303818588803b158015612ed757600080fd5b505af1158015612eeb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250612f109190810190614a96565b608089015260208801819052612f385760405162461bcd60e51b8152600401610f52906158bd565b601654602089015160405163f06a9c6b60e01b81526001600160a01b039092169163f06a9c6b91612f6b916004016155b4565b600060405180830381600087803b158015612f8557600080fd5b505af1158015612f99573d6000803e3d6000fd5b5050505086600160058110612faa57fe5b6020020151608090970151969c969b50959950505050505050505050565b600080612fd483613cbc565b601c5491935091506000906001600160a01b03161561307257601c54604051636822955360e11b81526001600160a01b039091169063d0452aa69061301f90309089906004016155d0565b60206040518083038186803b15801561303757600080fd5b505afa15801561304b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061306f9190810190614a59565b90505b6001600160a01b03851660009081526013602052604081205461309b908363ffffffff61271916565b905060006130af828663ffffffff61271916565b90506130bd87868887613dc6565b506130ca87838387613970565b5050505092915050565b60008115610ddf5760006130e6613597565b509050610f0c83610dcf61016d610dc38568056bc75e2d6310000063ffffffff61273e16565b60008161311b575060006110bf565b508354611ce28161315a670de0b6b3a764000061314e88613142898963ffffffff613ee716565b9063ffffffff613f2d16565b9063ffffffff613f9816565b9063ffffffff613ffc16565b6000610ce283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613944565b600082158015906131b857508115155b15610ed457611b5b82610dcf8568056bc75e2d6310000063ffffffff61273e16565b601c54604051636822955360e11b815260009182916001600160a01b039091169063d0452aa69061321190309033906004016155eb565b60206040518083038186803b15801561322957600080fd5b505afa15801561323d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506132619190810190614a59565b90508261327d61327033611a64565b839063ffffffff61271916565b101561329b5760405162461bcd60e51b8152600401610f529061584d565b801561337b578281101561331457601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec906132dd903090859033906004016156e5565b600060405180830381600087803b1580156132f757600080fd5b505af115801561330b573d6000803e3d6000fd5b5050505061337b565b601c54604051631a4ca37b60e21b81526001600160a01b03909116906369328dec90613348903090879033906004016156e5565b600060405180830381600087803b15801561336257600080fd5b505af1158015613376573d6000803e3d6000fd5b505050505b610ddb835b60008161339f5760405162461bcd60e51b8152600401610f529061591d565b6133a833611a64565b8211156133dc5760001982146133d05760405162461bcd60e51b8152600401610f52906158dd565b6133d933611a64565b91505b6133e4612c74565b60006133f3611c6060006127ba565b90506000613413670de0b6b3a7640000610dcf868563ffffffff61273e16565b9050600061341f6126e3565b9050819350808411156134445760405162461bcd60e51b8152600401610f529061585d565b601c546000906001600160a01b0316156134dd57601c54604051636822955360e11b81526001600160a01b039091169063d0452aa69061348a90309033906004016155eb565b60206040518083038186803b1580156134a257600080fd5b505afa1580156134b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134da9190810190614a59565b90505b336000908152601360205260408120546134fd908363ffffffff61271916565b90506000613511828963ffffffff61316616565b905061351f33898989614042565b5061352c33838389613970565b505050505050919050565b60405161359190859063a9059cbb60e01b9061355990879087906024016156ca565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915283614167565b50505050565b60165460048054604051630d1979fb60e41b8152600093849384936001600160a01b039283169363d1979fb0936135d9933093610100900490911691016155d0565b60c06040518083038186803b1580156135f157600080fd5b505afa158015613605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136299190810190614bdf565b509196509450925061365c915068056bc75e2d631000009050610dcf61364f8285613166565b859063ffffffff61273e16565b9150509091565b6015546000908061367657600e54610ddb565b610ddb81610dcf85670de0b6b3a764000063ffffffff61273e16565b60008082156136db57600f54426001600160581b039081169116146136bd576136b9613597565b9150505b60006136cb82610db76126e3565b9050808411156136d9578093505b505b610ddb83612d4a836127ba565b3390565b60006136f88383612fc8565b601c549091506137149084906001600160a01b031683806127f4565b50601c546040516336305cf160e21b81526001600160a01b039091169063d8c173c49061374790869085906004016156ca565b600060405180830381600087803b15801561376157600080fd5b505af11580156130ca573d6000803e3d6000fd5b6001600160a01b03811661379b5760405162461bcd60e51b8152600401610f52906157fd565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008061380f61380985610db7610f6f565b846131a8565b600554600654600954600a54600b5494955060009485949392919082881015613836578297505b818811156138a957968190039668056bc75e2d631000008290038089111561385c578098505b61387d68056bc75e2d63100000610dcf85610dc3898b63ffffffff61271916565b96506138a187610db783610dcf613894878d613166565b8e9063ffffffff61273e16565b9950506138ff565b6138ca85610db768056bc75e2d63100000610dcf8c8963ffffffff61273e16565b985093955085936138e1848663ffffffff61271916565b9550868910156138f3578698506138ff565b858911156138ff578598505b505050505050505092915050565b6000818361392e5760405162461bcd60e51b8152600401610f5291906157bc565b50600083858161393a57fe5b0495945050505050565b600081848411156139685760405162461bcd60e51b8152600401610f5291906157bc565b505050900390565b6040516000906139a69086907f37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb690602001615566565b604051602081830303815290604052805190602001209050600083600014156139d25760009250613a03565b8415613a03576001600160a01b038616600090815260116020526040902054613a009083908790869061310c565b90505b90556001600160a01b039093166000908152601160205260409020929092555050565b600080613a416301e13380610dcf878763ffffffff61273e16565b90506000613a5e68056bc75e2d631000008363ffffffff61316616565b9050613a7d81610dcf8668056bc75e2d6310000063ffffffff61273e16565b9695505050505050565b60175460045460408501516020850151606086015160808701516000956001600160a01b03908116956101009004811694939291908b16851415613add5760405162461bcd60e51b8152600401610f529061592d565b3496508715613b3b57613b0185858a60405180602001604052806000815250613537565b87831115613b3657601654604080516020810190915260008152613b369187916001600160a01b03909116908b870390613537565b613b70565b601654604080518082019091526002815261323760f01b6020820152613b709187916001600160a01b03909116908690613537565b8015613c7357856001600160a01b03168b6001600160a01b0316148015613b9657508615155b8015613ba25750808710155b15613c3c57856001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613be257600080fd5b505af1158015613bf6573d6000803e3d6000fd5b505060165460408051808201909152600481526332382d6160e01b6020820152613c3294508f93506001600160a01b0390911691508490613537565b8087039650613c73565b601654604080518082019091526004815263191c16b160e11b6020820152613c73918d9133916001600160a01b0316908590614225565b8115613cae57601654604080518082019091526002815261323960f01b6020820152613cae91879133916001600160a01b0316908690614225565b505050505050949350505050565b60008082613cdc5760405162461bcd60e51b8152600401610f52906158ed565b613ce4612c74565b613cf1611c6060006127ba565b9050613d0f81610dcf85670de0b6b3a764000063ffffffff61273e16565b915034613d5757613d52600460019054906101000a90046001600160a01b031633308660405180604001604052806002815260200161062760f31b815250614225565b613dc1565b601760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613da757600080fd5b505af1158015613dbb573d6000803e3d6000fd5b50505050505b915091565b60006001600160a01b038516613dee5760405162461bcd60e51b8152600401610f52906157ed565b6001600160a01b038516600090815260136020526040812054613e17908663ffffffff61271916565b6001600160a01b0387166000908152601360205260409020819055601554909150613e48908663ffffffff61271916565b6015556040516001600160a01b038716907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb90613e8a908890889088906159cb565b60405180910390a2856001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613ed6919061573d565b60405180910390a395945050505050565b6000818303818312801590613efc5750838113155b80613f115750600083128015613f1157508381135b610ce25760405162461bcd60e51b8152600401610f529061597d565b600082613f3c57506000610ed4565b82600019148015613f505750600160ff1b82145b15613f6d5760405162461bcd60e51b8152600401610f529061593d565b82820282848281613f7a57fe5b0514610ce25760405162461bcd60e51b8152600401610f529061593d565b600081613fb75760405162461bcd60e51b8152600401610f52906159ad565b81600019148015613fcb5750600160ff1b83145b15613fe85760405162461bcd60e51b8152600401610f529061588d565b6000828481613ff357fe5b05949350505050565b60008282018183128015906140115750838112155b80614026575060008312801561402657508381125b610ce25760405162461bcd60e51b8152600401610f529061581d565b6040805180820182526002815261189b60f11b6020808301919091526001600160a01b0387166000908152601390915291822054829161408a9190879063ffffffff61394416565b9050600a81116140ab576140a4858263ffffffff61271916565b9450600090505b6001600160a01b03861660009081526013602052604090208190556015546140d9908663ffffffff61316616565b6015556040516001600160a01b038716907f743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b46449061411b908890889088906159cb565b60405180910390a260006001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613ed6919061573d565b60006060846001600160a01b03168460405161418391906155a8565b6000604051808303816000865af19150503d80600081146141c0576040519150601f19603f3d011682016040523d82523d6000602084013e6141c5565b606091505b50915091508183906141ea5760405162461bcd60e51b8152600401610f5291906157bc565b508051156121945780806020019051614206919081019061477e565b8390610f5b5760405162461bcd60e51b8152600401610f5291906157bc565b6040516121949086906323b872dd60e01b9061355990889088908890602401615606565b60405180608001604052806004906020820280388339509192915050565b6040518060a001604052806005906020820280388339509192915050565b8035610ed481615b3a565b8051610ed481615b3a565b60008083601f8401126142ad57600080fd5b5081356001600160401b038111156142c457600080fd5b602083019150836020820283011115611d0957600080fd5b600082601f8301126142ed57600080fd5b81516143006142fb82615a1a565b6159f4565b9150818183526020840193506020810190508385602084028201111561432557600080fd5b60005b838110156130ca578161433b88826143e6565b8452506020928301929190910190600101614328565b600082601f83011261436257600080fd5b81356143706142fb82615a1a565b915081818352602084019350602081019050838561010084028201111561439657600080fd5b60005b838110156130ca57816143ac8882614481565b8452506020909201916101009190910190600101614399565b8035610ed481615b4e565b8051610ed481615b4e565b8035610ed481615b57565b8051610ed481615b57565b60008083601f84011261440357600080fd5b5081356001600160401b0381111561441a57600080fd5b602083019150836001820283011115611d0957600080fd5b600082601f83011261444357600080fd5b81356144516142fb82615a3a565b9150808252602083016020830185838301111561446d57600080fd5b614478838284615ac0565b50505092915050565b6000610100828403121561449457600080fd5b61449f6101006159f4565b905060006144ad84846143db565b82525060206144be848483016143c5565b60208301525060406144d284828501614285565b60408301525060606144e684828501614285565b60608301525060806144fa84828501614285565b60808301525060a061450e848285016143db565b60a08301525060c0614522848285016143db565b60c08301525060e0614536848285016143db565b60e08301525092915050565b60006020828403121561455457600080fd5b60006110bf8484614285565b60006020828403121561457257600080fd5b60006110bf8484614290565b6000806040838503121561459157600080fd5b600061459d8585614285565b92505060206145ae85828601614285565b9150509250929050565b6000806000606084860312156145cd57600080fd5b60006145d98686614285565b93505060206145ea86828701614285565b92505060406145fb868287016143db565b9150509250925092565b6000806040838503121561461857600080fd5b60006146248585614285565b92505060206145ae858286016143db565b60008060006060848603121561464a57600080fd5b60006146568686614285565b9350506020614667868287016143db565b92505060406145fb868287016143c5565b6000806000806040858703121561468e57600080fd5b84356001600160401b038111156146a457600080fd5b6146b08782880161429b565b945094505060208501356001600160401b038111156146ce57600080fd5b6146da8782880161429b565b95989497509550505050565b6000602082840312156146f857600080fd5b81516001600160401b0381111561470e57600080fd5b6110bf848285016142dc565b6000806040838503121561472d57600080fd5b82356001600160401b0381111561474357600080fd5b61474f85828601614351565b92505060206145ae858286016143c5565b60006020828403121561477257600080fd5b60006110bf84846143c5565b60006020828403121561479057600080fd5b60006110bf84846143d0565b600080600080600080600080610100898b0312156147b957600080fd5b60006147c58b8b6143db565b98505060206147d68b828c016143db565b97505060406147e78b828c016143db565b96505060606147f88b828c016143db565b95505060806148098b828c01614285565b94505060a061481a8b828c01614285565b93505060c061482b8b828c01614285565b92505060e08901356001600160401b0381111561484757600080fd5b6148538b828c01614432565b9150509295985092959890939650565b6000806000806000806000806000806101208b8d03121561488357600080fd5b600061488f8d8d6143db565b9a505060206148a08d828e016143db565b99505060406148b18d828e016143db565b98505060606148c28d828e016143db565b97505060806148d38d828e01614285565b96505060a06148e48d828e01614285565b95505060c06148f58d828e016143db565b94505060e06149068d828e01614285565b9350506101008b01356001600160401b0381111561492357600080fd5b61492f8d828e016143f1565b92509250509295989b9194979a5092959850565b600080600080600080600080610100898b03121561496057600080fd5b600061496c8b8b6143db565b985050602061497d8b828c016143db565b975050604061498e8b828c016143db565b965050606061499f8b828c016143db565b95505060806149b08b828c01614285565b94505060a06149c18b828c01614285565b93505060c061482b8b828c016143db565b6000602082840312156149e457600080fd5b81356001600160401b038111156149fa57600080fd5b6110bf84828501614432565b60008060408385031215614a1957600080fd5b82356001600160401b03811115614a2f57600080fd5b61474f85828601614432565b600060208284031215614a4d57600080fd5b60006110bf84846143db565b600060208284031215614a6b57600080fd5b60006110bf84846143e6565b60008060408385031215614a8a57600080fd5b600061462485856143db565b60008060408385031215614aa957600080fd5b6000614ab585856143e6565b92505060206145ae858286016143e6565b600080600060608486031215614adb57600080fd5b6000614ae786866143db565b9350506020614af8868287016143db565b92505060406145fb86828701614285565b60008060008060808587031215614b1f57600080fd5b6000614b2b87876143db565b9450506020614b3c878288016143db565b9350506040614b4d878288016143db565b9250506060614b5e87828801614285565b91505092959194509250565b600080600080600060a08688031215614b8257600080fd5b6000614b8e88886143db565b9550506020614b9f888289016143db565b9450506040614bb0888289016143db565b9350506060614bc188828901614285565b9250506080614bd2888289016143db565b9150509295509295909350565b60008060008060008060c08789031215614bf857600080fd5b6000614c0489896143e6565b9650506020614c1589828a016143e6565b9550506040614c2689828a016143e6565b9450506060614c3789828a016143e6565b9350506080614c4889828a016143e6565b92505060a0614c5989828a016143e6565b9150509295509295509295565b600080600080600080600060e0888a031215614c8157600080fd5b6000614c8d8a8a6143db565b9750506020614c9e8a828b016143db565b9650506040614caf8a828b016143db565b9550506060614cc08a828b016143db565b9450506080614cd18a828b016143db565b93505060a0614ce28a828b016143db565b92505060c0614cf38a828b016143db565b91505092959891949750929550565b6000614d0e8383614d46565b505060200190565b6000614d0e8383614eb9565b6000614d2e83836154a0565b50506101000190565b614d4081615aaf565b82525050565b614d4081615a80565b614d40614d5b82615a80565b615af8565b614d6981615a67565b614d738184610ddf565b9250614d7e82610eec565b8060005b83811015610f5b578151614d968782614d02565b9650614da183615a61565b925050600101614d82565b6000614db782615a6d565b614dc18185615a77565b9350614dcc83615a61565b8060005b83811015614dfa578151614de48882614d16565b9750614def83615a61565b925050600101614dd0565b509495945050505050565b6000614e1082615a6d565b614e1a8185615a77565b9350614e2583615a61565b8060005b83811015614dfa578151614e3d8882614d22565b9750614e4883615a61565b925050600101614e29565b614e5c81615a71565b614e668184610ddf565b9250614e7182610eec565b8060005b83811015610f5b578151614e898782614d16565b9650614e9483615a61565b925050600101614e75565b614d4081615a8b565b614d40614eb482615a8b565b615b03565b614d4081610eec565b614d40614ece82610eec565b610eec565b614d40614ece82615a90565b6000614eea82615a6d565b614ef48185615a77565b9350614f04818560208601615acc565b614f0d81615b24565b9093019392505050565b6000614f2282615a6d565b614f2c8185610ddf565b9350614f3c818560208601615acc565b9290920192915050565b6000614f53600c83615a77565b6b636f6c6c20746f6f206c6f7760a01b815260200192915050565b6000614f7b600283615a77565b61031360f41b815260200192915050565b6000614f99600283615a77565b61313560f01b815260200192915050565b6000614fb7602683615a77565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000614fff601b83615a77565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000615038602183615a77565b7f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061507b600e83615a77565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b60006150a5600183615a77565b603760f81b815260200192915050565b60006150c2601283615a77565b716e6f7420656e6f7567682062616c616e636560701b815260200192915050565b60006150f0600283615a77565b61333760f01b815260200192915050565b600061510e600283615a77565b610c8d60f21b815260200192915050565b600061512c600283615a77565b61313160f01b815260200192915050565b600061514a602183615a77565b7f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061518d601583615a77565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b60006151be600283615a77565b61189960f11b815260200192915050565b60006151dc600283615a77565b61323560f01b815260200192915050565b60006151fa600f83615a77565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b6000615225600283615a77565b61199960f11b815260200192915050565b6000615243600283615a77565b61313760f01b815260200192915050565b6000615261602183615a77565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b60006152a4600c83615a77565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006152cc600283615a77565b61313960f01b815260200192915050565b60006152ea600283615a77565b61191b60f11b815260200192915050565b6000615308602783615a77565b7f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f815266766572666c6f7760c81b602082015260400192915050565b6000615351601d83615a77565b7f696e76616c6964207261746520636f6c6c61746572616c20746f6b656e000000815260200192915050565b600061538a600a83615a77565b6937b7363ca830bab9b2b960b11b815260200192915050565b60006153b0600c83615a77565b6b1b9bdb9499595b9d1c985b9d60a21b815260200192915050565b60006153d8602483615a77565b7f5369676e6564536166654d6174683a207375627472616374696f6e206f766572815263666c6f7760e01b602082015260400192915050565b600061541e601883615a77565b7f34303120757365206f66206578697374696e67206c6f616e0000000000000000815260200192915050565b6000615457600183615a77565b601b60f91b815260200192915050565b6000615474602083615a77565b7f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f815260200192915050565b80516101008301906154b28482614eb9565b5060208201516154c56020850182614e9f565b5060408201516154d86040850182614d46565b5060608201516154eb6060850182614d46565b5060808201516154fe6080850182614d46565b5060a082015161551160a0850182614eb9565b5060c082015161552460c0850182614eb9565b5060e082015161359160e0850182614eb9565b614d4081615aa9565b600061554c8285614d4f565b60148201915061555c8284614ea8565b5060010192915050565b60006155728285614d4f565b6014820191506155828284614ec2565b5060200192915050565b60006155988285614ed3565b6004820191506155828284614ec2565b6000610ce28284614f17565b60208101610ed48284614d46565b60208101610ed48284614d37565b604081016155de8285614d46565b610ce26020830184614d46565b604081016155f98285614d46565b610ce26020830184614d37565b606081016156148286614d46565b6156216020830185614d46565b6110bf6040830184614eb9565b60a0810161563c8288614d46565b6156496020830187614d46565b6156566040830186614eb9565b6156636060830185614eb9565b613a7d6080830184614e9f565b60c0810161567e8289614d46565b61568b6020830188614d46565b6156986040830187614eb9565b6156a56060830186614eb9565b6156b26080830185614eb9565b6156bf60a0830184614eb9565b979650505050505050565b604081016156d88285614d46565b610ce26020830184614eb9565b606081016156f38286614d46565b6157006020830185614eb9565b6110bf6040830184614d37565b60208082528101610ce28184614dac565b60208082528101610ce28184614e05565b60208101610ed48284614e9f565b60208101610ed48284614eb9565b6101c0810161575a828a614eb9565b6157676020830189614eb9565b6157746040830188614e9f565b6157816060830187614eb9565b61578e6080830186614d60565b61579c610100830185614e53565b8181036101a08301526157af8184614edf565b9998505050505050505050565b60208082528101610ce28184614edf565b60208082528101610ed481614f46565b60208082528101610ed481614f6e565b60208082528101610ed481614f8c565b60208082528101610ed481614faa565b60208082528101610ed481614ff2565b60208082528101610ed48161502b565b60208082528101610ed48161506e565b60208082528101610ed481615098565b60208082528101610ed4816150b5565b60208082528101610ed4816150e3565b60208082528101610ed481615101565b60208082528101610ed48161511f565b60208082528101610ed48161513d565b60208082528101610ed481615180565b60208082528101610ed4816151b1565b60208082528101610ed4816151cf565b60208082528101610ed4816151ed565b60208082528101610ed481615218565b60208082528101610ed481615236565b60208082528101610ed481615254565b60208082528101610ed481615297565b60208082528101610ed4816152bf565b60208082528101610ed4816152dd565b60208082528101610ed4816152fb565b60208082528101610ed481615344565b60208082528101610ed48161537d565b60208082528101610ed4816153a3565b60208082528101610ed4816153cb565b60208082528101610ed481615411565b60208082528101610ed48161544a565b60208082528101610ed481615467565b604081016156d88285614eb9565b606081016159d98286614eb9565b6156216020830185614eb9565b60208101610ed48284615537565b6040518181016001600160401b0381118282101715615a1257600080fd5b604052919050565b60006001600160401b03821115615a3057600080fd5b5060209081020190565b60006001600160401b03821115615a5057600080fd5b506020601f91909101601f19160190565b60200190565b50600490565b5190565b50600590565b90815260200190565b6000610ed482615a9d565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b6000610ed4826000610ed482615a80565b82818337506000910152565b60005b83811015615ae7578181015183820152602001615acf565b838111156135915750506000910152565b6000610ed482615b0e565b6000610ed482615b19565b6000610ed482615b34565b6000610ed482615b2e565b601f01601f191690565b60f81b90565b60601b90565b615b4381615a80565b811461258357600080fd5b615b4381615a8b565b615b4381610eec56fea365627a7a72315820b1119067289ba830ac5e34407071c22d97663395cb09deb2a30fb0a7c9bf9bd86c6578706572696d656e74616cf564736f6c63430005110040",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3E4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E37C08C GT PUSH2 0x208 JUMPI DUP1 PUSH4 0xCA37E666 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0xE3CDED61 GT PUSH2 0xAB JUMPI DUP1 PUSH4 0xEF2B0B39 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xEF2B0B39 EQ PUSH2 0xACE JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xAE3 JUMPI DUP1 PUSH4 0xF6B69F99 EQ PUSH2 0xB03 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xB16 JUMPI DUP1 PUSH4 0xFFA1AD74 EQ PUSH2 0xB2B JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0xE3CDED61 EQ PUSH2 0xA4E JUMPI DUP1 PUSH4 0xE41B07E3 EQ PUSH2 0xA6E JUMPI DUP1 PUSH4 0xE697D2EE EQ PUSH2 0xA8E JUMPI DUP1 PUSH4 0xEEBC5081 EQ PUSH2 0xAAE JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0xD759DBEB GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0xD759DBEB EQ PUSH2 0x9D9 JUMPI DUP1 PUSH4 0xD8F06C83 EQ PUSH2 0x9EE JUMPI DUP1 PUSH4 0xD97206A4 EQ PUSH2 0xA0E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xA2E JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0xCA37E666 EQ PUSH2 0x964 JUMPI DUP1 PUSH4 0xCB926CB3 EQ PUSH2 0x979 JUMPI DUP1 PUSH4 0xD1A1BEB4 EQ PUSH2 0x999 JUMPI DUP1 PUSH4 0xD65A5021 EQ PUSH2 0x9B9 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x8FB807C5 GT PUSH2 0x19B JUMPI DUP1 PUSH4 0x9FD0506D GT PUSH2 0x16A JUMPI DUP1 PUSH4 0x9FD0506D EQ PUSH2 0x8DA JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x8EF JUMPI DUP1 PUSH4 0xB9FE1A8F EQ PUSH2 0x90F JUMPI DUP1 PUSH4 0xBA0E43BF EQ PUSH2 0x92F JUMPI DUP1 PUSH4 0xBE194217 EQ PUSH2 0x944 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x8FB807C5 EQ PUSH2 0x87B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x890 JUMPI DUP1 PUSH4 0x9BDA3A98 EQ PUSH2 0x8A5 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x8BA JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x8D875E3C GT PUSH2 0x1D7 JUMPI DUP1 PUSH4 0x8D875E3C EQ PUSH2 0x81C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x83C JUMPI DUP1 PUSH4 0x8EE6C4E6 EQ PUSH2 0x851 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x866 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x7E37C08C EQ PUSH2 0x7BD JUMPI DUP1 PUSH4 0x7FF9B596 EQ PUSH2 0x7D2 JUMPI DUP1 PUSH4 0x829B38F4 EQ PUSH2 0x7E7 JUMPI DUP1 PUSH4 0x8325A1C0 EQ PUSH2 0x807 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x2F6B600D GT PUSH2 0x303 JUMPI DUP1 PUSH4 0x612EF80B GT PUSH2 0x296 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x733 JUMPI DUP1 PUSH4 0x7288B344 EQ PUSH2 0x753 JUMPI DUP1 PUSH4 0x76FD4FDF EQ PUSH2 0x773 JUMPI DUP1 PUSH4 0x797BF385 EQ PUSH2 0x793 JUMPI DUP1 PUSH4 0x7B7933B4 EQ PUSH2 0x7A8 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x612EF80B EQ PUSH2 0x6AF JUMPI DUP1 PUSH4 0x631A3EF8 EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0x6B40CD40 EQ PUSH2 0x6E4 JUMPI DUP1 PUSH4 0x704B6C02 EQ PUSH2 0x713 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 GT PUSH2 0x2D2 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0x44A4A003 EQ PUSH2 0x665 JUMPI DUP1 PUSH4 0x54198CE9 EQ PUSH2 0x67A JUMPI DUP1 PUSH4 0x56E07D70 EQ PUSH2 0x69A JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x2F6B600D EQ PUSH2 0x5D9 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0x3291C11A EQ PUSH2 0x610 JUMPI DUP1 PUSH4 0x330691AC EQ PUSH2 0x630 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x18498B1D GT PUSH2 0x37B JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x34A JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0x28A02F19 EQ PUSH2 0x585 JUMPI DUP1 PUSH4 0x2D88AF4A EQ PUSH2 0x5A6 JUMPI DUP1 PUSH4 0x2EA295FA EQ PUSH2 0x5C6 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x18498B1D EQ PUSH2 0x504 JUMPI DUP1 PUSH4 0x1D0806AE EQ PUSH2 0x526 JUMPI DUP1 PUSH4 0x1F68F20A EQ PUSH2 0x53B JUMPI DUP1 PUSH4 0x20F6D07C EQ PUSH2 0x550 JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x3B7 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x9EC6B6B EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x12416898 EQ PUSH2 0x4CF JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x4EF JUMPI PUSH2 0x3E4 JUMP JUMPDEST DUP1 PUSH4 0x4797930 EQ PUSH2 0x3F3 JUMPI DUP1 PUSH4 0x6947A3A EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0x6B3EFD6 EQ PUSH2 0x44B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x46B JUMPI JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x40E CALLDATASIZE PUSH1 0x4 PUSH2 0x4AC6 JUMP JUMPDEST PUSH2 0xB40 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP2 SWAP1 PUSH2 0x573D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0xCE9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP2 SWAP1 PUSH2 0x55B4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x466 CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x480 PUSH2 0xDE4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP2 SWAP1 PUSH2 0x57BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AD PUSH2 0x4A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4605 JUMP JUMPDEST PUSH2 0xE6F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP2 SWAP1 PUSH2 0x572F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xEDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x4EA CALLDATASIZE PUSH1 0x4 PUSH2 0x4A3B JUMP JUMPDEST PUSH2 0xEEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xF1A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0x51F CALLDATASIZE PUSH1 0x4 PUSH2 0x4B6A JUMP JUMPDEST PUSH2 0xF20 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x532 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xF63 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x547 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xF69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xF6F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AD PUSH2 0x580 CALLDATASIZE PUSH1 0x4 PUSH2 0x45B8 JUMP JUMPDEST PUSH2 0xFFE JUMP JUMPDEST PUSH2 0x598 PUSH2 0x593 CALLDATASIZE PUSH1 0x4 PUSH2 0x4943 JUMP JUMPDEST PUSH2 0x10C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP3 SWAP2 SWAP1 PUSH2 0x59BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0x5C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x12EC JUMP JUMPDEST PUSH2 0x598 PUSH2 0x5D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x479C JUMP JUMPDEST PUSH2 0x1332 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1612 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x603 PUSH2 0x1621 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP2 SWAP1 PUSH2 0x59E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x62B CALLDATASIZE PUSH1 0x4 PUSH2 0x4A3B JUMP JUMPDEST PUSH2 0x162A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x163C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x660 CALLDATASIZE PUSH1 0x4 PUSH2 0x4605 JUMP JUMPDEST PUSH2 0x1642 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1683 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x695 CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x1695 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1736 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x173C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x6DF CALLDATASIZE PUSH1 0x4 PUSH2 0x4AC6 JUMP JUMPDEST PUSH2 0x176D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x704 PUSH2 0x6FF CALLDATASIZE PUSH1 0x4 PUSH2 0x4B09 JUMP JUMPDEST PUSH2 0x190D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x420 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x59CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0x72E CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x1A1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x74E CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x1A64 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x76E CALLDATASIZE PUSH1 0x4 PUSH2 0x4A77 JUMP JUMPDEST PUSH2 0x1A7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x77F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x78E CALLDATASIZE PUSH1 0x4 PUSH2 0x4635 JUMP JUMPDEST PUSH2 0x1B62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1C0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1C21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1C27 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1C2D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x802 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A3B JUMP JUMPDEST PUSH2 0x1C6B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x813 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1CEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x598 PUSH2 0x837 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A77 JUMP JUMPDEST PUSH2 0x1CF7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x848 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1D10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1D1F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AD PUSH2 0x1D2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1D54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x480 PUSH2 0x1D84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1DDF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x8D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4605 JUMP JUMPDEST PUSH2 0x1DEE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1E62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AD PUSH2 0x90A CALLDATASIZE PUSH1 0x4 PUSH2 0x4605 JUMP JUMPDEST PUSH2 0x1E71 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x92A CALLDATASIZE PUSH1 0x4 PUSH2 0x4A3B JUMP JUMPDEST PUSH2 0x1E81 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1E8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x950 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AD PUSH2 0x95F CALLDATASIZE PUSH1 0x4 PUSH2 0x49D2 JUMP JUMPDEST PUSH2 0x1E92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x1F14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0x994 CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x1F23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x9B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4635 JUMP JUMPDEST PUSH2 0x1F69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x9D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A3B JUMP JUMPDEST PUSH2 0x1FB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x1FC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0xA09 CALLDATASIZE PUSH1 0x4 PUSH2 0x471A JUMP JUMPDEST PUSH2 0x1FCC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0xA29 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C66 JUMP JUMPDEST PUSH2 0x219B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xA49 CALLDATASIZE PUSH1 0x4 PUSH2 0x457E JUMP JUMPDEST PUSH2 0x22A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0xA69 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A06 JUMP JUMPDEST PUSH2 0x22CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xA89 CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x2372 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0xAA9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4678 JUMP JUMPDEST PUSH2 0x2384 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xABA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0xAC9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x2535 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xADA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x2550 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x524 PUSH2 0xAFE CALLDATASIZE PUSH1 0x4 PUSH2 0x4542 JUMP JUMPDEST PUSH2 0x2556 JUMP JUMPDEST PUSH2 0x598 PUSH2 0xB11 CALLDATASIZE PUSH1 0x4 PUSH2 0x4863 JUMP JUMPDEST PUSH2 0x2586 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x43E PUSH2 0x2656 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x413 PUSH2 0x2665 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB65 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB7F SWAP3 SWAP2 SWAP1 PUSH2 0x5540 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 PUSH4 0xE762319F SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 DUP8 SWAP2 DUP11 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0xBF0 SWAP2 DUP11 SWAP2 ADD PUSH2 0x573D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC40 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC62 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x562E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xCB2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP2 POP PUSH2 0xCC6 DUP3 PUSH2 0xCC0 PUSH2 0x1D54 JUMP JUMPDEST DUP7 PUSH2 0x266A JUMP JUMPDEST SWAP4 POP PUSH2 0xCD4 SWAP2 POP PUSH2 0x26E3 SWAP1 POP JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0xCE0 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xD93 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0xD40 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD90 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xDDB PUSH8 0xDE0B6B3A7640000 PUSH2 0xDCF PUSH2 0xDAA PUSH2 0x1C2D JUMP JUMPDEST PUSH2 0xDC3 DUP6 PUSH2 0xDB7 DUP10 PUSH2 0x1A64 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2778 AND JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE67 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE3C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE67 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE4A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xEC8 SWAP1 DUP7 SWAP1 PUSH2 0x573D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEE9 PUSH2 0x4EA PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xEFA PUSH2 0xF6F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xF14 JUMPI PUSH2 0xF0C DUP2 DUP5 PUSH2 0x1A7F JUMP JUMPDEST SWAP2 POP POP PUSH2 0xDDF JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF2E DUP7 DUP7 DUP7 DUP7 PUSH2 0x190D JUMP JUMPDEST POP SWAP2 POP POP DUP2 DUP2 LT ISZERO PUSH2 0xF5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x57CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x250F447F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 PUSH4 0x4A1E88FE SWAP4 PUSH2 0xFAE SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xEE9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x115DD4B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH2 0x10BF SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x115DD4B1 SWAP1 PUSH2 0x1039 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x55C2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1051 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1065 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1089 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x477E JUMP JUMPDEST PUSH2 0x10B6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x10BA JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH2 0x27F4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x10EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x10F9 PUSH2 0x29C7 JUMP JUMPDEST PUSH2 0x1106 DUP10 DUP10 DUP10 DUP10 DUP9 PUSH2 0xF20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x1123 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x1156 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x587D JUMP JUMPDEST DUP10 ISZERO DUP1 PUSH2 0x116B JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x1187 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x598D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x11CA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x11CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x121B JUMPI PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP9 GT ISZERO PUSH2 0x121B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1228 DUP8 DUP10 DUP12 PUSH2 0x2A47 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1247 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x58AD JUMP JUMPDEST PUSH2 0x124F PUSH2 0x4249 JUMP JUMPDEST PUSH2 0x1257 PUSH2 0x4267 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP11 SWAP1 MSTORE PUSH2 0x128F PUSH2 0x2C74 JUMP JUMPDEST PUSH2 0x12A0 DUP13 DUP3 PUSH1 0x1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x2D1A JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x12C1 PUSH16 0x4B3B4CA85A86C47A098A224000000000 DUP14 PUSH2 0x2778 JUMP JUMPDEST SWAP12 POP PUSH2 0x12D3 DUP14 PUSH1 0x0 DUP15 DUP13 DUP7 DUP7 DUP13 PUSH2 0x2D69 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP15 SWAP1 SWAP14 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12F4 PUSH2 0x1D2E JUMP JUMPDEST PUSH2 0x1310 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH1 0x1B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1357 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP9 PUSH2 0x1379 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x599D JUMP JUMPDEST PUSH2 0x1381 PUSH2 0x29C7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x13C4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x13C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO DUP1 PUSH2 0x13D0 JUMPI POP DUP7 CALLVALUE EQ JUMPDEST DUP1 ISZERO PUSH2 0x13E4 JUMPI POP DUP7 ISZERO ISZERO DUP1 PUSH2 0x13E4 JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x140B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO DUP1 PUSH2 0x1401 JUMPI POP CALLVALUE ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x140B JUMPI POP DUP10 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1427 JUMPI POP DUP10 ISZERO DUP1 PUSH2 0x1427 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ JUMPDEST PUSH2 0x1443 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x583D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x1460 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP6 POP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH2 0x100 SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x1493 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x57DD JUMP JUMPDEST PUSH2 0x149B PUSH2 0x2C74 JUMP JUMPDEST PUSH2 0x14A3 PUSH2 0x4249 JUMP JUMPDEST PUSH2 0x14AB PUSH2 0x4267 JUMP JUMPDEST ADDRESS DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 AND PUSH1 0x40 DUP5 ADD MSTORE DUP2 ADD DUP12 SWAP1 MSTORE PUSH2 0x14E3 DUP12 PUSH2 0x14DD PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST DUP13 PUSH2 0x266A JUMP JUMPDEST DUP4 PUSH1 0x0 PUSH1 0x20 MUL ADD DUP5 PUSH1 0x2 PUSH1 0x20 MUL ADD DUP6 PUSH1 0x1 PUSH1 0x20 MUL ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 MSTORE MSTORE DUP9 DUP2 PUSH1 0x4 PUSH1 0x20 MUL ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x15FA DUP13 DUP13 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCA74A5D9 PUSH1 0x10 PUSH1 0x0 DUP15 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x154E SWAP3 SWAP2 SWAP1 PUSH2 0x5540 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1592 SWAP2 SWAP1 PUSH2 0x573D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x15E2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST DUP12 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2D69 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP1 SWAP14 SWAP1 SWAP13 POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1666 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1675 DUP4 DUP4 PUSH2 0x2FC8 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEE9 PUSH2 0x1690 PUSH2 0xF6F JUMP JUMPDEST PUSH2 0x30D4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 PUSH1 0x0 SHL PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x16CE SWAP3 SWAP2 SWAP1 PUSH2 0x5566 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xDDB DUP2 PUSH1 0x13 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1718 PUSH2 0x1C2D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x310C JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1749 PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1755 PUSH2 0xF6F JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1768 JUMPI SWAP1 SUB SWAP1 POP PUSH2 0xEEC JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x0 PUSH2 0x1783 DUP6 PUSH2 0xCC0 PUSH2 0x1D54 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x178F PUSH2 0x26E3 JUMP JUMPDEST DUP2 GT PUSH2 0xCE0 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x17B2 JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x17CC SWAP3 SWAP2 SWAP1 PUSH2 0x5540 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP4 MLOAD PUSH4 0xCA74A5D9 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH2 0x1904 SWAP4 PUSH1 0xA SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x25DECAC0 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP10 SWAP2 DUP7 SWAP2 PUSH4 0xCA74A5D9 SWAP2 PUSH2 0x1842 SWAP2 DUP13 SWAP2 ADD PUSH2 0x573D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x185A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x186E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1892 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18B4 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x562E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xDB7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0xCE2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x192E JUMPI PUSH1 0x17 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x193B DUP6 DUP8 DUP10 PUSH2 0x2A47 JUMP JUMPDEST SWAP1 POP PUSH2 0x1947 DUP9 DUP3 PUSH2 0x2D1A JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH2 0x1954 PUSH2 0x26E3 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x196B JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1A14 JUMP JUMPDEST PUSH2 0x197B DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD67F7077 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD67F7077 SWAP4 PUSH2 0x19C0 SWAP4 PUSH2 0x100 SWAP1 SWAP4 DIV AND SWAP2 DUP11 SWAP2 DUP14 SWAP2 DUP14 SWAP2 DUP11 SWAP2 DUP14 SWAP2 ADD PUSH2 0x5670 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19EC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1A10 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP3 POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A26 PUSH2 0x1D2E JUMP JUMPDEST PUSH2 0x1A42 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH1 0x19 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1A90 JUMPI POP DUP3 DUP3 LT ISZERO JUMPDEST ISZERO PUSH2 0xED4 JUMPI PUSH2 0x1B5B PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 PUSH2 0xDCF PUSH2 0x1B45 PUSH9 0x56BC75E2D63100000 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4699F846 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B40 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST PUSH2 0x3166 JUMP JUMPDEST PUSH2 0xDC3 PUSH2 0x1B52 DUP9 DUP9 PUSH2 0x31A8 JUMP JUMPDEST PUSH2 0xDC3 DUP10 PUSH2 0x30D4 JUMP JUMPDEST SWAP1 POP PUSH2 0xED4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1B86 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x1BA1 JUMPI PUSH2 0x1B9A DUP4 PUSH2 0x31DA JUMP JUMPDEST SWAP1 POP PUSH2 0x1BAD JUMP JUMPDEST PUSH2 0x1BAA DUP4 PUSH2 0x3380 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x1C01 JUMPI PUSH2 0x1C01 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH21 0x185CDCD95D081D1C985B9CD9995C8819985A5B1959 PUSH1 0x5A SHL DUP2 MSTORE POP PUSH2 0x3537 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1C54 JUMPI PUSH2 0x1C50 PUSH2 0x3597 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C65 PUSH2 0x1C60 DUP3 PUSH2 0x27BA JUMP JUMPDEST PUSH2 0x3663 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C8A PUSH2 0x16D PUSH2 0xDCF PUSH1 0x1C PUSH1 0xB SLOAD PUSH2 0x273E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1CA7 PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3166 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1CC4 PUSH9 0x56BC75E2D63100000 PUSH2 0xDCF DUP5 PUSH2 0xDC3 PUSH2 0x173C JUMP JUMPDEST SWAP1 POP PUSH2 0x1CE2 DUP6 PUSH2 0xDCF DUP4 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEE9 PUSH1 0x0 PUSH2 0x3692 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D04 DUP5 DUP5 PUSH2 0x2D1A JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D45 PUSH2 0x36E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1D7B JUMPI PUSH2 0x1D77 PUSH2 0x3597 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH2 0x1C65 DUP2 PUSH2 0x27BA JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xE67 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE3C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE67 JUMP JUMPDEST PUSH1 0x18 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1E12 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE PUSH2 0x1E20 DUP3 PUSH2 0x3380 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1678 JUMPI PUSH2 0x1678 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH2 0x3537 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE2 CALLER DUP5 DUP5 PUSH1 0x0 NOT PUSH2 0x27F4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x3692 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EA6 SWAP2 SWAP1 PUSH2 0x55A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1EF3 SWAP3 SWAP2 SWAP1 PUSH2 0x558C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x1F2B PUSH2 0x1D2E JUMP JUMPDEST PUSH2 0x1F47 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH1 0x1C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x1F8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE DUP2 ISZERO PUSH2 0x1FA9 JUMPI PUSH2 0x1FA2 DUP5 DUP5 PUSH2 0x36EC JUMP JUMPDEST SWAP1 POP PUSH2 0x1C01 JUMP JUMPDEST PUSH2 0x1FA2 DUP5 DUP5 PUSH2 0x2FC8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 PUSH2 0x4EA DUP4 PUSH2 0xDB7 PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1FD4 PUSH2 0x1D2E JUMP JUMPDEST DUP1 PUSH2 0x1FE9 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x2005 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x208F JUMPI DUP2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2032 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP4 PUSH2 0x2064 JUMPI PUSH3 0x24EA00 PUSH2 0x2067 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH3 0xFFFFFF AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2078 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xE0 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x201C JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x50D713AF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA1AE275E SWAP1 PUSH2 0x20C0 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x571E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2116 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x46E6 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2194 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2130 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x10 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2148 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2166 SWAP3 SWAP2 SWAP1 PUSH2 0x5540 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP4 MSTORE SWAP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x211B JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x21A3 PUSH2 0x1D2E JUMP JUMPDEST DUP1 PUSH2 0x21B8 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x21D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x21EE DUP8 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST GT ISZERO PUSH2 0x220C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x589D JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH2 0x2226 DUP6 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST GT ISZERO PUSH2 0x2244 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x589D JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP4 GT ISZERO DUP1 ISZERO PUSH2 0x2266 JUMPI POP PUSH9 0x56BC75E2D63100000 DUP3 GT ISZERO JUMPDEST PUSH2 0x2282 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x58CD JUMP JUMPDEST PUSH1 0x5 SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x6 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE PUSH1 0x9 SSTORE PUSH1 0xA SSTORE PUSH1 0xB SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x22F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x595D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x230A SWAP2 SWAP1 PUSH2 0x55A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2352 SWAP3 SWAP2 SWAP1 PUSH2 0x558C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x238C PUSH2 0x1D2E JUMP JUMPDEST DUP1 PUSH2 0x23A1 JUMPI POP PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST PUSH2 0x23BD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST DUP3 DUP2 EQ PUSH2 0x23DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x582D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP7 MUL DUP3 ADD ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP1 DUP5 DUP1 ISZERO PUSH2 0x2408 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x24CB JUMPI PUSH1 0x0 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x2424 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x2439 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4542 JUMP JUMPDEST DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x2445 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 PUSH2 0x245A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4760 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x246B SWAP3 SWAP2 SWAP1 PUSH2 0x5540 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH1 0x10 PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x24A6 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x240E JUMP JUMPDEST POP PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F187D35 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xFE30FA6A SWAP1 PUSH2 0x24FC SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x570D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x252A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x255E PUSH2 0x1D2E JUMP JUMPDEST PUSH2 0x257A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH2 0x2583 DUP2 PUSH2 0x3775 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x25FD JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 MLOAD PUSH4 0x193BBE89 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC9DDF448 SWAP1 PUSH2 0x25CA SWAP1 DUP11 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x2643 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP12 DUP12 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x10C7 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP11 POP SWAP11 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x19 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x6 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2679 DUP7 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP3 POP PUSH2 0x26C6 PUSH2 0x26AE PUSH8 0xDE0B6B3A7640000 PUSH2 0x1B40 PUSH12 0xA3098C68EB9427DB8000000 PUSH2 0xDCF DUP4 PUSH2 0xDC3 DUP11 DUP13 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST PUSH2 0xDCF DUP9 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x26D8 DUP2 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x3166 AND JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xFAE SWAP2 ADDRESS SWAP2 ADD PUSH2 0x55B4 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x580D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x274D JUMPI POP PUSH1 0x0 PUSH2 0xED4 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x275A JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xCE2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x58FD JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE2 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x390D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x15 SLOAD PUSH1 0x0 EQ PUSH2 0xDDF JUMPI PUSH1 0xC SLOAD DUP1 PUSH2 0x27E4 JUMPI PUSH2 0x27E1 PUSH2 0x27D9 PUSH2 0xF6F JUMP JUMPDEST PUSH2 0xDB7 PUSH2 0x26E3 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xF0C DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ PUSH2 0x2850 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xC4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x282B SWAP1 DUP4 SWAP1 DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3944 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2876 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x57ED JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 SWAP1 PUSH2 0x28C1 SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3944 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE SWAP2 DUP10 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x28FA DUP3 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP3 SWAP1 SSTORE SWAP1 SWAP2 POP PUSH2 0x2920 PUSH2 0x1C2D JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND SWAP2 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x294F JUMPI POP PUSH1 0x1C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x296C JUMPI PUSH2 0x2960 DUP11 DUP7 DUP7 DUP5 PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x296C DUP10 DUP5 DUP5 DUP5 PUSH2 0x3970 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP11 PUSH1 0x40 MLOAD PUSH2 0x29AF SWAP2 SWAP1 PUSH2 0x573D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH32 0xD46A704BC285DBD6FF5AD3863506260B1DF02812F4F857C8CC852317A6AC64F2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2A07 SWAP3 SWAP2 SWAP1 PUSH2 0x558C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 SLOAD SWAP1 POP DUP1 ISZERO PUSH2 0x2A43 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x590D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 DUP3 ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x0 DUP1 PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x78D849ED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AB3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2AD7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4560 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA7549DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x29D5277C SWAP4 PUSH2 0x2B10 SWAP4 DUP13 SWAP4 PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND SWAP2 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2B5F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A96 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x2B73 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST PUSH2 0x2B8F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x594D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BA5 DUP3 PUSH2 0xDCF DUP9 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A515777 PUSH1 0xE2 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x69455DDC SWAP4 PUSH2 0x2BE8 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 DUP14 SWAP2 DUP9 SWAP2 ADD PUSH2 0x5606 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2C38 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ PUSH2 0x2C58 JUMPI PUSH2 0x2C55 DUP8 PUSH2 0xDCF DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x2C68 DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xF SLOAD TIMESTAMP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x2583 JUMPI PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x740FF7D PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0xE81FEFA0 SWAP4 PUSH2 0x2CC4 SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x55B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CF2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP6 AND PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2D3A PUSH8 0xDE0B6B3A7640000 PUSH2 0xDCF DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D4F DUP2 PUSH2 0x2D4A PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x2D5F DUP3 PUSH3 0x24EA00 DUP4 PUSH2 0x3A26 JUMP JUMPDEST SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2D74 PUSH2 0x29C7 JUMP JUMPDEST PUSH2 0x2D7C PUSH2 0x26E3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD GT DUP1 ISZERO SWAP1 PUSH2 0x2D9B JUMPI POP PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO JUMPDEST PUSH2 0x2DB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x586D JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2DDD JUMPI PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x2DEB DUP8 DUP8 DUP8 DUP13 PUSH2 0x3A87 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP3 POP PUSH2 0x2E02 SWAP2 SWAP1 PUSH2 0x2719 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE DUP9 ISZERO PUSH2 0x2E22 JUMPI PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x2E1C SWAP1 DUP11 PUSH2 0x3166 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE JUMPDEST PUSH1 0x0 DUP10 ISZERO PUSH2 0x2E2E JUMPI POP PUSH1 0x1 JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP11 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2E47 SWAP3 SWAP2 SWAP1 PUSH2 0x5540 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x585314CF DUP5 DUP4 DUP16 DUP7 DUP16 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2EBF SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x574B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2ED7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2F10 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A96 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0x20 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x2F38 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x58BD JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF06A9C6B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF06A9C6B SWAP2 PUSH2 0x2F6B SWAP2 PUSH1 0x4 ADD PUSH2 0x55B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP7 PUSH1 0x1 PUSH1 0x5 DUP2 LT PUSH2 0x2FAA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 SWAP1 SWAP8 ADD MLOAD SWAP7 SWAP13 SWAP7 SWAP12 POP SWAP6 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2FD4 DUP4 PUSH2 0x3CBC JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x3072 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x301F SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3037 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x304B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x306F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x309B SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x30AF DUP3 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x30BD DUP8 DUP7 DUP9 DUP8 PUSH2 0x3DC6 JUMP JUMPDEST POP PUSH2 0x30CA DUP8 DUP4 DUP4 DUP8 PUSH2 0x3970 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 PUSH2 0x30E6 PUSH2 0x3597 JUMP JUMPDEST POP SWAP1 POP PUSH2 0xF0C DUP4 PUSH2 0xDCF PUSH2 0x16D PUSH2 0xDC3 DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x311B JUMPI POP PUSH1 0x0 PUSH2 0x10BF JUMP JUMPDEST POP DUP4 SLOAD PUSH2 0x1CE2 DUP2 PUSH2 0x315A PUSH8 0xDE0B6B3A7640000 PUSH2 0x314E DUP9 PUSH2 0x3142 DUP10 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3EE7 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3F2D AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3F98 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3FFC AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE2 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3944 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x31B8 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xED4 JUMPI PUSH2 0x1B5B DUP3 PUSH2 0xDCF DUP6 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x3211 SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x55EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x323D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3261 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x327D PUSH2 0x3270 CALLER PUSH2 0x1A64 JUMP JUMPDEST DUP4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST LT ISZERO PUSH2 0x329B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x584D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x337B JUMPI DUP3 DUP2 LT ISZERO PUSH2 0x3314 JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x32DD SWAP1 ADDRESS SWAP1 DUP6 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x56E5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x330B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x337B JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x3348 SWAP1 ADDRESS SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x56E5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3376 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0xDDB DUP4 JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x339F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x591D JUMP JUMPDEST PUSH2 0x33A8 CALLER PUSH2 0x1A64 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x33DC JUMPI PUSH1 0x0 NOT DUP3 EQ PUSH2 0x33D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x58DD JUMP JUMPDEST PUSH2 0x33D9 CALLER PUSH2 0x1A64 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x33E4 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33F3 PUSH2 0x1C60 PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3413 PUSH8 0xDE0B6B3A7640000 PUSH2 0xDCF DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x341F PUSH2 0x26E3 JUMP JUMPDEST SWAP1 POP DUP2 SWAP4 POP DUP1 DUP5 GT ISZERO PUSH2 0x3444 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x585D JUMP JUMPDEST PUSH1 0x1C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x34DD JUMPI PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x68229553 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0452AA6 SWAP1 PUSH2 0x348A SWAP1 ADDRESS SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x55EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x34A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x34B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x34DA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4A59 JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x34FD SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3511 DUP3 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3166 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x351F CALLER DUP10 DUP10 DUP10 PUSH2 0x4042 JUMP JUMPDEST POP PUSH2 0x352C CALLER DUP4 DUP4 DUP10 PUSH2 0x3970 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3591 SWAP1 DUP6 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH2 0x3559 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x24 ADD PUSH2 0x56CA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE DUP4 PUSH2 0x4167 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD1979FB PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP4 PUSH4 0xD1979FB0 SWAP4 PUSH2 0x35D9 SWAP4 ADDRESS SWAP4 PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3605 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3629 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4BDF JUMP JUMPDEST POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP PUSH2 0x365C SWAP2 POP PUSH9 0x56BC75E2D63100000 SWAP1 POP PUSH2 0xDCF PUSH2 0x364F DUP3 DUP6 PUSH2 0x3166 JUMP JUMPDEST DUP6 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP2 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0x0 SWAP1 DUP1 PUSH2 0x3676 JUMPI PUSH1 0xE SLOAD PUSH2 0xDDB JUMP JUMPDEST PUSH2 0xDDB DUP2 PUSH2 0xDCF DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x36DB JUMPI PUSH1 0xF SLOAD TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x36BD JUMPI PUSH2 0x36B9 PUSH2 0x3597 JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x36CB DUP3 PUSH2 0xDB7 PUSH2 0x26E3 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x36D9 JUMPI DUP1 SWAP4 POP JUMPDEST POP JUMPDEST PUSH2 0xDDB DUP4 PUSH2 0x2D4A DUP4 PUSH2 0x27BA JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36F8 DUP4 DUP4 PUSH2 0x2FC8 JUMP JUMPDEST PUSH1 0x1C SLOAD SWAP1 SWAP2 POP PUSH2 0x3714 SWAP1 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP1 PUSH2 0x27F4 JUMP JUMPDEST POP PUSH1 0x1C SLOAD PUSH1 0x40 MLOAD PUSH4 0x36305CF1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD8C173C4 SWAP1 PUSH2 0x3747 SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x56CA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x30CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x379B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x57FD JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x380F PUSH2 0x3809 DUP6 PUSH2 0xDB7 PUSH2 0xF6F JUMP JUMPDEST DUP5 PUSH2 0x31A8 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH1 0x9 SLOAD PUSH1 0xA SLOAD PUSH1 0xB SLOAD SWAP5 SWAP6 POP PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP3 DUP9 LT ISZERO PUSH2 0x3836 JUMPI DUP3 SWAP8 POP JUMPDEST DUP2 DUP9 GT ISZERO PUSH2 0x38A9 JUMPI SWAP7 DUP2 SWAP1 SUB SWAP7 PUSH9 0x56BC75E2D63100000 DUP3 SWAP1 SUB DUP1 DUP10 GT ISZERO PUSH2 0x385C JUMPI DUP1 SWAP9 POP JUMPDEST PUSH2 0x387D PUSH9 0x56BC75E2D63100000 PUSH2 0xDCF DUP6 PUSH2 0xDC3 DUP10 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP7 POP PUSH2 0x38A1 DUP8 PUSH2 0xDB7 DUP4 PUSH2 0xDCF PUSH2 0x3894 DUP8 DUP14 PUSH2 0x3166 JUMP JUMPDEST DUP15 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP10 POP POP PUSH2 0x38FF JUMP JUMPDEST PUSH2 0x38CA DUP6 PUSH2 0xDB7 PUSH9 0x56BC75E2D63100000 PUSH2 0xDCF DUP13 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP9 POP SWAP4 SWAP6 POP DUP6 SWAP4 PUSH2 0x38E1 DUP5 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP6 POP DUP7 DUP10 LT ISZERO PUSH2 0x38F3 JUMPI DUP7 SWAP9 POP PUSH2 0x38FF JUMP JUMPDEST DUP6 DUP10 GT ISZERO PUSH2 0x38FF JUMPI DUP6 SWAP9 POP JUMPDEST POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x392E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP2 SWAP1 PUSH2 0x57BC JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x393A JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3968 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP2 SWAP1 PUSH2 0x57BC JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x39A6 SWAP1 DUP7 SWAP1 PUSH32 0x37AA2B7D583612F016E4A4DE4292CB015139B3D7762663D06A53964912EA2FB6 SWAP1 PUSH1 0x20 ADD PUSH2 0x5566 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 EQ ISZERO PUSH2 0x39D2 JUMPI PUSH1 0x0 SWAP3 POP PUSH2 0x3A03 JUMP JUMPDEST DUP5 ISZERO PUSH2 0x3A03 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x3A00 SWAP1 DUP4 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH2 0x310C JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3A41 PUSH4 0x1E13380 PUSH2 0xDCF DUP8 DUP8 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A5E PUSH9 0x56BC75E2D63100000 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x3166 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3A7D DUP2 PUSH2 0xDCF DUP7 PUSH9 0x56BC75E2D63100000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x17 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x0 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP6 PUSH2 0x100 SWAP1 DIV DUP2 AND SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 DUP12 AND DUP6 EQ ISZERO PUSH2 0x3ADD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x592D JUMP JUMPDEST CALLVALUE SWAP7 POP DUP8 ISZERO PUSH2 0x3B3B JUMPI PUSH2 0x3B01 DUP6 DUP6 DUP11 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3537 JUMP JUMPDEST DUP8 DUP4 GT ISZERO PUSH2 0x3B36 JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x3B36 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP12 DUP8 SUB SWAP1 PUSH2 0x3537 JUMP JUMPDEST PUSH2 0x3B70 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3237 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3B70 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP7 SWAP1 PUSH2 0x3537 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3C73 JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x3B96 JUMPI POP DUP7 ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3BA2 JUMPI POP DUP1 DUP8 LT ISZERO JUMPDEST ISZERO PUSH2 0x3C3C JUMPI DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x32382D61 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3C32 SWAP5 POP DUP16 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 POP DUP5 SWAP1 PUSH2 0x3537 JUMP JUMPDEST DUP1 DUP8 SUB SWAP7 POP PUSH2 0x3C73 JUMP JUMPDEST PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x191C16B1 PUSH1 0xE1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3C73 SWAP2 DUP14 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH2 0x4225 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3CAE JUMPI PUSH1 0x16 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3239 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3CAE SWAP2 DUP8 SWAP2 CALLER SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x4225 JUMP JUMPDEST POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x3CDC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x58ED JUMP JUMPDEST PUSH2 0x3CE4 PUSH2 0x2C74 JUMP JUMPDEST PUSH2 0x3CF1 PUSH2 0x1C60 PUSH1 0x0 PUSH2 0x27BA JUMP JUMPDEST SWAP1 POP PUSH2 0x3D0F DUP2 PUSH2 0xDCF DUP6 PUSH8 0xDE0B6B3A7640000 PUSH4 0xFFFFFFFF PUSH2 0x273E AND JUMP JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x3D57 JUMPI PUSH2 0x3D52 PUSH1 0x4 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP PUSH2 0x4225 JUMP JUMPDEST PUSH2 0x3DC1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3DA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3DBB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3DEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x57ED JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3E17 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH2 0x3E48 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0xB4C03061FB5B7FED76389D5AF8F2E0DDB09F8C70D1333ABBB62582835E10ACCB SWAP1 PUSH2 0x3E8A SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x59CB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3ED6 SWAP2 SWAP1 PUSH2 0x573D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 SUB DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x3EFC JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x3F11 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3F11 JUMPI POP DUP4 DUP2 SGT JUMPDEST PUSH2 0xCE2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x597D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3F3C JUMPI POP PUSH1 0x0 PUSH2 0xED4 JUMP JUMPDEST DUP3 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x3F50 JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ JUMPDEST ISZERO PUSH2 0x3F6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x593D JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x3F7A JUMPI INVALID JUMPDEST SDIV EQ PUSH2 0xCE2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x593D JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3FB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x59AD JUMP JUMPDEST DUP2 PUSH1 0x0 NOT EQ DUP1 ISZERO PUSH2 0x3FCB JUMPI POP PUSH1 0x1 PUSH1 0xFF SHL DUP4 EQ JUMPDEST ISZERO PUSH2 0x3FE8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x588D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x3FF3 JUMPI INVALID JUMPDEST SDIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP2 DUP4 SLT DUP1 ISZERO SWAP1 PUSH2 0x4011 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x4026 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x4026 JUMPI POP DUP4 DUP2 SLT JUMPDEST PUSH2 0xCE2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP1 PUSH2 0x581D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x189B PUSH1 0xF1 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 SWAP1 SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD DUP3 SWAP2 PUSH2 0x408A SWAP2 SWAP1 DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3944 AND JUMP JUMPDEST SWAP1 POP PUSH1 0xA DUP2 GT PUSH2 0x40AB JUMPI PUSH2 0x40A4 DUP6 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x2719 AND JUMP JUMPDEST SWAP5 POP PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH1 0x15 SLOAD PUSH2 0x40D9 SWAP1 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x3166 AND JUMP JUMPDEST PUSH1 0x15 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH32 0x743033787F4738FF4D6A7225CE2BD0977EE5F86B91A902A58F5E4D0B297B4644 SWAP1 PUSH2 0x411B SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH2 0x59CB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP8 PUSH1 0x40 MLOAD PUSH2 0x3ED6 SWAP2 SWAP1 PUSH2 0x573D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x4183 SWAP2 SWAP1 PUSH2 0x55A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x41C0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x41C5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP4 SWAP1 PUSH2 0x41EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP2 SWAP1 PUSH2 0x57BC JUMP JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x2194 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0x4206 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x477E JUMP JUMPDEST DUP4 SWAP1 PUSH2 0xF5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF52 SWAP2 SWAP1 PUSH2 0x57BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2194 SWAP1 DUP7 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH2 0x3559 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x24 ADD PUSH2 0x5606 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xED4 DUP2 PUSH2 0x5B3A JUMP JUMPDEST DUP1 MLOAD PUSH2 0xED4 DUP2 PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x42AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1D09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x42ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4300 PUSH2 0x42FB DUP3 PUSH2 0x5A1A JUMP JUMPDEST PUSH2 0x59F4 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x4325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x30CA JUMPI DUP2 PUSH2 0x433B DUP9 DUP3 PUSH2 0x43E6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4328 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4370 PUSH2 0x42FB DUP3 PUSH2 0x5A1A JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH2 0x100 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x4396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x30CA JUMPI DUP2 PUSH2 0x43AC DUP9 DUP3 PUSH2 0x4481 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4399 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xED4 DUP2 PUSH2 0x5B4E JUMP JUMPDEST DUP1 MLOAD PUSH2 0xED4 DUP2 PUSH2 0x5B4E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xED4 DUP2 PUSH2 0x5B57 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xED4 DUP2 PUSH2 0x5B57 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x441A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x1D09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4451 PUSH2 0x42FB DUP3 PUSH2 0x5A3A JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x446D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4478 DUP4 DUP3 DUP5 PUSH2 0x5AC0 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x449F PUSH2 0x100 PUSH2 0x59F4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x44AD DUP5 DUP5 PUSH2 0x43DB JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x44BE DUP5 DUP5 DUP4 ADD PUSH2 0x43C5 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x44D2 DUP5 DUP3 DUP6 ADD PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x44E6 DUP5 DUP3 DUP6 ADD PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x44FA DUP5 DUP3 DUP6 ADD PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x450E DUP5 DUP3 DUP6 ADD PUSH2 0x43DB JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x4522 DUP5 DUP3 DUP6 ADD PUSH2 0x43DB JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x4536 DUP5 DUP3 DUP6 ADD PUSH2 0x43DB JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10BF DUP5 DUP5 PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10BF DUP5 DUP5 PUSH2 0x4290 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x459D DUP6 DUP6 PUSH2 0x4285 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x45AE DUP6 DUP3 DUP7 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x45CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x45D9 DUP7 DUP7 PUSH2 0x4285 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x45EA DUP7 DUP3 DUP8 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x45FB DUP7 DUP3 DUP8 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4624 DUP6 DUP6 PUSH2 0x4285 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x45AE DUP6 DUP3 DUP7 ADD PUSH2 0x43DB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x464A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4656 DUP7 DUP7 PUSH2 0x4285 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4667 DUP7 DUP3 DUP8 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x45FB DUP7 DUP3 DUP8 ADD PUSH2 0x43C5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x468E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46B0 DUP8 DUP3 DUP9 ADD PUSH2 0x429B JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46DA DUP8 DUP3 DUP9 ADD PUSH2 0x429B JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x470E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10BF DUP5 DUP3 DUP6 ADD PUSH2 0x42DC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x472D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x474F DUP6 DUP3 DUP7 ADD PUSH2 0x4351 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x45AE DUP6 DUP3 DUP7 ADD PUSH2 0x43C5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4772 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10BF DUP5 DUP5 PUSH2 0x43C5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4790 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10BF DUP5 DUP5 PUSH2 0x43D0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x47B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x47C5 DUP12 DUP12 PUSH2 0x43DB JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x47D6 DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x47E7 DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x47F8 DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x4809 DUP12 DUP3 DUP13 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x481A DUP12 DUP3 DUP13 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x482B DUP12 DUP3 DUP13 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4853 DUP12 DUP3 DUP13 ADD PUSH2 0x4432 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x4883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x488F DUP14 DUP14 PUSH2 0x43DB JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x48A0 DUP14 DUP3 DUP15 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x48B1 DUP14 DUP3 DUP15 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x48C2 DUP14 DUP3 DUP15 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x48D3 DUP14 DUP3 DUP15 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x48E4 DUP14 DUP3 DUP15 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x48F5 DUP14 DUP3 DUP15 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x4906 DUP14 DUP3 DUP15 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4923 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x492F DUP14 DUP3 DUP15 ADD PUSH2 0x43F1 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x496C DUP12 DUP12 PUSH2 0x43DB JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x497D DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x498E DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x499F DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x49B0 DUP12 DUP3 DUP13 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x49C1 DUP12 DUP3 DUP13 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x482B DUP12 DUP3 DUP13 ADD PUSH2 0x43DB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10BF DUP5 DUP3 DUP6 ADD PUSH2 0x4432 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4A2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x474F DUP6 DUP3 DUP7 ADD PUSH2 0x4432 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10BF DUP5 DUP5 PUSH2 0x43DB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10BF DUP5 DUP5 PUSH2 0x43E6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4624 DUP6 DUP6 PUSH2 0x43DB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4AA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4AB5 DUP6 DUP6 PUSH2 0x43E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x45AE DUP6 DUP3 DUP7 ADD PUSH2 0x43E6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4ADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4AE7 DUP7 DUP7 PUSH2 0x43DB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4AF8 DUP7 DUP3 DUP8 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x45FB DUP7 DUP3 DUP8 ADD PUSH2 0x4285 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4B1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4B2B DUP8 DUP8 PUSH2 0x43DB JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4B3C DUP8 DUP3 DUP9 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4B4D DUP8 DUP3 DUP9 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4B5E DUP8 DUP3 DUP9 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4B82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4B8E DUP9 DUP9 PUSH2 0x43DB JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4B9F DUP9 DUP3 DUP10 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4BB0 DUP9 DUP3 DUP10 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4BC1 DUP9 DUP3 DUP10 ADD PUSH2 0x4285 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x4BD2 DUP9 DUP3 DUP10 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4BF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C04 DUP10 DUP10 PUSH2 0x43E6 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x4C15 DUP10 DUP3 DUP11 ADD PUSH2 0x43E6 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x4C26 DUP10 DUP3 DUP11 ADD PUSH2 0x43E6 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x4C37 DUP10 DUP3 DUP11 ADD PUSH2 0x43E6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x4C48 DUP10 DUP3 DUP11 ADD PUSH2 0x43E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x4C59 DUP10 DUP3 DUP11 ADD PUSH2 0x43E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4C81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C8D DUP11 DUP11 PUSH2 0x43DB JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x4C9E DUP11 DUP3 DUP12 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x4CAF DUP11 DUP3 DUP12 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x4CC0 DUP11 DUP3 DUP12 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x4CD1 DUP11 DUP3 DUP12 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x4CE2 DUP11 DUP3 DUP12 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x4CF3 DUP11 DUP3 DUP12 ADD PUSH2 0x43DB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D0E DUP4 DUP4 PUSH2 0x4D46 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D0E DUP4 DUP4 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D2E DUP4 DUP4 PUSH2 0x54A0 JUMP JUMPDEST POP POP PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH2 0x4D40 DUP2 PUSH2 0x5AAF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4D40 DUP2 PUSH2 0x5A80 JUMP JUMPDEST PUSH2 0x4D40 PUSH2 0x4D5B DUP3 PUSH2 0x5A80 JUMP JUMPDEST PUSH2 0x5AF8 JUMP JUMPDEST PUSH2 0x4D69 DUP2 PUSH2 0x5A67 JUMP JUMPDEST PUSH2 0x4D73 DUP2 DUP5 PUSH2 0xDDF JUMP JUMPDEST SWAP3 POP PUSH2 0x4D7E DUP3 PUSH2 0xEEC JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5B JUMPI DUP2 MLOAD PUSH2 0x4D96 DUP8 DUP3 PUSH2 0x4D02 JUMP JUMPDEST SWAP7 POP PUSH2 0x4DA1 DUP4 PUSH2 0x5A61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4D82 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DB7 DUP3 PUSH2 0x5A6D JUMP JUMPDEST PUSH2 0x4DC1 DUP2 DUP6 PUSH2 0x5A77 JUMP JUMPDEST SWAP4 POP PUSH2 0x4DCC DUP4 PUSH2 0x5A61 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DFA JUMPI DUP2 MLOAD PUSH2 0x4DE4 DUP9 DUP3 PUSH2 0x4D16 JUMP JUMPDEST SWAP8 POP PUSH2 0x4DEF DUP4 PUSH2 0x5A61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4DD0 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E10 DUP3 PUSH2 0x5A6D JUMP JUMPDEST PUSH2 0x4E1A DUP2 DUP6 PUSH2 0x5A77 JUMP JUMPDEST SWAP4 POP PUSH2 0x4E25 DUP4 PUSH2 0x5A61 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DFA JUMPI DUP2 MLOAD PUSH2 0x4E3D DUP9 DUP3 PUSH2 0x4D22 JUMP JUMPDEST SWAP8 POP PUSH2 0x4E48 DUP4 PUSH2 0x5A61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4E29 JUMP JUMPDEST PUSH2 0x4E5C DUP2 PUSH2 0x5A71 JUMP JUMPDEST PUSH2 0x4E66 DUP2 DUP5 PUSH2 0xDDF JUMP JUMPDEST SWAP3 POP PUSH2 0x4E71 DUP3 PUSH2 0xEEC JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5B JUMPI DUP2 MLOAD PUSH2 0x4E89 DUP8 DUP3 PUSH2 0x4D16 JUMP JUMPDEST SWAP7 POP PUSH2 0x4E94 DUP4 PUSH2 0x5A61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x4E75 JUMP JUMPDEST PUSH2 0x4D40 DUP2 PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x4D40 PUSH2 0x4EB4 DUP3 PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x5B03 JUMP JUMPDEST PUSH2 0x4D40 DUP2 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x4D40 PUSH2 0x4ECE DUP3 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x4D40 PUSH2 0x4ECE DUP3 PUSH2 0x5A90 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EEA DUP3 PUSH2 0x5A6D JUMP JUMPDEST PUSH2 0x4EF4 DUP2 DUP6 PUSH2 0x5A77 JUMP JUMPDEST SWAP4 POP PUSH2 0x4F04 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5ACC JUMP JUMPDEST PUSH2 0x4F0D DUP2 PUSH2 0x5B24 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F22 DUP3 PUSH2 0x5A6D JUMP JUMPDEST PUSH2 0x4F2C DUP2 DUP6 PUSH2 0xDDF JUMP JUMPDEST SWAP4 POP PUSH2 0x4F3C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5ACC JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F53 PUSH1 0xC DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH12 0x636F6C6C20746F6F206C6F77 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F7B PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F99 PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FB7 PUSH1 0x26 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FFF PUSH1 0x1B DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5038 PUSH1 0x21 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x507B PUSH1 0xE DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH14 0xC6DEEADCE840DAD2E6DAC2E8C6D PUSH1 0x93 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50A5 PUSH1 0x1 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50C2 PUSH1 0x12 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH18 0x6E6F7420656E6F7567682062616C616E6365 PUSH1 0x70 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50F0 PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x510E PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x512C PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x514A PUSH1 0x21 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x518D PUSH1 0x15 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH21 0xC6EAE4ECCA40E0C2E4C2DAE640E8DEDE40D0D2CED PUSH1 0x5B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51BE PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51DC PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51FA PUSH1 0xF DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH15 0xD8CAECCAD8E640E8DEDE40D0D2CED PUSH1 0x8B SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5225 PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5243 PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5261 PUSH1 0x21 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F DUP2 MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52A4 PUSH1 0xC DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52CC PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52EA PUSH1 0x2 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5308 PUSH1 0x27 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206D756C7469706C69636174696F6E206F DUP2 MSTORE PUSH7 0x766572666C6F77 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5351 PUSH1 0x1D DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x696E76616C6964207261746520636F6C6C61746572616C20746F6B656E000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x538A PUSH1 0xA DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH10 0x37B7363CA830BAB9B2B9 PUSH1 0xB1 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53B0 PUSH1 0xC DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH12 0x1B9BDB9499595B9D1C985B9D PUSH1 0xA2 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53D8 PUSH1 0x24 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 DUP2 MSTORE PUSH4 0x666C6F77 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x541E PUSH1 0x18 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x34303120757365206F66206578697374696E67206C6F616E0000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5457 PUSH1 0x1 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5474 PUSH1 0x20 DUP4 PUSH2 0x5A77 JUMP JUMPDEST PUSH32 0x5369676E6564536166654D6174683A206469766973696F6E206279207A65726F DUP2 MSTORE PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP4 ADD SWAP1 PUSH2 0x54B2 DUP5 DUP3 PUSH2 0x4EB9 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x54C5 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x4E9F JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x54D8 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4D46 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x54EB PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4D46 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x54FE PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x4D46 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x5511 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x4EB9 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x5524 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x4EB9 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x3591 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x4D40 DUP2 PUSH2 0x5AA9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x554C DUP3 DUP6 PUSH2 0x4D4F JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x555C DUP3 DUP5 PUSH2 0x4EA8 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5572 DUP3 DUP6 PUSH2 0x4D4F JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x5582 DUP3 DUP5 PUSH2 0x4EC2 JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5598 DUP3 DUP6 PUSH2 0x4ED3 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH2 0x5582 DUP3 DUP5 PUSH2 0x4EC2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE2 DUP3 DUP5 PUSH2 0x4F17 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xED4 DUP3 DUP5 PUSH2 0x4D46 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xED4 DUP3 DUP5 PUSH2 0x4D37 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x55DE DUP3 DUP6 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0xCE2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D46 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x55F9 DUP3 DUP6 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0xCE2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D37 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x5614 DUP3 DUP7 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x5621 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x10BF PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x563C DUP3 DUP9 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x5649 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x5656 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x5663 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x3A7D PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD PUSH2 0x567E DUP3 DUP10 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x568B PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x5698 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x56A5 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x56B2 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x56BF PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x4EB9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x56D8 DUP3 DUP6 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0xCE2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x56F3 DUP3 DUP7 PUSH2 0x4D46 JUMP JUMPDEST PUSH2 0x5700 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x10BF PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4D37 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCE2 DUP2 DUP5 PUSH2 0x4DAC JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCE2 DUP2 DUP5 PUSH2 0x4E05 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xED4 DUP3 DUP5 PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xED4 DUP3 DUP5 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x1C0 DUP2 ADD PUSH2 0x575A DUP3 DUP11 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x5767 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x5774 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4E9F JUMP JUMPDEST PUSH2 0x5781 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x578E PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4D60 JUMP JUMPDEST PUSH2 0x579C PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4E53 JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x1A0 DUP4 ADD MSTORE PUSH2 0x57AF DUP2 DUP5 PUSH2 0x4EDF JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xCE2 DUP2 DUP5 PUSH2 0x4EDF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x4F46 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x4F6E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x4F8C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x4FAA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x4FF2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x502B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x506E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5098 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x50B5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x50E3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5101 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x511F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x513D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5180 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x51B1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x51CF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x51ED JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5218 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5236 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5254 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5297 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x52BF JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x52DD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x52FB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5344 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x537D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x53A3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x53CB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5411 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x544A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0xED4 DUP2 PUSH2 0x5467 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x56D8 DUP3 DUP6 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x59D9 DUP3 DUP7 PUSH2 0x4EB9 JUMP JUMPDEST PUSH2 0x5621 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0xED4 DUP3 DUP5 PUSH2 0x5537 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5A12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5A30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x5A50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST POP PUSH1 0x4 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST POP PUSH1 0x5 SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x5A9D JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x5A80 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5AE7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5ACF JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x3591 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x5B0E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x5B19 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x5B34 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xED4 DUP3 PUSH2 0x5B2E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x5B43 DUP2 PUSH2 0x5A80 JUMP JUMPDEST DUP2 EQ PUSH2 0x2583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5B43 DUP2 PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x5B43 DUP2 PUSH2 0xEEC JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xB1 GT SWAP1 PUSH8 0x289BA830AC5E3440 PUSH17 0x71C22D97663395CB09DEB2A30FB0A7C9BF SWAP12 0xD8 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV GT STOP BLOCKHASH ",
              "sourceMap": "115:252:158:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:252:158;;30250:914:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;30250:914:5;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;559:36:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;559:36:7;;;:::i;:::-;;;;;;;;26169:332:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26169:332:5;;;;;;;;:::i;1977:18:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1977:18:3;;;:::i;:::-;;;;;;;;1489:181:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1489:181:0;;;;;;;;:::i;:::-;;;;;;;;23294:120:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23294:120:5;;;:::i;24056:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24056:219:5;;;;;;;;:::i;1778:80:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1778:80:1;;;:::i;31167:391:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;31167:391:5;;;;;;;;:::i;:::-;;2441:27:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2441:27:3;;;:::i;2150:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2150:23:3;;;:::i;24745:159:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24745:159:5;;;:::i;17300:315::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17300:315:5;;;;;;;;:::i;12249:2583::-;;;;;;;;;:::i;:::-;;;;;;;;;1580:77:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1580:77:7;;;;;;;;:::i;7601:2798:5:-;;;;;;;;;:::i;598:32:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;598:32:7;;;:::i;2021:21:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2021:21:3;;;:::i;:::-;;;;;;;;2633:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2633:48:3;;;;;;;;:::i;2176:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:29:3;;;:::i;3823:156:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3823:156:5;;;;;;;;:::i;22451:120::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22451:120:5;;;:::i;20318:285::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20318:285:5;;;;;;;;:::i;2310:24:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2310:24:3;;;:::i;22119:227:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22119:227:5;;;:::i;28552:995::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;28552:995:5;;;;;;;;:::i;26954:895::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26954:895:5;;;;;;;;:::i;:::-;;;;;;;;;;1386:73:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1386:73:7;;;;;;;;:::i;2035:96:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2035:96:1;;;;;;;;:::i;47566:377:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;47566:377:5;;;;;;;;:::i;1174:410:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1174:410:4;;;;;;;;:::i;2115:31:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2115:31:3;;;:::i;2407:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2407:31:3;;;:::i;2241:36::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2241:36:3;;;:::i;21419:245:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21419:245:5;;;:::i;25557:509::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25557:509:5;;;;;;;;:::i;22757:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22757:101:5;;;:::i;166:199:158:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;166:199:158;;;;;;;;:::i;851:68:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;851:68:142;;;:::i;976:37:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;976:37:7;;;:::i;1134:83:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1134:83:142;;;:::i;25091:232:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25091:232:5;;;:::i;1998:20:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1998:20:3;;;:::i;633:22:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;633:22:7;;;:::i;4471:340:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4471:340:5;;;;;;;;:::i;899:21:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;899:21:7;;;:::i;16923:145:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16923:145:5;;;;;;;;:::i;23018:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23018:136:5;;;;;;;;:::i;2281:26:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2281:26:3;;;:::i;53404:333:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;53404:333:5;;;;;;;;:::i;815:31:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:31:7;;;:::i;55680:115:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;55680:115:5;;;;;;;;:::i;528:236:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;528:236:4;;;;;;;;:::i;23646:162:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23646:162:5;;;;;;;;:::i;2208:30:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2208:30:3;;;:::i;1977:745:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1977:745:7;;;;;;;;:::i;4714:816::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4714:816:7;;;;;;;;:::i;2464:123:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2464:123:1;;;;;;;;:::i;5857:447:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5857:447:7;;;;;;;;:::i;2854:51:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2854:51:3;;;;;;;;:::i;2904:587:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2904:587:7;;;;;;;;:::i;21843:115:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21843:115:5;;;;;;;;:::i;2337:27:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2337:27:3;;;:::i;1351:98:142:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1351:98:142;;;;;;;;:::i;15691:938:5:-;;;;;;;;;:::i;658:20:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;658:20:7;;;:::i;2355:35:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2355:35:5;;;:::i;30250:914::-;30450:20;30480:18;;30476:685;;-1:-1:-1;;;;;30509:36:5;;30505:84;;30572:17;;-1:-1:-1;;;;;30572:17:5;;-1:-1:-1;30505:84:5;30594:20;30617:13;:81;30666:22;30690:4;30649:46;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;30649:46:5;;;30639:57;;49:4:-1;30639:57:5;;;;30617:81;;;;;;;;;;;30631:66;30617:81;;30731:21;;30775:16;;;30844:74;;-1:-1:-1;;;30844:74:5;;30617:81;;-1:-1:-1;;;;;;30731:21:5;;;;30718:51;;30731:21;30775:16;;;;;;;30797:22;;30825:13;;30731:21;;30844:60;;:74;;30617:81;;30844:74;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30844:74:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30844:74:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30844:74:5;;;;;;;;;30943:4;30718:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30718:251:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30718:251:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30718:251:5;;;;;;;;;30703:266;;30996:86;31028:12;31042:18;:16;:18::i;:::-;31062:19;30996:31;:86::i;:::-;30975:107;-1:-1:-1;31107:20:5;;-1:-1:-1;31107:18:5;;-1:-1:-1;31107:20:5:i;:::-;31092:12;:35;31088:69;;;31150:1;31135:16;;31088:69;30476:685;;30250:914;;;;;:::o;559:36:7:-;;;-1:-1:-1;;;;;559:36:7;;:::o;26169:332:5:-;26274:22;;26230:7;;;;-1:-1:-1;;;;;26274:22:5;:36;26270:153;;26348:22;;26331:87;;-1:-1:-1;;;26331:87:5;;-1:-1:-1;;;;;26348:22:5;;;;26331:64;;:87;;26404:4;;26411:6;;26331:87;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26331:87:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26331:87:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;26331:87:5;;;;;;;;;26317:101;;26270:153;26433:64;26490:6;26433:52;26472:12;:10;:12::i;:::-;26433:34;26455:11;26433:17;26443:6;26433:9;:17::i;:::-;:21;:34;:21;:34;:::i;:::-;:38;:52;:38;:52;:::i;:::-;:56;:64;:56;:64;:::i;:::-;26426:71;;;26169:332;;;;:::o;1977:18:3:-;;;;;;;;;;;;;;-1:-1:-1;;1977:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1489:181:0:-;1574:10;1556:4;1566:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1566:29:0;;;;;;;;;;:38;;;1613;1556:4;;1566:29;;1613:38;;;;1598:6;;1613:38;;;;;;;;;;-1:-1:-1;1662:4:0;1489:181;;;;;:::o;23294:120:5:-;23345:7;23365:45;23389:20;23407:1;23389:17;:20::i;23365:45::-;23358:52;;23294:120;;:::o;24056:219::-;24131:7;24144:19;24166:18;:16;:18::i;:::-;24144:40;-1:-1:-1;24192:16:5;;24188:84;;24222:45;24242:11;24255;24222:19;:45::i;:::-;24215:52;;;;;24188:84;24056:219;;;;:::o;1778:80:1:-;1842:12;;1778:80;:::o;31167:391:5:-;31356:27;31392:101;31418:14;31434:13;31449:19;31470:22;31392:25;:101::i;:::-;31353:140;;;;31528:9;31505:19;:32;;31497:57;;;;-1:-1:-1;;;31497:57:5;;;;;;;;;;;;;;;;;31167:391;;;;;;:::o;2441:27:3:-;;;;:::o;2150:23::-;;;;:::o;24745:159:5:-;24827:21;;24883:16;;;24814:86;;-1:-1:-1;;;24814:86:5;;24794:7;;-1:-1:-1;;;;;24827:21:5;;;;24814:53;;:86;;24876:4;;24827:21;24883:16;;;;;;;24814:86;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24814:86:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24814:86:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;24814:86:5;;;;;;;;17300:315;17518:21;;17505:58;;-1:-1:-1;;;17505:58:5;;17393:4;;17413:198;;17440:5;;17451:3;;17460:6;;-1:-1:-1;;;;;17518:21:5;;17505:46;;:58;;17552:10;;17505:58;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17505:58:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17505:58:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17505:58:5;;;;;;;;;:101;;-1:-1:-1;;;;;17580:14:5;;;;;;:7;:14;;;;;;;;17595:10;17580:26;;;;;;;;17505:101;;;-1:-1:-1;;17505:101:5;17413:21;:198::i;:::-;17403:208;17300:315;-1:-1:-1;;;;17300:315:5:o;12249:2583::-;12754:7;12766;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;12844:13:5;:11;:13::i;:::-;12862:107;12883:14;12899:13;12914:19;12935:22;12959:9;12862:20;:107::i;:::-;-1:-1:-1;;;;;12978:36:5;;12974:94;;13046:17;;-1:-1:-1;;;;;13046:17:5;;-1:-1:-1;12974:94:5;13106:16;;-1:-1:-1;;;;;13080:42:5;;;13106:16;;;;;13080:42;;13072:57;;;;-1:-1:-1;;;13072:57:5;;;;;;;;;13193:11;;;:35;;-1:-1:-1;13208:10:5;-1:-1:-1;;;;;13208:20:5;;;13193:35;13185:72;;;;-1:-1:-1;;;13185:72:5;;;;;;;;;-1:-1:-1;;;;;13307:40:5;;13350:1;13307:40;;;:16;:40;;;;;;:44;13303:122;;-1:-1:-1;;;;;13384:40:5;;;;;;:16;:40;;;;;;13361:63;;;13353:72;;;;;;13450:16;;;;;-1:-1:-1;;;;;13450:16:5;13470:1;13433:34;;;:16;:34;;;;;;:38;13429:104;;13515:16;;;;;-1:-1:-1;;;;;13515:16:5;13498:34;;;;:16;:34;;;;;;13481:51;;;13473:60;;;;;;13694:20;13717:73;13731:22;13755:19;13776:13;13717;:73::i;:::-;13694:96;-1:-1:-1;13802:17:5;13794:32;;;;-1:-1:-1;;;13794:32:5;;;;;;;;;13831:31;;:::i;:::-;13866:29;;:::i;:::-;13927:4;13900:32;;-1:-1:-1;;;;;13952:25:5;;13900:16;13952;;;:25;;;13981:16;;;:25;;;;14123:14;;:29;;;14288:14;;;:30;;;14322:14;;;:36;;;14363:17;:15;:17::i;:::-;14420:120;14485:14;14504:11;14516:1;14504:14;;;;14420:29;:120::i;:::-;14385:155;;14386:14;;;14385:155;14601:36;14614:6;14622:14;14601:12;:36::i;:::-;14584:53;;14651:177;14671:6;14683:1;14709:14;14746:22;14774:13;14793:11;14810:13;14651:14;:177::i;:::-;493:1:143;1234:14;:38;14641:187:5;;;;-1:-1:-1;12249:2583:5;-1:-1:-1;;;;;;;;;;;;12249:2583:5:o;1580:77:7:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1637:6:7;:16;;-1:-1:-1;;;;;;1637:16:7;-1:-1:-1;;;;;1637:16:7;;;;;;;;;;1580:77::o;7601:2798:5:-;8198:7;8210;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;8295:19:5;8287:33;;;;-1:-1:-1;;;8287:33:5;;;;;;;;;8325:13;:11;:13::i;:::-;-1:-1:-1;;;;;8388:40:5;;8431:1;8388:40;;;:16;:40;;;;;;:44;8384:122;;-1:-1:-1;;;;;8465:40:5;;;;;;:16;:40;;;;;;8442:63;;;8434:72;;;;;;8524:9;:14;;:50;;;8555:19;8542:9;:32;8524:50;8523:101;;;;-1:-1:-1;8584:24:5;;;;:39;;-1:-1:-1;8612:11:5;;;8584:39;8523:180;;;;-1:-1:-1;;;;;;8633:36:5;;;;;:54;;-1:-1:-1;8673:9:5;:14;;8633:54;:69;;;-1:-1:-1;8691:11:5;;;8633:69;8523:227;;;;-1:-1:-1;8712:11:5;;;:37;;-1:-1:-1;8727:10:5;-1:-1:-1;;;;;8727:22:5;;;8712:37;8511:251;;;;-1:-1:-1;;;8511:251:5;;;;;;;;;-1:-1:-1;;;;;9283:36:5;;9279:94;;9351:17;;-1:-1:-1;;;;;9351:17:5;;-1:-1:-1;9279:94:5;9410:16;;-1:-1:-1;;;;;9384:42:5;;;9410:16;;;;;9384:42;;9376:57;;;;-1:-1:-1;;;9376:57:5;;;;;;;;;9438:17;:15;:17::i;:::-;9460:31;;:::i;:::-;9495:29;;:::i;:::-;9556:4;9529:32;;-1:-1:-1;;;;;9581:27:5;;;9529:16;9581;;;:27;;;;9612;;;:16;;;:27;9698:14;;:31;;;9860:134;9715:14;9915:20;9543:1;9915:17;:20::i;:::-;9971:19;9860:31;:134::i;:::-;9810:11;9822:1;9810:14;;;9826:11;9838:1;9826:14;;;9842:11;9854:1;9842:14;;;9809:185;;;;;;;;10060:19;10043:11;10055:1;10043:14;;;:36;;;;;10094:301;10114:6;10126:14;10167:21;;;;;;;;;-1:-1:-1;;;;;10167:21:5;-1:-1:-1;;;;;10146:60:5;;10213:13;:81;10262:22;10286:4;10245:46;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10245:46:5;;;10235:57;;;;;;10227:66;;10213:81;;;;;;;;;;;;10146:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10146:154:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10146:154:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10146:154:5;;;;;;;;;10306:22;10334:13;10353:11;10094:301;;;;;;;;;;;;:14;:301::i;:::-;493:1:143;1234:14;:38;10084:311:5;;;;-1:-1:-1;7601:2798:5;-1:-1:-1;;;;;;;;;;;7601:2798:5:o;598:32:7:-;;;-1:-1:-1;;;;;598:32:7;;:::o;2021:21:3:-;;;;;;:::o;2633:48::-;;;;;;;;;;;;;:::o;2176:29::-;;;;:::o;3823:156:5:-;3909:18;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;3940:35:5;3951:8;3961:13;3940:10;:35::i;:::-;3933:42;;1229:1:143;493;1234:14;:38;3823:156:5;;-1:-1:-1;;3823:156:5:o;22451:120::-;22505:7;22525:42;22548:18;:16;:18::i;:::-;22525:22;:42::i;20318:285::-;20373:6;20428:12;20470:4;2569:66;20476:18;;20453:42;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20453:42:5;;;20443:53;;;;;;20428:68;;20529:70;20539:4;20545:8;:14;20554:4;-1:-1:-1;;;;;20545:14:5;-1:-1:-1;;;;;20545:14:5;;;;;;;;;;;;;20561:12;:10;:12::i;:::-;-1:-1:-1;;;;;20575:23:5;;;;;;:17;:23;;;;;;20529:9;:70::i;2310:24:3:-;;;;:::o;22119:227:5:-;22167:7;22180:19;22202:20;22220:1;22202:17;:20::i;:::-;22180:42;;22226:19;22248:18;:16;:18::i;:::-;22226:40;;22288:11;22274;:25;22270:73;;;22313:25;;;-1:-1:-1;22306:32:5;;22270:73;22119:227;;;:::o;28552:995::-;28751:21;28782:17;;28778:766;;28811:23;28838:86;28870:12;28884:18;:16;:18::i;28838:86::-;28806:118;;;;28953:20;:18;:20::i;:::-;28934:15;:39;28930:610;;-1:-1:-1;;;;;28985:36:5;;28981:84;;29048:17;;-1:-1:-1;;;;;29048:17:5;;-1:-1:-1;28981:84:5;29071:20;29094:13;:81;29143:22;29167:4;29126:46;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;29126:46:5;;;29116:57;;49:4:-1;29116:57:5;;;;29094:81;;;;;;;;;;;29108:66;29094:81;;29206:21;;29265:16;;;29342:74;;-1:-1:-1;;;29342:74:5;;29094:81;;-1:-1:-1;29193:292:5;;29482:2;;-1:-1:-1;;;;;29206:21:5;;;;29193:64;;29206:21;29265:16;;;;;29289:22;;29319:15;;29206:21;;29342:60;;:74;;29094:81;;29342:74;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29342:74:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29342:74:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;29342:74:5;;;;;;;;;29442:4;29193:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29193:277:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29193:277:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;29193:277:5;;;;;;;;:292;29181:304;;;;;;26954:895;27163:17;;;-1:-1:-1;;;;;27242:36:5;;27238:94;;27310:17;;-1:-1:-1;;;;;27310:17:5;;-1:-1:-1;27238:94:5;27336:20;27359:73;27373:22;27397:19;27418:13;27359;:73::i;:::-;27336:96;;27465:59;27495:14;27511:12;27465:29;:59::i;:::-;27437:87;;-1:-1:-1;27437:87:5;-1:-1:-1;27544:20:5;:18;:20::i;:::-;27532:9;:32;27528:64;;;-1:-1:-1;27579:1:5;;-1:-1:-1;27579:1:5;;-1:-1:-1;27579:1:5;;-1:-1:-1;27571:16:5;;27528:64;27612:28;:13;27630:9;27612:28;:17;:28;:::i;:::-;27671:21;;27725:16;;;27658:187;;-1:-1:-1;;;27658:187:5;;27596:44;;-1:-1:-1;;;;;;27671:21:5;;;;27658:62;;:187;;27671:21;27725:16;;;;;27746:22;;27596:44;;27791:19;;27815:12;;27832:9;;27658:187;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27658:187:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27658:187:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;27658:187:5;;;;;;;;;27645:200;;26954:895;;;;;;;;;;:::o;1386:73:7:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1441:5:7;:14;;-1:-1:-1;;;;;;1441:14:7;-1:-1:-1;;;;;1441:14:7;;;;;;;;;;1386:73::o;2035:96:1:-;-1:-1:-1;;;;;2111:16:1;2091:7;2111:16;;;:8;:16;;;;;;;2035:96::o;47566:377:5:-;47658:7;47675:16;;;;;:46;;;47710:11;47695;:26;;47675:46;47671:269;;;47739:196;47928:6;47739:178;47839:77;47852:6;47873:21;;;;;;;;;-1:-1:-1;;;;;47873:21:5;-1:-1:-1;;;;;47860:53:5;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;47860:55:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;47860:55:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;47860:55:5;;;;;;;;;47839:12;:77::i;:::-;47739:89;47785:42;47802:11;47815;47785:16;:42::i;:::-;47739:35;47762:11;47739:22;:35::i;:196::-;47728:207;;;;1174:410:4;1278:16;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;1300:87:4;;;;1322:23;1334:10;1322:11;:23::i;:::-;1311:34;;1300:87;;;1365:22;1376:10;1365;:22::i;:::-;1354:33;;1300:87;1480:13;;1476:105;;1500:76;1514:16;;;;;;;;;-1:-1:-1;;;;;1514:16:4;1532:8;1542;1500:76;;;;;;;;;;;;;-1:-1:-1;;;1500:76:4;;;:13;:76::i;:::-;493:1:143;1234:14;:38;1174:410:4;;-1:-1:-1;;;1174:410:4:o;2115:31:3:-;;;;;;-1:-1:-1;;;;;2115:31:3;;:::o;2407:::-;;;;:::o;2241:36::-;;;;:::o;21419:245:5:-;21511:15;;21462:13;;;;21537:15;-1:-1:-1;;;;;21511:42:5;;;:15;;:42;21507:96;;21581:17;:15;:17::i;:::-;21560:38;-1:-1:-1;;21507:96:5;21614:46;21626:33;21644:14;21626:17;:33::i;:::-;21614:11;:46::i;:::-;21607:53;;;21419:245;:::o;25557:509::-;25630:23;25810:27;25840:29;25865:3;25840:20;25857:2;25840:12;;:16;;:20;;;;:::i;:29::-;25810:59;-1:-1:-1;25873:14:5;25890:40;25898:6;25810:59;25890:40;:19;:40;:::i;:::-;25873:57;;25934:19;25956:41;25990:6;25956:29;25978:6;25956:17;:15;:17::i;:41::-;25934:63;-1:-1:-1;26019:43:5;26047:14;26019:23;25934:63;26035:6;26019:23;:15;:23;:::i;:43::-;26001:61;25557:509;-1:-1:-1;;;;;25557:509:5:o;22757:101::-;22808:7;22828:26;22852:1;22828:23;:26::i;166:199:158:-;272:7;281;301:60;331:14;347:13;301:29;:60::i;:::-;294:67;;;;166:199;;;;;;:::o;851:68:142:-;909:6;;-1:-1:-1;;;;;909:6:142;851:68;:::o;976:37:7:-;;;-1:-1:-1;;;;;976:37:7;;:::o;1134:83:142:-;1207:6;;1174:4;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;25091:232:5:-;25183:15;;25140:7;;;;25209:15;-1:-1:-1;;;;;25183:42:5;;;:15;;:42;25179:96;;25253:17;:15;:17::i;:::-;25232:38;-1:-1:-1;;25179:96:5;25286:33;25304:14;25286:17;:33::i;1998:20:3:-;;;;;;;;;;;;;;;-1:-1:-1;;1998:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;633:22:7;;;-1:-1:-1;;;;;633:22:7;;:::o;4471:340:5:-;4554:22;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;4599:22:5;4610:10;4599;:22::i;:::-;4582:39;-1:-1:-1;4715:19:5;;4711:97;;4741:62;4755:16;;;;;;;;;-1:-1:-1;;;;;4755:16:5;4773:8;4783:14;4741:62;;;;;;;;;;;;;-1:-1:-1;;;4741:62:5;;;:13;:62::i;899:21:7:-;;;-1:-1:-1;;;;;899:21:7;;:::o;16923:145:5:-;16988:4;17005:59;17027:10;17039:3;17044:6;-1:-1:-1;;17005:21:5;:59::i;23018:136::-;23093:7;23113:37;23137:12;23113:23;:37::i;2281:26:3:-;;;;:::o;53404:333:5:-;53467:13;53486:10;53533:6;53516:24;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;53516:24:5;;;53506:35;;;;;;53486:56;;53546:12;53588:3;53601:66;53571:98;;;;;;;;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;53571:98:5;;;53561:109;;49:4:-1;53561:109:5;;;;53700:11;;53404:333;-1:-1:-1;;;;53404:333:5:o;815:31:7:-;;;-1:-1:-1;;;;;815:31:7;;:::o;55680:115:5:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;55757:22:5;:34;;-1:-1:-1;;;;;;55757:34:5;-1:-1:-1;;;;;55757:34:5;;;;;;;;;;55680:115::o;528:236:4:-;635:14;493:1:143;1125:14;;:39;1117:64;;;;-1:-1:-1;;;1117:64:143;;;;;;;;;592:1;1185:14;:40;655:105:4;;;;673:36;685:8;695:13;673:11;:36::i;:::-;666:43;;;;655:105;725:35;736:8;746:13;725:10;:35::i;23646:162:5:-;23721:7;23741:63;23765:38;23790:12;23765:20;23783:1;23765:17;:20::i;2208:30:3:-;;;;:::o;1977:745:7:-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;2162:16;;2097:33;;2162:16;;;-1:-1:-1;;;;;2162:16:7;2134:25;2183:174;2207:14;:21;2203:1;:25;2183:174;;;2270:17;2240:14;2255:1;2240:17;;;;;;;;;;;;;;:27;;:47;-1:-1:-1;;;;;2240:47:7;;;-1:-1:-1;;;;;2240:47:7;;;;;2324:14;:28;;2345:7;2324:28;;;2341:1;2324:28;2292:60;;:14;2307:1;2292:17;;;;;;;;;;;;;;;;;;:29;;:60;2230:3;;2183:174;;;-1:-1:-1;2401:21:7;;2380:75;;-1:-1:-1;;;2380:75:7;;-1:-1:-1;;;;;2401:21:7;;;;2380:59;;:75;;2440:14;;2380:75;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2380:75:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2380:75:7;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2380:75:7;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;2380:75:7;;;;;;;;;2361:94;-1:-1:-1;2464:9:7;2459:260;2483:16;:23;2479:1;:27;2459:260;;;2695:16;2712:1;2695:19;;;;;;;;;;;;;;2518:13;:174;2593:14;2608:1;2593:17;;;;;;;;;;;;;;:33;;;2635:14;2568:106;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2568:106:7;;;2551:130;;49:4:-1;2551:130:7;;;;2518:174;;;;;;;;;;2537:150;2518:174;:196;2508:3;;2459:260;;;;1160:1;;1977:745;;:::o;4714:816::-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;1875:6:3;4951:30:7;:15;4971:9;4951:30;:19;:30;:::i;:::-;:55;;4943:89;;;;-1:-1:-1;;;4943:89:7;;;;;;;;;1875:6:3;5044:44:7;:22;5071:16;5044:44;:26;:44;:::i;:::-;:69;;5036:103;;;;-1:-1:-1;;;5036:103:7;;;;;;;;;1875:6:3;5152:12:7;:37;;:76;;;;;1875:6:3;5193:10:7;:35;;5152:76;5144:104;;;;-1:-1:-1;;;5144:104:7;;;;;;;;;5253:8;:20;;;;5277:14;:32;;;;5313:15;:34;;;;5351:21;:46;5402:11;:26;5445:9;:22;5484:12;:28;4714:816::o;2464:123:1:-;-1:-1:-1;;;;;2558:15:1;;;2538:7;2558:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2464:123::o;5857:447:7:-;6000:6;;-1:-1:-1;;;;;6000:6:7;5986:10;:20;5978:43;;;;-1:-1:-1;;;5978:43:7;;;;;;;;;6065:12;6155:6;6138:24;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6138:24:7;;;6128:35;;;;;;6179:66;6098:154;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6098:154:7;;;6083:174;;;;;;6065:192;;6288:8;6282:4;6275:22;6270:31;;;:::o;2854:51:3:-;;;;;;;;;;;;;:::o;2904:587:7:-;1107:9;:7;:9::i;:::-;:32;;;-1:-1:-1;1134:5:7;;-1:-1:-1;;;;;1134:5:7;1120:10;:19;1107:32;1099:57;;;;-1:-1:-1;;;1099:57:7;;;;;;;;;3030:47;;;3022:74;;;;-1:-1:-1;;;3022:74:7;;;;;;;;;3137:38;;;;;;;;;;;;;;;;3101:33;;3151:16;3137:38;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;3137:38:7;-1:-1:-1;3101:74:7;-1:-1:-1;3184:9:7;3179:225;3199:27;;;3179:225;;;3238:10;3286:16;;3303:1;3286:19;;;;;;;;;;;;;;;;;;;;;;3307:13;;3321:1;3307:16;;;;;;;;;;;;;;;;;;;;;;3269:55;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3269:55:7;;;3259:66;;;;;;3251:75;;3238:88;;3353:13;:17;3367:2;3353:17;;;;;;;;;;;;3331:16;3348:1;3331:19;;;;;;;;;;;;;;;;;;:39;;;;3382:17;;;;:13;:17;;;;;3375:24;3228:3;;3179:225;;;-1:-1:-1;3429:21:7;;3408:79;;-1:-1:-1;;;3408:79:7;;-1:-1:-1;;;;;3429:21:7;;;;3408:61;;:79;;3470:16;;3408:79;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3408:79:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3408:79:7;;;;1160:1;2904:587;;;;:::o;21843:115:5:-;-1:-1:-1;;;;;21930:24:5;21904:13;21930:24;;;:17;:24;;;;;;;21843:115::o;2337:27:3:-;;;;:::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;15691:938:5:-;16216:7;;-1:-1:-1;;;;;16310:31:5;;;16306:139;;16374:21;;16346:99;;-1:-1:-1;;;16346:99:5;;-1:-1:-1;;;;;16374:21:5;;;;16346:72;;:99;;16419:6;;16427:17;;16346:99;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16346:99:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16346:99:5;;;;16306:139;16459:166;16476:6;16488:14;16508:13;16527:19;16552:22;16580:6;16592:9;16607:13;;16459:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16459:11:5;;-1:-1:-1;;;16459:166:5:i;:::-;16449:176;;;;15691:938;;;;;;;;;;;;;:::o;658:20:7:-;;;-1:-1:-1;;;;;658:20:7;;:::o;2355:35:5:-;2389:1;2355:35;:::o;37694:703::-;37874:20;37899:29;37933:23;37981:51;38006:12;38020:11;37981:24;:51::i;:::-;37966:66;-1:-1:-1;38162:169:5;38195:132;38213:6;38225:72;38279:17;38225:49;38213:6;38225:37;37966:66;38242:19;38225:37;:16;:37;:::i;38195:132::-;38162:24;:12;38179:6;38162:24;:16;:24;:::i;:169::-;38144:187;-1:-1:-1;38360:33:5;38144:187;38380:12;38360:33;:19;:33;:::i;:::-;38336:57;;37694:703;;;;;;;:::o;46398:126::-;46478:16;;;46471:49;;-1:-1:-1;;;46471:49:5;;46451:7;;46478:16;;;;-1:-1:-1;;;;;46478:16:5;;46471:34;;:49;;46514:4;;46471:49;;;812:155:145;870:7;895:5;;;912:6;;;;904:46;;;;-1:-1:-1;;;904:46:145;;;;;;;;1999:399;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;2817:121;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;:3;:39::i;52722:395:5:-;52796:19;52825:12;;52841:1;52825:17;52821:293;;52873:19;;52972:18;52968:96;;53014:44;53039:18;:16;:18::i;:::-;53014:20;:18;:20::i;:44::-;52998:60;;52968:96;53076:33;:13;53094:14;53076:33;:17;:33;:::i;17998:1140::-;18128:4;-1:-1:-1;;18142:16:5;:31;18138:110;;18209:34;;;;;;;;;;;;-1:-1:-1;;;18209:34:5;;;;;;:16;;18230:6;;18209:34;:20;:34;:::i;:::-;-1:-1:-1;;;;;18180:14:5;;;;;;:7;:14;;;;;;;;18195:10;18180:26;;;;;;;:63;18138:110;-1:-1:-1;;;;;18260:17:5;;18252:32;;;;-1:-1:-1;;;18252:32:5;;;;;;;;;-1:-1:-1;;;;;18313:15:5;;18289:21;18313:15;;;:8;:15;;;;;;;;;18359:31;;;;;;;;;;;-1:-1:-1;;;18359:31:5;;;;;;;18313:15;;18289:21;18359:31;;18313:15;;18377:6;;18359:31;:17;:31;:::i;:::-;-1:-1:-1;;;;;18394:15:5;;;;;;;:8;:15;;;;;;:34;;;18455:13;;;;;;;;;18332:58;;-1:-1:-1;18497:23:5;18455:13;18513:6;18497:23;:15;:23;:::i;:::-;-1:-1:-1;;;;;18524:13:5;;;;;;:8;:13;;;;;:30;;;18472:48;;-1:-1:-1;18620:12:5;:10;:12::i;:::-;18870:22;;18596:36;;-1:-1:-1;;;;;;18861:31:5;;;18870:22;;18861:31;;;;:64;;-1:-1:-1;18903:22:5;;-1:-1:-1;;;;;18896:29:5;;;18903:22;;18896:29;;18861:64;18857:225;;;18932:73;18951:5;18958:13;18973:16;18991:13;18932:18;:73::i;:::-;19010:67;19029:3;19034:11;19047:14;19063:13;19010:18;:67::i;:::-;19107:3;-1:-1:-1;;;;;19091:28:5;19100:5;-1:-1:-1;;;;;19091:28:5;;19112:6;19091:28;;;;;;;;;;;;;;;-1:-1:-1;19130:4:5;;17998:1140;-1:-1:-1;;;;;;;;;17998:1140:5:o;53915:312::-;53996:12;54038:7;;-1:-1:-1;;;;;;54038:7:5;54055:66;54021:102;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;54021:102:5;;;54011:113;;;;;;53996:128;;54128:13;54177:4;54171:11;54159:23;;54198:8;54197:9;54189:34;;;;-1:-1:-1;;;54189:34:5;;;;;;;;;53915:312;;:::o;35831:1405::-;36011:13;36033:24;;36029:1204;;36121:28;36151:33;36215:21;;;;;;;;;-1:-1:-1;;;;;36215:21:5;-1:-1:-1;;;;;36202:46:5;;:48;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36202:48:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36202:48:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36202:48:5;;;;;;;;;36286:16;;;36192:111;;-1:-1:-1;;;36192:111:5;;-1:-1:-1;;;;;36192:69:5;;;;;;:111;;36262:22;;36286:16;;;;;;;;36192:111;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36192:111:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36192:111:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36192:111:5;;;;;;;;;36120:183;;;;36317:20;36341:1;36317:25;;36316:63;;;;-1:-1:-1;36348:30:5;;;36316:63;36308:105;;;;-1:-1:-1;;;36308:105:5;;;;;;;;;36483:23;36509:76;36559:25;36509:45;:19;36533:20;36509:45;:23;:45;:::i;:76::-;36758:21;;36803:16;;;36745:116;;-1:-1:-1;;;36745:116:5;;36483:102;;-1:-1:-1;36709:29:5;;-1:-1:-1;;;;;36758:21:5;;;;36745:57;;:116;;36758:21;36803:16;;;;;;36821:22;;36483:102;;36745:116;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36745:116:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36745:116:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36745:116:5;;;;;;;;;36709:152;;36959:19;36934:21;:44;36930:245;;37102:67;37149:19;37102:42;:15;37122:21;37102:42;:19;:42;:::i;:67::-;37084:85;;36930:245;37195:33;:15;37215:12;37195:33;:19;:33;:::i;:::-;37180:48;35831:1405;-1:-1:-1;;;;;;;;35831:1405:5:o;35182:222::-;35265:15;;35241;;-1:-1:-1;;;;;35265:21:5;;;:15;;:21;35261:140;;35306:21;;35353:16;;;35293:77;;-1:-1:-1;;;35293:77:5;;-1:-1:-1;;;;;35306:21:5;;;;35293:59;;:77;;35306:21;35353:16;;;;;;35293:77;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35293:77:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;35376:15:5;:20;;-1:-1:-1;;;;;35376:20:5;;-1:-1:-1;;35376:20:5;;;;;;-1:-1:-1;;35182:222:5;:::o;51862:662::-;51977:20;;;52059:45;52097:6;52059:33;:13;52077:14;52059:33;:17;:33;:::i;:45::-;52026:78;;52294:70;52319:22;52343:20;52361:1;52343:17;:20::i;:::-;52294:24;:70::i;:::-;52279:85;;52458:62;52474:12;52488:7;52497:22;52458:15;:62::i;:::-;52443:77;;51862:662;;;;;;:::o;39227:2094::-;39473:7;39482;39495:13;:11;:13::i;:::-;39542:20;:18;:20::i;:::-;39524:14;;;;:38;;;;:118;;-1:-1:-1;39612:16:5;;;;-1:-1:-1;;;;;39612:30:5;;;39524:118;39512:161;;;;-1:-1:-1;;;39512:161:5;;;;;;;;;39682:16;;;;-1:-1:-1;;;;;39682:30:5;39678:114;;39738:16;;;;-1:-1:-1;;;;;39719:35:5;:16;;;:35;39678:114;39870:16;39889:84;39906:22;39930:13;39945:11;39958:14;39889:16;:84::i;:::-;40160:14;;;;40141;;;;39870:103;;-1:-1:-1;40141:34:5;;:14;:18;:34::i;:::-;40124:14;;;:51;40201:19;;40197:184;;40342:14;;;;:34;;40361:14;40342:18;:34::i;:::-;40325:14;;;:51;40197:184;40385:24;40480:19;;40476:61;;-1:-1:-1;40528:4:5;40476:61;40541:20;40564:13;:96;40613:22;40637:19;40596:61;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;40596:61:5;;;40586:72;;;;;;40578:81;;40564:96;;;;;;;;;;;;40541:119;;40713:21;;;;;;;;;-1:-1:-1;;;;;40713:21:5;-1:-1:-1;;;;;40700:57:5;;40764:8;40810:12;40827:6;40838:19;40862:13;40880;40898:11;40914:13;40700:231;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40700:231:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40700:231:5;;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;40700:231:5;;;;;;;;;40682:14;;;40665:266;40666:14;;;40665:266;;;40935:34;;;;-1:-1:-1;;;40935:34:5;;;;;;;;;41177:21;;41225:16;;;;41149:93;;-1:-1:-1;;;41149:93:5;;-1:-1:-1;;;;;41177:21:5;;;;41149:75;;:93;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41149:93:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41149:93:5;;;;41255:11;41267:1;41255:14;;;;;;;;;;;41271;;;;;41255;;41271;;-1:-1:-1;39227:2094:5;;-1:-1:-1;;;;;;;;;;39227:2094:5:o;31864:901::-;31943:18;31967:20;32084:30;32100:13;32084:15;:30::i;:::-;32296:22;;32055:59;;-1:-1:-1;32055:59:5;-1:-1:-1;32265:19:5;;-1:-1:-1;;;;;32296:22:5;:36;32292:148;;32368:22;;32351:89;;-1:-1:-1;;;32351:89:5;;-1:-1:-1;;;;;32368:22:5;;;;32351:64;;:89;;32424:4;;32431:8;;32351:89;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32351:89:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32351:89:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;32351:89:5;;;;;;;;;32337:103;;32292:148;-1:-1:-1;;;;;32465:18:5;;32444;32465;;;:8;:18;;;;;;:35;;32488:11;32465:35;:22;:35;:::i;:::-;32444:56;-1:-1:-1;32504:18:5;32525:26;32444:56;32540:10;32525:26;:14;:26;:::i;:::-;32504:47;;32592:56;32598:8;32608:10;32620:13;32635:12;32592:5;:56::i;:::-;;32695:66;32714:8;32724:10;32736;32748:12;32695:18;:66::i;:::-;31864:901;;;;;;;;:::o;47086:242::-;47162:7;47179:16;;47175:150;;47203:26;47235:17;:15;:17::i;:::-;-1:-1:-1;47202:50:5;-1:-1:-1;47264:56:5;47308:11;47264:39;47299:3;47264:30;47202:50;47287:6;47264:30;:22;:30;:::i;20916:383::-;21050:18;21078:21;21074:45;;-1:-1:-1;21113:1:5;21106:8;;21074:45;-1:-1:-1;21152:11:5;;21185:110;21152:11;21185:93;1927:6:3;21185:73:5;21248:8;21185:51;21192:13;21218:16;21185:51;:25;:51;:::i;:::-;:55;:73;:55;:73;:::i;:::-;:77;:93;:77;:93;:::i;:::-;:97;:110;:97;:110;:::i;1201:125:145:-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;55301:245:5:-;55392:7;55409:16;;;;;:36;;-1:-1:-1;55429:16:5;;;55409:36;55405:138;;;55498:40;55526:11;55498:23;:11;55514:6;55498:23;:15;:23;:::i;56237:681::-;56348:22;;56331:91;;-1:-1:-1;;;56331:91:5;;56296:7;;;;-1:-1:-1;;;;;56348:22:5;;;;56331:64;;:91;;56404:4;;56411:10;;56331:91;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56331:91:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;56331:91:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;56331:91:5;;;;;;;;;56309:113;;56476:10;56434:38;56450:21;56460:10;56450:9;:21::i;:::-;56434:11;;:38;:15;:38;:::i;:::-;:52;;56426:83;;;;-1:-1:-1;;;56426:83:5;;;;;;;;;56518:15;;56514:330;;56621:10;56607:11;:24;56603:237;;;56656:22;;56639:89;;-1:-1:-1;;;56639:89:5;;-1:-1:-1;;;;;56656:22:5;;;;56639:49;;:89;;56697:4;;56704:11;;56717:10;;56639:89;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56639:89:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;56639:89:5;;;;56603:237;;;56763:22;;56746:88;;-1:-1:-1;;;56746:88:5;;-1:-1:-1;;;;;56763:22:5;;;;56746:49;;:88;;56804:4;;56811:10;;56823;;56746:88;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56746:88:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;56746:88:5;;;;56603:237;56892:22;56903:10;33643:1275;33701:22;33737:15;33729:30;;;;-1:-1:-1;;;33729:30:5;;;;;;;;;33781:21;33791:10;33781:9;:21::i;:::-;33768:10;:34;33764:129;;;-1:-1:-1;;33817:10:5;:25;33809:40;;;;-1:-1:-1;;;33809:40:5;;;;;;;;;33867:21;33877:10;33867:9;:21::i;:::-;33854:34;;33764:129;33897:17;:15;:17::i;:::-;33919:20;33942:33;33954:20;33972:1;33954:17;:20::i;33942:33::-;33919:56;-1:-1:-1;33980:22:5;34005:40;34038:6;34005:28;:10;33919:56;34005:28;:14;:28;:::i;:40::-;33980:65;;34049:37;34089:20;:18;:20::i;:::-;34049:60;;34131:14;34114:31;;34175:29;34157:14;:47;;34149:62;;;;-1:-1:-1;;;34149:62:5;;;;;;;;;34393:22;;34362:19;;-1:-1:-1;;;;;34393:22:5;:36;34389:150;;34465:22;;34448:91;;-1:-1:-1;;;34448:91:5;;-1:-1:-1;;;;;34465:22:5;;;;34448:64;;:91;;34521:4;;34528:10;;34448:91;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34448:91:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34448:91:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;34448:91:5;;;;;;;;;34434:105;;34389:150;34573:10;34543:18;34564:20;;;:8;:20;;;;;;:37;;34589:11;34564:37;:24;:37;:::i;:::-;34543:58;-1:-1:-1;34605:18:5;34626:26;34543:58;34641:10;34626:26;:14;:26;:::i;:::-;34605:47;;34657:59;34663:10;34675;34687:14;34703:12;34657:5;:59::i;:::-;;34846:68;34865:10;34877;34889;34901:12;34846:18;:68::i;:::-;33643:1275;;;;;;;;;:::o;44412:223::-;44553:67;;44526:105;;44546:5;;-1:-1:-1;;;44576:31:5;44553:67;;44609:2;;44613:6;;44553:67;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;44553:67:5;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;44553:67:5;;;179:29:-1;;;;160:49;;;44622:8:5;44526:19;:105::i;:::-;44412:223;;;;:::o;51023:508::-;51346:21;;51413:16;;;51333:100;;-1:-1:-1;;;51333:100:5;;51073:26;;;;;;-1:-1:-1;;;;;51346:21:5;;;;51333:57;;:100;;51403:4;;51346:21;51413:16;;;;;;51333:100;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51333:100:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;51333:100:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;51333:100:5;;;;;;;;;-1:-1:-1;51268:165:5;;-1:-1:-1;51268:165:5;-1:-1:-1;51268:165:5;-1:-1:-1;51455:72:5;;-1:-1:-1;51520:6:5;;-1:-1:-1;51455:60:5;51474:40;51520:6;51268:165;51474:12;:40::i;:::-;51455:14;;:60;:18;:60;:::i;:72::-;51438:89;;51023:508;;;:::o;46696:217::-;46801:12;;46761:7;;46825:21;:84;;46897:12;;46825:84;;;46849:45;46877:16;46849:23;:11;46865:6;46849:23;:15;:23;:::i;48120:465::-;48198:7;;48241:17;;48237:260;;48269:15;;48295;-1:-1:-1;;;;;48269:42:5;;;:15;;:42;48265:98;;48340:17;:15;:17::i;:::-;48319:38;-1:-1:-1;;48265:98:5;48368:15;48386:40;48411:14;48386:20;:18;:20::i;:40::-;48368:58;;48450:7;48435:12;:22;48431:62;;;48480:7;48465:22;;48431:62;48237:260;;48508:73;48533:12;48547:33;48565:14;48547:17;:33::i;780:87:137:-;853:10;780:87;:::o;55798:436:5:-;55878:14;55944:35;55955:8;55965:13;55944:10;:35::i;:::-;56076:22;;55935:44;;-1:-1:-1;56044:71:5;;56066:8;;-1:-1:-1;;;;;56076:22:5;55935:44;;56044:21;:71::i;:::-;-1:-1:-1;56171:22:5;;56154:76;;-1:-1:-1;;;56154:76:5;;-1:-1:-1;;;;;56171:22:5;;;;56154:58;;:76;;56213:8;;56223:6;;56154:76;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56154:76:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;1538:204:142;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;1679:38;;1700:6;;1679:38;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o;49432:1397:5:-;49535:16;49557;49576:70;49593:39;49616:15;49593:18;:16;:18::i;:39::-;49634:11;49576:16;:70::i;:::-;49720:8;;49761:14;;49805:11;;49844:9;;49884:12;;49557:89;;-1:-1:-1;49651:19:5;;;;49720:8;49761:14;49805:11;49844:9;49905:26;;;49901:143;;;50024:15;50013:26;;49901:143;50063:13;50052:8;:24;50048:778;;;50221:25;;;;;1875:6:3;50155:37:5;;;50255:23;;;50251:52;;;50291:12;50280:23;;50251:52;50323:82;1875:6:3;50323:55:5;50364:13;50323:36;:18;50346:12;50323:36;:22;:36;:::i;:82::-;50309:96;;50422:92;50502:11;50422:75;50484:12;50422:57;50435:43;50448:16;50466:11;50435:12;:43::i;:::-;50422:8;;:57;:12;:57;:::i;:92::-;50411:103;;50048:778;;;;50541:77;50605:12;50541:59;1875:6:3;50541:32:5;:8;50554:18;50541:32;:12;:32;:::i;:77::-;50530:88;-1:-1:-1;50638:12:5;;-1:-1:-1;50638:12:5;;50669:36;:18;50638:12;50669:36;:22;:36;:::i;:::-;50655:50;;50726:11;50715:8;:22;50711:110;;;50750:11;50739:22;;50711:110;;;50786:11;50775:8;:22;50771:50;;;50810:11;50799:22;;50771:50;49432:1397;;;;;;;;;;;;:::o;3411:315:145:-;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o;1614:175::-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;19597:545:5:-;19797:43;;19772:12;;19797:43;;19814:5;;2569:66;;19797:43;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19797:43:5;;;19787:54;;;;;;19772:69;;19846:21;19875:11;19890:1;19875:16;19871:173;;;19914:1;19898:17;;19871:173;;;19930:16;;19926:118;;-1:-1:-1;;;;;20014:24:5;;;;;;:17;:24;;;;;;19970:69;;19980:4;;19986:11;;19999:13;;19970:9;:69::i;:::-;19953:86;;19926:118;20062:28;;-1:-1:-1;;;;;20098:24:5;;;;;;;:17;:24;;;;;:40;;;;-1:-1:-1;;19597:545:5:o;54658:379::-;54790:28;;54854:43;54888:8;54854:29;:12;54871:11;54854:29;:16;:29;:::i;:43::-;54824:73;-1:-1:-1;54901:15:5;54919:40;54927:6;54824:73;54919:40;:19;:40;:::i;:::-;54901:58;-1:-1:-1;54986:47:5;54901:58;54986:34;:22;55013:6;54986:34;:26;:34;:::i;:47::-;54963:70;54658:379;-1:-1:-1;;;;;;54658:379:5:o;42095:1686::-;42316:17;;42365:16;;42404;;;;;42447:14;;;42489;;;;42537;;;;42272:16;;-1:-1:-1;;;;;42316:17:5;;;;;42365:16;;;;;42404;42447:14;42489;42537;42564:43;;;;;42556:58;;;;-1:-1:-1;;;42556:58:5;;;;;;;;;42630:9;;-1:-1:-1;42648:21:5;;42644:367;;42706:64;42720:17;42739:8;42749:16;42706:64;;;;;;;;;;;;:13;:64::i;:::-;42794:16;42779:12;:31;42775:141;;;42851:21;;42818:92;;;;;;;;;42851:21;42818:92;;;;42832:17;;-1:-1:-1;;;;;42851:21:5;;;;42874:31;;;;42818:13;:92::i;:::-;42644:367;;;42964:21;;42931:75;;;;;;;;;;;;-1:-1:-1;;;42931:75:5;;;;;;42945:17;;-1:-1:-1;;;;;42964:21:5;;;;42987:12;;42931:13;:75::i;:::-;43195:24;;43191:457;;43256:11;-1:-1:-1;;;;;43230:37:5;:22;-1:-1:-1;;;;;43230:37:5;;:54;;;;-1:-1:-1;43271:13:5;;;43230:54;:89;;;;;43300:19;43288:8;:31;;43230:89;43226:418;;;43334:11;-1:-1:-1;;;;;43327:27:5;;43361:19;43327:56;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43327:56:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;43427:21:5;;43389:89;;;;;;;;;;;;-1:-1:-1;;;43389:89:5;;;;;;-1:-1:-1;43403:22:5;;-1:-1:-1;;;;;;43427:21:5;;;;-1:-1:-1;43450:19:5;;43389:13;:89::i;:::-;43496:19;43484:31;;;;43226:418;;;43587:21;;43533:105;;;;;;;;;;;;-1:-1:-1;;;43533:105:5;;;;;;43551:22;;43575:10;;-1:-1:-1;;;;;43587:21:5;;43610:19;;43533:17;:105::i;:::-;43656:18;;43652:126;;43730:21;;43681:92;;;;;;;;;;;;-1:-1:-1;;;43681:92:5;;;;;;43699:17;;43718:10;;-1:-1:-1;;;;;43730:21:5;;43753:13;;43681:17;:92::i;:::-;42095:1686;;;;;;;;;;;;:::o;32980:473::-;33046:18;;33100;33092:33;;;;-1:-1:-1;;;33092:33:5;;;;;;;;;33130:17;:15;:17::i;:::-;33167:33;33179:20;33197:1;33179:17;:20::i;33167:33::-;33152:48;-1:-1:-1;33217:43:5;33152:48;33217:25;:13;33235:6;33217:25;:17;:25;:::i;:43::-;33204:56;-1:-1:-1;33269:9:5;33265:185;;33290:83;33308:16;;;;;;;;;-1:-1:-1;;;;;33308:16:5;33326:10;33346:4;33353:13;33290:83;;;;;;;;;;;;;-1:-1:-1;;;33290:83:5;;;:17;:83::i;:::-;33265:185;;;33396:17;;;;;;;;;-1:-1:-1;;;;;33396:17:5;-1:-1:-1;;;;;33389:33:5;;33429:13;33389:56;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33389:56:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33389:56:5;;;;;33265:185;32980:473;;;:::o;2167:422:0:-;2284:7;-1:-1:-1;;;;;2305:17:0;;2297:32;;;;-1:-1:-1;;;2297:32:0;;;;;;;;;-1:-1:-1;;;;;2353:13:0;;2334:16;2353:13;;;:8;:13;;;;;;:31;;2371:12;2353:31;:17;:31;:::i;:::-;-1:-1:-1;;;;;2388:13:0;;;;;;:8;:13;;;;;:24;;;2432:12;;2334:50;;-1:-1:-1;2432:30:0;;2449:12;2432:30;:16;:30;:::i;:::-;2417:12;:45;2472;;-1:-1:-1;;;;;2472:45:0;;;;;;;2482:12;;2496;;2510:6;;2472:45;;;;;;;;;;2547:3;-1:-1:-1;;;;;2526:39:0;2543:1;-1:-1:-1;;;;;2526:39:0;;2552:12;2526:39;;;;;;;;;;;;;;;2577:8;2167:422;-1:-1:-1;;;;;2167:422:0:o;1774:192:146:-;1830:6;1853:5;;;1871:6;;;;;;:16;;;1886:1;1881;:6;;1871:16;1870:38;;;;1897:1;1893;:5;:14;;;;;1906:1;1902;:5;1893:14;1862:87;;;;-1:-1:-1;;;1862:87:146;;;;;;;;422:488;478:6;694;690:30;;-1:-1:-1;714:1:146;707:8;;690:30;734:1;-1:-1:-1;;734:7:146;:27;;;;;-1:-1:-1;;;745:1:146;:16;734:27;732:30;724:82;;;;-1:-1:-1;;;724:82:146;;;;;;;;;822:5;;;826:1;822;:5;:1;839:5;;;;;:10;831:62;;;;-1:-1:-1;;;831:62:146;;;;;;;;1331:237;1387:6;1407;1399:51;;;;-1:-1:-1;;;1399:51:146;;;;;;;;;1464:1;-1:-1:-1;;1464:7:146;:27;;;;;-1:-1:-1;;;1475:1:146;:16;1464:27;1462:30;1454:76;;;;-1:-1:-1;;;1454:76:146;;;;;;;;;1535:8;1550:1;1546;:5;;;;;;;1331:237;-1:-1:-1;;;;1331:237:146:o;2166:189::-;2222:6;2245:5;;;2263:6;;;;;;:16;;;2278:1;2273;:6;;2263:16;2262:38;;;;2289:1;2285;:5;:14;;;;;2298:1;2294;:5;2285:14;2254:84;;;;-1:-1:-1;;;2254:84:146;;;;;;;;3070:641:0;3256:38;;;;;;;;;;;-1:-1:-1;;;3256:38:0;;;;;;;;-1:-1:-1;;;;;3256:14:0;;3188:7;3256:14;;;:8;:14;;;;;;;3188:7;;3256:38;;:14;3275:12;;3256:38;:18;:38;:::i;:::-;3237:57;;3381:2;3369:8;:14;3365:140;;3457:26;:12;3474:8;3457:26;:16;:26;:::i;:::-;3442:41;;3499:1;3488:12;;3365:140;-1:-1:-1;;;;;3508:14:0;;;;;;:8;:14;;;;;:25;;;3553:12;;:30;;3570:12;3553:30;:16;:30;:::i;:::-;3538:12;:45;3593:46;;-1:-1:-1;;;;;3593:46:0;;;;;;;3604:12;;3618;;3632:6;;3593:46;;;;;;;;;;3671:1;-1:-1:-1;;;;;3648:40:0;3657:4;-1:-1:-1;;;;;3648:40:0;;3675:12;3648:40;;;;;;;45987:292:5;46097:12;46111:23;46138:5;-1:-1:-1;;;;;46138:10:5;46149:4;46138:16;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;46096:58:5;;;;46166:7;46175:8;46158:26;;;;;-1:-1:-1;;;46158:26:5;;;;;;;;;;-1:-1:-1;46193:17:5;;:22;46189:87;;46241:10;46230:30;;;;;;;;;;;;;;46262:8;46222:49;;;;;-1:-1:-1;;;46222:49:5;;;;;;;;;45306:253;45467:77;;45440:115;;45460:5;;-1:-1:-1;;;45490:35:5;45467:77;;45527:4;;45533:2;;45537:6;;45467:77;;;;115:252:158;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;115:252:158;;;-1:-1:-1;;115:252:158:o;:::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;115:252:158;;;-1:-1:-1;;115:252:158:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;301:352;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;-1:-1;469:20;;-1:-1;;;;;498:30;;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;1051:722;;1179:3;1172:4;1164:6;1160:17;1156:27;1146:2;;1197:1;1194;1187:12;1146:2;1227:6;1221:13;1249:80;1264:64;1321:6;1264:64;;;1249:80;;;1240:89;;1346:5;1371:6;1364:5;1357:21;1401:4;1393:6;1389:17;1379:27;;1423:4;1418:3;1414:14;1407:21;;1476:6;1523:3;1515:4;1507:6;1503:17;1498:3;1494:27;1491:36;1488:2;;;1540:1;1537;1530:12;1488:2;1565:1;1550:217;1575:6;1572:1;1569:13;1550:217;;;1633:3;1655:48;1699:3;1687:10;1655:48;;;1643:61;;-1:-1;1727:4;1718:14;;;;1746;;;;;1597:1;1590:9;1550:217;;1826:783;;1967:3;1960:4;1952:6;1948:17;1944:27;1934:2;;1985:1;1982;1975:12;1934:2;2022:6;2009:20;2044:104;2059:88;2140:6;2059:88;;2044:104;2035:113;;2165:5;2190:6;2183:5;2176:21;2220:4;2212:6;2208:17;2198:27;;2242:4;2237:3;2233:14;2226:21;;2295:6;2344:3;2334:6;2326;2322:19;2317:3;2313:29;2310:38;2307:2;;;2361:1;2358;2351:12;2307:2;2386:1;2371:232;2396:6;2393:1;2390:13;2371:232;;;2454:3;2476:61;2533:3;2521:10;2476:61;;;2464:74;;-1:-1;2561:4;2552:14;;;;2589:6;2580:16;;;;;2418:1;2411:9;2371:232;;2617:124;2681:20;;2706:30;2681:20;2706:30;;2748:128;2823:13;;2841:30;2823:13;2841:30;;2883:130;2950:20;;2975:33;2950:20;2975:33;;3020:134;3098:13;;3116:33;3098:13;3116:33;;3175:336;;;3289:3;3282:4;3274:6;3270:17;3266:27;3256:2;;3307:1;3304;3297:12;3256:2;-1:-1;3327:20;;-1:-1;;;;;3356:30;;3353:2;;;3399:1;3396;3389:12;3353:2;3433:4;3425:6;3421:17;3409:29;;3484:3;3476:4;3468:6;3464:17;3454:8;3450:32;3447:41;3444:2;;;3501:1;3498;3491:12;3520:440;;3621:3;3614:4;3606:6;3602:17;3598:27;3588:2;;3639:1;3636;3629:12;3588:2;3676:6;3663:20;3698:64;3713:48;3754:6;3713:48;;3698:64;3689:73;;3782:6;3775:5;3768:21;3818:4;3810:6;3806:17;3851:4;3844:5;3840:16;3886:3;3877:6;3872:3;3868:16;3865:25;3862:2;;;3903:1;3900;3893:12;3862:2;3913:41;3947:6;3942:3;3937;3913:41;;;3581:379;;;;;;;;4460:1384;;4573:6;4561:9;4556:3;4552:19;4548:32;4545:2;;;4593:1;4590;4583:12;4545:2;4611:22;4626:6;4611:22;;;4602:31;-1:-1;4681:1;4713:49;4758:3;4738:9;4713:49;;;4688:75;;-1:-1;4826:2;4859:46;4901:3;4877:22;;;4859:46;;;4852:4;4845:5;4841:16;4834:72;4784:133;4968:2;5001:49;5046:3;5037:6;5026:9;5022:22;5001:49;;;4994:4;4987:5;4983:16;4976:75;4927:135;5117:2;5150:49;5195:3;5186:6;5175:9;5171:22;5150:49;;;5143:4;5136:5;5132:16;5125:75;5072:139;5272:3;5306:49;5351:3;5342:6;5331:9;5327:22;5306:49;;;5299:4;5292:5;5288:16;5281:75;5221:146;5429:3;5463:49;5508:3;5499:6;5488:9;5484:22;5463:49;;;5456:4;5449:5;5445:16;5438:75;5377:147;5587:3;5621:49;5666:3;5657:6;5646:9;5642:22;5621:49;;;5614:4;5607:5;5603:16;5596:75;5534:148;5739:3;5773:49;5818:3;5809:6;5798:9;5794:22;5773:49;;;5766:4;5759:5;5755:16;5748:75;5692:142;4539:1305;;;;;6129:241;;6233:2;6221:9;6212:7;6208:23;6204:32;6201:2;;;6249:1;6246;6239:12;6201:2;6284:1;6301:53;6346:7;6326:9;6301:53;;6377:263;;6492:2;6480:9;6471:7;6467:23;6463:32;6460:2;;;6508:1;6505;6498:12;6460:2;6543:1;6560:64;6616:7;6596:9;6560:64;;6647:366;;;6768:2;6756:9;6747:7;6743:23;6739:32;6736:2;;;6784:1;6781;6774:12;6736:2;6819:1;6836:53;6881:7;6861:9;6836:53;;;6826:63;;6798:97;6926:2;6944:53;6989:7;6980:6;6969:9;6965:22;6944:53;;;6934:63;;6905:98;6730:283;;;;;;7020:491;;;;7158:2;7146:9;7137:7;7133:23;7129:32;7126:2;;;7174:1;7171;7164:12;7126:2;7209:1;7226:53;7271:7;7251:9;7226:53;;;7216:63;;7188:97;7316:2;7334:53;7379:7;7370:6;7359:9;7355:22;7334:53;;;7324:63;;7295:98;7424:2;7442:53;7487:7;7478:6;7467:9;7463:22;7442:53;;;7432:63;;7403:98;7120:391;;;;;;7518:366;;;7639:2;7627:9;7618:7;7614:23;7610:32;7607:2;;;7655:1;7652;7645:12;7607:2;7690:1;7707:53;7752:7;7732:9;7707:53;;;7697:63;;7669:97;7797:2;7815:53;7860:7;7851:6;7840:9;7836:22;7815:53;;7891:485;;;;8026:2;8014:9;8005:7;8001:23;7997:32;7994:2;;;8042:1;8039;8032:12;7994:2;8077:1;8094:53;8139:7;8119:9;8094:53;;;8084:63;;8056:97;8184:2;8202:53;8247:7;8238:6;8227:9;8223:22;8202:53;;;8192:63;;8163:98;8292:2;8310:50;8352:7;8343:6;8332:9;8328:22;8310:50;;8383:672;;;;;8571:2;8559:9;8550:7;8546:23;8542:32;8539:2;;;8587:1;8584;8577:12;8539:2;8622:31;;-1:-1;;;;;8662:30;;8659:2;;;8705:1;8702;8695:12;8659:2;8733:80;8805:7;8796:6;8785:9;8781:22;8733:80;;;8723:90;;;;8601:218;8878:2;8867:9;8863:18;8850:32;-1:-1;;;;;8894:6;8891:30;8888:2;;;8934:1;8931;8924:12;8888:2;8962:77;9031:7;9022:6;9011:9;9007:22;8962:77;;;8533:522;;;;-1:-1;8952:87;-1:-1;;;;8533:522;9062:392;;9202:2;9190:9;9181:7;9177:23;9173:32;9170:2;;;9218:1;9215;9208:12;9170:2;9253:24;;-1:-1;;;;;9286:30;;9283:2;;;9329:1;9326;9319:12;9283:2;9349:89;9430:7;9421:6;9410:9;9406:22;9349:89;;9461:544;;;9628:2;9616:9;9607:7;9603:23;9599:32;9596:2;;;9644:1;9641;9634:12;9596:2;9679:31;;-1:-1;;;;;9719:30;;9716:2;;;9762:1;9759;9752:12;9716:2;9782:102;9876:7;9867:6;9856:9;9852:22;9782:102;;;9772:112;;9658:232;9921:2;9939:50;9981:7;9972:6;9961:9;9957:22;9939:50;;10012:235;;10113:2;10101:9;10092:7;10088:23;10084:32;10081:2;;;10129:1;10126;10119:12;10081:2;10164:1;10181:50;10223:7;10203:9;10181:50;;10254:257;;10366:2;10354:9;10345:7;10341:23;10337:32;10334:2;;;10382:1;10379;10372:12;10334:2;10417:1;10434:61;10487:7;10467:9;10434:61;;10518:1225;;;;;;;;;10750:3;10738:9;10729:7;10725:23;10721:33;10718:2;;;10767:1;10764;10757:12;10718:2;10802:1;10819:53;10864:7;10844:9;10819:53;;;10809:63;;10781:97;10909:2;10927:53;10972:7;10963:6;10952:9;10948:22;10927:53;;;10917:63;;10888:98;11017:2;11035:53;11080:7;11071:6;11060:9;11056:22;11035:53;;;11025:63;;10996:98;11125:2;11143:53;11188:7;11179:6;11168:9;11164:22;11143:53;;;11133:63;;11104:98;11233:3;11252:53;11297:7;11288:6;11277:9;11273:22;11252:53;;;11242:63;;11212:99;11342:3;11361:53;11406:7;11397:6;11386:9;11382:22;11361:53;;;11351:63;;11321:99;11451:3;11470:53;11515:7;11506:6;11495:9;11491:22;11470:53;;;11460:63;;11430:99;11588:3;11577:9;11573:19;11560:33;-1:-1;;;;;11605:6;11602:30;11599:2;;;11645:1;11642;11635:12;11599:2;11665:62;11719:7;11710:6;11699:9;11695:22;11665:62;;;11655:72;;11539:194;10712:1031;;;;;;;;;;;;11750:1371;;;;;;;;;;;12009:3;11997:9;11988:7;11984:23;11980:33;11977:2;;;12026:1;12023;12016:12;11977:2;12061:1;12078:53;12123:7;12103:9;12078:53;;;12068:63;;12040:97;12168:2;12186:53;12231:7;12222:6;12211:9;12207:22;12186:53;;;12176:63;;12147:98;12276:2;12294:53;12339:7;12330:6;12319:9;12315:22;12294:53;;;12284:63;;12255:98;12384:2;12402:53;12447:7;12438:6;12427:9;12423:22;12402:53;;;12392:63;;12363:98;12492:3;12511:53;12556:7;12547:6;12536:9;12532:22;12511:53;;;12501:63;;12471:99;12601:3;12620:53;12665:7;12656:6;12645:9;12641:22;12620:53;;;12610:63;;12580:99;12710:3;12729:53;12774:7;12765:6;12754:9;12750:22;12729:53;;;12719:63;;12689:99;12819:3;12838:53;12883:7;12874:6;12863:9;12859:22;12838:53;;;12828:63;;12798:99;12956:3;12945:9;12941:19;12928:33;-1:-1;;;;;12973:6;12970:30;12967:2;;;13013:1;13010;13003:12;12967:2;13041:64;13097:7;13088:6;13077:9;13073:22;13041:64;;;13031:74;;;;12907:204;11971:1150;;;;;;;;;;;;;;13128:1225;;;;;;;;;13360:3;13348:9;13339:7;13335:23;13331:33;13328:2;;;13377:1;13374;13367:12;13328:2;13412:1;13429:53;13474:7;13454:9;13429:53;;;13419:63;;13391:97;13519:2;13537:53;13582:7;13573:6;13562:9;13558:22;13537:53;;;13527:63;;13498:98;13627:2;13645:53;13690:7;13681:6;13670:9;13666:22;13645:53;;;13635:63;;13606:98;13735:2;13753:53;13798:7;13789:6;13778:9;13774:22;13753:53;;;13743:63;;13714:98;13843:3;13862:53;13907:7;13898:6;13887:9;13883:22;13862:53;;;13852:63;;13822:99;13952:3;13971:53;14016:7;14007:6;13996:9;13992:22;13971:53;;;13961:63;;13931:99;14061:3;14080:53;14125:7;14116:6;14105:9;14101:22;14080:53;;14360:347;;14474:2;14462:9;14453:7;14449:23;14445:32;14442:2;;;14490:1;14487;14480:12;14442:2;14525:31;;-1:-1;;;;;14565:30;;14562:2;;;14608:1;14605;14598:12;14562:2;14628:63;14683:7;14674:6;14663:9;14659:22;14628:63;;14714:466;;;14842:2;14830:9;14821:7;14817:23;14813:32;14810:2;;;14858:1;14855;14848:12;14810:2;14893:31;;-1:-1;;;;;14933:30;;14930:2;;;14976:1;14973;14966:12;14930:2;14996:63;15051:7;15042:6;15031:9;15027:22;14996:63;;15187:241;;15291:2;15279:9;15270:7;15266:23;15262:32;15259:2;;;15307:1;15304;15297:12;15259:2;15342:1;15359:53;15404:7;15384:9;15359:53;;15435:263;;15550:2;15538:9;15529:7;15525:23;15521:32;15518:2;;;15566:1;15563;15556:12;15518:2;15601:1;15618:64;15674:7;15654:9;15618:64;;15705:366;;;15826:2;15814:9;15805:7;15801:23;15797:32;15794:2;;;15842:1;15839;15832:12;15794:2;15877:1;15894:53;15939:7;15919:9;15894:53;;16078:399;;;16210:2;16198:9;16189:7;16185:23;16181:32;16178:2;;;16226:1;16223;16216:12;16178:2;16261:1;16278:64;16334:7;16314:9;16278:64;;;16268:74;;16240:108;16379:2;16397:64;16453:7;16444:6;16433:9;16429:22;16397:64;;16484:491;;;;16622:2;16610:9;16601:7;16597:23;16593:32;16590:2;;;16638:1;16635;16628:12;16590:2;16673:1;16690:53;16735:7;16715:9;16690:53;;;16680:63;;16652:97;16780:2;16798:53;16843:7;16834:6;16823:9;16819:22;16798:53;;;16788:63;;16759:98;16888:2;16906:53;16951:7;16942:6;16931:9;16927:22;16906:53;;16982:617;;;;;17137:3;17125:9;17116:7;17112:23;17108:33;17105:2;;;17154:1;17151;17144:12;17105:2;17189:1;17206:53;17251:7;17231:9;17206:53;;;17196:63;;17168:97;17296:2;17314:53;17359:7;17350:6;17339:9;17335:22;17314:53;;;17304:63;;17275:98;17404:2;17422:53;17467:7;17458:6;17447:9;17443:22;17422:53;;;17412:63;;17383:98;17512:2;17530:53;17575:7;17566:6;17555:9;17551:22;17530:53;;;17520:63;;17491:98;17099:500;;;;;;;;17606:743;;;;;;17778:3;17766:9;17757:7;17753:23;17749:33;17746:2;;;17795:1;17792;17785:12;17746:2;17830:1;17847:53;17892:7;17872:9;17847:53;;;17837:63;;17809:97;17937:2;17955:53;18000:7;17991:6;17980:9;17976:22;17955:53;;;17945:63;;17916:98;18045:2;18063:53;18108:7;18099:6;18088:9;18084:22;18063:53;;;18053:63;;18024:98;18153:2;18171:53;18216:7;18207:6;18196:9;18192:22;18171:53;;;18161:63;;18132:98;18261:3;18280:53;18325:7;18316:6;18305:9;18301:22;18280:53;;;18270:63;;18240:99;17740:609;;;;;;;;;18356:946;;;;;;;18556:3;18544:9;18535:7;18531:23;18527:33;18524:2;;;18573:1;18570;18563:12;18524:2;18608:1;18625:64;18681:7;18661:9;18625:64;;;18615:74;;18587:108;18726:2;18744:64;18800:7;18791:6;18780:9;18776:22;18744:64;;;18734:74;;18705:109;18845:2;18863:64;18919:7;18910:6;18899:9;18895:22;18863:64;;;18853:74;;18824:109;18964:2;18982:64;19038:7;19029:6;19018:9;19014:22;18982:64;;;18972:74;;18943:109;19083:3;19102:64;19158:7;19149:6;19138:9;19134:22;19102:64;;;19092:74;;19062:110;19203:3;19222:64;19278:7;19269:6;19258:9;19254:22;19222:64;;;19212:74;;19182:110;18518:784;;;;;;;;;19309:995;;;;;;;;19515:3;19503:9;19494:7;19490:23;19486:33;19483:2;;;19532:1;19529;19522:12;19483:2;19567:1;19584:53;19629:7;19609:9;19584:53;;;19574:63;;19546:97;19674:2;19692:53;19737:7;19728:6;19717:9;19713:22;19692:53;;;19682:63;;19653:98;19782:2;19800:53;19845:7;19836:6;19825:9;19821:22;19800:53;;;19790:63;;19761:98;19890:2;19908:53;19953:7;19944:6;19933:9;19929:22;19908:53;;;19898:63;;19869:98;19998:3;20017:53;20062:7;20053:6;20042:9;20038:22;20017:53;;;20007:63;;19977:99;20107:3;20126:53;20171:7;20162:6;20151:9;20147:22;20126:53;;;20116:63;;20086:99;20216:3;20235:53;20280:7;20271:6;20260:9;20256:22;20235:53;;;20225:63;;20195:99;19477:827;;;;;;;;;;;20312:173;;20399:46;20441:3;20433:6;20399:46;;;-1:-1;;20474:4;20465:14;;20392:93;20494:173;;20581:46;20623:3;20615:6;20581:46;;20676:275;;20811:98;20905:3;20897:6;20811:98;;;-1:-1;;20938:6;20929:16;;20804:147;21141:142;21232:45;21271:5;21232:45;;;21227:3;21220:58;21214:69;;;21290:103;21363:24;21381:5;21363:24;;21520:152;21621:45;21641:24;21659:5;21641:24;;;21621:45;;21712:660;21845:52;21891:5;21845:52;;;21910:84;21987:6;21982:3;21910:84;;;21903:91;;22015:54;22063:5;22015:54;;;22089:7;22117:1;22102:258;22127:6;22124:1;22121:13;22102:258;;;22194:6;22188:13;22215:63;22274:3;22259:13;22215:63;;;22208:70;;22295:58;22346:6;22295:58;;;22285:68;-1:-1;;22149:1;22142:9;22102:258;;22411:690;;22556:54;22604:5;22556:54;;;22623:86;22702:6;22697:3;22623:86;;;22616:93;;22730:56;22780:5;22730:56;;;22806:7;22834:1;22819:260;22844:6;22841:1;22838:13;22819:260;;;22911:6;22905:13;22932:63;22991:3;22976:13;22932:63;;;22925:70;;23012:60;23065:6;23012:60;;;23002:70;-1:-1;;22866:1;22859:9;22819:260;;;-1:-1;23092:3;;22535:566;-1:-1;;;;;22535:566;23194:882;;23387:78;23459:5;23387:78;;;23478:110;23581:6;23576:3;23478:110;;;23471:117;;23609:80;23683:5;23609:80;;;23709:7;23737:1;23722:332;23747:6;23744:1;23741:13;23722:332;;;23814:6;23808:13;23835:111;23942:3;23927:13;23835:111;;;23828:118;;23963:84;24040:6;23963:84;;;23953:94;-1:-1;;23769:1;23762:9;23722:332;;24117:660;24250:52;24296:5;24250:52;;;24315:84;24392:6;24387:3;24315:84;;;24308:91;;24420:54;24468:5;24420:54;;;24494:7;24522:1;24507:258;24532:6;24529:1;24526:13;24507:258;;;24599:6;24593:13;24620:63;24679:3;24664:13;24620:63;;;24613:70;;24700:58;24751:6;24700:58;;;24690:68;-1:-1;;24554:1;24547:9;24507:258;;24785:94;24852:21;24867:5;24852:21;;24997:140;25092:39;25109:21;25124:5;25109:21;;;25092:39;;25144:103;25217:24;25235:5;25217:24;;25374:152;25475:45;25495:24;25513:5;25495:24;;;25475:45;;25533:148;25632:43;25651:23;25668:5;25651:23;;25688:343;;25798:38;25830:5;25798:38;;;25848:70;25911:6;25906:3;25848:70;;;25841:77;;25923:52;25968:6;25963:3;25956:4;25949:5;25945:16;25923:52;;;25996:29;26018:6;25996:29;;;25987:39;;;;25778:253;-1:-1;;;25778:253;26038:356;;26166:38;26198:5;26166:38;;;26216:88;26297:6;26292:3;26216:88;;;26209:95;;26309:52;26354:6;26349:3;26342:4;26335:5;26331:16;26309:52;;;26373:16;;;;;26146:248;-1:-1;;26146:248;27586:312;;27746:67;27810:2;27805:3;27746:67;;;-1:-1;;;27826:35;;27889:2;27880:12;;27732:166;-1:-1;;27732:166;27907:301;;28067:66;28131:1;28126:3;28067:66;;;-1:-1;;;28146:25;;28199:2;28190:12;;28053:155;-1:-1;;28053:155;28217:301;;28377:66;28441:1;28436:3;28377:66;;;-1:-1;;;28456:25;;28509:2;28500:12;;28363:155;-1:-1;;28363:155;28527:375;;28687:67;28751:2;28746:3;28687:67;;;28787:34;28767:55;;-1:-1;;;28851:2;28842:12;;28835:30;28893:2;28884:12;;28673:229;-1:-1;;28673:229;28911:327;;29071:67;29135:2;29130:3;29071:67;;;29171:29;29151:50;;29229:2;29220:12;;29057:181;-1:-1;;29057:181;29247:370;;29407:67;29471:2;29466:3;29407:67;;;29507:34;29487:55;;-1:-1;;;29571:2;29562:12;;29555:25;29608:2;29599:12;;29393:224;-1:-1;;29393:224;29626:314;;29786:67;29850:2;29845:3;29786:67;;;-1:-1;;;29866:37;;29931:2;29922:12;;29772:168;-1:-1;;29772:168;29949:300;;30109:66;30173:1;30168:3;30109:66;;;-1:-1;;;30188:24;;30240:2;30231:12;;30095:154;-1:-1;;30095:154;30258:318;;30418:67;30482:2;30477:3;30418:67;;;-1:-1;;;30498:41;;30567:2;30558:12;;30404:172;-1:-1;;30404:172;30585:301;;30745:66;30809:1;30804:3;30745:66;;;-1:-1;;;30824:25;;30877:2;30868:12;;30731:155;-1:-1;;30731:155;30895:301;;31055:66;31119:1;31114:3;31055:66;;;-1:-1;;;31134:25;;31187:2;31178:12;;31041:155;-1:-1;;31041:155;31205:301;;31365:66;31429:1;31424:3;31365:66;;;-1:-1;;;31444:25;;31497:2;31488:12;;31351:155;-1:-1;;31351:155;31515:370;;31675:67;31739:2;31734:3;31675:67;;;31775:34;31755:55;;-1:-1;;;31839:2;31830:12;;31823:25;31876:2;31867:12;;31661:224;-1:-1;;31661:224;31894:321;;32054:67;32118:2;32113:3;32054:67;;;-1:-1;;;32134:44;;32206:2;32197:12;;32040:175;-1:-1;;32040:175;32224:301;;32384:66;32448:1;32443:3;32384:66;;;-1:-1;;;32463:25;;32516:2;32507:12;;32370:155;-1:-1;;32370:155;32534:301;;32694:66;32758:1;32753:3;32694:66;;;-1:-1;;;32773:25;;32826:2;32817:12;;32680:155;-1:-1;;32680:155;32844:315;;33004:67;33068:2;33063:3;33004:67;;;-1:-1;;;33084:38;;33150:2;33141:12;;32990:169;-1:-1;;32990:169;33168:301;;33328:66;33392:1;33387:3;33328:66;;;-1:-1;;;33407:25;;33460:2;33451:12;;33314:155;-1:-1;;33314:155;33478:301;;33638:66;33702:1;33697:3;33638:66;;;-1:-1;;;33717:25;;33770:2;33761:12;;33624:155;-1:-1;;33624:155;33788:370;;33948:67;34012:2;34007:3;33948:67;;;34048:34;34028:55;;-1:-1;;;34112:2;34103:12;;34096:25;34149:2;34140:12;;33934:224;-1:-1;;33934:224;34167:312;;34327:67;34391:2;34386:3;34327:67;;;-1:-1;;;34407:35;;34470:2;34461:12;;34313:166;-1:-1;;34313:166;34488:301;;34648:66;34712:1;34707:3;34648:66;;;-1:-1;;;34727:25;;34780:2;34771:12;;34634:155;-1:-1;;34634:155;34798:301;;34958:66;35022:1;35017:3;34958:66;;;-1:-1;;;35037:25;;35090:2;35081:12;;34944:155;-1:-1;;34944:155;35108:376;;35268:67;35332:2;35327:3;35268:67;;;35368:34;35348:55;;-1:-1;;;35432:2;35423:12;;35416:31;35475:2;35466:12;;35254:230;-1:-1;;35254:230;35493:329;;35653:67;35717:2;35712:3;35653:67;;;35753:31;35733:52;;35813:2;35804:12;;35639:183;-1:-1;;35639:183;35831:310;;35991:67;36055:2;36050:3;35991:67;;;-1:-1;;;36071:33;;36132:2;36123:12;;35977:164;-1:-1;;35977:164;36150:312;;36310:67;36374:2;36369:3;36310:67;;;-1:-1;;;36390:35;;36453:2;36444:12;;36296:166;-1:-1;;36296:166;36471:373;;36631:67;36695:2;36690:3;36631:67;;;36731:34;36711:55;;-1:-1;;;36795:2;36786:12;;36779:28;36835:2;36826:12;;36617:227;-1:-1;;36617:227;36853:324;;37013:67;37077:2;37072:3;37013:67;;;37113:26;37093:47;;37168:2;37159:12;;36999:178;-1:-1;;36999:178;37186:300;;37346:66;37410:1;37405:3;37346:66;;;-1:-1;;;37425:24;;37477:2;37468:12;;37332:154;-1:-1;;37332:154;37495:332;;37655:67;37719:2;37714:3;37655:67;;;37755:34;37735:55;;37818:2;37809:12;;37641:186;-1:-1;;37641:186;37914:1437;38115:23;;38049:6;38040:16;;;38144:63;38044:3;38115:23;38144:63;;;38071:142;38288:4;38281:5;38277:16;38271:23;38300:57;38351:4;38346:3;38342:14;38328:12;38300:57;;;38223:140;38437:4;38430:5;38426:16;38420:23;38449:63;38506:4;38501:3;38497:14;38483:12;38449:63;;;38373:145;38596:4;38589:5;38585:16;38579:23;38608:63;38665:4;38660:3;38656:14;38642:12;38608:63;;;38528:149;38761:4;38754:5;38750:16;38744:23;38773:63;38830:4;38825:3;38821:14;38807:12;38773:63;;;38687:155;38927:4;38920:5;38916:16;38910:23;38939:63;38996:4;38991:3;38987:14;38973:12;38939:63;;;38852:156;39094:4;39087:5;39083:16;39077:23;39106:63;39163:4;39158:3;39154:14;39140:12;39106:63;;;39018:157;39255:4;39248:5;39244:16;39238:23;39267:63;39324:4;39319:3;39315:14;39301:12;39267:63;;39747:107;39826:22;39842:5;39826:22;;39861:370;;40002:75;40073:3;40064:6;40002:75;;;40099:2;40094:3;40090:12;40083:19;;40113:69;40178:3;40169:6;40113:69;;;-1:-1;40204:1;40195:11;;39990:241;-1:-1;;39990:241;40238:383;;40385:75;40456:3;40447:6;40385:75;;;40482:2;40477:3;40473:12;40466:19;;40496:75;40567:3;40558:6;40496:75;;;-1:-1;40593:2;40584:12;;40373:248;-1:-1;;40373:248;40628:378;;40773:73;40842:3;40833:6;40773:73;;;40868:1;40863:3;40859:11;40852:18;;40881:75;40952:3;40943:6;40881:75;;41013:262;;41157:93;41246:3;41237:6;41157:93;;41555:213;41673:2;41658:18;;41687:71;41662:9;41731:6;41687:71;;41775:229;41901:2;41886:18;;41915:79;41890:9;41967:6;41915:79;;42011:324;42157:2;42142:18;;42171:71;42146:9;42215:6;42171:71;;;42253:72;42321:2;42310:9;42306:18;42297:6;42253:72;;42342:340;42496:2;42481:18;;42510:71;42485:9;42554:6;42510:71;;;42592:80;42668:2;42657:9;42653:18;42644:6;42592:80;;42689:435;42863:2;42848:18;;42877:71;42852:9;42921:6;42877:71;;;42959:72;43027:2;43016:9;43012:18;43003:6;42959:72;;;43042;43110:2;43099:9;43095:18;43086:6;43042:72;;43131:647;43355:3;43340:19;;43370:71;43344:9;43414:6;43370:71;;;43452:72;43520:2;43509:9;43505:18;43496:6;43452:72;;;43535;43603:2;43592:9;43588:18;43579:6;43535:72;;;43618;43686:2;43675:9;43671:18;43662:6;43618:72;;;43701:67;43763:3;43752:9;43748:19;43739:6;43701:67;;43785:771;44043:3;44028:19;;44058:71;44032:9;44102:6;44058:71;;;44140:72;44208:2;44197:9;44193:18;44184:6;44140:72;;;44223;44291:2;44280:9;44276:18;44267:6;44223:72;;;44306;44374:2;44363:9;44359:18;44350:6;44306:72;;;44389:73;44457:3;44446:9;44442:19;44433:6;44389:73;;;44473;44541:3;44530:9;44526:19;44517:6;44473:73;;;44014:542;;;;;;;;;;44563:324;44709:2;44694:18;;44723:71;44698:9;44767:6;44723:71;;;44805:72;44873:2;44862:9;44858:18;44849:6;44805:72;;44894:451;45076:2;45061:18;;45090:71;45065:9;45134:6;45090:71;;;45172:72;45240:2;45229:9;45225:18;45216:6;45172:72;;;45255:80;45331:2;45320:9;45316:18;45307:6;45255:80;;45352:361;45520:2;45534:47;;;45505:18;;45595:108;45505:18;45689:6;45595:108;;45720:457;45936:2;45950:47;;;45921:18;;46011:156;45921:18;46153:6;46011:156;;46184:201;46296:2;46281:18;;46310:65;46285:9;46348:6;46310:65;;46392:213;46510:2;46495:18;;46524:71;46499:9;46568:6;46524:71;;46612:1139;47002:3;46987:19;;47017:71;46991:9;47061:6;47017:71;;;47099:72;47167:2;47156:9;47152:18;47143:6;47099:72;;;47182:66;47244:2;47233:9;47229:18;47220:6;47182:66;;;47259:72;47327:2;47316:9;47312:18;47303:6;47259:72;;;47342:119;47456:3;47445:9;47441:19;47432:6;47342:119;;;47472;47586:3;47575:9;47571:19;47562:6;47472:119;;;47640:9;47634:4;47630:20;47624:3;47613:9;47609:19;47602:49;47665:76;47736:4;47727:6;47665:76;;;47657:84;46973:778;-1:-1;;;;;;;;;46973:778;47974:293;48108:2;48122:47;;;48093:18;;48183:74;48093:18;48243:6;48183:74;;48582:407;48773:2;48787:47;;;48758:18;;48848:131;48758:18;48848:131;;48996:407;49187:2;49201:47;;;49172:18;;49262:131;49172:18;49262:131;;49410:407;49601:2;49615:47;;;49586:18;;49676:131;49586:18;49676:131;;49824:407;50015:2;50029:47;;;50000:18;;50090:131;50000:18;50090:131;;50238:407;50429:2;50443:47;;;50414:18;;50504:131;50414:18;50504:131;;50652:407;50843:2;50857:47;;;50828:18;;50918:131;50828:18;50918:131;;51066:407;51257:2;51271:47;;;51242:18;;51332:131;51242:18;51332:131;;51480:407;51671:2;51685:47;;;51656:18;;51746:131;51656:18;51746:131;;51894:407;52085:2;52099:47;;;52070:18;;52160:131;52070:18;52160:131;;52308:407;52499:2;52513:47;;;52484:18;;52574:131;52484:18;52574:131;;52722:407;52913:2;52927:47;;;52898:18;;52988:131;52898:18;52988:131;;53136:407;53327:2;53341:47;;;53312:18;;53402:131;53312:18;53402:131;;53550:407;53741:2;53755:47;;;53726:18;;53816:131;53726:18;53816:131;;53964:407;54155:2;54169:47;;;54140:18;;54230:131;54140:18;54230:131;;54378:407;54569:2;54583:47;;;54554:18;;54644:131;54554:18;54644:131;;54792:407;54983:2;54997:47;;;54968:18;;55058:131;54968:18;55058:131;;55206:407;55397:2;55411:47;;;55382:18;;55472:131;55382:18;55472:131;;55620:407;55811:2;55825:47;;;55796:18;;55886:131;55796:18;55886:131;;56034:407;56225:2;56239:47;;;56210:18;;56300:131;56210:18;56300:131;;56448:407;56639:2;56653:47;;;56624:18;;56714:131;56624:18;56714:131;;56862:407;57053:2;57067:47;;;57038:18;;57128:131;57038:18;57128:131;;57276:407;57467:2;57481:47;;;57452:18;;57542:131;57452:18;57542:131;;57690:407;57881:2;57895:47;;;57866:18;;57956:131;57866:18;57956:131;;58104:407;58295:2;58309:47;;;58280:18;;58370:131;58280:18;58370:131;;58518:407;58709:2;58723:47;;;58694:18;;58784:131;58694:18;58784:131;;58932:407;59123:2;59137:47;;;59108:18;;59198:131;59108:18;59198:131;;59346:407;59537:2;59551:47;;;59522:18;;59612:131;59522:18;59612:131;;59760:407;59951:2;59965:47;;;59936:18;;60026:131;59936:18;60026:131;;60174:407;60365:2;60379:47;;;60350:18;;60440:131;60350:18;60440:131;;60588:407;60779:2;60793:47;;;60764:18;;60854:131;60764:18;60854:131;;61002:407;61193:2;61207:47;;;61178:18;;61268:131;61178:18;61268:131;;61636:324;61782:2;61767:18;;61796:71;61771:9;61840:6;61796:71;;61967:435;62141:2;62126:18;;62155:71;62130:9;62199:6;62155:71;;;62237:72;62305:2;62294:9;62290:18;62281:6;62237:72;;62409:205;62523:2;62508:18;;62537:67;62512:9;62577:6;62537:67;;62621:256;62683:2;62677:9;62709:17;;;-1:-1;;;;;62769:34;;62805:22;;;62766:62;62763:2;;;62841:1;62838;62831:12;62763:2;62857;62850:22;62661:216;;-1:-1;62661:216;62884:304;;-1:-1;;;;;63035:6;63032:30;63029:2;;;63075:1;63072;63065:12;63029:2;-1:-1;63110:4;63098:17;;;63163:15;;62966:222;63530:321;;-1:-1;;;;;63665:6;63662:30;63659:2;;;63705:1;63702;63695:12;63659:2;-1:-1;63836:4;63772;63749:17;;;;-1:-1;;63745:33;63826:15;;63596:255;64291:151;64415:4;64406:14;;64363:79;64735:108;-1:-1;64829:4;;64807:36;64850:137;64953:12;;64924:63;65162:108;-1:-1;65256:4;;65234:36;66289:178;66407:19;;;66456:4;66447:14;;66400:67;67485:91;;67547:24;67565:5;67547:24;;67583:85;67649:13;67642:21;;67625:43;67754:144;-1:-1;;;;;;67815:78;;67798:100;67983:121;-1:-1;;;;;68045:54;;68028:76;68190:81;68261:4;68250:16;;68233:38;68278:129;;68365:37;68396:5;68414:121;68493:37;68524:5;68493:37;;68658:145;68739:6;68734:3;68729;68716:30;-1:-1;68795:1;68777:16;;68770:27;68709:94;68812:268;68877:1;68884:101;68898:6;68895:1;68892:13;68884:101;;;68965:11;;;68959:18;68946:11;;;68939:39;68920:2;68913:10;68884:101;;;69000:6;68997:1;68994:13;68991:2;;;-1:-1;;69065:1;69047:16;;69040:27;68861:219;69088:95;;69152:26;69172:5;69152:26;;69190:90;;69251:24;69269:5;69251:24;;69448:89;;69512:20;69526:5;69512:20;;69625:88;;69687:21;69702:5;69687:21;;69720:97;69808:2;69788:14;-1:-1;;69784:28;;69768:49;69825:96;69900:3;69896:15;;69868:53;69929:94;70003:2;69999:14;;69971:52;70031:117;70100:24;70118:5;70100:24;;;70093:5;70090:35;70080:2;;70139:1;70136;70129:12;70155:111;70221:21;70236:5;70221:21;;70273:117;70342:24;70360:5;70342:24;"
            },
            "methodIdentifiers": {
              "VERSION()": "ffa1ad74",
              "_supplyInterestRate(uint256,uint256)": "7288b344",
              "admin()": "f851a440",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "assetBalanceOf(address)": "06b3efd6",
              "avgBorrowInterestRate()": "44a4a003",
              "balanceOf(address)": "70a08231",
              "baseRate()": "1f68f20a",
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": "2ea295fa",
              "borrowInterestRate()": "8325a1c0",
              "burn(address,uint256)": "9dc29fac",
              "burn(address,uint256,bool)": "76fd4fdf",
              "checkPause(string)": "be194217",
              "checkPriceDivergence(uint256,uint256,uint256,address,uint256)": "18498b1d",
              "checkpointPrice(address)": "eebc5081",
              "checkpointSupply()": "7b7933b4",
              "decimals()": "313ce567",
              "disableLoanParams(address[],bool[])": "e697d2ee",
              "earlyAccessToken()": "ca37e666",
              "getBorrowAmountForDeposit(uint256,uint256,address)": "04797930",
              "getDepositAmountForBorrow(uint256,uint256,address)": "631a3ef8",
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": "6b40cd40",
              "getMarginBorrowAmountAndRate(uint256,uint256)": "8d875e3c",
              "getMaxEscrowAmount(uint256)": "829b38f4",
              "initialPrice()": "1d0806ae",
              "isOwner()": "8f32d59b",
              "kinkLevel()": "56e07d70",
              "liquidityMiningAddress()": "8ee6c4e6",
              "loanParamsIds(uint256)": "3291c11a",
              "loanTokenAddress()": "797bf385",
              "lowUtilBaseRate()": "d759dbeb",
              "lowUtilRateMultiplier()": "7e37c08c",
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": "28a02f19",
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": "f6b69f99",
              "marketLiquidity()": "612ef80b",
              "maxScaleRate()": "ef2b0b39",
              "mint(address,uint256)": "40c10f19",
              "mint(address,uint256,bool)": "d1a1beb4",
              "name()": "06fdde03",
              "nextBorrowInterestRate(uint256)": "b9fe1a8f",
              "nextSupplyInterestRate(uint256)": "d65a5021",
              "owner()": "8da5cb5b",
              "pauser()": "9fd0506d",
              "profitOf(address)": "54198ce9",
              "rateMultiplier()": "330691ac",
              "setAdmin(address)": "704b6c02",
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "d97206a4",
              "setLiquidityMiningAddress(address)": "cb926cb3",
              "setPauser(address)": "2d88af4a",
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": "d8f06c83",
              "sovrynContractAddress()": "06947a3a",
              "supplyInterestRate()": "09ec6b6b",
              "symbol()": "95d89b41",
              "targetLevel()": "ba0e43bf",
              "target_()": "9bda3a98",
              "toggleFunctionPause(string,bool)": "e3cded61",
              "tokenPrice()": "7ff9b596",
              "totalAssetBorrow()": "20f6d07c",
              "totalAssetSupply()": "8fb807c5",
              "totalSupply()": "18160ddd",
              "totalSupplyInterestRate(uint256)": "12416898",
              "transactionLimit(address)": "e41b07e3",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b",
              "wrbtcTokenAddress()": "2f6b600d"
            }
          },
          "userdoc": {
            "methods": {
              "_supplyInterestRate(uint256,uint256)": {
                "notice": "Compute the next supply interest adjustment."
              },
              "allowance(address,address)": {
                "notice": "Get the amount of iTokens allowed to be spent by a  given account on behalf of the owner."
              },
              "approve(address,uint256)": {
                "notice": "Set an amount as the allowance of `spender` over the caller's tokens.\t * Returns a boolean value indicating whether the operation succeeded.\t * 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\t * Emits an {Approval} event."
              },
              "assetBalanceOf(address)": {
                "notice": "Get loan token balance."
              },
              "avgBorrowInterestRate()": {
                "notice": "Wrapper for average borrow interest."
              },
              "balanceOf(address)": {
                "notice": "Get the amount of iTokens owned by an account."
              },
              "borrow(bytes32,uint256,uint256,uint256,address,address,address,bytes)": {
                "notice": "Borrow funds from the pool. The underlying loan token may not be used as collateral."
              },
              "borrowInterestRate()": {
                "notice": "Get borrow interest rate. The minimum rate the next base protocol borrower will receive for variable-rate loans."
              },
              "burn(address,uint256)": {
                "notice": "Burn loan token wrapper. Adds a pay-out transfer after calling low level _burnToken function. In order to withdraw funds to the pool, call burn on the respective loan token contract. This will burn your loan tokens and send you the underlying token in exchange."
              },
              "burn(address,uint256,bool)": {
                "notice": "withdraws from the lending pool and optionally retrieves the pool tokens from the        Liquidity Mining Contract"
              },
              "checkPause(string)": {
                "notice": "Check whether a function is paused."
              },
              "checkpointPrice(address)": {
                "notice": "Getter for the price checkpoint mapping."
              },
              "disableLoanParams(address[],bool[])": {
                "notice": "Disable loan token parameters."
              },
              "getBorrowAmountForDeposit(uint256,uint256,address)": {
                "notice": "Calculate the borrow allowed for a given deposit.\t * The function for doing over-collateralized borrows against loan tokens expects a minimum amount of collateral be sent to satisfy collateral requirements of the loan, for borrow amount, interest rate, and initial loan duration. To determine appropriate values to pass to this function for a given loan, `getDepositAmountForBorrow` and 'getBorrowAmountForDeposit` are required."
              },
              "getDepositAmountForBorrow(uint256,uint256,address)": {
                "notice": "Calculate the deposit required to a given borrow.\t * The function for doing over-collateralized borrows against loan tokens expects a minimum amount of collateral be sent to satisfy collateral requirements of the loan, for borrow amount, interest rate, and initial loan duration. To determine appropriate values to pass to this function for a given loan, `getDepositAmountForBorrow` and 'getBorrowAmountForDeposit` are required."
              },
              "getEstimatedMarginDetails(uint256,uint256,uint256,address)": {
                "notice": "Get margin information on a trade."
              },
              "getMaxEscrowAmount(uint256)": {
                "notice": "Compute the maximum deposit amount under current market conditions."
              },
              "marginTrade(bytes32,uint256,uint256,uint256,address,address,uint256,bytes)": {
                "notice": "Borrow and immediately get into a position.\t * Trading on margin is used to increase an investor's buying power. Margin is the amount of money required to open a position, while leverage is the multiple of exposure to account equity.\t * Leverage allows you to trade positions LARGER than the amount of money in your trading account. Leverage is expressed as a ratio.\t * When trading on margin, investors first deposit some token that then serves as collateral for the loan, and then pay ongoing interest payments on the money they borrow.\t * Margin trading = taking a loan and swapping it: In order to open a margin trade position, 1.- The user calls marginTrade on the loan token contract. 2.- The loan token contract provides the loan and sends it for processing   to the protocol proxy contract. 3.- The protocol proxy contract uses the module LoanOpening to create a   position and swaps the loan tokens to collateral tokens. 4.- The Sovryn Swap network looks up the correct converter and swaps the   tokens. If successful, the position is being held by the protocol proxy contract, which is why positions need to be closed at the protocol proxy contract."
              },
              "marginTradeAffiliate(bytes32,uint256,uint256,uint256,address,address,uint256,address,bytes)": {
                "notice": "Wrapper for marginTrade invoking setAffiliatesReferrer to track  referral trade by affiliates program."
              },
              "marketLiquidity()": {
                "notice": "Get current liquidity. A part of total funds supplied are borrowed. Liquidity = supply - borrow"
              },
              "mint(address,uint256)": {
                "notice": "Mint loan token wrapper. Adds a check before calling low level _mintToken function. The function retrieves the tokens from the message sender, so make sure to first approve the loan token contract to access your funds. This is done by calling approve(address spender, uint amount) on the ERC20 token contract, where spender is the loan token contract address and amount is the amount to be deposited."
              },
              "mint(address,uint256,bool)": {
                "notice": "deposit into the lending pool and optionally participate at the Liquidity Mining Program"
              },
              "nextBorrowInterestRate(uint256)": {
                "notice": "Public wrapper for internal call."
              },
              "nextSupplyInterestRate(uint256)": {
                "notice": "Get interest rate w/ added supply."
              },
              "profitOf(address)": {
                "notice": "Wrapper for internal _profitOf low level function."
              },
              "setAdmin(address)": {
                "notice": "Set admin account."
              },
              "setDemandCurve(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": {
                "notice": "Set loan token parameters about the demand curve."
              },
              "setLiquidityMiningAddress(address)": {
                "notice": "sets the liquidity mining contract address"
              },
              "setPauser(address)": {
                "notice": "Set pauser account."
              },
              "setupLoanParams((bytes32,bool,address,address,address,uint256,uint256,uint256)[],bool)": {
                "notice": "Set loan token parameters."
              },
              "supplyInterestRate()": {
                "notice": "Get interest rate."
              },
              "toggleFunctionPause(string,bool)": {
                "notice": "Set the pause flag for a function to true or false."
              },
              "tokenPrice()": {
                "notice": "Loan token price calculation considering unpaid interests."
              },
              "totalAssetBorrow()": {
                "notice": "Get the total amount of loan tokens on debt. Calls protocol getTotalPrincipal function. In the context of borrowing, principal is the initial size of a loan. It can also be the amount still owed on a loan. If you take out a $50,000 mortgage, for example, the principal is $50,000. If you pay off $30,000, the principal balance now consists of the remaining $20,000."
              },
              "totalAssetSupply()": {
                "notice": "Get the total amount of loan tokens on supply."
              },
              "totalSupply()": {
                "notice": "Get the total supply of iTokens."
              },
              "totalSupplyInterestRate(uint256)": {
                "notice": "Get interest rate w/ added supply assets."
              },
              "transfer(address,uint256)": {
                "notice": "Transfer tokens wrapper. Sets token owner the msg.sender. Sets maximun allowance uint256(-1) to ensure tokens are always transferred."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Moves `_value` loan tokens from `_from` to `_to` using the allowance mechanism. Calls internal _internalTransferFrom function."
              }
            }
          }
        }
      },
      "contracts/testhelpers/TestLibraries.sol": {
        "TestLibraries": {
          "abi": [
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "RSKAddrValidator_checkPKNotZero",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addr1",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "addr2",
                  "type": "address"
                }
              ],
              "name": "RSKAddrValidator_safeEquals",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061018c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630a4aff771461003b5780631340869314610075575b600080fd5b6100616004803603602081101561005157600080fd5b50356001600160a01b03166100a3565b604080519115158252519081900360200190f35b6100616004803603604081101561008b57600080fd5b506001600160a01b03813581169160200135166100b4565b60006100ae826100c7565b92915050565b60006100c08383610100565b9392505050565b600073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b038316148015906100ae5750506001600160a01b0316151590565b6000816001600160a01b0316836001600160a01b0316148015610140575073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b03841614155b80156100c0575050506001600160a01b031615159056fea265627a7a723158208141659edb96ee24d0827006e5c2f86e6788888de915e8940a0750f2a064084c64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA4AFF77 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x13408693 EQ PUSH2 0x75 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x61 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x61 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAE DUP3 PUSH2 0xC7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC0 DUP4 DUP4 PUSH2 0x100 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0xAE JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x140 JUMPI POP PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC0 JUMPI POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 DUP2 COINBASE PUSH6 0x9EDB96EE24D0 DUP3 PUSH17 0x6E5C2F86E6788888DE915E8940A0750F2 LOG0 PUSH5 0x84C64736F PUSH13 0x63430005110032000000000000 ",
              "sourceMap": "99:653:159:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;99:653:159;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80630a4aff771461003b5780631340869314610075575b600080fd5b6100616004803603602081101561005157600080fd5b50356001600160a01b03166100a3565b604080519115158252519081900360200190f35b6100616004803603604081101561008b57600080fd5b506001600160a01b03813581169160200135166100b4565b60006100ae826100c7565b92915050565b60006100c08383610100565b9392505050565b600073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b038316148015906100ae5750506001600160a01b0316151590565b6000816001600160a01b0316836001600160a01b0316148015610140575073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b03841614155b80156100c0575050506001600160a01b031615159056fea265627a7a723158208141659edb96ee24d0827006e5c2f86e6788888de915e8940a0750f2a064084c64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA4AFF77 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x13408693 EQ PUSH2 0x75 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x61 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x61 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAE DUP3 PUSH2 0xC7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC0 DUP4 DUP4 PUSH2 0x100 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0xAE JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x140 JUMPI POP PUSH20 0xDCC703C0E500B653CA82273B7BFAD8045D85A470 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC0 JUMPI POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 DUP2 COINBASE PUSH6 0x9EDB96EE24D0 DUP3 PUSH17 0x6E5C2F86E6788888DE915E8940A0750F2 LOG0 PUSH5 0x84C64736F PUSH13 0x63430005110032000000000000 ",
              "sourceMap": "99:653:159:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;99:653:159;;;;;;;;;;;;;;;;;;;;;;;;356:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;356:136:159;-1:-1:-1;;;;;356:136:159;;:::i;:::-;;;;;;;;;;;;;;;;;;598:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;598:152:159;;;;;;;;;;:::i;356:136::-;432:4;450:37;482:4;450:31;:37::i;:::-;442:46;356:136;-1:-1:-1;;356:136:159:o;598:152::-;686:4;704:41;732:5;739;704:27;:41::i;:::-;696:50;598:152;-1:-1:-1;;;598:152:159:o;318:156:149:-;379:4;405:42;-1:-1:-1;;;;;397:50:149;;;;;;:72;;-1:-1:-1;;;;;;;451:18:149;;;;318:156::o;583:188::-;656:4;683:5;-1:-1:-1;;;;;674:14:149;:5;-1:-1:-1;;;;;674:14:149;;:69;;;;-1:-1:-1;701:42:149;-1:-1:-1;;;;;692:51:149;;;;674:69;:92;;;;-1:-1:-1;;;;;;;;747:19:149;;;;583:188::o"
            },
            "methodIdentifiers": {
              "RSKAddrValidator_checkPKNotZero(address)": "0a4aff77",
              "RSKAddrValidator_safeEquals(address,address)": "13408693"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/testhelpers/TestSovrynSwap.sol": {
        "TestSovrynSwap": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "feed",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "contractName",
                  "type": "bytes32"
                }
              ],
              "name": "addressOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "_sourceToken",
                  "type": "address"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "_targetToken",
                  "type": "address"
                }
              ],
              "name": "conversionPath",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "_path",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_minReturn",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_beneficiary",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_affiliateAccount",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_affiliateFee",
                  "type": "uint256"
                }
              ],
              "name": "convertByPath",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": true,
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "priceFeeds",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "_path",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "rateByPath",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516108893803806108898339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610824806100656000396000f3fe60806040526004361061004a5760003560e01c806378d849ed1461004f5780637f9c0ecd14610080578063b77d239b1461010f578063bb34534c146101a4578063d734fa19146101ce575b600080fd5b34801561005b57600080fd5b50610064610259565b604080516001600160a01b039092168252519081900360200190f35b34801561008c57600080fd5b506100fd600480360360408110156100a357600080fd5b8101906020810181356401000000008111156100be57600080fd5b8201836020820111156100d057600080fd5b803590602001918460208302840111640100000000831117156100f257600080fd5b919350915035610268565b60408051918252519081900360200190f35b6100fd600480360360c081101561012557600080fd5b81019060208101813564010000000081111561014057600080fd5b82018360208201111561015257600080fd5b8035906020019184602083028401116401000000008311171561017457600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060800135610375565b3480156101b057600080fd5b50610064600480360360208110156101c757600080fd5b50356105e6565b3480156101da57600080fd5b50610209600480360360408110156101f157600080fd5b506001600160a01b03813581169160200135166105eb565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561024557818101518382015260200161022d565b505050509050019250505060405180910390f35b6000546001600160a01b031681565b60008054819081906001600160a01b03166329d5277c8787848161028857fe5b905060200201356001600160a01b0316888860018181106102a557fe5b905060200201356001600160a01b03166040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050604080518083038186803b15801561031357600080fd5b505afa158015610327573d6000803e3d6000fd5b505050506040513d604081101561033d57600080fd5b508051602090910151909250905061036b8161035f868563ffffffff61066c16565b9063ffffffff6106cc16565b9695505050505050565b60008054819081906001600160a01b03166329d5277c8b8b848161039557fe5b905060200201356001600160a01b03168c8c60018181106103b257fe5b905060200201356001600160a01b03166040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050604080518083038186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d604081101561044a57600080fd5b5080516020909101519092509050600061046e8261035f8b8663ffffffff61066c16565b9050878110156104af5760405162461bcd60e51b81526004018080602001828103825260238152602001806107ac6023913960400191505060405180910390fd5b8a8a60008181106104bc57fe5b905060200201356001600160a01b03166001600160a01b0316639dc29fac338b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561052b57600080fd5b505af115801561053f573d6000803e3d6000fd5b505050508a8a600181811061055057fe5b905060200201356001600160a01b03166001600160a01b03166340c10f1988836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156105bf57600080fd5b505af11580156105d3573d6000803e3d6000fd5b50929d9c50505050505050505050505050565b503090565b604080516002808252606080830184529283929190602083019080388339019050509050838160008151811061061d57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050828160018151811061064b57fe5b6001600160a01b039092166020928302919091019091015290505b92915050565b60008261067b57506000610666565b8282028284828161068857fe5b04146106c55760405162461bcd60e51b81526004018080602001828103825260218152602001806107cf6021913960400191505060405180910390fd5b9392505050565b60006106c583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836107955760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561075a578181015183820152602001610742565b50505050905090810190601f1680156107875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816107a157fe5b049594505050505056fe696e73756666696369656e7420736f7572636520746f6b656e732070726f7669646564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820b3b713377676e7194747a625b274e179d89a1e88d2ea5e20905542e2eecc7b9d64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x889 CODESIZE SUB DUP1 PUSH2 0x889 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x824 DUP1 PUSH2 0x65 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78D849ED EQ PUSH2 0x4F JUMPI DUP1 PUSH4 0x7F9C0ECD EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0xB77D239B EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0xBB34534C EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xD734FA19 EQ PUSH2 0x1CE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0x259 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x375 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x209 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x245 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x29D5277C DUP8 DUP8 DUP5 DUP2 PUSH2 0x288 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x2A5 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x327 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x36B DUP2 PUSH2 0x35F DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x66C AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x6CC AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x29D5277C DUP12 DUP12 DUP5 DUP2 PUSH2 0x395 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 DUP13 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x3B2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x434 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x46E DUP3 PUSH2 0x35F DUP12 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x66C AND JUMP JUMPDEST SWAP1 POP DUP8 DUP2 LT ISZERO PUSH2 0x4AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x7AC PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x4BC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9DC29FAC CALLER DUP12 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x53F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x550 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x40C10F19 DUP9 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST POP ADDRESS SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 DUP4 SWAP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x61D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP3 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x64B JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x67B JUMPI POP PUSH1 0x0 PUSH2 0x666 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x688 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x6C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x7CF PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP2 DUP4 PUSH2 0x795 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x75A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x742 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x787 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x7A1 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID PUSH10 0x6E73756666696369656E PUSH21 0x20736F7572636520746F6B656E732070726F766964 PUSH6 0x64536166654D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72315820 0xB3 0xB7 SGT CALLDATACOPY PUSH23 0x76E7194747A625B274E179D89A1E88D2EA5E20905542E2 0xEE 0xCC PUSH28 0x9D64736F6C6343000511003200000000000000000000000000000000 ",
              "sourceMap": "224:2021:160:-;;;339:58;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:58:160;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;339:58:160;376:10;:17;;-1:-1:-1;;;;;376:17:160;;;-1:-1:-1;;;;;;376:17:160;;;;;;;;;224:2021;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "60806040526004361061004a5760003560e01c806378d849ed1461004f5780637f9c0ecd14610080578063b77d239b1461010f578063bb34534c146101a4578063d734fa19146101ce575b600080fd5b34801561005b57600080fd5b50610064610259565b604080516001600160a01b039092168252519081900360200190f35b34801561008c57600080fd5b506100fd600480360360408110156100a357600080fd5b8101906020810181356401000000008111156100be57600080fd5b8201836020820111156100d057600080fd5b803590602001918460208302840111640100000000831117156100f257600080fd5b919350915035610268565b60408051918252519081900360200190f35b6100fd600480360360c081101561012557600080fd5b81019060208101813564010000000081111561014057600080fd5b82018360208201111561015257600080fd5b8035906020019184602083028401116401000000008311171561017457600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060800135610375565b3480156101b057600080fd5b50610064600480360360208110156101c757600080fd5b50356105e6565b3480156101da57600080fd5b50610209600480360360408110156101f157600080fd5b506001600160a01b03813581169160200135166105eb565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561024557818101518382015260200161022d565b505050509050019250505060405180910390f35b6000546001600160a01b031681565b60008054819081906001600160a01b03166329d5277c8787848161028857fe5b905060200201356001600160a01b0316888860018181106102a557fe5b905060200201356001600160a01b03166040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050604080518083038186803b15801561031357600080fd5b505afa158015610327573d6000803e3d6000fd5b505050506040513d604081101561033d57600080fd5b508051602090910151909250905061036b8161035f868563ffffffff61066c16565b9063ffffffff6106cc16565b9695505050505050565b60008054819081906001600160a01b03166329d5277c8b8b848161039557fe5b905060200201356001600160a01b03168c8c60018181106103b257fe5b905060200201356001600160a01b03166040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050604080518083038186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d604081101561044a57600080fd5b5080516020909101519092509050600061046e8261035f8b8663ffffffff61066c16565b9050878110156104af5760405162461bcd60e51b81526004018080602001828103825260238152602001806107ac6023913960400191505060405180910390fd5b8a8a60008181106104bc57fe5b905060200201356001600160a01b03166001600160a01b0316639dc29fac338b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561052b57600080fd5b505af115801561053f573d6000803e3d6000fd5b505050508a8a600181811061055057fe5b905060200201356001600160a01b03166001600160a01b03166340c10f1988836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156105bf57600080fd5b505af11580156105d3573d6000803e3d6000fd5b50929d9c50505050505050505050505050565b503090565b604080516002808252606080830184529283929190602083019080388339019050509050838160008151811061061d57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050828160018151811061064b57fe5b6001600160a01b039092166020928302919091019091015290505b92915050565b60008261067b57506000610666565b8282028284828161068857fe5b04146106c55760405162461bcd60e51b81526004018080602001828103825260218152602001806107cf6021913960400191505060405180910390fd5b9392505050565b60006106c583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836107955760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561075a578181015183820152602001610742565b50505050905090810190601f1680156107875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816107a157fe5b049594505050505056fe696e73756666696369656e7420736f7572636520746f6b656e732070726f7669646564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820b3b713377676e7194747a625b274e179d89a1e88d2ea5e20905542e2eecc7b9d64736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x78D849ED EQ PUSH2 0x4F JUMPI DUP1 PUSH4 0x7F9C0ECD EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0xB77D239B EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0xBB34534C EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xD734FA19 EQ PUSH2 0x1CE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0x259 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x375 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x209 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x245 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x29D5277C DUP8 DUP8 DUP5 DUP2 PUSH2 0x288 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x2A5 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x327 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x36B DUP2 PUSH2 0x35F DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x66C AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x6CC AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x29D5277C DUP12 DUP12 DUP5 DUP2 PUSH2 0x395 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 DUP13 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x3B2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x434 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x46E DUP3 PUSH2 0x35F DUP12 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x66C AND JUMP JUMPDEST SWAP1 POP DUP8 DUP2 LT ISZERO PUSH2 0x4AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x7AC PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x4BC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9DC29FAC CALLER DUP12 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x53F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x550 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x40C10F19 DUP9 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST POP ADDRESS SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 DUP4 SWAP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x61D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP3 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x64B JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x67B JUMPI POP PUSH1 0x0 PUSH2 0x666 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x688 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x6C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x7CF PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP2 DUP4 PUSH2 0x795 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x75A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x742 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x787 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x7A1 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID PUSH10 0x6E73756666696369656E PUSH21 0x20736F7572636520746F6B656E732070726F766964 PUSH6 0x64536166654D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72315820 0xB3 0xB7 SGT CALLDATACOPY PUSH23 0x76E7194747A625B274E179D89A1E88D2EA5E20905542E2 0xEE 0xCC PUSH28 0x9D64736F6C6343000511003200000000000000000000000000000000 ",
              "sourceMap": "224:2021:160:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;310:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;310:25:160;;;:::i;:::-;;;;-1:-1:-1;;;;;310:25:160;;;;;;;;;;;;;;1652:301;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1652:301:160;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1652:301:160;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1652:301:160;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1652:301:160;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1652:301:160;;-1:-1:-1;1652:301:160;-1:-1:-1;1652:301:160;;:::i;:::-;;;;;;;;;;;;;;;;762:730;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;762:730:160;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;762:730:160;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;762:730:160;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;762:730:160;;-1:-1:-1;762:730:160;-1:-1:-1;762:730:160;;;;;;;;-1:-1:-1;;;;;762:730:160;;;;;;;;;;;;;;;;;;;:::i;494:99::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;494:99:160;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;494:99:160;;:::i;2024:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2024:219:160;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2024:219:160;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2024:219:160;;;;;;;;;;;;;;;;;310:25;;;-1:-1:-1;;;;;310:25:160;;:::o;1652:301::-;1737:7;1822:10;;1737:7;;;;-1:-1:-1;;;;;1822:10:160;1810:33;1852:5;;1737:7;1852:8;;;;;;;;;;;-1:-1:-1;;;;;1852:8:160;1871:5;;1877:1;1871:8;;;;;;;;;;;;;-1:-1:-1;;;;;1871:8:160;1810:71;;;;;;;;;;;;;-1:-1:-1;;;;;1810:71:160;-1:-1:-1;;;;;1810:71:160;;;;;;-1:-1:-1;;;;;1810:71:160;-1:-1:-1;;;;;1810:71:160;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1810:71:160;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1810:71:160;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1810:71:160;;;;;;;;;-1:-1:-1;1810:71:160;-1:-1:-1;1893:56:160;1810:71;1893:29;:7;1810:71;1893:29;:11;:29;:::i;:::-;:33;:56;:33;:56;:::i;:::-;1886:63;1652:301;-1:-1:-1;;;;;;1652:301:160:o;762:730::-;960:7;1102:10;;960:7;;;;-1:-1:-1;;;;;1102:10:160;1090:33;1132:5;;960:7;1132:8;;;;;;;;;;;-1:-1:-1;;;;;1132:8:160;1151:5;;1157:1;1151:8;;;;;;;;;;;;;-1:-1:-1;;;;;1151:8:160;1090:71;;;;;;;;;;;;;-1:-1:-1;;;;;1090:71:160;-1:-1:-1;;;;;1090:71:160;;;;;;-1:-1:-1;;;;;1090:71:160;-1:-1:-1;;;;;1090:71:160;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1090:71:160;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1090:71:160;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1090:71:160;;;;;;;;;-1:-1:-1;1090:71:160;-1:-1:-1;1165:20:160;1188:56;1090:71;1188:29;:7;1090:71;1188:29;:11;:29;:::i;:56::-;1165:79;;1273:10;1257:12;:26;;1249:74;;;;-1:-1:-1;;;1249:74:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1346:5;;1352:1;1346:8;;;;;;;;;;;;;-1:-1:-1;;;;;1346:8:160;-1:-1:-1;;;;;1328:33:160;;1370:10;1383:7;1328:63;;;;;;;;;;;;;-1:-1:-1;;;;;1328:63:160;-1:-1:-1;;;;;1328:63:160;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1328:63:160;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1328:63:160;;;;1413:5;;1419:1;1413:8;;;;;;;;;;;;;-1:-1:-1;;;;;1413:8:160;-1:-1:-1;;;;;1395:33:160;;1437:12;1452;1395:70;;;;;;;;;;;;;-1:-1:-1;;;;;1395:70:160;-1:-1:-1;;;;;1395:70:160;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1395:70:160;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;1476:12:160;;762:730;-1:-1:-1;;;;;;;;;;;;;762:730:160:o;494:99::-;-1:-1:-1;584:4:160;;494:99::o;2024:219::-;2157:15;;;2170:1;2157:15;;;2113;2157;;;;;2113;;;2157;2170:1;2157:15;;;;;105:10:-1;2157:15:160;88:34:-1;136:17;;-1:-1;2157:15:160;2134:38;;2186:12;2176:4;2181:1;2176:7;;;;;;;;;;;;;:22;-1:-1:-1;;;;;2176:22:160;;;-1:-1:-1;;;;;2176:22:160;;;;;2212:12;2202:4;2207:1;2202:7;;;;;;;;-1:-1:-1;;;;;2202:22:160;;;:7;;;;;;;;;;;:22;2235:4;-1:-1:-1;2024:219:160;;;;;:::o;1999:399:145:-;2057:7;2274:6;2270:30;;-1:-1:-1;2294:1:145;2287:8;;2270:30;2316:5;;;2320:1;2316;:5;:1;2333:5;;;;;:10;2325:56;;;;-1:-1:-1;;;2325:56:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2393:1;1999:399;-1:-1:-1;;;1999:399:145:o;2817:121::-;2875:7;2895:39;2899:1;2902;2895:39;;;;;;;;;;;;;;;;;3506:7;3595:12;3587:6;3579:29;;;;-1:-1:-1;;;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3579:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:9;3628:1;3624;:5;;;;;;;3411:315;-1:-1:-1;;;;;3411:315:145:o"
            },
            "methodIdentifiers": {
              "addressOf(bytes32)": "bb34534c",
              "conversionPath(address,address)": "d734fa19",
              "convertByPath(address[],uint256,uint256,address,address,uint256)": "b77d239b",
              "priceFeeds()": "78d849ed",
              "rateByPath(address[],uint256)": "7f9c0ecd"
            }
          },
          "userdoc": {
            "methods": {
              "addressOf(bytes32)": {
                "notice": "simulating the contract registry. always returns the address of this contract"
              },
              "conversionPath(address,address)": {
                "notice": "returns the conversion path -> always a direct path"
              },
              "convertByPath(address[],uint256,uint256,address,address,uint256)": {
                "notice": "calculates the return tokens when swapping _amount, makes sure the return is bigger than _minReturn, mints and burns the test tokens accordingly."
              },
              "rateByPath(address[],uint256)": {
                "notice": "queries the rate from the Price Feed contract and computes the expected return amount based on the amout of source tokens to be swapped."
              }
            }
          }
        }
      },
      "contracts/testhelpers/TestToken.sol": {
        "TestToken": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "_symbol",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "_decimals",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "_initialAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": "burner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "minter",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "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"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_who",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "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"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {}
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060405162000f1d38038062000f1d833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b506040908152602082810151929091015186519294509250620001c191600091870190620003a5565b508251620001d7906001906020860190620003a5565b506002805460ff191660ff8416179055801562000203576200020333826001600160e01b036200020d16565b505050506200044a565b6001600160a01b0382166200025b576040805162461bcd60e51b815260206004820152600f60248201526e1b9bc8189d5c9b88185b1b1bddd959608a1b604482015290519081900360640190fd5b62000277816005546200034360201b6200097d1790919060201c565b6005556001600160a01b038216600090815260036020908152604090912054620002ac9183906200097d62000343821b17901c565b6001600160a01b038316600081815260036020908152604091829020939093558051848152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a26040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000828201838110156200039e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003e857805160ff191683800117855562000418565b8280016001018555821562000418579182015b8281111562000418578251825591602001919060010190620003fb565b50620004269291506200042a565b5090565b6200044791905b8082111562000426576000815560010162000431565b90565b610ac3806200045a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806340c10f191161007157806340c10f19146101d957806370a082311461020757806395d89b411461022d5780639dc29fac14610235578063a9059cbb14610261578063dd62ed3e1461028d576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102bb565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b038135169060200135610349565b604080519115158252519081900360200190f35b6101736103af565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b038135811691602081013590911690604001356103b5565b6101c3610548565b6040805160ff9092168252519081900360200190f35b610205600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610551565b005b6101736004803603602081101561021d57600080fd5b50356001600160a01b0316610662565b6100b661067d565b6102056004803603604081101561024b57600080fd5b506001600160a01b0381351690602001356106d7565b6101576004803603604081101561027757600080fd5b506001600160a01b038135169060200135610800565b610173600480360360408110156102a357600080fd5b506001600160a01b0381358116916020013516610909565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103415780601f1061031657610100808354040283529160200191610341565b820191906000526020600020905b81548152906001019060200180831161032457829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60055490565b6001600160a01b0383166000818152600460209081526040808320338452825280832054938352600390915281205490919083118015906103f65750808311155b801561040a57506001600160a01b03841615155b61044e576040805162461bcd60e51b815260206004820152601060248201526f34b73b30b634b2103a3930b739b332b960811b604482015290519081900360640190fd5b6001600160a01b038516600090815260036020526040902054610477908463ffffffff61093416565b6001600160a01b0380871660009081526003602052604080822093909355908616815220546104ac908463ffffffff61097d16565b6001600160a01b038516600090815260036020526040902055600019811015610504576104df818463ffffffff61093416565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b836001600160a01b0316856001600160a01b0316600080516020610a6f833981519152856040518082815260200191505060405180910390a3506001949350505050565b60025460ff1681565b6001600160a01b03821661059e576040805162461bcd60e51b815260206004820152600f60248201526e1b9bc8189d5c9b88185b1b1bddd959608a1b604482015290519081900360640190fd5b6005546105b1908263ffffffff61097d16565b6005556001600160a01b0382166000908152600360205260409020546105dd908263ffffffff61097d16565b6001600160a01b038316600081815260036020908152604091829020939093558051848152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a26040805182815290516001600160a01b03841691600091600080516020610a6f8339815191529181900360200190a35050565b6001600160a01b031660009081526003602052604090205490565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103415780601f1061031657610100808354040283529160200191610341565b6001600160a01b038216600090815260036020526040902054811115610736576040805162461bcd60e51b815260206004820152600f60248201526e62616c616e636520746f6f206c6f7760881b604482015290519081900360640190fd5b6001600160a01b03821660009081526003602052604090205461075f908263ffffffff61093416565b6001600160a01b03831660009081526003602052604090205560055461078b908263ffffffff61093416565b6005556040805182815290516001600160a01b038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a26040805182815290516000916001600160a01b03851691600080516020610a6f8339815191529181900360200190a35050565b33600090815260036020526040812054821180159061082757506001600160a01b03831615155b61086b576040805162461bcd60e51b815260206004820152601060248201526f34b73b30b634b2103a3930b739b332b960811b604482015290519081900360640190fd5b3360009081526003602052604090205461088b908363ffffffff61093416565b33600090815260036020526040808220929092556001600160a01b038516815220546108bd908363ffffffff61097d16565b6001600160a01b038416600081815260036020908152604091829020939093558051858152905191923392600080516020610a6f8339815191529281900390910190a350600192915050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b600061097683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506109d7565b9392505050565b600082820183811015610976576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115610a665760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a2b578181015183820152602001610a13565b50505050905090810190601f168015610a585780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a72315820dcbabaa081074949d01da2a848c9731be52794420629ba4702c5a00ab821715064736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xF1D CODESIZE SUB DUP1 PUSH3 0xF1D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 ADD MLOAD SWAP3 SWAP1 SWAP2 ADD MLOAD DUP7 MLOAD SWAP3 SWAP5 POP SWAP3 POP PUSH3 0x1C1 SWAP2 PUSH1 0x0 SWAP2 DUP8 ADD SWAP1 PUSH3 0x3A5 JUMP JUMPDEST POP DUP3 MLOAD PUSH3 0x1D7 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH3 0x3A5 JUMP JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP5 AND OR SWAP1 SSTORE DUP1 ISZERO PUSH3 0x203 JUMPI PUSH3 0x203 CALLER DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x20D AND JUMP JUMPDEST POP POP POP POP PUSH3 0x44A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x25B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1B9BC8189D5C9B88185B1B1BDDD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0x277 DUP2 PUSH1 0x5 SLOAD PUSH3 0x343 PUSH1 0x20 SHL PUSH3 0x97D OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH3 0x2AC SWAP2 DUP4 SWAP1 PUSH3 0x97D PUSH3 0x343 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 PUSH32 0xF6798A560793A54C3BCFE86A93CDE1E73087D944C0EA20544137D4121396885 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG2 PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH3 0x39E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x3E8 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x418 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x418 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x418 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x3FB JUMP JUMPDEST POP PUSH3 0x426 SWAP3 SWAP2 POP PUSH3 0x42A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x447 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x426 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x431 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAC3 DUP1 PUSH3 0x45A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x22D JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x28D JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1BB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x349 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x173 PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x19B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3B5 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x548 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x551 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x173 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x662 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x67D JUMP JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6D7 JUMP JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x800 JUMP JUMPDEST PUSH2 0x173 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x909 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x341 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x316 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x341 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x324 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 GT DUP1 ISZERO SWAP1 PUSH2 0x3F6 JUMPI POP DUP1 DUP4 GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x40A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO JUMPDEST PUSH2 0x44E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x34B73B30B634B2103A3930B739B332B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x477 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x934 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP7 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x4AC SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x97D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x0 NOT DUP2 LT ISZERO PUSH2 0x504 JUMPI PUSH2 0x4DF DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x934 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x59E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1B9BC8189D5C9B88185B1B1BDDD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x5B1 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x97D AND JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x5DD SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x97D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 PUSH32 0xF6798A560793A54C3BCFE86A93CDE1E73087D944C0EA20544137D4121396885 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG2 PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x341 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x316 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x341 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x736 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x62616C616E636520746F6F206C6F77 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x75F SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x934 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x5 SLOAD PUSH2 0x78B SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x934 AND JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0xCC16F5DBB4873280815C1EE09DBD06736CFFCC184412CF7A71A0FDB75D397CA5 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0x827 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST PUSH2 0x86B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x34B73B30B634B2103A3930B739B332B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x88B SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x934 AND JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x8BD SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x97D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 CALLER SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x976 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x9D7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x976 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xA66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA2B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA13 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xA58 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID 0xDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF LOG2 PUSH6 0x627A7A723158 KECCAK256 0xDC 0xBA 0xBA LOG0 DUP2 SMOD 0x49 0x49 0xD0 SAR LOG2 0xA8 0x48 0xC9 PUSH20 0x1BE52794420629BA4702C5A00AB821715064736F PUSH13 0x63430005110032000000000000 ",
              "sourceMap": "183:2822:161:-;;;711:250;8:9:-1;5:2;;;30:1;27;20:12;5:2;711:250:161;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;711:250:161;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;711:250:161;;420:4:-1;411:14;;;;711:250:161;;;;;411:14:-1;711:250:161;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;711:250:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;711:250:161;;420:4:-1;411:14;;;;711:250:161;;;;;411:14:-1;711:250:161;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;711:250:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;711:250:161;;;;;;;;;;;;;;830:12;;711:250;;-1:-1:-1;711:250:161;-1:-1:-1;830:12:161;;:4;;:12;;;;:::i;:::-;-1:-1:-1;846:16:161;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;866:8:161;:20;;-1:-1:-1;;866:20:161;;;;;;;895:19;;891:67;;921:32;926:10;938:14;-1:-1:-1;;;;;921:4:161;:32;:::i;:::-;711:250;;;;183:2822;;1991:260;-1:-1:-1;;;;;2053:17:161;;2045:45;;;;;-1:-1:-1;;;2045:45:161;;;;;;;;;;;;-1:-1:-1;;;2045:45:161;;;;;;;;;;;;;;;2109:24;2126:6;2109:12;;:16;;;;;;:24;;;;:::i;:::-;2094:12;:39;-1:-1:-1;;;;;2153:13:161;;;;;;:8;:13;;;;;;;;;:25;;2171:6;;2153:17;;;;;:25;;:::i;:::-;-1:-1:-1;;;;;2137:13:161;;;;;;:8;:13;;;;;;;;;:41;;;;2188:17;;;;;;;2137:13;;2188:17;;;;;;;;;2214:33;;;;;;;;-1:-1:-1;;;;;2214:33:161;;;2231:1;;2214:33;;;;;;;;;1991:260;;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;183:2822:161:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;183:2822:161;;;-1:-1:-1;183:2822:161;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100a95760003560e01c806340c10f191161007157806340c10f19146101d957806370a082311461020757806395d89b411461022d5780639dc29fac14610235578063a9059cbb14610261578063dd62ed3e1461028d576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102bb565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b038135169060200135610349565b604080519115158252519081900360200190f35b6101736103af565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b038135811691602081013590911690604001356103b5565b6101c3610548565b6040805160ff9092168252519081900360200190f35b610205600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610551565b005b6101736004803603602081101561021d57600080fd5b50356001600160a01b0316610662565b6100b661067d565b6102056004803603604081101561024b57600080fd5b506001600160a01b0381351690602001356106d7565b6101576004803603604081101561027757600080fd5b506001600160a01b038135169060200135610800565b610173600480360360408110156102a357600080fd5b506001600160a01b0381358116916020013516610909565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103415780601f1061031657610100808354040283529160200191610341565b820191906000526020600020905b81548152906001019060200180831161032457829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60055490565b6001600160a01b0383166000818152600460209081526040808320338452825280832054938352600390915281205490919083118015906103f65750808311155b801561040a57506001600160a01b03841615155b61044e576040805162461bcd60e51b815260206004820152601060248201526f34b73b30b634b2103a3930b739b332b960811b604482015290519081900360640190fd5b6001600160a01b038516600090815260036020526040902054610477908463ffffffff61093416565b6001600160a01b0380871660009081526003602052604080822093909355908616815220546104ac908463ffffffff61097d16565b6001600160a01b038516600090815260036020526040902055600019811015610504576104df818463ffffffff61093416565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b836001600160a01b0316856001600160a01b0316600080516020610a6f833981519152856040518082815260200191505060405180910390a3506001949350505050565b60025460ff1681565b6001600160a01b03821661059e576040805162461bcd60e51b815260206004820152600f60248201526e1b9bc8189d5c9b88185b1b1bddd959608a1b604482015290519081900360640190fd5b6005546105b1908263ffffffff61097d16565b6005556001600160a01b0382166000908152600360205260409020546105dd908263ffffffff61097d16565b6001600160a01b038316600081815260036020908152604091829020939093558051848152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a26040805182815290516001600160a01b03841691600091600080516020610a6f8339815191529181900360200190a35050565b6001600160a01b031660009081526003602052604090205490565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103415780601f1061031657610100808354040283529160200191610341565b6001600160a01b038216600090815260036020526040902054811115610736576040805162461bcd60e51b815260206004820152600f60248201526e62616c616e636520746f6f206c6f7760881b604482015290519081900360640190fd5b6001600160a01b03821660009081526003602052604090205461075f908263ffffffff61093416565b6001600160a01b03831660009081526003602052604090205560055461078b908263ffffffff61093416565b6005556040805182815290516001600160a01b038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a26040805182815290516000916001600160a01b03851691600080516020610a6f8339815191529181900360200190a35050565b33600090815260036020526040812054821180159061082757506001600160a01b03831615155b61086b576040805162461bcd60e51b815260206004820152601060248201526f34b73b30b634b2103a3930b739b332b960811b604482015290519081900360640190fd5b3360009081526003602052604090205461088b908363ffffffff61093416565b33600090815260036020526040808220929092556001600160a01b038516815220546108bd908363ffffffff61097d16565b6001600160a01b038416600081815260036020908152604091829020939093558051858152905191923392600080516020610a6f8339815191529281900390910190a350600192915050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b600061097683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506109d7565b9392505050565b600082820183811015610976576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115610a665760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a2b578181015183820152602001610a13565b50505050905090810190601f168015610a585780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a72315820dcbabaa081074949d01da2a848c9731be52794420629ba4702c5a00ab821715064736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x22D JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x28D JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1BB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x349 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x173 PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x19B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3B5 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x548 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x551 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x173 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x662 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x67D JUMP JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6D7 JUMP JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x800 JUMP JUMPDEST PUSH2 0x173 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x909 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x341 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x316 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x341 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x324 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD SWAP4 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 GT DUP1 ISZERO SWAP1 PUSH2 0x3F6 JUMPI POP DUP1 DUP4 GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x40A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO JUMPDEST PUSH2 0x44E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x34B73B30B634B2103A3930B739B332B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x477 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x934 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP7 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x4AC SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x97D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x0 NOT DUP2 LT ISZERO PUSH2 0x504 JUMPI PUSH2 0x4DF DUP2 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x934 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x59E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x1B9BC8189D5C9B88185B1B1BDDD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x5B1 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x97D AND JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x5DD SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x97D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 PUSH32 0xF6798A560793A54C3BCFE86A93CDE1E73087D944C0EA20544137D4121396885 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG2 PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x341 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x316 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x341 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x736 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x62616C616E636520746F6F206C6F77 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x75F SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x934 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x5 SLOAD PUSH2 0x78B SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x934 AND JUMP JUMPDEST PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH32 0xCC16F5DBB4873280815C1EE09DBD06736CFFCC184412CF7A71A0FDB75D397CA5 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0x827 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST PUSH2 0x86B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x34B73B30B634B2103A3930B739B332B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x88B SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x934 AND JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x8BD SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x97D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 CALLER SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x976 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x9D7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x976 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xA66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA2B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA13 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xA58 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP INVALID 0xDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF LOG2 PUSH6 0x627A7A723158 KECCAK256 0xDC 0xBA 0xBA LOG0 DUP2 SMOD 0x49 0x49 0xD0 SAR LOG2 0xA8 0x48 0xC9 PUSH20 0x1BE52794420629BA4702C5A00AB821715064736F PUSH13 0x63430005110032000000000000 ",
              "sourceMap": "183:2822:161:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;183:2822:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;494:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;494:18:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;964:181;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;964:181:161;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2698:80;;;:::i;:::-;;;;;;;;;;;;;;;;1471:517;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1471:517:161;;;;;;;;;;;;;;;;;:::i;538:21::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1991:260;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1991:260:161;;;;;;;;:::i;:::-;;2781:96;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2781:96:161;-1:-1:-1;;;;;2781:96:161;;:::i;515:20::-;;;:::i;2254:441::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2254:441:161;;;;;;;;:::i;1148:320::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1148:320:161;;;;;;;;:::i;2880:123::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2880:123:161;;;;;;;;;;:::i;494:18::-;;;;;;;;;;;;;;;-1:-1:-1;;494:18:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;964:181::-;1049:10;1031:4;1041:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1041:29:161;;;;;;;;;;;:38;;;1088;;;;;;;1031:4;;1041:29;;1049:10;;1088:38;;;;;;;;-1:-1:-1;1137:4:161;964:181;;;;:::o;2698:80::-;2762:12;;2698:80;:::o;1471:517::-;-1:-1:-1;;;;;1598:14:161;;1562:4;1598:14;;;:7;:14;;;;;;;;1613:10;1598:26;;;;;;;;1646:15;;;:8;:15;;;;;;1562:4;;1598:26;1636:25;;;;;:54;;;1675:15;1665:6;:25;;1636:54;:75;;;;-1:-1:-1;;;;;;1694:17:161;;;;1636:75;1628:104;;;;;-1:-1:-1;;;1628:104:161;;;;;;;;;;;;-1:-1:-1;;;1628:104:161;;;;;;;;;;;;;;;-1:-1:-1;;;;;1755:15:161;;;;;;:8;:15;;;;;;:27;;1775:6;1755:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;1737:15:161;;;;;;;:8;:15;;;;;;:45;;;;1802:13;;;;;;;:25;;1820:6;1802:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;1786:13:161;;;;;;:8;:13;;;;;:41;-1:-1:-1;;1835:29:161;;1831:101;;;1900:27;:15;1920:6;1900:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;1871:14:161;;;;;;:7;:14;;;;;;;;1886:10;1871:26;;;;;;;:56;1831:101;1957:3;-1:-1:-1;;;;;1941:28:161;1950:5;-1:-1:-1;;;;;1941:28:161;-1:-1:-1;;;;;;;;;;;1962:6:161;1941:28;;;;;;;;;;;;;;;;;;-1:-1:-1;1980:4:161;;1471:517;-1:-1:-1;;;;1471:517:161:o;538:21::-;;;;;;:::o;1991:260::-;-1:-1:-1;;;;;2053:17:161;;2045:45;;;;;-1:-1:-1;;;2045:45:161;;;;;;;;;;;;-1:-1:-1;;;2045:45:161;;;;;;;;;;;;;;;2109:12;;:24;;2126:6;2109:24;:16;:24;:::i;:::-;2094:12;:39;-1:-1:-1;;;;;2153:13:161;;;;;;:8;:13;;;;;;:25;;2171:6;2153:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;2137:13:161;;;;;;:8;:13;;;;;;;;;:41;;;;2188:17;;;;;;;2137:13;;2188:17;;;;;;;;;2214:33;;;;;;;;-1:-1:-1;;;;;2214:33:161;;;2231:1;;-1:-1:-1;;;;;;;;;;;2214:33:161;;;;;;;;1991:260;;:::o;2781:96::-;-1:-1:-1;;;;;2857:16:161;2837:7;2857:16;;;:8;:16;;;;;;;2781:96::o;515:20::-;;;;;;;;;;;;;;;-1:-1:-1;;515:20:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:441;-1:-1:-1;;;;;2327:14:161;;;;;;:8;:14;;;;;;2317:24;;;2309:52;;;;;-1:-1:-1;;;2309:52:161;;;;;;;;;;;;-1:-1:-1;;;2309:52:161;;;;;;;;;;;;;;;-1:-1:-1;;;;;2551:14:161;;;;;;:8;:14;;;;;;:26;;2570:6;2551:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;2534:14:161;;;;;;:8;:14;;;;;:43;2596:12;;:24;;2613:6;2596:24;:16;:24;:::i;:::-;2581:12;:39;2630:18;;;;;;;;-1:-1:-1;;;;;2630:18:161;;;;;;;;;;;;;2657:34;;;;;;;;2680:1;;-1:-1:-1;;;;;2657:34:161;;;-1:-1:-1;;;;;;;;;;;2657:34:161;;;;;;;;2254:441;;:::o;1148:320::-;1248:10;1211:4;1239:20;;;:8;:20;;;;;;1229:30;;;;;:51;;-1:-1:-1;;;;;;1263:17:161;;;;1229:51;1221:80;;;;;-1:-1:-1;;;1221:80:161;;;;;;;;;;;;-1:-1:-1;;;1221:80:161;;;;;;;;;;;;;;;1338:10;1329:20;;;;:8;:20;;;;;;:32;;1354:6;1329:32;:24;:32;:::i;:::-;1315:10;1306:20;;;;:8;:20;;;;;;:55;;;;-1:-1:-1;;;;;1381:13:161;;;;;;:25;;1399:6;1381:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;1365:13:161;;;;;;:8;:13;;;;;;;;;:41;;;;1416:33;;;;;;;1365:13;;1425:10;;-1:-1:-1;;;;;;;;;;;1416:33:161;;;;;;;;;-1:-1:-1;1460:4:161;1148:320;;;;:::o;2880:123::-;-1:-1:-1;;;;;2974:15:161;;;2954:7;2974:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2880:123::o;1201:125:145:-;1259:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1272:50;1201:125;-1:-1:-1;;;1201:125:145:o;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;1614:175;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "burn(address,uint256)": "9dc29fac",
              "decimals()": "313ce567",
              "mint(address,uint256)": "40c10f19",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "userdoc": {
            "methods": {}
          }
        }
      },
      "contracts/token/IApproveAndCall.sol": {
        "IApproveAndCall": {
          "abi": [
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "receiveApproval",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interfaces are used to cast a contract address into a callable instance.",
            "methods": {
              "receiveApproval(address,uint256,address,bytes)": {
                "params": {
                  "_amount": "The amount was approved.",
                  "_data": "The data will be used for low level call.",
                  "_sender": "The sender of SOV.approveAndCall function.",
                  "_token": "The address of token."
                }
              }
            },
            "title": "Interface for contract governance/ApprovalReceiver.sol"
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "receiveApproval(address,uint256,address,bytes)": "8f4ffcb1"
            }
          },
          "userdoc": {
            "methods": {
              "receiveApproval(address,uint256,address,bytes)": {
                "notice": "Receives approval from SOV token."
              }
            }
          }
        }
      },
      "contracts/token/SOV.sol": {
        "SOV": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_initialAmount",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": "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"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "approveAndCall",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "This contract represents a token with dynamic supply.  The owner of the token contract can mint/burn tokens to/from any account  based upon previous governance voting and approval.",
            "methods": {
              "allowance(address,address)": {
                "details": "See {IERC20-allowance}."
              },
              "approve(address,uint256)": {
                "details": "See {IERC20-approve}.\t * Requirements:\t * - `spender` cannot be the zero address."
              },
              "approveAndCall(address,uint256,bytes)": {
                "params": {
                  "_amount": "The amount of tokens to be sent.",
                  "_data": "Parameters for the contract call, such as endpoint signature.",
                  "_spender": "The contract address to spend the tokens."
                }
              },
              "balanceOf(address)": {
                "details": "See {IERC20-balanceOf}."
              },
              "constructor": {
                "details": "On deployment, some amount of tokens will be minted for the owner.",
                "params": {
                  "_initialAmount": "The amount of tokens to be minted on contract creation."
                }
              },
              "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`).\t * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei.\t * 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}."
              },
              "decreaseAllowance(address,uint256)": {
                "details": "Atomically decreases the allowance granted to `spender` by the caller.\t * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.\t * Emits an {Approval} event indicating the updated allowance.\t * Requirements:\t * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
              },
              "increaseAllowance(address,uint256)": {
                "details": "Atomically increases the allowance granted to `spender` by the caller.\t * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.\t * Emits an {Approval} event indicating the updated allowance.\t * Requirements:\t * - `spender` cannot be the zero address."
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "mint(address,uint256)": {
                "details": "Don't create more than 2^96/10 tokens before updating the governance first.",
                "params": {
                  "_account": "The recipient address to get the minted tokens.",
                  "_amount": "The amount of tokens to be minted."
                }
              },
              "name()": {
                "details": "Returns the name of the token."
              },
              "owner()": {
                "details": "Returns the address of the current 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}.\t * Requirements:\t * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC20-transferFrom}.\t * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20};\t * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`."
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            },
            "title": "Sovryn Token: SOV is an ERC-20 token contract for Sovryn governance."
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b506040516200128738038062001287833981810160405260208110156200003757600080fd5b5051604080518082018252600c81526b29b7bb393cb7102a37b5b2b760a11b6020828101918252835180850190945260038085526229a7ab60e91b9185019190915282519293926012926200008d9291620002a8565b508151620000a3906004906020850190620002a8565b506005805460ff191660ff929092169190911790555060009050620000c762000140565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801562000139576200013933826001600160e01b036200014516565b506200034a565b335b90565b6001600160a01b038216620001a1576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620001bd816002546200024660201b62000bd41790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620001f091839062000bd462000246821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600082820183811015620002a1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002eb57805160ff19168380011785556200031b565b828001600101855582156200031b579182015b828111156200031b578251825591602001919060010190620002fe565b50620003299291506200032d565b5090565b6200014291905b8082111562000329576000815560010162000334565b610f2d806200035a6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063a9059cbb11610066578063a9059cbb14610310578063cae9ca511461033c578063dd62ed3e146103f7578063f2fde38b1461042557610100565b80638da5cb5b146102b05780638f32d59b146102d457806395d89b41146102dc578063a457c2d7146102e457610100565b8063313ce567116100d3578063313ce56714610212578063395093511461023057806340c10f191461025c57806370a082311461028a57610100565b806306fdde0314610105578063095ea7b31461018257806318160ddd146101c257806323b872dd146101dc575b600080fd5b61010d61044b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014757818101518382015260200161012f565b50505050905090810190601f1680156101745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ae6004803603604081101561019857600080fd5b506001600160a01b0381351690602001356104e1565b604080519115158252519081900360200190f35b6101ca6104fe565b60408051918252519081900360200190f35b6101ae600480360360608110156101f257600080fd5b506001600160a01b03813581169160208101359091169060400135610504565b61021a610591565b6040805160ff9092168252519081900360200190f35b6101ae6004803603604081101561024657600080fd5b506001600160a01b03813516906020013561059a565b6102886004803603604081101561027257600080fd5b506001600160a01b0381351690602001356105ee565b005b6101ca600480360360208110156102a057600080fd5b50356001600160a01b0316610644565b6102b861065f565b604080516001600160a01b039092168252519081900360200190f35b6101ae610673565b61010d61069e565b6101ae600480360360408110156102fa57600080fd5b506001600160a01b0381351690602001356106ff565b6101ae6004803603604081101561032657600080fd5b506001600160a01b03813516906020013561076d565b6102886004803603606081101561035257600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561038257600080fd5b82018360208201111561039457600080fd5b803590602001918460018302840111640100000000831117156103b657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610781945050505050565b6101ca6004803603604081101561040d57600080fd5b506001600160a01b0381358116916020013516610872565b6102886004803603602081101561043b57600080fd5b50356001600160a01b031661089d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104d75780601f106104ac576101008083540402835291602001916104d7565b820191906000526020600020905b8154815290600101906020018083116104ba57829003601f168201915b5050505050905090565b60006104f56104ee6108f1565b84846108f5565b50600192915050565b60025490565b60006105118484846109e1565b6105878461051d6108f1565b61058285604051806060016040528060288152602001610e63602891396001600160a01b038a1660009081526001602052604081209061055b6108f1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff610b3d16565b6108f5565b5060019392505050565b60055460ff1690565b60006104f56105a76108f1565b8461058285600160006105b86108f1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610bd416565b6105f6610673565b610636576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6106408282610c35565b5050565b6001600160a01b031660009081526020819052604090205490565b60055461010090046001600160a01b031690565b60055460009061010090046001600160a01b031661068f6108f1565b6001600160a01b031614905090565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104d75780601f106104ac576101008083540402835291602001916104d7565b60006104f561070c6108f1565b8461058285604051806060016040528060258152602001610ed460259139600160006107366108f1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610b3d16565b60006104f561077a6108f1565b84846109e1565b61078b83836104e1565b50604051638f4ffcb160e01b815233600482018181526024830185905230604484018190526080606485019081528551608486015285516001600160a01b03891695638f4ffcb1959489949389939192909160a490910190602085019080838360005b838110156108065781810151838201526020016107ee565b50505050905090810190601f1680156108335780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561085557600080fd5b505af1158015610869573d6000803e3d6000fd5b50505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6108a5610673565b6108e5576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6108ee81610d25565b50565b3390565b6001600160a01b03831661093a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610eb06024913960400191505060405180910390fd5b6001600160a01b03821661097f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610e1b6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610a265760405162461bcd60e51b8152600401808060200182810382526025815260200180610e8b6025913960400191505060405180910390fd5b6001600160a01b038216610a6b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610dd26023913960400191505060405180910390fd5b610aae81604051806060016040528060268152602001610e3d602691396001600160a01b038616600090815260208190526040902054919063ffffffff610b3d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610ae3908263ffffffff610bd416565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610bcc5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b91578181015183820152602001610b79565b50505050905090810190601f168015610bbe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610c2e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610c90576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610ca3908263ffffffff610bd416565b6002556001600160a01b038216600090815260208190526040902054610ccf908263ffffffff610bd416565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038116610d6a5760405162461bcd60e51b8152600401808060200182810382526026815260200180610df56026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b031990921691909117905556fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820f828461b11c2dbaac152fd939d41b833687cf3e3fc150b8af9fa9b814c74d39864736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1287 CODESIZE SUB DUP1 PUSH3 0x1287 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xC DUP2 MSTORE PUSH12 0x29B7BB393CB7102A37B5B2B7 PUSH1 0xA1 SHL PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x3 DUP1 DUP6 MSTORE PUSH3 0x29A7AB PUSH1 0xE9 SHL SWAP2 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD SWAP3 SWAP4 SWAP3 PUSH1 0x12 SWAP3 PUSH3 0x8D SWAP3 SWAP2 PUSH3 0x2A8 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0xA3 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x2A8 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH1 0x0 SWAP1 POP PUSH3 0xC7 PUSH3 0x140 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP DUP1 ISZERO PUSH3 0x139 JUMPI PUSH3 0x139 CALLER DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x145 AND JUMP JUMPDEST POP PUSH3 0x34A JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x1A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0x1BD DUP2 PUSH1 0x2 SLOAD PUSH3 0x246 PUSH1 0x20 SHL PUSH3 0xBD4 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH3 0x1F0 SWAP2 DUP4 SWAP1 PUSH3 0xBD4 PUSH3 0x246 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH3 0x2A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2EB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x31B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x31B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x31B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2FE JUMP JUMPDEST POP PUSH3 0x329 SWAP3 SWAP2 POP PUSH3 0x32D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x142 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x329 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x334 JUMP JUMPDEST PUSH2 0xF2D DUP1 PUSH3 0x35A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x310 JUMPI DUP1 PUSH4 0xCAE9CA51 EQ PUSH2 0x33C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x425 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2B0 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E4 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x28A JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1DC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x44B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x147 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x174 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1CA PUSH2 0x4FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x504 JUMP JUMPDEST PUSH2 0x21A PUSH2 0x591 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x59A JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5EE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x644 JUMP JUMPDEST PUSH2 0x2B8 PUSH2 0x65F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1AE PUSH2 0x673 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x69E JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6FF JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x76D JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x781 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x872 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x89D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4D7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4AC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4D7 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4BA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F5 PUSH2 0x4EE PUSH2 0x8F1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x8F5 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x511 DUP5 DUP5 DUP5 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x587 DUP5 PUSH2 0x51D PUSH2 0x8F1 JUMP JUMPDEST PUSH2 0x582 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE63 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x55B PUSH2 0x8F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB3D AND JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F5 PUSH2 0x5A7 PUSH2 0x8F1 JUMP JUMPDEST DUP5 PUSH2 0x582 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x5B8 PUSH2 0x8F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xBD4 AND JUMP JUMPDEST PUSH2 0x5F6 PUSH2 0x673 JUMP JUMPDEST PUSH2 0x636 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x640 DUP3 DUP3 PUSH2 0xC35 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x68F PUSH2 0x8F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4D7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4AC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F5 PUSH2 0x70C PUSH2 0x8F1 JUMP JUMPDEST DUP5 PUSH2 0x582 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED4 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x736 PUSH2 0x8F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB3D AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F5 PUSH2 0x77A PUSH2 0x8F1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x78B DUP4 DUP4 PUSH2 0x4E1 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x8F4FFCB1 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x24 DUP4 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x64 DUP6 ADD SWAP1 DUP2 MSTORE DUP6 MLOAD PUSH1 0x84 DUP7 ADD MSTORE DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP6 PUSH4 0x8F4FFCB1 SWAP6 SWAP5 DUP10 SWAP5 SWAP4 DUP10 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0xA4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x806 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7EE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x833 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x869 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x8A5 PUSH2 0x673 JUMP JUMPDEST PUSH2 0x8E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x8EE DUP2 PUSH2 0xD25 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x93A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xEB0 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x97F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE1B PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xA26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE8B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDD2 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAAE DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3D PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB3D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xAE3 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xBD4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xBCC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB91 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB79 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xBBE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xC2E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xC90 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xCA3 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xBD4 AND JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xCCF SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xBD4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD6A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDF5 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 PUSH2 0x100 SWAP1 DIV AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737345524332303A20617070726F76652074 PUSH16 0x20746865207A65726F20616464726573 PUSH20 0x45524332303A207472616E7366657220616D6F75 PUSH15 0x7420657863656564732062616C616E PUSH4 0x65455243 ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA265627A PUSH27 0x72315820F828461B11C2DBAAC152FD939D41B833687CF3E3FC150B DUP11 0xF9 STATICCALL SWAP12 DUP2 0x4C PUSH21 0xD39864736F6C634300051100320000000000000000 ",
              "sourceMap": "530:1647:163:-;;;924:156;8:9:-1;5:2;;;30:1;27;20:12;5:2;924:156:163;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;924:156:163;981:4;;;;;;;;;;;-1:-1:-1;;;924:156:163;981:4;;;;;;987:6;;;;;;;;;;;;-1:-1:-1;;;987:6:163;;;;;;;481:12:139;;981:4:163;;987:6;678:2;;481:12:139;;987:6:163;481:12:139;:::i;:::-;-1:-1:-1;497:16:139;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;517:9:139;:20;;-1:-1:-1;;517:20:139;;;;;;;;;;;;-1:-1:-1;;;;697:12:142;:10;:12::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;;-1:-1:-1;;;;;713:18:142;;;;;;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;-1:-1:-1;;740:43:142;;-1:-1:-1;;740:43:142;-1:-1:-1;1013:19:163;;1009:68;;1039:33;1045:10;1057:14;-1:-1:-1;;;;;1039:5:163;:33;:::i;:::-;924:156;530:1647;;780:87:137;853:10;780:87;;:::o;5524:275:138:-;-1:-1:-1;;;;;5593:21:138;;5585:65;;;;;-1:-1:-1;;;5585:65:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;5670:24;5687:6;5670:12;;:16;;;;;;:24;;;;:::i;:::-;5655:12;:39;-1:-1:-1;;;;;5719:18:138;;:9;:18;;;;;;;;;;;;:30;;5742:6;;5719:22;;;;;:30;;:::i;:::-;-1:-1:-1;;;;;5698:18:138;;:9;:18;;;;;;;;;;;:51;;;;5758:37;;;;;;;5698:18;;:9;;5758:37;;;;;;;;;;5524:275;;:::o;812:155:145:-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;530:1647:163:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;530:1647:163;;;-1:-1:-1;530:1647:163;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063a9059cbb11610066578063a9059cbb14610310578063cae9ca511461033c578063dd62ed3e146103f7578063f2fde38b1461042557610100565b80638da5cb5b146102b05780638f32d59b146102d457806395d89b41146102dc578063a457c2d7146102e457610100565b8063313ce567116100d3578063313ce56714610212578063395093511461023057806340c10f191461025c57806370a082311461028a57610100565b806306fdde0314610105578063095ea7b31461018257806318160ddd146101c257806323b872dd146101dc575b600080fd5b61010d61044b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014757818101518382015260200161012f565b50505050905090810190601f1680156101745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ae6004803603604081101561019857600080fd5b506001600160a01b0381351690602001356104e1565b604080519115158252519081900360200190f35b6101ca6104fe565b60408051918252519081900360200190f35b6101ae600480360360608110156101f257600080fd5b506001600160a01b03813581169160208101359091169060400135610504565b61021a610591565b6040805160ff9092168252519081900360200190f35b6101ae6004803603604081101561024657600080fd5b506001600160a01b03813516906020013561059a565b6102886004803603604081101561027257600080fd5b506001600160a01b0381351690602001356105ee565b005b6101ca600480360360208110156102a057600080fd5b50356001600160a01b0316610644565b6102b861065f565b604080516001600160a01b039092168252519081900360200190f35b6101ae610673565b61010d61069e565b6101ae600480360360408110156102fa57600080fd5b506001600160a01b0381351690602001356106ff565b6101ae6004803603604081101561032657600080fd5b506001600160a01b03813516906020013561076d565b6102886004803603606081101561035257600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561038257600080fd5b82018360208201111561039457600080fd5b803590602001918460018302840111640100000000831117156103b657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610781945050505050565b6101ca6004803603604081101561040d57600080fd5b506001600160a01b0381358116916020013516610872565b6102886004803603602081101561043b57600080fd5b50356001600160a01b031661089d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104d75780601f106104ac576101008083540402835291602001916104d7565b820191906000526020600020905b8154815290600101906020018083116104ba57829003601f168201915b5050505050905090565b60006104f56104ee6108f1565b84846108f5565b50600192915050565b60025490565b60006105118484846109e1565b6105878461051d6108f1565b61058285604051806060016040528060288152602001610e63602891396001600160a01b038a1660009081526001602052604081209061055b6108f1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff610b3d16565b6108f5565b5060019392505050565b60055460ff1690565b60006104f56105a76108f1565b8461058285600160006105b86108f1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610bd416565b6105f6610673565b610636576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6106408282610c35565b5050565b6001600160a01b031660009081526020819052604090205490565b60055461010090046001600160a01b031690565b60055460009061010090046001600160a01b031661068f6108f1565b6001600160a01b031614905090565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104d75780601f106104ac576101008083540402835291602001916104d7565b60006104f561070c6108f1565b8461058285604051806060016040528060258152602001610ed460259139600160006107366108f1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610b3d16565b60006104f561077a6108f1565b84846109e1565b61078b83836104e1565b50604051638f4ffcb160e01b815233600482018181526024830185905230604484018190526080606485019081528551608486015285516001600160a01b03891695638f4ffcb1959489949389939192909160a490910190602085019080838360005b838110156108065781810151838201526020016107ee565b50505050905090810190601f1680156108335780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561085557600080fd5b505af1158015610869573d6000803e3d6000fd5b50505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6108a5610673565b6108e5576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6108ee81610d25565b50565b3390565b6001600160a01b03831661093a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610eb06024913960400191505060405180910390fd5b6001600160a01b03821661097f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610e1b6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610a265760405162461bcd60e51b8152600401808060200182810382526025815260200180610e8b6025913960400191505060405180910390fd5b6001600160a01b038216610a6b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610dd26023913960400191505060405180910390fd5b610aae81604051806060016040528060268152602001610e3d602691396001600160a01b038616600090815260208190526040902054919063ffffffff610b3d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610ae3908263ffffffff610bd416565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610bcc5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b91578181015183820152602001610b79565b50505050905090810190601f168015610bbe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610c2e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610c90576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610ca3908263ffffffff610bd416565b6002556001600160a01b038216600090815260208190526040902054610ccf908263ffffffff610bd416565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038116610d6a5760405162461bcd60e51b8152600401808060200182810382526026815260200180610df56026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b031990921691909117905556fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820f828461b11c2dbaac152fd939d41b833687cf3e3fc150b8af9fa9b814c74d39864736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x310 JUMPI DUP1 PUSH4 0xCAE9CA51 EQ PUSH2 0x33C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x425 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2B0 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E4 JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x28A JUMPI PUSH2 0x100 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1DC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x44B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x147 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x174 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1CA PUSH2 0x4FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x504 JUMP JUMPDEST PUSH2 0x21A PUSH2 0x591 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x59A JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5EE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x644 JUMP JUMPDEST PUSH2 0x2B8 PUSH2 0x65F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1AE PUSH2 0x673 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x69E JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6FF JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x76D JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x781 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x872 JUMP JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x89D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4D7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4AC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4D7 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4BA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F5 PUSH2 0x4EE PUSH2 0x8F1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x8F5 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x511 DUP5 DUP5 DUP5 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x587 DUP5 PUSH2 0x51D PUSH2 0x8F1 JUMP JUMPDEST PUSH2 0x582 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE63 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x55B PUSH2 0x8F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB3D AND JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F5 PUSH2 0x5A7 PUSH2 0x8F1 JUMP JUMPDEST DUP5 PUSH2 0x582 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x5B8 PUSH2 0x8F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xBD4 AND JUMP JUMPDEST PUSH2 0x5F6 PUSH2 0x673 JUMP JUMPDEST PUSH2 0x636 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x640 DUP3 DUP3 PUSH2 0xC35 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x68F PUSH2 0x8F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4D7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4AC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F5 PUSH2 0x70C PUSH2 0x8F1 JUMP JUMPDEST DUP5 PUSH2 0x582 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED4 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x736 PUSH2 0x8F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB3D AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F5 PUSH2 0x77A PUSH2 0x8F1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x78B DUP4 DUP4 PUSH2 0x4E1 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x8F4FFCB1 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x24 DUP4 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0x44 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x64 DUP6 ADD SWAP1 DUP2 MSTORE DUP6 MLOAD PUSH1 0x84 DUP7 ADD MSTORE DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP6 PUSH4 0x8F4FFCB1 SWAP6 SWAP5 DUP10 SWAP5 SWAP4 DUP10 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0xA4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x806 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7EE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x833 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x869 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x8A5 PUSH2 0x673 JUMP JUMPDEST PUSH2 0x8E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x8EE DUP2 PUSH2 0xD25 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x93A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xEB0 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x97F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE1B PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xA26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE8B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDD2 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAAE DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3D PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB3D AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xAE3 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xBD4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xBCC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB91 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB79 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xBBE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xC2E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xC90 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xCA3 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xBD4 AND JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xCCF SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xBD4 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD6A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDF5 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 PUSH2 0x100 SWAP1 DIV AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737345524332303A20617070726F76652074 PUSH16 0x20746865207A65726F20616464726573 PUSH20 0x45524332303A207472616E7366657220616D6F75 PUSH15 0x7420657863656564732062616C616E PUSH4 0x65455243 ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA265627A PUSH27 0x72315820F828461B11C2DBAAC152FD939D41B833687CF3E3FC150B DUP11 0xF9 STATICCALL SWAP12 DUP2 0x4C PUSH21 0xD39864736F6C634300051100320000000000000000 ",
              "sourceMap": "530:1647:163:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;530:1647:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;594:72:139;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;594:72:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2341:134:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2341:134:138;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1517:80;;;:::i;:::-;;;;;;;;;;;;;;;;2894:288;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2894:288:138;;;;;;;;;;;;;;;;;:::i;1350:72:139:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3538:192:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3538:192:138;;;;;;;;:::i;1366:98:163:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1366:98:163;;;;;;;;:::i;:::-;;1643:99:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1643:99:138;-1:-1:-1;;;;;1643:99:138;;:::i;851:68:142:-;;;:::i;:::-;;;;-1:-1:-1;;;;;851:68:142;;;;;;;;;;;;;;1134:83;;;:::i;764:76:139:-;;;:::i;4172:243:138:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4172:243:138;;;;;;;;:::i;1918:140::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1918:140:138;;;;;;;;:::i;1958:217:163:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;1958:217:163;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1958:217:163;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1958:217:163;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1958:217:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1958:217:163;;-1:-1:-1;1958:217:163;;-1:-1:-1;;;;;1958:217:163:i;2104:123:138:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2104:123:138;;;;;;;;;;:::i;1351:98:142:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;594:72:139:-;657:5;650:12;;;;;;;;-1:-1:-1;;650:12:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;631:13;;650:12;;657:5;;650:12;;657:5;650:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;594:72;:::o;2341:134:138:-;2407:4;2417:39;2426:12;:10;:12::i;:::-;2440:7;2449:6;2417:8;:39::i;:::-;-1:-1:-1;2467:4:138;2341:134;;;;:::o;1517:80::-;1581:12;;1517:80;:::o;2894:288::-;2992:4;3002:36;3012:6;3020:9;3031:6;3002:9;:36::i;:::-;3042:121;3051:6;3059:12;:10;:12::i;:::-;3073:89;3111:6;3073:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3073:19:138;;;;;;:11;:19;;;;;;3093:12;:10;:12::i;:::-;-1:-1:-1;;;;;3073:33:138;;;;;;;;;;;;-1:-1:-1;3073:33:138;;;:89;;:37;:89;:::i;:::-;3042:8;:121::i;:::-;-1:-1:-1;3174:4:138;2894:288;;;;;:::o;1350:72:139:-;1409:9;;;;1350:72;:::o;3538:192:138:-;3618:4;3628:83;3637:12;:10;:12::i;:::-;3651:7;3660:50;3699:10;3660:11;:25;3672:12;:10;:12::i;:::-;-1:-1:-1;;;;;3660:25:138;;;;;;;;;;;;;;;;;-1:-1:-1;3660:25:138;;;:34;;;;;;;;;;;:50;:38;:50;:::i;1366:98:163:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1436:24:163;1442:8;1452:7;1436:5;:24::i;:::-;1366:98;;:::o;1643:99:138:-;-1:-1:-1;;;;;1720:18:138;1700:7;1720:18;;;;;;;;;;;;1643:99::o;851:68:142:-;909:6;;;;;-1:-1:-1;;;;;909:6:142;;851:68::o;1134:83::-;1207:6;;1174:4;;1207:6;;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;764:76:139:-;829:7;822:14;;;;;;;;-1:-1:-1;;822:14:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;803:13;;822:14;;829:7;;822:14;;829:7;822:14;;;;;;;;;;;;;;;;;;;;;;;;4172:243:138;4257:4;4267:129;4276:12;:10;:12::i;:::-;4290:7;4299:96;4338:15;4299:96;;;;;;;;;;;;;;;;;:11;:25;4311:12;:10;:12::i;:::-;-1:-1:-1;;;;;4299:25:138;;;;;;;;;;;;;;;;;-1:-1:-1;4299:25:138;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;1918:140::-;1987:4;1997:42;2007:12;:10;:12::i;:::-;2021:9;2032:6;1997:9;:42::i;1958:217:163:-;2057:26;2065:8;2075:7;2057;:26::i;:::-;-1:-1:-1;2087:84:163;;-1:-1:-1;;;2087:84:163;;2129:10;2087:84;;;;;;;;;;;;2158:4;2087:84;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2087:41:163;;;;;2129:10;2141:7;;2158:4;2165:5;;2087:84;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2087:84:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2087:84:163;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2087:84:163;;;;1958:217;;;:::o;2104:123:138:-;-1:-1:-1;;;;;2196:18:138;;;2176:7;2196:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2104:123::o;1351:98:142:-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;6780:314:138:-;-1:-1:-1;;;;;6876:19:138;;6868:68;;;;-1:-1:-1;;;6868:68:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6948:21:138;;6940:68;;;;-1:-1:-1;;;6940:68:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7013:18:138;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7058:32;;;;;;;;;;;;;;;;;6780:314;;;:::o;4844:440::-;-1:-1:-1;;;;;4944:20:138;;4936:70;;;;-1:-1:-1;;;4936:70:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5018:23:138;;5010:71;;;;-1:-1:-1;;;5010:71:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5106;5128:6;5106:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5106:17:138;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5086:17:138;;;:9;:17;;;;;;;;;;;:91;;;;5204:20;;;;;;;:32;;5229:6;5204:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5181:20:138;;;:9;:20;;;;;;;;;;;;:55;;;;5245:35;;;;;;;5181:20;;5245:35;;;;;;;;;;;;;4844:440;;;:::o;1614:175:145:-;1709:7;1738:12;1730:6;;;;1722:29;;;;-1:-1:-1;;;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1722:29:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1767:5:145;;;1614:175::o;812:155::-;870:7;895:5;;;912:6;;;;904:46;;;;;-1:-1:-1;;;904:46:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:1;812:155;-1:-1:-1;;;812:155:145:o;5524:275:138:-;-1:-1:-1;;;;;5593:21:138;;5585:65;;;;;-1:-1:-1;;;5585:65:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;5670:12;;:24;;5687:6;5670:24;:16;:24;:::i;:::-;5655:12;:39;-1:-1:-1;;;;;5719:18:138;;:9;:18;;;;;;;;;;;:30;;5742:6;5719:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;5698:18:138;;:9;:18;;;;;;;;;;;:51;;;;5758:37;;;;;;;5698:18;;:9;;5758:37;;;;;;;;;;5524:275;;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;;;1679:38;;;;;1721:6;:17;;-1:-1:-1;;;;;1721:17:142;;;;;-1:-1:-1;;;;;;1721:17:142;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "approveAndCall(address,uint256,bytes)": "cae9ca51",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351",
              "isOwner()": "8f32d59b",
              "mint(address,uint256)": "40c10f19",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {
              "approveAndCall(address,uint256,bytes)": {
                "notice": "Approves and then calls the receiving contract. Useful to encapsulate sending tokens to a contract in one call. Solidity has no native way to send tokens to contracts. ERC-20 tokens require approval to be spent by third parties, such as a contract in this case."
              },
              "constructor": "Constructor called on deployment, initiates the contract.",
              "mint(address,uint256)": {
                "notice": "Creates new tokens and sends them to the recipient."
              }
            },
            "notice": "This contract accounts for all holders' balances."
          }
        }
      },
      "contracts/utils/AdminRole.sol": {
        "AdminRole": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "AdminRemoved",
              "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"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "addAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "admins",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "isOwner",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": true,
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "payable": false,
              "stateMutability": "view",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                }
              ],
              "name": "removeAdmin",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "methods": {
              "addAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to grant permissions."
                }
              },
              "isOwner()": {
                "details": "Returns true if the caller is the current owner."
              },
              "owner()": {
                "details": "Returns the address of the current owner."
              },
              "removeAdmin(address)": {
                "params": {
                  "_admin": "The addresses of the account to revoke permissions."
                }
              },
              "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
              }
            }
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b610420806100796000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80631785f53c14610067578063429b62e51461008f57806370480275146100c95780638da5cb5b146100ef5780638f32d59b14610113578063f2fde38b1461011b575b600080fd5b61008d6004803603602081101561007d57600080fd5b50356001600160a01b0316610141565b005b6100b5600480360360208110156100a557600080fd5b50356001600160a01b03166101e1565b604080519115158252519081900360200190f35b61008d600480360360208110156100df57600080fd5b50356001600160a01b03166101f6565b6100f761029a565b604080516001600160a01b039092168252519081900360200190f35b6100b56102a9565b61008d6004803603602081101561013157600080fd5b50356001600160a01b03166102cd565b6101496102a9565b610189576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b60016020526000908152604090205460ff1681565b6101fe6102a9565b61023e576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6000546001600160a01b031690565b600080546001600160a01b03166102be610321565b6001600160a01b031614905090565b6102d56102a9565b610315576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61031e81610325565b50565b3390565b6001600160a01b03811661036a5760405162461bcd60e51b81526004018080602001828103825260268152602001806103c66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158201b059c25777e793c7376afa99540f4db2712849d6c621b1ceaf348937816828664736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH2 0x17 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x66 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6A JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x420 DUP1 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1785F53C EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x11B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x141 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F6 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x29A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB5 PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0x8D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CD JUMP JUMPDEST PUSH2 0x149 PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0x189 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1FE PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0x23E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BE PUSH2 0x321 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0x315 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x31E DUP2 PUSH2 0x325 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x36A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3C6 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158201B059C25777E79 EXTCODECOPY PUSH20 0x76AFA99540F4DB2712849D6C621B1CEAF3489378 AND DUP3 DUP7 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "64:879:164:-;;;677:17:142;697:12;-1:-1:-1;;;;;697:10:142;:12;:::i;:::-;713:6;:18;;-1:-1:-1;;;;;;713:18:142;-1:-1:-1;;;;;713:18:142;;;;;;;740:43;;713:18;;-1:-1:-1;713:18:142;740:43;;713:6;;740:43;650:137;64:879:164;;780:87:137;853:10;780:87;:::o;64:879:164:-;;;;;;;"
            },
            "deployedBytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100625760003560e01c80631785f53c14610067578063429b62e51461008f57806370480275146100c95780638da5cb5b146100ef5780638f32d59b14610113578063f2fde38b1461011b575b600080fd5b61008d6004803603602081101561007d57600080fd5b50356001600160a01b0316610141565b005b6100b5600480360360208110156100a557600080fd5b50356001600160a01b03166101e1565b604080519115158252519081900360200190f35b61008d600480360360208110156100df57600080fd5b50356001600160a01b03166101f6565b6100f761029a565b604080516001600160a01b039092168252519081900360200190f35b6100b56102a9565b61008d6004803603602081101561013157600080fd5b50356001600160a01b03166102cd565b6101496102a9565b610189576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b60016020526000908152604090205460ff1681565b6101fe6102a9565b61023e576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6000546001600160a01b031690565b600080546001600160a01b03166102be610321565b6001600160a01b031614905090565b6102d56102a9565b610315576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b61031e81610325565b50565b3390565b6001600160a01b03811661036a5760405162461bcd60e51b81526004018080602001828103825260268152602001806103c66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158201b059c25777e793c7376afa99540f4db2712849d6c621b1ceaf348937816828664736f6c63430005110032",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1785F53C EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x429B62E5 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x11B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x141 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F6 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x29A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB5 PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0x8D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CD JUMP JUMPDEST PUSH2 0x149 PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0x189 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1FE PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0x23E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE SWAP1 MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BE PUSH2 0x321 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0x315 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x1D5B985D5D1A1BDC9A5E9959 PUSH1 0xA2 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x31E DUP2 PUSH2 0x325 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x36A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3C6 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A265627A7A723158201B059C25777E79 EXTCODECOPY PUSH20 0x76AFA99540F4DB2712849D6C621B1CEAF3489378 AND DUP3 DUP7 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
              "sourceMap": "64:879:164:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;64:879:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;828:113;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;828:113:164;-1:-1:-1;;;;;828:113:164;;:::i;:::-;;149:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;149:38:164;-1:-1:-1;;;;;149:38:164;;:::i;:::-;;;;;;;;;;;;;;;;;;599:107;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;599:107:164;-1:-1:-1;;;;;599:107:164;;:::i;851:68:142:-;;;:::i;:::-;;;;-1:-1:-1;;;;;851:68:142;;;;;;;;;;;;;;1134:83;;;:::i;1351:98::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1351:98:142;-1:-1:-1;;;;;1351:98:142;;:::i;828:113:164:-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;886:14:164;;903:5;886:14;;;:6;:14;;;;;;;;;:22;;-1:-1:-1;;886:22:164;;;917:20;;;;;;;;;;;;;;;;;828:113;:::o;149:38::-;;;;;;;;;;;;;;;:::o;599:107::-;1028:9:142;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;-1:-1:-1;;;;;654:14:164;;;;;;671:4;654:14;;;;;;;;;:21;;-1:-1:-1;;654:21:164;;;;;;;684:18;;;;;;;;;;;;;;;;;599:107;:::o;851:68:142:-;889:7;909:6;-1:-1:-1;;;;;909:6:142;851:68;:::o;1134:83::-;1174:4;1207:6;;-1:-1:-1;;;;;1207:6:142;1191:12;:10;:12::i;:::-;-1:-1:-1;;;;;1191:22:142;;1184:29;;1134:83;:::o;1351:98::-;1028:9;:7;:9::i;:::-;1020:34;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;-1:-1:-1;;;1020:34:142;;;;;;;;;;;;;;;1417:28;1436:8;1417:18;:28::i;:::-;1351:98;:::o;780:87:137:-;853:10;780:87;:::o;1538:204:142:-;-1:-1:-1;;;;;1605:22:142;;1597:73;;;;-1:-1:-1;;;1597:73:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:6;;;1679:38;;-1:-1:-1;;;;;1679:38:142;;;;1700:6;;;1679:38;;;1721:6;:17;;-1:-1:-1;;;;;;1721:17:142;-1:-1:-1;;;;;1721:17:142;;;;;;;;;;1538:204::o"
            },
            "methodIdentifiers": {
              "addAdmin(address)": "70480275",
              "admins(address)": "429b62e5",
              "isOwner()": "8f32d59b",
              "owner()": "8da5cb5b",
              "removeAdmin(address)": "1785f53c",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "userdoc": {
            "methods": {
              "addAdmin(address)": {
                "notice": "Add account to ACL."
              },
              "removeAdmin(address)": {
                "notice": "Remove account from ACL."
              }
            }
          }
        }
      }
    },
    "errors": [
      {
        "component": "general",
        "formattedMessage": "contracts/connectors/loantoken/interfaces/ProtocolSettingsLike.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 175,
          "file": "contracts/connectors/loantoken/interfaces/ProtocolSettingsLike.sol",
          "start": 142
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/connectors/loantoken/LoanTokenSettingsLowerAdmin.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 175,
          "file": "contracts/connectors/loantoken/LoanTokenSettingsLowerAdmin.sol",
          "start": 142
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/connectors/loantoken/LoanTokenLogicStandard.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 175,
          "file": "contracts/connectors/loantoken/LoanTokenLogicStandard.sol",
          "start": 142
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/connectors/loantoken/LoanTokenLogicLM.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 57,
          "file": "contracts/connectors/loantoken/LoanTokenLogicLM.sol",
          "start": 24
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/connectors/loantoken/LoanTokenLogicWrbtc.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 175,
          "file": "contracts/connectors/loantoken/LoanTokenLogicWrbtc.sol",
          "start": 142
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/core/Protocol.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 175,
          "file": "contracts/core/Protocol.sol",
          "start": 142
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/farm/LiquidityMining.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 57,
          "file": "contracts/farm/LiquidityMining.sol",
          "start": 24
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Staking/SafeMath96.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/governance/Staking/SafeMath96.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Vesting/VestingLogic.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/governance/Vesting/VestingLogic.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Vesting/VestingRegistryLogic.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/governance/Vesting/VestingRegistryLogic.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Staking/StakingStorage.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/governance/Staking/StakingStorage.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Staking/Checkpoints.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/governance/Staking/Checkpoints.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Staking/WeightedStaking.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/governance/Staking/WeightedStaking.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Staking/Staking.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/governance/Staking/Staking.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/GovernorAlpha.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/governance/GovernorAlpha.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Vesting/OriginInvestorsClaim.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/governance/Vesting/OriginInvestorsClaim.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Vesting/OrigingVestingCreator.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/governance/Vesting/OrigingVestingCreator.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Vesting/TeamVesting.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/governance/Vesting/TeamVesting.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Vesting/Vesting.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/governance/Vesting/Vesting.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/interfaces/ISovryn.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 183,
          "file": "contracts/interfaces/ISovryn.sol",
          "start": 150
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/mockup/GovernorAlphaMockup.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/mockup/GovernorAlphaMockup.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/mockup/LiquidityMiningMockup.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/mockup/LiquidityMiningMockup.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/modules/Affiliates.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 170,
          "file": "contracts/modules/Affiliates.sol",
          "start": 137
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/mockup/MockLoanTokenLogic.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 57,
          "file": "contracts/mockup/MockLoanTokenLogic.sol",
          "start": 24
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/modules/ProtocolSettings.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 175,
          "file": "contracts/modules/ProtocolSettings.sol",
          "start": 142
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/mockup/VestingLogicMockup.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/mockup/VestingLogicMockup.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/mockup/VestingRegistryLogicMockUp.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/mockup/VestingRegistryLogicMockUp.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/mockup/previousLoanToken/PreviousLoanTokenSettingsLowerAdmin.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 175,
          "file": "contracts/mockup/previousLoanToken/PreviousLoanTokenSettingsLowerAdmin.sol",
          "start": 142
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/modules/LoanClosingsBase.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 175,
          "file": "contracts/modules/LoanClosingsBase.sol",
          "start": 142
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/modules/LoanClosingsWith.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 175,
          "file": "contracts/modules/LoanClosingsWith.sol",
          "start": 142
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/modules/LoanMaintenance.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 175,
          "file": "contracts/modules/LoanMaintenance.sol",
          "start": 142
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/modules/LoanOpenings.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 175,
          "file": "contracts/modules/LoanOpenings.sol",
          "start": 142
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/modules/LoanSettings.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 175,
          "file": "contracts/modules/LoanSettings.sol",
          "start": 142
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/modules/SwapsExternal.sol:7:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 175,
          "file": "contracts/modules/SwapsExternal.sol",
          "start": 142
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/multisig/MultiSigKeyHolders.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/multisig/MultiSigKeyHolders.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/testhelpers/ITokenFlashLoanTest.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/testhelpers/ITokenFlashLoanTest.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/testhelpers/FlashLoanerTest.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 58,
          "file": "contracts/testhelpers/FlashLoanerTest.sol",
          "start": 25
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/testhelpers/LoanTokenLogicTest.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n",
        "message": "Experimental features are turned on. Do not use experimental features on live deployments.",
        "severity": "warning",
        "sourceLocation": {
          "end": 57,
          "file": "contracts/testhelpers/LoanTokenLogicTest.sol",
          "start": 24
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Staking/Staking.sol:354:5: Warning: This declaration shadows an existing declaration.\n\t\t\t\tuint96 stake = _getPriorUserStakeByDate(msg.sender, nextLock, block.number - 1);\n\t\t\t\t^----------^\ncontracts/governance/Staking/Staking.sol:36:2: The shadowed declaration is here:\n\tfunction stake(\n ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 1613,
            "file": "contracts/governance/Staking/Staking.sol",
            "message": "The shadowed declaration is here:",
            "start": 1442
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 13570,
          "file": "contracts/governance/Staking/Staking.sol",
          "start": 13558
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/mixins/FeesHelper.sol:236:5: Warning: This declaration shadows an existing declaration.\n\t\t\t(bool success, ) =\n\t\t\t ^----------^\ncontracts/mixins/FeesHelper.sol:217:4: The shadowed declaration is here:\n\t\t(bool success, bytes memory data) =\n\t\t ^----------^\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 7846,
            "file": "contracts/mixins/FeesHelper.sol",
            "message": "The shadowed declaration is here:",
            "start": 7834
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 8392,
          "file": "contracts/mixins/FeesHelper.sol",
          "start": 8380
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/mockup/lockedSOVFailedMockup.sol:88:3: Warning: Unreachable code.\n\t\tbool txStatus = SOV.transferFrom(msg.sender, address(this), _sovAmount);\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Unreachable code.",
        "severity": "warning",
        "sourceLocation": {
          "end": 2855,
          "file": "contracts/mockup/lockedSOVFailedMockup.sol",
          "start": 2701
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/mockup/lockedSOVFailedMockup.sol:91:3: Warning: Unreachable code.\n\t\tlockedBalances[_userAddress] = lockedBalances[_userAddress].add(_sovAmount);\n\t\t^-------------------------------------------------------------------------^\n",
        "message": "Unreachable code.",
        "severity": "warning",
        "sourceLocation": {
          "end": 2935,
          "file": "contracts/mockup/lockedSOVFailedMockup.sol",
          "start": 2860
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/farm/LiquidityMiningConfigToken.sol:15:21: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\tfunction balanceOf(address account) external view returns (uint256) {\n\t                   ^-------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 364,
          "file": "contracts/farm/LiquidityMiningConfigToken.sol",
          "start": 349
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/farm/LiquidityMiningConfigToken.sol:19:20: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\tfunction transfer(address recipient, uint256 amount) external returns (bool) {\n\t                  ^---------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 452,
          "file": "contracts/farm/LiquidityMiningConfigToken.sol",
          "start": 435
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/farm/LiquidityMiningConfigToken.sol:19:39: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\tfunction transfer(address recipient, uint256 amount) external returns (bool) {\n\t                                     ^------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 468,
          "file": "contracts/farm/LiquidityMiningConfigToken.sol",
          "start": 454
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/farm/LiquidityMiningConfigToken.sol:23:21: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\tfunction allowance(address owner, address spender) external view returns (uint256) {\n\t                   ^-----------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 549,
          "file": "contracts/farm/LiquidityMiningConfigToken.sol",
          "start": 536
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/farm/LiquidityMiningConfigToken.sol:23:36: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\tfunction allowance(address owner, address spender) external view returns (uint256) {\n\t                                  ^-------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 566,
          "file": "contracts/farm/LiquidityMiningConfigToken.sol",
          "start": 551
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/farm/LiquidityMiningConfigToken.sol:27:19: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\tfunction approve(address spender, uint256 amount) external returns (bool) {\n\t                 ^-------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 651,
          "file": "contracts/farm/LiquidityMiningConfigToken.sol",
          "start": 636
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/farm/LiquidityMiningConfigToken.sol:27:36: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\tfunction approve(address spender, uint256 amount) external returns (bool) {\n\t                                  ^------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 667,
          "file": "contracts/farm/LiquidityMiningConfigToken.sol",
          "start": 653
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/farm/LiquidityMiningConfigToken.sol:32:3: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\t\taddress sender,\n\t\t^------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 755,
          "file": "contracts/farm/LiquidityMiningConfigToken.sol",
          "start": 741
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/farm/LiquidityMiningConfigToken.sol:33:3: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\t\taddress recipient,\n\t\t^---------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 776,
          "file": "contracts/farm/LiquidityMiningConfigToken.sol",
          "start": 759
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/farm/LiquidityMiningConfigToken.sol:34:3: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\t\tuint256 amount\n\t\t^------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 794,
          "file": "contracts/farm/LiquidityMiningConfigToken.sol",
          "start": 780
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Staking/Staking.sol:346:3: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\t\tuint96 amount,\n\t\t^-----------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 13353,
          "file": "contracts/governance/Staking/Staking.sol",
          "start": 13340
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Vesting/Vesting.sol:36:36: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\tfunction governanceWithdrawTokens(address receiver) public {\n\t                                  ^--------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 1164,
          "file": "contracts/governance/Vesting/Vesting.sol",
          "start": 1148
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/mockup/StakingMockup.sol:48:3: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\t\tuint96 value\n\t\t^----------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 1356,
          "file": "contracts/mockup/StakingMockup.sol",
          "start": 1344
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/mockup/StakingMockup.sol:51:3: Warning: Unused local variable.\n\t\tuint96 staked = delegateStakingCheckpoints[delegatee][lockedTS][nCheckpoints - 1].stake;\n\t\t^-----------^\n",
        "message": "Unused local variable.",
        "severity": "warning",
        "sourceLocation": {
          "end": 1460,
          "file": "contracts/mockup/StakingMockup.sol",
          "start": 1447
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/mockup/VestingRegistryLogicMockUp.sol:6:27: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\tfunction isVestingAdress(address _vestingAddress) external view returns (bool isVestingAddr) {\n\t                         ^---------------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 228,
          "file": "contracts/mockup/VestingRegistryLogicMockUp.sol",
          "start": 205
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/swaps/connectors/testnet/SwapsImplLocal.sol:82:3: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\t\taddress unused\n\t\t^------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 2909,
          "file": "contracts/swaps/connectors/testnet/SwapsImplLocal.sol",
          "start": 2895
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/swaps/connectors/testnet/SwapsImplLocal.sol:104:3: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\t\taddress unused\n\t\t^------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 3677,
          "file": "contracts/swaps/connectors/testnet/SwapsImplLocal.sol",
          "start": 3663
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/testhelpers/TestSovrynSwap.sol:25:21: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\tfunction addressOf(bytes32 contractName) public view returns (address) {\n\t                   ^------------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 533,
          "file": "contracts/testhelpers/TestSovrynSwap.sol",
          "start": 513
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/testhelpers/TestSovrynSwap.sol:38:3: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\t\taddress _affiliateAccount,\n\t\t^-----------------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 905,
          "file": "contracts/testhelpers/TestSovrynSwap.sol",
          "start": 880
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/testhelpers/TestSovrynSwap.sol:39:3: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n\t\tuint256 _affiliateFee\n\t\t^-------------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 930,
          "file": "contracts/testhelpers/TestSovrynSwap.sol",
          "start": 909
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/ApprovalReceiver.sol:57:2: Warning: Function state mutability can be restricted to pure\n\tfunction _getToken() internal view returns (address) {\n ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 1685,
          "file": "contracts/governance/ApprovalReceiver.sol",
          "start": 1607
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/ApprovalReceiver.sol:66:2: Warning: Function state mutability can be restricted to pure\n\tfunction _getSelectors() internal view returns (bytes4[] memory) {\n ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 2017,
          "file": "contracts/governance/ApprovalReceiver.sol",
          "start": 1922
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Staking/Staking.sol:647:2: Warning: Function state mutability can be restricted to view\n\tfunction migrateToNewStakingContract() public {\n ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Function state mutability can be restricted to view",
        "severity": "warning",
        "sourceLocation": {
          "end": 25291,
          "file": "contracts/governance/Staking/Staking.sol",
          "start": 24890
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/governance/Vesting/Vesting.sol:36:2: Warning: Function state mutability can be restricted to pure\n\tfunction governanceWithdrawTokens(address receiver) public {\n ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 1214,
          "file": "contracts/governance/Vesting/Vesting.sol",
          "start": 1114
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/mockup/StakingMockup.sol:34:2: Warning: Function state mutability can be restricted to view\n\tfunction calculatePriorWeightedStake(\n ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Function state mutability can be restricted to view",
        "severity": "warning",
        "sourceLocation": {
          "end": 1186,
          "file": "contracts/mockup/StakingMockup.sol",
          "start": 1018
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "formattedMessage": "contracts/testhelpers/TestSovrynSwap.sol:65:2: Warning: Function state mutability can be restricted to pure\n\tfunction conversionPath(IERC20 _sourceToken, IERC20 _targetToken) external view returns (IERC20[] memory) {\n ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 2243,
          "file": "contracts/testhelpers/TestSovrynSwap.sol",
          "start": 2024
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "contracts/connectors/loantoken/AdvancedToken.sol": {
        "ast": {
          "absolutePath": "contracts/connectors/loantoken/AdvancedToken.sol",
          "exportedSymbols": {
            "AdvancedToken": [
              168
            ]
          },
          "id": 169,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:0"
            },
            {
              "absolutePath": "contracts/connectors/loantoken/AdvancedTokenStorage.sol",
              "file": "./AdvancedTokenStorage.sol",
              "id": 2,
              "nodeType": "ImportDirective",
              "scope": 169,
              "sourceUnit": 272,
              "src": "143:36:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 3,
                    "name": "AdvancedTokenStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 271,
                    "src": "685:20:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AdvancedTokenStorage_$271",
                      "typeString": "contract AdvancedTokenStorage"
                    }
                  },
                  "id": 4,
                  "nodeType": "InheritanceSpecifier",
                  "src": "685:20:0"
                }
              ],
              "contractDependencies": [
                271,
                511,
                4221,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title Advanced Token contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized margin\ntrading and lending https://bzx.network similar to the dYdX protocol.\n * AdvancedToken implements standard ERC-20 approval, mint and burn token functionality.\nLogic (AdvancedToken) is kept aside from storage (AdvancedTokenStorage).\n * For example, LoanTokenLogicDai contract uses AdvancedToken::_mint() to mint\nits Loan Dai iTokens.\n",
              "fullyImplemented": true,
              "id": 168,
              "linearizedBaseContracts": [
                168,
                271,
                511,
                4221,
                41798,
                41125,
                41829
              ],
              "name": "AdvancedToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 7,
                  "libraryName": {
                    "contractScope": null,
                    "id": 5,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "715:8:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "709:27:0",
                  "typeName": {
                    "id": 6,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "728:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "body": {
                    "id": 34,
                    "nodeType": "Block",
                    "src": "1562:108:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 16,
                                "name": "allowed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 232,
                                "src": "1566:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 20,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "1574:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 18,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1574:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1566:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 21,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 19,
                              "name": "_spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9,
                              "src": "1586:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1566:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22,
                            "name": "_value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11,
                            "src": "1598:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1566:38:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 24,
                        "nodeType": "ExpressionStatement",
                        "src": "1566:38:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "1622:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 27,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1622:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28,
                              "name": "_spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9,
                              "src": "1634:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11,
                              "src": "1644:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 25,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 192,
                            "src": "1613:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 30,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1613:38:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31,
                        "nodeType": "EmitStatement",
                        "src": "1608:43:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 32,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1662:4:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 15,
                        "id": 33,
                        "nodeType": "Return",
                        "src": "1655:11:0"
                      }
                    ]
                  },
                  "documentation": "@notice Set an amount as the allowance of `spender` over the caller's tokens.\n\t * Returns a boolean value indicating whether the operation succeeded.\n\t * IMPORTANT: Beware that changing an allowance with this method brings the risk\nthat someone may use both the old and the new allowance by unfortunate\ntransaction ordering. One possible solution to mitigate this race\ncondition is to first reduce the spender's allowance to 0 and set the\ndesired value afterwards:\nhttps://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n\t * Emits an {Approval} event.\n\t * @param _spender The account address that will be able to spend the tokens.\n@param _value The amount of tokens allowed to spend.\n",
                  "id": 35,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9,
                        "name": "_spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 35,
                        "src": "1506:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1506:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 35,
                        "src": "1524:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1524:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1505:34:0"
                  },
                  "returnParameters": {
                    "id": 15,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 35,
                        "src": "1556:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1556:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1555:6:0"
                  },
                  "scope": 168,
                  "src": "1489:181:0",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 96,
                    "nodeType": "Block",
                    "src": "2293:296:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 53,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 49,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37,
                                "src": "2305:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 51,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2320:1:0",
                                    "subdenomination": null,
                                    "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": 50,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2312:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 52,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2312:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2305:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3135",
                              "id": 54,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2324:4:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1d3be50b2bb17407dd170f1d5da128d1def30c6b1598d6a629e79b4775265526",
                                "typeString": "literal_string \"15\""
                              },
                              "value": "15"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1d3be50b2bb17407dd170f1d5da128d1def30c6b1598d6a629e79b4775265526",
                                "typeString": "literal_string \"15\""
                              }
                            ],
                            "id": 48,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2297:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 55,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2297:32:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 56,
                        "nodeType": "ExpressionStatement",
                        "src": "2297:32:0"
                      },
                      {
                        "assignments": [
                          58
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 58,
                            "name": "_balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 96,
                            "src": "2334:16:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 57,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2334:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 65,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 63,
                              "name": "_tokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39,
                              "src": "2371:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 59,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 226,
                                "src": "2353:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 61,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 60,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37,
                                "src": "2362:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2353:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 62,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42076,
                            "src": "2353:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 64,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2353:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2334:50:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 70,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 66,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 226,
                              "src": "2388:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 68,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 67,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37,
                              "src": "2397:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2388:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 69,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 58,
                            "src": "2404:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2388:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 71,
                        "nodeType": "ExpressionStatement",
                        "src": "2388:24:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 77,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 72,
                            "name": "totalSupply_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 234,
                            "src": "2417:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 75,
                                "name": "_tokenAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39,
                                "src": "2449:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 73,
                                "name": "totalSupply_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 234,
                                "src": "2432:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 74,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "2432:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 76,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2432:30:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2417:45:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 78,
                        "nodeType": "ExpressionStatement",
                        "src": "2417:45:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 80,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37,
                              "src": "2477:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 81,
                              "name": "_tokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39,
                              "src": "2482:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 82,
                              "name": "_assetAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41,
                              "src": "2496:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 83,
                              "name": "_price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43,
                              "src": "2510:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 79,
                            "name": "Mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 202,
                            "src": "2472:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 84,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2472:45:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 85,
                        "nodeType": "EmitStatement",
                        "src": "2467:50:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 88,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2543:1:0",
                                  "subdenomination": null,
                                  "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": 87,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2535:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 89,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2535:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 90,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37,
                              "src": "2547:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 91,
                              "name": "_tokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39,
                              "src": "2552:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 86,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 184,
                            "src": "2526:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 92,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2526:39:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 93,
                        "nodeType": "EmitStatement",
                        "src": "2521:44:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 94,
                          "name": "_balance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 58,
                          "src": "2577:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 47,
                        "id": 95,
                        "nodeType": "Return",
                        "src": "2570:15:0"
                      }
                    ]
                  },
                  "documentation": "@notice The iToken minting process. Meant to issue Loan iTokens.\nLenders are able to open an iToken position, by minting them.\nThis function is called by LoanTokenLogicStandard::_mintToken\n@param _to The recipient of the minted tTokens.\n@param _tokenAmount The amount of iTokens to be minted.\n@param _assetAmount The amount of lended tokens (asset to lend).\n@param _price The price of the lended tokens.\n@return The updated balance of the recipient.\n",
                  "id": 97,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37,
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 97,
                        "src": "2185:11:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 36,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2185:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39,
                        "name": "_tokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 97,
                        "src": "2200:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 38,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2200:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41,
                        "name": "_assetAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 97,
                        "src": "2224:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2224:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43,
                        "name": "_price",
                        "nodeType": "VariableDeclaration",
                        "scope": 97,
                        "src": "2248:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2248:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2181:84:0"
                  },
                  "returnParameters": {
                    "id": 47,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 46,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 97,
                        "src": "2284:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 45,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2284:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2283:9:0"
                  },
                  "scope": 168,
                  "src": "2167:422:0",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 166,
                    "nodeType": "Block",
                    "src": "3197:514:0",
                    "statements": [
                      {
                        "assignments": [
                          111
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 111,
                            "name": "_balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 166,
                            "src": "3237:16:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 110,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3237:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 119,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 116,
                              "name": "_tokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 101,
                              "src": "3275:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3136",
                              "id": 117,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3289:4:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_277ab82e5a4641341820a4a2933a62c1de997e42e92548657ae21b3728d580fe",
                                "typeString": "literal_string \"16\""
                              },
                              "value": "16"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_277ab82e5a4641341820a4a2933a62c1de997e42e92548657ae21b3728d580fe",
                                "typeString": "literal_string \"16\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 112,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 226,
                                "src": "3256:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 114,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 113,
                                "name": "_who",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 99,
                                "src": "3265:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3256:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 115,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42119,
                            "src": "3256:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3256:38:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3237:57:0"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 120,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 111,
                            "src": "3369:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3381:2:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "src": "3369:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 135,
                        "nodeType": "IfStatement",
                        "src": "3365:140:0",
                        "trueBody": {
                          "id": 134,
                          "nodeType": "Block",
                          "src": "3385:120:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 128,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 123,
                                  "name": "_tokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 101,
                                  "src": "3442:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 126,
                                      "name": "_balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 111,
                                      "src": "3474:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 124,
                                      "name": "_tokenAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 101,
                                      "src": "3457:12:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 125,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "3457:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 127,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3457:26:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3442:41:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 129,
                              "nodeType": "ExpressionStatement",
                              "src": "3442:41:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 132,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 130,
                                  "name": "_balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 111,
                                  "src": "3488:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 131,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3499:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3488:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 133,
                              "nodeType": "ExpressionStatement",
                              "src": "3488:12:0"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 136,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 226,
                              "src": "3508:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 138,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 137,
                              "name": "_who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 99,
                              "src": "3517:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3508:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 139,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 111,
                            "src": "3525:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3508:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 141,
                        "nodeType": "ExpressionStatement",
                        "src": "3508:25:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 142,
                            "name": "totalSupply_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 234,
                            "src": "3538:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 145,
                                "name": "_tokenAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 101,
                                "src": "3570:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 143,
                                "name": "totalSupply_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 234,
                                "src": "3553:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "3553:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3553:30:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3538:45:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 148,
                        "nodeType": "ExpressionStatement",
                        "src": "3538:45:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 150,
                              "name": "_who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 99,
                              "src": "3598:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 151,
                              "name": "_tokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 101,
                              "src": "3604:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 152,
                              "name": "_assetAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 103,
                              "src": "3618:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 153,
                              "name": "_price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 105,
                              "src": "3632:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 149,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 212,
                            "src": "3593:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3593:46:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 155,
                        "nodeType": "EmitStatement",
                        "src": "3588:51:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 157,
                              "name": "_who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 99,
                              "src": "3657:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 159,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3671:1:0",
                                  "subdenomination": null,
                                  "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": 158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3663:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3663:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 161,
                              "name": "_tokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 101,
                              "src": "3675:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 156,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 184,
                            "src": "3648:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3648:40:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 163,
                        "nodeType": "EmitStatement",
                        "src": "3643:45:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 164,
                          "name": "_balance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 111,
                          "src": "3699:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 109,
                        "id": 165,
                        "nodeType": "Return",
                        "src": "3692:15:0"
                      }
                    ]
                  },
                  "documentation": "@notice The iToken burning process. Meant to destroy Loan iTokens.\nLenders are able to close an iToken position, by burning them.\nThis function is called by LoanTokenLogicStandard::_burnToken\n@param _who The owner of the iTokens to burn.\n@param _tokenAmount The amount of iTokens to burn.\n@param _assetAmount The amount of lended tokens.\n@param _price The price of the lended tokens.\n@return The updated balance of the iTokens owner.\n",
                  "id": 167,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 99,
                        "name": "_who",
                        "nodeType": "VariableDeclaration",
                        "scope": 167,
                        "src": "3088:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 98,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3088:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 101,
                        "name": "_tokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 167,
                        "src": "3104:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3104:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 103,
                        "name": "_assetAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 167,
                        "src": "3128:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 102,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3128:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 105,
                        "name": "_price",
                        "nodeType": "VariableDeclaration",
                        "scope": 167,
                        "src": "3152:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 104,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3152:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3084:85:0"
                  },
                  "returnParameters": {
                    "id": 109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 108,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 167,
                        "src": "3188:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 107,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3188:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3187:9:0"
                  },
                  "scope": 168,
                  "src": "3070:641:0",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 169,
              "src": "659:3054:0"
            }
          ],
          "src": "118:3596:0"
        },
        "id": 0
      },
      "contracts/connectors/loantoken/AdvancedTokenStorage.sol": {
        "ast": {
          "absolutePath": "contracts/connectors/loantoken/AdvancedTokenStorage.sol",
          "exportedSymbols": {
            "AdvancedTokenStorage": [
              271
            ]
          },
          "id": 272,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 170,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:1"
            },
            {
              "absolutePath": "contracts/connectors/loantoken/LoanTokenBase.sol",
              "file": "./LoanTokenBase.sol",
              "id": 171,
              "nodeType": "ImportDirective",
              "scope": 272,
              "sourceUnit": 512,
              "src": "143:29:1",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 172,
                    "name": "LoanTokenBase",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 511,
                    "src": "657:13:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanTokenBase_$511",
                      "typeString": "contract LoanTokenBase"
                    }
                  },
                  "id": 173,
                  "nodeType": "InheritanceSpecifier",
                  "src": "657:13:1"
                }
              ],
              "contractDependencies": [
                511,
                4221,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title Advanced Token Storage contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * AdvancedTokenStorage implements standard ERC-20 getters functionality:\ntotalSupply, balanceOf, allowance and some events.\niToken logic is divided into several contracts AdvancedToken,\nAdvancedTokenStorage and LoanTokenBase.\n",
              "fullyImplemented": true,
              "id": 271,
              "linearizedBaseContracts": [
                271,
                511,
                4221,
                41798,
                41125,
                41829
              ],
              "name": "AdvancedTokenStorage",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 176,
                  "libraryName": {
                    "contractScope": null,
                    "id": 174,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "680:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "674:27:1",
                  "typeName": {
                    "id": 175,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "693:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "documentation": "topic: 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                  "id": 184,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 183,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 178,
                        "indexed": true,
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 184,
                        "src": "813:20:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 177,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "813:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 180,
                        "indexed": true,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 184,
                        "src": "835:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 179,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "835:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 182,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 184,
                        "src": "855:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 181,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "855:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "812:57:1"
                  },
                  "src": "798:72:1"
                },
                {
                  "anonymous": false,
                  "documentation": "topic: 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
                  "id": 192,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 186,
                        "indexed": true,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 192,
                        "src": "967:21:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 185,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "967:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 188,
                        "indexed": true,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 192,
                        "src": "990:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 187,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "990:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 190,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 192,
                        "src": "1015:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 189,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1015:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "966:63:1"
                  },
                  "src": "952:78:1"
                },
                {
                  "anonymous": false,
                  "documentation": "topic: 0xb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb",
                  "id": 202,
                  "name": "Mint",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 201,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 194,
                        "indexed": true,
                        "name": "minter",
                        "nodeType": "VariableDeclaration",
                        "scope": 202,
                        "src": "1123:22:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 193,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1123:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 196,
                        "indexed": false,
                        "name": "tokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 202,
                        "src": "1147:19:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 195,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1147:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 198,
                        "indexed": false,
                        "name": "assetAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 202,
                        "src": "1168:19:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 197,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1168:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 200,
                        "indexed": false,
                        "name": "price",
                        "nodeType": "VariableDeclaration",
                        "scope": 202,
                        "src": "1189:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 199,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1189:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1122:81:1"
                  },
                  "src": "1112:92:1"
                },
                {
                  "anonymous": false,
                  "documentation": "topic: 0x743033787f4738ff4d6a7225ce2bd0977ee5f86b91a902a58f5e4d0b297b4644",
                  "id": 212,
                  "name": "Burn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 211,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 204,
                        "indexed": true,
                        "name": "burner",
                        "nodeType": "VariableDeclaration",
                        "scope": 212,
                        "src": "1297:22:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 203,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1297:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 206,
                        "indexed": false,
                        "name": "tokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 212,
                        "src": "1321:19:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 205,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1321:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 208,
                        "indexed": false,
                        "name": "assetAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 212,
                        "src": "1342:19:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 207,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1342:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 210,
                        "indexed": false,
                        "name": "price",
                        "nodeType": "VariableDeclaration",
                        "scope": 212,
                        "src": "1363:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 209,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1363:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1296:81:1"
                  },
                  "src": "1286:92:1"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 222,
                  "name": "FlashBorrow",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 214,
                        "indexed": false,
                        "name": "borrower",
                        "nodeType": "VariableDeclaration",
                        "scope": 222,
                        "src": "1399:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 213,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1399:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 216,
                        "indexed": false,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 222,
                        "src": "1417:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 215,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1417:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 218,
                        "indexed": false,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 222,
                        "src": "1433:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 217,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1433:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 220,
                        "indexed": false,
                        "name": "loanAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 222,
                        "src": "1452:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 219,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1452:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1398:73:1"
                  },
                  "src": "1381:91:1"
                },
                {
                  "constant": false,
                  "id": 226,
                  "name": "balances",
                  "nodeType": "VariableDeclaration",
                  "scope": 271,
                  "src": "1491:45:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 225,
                    "keyType": {
                      "id": 223,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1499:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1491:27:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 224,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1510:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 232,
                  "name": "allowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 271,
                  "src": "1539:64:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 231,
                    "keyType": {
                      "id": 227,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1547:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1539:47:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 230,
                      "keyType": {
                        "id": 228,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1566:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1558:27:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 229,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1577:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 234,
                  "name": "totalSupply_",
                  "nodeType": "VariableDeclaration",
                  "scope": 271,
                  "src": "1606:29:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 233,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1606:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 241,
                    "nodeType": "Block",
                    "src": "1831:27:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 239,
                          "name": "totalSupply_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 234,
                          "src": "1842:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 238,
                        "id": 240,
                        "nodeType": "Return",
                        "src": "1835:19:1"
                      }
                    ]
                  },
                  "documentation": "@notice Get the total supply of iTokens.\n@return The total number of iTokens in existence as of now.\n",
                  "id": 242,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 235,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1798:2:1"
                  },
                  "returnParameters": {
                    "id": 238,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 237,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 242,
                        "src": "1822:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 236,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1822:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1821:9:1"
                  },
                  "scope": 271,
                  "src": "1778:80:1",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 253,
                    "nodeType": "Block",
                    "src": "2100:31:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 249,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 226,
                            "src": "2111:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 251,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 250,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 244,
                            "src": "2120:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2111:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 248,
                        "id": 252,
                        "nodeType": "Return",
                        "src": "2104:23:1"
                      }
                    ]
                  },
                  "documentation": "@notice Get the amount of iTokens owned by an account.\n@param _owner The account owner of the iTokens.\n@return The number of iTokens an account owns.\n",
                  "id": 254,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 245,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 244,
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 254,
                        "src": "2054:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 243,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2054:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2053:16:1"
                  },
                  "returnParameters": {
                    "id": 248,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 247,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 254,
                        "src": "2091:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 246,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2091:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2090:9:1"
                  },
                  "scope": 271,
                  "src": "2035:96:1",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 269,
                    "nodeType": "Block",
                    "src": "2547:40:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 263,
                              "name": "allowed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 232,
                              "src": "2558:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 265,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 264,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 256,
                              "src": "2566:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2558:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 267,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 266,
                            "name": "_spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 258,
                            "src": "2574:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2558:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 262,
                        "id": 268,
                        "nodeType": "Return",
                        "src": "2551:32:1"
                      }
                    ]
                  },
                  "documentation": "@notice Get the amount of iTokens allowed to be spent by a\n  given account on behalf of the owner.\n@param _owner The account owner of the iTokens.\n@param _spender The account allowed to send the iTokens.\n@return The number of iTokens an account is allowing the spender\n  to send on its behalf.\n",
                  "id": 270,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 259,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 256,
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 270,
                        "src": "2483:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 255,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2483:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 258,
                        "name": "_spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 270,
                        "src": "2499:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 257,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2499:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2482:34:1"
                  },
                  "returnParameters": {
                    "id": 262,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 261,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 270,
                        "src": "2538:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 260,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2538:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2537:9:1"
                  },
                  "scope": 271,
                  "src": "2464:123:1",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 272,
              "src": "624:1965:1"
            }
          ],
          "src": "118:2472:1"
        },
        "id": 1
      },
      "contracts/connectors/loantoken/LoanToken.sol": {
        "ast": {
          "absolutePath": "contracts/connectors/loantoken/LoanToken.sol",
          "exportedSymbols": {
            "LoanToken": [
              438
            ]
          },
          "id": 439,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 273,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:2"
            },
            {
              "absolutePath": "contracts/connectors/loantoken/AdvancedTokenStorage.sol",
              "file": "./AdvancedTokenStorage.sol",
              "id": 274,
              "nodeType": "ImportDirective",
              "scope": 439,
              "sourceUnit": 272,
              "src": "143:36:2",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 275,
                    "name": "AdvancedTokenStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 271,
                    "src": "1030:20:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AdvancedTokenStorage_$271",
                      "typeString": "contract AdvancedTokenStorage"
                    }
                  },
                  "id": 276,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1030:20:2"
                }
              ],
              "contractDependencies": [
                271,
                511,
                4221,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title Loan Token contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * A loan token (iToken) is created as a proxy to an upgradable token contract.\n * Examples of loan tokens on Sovryn are iRBTC, iDOC, iUSDT, iBPro,\niSOV (near future).\n * Lenders receive iTokens that collect interest from the lending pool\nwhich they can redeem by withdrawing them. The i in iToken stands for interest.\n * Do not confuse iTokens with underlying tokens. iDOC is an iToken (loan token)\nwhilest DOC is the underlying token (currency).\n * @dev TODO: can I change this proxy to EIP-1822 proxy standard, please.\n  https://eips.ethereum.org/EIPS/eip-1822. It's really hard to work with this.\n",
              "fullyImplemented": true,
              "id": 438,
              "linearizedBaseContracts": [
                438,
                271,
                511,
                4221,
                41798,
                41125,
                41829
              ],
              "name": "LoanToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 278,
                  "name": "sovrynContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 438,
                  "src": "1194:36:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 277,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1194:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 280,
                  "name": "wrbtcTokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 438,
                  "src": "1233:32:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 279,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1233:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 282,
                  "name": "target_",
                  "nodeType": "VariableDeclaration",
                  "scope": 438,
                  "src": "1268:24:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 281,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1268:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 284,
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "scope": 438,
                  "src": "1295:20:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 283,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1295:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 311,
                    "nodeType": "Block",
                    "src": "1816:160:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 296,
                              "name": "_newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 286,
                              "src": "1838:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 295,
                            "name": "transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41773,
                            "src": "1820:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1820:28:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 298,
                        "nodeType": "ExpressionStatement",
                        "src": "1820:28:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 300,
                              "name": "_newTarget",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 288,
                              "src": "1863:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 299,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 363,
                            "src": "1852:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1852:22:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 302,
                        "nodeType": "ExpressionStatement",
                        "src": "1852:22:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 304,
                              "name": "_sovrynContractAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 290,
                              "src": "1904:22:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 303,
                            "name": "_setSovrynContractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 381,
                            "src": "1878:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1878:49:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 306,
                        "nodeType": "ExpressionStatement",
                        "src": "1878:49:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 308,
                              "name": "_wrbtcTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 292,
                              "src": "1953:18:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 307,
                            "name": "_setWrbtcTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 399,
                            "src": "1931:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1931:41:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 310,
                        "nodeType": "ExpressionStatement",
                        "src": "1931:41:2"
                      }
                    ]
                  },
                  "documentation": "@notice Deploy loan token proxy.\n  Sets ERC20 parameters of the token.\n\t * @param _newOwner The address of the new owner.\n@param _newTarget The address of the new target contract instance.\n@param _sovrynContractAddress The address of the new sovrynContract instance.\n@param _wrbtcTokenAddress The address of the new wrBTC instance.\n",
                  "id": 312,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 286,
                        "name": "_newOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 312,
                        "src": "1702:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 285,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1702:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 288,
                        "name": "_newTarget",
                        "nodeType": "VariableDeclaration",
                        "scope": 312,
                        "src": "1723:18:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1723:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 290,
                        "name": "_sovrynContractAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 312,
                        "src": "1745:30:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 289,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1745:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 292,
                        "name": "_wrbtcTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 312,
                        "src": "1779:26:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 291,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1779:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1698:110:2"
                  },
                  "returnParameters": {
                    "id": 294,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1816:0:2"
                  },
                  "scope": 438,
                  "src": "1687:289:2",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 332,
                    "nodeType": "Block",
                    "src": "2193:393:2",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 315,
                              "name": "gasleft",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44987,
                              "src": "2201:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 316,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2201:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32333030",
                            "id": 317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2214:4:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2300_by_1",
                              "typeString": "int_const 2300"
                            },
                            "value": "2300"
                          },
                          "src": "2201:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 321,
                        "nodeType": "IfStatement",
                        "src": "2197:39:2",
                        "trueBody": {
                          "id": 320,
                          "nodeType": "Block",
                          "src": "2220:16:2",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 314,
                              "id": 319,
                              "nodeType": "Return",
                              "src": "2225:7:2"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          323
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 323,
                            "name": "target",
                            "nodeType": "VariableDeclaration",
                            "scope": 332,
                            "src": "2240:14:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 322,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2240:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 325,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 324,
                          "name": "target_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 282,
                          "src": "2257:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2240:24:2"
                      },
                      {
                        "assignments": [
                          327
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 327,
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "scope": 332,
                            "src": "2268:17:2",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 326,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2268:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 330,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 328,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44994,
                            "src": "2288:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2288:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2268:28:2"
                      },
                      {
                        "externalReferences": [
                          {
                            "data": {
                              "declaration": 327,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "2377:4:2",
                              "valueSize": 1
                            }
                          },
                          {
                            "data": {
                              "declaration": 327,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "2358:4:2",
                              "valueSize": 1
                            }
                          },
                          {
                            "target": {
                              "declaration": 323,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "2346:6:2",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 331,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    let result := delegatecall(gas(), target, add(data, 0x20), mload(data), 0, 0)\n    let size := returndatasize()\n    let ptr := mload(0x40)\n    returndatacopy(ptr, 0, size)\n    switch result\n    case 0 { revert(ptr, size) }\n    default { return(ptr, size) }\n}",
                        "src": "2300:283:2"
                      }
                    ]
                  },
                  "documentation": "@notice Fallback function performs a delegate call\nto the actual implementation address is pointing this proxy.\nReturns whatever the implementation call returns.\n",
                  "id": 333,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 313,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2173:2:2"
                  },
                  "returnParameters": {
                    "id": 314,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2193:0:2"
                  },
                  "scope": 438,
                  "src": "2165:421:2",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 344,
                    "nodeType": "Block",
                    "src": "2812:30:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 341,
                              "name": "_newTarget",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 335,
                              "src": "2827:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 340,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 363,
                            "src": "2816:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2816:22:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 343,
                        "nodeType": "ExpressionStatement",
                        "src": "2816:22:2"
                      }
                    ]
                  },
                  "documentation": "@notice Public owner setter for target address.\n@dev Calls internal setter.\n@param _newTarget The address of the new target contract instance.\n",
                  "id": 345,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 338,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 337,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2802:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2802:9:2"
                    }
                  ],
                  "name": "setTarget",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 336,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 335,
                        "name": "_newTarget",
                        "nodeType": "VariableDeclaration",
                        "scope": 345,
                        "src": "2775:18:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 334,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2775:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2774:20:2"
                  },
                  "returnParameters": {
                    "id": 339,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2812:0:2"
                  },
                  "scope": 438,
                  "src": "2756:86:2",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 362,
                    "nodeType": "Block",
                    "src": "3025:96:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 353,
                                  "name": "_newTarget",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 347,
                                  "src": "3056:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 351,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "3037:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 352,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "3037:18:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3037:30:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "746172676574206e6f74206120636f6e7472616374",
                              "id": 355,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3069:23:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b94b2fcf63f8ee774e5e1a3aefca04d13edd366e5a6d3be86dce42095fb7f8f6",
                                "typeString": "literal_string \"target not a contract\""
                              },
                              "value": "target not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b94b2fcf63f8ee774e5e1a3aefca04d13edd366e5a6d3be86dce42095fb7f8f6",
                                "typeString": "literal_string \"target not a contract\""
                              }
                            ],
                            "id": 350,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3029:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3029:64:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 357,
                        "nodeType": "ExpressionStatement",
                        "src": "3029:64:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 358,
                            "name": "target_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 282,
                            "src": "3097:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 359,
                            "name": "_newTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 347,
                            "src": "3107:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3097:20:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 361,
                        "nodeType": "ExpressionStatement",
                        "src": "3097:20:2"
                      }
                    ]
                  },
                  "documentation": "@notice Internal setter for target address.\n@param _newTarget The address of the new target contract instance.\n",
                  "id": 363,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setTarget",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 348,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 347,
                        "name": "_newTarget",
                        "nodeType": "VariableDeclaration",
                        "scope": 363,
                        "src": "2996:18:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 346,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2996:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2995:20:2"
                  },
                  "returnParameters": {
                    "id": 349,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3025:0:2"
                  },
                  "scope": 438,
                  "src": "2976:145:2",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 380,
                    "nodeType": "Block",
                    "src": "3350:134:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 371,
                                  "name": "_sovrynContractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 365,
                                  "src": "3381:22:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 369,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "3362:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 370,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "3362:18:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3362:42:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "736f7672796e206e6f74206120636f6e7472616374",
                              "id": 373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3406:23:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9e01fd1e3b664da88d953a45fde8a9968cbd02820f582ee111d85e0dd2614761",
                                "typeString": "literal_string \"sovryn not a contract\""
                              },
                              "value": "sovryn not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9e01fd1e3b664da88d953a45fde8a9968cbd02820f582ee111d85e0dd2614761",
                                "typeString": "literal_string \"sovryn not a contract\""
                              }
                            ],
                            "id": 368,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3354:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3354:76:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 375,
                        "nodeType": "ExpressionStatement",
                        "src": "3354:76:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 376,
                            "name": "sovrynContractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 278,
                            "src": "3434:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 377,
                            "name": "_sovrynContractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 365,
                            "src": "3458:22:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3434:46:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 379,
                        "nodeType": "ExpressionStatement",
                        "src": "3434:46:2"
                      }
                    ]
                  },
                  "documentation": "@notice Internal setter for sovrynContract address.\n@param _sovrynContractAddress The address of the new sovrynContract instance.\n",
                  "id": 381,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setSovrynContractAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 366,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 365,
                        "name": "_sovrynContractAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 381,
                        "src": "3309:30:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 364,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3309:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3308:32:2"
                  },
                  "returnParameters": {
                    "id": 367,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3350:0:2"
                  },
                  "scope": 438,
                  "src": "3274:210:2",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 398,
                    "nodeType": "Block",
                    "src": "3683:121:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 389,
                                  "name": "_wrbtcTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 383,
                                  "src": "3714:18:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 387,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "3695:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 388,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "3695:18:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 390,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3695:38:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7772627463206e6f74206120636f6e7472616374",
                              "id": 391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3735:22:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6bee93cd8fbaf35d39792839d2db88e3b0d8e6a3a61fc21e9ac98351b6fd6095",
                                "typeString": "literal_string \"wrbtc not a contract\""
                              },
                              "value": "wrbtc not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6bee93cd8fbaf35d39792839d2db88e3b0d8e6a3a61fc21e9ac98351b6fd6095",
                                "typeString": "literal_string \"wrbtc not a contract\""
                              }
                            ],
                            "id": 386,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3687:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3687:71:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 393,
                        "nodeType": "ExpressionStatement",
                        "src": "3687:71:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 394,
                            "name": "wrbtcTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 280,
                            "src": "3762:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 395,
                            "name": "_wrbtcTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 383,
                            "src": "3782:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3762:38:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 397,
                        "nodeType": "ExpressionStatement",
                        "src": "3762:38:2"
                      }
                    ]
                  },
                  "documentation": "@notice Internal setter for wrBTC address.\n@param _wrbtcTokenAddress The address of the new wrBTC instance.\n",
                  "id": 399,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setWrbtcTokenAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 384,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 383,
                        "name": "_wrbtcTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 399,
                        "src": "3646:26:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 382,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3646:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3645:28:2"
                  },
                  "returnParameters": {
                    "id": 385,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3683:0:2"
                  },
                  "scope": 438,
                  "src": "3615:189:2",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 436,
                    "nodeType": "Block",
                    "src": "4295:181:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 410,
                            "name": "loanTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 476,
                            "src": "4299:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 411,
                            "name": "_loanTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 401,
                            "src": "4318:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4299:36:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 413,
                        "nodeType": "ExpressionStatement",
                        "src": "4299:36:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 414,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 470,
                            "src": "4340:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 415,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 403,
                            "src": "4347:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "4340:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 417,
                        "nodeType": "ExpressionStatement",
                        "src": "4340:12:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 418,
                            "name": "symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 472,
                            "src": "4356:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 419,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 405,
                            "src": "4365:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "4356:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 421,
                        "nodeType": "ExpressionStatement",
                        "src": "4356:16:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 422,
                            "name": "decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 474,
                            "src": "4376:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 424,
                                    "name": "loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 476,
                                    "src": "4394:16:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 423,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24699,
                                  "src": "4387:6:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 425,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4387:24:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$24699",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "decimals",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24630,
                              "src": "4387:33:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                                "typeString": "function () view external returns (uint8)"
                              }
                            },
                            "id": 427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4387:35:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "4376:46:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 429,
                        "nodeType": "ExpressionStatement",
                        "src": "4376:46:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 430,
                            "name": "initialPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 496,
                            "src": "4427:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4442:2:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4446:2:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "4442:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "src": "4427:21:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 435,
                        "nodeType": "ExpressionStatement",
                        "src": "4427:21:2"
                      }
                    ]
                  },
                  "documentation": "@notice Public owner cloner for pointed loan token.\n  Sets ERC20 parameters of the token.\n\t * @dev TODO: add check for double init.\n  idk but init usually can be called only once.\n\t * @param _loanTokenAddress The address of the pointed loan token instance.\n@param _name The ERC20 token name.\n@param _symbol The ERC20 token symbol.\n",
                  "id": 437,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 408,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 407,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "4285:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4285:9:2"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 406,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 401,
                        "name": "_loanTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 437,
                        "src": "4201:25:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 400,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4201:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 403,
                        "name": "_name",
                        "nodeType": "VariableDeclaration",
                        "scope": 437,
                        "src": "4230:19:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 402,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4230:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 405,
                        "name": "_symbol",
                        "nodeType": "VariableDeclaration",
                        "scope": 437,
                        "src": "4253:21:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 404,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4253:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4197:80:2"
                  },
                  "returnParameters": {
                    "id": 409,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4295:0:2"
                  },
                  "scope": 438,
                  "src": "4178:298:2",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 439,
              "src": "1008:3470:2"
            }
          ],
          "src": "118:4361:2"
        },
        "id": 2
      },
      "contracts/connectors/loantoken/LoanTokenBase.sol": {
        "ast": {
          "absolutePath": "contracts/connectors/loantoken/LoanTokenBase.sol",
          "exportedSymbols": {
            "LoanTokenBase": [
              511
            ]
          },
          "id": 512,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 440,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:3"
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../../openzeppelin/SafeMath.sol",
              "id": 441,
              "nodeType": "ImportDirective",
              "scope": 512,
              "sourceUnit": 42310,
              "src": "143:41:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SignedSafeMath.sol",
              "file": "../../openzeppelin/SignedSafeMath.sol",
              "id": 442,
              "nodeType": "ImportDirective",
              "scope": 512,
              "sourceUnit": 42484,
              "src": "185:47:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/ReentrancyGuard.sol",
              "file": "../../openzeppelin/ReentrancyGuard.sol",
              "id": 443,
              "nodeType": "ImportDirective",
              "scope": 512,
              "sourceUnit": 41830,
              "src": "233:48:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../../openzeppelin/Ownable.sol",
              "id": 444,
              "nodeType": "ImportDirective",
              "scope": 512,
              "sourceUnit": 41799,
              "src": "282:40:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Address.sol",
              "file": "../../openzeppelin/Address.sol",
              "id": 445,
              "nodeType": "ImportDirective",
              "scope": 512,
              "sourceUnit": 41099,
              "src": "323:40:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IWrbtcERC20.sol",
              "file": "../../interfaces/IWrbtcERC20.sol",
              "id": 446,
              "nodeType": "ImportDirective",
              "scope": 512,
              "sourceUnit": 25560,
              "src": "364:42:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/connectors/loantoken/Pausable.sol",
              "file": "./Pausable.sol",
              "id": 447,
              "nodeType": "ImportDirective",
              "scope": 512,
              "sourceUnit": 4222,
              "src": "407:24:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 448,
                    "name": "ReentrancyGuard",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41829,
                    "src": "1736:15:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReentrancyGuard_$41829",
                      "typeString": "contract ReentrancyGuard"
                    }
                  },
                  "id": 449,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1736:15:3"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 450,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "1753:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 451,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1753:7:3"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 452,
                    "name": "Pausable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4221,
                    "src": "1762:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Pausable_$4221",
                      "typeString": "contract Pausable"
                    }
                  },
                  "id": 453,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1762:8:3"
                }
              ],
              "contractDependencies": [
                4221,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title Loan Token Base contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized margin\ntrading and lending https://bzx.network similar to the dYdX protocol.\n * Specific loan related storage for iTokens.\n * An loan token or iToken is a representation of a user funds in the pool and the\ninterest they've earned. The redemption value of iTokens continually increase\nfrom the accretion of interest paid into the lending pool by borrowers. The user\ncan sell iTokens to exit its position. The user might potentially use them as\ncollateral wherever applicable.\n * There are three main tokens in the bZx system, iTokens, pTokens, and BZRX tokens.\nThe bZx system of lending and borrowing depends on iTokens and pTokens, and when\nusers lend or borrow money on bZx, their crypto assets go into or come out of\nglobal liquidity pools, which are pools of funds shared between many different\nexchanges. When lenders supply funds into the global liquidity pools, they\nautomatically receive iTokens; When users borrow money to open margin trading\npositions, they automatically receive pTokens. The system is also designed to\nuse the BZRX tokens, which are only used to pay fees on the network currently.\n",
              "fullyImplemented": true,
              "id": 511,
              "linearizedBaseContracts": [
                511,
                4221,
                41798,
                41125,
                41829
              ],
              "name": "LoanTokenBase",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 458,
                  "name": "WEI_PRECISION",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "1774:48:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 454,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1774:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "id": 457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 455,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1816:2:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3138",
                      "id": 456,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1820:2:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_18_by_1",
                        "typeString": "int_const 18"
                      },
                      "value": "18"
                    },
                    "src": "1816:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 463,
                  "name": "WEI_PERCENT_PRECISION",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "1825:56:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 459,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1825:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_100000000000000000000_by_1",
                      "typeString": "int_const 100000000000000000000"
                    },
                    "id": 462,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 460,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1875:2:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3230",
                      "id": 461,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1879:2:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_20_by_1",
                        "typeString": "int_const 20"
                      },
                      "value": "20"
                    },
                    "src": "1875:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100000000000000000000_by_1",
                      "typeString": "int_const 100000000000000000000"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 468,
                  "name": "sWEI_PRECISION",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "1885:48:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 464,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1885:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "id": 467,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 465,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1927:2:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3138",
                      "id": 466,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1931:2:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_18_by_1",
                        "typeString": "int_const 18"
                      },
                      "value": "18"
                    },
                    "src": "1927:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 470,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "1977:18:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 469,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1977:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 472,
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "1998:20:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 471,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1998:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 474,
                  "name": "decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2021:21:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 473,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2021:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 476,
                  "name": "loanTokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2115:31:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 475,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2115:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 478,
                  "name": "baseRate",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2150:23:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 477,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2150:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 480,
                  "name": "rateMultiplier",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2176:29:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 479,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2176:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 482,
                  "name": "lowUtilBaseRate",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2208:30:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 481,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2208:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 484,
                  "name": "lowUtilRateMultiplier",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2241:36:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 483,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2241:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 486,
                  "name": "targetLevel",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2281:26:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 485,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2281:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 488,
                  "name": "kinkLevel",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2310:24:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 487,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2310:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 490,
                  "name": "maxScaleRate",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2337:27:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 489,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2337:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 492,
                  "name": "_flTotalAssetSupply",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2368:36:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 491,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2368:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 494,
                  "name": "checkpointSupply",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2407:31:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 493,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2407:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 496,
                  "name": "initialPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2441:27:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 495,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2441:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 498,
                  "name": "lastSettleTime_",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2524:31:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint88",
                    "typeString": "uint88"
                  },
                  "typeName": {
                    "id": 497,
                    "name": "uint88",
                    "nodeType": "ElementaryTypeName",
                    "src": "2524:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint88",
                      "typeString": "uint88"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 502,
                  "name": "loanParamsIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2633:48:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                    "typeString": "mapping(uint256 => bytes32)"
                  },
                  "typeName": {
                    "id": 501,
                    "keyType": {
                      "id": 499,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2641:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2633:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                      "typeString": "mapping(uint256 => bytes32)"
                    },
                    "valueType": {
                      "id": 500,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "2652:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 506,
                  "name": "checkpointPrices_",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2730:54:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 505,
                    "keyType": {
                      "id": 503,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2738:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2730:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 504,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2749:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 510,
                  "name": "transactionLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 511,
                  "src": "2854:51:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 509,
                    "keyType": {
                      "id": 507,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2862:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2854:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 508,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2873:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                }
              ],
              "scope": 512,
              "src": "1710:1216:3"
            }
          ],
          "src": "118:2809:3"
        },
        "id": 3
      },
      "contracts/connectors/loantoken/LoanTokenLogicLM.sol": {
        "ast": {
          "absolutePath": "contracts/connectors/loantoken/LoanTokenLogicLM.sol",
          "exportedSymbols": {
            "LoanTokenLogicLM": [
              584
            ]
          },
          "id": 585,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 513,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:4"
            },
            {
              "id": 514,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "24:33:4"
            },
            {
              "absolutePath": "contracts/connectors/loantoken/LoanTokenLogicStandard.sol",
              "file": "./LoanTokenLogicStandard.sol",
              "id": 515,
              "nodeType": "ImportDirective",
              "scope": 585,
              "sourceUnit": 3575,
              "src": "59:38:4",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 516,
                    "name": "LoanTokenLogicStandard",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3574,
                    "src": "128:22:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                      "typeString": "contract LoanTokenLogicStandard"
                    }
                  },
                  "id": 517,
                  "nodeType": "InheritanceSpecifier",
                  "src": "128:22:4"
                }
              ],
              "contractDependencies": [
                168,
                271,
                511,
                3574,
                4182,
                4221,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 584,
              "linearizedBaseContracts": [
                584,
                3574,
                4182,
                168,
                271,
                511,
                4221,
                41798,
                41125,
                41829
              ],
              "name": "LoanTokenLogicLM",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 542,
                    "nodeType": "Block",
                    "src": "651:113:4",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 530,
                          "name": "useLM",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 523,
                          "src": "659:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 537,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 519,
                                "src": "736:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 538,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 521,
                                "src": "746:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 536,
                              "name": "_mintToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2057,
                              "src": "725:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) returns (uint256)"
                              }
                            },
                            "id": 539,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "725:35:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 529,
                          "id": 540,
                          "nodeType": "Return",
                          "src": "718:42:4"
                        },
                        "id": 541,
                        "nodeType": "IfStatement",
                        "src": "655:105:4",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 532,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 519,
                                "src": "685:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 533,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 521,
                                "src": "695:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 531,
                              "name": "_mintWithLM",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3500,
                              "src": "673:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) returns (uint256)"
                              }
                            },
                            "id": 534,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "673:36:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 529,
                          "id": 535,
                          "nodeType": "Return",
                          "src": "666:43:4"
                        }
                      }
                    ]
                  },
                  "documentation": "@notice deposit into the lending pool and optionally participate at the Liquidity Mining Program\n@param receiver the receiver of the tokens\n@param depositAmount The amount of underlying tokens provided on the loan.\n\t\t\t\t\t(Not the number of loan tokens to mint).\n@param useLM if true -> deposit the pool tokens into the Liquidity Mining contract",
                  "id": 543,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 526,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 525,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "613:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "613:12:4"
                    }
                  ],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 524,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 519,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 543,
                        "src": "545:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 518,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "545:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 521,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 543,
                        "src": "565:21:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 520,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "565:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 523,
                        "name": "useLM",
                        "nodeType": "VariableDeclaration",
                        "scope": 543,
                        "src": "590:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 522,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "590:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "541:62:4"
                  },
                  "returnParameters": {
                    "id": 529,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 528,
                        "name": "minted",
                        "nodeType": "VariableDeclaration",
                        "scope": 543,
                        "src": "635:14:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 527,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "635:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "634:16:4"
                  },
                  "scope": 584,
                  "src": "528:236:4",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 582,
                    "nodeType": "Block",
                    "src": "1296:288:4",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 556,
                          "name": "useLM",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 549,
                          "src": "1304:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 567,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 563,
                              "name": "redeemed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 554,
                              "src": "1354:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 565,
                                  "name": "burnAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 547,
                                  "src": "1376:10:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 564,
                                "name": "_burnToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2259,
                                "src": "1365:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) returns (uint256)"
                                }
                              },
                              "id": 566,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1365:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1354:33:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 568,
                          "nodeType": "ExpressionStatement",
                          "src": "1354:33:4"
                        },
                        "id": 569,
                        "nodeType": "IfStatement",
                        "src": "1300:87:4",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 561,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 557,
                              "name": "redeemed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 554,
                              "src": "1311:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 559,
                                  "name": "burnAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 547,
                                  "src": "1334:10:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 558,
                                "name": "_burnFromLM",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3573,
                                "src": "1322:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) returns (uint256)"
                                }
                              },
                              "id": 560,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1322:23:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1311:34:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 562,
                          "nodeType": "ExpressionStatement",
                          "src": "1311:34:4"
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 570,
                            "name": "redeemed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 554,
                            "src": "1480:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 571,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1492:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1480:13:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 581,
                        "nodeType": "IfStatement",
                        "src": "1476:105:4",
                        "trueBody": {
                          "id": 580,
                          "nodeType": "Block",
                          "src": "1495:86:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 574,
                                    "name": "loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 476,
                                    "src": "1514:16:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 575,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 545,
                                    "src": "1532:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 576,
                                    "name": "redeemed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 554,
                                    "src": "1542:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6173736574207472616e73666572206661696c6564",
                                    "id": 577,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1552:23:4",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8f34fa034f22df2111e7e105779732546b06f2f95cd0d7347f8b7a1227335848",
                                      "typeString": "literal_string \"asset transfer failed\""
                                    },
                                    "value": "asset transfer failed"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8f34fa034f22df2111e7e105779732546b06f2f95cd0d7347f8b7a1227335848",
                                      "typeString": "literal_string \"asset transfer failed\""
                                    }
                                  ],
                                  "id": 573,
                                  "name": "_safeTransfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2806,
                                  "src": "1500:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,string memory)"
                                  }
                                },
                                "id": 578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1500:76:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 579,
                              "nodeType": "ExpressionStatement",
                              "src": "1500:76:4"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice withdraws from the lending pool and optionally retrieves the pool tokens from the\n        Liquidity Mining Contract\n@param receiver the receiver of the underlying tokens. note: potetial LM rewards are always sent to the msg.sender\n@param burnAmount The amount of pool tokens to redeem.\n@param useLM if true -> deposit the pool tokens into the Liquidity Mining contract",
                  "id": 583,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 552,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 551,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "1256:12:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1256:12:4"
                    }
                  ],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 550,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 545,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 583,
                        "src": "1191:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 544,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1191:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 547,
                        "name": "burnAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 583,
                        "src": "1211:18:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 546,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1211:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 549,
                        "name": "useLM",
                        "nodeType": "VariableDeclaration",
                        "scope": 583,
                        "src": "1233:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 548,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1233:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1187:59:4"
                  },
                  "returnParameters": {
                    "id": 555,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 554,
                        "name": "redeemed",
                        "nodeType": "VariableDeclaration",
                        "scope": 583,
                        "src": "1278:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 553,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1278:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1277:18:4"
                  },
                  "scope": 584,
                  "src": "1174:410:4",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 585,
              "src": "99:1487:4"
            }
          ],
          "src": "0:1587:4"
        },
        "id": 4
      },
      "contracts/connectors/loantoken/LoanTokenLogicStandard.sol": {
        "ast": {
          "absolutePath": "contracts/connectors/loantoken/LoanTokenLogicStandard.sol",
          "exportedSymbols": {
            "LoanTokenLogicStandard": [
              3574
            ]
          },
          "id": 3575,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 586,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:5"
            },
            {
              "id": 587,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "142:33:5"
            },
            {
              "absolutePath": "contracts/connectors/loantoken/LoanTokenSettingsLowerAdmin.sol",
              "file": "./LoanTokenSettingsLowerAdmin.sol",
              "id": 588,
              "nodeType": "ImportDirective",
              "scope": 3575,
              "sourceUnit": 4183,
              "src": "177:43:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/connectors/loantoken/interfaces/ProtocolLike.sol",
              "file": "./interfaces/ProtocolLike.sol",
              "id": 589,
              "nodeType": "ImportDirective",
              "scope": 3575,
              "sourceUnit": 4372,
              "src": "221:39:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/connectors/loantoken/interfaces/FeedsLike.sol",
              "file": "./interfaces/FeedsLike.sol",
              "id": 590,
              "nodeType": "ImportDirective",
              "scope": 3575,
              "sourceUnit": 4236,
              "src": "261:36:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/modules/interfaces/ProtocolAffiliatesInterface.sol",
              "file": "../../modules/interfaces/ProtocolAffiliatesInterface.sol",
              "id": 591,
              "nodeType": "ImportDirective",
              "scope": 3575,
              "sourceUnit": 40356,
              "src": "298:66:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/farm/ILiquidityMining.sol",
              "file": "../../farm/ILiquidityMining.sol",
              "id": 592,
              "nodeType": "ImportDirective",
              "scope": 3575,
              "sourceUnit": 6370,
              "src": "365:41:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 593,
                    "name": "LoanTokenSettingsLowerAdmin",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4182,
                    "src": "2181:27:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanTokenSettingsLowerAdmin_$4182",
                      "typeString": "contract LoanTokenSettingsLowerAdmin"
                    }
                  },
                  "id": 594,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2181:27:5"
                }
              ],
              "contractDependencies": [
                168,
                271,
                511,
                4182,
                4221,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title Loan Token Logic Standard contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized margin\ntrading and lending https://bzx.network similar to the dYdX protocol.\n * Logic around loan tokens (iTokens) required to operate borrowing,\nand margin trading financial processes.\n * The user provides funds to the lending pool using the mint function and\nwithdraws funds from the lending pool using the burn function. Mint and\nburn refer to minting and burning loan tokens. Loan tokens represent a\nshare of the pool and gather interest over time.\n * Interest rates are determined by supply and demand. When a lender deposits\nfunds, the interest rates go down. When a trader borrows funds, the\ninterest rates go up. Fulcrum uses a simple linear interest rate formula\nof the form y = mx + b. The interest rate starts at 1% when loans aren't\nbeing utilized and scales up to 40% when all the funds in the loan pool\nare being borrowed.\n * The borrow rate is determined at the time of the loan and represents the\nnet contribution of each borrower. Each borrower's interest contribution\nis determined by the utilization rate of the pool and is netted against\nall prior borrows. This means that the total amount of interest flowing\ninto the lending pool is not directly changed by lenders entering or\nexiting the pool. The entrance or exit of lenders only impacts how the\ninterest payments are split up.\n * For example, if there are 2 lenders with equal holdings each earning\n5% APR, but one of the lenders leave, then the remaining lender will earn\n10% APR since the interest payments don't have to be split between two\nindividuals.\n",
              "fullyImplemented": true,
              "id": 3574,
              "linearizedBaseContracts": [
                3574,
                4182,
                168,
                271,
                511,
                4221,
                41798,
                41125,
                41829
              ],
              "name": "LoanTokenLogicStandard",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 597,
                  "libraryName": {
                    "contractScope": null,
                    "id": 595,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "2218:8:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2212:27:5",
                  "typeName": {
                    "id": 596,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2231:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 600,
                  "libraryName": {
                    "contractScope": null,
                    "id": 598,
                    "name": "SignedSafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42483,
                    "src": "2247:14:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedSafeMath_$42483",
                      "typeString": "library SignedSafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2241:32:5",
                  "typeName": {
                    "id": 599,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2266:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 603,
                  "name": "VERSION",
                  "nodeType": "VariableDeclaration",
                  "scope": 3574,
                  "src": "2355:35:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 601,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2355:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "36",
                    "id": 602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2389:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_6_by_1",
                      "typeString": "int_const 6"
                    },
                    "value": "6"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 606,
                  "name": "arbitraryCaller",
                  "nodeType": "VariableDeclaration",
                  "scope": 3574,
                  "src": "2433:86:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 604,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2433:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307830303046343030653638313831353844353431433345424534354645334141306434373337324646",
                    "id": 605,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2477:42:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    },
                    "value": "0x000F400e6818158D541C3EBE45FE3AA0d47372FF"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 609,
                  "name": "iToken_ProfitSoFar",
                  "nodeType": "VariableDeclaration",
                  "scope": 3574,
                  "src": "2522:113:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 607,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2522:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307833376161326237643538333631326630313665346134646534323932636230313531333962336437373632363633643036613533393634393132656132666236",
                    "id": 608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2569:66:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_25177870827467948494942243455440078202502543892899610998733631532642089971638_by_1",
                      "typeString": "int_const 2517...(69 digits omitted)...1638"
                    },
                    "value": "0x37aa2b7d583612f016e4a4de4292cb015139b3d7762663d06a53964912ea2fb6"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 612,
                    "nodeType": "Block",
                    "src": "2775:332:5",
                    "statements": []
                  },
                  "documentation": "@notice Fallback function is to react to receiving value (rBTC).\n",
                  "id": 613,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 610,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2763:2:5"
                  },
                  "returnParameters": {
                    "id": 611,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2775:0:5"
                  },
                  "scope": 3574,
                  "src": "2755:352:5",
                  "stateMutability": "nonpayable",
                  "superFunction": 3894,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 629,
                    "nodeType": "Block",
                    "src": "3929:50:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 625,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 615,
                              "src": "3951:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 626,
                              "name": "depositAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 617,
                              "src": "3961:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 624,
                            "name": "_mintToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2057,
                            "src": "3940:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256) returns (uint256)"
                            }
                          },
                          "id": 627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3940:35:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 623,
                        "id": 628,
                        "nodeType": "Return",
                        "src": "3933:42:5"
                      }
                    ]
                  },
                  "documentation": "@notice Mint loan token wrapper.\nAdds a check before calling low level _mintToken function.\nThe function retrieves the tokens from the message sender, so make sure\nto first approve the loan token contract to access your funds. This is\ndone by calling approve(address spender, uint amount) on the ERC20\ntoken contract, where spender is the loan token contract address and\namount is the amount to be deposited.\n\t * @param receiver The account getting the minted tokens.\n@param depositAmount The amount of underlying tokens provided on the\n  loan. (Not the number of loan tokens to mint).\n\t * @return The amount of loan tokens minted.\n",
                  "id": 630,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 620,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 619,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "3887:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3887:12:5"
                    }
                  ],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 618,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 615,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 630,
                        "src": "3837:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 614,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3837:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 617,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 630,
                        "src": "3855:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 616,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3855:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3836:41:5"
                  },
                  "returnParameters": {
                    "id": 623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 622,
                        "name": "mintAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 630,
                        "src": "3909:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 621,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3909:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3908:20:5"
                  },
                  "scope": 3574,
                  "src": "3823:156:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 659,
                    "nodeType": "Block",
                    "src": "4578:233:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 641,
                            "name": "loanAmountPaid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 639,
                            "src": "4582:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 643,
                                "name": "burnAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 634,
                                "src": "4610:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 642,
                              "name": "_burnToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2259,
                              "src": "4599:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) returns (uint256)"
                              }
                            },
                            "id": 644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4599:22:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4582:39:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 646,
                        "nodeType": "ExpressionStatement",
                        "src": "4582:39:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 647,
                            "name": "loanAmountPaid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 639,
                            "src": "4715:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4733:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4715:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 658,
                        "nodeType": "IfStatement",
                        "src": "4711:97:5",
                        "trueBody": {
                          "id": 657,
                          "nodeType": "Block",
                          "src": "4736:72:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 651,
                                    "name": "loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 476,
                                    "src": "4755:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 652,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 632,
                                    "src": "4773:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 653,
                                    "name": "loanAmountPaid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 639,
                                    "src": "4783:14:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "35",
                                    "id": 654,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4799:3:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_ceebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1",
                                      "typeString": "literal_string \"5\""
                                    },
                                    "value": "5"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_ceebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1",
                                      "typeString": "literal_string \"5\""
                                    }
                                  ],
                                  "id": 650,
                                  "name": "_safeTransfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2806,
                                  "src": "4741:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,string memory)"
                                  }
                                },
                                "id": 655,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4741:62:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 656,
                              "nodeType": "ExpressionStatement",
                              "src": "4741:62:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Burn loan token wrapper.\nAdds a pay-out transfer after calling low level _burnToken function.\nIn order to withdraw funds to the pool, call burn on the respective\nloan token contract. This will burn your loan tokens and send you the\nunderlying token in exchange.\n\t * @param receiver The account getting the minted tokens.\n@param burnAmount The amount of loan tokens to redeem.\n\t * @return The amount of underlying tokens payed to lender.\n",
                  "id": 660,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 637,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 636,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "4532:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4532:12:5"
                    }
                  ],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 632,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 660,
                        "src": "4485:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 631,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4485:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 634,
                        "name": "burnAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 660,
                        "src": "4503:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 633,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4503:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4484:38:5"
                  },
                  "returnParameters": {
                    "id": 640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 639,
                        "name": "loanAmountPaid",
                        "nodeType": "VariableDeclaration",
                        "scope": 660,
                        "src": "4554:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 638,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4554:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4553:24:5"
                  },
                  "scope": 3574,
                  "src": "4471:340:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 869,
                    "nodeType": "Block",
                    "src": "8283:2116:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 686,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 664,
                                "src": "8295:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 687,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8313:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8295:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "36",
                              "id": 689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8316:3:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e455bf8ea6e7463a1046a0b52804526e119b4bf5136279614e0b1e8e296a4e2d",
                                "typeString": "literal_string \"6\""
                              },
                              "value": "6"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e455bf8ea6e7463a1046a0b52804526e119b4bf5136279614e0b1e8e296a4e2d",
                                "typeString": "literal_string \"6\""
                              }
                            ],
                            "id": 685,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8287:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 690,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8287:33:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 691,
                        "nodeType": "ExpressionStatement",
                        "src": "8287:33:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 692,
                            "name": "_checkPause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3382,
                            "src": "8325:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8325:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 694,
                        "nodeType": "ExpressionStatement",
                        "src": "8325:13:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 695,
                              "name": "transactionLimit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 510,
                              "src": "8388:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 697,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 696,
                              "name": "collateralTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 670,
                              "src": "8405:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8388:40:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 698,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8431:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8388:44:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 708,
                        "nodeType": "IfStatement",
                        "src": "8384:122:5",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 705,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 701,
                                  "name": "collateralTokenSent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 668,
                                  "src": "8442:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 702,
                                    "name": "transactionLimit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 510,
                                    "src": "8465:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 704,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 703,
                                    "name": "collateralTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 670,
                                    "src": "8482:22:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "8465:40:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8442:63:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 700,
                              "name": "require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                44997,
                                44998
                              ],
                              "referencedDeclaration": 44997,
                              "src": "8434:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                "typeString": "function (bool) pure"
                              }
                            },
                            "id": 706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8434:72:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 707,
                          "nodeType": "ExpressionStatement",
                          "src": "8434:72:5"
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 728,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 718,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 713,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 710,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44994,
                                              "src": "8524:3:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 711,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "value",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8524:9:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 712,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8537:1:5",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "8524:14:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "||",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 717,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 714,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44994,
                                              "src": "8542:3:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 715,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "value",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8542:9:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 716,
                                            "name": "collateralTokenSent",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 668,
                                            "src": "8555:19:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "8542:32:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "src": "8524:50:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "id": 719,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "8523:52:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 726,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 722,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 720,
                                            "name": "collateralTokenSent",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 668,
                                            "src": "8584:19:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 721,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8607:1:5",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "8584:24:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "||",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          "id": 725,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 723,
                                            "name": "loanId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 662,
                                            "src": "8612:6:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 724,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8622:1:5",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "8612:11:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "src": "8584:39:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "id": 727,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "8583:41:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "8523:101:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 742,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 738,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          "id": 733,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 729,
                                            "name": "collateralTokenAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 670,
                                            "src": "8633:22:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "30",
                                                "id": 731,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8667:1:5",
                                                "subdenomination": null,
                                                "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": 730,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "8659:7:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": "address"
                                            },
                                            "id": 732,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "8659:10:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          "src": "8633:36:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "||",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 737,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 734,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44994,
                                              "src": "8673:3:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 735,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "value",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8673:9:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 736,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8686:1:5",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "8673:14:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "src": "8633:54:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "||",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "id": 741,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 739,
                                          "name": "loanId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 662,
                                          "src": "8691:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 740,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8701:1:5",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "8691:11:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "8633:69:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 743,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "8632:71:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "8523:180:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 752,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      "id": 747,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 745,
                                        "name": "loanId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 662,
                                        "src": "8712:6:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 746,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8722:1:5",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "8712:11:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 751,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 748,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44994,
                                          "src": "8727:3:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 749,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "8727:10:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 750,
                                        "name": "borrower",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 672,
                                        "src": "8741:8:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "8727:22:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "8712:37:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 753,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "8711:39:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "8523:227:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "37",
                              "id": 755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8755:3:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_52f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021",
                                "typeString": "literal_string \"7\""
                              },
                              "value": "7"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_52f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021",
                                "typeString": "literal_string \"7\""
                              }
                            ],
                            "id": 709,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8511:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8511:251:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 757,
                        "nodeType": "ExpressionStatement",
                        "src": "8511:251:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 758,
                            "name": "collateralTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 670,
                            "src": "9283:22:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9317:1:5",
                                "subdenomination": null,
                                "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": 759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9309:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 761,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9309:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "9283:36:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 768,
                        "nodeType": "IfStatement",
                        "src": "9279:94:5",
                        "trueBody": {
                          "id": 767,
                          "nodeType": "Block",
                          "src": "9321:52:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 763,
                                  "name": "collateralTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 670,
                                  "src": "9326:22:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 764,
                                  "name": "wrbtcTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3829,
                                  "src": "9351:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "9326:42:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 766,
                              "nodeType": "ExpressionStatement",
                              "src": "9326:42:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 770,
                                "name": "collateralTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 670,
                                "src": "9384:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 771,
                                "name": "loanTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 476,
                                "src": "9410:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "9384:42:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 773,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9428:4:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1a192fabce13988b84994d4296e6cdc418d55e2f1d7f942188d4040b94fc57ac",
                                "typeString": "literal_string \"10\""
                              },
                              "value": "10"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1a192fabce13988b84994d4296e6cdc418d55e2f1d7f942188d4040b94fc57ac",
                                "typeString": "literal_string \"10\""
                              }
                            ],
                            "id": 769,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9376:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9376:57:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 775,
                        "nodeType": "ExpressionStatement",
                        "src": "9376:57:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 776,
                            "name": "_settleInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2286,
                            "src": "9438:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9438:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 778,
                        "nodeType": "ExpressionStatement",
                        "src": "9438:17:5"
                      },
                      {
                        "assignments": [
                          783
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 783,
                            "name": "sentAddresses",
                            "nodeType": "VariableDeclaration",
                            "scope": 869,
                            "src": "9460:31:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                              "typeString": "address[4]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 781,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9460:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 782,
                              "length": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9468:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "nodeType": "ArrayTypeName",
                              "src": "9460:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_storage_ptr",
                                "typeString": "address[4]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 784,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9460:31:5"
                      },
                      {
                        "assignments": [
                          789
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 789,
                            "name": "sentAmounts",
                            "nodeType": "VariableDeclaration",
                            "scope": 869,
                            "src": "9495:29:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                              "typeString": "uint256[5]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 787,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9495:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 788,
                              "length": {
                                "argumentTypes": null,
                                "hexValue": "35",
                                "id": 786,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9503:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_5_by_1",
                                  "typeString": "int_const 5"
                                },
                                "value": "5"
                              },
                              "nodeType": "ArrayTypeName",
                              "src": "9495:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                                "typeString": "uint256[5]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 790,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9495:29:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 791,
                              "name": "sentAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 783,
                              "src": "9529:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              }
                            },
                            "id": 793,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 792,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9543:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9529:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 795,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45050,
                                "src": "9556:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                  "typeString": "contract LoanTokenLogicStandard"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                  "typeString": "contract LoanTokenLogicStandard"
                                }
                              ],
                              "id": 794,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9548:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9548:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9529:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 798,
                        "nodeType": "ExpressionStatement",
                        "src": "9529:32:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 799,
                              "name": "sentAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 783,
                              "src": "9581:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              }
                            },
                            "id": 801,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 800,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9595:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9581:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 802,
                            "name": "borrower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 672,
                            "src": "9600:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9581:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 804,
                        "nodeType": "ExpressionStatement",
                        "src": "9581:27:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 805,
                              "name": "sentAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 783,
                              "src": "9612:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              }
                            },
                            "id": 807,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9626:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9612:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 808,
                            "name": "receiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 674,
                            "src": "9631:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9612:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 810,
                        "nodeType": "ExpressionStatement",
                        "src": "9612:27:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 811,
                              "name": "sentAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 789,
                              "src": "9698:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              }
                            },
                            "id": 813,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9710:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9698:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 814,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 664,
                            "src": "9715:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9698:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 816,
                        "nodeType": "ExpressionStatement",
                        "src": "9698:31:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 817,
                                  "name": "sentAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 789,
                                  "src": "9810:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 819,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 818,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9822:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "9810:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 820,
                                  "name": "sentAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 789,
                                  "src": "9826:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 822,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 821,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9838:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "9826:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 823,
                                  "name": "sentAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 789,
                                  "src": "9842:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 825,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 824,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9854:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "9842:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 826,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "9809:48:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 828,
                                  "name": "sentAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 789,
                                  "src": "9896:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 830,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 829,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9908:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9896:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 832,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9933:1:5",
                                    "subdenomination": null,
                                    "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": 831,
                                  "name": "_totalAssetSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3321,
                                  "src": "9915:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) view returns (uint256)"
                                  }
                                },
                                "id": 833,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9915:20:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 834,
                                "name": "initialLoanDuration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 666,
                                "src": "9971:19:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 827,
                              "name": "_getInterestRateAndBorrowAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2442,
                              "src": "9860:31:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) view returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9860:134:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "9809:185:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 837,
                        "nodeType": "ExpressionStatement",
                        "src": "9809:185:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 838,
                              "name": "sentAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 789,
                              "src": "10043:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              }
                            },
                            "id": 840,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 839,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10055:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10043:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 841,
                            "name": "collateralTokenSent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 668,
                            "src": "10060:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10043:36:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 843,
                        "nodeType": "ExpressionStatement",
                        "src": "10043:36:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 845,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 662,
                              "src": "10114:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 846,
                              "name": "withdrawAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 664,
                              "src": "10126:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 851,
                                    "name": "loanParamsIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 502,
                                    "src": "10213:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                                      "typeString": "mapping(uint256 => bytes32)"
                                    }
                                  },
                                  "id": 861,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 856,
                                                "name": "collateralTokenAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 670,
                                                "src": "10262:22:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "74727565",
                                                "id": 857,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "bool",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10286:4:5",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                "value": "true"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 854,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 44981,
                                                "src": "10245:3:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_abi",
                                                  "typeString": "abi"
                                                }
                                              },
                                              "id": 855,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "encodePacked",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "10245:16:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 858,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "10245:46:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 853,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44988,
                                          "src": "10235:9:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 859,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10235:57:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 852,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10227:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint256"
                                    },
                                    "id": 860,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10227:66:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10213:81:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 848,
                                      "name": "sovrynContractAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3827,
                                      "src": "10167:21:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 847,
                                    "name": "ProtocolSettingsLike",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4398,
                                    "src": "10146:20:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ProtocolSettingsLike_$4398_$",
                                      "typeString": "type(contract ProtocolSettingsLike)"
                                    }
                                  },
                                  "id": 849,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10146:43:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsLike_$4398",
                                    "typeString": "contract ProtocolSettingsLike"
                                  }
                                },
                                "id": 850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "minInitialMargin",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4397,
                                "src": "10146:60:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view external returns (uint256)"
                                }
                              },
                              "id": 862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10146:154:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 863,
                              "name": "collateralTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 670,
                              "src": "10306:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 864,
                              "name": "sentAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 783,
                              "src": "10334:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 865,
                              "name": "sentAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 789,
                              "src": "10353:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10370:2:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 844,
                            "name": "_borrowOrTrade",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2621,
                            "src": "10094:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$_t_address_$_t_array$_t_address_$4_memory_ptr_$_t_array$_t_uint256_$5_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (bytes32,uint256,uint256,address,address[4] memory,uint256[5] memory,bytes memory) returns (uint256,uint256)"
                            }
                          },
                          "id": 867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10094:301:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 684,
                        "id": 868,
                        "nodeType": "Return",
                        "src": "10084:311:5"
                      }
                    ]
                  },
                  "documentation": "@notice Borrow funds from the pool.\nThe underlying loan token may not be used as collateral.\n\t * @param loanId The ID of the loan, 0 for a new loan.\n@param withdrawAmount The amount to be withdrawn (actually borrowed).\n@param initialLoanDuration The duration of the loan in seconds.\n  If the loan is not paid back until then, it'll need to be rolled over.\n@param collateralTokenSent The amount of collateral tokens provided by the user.\n  (150% of the withdrawn amount worth in collateral tokens).\n@param collateralTokenAddress The address of the token to be used as\n  collateral. Cannot be the loan token address.\n@param borrower The one paying for the collateral.\n@param receiver The one receiving the withdrawn amount.\n\t * @return New principal and new collateral added to loan.\n",
                  "id": 870,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 679,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 678,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "8110:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8110:12:5"
                    }
                  ],
                  "name": "borrow",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 662,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 870,
                        "src": "7620:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 661,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7620:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 664,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 870,
                        "src": "7657:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 663,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7657:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 666,
                        "name": "initialLoanDuration",
                        "nodeType": "VariableDeclaration",
                        "scope": 870,
                        "src": "7683:27:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 665,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7683:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 668,
                        "name": "collateralTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 870,
                        "src": "7739:27:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 667,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7739:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 670,
                        "name": "collateralTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 870,
                        "src": "7842:30:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 669,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7842:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 672,
                        "name": "borrower",
                        "nodeType": "VariableDeclaration",
                        "scope": 870,
                        "src": "7975:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 671,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7975:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 674,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 870,
                        "src": "7995:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 673,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7995:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 676,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 870,
                        "src": "8015:12:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 675,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8015:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7616:472:5"
                  },
                  "returnParameters": {
                    "id": 684,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 681,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 870,
                        "src": "8198:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 680,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8198:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 683,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 870,
                        "src": "8210:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 682,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8210:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8193:88:5"
                  },
                  "scope": 3574,
                  "src": "7601:2798:5",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1067,
                    "nodeType": "Block",
                    "src": "12840:1992:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 895,
                            "name": "_checkPause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3382,
                            "src": "12844:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12844:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 897,
                        "nodeType": "ExpressionStatement",
                        "src": "12844:13:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 899,
                              "name": "leverageAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 874,
                              "src": "12883:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 900,
                              "name": "loanTokenSent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 876,
                              "src": "12899:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 901,
                              "name": "collateralTokenSent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 878,
                              "src": "12914:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 902,
                              "name": "collateralTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 880,
                              "src": "12935:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 903,
                              "name": "minReturn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 884,
                              "src": "12959:9:5",
                              "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_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 898,
                            "name": "checkPriceDivergence",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1984,
                            "src": "12862:20:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256,address,uint256) view"
                            }
                          },
                          "id": 904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12862:107:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 905,
                        "nodeType": "ExpressionStatement",
                        "src": "12862:107:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 906,
                            "name": "collateralTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 880,
                            "src": "12978:22:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 908,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13012:1:5",
                                "subdenomination": null,
                                "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": 907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13004:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 909,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13004:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "12978:36:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 916,
                        "nodeType": "IfStatement",
                        "src": "12974:94:5",
                        "trueBody": {
                          "id": 915,
                          "nodeType": "Block",
                          "src": "13016:52:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 911,
                                  "name": "collateralTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 880,
                                  "src": "13021:22:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 912,
                                  "name": "wrbtcTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3829,
                                  "src": "13046:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "13021:42:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 914,
                              "nodeType": "ExpressionStatement",
                              "src": "13021:42:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 918,
                                "name": "collateralTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 880,
                                "src": "13080:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 919,
                                "name": "loanTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 476,
                                "src": "13106:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "13080:42:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3131",
                              "id": 921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13124:4:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7880aec93413f117ef14bd4e6d130875ab2c7d7d55a064fac3c2f7bd51516380",
                                "typeString": "literal_string \"11\""
                              },
                              "value": "11"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7880aec93413f117ef14bd4e6d130875ab2c7d7d55a064fac3c2f7bd51516380",
                                "typeString": "literal_string \"11\""
                              }
                            ],
                            "id": 917,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13072:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13072:57:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 923,
                        "nodeType": "ExpressionStatement",
                        "src": "13072:57:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 932,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 925,
                                  "name": "loanId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 872,
                                  "src": "13193:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 926,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13203:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13193:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 931,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 928,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "13208:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 929,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "13208:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 930,
                                  "name": "trader",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 882,
                                  "src": "13222:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "13208:20:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13193:35:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "34303120757365206f66206578697374696e67206c6f616e",
                              "id": 933,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13230:26:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e20a2e47131a5600783882ca0d95a2d8aff09c617c1c51cbc97b17eefe45aed2",
                                "typeString": "literal_string \"401 use of existing loan\""
                              },
                              "value": "401 use of existing loan"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e20a2e47131a5600783882ca0d95a2d8aff09c617c1c51cbc97b17eefe45aed2",
                                "typeString": "literal_string \"401 use of existing loan\""
                              }
                            ],
                            "id": 924,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13185:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13185:72:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 935,
                        "nodeType": "ExpressionStatement",
                        "src": "13185:72:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 936,
                              "name": "transactionLimit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 510,
                              "src": "13307:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 938,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 937,
                              "name": "collateralTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 880,
                              "src": "13324:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13307:40:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13350:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13307:44:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 949,
                        "nodeType": "IfStatement",
                        "src": "13303:122:5",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 946,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 942,
                                  "name": "collateralTokenSent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 878,
                                  "src": "13361:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 943,
                                    "name": "transactionLimit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 510,
                                    "src": "13384:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 945,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 944,
                                    "name": "collateralTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 880,
                                    "src": "13401:22:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13384:40:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13361:63:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 941,
                              "name": "require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                44997,
                                44998
                              ],
                              "referencedDeclaration": 44997,
                              "src": "13353:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                "typeString": "function (bool) pure"
                              }
                            },
                            "id": 947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13353:72:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 948,
                          "nodeType": "ExpressionStatement",
                          "src": "13353:72:5"
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 950,
                              "name": "transactionLimit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 510,
                              "src": "13433:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 952,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 951,
                              "name": "loanTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 476,
                              "src": "13450:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13433:34:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13470:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13433:38:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 963,
                        "nodeType": "IfStatement",
                        "src": "13429:104:5",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 956,
                                  "name": "loanTokenSent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 876,
                                  "src": "13481:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 957,
                                    "name": "transactionLimit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 510,
                                    "src": "13498:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 959,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 958,
                                    "name": "loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 476,
                                    "src": "13515:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13498:34:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13481:51:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 955,
                              "name": "require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                44997,
                                44998
                              ],
                              "referencedDeclaration": 44997,
                              "src": "13473:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                "typeString": "function (bool) pure"
                              }
                            },
                            "id": 961,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13473:60:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 962,
                          "nodeType": "ExpressionStatement",
                          "src": "13473:60:5"
                        }
                      },
                      {
                        "assignments": [
                          965
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 965,
                            "name": "totalDeposit",
                            "nodeType": "VariableDeclaration",
                            "scope": 1067,
                            "src": "13694:20:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 964,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13694:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 971,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 967,
                              "name": "collateralTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 880,
                              "src": "13731:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 968,
                              "name": "collateralTokenSent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 878,
                              "src": "13755:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 969,
                              "name": "loanTokenSent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 876,
                              "src": "13776:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 966,
                            "name": "_totalDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2379,
                            "src": "13717:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256) view returns (uint256)"
                            }
                          },
                          "id": 970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13717:73:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13694:96:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 973,
                                "name": "totalDeposit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 965,
                                "src": "13802:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 974,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13818:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13802:17:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3132",
                              "id": 976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13821:4:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7f8b6b088b6d74c2852fc86c796dca07b44eed6fb3daf5e6b59f7c364db14528",
                                "typeString": "literal_string \"12\""
                              },
                              "value": "12"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7f8b6b088b6d74c2852fc86c796dca07b44eed6fb3daf5e6b59f7c364db14528",
                                "typeString": "literal_string \"12\""
                              }
                            ],
                            "id": 972,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13794:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13794:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 978,
                        "nodeType": "ExpressionStatement",
                        "src": "13794:32:5"
                      },
                      {
                        "assignments": [
                          983
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 983,
                            "name": "sentAddresses",
                            "nodeType": "VariableDeclaration",
                            "scope": 1067,
                            "src": "13831:31:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                              "typeString": "address[4]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 981,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13831:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 982,
                              "length": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13839:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "nodeType": "ArrayTypeName",
                              "src": "13831:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_storage_ptr",
                                "typeString": "address[4]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 984,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13831:31:5"
                      },
                      {
                        "assignments": [
                          989
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 989,
                            "name": "sentAmounts",
                            "nodeType": "VariableDeclaration",
                            "scope": 1067,
                            "src": "13866:29:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                              "typeString": "uint256[5]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 987,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "13866:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 988,
                              "length": {
                                "argumentTypes": null,
                                "hexValue": "35",
                                "id": 986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13874:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_5_by_1",
                                  "typeString": "int_const 5"
                                },
                                "value": "5"
                              },
                              "nodeType": "ArrayTypeName",
                              "src": "13866:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                                "typeString": "uint256[5]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 990,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13866:29:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 991,
                              "name": "sentAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 983,
                              "src": "13900:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              }
                            },
                            "id": 993,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13914:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "13900:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 995,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45050,
                                "src": "13927:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                  "typeString": "contract LoanTokenLogicStandard"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                  "typeString": "contract LoanTokenLogicStandard"
                                }
                              ],
                              "id": 994,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13919:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 996,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13919:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "13900:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 998,
                        "nodeType": "ExpressionStatement",
                        "src": "13900:32:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 999,
                              "name": "sentAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 983,
                              "src": "13952:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              }
                            },
                            "id": 1001,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1000,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13966:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "13952:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1002,
                            "name": "trader",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 882,
                            "src": "13971:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "13952:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1004,
                        "nodeType": "ExpressionStatement",
                        "src": "13952:25:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1005,
                              "name": "sentAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 983,
                              "src": "13981:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              }
                            },
                            "id": 1007,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 1006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13995:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "13981:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1008,
                            "name": "trader",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 882,
                            "src": "14000:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "13981:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1010,
                        "nodeType": "ExpressionStatement",
                        "src": "13981:25:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1011,
                              "name": "sentAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 989,
                              "src": "14123:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              }
                            },
                            "id": 1013,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1012,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14135:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "14123:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1014,
                            "name": "totalDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 965,
                            "src": "14140:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14123:29:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1016,
                        "nodeType": "ExpressionStatement",
                        "src": "14123:29:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1017,
                              "name": "sentAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 989,
                              "src": "14288:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              }
                            },
                            "id": 1019,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "33",
                              "id": 1018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14300:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "14288:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1020,
                            "name": "loanTokenSent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 876,
                            "src": "14305:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14288:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1022,
                        "nodeType": "ExpressionStatement",
                        "src": "14288:30:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1023,
                              "name": "sentAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 989,
                              "src": "14322:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              }
                            },
                            "id": 1025,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 1024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14334:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "14322:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1026,
                            "name": "collateralTokenSent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 878,
                            "src": "14339:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14322:36:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1028,
                        "nodeType": "ExpressionStatement",
                        "src": "14322:36:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1029,
                            "name": "_settleInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2286,
                            "src": "14363:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 1030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14363:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1031,
                        "nodeType": "ExpressionStatement",
                        "src": "14363:17:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1032,
                                  "name": "sentAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 989,
                                  "src": "14386:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 1034,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1033,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14398:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "14386:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1035,
                                  "name": "sentAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 989,
                                  "src": "14402:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 1037,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1036,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14414:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "14402:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1038,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "14385:32:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1040,
                                "name": "leverageAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 874,
                                "src": "14485:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1041,
                                  "name": "sentAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 989,
                                  "src": "14504:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 1043,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1042,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14516:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14504:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1039,
                              "name": "_getMarginBorrowAmountAndRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3285,
                              "src": "14420:29:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256,uint256) view returns (uint256,uint256)"
                              }
                            },
                            "id": 1044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14420:120:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "14385:155:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1046,
                        "nodeType": "ExpressionStatement",
                        "src": "14385:155:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1047,
                            "name": "leverageAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 874,
                            "src": "14584:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000000000000000000000_by_1",
                                  "typeString": "int_const 1000...(31 digits omitted)...0000"
                                },
                                "id": 1052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 1050,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14614:2:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3338",
                                  "id": 1051,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14618:2:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_38_by_1",
                                    "typeString": "int_const 38"
                                  },
                                  "value": "38"
                                },
                                "src": "14614:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000000000000000000000_by_1",
                                  "typeString": "int_const 1000...(31 digits omitted)...0000"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1053,
                                "name": "leverageAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 874,
                                "src": "14622:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_100000000000000000000000000000000000000_by_1",
                                  "typeString": "int_const 1000...(31 digits omitted)...0000"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1048,
                                "name": "SafeMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42309,
                                "src": "14601:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SafeMath_$42309_$",
                                  "typeString": "type(library SafeMath)"
                                }
                              },
                              "id": 1049,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "14601:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14601:36:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14584:53:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1056,
                        "nodeType": "ExpressionStatement",
                        "src": "14584:53:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1058,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 872,
                              "src": "14671:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1059,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14683:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1060,
                              "name": "leverageAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 874,
                              "src": "14709:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1061,
                              "name": "collateralTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 880,
                              "src": "14746:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1062,
                              "name": "sentAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 983,
                              "src": "14774:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1063,
                              "name": "sentAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 989,
                              "src": "14793:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1064,
                              "name": "loanDataBytes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 886,
                              "src": "14810:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1057,
                            "name": "_borrowOrTrade",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2621,
                            "src": "14651:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$_t_address_$_t_array$_t_address_$4_memory_ptr_$_t_array$_t_uint256_$5_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (bytes32,uint256,uint256,address,address[4] memory,uint256[5] memory,bytes memory) returns (uint256,uint256)"
                            }
                          },
                          "id": 1065,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14651:177:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 894,
                        "id": 1066,
                        "nodeType": "Return",
                        "src": "14641:187:5"
                      }
                    ]
                  },
                  "documentation": "@notice Borrow and immediately get into a position.\n\t * Trading on margin is used to increase an investor's buying power.\nMargin is the amount of money required to open a position, while\nleverage is the multiple of exposure to account equity.\n\t * Leverage allows you to trade positions LARGER than the amount\nof money in your trading account. Leverage is expressed as a ratio.\n\t * When trading on margin, investors first deposit some token that then\nserves as collateral for the loan, and then pay ongoing interest\npayments on the money they borrow.\n\t * Margin trading = taking a loan and swapping it:\nIn order to open a margin trade position,\n 1.- The user calls marginTrade on the loan token contract.\n 2.- The loan token contract provides the loan and sends it for processing\n   to the protocol proxy contract.\n 3.- The protocol proxy contract uses the module LoanOpening to create a\n   position and swaps the loan tokens to collateral tokens.\n 4.- The Sovryn Swap network looks up the correct converter and swaps the\n   tokens.\nIf successful, the position is being held by the protocol proxy contract,\nwhich is why positions need to be closed at the protocol proxy contract.\n\t * @param loanId The ID of the loan, 0 for a new loan.\n@param leverageAmount The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.\n@param loanTokenSent The number of loan tokens provided by the user.\n@param collateralTokenSent The amount of collateral tokens provided by the user.\n@param collateralTokenAddress The token address of collateral.\n@param trader The account that performs this trade.\n@param loanDataBytes Additional loan data (not in use for token swaps).\n\t * @return New principal and new collateral added to trade.\n",
                  "id": 1068,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 889,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 888,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "12666:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12666:12:5"
                    }
                  ],
                  "name": "marginTrade",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 887,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 872,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1068,
                        "src": "12273:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 871,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12273:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 874,
                        "name": "leverageAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1068,
                        "src": "12309:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 873,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12309:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 876,
                        "name": "loanTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 1068,
                        "src": "12410:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 875,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12410:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 878,
                        "name": "collateralTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 1068,
                        "src": "12435:27:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 877,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12435:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 880,
                        "name": "collateralTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 1068,
                        "src": "12466:30:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 879,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12466:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 882,
                        "name": "trader",
                        "nodeType": "VariableDeclaration",
                        "scope": 1068,
                        "src": "12500:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 881,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12500:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 884,
                        "name": "minReturn",
                        "nodeType": "VariableDeclaration",
                        "scope": 1068,
                        "src": "12518:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 883,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12518:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 886,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 1068,
                        "src": "12589:26:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 885,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "12589:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12269:375:5"
                  },
                  "returnParameters": {
                    "id": 894,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 891,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1068,
                        "src": "12754:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 890,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12754:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 893,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1068,
                        "src": "12766:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 892,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12766:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12749:89:5"
                  },
                  "scope": 3574,
                  "src": "12249:2583:5",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1118,
                    "nodeType": "Block",
                    "src": "16302:327:5",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1093,
                            "name": "affiliateReferrer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1084,
                            "src": "16310:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1095,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16339:1:5",
                                "subdenomination": null,
                                "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": 1094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16331:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 1096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16331:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "16310:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1106,
                        "nodeType": "IfStatement",
                        "src": "16306:139:5",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1102,
                                "name": "trader",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1080,
                                "src": "16419:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1103,
                                "name": "affiliateReferrer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1084,
                                "src": "16427:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1099,
                                    "name": "sovrynContractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3827,
                                    "src": "16374:21:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1098,
                                  "name": "ProtocolAffiliatesInterface",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40355,
                                  "src": "16346:27:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ProtocolAffiliatesInterface_$40355_$",
                                    "typeString": "type(contract ProtocolAffiliatesInterface)"
                                  }
                                },
                                "id": 1100,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16346:50:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ProtocolAffiliatesInterface_$40355",
                                  "typeString": "contract ProtocolAffiliatesInterface"
                                }
                              },
                              "id": 1101,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "setAffiliatesReferrer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 40327,
                              "src": "16346:72:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$__$",
                                "typeString": "function (address,address) external"
                              }
                            },
                            "id": 1104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16346:99:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 1105,
                          "nodeType": "ExpressionStatement",
                          "src": "16346:99:5"
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1108,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1070,
                              "src": "16476:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1109,
                              "name": "leverageAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1072,
                              "src": "16488:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1110,
                              "name": "loanTokenSent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1074,
                              "src": "16508:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1111,
                              "name": "collateralTokenSent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1076,
                              "src": "16527:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1112,
                              "name": "collateralTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1078,
                              "src": "16552:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1113,
                              "name": "trader",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1080,
                              "src": "16580:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1114,
                              "name": "minReturn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1082,
                              "src": "16592:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1115,
                              "name": "loanDataBytes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1086,
                              "src": "16607:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 1107,
                            "name": "marginTrade",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1068,
                            "src": "16459:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (bytes32,uint256,uint256,uint256,address,address,uint256,bytes memory) returns (uint256,uint256)"
                            }
                          },
                          "id": 1116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16459:166:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 1092,
                        "id": 1117,
                        "nodeType": "Return",
                        "src": "16449:176:5"
                      }
                    ]
                  },
                  "documentation": "@notice Wrapper for marginTrade invoking setAffiliatesReferrer to track\n  referral trade by affiliates program.\n\t * @param loanId The ID of the loan, 0 for a new loan.\n@param leverageAmount The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.\n@param loanTokenSent The number of loan tokens provided by the user.\n@param collateralTokenSent The amount of collateral tokens provided by the user.\n@param collateralTokenAddress The token address of collateral.\n@param trader The account that performs this trade.\n@param minReturn Minimum position size in the collateral tokens\n@param affiliateReferrer The address of the referrer from affiliates program.\n@param loanDataBytes Additional loan data (not in use for token swaps).\n\t * @return New principal and new collateral added to trade.",
                  "id": 1119,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "marginTradeAffiliate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1087,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1070,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1119,
                        "src": "15724:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1069,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15724:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1072,
                        "name": "leverageAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1119,
                        "src": "15759:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1071,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15759:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1074,
                        "name": "loanTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 1119,
                        "src": "15858:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1073,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15858:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1076,
                        "name": "collateralTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 1119,
                        "src": "15883:27:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1075,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15883:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1078,
                        "name": "collateralTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 1119,
                        "src": "15914:30:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1077,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15914:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1080,
                        "name": "trader",
                        "nodeType": "VariableDeclaration",
                        "scope": 1119,
                        "src": "15948:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1079,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15948:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1082,
                        "name": "minReturn",
                        "nodeType": "VariableDeclaration",
                        "scope": 1119,
                        "src": "15966:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1081,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15966:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1084,
                        "name": "affiliateReferrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 1119,
                        "src": "16039:25:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1083,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16039:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1086,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 1119,
                        "src": "16122:28:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1085,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "16122:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15720:459:5"
                  },
                  "returnParameters": {
                    "id": 1092,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1089,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1119,
                        "src": "16216:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1088,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16216:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1091,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1119,
                        "src": "16228:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1090,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16228:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16211:89:5"
                  },
                  "scope": 3574,
                  "src": "15691:938:5",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1139,
                    "nodeType": "Block",
                    "src": "16994:74:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1129,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "17027:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "17027:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1131,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1121,
                              "src": "17039:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1132,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1123,
                              "src": "17044:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1135,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "17060:2:5",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1134,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17061:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                ],
                                "id": 1133,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "17052:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint256"
                              },
                              "id": 1136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17052:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1128,
                            "name": "_internalTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1295,
                            "src": "17005:21:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256,uint256) returns (bool)"
                            }
                          },
                          "id": 1137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17005:59:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1127,
                        "id": 1138,
                        "nodeType": "Return",
                        "src": "16998:66:5"
                      }
                    ]
                  },
                  "documentation": "@notice Transfer tokens wrapper.\nSets token owner the msg.sender.\nSets maximun allowance uint256(-1) to ensure tokens are always transferred.\n\t * @param _to The recipient of the tokens.\n@param _value The amount of tokens sent.\n@return Success true/false.\n",
                  "id": 1140,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1124,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1121,
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1140,
                        "src": "16941:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1120,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16941:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1123,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1140,
                        "src": "16954:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1122,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16954:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16940:29:5"
                  },
                  "returnParameters": {
                    "id": 1127,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1126,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1140,
                        "src": "16988:4:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1125,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16988:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16987:6:5"
                  },
                  "scope": 3574,
                  "src": "16923:145:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1175,
                    "nodeType": "Block",
                    "src": "17399:216:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1152,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1142,
                              "src": "17440:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1153,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1144,
                              "src": "17451:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1154,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1146,
                              "src": "17460:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1159,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "17552:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1160,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "17552:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1156,
                                        "name": "sovrynContractAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3827,
                                        "src": "17518:21:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1155,
                                      "name": "ProtocolLike",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4371,
                                      "src": "17505:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ProtocolLike_$4371_$",
                                        "typeString": "type(contract ProtocolLike)"
                                      }
                                    },
                                    "id": 1157,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17505:35:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ProtocolLike_$4371",
                                      "typeString": "contract ProtocolLike"
                                    }
                                  },
                                  "id": 1158,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isLoanPool",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4354,
                                  "src": "17505:46:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) view external returns (bool)"
                                  }
                                },
                                "id": 1161,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17505:58:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1166,
                                    "name": "allowed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 232,
                                    "src": "17580:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 1168,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1167,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1142,
                                    "src": "17588:5:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "17580:14:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 1171,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1169,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "17595:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 1170,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "17595:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17580:26:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "17505:101:5",
                              "trueExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1164,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "17574:2:5",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 1163,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17575:1:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 1162,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17566:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint256"
                                },
                                "id": 1165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17566:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "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_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1151,
                            "name": "_internalTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1295,
                            "src": "17413:21:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256,uint256) returns (bool)"
                            }
                          },
                          "id": 1173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17413:198:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1150,
                        "id": 1174,
                        "nodeType": "Return",
                        "src": "17403:208:5"
                      }
                    ]
                  },
                  "documentation": "@notice Moves `_value` loan tokens from `_from` to `_to` using the\nallowance mechanism. Calls internal _internalTransferFrom function.\n\t * @return A boolean value indicating whether the operation succeeded.",
                  "id": 1176,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1147,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1142,
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1176,
                        "src": "17325:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1141,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17325:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1144,
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1176,
                        "src": "17342:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1143,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17342:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1146,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1176,
                        "src": "17357:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1145,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17357:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17321:53:5"
                  },
                  "returnParameters": {
                    "id": 1150,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1149,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1176,
                        "src": "17393:4:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1148,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17393:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17392:6:5"
                  },
                  "scope": 3574,
                  "src": "17300:315:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1294,
                    "nodeType": "Block",
                    "src": "18134:1004:5",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1189,
                            "name": "_allowanceAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1184,
                            "src": "18142:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1192,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "18170:2:5",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1191,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18171:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 1190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18162:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 1193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18162:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18142:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1209,
                        "nodeType": "IfStatement",
                        "src": "18138:110:5",
                        "trueBody": {
                          "id": 1208,
                          "nodeType": "Block",
                          "src": "18175:73:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1206,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1195,
                                      "name": "allowed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 232,
                                      "src": "18180:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 1199,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1196,
                                      "name": "_from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1178,
                                      "src": "18188:5:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18180:14:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 1200,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1197,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "18195:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "18195:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "18180:26:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1203,
                                      "name": "_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1182,
                                      "src": "18230:6:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "3134",
                                      "id": 1204,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18238:4:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_5c4c6aa067b6f8e6cb38e6ab843832a94d1712d661a04d73c517d6a1931a9e5d",
                                        "typeString": "literal_string \"14\""
                                      },
                                      "value": "14"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_5c4c6aa067b6f8e6cb38e6ab843832a94d1712d661a04d73c517d6a1931a9e5d",
                                        "typeString": "literal_string \"14\""
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1201,
                                      "name": "_allowanceAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1184,
                                      "src": "18209:16:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1202,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42119,
                                    "src": "18209:20:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1205,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18209:34:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18180:63:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1207,
                              "nodeType": "ExpressionStatement",
                              "src": "18180:63:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1211,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1180,
                                "src": "18260:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1213,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18275:1:5",
                                    "subdenomination": null,
                                    "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": 1212,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "18267:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 1214,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18267:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "18260:17:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3135",
                              "id": 1216,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18279:4:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1d3be50b2bb17407dd170f1d5da128d1def30c6b1598d6a629e79b4775265526",
                                "typeString": "literal_string \"15\""
                              },
                              "value": "15"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1d3be50b2bb17407dd170f1d5da128d1def30c6b1598d6a629e79b4775265526",
                                "typeString": "literal_string \"15\""
                              }
                            ],
                            "id": 1210,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "18252:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18252:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1218,
                        "nodeType": "ExpressionStatement",
                        "src": "18252:32:5"
                      },
                      {
                        "assignments": [
                          1220
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1220,
                            "name": "_balancesFrom",
                            "nodeType": "VariableDeclaration",
                            "scope": 1294,
                            "src": "18289:21:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1219,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18289:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1224,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1221,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 226,
                            "src": "18313:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1223,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1222,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1178,
                            "src": "18322:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18313:15:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18289:39:5"
                      },
                      {
                        "assignments": [
                          1226
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1226,
                            "name": "_balancesFromNew",
                            "nodeType": "VariableDeclaration",
                            "scope": 1294,
                            "src": "18332:24:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1225,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18332:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1232,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1229,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1182,
                              "src": "18377:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3136",
                              "id": 1230,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18385:4:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_277ab82e5a4641341820a4a2933a62c1de997e42e92548657ae21b3728d580fe",
                                "typeString": "literal_string \"16\""
                              },
                              "value": "16"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_277ab82e5a4641341820a4a2933a62c1de997e42e92548657ae21b3728d580fe",
                                "typeString": "literal_string \"16\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1227,
                              "name": "_balancesFrom",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1220,
                              "src": "18359:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42119,
                            "src": "18359:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 1231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18359:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18332:58:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1233,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 226,
                              "src": "18394:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1235,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1234,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1178,
                              "src": "18403:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "18394:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1236,
                            "name": "_balancesFromNew",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1226,
                            "src": "18412:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18394:34:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1238,
                        "nodeType": "ExpressionStatement",
                        "src": "18394:34:5"
                      },
                      {
                        "assignments": [
                          1240
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1240,
                            "name": "_balancesTo",
                            "nodeType": "VariableDeclaration",
                            "scope": 1294,
                            "src": "18433:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1239,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18433:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1244,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1241,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 226,
                            "src": "18455:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1243,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1242,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1180,
                            "src": "18464:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18455:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18433:35:5"
                      },
                      {
                        "assignments": [
                          1246
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1246,
                            "name": "_balancesToNew",
                            "nodeType": "VariableDeclaration",
                            "scope": 1294,
                            "src": "18472:22:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1245,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18472:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1251,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1249,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1182,
                              "src": "18513:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1247,
                              "name": "_balancesTo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1240,
                              "src": "18497:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1248,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42076,
                            "src": "18497:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 1250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18497:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18472:48:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1252,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 226,
                              "src": "18524:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1254,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1253,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1180,
                              "src": "18533:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "18524:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1255,
                            "name": "_balancesToNew",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1246,
                            "src": "18540:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18524:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1257,
                        "nodeType": "ExpressionStatement",
                        "src": "18524:30:5"
                      },
                      {
                        "assignments": [
                          1259
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1259,
                            "name": "_currentPrice",
                            "nodeType": "VariableDeclaration",
                            "scope": 1294,
                            "src": "18596:21:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1258,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18596:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1262,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1260,
                            "name": "tokenPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1455,
                            "src": "18620:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 1261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18620:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18596:36:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1265,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1263,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1178,
                              "src": "18861:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1264,
                              "name": "liquidityMiningAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3839,
                              "src": "18870:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "18861:31:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1268,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1266,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1180,
                              "src": "18896:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1267,
                              "name": "liquidityMiningAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3839,
                              "src": "18903:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "18896:29:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "18861:64:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1285,
                        "nodeType": "IfStatement",
                        "src": "18857:225:5",
                        "trueBody": {
                          "id": 1284,
                          "nodeType": "Block",
                          "src": "18927:155:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1271,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1178,
                                    "src": "18951:5:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1272,
                                    "name": "_balancesFrom",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1220,
                                    "src": "18958:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1273,
                                    "name": "_balancesFromNew",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1226,
                                    "src": "18973:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1274,
                                    "name": "_currentPrice",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1259,
                                    "src": "18991:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1270,
                                  "name": "_updateCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1352,
                                  "src": "18932:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 1275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18932:73:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1276,
                              "nodeType": "ExpressionStatement",
                              "src": "18932:73:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1278,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1180,
                                    "src": "19029:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1279,
                                    "name": "_balancesTo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1240,
                                    "src": "19034:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1280,
                                    "name": "_balancesToNew",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1246,
                                    "src": "19047:14:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1281,
                                    "name": "_currentPrice",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1259,
                                    "src": "19063:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1277,
                                  "name": "_updateCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1352,
                                  "src": "19010:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 1282,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19010:67:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1283,
                              "nodeType": "ExpressionStatement",
                              "src": "19010:67:5"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1287,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1178,
                              "src": "19100:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1288,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1180,
                              "src": "19107:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1289,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1182,
                              "src": "19112:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1286,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 184,
                            "src": "19091:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19091:28:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1291,
                        "nodeType": "EmitStatement",
                        "src": "19086:33:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 1292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "19130:4:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 1188,
                        "id": 1293,
                        "nodeType": "Return",
                        "src": "19123:11:5"
                      }
                    ]
                  },
                  "documentation": "@notice Transfer tokens, low level.\nChecks allowance, updates sender and recipient balances\nand updates checkpoints too.\n\t * @param _from The tokens' owner.\n@param _to The recipient of the tokens.\n@param _value The amount of tokens sent.\n@param _allowanceAmount The amount of tokens allowed to transfer.\n\t * @return Success true/false.\n",
                  "id": 1295,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_internalTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1185,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1178,
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1295,
                        "src": "18032:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1177,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18032:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1180,
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1295,
                        "src": "18049:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1179,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18049:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1182,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1295,
                        "src": "18064:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1181,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18064:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1184,
                        "name": "_allowanceAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1295,
                        "src": "18082:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1183,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18082:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18028:81:5"
                  },
                  "returnParameters": {
                    "id": 1188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1187,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1295,
                        "src": "18128:4:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1186,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18128:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18127:6:5"
                  },
                  "scope": 3574,
                  "src": "17998:1140:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1351,
                    "nodeType": "Block",
                    "src": "19725:417:5",
                    "statements": [
                      {
                        "assignments": [
                          1307
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1307,
                            "name": "slot",
                            "nodeType": "VariableDeclaration",
                            "scope": 1351,
                            "src": "19772:12:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 1306,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "19772:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1315,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1311,
                                  "name": "_user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1297,
                                  "src": "19814:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1312,
                                  "name": "iToken_ProfitSoFar",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 609,
                                  "src": "19821:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1309,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "19797:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 1310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "19797:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 1313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19797:43:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1308,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "19787:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 1314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19787:54:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19772:69:5"
                      },
                      {
                        "assignments": [
                          1317
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1317,
                            "name": "_currentProfit",
                            "nodeType": "VariableDeclaration",
                            "scope": 1351,
                            "src": "19846:21:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1316,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19846:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1318,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19846:21:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1319,
                            "name": "_newBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1301,
                            "src": "19875:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1320,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19890:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19875:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1327,
                              "name": "_oldBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1299,
                              "src": "19930:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19945:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "19930:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 1342,
                          "nodeType": "IfStatement",
                          "src": "19926:118:5",
                          "trueBody": {
                            "id": 1341,
                            "nodeType": "Block",
                            "src": "19948:96:5",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1339,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 1330,
                                    "name": "_currentProfit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1317,
                                    "src": "19953:14:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1332,
                                        "name": "slot",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1307,
                                        "src": "19980:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1333,
                                        "name": "_oldBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1299,
                                        "src": "19986:11:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1334,
                                        "name": "_currentPrice",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1303,
                                        "src": "19999:13:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 1335,
                                          "name": "checkpointPrices_",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 506,
                                          "src": "20014:17:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 1337,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 1336,
                                          "name": "_user",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1297,
                                          "src": "20032:5:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "20014:24:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1331,
                                      "name": "_profitOf",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1426,
                                      "src": "19970:9:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_int256_$",
                                        "typeString": "function (bytes32,uint256,uint256,uint256) view returns (int256)"
                                      }
                                    },
                                    "id": 1338,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19970:69:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "19953:86:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 1340,
                                "nodeType": "ExpressionStatement",
                                "src": "19953:86:5"
                              }
                            ]
                          }
                        },
                        "id": 1343,
                        "nodeType": "IfStatement",
                        "src": "19871:173:5",
                        "trueBody": {
                          "id": 1326,
                          "nodeType": "Block",
                          "src": "19893:27:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1324,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1322,
                                  "name": "_currentPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1303,
                                  "src": "19898:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1323,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19914:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "19898:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1325,
                              "nodeType": "ExpressionStatement",
                              "src": "19898:17:5"
                            }
                          ]
                        }
                      },
                      {
                        "externalReferences": [
                          {
                            "slot": {
                              "declaration": 1307,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "20069:4:5",
                              "valueSize": 1
                            }
                          },
                          {
                            "_currentProfit": {
                              "declaration": 1317,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "20075:14:5",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 1344,
                        "nodeType": "InlineAssembly",
                        "operations": "{ sstore(slot, _currentProfit) }",
                        "src": "20048:46:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1345,
                              "name": "checkpointPrices_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 506,
                              "src": "20098:17:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1347,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1346,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1297,
                              "src": "20116:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "20098:24:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1348,
                            "name": "_currentPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1303,
                            "src": "20125:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20098:40:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1350,
                        "nodeType": "ExpressionStatement",
                        "src": "20098:40:5"
                      }
                    ]
                  },
                  "documentation": "@notice Update the user's checkpoint price and profit so far.\nIn this loan token contract, whenever some tokens are minted or burned,\nthe _updateCheckpoints() function is invoked to update the stats to\nreflect the balance changes.\n\t * @param _user The user address.\n@param _oldBalance The user's previous balance.\n@param _newBalance The user's updated balance.\n@param _currentPrice The current loan token price.\n",
                  "id": 1352,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateCheckpoints",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1304,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1297,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 1352,
                        "src": "19628:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1296,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19628:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1299,
                        "name": "_oldBalance",
                        "nodeType": "VariableDeclaration",
                        "scope": 1352,
                        "src": "19645:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1298,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19645:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1301,
                        "name": "_newBalance",
                        "nodeType": "VariableDeclaration",
                        "scope": 1352,
                        "src": "19668:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1300,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19668:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1303,
                        "name": "_currentPrice",
                        "nodeType": "VariableDeclaration",
                        "scope": 1352,
                        "src": "19691:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1302,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19691:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19624:91:5"
                  },
                  "returnParameters": {
                    "id": 1305,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19725:0:5"
                  },
                  "scope": 3574,
                  "src": "19597:545:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1381,
                    "nodeType": "Block",
                    "src": "20381:222:5",
                    "statements": [
                      {
                        "assignments": [
                          1360
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1360,
                            "name": "slot",
                            "nodeType": "VariableDeclaration",
                            "scope": 1381,
                            "src": "20428:12:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 1359,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "20428:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1368,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1364,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1354,
                                  "src": "20470:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1365,
                                  "name": "iToken_ProfitSoFar",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 609,
                                  "src": "20476:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1362,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "20453:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 1363,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "20453:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 1366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20453:42:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1361,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "20443:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 1367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20443:53:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20428:68:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1370,
                              "name": "slot",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1360,
                              "src": "20539:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1371,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 226,
                                "src": "20545:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 1373,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1372,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1354,
                                "src": "20554:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20545:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1374,
                                "name": "tokenPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1455,
                                "src": "20561:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 1375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20561:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1376,
                                "name": "checkpointPrices_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 506,
                                "src": "20575:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 1378,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1377,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1354,
                                "src": "20593:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20575:23:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1369,
                            "name": "_profitOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1426,
                            "src": "20529:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (bytes32,uint256,uint256,uint256) view returns (int256)"
                            }
                          },
                          "id": 1379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20529:70:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 1358,
                        "id": 1380,
                        "nodeType": "Return",
                        "src": "20522:77:5"
                      }
                    ]
                  },
                  "documentation": "@notice Wrapper for internal _profitOf low level function.\n@param user The user address.\n@return The profit of a user.\n",
                  "id": 1382,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "profitOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1354,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 1382,
                        "src": "20336:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1353,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20336:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20335:14:5"
                  },
                  "returnParameters": {
                    "id": 1358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1357,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1382,
                        "src": "20373:6:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 1356,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20373:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20372:8:5"
                  },
                  "scope": 3574,
                  "src": "20318:285:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1425,
                    "nodeType": "Block",
                    "src": "21070:229:5",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1395,
                            "name": "_checkpointPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1390,
                            "src": "21078:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1396,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21098:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "21078:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1401,
                        "nodeType": "IfStatement",
                        "src": "21074:45:5",
                        "trueBody": {
                          "id": 1400,
                          "nodeType": "Block",
                          "src": "21101:18:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21113:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 1394,
                              "id": 1399,
                              "nodeType": "Return",
                              "src": "21106:8:5"
                            }
                          ]
                        }
                      },
                      {
                        "externalReferences": [
                          {
                            "profitSoFar": {
                              "declaration": 1393,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "21137:11:5",
                              "valueSize": 1
                            }
                          },
                          {
                            "slot": {
                              "declaration": 1384,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "21158:4:5",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 1402,
                        "nodeType": "InlineAssembly",
                        "operations": "{ profitSoFar := sload(slot) }",
                        "src": "21123:44:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1403,
                            "name": "profitSoFar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1393,
                            "src": "21171:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1421,
                                "name": "profitSoFar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1393,
                                "src": "21283:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1418,
                                    "name": "sWEI_PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 468,
                                    "src": "21263:14:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1414,
                                            "name": "_balance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1386,
                                            "src": "21248:8:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 1413,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "21241:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_int256_$",
                                            "typeString": "type(int256)"
                                          },
                                          "typeName": "int256"
                                        },
                                        "id": 1415,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21241:16:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 1409,
                                                "name": "_checkpointPrice",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1390,
                                                "src": "21218:16:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 1408,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "21211:6:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_int256_$",
                                                "typeString": "type(int256)"
                                              },
                                              "typeName": "int256"
                                            },
                                            "id": 1410,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21211:24:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 1405,
                                                "name": "_currentPrice",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1388,
                                                "src": "21192:13:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 1404,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "21185:6:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_int256_$",
                                                "typeString": "type(int256)"
                                              },
                                              "typeName": "int256"
                                            },
                                            "id": 1406,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21185:21:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "id": 1407,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42443,
                                          "src": "21185:25:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                            "typeString": "function (int256,int256) pure returns (int256)"
                                          }
                                        },
                                        "id": 1411,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21185:51:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "id": 1412,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42365,
                                      "src": "21185:55:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                        "typeString": "function (int256,int256) pure returns (int256)"
                                      }
                                    },
                                    "id": 1416,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "21185:73:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "id": 1417,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42404,
                                  "src": "21185:77:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                    "typeString": "function (int256,int256) pure returns (int256)"
                                  }
                                },
                                "id": 1419,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21185:93:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42482,
                              "src": "21185:97:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 1422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21185:110:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "21171:124:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1424,
                        "nodeType": "ExpressionStatement",
                        "src": "21171:124:5"
                      }
                    ]
                  },
                  "documentation": "@notice Profit calculation based on checkpoints of price.\n@param slot The user slot.\n@param _balance The user balance.\n@param _currentPrice The current price of the loan token.\n@param _checkpointPrice The price of the loan token on checkpoint.\n@return The profit of a user.\n",
                  "id": 1426,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_profitOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1391,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1384,
                        "name": "slot",
                        "nodeType": "VariableDeclaration",
                        "scope": 1426,
                        "src": "20938:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1383,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "20938:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1386,
                        "name": "_balance",
                        "nodeType": "VariableDeclaration",
                        "scope": 1426,
                        "src": "20954:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1385,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20954:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1388,
                        "name": "_currentPrice",
                        "nodeType": "VariableDeclaration",
                        "scope": 1426,
                        "src": "20974:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20974:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1390,
                        "name": "_checkpointPrice",
                        "nodeType": "VariableDeclaration",
                        "scope": 1426,
                        "src": "20999:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1389,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20999:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20934:92:5"
                  },
                  "returnParameters": {
                    "id": 1394,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1393,
                        "name": "profitSoFar",
                        "nodeType": "VariableDeclaration",
                        "scope": 1426,
                        "src": "21050:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 1392,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21050:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21049:20:5"
                  },
                  "scope": 3574,
                  "src": "20916:383:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1454,
                    "nodeType": "Block",
                    "src": "21477:187:5",
                    "statements": [
                      {
                        "assignments": [
                          1432
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1432,
                            "name": "interestUnPaid",
                            "nodeType": "VariableDeclaration",
                            "scope": 1454,
                            "src": "21481:22:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1431,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21481:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1433,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21481:22:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          },
                          "id": 1439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1434,
                            "name": "lastSettleTime_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 498,
                            "src": "21511:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint88",
                              "typeString": "uint88"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1436,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "21537:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "21537:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "21530:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint88_$",
                                "typeString": "type(uint88)"
                              },
                              "typeName": "uint88"
                            },
                            "id": 1438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21530:23:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint88",
                              "typeString": "uint88"
                            }
                          },
                          "src": "21511:42:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1447,
                        "nodeType": "IfStatement",
                        "src": "21507:96:5",
                        "trueBody": {
                          "id": 1446,
                          "nodeType": "Block",
                          "src": "21555:48:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    null,
                                    {
                                      "argumentTypes": null,
                                      "id": 1440,
                                      "name": "interestUnPaid",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1432,
                                      "src": "21563:14:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 1441,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "21560:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$_t_uint256_$",
                                    "typeString": "tuple(,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1442,
                                    "name": "_getAllInterest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3244,
                                    "src": "21581:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                                      "typeString": "function () view returns (uint256,uint256)"
                                    }
                                  },
                                  "id": 1443,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21581:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "src": "21560:38:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1445,
                              "nodeType": "ExpressionStatement",
                              "src": "21560:38:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1450,
                                  "name": "interestUnPaid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1432,
                                  "src": "21644:14:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1449,
                                "name": "_totalAssetSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3321,
                                "src": "21626:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) view returns (uint256)"
                                }
                              },
                              "id": 1451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21626:33:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1448,
                            "name": "_tokenPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2918,
                            "src": "21614:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 1452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21614:46:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1430,
                        "id": 1453,
                        "nodeType": "Return",
                        "src": "21607:53:5"
                      }
                    ]
                  },
                  "documentation": "@notice Loan token price calculation considering unpaid interests.\n@return The loan token price.\n",
                  "id": 1455,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenPrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1427,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21438:2:5"
                  },
                  "returnParameters": {
                    "id": 1430,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1429,
                        "name": "price",
                        "nodeType": "VariableDeclaration",
                        "scope": 1455,
                        "src": "21462:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1428,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21462:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21461:15:5"
                  },
                  "scope": 3574,
                  "src": "21419:245:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1466,
                    "nodeType": "Block",
                    "src": "21919:39:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1462,
                            "name": "checkpointPrices_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 506,
                            "src": "21930:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1464,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1463,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1457,
                            "src": "21948:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "21930:24:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1461,
                        "id": 1465,
                        "nodeType": "Return",
                        "src": "21923:31:5"
                      }
                    ]
                  },
                  "documentation": "@notice Getter for the price checkpoint mapping.\n@param _user The user account as the mapping index.\n@return The price on the checkpoint for this user.\n",
                  "id": 1467,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "checkpointPrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1458,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1457,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 1467,
                        "src": "21868:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1456,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21868:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21867:15:5"
                  },
                  "returnParameters": {
                    "id": 1461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1460,
                        "name": "price",
                        "nodeType": "VariableDeclaration",
                        "scope": 1467,
                        "src": "21904:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1459,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21904:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21903:15:5"
                  },
                  "scope": 3574,
                  "src": "21843:115:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1492,
                    "nodeType": "Block",
                    "src": "22176:170:5",
                    "statements": [
                      {
                        "assignments": [
                          1473
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1473,
                            "name": "totalSupply",
                            "nodeType": "VariableDeclaration",
                            "scope": 1492,
                            "src": "22180:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1472,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22180:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1477,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22220:1:5",
                              "subdenomination": null,
                              "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": 1474,
                            "name": "_totalAssetSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3321,
                            "src": "22202:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 1476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22202:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22180:42:5"
                      },
                      {
                        "assignments": [
                          1479
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1479,
                            "name": "totalBorrow",
                            "nodeType": "VariableDeclaration",
                            "scope": 1492,
                            "src": "22226:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1478,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22226:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1482,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1480,
                            "name": "totalAssetBorrow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1594,
                            "src": "22248:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 1481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22248:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22226:40:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1483,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1473,
                            "src": "22274:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1484,
                            "name": "totalBorrow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1479,
                            "src": "22288:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22274:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1491,
                        "nodeType": "IfStatement",
                        "src": "22270:73:5",
                        "trueBody": {
                          "id": 1490,
                          "nodeType": "Block",
                          "src": "22301:42:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1488,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1486,
                                  "name": "totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1473,
                                  "src": "22313:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1487,
                                  "name": "totalBorrow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1479,
                                  "src": "22327:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "22313:25:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 1471,
                              "id": 1489,
                              "nodeType": "Return",
                              "src": "22306:32:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Get current liquidity.\nA part of total funds supplied are borrowed. Liquidity = supply - borrow\n@return The market liquidity.\n",
                  "id": 1493,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "marketLiquidity",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1468,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22143:2:5"
                  },
                  "returnParameters": {
                    "id": 1471,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1470,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1493,
                        "src": "22167:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1469,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22167:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22166:9:5"
                  },
                  "scope": 3574,
                  "src": "22119:227:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1503,
                    "nodeType": "Block",
                    "src": "22514:57:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1499,
                                "name": "totalAssetBorrow",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1594,
                                "src": "22548:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 1500,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22548:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1498,
                            "name": "_avgBorrowInterestRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2949,
                            "src": "22525:22:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 1501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22525:42:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1497,
                        "id": 1502,
                        "nodeType": "Return",
                        "src": "22518:49:5"
                      }
                    ]
                  },
                  "documentation": "@notice Wrapper for average borrow interest.\n@return The average borrow interest.\n",
                  "id": 1504,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "avgBorrowInterestRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1494,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22481:2:5"
                  },
                  "returnParameters": {
                    "id": 1497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1496,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1504,
                        "src": "22505:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1495,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22505:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22504:9:5"
                  },
                  "scope": 3574,
                  "src": "22451:120:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1513,
                    "nodeType": "Block",
                    "src": "22817:41:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22852:1:5",
                              "subdenomination": null,
                              "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": 1509,
                            "name": "_nextBorrowInterestRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3050,
                            "src": "22828:23:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 1511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22828:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1508,
                        "id": 1512,
                        "nodeType": "Return",
                        "src": "22821:33:5"
                      }
                    ]
                  },
                  "documentation": "@notice Get borrow interest rate.\nThe minimum rate the next base protocol borrower will receive\nfor variable-rate loans.\n@return The borrow interest rate.\n",
                  "id": 1514,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "borrowInterestRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1505,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22784:2:5"
                  },
                  "returnParameters": {
                    "id": 1508,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1507,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1514,
                        "src": "22808:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1506,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22808:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22807:9:5"
                  },
                  "scope": 3574,
                  "src": "22757:101:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1525,
                    "nodeType": "Block",
                    "src": "23102:52:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1522,
                              "name": "borrowAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1516,
                              "src": "23137:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1521,
                            "name": "_nextBorrowInterestRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3050,
                            "src": "23113:23:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 1523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23113:37:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1520,
                        "id": 1524,
                        "nodeType": "Return",
                        "src": "23106:44:5"
                      }
                    ]
                  },
                  "documentation": "@notice Public wrapper for internal call.\n@param borrowAmount The amount of tokens to borrow.\n@return The next borrow interest rate.\n",
                  "id": 1526,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "nextBorrowInterestRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1517,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1516,
                        "name": "borrowAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1526,
                        "src": "23050:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1515,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23050:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23049:22:5"
                  },
                  "returnParameters": {
                    "id": 1520,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1519,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1526,
                        "src": "23093:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1518,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23093:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23092:9:5"
                  },
                  "scope": 3574,
                  "src": "23018:136:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1537,
                    "nodeType": "Block",
                    "src": "23354:60:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1533,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23407:1:5",
                                  "subdenomination": null,
                                  "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": 1532,
                                "name": "_totalAssetSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3321,
                                "src": "23389:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) view returns (uint256)"
                                }
                              },
                              "id": 1534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23389:20:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1531,
                            "name": "totalSupplyInterestRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1578,
                            "src": "23365:23:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 1535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23365:45:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1530,
                        "id": 1536,
                        "nodeType": "Return",
                        "src": "23358:52:5"
                      }
                    ]
                  },
                  "documentation": "@notice Get interest rate.\n\t * @return Interest that lenders are currently receiving when supplying to\nthe pool.\n",
                  "id": 1538,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supplyInterestRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1527,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23321:2:5"
                  },
                  "returnParameters": {
                    "id": 1530,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1529,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1538,
                        "src": "23345:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1528,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23345:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23344:9:5"
                  },
                  "scope": 3574,
                  "src": "23294:120:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1554,
                    "nodeType": "Block",
                    "src": "23730:78:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1550,
                                  "name": "supplyAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1540,
                                  "src": "23790:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1547,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "23783:1:5",
                                      "subdenomination": null,
                                      "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": 1546,
                                    "name": "_totalAssetSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3321,
                                    "src": "23765:17:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 1548,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23765:20:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1549,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42076,
                                "src": "23765:24:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23765:38:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1545,
                            "name": "totalSupplyInterestRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1578,
                            "src": "23741:23:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 1552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23741:63:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1544,
                        "id": 1553,
                        "nodeType": "Return",
                        "src": "23734:70:5"
                      }
                    ]
                  },
                  "documentation": "@notice Get interest rate w/ added supply.\n@param supplyAmount The amount of tokens supplied.\n@return Interest that lenders are currently receiving when supplying\na given amount of tokens to the pool.\n",
                  "id": 1555,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "nextSupplyInterestRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1541,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1540,
                        "name": "supplyAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1555,
                        "src": "23678:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1539,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23678:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23677:22:5"
                  },
                  "returnParameters": {
                    "id": 1544,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1543,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1555,
                        "src": "23721:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1542,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23721:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23720:9:5"
                  },
                  "scope": 3574,
                  "src": "23646:162:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1577,
                    "nodeType": "Block",
                    "src": "24140:135:5",
                    "statements": [
                      {
                        "assignments": [
                          1563
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1563,
                            "name": "assetBorrow",
                            "nodeType": "VariableDeclaration",
                            "scope": 1577,
                            "src": "24144:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1562,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "24144:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1566,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1564,
                            "name": "totalAssetBorrow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1594,
                            "src": "24166:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 1565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24166:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24144:40:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1567,
                            "name": "assetBorrow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1563,
                            "src": "24192:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1568,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24207:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "24192:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1576,
                        "nodeType": "IfStatement",
                        "src": "24188:84:5",
                        "trueBody": {
                          "id": 1575,
                          "nodeType": "Block",
                          "src": "24210:62:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1571,
                                    "name": "assetBorrow",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1563,
                                    "src": "24242:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1572,
                                    "name": "assetSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1557,
                                    "src": "24255:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1570,
                                  "name": "_supplyInterestRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2996,
                                  "src": "24222:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) view returns (uint256)"
                                  }
                                },
                                "id": 1573,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24222:45:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 1561,
                              "id": 1574,
                              "nodeType": "Return",
                              "src": "24215:52:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Get interest rate w/ added supply assets.\n@param assetSupply The amount of loan tokens supplied.\n@return Interest that lenders are currently receiving when supplying\na given amount of loan tokens to the pool.\n",
                  "id": 1578,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupplyInterestRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1558,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1557,
                        "name": "assetSupply",
                        "nodeType": "VariableDeclaration",
                        "scope": 1578,
                        "src": "24089:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1556,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24089:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24088:21:5"
                  },
                  "returnParameters": {
                    "id": 1561,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1560,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1578,
                        "src": "24131:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1559,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24131:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24130:9:5"
                  },
                  "scope": 3574,
                  "src": "24056:219:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1593,
                    "nodeType": "Block",
                    "src": "24803:101:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1588,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45050,
                                  "src": "24876:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                    "typeString": "contract LoanTokenLogicStandard"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                    "typeString": "contract LoanTokenLogicStandard"
                                  }
                                ],
                                "id": 1587,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "24868:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24868:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1590,
                              "name": "loanTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 476,
                              "src": "24883:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1584,
                                  "name": "sovrynContractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3827,
                                  "src": "24827:21:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1583,
                                "name": "ProtocolLike",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4371,
                                "src": "24814:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ProtocolLike_$4371_$",
                                  "typeString": "type(contract ProtocolLike)"
                                }
                              },
                              "id": 1585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24814:35:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ProtocolLike_$4371",
                                "typeString": "contract ProtocolLike"
                              }
                            },
                            "id": 1586,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getTotalPrincipal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4271,
                            "src": "24814:53:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 1591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24814:86:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1582,
                        "id": 1592,
                        "nodeType": "Return",
                        "src": "24807:93:5"
                      }
                    ]
                  },
                  "documentation": "@notice Get the total amount of loan tokens on debt.\nCalls protocol getTotalPrincipal function.\nIn the context of borrowing, principal is the initial size of a loan.\nIt can also be the amount still owed on a loan. If you take out a\n$50,000 mortgage, for example, the principal is $50,000. If you pay off\n$30,000, the principal balance now consists of the remaining $20,000.\n\t * @return The total amount of loan tokens on debt.\n",
                  "id": 1594,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalAssetBorrow",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1579,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24770:2:5"
                  },
                  "returnParameters": {
                    "id": 1582,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1581,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1594,
                        "src": "24794:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1580,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24794:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24793:9:5"
                  },
                  "scope": 3574,
                  "src": "24745:159:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1620,
                    "nodeType": "Block",
                    "src": "25149:174:5",
                    "statements": [
                      {
                        "assignments": [
                          1600
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1600,
                            "name": "interestUnPaid",
                            "nodeType": "VariableDeclaration",
                            "scope": 1620,
                            "src": "25153:22:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1599,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25153:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1601,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25153:22:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          },
                          "id": 1607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1602,
                            "name": "lastSettleTime_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 498,
                            "src": "25183:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint88",
                              "typeString": "uint88"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1604,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "25209:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "25209:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "25202:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint88_$",
                                "typeString": "type(uint88)"
                              },
                              "typeName": "uint88"
                            },
                            "id": 1606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25202:23:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint88",
                              "typeString": "uint88"
                            }
                          },
                          "src": "25183:42:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1615,
                        "nodeType": "IfStatement",
                        "src": "25179:96:5",
                        "trueBody": {
                          "id": 1614,
                          "nodeType": "Block",
                          "src": "25227:48:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    null,
                                    {
                                      "argumentTypes": null,
                                      "id": 1608,
                                      "name": "interestUnPaid",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1600,
                                      "src": "25235:14:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 1609,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "25232:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$_t_uint256_$",
                                    "typeString": "tuple(,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1610,
                                    "name": "_getAllInterest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3244,
                                    "src": "25253:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                                      "typeString": "function () view returns (uint256,uint256)"
                                    }
                                  },
                                  "id": 1611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25253:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "src": "25232:38:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1613,
                              "nodeType": "ExpressionStatement",
                              "src": "25232:38:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1617,
                              "name": "interestUnPaid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1600,
                              "src": "25304:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1616,
                            "name": "_totalAssetSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3321,
                            "src": "25286:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 1618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25286:33:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1598,
                        "id": 1619,
                        "nodeType": "Return",
                        "src": "25279:40:5"
                      }
                    ]
                  },
                  "documentation": "@notice Get the total amount of loan tokens on supply.\n@dev Wrapper for internal _totalAssetSupply function.\n@return The total amount of loan tokens on supply.\n",
                  "id": 1621,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalAssetSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1595,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25116:2:5"
                  },
                  "returnParameters": {
                    "id": 1598,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1597,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1621,
                        "src": "25140:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1596,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25140:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "25139:9:5"
                  },
                  "scope": 3574,
                  "src": "25091:232:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1674,
                    "nodeType": "Block",
                    "src": "25655:411:5",
                    "statements": [
                      {
                        "assignments": [
                          1629
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1629,
                            "name": "interestForDuration",
                            "nodeType": "VariableDeclaration",
                            "scope": 1674,
                            "src": "25810:27:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1628,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25810:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1637,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "333635",
                              "id": 1635,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "25865:3:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_365_by_1",
                                "typeString": "int_const 365"
                              },
                              "value": "365"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_365_by_1",
                                "typeString": "int_const 365"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "3238",
                                  "id": 1632,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25857:2:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_28_by_1",
                                    "typeString": "int_const 28"
                                  },
                                  "value": "28"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_28_by_1",
                                    "typeString": "int_const 28"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1630,
                                  "name": "maxScaleRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 490,
                                  "src": "25840:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "25840:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25840:20:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "25840:24:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 1636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25840:29:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25810:59:5"
                      },
                      {
                        "assignments": [
                          1639
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1639,
                            "name": "factor",
                            "nodeType": "VariableDeclaration",
                            "scope": 1674,
                            "src": "25873:14:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1638,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25873:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1648,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1646,
                              "name": "interestForDuration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1629,
                              "src": "25910:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                    "typeString": "int_const 100000000000000000000"
                                  },
                                  "id": 1643,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 1641,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "25898:2:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3230",
                                    "id": 1642,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "25902:2:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_20_by_1",
                                      "typeString": "int_const 20"
                                    },
                                    "value": "20"
                                  },
                                  "src": "25898:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                    "typeString": "int_const 100000000000000000000"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                    "typeString": "int_const 100000000000000000000"
                                  }
                                ],
                                "id": 1640,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "25890:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint256"
                              },
                              "id": 1644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25890:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1645,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "25890:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 1647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25890:40:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25873:57:5"
                      },
                      {
                        "assignments": [
                          1650
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1650,
                            "name": "maxLoanSize",
                            "nodeType": "VariableDeclaration",
                            "scope": 1674,
                            "src": "25934:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1649,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25934:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1661,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              },
                              "id": 1659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130",
                                "id": 1657,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "25990:2:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3230",
                                "id": 1658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "25994:2:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_20_by_1",
                                  "typeString": "int_const 20"
                                },
                                "value": "20"
                              },
                              "src": "25990:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1654,
                                  "name": "factor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1639,
                                  "src": "25978:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1651,
                                    "name": "marketLiquidity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1493,
                                    "src": "25956:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view returns (uint256)"
                                    }
                                  },
                                  "id": 1652,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25956:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1653,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "25956:21:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25956:29:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "25956:33:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 1660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25956:41:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25934:63:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1662,
                            "name": "maxEscrowAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1626,
                            "src": "26001:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1670,
                                "name": "leverageAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1623,
                                "src": "26047:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    },
                                    "id": 1667,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 1665,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "26035:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3138",
                                      "id": 1666,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "26039:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_18_by_1",
                                        "typeString": "int_const 18"
                                      },
                                      "value": "18"
                                    },
                                    "src": "26035:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1663,
                                    "name": "maxLoanSize",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1650,
                                    "src": "26019:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1664,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "26019:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1668,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26019:23:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1669,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "26019:27:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1671,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26019:43:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26001:61:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1673,
                        "nodeType": "ExpressionStatement",
                        "src": "26001:61:5"
                      }
                    ]
                  },
                  "documentation": "@notice Compute the maximum deposit amount under current market conditions.\n@dev maxEscrowAmount = liquidity * (100 - interestForDuration) / 100\n@param leverageAmount The chosen multiplier with 18 decimals.\n",
                  "id": 1675,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMaxEscrowAmount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1624,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1623,
                        "name": "leverageAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1675,
                        "src": "25585:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1622,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25585:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "25584:24:5"
                  },
                  "returnParameters": {
                    "id": 1627,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1626,
                        "name": "maxEscrowAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1675,
                        "src": "25630:23:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1625,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25630:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "25629:25:5"
                  },
                  "scope": 3574,
                  "src": "25557:509:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1721,
                    "nodeType": "Block",
                    "src": "26239:262:5",
                    "statements": [
                      {
                        "assignments": [
                          1683
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1683,
                            "name": "balanceOnLM",
                            "nodeType": "VariableDeclaration",
                            "scope": 1721,
                            "src": "26243:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1682,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "26243:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1685,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "26265:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26243:23:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1690,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1686,
                            "name": "liquidityMiningAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3839,
                            "src": "26274:22:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1688,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26308:1:5",
                                "subdenomination": null,
                                "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": 1687,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "26300:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 1689,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26300:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "26274:36:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1704,
                        "nodeType": "IfStatement",
                        "src": "26270:153:5",
                        "trueBody": {
                          "id": 1703,
                          "nodeType": "Block",
                          "src": "26312:111:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1691,
                                  "name": "balanceOnLM",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1683,
                                  "src": "26317:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1697,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 45050,
                                          "src": "26404:4:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                            "typeString": "contract LoanTokenLogicStandard"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                            "typeString": "contract LoanTokenLogicStandard"
                                          }
                                        ],
                                        "id": 1696,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "26396:7:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 1698,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26396:13:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1699,
                                      "name": "_owner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1677,
                                      "src": "26411:6:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1693,
                                          "name": "liquidityMiningAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3839,
                                          "src": "26348:22:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 1692,
                                        "name": "ILiquidityMining",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6369,
                                        "src": "26331:16:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_ILiquidityMining_$6369_$",
                                          "typeString": "type(contract ILiquidityMining)"
                                        }
                                      },
                                      "id": 1694,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26331:40:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ILiquidityMining_$6369",
                                        "typeString": "contract ILiquidityMining"
                                      }
                                    },
                                    "id": 1695,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getUserPoolTokenBalance",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6368,
                                    "src": "26331:64:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address,address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 1700,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26331:87:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "26317:101:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1702,
                              "nodeType": "ExpressionStatement",
                              "src": "26317:101:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              },
                              "id": 1718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130",
                                "id": 1716,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26490:2:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3138",
                                "id": 1717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26494:2:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_18_by_1",
                                  "typeString": "int_const 18"
                                },
                                "value": "18"
                              },
                              "src": "26490:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1712,
                                    "name": "tokenPrice",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1455,
                                    "src": "26472:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view returns (uint256)"
                                    }
                                  },
                                  "id": 1713,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26472:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1709,
                                      "name": "balanceOnLM",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1683,
                                      "src": "26455:11:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1706,
                                          "name": "_owner",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1677,
                                          "src": "26443:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 1705,
                                        "name": "balanceOf",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 254,
                                        "src": "26433:9:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                          "typeString": "function (address) view returns (uint256)"
                                        }
                                      },
                                      "id": 1707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26433:17:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1708,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "26433:21:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26433:34:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "26433:38:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1714,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26433:52:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "26433:56:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 1719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26433:64:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1681,
                        "id": 1720,
                        "nodeType": "Return",
                        "src": "26426:71:5"
                      }
                    ]
                  },
                  "documentation": "@notice Get loan token balance.\n@return The user's balance of underlying token.\n",
                  "id": 1722,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "assetBalanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1678,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1677,
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1722,
                        "src": "26193:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1676,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26193:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26192:16:5"
                  },
                  "returnParameters": {
                    "id": 1681,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1680,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1722,
                        "src": "26230:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1679,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26230:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26229:9:5"
                  },
                  "scope": 3574,
                  "src": "26169:332:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1799,
                    "nodeType": "Block",
                    "src": "27234:615:5",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1739,
                            "name": "collateralTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1730,
                            "src": "27242:22:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1741,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "27276:1:5",
                                "subdenomination": null,
                                "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": 1740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27268:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 1742,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27268:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "27242:36:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1749,
                        "nodeType": "IfStatement",
                        "src": "27238:94:5",
                        "trueBody": {
                          "id": 1748,
                          "nodeType": "Block",
                          "src": "27280:52:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1746,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1744,
                                  "name": "collateralTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1730,
                                  "src": "27285:22:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1745,
                                  "name": "wrbtcTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3829,
                                  "src": "27310:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "27285:42:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1747,
                              "nodeType": "ExpressionStatement",
                              "src": "27285:42:5"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1751
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1751,
                            "name": "totalDeposit",
                            "nodeType": "VariableDeclaration",
                            "scope": 1799,
                            "src": "27336:20:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1750,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "27336:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1757,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1753,
                              "name": "collateralTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1730,
                              "src": "27373:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1754,
                              "name": "collateralTokenSent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1728,
                              "src": "27397:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1755,
                              "name": "loanTokenSent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1726,
                              "src": "27418:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1752,
                            "name": "_totalDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2379,
                            "src": "27359:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256) view returns (uint256)"
                            }
                          },
                          "id": 1756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27359:73:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "27336:96:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 1758,
                                "name": "principal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1733,
                                "src": "27438:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1759,
                                "name": "interestRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1737,
                                "src": "27449:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1760,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "27437:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1762,
                                "name": "leverageAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1724,
                                "src": "27495:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1763,
                                "name": "totalDeposit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1751,
                                "src": "27511:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1761,
                              "name": "_getMarginBorrowAmountAndRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3285,
                              "src": "27465:29:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256,uint256) view returns (uint256,uint256)"
                              }
                            },
                            "id": 1764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27465:59:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "27437:87:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1766,
                        "nodeType": "ExpressionStatement",
                        "src": "27437:87:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1767,
                            "name": "principal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1733,
                            "src": "27532:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 1768,
                              "name": "_underlyingBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2891,
                              "src": "27544:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 1769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27544:20:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "27532:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1777,
                        "nodeType": "IfStatement",
                        "src": "27528:64:5",
                        "trueBody": {
                          "id": 1776,
                          "nodeType": "Block",
                          "src": "27566:26:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1771,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27579:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1772,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27582:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1773,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27585:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "id": 1774,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "27578:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                                  "typeString": "tuple(int_const 0,int_const 0,int_const 0)"
                                }
                              },
                              "functionReturnParameters": 1738,
                              "id": 1775,
                              "nodeType": "Return",
                              "src": "27571:16:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1778,
                            "name": "loanTokenSent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1726,
                            "src": "27596:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1781,
                                "name": "principal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1733,
                                "src": "27630:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1779,
                                "name": "loanTokenSent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1726,
                                "src": "27612:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "27612:17:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27612:28:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "27596:44:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1784,
                        "nodeType": "ExpressionStatement",
                        "src": "27596:44:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1785,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1735,
                            "src": "27645:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1790,
                                "name": "loanTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 476,
                                "src": "27725:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1791,
                                "name": "collateralTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1730,
                                "src": "27746:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1792,
                                "name": "loanTokenSent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1726,
                                "src": "27773:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1793,
                                "name": "collateralTokenSent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1728,
                                "src": "27791:19:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1794,
                                "name": "interestRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1737,
                                "src": "27815:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1795,
                                "name": "principal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1733,
                                "src": "27832:9:5",
                                "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_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1787,
                                    "name": "sovrynContractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3827,
                                    "src": "27671:21:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1786,
                                  "name": "ProtocolLike",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4371,
                                  "src": "27658:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ProtocolLike_$4371_$",
                                    "typeString": "type(contract ProtocolLike)"
                                  }
                                },
                                "id": 1788,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27658:35:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ProtocolLike_$4371",
                                  "typeString": "contract ProtocolLike"
                                }
                              },
                              "id": 1789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getEstimatedMarginExposure",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4317,
                              "src": "27658:62:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,address,uint256,uint256,uint256,uint256) view external returns (uint256)"
                              }
                            },
                            "id": 1796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27658:187:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "27645:200:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1798,
                        "nodeType": "ExpressionStatement",
                        "src": "27645:200:5"
                      }
                    ]
                  },
                  "documentation": "@notice Get margin information on a trade.\n\t * @param leverageAmount The multiple of exposure: 2x ... 5x. The leverage with 18 decimals.\n@param loanTokenSent The number of loan tokens provided by the user.\n@param collateralTokenSent The amount of collateral tokens provided by the user.\n@param collateralTokenAddress The token address of collateral.\n\t * @return The principal, the collateral and the interestRate.\n",
                  "id": 1800,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getEstimatedMarginDetails",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1731,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1724,
                        "name": "leverageAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1800,
                        "src": "26992:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1723,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26992:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1726,
                        "name": "loanTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 1800,
                        "src": "27018:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1725,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27018:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1728,
                        "name": "collateralTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 1800,
                        "src": "27043:27:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1727,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27043:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1730,
                        "name": "collateralTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 1800,
                        "src": "27074:30:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1729,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27074:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26988:143:5"
                  },
                  "returnParameters": {
                    "id": 1738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1733,
                        "name": "principal",
                        "nodeType": "VariableDeclaration",
                        "scope": 1800,
                        "src": "27163:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1732,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27163:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1735,
                        "name": "collateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 1800,
                        "src": "27185:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1734,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27185:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1737,
                        "name": "interestRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 1800,
                        "src": "27208:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1736,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27208:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "27158:74:5"
                  },
                  "scope": 3574,
                  "src": "26954:895:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1874,
                    "nodeType": "Block",
                    "src": "28774:773:5",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1811,
                            "name": "borrowAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1802,
                            "src": "28782:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1812,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28798:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "28782:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1873,
                        "nodeType": "IfStatement",
                        "src": "28778:766:5",
                        "trueBody": {
                          "id": 1872,
                          "nodeType": "Block",
                          "src": "28801:743:5",
                          "statements": [
                            {
                              "assignments": [
                                null,
                                null,
                                1815
                              ],
                              "declarations": [
                                null,
                                null,
                                {
                                  "constant": false,
                                  "id": 1815,
                                  "name": "newBorrowAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1872,
                                  "src": "28811:23:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1814,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "28811:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1822,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1817,
                                    "name": "borrowAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1802,
                                    "src": "28870:12:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 1818,
                                      "name": "totalAssetSupply",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1621,
                                      "src": "28884:16:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                        "typeString": "function () view returns (uint256)"
                                      }
                                    },
                                    "id": 1819,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "28884:18:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1820,
                                    "name": "initialLoanDuration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1804,
                                    "src": "28904:19:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1816,
                                  "name": "_getInterestRateAndBorrowAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2442,
                                  "src": "28838:31:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) view returns (uint256,uint256,uint256)"
                                  }
                                },
                                "id": 1821,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28838:86:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "28806:118:5"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1823,
                                  "name": "newBorrowAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1815,
                                  "src": "28934:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1824,
                                    "name": "_underlyingBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2891,
                                    "src": "28953:18:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view returns (uint256)"
                                    }
                                  },
                                  "id": 1825,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "28953:20:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "28934:39:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1871,
                              "nodeType": "IfStatement",
                              "src": "28930:610:5",
                              "trueBody": {
                                "id": 1870,
                                "nodeType": "Block",
                                "src": "28975:565:5",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 1831,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 1827,
                                        "name": "collateralTokenAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1806,
                                        "src": "28985:22:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 1829,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "29019:1:5",
                                            "subdenomination": null,
                                            "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": 1828,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "29011:7:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 1830,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "29011:10:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "src": "28985:36:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 1836,
                                    "nodeType": "IfStatement",
                                    "src": "28981:84:5",
                                    "trueBody": {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1834,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 1832,
                                          "name": "collateralTokenAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1806,
                                          "src": "29023:22:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "id": 1833,
                                          "name": "wrbtcTokenAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3829,
                                          "src": "29048:17:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "src": "29023:42:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "id": 1835,
                                      "nodeType": "ExpressionStatement",
                                      "src": "29023:42:5"
                                    }
                                  },
                                  {
                                    "assignments": [
                                      1838
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 1838,
                                        "name": "loanParamsId",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 1870,
                                        "src": "29071:20:5",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "typeName": {
                                          "id": 1837,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "29071:7:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 1850,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1839,
                                        "name": "loanParamsIds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 502,
                                        "src": "29094:13:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                                          "typeString": "mapping(uint256 => bytes32)"
                                        }
                                      },
                                      "id": 1849,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 1844,
                                                    "name": "collateralTokenAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1806,
                                                    "src": "29143:22:5",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "hexValue": "74727565",
                                                    "id": 1845,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "29167:4:5",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 1842,
                                                    "name": "abi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 44981,
                                                    "src": "29126:3:5",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_abi",
                                                      "typeString": "abi"
                                                    }
                                                  },
                                                  "id": 1843,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "memberName": "encodePacked",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": null,
                                                  "src": "29126:16:5",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                    "typeString": "function () pure returns (bytes memory)"
                                                  }
                                                },
                                                "id": 1846,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "29126:46:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "id": 1841,
                                              "name": "keccak256",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44988,
                                              "src": "29116:9:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                              }
                                            },
                                            "id": 1847,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "29116:57:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 1840,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "29108:7:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": "uint256"
                                        },
                                        "id": 1848,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "29108:66:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "29094:81:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "29071:104:5"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "3130",
                                          "id": 1867,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "29482:2:5",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_10_by_1",
                                            "typeString": "int_const 10"
                                          },
                                          "value": "10"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_10_by_1",
                                            "typeString": "int_const 10"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 1855,
                                              "name": "loanTokenAddress",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 476,
                                              "src": "29265:16:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "id": 1856,
                                              "name": "collateralTokenAddress",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1806,
                                              "src": "29289:22:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "id": 1857,
                                              "name": "newBorrowAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1815,
                                              "src": "29319:15:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 1862,
                                                  "name": "loanParamsId",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1838,
                                                  "src": "29403:12:5",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "id": 1859,
                                                      "name": "sovrynContractAddress",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3827,
                                                      "src": "29363:21:5",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    ],
                                                    "id": 1858,
                                                    "name": "ProtocolSettingsLike",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4398,
                                                    "src": "29342:20:5",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_contract$_ProtocolSettingsLike_$4398_$",
                                                      "typeString": "type(contract ProtocolSettingsLike)"
                                                    }
                                                  },
                                                  "id": 1860,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "29342:43:5",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ProtocolSettingsLike_$4398",
                                                    "typeString": "contract ProtocolSettingsLike"
                                                  }
                                                },
                                                "id": 1861,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "minInitialMargin",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4397,
                                                "src": "29342:60:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                                                  "typeString": "function (bytes32) view external returns (uint256)"
                                                }
                                              },
                                              "id": 1863,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "29342:74:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "74727565",
                                              "id": 1864,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "bool",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "29442:4:5",
                                              "subdenomination": null,
                                              "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_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 1852,
                                                  "name": "sovrynContractAddress",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3827,
                                                  "src": "29206:21:5",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 1851,
                                                "name": "ProtocolLike",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4371,
                                                "src": "29193:12:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_ProtocolLike_$4371_$",
                                                  "typeString": "type(contract ProtocolLike)"
                                                }
                                              },
                                              "id": 1853,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "29193:35:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ProtocolLike_$4371",
                                                "typeString": "contract ProtocolLike"
                                              }
                                            },
                                            "id": 1854,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getRequiredCollateral",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4332,
                                            "src": "29193:64:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                              "typeString": "function (address,address,uint256,uint256,bool) view external returns (uint256)"
                                            }
                                          },
                                          "id": 1865,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "29193:277:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1866,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "add",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42076,
                                        "src": "29193:288:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1868,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "29193:292:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "functionReturnParameters": 1810,
                                    "id": 1869,
                                    "nodeType": "Return",
                                    "src": "29181:304:5"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the deposit required to a given borrow.\n\t * The function for doing over-collateralized borrows against loan tokens\nexpects a minimum amount of collateral be sent to satisfy collateral\nrequirements of the loan, for borrow amount, interest rate, and\ninitial loan duration. To determine appropriate values to pass to this\nfunction for a given loan, `getDepositAmountForBorrow` and\n'getBorrowAmountForDeposit` are required.\n\t * @param borrowAmount The amount of borrow.\n@param initialLoanDuration The duration of the loan.\n@param collateralTokenAddress The token address of collateral.\n\t * @return The amount of deposit required.\n",
                  "id": 1875,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDepositAmountForBorrow",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1807,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1802,
                        "name": "borrowAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1875,
                        "src": "28590:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1801,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28590:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1804,
                        "name": "initialLoanDuration",
                        "nodeType": "VariableDeclaration",
                        "scope": 1875,
                        "src": "28614:27:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1803,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28614:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1806,
                        "name": "collateralTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 1875,
                        "src": "28670:30:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1805,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "28670:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "28586:143:5"
                  },
                  "returnParameters": {
                    "id": 1810,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1809,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1875,
                        "src": "28751:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1808,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28751:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "28750:23:5"
                  },
                  "scope": 3574,
                  "src": "28552:995:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1953,
                    "nodeType": "Block",
                    "src": "30472:692:5",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1886,
                            "name": "depositAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1877,
                            "src": "30480:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30497:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "30480:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1952,
                        "nodeType": "IfStatement",
                        "src": "30476:685:5",
                        "trueBody": {
                          "id": 1951,
                          "nodeType": "Block",
                          "src": "30500:661:5",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1893,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1889,
                                  "name": "collateralTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1881,
                                  "src": "30509:22:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1891,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "30543:1:5",
                                      "subdenomination": null,
                                      "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": 1890,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "30535:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 1892,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "30535:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "30509:36:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1898,
                              "nodeType": "IfStatement",
                              "src": "30505:84:5",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1896,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 1894,
                                    "name": "collateralTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1881,
                                    "src": "30547:22:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "id": 1895,
                                    "name": "wrbtcTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3829,
                                    "src": "30572:17:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "30547:42:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 1897,
                                "nodeType": "ExpressionStatement",
                                "src": "30547:42:5"
                              }
                            },
                            {
                              "assignments": [
                                1900
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1900,
                                  "name": "loanParamsId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1951,
                                  "src": "30594:20:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 1899,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "30594:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1912,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1901,
                                  "name": "loanParamsIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 502,
                                  "src": "30617:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                                    "typeString": "mapping(uint256 => bytes32)"
                                  }
                                },
                                "id": 1911,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 1906,
                                              "name": "collateralTokenAddress",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1881,
                                              "src": "30666:22:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "74727565",
                                              "id": 1907,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "bool",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "30690:4:5",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "value": "true"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1904,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44981,
                                              "src": "30649:3:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 1905,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encodePacked",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "30649:16:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 1908,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "30649:46:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 1903,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44988,
                                        "src": "30639:9:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 1909,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "30639:57:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 1902,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "30631:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": "uint256"
                                  },
                                  "id": 1910,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "30631:66:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "30617:81:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "30594:104:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1913,
                                  "name": "borrowAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1884,
                                  "src": "30703:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1918,
                                      "name": "loanTokenAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 476,
                                      "src": "30775:16:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1919,
                                      "name": "collateralTokenAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1881,
                                      "src": "30797:22:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1920,
                                      "name": "depositAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1877,
                                      "src": "30825:13:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1925,
                                          "name": "loanParamsId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1900,
                                          "src": "30905:12:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 1922,
                                              "name": "sovrynContractAddress",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3827,
                                              "src": "30865:21:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 1921,
                                            "name": "ProtocolSettingsLike",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4398,
                                            "src": "30844:20:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_ProtocolSettingsLike_$4398_$",
                                              "typeString": "type(contract ProtocolSettingsLike)"
                                            }
                                          },
                                          "id": 1923,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "30844:43:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ProtocolSettingsLike_$4398",
                                            "typeString": "contract ProtocolSettingsLike"
                                          }
                                        },
                                        "id": 1924,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "minInitialMargin",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4397,
                                        "src": "30844:60:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                                          "typeString": "function (bytes32) view external returns (uint256)"
                                        }
                                      },
                                      "id": 1926,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "30844:74:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 1927,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "30943:4:5",
                                      "subdenomination": null,
                                      "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_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1915,
                                          "name": "sovrynContractAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3827,
                                          "src": "30731:21:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 1914,
                                        "name": "ProtocolLike",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4371,
                                        "src": "30718:12:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_ProtocolLike_$4371_$",
                                          "typeString": "type(contract ProtocolLike)"
                                        }
                                      },
                                      "id": 1916,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "30718:35:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ProtocolLike_$4371",
                                        "typeString": "contract ProtocolLike"
                                      }
                                    },
                                    "id": 1917,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getBorrowAmount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4347,
                                    "src": "30718:51:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (address,address,uint256,uint256,bool) view external returns (uint256)"
                                    }
                                  },
                                  "id": 1928,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "30718:251:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "30703:266:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1930,
                              "nodeType": "ExpressionStatement",
                              "src": "30703:266:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1939,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    null,
                                    null,
                                    {
                                      "argumentTypes": null,
                                      "id": 1931,
                                      "name": "borrowAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1884,
                                      "src": "30980:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 1932,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "30975:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$__$_t_uint256_$",
                                    "typeString": "tuple(,,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1934,
                                      "name": "borrowAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1884,
                                      "src": "31028:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1935,
                                        "name": "totalAssetSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1621,
                                        "src": "31042:16:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                          "typeString": "function () view returns (uint256)"
                                        }
                                      },
                                      "id": 1936,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "31042:18:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1937,
                                      "name": "initialLoanDuration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1879,
                                      "src": "31062:19:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1933,
                                    "name": "_getInterestRateAndBorrowAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2442,
                                    "src": "30996:31:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) view returns (uint256,uint256,uint256)"
                                    }
                                  },
                                  "id": 1938,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "30996:86:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256)"
                                  }
                                },
                                "src": "30975:107:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1940,
                              "nodeType": "ExpressionStatement",
                              "src": "30975:107:5"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1944,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1941,
                                  "name": "borrowAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1884,
                                  "src": "31092:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1942,
                                    "name": "_underlyingBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2891,
                                    "src": "31107:18:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view returns (uint256)"
                                    }
                                  },
                                  "id": 1943,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "31107:20:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "31092:35:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1950,
                              "nodeType": "IfStatement",
                              "src": "31088:69:5",
                              "trueBody": {
                                "id": 1949,
                                "nodeType": "Block",
                                "src": "31129:28:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1947,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 1945,
                                        "name": "borrowAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1884,
                                        "src": "31135:12:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 1946,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "31150:1:5",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "31135:16:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1948,
                                    "nodeType": "ExpressionStatement",
                                    "src": "31135:16:5"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the borrow allowed for a given deposit.\n\t * The function for doing over-collateralized borrows against loan tokens\nexpects a minimum amount of collateral be sent to satisfy collateral\nrequirements of the loan, for borrow amount, interest rate, and\ninitial loan duration. To determine appropriate values to pass to this\nfunction for a given loan, `getDepositAmountForBorrow` and\n'getBorrowAmountForDeposit` are required.\n\t * @param depositAmount The amount of deposit.\n@param initialLoanDuration The duration of the loan.\n@param collateralTokenAddress The token address of collateral.\n\t * @return The amount of borrow allowed.\n",
                  "id": 1954,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBorrowAmountForDeposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1882,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1877,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1954,
                        "src": "30288:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1876,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30288:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1879,
                        "name": "initialLoanDuration",
                        "nodeType": "VariableDeclaration",
                        "scope": 1954,
                        "src": "30313:27:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30313:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1881,
                        "name": "collateralTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 1954,
                        "src": "30369:30:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1880,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30369:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "30284:144:5"
                  },
                  "returnParameters": {
                    "id": 1885,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1884,
                        "name": "borrowAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1954,
                        "src": "30450:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1883,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30450:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "30449:22:5"
                  },
                  "scope": 3574,
                  "src": "30250:914:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1983,
                    "nodeType": "Block",
                    "src": "31349:209:5",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          1968,
                          null
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 1968,
                            "name": "estimatedCollateral",
                            "nodeType": "VariableDeclaration",
                            "scope": 1983,
                            "src": "31356:27:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1967,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "31356:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 1975,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1970,
                              "name": "leverageAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1956,
                              "src": "31418:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1971,
                              "name": "loanTokenSent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1958,
                              "src": "31434:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1972,
                              "name": "collateralTokenSent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1960,
                              "src": "31449:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1973,
                              "name": "collateralTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1962,
                              "src": "31470:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1969,
                            "name": "getEstimatedMarginDetails",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1800,
                            "src": "31392:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256,address) view returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 1974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31392:101:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "31353:140:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1979,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1977,
                                "name": "estimatedCollateral",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1968,
                                "src": "31505:19:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1978,
                                "name": "minReturn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1964,
                                "src": "31528:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "31505:32:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "636f6c6c20746f6f206c6f77",
                              "id": 1980,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "31539:14:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_08de1ebff8d64b7191353d5cdf5822cf7ac59af3215d13e4b32790c9628ca543",
                                "typeString": "literal_string \"coll too low\""
                              },
                              "value": "coll too low"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_08de1ebff8d64b7191353d5cdf5822cf7ac59af3215d13e4b32790c9628ca543",
                                "typeString": "literal_string \"coll too low\""
                              }
                            ],
                            "id": 1976,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "31497:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31497:57:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1982,
                        "nodeType": "ExpressionStatement",
                        "src": "31497:57:5"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 1984,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "checkPriceDivergence",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1965,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1956,
                        "name": "leverageAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1984,
                        "src": "31200:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1955,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31200:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1958,
                        "name": "loanTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 1984,
                        "src": "31226:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1957,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31226:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1960,
                        "name": "collateralTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 1984,
                        "src": "31251:27:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1959,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31251:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1962,
                        "name": "collateralTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 1984,
                        "src": "31282:30:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1961,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "31282:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1964,
                        "name": "minReturn",
                        "nodeType": "VariableDeclaration",
                        "scope": 1984,
                        "src": "31316:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1963,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31316:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "31196:140:5"
                  },
                  "returnParameters": {
                    "id": 1966,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31349:0:5"
                  },
                  "scope": 3574,
                  "src": "31167:391:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2056,
                    "nodeType": "Block",
                    "src": "31963:802:5",
                    "statements": [
                      {
                        "assignments": [
                          1994
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1994,
                            "name": "currentPrice",
                            "nodeType": "VariableDeclaration",
                            "scope": 2056,
                            "src": "31967:20:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1993,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "31967:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1995,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "31967:20:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 1996,
                                "name": "mintAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1991,
                                "src": "32056:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1997,
                                "name": "currentPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1994,
                                "src": "32068:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1998,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "32055:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2000,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1988,
                                "src": "32100:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1999,
                              "name": "_prepareMinting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2124,
                              "src": "32084:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256) returns (uint256,uint256)"
                              }
                            },
                            "id": 2001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "32084:30:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "32055:59:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2003,
                        "nodeType": "ExpressionStatement",
                        "src": "32055:59:5"
                      },
                      {
                        "assignments": [
                          2005
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2005,
                            "name": "balanceOnLM",
                            "nodeType": "VariableDeclaration",
                            "scope": 2056,
                            "src": "32265:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2004,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "32265:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2007,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32287:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "32265:23:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2008,
                            "name": "liquidityMiningAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3839,
                            "src": "32296:22:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2010,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "32330:1:5",
                                "subdenomination": null,
                                "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": 2009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "32322:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "32322:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "32296:36:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2025,
                        "nodeType": "IfStatement",
                        "src": "32292:148:5",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 2013,
                              "name": "balanceOnLM",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2005,
                              "src": "32337:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2019,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45050,
                                      "src": "32424:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                        "typeString": "contract LoanTokenLogicStandard"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                        "typeString": "contract LoanTokenLogicStandard"
                                      }
                                    ],
                                    "id": 2018,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "32416:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 2020,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "32416:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2021,
                                  "name": "receiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1986,
                                  "src": "32431:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2015,
                                      "name": "liquidityMiningAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3839,
                                      "src": "32368:22:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2014,
                                    "name": "ILiquidityMining",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6369,
                                    "src": "32351:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ILiquidityMining_$6369_$",
                                      "typeString": "type(contract ILiquidityMining)"
                                    }
                                  },
                                  "id": 2016,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "32351:40:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILiquidityMining_$6369",
                                    "typeString": "contract ILiquidityMining"
                                  }
                                },
                                "id": 2017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getUserPoolTokenBalance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6368,
                                "src": "32351:64:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address,address) view external returns (uint256)"
                                }
                              },
                              "id": 2022,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "32351:89:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "32337:103:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2024,
                          "nodeType": "ExpressionStatement",
                          "src": "32337:103:5"
                        }
                      },
                      {
                        "assignments": [
                          2027
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2027,
                            "name": "oldBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 2056,
                            "src": "32444:18:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2026,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "32444:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2034,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2032,
                              "name": "balanceOnLM",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2005,
                              "src": "32488:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2028,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 226,
                                "src": "32465:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 2030,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2029,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1986,
                                "src": "32474:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "32465:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42076,
                            "src": "32465:22:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32465:35:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "32444:56:5"
                      },
                      {
                        "assignments": [
                          2036
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2036,
                            "name": "newBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 2056,
                            "src": "32504:18:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2035,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "32504:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2041,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2039,
                              "name": "mintAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1991,
                              "src": "32540:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2037,
                              "name": "oldBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2027,
                              "src": "32525:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2038,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42076,
                            "src": "32525:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32525:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "32504:47:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2043,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1986,
                              "src": "32598:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2044,
                              "name": "mintAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1991,
                              "src": "32608:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2045,
                              "name": "depositAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1988,
                              "src": "32620:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2046,
                              "name": "currentPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1994,
                              "src": "32635:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2042,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 97,
                            "src": "32592:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256,uint256) returns (uint256)"
                            }
                          },
                          "id": 2047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32592:56:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2048,
                        "nodeType": "ExpressionStatement",
                        "src": "32592:56:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2050,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1986,
                              "src": "32714:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2051,
                              "name": "oldBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2027,
                              "src": "32724:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2052,
                              "name": "newBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2036,
                              "src": "32736:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2053,
                              "name": "currentPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1994,
                              "src": "32748:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2049,
                            "name": "_updateCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "32695:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 2054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32695:66:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2055,
                        "nodeType": "ExpressionStatement",
                        "src": "32695:66:5"
                      }
                    ]
                  },
                  "documentation": "@notice transfers the underlying asset from the msg.sender and mints tokens for the receiver\n@param receiver the address of the iToken receiver\n@param depositAmount the amount of underlying assets to be deposited\n@return the amount of iTokens issued",
                  "id": 2057,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1989,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1986,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 2057,
                        "src": "31884:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1985,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "31884:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1988,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2057,
                        "src": "31902:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1987,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31902:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "31883:41:5"
                  },
                  "returnParameters": {
                    "id": 1992,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1991,
                        "name": "mintAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2057,
                        "src": "31943:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1990,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31943:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "31942:20:5"
                  },
                  "scope": 3574,
                  "src": "31864:901:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2123,
                    "nodeType": "Block",
                    "src": "33088:365:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2067,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2059,
                                "src": "33100:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "33117:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "33100:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3137",
                              "id": 2070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "33120:4:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8e8fab5f003314da8d1873ea7720e8d9f47650136d916064d1edb8a11d682624",
                                "typeString": "literal_string \"17\""
                              },
                              "value": "17"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8e8fab5f003314da8d1873ea7720e8d9f47650136d916064d1edb8a11d682624",
                                "typeString": "literal_string \"17\""
                              }
                            ],
                            "id": 2066,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "33092:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33092:33:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2072,
                        "nodeType": "ExpressionStatement",
                        "src": "33092:33:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2073,
                            "name": "_settleInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2286,
                            "src": "33130:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 2074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33130:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2075,
                        "nodeType": "ExpressionStatement",
                        "src": "33130:17:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2076,
                            "name": "currentPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2064,
                            "src": "33152:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2079,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33197:1:5",
                                    "subdenomination": null,
                                    "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": 2078,
                                  "name": "_totalAssetSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3321,
                                  "src": "33179:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) view returns (uint256)"
                                  }
                                },
                                "id": 2080,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33179:20:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2077,
                              "name": "_tokenPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2918,
                              "src": "33167:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view returns (uint256)"
                              }
                            },
                            "id": 2081,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33167:33:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33152:48:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2083,
                        "nodeType": "ExpressionStatement",
                        "src": "33152:48:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2084,
                            "name": "mintAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2062,
                            "src": "33204:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2092,
                                "name": "currentPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2064,
                                "src": "33247:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    },
                                    "id": 2089,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 2087,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "33235:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3138",
                                      "id": 2088,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "33239:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_18_by_1",
                                        "typeString": "int_const 18"
                                      },
                                      "value": "18"
                                    },
                                    "src": "33235:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2085,
                                    "name": "depositAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2059,
                                    "src": "33217:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2086,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "33217:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33217:25:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2091,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "33217:29:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33217:43:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33204:56:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2095,
                        "nodeType": "ExpressionStatement",
                        "src": "33204:56:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2096,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "33269:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "33269:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33282:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "33269:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2121,
                          "nodeType": "Block",
                          "src": "33384:66:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2117,
                                      "name": "depositAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2059,
                                      "src": "33429:13:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 2113,
                                            "name": "wrbtcTokenAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3829,
                                            "src": "33396:17:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 2112,
                                          "name": "IWrbtc",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25550,
                                          "src": "33389:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IWrbtc_$25550_$",
                                            "typeString": "type(contract IWrbtc)"
                                          }
                                        },
                                        "id": 2114,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "33389:25:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IWrbtc_$25550",
                                          "typeString": "contract IWrbtc"
                                        }
                                      },
                                      "id": 2115,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "deposit",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 25544,
                                      "src": "33389:33:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                        "typeString": "function () payable external"
                                      }
                                    },
                                    "id": 2116,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "value",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "33389:39:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$",
                                      "typeString": "function (uint256) pure returns (function () payable external)"
                                    }
                                  },
                                  "id": 2118,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "33389:54:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                                    "typeString": "function () payable external"
                                  }
                                },
                                "id": 2119,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33389:56:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2120,
                              "nodeType": "ExpressionStatement",
                              "src": "33389:56:5"
                            }
                          ]
                        },
                        "id": 2122,
                        "nodeType": "IfStatement",
                        "src": "33265:185:5",
                        "trueBody": {
                          "id": 2111,
                          "nodeType": "Block",
                          "src": "33285:93:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2101,
                                    "name": "loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 476,
                                    "src": "33308:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2102,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "33326:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2103,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "33326:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2105,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 45050,
                                        "src": "33346:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                          "typeString": "contract LoanTokenLogicStandard"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                          "typeString": "contract LoanTokenLogicStandard"
                                        }
                                      ],
                                      "id": 2104,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "33338:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 2106,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "33338:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2107,
                                    "name": "depositAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2059,
                                    "src": "33353:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "3138",
                                    "id": 2108,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33368:4:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8fef2229291b68be841adf029e58b87f39ba144b2d3b0af1760243d0a9bc6a1c",
                                      "typeString": "literal_string \"18\""
                                    },
                                    "value": "18"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8fef2229291b68be841adf029e58b87f39ba144b2d3b0af1760243d0a9bc6a1c",
                                      "typeString": "literal_string \"18\""
                                    }
                                  ],
                                  "id": 2100,
                                  "name": "_safeTransferFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2836,
                                  "src": "33290:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,string memory)"
                                  }
                                },
                                "id": 2109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33290:83:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2110,
                              "nodeType": "ExpressionStatement",
                              "src": "33290:83:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "calculates the amount of tokens to mint and transfers the underlying asset to this contract\n@param depositAmount the amount of the underyling asset deposited\n@return the amount to be minted",
                  "id": 2124,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_prepareMinting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2060,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2059,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2124,
                        "src": "33005:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2058,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "33005:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "33004:23:5"
                  },
                  "returnParameters": {
                    "id": 2065,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2062,
                        "name": "mintAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2124,
                        "src": "33046:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2061,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "33046:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2064,
                        "name": "currentPrice",
                        "nodeType": "VariableDeclaration",
                        "scope": 2124,
                        "src": "33066:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2063,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "33066:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "33045:42:5"
                  },
                  "scope": 3574,
                  "src": "32980:473:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2258,
                    "nodeType": "Block",
                    "src": "33725:1193:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2134,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2132,
                                "name": "burnAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2126,
                                "src": "33737:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2133,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "33751:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "33737:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3139",
                              "id": 2135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "33754:4:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_939eb54753ed0cc7e2272bfb34cbe098308c93936ed54d79078f76ade0b2e789",
                                "typeString": "literal_string \"19\""
                              },
                              "value": "19"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_939eb54753ed0cc7e2272bfb34cbe098308c93936ed54d79078f76ade0b2e789",
                                "typeString": "literal_string \"19\""
                              }
                            ],
                            "id": 2131,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "33729:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33729:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2137,
                        "nodeType": "ExpressionStatement",
                        "src": "33729:30:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2138,
                            "name": "burnAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2126,
                            "src": "33768:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2140,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "33791:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 2141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "33791:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "id": 2139,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 254,
                              "src": "33781:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view returns (uint256)"
                              }
                            },
                            "id": 2142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33781:21:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33768:34:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2162,
                        "nodeType": "IfStatement",
                        "src": "33764:129:5",
                        "trueBody": {
                          "id": 2161,
                          "nodeType": "Block",
                          "src": "33804:89:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2150,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2145,
                                      "name": "burnAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2126,
                                      "src": "33817:10:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2148,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "-",
                                          "prefix": true,
                                          "src": "33839:2:5",
                                          "subExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 2147,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "33840:1:5",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_minus_1_by_1",
                                            "typeString": "int_const -1"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_minus_1_by_1",
                                            "typeString": "int_const -1"
                                          }
                                        ],
                                        "id": 2146,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "33831:7:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": "uint256"
                                      },
                                      "id": 2149,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "33831:11:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "33817:25:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "3332",
                                    "id": 2151,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33844:4:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8b953cbb84328003779eb1ef176ef07f7dd0ae3d4a8e408de53d15a36466c86e",
                                      "typeString": "literal_string \"32\""
                                    },
                                    "value": "32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8b953cbb84328003779eb1ef176ef07f7dd0ae3d4a8e408de53d15a36466c86e",
                                      "typeString": "literal_string \"32\""
                                    }
                                  ],
                                  "id": 2144,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "33809:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 2152,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33809:40:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2153,
                              "nodeType": "ExpressionStatement",
                              "src": "33809:40:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2154,
                                  "name": "burnAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2126,
                                  "src": "33854:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2156,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44994,
                                        "src": "33877:3:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 2157,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "33877:10:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    ],
                                    "id": 2155,
                                    "name": "balanceOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 254,
                                    "src": "33867:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view returns (uint256)"
                                    }
                                  },
                                  "id": 2158,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "33867:21:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "33854:34:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2160,
                              "nodeType": "ExpressionStatement",
                              "src": "33854:34:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2163,
                            "name": "_settleInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2286,
                            "src": "33897:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 2164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33897:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2165,
                        "nodeType": "ExpressionStatement",
                        "src": "33897:17:5"
                      },
                      {
                        "assignments": [
                          2167
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2167,
                            "name": "currentPrice",
                            "nodeType": "VariableDeclaration",
                            "scope": 2258,
                            "src": "33919:20:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2166,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "33919:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2173,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2170,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "33972:1:5",
                                  "subdenomination": null,
                                  "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": 2169,
                                "name": "_totalAssetSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3321,
                                "src": "33954:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) view returns (uint256)"
                                }
                              },
                              "id": 2171,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "33954:20:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2168,
                            "name": "_tokenPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2918,
                            "src": "33942:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 2172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33942:33:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "33919:56:5"
                      },
                      {
                        "assignments": [
                          2175
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2175,
                            "name": "loanAmountOwed",
                            "nodeType": "VariableDeclaration",
                            "scope": 2258,
                            "src": "33980:22:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2174,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "33980:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2185,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              },
                              "id": 2183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130",
                                "id": 2181,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "34038:2:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3138",
                                "id": 2182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "34042:2:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_18_by_1",
                                  "typeString": "int_const 18"
                                },
                                "value": "18"
                              },
                              "src": "34038:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2178,
                                  "name": "currentPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2167,
                                  "src": "34020:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2176,
                                  "name": "burnAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2126,
                                  "src": "34005:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2177,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "34005:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 2179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "34005:28:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "34005:32:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34005:40:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "33980:65:5"
                      },
                      {
                        "assignments": [
                          2187
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2187,
                            "name": "loanAmountAvailableInContract",
                            "nodeType": "VariableDeclaration",
                            "scope": 2258,
                            "src": "34049:37:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2186,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "34049:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2190,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2188,
                            "name": "_underlyingBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2891,
                            "src": "34089:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 2189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34089:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "34049:60:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2191,
                            "name": "loanAmountPaid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2129,
                            "src": "34114:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2192,
                            "name": "loanAmountOwed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2175,
                            "src": "34131:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34114:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2194,
                        "nodeType": "ExpressionStatement",
                        "src": "34114:31:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2196,
                                "name": "loanAmountPaid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2129,
                                "src": "34157:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2197,
                                "name": "loanAmountAvailableInContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2187,
                                "src": "34175:29:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "34157:47:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3337",
                              "id": 2199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "34206:4:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5bc0457d8881b800fd1bc0d6df907345b3bf287e43a5790ded3d08dbacf9c03a",
                                "typeString": "literal_string \"37\""
                              },
                              "value": "37"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5bc0457d8881b800fd1bc0d6df907345b3bf287e43a5790ded3d08dbacf9c03a",
                                "typeString": "literal_string \"37\""
                              }
                            ],
                            "id": 2195,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "34149:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34149:62:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2201,
                        "nodeType": "ExpressionStatement",
                        "src": "34149:62:5"
                      },
                      {
                        "assignments": [
                          2203
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2203,
                            "name": "balanceOnLM",
                            "nodeType": "VariableDeclaration",
                            "scope": 2258,
                            "src": "34362:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2202,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "34362:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2205,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "34384:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "34362:23:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2206,
                            "name": "liquidityMiningAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3839,
                            "src": "34393:22:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "34427:1:5",
                                "subdenomination": null,
                                "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": 2207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "34419:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "34419:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "34393:36:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2224,
                        "nodeType": "IfStatement",
                        "src": "34389:150:5",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2222,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 2211,
                              "name": "balanceOnLM",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2203,
                              "src": "34434:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2217,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45050,
                                      "src": "34521:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                        "typeString": "contract LoanTokenLogicStandard"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                        "typeString": "contract LoanTokenLogicStandard"
                                      }
                                    ],
                                    "id": 2216,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "34513:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 2218,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "34513:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2219,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "34528:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2220,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "34528:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2213,
                                      "name": "liquidityMiningAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3839,
                                      "src": "34465:22:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2212,
                                    "name": "ILiquidityMining",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6369,
                                    "src": "34448:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ILiquidityMining_$6369_$",
                                      "typeString": "type(contract ILiquidityMining)"
                                    }
                                  },
                                  "id": 2214,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "34448:40:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILiquidityMining_$6369",
                                    "typeString": "contract ILiquidityMining"
                                  }
                                },
                                "id": 2215,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getUserPoolTokenBalance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6368,
                                "src": "34448:64:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address,address) view external returns (uint256)"
                                }
                              },
                              "id": 2221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "34448:91:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "34434:105:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2223,
                          "nodeType": "ExpressionStatement",
                          "src": "34434:105:5"
                        }
                      },
                      {
                        "assignments": [
                          2226
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2226,
                            "name": "oldBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 2258,
                            "src": "34543:18:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2225,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "34543:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2234,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2232,
                              "name": "balanceOnLM",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2203,
                              "src": "34589:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2227,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 226,
                                "src": "34564:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 2230,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2228,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "34573:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 2229,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "34573:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "34564:20:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42076,
                            "src": "34564:24:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34564:37:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "34543:58:5"
                      },
                      {
                        "assignments": [
                          2236
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2236,
                            "name": "newBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 2258,
                            "src": "34605:18:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2235,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "34605:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2241,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2239,
                              "name": "burnAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2126,
                              "src": "34641:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2237,
                              "name": "oldBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2226,
                              "src": "34626:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "34626:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34626:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "34605:47:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2243,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "34663:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "34663:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2245,
                              "name": "burnAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2126,
                              "src": "34675:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2246,
                              "name": "loanAmountPaid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2129,
                              "src": "34687:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2247,
                              "name": "currentPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2167,
                              "src": "34703:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2242,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 167,
                            "src": "34657:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256,uint256) returns (uint256)"
                            }
                          },
                          "id": 2248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34657:59:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2249,
                        "nodeType": "ExpressionStatement",
                        "src": "34657:59:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2251,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "34865:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2252,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "34865:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2253,
                              "name": "oldBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2226,
                              "src": "34877:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2254,
                              "name": "newBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2236,
                              "src": "34889:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2255,
                              "name": "currentPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2167,
                              "src": "34901:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2250,
                            "name": "_updateCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1352,
                            "src": "34846:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 2256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34846:68:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2257,
                        "nodeType": "ExpressionStatement",
                        "src": "34846:68:5"
                      }
                    ]
                  },
                  "documentation": "@notice A wrapper for AdvancedToken::_burn\n\t * @param burnAmount The amount of loan tokens to redeem.\n\t * @return The amount of underlying tokens payed to lender.\n",
                  "id": 2259,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2127,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2126,
                        "name": "burnAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2259,
                        "src": "33663:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2125,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "33663:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "33662:20:5"
                  },
                  "returnParameters": {
                    "id": 2130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2129,
                        "name": "loanAmountPaid",
                        "nodeType": "VariableDeclaration",
                        "scope": 2259,
                        "src": "33701:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2128,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "33701:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "33700:24:5"
                  },
                  "scope": 3574,
                  "src": "33643:1275:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2285,
                    "nodeType": "Block",
                    "src": "35218:186:5",
                    "statements": [
                      {
                        "assignments": [
                          2263
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2263,
                            "name": "ts",
                            "nodeType": "VariableDeclaration",
                            "scope": 2285,
                            "src": "35222:9:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint88",
                              "typeString": "uint88"
                            },
                            "typeName": {
                              "id": 2262,
                              "name": "uint88",
                              "nodeType": "ElementaryTypeName",
                              "src": "35222:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2268,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2265,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "35241:5:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 2266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "35241:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "35234:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint88_$",
                              "typeString": "type(uint88)"
                            },
                            "typeName": "uint88"
                          },
                          "id": 2267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35234:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "35222:35:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          },
                          "id": 2271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2269,
                            "name": "lastSettleTime_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 498,
                            "src": "35265:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint88",
                              "typeString": "uint88"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2270,
                            "name": "ts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2263,
                            "src": "35284:2:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint88",
                              "typeString": "uint88"
                            }
                          },
                          "src": "35265:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2284,
                        "nodeType": "IfStatement",
                        "src": "35261:140:5",
                        "trueBody": {
                          "id": 2283,
                          "nodeType": "Block",
                          "src": "35288:113:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2276,
                                    "name": "loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 476,
                                    "src": "35353:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2273,
                                        "name": "sovrynContractAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3827,
                                        "src": "35306:21:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2272,
                                      "name": "ProtocolLike",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4371,
                                      "src": "35293:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ProtocolLike_$4371_$",
                                        "typeString": "type(contract ProtocolLike)"
                                      }
                                    },
                                    "id": 2274,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "35293:35:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ProtocolLike_$4371",
                                      "typeString": "contract ProtocolLike"
                                    }
                                  },
                                  "id": 2275,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdrawAccruedInterest",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4276,
                                  "src": "35293:59:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address) external"
                                  }
                                },
                                "id": 2277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "35293:77:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2278,
                              "nodeType": "ExpressionStatement",
                              "src": "35293:77:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2279,
                                  "name": "lastSettleTime_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 498,
                                  "src": "35376:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint88",
                                    "typeString": "uint88"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 2280,
                                  "name": "ts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2263,
                                  "src": "35394:2:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint88",
                                    "typeString": "uint88"
                                  }
                                },
                                "src": "35376:20:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint88",
                                  "typeString": "uint88"
                                }
                              },
                              "id": 2282,
                              "nodeType": "ExpressionStatement",
                              "src": "35376:20:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Withdraw loan token interests from protocol.\nThis function only operates once per block.\nIt asks protocol to withdraw accrued interests for the loan token.\n\t * @dev Internal sync required on every loan trade before starting.\n",
                  "id": 2286,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_settleInterest",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2260,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "35206:2:5"
                  },
                  "returnParameters": {
                    "id": 2261,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "35218:0:5"
                  },
                  "scope": 3574,
                  "src": "35182:222:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2378,
                    "nodeType": "Block",
                    "src": "35992:1244:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2297,
                            "name": "totalDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2295,
                            "src": "35996:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2298,
                            "name": "loanTokenSent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2292,
                            "src": "36011:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "35996:28:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2300,
                        "nodeType": "ExpressionStatement",
                        "src": "35996:28:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2301,
                            "name": "collateralTokenSent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2290,
                            "src": "36033:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "36056:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "36033:24:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2377,
                        "nodeType": "IfStatement",
                        "src": "36029:1204:5",
                        "trueBody": {
                          "id": 2376,
                          "nodeType": "Block",
                          "src": "36059:1174:5",
                          "statements": [
                            {
                              "assignments": [
                                2305,
                                2307
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2305,
                                  "name": "collateralToLoanRate",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2376,
                                  "src": "36121:28:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2304,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "36121:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 2307,
                                  "name": "collateralToLoanPrecision",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2376,
                                  "src": "36151:33:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2306,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "36151:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2319,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2316,
                                    "name": "collateralTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2288,
                                    "src": "36262:22:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2317,
                                    "name": "loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 476,
                                    "src": "36286:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2310,
                                                "name": "sovrynContractAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3827,
                                                "src": "36215:21:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 2309,
                                              "name": "ProtocolLike",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4371,
                                              "src": "36202:12:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_ProtocolLike_$4371_$",
                                                "typeString": "type(contract ProtocolLike)"
                                              }
                                            },
                                            "id": 2311,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "36202:35:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_ProtocolLike_$4371",
                                              "typeString": "contract ProtocolLike"
                                            }
                                          },
                                          "id": 2312,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "priceFeeds",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4300,
                                          "src": "36202:46:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                            "typeString": "function () view external returns (address)"
                                          }
                                        },
                                        "id": 2313,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "36202:48:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2308,
                                      "name": "FeedsLike",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4235,
                                      "src": "36192:9:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_FeedsLike_$4235_$",
                                        "typeString": "type(contract FeedsLike)"
                                      }
                                    },
                                    "id": 2314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "36192:59:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_FeedsLike_$4235",
                                      "typeString": "contract FeedsLike"
                                    }
                                  },
                                  "id": 2315,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "queryRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4234,
                                  "src": "36192:69:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address) view external returns (uint256,uint256)"
                                  }
                                },
                                "id": 2318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "36192:111:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "36120:183:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 2329,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2323,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 2321,
                                            "name": "collateralToLoanRate",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2305,
                                            "src": "36317:20:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 2322,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "36341:1:5",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "36317:25:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 2324,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "36316:27:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2327,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 2325,
                                            "name": "collateralToLoanPrecision",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2307,
                                            "src": "36348:25:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 2326,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "36377:1:5",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "36348:30:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 2328,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "36347:32:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "36316:63:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "696e76616c6964207261746520636f6c6c61746572616c20746f6b656e",
                                    "id": 2330,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "36381:31:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c178a0ce4024460401aacebb795a8b810c83cd84a0300f90e6e4f6bf79c0ef1a",
                                      "typeString": "literal_string \"invalid rate collateral token\""
                                    },
                                    "value": "invalid rate collateral token"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c178a0ce4024460401aacebb795a8b810c83cd84a0300f90e6e4f6bf79c0ef1a",
                                      "typeString": "literal_string \"invalid rate collateral token\""
                                    }
                                  ],
                                  "id": 2320,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "36308:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 2331,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "36308:105:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2332,
                              "nodeType": "ExpressionStatement",
                              "src": "36308:105:5"
                            },
                            {
                              "assignments": [
                                2334
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2334,
                                  "name": "loanTokenAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2376,
                                  "src": "36483:23:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2333,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "36483:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2342,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2340,
                                    "name": "collateralToLoanPrecision",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2307,
                                    "src": "36559:25:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2337,
                                        "name": "collateralToLoanRate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2305,
                                        "src": "36533:20:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2335,
                                        "name": "collateralTokenSent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2290,
                                        "src": "36509:19:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2336,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42153,
                                      "src": "36509:23:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 2338,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "36509:45:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2339,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42169,
                                  "src": "36509:49:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2341,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "36509:76:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "36483:102:5"
                            },
                            {
                              "assignments": [
                                2344
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2344,
                                  "name": "collateralTokenAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2376,
                                  "src": "36709:29:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2343,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "36709:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2353,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2349,
                                    "name": "loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 476,
                                    "src": "36803:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2350,
                                    "name": "collateralTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2288,
                                    "src": "36821:22:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2351,
                                    "name": "loanTokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2334,
                                    "src": "36845:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2346,
                                        "name": "sovrynContractAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3827,
                                        "src": "36758:21:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2345,
                                      "name": "ProtocolLike",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4371,
                                      "src": "36745:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ProtocolLike_$4371_$",
                                        "typeString": "type(contract ProtocolLike)"
                                      }
                                    },
                                    "id": 2347,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "36745:35:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ProtocolLike_$4371",
                                      "typeString": "contract ProtocolLike"
                                    }
                                  },
                                  "id": 2348,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getSwapExpectedReturn",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4370,
                                  "src": "36745:57:5",
                                  "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": 2352,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "36745:116:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "36709:152:5"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2356,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2354,
                                  "name": "collateralTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2344,
                                  "src": "36934:21:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2355,
                                  "name": "collateralTokenSent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2290,
                                  "src": "36959:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "36934:44:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2368,
                              "nodeType": "IfStatement",
                              "src": "36930:245:5",
                              "trueBody": {
                                "id": 2367,
                                "nodeType": "Block",
                                "src": "36980:195:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2365,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2357,
                                        "name": "loanTokenAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2334,
                                        "src": "37084:15:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 2363,
                                            "name": "collateralTokenSent",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2290,
                                            "src": "37149:19:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2360,
                                                "name": "collateralTokenAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2344,
                                                "src": "37122:21:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 2358,
                                                "name": "loanTokenAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2334,
                                                "src": "37102:15:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 2359,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 42153,
                                              "src": "37102:19:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 2361,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "37102:42:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2362,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "div",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42169,
                                          "src": "37102:46:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 2364,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "37102:67:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "37084:85:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2366,
                                    "nodeType": "ExpressionStatement",
                                    "src": "37084:85:5"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2369,
                                  "name": "totalDeposit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2295,
                                  "src": "37180:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2372,
                                      "name": "totalDeposit",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2295,
                                      "src": "37215:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2370,
                                      "name": "loanTokenAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2334,
                                      "src": "37195:15:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2371,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "37195:19:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2373,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "37195:33:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "37180:48:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2375,
                              "nodeType": "ExpressionStatement",
                              "src": "37180:48:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Compute what the deposit is worth in loan tokens using the swap rate\n     used for loan size computation.\n\t * @param collateralTokenAddress The token address of the collateral.\n@param collateralTokenSent The amount of collateral tokens provided by the user.\n@param loanTokenSent The number of loan tokens provided by the user.\n\t * @return The value of the deposit in loan tokens.\n",
                  "id": 2379,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_totalDeposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2288,
                        "name": "collateralTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 2379,
                        "src": "35857:30:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "35857:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2290,
                        "name": "collateralTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 2379,
                        "src": "35891:27:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2289,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "35891:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2292,
                        "name": "loanTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 2379,
                        "src": "35922:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2291,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "35922:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "35853:93:5"
                  },
                  "returnParameters": {
                    "id": 2296,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2295,
                        "name": "totalDeposit",
                        "nodeType": "VariableDeclaration",
                        "scope": 2379,
                        "src": "35970:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2294,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "35970:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "35969:22:5"
                  },
                  "scope": 3574,
                  "src": "35831:1405:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2441,
                    "nodeType": "Block",
                    "src": "37962:435:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2394,
                            "name": "interestRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2388,
                            "src": "37966:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2396,
                                "name": "borrowAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2381,
                                "src": "38006:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2397,
                                "name": "assetSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2383,
                                "src": "38020:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2395,
                              "name": "_nextBorrowInterestRate2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3200,
                              "src": "37981:24:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) view returns (uint256)"
                              }
                            },
                            "id": 2398,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "37981:51:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "37966:66:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2400,
                        "nodeType": "ExpressionStatement",
                        "src": "37966:66:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2401,
                            "name": "newBorrowAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2392,
                            "src": "38144:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    },
                                    "id": 2413,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 2411,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "38213:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3138",
                                      "id": 2412,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "38217:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_18_by_1",
                                        "typeString": "int_const 18"
                                      },
                                      "value": "18"
                                    },
                                    "src": "38213:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_rational_3153600000000000000000000000_by_1",
                                          "typeString": "int_const 3153600000000000000000000000"
                                        },
                                        "id": 2428,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "3331353336303030",
                                          "id": 2424,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "38279:8:5",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_31536000_by_1",
                                            "typeString": "int_const 31536000"
                                          },
                                          "value": "31536000"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                            "typeString": "int_const 100000000000000000000"
                                          },
                                          "id": 2427,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3130",
                                            "id": 2425,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "38290:2:5",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3230",
                                            "id": 2426,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "38294:2:5",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_20_by_1",
                                              "typeString": "int_const 20"
                                            },
                                            "value": "20"
                                          },
                                          "src": "38290:6:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                            "typeString": "int_const 100000000000000000000"
                                          }
                                        },
                                        "src": "38279:17:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_3153600000000000000000000000_by_1",
                                          "typeString": "int_const 3153600000000000000000000000"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_3153600000000000000000000000_by_1",
                                          "typeString": "int_const 3153600000000000000000000000"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                              "typeString": "int_const 1000000000000000000"
                                            },
                                            "id": 2421,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3130",
                                              "id": 2419,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "38267:2:5",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                              },
                                              "value": "10"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "**",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3138",
                                              "id": 2420,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "38271:2:5",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_18_by_1",
                                                "typeString": "int_const 18"
                                              },
                                              "value": "18"
                                            },
                                            "src": "38267:6:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                              "typeString": "int_const 1000000000000000000"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                              "typeString": "int_const 1000000000000000000"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2416,
                                                "name": "initialLoanDuration",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2385,
                                                "src": "38242:19:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 2414,
                                                "name": "interestRate",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2388,
                                                "src": "38225:12:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 2415,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 42153,
                                              "src": "38225:16:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 2417,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "38225:37:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2418,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42153,
                                          "src": "38225:41:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 2422,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "38225:49:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2423,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42169,
                                      "src": "38225:53:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 2429,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "38225:72:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2409,
                                    "name": "SafeMath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42309,
                                    "src": "38195:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_SafeMath_$42309_$",
                                      "typeString": "type(library SafeMath)"
                                    }
                                  },
                                  "id": 2410,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42092,
                                  "src": "38195:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "38195:132:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    },
                                    "id": 2406,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 2404,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "38179:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3138",
                                      "id": 2405,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "38183:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_18_by_1",
                                        "typeString": "int_const 18"
                                      },
                                      "value": "18"
                                    },
                                    "src": "38179:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2402,
                                    "name": "borrowAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2381,
                                    "src": "38162:12:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2403,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "38162:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "38162:24:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "38162:28:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "38162:169:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "38144:187:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2433,
                        "nodeType": "ExpressionStatement",
                        "src": "38144:187:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2434,
                            "name": "interestInitialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2390,
                            "src": "38336:21:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2437,
                                "name": "borrowAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2381,
                                "src": "38380:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2435,
                                "name": "newBorrowAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2392,
                                "src": "38360:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "38360:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "38360:33:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "38336:57:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2440,
                        "nodeType": "ExpressionStatement",
                        "src": "38336:57:5"
                      }
                    ]
                  },
                  "documentation": "@notice Compute interest rate and other loan parameters.\n\t * @param borrowAmount The amount of tokens to borrow.\n@param assetSupply The amount of loan tokens supplied.\n@param initialLoanDuration The duration of the loan in seconds.\n  If the loan is not paid back until then, it'll need to be rolled over.\n\t * @return The interest rate, the interest calculated based on fixed-term\n  loan, and the new borrow amount.\n",
                  "id": 2442,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getInterestRateAndBorrowAmount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2386,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2381,
                        "name": "borrowAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2442,
                        "src": "37738:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2380,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "37738:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2383,
                        "name": "assetSupply",
                        "nodeType": "VariableDeclaration",
                        "scope": 2442,
                        "src": "37762:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2382,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "37762:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2385,
                        "name": "initialLoanDuration",
                        "nodeType": "VariableDeclaration",
                        "scope": 2442,
                        "src": "37785:27:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2384,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "37785:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "37734:106:5"
                  },
                  "returnParameters": {
                    "id": 2393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2388,
                        "name": "interestRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 2442,
                        "src": "37874:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "37874:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2390,
                        "name": "interestInitialAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2442,
                        "src": "37899:29:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2389,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "37899:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2392,
                        "name": "newBorrowAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2442,
                        "src": "37933:23:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2391,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "37933:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "37869:91:5"
                  },
                  "scope": 3574,
                  "src": "37694:703:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2620,
                    "nodeType": "Block",
                    "src": "39491:1830:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2467,
                            "name": "_checkPause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3382,
                            "src": "39495:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 2468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39495:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2469,
                        "nodeType": "ExpressionStatement",
                        "src": "39495:13:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2471,
                                    "name": "sentAmounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2458,
                                    "src": "39524:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                      "typeString": "uint256[5] memory"
                                    }
                                  },
                                  "id": 2473,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2472,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "39536:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "39524:14:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 2474,
                                    "name": "_underlyingBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2891,
                                    "src": "39542:18:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view returns (uint256)"
                                    }
                                  },
                                  "id": 2475,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "39542:20:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "39524:38:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2477,
                                    "name": "sentAddresses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2454,
                                    "src": "39612:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                      "typeString": "address[4] memory"
                                    }
                                  },
                                  "id": 2479,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2478,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "39626:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "39612:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2481,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "39640:1:5",
                                      "subdenomination": null,
                                      "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": 2480,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "39632:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 2482,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "39632:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "39612:30:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "39524:118:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3234",
                              "id": 2485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "39665:4:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6585423cb6456b1d4957f6454d2f004f0c4f58d53a00082412d5c2ef4b1b31fd",
                                "typeString": "literal_string \"24\""
                              },
                              "value": "24"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6585423cb6456b1d4957f6454d2f004f0c4f58d53a00082412d5c2ef4b1b31fd",
                                "typeString": "literal_string \"24\""
                              }
                            ],
                            "id": 2470,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "39512:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39512:161:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2487,
                        "nodeType": "ExpressionStatement",
                        "src": "39512:161:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2488,
                              "name": "sentAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2454,
                              "src": "39682:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              }
                            },
                            "id": 2490,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "39696:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "39682:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2492,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "39710:1:5",
                                "subdenomination": null,
                                "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": 2491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "39702:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "39702:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "39682:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2504,
                        "nodeType": "IfStatement",
                        "src": "39678:114:5",
                        "trueBody": {
                          "id": 2503,
                          "nodeType": "Block",
                          "src": "39714:78:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2495,
                                    "name": "sentAddresses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2454,
                                    "src": "39719:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                      "typeString": "address[4] memory"
                                    }
                                  },
                                  "id": 2497,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2496,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "39733:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "39719:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2498,
                                    "name": "sentAddresses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2454,
                                    "src": "39738:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                      "typeString": "address[4] memory"
                                    }
                                  },
                                  "id": 2500,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2499,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "39752:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "39738:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "39719:35:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2502,
                              "nodeType": "ExpressionStatement",
                              "src": "39719:35:5"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2506
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2506,
                            "name": "msgValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 2620,
                            "src": "39870:16:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2505,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "39870:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2513,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2508,
                              "name": "collateralTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2450,
                              "src": "39906:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2509,
                              "name": "sentAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2454,
                              "src": "39930:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2510,
                              "name": "sentAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2458,
                              "src": "39945:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2511,
                              "name": "withdrawAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2446,
                              "src": "39958:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2507,
                            "name": "_verifyTransfers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2779,
                            "src": "39889:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_address_$4_memory_ptr_$_t_array$_t_uint256_$5_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,address[4] memory,uint256[5] memory,uint256) returns (uint256)"
                            }
                          },
                          "id": 2512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39889:84:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "39870:103:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2514,
                              "name": "sentAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2458,
                              "src": "40124:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              }
                            },
                            "id": 2516,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "33",
                              "id": 2515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "40136:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "40124:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2521,
                                  "name": "sentAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2458,
                                  "src": "40160:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 2523,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2522,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "40172:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "40160:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2517,
                                  "name": "sentAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2458,
                                  "src": "40141:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 2519,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "33",
                                  "id": 2518,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "40153:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_3_by_1",
                                    "typeString": "int_const 3"
                                  },
                                  "value": "3"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "40141:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "40141:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "40141:34:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "40124:51:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2526,
                        "nodeType": "ExpressionStatement",
                        "src": "40124:51:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2527,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2446,
                            "src": "40201:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2528,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "40219:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "40201:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2542,
                        "nodeType": "IfStatement",
                        "src": "40197:184:5",
                        "trueBody": {
                          "id": 2541,
                          "nodeType": "Block",
                          "src": "40222:159:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2530,
                                    "name": "sentAmounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2458,
                                    "src": "40325:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                      "typeString": "uint256[5] memory"
                                    }
                                  },
                                  "id": 2532,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "33",
                                    "id": 2531,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "40337:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_3_by_1",
                                      "typeString": "int_const 3"
                                    },
                                    "value": "3"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "40325:14:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2537,
                                      "name": "withdrawAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2446,
                                      "src": "40361:14:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2533,
                                        "name": "sentAmounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2458,
                                        "src": "40342:11:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                          "typeString": "uint256[5] memory"
                                        }
                                      },
                                      "id": 2535,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "33",
                                        "id": 2534,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "40354:1:5",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_3_by_1",
                                          "typeString": "int_const 3"
                                        },
                                        "value": "3"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "40342:14:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2536,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "40342:18:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2538,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "40342:34:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "40325:51:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2540,
                              "nodeType": "ExpressionStatement",
                              "src": "40325:51:5"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2544
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2544,
                            "name": "withdrawAmountExist",
                            "nodeType": "VariableDeclaration",
                            "scope": 2620,
                            "src": "40385:24:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2543,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "40385:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2546,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 2545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "40412:5:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "40385:32:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2547,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2446,
                            "src": "40480:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2548,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "40498:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "40480:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2555,
                        "nodeType": "IfStatement",
                        "src": "40476:61:5",
                        "trueBody": {
                          "id": 2554,
                          "nodeType": "Block",
                          "src": "40501:36:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2550,
                                  "name": "withdrawAmountExist",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2544,
                                  "src": "40506:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 2551,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "40528:4:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "40506:26:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2553,
                              "nodeType": "ExpressionStatement",
                              "src": "40506:26:5"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2557
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2557,
                            "name": "loanParamsId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2620,
                            "src": "40541:20:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2556,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "40541:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2569,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2558,
                            "name": "loanParamsIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 502,
                            "src": "40564:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                              "typeString": "mapping(uint256 => bytes32)"
                            }
                          },
                          "id": 2568,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2563,
                                        "name": "collateralTokenAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2450,
                                        "src": "40613:22:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2564,
                                        "name": "withdrawAmountExist",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2544,
                                        "src": "40637:19:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2561,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44981,
                                        "src": "40596:3:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 2562,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodePacked",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "40596:16:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 2565,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "40596:61:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 2560,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44988,
                                  "src": "40586:9:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 2566,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "40586:72:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 2559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "40578:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 2567,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "40578:81:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "40564:96:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "40541:119:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2570,
                                  "name": "sentAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2458,
                                  "src": "40666:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 2572,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2571,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "40678:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "40666:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2573,
                                  "name": "sentAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2458,
                                  "src": "40682:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 2575,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "34",
                                  "id": 2574,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "40694:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "40682:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2576,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "40665:32:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2584,
                                "name": "loanParamsId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2557,
                                "src": "40810:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2585,
                                "name": "loanId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2444,
                                "src": "40827:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2586,
                                "name": "withdrawAmountExist",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2544,
                                "src": "40838:19:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2587,
                                "name": "initialMargin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2448,
                                "src": "40862:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2588,
                                "name": "sentAddresses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2454,
                                "src": "40880:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                  "typeString": "address[4] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2589,
                                "name": "sentAmounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2458,
                                "src": "40898:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                  "typeString": "uint256[5] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2590,
                                "name": "loanDataBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2460,
                                "src": "40914:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                  "typeString": "address[4] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                  "typeString": "uint256[5] memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2582,
                                  "name": "msgValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2506,
                                  "src": "40764:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2578,
                                        "name": "sovrynContractAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3827,
                                        "src": "40713:21:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2577,
                                      "name": "ProtocolLike",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4371,
                                      "src": "40700:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ProtocolLike_$4371_$",
                                        "typeString": "type(contract ProtocolLike)"
                                      }
                                    },
                                    "id": 2579,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "40700:35:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ProtocolLike_$4371",
                                      "typeString": "contract ProtocolLike"
                                    }
                                  },
                                  "id": 2580,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "borrowOrTradeFromPool",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4262,
                                  "src": "40700:57:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$_t_bytes32_$_t_bytes32_$_t_bool_$_t_uint256_$_t_array$_t_address_$4_memory_ptr_$_t_array$_t_uint256_$5_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (bytes32,bytes32,bool,uint256,address[4] memory,uint256[5] memory,bytes memory) payable external returns (uint256,uint256)"
                                  }
                                },
                                "id": 2581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "40700:63:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$_t_bytes32_$_t_bytes32_$_t_bool_$_t_uint256_$_t_array$_t_address_$4_memory_ptr_$_t_array$_t_uint256_$5_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$value_$",
                                  "typeString": "function (uint256) pure returns (function (bytes32,bytes32,bool,uint256,address[4] memory,uint256[5] memory,bytes memory) payable external returns (uint256,uint256))"
                                }
                              },
                              "id": 2583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "40700:73:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$_t_bytes32_$_t_bytes32_$_t_bool_$_t_uint256_$_t_array$_t_address_$4_memory_ptr_$_t_array$_t_uint256_$5_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$value",
                                "typeString": "function (bytes32,bytes32,bool,uint256,address[4] memory,uint256[5] memory,bytes memory) payable external returns (uint256,uint256)"
                              }
                            },
                            "id": 2591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "40700:231:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "40665:266:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2593,
                        "nodeType": "ExpressionStatement",
                        "src": "40665:266:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2599,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2595,
                                  "name": "sentAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2458,
                                  "src": "40943:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 2597,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2596,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "40955:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "40943:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "40961:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "40943:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3235",
                              "id": 2600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "40964:4:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_81e080ffc23e8b8d44dd829bc823229e92b893eb1d8f624419d3f5682eb97fc3",
                                "typeString": "literal_string \"25\""
                              },
                              "value": "25"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_81e080ffc23e8b8d44dd829bc823229e92b893eb1d8f624419d3f5682eb97fc3",
                                "typeString": "literal_string \"25\""
                              }
                            ],
                            "id": 2594,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "40935:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "40935:34:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2602,
                        "nodeType": "ExpressionStatement",
                        "src": "40935:34:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2607,
                                "name": "sentAddresses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2454,
                                "src": "41225:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                  "typeString": "address[4] memory"
                                }
                              },
                              "id": 2609,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2608,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "41239:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "41225:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2604,
                                  "name": "sovrynContractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3827,
                                  "src": "41177:21:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2603,
                                "name": "ProtocolAffiliatesInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40355,
                                "src": "41149:27:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ProtocolAffiliatesInterface_$40355_$",
                                  "typeString": "type(contract ProtocolAffiliatesInterface)"
                                }
                              },
                              "id": 2605,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "41149:50:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ProtocolAffiliatesInterface_$40355",
                                "typeString": "contract ProtocolAffiliatesInterface"
                              }
                            },
                            "id": 2606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setUserNotFirstTradeFlag",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 40332,
                            "src": "41149:75:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 2610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "41149:93:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2611,
                        "nodeType": "ExpressionStatement",
                        "src": "41149:93:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2612,
                                "name": "sentAmounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2458,
                                "src": "41255:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                  "typeString": "uint256[5] memory"
                                }
                              },
                              "id": 2614,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2613,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "41267:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "41255:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2615,
                                "name": "sentAmounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2458,
                                "src": "41271:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                  "typeString": "uint256[5] memory"
                                }
                              },
                              "id": 2617,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 2616,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "41283:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "41271:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2618,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "41254:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 2466,
                        "id": 2619,
                        "nodeType": "Return",
                        "src": "41247:39:5"
                      }
                    ]
                  },
                  "documentation": "@notice Compute principal and collateral.\n\t * @param loanId The ID of the loan, 0 for a new loan.\n@param withdrawAmount The amount to be withdrawn (actually borrowed).\n@param initialMargin The initial margin with 18 decimals\n@param collateralTokenAddress  The address of the token to be used as\n  collateral. Cannot be the loan token address.\n@param sentAddresses The addresses to send tokens: lender, borrower,\n  receiver and manager.\n@param sentAmounts The amounts to send to each address.\n@param loanDataBytes Additional loan data (not in use for token swaps).\n\t * @return The new principal and the new collateral. Principal is the\n  complete borrowed amount (in loan tokens). Collateral is the complete\n  position size (loan + margin) (in collateral tokens).\n",
                  "id": 2621,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_borrowOrTrade",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2444,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2621,
                        "src": "39254:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2443,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "39254:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2446,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2621,
                        "src": "39272:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2445,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "39272:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2448,
                        "name": "initialMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 2621,
                        "src": "39298:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2447,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "39298:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2450,
                        "name": "collateralTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 2621,
                        "src": "39323:30:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2449,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39323:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2454,
                        "name": "sentAddresses",
                        "nodeType": "VariableDeclaration",
                        "scope": 2621,
                        "src": "39357:31:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                          "typeString": "address[4]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2451,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "39357:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2453,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 2452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "39365:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "39357:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$4_storage_ptr",
                            "typeString": "address[4]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2458,
                        "name": "sentAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 2621,
                        "src": "39392:29:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                          "typeString": "uint256[5]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2455,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "39392:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2457,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 2456,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "39400:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "39392:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                            "typeString": "uint256[5]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2460,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 2621,
                        "src": "39425:26:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2459,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "39425:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "39250:204:5"
                  },
                  "returnParameters": {
                    "id": 2466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2463,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2621,
                        "src": "39473:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2462,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "39473:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2465,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2621,
                        "src": "39482:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2464,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "39482:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "39472:18:5"
                  },
                  "scope": 3574,
                  "src": "39227:2094:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2778,
                    "nodeType": "Block",
                    "src": "42290:1491:5",
                    "statements": [
                      {
                        "assignments": [
                          2639
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2639,
                            "name": "_wrbtcToken",
                            "nodeType": "VariableDeclaration",
                            "scope": 2778,
                            "src": "42294:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2638,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "42294:7:5",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2641,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 2640,
                          "name": "wrbtcTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3829,
                          "src": "42316:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "42294:39:5"
                      },
                      {
                        "assignments": [
                          2643
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2643,
                            "name": "_loanTokenAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 2778,
                            "src": "42337:25:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2642,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "42337:7:5",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2645,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 2644,
                          "name": "loanTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 476,
                          "src": "42365:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "42337:44:5"
                      },
                      {
                        "assignments": [
                          2647
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2647,
                            "name": "receiver",
                            "nodeType": "VariableDeclaration",
                            "scope": 2778,
                            "src": "42385:16:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2646,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "42385:7:5",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2651,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2648,
                            "name": "sentAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2627,
                            "src": "42404:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                              "typeString": "address[4] memory"
                            }
                          },
                          "id": 2650,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 2649,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42418:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "42404:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "42385:35:5"
                      },
                      {
                        "assignments": [
                          2653
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2653,
                            "name": "newPrincipal",
                            "nodeType": "VariableDeclaration",
                            "scope": 2778,
                            "src": "42424:20:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2652,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "42424:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2657,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2654,
                            "name": "sentAmounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2631,
                            "src": "42447:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                              "typeString": "uint256[5] memory"
                            }
                          },
                          "id": 2656,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2655,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42459:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "42447:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "42424:37:5"
                      },
                      {
                        "assignments": [
                          2659
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2659,
                            "name": "loanTokenSent",
                            "nodeType": "VariableDeclaration",
                            "scope": 2778,
                            "src": "42465:21:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2658,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "42465:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2663,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2660,
                            "name": "sentAmounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2631,
                            "src": "42489:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                              "typeString": "uint256[5] memory"
                            }
                          },
                          "id": 2662,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "33",
                            "id": 2661,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42501:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "42489:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "42465:38:5"
                      },
                      {
                        "assignments": [
                          2665
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2665,
                            "name": "collateralTokenSent",
                            "nodeType": "VariableDeclaration",
                            "scope": 2778,
                            "src": "42507:27:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2664,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "42507:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2669,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2666,
                            "name": "sentAmounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2631,
                            "src": "42537:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                              "typeString": "uint256[5] memory"
                            }
                          },
                          "id": 2668,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 2667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42549:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "42537:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "42507:44:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2671,
                                "name": "_loanTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2643,
                                "src": "42564:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2672,
                                "name": "collateralTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2623,
                                "src": "42585:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "42564:43:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3236",
                              "id": 2674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "42609:4:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9cce9eb03c9f29c6481fca9f0f942b15bef0bbbc47fda0ddb44df157019835d9",
                                "typeString": "literal_string \"26\""
                              },
                              "value": "26"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9cce9eb03c9f29c6481fca9f0f942b15bef0bbbc47fda0ddb44df157019835d9",
                                "typeString": "literal_string \"26\""
                              }
                            ],
                            "id": 2670,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "42556:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "42556:58:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2676,
                        "nodeType": "ExpressionStatement",
                        "src": "42556:58:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2677,
                            "name": "msgValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2636,
                            "src": "42619:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2678,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "42630:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2679,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "42630:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "42619:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2681,
                        "nodeType": "ExpressionStatement",
                        "src": "42619:20:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2682,
                            "name": "withdrawalAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2633,
                            "src": "42648:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2683,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42668:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "42648:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2714,
                          "nodeType": "Block",
                          "src": "42926:85:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2708,
                                    "name": "_loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2643,
                                    "src": "42945:17:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2709,
                                    "name": "sovrynContractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3827,
                                    "src": "42964:21:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2710,
                                    "name": "newPrincipal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2653,
                                    "src": "42987:12:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "3237",
                                    "id": 2711,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "43001:4:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43",
                                      "typeString": "literal_string \"27\""
                                    },
                                    "value": "27"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43",
                                      "typeString": "literal_string \"27\""
                                    }
                                  ],
                                  "id": 2707,
                                  "name": "_safeTransfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2806,
                                  "src": "42931:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,string memory)"
                                  }
                                },
                                "id": 2712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "42931:75:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2713,
                              "nodeType": "ExpressionStatement",
                              "src": "42931:75:5"
                            }
                          ]
                        },
                        "id": 2715,
                        "nodeType": "IfStatement",
                        "src": "42644:367:5",
                        "trueBody": {
                          "id": 2706,
                          "nodeType": "Block",
                          "src": "42671:249:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2686,
                                    "name": "_loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2643,
                                    "src": "42720:17:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2687,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2647,
                                    "src": "42739:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2688,
                                    "name": "withdrawalAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2633,
                                    "src": "42749:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "",
                                    "id": 2689,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "42767:2:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 2685,
                                  "name": "_safeTransfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2806,
                                  "src": "42706:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,string memory)"
                                  }
                                },
                                "id": 2690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "42706:64:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2691,
                              "nodeType": "ExpressionStatement",
                              "src": "42706:64:5"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2694,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2692,
                                  "name": "newPrincipal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2653,
                                  "src": "42779:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2693,
                                  "name": "withdrawalAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2633,
                                  "src": "42794:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "42779:31:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2705,
                              "nodeType": "IfStatement",
                              "src": "42775:141:5",
                              "trueBody": {
                                "id": 2704,
                                "nodeType": "Block",
                                "src": "42812:104:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2696,
                                          "name": "_loanTokenAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2643,
                                          "src": "42832:17:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2697,
                                          "name": "sovrynContractAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3827,
                                          "src": "42851:21:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2700,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 2698,
                                            "name": "newPrincipal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2653,
                                            "src": "42874:12:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 2699,
                                            "name": "withdrawalAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2633,
                                            "src": "42889:16:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "42874:31:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "",
                                          "id": 2701,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "42907:2:5",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          },
                                          "value": ""
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          }
                                        ],
                                        "id": 2695,
                                        "name": "_safeTransfer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2806,
                                        "src": "42818:13:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,uint256,string memory)"
                                        }
                                      },
                                      "id": 2702,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "42818:92:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2703,
                                    "nodeType": "ExpressionStatement",
                                    "src": "42818:92:5"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2716,
                            "name": "collateralTokenSent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2665,
                            "src": "43195:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43218:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "43195:24:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2763,
                        "nodeType": "IfStatement",
                        "src": "43191:457:5",
                        "trueBody": {
                          "id": 2762,
                          "nodeType": "Block",
                          "src": "43221:427:5",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2729,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 2725,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 2721,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2719,
                                      "name": "collateralTokenAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2623,
                                      "src": "43230:22:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2720,
                                      "name": "_wrbtcToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2639,
                                      "src": "43256:11:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "43230:37:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2724,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2722,
                                      "name": "msgValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2636,
                                      "src": "43271:8:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2723,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "43283:1:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "43271:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "43230:54:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2728,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2726,
                                    "name": "msgValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2636,
                                    "src": "43288:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2727,
                                    "name": "collateralTokenSent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2665,
                                    "src": "43300:19:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "43288:31:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "43230:89:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2760,
                                "nodeType": "Block",
                                "src": "43527:117:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2752,
                                          "name": "collateralTokenAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2623,
                                          "src": "43551:22:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2753,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44994,
                                            "src": "43575:3:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 2754,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "43575:10:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2755,
                                          "name": "sovrynContractAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3827,
                                          "src": "43587:21:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2756,
                                          "name": "collateralTokenSent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2665,
                                          "src": "43610:19:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "32382d62",
                                          "id": 2757,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "43631:6:5",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_ae7154f1df4425cc5e1ee4e467d4e3a1c47d6d52e4b8451aad6dde5216fbc377",
                                            "typeString": "literal_string \"28-b\""
                                          },
                                          "value": "28-b"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_ae7154f1df4425cc5e1ee4e467d4e3a1c47d6d52e4b8451aad6dde5216fbc377",
                                            "typeString": "literal_string \"28-b\""
                                          }
                                        ],
                                        "id": 2751,
                                        "name": "_safeTransferFrom",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2836,
                                        "src": "43533:17:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,address,uint256,string memory)"
                                        }
                                      },
                                      "id": 2758,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "43533:105:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2759,
                                    "nodeType": "ExpressionStatement",
                                    "src": "43533:105:5"
                                  }
                                ]
                              },
                              "id": 2761,
                              "nodeType": "IfStatement",
                              "src": "43226:418:5",
                              "trueBody": {
                                "id": 2750,
                                "nodeType": "Block",
                                "src": "43321:200:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 2735,
                                            "name": "collateralTokenSent",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2665,
                                            "src": "43361:19:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 2731,
                                                  "name": "_wrbtcToken",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2639,
                                                  "src": "43334:11:5",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 2730,
                                                "name": "IWrbtc",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 25550,
                                                "src": "43327:6:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IWrbtc_$25550_$",
                                                  "typeString": "type(contract IWrbtc)"
                                                }
                                              },
                                              "id": 2732,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "43327:19:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IWrbtc_$25550",
                                                "typeString": "contract IWrbtc"
                                              }
                                            },
                                            "id": 2733,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "deposit",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 25544,
                                            "src": "43327:27:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                              "typeString": "function () payable external"
                                            }
                                          },
                                          "id": 2734,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "value",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "43327:33:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$",
                                            "typeString": "function (uint256) pure returns (function () payable external)"
                                          }
                                        },
                                        "id": 2736,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "43327:54:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                                          "typeString": "function () payable external"
                                        }
                                      },
                                      "id": 2737,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "43327:56:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2738,
                                    "nodeType": "ExpressionStatement",
                                    "src": "43327:56:5"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2740,
                                          "name": "collateralTokenAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2623,
                                          "src": "43403:22:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2741,
                                          "name": "sovrynContractAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3827,
                                          "src": "43427:21:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2742,
                                          "name": "collateralTokenSent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2665,
                                          "src": "43450:19:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "32382d61",
                                          "id": 2743,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "43471:6:5",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_6aff94a5fe89f997e22763f70bb010afce7c9ab528bc57800cb382e239a28056",
                                            "typeString": "literal_string \"28-a\""
                                          },
                                          "value": "28-a"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_6aff94a5fe89f997e22763f70bb010afce7c9ab528bc57800cb382e239a28056",
                                            "typeString": "literal_string \"28-a\""
                                          }
                                        ],
                                        "id": 2739,
                                        "name": "_safeTransfer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2806,
                                        "src": "43389:13:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,uint256,string memory)"
                                        }
                                      },
                                      "id": 2744,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "43389:89:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2745,
                                    "nodeType": "ExpressionStatement",
                                    "src": "43389:89:5"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2748,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2746,
                                        "name": "msgValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2636,
                                        "src": "43484:8:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "-=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 2747,
                                        "name": "collateralTokenSent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2665,
                                        "src": "43496:19:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "43484:31:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2749,
                                    "nodeType": "ExpressionStatement",
                                    "src": "43484:31:5"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2764,
                            "name": "loanTokenSent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2659,
                            "src": "43656:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2765,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43673:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "43656:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2777,
                        "nodeType": "IfStatement",
                        "src": "43652:126:5",
                        "trueBody": {
                          "id": 2776,
                          "nodeType": "Block",
                          "src": "43676:102:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2768,
                                    "name": "_loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2643,
                                    "src": "43699:17:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2769,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "43718:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2770,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "43718:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2771,
                                    "name": "sovrynContractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3827,
                                    "src": "43730:21:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2772,
                                    "name": "loanTokenSent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2659,
                                    "src": "43753:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "3239",
                                    "id": 2773,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "43768:4:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_7749cc8014201da2069c21d93ba99c584b6f62d393fde534ed47eac227e31561",
                                      "typeString": "literal_string \"29\""
                                    },
                                    "value": "29"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_7749cc8014201da2069c21d93ba99c584b6f62d393fde534ed47eac227e31561",
                                      "typeString": "literal_string \"29\""
                                    }
                                  ],
                                  "id": 2767,
                                  "name": "_safeTransferFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2836,
                                  "src": "43681:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,string memory)"
                                  }
                                },
                                "id": 2774,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "43681:92:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2775,
                              "nodeType": "ExpressionStatement",
                              "src": "43681:92:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice .\n\t * @param collateralTokenAddress The address of the token to be used as\n  collateral. Cannot be the loan token address.\n@param sentAddresses The addresses to send tokens: lender, borrower,\n  receiver and manager.\n@param sentAmounts The amounts to send to each address.\n@param withdrawalAmount The amount of tokens to withdraw.\n\t * @return msgValue The amount of rBTC sent minus the collateral on tokens.\n",
                  "id": 2779,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_verifyTransfers",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2623,
                        "name": "collateralTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 2779,
                        "src": "42124:30:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2622,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "42124:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2627,
                        "name": "sentAddresses",
                        "nodeType": "VariableDeclaration",
                        "scope": 2779,
                        "src": "42158:31:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                          "typeString": "address[4]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2624,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "42158:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2626,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 2625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42166:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "42158:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$4_storage_ptr",
                            "typeString": "address[4]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2631,
                        "name": "sentAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 2779,
                        "src": "42193:29:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                          "typeString": "uint256[5]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2628,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "42193:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2630,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 2629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42201:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "42193:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                            "typeString": "uint256[5]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2633,
                        "name": "withdrawalAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2779,
                        "src": "42226:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2632,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "42226:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "42120:133:5"
                  },
                  "returnParameters": {
                    "id": 2637,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2636,
                        "name": "msgValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 2779,
                        "src": "42272:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2635,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "42272:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "42271:18:5"
                  },
                  "scope": 3574,
                  "src": "42095:1686:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2805,
                    "nodeType": "Block",
                    "src": "44522:113:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2791,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2781,
                              "src": "44546:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2795,
                                          "name": "token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2781,
                                          "src": "44583:5:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 2794,
                                        "name": "IERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24699,
                                        "src": "44576:6:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                          "typeString": "type(contract IERC20)"
                                        }
                                      },
                                      "id": 2796,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "44576:13:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 2797,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transfer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24671,
                                    "src": "44576:22:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 2798,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "44576:31:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2799,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2783,
                                  "src": "44609:2:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2800,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2785,
                                  "src": "44613:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2792,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "44553:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "44553:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 2801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "44553:67:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2802,
                              "name": "errorMsg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2787,
                              "src": "44622:8:5",
                              "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_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 2790,
                            "name": "_callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2876,
                            "src": "44526:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (address,bytes memory,string memory)"
                            }
                          },
                          "id": 2803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "44526:105:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2804,
                        "nodeType": "ExpressionStatement",
                        "src": "44526:105:5"
                      }
                    ]
                  },
                  "documentation": "@notice Execute the ERC20 token's `transfer` function and reverts\nupon failure the main purpose of this function is to prevent a non\nstandard ERC20 token from failing silently.\n\t * @dev Wrappers around ERC20 operations that throw on failure (when the\ntoken contract returns false). Tokens that return no value (and instead\nrevert or throw on failure) are also supported, non-reverting calls are\nassumed to be successful.\n\t * @param token The ERC20 token address.\n@param to The target address.\n@param amount The transfer amount.\n@param errorMsg The error message on failure.",
                  "id": 2806,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeTransfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2788,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2781,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 2806,
                        "src": "44438:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2780,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "44438:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2783,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2806,
                        "src": "44455:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2782,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "44455:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2785,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2806,
                        "src": "44469:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2784,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "44469:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2787,
                        "name": "errorMsg",
                        "nodeType": "VariableDeclaration",
                        "scope": 2806,
                        "src": "44487:22:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2786,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "44487:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "44434:78:5"
                  },
                  "returnParameters": {
                    "id": 2789,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "44522:0:5"
                  },
                  "scope": 3574,
                  "src": "44412:223:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2835,
                    "nodeType": "Block",
                    "src": "45436:123:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2820,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2808,
                              "src": "45460:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2824,
                                          "name": "token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2808,
                                          "src": "45497:5:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 2823,
                                        "name": "IERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24699,
                                        "src": "45490:6:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                          "typeString": "type(contract IERC20)"
                                        }
                                      },
                                      "id": 2825,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "45490:13:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 2826,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transferFrom",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24682,
                                    "src": "45490:26:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 2827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "45490:35:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2828,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2810,
                                  "src": "45527:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2829,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2812,
                                  "src": "45533:2:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2830,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2814,
                                  "src": "45537:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2821,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "45467:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2822,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "45467:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 2831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "45467:77:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2832,
                              "name": "errorMsg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2816,
                              "src": "45546:8:5",
                              "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_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 2819,
                            "name": "_callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2876,
                            "src": "45440:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (address,bytes memory,string memory)"
                            }
                          },
                          "id": 2833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "45440:115:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2834,
                        "nodeType": "ExpressionStatement",
                        "src": "45440:115:5"
                      }
                    ]
                  },
                  "documentation": "@notice Execute the ERC20 token's `transferFrom` function and reverts\nupon failure the main purpose of this function is to prevent a non\nstandard ERC20 token from failing silently.\n\t * @dev Wrappers around ERC20 operations that throw on failure (when the\ntoken contract returns false). Tokens that return no value (and instead\nrevert or throw on failure) are also supported, non-reverting calls are\nassumed to be successful.\n\t * @param token The ERC20 token address.\n@param from The source address.\n@param to The target address.\n@param amount The transfer amount.\n@param errorMsg The error message on failure.",
                  "id": 2836,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2817,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2808,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 2836,
                        "src": "45336:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2807,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "45336:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2810,
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2836,
                        "src": "45353:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2809,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "45353:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2812,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2836,
                        "src": "45369:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2811,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "45369:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2814,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2836,
                        "src": "45383:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2813,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "45383:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2816,
                        "name": "errorMsg",
                        "nodeType": "VariableDeclaration",
                        "scope": 2836,
                        "src": "45401:22:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2815,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "45401:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "45332:94:5"
                  },
                  "returnParameters": {
                    "id": 2818,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "45436:0:5"
                  },
                  "scope": 3574,
                  "src": "45306:253:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2875,
                    "nodeType": "Block",
                    "src": "46092:187:5",
                    "statements": [
                      {
                        "assignments": [
                          2846,
                          2848
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2846,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 2875,
                            "src": "46097:12:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2845,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "46097:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2848,
                            "name": "returndata",
                            "nodeType": "VariableDeclaration",
                            "scope": 2875,
                            "src": "46111:23:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2847,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "46111:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2853,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2851,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2840,
                              "src": "46149:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2849,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2838,
                              "src": "46138:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2850,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "46138:10:5",
                            "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": 2852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "46138:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "46096:58:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2855,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2846,
                              "src": "46166:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2856,
                              "name": "errorMsg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2842,
                              "src": "46175:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 2854,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "46158:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "46158:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2858,
                        "nodeType": "ExpressionStatement",
                        "src": "46158:26:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2859,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2848,
                              "src": "46193:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2860,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "46193:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "46214:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "46193:22:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2874,
                        "nodeType": "IfStatement",
                        "src": "46189:87:5",
                        "trueBody": {
                          "id": 2873,
                          "nodeType": "Block",
                          "src": "46217:59:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2866,
                                        "name": "returndata",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2848,
                                        "src": "46241:10:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 2867,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "46254:4:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": "bool"
                                          }
                                        ],
                                        "id": 2868,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "46253:6:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2864,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44981,
                                        "src": "46230:3:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 2865,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "46230:10:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 2869,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "46230:30:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2870,
                                    "name": "errorMsg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2842,
                                    "src": "46262:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2863,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "46222:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 2871,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "46222:49:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2872,
                              "nodeType": "ExpressionStatement",
                              "src": "46222:49:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Imitate a Solidity high-level call (i.e. a regular function\ncall to a contract), relaxing the requirement on the return value:\nthe return value is optional (but if data is returned, it must not be\nfalse).\n\t * @param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).\n@param errorMsg The error message on failure.\n",
                  "id": 2876,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callOptionalReturn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2843,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2838,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 2876,
                        "src": "46019:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2837,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "46019:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2840,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2876,
                        "src": "46036:17:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2839,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "46036:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2842,
                        "name": "errorMsg",
                        "nodeType": "VariableDeclaration",
                        "scope": 2876,
                        "src": "46057:22:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2841,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "46057:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "46015:67:5"
                  },
                  "returnParameters": {
                    "id": 2844,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "46092:0:5"
                  },
                  "scope": 3574,
                  "src": "45987:292:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2890,
                    "nodeType": "Block",
                    "src": "46460:64:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2886,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45050,
                                  "src": "46514:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                    "typeString": "contract LoanTokenLogicStandard"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                    "typeString": "contract LoanTokenLogicStandard"
                                  }
                                ],
                                "id": 2885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "46506:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "46506:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2882,
                                  "name": "loanTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 476,
                                  "src": "46478:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2881,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "46471:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "46471:24:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2884,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24644,
                            "src": "46471:34:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 2888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "46471:49:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2880,
                        "id": 2889,
                        "nodeType": "Return",
                        "src": "46464:56:5"
                      }
                    ]
                  },
                  "documentation": "@notice Get the loan contract balance.\n@return The balance of the loan token for this contract.\n",
                  "id": 2891,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_underlyingBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2877,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "46425:2:5"
                  },
                  "returnParameters": {
                    "id": 2880,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2879,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2891,
                        "src": "46451:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "46451:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "46450:9:5"
                  },
                  "scope": 3574,
                  "src": "46398:126:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2917,
                    "nodeType": "Block",
                    "src": "46770:143:5",
                    "statements": [
                      {
                        "assignments": [
                          2899
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2899,
                            "name": "totalTokenSupply",
                            "nodeType": "VariableDeclaration",
                            "scope": 2917,
                            "src": "46774:24:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2898,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "46774:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2901,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 2900,
                          "name": "totalSupply_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 234,
                          "src": "46801:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "46774:39:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2904,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2902,
                              "name": "totalTokenSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2899,
                              "src": "46825:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2903,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "46845:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "46825:21:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 2914,
                            "name": "initialPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 496,
                            "src": "46897:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "46825:84:5",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2912,
                                "name": "totalTokenSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2899,
                                "src": "46877:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    },
                                    "id": 2909,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 2907,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "46865:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3138",
                                      "id": 2908,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "46869:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_18_by_1",
                                        "typeString": "int_const 18"
                                      },
                                      "value": "18"
                                    },
                                    "src": "46865:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2905,
                                    "name": "assetSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2893,
                                    "src": "46849:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2906,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "46849:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2910,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "46849:23:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "46849:27:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2913,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "46849:45:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2897,
                        "id": 2916,
                        "nodeType": "Return",
                        "src": "46818:91:5"
                      }
                    ]
                  },
                  "documentation": "@notice Compute the token price.\n@param assetSupply The amount of loan tokens supplied.\n@return The token price.\n",
                  "id": 2918,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_tokenPrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2894,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2893,
                        "name": "assetSupply",
                        "nodeType": "VariableDeclaration",
                        "scope": 2918,
                        "src": "46717:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2892,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "46717:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "46716:21:5"
                  },
                  "returnParameters": {
                    "id": 2897,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2896,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2918,
                        "src": "46761:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2895,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "46761:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "46760:9:5"
                  },
                  "scope": 3574,
                  "src": "46696:217:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2948,
                    "nodeType": "Block",
                    "src": "47171:157:5",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2925,
                            "name": "assetBorrow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2920,
                            "src": "47179:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2926,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "47194:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "47179:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2947,
                        "nodeType": "IfStatement",
                        "src": "47175:150:5",
                        "trueBody": {
                          "id": 2946,
                          "nodeType": "Block",
                          "src": "47197:128:5",
                          "statements": [
                            {
                              "assignments": [
                                2929,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2929,
                                  "name": "interestOwedPerDay",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2946,
                                  "src": "47203:26:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2928,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "47203:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 2932,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2930,
                                  "name": "_getAllInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3244,
                                  "src": "47235:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function () view returns (uint256,uint256)"
                                  }
                                },
                                "id": 2931,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "47235:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "47202:50:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2943,
                                    "name": "assetBorrow",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2920,
                                    "src": "47308:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "333635",
                                        "id": 2940,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "47299:3:5",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_365_by_1",
                                          "typeString": "int_const 365"
                                        },
                                        "value": "365"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_365_by_1",
                                          "typeString": "int_const 365"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            },
                                            "id": 2937,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3130",
                                              "id": 2935,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "47287:2:5",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                              },
                                              "value": "10"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "**",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3230",
                                              "id": 2936,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "47291:2:5",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_20_by_1",
                                                "typeString": "int_const 20"
                                              },
                                              "value": "20"
                                            },
                                            "src": "47287:6:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2933,
                                            "name": "interestOwedPerDay",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2929,
                                            "src": "47264:18:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2934,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42153,
                                          "src": "47264:22:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 2938,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "47264:30:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2939,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42153,
                                      "src": "47264:34:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 2941,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "47264:39:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2942,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42169,
                                  "src": "47264:43:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2944,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "47264:56:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 2924,
                              "id": 2945,
                              "nodeType": "Return",
                              "src": "47257:63:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Compute the average borrow interest rate.\n@param assetBorrow The amount of loan tokens on debt.\n@return The average borrow interest rate.\n",
                  "id": 2949,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_avgBorrowInterestRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2921,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2920,
                        "name": "assetBorrow",
                        "nodeType": "VariableDeclaration",
                        "scope": 2949,
                        "src": "47118:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2919,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "47118:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "47117:21:5"
                  },
                  "returnParameters": {
                    "id": 2924,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2923,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2949,
                        "src": "47162:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2922,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "47162:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "47161:9:5"
                  },
                  "scope": 3574,
                  "src": "47086:242:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2995,
                    "nodeType": "Block",
                    "src": "47667:276:5",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2960,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2958,
                              "name": "assetBorrow",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2951,
                              "src": "47675:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "47690:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "47675:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2963,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2961,
                              "name": "assetSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2953,
                              "src": "47695:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2962,
                              "name": "assetBorrow",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2951,
                              "src": "47710:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "47695:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "47675:46:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2994,
                        "nodeType": "IfStatement",
                        "src": "47671:269:5",
                        "trueBody": {
                          "id": 2993,
                          "nodeType": "Block",
                          "src": "47723:217:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_rational_10000000000000000000000000000000000000000_by_1",
                                      "typeString": "int_const 1000...(33 digits omitted)...0000"
                                    },
                                    "id": 2990,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 2988,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "47928:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3430",
                                      "id": 2989,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "47932:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_40_by_1",
                                        "typeString": "int_const 40"
                                      },
                                      "value": "40"
                                    },
                                    "src": "47928:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10000000000000000000000000000000000000000_by_1",
                                      "typeString": "int_const 1000...(33 digits omitted)...0000"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_10000000000000000000000000000000000000000_by_1",
                                      "typeString": "int_const 1000...(33 digits omitted)...0000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            },
                                            "id": 2979,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3130",
                                              "id": 2977,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "47852:2:5",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                              },
                                              "value": "10"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "**",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3230",
                                              "id": 2978,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "47856:2:5",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_20_by_1",
                                                "typeString": "int_const 20"
                                              },
                                              "value": "20"
                                            },
                                            "src": "47852:6:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 2981,
                                                    "name": "sovrynContractAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3827,
                                                    "src": "47873:21:5",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 2980,
                                                  "name": "ProtocolLike",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4371,
                                                  "src": "47860:12:5",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_ProtocolLike_$4371_$",
                                                    "typeString": "type(contract ProtocolLike)"
                                                  }
                                                },
                                                "id": 2982,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "47860:35:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_ProtocolLike_$4371",
                                                  "typeString": "contract ProtocolLike"
                                                }
                                              },
                                              "id": 2983,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "lendingFeePercent",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4359,
                                              "src": "47860:53:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                "typeString": "function () view external returns (uint256)"
                                              }
                                            },
                                            "id": 2984,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "47860:55:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2975,
                                            "name": "SafeMath",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42309,
                                            "src": "47839:8:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_SafeMath_$42309_$",
                                              "typeString": "type(library SafeMath)"
                                            }
                                          },
                                          "id": 2976,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42092,
                                          "src": "47839:12:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 2985,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "47839:77:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2970,
                                                "name": "assetBorrow",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2951,
                                                "src": "47802:11:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2971,
                                                "name": "assetSupply",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2953,
                                                "src": "47815:11:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 2969,
                                              "name": "_utilizationRate",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3456,
                                              "src": "47785:16:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 2972,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "47785:42:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2966,
                                                "name": "assetBorrow",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2951,
                                                "src": "47762:11:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 2965,
                                              "name": "_avgBorrowInterestRate",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2949,
                                              "src": "47739:22:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256) view returns (uint256)"
                                              }
                                            },
                                            "id": 2967,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "47739:35:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2968,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42153,
                                          "src": "47739:45:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 2973,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "47739:89:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2974,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42153,
                                      "src": "47739:99:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 2986,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "47739:178:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2987,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42169,
                                  "src": "47739:188:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2991,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "47739:196:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 2957,
                              "id": 2992,
                              "nodeType": "Return",
                              "src": "47728:207:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Compute the next supply interest adjustment.\n@param assetBorrow The amount of loan tokens on debt.\n@param assetSupply The amount of loan tokens supplied.\n@return The next supply interest adjustment.\n",
                  "id": 2996,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_supplyInterestRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2954,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2951,
                        "name": "assetBorrow",
                        "nodeType": "VariableDeclaration",
                        "scope": 2996,
                        "src": "47595:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2950,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "47595:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2953,
                        "name": "assetSupply",
                        "nodeType": "VariableDeclaration",
                        "scope": 2996,
                        "src": "47616:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2952,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "47616:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "47594:42:5"
                  },
                  "returnParameters": {
                    "id": 2957,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2956,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2996,
                        "src": "47658:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2955,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "47658:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "47657:9:5"
                  },
                  "scope": 3574,
                  "src": "47566:377:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3049,
                    "nodeType": "Block",
                    "src": "48207:378:5",
                    "statements": [
                      {
                        "assignments": [
                          3004
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3004,
                            "name": "interestUnPaid",
                            "nodeType": "VariableDeclaration",
                            "scope": 3049,
                            "src": "48211:22:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3003,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "48211:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3005,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "48211:22:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3006,
                            "name": "borrowAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2998,
                            "src": "48241:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3007,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "48257:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "48241:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3041,
                        "nodeType": "IfStatement",
                        "src": "48237:260:5",
                        "trueBody": {
                          "id": 3040,
                          "nodeType": "Block",
                          "src": "48260:237:5",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint88",
                                  "typeString": "uint88"
                                },
                                "id": 3014,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3009,
                                  "name": "lastSettleTime_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 498,
                                  "src": "48269:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint88",
                                    "typeString": "uint88"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3011,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44984,
                                        "src": "48295:5:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 3012,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "48295:15:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 3010,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "48288:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint88_$",
                                      "typeString": "type(uint88)"
                                    },
                                    "typeName": "uint88"
                                  },
                                  "id": 3013,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "48288:23:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint88",
                                    "typeString": "uint88"
                                  }
                                },
                                "src": "48269:42:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 3022,
                              "nodeType": "IfStatement",
                              "src": "48265:98:5",
                              "trueBody": {
                                "id": 3021,
                                "nodeType": "Block",
                                "src": "48313:50:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3019,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "components": [
                                          null,
                                          {
                                            "argumentTypes": null,
                                            "id": 3015,
                                            "name": "interestUnPaid",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3004,
                                            "src": "48322:14:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 3016,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "48319:18:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$_t_uint256_$",
                                          "typeString": "tuple(,uint256)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 3017,
                                          "name": "_getAllInterest",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3244,
                                          "src": "48340:15:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                                            "typeString": "function () view returns (uint256,uint256)"
                                          }
                                        },
                                        "id": 3018,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "48340:17:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256)"
                                        }
                                      },
                                      "src": "48319:38:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3020,
                                    "nodeType": "ExpressionStatement",
                                    "src": "48319:38:5"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                3024
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3024,
                                  "name": "balance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3040,
                                  "src": "48368:15:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3023,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "48368:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3030,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3028,
                                    "name": "interestUnPaid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3004,
                                    "src": "48411:14:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 3025,
                                      "name": "_underlyingBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2891,
                                      "src": "48386:18:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                        "typeString": "function () view returns (uint256)"
                                      }
                                    },
                                    "id": 3026,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "48386:20:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3027,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "48386:24:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "48386:40:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "48368:58:5"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3031,
                                  "name": "borrowAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2998,
                                  "src": "48435:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3032,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3024,
                                  "src": "48450:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "48435:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 3039,
                              "nodeType": "IfStatement",
                              "src": "48431:62:5",
                              "trueBody": {
                                "id": 3038,
                                "nodeType": "Block",
                                "src": "48459:34:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3036,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 3034,
                                        "name": "borrowAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2998,
                                        "src": "48465:12:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 3035,
                                        "name": "balance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3024,
                                        "src": "48480:7:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "48465:22:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3037,
                                    "nodeType": "ExpressionStatement",
                                    "src": "48465:22:5"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3043,
                              "name": "borrowAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2998,
                              "src": "48533:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3045,
                                  "name": "interestUnPaid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3004,
                                  "src": "48565:14:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 3044,
                                "name": "_totalAssetSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3321,
                                "src": "48547:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) view returns (uint256)"
                                }
                              },
                              "id": 3046,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "48547:33:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3042,
                            "name": "_nextBorrowInterestRate2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3200,
                            "src": "48508:24:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view returns (uint256)"
                            }
                          },
                          "id": 3047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "48508:73:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3002,
                        "id": 3048,
                        "nodeType": "Return",
                        "src": "48501:80:5"
                      }
                    ]
                  },
                  "documentation": "@notice Compute the next borrow interest adjustment.\n@param borrowAmount The amount of tokens to borrow.\n@return The next borrow interest adjustment.\n",
                  "id": 3050,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_nextBorrowInterestRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2999,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2998,
                        "name": "borrowAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3050,
                        "src": "48153:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2997,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "48153:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "48152:22:5"
                  },
                  "returnParameters": {
                    "id": 3002,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3001,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3050,
                        "src": "48198:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3000,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "48198:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "48197:9:5"
                  },
                  "scope": 3574,
                  "src": "48120:465:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3199,
                    "nodeType": "Block",
                    "src": "49553:1276:5",
                    "statements": [
                      {
                        "assignments": [
                          3060
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3060,
                            "name": "utilRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 3199,
                            "src": "49557:16:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3059,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "49557:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3069,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3065,
                                  "name": "newBorrowAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3052,
                                  "src": "49616:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 3062,
                                    "name": "totalAssetBorrow",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1594,
                                    "src": "49593:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view returns (uint256)"
                                    }
                                  },
                                  "id": 3063,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "49593:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3064,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42076,
                                "src": "49593:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "49593:39:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3067,
                              "name": "assetSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3054,
                              "src": "49634:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3061,
                            "name": "_utilizationRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3456,
                            "src": "49576:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "49576:70:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "49557:89:5"
                      },
                      {
                        "assignments": [
                          3071
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3071,
                            "name": "thisMinRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 3199,
                            "src": "49651:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3070,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "49651:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3072,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "49651:19:5"
                      },
                      {
                        "assignments": [
                          3074
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3074,
                            "name": "thisMaxRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 3199,
                            "src": "49674:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3073,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "49674:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3075,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "49674:19:5"
                      },
                      {
                        "assignments": [
                          3077
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3077,
                            "name": "thisBaseRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 3199,
                            "src": "49697:20:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3076,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "49697:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3079,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 3078,
                          "name": "baseRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 478,
                          "src": "49720:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "49697:31:5"
                      },
                      {
                        "assignments": [
                          3081
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3081,
                            "name": "thisRateMultiplier",
                            "nodeType": "VariableDeclaration",
                            "scope": 3199,
                            "src": "49732:26:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3080,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "49732:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3083,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 3082,
                          "name": "rateMultiplier",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 480,
                          "src": "49761:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "49732:43:5"
                      },
                      {
                        "assignments": [
                          3085
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3085,
                            "name": "thisTargetLevel",
                            "nodeType": "VariableDeclaration",
                            "scope": 3199,
                            "src": "49779:23:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3084,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "49779:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3087,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 3086,
                          "name": "targetLevel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 486,
                          "src": "49805:11:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "49779:37:5"
                      },
                      {
                        "assignments": [
                          3089
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3089,
                            "name": "thisKinkLevel",
                            "nodeType": "VariableDeclaration",
                            "scope": 3199,
                            "src": "49820:21:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3088,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "49820:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3091,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 3090,
                          "name": "kinkLevel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 488,
                          "src": "49844:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "49820:33:5"
                      },
                      {
                        "assignments": [
                          3093
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3093,
                            "name": "thisMaxScaleRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 3199,
                            "src": "49857:24:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3092,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "49857:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3095,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 3094,
                          "name": "maxScaleRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 490,
                          "src": "49884:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "49857:39:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3096,
                            "name": "utilRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3060,
                            "src": "49905:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3097,
                            "name": "thisTargetLevel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3085,
                            "src": "49916:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "49905:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3104,
                        "nodeType": "IfStatement",
                        "src": "49901:143:5",
                        "trueBody": {
                          "id": 3103,
                          "nodeType": "Block",
                          "src": "49933:111:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3101,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3099,
                                  "name": "utilRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3060,
                                  "src": "50013:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 3100,
                                  "name": "thisTargetLevel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3085,
                                  "src": "50024:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "50013:26:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3102,
                              "nodeType": "ExpressionStatement",
                              "src": "50013:26:5"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3105,
                            "name": "utilRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3060,
                            "src": "50052:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3106,
                            "name": "thisKinkLevel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3089,
                            "src": "50063:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "50052:24:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3197,
                          "nodeType": "Block",
                          "src": "50525:301:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3168,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3157,
                                  "name": "nextRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3057,
                                  "src": "50530:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3166,
                                      "name": "thisBaseRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3077,
                                      "src": "50605:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3163,
                                          "name": "WEI_PERCENT_PRECISION",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 463,
                                          "src": "50578:21:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 3160,
                                              "name": "thisRateMultiplier",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3081,
                                              "src": "50554:18:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 3158,
                                              "name": "utilRate",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3060,
                                              "src": "50541:8:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 3159,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 42153,
                                            "src": "50541:12:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 3161,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "50541:32:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3162,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "div",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42169,
                                        "src": "50541:36:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3164,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "50541:59:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3165,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "50541:63:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 3167,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "50541:77:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "50530:88:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3169,
                              "nodeType": "ExpressionStatement",
                              "src": "50530:88:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3172,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3170,
                                  "name": "thisMinRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3071,
                                  "src": "50624:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 3171,
                                  "name": "thisBaseRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3077,
                                  "src": "50638:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "50624:26:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3173,
                              "nodeType": "ExpressionStatement",
                              "src": "50624:26:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3174,
                                  "name": "thisMaxRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3074,
                                  "src": "50655:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3177,
                                      "name": "thisBaseRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3077,
                                      "src": "50692:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3175,
                                      "name": "thisRateMultiplier",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3081,
                                      "src": "50669:18:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3176,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "50669:22:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 3178,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "50669:36:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "50655:50:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3180,
                              "nodeType": "ExpressionStatement",
                              "src": "50655:50:5"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3181,
                                  "name": "nextRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3057,
                                  "src": "50715:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3182,
                                  "name": "thisMinRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3071,
                                  "src": "50726:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "50715:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3190,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 3188,
                                    "name": "nextRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3057,
                                    "src": "50775:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 3189,
                                    "name": "thisMaxRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3074,
                                    "src": "50786:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "50775:22:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": null,
                                "id": 3195,
                                "nodeType": "IfStatement",
                                "src": "50771:50:5",
                                "trueBody": {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3193,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 3191,
                                      "name": "nextRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3057,
                                      "src": "50799:8:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 3192,
                                      "name": "thisMaxRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3074,
                                      "src": "50810:11:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "50799:22:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3194,
                                  "nodeType": "ExpressionStatement",
                                  "src": "50799:22:5"
                                }
                              },
                              "id": 3196,
                              "nodeType": "IfStatement",
                              "src": "50711:110:5",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3186,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 3184,
                                    "name": "nextRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3057,
                                    "src": "50739:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "id": 3185,
                                    "name": "thisMinRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3071,
                                    "src": "50750:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "50739:22:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3187,
                                "nodeType": "ExpressionStatement",
                                "src": "50739:22:5"
                              }
                            }
                          ]
                        },
                        "id": 3198,
                        "nodeType": "IfStatement",
                        "src": "50048:778:5",
                        "trueBody": {
                          "id": 3156,
                          "nodeType": "Block",
                          "src": "50078:441:5",
                          "statements": [
                            {
                              "assignments": [
                                3109
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3109,
                                  "name": "thisMaxRange",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3156,
                                  "src": "50132:20:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3108,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "50132:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3113,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3112,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3110,
                                  "name": "WEI_PERCENT_PRECISION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 463,
                                  "src": "50155:21:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3111,
                                  "name": "thisKinkLevel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3089,
                                  "src": "50179:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "50155:37:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "50132:60:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3116,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3114,
                                  "name": "utilRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3060,
                                  "src": "50221:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 3115,
                                  "name": "thisKinkLevel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3089,
                                  "src": "50233:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "50221:25:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3117,
                              "nodeType": "ExpressionStatement",
                              "src": "50221:25:5"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3118,
                                  "name": "utilRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3060,
                                  "src": "50255:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3119,
                                  "name": "thisMaxRange",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3109,
                                  "src": "50266:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "50255:23:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 3125,
                              "nodeType": "IfStatement",
                              "src": "50251:52:5",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3123,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 3121,
                                    "name": "utilRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3060,
                                    "src": "50280:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "id": 3122,
                                    "name": "thisMaxRange",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3109,
                                    "src": "50291:12:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "50280:23:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3124,
                                "nodeType": "ExpressionStatement",
                                "src": "50280:23:5"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3126,
                                  "name": "thisMaxRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3074,
                                  "src": "50309:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3135,
                                      "name": "WEI_PERCENT_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 463,
                                      "src": "50383:21:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3132,
                                          "name": "thisKinkLevel",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3089,
                                          "src": "50364:13:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 3129,
                                              "name": "thisBaseRate",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3077,
                                              "src": "50346:12:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 3127,
                                              "name": "thisRateMultiplier",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3081,
                                              "src": "50323:18:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 3128,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "add",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 42076,
                                            "src": "50323:22:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 3130,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "50323:36:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3131,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "50323:40:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3133,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "50323:55:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3134,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "50323:59:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 3136,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "50323:82:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "50309:96:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3138,
                              "nodeType": "ExpressionStatement",
                              "src": "50309:96:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3139,
                                  "name": "nextRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3057,
                                  "src": "50411:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3152,
                                      "name": "thisMaxRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3074,
                                      "src": "50502:11:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3149,
                                          "name": "thisMaxRange",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3109,
                                          "src": "50484:12:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 3144,
                                                  "name": "thisMaxScaleRate",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3093,
                                                  "src": "50448:16:5",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "id": 3145,
                                                  "name": "thisMaxRate",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3074,
                                                  "src": "50466:11:5",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 3142,
                                                  "name": "SafeMath",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 42309,
                                                  "src": "50435:8:5",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_SafeMath_$42309_$",
                                                    "typeString": "type(library SafeMath)"
                                                  }
                                                },
                                                "id": 3143,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 42092,
                                                "src": "50435:12:5",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 3146,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "50435:43:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 3140,
                                              "name": "utilRate",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3060,
                                              "src": "50422:8:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 3141,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 42153,
                                            "src": "50422:12:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 3147,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "50422:57:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3148,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "div",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42169,
                                        "src": "50422:61:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3150,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "50422:75:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3151,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "50422:79:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 3153,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "50422:92:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "50411:103:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3155,
                              "nodeType": "ExpressionStatement",
                              "src": "50411:103:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Compute the next borrow interest adjustment under target-kink\nlevel analysis.\n\t * The \"kink\" in the cDAI interest rate model reflects the utilization rate\nat which the slope of the interest rate goes from \"gradual\" to \"steep\".\nThat is, below this utilization rate, the slope of the interest rate\ncurve is gradual. Above this utilization rate, it is steep.\n\t * Because of this dynamic between the interest rate curves before and\nafter the \"kink\", the \"kink\" can be thought of as the target utilization\nrate. Above that rate, it quickly becomes expensive to borrow (and\ncommensurately lucrative for suppliers).\n\t * @param newBorrowAmount The new amount of tokens to borrow.\n@param assetSupply The amount of loan tokens supplied.\n@return The next borrow interest adjustment.\n",
                  "id": 3200,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_nextBorrowInterestRate2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3052,
                        "name": "newBorrowAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3200,
                        "src": "49466:23:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3051,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "49466:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3054,
                        "name": "assetSupply",
                        "nodeType": "VariableDeclaration",
                        "scope": 3200,
                        "src": "49491:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3053,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "49491:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "49465:46:5"
                  },
                  "returnParameters": {
                    "id": 3058,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3057,
                        "name": "nextRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 3200,
                        "src": "49535:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3056,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "49535:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "49534:18:5"
                  },
                  "scope": 3574,
                  "src": "49432:1397:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3243,
                    "nodeType": "Block",
                    "src": "51125:406:5",
                    "statements": [
                      {
                        "assignments": [
                          3208
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3208,
                            "name": "interestFeePercent",
                            "nodeType": "VariableDeclaration",
                            "scope": 3243,
                            "src": "51238:26:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3207,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "51238:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3209,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "51238:26:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              null,
                              null,
                              {
                                "argumentTypes": null,
                                "id": 3210,
                                "name": "interestOwedPerDay",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3203,
                                "src": "51273:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3211,
                                "name": "interestUnPaid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3205,
                                "src": "51293:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3212,
                                "name": "interestFeePercent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3208,
                                "src": "51309:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              null
                            ],
                            "id": 3213,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "51268:62:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$__$_t_uint256_$_t_uint256_$_t_uint256_$__$",
                              "typeString": "tuple(,,uint256,uint256,uint256,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3219,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45050,
                                    "src": "51403:4:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                      "typeString": "contract LoanTokenLogicStandard"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                      "typeString": "contract LoanTokenLogicStandard"
                                    }
                                  ],
                                  "id": 3218,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "51395:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 3220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "51395:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3221,
                                "name": "loanTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 476,
                                "src": "51413:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3215,
                                    "name": "sovrynContractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3827,
                                    "src": "51346:21:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3214,
                                  "name": "ProtocolLike",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4371,
                                  "src": "51333:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ProtocolLike_$4371_$",
                                    "typeString": "type(contract ProtocolLike)"
                                  }
                                },
                                "id": 3216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "51333:35:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ProtocolLike_$4371",
                                  "typeString": "contract ProtocolLike"
                                }
                              },
                              "id": 3217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getLenderInterestData",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4295,
                              "src": "51333:57:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address) view external returns (uint256,uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "id": 3222,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "51333:100:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "51268:165:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3224,
                        "nodeType": "ExpressionStatement",
                        "src": "51268:165:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3225,
                            "name": "interestUnPaid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3205,
                            "src": "51438:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "id": 3239,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 3237,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "51520:2:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3230",
                                  "id": 3238,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "51524:2:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "51520:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                          "typeString": "int_const 100000000000000000000"
                                        },
                                        "id": 3232,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "3130",
                                          "id": 3230,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "51487:2:5",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_10_by_1",
                                            "typeString": "int_const 10"
                                          },
                                          "value": "10"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "**",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "3230",
                                          "id": 3231,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "51491:2:5",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_20_by_1",
                                            "typeString": "int_const 20"
                                          },
                                          "value": "20"
                                        },
                                        "src": "51487:6:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                          "typeString": "int_const 100000000000000000000"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3233,
                                        "name": "interestFeePercent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3208,
                                        "src": "51495:18:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                          "typeString": "int_const 100000000000000000000"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3228,
                                        "name": "SafeMath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42309,
                                        "src": "51474:8:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_SafeMath_$42309_$",
                                          "typeString": "type(library SafeMath)"
                                        }
                                      },
                                      "id": 3229,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42092,
                                      "src": "51474:12:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 3234,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "51474:40:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3226,
                                    "name": "interestUnPaid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3205,
                                    "src": "51455:14:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3227,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "51455:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3235,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "51455:60:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "51455:64:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3240,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "51455:72:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "51438:89:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3242,
                        "nodeType": "ExpressionStatement",
                        "src": "51438:89:5"
                      }
                    ]
                  },
                  "documentation": "@notice Get two kind of interests: owed per day and yet to be paid.\n@return interestOwedPerDay The interest per day.\n@return interestUnPaid The interest not yet paid.\n",
                  "id": 3244,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAllInterest",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3201,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "51047:2:5"
                  },
                  "returnParameters": {
                    "id": 3206,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3203,
                        "name": "interestOwedPerDay",
                        "nodeType": "VariableDeclaration",
                        "scope": 3244,
                        "src": "51073:26:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3202,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "51073:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3205,
                        "name": "interestUnPaid",
                        "nodeType": "VariableDeclaration",
                        "scope": 3244,
                        "src": "51101:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3204,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "51101:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "51072:52:5"
                  },
                  "scope": 3574,
                  "src": "51023:508:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3284,
                    "nodeType": "Block",
                    "src": "52022:502:5",
                    "statements": [
                      {
                        "assignments": [
                          3256
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3256,
                            "name": "loanSizeBeforeInterest",
                            "nodeType": "VariableDeclaration",
                            "scope": 3284,
                            "src": "52026:30:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3255,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "52026:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3266,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              },
                              "id": 3264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130",
                                "id": 3262,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "52097:2:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3138",
                                "id": 3263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "52101:2:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_18_by_1",
                                  "typeString": "int_const 18"
                                },
                                "value": "18"
                              },
                              "src": "52097:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3259,
                                  "name": "leverageAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3246,
                                  "src": "52077:14:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3257,
                                  "name": "depositAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3248,
                                  "src": "52059:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3258,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "52059:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "52059:33:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "52059:37:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "52059:45:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "52026:78:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3267,
                            "name": "interestRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3253,
                            "src": "52279:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3269,
                                "name": "loanSizeBeforeInterest",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3256,
                                "src": "52319:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3271,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "52361:1:5",
                                    "subdenomination": null,
                                    "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": 3270,
                                  "name": "_totalAssetSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3321,
                                  "src": "52343:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) view returns (uint256)"
                                  }
                                },
                                "id": 3272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "52343:20:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3268,
                              "name": "_nextBorrowInterestRate2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3200,
                              "src": "52294:24:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) view returns (uint256)"
                              }
                            },
                            "id": 3273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "52294:70:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "52279:85:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3275,
                        "nodeType": "ExpressionStatement",
                        "src": "52279:85:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3276,
                            "name": "borrowAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3251,
                            "src": "52443:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3278,
                                "name": "interestRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3253,
                                "src": "52474:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "3238",
                                "id": 3279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "52488:7:5",
                                "subdenomination": "days",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2419200_by_1",
                                  "typeString": "int_const 2419200"
                                },
                                "value": "28"
                              },
                              {
                                "argumentTypes": null,
                                "id": 3280,
                                "name": "loanSizeBeforeInterest",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3256,
                                "src": "52497:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_2419200_by_1",
                                  "typeString": "int_const 2419200"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3277,
                              "name": "_adjustLoanSize",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3427,
                              "src": "52458:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3281,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "52458:62:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "52443:77:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3283,
                        "nodeType": "ExpressionStatement",
                        "src": "52443:77:5"
                      }
                    ]
                  },
                  "documentation": "@notice Compute the loan size and interest rate.\n@param leverageAmount The leverage with 18 decimals.\n@param depositAmount The amount the user deposited in underlying loan tokens.\n@return borrowAmount The amount of tokens to borrow.\n@return interestRate The interest rate to pay on the position.\n",
                  "id": 3285,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getMarginBorrowAmountAndRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3249,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3246,
                        "name": "leverageAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3285,
                        "src": "51901:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3245,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "51901:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3248,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3285,
                        "src": "51925:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3247,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "51925:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "51900:47:5"
                  },
                  "returnParameters": {
                    "id": 3254,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3251,
                        "name": "borrowAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3285,
                        "src": "51977:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3250,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "51977:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3253,
                        "name": "interestRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 3285,
                        "src": "51999:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3252,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "51999:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "51976:44:5"
                  },
                  "scope": 3574,
                  "src": "51862:662:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3320,
                    "nodeType": "Block",
                    "src": "52817:300:5",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3292,
                            "name": "totalSupply_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 234,
                            "src": "52825:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3293,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "52841:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "52825:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3319,
                        "nodeType": "IfStatement",
                        "src": "52821:293:5",
                        "trueBody": {
                          "id": 3318,
                          "nodeType": "Block",
                          "src": "52844:270:5",
                          "statements": [
                            {
                              "assignments": [
                                3296
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3296,
                                  "name": "assetsBalance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3318,
                                  "src": "52849:21:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3295,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "52849:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3298,
                              "initialValue": {
                                "argumentTypes": null,
                                "id": 3297,
                                "name": "_flTotalAssetSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 492,
                                "src": "52873:19:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "52849:43:5"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3301,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3299,
                                  "name": "assetsBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3296,
                                  "src": "52972:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3300,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "52989:1:5",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "52972:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 3312,
                              "nodeType": "IfStatement",
                              "src": "52968:96:5",
                              "trueBody": {
                                "id": 3311,
                                "nodeType": "Block",
                                "src": "52992:72:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3309,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 3302,
                                        "name": "assetsBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3296,
                                        "src": "52998:13:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "id": 3306,
                                              "name": "totalAssetBorrow",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1594,
                                              "src": "53039:16:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                "typeString": "function () view returns (uint256)"
                                              }
                                            },
                                            "id": 3307,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "53039:18:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "id": 3303,
                                              "name": "_underlyingBalance",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2891,
                                              "src": "53014:18:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                "typeString": "function () view returns (uint256)"
                                              }
                                            },
                                            "id": 3304,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "53014:20:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3305,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "53014:24:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 3308,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "53014:44:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "52998:60:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3310,
                                    "nodeType": "ExpressionStatement",
                                    "src": "52998:60:5"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3315,
                                    "name": "interestUnPaid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3287,
                                    "src": "53094:14:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3313,
                                    "name": "assetsBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3296,
                                    "src": "53076:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3314,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "53076:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3316,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "53076:33:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 3291,
                              "id": 3317,
                              "nodeType": "Return",
                              "src": "53069:40:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Compute the total amount of loan tokens on supply.\n@param interestUnPaid The interest not yet paid.\n@return assetSupply The total amount of loan tokens on supply.\n",
                  "id": 3321,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_totalAssetSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3288,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3287,
                        "name": "interestUnPaid",
                        "nodeType": "VariableDeclaration",
                        "scope": 3321,
                        "src": "52749:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3286,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "52749:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "52748:24:5"
                  },
                  "returnParameters": {
                    "id": 3291,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3290,
                        "name": "assetSupply",
                        "nodeType": "VariableDeclaration",
                        "scope": 3321,
                        "src": "52796:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3289,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "52796:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "52795:21:5"
                  },
                  "scope": 3574,
                  "src": "52722:395:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3354,
                    "nodeType": "Block",
                    "src": "53482:255:5",
                    "statements": [
                      {
                        "assignments": [
                          3329
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3329,
                            "name": "sig",
                            "nodeType": "VariableDeclaration",
                            "scope": 3354,
                            "src": "53486:10:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 3328,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "53486:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3338,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3334,
                                      "name": "funcId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3323,
                                      "src": "53533:6:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3332,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44981,
                                      "src": "53516:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 3333,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "53516:16:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 3335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "53516:24:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 3331,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44988,
                                "src": "53506:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 3336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "53506:35:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "53499:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes4_$",
                              "typeString": "type(bytes4)"
                            },
                            "typeName": "bytes4"
                          },
                          "id": 3337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "53499:43:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "53486:56:5"
                      },
                      {
                        "assignments": [
                          3340
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3340,
                            "name": "slot",
                            "nodeType": "VariableDeclaration",
                            "scope": 3354,
                            "src": "53546:12:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3339,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "53546:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3350,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3344,
                                  "name": "sig",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3329,
                                  "src": "53588:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "307864343661373034626332383564626436666635616433383633353036323630623164663032383132663466383537633863633835323331376136616336346632",
                                      "id": 3346,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "53601:66:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_96078384726591474532746498434765479118197112446299703977676695423578601710834_by_1",
                                        "typeString": "int_const 9607...(69 digits omitted)...0834"
                                      },
                                      "value": "0xd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_96078384726591474532746498434765479118197112446299703977676695423578601710834_by_1",
                                        "typeString": "int_const 9607...(69 digits omitted)...0834"
                                      }
                                    ],
                                    "id": 3345,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "53593:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": "uint256"
                                  },
                                  "id": 3347,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "53593:75:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3342,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "53571:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3343,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "53571:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 3348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "53571:98:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3341,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "53561:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "53561:109:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "53546:124:5"
                      },
                      {
                        "externalReferences": [
                          {
                            "isPaused": {
                              "declaration": 3326,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "53688:8:5",
                              "valueSize": 1
                            }
                          },
                          {
                            "slot": {
                              "declaration": 3340,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "53706:4:5",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 3351,
                        "nodeType": "InlineAssembly",
                        "operations": "{ isPaused := sload(slot) }",
                        "src": "53674:41:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3352,
                          "name": "isPaused",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3326,
                          "src": "53725:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3327,
                        "id": 3353,
                        "nodeType": "Return",
                        "src": "53718:15:5"
                      }
                    ]
                  },
                  "documentation": "@notice Check whether a function is paused.\n\t * @dev Used to read externally from the smart contract to see if a\n  function is paused.\n\t * @param funcId The function ID, the selector.\n\t * @return isPaused Whether the function is paused: true or false.\n",
                  "id": 3355,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "checkPause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3324,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3323,
                        "name": "funcId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3355,
                        "src": "53424:20:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3322,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "53424:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "53423:22:5"
                  },
                  "returnParameters": {
                    "id": 3327,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3326,
                        "name": "isPaused",
                        "nodeType": "VariableDeclaration",
                        "scope": 3355,
                        "src": "53467:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3325,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "53467:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "53466:15:5"
                  },
                  "scope": 3574,
                  "src": "53404:333:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3381,
                    "nodeType": "Block",
                    "src": "53952:275:5",
                    "statements": [
                      {
                        "assignments": [
                          3359
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3359,
                            "name": "slot",
                            "nodeType": "VariableDeclaration",
                            "scope": 3381,
                            "src": "53996:12:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3358,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "53996:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3370,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3363,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "54038:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 3364,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sig",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "54038:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "307864343661373034626332383564626436666635616433383633353036323630623164663032383132663466383537633863633835323331376136616336346632",
                                      "id": 3366,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "54055:66:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_96078384726591474532746498434765479118197112446299703977676695423578601710834_by_1",
                                        "typeString": "int_const 9607...(69 digits omitted)...0834"
                                      },
                                      "value": "0xd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_96078384726591474532746498434765479118197112446299703977676695423578601710834_by_1",
                                        "typeString": "int_const 9607...(69 digits omitted)...0834"
                                      }
                                    ],
                                    "id": 3365,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "54047:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": "uint256"
                                  },
                                  "id": 3367,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "54047:75:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3361,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "54021:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "54021:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 3368,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "54021:102:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3360,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "54011:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "54011:113:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "53996:128:5"
                      },
                      {
                        "assignments": [
                          3372
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3372,
                            "name": "isPaused",
                            "nodeType": "VariableDeclaration",
                            "scope": 3381,
                            "src": "54128:13:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3371,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "54128:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3373,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "54128:13:5"
                      },
                      {
                        "externalReferences": [
                          {
                            "isPaused": {
                              "declaration": 3372,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "54159:8:5",
                              "valueSize": 1
                            }
                          },
                          {
                            "slot": {
                              "declaration": 3359,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "54177:4:5",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 3374,
                        "nodeType": "InlineAssembly",
                        "operations": "{ isPaused := sload(slot) }",
                        "src": "54145:41:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "54197:9:5",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 3376,
                                "name": "isPaused",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3372,
                                "src": "54198:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 3378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "54208:14:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 3375,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "54189:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "54189:34:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3380,
                        "nodeType": "ExpressionStatement",
                        "src": "54189:34:5"
                      }
                    ]
                  },
                  "documentation": "@notice Make sure call is not paused.\n@dev Used for internal verification if the called function is paused.\n  It throws an exception in case it's not.\n",
                  "id": 3382,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkPause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3356,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "53935:2:5"
                  },
                  "returnParameters": {
                    "id": 3357,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "53952:0:5"
                  },
                  "scope": 3574,
                  "src": "53915:312:5",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3426,
                    "nodeType": "Block",
                    "src": "54820:217:5",
                    "statements": [
                      {
                        "assignments": [
                          3394
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3394,
                            "name": "interestForDuration",
                            "nodeType": "VariableDeclaration",
                            "scope": 3426,
                            "src": "54824:27:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3393,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "54824:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3402,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "333635",
                              "id": 3400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "54888:8:5",
                              "subdenomination": "days",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_31536000_by_1",
                                "typeString": "int_const 31536000"
                              },
                              "value": "365"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_31536000_by_1",
                                "typeString": "int_const 31536000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3397,
                                  "name": "maxDuration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3386,
                                  "src": "54871:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3395,
                                  "name": "interestRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3384,
                                  "src": "54854:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "54854:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "54854:29:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "54854:33:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "54854:43:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "54824:73:5"
                      },
                      {
                        "assignments": [
                          3404
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3404,
                            "name": "divisor",
                            "nodeType": "VariableDeclaration",
                            "scope": 3426,
                            "src": "54901:15:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3403,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "54901:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3413,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3411,
                              "name": "interestForDuration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3394,
                              "src": "54939:19:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                    "typeString": "int_const 100000000000000000000"
                                  },
                                  "id": 3408,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 3406,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "54927:2:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3230",
                                    "id": 3407,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "54931:2:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_20_by_1",
                                      "typeString": "int_const 20"
                                    },
                                    "value": "20"
                                  },
                                  "src": "54927:6:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                    "typeString": "int_const 100000000000000000000"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                    "typeString": "int_const 100000000000000000000"
                                  }
                                ],
                                "id": 3405,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "54919:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint256"
                              },
                              "id": 3409,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "54919:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "54919:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "54919:40:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "54901:58:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3414,
                            "name": "loanSizeWithInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3391,
                            "src": "54963:20:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3422,
                                "name": "divisor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3404,
                                "src": "55025:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                      "typeString": "int_const 100000000000000000000"
                                    },
                                    "id": 3419,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 3417,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "55013:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3230",
                                      "id": 3418,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "55017:2:5",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_20_by_1",
                                        "typeString": "int_const 20"
                                      },
                                      "value": "20"
                                    },
                                    "src": "55013:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                      "typeString": "int_const 100000000000000000000"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                      "typeString": "int_const 100000000000000000000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3415,
                                    "name": "loanSizeBeforeInterest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3388,
                                    "src": "54986:22:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3416,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "54986:26:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "54986:34:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3421,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "54986:38:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "54986:47:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "54963:70:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3425,
                        "nodeType": "ExpressionStatement",
                        "src": "54963:70:5"
                      }
                    ]
                  },
                  "documentation": "@notice Adjusts the loan size to make sure the expected exposure remains after prepaying the interest.\n@dev loanSizeWithInterest = loanSizeBeforeInterest * 100 / (100 - interestForDuration)\n@param interestRate The interest rate to pay on the position.\n@param maxDuration The maximum duration of the position (until rollover).\n@param loanSizeBeforeInterest The loan size before interest is added.\n",
                  "id": 3427,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_adjustLoanSize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3389,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3384,
                        "name": "interestRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 3427,
                        "src": "54686:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3383,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "54686:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3386,
                        "name": "maxDuration",
                        "nodeType": "VariableDeclaration",
                        "scope": 3427,
                        "src": "54710:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3385,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "54710:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3388,
                        "name": "loanSizeBeforeInterest",
                        "nodeType": "VariableDeclaration",
                        "scope": 3427,
                        "src": "54733:30:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "54733:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "54682:84:5"
                  },
                  "returnParameters": {
                    "id": 3392,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3391,
                        "name": "loanSizeWithInterest",
                        "nodeType": "VariableDeclaration",
                        "scope": 3427,
                        "src": "54790:28:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3390,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "54790:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "54789:30:5"
                  },
                  "scope": 3574,
                  "src": "54658:379:5",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3455,
                    "nodeType": "Block",
                    "src": "55401:145:5",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3436,
                              "name": "assetBorrow",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3429,
                              "src": "55409:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "55424:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "55409:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3441,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3439,
                              "name": "assetSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3431,
                              "src": "55429:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "55444:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "55429:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "55409:36:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3454,
                        "nodeType": "IfStatement",
                        "src": "55405:138:5",
                        "trueBody": {
                          "id": 3453,
                          "nodeType": "Block",
                          "src": "55447:96:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3450,
                                    "name": "assetSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3431,
                                    "src": "55526:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                          "typeString": "int_const 100000000000000000000"
                                        },
                                        "id": 3447,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "3130",
                                          "id": 3445,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "55514:2:5",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_10_by_1",
                                            "typeString": "int_const 10"
                                          },
                                          "value": "10"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "**",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "3230",
                                          "id": 3446,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "55518:2:5",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_20_by_1",
                                            "typeString": "int_const 20"
                                          },
                                          "value": "20"
                                        },
                                        "src": "55514:6:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                          "typeString": "int_const 100000000000000000000"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                          "typeString": "int_const 100000000000000000000"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3443,
                                        "name": "assetBorrow",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3429,
                                        "src": "55498:11:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3444,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42153,
                                      "src": "55498:15:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 3448,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "55498:23:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3449,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42169,
                                  "src": "55498:27:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "55498:40:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 3435,
                              "id": 3452,
                              "nodeType": "Return",
                              "src": "55491:47:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the utilization rate.\n@dev Utilization rate = assetBorrow / assetSupply\n@param assetBorrow The amount of loan tokens on debt.\n@param assetSupply The amount of loan tokens supplied.\n@return The utilization rate.\n",
                  "id": 3456,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_utilizationRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3432,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3429,
                        "name": "assetBorrow",
                        "nodeType": "VariableDeclaration",
                        "scope": 3456,
                        "src": "55327:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3428,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "55327:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3431,
                        "name": "assetSupply",
                        "nodeType": "VariableDeclaration",
                        "scope": 3456,
                        "src": "55348:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3430,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "55348:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "55326:42:5"
                  },
                  "returnParameters": {
                    "id": 3435,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3434,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3456,
                        "src": "55392:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3433,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "55392:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "55391:9:5"
                  },
                  "scope": 3574,
                  "src": "55301:245:5",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3467,
                    "nodeType": "Block",
                    "src": "55753:42:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3463,
                            "name": "liquidityMiningAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3839,
                            "src": "55757:22:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3464,
                            "name": "LMAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3458,
                            "src": "55782:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "55757:34:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3466,
                        "nodeType": "ExpressionStatement",
                        "src": "55757:34:5"
                      }
                    ]
                  },
                  "documentation": "@notice sets the liquidity mining contract address\n@param LMAddress the address of the liquidity mining contract",
                  "id": 3468,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3461,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3460,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "55743:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "55743:9:5"
                    }
                  ],
                  "name": "setLiquidityMiningAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3459,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3458,
                        "name": "LMAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 3468,
                        "src": "55715:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3457,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "55715:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "55714:19:5"
                  },
                  "returnParameters": {
                    "id": 3462,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "55753:0:5"
                  },
                  "scope": 3574,
                  "src": "55680:115:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3499,
                    "nodeType": "Block",
                    "src": "55894:340:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3477,
                            "name": "minted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3475,
                            "src": "55935:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3479,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3470,
                                "src": "55955:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3480,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3472,
                                "src": "55965:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3478,
                              "name": "_mintToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2057,
                              "src": "55944:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) returns (uint256)"
                              }
                            },
                            "id": 3481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "55944:35:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "55935:44:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3483,
                        "nodeType": "ExpressionStatement",
                        "src": "55935:44:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3485,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3470,
                              "src": "56066:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3486,
                              "name": "liquidityMiningAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3839,
                              "src": "56076:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3487,
                              "name": "minted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3475,
                              "src": "56100:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3488,
                              "name": "minted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3475,
                              "src": "56108:6:5",
                              "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_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3484,
                            "name": "_internalTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1295,
                            "src": "56044:21:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256,uint256) returns (bool)"
                            }
                          },
                          "id": 3489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "56044:71:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3490,
                        "nodeType": "ExpressionStatement",
                        "src": "56044:71:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3495,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3470,
                              "src": "56213:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3496,
                              "name": "minted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3475,
                              "src": "56223:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3492,
                                  "name": "liquidityMiningAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3839,
                                  "src": "56171:22:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3491,
                                "name": "ILiquidityMining",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6369,
                                "src": "56154:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ILiquidityMining_$6369_$",
                                  "typeString": "type(contract ILiquidityMining)"
                                }
                              },
                              "id": 3493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "56154:40:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityMining_$6369",
                                "typeString": "contract ILiquidityMining"
                              }
                            },
                            "id": 3494,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "onTokensDeposited",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6359,
                            "src": "56154:58:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 3497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "56154:76:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3498,
                        "nodeType": "ExpressionStatement",
                        "src": "56154:76:5"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3500,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintWithLM",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3473,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3470,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 3500,
                        "src": "55819:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3469,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "55819:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3472,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3500,
                        "src": "55837:21:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3471,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "55837:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "55818:41:5"
                  },
                  "returnParameters": {
                    "id": 3476,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3475,
                        "name": "minted",
                        "nodeType": "VariableDeclaration",
                        "scope": 3500,
                        "src": "55878:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3474,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "55878:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "55877:16:5"
                  },
                  "scope": 3574,
                  "src": "55798:436:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3572,
                    "nodeType": "Block",
                    "src": "56305:613:5",
                    "statements": [
                      {
                        "assignments": [
                          3508
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3508,
                            "name": "balanceOnLM",
                            "nodeType": "VariableDeclaration",
                            "scope": 3572,
                            "src": "56309:19:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3507,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "56309:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3519,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3514,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45050,
                                  "src": "56404:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                    "typeString": "contract LoanTokenLogicStandard"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                    "typeString": "contract LoanTokenLogicStandard"
                                  }
                                ],
                                "id": 3513,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "56396:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 3515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "56396:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3516,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "56411:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "56411:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3510,
                                  "name": "liquidityMiningAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3839,
                                  "src": "56348:22:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3509,
                                "name": "ILiquidityMining",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6369,
                                "src": "56331:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ILiquidityMining_$6369_$",
                                  "typeString": "type(contract ILiquidityMining)"
                                }
                              },
                              "id": 3511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "56331:40:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityMining_$6369",
                                "typeString": "contract ILiquidityMining"
                              }
                            },
                            "id": 3512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getUserPoolTokenBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6368,
                            "src": "56331:64:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 3518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "56331:91:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "56309:113:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3524,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44994,
                                          "src": "56460:3:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 3525,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "56460:10:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "id": 3523,
                                      "name": "balanceOf",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 254,
                                      "src": "56450:9:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view returns (uint256)"
                                      }
                                    },
                                    "id": 3526,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "56450:21:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3521,
                                    "name": "balanceOnLM",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3508,
                                    "src": "56434:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3522,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "56434:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3527,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "56434:38:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3528,
                                "name": "burnAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3502,
                                "src": "56476:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "56434:52:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6e6f7420656e6f7567682062616c616e6365",
                              "id": 3530,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "56488:20:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_596712763af5ad819c1a1c8db05ac93e50918d28937626717ff5e1d919b4454a",
                                "typeString": "literal_string \"not enough balance\""
                              },
                              "value": "not enough balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_596712763af5ad819c1a1c8db05ac93e50918d28937626717ff5e1d919b4454a",
                                "typeString": "literal_string \"not enough balance\""
                              }
                            ],
                            "id": 3520,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "56426:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "56426:83:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3532,
                        "nodeType": "ExpressionStatement",
                        "src": "56426:83:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3533,
                            "name": "balanceOnLM",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3508,
                            "src": "56518:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3534,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "56532:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "56518:15:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3567,
                        "nodeType": "IfStatement",
                        "src": "56514:330:5",
                        "trueBody": {
                          "id": 3566,
                          "nodeType": "Block",
                          "src": "56535:309:5",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3538,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3536,
                                  "name": "balanceOnLM",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3508,
                                  "src": "56607:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3537,
                                  "name": "burnAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3502,
                                  "src": "56621:10:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "56607:24:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 3564,
                                "nodeType": "Block",
                                "src": "56740:100:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 3557,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 45050,
                                              "src": "56804:4:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                                "typeString": "contract LoanTokenLogicStandard"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                                "typeString": "contract LoanTokenLogicStandard"
                                              }
                                            ],
                                            "id": 3556,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "56796:7:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": "address"
                                          },
                                          "id": 3558,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "56796:13:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3559,
                                          "name": "burnAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3502,
                                          "src": "56811:10:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3560,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44994,
                                            "src": "56823:3:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 3561,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "56823:10:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 3553,
                                              "name": "liquidityMiningAddress",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3839,
                                              "src": "56763:22:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 3552,
                                            "name": "ILiquidityMining",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6369,
                                            "src": "56746:16:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_ILiquidityMining_$6369_$",
                                              "typeString": "type(contract ILiquidityMining)"
                                            }
                                          },
                                          "id": 3554,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "56746:40:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ILiquidityMining_$6369",
                                            "typeString": "contract ILiquidityMining"
                                          }
                                        },
                                        "id": 3555,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "withdraw",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6352,
                                        "src": "56746:49:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$",
                                          "typeString": "function (address,uint256,address) external"
                                        }
                                      },
                                      "id": 3562,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "56746:88:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3563,
                                    "nodeType": "ExpressionStatement",
                                    "src": "56746:88:5"
                                  }
                                ]
                              },
                              "id": 3565,
                              "nodeType": "IfStatement",
                              "src": "56603:237:5",
                              "trueBody": {
                                "id": 3551,
                                "nodeType": "Block",
                                "src": "56633:101:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 3544,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 45050,
                                              "src": "56697:4:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                                "typeString": "contract LoanTokenLogicStandard"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                                                "typeString": "contract LoanTokenLogicStandard"
                                              }
                                            ],
                                            "id": 3543,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "56689:7:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": "address"
                                          },
                                          "id": 3545,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "56689:13:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3546,
                                          "name": "balanceOnLM",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3508,
                                          "src": "56704:11:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3547,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44994,
                                            "src": "56717:3:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 3548,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "56717:10:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 3540,
                                              "name": "liquidityMiningAddress",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3839,
                                              "src": "56656:22:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 3539,
                                            "name": "ILiquidityMining",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6369,
                                            "src": "56639:16:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_ILiquidityMining_$6369_$",
                                              "typeString": "type(contract ILiquidityMining)"
                                            }
                                          },
                                          "id": 3541,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "56639:40:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ILiquidityMining_$6369",
                                            "typeString": "contract ILiquidityMining"
                                          }
                                        },
                                        "id": 3542,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "withdraw",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6352,
                                        "src": "56639:49:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$",
                                          "typeString": "function (address,uint256,address) external"
                                        }
                                      },
                                      "id": 3549,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "56639:89:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3550,
                                    "nodeType": "ExpressionStatement",
                                    "src": "56639:89:5"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3569,
                              "name": "burnAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3502,
                              "src": "56903:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3568,
                            "name": "_burnToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2259,
                            "src": "56892:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) returns (uint256)"
                            }
                          },
                          "id": 3570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "56892:22:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3506,
                        "id": 3571,
                        "nodeType": "Return",
                        "src": "56885:29:5"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3573,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnFromLM",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3503,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3502,
                        "name": "burnAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3573,
                        "src": "56258:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3501,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "56258:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "56257:20:5"
                  },
                  "returnParameters": {
                    "id": 3506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3505,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3573,
                        "src": "56296:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3504,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "56296:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "56295:9:5"
                  },
                  "scope": 3574,
                  "src": "56237:681:5",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 3575,
              "src": "2146:54774:5"
            }
          ],
          "src": "118:56803:5"
        },
        "id": 5
      },
      "contracts/connectors/loantoken/LoanTokenLogicWrbtc.sol": {
        "ast": {
          "absolutePath": "contracts/connectors/loantoken/LoanTokenLogicWrbtc.sol",
          "exportedSymbols": {
            "LoanTokenLogicWrbtc": [
              3815
            ]
          },
          "id": 3816,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3576,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:6"
            },
            {
              "id": 3577,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "142:33:6"
            },
            {
              "absolutePath": "contracts/connectors/loantoken/LoanTokenLogicStandard.sol",
              "file": "./LoanTokenLogicStandard.sol",
              "id": 3578,
              "nodeType": "ImportDirective",
              "scope": 3816,
              "sourceUnit": 3575,
              "src": "177:38:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 3579,
                    "name": "LoanTokenLogicStandard",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3574,
                    "src": "249:22:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanTokenLogicStandard_$3574",
                      "typeString": "contract LoanTokenLogicStandard"
                    }
                  },
                  "id": 3580,
                  "nodeType": "InheritanceSpecifier",
                  "src": "249:22:6"
                }
              ],
              "contractDependencies": [
                168,
                271,
                511,
                3574,
                4182,
                4221,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 3815,
              "linearizedBaseContracts": [
                3815,
                3574,
                4182,
                168,
                271,
                511,
                4221,
                41798,
                41125,
                41829
              ],
              "name": "LoanTokenLogicWrbtc",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3605,
                    "nodeType": "Block",
                    "src": "385:105:6",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 3591,
                          "name": "useLM",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3584,
                          "src": "393:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3599,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3582,
                                "src": "466:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3600,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "476:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "476:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3598,
                              "name": "_mintToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2057,
                              "src": "455:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) returns (uint256)"
                              }
                            },
                            "id": 3602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "455:31:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 3590,
                          "id": 3603,
                          "nodeType": "Return",
                          "src": "448:38:6"
                        },
                        "id": 3604,
                        "nodeType": "IfStatement",
                        "src": "389:97:6",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3593,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3582,
                                "src": "419:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3594,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "429:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3595,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "429:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3592,
                              "name": "_mintWithLM",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3500,
                              "src": "407:11:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) returns (uint256)"
                              }
                            },
                            "id": 3596,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "407:32:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 3590,
                          "id": 3597,
                          "nodeType": "Return",
                          "src": "400:39:6"
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3606,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3587,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3586,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "343:12:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "343:12:6"
                    }
                  ],
                  "name": "mintWithBTC",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3585,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3582,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 3606,
                        "src": "296:16:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3581,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "296:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3584,
                        "name": "useLM",
                        "nodeType": "VariableDeclaration",
                        "scope": 3606,
                        "src": "314:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3583,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "314:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "295:30:6"
                  },
                  "returnParameters": {
                    "id": 3590,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3589,
                        "name": "mintAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3606,
                        "src": "365:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3588,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "365:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "364:20:6"
                  },
                  "scope": 3815,
                  "src": "275:215:6",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3652,
                    "nodeType": "Block",
                    "src": "626:249:6",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 3619,
                          "name": "useLM",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3612,
                          "src": "634:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 3630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 3626,
                              "name": "loanAmountPaid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3617,
                              "src": "690:14:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3628,
                                  "name": "burnAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3610,
                                  "src": "718:10:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 3627,
                                "name": "_burnToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2259,
                                "src": "707:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) returns (uint256)"
                                }
                              },
                              "id": 3629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "707:22:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "690:39:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3631,
                          "nodeType": "ExpressionStatement",
                          "src": "690:39:6"
                        },
                        "id": 3632,
                        "nodeType": "IfStatement",
                        "src": "630:99:6",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 3624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 3620,
                              "name": "loanAmountPaid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3617,
                              "src": "641:14:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3622,
                                  "name": "burnAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3610,
                                  "src": "670:10:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 3621,
                                "name": "_burnFromLM",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3573,
                                "src": "658:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) returns (uint256)"
                                }
                              },
                              "id": 3623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "658:23:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "641:40:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3625,
                          "nodeType": "ExpressionStatement",
                          "src": "641:40:6"
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3633,
                            "name": "loanAmountPaid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3617,
                            "src": "738:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "756:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "738:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3651,
                        "nodeType": "IfStatement",
                        "src": "734:138:6",
                        "trueBody": {
                          "id": 3650,
                          "nodeType": "Block",
                          "src": "759:113:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3640,
                                    "name": "loanAmountPaid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3617,
                                    "src": "804:14:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3637,
                                        "name": "wrbtcTokenAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3829,
                                        "src": "776:17:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 3636,
                                      "name": "IWrbtcERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25559,
                                      "src": "764:11:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWrbtcERC20_$25559_$",
                                        "typeString": "type(contract IWrbtcERC20)"
                                      }
                                    },
                                    "id": 3638,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "764:30:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                      "typeString": "contract IWrbtcERC20"
                                    }
                                  },
                                  "id": 3639,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25549,
                                  "src": "764:39:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) external"
                                  }
                                },
                                "id": 3641,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "764:55:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3642,
                              "nodeType": "ExpressionStatement",
                              "src": "764:55:6"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3646,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3608,
                                    "src": "842:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3647,
                                    "name": "loanAmountPaid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3617,
                                    "src": "852:14:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3643,
                                    "name": "Address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 41098,
                                    "src": "824:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                      "typeString": "type(library Address)"
                                    }
                                  },
                                  "id": 3645,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sendValue",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 41097,
                                  "src": "824:17:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 3648,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "824:43:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3649,
                              "nodeType": "ExpressionStatement",
                              "src": "824:43:6"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3653,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3615,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3614,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "580:12:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "580:12:6"
                    }
                  ],
                  "name": "burnToBTC",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3613,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3608,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 3653,
                        "src": "515:16:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3607,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "515:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3610,
                        "name": "burnAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3653,
                        "src": "535:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3609,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "535:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3612,
                        "name": "useLM",
                        "nodeType": "VariableDeclaration",
                        "scope": 3653,
                        "src": "557:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3611,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "557:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "511:59:6"
                  },
                  "returnParameters": {
                    "id": 3618,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3617,
                        "name": "loanAmountPaid",
                        "nodeType": "VariableDeclaration",
                        "scope": 3653,
                        "src": "602:22:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3616,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "602:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "601:24:6"
                  },
                  "scope": 3815,
                  "src": "493:382:6",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3813,
                    "nodeType": "Block",
                    "src": "1789:1273:6",
                    "statements": [
                      {
                        "assignments": [
                          3671
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3671,
                            "name": "_wrbtcToken",
                            "nodeType": "VariableDeclaration",
                            "scope": 3813,
                            "src": "1793:19:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3670,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1793:7:6",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3673,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 3672,
                          "name": "wrbtcTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3829,
                          "src": "1815:17:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1793:39:6"
                      },
                      {
                        "assignments": [
                          3675
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3675,
                            "name": "_loanTokenAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 3813,
                            "src": "1836:25:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3674,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1836:7:6",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3677,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 3676,
                          "name": "_wrbtcToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3671,
                          "src": "1864:11:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1836:39:6"
                      },
                      {
                        "assignments": [
                          3679
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3679,
                            "name": "receiver",
                            "nodeType": "VariableDeclaration",
                            "scope": 3813,
                            "src": "1879:16:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3678,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1879:7:6",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3683,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3680,
                            "name": "sentAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3659,
                            "src": "1898:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                              "typeString": "address[4] memory"
                            }
                          },
                          "id": 3682,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 3681,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1912:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1898:16:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1879:35:6"
                      },
                      {
                        "assignments": [
                          3685
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3685,
                            "name": "newPrincipal",
                            "nodeType": "VariableDeclaration",
                            "scope": 3813,
                            "src": "1918:20:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3684,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1918:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3689,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3686,
                            "name": "sentAmounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3663,
                            "src": "1941:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                              "typeString": "uint256[5] memory"
                            }
                          },
                          "id": 3688,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 3687,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1953:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1941:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1918:37:6"
                      },
                      {
                        "assignments": [
                          3691
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3691,
                            "name": "loanTokenSent",
                            "nodeType": "VariableDeclaration",
                            "scope": 3813,
                            "src": "1959:21:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3690,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1959:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3695,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3692,
                            "name": "sentAmounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3663,
                            "src": "1983:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                              "typeString": "uint256[5] memory"
                            }
                          },
                          "id": 3694,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "33",
                            "id": 3693,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1995:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1983:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1959:38:6"
                      },
                      {
                        "assignments": [
                          3697
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3697,
                            "name": "collateralTokenSent",
                            "nodeType": "VariableDeclaration",
                            "scope": 3813,
                            "src": "2001:27:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3696,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2001:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3701,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3698,
                            "name": "sentAmounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3663,
                            "src": "2031:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                              "typeString": "uint256[5] memory"
                            }
                          },
                          "id": 3700,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 3699,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2043:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2031:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2001:44:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3705,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3703,
                                "name": "_loanTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3675,
                                "src": "2058:17:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3704,
                                "name": "collateralTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3655,
                                "src": "2079:22:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2058:43:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3236",
                              "id": 3706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2103:4:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9cce9eb03c9f29c6481fca9f0f942b15bef0bbbc47fda0ddb44df157019835d9",
                                "typeString": "literal_string \"26\""
                              },
                              "value": "26"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9cce9eb03c9f29c6481fca9f0f942b15bef0bbbc47fda0ddb44df157019835d9",
                                "typeString": "literal_string \"26\""
                              }
                            ],
                            "id": 3702,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2050:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2050:58:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3708,
                        "nodeType": "ExpressionStatement",
                        "src": "2050:58:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3709,
                            "name": "msgValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3668,
                            "src": "2113:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3710,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "2124:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2124:9:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2113:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3713,
                        "nodeType": "ExpressionStatement",
                        "src": "2113:20:6"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3714,
                            "name": "withdrawalAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3665,
                            "src": "2142:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2162:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2142:21:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3753,
                          "nodeType": "Block",
                          "src": "2457:85:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3747,
                                    "name": "_loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3675,
                                    "src": "2476:17:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3748,
                                    "name": "sovrynContractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3827,
                                    "src": "2495:21:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3749,
                                    "name": "newPrincipal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3685,
                                    "src": "2518:12:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "3237",
                                    "id": 3750,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2532:4:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43",
                                      "typeString": "literal_string \"27\""
                                    },
                                    "value": "27"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43",
                                      "typeString": "literal_string \"27\""
                                    }
                                  ],
                                  "id": 3746,
                                  "name": "_safeTransfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2806,
                                  "src": "2462:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,string memory)"
                                  }
                                },
                                "id": 3751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2462:75:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3752,
                              "nodeType": "ExpressionStatement",
                              "src": "2462:75:6"
                            }
                          ]
                        },
                        "id": 3754,
                        "nodeType": "IfStatement",
                        "src": "2138:404:6",
                        "trueBody": {
                          "id": 3745,
                          "nodeType": "Block",
                          "src": "2165:286:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3721,
                                    "name": "withdrawalAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3665,
                                    "src": "2234:16:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3718,
                                        "name": "_wrbtcToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3671,
                                        "src": "2212:11:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 3717,
                                      "name": "IWrbtcERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25559,
                                      "src": "2200:11:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWrbtcERC20_$25559_$",
                                        "typeString": "type(contract IWrbtcERC20)"
                                      }
                                    },
                                    "id": 3719,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2200:24:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                      "typeString": "contract IWrbtcERC20"
                                    }
                                  },
                                  "id": 3720,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25549,
                                  "src": "2200:33:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) external"
                                  }
                                },
                                "id": 3722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2200:51:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3723,
                              "nodeType": "ExpressionStatement",
                              "src": "2200:51:6"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3727,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3679,
                                    "src": "2274:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3728,
                                    "name": "withdrawalAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3665,
                                    "src": "2284:16:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3724,
                                    "name": "Address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 41098,
                                    "src": "2256:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                      "typeString": "type(library Address)"
                                    }
                                  },
                                  "id": 3726,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sendValue",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 41097,
                                  "src": "2256:17:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 3729,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2256:45:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3730,
                              "nodeType": "ExpressionStatement",
                              "src": "2256:45:6"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3733,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3731,
                                  "name": "newPrincipal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3685,
                                  "src": "2310:12:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3732,
                                  "name": "withdrawalAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3665,
                                  "src": "2325:16:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2310:31:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 3744,
                              "nodeType": "IfStatement",
                              "src": "2306:141:6",
                              "trueBody": {
                                "id": 3743,
                                "nodeType": "Block",
                                "src": "2343:104:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3735,
                                          "name": "_loanTokenAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3675,
                                          "src": "2363:17:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3736,
                                          "name": "sovrynContractAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3827,
                                          "src": "2382:21:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3739,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 3737,
                                            "name": "newPrincipal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3685,
                                            "src": "2405:12:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 3738,
                                            "name": "withdrawalAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3665,
                                            "src": "2420:16:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2405:31:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "",
                                          "id": 3740,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2438:2:6",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          },
                                          "value": ""
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          }
                                        ],
                                        "id": 3734,
                                        "name": "_safeTransfer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2806,
                                        "src": "2349:13:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,uint256,string memory)"
                                        }
                                      },
                                      "id": 3741,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2349:92:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3742,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2349:92:6"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3755,
                            "name": "collateralTokenSent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3697,
                            "src": "2550:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2573:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2550:24:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3768,
                        "nodeType": "IfStatement",
                        "src": "2546:143:6",
                        "trueBody": {
                          "id": 3767,
                          "nodeType": "Block",
                          "src": "2576:113:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3759,
                                    "name": "collateralTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3655,
                                    "src": "2599:22:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3760,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "2623:3:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 3761,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "2623:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3762,
                                    "name": "sovrynContractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3827,
                                    "src": "2635:21:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3763,
                                    "name": "collateralTokenSent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3697,
                                    "src": "2658:19:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "3238",
                                    "id": 3764,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2679:4:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_9560168699514dcd528543d614e81b4f36adf182dc624d2f1eb91df8addd987e",
                                      "typeString": "literal_string \"28\""
                                    },
                                    "value": "28"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_9560168699514dcd528543d614e81b4f36adf182dc624d2f1eb91df8addd987e",
                                      "typeString": "literal_string \"28\""
                                    }
                                  ],
                                  "id": 3758,
                                  "name": "_safeTransferFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2836,
                                  "src": "2581:17:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,string memory)"
                                  }
                                },
                                "id": 3765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2581:103:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3766,
                              "nodeType": "ExpressionStatement",
                              "src": "2581:103:6"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3771,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3769,
                            "name": "loanTokenSent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3691,
                            "src": "2697:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2714:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2697:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3812,
                        "nodeType": "IfStatement",
                        "src": "2693:366:6",
                        "trueBody": {
                          "id": 3811,
                          "nodeType": "Block",
                          "src": "2717:342:6",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 3778,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3774,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 3772,
                                    "name": "msgValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3668,
                                    "src": "2726:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3773,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2738:1:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "2726:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3777,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 3775,
                                    "name": "msgValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3668,
                                    "src": "2743:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 3776,
                                    "name": "loanTokenSent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3691,
                                    "src": "2755:13:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2743:25:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "2726:42:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 3809,
                                "nodeType": "Block",
                                "src": "2951:104:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3801,
                                          "name": "_loanTokenAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3675,
                                          "src": "2975:17:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3802,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44994,
                                            "src": "2994:3:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 3803,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "2994:10:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3804,
                                          "name": "sovrynContractAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3827,
                                          "src": "3006:21:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3805,
                                          "name": "loanTokenSent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3691,
                                          "src": "3029:13:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "3239",
                                          "id": 3806,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3044:4:6",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_7749cc8014201da2069c21d93ba99c584b6f62d393fde534ed47eac227e31561",
                                            "typeString": "literal_string \"29\""
                                          },
                                          "value": "29"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_7749cc8014201da2069c21d93ba99c584b6f62d393fde534ed47eac227e31561",
                                            "typeString": "literal_string \"29\""
                                          }
                                        ],
                                        "id": 3800,
                                        "name": "_safeTransferFrom",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2836,
                                        "src": "2957:17:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,address,uint256,string memory)"
                                        }
                                      },
                                      "id": 3807,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2957:92:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3808,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2957:92:6"
                                  }
                                ]
                              },
                              "id": 3810,
                              "nodeType": "IfStatement",
                              "src": "2722:333:6",
                              "trueBody": {
                                "id": 3799,
                                "nodeType": "Block",
                                "src": "2770:175:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 3784,
                                            "name": "loanTokenSent",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3691,
                                            "src": "2810:13:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 3780,
                                                  "name": "_wrbtcToken",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3671,
                                                  "src": "2783:11:6",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 3779,
                                                "name": "IWrbtc",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 25550,
                                                "src": "2776:6:6",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IWrbtc_$25550_$",
                                                  "typeString": "type(contract IWrbtc)"
                                                }
                                              },
                                              "id": 3781,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "2776:19:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IWrbtc_$25550",
                                                "typeString": "contract IWrbtc"
                                              }
                                            },
                                            "id": 3782,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "deposit",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 25544,
                                            "src": "2776:27:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                              "typeString": "function () payable external"
                                            }
                                          },
                                          "id": 3783,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "value",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "2776:33:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$",
                                            "typeString": "function (uint256) pure returns (function () payable external)"
                                          }
                                        },
                                        "id": 3785,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2776:48:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                                          "typeString": "function () payable external"
                                        }
                                      },
                                      "id": 3786,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2776:50:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3787,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2776:50:6"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3789,
                                          "name": "_loanTokenAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3675,
                                          "src": "2846:17:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3790,
                                          "name": "sovrynContractAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3827,
                                          "src": "2865:21:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3791,
                                          "name": "loanTokenSent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3691,
                                          "src": "2888:13:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "3239",
                                          "id": 3792,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2903:4:6",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_7749cc8014201da2069c21d93ba99c584b6f62d393fde534ed47eac227e31561",
                                            "typeString": "literal_string \"29\""
                                          },
                                          "value": "29"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_7749cc8014201da2069c21d93ba99c584b6f62d393fde534ed47eac227e31561",
                                            "typeString": "literal_string \"29\""
                                          }
                                        ],
                                        "id": 3788,
                                        "name": "_safeTransfer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2806,
                                        "src": "2832:13:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,uint256,string memory)"
                                        }
                                      },
                                      "id": 3793,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2832:76:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3794,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2832:76:6"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3797,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 3795,
                                        "name": "msgValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3668,
                                        "src": "2914:8:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "-=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 3796,
                                        "name": "loanTokenSent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3691,
                                        "src": "2926:13:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2914:25:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3798,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2914:25:6"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Handle transfers prior to adding newPrincipal to loanTokenSent.\n\t * @param collateralTokenAddress The address of the collateral token.\n@param sentAddresses The array of addresses:\n  sentAddresses[0]: lender\n  sentAddresses[1]: borrower\n  sentAddresses[2]: receiver\n  sentAddresses[3]: manager\n\t * @param sentAmounts The array of amounts:\n  sentAmounts[0]: interestRate\n  sentAmounts[1]: newPrincipal\n  sentAmounts[2]: interestInitialAmount\n  sentAmounts[3]: loanTokenSent\n  sentAmounts[4]: collateralTokenSent\n\t * @param withdrawalAmount The amount to withdraw.\n\t * @return msgValue The amount of value sent.\n",
                  "id": 3814,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_verifyTransfers",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3666,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3655,
                        "name": "collateralTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 3814,
                        "src": "1623:30:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3654,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1623:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3659,
                        "name": "sentAddresses",
                        "nodeType": "VariableDeclaration",
                        "scope": 3814,
                        "src": "1657:31:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                          "typeString": "address[4]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3656,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1657:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 3658,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 3657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1665:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "1657:10:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$4_storage_ptr",
                            "typeString": "address[4]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3663,
                        "name": "sentAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 3814,
                        "src": "1692:29:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                          "typeString": "uint256[5]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3660,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1692:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3662,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 3661,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1700:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "1692:10:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                            "typeString": "uint256[5]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3665,
                        "name": "withdrawalAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3814,
                        "src": "1725:24:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3664,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1725:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1619:133:6"
                  },
                  "returnParameters": {
                    "id": 3669,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3668,
                        "name": "msgValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 3814,
                        "src": "1771:16:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3667,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1771:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1770:18:6"
                  },
                  "scope": 3815,
                  "src": "1594:1468:6",
                  "stateMutability": "nonpayable",
                  "superFunction": 2779,
                  "visibility": "internal"
                }
              ],
              "scope": 3816,
              "src": "217:2847:6"
            }
          ],
          "src": "118:2947:6"
        },
        "id": 6
      },
      "contracts/connectors/loantoken/LoanTokenSettingsLowerAdmin.sol": {
        "ast": {
          "absolutePath": "contracts/connectors/loantoken/LoanTokenSettingsLowerAdmin.sol",
          "exportedSymbols": {
            "LoanTokenSettingsLowerAdmin": [
              4182
            ]
          },
          "id": 4183,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3817,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:7"
            },
            {
              "id": 3818,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "142:33:7"
            },
            {
              "absolutePath": "contracts/connectors/loantoken/AdvancedToken.sol",
              "file": "./AdvancedToken.sol",
              "id": 3819,
              "nodeType": "ImportDirective",
              "scope": 4183,
              "sourceUnit": 169,
              "src": "177:29:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/connectors/loantoken/interfaces/ProtocolSettingsLike.sol",
              "file": "./interfaces/ProtocolSettingsLike.sol",
              "id": 3820,
              "nodeType": "ImportDirective",
              "scope": 4183,
              "sourceUnit": 4399,
              "src": "207:47:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 3821,
                    "name": "AdvancedToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 168,
                    "src": "296:13:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AdvancedToken_$168",
                      "typeString": "contract AdvancedToken"
                    }
                  },
                  "id": 3822,
                  "nodeType": "InheritanceSpecifier",
                  "src": "296:13:7"
                }
              ],
              "contractDependencies": [
                168,
                271,
                511,
                4221,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 4182,
              "linearizedBaseContracts": [
                4182,
                168,
                271,
                511,
                4221,
                41798,
                41125,
                41829
              ],
              "name": "LoanTokenSettingsLowerAdmin",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 3825,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3823,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "319:8:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "313:27:7",
                  "typeName": {
                    "id": 3824,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "332:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 3827,
                  "name": "sovrynContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 4182,
                  "src": "559:36:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3826,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "559:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 3829,
                  "name": "wrbtcTokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 4182,
                  "src": "598:32:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3828,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "598:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 3831,
                  "name": "target_",
                  "nodeType": "VariableDeclaration",
                  "scope": 4182,
                  "src": "633:22:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3830,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "633:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 3833,
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "scope": 4182,
                  "src": "658:20:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3832,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "658:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 3835,
                  "name": "earlyAccessToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4182,
                  "src": "815:31:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3834,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "815:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 3837,
                  "name": "pauser",
                  "nodeType": "VariableDeclaration",
                  "scope": 4182,
                  "src": "899:21:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3836,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "899:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 3839,
                  "name": "liquidityMiningAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 4182,
                  "src": "976:37:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3838,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "976:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3853,
                    "nodeType": "Block",
                    "src": "1095:70:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3848,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 3842,
                                  "name": "isOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41761,
                                  "src": "1107:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 3843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1107:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 3847,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3844,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "1120:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 3845,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1120:10:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3846,
                                  "name": "admin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3833,
                                  "src": "1134:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1120:19:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1107:32:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 3849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1141:14:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 3841,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1099:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1099:57:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3851,
                        "nodeType": "ExpressionStatement",
                        "src": "1099:57:7"
                      },
                      {
                        "id": 3852,
                        "nodeType": "PlaceholderStatement",
                        "src": "1160:1:7"
                      }
                    ]
                  },
                  "documentation": "@dev TODO: Check for restrictions in this contract.",
                  "id": 3854,
                  "name": "onlyAdmin",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 3840,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1092:2:7"
                  },
                  "src": "1074:91:7",
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3862,
                  "name": "SetTransactionLimits",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3861,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3857,
                        "indexed": false,
                        "name": "addresses",
                        "nodeType": "VariableDeclaration",
                        "scope": 3862,
                        "src": "1210:19:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3855,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1210:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 3856,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1210:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3860,
                        "indexed": false,
                        "name": "limits",
                        "nodeType": "VariableDeclaration",
                        "scope": 3862,
                        "src": "1231:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3858,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1231:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3859,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1231:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1209:39:7"
                  },
                  "src": "1183:66:7"
                },
                {
                  "body": {
                    "id": 3873,
                    "nodeType": "Block",
                    "src": "1437:22:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3869,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3833,
                            "src": "1441:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3870,
                            "name": "_admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3864,
                            "src": "1449:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1441:14:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3872,
                        "nodeType": "ExpressionStatement",
                        "src": "1441:14:7"
                      }
                    ]
                  },
                  "documentation": "@notice Set admin account.\n@param _admin The address of the account to grant admin permissions.\n",
                  "id": 3874,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3867,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3866,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1427:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1427:9:7"
                    }
                  ],
                  "name": "setAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3865,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3864,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 3874,
                        "src": "1404:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3863,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1404:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1403:16:7"
                  },
                  "returnParameters": {
                    "id": 3868,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1437:0:7"
                  },
                  "scope": 4182,
                  "src": "1386:73:7",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3885,
                    "nodeType": "Block",
                    "src": "1633:24:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3881,
                            "name": "pauser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3837,
                            "src": "1637:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3882,
                            "name": "_pauser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3876,
                            "src": "1646:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1637:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3884,
                        "nodeType": "ExpressionStatement",
                        "src": "1637:16:7"
                      }
                    ]
                  },
                  "documentation": "@notice Set pauser account.\n@param _pauser The address of the account to grant pause permissions.\n",
                  "id": 3886,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3879,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3878,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1623:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1623:9:7"
                    }
                  ],
                  "name": "setPauser",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3877,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3876,
                        "name": "_pauser",
                        "nodeType": "VariableDeclaration",
                        "scope": 3886,
                        "src": "1599:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3875,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1599:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1598:17:7"
                  },
                  "returnParameters": {
                    "id": 3880,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1633:0:7"
                  },
                  "scope": 4182,
                  "src": "1580:77:7",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3893,
                    "nodeType": "Block",
                    "src": "1734:68:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "4c6f616e546f6b656e53657474696e67734c6f77657241646d696e202d2066616c6c6261636b206e6f7420616c6c6f776564",
                              "id": 3890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1745:52:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_63fb694fc27c1a32346e6f96d29a53ad57919a298659c772f548eb68951002f9",
                                "typeString": "literal_string \"LoanTokenSettingsLowerAdmin - fallback not allowed\""
                              },
                              "value": "LoanTokenSettingsLowerAdmin - fallback not allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_63fb694fc27c1a32346e6f96d29a53ad57919a298659c772f548eb68951002f9",
                                "typeString": "literal_string \"LoanTokenSettingsLowerAdmin - fallback not allowed\""
                              }
                            ],
                            "id": 3889,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44999,
                              45000
                            ],
                            "referencedDeclaration": 45000,
                            "src": "1738:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 3891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1738:60:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3892,
                        "nodeType": "ExpressionStatement",
                        "src": "1738:60:7"
                      }
                    ]
                  },
                  "documentation": "@notice Fallback function not allowed\n",
                  "id": 3894,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3887,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1722:2:7"
                  },
                  "returnParameters": {
                    "id": 3888,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1734:0:7"
                  },
                  "scope": 4182,
                  "src": "1714:88:7",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3984,
                    "nodeType": "Block",
                    "src": "2093:629:7",
                    "statements": [
                      {
                        "assignments": [
                          3907
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3907,
                            "name": "loanParamsIdList",
                            "nodeType": "VariableDeclaration",
                            "scope": 3984,
                            "src": "2097:33:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 3905,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "2097:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 3906,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2097:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3908,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2097:33:7"
                      },
                      {
                        "assignments": [
                          3910
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3910,
                            "name": "_loanTokenAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 3984,
                            "src": "2134:25:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3909,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2134:7:7",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3912,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 3911,
                          "name": "loanTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 476,
                          "src": "2162:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2134:44:7"
                      },
                      {
                        "body": {
                          "id": 3941,
                          "nodeType": "Block",
                          "src": "2235:122:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3924,
                                      "name": "loanParamsList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3897,
                                      "src": "2240:14:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                                      }
                                    },
                                    "id": 3926,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3925,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3914,
                                      "src": "2255:1:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2240:17:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_memory",
                                      "typeString": "struct LoanParamsStruct.LoanParams memory"
                                    }
                                  },
                                  "id": 3927,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "loanToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4875,
                                  "src": "2240:27:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 3928,
                                  "name": "_loanTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3910,
                                  "src": "2270:17:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2240:47:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3930,
                              "nodeType": "ExpressionStatement",
                              "src": "2240:47:7"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3939,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3931,
                                      "name": "loanParamsList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3897,
                                      "src": "2292:14:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                                      }
                                    },
                                    "id": 3933,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3932,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3914,
                                      "src": "2307:1:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2292:17:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_memory",
                                      "typeString": "struct LoanParamsStruct.LoanParams memory"
                                    }
                                  },
                                  "id": 3934,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "maxLoanTerm",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4883,
                                  "src": "2292:29:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "id": 3935,
                                    "name": "areTorqueLoans",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3899,
                                    "src": "2324:14:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3238",
                                    "id": 3937,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2345:7:7",
                                    "subdenomination": "days",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2419200_by_1",
                                      "typeString": "int_const 2419200"
                                    },
                                    "value": "28"
                                  },
                                  "id": 3938,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "2324:28:7",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3936,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2341:1:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  }
                                },
                                "src": "2292:60:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3940,
                              "nodeType": "ExpressionStatement",
                              "src": "2292:60:7"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3917,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3914,
                            "src": "2203:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3918,
                              "name": "loanParamsList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3897,
                              "src": "2207:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                              }
                            },
                            "id": 3919,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2207:21:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2203:25:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3942,
                        "initializationExpression": {
                          "assignments": [
                            3914
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3914,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 3942,
                              "src": "2188:9:7",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3913,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2188:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 3916,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2200:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2188:13:7"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 3922,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2230:3:7",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 3921,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3914,
                              "src": "2230:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3923,
                          "nodeType": "ExpressionStatement",
                          "src": "2230:3:7"
                        },
                        "nodeType": "ForStatement",
                        "src": "2183:174:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3943,
                            "name": "loanParamsIdList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3907,
                            "src": "2361:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3948,
                                "name": "loanParamsList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3897,
                                "src": "2440:14:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3945,
                                    "name": "sovrynContractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3827,
                                    "src": "2401:21:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3944,
                                  "name": "ProtocolSettingsLike",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4398,
                                  "src": "2380:20:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ProtocolSettingsLike_$4398_$",
                                    "typeString": "type(contract ProtocolSettingsLike)"
                                  }
                                },
                                "id": 3946,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2380:43:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ProtocolSettingsLike_$4398",
                                  "typeString": "contract ProtocolSettingsLike"
                                }
                              },
                              "id": 3947,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "setupLoanParams",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4384,
                              "src": "2380:59:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                                "typeString": "function (struct LoanParamsStruct.LoanParams memory[] memory) external returns (bytes32[] memory)"
                              }
                            },
                            "id": 3949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2380:75:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "src": "2361:94:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "id": 3951,
                        "nodeType": "ExpressionStatement",
                        "src": "2361:94:7"
                      },
                      {
                        "body": {
                          "id": 3982,
                          "nodeType": "Block",
                          "src": "2513:206:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3963,
                                    "name": "loanParamsIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 502,
                                    "src": "2518:13:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                                      "typeString": "mapping(uint256 => bytes32)"
                                    }
                                  },
                                  "id": 3976,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 3968,
                                                    "name": "loanParamsList",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3897,
                                                    "src": "2593:14:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                                      "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                                                    }
                                                  },
                                                  "id": 3970,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "id": 3969,
                                                    "name": "i",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3953,
                                                    "src": "2608:1:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "2593:17:7",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory",
                                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                                  }
                                                },
                                                "id": 3971,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "collateralToken",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4877,
                                                "src": "2593:33:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 3972,
                                                "name": "areTorqueLoans",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3899,
                                                "src": "2635:14:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 3966,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 44981,
                                                "src": "2568:3:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_abi",
                                                  "typeString": "abi"
                                                }
                                              },
                                              "id": 3967,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "encodePacked",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "2568:16:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 3973,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2568:106:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 3965,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44988,
                                          "src": "2551:9:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 3974,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2551:130:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 3964,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2537:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint256"
                                    },
                                    "id": 3975,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2537:150:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2518:174:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3977,
                                    "name": "loanParamsIdList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3907,
                                    "src": "2695:16:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  "id": 3979,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3978,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3953,
                                    "src": "2712:1:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2695:19:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "2518:196:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 3981,
                              "nodeType": "ExpressionStatement",
                              "src": "2518:196:7"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3956,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3953,
                            "src": "2479:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3957,
                              "name": "loanParamsIdList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3907,
                              "src": "2483:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 3958,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2483:23:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2479:27:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3983,
                        "initializationExpression": {
                          "assignments": [
                            3953
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3953,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 3983,
                              "src": "2464:9:7",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3952,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2464:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 3955,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3954,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2476:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2464:13:7"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 3961,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2508:3:7",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 3960,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3953,
                              "src": "2508:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3962,
                          "nodeType": "ExpressionStatement",
                          "src": "2508:3:7"
                        },
                        "nodeType": "ForStatement",
                        "src": "2459:260:7"
                      }
                    ]
                  },
                  "documentation": "@notice Set loan token parameters.\n\t * @param loanParamsList The array of loan parameters.\n@param areTorqueLoans Whether the loan is a torque loan.\n",
                  "id": 3985,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3902,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3901,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3854,
                        "src": "2083:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2083:9:7"
                    }
                  ],
                  "name": "setupLoanParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3900,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3897,
                        "name": "loanParamsList",
                        "nodeType": "VariableDeclaration",
                        "scope": 3985,
                        "src": "2002:51:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 3895,
                            "name": "LoanParamsStruct.LoanParams",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4884,
                            "src": "2002:27:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            }
                          },
                          "id": 3896,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2002:29:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_storage_$dyn_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3899,
                        "name": "areTorqueLoans",
                        "nodeType": "VariableDeclaration",
                        "scope": 3985,
                        "src": "2055:19:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3898,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2055:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2001:74:7"
                  },
                  "returnParameters": {
                    "id": 3903,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2093:0:7"
                  },
                  "scope": 4182,
                  "src": "1977:745:7",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4065,
                    "nodeType": "Block",
                    "src": "3018:473:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3997,
                                  "name": "collateralTokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3988,
                                  "src": "3030:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 3998,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3030:23:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3999,
                                  "name": "isTorqueLoans",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3991,
                                  "src": "3057:13:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                                    "typeString": "bool[] calldata"
                                  }
                                },
                                "id": 4000,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3057:20:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3030:47:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "636f756e74206d69736d61746368",
                              "id": 4002,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3079:16:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4e47b0faf042463061f100d4bb8e934fd9c2e42fb27f86b7083e0ceb80b3cd5f",
                                "typeString": "literal_string \"count mismatch\""
                              },
                              "value": "count mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4e47b0faf042463061f100d4bb8e934fd9c2e42fb27f86b7083e0ceb80b3cd5f",
                                "typeString": "literal_string \"count mismatch\""
                              }
                            ],
                            "id": 3996,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3022:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3022:74:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4004,
                        "nodeType": "ExpressionStatement",
                        "src": "3022:74:7"
                      },
                      {
                        "assignments": [
                          4008
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4008,
                            "name": "loanParamsIdList",
                            "nodeType": "VariableDeclaration",
                            "scope": 4065,
                            "src": "3101:33:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 4006,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "3101:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 4007,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3101:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4015,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4012,
                                "name": "collateralTokens",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3988,
                                "src": "3151:16:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 4013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3151:23:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3137:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (bytes32[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 4009,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "3141:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 4010,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3141:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            }
                          },
                          "id": 4014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3137:38:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3101:74:7"
                      },
                      {
                        "body": {
                          "id": 4056,
                          "nodeType": "Block",
                          "src": "3233:171:7",
                          "statements": [
                            {
                              "assignments": [
                                4028
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4028,
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4056,
                                  "src": "3238:10:7",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4027,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3238:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4042,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 4033,
                                              "name": "collateralTokens",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3988,
                                              "src": "3286:16:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                "typeString": "address[] calldata"
                                              }
                                            },
                                            "id": 4035,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 4034,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4017,
                                              "src": "3303:1:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3286:19:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 4036,
                                              "name": "isTorqueLoans",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3991,
                                              "src": "3307:13:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                                                "typeString": "bool[] calldata"
                                              }
                                            },
                                            "id": 4038,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 4037,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4017,
                                              "src": "3321:1:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3307:16:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4031,
                                            "name": "abi",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44981,
                                            "src": "3269:3:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_abi",
                                              "typeString": "abi"
                                            }
                                          },
                                          "id": 4032,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "encodePacked",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "3269:16:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                            "typeString": "function () pure returns (bytes memory)"
                                          }
                                        },
                                        "id": 4039,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3269:55:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 4030,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44988,
                                      "src": "3259:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 4040,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3259:66:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 4029,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3251:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint256"
                                },
                                "id": 4041,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3251:75:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3238:88:7"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4049,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4043,
                                    "name": "loanParamsIdList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4008,
                                    "src": "3331:16:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  "id": 4045,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4044,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4017,
                                    "src": "3348:1:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3331:19:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4046,
                                    "name": "loanParamsIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 502,
                                    "src": "3353:13:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                                      "typeString": "mapping(uint256 => bytes32)"
                                    }
                                  },
                                  "id": 4048,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4047,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4028,
                                    "src": "3367:2:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3353:17:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "3331:39:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 4050,
                              "nodeType": "ExpressionStatement",
                              "src": "3331:39:7"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4054,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "3375:24:7",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4051,
                                    "name": "loanParamsIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 502,
                                    "src": "3382:13:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                                      "typeString": "mapping(uint256 => bytes32)"
                                    }
                                  },
                                  "id": 4053,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4052,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4028,
                                    "src": "3396:2:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3382:17:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4055,
                              "nodeType": "ExpressionStatement",
                              "src": "3375:24:7"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4020,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4017,
                            "src": "3199:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4021,
                              "name": "collateralTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3988,
                              "src": "3203:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 4022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3203:23:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3199:27:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4057,
                        "initializationExpression": {
                          "assignments": [
                            4017
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4017,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 4057,
                              "src": "3184:9:7",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4016,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3184:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 4019,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4018,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3196:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3184:13:7"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 4025,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3228:3:7",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 4024,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4017,
                              "src": "3228:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4026,
                          "nodeType": "ExpressionStatement",
                          "src": "3228:3:7"
                        },
                        "nodeType": "ForStatement",
                        "src": "3179:225:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4062,
                              "name": "loanParamsIdList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4008,
                              "src": "3470:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4059,
                                  "name": "sovrynContractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3827,
                                  "src": "3429:21:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4058,
                                "name": "ProtocolSettingsLike",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4398,
                                "src": "3408:20:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ProtocolSettingsLike_$4398_$",
                                  "typeString": "type(contract ProtocolSettingsLike)"
                                }
                              },
                              "id": 4060,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3408:43:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ProtocolSettingsLike_$4398",
                                "typeString": "contract ProtocolSettingsLike"
                              }
                            },
                            "id": 4061,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "disableLoanParams",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4390,
                            "src": "3408:61:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32[] memory) external"
                            }
                          },
                          "id": 4063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3408:79:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4064,
                        "nodeType": "ExpressionStatement",
                        "src": "3408:79:7"
                      }
                    ]
                  },
                  "documentation": "@notice Disable loan token parameters.\n\t * @param collateralTokens The array of collateral tokens.\n@param isTorqueLoans Whether the loan is a torque loan.\n",
                  "id": 4066,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3994,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3993,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3854,
                        "src": "3008:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3008:9:7"
                    }
                  ],
                  "name": "disableLoanParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3992,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3988,
                        "name": "collateralTokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 4066,
                        "src": "2931:35:7",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3986,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2931:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 3987,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2931:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3991,
                        "name": "isTorqueLoans",
                        "nodeType": "VariableDeclaration",
                        "scope": 4066,
                        "src": "2968:29:7",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3989,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "2968:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 3990,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2968:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2930:68:7"
                  },
                  "returnParameters": {
                    "id": 3995,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3018:0:7"
                  },
                  "scope": 4182,
                  "src": "2904:587:7",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4144,
                    "nodeType": "Block",
                    "src": "4939:591:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4091,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4088,
                                    "name": "_baseRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4068,
                                    "src": "4971:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4086,
                                    "name": "_rateMultiplier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4070,
                                    "src": "4951:15:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4087,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "4951:19:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4951:30:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 4090,
                                "name": "WEI_PERCENT_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 463,
                                "src": "4985:21:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4951:55:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "637572766520706172616d7320746f6f2068696768",
                              "id": 4092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5008:23:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7f3da7b58017a16d3775ccb121bf2b9ebfd43e96f77b8566ba1aad93485876d3",
                                "typeString": "literal_string \"curve params too high\""
                              },
                              "value": "curve params too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7f3da7b58017a16d3775ccb121bf2b9ebfd43e96f77b8566ba1aad93485876d3",
                                "typeString": "literal_string \"curve params too high\""
                              }
                            ],
                            "id": 4085,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4943:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4943:89:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4094,
                        "nodeType": "ExpressionStatement",
                        "src": "4943:89:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4101,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4098,
                                    "name": "_lowUtilBaseRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4072,
                                    "src": "5071:16:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4096,
                                    "name": "_lowUtilRateMultiplier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4074,
                                    "src": "5044:22:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4097,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "5044:26:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5044:44:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 4100,
                                "name": "WEI_PERCENT_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 463,
                                "src": "5092:21:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5044:69:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "637572766520706172616d7320746f6f2068696768",
                              "id": 4102,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5115:23:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7f3da7b58017a16d3775ccb121bf2b9ebfd43e96f77b8566ba1aad93485876d3",
                                "typeString": "literal_string \"curve params too high\""
                              },
                              "value": "curve params too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7f3da7b58017a16d3775ccb121bf2b9ebfd43e96f77b8566ba1aad93485876d3",
                                "typeString": "literal_string \"curve params too high\""
                              }
                            ],
                            "id": 4095,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5036:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5036:103:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4104,
                        "nodeType": "ExpressionStatement",
                        "src": "5036:103:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 4112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4108,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4106,
                                  "name": "_targetLevel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4076,
                                  "src": "5152:12:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 4107,
                                  "name": "WEI_PERCENT_PRECISION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 463,
                                  "src": "5168:21:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5152:37:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4111,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4109,
                                  "name": "_kinkLevel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4078,
                                  "src": "5193:10:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 4110,
                                  "name": "WEI_PERCENT_PRECISION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 463,
                                  "src": "5207:21:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5193:35:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5152:76:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6576656c7320746f6f2068696768",
                              "id": 4113,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5230:17:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8b4bb8d5f816e8d55f7501cad51d7624e1a5bd35318be6be4c2496965c9e684f",
                                "typeString": "literal_string \"levels too high\""
                              },
                              "value": "levels too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8b4bb8d5f816e8d55f7501cad51d7624e1a5bd35318be6be4c2496965c9e684f",
                                "typeString": "literal_string \"levels too high\""
                              }
                            ],
                            "id": 4105,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5144:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5144:104:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4115,
                        "nodeType": "ExpressionStatement",
                        "src": "5144:104:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4116,
                            "name": "baseRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 478,
                            "src": "5253:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4117,
                            "name": "_baseRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4068,
                            "src": "5264:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5253:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4119,
                        "nodeType": "ExpressionStatement",
                        "src": "5253:20:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4120,
                            "name": "rateMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 480,
                            "src": "5277:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4121,
                            "name": "_rateMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4070,
                            "src": "5294:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5277:32:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4123,
                        "nodeType": "ExpressionStatement",
                        "src": "5277:32:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4124,
                            "name": "lowUtilBaseRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 482,
                            "src": "5313:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4125,
                            "name": "_lowUtilBaseRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4072,
                            "src": "5331:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5313:34:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4127,
                        "nodeType": "ExpressionStatement",
                        "src": "5313:34:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4128,
                            "name": "lowUtilRateMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 484,
                            "src": "5351:21:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4129,
                            "name": "_lowUtilRateMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4074,
                            "src": "5375:22:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5351:46:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4131,
                        "nodeType": "ExpressionStatement",
                        "src": "5351:46:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4132,
                            "name": "targetLevel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 486,
                            "src": "5402:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4133,
                            "name": "_targetLevel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4076,
                            "src": "5416:12:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5402:26:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4135,
                        "nodeType": "ExpressionStatement",
                        "src": "5402:26:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4136,
                            "name": "kinkLevel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 488,
                            "src": "5445:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4137,
                            "name": "_kinkLevel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4078,
                            "src": "5457:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5445:22:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4139,
                        "nodeType": "ExpressionStatement",
                        "src": "5445:22:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4140,
                            "name": "maxScaleRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 490,
                            "src": "5484:12:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4141,
                            "name": "_maxScaleRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4080,
                            "src": "5499:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5484:28:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4143,
                        "nodeType": "ExpressionStatement",
                        "src": "5484:28:7"
                      }
                    ]
                  },
                  "documentation": "@notice Set loan token parameters about the demand curve.\n\t * @dev These params should be percentages represented\n  like so: 5% = 5000000000000000000 /// 18 digits precision.\nrateMultiplier + baseRate can't exceed 100%\n\t * To maintain a healthy credit score, it's important to keep your\ncredit utilization rate (CUR) low (_lowUtilBaseRate). In general\nyou don't want your CUR to exceed 30%, but increasingly financial\nexperts are recommending that you don't want to go above 10% if you\nreally want an excellent credit score.\n\t * Interest rates tend to cluster around the kink level of a kinked\ninterest rate model. More info at https://arxiv.org/pdf/2006.13922.pdf\nand https://compound.finance/governance/proposals/12\n\t * @param _baseRate The interest rate.\n@param _rateMultiplier The precision multiplier for base rate.\n@param _lowUtilBaseRate The credit utilization rate (CUR) low value.\n@param _lowUtilRateMultiplier The precision multiplier for low util base rate.\n@param _targetLevel The target level.\n@param _kinkLevel The level that interest rates cluster on kinked model.\n@param _maxScaleRate The maximum rate of the scale.\n",
                  "id": 4145,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4083,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4082,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3854,
                        "src": "4929:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4929:9:7"
                    }
                  ],
                  "name": "setDemandCurve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4081,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4068,
                        "name": "_baseRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 4145,
                        "src": "4741:17:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4067,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4741:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4070,
                        "name": "_rateMultiplier",
                        "nodeType": "VariableDeclaration",
                        "scope": 4145,
                        "src": "4762:23:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4069,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4762:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4072,
                        "name": "_lowUtilBaseRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 4145,
                        "src": "4789:24:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4071,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4789:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4074,
                        "name": "_lowUtilRateMultiplier",
                        "nodeType": "VariableDeclaration",
                        "scope": 4145,
                        "src": "4817:30:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4073,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4817:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4076,
                        "name": "_targetLevel",
                        "nodeType": "VariableDeclaration",
                        "scope": 4145,
                        "src": "4851:20:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4075,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4851:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4078,
                        "name": "_kinkLevel",
                        "nodeType": "VariableDeclaration",
                        "scope": 4145,
                        "src": "4875:18:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4077,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4875:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4080,
                        "name": "_maxScaleRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 4145,
                        "src": "4897:21:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4079,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4897:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4737:184:7"
                  },
                  "returnParameters": {
                    "id": 4084,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4939:0:7"
                  },
                  "scope": 4182,
                  "src": "4714:816:7",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4180,
                    "nodeType": "Block",
                    "src": "5974:330:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4153,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "5986:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5986:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 4155,
                                "name": "pauser",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3837,
                                "src": "6000:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5986:20:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6f6e6c79506175736572",
                              "id": 4157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6008:12:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c77c3ebcc93d0b90d387d1d40117c5f92e1e9b8ab1369eb7d524aa5c573048a0",
                                "typeString": "literal_string \"onlyPauser\""
                              },
                              "value": "onlyPauser"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c77c3ebcc93d0b90d387d1d40117c5f92e1e9b8ab1369eb7d524aa5c573048a0",
                                "typeString": "literal_string \"onlyPauser\""
                              }
                            ],
                            "id": 4152,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5978:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5978:43:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4159,
                        "nodeType": "ExpressionStatement",
                        "src": "5978:43:7"
                      },
                      {
                        "assignments": [
                          4161
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4161,
                            "name": "slot",
                            "nodeType": "VariableDeclaration",
                            "scope": 4180,
                            "src": "6065:12:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 4160,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "6065:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4178,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 4169,
                                              "name": "funcId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4147,
                                              "src": "6155:6:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4167,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44981,
                                              "src": "6138:3:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 4168,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encodePacked",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "6138:16:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 4170,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6138:24:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 4166,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44988,
                                        "src": "6128:9:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 4171,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6128:35:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 4165,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6121:6:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes4_$",
                                      "typeString": "type(bytes4)"
                                    },
                                    "typeName": "bytes4"
                                  },
                                  "id": 4172,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6121:43:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "307864343661373034626332383564626436666635616433383633353036323630623164663032383132663466383537633863633835323331376136616336346632",
                                      "id": 4174,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6179:66:7",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_96078384726591474532746498434765479118197112446299703977676695423578601710834_by_1",
                                        "typeString": "int_const 9607...(69 digits omitted)...0834"
                                      },
                                      "value": "0xd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_96078384726591474532746498434765479118197112446299703977676695423578601710834_by_1",
                                        "typeString": "int_const 9607...(69 digits omitted)...0834"
                                      }
                                    ],
                                    "id": 4173,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6171:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": "uint256"
                                  },
                                  "id": 4175,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6171:75:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4163,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "6098:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4164,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6098:16:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 4176,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6098:154:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4162,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "6083:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 4177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6083:174:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6065:192:7"
                      },
                      {
                        "externalReferences": [
                          {
                            "slot": {
                              "declaration": 4161,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "6282:4:7",
                              "valueSize": 1
                            }
                          },
                          {
                            "isPaused": {
                              "declaration": 4149,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "6288:8:7",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 4179,
                        "nodeType": "InlineAssembly",
                        "operations": "{ sstore(slot, isPaused) }",
                        "src": "6261:40:7"
                      }
                    ]
                  },
                  "documentation": "@notice Set the pause flag for a function to true or false.\n\t * @dev Combining the hash of \"iToken_FunctionPause\" string and a function\n  selector gets a slot to write a flag for pause state.\n\t * @param funcId The ID of a function, the selector.\n@param isPaused true/false value of the flag.\n",
                  "id": 4181,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toggleFunctionPause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4150,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4147,
                        "name": "funcId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4181,
                        "src": "5889:20:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4146,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5889:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4149,
                        "name": "isPaused",
                        "nodeType": "VariableDeclaration",
                        "scope": 4181,
                        "src": "5950:13:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4148,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5950:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5885:81:7"
                  },
                  "returnParameters": {
                    "id": 4151,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5974:0:7"
                  },
                  "scope": 4182,
                  "src": "5857:447:7",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 4183,
              "src": "256:6050:7"
            }
          ],
          "src": "118:6189:7"
        },
        "id": 7
      },
      "contracts/connectors/loantoken/Pausable.sol": {
        "ast": {
          "absolutePath": "contracts/connectors/loantoken/Pausable.sol",
          "exportedSymbols": {
            "Pausable": [
              4221
            ]
          },
          "id": 4222,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4184,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:8"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title Pausable contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized margin\ntrading and lending https://bzx.network similar to the dYdX protocol.\n * The contract implements pausable functionality by reading on slots the\npause state of contract functions.\n",
              "fullyImplemented": true,
              "id": 4221,
              "linearizedBaseContracts": [
                4221
              ],
              "name": "Pausable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 4187,
                  "name": "Pausable_FunctionPause",
                  "nodeType": "VariableDeclaration",
                  "scope": 4221,
                  "src": "517:117:8",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4185,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "517:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307861373134336338346437393361313535303364613666313962663931313961326461633934343438636134356437376338626630386635376232653931303437",
                    "id": 4186,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "568:66:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_75572000340897696294543103955945217926089709234207854382066236200855276163143_by_1",
                      "typeString": "int_const 7557...(69 digits omitted)...3143"
                    },
                    "value": "0xa7143c84d793a15503da6f19bf9119a2dac94448ca45d77c8bf08f57b2e91047"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4200,
                    "nodeType": "Block",
                    "src": "668:53:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4195,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "680:15:8",
                              "subExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4193,
                                    "name": "sig",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4189,
                                    "src": "691:3:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "id": 4192,
                                  "name": "_isPaused",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4220,
                                  "src": "681:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                    "typeString": "function (bytes4) view returns (bool)"
                                  }
                                },
                                "id": 4194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "681:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 4196,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "697:14:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 4191,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "672:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "672:40:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4198,
                        "nodeType": "ExpressionStatement",
                        "src": "672:40:8"
                      },
                      {
                        "id": 4199,
                        "nodeType": "PlaceholderStatement",
                        "src": "716:1:8"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4201,
                  "name": "pausable",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 4190,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4189,
                        "name": "sig",
                        "nodeType": "VariableDeclaration",
                        "scope": 4201,
                        "src": "656:10:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4188,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "656:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "655:12:8"
                  },
                  "src": "638:83:8",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4219,
                    "nodeType": "Block",
                    "src": "1084:123:8",
                    "statements": [
                      {
                        "assignments": [
                          4209
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4209,
                            "name": "slot",
                            "nodeType": "VariableDeclaration",
                            "scope": 4219,
                            "src": "1088:12:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 4208,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1088:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4217,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4213,
                                  "name": "sig",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4203,
                                  "src": "1130:3:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4214,
                                  "name": "Pausable_FunctionPause",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4187,
                                  "src": "1135:22:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4211,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "1113:3:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1113:16:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 4215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1113:45:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4210,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "1103:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 4216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1103:56:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1088:71:8"
                      },
                      {
                        "externalReferences": [
                          {
                            "isPaused": {
                              "declaration": 4206,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1177:8:8",
                              "valueSize": 1
                            }
                          },
                          {
                            "slot": {
                              "declaration": 4209,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1195:4:8",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 4218,
                        "nodeType": "InlineAssembly",
                        "operations": "{ isPaused := sload(slot) }",
                        "src": "1163:41:8"
                      }
                    ]
                  },
                  "documentation": "@notice Check whether a function is paused.\n\t * @dev Used to read externally from the smart contract to see if a\n  function is paused.\n\t * @param sig The function ID, the selector on bytes4.\n\t * @return isPaused Whether the function is paused: true or false.\n",
                  "id": 4220,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isPaused",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4204,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4203,
                        "name": "sig",
                        "nodeType": "VariableDeclaration",
                        "scope": 4220,
                        "src": "1034:10:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4202,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1034:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1033:12:8"
                  },
                  "returnParameters": {
                    "id": 4207,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4206,
                        "name": "isPaused",
                        "nodeType": "VariableDeclaration",
                        "scope": 4220,
                        "src": "1069:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4205,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1069:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1068:15:8"
                  },
                  "scope": 4221,
                  "src": "1015:192:8",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 4222,
              "src": "455:754:8"
            }
          ],
          "src": "118:1092:8"
        },
        "id": 8
      },
      "contracts/connectors/loantoken/interfaces/FeedsLike.sol": {
        "ast": {
          "absolutePath": "contracts/connectors/loantoken/interfaces/FeedsLike.sol",
          "exportedSymbols": {
            "FeedsLike": [
              4235
            ]
          },
          "id": 4236,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4223,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:9"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 4235,
              "linearizedBaseContracts": [
                4235
              ],
              "name": "FeedsLike",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 4234,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queryRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4228,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4225,
                        "name": "sourceTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 4234,
                        "src": "185:26:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4224,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "185:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4227,
                        "name": "destTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 4234,
                        "src": "213:24:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4226,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "213:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "184:54:9"
                  },
                  "returnParameters": {
                    "id": 4233,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4230,
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "scope": 4234,
                        "src": "262:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4229,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "262:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4232,
                        "name": "precision",
                        "nodeType": "VariableDeclaration",
                        "scope": 4234,
                        "src": "276:17:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4231,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "276:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "261:33:9"
                  },
                  "scope": 4235,
                  "src": "166:129:9",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 4236,
              "src": "143:154:9"
            }
          ],
          "src": "118:180:9"
        },
        "id": 9
      },
      "contracts/connectors/loantoken/interfaces/ProtocolLike.sol": {
        "ast": {
          "absolutePath": "contracts/connectors/loantoken/interfaces/ProtocolLike.sol",
          "exportedSymbols": {
            "ProtocolLike": [
              4371
            ]
          },
          "id": 4372,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4237,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:10"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 4371,
              "linearizedBaseContracts": [
                4371
              ],
              "name": "ProtocolLike",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 4262,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "borrowOrTradeFromPool",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4256,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4239,
                        "name": "loanParamsId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4262,
                        "src": "203:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4238,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "203:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4241,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4262,
                        "src": "227:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4240,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "227:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4243,
                        "name": "isTorqueLoan",
                        "nodeType": "VariableDeclaration",
                        "scope": 4262,
                        "src": "271:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4242,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "271:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4245,
                        "name": "initialMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 4262,
                        "src": "292:21:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4244,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "292:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4249,
                        "name": "sentAddresses",
                        "nodeType": "VariableDeclaration",
                        "scope": 4262,
                        "src": "317:33:10",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$4_calldata_ptr",
                          "typeString": "address[4]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4246,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "317:7:10",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 4248,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 4247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "325:1:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "317:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$4_storage_ptr",
                            "typeString": "address[4]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4253,
                        "name": "sentValues",
                        "nodeType": "VariableDeclaration",
                        "scope": 4262,
                        "src": "581:30:10",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$5_calldata_ptr",
                          "typeString": "uint256[5]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4250,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "581:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4252,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 4251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "589:1:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "581:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                            "typeString": "uint256[5]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4255,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 4262,
                        "src": "993:28:10",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4254,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "993:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "199:825:10"
                  },
                  "returnParameters": {
                    "id": 4261,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4258,
                        "name": "newPrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 4262,
                        "src": "1051:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4257,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1051:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4260,
                        "name": "newCollateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 4262,
                        "src": "1073:21:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4259,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1073:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1050:45:10"
                  },
                  "scope": 4371,
                  "src": "169:927:10",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 4271,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTotalPrincipal",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4267,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4264,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 4271,
                        "src": "1126:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4263,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1126:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4266,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 4271,
                        "src": "1142:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4265,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1142:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1125:35:10"
                  },
                  "returnParameters": {
                    "id": 4270,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4269,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4271,
                        "src": "1184:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4268,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1184:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1183:9:10"
                  },
                  "scope": 4371,
                  "src": "1099:94:10",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 4276,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAccruedInterest",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4274,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4273,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 4276,
                        "src": "1229:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4272,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1229:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1228:19:10"
                  },
                  "returnParameters": {
                    "id": 4275,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1256:0:10"
                  },
                  "scope": 4371,
                  "src": "1196:61:10",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 4295,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLenderInterestData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4281,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4278,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 4295,
                        "src": "1291:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4277,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1291:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4280,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 4295,
                        "src": "1307:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4279,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1307:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1290:35:10"
                  },
                  "returnParameters": {
                    "id": 4294,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4283,
                        "name": "interestPaid",
                        "nodeType": "VariableDeclaration",
                        "scope": 4295,
                        "src": "1359:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4282,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1359:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4285,
                        "name": "interestPaidDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 4295,
                        "src": "1384:24:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4284,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1384:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4287,
                        "name": "interestOwedPerDay",
                        "nodeType": "VariableDeclaration",
                        "scope": 4295,
                        "src": "1413:26:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4286,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1413:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4289,
                        "name": "interestUnPaid",
                        "nodeType": "VariableDeclaration",
                        "scope": 4295,
                        "src": "1444:22:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4288,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1444:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4291,
                        "name": "interestFeePercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 4295,
                        "src": "1471:26:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4290,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1471:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4293,
                        "name": "principalTotal",
                        "nodeType": "VariableDeclaration",
                        "scope": 4295,
                        "src": "1502:22:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4292,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1502:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1354:174:10"
                  },
                  "scope": 4371,
                  "src": "1260:269:10",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 4300,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "priceFeeds",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4296,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1551:2:10"
                  },
                  "returnParameters": {
                    "id": 4299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4298,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4300,
                        "src": "1577:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4297,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1577:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1576:9:10"
                  },
                  "scope": 4371,
                  "src": "1532:54:10",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 4317,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getEstimatedMarginExposure",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4313,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4302,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 4317,
                        "src": "1628:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4301,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1628:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4304,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 4317,
                        "src": "1649:23:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4303,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1649:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4306,
                        "name": "loanTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 4317,
                        "src": "1676:21:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1676:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4308,
                        "name": "collateralTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 4317,
                        "src": "1701:27:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4307,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1701:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4310,
                        "name": "interestRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 4317,
                        "src": "1732:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1732:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4312,
                        "name": "newPrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 4317,
                        "src": "1756:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4311,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1756:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1624:155:10"
                  },
                  "returnParameters": {
                    "id": 4316,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4315,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4317,
                        "src": "1803:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4314,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1803:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1802:9:10"
                  },
                  "scope": 4371,
                  "src": "1589:223:10",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 4332,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRequiredCollateral",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4319,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 4332,
                        "src": "1849:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4318,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1849:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4321,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 4332,
                        "src": "1870:23:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4320,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1870:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4323,
                        "name": "newPrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 4332,
                        "src": "1897:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4322,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1897:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4325,
                        "name": "marginAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4332,
                        "src": "1921:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4324,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1921:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4327,
                        "name": "isTorqueLoan",
                        "nodeType": "VariableDeclaration",
                        "scope": 4332,
                        "src": "1945:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4326,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1945:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1845:120:10"
                  },
                  "returnParameters": {
                    "id": 4331,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4330,
                        "name": "collateralAmountRequired",
                        "nodeType": "VariableDeclaration",
                        "scope": 4332,
                        "src": "1989:32:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4329,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1989:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1988:34:10"
                  },
                  "scope": 4371,
                  "src": "1815:208:10",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 4347,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBorrowAmount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4343,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4334,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 4347,
                        "src": "2054:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4333,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2054:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4336,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 4347,
                        "src": "2075:23:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4335,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2075:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4338,
                        "name": "collateralTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4347,
                        "src": "2102:29:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4337,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2102:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4340,
                        "name": "marginAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4347,
                        "src": "2135:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4339,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2135:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4342,
                        "name": "isTorqueLoan",
                        "nodeType": "VariableDeclaration",
                        "scope": 4347,
                        "src": "2159:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4341,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2159:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2050:129:10"
                  },
                  "returnParameters": {
                    "id": 4346,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4345,
                        "name": "borrowAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4347,
                        "src": "2203:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4344,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2203:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2202:22:10"
                  },
                  "scope": 4371,
                  "src": "2026:199:10",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 4354,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isLoanPool",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4350,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4349,
                        "name": "loanPool",
                        "nodeType": "VariableDeclaration",
                        "scope": 4354,
                        "src": "2248:16:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4348,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2248:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2247:18:10"
                  },
                  "returnParameters": {
                    "id": 4353,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4352,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4354,
                        "src": "2289:4:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4351,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2289:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2288:6:10"
                  },
                  "scope": 4371,
                  "src": "2228:67:10",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 4359,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "lendingFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4355,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2324:2:10"
                  },
                  "returnParameters": {
                    "id": 4358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4357,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4359,
                        "src": "2350:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4356,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2350:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2349:9:10"
                  },
                  "scope": 4371,
                  "src": "2298:61:10",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 4370,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSwapExpectedReturn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4366,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4361,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 4370,
                        "src": "2396:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4360,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2396:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4363,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 4370,
                        "src": "2419:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4362,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2419:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4365,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4370,
                        "src": "2440:25:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4364,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2440:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2392:76:10"
                  },
                  "returnParameters": {
                    "id": 4369,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4368,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4370,
                        "src": "2492:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4367,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2492:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2491:9:10"
                  },
                  "scope": 4371,
                  "src": "2362:139:10",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 4372,
              "src": "143:2360:10"
            }
          ],
          "src": "118:2386:10"
        },
        "id": 10
      },
      "contracts/connectors/loantoken/interfaces/ProtocolSettingsLike.sol": {
        "ast": {
          "absolutePath": "contracts/connectors/loantoken/interfaces/ProtocolSettingsLike.sol",
          "exportedSymbols": {
            "ProtocolSettingsLike": [
              4398
            ]
          },
          "id": 4399,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4373,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:11"
            },
            {
              "id": 4374,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "142:33:11"
            },
            {
              "absolutePath": "contracts/core/objects/LoanParamsStruct.sol",
              "file": "../../../core/objects/LoanParamsStruct.sol",
              "id": 4375,
              "nodeType": "ImportDirective",
              "scope": 4399,
              "sourceUnit": 4886,
              "src": "177:52:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 4398,
              "linearizedBaseContracts": [
                4398
              ],
              "name": "ProtocolSettingsLike",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 4384,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setupLoanParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4379,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4378,
                        "name": "loanParamsList",
                        "nodeType": "VariableDeclaration",
                        "scope": 4384,
                        "src": "290:53:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_calldata_$dyn_calldata_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 4376,
                            "name": "LoanParamsStruct.LoanParams",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4884,
                            "src": "290:27:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            }
                          },
                          "id": 4377,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "290:29:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_storage_$dyn_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "289:55:11"
                  },
                  "returnParameters": {
                    "id": 4383,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4382,
                        "name": "loanParamsIdList",
                        "nodeType": "VariableDeclaration",
                        "scope": 4384,
                        "src": "363:33:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4380,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "363:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 4381,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "363:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "362:35:11"
                  },
                  "scope": 4398,
                  "src": "265:133:11",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 4390,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "disableLoanParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4388,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4387,
                        "name": "loanParamsIdList",
                        "nodeType": "VariableDeclaration",
                        "scope": 4390,
                        "src": "428:35:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4385,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "428:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 4386,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "428:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "427:37:11"
                  },
                  "returnParameters": {
                    "id": 4389,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "473:0:11"
                  },
                  "scope": 4398,
                  "src": "401:73:11",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 4397,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "minInitialMargin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4392,
                        "name": "loanParamsId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4397,
                        "src": "503:20:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4391,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "503:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "502:22:11"
                  },
                  "returnParameters": {
                    "id": 4396,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4395,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4397,
                        "src": "548:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4394,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "548:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "547:9:11"
                  },
                  "scope": 4398,
                  "src": "477:80:11",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 4399,
              "src": "231:328:11"
            }
          ],
          "src": "118:442:11"
        },
        "id": 11
      },
      "contracts/core/Objects.sol": {
        "ast": {
          "absolutePath": "contracts/core/Objects.sol",
          "exportedSymbols": {
            "Objects": [
              4416
            ]
          },
          "id": 4417,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4400,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:12"
            },
            {
              "absolutePath": "contracts/core/objects/LoanStruct.sol",
              "file": "./objects/LoanStruct.sol",
              "id": 4401,
              "nodeType": "ImportDirective",
              "scope": 4417,
              "sourceUnit": 4914,
              "src": "143:34:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/core/objects/LoanParamsStruct.sol",
              "file": "./objects/LoanParamsStruct.sol",
              "id": 4402,
              "nodeType": "ImportDirective",
              "scope": 4417,
              "sourceUnit": 4886,
              "src": "178:40:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/core/objects/OrderStruct.sol",
              "file": "./objects/OrderStruct.sol",
              "id": 4403,
              "nodeType": "ImportDirective",
              "scope": 4417,
              "sourceUnit": 4930,
              "src": "219:35:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/core/objects/LenderInterestStruct.sol",
              "file": "./objects/LenderInterestStruct.sol",
              "id": 4404,
              "nodeType": "ImportDirective",
              "scope": 4417,
              "sourceUnit": 4856,
              "src": "255:44:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/core/objects/LoanInterestStruct.sol",
              "file": "./objects/LoanInterestStruct.sol",
              "id": 4405,
              "nodeType": "ImportDirective",
              "scope": 4417,
              "sourceUnit": 4866,
              "src": "300:42:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4406,
                    "name": "LoanStruct",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4913,
                    "src": "667:10:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanStruct_$4913",
                      "typeString": "contract LoanStruct"
                    }
                  },
                  "id": 4407,
                  "nodeType": "InheritanceSpecifier",
                  "src": "667:10:12"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4408,
                    "name": "LoanParamsStruct",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4885,
                    "src": "679:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanParamsStruct_$4885",
                      "typeString": "contract LoanParamsStruct"
                    }
                  },
                  "id": 4409,
                  "nodeType": "InheritanceSpecifier",
                  "src": "679:16:12"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4410,
                    "name": "OrderStruct",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4929,
                    "src": "697:11:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OrderStruct_$4929",
                      "typeString": "contract OrderStruct"
                    }
                  },
                  "id": 4411,
                  "nodeType": "InheritanceSpecifier",
                  "src": "697:11:12"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4412,
                    "name": "LenderInterestStruct",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4855,
                    "src": "710:20:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LenderInterestStruct_$4855",
                      "typeString": "contract LenderInterestStruct"
                    }
                  },
                  "id": 4413,
                  "nodeType": "InheritanceSpecifier",
                  "src": "710:20:12"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4414,
                    "name": "LoanInterestStruct",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4865,
                    "src": "732:18:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanInterestStruct_$4865",
                      "typeString": "contract LoanInterestStruct"
                    }
                  },
                  "id": 4415,
                  "nodeType": "InheritanceSpecifier",
                  "src": "732:18:12"
                }
              ],
              "contractDependencies": [
                4855,
                4865,
                4885,
                4913,
                4929
              ],
              "contractKind": "contract",
              "documentation": "@title Objects contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract inherints and aggregates several structures needed to handle\nloans on the protocol.\n",
              "fullyImplemented": true,
              "id": 4416,
              "linearizedBaseContracts": [
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "Objects",
              "nodeType": "ContractDefinition",
              "nodes": [],
              "scope": 4417,
              "src": "647:108:12"
            }
          ],
          "src": "118:638:12"
        },
        "id": 12
      },
      "contracts/core/Protocol.sol": {
        "ast": {
          "absolutePath": "contracts/core/Protocol.sol",
          "exportedSymbols": {
            "sovrynProtocol": [
              4549
            ]
          },
          "id": 4550,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4418,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:13"
            },
            {
              "id": 4419,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "142:33:13"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "./State.sol",
              "id": 4420,
              "nodeType": "ImportDirective",
              "scope": 4550,
              "sourceUnit": 4842,
              "src": "177:21:13",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4421,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "675:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 4422,
                  "nodeType": "InheritanceSpecifier",
                  "src": "675:5:13"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title Sovryn Protocol contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the proxy functionality to deploy Protocol anchor\nand logic apart, turning it upgradable.\n * @dev TODO: can I change this proxy to EIP-1822 proxy standard, please.\n  https://eips.ethereum.org/EIPS/eip-1822\n",
              "fullyImplemented": true,
              "id": 4549,
              "linearizedBaseContracts": [
                4549,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "sovrynProtocol",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4454,
                    "nodeType": "Block",
                    "src": "898:462:13",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4425,
                              "name": "gasleft",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44987,
                              "src": "906:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 4426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "906:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32333030",
                            "id": 4427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "919:4:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2300_by_1",
                              "typeString": "int_const 2300"
                            },
                            "value": "2300"
                          },
                          "src": "906:17:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4431,
                        "nodeType": "IfStatement",
                        "src": "902:39:13",
                        "trueBody": {
                          "id": 4430,
                          "nodeType": "Block",
                          "src": "925:16:13",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 4424,
                              "id": 4429,
                              "nodeType": "Return",
                              "src": "930:7:13"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          4433
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4433,
                            "name": "target",
                            "nodeType": "VariableDeclaration",
                            "scope": 4454,
                            "src": "945:14:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4432,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "945:7:13",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4438,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4434,
                            "name": "logicTargets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4583,
                            "src": "962:12:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                              "typeString": "mapping(bytes4 => address)"
                            }
                          },
                          "id": 4437,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4435,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "975:3:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sig",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "975:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "962:21:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "945:38:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4440,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4433,
                                "src": "995:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 4442,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1013:1:13",
                                    "subdenomination": null,
                                    "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": 4441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1005:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 4443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1005:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "995:20:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "746172676574206e6f7420616374697665",
                              "id": 4445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1017:19:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_18fa7ea381cac1ea683060454ae4b44832ee89babf527a80d5d4bfae8ea33a98",
                                "typeString": "literal_string \"target not active\""
                              },
                              "value": "target not active"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_18fa7ea381cac1ea683060454ae4b44832ee89babf527a80d5d4bfae8ea33a98",
                                "typeString": "literal_string \"target not active\""
                              }
                            ],
                            "id": 4439,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "987:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "987:50:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4447,
                        "nodeType": "ExpressionStatement",
                        "src": "987:50:13"
                      },
                      {
                        "assignments": [
                          4449
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4449,
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "scope": 4454,
                            "src": "1042:17:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4448,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1042:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4452,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4450,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44994,
                            "src": "1062:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1062:8:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1042:28:13"
                      },
                      {
                        "externalReferences": [
                          {
                            "data": {
                              "declaration": 4449,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1151:4:13",
                              "valueSize": 1
                            }
                          },
                          {
                            "data": {
                              "declaration": 4449,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1132:4:13",
                              "valueSize": 1
                            }
                          },
                          {
                            "target": {
                              "declaration": 4433,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1120:6:13",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 4453,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    let result := delegatecall(gas(), target, add(data, 0x20), mload(data), 0, 0)\n    let size := returndatasize()\n    let ptr := mload(0x40)\n    returndatacopy(ptr, 0, size)\n    switch result\n    case 0 { revert(ptr, size) }\n    default { return(ptr, size) }\n}",
                        "src": "1074:283:13"
                      }
                    ]
                  },
                  "documentation": "@notice Fallback function performs a delegate call\nto the actual implementation address is pointing this proxy.\nReturns whatever the implementation call returns.\n",
                  "id": 4455,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4423,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "878:2:13"
                  },
                  "returnParameters": {
                    "id": 4424,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "898:0:13"
                  },
                  "scope": 4549,
                  "src": "870:490:13",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4478,
                    "nodeType": "Block",
                    "src": "1522:138:13",
                    "statements": [
                      {
                        "assignments": [
                          4463,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4463,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 4478,
                            "src": "1527:12:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4462,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1527:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 4472,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "696e697469616c697a65286164647265737329",
                                  "id": 4468,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1589:21:13",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c4d66de8473e8f74cb05df264ee8262da16b56717ef1f05d73bfdcea3adc85e5",
                                    "typeString": "literal_string \"initialize(address)\""
                                  },
                                  "value": "initialize(address)"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4469,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4457,
                                  "src": "1612:6:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c4d66de8473e8f74cb05df264ee8262da16b56717ef1f05d73bfdcea3adc85e5",
                                    "typeString": "literal_string \"initialize(address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4466,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "1565:3:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4467,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1565:23:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 4470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1565:54:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4464,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4457,
                              "src": "1545:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1545:19:13",
                            "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": 4471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1545:75:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1526:94:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4474,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4463,
                              "src": "1632:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7365747570206661696c6564",
                              "id": 4475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1641:14:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a25f68c55641d66c8541efb53c70578807815499f57690c03ed22dc381b5398c",
                                "typeString": "literal_string \"setup failed\""
                              },
                              "value": "setup failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a25f68c55641d66c8541efb53c70578807815499f57690c03ed22dc381b5398c",
                                "typeString": "literal_string \"setup failed\""
                              }
                            ],
                            "id": 4473,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1624:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1624:32:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4477,
                        "nodeType": "ExpressionStatement",
                        "src": "1624:32:13"
                      }
                    ]
                  },
                  "documentation": "@notice External owner target initializer.\n@param target The target addresses.\n",
                  "id": 4479,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4460,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4459,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1512:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1512:9:13"
                    }
                  ],
                  "name": "replaceContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4458,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4457,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 4479,
                        "src": "1487:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4456,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1487:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1486:16:13"
                  },
                  "returnParameters": {
                    "id": 4461,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1522:0:13"
                  },
                  "scope": 4549,
                  "src": "1462:198:13",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4528,
                    "nodeType": "Block",
                    "src": "1918:203:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4495,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4491,
                                  "name": "sigsArr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4482,
                                  "src": "1930:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_string_calldata_$dyn_calldata_ptr",
                                    "typeString": "string calldata[] calldata"
                                  }
                                },
                                "id": 4492,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1930:14:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4493,
                                  "name": "targetsArr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4485,
                                  "src": "1948:10:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1948:17:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1930:35:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "636f756e74206d69736d61746368",
                              "id": 4496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1967:16:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4e47b0faf042463061f100d4bb8e934fd9c2e42fb27f86b7083e0ceb80b3cd5f",
                                "typeString": "literal_string \"count mismatch\""
                              },
                              "value": "count mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4e47b0faf042463061f100d4bb8e934fd9c2e42fb27f86b7083e0ceb80b3cd5f",
                                "typeString": "literal_string \"count mismatch\""
                              }
                            ],
                            "id": 4490,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1922:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1922:62:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4498,
                        "nodeType": "ExpressionStatement",
                        "src": "1922:62:13"
                      },
                      {
                        "body": {
                          "id": 4526,
                          "nodeType": "Block",
                          "src": "2034:84:13",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 4515,
                                                  "name": "sigsArr",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4482,
                                                  "src": "2084:7:13",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_string_calldata_$dyn_calldata_ptr",
                                                    "typeString": "string calldata[] calldata"
                                                  }
                                                },
                                                "id": 4517,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 4516,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4500,
                                                  "src": "2092:1:13",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "2084:10:13",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_string_calldata",
                                                  "typeString": "string calldata"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_string_calldata",
                                                  "typeString": "string calldata"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4513,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 44981,
                                                "src": "2067:3:13",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_abi",
                                                  "typeString": "abi"
                                                }
                                              },
                                              "id": 4514,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "encodePacked",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "2067:16:13",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 4518,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2067:28:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 4512,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44988,
                                          "src": "2057:9:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 4519,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2057:39:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 4511,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2050:6:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes4_$",
                                        "typeString": "type(bytes4)"
                                      },
                                      "typeName": "bytes4"
                                    },
                                    "id": 4520,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2050:47:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4521,
                                      "name": "targetsArr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4485,
                                      "src": "2099:10:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 4523,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 4522,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4500,
                                      "src": "2110:1:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2099:13:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4510,
                                  "name": "_setTarget",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4840,
                                  "src": "2039:10:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                                    "typeString": "function (bytes4,address)"
                                  }
                                },
                                "id": 4524,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2039:74:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4525,
                              "nodeType": "ExpressionStatement",
                              "src": "2039:74:13"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4503,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4500,
                            "src": "2009:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4504,
                              "name": "sigsArr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4482,
                              "src": "2013:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_calldata_$dyn_calldata_ptr",
                                "typeString": "string calldata[] calldata"
                              }
                            },
                            "id": 4505,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2013:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2009:18:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4527,
                        "initializationExpression": {
                          "assignments": [
                            4500
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4500,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 4527,
                              "src": "1994:9:13",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4499,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1994:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 4502,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2006:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1994:13:13"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 4508,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2029:3:13",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 4507,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4500,
                              "src": "2029:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4509,
                          "nodeType": "ExpressionStatement",
                          "src": "2029:3:13"
                        },
                        "nodeType": "ForStatement",
                        "src": "1989:129:13"
                      }
                    ]
                  },
                  "documentation": "@notice External owner setter for target addresses.\n@param sigsArr The array of signatures.\n@param targetsArr The array of addresses.\n",
                  "id": 4529,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4488,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4487,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1908:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1908:9:13"
                    }
                  ],
                  "name": "setTargets",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4486,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4482,
                        "name": "sigsArr",
                        "nodeType": "VariableDeclaration",
                        "scope": 4529,
                        "src": "1841:25:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_$dyn_calldata_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4480,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "1841:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 4481,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1841:8:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4485,
                        "name": "targetsArr",
                        "nodeType": "VariableDeclaration",
                        "scope": 4529,
                        "src": "1868:29:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4483,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1868:7:13",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 4484,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1868:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1840:58:13"
                  },
                  "returnParameters": {
                    "id": 4489,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1918:0:13"
                  },
                  "scope": 4549,
                  "src": "1821:300:13",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4547,
                    "nodeType": "Block",
                    "src": "2335:69:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4536,
                            "name": "logicTargets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4583,
                            "src": "2346:12:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                              "typeString": "mapping(bytes4 => address)"
                            }
                          },
                          "id": 4545,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4541,
                                        "name": "sig",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4531,
                                        "src": "2393:3:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_calldata_ptr",
                                          "typeString": "string calldata"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_string_calldata_ptr",
                                          "typeString": "string calldata"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4539,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44981,
                                        "src": "2376:3:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 4540,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodePacked",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2376:16:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 4542,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2376:21:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 4538,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44988,
                                  "src": "2366:9:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 4543,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2366:32:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 4537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2359:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes4_$",
                                "typeString": "type(bytes4)"
                              },
                              "typeName": "bytes4"
                            },
                            "id": 4544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2359:40:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2346:54:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4535,
                        "id": 4546,
                        "nodeType": "Return",
                        "src": "2339:61:13"
                      }
                    ]
                  },
                  "documentation": "@notice External getter for target addresses.\n@param sig The signature.\n@return The address for a given signature.\n",
                  "id": 4548,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTarget",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4532,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4531,
                        "name": "sig",
                        "nodeType": "VariableDeclaration",
                        "scope": 4548,
                        "src": "2282:19:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4530,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2282:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2281:21:13"
                  },
                  "returnParameters": {
                    "id": 4535,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4534,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4548,
                        "src": "2326:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4533,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2326:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2325:9:13"
                  },
                  "scope": 4549,
                  "src": "2263:141:13",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 4550,
              "src": "648:1758:13"
            }
          ],
          "src": "118:2289:13"
        },
        "id": 13
      },
      "contracts/core/State.sol": {
        "ast": {
          "absolutePath": "contracts/core/State.sol",
          "exportedSymbols": {
            "State": [
              4841
            ]
          },
          "id": 4842,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4551,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:14"
            },
            {
              "absolutePath": "contracts/core/Objects.sol",
              "file": "./Objects.sol",
              "id": 4552,
              "nodeType": "ImportDirective",
              "scope": 4842,
              "sourceUnit": 4417,
              "src": "143:23:14",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/EnumerableAddressSet.sol",
              "file": "../mixins/EnumerableAddressSet.sol",
              "id": 4553,
              "nodeType": "ImportDirective",
              "scope": 4842,
              "sourceUnit": 26725,
              "src": "167:44:14",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/EnumerableBytes32Set.sol",
              "file": "../mixins/EnumerableBytes32Set.sol",
              "id": 4554,
              "nodeType": "ImportDirective",
              "scope": 4842,
              "sourceUnit": 27040,
              "src": "212:44:14",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/ReentrancyGuard.sol",
              "file": "../openzeppelin/ReentrancyGuard.sol",
              "id": 4555,
              "nodeType": "ImportDirective",
              "scope": 4842,
              "sourceUnit": 41830,
              "src": "257:45:14",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../openzeppelin/Ownable.sol",
              "id": 4556,
              "nodeType": "ImportDirective",
              "scope": 4842,
              "sourceUnit": 41799,
              "src": "303:37:14",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../openzeppelin/SafeMath.sol",
              "id": 4557,
              "nodeType": "ImportDirective",
              "scope": 4842,
              "sourceUnit": 42310,
              "src": "341:38:14",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IWrbtcERC20.sol",
              "file": "../interfaces/IWrbtcERC20.sol",
              "id": 4558,
              "nodeType": "ImportDirective",
              "scope": 4842,
              "sourceUnit": 25560,
              "src": "380:39:14",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4559,
                    "name": "Objects",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4416,
                    "src": "698:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Objects_$4416",
                      "typeString": "contract Objects"
                    }
                  },
                  "id": 4560,
                  "nodeType": "InheritanceSpecifier",
                  "src": "698:7:14"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4561,
                    "name": "ReentrancyGuard",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41829,
                    "src": "707:15:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReentrancyGuard_$41829",
                      "typeString": "contract ReentrancyGuard"
                    }
                  },
                  "id": 4562,
                  "nodeType": "InheritanceSpecifier",
                  "src": "707:15:14"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4563,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "724:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 4564,
                  "nodeType": "InheritanceSpecifier",
                  "src": "724:7:14"
                }
              ],
              "contractDependencies": [
                4416,
                4855,
                4865,
                4885,
                4913,
                4929,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title State contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the storage values of the Protocol.\n",
              "fullyImplemented": true,
              "id": 4841,
              "linearizedBaseContracts": [
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "State",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 4567,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4565,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "741:8:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "735:27:14",
                  "typeName": {
                    "id": 4566,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "754:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 4570,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4568,
                    "name": "EnumerableAddressSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 26724,
                    "src": "770:20:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EnumerableAddressSet_$26724",
                      "typeString": "library EnumerableAddressSet"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "764:63:14",
                  "typeName": {
                    "contractScope": null,
                    "id": 4569,
                    "name": "EnumerableAddressSet.AddressSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 26428,
                    "src": "795:31:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                      "typeString": "struct EnumerableAddressSet.AddressSet"
                    }
                  }
                },
                {
                  "id": 4573,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4571,
                    "name": "EnumerableBytes32Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27039,
                    "src": "866:20:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EnumerableBytes32Set_$27039",
                      "typeString": "library EnumerableBytes32Set"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "860:63:14",
                  "typeName": {
                    "contractScope": null,
                    "id": 4572,
                    "name": "EnumerableBytes32Set.Bytes32Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 26734,
                    "src": "891:31:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                      "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 4575,
                  "name": "priceFeeds",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "1012:25:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4574,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1012:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4577,
                  "name": "swapsImpl",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "1087:24:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4576,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1087:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4579,
                  "name": "sovrynSwapContractRegistryAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "1174:48:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4578,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1174:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4583,
                  "name": "logicTargets",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "1270:46:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                    "typeString": "mapping(bytes4 => address)"
                  },
                  "typeName": {
                    "id": 4582,
                    "keyType": {
                      "id": 4580,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "1278:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1270:26:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                      "typeString": "mapping(bytes4 => address)"
                    },
                    "valueType": {
                      "id": 4581,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1288:7:14",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4587,
                  "name": "loans",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "1347:37:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                    "typeString": "mapping(bytes32 => struct LoanStruct.Loan)"
                  },
                  "typeName": {
                    "id": 4586,
                    "keyType": {
                      "id": 4584,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1355:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1347:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                      "typeString": "mapping(bytes32 => struct LoanStruct.Loan)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 4585,
                      "name": "Loan",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 4912,
                      "src": "1366:4:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                        "typeString": "struct LoanStruct.Loan"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4591,
                  "name": "loanParams",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "1437:48:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                    "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams)"
                  },
                  "typeName": {
                    "id": 4590,
                    "keyType": {
                      "id": 4588,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1445:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1437:30:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                      "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 4589,
                      "name": "LoanParams",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 4884,
                      "src": "1456:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                        "typeString": "struct LoanParamsStruct.LoanParams"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4597,
                  "name": "lenderOrders",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "1527:65:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_struct$_Order_$4928_storage_$_$",
                    "typeString": "mapping(address => mapping(bytes32 => struct OrderStruct.Order))"
                  },
                  "typeName": {
                    "id": 4596,
                    "keyType": {
                      "id": 4592,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1535:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1527:45:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_struct$_Order_$4928_storage_$_$",
                      "typeString": "mapping(address => mapping(bytes32 => struct OrderStruct.Order))"
                    },
                    "valueType": {
                      "id": 4595,
                      "keyType": {
                        "id": 4593,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1554:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1546:25:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Order_$4928_storage_$",
                        "typeString": "mapping(bytes32 => struct OrderStruct.Order)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 4594,
                        "name": "Order",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4928,
                        "src": "1565:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Order_$4928_storage_ptr",
                          "typeString": "struct OrderStruct.Order"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4603,
                  "name": "borrowerOrders",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "1636:67:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_struct$_Order_$4928_storage_$_$",
                    "typeString": "mapping(address => mapping(bytes32 => struct OrderStruct.Order))"
                  },
                  "typeName": {
                    "id": 4602,
                    "keyType": {
                      "id": 4598,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1644:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1636:45:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_struct$_Order_$4928_storage_$_$",
                      "typeString": "mapping(address => mapping(bytes32 => struct OrderStruct.Order))"
                    },
                    "valueType": {
                      "id": 4601,
                      "keyType": {
                        "id": 4599,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1663:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1655:25:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Order_$4928_storage_$",
                        "typeString": "mapping(bytes32 => struct OrderStruct.Order)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 4600,
                        "name": "Order",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4928,
                        "src": "1674:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Order_$4928_storage_ptr",
                          "typeString": "struct OrderStruct.Order"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4609,
                  "name": "delegatedManagers",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "1744:69:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(bytes32 => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 4608,
                    "keyType": {
                      "id": 4604,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1752:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1744:44:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(bytes32 => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 4607,
                      "keyType": {
                        "id": 4605,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1771:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1763:24:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 4606,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1782:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4615,
                  "name": "lenderInterest",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "1898:76:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$_$",
                    "typeString": "mapping(address => mapping(address => struct LenderInterestStruct.LenderInterest))"
                  },
                  "typeName": {
                    "id": 4614,
                    "keyType": {
                      "id": 4610,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1906:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1898:54:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$_$",
                      "typeString": "mapping(address => mapping(address => struct LenderInterestStruct.LenderInterest))"
                    },
                    "valueType": {
                      "id": 4613,
                      "keyType": {
                        "id": 4611,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1925:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1917:34:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$",
                        "typeString": "mapping(address => struct LenderInterestStruct.LenderInterest)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 4612,
                        "name": "LenderInterest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4854,
                        "src": "1936:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                          "typeString": "struct LenderInterestStruct.LenderInterest"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4619,
                  "name": "loanInterest",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "2013:52:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanInterest_$4864_storage_$",
                    "typeString": "mapping(bytes32 => struct LoanInterestStruct.LoanInterest)"
                  },
                  "typeName": {
                    "id": 4618,
                    "keyType": {
                      "id": 4616,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "2021:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2013:32:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanInterest_$4864_storage_$",
                      "typeString": "mapping(bytes32 => struct LoanInterestStruct.LoanInterest)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 4617,
                      "name": "LoanInterest",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 4864,
                      "src": "2032:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                        "typeString": "struct LoanInterestStruct.LoanInterest"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4621,
                  "name": "logicTargetsSet",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "2127:56:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                    "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4620,
                    "name": "EnumerableBytes32Set.Bytes32Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 26734,
                    "src": "2127:31:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                      "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4623,
                  "name": "activeLoansSet",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "2210:55:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                    "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4622,
                    "name": "EnumerableBytes32Set.Bytes32Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 26734,
                    "src": "2210:31:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                      "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4627,
                  "name": "lenderLoanSets",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "2292:75:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                    "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set)"
                  },
                  "typeName": {
                    "id": 4626,
                    "keyType": {
                      "id": 4624,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2300:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2292:51:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                      "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 4625,
                      "name": "EnumerableBytes32Set.Bytes32Set",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 26734,
                      "src": "2311:31:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                        "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4631,
                  "name": "borrowerLoanSets",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "2394:77:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                    "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set)"
                  },
                  "typeName": {
                    "id": 4630,
                    "keyType": {
                      "id": 4628,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2402:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2394:51:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                      "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 4629,
                      "name": "EnumerableBytes32Set.Bytes32Set",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 26734,
                      "src": "2413:31:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                        "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4635,
                  "name": "userLoanParamSets",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "2502:78:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                    "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set)"
                  },
                  "typeName": {
                    "id": 4634,
                    "keyType": {
                      "id": 4632,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2510:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2502:51:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                      "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 4633,
                      "name": "EnumerableBytes32Set.Bytes32Set",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 26734,
                      "src": "2521:31:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                        "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4637,
                  "name": "feesController",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "2626:29:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4636,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2626:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4642,
                  "name": "lendingFeePercent",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "2717:41:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4638,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2717:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_10000000000000000000_by_1",
                      "typeString": "int_const 10000000000000000000"
                    },
                    "id": 4641,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 4639,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2752:2:14",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3139",
                      "id": 4640,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2756:2:14",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_19_by_1",
                        "typeString": "int_const 19"
                      },
                      "value": "19"
                    },
                    "src": "2752:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10000000000000000000_by_1",
                      "typeString": "int_const 10000000000000000000"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4646,
                  "name": "lendingFeeTokensHeld",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "2825:55:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 4645,
                    "keyType": {
                      "id": 4643,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2833:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2825:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 4644,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2844:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4650,
                  "name": "lendingFeeTokensPaid",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "2994:55:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 4649,
                    "keyType": {
                      "id": 4647,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3002:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2994:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 4648,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3013:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4657,
                  "name": "tradingFeePercent",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "3097:46:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4651,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3097:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_150000000000000000_by_1",
                      "typeString": "int_const 150000000000000000"
                    },
                    "id": 4656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "3135",
                      "id": 4652,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3132:2:14",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_15_by_1",
                        "typeString": "int_const 15"
                      },
                      "value": "15"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_rational_10000000000000000_by_1",
                        "typeString": "int_const 10000000000000000"
                      },
                      "id": 4655,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "hexValue": "3130",
                        "id": 4653,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3137:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3136",
                        "id": 4654,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3141:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_16_by_1",
                          "typeString": "int_const 16"
                        },
                        "value": "16"
                      },
                      "src": "3137:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10000000000000000_by_1",
                        "typeString": "int_const 10000000000000000"
                      }
                    },
                    "src": "3132:11:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_150000000000000000_by_1",
                      "typeString": "int_const 150000000000000000"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4661,
                  "name": "tradingFeeTokensHeld",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "3209:55:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 4660,
                    "keyType": {
                      "id": 4658,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3217:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3209:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 4659,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3228:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4665,
                  "name": "tradingFeeTokensPaid",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "3376:55:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 4664,
                    "keyType": {
                      "id": 4662,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3384:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3376:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 4663,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3395:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4672,
                  "name": "borrowingFeePercent",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "3490:47:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4666,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3490:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_90000000000000000_by_1",
                      "typeString": "int_const 90000000000000000"
                    },
                    "id": 4671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "39",
                      "id": 4667,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3527:1:14",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_9_by_1",
                        "typeString": "int_const 9"
                      },
                      "value": "9"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_rational_10000000000000000_by_1",
                        "typeString": "int_const 10000000000000000"
                      },
                      "id": 4670,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "hexValue": "3130",
                        "id": 4668,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3531:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3136",
                        "id": 4669,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3535:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_16_by_1",
                          "typeString": "int_const 16"
                        },
                        "value": "16"
                      },
                      "src": "3531:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10000000000000000_by_1",
                        "typeString": "int_const 10000000000000000"
                      }
                    },
                    "src": "3527:10:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_90000000000000000_by_1",
                      "typeString": "int_const 90000000000000000"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4676,
                  "name": "borrowingFeeTokensHeld",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "3605:57:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 4675,
                    "keyType": {
                      "id": 4673,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3613:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3605:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 4674,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3624:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4680,
                  "name": "borrowingFeeTokensPaid",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "3781:57:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 4679,
                    "keyType": {
                      "id": 4677,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3789:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3781:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 4678,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3800:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4682,
                  "name": "protocolTokenHeld",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "3887:32:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4681,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3887:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4684,
                  "name": "protocolTokenPaid",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "3969:32:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4683,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3969:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4691,
                  "name": "affiliateFeePercent",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "4075:47:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4685,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4075:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_5000000000000000000_by_1",
                      "typeString": "int_const 5000000000000000000"
                    },
                    "id": 4690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "35",
                      "id": 4686,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4112:1:14",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_5_by_1",
                        "typeString": "int_const 5"
                      },
                      "value": "5"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                        "typeString": "int_const 1000000000000000000"
                      },
                      "id": 4689,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "hexValue": "3130",
                        "id": 4687,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4116:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3138",
                        "id": 4688,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4120:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_18_by_1",
                          "typeString": "int_const 18"
                        },
                        "value": "18"
                      },
                      "src": "4116:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                        "typeString": "int_const 1000000000000000000"
                      }
                    },
                    "src": "4112:10:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_5000000000000000000_by_1",
                      "typeString": "int_const 5000000000000000000"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4698,
                  "name": "liquidationIncentivePercent",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "4198:55:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4692,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4198:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_5000000000000000000_by_1",
                      "typeString": "int_const 5000000000000000000"
                    },
                    "id": 4697,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "35",
                      "id": 4693,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4243:1:14",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_5_by_1",
                        "typeString": "int_const 5"
                      },
                      "value": "5"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                        "typeString": "int_const 1000000000000000000"
                      },
                      "id": 4696,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "hexValue": "3130",
                        "id": 4694,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4247:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3138",
                        "id": 4695,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4251:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_18_by_1",
                          "typeString": "int_const 18"
                        },
                        "value": "18"
                      },
                      "src": "4247:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                        "typeString": "int_const 1000000000000000000"
                      }
                    },
                    "src": "4243:10:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_5000000000000000000_by_1",
                      "typeString": "int_const 5000000000000000000"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4702,
                  "name": "loanPoolToUnderlying",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "4285:55:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                    "typeString": "mapping(address => address)"
                  },
                  "typeName": {
                    "id": 4701,
                    "keyType": {
                      "id": 4699,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4293:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4285:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                      "typeString": "mapping(address => address)"
                    },
                    "valueType": {
                      "id": 4700,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4304:7:14",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4706,
                  "name": "underlyingToLoanPool",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "4372:55:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                    "typeString": "mapping(address => address)"
                  },
                  "typeName": {
                    "id": 4705,
                    "keyType": {
                      "id": 4703,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4380:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4372:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                      "typeString": "mapping(address => address)"
                    },
                    "valueType": {
                      "id": 4704,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4391:7:14",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4708,
                  "name": "loanPoolsSet",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "4452:53:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                    "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4707,
                    "name": "EnumerableBytes32Set.Bytes32Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 26734,
                    "src": "4452:31:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                      "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4712,
                  "name": "supportedTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "4542:47:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 4711,
                    "keyType": {
                      "id": 4709,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4550:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4542:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 4710,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "4561:4:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4719,
                  "name": "maxDisagreement",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "4651:43:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4713,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4651:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_5000000000000000000_by_1",
                      "typeString": "int_const 5000000000000000000"
                    },
                    "id": 4718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "35",
                      "id": 4714,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4684:1:14",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_5_by_1",
                        "typeString": "int_const 5"
                      },
                      "value": "5"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                        "typeString": "int_const 1000000000000000000"
                      },
                      "id": 4717,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "hexValue": "3130",
                        "id": 4715,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4688:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3138",
                        "id": 4716,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4692:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_18_by_1",
                          "typeString": "int_const 18"
                        },
                        "value": "18"
                      },
                      "src": "4688:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                        "typeString": "int_const 1000000000000000000"
                      }
                    },
                    "src": "4684:10:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_5000000000000000000_by_1",
                      "typeString": "int_const 5000000000000000000"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4722,
                  "name": "sourceBuffer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "4754:35:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4720,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4754:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3130303030",
                    "id": 4721,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4784:5:14",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10000_by_1",
                      "typeString": "int_const 10000"
                    },
                    "value": "10000"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4725,
                  "name": "maxSwapSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "4832:37:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4723,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4832:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3530",
                    "id": 4724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4861:8:14",
                    "subdenomination": "ether",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_50000000000000000000_by_1",
                      "typeString": "int_const 50000000000000000000"
                    },
                    "value": "50"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4729,
                  "name": "borrowerNonce",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "4925:48:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 4728,
                    "keyType": {
                      "id": 4726,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4933:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4925:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 4727,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4944:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4732,
                  "name": "rolloverBaseReward",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "5060:50:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4730,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5060:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3136383030303030303030303030",
                    "id": 4731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5096:14:14",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_16800000000000_by_1",
                      "typeString": "int_const 16800000000000"
                    },
                    "value": "16800000000000"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4735,
                  "name": "rolloverFlexFeePercent",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "5113:49:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4733,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5113:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "302e31",
                    "id": 4734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5153:9:14",
                    "subdenomination": "ether",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100000000000000000_by_1",
                      "typeString": "int_const 100000000000000000"
                    },
                    "value": "0.1"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4737,
                  "name": "wrbtcToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "5175:29:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                    "typeString": "contract IWrbtcERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4736,
                    "name": "IWrbtcERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25559,
                    "src": "5175:11:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                      "typeString": "contract IWrbtcERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4739,
                  "name": "protocolTokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "5207:35:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4738,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5207:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4746,
                  "name": "feeRebatePercent",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "5340:45:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4740,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5340:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_50000000000000000000_by_1",
                      "typeString": "int_const 50000000000000000000"
                    },
                    "id": 4745,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "3530",
                      "id": 4741,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5374:2:14",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_50_by_1",
                        "typeString": "int_const 50"
                      },
                      "value": "50"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                        "typeString": "int_const 1000000000000000000"
                      },
                      "id": 4744,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "hexValue": "3130",
                        "id": 4742,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5379:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3138",
                        "id": 4743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5383:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_18_by_1",
                          "typeString": "int_const 18"
                        },
                        "value": "18"
                      },
                      "src": "5379:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                        "typeString": "int_const 1000000000000000000"
                      }
                    },
                    "src": "5374:11:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_50000000000000000000_by_1",
                      "typeString": "int_const 50000000000000000000"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4748,
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "5389:20:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4747,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5389:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4750,
                  "name": "protocolAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "5443:30:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4749,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5443:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4754,
                  "name": "userNotFirstTradeFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "5558:53:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 4753,
                    "keyType": {
                      "id": 4751,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5566:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "5558:24:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 4752,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "5577:4:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4758,
                  "name": "affiliatesUserReferrer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "5650:57:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                    "typeString": "mapping(address => address)"
                  },
                  "typeName": {
                    "id": 4757,
                    "keyType": {
                      "id": 4755,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5658:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "5650:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                      "typeString": "mapping(address => address)"
                    },
                    "valueType": {
                      "id": 4756,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5669:7:14",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4762,
                  "name": "referralsList",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "5771:74:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$26428_storage_$",
                    "typeString": "mapping(address => struct EnumerableAddressSet.AddressSet)"
                  },
                  "typeName": {
                    "id": 4761,
                    "keyType": {
                      "id": 4759,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5779:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "5771:51:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$26428_storage_$",
                      "typeString": "mapping(address => struct EnumerableAddressSet.AddressSet)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 4760,
                      "name": "EnumerableAddressSet.AddressSet",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 26428,
                      "src": "5790:31:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                        "typeString": "struct EnumerableAddressSet.AddressSet"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4765,
                  "name": "minReferralsToPayout",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "6000:39:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4763,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6000:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 4764,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6038:1:14",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3_by_1",
                      "typeString": "int_const 3"
                    },
                    "value": "3"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4769,
                  "name": "affiliateRewardsHeld",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "6168:55:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 4768,
                    "keyType": {
                      "id": 4766,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6176:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "6168:27:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 4767,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "6187:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4771,
                  "name": "sovTokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "6272:30:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4770,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6272:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4773,
                  "name": "lockedSOVAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "6305:31:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4772,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6305:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4780,
                  "name": "affiliateTradingTokenFeePercent",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "6447:60:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4774,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6447:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_20000000000000000000_by_1",
                      "typeString": "int_const 20000000000000000000"
                    },
                    "id": 4779,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "3230",
                      "id": 4775,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6496:2:14",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_20_by_1",
                        "typeString": "int_const 20"
                      },
                      "value": "20"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                        "typeString": "int_const 1000000000000000000"
                      },
                      "id": 4778,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "hexValue": "3130",
                        "id": 4776,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6501:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3138",
                        "id": 4777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6505:2:14",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_18_by_1",
                          "typeString": "int_const 18"
                        },
                        "value": "18"
                      },
                      "src": "6501:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                        "typeString": "int_const 1000000000000000000"
                      }
                    },
                    "src": "6496:11:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_20000000000000000000_by_1",
                      "typeString": "int_const 20000000000000000000"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4784,
                  "name": "affiliatesReferrerTokensList",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "6586:89:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$26428_storage_$",
                    "typeString": "mapping(address => struct EnumerableAddressSet.AddressSet)"
                  },
                  "typeName": {
                    "id": 4783,
                    "keyType": {
                      "id": 4781,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6594:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "6586:51:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$26428_storage_$",
                      "typeString": "mapping(address => struct EnumerableAddressSet.AddressSet)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 4782,
                      "name": "EnumerableAddressSet.AddressSet",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 26428,
                      "src": "6605:31:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                        "typeString": "struct EnumerableAddressSet.AddressSet"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4790,
                  "name": "affiliatesReferrerBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "6768:81:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 4789,
                    "keyType": {
                      "id": 4785,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6776:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "6768:47:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 4788,
                      "keyType": {
                        "id": 4786,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6795:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "6787:27:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 4787,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6806:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4796,
                  "name": "specialRebates",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "6853:69:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 4795,
                    "keyType": {
                      "id": 4791,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6861:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "6853:47:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 4794,
                      "keyType": {
                        "id": 4792,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6880:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "6872:27:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 4793,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6891:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4798,
                  "name": "pause",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "7007:17:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4797,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7007:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4800,
                  "name": "swapExtrernalFeePercent",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "7065:40:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4799,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7065:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4802,
                  "name": "tradingRebateRewardsBasisPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 4841,
                  "src": "7348:47:14",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4801,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7348:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4839,
                    "nodeType": "Block",
                    "src": "7631:173:14",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4809,
                              "name": "logicTargets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4583,
                              "src": "7635:12:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                                "typeString": "mapping(bytes4 => address)"
                              }
                            },
                            "id": 4811,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4810,
                              "name": "sig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4804,
                              "src": "7648:3:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7635:17:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4812,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4806,
                            "src": "7655:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7635:26:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4814,
                        "nodeType": "ExpressionStatement",
                        "src": "7635:26:14"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4815,
                            "name": "target",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4806,
                            "src": "7670:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7688:1:14",
                                "subdenomination": null,
                                "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": 4816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7680:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 4818,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7680:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "7670:20:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4837,
                          "nodeType": "Block",
                          "src": "7748:53:14",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4833,
                                        "name": "sig",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4804,
                                        "src": "7791:3:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      ],
                                      "id": 4832,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7783:7:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": "bytes32"
                                    },
                                    "id": 4834,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7783:12:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4829,
                                    "name": "logicTargetsSet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4621,
                                    "src": "7753:15:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                      "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                    }
                                  },
                                  "id": 4831,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "removeBytes32",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26887,
                                  "src": "7753:29:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                    "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                                  }
                                },
                                "id": 4835,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7753:43:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4836,
                              "nodeType": "ExpressionStatement",
                              "src": "7753:43:14"
                            }
                          ]
                        },
                        "id": 4838,
                        "nodeType": "IfStatement",
                        "src": "7666:135:14",
                        "trueBody": {
                          "id": 4828,
                          "nodeType": "Block",
                          "src": "7692:50:14",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4824,
                                        "name": "sig",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4804,
                                        "src": "7732:3:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      ],
                                      "id": 4823,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7724:7:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": "bytes32"
                                    },
                                    "id": 4825,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7724:12:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4820,
                                    "name": "logicTargetsSet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4621,
                                    "src": "7697:15:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                      "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                    }
                                  },
                                  "id": 4822,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "addBytes32",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26787,
                                  "src": "7697:26:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                    "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                                  }
                                },
                                "id": 4826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7697:40:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4827,
                              "nodeType": "ExpressionStatement",
                              "src": "7697:40:14"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Add signature and target to storage.\n@dev Protocol is a proxy and requires a way to add every\n  module function dynamically during deployment.\n",
                  "id": 4840,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setTarget",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4807,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4804,
                        "name": "sig",
                        "nodeType": "VariableDeclaration",
                        "scope": 4840,
                        "src": "7594:10:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4803,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "7594:6:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4806,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 4840,
                        "src": "7606:14:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4805,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7606:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7593:28:14"
                  },
                  "returnParameters": {
                    "id": 4808,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7631:0:14"
                  },
                  "scope": 4841,
                  "src": "7574:230:14",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 4842,
              "src": "680:7126:14"
            }
          ],
          "src": "118:7689:14"
        },
        "id": 14
      },
      "contracts/core/objects/LenderInterestStruct.sol": {
        "ast": {
          "absolutePath": "contracts/core/objects/LenderInterestStruct.sol",
          "exportedSymbols": {
            "LenderInterestStruct": [
              4855
            ]
          },
          "id": 4856,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4843,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:15"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title The Lender Interest.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the storage structure of the Lender Interest.\n",
              "fullyImplemented": true,
              "id": 4855,
              "linearizedBaseContracts": [
                4855
              ],
              "name": "LenderInterestStruct",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "LenderInterestStruct.LenderInterest",
                  "id": 4854,
                  "members": [
                    {
                      "constant": false,
                      "id": 4845,
                      "name": "principalTotal",
                      "nodeType": "VariableDeclaration",
                      "scope": 4854,
                      "src": "476:22:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4844,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "476:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4847,
                      "name": "owedPerDay",
                      "nodeType": "VariableDeclaration",
                      "scope": 4854,
                      "src": "550:18:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4846,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "550:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4849,
                      "name": "owedTotal",
                      "nodeType": "VariableDeclaration",
                      "scope": 4854,
                      "src": "622:17:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4848,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "622:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4851,
                      "name": "paidTotal",
                      "nodeType": "VariableDeclaration",
                      "scope": 4854,
                      "src": "723:17:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4850,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "723:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4853,
                      "name": "updatedTimestamp",
                      "nodeType": "VariableDeclaration",
                      "scope": 4854,
                      "src": "786:24:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4852,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "786:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "LenderInterest",
                  "nodeType": "StructDefinition",
                  "scope": 4855,
                  "src": "450:381:15",
                  "visibility": "public"
                }
              ],
              "scope": 4856,
              "src": "417:416:15"
            }
          ],
          "src": "118:716:15"
        },
        "id": 15
      },
      "contracts/core/objects/LoanInterestStruct.sol": {
        "ast": {
          "absolutePath": "contracts/core/objects/LoanInterestStruct.sol",
          "exportedSymbols": {
            "LoanInterestStruct": [
              4865
            ]
          },
          "id": 4866,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4857,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:16"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title The Loan Interest.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the storage structure of the Loan Interest.\n",
              "fullyImplemented": true,
              "id": 4865,
              "linearizedBaseContracts": [
                4865
              ],
              "name": "LoanInterestStruct",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "LoanInterestStruct.LoanInterest",
                  "id": 4864,
                  "members": [
                    {
                      "constant": false,
                      "id": 4859,
                      "name": "owedPerDay",
                      "nodeType": "VariableDeclaration",
                      "scope": 4864,
                      "src": "468:18:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4858,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "468:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4861,
                      "name": "depositTotal",
                      "nodeType": "VariableDeclaration",
                      "scope": 4864,
                      "src": "526:20:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4860,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "526:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4863,
                      "name": "updatedTimestamp",
                      "nodeType": "VariableDeclaration",
                      "scope": 4864,
                      "src": "588:24:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4862,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "588:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "LoanInterest",
                  "nodeType": "StructDefinition",
                  "scope": 4865,
                  "src": "444:189:16",
                  "visibility": "public"
                }
              ],
              "scope": 4866,
              "src": "413:222:16"
            }
          ],
          "src": "118:518:16"
        },
        "id": 16
      },
      "contracts/core/objects/LoanParamsStruct.sol": {
        "ast": {
          "absolutePath": "contracts/core/objects/LoanParamsStruct.sol",
          "exportedSymbols": {
            "LoanParamsStruct": [
              4885
            ]
          },
          "id": 4886,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4867,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:17"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title The Loan Parameters.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the storage structure of the Loan Parameters.\n",
              "fullyImplemented": true,
              "id": 4885,
              "linearizedBaseContracts": [
                4885
              ],
              "name": "LoanParamsStruct",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "LoanParamsStruct.LoanParams",
                  "id": 4884,
                  "members": [
                    {
                      "constant": false,
                      "id": 4869,
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 4884,
                      "src": "505:10:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4868,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "505:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4871,
                      "name": "active",
                      "nodeType": "VariableDeclaration",
                      "scope": 4884,
                      "src": "627:11:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4870,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "627:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4873,
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 4884,
                      "src": "675:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4872,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "675:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4875,
                      "name": "loanToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 4884,
                      "src": "727:17:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4874,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "727:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4877,
                      "name": "collateralToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 4884,
                      "src": "790:23:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4876,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "790:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4879,
                      "name": "minInitialMargin",
                      "nodeType": "VariableDeclaration",
                      "scope": 4884,
                      "src": "864:24:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4878,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "864:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4881,
                      "name": "maintenanceMargin",
                      "nodeType": "VariableDeclaration",
                      "scope": 4884,
                      "src": "968:25:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4880,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "968:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4883,
                      "name": "maxLoanTerm",
                      "nodeType": "VariableDeclaration",
                      "scope": 4884,
                      "src": "1070:19:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4882,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1070:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "LoanParams",
                  "nodeType": "StructDefinition",
                  "scope": 4885,
                  "src": "446:647:17",
                  "visibility": "public"
                }
              ],
              "scope": 4886,
              "src": "417:678:17"
            }
          ],
          "src": "118:978:17"
        },
        "id": 17
      },
      "contracts/core/objects/LoanStruct.sol": {
        "ast": {
          "absolutePath": "contracts/core/objects/LoanStruct.sol",
          "exportedSymbols": {
            "LoanStruct": [
              4913
            ]
          },
          "id": 4914,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4887,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:18"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title The Loan Object.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the storage structure of the Loan Object.\n",
              "fullyImplemented": true,
              "id": 4913,
              "linearizedBaseContracts": [
                4913
              ],
              "name": "LoanStruct",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "LoanStruct.Loan",
                  "id": 4912,
                  "members": [
                    {
                      "constant": false,
                      "id": 4889,
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 4912,
                      "src": "448:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4888,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "448:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4891,
                      "name": "loanParamsId",
                      "nodeType": "VariableDeclaration",
                      "scope": 4912,
                      "src": "482:20:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4890,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "482:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4893,
                      "name": "pendingTradesId",
                      "nodeType": "VariableDeclaration",
                      "scope": 4912,
                      "src": "537:23:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4892,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "537:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4895,
                      "name": "active",
                      "nodeType": "VariableDeclaration",
                      "scope": 4912,
                      "src": "598:11:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4894,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "598:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4897,
                      "name": "principal",
                      "nodeType": "VariableDeclaration",
                      "scope": 4912,
                      "src": "659:17:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4896,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "659:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4899,
                      "name": "collateral",
                      "nodeType": "VariableDeclaration",
                      "scope": 4912,
                      "src": "719:18:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4898,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "719:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4901,
                      "name": "startTimestamp",
                      "nodeType": "VariableDeclaration",
                      "scope": 4912,
                      "src": "785:22:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4900,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "785:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4903,
                      "name": "endTimestamp",
                      "nodeType": "VariableDeclaration",
                      "scope": 4912,
                      "src": "832:20:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4902,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "832:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4905,
                      "name": "startMargin",
                      "nodeType": "VariableDeclaration",
                      "scope": 4912,
                      "src": "966:19:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4904,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "966:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4907,
                      "name": "startRate",
                      "nodeType": "VariableDeclaration",
                      "scope": 4912,
                      "src": "1030:17:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4906,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1030:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4909,
                      "name": "borrower",
                      "nodeType": "VariableDeclaration",
                      "scope": 4912,
                      "src": "1136:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4908,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1136:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4911,
                      "name": "lender",
                      "nodeType": "VariableDeclaration",
                      "scope": 4912,
                      "src": "1183:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4910,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1183:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "Loan",
                  "nodeType": "StructDefinition",
                  "scope": 4913,
                  "src": "432:794:18",
                  "visibility": "public"
                }
              ],
              "scope": 4914,
              "src": "409:819:18"
            }
          ],
          "src": "118:1111:18"
        },
        "id": 18
      },
      "contracts/core/objects/OrderStruct.sol": {
        "ast": {
          "absolutePath": "contracts/core/objects/OrderStruct.sol",
          "exportedSymbols": {
            "OrderStruct": [
              4929
            ]
          },
          "id": 4930,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4915,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:19"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title The Loan Order.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the storage structure of the Loan Order.\n",
              "fullyImplemented": true,
              "id": 4929,
              "linearizedBaseContracts": [
                4929
              ],
              "name": "OrderStruct",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "OrderStruct.Order",
                  "id": 4928,
                  "members": [
                    {
                      "constant": false,
                      "id": 4917,
                      "name": "lockedAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 4928,
                      "src": "448:20:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4916,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "448:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4919,
                      "name": "interestRate",
                      "nodeType": "VariableDeclaration",
                      "scope": 4928,
                      "src": "520:20:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4918,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "520:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4921,
                      "name": "minLoanTerm",
                      "nodeType": "VariableDeclaration",
                      "scope": 4928,
                      "src": "600:19:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4920,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "600:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4923,
                      "name": "maxLoanTerm",
                      "nodeType": "VariableDeclaration",
                      "scope": 4928,
                      "src": "654:19:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4922,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "654:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4925,
                      "name": "createdTimestamp",
                      "nodeType": "VariableDeclaration",
                      "scope": 4928,
                      "src": "708:24:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4924,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "708:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4927,
                      "name": "expirationTimestamp",
                      "nodeType": "VariableDeclaration",
                      "scope": 4928,
                      "src": "779:27:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4926,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "779:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "Order",
                  "nodeType": "StructDefinition",
                  "scope": 4929,
                  "src": "431:418:19",
                  "visibility": "public"
                }
              ],
              "scope": 4930,
              "src": "407:444:19"
            }
          ],
          "src": "118:734:19"
        },
        "id": 19
      },
      "contracts/escrow/Escrow.sol": {
        "ast": {
          "absolutePath": "contracts/escrow/Escrow.sol",
          "exportedSymbols": {
            "Escrow": [
              5471
            ]
          },
          "id": 5472,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4931,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:20"
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../openzeppelin/SafeMath.sol",
              "id": 4932,
              "nodeType": "ImportDirective",
              "scope": 5472,
              "sourceUnit": 42310,
              "src": "26:38:20",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 4933,
              "nodeType": "ImportDirective",
              "scope": 5472,
              "sourceUnit": 24700,
              "src": "65:34:20",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": " @title A holding contract for Sovryn Ethereum Pool to accept SOV Token.\n @author Franklin Richards - powerhousefrank@protonmail.com\n @notice You can use this contract for deposit of SOV tokens for some time and withdraw later.",
              "fullyImplemented": true,
              "id": 5471,
              "linearizedBaseContracts": [
                5471
              ],
              "name": "Escrow",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 4936,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4934,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "371:8:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "365:27:20",
                  "typeName": {
                    "id": 4935,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "384:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 4938,
                  "name": "totalDeposit",
                  "nodeType": "VariableDeclaration",
                  "scope": 5471,
                  "src": "537:27:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4937,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "537:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4940,
                  "name": "releaseTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 5471,
                  "src": "628:26:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4939,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "628:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4942,
                  "name": "depositLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 5471,
                  "src": "731:27:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4941,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "731:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4944,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 5471,
                  "src": "799:17:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$24699",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4943,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "799:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4946,
                  "name": "multisig",
                  "nodeType": "VariableDeclaration",
                  "scope": 5471,
                  "src": "879:23:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4945,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "879:7:20",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 4950,
                  "name": "userBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 5471,
                  "src": "938:40:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 4949,
                    "keyType": {
                      "id": 4947,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "946:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "938:27:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 4948,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "957:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "canonicalName": "Escrow.Status",
                  "id": 4956,
                  "members": [
                    {
                      "id": 4951,
                      "name": "Deployed",
                      "nodeType": "EnumValue",
                      "src": "1363:8:20"
                    },
                    {
                      "id": 4952,
                      "name": "Deposit",
                      "nodeType": "EnumValue",
                      "src": "1373:7:20"
                    },
                    {
                      "id": 4953,
                      "name": "Holding",
                      "nodeType": "EnumValue",
                      "src": "1382:7:20"
                    },
                    {
                      "id": 4954,
                      "name": "Withdraw",
                      "nodeType": "EnumValue",
                      "src": "1391:8:20"
                    },
                    {
                      "id": 4955,
                      "name": "Expired",
                      "nodeType": "EnumValue",
                      "src": "1401:7:20"
                    }
                  ],
                  "name": "Status",
                  "nodeType": "EnumDefinition",
                  "src": "1349:61:20"
                },
                {
                  "constant": false,
                  "id": 4958,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 5471,
                  "src": "1412:20:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Status_$4956",
                    "typeString": "enum Escrow.Status"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4957,
                    "name": "Status",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4956,
                    "src": "1412:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$4956",
                      "typeString": "enum Escrow.Status"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when the contract deposit starts.",
                  "id": 4960,
                  "name": "EscrowActivated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4959,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1527:2:20"
                  },
                  "src": "1506:24:20"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when the contract is put in holding state. No new token deposit accepted by User.",
                  "id": 4962,
                  "name": "EscrowInHoldingState",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4961,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1662:2:20"
                  },
                  "src": "1636:29:20"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when the contract is put in withdraw state. Users can now withdraw tokens.",
                  "id": 4964,
                  "name": "EscrowInWithdrawState",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4963,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1791:2:20"
                  },
                  "src": "1764:30:20"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when the contract is expired after withdraws are made/total token transfer.",
                  "id": 4966,
                  "name": "EscrowFundExpired",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4965,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1917:2:20"
                  },
                  "src": "1894:26:20"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a new multisig is added to the contract.\n @param _initiator The address which initiated this event to be emitted.\n @param _newMultisig The address which is added as the new multisig.\n @dev Can only be initiated by the current multisig.",
                  "id": 4972,
                  "name": "NewMultisig",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4971,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4968,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4972,
                        "src": "2215:26:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4967,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2215:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4970,
                        "indexed": true,
                        "name": "_newMultisig",
                        "nodeType": "VariableDeclaration",
                        "scope": 4972,
                        "src": "2243:28:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4969,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2243:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2214:58:20"
                  },
                  "src": "2197:76:20"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when the release timestamp is updated.\n @param _initiator The address which initiated this event to be emitted.\n @param _releaseTimestamp The updated release timestamp for the withdraw.",
                  "id": 4978,
                  "name": "TokenReleaseUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4977,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4974,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4978,
                        "src": "2517:26:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4973,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2517:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4976,
                        "indexed": false,
                        "name": "_releaseTimestamp",
                        "nodeType": "VariableDeclaration",
                        "scope": 4978,
                        "src": "2545:25:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4975,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2545:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2516:55:20"
                  },
                  "src": "2491:81:20"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when the deposit limit is updated.\n @param _initiator The address which initiated this event to be emitted.\n @param _depositLimit The updated deposit limit.",
                  "id": 4984,
                  "name": "TokenDepositLimitUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4983,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4980,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4984,
                        "src": "2792:26:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4979,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2792:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4982,
                        "indexed": false,
                        "name": "_depositLimit",
                        "nodeType": "VariableDeclaration",
                        "scope": 4984,
                        "src": "2820:21:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4981,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2820:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2791:51:20"
                  },
                  "src": "2761:82:20"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a new token deposit is done by User.\n @param _initiator The address which initiated this event to be emitted.\n @param _amount The amount of token deposited.",
                  "id": 4990,
                  "name": "TokenDeposit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4989,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4986,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4990,
                        "src": "3056:26:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4985,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3056:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4988,
                        "indexed": false,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4990,
                        "src": "3084:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4987,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3084:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3055:45:20"
                  },
                  "src": "3037:64:20"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when we reach the token deposit limit.",
                  "id": 4992,
                  "name": "DepositLimitReached",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4991,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3189:2:20"
                  },
                  "src": "3164:28:20"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a token withdraw is done by Multisig.\n @param _initiator The address which initiated this event to be emitted.\n @param _amount The amount of token withdrawed.",
                  "id": 4998,
                  "name": "TokenWithdrawByMultisig",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4997,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4994,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4998,
                        "src": "3418:26:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4993,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3418:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4996,
                        "indexed": false,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4998,
                        "src": "3446:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4995,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3446:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3417:45:20"
                  },
                  "src": "3388:75:20"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a new token deposit is done by Multisig.\n @param _initiator The address which initiated this event to be emitted.\n @param _amount The amount of token deposited.",
                  "id": 5004,
                  "name": "TokenDepositByMultisig",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5003,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5000,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5004,
                        "src": "3690:26:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4999,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3690:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5002,
                        "indexed": false,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5004,
                        "src": "3718:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5001,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3718:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3689:45:20"
                  },
                  "src": "3661:74:20"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a token withdraw is done by User.\n @param _initiator The address which initiated this event to be emitted.\n @param _amount The amount of token withdrawed.",
                  "id": 5010,
                  "name": "TokenWithdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5009,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5006,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5010,
                        "src": "3947:26:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5005,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3947:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5008,
                        "indexed": false,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5010,
                        "src": "3975:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5007,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3975:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3946:45:20"
                  },
                  "src": "3927:65:20"
                },
                {
                  "body": {
                    "id": 5021,
                    "nodeType": "Block",
                    "src": "4037:76:20",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5016,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5013,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "4049:3:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 5014,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4049:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 5015,
                                "name": "multisig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4946,
                                "src": "4063:8:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4049:22:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f6e6c79204d756c74697369672063616e2063616c6c20746869732e",
                              "id": 5017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4073:30:20",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4ba67853324e85dcb38a51a59e7decb523e5cfee41c3f2bcc46c54e4b003f4a1",
                                "typeString": "literal_string \"Only Multisig can call this.\""
                              },
                              "value": "Only Multisig can call this."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4ba67853324e85dcb38a51a59e7decb523e5cfee41c3f2bcc46c54e4b003f4a1",
                                "typeString": "literal_string \"Only Multisig can call this.\""
                              }
                            ],
                            "id": 5012,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4041:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4041:63:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5019,
                        "nodeType": "ExpressionStatement",
                        "src": "4041:63:20"
                      },
                      {
                        "id": 5020,
                        "nodeType": "PlaceholderStatement",
                        "src": "4108:1:20"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 5022,
                  "name": "onlyMultisig",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 5011,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4034:2:20"
                  },
                  "src": "4013:100:20",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5034,
                    "nodeType": "Block",
                    "src": "4147:76:20",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_Status_$4956",
                                "typeString": "enum Escrow.Status"
                              },
                              "id": 5029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5027,
                                "name": "status",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4958,
                                "src": "4159:6:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Status_$4956",
                                  "typeString": "enum Escrow.Status"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 5028,
                                "name": "s",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5024,
                                "src": "4169:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Status_$4956",
                                  "typeString": "enum Escrow.Status"
                                }
                              },
                              "src": "4159:11:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54686520636f6e7472616374206973206e6f7420696e207468652072696768742073746174652e",
                              "id": 5030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4172:41:20",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5d7f5063624a734564358625b39fbb9f5620c2cf8ac0451c563a74ceb724ac90",
                                "typeString": "literal_string \"The contract is not in the right state.\""
                              },
                              "value": "The contract is not in the right state."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5d7f5063624a734564358625b39fbb9f5620c2cf8ac0451c563a74ceb724ac90",
                                "typeString": "literal_string \"The contract is not in the right state.\""
                              }
                            ],
                            "id": 5026,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4151:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4151:63:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5032,
                        "nodeType": "ExpressionStatement",
                        "src": "4151:63:20"
                      },
                      {
                        "id": 5033,
                        "nodeType": "PlaceholderStatement",
                        "src": "4218:1:20"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 5035,
                  "name": "checkStatus",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 5025,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5024,
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "scope": 5035,
                        "src": "4137:8:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Status_$4956",
                          "typeString": "enum Escrow.Status"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5023,
                          "name": "Status",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4956,
                          "src": "4137:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$4956",
                            "typeString": "enum Escrow.Status"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4136:10:20"
                  },
                  "src": "4116:107:20",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5050,
                    "nodeType": "Block",
                    "src": "4250:113:20",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 5045,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5040,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 5038,
                                  "name": "releaseTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4940,
                                  "src": "4262:11:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 5039,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4277:1:20",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4262:16:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5044,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 5041,
                                  "name": "releaseTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4940,
                                  "src": "4282:11:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5042,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44984,
                                    "src": "4297:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 5043,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4297:15:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4282:30:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4262:50:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5468652072656c656173652074696d6520686173206e6f742073746172746564207965742e",
                              "id": 5046,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4314:39:20",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5253937b16c0cf58edfa45ee86e76eee97656a28f0b367af7bb41e3499ddef57",
                                "typeString": "literal_string \"The release time has not started yet.\""
                              },
                              "value": "The release time has not started yet."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5253937b16c0cf58edfa45ee86e76eee97656a28f0b367af7bb41e3499ddef57",
                                "typeString": "literal_string \"The release time has not started yet.\""
                              }
                            ],
                            "id": 5037,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4254:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4254:100:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5048,
                        "nodeType": "ExpressionStatement",
                        "src": "4254:100:20"
                      },
                      {
                        "id": 5049,
                        "nodeType": "PlaceholderStatement",
                        "src": "4358:1:20"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 5051,
                  "name": "checkRelease",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 5036,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4247:2:20"
                  },
                  "src": "4226:137:20",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5109,
                    "nodeType": "Block",
                    "src": "4776:307:20",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5063,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5053,
                                "src": "4788:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5065,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4804:1:20",
                                    "subdenomination": null,
                                    "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": 5064,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4796:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 5066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4796:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4788:18:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c696420534f5620416464726573732e",
                              "id": 5068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4808:22:20",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f5840b4863e6ab75c00993b856f6487e94b357014931d34497992ecc40c5bcf3",
                                "typeString": "literal_string \"Invalid SOV Address.\""
                              },
                              "value": "Invalid SOV Address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f5840b4863e6ab75c00993b856f6487e94b357014931d34497992ecc40c5bcf3",
                                "typeString": "literal_string \"Invalid SOV Address.\""
                              }
                            ],
                            "id": 5062,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4780:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4780:51:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5070,
                        "nodeType": "ExpressionStatement",
                        "src": "4780:51:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5076,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5072,
                                "name": "_multisig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5055,
                                "src": "4843:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5074,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4864:1:20",
                                    "subdenomination": null,
                                    "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": 5073,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4856:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 5075,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4856:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4843:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c6964204d756c746973696720416464726573732e",
                              "id": 5077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4868:27:20",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6aa793488b70ce57485c14a05f1d51a8e73ee0ef5231a117ddb08b543e1a8ac5",
                                "typeString": "literal_string \"Invalid Multisig Address.\""
                              },
                              "value": "Invalid Multisig Address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6aa793488b70ce57485c14a05f1d51a8e73ee0ef5231a117ddb08b543e1a8ac5",
                                "typeString": "literal_string \"Invalid Multisig Address.\""
                              }
                            ],
                            "id": 5071,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4835:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4835:61:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5079,
                        "nodeType": "ExpressionStatement",
                        "src": "4835:61:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5080,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4944,
                            "src": "4901:3:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5082,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5053,
                                "src": "4914:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5081,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24699,
                              "src": "4907:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 5083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4907:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "4901:18:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 5085,
                        "nodeType": "ExpressionStatement",
                        "src": "4901:18:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5086,
                            "name": "multisig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4946,
                            "src": "4923:8:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5087,
                            "name": "_multisig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5055,
                            "src": "4934:9:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4923:20:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5089,
                        "nodeType": "ExpressionStatement",
                        "src": "4923:20:20"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5091,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "4965:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4965:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5093,
                              "name": "_multisig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5055,
                              "src": "4977:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5090,
                            "name": "NewMultisig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4972,
                            "src": "4953:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 5094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4953:34:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5095,
                        "nodeType": "EmitStatement",
                        "src": "4948:39:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5096,
                            "name": "releaseTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4940,
                            "src": "4992:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5097,
                            "name": "_releaseTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5057,
                            "src": "5006:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4992:26:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5099,
                        "nodeType": "ExpressionStatement",
                        "src": "4992:26:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5100,
                            "name": "depositLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4942,
                            "src": "5022:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5101,
                            "name": "_depositLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5059,
                            "src": "5037:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5022:28:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5103,
                        "nodeType": "ExpressionStatement",
                        "src": "5022:28:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5104,
                            "name": "status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4958,
                            "src": "5055:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$4956",
                              "typeString": "enum Escrow.Status"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5105,
                              "name": "Status",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4956,
                              "src": "5064:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Status_$4956_$",
                                "typeString": "type(enum Escrow.Status)"
                              }
                            },
                            "id": 5106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Deployed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5064:15:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$4956",
                              "typeString": "enum Escrow.Status"
                            }
                          },
                          "src": "5055:24:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$4956",
                            "typeString": "enum Escrow.Status"
                          }
                        },
                        "id": 5108,
                        "nodeType": "ExpressionStatement",
                        "src": "5055:24:20"
                      }
                    ]
                  },
                  "documentation": "@notice Setup the required parameters.\n@param _SOV The SOV token address.\n@param _multisig The owner of the tokens & contract.\n@param _releaseTime The token release time, zero if undecided.\n@param _depositLimit The amount of tokens we will be accepting.",
                  "id": 5110,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5060,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5053,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 5110,
                        "src": "4683:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5052,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4683:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5055,
                        "name": "_multisig",
                        "nodeType": "VariableDeclaration",
                        "scope": 5110,
                        "src": "4699:17:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5054,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4699:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5057,
                        "name": "_releaseTime",
                        "nodeType": "VariableDeclaration",
                        "scope": 5110,
                        "src": "4720:20:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5056,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4720:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5059,
                        "name": "_depositLimit",
                        "nodeType": "VariableDeclaration",
                        "scope": 5110,
                        "src": "4744:21:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5058,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4744:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4679:89:20"
                  },
                  "returnParameters": {
                    "id": 5061,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4776:0:20"
                  },
                  "scope": 5471,
                  "src": "4668:415:20",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5127,
                    "nodeType": "Block",
                    "src": "5340:58:20",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5119,
                            "name": "status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4958,
                            "src": "5344:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$4956",
                              "typeString": "enum Escrow.Status"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5120,
                              "name": "Status",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4956,
                              "src": "5353:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Status_$4956_$",
                                "typeString": "type(enum Escrow.Status)"
                              }
                            },
                            "id": 5121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5353:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$4956",
                              "typeString": "enum Escrow.Status"
                            }
                          },
                          "src": "5344:23:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$4956",
                            "typeString": "enum Escrow.Status"
                          }
                        },
                        "id": 5123,
                        "nodeType": "ExpressionStatement",
                        "src": "5344:23:20"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5124,
                            "name": "EscrowActivated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4960,
                            "src": "5377:15:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 5125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5377:17:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5126,
                        "nodeType": "EmitStatement",
                        "src": "5372:22:20"
                      }
                    ]
                  },
                  "documentation": "@notice This function is called once after deployment for starting the deposit action.\n@dev Without calling this function, the contract will not start accepting tokens.",
                  "id": 5128,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5113,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5112,
                        "name": "onlyMultisig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5022,
                        "src": "5298:12:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5298:12:20"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5115,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4956,
                            "src": "5323:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$4956_$",
                              "typeString": "type(enum Escrow.Status)"
                            }
                          },
                          "id": 5116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Deployed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5323:15:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$4956",
                            "typeString": "enum Escrow.Status"
                          }
                        }
                      ],
                      "id": 5117,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5114,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5035,
                        "src": "5311:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$4956_$",
                          "typeString": "modifier (enum Escrow.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5311:28:20"
                    }
                  ],
                  "name": "init",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5111,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5286:2:20"
                  },
                  "returnParameters": {
                    "id": 5118,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5340:0:20"
                  },
                  "scope": 5471,
                  "src": "5273:125:20",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5154,
                    "nodeType": "Block",
                    "src": "5572:151:20",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5136,
                                "name": "_newMultisig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5130,
                                "src": "5584:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5138,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5608:1:20",
                                    "subdenomination": null,
                                    "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": 5137,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5600:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 5139,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5600:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5584:26:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4e6577204d756c7469736967206164647265737320696e76616c69642e",
                              "id": 5141,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5612:31:20",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_adbe0d9ef2b0be96418d8e7ff2a02e06b93c07eba9c2c1cebb4b3bd27bb43ef8",
                                "typeString": "literal_string \"New Multisig address invalid.\""
                              },
                              "value": "New Multisig address invalid."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_adbe0d9ef2b0be96418d8e7ff2a02e06b93c07eba9c2c1cebb4b3bd27bb43ef8",
                                "typeString": "literal_string \"New Multisig address invalid.\""
                              }
                            ],
                            "id": 5135,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5576:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5576:68:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5143,
                        "nodeType": "ExpressionStatement",
                        "src": "5576:68:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5144,
                            "name": "multisig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4946,
                            "src": "5649:8:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5145,
                            "name": "_newMultisig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5130,
                            "src": "5660:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5649:23:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5147,
                        "nodeType": "ExpressionStatement",
                        "src": "5649:23:20"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5149,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "5694:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5694:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5151,
                              "name": "_newMultisig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5130,
                              "src": "5706:12:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5148,
                            "name": "NewMultisig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4972,
                            "src": "5682:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 5152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5682:37:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5153,
                        "nodeType": "EmitStatement",
                        "src": "5677:42:20"
                      }
                    ]
                  },
                  "documentation": "@notice Update Multisig.\n@param _newMultisig The new owner of the tokens & contract.",
                  "id": 5155,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5133,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5132,
                        "name": "onlyMultisig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5022,
                        "src": "5559:12:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5559:12:20"
                    }
                  ],
                  "name": "updateMultisig",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5130,
                        "name": "_newMultisig",
                        "nodeType": "VariableDeclaration",
                        "scope": 5155,
                        "src": "5528:20:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5129,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5528:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5527:22:20"
                  },
                  "returnParameters": {
                    "id": 5134,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5572:0:20"
                  },
                  "scope": 5471,
                  "src": "5504:219:20",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5172,
                    "nodeType": "Block",
                    "src": "6008:95:20",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5162,
                            "name": "releaseTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4940,
                            "src": "6012:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5163,
                            "name": "_newReleaseTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5157,
                            "src": "6026:15:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6012:29:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5165,
                        "nodeType": "ExpressionStatement",
                        "src": "6012:29:20"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5167,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6071:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6071:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5169,
                              "name": "_newReleaseTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5157,
                              "src": "6083:15:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5166,
                            "name": "TokenReleaseUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4978,
                            "src": "6051:19:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6051:48:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5171,
                        "nodeType": "EmitStatement",
                        "src": "6046:53:20"
                      }
                    ]
                  },
                  "documentation": "@notice Update Release Timestamp.\n@param _newReleaseTime The new release timestamp for token release.\n@dev Zero is also a valid timestamp, if the release time is not scheduled yet.",
                  "id": 5173,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5160,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5159,
                        "name": "onlyMultisig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5022,
                        "src": "5995:12:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5995:12:20"
                    }
                  ],
                  "name": "updateReleaseTimestamp",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5157,
                        "name": "_newReleaseTime",
                        "nodeType": "VariableDeclaration",
                        "scope": 5173,
                        "src": "5961:23:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5156,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5961:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5960:25:20"
                  },
                  "returnParameters": {
                    "id": 5161,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6008:0:20"
                  },
                  "scope": 5471,
                  "src": "5929:174:20",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5197,
                    "nodeType": "Block",
                    "src": "6341:207:20",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5181,
                                "name": "_newDepositLimit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5175,
                                "src": "6353:16:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 5182,
                                "name": "totalDeposit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4938,
                                "src": "6373:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6353:32:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4465706f73697420616c726561647920686967686572207468616e20746865206c696d697420747279696e6720746f206265207365742e",
                              "id": 5184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6387:57:20",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_820819d61bb9f5240a9bb7eaa88f731b057ebd20bc49e5e24e6b1ef1aa33c641",
                                "typeString": "literal_string \"Deposit already higher than the limit trying to be set.\""
                              },
                              "value": "Deposit already higher than the limit trying to be set."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_820819d61bb9f5240a9bb7eaa88f731b057ebd20bc49e5e24e6b1ef1aa33c641",
                                "typeString": "literal_string \"Deposit already higher than the limit trying to be set.\""
                              }
                            ],
                            "id": 5180,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6345:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6345:100:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5186,
                        "nodeType": "ExpressionStatement",
                        "src": "6345:100:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5187,
                            "name": "depositLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4942,
                            "src": "6449:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5188,
                            "name": "_newDepositLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5175,
                            "src": "6464:16:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6449:31:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5190,
                        "nodeType": "ExpressionStatement",
                        "src": "6449:31:20"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5192,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6515:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6515:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5194,
                              "name": "_newDepositLimit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5175,
                              "src": "6527:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5191,
                            "name": "TokenDepositLimitUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4984,
                            "src": "6490:24:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6490:54:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5196,
                        "nodeType": "EmitStatement",
                        "src": "6485:59:20"
                      }
                    ]
                  },
                  "documentation": "@notice Update Deposit Limit.\n@param _newDepositLimit The new deposit limit.\n@dev IMPORTANT: Should not decrease than already deposited.",
                  "id": 5198,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5178,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5177,
                        "name": "onlyMultisig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5022,
                        "src": "6328:12:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6328:12:20"
                    }
                  ],
                  "name": "updateDepositLimit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5176,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5175,
                        "name": "_newDepositLimit",
                        "nodeType": "VariableDeclaration",
                        "scope": 5198,
                        "src": "6293:24:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5174,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6293:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6292:26:20"
                  },
                  "returnParameters": {
                    "id": 5179,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6341:0:20"
                  },
                  "scope": 5471,
                  "src": "6265:283:20",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5279,
                    "nodeType": "Block",
                    "src": "6914:511:20",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5208,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5200,
                                "src": "6926:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6936:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6926:11:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416d6f756e74206e6565647320746f20626520626967676572207468616e207a65726f2e",
                              "id": 5211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6939:38:20",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_96aa4f54f95d4bd7a69ac95c2c6307ff895411b17973b24dca85e672a893e2b2",
                                "typeString": "literal_string \"Amount needs to be bigger than zero.\""
                              },
                              "value": "Amount needs to be bigger than zero."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_96aa4f54f95d4bd7a69ac95c2c6307ff895411b17973b24dca85e672a893e2b2",
                                "typeString": "literal_string \"Amount needs to be bigger than zero.\""
                              }
                            ],
                            "id": 5207,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6918:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6918:60:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5213,
                        "nodeType": "ExpressionStatement",
                        "src": "6918:60:20"
                      },
                      {
                        "assignments": [
                          5215
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5215,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 5279,
                            "src": "6982:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5214,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6982:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5217,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 5216,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5200,
                          "src": "6999:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6982:24:20"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5220,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5200,
                                "src": "7032:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5218,
                                "name": "totalDeposit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4938,
                                "src": "7015:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5219,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "7015:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7015:25:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5222,
                            "name": "depositLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4942,
                            "src": "7044:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7015:41:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5235,
                        "nodeType": "IfStatement",
                        "src": "7011:127:20",
                        "trueBody": {
                          "id": 5234,
                          "nodeType": "Block",
                          "src": "7058:80:20",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 5229,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 5224,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5215,
                                  "src": "7063:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5227,
                                      "name": "totalDeposit",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4938,
                                      "src": "7089:12:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5225,
                                      "name": "depositLimit",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4942,
                                      "src": "7072:12:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5226,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "7072:16:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 5228,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7072:30:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7063:39:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5230,
                              "nodeType": "ExpressionStatement",
                              "src": "7063:39:20"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5231,
                                  "name": "DepositLimitReached",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4992,
                                  "src": "7112:19:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 5232,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7112:21:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5233,
                              "nodeType": "EmitStatement",
                              "src": "7107:26:20"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          5237
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5237,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 5279,
                            "src": "7142:13:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 5236,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7142:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5247,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5240,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "7175:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5241,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7175:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5243,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45074,
                                  "src": "7195:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Escrow_$5471",
                                    "typeString": "contract Escrow"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Escrow_$5471",
                                    "typeString": "contract Escrow"
                                  }
                                ],
                                "id": 5242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7187:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 5244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7187:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5245,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5215,
                              "src": "7202:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5238,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4944,
                              "src": "7158:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 5239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24682,
                            "src": "7158:16:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 5246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7158:51:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7142:67:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5249,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5237,
                              "src": "7221:8:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e",
                              "id": 5250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7231:36:20",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3acc04fd9d2c6eeea33919248d7d1bf195501ebecaf681e8f7b20db8579eb309",
                                "typeString": "literal_string \"Token transfer was not successful.\""
                              },
                              "value": "Token transfer was not successful."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3acc04fd9d2c6eeea33919248d7d1bf195501ebecaf681e8f7b20db8579eb309",
                                "typeString": "literal_string \"Token transfer was not successful.\""
                              }
                            ],
                            "id": 5248,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7213:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7213:55:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5252,
                        "nodeType": "ExpressionStatement",
                        "src": "7213:55:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5253,
                              "name": "userBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4950,
                              "src": "7273:12:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 5256,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5254,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "7286:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5255,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7286:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7273:24:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5262,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5215,
                                "src": "7329:6:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 5257,
                                  "name": "userBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4950,
                                  "src": "7300:12:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 5260,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5258,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "7313:3:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 5259,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7313:10:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7300:24:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "7300:28:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7300:36:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7273:63:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5265,
                        "nodeType": "ExpressionStatement",
                        "src": "7273:63:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5266,
                            "name": "totalDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4938,
                            "src": "7340:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5269,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5215,
                                "src": "7372:6:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5267,
                                "name": "totalDeposit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4938,
                                "src": "7355:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5268,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "7355:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7355:24:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7340:39:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5272,
                        "nodeType": "ExpressionStatement",
                        "src": "7340:39:20"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5274,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "7402:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7402:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5276,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5215,
                              "src": "7414:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5273,
                            "name": "TokenDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4990,
                            "src": "7389:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5277,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7389:32:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5278,
                        "nodeType": "EmitStatement",
                        "src": "7384:37:20"
                      }
                    ]
                  },
                  "documentation": "@notice Deposit tokens to this contract by User.\n@param _amount the amount of tokens deposited.\n@dev The contract has to be approved by the user inorder for this function to work.\nThese tokens can be withdrawn/transferred during Holding State by the Multisig.",
                  "id": 5280,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5203,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4956,
                            "src": "6898:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$4956_$",
                              "typeString": "type(enum Escrow.Status)"
                            }
                          },
                          "id": 5204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Deposit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6898:14:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$4956",
                            "typeString": "enum Escrow.Status"
                          }
                        }
                      ],
                      "id": 5205,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5202,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5035,
                        "src": "6886:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$4956_$",
                          "typeString": "modifier (enum Escrow.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6886:27:20"
                    }
                  ],
                  "name": "depositTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5201,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5200,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5280,
                        "src": "6860:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5199,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6860:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6859:17:20"
                  },
                  "returnParameters": {
                    "id": 5206,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6914:0:20"
                  },
                  "scope": 5471,
                  "src": "6837:588:20",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5297,
                    "nodeType": "Block",
                    "src": "7737:63:20",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5289,
                            "name": "status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4958,
                            "src": "7741:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$4956",
                              "typeString": "enum Escrow.Status"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5290,
                              "name": "Status",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4956,
                              "src": "7750:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Status_$4956_$",
                                "typeString": "type(enum Escrow.Status)"
                              }
                            },
                            "id": 5291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Holding",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7750:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$4956",
                              "typeString": "enum Escrow.Status"
                            }
                          },
                          "src": "7741:23:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$4956",
                            "typeString": "enum Escrow.Status"
                          }
                        },
                        "id": 5293,
                        "nodeType": "ExpressionStatement",
                        "src": "7741:23:20"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5294,
                            "name": "EscrowInHoldingState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4962,
                            "src": "7774:20:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 5295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7774:22:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5296,
                        "nodeType": "EmitStatement",
                        "src": "7769:27:20"
                      }
                    ]
                  },
                  "documentation": "@notice Update contract state to Holding.\n@dev Once called, the contract no longer accepts any more deposits.\nThe multisig can now withdraw tokens from the contract after the contract is in Holding State.",
                  "id": 5298,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5283,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5282,
                        "name": "onlyMultisig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5022,
                        "src": "7696:12:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7696:12:20"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5285,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4956,
                            "src": "7721:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$4956_$",
                              "typeString": "type(enum Escrow.Status)"
                            }
                          },
                          "id": 5286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Deposit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7721:14:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$4956",
                            "typeString": "enum Escrow.Status"
                          }
                        }
                      ],
                      "id": 5287,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5284,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5035,
                        "src": "7709:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$4956_$",
                          "typeString": "modifier (enum Escrow.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7709:27:20"
                    }
                  ],
                  "name": "changeStateToHolding",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5281,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7684:2:20"
                  },
                  "returnParameters": {
                    "id": 5288,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7737:0:20"
                  },
                  "scope": 5471,
                  "src": "7655:145:20",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5353,
                    "nodeType": "Block",
                    "src": "8195:405:20",
                    "statements": [
                      {
                        "assignments": [
                          5310
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5310,
                            "name": "receiverAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 5353,
                            "src": "8199:23:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5309,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8199:7:20",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5313,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5311,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44994,
                            "src": "8225:3:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8225:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8199:36:20"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5314,
                            "name": "_receiverAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5300,
                            "src": "8243:16:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5316,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8271:1:20",
                                "subdenomination": null,
                                "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": 5315,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8263:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 5317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8263:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "8243:30:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5324,
                        "nodeType": "IfStatement",
                        "src": "8239:80:20",
                        "trueBody": {
                          "id": 5323,
                          "nodeType": "Block",
                          "src": "8275:44:20",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 5321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 5319,
                                  "name": "receiverAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5310,
                                  "src": "8280:15:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 5320,
                                  "name": "_receiverAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5300,
                                  "src": "8298:16:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8280:34:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 5322,
                              "nodeType": "ExpressionStatement",
                              "src": "8280:34:20"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          5326
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5326,
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "scope": 5353,
                            "src": "8323:13:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5325,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8323:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5333,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5330,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45074,
                                  "src": "8361:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Escrow_$5471",
                                    "typeString": "contract Escrow"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Escrow_$5471",
                                    "typeString": "contract Escrow"
                                  }
                                ],
                                "id": 5329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8353:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 5331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8353:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5327,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4944,
                              "src": "8339:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 5328,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24644,
                            "src": "8339:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 5332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8339:28:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8323:44:20"
                      },
                      {
                        "assignments": [
                          5335
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5335,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 5353,
                            "src": "8409:13:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 5334,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8409:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5341,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5338,
                              "name": "receiverAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5310,
                              "src": "8438:15:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5339,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5326,
                              "src": "8455:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5336,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4944,
                              "src": "8425:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 5337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24671,
                            "src": "8425:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 5340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8425:36:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8409:52:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5343,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5335,
                              "src": "8473:8:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e",
                              "id": 5344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8483:60:20",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              },
                              "value": "Token transfer was not successful. Check receiver address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              }
                            ],
                            "id": 5342,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8465:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8465:79:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5346,
                        "nodeType": "ExpressionStatement",
                        "src": "8465:79:20"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5348,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "8578:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8578:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5350,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5326,
                              "src": "8590:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5347,
                            "name": "TokenWithdrawByMultisig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4998,
                            "src": "8554:23:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8554:42:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5352,
                        "nodeType": "EmitStatement",
                        "src": "8549:47:20"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraws all token from the contract by Multisig.\n@param _receiverAddress The address where the tokens has to be transferred. Zero address if the withdraw is to be done in Multisig.\n@dev Can only be called after the token state is changed to Holding.",
                  "id": 5354,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5303,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5302,
                        "name": "onlyMultisig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5022,
                        "src": "8154:12:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8154:12:20"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5305,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4956,
                            "src": "8179:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$4956_$",
                              "typeString": "type(enum Escrow.Status)"
                            }
                          },
                          "id": 5306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Holding",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8179:14:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$4956",
                            "typeString": "enum Escrow.Status"
                          }
                        }
                      ],
                      "id": 5307,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5304,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5035,
                        "src": "8167:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$4956_$",
                          "typeString": "modifier (enum Escrow.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8167:27:20"
                    }
                  ],
                  "name": "withdrawTokensByMultisig",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5301,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5300,
                        "name": "_receiverAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 5354,
                        "src": "8119:24:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5299,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8119:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8118:26:20"
                  },
                  "returnParameters": {
                    "id": 5308,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8195:0:20"
                  },
                  "scope": 5471,
                  "src": "8085:515:20",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5413,
                    "nodeType": "Block",
                    "src": "9027:374:20",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5368,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5366,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5356,
                                "src": "9039:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9049:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "9039:11:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416d6f756e74206e6565647320746f20626520626967676572207468616e207a65726f2e",
                              "id": 5369,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9052:38:20",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_96aa4f54f95d4bd7a69ac95c2c6307ff895411b17973b24dca85e672a893e2b2",
                                "typeString": "literal_string \"Amount needs to be bigger than zero.\""
                              },
                              "value": "Amount needs to be bigger than zero."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_96aa4f54f95d4bd7a69ac95c2c6307ff895411b17973b24dca85e672a893e2b2",
                                "typeString": "literal_string \"Amount needs to be bigger than zero.\""
                              }
                            ],
                            "id": 5365,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9031:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9031:60:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5371,
                        "nodeType": "ExpressionStatement",
                        "src": "9031:60:20"
                      },
                      {
                        "assignments": [
                          5373
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5373,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 5413,
                            "src": "9096:13:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 5372,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9096:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5383,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5376,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9129:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9129:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5379,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45074,
                                  "src": "9149:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Escrow_$5471",
                                    "typeString": "contract Escrow"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Escrow_$5471",
                                    "typeString": "contract Escrow"
                                  }
                                ],
                                "id": 5378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9141:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 5380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9141:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5381,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5356,
                              "src": "9156:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5374,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4944,
                              "src": "9112:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 5375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24682,
                            "src": "9112:16:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 5382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9112:52:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9096:68:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5385,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5373,
                              "src": "9176:8:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e",
                              "id": 5386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9186:36:20",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3acc04fd9d2c6eeea33919248d7d1bf195501ebecaf681e8f7b20db8579eb309",
                                "typeString": "literal_string \"Token transfer was not successful.\""
                              },
                              "value": "Token transfer was not successful."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3acc04fd9d2c6eeea33919248d7d1bf195501ebecaf681e8f7b20db8579eb309",
                                "typeString": "literal_string \"Token transfer was not successful.\""
                              }
                            ],
                            "id": 5384,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9168:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9168:55:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5388,
                        "nodeType": "ExpressionStatement",
                        "src": "9168:55:20"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5390,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9256:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9256:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5392,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5356,
                              "src": "9268:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5389,
                            "name": "TokenDepositByMultisig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5004,
                            "src": "9233:22:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9233:43:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5394,
                        "nodeType": "EmitStatement",
                        "src": "9228:48:20"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5398,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45074,
                                    "src": "9307:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Escrow_$5471",
                                      "typeString": "contract Escrow"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Escrow_$5471",
                                      "typeString": "contract Escrow"
                                    }
                                  ],
                                  "id": 5397,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9299:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 5399,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9299:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5395,
                                "name": "SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4944,
                                "src": "9285:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$24699",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 5396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24644,
                              "src": "9285:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 5400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9285:28:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5401,
                            "name": "totalDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4938,
                            "src": "9317:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9285:44:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5412,
                        "nodeType": "IfStatement",
                        "src": "9281:117:20",
                        "trueBody": {
                          "id": 5411,
                          "nodeType": "Block",
                          "src": "9331:67:20",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 5406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 5403,
                                  "name": "status",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4958,
                                  "src": "9336:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Status_$4956",
                                    "typeString": "enum Escrow.Status"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5404,
                                    "name": "Status",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4956,
                                    "src": "9345:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_Status_$4956_$",
                                      "typeString": "type(enum Escrow.Status)"
                                    }
                                  },
                                  "id": 5405,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9345:15:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Status_$4956",
                                    "typeString": "enum Escrow.Status"
                                  }
                                },
                                "src": "9336:24:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Status_$4956",
                                  "typeString": "enum Escrow.Status"
                                }
                              },
                              "id": 5407,
                              "nodeType": "ExpressionStatement",
                              "src": "9336:24:20"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5408,
                                  "name": "EscrowInWithdrawState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4964,
                                  "src": "9370:21:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 5409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9370:23:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5410,
                              "nodeType": "EmitStatement",
                              "src": "9365:28:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Deposit tokens to this contract by the Multisig.\n@param _amount the amount of tokens deposited.\n@dev The contract has to be approved by the multisig inorder for this function to work.\nOnce the token deposit is higher than the total deposits done, the contract state is changed to Withdraw.",
                  "id": 5414,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5359,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5358,
                        "name": "onlyMultisig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5022,
                        "src": "8986:12:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8986:12:20"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5361,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4956,
                            "src": "9011:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$4956_$",
                              "typeString": "type(enum Escrow.Status)"
                            }
                          },
                          "id": 5362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Holding",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9011:14:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$4956",
                            "typeString": "enum Escrow.Status"
                          }
                        }
                      ],
                      "id": 5363,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5360,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5035,
                        "src": "8999:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$4956_$",
                          "typeString": "modifier (enum Escrow.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8999:27:20"
                    }
                  ],
                  "name": "depositTokensByMultisig",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5356,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5414,
                        "src": "8960:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5355,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8960:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8959:17:20"
                  },
                  "returnParameters": {
                    "id": 5364,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9027:0:20"
                  },
                  "scope": 5471,
                  "src": "8927:474:20",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5457,
                    "nodeType": "Block",
                    "src": "9605:259:20",
                    "statements": [
                      {
                        "assignments": [
                          5424
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5424,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 5457,
                            "src": "9609:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5423,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9609:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5429,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5425,
                            "name": "userBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4950,
                            "src": "9626:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 5428,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5426,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "9639:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9639:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9626:24:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9609:41:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5430,
                              "name": "userBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4950,
                              "src": "9654:12:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 5433,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5431,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9667:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9667:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9654:24:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9681:1:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9654:28:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5436,
                        "nodeType": "ExpressionStatement",
                        "src": "9654:28:20"
                      },
                      {
                        "assignments": [
                          5438
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5438,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 5457,
                            "src": "9686:13:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 5437,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9686:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5445,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5441,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9715:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9715:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5443,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5424,
                              "src": "9727:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5439,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4944,
                              "src": "9702:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 5440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24671,
                            "src": "9702:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 5444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9702:32:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9686:48:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5447,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5438,
                              "src": "9746:8:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e",
                              "id": 5448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9756:60:20",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              },
                              "value": "Token transfer was not successful. Check receiver address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              }
                            ],
                            "id": 5446,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9738:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9738:79:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5450,
                        "nodeType": "ExpressionStatement",
                        "src": "9738:79:20"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5452,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9841:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9841:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5454,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5424,
                              "src": "9853:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5451,
                            "name": "TokenWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5010,
                            "src": "9827:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9827:33:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5456,
                        "nodeType": "EmitStatement",
                        "src": "9822:38:20"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraws token from the contract by User.\n@dev Only works after the contract state is in Withdraw.",
                  "id": 5458,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5417,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5416,
                        "name": "checkRelease",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5051,
                        "src": "9563:12:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9563:12:20"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5419,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4956,
                            "src": "9588:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$4956_$",
                              "typeString": "type(enum Escrow.Status)"
                            }
                          },
                          "id": 5420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9588:15:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$4956",
                            "typeString": "enum Escrow.Status"
                          }
                        }
                      ],
                      "id": 5421,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5418,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5035,
                        "src": "9576:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$4956_$",
                          "typeString": "modifier (enum Escrow.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9576:28:20"
                    }
                  ],
                  "name": "withdrawTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5415,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9553:2:20"
                  },
                  "returnParameters": {
                    "id": 5422,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9605:0:20"
                  },
                  "scope": 5471,
                  "src": "9530:334:20",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5469,
                    "nodeType": "Block",
                    "src": "10126:34:20",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5465,
                            "name": "userBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4950,
                            "src": "10137:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 5467,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5466,
                            "name": "_addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5460,
                            "src": "10150:5:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10137:19:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5464,
                        "id": 5468,
                        "nodeType": "Return",
                        "src": "10130:26:20"
                      }
                    ]
                  },
                  "documentation": "@notice Function to read the current token balance of a particular user.\n@return _addr The user address whose balance has to be checked.",
                  "id": 5470,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5460,
                        "name": "_addr",
                        "nodeType": "VariableDeclaration",
                        "scope": 5470,
                        "src": "10071:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5459,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10071:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10070:15:20"
                  },
                  "returnParameters": {
                    "id": 5464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5463,
                        "name": "balance",
                        "nodeType": "VariableDeclaration",
                        "scope": 5470,
                        "src": "10109:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5462,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10109:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10108:17:20"
                  },
                  "scope": 5471,
                  "src": "10047:113:20",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 5472,
              "src": "346:9816:20"
            }
          ],
          "src": "0:10163:20"
        },
        "id": 20
      },
      "contracts/escrow/EscrowReward.sol": {
        "ast": {
          "absolutePath": "contracts/escrow/EscrowReward.sol",
          "exportedSymbols": {
            "EscrowReward": [
              5703
            ]
          },
          "id": 5704,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5473,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:21"
            },
            {
              "absolutePath": "contracts/escrow/Escrow.sol",
              "file": "./Escrow.sol",
              "id": 5474,
              "nodeType": "ImportDirective",
              "scope": 5704,
              "sourceUnit": 5472,
              "src": "26:22:21",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/locked/ILockedSOV.sol",
              "file": "../locked/ILockedSOV.sol",
              "id": 5475,
              "nodeType": "ImportDirective",
              "scope": 5704,
              "sourceUnit": 25584,
              "src": "49:34:21",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 5476,
                    "name": "Escrow",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5471,
                    "src": "374:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Escrow_$5471",
                      "typeString": "contract Escrow"
                    }
                  },
                  "id": 5477,
                  "nodeType": "InheritanceSpecifier",
                  "src": "374:6:21"
                }
              ],
              "contractDependencies": [
                5471
              ],
              "contractKind": "contract",
              "documentation": " @title A reward distribution contract for Sovryn Ethereum Pool Escrow Contract.\n @author Franklin Richards - powerhousefrank@protonmail.com\n @notice Multisig can use this contract for depositing of Reward tokens based on the total token deposit.",
              "fullyImplemented": true,
              "id": 5703,
              "linearizedBaseContracts": [
                5703,
                5471
              ],
              "name": "EscrowReward",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 5480,
                  "libraryName": {
                    "contractScope": null,
                    "id": 5478,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "390:8:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "384:27:21",
                  "typeName": {
                    "id": 5479,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "403:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 5482,
                  "name": "totalRewardDeposit",
                  "nodeType": "VariableDeclaration",
                  "scope": 5703,
                  "src": "563:33:21",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5481,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "563:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 5484,
                  "name": "lockedSOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 5703,
                  "src": "638:27:21",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                    "typeString": "contract ILockedSOV"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5483,
                    "name": "ILockedSOV",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25583,
                    "src": "638:10:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                      "typeString": "contract ILockedSOV"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when the Locked SOV Contract address is updated.\n @param _initiator The address which initiated this event to be emitted.\n @param _lockedSOV The address of the Locked SOV Contract.",
                  "id": 5490,
                  "name": "LockedSOVUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5489,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5486,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5490,
                        "src": "917:26:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5485,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "917:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5488,
                        "indexed": true,
                        "name": "_lockedSOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 5490,
                        "src": "945:26:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5487,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "945:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "916:56:21"
                  },
                  "src": "894:79:21"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a new reward token deposit is done by Multisig.\n @param _initiator The address which initiated this event to be emitted.\n @param _amount The amount of token deposited.",
                  "id": 5496,
                  "name": "RewardDepositByMultisig",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5495,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5492,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5496,
                        "src": "1208:26:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5491,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1208:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5494,
                        "indexed": false,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5496,
                        "src": "1236:15:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5493,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1236:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1207:45:21"
                  },
                  "src": "1178:75:21"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a Reward token withdraw is done by User.\n @param _initiator The address which initiated this event to be emitted.\n @param _amount The amount of token withdrawed.",
                  "id": 5502,
                  "name": "RewardTokenWithdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5501,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5498,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5502,
                        "src": "1478:26:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5497,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1478:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5500,
                        "indexed": false,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5502,
                        "src": "1506:15:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5499,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1506:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1477:45:21"
                  },
                  "src": "1452:71:21"
                },
                {
                  "body": {
                    "id": 5534,
                    "nodeType": "Block",
                    "src": "2066:81:21",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5521,
                            "name": "_lockedSOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5504,
                            "src": "2074:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2096:1:21",
                                "subdenomination": null,
                                "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": 5522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2088:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 5524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2088:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "2074:24:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5533,
                        "nodeType": "IfStatement",
                        "src": "2070:74:21",
                        "trueBody": {
                          "id": 5532,
                          "nodeType": "Block",
                          "src": "2100:44:21",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 5530,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 5526,
                                  "name": "lockedSOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5484,
                                  "src": "2105:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                    "typeString": "contract ILockedSOV"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5528,
                                      "name": "_lockedSOV",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5504,
                                      "src": "2128:10:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5527,
                                    "name": "ILockedSOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25583,
                                    "src": "2117:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ILockedSOV_$25583_$",
                                      "typeString": "type(contract ILockedSOV)"
                                    }
                                  },
                                  "id": 5529,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2117:22:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                    "typeString": "contract ILockedSOV"
                                  }
                                },
                                "src": "2105:34:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                  "typeString": "contract ILockedSOV"
                                }
                              },
                              "id": 5531,
                              "nodeType": "ExpressionStatement",
                              "src": "2105:34:21"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Setup the required parameters.\n@param _lockedSOV The Locked SOV Contract address.\n@param _SOV The SOV token address.\n@param _multisig The owner of the tokens & contract.\n@param _releaseTime The token release time, zero if undecided.\n@param _depositLimit The amount of tokens we will be accepting.",
                  "id": 5535,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5515,
                          "name": "_SOV",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5506,
                          "src": "2020:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5516,
                          "name": "_multisig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5508,
                          "src": "2026:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5517,
                          "name": "_releaseTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5510,
                          "src": "2037:12:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5518,
                          "name": "_depositLimit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5512,
                          "src": "2051:13:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 5519,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5514,
                        "name": "Escrow",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5471,
                        "src": "2013:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Escrow_$5471_$",
                          "typeString": "type(contract Escrow)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2013:52:21"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5513,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5504,
                        "name": "_lockedSOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 5535,
                        "src": "1898:18:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5503,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1898:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5506,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 5535,
                        "src": "1920:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5505,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1920:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5508,
                        "name": "_multisig",
                        "nodeType": "VariableDeclaration",
                        "scope": 5535,
                        "src": "1936:17:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5507,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1936:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5510,
                        "name": "_releaseTime",
                        "nodeType": "VariableDeclaration",
                        "scope": 5535,
                        "src": "1957:20:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5509,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1957:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5512,
                        "name": "_depositLimit",
                        "nodeType": "VariableDeclaration",
                        "scope": 5535,
                        "src": "1981:21:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5511,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1981:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1894:111:21"
                  },
                  "returnParameters": {
                    "id": 5520,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2066:0:21"
                  },
                  "scope": 5703,
                  "src": "1883:264:21",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5563,
                    "nodeType": "Block",
                    "src": "2351:163:21",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5547,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5543,
                                "name": "_lockedSOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5537,
                                "src": "2363:10:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5545,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2385:1:21",
                                    "subdenomination": null,
                                    "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": 5544,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2377:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 5546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2377:10:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2363:24:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c69642052657761726420546f6b656e20416464726573732e",
                              "id": 5548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2389:31:21",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a346b6883fa1e84e37e896a6566393a7e37f3f4fcda61d4236c31a2078a4d253",
                                "typeString": "literal_string \"Invalid Reward Token Address.\""
                              },
                              "value": "Invalid Reward Token Address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a346b6883fa1e84e37e896a6566393a7e37f3f4fcda61d4236c31a2078a4d253",
                                "typeString": "literal_string \"Invalid Reward Token Address.\""
                              }
                            ],
                            "id": 5542,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2355:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2355:66:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5550,
                        "nodeType": "ExpressionStatement",
                        "src": "2355:66:21"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5551,
                            "name": "lockedSOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5484,
                            "src": "2426:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                              "typeString": "contract ILockedSOV"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5553,
                                "name": "_lockedSOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5537,
                                "src": "2449:10:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5552,
                              "name": "ILockedSOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25583,
                              "src": "2438:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ILockedSOV_$25583_$",
                                "typeString": "type(contract ILockedSOV)"
                              }
                            },
                            "id": 5554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2438:22:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                              "typeString": "contract ILockedSOV"
                            }
                          },
                          "src": "2426:34:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                            "typeString": "contract ILockedSOV"
                          }
                        },
                        "id": 5556,
                        "nodeType": "ExpressionStatement",
                        "src": "2426:34:21"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5558,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "2487:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2487:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5560,
                              "name": "_lockedSOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5537,
                              "src": "2499:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5557,
                            "name": "LockedSOVUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5490,
                            "src": "2470:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 5561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2470:40:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5562,
                        "nodeType": "EmitStatement",
                        "src": "2465:45:21"
                      }
                    ]
                  },
                  "documentation": "@notice Set the Locked SOV Contract Address if not already done.\n@param _lockedSOV The Locked SOV Contract address.",
                  "id": 5564,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5540,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5539,
                        "name": "onlyMultisig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5022,
                        "src": "2338:12:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2338:12:21"
                    }
                  ],
                  "name": "updateLockedSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5538,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5537,
                        "name": "_lockedSOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 5564,
                        "src": "2309:18:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5536,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2309:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2308:20:21"
                  },
                  "returnParameters": {
                    "id": 5541,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2351:0:21"
                  },
                  "scope": 5703,
                  "src": "2284:230:21",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5631,
                    "nodeType": "Block",
                    "src": "2803:543:21",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_Status_$4956",
                                "typeString": "enum Escrow.Status"
                              },
                              "id": 5575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5572,
                                "name": "status",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4958,
                                "src": "2815:6:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Status_$4956",
                                  "typeString": "enum Escrow.Status"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5573,
                                  "name": "Status",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4956,
                                  "src": "2825:6:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Status_$4956_$",
                                    "typeString": "type(enum Escrow.Status)"
                                  }
                                },
                                "id": 5574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Withdraw",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2825:15:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Status_$4956",
                                  "typeString": "enum Escrow.Status"
                                }
                              },
                              "src": "2815:25:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "52657761726420546f6b656e206465706f736974206973206f6e6c7920616c6c6f776564206265666f72652055736572205769746864726177207374617274732e",
                              "id": 5576,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2842:67:21",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fe619a68edeebdc9ef7310594d24e09812205bfc510458a6e18a306a4e408aa1",
                                "typeString": "literal_string \"Reward Token deposit is only allowed before User Withdraw starts.\""
                              },
                              "value": "Reward Token deposit is only allowed before User Withdraw starts."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fe619a68edeebdc9ef7310594d24e09812205bfc510458a6e18a306a4e408aa1",
                                "typeString": "literal_string \"Reward Token deposit is only allowed before User Withdraw starts.\""
                              }
                            ],
                            "id": 5571,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2807:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2807:103:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5578,
                        "nodeType": "ExpressionStatement",
                        "src": "2807:103:21"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5580,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5566,
                                "src": "2922:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2932:1:21",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2922:11:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416d6f756e74206e6565647320746f20626520626967676572207468616e207a65726f2e",
                              "id": 5583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2935:38:21",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_96aa4f54f95d4bd7a69ac95c2c6307ff895411b17973b24dca85e672a893e2b2",
                                "typeString": "literal_string \"Amount needs to be bigger than zero.\""
                              },
                              "value": "Amount needs to be bigger than zero."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_96aa4f54f95d4bd7a69ac95c2c6307ff895411b17973b24dca85e672a893e2b2",
                                "typeString": "literal_string \"Amount needs to be bigger than zero.\""
                              }
                            ],
                            "id": 5579,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2914:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2914:60:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5585,
                        "nodeType": "ExpressionStatement",
                        "src": "2914:60:21"
                      },
                      {
                        "assignments": [
                          5587
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5587,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 5631,
                            "src": "2979:13:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 5586,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2979:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5597,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5590,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "3012:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3012:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5593,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45078,
                                  "src": "3032:4:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EscrowReward_$5703",
                                    "typeString": "contract EscrowReward"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EscrowReward_$5703",
                                    "typeString": "contract EscrowReward"
                                  }
                                ],
                                "id": 5592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3024:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 5594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3024:13:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5595,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5566,
                              "src": "3039:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5588,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4944,
                              "src": "2995:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 5589,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24682,
                            "src": "2995:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 5596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2995:52:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2979:68:21"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5599,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5587,
                              "src": "3059:8:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e",
                              "id": 5600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3069:36:21",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3acc04fd9d2c6eeea33919248d7d1bf195501ebecaf681e8f7b20db8579eb309",
                                "typeString": "literal_string \"Token transfer was not successful.\""
                              },
                              "value": "Token transfer was not successful."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3acc04fd9d2c6eeea33919248d7d1bf195501ebecaf681e8f7b20db8579eb309",
                                "typeString": "literal_string \"Token transfer was not successful.\""
                              }
                            ],
                            "id": 5598,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3051:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3051:55:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5602,
                        "nodeType": "ExpressionStatement",
                        "src": "3051:55:21"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5603,
                            "name": "totalRewardDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5482,
                            "src": "3111:18:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5606,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5566,
                                "src": "3155:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5604,
                                "name": "totalRewardDeposit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5482,
                                "src": "3132:18:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5605,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "3132:22:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3132:31:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3111:52:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5609,
                        "nodeType": "ExpressionStatement",
                        "src": "3111:52:21"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5610,
                            "name": "txStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5587,
                            "src": "3167:8:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5614,
                                    "name": "lockedSOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5484,
                                    "src": "3198:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                      "typeString": "contract ILockedSOV"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                      "typeString": "contract ILockedSOV"
                                    }
                                  ],
                                  "id": 5613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3190:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 5615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3190:18:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 5616,
                                "name": "totalRewardDeposit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5482,
                                "src": "3210:18:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5611,
                                "name": "SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4944,
                                "src": "3178:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$24699",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 5612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "approve",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24662,
                              "src": "3178:11:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 5617,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3178:51:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3167:62:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5619,
                        "nodeType": "ExpressionStatement",
                        "src": "3167:62:21"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5621,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5587,
                              "src": "3241:8:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e20417070726f76616c20776173206e6f74207375636365737366756c2e",
                              "id": 5622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3251:36:21",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8ec1a14dc1e130644fa0b3db996b117e4370676b61c1fab46d56300915b1786e",
                                "typeString": "literal_string \"Token Approval was not successful.\""
                              },
                              "value": "Token Approval was not successful."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8ec1a14dc1e130644fa0b3db996b117e4370676b61c1fab46d56300915b1786e",
                                "typeString": "literal_string \"Token Approval was not successful.\""
                              }
                            ],
                            "id": 5620,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3233:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5623,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3233:55:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5624,
                        "nodeType": "ExpressionStatement",
                        "src": "3233:55:21"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5626,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "3322:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3322:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5628,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5566,
                              "src": "3334:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5625,
                            "name": "RewardDepositByMultisig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5496,
                            "src": "3298:23:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3298:44:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5630,
                        "nodeType": "EmitStatement",
                        "src": "3293:49:21"
                      }
                    ]
                  },
                  "documentation": "@notice Deposit tokens to this contract by the Multisig.\n@param _amount the amount of tokens deposited.\n@dev The contract has to be approved by the multisig inorder for this function to work.",
                  "id": 5632,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5569,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5568,
                        "name": "onlyMultisig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5022,
                        "src": "2790:12:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2790:12:21"
                    }
                  ],
                  "name": "depositRewardByMultisig",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5567,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5566,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5632,
                        "src": "2764:15:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5565,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2764:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2763:17:21"
                  },
                  "returnParameters": {
                    "id": 5570,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2803:0:21"
                  },
                  "scope": 5703,
                  "src": "2731:615:21",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5671,
                    "nodeType": "Block",
                    "src": "3629:291:21",
                    "statements": [
                      {
                        "assignments": [
                          5642
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5642,
                            "name": "reward",
                            "nodeType": "VariableDeclaration",
                            "scope": 5671,
                            "src": "3719:14:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5641,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3719:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5653,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5651,
                              "name": "totalDeposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4938,
                              "src": "3789:12:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5648,
                                  "name": "totalRewardDeposit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5482,
                                  "src": "3765:18:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5643,
                                    "name": "userBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4950,
                                    "src": "3736:12:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 5646,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5644,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "3749:3:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5645,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3749:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3736:24:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 5647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "3736:28:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 5649,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3736:48:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "3736:52:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 5652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3736:66:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3719:83:21"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5654,
                            "name": "withdrawTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5458,
                            "src": "3806:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 5655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3806:16:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5656,
                        "nodeType": "ExpressionStatement",
                        "src": "3806:16:21"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5660,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "3848:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5661,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3848:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5662,
                              "name": "reward",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5642,
                              "src": "3860:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5657,
                              "name": "lockedSOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5484,
                              "src": "3827:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                "typeString": "contract ILockedSOV"
                              }
                            },
                            "id": 5659,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "depositSOV",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25577,
                            "src": "3827:20:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 5663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3827:40:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5664,
                        "nodeType": "ExpressionStatement",
                        "src": "3827:40:21"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5666,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "3897:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3897:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5668,
                              "name": "reward",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5642,
                              "src": "3909:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5665,
                            "name": "RewardTokenWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5502,
                            "src": "3877:19:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3877:39:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5670,
                        "nodeType": "EmitStatement",
                        "src": "3872:44:21"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraws token and reward from the contract by User. Reward is gone to lockedSOV contract for future vesting.\n@dev Only works after the contract state is in Withdraw.",
                  "id": 5672,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5635,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5634,
                        "name": "checkRelease",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5051,
                        "src": "3587:12:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3587:12:21"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5637,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4956,
                            "src": "3612:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$4956_$",
                              "typeString": "type(enum Escrow.Status)"
                            }
                          },
                          "id": 5638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3612:15:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$4956",
                            "typeString": "enum Escrow.Status"
                          }
                        }
                      ],
                      "id": 5639,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5636,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5035,
                        "src": "3600:11:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$4956_$",
                          "typeString": "modifier (enum Escrow.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3600:28:21"
                    }
                  ],
                  "name": "withdrawTokensAndReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5633,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3575:2:21"
                  },
                  "returnParameters": {
                    "id": 5640,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3629:0:21"
                  },
                  "scope": 5703,
                  "src": "3543:377:21",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5701,
                    "nodeType": "Block",
                    "src": "4219:151:21",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5683,
                                "name": "totalRewardDeposit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5482,
                                "src": "4251:18:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 5679,
                                  "name": "userBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4950,
                                  "src": "4227:12:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 5681,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 5680,
                                  "name": "_addr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5674,
                                  "src": "4240:5:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4227:19:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5682,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42153,
                              "src": "4227:23:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5684,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4227:43:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5685,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4274:1:21",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4227:48:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5690,
                        "nodeType": "IfStatement",
                        "src": "4223:72:21",
                        "trueBody": {
                          "id": 5689,
                          "nodeType": "Block",
                          "src": "4277:18:21",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5687,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4289:1:21",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 5678,
                              "id": 5688,
                              "nodeType": "Return",
                              "src": "4282:8:21"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5698,
                              "name": "totalDeposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4938,
                              "src": "4353:12:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5695,
                                  "name": "totalRewardDeposit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5482,
                                  "src": "4329:18:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5691,
                                    "name": "userBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4950,
                                    "src": "4305:12:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 5693,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5692,
                                    "name": "_addr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5674,
                                    "src": "4318:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4305:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 5694,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "4305:23:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 5696,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4305:43:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "4305:47:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 5699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4305:61:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5678,
                        "id": 5700,
                        "nodeType": "Return",
                        "src": "4298:68:21"
                      }
                    ]
                  },
                  "documentation": "@notice Function to read the reward a particular user can get.\n@param _addr The address of the user whose reward is to be read.\n@return reward The reward received by the user.",
                  "id": 5702,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5675,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5674,
                        "name": "_addr",
                        "nodeType": "VariableDeclaration",
                        "scope": 5702,
                        "src": "4165:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5673,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4165:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4164:15:21"
                  },
                  "returnParameters": {
                    "id": 5678,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5677,
                        "name": "reward",
                        "nodeType": "VariableDeclaration",
                        "scope": 5702,
                        "src": "4203:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5676,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4203:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4202:16:21"
                  },
                  "scope": 5703,
                  "src": "4146:224:21",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 5704,
              "src": "349:4023:21"
            }
          ],
          "src": "0:4373:21"
        },
        "id": 21
      },
      "contracts/events/AffiliatesEvents.sol": {
        "ast": {
          "absolutePath": "contracts/events/AffiliatesEvents.sol",
          "exportedSymbols": {
            "AffiliatesEvents": [
              5773
            ]
          },
          "id": 5774,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5705,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:22"
            },
            {
              "absolutePath": "contracts/events/ModulesCommonEvents.sol",
              "file": "./ModulesCommonEvents.sol",
              "id": 5706,
              "nodeType": "ImportDirective",
              "scope": 5774,
              "sourceUnit": 6056,
              "src": "143:35:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 5707,
                    "name": "ModulesCommonEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6055,
                    "src": "209:19:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModulesCommonEvents_$6055",
                      "typeString": "contract ModulesCommonEvents"
                    }
                  },
                  "id": 5708,
                  "nodeType": "InheritanceSpecifier",
                  "src": "209:19:22"
                }
              ],
              "contractDependencies": [
                6055
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 5773,
              "linearizedBaseContracts": [
                5773,
                6055
              ],
              "name": "AffiliatesEvents",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5714,
                  "name": "SetAffiliatesReferrer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5713,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5710,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 5714,
                        "src": "260:20:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5709,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "260:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5712,
                        "indexed": true,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 5714,
                        "src": "282:24:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5711,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "282:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "259:48:22"
                  },
                  "src": "232:76:22"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5724,
                  "name": "SetAffiliatesReferrerFail",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5723,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5716,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 5724,
                        "src": "343:20:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5715,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "343:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5718,
                        "indexed": true,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 5724,
                        "src": "365:24:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5717,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "365:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5720,
                        "indexed": false,
                        "name": "alreadySet",
                        "nodeType": "VariableDeclaration",
                        "scope": 5724,
                        "src": "391:15:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5719,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "391:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5722,
                        "indexed": false,
                        "name": "userNotFirstTrade",
                        "nodeType": "VariableDeclaration",
                        "scope": 5724,
                        "src": "408:22:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5721,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "408:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "342:89:22"
                  },
                  "src": "311:121:22"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5728,
                  "name": "SetUserNotFirstTradeFlag",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5727,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5726,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 5728,
                        "src": "466:20:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5725,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "466:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "465:22:22"
                  },
                  "src": "435:53:22"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5746,
                  "name": "PayTradingFeeToAffiliate",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5745,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5730,
                        "indexed": true,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 5746,
                        "src": "525:24:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5729,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "525:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5732,
                        "indexed": false,
                        "name": "trader",
                        "nodeType": "VariableDeclaration",
                        "scope": 5746,
                        "src": "553:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5731,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "553:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5734,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 5746,
                        "src": "571:21:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5733,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "571:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5736,
                        "indexed": true,
                        "name": "isHeld",
                        "nodeType": "VariableDeclaration",
                        "scope": 5746,
                        "src": "596:19:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5735,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "596:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5738,
                        "indexed": false,
                        "name": "tradingFeeTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5746,
                        "src": "619:29:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5737,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "619:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5740,
                        "indexed": false,
                        "name": "tokenBonusAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5746,
                        "src": "652:24:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5739,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "652:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5742,
                        "indexed": false,
                        "name": "sovBonusAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5746,
                        "src": "680:22:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5741,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "680:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5744,
                        "indexed": false,
                        "name": "sovBonusAmountPaid",
                        "nodeType": "VariableDeclaration",
                        "scope": 5746,
                        "src": "706:26:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5743,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "706:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "521:214:22"
                  },
                  "src": "491:245:22"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5762,
                  "name": "PayTradingFeeToAffiliateFail",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5748,
                        "indexed": true,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 5762,
                        "src": "777:24:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5747,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "777:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5750,
                        "indexed": false,
                        "name": "trader",
                        "nodeType": "VariableDeclaration",
                        "scope": 5762,
                        "src": "805:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5749,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "805:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5752,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 5762,
                        "src": "823:21:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5751,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "823:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5754,
                        "indexed": false,
                        "name": "tradingFeeTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5762,
                        "src": "848:29:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5753,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "848:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5756,
                        "indexed": false,
                        "name": "tokenBonusAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5762,
                        "src": "881:24:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5755,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "881:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5758,
                        "indexed": false,
                        "name": "sovBonusAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5762,
                        "src": "909:22:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5757,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "909:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5760,
                        "indexed": false,
                        "name": "sovBonusAmountTryingToPaid",
                        "nodeType": "VariableDeclaration",
                        "scope": 5762,
                        "src": "935:34:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5759,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "935:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "773:199:22"
                  },
                  "src": "739:234:22"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5772,
                  "name": "WithdrawAffiliatesReferrerTokenFees",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5771,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5764,
                        "indexed": true,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 5772,
                        "src": "1021:24:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5763,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1021:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5766,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 5772,
                        "src": "1049:24:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5765,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1049:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5768,
                        "indexed": true,
                        "name": "tokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 5772,
                        "src": "1077:28:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5767,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1077:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5770,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5772,
                        "src": "1109:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5769,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1109:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1017:109:22"
                  },
                  "src": "976:151:22"
                }
              ],
              "scope": 5774,
              "src": "180:949:22"
            }
          ],
          "src": "118:1012:22"
        },
        "id": 22
      },
      "contracts/events/FeesEvents.sol": {
        "ast": {
          "absolutePath": "contracts/events/FeesEvents.sol",
          "exportedSymbols": {
            "FeesEvents": [
              5832
            ]
          },
          "id": 5833,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5775,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:23"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title The Fees Events contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the events for fee payments.\n",
              "fullyImplemented": true,
              "id": 5832,
              "linearizedBaseContracts": [
                5832
              ],
              "name": "FeesEvents",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5783,
                  "name": "PayLendingFee",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5782,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5777,
                        "indexed": true,
                        "name": "payer",
                        "nodeType": "VariableDeclaration",
                        "scope": 5783,
                        "src": "448:21:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5776,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "448:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5779,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 5783,
                        "src": "471:21:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5778,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "471:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5781,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5783,
                        "src": "494:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5780,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "494:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "447:62:23"
                  },
                  "src": "428:82:23"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5793,
                  "name": "PayTradingFee",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5792,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5785,
                        "indexed": true,
                        "name": "payer",
                        "nodeType": "VariableDeclaration",
                        "scope": 5793,
                        "src": "533:21:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5784,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "533:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5787,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 5793,
                        "src": "556:21:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5786,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "556:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5789,
                        "indexed": true,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5793,
                        "src": "579:22:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5788,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "579:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5791,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5793,
                        "src": "603:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5790,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "603:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "532:86:23"
                  },
                  "src": "513:106:23"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5803,
                  "name": "PayBorrowingFee",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5802,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5795,
                        "indexed": true,
                        "name": "payer",
                        "nodeType": "VariableDeclaration",
                        "scope": 5803,
                        "src": "644:21:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5794,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "644:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5797,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 5803,
                        "src": "667:21:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5796,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "667:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5799,
                        "indexed": true,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5803,
                        "src": "690:22:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5798,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "690:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5801,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5803,
                        "src": "714:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5800,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "714:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "643:86:23"
                  },
                  "src": "622:108:23"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5817,
                  "name": "EarnReward",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5816,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5805,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 5817,
                        "src": "753:24:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5804,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "753:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5807,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 5817,
                        "src": "781:21:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5806,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "781:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5809,
                        "indexed": true,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5817,
                        "src": "806:22:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5808,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "806:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5811,
                        "indexed": false,
                        "name": "feeRebatePercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 5817,
                        "src": "832:24:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5810,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "832:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5813,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5817,
                        "src": "860:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5812,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "860:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5815,
                        "indexed": false,
                        "name": "basisPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 5817,
                        "src": "878:18:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5814,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "878:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "749:150:23"
                  },
                  "src": "733:167:23"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5831,
                  "name": "EarnRewardFail",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5830,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5819,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 5831,
                        "src": "927:24:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5818,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "927:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5821,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 5831,
                        "src": "955:21:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5820,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "955:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5823,
                        "indexed": true,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5831,
                        "src": "980:22:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5822,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "980:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5825,
                        "indexed": false,
                        "name": "feeRebatePercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 5831,
                        "src": "1006:24:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5824,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1006:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5827,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5831,
                        "src": "1034:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5826,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1034:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5829,
                        "indexed": false,
                        "name": "basisPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 5831,
                        "src": "1052:18:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5828,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1052:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "923:150:23"
                  },
                  "src": "903:171:23"
                }
              ],
              "scope": 5833,
              "src": "405:671:23"
            }
          ],
          "src": "118:959:23"
        },
        "id": 23
      },
      "contracts/events/LoanClosingsEvents.sol": {
        "ast": {
          "absolutePath": "contracts/events/LoanClosingsEvents.sol",
          "exportedSymbols": {
            "LoanClosingsEvents": [
              5914
            ]
          },
          "id": 5915,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5834,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:24"
            },
            {
              "absolutePath": "contracts/events/ModulesCommonEvents.sol",
              "file": "./ModulesCommonEvents.sol",
              "id": 5835,
              "nodeType": "ImportDirective",
              "scope": 5915,
              "sourceUnit": 6056,
              "src": "143:35:24",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 5836,
                    "name": "ModulesCommonEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6055,
                    "src": "492:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModulesCommonEvents_$6055",
                      "typeString": "contract ModulesCommonEvents"
                    }
                  },
                  "id": 5837,
                  "nodeType": "InheritanceSpecifier",
                  "src": "492:19:24"
                }
              ],
              "contractDependencies": [
                6055
              ],
              "contractKind": "contract",
              "documentation": "@title The Loan Closing Events contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the events for loan closing operations.\n",
              "fullyImplemented": true,
              "id": 5914,
              "linearizedBaseContracts": [
                5914,
                6055
              ],
              "name": "LoanClosingsEvents",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": "topic0: 0x6349c1a02ec126f7f4fc6e6837e1859006e90e9901635c442d29271e77b96fb6",
                  "id": 5859,
                  "name": "CloseWithDeposit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5858,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5839,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 5859,
                        "src": "621:20:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5838,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "621:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5841,
                        "indexed": true,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 5859,
                        "src": "645:22:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5840,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "645:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5843,
                        "indexed": true,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5859,
                        "src": "671:22:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5842,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "671:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5845,
                        "indexed": false,
                        "name": "closer",
                        "nodeType": "VariableDeclaration",
                        "scope": 5859,
                        "src": "697:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5844,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "697:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5847,
                        "indexed": false,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 5859,
                        "src": "715:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5846,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "715:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5849,
                        "indexed": false,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 5859,
                        "src": "736:23:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5848,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "736:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5851,
                        "indexed": false,
                        "name": "repayAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5859,
                        "src": "763:19:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5850,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "763:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5853,
                        "indexed": false,
                        "name": "collateralWithdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5859,
                        "src": "786:32:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5852,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "786:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5855,
                        "indexed": false,
                        "name": "collateralToLoanRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 5859,
                        "src": "822:28:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5854,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "822:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5857,
                        "indexed": false,
                        "name": "currentMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 5859,
                        "src": "854:21:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5856,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "854:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "617:261:24"
                  },
                  "src": "595:284:24"
                },
                {
                  "anonymous": false,
                  "documentation": "topic0: 0x2ed7b29b4ca95cf3bb9a44f703872a66e6aa5e8f07b675fa9a5c124a1e5d7352",
                  "id": 5881,
                  "name": "CloseWithSwap",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5880,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5861,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 5881,
                        "src": "985:20:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5860,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "985:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5863,
                        "indexed": true,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 5881,
                        "src": "1009:22:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5862,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1009:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5865,
                        "indexed": true,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5881,
                        "src": "1035:22:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5864,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1035:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5867,
                        "indexed": false,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 5881,
                        "src": "1061:23:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5866,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1061:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5869,
                        "indexed": false,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 5881,
                        "src": "1088:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5868,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1088:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5871,
                        "indexed": false,
                        "name": "closer",
                        "nodeType": "VariableDeclaration",
                        "scope": 5881,
                        "src": "1109:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5870,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1109:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5873,
                        "indexed": false,
                        "name": "positionCloseSize",
                        "nodeType": "VariableDeclaration",
                        "scope": 5881,
                        "src": "1127:25:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5872,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1127:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5875,
                        "indexed": false,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5881,
                        "src": "1156:23:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5874,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1156:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5877,
                        "indexed": false,
                        "name": "exitPrice",
                        "nodeType": "VariableDeclaration",
                        "scope": 5881,
                        "src": "1183:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5876,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1183:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5879,
                        "indexed": false,
                        "name": "currentLeverage",
                        "nodeType": "VariableDeclaration",
                        "scope": 5881,
                        "src": "1261:23:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1261:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "981:306:24"
                  },
                  "src": "962:326:24"
                },
                {
                  "anonymous": false,
                  "documentation": "topic0: 0x46fa03303782eb2f686515f6c0100f9a62dabe587b0d3f5a4fc0c822d6e532d3",
                  "id": 5903,
                  "name": "Liquidate",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5902,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5883,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 5903,
                        "src": "1390:20:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5882,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1390:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5885,
                        "indexed": true,
                        "name": "liquidator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5903,
                        "src": "1414:26:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5884,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1414:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5887,
                        "indexed": true,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5903,
                        "src": "1444:22:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5886,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1444:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5889,
                        "indexed": false,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 5903,
                        "src": "1470:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5888,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1470:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5891,
                        "indexed": false,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 5903,
                        "src": "1488:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5890,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1488:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5893,
                        "indexed": false,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 5903,
                        "src": "1509:23:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5892,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1509:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5895,
                        "indexed": false,
                        "name": "repayAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5903,
                        "src": "1536:19:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5894,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1536:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5897,
                        "indexed": false,
                        "name": "collateralWithdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5903,
                        "src": "1559:32:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5896,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1559:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5899,
                        "indexed": false,
                        "name": "collateralToLoanRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 5903,
                        "src": "1595:28:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5898,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1595:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5901,
                        "indexed": false,
                        "name": "currentMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 5903,
                        "src": "1627:21:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5900,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1627:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1386:265:24"
                  },
                  "src": "1371:281:24"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5913,
                  "name": "swapExcess",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5912,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5905,
                        "indexed": false,
                        "name": "shouldRefund",
                        "nodeType": "VariableDeclaration",
                        "scope": 5913,
                        "src": "1672:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5904,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1672:4:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5907,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5913,
                        "src": "1691:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5906,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1691:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5909,
                        "indexed": false,
                        "name": "amountInRbtc",
                        "nodeType": "VariableDeclaration",
                        "scope": 5913,
                        "src": "1707:20:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5908,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1707:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5911,
                        "indexed": false,
                        "name": "threshold",
                        "nodeType": "VariableDeclaration",
                        "scope": 5913,
                        "src": "1729:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5910,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1729:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1671:76:24"
                  },
                  "src": "1655:93:24"
                }
              ],
              "scope": 5915,
              "src": "461:1289:24"
            }
          ],
          "src": "118:1633:24"
        },
        "id": 24
      },
      "contracts/events/LoanMaintenanceEvents.sol": {
        "ast": {
          "absolutePath": "contracts/events/LoanMaintenanceEvents.sol",
          "exportedSymbols": {
            "LoanMaintenanceEvents": [
              5928
            ]
          },
          "id": 5929,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5916,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:25"
            },
            {
              "absolutePath": "contracts/events/ModulesCommonEvents.sol",
              "file": "./ModulesCommonEvents.sol",
              "id": 5917,
              "nodeType": "ImportDirective",
              "scope": 5929,
              "sourceUnit": 6056,
              "src": "25:35:25",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 5918,
                    "name": "ModulesCommonEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6055,
                    "src": "385:19:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModulesCommonEvents_$6055",
                      "typeString": "contract ModulesCommonEvents"
                    }
                  },
                  "id": 5919,
                  "nodeType": "InheritanceSpecifier",
                  "src": "385:19:25"
                }
              ],
              "contractDependencies": [
                6055
              ],
              "contractKind": "contract",
              "documentation": "@title The Loan Maintenance Events contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the events for loan maintenance operations.\n",
              "fullyImplemented": true,
              "id": 5928,
              "linearizedBaseContracts": [
                5928,
                6055
              ],
              "name": "LoanMaintenanceEvents",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5927,
                  "name": "DepositCollateral",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5926,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5921,
                        "indexed": false,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5927,
                        "src": "432:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5920,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "432:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5923,
                        "indexed": false,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5927,
                        "src": "448:21:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5922,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "448:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5925,
                        "indexed": false,
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "scope": 5927,
                        "src": "471:12:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5924,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "471:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "431:53:25"
                  },
                  "src": "408:77:25"
                }
              ],
              "scope": 5929,
              "src": "351:136:25"
            }
          ],
          "src": "0:488:25"
        },
        "id": 25
      },
      "contracts/events/LoanOpeningsEvents.sol": {
        "ast": {
          "absolutePath": "contracts/events/LoanOpeningsEvents.sol",
          "exportedSymbols": {
            "LoanOpeningsEvents": [
              5994
            ]
          },
          "id": 5995,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5930,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:26"
            },
            {
              "absolutePath": "contracts/events/ModulesCommonEvents.sol",
              "file": "./ModulesCommonEvents.sol",
              "id": 5931,
              "nodeType": "ImportDirective",
              "scope": 5995,
              "sourceUnit": 6056,
              "src": "143:35:26",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 5932,
                    "name": "ModulesCommonEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6055,
                    "src": "494:19:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModulesCommonEvents_$6055",
                      "typeString": "contract ModulesCommonEvents"
                    }
                  },
                  "id": 5933,
                  "nodeType": "InheritanceSpecifier",
                  "src": "494:19:26"
                }
              ],
              "contractDependencies": [
                6055
              ],
              "contractKind": "contract",
              "documentation": "@title The Loan Openings Events contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the events for loan openings operations.\n",
              "fullyImplemented": true,
              "id": 5994,
              "linearizedBaseContracts": [
                5994,
                6055
              ],
              "name": "LoanOpeningsEvents",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": "topic0: 0x7bd8cbb7ba34b33004f3deda0fd36c92fc0360acbd97843360037b467a538f90",
                  "id": 5957,
                  "name": "Borrow",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5956,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5935,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 5957,
                        "src": "613:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5934,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "613:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5937,
                        "indexed": true,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 5957,
                        "src": "637:22:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5936,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "637:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5939,
                        "indexed": true,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5957,
                        "src": "663:22:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5938,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "663:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5941,
                        "indexed": false,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 5957,
                        "src": "689:17:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5940,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "689:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5943,
                        "indexed": false,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 5957,
                        "src": "710:23:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5942,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "710:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5945,
                        "indexed": false,
                        "name": "newPrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 5957,
                        "src": "737:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5944,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "737:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5947,
                        "indexed": false,
                        "name": "newCollateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 5957,
                        "src": "761:21:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5946,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "761:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5949,
                        "indexed": false,
                        "name": "interestRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 5957,
                        "src": "786:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5948,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "786:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5951,
                        "indexed": false,
                        "name": "interestDuration",
                        "nodeType": "VariableDeclaration",
                        "scope": 5957,
                        "src": "810:24:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5950,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "810:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5953,
                        "indexed": false,
                        "name": "collateralToLoanRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 5957,
                        "src": "838:28:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5952,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "838:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5955,
                        "indexed": false,
                        "name": "currentMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 5957,
                        "src": "870:21:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5954,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "870:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "609:285:26"
                  },
                  "src": "597:298:26"
                },
                {
                  "anonymous": false,
                  "documentation": "topic0: 0xf640c1cfe1a912a0b0152b5a542e5c2403142eed75b06cde526cee54b1580e5c",
                  "id": 5983,
                  "name": "Trade",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5982,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5959,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 5983,
                        "src": "993:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5958,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "993:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5961,
                        "indexed": true,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 5983,
                        "src": "1017:22:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5960,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1017:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5963,
                        "indexed": true,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5983,
                        "src": "1043:22:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5962,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1043:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5965,
                        "indexed": false,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 5983,
                        "src": "1069:23:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5964,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1069:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5967,
                        "indexed": false,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 5983,
                        "src": "1096:17:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5966,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1096:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5969,
                        "indexed": false,
                        "name": "positionSize",
                        "nodeType": "VariableDeclaration",
                        "scope": 5983,
                        "src": "1117:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5968,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1117:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5971,
                        "indexed": false,
                        "name": "borrowedAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5983,
                        "src": "1141:22:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5970,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1141:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5973,
                        "indexed": false,
                        "name": "interestRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 5983,
                        "src": "1167:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5972,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1167:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5975,
                        "indexed": false,
                        "name": "settlementDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 5983,
                        "src": "1191:22:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5974,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1191:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5977,
                        "indexed": false,
                        "name": "entryPrice",
                        "nodeType": "VariableDeclaration",
                        "scope": 5983,
                        "src": "1217:18:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5976,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1217:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5979,
                        "indexed": false,
                        "name": "entryLeverage",
                        "nodeType": "VariableDeclaration",
                        "scope": 5983,
                        "src": "1297:21:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5978,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1297:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5981,
                        "indexed": false,
                        "name": "currentLeverage",
                        "nodeType": "VariableDeclaration",
                        "scope": 5983,
                        "src": "1322:23:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5980,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1322:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "989:359:26"
                  },
                  "src": "978:371:26"
                },
                {
                  "anonymous": false,
                  "documentation": "topic0: 0x0eef4f90457a741c97d76fcf13fa231fefdcc7649bdb3cb49157c37111c98433",
                  "id": 5993,
                  "name": "DelegatedManagerSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5992,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5985,
                        "indexed": true,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5993,
                        "src": "1458:22:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5984,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1458:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5987,
                        "indexed": true,
                        "name": "delegator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5993,
                        "src": "1482:25:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5986,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1482:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5989,
                        "indexed": true,
                        "name": "delegated",
                        "nodeType": "VariableDeclaration",
                        "scope": 5993,
                        "src": "1509:25:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5988,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1509:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5991,
                        "indexed": false,
                        "name": "isActive",
                        "nodeType": "VariableDeclaration",
                        "scope": 5993,
                        "src": "1536:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5990,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1536:4:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1457:93:26"
                  },
                  "src": "1432:119:26"
                }
              ],
              "scope": 5995,
              "src": "463:1090:26"
            }
          ],
          "src": "118:1436:26"
        },
        "id": 26
      },
      "contracts/events/LoanSettingsEvents.sol": {
        "ast": {
          "absolutePath": "contracts/events/LoanSettingsEvents.sol",
          "exportedSymbols": {
            "LoanSettingsEvents": [
              6044
            ]
          },
          "id": 6045,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5996,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:27"
            },
            {
              "absolutePath": "contracts/events/ModulesCommonEvents.sol",
              "file": "./ModulesCommonEvents.sol",
              "id": 5997,
              "nodeType": "ImportDirective",
              "scope": 6045,
              "sourceUnit": 6056,
              "src": "143:35:27",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 5998,
                    "name": "ModulesCommonEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6055,
                    "src": "494:19:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModulesCommonEvents_$6055",
                      "typeString": "contract ModulesCommonEvents"
                    }
                  },
                  "id": 5999,
                  "nodeType": "InheritanceSpecifier",
                  "src": "494:19:27"
                }
              ],
              "contractDependencies": [
                6055
              ],
              "contractKind": "contract",
              "documentation": "@title The Loan Settings Events contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the events for loan settings operations.\n",
              "fullyImplemented": true,
              "id": 6044,
              "linearizedBaseContracts": [
                6044,
                6055
              ],
              "name": "LoanSettingsEvents",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6015,
                  "name": "LoanParamsSetup",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6014,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6001,
                        "indexed": true,
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6015,
                        "src": "542:18:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6000,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "542:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6003,
                        "indexed": false,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 6015,
                        "src": "564:13:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6002,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "564:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6005,
                        "indexed": true,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6015,
                        "src": "581:25:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6004,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "581:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6007,
                        "indexed": true,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6015,
                        "src": "610:31:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6006,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "610:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6009,
                        "indexed": false,
                        "name": "minInitialMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 6015,
                        "src": "645:24:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6008,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "645:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6011,
                        "indexed": false,
                        "name": "maintenanceMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 6015,
                        "src": "673:25:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6010,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "673:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6013,
                        "indexed": false,
                        "name": "maxLoanTerm",
                        "nodeType": "VariableDeclaration",
                        "scope": 6015,
                        "src": "702:19:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6012,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "702:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "538:186:27"
                  },
                  "src": "517:208:27"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6021,
                  "name": "LoanParamsIdSetup",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6020,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6017,
                        "indexed": true,
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6021,
                        "src": "751:18:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6016,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "751:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6019,
                        "indexed": true,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 6021,
                        "src": "771:21:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6018,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "771:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "750:43:27"
                  },
                  "src": "727:67:27"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6037,
                  "name": "LoanParamsDisabled",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6036,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6023,
                        "indexed": true,
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6037,
                        "src": "825:18:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6022,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "825:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6025,
                        "indexed": false,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 6037,
                        "src": "847:13:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6024,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "847:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6027,
                        "indexed": true,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6037,
                        "src": "864:25:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6026,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "864:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6029,
                        "indexed": true,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6037,
                        "src": "893:31:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6028,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "893:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6031,
                        "indexed": false,
                        "name": "minInitialMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 6037,
                        "src": "928:24:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6030,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "928:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6033,
                        "indexed": false,
                        "name": "maintenanceMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 6037,
                        "src": "956:25:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6032,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "956:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6035,
                        "indexed": false,
                        "name": "maxLoanTerm",
                        "nodeType": "VariableDeclaration",
                        "scope": 6037,
                        "src": "985:19:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6034,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "985:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "821:186:27"
                  },
                  "src": "797:211:27"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6043,
                  "name": "LoanParamsIdDisabled",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6042,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6039,
                        "indexed": true,
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6043,
                        "src": "1037:18:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6038,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1037:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6041,
                        "indexed": true,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 6043,
                        "src": "1057:21:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6040,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1057:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1036:43:27"
                  },
                  "src": "1010:70:27"
                }
              ],
              "scope": 6045,
              "src": "463:619:27"
            }
          ],
          "src": "118:965:27"
        },
        "id": 27
      },
      "contracts/events/ModulesCommonEvents.sol": {
        "ast": {
          "absolutePath": "contracts/events/ModulesCommonEvents.sol",
          "exportedSymbols": {
            "ModulesCommonEvents": [
              6055
            ]
          },
          "id": 6056,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6046,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:28"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title The common events for all modules\n@notice This contract contains the events which will be used by all modules*",
              "fullyImplemented": true,
              "id": 6055,
              "linearizedBaseContracts": [
                6055
              ],
              "name": "ModulesCommonEvents",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6054,
                  "name": "ProtocolModuleContractReplaced",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6053,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6048,
                        "indexed": true,
                        "name": "prevModuleContractAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 6054,
                        "src": "230:41:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6047,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "230:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6050,
                        "indexed": true,
                        "name": "newModuleContractAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 6054,
                        "src": "275:40:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6049,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "275:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6052,
                        "indexed": true,
                        "name": "module",
                        "nodeType": "VariableDeclaration",
                        "scope": 6054,
                        "src": "319:22:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6051,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "319:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "226:118:28"
                  },
                  "src": "190:155:28"
                }
              ],
              "scope": 6056,
              "src": "158:189:28"
            }
          ],
          "src": "0:348:28"
        },
        "id": 28
      },
      "contracts/events/ProtocolSettingsEvents.sol": {
        "ast": {
          "absolutePath": "contracts/events/ProtocolSettingsEvents.sol",
          "exportedSymbols": {
            "ProtocolSettingsEvents": [
              6309
            ]
          },
          "id": 6310,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6057,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:29"
            },
            {
              "absolutePath": "contracts/events/ModulesCommonEvents.sol",
              "file": "./ModulesCommonEvents.sol",
              "id": 6058,
              "nodeType": "ImportDirective",
              "scope": 6310,
              "sourceUnit": 6056,
              "src": "143:35:29",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 6059,
                    "name": "ModulesCommonEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6055,
                    "src": "506:19:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModulesCommonEvents_$6055",
                      "typeString": "contract ModulesCommonEvents"
                    }
                  },
                  "id": 6060,
                  "nodeType": "InheritanceSpecifier",
                  "src": "506:19:29"
                }
              ],
              "contractDependencies": [
                6055
              ],
              "contractKind": "contract",
              "documentation": "@title The Protocol Settings Events contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the events for protocol settings operations.\n",
              "fullyImplemented": true,
              "id": 6309,
              "linearizedBaseContracts": [
                6309,
                6055
              ],
              "name": "ProtocolSettingsEvents",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6068,
                  "name": "SetPriceFeedContract",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6067,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6062,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6068,
                        "src": "556:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6061,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "556:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6064,
                        "indexed": false,
                        "name": "oldValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6068,
                        "src": "580:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6063,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "580:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6066,
                        "indexed": false,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6068,
                        "src": "598:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6065,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "598:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "555:60:29"
                  },
                  "src": "529:87:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6076,
                  "name": "SetSwapsImplContract",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6075,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6070,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6076,
                        "src": "646:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6069,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "646:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6072,
                        "indexed": false,
                        "name": "oldValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6076,
                        "src": "670:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6071,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "670:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6074,
                        "indexed": false,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6076,
                        "src": "688:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6073,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "688:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "645:60:29"
                  },
                  "src": "619:87:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6084,
                  "name": "SetLoanPool",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6083,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6078,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6084,
                        "src": "727:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6077,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "727:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6080,
                        "indexed": true,
                        "name": "loanPool",
                        "nodeType": "VariableDeclaration",
                        "scope": 6084,
                        "src": "751:24:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6079,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "751:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6082,
                        "indexed": true,
                        "name": "underlying",
                        "nodeType": "VariableDeclaration",
                        "scope": 6084,
                        "src": "777:26:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6081,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "777:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "726:78:29"
                  },
                  "src": "709:96:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6092,
                  "name": "SetSupportedTokens",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6091,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6086,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6092,
                        "src": "833:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6085,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "833:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6088,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 6092,
                        "src": "857:21:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6087,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "857:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6090,
                        "indexed": false,
                        "name": "isActive",
                        "nodeType": "VariableDeclaration",
                        "scope": 6092,
                        "src": "880:13:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6089,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "880:4:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "832:62:29"
                  },
                  "src": "808:87:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6100,
                  "name": "SetLendingFeePercent",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6099,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6094,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6100,
                        "src": "925:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6093,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "925:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6096,
                        "indexed": false,
                        "name": "oldValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6100,
                        "src": "949:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6095,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "949:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6098,
                        "indexed": false,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6100,
                        "src": "967:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6097,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "967:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "924:60:29"
                  },
                  "src": "898:87:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6108,
                  "name": "SetTradingFeePercent",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6107,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6102,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6108,
                        "src": "1015:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6101,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1015:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6104,
                        "indexed": false,
                        "name": "oldValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6108,
                        "src": "1039:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6103,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1039:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6106,
                        "indexed": false,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6108,
                        "src": "1057:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6105,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1057:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1014:60:29"
                  },
                  "src": "988:87:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6116,
                  "name": "SetBorrowingFeePercent",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6115,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6110,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6116,
                        "src": "1107:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6109,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1107:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6112,
                        "indexed": false,
                        "name": "oldValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6116,
                        "src": "1131:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6111,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1131:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6114,
                        "indexed": false,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6116,
                        "src": "1149:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6113,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1149:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1106:60:29"
                  },
                  "src": "1078:89:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6124,
                  "name": "SetSwapExternalFeePercent",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6123,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6118,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6124,
                        "src": "1202:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6117,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1202:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6120,
                        "indexed": false,
                        "name": "oldValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6124,
                        "src": "1226:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1226:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6122,
                        "indexed": false,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6124,
                        "src": "1244:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6121,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1244:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1201:60:29"
                  },
                  "src": "1170:92:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6132,
                  "name": "SetAffiliateFeePercent",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6126,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6132,
                        "src": "1294:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6125,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1294:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6128,
                        "indexed": false,
                        "name": "oldValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6132,
                        "src": "1318:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6127,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1318:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6130,
                        "indexed": false,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6132,
                        "src": "1336:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6129,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1336:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1293:60:29"
                  },
                  "src": "1265:89:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6140,
                  "name": "SetAffiliateTradingTokenFeePercent",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6139,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6134,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6140,
                        "src": "1398:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6133,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1398:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6136,
                        "indexed": false,
                        "name": "oldValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6140,
                        "src": "1422:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6135,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1422:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6138,
                        "indexed": false,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6140,
                        "src": "1440:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6137,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1440:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1397:60:29"
                  },
                  "src": "1357:101:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6148,
                  "name": "SetLiquidationIncentivePercent",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6147,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6142,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6148,
                        "src": "1498:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6141,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1498:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6144,
                        "indexed": false,
                        "name": "oldValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6148,
                        "src": "1522:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6143,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1522:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6146,
                        "indexed": false,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6148,
                        "src": "1540:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6145,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1540:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1497:60:29"
                  },
                  "src": "1461:97:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6156,
                  "name": "SetMaxSwapSize",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6155,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6150,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6156,
                        "src": "1582:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6149,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1582:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6152,
                        "indexed": false,
                        "name": "oldValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6156,
                        "src": "1606:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6151,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1606:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6154,
                        "indexed": false,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6156,
                        "src": "1624:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6153,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1624:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1581:60:29"
                  },
                  "src": "1561:81:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6164,
                  "name": "SetFeesController",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6163,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6158,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6164,
                        "src": "1669:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6157,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1669:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6160,
                        "indexed": true,
                        "name": "oldController",
                        "nodeType": "VariableDeclaration",
                        "scope": 6164,
                        "src": "1693:29:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6159,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1693:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6162,
                        "indexed": true,
                        "name": "newController",
                        "nodeType": "VariableDeclaration",
                        "scope": 6164,
                        "src": "1724:29:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6161,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1724:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1668:86:29"
                  },
                  "src": "1645:110:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6172,
                  "name": "SetWrbtcToken",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6166,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6172,
                        "src": "1778:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6165,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1778:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6168,
                        "indexed": true,
                        "name": "oldWethToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6172,
                        "src": "1802:28:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6167,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1802:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6170,
                        "indexed": true,
                        "name": "newWethToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6172,
                        "src": "1832:28:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6169,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1832:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1777:84:29"
                  },
                  "src": "1758:104:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6180,
                  "name": "SetSovrynSwapContractRegistryAddress",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6179,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6174,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6180,
                        "src": "1911:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6173,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1911:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6176,
                        "indexed": true,
                        "name": "oldSovrynSwapContractRegistryAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 6180,
                        "src": "1937:52:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6175,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1937:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6178,
                        "indexed": true,
                        "name": "newSovrynSwapContractRegistryAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 6180,
                        "src": "1993:52:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6177,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1993:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1907:141:29"
                  },
                  "src": "1865:184:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6188,
                  "name": "SetProtocolTokenAddress",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6187,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6182,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6188,
                        "src": "2082:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6181,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2082:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6184,
                        "indexed": true,
                        "name": "oldProtocolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6188,
                        "src": "2106:32:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6183,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2106:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6186,
                        "indexed": true,
                        "name": "newProtocolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6188,
                        "src": "2140:32:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6185,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2140:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2081:92:29"
                  },
                  "src": "2052:122:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6202,
                  "name": "WithdrawFees",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6201,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6190,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6202,
                        "src": "2199:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6189,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2199:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6192,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 6202,
                        "src": "2225:21:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6191,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2225:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6194,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 6202,
                        "src": "2250:24:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6193,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2250:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6196,
                        "indexed": false,
                        "name": "lendingAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6202,
                        "src": "2278:21:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6195,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2278:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6198,
                        "indexed": false,
                        "name": "tradingAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6202,
                        "src": "2303:21:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6197,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2303:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6200,
                        "indexed": false,
                        "name": "borrowingAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6202,
                        "src": "2328:23:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6199,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2328:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2195:159:29"
                  },
                  "src": "2177:178:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6212,
                  "name": "WithdrawLendingFees",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6211,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6204,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6212,
                        "src": "2384:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6203,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2384:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6206,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 6212,
                        "src": "2408:21:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6205,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2408:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6208,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 6212,
                        "src": "2431:24:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6207,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2431:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6210,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6212,
                        "src": "2457:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6209,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2457:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2383:89:29"
                  },
                  "src": "2358:115:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6222,
                  "name": "WithdrawTradingFees",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6214,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6222,
                        "src": "2502:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6213,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2502:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6216,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 6222,
                        "src": "2526:21:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6215,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2526:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6218,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 6222,
                        "src": "2549:24:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6217,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2549:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6220,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6222,
                        "src": "2575:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6219,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2575:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2501:89:29"
                  },
                  "src": "2476:115:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6232,
                  "name": "WithdrawBorrowingFees",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6231,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6224,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6232,
                        "src": "2622:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6223,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2622:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6226,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 6232,
                        "src": "2646:21:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6225,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2646:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6228,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 6232,
                        "src": "2669:24:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6227,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2669:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6230,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6232,
                        "src": "2695:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6229,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2695:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2621:89:29"
                  },
                  "src": "2594:117:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6240,
                  "name": "SetRolloverBaseReward",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6239,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6234,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6240,
                        "src": "2742:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6233,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2742:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6236,
                        "indexed": false,
                        "name": "oldValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6240,
                        "src": "2766:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6235,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2766:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6238,
                        "indexed": false,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 6240,
                        "src": "2784:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6237,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2784:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2741:60:29"
                  },
                  "src": "2714:88:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6248,
                  "name": "SetRebatePercent",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6247,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6242,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6248,
                        "src": "2828:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6241,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2828:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6244,
                        "indexed": false,
                        "name": "oldRebatePercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 6248,
                        "src": "2852:24:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6243,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2852:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6246,
                        "indexed": false,
                        "name": "newRebatePercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 6248,
                        "src": "2878:24:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6245,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2878:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2827:76:29"
                  },
                  "src": "2805:99:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6260,
                  "name": "SetSpecialRebates",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6259,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6250,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6260,
                        "src": "2934:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6249,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2934:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6252,
                        "indexed": true,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6260,
                        "src": "2960:27:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6251,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2960:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6254,
                        "indexed": true,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6260,
                        "src": "2991:25:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6253,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2991:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6256,
                        "indexed": false,
                        "name": "oldSpecialRebatesPercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 6260,
                        "src": "3020:32:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6255,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3020:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6258,
                        "indexed": false,
                        "name": "newSpecialRebatesPercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 6260,
                        "src": "3056:32:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6257,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3056:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2930:161:29"
                  },
                  "src": "2907:185:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6268,
                  "name": "SetProtocolAddress",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6267,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6262,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6268,
                        "src": "3120:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6261,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3120:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6264,
                        "indexed": true,
                        "name": "oldProtocol",
                        "nodeType": "VariableDeclaration",
                        "scope": 6268,
                        "src": "3144:27:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6263,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3144:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6266,
                        "indexed": true,
                        "name": "newProtocol",
                        "nodeType": "VariableDeclaration",
                        "scope": 6268,
                        "src": "3173:27:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6265,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3173:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3119:82:29"
                  },
                  "src": "3095:107:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6276,
                  "name": "SetMinReferralsToPayoutAffiliates",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6275,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6270,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6276,
                        "src": "3245:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6269,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3245:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6272,
                        "indexed": false,
                        "name": "oldMinReferrals",
                        "nodeType": "VariableDeclaration",
                        "scope": 6276,
                        "src": "3269:23:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6271,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3269:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6274,
                        "indexed": false,
                        "name": "newMinReferrals",
                        "nodeType": "VariableDeclaration",
                        "scope": 6276,
                        "src": "3294:23:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6273,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3294:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3244:74:29"
                  },
                  "src": "3205:114:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6284,
                  "name": "SetSOVTokenAddress",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6283,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6278,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6284,
                        "src": "3347:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6277,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3347:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6280,
                        "indexed": true,
                        "name": "oldTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 6284,
                        "src": "3371:31:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6279,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3371:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6282,
                        "indexed": true,
                        "name": "newTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 6284,
                        "src": "3404:31:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6281,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3404:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3346:90:29"
                  },
                  "src": "3322:115:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6292,
                  "name": "SetLockedSOVAddress",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6291,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6286,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6292,
                        "src": "3466:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6285,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3466:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6288,
                        "indexed": true,
                        "name": "oldAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 6292,
                        "src": "3490:26:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3490:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6290,
                        "indexed": true,
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 6292,
                        "src": "3518:26:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6289,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3518:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3465:80:29"
                  },
                  "src": "3440:106:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6300,
                  "name": "TogglePaused",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6294,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6300,
                        "src": "3568:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6293,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3568:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6296,
                        "indexed": true,
                        "name": "oldFlag",
                        "nodeType": "VariableDeclaration",
                        "scope": 6300,
                        "src": "3592:20:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6295,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3592:4:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6298,
                        "indexed": true,
                        "name": "newFlag",
                        "nodeType": "VariableDeclaration",
                        "scope": 6300,
                        "src": "3614:20:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6297,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3614:4:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3567:68:29"
                  },
                  "src": "3549:87:29"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6308,
                  "name": "SetTradingRebateRewardsBasisPoint",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6302,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 6308,
                        "src": "3679:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6301,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3679:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6304,
                        "indexed": false,
                        "name": "oldBasisPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 6308,
                        "src": "3703:21:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6303,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3703:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6306,
                        "indexed": false,
                        "name": "newBasisPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 6308,
                        "src": "3726:21:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3726:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3678:70:29"
                  },
                  "src": "3639:110:29"
                }
              ],
              "scope": 6310,
              "src": "471:3280:29"
            }
          ],
          "src": "118:3634:29"
        },
        "id": 29
      },
      "contracts/events/SwapsEvents.sol": {
        "ast": {
          "absolutePath": "contracts/events/SwapsEvents.sol",
          "exportedSymbols": {
            "SwapsEvents": [
              6341
            ]
          },
          "id": 6342,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6311,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:30"
            },
            {
              "absolutePath": "contracts/events/ModulesCommonEvents.sol",
              "file": "./ModulesCommonEvents.sol",
              "id": 6312,
              "nodeType": "ImportDirective",
              "scope": 6342,
              "sourceUnit": 6056,
              "src": "143:35:30",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 6313,
                    "name": "ModulesCommonEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6055,
                    "src": "470:19:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModulesCommonEvents_$6055",
                      "typeString": "contract ModulesCommonEvents"
                    }
                  },
                  "id": 6314,
                  "nodeType": "InheritanceSpecifier",
                  "src": "470:19:30"
                }
              ],
              "contractDependencies": [
                6055
              ],
              "contractKind": "contract",
              "documentation": "@title The Swaps Events contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the events for swap operations.\n",
              "fullyImplemented": true,
              "id": 6341,
              "linearizedBaseContracts": [
                6341,
                6055
              ],
              "name": "SwapsEvents",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6328,
                  "name": "LoanSwap",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6327,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6316,
                        "indexed": true,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 6328,
                        "src": "511:22:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6315,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "511:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6318,
                        "indexed": true,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6328,
                        "src": "537:27:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6317,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "537:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6320,
                        "indexed": true,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6328,
                        "src": "568:25:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6319,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "568:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6322,
                        "indexed": false,
                        "name": "borrower",
                        "nodeType": "VariableDeclaration",
                        "scope": 6328,
                        "src": "597:16:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6321,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "597:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6324,
                        "indexed": false,
                        "name": "sourceAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6328,
                        "src": "617:20:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6323,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "617:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6326,
                        "indexed": false,
                        "name": "destAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6328,
                        "src": "641:18:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6325,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "641:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "507:155:30"
                  },
                  "src": "493:170:30"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6340,
                  "name": "ExternalSwap",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6339,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6330,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 6340,
                        "src": "688:20:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6329,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "688:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6332,
                        "indexed": true,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6340,
                        "src": "712:27:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6331,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "712:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6334,
                        "indexed": true,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6340,
                        "src": "743:25:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6333,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "743:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6336,
                        "indexed": false,
                        "name": "sourceAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6340,
                        "src": "772:20:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6335,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "772:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6338,
                        "indexed": false,
                        "name": "destAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6340,
                        "src": "796:18:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6337,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "796:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "684:133:30"
                  },
                  "src": "666:152:30"
                }
              ],
              "scope": 6342,
              "src": "446:374:30"
            }
          ],
          "src": "118:703:30"
        },
        "id": 30
      },
      "contracts/farm/ILiquidityMining.sol": {
        "ast": {
          "absolutePath": "contracts/farm/ILiquidityMining.sol",
          "exportedSymbols": {
            "ILiquidityMining": [
              6369
            ]
          },
          "id": 6370,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6343,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:31"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 6369,
              "linearizedBaseContracts": [
                6369
              ],
              "name": "ILiquidityMining",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 6352,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6350,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6345,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6352,
                        "src": "76:18:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6344,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "76:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6347,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6352,
                        "src": "98:15:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6346,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "98:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6349,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 6352,
                        "src": "117:13:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6348,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "117:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "72:61:31"
                  },
                  "returnParameters": {
                    "id": 6351,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "142:0:31"
                  },
                  "scope": 6369,
                  "src": "55:88:31",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 6359,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onTokensDeposited",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6354,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 6359,
                        "src": "173:13:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6353,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "173:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6356,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6359,
                        "src": "188:15:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6355,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "188:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "172:32:31"
                  },
                  "returnParameters": {
                    "id": 6358,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "213:0:31"
                  },
                  "scope": 6369,
                  "src": "146:68:31",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 6368,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserPoolTokenBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6364,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6361,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6368,
                        "src": "250:18:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6360,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "250:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6363,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 6368,
                        "src": "270:13:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6362,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "270:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "249:35:31"
                  },
                  "returnParameters": {
                    "id": 6367,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6366,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 6368,
                        "src": "308:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6365,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "308:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "307:9:31"
                  },
                  "scope": 6369,
                  "src": "217:100:31",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 6370,
              "src": "25:294:31"
            }
          ],
          "src": "0:320:31"
        },
        "id": 31
      },
      "contracts/farm/LiquidityMining.sol": {
        "ast": {
          "absolutePath": "contracts/farm/LiquidityMining.sol",
          "exportedSymbols": {
            "LiquidityMining": [
              8295
            ]
          },
          "id": 8296,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6371,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:32"
            },
            {
              "id": 6372,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "24:33:32"
            },
            {
              "absolutePath": "contracts/openzeppelin/ERC20.sol",
              "file": "../openzeppelin/ERC20.sol",
              "id": 6373,
              "nodeType": "ImportDirective",
              "scope": 8296,
              "sourceUnit": 41531,
              "src": "59:35:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeERC20.sol",
              "file": "../openzeppelin/SafeERC20.sol",
              "id": 6374,
              "nodeType": "ImportDirective",
              "scope": 8296,
              "sourceUnit": 42050,
              "src": "95:39:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../openzeppelin/SafeMath.sol",
              "id": 6375,
              "nodeType": "ImportDirective",
              "scope": 8296,
              "sourceUnit": 42310,
              "src": "135:38:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/farm/LiquidityMiningStorage.sol",
              "file": "./LiquidityMiningStorage.sol",
              "id": 6376,
              "nodeType": "ImportDirective",
              "scope": 8296,
              "sourceUnit": 8438,
              "src": "174:38:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/farm/ILiquidityMining.sol",
              "file": "./ILiquidityMining.sol",
              "id": 6377,
              "nodeType": "ImportDirective",
              "scope": 8296,
              "sourceUnit": 6370,
              "src": "213:32:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 6378,
                    "name": "ILiquidityMining",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6369,
                    "src": "275:16:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILiquidityMining_$6369",
                      "typeString": "contract ILiquidityMining"
                    }
                  },
                  "id": 6379,
                  "nodeType": "InheritanceSpecifier",
                  "src": "275:16:32"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 6380,
                    "name": "LiquidityMiningStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8437,
                    "src": "293:22:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LiquidityMiningStorage_$8437",
                      "typeString": "contract LiquidityMiningStorage"
                    }
                  },
                  "id": 6381,
                  "nodeType": "InheritanceSpecifier",
                  "src": "293:22:32"
                }
              ],
              "contractDependencies": [
                6369,
                8437,
                41125,
                41798,
                44979
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 8295,
              "linearizedBaseContracts": [
                8295,
                8437,
                44979,
                41798,
                41125,
                6369
              ],
              "name": "LiquidityMining",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 6384,
                  "libraryName": {
                    "contractScope": null,
                    "id": 6382,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "325:8:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "319:27:32",
                  "typeName": {
                    "id": 6383,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "338:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 6387,
                  "libraryName": {
                    "contractScope": null,
                    "id": 6385,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42049,
                    "src": "354:9:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$42049",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "348:27:32",
                  "typeName": {
                    "contractScope": null,
                    "id": 6386,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "368:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 6390,
                  "name": "PRECISION",
                  "nodeType": "VariableDeclaration",
                  "scope": 8295,
                  "src": "396:40:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6388,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "396:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653132",
                    "id": 6389,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "432:4:32",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000_by_1",
                      "typeString": "int_const 1000000000000"
                    },
                    "value": "1e12"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 6393,
                  "name": "BONUS_BLOCK_MULTIPLIER",
                  "nodeType": "VariableDeclaration",
                  "scope": 8295,
                  "src": "601:51:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6391,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "601:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3130",
                    "id": 6392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "650:2:32",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10_by_1",
                      "typeString": "int_const 10"
                    },
                    "value": "10"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 6396,
                  "name": "SECONDS_PER_BLOCK",
                  "nodeType": "VariableDeclaration",
                  "scope": 8295,
                  "src": "656:46:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6394,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "656:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3330",
                    "id": 6395,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "700:2:32",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_30_by_1",
                      "typeString": "int_const 30"
                    },
                    "value": "30"
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6402,
                  "name": "SOVTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6401,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6398,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 6402,
                        "src": "742:24:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6397,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "742:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6400,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6402,
                        "src": "768:14:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6399,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "768:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "741:42:32"
                  },
                  "src": "721:63:32"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6410,
                  "name": "PoolTokenAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6404,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 6410,
                        "src": "807:20:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6403,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "807:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6406,
                        "indexed": true,
                        "name": "poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6410,
                        "src": "829:25:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6405,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "829:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6408,
                        "indexed": false,
                        "name": "allocationPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 6410,
                        "src": "856:23:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6407,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "856:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "806:74:32"
                  },
                  "src": "786:95:32"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6420,
                  "name": "PoolTokenUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6419,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6412,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 6420,
                        "src": "906:20:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6411,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "906:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6414,
                        "indexed": true,
                        "name": "poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6420,
                        "src": "928:25:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6413,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "928:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6416,
                        "indexed": false,
                        "name": "newAllocationPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 6420,
                        "src": "955:26:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6415,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "955:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6418,
                        "indexed": false,
                        "name": "oldAllocationPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 6420,
                        "src": "983:26:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6417,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "983:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "905:105:32"
                  },
                  "src": "883:128:32"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6428,
                  "name": "Deposit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6427,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6422,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 6428,
                        "src": "1027:20:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6421,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1027:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6424,
                        "indexed": true,
                        "name": "poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6428,
                        "src": "1049:25:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6423,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1049:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6426,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6428,
                        "src": "1076:14:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6425,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1076:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1026:65:32"
                  },
                  "src": "1013:79:32"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6436,
                  "name": "RewardClaimed",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6435,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6430,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 6436,
                        "src": "1114:20:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6429,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1114:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6432,
                        "indexed": true,
                        "name": "poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6436,
                        "src": "1136:25:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6431,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1136:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6434,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6436,
                        "src": "1163:14:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6433,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1163:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1113:65:32"
                  },
                  "src": "1094:85:32"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6444,
                  "name": "Withdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6443,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6438,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 6444,
                        "src": "1196:20:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6437,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1196:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6440,
                        "indexed": true,
                        "name": "poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6444,
                        "src": "1218:25:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6439,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1218:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6442,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6444,
                        "src": "1245:14:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6441,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1245:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1195:65:32"
                  },
                  "src": "1181:80:32"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6454,
                  "name": "EmergencyWithdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6453,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6446,
                        "indexed": true,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 6454,
                        "src": "1287:20:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6445,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1287:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6448,
                        "indexed": true,
                        "name": "poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6454,
                        "src": "1309:25:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6447,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1309:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6450,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6454,
                        "src": "1336:14:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6449,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1336:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6452,
                        "indexed": false,
                        "name": "accumulatedReward",
                        "nodeType": "VariableDeclaration",
                        "scope": 6454,
                        "src": "1352:25:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6451,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1352:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1286:92:32"
                  },
                  "src": "1263:116:32"
                },
                {
                  "body": {
                    "id": 6542,
                    "nodeType": "Block",
                    "src": "2317:630:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6475,
                                    "name": "SOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8432,
                                    "src": "2399:3:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  ],
                                  "id": 6474,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2391:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 6476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2391:12:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 6478,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2415:1:32",
                                    "subdenomination": null,
                                    "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": 6477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2407:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 6479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2407:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2391:26:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416c726561647920696e697469616c697a6564",
                              "id": 6481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2419:21:32",
                              "subdenomination": null,
                              "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": 6473,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2383:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2383:58:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6483,
                        "nodeType": "ExpressionStatement",
                        "src": "2383:58:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6486,
                                    "name": "_SOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6456,
                                    "src": "2461:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  ],
                                  "id": 6485,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2453:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 6487,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2453:13:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 6489,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2478:1:32",
                                    "subdenomination": null,
                                    "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": 6488,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2470:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 6490,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2470:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2453:27:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c696420746f6b656e2061646472657373",
                              "id": 6492,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2482:23:32",
                              "subdenomination": null,
                              "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": 6484,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2445:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2445:61:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6494,
                        "nodeType": "ExpressionStatement",
                        "src": "2445:61:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6496,
                                "name": "_startDelayBlocks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6460,
                                "src": "2518:17:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2538:1:32",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2518:21:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c696420737461727420626c6f636b",
                              "id": 6499,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2541:21:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6931c31d4f12cf701d2bae3519754547c6c993e2548333d63706fa6eb15e9c7c",
                                "typeString": "literal_string \"Invalid start block\""
                              },
                              "value": "Invalid start block"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6931c31d4f12cf701d2bae3519754547c6c993e2548333d63706fa6eb15e9c7c",
                                "typeString": "literal_string \"Invalid start block\""
                              }
                            ],
                            "id": 6495,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2510:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2510:53:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6501,
                        "nodeType": "ExpressionStatement",
                        "src": "2510:53:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6505,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6503,
                                "name": "_unlockedImmediatelyPercent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6468,
                                "src": "2575:27:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130303030",
                                "id": 6504,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2605:5:32",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10000"
                              },
                              "src": "2575:35:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "556e6c6f636b656420696d6d6564696174656c792070657263656e742068617320746f206265206c657373207468616e2031303030302e",
                              "id": 6506,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2612:57:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5bbeeef2e03361e7791143cbe89aa9a532208a38545b7da0c4372dc2fca7f4af",
                                "typeString": "literal_string \"Unlocked immediately percent has to be less than 10000.\""
                              },
                              "value": "Unlocked immediately percent has to be less than 10000."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5bbeeef2e03361e7791143cbe89aa9a532208a38545b7da0c4372dc2fca7f4af",
                                "typeString": "literal_string \"Unlocked immediately percent has to be less than 10000.\""
                              }
                            ],
                            "id": 6502,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2567:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2567:103:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6508,
                        "nodeType": "ExpressionStatement",
                        "src": "2567:103:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6509,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8432,
                            "src": "2675:3:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 6510,
                            "name": "_SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6456,
                            "src": "2681:4:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "2675:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 6512,
                        "nodeType": "ExpressionStatement",
                        "src": "2675:10:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6513,
                            "name": "rewardTokensPerBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8405,
                            "src": "2689:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 6514,
                            "name": "_rewardTokensPerBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6458,
                            "src": "2712:21:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2689:44:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6516,
                        "nodeType": "ExpressionStatement",
                        "src": "2689:44:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6517,
                            "name": "startBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8407,
                            "src": "2737:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6518,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "2750:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 6519,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2750:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6520,
                              "name": "_startDelayBlocks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6460,
                              "src": "2765:17:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2750:32:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2737:45:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6523,
                        "nodeType": "ExpressionStatement",
                        "src": "2737:45:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6524,
                            "name": "bonusEndBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8409,
                            "src": "2786:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6525,
                              "name": "startBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8407,
                              "src": "2802:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6526,
                              "name": "_numberOfBonusBlocks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6462,
                              "src": "2815:20:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2802:33:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2786:49:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6529,
                        "nodeType": "ExpressionStatement",
                        "src": "2786:49:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6530,
                            "name": "wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8413,
                            "src": "2839:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 6531,
                            "name": "_wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6464,
                            "src": "2849:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2839:18:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6533,
                        "nodeType": "ExpressionStatement",
                        "src": "2839:18:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6534,
                            "name": "lockedSOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8434,
                            "src": "2861:9:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                              "typeString": "contract ILockedSOV"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 6535,
                            "name": "_lockedSOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6466,
                            "src": "2873:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                              "typeString": "contract ILockedSOV"
                            }
                          },
                          "src": "2861:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                            "typeString": "contract ILockedSOV"
                          }
                        },
                        "id": 6537,
                        "nodeType": "ExpressionStatement",
                        "src": "2861:22:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6540,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6538,
                            "name": "unlockedImmediatelyPercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8436,
                            "src": "2887:26:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 6539,
                            "name": "_unlockedImmediatelyPercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6468,
                            "src": "2916:27:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2887:56:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6541,
                        "nodeType": "ExpressionStatement",
                        "src": "2887:56:32"
                      }
                    ]
                  },
                  "documentation": "@notice Initialize mining.\n\t * @param _SOV The SOV token.\n@param _rewardTokensPerBlock The number of reward tokens per block.\n@param _startDelayBlocks The number of blocks should be passed to start\n  mining.\n@param _numberOfBonusBlocks The number of blocks when each block will\n  be calculated as N blocks (BONUS_BLOCK_MULTIPLIER).\n@param _lockedSOV The contract instance address of the lockedSOV vault.\n  SOV rewards are not paid directly to liquidity providers. Instead they\n  are deposited into a lockedSOV vault contract.\n@param _unlockedImmediatelyPercent The % which determines how much will be unlocked immediately.",
                  "id": 6543,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 6471,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 6470,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "2302:14:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2302:14:32"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6469,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6456,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 6543,
                        "src": "2100:11:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 6455,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24699,
                          "src": "2100:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6458,
                        "name": "_rewardTokensPerBlock",
                        "nodeType": "VariableDeclaration",
                        "scope": 6543,
                        "src": "2115:29:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6457,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2115:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6460,
                        "name": "_startDelayBlocks",
                        "nodeType": "VariableDeclaration",
                        "scope": 6543,
                        "src": "2148:25:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6459,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2148:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6462,
                        "name": "_numberOfBonusBlocks",
                        "nodeType": "VariableDeclaration",
                        "scope": 6543,
                        "src": "2177:28:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6461,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2177:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6464,
                        "name": "_wrapper",
                        "nodeType": "VariableDeclaration",
                        "scope": 6543,
                        "src": "2209:16:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6463,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2209:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6466,
                        "name": "_lockedSOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 6543,
                        "src": "2229:21:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                          "typeString": "contract ILockedSOV"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 6465,
                          "name": "ILockedSOV",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 25583,
                          "src": "2229:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                            "typeString": "contract ILockedSOV"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6468,
                        "name": "_unlockedImmediatelyPercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 6543,
                        "src": "2254:35:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6467,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2254:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2096:196:32"
                  },
                  "returnParameters": {
                    "id": 6472,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2317:0:32"
                  },
                  "scope": 8295,
                  "src": "2077:870:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6565,
                    "nodeType": "Block",
                    "src": "3142:106:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6552,
                                    "name": "_lockedSOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6545,
                                    "src": "3162:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                      "typeString": "contract ILockedSOV"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                      "typeString": "contract ILockedSOV"
                                    }
                                  ],
                                  "id": 6551,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3154:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 6553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3154:19:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 6555,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3185:1:32",
                                    "subdenomination": null,
                                    "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": 6554,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3177:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 6556,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3177:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3154:33:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c6964206c6f636b6564534f5620416464726573732e",
                              "id": 6558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3189:28:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1a862f464d5efbf58aed321e6f5c4a714034c9a30e864aa6072357fc680d04e5",
                                "typeString": "literal_string \"Invalid lockedSOV Address.\""
                              },
                              "value": "Invalid lockedSOV Address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1a862f464d5efbf58aed321e6f5c4a714034c9a30e864aa6072357fc680d04e5",
                                "typeString": "literal_string \"Invalid lockedSOV Address.\""
                              }
                            ],
                            "id": 6550,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3146:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3146:72:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6560,
                        "nodeType": "ExpressionStatement",
                        "src": "3146:72:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6561,
                            "name": "lockedSOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8434,
                            "src": "3222:9:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                              "typeString": "contract ILockedSOV"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 6562,
                            "name": "_lockedSOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6545,
                            "src": "3234:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                              "typeString": "contract ILockedSOV"
                            }
                          },
                          "src": "3222:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                            "typeString": "contract ILockedSOV"
                          }
                        },
                        "id": 6564,
                        "nodeType": "ExpressionStatement",
                        "src": "3222:22:32"
                      }
                    ]
                  },
                  "documentation": "@notice Sets lockedSOV contract.\n@param _lockedSOV The contract instance address of the lockedSOV vault.",
                  "id": 6566,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 6548,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 6547,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "3127:14:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3127:14:32"
                    }
                  ],
                  "name": "setLockedSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6546,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6545,
                        "name": "_lockedSOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 6566,
                        "src": "3095:21:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                          "typeString": "contract ILockedSOV"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 6544,
                          "name": "ILockedSOV",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 25583,
                          "src": "3095:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                            "typeString": "contract ILockedSOV"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3094:23:32"
                  },
                  "returnParameters": {
                    "id": 6549,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3142:0:32"
                  },
                  "scope": 8295,
                  "src": "3073:175:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6584,
                    "nodeType": "Block",
                    "src": "3537:171:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6576,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6574,
                                "name": "_unlockedImmediatelyPercent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6568,
                                "src": "3549:27:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130303030",
                                "id": 6575,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3579:5:32",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10000"
                              },
                              "src": "3549:35:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "556e6c6f636b656420696d6d6564696174656c792070657263656e742068617320746f206265206c657373207468616e2031303030302e",
                              "id": 6577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3586:57:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5bbeeef2e03361e7791143cbe89aa9a532208a38545b7da0c4372dc2fca7f4af",
                                "typeString": "literal_string \"Unlocked immediately percent has to be less than 10000.\""
                              },
                              "value": "Unlocked immediately percent has to be less than 10000."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5bbeeef2e03361e7791143cbe89aa9a532208a38545b7da0c4372dc2fca7f4af",
                                "typeString": "literal_string \"Unlocked immediately percent has to be less than 10000.\""
                              }
                            ],
                            "id": 6573,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3541:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3541:103:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6579,
                        "nodeType": "ExpressionStatement",
                        "src": "3541:103:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6580,
                            "name": "unlockedImmediatelyPercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8436,
                            "src": "3648:26:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 6581,
                            "name": "_unlockedImmediatelyPercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6568,
                            "src": "3677:27:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3648:56:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6583,
                        "nodeType": "ExpressionStatement",
                        "src": "3648:56:32"
                      }
                    ]
                  },
                  "documentation": "@notice Sets unlocked immediately percent.\n@param _unlockedImmediatelyPercent The % which determines how much will be unlocked immediately.\n@dev @dev 10000 is 100%",
                  "id": 6585,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 6571,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 6570,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "3522:14:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3522:14:32"
                    }
                  ],
                  "name": "setUnlockedImmediatelyPercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6569,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6568,
                        "name": "_unlockedImmediatelyPercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 6585,
                        "src": "3476:35:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6567,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3476:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3475:37:32"
                  },
                  "returnParameters": {
                    "id": 6572,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3537:0:32"
                  },
                  "scope": 8295,
                  "src": "3437:271:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6596,
                    "nodeType": "Block",
                    "src": "3877:26:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6592,
                            "name": "wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8413,
                            "src": "3881:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 6593,
                            "name": "_wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6587,
                            "src": "3891:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3881:18:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6595,
                        "nodeType": "ExpressionStatement",
                        "src": "3881:18:32"
                      }
                    ]
                  },
                  "documentation": "@notice sets wrapper proxy contract\n@dev can be set to zero address to remove wrapper",
                  "id": 6597,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 6590,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 6589,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "3862:14:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3862:14:32"
                    }
                  ],
                  "name": "setWrapper",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6588,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6587,
                        "name": "_wrapper",
                        "nodeType": "VariableDeclaration",
                        "scope": 6597,
                        "src": "3835:16:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6586,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3835:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3834:18:32"
                  },
                  "returnParameters": {
                    "id": 6591,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3877:0:32"
                  },
                  "scope": 8295,
                  "src": "3815:88:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6614,
                    "nodeType": "Block",
                    "src": "4008:77:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6605,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6603,
                                "name": "endBlock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8411,
                                "src": "4020:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6604,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4032:1:32",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4020:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416c72656164792073746f70706564",
                              "id": 6606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4035:17:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f523577c71b3e2c227df5c77bdc3e73dcc4f3dd6d6e3bb3821ba6d15f2b2287a",
                                "typeString": "literal_string \"Already stopped\""
                              },
                              "value": "Already stopped"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f523577c71b3e2c227df5c77bdc3e73dcc4f3dd6d6e3bb3821ba6d15f2b2287a",
                                "typeString": "literal_string \"Already stopped\""
                              }
                            ],
                            "id": 6602,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4012:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4012:41:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6608,
                        "nodeType": "ExpressionStatement",
                        "src": "4012:41:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6609,
                            "name": "endBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8411,
                            "src": "4058:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6610,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44984,
                              "src": "4069:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 6611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4069:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4058:23:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6613,
                        "nodeType": "ExpressionStatement",
                        "src": "4058:23:32"
                      }
                    ]
                  },
                  "documentation": "@notice stops mining by setting end block",
                  "id": 6615,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 6600,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 6599,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "3993:14:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3993:14:32"
                    }
                  ],
                  "name": "stopMining",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6598,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3981:2:32"
                  },
                  "returnParameters": {
                    "id": 6601,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4008:0:32"
                  },
                  "scope": 8295,
                  "src": "3962:123:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6672,
                    "nodeType": "Block",
                    "src": "4426:427:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6625,
                                "name": "_receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6617,
                                "src": "4438:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 6627,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4459:1:32",
                                    "subdenomination": null,
                                    "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": 6626,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4451:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 6628,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4451:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4438:23:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5265636569766572206164647265737320696e76616c6964",
                              "id": 6630,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4463:26:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90576d311bb76dd70ea749dcc76540a440729a75681f8387985e68f0c3fa495d",
                                "typeString": "literal_string \"Receiver address invalid\""
                              },
                              "value": "Receiver address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_90576d311bb76dd70ea749dcc76540a440729a75681f8387985e68f0c3fa495d",
                                "typeString": "literal_string \"Receiver address invalid\""
                              }
                            ],
                            "id": 6624,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4430:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4430:60:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6632,
                        "nodeType": "ExpressionStatement",
                        "src": "4430:60:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6634,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6619,
                                "src": "4502:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4513:1:32",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4502:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416d6f756e7420696e76616c6964",
                              "id": 6637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4516:16:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bc2b6eac6664d87fabbac5512b69f7856cb34ca83d21b7f4782491e5d9b74dfb",
                                "typeString": "literal_string \"Amount invalid\""
                              },
                              "value": "Amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_bc2b6eac6664d87fabbac5512b69f7856cb34ca83d21b7f4782491e5d9b74dfb",
                                "typeString": "literal_string \"Amount invalid\""
                              }
                            ],
                            "id": 6633,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4494:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4494:39:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6639,
                        "nodeType": "ExpressionStatement",
                        "src": "4494:39:32"
                      },
                      {
                        "assignments": [
                          6641
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6641,
                            "name": "SOVBal",
                            "nodeType": "VariableDeclaration",
                            "scope": 6672,
                            "src": "4590:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6640,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4590:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 6648,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6645,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45108,
                                  "src": "4629:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                    "typeString": "contract LiquidityMining"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                    "typeString": "contract LiquidityMining"
                                  }
                                ],
                                "id": 6644,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4621:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 6646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4621:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 6642,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8432,
                              "src": "4607:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 6643,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24644,
                            "src": "4607:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 6647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4607:28:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4590:45:32"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6649,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6619,
                            "src": "4643:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 6650,
                            "name": "SOVBal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6641,
                            "src": "4653:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4643:16:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 6657,
                        "nodeType": "IfStatement",
                        "src": "4639:48:32",
                        "trueBody": {
                          "id": 6656,
                          "nodeType": "Block",
                          "src": "4661:26:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 6654,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 6652,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6619,
                                  "src": "4666:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 6653,
                                  "name": "SOVBal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6641,
                                  "src": "4676:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4666:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6655,
                              "nodeType": "ExpressionStatement",
                              "src": "4666:16:32"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6661,
                                  "name": "_receiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6617,
                                  "src": "4744:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 6662,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6619,
                                  "src": "4755:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6659,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8432,
                                  "src": "4731:3:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 6660,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24671,
                                "src": "4731:12:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 6663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4731:32:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5472616e73666572206661696c6564",
                              "id": 6664,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4765:17:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51",
                                "typeString": "literal_string \"Transfer failed\""
                              },
                              "value": "Transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51",
                                "typeString": "literal_string \"Transfer failed\""
                              }
                            ],
                            "id": 6658,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4723:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4723:60:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6666,
                        "nodeType": "ExpressionStatement",
                        "src": "4723:60:32"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6668,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6617,
                              "src": "4830:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6669,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6619,
                              "src": "4841:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6667,
                            "name": "SOVTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6402,
                            "src": "4815:14:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 6670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4815:34:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6671,
                        "nodeType": "EmitStatement",
                        "src": "4810:39:32"
                      }
                    ]
                  },
                  "documentation": "@notice Transfers SOV tokens to given address.\n  Owner use this function to withdraw SOV from LM contract\n  into another account.\n@param _receiver The address of the SOV receiver.\n@param _amount The amount to be transferred.\n",
                  "id": 6673,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 6622,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 6621,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "4411:14:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4411:14:32"
                    }
                  ],
                  "name": "transferSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6617,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 6673,
                        "src": "4366:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6616,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4366:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6619,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6673,
                        "src": "4385:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6618,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4385:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4365:36:32"
                  },
                  "returnParameters": {
                    "id": 6623,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4426:0:32"
                  },
                  "scope": 8295,
                  "src": "4345:508:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6697,
                    "nodeType": "Block",
                    "src": "5113:130:32",
                    "statements": [
                      {
                        "assignments": [
                          6679
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6679,
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 6697,
                            "src": "5117:15:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6678,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5117:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 6686,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6683,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45108,
                                  "src": "5157:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                    "typeString": "contract LiquidityMining"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                    "typeString": "contract LiquidityMining"
                                  }
                                ],
                                "id": 6682,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5149:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 6684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5149:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 6680,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8432,
                              "src": "5135:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 6681,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24644,
                            "src": "5135:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 6685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5135:28:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5117:46:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6689,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6687,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6679,
                              "src": "5174:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6688,
                              "name": "totalUsersBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8430,
                              "src": "5185:17:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5174:28:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6693,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6679,
                                "src": "5231:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6691,
                                "name": "totalUsersBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8430,
                                "src": "5209:17:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6692,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "5209:21:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6694,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5209:30:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "5174:65:32",
                          "trueExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5205:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6677,
                        "id": 6696,
                        "nodeType": "Return",
                        "src": "5167:72:32"
                      }
                    ]
                  },
                  "documentation": "@notice Get the missed SOV balance of LM contract.\n\t * @return The amount of SOV tokens according to totalUsersBalance\n  in excess of actual SOV balance of the LM contract.\n",
                  "id": 6698,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMissedBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6674,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5078:2:32"
                  },
                  "returnParameters": {
                    "id": 6677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6676,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 6698,
                        "src": "5104:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6675,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5104:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5103:9:32"
                  },
                  "scope": 8295,
                  "src": "5053:190:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6785,
                    "nodeType": "Block",
                    "src": "5641:773:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 6712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6710,
                                "name": "_allocationPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6702,
                                "src": "5653:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5672:1:32",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5653:20:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c696420616c6c6f636174696f6e20706f696e74",
                              "id": 6713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5675:26:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0aa2d8e9570b34b4a3d16ebb5f182c072dd64efafef571d7004b278bb69623e8",
                                "typeString": "literal_string \"Invalid allocation point\""
                              },
                              "value": "Invalid allocation point"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0aa2d8e9570b34b4a3d16ebb5f182c072dd64efafef571d7004b278bb69623e8",
                                "typeString": "literal_string \"Invalid allocation point\""
                              }
                            ],
                            "id": 6709,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5645:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5645:57:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6715,
                        "nodeType": "ExpressionStatement",
                        "src": "5645:57:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6721,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6717,
                                "name": "_poolToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6700,
                                "src": "5714:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 6719,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5736:1:32",
                                    "subdenomination": null,
                                    "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": 6718,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5728:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 6720,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5728:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5714:24:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c696420746f6b656e2061646472657373",
                              "id": 6722,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5740:23:32",
                              "subdenomination": null,
                              "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": 6716,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5706:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5706:58:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6724,
                        "nodeType": "ExpressionStatement",
                        "src": "5706:58:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 6726,
                                  "name": "poolIdList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8420,
                                  "src": "5776:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 6728,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 6727,
                                  "name": "_poolToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6700,
                                  "src": "5787:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5776:22:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6729,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5802:1:32",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5776:27:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e20616c7265616479206164646564",
                              "id": 6731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5805:21:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b07030750bf13b02a70fb14791777581902c169c67141a3966ae190a921be309",
                                "typeString": "literal_string \"Token already added\""
                              },
                              "value": "Token already added"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b07030750bf13b02a70fb14791777581902c169c67141a3966ae190a921be309",
                                "typeString": "literal_string \"Token already added\""
                              }
                            ],
                            "id": 6725,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5768:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5768:59:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6733,
                        "nodeType": "ExpressionStatement",
                        "src": "5768:59:32"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 6734,
                          "name": "_withUpdate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6704,
                          "src": "5836:11:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 6739,
                        "nodeType": "IfStatement",
                        "src": "5832:43:32",
                        "trueBody": {
                          "id": 6738,
                          "nodeType": "Block",
                          "src": "5849:26:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 6735,
                                  "name": "updateAllPools",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7173,
                                  "src": "5854:14:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 6736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5854:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6737,
                              "nodeType": "ExpressionStatement",
                              "src": "5854:16:32"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          6741
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6741,
                            "name": "lastRewardBlock",
                            "nodeType": "VariableDeclaration",
                            "scope": 6785,
                            "src": "5879:23:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6740,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5879:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 6750,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6742,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "5905:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 6743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5905:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6744,
                              "name": "startBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8407,
                              "src": "5920:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5905:25:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 6748,
                            "name": "startBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8407,
                            "src": "5948:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "5905:53:32",
                          "trueExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6746,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44984,
                              "src": "5933:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 6747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5933:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5879:79:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6751,
                            "name": "totalAllocationPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8422,
                            "src": "5962:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6754,
                                "name": "_allocationPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6702,
                                "src": "6010:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6752,
                                "name": "totalAllocationPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8422,
                                "src": "5985:20:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "5985:24:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5985:42:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5962:65:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6757,
                        "nodeType": "ExpressionStatement",
                        "src": "5962:65:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 6763,
                                      "name": "_poolToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6700,
                                      "src": "6087:10:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 6762,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24699,
                                    "src": "6080:6:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 6764,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6080:18:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 6765,
                                  "name": "_allocationPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6702,
                                  "src": "6121:16:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 6766,
                                  "name": "lastRewardBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6741,
                                  "src": "6160:15:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 6767,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6208:1:32",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  },
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 6761,
                                "name": "PoolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8403,
                                "src": "6054:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_PoolInfo_$8403_storage_ptr_$",
                                  "typeString": "type(struct LiquidityMiningStorage.PoolInfo storage pointer)"
                                }
                              },
                              "id": 6768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "poolToken",
                                "allocationPoint",
                                "lastRewardBlock",
                                "accumulatedRewardPerShare"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "6054:161:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_memory",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_memory",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 6758,
                              "name": "poolInfoList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8416,
                              "src": "6032:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 6760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6032:17:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_PoolInfo_$8403_storage_$returns$_t_uint256_$",
                              "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage ref) returns (uint256)"
                            }
                          },
                          "id": 6769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6032:187:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6770,
                        "nodeType": "ExpressionStatement",
                        "src": "6032:187:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6771,
                              "name": "poolIdList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8420,
                              "src": "6300:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 6773,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6772,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6700,
                              "src": "6311:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6300:22:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6774,
                              "name": "poolInfoList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8416,
                              "src": "6325:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 6775,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6325:19:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6300:44:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6777,
                        "nodeType": "ExpressionStatement",
                        "src": "6300:44:32"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6779,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6369:3:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6369:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6781,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6700,
                              "src": "6381:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6782,
                              "name": "_allocationPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6702,
                              "src": "6393:16:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 6778,
                            "name": "PoolTokenAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6410,
                            "src": "6354:14:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 6783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6354:56:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6784,
                        "nodeType": "EmitStatement",
                        "src": "6349:61:32"
                      }
                    ]
                  },
                  "documentation": "@notice adds a new lp to the pool. Can only be called by the owner or an admin\n@param _poolToken the address of pool token\n@param _allocationPoint the allocation point (weight) for the given pool\n@param _withUpdate the flag whether we need to update all pools",
                  "id": 6786,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 6707,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 6706,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "5626:14:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5626:14:32"
                    }
                  ],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6705,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6700,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6786,
                        "src": "5548:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6699,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5548:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6702,
                        "name": "_allocationPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 6786,
                        "src": "5570:23:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 6701,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "5570:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6704,
                        "name": "_withUpdate",
                        "nodeType": "VariableDeclaration",
                        "scope": 6786,
                        "src": "5597:16:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6703,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5597:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5544:72:32"
                  },
                  "returnParameters": {
                    "id": 6708,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5641:0:32"
                  },
                  "scope": 8295,
                  "src": "5532:882:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6813,
                    "nodeType": "Block",
                    "src": "6806:137:32",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 6797,
                          "name": "_updateAllFlag",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6792,
                          "src": "6814:14:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 6806,
                          "nodeType": "Block",
                          "src": "6862:32:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6803,
                                    "name": "_poolToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6788,
                                    "src": "6878:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6802,
                                  "name": "updatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7189,
                                  "src": "6867:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 6804,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6867:22:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6805,
                              "nodeType": "ExpressionStatement",
                              "src": "6867:22:32"
                            }
                          ]
                        },
                        "id": 6807,
                        "nodeType": "IfStatement",
                        "src": "6810:84:32",
                        "trueBody": {
                          "id": 6801,
                          "nodeType": "Block",
                          "src": "6830:26:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 6798,
                                  "name": "updateAllPools",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7173,
                                  "src": "6835:14:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 6799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6835:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6800,
                              "nodeType": "ExpressionStatement",
                              "src": "6835:16:32"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6809,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6788,
                              "src": "6910:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6810,
                              "name": "_allocationPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6790,
                              "src": "6922:16:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 6808,
                            "name": "_updateToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6860,
                            "src": "6897:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint96)"
                            }
                          },
                          "id": 6811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6897:42:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6812,
                        "nodeType": "ExpressionStatement",
                        "src": "6897:42:32"
                      }
                    ]
                  },
                  "documentation": "@notice updates the given pool's reward tokens allocation point\n@param _poolToken the address of pool token\n@param _allocationPoint the allocation point (weight) for the given pool\n@param _updateAllFlag the flag whether we need to update all pools",
                  "id": 6814,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 6795,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 6794,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "6791:14:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6791:14:32"
                    }
                  ],
                  "name": "update",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6793,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6788,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6814,
                        "src": "6710:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6787,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6710:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6790,
                        "name": "_allocationPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 6814,
                        "src": "6732:23:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 6789,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "6732:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6792,
                        "name": "_updateAllFlag",
                        "nodeType": "VariableDeclaration",
                        "scope": 6814,
                        "src": "6759:19:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6791,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6759:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6706:75:32"
                  },
                  "returnParameters": {
                    "id": 6796,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6806:0:32"
                  },
                  "scope": 8295,
                  "src": "6691:252:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6859,
                    "nodeType": "Block",
                    "src": "7022:372:32",
                    "statements": [
                      {
                        "assignments": [
                          6822
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6822,
                            "name": "poolId",
                            "nodeType": "VariableDeclaration",
                            "scope": 6859,
                            "src": "7026:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6821,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7026:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 6826,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6824,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6816,
                              "src": "7054:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 6823,
                            "name": "_getPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8053,
                            "src": "7043:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 6825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7043:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7026:39:32"
                      },
                      {
                        "assignments": [
                          6828
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6828,
                            "name": "previousAllocationPoint",
                            "nodeType": "VariableDeclaration",
                            "scope": 6859,
                            "src": "7070:31:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6827,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7070:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 6833,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6829,
                              "name": "poolInfoList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8416,
                              "src": "7104:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 6831,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6830,
                              "name": "poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6822,
                              "src": "7117:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7104:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$8403_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref"
                            }
                          },
                          "id": 6832,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "allocationPoint",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8398,
                          "src": "7104:36:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7070:70:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6834,
                            "name": "totalAllocationPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8422,
                            "src": "7144:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6840,
                                "name": "_allocationPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6818,
                                "src": "7221:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6837,
                                    "name": "previousAllocationPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6828,
                                    "src": "7192:23:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6835,
                                    "name": "totalAllocationPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8422,
                                    "src": "7167:20:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6836,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42092,
                                  "src": "7167:24:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 6838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7167:49:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6839,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "7167:53:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7167:71:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7144:94:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6843,
                        "nodeType": "ExpressionStatement",
                        "src": "7144:94:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 6844,
                                "name": "poolInfoList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8416,
                                "src": "7242:12:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                                  "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                                }
                              },
                              "id": 6846,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 6845,
                                "name": "poolId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6822,
                                "src": "7255:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7242:20:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref"
                              }
                            },
                            "id": 6847,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "allocationPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8398,
                            "src": "7242:36:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 6848,
                            "name": "_allocationPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6818,
                            "src": "7281:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "7242:55:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 6850,
                        "nodeType": "ExpressionStatement",
                        "src": "7242:55:32"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6852,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "7324:3:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6853,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7324:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6854,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6816,
                              "src": "7336:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6855,
                              "name": "_allocationPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6818,
                              "src": "7348:16:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6856,
                              "name": "previousAllocationPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6828,
                              "src": "7366:23:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6851,
                            "name": "PoolTokenUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6420,
                            "src": "7307:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 6857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7307:83:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6858,
                        "nodeType": "EmitStatement",
                        "src": "7302:88:32"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 6860,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6819,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6816,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 6860,
                        "src": "6968:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6815,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6968:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6818,
                        "name": "_allocationPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 6860,
                        "src": "6988:23:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 6817,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "6988:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6967:45:32"
                  },
                  "returnParameters": {
                    "id": 6820,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7022:0:32"
                  },
                  "scope": 8295,
                  "src": "6946:448:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6924,
                    "nodeType": "Block",
                    "src": "7834:334:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6874,
                                  "name": "_poolTokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6863,
                                  "src": "7846:11:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 6875,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7846:18:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6876,
                                  "name": "_allocationPoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6866,
                                  "src": "7868:17:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint96_$dyn_calldata_ptr",
                                    "typeString": "uint96[] calldata"
                                  }
                                },
                                "id": 6877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7868:24:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7846:46:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "417272617973206d69736d61746368",
                              "id": 6879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7894:17:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ad0e3fa76f8553accd906a5c1ee0be44885145de84f3ec3dae7d59d1945a99e2",
                                "typeString": "literal_string \"Arrays mismatch\""
                              },
                              "value": "Arrays mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ad0e3fa76f8553accd906a5c1ee0be44885145de84f3ec3dae7d59d1945a99e2",
                                "typeString": "literal_string \"Arrays mismatch\""
                              }
                            ],
                            "id": 6873,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7838:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7838:74:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6881,
                        "nodeType": "ExpressionStatement",
                        "src": "7838:74:32"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 6882,
                          "name": "_updateAllFlag",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6868,
                          "src": "7921:14:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 6887,
                        "nodeType": "IfStatement",
                        "src": "7917:46:32",
                        "trueBody": {
                          "id": 6886,
                          "nodeType": "Block",
                          "src": "7937:26:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 6883,
                                  "name": "updateAllPools",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7173,
                                  "src": "7942:14:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 6884,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7942:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6885,
                              "nodeType": "ExpressionStatement",
                              "src": "7942:16:32"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          6889
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6889,
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 6924,
                            "src": "7966:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6888,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7966:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 6892,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6890,
                            "name": "_poolTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6863,
                            "src": "7983:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 6891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7983:18:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7966:35:32"
                      },
                      {
                        "body": {
                          "id": 6922,
                          "nodeType": "Block",
                          "src": "8042:123:32",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 6904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "8051:15:32",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 6903,
                                  "name": "_updateAllFlag",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6868,
                                  "src": "8052:14:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 6912,
                              "nodeType": "IfStatement",
                              "src": "8047:59:32",
                              "trueBody": {
                                "id": 6911,
                                "nodeType": "Block",
                                "src": "8068:38:32",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 6906,
                                            "name": "_poolTokens",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6863,
                                            "src": "8085:11:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                              "typeString": "address[] calldata"
                                            }
                                          },
                                          "id": 6908,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 6907,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6894,
                                            "src": "8097:1:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "8085:14:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 6905,
                                        "name": "updatePool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7189,
                                        "src": "8074:10:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                          "typeString": "function (address)"
                                        }
                                      },
                                      "id": 6909,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8074:26:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6910,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8074:26:32"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 6914,
                                      "name": "_poolTokens",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6863,
                                      "src": "8123:11:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 6916,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 6915,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6894,
                                      "src": "8135:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8123:14:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 6917,
                                      "name": "_allocationPoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6866,
                                      "src": "8139:17:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint96_$dyn_calldata_ptr",
                                        "typeString": "uint96[] calldata"
                                      }
                                    },
                                    "id": 6919,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 6918,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6894,
                                      "src": "8157:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8139:20:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  ],
                                  "id": 6913,
                                  "name": "_updateToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6860,
                                  "src": "8110:12:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint96_$returns$__$",
                                    "typeString": "function (address,uint96)"
                                  }
                                },
                                "id": 6920,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8110:50:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6921,
                              "nodeType": "ExpressionStatement",
                              "src": "8110:50:32"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6897,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6894,
                            "src": "8025:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 6898,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6889,
                            "src": "8029:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8025:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6923,
                        "initializationExpression": {
                          "assignments": [
                            6894
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 6894,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 6923,
                              "src": "8010:9:32",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 6893,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8010:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 6896,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6895,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8022:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8010:13:32"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 6901,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "8037:3:32",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 6900,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6894,
                              "src": "8037:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6902,
                          "nodeType": "ExpressionStatement",
                          "src": "8037:3:32"
                        },
                        "nodeType": "ForStatement",
                        "src": "8005:160:32"
                      }
                    ]
                  },
                  "documentation": "@notice updates the given pools' reward tokens allocation points\n@param _poolTokens array of addresses of pool tokens\n@param _allocationPoints array of allocation points (weight) for the given pools\n@param _updateAllFlag the flag whether we need to update all pools",
                  "id": 6925,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 6871,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 6870,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "7819:14:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7819:14:32"
                    }
                  ],
                  "name": "updateTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6869,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6863,
                        "name": "_poolTokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 6925,
                        "src": "7714:30:32",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6861,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7714:7:32",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 6862,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7714:9:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6866,
                        "name": "_allocationPoints",
                        "nodeType": "VariableDeclaration",
                        "scope": 6925,
                        "src": "7748:35:32",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint96_$dyn_calldata_ptr",
                          "typeString": "uint96[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6864,
                            "name": "uint96",
                            "nodeType": "ElementaryTypeName",
                            "src": "7748:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "id": 6865,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7748:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint96_$dyn_storage_ptr",
                            "typeString": "uint96[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6868,
                        "name": "_updateAllFlag",
                        "nodeType": "VariableDeclaration",
                        "scope": 6925,
                        "src": "7787:19:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6867,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7787:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7710:99:32"
                  },
                  "returnParameters": {
                    "id": 6872,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7834:0:32"
                  },
                  "scope": 8295,
                  "src": "7689:479:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6994,
                    "nodeType": "Block",
                    "src": "8457:378:32",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6936,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6934,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6927,
                            "src": "8465:5:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 6935,
                            "name": "startBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8407,
                            "src": "8473:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8465:18:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 6942,
                        "nodeType": "IfStatement",
                        "src": "8461:52:32",
                        "trueBody": {
                          "id": 6941,
                          "nodeType": "Block",
                          "src": "8485:28:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 6939,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 6937,
                                  "name": "_from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6927,
                                  "src": "8490:5:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 6938,
                                  "name": "startBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8407,
                                  "src": "8498:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8490:18:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6940,
                              "nodeType": "ExpressionStatement",
                              "src": "8490:18:32"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 6949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6943,
                              "name": "endBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8411,
                              "src": "8520:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8531:1:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "8520:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6948,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6946,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6929,
                              "src": "8536:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6947,
                              "name": "endBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8411,
                              "src": "8542:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8536:14:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8520:30:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 6955,
                        "nodeType": "IfStatement",
                        "src": "8516:60:32",
                        "trueBody": {
                          "id": 6954,
                          "nodeType": "Block",
                          "src": "8552:24:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 6952,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 6950,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6929,
                                  "src": "8557:3:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 6951,
                                  "name": "endBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8411,
                                  "src": "8563:8:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8557:14:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6953,
                              "nodeType": "ExpressionStatement",
                              "src": "8557:14:32"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6956,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6929,
                            "src": "8583:3:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 6957,
                            "name": "bonusEndBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8409,
                            "src": "8590:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8583:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6968,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6927,
                              "src": "8674:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6969,
                              "name": "bonusEndBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8409,
                              "src": "8683:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8674:22:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 6991,
                            "nodeType": "Block",
                            "src": "8735:97:32",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 6987,
                                          "name": "bonusEndBlock",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8409,
                                          "src": "8812:13:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6985,
                                          "name": "_to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6929,
                                          "src": "8804:3:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 6986,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42092,
                                        "src": "8804:7:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 6988,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8804:22:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 6982,
                                          "name": "BONUS_BLOCK_MULTIPLIER",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6393,
                                          "src": "8776:22:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 6979,
                                              "name": "_from",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6927,
                                              "src": "8765:5:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 6977,
                                              "name": "bonusEndBlock",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8409,
                                              "src": "8747:13:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6978,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 42092,
                                            "src": "8747:17:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 6980,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8747:24:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 6981,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "8747:28:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 6983,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8747:52:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6984,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "8747:56:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6989,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8747:80:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "functionReturnParameters": 6933,
                                "id": 6990,
                                "nodeType": "Return",
                                "src": "8740:87:32"
                              }
                            ]
                          },
                          "id": 6992,
                          "nodeType": "IfStatement",
                          "src": "8670:162:32",
                          "trueBody": {
                            "id": 6976,
                            "nodeType": "Block",
                            "src": "8698:31:32",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 6973,
                                      "name": "_from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6927,
                                      "src": "8718:5:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6971,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6929,
                                      "src": "8710:3:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6972,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "8710:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6974,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8710:14:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "functionReturnParameters": 6933,
                                "id": 6975,
                                "nodeType": "Return",
                                "src": "8703:21:32"
                              }
                            ]
                          }
                        },
                        "id": 6993,
                        "nodeType": "IfStatement",
                        "src": "8579:253:32",
                        "trueBody": {
                          "id": 6967,
                          "nodeType": "Block",
                          "src": "8605:59:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6964,
                                    "name": "BONUS_BLOCK_MULTIPLIER",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6393,
                                    "src": "8636:22:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 6961,
                                        "name": "_from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6927,
                                        "src": "8625:5:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6959,
                                        "name": "_to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6929,
                                        "src": "8617:3:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 6960,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42092,
                                      "src": "8617:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 6962,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8617:14:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6963,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "8617:18:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 6965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8617:42:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 6933,
                              "id": 6966,
                              "nodeType": "Return",
                              "src": "8610:49:32"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice returns reward multiplier over the given _from to _to block\n@param _from the first block for a calculation\n@param _to the last block for a calculation",
                  "id": 6995,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getPassedBlocksWithBonusMultiplier",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6930,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6927,
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6995,
                        "src": "8397:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6926,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8397:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6929,
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6995,
                        "src": "8412:11:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6928,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8412:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8396:28:32"
                  },
                  "returnParameters": {
                    "id": 6933,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6932,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 6995,
                        "src": "8448:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6931,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8448:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8447:9:32"
                  },
                  "scope": 8295,
                  "src": "8352:483:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7070,
                    "nodeType": "Block",
                    "src": "8937:579:32",
                    "statements": [
                      {
                        "assignments": [
                          7005
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7005,
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "scope": 7070,
                            "src": "8941:21:32",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7004,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8403,
                              "src": "8941:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7009,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7006,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "8965:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 7008,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7007,
                            "name": "_poolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6997,
                            "src": "8978:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8965:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8941:45:32"
                      },
                      {
                        "assignments": [
                          7011
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7011,
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "scope": 7070,
                            "src": "8990:21:32",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7010,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8394,
                              "src": "8990:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7017,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7012,
                              "name": "userInfoMap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8428,
                              "src": "9014:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct LiquidityMiningStorage.UserInfo storage ref))"
                              }
                            },
                            "id": 7014,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7013,
                              "name": "_poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6997,
                              "src": "9026:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9014:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$",
                              "typeString": "mapping(address => struct LiquidityMiningStorage.UserInfo storage ref)"
                            }
                          },
                          "id": 7016,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7015,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6999,
                            "src": "9035:5:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9014:27:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$8394_storage",
                            "typeString": "struct LiquidityMiningStorage.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8990:51:32"
                      },
                      {
                        "assignments": [
                          7019
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7019,
                            "name": "accumulatedRewardPerShare",
                            "nodeType": "VariableDeclaration",
                            "scope": 7070,
                            "src": "9046:33:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7018,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9046:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7022,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7020,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7005,
                            "src": "9082:4:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                            }
                          },
                          "id": 7021,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accumulatedRewardPerShare",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8402,
                          "src": "9082:30:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9046:66:32"
                      },
                      {
                        "assignments": [
                          7024
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7024,
                            "name": "poolTokenBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 7070,
                            "src": "9116:24:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7023,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9116:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7032,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7029,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45108,
                                  "src": "9176:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                    "typeString": "contract LiquidityMining"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                    "typeString": "contract LiquidityMining"
                                  }
                                ],
                                "id": 7028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9168:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 7030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9168:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7025,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7005,
                                "src": "9143:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                  "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                }
                              },
                              "id": 7026,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "poolToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8396,
                              "src": "9143:14:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 7027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24644,
                            "src": "9143:24:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 7031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9143:39:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9116:66:32"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 7041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7037,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7033,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "9190:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 7034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9190:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7035,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7005,
                                "src": "9205:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                  "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                }
                              },
                              "id": 7036,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8400,
                              "src": "9205:20:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9190:35:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7040,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 7038,
                              "name": "poolTokenBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7024,
                              "src": "9229:16:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 7039,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9249:1:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "9229:21:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9190:60:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 7056,
                        "nodeType": "IfStatement",
                        "src": "9186:238:32",
                        "trueBody": {
                          "id": 7055,
                          "nodeType": "Block",
                          "src": "9252:172:32",
                          "statements": [
                            {
                              "assignments": [
                                null,
                                7043
                              ],
                              "declarations": [
                                null,
                                {
                                  "constant": false,
                                  "id": 7043,
                                  "name": "accumulatedRewardPerShare_",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 7055,
                                  "src": "9260:34:32",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 7042,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9260:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 7047,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7045,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7005,
                                    "src": "9324:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                      "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                      "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                    }
                                  ],
                                  "id": 7044,
                                  "name": "_getPoolAccumulatedReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    7283,
                                    7351
                                  ],
                                  "referencedDeclaration": 7283,
                                  "src": "9298:25:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_PoolInfo_$8403_storage_ptr_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage pointer) view returns (uint256,uint256)"
                                  }
                                },
                                "id": 7046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9298:31:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9257:72:32"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7053,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 7048,
                                  "name": "accumulatedRewardPerShare",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7019,
                                  "src": "9334:25:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7051,
                                      "name": "accumulatedRewardPerShare_",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7043,
                                      "src": "9392:26:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7049,
                                      "name": "accumulatedRewardPerShare",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7019,
                                      "src": "9362:25:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7050,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "9362:29:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7052,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9362:57:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9334:85:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7054,
                              "nodeType": "ExpressionStatement",
                              "src": "9334:85:32"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7066,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7011,
                                "src": "9496:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                  "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                                }
                              },
                              "id": 7067,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rewardDebt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8391,
                              "src": "9496:15:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7063,
                                  "name": "PRECISION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6390,
                                  "src": "9481:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7060,
                                      "name": "accumulatedRewardPerShare",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7019,
                                      "src": "9450:25:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7057,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7011,
                                        "src": "9434:4:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                          "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                                        }
                                      },
                                      "id": 7058,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "amount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 8389,
                                      "src": "9434:11:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7059,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42153,
                                    "src": "9434:15:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7061,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9434:42:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7062,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42169,
                                "src": "9434:46:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9434:57:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7065,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "9434:61:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9434:78:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7003,
                        "id": 7069,
                        "nodeType": "Return",
                        "src": "9427:85:32"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 7071,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getUserAccumulatedReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7000,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6997,
                        "name": "_poolId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7071,
                        "src": "8873:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6996,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8873:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6999,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 7071,
                        "src": "8890:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6998,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8890:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8872:32:32"
                  },
                  "returnParameters": {
                    "id": 7003,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7002,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7071,
                        "src": "8928:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7001,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8928:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8927:9:32"
                  },
                  "scope": 8295,
                  "src": "8838:678:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7091,
                    "nodeType": "Block",
                    "src": "9751:98:32",
                    "statements": [
                      {
                        "assignments": [
                          7081
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7081,
                            "name": "poolId",
                            "nodeType": "VariableDeclaration",
                            "scope": 7091,
                            "src": "9755:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7080,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9755:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7085,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7083,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7073,
                              "src": "9783:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7082,
                            "name": "_getPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8053,
                            "src": "9772:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 7084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9772:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9755:39:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7087,
                              "name": "poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7081,
                              "src": "9831:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7088,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7075,
                              "src": "9839:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7086,
                            "name": "_getUserAccumulatedReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7071,
                            "src": "9805:25:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (uint256,address) view returns (uint256)"
                            }
                          },
                          "id": 7089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9805:40:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7079,
                        "id": 7090,
                        "nodeType": "Return",
                        "src": "9798:47:32"
                      }
                    ]
                  },
                  "documentation": "@notice returns accumulated reward\n@param _poolToken the address of pool token\n@param _user the user address",
                  "id": 7092,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserAccumulatedReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7076,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7073,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 7092,
                        "src": "9684:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7072,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9684:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7075,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 7092,
                        "src": "9704:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7074,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9704:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9683:35:32"
                  },
                  "returnParameters": {
                    "id": 7079,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7078,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7092,
                        "src": "9742:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7077,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9742:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9741:9:32"
                  },
                  "scope": 8295,
                  "src": "9650:199:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7147,
                    "nodeType": "Block",
                    "src": "10196:348:32",
                    "statements": [
                      {
                        "assignments": [
                          7104
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7104,
                            "name": "poolId",
                            "nodeType": "VariableDeclaration",
                            "scope": 7147,
                            "src": "10200:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7103,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10200:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7108,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7106,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7094,
                              "src": "10228:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7105,
                            "name": "_getPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8053,
                            "src": "10217:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 7107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10217:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10200:39:32"
                      },
                      {
                        "assignments": [
                          7110
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7110,
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "scope": 7147,
                            "src": "10243:21:32",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7109,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8403,
                              "src": "10243:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7114,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7111,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "10267:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 7113,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7112,
                            "name": "poolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7104,
                            "src": "10280:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10267:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10243:44:32"
                      },
                      {
                        "assignments": [
                          7116
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7116,
                            "name": "start",
                            "nodeType": "VariableDeclaration",
                            "scope": 7147,
                            "src": "10291:13:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7115,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10291:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7119,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7117,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44984,
                            "src": "10307:5:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 7118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10307:12:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10291:28:32"
                      },
                      {
                        "assignments": [
                          7121
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7121,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 7147,
                            "src": "10323:11:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7120,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10323:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7129,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7126,
                                  "name": "SECONDS_PER_BLOCK",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6396,
                                  "src": "10361:17:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7124,
                                  "name": "_duration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7098,
                                  "src": "10347:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7125,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42169,
                                "src": "10347:13:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10347:32:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7122,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7116,
                              "src": "10337:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42076,
                            "src": "10337:9:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10337:43:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10323:57:32"
                      },
                      {
                        "assignments": [
                          null,
                          7131
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 7131,
                            "name": "accumulatedRewardPerShare",
                            "nodeType": "VariableDeclaration",
                            "scope": 7147,
                            "src": "10387:33:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7130,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10387:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7138,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7133,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7110,
                              "src": "10450:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7134,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7096,
                              "src": "10456:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7135,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7116,
                              "src": "10465:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7136,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7121,
                              "src": "10472:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7132,
                            "name": "_getPoolAccumulatedReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              7283,
                              7351
                            ],
                            "referencedDeclaration": 7351,
                            "src": "10424:25:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_PoolInfo_$8403_storage_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage pointer,uint256,uint256,uint256) view returns (uint256,uint256)"
                            }
                          },
                          "id": 7137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10424:52:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10384:92:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7144,
                              "name": "PRECISION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6390,
                              "src": "10530:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7141,
                                  "name": "accumulatedRewardPerShare",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7131,
                                  "src": "10499:25:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7139,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7096,
                                  "src": "10487:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "10487:11:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10487:38:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "10487:42:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10487:53:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7102,
                        "id": 7146,
                        "nodeType": "Return",
                        "src": "10480:60:32"
                      }
                    ]
                  },
                  "documentation": "@notice returns estimated reward\n@param _poolToken the address of pool token\n@param _amount the amount of tokens to be deposited\n@param _duration the duration of liquidity providing in seconds",
                  "id": 7148,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getEstimatedReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7099,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7094,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 7148,
                        "src": "10102:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7093,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10102:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7096,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 7148,
                        "src": "10124:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7095,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10124:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7098,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 7148,
                        "src": "10143:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7097,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10143:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10098:65:32"
                  },
                  "returnParameters": {
                    "id": 7102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7101,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7148,
                        "src": "10187:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10187:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10186:9:32"
                  },
                  "scope": 8295,
                  "src": "10071:473:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7172,
                    "nodeType": "Block",
                    "src": "10679:108:32",
                    "statements": [
                      {
                        "assignments": [
                          7152
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7152,
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 7172,
                            "src": "10683:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7151,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10683:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7155,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7153,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "10700:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 7154,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10700:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10683:36:32"
                      },
                      {
                        "body": {
                          "id": 7170,
                          "nodeType": "Block",
                          "src": "10760:24:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7167,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7157,
                                    "src": "10777:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7166,
                                  "name": "_updatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7264,
                                  "src": "10765:11:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 7168,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10765:14:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7169,
                              "nodeType": "ExpressionStatement",
                              "src": "10765:14:32"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7160,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7157,
                            "src": "10743:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7161,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7152,
                            "src": "10747:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10743:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7171,
                        "initializationExpression": {
                          "assignments": [
                            7157
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 7157,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 7171,
                              "src": "10728:9:32",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 7156,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10728:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 7159,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7158,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10740:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "10728:13:32"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 7164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "10755:3:32",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 7163,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7157,
                              "src": "10755:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7165,
                          "nodeType": "ExpressionStatement",
                          "src": "10755:3:32"
                        },
                        "nodeType": "ForStatement",
                        "src": "10723:61:32"
                      }
                    ]
                  },
                  "documentation": "@notice Updates reward variables for all pools.\n@dev Be careful of gas spending!",
                  "id": 7173,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateAllPools",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7149,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10669:2:32"
                  },
                  "returnParameters": {
                    "id": 7150,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10679:0:32"
                  },
                  "scope": 8295,
                  "src": "10646:141:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7188,
                    "nodeType": "Block",
                    "src": "10967:70:32",
                    "statements": [
                      {
                        "assignments": [
                          7179
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7179,
                            "name": "poolId",
                            "nodeType": "VariableDeclaration",
                            "scope": 7188,
                            "src": "10971:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7178,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10971:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7183,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7181,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7175,
                              "src": "10999:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7180,
                            "name": "_getPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8053,
                            "src": "10988:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 7182,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10988:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10971:39:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7185,
                              "name": "poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7179,
                              "src": "11026:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7184,
                            "name": "_updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7264,
                            "src": "11014:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 7186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11014:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7187,
                        "nodeType": "ExpressionStatement",
                        "src": "11014:19:32"
                      }
                    ]
                  },
                  "documentation": "@notice Updates reward variables of the given pool to be up-to-date\n@param _poolToken the address of pool token",
                  "id": 7189,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updatePool",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7176,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7175,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 7189,
                        "src": "10940:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7174,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10940:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10939:20:32"
                  },
                  "returnParameters": {
                    "id": 7177,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10967:0:32"
                  },
                  "scope": 8295,
                  "src": "10920:117:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7263,
                    "nodeType": "Block",
                    "src": "11087:619:32",
                    "statements": [
                      {
                        "assignments": [
                          7195
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7195,
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "scope": 7263,
                            "src": "11091:21:32",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7194,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8403,
                              "src": "11091:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7199,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7196,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "11115:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 7198,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7197,
                            "name": "_poolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7191,
                            "src": "11128:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11115:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11091:45:32"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7200,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44984,
                              "src": "11185:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 7201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11185:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7202,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7195,
                              "src": "11201:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            },
                            "id": 7203,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastRewardBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8400,
                            "src": "11201:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11185:36:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 7207,
                        "nodeType": "IfStatement",
                        "src": "11181:58:32",
                        "trueBody": {
                          "id": 7206,
                          "nodeType": "Block",
                          "src": "11223:16:32",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 7193,
                              "id": 7205,
                              "nodeType": "Return",
                              "src": "11228:7:32"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          7209
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7209,
                            "name": "poolTokenBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 7263,
                            "src": "11243:24:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7208,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11243:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7217,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7214,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45108,
                                  "src": "11303:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                    "typeString": "contract LiquidityMining"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                    "typeString": "contract LiquidityMining"
                                  }
                                ],
                                "id": 7213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11295:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 7215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11295:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7210,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7195,
                                "src": "11270:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                  "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                }
                              },
                              "id": 7211,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "poolToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8396,
                              "src": "11270:14:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 7212,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24644,
                            "src": "11270:24:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 7216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11270:39:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11243:66:32"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7218,
                            "name": "poolTokenBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7209,
                            "src": "11317:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11337:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11317:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 7230,
                        "nodeType": "IfStatement",
                        "src": "11313:83:32",
                        "trueBody": {
                          "id": 7229,
                          "nodeType": "Block",
                          "src": "11340:56:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7221,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7195,
                                    "src": "11345:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                      "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                    }
                                  },
                                  "id": 7223,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "lastRewardBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8400,
                                  "src": "11345:20:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7224,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44984,
                                    "src": "11368:5:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 7225,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "number",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "11368:12:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11345:35:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7227,
                              "nodeType": "ExpressionStatement",
                              "src": "11345:35:32"
                            },
                            {
                              "expression": null,
                              "functionReturnParameters": 7193,
                              "id": 7228,
                              "nodeType": "Return",
                              "src": "11385:7:32"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          7232,
                          7234
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7232,
                            "name": "accumulatedReward_",
                            "nodeType": "VariableDeclaration",
                            "scope": 7263,
                            "src": "11401:26:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7231,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11401:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7234,
                            "name": "accumulatedRewardPerShare_",
                            "nodeType": "VariableDeclaration",
                            "scope": 7263,
                            "src": "11429:34:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7233,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11429:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7238,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7236,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7195,
                              "src": "11493:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            ],
                            "id": 7235,
                            "name": "_getPoolAccumulatedReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              7283,
                              7351
                            ],
                            "referencedDeclaration": 7283,
                            "src": "11467:25:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_PoolInfo_$8403_storage_ptr_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage pointer) view returns (uint256,uint256)"
                            }
                          },
                          "id": 7237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11467:31:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11400:98:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7239,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7195,
                              "src": "11502:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            },
                            "id": 7241,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "accumulatedRewardPerShare",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8402,
                            "src": "11502:30:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7245,
                                "name": "accumulatedRewardPerShare_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7234,
                                "src": "11570:26:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7242,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7195,
                                  "src": "11535:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                    "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                  }
                                },
                                "id": 7243,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "accumulatedRewardPerShare",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8402,
                                "src": "11535:30:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "11535:34:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11535:62:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11502:95:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7248,
                        "nodeType": "ExpressionStatement",
                        "src": "11502:95:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7249,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7195,
                              "src": "11601:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            },
                            "id": 7251,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "lastRewardBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8400,
                            "src": "11601:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7252,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44984,
                              "src": "11624:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 7253,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11624:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11601:35:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7255,
                        "nodeType": "ExpressionStatement",
                        "src": "11601:35:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7256,
                            "name": "totalUsersBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8430,
                            "src": "11641:17:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7259,
                                "name": "accumulatedReward_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7232,
                                "src": "11683:18:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7257,
                                "name": "totalUsersBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8430,
                                "src": "11661:17:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "11661:21:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7260,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11661:41:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11641:61:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7262,
                        "nodeType": "ExpressionStatement",
                        "src": "11641:61:32"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 7264,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updatePool",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7191,
                        "name": "_poolId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7264,
                        "src": "11061:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7190,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11061:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11060:17:32"
                  },
                  "returnParameters": {
                    "id": 7193,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11087:0:32"
                  },
                  "scope": 8295,
                  "src": "11040:666:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7282,
                    "nodeType": "Block",
                    "src": "11809:87:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7274,
                              "name": "_pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7266,
                              "src": "11846:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 7275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11853:1:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7276,
                                "name": "_pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7266,
                                "src": "11856:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                  "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                }
                              },
                              "id": 7277,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8400,
                              "src": "11856:21:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7278,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "11879:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 7279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11879:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7273,
                            "name": "_getPoolAccumulatedReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              7283,
                              7351
                            ],
                            "referencedDeclaration": 7351,
                            "src": "11820:25:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_PoolInfo_$8403_storage_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage pointer,uint256,uint256,uint256) view returns (uint256,uint256)"
                            }
                          },
                          "id": 7280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11820:72:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 7272,
                        "id": 7281,
                        "nodeType": "Return",
                        "src": "11813:79:32"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 7283,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getPoolAccumulatedReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7267,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7266,
                        "name": "_pool",
                        "nodeType": "VariableDeclaration",
                        "scope": 7283,
                        "src": "11744:22:32",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                          "typeString": "struct LiquidityMiningStorage.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7265,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 8403,
                          "src": "11744:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11743:24:32"
                  },
                  "returnParameters": {
                    "id": 7272,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7269,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7283,
                        "src": "11791:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7268,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11791:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7271,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7283,
                        "src": "11800:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7270,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11800:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11790:18:32"
                  },
                  "scope": 8295,
                  "src": "11709:187:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7350,
                    "nodeType": "Block",
                    "src": "12077:498:32",
                    "statements": [
                      {
                        "assignments": [
                          7299
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7299,
                            "name": "passedBlocks",
                            "nodeType": "VariableDeclaration",
                            "scope": 7350,
                            "src": "12081:20:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7298,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12081:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7304,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7301,
                              "name": "_startBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7289,
                              "src": "12140:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7302,
                              "name": "_endBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7291,
                              "src": "12153:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7300,
                            "name": "_getPassedBlocksWithBonusMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6995,
                            "src": "12104:35:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view returns (uint256)"
                            }
                          },
                          "id": 7303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12104:59:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12081:82:32"
                      },
                      {
                        "assignments": [
                          7306
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7306,
                            "name": "accumulatedReward",
                            "nodeType": "VariableDeclaration",
                            "scope": 7350,
                            "src": "12167:25:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7305,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12167:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7318,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7316,
                              "name": "totalAllocationPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8422,
                              "src": "12265:20:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7312,
                                    "name": "_pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7285,
                                    "src": "12238:5:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                      "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                    }
                                  },
                                  "id": 7313,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "allocationPoint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8398,
                                  "src": "12238:21:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7309,
                                      "name": "rewardTokensPerBlock",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8405,
                                      "src": "12212:20:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7307,
                                      "name": "passedBlocks",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7299,
                                      "src": "12195:12:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7308,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42153,
                                    "src": "12195:16:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7310,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12195:38:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "12195:42:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12195:65:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7315,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "12195:69:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12195:91:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12167:119:32"
                      },
                      {
                        "assignments": [
                          7320
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7320,
                            "name": "poolTokenBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 7350,
                            "src": "12291:24:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7319,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12291:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7328,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7325,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45108,
                                  "src": "12352:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                    "typeString": "contract LiquidityMining"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                    "typeString": "contract LiquidityMining"
                                  }
                                ],
                                "id": 7324,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12344:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 7326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12344:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7321,
                                "name": "_pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7285,
                                "src": "12318:5:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                  "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                }
                              },
                              "id": 7322,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "poolToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8396,
                              "src": "12318:15:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 7323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24644,
                            "src": "12318:25:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 7327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12318:40:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12291:67:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7329,
                            "name": "poolTokenBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7320,
                            "src": "12362:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7332,
                                "name": "_additionalAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7287,
                                "src": "12402:17:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7330,
                                "name": "poolTokenBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7320,
                                "src": "12381:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "12381:20:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12381:39:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12362:58:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7335,
                        "nodeType": "ExpressionStatement",
                        "src": "12362:58:32"
                      },
                      {
                        "assignments": [
                          7337
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7337,
                            "name": "accumulatedRewardPerShare",
                            "nodeType": "VariableDeclaration",
                            "scope": 7350,
                            "src": "12424:33:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7336,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12424:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7345,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7343,
                              "name": "poolTokenBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7320,
                              "src": "12497:16:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7340,
                                  "name": "PRECISION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6390,
                                  "src": "12482:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7338,
                                  "name": "accumulatedReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7306,
                                  "src": "12460:17:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "12460:21:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7341,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12460:32:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "12460:36:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12460:54:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12424:90:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 7346,
                              "name": "accumulatedReward",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7306,
                              "src": "12526:17:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7347,
                              "name": "accumulatedRewardPerShare",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7337,
                              "src": "12545:25:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 7348,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "12525:46:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 7297,
                        "id": 7349,
                        "nodeType": "Return",
                        "src": "12518:53:32"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 7351,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getPoolAccumulatedReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7292,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7285,
                        "name": "_pool",
                        "nodeType": "VariableDeclaration",
                        "scope": 7351,
                        "src": "11937:22:32",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                          "typeString": "struct LiquidityMiningStorage.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7284,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 8403,
                          "src": "11937:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7287,
                        "name": "_additionalAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 7351,
                        "src": "11963:25:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7286,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11963:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7289,
                        "name": "_startBlock",
                        "nodeType": "VariableDeclaration",
                        "scope": 7351,
                        "src": "11992:19:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7288,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11992:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7291,
                        "name": "_endBlock",
                        "nodeType": "VariableDeclaration",
                        "scope": 7351,
                        "src": "12015:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7290,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12015:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11933:102:32"
                  },
                  "returnParameters": {
                    "id": 7297,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7294,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7351,
                        "src": "12059:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7293,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12059:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7296,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7351,
                        "src": "12068:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7295,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12068:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12058:18:32"
                  },
                  "scope": 8295,
                  "src": "11899:676:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7367,
                    "nodeType": "Block",
                    "src": "12887:51:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7361,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7353,
                              "src": "12900:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7362,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7355,
                              "src": "12912:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7363,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7357,
                              "src": "12921:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 7364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12928:5:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 7360,
                            "name": "_deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7490,
                            "src": "12891:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 7365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12891:43:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7366,
                        "nodeType": "ExpressionStatement",
                        "src": "12891:43:32"
                      }
                    ]
                  },
                  "documentation": "@notice deposits pool tokens\n@param _poolToken the address of pool token\n@param _amount the amount of pool tokens\n@param _user the address of user, tokens will be deposited to it or to msg.sender",
                  "id": 7368,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7353,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 7368,
                        "src": "12820:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7352,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12820:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7355,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 7368,
                        "src": "12842:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7354,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12842:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7357,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 7368,
                        "src": "12861:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7356,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12861:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12816:61:32"
                  },
                  "returnParameters": {
                    "id": 7359,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12887:0:32"
                  },
                  "scope": 8295,
                  "src": "12800:138:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7383,
                    "nodeType": "Block",
                    "src": "13260:154:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7376,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "13377:3:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 7377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13377:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7378,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7372,
                              "src": "13389:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7379,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7370,
                              "src": "13398:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 7380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13405:4:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 7375,
                            "name": "_deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7490,
                            "src": "13368:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 7381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13368:42:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7382,
                        "nodeType": "ExpressionStatement",
                        "src": "13368:42:32"
                      }
                    ]
                  },
                  "documentation": "@notice if the lending pools directly mint/transfer tokens to this address, process it like a user deposit\n@dev only callable by the pool which issues the tokens\n@param _user the user address\n@param _amount the minted amount",
                  "id": 7384,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onTokensDeposited",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7373,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7370,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 7384,
                        "src": "13219:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7369,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13219:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7372,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 7384,
                        "src": "13234:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7371,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13234:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13218:32:32"
                  },
                  "returnParameters": {
                    "id": 7374,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13260:0:32"
                  },
                  "scope": 8295,
                  "src": "13192:222:32",
                  "stateMutability": "nonpayable",
                  "superFunction": 6359,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7489,
                    "nodeType": "Block",
                    "src": "13845:718:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 7396,
                                  "name": "poolIdList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8420,
                                  "src": "13857:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 7398,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 7397,
                                  "name": "_poolToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7386,
                                  "src": "13868:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13857:22:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7399,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13883:1:32",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13857:27:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506f6f6c20746f6b656e206e6f7420666f756e64",
                              "id": 7401,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13886:22:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_25ad04c890f2bad24bd5012af460f4eec690504a7bc1baaf3dcc05140f8c0fe3",
                                "typeString": "literal_string \"Pool token not found\""
                              },
                              "value": "Pool token not found"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_25ad04c890f2bad24bd5012af460f4eec690504a7bc1baaf3dcc05140f8c0fe3",
                                "typeString": "literal_string \"Pool token not found\""
                              }
                            ],
                            "id": 7395,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13849:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13849:60:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7403,
                        "nodeType": "ExpressionStatement",
                        "src": "13849:60:32"
                      },
                      {
                        "assignments": [
                          7405
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7405,
                            "name": "userAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 7489,
                            "src": "13913:19:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7404,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "13913:7:32",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7415,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 7410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 7406,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7390,
                              "src": "13935:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 7408,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13952:1:32",
                                  "subdenomination": null,
                                  "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": 7407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13944:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 7409,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13944:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "13935:19:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7412,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "13965:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 7413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13965:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "id": 7414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "13935:40:32",
                          "trueExpression": {
                            "argumentTypes": null,
                            "id": 7411,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7390,
                            "src": "13957:5:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13913:62:32"
                      },
                      {
                        "assignments": [
                          7417
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7417,
                            "name": "poolId",
                            "nodeType": "VariableDeclaration",
                            "scope": 7489,
                            "src": "13980:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7416,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13980:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7421,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7419,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7386,
                              "src": "14008:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7418,
                            "name": "_getPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8053,
                            "src": "13997:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 7420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13997:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13980:39:32"
                      },
                      {
                        "assignments": [
                          7423
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7423,
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "scope": 7489,
                            "src": "14023:21:32",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7422,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8403,
                              "src": "14023:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7427,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7424,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "14047:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 7426,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7425,
                            "name": "poolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7417,
                            "src": "14060:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14047:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14023:44:32"
                      },
                      {
                        "assignments": [
                          7429
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7429,
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "scope": 7489,
                            "src": "14071:21:32",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7428,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8394,
                              "src": "14071:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7435,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7430,
                              "name": "userInfoMap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8428,
                              "src": "14095:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct LiquidityMiningStorage.UserInfo storage ref))"
                              }
                            },
                            "id": 7432,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7431,
                              "name": "poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7417,
                              "src": "14107:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14095:19:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$",
                              "typeString": "mapping(address => struct LiquidityMiningStorage.UserInfo storage ref)"
                            }
                          },
                          "id": 7434,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7433,
                            "name": "userAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7405,
                            "src": "14115:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14095:32:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$8394_storage",
                            "typeString": "struct LiquidityMiningStorage.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14071:56:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7437,
                              "name": "poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7417,
                              "src": "14144:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7436,
                            "name": "_updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7264,
                            "src": "14132:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 7438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14132:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7439,
                        "nodeType": "ExpressionStatement",
                        "src": "14132:19:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7441,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7423,
                              "src": "14207:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7442,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7429,
                              "src": "14213:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            ],
                            "id": 7440,
                            "name": "_updateReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7810,
                            "src": "14193:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PoolInfo_$8403_storage_ptr_$_t_struct$_UserInfo_$8394_storage_ptr_$returns$__$",
                              "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage pointer,struct LiquidityMiningStorage.UserInfo storage pointer)"
                            }
                          },
                          "id": 7443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14193:25:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7444,
                        "nodeType": "ExpressionStatement",
                        "src": "14193:25:32"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7445,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7388,
                            "src": "14227:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7446,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14237:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14227:11:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 7477,
                        "nodeType": "IfStatement",
                        "src": "14223:254:32",
                        "trueBody": {
                          "id": 7476,
                          "nodeType": "Block",
                          "src": "14240:237:32",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 7449,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "14332:19:32",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 7448,
                                  "name": "alreadyTransferred",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7392,
                                  "src": "14333:18:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 7465,
                              "nodeType": "IfStatement",
                              "src": "14328:101:32",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 7456,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44994,
                                            "src": "14393:3:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 7457,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "14393:10:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        ],
                                        "id": 7455,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "14385:7:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 7458,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14385:19:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 7460,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 45108,
                                          "src": "14414:4:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                            "typeString": "contract LiquidityMining"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                            "typeString": "contract LiquidityMining"
                                          }
                                        ],
                                        "id": 7459,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "14406:7:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 7461,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14406:13:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 7462,
                                      "name": "_amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7388,
                                      "src": "14421:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7450,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7423,
                                        "src": "14353:4:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                          "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                        }
                                      },
                                      "id": 7453,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "poolToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 8396,
                                      "src": "14353:14:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 7454,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "safeTransferFrom",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 41887,
                                    "src": "14353:31:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                                      "typeString": "function (contract IERC20,address,address,uint256)"
                                    }
                                  },
                                  "id": 7463,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14353:76:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 7464,
                                "nodeType": "ExpressionStatement",
                                "src": "14353:76:32"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7474,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7466,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7429,
                                    "src": "14434:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                      "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 7468,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "amount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8389,
                                  "src": "14434:11:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7472,
                                      "name": "_amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7388,
                                      "src": "14464:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7469,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7429,
                                        "src": "14448:4:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                          "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                                        }
                                      },
                                      "id": 7470,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "amount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 8389,
                                      "src": "14448:11:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7471,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "14448:15:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7473,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14448:24:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14434:38:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7475,
                              "nodeType": "ExpressionStatement",
                              "src": "14434:38:32"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7479,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7423,
                              "src": "14498:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7480,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7429,
                              "src": "14504:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            ],
                            "id": 7478,
                            "name": "_updateRewardDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7832,
                            "src": "14480:17:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PoolInfo_$8403_storage_ptr_$_t_struct$_UserInfo_$8394_storage_ptr_$returns$__$",
                              "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage pointer,struct LiquidityMiningStorage.UserInfo storage pointer)"
                            }
                          },
                          "id": 7481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14480:29:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7482,
                        "nodeType": "ExpressionStatement",
                        "src": "14480:29:32"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7484,
                              "name": "userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7405,
                              "src": "14526:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7485,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7386,
                              "src": "14539:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7486,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7388,
                              "src": "14551:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7483,
                            "name": "Deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6428,
                            "src": "14518:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 7487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14518:41:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7488,
                        "nodeType": "EmitStatement",
                        "src": "14513:46:32"
                      }
                    ]
                  },
                  "documentation": "@notice internal function for depositing pool tokens\n@param _poolToken the address of pool token\n@param _amount the amount of pool tokens\n@param _user the address of user, tokens will be deposited to it\n@param alreadyTransferred true if the pool tokens have already been transferred",
                  "id": 7490,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_deposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7386,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 7490,
                        "src": "13751:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7385,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13751:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7388,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 7490,
                        "src": "13773:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13773:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7390,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 7490,
                        "src": "13792:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7389,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13792:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7392,
                        "name": "alreadyTransferred",
                        "nodeType": "VariableDeclaration",
                        "scope": 7490,
                        "src": "13809:23:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7391,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13809:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13747:88:32"
                  },
                  "returnParameters": {
                    "id": 7394,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13845:0:32"
                  },
                  "scope": 8295,
                  "src": "13730:833:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7515,
                    "nodeType": "Block",
                    "src": "14824:139:32",
                    "statements": [
                      {
                        "assignments": [
                          7498
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7498,
                            "name": "userAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 7515,
                            "src": "14828:19:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7497,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "14828:7:32",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7502,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7500,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7494,
                              "src": "14866:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7499,
                            "name": "_getUserAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7770,
                            "src": "14850:15:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                              "typeString": "function (address) view returns (address)"
                            }
                          },
                          "id": 7501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14850:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14828:44:32"
                      },
                      {
                        "assignments": [
                          7504
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7504,
                            "name": "poolId",
                            "nodeType": "VariableDeclaration",
                            "scope": 7515,
                            "src": "14877:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7503,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14877:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7508,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7506,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7492,
                              "src": "14905:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7505,
                            "name": "_getPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8053,
                            "src": "14894:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 7507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14894:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14877:39:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7510,
                              "name": "poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7504,
                              "src": "14933:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7511,
                              "name": "userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7498,
                              "src": "14941:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 7512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14954:4:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 7509,
                            "name": "_claimReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7565,
                            "src": "14920:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,address,bool)"
                            }
                          },
                          "id": 7513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14920:39:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7514,
                        "nodeType": "ExpressionStatement",
                        "src": "14920:39:32"
                      }
                    ]
                  },
                  "documentation": "@notice transfers reward tokens\n@param _poolToken the address of pool token\n@param _user the address of user to claim reward from (can be passed only by wrapper contract)",
                  "id": 7516,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7495,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7492,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 7516,
                        "src": "14780:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7491,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14780:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7494,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 7516,
                        "src": "14800:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7493,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14800:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14779:35:32"
                  },
                  "returnParameters": {
                    "id": 7496,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14824:0:32"
                  },
                  "scope": 8295,
                  "src": "14759:204:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7564,
                    "nodeType": "Block",
                    "src": "15068:290:32",
                    "statements": [
                      {
                        "assignments": [
                          7526
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7526,
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "scope": 7564,
                            "src": "15072:21:32",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7525,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8403,
                              "src": "15072:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7530,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7527,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "15096:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 7529,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7528,
                            "name": "_poolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7518,
                            "src": "15109:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15096:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15072:45:32"
                      },
                      {
                        "assignments": [
                          7532
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7532,
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "scope": 7564,
                            "src": "15121:21:32",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7531,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8394,
                              "src": "15121:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7538,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7533,
                              "name": "userInfoMap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8428,
                              "src": "15145:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct LiquidityMiningStorage.UserInfo storage ref))"
                              }
                            },
                            "id": 7535,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7534,
                              "name": "_poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7518,
                              "src": "15157:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15145:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$",
                              "typeString": "mapping(address => struct LiquidityMiningStorage.UserInfo storage ref)"
                            }
                          },
                          "id": 7537,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7536,
                            "name": "_userAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7520,
                            "src": "15166:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15145:34:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$8394_storage",
                            "typeString": "struct LiquidityMiningStorage.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15121:58:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7540,
                              "name": "_poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7518,
                              "src": "15196:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7539,
                            "name": "_updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7264,
                            "src": "15184:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 7541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15184:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7542,
                        "nodeType": "ExpressionStatement",
                        "src": "15184:20:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7544,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7526,
                              "src": "15222:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7545,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7532,
                              "src": "15228:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            ],
                            "id": 7543,
                            "name": "_updateReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7810,
                            "src": "15208:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PoolInfo_$8403_storage_ptr_$_t_struct$_UserInfo_$8394_storage_ptr_$returns$__$",
                              "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage pointer,struct LiquidityMiningStorage.UserInfo storage pointer)"
                            }
                          },
                          "id": 7546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15208:25:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7547,
                        "nodeType": "ExpressionStatement",
                        "src": "15208:25:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7550,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7526,
                                    "src": "15261:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                      "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                    }
                                  },
                                  "id": 7551,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "poolToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8396,
                                  "src": "15261:14:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 7549,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15253:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 7552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15253:23:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7553,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7532,
                              "src": "15278:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7554,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7520,
                              "src": "15284:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7555,
                              "name": "_isStakingTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7522,
                              "src": "15298:16:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 7556,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15316:4:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 7548,
                            "name": "_transferReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7919,
                            "src": "15237:15:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_UserInfo_$8394_storage_ptr_$_t_address_$_t_bool_$_t_bool_$returns$__$",
                              "typeString": "function (address,struct LiquidityMiningStorage.UserInfo storage pointer,address,bool,bool)"
                            }
                          },
                          "id": 7557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15237:84:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7558,
                        "nodeType": "ExpressionStatement",
                        "src": "15237:84:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7560,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7526,
                              "src": "15343:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7561,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7532,
                              "src": "15349:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            ],
                            "id": 7559,
                            "name": "_updateRewardDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7832,
                            "src": "15325:17:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PoolInfo_$8403_storage_ptr_$_t_struct$_UserInfo_$8394_storage_ptr_$returns$__$",
                              "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage pointer,struct LiquidityMiningStorage.UserInfo storage pointer)"
                            }
                          },
                          "id": 7562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15325:29:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7563,
                        "nodeType": "ExpressionStatement",
                        "src": "15325:29:32"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 7565,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_claimReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7523,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7518,
                        "name": "_poolId",
                        "nodeType": "VariableDeclaration",
                        "scope": 7565,
                        "src": "14991:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7517,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14991:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7520,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 7565,
                        "src": "15010:20:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7519,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15010:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7522,
                        "name": "_isStakingTokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 7565,
                        "src": "15034:21:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7521,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15034:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14987:71:32"
                  },
                  "returnParameters": {
                    "id": 7524,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15068:0:32"
                  },
                  "scope": 8295,
                  "src": "14966:392:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7609,
                    "nodeType": "Block",
                    "src": "15578:259:32",
                    "statements": [
                      {
                        "assignments": [
                          7571
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7571,
                            "name": "userAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 7609,
                            "src": "15582:19:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7570,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "15582:7:32",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7575,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7573,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7567,
                              "src": "15620:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7572,
                            "name": "_getUserAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7770,
                            "src": "15604:15:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                              "typeString": "function (address) view returns (address)"
                            }
                          },
                          "id": 7574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15604:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15582:44:32"
                      },
                      {
                        "assignments": [
                          7577
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7577,
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 7609,
                            "src": "15631:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7576,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15631:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7580,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7578,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "15648:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 7579,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "15648:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15631:36:32"
                      },
                      {
                        "body": {
                          "id": 7601,
                          "nodeType": "Block",
                          "src": "15708:73:32",
                          "statements": [
                            {
                              "assignments": [
                                7592
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 7592,
                                  "name": "poolId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 7601,
                                  "src": "15713:14:32",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 7591,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15713:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 7594,
                              "initialValue": {
                                "argumentTypes": null,
                                "id": 7593,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7582,
                                "src": "15730:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15713:18:32"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7596,
                                    "name": "poolId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7592,
                                    "src": "15749:6:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7597,
                                    "name": "userAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7571,
                                    "src": "15757:11:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "66616c7365",
                                    "id": 7598,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15770:5:32",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 7595,
                                  "name": "_claimReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7565,
                                  "src": "15736:12:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (uint256,address,bool)"
                                  }
                                },
                                "id": 7599,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15736:40:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7600,
                              "nodeType": "ExpressionStatement",
                              "src": "15736:40:32"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7585,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7582,
                            "src": "15691:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7586,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7577,
                            "src": "15695:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15691:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7602,
                        "initializationExpression": {
                          "assignments": [
                            7582
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 7582,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 7602,
                              "src": "15676:9:32",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 7581,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15676:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 7584,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7583,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15688:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15676:13:32"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 7589,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "15703:3:32",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 7588,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7582,
                              "src": "15703:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7590,
                          "nodeType": "ExpressionStatement",
                          "src": "15703:3:32"
                        },
                        "nodeType": "ForStatement",
                        "src": "15671:110:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7606,
                              "name": "userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7571,
                              "src": "15821:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7603,
                              "name": "lockedSOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8434,
                              "src": "15784:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                "typeString": "contract ILockedSOV"
                              }
                            },
                            "id": 7605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdrawAndStakeTokensFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25582,
                            "src": "15784:36:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 7607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15784:49:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7608,
                        "nodeType": "ExpressionStatement",
                        "src": "15784:49:32"
                      }
                    ]
                  },
                  "documentation": "@notice transfers reward tokens from all pools\n@param _user the address of user to claim reward from (can be passed only by wrapper contract)",
                  "id": 7610,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimRewardFromAllPools",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7568,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7567,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 7610,
                        "src": "15554:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7566,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15554:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15553:15:32"
                  },
                  "returnParameters": {
                    "id": 7569,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15578:0:32"
                  },
                  "scope": 8295,
                  "src": "15521:316:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7728,
                    "nodeType": "Block",
                    "src": "16205:848:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 7620,
                                  "name": "poolIdList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8420,
                                  "src": "16217:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 7622,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 7621,
                                  "name": "_poolToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7612,
                                  "src": "16228:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16217:22:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7623,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16243:1:32",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "16217:27:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506f6f6c20746f6b656e206e6f7420666f756e64",
                              "id": 7625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16246:22:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_25ad04c890f2bad24bd5012af460f4eec690504a7bc1baaf3dcc05140f8c0fe3",
                                "typeString": "literal_string \"Pool token not found\""
                              },
                              "value": "Pool token not found"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_25ad04c890f2bad24bd5012af460f4eec690504a7bc1baaf3dcc05140f8c0fe3",
                                "typeString": "literal_string \"Pool token not found\""
                              }
                            ],
                            "id": 7619,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "16209:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16209:60:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7627,
                        "nodeType": "ExpressionStatement",
                        "src": "16209:60:32"
                      },
                      {
                        "assignments": [
                          7629
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7629,
                            "name": "userAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 7728,
                            "src": "16273:19:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7628,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16273:7:32",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7633,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7631,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7616,
                              "src": "16311:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7630,
                            "name": "_getUserAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7770,
                            "src": "16295:15:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                              "typeString": "function (address) view returns (address)"
                            }
                          },
                          "id": 7632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16295:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16273:44:32"
                      },
                      {
                        "assignments": [
                          7635
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7635,
                            "name": "poolId",
                            "nodeType": "VariableDeclaration",
                            "scope": 7728,
                            "src": "16322:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7634,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16322:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7639,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7637,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7612,
                              "src": "16350:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7636,
                            "name": "_getPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8053,
                            "src": "16339:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 7638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16339:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16322:39:32"
                      },
                      {
                        "assignments": [
                          7641
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7641,
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "scope": 7728,
                            "src": "16365:21:32",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7640,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8403,
                              "src": "16365:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7645,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7642,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "16389:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 7644,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7643,
                            "name": "poolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7635,
                            "src": "16402:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16389:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16365:44:32"
                      },
                      {
                        "assignments": [
                          7647
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7647,
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "scope": 7728,
                            "src": "16413:21:32",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7646,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8394,
                              "src": "16413:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7653,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7648,
                              "name": "userInfoMap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8428,
                              "src": "16437:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct LiquidityMiningStorage.UserInfo storage ref))"
                              }
                            },
                            "id": 7650,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7649,
                              "name": "poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7635,
                              "src": "16449:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16437:19:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$",
                              "typeString": "mapping(address => struct LiquidityMiningStorage.UserInfo storage ref)"
                            }
                          },
                          "id": 7652,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7651,
                            "name": "userAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7629,
                            "src": "16457:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16437:32:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$8394_storage",
                            "typeString": "struct LiquidityMiningStorage.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16413:56:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7655,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7647,
                                  "src": "16481:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                    "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                                  }
                                },
                                "id": 7656,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8389,
                                "src": "16481:11:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7657,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7614,
                                "src": "16496:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "16481:22:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4e6f7420656e6f7567682062616c616e6365",
                              "id": 7659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16505:20:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad",
                                "typeString": "literal_string \"Not enough balance\""
                              },
                              "value": "Not enough balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad",
                                "typeString": "literal_string \"Not enough balance\""
                              }
                            ],
                            "id": 7654,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "16473:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16473:53:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7661,
                        "nodeType": "ExpressionStatement",
                        "src": "16473:53:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7663,
                              "name": "poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7635,
                              "src": "16543:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7662,
                            "name": "_updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7264,
                            "src": "16531:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 7664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16531:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7665,
                        "nodeType": "ExpressionStatement",
                        "src": "16531:19:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7667,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7641,
                              "src": "16568:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7668,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7647,
                              "src": "16574:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            ],
                            "id": 7666,
                            "name": "_updateReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7810,
                            "src": "16554:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PoolInfo_$8403_storage_ptr_$_t_struct$_UserInfo_$8394_storage_ptr_$returns$__$",
                              "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage pointer,struct LiquidityMiningStorage.UserInfo storage pointer)"
                            }
                          },
                          "id": 7669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16554:25:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7670,
                        "nodeType": "ExpressionStatement",
                        "src": "16554:25:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7672,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7612,
                              "src": "16599:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7673,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7647,
                              "src": "16611:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7674,
                              "name": "userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7629,
                              "src": "16617:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 7675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16630:5:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 7676,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16637:5:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 7671,
                            "name": "_transferReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7919,
                            "src": "16583:15:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_UserInfo_$8394_storage_ptr_$_t_address_$_t_bool_$_t_bool_$returns$__$",
                              "typeString": "function (address,struct LiquidityMiningStorage.UserInfo storage pointer,address,bool,bool)"
                            }
                          },
                          "id": 7677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16583:60:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7678,
                        "nodeType": "ExpressionStatement",
                        "src": "16583:60:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7679,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7647,
                              "src": "16648:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            },
                            "id": 7681,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8389,
                            "src": "16648:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7685,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7614,
                                "src": "16678:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7682,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7647,
                                  "src": "16662:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                    "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                                  }
                                },
                                "id": 7683,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8389,
                                "src": "16662:11:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "16662:15:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7686,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16662:24:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16648:38:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7688,
                        "nodeType": "ExpressionStatement",
                        "src": "16648:38:32"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7689,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "16740:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 7690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "16740:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7691,
                            "name": "wrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8413,
                            "src": "16754:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16740:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 7715,
                          "nodeType": "Block",
                          "src": "16906:59:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7711,
                                    "name": "userAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7629,
                                    "src": "16939:11:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7712,
                                    "name": "_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7614,
                                    "src": "16952:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7706,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7641,
                                      "src": "16911:4:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                        "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                      }
                                    },
                                    "id": 7709,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "poolToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 8396,
                                    "src": "16911:14:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 7710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 41862,
                                  "src": "16911:27:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 7713,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16911:49:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7714,
                              "nodeType": "ExpressionStatement",
                              "src": "16911:49:32"
                            }
                          ]
                        },
                        "id": 7716,
                        "nodeType": "IfStatement",
                        "src": "16736:229:32",
                        "trueBody": {
                          "id": 7705,
                          "nodeType": "Block",
                          "src": "16763:67:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 7699,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44994,
                                          "src": "16804:3:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 7700,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "16804:10:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "id": 7698,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16796:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 7701,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16796:19:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7702,
                                    "name": "_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7614,
                                    "src": "16817:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7693,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7641,
                                      "src": "16768:4:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                        "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                      }
                                    },
                                    "id": 7696,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "poolToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 8396,
                                    "src": "16768:14:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 7697,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 41862,
                                  "src": "16768:27:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 7703,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16768:57:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7704,
                              "nodeType": "ExpressionStatement",
                              "src": "16768:57:32"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7718,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7641,
                              "src": "16987:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7719,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7647,
                              "src": "16993:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            ],
                            "id": 7717,
                            "name": "_updateRewardDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7832,
                            "src": "16969:17:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PoolInfo_$8403_storage_ptr_$_t_struct$_UserInfo_$8394_storage_ptr_$returns$__$",
                              "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage pointer,struct LiquidityMiningStorage.UserInfo storage pointer)"
                            }
                          },
                          "id": 7720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16969:29:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7721,
                        "nodeType": "ExpressionStatement",
                        "src": "16969:29:32"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7723,
                              "name": "userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7629,
                              "src": "17016:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7724,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7612,
                              "src": "17029:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7725,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7614,
                              "src": "17041:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7722,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6444,
                            "src": "17007:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 7726,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17007:42:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7727,
                        "nodeType": "EmitStatement",
                        "src": "17002:47:32"
                      }
                    ]
                  },
                  "documentation": "@notice withdraws pool tokens and transfers reward tokens\n@param _poolToken the address of pool token\n@param _amount the amount of pool tokens\n@param _user the user address will be used to process a withdrawal (can be passed only by wrapper contract)",
                  "id": 7729,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7612,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 7729,
                        "src": "16138:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7611,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16138:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7614,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 7729,
                        "src": "16160:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7613,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16160:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7616,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 7729,
                        "src": "16179:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7615,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16179:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16134:61:32"
                  },
                  "returnParameters": {
                    "id": 7618,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16205:0:32"
                  },
                  "scope": 8295,
                  "src": "16117:936:32",
                  "stateMutability": "nonpayable",
                  "superFunction": 6352,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7769,
                    "nodeType": "Block",
                    "src": "17128:277:32",
                    "statements": [
                      {
                        "assignments": [
                          7737
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7737,
                            "name": "userAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 7769,
                            "src": "17132:19:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7736,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "17132:7:32",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7740,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7738,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44994,
                            "src": "17154:3:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 7739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "17154:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17132:32:32"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7741,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7731,
                            "src": "17172:5:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17189:1:32",
                                "subdenomination": null,
                                "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": 7742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17181:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 7744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17181:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "17172:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 7766,
                        "nodeType": "IfStatement",
                        "src": "17168:212:32",
                        "trueBody": {
                          "id": 7765,
                          "nodeType": "Block",
                          "src": "17193:187:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 7757,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 7750,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 7747,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44994,
                                          "src": "17249:3:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 7748,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "17249:10:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 7749,
                                        "name": "wrapper",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8413,
                                        "src": "17263:7:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "17249:21:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7756,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 7751,
                                          "name": "poolIdList",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8420,
                                          "src": "17274:10:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 7754,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 7752,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44994,
                                            "src": "17285:3:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 7753,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "17285:10:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "17274:22:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 7755,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17300:1:32",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "17274:27:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "17249:52:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6f6e6c792077726170706572206f7220706f6f6c73206d617920776974686472617720666f7220612075736572",
                                    "id": 7758,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17303:47:32",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c3d8ff655831405bb1a124758a62c33d85cf79549cc8f6a57a2dfe5617e82b09",
                                      "typeString": "literal_string \"only wrapper or pools may withdraw for a user\""
                                    },
                                    "value": "only wrapper or pools may withdraw for a user"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c3d8ff655831405bb1a124758a62c33d85cf79549cc8f6a57a2dfe5617e82b09",
                                      "typeString": "literal_string \"only wrapper or pools may withdraw for a user\""
                                    }
                                  ],
                                  "id": 7746,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "17241:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 7759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17241:110:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7760,
                              "nodeType": "ExpressionStatement",
                              "src": "17241:110:32"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7763,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 7761,
                                  "name": "userAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7737,
                                  "src": "17356:11:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 7762,
                                  "name": "_user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7731,
                                  "src": "17370:5:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "17356:19:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 7764,
                              "nodeType": "ExpressionStatement",
                              "src": "17356:19:32"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7767,
                          "name": "userAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7737,
                          "src": "17390:11:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 7735,
                        "id": 7768,
                        "nodeType": "Return",
                        "src": "17383:18:32"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 7770,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getUserAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7732,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7731,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 7770,
                        "src": "17081:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7730,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17081:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17080:15:32"
                  },
                  "returnParameters": {
                    "id": 7735,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7734,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7770,
                        "src": "17119:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7733,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17119:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17118:9:32"
                  },
                  "scope": 8295,
                  "src": "17056:349:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7809,
                    "nodeType": "Block",
                    "src": "17486:319:32",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7777,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7774,
                              "src": "17529:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            },
                            "id": 7778,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8389,
                            "src": "17529:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7779,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17543:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17529:15:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 7808,
                        "nodeType": "IfStatement",
                        "src": "17525:277:32",
                        "trueBody": {
                          "id": 7807,
                          "nodeType": "Block",
                          "src": "17546:256:32",
                          "statements": [
                            {
                              "assignments": [
                                7782
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 7782,
                                  "name": "accumulatedReward",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 7807,
                                  "src": "17611:25:32",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 7781,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17611:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 7796,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7793,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7774,
                                      "src": "17706:4:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                        "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 7794,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "rewardDebt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 8391,
                                    "src": "17706:15:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 7790,
                                        "name": "PRECISION",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6390,
                                        "src": "17691:9:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 7786,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7772,
                                              "src": "17655:4:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                              }
                                            },
                                            "id": 7787,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "accumulatedRewardPerShare",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 8402,
                                            "src": "17655:30:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 7783,
                                              "name": "user",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7774,
                                              "src": "17639:4:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                                              }
                                            },
                                            "id": 7784,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "amount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 8389,
                                            "src": "17639:11:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 7785,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42153,
                                          "src": "17639:15:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 7788,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "17639:47:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 7789,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42169,
                                      "src": "17639:51:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 7791,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17639:62:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42092,
                                  "src": "17639:66:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 7795,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17639:83:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17611:111:32"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7797,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7774,
                                    "src": "17727:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                      "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 7799,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "accumulatedReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8393,
                                  "src": "17727:22:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7803,
                                      "name": "accumulatedReward",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7782,
                                      "src": "17779:17:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7800,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7774,
                                        "src": "17752:4:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                          "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                                        }
                                      },
                                      "id": 7801,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "accumulatedReward",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 8393,
                                      "src": "17752:22:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7802,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "17752:26:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7804,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17752:45:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17727:70:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7806,
                              "nodeType": "ExpressionStatement",
                              "src": "17727:70:32"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 7810,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7775,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7772,
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "scope": 7810,
                        "src": "17431:21:32",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                          "typeString": "struct LiquidityMiningStorage.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7771,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 8403,
                          "src": "17431:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7774,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 7810,
                        "src": "17454:21:32",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                          "typeString": "struct LiquidityMiningStorage.UserInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7773,
                          "name": "UserInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 8394,
                          "src": "17454:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                            "typeString": "struct LiquidityMiningStorage.UserInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17430:46:32"
                  },
                  "returnParameters": {
                    "id": 7776,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17486:0:32"
                  },
                  "scope": 8295,
                  "src": "17408:397:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7831,
                    "nodeType": "Block",
                    "src": "17890:186:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7817,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7814,
                              "src": "17992:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            },
                            "id": 7819,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8391,
                            "src": "17992:15:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7827,
                                "name": "PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6390,
                                "src": "18062:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7823,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7812,
                                      "src": "18026:4:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                        "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                      }
                                    },
                                    "id": 7824,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accumulatedRewardPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 8402,
                                    "src": "18026:30:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7820,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7814,
                                      "src": "18010:4:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                        "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 7821,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 8389,
                                    "src": "18010:11:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7822,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "18010:15:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 7825,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18010:47:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7826,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "18010:51:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7828,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18010:62:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17992:80:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7830,
                        "nodeType": "ExpressionStatement",
                        "src": "17992:80:32"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 7832,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateRewardDebt",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7815,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7812,
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "scope": 7832,
                        "src": "17835:21:32",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                          "typeString": "struct LiquidityMiningStorage.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7811,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 8403,
                          "src": "17835:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7814,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 7832,
                        "src": "17858:21:32",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                          "typeString": "struct LiquidityMiningStorage.UserInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7813,
                          "name": "UserInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 8394,
                          "src": "17858:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                            "typeString": "struct LiquidityMiningStorage.UserInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17834:46:32"
                  },
                  "returnParameters": {
                    "id": 7816,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17890:0:32"
                  },
                  "scope": 8295,
                  "src": "17808:268:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7918,
                    "nodeType": "Block",
                    "src": "18629:997:32",
                    "statements": [
                      {
                        "assignments": [
                          7846
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7846,
                            "name": "userAccumulatedReward",
                            "nodeType": "VariableDeclaration",
                            "scope": 7918,
                            "src": "18633:29:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7845,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18633:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7849,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7847,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7836,
                            "src": "18665:5:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                            }
                          },
                          "id": 7848,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accumulatedReward",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8393,
                          "src": "18665:23:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18633:55:32"
                      },
                      {
                        "assignments": [
                          7851
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7851,
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 7918,
                            "src": "18756:15:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7850,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18756:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7858,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7855,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45108,
                                  "src": "18796:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                    "typeString": "contract LiquidityMining"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                    "typeString": "contract LiquidityMining"
                                  }
                                ],
                                "id": 7854,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "18788:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 7856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18788:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7852,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8432,
                              "src": "18774:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 7853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24644,
                            "src": "18774:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 7857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18774:28:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18756:46:32"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7859,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7851,
                            "src": "18810:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7860,
                            "name": "userAccumulatedReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7846,
                            "src": "18821:21:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18810:32:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 7916,
                          "nodeType": "Block",
                          "src": "19559:64:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7912,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "!",
                                    "prefix": true,
                                    "src": "19572:19:32",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "id": 7911,
                                      "name": "_isCheckingBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7842,
                                      "src": "19573:18:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "436c61696d696e6720726577617264206661696c6564",
                                    "id": 7913,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "19593:24:32",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_1277a3e3ceced8bb63810c6cae25a46f9066ccd9270f0d61c363f68d9dea4f27",
                                      "typeString": "literal_string \"Claiming reward failed\""
                                    },
                                    "value": "Claiming reward failed"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_1277a3e3ceced8bb63810c6cae25a46f9066ccd9270f0d61c363f68d9dea4f27",
                                      "typeString": "literal_string \"Claiming reward failed\""
                                    }
                                  ],
                                  "id": 7910,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "19564:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 7914,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19564:54:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7915,
                              "nodeType": "ExpressionStatement",
                              "src": "19564:54:32"
                            }
                          ]
                        },
                        "id": 7917,
                        "nodeType": "IfStatement",
                        "src": "18806:817:32",
                        "trueBody": {
                          "id": 7909,
                          "nodeType": "Block",
                          "src": "18844:709:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7867,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 7862,
                                  "name": "totalUsersBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8430,
                                  "src": "18849:17:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7865,
                                      "name": "userAccumulatedReward",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7846,
                                      "src": "18891:21:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7863,
                                      "name": "totalUsersBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8430,
                                      "src": "18869:17:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7864,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "18869:21:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7866,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18869:44:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18849:64:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7868,
                              "nodeType": "ExpressionStatement",
                              "src": "18849:64:32"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7873,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7869,
                                    "name": "_user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7836,
                                    "src": "18918:5:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                      "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 7871,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "accumulatedReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8393,
                                  "src": "18918:23:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 7872,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18944:1:32",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "18918:27:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7874,
                              "nodeType": "ExpressionStatement",
                              "src": "18918:27:32"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 7879,
                                            "name": "lockedSOV",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8434,
                                            "src": "19223:9:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                              "typeString": "contract ILockedSOV"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                              "typeString": "contract ILockedSOV"
                                            }
                                          ],
                                          "id": 7878,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "19215:7:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 7880,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "19215:18:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 7881,
                                        "name": "userAccumulatedReward",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7846,
                                        "src": "19235:21:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7876,
                                        "name": "SOV",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8432,
                                        "src": "19203:3:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$24699",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 7877,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "approve",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 24662,
                                      "src": "19203:11:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                        "typeString": "function (address,uint256) external returns (bool)"
                                      }
                                    },
                                    "id": 7882,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19203:54:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "417070726f7665206661696c6564",
                                    "id": 7883,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "19259:16:32",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c",
                                      "typeString": "literal_string \"Approve failed\""
                                    },
                                    "value": "Approve failed"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c",
                                      "typeString": "literal_string \"Approve failed\""
                                    }
                                  ],
                                  "id": 7875,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "19195:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 7884,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19195:81:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7885,
                              "nodeType": "ExpressionStatement",
                              "src": "19195:81:32"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7889,
                                    "name": "_userAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7838,
                                    "src": "19299:12:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7890,
                                    "name": "userAccumulatedReward",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7846,
                                    "src": "19313:21:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7891,
                                    "name": "unlockedImmediatelyPercent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8436,
                                    "src": "19336:26:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7886,
                                    "name": "lockedSOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8434,
                                    "src": "19281:9:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                      "typeString": "contract ILockedSOV"
                                    }
                                  },
                                  "id": 7888,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "deposit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25570,
                                  "src": "19281:17:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256) external"
                                  }
                                },
                                "id": 7892,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19281:82:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7893,
                              "nodeType": "ExpressionStatement",
                              "src": "19281:82:32"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 7894,
                                "name": "_isStakingTokens",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7840,
                                "src": "19373:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 7902,
                              "nodeType": "IfStatement",
                              "src": "19369:84:32",
                              "trueBody": {
                                "id": 7901,
                                "nodeType": "Block",
                                "src": "19391:62:32",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 7898,
                                          "name": "_userAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7838,
                                          "src": "19434:12:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 7895,
                                          "name": "lockedSOV",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8434,
                                          "src": "19397:9:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                            "typeString": "contract ILockedSOV"
                                          }
                                        },
                                        "id": 7897,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "withdrawAndStakeTokensFrom",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 25582,
                                        "src": "19397:36:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                          "typeString": "function (address) external"
                                        }
                                      },
                                      "id": 7899,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "19397:50:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 7900,
                                    "nodeType": "ExpressionStatement",
                                    "src": "19397:50:32"
                                  }
                                ]
                              }
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7904,
                                    "name": "_userAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7838,
                                    "src": "19500:12:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7905,
                                    "name": "_poolToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7834,
                                    "src": "19514:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7906,
                                    "name": "userAccumulatedReward",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7846,
                                    "src": "19526:21:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7903,
                                  "name": "RewardClaimed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6436,
                                  "src": "19486:13:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 7907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19486:62:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7908,
                              "nodeType": "EmitStatement",
                              "src": "19481:67:32"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Send reward in SOV to the lockedSOV vault.\n@param _user The user info, to get its reward share.\n@param _userAddress The address of the user, to send SOV in its behalf.\n@param _isStakingTokens The flag whether we need to stake tokens\n@param _isCheckingBalance The flag whether we need to throw error or don't process reward if SOV balance isn't enough",
                  "id": 7919,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7843,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7834,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 7919,
                        "src": "18496:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7833,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18496:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7836,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 7919,
                        "src": "18518:22:32",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                          "typeString": "struct LiquidityMiningStorage.UserInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7835,
                          "name": "UserInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 8394,
                          "src": "18518:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                            "typeString": "struct LiquidityMiningStorage.UserInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7838,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 7919,
                        "src": "18544:20:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7837,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18544:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7840,
                        "name": "_isStakingTokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 7919,
                        "src": "18568:21:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7839,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18568:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7842,
                        "name": "_isCheckingBalance",
                        "nodeType": "VariableDeclaration",
                        "scope": 7919,
                        "src": "18593:23:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7841,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18593:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18492:127:32"
                  },
                  "returnParameters": {
                    "id": 7844,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18629:0:32"
                  },
                  "scope": 8295,
                  "src": "18468:1158:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8015,
                    "nodeType": "Block",
                    "src": "19836:627:32",
                    "statements": [
                      {
                        "assignments": [
                          7925
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7925,
                            "name": "poolId",
                            "nodeType": "VariableDeclaration",
                            "scope": 8015,
                            "src": "19840:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7924,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19840:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7929,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7927,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7921,
                              "src": "19868:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7926,
                            "name": "_getPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8053,
                            "src": "19857:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 7928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19857:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19840:39:32"
                      },
                      {
                        "assignments": [
                          7931
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7931,
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "scope": 8015,
                            "src": "19883:21:32",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7930,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8403,
                              "src": "19883:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7935,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7932,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "19907:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 7934,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7933,
                            "name": "poolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7925,
                            "src": "19920:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "19907:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19883:44:32"
                      },
                      {
                        "assignments": [
                          7937
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7937,
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "scope": 8015,
                            "src": "19931:21:32",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7936,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8394,
                              "src": "19931:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7944,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7938,
                              "name": "userInfoMap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8428,
                              "src": "19955:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct LiquidityMiningStorage.UserInfo storage ref))"
                              }
                            },
                            "id": 7940,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7939,
                              "name": "poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7925,
                              "src": "19967:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "19955:19:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$",
                              "typeString": "mapping(address => struct LiquidityMiningStorage.UserInfo storage ref)"
                            }
                          },
                          "id": 7943,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7941,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "19975:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 7942,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "19975:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "19955:31:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$8394_storage",
                            "typeString": "struct LiquidityMiningStorage.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19931:55:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7946,
                              "name": "poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7925,
                              "src": "20003:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7945,
                            "name": "_updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7264,
                            "src": "19991:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 7947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19991:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7948,
                        "nodeType": "ExpressionStatement",
                        "src": "19991:19:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7950,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "20028:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7951,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7937,
                              "src": "20034:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            ],
                            "id": 7949,
                            "name": "_updateReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7810,
                            "src": "20014:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PoolInfo_$8403_storage_ptr_$_t_struct$_UserInfo_$8394_storage_ptr_$returns$__$",
                              "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage pointer,struct LiquidityMiningStorage.UserInfo storage pointer)"
                            }
                          },
                          "id": 7952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20014:25:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7953,
                        "nodeType": "ExpressionStatement",
                        "src": "20014:25:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7954,
                            "name": "totalUsersBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8430,
                            "src": "20044:17:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7957,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7937,
                                  "src": "20086:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                    "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                                  }
                                },
                                "id": 7958,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "accumulatedReward",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8393,
                                "src": "20086:22:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7955,
                                "name": "totalUsersBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8430,
                                "src": "20064:17:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7956,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "20064:21:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7959,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20064:45:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20044:65:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7961,
                        "nodeType": "ExpressionStatement",
                        "src": "20044:65:32"
                      },
                      {
                        "assignments": [
                          7963
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7963,
                            "name": "userAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 8015,
                            "src": "20113:18:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7962,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20113:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7966,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7964,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7937,
                            "src": "20134:4:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                            }
                          },
                          "id": 7965,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8389,
                          "src": "20134:11:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20113:32:32"
                      },
                      {
                        "assignments": [
                          7968
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7968,
                            "name": "userAccumulatedReward",
                            "nodeType": "VariableDeclaration",
                            "scope": 8015,
                            "src": "20149:29:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7967,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20149:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7971,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7969,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7937,
                            "src": "20181:4:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                            }
                          },
                          "id": 7970,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accumulatedReward",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8393,
                          "src": "20181:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20149:54:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7972,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7937,
                              "src": "20207:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            },
                            "id": 7974,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8389,
                            "src": "20207:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20221:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20207:15:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7977,
                        "nodeType": "ExpressionStatement",
                        "src": "20207:15:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7978,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7937,
                              "src": "20226:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            },
                            "id": 7980,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8391,
                            "src": "20226:15:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7981,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20244:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20226:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7983,
                        "nodeType": "ExpressionStatement",
                        "src": "20226:19:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7988,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7984,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7937,
                              "src": "20249:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            },
                            "id": 7986,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "accumulatedReward",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8393,
                            "src": "20249:22:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20274:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20249:26:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7989,
                        "nodeType": "ExpressionStatement",
                        "src": "20249:26:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7996,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "20315:3:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 7997,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "20315:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 7995,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "20307:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 7998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20307:19:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7999,
                              "name": "userAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7963,
                              "src": "20328:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7990,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7931,
                                "src": "20279:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                  "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                                }
                              },
                              "id": 7993,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "poolToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8396,
                              "src": "20279:14:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 7994,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 41862,
                            "src": "20279:27:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 8000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20279:60:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8001,
                        "nodeType": "ExpressionStatement",
                        "src": "20279:60:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8003,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7931,
                              "src": "20362:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8004,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7937,
                              "src": "20368:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo storage pointer"
                              }
                            ],
                            "id": 8002,
                            "name": "_updateRewardDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7832,
                            "src": "20344:17:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PoolInfo_$8403_storage_ptr_$_t_struct$_UserInfo_$8394_storage_ptr_$returns$__$",
                              "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage pointer,struct LiquidityMiningStorage.UserInfo storage pointer)"
                            }
                          },
                          "id": 8005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20344:29:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8006,
                        "nodeType": "ExpressionStatement",
                        "src": "20344:29:32"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8008,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "20401:3:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "20401:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8010,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7921,
                              "src": "20413:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8011,
                              "name": "userAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7963,
                              "src": "20425:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8012,
                              "name": "userAccumulatedReward",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7968,
                              "src": "20437:21:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8007,
                            "name": "EmergencyWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6454,
                            "src": "20383:17:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 8013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20383:76:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8014,
                        "nodeType": "EmitStatement",
                        "src": "20378:81:32"
                      }
                    ]
                  },
                  "documentation": "@notice withdraws pool tokens without transferring reward tokens\n@param _poolToken the address of pool token\n@dev EMERGENCY ONLY",
                  "id": 8016,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "emergencyWithdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7922,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7921,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8016,
                        "src": "19807:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7920,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19807:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19806:20:32"
                  },
                  "returnParameters": {
                    "id": 7923,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19836:0:32"
                  },
                  "scope": 8295,
                  "src": "19780:683:32",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8027,
                    "nodeType": "Block",
                    "src": "20623:37:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8024,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8018,
                              "src": "20645:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8023,
                            "name": "_getPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8053,
                            "src": "20634:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 8025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20634:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8022,
                        "id": 8026,
                        "nodeType": "Return",
                        "src": "20627:29:32"
                      }
                    ]
                  },
                  "documentation": "@notice returns pool id\n@param _poolToken the address of pool token",
                  "id": 8028,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPoolId",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8018,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8028,
                        "src": "20571:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8017,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20571:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20570:20:32"
                  },
                  "returnParameters": {
                    "id": 8022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8021,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8028,
                        "src": "20614:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8020,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20614:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20613:9:32"
                  },
                  "scope": 8295,
                  "src": "20552:108:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8052,
                    "nodeType": "Block",
                    "src": "20735:115:32",
                    "statements": [
                      {
                        "assignments": [
                          8036
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8036,
                            "name": "poolId",
                            "nodeType": "VariableDeclaration",
                            "scope": 8052,
                            "src": "20739:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8035,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20739:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8040,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8037,
                            "name": "poolIdList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8420,
                            "src": "20756:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8039,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8038,
                            "name": "_poolToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8030,
                            "src": "20767:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "20756:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20739:39:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 8042,
                                "name": "poolId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8036,
                                "src": "20790:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 8043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20799:1:32",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "20790:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506f6f6c20746f6b656e206e6f7420666f756e64",
                              "id": 8045,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20802:22:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_25ad04c890f2bad24bd5012af460f4eec690504a7bc1baaf3dcc05140f8c0fe3",
                                "typeString": "literal_string \"Pool token not found\""
                              },
                              "value": "Pool token not found"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_25ad04c890f2bad24bd5012af460f4eec690504a7bc1baaf3dcc05140f8c0fe3",
                                "typeString": "literal_string \"Pool token not found\""
                              }
                            ],
                            "id": 8041,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "20782:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20782:43:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8047,
                        "nodeType": "ExpressionStatement",
                        "src": "20782:43:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 8048,
                            "name": "poolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8036,
                            "src": "20836:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 8049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20845:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "20836:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8034,
                        "id": 8051,
                        "nodeType": "Return",
                        "src": "20829:17:32"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 8053,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getPoolId",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8031,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8030,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8053,
                        "src": "20683:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8029,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20683:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20682:20:32"
                  },
                  "returnParameters": {
                    "id": 8034,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8033,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8053,
                        "src": "20726:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8032,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20726:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20725:9:32"
                  },
                  "scope": 8295,
                  "src": "20663:187:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8061,
                    "nodeType": "Block",
                    "src": "20961:34:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8058,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "20972:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 8059,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "20972:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8057,
                        "id": 8060,
                        "nodeType": "Return",
                        "src": "20965:26:32"
                      }
                    ]
                  },
                  "documentation": "@notice returns count of pool tokens",
                  "id": 8062,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPoolLength",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8054,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20926:2:32"
                  },
                  "returnParameters": {
                    "id": 8057,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8056,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8062,
                        "src": "20952:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8055,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20952:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20951:9:32"
                  },
                  "scope": 8295,
                  "src": "20904:91:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8070,
                    "nodeType": "Block",
                    "src": "21123:27:32",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8068,
                          "name": "poolInfoList",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8416,
                          "src": "21134:12:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                          }
                        },
                        "functionReturnParameters": 8067,
                        "id": 8069,
                        "nodeType": "Return",
                        "src": "21127:19:32"
                      }
                    ]
                  },
                  "documentation": "@notice returns list of pool token's info",
                  "id": 8071,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPoolInfoList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8063,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21078:2:32"
                  },
                  "returnParameters": {
                    "id": 8067,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8066,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8071,
                        "src": "21104:17:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_memory_$dyn_memory_ptr",
                          "typeString": "struct LiquidityMiningStorage.PoolInfo[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 8064,
                            "name": "PoolInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 8403,
                            "src": "21104:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo"
                            }
                          },
                          "id": 8065,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "21104:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage_ptr",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21103:19:32"
                  },
                  "scope": 8295,
                  "src": "21054:96:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8088,
                    "nodeType": "Block",
                    "src": "21342:78:32",
                    "statements": [
                      {
                        "assignments": [
                          8079
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8079,
                            "name": "poolId",
                            "nodeType": "VariableDeclaration",
                            "scope": 8088,
                            "src": "21346:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8078,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21346:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8083,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8081,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8073,
                              "src": "21374:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8080,
                            "name": "_getPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8053,
                            "src": "21363:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 8082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21363:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21346:39:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8084,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "21396:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 8086,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8085,
                            "name": "poolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8079,
                            "src": "21409:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "21396:20:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref"
                          }
                        },
                        "functionReturnParameters": 8077,
                        "id": 8087,
                        "nodeType": "Return",
                        "src": "21389:27:32"
                      }
                    ]
                  },
                  "documentation": "@notice returns pool info for the given token\n@param _poolToken the address of pool token",
                  "id": 8089,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPoolInfo",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8074,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8073,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8089,
                        "src": "21282:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8072,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21282:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21281:20:32"
                  },
                  "returnParameters": {
                    "id": 8077,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8076,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8089,
                        "src": "21325:15:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$8403_memory_ptr",
                          "typeString": "struct LiquidityMiningStorage.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 8075,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 8403,
                          "src": "21325:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21324:17:32"
                  },
                  "scope": 8295,
                  "src": "21261:159:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8156,
                    "nodeType": "Block",
                    "src": "21656:302:32",
                    "statements": [
                      {
                        "assignments": [
                          8100
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8100,
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 8156,
                            "src": "21660:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8099,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21660:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8103,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8101,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "21677:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 8102,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "21677:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21660:36:32"
                      },
                      {
                        "assignments": [
                          8109
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8109,
                            "name": "userBalanceList",
                            "nodeType": "VariableDeclaration",
                            "scope": 8156,
                            "src": "21700:35:32",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr",
                              "typeString": "uint256[2][]"
                            },
                            "typeName": {
                              "baseType": {
                                "baseType": {
                                  "id": 8106,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21700:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 8107,
                                "length": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 8105,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21708:1:32",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "ArrayTypeName",
                                "src": "21700:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                                  "typeString": "uint256[2]"
                                }
                              },
                              "id": 8108,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "21700:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_array$_t_uint256_$2_storage_$dyn_storage_ptr",
                                "typeString": "uint256[2][]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8117,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8115,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8100,
                              "src": "21755:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "21738:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (uint256[2] memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "baseType": {
                                  "id": 8110,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21742:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 8112,
                                "length": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 8111,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21750:1:32",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "ArrayTypeName",
                                "src": "21742:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                                  "typeString": "uint256[2]"
                                }
                              },
                              "id": 8113,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "21742:12:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_array$_t_uint256_$2_storage_$dyn_storage_ptr",
                                "typeString": "uint256[2][]"
                              }
                            }
                          },
                          "id": 8116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21738:24:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$dyn_memory",
                            "typeString": "uint256[2] memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21700:62:32"
                      },
                      {
                        "body": {
                          "id": 8152,
                          "nodeType": "Block",
                          "src": "21803:126:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8139,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 8128,
                                      "name": "userBalanceList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8109,
                                      "src": "21808:15:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr",
                                        "typeString": "uint256[2] memory[] memory"
                                      }
                                    },
                                    "id": 8131,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 8129,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8119,
                                      "src": "21824:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "21808:18:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                      "typeString": "uint256[2] memory"
                                    }
                                  },
                                  "id": 8132,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 8130,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "21827:1:32",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "21808:21:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 8133,
                                        "name": "userInfoMap",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8428,
                                        "src": "21832:11:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$_$",
                                          "typeString": "mapping(uint256 => mapping(address => struct LiquidityMiningStorage.UserInfo storage ref))"
                                        }
                                      },
                                      "id": 8135,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 8134,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8119,
                                        "src": "21844:1:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "21832:14:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$",
                                        "typeString": "mapping(address => struct LiquidityMiningStorage.UserInfo storage ref)"
                                      }
                                    },
                                    "id": 8137,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 8136,
                                      "name": "_user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8091,
                                      "src": "21847:5:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "21832:21:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$8394_storage",
                                      "typeString": "struct LiquidityMiningStorage.UserInfo storage ref"
                                    }
                                  },
                                  "id": 8138,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "amount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8389,
                                  "src": "21832:28:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21808:52:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8140,
                              "nodeType": "ExpressionStatement",
                              "src": "21808:52:32"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 8141,
                                      "name": "userBalanceList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8109,
                                      "src": "21865:15:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr",
                                        "typeString": "uint256[2] memory[] memory"
                                      }
                                    },
                                    "id": 8144,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 8142,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8119,
                                      "src": "21881:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "21865:18:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$2_memory",
                                      "typeString": "uint256[2] memory"
                                    }
                                  },
                                  "id": 8145,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 8143,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "21884:1:32",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "21865:21:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8147,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8119,
                                      "src": "21915:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 8148,
                                      "name": "_user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8091,
                                      "src": "21918:5:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8146,
                                    "name": "_getUserAccumulatedReward",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7071,
                                    "src": "21889:25:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,address) view returns (uint256)"
                                    }
                                  },
                                  "id": 8149,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21889:35:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21865:59:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8151,
                              "nodeType": "ExpressionStatement",
                              "src": "21865:59:32"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8124,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 8122,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8119,
                            "src": "21786:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 8123,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8100,
                            "src": "21790:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21786:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8153,
                        "initializationExpression": {
                          "assignments": [
                            8119
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 8119,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 8153,
                              "src": "21771:9:32",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 8118,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "21771:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 8121,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 8120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21783:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "21771:13:32"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 8126,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "21798:3:32",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 8125,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8119,
                              "src": "21798:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8127,
                          "nodeType": "ExpressionStatement",
                          "src": "21798:3:32"
                        },
                        "nodeType": "ForStatement",
                        "src": "21766:163:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8154,
                          "name": "userBalanceList",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8109,
                          "src": "21939:15:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr",
                            "typeString": "uint256[2] memory[] memory"
                          }
                        },
                        "functionReturnParameters": 8098,
                        "id": 8155,
                        "nodeType": "Return",
                        "src": "21932:22:32"
                      }
                    ]
                  },
                  "documentation": "@notice returns list of [amount, accumulatedReward] for the given user for each pool token\n@param _user the address of the user",
                  "id": 8157,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserBalanceList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8092,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8091,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 8157,
                        "src": "21597:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8090,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21597:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21596:15:32"
                  },
                  "returnParameters": {
                    "id": 8098,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8097,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8157,
                        "src": "21635:19:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr",
                          "typeString": "uint256[2][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 8093,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21635:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8095,
                            "length": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 8094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21643:1:32",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "ArrayTypeName",
                            "src": "21635:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
                              "typeString": "uint256[2]"
                            }
                          },
                          "id": 8096,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "21635:12:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_uint256_$2_storage_$dyn_storage_ptr",
                            "typeString": "uint256[2][]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21634:21:32"
                  },
                  "scope": 8295,
                  "src": "21569:389:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8178,
                    "nodeType": "Block",
                    "src": "22211:84:32",
                    "statements": [
                      {
                        "assignments": [
                          8167
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8167,
                            "name": "poolId",
                            "nodeType": "VariableDeclaration",
                            "scope": 8178,
                            "src": "22215:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8166,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22215:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8171,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8169,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8159,
                              "src": "22243:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8168,
                            "name": "_getPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8053,
                            "src": "22232:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 8170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22232:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22215:39:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8172,
                              "name": "userInfoMap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8428,
                              "src": "22265:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct LiquidityMiningStorage.UserInfo storage ref))"
                              }
                            },
                            "id": 8174,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8173,
                              "name": "poolId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8167,
                              "src": "22277:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "22265:19:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$",
                              "typeString": "mapping(address => struct LiquidityMiningStorage.UserInfo storage ref)"
                            }
                          },
                          "id": 8176,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8175,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8161,
                            "src": "22285:5:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "22265:26:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$8394_storage",
                            "typeString": "struct LiquidityMiningStorage.UserInfo storage ref"
                          }
                        },
                        "functionReturnParameters": 8165,
                        "id": 8177,
                        "nodeType": "Return",
                        "src": "22258:33:32"
                      }
                    ]
                  },
                  "documentation": "@notice returns UserInfo for the given pool and user\n@param _poolToken the address of pool token\n@param _user the address of the user",
                  "id": 8179,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserInfo",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8162,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8159,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8179,
                        "src": "22138:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8158,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22138:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8161,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 8179,
                        "src": "22158:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8160,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22158:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22137:35:32"
                  },
                  "returnParameters": {
                    "id": 8165,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8164,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8179,
                        "src": "22194:15:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$8394_memory_ptr",
                          "typeString": "struct LiquidityMiningStorage.UserInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 8163,
                          "name": "UserInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 8394,
                          "src": "22194:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                            "typeString": "struct LiquidityMiningStorage.UserInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22193:17:32"
                  },
                  "scope": 8295,
                  "src": "22117:178:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8226,
                    "nodeType": "Block",
                    "src": "22507:215:32",
                    "statements": [
                      {
                        "assignments": [
                          8188
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8188,
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 8226,
                            "src": "22511:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8187,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22511:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8191,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8189,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "22528:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 8190,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "22528:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22511:36:32"
                      },
                      {
                        "assignments": [
                          8195
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8195,
                            "name": "userInfoList",
                            "nodeType": "VariableDeclaration",
                            "scope": 8226,
                            "src": "22551:30:32",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_UserInfo_$8394_memory_$dyn_memory_ptr",
                              "typeString": "struct LiquidityMiningStorage.UserInfo[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 8193,
                                "name": "UserInfo",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 8394,
                                "src": "22551:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                  "typeString": "struct LiquidityMiningStorage.UserInfo"
                                }
                              },
                              "id": 8194,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "22551:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_UserInfo_$8394_storage_$dyn_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8201,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8199,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8188,
                              "src": "22599:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8198,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "22584:14:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_UserInfo_$8394_memory_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (struct LiquidityMiningStorage.UserInfo memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 8196,
                                "name": "UserInfo",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 8394,
                                "src": "22588:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                  "typeString": "struct LiquidityMiningStorage.UserInfo"
                                }
                              },
                              "id": 8197,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "22588:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_UserInfo_$8394_storage_$dyn_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo[]"
                              }
                            }
                          },
                          "id": 8200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22584:22:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_UserInfo_$8394_memory_$dyn_memory",
                            "typeString": "struct LiquidityMiningStorage.UserInfo memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22551:55:32"
                      },
                      {
                        "body": {
                          "id": 8222,
                          "nodeType": "Block",
                          "src": "22647:49:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 8212,
                                    "name": "userInfoList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8195,
                                    "src": "22652:12:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_UserInfo_$8394_memory_$dyn_memory_ptr",
                                      "typeString": "struct LiquidityMiningStorage.UserInfo memory[] memory"
                                    }
                                  },
                                  "id": 8214,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 8213,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8203,
                                    "src": "22665:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "22652:15:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$8394_memory",
                                    "typeString": "struct LiquidityMiningStorage.UserInfo memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 8215,
                                      "name": "userInfoMap",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8428,
                                      "src": "22670:11:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => struct LiquidityMiningStorage.UserInfo storage ref))"
                                      }
                                    },
                                    "id": 8217,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 8216,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8203,
                                      "src": "22682:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22670:14:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$",
                                      "typeString": "mapping(address => struct LiquidityMiningStorage.UserInfo storage ref)"
                                    }
                                  },
                                  "id": 8219,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 8218,
                                    "name": "_user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8181,
                                    "src": "22685:5:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "22670:21:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$8394_storage",
                                    "typeString": "struct LiquidityMiningStorage.UserInfo storage ref"
                                  }
                                },
                                "src": "22652:39:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserInfo_$8394_memory",
                                  "typeString": "struct LiquidityMiningStorage.UserInfo memory"
                                }
                              },
                              "id": 8221,
                              "nodeType": "ExpressionStatement",
                              "src": "22652:39:32"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 8206,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8203,
                            "src": "22630:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 8207,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8188,
                            "src": "22634:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22630:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8223,
                        "initializationExpression": {
                          "assignments": [
                            8203
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 8203,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 8223,
                              "src": "22615:9:32",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 8202,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "22615:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 8205,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 8204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22627:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "22615:13:32"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 8210,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "22642:3:32",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 8209,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8203,
                              "src": "22642:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8211,
                          "nodeType": "ExpressionStatement",
                          "src": "22642:3:32"
                        },
                        "nodeType": "ForStatement",
                        "src": "22610:86:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8224,
                          "name": "userInfoList",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8195,
                          "src": "22706:12:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_UserInfo_$8394_memory_$dyn_memory_ptr",
                            "typeString": "struct LiquidityMiningStorage.UserInfo memory[] memory"
                          }
                        },
                        "functionReturnParameters": 8186,
                        "id": 8225,
                        "nodeType": "Return",
                        "src": "22699:19:32"
                      }
                    ]
                  },
                  "documentation": "@notice returns list of UserInfo for the given user for each pool token\n@param _user the address of the user",
                  "id": 8227,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserInfoList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8182,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8181,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 8227,
                        "src": "22450:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8180,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22450:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22449:15:32"
                  },
                  "returnParameters": {
                    "id": 8186,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8185,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8227,
                        "src": "22488:17:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_UserInfo_$8394_memory_$dyn_memory_ptr",
                          "typeString": "struct LiquidityMiningStorage.UserInfo[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 8183,
                            "name": "UserInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 8394,
                            "src": "22488:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.UserInfo"
                            }
                          },
                          "id": 8184,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "22488:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_UserInfo_$8394_storage_$dyn_storage_ptr",
                            "typeString": "struct LiquidityMiningStorage.UserInfo[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22487:19:32"
                  },
                  "scope": 8295,
                  "src": "22425:297:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8273,
                    "nodeType": "Block",
                    "src": "22948:221:32",
                    "statements": [
                      {
                        "assignments": [
                          8236
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8236,
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 8273,
                            "src": "22952:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8235,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22952:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8239,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8237,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "22969:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 8238,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "22969:19:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22952:36:32"
                      },
                      {
                        "assignments": [
                          8243
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8243,
                            "name": "rewardList",
                            "nodeType": "VariableDeclaration",
                            "scope": 8273,
                            "src": "22992:27:32",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 8241,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "22992:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8242,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "22992:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8249,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8247,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8236,
                              "src": "23036:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "23022:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 8244,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "23026:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8245,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "23026:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 8248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23022:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22992:51:32"
                      },
                      {
                        "body": {
                          "id": 8269,
                          "nodeType": "Block",
                          "src": "23084:61:32",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8267,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 8260,
                                    "name": "rewardList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8243,
                                    "src": "23089:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 8262,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 8261,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8251,
                                    "src": "23100:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "23089:13:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8264,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8251,
                                      "src": "23131:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 8265,
                                      "name": "_user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8229,
                                      "src": "23134:5:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8263,
                                    "name": "_getUserAccumulatedReward",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7071,
                                    "src": "23105:25:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,address) view returns (uint256)"
                                    }
                                  },
                                  "id": 8266,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23105:35:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23089:51:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8268,
                              "nodeType": "ExpressionStatement",
                              "src": "23089:51:32"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 8254,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8251,
                            "src": "23067:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 8255,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8236,
                            "src": "23071:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23067:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8270,
                        "initializationExpression": {
                          "assignments": [
                            8251
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 8251,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 8270,
                              "src": "23052:9:32",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 8250,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "23052:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 8253,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 8252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23064:1:32",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "23052:13:32"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 8258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "23079:3:32",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 8257,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8251,
                              "src": "23079:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8259,
                          "nodeType": "ExpressionStatement",
                          "src": "23079:3:32"
                        },
                        "nodeType": "ForStatement",
                        "src": "23047:98:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8271,
                          "name": "rewardList",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8243,
                          "src": "23155:10:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 8234,
                        "id": 8272,
                        "nodeType": "Return",
                        "src": "23148:17:32"
                      }
                    ]
                  },
                  "documentation": "@notice returns accumulated reward for the given user for each pool token\n@param _user the address of the user",
                  "id": 8274,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserAccumulatedRewardList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8230,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8229,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 8274,
                        "src": "22892:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8228,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22892:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22891:15:32"
                  },
                  "returnParameters": {
                    "id": 8234,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8233,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8274,
                        "src": "22930:16:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8231,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "22930:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8232,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "22930:9:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22929:18:32"
                  },
                  "scope": 8295,
                  "src": "22854:315:32",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8293,
                    "nodeType": "Block",
                    "src": "23441:79:32",
                    "statements": [
                      {
                        "assignments": [
                          8284
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8284,
                            "name": "ui",
                            "nodeType": "VariableDeclaration",
                            "scope": 8293,
                            "src": "23445:18:32",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$8394_memory_ptr",
                              "typeString": "struct LiquidityMiningStorage.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8283,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8394,
                              "src": "23445:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8289,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8286,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8276,
                              "src": "23478:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8287,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8278,
                              "src": "23490:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8285,
                            "name": "getUserInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8179,
                            "src": "23466:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_struct$_UserInfo_$8394_memory_ptr_$",
                              "typeString": "function (address,address) view returns (struct LiquidityMiningStorage.UserInfo memory)"
                            }
                          },
                          "id": 8288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23466:30:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$8394_memory_ptr",
                            "typeString": "struct LiquidityMiningStorage.UserInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23445:51:32"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8290,
                            "name": "ui",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8284,
                            "src": "23507:2:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$8394_memory_ptr",
                              "typeString": "struct LiquidityMiningStorage.UserInfo memory"
                            }
                          },
                          "id": 8291,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8389,
                          "src": "23507:9:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8282,
                        "id": 8292,
                        "nodeType": "Return",
                        "src": "23500:16:32"
                      }
                    ]
                  },
                  "documentation": "@notice returns the pool token balance a user has on the contract\n@param _poolToken the address of pool token\n@param _user the address of the user",
                  "id": 8294,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserPoolTokenBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8276,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8294,
                        "src": "23374:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8275,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23374:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8278,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 8294,
                        "src": "23394:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8277,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23394:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23373:35:32"
                  },
                  "returnParameters": {
                    "id": 8282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8281,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8294,
                        "src": "23432:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8280,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23432:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23431:9:32"
                  },
                  "scope": 8295,
                  "src": "23341:179:32",
                  "stateMutability": "view",
                  "superFunction": 6368,
                  "visibility": "external"
                }
              ],
              "scope": 8296,
              "src": "247:23275:32"
            }
          ],
          "src": "0:23523:32"
        },
        "id": 32
      },
      "contracts/farm/LiquidityMiningConfigToken.sol": {
        "ast": {
          "absolutePath": "contracts/farm/LiquidityMiningConfigToken.sol",
          "exportedSymbols": {
            "LiquidityMiningConfigToken": [
              8369
            ]
          },
          "id": 8370,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8297,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:33"
            },
            {
              "absolutePath": "contracts/openzeppelin/IERC20_.sol",
              "file": "../openzeppelin/IERC20_.sol",
              "id": 8298,
              "nodeType": "ImportDirective",
              "scope": 8370,
              "sourceUnit": 41658,
              "src": "26:37:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 8299,
                    "name": "IERC20_",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41657,
                    "src": "245:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20__$41657",
                      "typeString": "contract IERC20_"
                    }
                  },
                  "id": 8300,
                  "nodeType": "InheritanceSpecifier",
                  "src": "245:7:33"
                }
              ],
              "contractDependencies": [
                41657
              ],
              "contractKind": "contract",
              "documentation": "@title Dummy token with 0 total supply.\n * @dev We need this token for having a flexibility with LiquidityMining configuration",
              "fullyImplemented": true,
              "id": 8369,
              "linearizedBaseContracts": [
                8369,
                41657
              ],
              "name": "LiquidityMiningConfigToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 8307,
                    "nodeType": "Block",
                    "src": "311:16:33",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 8305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "322:1:33",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 8304,
                        "id": 8306,
                        "nodeType": "Return",
                        "src": "315:8:33"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 8308,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8301,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "276:2:33"
                  },
                  "returnParameters": {
                    "id": 8304,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8303,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8308,
                        "src": "302:7:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8302,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "302:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "301:9:33"
                  },
                  "scope": 8369,
                  "src": "256:71:33",
                  "stateMutability": "view",
                  "superFunction": 41595,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8317,
                    "nodeType": "Block",
                    "src": "398:16:33",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 8315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "409:1:33",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 8314,
                        "id": 8316,
                        "nodeType": "Return",
                        "src": "402:8:33"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 8318,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8310,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 8318,
                        "src": "349:15:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8309,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "349:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "348:17:33"
                  },
                  "returnParameters": {
                    "id": 8314,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8313,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8318,
                        "src": "389:7:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8312,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "389:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "388:9:33"
                  },
                  "scope": 8369,
                  "src": "330:84:33",
                  "stateMutability": "view",
                  "superFunction": 41602,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8329,
                    "nodeType": "Block",
                    "src": "494:20:33",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 8327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "505:5:33",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 8326,
                        "id": 8328,
                        "nodeType": "Return",
                        "src": "498:12:33"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 8330,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8323,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8320,
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 8330,
                        "src": "435:17:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8319,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "435:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8322,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8330,
                        "src": "454:14:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8321,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "454:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "434:35:33"
                  },
                  "returnParameters": {
                    "id": 8326,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8325,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8330,
                        "src": "488:4:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8324,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "488:4:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "487:6:33"
                  },
                  "scope": 8369,
                  "src": "417:97:33",
                  "stateMutability": "nonpayable",
                  "superFunction": 41611,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8341,
                    "nodeType": "Block",
                    "src": "600:16:33",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 8339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "611:1:33",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 8338,
                        "id": 8340,
                        "nodeType": "Return",
                        "src": "604:8:33"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 8342,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8335,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8332,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 8342,
                        "src": "536:13:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8331,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "536:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8334,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 8342,
                        "src": "551:15:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8333,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "551:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "535:32:33"
                  },
                  "returnParameters": {
                    "id": 8338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8337,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8342,
                        "src": "591:7:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8336,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "591:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "590:9:33"
                  },
                  "scope": 8369,
                  "src": "517:99:33",
                  "stateMutability": "view",
                  "superFunction": 41620,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8353,
                    "nodeType": "Block",
                    "src": "693:20:33",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 8351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "704:5:33",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 8350,
                        "id": 8352,
                        "nodeType": "Return",
                        "src": "697:12:33"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 8354,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8347,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8344,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 8354,
                        "src": "636:15:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8343,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "636:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8346,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8354,
                        "src": "653:14:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8345,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "653:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "635:33:33"
                  },
                  "returnParameters": {
                    "id": 8350,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8349,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8354,
                        "src": "687:4:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8348,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "687:4:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "686:6:33"
                  },
                  "scope": 8369,
                  "src": "619:94:33",
                  "stateMutability": "nonpayable",
                  "superFunction": 41629,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8367,
                    "nodeType": "Block",
                    "src": "822:20:33",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 8365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "833:5:33",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 8364,
                        "id": 8366,
                        "nodeType": "Return",
                        "src": "826:12:33"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 8368,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8356,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 8368,
                        "src": "741:14:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8355,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "741:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8358,
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 8368,
                        "src": "759:17:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8357,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "759:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8360,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8368,
                        "src": "780:14:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8359,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "780:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "737:60:33"
                  },
                  "returnParameters": {
                    "id": 8364,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8363,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8368,
                        "src": "816:4:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8362,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "816:4:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "815:6:33"
                  },
                  "scope": 8369,
                  "src": "716:126:33",
                  "stateMutability": "nonpayable",
                  "superFunction": 41640,
                  "visibility": "external"
                }
              ],
              "scope": 8370,
              "src": "206:638:33"
            }
          ],
          "src": "0:845:33"
        },
        "id": 33
      },
      "contracts/farm/LiquidityMiningProxy.sol": {
        "ast": {
          "absolutePath": "contracts/farm/LiquidityMiningProxy.sol",
          "exportedSymbols": {
            "LiquidityMiningProxy": [
              8378
            ]
          },
          "id": 8379,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8371,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:34"
            },
            {
              "absolutePath": "contracts/farm/LiquidityMiningStorage.sol",
              "file": "./LiquidityMiningStorage.sol",
              "id": 8372,
              "nodeType": "ImportDirective",
              "scope": 8379,
              "sourceUnit": 8438,
              "src": "26:38:34",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/proxy/UpgradableProxy.sol",
              "file": "../proxy/UpgradableProxy.sol",
              "id": 8373,
              "nodeType": "ImportDirective",
              "scope": 8379,
              "sourceUnit": 42654,
              "src": "65:38:34",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 8374,
                    "name": "LiquidityMiningStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8437,
                    "src": "221:22:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LiquidityMiningStorage_$8437",
                      "typeString": "contract LiquidityMiningStorage"
                    }
                  },
                  "id": 8375,
                  "nodeType": "InheritanceSpecifier",
                  "src": "221:22:34"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 8376,
                    "name": "UpgradableProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42653,
                    "src": "245:15:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UpgradableProxy_$42653",
                      "typeString": "contract UpgradableProxy"
                    }
                  },
                  "id": 8377,
                  "nodeType": "InheritanceSpecifier",
                  "src": "245:15:34"
                }
              ],
              "contractDependencies": [
                8437,
                41125,
                41798,
                42623,
                42653,
                44979
              ],
              "contractKind": "contract",
              "documentation": "@dev LiquidityMining contract should be upgradable, use UpgradableProxy",
              "fullyImplemented": true,
              "id": 8378,
              "linearizedBaseContracts": [
                8378,
                42653,
                42623,
                8437,
                44979,
                41798,
                41125
              ],
              "name": "LiquidityMiningProxy",
              "nodeType": "ContractDefinition",
              "nodes": [],
              "scope": 8379,
              "src": "188:77:34"
            }
          ],
          "src": "0:266:34"
        },
        "id": 34
      },
      "contracts/farm/LiquidityMiningStorage.sol": {
        "ast": {
          "absolutePath": "contracts/farm/LiquidityMiningStorage.sol",
          "exportedSymbols": {
            "LiquidityMiningStorage": [
              8437
            ]
          },
          "id": 8438,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8380,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:35"
            },
            {
              "absolutePath": "contracts/openzeppelin/ERC20.sol",
              "file": "../openzeppelin/ERC20.sol",
              "id": 8381,
              "nodeType": "ImportDirective",
              "scope": 8438,
              "sourceUnit": 41531,
              "src": "25:35:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeERC20.sol",
              "file": "../openzeppelin/SafeERC20.sol",
              "id": 8382,
              "nodeType": "ImportDirective",
              "scope": 8438,
              "sourceUnit": 42050,
              "src": "61:39:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../openzeppelin/SafeMath.sol",
              "id": 8383,
              "nodeType": "ImportDirective",
              "scope": 8438,
              "sourceUnit": 42310,
              "src": "101:38:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/locked/ILockedSOV.sol",
              "file": "../locked/ILockedSOV.sol",
              "id": 8384,
              "nodeType": "ImportDirective",
              "scope": 8438,
              "sourceUnit": 25584,
              "src": "140:34:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/AdminRole.sol",
              "file": "../utils/AdminRole.sol",
              "id": 8385,
              "nodeType": "ImportDirective",
              "scope": 8438,
              "sourceUnit": 44980,
              "src": "175:32:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 8386,
                    "name": "AdminRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 44979,
                    "src": "244:9:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AdminRole_$44979",
                      "typeString": "contract AdminRole"
                    }
                  },
                  "id": 8387,
                  "nodeType": "InheritanceSpecifier",
                  "src": "244:9:35"
                }
              ],
              "contractDependencies": [
                41125,
                41798,
                44979
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 8437,
              "linearizedBaseContracts": [
                8437,
                44979,
                41798,
                41125
              ],
              "name": "LiquidityMiningStorage",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "LiquidityMiningStorage.UserInfo",
                  "id": 8394,
                  "members": [
                    {
                      "constant": false,
                      "id": 8389,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 8394,
                      "src": "300:14:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8388,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "300:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8391,
                      "name": "rewardDebt",
                      "nodeType": "VariableDeclaration",
                      "scope": 8394,
                      "src": "365:18:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8390,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "365:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8393,
                      "name": "accumulatedReward",
                      "nodeType": "VariableDeclaration",
                      "scope": 8394,
                      "src": "426:25:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8392,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "426:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserInfo",
                  "nodeType": "StructDefinition",
                  "scope": 8437,
                  "src": "280:807:35",
                  "visibility": "public"
                },
                {
                  "canonicalName": "LiquidityMiningStorage.PoolInfo",
                  "id": 8403,
                  "members": [
                    {
                      "constant": false,
                      "id": 8396,
                      "name": "poolToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 8403,
                      "src": "1133:16:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$24699",
                        "typeString": "contract IERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8395,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 24699,
                        "src": "1133:6:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8398,
                      "name": "allocationPoint",
                      "nodeType": "VariableDeclaration",
                      "scope": 8403,
                      "src": "1186:22:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 8397,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "1186:6:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8400,
                      "name": "lastRewardBlock",
                      "nodeType": "VariableDeclaration",
                      "scope": 8403,
                      "src": "1314:23:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8399,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1314:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8402,
                      "name": "accumulatedRewardPerShare",
                      "nodeType": "VariableDeclaration",
                      "scope": 8403,
                      "src": "1402:33:35",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8401,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1402:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PoolInfo",
                  "nodeType": "StructDefinition",
                  "scope": 8437,
                  "src": "1113:399:35",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8405,
                  "name": "rewardTokensPerBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 8437,
                  "src": "1549:35:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8404,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1549:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8407,
                  "name": "startBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 8437,
                  "src": "1641:25:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8406,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1641:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8409,
                  "name": "bonusEndBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 8437,
                  "src": "1723:28:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8408,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1723:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8411,
                  "name": "endBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 8437,
                  "src": "1802:23:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8410,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1802:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8413,
                  "name": "wrapper",
                  "nodeType": "VariableDeclaration",
                  "scope": 8437,
                  "src": "1891:22:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8412,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1891:7:35",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8416,
                  "name": "poolInfoList",
                  "nodeType": "VariableDeclaration",
                  "scope": 8437,
                  "src": "1940:30:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                    "typeString": "struct LiquidityMiningStorage.PoolInfo[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 8414,
                      "name": "PoolInfo",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 8403,
                      "src": "1940:8:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                        "typeString": "struct LiquidityMiningStorage.PoolInfo"
                      }
                    },
                    "id": 8415,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1940:10:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage_ptr",
                      "typeString": "struct LiquidityMiningStorage.PoolInfo[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8420,
                  "name": "poolIdList",
                  "nodeType": "VariableDeclaration",
                  "scope": 8437,
                  "src": "2015:38:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 8419,
                    "keyType": {
                      "id": 8417,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2023:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2015:27:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 8418,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2034:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8422,
                  "name": "totalAllocationPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 8437,
                  "src": "2140:35:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8421,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2140:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8428,
                  "name": "userInfoMap",
                  "nodeType": "VariableDeclaration",
                  "scope": 8437,
                  "src": "2224:67:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$_$",
                    "typeString": "mapping(uint256 => mapping(address => struct LiquidityMiningStorage.UserInfo))"
                  },
                  "typeName": {
                    "id": 8427,
                    "keyType": {
                      "id": 8423,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2232:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2224:48:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$_$",
                      "typeString": "mapping(uint256 => mapping(address => struct LiquidityMiningStorage.UserInfo))"
                    },
                    "valueType": {
                      "id": 8426,
                      "keyType": {
                        "id": 8424,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2251:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2243:28:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$8394_storage_$",
                        "typeString": "mapping(address => struct LiquidityMiningStorage.UserInfo)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 8425,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8394,
                        "src": "2262:8:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$8394_storage_ptr",
                          "typeString": "struct LiquidityMiningStorage.UserInfo"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8430,
                  "name": "totalUsersBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 8437,
                  "src": "2373:32:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8429,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2373:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8432,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 8437,
                  "src": "2433:17:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$24699",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8431,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "2433:6:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8434,
                  "name": "lockedSOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 8437,
                  "src": "2520:27:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                    "typeString": "contract ILockedSOV"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8433,
                    "name": "ILockedSOV",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25583,
                    "src": "2520:10:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                      "typeString": "contract ILockedSOV"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8436,
                  "name": "unlockedImmediatelyPercent",
                  "nodeType": "VariableDeclaration",
                  "scope": 8437,
                  "src": "2641:41:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8435,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2641:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                }
              ],
              "scope": 8438,
              "src": "209:2476:35"
            }
          ],
          "src": "0:2686:35"
        },
        "id": 35
      },
      "contracts/feeds/BProPriceFeed.sol": {
        "ast": {
          "absolutePath": "contracts/feeds/BProPriceFeed.sol",
          "exportedSymbols": {
            "BProPriceFeed": [
              8516
            ]
          },
          "id": 8517,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8439,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:36"
            },
            {
              "absolutePath": "contracts/feeds/PriceFeeds.sol",
              "file": "./PriceFeeds.sol",
              "id": 8440,
              "nodeType": "ImportDirective",
              "scope": 8517,
              "sourceUnit": 10051,
              "src": "33:26:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/feeds/IMoCState.sol",
              "file": "./IMoCState.sol",
              "id": 8441,
              "nodeType": "ImportDirective",
              "scope": 8517,
              "sourceUnit": 8583,
              "src": "60:25:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../openzeppelin/Ownable.sol",
              "id": 8442,
              "nodeType": "ImportDirective",
              "scope": 8517,
              "sourceUnit": 41799,
              "src": "86:37:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Address.sol",
              "file": "../openzeppelin/Address.sol",
              "id": 8443,
              "nodeType": "ImportDirective",
              "scope": 8517,
              "sourceUnit": 41099,
              "src": "124:37:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 8444,
                    "name": "IPriceFeedsExt",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9176,
                    "src": "390:14:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                      "typeString": "contract IPriceFeedsExt"
                    }
                  },
                  "id": 8445,
                  "nodeType": "InheritanceSpecifier",
                  "src": "390:14:36"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 8446,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "406:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 8447,
                  "nodeType": "InheritanceSpecifier",
                  "src": "406:7:36"
                }
              ],
              "contractDependencies": [
                9176,
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title The BPro Price Feed contract.\n * This contract gets/sets the MoC (Money on Chain) address of its state\ncontract and queries its method bproUsdPrice to get bPro/USD valuation.\n",
              "fullyImplemented": true,
              "id": 8516,
              "linearizedBaseContracts": [
                8516,
                41798,
                41125,
                9176
              ],
              "name": "BProPriceFeed",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 8449,
                  "name": "mocStateAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 8516,
                  "src": "417:30:36",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8448,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "417:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 8455,
                  "name": "SetMoCStateAddress",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 8454,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8451,
                        "indexed": true,
                        "name": "mocStateAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8455,
                        "src": "476:31:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8450,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "476:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8453,
                        "indexed": false,
                        "name": "changerAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8455,
                        "src": "509:22:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8452,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "509:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "475:57:36"
                  },
                  "src": "451:82:36"
                },
                {
                  "body": {
                    "id": 8464,
                    "nodeType": "Block",
                    "src": "684:44:36",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8461,
                              "name": "_mocStateAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8457,
                              "src": "707:16:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8460,
                            "name": "setMoCStateAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8515,
                            "src": "688:18:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 8462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "688:36:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8463,
                        "nodeType": "ExpressionStatement",
                        "src": "688:36:36"
                      }
                    ]
                  },
                  "documentation": "@notice Initializes a new MoC state.\n\t * @param _mocStateAddress MoC state address\n",
                  "id": 8465,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8458,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8457,
                        "name": "_mocStateAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8465,
                        "src": "651:24:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8456,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "651:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "650:26:36"
                  },
                  "returnParameters": {
                    "id": 8459,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "684:0:36"
                  },
                  "scope": 8516,
                  "src": "639:89:36",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8480,
                    "nodeType": "Block",
                    "src": "885:91:36",
                    "statements": [
                      {
                        "assignments": [
                          8471
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8471,
                            "name": "_mocState",
                            "nodeType": "VariableDeclaration",
                            "scope": 8480,
                            "src": "889:19:36",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMoCState_$8582",
                              "typeString": "contract IMoCState"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8470,
                              "name": "IMoCState",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8582,
                              "src": "889:9:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMoCState_$8582",
                                "typeString": "contract IMoCState"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8475,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8473,
                              "name": "mocStateAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8449,
                              "src": "921:15:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8472,
                            "name": "IMoCState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8582,
                            "src": "911:9:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IMoCState_$8582_$",
                              "typeString": "type(contract IMoCState)"
                            }
                          },
                          "id": 8474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "911:26:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMoCState_$8582",
                            "typeString": "contract IMoCState"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "889:48:36"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8476,
                              "name": "_mocState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8471,
                              "src": "948:9:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMoCState_$8582",
                                "typeString": "contract IMoCState"
                              }
                            },
                            "id": 8477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bproUsdPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8569,
                            "src": "948:22:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 8478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "948:24:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8469,
                        "id": 8479,
                        "nodeType": "Return",
                        "src": "941:31:36"
                      }
                    ]
                  },
                  "documentation": "@notice Get BPro USD price.\n\t * @return the BPro USD Price [using mocPrecision]",
                  "id": 8481,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestAnswer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8466,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "850:2:36"
                  },
                  "returnParameters": {
                    "id": 8469,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8468,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8481,
                        "src": "876:7:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8467,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "876:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "875:9:36"
                  },
                  "scope": 8516,
                  "src": "829:147:36",
                  "stateMutability": "view",
                  "superFunction": 9175,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8488,
                    "nodeType": "Block",
                    "src": "1200:65:36",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8486,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44996,
                          "src": "1211:3:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8485,
                        "id": 8487,
                        "nodeType": "Return",
                        "src": "1204:10:36"
                      }
                    ]
                  },
                  "documentation": "@notice Supposed to get the MoC update time, but instead\nget the current timestamp.\n\t * @return Always returns current block's timestamp.\n",
                  "id": 8489,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestTimestamp",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8482,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1165:2:36"
                  },
                  "returnParameters": {
                    "id": 8485,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8484,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8489,
                        "src": "1191:7:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8483,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1191:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1190:9:36"
                  },
                  "scope": 8516,
                  "src": "1141:124:36",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8514,
                    "nodeType": "Block",
                    "src": "1441:182:36",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8499,
                                  "name": "_mocStateAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8491,
                                  "src": "1472:16:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8497,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "1453:7:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 8498,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "1453:18:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 8500,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1453:36:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5f6d6f63537461746541646472657373206e6f74206120636f6e7472616374",
                              "id": 8501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1491:33:36",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d7757b945dc9410b25d24e4876b15d83a6631851c30fea35ebd043a851207d44",
                                "typeString": "literal_string \"_mocStateAddress not a contract\""
                              },
                              "value": "_mocStateAddress not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d7757b945dc9410b25d24e4876b15d83a6631851c30fea35ebd043a851207d44",
                                "typeString": "literal_string \"_mocStateAddress not a contract\""
                              }
                            ],
                            "id": 8496,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1445:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1445:80:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8503,
                        "nodeType": "ExpressionStatement",
                        "src": "1445:80:36"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8504,
                            "name": "mocStateAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8449,
                            "src": "1529:15:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 8505,
                            "name": "_mocStateAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8491,
                            "src": "1547:16:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1529:34:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8507,
                        "nodeType": "ExpressionStatement",
                        "src": "1529:34:36"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8509,
                              "name": "mocStateAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8449,
                              "src": "1591:15:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8510,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "1608:3:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1608:10:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 8508,
                            "name": "SetMoCStateAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8455,
                            "src": "1572:18:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 8512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1572:47:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8513,
                        "nodeType": "EmitStatement",
                        "src": "1567:52:36"
                      }
                    ]
                  },
                  "documentation": "@notice Set MoC state address.\n\t * @param _mocStateAddress The MoC state address.\n",
                  "id": 8515,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 8494,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 8493,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1431:9:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1431:9:36"
                    }
                  ],
                  "name": "setMoCStateAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8492,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8491,
                        "name": "_mocStateAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8515,
                        "src": "1398:24:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8490,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1398:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1397:26:36"
                  },
                  "returnParameters": {
                    "id": 8495,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1441:0:36"
                  },
                  "scope": 8516,
                  "src": "1370:253:36",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 8517,
              "src": "364:1261:36"
            }
          ],
          "src": "0:1626:36"
        },
        "id": 36
      },
      "contracts/feeds/IMoCState.sol": {
        "ast": {
          "absolutePath": "contracts/feeds/IMoCState.sol",
          "exportedSymbols": {
            "IMoCState": [
              8582
            ]
          },
          "id": 8583,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8518,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:37"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 8582,
              "linearizedBaseContracts": [
                8582
              ],
              "name": "IMoCState",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 8525,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRbtcInBitPro",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8521,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8520,
                        "name": "bucket",
                        "nodeType": "VariableDeclaration",
                        "scope": 8525,
                        "src": "81:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8519,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "81:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "80:16:37"
                  },
                  "returnParameters": {
                    "id": 8524,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8523,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8525,
                        "src": "120:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8522,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "120:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "119:9:37"
                  },
                  "scope": 8582,
                  "src": "56:73:37",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8530,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "globalMaxBPro",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8526,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "154:2:37"
                  },
                  "returnParameters": {
                    "id": 8529,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8528,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8530,
                        "src": "180:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8527,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "180:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "179:9:37"
                  },
                  "scope": 8582,
                  "src": "132:57:37",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8537,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "maxBPro",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8533,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8532,
                        "name": "bucket",
                        "nodeType": "VariableDeclaration",
                        "scope": 8537,
                        "src": "209:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8531,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "209:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "208:16:37"
                  },
                  "returnParameters": {
                    "id": 8536,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8535,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8537,
                        "src": "248:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8534,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "248:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "247:9:37"
                  },
                  "scope": 8582,
                  "src": "192:65:37",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8542,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "absoluteMaxBPro",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8538,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "284:2:37"
                  },
                  "returnParameters": {
                    "id": 8541,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8540,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8542,
                        "src": "310:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8539,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "310:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "309:9:37"
                  },
                  "scope": 8582,
                  "src": "260:59:37",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8547,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "maxBProWithDiscount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8543,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "350:2:37"
                  },
                  "returnParameters": {
                    "id": 8546,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8545,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8547,
                        "src": "376:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8544,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "376:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "375:9:37"
                  },
                  "scope": 8582,
                  "src": "322:63:37",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8552,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "bproTecPrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8548,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "409:2:37"
                  },
                  "returnParameters": {
                    "id": 8551,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8550,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8552,
                        "src": "435:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8549,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "435:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "434:9:37"
                  },
                  "scope": 8582,
                  "src": "388:56:37",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8559,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "bucketBProTecPrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8555,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8554,
                        "name": "bucket",
                        "nodeType": "VariableDeclaration",
                        "scope": 8559,
                        "src": "475:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8553,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "475:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "474:16:37"
                  },
                  "returnParameters": {
                    "id": 8558,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8557,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8559,
                        "src": "514:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8556,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "514:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "513:9:37"
                  },
                  "scope": 8582,
                  "src": "447:76:37",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8564,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "bproDiscountPrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8560,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "552:2:37"
                  },
                  "returnParameters": {
                    "id": 8563,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8562,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8564,
                        "src": "578:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8561,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "578:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "577:9:37"
                  },
                  "scope": 8582,
                  "src": "526:61:37",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8569,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "bproUsdPrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8565,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "611:2:37"
                  },
                  "returnParameters": {
                    "id": 8568,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8567,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8569,
                        "src": "637:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8566,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "637:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "636:9:37"
                  },
                  "scope": 8582,
                  "src": "590:56:37",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8574,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "bproSpotDiscountRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8570,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "678:2:37"
                  },
                  "returnParameters": {
                    "id": 8573,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8572,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8574,
                        "src": "704:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8571,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "704:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "703:9:37"
                  },
                  "scope": 8582,
                  "src": "649:64:37",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8581,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBucketNBPro",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8577,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8576,
                        "name": "bucket",
                        "nodeType": "VariableDeclaration",
                        "scope": 8581,
                        "src": "740:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8575,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "740:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "739:16:37"
                  },
                  "returnParameters": {
                    "id": 8580,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8579,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8581,
                        "src": "779:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8578,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "779:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "778:9:37"
                  },
                  "scope": 8582,
                  "src": "716:72:37",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 8583,
              "src": "33:757:37"
            }
          ],
          "src": "0:791:37"
        },
        "id": 37
      },
      "contracts/feeds/IPriceFeeds.sol": {
        "ast": {
          "absolutePath": "contracts/feeds/IPriceFeeds.sol",
          "exportedSymbols": {
            "IPriceFeeds": [
              8707
            ]
          },
          "id": 8708,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8584,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:38"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 8707,
              "linearizedBaseContracts": [
                8707
              ],
              "name": "IPriceFeeds",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 8595,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queryRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8589,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8586,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8595,
                        "src": "187:19:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8585,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "187:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8588,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8595,
                        "src": "208:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8587,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "208:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "186:40:38"
                  },
                  "returnParameters": {
                    "id": 8594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8591,
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "scope": 8595,
                        "src": "250:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8590,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "250:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8593,
                        "name": "precision",
                        "nodeType": "VariableDeclaration",
                        "scope": 8595,
                        "src": "264:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8592,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "264:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "249:33:38"
                  },
                  "scope": 8707,
                  "src": "168:115:38",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8604,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queryPrecision",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8597,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8604,
                        "src": "310:19:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8596,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "310:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8599,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8604,
                        "src": "331:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8598,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "331:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "309:40:38"
                  },
                  "returnParameters": {
                    "id": 8603,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8602,
                        "name": "precision",
                        "nodeType": "VariableDeclaration",
                        "scope": 8604,
                        "src": "373:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8601,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "373:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "372:19:38"
                  },
                  "scope": 8707,
                  "src": "286:106:38",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8615,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queryReturn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8611,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8606,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8615,
                        "src": "419:19:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8605,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "419:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8608,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8615,
                        "src": "442:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8607,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "442:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8610,
                        "name": "sourceAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8615,
                        "src": "463:20:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8609,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "463:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "415:71:38"
                  },
                  "returnParameters": {
                    "id": 8614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8613,
                        "name": "destAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8615,
                        "src": "510:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8612,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "510:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "509:20:38"
                  },
                  "scope": 8707,
                  "src": "395:135:38",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8630,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "checkPriceDisagreement",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8626,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8617,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8630,
                        "src": "568:19:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8616,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "568:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8619,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8630,
                        "src": "591:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8618,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "591:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8621,
                        "name": "sourceAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8630,
                        "src": "612:20:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8620,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "612:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8623,
                        "name": "destAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8630,
                        "src": "636:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8622,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "636:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8625,
                        "name": "maxSlippage",
                        "nodeType": "VariableDeclaration",
                        "scope": 8630,
                        "src": "658:19:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8624,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "658:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "564:116:38"
                  },
                  "returnParameters": {
                    "id": 8629,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8628,
                        "name": "sourceToDestSwapRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 8630,
                        "src": "704:28:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8627,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "704:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "703:30:38"
                  },
                  "scope": 8707,
                  "src": "533:201:38",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8639,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "amountInEth",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8632,
                        "name": "Token",
                        "nodeType": "VariableDeclaration",
                        "scope": 8639,
                        "src": "758:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8631,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "758:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8634,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8639,
                        "src": "773:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8633,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "773:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "757:31:38"
                  },
                  "returnParameters": {
                    "id": 8638,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8637,
                        "name": "ethAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8639,
                        "src": "812:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8636,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "812:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "811:19:38"
                  },
                  "scope": 8707,
                  "src": "737:94:38",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8654,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMaxDrawdown",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8650,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8641,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8654,
                        "src": "861:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8640,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "861:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8643,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8654,
                        "src": "882:23:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8642,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "882:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8645,
                        "name": "loanAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8654,
                        "src": "909:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8644,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "909:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8647,
                        "name": "collateralAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8654,
                        "src": "931:24:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8646,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "931:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8649,
                        "name": "maintenanceMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 8654,
                        "src": "959:25:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8648,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "959:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "857:130:38"
                  },
                  "returnParameters": {
                    "id": 8653,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8652,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8654,
                        "src": "1011:7:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8651,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1011:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1010:9:38"
                  },
                  "scope": 8707,
                  "src": "834:186:38",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8669,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrentMarginAndCollateralSize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8663,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8656,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8669,
                        "src": "1069:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8655,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1069:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8658,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8669,
                        "src": "1090:23:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8657,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1090:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8660,
                        "name": "loanAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8669,
                        "src": "1117:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8659,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1117:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8662,
                        "name": "collateralAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8669,
                        "src": "1139:24:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8661,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1139:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1065:101:38"
                  },
                  "returnParameters": {
                    "id": 8668,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8665,
                        "name": "currentMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 8669,
                        "src": "1190:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8664,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1190:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8667,
                        "name": "collateralInEthAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8669,
                        "src": "1213:29:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8666,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1213:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1189:54:38"
                  },
                  "scope": 8707,
                  "src": "1023:221:38",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8684,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrentMargin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8678,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8671,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8684,
                        "src": "1276:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8670,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1276:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8673,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8684,
                        "src": "1297:23:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8672,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1297:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8675,
                        "name": "loanAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8684,
                        "src": "1324:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8674,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1324:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8677,
                        "name": "collateralAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8684,
                        "src": "1346:24:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8676,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1346:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1272:101:38"
                  },
                  "returnParameters": {
                    "id": 8683,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8680,
                        "name": "currentMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 8684,
                        "src": "1397:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8679,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1397:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8682,
                        "name": "collateralToLoanRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 8684,
                        "src": "1420:28:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8681,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1420:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1396:53:38"
                  },
                  "scope": 8707,
                  "src": "1247:203:38",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8699,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "shouldLiquidate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8686,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8699,
                        "src": "1481:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8685,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1481:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8688,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8699,
                        "src": "1502:23:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8687,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1502:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8690,
                        "name": "loanAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8699,
                        "src": "1529:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8689,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1529:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8692,
                        "name": "collateralAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 8699,
                        "src": "1551:24:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8691,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1551:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8694,
                        "name": "maintenanceMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 8699,
                        "src": "1579:25:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8693,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1579:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1477:130:38"
                  },
                  "returnParameters": {
                    "id": 8698,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8697,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8699,
                        "src": "1631:4:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8696,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1631:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1630:6:38"
                  },
                  "scope": 8707,
                  "src": "1453:184:38",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8706,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getFastGasPrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8702,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8701,
                        "name": "payToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8706,
                        "src": "1665:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8700,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1665:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1664:18:38"
                  },
                  "returnParameters": {
                    "id": 8705,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8704,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8706,
                        "src": "1706:7:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8703,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1706:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1705:9:38"
                  },
                  "scope": 8707,
                  "src": "1640:75:38",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 8708,
              "src": "143:1574:38"
            }
          ],
          "src": "118:1600:38"
        },
        "id": 38
      },
      "contracts/feeds/IRSKOracle.sol": {
        "ast": {
          "absolutePath": "contracts/feeds/IRSKOracle.sol",
          "exportedSymbols": {
            "IRSKOracle": [
              8732
            ]
          },
          "id": 8733,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8709,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:39"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 8732,
              "linearizedBaseContracts": [
                8732
              ],
              "name": "IRSKOracle",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 8716,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updatePrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8714,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8711,
                        "name": "price",
                        "nodeType": "VariableDeclaration",
                        "scope": 8716,
                        "src": "78:13:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8710,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "78:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8713,
                        "name": "timestamp",
                        "nodeType": "VariableDeclaration",
                        "scope": 8716,
                        "src": "93:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8712,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "93:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "77:34:39"
                  },
                  "returnParameters": {
                    "id": 8715,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "120:0:39"
                  },
                  "scope": 8732,
                  "src": "57:64:39",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8723,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPricing",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8717,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "143:2:39"
                  },
                  "returnParameters": {
                    "id": 8722,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8719,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8723,
                        "src": "169:7:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8718,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "169:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8721,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8723,
                        "src": "178:7:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8720,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "178:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "168:18:39"
                  },
                  "scope": 8732,
                  "src": "124:63:39",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8728,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setOracleAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8726,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8725,
                        "name": "addr",
                        "nodeType": "VariableDeclaration",
                        "scope": 8728,
                        "src": "216:12:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8724,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "216:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "215:14:39"
                  },
                  "returnParameters": {
                    "id": 8727,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "238:0:39"
                  },
                  "scope": 8732,
                  "src": "190:49:39",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8731,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "clearOracleAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8729,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "269:2:39"
                  },
                  "returnParameters": {
                    "id": 8730,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "280:0:39"
                  },
                  "scope": 8732,
                  "src": "242:39:39",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 8733,
              "src": "33:250:39"
            }
          ],
          "src": "0:284:39"
        },
        "id": 39
      },
      "contracts/feeds/IV1PoolOracle.sol": {
        "ast": {
          "absolutePath": "contracts/feeds/IV1PoolOracle.sol",
          "exportedSymbols": {
            "ILiquidityPoolV1Converter": [
              8779
            ],
            "IV1PoolOracle": [
              8771
            ]
          },
          "id": 8780,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8734,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:40"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 8771,
              "linearizedBaseContracts": [
                8771
              ],
              "name": "IV1PoolOracle",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 8753,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "read",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8739,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8736,
                        "name": "price",
                        "nodeType": "VariableDeclaration",
                        "scope": 8753,
                        "src": "74:13:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8735,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "74:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8738,
                        "name": "timestamp",
                        "nodeType": "VariableDeclaration",
                        "scope": 8753,
                        "src": "89:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8737,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "89:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "73:34:40"
                  },
                  "returnParameters": {
                    "id": 8752,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8741,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8753,
                        "src": "141:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8740,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "141:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8743,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8753,
                        "src": "153:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8742,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "153:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8745,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8753,
                        "src": "165:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8744,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "165:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8747,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8753,
                        "src": "177:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8746,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "177:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8749,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8753,
                        "src": "189:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8748,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "189:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8751,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8753,
                        "src": "201:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8750,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "201:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "136:76:40"
                  },
                  "scope": 8771,
                  "src": "60:153:40",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8758,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestAnswer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8754,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "237:2:40"
                  },
                  "returnParameters": {
                    "id": 8757,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8756,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8758,
                        "src": "263:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8755,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "263:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "262:9:40"
                  },
                  "scope": 8771,
                  "src": "216:56:40",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8763,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "liquidityPool",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8759,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "297:2:40"
                  },
                  "returnParameters": {
                    "id": 8762,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8761,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8763,
                        "src": "323:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8760,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "323:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "322:9:40"
                  },
                  "scope": 8771,
                  "src": "275:57:40",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 8770,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestPrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8765,
                        "name": "_baseToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 8770,
                        "src": "356:18:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8764,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "356:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "355:20:40"
                  },
                  "returnParameters": {
                    "id": 8769,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8768,
                        "name": "answer",
                        "nodeType": "VariableDeclaration",
                        "scope": 8770,
                        "src": "399:14:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8767,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "399:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "398:16:40"
                  },
                  "scope": 8771,
                  "src": "335:80:40",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 8780,
              "src": "33:384:40"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 8779,
              "linearizedBaseContracts": [
                8779
              ],
              "name": "ILiquidityPoolV1Converter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 8778,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "reserveTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8774,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8773,
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "scope": 8778,
                        "src": "481:13:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8772,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "481:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "480:15:40"
                  },
                  "returnParameters": {
                    "id": 8777,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8776,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8778,
                        "src": "519:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8775,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "519:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "518:9:40"
                  },
                  "scope": 8779,
                  "src": "458:70:40",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 8780,
              "src": "419:111:40"
            }
          ],
          "src": "0:531:40"
        },
        "id": 40
      },
      "contracts/feeds/PriceFeedRSKOracle.sol": {
        "ast": {
          "absolutePath": "contracts/feeds/PriceFeedRSKOracle.sol",
          "exportedSymbols": {
            "PriceFeedRSKOracle": [
              8872
            ]
          },
          "id": 8873,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8781,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:41"
            },
            {
              "absolutePath": "contracts/feeds/PriceFeeds.sol",
              "file": "./PriceFeeds.sol",
              "id": 8782,
              "nodeType": "ImportDirective",
              "scope": 8873,
              "sourceUnit": 10051,
              "src": "33:26:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/feeds/IRSKOracle.sol",
              "file": "./IRSKOracle.sol",
              "id": 8783,
              "nodeType": "ImportDirective",
              "scope": 8873,
              "sourceUnit": 8733,
              "src": "60:26:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../openzeppelin/Ownable.sol",
              "id": 8784,
              "nodeType": "ImportDirective",
              "scope": 8873,
              "sourceUnit": 41799,
              "src": "87:37:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Address.sol",
              "file": "../openzeppelin/Address.sol",
              "id": 8785,
              "nodeType": "ImportDirective",
              "scope": 8873,
              "sourceUnit": 41099,
              "src": "125:37:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 8786,
                    "name": "IPriceFeedsExt",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9176,
                    "src": "393:14:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                      "typeString": "contract IPriceFeedsExt"
                    }
                  },
                  "id": 8787,
                  "nodeType": "InheritanceSpecifier",
                  "src": "393:14:41"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 8788,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "409:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 8789,
                  "nodeType": "InheritanceSpecifier",
                  "src": "409:7:41"
                }
              ],
              "contractDependencies": [
                9176,
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@notice The Price Feed RSK Oracle contract.\n * This contract implements RSK Oracle query functionality,\ngetting the price and the last timestamp from an external oracle contract.\n",
              "fullyImplemented": true,
              "id": 8872,
              "linearizedBaseContracts": [
                8872,
                41798,
                41125,
                9176
              ],
              "name": "PriceFeedRSKOracle",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 8791,
                  "name": "rskOracleAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 8872,
                  "src": "436:31:41",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8790,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "436:7:41",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 8797,
                  "name": "SetRSKOracleAddress",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 8796,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8793,
                        "indexed": true,
                        "name": "rskOracleAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8797,
                        "src": "512:32:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8792,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "512:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8795,
                        "indexed": false,
                        "name": "changerAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8797,
                        "src": "546:22:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8794,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "546:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "511:58:41"
                  },
                  "src": "486:84:41"
                },
                {
                  "body": {
                    "id": 8806,
                    "nodeType": "Block",
                    "src": "747:46:41",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8803,
                              "name": "_rskOracleAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8799,
                              "src": "771:17:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8802,
                            "name": "setRSKOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8871,
                            "src": "751:19:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 8804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "751:38:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8805,
                        "nodeType": "ExpressionStatement",
                        "src": "751:38:41"
                      }
                    ]
                  },
                  "documentation": "@notice Initialize a new RSK Oracle.\n\t * @param _rskOracleAddress The RSK Oracle address.\n",
                  "id": 8807,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8800,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8799,
                        "name": "_rskOracleAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8807,
                        "src": "713:25:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8798,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "713:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "712:27:41"
                  },
                  "returnParameters": {
                    "id": 8801,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "747:0:41"
                  },
                  "scope": 8872,
                  "src": "701:92:41",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8825,
                    "nodeType": "Block",
                    "src": "940:100:41",
                    "statements": [
                      {
                        "assignments": [
                          8813
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8813,
                            "name": "_rskOracle",
                            "nodeType": "VariableDeclaration",
                            "scope": 8825,
                            "src": "944:21:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRSKOracle_$8732",
                              "typeString": "contract IRSKOracle"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8812,
                              "name": "IRSKOracle",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8732,
                              "src": "944:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRSKOracle_$8732",
                                "typeString": "contract IRSKOracle"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8817,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8815,
                              "name": "rskOracleAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8791,
                              "src": "979:16:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8814,
                            "name": "IRSKOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8732,
                            "src": "968:10:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IRSKOracle_$8732_$",
                              "typeString": "type(contract IRSKOracle)"
                            }
                          },
                          "id": 8816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "968:28:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRSKOracle_$8732",
                            "typeString": "contract IRSKOracle"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "944:52:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 8818,
                                "name": "_price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8810,
                                "src": "1001:6:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              null
                            ],
                            "id": 8819,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "1000:10:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$__$",
                              "typeString": "tuple(uint256,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8820,
                                "name": "_rskOracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8813,
                                "src": "1013:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRSKOracle_$8732",
                                  "typeString": "contract IRSKOracle"
                                }
                              },
                              "id": 8821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getPricing",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8723,
                              "src": "1013:21:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function () view external returns (uint256,uint256)"
                              }
                            },
                            "id": 8822,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1013:23:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "1000:36:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8824,
                        "nodeType": "ExpressionStatement",
                        "src": "1000:36:41"
                      }
                    ]
                  },
                  "documentation": "@notice Get the oracle price.\n@return The price from Oracle.\n",
                  "id": 8826,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestAnswer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8808,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "898:2:41"
                  },
                  "returnParameters": {
                    "id": 8811,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8810,
                        "name": "_price",
                        "nodeType": "VariableDeclaration",
                        "scope": 8826,
                        "src": "924:14:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8809,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "924:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "923:16:41"
                  },
                  "scope": 8872,
                  "src": "877:163:41",
                  "stateMutability": "view",
                  "superFunction": 9175,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8844,
                    "nodeType": "Block",
                    "src": "1207:104:41",
                    "statements": [
                      {
                        "assignments": [
                          8832
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8832,
                            "name": "_rskOracle",
                            "nodeType": "VariableDeclaration",
                            "scope": 8844,
                            "src": "1211:21:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRSKOracle_$8732",
                              "typeString": "contract IRSKOracle"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8831,
                              "name": "IRSKOracle",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8732,
                              "src": "1211:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRSKOracle_$8732",
                                "typeString": "contract IRSKOracle"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8836,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8834,
                              "name": "rskOracleAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8791,
                              "src": "1246:16:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8833,
                            "name": "IRSKOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8732,
                            "src": "1235:10:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IRSKOracle_$8732_$",
                              "typeString": "type(contract IRSKOracle)"
                            }
                          },
                          "id": 8835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1235:28:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRSKOracle_$8732",
                            "typeString": "contract IRSKOracle"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1211:52:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              null,
                              {
                                "argumentTypes": null,
                                "id": 8837,
                                "name": "_timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8829,
                                "src": "1270:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8838,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "1267:14:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$_t_uint256_$",
                              "typeString": "tuple(,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8839,
                                "name": "_rskOracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8832,
                                "src": "1284:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRSKOracle_$8732",
                                  "typeString": "contract IRSKOracle"
                                }
                              },
                              "id": 8840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getPricing",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8723,
                              "src": "1284:21:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function () view external returns (uint256,uint256)"
                              }
                            },
                            "id": 8841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1284:23:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "1267:40:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8843,
                        "nodeType": "ExpressionStatement",
                        "src": "1267:40:41"
                      }
                    ]
                  },
                  "documentation": "@notice Get the las time oracle updated the price.\n@return The latest time.",
                  "id": 8845,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestTimestamp",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8827,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1161:2:41"
                  },
                  "returnParameters": {
                    "id": 8830,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8829,
                        "name": "_timestamp",
                        "nodeType": "VariableDeclaration",
                        "scope": 8845,
                        "src": "1187:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8828,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1187:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1186:20:41"
                  },
                  "scope": 8872,
                  "src": "1137:174:41",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8870,
                    "nodeType": "Block",
                    "src": "1494:188:41",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8855,
                                  "name": "_rskOracleAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8847,
                                  "src": "1525:17:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8853,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "1506:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 8854,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "1506:18:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 8856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1506:37:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5f72736b4f7261636c6541646472657373206e6f74206120636f6e7472616374",
                              "id": 8857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1545:34:41",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1362b137c409fa86212d76eb553fab76dd7aa335761306c54c58dc9fc5b99652",
                                "typeString": "literal_string \"_rskOracleAddress not a contract\""
                              },
                              "value": "_rskOracleAddress not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1362b137c409fa86212d76eb553fab76dd7aa335761306c54c58dc9fc5b99652",
                                "typeString": "literal_string \"_rskOracleAddress not a contract\""
                              }
                            ],
                            "id": 8852,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1498:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1498:82:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8859,
                        "nodeType": "ExpressionStatement",
                        "src": "1498:82:41"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8860,
                            "name": "rskOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8791,
                            "src": "1584:16:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 8861,
                            "name": "_rskOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8847,
                            "src": "1603:17:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1584:36:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8863,
                        "nodeType": "ExpressionStatement",
                        "src": "1584:36:41"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8865,
                              "name": "rskOracleAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8791,
                              "src": "1649:16:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8866,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "1667:3:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1667:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 8864,
                            "name": "SetRSKOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8797,
                            "src": "1629:19:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 8868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1629:49:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8869,
                        "nodeType": "EmitStatement",
                        "src": "1624:54:41"
                      }
                    ]
                  },
                  "documentation": "@notice Set the RSK Oracle address.\n\t * @param _rskOracleAddress The RSK Oracle address.",
                  "id": 8871,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 8850,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 8849,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1484:9:41",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1484:9:41"
                    }
                  ],
                  "name": "setRSKOracleAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8848,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8847,
                        "name": "_rskOracleAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8871,
                        "src": "1450:25:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8846,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1450:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1449:27:41"
                  },
                  "returnParameters": {
                    "id": 8851,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1494:0:41"
                  },
                  "scope": 8872,
                  "src": "1421:261:41",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 8873,
              "src": "362:1322:41"
            }
          ],
          "src": "0:1685:41"
        },
        "id": 41
      },
      "contracts/feeds/PriceFeedV1PoolOracle.sol": {
        "ast": {
          "absolutePath": "contracts/feeds/PriceFeedV1PoolOracle.sol",
          "exportedSymbols": {
            "PriceFeedV1PoolOracle": [
              9164
            ]
          },
          "id": 9165,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8874,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:42"
            },
            {
              "absolutePath": "contracts/feeds/PriceFeeds.sol",
              "file": "./PriceFeeds.sol",
              "id": 8875,
              "nodeType": "ImportDirective",
              "scope": 9165,
              "sourceUnit": 10051,
              "src": "33:26:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/feeds/IV1PoolOracle.sol",
              "file": "./IV1PoolOracle.sol",
              "id": 8876,
              "nodeType": "ImportDirective",
              "scope": 9165,
              "sourceUnit": 8780,
              "src": "60:29:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../openzeppelin/Ownable.sol",
              "id": 8877,
              "nodeType": "ImportDirective",
              "scope": 9165,
              "sourceUnit": 41799,
              "src": "90:37:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Address.sol",
              "file": "../openzeppelin/Address.sol",
              "id": 8878,
              "nodeType": "ImportDirective",
              "scope": 9165,
              "sourceUnit": 41099,
              "src": "128:37:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../openzeppelin/SafeMath.sol",
              "id": 8879,
              "nodeType": "ImportDirective",
              "scope": 9165,
              "sourceUnit": 42310,
              "src": "166:38:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/feeds/IPriceFeeds.sol",
              "file": "./IPriceFeeds.sol",
              "id": 8880,
              "nodeType": "ImportDirective",
              "scope": 9165,
              "sourceUnit": 8708,
              "src": "205:27:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 8881,
                    "name": "IPriceFeedsExt",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9176,
                    "src": "438:14:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                      "typeString": "contract IPriceFeedsExt"
                    }
                  },
                  "id": 8882,
                  "nodeType": "InheritanceSpecifier",
                  "src": "438:14:42"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 8883,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "454:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 8884,
                  "nodeType": "InheritanceSpecifier",
                  "src": "454:7:42"
                }
              ],
              "contractDependencies": [
                9176,
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@notice The Price Feed V1 Pool Oracle contract.\n * This contract implements V1 Pool Oracle query functionality,\ngetting the price from v1 pool oracle.\n",
              "fullyImplemented": true,
              "id": 9164,
              "linearizedBaseContracts": [
                9164,
                41798,
                41125,
                9176
              ],
              "name": "PriceFeedV1PoolOracle",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 8887,
                  "libraryName": {
                    "contractScope": null,
                    "id": 8885,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "471:8:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "465:27:42",
                  "typeName": {
                    "id": 8886,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "484:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 8889,
                  "name": "v1PoolOracleAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9164,
                  "src": "510:34:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8888,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "510:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8891,
                  "name": "wRBTCAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9164,
                  "src": "547:27:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8890,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "547:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8893,
                  "name": "docAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9164,
                  "src": "577:25:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8892,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "577:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 8895,
                  "name": "baseCurrency",
                  "nodeType": "VariableDeclaration",
                  "scope": 9164,
                  "src": "605:27:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8894,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "605:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 8901,
                  "name": "SetV1PoolOracleAddress",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 8900,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8897,
                        "indexed": true,
                        "name": "v1PoolOracleAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8901,
                        "src": "679:35:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8896,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "679:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8899,
                        "indexed": false,
                        "name": "changerAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8901,
                        "src": "716:22:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8898,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "716:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "678:61:42"
                  },
                  "src": "650:90:42"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 8907,
                  "name": "SetWRBTCAddress",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 8906,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8903,
                        "indexed": true,
                        "name": "wRBTCAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8907,
                        "src": "764:28:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8902,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "764:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8905,
                        "indexed": false,
                        "name": "changerAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8907,
                        "src": "794:22:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8904,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "794:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "763:54:42"
                  },
                  "src": "742:76:42"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 8913,
                  "name": "SetDOCAddress",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 8912,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8909,
                        "indexed": true,
                        "name": "docAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8913,
                        "src": "840:26:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8908,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "840:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8911,
                        "indexed": false,
                        "name": "changerAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8913,
                        "src": "868:22:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8910,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "868:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "839:52:42"
                  },
                  "src": "820:72:42"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 8919,
                  "name": "SetBaseCurrency",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 8918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8915,
                        "indexed": true,
                        "name": "baseCurrency",
                        "nodeType": "VariableDeclaration",
                        "scope": 8919,
                        "src": "916:28:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8914,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "916:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8917,
                        "indexed": false,
                        "name": "changerAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8919,
                        "src": "946:22:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8916,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "946:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "915:54:42"
                  },
                  "src": "894:76:42"
                },
                {
                  "body": {
                    "id": 8946,
                    "nodeType": "Block",
                    "src": "1335:149:42",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8931,
                              "name": "_wRBTCAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8923,
                              "src": "1354:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8930,
                            "name": "setRBTCAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9109,
                            "src": "1339:14:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 8932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1339:29:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8933,
                        "nodeType": "ExpressionStatement",
                        "src": "1339:29:42"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8935,
                              "name": "_docAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8925,
                              "src": "1386:11:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8934,
                            "name": "setDOCAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9136,
                            "src": "1372:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 8936,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1372:26:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8937,
                        "nodeType": "ExpressionStatement",
                        "src": "1372:26:42"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8939,
                              "name": "_v1PoolOracleAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8921,
                              "src": "1425:20:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8938,
                            "name": "setV1PoolOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9082,
                            "src": "1402:22:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 8940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1402:44:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8941,
                        "nodeType": "ExpressionStatement",
                        "src": "1402:44:42"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8943,
                              "name": "_baseCurrency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8927,
                              "src": "1466:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8942,
                            "name": "setBaseCurrency",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9163,
                            "src": "1450:15:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 8944,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1450:30:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8945,
                        "nodeType": "ExpressionStatement",
                        "src": "1450:30:42"
                      }
                    ]
                  },
                  "documentation": "@notice Initialize a new V1 Pool Oracle.\n\t * @param _v1PoolOracleAddress The V1 Pool Oracle address.\n@param _wRBTCAddress The wrbtc token address.\n@param _docAddress The doc token address.\n",
                  "id": 8947,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8928,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8921,
                        "name": "_v1PoolOracleAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8947,
                        "src": "1223:28:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8920,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1223:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8923,
                        "name": "_wRBTCAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8947,
                        "src": "1255:21:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8922,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1255:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8925,
                        "name": "_docAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 8947,
                        "src": "1280:19:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8924,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1280:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8927,
                        "name": "_baseCurrency",
                        "nodeType": "VariableDeclaration",
                        "scope": 8947,
                        "src": "1303:21:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8926,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1303:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1219:108:42"
                  },
                  "returnParameters": {
                    "id": 8929,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1335:0:42"
                  },
                  "scope": 9164,
                  "src": "1208:276:42",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8980,
                    "nodeType": "Block",
                    "src": "1624:327:42",
                    "statements": [
                      {
                        "assignments": [
                          8953
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8953,
                            "name": "_v1PoolOracle",
                            "nodeType": "VariableDeclaration",
                            "scope": 8980,
                            "src": "1628:27:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IV1PoolOracle_$8771",
                              "typeString": "contract IV1PoolOracle"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8952,
                              "name": "IV1PoolOracle",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8771,
                              "src": "1628:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IV1PoolOracle_$8771",
                                "typeString": "contract IV1PoolOracle"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8957,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8955,
                              "name": "v1PoolOracleAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8889,
                              "src": "1672:19:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8954,
                            "name": "IV1PoolOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8771,
                            "src": "1658:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IV1PoolOracle_$8771_$",
                              "typeString": "type(contract IV1PoolOracle)"
                            }
                          },
                          "id": 8956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1658:34:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IV1PoolOracle_$8771",
                            "typeString": "contract IV1PoolOracle"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1628:64:42"
                      },
                      {
                        "assignments": [
                          8959
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8959,
                            "name": "_price",
                            "nodeType": "VariableDeclaration",
                            "scope": 8980,
                            "src": "1697:14:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8958,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1697:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8964,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8962,
                              "name": "baseCurrency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8895,
                              "src": "1740:12:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8960,
                              "name": "_v1PoolOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8953,
                              "src": "1714:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IV1PoolOracle_$8771",
                                "typeString": "contract IV1PoolOracle"
                              }
                            },
                            "id": 8961,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "latestPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8770,
                            "src": "1714:25:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 8963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1714:39:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1697:56:42"
                      },
                      {
                        "assignments": [
                          8966
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8966,
                            "name": "priceInUSD",
                            "nodeType": "VariableDeclaration",
                            "scope": 8980,
                            "src": "1834:18:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8965,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1834:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8970,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8968,
                              "name": "_price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8959,
                              "src": "1875:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8967,
                            "name": "_convertAnswerToUsd",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9023,
                            "src": "1855:19:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 8969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1855:27:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1834:48:42"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 8972,
                                "name": "priceInUSD",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8966,
                                "src": "1894:10:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 8973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1908:1:42",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1894:15:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7072696365206572726f72",
                              "id": 8975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1911:13:42",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_37d478220890b07920ef18c5c40fdedbd664b20c8fe2dc2e7e09b6b8ceaa9250",
                                "typeString": "literal_string \"price error\""
                              },
                              "value": "price error"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_37d478220890b07920ef18c5c40fdedbd664b20c8fe2dc2e7e09b6b8ceaa9250",
                                "typeString": "literal_string \"price error\""
                              }
                            ],
                            "id": 8971,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1886:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1886:39:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8977,
                        "nodeType": "ExpressionStatement",
                        "src": "1886:39:42"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8978,
                          "name": "priceInUSD",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8966,
                          "src": "1937:10:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8951,
                        "id": 8979,
                        "nodeType": "Return",
                        "src": "1930:17:42"
                      }
                    ]
                  },
                  "documentation": "@notice Get the oracle price.\n@return The price from Oracle.\n",
                  "id": 8981,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestAnswer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8948,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1589:2:42"
                  },
                  "returnParameters": {
                    "id": 8951,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8950,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 8981,
                        "src": "1615:7:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8949,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1615:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1614:9:42"
                  },
                  "scope": 9164,
                  "src": "1568:383:42",
                  "stateMutability": "view",
                  "superFunction": 9175,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9022,
                    "nodeType": "Block",
                    "src": "2035:417:42",
                    "statements": [
                      {
                        "assignments": [
                          8989
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8989,
                            "name": "_priceFeeds",
                            "nodeType": "VariableDeclaration",
                            "scope": 9022,
                            "src": "2039:19:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8988,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2039:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8992,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8990,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44994,
                            "src": "2061:3:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 8991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2061:10:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2039:32:42"
                      },
                      {
                        "assignments": [
                          8994
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8994,
                            "name": "precision",
                            "nodeType": "VariableDeclaration",
                            "scope": 9022,
                            "src": "2076:17:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8993,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2076:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9002,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8999,
                              "name": "wRBTCAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8891,
                              "src": "2136:12:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9000,
                              "name": "docAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8893,
                              "src": "2150:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8996,
                                  "name": "_priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8989,
                                  "src": "2108:11:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8995,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "2096:11:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 8997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2096:24:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 8998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queryPrecision",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8604,
                            "src": "2096:39:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 9001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2096:65:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2076:85:42"
                      },
                      {
                        "assignments": [
                          9004
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9004,
                            "name": "valueInUSD",
                            "nodeType": "VariableDeclaration",
                            "scope": 9022,
                            "src": "2165:18:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9003,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2165:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9013,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9009,
                              "name": "wRBTCAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8891,
                              "src": "2223:12:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9010,
                              "name": "docAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8893,
                              "src": "2237:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9011,
                              "name": "_valueInBTC",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8983,
                              "src": "2249:11:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9006,
                                  "name": "_priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8989,
                                  "src": "2198:11:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 9005,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "2186:11:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 9007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2186:24:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 9008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queryReturn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8615,
                            "src": "2186:36:42",
                            "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": 9012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2186:75:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2165:96:42"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31653138",
                              "id": 9019,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2443:4:42",
                              "subdenomination": null,
                              "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"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9016,
                                  "name": "precision",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8994,
                                  "src": "2428:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9014,
                                  "name": "valueInUSD",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9004,
                                  "src": "2413:10:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 9015,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "2413:14:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 9017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2413:25:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9018,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "2413:29:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 9020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2413:35:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8987,
                        "id": 9021,
                        "nodeType": "Return",
                        "src": "2406:42:42"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 9023,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_convertAnswerToUsd",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8984,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8983,
                        "name": "_valueInBTC",
                        "nodeType": "VariableDeclaration",
                        "scope": 9023,
                        "src": "1983:19:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8982,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1983:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1982:21:42"
                  },
                  "returnParameters": {
                    "id": 8987,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8986,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9023,
                        "src": "2026:7:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8985,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2026:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2025:9:42"
                  },
                  "scope": 9164,
                  "src": "1954:498:42",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 9081,
                    "nodeType": "Block",
                    "src": "2652:554:42",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9033,
                                  "name": "_v1PoolOracleAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9025,
                                  "src": "2683:20:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9031,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "2664:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 9032,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "2664:18:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 9034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2664:40:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5f7631506f6f6c4f7261636c6541646472657373206e6f74206120636f6e7472616374",
                              "id": 9035,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2706:37:42",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6140b13804a9362d382cae47a465121d7007e4cc4cc3473ed7e2d22faf5b7875",
                                "typeString": "literal_string \"_v1PoolOracleAddress not a contract\""
                              },
                              "value": "_v1PoolOracleAddress not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6140b13804a9362d382cae47a465121d7007e4cc4cc3473ed7e2d22faf5b7875",
                                "typeString": "literal_string \"_v1PoolOracleAddress not a contract\""
                              }
                            ],
                            "id": 9030,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2656:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2656:88:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9037,
                        "nodeType": "ExpressionStatement",
                        "src": "2656:88:42"
                      },
                      {
                        "assignments": [
                          9039
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9039,
                            "name": "_v1PoolOracle",
                            "nodeType": "VariableDeclaration",
                            "scope": 9081,
                            "src": "2748:27:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IV1PoolOracle_$8771",
                              "typeString": "contract IV1PoolOracle"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 9038,
                              "name": "IV1PoolOracle",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8771,
                              "src": "2748:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IV1PoolOracle_$8771",
                                "typeString": "contract IV1PoolOracle"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9043,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9041,
                              "name": "_v1PoolOracleAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9025,
                              "src": "2792:20:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9040,
                            "name": "IV1PoolOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8771,
                            "src": "2778:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IV1PoolOracle_$8771_$",
                              "typeString": "type(contract IV1PoolOracle)"
                            }
                          },
                          "id": 9042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2778:35:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IV1PoolOracle_$8771",
                            "typeString": "contract IV1PoolOracle"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2748:65:42"
                      },
                      {
                        "assignments": [
                          9045
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9045,
                            "name": "liquidityPool",
                            "nodeType": "VariableDeclaration",
                            "scope": 9081,
                            "src": "2817:21:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 9044,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2817:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9049,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9046,
                              "name": "_v1PoolOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9039,
                              "src": "2841:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IV1PoolOracle_$8771",
                                "typeString": "contract IV1PoolOracle"
                              }
                            },
                            "id": 9047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "liquidityPool",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8763,
                            "src": "2841:27:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 9048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2841:29:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2817:53:42"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 9067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 9058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 9055,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2941:1:42",
                                      "subdenomination": null,
                                      "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"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 9052,
                                          "name": "liquidityPool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9045,
                                          "src": "2912:13:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 9051,
                                        "name": "ILiquidityPoolV1Converter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8779,
                                        "src": "2886:25:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_ILiquidityPoolV1Converter_$8779_$",
                                          "typeString": "type(contract ILiquidityPoolV1Converter)"
                                        }
                                      },
                                      "id": 9053,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2886:40:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ILiquidityPoolV1Converter_$8779",
                                        "typeString": "contract ILiquidityPoolV1Converter"
                                      }
                                    },
                                    "id": 9054,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "reserveTokens",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 8778,
                                    "src": "2886:54:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                                      "typeString": "function (uint256) view external returns (address)"
                                    }
                                  },
                                  "id": 9056,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2886:57:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 9057,
                                  "name": "wRBTCAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8891,
                                  "src": "2947:12:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2886:73:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 9066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9063,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3022:1:42",
                                      "subdenomination": null,
                                      "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"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 9060,
                                          "name": "liquidityPool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9045,
                                          "src": "2993:13:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 9059,
                                        "name": "ILiquidityPoolV1Converter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8779,
                                        "src": "2967:25:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_ILiquidityPoolV1Converter_$8779_$",
                                          "typeString": "type(contract ILiquidityPoolV1Converter)"
                                        }
                                      },
                                      "id": 9061,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2967:40:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ILiquidityPoolV1Converter_$8779",
                                        "typeString": "contract ILiquidityPoolV1Converter"
                                      }
                                    },
                                    "id": 9062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "reserveTokens",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 8778,
                                    "src": "2967:54:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                                      "typeString": "function (uint256) view external returns (address)"
                                    }
                                  },
                                  "id": 9064,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2967:57:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 9065,
                                  "name": "wRBTCAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8891,
                                  "src": "3028:12:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2967:73:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2886:154:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6f6e65206f66207468652074776f207265736572766573206e6565647320746f206265207772627463",
                              "id": 9068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3045:43:42",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_211830542bfdc394f12c636c441fffef3a711345753f8040f9dba56b716ea240",
                                "typeString": "literal_string \"one of the two reserves needs to be wrbtc\""
                              },
                              "value": "one of the two reserves needs to be wrbtc"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_211830542bfdc394f12c636c441fffef3a711345753f8040f9dba56b716ea240",
                                "typeString": "literal_string \"one of the two reserves needs to be wrbtc\""
                              }
                            ],
                            "id": 9050,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2874:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2874:218:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9070,
                        "nodeType": "ExpressionStatement",
                        "src": "2874:218:42"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 9071,
                            "name": "v1PoolOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8889,
                            "src": "3096:19:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 9072,
                            "name": "_v1PoolOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9025,
                            "src": "3118:20:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3096:42:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9074,
                        "nodeType": "ExpressionStatement",
                        "src": "3096:42:42"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9076,
                              "name": "v1PoolOracleAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8889,
                              "src": "3170:19:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9077,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "3191:3:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9078,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3191:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 9075,
                            "name": "SetV1PoolOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8901,
                            "src": "3147:22:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 9079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3147:55:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9080,
                        "nodeType": "EmitStatement",
                        "src": "3142:60:42"
                      }
                    ]
                  },
                  "documentation": "@notice Set the V1 Pool Oracle address.\n\t * @param _v1PoolOracleAddress The V1 Pool Oracle address.",
                  "id": 9082,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 9028,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 9027,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2642:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2642:9:42"
                    }
                  ],
                  "name": "setV1PoolOracleAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9026,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9025,
                        "name": "_v1PoolOracleAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 9082,
                        "src": "2605:28:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9024,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2605:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2604:30:42"
                  },
                  "returnParameters": {
                    "id": 9029,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2652:0:42"
                  },
                  "scope": 9164,
                  "src": "2573:633:42",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9108,
                    "nodeType": "Block",
                    "src": "3489:166:42",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9090,
                                "name": "_wRBTCAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9084,
                                "src": "3501:13:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 9092,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3526:1:42",
                                    "subdenomination": null,
                                    "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": 9091,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3518:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 9093,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3518:10:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3501:27:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "775242544320616464726573732063616e6e6f74206265207a65726f2061646472657373",
                              "id": 9095,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3530:38:42",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bd5112f65e5146e36f7c9668e7da83c9b22f06be89e0aa983d02e17e2c066a0a",
                                "typeString": "literal_string \"wRBTC address cannot be zero address\""
                              },
                              "value": "wRBTC address cannot be zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_bd5112f65e5146e36f7c9668e7da83c9b22f06be89e0aa983d02e17e2c066a0a",
                                "typeString": "literal_string \"wRBTC address cannot be zero address\""
                              }
                            ],
                            "id": 9089,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3493:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3493:76:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9097,
                        "nodeType": "ExpressionStatement",
                        "src": "3493:76:42"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 9098,
                            "name": "wRBTCAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8891,
                            "src": "3573:12:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 9099,
                            "name": "_wRBTCAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9084,
                            "src": "3588:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3573:28:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9101,
                        "nodeType": "ExpressionStatement",
                        "src": "3573:28:42"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9103,
                              "name": "wRBTCAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8891,
                              "src": "3626:12:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9104,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "3640:3:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3640:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 9102,
                            "name": "SetWRBTCAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8907,
                            "src": "3610:15:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 9106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3610:41:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9107,
                        "nodeType": "EmitStatement",
                        "src": "3605:46:42"
                      }
                    ]
                  },
                  "documentation": "@notice Set the rBtc address. V1 pool based price is BTC, so need to convert the value from v1 pool to USD. That's why we need to get the price of the rBtc\n\t * @param _wRBTCAddress The rBTC address",
                  "id": 9109,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 9087,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 9086,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "3479:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3479:9:42"
                    }
                  ],
                  "name": "setRBTCAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9085,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9084,
                        "name": "_wRBTCAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 9109,
                        "src": "3449:21:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9083,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3449:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3448:23:42"
                  },
                  "returnParameters": {
                    "id": 9088,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3489:0:42"
                  },
                  "scope": 9164,
                  "src": "3425:230:42",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9135,
                    "nodeType": "Block",
                    "src": "3930:155:42",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9121,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9117,
                                "name": "_docAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9111,
                                "src": "3942:11:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 9119,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3965:1:42",
                                    "subdenomination": null,
                                    "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": 9118,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3957:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 9120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3957:10:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3942:25:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "444f4320616464726573732063616e6e6f74206265207a65726f2061646472657373",
                              "id": 9122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3969:36:42",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ff1f56325740ce9a8c93cc25e9fb79eea6600bcb0f6c81d007358d8c455e6fcb",
                                "typeString": "literal_string \"DOC address cannot be zero address\""
                              },
                              "value": "DOC address cannot be zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ff1f56325740ce9a8c93cc25e9fb79eea6600bcb0f6c81d007358d8c455e6fcb",
                                "typeString": "literal_string \"DOC address cannot be zero address\""
                              }
                            ],
                            "id": 9116,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3934:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3934:72:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9124,
                        "nodeType": "ExpressionStatement",
                        "src": "3934:72:42"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 9125,
                            "name": "docAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8893,
                            "src": "4010:10:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 9126,
                            "name": "_docAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9111,
                            "src": "4023:11:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4010:24:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9128,
                        "nodeType": "ExpressionStatement",
                        "src": "4010:24:42"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9130,
                              "name": "_docAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9111,
                              "src": "4057:11:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9131,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "4070:3:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4070:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 9129,
                            "name": "SetDOCAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8913,
                            "src": "4043:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 9133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4043:38:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9134,
                        "nodeType": "EmitStatement",
                        "src": "4038:43:42"
                      }
                    ]
                  },
                  "documentation": "@notice Set the DoC address. V1 pool based price is BTC, so need to convert the value from v1 pool to USD. That's why we need to get the price of the DoC\n\t * @param _docAddress The DoC address",
                  "id": 9136,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 9114,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 9113,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "3920:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3920:9:42"
                    }
                  ],
                  "name": "setDOCAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9112,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9111,
                        "name": "_docAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 9136,
                        "src": "3892:19:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9110,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3892:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3891:21:42"
                  },
                  "returnParameters": {
                    "id": 9115,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3930:0:42"
                  },
                  "scope": 9164,
                  "src": "3869:216:42",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9162,
                    "nodeType": "Block",
                    "src": "4307:175:42",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9144,
                                "name": "_baseCurrency",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9138,
                                "src": "4319:13:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 9146,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4344:1:42",
                                    "subdenomination": null,
                                    "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": 9145,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4336:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 9147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4336:10:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4319:27:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426173652063757272656e637920616464726573732063616e6e6f74206265207a65726f2061646472657373",
                              "id": 9149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4348:46:42",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_baed8f0aa88ffa1ea39fe6603155e8c820ab5ad129f34c95dde74b9aed767844",
                                "typeString": "literal_string \"Base currency address cannot be zero address\""
                              },
                              "value": "Base currency address cannot be zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_baed8f0aa88ffa1ea39fe6603155e8c820ab5ad129f34c95dde74b9aed767844",
                                "typeString": "literal_string \"Base currency address cannot be zero address\""
                              }
                            ],
                            "id": 9143,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4311:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4311:84:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9151,
                        "nodeType": "ExpressionStatement",
                        "src": "4311:84:42"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 9152,
                            "name": "baseCurrency",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8895,
                            "src": "4399:12:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 9153,
                            "name": "_baseCurrency",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9138,
                            "src": "4414:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4399:28:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9155,
                        "nodeType": "ExpressionStatement",
                        "src": "4399:28:42"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9157,
                              "name": "_baseCurrency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9138,
                              "src": "4452:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9158,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "4467:3:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4467:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 9156,
                            "name": "SetBaseCurrency",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8919,
                            "src": "4436:15:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 9160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4436:42:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9161,
                        "nodeType": "EmitStatement",
                        "src": "4431:47:42"
                      }
                    ]
                  },
                  "documentation": "@notice Set the base currency address. That's the reserve address which is not WRBTC\n\t * @param _baseCurrency The base currency address",
                  "id": 9163,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 9141,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 9140,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "4297:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4297:9:42"
                    }
                  ],
                  "name": "setBaseCurrency",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9139,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9138,
                        "name": "_baseCurrency",
                        "nodeType": "VariableDeclaration",
                        "scope": 9163,
                        "src": "4267:21:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9137,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4267:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4266:23:42"
                  },
                  "returnParameters": {
                    "id": 9142,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4307:0:42"
                  },
                  "scope": 9164,
                  "src": "4242:240:42",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 9165,
              "src": "404:4080:42"
            }
          ],
          "src": "0:4485:42"
        },
        "id": 42
      },
      "contracts/feeds/PriceFeeds.sol": {
        "ast": {
          "absolutePath": "contracts/feeds/PriceFeeds.sol",
          "exportedSymbols": {
            "IPriceFeedsExt": [
              9176
            ],
            "PriceFeeds": [
              10050
            ]
          },
          "id": 10051,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9166,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:43"
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../openzeppelin/SafeMath.sol",
              "id": 9167,
              "nodeType": "ImportDirective",
              "scope": 10051,
              "sourceUnit": 42310,
              "src": "143:38:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../openzeppelin/Ownable.sol",
              "id": 9168,
              "nodeType": "ImportDirective",
              "scope": 10051,
              "sourceUnit": 41799,
              "src": "182:37:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 9169,
              "nodeType": "ImportDirective",
              "scope": 10051,
              "sourceUnit": 24700,
              "src": "220:34:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/feeds/PriceFeedsConstants.sol",
              "file": "./PriceFeedsConstants.sol",
              "id": 9170,
              "nodeType": "ImportDirective",
              "scope": 10051,
              "sourceUnit": 10120,
              "src": "255:35:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 9176,
              "linearizedBaseContracts": [
                9176
              ],
              "name": "IPriceFeedsExt",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 9175,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestAnswer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9171,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "341:2:43"
                  },
                  "returnParameters": {
                    "id": 9174,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9173,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9175,
                        "src": "367:7:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9172,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "367:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "366:9:43"
                  },
                  "scope": 9176,
                  "src": "320:56:43",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 10051,
              "src": "292:86:43"
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 9177,
                    "name": "Constants",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10119,
                    "src": "836:9:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Constants_$10119",
                      "typeString": "contract Constants"
                    }
                  },
                  "id": 9178,
                  "nodeType": "InheritanceSpecifier",
                  "src": "836:9:43"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 9179,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "847:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 9180,
                  "nodeType": "InheritanceSpecifier",
                  "src": "847:7:43"
                }
              ],
              "contractDependencies": [
                10119,
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title The Price Feeds contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract queries the price feeds contracts where\noracles updates token prices computing relative token prices.\nAnd besides it includes some calculations about loans such as\ndrawdown, margin and collateral.\n",
              "fullyImplemented": true,
              "id": 10050,
              "linearizedBaseContracts": [
                10050,
                41798,
                41125,
                10119
              ],
              "name": "PriceFeeds",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 9183,
                  "libraryName": {
                    "contractScope": null,
                    "id": 9181,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "864:8:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "858:27:43",
                  "typeName": {
                    "id": 9182,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "877:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 9189,
                  "name": "GlobalPricingPaused",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9185,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 9189,
                        "src": "929:22:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9184,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "929:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9187,
                        "indexed": true,
                        "name": "isPaused",
                        "nodeType": "VariableDeclaration",
                        "scope": 9189,
                        "src": "953:21:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9186,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "953:4:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "928:47:43"
                  },
                  "src": "903:73:43"
                },
                {
                  "constant": false,
                  "id": 9193,
                  "name": "pricesFeeds",
                  "nodeType": "VariableDeclaration",
                  "scope": 10050,
                  "src": "1060:53:43",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_contract$_IPriceFeedsExt_$9176_$",
                    "typeString": "mapping(address => contract IPriceFeedsExt)"
                  },
                  "typeName": {
                    "id": 9192,
                    "keyType": {
                      "id": 9190,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1068:7:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1060:34:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_contract$_IPriceFeedsExt_$9176_$",
                      "typeString": "mapping(address => contract IPriceFeedsExt)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 9191,
                      "name": "IPriceFeedsExt",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 9176,
                      "src": "1079:14:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                        "typeString": "contract IPriceFeedsExt"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 9197,
                  "name": "decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 10050,
                  "src": "1152:43:43",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 9196,
                    "keyType": {
                      "id": 9194,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1160:7:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1152:27:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 9195,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1171:7:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 9200,
                  "name": "protocolTokenEthPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 10050,
                  "src": "1247:51:43",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9198,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1247:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "302e30303032",
                    "id": 9199,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1286:12:43",
                    "subdenomination": "ether",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_200000000000000_by_1",
                      "typeString": "int_const 200000000000000"
                    },
                    "value": "0.0002"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 9203,
                  "name": "globalPricingPaused",
                  "nodeType": "VariableDeclaration",
                  "scope": 10050,
                  "src": "1331:39:43",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9201,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1331:4:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 9202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1365:5:43",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9238,
                    "nodeType": "Block",
                    "src": "1775:230:43",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 9212,
                              "name": "decimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9197,
                              "src": "1814:8:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 9216,
                            "indexExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 9214,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1831:1:43",
                                  "subdenomination": null,
                                  "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": 9213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1823:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 9215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1823:10:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1814:20:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3138",
                            "id": 9217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1837:2:43",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_18_by_1",
                              "typeString": "int_const 18"
                            },
                            "value": "18"
                          },
                          "src": "1814:25:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9219,
                        "nodeType": "ExpressionStatement",
                        "src": "1814:25:43"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 9220,
                              "name": "decimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9197,
                              "src": "1843:8:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 9222,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 9221,
                              "name": "_wrbtcTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9205,
                              "src": "1852:18:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1843:28:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3138",
                            "id": 9223,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1874:2:43",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_18_by_1",
                              "typeString": "int_const 18"
                            },
                            "value": "18"
                          },
                          "src": "1843:33:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9225,
                        "nodeType": "ExpressionStatement",
                        "src": "1843:33:43"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9227,
                              "name": "_wrbtcTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9205,
                              "src": "1895:18:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9226,
                            "name": "_setWrbtcToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10080,
                            "src": "1880:14:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 9228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1880:34:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9229,
                        "nodeType": "ExpressionStatement",
                        "src": "1880:34:43"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9231,
                              "name": "_protocolTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9207,
                              "src": "1943:21:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9230,
                            "name": "_setProtocolTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10098,
                            "src": "1918:24:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 9232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1918:47:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9233,
                        "nodeType": "ExpressionStatement",
                        "src": "1918:47:43"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9235,
                              "name": "_baseTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9209,
                              "src": "1983:17:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9234,
                            "name": "_setBaseToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10118,
                            "src": "1969:13:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 9236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1969:32:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9237,
                        "nodeType": "ExpressionStatement",
                        "src": "1969:32:43"
                      }
                    ]
                  },
                  "documentation": "@notice Contract deployment requires 3 parameters.\n\t * @param _wrbtcTokenAddress The address of the wrapped wrBTC token.\n@param _protocolTokenAddress The address of the protocol token.\n@param _baseTokenAddress The address of the base token.\n",
                  "id": 9239,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9210,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9205,
                        "name": "_wrbtcTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 9239,
                        "src": "1676:26:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9204,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1676:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9207,
                        "name": "_protocolTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 9239,
                        "src": "1706:29:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9206,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1706:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9209,
                        "name": "_baseTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 9239,
                        "src": "1739:25:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9208,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1739:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1672:95:43"
                  },
                  "returnParameters": {
                    "id": 9211,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1775:0:43"
                  },
                  "scope": 10050,
                  "src": "1661:344:43",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9255,
                    "nodeType": "Block",
                    "src": "2463:49:43",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9251,
                              "name": "sourceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9241,
                              "src": "2485:11:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9252,
                              "name": "destToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9243,
                              "src": "2498:9:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9250,
                            "name": "_queryRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9967,
                            "src": "2474:10:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address) view returns (uint256,uint256)"
                            }
                          },
                          "id": 9253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2474:34:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 9249,
                        "id": 9254,
                        "nodeType": "Return",
                        "src": "2467:41:43"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the price ratio between two tokens.\n\t * @dev Public wrapper for _queryRate internal function.\n\t * @param sourceToken The address of the source tokens.\n@param destToken The address of the destiny tokens.\n\t * @return rate The price ratio source/dest.\n@return precision The ratio precision.\n",
                  "id": 9256,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queryRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9244,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9241,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9256,
                        "src": "2369:19:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9240,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2369:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9243,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9256,
                        "src": "2390:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9242,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2390:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2368:40:43"
                  },
                  "returnParameters": {
                    "id": 9249,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9246,
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "scope": 9256,
                        "src": "2430:12:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9245,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2430:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9248,
                        "name": "precision",
                        "nodeType": "VariableDeclaration",
                        "scope": 9256,
                        "src": "2444:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9247,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2444:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2429:33:43"
                  },
                  "scope": 10050,
                  "src": "2350:162:43",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9277,
                    "nodeType": "Block",
                    "src": "2924:95:43",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 9267,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 9265,
                              "name": "sourceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9258,
                              "src": "2935:11:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 9266,
                              "name": "destToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9260,
                              "src": "2950:9:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "2935:24:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 9274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 9272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3009:2:43",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 9273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3013:2:43",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "3009:6:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "id": 9275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "2935:80:43",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9269,
                                "name": "sourceToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9258,
                                "src": "2983:11:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9270,
                                "name": "destToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9260,
                                "src": "2996:9:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 9268,
                              "name": "_getDecimalPrecision",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10049,
                              "src": "2962:20:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address,address) view returns (uint256)"
                              }
                            },
                            "id": 9271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2962:44:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 9264,
                        "id": 9276,
                        "nodeType": "Return",
                        "src": "2928:87:43"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the relative precision between two tokens.\n\t * @dev Public wrapper for _getDecimalPrecision internal function.\n\t * @param sourceToken The address of the source tokens.\n@param destToken The address of the destiny tokens.\n\t * @return The precision ratio source/dest.\n",
                  "id": 9278,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queryPrecision",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9261,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9258,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9278,
                        "src": "2854:19:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9257,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2854:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9260,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9278,
                        "src": "2875:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9259,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2875:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2853:40:43"
                  },
                  "returnParameters": {
                    "id": 9264,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9263,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9278,
                        "src": "2915:7:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9262,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2915:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2914:9:43"
                  },
                  "scope": 10050,
                  "src": "2830:189:43",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9313,
                    "nodeType": "Block",
                    "src": "3690:180:43",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 9289,
                          "name": "globalPricingPaused",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9203,
                          "src": "3698:19:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 9293,
                        "nodeType": "IfStatement",
                        "src": "3694:43:43",
                        "trueBody": {
                          "id": 9292,
                          "nodeType": "Block",
                          "src": "3719:18:43",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 9290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3731:1:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 9288,
                              "id": 9291,
                              "nodeType": "Return",
                              "src": "3724:8:43"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          9295,
                          9297
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9295,
                            "name": "rate",
                            "nodeType": "VariableDeclaration",
                            "scope": 9313,
                            "src": "3742:12:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9294,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3742:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 9297,
                            "name": "precision",
                            "nodeType": "VariableDeclaration",
                            "scope": 9313,
                            "src": "3756:17:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9296,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3756:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9302,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9299,
                              "name": "sourceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9280,
                              "src": "3788:11:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9300,
                              "name": "destToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9282,
                              "src": "3801:9:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9298,
                            "name": "_queryRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9967,
                            "src": "3777:10:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address) view returns (uint256,uint256)"
                            }
                          },
                          "id": 9301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3777:34:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3741:70:43"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 9303,
                            "name": "destAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9287,
                            "src": "3816:10:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9309,
                                "name": "precision",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9297,
                                "src": "3856:9:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9306,
                                    "name": "rate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9295,
                                    "src": "3846:4:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9304,
                                    "name": "sourceAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9284,
                                    "src": "3829:12:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9305,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "3829:16:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 9307,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3829:22:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "3829:26:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 9310,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3829:37:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3816:50:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9312,
                        "nodeType": "ExpressionStatement",
                        "src": "3816:50:43"
                      }
                    ]
                  },
                  "documentation": "@notice Price conversor: Calculate the price of an amount of source\ntokens in destiny token units.\n\t * @dev NOTE: This function returns 0 during a pause, rather than a revert.\nEnsure calling contracts handle correctly.\n\t * @param sourceToken The address of the source tokens.\n@param destToken The address of the destiny tokens.\n@param sourceAmount The amount of the source tokens.\n\t * @return destAmount The amount of destiny tokens equivalent in price\n  to the amount of source tokens.\n",
                  "id": 9314,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queryReturn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9280,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9314,
                        "src": "3581:19:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9279,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3581:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9282,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9314,
                        "src": "3604:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9281,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3604:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9284,
                        "name": "sourceAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9314,
                        "src": "3625:20:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9283,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3625:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3577:71:43"
                  },
                  "returnParameters": {
                    "id": 9288,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9287,
                        "name": "destAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9314,
                        "src": "3670:18:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9286,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3670:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3669:20:43"
                  },
                  "scope": 10050,
                  "src": "3557:313:43",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9384,
                    "nodeType": "Block",
                    "src": "4808:429:43",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "4820:20:43",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 9330,
                                "name": "globalPricingPaused",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9203,
                                "src": "4821:19:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "70726963696e6720697320706175736564",
                              "id": 9332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4842:19:43",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a691bf5e21c6bc6589b3bb5e4ec447b6123fc63906ff665341e863b863542691",
                                "typeString": "literal_string \"pricing is paused\""
                              },
                              "value": "pricing is paused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a691bf5e21c6bc6589b3bb5e4ec447b6123fc63906ff665341e863b863542691",
                                "typeString": "literal_string \"pricing is paused\""
                              }
                            ],
                            "id": 9329,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4812:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4812:50:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9334,
                        "nodeType": "ExpressionStatement",
                        "src": "4812:50:43"
                      },
                      {
                        "assignments": [
                          9336,
                          9338
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9336,
                            "name": "rate",
                            "nodeType": "VariableDeclaration",
                            "scope": 9384,
                            "src": "4867:12:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9335,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4867:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 9338,
                            "name": "precision",
                            "nodeType": "VariableDeclaration",
                            "scope": 9384,
                            "src": "4881:17:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9337,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4881:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9343,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9340,
                              "name": "sourceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9316,
                              "src": "4913:11:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9341,
                              "name": "destToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9318,
                              "src": "4926:9:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9339,
                            "name": "_queryRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9967,
                            "src": "4902:10:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address) view returns (uint256,uint256)"
                            }
                          },
                          "id": 9342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4902:34:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4866:70:43"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 9344,
                            "name": "sourceToDestSwapRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9327,
                            "src": "4941:20:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9350,
                                "name": "sourceAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9320,
                                "src": "4994:12:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9347,
                                    "name": "precision",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9338,
                                    "src": "4979:9:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9345,
                                    "name": "destAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9322,
                                    "src": "4964:10:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9346,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "4964:14:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 9348,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4964:25:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "4964:29:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 9351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4964:43:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4941:66:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9353,
                        "nodeType": "ExpressionStatement",
                        "src": "4941:66:43"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9354,
                            "name": "rate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9336,
                            "src": "5016:4:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9355,
                            "name": "sourceToDestSwapRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9327,
                            "src": "5023:20:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5016:27:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 9383,
                        "nodeType": "IfStatement",
                        "src": "5012:222:43",
                        "trueBody": {
                          "id": 9382,
                          "nodeType": "Block",
                          "src": "5045:189:43",
                          "statements": [
                            {
                              "assignments": [
                                9358
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9358,
                                  "name": "spreadValue",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9382,
                                  "src": "5050:19:43",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9357,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5050:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9362,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 9359,
                                  "name": "rate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9336,
                                  "src": "5072:4:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 9360,
                                  "name": "sourceToDestSwapRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9327,
                                  "src": "5079:20:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5072:27:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5050:49:43"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9363,
                                  "name": "spreadValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9358,
                                  "src": "5104:11:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9371,
                                      "name": "sourceToDestSwapRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9327,
                                      "src": "5146:20:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                            "typeString": "int_const 100000000000000000000"
                                          },
                                          "id": 9368,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3130",
                                            "id": 9366,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5134:2:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3230",
                                            "id": 9367,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5138:2:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_20_by_1",
                                              "typeString": "int_const 20"
                                            },
                                            "value": "20"
                                          },
                                          "src": "5134:6:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                            "typeString": "int_const 100000000000000000000"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                            "typeString": "int_const 100000000000000000000"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 9364,
                                          "name": "spreadValue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9358,
                                          "src": "5118:11:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 9365,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "5118:15:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 9369,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5118:23:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9370,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "5118:27:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 9372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5118:49:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5104:63:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9374,
                              "nodeType": "ExpressionStatement",
                              "src": "5104:63:43"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9378,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 9376,
                                      "name": "spreadValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9358,
                                      "src": "5180:11:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 9377,
                                      "name": "maxSlippage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9324,
                                      "src": "5195:11:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5180:26:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "70726963652064697361677265656d656e74",
                                    "id": 9379,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5208:20:43",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_be68f323a8646a746c8ed6b50bde0a91436025dee4d07a71839ca73cab54d657",
                                      "typeString": "literal_string \"price disagreement\""
                                    },
                                    "value": "price disagreement"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_be68f323a8646a746c8ed6b50bde0a91436025dee4d07a71839ca73cab54d657",
                                      "typeString": "literal_string \"price disagreement\""
                                    }
                                  ],
                                  "id": 9375,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "5172:7:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 9380,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5172:57:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9381,
                              "nodeType": "ExpressionStatement",
                              "src": "5172:57:43"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the swap rate between two tokens.\n\t * Regarding slippage, there is a hardcoded slippage limit of 5%, enforced\nby this function for all borrowing, lending and margin trading\noriginated swaps performed in the Sovryn exchange.\n\t * This means all operations in the Sovryn exchange are subject to losing\nup to 5% from the internal swap performed.\n\t * @param sourceToken The address of the source tokens.\n@param destToken The address of the destiny tokens.\n@param sourceAmount The amount of source tokens.\n@param destAmount The amount of destiny tokens.\n@param maxSlippage The maximum slippage limit.\n\t * @return sourceToDestSwapRate The swap rate between tokens.\n",
                  "id": 9385,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "checkPriceDisagreement",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9325,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9316,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9385,
                        "src": "4644:19:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9315,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4644:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9318,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9385,
                        "src": "4667:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9317,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4667:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9320,
                        "name": "sourceAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9385,
                        "src": "4688:20:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9319,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4688:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9322,
                        "name": "destAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9385,
                        "src": "4712:18:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9321,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4712:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9324,
                        "name": "maxSlippage",
                        "nodeType": "VariableDeclaration",
                        "scope": 9385,
                        "src": "4734:19:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9323,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4734:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4640:116:43"
                  },
                  "returnParameters": {
                    "id": 9328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9327,
                        "name": "sourceToDestSwapRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 9385,
                        "src": "4778:28:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9326,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4778:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4777:30:43"
                  },
                  "scope": 10050,
                  "src": "4609:628:43",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9427,
                    "nodeType": "Block",
                    "src": "5753:290:43",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9394,
                            "name": "tokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9387,
                            "src": "5811:12:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9396,
                                "name": "wrbtcToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10056,
                                "src": "5835:10:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                  "typeString": "contract IWrbtcERC20"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                  "typeString": "contract IWrbtcERC20"
                                }
                              ],
                              "id": 9395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5827:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 9397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5827:19:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5811:35:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 9425,
                          "nodeType": "Block",
                          "src": "5882:158:43",
                          "statements": [
                            {
                              "assignments": [
                                9405,
                                9407
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9405,
                                  "name": "toEthRate",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9425,
                                  "src": "5888:17:43",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9404,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5888:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 9407,
                                  "name": "toEthPrecision",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9425,
                                  "src": "5907:22:43",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9406,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5907:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9414,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9409,
                                    "name": "tokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9387,
                                    "src": "5943:12:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 9411,
                                        "name": "wrbtcToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10056,
                                        "src": "5965:10:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                          "typeString": "contract IWrbtcERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                          "typeString": "contract IWrbtcERC20"
                                        }
                                      ],
                                      "id": 9410,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5957:7:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 9412,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5957:19:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 9408,
                                  "name": "queryRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9256,
                                  "src": "5933:9:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address) view returns (uint256,uint256)"
                                  }
                                },
                                "id": 9413,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5933:44:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5887:90:43"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9415,
                                  "name": "ethAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9392,
                                  "src": "5982:9:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9421,
                                      "name": "toEthPrecision",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9407,
                                      "src": "6020:14:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 9418,
                                          "name": "toEthRate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9405,
                                          "src": "6005:9:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 9416,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9389,
                                          "src": "5994:6:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 9417,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "5994:10:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 9419,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5994:21:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9420,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "5994:25:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 9422,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5994:41:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5982:53:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9424,
                              "nodeType": "ExpressionStatement",
                              "src": "5982:53:43"
                            }
                          ]
                        },
                        "id": 9426,
                        "nodeType": "IfStatement",
                        "src": "5807:233:43",
                        "trueBody": {
                          "id": 9403,
                          "nodeType": "Block",
                          "src": "5848:28:43",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9399,
                                  "name": "ethAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9392,
                                  "src": "5853:9:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 9400,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9389,
                                  "src": "5865:6:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5853:18:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9402,
                              "nodeType": "ExpressionStatement",
                              "src": "5853:18:43"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the rBTC amount equivalent to a given token amount.\nNative coin on RSK is rBTC. This code comes from Ethereum applications,\nso Eth refers to 10**18 weis of native coin, i.e.: 1 rBTC.\n\t * @param tokenAddress The address of the token to calculate price.\n@param amount The amount of tokens to calculate price.\n\t * @return ethAmount The amount of rBTC equivalent.\n",
                  "id": 9428,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "amountInEth",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9387,
                        "name": "tokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 9428,
                        "src": "5675:20:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9386,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5675:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9389,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9428,
                        "src": "5697:14:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9388,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5697:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5674:38:43"
                  },
                  "returnParameters": {
                    "id": 9393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9392,
                        "name": "ethAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9428,
                        "src": "5734:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9391,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5734:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5733:19:43"
                  },
                  "scope": 10050,
                  "src": "5654:389:43",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9501,
                    "nodeType": "Block",
                    "src": "6943:452:43",
                    "statements": [
                      {
                        "assignments": [
                          9444
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9444,
                            "name": "loanToCollateralAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 9501,
                            "src": "6947:30:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9443,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6947:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9445,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6947:30:43"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9446,
                            "name": "collateralToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9432,
                            "src": "6985:15:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9447,
                            "name": "loanToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9430,
                            "src": "7004:9:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6985:28:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 9473,
                          "nodeType": "Block",
                          "src": "7066:148:43",
                          "statements": [
                            {
                              "assignments": [
                                9455,
                                9457
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9455,
                                  "name": "rate",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9473,
                                  "src": "7072:12:43",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9454,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7072:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 9457,
                                  "name": "precision",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9473,
                                  "src": "7086:17:43",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9456,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7086:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9462,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9459,
                                    "name": "loanToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9430,
                                    "src": "7117:9:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 9460,
                                    "name": "collateralToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9432,
                                    "src": "7128:15:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 9458,
                                  "name": "queryRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9256,
                                  "src": "7107:9:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address) view returns (uint256,uint256)"
                                  }
                                },
                                "id": 9461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7107:37:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7071:73:43"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9471,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9463,
                                  "name": "loanToCollateralAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9444,
                                  "src": "7149:22:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9469,
                                      "name": "precision",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9457,
                                      "src": "7199:9:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 9466,
                                          "name": "rate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9455,
                                          "src": "7189:4:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 9464,
                                          "name": "loanAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9434,
                                          "src": "7174:10:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 9465,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "7174:14:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 9467,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7174:20:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9468,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "7174:24:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 9470,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7174:35:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7149:60:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9472,
                              "nodeType": "ExpressionStatement",
                              "src": "7149:60:43"
                            }
                          ]
                        },
                        "id": 9474,
                        "nodeType": "IfStatement",
                        "src": "6981:233:43",
                        "trueBody": {
                          "id": 9453,
                          "nodeType": "Block",
                          "src": "7015:45:43",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9449,
                                  "name": "loanToCollateralAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9444,
                                  "src": "7020:22:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 9450,
                                  "name": "loanAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9434,
                                  "src": "7045:10:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7020:35:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9452,
                              "nodeType": "ExpressionStatement",
                              "src": "7020:35:43"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          9476
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9476,
                            "name": "combined",
                            "nodeType": "VariableDeclaration",
                            "scope": 9501,
                            "src": "7218:16:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9475,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7218:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9489,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                    "typeString": "int_const 100000000000000000000"
                                  },
                                  "id": 9486,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 9484,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7303:2:43",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3230",
                                    "id": 9485,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7307:2:43",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_20_by_1",
                                      "typeString": "int_const 20"
                                    },
                                    "value": "20"
                                  },
                                  "src": "7303:6:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                    "typeString": "int_const 100000000000000000000"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                    "typeString": "int_const 100000000000000000000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9481,
                                      "name": "margin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9438,
                                      "src": "7291:6:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 9479,
                                      "name": "loanToCollateralAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9444,
                                      "src": "7264:22:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9480,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42153,
                                    "src": "7264:26:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 9482,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7264:34:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 9483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42169,
                                "src": "7264:38:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 9487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7264:46:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9477,
                              "name": "loanToCollateralAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9444,
                              "src": "7237:22:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9478,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42076,
                            "src": "7237:26:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 9488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7237:74:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7218:93:43"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 9490,
                            "name": "maxDrawdown",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9441,
                            "src": "7316:11:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9491,
                                "name": "collateralAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9436,
                                "src": "7330:16:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 9492,
                                "name": "combined",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9476,
                                "src": "7349:8:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7330:27:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9497,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7390:1:43",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "id": 9498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "7330:61:43",
                            "trueExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9494,
                                "name": "collateralAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9436,
                                "src": "7360:16:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 9495,
                                "name": "combined",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9476,
                                "src": "7379:8:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7360:27:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7316:75:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9500,
                        "nodeType": "ExpressionStatement",
                        "src": "7316:75:43"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the maximum drawdown of a loan.\n\t * A drawdown is commonly defined as the decline from a high peak to a\npullback low of a specific investment or equity in an account.\n\t * Drawdown magnitude refers to the amount of value that a user loses\nduring the drawdown period.\n\t * @param loanToken The address of the loan token.\n@param collateralToken The address of the collateral token.\n@param loanAmount The amount of the loan.\n@param collateralAmount The amount of the collateral.\n@param margin The relation between the position size and the loan.\n  margin = (total position size - loan) / loan\n\t * @return maxDrawdown The maximum drawdown.\n",
                  "id": 9502,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMaxDrawdown",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9439,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9430,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9502,
                        "src": "6785:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9429,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6785:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9432,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9502,
                        "src": "6806:23:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9431,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6806:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9434,
                        "name": "loanAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9502,
                        "src": "6833:18:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9433,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6833:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9436,
                        "name": "collateralAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9502,
                        "src": "6855:24:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9435,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6855:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9438,
                        "name": "margin",
                        "nodeType": "VariableDeclaration",
                        "scope": 9502,
                        "src": "6883:14:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9437,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6883:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6781:119:43"
                  },
                  "returnParameters": {
                    "id": 9442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9441,
                        "name": "maxDrawdown",
                        "nodeType": "VariableDeclaration",
                        "scope": 9502,
                        "src": "6922:19:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9440,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6922:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6921:21:43"
                  },
                  "scope": 10050,
                  "src": "6758:637:43",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9534,
                    "nodeType": "Block",
                    "src": "8036:177:43",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 9517,
                                "name": "currentMargin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9513,
                                "src": "8041:13:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              null
                            ],
                            "id": 9518,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "8040:17:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$__$",
                              "typeString": "tuple(uint256,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9520,
                                "name": "loanToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9504,
                                "src": "8077:9:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9521,
                                "name": "collateralToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9506,
                                "src": "8088:15:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9522,
                                "name": "loanAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9508,
                                "src": "8105:10:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9523,
                                "name": "collateralAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9510,
                                "src": "8117:16:43",
                                "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_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 9519,
                              "name": "getCurrentMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9635,
                              "src": "8060:16:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address,uint256,uint256) view returns (uint256,uint256)"
                              }
                            },
                            "id": 9524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8060:74:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "8040:94:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9526,
                        "nodeType": "ExpressionStatement",
                        "src": "8040:94:43"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 9527,
                            "name": "collateralInEthAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9515,
                            "src": "8139:21:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9529,
                                "name": "collateralToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9506,
                                "src": "8175:15:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9530,
                                "name": "collateralAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9510,
                                "src": "8192:16:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 9528,
                              "name": "amountInEth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9428,
                              "src": "8163:11:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) view returns (uint256)"
                              }
                            },
                            "id": 9531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8163:46:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8139:70:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9533,
                        "nodeType": "ExpressionStatement",
                        "src": "8139:70:43"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the margin and the collateral on rBTC.\n\t * @param loanToken The address of the loan token.\n@param collateralToken The address of the collateral token.\n@param loanAmount The amount of the loan.\n@param collateralAmount The amount of the collateral.\n\t * @return currentMargin The margin of the loan.\n@return collateralInEthAmount The amount of collateral on rBTC.\n",
                  "id": 9535,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrentMarginAndCollateralSize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9511,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9504,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9535,
                        "src": "7863:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9503,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7863:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9506,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9535,
                        "src": "7884:23:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9505,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7884:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9508,
                        "name": "loanAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9535,
                        "src": "7911:18:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9507,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7911:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9510,
                        "name": "collateralAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9535,
                        "src": "7933:24:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9509,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7933:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7859:101:43"
                  },
                  "returnParameters": {
                    "id": 9516,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9513,
                        "name": "currentMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 9535,
                        "src": "7982:21:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9512,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7982:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9515,
                        "name": "collateralInEthAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9535,
                        "src": "8005:29:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9514,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8005:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7981:54:43"
                  },
                  "scope": 10050,
                  "src": "7817:396:43",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9634,
                    "nodeType": "Block",
                    "src": "8986:700:43",
                    "statements": [
                      {
                        "assignments": [
                          9551
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9551,
                            "name": "collateralToLoanAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 9634,
                            "src": "8990:30:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9550,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8990:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9552,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8990:30:43"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9553,
                            "name": "collateralToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9539,
                            "src": "9028:15:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9554,
                            "name": "loanToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9537,
                            "src": "9047:9:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9028:28:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 9603,
                          "nodeType": "Block",
                          "src": "9149:314:43",
                          "statements": [
                            {
                              "assignments": [
                                9568
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9568,
                                  "name": "collateralToLoanPrecision",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9603,
                                  "src": "9154:33:43",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9567,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9154:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9569,
                              "initialValue": null,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9154:33:43"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9577,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9570,
                                      "name": "collateralToLoanRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9548,
                                      "src": "9193:20:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 9571,
                                      "name": "collateralToLoanPrecision",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9568,
                                      "src": "9215:25:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 9572,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "9192:49:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9574,
                                      "name": "collateralToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9539,
                                      "src": "9254:15:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 9575,
                                      "name": "loanToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9537,
                                      "src": "9271:9:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 9573,
                                    "name": "queryRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9256,
                                    "src": "9244:9:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (address,address) view returns (uint256,uint256)"
                                    }
                                  },
                                  "id": 9576,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9244:37:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "src": "9192:89:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9578,
                              "nodeType": "ExpressionStatement",
                              "src": "9192:89:43"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9589,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9579,
                                  "name": "collateralToLoanRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9548,
                                  "src": "9287:20:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9587,
                                      "name": "collateralToLoanPrecision",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9568,
                                      "src": "9347:25:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                          },
                                          "id": 9584,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3130",
                                            "id": 9582,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9335:2:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3138",
                                            "id": 9583,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9339:2:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_18_by_1",
                                              "typeString": "int_const 18"
                                            },
                                            "value": "18"
                                          },
                                          "src": "9335:6:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 9580,
                                          "name": "collateralToLoanRate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9548,
                                          "src": "9310:20:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 9581,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "9310:24:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 9585,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9310:32:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9586,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "9310:36:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 9588,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9310:63:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9287:86:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9590,
                              "nodeType": "ExpressionStatement",
                              "src": "9287:86:43"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9591,
                                  "name": "collateralToLoanAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9551,
                                  "src": "9379:22:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "id": 9599,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 9597,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9451:2:43",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3138",
                                        "id": 9598,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9455:2:43",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_18_by_1",
                                          "typeString": "int_const 18"
                                        },
                                        "value": "18"
                                      },
                                      "src": "9451:6:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 9594,
                                          "name": "collateralToLoanRate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9548,
                                          "src": "9425:20:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 9592,
                                          "name": "collateralAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9543,
                                          "src": "9404:16:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 9593,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "9404:20:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 9595,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9404:42:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9596,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "9404:46:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 9600,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9404:54:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9379:79:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9602,
                              "nodeType": "ExpressionStatement",
                              "src": "9379:79:43"
                            }
                          ]
                        },
                        "id": 9604,
                        "nodeType": "IfStatement",
                        "src": "9024:439:43",
                        "trueBody": {
                          "id": 9566,
                          "nodeType": "Block",
                          "src": "9058:85:43",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9558,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9556,
                                  "name": "collateralToLoanAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9551,
                                  "src": "9063:22:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 9557,
                                  "name": "collateralAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9543,
                                  "src": "9088:16:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9063:41:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9559,
                              "nodeType": "ExpressionStatement",
                              "src": "9063:41:43"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9560,
                                  "name": "collateralToLoanRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9548,
                                  "src": "9109:20:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  },
                                  "id": 9563,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 9561,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9132:2:43",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3138",
                                    "id": 9562,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9136:2:43",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_18_by_1",
                                      "typeString": "int_const 18"
                                    },
                                    "value": "18"
                                  },
                                  "src": "9132:6:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  }
                                },
                                "src": "9109:29:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9565,
                              "nodeType": "ExpressionStatement",
                              "src": "9109:29:43"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 9611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 9605,
                              "name": "loanAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9541,
                              "src": "9471:10:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9485:1:43",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "9471:15:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 9608,
                              "name": "collateralToLoanAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9551,
                              "src": "9490:22:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 9609,
                              "name": "loanAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9541,
                              "src": "9516:10:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9490:36:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9471:55:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 9632,
                          "nodeType": "Block",
                          "src": "9641:42:43",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 9628,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9654:1:43",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 9629,
                                    "name": "collateralToLoanRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9548,
                                    "src": "9657:20:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 9630,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9653:25:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_uint256_$",
                                  "typeString": "tuple(int_const 0,uint256)"
                                }
                              },
                              "functionReturnParameters": 9549,
                              "id": 9631,
                              "nodeType": "Return",
                              "src": "9646:32:43"
                            }
                          ]
                        },
                        "id": 9633,
                        "nodeType": "IfStatement",
                        "src": "9467:216:43",
                        "trueBody": {
                          "id": 9627,
                          "nodeType": "Block",
                          "src": "9528:107:43",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 9622,
                                        "name": "loanAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9541,
                                        "src": "9596:10:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            },
                                            "id": 9619,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3130",
                                              "id": 9617,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "9584:2:43",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                              },
                                              "value": "10"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "**",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3230",
                                              "id": 9618,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "9588:2:43",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_20_by_1",
                                                "typeString": "int_const 20"
                                              },
                                              "value": "20"
                                            },
                                            "src": "9584:6:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 9614,
                                                "name": "loanAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9541,
                                                "src": "9568:10:43",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 9612,
                                                "name": "collateralToLoanAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9551,
                                                "src": "9541:22:43",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 9613,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sub",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 42092,
                                              "src": "9541:26:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 9615,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9541:38:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 9616,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42153,
                                          "src": "9541:42:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 9620,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9541:50:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 9621,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42169,
                                      "src": "9541:54:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 9623,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9541:66:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 9624,
                                    "name": "collateralToLoanRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9548,
                                    "src": "9609:20:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 9625,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9540:90:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "functionReturnParameters": 9549,
                              "id": 9626,
                              "nodeType": "Return",
                              "src": "9533:97:43"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the margin of a loan.\n\t * @dev current margin = (total position size - loan) / loan\nThe collateral amount passed as parameter equals the total position size.\n\t * @param loanToken The address of the loan token.\n@param collateralToken The address of the collateral token.\n@param loanAmount The amount of the loan.\n@param collateralAmount The amount of the collateral.\n\t * @return currentMargin The margin of the loan.\n@return collateralToLoanRate The price ratio between collateral and\n  loan tokens.\n",
                  "id": 9635,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrentMargin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9544,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9537,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9635,
                        "src": "8814:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9536,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8814:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9539,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9635,
                        "src": "8835:23:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9538,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8835:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9541,
                        "name": "loanAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9635,
                        "src": "8862:18:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9540,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8862:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9543,
                        "name": "collateralAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9635,
                        "src": "8884:24:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9542,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8884:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8810:101:43"
                  },
                  "returnParameters": {
                    "id": 9549,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9546,
                        "name": "currentMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 9635,
                        "src": "8933:21:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9545,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8933:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9548,
                        "name": "collateralToLoanRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 9635,
                        "src": "8956:28:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9547,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8956:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8932:53:43"
                  },
                  "scope": 10050,
                  "src": "8785:901:43",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9663,
                    "nodeType": "Block",
                    "src": "10278:156:43",
                    "statements": [
                      {
                        "assignments": [
                          9651,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9651,
                            "name": "currentMargin",
                            "nodeType": "VariableDeclaration",
                            "scope": 9663,
                            "src": "10283:21:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9650,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10283:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 9658,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9653,
                              "name": "loanToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9637,
                              "src": "10327:9:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9654,
                              "name": "collateralToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9639,
                              "src": "10338:15:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9655,
                              "name": "loanAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9641,
                              "src": "10355:10:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9656,
                              "name": "collateralAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9643,
                              "src": "10367:16:43",
                              "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_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9652,
                            "name": "getCurrentMargin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9635,
                            "src": "10310:16:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256) view returns (uint256,uint256)"
                            }
                          },
                          "id": 9657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10310:74:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10282:102:43"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9659,
                            "name": "currentMargin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9651,
                            "src": "10396:13:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9660,
                            "name": "maintenanceMargin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9645,
                            "src": "10413:17:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10396:34:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 9649,
                        "id": 9662,
                        "nodeType": "Return",
                        "src": "10389:41:43"
                      }
                    ]
                  },
                  "documentation": "@notice Get assessment about liquidating a loan.\n\t * @param loanToken The address of the loan token.\n@param collateralToken The address of the collateral token.\n@param loanAmount The amount of the loan.\n@param collateralAmount The amount of the collateral.\n@param maintenanceMargin The minimum margin before liquidation.\n\t * @return True/false to liquidate the loan.\n",
                  "id": 9664,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "shouldLiquidate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9646,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9637,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9664,
                        "src": "10124:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9636,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10124:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9639,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9664,
                        "src": "10145:23:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9638,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10145:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9641,
                        "name": "loanAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9664,
                        "src": "10172:18:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9640,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10172:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9643,
                        "name": "collateralAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 9664,
                        "src": "10194:24:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9642,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10194:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9645,
                        "name": "maintenanceMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 9664,
                        "src": "10222:25:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9644,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10222:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10120:130:43"
                  },
                  "returnParameters": {
                    "id": 9649,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9648,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 9664,
                        "src": "10272:4:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9647,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10272:4:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10271:6:43"
                  },
                  "scope": 10050,
                  "src": "10096:338:43",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9682,
                    "nodeType": "Block",
                    "src": "10666:83:43",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9672,
                                "name": "newPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9666,
                                "src": "10678:8:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 9673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10690:1:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "10678:13:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e76616c6964207072696365",
                              "id": 9675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10693:15:43",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_67f3816c2c3c9d26e2c2164d44f506222f0a5a80a1dd5d735b15247affdd74e5",
                                "typeString": "literal_string \"invalid price\""
                              },
                              "value": "invalid price"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_67f3816c2c3c9d26e2c2164d44f506222f0a5a80a1dd5d735b15247affdd74e5",
                                "typeString": "literal_string \"invalid price\""
                              }
                            ],
                            "id": 9671,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10670:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10670:39:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9677,
                        "nodeType": "ExpressionStatement",
                        "src": "10670:39:43"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 9678,
                            "name": "protocolTokenEthPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9200,
                            "src": "10713:21:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 9679,
                            "name": "newPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9666,
                            "src": "10737:8:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10713:32:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9681,
                        "nodeType": "ExpressionStatement",
                        "src": "10713:32:43"
                      }
                    ]
                  },
                  "documentation": "@notice Set new value for protocolTokenEthPrice\n\t * @param newPrice The new value for protocolTokenEthPrice\n",
                  "id": 9683,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 9669,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 9668,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "10656:9:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10656:9:43"
                    }
                  ],
                  "name": "setProtocolTokenEthPrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9667,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9666,
                        "name": "newPrice",
                        "nodeType": "VariableDeclaration",
                        "scope": 9683,
                        "src": "10629:16:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9665,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10629:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10628:18:43"
                  },
                  "returnParameters": {
                    "id": 9670,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10666:0:43"
                  },
                  "scope": 10050,
                  "src": "10595:154:43",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9726,
                    "nodeType": "Block",
                    "src": "11064:155:43",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9695,
                                  "name": "tokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9686,
                                  "src": "11076:6:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 9696,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11076:13:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9697,
                                  "name": "feeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9689,
                                  "src": "11093:5:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_contract$_IPriceFeedsExt_$9176_$dyn_calldata_ptr",
                                    "typeString": "contract IPriceFeedsExt[] calldata"
                                  }
                                },
                                "id": 9698,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11093:12:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11076:29:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "636f756e74206d69736d61746368",
                              "id": 9700,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11107:16:43",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4e47b0faf042463061f100d4bb8e934fd9c2e42fb27f86b7083e0ceb80b3cd5f",
                                "typeString": "literal_string \"count mismatch\""
                              },
                              "value": "count mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4e47b0faf042463061f100d4bb8e934fd9c2e42fb27f86b7083e0ceb80b3cd5f",
                                "typeString": "literal_string \"count mismatch\""
                              }
                            ],
                            "id": 9694,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11068:7:43",
                            "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,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11068:56:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9702,
                        "nodeType": "ExpressionStatement",
                        "src": "11068:56:43"
                      },
                      {
                        "body": {
                          "id": 9724,
                          "nodeType": "Block",
                          "src": "11173:43:43",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 9714,
                                    "name": "pricesFeeds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9193,
                                    "src": "11178:11:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_contract$_IPriceFeedsExt_$9176_$",
                                      "typeString": "mapping(address => contract IPriceFeedsExt)"
                                    }
                                  },
                                  "id": 9718,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 9715,
                                      "name": "tokens",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9686,
                                      "src": "11190:6:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 9717,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 9716,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9704,
                                      "src": "11197:1:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11190:9:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "11178:22:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                    "typeString": "contract IPriceFeedsExt"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 9719,
                                    "name": "feeds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9689,
                                    "src": "11203:5:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IPriceFeedsExt_$9176_$dyn_calldata_ptr",
                                      "typeString": "contract IPriceFeedsExt[] calldata"
                                    }
                                  },
                                  "id": 9721,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 9720,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9704,
                                    "src": "11209:1:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11203:8:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                    "typeString": "contract IPriceFeedsExt"
                                  }
                                },
                                "src": "11178:33:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                  "typeString": "contract IPriceFeedsExt"
                                }
                              },
                              "id": 9723,
                              "nodeType": "ExpressionStatement",
                              "src": "11178:33:43"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9707,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9704,
                            "src": "11149:1:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9708,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9686,
                              "src": "11153:6:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 9709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11153:13:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11149:17:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9725,
                        "initializationExpression": {
                          "assignments": [
                            9704
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 9704,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 9725,
                              "src": "11134:9:43",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 9703,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "11134:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 9706,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 9705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11146:1:43",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11134:13:43"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 9712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "11168:3:43",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 9711,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9704,
                              "src": "11168:1:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9713,
                          "nodeType": "ExpressionStatement",
                          "src": "11168:3:43"
                        },
                        "nodeType": "ForStatement",
                        "src": "11129:87:43"
                      }
                    ]
                  },
                  "documentation": "@notice Populate pricesFeeds mapping w/ values from feeds[]\n\t * @param tokens The array of tokens to loop and get addresses.\n@param feeds The array of contract instances for every token.\n",
                  "id": 9727,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 9692,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 9691,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "11054:9:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11054:9:43"
                    }
                  ],
                  "name": "setPriceFeed",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9690,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9686,
                        "name": "tokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 9727,
                        "src": "10985:25:43",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9684,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10985:7:43",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9685,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10985:9:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9689,
                        "name": "feeds",
                        "nodeType": "VariableDeclaration",
                        "scope": 9727,
                        "src": "11012:31:43",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IPriceFeedsExt_$9176_$dyn_calldata_ptr",
                          "typeString": "contract IPriceFeedsExt[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 9687,
                            "name": "IPriceFeedsExt",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 9176,
                            "src": "11012:14:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                              "typeString": "contract IPriceFeedsExt"
                            }
                          },
                          "id": 9688,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "11012:16:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IPriceFeedsExt_$9176_$dyn_storage_ptr",
                            "typeString": "contract IPriceFeedsExt[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10984:60:43"
                  },
                  "returnParameters": {
                    "id": 9693,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11064:0:43"
                  },
                  "scope": 10050,
                  "src": "10963:256:43",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9762,
                    "nodeType": "Block",
                    "src": "11442:112:43",
                    "statements": [
                      {
                        "body": {
                          "id": 9760,
                          "nodeType": "Block",
                          "src": "11490:61:43",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 9746,
                                    "name": "decimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9197,
                                    "src": "11495:8:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 9752,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 9748,
                                          "name": "tokens",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9730,
                                          "src": "11512:6:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                                            "typeString": "contract IERC20[] calldata"
                                          }
                                        },
                                        "id": 9750,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 9749,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9736,
                                          "src": "11519:1:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "11512:9:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$24699",
                                          "typeString": "contract IERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IERC20_$24699",
                                          "typeString": "contract IERC20"
                                        }
                                      ],
                                      "id": 9747,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11504:7:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 9751,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11504:18:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "11495:28:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 9753,
                                        "name": "tokens",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9730,
                                        "src": "11526:6:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                                          "typeString": "contract IERC20[] calldata"
                                        }
                                      },
                                      "id": 9755,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 9754,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9736,
                                        "src": "11533:1:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "11526:9:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 9756,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "decimals",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24630,
                                    "src": "11526:18:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                                      "typeString": "function () view external returns (uint8)"
                                    }
                                  },
                                  "id": 9757,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11526:20:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "11495:51:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9759,
                              "nodeType": "ExpressionStatement",
                              "src": "11495:51:43"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9739,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9736,
                            "src": "11466:1:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9740,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9730,
                              "src": "11470:6:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                                "typeString": "contract IERC20[] calldata"
                              }
                            },
                            "id": 9741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11470:13:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11466:17:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9761,
                        "initializationExpression": {
                          "assignments": [
                            9736
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 9736,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 9761,
                              "src": "11451:9:43",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 9735,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "11451:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 9738,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 9737,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11463:1:43",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11451:13:43"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 9744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "11485:3:43",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 9743,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9736,
                              "src": "11485:1:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9745,
                          "nodeType": "ExpressionStatement",
                          "src": "11485:3:43"
                        },
                        "nodeType": "ForStatement",
                        "src": "11446:105:43"
                      }
                    ]
                  },
                  "documentation": "@notice Populate decimals mapping w/ values from tokens[].decimals\n\t * @param tokens The array of tokens to loop and get values from.\n",
                  "id": 9763,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 9733,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 9732,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "11432:9:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11432:9:43"
                    }
                  ],
                  "name": "setDecimals",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9731,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9730,
                        "name": "tokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 9763,
                        "src": "11397:24:43",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 9728,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 24699,
                            "src": "11397:6:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 9729,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "11397:8:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11396:26:43"
                  },
                  "returnParameters": {
                    "id": 9734,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11442:0:43"
                  },
                  "scope": 10050,
                  "src": "11376:178:43",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9785,
                    "nodeType": "Block",
                    "src": "11738:136:43",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 9772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9770,
                            "name": "globalPricingPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9203,
                            "src": "11746:19:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9771,
                            "name": "isPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9765,
                            "src": "11769:8:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "11746:31:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 9784,
                        "nodeType": "IfStatement",
                        "src": "11742:129:43",
                        "trueBody": {
                          "id": 9783,
                          "nodeType": "Block",
                          "src": "11779:92:43",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9775,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9773,
                                  "name": "globalPricingPaused",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9203,
                                  "src": "11784:19:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 9774,
                                  "name": "isPaused",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9765,
                                  "src": "11806:8:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "11784:30:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 9776,
                              "nodeType": "ExpressionStatement",
                              "src": "11784:30:43"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 9778,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "11845:3:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 9779,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11845:10:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 9780,
                                    "name": "isPaused",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9765,
                                    "src": "11857:8:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 9777,
                                  "name": "GlobalPricingPaused",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9189,
                                  "src": "11825:19:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,bool)"
                                  }
                                },
                                "id": 9781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11825:41:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9782,
                              "nodeType": "EmitStatement",
                              "src": "11820:46:43"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Set flag globalPricingPaused\n\t * @param isPaused The new status of pause (true/false).\n",
                  "id": 9786,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 9768,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 9767,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "11728:9:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11728:9:43"
                    }
                  ],
                  "name": "setGlobalPricingPaused",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9765,
                        "name": "isPaused",
                        "nodeType": "VariableDeclaration",
                        "scope": 9786,
                        "src": "11704:13:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9764,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11704:4:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11703:15:43"
                  },
                  "returnParameters": {
                    "id": 9769,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11738:0:43"
                  },
                  "scope": 10050,
                  "src": "11672:202:43",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9966,
                    "nodeType": "Block",
                    "src": "12306:1369:43",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9799,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "12318:20:43",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 9798,
                                "name": "globalPricingPaused",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9203,
                                "src": "12319:19:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "70726963696e6720697320706175736564",
                              "id": 9800,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12340:19:43",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a691bf5e21c6bc6589b3bb5e4ec447b6123fc63906ff665341e863b863542691",
                                "typeString": "literal_string \"pricing is paused\""
                              },
                              "value": "pricing is paused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a691bf5e21c6bc6589b3bb5e4ec447b6123fc63906ff665341e863b863542691",
                                "typeString": "literal_string \"pricing is paused\""
                              }
                            ],
                            "id": 9797,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "12310:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12310:50:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9802,
                        "nodeType": "ExpressionStatement",
                        "src": "12310:50:43"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9803,
                            "name": "sourceToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9788,
                            "src": "12428:11:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9804,
                            "name": "destToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9790,
                            "src": "12443:9:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12428:24:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 9964,
                          "nodeType": "Block",
                          "src": "13626:46:43",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9956,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9952,
                                  "name": "rate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9793,
                                  "src": "13631:4:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  },
                                  "id": 9955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 9953,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13638:2:43",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3138",
                                    "id": 9954,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13642:2:43",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_18_by_1",
                                      "typeString": "int_const 18"
                                    },
                                    "value": "18"
                                  },
                                  "src": "13638:6:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  }
                                },
                                "src": "13631:13:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9957,
                              "nodeType": "ExpressionStatement",
                              "src": "13631:13:43"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9962,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9958,
                                  "name": "precision",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9795,
                                  "src": "13649:9:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  },
                                  "id": 9961,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 9959,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13661:2:43",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3138",
                                    "id": 9960,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13665:2:43",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_18_by_1",
                                      "typeString": "int_const 18"
                                    },
                                    "value": "18"
                                  },
                                  "src": "13661:6:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  }
                                },
                                "src": "13649:18:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9963,
                              "nodeType": "ExpressionStatement",
                              "src": "13649:18:43"
                            }
                          ]
                        },
                        "id": 9965,
                        "nodeType": "IfStatement",
                        "src": "12424:1248:43",
                        "trueBody": {
                          "id": 9951,
                          "nodeType": "Block",
                          "src": "12454:1166:43",
                          "statements": [
                            {
                              "assignments": [
                                9807
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9807,
                                  "name": "sourceRate",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9951,
                                  "src": "12459:18:43",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9806,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12459:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9808,
                              "initialValue": null,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12459:18:43"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 9817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 9813,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 9809,
                                    "name": "sourceToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9788,
                                    "src": "12486:11:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 9811,
                                        "name": "baseToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10058,
                                        "src": "12509:9:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                          "typeString": "contract IWrbtcERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                          "typeString": "contract IWrbtcERC20"
                                        }
                                      ],
                                      "id": 9810,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "12501:7:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 9812,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12501:18:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "12486:33:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 9816,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 9814,
                                    "name": "sourceToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9788,
                                    "src": "12523:11:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 9815,
                                    "name": "protocolTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10060,
                                    "src": "12538:20:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "12523:35:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "12486:72:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 9867,
                                "nodeType": "Block",
                                "src": "12876:93:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 9865,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 9856,
                                        "name": "sourceRate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9807,
                                        "src": "12882:10:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "condition": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          "id": 9859,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 9857,
                                            "name": "sourceToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9788,
                                            "src": "12895:11:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 9858,
                                            "name": "protocolTokenAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10060,
                                            "src": "12910:20:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "src": "12895:35:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                          },
                                          "id": 9863,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3130",
                                            "id": 9861,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12957:2:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3138",
                                            "id": 9862,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12961:2:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_18_by_1",
                                              "typeString": "int_const 18"
                                            },
                                            "value": "18"
                                          },
                                          "src": "12957:6:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                          }
                                        },
                                        "id": 9864,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "12895:68:43",
                                        "trueExpression": {
                                          "argumentTypes": null,
                                          "id": 9860,
                                          "name": "protocolTokenEthPrice",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9200,
                                          "src": "12933:21:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "12882:81:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9866,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12882:81:43"
                                  }
                                ]
                              },
                              "id": 9868,
                              "nodeType": "IfStatement",
                              "src": "12482:487:43",
                              "trueBody": {
                                "id": 9855,
                                "nodeType": "Block",
                                "src": "12560:310:43",
                                "statements": [
                                  {
                                    "assignments": [
                                      9819
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 9819,
                                        "name": "_sourceFeed",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 9855,
                                        "src": "12566:26:43",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                          "typeString": "contract IPriceFeedsExt"
                                        },
                                        "typeName": {
                                          "contractScope": null,
                                          "id": 9818,
                                          "name": "IPriceFeedsExt",
                                          "nodeType": "UserDefinedTypeName",
                                          "referencedDeclaration": 9176,
                                          "src": "12566:14:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                            "typeString": "contract IPriceFeedsExt"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 9823,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 9820,
                                        "name": "pricesFeeds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9193,
                                        "src": "12595:11:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_contract$_IPriceFeedsExt_$9176_$",
                                          "typeString": "mapping(address => contract IPriceFeedsExt)"
                                        }
                                      },
                                      "id": 9822,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 9821,
                                        "name": "sourceToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9788,
                                        "src": "12607:11:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12595:24:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                        "typeString": "contract IPriceFeedsExt"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "12566:53:43"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          "id": 9831,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 9826,
                                                "name": "_sourceFeed",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9819,
                                                "src": "12641:11:43",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                                  "typeString": "contract IPriceFeedsExt"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                                  "typeString": "contract IPriceFeedsExt"
                                                }
                                              ],
                                              "id": 9825,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "12633:7:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": "address"
                                            },
                                            "id": 9827,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12633:20:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "30",
                                                "id": 9829,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12665:1:43",
                                                "subdenomination": null,
                                                "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": 9828,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "12657:7:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": "address"
                                            },
                                            "id": 9830,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12657:10:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          "src": "12633:34:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "756e737570706f72746564207372632066656564",
                                          "id": 9832,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12669:22:43",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_a6d0a83804cefef9d888f623d13b6951f1331b9db1f7b00e54b44bf8ba51432c",
                                            "typeString": "literal_string \"unsupported src feed\""
                                          },
                                          "value": "unsupported src feed"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_a6d0a83804cefef9d888f623d13b6951f1331b9db1f7b00e54b44bf8ba51432c",
                                            "typeString": "literal_string \"unsupported src feed\""
                                          }
                                        ],
                                        "id": 9824,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44997,
                                          44998
                                        ],
                                        "referencedDeclaration": 44998,
                                        "src": "12625:7:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 9833,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12625:67:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 9834,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12625:67:43"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 9839,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 9835,
                                        "name": "sourceRate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9807,
                                        "src": "12752:10:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 9836,
                                            "name": "_sourceFeed",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9819,
                                            "src": "12765:11:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                              "typeString": "contract IPriceFeedsExt"
                                            }
                                          },
                                          "id": 9837,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "latestAnswer",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 9175,
                                          "src": "12765:24:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                            "typeString": "function () view external returns (uint256)"
                                          }
                                        },
                                        "id": 9838,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12765:26:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "12752:39:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9840,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12752:39:43"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "id": 9851,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 9844,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 9842,
                                              "name": "sourceRate",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9807,
                                              "src": "12805:10:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "!=",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "30",
                                              "id": 9843,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "12819:1:43",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "12805:15:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&&",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 9850,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "components": [
                                                {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 9847,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 9845,
                                                    "name": "sourceRate",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9807,
                                                    "src": "12825:10:43",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": ">>",
                                                  "rightExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "313238",
                                                    "id": 9846,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "12839:3:43",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_128_by_1",
                                                      "typeString": "int_const 128"
                                                    },
                                                    "value": "128"
                                                  },
                                                  "src": "12825:17:43",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 9848,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "12824:19:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "30",
                                              "id": 9849,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "12847:1:43",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "12824:24:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "src": "12805:43:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "7072696365206572726f72",
                                          "id": 9852,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12850:13:43",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_37d478220890b07920ef18c5c40fdedbd664b20c8fe2dc2e7e09b6b8ceaa9250",
                                            "typeString": "literal_string \"price error\""
                                          },
                                          "value": "price error"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_37d478220890b07920ef18c5c40fdedbd664b20c8fe2dc2e7e09b6b8ceaa9250",
                                            "typeString": "literal_string \"price error\""
                                          }
                                        ],
                                        "id": 9841,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44997,
                                          44998
                                        ],
                                        "referencedDeclaration": 44998,
                                        "src": "12797:7:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 9853,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12797:67:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 9854,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12797:67:43"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                9870
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9870,
                                  "name": "destRate",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9951,
                                  "src": "12974:16:43",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9869,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12974:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9871,
                              "initialValue": null,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12974:16:43"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 9880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 9876,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 9872,
                                    "name": "destToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9790,
                                    "src": "12999:9:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 9874,
                                        "name": "baseToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10058,
                                        "src": "13020:9:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                          "typeString": "contract IWrbtcERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                          "typeString": "contract IWrbtcERC20"
                                        }
                                      ],
                                      "id": 9873,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13012:7:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 9875,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13012:18:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "12999:31:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 9879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 9877,
                                    "name": "destToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9790,
                                    "src": "13034:9:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 9878,
                                    "name": "protocolTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10060,
                                    "src": "13047:20:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "13034:33:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "12999:68:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 9930,
                                "nodeType": "Block",
                                "src": "13371:89:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 9928,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 9919,
                                        "name": "destRate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9870,
                                        "src": "13377:8:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "condition": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          "id": 9922,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 9920,
                                            "name": "destToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9790,
                                            "src": "13388:9:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 9921,
                                            "name": "protocolTokenAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10060,
                                            "src": "13401:20:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "src": "13388:33:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                          },
                                          "id": 9926,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3130",
                                            "id": 9924,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13448:2:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3138",
                                            "id": 9925,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13452:2:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_18_by_1",
                                              "typeString": "int_const 18"
                                            },
                                            "value": "18"
                                          },
                                          "src": "13448:6:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                          }
                                        },
                                        "id": 9927,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "13388:66:43",
                                        "trueExpression": {
                                          "argumentTypes": null,
                                          "id": 9923,
                                          "name": "protocolTokenEthPrice",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9200,
                                          "src": "13424:21:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13377:77:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9929,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13377:77:43"
                                  }
                                ]
                              },
                              "id": 9931,
                              "nodeType": "IfStatement",
                              "src": "12995:465:43",
                              "trueBody": {
                                "id": 9918,
                                "nodeType": "Block",
                                "src": "13069:296:43",
                                "statements": [
                                  {
                                    "assignments": [
                                      9882
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 9882,
                                        "name": "_destFeed",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 9918,
                                        "src": "13075:24:43",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                          "typeString": "contract IPriceFeedsExt"
                                        },
                                        "typeName": {
                                          "contractScope": null,
                                          "id": 9881,
                                          "name": "IPriceFeedsExt",
                                          "nodeType": "UserDefinedTypeName",
                                          "referencedDeclaration": 9176,
                                          "src": "13075:14:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                            "typeString": "contract IPriceFeedsExt"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 9886,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 9883,
                                        "name": "pricesFeeds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9193,
                                        "src": "13102:11:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_contract$_IPriceFeedsExt_$9176_$",
                                          "typeString": "mapping(address => contract IPriceFeedsExt)"
                                        }
                                      },
                                      "id": 9885,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 9884,
                                        "name": "destToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9790,
                                        "src": "13114:9:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "13102:22:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                        "typeString": "contract IPriceFeedsExt"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13075:49:43"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          "id": 9894,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 9889,
                                                "name": "_destFeed",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9882,
                                                "src": "13146:9:43",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                                  "typeString": "contract IPriceFeedsExt"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                                  "typeString": "contract IPriceFeedsExt"
                                                }
                                              ],
                                              "id": 9888,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "13138:7:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": "address"
                                            },
                                            "id": 9890,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "13138:18:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "30",
                                                "id": 9892,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "13168:1:43",
                                                "subdenomination": null,
                                                "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": 9891,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "13160:7:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": "address"
                                            },
                                            "id": 9893,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "13160:10:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          "src": "13138:32:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "756e737570706f72746564206473742066656564",
                                          "id": 9895,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "13172:22:43",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_f643763b2be650669381377c860fb74524d4d42768930605392edd93413ab9ec",
                                            "typeString": "literal_string \"unsupported dst feed\""
                                          },
                                          "value": "unsupported dst feed"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_f643763b2be650669381377c860fb74524d4d42768930605392edd93413ab9ec",
                                            "typeString": "literal_string \"unsupported dst feed\""
                                          }
                                        ],
                                        "id": 9887,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44997,
                                          44998
                                        ],
                                        "referencedDeclaration": 44998,
                                        "src": "13130:7:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 9896,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13130:65:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 9897,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13130:65:43"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 9902,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 9898,
                                        "name": "destRate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9870,
                                        "src": "13255:8:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 9899,
                                            "name": "_destFeed",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9882,
                                            "src": "13266:9:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                                              "typeString": "contract IPriceFeedsExt"
                                            }
                                          },
                                          "id": 9900,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "latestAnswer",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 9175,
                                          "src": "13266:22:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                            "typeString": "function () view external returns (uint256)"
                                          }
                                        },
                                        "id": 9901,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13266:24:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13255:35:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9903,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13255:35:43"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "id": 9914,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 9907,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 9905,
                                              "name": "destRate",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9870,
                                              "src": "13304:8:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "!=",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "30",
                                              "id": 9906,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "13316:1:43",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "13304:13:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&&",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 9913,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "components": [
                                                {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 9910,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 9908,
                                                    "name": "destRate",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9870,
                                                    "src": "13322:8:43",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": ">>",
                                                  "rightExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "313238",
                                                    "id": 9909,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "13334:3:43",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_128_by_1",
                                                      "typeString": "int_const 128"
                                                    },
                                                    "value": "128"
                                                  },
                                                  "src": "13322:15:43",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 9911,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "13321:17:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "30",
                                              "id": 9912,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "13342:1:43",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "13321:22:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "src": "13304:39:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "7072696365206572726f72",
                                          "id": 9915,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "13345:13:43",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_37d478220890b07920ef18c5c40fdedbd664b20c8fe2dc2e7e09b6b8ceaa9250",
                                            "typeString": "literal_string \"price error\""
                                          },
                                          "value": "price error"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_37d478220890b07920ef18c5c40fdedbd664b20c8fe2dc2e7e09b6b8ceaa9250",
                                            "typeString": "literal_string \"price error\""
                                          }
                                        ],
                                        "id": 9904,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44997,
                                          44998
                                        ],
                                        "referencedDeclaration": 44998,
                                        "src": "13296:7:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 9916,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13296:63:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 9917,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13296:63:43"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9932,
                                  "name": "rate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9793,
                                  "src": "13465:4:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9940,
                                      "name": "destRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9870,
                                      "src": "13499:8:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                          },
                                          "id": 9937,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3130",
                                            "id": 9935,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13487:2:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3138",
                                            "id": 9936,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13491:2:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_18_by_1",
                                              "typeString": "int_const 18"
                                            },
                                            "value": "18"
                                          },
                                          "src": "13487:6:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 9933,
                                          "name": "sourceRate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9807,
                                          "src": "13472:10:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 9934,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "13472:14:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 9938,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13472:22:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9939,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "13472:26:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 9941,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13472:36:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13465:43:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9943,
                              "nodeType": "ExpressionStatement",
                              "src": "13465:43:43"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9949,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9944,
                                  "name": "precision",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9795,
                                  "src": "13514:9:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9946,
                                      "name": "sourceToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9788,
                                      "src": "13547:11:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 9947,
                                      "name": "destToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9790,
                                      "src": "13560:9:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 9945,
                                    "name": "_getDecimalPrecision",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10049,
                                    "src": "13526:20:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address,address) view returns (uint256)"
                                    }
                                  },
                                  "id": 9948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13526:44:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13514:56:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9950,
                              "nodeType": "ExpressionStatement",
                              "src": "13514:56:43"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the price ratio between two tokens.\n\t * @param sourceToken The address of the source tokens.\n@param destToken The address of the destiny tokens.\n\t * @return rate The price ratio source/dest.\n@return precision The ratio precision.\n",
                  "id": 9967,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_queryRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9791,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9788,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9967,
                        "src": "12210:19:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9787,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12210:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9790,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 9967,
                        "src": "12231:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9789,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12231:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12209:40:43"
                  },
                  "returnParameters": {
                    "id": 9796,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9793,
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "scope": 9967,
                        "src": "12273:12:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9792,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12273:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9795,
                        "name": "precision",
                        "nodeType": "VariableDeclaration",
                        "scope": 9967,
                        "src": "12287:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9794,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12287:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12272:33:43"
                  },
                  "scope": 10050,
                  "src": "12190:1485:43",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10048,
                    "nodeType": "Block",
                    "src": "14023:665:43",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9976,
                            "name": "sourceToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9969,
                            "src": "14074:11:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9977,
                            "name": "destToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9971,
                            "src": "14089:9:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14074:24:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 10046,
                          "nodeType": "Block",
                          "src": "14201:484:43",
                          "statements": [
                            {
                              "assignments": [
                                9985
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9985,
                                  "name": "sourceTokenDecimals",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10046,
                                  "src": "14206:27:43",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9984,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14206:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9989,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 9986,
                                  "name": "decimals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9197,
                                  "src": "14236:8:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 9988,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 9987,
                                  "name": "sourceToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9969,
                                  "src": "14245:11:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14236:21:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14206:51:43"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9992,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 9990,
                                  "name": "sourceTokenDecimals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9985,
                                  "src": "14266:19:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 9991,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14289:1:43",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "14266:24:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 10001,
                              "nodeType": "IfStatement",
                              "src": "14262:82:43",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9999,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 9993,
                                    "name": "sourceTokenDecimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9985,
                                    "src": "14292:19:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 9995,
                                            "name": "sourceToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9969,
                                            "src": "14321:11:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 9994,
                                          "name": "IERC20",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24699,
                                          "src": "14314:6:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                            "typeString": "type(contract IERC20)"
                                          }
                                        },
                                        "id": 9996,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14314:19:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$24699",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 9997,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "decimals",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 24630,
                                      "src": "14314:28:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                                        "typeString": "function () view external returns (uint8)"
                                      }
                                    },
                                    "id": 9998,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14314:30:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "14292:52:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 10000,
                                "nodeType": "ExpressionStatement",
                                "src": "14292:52:43"
                              }
                            },
                            {
                              "assignments": [
                                10003
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10003,
                                  "name": "destTokenDecimals",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10046,
                                  "src": "14350:25:43",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 10002,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14350:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10007,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 10004,
                                  "name": "decimals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9197,
                                  "src": "14378:8:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 10006,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10005,
                                  "name": "destToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9971,
                                  "src": "14387:9:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14378:19:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14350:47:43"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10010,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 10008,
                                  "name": "destTokenDecimals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10003,
                                  "src": "14406:17:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 10009,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14427:1:43",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "14406:22:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 10019,
                              "nodeType": "IfStatement",
                              "src": "14402:76:43",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10017,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 10011,
                                    "name": "destTokenDecimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10003,
                                    "src": "14430:17:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 10013,
                                            "name": "destToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9971,
                                            "src": "14457:9:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 10012,
                                          "name": "IERC20",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24699,
                                          "src": "14450:6:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                            "typeString": "type(contract IERC20)"
                                          }
                                        },
                                        "id": 10014,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14450:17:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$24699",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 10015,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "decimals",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 24630,
                                      "src": "14450:26:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                                        "typeString": "function () view external returns (uint8)"
                                      }
                                    },
                                    "id": 10016,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14450:28:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "14430:48:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 10018,
                                "nodeType": "ExpressionStatement",
                                "src": "14430:48:43"
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10022,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 10020,
                                  "name": "destTokenDecimals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10003,
                                  "src": "14488:17:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 10021,
                                  "name": "sourceTokenDecimals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9985,
                                  "src": "14509:19:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14488:40:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10043,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 10034,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14617:2:43",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "3138",
                                            "id": 10037,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "14635:2:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_18_by_1",
                                              "typeString": "int_const 18"
                                            },
                                            "value": "18"
                                          },
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 10040,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 10038,
                                              "name": "sourceTokenDecimals",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9985,
                                              "src": "14639:19:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 10039,
                                              "name": "destTokenDecimals",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10003,
                                              "src": "14661:17:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "14639:39:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_18_by_1",
                                              "typeString": "int_const 18"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 10035,
                                            "name": "SafeMath",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42309,
                                            "src": "14622:8:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_SafeMath_$42309_$",
                                              "typeString": "type(library SafeMath)"
                                            }
                                          },
                                          "id": 10036,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "14622:12:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 10041,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14622:57:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 10042,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "14621:59:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14617:63:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "functionReturnParameters": 9975,
                                "id": 10044,
                                "nodeType": "Return",
                                "src": "14610:70:43"
                              },
                              "id": 10045,
                              "nodeType": "IfStatement",
                              "src": "14484:196:43",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10032,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 10023,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14537:2:43",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "3138",
                                            "id": 10026,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "14555:2:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_18_by_1",
                                              "typeString": "int_const 18"
                                            },
                                            "value": "18"
                                          },
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 10029,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 10027,
                                              "name": "destTokenDecimals",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10003,
                                              "src": "14559:17:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 10028,
                                              "name": "sourceTokenDecimals",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9985,
                                              "src": "14579:19:43",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "14559:39:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_18_by_1",
                                              "typeString": "int_const 18"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 10024,
                                            "name": "SafeMath",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42309,
                                            "src": "14542:8:43",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_SafeMath_$42309_$",
                                              "typeString": "type(library SafeMath)"
                                            }
                                          },
                                          "id": 10025,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42092,
                                          "src": "14542:12:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 10030,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14542:57:43",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 10031,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "14541:59:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14537:63:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "functionReturnParameters": 9975,
                                "id": 10033,
                                "nodeType": "Return",
                                "src": "14530:70:43"
                              }
                            }
                          ]
                        },
                        "id": 10047,
                        "nodeType": "IfStatement",
                        "src": "14070:615:43",
                        "trueBody": {
                          "id": 9983,
                          "nodeType": "Block",
                          "src": "14100:95:43",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                  "typeString": "int_const 1000000000000000000"
                                },
                                "id": 9981,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 9979,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14112:2:43",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3138",
                                  "id": 9980,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14116:2:43",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_18_by_1",
                                    "typeString": "int_const 18"
                                  },
                                  "value": "18"
                                },
                                "src": "14112:6:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                  "typeString": "int_const 1000000000000000000"
                                }
                              },
                              "functionReturnParameters": 9975,
                              "id": 9982,
                              "nodeType": "Return",
                              "src": "14105:13:43"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the relative precision between two tokens.\n\t * @param sourceToken The address of the source tokens.\n@param destToken The address of the destiny tokens.\n\t * @return The precision ratio source/dest.\n",
                  "id": 10049,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getDecimalPrecision",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9972,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9969,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 10049,
                        "src": "13951:19:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9968,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13951:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9971,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 10049,
                        "src": "13972:17:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9970,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13972:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13950:40:43"
                  },
                  "returnParameters": {
                    "id": 9975,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9974,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10049,
                        "src": "14014:7:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9973,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14014:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14013:9:43"
                  },
                  "scope": 10050,
                  "src": "13921:767:43",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 10051,
              "src": "813:13877:43"
            }
          ],
          "src": "118:14573:43"
        },
        "id": 43
      },
      "contracts/feeds/PriceFeedsConstants.sol": {
        "ast": {
          "absolutePath": "contracts/feeds/PriceFeedsConstants.sol",
          "exportedSymbols": {
            "Constants": [
              10119
            ]
          },
          "id": 10120,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10052,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:44"
            },
            {
              "absolutePath": "contracts/interfaces/IWrbtcERC20.sol",
              "file": "../interfaces/IWrbtcERC20.sol",
              "id": 10053,
              "nodeType": "ImportDirective",
              "scope": 10120,
              "sourceUnit": 25560,
              "src": "143:39:44",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Address.sol",
              "file": "../openzeppelin/Address.sol",
              "id": 10054,
              "nodeType": "ImportDirective",
              "scope": 10120,
              "sourceUnit": 41099,
              "src": "183:37:44",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title The Price Feeds Constants contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract keep the addresses of token instances for wrBTC, base token\nand protocol token.\n",
              "fullyImplemented": true,
              "id": 10119,
              "linearizedBaseContracts": [
                10119
              ],
              "name": "Constants",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 10056,
                  "name": "wrbtcToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 10119,
                  "src": "564:29:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                    "typeString": "contract IWrbtcERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10055,
                    "name": "IWrbtcERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25559,
                    "src": "564:11:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                      "typeString": "contract IWrbtcERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 10058,
                  "name": "baseToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 10119,
                  "src": "596:28:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                    "typeString": "contract IWrbtcERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10057,
                    "name": "IWrbtcERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25559,
                    "src": "596:11:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                      "typeString": "contract IWrbtcERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 10060,
                  "name": "protocolTokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 10119,
                  "src": "627:37:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10059,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "627:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10079,
                    "nodeType": "Block",
                    "src": "852:140:44",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10068,
                                  "name": "_wrbtcTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10062,
                                  "src": "883:18:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10066,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "864:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 10067,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "864:18:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 10069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "864:38:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5f7772627463546f6b656e41646472657373206e6f74206120636f6e7472616374",
                              "id": 10070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "904:35:44",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d4b50e87c9d55e5edf5a160a7da88224da3e9551bf38c8e77b63a082b508b4ea",
                                "typeString": "literal_string \"_wrbtcTokenAddress not a contract\""
                              },
                              "value": "_wrbtcTokenAddress not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d4b50e87c9d55e5edf5a160a7da88224da3e9551bf38c8e77b63a082b508b4ea",
                                "typeString": "literal_string \"_wrbtcTokenAddress not a contract\""
                              }
                            ],
                            "id": 10065,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "856:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "856:84:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10072,
                        "nodeType": "ExpressionStatement",
                        "src": "856:84:44"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10073,
                            "name": "wrbtcToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10056,
                            "src": "944:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                              "typeString": "contract IWrbtcERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10075,
                                "name": "_wrbtcTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10062,
                                "src": "969:18:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10074,
                              "name": "IWrbtcERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25559,
                              "src": "957:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWrbtcERC20_$25559_$",
                                "typeString": "type(contract IWrbtcERC20)"
                              }
                            },
                            "id": 10076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "957:31:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                              "typeString": "contract IWrbtcERC20"
                            }
                          },
                          "src": "944:44:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                            "typeString": "contract IWrbtcERC20"
                          }
                        },
                        "id": 10078,
                        "nodeType": "ExpressionStatement",
                        "src": "944:44:44"
                      }
                    ]
                  },
                  "documentation": "@notice Set wrBTC token address.\n\t * @param _wrbtcTokenAddress The address of the wrapped wrBTC token.\n",
                  "id": 10080,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setWrbtcToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10063,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10062,
                        "name": "_wrbtcTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10080,
                        "src": "815:26:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10061,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "815:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "814:28:44"
                  },
                  "returnParameters": {
                    "id": 10064,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "852:0:44"
                  },
                  "scope": 10119,
                  "src": "791:201:44",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10097,
                    "nodeType": "Block",
                    "src": "1193:146:44",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10088,
                                  "name": "_protocolTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10082,
                                  "src": "1224:21:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10086,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "1205:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 10087,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "1205:18:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 10089,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1205:41:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5f70726f746f636f6c546f6b656e41646472657373206e6f74206120636f6e7472616374",
                              "id": 10090,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1248:38:44",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e273df875a3a12a28f8b01bb25f585329211ba0c76edd90ed0743a15790d8e30",
                                "typeString": "literal_string \"_protocolTokenAddress not a contract\""
                              },
                              "value": "_protocolTokenAddress not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e273df875a3a12a28f8b01bb25f585329211ba0c76edd90ed0743a15790d8e30",
                                "typeString": "literal_string \"_protocolTokenAddress not a contract\""
                              }
                            ],
                            "id": 10085,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1197:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1197:90:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10092,
                        "nodeType": "ExpressionStatement",
                        "src": "1197:90:44"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10093,
                            "name": "protocolTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10060,
                            "src": "1291:20:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10094,
                            "name": "_protocolTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10082,
                            "src": "1314:21:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1291:44:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 10096,
                        "nodeType": "ExpressionStatement",
                        "src": "1291:44:44"
                      }
                    ]
                  },
                  "documentation": "@notice Set protocol token address.\n\t * @param _protocolTokenAddress The address of the protocol token.\n",
                  "id": 10098,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setProtocolTokenAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10083,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10082,
                        "name": "_protocolTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10098,
                        "src": "1153:29:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10081,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1153:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1152:31:44"
                  },
                  "returnParameters": {
                    "id": 10084,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1193:0:44"
                  },
                  "scope": 10119,
                  "src": "1119:220:44",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10117,
                    "nodeType": "Block",
                    "src": "1513:136:44",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10106,
                                  "name": "_baseTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10100,
                                  "src": "1544:17:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10104,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "1525:7:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 10105,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "1525:18:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 10107,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1525:37:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5f62617365546f6b656e41646472657373206e6f74206120636f6e7472616374",
                              "id": 10108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1564:34:44",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c086c0f64db25cae8e8963b5d46dccc03b7a4ab389d42b9f0601d70df549d575",
                                "typeString": "literal_string \"_baseTokenAddress not a contract\""
                              },
                              "value": "_baseTokenAddress not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c086c0f64db25cae8e8963b5d46dccc03b7a4ab389d42b9f0601d70df549d575",
                                "typeString": "literal_string \"_baseTokenAddress not a contract\""
                              }
                            ],
                            "id": 10103,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1517:7:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1517:82:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10110,
                        "nodeType": "ExpressionStatement",
                        "src": "1517:82:44"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10111,
                            "name": "baseToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10058,
                            "src": "1603:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                              "typeString": "contract IWrbtcERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10113,
                                "name": "_baseTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10100,
                                "src": "1627:17:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10112,
                              "name": "IWrbtcERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25559,
                              "src": "1615:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWrbtcERC20_$25559_$",
                                "typeString": "type(contract IWrbtcERC20)"
                              }
                            },
                            "id": 10114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1615:30:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                              "typeString": "contract IWrbtcERC20"
                            }
                          },
                          "src": "1603:42:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                            "typeString": "contract IWrbtcERC20"
                          }
                        },
                        "id": 10116,
                        "nodeType": "ExpressionStatement",
                        "src": "1603:42:44"
                      }
                    ]
                  },
                  "documentation": "@notice Set base token address.\n\t * @param _baseTokenAddress The address of the base token.\n",
                  "id": 10118,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setBaseToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10101,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10100,
                        "name": "_baseTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10118,
                        "src": "1477:25:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10099,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1477:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1476:27:44"
                  },
                  "returnParameters": {
                    "id": 10102,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1513:0:44"
                  },
                  "scope": 10119,
                  "src": "1454:195:44",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 10120,
              "src": "542:1109:44"
            }
          ],
          "src": "118:1534:44"
        },
        "id": 44
      },
      "contracts/feeds/USDTPriceFeed.sol": {
        "ast": {
          "absolutePath": "contracts/feeds/USDTPriceFeed.sol",
          "exportedSymbols": {
            "USDTPriceFeed": [
              10144
            ]
          },
          "id": 10145,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10121,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:45"
            },
            {
              "absolutePath": "contracts/feeds/PriceFeeds.sol",
              "file": "./PriceFeeds.sol",
              "id": 10122,
              "nodeType": "ImportDirective",
              "scope": 10145,
              "sourceUnit": 10051,
              "src": "25:26:45",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10123,
                    "name": "IPriceFeedsExt",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9176,
                    "src": "286:14:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                      "typeString": "contract IPriceFeedsExt"
                    }
                  },
                  "id": 10124,
                  "nodeType": "InheritanceSpecifier",
                  "src": "286:14:45"
                }
              ],
              "contractDependencies": [
                9176
              ],
              "contractKind": "contract",
              "documentation": "@notice The Price Feed USDT contract.\n * This contract implements USDT query functionality,\ngetting the price and the last timestamp from a\ntrivial formula, always returning 1 and now.\n",
              "fullyImplemented": true,
              "id": 10144,
              "linearizedBaseContracts": [
                10144,
                9176
              ],
              "name": "USDTPriceFeed",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 10127,
                  "name": "USDT_RATE",
                  "nodeType": "VariableDeclaration",
                  "scope": 10144,
                  "src": "304:44:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10125,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "304:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 10126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "341:7:45",
                    "subdenomination": "ether",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "value": "1"
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 10134,
                    "nodeType": "Block",
                    "src": "506:24:45",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10132,
                          "name": "USDT_RATE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10127,
                          "src": "517:9:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 10131,
                        "id": 10133,
                        "nodeType": "Return",
                        "src": "510:16:45"
                      }
                    ]
                  },
                  "documentation": "@notice Get the USDT price.\n\t * @return Always returns the trivial rate of 1.\n",
                  "id": 10135,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestAnswer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10128,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "471:2:45"
                  },
                  "returnParameters": {
                    "id": 10131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10130,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10135,
                        "src": "497:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10129,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "497:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "496:9:45"
                  },
                  "scope": 10144,
                  "src": "450:80:45",
                  "stateMutability": "view",
                  "superFunction": 9175,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10142,
                    "nodeType": "Block",
                    "src": "708:18:45",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10140,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44996,
                          "src": "719:3:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 10139,
                        "id": 10141,
                        "nodeType": "Return",
                        "src": "712:10:45"
                      }
                    ]
                  },
                  "documentation": "@notice Get the las time the price was updated.\n@return Always trivial current block's timestamp.",
                  "id": 10143,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestTimestamp",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10136,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "673:2:45"
                  },
                  "returnParameters": {
                    "id": 10139,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10138,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10143,
                        "src": "699:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10137,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "699:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "698:9:45"
                  },
                  "scope": 10144,
                  "src": "649:77:45",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 10145,
              "src": "260:468:45"
            }
          ],
          "src": "0:729:45"
        },
        "id": 45
      },
      "contracts/feeds/testnet/PriceFeedsLocal.sol": {
        "ast": {
          "absolutePath": "contracts/feeds/testnet/PriceFeedsLocal.sol",
          "exportedSymbols": {
            "PriceFeedsLocal": [
              10352
            ]
          },
          "id": 10353,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10146,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:46"
            },
            {
              "absolutePath": "contracts/feeds/PriceFeeds.sol",
              "file": "../PriceFeeds.sol",
              "id": 10147,
              "nodeType": "ImportDirective",
              "scope": 10353,
              "sourceUnit": 10051,
              "src": "143:27:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10148,
                    "name": "PriceFeeds",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10050,
                    "src": "497:10:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PriceFeeds_$10050",
                      "typeString": "contract PriceFeeds"
                    }
                  },
                  "id": 10149,
                  "nodeType": "InheritanceSpecifier",
                  "src": "497:10:46"
                }
              ],
              "contractDependencies": [
                10050,
                10119,
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Price Feeds Local contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the logic of setting and getting rates between two tokens.\n",
              "fullyImplemented": true,
              "id": 10352,
              "linearizedBaseContracts": [
                10352,
                10050,
                41798,
                41125,
                10119
              ],
              "name": "PriceFeedsLocal",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 10155,
                  "name": "rates",
                  "nodeType": "VariableDeclaration",
                  "scope": 10352,
                  "src": "511:60:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 10154,
                    "keyType": {
                      "id": 10150,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "519:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "511:47:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 10153,
                      "keyType": {
                        "id": 10151,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "538:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "530:27:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 10152,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "549:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10167,
                    "nodeType": "Block",
                    "src": "989:2:46",
                    "statements": []
                  },
                  "documentation": "@notice Deploy local price feed contract.\n\t * @param _wrbtcTokenAddress The address of the wrBTC instance.\n@param _protocolTokenAddress The address of the protocol token instance.\n",
                  "id": 10168,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10162,
                          "name": "_wrbtcTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10157,
                          "src": "925:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10163,
                          "name": "_protocolTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10159,
                          "src": "945:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10164,
                          "name": "_wrbtcTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10157,
                          "src": "968:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 10165,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 10161,
                        "name": "PriceFeeds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10050,
                        "src": "914:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_PriceFeeds_$10050_$",
                          "typeString": "type(contract PriceFeeds)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "914:73:46"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10160,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10157,
                        "name": "_wrbtcTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10168,
                        "src": "844:26:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10156,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "844:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10159,
                        "name": "_protocolTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10168,
                        "src": "872:29:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10158,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "872:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "843:59:46"
                  },
                  "returnParameters": {
                    "id": 10166,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "989:0:46"
                  },
                  "scope": 10352,
                  "src": "832:159:46",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10311,
                    "nodeType": "Block",
                    "src": "1390:933:46",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "1402:20:46",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 10180,
                                "name": "globalPricingPaused",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9203,
                                "src": "1403:19:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "70726963696e6720697320706175736564",
                              "id": 10182,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1424:19:46",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a691bf5e21c6bc6589b3bb5e4ec447b6123fc63906ff665341e863b863542691",
                                "typeString": "literal_string \"pricing is paused\""
                              },
                              "value": "pricing is paused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a691bf5e21c6bc6589b3bb5e4ec447b6123fc63906ff665341e863b863542691",
                                "typeString": "literal_string \"pricing is paused\""
                              }
                            ],
                            "id": 10179,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1394:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1394:50:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10184,
                        "nodeType": "ExpressionStatement",
                        "src": "1394:50:46"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 10187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10185,
                            "name": "sourceToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10170,
                            "src": "1453:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 10186,
                            "name": "destToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10172,
                            "src": "1468:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1453:24:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 10309,
                          "nodeType": "Block",
                          "src": "1531:789:46",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 10203,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 10201,
                                  "name": "sourceToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10170,
                                  "src": "1540:11:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 10202,
                                  "name": "protocolTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10060,
                                  "src": "1555:20:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1540:35:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 10211,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 10209,
                                    "name": "destToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10172,
                                    "src": "1681:9:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 10210,
                                    "name": "protocolTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10060,
                                    "src": "1694:20:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "1681:33:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 10299,
                                  "nodeType": "Block",
                                  "src": "1838:417:46",
                                  "statements": [
                                    {
                                      "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 10229,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 10223,
                                              "name": "rates",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10155,
                                              "src": "1848:5:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                "typeString": "mapping(address => mapping(address => uint256))"
                                              }
                                            },
                                            "id": 10225,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 10224,
                                              "name": "sourceToken",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10170,
                                              "src": "1854:11:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "1848:18:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                              "typeString": "mapping(address => uint256)"
                                            }
                                          },
                                          "id": 10227,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 10226,
                                            "name": "destToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10172,
                                            "src": "1867:9:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "1848:29:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 10228,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1881:1:46",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "1848:34:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 10297,
                                        "nodeType": "Block",
                                        "src": "1940:310:46",
                                        "statements": [
                                          {
                                            "assignments": [
                                              10240
                                            ],
                                            "declarations": [
                                              {
                                                "constant": false,
                                                "id": 10240,
                                                "name": "sourceToEther",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10297,
                                                "src": "1947:21:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "typeName": {
                                                  "id": 10239,
                                                  "name": "uint256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "1947:7:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "value": null,
                                                "visibility": "internal"
                                              }
                                            ],
                                            "id": 10261,
                                            "initialValue": {
                                              "argumentTypes": null,
                                              "condition": {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 10249,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 10241,
                                                      "name": "rates",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 10155,
                                                      "src": "1971:5:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                        "typeString": "mapping(address => mapping(address => uint256))"
                                                      }
                                                    },
                                                    "id": 10243,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "id": 10242,
                                                      "name": "sourceToken",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 10170,
                                                      "src": "1977:11:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "1971:18:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                      "typeString": "mapping(address => uint256)"
                                                    }
                                                  },
                                                  "id": 10247,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 10245,
                                                        "name": "wrbtcToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 10056,
                                                        "src": "1998:10:46",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                          "typeString": "contract IWrbtcERC20"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                          "typeString": "contract IWrbtcERC20"
                                                        }
                                                      ],
                                                      "id": 10244,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "nodeType": "ElementaryTypeNameExpression",
                                                      "src": "1990:7:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                      },
                                                      "typeName": "address"
                                                    },
                                                    "id": 10246,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1990:19:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "1971:39:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "30",
                                                  "id": 10248,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "2014:1:46",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  },
                                                  "value": "0"
                                                },
                                                "src": "1971:44:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "falseExpression": {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                  "typeString": "int_const 1000000000000000000"
                                                },
                                                "id": 10259,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "3130",
                                                  "id": 10257,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "2060:2:46",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                  },
                                                  "value": "10"
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "**",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "3138",
                                                  "id": 10258,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "2064:2:46",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_18_by_1",
                                                    "typeString": "int_const 18"
                                                  },
                                                  "value": "18"
                                                },
                                                "src": "2060:6:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                  "typeString": "int_const 1000000000000000000"
                                                }
                                              },
                                              "id": 10260,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "Conditional",
                                              "src": "1971:95:46",
                                              "trueExpression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 10250,
                                                    "name": "rates",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 10155,
                                                    "src": "2018:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                      "typeString": "mapping(address => mapping(address => uint256))"
                                                    }
                                                  },
                                                  "id": 10252,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "id": 10251,
                                                    "name": "sourceToken",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 10170,
                                                    "src": "2024:11:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "2018:18:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                  }
                                                },
                                                "id": 10256,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "id": 10254,
                                                      "name": "wrbtcToken",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 10056,
                                                      "src": "2045:10:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                        "typeString": "contract IWrbtcERC20"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                        "typeString": "contract IWrbtcERC20"
                                                      }
                                                    ],
                                                    "id": 10253,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "2037:7:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_address_$",
                                                      "typeString": "type(address)"
                                                    },
                                                    "typeName": "address"
                                                  },
                                                  "id": 10255,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "2037:19:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "2018:39:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "1947:119:46"
                                          },
                                          {
                                            "assignments": [
                                              10263
                                            ],
                                            "declarations": [
                                              {
                                                "constant": false,
                                                "id": 10263,
                                                "name": "etherToDest",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10297,
                                                "src": "2073:19:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "typeName": {
                                                  "id": 10262,
                                                  "name": "uint256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "2073:7:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "value": null,
                                                "visibility": "internal"
                                              }
                                            ],
                                            "id": 10284,
                                            "initialValue": {
                                              "argumentTypes": null,
                                              "condition": {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 10272,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 10264,
                                                      "name": "rates",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 10155,
                                                      "src": "2095:5:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                        "typeString": "mapping(address => mapping(address => uint256))"
                                                      }
                                                    },
                                                    "id": 10268,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 10266,
                                                          "name": "wrbtcToken",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 10056,
                                                          "src": "2109:10:46",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                            "typeString": "contract IWrbtcERC20"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                            "typeString": "contract IWrbtcERC20"
                                                          }
                                                        ],
                                                        "id": 10265,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "2101:7:46",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_type$_t_address_$",
                                                          "typeString": "type(address)"
                                                        },
                                                        "typeName": "address"
                                                      },
                                                      "id": 10267,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "typeConversion",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "2101:19:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "2095:26:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                      "typeString": "mapping(address => uint256)"
                                                    }
                                                  },
                                                  "id": 10270,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "id": 10269,
                                                    "name": "destToken",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 10172,
                                                    "src": "2122:9:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "2095:37:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "30",
                                                  "id": 10271,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "2136:1:46",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  },
                                                  "value": "0"
                                                },
                                                "src": "2095:42:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "falseExpression": {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                  "typeString": "int_const 1000000000000000000"
                                                },
                                                "id": 10282,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "3130",
                                                  "id": 10280,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "2180:2:46",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                  },
                                                  "value": "10"
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "**",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "3138",
                                                  "id": 10281,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "2184:2:46",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_18_by_1",
                                                    "typeString": "int_const 18"
                                                  },
                                                  "value": "18"
                                                },
                                                "src": "2180:6:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                  "typeString": "int_const 1000000000000000000"
                                                }
                                              },
                                              "id": 10283,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "Conditional",
                                              "src": "2095:91:46",
                                              "trueExpression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 10273,
                                                    "name": "rates",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 10155,
                                                    "src": "2140:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                      "typeString": "mapping(address => mapping(address => uint256))"
                                                    }
                                                  },
                                                  "id": 10277,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 10275,
                                                        "name": "wrbtcToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 10056,
                                                        "src": "2154:10:46",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                          "typeString": "contract IWrbtcERC20"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                          "typeString": "contract IWrbtcERC20"
                                                        }
                                                      ],
                                                      "id": 10274,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "nodeType": "ElementaryTypeNameExpression",
                                                      "src": "2146:7:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                      },
                                                      "typeName": "address"
                                                    },
                                                    "id": 10276,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2146:19:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "2140:26:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                  }
                                                },
                                                "id": 10279,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 10278,
                                                  "name": "destToken",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 10172,
                                                  "src": "2167:9:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "2140:37:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "2073:113:46"
                                          },
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 10295,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "argumentTypes": null,
                                                "id": 10285,
                                                "name": "rate",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10175,
                                                "src": "2194:4:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                      "typeString": "int_const 1000000000000000000"
                                                    },
                                                    "id": 10293,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "argumentTypes": null,
                                                      "hexValue": "3130",
                                                      "id": 10291,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "2236:2:46",
                                                      "subdenomination": null,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_10_by_1",
                                                        "typeString": "int_const 10"
                                                      },
                                                      "value": "10"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "**",
                                                    "rightExpression": {
                                                      "argumentTypes": null,
                                                      "hexValue": "3138",
                                                      "id": 10292,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "2240:2:46",
                                                      "subdenomination": null,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_18_by_1",
                                                        "typeString": "int_const 18"
                                                      },
                                                      "value": "18"
                                                    },
                                                    "src": "2236:6:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                      "typeString": "int_const 1000000000000000000"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                      "typeString": "int_const 1000000000000000000"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 10288,
                                                        "name": "etherToDest",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 10263,
                                                        "src": "2219:11:46",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 10286,
                                                        "name": "sourceToEther",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 10240,
                                                        "src": "2201:13:46",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "id": 10287,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "mul",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 42153,
                                                      "src": "2201:17:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                      }
                                                    },
                                                    "id": 10289,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2201:30:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 10290,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "div",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 42169,
                                                  "src": "2201:34:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                  }
                                                },
                                                "id": 10294,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2201:42:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "2194:49:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 10296,
                                            "nodeType": "ExpressionStatement",
                                            "src": "2194:49:46"
                                          }
                                        ]
                                      },
                                      "id": 10298,
                                      "nodeType": "IfStatement",
                                      "src": "1844:406:46",
                                      "trueBody": {
                                        "id": 10238,
                                        "nodeType": "Block",
                                        "src": "1884:50:46",
                                        "statements": [
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 10236,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "argumentTypes": null,
                                                "id": 10230,
                                                "name": "rate",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10175,
                                                "src": "1891:4:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 10231,
                                                    "name": "rates",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 10155,
                                                    "src": "1898:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                      "typeString": "mapping(address => mapping(address => uint256))"
                                                    }
                                                  },
                                                  "id": 10233,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "id": 10232,
                                                    "name": "sourceToken",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 10170,
                                                    "src": "1904:11:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "1898:18:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                  }
                                                },
                                                "id": 10235,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 10234,
                                                  "name": "destToken",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 10172,
                                                  "src": "1917:9:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1898:29:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "1891:36:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 10237,
                                            "nodeType": "ExpressionStatement",
                                            "src": "1891:36:46"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                },
                                "id": 10300,
                                "nodeType": "IfStatement",
                                "src": "1677:578:46",
                                "trueBody": {
                                  "id": 10222,
                                  "nodeType": "Block",
                                  "src": "1716:116:46",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 10220,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 10212,
                                          "name": "rate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10175,
                                          "src": "1776:4:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_rational_1000000000000000000000000000000000000_by_1",
                                                "typeString": "int_const 1000...(29 digits omitted)...0000"
                                              },
                                              "id": 10217,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "3130",
                                                "id": 10215,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1796:2:46",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_10_by_1",
                                                  "typeString": "int_const 10"
                                                },
                                                "value": "10"
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "**",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "3336",
                                                "id": 10216,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1800:2:46",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_36_by_1",
                                                  "typeString": "int_const 36"
                                                },
                                                "value": "36"
                                              },
                                              "src": "1796:6:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1000000000000000000000000000000000000_by_1",
                                                "typeString": "int_const 1000...(29 digits omitted)...0000"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "id": 10218,
                                              "name": "protocolTokenEthPrice",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9200,
                                              "src": "1804:21:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_1000000000000000000000000000000000000_by_1",
                                                "typeString": "int_const 1000...(29 digits omitted)...0000"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 10213,
                                              "name": "SafeMath",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42309,
                                              "src": "1783:8:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_SafeMath_$42309_$",
                                                "typeString": "type(library SafeMath)"
                                              }
                                            },
                                            "id": 10214,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "div",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 42169,
                                            "src": "1783:12:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 10219,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1783:43:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1776:50:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 10221,
                                      "nodeType": "ExpressionStatement",
                                      "src": "1776:50:46"
                                    }
                                  ]
                                }
                              },
                              "id": 10301,
                              "nodeType": "IfStatement",
                              "src": "1536:719:46",
                              "trueBody": {
                                "id": 10208,
                                "nodeType": "Block",
                                "src": "1577:94:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10206,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 10204,
                                        "name": "rate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10175,
                                        "src": "1637:4:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 10205,
                                        "name": "protocolTokenEthPrice",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9200,
                                        "src": "1644:21:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1637:28:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 10207,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1637:28:46"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10307,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10302,
                                  "name": "precision",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10177,
                                  "src": "2259:9:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 10304,
                                      "name": "sourceToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10170,
                                      "src": "2292:11:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 10305,
                                      "name": "destToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10172,
                                      "src": "2305:9:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 10303,
                                    "name": "_getDecimalPrecision",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10049,
                                    "src": "2271:20:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address,address) view returns (uint256)"
                                    }
                                  },
                                  "id": 10306,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2271:44:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2259:56:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10308,
                              "nodeType": "ExpressionStatement",
                              "src": "2259:56:46"
                            }
                          ]
                        },
                        "id": 10310,
                        "nodeType": "IfStatement",
                        "src": "1449:871:46",
                        "trueBody": {
                          "id": 10200,
                          "nodeType": "Block",
                          "src": "1479:46:46",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10192,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10188,
                                  "name": "rate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10175,
                                  "src": "1484:4:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  },
                                  "id": 10191,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 10189,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1491:2:46",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3138",
                                    "id": 10190,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1495:2:46",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_18_by_1",
                                      "typeString": "int_const 18"
                                    },
                                    "value": "18"
                                  },
                                  "src": "1491:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  }
                                },
                                "src": "1484:13:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10193,
                              "nodeType": "ExpressionStatement",
                              "src": "1484:13:46"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10198,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10194,
                                  "name": "precision",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10177,
                                  "src": "1502:9:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  },
                                  "id": 10197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 10195,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1514:2:46",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3138",
                                    "id": 10196,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1518:2:46",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_18_by_1",
                                      "typeString": "int_const 18"
                                    },
                                    "value": "18"
                                  },
                                  "src": "1514:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  }
                                },
                                "src": "1502:18:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10199,
                              "nodeType": "ExpressionStatement",
                              "src": "1502:18:46"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the price ratio between two tokens.\n\t * @param sourceToken The address of the source tokens.\n@param destToken The address of the destiny tokens.\n\t * @return rate The price ratio source/dest.\n@return precision The ratio precision.\n",
                  "id": 10312,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_queryRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10173,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10170,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 10312,
                        "src": "1294:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10169,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1294:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10172,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 10312,
                        "src": "1315:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10171,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1315:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1293:40:46"
                  },
                  "returnParameters": {
                    "id": 10178,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10175,
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "scope": 10312,
                        "src": "1357:12:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10174,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1357:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10177,
                        "name": "precision",
                        "nodeType": "VariableDeclaration",
                        "scope": 10312,
                        "src": "1371:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10176,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1371:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1356:33:46"
                  },
                  "scope": 10352,
                  "src": "1274:1049:46",
                  "stateMutability": "view",
                  "superFunction": 9967,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10350,
                    "nodeType": "Block",
                    "src": "2652:146:46",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 10325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10323,
                            "name": "sourceToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10314,
                            "src": "2660:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 10324,
                            "name": "destToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10316,
                            "src": "2675:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2660:24:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10349,
                        "nodeType": "IfStatement",
                        "src": "2656:139:46",
                        "trueBody": {
                          "id": 10348,
                          "nodeType": "Block",
                          "src": "2686:109:46",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10332,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10326,
                                      "name": "rates",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10155,
                                      "src": "2691:5:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 10329,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10327,
                                      "name": "sourceToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10314,
                                      "src": "2697:11:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2691:18:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 10330,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10328,
                                    "name": "destToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10316,
                                    "src": "2710:9:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2691:29:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 10331,
                                  "name": "rate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10318,
                                  "src": "2723:4:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2691:36:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10333,
                              "nodeType": "ExpressionStatement",
                              "src": "2691:36:46"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10334,
                                      "name": "rates",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10155,
                                      "src": "2732:5:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 10337,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10335,
                                      "name": "destToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10316,
                                      "src": "2738:9:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2732:16:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 10338,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10336,
                                    "name": "sourceToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10314,
                                    "src": "2749:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2732:29:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(29 digits omitted)...0000"
                                      },
                                      "id": 10343,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 10341,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2777:2:46",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3336",
                                        "id": 10342,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2781:2:46",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_36_by_1",
                                          "typeString": "int_const 36"
                                        },
                                        "value": "36"
                                      },
                                      "src": "2777:6:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(29 digits omitted)...0000"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 10344,
                                      "name": "rate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10318,
                                      "src": "2785:4:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1000000000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(29 digits omitted)...0000"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10339,
                                      "name": "SafeMath",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42309,
                                      "src": "2764:8:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SafeMath_$42309_$",
                                        "typeString": "type(library SafeMath)"
                                      }
                                    },
                                    "id": 10340,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "2764:12:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 10345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2764:26:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2732:58:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10347,
                              "nodeType": "ExpressionStatement",
                              "src": "2732:58:46"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Owner set price ratio between two tokens.\n\t * @param sourceToken The address of the source tokens.\n@param destToken The address of the destiny tokens.\n@param rate The price ratio source/dest.\n",
                  "id": 10351,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 10321,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 10320,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2642:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2642:9:46"
                    }
                  ],
                  "name": "setRates",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10319,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10314,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 10351,
                        "src": "2575:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10313,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2575:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10316,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 10351,
                        "src": "2598:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10315,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2598:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10318,
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "scope": 10351,
                        "src": "2619:12:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10317,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2619:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2571:63:46"
                  },
                  "returnParameters": {
                    "id": 10322,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2652:0:46"
                  },
                  "scope": 10352,
                  "src": "2554:244:46",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 10353,
              "src": "469:2598:46"
            }
          ],
          "src": "118:2950:46"
        },
        "id": 46
      },
      "contracts/feeds/testnet/PriceFeedsMoC.sol": {
        "ast": {
          "absolutePath": "contracts/feeds/testnet/PriceFeedsMoC.sol",
          "exportedSymbols": {
            "Medianizer": [
              10365
            ],
            "PriceFeedsMoC": [
              10488
            ]
          },
          "id": 10489,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10354,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:47"
            },
            {
              "absolutePath": "contracts/feeds/PriceFeeds.sol",
              "file": "../PriceFeeds.sol",
              "id": 10355,
              "nodeType": "ImportDirective",
              "scope": 10489,
              "sourceUnit": 10051,
              "src": "25:27:47",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/feeds/IRSKOracle.sol",
              "file": "../IRSKOracle.sol",
              "id": 10356,
              "nodeType": "ImportDirective",
              "scope": 10489,
              "sourceUnit": 8733,
              "src": "53:27:47",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Address.sol",
              "file": "../../openzeppelin/Address.sol",
              "id": 10357,
              "nodeType": "ImportDirective",
              "scope": 10489,
              "sourceUnit": 41099,
              "src": "81:40:47",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 10365,
              "linearizedBaseContracts": [
                10365
              ],
              "name": "Medianizer",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 10364,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "peek",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10358,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "160:2:47"
                  },
                  "returnParameters": {
                    "id": 10363,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10360,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10364,
                        "src": "186:7:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 10359,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "186:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10362,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10364,
                        "src": "195:4:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10361,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "195:4:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "185:15:47"
                  },
                  "scope": 10365,
                  "src": "147:54:47",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 10489,
              "src": "123:80:47"
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10366,
                    "name": "IPriceFeedsExt",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9176,
                    "src": "386:14:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPriceFeedsExt_$9176",
                      "typeString": "contract IPriceFeedsExt"
                    }
                  },
                  "id": 10367,
                  "nodeType": "InheritanceSpecifier",
                  "src": "386:14:47"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10368,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "402:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 10369,
                  "nodeType": "InheritanceSpecifier",
                  "src": "402:7:47"
                }
              ],
              "contractDependencies": [
                9176,
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Price Feed of MoC (Money on Chain) contract.\n * This contract contains the logic to set MoC oracles\nand query last price update.\n",
              "fullyImplemented": true,
              "id": 10488,
              "linearizedBaseContracts": [
                10488,
                41798,
                41125,
                9176
              ],
              "name": "PriceFeedsMoC",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 10371,
                  "name": "mocOracleAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 10488,
                  "src": "429:31:47",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10370,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "429:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 10373,
                  "name": "rskOracleAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 10488,
                  "src": "463:31:47",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10372,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "463:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 10379,
                  "name": "SetMoCOracleAddress",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10378,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10375,
                        "indexed": true,
                        "name": "mocOracleAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10379,
                        "src": "539:32:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10374,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "539:7:47",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10377,
                        "indexed": false,
                        "name": "changerAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10379,
                        "src": "573:22:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10376,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "573:7:47",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "538:58:47"
                  },
                  "src": "513:84:47"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 10385,
                  "name": "SetRSKOracleAddress",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10384,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10381,
                        "indexed": true,
                        "name": "rskOracleAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10385,
                        "src": "625:32:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10380,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "625:7:47",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10383,
                        "indexed": false,
                        "name": "changerAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10385,
                        "src": "659:22:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10382,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "659:7:47",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "624:58:47"
                  },
                  "src": "599:84:47"
                },
                {
                  "body": {
                    "id": 10400,
                    "nodeType": "Block",
                    "src": "940:88:47",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10393,
                              "name": "_mocOracleAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10387,
                              "src": "964:17:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10392,
                            "name": "setMoCOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10461,
                            "src": "944:19:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 10394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "944:38:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10395,
                        "nodeType": "ExpressionStatement",
                        "src": "944:38:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10397,
                              "name": "_rskOracleAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10389,
                              "src": "1006:17:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10396,
                            "name": "setRSKOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10487,
                            "src": "986:19:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 10398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "986:38:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10399,
                        "nodeType": "ExpressionStatement",
                        "src": "986:38:47"
                      }
                    ]
                  },
                  "documentation": "@notice Initialize a new MoC Oracle.\n\t * @param _mocOracleAddress The MoC Oracle address.\n@param _rskOracleAddress The RSK Oracle address.\n",
                  "id": 10401,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10387,
                        "name": "_mocOracleAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10401,
                        "src": "879:25:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10386,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "879:7:47",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10389,
                        "name": "_rskOracleAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10401,
                        "src": "906:25:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10388,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "906:7:47",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "878:54:47"
                  },
                  "returnParameters": {
                    "id": 10391,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "940:0:47"
                  },
                  "scope": 10488,
                  "src": "867:161:47",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10434,
                    "nodeType": "Block",
                    "src": "1181:218:47",
                    "statements": [
                      {
                        "assignments": [
                          10407,
                          10409
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10407,
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "scope": 10434,
                            "src": "1186:13:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 10406,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1186:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10409,
                            "name": "hasValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 10434,
                            "src": "1201:13:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 10408,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1201:4:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10415,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10411,
                                  "name": "mocOracleAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10371,
                                  "src": "1229:16:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 10410,
                                "name": "Medianizer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10365,
                                "src": "1218:10:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Medianizer_$10365_$",
                                  "typeString": "type(contract Medianizer)"
                                }
                              },
                              "id": 10412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1218:28:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Medianizer_$10365",
                                "typeString": "contract Medianizer"
                              }
                            },
                            "id": 10413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "peek",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10364,
                            "src": "1218:33:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$_t_bool_$",
                              "typeString": "function () view external returns (bytes32,bool)"
                            }
                          },
                          "id": 10414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1218:35:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                            "typeString": "tuple(bytes32,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1185:68:47"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 10416,
                          "name": "hasValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10409,
                          "src": "1261:8:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 10432,
                          "nodeType": "Block",
                          "src": "1308:88:47",
                          "statements": [
                            {
                              "assignments": [
                                10423,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10423,
                                  "name": "price",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10432,
                                  "src": "1314:13:47",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 10422,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1314:7:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 10429,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 10425,
                                        "name": "rskOracleAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10373,
                                        "src": "1344:16:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 10424,
                                      "name": "IRSKOracle",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8732,
                                      "src": "1333:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IRSKOracle_$8732_$",
                                        "typeString": "type(contract IRSKOracle)"
                                      }
                                    },
                                    "id": 10426,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1333:28:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRSKOracle_$8732",
                                      "typeString": "contract IRSKOracle"
                                    }
                                  },
                                  "id": 10427,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getPricing",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8723,
                                  "src": "1333:39:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function () view external returns (uint256,uint256)"
                                  }
                                },
                                "id": 10428,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1333:41:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1313:61:47"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10430,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10423,
                                "src": "1386:5:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 10405,
                              "id": 10431,
                              "nodeType": "Return",
                              "src": "1379:12:47"
                            }
                          ]
                        },
                        "id": 10433,
                        "nodeType": "IfStatement",
                        "src": "1257:139:47",
                        "trueBody": {
                          "id": 10421,
                          "nodeType": "Block",
                          "src": "1271:31:47",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10418,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10407,
                                    "src": "1291:5:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 10417,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1283:7:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint256"
                                },
                                "id": 10419,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1283:14:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 10405,
                              "id": 10420,
                              "nodeType": "Return",
                              "src": "1276:21:47"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Get the las time oracle updated the price.\n@return The latest time.",
                  "id": 10435,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestAnswer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10402,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1146:2:47"
                  },
                  "returnParameters": {
                    "id": 10405,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10404,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10435,
                        "src": "1172:7:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10403,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1172:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1171:9:47"
                  },
                  "scope": 10488,
                  "src": "1125:274:47",
                  "stateMutability": "view",
                  "superFunction": 9175,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10460,
                    "nodeType": "Block",
                    "src": "1582:188:47",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10445,
                                  "name": "_mocOracleAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10437,
                                  "src": "1613:17:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10443,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "1594:7:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 10444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "1594:18:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 10446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1594:37:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5f6d6f634f7261636c6541646472657373206e6f74206120636f6e7472616374",
                              "id": 10447,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1633:34:47",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_681946e97b072baa85a75f9168e85aa2e3c6e34adaa36658ee9ef8012b5587d1",
                                "typeString": "literal_string \"_mocOracleAddress not a contract\""
                              },
                              "value": "_mocOracleAddress not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_681946e97b072baa85a75f9168e85aa2e3c6e34adaa36658ee9ef8012b5587d1",
                                "typeString": "literal_string \"_mocOracleAddress not a contract\""
                              }
                            ],
                            "id": 10442,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1586:7:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1586:82:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10449,
                        "nodeType": "ExpressionStatement",
                        "src": "1586:82:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10450,
                            "name": "mocOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10371,
                            "src": "1672:16:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10451,
                            "name": "_mocOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10437,
                            "src": "1691:17:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1672:36:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 10453,
                        "nodeType": "ExpressionStatement",
                        "src": "1672:36:47"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10455,
                              "name": "mocOracleAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10371,
                              "src": "1737:16:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10456,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "1755:3:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10457,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1755:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 10454,
                            "name": "SetMoCOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10379,
                            "src": "1717:19:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 10458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1717:49:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10459,
                        "nodeType": "EmitStatement",
                        "src": "1712:54:47"
                      }
                    ]
                  },
                  "documentation": "@notice Set the MoC Oracle address.\n\t * @param _mocOracleAddress The MoC Oracle address.",
                  "id": 10461,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 10440,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 10439,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1572:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1572:9:47"
                    }
                  ],
                  "name": "setMoCOracleAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10438,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10437,
                        "name": "_mocOracleAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10461,
                        "src": "1538:25:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10436,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1538:7:47",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1537:27:47"
                  },
                  "returnParameters": {
                    "id": 10441,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1582:0:47"
                  },
                  "scope": 10488,
                  "src": "1509:261:47",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10486,
                    "nodeType": "Block",
                    "src": "1953:188:47",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10471,
                                  "name": "_rskOracleAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10463,
                                  "src": "1984:17:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10469,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "1965:7:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 10470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "1965:18:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 10472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1965:37:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5f72736b4f7261636c6541646472657373206e6f74206120636f6e7472616374",
                              "id": 10473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2004:34:47",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1362b137c409fa86212d76eb553fab76dd7aa335761306c54c58dc9fc5b99652",
                                "typeString": "literal_string \"_rskOracleAddress not a contract\""
                              },
                              "value": "_rskOracleAddress not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1362b137c409fa86212d76eb553fab76dd7aa335761306c54c58dc9fc5b99652",
                                "typeString": "literal_string \"_rskOracleAddress not a contract\""
                              }
                            ],
                            "id": 10468,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1957:7:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1957:82:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10475,
                        "nodeType": "ExpressionStatement",
                        "src": "1957:82:47"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10476,
                            "name": "rskOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10373,
                            "src": "2043:16:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10477,
                            "name": "_rskOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10463,
                            "src": "2062:17:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2043:36:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 10479,
                        "nodeType": "ExpressionStatement",
                        "src": "2043:36:47"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10481,
                              "name": "rskOracleAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10373,
                              "src": "2108:16:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10482,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "2126:3:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10483,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2126:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 10480,
                            "name": "SetRSKOracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10385,
                            "src": "2088:19:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 10484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2088:49:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10485,
                        "nodeType": "EmitStatement",
                        "src": "2083:54:47"
                      }
                    ]
                  },
                  "documentation": "@notice Set the RSK Oracle address.\n\t * @param _rskOracleAddress The RSK Oracle address.",
                  "id": 10487,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 10466,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 10465,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1943:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1943:9:47"
                    }
                  ],
                  "name": "setRSKOracleAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10463,
                        "name": "_rskOracleAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 10487,
                        "src": "1909:25:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10462,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1909:7:47",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1908:27:47"
                  },
                  "returnParameters": {
                    "id": 10467,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1953:0:47"
                  },
                  "scope": 10488,
                  "src": "1880:261:47",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 10489,
              "src": "360:1783:47"
            }
          ],
          "src": "0:2144:47"
        },
        "id": 47
      },
      "contracts/governance/ApprovalReceiver.sol": {
        "ast": {
          "absolutePath": "contracts/governance/ApprovalReceiver.sol",
          "exportedSymbols": {
            "ApprovalReceiver": [
              10703
            ]
          },
          "id": 10704,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10490,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:48"
            },
            {
              "absolutePath": "contracts/governance/ErrorDecoder.sol",
              "file": "./ErrorDecoder.sol",
              "id": 10491,
              "nodeType": "ImportDirective",
              "scope": 10704,
              "sourceUnit": 10803,
              "src": "26:28:48",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/IApproveAndCall.sol",
              "file": "../token/IApproveAndCall.sol",
              "id": 10492,
              "nodeType": "ImportDirective",
              "scope": 10704,
              "sourceUnit": 44824,
              "src": "55:38:48",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10493,
                    "name": "ErrorDecoder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10802,
                    "src": "195:12:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ErrorDecoder_$10802",
                      "typeString": "contract ErrorDecoder"
                    }
                  },
                  "id": 10494,
                  "nodeType": "InheritanceSpecifier",
                  "src": "195:12:48"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10495,
                    "name": "IApproveAndCall",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 44823,
                    "src": "209:15:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IApproveAndCall_$44823",
                      "typeString": "contract IApproveAndCall"
                    }
                  },
                  "id": 10496,
                  "nodeType": "InheritanceSpecifier",
                  "src": "209:15:48"
                }
              ],
              "contractDependencies": [
                10802,
                44823
              ],
              "contractKind": "contract",
              "documentation": "@title Base contract for receiving approval from SOV token.",
              "fullyImplemented": true,
              "id": 10703,
              "linearizedBaseContracts": [
                10703,
                44823,
                10802
              ],
              "name": "ApprovalReceiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 10509,
                    "nodeType": "Block",
                    "src": "256:120:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10499,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "323:3:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 10500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "323:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10502,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45152,
                                    "src": "345:4:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ApprovalReceiver_$10703",
                                      "typeString": "contract ApprovalReceiver"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ApprovalReceiver_$10703",
                                      "typeString": "contract ApprovalReceiver"
                                    }
                                  ],
                                  "id": 10501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "337:7:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 10503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "337:13:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "323:27:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 10505,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "352:14:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 10498,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "315:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "315:52:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10507,
                        "nodeType": "ExpressionStatement",
                        "src": "315:52:48"
                      },
                      {
                        "id": 10508,
                        "nodeType": "PlaceholderStatement",
                        "src": "371:1:48"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 10510,
                  "name": "onlyThisContract",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 10497,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "253:2:48"
                  },
                  "src": "228:148:48",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10628,
                    "nodeType": "Block",
                    "src": "611:732:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10522,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "663:3:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 10523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "663:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 10524,
                                  "name": "_getToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10639,
                                  "src": "677:9:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 10525,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "677:11:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "663:25:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 10527,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "690:14:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 10521,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "655:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "655:50:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10529,
                        "nodeType": "ExpressionStatement",
                        "src": "655:50:48"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10531,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "717:3:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 10532,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "717:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 10533,
                                "name": "_token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10516,
                                "src": "731:6:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "717:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 10535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "739:14:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 10530,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "709:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "709:45:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10537,
                        "nodeType": "ExpressionStatement",
                        "src": "709:45:48"
                      },
                      {
                        "assignments": [
                          10539
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10539,
                            "name": "isAllowed",
                            "nodeType": "VariableDeclaration",
                            "scope": 10628,
                            "src": "786:14:48",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 10538,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "786:4:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10541,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 10540,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "803:5:48",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "786:22:48"
                      },
                      {
                        "assignments": [
                          10545
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10545,
                            "name": "selectors",
                            "nodeType": "VariableDeclaration",
                            "scope": 10628,
                            "src": "812:25:48",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                              "typeString": "bytes4[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10543,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "812:6:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 10544,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "812:8:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10548,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 10546,
                            "name": "_getSelectors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10652,
                            "src": "840:13:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$",
                              "typeString": "function () view returns (bytes4[] memory)"
                            }
                          },
                          "id": 10547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "840:15:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "812:43:48"
                      },
                      {
                        "assignments": [
                          10550
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10550,
                            "name": "sig",
                            "nodeType": "VariableDeclaration",
                            "scope": 10628,
                            "src": "859:10:48",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 10549,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "859:6:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10554,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10552,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10518,
                              "src": "880:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 10551,
                            "name": "_getSig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10702,
                            "src": "872:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (bytes memory) pure returns (bytes4)"
                            }
                          },
                          "id": 10553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "872:14:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "859:27:48"
                      },
                      {
                        "body": {
                          "id": 10578,
                          "nodeType": "Block",
                          "src": "937:73:48",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 10570,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 10566,
                                  "name": "sig",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10550,
                                  "src": "946:3:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10567,
                                    "name": "selectors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10545,
                                    "src": "953:9:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                      "typeString": "bytes4[] memory"
                                    }
                                  },
                                  "id": 10569,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10568,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10556,
                                    "src": "963:1:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "953:12:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "946:19:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 10577,
                              "nodeType": "IfStatement",
                              "src": "942:64:48",
                              "trueBody": {
                                "id": 10576,
                                "nodeType": "Block",
                                "src": "967:39:48",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10573,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 10571,
                                        "name": "isAllowed",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10539,
                                        "src": "973:9:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "74727565",
                                        "id": 10572,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "985:4:48",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "true"
                                      },
                                      "src": "973:16:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 10574,
                                    "nodeType": "ExpressionStatement",
                                    "src": "973:16:48"
                                  },
                                  {
                                    "id": 10575,
                                    "nodeType": "Break",
                                    "src": "995:5:48"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10559,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10556,
                            "src": "910:1:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10560,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10545,
                              "src": "914:9:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 10561,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "914:16:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "910:20:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10579,
                        "initializationExpression": {
                          "assignments": [
                            10556
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 10556,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 10579,
                              "src": "895:9:48",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 10555,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "895:7:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 10558,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10557,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "907:1:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "895:13:48"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 10564,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "932:3:48",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 10563,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10556,
                              "src": "932:1:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10565,
                          "nodeType": "ExpressionStatement",
                          "src": "932:3:48"
                        },
                        "nodeType": "ForStatement",
                        "src": "890:120:48"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10581,
                              "name": "isAllowed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10539,
                              "src": "1021:9:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6d6574686f64206973206e6f7420616c6c6f776564",
                              "id": 10582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1032:23:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2fab0e64657e468fab48f7c435a71459209939c8a943b1c5f23d1ed901e3e27e",
                                "typeString": "literal_string \"method is not allowed\""
                              },
                              "value": "method is not allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2fab0e64657e468fab48f7c435a71459209939c8a943b1c5f23d1ed901e3e27e",
                                "typeString": "literal_string \"method is not allowed\""
                              }
                            ],
                            "id": 10580,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1013:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1013:43:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10584,
                        "nodeType": "ExpressionStatement",
                        "src": "1013:43:48"
                      },
                      {
                        "assignments": [
                          10586
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10586,
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 10628,
                            "src": "1091:14:48",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10585,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1091:7:48",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10587,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1091:14:48"
                      },
                      {
                        "assignments": [
                          10589
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10589,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 10628,
                            "src": "1109:14:48",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10588,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1109:7:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10590,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1109:14:48"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              null,
                              {
                                "argumentTypes": null,
                                "id": 10591,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10586,
                                "src": "1130:6:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 10592,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10589,
                                "src": "1138:6:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 10593,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "1127:18:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$_t_address_$_t_uint256_$",
                              "typeString": "tuple(,address,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 10599,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1184:1:48",
                                        "subdenomination": null,
                                        "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": 10598,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1176:7:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes28_$",
                                        "typeString": "type(bytes28)"
                                      },
                                      "typeName": "bytes28"
                                    },
                                    "id": 10600,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1176:10:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes28",
                                      "typeString": "bytes28"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10601,
                                    "name": "_data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10518,
                                    "src": "1188:5:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes28",
                                      "typeString": "bytes28"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 10596,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44981,
                                    "src": "1159:3:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 10597,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1159:16:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 10602,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1159:35:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10603,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1197:7:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": "bytes32"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10604,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1206:7:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10605,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1215:7:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": "uint256"
                                  }
                                ],
                                "id": 10606,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1196:27:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                  "typeString": "tuple(type(bytes32),type(address),type(uint256))"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                  "typeString": "tuple(type(bytes32),type(address),type(uint256))"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 10594,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44981,
                                "src": "1148:3:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 10595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1148:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 10607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1148:76:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bytes32_$_t_address_payable_$_t_uint256_$",
                              "typeString": "tuple(bytes32,address payable,uint256)"
                            }
                          },
                          "src": "1127:97:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10609,
                        "nodeType": "ExpressionStatement",
                        "src": "1127:97:48"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 10611,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10586,
                                "src": "1236:6:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 10612,
                                "name": "_sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10512,
                                "src": "1246:7:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1236:17:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "73656e646572206d69736d61746368",
                              "id": 10614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1255:17:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_76ec10cda3ed0448251fb76d48fe16588d83090ec2a7e812497abe453bd3a227",
                                "typeString": "literal_string \"sender mismatch\""
                              },
                              "value": "sender mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_76ec10cda3ed0448251fb76d48fe16588d83090ec2a7e812497abe453bd3a227",
                                "typeString": "literal_string \"sender mismatch\""
                              }
                            ],
                            "id": 10610,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1228:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1228:45:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10616,
                        "nodeType": "ExpressionStatement",
                        "src": "1228:45:48"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 10618,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10589,
                                "src": "1285:6:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 10619,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10514,
                                "src": "1295:7:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1285:17:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e74206d69736d61746368",
                              "id": 10621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1304:17:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e5d2758e02063725286e48c176e526ab06a63272a0004353ed5cb070a659975b",
                                "typeString": "literal_string \"amount mismatch\""
                              },
                              "value": "amount mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e5d2758e02063725286e48c176e526ab06a63272a0004353ed5cb070a659975b",
                                "typeString": "literal_string \"amount mismatch\""
                              }
                            ],
                            "id": 10617,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1277:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1277:45:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10623,
                        "nodeType": "ExpressionStatement",
                        "src": "1277:45:48"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10625,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10518,
                              "src": "1333:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 10624,
                            "name": "_call",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10693,
                            "src": "1327:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 10626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1327:12:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10627,
                        "nodeType": "ExpressionStatement",
                        "src": "1327:12:48"
                      }
                    ]
                  },
                  "documentation": "@notice Receives approval from SOV token.\n@param _data The data will be used for low level call.",
                  "id": 10629,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "receiveApproval",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10519,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10512,
                        "name": "_sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 10629,
                        "src": "522:15:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10511,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "522:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10514,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 10629,
                        "src": "541:15:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10513,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "541:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10516,
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 10629,
                        "src": "560:14:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10515,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "560:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10518,
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 10629,
                        "src": "578:20:48",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10517,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "578:5:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "518:83:48"
                  },
                  "returnParameters": {
                    "id": 10520,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "611:0:48"
                  },
                  "scope": 10703,
                  "src": "494:849:48",
                  "stateMutability": "nonpayable",
                  "superFunction": 44822,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10638,
                    "nodeType": "Block",
                    "src": "1660:25:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10635,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1679:1:48",
                              "subdenomination": null,
                              "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": 10634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1671:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 10636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1671:10:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 10633,
                        "id": 10637,
                        "nodeType": "Return",
                        "src": "1664:17:48"
                      }
                    ]
                  },
                  "documentation": "@notice Returns token address, only this address can be a sender for receiveApproval.\n@dev Should be overridden in child contracts, otherwise error will be thrown.\n@return By default, 0x. When overriden, the token address making the call.",
                  "id": 10639,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10630,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1625:2:48"
                  },
                  "returnParameters": {
                    "id": 10633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10632,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10639,
                        "src": "1651:7:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10631,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1651:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1650:9:48"
                  },
                  "scope": 10703,
                  "src": "1607:78:48",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10651,
                    "nodeType": "Block",
                    "src": "1987:30:48",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2011:1:48",
                              "subdenomination": null,
                              "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": 10647,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1998:12:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (bytes4[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10645,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "2002:6:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 10646,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2002:8:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            }
                          },
                          "id": 10649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1998:15:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "functionReturnParameters": 10644,
                        "id": 10650,
                        "nodeType": "Return",
                        "src": "1991:22:48"
                      }
                    ]
                  },
                  "documentation": "@notice Returns list of function selectors allowed to be invoked.\n@dev Should be overridden in child contracts, otherwise error will be thrown.\n@return By default, empty array. When overriden, allowed selectors.",
                  "id": 10652,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getSelectors",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10640,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1944:2:48"
                  },
                  "returnParameters": {
                    "id": 10644,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10643,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10652,
                        "src": "1970:15:48",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10641,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "1970:6:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 10642,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1970:8:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1969:17:48"
                  },
                  "scope": 10703,
                  "src": "1922:95:48",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10692,
                    "nodeType": "Block",
                    "src": "2177:300:48",
                    "statements": [
                      {
                        "assignments": [
                          10658,
                          10660
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10658,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 10692,
                            "src": "2182:12:48",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 10657,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2182:4:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10660,
                            "name": "returnData",
                            "nodeType": "VariableDeclaration",
                            "scope": 10692,
                            "src": "2196:23:48",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 10659,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2196:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10667,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10665,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10654,
                              "src": "2242:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10662,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45152,
                                  "src": "2231:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ApprovalReceiver_$10703",
                                    "typeString": "contract ApprovalReceiver"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ApprovalReceiver_$10703",
                                    "typeString": "contract ApprovalReceiver"
                                  }
                                ],
                                "id": 10661,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2223:7:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 10663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2223:13:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 10664,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2223:18:48",
                            "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": 10666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2223:25:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2181:67:48"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 10669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2256:8:48",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 10668,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10658,
                            "src": "2257:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10691,
                        "nodeType": "IfStatement",
                        "src": "2252:222:48",
                        "trueBody": {
                          "id": 10690,
                          "nodeType": "Block",
                          "src": "2266:208:48",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 10670,
                                    "name": "returnData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10660,
                                    "src": "2275:10:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 10671,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2275:17:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 10672,
                                  "name": "ERROR_MESSAGE_SHIFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10708,
                                  "src": "2296:19:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2275:40:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 10688,
                                "nodeType": "Block",
                                "src": "2393:77:48",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "72656365697665417070726f76616c3a20",
                                              "id": 10681,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "2423:19:48",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_c382c5f8bca1ddb92e78114d5fc3c719df7d2c71c9a35c453b1846fb0516eb32",
                                                "typeString": "literal_string \"receiveApproval: \""
                                              },
                                              "value": "receiveApproval: "
                                            },
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 10683,
                                                  "name": "returnData",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 10660,
                                                  "src": "2451:10:48",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                ],
                                                "id": 10682,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "2444:6:48",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                  "typeString": "type(string storage pointer)"
                                                },
                                                "typeName": "string"
                                              },
                                              "id": 10684,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "2444:18:48",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_c382c5f8bca1ddb92e78114d5fc3c719df7d2c71c9a35c453b1846fb0516eb32",
                                                "typeString": "literal_string \"receiveApproval: \""
                                              },
                                              {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            ],
                                            "id": 10680,
                                            "name": "_addErrorMessage",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10801,
                                            "src": "2406:16:48",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$",
                                              "typeString": "function (string memory,string memory) pure returns (string memory)"
                                            }
                                          },
                                          "id": 10685,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2406:57:48",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 10679,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44999,
                                          45000
                                        ],
                                        "referencedDeclaration": 45000,
                                        "src": "2399:6:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 10686,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2399:65:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 10687,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2399:65:48"
                                  }
                                ]
                              },
                              "id": 10689,
                              "nodeType": "IfStatement",
                              "src": "2271:199:48",
                              "trueBody": {
                                "id": 10678,
                                "nodeType": "Block",
                                "src": "2317:70:48",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "72656365697665417070726f76616c3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e",
                                          "id": 10675,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2330:50:48",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_1c4c3df7ec1002f34d0e385deb15b6f7bc61de923c62df6fda2a7dd316c56fe2",
                                            "typeString": "literal_string \"receiveApproval: Transaction execution reverted.\""
                                          },
                                          "value": "receiveApproval: Transaction execution reverted."
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_1c4c3df7ec1002f34d0e385deb15b6f7bc61de923c62df6fda2a7dd316c56fe2",
                                            "typeString": "literal_string \"receiveApproval: Transaction execution reverted.\""
                                          }
                                        ],
                                        "id": 10674,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44999,
                                          45000
                                        ],
                                        "referencedDeclaration": 45000,
                                        "src": "2323:6:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 10676,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2323:58:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 10677,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2323:58:48"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Makes call and reverts w/ enhanced error message.\n@param _data Error message as bytes.",
                  "id": 10693,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_call",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10655,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10654,
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 10693,
                        "src": "2148:18:48",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10653,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2148:5:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2147:20:48"
                  },
                  "returnParameters": {
                    "id": 10656,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2177:0:48"
                  },
                  "scope": 10703,
                  "src": "2133:344:48",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10701,
                    "nodeType": "Block",
                    "src": "3335:53:48",
                    "statements": [
                      {
                        "externalReferences": [
                          {
                            "sig": {
                              "declaration": 10698,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "3353:3:48",
                              "valueSize": 1
                            }
                          },
                          {
                            "_data": {
                              "declaration": 10695,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "3370:5:48",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 10700,
                        "nodeType": "InlineAssembly",
                        "operations": "{ sig := mload(add(_data, 32)) }",
                        "src": "3339:46:48"
                      }
                    ]
                  },
                  "documentation": "@notice Extracts the called function selector, a hash of the signature.\n@dev The first four bytes of the call data for a function call specifies\nthe function to be called. It is the first (left, high-order in big-endian)\nfour bytes of the Keccak-256 (SHA-3) hash of the signature of the function.\nSolidity doesn't yet support a casting of byte[4] to bytes4.\nExample:\n msg.data:\n   0xcdcd77c000000000000000000000000000000000000000000000000000000000000\n   000450000000000000000000000000000000000000000000000000000000000000001\n selector (or method ID): 0xcdcd77c0\n signature: baz(uint32,bool)\n@param _data The msg.data from the low level call.\n@return sig First 4 bytes of msg.data i.e. the selector, hash of the signature.",
                  "id": 10702,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getSig",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10696,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10695,
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 10702,
                        "src": "3280:18:48",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10694,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3280:5:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3279:20:48"
                  },
                  "returnParameters": {
                    "id": 10699,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10698,
                        "name": "sig",
                        "nodeType": "VariableDeclaration",
                        "scope": 10702,
                        "src": "3323:10:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 10697,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "3323:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3322:12:48"
                  },
                  "scope": 10703,
                  "src": "3263:125:48",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 10704,
              "src": "166:3224:48"
            }
          ],
          "src": "0:3391:48"
        },
        "id": 48
      },
      "contracts/governance/ErrorDecoder.sol": {
        "ast": {
          "absolutePath": "contracts/governance/ErrorDecoder.sol",
          "exportedSymbols": {
            "ErrorDecoder": [
              10802
            ]
          },
          "id": 10803,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10705,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:49"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title Base contract to properly handle returned data on failed calls\n@dev On EVM if the return data length of a call is less than 68,\nthen the transaction fails silently without a revert message!\n * As described in the Solidity documentation\nhttps://solidity.readthedocs.io/en/v0.5.17/control-structures.html#revert\nthe revert reason is an ABI-encoded string consisting of:\n0x08c379a0 // Function selector (method id) for \"Error(string)\" signature\n0x0000000000000000000000000000000000000000000000000000000000000020 // Data offset\n0x000000000000000000000000000000000000000000000000000000000000001a // String length\n0x4e6f7420656e6f7567682045746865722070726f76696465642e000000000000 // String data\n * Another example, debug data from test:\n  0x08c379a0\n  0000000000000000000000000000000000000000000000000000000000000020\n  0000000000000000000000000000000000000000000000000000000000000034\n  54696d656c6f636b3a3a73657444656c61793a2044656c6179206d7573742065\n  7863656564206d696e696d756d2064656c61792e000000000000000000000000\n * Parsed into:\n  Data offset: 20\n  Length: 34\n  Error message:\n    54696d656c6f636b3a3a73657444656c61793a2044656c6179206d7573742065\n    7863656564206d696e696d756d2064656c61792e000000000000000000000000",
              "fullyImplemented": true,
              "id": 10802,
              "linearizedBaseContracts": [
                10802
              ],
              "name": "ErrorDecoder",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 10708,
                  "name": "ERROR_MESSAGE_SHIFT",
                  "nodeType": "VariableDeclaration",
                  "scope": 10802,
                  "src": "1347:41:49",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10706,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1347:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3638",
                    "id": 10707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1386:2:49",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_68_by_1",
                      "typeString": "int_const 68"
                    },
                    "value": "68"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10800,
                    "nodeType": "Block",
                    "src": "1823:465:49",
                    "statements": [
                      {
                        "assignments": [
                          10718
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10718,
                            "name": "bytesStr1",
                            "nodeType": "VariableDeclaration",
                            "scope": 10800,
                            "src": "1827:22:49",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 10717,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1827:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10722,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10720,
                              "name": "str1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10710,
                              "src": "1858:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 10719,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1852:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": "bytes"
                          },
                          "id": 10721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1852:11:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1827:36:49"
                      },
                      {
                        "assignments": [
                          10724
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10724,
                            "name": "bytesStr2",
                            "nodeType": "VariableDeclaration",
                            "scope": 10800,
                            "src": "1867:22:49",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 10723,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1867:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10728,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10726,
                              "name": "str2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10712,
                              "src": "1898:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 10725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1892:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": "bytes"
                          },
                          "id": 10727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1892:11:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1867:36:49"
                      },
                      {
                        "assignments": [
                          10730
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10730,
                            "name": "str12",
                            "nodeType": "VariableDeclaration",
                            "scope": 10800,
                            "src": "1907:19:49",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 10729,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "1907:6:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10741,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10737,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 10733,
                                    "name": "bytesStr1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10718,
                                    "src": "1940:9:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 10734,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1940:16:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 10735,
                                    "name": "bytesStr2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10724,
                                    "src": "1959:9:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 10736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1959:16:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1940:35:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 10738,
                                "name": "ERROR_MESSAGE_SHIFT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10708,
                                "src": "1978:19:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1940:57:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10732,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1929:10:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_$",
                              "typeString": "function (uint256) pure returns (string memory)"
                            },
                            "typeName": {
                              "id": 10731,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "1933:6:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            }
                          },
                          "id": 10740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1929:69:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1907:91:49"
                      },
                      {
                        "assignments": [
                          10743
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10743,
                            "name": "bytesStr12",
                            "nodeType": "VariableDeclaration",
                            "scope": 10800,
                            "src": "2002:23:49",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 10742,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2002:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10747,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10745,
                              "name": "str12",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10730,
                              "src": "2034:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 10744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2028:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": "bytes"
                          },
                          "id": 10746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2028:12:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2002:38:49"
                      },
                      {
                        "assignments": [
                          10749
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10749,
                            "name": "j",
                            "nodeType": "VariableDeclaration",
                            "scope": 10800,
                            "src": "2044:9:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10748,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2044:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10751,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2056:1:49",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2044:13:49"
                      },
                      {
                        "body": {
                          "id": 10772,
                          "nodeType": "Block",
                          "src": "2108:40:49",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10763,
                                    "name": "bytesStr12",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10743,
                                    "src": "2113:10:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 10766,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10765,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "2124:3:49",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "id": 10764,
                                      "name": "j",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10749,
                                      "src": "2124:1:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2113:15:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10767,
                                    "name": "bytesStr1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10718,
                                    "src": "2131:9:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 10769,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10768,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10753,
                                    "src": "2141:1:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2131:12:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "2113:30:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 10771,
                              "nodeType": "ExpressionStatement",
                              "src": "2113:30:49"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10759,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10756,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10753,
                            "src": "2081:1:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10757,
                              "name": "bytesStr1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10718,
                              "src": "2085:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 10758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2085:16:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2081:20:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10773,
                        "initializationExpression": {
                          "assignments": [
                            10753
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 10753,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 10773,
                              "src": "2066:9:49",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 10752,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2066:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 10755,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2078:1:49",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2066:13:49"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 10761,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2103:3:49",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 10760,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10753,
                              "src": "2103:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10762,
                          "nodeType": "ExpressionStatement",
                          "src": "2103:3:49"
                        },
                        "nodeType": "ForStatement",
                        "src": "2061:87:49"
                      },
                      {
                        "body": {
                          "id": 10794,
                          "nodeType": "Block",
                          "src": "2216:40:49",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10785,
                                    "name": "bytesStr12",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10743,
                                    "src": "2221:10:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 10788,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10787,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "2232:3:49",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "id": 10786,
                                      "name": "j",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10749,
                                      "src": "2232:1:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2221:15:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10789,
                                    "name": "bytesStr2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10724,
                                    "src": "2239:9:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 10791,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10790,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10775,
                                    "src": "2249:1:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2239:12:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "2221:30:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 10793,
                              "nodeType": "ExpressionStatement",
                              "src": "2221:30:49"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10778,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10775,
                            "src": "2189:1:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10779,
                              "name": "bytesStr2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10724,
                              "src": "2193:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 10780,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2193:16:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2189:20:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10795,
                        "initializationExpression": {
                          "assignments": [
                            10775
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 10775,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 10795,
                              "src": "2156:9:49",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 10774,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2156:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 10777,
                          "initialValue": {
                            "argumentTypes": null,
                            "id": 10776,
                            "name": "ERROR_MESSAGE_SHIFT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10708,
                            "src": "2168:19:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2156:31:49"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 10783,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2211:3:49",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 10782,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10775,
                              "src": "2211:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10784,
                          "nodeType": "ExpressionStatement",
                          "src": "2211:3:49"
                        },
                        "nodeType": "ForStatement",
                        "src": "2151:105:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10797,
                              "name": "bytesStr12",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10743,
                              "src": "2273:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 10796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2266:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": "string"
                          },
                          "id": 10798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2266:18:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 10716,
                        "id": 10799,
                        "nodeType": "Return",
                        "src": "2259:25:49"
                      }
                    ]
                  },
                  "documentation": "@notice Concats two error strings taking into account ERROR_MESSAGE_SHIFT.\n@param str1 First string, usually a hardcoded context written by dev.\n@param str2 Second string, usually the error message from the reverted call.\n@return The concatenated error string",
                  "id": 10801,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_addErrorMessage",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10713,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10710,
                        "name": "str1",
                        "nodeType": "VariableDeclaration",
                        "scope": 10801,
                        "src": "1745:18:49",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10709,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1745:6:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10712,
                        "name": "str2",
                        "nodeType": "VariableDeclaration",
                        "scope": 10801,
                        "src": "1765:18:49",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10711,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1765:6:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1744:40:49"
                  },
                  "returnParameters": {
                    "id": 10716,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10715,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 10801,
                        "src": "1808:13:49",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10714,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1808:6:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1807:15:49"
                  },
                  "scope": 10802,
                  "src": "1719:569:49",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 10803,
              "src": "1322:968:49"
            }
          ],
          "src": "0:2291:49"
        },
        "id": 49
      },
      "contracts/governance/FeeSharingProxy.sol": {
        "ast": {
          "absolutePath": "contracts/governance/FeeSharingProxy.sol",
          "exportedSymbols": {
            "FeeSharingProxy": [
              11576
            ],
            "ILoanToken": [
              11603
            ],
            "IProtocol": [
              11593
            ]
          },
          "id": 11604,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10804,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:50"
            },
            {
              "absolutePath": "contracts/governance/Staking/SafeMath96.sol",
              "file": "./Staking/SafeMath96.sol",
              "id": 10805,
              "nodeType": "ImportDirective",
              "scope": 11604,
              "sourceUnit": 13960,
              "src": "26:34:50",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../openzeppelin/SafeMath.sol",
              "id": 10806,
              "nodeType": "ImportDirective",
              "scope": 11604,
              "sourceUnit": 42310,
              "src": "61:38:50",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeERC20.sol",
              "file": "../openzeppelin/SafeERC20.sol",
              "id": 10807,
              "nodeType": "ImportDirective",
              "scope": 11604,
              "sourceUnit": 42050,
              "src": "100:39:50",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/IFeeSharingProxy.sol",
              "file": "./IFeeSharingProxy.sol",
              "id": 10808,
              "nodeType": "ImportDirective",
              "scope": 11604,
              "sourceUnit": 13113,
              "src": "140:32:50",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/IStaking.sol",
              "file": "./Staking/IStaking.sol",
              "id": 10809,
              "nodeType": "ImportDirective",
              "scope": 11604,
              "sourceUnit": 13774,
              "src": "173:32:50",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10810,
                    "name": "SafeMath96",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13959,
                    "src": "2132:10:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath96_$13959",
                      "typeString": "contract SafeMath96"
                    }
                  },
                  "id": 10811,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2132:10:50"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10812,
                    "name": "IFeeSharingProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13112,
                    "src": "2144:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                      "typeString": "contract IFeeSharingProxy"
                    }
                  },
                  "id": 10813,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2144:16:50"
                }
              ],
              "contractDependencies": [
                13112,
                13959
              ],
              "contractKind": "contract",
              "documentation": "@title The FeeSharingProxy contract.\n@notice Staking is not only granting voting rights, but also access to fee\nsharing according to the own voting power in relation to the total. Whenever\nsomebody decides to collect the fees from the protocol, they get transferred\nto a proxy contract which invests the funds in the lending pool and keeps\nthe pool tokens.\n * The fee sharing proxy will be set as feesController of the protocol contract.\nThis allows the fee sharing proxy to withdraw the fees. The fee sharing\nproxy holds the pool tokens and keeps track of which user owns how many\ntokens. In order to know how many tokens a user owns, the fee sharing proxy\nneeds to know the user’s weighted stake in relation to the total weighted\nstake (aka total voting power).\n * Because both values are subject to change, they may be different on each fee\nwithdrawal. To be able to calculate a user’s share of tokens when he wants\nto withdraw, we need checkpoints.\n * This contract is intended to be set as the protocol fee collector.\nAnybody can invoke the withdrawFees function which uses\nprotocol.withdrawFees to obtain available fees from operations on a\ncertain token. These fees are deposited in the corresponding loanPool.\nAlso, the staking contract sends slashed tokens to this contract. When a\nuser calls the withdraw function, the contract transfers the fee sharing\nrewards in proportion to the user’s weighted stake since the last withdrawal.\n * The protocol is collecting fees in all sorts of currencies and then automatically\nsupplies them to the respective lending pools. Therefore, all fees are\ngenerating interest for the SOV holders. If one of them withdraws fees, it will\nget pool tokens. It is planned to add the option to convert anything to rBTC\nbefore withdrawing, but not yet implemented.\n",
              "fullyImplemented": true,
              "id": 11576,
              "linearizedBaseContracts": [
                11576,
                13112,
                13959
              ],
              "name": "FeeSharingProxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 10816,
                  "libraryName": {
                    "contractScope": null,
                    "id": 10814,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "2170:8:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2164:27:50",
                  "typeName": {
                    "id": 10815,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2183:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 10819,
                  "libraryName": {
                    "contractScope": null,
                    "id": 10817,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42049,
                    "src": "2199:9:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$42049",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2193:27:50",
                  "typeName": {
                    "contractScope": null,
                    "id": 10818,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "2213:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 10822,
                  "name": "FEE_WITHDRAWAL_INTERVAL",
                  "nodeType": "VariableDeclaration",
                  "scope": 11576,
                  "src": "2295:48:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10820,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2295:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3836343030",
                    "id": 10821,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2338:5:50",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_86400_by_1",
                      "typeString": "int_const 86400"
                    },
                    "value": "86400"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10825,
                  "name": "MAX_CHECKPOINTS",
                  "nodeType": "VariableDeclaration",
                  "scope": 11576,
                  "src": "2347:37:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 10823,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2347:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "313030",
                    "id": 10824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2381:3:50",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100_by_1",
                      "typeString": "int_const 100"
                    },
                    "value": "100"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10827,
                  "name": "protocol",
                  "nodeType": "VariableDeclaration",
                  "scope": 11576,
                  "src": "2388:25:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IProtocol_$11593",
                    "typeString": "contract IProtocol"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10826,
                    "name": "IProtocol",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11593,
                    "src": "2388:9:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IProtocol_$11593",
                      "typeString": "contract IProtocol"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 10829,
                  "name": "staking",
                  "nodeType": "VariableDeclaration",
                  "scope": 11576,
                  "src": "2416:23:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IStaking_$13773",
                    "typeString": "contract IStaking"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10828,
                    "name": "IStaking",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13773,
                    "src": "2416:8:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IStaking_$13773",
                      "typeString": "contract IStaking"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 10835,
                  "name": "tokenCheckpoints",
                  "nodeType": "VariableDeclaration",
                  "scope": 11576,
                  "src": "2500:74:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$_$",
                    "typeString": "mapping(address => mapping(uint256 => struct FeeSharingProxy.Checkpoint))"
                  },
                  "typeName": {
                    "id": 10834,
                    "keyType": {
                      "id": 10830,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2508:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2500:50:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$_$",
                      "typeString": "mapping(address => mapping(uint256 => struct FeeSharingProxy.Checkpoint))"
                    },
                    "valueType": {
                      "id": 10833,
                      "keyType": {
                        "id": 10831,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2527:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2519:30:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$",
                        "typeString": "mapping(uint256 => struct FeeSharingProxy.Checkpoint)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 10832,
                        "name": "Checkpoint",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 10862,
                        "src": "2538:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Checkpoint_$10862_storage_ptr",
                          "typeString": "struct FeeSharingProxy.Checkpoint"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 10839,
                  "name": "numTokenCheckpoints",
                  "nodeType": "VariableDeclaration",
                  "scope": 11576,
                  "src": "2646:53:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                    "typeString": "mapping(address => uint32)"
                  },
                  "typeName": {
                    "id": 10838,
                    "keyType": {
                      "id": 10836,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2654:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2646:26:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                      "typeString": "mapping(address => uint32)"
                    },
                    "valueType": {
                      "id": 10837,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "2665:6:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 10845,
                  "name": "processedCheckpoints",
                  "nodeType": "VariableDeclaration",
                  "scope": 11576,
                  "src": "2759:74:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint32_$_$",
                    "typeString": "mapping(address => mapping(address => uint32))"
                  },
                  "typeName": {
                    "id": 10844,
                    "keyType": {
                      "id": 10840,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2767:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2759:46:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint32_$_$",
                      "typeString": "mapping(address => mapping(address => uint32))"
                    },
                    "valueType": {
                      "id": 10843,
                      "keyType": {
                        "id": 10841,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2786:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2778:26:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                        "typeString": "mapping(address => uint32)"
                      },
                      "valueType": {
                        "id": 10842,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2797:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 10849,
                  "name": "lastFeeWithdrawalTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 11576,
                  "src": "2923:56:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 10848,
                    "keyType": {
                      "id": 10846,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2931:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2923:27:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 10847,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2942:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 10853,
                  "name": "unprocessedAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 11576,
                  "src": "3087:51:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                    "typeString": "mapping(address => uint96)"
                  },
                  "typeName": {
                    "id": 10852,
                    "keyType": {
                      "id": 10850,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3095:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3087:26:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                      "typeString": "mapping(address => uint96)"
                    },
                    "valueType": {
                      "id": 10851,
                      "name": "uint96",
                      "nodeType": "ElementaryTypeName",
                      "src": "3106:6:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "canonicalName": "FeeSharingProxy.Checkpoint",
                  "id": 10862,
                  "members": [
                    {
                      "constant": false,
                      "id": 10855,
                      "name": "blockNumber",
                      "nodeType": "VariableDeclaration",
                      "scope": 10862,
                      "src": "3164:18:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 10854,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3164:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10857,
                      "name": "timestamp",
                      "nodeType": "VariableDeclaration",
                      "scope": 10862,
                      "src": "3186:16:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 10856,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3186:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10859,
                      "name": "totalWeightedStake",
                      "nodeType": "VariableDeclaration",
                      "scope": 10862,
                      "src": "3206:25:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 10858,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "3206:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10861,
                      "name": "numTokens",
                      "nodeType": "VariableDeclaration",
                      "scope": 10862,
                      "src": "3235:16:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 10860,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "3235:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "Checkpoint",
                  "nodeType": "StructDefinition",
                  "scope": 11576,
                  "src": "3142:113:50",
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when fee get withdrawn.",
                  "id": 10870,
                  "name": "FeeWithdrawn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10869,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10864,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 10870,
                        "src": "3346:22:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10863,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3346:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10866,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 10870,
                        "src": "3370:21:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10865,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3370:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10868,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 10870,
                        "src": "3393:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10867,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3393:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3345:63:50"
                  },
                  "src": "3327:82:50"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when tokens transferred.",
                  "id": 10878,
                  "name": "TokensTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10877,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10872,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 10878,
                        "src": "3491:22:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10871,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3491:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10874,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 10878,
                        "src": "3515:21:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10873,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3515:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10876,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 10878,
                        "src": "3538:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10875,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3538:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3490:63:50"
                  },
                  "src": "3467:87:50"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when checkpoint added.",
                  "id": 10886,
                  "name": "CheckpointAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10885,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10880,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 10886,
                        "src": "3632:22:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10879,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3632:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10882,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 10886,
                        "src": "3656:21:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10881,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3656:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10884,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 10886,
                        "src": "3679:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10883,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3679:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3631:63:50"
                  },
                  "src": "3610:85:50"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when user fee get withdrawn.",
                  "id": 10896,
                  "name": "UserFeeWithdrawn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10895,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10888,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 10896,
                        "src": "3780:22:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10887,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3780:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10890,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 10896,
                        "src": "3804:24:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10889,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3804:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10892,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 10896,
                        "src": "3830:21:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10891,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3830:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10894,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 10896,
                        "src": "3853:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10893,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3853:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3779:89:50"
                  },
                  "src": "3757:112:50"
                },
                {
                  "body": {
                    "id": 10911,
                    "nodeType": "Block",
                    "src": "3949:50:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10903,
                            "name": "protocol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10827,
                            "src": "3953:8:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IProtocol_$11593",
                              "typeString": "contract IProtocol"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10904,
                            "name": "_protocol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10898,
                            "src": "3964:9:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IProtocol_$11593",
                              "typeString": "contract IProtocol"
                            }
                          },
                          "src": "3953:20:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IProtocol_$11593",
                            "typeString": "contract IProtocol"
                          }
                        },
                        "id": 10906,
                        "nodeType": "ExpressionStatement",
                        "src": "3953:20:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10907,
                            "name": "staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10829,
                            "src": "3977:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IStaking_$13773",
                              "typeString": "contract IStaking"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10908,
                            "name": "_staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10900,
                            "src": "3987:8:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IStaking_$13773",
                              "typeString": "contract IStaking"
                            }
                          },
                          "src": "3977:18:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IStaking_$13773",
                            "typeString": "contract IStaking"
                          }
                        },
                        "id": 10910,
                        "nodeType": "ExpressionStatement",
                        "src": "3977:18:50"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 10912,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10901,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10898,
                        "name": "_protocol",
                        "nodeType": "VariableDeclaration",
                        "scope": 10912,
                        "src": "3902:19:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IProtocol_$11593",
                          "typeString": "contract IProtocol"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 10897,
                          "name": "IProtocol",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 11593,
                          "src": "3902:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IProtocol_$11593",
                            "typeString": "contract IProtocol"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10900,
                        "name": "_staking",
                        "nodeType": "VariableDeclaration",
                        "scope": 10912,
                        "src": "3923:17:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IStaking_$13773",
                          "typeString": "contract IStaking"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 10899,
                          "name": "IStaking",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 13773,
                          "src": "3923:8:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IStaking_$13773",
                            "typeString": "contract IStaking"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3901:40:50"
                  },
                  "returnParameters": {
                    "id": 10902,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3949:0:50"
                  },
                  "scope": 11576,
                  "src": "3890:109:50",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11009,
                    "nodeType": "Block",
                    "src": "4188:1080:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 10918,
                                "name": "_token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10914,
                                "src": "4200:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 10920,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4218:1:50",
                                    "subdenomination": null,
                                    "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": 10919,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4210:7:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 10921,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4210:10:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4200:20:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "46656553686172696e6750726f78793a3a7769746864726177466565733a20696e76616c69642061646472657373",
                              "id": 10923,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4222:48:50",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_db37da1940bdbc279a3908b36cbced26983647fcb578705969e05cb4e2b13b4a",
                                "typeString": "literal_string \"FeeSharingProxy::withdrawFees: invalid address\""
                              },
                              "value": "FeeSharingProxy::withdrawFees: invalid address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_db37da1940bdbc279a3908b36cbced26983647fcb578705969e05cb4e2b13b4a",
                                "typeString": "literal_string \"FeeSharingProxy::withdrawFees: invalid address\""
                              }
                            ],
                            "id": 10917,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4192:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4192:79:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10925,
                        "nodeType": "ExpressionStatement",
                        "src": "4192:79:50"
                      },
                      {
                        "assignments": [
                          10927
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10927,
                            "name": "loanPoolToken",
                            "nodeType": "VariableDeclaration",
                            "scope": 11009,
                            "src": "4276:21:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10926,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4276:7:50",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10932,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10930,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10914,
                              "src": "4330:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10928,
                              "name": "protocol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10827,
                              "src": "4300:8:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IProtocol_$11593",
                                "typeString": "contract IProtocol"
                              }
                            },
                            "id": 10929,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "underlyingToLoanPool",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11592,
                            "src": "4300:29:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_address_$",
                              "typeString": "function (address) external returns (address)"
                            }
                          },
                          "id": 10931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4300:37:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4276:61:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 10938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 10934,
                                "name": "loanPoolToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10927,
                                "src": "4349:13:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 10936,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4374:1:50",
                                    "subdenomination": null,
                                    "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": 10935,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4366:7:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 10937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4366:10:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4349:27:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "46656553686172696e6750726f78793a3a7769746864726177466565733a206c6f616e20746f6b656e206e6f7420666f756e64",
                              "id": 10939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4378:53:50",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d33a825fb64452e5952e45cc23b2c51ef283286b1a647e497489392573ffe9f8",
                                "typeString": "literal_string \"FeeSharingProxy::withdrawFees: loan token not found\""
                              },
                              "value": "FeeSharingProxy::withdrawFees: loan token not found"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d33a825fb64452e5952e45cc23b2c51ef283286b1a647e497489392573ffe9f8",
                                "typeString": "literal_string \"FeeSharingProxy::withdrawFees: loan token not found\""
                              }
                            ],
                            "id": 10933,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4341:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4341:91:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10941,
                        "nodeType": "ExpressionStatement",
                        "src": "4341:91:50"
                      },
                      {
                        "assignments": [
                          10943
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10943,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 11009,
                            "src": "4437:14:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10942,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4437:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10951,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10946,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10914,
                              "src": "4476:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10948,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45160,
                                  "src": "4492:4:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FeeSharingProxy_$11576",
                                    "typeString": "contract FeeSharingProxy"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FeeSharingProxy_$11576",
                                    "typeString": "contract FeeSharingProxy"
                                  }
                                ],
                                "id": 10947,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4484:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 10949,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4484:13:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10944,
                              "name": "protocol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10827,
                              "src": "4454:8:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IProtocol_$11593",
                                "typeString": "contract IProtocol"
                              }
                            },
                            "id": 10945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdrawFees",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11585,
                            "src": "4454:21:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) external returns (uint256)"
                            }
                          },
                          "id": 10950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4454:44:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4437:61:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10955,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 10953,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10943,
                                "src": "4510:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 10954,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4519:1:50",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4510:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "46656553686172696e6750726f78793a3a7769746864726177466565733a206e6f20746f6b656e7320746f207769746864726177",
                              "id": 10956,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4522:54:50",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e4cf58ffcf6bbc9ea14320610d9d4dfee0b0f2e79f1502a77b7f66ce01ec1b5b",
                                "typeString": "literal_string \"FeeSharingProxy::withdrawFees: no tokens to withdraw\""
                              },
                              "value": "FeeSharingProxy::withdrawFees: no tokens to withdraw"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e4cf58ffcf6bbc9ea14320610d9d4dfee0b0f2e79f1502a77b7f66ce01ec1b5b",
                                "typeString": "literal_string \"FeeSharingProxy::withdrawFees: no tokens to withdraw\""
                              }
                            ],
                            "id": 10952,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4502:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4502:75:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10958,
                        "nodeType": "ExpressionStatement",
                        "src": "4502:75:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10963,
                              "name": "loanPoolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10927,
                              "src": "4726:13:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10964,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10943,
                              "src": "4741:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10960,
                                  "name": "_token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10914,
                                  "src": "4710:6:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 10959,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "4703:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 10961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4703:14:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 10962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24662,
                            "src": "4703:22:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 10965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4703:45:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10966,
                        "nodeType": "ExpressionStatement",
                        "src": "4703:45:50"
                      },
                      {
                        "assignments": [
                          10968
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10968,
                            "name": "poolTokenAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 11009,
                            "src": "4752:23:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10967,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4752:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10978,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10974,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45160,
                                  "src": "4817:4:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FeeSharingProxy_$11576",
                                    "typeString": "contract FeeSharingProxy"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FeeSharingProxy_$11576",
                                    "typeString": "contract FeeSharingProxy"
                                  }
                                ],
                                "id": 10973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4809:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 10975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4809:13:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10976,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10943,
                              "src": "4824:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10970,
                                  "name": "loanPoolToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10927,
                                  "src": "4789:13:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 10969,
                                "name": "ILoanToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11603,
                                "src": "4778:10:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ILoanToken_$11603_$",
                                  "typeString": "type(contract ILoanToken)"
                                }
                              },
                              "id": 10971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4778:25:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILoanToken_$11603",
                                "typeString": "contract ILoanToken"
                              }
                            },
                            "id": 10972,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11602,
                            "src": "4778:30:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256) external returns (uint256)"
                            }
                          },
                          "id": 10977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4778:53:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4752:79:50"
                      },
                      {
                        "assignments": [
                          10980
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10980,
                            "name": "amount96",
                            "nodeType": "VariableDeclaration",
                            "scope": 11009,
                            "src": "4886:15:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 10979,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "4886:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10985,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10982,
                              "name": "poolTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10968,
                              "src": "4911:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "46656553686172696e6750726f78793a3a7769746864726177466565733a20706f6f6c20746f6b656e20616d6f756e7420657863656564732039362062697473",
                              "id": 10983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4928:66:50",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d6e1892d086409a259078634047cf8ba94453ca4d1cb8195cc0898ac8a029848",
                                "typeString": "literal_string \"FeeSharingProxy::withdrawFees: pool token amount exceeds 96 bits\""
                              },
                              "value": "FeeSharingProxy::withdrawFees: pool token amount exceeds 96 bits"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d6e1892d086409a259078634047cf8ba94453ca4d1cb8195cc0898ac8a029848",
                                "typeString": "literal_string \"FeeSharingProxy::withdrawFees: pool token amount exceeds 96 bits\""
                              }
                            ],
                            "id": 10981,
                            "name": "safe96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13845,
                            "src": "4904:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint96_$",
                              "typeString": "function (uint256,string memory) pure returns (uint96)"
                            }
                          },
                          "id": 10984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4904:91:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4886:109:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10986,
                              "name": "unprocessedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10853,
                              "src": "4999:17:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                                "typeString": "mapping(address => uint96)"
                              }
                            },
                            "id": 10988,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10987,
                              "name": "loanPoolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10927,
                              "src": "5017:13:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4999:32:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 10990,
                                  "name": "unprocessedAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10853,
                                  "src": "5044:17:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                                    "typeString": "mapping(address => uint96)"
                                  }
                                },
                                "id": 10992,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10991,
                                  "name": "loanPoolToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10927,
                                  "src": "5062:13:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5044:32:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 10993,
                                "name": "amount96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10980,
                                "src": "5081:8:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "46656553686172696e6750726f78793a3a7769746864726177466565733a20756e70726f636573736564416d6f756e7420657863656564732039362062697473",
                                "id": 10994,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5094:66:50",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_d5695981ea7ef78a2411d708a8faa78420edefe0c25440f3c7daea5d1de42412",
                                  "typeString": "literal_string \"FeeSharingProxy::withdrawFees: unprocessedAmount exceeds 96 bits\""
                                },
                                "value": "FeeSharingProxy::withdrawFees: unprocessedAmount exceeds 96 bits"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_d5695981ea7ef78a2411d708a8faa78420edefe0c25440f3c7daea5d1de42412",
                                  "typeString": "literal_string \"FeeSharingProxy::withdrawFees: unprocessedAmount exceeds 96 bits\""
                                }
                              ],
                              "id": 10989,
                              "name": "add96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13872,
                              "src": "5034:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                              }
                            },
                            "id": 10995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5034:130:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "4999:165:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 10997,
                        "nodeType": "ExpressionStatement",
                        "src": "4999:165:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10999,
                              "name": "loanPoolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10927,
                              "src": "5184:13:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10998,
                            "name": "_addCheckpoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11118,
                            "src": "5169:14:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5169:29:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11001,
                        "nodeType": "ExpressionStatement",
                        "src": "5169:29:50"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11003,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "5221:3:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 11004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5221:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11005,
                              "name": "loanPoolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10927,
                              "src": "5233:13:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11006,
                              "name": "poolTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10968,
                              "src": "5248:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11002,
                            "name": "FeeWithdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10870,
                            "src": "5208:12:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 11007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5208:56:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11008,
                        "nodeType": "EmitStatement",
                        "src": "5203:61:50"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraw fees for the given token:\nlendingFee + tradingFee + borrowingFee\n@param _token Address of the token\n",
                  "id": 11010,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10915,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10914,
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 11010,
                        "src": "4165:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10913,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4165:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4164:16:50"
                  },
                  "returnParameters": {
                    "id": 10916,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4188:0:50"
                  },
                  "scope": 11576,
                  "src": "4143:1125:50",
                  "stateMutability": "nonpayable",
                  "superFunction": 13095,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11077,
                    "nodeType": "Block",
                    "src": "5620:639:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 11022,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11018,
                                "name": "_token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11012,
                                "src": "5632:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 11020,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5650:1:50",
                                    "subdenomination": null,
                                    "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": 11019,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5642:7:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 11021,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5642:10:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5632:20:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "46656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20696e76616c69642061646472657373",
                              "id": 11023,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5654:50:50",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_95abed0d118aa48fabb38f0a815b45239c48dcebacc2485374f7030537f40eda",
                                "typeString": "literal_string \"FeeSharingProxy::transferTokens: invalid address\""
                              },
                              "value": "FeeSharingProxy::transferTokens: invalid address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_95abed0d118aa48fabb38f0a815b45239c48dcebacc2485374f7030537f40eda",
                                "typeString": "literal_string \"FeeSharingProxy::transferTokens: invalid address\""
                              }
                            ],
                            "id": 11017,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5624:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5624:81:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11025,
                        "nodeType": "ExpressionStatement",
                        "src": "5624:81:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 11029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11027,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11014,
                                "src": "5717:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5727:1:50",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5717:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "46656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20696e76616c696420616d6f756e74",
                              "id": 11030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5730:49:50",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9734eeb522a17ae5f3508ba820a7a47d063faa9ceb1377a4b69da973089edc34",
                                "typeString": "literal_string \"FeeSharingProxy::transferTokens: invalid amount\""
                              },
                              "value": "FeeSharingProxy::transferTokens: invalid amount"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9734eeb522a17ae5f3508ba820a7a47d063faa9ceb1377a4b69da973089edc34",
                                "typeString": "literal_string \"FeeSharingProxy::transferTokens: invalid amount\""
                              }
                            ],
                            "id": 11026,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5709:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5709:71:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11032,
                        "nodeType": "ExpressionStatement",
                        "src": "5709:71:50"
                      },
                      {
                        "assignments": [
                          11034
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11034,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 11077,
                            "src": "5831:12:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 11033,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5831:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11048,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11040,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "5882:3:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 11041,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5882:10:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 11039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5874:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 11042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5874:19:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11044,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45160,
                                  "src": "5903:4:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FeeSharingProxy_$11576",
                                    "typeString": "contract FeeSharingProxy"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FeeSharingProxy_$11576",
                                    "typeString": "contract FeeSharingProxy"
                                  }
                                ],
                                "id": 11043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5895:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 11045,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5895:13:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11046,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11014,
                              "src": "5910:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11036,
                                  "name": "_token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11012,
                                  "src": "5853:6:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 11035,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "5846:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 11037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5846:14:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 11038,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24682,
                            "src": "5846:27: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": 11047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5846:72:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5831:87:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11050,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11034,
                              "src": "5930:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a7472616e73666572546f6b656e733a20746f6b656e207472616e73666572206661696c6564",
                              "id": 11051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5939:48:50",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a4c488a8ef63de78e74a459ff7e2f509cd38140d5dac5e44fbe0bba70199c4a6",
                                "typeString": "literal_string \"Staking::transferTokens: token transfer failed\""
                              },
                              "value": "Staking::transferTokens: token transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a4c488a8ef63de78e74a459ff7e2f509cd38140d5dac5e44fbe0bba70199c4a6",
                                "typeString": "literal_string \"Staking::transferTokens: token transfer failed\""
                              }
                            ],
                            "id": 11049,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5922:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5922:66:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11053,
                        "nodeType": "ExpressionStatement",
                        "src": "5922:66:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11054,
                              "name": "unprocessedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10853,
                              "src": "6044:17:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                                "typeString": "mapping(address => uint96)"
                              }
                            },
                            "id": 11056,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11055,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11012,
                              "src": "6062:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6044:25:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 11058,
                                  "name": "unprocessedAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10853,
                                  "src": "6078:17:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                                    "typeString": "mapping(address => uint96)"
                                  }
                                },
                                "id": 11060,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 11059,
                                  "name": "_token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11012,
                                  "src": "6096:6:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6078:25:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 11061,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11014,
                                "src": "6105:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "46656553686172696e6750726f78793a3a7472616e73666572546f6b656e733a20616d6f756e7420657863656564732039362062697473",
                                "id": 11062,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6114:57:50",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_462dd5e32d9839564786d1d4ae37d2c34815c3568f030a8b9991419717a5ee56",
                                  "typeString": "literal_string \"FeeSharingProxy::transferTokens: amount exceeds 96 bits\""
                                },
                                "value": "FeeSharingProxy::transferTokens: amount exceeds 96 bits"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_462dd5e32d9839564786d1d4ae37d2c34815c3568f030a8b9991419717a5ee56",
                                  "typeString": "literal_string \"FeeSharingProxy::transferTokens: amount exceeds 96 bits\""
                                }
                              ],
                              "id": 11057,
                              "name": "add96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13872,
                              "src": "6072:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                              }
                            },
                            "id": 11063,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6072:100:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "6044:128:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 11065,
                        "nodeType": "ExpressionStatement",
                        "src": "6044:128:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11067,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11012,
                              "src": "6192:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11066,
                            "name": "_addCheckpoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11118,
                            "src": "6177:14:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6177:22:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11069,
                        "nodeType": "ExpressionStatement",
                        "src": "6177:22:50"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11071,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6227:3:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 11072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6227:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11073,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11012,
                              "src": "6239:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11074,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11014,
                              "src": "6247:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 11070,
                            "name": "TokensTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10878,
                            "src": "6209:17:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 11075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6209:46:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11076,
                        "nodeType": "EmitStatement",
                        "src": "6204:51:50"
                      }
                    ]
                  },
                  "documentation": "@notice Transfer tokens to this contract.\n@dev We just update amount of tokens here and write checkpoint in a separate methods\nin order to prevent adding checkpoints too often.\n@param _token Address of the token.\n@param _amount Amount to be transferred.\n",
                  "id": 11078,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11015,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11012,
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 11078,
                        "src": "5581:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11011,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5581:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11014,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 11078,
                        "src": "5597:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 11013,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "5597:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5580:32:50"
                  },
                  "returnParameters": {
                    "id": 11016,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5620:0:50"
                  },
                  "scope": 11576,
                  "src": "5557:702:50",
                  "stateMutability": "nonpayable",
                  "superFunction": 13102,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11117,
                    "nodeType": "Block",
                    "src": "6438:370:50",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11088,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11083,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "6446:5:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 11084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6446:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 11085,
                                "name": "lastFeeWithdrawalTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10849,
                                "src": "6464:21:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 11087,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 11086,
                                "name": "_token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11080,
                                "src": "6486:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6464:29:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6446:47:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11089,
                            "name": "FEE_WITHDRAWAL_INTERVAL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10822,
                            "src": "6497:23:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6446:74:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 11116,
                        "nodeType": "IfStatement",
                        "src": "6442:363:50",
                        "trueBody": {
                          "id": 11115,
                          "nodeType": "Block",
                          "src": "6522:283:50",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11096,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11091,
                                    "name": "lastFeeWithdrawalTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10849,
                                    "src": "6527:21:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 11093,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 11092,
                                    "name": "_token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11080,
                                    "src": "6549:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6527:29:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11094,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44984,
                                    "src": "6559:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 11095,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6559:15:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6527:47:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11097,
                              "nodeType": "ExpressionStatement",
                              "src": "6527:47:50"
                            },
                            {
                              "assignments": [
                                11099
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11099,
                                  "name": "amount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11115,
                                  "src": "6579:13:50",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  "typeName": {
                                    "id": 11098,
                                    "name": "uint96",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6579:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11103,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 11100,
                                  "name": "unprocessedAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10853,
                                  "src": "6595:17:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                                    "typeString": "mapping(address => uint96)"
                                  }
                                },
                                "id": 11102,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 11101,
                                  "name": "_token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11080,
                                  "src": "6613:6:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6595:25:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6579:41:50"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11108,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11104,
                                    "name": "unprocessedAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10853,
                                    "src": "6685:17:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint96_$",
                                      "typeString": "mapping(address => uint96)"
                                    }
                                  },
                                  "id": 11106,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 11105,
                                    "name": "_token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11080,
                                    "src": "6703:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6685:25:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 11107,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6713:1:50",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6685:29:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 11109,
                              "nodeType": "ExpressionStatement",
                              "src": "6685:29:50"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11111,
                                    "name": "_token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11080,
                                    "src": "6785:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 11112,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11099,
                                    "src": "6793:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  ],
                                  "id": 11110,
                                  "name": "_writeTokenCheckpoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11575,
                                  "src": "6763:21:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint96_$returns$__$",
                                    "typeString": "function (address,uint96)"
                                  }
                                },
                                "id": 11113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6763:37:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11114,
                              "nodeType": "ExpressionStatement",
                              "src": "6763:37:50"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Add checkpoint with accumulated amount by function invocation.\n@param _token Address of the token.\n",
                  "id": 11118,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_addCheckpoint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11081,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11080,
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 11118,
                        "src": "6413:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11079,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6413:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6412:16:50"
                  },
                  "returnParameters": {
                    "id": 11082,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6438:0:50"
                  },
                  "scope": 11576,
                  "src": "6389:419:50",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11194,
                    "nodeType": "Block",
                    "src": "7517:614:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 11130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11128,
                                "name": "_maxCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11122,
                                "src": "7604:15:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11129,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7622:1:50",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7604:19:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "46656553686172696e6750726f78793a3a77697468647261773a205f6d6178436865636b706f696e74732073686f756c6420626520706f736974697665",
                              "id": 11131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7625:63:50",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8b2f8c6f70f29aefe7d949a465f1afcbd21e38c44be72e9691a8b963bc4c9b33",
                                "typeString": "literal_string \"FeeSharingProxy::withdraw: _maxCheckpoints should be positive\""
                              },
                              "value": "FeeSharingProxy::withdraw: _maxCheckpoints should be positive"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8b2f8c6f70f29aefe7d949a465f1afcbd21e38c44be72e9691a8b963bc4c9b33",
                                "typeString": "literal_string \"FeeSharingProxy::withdraw: _maxCheckpoints should be positive\""
                              }
                            ],
                            "id": 11127,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7596:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7596:93:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11133,
                        "nodeType": "ExpressionStatement",
                        "src": "7596:93:50"
                      },
                      {
                        "assignments": [
                          11135
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11135,
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "scope": 11194,
                            "src": "7694:12:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 11134,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7694:7:50",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11138,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11136,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44994,
                            "src": "7709:3:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 11137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7709:10:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7694:25:50"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 11143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11139,
                            "name": "_receiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11124,
                            "src": "7727:9:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7748:1:50",
                                "subdenomination": null,
                                "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": 11140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7740:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 11142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7740:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "7727:23:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 11150,
                        "nodeType": "IfStatement",
                        "src": "7723:61:50",
                        "trueBody": {
                          "id": 11149,
                          "nodeType": "Block",
                          "src": "7752:32:50",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 11144,
                                  "name": "_receiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11124,
                                  "src": "7757:9:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11145,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "7769:3:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 11146,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7769:10:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "7757:22:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11148,
                              "nodeType": "ExpressionStatement",
                              "src": "7757:22:50"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          11152
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11152,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 11194,
                            "src": "7788:14:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11151,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7788:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11153,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7788:14:50"
                      },
                      {
                        "assignments": [
                          11155
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11155,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 11194,
                            "src": "7806:10:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 11154,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7806:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11156,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7806:10:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 11157,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11152,
                                "src": "7821:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 11158,
                                "name": "end",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11155,
                                "src": "7829:3:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              }
                            ],
                            "id": 11159,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "7820:13:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint32_$",
                              "typeString": "tuple(uint256,uint32)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11161,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11135,
                                "src": "7856:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 11162,
                                "name": "_loanPoolToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11120,
                                "src": "7862:14:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 11163,
                                "name": "_maxCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11122,
                                "src": "7878:15:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              ],
                              "id": 11160,
                              "name": "_getAccumulatedFees",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11387,
                              "src": "7836:19:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint32_$returns$_t_uint256_$_t_uint32_$",
                                "typeString": "function (address,address,uint32) view returns (uint256,uint32)"
                              }
                            },
                            "id": 11164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7836:58:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint32_$",
                              "typeString": "tuple(uint256,uint32)"
                            }
                          },
                          "src": "7820:74:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11166,
                        "nodeType": "ExpressionStatement",
                        "src": "7820:74:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 11167,
                                "name": "processedCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10845,
                                "src": "7899:20:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint32_$_$",
                                  "typeString": "mapping(address => mapping(address => uint32))"
                                }
                              },
                              "id": 11170,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 11168,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11135,
                                "src": "7920:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7899:26:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                                "typeString": "mapping(address => uint32)"
                              }
                            },
                            "id": 11171,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11169,
                              "name": "_loanPoolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11120,
                              "src": "7926:14:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7899:42:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11172,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11155,
                            "src": "7944:3:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "7899:48:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 11174,
                        "nodeType": "ExpressionStatement",
                        "src": "7899:48:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11180,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11135,
                                  "src": "7992:4:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 11181,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11152,
                                  "src": "7998:6:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11177,
                                      "name": "_loanPoolToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11120,
                                      "src": "7967:14:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 11176,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24699,
                                    "src": "7960:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 11178,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7960:22:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 11179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24671,
                                "src": "7960:31:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 11182,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7960:45:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "46656553686172696e6750726f78793a3a77697468647261773a207769746864726177616c206661696c6564",
                              "id": 11183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8007:46:50",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_991a0ccf26fd6537133b2885c1622095d6c4aba443d039e88d40e35170651c90",
                                "typeString": "literal_string \"FeeSharingProxy::withdraw: withdrawal failed\""
                              },
                              "value": "FeeSharingProxy::withdraw: withdrawal failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_991a0ccf26fd6537133b2885c1622095d6c4aba443d039e88d40e35170651c90",
                                "typeString": "literal_string \"FeeSharingProxy::withdraw: withdrawal failed\""
                              }
                            ],
                            "id": 11175,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7952:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7952:102:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11185,
                        "nodeType": "ExpressionStatement",
                        "src": "7952:102:50"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11187,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "8081:3:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 11188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8081:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11189,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11124,
                              "src": "8093:9:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11190,
                              "name": "_loanPoolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11120,
                              "src": "8104:14:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11191,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11152,
                              "src": "8120:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11186,
                            "name": "UserFeeWithdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10896,
                            "src": "8064:16:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 11192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8064:63:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11193,
                        "nodeType": "EmitStatement",
                        "src": "8059:68:50"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraw accumulated fee to the message sender.\n\t * The Sovryn protocol collects fees on every trade/swap and loan.\nThese fees will be distributed to SOV stakers based on their voting\npower as a percentage of total voting power. Therefore, staking more\nSOV and/or staking for longer will increase your share of the fees\ngenerated, meaning you will earn more from staking.\n\t * @param _loanPoolToken Address of the pool token.\n@param _maxCheckpoints Maximum number of checkpoints to be processed.\n@param _receiver The receiver of tokens or msg.sender\n",
                  "id": 11195,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11120,
                        "name": "_loanPoolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 11195,
                        "src": "7437:22:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11119,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7437:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11122,
                        "name": "_maxCheckpoints",
                        "nodeType": "VariableDeclaration",
                        "scope": 11195,
                        "src": "7463:22:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 11121,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7463:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11124,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 11195,
                        "src": "7489:17:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11123,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7489:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7433:76:50"
                  },
                  "returnParameters": {
                    "id": 11126,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7517:0:50"
                  },
                  "scope": 11576,
                  "src": "7416:715:50",
                  "stateMutability": "nonpayable",
                  "superFunction": 13111,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11218,
                    "nodeType": "Block",
                    "src": "8475:101:50",
                    "statements": [
                      {
                        "assignments": [
                          11205
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11205,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 11218,
                            "src": "8479:14:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11204,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8479:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11206,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8479:14:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 11207,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11205,
                                "src": "8498:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              null
                            ],
                            "id": 11208,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "8497:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$__$",
                              "typeString": "tuple(uint256,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11210,
                                "name": "_user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11197,
                                "src": "8530:5:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 11211,
                                "name": "_loanPoolToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11199,
                                "src": "8537:14:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8553:1:50",
                                "subdenomination": null,
                                "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_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 11209,
                              "name": "_getAccumulatedFees",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11387,
                              "src": "8510:19:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint32_$returns$_t_uint256_$_t_uint32_$",
                                "typeString": "function (address,address,uint32) view returns (uint256,uint32)"
                              }
                            },
                            "id": 11213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8510:45:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint32_$",
                              "typeString": "tuple(uint256,uint32)"
                            }
                          },
                          "src": "8497:58:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11215,
                        "nodeType": "ExpressionStatement",
                        "src": "8497:58:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11216,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11205,
                          "src": "8566:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11203,
                        "id": 11217,
                        "nodeType": "Return",
                        "src": "8559:13:50"
                      }
                    ]
                  },
                  "documentation": "@notice Get the accumulated loan pool fee of the message sender.\n@param _user The address of the user or contract.\n@param _loanPoolToken Address of the pool token.\n@return The accumulated fee for the message sender.\n",
                  "id": 11219,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAccumulatedFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11200,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11197,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 11219,
                        "src": "8406:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11196,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8406:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11199,
                        "name": "_loanPoolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 11219,
                        "src": "8421:22:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11198,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8421:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8405:39:50"
                  },
                  "returnParameters": {
                    "id": 11203,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11202,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11219,
                        "src": "8466:7:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11201,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8466:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8465:9:50"
                  },
                  "scope": 11576,
                  "src": "8378:198:50",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11386,
                    "nodeType": "Block",
                    "src": "9644:1637:50",
                    "statements": [
                      {
                        "assignments": [
                          11233
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11233,
                            "name": "start",
                            "nodeType": "VariableDeclaration",
                            "scope": 11386,
                            "src": "9648:12:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 11232,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9648:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11239,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11234,
                              "name": "processedCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10845,
                              "src": "9663:20:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint32_$_$",
                                "typeString": "mapping(address => mapping(address => uint32))"
                              }
                            },
                            "id": 11236,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11235,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11221,
                              "src": "9684:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9663:27:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                              "typeString": "mapping(address => uint32)"
                            }
                          },
                          "id": 11238,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 11237,
                            "name": "_loanPoolToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11223,
                            "src": "9691:14:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9663:43:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9648:58:50"
                      },
                      {
                        "assignments": [
                          11241
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11241,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 11386,
                            "src": "9710:10:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 11240,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9710:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11242,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9710:10:50"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 11245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11243,
                            "name": "_maxCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11225,
                            "src": "9808:15:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9826:1:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9808:19:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 11283,
                          "nodeType": "Block",
                          "src": "10067:289:50",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 11268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 11264,
                                  "name": "start",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11233,
                                  "src": "10201:5:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11265,
                                    "name": "numTokenCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10839,
                                    "src": "10210:19:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                                      "typeString": "mapping(address => uint32)"
                                    }
                                  },
                                  "id": 11267,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 11266,
                                    "name": "_loanPoolToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11223,
                                    "src": "10230:14:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10210:35:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "10201:44:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 11276,
                              "nodeType": "IfStatement",
                              "src": "10197:109:50",
                              "trueBody": {
                                "id": 11275,
                                "nodeType": "Block",
                                "src": "10247:59:50",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 11269,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10261:1:50",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 11270,
                                            "name": "numTokenCheckpoints",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10839,
                                            "src": "10264:19:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                                              "typeString": "mapping(address => uint32)"
                                            }
                                          },
                                          "id": 11272,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 11271,
                                            "name": "_loanPoolToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11223,
                                            "src": "10284:14:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "10264:35:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        }
                                      ],
                                      "id": 11273,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "10260:40:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_uint32_$",
                                        "typeString": "tuple(int_const 0,uint32)"
                                      }
                                    },
                                    "functionReturnParameters": 11231,
                                    "id": 11274,
                                    "nodeType": "Return",
                                    "src": "10253:47:50"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 11277,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11241,
                                  "src": "10310:3:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11278,
                                    "name": "numTokenCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10839,
                                    "src": "10316:19:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                                      "typeString": "mapping(address => uint32)"
                                    }
                                  },
                                  "id": 11280,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 11279,
                                    "name": "_loanPoolToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11223,
                                    "src": "10336:14:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10316:35:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "10310:41:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 11282,
                              "nodeType": "ExpressionStatement",
                              "src": "10310:41:50"
                            }
                          ]
                        },
                        "id": 11284,
                        "nodeType": "IfStatement",
                        "src": "9804:552:50",
                        "trueBody": {
                          "id": 11263,
                          "nodeType": "Block",
                          "src": "9829:232:50",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 11251,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 11247,
                                      "name": "start",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11233,
                                      "src": "9886:5:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 11248,
                                        "name": "numTokenCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10839,
                                        "src": "9894:19:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                                          "typeString": "mapping(address => uint32)"
                                        }
                                      },
                                      "id": 11250,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 11249,
                                        "name": "_loanPoolToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11223,
                                        "src": "9914:14:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "9894:35:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "9886:43:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "46656553686172696e6750726f78793a3a7769746864726177466565733a206e6f20746f6b656e7320666f722061207769746864726177616c",
                                    "id": 11252,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9931:59:50",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_34ad9f1c058663c2649e7d4969ea71f5e327802478ce13557e895a43efe8ecf3",
                                      "typeString": "literal_string \"FeeSharingProxy::withdrawFees: no tokens for a withdrawal\""
                                    },
                                    "value": "FeeSharingProxy::withdrawFees: no tokens for a withdrawal"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_34ad9f1c058663c2649e7d4969ea71f5e327802478ce13557e895a43efe8ecf3",
                                      "typeString": "literal_string \"FeeSharingProxy::withdrawFees: no tokens for a withdrawal\""
                                    }
                                  ],
                                  "id": 11246,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "9878:7:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 11253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9878:113:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11254,
                              "nodeType": "ExpressionStatement",
                              "src": "9878:113:50"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 11255,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11241,
                                  "src": "9996:3:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11257,
                                      "name": "start",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11233,
                                      "src": "10017:5:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 11258,
                                      "name": "_loanPoolToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11223,
                                      "src": "10024:14:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 11259,
                                      "name": "_maxCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11225,
                                      "src": "10040:15:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    ],
                                    "id": 11256,
                                    "name": "_getEndOfRange",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11467,
                                    "src": "10002:14:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_address_$_t_uint32_$returns$_t_uint32_$",
                                      "typeString": "function (uint32,address,uint32) view returns (uint32)"
                                    }
                                  },
                                  "id": 11260,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10002:54:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "9996:60:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 11262,
                              "nodeType": "ExpressionStatement",
                              "src": "9996:60:50"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          11286
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11286,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 11386,
                            "src": "10360:14:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11285,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10360:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11288,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10377:1:50",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10360:18:50"
                      },
                      {
                        "assignments": [
                          11290
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11290,
                            "name": "cachedLockDate",
                            "nodeType": "VariableDeclaration",
                            "scope": 11386,
                            "src": "10382:22:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11289,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10382:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11292,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10407:1:50",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10382:26:50"
                      },
                      {
                        "assignments": [
                          11294
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11294,
                            "name": "cachedWeightedStake",
                            "nodeType": "VariableDeclaration",
                            "scope": 11386,
                            "src": "10412:26:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 11293,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "10412:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11296,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10441:1:50",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10412:30:50"
                      },
                      {
                        "body": {
                          "id": 11380,
                          "nodeType": "Block",
                          "src": "10483:771:50",
                          "statements": [
                            {
                              "assignments": [
                                11308
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11308,
                                  "name": "checkpoint",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11380,
                                  "src": "10488:29:50",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$10862_storage_ptr",
                                    "typeString": "struct FeeSharingProxy.Checkpoint"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 11307,
                                    "name": "Checkpoint",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 10862,
                                    "src": "10488:10:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$10862_storage_ptr",
                                      "typeString": "struct FeeSharingProxy.Checkpoint"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11314,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11309,
                                    "name": "tokenCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10835,
                                    "src": "10520:16:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => struct FeeSharingProxy.Checkpoint storage ref))"
                                    }
                                  },
                                  "id": 11311,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 11310,
                                    "name": "_loanPoolToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11223,
                                    "src": "10537:14:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10520:32:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$",
                                    "typeString": "mapping(uint256 => struct FeeSharingProxy.Checkpoint storage ref)"
                                  }
                                },
                                "id": 11313,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 11312,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11298,
                                  "src": "10553:1:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10520:35:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$10862_storage",
                                  "typeString": "struct FeeSharingProxy.Checkpoint storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10488:67:50"
                            },
                            {
                              "assignments": [
                                11316
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11316,
                                  "name": "lockDate",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11380,
                                  "src": "10560:16:50",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 11315,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10560:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11322,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11319,
                                      "name": "checkpoint",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11308,
                                      "src": "10607:10:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Checkpoint_$10862_storage_ptr",
                                        "typeString": "struct FeeSharingProxy.Checkpoint storage pointer"
                                      }
                                    },
                                    "id": 11320,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 10857,
                                    "src": "10607:20:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11317,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10829,
                                    "src": "10579:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IStaking_$13773",
                                      "typeString": "contract IStaking"
                                    }
                                  },
                                  "id": 11318,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestampToLockDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13772,
                                  "src": "10579:27:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) view external returns (uint256)"
                                  }
                                },
                                "id": 11321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10579:49:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10560:68:50"
                            },
                            {
                              "assignments": [
                                11324
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11324,
                                  "name": "weightedStake",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11380,
                                  "src": "10633:20:50",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  "typeName": {
                                    "id": 11323,
                                    "name": "uint96",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10633:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11325,
                              "initialValue": null,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10633:20:50"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11328,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 11326,
                                  "name": "lockDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11316,
                                  "src": "10662:8:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 11327,
                                  "name": "cachedLockDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11290,
                                  "src": "10674:14:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10662:26:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 11355,
                                "nodeType": "Block",
                                "src": "10743:363:50",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11345,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 11334,
                                        "name": "weightedStake",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11324,
                                        "src": "10926:13:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 11337,
                                            "name": "_user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11221,
                                            "src": "10972:5:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            },
                                            "id": 11341,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 11338,
                                                "name": "checkpoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 11308,
                                                "src": "10979:10:50",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Checkpoint_$10862_storage_ptr",
                                                  "typeString": "struct FeeSharingProxy.Checkpoint storage pointer"
                                                }
                                              },
                                              "id": 11339,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "blockNumber",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 10855,
                                              "src": "10979:22:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "31",
                                              "id": 11340,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "11004:1:50",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "10979:26:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 11342,
                                              "name": "checkpoint",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 11308,
                                              "src": "11007:10:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Checkpoint_$10862_storage_ptr",
                                                "typeString": "struct FeeSharingProxy.Checkpoint storage pointer"
                                              }
                                            },
                                            "id": 11343,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "timestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 10857,
                                            "src": "11007:20:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            },
                                            {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 11335,
                                            "name": "staking",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10829,
                                            "src": "10942:7:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IStaking_$13773",
                                              "typeString": "contract IStaking"
                                            }
                                          },
                                          "id": 11336,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getPriorWeightedStake",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 13765,
                                          "src": "10942:29:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                                            "typeString": "function (address,uint256,uint256) view external returns (uint96)"
                                          }
                                        },
                                        "id": 11344,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10942:86:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "src": "10926:102:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "id": 11346,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10926:102:50"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11349,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 11347,
                                        "name": "cachedWeightedStake",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11294,
                                        "src": "11034:19:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 11348,
                                        "name": "weightedStake",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11324,
                                        "src": "11056:13:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "src": "11034:35:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "id": 11350,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11034:35:50"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11353,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 11351,
                                        "name": "cachedLockDate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11290,
                                        "src": "11075:14:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 11352,
                                        "name": "lockDate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11316,
                                        "src": "11092:8:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11075:25:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11354,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11075:25:50"
                                  }
                                ]
                              },
                              "id": 11356,
                              "nodeType": "IfStatement",
                              "src": "10658:448:50",
                              "trueBody": {
                                "id": 11333,
                                "nodeType": "Block",
                                "src": "10690:47:50",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11331,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 11329,
                                        "name": "weightedStake",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11324,
                                        "src": "10696:13:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 11330,
                                        "name": "cachedWeightedStake",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11294,
                                        "src": "10712:19:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "src": "10696:35:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "id": 11332,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10696:35:50"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                11358
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11358,
                                  "name": "share",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11380,
                                  "src": "11110:13:50",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 11357,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11110:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11372,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 11368,
                                          "name": "checkpoint",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11308,
                                          "src": "11187:10:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Checkpoint_$10862_storage_ptr",
                                            "typeString": "struct FeeSharingProxy.Checkpoint storage pointer"
                                          }
                                        },
                                        "id": 11369,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "totalWeightedStake",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 10859,
                                        "src": "11187:29:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      ],
                                      "id": 11367,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11179:7:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint256"
                                    },
                                    "id": 11370,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11179:38:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 11364,
                                        "name": "weightedStake",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11324,
                                        "src": "11160:13:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 11360,
                                              "name": "checkpoint",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 11308,
                                              "src": "11134:10:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Checkpoint_$10862_storage_ptr",
                                                "typeString": "struct FeeSharingProxy.Checkpoint storage pointer"
                                              }
                                            },
                                            "id": 11361,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "numTokens",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 10861,
                                            "src": "11134:20:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            }
                                          ],
                                          "id": 11359,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "11126:7:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": "uint256"
                                        },
                                        "id": 11362,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11126:29:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 11363,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42153,
                                      "src": "11126:33:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 11365,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11126:48:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 11366,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42169,
                                  "src": "11126:52:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 11371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11126:92:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11110:108:50"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 11373,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11286,
                                  "src": "11223:6:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11376,
                                      "name": "share",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11358,
                                      "src": "11243:5:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11374,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11286,
                                      "src": "11232:6:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11375,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "11232:10:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 11377,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11232:17:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11223:26:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11379,
                              "nodeType": "ExpressionStatement",
                              "src": "11223:26:50"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 11303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11301,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11298,
                            "src": "10469:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11302,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11241,
                            "src": "10473:3:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "10469:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11381,
                        "initializationExpression": {
                          "assignments": [
                            11298
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11298,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 11381,
                              "src": "10451:8:50",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "typeName": {
                                "id": 11297,
                                "name": "uint32",
                                "nodeType": "ElementaryTypeName",
                                "src": "10451:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 11300,
                          "initialValue": {
                            "argumentTypes": null,
                            "id": 11299,
                            "name": "start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11233,
                            "src": "10462:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "10451:16:50"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 11305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "10478:3:50",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 11304,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11298,
                              "src": "10478:1:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "id": 11306,
                          "nodeType": "ExpressionStatement",
                          "src": "10478:3:50"
                        },
                        "nodeType": "ForStatement",
                        "src": "10446:808:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 11382,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11286,
                              "src": "11265:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11383,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11241,
                              "src": "11273:3:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "id": 11384,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "11264:13:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint32_$",
                            "typeString": "tuple(uint256,uint32)"
                          }
                        },
                        "functionReturnParameters": 11231,
                        "id": 11385,
                        "nodeType": "Return",
                        "src": "11257:20:50"
                      }
                    ]
                  },
                  "documentation": "@notice Whenever fees are withdrawn, the staking contract needs to\ncheckpoint the block number, the number of pool tokens and the\ntotal voting power at that time (read from the staking contract).\nWhile the total voting power would not necessarily need to be\ncheckpointed, it makes sense to save gas cost on withdrawal.\n\t * When the user wants to withdraw its share of tokens, we need\nto iterate over all of the checkpoints since the users last\nwithdrawal (note: remember last withdrawal block), query the\nuser’s balance at the checkpoint blocks from the staking contract,\ncompute his share of the checkpointed tokens and add them up.\nThe maximum number of checkpoints to process at once should be limited.\n\t * @param _user Address of the user's account.\n@param _loanPoolToken Loan pool token address.\n@param _maxCheckpoints Checkpoint index incremental.\n",
                  "id": 11387,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAccumulatedFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11221,
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "scope": 11387,
                        "src": "9535:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11220,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9535:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11223,
                        "name": "_loanPoolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 11387,
                        "src": "9552:22:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11222,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9552:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11225,
                        "name": "_maxCheckpoints",
                        "nodeType": "VariableDeclaration",
                        "scope": 11387,
                        "src": "9578:22:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 11224,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9578:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9531:72:50"
                  },
                  "returnParameters": {
                    "id": 11231,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11228,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11387,
                        "src": "9627:7:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11227,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9627:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11230,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11387,
                        "src": "9636:6:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 11229,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9636:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9626:17:50"
                  },
                  "scope": 11576,
                  "src": "9503:1778:50",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11466,
                    "nodeType": "Block",
                    "src": "11807:723:50",
                    "statements": [
                      {
                        "assignments": [
                          11399
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11399,
                            "name": "nCheckpoints",
                            "nodeType": "VariableDeclaration",
                            "scope": 11466,
                            "src": "11811:19:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 11398,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "11811:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11403,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 11400,
                            "name": "numTokenCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10839,
                            "src": "11833:19:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                              "typeString": "mapping(address => uint32)"
                            }
                          },
                          "id": 11402,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 11401,
                            "name": "_loanPoolToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11391,
                            "src": "11853:14:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11833:35:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11811:57:50"
                      },
                      {
                        "assignments": [
                          11405
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11405,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 11466,
                            "src": "11872:10:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 11404,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "11872:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11406,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11872:10:50"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 11409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11407,
                            "name": "_maxCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11393,
                            "src": "11890:15:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11909:1:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11890:20:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 11442,
                          "nodeType": "Block",
                          "src": "12036:256:50",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 11417,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 11415,
                                  "name": "_maxCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11393,
                                  "src": "12045:15:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 11416,
                                  "name": "MAX_CHECKPOINTS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10825,
                                  "src": "12063:15:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "12045:33:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 11423,
                              "nodeType": "IfStatement",
                              "src": "12041:84:50",
                              "trueBody": {
                                "id": 11422,
                                "nodeType": "Block",
                                "src": "12080:45:50",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11420,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 11418,
                                        "name": "_maxCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11393,
                                        "src": "12086:15:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 11419,
                                        "name": "MAX_CHECKPOINTS",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10825,
                                        "src": "12104:15:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "12086:33:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "id": 11421,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12086:33:50"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 11424,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11405,
                                  "src": "12129:3:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 11428,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 11426,
                                        "name": "start",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11389,
                                        "src": "12142:5:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 11427,
                                        "name": "_maxCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11393,
                                        "src": "12150:15:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "12142:23:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "46656553686172696e6750726f78793a3a77697468647261773a20636865636b706f696e7420696e64657820657863656564732033322062697473",
                                      "id": 11429,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12167:61:50",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_9050e198340ffc339b43a85c6c5995098a39cd9489e2c3eb5a507fd370a43800",
                                        "typeString": "literal_string \"FeeSharingProxy::withdraw: checkpoint index exceeds 32 bits\""
                                      },
                                      "value": "FeeSharingProxy::withdraw: checkpoint index exceeds 32 bits"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_9050e198340ffc339b43a85c6c5995098a39cd9489e2c3eb5a507fd370a43800",
                                        "typeString": "literal_string \"FeeSharingProxy::withdraw: checkpoint index exceeds 32 bits\""
                                      }
                                    ],
                                    "id": 11425,
                                    "name": "safe32",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13799,
                                    "src": "12135:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$",
                                      "typeString": "function (uint256,string memory) pure returns (uint32)"
                                    }
                                  },
                                  "id": 11430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12135:94:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "12129:100:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 11432,
                              "nodeType": "ExpressionStatement",
                              "src": "12129:100:50"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 11435,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 11433,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11405,
                                  "src": "12238:3:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 11434,
                                  "name": "nCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11399,
                                  "src": "12244:12:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "12238:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 11441,
                              "nodeType": "IfStatement",
                              "src": "12234:54:50",
                              "trueBody": {
                                "id": 11440,
                                "nodeType": "Block",
                                "src": "12258:30:50",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11438,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 11436,
                                        "name": "end",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11405,
                                        "src": "12264:3:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 11437,
                                        "name": "nCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11399,
                                        "src": "12270:12:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "12264:18:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "id": 11439,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12264:18:50"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 11443,
                        "nodeType": "IfStatement",
                        "src": "11886:406:50",
                        "trueBody": {
                          "id": 11414,
                          "nodeType": "Block",
                          "src": "11912:118:50",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 11410,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11405,
                                  "src": "12007:3:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 11411,
                                  "name": "nCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11399,
                                  "src": "12013:12:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "12007:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 11413,
                              "nodeType": "ExpressionStatement",
                              "src": "12007:18:50"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          11445
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11445,
                            "name": "lastBlockNumber",
                            "nodeType": "VariableDeclaration",
                            "scope": 11466,
                            "src": "12379:22:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 11444,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "12379:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11454,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 11446,
                                "name": "tokenCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10835,
                                "src": "12404:16:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => struct FeeSharingProxy.Checkpoint storage ref))"
                                }
                              },
                              "id": 11448,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 11447,
                                "name": "_loanPoolToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11391,
                                "src": "12421:14:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12404:32:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$",
                                "typeString": "mapping(uint256 => struct FeeSharingProxy.Checkpoint storage ref)"
                              }
                            },
                            "id": 11452,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 11451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11449,
                                "name": "end",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11405,
                                "src": "12437:3:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 11450,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12443:1:50",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "12437:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12404:41:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$10862_storage",
                              "typeString": "struct FeeSharingProxy.Checkpoint storage ref"
                            }
                          },
                          "id": 11453,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "blockNumber",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 10855,
                          "src": "12404:53:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12379:78:50"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11455,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44984,
                              "src": "12465:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 11456,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12465:12:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11457,
                            "name": "lastBlockNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11445,
                            "src": "12481:15:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "12465:31:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 11463,
                        "nodeType": "IfStatement",
                        "src": "12461:52:50",
                        "trueBody": {
                          "id": 11462,
                          "nodeType": "Block",
                          "src": "12498:15:50",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11460,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "12503:5:50",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 11459,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11405,
                                  "src": "12503:3:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 11461,
                              "nodeType": "ExpressionStatement",
                              "src": "12503:5:50"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11464,
                          "name": "end",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11405,
                          "src": "12523:3:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "functionReturnParameters": 11397,
                        "id": 11465,
                        "nodeType": "Return",
                        "src": "12516:10:50"
                      }
                    ]
                  },
                  "documentation": "@notice Withdrawal should only be possible for blocks which were already\nmined. If the fees are withdrawn in the same block as the user withdrawal\nthey are not considered by the withdrawing logic (to avoid inconsistencies).\n\t * @param start Start of the range.\n@param _loanPoolToken Loan pool token address.\n@param _maxCheckpoints Checkpoint index incremental.\n",
                  "id": 11467,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getEndOfRange",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11394,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11389,
                        "name": "start",
                        "nodeType": "VariableDeclaration",
                        "scope": 11467,
                        "src": "11708:12:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 11388,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11708:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11391,
                        "name": "_loanPoolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 11467,
                        "src": "11724:22:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11390,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11724:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11393,
                        "name": "_maxCheckpoints",
                        "nodeType": "VariableDeclaration",
                        "scope": 11467,
                        "src": "11750:22:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 11392,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11750:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11704:71:50"
                  },
                  "returnParameters": {
                    "id": 11397,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11396,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11467,
                        "src": "11799:6:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 11395,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11799:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11798:8:50"
                  },
                  "scope": 11576,
                  "src": "11681:849:50",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11574,
                    "nodeType": "Block",
                    "src": "12848:884:50",
                    "statements": [
                      {
                        "assignments": [
                          11475
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11475,
                            "name": "blockNumber",
                            "nodeType": "VariableDeclaration",
                            "scope": 11574,
                            "src": "12852:18:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 11474,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "12852:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11481,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11477,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "12880:5:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 11478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12880:12:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "46656553686172696e6750726f78793a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473",
                              "id": 11479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12894:65:50",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_329d021b7f8968cfe8ff7552f88b647dd837dce1e0574df1d6d6314dca9da621",
                                "typeString": "literal_string \"FeeSharingProxy::_writeCheckpoint: block number exceeds 32 bits\""
                              },
                              "value": "FeeSharingProxy::_writeCheckpoint: block number exceeds 32 bits"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_329d021b7f8968cfe8ff7552f88b647dd837dce1e0574df1d6d6314dca9da621",
                                "typeString": "literal_string \"FeeSharingProxy::_writeCheckpoint: block number exceeds 32 bits\""
                              }
                            ],
                            "id": 11476,
                            "name": "safe32",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13799,
                            "src": "12873:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$",
                              "typeString": "function (uint256,string memory) pure returns (uint32)"
                            }
                          },
                          "id": 11480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12873:87:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12852:108:50"
                      },
                      {
                        "assignments": [
                          11483
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11483,
                            "name": "blockTimestamp",
                            "nodeType": "VariableDeclaration",
                            "scope": 11574,
                            "src": "12964:21:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 11482,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "12964:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11489,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11485,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "12995:5:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 11486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12995:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "46656553686172696e6750726f78793a3a5f7772697465436865636b706f696e743a20626c6f636b2074696d657374616d7020657863656564732033322062697473",
                              "id": 11487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13012:68:50",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_309893205e16ee39e3be9f296d4af4f4bcaa46e6c2fa9a38982a26ed1c6e5106",
                                "typeString": "literal_string \"FeeSharingProxy::_writeCheckpoint: block timestamp exceeds 32 bits\""
                              },
                              "value": "FeeSharingProxy::_writeCheckpoint: block timestamp exceeds 32 bits"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_309893205e16ee39e3be9f296d4af4f4bcaa46e6c2fa9a38982a26ed1c6e5106",
                                "typeString": "literal_string \"FeeSharingProxy::_writeCheckpoint: block timestamp exceeds 32 bits\""
                              }
                            ],
                            "id": 11484,
                            "name": "safe32",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13799,
                            "src": "12988:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$",
                              "typeString": "function (uint256,string memory) pure returns (uint32)"
                            }
                          },
                          "id": 11488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12988:93:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12964:117:50"
                      },
                      {
                        "assignments": [
                          11491
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11491,
                            "name": "nCheckpoints",
                            "nodeType": "VariableDeclaration",
                            "scope": 11574,
                            "src": "13085:19:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 11490,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "13085:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11495,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 11492,
                            "name": "numTokenCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10839,
                            "src": "13107:19:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                              "typeString": "mapping(address => uint32)"
                            }
                          },
                          "id": 11494,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 11493,
                            "name": "_token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11469,
                            "src": "13127:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13107:27:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13085:49:50"
                      },
                      {
                        "assignments": [
                          11497
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11497,
                            "name": "totalWeightedStake",
                            "nodeType": "VariableDeclaration",
                            "scope": 11574,
                            "src": "13139:25:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 11496,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "13139:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11506,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 11502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11500,
                                "name": "blockNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11475,
                                "src": "13200:11:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 11501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13214:1:50",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "13200:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11503,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "13217:5:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 11504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13217:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11498,
                              "name": "staking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10829,
                              "src": "13167:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IStaking_$13773",
                                "typeString": "contract IStaking"
                              }
                            },
                            "id": 11499,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPriorTotalVotingPower",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13754,
                            "src": "13167:32:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint32_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (uint32,uint256) view external returns (uint96)"
                            }
                          },
                          "id": 11505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13167:66:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13139:94:50"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 11520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 11509,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 11507,
                              "name": "nCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11491,
                              "src": "13241:12:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 11508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13256:1:50",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "13241:16:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 11519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11510,
                                    "name": "tokenCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10835,
                                    "src": "13261:16:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => struct FeeSharingProxy.Checkpoint storage ref))"
                                    }
                                  },
                                  "id": 11512,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 11511,
                                    "name": "_token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11469,
                                    "src": "13278:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13261:24:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$",
                                    "typeString": "mapping(uint256 => struct FeeSharingProxy.Checkpoint storage ref)"
                                  }
                                },
                                "id": 11516,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 11515,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11513,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11491,
                                    "src": "13286:12:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 11514,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13301:1:50",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "13286:16:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13261:42:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$10862_storage",
                                  "typeString": "struct FeeSharingProxy.Checkpoint storage ref"
                                }
                              },
                              "id": 11517,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "blockNumber",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 10855,
                              "src": "13261:54:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 11518,
                              "name": "blockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11475,
                              "src": "13319:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "13261:69:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13241:89:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 11565,
                          "nodeType": "Block",
                          "src": "13500:173:50",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 11544,
                                      "name": "tokenCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10835,
                                      "src": "13505:16:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => struct FeeSharingProxy.Checkpoint storage ref))"
                                      }
                                    },
                                    "id": 11547,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 11545,
                                      "name": "_token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11469,
                                      "src": "13522:6:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13505:24:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$",
                                      "typeString": "mapping(uint256 => struct FeeSharingProxy.Checkpoint storage ref)"
                                    }
                                  },
                                  "id": 11548,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 11546,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11491,
                                    "src": "13530:12:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13505:38:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$10862_storage",
                                    "typeString": "struct FeeSharingProxy.Checkpoint storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11550,
                                      "name": "blockNumber",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11475,
                                      "src": "13557:11:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 11551,
                                      "name": "blockTimestamp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11483,
                                      "src": "13570:14:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 11552,
                                      "name": "totalWeightedStake",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11497,
                                      "src": "13586:18:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 11553,
                                      "name": "_numTokens",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11471,
                                      "src": "13606:10:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    ],
                                    "id": 11549,
                                    "name": "Checkpoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10862,
                                    "src": "13546:10:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_Checkpoint_$10862_storage_ptr_$",
                                      "typeString": "type(struct FeeSharingProxy.Checkpoint storage pointer)"
                                    }
                                  },
                                  "id": 11554,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13546:71:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$10862_memory",
                                    "typeString": "struct FeeSharingProxy.Checkpoint memory"
                                  }
                                },
                                "src": "13505:112:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$10862_storage",
                                  "typeString": "struct FeeSharingProxy.Checkpoint storage ref"
                                }
                              },
                              "id": 11556,
                              "nodeType": "ExpressionStatement",
                              "src": "13505:112:50"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11563,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11557,
                                    "name": "numTokenCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10839,
                                    "src": "13622:19:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint32_$",
                                      "typeString": "mapping(address => uint32)"
                                    }
                                  },
                                  "id": 11559,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 11558,
                                    "name": "_token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11469,
                                    "src": "13642:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13622:27:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 11562,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11560,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11491,
                                    "src": "13652:12:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 11561,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13667:1:50",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "13652:16:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "13622:46:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 11564,
                              "nodeType": "ExpressionStatement",
                              "src": "13622:46:50"
                            }
                          ]
                        },
                        "id": 11566,
                        "nodeType": "IfStatement",
                        "src": "13237:436:50",
                        "trueBody": {
                          "id": 11543,
                          "nodeType": "Block",
                          "src": "13332:162:50",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11530,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 11521,
                                        "name": "tokenCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10835,
                                        "src": "13337:16:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$_$",
                                          "typeString": "mapping(address => mapping(uint256 => struct FeeSharingProxy.Checkpoint storage ref))"
                                        }
                                      },
                                      "id": 11526,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 11522,
                                        "name": "_token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11469,
                                        "src": "13354:6:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "13337:24:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$",
                                        "typeString": "mapping(uint256 => struct FeeSharingProxy.Checkpoint storage ref)"
                                      }
                                    },
                                    "id": 11527,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 11525,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 11523,
                                        "name": "nCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11491,
                                        "src": "13362:12:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 11524,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13377:1:50",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "13362:16:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13337:42:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$10862_storage",
                                      "typeString": "struct FeeSharingProxy.Checkpoint storage ref"
                                    }
                                  },
                                  "id": 11528,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "totalWeightedStake",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 10859,
                                  "src": "13337:61:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 11529,
                                  "name": "totalWeightedStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11497,
                                  "src": "13401:18:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "13337:82:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 11531,
                              "nodeType": "ExpressionStatement",
                              "src": "13337:82:50"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 11532,
                                        "name": "tokenCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10835,
                                        "src": "13424:16:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$_$",
                                          "typeString": "mapping(address => mapping(uint256 => struct FeeSharingProxy.Checkpoint storage ref))"
                                        }
                                      },
                                      "id": 11537,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 11533,
                                        "name": "_token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11469,
                                        "src": "13441:6:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "13424:24:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Checkpoint_$10862_storage_$",
                                        "typeString": "mapping(uint256 => struct FeeSharingProxy.Checkpoint storage ref)"
                                      }
                                    },
                                    "id": 11538,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 11536,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 11534,
                                        "name": "nCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11491,
                                        "src": "13449:12:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 11535,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13464:1:50",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "13449:16:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13424:42:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$10862_storage",
                                      "typeString": "struct FeeSharingProxy.Checkpoint storage ref"
                                    }
                                  },
                                  "id": 11539,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "numTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 10861,
                                  "src": "13424:52:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 11540,
                                  "name": "_numTokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11471,
                                  "src": "13479:10:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "13424:65:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 11542,
                              "nodeType": "ExpressionStatement",
                              "src": "13424:65:50"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11568,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "13697:3:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 11569,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13697:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11570,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11469,
                              "src": "13709:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11571,
                              "name": "_numTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11471,
                              "src": "13717:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 11567,
                            "name": "CheckpointAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10886,
                            "src": "13681:15:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 11572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13681:47:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11573,
                        "nodeType": "EmitStatement",
                        "src": "13676:52:50"
                      }
                    ]
                  },
                  "documentation": "@notice Write a regular checkpoint w/ the foolowing data:\nblock number, block timestamp, total weighted stake and num of tokens.\n@param _token The pool token address.\n@param _numTokens The amount of pool tokens.\n",
                  "id": 11575,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_writeTokenCheckpoint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11472,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11469,
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 11575,
                        "src": "12804:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11468,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12804:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11471,
                        "name": "_numTokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 11575,
                        "src": "12820:17:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 11470,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "12820:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12803:35:50"
                  },
                  "returnParameters": {
                    "id": 11473,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12848:0:50"
                  },
                  "scope": 11576,
                  "src": "12773:959:50",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 11604,
              "src": "2104:11630:50"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 11593,
              "linearizedBaseContracts": [
                11593
              ],
              "name": "IProtocol",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 11585,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11578,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 11585,
                        "src": "13799:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11577,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13799:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11580,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 11585,
                        "src": "13814:16:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11579,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13814:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13798:33:50"
                  },
                  "returnParameters": {
                    "id": 11584,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11583,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11585,
                        "src": "13850:7:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11582,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13850:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13849:9:50"
                  },
                  "scope": 11593,
                  "src": "13777:82:50",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 11592,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "underlyingToLoanPool",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11588,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11587,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 11592,
                        "src": "13892:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11586,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13892:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13891:15:50"
                  },
                  "returnParameters": {
                    "id": 11591,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11590,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11592,
                        "src": "13925:7:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11589,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13925:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13924:9:50"
                  },
                  "scope": 11593,
                  "src": "13862:72:50",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 11604,
              "src": "13754:182:50"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 11603,
              "linearizedBaseContracts": [
                11603
              ],
              "name": "ILoanToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 11602,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11598,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11595,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 11602,
                        "src": "13976:16:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11594,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13976:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11597,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 11602,
                        "src": "13994:21:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11596,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13994:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13975:41:50"
                  },
                  "returnParameters": {
                    "id": 11601,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11600,
                        "name": "mintAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 11602,
                        "src": "14035:18:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11599,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14035:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14034:20:50"
                  },
                  "scope": 11603,
                  "src": "13962:93:50",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 11604,
              "src": "13938:119:50"
            }
          ],
          "src": "0:14058:50"
        },
        "id": 50
      },
      "contracts/governance/GovernorAlpha.sol": {
        "ast": {
          "absolutePath": "contracts/governance/GovernorAlpha.sol",
          "exportedSymbols": {
            "GovernorAlpha": [
              12881
            ],
            "StakingInterface": [
              12966
            ],
            "TimelockInterface": [
              12945
            ]
          },
          "id": 12967,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11605,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:51"
            },
            {
              "id": 11606,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:51"
            },
            {
              "absolutePath": "contracts/governance/Staking/SafeMath96.sol",
              "file": "./Staking/SafeMath96.sol",
              "id": 11607,
              "nodeType": "ImportDirective",
              "scope": 12967,
              "sourceUnit": 13960,
              "src": "60:34:51",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Timelock.sol",
              "file": "./Timelock.sol",
              "id": 11608,
              "nodeType": "ImportDirective",
              "scope": 12967,
              "sourceUnit": 17727,
              "src": "95:24:51",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/Staking.sol",
              "file": "./Staking/Staking.sol",
              "id": 11609,
              "nodeType": "ImportDirective",
              "scope": 12967,
              "sourceUnit": 15558,
              "src": "120:31:51",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/rsk/RSKAddrValidator.sol",
              "file": "../rsk/RSKAddrValidator.sol",
              "id": 11610,
              "nodeType": "ImportDirective",
              "scope": 12967,
              "sourceUnit": 42701,
              "src": "152:37:51",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 11611,
                    "name": "SafeMath96",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13959,
                    "src": "1172:10:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath96_$13959",
                      "typeString": "contract SafeMath96"
                    }
                  },
                  "id": 11612,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1172:10:51"
                }
              ],
              "contractDependencies": [
                13959
              ],
              "contractKind": "contract",
              "documentation": "@title Governance Contract.\n@notice This is an adapted clone of compound’s governance model. In general,\nthe process is the same: Token holders can make (executable) proposals if\nthey possess enough voting power, vote on proposals during a predefined\nvoting period and in the end evaluate the outcome. If successful, the\nproposal will be scheduled on the timelock contract. Only after sufficient\ntime passed, it can be executed. A minimum voting power is required for\nmaking a proposal as well as a minimum quorum.\n * Voting power in the Bitocracy:\nStakers will receive voting power in the Bitocracy in return for their\nstaking commitment. This voting power is weighted by how much SOV is staked\nand for how long the staking period is - staking more SOV over longer staking\nperiods results in higher voting power. With this voting power, users can\nvote for or against any SIP in bitocracy.sovryn.app.\n",
              "fullyImplemented": true,
              "id": 12881,
              "linearizedBaseContracts": [
                12881,
                13959
              ],
              "name": "GovernorAlpha",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 11615,
                  "name": "NAME",
                  "nodeType": "VariableDeclaration",
                  "scope": 12881,
                  "src": "1242:53:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 11613,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1242:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "536f7672796e20476f7665726e6f7220416c706861",
                    "id": 11614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1272:23:51",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_ddf6fbf241d6c602c276b8332aecac376ff7e0ef2276d109c25930e6911ca2bd",
                      "typeString": "literal_string \"Sovryn Governor Alpha\""
                    },
                    "value": "Sovryn Governor Alpha"
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11622,
                    "nodeType": "Block",
                    "src": "1441:17:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "3130",
                          "id": 11620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1452:2:51",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "functionReturnParameters": 11619,
                        "id": 11621,
                        "nodeType": "Return",
                        "src": "1445:9:51"
                      }
                    ]
                  },
                  "documentation": "@notice The maximum number of actions that can be included in a proposal.",
                  "id": 11623,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "proposalMaxOperations",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11616,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1408:2:51"
                  },
                  "returnParameters": {
                    "id": 11619,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11618,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11623,
                        "src": "1432:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11617,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1432:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1431:9:51"
                  },
                  "scope": 12881,
                  "src": "1378:80:51",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11630,
                    "nodeType": "Block",
                    "src": "1610:16:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 11628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1621:1:51",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "functionReturnParameters": 11627,
                        "id": 11629,
                        "nodeType": "Return",
                        "src": "1614:8:51"
                      }
                    ]
                  },
                  "documentation": "@notice The delay before voting on a proposal may take place, once proposed.",
                  "id": 11631,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "votingDelay",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11624,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1577:2:51"
                  },
                  "returnParameters": {
                    "id": 11627,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11626,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11631,
                        "src": "1601:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11625,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1601:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1600:9:51"
                  },
                  "scope": 12881,
                  "src": "1557:69:51",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11638,
                    "nodeType": "Block",
                    "src": "1756:19:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "32383830",
                          "id": 11636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1767:4:51",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2880_by_1",
                            "typeString": "int_const 2880"
                          },
                          "value": "2880"
                        },
                        "functionReturnParameters": 11635,
                        "id": 11637,
                        "nodeType": "Return",
                        "src": "1760:11:51"
                      }
                    ]
                  },
                  "documentation": "@notice The duration of voting on a proposal, in blocks.",
                  "id": 11639,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "votingPeriod",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11632,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1723:2:51"
                  },
                  "returnParameters": {
                    "id": 11635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11634,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11639,
                        "src": "1747:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11633,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1747:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1746:9:51"
                  },
                  "scope": 12881,
                  "src": "1702:73:51",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 11641,
                  "name": "timelock",
                  "nodeType": "VariableDeclaration",
                  "scope": 12881,
                  "src": "1878:25:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITimelock_$17252",
                    "typeString": "contract ITimelock"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11640,
                    "name": "ITimelock",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17252,
                    "src": "1878:9:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ITimelock_$17252",
                      "typeString": "contract ITimelock"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 11643,
                  "name": "staking",
                  "nodeType": "VariableDeclaration",
                  "scope": 12881,
                  "src": "1964:23:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IStaking_$13773",
                    "typeString": "contract IStaking"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11642,
                    "name": "IStaking",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13773,
                    "src": "1964:8:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IStaking_$13773",
                      "typeString": "contract IStaking"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 11645,
                  "name": "guardian",
                  "nodeType": "VariableDeclaration",
                  "scope": 12881,
                  "src": "2042:23:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11644,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2042:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 11647,
                  "name": "proposalCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12881,
                  "src": "2113:28:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11646,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2113:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 11649,
                  "name": "quorumPercentageVotes",
                  "nodeType": "VariableDeclaration",
                  "scope": 12881,
                  "src": "2216:35:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 11648,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "2216:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 11651,
                  "name": "majorityPercentageVotes",
                  "nodeType": "VariableDeclaration",
                  "scope": 12881,
                  "src": "2288:37:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 11650,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "2288:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "canonicalName": "GovernorAlpha.Proposal",
                  "id": 11692,
                  "members": [
                    {
                      "constant": false,
                      "id": 11653,
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "2400:10:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11652,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2400:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11655,
                      "name": "startBlock",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "2517:17:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 11654,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2517:6:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11657,
                      "name": "endBlock",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "2624:15:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 11656,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2624:6:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11659,
                      "name": "forVotes",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "2708:15:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 11658,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "2708:6:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11661,
                      "name": "againstVotes",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "2797:19:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 11660,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "2797:6:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11663,
                      "name": "quorum",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "2872:13:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 11662,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "2872:6:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11665,
                      "name": "majorityPercentage",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "2954:25:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 11664,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "2954:6:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11667,
                      "name": "eta",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "3090:10:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 11666,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "3090:6:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11669,
                      "name": "startTime",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "3171:16:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 11668,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "3171:6:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11671,
                      "name": "canceled",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "3258:13:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11670,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3258:4:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11673,
                      "name": "executed",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "3342:13:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11672,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3342:4:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11675,
                      "name": "proposer",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "3398:16:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11674,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3398:7:51",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11678,
                      "name": "targets",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "3491:17:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 11676,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3491:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11677,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3491:9:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11681,
                      "name": "values",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "3608:16:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 11679,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3608:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11680,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3608:9:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11684,
                      "name": "signatures",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "3696:19:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                        "typeString": "string[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 11682,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3696:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "id": 11683,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3696:8:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                          "typeString": "string[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11687,
                      "name": "calldatas",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "3789:17:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                        "typeString": "bytes[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 11685,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3789:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "id": 11686,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3789:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                          "typeString": "bytes[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11691,
                      "name": "receipts",
                      "nodeType": "VariableDeclaration",
                      "scope": 11692,
                      "src": "3874:36:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$11699_storage_$",
                        "typeString": "mapping(address => struct GovernorAlpha.Receipt)"
                      },
                      "typeName": {
                        "id": 11690,
                        "keyType": {
                          "id": 11688,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3882:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "3874:27:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$11699_storage_$",
                          "typeString": "mapping(address => struct GovernorAlpha.Receipt)"
                        },
                        "valueType": {
                          "contractScope": null,
                          "id": 11689,
                          "name": "Receipt",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 11699,
                          "src": "3893:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Receipt_$11699_storage_ptr",
                            "typeString": "struct GovernorAlpha.Receipt"
                          }
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "Proposal",
                  "nodeType": "StructDefinition",
                  "scope": 12881,
                  "src": "2329:1585:51",
                  "visibility": "public"
                },
                {
                  "canonicalName": "GovernorAlpha.Receipt",
                  "id": 11699,
                  "members": [
                    {
                      "constant": false,
                      "id": 11694,
                      "name": "hasVoted",
                      "nodeType": "VariableDeclaration",
                      "scope": 11699,
                      "src": "4034:13:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11693,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4034:4:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11696,
                      "name": "support",
                      "nodeType": "VariableDeclaration",
                      "scope": 11699,
                      "src": "4113:12:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11695,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4113:4:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11698,
                      "name": "votes",
                      "nodeType": "VariableDeclaration",
                      "scope": 11699,
                      "src": "4195:12:51",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 11697,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "4195:6:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "Receipt",
                  "nodeType": "StructDefinition",
                  "scope": 12881,
                  "src": "3964:247:51",
                  "visibility": "public"
                },
                {
                  "canonicalName": "GovernorAlpha.ProposalState",
                  "id": 11708,
                  "members": [
                    {
                      "id": 11700,
                      "name": "Pending",
                      "nodeType": "EnumValue",
                      "src": "4291:7:51"
                    },
                    {
                      "id": 11701,
                      "name": "Active",
                      "nodeType": "EnumValue",
                      "src": "4300:6:51"
                    },
                    {
                      "id": 11702,
                      "name": "Canceled",
                      "nodeType": "EnumValue",
                      "src": "4308:8:51"
                    },
                    {
                      "id": 11703,
                      "name": "Defeated",
                      "nodeType": "EnumValue",
                      "src": "4318:8:51"
                    },
                    {
                      "id": 11704,
                      "name": "Succeeded",
                      "nodeType": "EnumValue",
                      "src": "4328:9:51"
                    },
                    {
                      "id": 11705,
                      "name": "Queued",
                      "nodeType": "EnumValue",
                      "src": "4339:6:51"
                    },
                    {
                      "id": 11706,
                      "name": "Expired",
                      "nodeType": "EnumValue",
                      "src": "4347:7:51"
                    },
                    {
                      "id": 11707,
                      "name": "Executed",
                      "nodeType": "EnumValue",
                      "src": "4356:8:51"
                    }
                  ],
                  "name": "ProposalState",
                  "nodeType": "EnumDefinition",
                  "src": "4270:96:51"
                },
                {
                  "constant": false,
                  "id": 11712,
                  "name": "proposals",
                  "nodeType": "VariableDeclaration",
                  "scope": 12881,
                  "src": "4434:45:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$11692_storage_$",
                    "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal)"
                  },
                  "typeName": {
                    "id": 11711,
                    "keyType": {
                      "id": 11709,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4442:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4434:28:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$11692_storage_$",
                      "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 11710,
                      "name": "Proposal",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 11692,
                      "src": "4453:8:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                        "typeString": "struct GovernorAlpha.Proposal"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 11716,
                  "name": "latestProposalIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 12881,
                  "src": "4535:52:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 11715,
                    "keyType": {
                      "id": 11713,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4543:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4535:27:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 11714,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4554:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 11721,
                  "name": "DOMAIN_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "scope": 12881,
                  "src": "4652:122:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11717,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4652:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                        "id": 11719,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4704:69:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                          "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                        },
                        "value": "EIP712Domain(string name,uint256 chainId,address verifyingContract)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                          "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                        }
                      ],
                      "id": 11718,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 44988,
                      "src": "4694:9:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 11720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4694:80:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 11726,
                  "name": "BALLOT_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "scope": 12881,
                  "src": "4856:94:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11722,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4856:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20737570706f727429",
                        "id": 11724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4908:41:51",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee",
                          "typeString": "literal_string \"Ballot(uint256 proposalId,bool support)\""
                        },
                        "value": "Ballot(uint256 proposalId,bool support)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee",
                          "typeString": "literal_string \"Ballot(uint256 proposalId,bool support)\""
                        }
                      ],
                      "id": 11723,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 44988,
                      "src": "4898:9:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 11725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4898:52:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when a new proposal is created.",
                  "id": 11750,
                  "name": "ProposalCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11749,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11728,
                        "indexed": false,
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 11750,
                        "src": "5056:10:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11727,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5056:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11730,
                        "indexed": false,
                        "name": "proposer",
                        "nodeType": "VariableDeclaration",
                        "scope": 11750,
                        "src": "5070:16:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11729,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5070:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11733,
                        "indexed": false,
                        "name": "targets",
                        "nodeType": "VariableDeclaration",
                        "scope": 11750,
                        "src": "5090:17:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11731,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5090:7:51",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 11732,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5090:9:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11736,
                        "indexed": false,
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 11750,
                        "src": "5111:16:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11734,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5111:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11735,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5111:9:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11739,
                        "indexed": false,
                        "name": "signatures",
                        "nodeType": "VariableDeclaration",
                        "scope": 11750,
                        "src": "5131:19:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11737,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "5131:6:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 11738,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5131:8:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11742,
                        "indexed": false,
                        "name": "calldatas",
                        "nodeType": "VariableDeclaration",
                        "scope": 11750,
                        "src": "5154:17:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11740,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "5154:5:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 11741,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5154:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11744,
                        "indexed": false,
                        "name": "startBlock",
                        "nodeType": "VariableDeclaration",
                        "scope": 11750,
                        "src": "5175:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11743,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5175:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11746,
                        "indexed": false,
                        "name": "endBlock",
                        "nodeType": "VariableDeclaration",
                        "scope": 11750,
                        "src": "5197:16:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11745,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5197:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11748,
                        "indexed": false,
                        "name": "description",
                        "nodeType": "VariableDeclaration",
                        "scope": 11750,
                        "src": "5217:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11747,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5217:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5052:186:51"
                  },
                  "src": "5031:208:51"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when a vote has been cast on a proposal.",
                  "id": 11760,
                  "name": "VoteCast",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11759,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11752,
                        "indexed": false,
                        "name": "voter",
                        "nodeType": "VariableDeclaration",
                        "scope": 11760,
                        "src": "5328:13:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11751,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5328:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11754,
                        "indexed": false,
                        "name": "proposalId",
                        "nodeType": "VariableDeclaration",
                        "scope": 11760,
                        "src": "5343:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11753,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5343:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11756,
                        "indexed": false,
                        "name": "support",
                        "nodeType": "VariableDeclaration",
                        "scope": 11760,
                        "src": "5363:12:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11755,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5363:4:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11758,
                        "indexed": false,
                        "name": "votes",
                        "nodeType": "VariableDeclaration",
                        "scope": 11760,
                        "src": "5377:13:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11757,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5377:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5327:64:51"
                  },
                  "src": "5313:79:51"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when a proposal has been canceled.",
                  "id": 11764,
                  "name": "ProposalCanceled",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11763,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11762,
                        "indexed": false,
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 11764,
                        "src": "5483:10:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11761,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5483:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5482:12:51"
                  },
                  "src": "5460:35:51"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when a proposal has been queued in the Timelock.",
                  "id": 11770,
                  "name": "ProposalQueued",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11769,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11766,
                        "indexed": false,
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 11770,
                        "src": "5598:10:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11765,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5598:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11768,
                        "indexed": false,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 11770,
                        "src": "5610:11:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11767,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5610:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5597:25:51"
                  },
                  "src": "5577:46:51"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when a proposal has been executed in the Timelock.",
                  "id": 11774,
                  "name": "ProposalExecuted",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11773,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11772,
                        "indexed": false,
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 11774,
                        "src": "5730:10:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11771,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5730:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5729:12:51"
                  },
                  "src": "5707:35:51"
                },
                {
                  "body": {
                    "id": 11811,
                    "nodeType": "Block",
                    "src": "5915:199:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11787,
                            "name": "timelock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11641,
                            "src": "5919:8:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITimelock_$17252",
                              "typeString": "contract ITimelock"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11789,
                                "name": "timelock_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11776,
                                "src": "5940:9:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 11788,
                              "name": "ITimelock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17252,
                              "src": "5930:9:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ITimelock_$17252_$",
                                "typeString": "type(contract ITimelock)"
                              }
                            },
                            "id": 11790,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5930:20:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITimelock_$17252",
                              "typeString": "contract ITimelock"
                            }
                          },
                          "src": "5919:31:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ITimelock_$17252",
                            "typeString": "contract ITimelock"
                          }
                        },
                        "id": 11792,
                        "nodeType": "ExpressionStatement",
                        "src": "5919:31:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11793,
                            "name": "staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11643,
                            "src": "5954:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IStaking_$13773",
                              "typeString": "contract IStaking"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11795,
                                "name": "staking_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11778,
                                "src": "5973:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 11794,
                              "name": "IStaking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13773,
                              "src": "5964:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IStaking_$13773_$",
                                "typeString": "type(contract IStaking)"
                              }
                            },
                            "id": 11796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5964:18:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IStaking_$13773",
                              "typeString": "contract IStaking"
                            }
                          },
                          "src": "5954:28:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IStaking_$13773",
                            "typeString": "contract IStaking"
                          }
                        },
                        "id": 11798,
                        "nodeType": "ExpressionStatement",
                        "src": "5954:28:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11799,
                            "name": "guardian",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11645,
                            "src": "5986:8:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11800,
                            "name": "guardian_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11780,
                            "src": "5997:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5986:20:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11802,
                        "nodeType": "ExpressionStatement",
                        "src": "5986:20:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11803,
                            "name": "quorumPercentageVotes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11649,
                            "src": "6010:21:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11804,
                            "name": "_quorumPercentageVotes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11782,
                            "src": "6034:22:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "6010:46:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 11806,
                        "nodeType": "ExpressionStatement",
                        "src": "6010:46:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11807,
                            "name": "majorityPercentageVotes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11651,
                            "src": "6060:23:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11808,
                            "name": "_majorityPercentageVotes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11784,
                            "src": "6086:24:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "6060:50:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 11810,
                        "nodeType": "ExpressionStatement",
                        "src": "6060:50:51"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 11812,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11785,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11776,
                        "name": "timelock_",
                        "nodeType": "VariableDeclaration",
                        "scope": 11812,
                        "src": "5778:17:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11775,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5778:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11778,
                        "name": "staking_",
                        "nodeType": "VariableDeclaration",
                        "scope": 11812,
                        "src": "5799:16:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11777,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5799:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11780,
                        "name": "guardian_",
                        "nodeType": "VariableDeclaration",
                        "scope": 11812,
                        "src": "5819:17:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11779,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5819:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11782,
                        "name": "_quorumPercentageVotes",
                        "nodeType": "VariableDeclaration",
                        "scope": 11812,
                        "src": "5840:29:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 11781,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "5840:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11784,
                        "name": "_majorityPercentageVotes",
                        "nodeType": "VariableDeclaration",
                        "scope": 11812,
                        "src": "5873:31:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 11783,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "5873:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5774:133:51"
                  },
                  "returnParameters": {
                    "id": 11786,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5915:0:51"
                  },
                  "scope": 12881,
                  "src": "5763:351:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11836,
                    "nodeType": "Block",
                    "src": "6260:256:51",
                    "statements": [
                      {
                        "assignments": [
                          11818
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11818,
                            "name": "totalVotingPower",
                            "nodeType": "VariableDeclaration",
                            "scope": 11836,
                            "src": "6264:23:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 11817,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "6264:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11831,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11825,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11822,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44984,
                                      "src": "6338:5:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 11823,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "number",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6338:12:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 11824,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6353:1:51",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6338:16:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73616c5468726573686f6c643a20626c6f636b206e756d626572206f766572666c6f77",
                                  "id": 11826,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6356:57:51",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_faffe9fe89a99b764d2e24f1c246741053928fbe39c1295c31579f511f5b90f0",
                                    "typeString": "literal_string \"GovernorAlpha::proposalThreshold: block number overflow\""
                                  },
                                  "value": "GovernorAlpha::proposalThreshold: block number overflow"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_faffe9fe89a99b764d2e24f1c246741053928fbe39c1295c31579f511f5b90f0",
                                    "typeString": "literal_string \"GovernorAlpha::proposalThreshold: block number overflow\""
                                  }
                                ],
                                "id": 11821,
                                "name": "safe32",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13799,
                                "src": "6331:6:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$",
                                  "typeString": "function (uint256,string memory) pure returns (uint32)"
                                }
                              },
                              "id": 11827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6331:83:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11828,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "6420:5:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 11829,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6420:15:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11819,
                              "name": "staking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11643,
                              "src": "6293:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IStaking_$13773",
                                "typeString": "contract IStaking"
                              }
                            },
                            "id": 11820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPriorTotalVotingPower",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13754,
                            "src": "6293:32:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint32_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (uint32,uint256) view external returns (uint96)"
                            }
                          },
                          "id": 11830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6293:147:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6264:176:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 11834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11832,
                            "name": "totalVotingPower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11818,
                            "src": "6490:16:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 11833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6509:3:51",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "6490:22:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 11816,
                        "id": 11835,
                        "nodeType": "Return",
                        "src": "6483:29:51"
                      }
                    ]
                  },
                  "documentation": "@notice The number of votes required in order for a voter to become a proposer.",
                  "id": 11837,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "proposalThreshold",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11813,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6228:2:51"
                  },
                  "returnParameters": {
                    "id": 11816,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11815,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11837,
                        "src": "6252:6:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 11814,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "6252:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6251:8:51"
                  },
                  "scope": 12881,
                  "src": "6202:314:51",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11865,
                    "nodeType": "Block",
                    "src": "6701:334:51",
                    "statements": [
                      {
                        "assignments": [
                          11843
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11843,
                            "name": "totalVotingPower",
                            "nodeType": "VariableDeclaration",
                            "scope": 11865,
                            "src": "6705:23:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 11842,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "6705:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11856,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11850,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11847,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44984,
                                      "src": "6779:5:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 11848,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "number",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6779:12:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 11849,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6794:1:51",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6779:16:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "476f7665726e6f72416c7068613a3a71756f72756d566f7465733a20626c6f636b206e756d626572206f766572666c6f77",
                                  "id": 11851,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6797:51:51",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_475e40185bf93e63a0ac90b8b405b2f3f1f0771a2695098db951af0821987cb0",
                                    "typeString": "literal_string \"GovernorAlpha::quorumVotes: block number overflow\""
                                  },
                                  "value": "GovernorAlpha::quorumVotes: block number overflow"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_475e40185bf93e63a0ac90b8b405b2f3f1f0771a2695098db951af0821987cb0",
                                    "typeString": "literal_string \"GovernorAlpha::quorumVotes: block number overflow\""
                                  }
                                ],
                                "id": 11846,
                                "name": "safe32",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13799,
                                "src": "6772:6:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$",
                                  "typeString": "function (uint256,string memory) pure returns (uint32)"
                                }
                              },
                              "id": 11852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6772:77:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11853,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "6855:5:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 11854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6855:15:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11844,
                              "name": "staking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11643,
                              "src": "6734:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IStaking_$13773",
                                "typeString": "contract IStaking"
                              }
                            },
                            "id": 11845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPriorTotalVotingPower",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13754,
                            "src": "6734:32:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint32_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (uint32,uint256) view external returns (uint96)"
                            }
                          },
                          "id": 11855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6734:141:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6705:170:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 11863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11858,
                                "name": "quorumPercentageVotes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11649,
                                "src": "6931:21:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 11859,
                                "name": "totalVotingPower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11843,
                                "src": "6954:16:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "476f7665726e6f72416c7068613a3a71756f72756d566f7465733a6d756c7469706c69636174696f6e206f766572666c6f77",
                                "id": 11860,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6972:52:51",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_513729728306539eb639dfe7234ce5bf00a90a269b9298a79fa9e5503a63eacf",
                                  "typeString": "literal_string \"GovernorAlpha::quorumVotes:multiplication overflow\""
                                },
                                "value": "GovernorAlpha::quorumVotes:multiplication overflow"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_513729728306539eb639dfe7234ce5bf00a90a269b9298a79fa9e5503a63eacf",
                                  "typeString": "literal_string \"GovernorAlpha::quorumVotes:multiplication overflow\""
                                }
                              ],
                              "id": 11857,
                              "name": "mul96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13931,
                              "src": "6925:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                              }
                            },
                            "id": 11861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6925:100:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 11862,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7028:3:51",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "6925:106:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 11841,
                        "id": 11864,
                        "nodeType": "Return",
                        "src": "6918:113:51"
                      }
                    ]
                  },
                  "documentation": "@notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed.",
                  "id": 11866,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "quorumVotes",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11838,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6669:2:51"
                  },
                  "returnParameters": {
                    "id": 11841,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11840,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 11866,
                        "src": "6693:6:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 11839,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "6693:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6692:8:51"
                  },
                  "scope": 12881,
                  "src": "6649:386:51",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12072,
                    "nodeType": "Block",
                    "src": "7647:2776:51",
                    "statements": [
                      {
                        "assignments": [
                          11886
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11886,
                            "name": "threshold",
                            "nodeType": "VariableDeclaration",
                            "scope": 12072,
                            "src": "7886:16:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 11885,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "7886:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11889,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 11887,
                            "name": "proposalThreshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11837,
                            "src": "7905:17:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint96_$",
                              "typeString": "function () view returns (uint96)"
                            }
                          },
                          "id": 11888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7905:19:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7886:38:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 11904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11893,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "7962:3:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 11894,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7962:10:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 11896,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44984,
                                          "src": "7981:5:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 11897,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "number",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "7981:12:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 11898,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7995:1:51",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "id": 11895,
                                      "name": "sub256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12868,
                                      "src": "7974:6:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 11899,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7974:23:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11900,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44984,
                                      "src": "7999:5:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 11901,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7999:15:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11891,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11643,
                                    "src": "7940:7:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IStaking_$13773",
                                      "typeString": "contract IStaking"
                                    }
                                  },
                                  "id": 11892,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getPriorVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13745,
                                  "src": "7940:21:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                                    "typeString": "function (address,uint256,uint256) view external returns (uint96)"
                                  }
                                },
                                "id": 11902,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7940:75:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 11903,
                                "name": "threshold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11886,
                                "src": "8018:9:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "7940:87:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657220766f7465732062656c6f772070726f706f73616c207468726573686f6c64",
                              "id": 11905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8032:65:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bfd39a706899c667e0394e5691bba7fd459524eeb85474b380cee160c3526ad7",
                                "typeString": "literal_string \"GovernorAlpha::propose: proposer votes below proposal threshold\""
                              },
                              "value": "GovernorAlpha::propose: proposer votes below proposal threshold"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_bfd39a706899c667e0394e5691bba7fd459524eeb85474b380cee160c3526ad7",
                                "typeString": "literal_string \"GovernorAlpha::propose: proposer votes below proposal threshold\""
                              }
                            ],
                            "id": 11890,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7928:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7928:173:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11907,
                        "nodeType": "ExpressionStatement",
                        "src": "7928:173:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 11925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 11919,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11913,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11909,
                                      "name": "targets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11869,
                                      "src": "8117:7:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 11910,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8117:14:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11911,
                                      "name": "values",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11872,
                                      "src": "8135:6:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 11912,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8135:13:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8117:31:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11918,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11914,
                                      "name": "targets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11869,
                                      "src": "8152:7:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 11915,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8152:14:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11916,
                                      "name": "signatures",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11875,
                                      "src": "8170:10:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                        "typeString": "string memory[] memory"
                                      }
                                    },
                                    "id": 11917,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8170:17:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8152:35:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "8117:70:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11924,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11920,
                                    "name": "targets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11869,
                                    "src": "8191:7:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 11921,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8191:14:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11922,
                                    "name": "calldatas",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11878,
                                    "src": "8209:9:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                                      "typeString": "bytes memory[] memory"
                                    }
                                  },
                                  "id": 11923,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8209:16:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8191:34:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "8117:108:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d61746368",
                              "id": 11926,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8230:70:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8f65dd3b1b279a725bb780739a9eb5d267c38175f941e38ce802e63e3e8b6fea",
                                "typeString": "literal_string \"GovernorAlpha::propose: proposal function information arity mismatch\""
                              },
                              "value": "GovernorAlpha::propose: proposal function information arity mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8f65dd3b1b279a725bb780739a9eb5d267c38175f941e38ce802e63e3e8b6fea",
                                "typeString": "literal_string \"GovernorAlpha::propose: proposal function information arity mismatch\""
                              }
                            ],
                            "id": 11908,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8105:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8105:199:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11928,
                        "nodeType": "ExpressionStatement",
                        "src": "8105:199:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11933,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11930,
                                  "name": "targets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11869,
                                  "src": "8316:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 11931,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8316:14:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11932,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8334:1:51",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8316:19:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f7669646520616374696f6e73",
                              "id": 11934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8337:46:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ad28c98e0c3f5f095d64a889b8cb7fef3f5dce1da50271bc4d958131808bd4c3",
                                "typeString": "literal_string \"GovernorAlpha::propose: must provide actions\""
                              },
                              "value": "GovernorAlpha::propose: must provide actions"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ad28c98e0c3f5f095d64a889b8cb7fef3f5dce1da50271bc4d958131808bd4c3",
                                "typeString": "literal_string \"GovernorAlpha::propose: must provide actions\""
                              }
                            ],
                            "id": 11929,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8308:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8308:76:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11936,
                        "nodeType": "ExpressionStatement",
                        "src": "8308:76:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11942,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11938,
                                  "name": "targets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11869,
                                  "src": "8396:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 11939,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8396:14:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 11940,
                                  "name": "proposalMaxOperations",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11623,
                                  "src": "8414:21:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                    "typeString": "function () pure returns (uint256)"
                                  }
                                },
                                "id": 11941,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8414:23:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8396:41:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7920616374696f6e73",
                              "id": 11943,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8439:42:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7be08c0beae18091615fa69523ea231e3fec34367b86b38f90cf56bf50e90496",
                                "typeString": "literal_string \"GovernorAlpha::propose: too many actions\""
                              },
                              "value": "GovernorAlpha::propose: too many actions"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7be08c0beae18091615fa69523ea231e3fec34367b86b38f90cf56bf50e90496",
                                "typeString": "literal_string \"GovernorAlpha::propose: too many actions\""
                              }
                            ],
                            "id": 11937,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8388:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11944,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8388:94:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11945,
                        "nodeType": "ExpressionStatement",
                        "src": "8388:94:51"
                      },
                      {
                        "assignments": [
                          11947
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11947,
                            "name": "latestProposalId",
                            "nodeType": "VariableDeclaration",
                            "scope": 12072,
                            "src": "8487:24:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11946,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8487:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11952,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 11948,
                            "name": "latestProposalIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11716,
                            "src": "8514:17:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 11951,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11949,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "8532:3:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 11950,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8532:10:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8514:29:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8487:56:51"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11955,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11953,
                            "name": "latestProposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11947,
                            "src": "8551:16:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11954,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8571:1:51",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8551:21:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 11979,
                        "nodeType": "IfStatement",
                        "src": "8547:449:51",
                        "trueBody": {
                          "id": 11978,
                          "nodeType": "Block",
                          "src": "8574:422:51",
                          "statements": [
                            {
                              "assignments": [
                                11957
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11957,
                                  "name": "proposersLatestProposalState",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11978,
                                  "src": "8579:42:51",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$11708",
                                    "typeString": "enum GovernorAlpha.ProposalState"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 11956,
                                    "name": "ProposalState",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 11708,
                                    "src": "8579:13:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$11708",
                                      "typeString": "enum GovernorAlpha.ProposalState"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11961,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11959,
                                    "name": "latestProposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11947,
                                    "src": "8630:16:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 11958,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12822,
                                  "src": "8624:5:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "function (uint256) view returns (enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 11960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8624:23:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8579:68:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ProposalState_$11708",
                                      "typeString": "enum GovernorAlpha.ProposalState"
                                    },
                                    "id": 11966,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 11963,
                                      "name": "proposersLatestProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11957,
                                      "src": "8665:28:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$11708",
                                        "typeString": "enum GovernorAlpha.ProposalState"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 11964,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11708,
                                        "src": "8697:13:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                                          "typeString": "type(enum GovernorAlpha.ProposalState)"
                                        }
                                      },
                                      "id": 11965,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "Active",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "8697:20:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$11708",
                                        "typeString": "enum GovernorAlpha.ProposalState"
                                      }
                                    },
                                    "src": "8665:52:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c7265616479206163746976652070726f706f73616c",
                                    "id": 11967,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8723:90:51",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_d87f670040507c478977f847e6bd1f7a027d18f70440fe56056d87e43baea226",
                                      "typeString": "literal_string \"GovernorAlpha::propose: one live proposal per proposer, found an already active proposal\""
                                    },
                                    "value": "GovernorAlpha::propose: one live proposal per proposer, found an already active proposal"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_d87f670040507c478977f847e6bd1f7a027d18f70440fe56056d87e43baea226",
                                      "typeString": "literal_string \"GovernorAlpha::propose: one live proposal per proposer, found an already active proposal\""
                                    }
                                  ],
                                  "id": 11962,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "8652:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 11968,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8652:166:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11969,
                              "nodeType": "ExpressionStatement",
                              "src": "8652:166:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ProposalState_$11708",
                                      "typeString": "enum GovernorAlpha.ProposalState"
                                    },
                                    "id": 11974,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 11971,
                                      "name": "proposersLatestProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11957,
                                      "src": "8836:28:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$11708",
                                        "typeString": "enum GovernorAlpha.ProposalState"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 11972,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11708,
                                        "src": "8868:13:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                                          "typeString": "type(enum GovernorAlpha.ProposalState)"
                                        }
                                      },
                                      "id": 11973,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "Pending",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "8868:21:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$11708",
                                        "typeString": "enum GovernorAlpha.ProposalState"
                                      }
                                    },
                                    "src": "8836:53:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c72656164792070656e64696e672070726f706f73616c",
                                    "id": 11975,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8895:91:51",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6ba5b9d71ffd376990d8fe5d0e3e5e56e38371f2ae53f3613e7df4450ff470e6",
                                      "typeString": "literal_string \"GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal\""
                                    },
                                    "value": "GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6ba5b9d71ffd376990d8fe5d0e3e5e56e38371f2ae53f3613e7df4450ff470e6",
                                      "typeString": "literal_string \"GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal\""
                                    }
                                  ],
                                  "id": 11970,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "8823:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 11976,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8823:168:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11977,
                              "nodeType": "ExpressionStatement",
                              "src": "8823:168:51"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          11981
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11981,
                            "name": "startBlock",
                            "nodeType": "VariableDeclaration",
                            "scope": 12072,
                            "src": "9000:18:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11980,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9000:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11988,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11983,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "9028:5:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 11984,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9028:12:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11985,
                                "name": "votingDelay",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11631,
                                "src": "9042:11:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                  "typeString": "function () pure returns (uint256)"
                                }
                              },
                              "id": 11986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9042:13:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11982,
                            "name": "add256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12847,
                            "src": "9021:6:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9021:35:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9000:56:51"
                      },
                      {
                        "assignments": [
                          11990
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11990,
                            "name": "endBlock",
                            "nodeType": "VariableDeclaration",
                            "scope": 12072,
                            "src": "9060:16:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11989,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9060:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11996,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11992,
                              "name": "startBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11981,
                              "src": "9086:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11993,
                                "name": "votingPeriod",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11639,
                                "src": "9098:12:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                  "typeString": "function () pure returns (uint256)"
                                }
                              },
                              "id": 11994,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9098:14:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11991,
                            "name": "add256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12847,
                            "src": "9079:6:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9079:34:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9060:53:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "9118:15:51",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 11997,
                            "name": "proposalCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11647,
                            "src": "9118:13:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11999,
                        "nodeType": "ExpressionStatement",
                        "src": "9118:15:51"
                      },
                      {
                        "assignments": [
                          12001
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12001,
                            "name": "newProposal",
                            "nodeType": "VariableDeclaration",
                            "scope": 12072,
                            "src": "9346:27:51",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11692_memory_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12000,
                              "name": "Proposal",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 11692,
                              "src": "9346:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12039,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12003,
                              "name": "proposalCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11647,
                              "src": "9398:13:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12005,
                                  "name": "startBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11981,
                                  "src": "9436:10:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a20737461727420626c6f636b206e756d626572206f766572666c6f77",
                                  "id": 12006,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9448:53:51",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c69f29f20ba6d5a452a40f9c6f32a37e5dbbe349fc1cc6dd6261221787a6315f",
                                    "typeString": "literal_string \"GovernorAlpha::propose: start block number overflow\""
                                  },
                                  "value": "GovernorAlpha::propose: start block number overflow"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_c69f29f20ba6d5a452a40f9c6f32a37e5dbbe349fc1cc6dd6261221787a6315f",
                                    "typeString": "literal_string \"GovernorAlpha::propose: start block number overflow\""
                                  }
                                ],
                                "id": 12004,
                                "name": "safe32",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13799,
                                "src": "9429:6:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$",
                                  "typeString": "function (uint256,string memory) pure returns (uint32)"
                                }
                              },
                              "id": 12007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9429:73:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12009,
                                  "name": "endBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11990,
                                  "src": "9525:8:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a20656e6420626c6f636b206e756d626572206f766572666c6f77",
                                  "id": 12010,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9535:51:51",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3e6cc415a0ec2fccdc2d074320ad0aaa5f952875d8ca4d61d9b1c678e53547c5",
                                    "typeString": "literal_string \"GovernorAlpha::propose: end block number overflow\""
                                  },
                                  "value": "GovernorAlpha::propose: end block number overflow"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_3e6cc415a0ec2fccdc2d074320ad0aaa5f952875d8ca4d61d9b1c678e53547c5",
                                    "typeString": "literal_string \"GovernorAlpha::propose: end block number overflow\""
                                  }
                                ],
                                "id": 12008,
                                "name": "safe32",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13799,
                                "src": "9518:6:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$",
                                  "typeString": "function (uint256,string memory) pure returns (uint32)"
                                }
                              },
                              "id": 12011,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9518:69:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12012,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9603:1:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9624:1:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12015,
                                  "name": "quorumPercentageVotes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11649,
                                  "src": "9645:21:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12016,
                                  "name": "threshold",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11886,
                                  "src": "9668:9:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a206f766572666c6f77206f6e2071756f72756d20636f6d7075746174696f6e",
                                  "id": 12017,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9679:56:51",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_01139fe0b7b1cc63201679680a077370368f44119bd3cad316f1af1c0af66e85",
                                    "typeString": "literal_string \"GovernorAlpha::propose: overflow on quorum computation\""
                                  },
                                  "value": "GovernorAlpha::propose: overflow on quorum computation"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_01139fe0b7b1cc63201679680a077370368f44119bd3cad316f1af1c0af66e85",
                                    "typeString": "literal_string \"GovernorAlpha::propose: overflow on quorum computation\""
                                  }
                                ],
                                "id": 12014,
                                "name": "mul96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13931,
                                "src": "9639:5:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                  "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                }
                              },
                              "id": 12018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9639:97:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12020,
                                  "name": "majorityPercentageVotes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11651,
                                  "src": "9774:23:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12021,
                                  "name": "threshold",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11886,
                                  "src": "9804:9:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a206f766572666c6f77206f6e206d616a6f7269747950657263656e7461676520636f6d7075746174696f6e",
                                  "id": 12022,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9820:68:51",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a7be90563fc649a682ad7a6335c06a0c55be58dd0adae2b17332abd6868e9bb0",
                                    "typeString": "literal_string \"GovernorAlpha::propose: overflow on majorityPercentage computation\""
                                  },
                                  "value": "GovernorAlpha::propose: overflow on majorityPercentage computation"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_a7be90563fc649a682ad7a6335c06a0c55be58dd0adae2b17332abd6868e9bb0",
                                    "typeString": "literal_string \"GovernorAlpha::propose: overflow on majorityPercentage computation\""
                                  }
                                ],
                                "id": 12019,
                                "name": "mul96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13931,
                                "src": "9762:5:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                  "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                }
                              },
                              "id": 12023,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9762:132:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9905:1:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12026,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44984,
                                    "src": "9930:5:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 12027,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9930:15:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "476f7665726e6f72416c7068613a3a70726f706f73653a20737461727454696d65206f766572666c6f77",
                                  "id": 12028,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9947:44:51",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_fdd61f3a418d7e2f07aa68cb054a22e2d8dc648f429e166aa3b0c40a9defffa4",
                                    "typeString": "literal_string \"GovernorAlpha::propose: startTime overflow\""
                                  },
                                  "value": "GovernorAlpha::propose: startTime overflow"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_fdd61f3a418d7e2f07aa68cb054a22e2d8dc648f429e166aa3b0c40a9defffa4",
                                    "typeString": "literal_string \"GovernorAlpha::propose: startTime overflow\""
                                  }
                                ],
                                "id": 12025,
                                "name": "safe64",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13822,
                                "src": "9923:6:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint64_$",
                                  "typeString": "function (uint256,string memory) pure returns (uint64)"
                                }
                              },
                              "id": 12029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9923:69:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 12030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10008:5:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 12031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10029:5:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12032,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "10050:3:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10050:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12034,
                              "name": "targets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11869,
                              "src": "10075:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12035,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11872,
                              "src": "10096:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12036,
                              "name": "signatures",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11875,
                              "src": "10120:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12037,
                              "name": "calldatas",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11878,
                              "src": "10147:9:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              }
                            ],
                            "id": 12002,
                            "name": "Proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11692,
                            "src": "9379:8:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_Proposal_$11692_storage_ptr_$",
                              "typeString": "type(struct GovernorAlpha.Proposal storage pointer)"
                            }
                          },
                          "id": 12038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [
                            "id",
                            "startBlock",
                            "endBlock",
                            "forVotes",
                            "againstVotes",
                            "quorum",
                            "majorityPercentage",
                            "eta",
                            "startTime",
                            "canceled",
                            "executed",
                            "proposer",
                            "targets",
                            "values",
                            "signatures",
                            "calldatas"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "9379:783:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11692_memory",
                            "typeString": "struct GovernorAlpha.Proposal memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9346:816:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12040,
                              "name": "proposals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11712,
                              "src": "10167:9:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$11692_storage_$",
                                "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                              }
                            },
                            "id": 12043,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12041,
                                "name": "newProposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12001,
                                "src": "10177:11:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_memory_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal memory"
                                }
                              },
                              "id": 12042,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11653,
                              "src": "10177:14:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10167:25:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11692_storage",
                              "typeString": "struct GovernorAlpha.Proposal storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12044,
                            "name": "newProposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12001,
                            "src": "10195:11:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11692_memory_ptr",
                              "typeString": "struct GovernorAlpha.Proposal memory"
                            }
                          },
                          "src": "10167:39:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11692_storage",
                            "typeString": "struct GovernorAlpha.Proposal storage ref"
                          }
                        },
                        "id": 12046,
                        "nodeType": "ExpressionStatement",
                        "src": "10167:39:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12047,
                              "name": "latestProposalIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11716,
                              "src": "10210:17:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 12050,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12048,
                                "name": "newProposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12001,
                                "src": "10228:11:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_memory_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal memory"
                                }
                              },
                              "id": 12049,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "proposer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11675,
                              "src": "10228:20:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10210:39:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12051,
                              "name": "newProposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12001,
                              "src": "10252:11:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_memory_ptr",
                                "typeString": "struct GovernorAlpha.Proposal memory"
                              }
                            },
                            "id": 12052,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11653,
                            "src": "10252:14:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10210:56:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12054,
                        "nodeType": "ExpressionStatement",
                        "src": "10210:56:51"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12056,
                                "name": "newProposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12001,
                                "src": "10292:11:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_memory_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal memory"
                                }
                              },
                              "id": 12057,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11653,
                              "src": "10292:14:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12058,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "10308:3:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12059,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10308:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12060,
                              "name": "targets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11869,
                              "src": "10320:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12061,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11872,
                              "src": "10329:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12062,
                              "name": "signatures",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11875,
                              "src": "10337:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12063,
                              "name": "calldatas",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11878,
                              "src": "10349:9:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12064,
                              "name": "startBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11981,
                              "src": "10360:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12065,
                              "name": "endBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11990,
                              "src": "10372:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12066,
                              "name": "description",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11880,
                              "src": "10382:11:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 12055,
                            "name": "ProposalCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11750,
                            "src": "10276:15:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_string_memory_$dyn_memory_ptr_$_t_array$_t_bytes_memory_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (uint256,address,address[] memory,uint256[] memory,string memory[] memory,bytes memory[] memory,uint256,uint256,string memory)"
                            }
                          },
                          "id": 12067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10276:118:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12068,
                        "nodeType": "EmitStatement",
                        "src": "10271:123:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12069,
                            "name": "newProposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12001,
                            "src": "10405:11:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11692_memory_ptr",
                              "typeString": "struct GovernorAlpha.Proposal memory"
                            }
                          },
                          "id": 12070,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "id",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11653,
                          "src": "10405:14:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11884,
                        "id": 12071,
                        "nodeType": "Return",
                        "src": "10398:21:51"
                      }
                    ]
                  },
                  "documentation": "@notice Create a new proposal.\n@param targets Array of contract addresses to perform proposal execution.\n@param values Array of rBTC amounts to send on proposal execution.\n@param signatures Array of function signatures to call on proposal execution.\n@param calldatas Array of payloads for the calls on proposal execution.\n@param description Text describing the purpose of the proposal.\n",
                  "id": 12073,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "propose",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11869,
                        "name": "targets",
                        "nodeType": "VariableDeclaration",
                        "scope": 12073,
                        "src": "7480:24:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11867,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7480:7:51",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 11868,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7480:9:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11872,
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 12073,
                        "src": "7508:23:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11870,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7508:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11871,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7508:9:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11875,
                        "name": "signatures",
                        "nodeType": "VariableDeclaration",
                        "scope": 12073,
                        "src": "7535:26:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11873,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "7535:6:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 11874,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7535:8:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11878,
                        "name": "calldatas",
                        "nodeType": "VariableDeclaration",
                        "scope": 12073,
                        "src": "7565:24:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11876,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "7565:5:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 11877,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7565:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11880,
                        "name": "description",
                        "nodeType": "VariableDeclaration",
                        "scope": 12073,
                        "src": "7593:25:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11879,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7593:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7476:145:51"
                  },
                  "returnParameters": {
                    "id": 11884,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11883,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12073,
                        "src": "7638:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11882,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7638:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7637:9:51"
                  },
                  "scope": 12881,
                  "src": "7460:2963:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12152,
                    "nodeType": "Block",
                    "src": "10620:528:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$11708",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              },
                              "id": 12084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12080,
                                    "name": "proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12075,
                                    "src": "10638:10:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12079,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12822,
                                  "src": "10632:5:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "function (uint256) view returns (enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10632:17:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12082,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11708,
                                  "src": "10653:13:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "type(enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12083,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Succeeded",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10653:23:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "src": "10632:44:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c2063616e206f6e6c792062652071756575656420696620697420697320737563636565646564",
                              "id": 12085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10678:70:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1d9165de7b961db8df575169dadfdce4206cbf37571a45b735e6bcfda22b83b1",
                                "typeString": "literal_string \"GovernorAlpha::queue: proposal can only be queued if it is succeeded\""
                              },
                              "value": "GovernorAlpha::queue: proposal can only be queued if it is succeeded"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1d9165de7b961db8df575169dadfdce4206cbf37571a45b735e6bcfda22b83b1",
                                "typeString": "literal_string \"GovernorAlpha::queue: proposal can only be queued if it is succeeded\""
                              }
                            ],
                            "id": 12078,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10624:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10624:125:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12087,
                        "nodeType": "ExpressionStatement",
                        "src": "10624:125:51"
                      },
                      {
                        "assignments": [
                          12089
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12089,
                            "name": "proposal",
                            "nodeType": "VariableDeclaration",
                            "scope": 12152,
                            "src": "10753:25:51",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12088,
                              "name": "Proposal",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 11692,
                              "src": "10753:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12093,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12090,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11712,
                            "src": "10781:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$11692_storage_$",
                              "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                            }
                          },
                          "id": 12092,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12091,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12075,
                            "src": "10791:10:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10781:21:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11692_storage",
                            "typeString": "struct GovernorAlpha.Proposal storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10753:49:51"
                      },
                      {
                        "assignments": [
                          12095
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12095,
                            "name": "eta",
                            "nodeType": "VariableDeclaration",
                            "scope": 12152,
                            "src": "10806:11:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12094,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10806:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12103,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12097,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "10827:5:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 12098,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10827:15:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12099,
                                  "name": "timelock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11641,
                                  "src": "10844:8:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ITimelock_$17252",
                                    "typeString": "contract ITimelock"
                                  }
                                },
                                "id": 12100,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "delay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17193,
                                "src": "10844:14:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 12101,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10844:16:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12096,
                            "name": "add256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12847,
                            "src": "10820:6:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 12102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10820:41:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10806:55:51"
                      },
                      {
                        "body": {
                          "id": 12136,
                          "nodeType": "Block",
                          "src": "10920:117:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12117,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12089,
                                        "src": "10940:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12118,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "targets",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11678,
                                      "src": "10940:16:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                        "typeString": "address[] storage ref"
                                      }
                                    },
                                    "id": 12120,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12119,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12105,
                                      "src": "10957:1:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10940:19:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12121,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12089,
                                        "src": "10961:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12122,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "values",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11681,
                                      "src": "10961:15:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                        "typeString": "uint256[] storage ref"
                                      }
                                    },
                                    "id": 12124,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12123,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12105,
                                      "src": "10977:1:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10961:18:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12125,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12089,
                                        "src": "10981:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12126,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "signatures",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11684,
                                      "src": "10981:19:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                        "typeString": "string storage ref[] storage ref"
                                      }
                                    },
                                    "id": 12128,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12127,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12105,
                                      "src": "11001:1:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10981:22:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12129,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12089,
                                        "src": "11005:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12130,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "calldatas",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11687,
                                      "src": "11005:18:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
                                        "typeString": "bytes storage ref[] storage ref"
                                      }
                                    },
                                    "id": 12132,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12131,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12105,
                                      "src": "11024:1:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11005:21:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12133,
                                    "name": "eta",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12095,
                                    "src": "11028:3:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12116,
                                  "name": "_queueOrRevert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12195,
                                  "src": "10925:14:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,string memory,bytes memory,uint256)"
                                  }
                                },
                                "id": 12134,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10925:107:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12135,
                              "nodeType": "ExpressionStatement",
                              "src": "10925:107:51"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12108,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12105,
                            "src": "10886:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12109,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12089,
                                "src": "10890:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 12110,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "targets",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11678,
                              "src": "10890:16:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 12111,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10890:23:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10886:27:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12137,
                        "initializationExpression": {
                          "assignments": [
                            12105
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 12105,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 12137,
                              "src": "10871:9:51",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 12104,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10871:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 12107,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10883:1:51",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "10871:13:51"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 12114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "10915:3:51",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 12113,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12105,
                              "src": "10915:1:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12115,
                          "nodeType": "ExpressionStatement",
                          "src": "10915:3:51"
                        },
                        "nodeType": "ForStatement",
                        "src": "10866:171:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12138,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12089,
                              "src": "11040:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 12140,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "eta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11667,
                            "src": "11040:12:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12142,
                                "name": "eta",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12095,
                                "src": "11062:3:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "476f7665726e6f72416c7068613a3a71756575653a20455441206f766572666c6f77",
                                "id": 12143,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11067:36:51",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_5a0a469d59d68faac5717e6d81ec01b99e3af0b793b06983c31a1c7c530a807a",
                                  "typeString": "literal_string \"GovernorAlpha::queue: ETA overflow\""
                                },
                                "value": "GovernorAlpha::queue: ETA overflow"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_5a0a469d59d68faac5717e6d81ec01b99e3af0b793b06983c31a1c7c530a807a",
                                  "typeString": "literal_string \"GovernorAlpha::queue: ETA overflow\""
                                }
                              ],
                              "id": 12141,
                              "name": "safe64",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13822,
                              "src": "11055:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint64_$",
                                "typeString": "function (uint256,string memory) pure returns (uint64)"
                              }
                            },
                            "id": 12144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11055:49:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "11040:64:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 12146,
                        "nodeType": "ExpressionStatement",
                        "src": "11040:64:51"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12148,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12075,
                              "src": "11128:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12149,
                              "name": "eta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12095,
                              "src": "11140:3:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12147,
                            "name": "ProposalQueued",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11770,
                            "src": "11113:14:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 12150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11113:31:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12151,
                        "nodeType": "EmitStatement",
                        "src": "11108:36:51"
                      }
                    ]
                  },
                  "documentation": "@notice Enqueue a proposal and everyone of its calls.\n@param proposalId Proposal index to access the list proposals[] from storage.\n",
                  "id": 12153,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queue",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12076,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12075,
                        "name": "proposalId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12153,
                        "src": "10593:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12074,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10593:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10592:20:51"
                  },
                  "returnParameters": {
                    "id": 12077,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10620:0:51"
                  },
                  "scope": 12881,
                  "src": "10578:570:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12194,
                    "nodeType": "Block",
                    "src": "11788:253:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12180,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "11804:88:51",
                              "subExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 12172,
                                            "name": "target",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12155,
                                            "src": "11854:6:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 12173,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12157,
                                            "src": "11862:5:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 12174,
                                            "name": "signature",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12159,
                                            "src": "11869:9:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 12175,
                                            "name": "data",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12161,
                                            "src": "11880:4:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 12176,
                                            "name": "eta",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12163,
                                            "src": "11886:3:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 12170,
                                            "name": "abi",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44981,
                                            "src": "11843:3:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_abi",
                                              "typeString": "abi"
                                            }
                                          },
                                          "id": 12171,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "encode",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "11843:10:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                            "typeString": "function () pure returns (bytes memory)"
                                          }
                                        },
                                        "id": 12177,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11843:47:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 12169,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44988,
                                      "src": "11833:9:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 12178,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11833:58:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12167,
                                    "name": "timelock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11641,
                                    "src": "11805:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ITimelock_$17252",
                                      "typeString": "contract ITimelock"
                                    }
                                  },
                                  "id": 12168,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "queuedTransactions",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17208,
                                  "src": "11805:27:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                                    "typeString": "function (bytes32) view external returns (bool)"
                                  }
                                },
                                "id": 12179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11805:87:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a2070726f706f73616c20616374696f6e20616c72656164792071756575656420617420657461",
                              "id": 12181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11897:70:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9f2f7c3bae6cb2a10b5b2bdd0f8af6cd89782d3f0c1e0795e81a133975b25c86",
                                "typeString": "literal_string \"GovernorAlpha::_queueOrRevert: proposal action already queued at eta\""
                              },
                              "value": "GovernorAlpha::_queueOrRevert: proposal action already queued at eta"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9f2f7c3bae6cb2a10b5b2bdd0f8af6cd89782d3f0c1e0795e81a133975b25c86",
                                "typeString": "literal_string \"GovernorAlpha::_queueOrRevert: proposal action already queued at eta\""
                              }
                            ],
                            "id": 12166,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11792:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12182,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11792:179:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12183,
                        "nodeType": "ExpressionStatement",
                        "src": "11792:179:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12187,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12155,
                              "src": "12001:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12188,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12157,
                              "src": "12009:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12189,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12159,
                              "src": "12016:9:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12190,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12161,
                              "src": "12027:4:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12191,
                              "name": "eta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12163,
                              "src": "12033:3:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12184,
                              "name": "timelock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11641,
                              "src": "11975:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ITimelock_$17252",
                                "typeString": "contract ITimelock"
                              }
                            },
                            "id": 12186,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queueTransaction",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17223,
                            "src": "11975:25:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (address,uint256,string memory,bytes memory,uint256) external returns (bytes32)"
                            }
                          },
                          "id": 12192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11975:62:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 12193,
                        "nodeType": "ExpressionStatement",
                        "src": "11975:62:51"
                      }
                    ]
                  },
                  "documentation": "@notice Tries to enqueue a proposal, verifying it has not been previously queued.\n@param target Contract addresses to perform proposal execution.\n@param value rBTC amount to send on proposal execution.\n@param signature Function signature to call on proposal execution.\n@param data Payload for the call on proposal execution.\n@param eta Estimated Time of Accomplishment. The timestamp that the\nproposal will be available for execution, set once the vote succeeds.\n",
                  "id": 12195,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_queueOrRevert",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12164,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12155,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 12195,
                        "src": "11681:14:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12154,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11681:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12157,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 12195,
                        "src": "11699:13:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12156,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11699:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12159,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 12195,
                        "src": "11716:23:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12158,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11716:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12161,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 12195,
                        "src": "11743:17:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12160,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11743:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12163,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 12195,
                        "src": "11764:11:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12162,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11764:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11677:101:51"
                  },
                  "returnParameters": {
                    "id": 12165,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11788:0:51"
                  },
                  "scope": 12881,
                  "src": "11654:387:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12270,
                    "nodeType": "Block",
                    "src": "12270:497:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$11708",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              },
                              "id": 12206,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12202,
                                    "name": "proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12197,
                                    "src": "12288:10:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12201,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12822,
                                  "src": "12282:5:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "function (uint256) view returns (enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12203,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12282:17:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12204,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11708,
                                  "src": "12303:13:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "type(enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Queued",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12303:20:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "src": "12282:41:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c2063616e206f6e6c7920626520657865637574656420696620697420697320717565756564",
                              "id": 12207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12325:71:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1e6b39f7a3cdaa9f8cd196650711f6f6106ff22624580132558c7d2885a2b40c",
                                "typeString": "literal_string \"GovernorAlpha::execute: proposal can only be executed if it is queued\""
                              },
                              "value": "GovernorAlpha::execute: proposal can only be executed if it is queued"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1e6b39f7a3cdaa9f8cd196650711f6f6106ff22624580132558c7d2885a2b40c",
                                "typeString": "literal_string \"GovernorAlpha::execute: proposal can only be executed if it is queued\""
                              }
                            ],
                            "id": 12200,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "12274:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12274:123:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12209,
                        "nodeType": "ExpressionStatement",
                        "src": "12274:123:51"
                      },
                      {
                        "assignments": [
                          12211
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12211,
                            "name": "proposal",
                            "nodeType": "VariableDeclaration",
                            "scope": 12270,
                            "src": "12401:25:51",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12210,
                              "name": "Proposal",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 11692,
                              "src": "12401:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12215,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12212,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11712,
                            "src": "12429:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$11692_storage_$",
                              "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                            }
                          },
                          "id": 12214,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12213,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12197,
                            "src": "12439:10:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12429:21:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11692_storage",
                            "typeString": "struct GovernorAlpha.Proposal storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12401:49:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12216,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12211,
                              "src": "12454:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 12218,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "executed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11673,
                            "src": "12454:17:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 12219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12474:4:51",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "12454:24:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12221,
                        "nodeType": "ExpressionStatement",
                        "src": "12454:24:51"
                      },
                      {
                        "body": {
                          "id": 12264,
                          "nodeType": "Block",
                          "src": "12537:190:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12244,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12211,
                                        "src": "12601:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12245,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "targets",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11678,
                                      "src": "12601:16:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                        "typeString": "address[] storage ref"
                                      }
                                    },
                                    "id": 12247,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12246,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12223,
                                      "src": "12618:1:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12601:19:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12248,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12211,
                                        "src": "12626:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12249,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "values",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11681,
                                      "src": "12626:15:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                        "typeString": "uint256[] storage ref"
                                      }
                                    },
                                    "id": 12251,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12250,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12223,
                                      "src": "12642:1:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12626:18:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12252,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12211,
                                        "src": "12650:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12253,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "signatures",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11684,
                                      "src": "12650:19:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                        "typeString": "string storage ref[] storage ref"
                                      }
                                    },
                                    "id": 12255,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12254,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12223,
                                      "src": "12670:1:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12650:22:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12256,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12211,
                                        "src": "12678:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12257,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "calldatas",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11687,
                                      "src": "12678:18:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
                                        "typeString": "bytes storage ref[] storage ref"
                                      }
                                    },
                                    "id": 12259,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12258,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12223,
                                      "src": "12697:1:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12678:21:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12260,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12211,
                                      "src": "12705:8:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 12261,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "eta",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 11667,
                                    "src": "12705:12:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 12239,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12211,
                                          "src": "12576:8:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                            "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                          }
                                        },
                                        "id": 12240,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "values",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 11681,
                                        "src": "12576:15:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                          "typeString": "uint256[] storage ref"
                                        }
                                      },
                                      "id": 12242,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 12241,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12223,
                                        "src": "12592:1:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12576:18:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12234,
                                        "name": "timelock",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11641,
                                        "src": "12542:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ITimelock_$17252",
                                          "typeString": "contract ITimelock"
                                        }
                                      },
                                      "id": 12237,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "executeTransaction",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17251,
                                      "src": "12542:27:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (address,uint256,string memory,bytes memory,uint256) payable external returns (bytes memory)"
                                      }
                                    },
                                    "id": 12238,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "value",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12542:33:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$value_$",
                                      "typeString": "function (uint256) pure returns (function (address,uint256,string memory,bytes memory,uint256) payable external returns (bytes memory))"
                                    }
                                  },
                                  "id": 12243,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12542:53:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$value",
                                    "typeString": "function (address,uint256,string memory,bytes memory,uint256) payable external returns (bytes memory)"
                                  }
                                },
                                "id": 12262,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12542:180:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 12263,
                              "nodeType": "ExpressionStatement",
                              "src": "12542:180:51"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12226,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12223,
                            "src": "12503:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12227,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12211,
                                "src": "12507:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 12228,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "targets",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11678,
                              "src": "12507:16:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 12229,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12507:23:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12503:27:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12265,
                        "initializationExpression": {
                          "assignments": [
                            12223
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 12223,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 12265,
                              "src": "12488:9:51",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 12222,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "12488:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 12225,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12500:1:51",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "12488:13:51"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 12232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "12532:3:51",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 12231,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12223,
                              "src": "12532:1:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12233,
                          "nodeType": "ExpressionStatement",
                          "src": "12532:3:51"
                        },
                        "nodeType": "ForStatement",
                        "src": "12483:244:51"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12267,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12197,
                              "src": "12752:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12266,
                            "name": "ProposalExecuted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11774,
                            "src": "12735:16:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 12268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12735:28:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12269,
                        "nodeType": "EmitStatement",
                        "src": "12730:33:51"
                      }
                    ]
                  },
                  "documentation": "@notice Execute a proposal by looping and performing everyone of its calls.\n@param proposalId Proposal index to access the list proposals[] from storage.\n",
                  "id": 12271,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "execute",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12198,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12197,
                        "name": "proposalId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12271,
                        "src": "12235:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12196,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12235:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12234:20:51"
                  },
                  "returnParameters": {
                    "id": 12199,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12270:0:51"
                  },
                  "scope": 12881,
                  "src": "12218:549:51",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12351,
                    "nodeType": "Block",
                    "src": "12986:627:51",
                    "statements": [
                      {
                        "assignments": [
                          12277
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12277,
                            "name": "state",
                            "nodeType": "VariableDeclaration",
                            "scope": 12351,
                            "src": "12990:19:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$11708",
                              "typeString": "enum GovernorAlpha.ProposalState"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12276,
                              "name": "ProposalState",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 11708,
                              "src": "12990:13:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$11708",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12281,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12279,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12273,
                              "src": "13018:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12278,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12822,
                            "src": "13012:5:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$11708_$",
                              "typeString": "function (uint256) view returns (enum GovernorAlpha.ProposalState)"
                            }
                          },
                          "id": 12280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13012:17:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$11708",
                            "typeString": "enum GovernorAlpha.ProposalState"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12990:39:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$11708",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              },
                              "id": 12286,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 12283,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12277,
                                "src": "13041:5:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12284,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11708,
                                  "src": "13050:13:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "type(enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12285,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Executed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13050:22:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "src": "13041:31:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f742063616e63656c2065786563757465642070726f706f73616c",
                              "id": 12287,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13074:56:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e9d477897cfec9b3c036d388c3168bf4ff9f6d4c49c58b845fd31f77ad2af11d",
                                "typeString": "literal_string \"GovernorAlpha::cancel: cannot cancel executed proposal\""
                              },
                              "value": "GovernorAlpha::cancel: cannot cancel executed proposal"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e9d477897cfec9b3c036d388c3168bf4ff9f6d4c49c58b845fd31f77ad2af11d",
                                "typeString": "literal_string \"GovernorAlpha::cancel: cannot cancel executed proposal\""
                              }
                            ],
                            "id": 12282,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13033:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13033:98:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12289,
                        "nodeType": "ExpressionStatement",
                        "src": "13033:98:51"
                      },
                      {
                        "assignments": [
                          12291
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12291,
                            "name": "proposal",
                            "nodeType": "VariableDeclaration",
                            "scope": 12351,
                            "src": "13136:25:51",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12290,
                              "name": "Proposal",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 11692,
                              "src": "13136:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12295,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12292,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11712,
                            "src": "13164:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$11692_storage_$",
                              "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                            }
                          },
                          "id": 12294,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12293,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12273,
                            "src": "13174:10:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13164:21:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11692_storage",
                            "typeString": "struct GovernorAlpha.Proposal storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13136:49:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12300,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12297,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "13248:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 12298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13248:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 12299,
                                "name": "guardian",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11645,
                                "src": "13262:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "13248:22:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a63616e63656c3a2073656e6465722069736e2774206120677561726469616e",
                              "id": 12301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13272:48:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9de0f88dff6e34ccb4b510184aa1c8fb70f966d3e04790939f6e60ca1ec12122",
                                "typeString": "literal_string \"GovernorAlpha::cancel: sender isn't a guardian\""
                              },
                              "value": "GovernorAlpha::cancel: sender isn't a guardian"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9de0f88dff6e34ccb4b510184aa1c8fb70f966d3e04790939f6e60ca1ec12122",
                                "typeString": "literal_string \"GovernorAlpha::cancel: sender isn't a guardian\""
                              }
                            ],
                            "id": 12296,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13240:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13240:81:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12303,
                        "nodeType": "ExpressionStatement",
                        "src": "13240:81:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12304,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12291,
                              "src": "13326:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 12306,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "canceled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11671,
                            "src": "13326:17:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 12307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13346:4:51",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "13326:24:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12309,
                        "nodeType": "ExpressionStatement",
                        "src": "13326:24:51"
                      },
                      {
                        "body": {
                          "id": 12345,
                          "nodeType": "Block",
                          "src": "13409:163:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12325,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12291,
                                        "src": "13446:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12326,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "targets",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11678,
                                      "src": "13446:16:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                        "typeString": "address[] storage ref"
                                      }
                                    },
                                    "id": 12328,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12327,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12311,
                                      "src": "13463:1:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13446:19:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12329,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12291,
                                        "src": "13471:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12330,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "values",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11681,
                                      "src": "13471:15:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                        "typeString": "uint256[] storage ref"
                                      }
                                    },
                                    "id": 12332,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12331,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12311,
                                      "src": "13487:1:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13471:18:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12333,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12291,
                                        "src": "13495:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12334,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "signatures",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11684,
                                      "src": "13495:19:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                        "typeString": "string storage ref[] storage ref"
                                      }
                                    },
                                    "id": 12336,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12335,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12311,
                                      "src": "13515:1:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13495:22:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12337,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12291,
                                        "src": "13523:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12338,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "calldatas",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11687,
                                      "src": "13523:18:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
                                        "typeString": "bytes storage ref[] storage ref"
                                      }
                                    },
                                    "id": 12340,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12339,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12311,
                                      "src": "13542:1:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13523:21:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12341,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12291,
                                      "src": "13550:8:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                        "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                      }
                                    },
                                    "id": 12342,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "eta",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 11667,
                                    "src": "13550:12:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12322,
                                    "name": "timelock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11641,
                                    "src": "13414:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ITimelock_$17252",
                                      "typeString": "contract ITimelock"
                                    }
                                  },
                                  "id": 12324,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "cancelTransaction",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17236,
                                  "src": "13414:26:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,string memory,bytes memory,uint256) external"
                                  }
                                },
                                "id": 12343,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13414:153:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12344,
                              "nodeType": "ExpressionStatement",
                              "src": "13414:153:51"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12314,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12311,
                            "src": "13375:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12315,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12291,
                                "src": "13379:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 12316,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "targets",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11678,
                              "src": "13379:16:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 12317,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13379:23:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13375:27:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12346,
                        "initializationExpression": {
                          "assignments": [
                            12311
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 12311,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 12346,
                              "src": "13360:9:51",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 12310,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "13360:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 12313,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13372:1:51",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "13360:13:51"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 12320,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "13404:3:51",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 12319,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12311,
                              "src": "13404:1:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12321,
                          "nodeType": "ExpressionStatement",
                          "src": "13404:3:51"
                        },
                        "nodeType": "ForStatement",
                        "src": "13355:217:51"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12348,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12273,
                              "src": "13598:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12347,
                            "name": "ProposalCanceled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11764,
                            "src": "13581:16:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 12349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13581:28:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12350,
                        "nodeType": "EmitStatement",
                        "src": "13576:33:51"
                      }
                    ]
                  },
                  "documentation": "@notice Cancel a proposal by looping and cancelling everyone of its calls.\n@param proposalId Proposal index to access the list proposals[] from storage.\n",
                  "id": 12352,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "cancel",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12274,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12273,
                        "name": "proposalId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12352,
                        "src": "12959:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12272,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12959:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12958:20:51"
                  },
                  "returnParameters": {
                    "id": 12275,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12986:0:51"
                  },
                  "scope": 12881,
                  "src": "12943:670:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12385,
                    "nodeType": "Block",
                    "src": "14030:109:51",
                    "statements": [
                      {
                        "assignments": [
                          12370
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12370,
                            "name": "p",
                            "nodeType": "VariableDeclaration",
                            "scope": 12385,
                            "src": "14034:18:51",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12369,
                              "name": "Proposal",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 11692,
                              "src": "14034:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12374,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12371,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11712,
                            "src": "14055:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$11692_storage_$",
                              "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                            }
                          },
                          "id": 12373,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12372,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12354,
                            "src": "14065:10:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14055:21:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11692_storage",
                            "typeString": "struct GovernorAlpha.Proposal storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14034:42:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12375,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12370,
                                "src": "14088:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 12376,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "targets",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11678,
                              "src": "14088:9:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12377,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12370,
                                "src": "14099:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 12378,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11681,
                              "src": "14099:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12379,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12370,
                                "src": "14109:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 12380,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "signatures",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11684,
                              "src": "14109:12:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                "typeString": "string storage ref[] storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12381,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12370,
                                "src": "14123:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 12382,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "calldatas",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11687,
                              "src": "14123:11:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
                                "typeString": "bytes storage ref[] storage ref"
                              }
                            }
                          ],
                          "id": 12383,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14087:48:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_storage_$_t_array$_t_uint256_$dyn_storage_$_t_array$_t_string_storage_$dyn_storage_$_t_array$_t_bytes_storage_$dyn_storage_$",
                            "typeString": "tuple(address[] storage ref,uint256[] storage ref,string storage ref[] storage ref,bytes storage ref[] storage ref)"
                          }
                        },
                        "functionReturnParameters": 12368,
                        "id": 12384,
                        "nodeType": "Return",
                        "src": "14080:55:51"
                      }
                    ]
                  },
                  "documentation": "@notice Get a proposal list of its calls.\n@param proposalId Proposal index to access the list proposals[] from storage.\n@return Arrays of the 4 call parameters: targets, values, signatures, calldatas.\n",
                  "id": 12386,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getActions",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12354,
                        "name": "proposalId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12386,
                        "src": "13861:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12353,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13861:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13860:20:51"
                  },
                  "returnParameters": {
                    "id": 12368,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12358,
                        "name": "targets",
                        "nodeType": "VariableDeclaration",
                        "scope": 12386,
                        "src": "13912:24:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 12356,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "13912:7:51",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 12357,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "13912:9:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12361,
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 12386,
                        "src": "13941:23:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 12359,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "13941:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12360,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "13941:9:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12364,
                        "name": "signatures",
                        "nodeType": "VariableDeclaration",
                        "scope": 12386,
                        "src": "13969:26:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 12362,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "13969:6:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 12363,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "13969:8:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12367,
                        "name": "calldatas",
                        "nodeType": "VariableDeclaration",
                        "scope": 12386,
                        "src": "14000:24:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 12365,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "14000:5:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 12366,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "14000:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13907:121:51"
                  },
                  "scope": 12881,
                  "src": "13841:298:51",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12402,
                    "nodeType": "Block",
                    "src": "14472:52:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12395,
                                "name": "proposals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11712,
                                "src": "14483:9:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$11692_storage_$",
                                  "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                                }
                              },
                              "id": 12397,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 12396,
                                "name": "proposalId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12388,
                                "src": "14493:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14483:21:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage",
                                "typeString": "struct GovernorAlpha.Proposal storage ref"
                              }
                            },
                            "id": 12398,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "receipts",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11691,
                            "src": "14483:30:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$11699_storage_$",
                              "typeString": "mapping(address => struct GovernorAlpha.Receipt storage ref)"
                            }
                          },
                          "id": 12400,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12399,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12390,
                            "src": "14514:5:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14483:37:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Receipt_$11699_storage",
                            "typeString": "struct GovernorAlpha.Receipt storage ref"
                          }
                        },
                        "functionReturnParameters": 12394,
                        "id": 12401,
                        "nodeType": "Return",
                        "src": "14476:44:51"
                      }
                    ]
                  },
                  "documentation": "@notice Get a proposal receipt.\n@param proposalId Proposal index to access the list proposals[] from storage.\n@param voter A governance stakeholder with voting power.\n@return The voter receipt of the proposal.\n",
                  "id": 12403,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReceipt",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12391,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12388,
                        "name": "proposalId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12403,
                        "src": "14400:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14400:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12390,
                        "name": "voter",
                        "nodeType": "VariableDeclaration",
                        "scope": 12403,
                        "src": "14420:13:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12389,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14420:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14399:35:51"
                  },
                  "returnParameters": {
                    "id": 12394,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12393,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12403,
                        "src": "14456:14:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receipt_$11699_memory_ptr",
                          "typeString": "struct GovernorAlpha.Receipt"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 12392,
                          "name": "Receipt",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 11699,
                          "src": "14456:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Receipt_$11699_storage_ptr",
                            "typeString": "struct GovernorAlpha.Receipt"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14455:16:51"
                  },
                  "scope": 12881,
                  "src": "14380:144:51",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12417,
                    "nodeType": "Block",
                    "src": "14758:57:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12411,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "14779:3:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14779:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12413,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12405,
                              "src": "14791:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12414,
                              "name": "support",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12407,
                              "src": "14803:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 12410,
                            "name": "_castVote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12599,
                            "src": "14769:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bool)"
                            }
                          },
                          "id": 12415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14769:42:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "functionReturnParameters": 12409,
                        "id": 12416,
                        "nodeType": "Return",
                        "src": "14762:49:51"
                      }
                    ]
                  },
                  "documentation": "@notice Casts a vote by sender.\n@param proposalId Proposal index to access the list proposals[] from storage.\n@param support Vote value, yes or no.\n",
                  "id": 12418,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "castVote",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12408,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12405,
                        "name": "proposalId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12418,
                        "src": "14717:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12404,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14717:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12407,
                        "name": "support",
                        "nodeType": "VariableDeclaration",
                        "scope": 12418,
                        "src": "14737:12:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12406,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14737:4:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14716:34:51"
                  },
                  "returnParameters": {
                    "id": 12409,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14758:0:51"
                  },
                  "scope": 12881,
                  "src": "14699:116:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12495,
                    "nodeType": "Block",
                    "src": "16180:964:51",
                    "statements": [
                      {
                        "assignments": [
                          12432
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12432,
                            "name": "domainSeparator",
                            "nodeType": "VariableDeclaration",
                            "scope": 12495,
                            "src": "16488:23:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 12431,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "16488:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12449,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12436,
                                  "name": "DOMAIN_TYPEHASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11721,
                                  "src": "16535:15:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 12439,
                                          "name": "NAME",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11615,
                                          "src": "16568:4:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 12438,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "16562:5:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": "bytes"
                                      },
                                      "id": 12440,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16562:11:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 12437,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44988,
                                    "src": "16552:9:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 12441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16552:22:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 12442,
                                    "name": "getChainId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12880,
                                    "src": "16576:10:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                      "typeString": "function () pure returns (uint256)"
                                    }
                                  },
                                  "id": 12443,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16576:12:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12445,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45202,
                                      "src": "16598:4:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_GovernorAlpha_$12881",
                                        "typeString": "contract GovernorAlpha"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_GovernorAlpha_$12881",
                                        "typeString": "contract GovernorAlpha"
                                      }
                                    ],
                                    "id": 12444,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "16590:7:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 12446,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16590:13:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12434,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "16524:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 12435,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "16524:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 12447,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16524:80:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 12433,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "16514:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 12448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16514:91:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16488:117:51"
                      },
                      {
                        "assignments": [
                          12451
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12451,
                            "name": "structHash",
                            "nodeType": "VariableDeclaration",
                            "scope": 12495,
                            "src": "16696:18:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 12450,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "16696:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12460,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12455,
                                  "name": "BALLOT_TYPEHASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11726,
                                  "src": "16738:15:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12456,
                                  "name": "proposalId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12420,
                                  "src": "16755:10:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12457,
                                  "name": "support",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12422,
                                  "src": "16767:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12453,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "16727:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 12454,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "16727:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 12458,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16727:48:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 12452,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "16717:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 12459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16717:59:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16696:80:51"
                      },
                      {
                        "assignments": [
                          12462
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12462,
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "scope": 12495,
                            "src": "16781:14:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 12461,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "16781:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12471,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "1901",
                                  "id": 12466,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16825:10:51",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12467,
                                  "name": "domainSeparator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12432,
                                  "src": "16837:15:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12468,
                                  "name": "structHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12451,
                                  "src": "16854:10:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12464,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "16808:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 12465,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "16808:16:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 12469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16808:57:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 12463,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "16798:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 12470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16798:68:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16781:85:51"
                      },
                      {
                        "assignments": [
                          12473
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12473,
                            "name": "signatory",
                            "nodeType": "VariableDeclaration",
                            "scope": 12495,
                            "src": "16870:17:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12472,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16870:7:51",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12480,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12475,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12462,
                              "src": "16900:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12476,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12424,
                              "src": "16908:1:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12477,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12426,
                              "src": "16911:1:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12478,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12428,
                              "src": "16914:1:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 12474,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44986,
                            "src": "16890:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                            }
                          },
                          "id": 12479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16890:26:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16870:46:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12484,
                                  "name": "signatory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12473,
                                  "src": "17026:9:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12482,
                                  "name": "RSKAddrValidator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42700,
                                  "src": "16994:16:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_RSKAddrValidator_$42700_$",
                                    "typeString": "type(library RSKAddrValidator)"
                                  }
                                },
                                "id": 12483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "checkPKNotZero",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42674,
                                "src": "16994:31:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) pure returns (bool)"
                                }
                              },
                              "id": 12485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16994:42:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e76616c6964207369676e6174757265",
                              "id": 12486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17038:49:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c0985792d8cb800c80e50f8ecca736cc3e54b8c9588453e723506f4e50d429f9",
                                "typeString": "literal_string \"GovernorAlpha::castVoteBySig: invalid signature\""
                              },
                              "value": "GovernorAlpha::castVoteBySig: invalid signature"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c0985792d8cb800c80e50f8ecca736cc3e54b8c9588453e723506f4e50d429f9",
                                "typeString": "literal_string \"GovernorAlpha::castVoteBySig: invalid signature\""
                              }
                            ],
                            "id": 12481,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "16986:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16986:102:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12488,
                        "nodeType": "ExpressionStatement",
                        "src": "16986:102:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12490,
                              "name": "signatory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12473,
                              "src": "17109:9:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12491,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12420,
                              "src": "17120:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12492,
                              "name": "support",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12422,
                              "src": "17132:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 12489,
                            "name": "_castVote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12599,
                            "src": "17099:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bool)"
                            }
                          },
                          "id": 12493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17099:41:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "functionReturnParameters": 12430,
                        "id": 12494,
                        "nodeType": "Return",
                        "src": "17092:48:51"
                      }
                    ]
                  },
                  "documentation": "@notice Voting with EIP-712 Signatures.\n\t * Voting power can be delegated to any address, and then can be used to\nvote on proposals. A key benefit to users of by-signature functionality\nis that they can create a signed vote transaction for free, and have a\ntrusted third-party spend rBTC(or ETH) on gas fees and write it to the\nblockchain for them.\n\t * The third party in this scenario, submitting the SOV-holder’s signed\ntransaction holds a voting power that is for only a single proposal.\nThe signatory still holds the power to vote on their own behalf in\nthe proposal if the third party has not yet published the signed\ntransaction that was given to them.\n\t * @dev The signature needs to be broken up into 3 parameters, known as\nv, r and s:\nconst r = '0x' + sig.substring(2).substring(0, 64);\nconst s = '0x' + sig.substring(2).substring(64, 128);\nconst v = '0x' + sig.substring(2).substring(128, 130);\n\t * @param proposalId Proposal index to access the list proposals[] from storage.\n@param support Vote value, yes or no.\n@param v The recovery byte of the signature.\n@param r Half of the ECDSA signature pair.\n@param s Half of the ECDSA signature pair.\n",
                  "id": 12496,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "castVoteBySig",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12429,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12420,
                        "name": "proposalId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12496,
                        "src": "16098:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12419,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16098:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12422,
                        "name": "support",
                        "nodeType": "VariableDeclaration",
                        "scope": 12496,
                        "src": "16120:12:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12421,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16120:4:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12424,
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "scope": 12496,
                        "src": "16136:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 12423,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "16136:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12426,
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "scope": 12496,
                        "src": "16147:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12425,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "16147:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12428,
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "scope": 12496,
                        "src": "16160:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12427,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "16160:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16094:78:51"
                  },
                  "returnParameters": {
                    "id": 12430,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16180:0:51"
                  },
                  "scope": 12881,
                  "src": "16072:1072:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12598,
                    "nodeType": "Block",
                    "src": "17513:760:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$11708",
                                "typeString": "enum GovernorAlpha.ProposalState"
                              },
                              "id": 12511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12507,
                                    "name": "proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12500,
                                    "src": "17531:10:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12506,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12822,
                                  "src": "17525:5:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "function (uint256) view returns (enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17525:17:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12509,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11708,
                                  "src": "17546:13:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "type(enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12510,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Active",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "17546:20:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "src": "17525:41:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6720697320636c6f736564",
                              "id": 12512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17568:44:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eede0aeb04f75d58f89f0b84608a4108da079ec9b462189375bbf8fd7e8edbaa",
                                "typeString": "literal_string \"GovernorAlpha::_castVote: voting is closed\""
                              },
                              "value": "GovernorAlpha::_castVote: voting is closed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eede0aeb04f75d58f89f0b84608a4108da079ec9b462189375bbf8fd7e8edbaa",
                                "typeString": "literal_string \"GovernorAlpha::_castVote: voting is closed\""
                              }
                            ],
                            "id": 12505,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "17517:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17517:96:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12514,
                        "nodeType": "ExpressionStatement",
                        "src": "17517:96:51"
                      },
                      {
                        "assignments": [
                          12516
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12516,
                            "name": "proposal",
                            "nodeType": "VariableDeclaration",
                            "scope": 12598,
                            "src": "17617:25:51",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12515,
                              "name": "Proposal",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 11692,
                              "src": "17617:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12520,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12517,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11712,
                            "src": "17645:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$11692_storage_$",
                              "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                            }
                          },
                          "id": 12519,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12518,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12500,
                            "src": "17655:10:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17645:21:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11692_storage",
                            "typeString": "struct GovernorAlpha.Proposal storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17617:49:51"
                      },
                      {
                        "assignments": [
                          12522
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12522,
                            "name": "receipt",
                            "nodeType": "VariableDeclaration",
                            "scope": 12598,
                            "src": "17670:23:51",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receipt_$11699_storage_ptr",
                              "typeString": "struct GovernorAlpha.Receipt"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12521,
                              "name": "Receipt",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 11699,
                              "src": "17670:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$11699_storage_ptr",
                                "typeString": "struct GovernorAlpha.Receipt"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12527,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12523,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12516,
                              "src": "17696:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 12524,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "receipts",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11691,
                            "src": "17696:17:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$11699_storage_$",
                              "typeString": "mapping(address => struct GovernorAlpha.Receipt storage ref)"
                            }
                          },
                          "id": 12526,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12525,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12498,
                            "src": "17714:5:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17696:24:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Receipt_$11699_storage",
                            "typeString": "struct GovernorAlpha.Receipt storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17670:50:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 12532,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12529,
                                  "name": "receipt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12522,
                                  "src": "17732:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Receipt_$11699_storage_ptr",
                                    "typeString": "struct GovernorAlpha.Receipt storage pointer"
                                  }
                                },
                                "id": 12530,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "hasVoted",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11694,
                                "src": "17732:16:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 12531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17752:5:51",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "src": "17732:25:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74657220616c726561647920766f746564",
                              "id": 12533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17759:47:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5b6e843e3ab725378b7b68db9a8698ac55194c56a0430edac6725cbe558ee624",
                                "typeString": "literal_string \"GovernorAlpha::_castVote: voter already voted\""
                              },
                              "value": "GovernorAlpha::_castVote: voter already voted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5b6e843e3ab725378b7b68db9a8698ac55194c56a0430edac6725cbe558ee624",
                                "typeString": "literal_string \"GovernorAlpha::_castVote: voter already voted\""
                              }
                            ],
                            "id": 12528,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "17724:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17724:83:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12535,
                        "nodeType": "ExpressionStatement",
                        "src": "17724:83:51"
                      },
                      {
                        "assignments": [
                          12537
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12537,
                            "name": "votes",
                            "nodeType": "VariableDeclaration",
                            "scope": 12598,
                            "src": "17811:12:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 12536,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "17811:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12546,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12540,
                              "name": "voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12498,
                              "src": "17848:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12541,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12516,
                                "src": "17855:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 12542,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "startBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11655,
                              "src": "17855:19:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12543,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12516,
                                "src": "17876:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 12544,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "startTime",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11669,
                              "src": "17876:18:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12538,
                              "name": "staking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11643,
                              "src": "17826:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IStaking_$13773",
                                "typeString": "contract IStaking"
                              }
                            },
                            "id": 12539,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPriorVotes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13745,
                            "src": "17826:21:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (address,uint256,uint256) view external returns (uint96)"
                            }
                          },
                          "id": 12545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17826:69:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17811:84:51"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 12547,
                          "name": "support",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12502,
                          "src": "17904:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 12571,
                          "nodeType": "Block",
                          "src": "18023:112:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12560,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12516,
                                    "src": "18028:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                      "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                    }
                                  },
                                  "id": 12562,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "againstVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11661,
                                  "src": "18028:21:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12564,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12516,
                                        "src": "18058:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12565,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "againstVotes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11661,
                                      "src": "18058:21:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 12566,
                                      "name": "votes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12537,
                                      "src": "18081:5:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465206f766572666c6f77",
                                      "id": 12567,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18088:41:51",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_22a052b442b9fe41c499dfeb6af0736a1288ff9de6d9ece1d4ae1c4f4989dcbd",
                                        "typeString": "literal_string \"GovernorAlpha::_castVote: vote overflow\""
                                      },
                                      "value": "GovernorAlpha::_castVote: vote overflow"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_22a052b442b9fe41c499dfeb6af0736a1288ff9de6d9ece1d4ae1c4f4989dcbd",
                                        "typeString": "literal_string \"GovernorAlpha::_castVote: vote overflow\""
                                      }
                                    ],
                                    "id": 12563,
                                    "name": "add96",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13872,
                                    "src": "18052:5:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                      "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                    }
                                  },
                                  "id": 12568,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18052:78:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "18028:102:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 12570,
                              "nodeType": "ExpressionStatement",
                              "src": "18028:102:51"
                            }
                          ]
                        },
                        "id": 12572,
                        "nodeType": "IfStatement",
                        "src": "17900:235:51",
                        "trueBody": {
                          "id": 12559,
                          "nodeType": "Block",
                          "src": "17913:104:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12557,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12548,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12516,
                                    "src": "17918:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                      "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                    }
                                  },
                                  "id": 12550,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "forVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11659,
                                  "src": "17918:17:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12552,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12516,
                                        "src": "17944:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                          "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                        }
                                      },
                                      "id": 12553,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "forVotes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11659,
                                      "src": "17944:17:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 12554,
                                      "name": "votes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12537,
                                      "src": "17963:5:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465206f766572666c6f77",
                                      "id": 12555,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17970:41:51",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_22a052b442b9fe41c499dfeb6af0736a1288ff9de6d9ece1d4ae1c4f4989dcbd",
                                        "typeString": "literal_string \"GovernorAlpha::_castVote: vote overflow\""
                                      },
                                      "value": "GovernorAlpha::_castVote: vote overflow"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_22a052b442b9fe41c499dfeb6af0736a1288ff9de6d9ece1d4ae1c4f4989dcbd",
                                        "typeString": "literal_string \"GovernorAlpha::_castVote: vote overflow\""
                                      }
                                    ],
                                    "id": 12551,
                                    "name": "add96",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13872,
                                    "src": "17938:5:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                      "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                    }
                                  },
                                  "id": 12556,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17938:74:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "17918:94:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 12558,
                              "nodeType": "ExpressionStatement",
                              "src": "17918:94:51"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12573,
                              "name": "receipt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12522,
                              "src": "18139:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$11699_storage_ptr",
                                "typeString": "struct GovernorAlpha.Receipt storage pointer"
                              }
                            },
                            "id": 12575,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "hasVoted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11694,
                            "src": "18139:16:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 12576,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18158:4:51",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "18139:23:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12578,
                        "nodeType": "ExpressionStatement",
                        "src": "18139:23:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12579,
                              "name": "receipt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12522,
                              "src": "18166:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$11699_storage_ptr",
                                "typeString": "struct GovernorAlpha.Receipt storage pointer"
                              }
                            },
                            "id": 12581,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "support",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11696,
                            "src": "18166:15:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12582,
                            "name": "support",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12502,
                            "src": "18184:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "18166:25:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12584,
                        "nodeType": "ExpressionStatement",
                        "src": "18166:25:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12585,
                              "name": "receipt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12522,
                              "src": "18195:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$11699_storage_ptr",
                                "typeString": "struct GovernorAlpha.Receipt storage pointer"
                              }
                            },
                            "id": 12587,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "votes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11698,
                            "src": "18195:13:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12588,
                            "name": "votes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12537,
                            "src": "18211:5:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "18195:21:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 12590,
                        "nodeType": "ExpressionStatement",
                        "src": "18195:21:51"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12592,
                              "name": "voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12498,
                              "src": "18235:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12593,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12500,
                              "src": "18242:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12594,
                              "name": "support",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12502,
                              "src": "18254:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12595,
                              "name": "votes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12537,
                              "src": "18263:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 12591,
                            "name": "VoteCast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11760,
                            "src": "18226:8:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,bool,uint256)"
                            }
                          },
                          "id": 12596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18226:43:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12597,
                        "nodeType": "EmitStatement",
                        "src": "18221:48:51"
                      }
                    ]
                  },
                  "documentation": "@notice Cast a vote, adding it to the total counting.\n@param voter A governance stakeholder with voting power that is casting the vote.\n@param proposalId Proposal index to access the list proposals[] from storage.\n@param support Vote value, yes or no.\n",
                  "id": 12599,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_castVote",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12503,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12498,
                        "name": "voter",
                        "nodeType": "VariableDeclaration",
                        "scope": 12599,
                        "src": "17449:13:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12497,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17449:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12500,
                        "name": "proposalId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12599,
                        "src": "17466:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12499,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17466:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12502,
                        "name": "support",
                        "nodeType": "VariableDeclaration",
                        "scope": 12599,
                        "src": "17488:12:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12501,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17488:4:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17445:58:51"
                  },
                  "returnParameters": {
                    "id": 12504,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17513:0:51"
                  },
                  "scope": 12881,
                  "src": "17427:846:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12615,
                    "nodeType": "Block",
                    "src": "18352:126:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12603,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "18364:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 12604,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "18364:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 12605,
                                "name": "guardian",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11645,
                                "src": "18378:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "18364:22:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a2073656e646572206d75737420626520676f7620677561726469616e",
                              "id": 12607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18388:59:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_016a9c33adb814217df364e9cf73255610a85b9a37c739ee6a963286d80bad8d",
                                "typeString": "literal_string \"GovernorAlpha::__acceptAdmin: sender must be gov guardian\""
                              },
                              "value": "GovernorAlpha::__acceptAdmin: sender must be gov guardian"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_016a9c33adb814217df364e9cf73255610a85b9a37c739ee6a963286d80bad8d",
                                "typeString": "literal_string \"GovernorAlpha::__acceptAdmin: sender must be gov guardian\""
                              }
                            ],
                            "id": 12602,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "18356:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18356:92:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12609,
                        "nodeType": "ExpressionStatement",
                        "src": "18356:92:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12610,
                              "name": "timelock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11641,
                              "src": "18452:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ITimelock_$17252",
                                "typeString": "contract ITimelock"
                              }
                            },
                            "id": 12612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "acceptAdmin",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17201,
                            "src": "18452:20:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                              "typeString": "function () external"
                            }
                          },
                          "id": 12613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18452:22:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12614,
                        "nodeType": "ExpressionStatement",
                        "src": "18452:22:51"
                      }
                    ]
                  },
                  "documentation": "@dev Timelock wrapper w/ sender check.",
                  "id": 12616,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "__acceptAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12600,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18342:2:51"
                  },
                  "returnParameters": {
                    "id": 12601,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18352:0:51"
                  },
                  "scope": 12881,
                  "src": "18320:158:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12633,
                    "nodeType": "Block",
                    "src": "18554:122:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12620,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "18566:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 12621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "18566:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 12622,
                                "name": "guardian",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11645,
                                "src": "18580:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "18566:22:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e646572206d75737420626520676f7620677561726469616e",
                              "id": 12624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18590:56:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f49e8b1dd028b5b562eda6ed4c810daf6cab5676cccf064826e3309bfa24f25f",
                                "typeString": "literal_string \"GovernorAlpha::__abdicate: sender must be gov guardian\""
                              },
                              "value": "GovernorAlpha::__abdicate: sender must be gov guardian"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f49e8b1dd028b5b562eda6ed4c810daf6cab5676cccf064826e3309bfa24f25f",
                                "typeString": "literal_string \"GovernorAlpha::__abdicate: sender must be gov guardian\""
                              }
                            ],
                            "id": 12619,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "18558:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18558:89:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12626,
                        "nodeType": "ExpressionStatement",
                        "src": "18558:89:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12627,
                            "name": "guardian",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11645,
                            "src": "18651:8:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 12629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18670:1:51",
                                "subdenomination": null,
                                "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": 12628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18662:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 12630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18662:10:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "18651:21:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 12632,
                        "nodeType": "ExpressionStatement",
                        "src": "18651:21:51"
                      }
                    ]
                  },
                  "documentation": "@notice Sets guardian address to zero.",
                  "id": 12634,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "__abdicate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12617,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18544:2:51"
                  },
                  "returnParameters": {
                    "id": 12618,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18554:0:51"
                  },
                  "scope": 12881,
                  "src": "18525:151:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12664,
                    "nodeType": "Block",
                    "src": "18808:230:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12645,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12642,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "18820:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 12643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "18820:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 12644,
                                "name": "guardian",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11645,
                                "src": "18834:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "18820:22:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f636b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f7620677561726469616e",
                              "id": 12646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18844:76:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_71f6b53ee5a3d54940ff41e9a266ac547055c56b1388a7e8abdebb7afb4a7b7e",
                                "typeString": "literal_string \"GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian\""
                              },
                              "value": "GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_71f6b53ee5a3d54940ff41e9a266ac547055c56b1388a7e8abdebb7afb4a7b7e",
                                "typeString": "literal_string \"GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian\""
                              }
                            ],
                            "id": 12641,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "18812:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18812:109:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12648,
                        "nodeType": "ExpressionStatement",
                        "src": "18812:109:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12653,
                                  "name": "timelock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11641,
                                  "src": "18959:8:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ITimelock_$17252",
                                    "typeString": "contract ITimelock"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ITimelock_$17252",
                                    "typeString": "contract ITimelock"
                                  }
                                ],
                                "id": 12652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "18951:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 12654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18951:17:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18970:1:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "73657450656e64696e6741646d696e286164647265737329",
                              "id": 12656,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18973:26:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4dd18bf55ce7f29dcfaf98cdd1107659d19d0be3b61dbef73e05ac221f0e8e28",
                                "typeString": "literal_string \"setPendingAdmin(address)\""
                              },
                              "value": "setPendingAdmin(address)"
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12659,
                                  "name": "newPendingAdmin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12636,
                                  "src": "19012:15:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12657,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "19001:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 12658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "19001:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 12660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19001:27:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12661,
                              "name": "eta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12638,
                              "src": "19030:3:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4dd18bf55ce7f29dcfaf98cdd1107659d19d0be3b61dbef73e05ac221f0e8e28",
                                "typeString": "literal_string \"setPendingAdmin(address)\""
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12649,
                              "name": "timelock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11641,
                              "src": "18925:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ITimelock_$17252",
                                "typeString": "contract ITimelock"
                              }
                            },
                            "id": 12651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queueTransaction",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17223,
                            "src": "18925:25:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (address,uint256,string memory,bytes memory,uint256) external returns (bytes32)"
                            }
                          },
                          "id": 12662,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18925:109:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 12663,
                        "nodeType": "ExpressionStatement",
                        "src": "18925:109:51"
                      }
                    ]
                  },
                  "documentation": "@dev Timelock wrapper w/ sender check.",
                  "id": 12665,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "__queueSetTimelockPendingAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12636,
                        "name": "newPendingAdmin",
                        "nodeType": "VariableDeclaration",
                        "scope": 12665,
                        "src": "18763:23:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12635,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18763:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12638,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 12665,
                        "src": "18788:11:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12637,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18788:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18762:38:51"
                  },
                  "returnParameters": {
                    "id": 12640,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18808:0:51"
                  },
                  "scope": 12881,
                  "src": "18723:315:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12695,
                    "nodeType": "Block",
                    "src": "19172:234:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12676,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12673,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "19184:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 12674,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "19184:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 12675,
                                "name": "guardian",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11645,
                                "src": "19198:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "19184:22:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c6f636b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f7620677561726469616e",
                              "id": 12677,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19208:78:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3875e14bb9041148a3cf495f55cd1888ac6ea09fddd60712f1ffe3da9b3d0cbf",
                                "typeString": "literal_string \"GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian\""
                              },
                              "value": "GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3875e14bb9041148a3cf495f55cd1888ac6ea09fddd60712f1ffe3da9b3d0cbf",
                                "typeString": "literal_string \"GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian\""
                              }
                            ],
                            "id": 12672,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "19176:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12678,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19176:111:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12679,
                        "nodeType": "ExpressionStatement",
                        "src": "19176:111:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12684,
                                  "name": "timelock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11641,
                                  "src": "19327:8:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ITimelock_$17252",
                                    "typeString": "contract ITimelock"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ITimelock_$17252",
                                    "typeString": "contract ITimelock"
                                  }
                                ],
                                "id": 12683,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "19319:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 12685,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19319:17:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12686,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19338:1:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "73657450656e64696e6741646d696e286164647265737329",
                              "id": 12687,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19341:26:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4dd18bf55ce7f29dcfaf98cdd1107659d19d0be3b61dbef73e05ac221f0e8e28",
                                "typeString": "literal_string \"setPendingAdmin(address)\""
                              },
                              "value": "setPendingAdmin(address)"
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12690,
                                  "name": "newPendingAdmin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12667,
                                  "src": "19380:15:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12688,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "19369:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 12689,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "19369:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 12691,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19369:27:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12692,
                              "name": "eta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12669,
                              "src": "19398:3:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4dd18bf55ce7f29dcfaf98cdd1107659d19d0be3b61dbef73e05ac221f0e8e28",
                                "typeString": "literal_string \"setPendingAdmin(address)\""
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12680,
                              "name": "timelock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11641,
                              "src": "19291:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ITimelock_$17252",
                                "typeString": "contract ITimelock"
                              }
                            },
                            "id": 12682,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "executeTransaction",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17251,
                            "src": "19291:27:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,uint256,string memory,bytes memory,uint256) payable external returns (bytes memory)"
                            }
                          },
                          "id": 12693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19291:111:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 12694,
                        "nodeType": "ExpressionStatement",
                        "src": "19291:111:51"
                      }
                    ]
                  },
                  "documentation": "@dev Timelock wrapper w/ sender check.",
                  "id": 12696,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "__executeSetTimelockPendingAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12670,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12667,
                        "name": "newPendingAdmin",
                        "nodeType": "VariableDeclaration",
                        "scope": 12696,
                        "src": "19127:23:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12666,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19127:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12669,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 12696,
                        "src": "19152:11:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12668,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19152:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19126:38:51"
                  },
                  "returnParameters": {
                    "id": 12671,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19172:0:51"
                  },
                  "scope": 12881,
                  "src": "19085:321:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12821,
                    "nodeType": "Block",
                    "src": "19718:1206:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 12710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12706,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 12704,
                                  "name": "proposalCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11647,
                                  "src": "19730:13:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 12705,
                                  "name": "proposalId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12698,
                                  "src": "19747:10:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19730:27:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12709,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 12707,
                                  "name": "proposalId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12698,
                                  "src": "19761:10:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 12708,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19774:1:51",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "19761:14:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "19730:45:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a73746174653a20696e76616c69642070726f706f73616c206964",
                              "id": 12711,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19777:43:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4e13bf7de4ba5f0690868b0ce8fbbb5874a1007783c383619a200c32a346f517",
                                "typeString": "literal_string \"GovernorAlpha::state: invalid proposal id\""
                              },
                              "value": "GovernorAlpha::state: invalid proposal id"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4e13bf7de4ba5f0690868b0ce8fbbb5874a1007783c383619a200c32a346f517",
                                "typeString": "literal_string \"GovernorAlpha::state: invalid proposal id\""
                              }
                            ],
                            "id": 12703,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "19722:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19722:99:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12713,
                        "nodeType": "ExpressionStatement",
                        "src": "19722:99:51"
                      },
                      {
                        "assignments": [
                          12715
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12715,
                            "name": "proposal",
                            "nodeType": "VariableDeclaration",
                            "scope": 12821,
                            "src": "19825:25:51",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12714,
                              "name": "Proposal",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 11692,
                              "src": "19825:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12719,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12716,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11712,
                            "src": "19853:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$11692_storage_$",
                              "typeString": "mapping(uint256 => struct GovernorAlpha.Proposal storage ref)"
                            }
                          },
                          "id": 12718,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12717,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12698,
                            "src": "19863:10:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "19853:21:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11692_storage",
                            "typeString": "struct GovernorAlpha.Proposal storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19825:49:51"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12720,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12715,
                            "src": "19883:8:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal storage pointer"
                            }
                          },
                          "id": 12721,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "canceled",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11671,
                          "src": "19883:17:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12726,
                        "nodeType": "IfStatement",
                        "src": "19879:62:51",
                        "trueBody": {
                          "id": 12725,
                          "nodeType": "Block",
                          "src": "19902:39:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12722,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11708,
                                  "src": "19914:13:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "type(enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Canceled",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "19914:22:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "functionReturnParameters": 12702,
                              "id": 12724,
                              "nodeType": "Return",
                              "src": "19907:29:51"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12727,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44984,
                              "src": "19949:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 12728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "19949:12:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12729,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12715,
                              "src": "19965:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 12730,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "startBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11655,
                            "src": "19965:19:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "19949:35:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12736,
                        "nodeType": "IfStatement",
                        "src": "19945:79:51",
                        "trueBody": {
                          "id": 12735,
                          "nodeType": "Block",
                          "src": "19986:38:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12732,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11708,
                                  "src": "19998:13:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "type(enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12733,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Pending",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "19998:21:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "functionReturnParameters": 12702,
                              "id": 12734,
                              "nodeType": "Return",
                              "src": "19991:28:51"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12737,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44984,
                              "src": "20032:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 12738,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "20032:12:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12739,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12715,
                              "src": "20048:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 12740,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "endBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11657,
                            "src": "20048:17:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "20032:33:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12746,
                        "nodeType": "IfStatement",
                        "src": "20028:76:51",
                        "trueBody": {
                          "id": 12745,
                          "nodeType": "Block",
                          "src": "20067:37:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12742,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11708,
                                  "src": "20079:13:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "type(enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Active",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "20079:20:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "functionReturnParameters": 12702,
                              "id": 12744,
                              "nodeType": "Return",
                              "src": "20072:27:51"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          12748
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12748,
                            "name": "totalVotes",
                            "nodeType": "VariableDeclaration",
                            "scope": 12821,
                            "src": "20108:17:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 12747,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "20108:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12756,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12750,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12715,
                                "src": "20134:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 12751,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "forVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11659,
                              "src": "20134:17:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12752,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12715,
                                "src": "20153:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 12753,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "againstVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11661,
                              "src": "20153:21:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a2073746174653a20666f72566f746573202b20616761696e7374566f746573203e2075696e743936",
                              "id": 12754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20176:57:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_64e9a9d5d330a08275815c8b510af88eef33014076bf26ec603affb88ca2ee66",
                                "typeString": "literal_string \"GovernorAlpha:: state: forVotes + againstVotes > uint96\""
                              },
                              "value": "GovernorAlpha:: state: forVotes + againstVotes > uint96"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_64e9a9d5d330a08275815c8b510af88eef33014076bf26ec603affb88ca2ee66",
                                "typeString": "literal_string \"GovernorAlpha:: state: forVotes + againstVotes > uint96\""
                              }
                            ],
                            "id": 12749,
                            "name": "add96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13872,
                            "src": "20128:5:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                              "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                            }
                          },
                          "id": 12755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20128:106:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20108:126:51"
                      },
                      {
                        "assignments": [
                          12758
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12758,
                            "name": "totalVotesMajorityPercentage",
                            "nodeType": "VariableDeclaration",
                            "scope": 12821,
                            "src": "20238:35:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 12757,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "20238:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12764,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12760,
                              "name": "totalVotes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12748,
                              "src": "20282:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "313030",
                              "id": 12761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20294:3:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100_by_1",
                                "typeString": "int_const 100"
                              },
                              "value": "100"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "476f7665726e6f72416c7068613a3a2073746174653a206469766973696f6e206572726f72",
                              "id": 12762,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20299:39:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b1114a25822a19069f856b26c02552e7770cbe7d7059f16e7248277a779d70ce",
                                "typeString": "literal_string \"GovernorAlpha:: state: division error\""
                              },
                              "value": "GovernorAlpha:: state: division error"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_rational_100_by_1",
                                "typeString": "int_const 100"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b1114a25822a19069f856b26c02552e7770cbe7d7059f16e7248277a779d70ce",
                                "typeString": "literal_string \"GovernorAlpha:: state: division error\""
                              }
                            ],
                            "id": 12759,
                            "name": "div96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13958,
                            "src": "20276:5:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                              "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                            }
                          },
                          "id": 12763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20276:63:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20238:101:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12771,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12765,
                            "name": "totalVotesMajorityPercentage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12758,
                            "src": "20343:28:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12767,
                                "name": "totalVotesMajorityPercentage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12758,
                                "src": "20384:28:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 12768,
                                "name": "majorityPercentageVotes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11651,
                                "src": "20417:23:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "476f7665726e6f72416c7068613a3a2073746174653a20746f74616c566f746573202a206d616a6f7269747950657263656e74616765203e2075696e743936",
                                "id": 12769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20445:65:51",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_12dbf0187692c48f451706ea30f8319baeb7b0a72d68310ce8bf73e988eb36d3",
                                  "typeString": "literal_string \"GovernorAlpha:: state: totalVotes * majorityPercentage > uint96\""
                                },
                                "value": "GovernorAlpha:: state: totalVotes * majorityPercentage > uint96"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_12dbf0187692c48f451706ea30f8319baeb7b0a72d68310ce8bf73e988eb36d3",
                                  "typeString": "literal_string \"GovernorAlpha:: state: totalVotes * majorityPercentage > uint96\""
                                }
                              ],
                              "id": 12766,
                              "name": "mul96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13931,
                              "src": "20374:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                              }
                            },
                            "id": 12770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20374:140:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "20343:171:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 12772,
                        "nodeType": "ExpressionStatement",
                        "src": "20343:171:51"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 12781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 12776,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12773,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12715,
                                "src": "20522:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 12774,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "forVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11659,
                              "src": "20522:17:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 12775,
                              "name": "totalVotesMajorityPercentage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12758,
                              "src": "20543:28:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "src": "20522:49:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 12780,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 12777,
                              "name": "totalVotes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12748,
                              "src": "20575:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12778,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12715,
                                "src": "20588:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                  "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                }
                              },
                              "id": 12779,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "quorum",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11663,
                              "src": "20588:15:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "src": "20575:28:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "20522:81:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12786,
                        "nodeType": "IfStatement",
                        "src": "20518:126:51",
                        "trueBody": {
                          "id": 12785,
                          "nodeType": "Block",
                          "src": "20605:39:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12782,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11708,
                                  "src": "20617:13:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "type(enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Defeated",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "20617:22:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "functionReturnParameters": 12702,
                              "id": 12784,
                              "nodeType": "Return",
                              "src": "20610:29:51"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 12790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12787,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12715,
                              "src": "20652:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                "typeString": "struct GovernorAlpha.Proposal storage pointer"
                              }
                            },
                            "id": 12788,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "eta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11667,
                            "src": "20652:12:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12789,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20668:1:51",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20652:17:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12795,
                        "nodeType": "IfStatement",
                        "src": "20648:63:51",
                        "trueBody": {
                          "id": 12794,
                          "nodeType": "Block",
                          "src": "20671:40:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12791,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11708,
                                  "src": "20683:13:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "type(enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Succeeded",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "20683:23:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "functionReturnParameters": 12702,
                              "id": 12793,
                              "nodeType": "Return",
                              "src": "20676:30:51"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12796,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12715,
                            "src": "20719:8:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                              "typeString": "struct GovernorAlpha.Proposal storage pointer"
                            }
                          },
                          "id": 12797,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "executed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11673,
                          "src": "20719:17:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12802,
                        "nodeType": "IfStatement",
                        "src": "20715:62:51",
                        "trueBody": {
                          "id": 12801,
                          "nodeType": "Block",
                          "src": "20738:39:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12798,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11708,
                                  "src": "20750:13:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "type(enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Executed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "20750:22:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "functionReturnParameters": 12702,
                              "id": 12800,
                              "nodeType": "Return",
                              "src": "20743:29:51"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12803,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44984,
                              "src": "20785:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 12804,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "20785:15:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12806,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12715,
                                  "src": "20811:8:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$11692_storage_ptr",
                                    "typeString": "struct GovernorAlpha.Proposal storage pointer"
                                  }
                                },
                                "id": 12807,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "eta",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11667,
                                "src": "20811:12:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12808,
                                    "name": "timelock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11641,
                                    "src": "20825:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ITimelock_$17252",
                                      "typeString": "contract ITimelock"
                                    }
                                  },
                                  "id": 12809,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "GRACE_PERIOD",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17198,
                                  "src": "20825:21:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view external returns (uint256)"
                                  }
                                },
                                "id": 12810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20825:23:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 12805,
                              "name": "add256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12847,
                              "src": "20804:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 12811,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20804:45:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20785:64:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12817,
                        "nodeType": "IfStatement",
                        "src": "20781:108:51",
                        "trueBody": {
                          "id": 12816,
                          "nodeType": "Block",
                          "src": "20851:38:51",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12813,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11708,
                                  "src": "20863:13:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                                    "typeString": "type(enum GovernorAlpha.ProposalState)"
                                  }
                                },
                                "id": 12814,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Expired",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "20863:21:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$11708",
                                  "typeString": "enum GovernorAlpha.ProposalState"
                                }
                              },
                              "functionReturnParameters": 12702,
                              "id": 12815,
                              "nodeType": "Return",
                              "src": "20856:28:51"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12818,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11708,
                            "src": "20900:13:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$11708_$",
                              "typeString": "type(enum GovernorAlpha.ProposalState)"
                            }
                          },
                          "id": 12819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Queued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "20900:20:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$11708",
                            "typeString": "enum GovernorAlpha.ProposalState"
                          }
                        },
                        "functionReturnParameters": 12702,
                        "id": 12820,
                        "nodeType": "Return",
                        "src": "20893:27:51"
                      }
                    ]
                  },
                  "documentation": "@notice Get a proposal state.\n@param proposalId Proposal index to access the list proposals[] from storage.\n@return The state of the proposal: Canceled, Pending, Active, Defeated,\nSucceeded, Executed, Expired.\n",
                  "id": 12822,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "state",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12699,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12698,
                        "name": "proposalId",
                        "nodeType": "VariableDeclaration",
                        "scope": 12822,
                        "src": "19662:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12697,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19662:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19661:20:51"
                  },
                  "returnParameters": {
                    "id": 12702,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12701,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12822,
                        "src": "19703:13:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ProposalState_$11708",
                          "typeString": "enum GovernorAlpha.ProposalState"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 12700,
                          "name": "ProposalState",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 11708,
                          "src": "19703:13:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$11708",
                            "typeString": "enum GovernorAlpha.ProposalState"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19702:15:51"
                  },
                  "scope": 12881,
                  "src": "19647:1277:51",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12846,
                    "nodeType": "Block",
                    "src": "21059:77:51",
                    "statements": [
                      {
                        "assignments": [
                          12832
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12832,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 12846,
                            "src": "21063:9:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12831,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21063:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12836,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12833,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12824,
                            "src": "21075:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12834,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12826,
                            "src": "21079:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21075:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21063:17:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 12838,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12832,
                                "src": "21092:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 12839,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12824,
                                "src": "21097:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "21092:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6164646974696f6e206f766572666c6f77",
                              "id": 12841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21100:19:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8c0d96e929759368d857f737222dcb6a5217a09dbc29c3e61addc531fdea00f5",
                                "typeString": "literal_string \"addition overflow\""
                              },
                              "value": "addition overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8c0d96e929759368d857f737222dcb6a5217a09dbc29c3e61addc531fdea00f5",
                                "typeString": "literal_string \"addition overflow\""
                              }
                            ],
                            "id": 12837,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "21084:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21084:36:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12843,
                        "nodeType": "ExpressionStatement",
                        "src": "21084:36:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12844,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12832,
                          "src": "21131:1:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 12830,
                        "id": 12845,
                        "nodeType": "Return",
                        "src": "21124:8:51"
                      }
                    ]
                  },
                  "documentation": "@dev TODO: use OpenZeppelin's SafeMath function instead.",
                  "id": 12847,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add256",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12827,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12824,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 12847,
                        "src": "21005:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12823,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21005:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12826,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 12847,
                        "src": "21016:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12825,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21016:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21004:22:51"
                  },
                  "returnParameters": {
                    "id": 12830,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12829,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12847,
                        "src": "21050:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12828,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21050:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21049:9:51"
                  },
                  "scope": 12881,
                  "src": "20989:147:51",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12867,
                    "nodeType": "Block",
                    "src": "21271:64:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 12857,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12851,
                                "src": "21283:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 12858,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12849,
                                "src": "21288:1:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "21283:6:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7375627472616374696f6e20756e646572666c6f77",
                              "id": 12860,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21291:23:51",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f22f6b3017af2aff30fb71d5e8f8adc6cd3022431e6fc88c01d6d8b2adb30f31",
                                "typeString": "literal_string \"subtraction underflow\""
                              },
                              "value": "subtraction underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f22f6b3017af2aff30fb71d5e8f8adc6cd3022431e6fc88c01d6d8b2adb30f31",
                                "typeString": "literal_string \"subtraction underflow\""
                              }
                            ],
                            "id": 12856,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "21275:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21275:40:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12862,
                        "nodeType": "ExpressionStatement",
                        "src": "21275:40:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12863,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12849,
                            "src": "21326:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12864,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12851,
                            "src": "21330:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21326:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 12855,
                        "id": 12866,
                        "nodeType": "Return",
                        "src": "21319:12:51"
                      }
                    ]
                  },
                  "documentation": "@dev TODO: use OpenZeppelin's SafeMath function instead.",
                  "id": 12868,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub256",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12852,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12849,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 12868,
                        "src": "21217:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12848,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21217:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12851,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 12868,
                        "src": "21228:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12850,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21228:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21216:22:51"
                  },
                  "returnParameters": {
                    "id": 12855,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12854,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12868,
                        "src": "21262:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12853,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21262:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21261:9:51"
                  },
                  "scope": 12881,
                  "src": "21201:134:51",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12879,
                    "nodeType": "Block",
                    "src": "22012:82:51",
                    "statements": [
                      {
                        "assignments": [
                          12874
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12874,
                            "name": "chainId",
                            "nodeType": "VariableDeclaration",
                            "scope": 12879,
                            "src": "22016:15:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12873,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22016:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12875,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22016:15:51"
                      },
                      {
                        "externalReferences": [
                          {
                            "chainId": {
                              "declaration": 12874,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "22049:7:51",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 12876,
                        "nodeType": "InlineAssembly",
                        "operations": "{ chainId := chainid() }",
                        "src": "22035:38:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12877,
                          "name": "chainId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12874,
                          "src": "22083:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 12872,
                        "id": 12878,
                        "nodeType": "Return",
                        "src": "22076:14:51"
                      }
                    ]
                  },
                  "documentation": "@notice Retrieve CHAIN_ID of the executing chain.\n\t * Chain identifier (chainID) introduced in EIP-155 protects transaction\nincluded into one chain from being included into another chain.\nBasically, chain identifier is an integer number being used in the\nprocesses of signing transactions and verifying transaction signatures.\n\t * @dev As of version 0.5.12, Solidity includes an assembly function\nchainid() that provides access to the new CHAINID opcode.\n\t * TODO: chainId is included in block. So you can get chain id like\nblock timestamp or block number: block.chainid;\n",
                  "id": 12880,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getChainId",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12869,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21977:2:51"
                  },
                  "returnParameters": {
                    "id": 12872,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12871,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12880,
                        "src": "22003:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12870,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22003:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22002:9:51"
                  },
                  "scope": 12881,
                  "src": "21958:136:51",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 12967,
              "src": "1146:20950:51"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 12945,
              "linearizedBaseContracts": [
                12945
              ],
              "name": "TimelockInterface",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 12886,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "delay",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12882,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22161:2:51"
                  },
                  "returnParameters": {
                    "id": 12885,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12884,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12886,
                        "src": "22187:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12883,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22187:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22186:9:51"
                  },
                  "scope": 12945,
                  "src": "22147:49:51",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 12891,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "GRACE_PERIOD",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12887,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22220:2:51"
                  },
                  "returnParameters": {
                    "id": 12890,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12889,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12891,
                        "src": "22246:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12888,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22246:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22245:9:51"
                  },
                  "scope": 12945,
                  "src": "22199:56:51",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 12894,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "acceptAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12892,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22278:2:51"
                  },
                  "returnParameters": {
                    "id": 12893,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22289:0:51"
                  },
                  "scope": 12945,
                  "src": "22258:32:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 12901,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queuedTransactions",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12897,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12896,
                        "name": "hash",
                        "nodeType": "VariableDeclaration",
                        "scope": 12901,
                        "src": "22321:12:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12895,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "22321:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22320:14:51"
                  },
                  "returnParameters": {
                    "id": 12900,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12899,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12901,
                        "src": "22358:4:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12898,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22358:4:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22357:6:51"
                  },
                  "scope": 12945,
                  "src": "22293:71:51",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 12916,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queueTransaction",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12912,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12903,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 12916,
                        "src": "22396:14:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12902,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22396:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12905,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 12916,
                        "src": "22414:13:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12904,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22414:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12907,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 12916,
                        "src": "22431:25:51",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12906,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "22431:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12909,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 12916,
                        "src": "22460:19:51",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12908,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "22460:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12911,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 12916,
                        "src": "22483:11:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12910,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22483:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22392:105:51"
                  },
                  "returnParameters": {
                    "id": 12915,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12914,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12916,
                        "src": "22516:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12913,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "22516:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22515:9:51"
                  },
                  "scope": 12945,
                  "src": "22367:158:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 12929,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "cancelTransaction",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12927,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12918,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 12929,
                        "src": "22558:14:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12917,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22558:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12920,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 12929,
                        "src": "22576:13:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12919,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22576:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12922,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 12929,
                        "src": "22593:25:51",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12921,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "22593:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12924,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 12929,
                        "src": "22622:19:51",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12923,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "22622:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12926,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 12929,
                        "src": "22645:11:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12925,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22645:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22554:105:51"
                  },
                  "returnParameters": {
                    "id": 12928,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22668:0:51"
                  },
                  "scope": 12945,
                  "src": "22528:141:51",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 12944,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeTransaction",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12940,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12931,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 12944,
                        "src": "22703:14:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12930,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22703:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12933,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 12944,
                        "src": "22721:13:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12932,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22721:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12935,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 12944,
                        "src": "22738:25:51",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 12934,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "22738:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12937,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 12944,
                        "src": "22767:19:51",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12936,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "22767:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12939,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 12944,
                        "src": "22790:11:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12938,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22790:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22699:105:51"
                  },
                  "returnParameters": {
                    "id": 12943,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12942,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12944,
                        "src": "22831:12:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12941,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "22831:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22830:14:51"
                  },
                  "scope": 12945,
                  "src": "22672:173:51",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 12967,
              "src": "22116:731:51"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 12966,
              "linearizedBaseContracts": [
                12966
              ],
              "name": "StakingInterface",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 12956,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriorVotes",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12952,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12947,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 12956,
                        "src": "22905:15:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12946,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22905:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12949,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 12956,
                        "src": "22924:19:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12948,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22924:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12951,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 12956,
                        "src": "22947:12:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12950,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22947:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22901:61:51"
                  },
                  "returnParameters": {
                    "id": 12955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12954,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12956,
                        "src": "22986:6:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 12953,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "22986:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22985:8:51"
                  },
                  "scope": 12966,
                  "src": "22879:115:51",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 12965,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriorTotalVotingPower",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12961,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12958,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 12965,
                        "src": "23031:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 12957,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "23031:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12960,
                        "name": "time",
                        "nodeType": "VariableDeclaration",
                        "scope": 12965,
                        "src": "23051:12:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12959,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23051:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23030:34:51"
                  },
                  "returnParameters": {
                    "id": 12964,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12963,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 12965,
                        "src": "23088:6:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 12962,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "23088:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23087:8:51"
                  },
                  "scope": 12966,
                  "src": "22997:99:51",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 12967,
              "src": "22849:249:51"
            }
          ],
          "src": "0:23099:51"
        },
        "id": 51
      },
      "contracts/governance/GovernorVault.sol": {
        "ast": {
          "absolutePath": "contracts/governance/GovernorVault.sol",
          "exportedSymbols": {
            "GovernorVault": [
              13088
            ]
          },
          "id": 13089,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12968,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:52"
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../openzeppelin/Ownable.sol",
              "id": 12969,
              "nodeType": "ImportDirective",
              "scope": 13089,
              "sourceUnit": 41799,
              "src": "26:37:52",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 12970,
              "nodeType": "ImportDirective",
              "scope": 13089,
              "sourceUnit": 24700,
              "src": "64:34:52",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 12971,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "267:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 12972,
                  "nodeType": "InheritanceSpecifier",
                  "src": "267:7:52"
                }
              ],
              "contractDependencies": [
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Governance Vault.\n@notice This contract stores tokens and rBTC only transfereble by owner,\ni.e. Sovryn governance.\n",
              "fullyImplemented": true,
              "id": 13088,
              "linearizedBaseContracts": [
                13088,
                41798,
                41125
              ],
              "name": "GovernorVault",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 12978,
                  "name": "Deposited",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12977,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12974,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 12978,
                        "src": "309:22:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12973,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "309:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12976,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 12978,
                        "src": "333:14:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12975,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "333:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "308:40:52"
                  },
                  "src": "293:56:52"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 12986,
                  "name": "TokensTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12980,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 12986,
                        "src": "375:24:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12979,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "375:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12982,
                        "indexed": true,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 12986,
                        "src": "401:21:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12981,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "401:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12984,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 12986,
                        "src": "424:14:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12983,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "424:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "374:65:52"
                  },
                  "src": "351:89:52"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 12992,
                  "name": "RbtcTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12991,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12988,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 12992,
                        "src": "464:24:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12987,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "464:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12990,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 12992,
                        "src": "490:14:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12989,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "490:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "463:42:52"
                  },
                  "src": "442:64:52"
                },
                {
                  "body": {
                    "id": 13038,
                    "nodeType": "Block",
                    "src": "813:256:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13004,
                                "name": "_receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12994,
                                "src": "825:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 13006,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "846:1:52",
                                    "subdenomination": null,
                                    "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": 13005,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "838:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 13007,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "838:10:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "825:23:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c69642072656365697665722061646472657373",
                              "id": 13009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "850:26:52",
                              "subdenomination": null,
                              "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": 13003,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "817:7:52",
                            "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,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "817:60:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13011,
                        "nodeType": "ExpressionStatement",
                        "src": "817:60:52"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13013,
                                "name": "_token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12996,
                                "src": "889:6:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 13015,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "907:1:52",
                                    "subdenomination": null,
                                    "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": 13014,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "899:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 13016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "899:10:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "889:20:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c696420746f6b656e2061646472657373",
                              "id": 13018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "911:23:52",
                              "subdenomination": null,
                              "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": 13012,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "881:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "881:54:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13020,
                        "nodeType": "ExpressionStatement",
                        "src": "881:54:52"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 13026,
                                  "name": "_receiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12994,
                                  "src": "972:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 13027,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12998,
                                  "src": "983:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 13023,
                                      "name": "_token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12996,
                                      "src": "955:6:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 13022,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24699,
                                    "src": "948:6:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 13024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "948:14:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 13025,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24671,
                                "src": "948:23:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 13028,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "948:43:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5472616e73666572206661696c6564",
                              "id": 13029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "993:17:52",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51",
                                "typeString": "literal_string \"Transfer failed\""
                              },
                              "value": "Transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51",
                                "typeString": "literal_string \"Transfer failed\""
                              }
                            ],
                            "id": 13021,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "940:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "940:71:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13031,
                        "nodeType": "ExpressionStatement",
                        "src": "940:71:52"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13033,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12994,
                              "src": "1038:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13034,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12996,
                              "src": "1049:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13035,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12998,
                              "src": "1057:7: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": 13032,
                            "name": "TokensTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12986,
                            "src": "1020:17:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 13036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1020:45:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13037,
                        "nodeType": "EmitStatement",
                        "src": "1015:50:52"
                      }
                    ]
                  },
                  "documentation": "@notice Transfer tokens.\n@param _receiver The receiver of tokens.\n@param _token The address of token contract.\n@param _amount The amount to be transferred.\n",
                  "id": 13039,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 13001,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 13000,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "803:9:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "803:9:52"
                    }
                  ],
                  "name": "transferTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12999,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12994,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 13039,
                        "src": "738:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12993,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "738:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12996,
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 13039,
                        "src": "759:14:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12995,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "759:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12998,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 13039,
                        "src": "777:15:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12997,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "777:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "734:61:52"
                  },
                  "returnParameters": {
                    "id": 13002,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "813:0:52"
                  },
                  "scope": 13088,
                  "src": "711:358:52",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13069,
                    "nodeType": "Block",
                    "src": "1286:153:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 13053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13049,
                                "name": "_receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13041,
                                "src": "1298:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 13051,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1319:1:52",
                                    "subdenomination": null,
                                    "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": 13050,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1311:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 13052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1311:10:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1298:23:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c69642072656365697665722061646472657373",
                              "id": 13054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1323:26:52",
                              "subdenomination": null,
                              "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": 13048,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1290:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1290:60:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13056,
                        "nodeType": "ExpressionStatement",
                        "src": "1290:60:52"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13061,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13043,
                              "src": "1383:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 13058,
                                  "name": "_receiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13041,
                                  "src": "1363:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 13057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1355:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 13059,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1355:18:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 13060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1355:27:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 13062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1355:36:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13063,
                        "nodeType": "ExpressionStatement",
                        "src": "1355:36:52"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13065,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13041,
                              "src": "1416:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13066,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13043,
                              "src": "1427:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13064,
                            "name": "RbtcTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12992,
                            "src": "1400:15:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 13067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1400:35:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13068,
                        "nodeType": "EmitStatement",
                        "src": "1395:40:52"
                      }
                    ]
                  },
                  "documentation": "@notice Transfer RBTC.\n@param _receiver The receiver of RBTC.\n@param _amount The amount to be transferred.\n",
                  "id": 13070,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 13046,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 13045,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1276:9:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1276:9:52"
                    }
                  ],
                  "name": "transferRbtc",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13044,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13041,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 13070,
                        "src": "1225:25:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 13040,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1225:15:52",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13043,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 13070,
                        "src": "1252:15:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13042,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1252:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1224:44:52"
                  },
                  "returnParameters": {
                    "id": 13047,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1286:0:52"
                  },
                  "scope": 13088,
                  "src": "1203:236:52",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13086,
                    "nodeType": "Block",
                    "src": "1551:73:52",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13073,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "1559:3:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 13074,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1559:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1571:1:52",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1559:13:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 13085,
                        "nodeType": "IfStatement",
                        "src": "1555:66:52",
                        "trueBody": {
                          "id": 13084,
                          "nodeType": "Block",
                          "src": "1574:47:52",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13078,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "1594:3:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 13079,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "1594:10:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13080,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "1606:3:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 13081,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "value",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "1606:9:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13077,
                                  "name": "Deposited",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12978,
                                  "src": "1584:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 13082,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1584:32:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13083,
                              "nodeType": "EmitStatement",
                              "src": "1579:37:52"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Fallback function is to react to receiving value (rBTC).\n",
                  "id": 13087,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13071,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1531:2:52"
                  },
                  "returnParameters": {
                    "id": 13072,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1551:0:52"
                  },
                  "scope": 13088,
                  "src": "1523:101:52",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 13089,
              "src": "241:1385:52"
            }
          ],
          "src": "0:1627:52"
        },
        "id": 52
      },
      "contracts/governance/IFeeSharingProxy.sol": {
        "ast": {
          "absolutePath": "contracts/governance/IFeeSharingProxy.sol",
          "exportedSymbols": {
            "IFeeSharingProxy": [
              13112
            ]
          },
          "id": 13113,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13090,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:53"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": "@title Interface for contract governance/FeeSharingProxy.sol\n@dev Interfaces are used to cast a contract address into a callable instance.\n",
              "fullyImplemented": false,
              "id": 13112,
              "linearizedBaseContracts": [
                13112
              ],
              "name": "IFeeSharingProxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 13095,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13093,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13092,
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 13095,
                        "src": "233:14:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13091,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "233:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "232:16:53"
                  },
                  "returnParameters": {
                    "id": 13094,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "257:0:53"
                  },
                  "scope": 13112,
                  "src": "211:47:53",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 13102,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13100,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13097,
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 13102,
                        "src": "285:14:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13096,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "285:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13099,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 13102,
                        "src": "301:14:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13098,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "301:6:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "284:32:53"
                  },
                  "returnParameters": {
                    "id": 13101,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "325:0:53"
                  },
                  "scope": 13112,
                  "src": "261:65:53",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 13111,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13104,
                        "name": "_loanPoolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 13111,
                        "src": "350:22:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13103,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "350:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13106,
                        "name": "_maxCheckpoints",
                        "nodeType": "VariableDeclaration",
                        "scope": 13111,
                        "src": "376:22:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 13105,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "376:6:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13108,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 13111,
                        "src": "402:17:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13107,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "402:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "346:76:53"
                  },
                  "returnParameters": {
                    "id": 13110,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "431:0:53"
                  },
                  "scope": 13112,
                  "src": "329:103:53",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 13113,
              "src": "181:253:53"
            }
          ],
          "src": "0:435:53"
        },
        "id": 53
      },
      "contracts/governance/Staking/Checkpoints.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Staking/Checkpoints.sol",
          "exportedSymbols": {
            "Checkpoints": [
              13706
            ]
          },
          "id": 13707,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13114,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:54"
            },
            {
              "id": 13115,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:54"
            },
            {
              "absolutePath": "contracts/governance/Staking/StakingStorage.sol",
              "file": "./StakingStorage.sol",
              "id": 13116,
              "nodeType": "ImportDirective",
              "scope": 13707,
              "sourceUnit": 15714,
              "src": "60:30:54",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/SafeMath96.sol",
              "file": "./SafeMath96.sol",
              "id": 13117,
              "nodeType": "ImportDirective",
              "scope": 13707,
              "sourceUnit": 13960,
              "src": "91:26:54",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 13118,
                    "name": "StakingStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15713,
                    "src": "283:14:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_StakingStorage_$15713",
                      "typeString": "contract StakingStorage"
                    }
                  },
                  "id": 13119,
                  "nodeType": "InheritanceSpecifier",
                  "src": "283:14:54"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 13120,
                    "name": "SafeMath96",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13959,
                    "src": "299:10:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath96_$13959",
                      "typeString": "contract SafeMath96"
                    }
                  },
                  "id": 13121,
                  "nodeType": "InheritanceSpecifier",
                  "src": "299:10:54"
                }
              ],
              "contractDependencies": [
                13959,
                15713,
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Checkpoints contract.\n@notice Increases and decreases storage values for users, delegatees and\ntotal daily stake.\n",
              "fullyImplemented": true,
              "id": 13706,
              "linearizedBaseContracts": [
                13706,
                13959,
                15713,
                41798,
                41125
              ],
              "name": "Checkpoints",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when an account changes its delegate.",
                  "id": 13131,
                  "name": "DelegateChanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13123,
                        "indexed": true,
                        "name": "delegator",
                        "nodeType": "VariableDeclaration",
                        "scope": 13131,
                        "src": "403:25:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13122,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "403:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13125,
                        "indexed": false,
                        "name": "lockedUntil",
                        "nodeType": "VariableDeclaration",
                        "scope": 13131,
                        "src": "430:19:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13124,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "430:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13127,
                        "indexed": true,
                        "name": "fromDelegate",
                        "nodeType": "VariableDeclaration",
                        "scope": 13131,
                        "src": "451:28:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13126,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "451:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13129,
                        "indexed": true,
                        "name": "toDelegate",
                        "nodeType": "VariableDeclaration",
                        "scope": 13131,
                        "src": "481:26:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13128,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "481:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "402:106:54"
                  },
                  "src": "381:128:54"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when a delegate account's stake balance changes.",
                  "id": 13141,
                  "name": "DelegateStakeChanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13140,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13133,
                        "indexed": true,
                        "name": "delegate",
                        "nodeType": "VariableDeclaration",
                        "scope": 13141,
                        "src": "618:24:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13132,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "618:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13135,
                        "indexed": false,
                        "name": "lockedUntil",
                        "nodeType": "VariableDeclaration",
                        "scope": 13141,
                        "src": "644:19:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13134,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "644:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13137,
                        "indexed": false,
                        "name": "previousBalance",
                        "nodeType": "VariableDeclaration",
                        "scope": 13141,
                        "src": "665:23:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13136,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "665:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13139,
                        "indexed": false,
                        "name": "newBalance",
                        "nodeType": "VariableDeclaration",
                        "scope": 13141,
                        "src": "690:18:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13138,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "690:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "617:92:54"
                  },
                  "src": "591:119:54"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when tokens get staked.",
                  "id": 13151,
                  "name": "TokensStaked",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13150,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13143,
                        "indexed": true,
                        "name": "staker",
                        "nodeType": "VariableDeclaration",
                        "scope": 13151,
                        "src": "786:22:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13142,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "786:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13145,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 13151,
                        "src": "810:14:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13144,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "810:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13147,
                        "indexed": false,
                        "name": "lockedUntil",
                        "nodeType": "VariableDeclaration",
                        "scope": 13151,
                        "src": "826:19:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13146,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "826:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13149,
                        "indexed": false,
                        "name": "totalStaked",
                        "nodeType": "VariableDeclaration",
                        "scope": 13151,
                        "src": "847:19:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13148,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "847:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "785:82:54"
                  },
                  "src": "767:101:54"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when staked tokens get withdrawn.",
                  "id": 13163,
                  "name": "StakingWithdrawn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13162,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13153,
                        "indexed": true,
                        "name": "staker",
                        "nodeType": "VariableDeclaration",
                        "scope": 13163,
                        "src": "958:22:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13152,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "958:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13155,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 13163,
                        "src": "982:14:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13154,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "982:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13157,
                        "indexed": false,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 13163,
                        "src": "998:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13156,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "998:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13159,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 13163,
                        "src": "1013:24:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13158,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1013:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13161,
                        "indexed": false,
                        "name": "isGovernance",
                        "nodeType": "VariableDeclaration",
                        "scope": 13163,
                        "src": "1039:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13160,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1039:4:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "957:100:54"
                  },
                  "src": "935:123:54"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when vesting tokens get withdrawn.",
                  "id": 13169,
                  "name": "VestingTokensWithdrawn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13165,
                        "indexed": false,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 13169,
                        "src": "1155:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13164,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1155:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13167,
                        "indexed": false,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 13169,
                        "src": "1172:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13166,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1172:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1154:35:54"
                  },
                  "src": "1126:64:54"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when the owner unlocks all tokens.",
                  "id": 13173,
                  "name": "TokensUnlocked",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13172,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13171,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 13173,
                        "src": "1279:14:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13170,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1279:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1278:16:54"
                  },
                  "src": "1258:37:54"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice An event emitted when a staking period gets extended.",
                  "id": 13183,
                  "name": "ExtendedStakingDuration",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13182,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13175,
                        "indexed": true,
                        "name": "staker",
                        "nodeType": "VariableDeclaration",
                        "scope": 13183,
                        "src": "1395:22:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13174,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1395:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13177,
                        "indexed": false,
                        "name": "previousDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 13183,
                        "src": "1419:20:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13176,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1419:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13179,
                        "indexed": false,
                        "name": "newDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 13183,
                        "src": "1441:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13178,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1441:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13181,
                        "indexed": false,
                        "name": "amountStaked",
                        "nodeType": "VariableDeclaration",
                        "scope": 13183,
                        "src": "1458:20:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13180,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1458:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1394:85:54"
                  },
                  "src": "1365:115:54"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 13187,
                  "name": "AdminAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13186,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13185,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 13187,
                        "src": "1500:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13184,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1500:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1499:15:54"
                  },
                  "src": "1483:32:54"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 13191,
                  "name": "AdminRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13190,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13189,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 13191,
                        "src": "1537:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13188,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1537:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1536:15:54"
                  },
                  "src": "1518:34:54"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 13195,
                  "name": "ContractCodeHashAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13194,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13193,
                        "indexed": false,
                        "name": "hash",
                        "nodeType": "VariableDeclaration",
                        "scope": 13195,
                        "src": "1583:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13192,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1583:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1582:14:54"
                  },
                  "src": "1555:42:54"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 13199,
                  "name": "ContractCodeHashRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 13198,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13197,
                        "indexed": false,
                        "name": "hash",
                        "nodeType": "VariableDeclaration",
                        "scope": 13199,
                        "src": "1630:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 13196,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1630:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1629:14:54"
                  },
                  "src": "1600:44:54"
                },
                {
                  "body": {
                    "id": 13244,
                    "nodeType": "Block",
                    "src": "1970:323:54",
                    "statements": [
                      {
                        "assignments": [
                          13209
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13209,
                            "name": "nCheckpoints",
                            "nodeType": "VariableDeclaration",
                            "scope": 13244,
                            "src": "1974:19:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 13208,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1974:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13215,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13210,
                              "name": "numUserStakingCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15689,
                              "src": "1996:25:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                                "typeString": "mapping(address => mapping(uint256 => uint32))"
                              }
                            },
                            "id": 13212,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13211,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13201,
                              "src": "2022:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1996:34:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                              "typeString": "mapping(uint256 => uint32)"
                            }
                          },
                          "id": 13214,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 13213,
                            "name": "lockedTS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13203,
                            "src": "2031:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1996:44:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1974:66:54"
                      },
                      {
                        "assignments": [
                          13217
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13217,
                            "name": "staked",
                            "nodeType": "VariableDeclaration",
                            "scope": 13244,
                            "src": "2044:13:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13216,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "2044:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13228,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 13218,
                                  "name": "userStakingCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15683,
                                  "src": "2060:22:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                  }
                                },
                                "id": 13220,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 13219,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13201,
                                  "src": "2083:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2060:31:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                }
                              },
                              "id": 13222,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13221,
                                "name": "lockedTS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13203,
                                "src": "2092:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2060:41:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                              }
                            },
                            "id": 13226,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 13225,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13223,
                                "name": "nCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13209,
                                "src": "2102:12:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 13224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2117:1:54",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "2102:16:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2060:59:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                              "typeString": "struct StakingStorage.Checkpoint storage ref"
                            }
                          },
                          "id": 13227,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15650,
                          "src": "2060:65:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2044:81:54"
                      },
                      {
                        "assignments": [
                          13230
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13230,
                            "name": "newStake",
                            "nodeType": "VariableDeclaration",
                            "scope": 13244,
                            "src": "2129:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13229,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "2129:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13236,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13232,
                              "name": "staked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13217,
                              "src": "2153:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13233,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13205,
                              "src": "2161:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a5f696e637265617365557365725374616b653a207374616b656420616d6f756e74206f766572666c6f77",
                              "id": 13234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2168:53:54",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a3cc37e3b05cf07504fcf01c629426f084d6aa37e83f725064b5092dce45fb90",
                                "typeString": "literal_string \"Staking::_increaseUserStake: staked amount overflow\""
                              },
                              "value": "Staking::_increaseUserStake: staked amount overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a3cc37e3b05cf07504fcf01c629426f084d6aa37e83f725064b5092dce45fb90",
                                "typeString": "literal_string \"Staking::_increaseUserStake: staked amount overflow\""
                              }
                            ],
                            "id": 13231,
                            "name": "add96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13872,
                            "src": "2147:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                              "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                            }
                          },
                          "id": 13235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2147:75:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2129:93:54"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13238,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13201,
                              "src": "2247:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13239,
                              "name": "lockedTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13203,
                              "src": "2256:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13240,
                              "name": "nCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13209,
                              "src": "2266:12:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13241,
                              "name": "newStake",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13230,
                              "src": "2280:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 13237,
                            "name": "_writeUserCheckpoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13366,
                            "src": "2226:20:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint32_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint256,uint32,uint96)"
                            }
                          },
                          "id": 13242,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2226:63:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13243,
                        "nodeType": "ExpressionStatement",
                        "src": "2226:63:54"
                      }
                    ]
                  },
                  "documentation": "@notice Increases the user's stake for a giving lock date and writes a checkpoint.\n@param account The user address.\n@param lockedTS The lock date.\n@param value The value to add to the staked balance.\n",
                  "id": 13245,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_increaseUserStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13206,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13201,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 13245,
                        "src": "1906:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13200,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1906:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13203,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 13245,
                        "src": "1925:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13202,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1925:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13205,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 13245,
                        "src": "1945:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13204,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "1945:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1902:58:54"
                  },
                  "returnParameters": {
                    "id": 13207,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1970:0:54"
                  },
                  "scope": 13706,
                  "src": "1875:418:54",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13290,
                    "nodeType": "Block",
                    "src": "2625:324:54",
                    "statements": [
                      {
                        "assignments": [
                          13255
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13255,
                            "name": "nCheckpoints",
                            "nodeType": "VariableDeclaration",
                            "scope": 13290,
                            "src": "2629:19:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 13254,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2629:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13261,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13256,
                              "name": "numUserStakingCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15689,
                              "src": "2651:25:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                                "typeString": "mapping(address => mapping(uint256 => uint32))"
                              }
                            },
                            "id": 13258,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13257,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13247,
                              "src": "2677:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2651:34:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                              "typeString": "mapping(uint256 => uint32)"
                            }
                          },
                          "id": 13260,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 13259,
                            "name": "lockedTS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13249,
                            "src": "2686:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2651:44:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2629:66:54"
                      },
                      {
                        "assignments": [
                          13263
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13263,
                            "name": "staked",
                            "nodeType": "VariableDeclaration",
                            "scope": 13290,
                            "src": "2699:13:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13262,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "2699:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13274,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 13264,
                                  "name": "userStakingCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15683,
                                  "src": "2715:22:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                  }
                                },
                                "id": 13266,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 13265,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13247,
                                  "src": "2738:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2715:31:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                }
                              },
                              "id": 13268,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13267,
                                "name": "lockedTS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13249,
                                "src": "2747:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2715:41:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                              }
                            },
                            "id": 13272,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 13271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13269,
                                "name": "nCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13255,
                                "src": "2757:12:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 13270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2772:1:54",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "2757:16:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2715:59:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                              "typeString": "struct StakingStorage.Checkpoint storage ref"
                            }
                          },
                          "id": 13273,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15650,
                          "src": "2715:65:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2699:81:54"
                      },
                      {
                        "assignments": [
                          13276
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13276,
                            "name": "newStake",
                            "nodeType": "VariableDeclaration",
                            "scope": 13290,
                            "src": "2784:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13275,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "2784:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13282,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13278,
                              "name": "staked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13263,
                              "src": "2808:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13279,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13251,
                              "src": "2816:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a5f6465637265617365557365725374616b653a207374616b656420616d6f756e7420756e646572666c6f77",
                              "id": 13280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2823:54:54",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6234cbee9b683114171b7ccc38d3e5736a1e8a2613c2502b714fe78cc362d3f6",
                                "typeString": "literal_string \"Staking::_decreaseUserStake: staked amount underflow\""
                              },
                              "value": "Staking::_decreaseUserStake: staked amount underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6234cbee9b683114171b7ccc38d3e5736a1e8a2613c2502b714fe78cc362d3f6",
                                "typeString": "literal_string \"Staking::_decreaseUserStake: staked amount underflow\""
                              }
                            ],
                            "id": 13277,
                            "name": "sub96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13895,
                            "src": "2802:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                              "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                            }
                          },
                          "id": 13281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2802:76:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2784:94:54"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13284,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13247,
                              "src": "2903:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13285,
                              "name": "lockedTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13249,
                              "src": "2912:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13286,
                              "name": "nCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13255,
                              "src": "2922:12:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13287,
                              "name": "newStake",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13276,
                              "src": "2936:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 13283,
                            "name": "_writeUserCheckpoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13366,
                            "src": "2882:20:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint32_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint256,uint32,uint96)"
                            }
                          },
                          "id": 13288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2882:63:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13289,
                        "nodeType": "ExpressionStatement",
                        "src": "2882:63:54"
                      }
                    ]
                  },
                  "documentation": "@notice Decreases the user's stake for a giving lock date and writes a checkpoint.\n@param account The user address.\n@param lockedTS The lock date.\n@param value The value to substract to the staked balance.\n",
                  "id": 13291,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_decreaseUserStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13252,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13247,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 13291,
                        "src": "2561:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13246,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2561:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13249,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 13291,
                        "src": "2580:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13248,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2580:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13251,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 13291,
                        "src": "2600:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13250,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2600:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2557:58:54"
                  },
                  "returnParameters": {
                    "id": 13253,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2625:0:54"
                  },
                  "scope": 13706,
                  "src": "2530:419:54",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13365,
                    "nodeType": "Block",
                    "src": "3332:490:54",
                    "statements": [
                      {
                        "assignments": [
                          13303
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13303,
                            "name": "blockNumber",
                            "nodeType": "VariableDeclaration",
                            "scope": 13365,
                            "src": "3336:18:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 13302,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3336:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13309,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13305,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "3364:5:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 13306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3364:12:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a5f77726974655374616b696e67436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473",
                              "id": 13307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3378:64:54",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a3a144cb20c1dc3dad8270d3631d66114417a1ba30cd3bd1be175f3ec1292776",
                                "typeString": "literal_string \"Staking::_writeStakingCheckpoint: block number exceeds 32 bits\""
                              },
                              "value": "Staking::_writeStakingCheckpoint: block number exceeds 32 bits"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a3a144cb20c1dc3dad8270d3631d66114417a1ba30cd3bd1be175f3ec1292776",
                                "typeString": "literal_string \"Staking::_writeStakingCheckpoint: block number exceeds 32 bits\""
                              }
                            ],
                            "id": 13304,
                            "name": "safe32",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13799,
                            "src": "3357:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$",
                              "typeString": "function (uint256,string memory) pure returns (uint32)"
                            }
                          },
                          "id": 13308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3357:86:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3336:107:54"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 13312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 13310,
                              "name": "nCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13297,
                              "src": "3452:12:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 13311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3467:1:54",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3452:16:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 13324,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13313,
                                      "name": "userStakingCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15683,
                                      "src": "3472:22:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                      }
                                    },
                                    "id": 13315,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 13314,
                                      "name": "account",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13293,
                                      "src": "3495:7:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3472:31:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                      "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                    }
                                  },
                                  "id": 13317,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 13316,
                                    "name": "lockedTS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13295,
                                    "src": "3504:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3472:41:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                    "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                  }
                                },
                                "id": 13321,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 13320,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 13318,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13297,
                                    "src": "3514:12:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 13319,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3529:1:54",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "3514:16:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3472:59:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                  "typeString": "struct StakingStorage.Checkpoint storage ref"
                                }
                              },
                              "id": 13322,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fromBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15648,
                              "src": "3472:69:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 13323,
                              "name": "blockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13303,
                              "src": "3545:11:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "3472:84:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3452:104:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 13363,
                          "nodeType": "Block",
                          "src": "3650:169:54",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 13340,
                                        "name": "userStakingCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15683,
                                        "src": "3655:22:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                          "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                        }
                                      },
                                      "id": 13344,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 13341,
                                        "name": "account",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13293,
                                        "src": "3678:7:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3655:31:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                        "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                      }
                                    },
                                    "id": 13345,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 13342,
                                      "name": "lockedTS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13295,
                                      "src": "3687:8:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3655:41:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                      "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                    }
                                  },
                                  "id": 13346,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 13343,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13297,
                                    "src": "3697:12:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3655:55:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                    "typeString": "struct StakingStorage.Checkpoint storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 13348,
                                      "name": "blockNumber",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13303,
                                      "src": "3724:11:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 13349,
                                      "name": "newStake",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13299,
                                      "src": "3737:8:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    ],
                                    "id": 13347,
                                    "name": "Checkpoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15651,
                                    "src": "3713:10:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_Checkpoint_$15651_storage_ptr_$",
                                      "typeString": "type(struct StakingStorage.Checkpoint storage pointer)"
                                    }
                                  },
                                  "id": 13350,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3713:33:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$15651_memory",
                                    "typeString": "struct StakingStorage.Checkpoint memory"
                                  }
                                },
                                "src": "3655:91:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                  "typeString": "struct StakingStorage.Checkpoint storage ref"
                                }
                              },
                              "id": 13352,
                              "nodeType": "ExpressionStatement",
                              "src": "3655:91:54"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13353,
                                      "name": "numUserStakingCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15689,
                                      "src": "3751:25:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => uint32))"
                                      }
                                    },
                                    "id": 13356,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 13354,
                                      "name": "account",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13293,
                                      "src": "3777:7:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3751:34:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                                      "typeString": "mapping(uint256 => uint32)"
                                    }
                                  },
                                  "id": 13357,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 13355,
                                    "name": "lockedTS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13295,
                                    "src": "3786:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3751:44:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 13360,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 13358,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13297,
                                    "src": "3798:12:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 13359,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3813:1:54",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "3798:16:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "3751:63:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 13362,
                              "nodeType": "ExpressionStatement",
                              "src": "3751:63:54"
                            }
                          ]
                        },
                        "id": 13364,
                        "nodeType": "IfStatement",
                        "src": "3448:371:54",
                        "trueBody": {
                          "id": 13339,
                          "nodeType": "Block",
                          "src": "3558:86:54",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13337,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 13326,
                                          "name": "userStakingCheckpoints",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15683,
                                          "src": "3563:22:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                            "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                          }
                                        },
                                        "id": 13332,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 13327,
                                          "name": "account",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13293,
                                          "src": "3586:7:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3563:31:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                          "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                        }
                                      },
                                      "id": 13333,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 13328,
                                        "name": "lockedTS",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13295,
                                        "src": "3595:8:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3563:41:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                        "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                      }
                                    },
                                    "id": 13334,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 13331,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 13329,
                                        "name": "nCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13297,
                                        "src": "3605:12:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 13330,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3620:1:54",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "3605:16:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3563:59:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                      "typeString": "struct StakingStorage.Checkpoint storage ref"
                                    }
                                  },
                                  "id": 13335,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "stake",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15650,
                                  "src": "3563:65:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 13336,
                                  "name": "newStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13299,
                                  "src": "3631:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "3563:76:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 13338,
                              "nodeType": "ExpressionStatement",
                              "src": "3563:76:54"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Writes on storage the user stake.\n@param account The user address.\n@param lockedTS The lock date.\n@param nCheckpoints The number of checkpoints, to find out the last one index.\n@param newStake The new staked balance.\n",
                  "id": 13366,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_writeUserCheckpoint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13300,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13293,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 13366,
                        "src": "3242:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13292,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3242:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13295,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 13366,
                        "src": "3261:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13294,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3261:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13297,
                        "name": "nCheckpoints",
                        "nodeType": "VariableDeclaration",
                        "scope": 13366,
                        "src": "3281:19:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 13296,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3281:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13299,
                        "name": "newStake",
                        "nodeType": "VariableDeclaration",
                        "scope": 13366,
                        "src": "3304:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13298,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "3304:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3238:84:54"
                  },
                  "returnParameters": {
                    "id": 13301,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3332:0:54"
                  },
                  "scope": 13706,
                  "src": "3209:613:54",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13411,
                    "nodeType": "Block",
                    "src": "4166:345:54",
                    "statements": [
                      {
                        "assignments": [
                          13376
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13376,
                            "name": "nCheckpoints",
                            "nodeType": "VariableDeclaration",
                            "scope": 13411,
                            "src": "4170:19:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 13375,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4170:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13382,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13377,
                              "name": "numDelegateStakingCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15675,
                              "src": "4192:29:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                                "typeString": "mapping(address => mapping(uint256 => uint32))"
                              }
                            },
                            "id": 13379,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13378,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13368,
                              "src": "4222:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4192:40:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                              "typeString": "mapping(uint256 => uint32)"
                            }
                          },
                          "id": 13381,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 13380,
                            "name": "lockedTS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13370,
                            "src": "4233:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4192:50:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4170:72:54"
                      },
                      {
                        "assignments": [
                          13384
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13384,
                            "name": "staked",
                            "nodeType": "VariableDeclaration",
                            "scope": 13411,
                            "src": "4246:13:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13383,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "4246:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13395,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 13385,
                                  "name": "delegateStakingCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15669,
                                  "src": "4262:26:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                  }
                                },
                                "id": 13387,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 13386,
                                  "name": "delegatee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13368,
                                  "src": "4289:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4262:37:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                }
                              },
                              "id": 13389,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13388,
                                "name": "lockedTS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13370,
                                "src": "4300:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4262:47:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                              }
                            },
                            "id": 13393,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 13392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13390,
                                "name": "nCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13376,
                                "src": "4310:12:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 13391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4325:1:54",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4310:16:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4262:65:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                              "typeString": "struct StakingStorage.Checkpoint storage ref"
                            }
                          },
                          "id": 13394,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15650,
                          "src": "4262:71:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4246:87:54"
                      },
                      {
                        "assignments": [
                          13397
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13397,
                            "name": "newStake",
                            "nodeType": "VariableDeclaration",
                            "scope": 13411,
                            "src": "4337:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13396,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "4337:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13403,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13399,
                              "name": "staked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13384,
                              "src": "4361:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13400,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13372,
                              "src": "4369:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a5f696e63726561736544656c65676174655374616b653a207374616b656420616d6f756e74206f766572666c6f77",
                              "id": 13401,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4376:57:54",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_da7782bf4125c5f2fd47b25b96cd4899195a563b4647009bb8f15a07d971ac58",
                                "typeString": "literal_string \"Staking::_increaseDelegateStake: staked amount overflow\""
                              },
                              "value": "Staking::_increaseDelegateStake: staked amount overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_da7782bf4125c5f2fd47b25b96cd4899195a563b4647009bb8f15a07d971ac58",
                                "typeString": "literal_string \"Staking::_increaseDelegateStake: staked amount overflow\""
                              }
                            ],
                            "id": 13398,
                            "name": "add96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13872,
                            "src": "4355:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                              "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                            }
                          },
                          "id": 13402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4355:79:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4337:97:54"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13405,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13368,
                              "src": "4463:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13406,
                              "name": "lockedTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13370,
                              "src": "4474:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13407,
                              "name": "nCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13376,
                              "src": "4484:12:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13408,
                              "name": "newStake",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13397,
                              "src": "4498:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 13404,
                            "name": "_writeDelegateCheckpoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13562,
                            "src": "4438:24:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint32_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint256,uint32,uint96)"
                            }
                          },
                          "id": 13409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4438:69:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13410,
                        "nodeType": "ExpressionStatement",
                        "src": "4438:69:54"
                      }
                    ]
                  },
                  "documentation": "@notice Increases the delegatee's stake for a giving lock date and writes a checkpoint.\n@param delegatee The delegatee address.\n@param lockedTS The lock date.\n@param value The value to add to the staked balance.\n",
                  "id": 13412,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_increaseDelegateStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13373,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13368,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 13412,
                        "src": "4100:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13367,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4100:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13370,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 13412,
                        "src": "4121:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13369,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4121:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13372,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 13412,
                        "src": "4141:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13371,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "4141:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4096:60:54"
                  },
                  "returnParameters": {
                    "id": 13374,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4166:0:54"
                  },
                  "scope": 13706,
                  "src": "4065:446:54",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13466,
                    "nodeType": "Block",
                    "src": "4861:792:54",
                    "statements": [
                      {
                        "assignments": [
                          13422
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13422,
                            "name": "nCheckpoints",
                            "nodeType": "VariableDeclaration",
                            "scope": 13466,
                            "src": "4865:19:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 13421,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4865:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13428,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13423,
                              "name": "numDelegateStakingCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15675,
                              "src": "4887:29:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                                "typeString": "mapping(address => mapping(uint256 => uint32))"
                              }
                            },
                            "id": 13425,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13424,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13414,
                              "src": "4917:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4887:40:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                              "typeString": "mapping(uint256 => uint32)"
                            }
                          },
                          "id": 13427,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 13426,
                            "name": "lockedTS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13416,
                            "src": "4928:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4887:50:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4865:72:54"
                      },
                      {
                        "assignments": [
                          13430
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13430,
                            "name": "staked",
                            "nodeType": "VariableDeclaration",
                            "scope": 13466,
                            "src": "4941:13:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13429,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "4941:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13441,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 13431,
                                  "name": "delegateStakingCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15669,
                                  "src": "4957:26:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                  }
                                },
                                "id": 13433,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 13432,
                                  "name": "delegatee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13414,
                                  "src": "4984:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4957:37:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                }
                              },
                              "id": 13435,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13434,
                                "name": "lockedTS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13416,
                                "src": "4995:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4957:47:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                              }
                            },
                            "id": 13439,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 13438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13436,
                                "name": "nCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13422,
                                "src": "5005:12:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 13437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5020:1:54",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "5005:16:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4957:65:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                              "typeString": "struct StakingStorage.Checkpoint storage ref"
                            }
                          },
                          "id": 13440,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15650,
                          "src": "4957:71:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4941:87:54"
                      },
                      {
                        "assignments": [
                          13443
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13443,
                            "name": "newStake",
                            "nodeType": "VariableDeclaration",
                            "scope": 13466,
                            "src": "5032:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13442,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "5032:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13445,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 13444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5050:1:54",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5032:19:54"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 13448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13446,
                            "name": "staked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13430,
                            "src": "5460:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 13447,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13418,
                            "src": "5469:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "5460:14:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 13458,
                        "nodeType": "IfStatement",
                        "src": "5456:121:54",
                        "trueBody": {
                          "id": 13457,
                          "nodeType": "Block",
                          "src": "5476:101:54",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13455,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 13449,
                                  "name": "newStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13443,
                                  "src": "5481:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 13451,
                                      "name": "staked",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13430,
                                      "src": "5498:6:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 13452,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13418,
                                      "src": "5506:5:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "5374616b696e673a3a5f646563726561736544656c65676174655374616b653a207374616b656420616d6f756e7420756e646572666c6f77",
                                      "id": 13453,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5513:58:54",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_f1ed173dd228e8e4a568aa338599fda6a19940f15c49426164f3104415a82d34",
                                        "typeString": "literal_string \"Staking::_decreaseDelegateStake: staked amount underflow\""
                                      },
                                      "value": "Staking::_decreaseDelegateStake: staked amount underflow"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_f1ed173dd228e8e4a568aa338599fda6a19940f15c49426164f3104415a82d34",
                                        "typeString": "literal_string \"Staking::_decreaseDelegateStake: staked amount underflow\""
                                      }
                                    ],
                                    "id": 13450,
                                    "name": "sub96",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13895,
                                    "src": "5492:5:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                      "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                    }
                                  },
                                  "id": 13454,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5492:80:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "5481:91:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 13456,
                              "nodeType": "ExpressionStatement",
                              "src": "5481:91:54"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13460,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13414,
                              "src": "5605:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13461,
                              "name": "lockedTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13416,
                              "src": "5616:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13462,
                              "name": "nCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13422,
                              "src": "5626:12:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13463,
                              "name": "newStake",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13443,
                              "src": "5640:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 13459,
                            "name": "_writeDelegateCheckpoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13562,
                            "src": "5580:24:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint32_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint256,uint32,uint96)"
                            }
                          },
                          "id": 13464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5580:69:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13465,
                        "nodeType": "ExpressionStatement",
                        "src": "5580:69:54"
                      }
                    ]
                  },
                  "documentation": "@notice Decreases the delegatee's stake for a giving lock date and writes a checkpoint.\n@param delegatee The delegatee address.\n@param lockedTS The lock date.\n@param value The value to substract to the staked balance.\n",
                  "id": 13467,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_decreaseDelegateStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13419,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13414,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 13467,
                        "src": "4795:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13413,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4795:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13416,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 13467,
                        "src": "4816:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13415,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4816:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13418,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 13467,
                        "src": "4836:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13417,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "4836:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4791:60:54"
                  },
                  "returnParameters": {
                    "id": 13420,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4861:0:54"
                  },
                  "scope": 13706,
                  "src": "4760:893:54",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13561,
                    "nodeType": "Block",
                    "src": "6052:677:54",
                    "statements": [
                      {
                        "assignments": [
                          13479
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13479,
                            "name": "blockNumber",
                            "nodeType": "VariableDeclaration",
                            "scope": 13561,
                            "src": "6056:18:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 13478,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "6056:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13485,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13481,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "6084:5:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 13482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6084:12:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a5f77726974655374616b696e67436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473",
                              "id": 13483,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6098:64:54",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a3a144cb20c1dc3dad8270d3631d66114417a1ba30cd3bd1be175f3ec1292776",
                                "typeString": "literal_string \"Staking::_writeStakingCheckpoint: block number exceeds 32 bits\""
                              },
                              "value": "Staking::_writeStakingCheckpoint: block number exceeds 32 bits"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a3a144cb20c1dc3dad8270d3631d66114417a1ba30cd3bd1be175f3ec1292776",
                                "typeString": "literal_string \"Staking::_writeStakingCheckpoint: block number exceeds 32 bits\""
                              }
                            ],
                            "id": 13480,
                            "name": "safe32",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13799,
                            "src": "6077:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$",
                              "typeString": "function (uint256,string memory) pure returns (uint32)"
                            }
                          },
                          "id": 13484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6077:86:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6056:107:54"
                      },
                      {
                        "assignments": [
                          13487
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13487,
                            "name": "oldStake",
                            "nodeType": "VariableDeclaration",
                            "scope": 13561,
                            "src": "6167:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13486,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "6167:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13498,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 13488,
                                  "name": "delegateStakingCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15669,
                                  "src": "6185:26:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                  }
                                },
                                "id": 13490,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 13489,
                                  "name": "delegatee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13469,
                                  "src": "6212:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6185:37:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                }
                              },
                              "id": 13492,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13491,
                                "name": "lockedTS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13471,
                                "src": "6223:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6185:47:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                              }
                            },
                            "id": 13496,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 13495,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13493,
                                "name": "nCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13473,
                                "src": "6233:12:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 13494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6248:1:54",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "6233:16:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6185:65:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                              "typeString": "struct StakingStorage.Checkpoint storage ref"
                            }
                          },
                          "id": 13497,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15650,
                          "src": "6185:71:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6167:89:54"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 13501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 13499,
                              "name": "nCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13473,
                              "src": "6265:12:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 13500,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6280:1:54",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6265:16:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 13513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13502,
                                      "name": "delegateStakingCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15669,
                                      "src": "6285:26:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                      }
                                    },
                                    "id": 13504,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 13503,
                                      "name": "delegatee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13469,
                                      "src": "6312:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6285:37:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                      "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                    }
                                  },
                                  "id": 13506,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 13505,
                                    "name": "lockedTS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13471,
                                    "src": "6323:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6285:47:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                    "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                  }
                                },
                                "id": 13510,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 13509,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 13507,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13473,
                                    "src": "6333:12:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 13508,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6348:1:54",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6333:16:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6285:65:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                  "typeString": "struct StakingStorage.Checkpoint storage ref"
                                }
                              },
                              "id": 13511,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fromBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15648,
                              "src": "6285:75:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 13512,
                              "name": "blockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13479,
                              "src": "6364:11:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "6285:90:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6265:110:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 13552,
                          "nodeType": "Block",
                          "src": "6475:181:54",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13540,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 13529,
                                        "name": "delegateStakingCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15669,
                                        "src": "6480:26:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                          "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                        }
                                      },
                                      "id": 13533,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 13530,
                                        "name": "delegatee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13469,
                                        "src": "6507:9:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6480:37:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                        "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                      }
                                    },
                                    "id": 13534,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 13531,
                                      "name": "lockedTS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13471,
                                      "src": "6518:8:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6480:47:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                      "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                    }
                                  },
                                  "id": 13535,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 13532,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13473,
                                    "src": "6528:12:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6480:61:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                    "typeString": "struct StakingStorage.Checkpoint storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 13537,
                                      "name": "blockNumber",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13479,
                                      "src": "6555:11:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 13538,
                                      "name": "newStake",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13475,
                                      "src": "6568:8:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    ],
                                    "id": 13536,
                                    "name": "Checkpoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15651,
                                    "src": "6544:10:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_Checkpoint_$15651_storage_ptr_$",
                                      "typeString": "type(struct StakingStorage.Checkpoint storage pointer)"
                                    }
                                  },
                                  "id": 13539,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6544:33:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$15651_memory",
                                    "typeString": "struct StakingStorage.Checkpoint memory"
                                  }
                                },
                                "src": "6480:97:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                  "typeString": "struct StakingStorage.Checkpoint storage ref"
                                }
                              },
                              "id": 13541,
                              "nodeType": "ExpressionStatement",
                              "src": "6480:97:54"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13550,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13542,
                                      "name": "numDelegateStakingCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15675,
                                      "src": "6582:29:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => uint32))"
                                      }
                                    },
                                    "id": 13545,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 13543,
                                      "name": "delegatee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13469,
                                      "src": "6612:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6582:40:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                                      "typeString": "mapping(uint256 => uint32)"
                                    }
                                  },
                                  "id": 13546,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 13544,
                                    "name": "lockedTS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13471,
                                    "src": "6623:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6582:50:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 13549,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 13547,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13473,
                                    "src": "6635:12:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 13548,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6650:1:54",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6635:16:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "6582:69:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 13551,
                              "nodeType": "ExpressionStatement",
                              "src": "6582:69:54"
                            }
                          ]
                        },
                        "id": 13553,
                        "nodeType": "IfStatement",
                        "src": "6261:395:54",
                        "trueBody": {
                          "id": 13528,
                          "nodeType": "Block",
                          "src": "6377:92:54",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13526,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 13515,
                                          "name": "delegateStakingCheckpoints",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15669,
                                          "src": "6382:26:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                            "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                          }
                                        },
                                        "id": 13521,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 13516,
                                          "name": "delegatee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13469,
                                          "src": "6409:9:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6382:37:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                          "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                        }
                                      },
                                      "id": 13522,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 13517,
                                        "name": "lockedTS",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13471,
                                        "src": "6420:8:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6382:47:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                        "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                      }
                                    },
                                    "id": 13523,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 13520,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 13518,
                                        "name": "nCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13473,
                                        "src": "6430:12:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 13519,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6445:1:54",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "6430:16:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6382:65:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                      "typeString": "struct StakingStorage.Checkpoint storage ref"
                                    }
                                  },
                                  "id": 13524,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "stake",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15650,
                                  "src": "6382:71:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 13525,
                                  "name": "newStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13475,
                                  "src": "6456:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "6382:82:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 13527,
                              "nodeType": "ExpressionStatement",
                              "src": "6382:82:54"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13555,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13469,
                              "src": "6685:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13556,
                              "name": "lockedTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13471,
                              "src": "6696:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13557,
                              "name": "oldStake",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13487,
                              "src": "6706:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13558,
                              "name": "newStake",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13475,
                              "src": "6716:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 13554,
                            "name": "DelegateStakeChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13141,
                            "src": "6664:20:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 13559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6664:61:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13560,
                        "nodeType": "EmitStatement",
                        "src": "6659:66:54"
                      }
                    ]
                  },
                  "documentation": "@notice Writes on storage the delegate stake.\n@param delegatee The delegate address.\n@param lockedTS The lock date.\n@param nCheckpoints The number of checkpoints, to find out the last one index.\n@param newStake The new staked balance.\n",
                  "id": 13562,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_writeDelegateCheckpoint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13476,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13469,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 13562,
                        "src": "5960:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13468,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5960:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13471,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 13562,
                        "src": "5981:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13470,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5981:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13473,
                        "name": "nCheckpoints",
                        "nodeType": "VariableDeclaration",
                        "scope": 13562,
                        "src": "6001:19:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 13472,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6001:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13475,
                        "name": "newStake",
                        "nodeType": "VariableDeclaration",
                        "scope": 13562,
                        "src": "6024:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13474,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "6024:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5956:86:54"
                  },
                  "returnParameters": {
                    "id": 13477,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6052:0:54"
                  },
                  "scope": 13706,
                  "src": "5923:806:54",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13600,
                    "nodeType": "Block",
                    "src": "6992:302:54",
                    "statements": [
                      {
                        "assignments": [
                          13570
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13570,
                            "name": "nCheckpoints",
                            "nodeType": "VariableDeclaration",
                            "scope": 13600,
                            "src": "6996:19:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 13569,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "6996:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13574,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13571,
                            "name": "numTotalStakingCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15661,
                            "src": "7018:26:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                              "typeString": "mapping(uint256 => uint32)"
                            }
                          },
                          "id": 13573,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 13572,
                            "name": "lockedTS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13564,
                            "src": "7045:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7018:36:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6996:58:54"
                      },
                      {
                        "assignments": [
                          13576
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13576,
                            "name": "staked",
                            "nodeType": "VariableDeclaration",
                            "scope": 13600,
                            "src": "7058:13:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13575,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "7058:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13585,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13577,
                                "name": "totalStakingCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15657,
                                "src": "7074:23:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                }
                              },
                              "id": 13579,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13578,
                                "name": "lockedTS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13564,
                                "src": "7098:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7074:33:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                              }
                            },
                            "id": 13583,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 13582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13580,
                                "name": "nCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13570,
                                "src": "7108:12:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 13581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7123:1:54",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "7108:16:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7074:51:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                              "typeString": "struct StakingStorage.Checkpoint storage ref"
                            }
                          },
                          "id": 13584,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15650,
                          "src": "7074:57:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7058:73:54"
                      },
                      {
                        "assignments": [
                          13587
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13587,
                            "name": "newStake",
                            "nodeType": "VariableDeclaration",
                            "scope": 13600,
                            "src": "7135:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13586,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "7135:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13593,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13589,
                              "name": "staked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13576,
                              "src": "7159:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13590,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13566,
                              "src": "7167:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a5f696e6372656173654461696c795374616b653a207374616b656420616d6f756e74206f766572666c6f77",
                              "id": 13591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7174:54:54",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7ea0ab9bf87de5c10b7b81f7cc4ee49240f24d8b661694906550cb31d9fd4481",
                                "typeString": "literal_string \"Staking::_increaseDailyStake: staked amount overflow\""
                              },
                              "value": "Staking::_increaseDailyStake: staked amount overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7ea0ab9bf87de5c10b7b81f7cc4ee49240f24d8b661694906550cb31d9fd4481",
                                "typeString": "literal_string \"Staking::_increaseDailyStake: staked amount overflow\""
                              }
                            ],
                            "id": 13588,
                            "name": "add96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13872,
                            "src": "7153:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                              "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                            }
                          },
                          "id": 13592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7153:76:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7135:94:54"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13595,
                              "name": "lockedTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13564,
                              "src": "7257:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13596,
                              "name": "nCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13570,
                              "src": "7267:12:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13597,
                              "name": "newStake",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13587,
                              "src": "7281:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 13594,
                            "name": "_writeStakingCheckpoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13705,
                            "src": "7233:23:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint32_$_t_uint96_$returns$__$",
                              "typeString": "function (uint256,uint32,uint96)"
                            }
                          },
                          "id": 13598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7233:57:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13599,
                        "nodeType": "ExpressionStatement",
                        "src": "7233:57:54"
                      }
                    ]
                  },
                  "documentation": "@notice Increases the total stake for a giving lock date and writes a checkpoint.\n@param lockedTS The lock date.\n@param value The value to add to the staked balance.\n",
                  "id": 13601,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_increaseDailyStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13567,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13564,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 13601,
                        "src": "6951:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13563,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6951:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13566,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 13601,
                        "src": "6969:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13565,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "6969:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6950:32:54"
                  },
                  "returnParameters": {
                    "id": 13568,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6992:0:54"
                  },
                  "scope": 13706,
                  "src": "6922:372:54",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13639,
                    "nodeType": "Block",
                    "src": "7563:303:54",
                    "statements": [
                      {
                        "assignments": [
                          13609
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13609,
                            "name": "nCheckpoints",
                            "nodeType": "VariableDeclaration",
                            "scope": 13639,
                            "src": "7567:19:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 13608,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7567:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13613,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13610,
                            "name": "numTotalStakingCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15661,
                            "src": "7589:26:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                              "typeString": "mapping(uint256 => uint32)"
                            }
                          },
                          "id": 13612,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 13611,
                            "name": "lockedTS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13603,
                            "src": "7616:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7589:36:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7567:58:54"
                      },
                      {
                        "assignments": [
                          13615
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13615,
                            "name": "staked",
                            "nodeType": "VariableDeclaration",
                            "scope": 13639,
                            "src": "7629:13:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13614,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "7629:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13624,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13616,
                                "name": "totalStakingCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15657,
                                "src": "7645:23:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                }
                              },
                              "id": 13618,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13617,
                                "name": "lockedTS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13603,
                                "src": "7669:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7645:33:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                              }
                            },
                            "id": 13622,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 13621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13619,
                                "name": "nCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13609,
                                "src": "7679:12:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 13620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7694:1:54",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "7679:16:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7645:51:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                              "typeString": "struct StakingStorage.Checkpoint storage ref"
                            }
                          },
                          "id": 13623,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15650,
                          "src": "7645:57:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7629:73:54"
                      },
                      {
                        "assignments": [
                          13626
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13626,
                            "name": "newStake",
                            "nodeType": "VariableDeclaration",
                            "scope": 13639,
                            "src": "7706:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13625,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "7706:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13632,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13628,
                              "name": "staked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13615,
                              "src": "7730:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13629,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13605,
                              "src": "7738:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a5f64656372656173654461696c795374616b653a207374616b656420616d6f756e7420756e646572666c6f77",
                              "id": 13630,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7745:55:54",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ca4fb8c2679f0c63f8f0ff11c945938fa96b5e0751f80f2486beecfb57b53d89",
                                "typeString": "literal_string \"Staking::_decreaseDailyStake: staked amount underflow\""
                              },
                              "value": "Staking::_decreaseDailyStake: staked amount underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ca4fb8c2679f0c63f8f0ff11c945938fa96b5e0751f80f2486beecfb57b53d89",
                                "typeString": "literal_string \"Staking::_decreaseDailyStake: staked amount underflow\""
                              }
                            ],
                            "id": 13627,
                            "name": "sub96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13895,
                            "src": "7724:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                              "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                            }
                          },
                          "id": 13631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7724:77:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7706:95:54"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13634,
                              "name": "lockedTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13603,
                              "src": "7829:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13635,
                              "name": "nCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13609,
                              "src": "7839:12:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13636,
                              "name": "newStake",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13626,
                              "src": "7853:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 13633,
                            "name": "_writeStakingCheckpoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13705,
                            "src": "7805:23:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint32_$_t_uint96_$returns$__$",
                              "typeString": "function (uint256,uint32,uint96)"
                            }
                          },
                          "id": 13637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7805:57:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13638,
                        "nodeType": "ExpressionStatement",
                        "src": "7805:57:54"
                      }
                    ]
                  },
                  "documentation": "@notice Decreases the total stake for a giving lock date and writes a checkpoint.\n@param lockedTS The lock date.\n@param value The value to substract to the staked balance.\n",
                  "id": 13640,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_decreaseDailyStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13606,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13603,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 13640,
                        "src": "7522:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13602,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7522:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13605,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 13640,
                        "src": "7540:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13604,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "7540:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7521:32:54"
                  },
                  "returnParameters": {
                    "id": 13607,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7563:0:54"
                  },
                  "scope": 13706,
                  "src": "7493:373:54",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13704,
                    "nodeType": "Block",
                    "src": "8197:458:54",
                    "statements": [
                      {
                        "assignments": [
                          13650
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13650,
                            "name": "blockNumber",
                            "nodeType": "VariableDeclaration",
                            "scope": 13704,
                            "src": "8201:18:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 13649,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "8201:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13656,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13652,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "8229:5:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 13653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8229:12:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a5f77726974655374616b696e67436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473",
                              "id": 13654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8243:64:54",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a3a144cb20c1dc3dad8270d3631d66114417a1ba30cd3bd1be175f3ec1292776",
                                "typeString": "literal_string \"Staking::_writeStakingCheckpoint: block number exceeds 32 bits\""
                              },
                              "value": "Staking::_writeStakingCheckpoint: block number exceeds 32 bits"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a3a144cb20c1dc3dad8270d3631d66114417a1ba30cd3bd1be175f3ec1292776",
                                "typeString": "literal_string \"Staking::_writeStakingCheckpoint: block number exceeds 32 bits\""
                              }
                            ],
                            "id": 13651,
                            "name": "safe32",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13799,
                            "src": "8222:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$",
                              "typeString": "function (uint256,string memory) pure returns (uint32)"
                            }
                          },
                          "id": 13655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8222:86:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8201:107:54"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 13659,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 13657,
                              "name": "nCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13644,
                              "src": "8317:12:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 13658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8332:1:54",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "8317:16:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 13669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13660,
                                    "name": "totalStakingCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15657,
                                    "src": "8337:23:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                      "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                    }
                                  },
                                  "id": 13662,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 13661,
                                    "name": "lockedTS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13642,
                                    "src": "8361:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "8337:33:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                    "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                  }
                                },
                                "id": 13666,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 13665,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 13663,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13644,
                                    "src": "8371:12:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 13664,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8386:1:54",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "8371:16:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8337:51:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                  "typeString": "struct StakingStorage.Checkpoint storage ref"
                                }
                              },
                              "id": 13667,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fromBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15648,
                              "src": "8337:61:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 13668,
                              "name": "blockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13650,
                              "src": "8402:11:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "8337:76:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8317:96:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 13702,
                          "nodeType": "Block",
                          "src": "8499:153:54",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13692,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13683,
                                      "name": "totalStakingCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15657,
                                      "src": "8504:23:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                        "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                      }
                                    },
                                    "id": 13686,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 13684,
                                      "name": "lockedTS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13642,
                                      "src": "8528:8:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8504:33:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                      "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                    }
                                  },
                                  "id": 13687,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 13685,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13644,
                                    "src": "8538:12:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8504:47:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                    "typeString": "struct StakingStorage.Checkpoint storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 13689,
                                      "name": "blockNumber",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13650,
                                      "src": "8565:11:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 13690,
                                      "name": "newStake",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13646,
                                      "src": "8578:8:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    ],
                                    "id": 13688,
                                    "name": "Checkpoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15651,
                                    "src": "8554:10:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_Checkpoint_$15651_storage_ptr_$",
                                      "typeString": "type(struct StakingStorage.Checkpoint storage pointer)"
                                    }
                                  },
                                  "id": 13691,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8554:33:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$15651_memory",
                                    "typeString": "struct StakingStorage.Checkpoint memory"
                                  }
                                },
                                "src": "8504:83:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                  "typeString": "struct StakingStorage.Checkpoint storage ref"
                                }
                              },
                              "id": 13693,
                              "nodeType": "ExpressionStatement",
                              "src": "8504:83:54"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13700,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13694,
                                    "name": "numTotalStakingCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15661,
                                    "src": "8592:26:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                                      "typeString": "mapping(uint256 => uint32)"
                                    }
                                  },
                                  "id": 13696,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 13695,
                                    "name": "lockedTS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13642,
                                    "src": "8619:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8592:36:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 13699,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 13697,
                                    "name": "nCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13644,
                                    "src": "8631:12:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 13698,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8646:1:54",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "8631:16:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "8592:55:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 13701,
                              "nodeType": "ExpressionStatement",
                              "src": "8592:55:54"
                            }
                          ]
                        },
                        "id": 13703,
                        "nodeType": "IfStatement",
                        "src": "8313:339:54",
                        "trueBody": {
                          "id": 13682,
                          "nodeType": "Block",
                          "src": "8415:78:54",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13680,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 13671,
                                        "name": "totalStakingCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15657,
                                        "src": "8420:23:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                          "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                        }
                                      },
                                      "id": 13676,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 13672,
                                        "name": "lockedTS",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13642,
                                        "src": "8444:8:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8420:33:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                        "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                      }
                                    },
                                    "id": 13677,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 13675,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 13673,
                                        "name": "nCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13644,
                                        "src": "8454:12:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 13674,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8469:1:54",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "8454:16:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8420:51:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                      "typeString": "struct StakingStorage.Checkpoint storage ref"
                                    }
                                  },
                                  "id": 13678,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "stake",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15650,
                                  "src": "8420:57:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 13679,
                                  "name": "newStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13646,
                                  "src": "8480:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "8420:68:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 13681,
                              "nodeType": "ExpressionStatement",
                              "src": "8420:68:54"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Writes on storage the total stake.\n@param lockedTS The lock date.\n@param nCheckpoints The number of checkpoints, to find out the last one index.\n@param newStake The new staked balance.\n",
                  "id": 13705,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_writeStakingCheckpoint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13647,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13642,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 13705,
                        "src": "8126:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13641,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8126:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13644,
                        "name": "nCheckpoints",
                        "nodeType": "VariableDeclaration",
                        "scope": 13705,
                        "src": "8146:19:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 13643,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8146:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13646,
                        "name": "newStake",
                        "nodeType": "VariableDeclaration",
                        "scope": 13705,
                        "src": "8169:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13645,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "8169:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8122:65:54"
                  },
                  "returnParameters": {
                    "id": 13648,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8197:0:54"
                  },
                  "scope": 13706,
                  "src": "8090:565:54",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 13707,
              "src": "259:8398:54"
            }
          ],
          "src": "0:8658:54"
        },
        "id": 54
      },
      "contracts/governance/Staking/IStaking.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Staking/IStaking.sol",
          "exportedSymbols": {
            "IStaking": [
              13773
            ]
          },
          "id": 13774,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13708,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:55"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": "@title Interface for contract governance/Staking/Staking.sol\n@dev Interfaces are used to cast a contract address into a callable instance.",
              "fullyImplemented": false,
              "id": 13773,
              "linearizedBaseContracts": [
                13773
              ],
              "name": "IStaking",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 13723,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "stakesBySchedule",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13721,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13710,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 13723,
                        "src": "230:14:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13709,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "230:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13712,
                        "name": "cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 13723,
                        "src": "248:13:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13711,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "248:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13714,
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 13723,
                        "src": "265:16:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13713,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "265:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13716,
                        "name": "intervalLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 13723,
                        "src": "285:22:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13715,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "285:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13718,
                        "name": "stakeFor",
                        "nodeType": "VariableDeclaration",
                        "scope": 13723,
                        "src": "311:16:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13717,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "311:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13720,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 13723,
                        "src": "331:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13719,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "331:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "226:125:55"
                  },
                  "returnParameters": {
                    "id": 13722,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "360:0:55"
                  },
                  "scope": 13773,
                  "src": "201:160:55",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 13734,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "stake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13732,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13725,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 13734,
                        "src": "382:13:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13724,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "382:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13727,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 13734,
                        "src": "399:13:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13726,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "399:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13729,
                        "name": "stakeFor",
                        "nodeType": "VariableDeclaration",
                        "scope": 13734,
                        "src": "416:16:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13728,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "416:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13731,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 13734,
                        "src": "436:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13730,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "436:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "378:78:55"
                  },
                  "returnParameters": {
                    "id": 13733,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "465:0:55"
                  },
                  "scope": 13773,
                  "src": "364:102:55",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 13745,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriorVotes",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13741,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13736,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 13745,
                        "src": "495:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13735,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "495:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13738,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 13745,
                        "src": "514:19:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13737,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "514:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13740,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 13745,
                        "src": "537:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13739,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "537:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "491:61:55"
                  },
                  "returnParameters": {
                    "id": 13744,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13743,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13745,
                        "src": "576:6:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13742,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "576:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "575:8:55"
                  },
                  "scope": 13773,
                  "src": "469:115:55",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 13754,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriorTotalVotingPower",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13747,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 13754,
                        "src": "621:18:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 13746,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "621:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13749,
                        "name": "time",
                        "nodeType": "VariableDeclaration",
                        "scope": 13754,
                        "src": "641:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13748,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "641:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "620:34:55"
                  },
                  "returnParameters": {
                    "id": 13753,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13752,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13754,
                        "src": "678:6:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13751,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "678:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "677:8:55"
                  },
                  "scope": 13773,
                  "src": "587:99:55",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 13765,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriorWeightedStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13756,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 13765,
                        "src": "723:15:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13755,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "723:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13758,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 13765,
                        "src": "742:19:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13757,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "742:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13760,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 13765,
                        "src": "765:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13759,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "765:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "719:61:55"
                  },
                  "returnParameters": {
                    "id": 13764,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13763,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13765,
                        "src": "804:6:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13762,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "804:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "803:8:55"
                  },
                  "scope": 13773,
                  "src": "689:123:55",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 13772,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "timestampToLockDate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13768,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13767,
                        "name": "timestamp",
                        "nodeType": "VariableDeclaration",
                        "scope": 13772,
                        "src": "844:17:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13766,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "844:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "843:19:55"
                  },
                  "returnParameters": {
                    "id": 13771,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13770,
                        "name": "lockDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 13772,
                        "src": "886:16:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13769,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "886:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "885:18:55"
                  },
                  "scope": 13773,
                  "src": "815:89:55",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 13774,
              "src": "179:727:55"
            }
          ],
          "src": "0:907:55"
        },
        "id": 55
      },
      "contracts/governance/Staking/SafeMath96.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Staking/SafeMath96.sol",
          "exportedSymbols": {
            "SafeMath96": [
              13959
            ]
          },
          "id": 13960,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13775,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:56"
            },
            {
              "id": 13776,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:56"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title SafeMath96 contract.\n@notice Improved Solidity's arithmetic operations with added overflow checks.\n@dev SafeMath96 uses uint96, unsigned integers of 96 bits length, so every\ninteger from 0 to 2^96-1 can be operated.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\nSafeMath restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this contract instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.\n",
              "fullyImplemented": true,
              "id": 13959,
              "linearizedBaseContracts": [
                13959
              ],
              "name": "SafeMath96",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 13798,
                    "nodeType": "Block",
                    "src": "883:60:56",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13786,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13778,
                                "src": "895:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_4294967296_by_1",
                                  "typeString": "int_const 4294967296"
                                },
                                "id": 13789,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 13787,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "899:1:56",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3332",
                                  "id": 13788,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "902:2:56",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "899:5:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4294967296_by_1",
                                  "typeString": "int_const 4294967296"
                                }
                              },
                              "src": "895:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13791,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13780,
                              "src": "906:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13785,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "887:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "887:32:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13793,
                        "nodeType": "ExpressionStatement",
                        "src": "887:32:56"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13795,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13778,
                              "src": "937:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13794,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "930:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint32_$",
                              "typeString": "type(uint32)"
                            },
                            "typeName": "uint32"
                          },
                          "id": 13796,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "930:9:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "functionReturnParameters": 13784,
                        "id": 13797,
                        "nodeType": "Return",
                        "src": "923:16:56"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 13799,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safe32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13781,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13778,
                        "name": "n",
                        "nodeType": "VariableDeclaration",
                        "scope": 13799,
                        "src": "813:9:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13777,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "813:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13780,
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "scope": 13799,
                        "src": "824:26:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13779,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "824:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "812:39:56"
                  },
                  "returnParameters": {
                    "id": 13784,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13783,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13799,
                        "src": "875:6:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 13782,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "875:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "874:8:56"
                  },
                  "scope": 13959,
                  "src": "797:146:56",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13821,
                    "nodeType": "Block",
                    "src": "1032:60:56",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13809,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13801,
                                "src": "1044:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                  "typeString": "int_const 18446744073709551616"
                                },
                                "id": 13812,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 13810,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1048:1:56",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3634",
                                  "id": 13811,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1051:2:56",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_64_by_1",
                                    "typeString": "int_const 64"
                                  },
                                  "value": "64"
                                },
                                "src": "1048:5:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                  "typeString": "int_const 18446744073709551616"
                                }
                              },
                              "src": "1044:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13814,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13803,
                              "src": "1055:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13808,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1036:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1036:32:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13816,
                        "nodeType": "ExpressionStatement",
                        "src": "1036:32:56"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13818,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13801,
                              "src": "1086:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13817,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1079:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint64_$",
                              "typeString": "type(uint64)"
                            },
                            "typeName": "uint64"
                          },
                          "id": 13819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1079:9:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 13807,
                        "id": 13820,
                        "nodeType": "Return",
                        "src": "1072:16:56"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 13822,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safe64",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13804,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13801,
                        "name": "n",
                        "nodeType": "VariableDeclaration",
                        "scope": 13822,
                        "src": "962:9:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13800,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "962:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13803,
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "scope": 13822,
                        "src": "973:26:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13802,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "973:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "961:39:56"
                  },
                  "returnParameters": {
                    "id": 13807,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13806,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13822,
                        "src": "1024:6:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 13805,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1024:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1023:8:56"
                  },
                  "scope": 13959,
                  "src": "946:146:56",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13844,
                    "nodeType": "Block",
                    "src": "1181:60:56",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13832,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13824,
                                "src": "1193:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                  "typeString": "int_const 79228162514264337593543950336"
                                },
                                "id": 13835,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 13833,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1197:1:56",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3936",
                                  "id": 13834,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1200:2:56",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_96_by_1",
                                    "typeString": "int_const 96"
                                  },
                                  "value": "96"
                                },
                                "src": "1197:5:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                  "typeString": "int_const 79228162514264337593543950336"
                                }
                              },
                              "src": "1193:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13837,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13826,
                              "src": "1204:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13831,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1185:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1185:32:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13839,
                        "nodeType": "ExpressionStatement",
                        "src": "1185:32:56"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13841,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13824,
                              "src": "1235:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13840,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1228:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint96_$",
                              "typeString": "type(uint96)"
                            },
                            "typeName": "uint96"
                          },
                          "id": 13842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1228:9:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 13830,
                        "id": 13843,
                        "nodeType": "Return",
                        "src": "1221:16:56"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 13845,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safe96",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13827,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13824,
                        "name": "n",
                        "nodeType": "VariableDeclaration",
                        "scope": 13845,
                        "src": "1111:9:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13823,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1111:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13826,
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "scope": 13845,
                        "src": "1122:26:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13825,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1122:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1110:39:56"
                  },
                  "returnParameters": {
                    "id": 13830,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13829,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13845,
                        "src": "1173:6:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13828,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "1173:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1172:8:56"
                  },
                  "scope": 13959,
                  "src": "1095:146:56",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13871,
                    "nodeType": "Block",
                    "src": "1619:69:56",
                    "statements": [
                      {
                        "assignments": [
                          13857
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13857,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 13871,
                            "src": "1623:8:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13856,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "1623:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13861,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 13860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13858,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13847,
                            "src": "1634:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 13859,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13849,
                            "src": "1638:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "1634:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1623:16:56"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 13865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13863,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13857,
                                "src": "1651:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 13864,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13847,
                                "src": "1656:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "1651:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13866,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13851,
                              "src": "1659:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13862,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1643:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1643:29:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13868,
                        "nodeType": "ExpressionStatement",
                        "src": "1643:29:56"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13869,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13857,
                          "src": "1683:1:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 13855,
                        "id": 13870,
                        "nodeType": "Return",
                        "src": "1676:8:56"
                      }
                    ]
                  },
                  "documentation": "@notice Adds two unsigned integers, reverting on overflow.\n@dev Counterpart to Solidity's `+` operator.\n@param a First integer.\n@param b Second integer.\n@param errorMessage The revert message on overflow.\n@return The safe addition a+b.\n",
                  "id": 13872,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add96",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13852,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13847,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 13872,
                        "src": "1534:8:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13846,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "1534:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13849,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 13872,
                        "src": "1546:8:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13848,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "1546:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13851,
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "scope": 13872,
                        "src": "1558:26:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13850,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1558:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1530:57:56"
                  },
                  "returnParameters": {
                    "id": 13855,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13854,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13872,
                        "src": "1611:6:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13853,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "1611:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1610:8:56"
                  },
                  "scope": 13959,
                  "src": "1516:172:56",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13894,
                    "nodeType": "Block",
                    "src": "2078:53:56",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 13886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13884,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13876,
                                "src": "2090:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 13885,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13874,
                                "src": "2095:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "2090:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13887,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13878,
                              "src": "2098:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13883,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2082:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2082:29:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13889,
                        "nodeType": "ExpressionStatement",
                        "src": "2082:29:56"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 13892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13890,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13874,
                            "src": "2122:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 13891,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13876,
                            "src": "2126:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "2122:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 13882,
                        "id": 13893,
                        "nodeType": "Return",
                        "src": "2115:12:56"
                      }
                    ]
                  },
                  "documentation": "@notice Substracts two unsigned integers, reverting on underflow.\n@dev Counterpart to Solidity's `-` operator.\n@param a First integer.\n@param b Second integer.\n@param errorMessage The revert message on underflow.\n@return The safe substraction a-b.\n",
                  "id": 13895,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub96",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13879,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13874,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 13895,
                        "src": "1993:8:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13873,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "1993:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13876,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 13895,
                        "src": "2005:8:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13875,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2005:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13878,
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "scope": 13895,
                        "src": "2017:26:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13877,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2017:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1989:57:56"
                  },
                  "returnParameters": {
                    "id": 13882,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13881,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13895,
                        "src": "2070:6:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13880,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2070:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2069:8:56"
                  },
                  "scope": 13959,
                  "src": "1975:156:56",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13930,
                    "nodeType": "Block",
                    "src": "2514:108:56",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 13908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13906,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13897,
                            "src": "2522:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2527:1:56",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2522:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 13912,
                        "nodeType": "IfStatement",
                        "src": "2518:30:56",
                        "trueBody": {
                          "id": 13911,
                          "nodeType": "Block",
                          "src": "2530:18:56",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 13909,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2542:1:56",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 13905,
                              "id": 13910,
                              "nodeType": "Return",
                              "src": "2535:8:56"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          13914
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13914,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 13930,
                            "src": "2552:8:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13913,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "2552:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13918,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 13917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13915,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13897,
                            "src": "2563:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 13916,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13899,
                            "src": "2567:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "2563:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2552:16:56"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 13924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "id": 13922,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 13920,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13914,
                                  "src": "2580:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 13921,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13897,
                                  "src": "2584:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "2580:5:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 13923,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13899,
                                "src": "2589:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "2580:10:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13925,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13901,
                              "src": "2592:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13919,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2572:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2572:33:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13927,
                        "nodeType": "ExpressionStatement",
                        "src": "2572:33:56"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13928,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13914,
                          "src": "2617:1:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 13905,
                        "id": 13929,
                        "nodeType": "Return",
                        "src": "2610:8:56"
                      }
                    ]
                  },
                  "documentation": "@notice Multiplies two unsigned integers, reverting on overflow.\n@dev Counterpart to Solidity's `*` operator.\n@param a First integer.\n@param b Second integer.\n@param errorMessage The revert message on overflow.\n@return The safe product a*b.\n",
                  "id": 13931,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul96",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13902,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13897,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 13931,
                        "src": "2429:8:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13896,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2429:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13899,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 13931,
                        "src": "2441:8:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13898,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2441:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13901,
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "scope": 13931,
                        "src": "2453:26:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13900,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2453:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2425:57:56"
                  },
                  "returnParameters": {
                    "id": 13905,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13904,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13931,
                        "src": "2506:6:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13903,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2506:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2505:8:56"
                  },
                  "scope": 13959,
                  "src": "2411:211:56",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13957,
                    "nodeType": "Block",
                    "src": "3003:209:56",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 13945,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13943,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13935,
                                "src": "3075:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 13944,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3079:1:56",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3075:5:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13946,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13937,
                              "src": "3082:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13942,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3067:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3067:28:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13948,
                        "nodeType": "ExpressionStatement",
                        "src": "3067:28:56"
                      },
                      {
                        "assignments": [
                          13950
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13950,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 13957,
                            "src": "3099:8:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 13949,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "3099:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13954,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 13953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13951,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13933,
                            "src": "3110:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 13952,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13935,
                            "src": "3114:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "3110:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3099:16:56"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13955,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13950,
                          "src": "3207:1:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 13941,
                        "id": 13956,
                        "nodeType": "Return",
                        "src": "3200:8:56"
                      }
                    ]
                  },
                  "documentation": "@notice Divides two unsigned integers, reverting on overflow.\n@dev Counterpart to Solidity's `/` operator.\n@param a First integer.\n@param b Second integer.\n@param errorMessage The revert message on overflow.\n@return The safe division a/b.\n",
                  "id": 13958,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div96",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13933,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 13958,
                        "src": "2918:8:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13932,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2918:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13935,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 13958,
                        "src": "2930:8:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13934,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2930:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13937,
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "scope": 13958,
                        "src": "2942:26:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 13936,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2942:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2914:57:56"
                  },
                  "returnParameters": {
                    "id": 13941,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13940,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 13958,
                        "src": "2995:6:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13939,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2995:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2994:8:56"
                  },
                  "scope": 13959,
                  "src": "2900:312:56",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 13960,
              "src": "774:2440:56"
            }
          ],
          "src": "0:3215:56"
        },
        "id": 56
      },
      "contracts/governance/Staking/Staking.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Staking/Staking.sol",
          "exportedSymbols": {
            "Staking": [
              15557
            ]
          },
          "id": 15558,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13961,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:57"
            },
            {
              "id": 13962,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:57"
            },
            {
              "absolutePath": "contracts/governance/Staking/WeightedStaking.sol",
              "file": "./WeightedStaking.sol",
              "id": 13963,
              "nodeType": "ImportDirective",
              "scope": 15558,
              "sourceUnit": 16684,
              "src": "60:31:57",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/IStaking.sol",
              "file": "./IStaking.sol",
              "id": 13964,
              "nodeType": "ImportDirective",
              "scope": 15558,
              "sourceUnit": 13774,
              "src": "92:24:57",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/rsk/RSKAddrValidator.sol",
              "file": "../../rsk/RSKAddrValidator.sol",
              "id": 13965,
              "nodeType": "ImportDirective",
              "scope": 15558,
              "sourceUnit": 42701,
              "src": "117:40:57",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/ITeamVesting.sol",
              "file": "../Vesting/ITeamVesting.sol",
              "id": 13966,
              "nodeType": "ImportDirective",
              "scope": 15558,
              "sourceUnit": 18580,
              "src": "158:37:57",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/IVesting.sol",
              "file": "../Vesting/IVesting.sol",
              "id": 13967,
              "nodeType": "ImportDirective",
              "scope": 15558,
              "sourceUnit": 18598,
              "src": "196:33:57",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/ApprovalReceiver.sol",
              "file": "../ApprovalReceiver.sol",
              "id": 13968,
              "nodeType": "ImportDirective",
              "scope": 15558,
              "sourceUnit": 10704,
              "src": "230:33:57",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../../openzeppelin/SafeMath.sol",
              "id": 13969,
              "nodeType": "ImportDirective",
              "scope": 15558,
              "sourceUnit": 42310,
              "src": "264:41:57",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 13970,
                    "name": "IStaking",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13773,
                    "src": "905:8:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IStaking_$13773",
                      "typeString": "contract IStaking"
                    }
                  },
                  "id": 13971,
                  "nodeType": "InheritanceSpecifier",
                  "src": "905:8:57"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 13972,
                    "name": "WeightedStaking",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16683,
                    "src": "915:15:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WeightedStaking_$16683",
                      "typeString": "contract WeightedStaking"
                    }
                  },
                  "id": 13973,
                  "nodeType": "InheritanceSpecifier",
                  "src": "915:15:57"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 13974,
                    "name": "ApprovalReceiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10703,
                    "src": "932:16:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ApprovalReceiver_$10703",
                      "typeString": "contract ApprovalReceiver"
                    }
                  },
                  "id": 13975,
                  "nodeType": "InheritanceSpecifier",
                  "src": "932:16:57"
                }
              ],
              "contractDependencies": [
                10703,
                10802,
                13706,
                13773,
                13959,
                15713,
                16683,
                41125,
                41798,
                44823
              ],
              "contractKind": "contract",
              "documentation": "@title Staking contract.\n@notice Pay-in and pay-out function for staking and withdrawing tokens.\nStaking is delegated and vested: To gain voting power, SOV holders must\nstake their SOV for a given period of time. Aside from Bitocracy\nparticipation, there's a financially-rewarding reason for staking SOV.\nTokenholders who stake their SOV receive staking rewards, a pro-rata share\nof the revenue that the platform generates from various transaction fees\nplus revenues from stakers who have a portion of their SOV slashed for\nearly unstaking.\n",
              "fullyImplemented": true,
              "id": 15557,
              "linearizedBaseContracts": [
                15557,
                10703,
                44823,
                10802,
                16683,
                13706,
                13959,
                15713,
                41798,
                41125,
                13773
              ],
              "name": "Staking",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 13978,
                  "libraryName": {
                    "contractScope": null,
                    "id": 13976,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "958:8:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "952:27:57",
                  "typeName": {
                    "id": 13977,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "971:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 13981,
                  "name": "FOUR_WEEKS",
                  "nodeType": "VariableDeclaration",
                  "scope": 15557,
                  "src": "1042:37:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13979,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1042:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "34",
                    "id": 13980,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1072:7:57",
                    "subdenomination": "weeks",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2419200_by_1",
                      "typeString": "int_const 2419200"
                    },
                    "value": "4"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14002,
                    "nodeType": "Block",
                    "src": "1544:69:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13993,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "1555:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 13994,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1555:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13995,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13983,
                              "src": "1567:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13996,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13985,
                              "src": "1575:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13997,
                              "name": "stakeFor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13987,
                              "src": "1582:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13998,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13989,
                              "src": "1592:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 13999,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1603:5:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13992,
                            "name": "_stake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14174,
                            "src": "1548:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint96_$_t_uint256_$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint96,uint256,address,address,bool)"
                            }
                          },
                          "id": 14000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1548:61:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14001,
                        "nodeType": "ExpressionStatement",
                        "src": "1548:61:57"
                      }
                    ]
                  },
                  "documentation": "@notice Stake the given amount for the given duration of time.\n@param amount The number of tokens to stake.\n@param until Timestamp indicating the date until which to stake.\n@param stakeFor The address to stake the tokens for or 0x0 if staking for oneself.\n@param delegatee The address of the delegatee or 0x0 if there is none.\n",
                  "id": 14003,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "stake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13990,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13983,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 14003,
                        "src": "1460:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 13982,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "1460:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13985,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 14003,
                        "src": "1477:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13984,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1477:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13987,
                        "name": "stakeFor",
                        "nodeType": "VariableDeclaration",
                        "scope": 14003,
                        "src": "1494:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13986,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1494:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13989,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 14003,
                        "src": "1514:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13988,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1514:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1456:78:57"
                  },
                  "returnParameters": {
                    "id": 13991,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1544:0:57"
                  },
                  "scope": 15557,
                  "src": "1442:171:57",
                  "stateMutability": "nonpayable",
                  "superFunction": 13734,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 14027,
                    "nodeType": "Block",
                    "src": "2311:65:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14019,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14005,
                              "src": "2322:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14020,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14007,
                              "src": "2330:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14021,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14009,
                              "src": "2338:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14022,
                              "name": "stakeFor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14011,
                              "src": "2345:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14023,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14013,
                              "src": "2355:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 14024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2366:5:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 14018,
                            "name": "_stake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14174,
                            "src": "2315:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint96_$_t_uint256_$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint96,uint256,address,address,bool)"
                            }
                          },
                          "id": 14025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2315:57:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14026,
                        "nodeType": "ExpressionStatement",
                        "src": "2315:57:57"
                      }
                    ]
                  },
                  "documentation": "@notice Stake the given amount for the given duration of time.\n@dev This function will be invoked from receiveApproval\n@dev SOV.approveAndCall -> this.receiveApproval -> this.stakeWithApproval\n@param sender The sender of SOV.approveAndCall\n@param amount The number of tokens to stake.\n@param until Timestamp indicating the date until which to stake.\n@param stakeFor The address to stake the tokens for or 0x0 if staking for oneself.\n@param delegatee The address of the delegatee or 0x0 if there is none.\n",
                  "id": 14028,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 14016,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 14015,
                        "name": "onlyThisContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10510,
                        "src": "2294:16:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2294:16:57"
                    }
                  ],
                  "name": "stakeWithApproval",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14014,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14005,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 14028,
                        "src": "2194:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14004,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2194:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14007,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 14028,
                        "src": "2212:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14006,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2212:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14009,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 14028,
                        "src": "2229:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14008,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2229:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14011,
                        "name": "stakeFor",
                        "nodeType": "VariableDeclaration",
                        "scope": 14028,
                        "src": "2246:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14010,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2246:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14013,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 14028,
                        "src": "2266:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14012,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2266:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2190:96:57"
                  },
                  "returnParameters": {
                    "id": 14017,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2311:0:57"
                  },
                  "scope": 15557,
                  "src": "2164:212:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14173,
                    "nodeType": "Block",
                    "src": "2988:1722:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 14046,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 14044,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14032,
                                "src": "3000:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 14045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3009:1:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3000:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a7374616b653a20616d6f756e74206f6620746f6b656e7320746f207374616b65206e6565647320746f20626520626967676572207468616e2030",
                              "id": 14047,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3012:69:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5f07c0b227b73a0e57298c502ebeaf7ce30f11c54c8b5c3637c0f10f228065b6",
                                "typeString": "literal_string \"Staking::stake: amount of tokens to stake needs to be bigger than 0\""
                              },
                              "value": "Staking::stake: amount of tokens to stake needs to be bigger than 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5f07c0b227b73a0e57298c502ebeaf7ce30f11c54c8b5c3637c0f10f228065b6",
                                "typeString": "literal_string \"Staking::stake: amount of tokens to stake needs to be bigger than 0\""
                              }
                            ],
                            "id": 14043,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2992:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2992:90:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14049,
                        "nodeType": "ExpressionStatement",
                        "src": "2992:90:57"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 14051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3091:13:57",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 14050,
                            "name": "timeAdjusted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14040,
                            "src": "3092:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14059,
                        "nodeType": "IfStatement",
                        "src": "3087:63:57",
                        "trueBody": {
                          "id": 14058,
                          "nodeType": "Block",
                          "src": "3106:44:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14052,
                                  "name": "until",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14034,
                                  "src": "3111:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14054,
                                      "name": "until",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14034,
                                      "src": "3139:5:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 14053,
                                    "name": "timestampToLockDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16607,
                                    "src": "3119:19:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 14055,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3119:26:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3111:34:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14057,
                              "nodeType": "ExpressionStatement",
                              "src": "3111:34:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 14061,
                                "name": "until",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14034,
                                "src": "3161:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14062,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "3169:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 14063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3169:15:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3161:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a74696d657374616d70546f4c6f636b446174653a207374616b696e6720706572696f6420746f6f2073686f7274",
                              "id": 14065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3186:56:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ae737a04db042cade1a0e3bf02cb59d4bd59bf2677b9cebaac62a7a87fa8aed4",
                                "typeString": "literal_string \"Staking::timestampToLockDate: staking period too short\""
                              },
                              "value": "Staking::timestampToLockDate: staking period too short"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ae737a04db042cade1a0e3bf02cb59d4bd59bf2677b9cebaac62a7a87fa8aed4",
                                "typeString": "literal_string \"Staking::timestampToLockDate: staking period too short\""
                              }
                            ],
                            "id": 14060,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3153:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14066,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3153:90:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14067,
                        "nodeType": "ExpressionStatement",
                        "src": "3153:90:57"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 14072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14068,
                            "name": "stakeFor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14036,
                            "src": "3312:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 14070,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3332:1:57",
                                "subdenomination": null,
                                "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": 14069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3324:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 14071,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3324:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "3312:22:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14078,
                        "nodeType": "IfStatement",
                        "src": "3308:55:57",
                        "trueBody": {
                          "id": 14077,
                          "nodeType": "Block",
                          "src": "3336:27:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14075,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14073,
                                  "name": "stakeFor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14036,
                                  "src": "3341:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 14074,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14030,
                                  "src": "3352:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3341:17:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 14076,
                              "nodeType": "ExpressionStatement",
                              "src": "3341:17:57"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 14083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14079,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14038,
                            "src": "3432:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 14081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3453:1:57",
                                "subdenomination": null,
                                "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": 14080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3445:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 14082,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3445:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "3432:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14089,
                        "nodeType": "IfStatement",
                        "src": "3428:59:57",
                        "trueBody": {
                          "id": 14088,
                          "nodeType": "Block",
                          "src": "3457:30:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14086,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14084,
                                  "name": "delegatee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14038,
                                  "src": "3462:9:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 14085,
                                  "name": "stakeFor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14036,
                                  "src": "3474:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3462:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 14087,
                              "nodeType": "ExpressionStatement",
                              "src": "3462:20:57"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 14091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3549:13:57",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 14090,
                            "name": "timeAdjusted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14040,
                            "src": "3550:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14110,
                        "nodeType": "IfStatement",
                        "src": "3545:136:57",
                        "trueBody": {
                          "id": 14109,
                          "nodeType": "Block",
                          "src": "3564:117:57",
                          "statements": [
                            {
                              "assignments": [
                                14093
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14093,
                                  "name": "latest",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14109,
                                  "src": "3569:14:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 14092,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3569:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14100,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 14098,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14095,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44984,
                                        "src": "3606:5:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 14096,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "3606:15:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 14097,
                                      "name": "MAX_DURATION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15604,
                                      "src": "3624:12:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3606:30:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 14094,
                                  "name": "timestampToLockDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16607,
                                  "src": "3586:19:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) view returns (uint256)"
                                  }
                                },
                                "id": 14099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3586:51:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3569:68:57"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14103,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14101,
                                  "name": "until",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14034,
                                  "src": "3646:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 14102,
                                  "name": "latest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14093,
                                  "src": "3654:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3646:14:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 14108,
                              "nodeType": "IfStatement",
                              "src": "3642:34:57",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14106,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 14104,
                                    "name": "until",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14034,
                                    "src": "3662:5:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "id": 14105,
                                    "name": "latest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14093,
                                    "src": "3670:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3662:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 14107,
                                "nodeType": "ExpressionStatement",
                                "src": "3662:14:57"
                              }
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          14112
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14112,
                            "name": "previousBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 14173,
                            "src": "3685:22:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 14111,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "3685:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14117,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14114,
                              "name": "stakeFor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14036,
                              "src": "3725:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14115,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14034,
                              "src": "3735:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14113,
                            "name": "currentBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14913,
                            "src": "3710:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (address,uint256) view returns (uint96)"
                            }
                          },
                          "id": 14116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3710:31:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3685:56:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14119,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14030,
                              "src": "3788:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14120,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14032,
                              "src": "3796:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14121,
                              "name": "stakeFor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14036,
                              "src": "3804:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14122,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14034,
                              "src": "3814:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14118,
                            "name": "_increaseStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14384,
                            "src": "3773:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint96_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint96,address,uint256)"
                            }
                          },
                          "id": 14123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3773:47:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14124,
                        "nodeType": "ExpressionStatement",
                        "src": "3773:47:57"
                      },
                      {
                        "assignments": [
                          14126
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14126,
                            "name": "previousDelegatee",
                            "nodeType": "VariableDeclaration",
                            "scope": 14173,
                            "src": "4118:25:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 14125,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4118:7:57",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14132,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 14127,
                              "name": "delegates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15631,
                              "src": "4146:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 14129,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14128,
                              "name": "stakeFor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14036,
                              "src": "4156:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4146:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 14131,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 14130,
                            "name": "until",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14034,
                            "src": "4166:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4146:26:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4118:54:57"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 14135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14133,
                            "name": "previousDelegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14126,
                            "src": "4180:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 14134,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14038,
                            "src": "4201:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4180:30:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14159,
                        "nodeType": "IfStatement",
                        "src": "4176:380:57",
                        "trueBody": {
                          "id": 14158,
                          "nodeType": "Block",
                          "src": "4212:344:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14142,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 14136,
                                      "name": "delegates",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15631,
                                      "src": "4247:9:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => address))"
                                      }
                                    },
                                    "id": 14139,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 14137,
                                      "name": "stakeFor",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14036,
                                      "src": "4257:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4247:19:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 14140,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 14138,
                                    "name": "until",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14034,
                                    "src": "4267:5:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4247:26:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 14141,
                                  "name": "delegatee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14038,
                                  "src": "4276:9:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4247:38:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 14143,
                              "nodeType": "ExpressionStatement",
                              "src": "4247:38:57"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14145,
                                    "name": "previousDelegatee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14126,
                                    "src": "4385:17:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 14146,
                                    "name": "until",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14034,
                                    "src": "4404:5:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 14147,
                                    "name": "previousBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14112,
                                    "src": "4411:15:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  ],
                                  "id": 14144,
                                  "name": "_decreaseDelegateStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13467,
                                  "src": "4362:22:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint96_$returns$__$",
                                    "typeString": "function (address,uint256,uint96)"
                                  }
                                },
                                "id": 14148,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4362:65:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14149,
                              "nodeType": "ExpressionStatement",
                              "src": "4362:65:57"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14156,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14150,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14032,
                                  "src": "4476:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14152,
                                      "name": "previousBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14112,
                                      "src": "4491:15:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 14153,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14032,
                                      "src": "4508:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "5374616b696e673a3a7374616b653a2062616c616e6365206f766572666c6f77",
                                      "id": 14154,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4516:34:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_f926558c24b9deffd1438d8f7cc761b6f58b4040ea6db7c0252084e8d9ace8a2",
                                        "typeString": "literal_string \"Staking::stake: balance overflow\""
                                      },
                                      "value": "Staking::stake: balance overflow"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_f926558c24b9deffd1438d8f7cc761b6f58b4040ea6db7c0252084e8d9ace8a2",
                                        "typeString": "literal_string \"Staking::stake: balance overflow\""
                                      }
                                    ],
                                    "id": 14151,
                                    "name": "add96",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13872,
                                    "src": "4485:5:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                      "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                    }
                                  },
                                  "id": 14155,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4485:66:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "4476:75:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 14157,
                              "nodeType": "ExpressionStatement",
                              "src": "4476:75:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14161,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14038,
                              "src": "4610:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14162,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14034,
                              "src": "4621:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14163,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14032,
                              "src": "4628:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14160,
                            "name": "_increaseDelegateStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13412,
                            "src": "4587:22:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint256,uint96)"
                            }
                          },
                          "id": 14164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4587:48:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14165,
                        "nodeType": "ExpressionStatement",
                        "src": "4587:48:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14167,
                              "name": "stakeFor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14036,
                              "src": "4660:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14168,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14034,
                              "src": "4670:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14169,
                              "name": "previousDelegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14126,
                              "src": "4677:17:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14170,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14038,
                              "src": "4696:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 14166,
                            "name": "DelegateChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13131,
                            "src": "4644:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,address,address)"
                            }
                          },
                          "id": 14171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4644:62:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14172,
                        "nodeType": "EmitStatement",
                        "src": "4639:67:57"
                      }
                    ]
                  },
                  "documentation": "@notice Send sender's tokens to this contract and update its staked balance.\n@param sender The sender of the tokens.\n@param amount The number of tokens to send.\n@param until The date until which the tokens will be staked.\n@param stakeFor The beneficiary whose stake will be increased.\n@param delegatee The address of the delegatee or stakeFor if default 0x0.\n@param timeAdjusted Whether fixing date to stacking periods or not.\n",
                  "id": 14174,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_stake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14041,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14030,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 14174,
                        "src": "2865:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14029,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2865:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14032,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 14174,
                        "src": "2883:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14031,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2883:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14034,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 14174,
                        "src": "2900:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14033,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2900:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14036,
                        "name": "stakeFor",
                        "nodeType": "VariableDeclaration",
                        "scope": 14174,
                        "src": "2917:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14035,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2917:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14038,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 14174,
                        "src": "2937:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14037,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2937:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14040,
                        "name": "timeAdjusted",
                        "nodeType": "VariableDeclaration",
                        "scope": 14174,
                        "src": "2958:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14039,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2958:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2861:117:57"
                  },
                  "returnParameters": {
                    "id": 14042,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2988:0:57"
                  },
                  "scope": 15557,
                  "src": "2846:1864:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14323,
                    "nodeType": "Block",
                    "src": "4976:1443:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 14181,
                            "name": "until",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14178,
                            "src": "4980:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14183,
                                "name": "until",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14178,
                                "src": "5008:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 14182,
                              "name": "timestampToLockDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16607,
                              "src": "4988:19:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view returns (uint256)"
                              }
                            },
                            "id": 14184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4988:26:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4980:34:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14186,
                        "nodeType": "ExpressionStatement",
                        "src": "4980:34:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 14188,
                                "name": "previousLock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14176,
                                "src": "5026:12:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 14189,
                                "name": "until",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14178,
                                "src": "5042:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5026:21:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a657874656e645374616b696e674475726174696f6e3a2063616e6e6f742072656475636520746865207374616b696e67206475726174696f6e",
                              "id": 14191,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5049:68:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_120f171ac3f00ab3044f0db484f6f8ac7715469321731115ad7dc450d7ffb5b1",
                                "typeString": "literal_string \"Staking::extendStakingDuration: cannot reduce the staking duration\""
                              },
                              "value": "Staking::extendStakingDuration: cannot reduce the staking duration"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_120f171ac3f00ab3044f0db484f6f8ac7715469321731115ad7dc450d7ffb5b1",
                                "typeString": "literal_string \"Staking::extendStakingDuration: cannot reduce the staking duration\""
                              }
                            ],
                            "id": 14187,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5018:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5018:100:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14193,
                        "nodeType": "ExpressionStatement",
                        "src": "5018:100:57"
                      },
                      {
                        "assignments": [
                          14195
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14195,
                            "name": "latest",
                            "nodeType": "VariableDeclaration",
                            "scope": 14323,
                            "src": "5188:14:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14194,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5188:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14202,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14197,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "5225:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 14198,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5225:15:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 14199,
                                "name": "MAX_DURATION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15604,
                                "src": "5243:12:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5225:30:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14196,
                            "name": "timestampToLockDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16607,
                            "src": "5205:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 14201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5205:51:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5188:68:57"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14203,
                            "name": "until",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14178,
                            "src": "5264:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 14204,
                            "name": "latest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14195,
                            "src": "5272:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5264:14:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14210,
                        "nodeType": "IfStatement",
                        "src": "5260:34:57",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 14208,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 14206,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14178,
                              "src": "5280:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 14207,
                              "name": "latest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14195,
                              "src": "5288:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5280:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14209,
                          "nodeType": "ExpressionStatement",
                          "src": "5280:14:57"
                        }
                      },
                      {
                        "assignments": [
                          14212
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14212,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 14323,
                            "src": "5433:13:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 14211,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "5433:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14222,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14214,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "5474:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5474:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14216,
                              "name": "previousLock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14176,
                              "src": "5486:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14220,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14217,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "5500:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 14218,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5500:12:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 14219,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5515:1:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "5500:16:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14213,
                            "name": "_getPriorUserStakeByDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16502,
                            "src": "5449:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (address,uint256,uint256) view returns (uint96)"
                            }
                          },
                          "id": 14221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5449:68:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5433:84:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 14226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 14224,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14212,
                                "src": "5529:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 14225,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5538:1:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5529:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a657874656e645374616b696e674475726174696f6e3a206e6f7468696e67207374616b656420756e74696c207468652070726576696f7573206c6f636b2064617465",
                              "id": 14227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5541:77:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_61399b1835474a463a6177ded5c49ca02021548cb6b737094a21041f0fb29bd1",
                                "typeString": "literal_string \"Staking::extendStakingDuration: nothing staked until the previous lock date\""
                              },
                              "value": "Staking::extendStakingDuration: nothing staked until the previous lock date"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_61399b1835474a463a6177ded5c49ca02021548cb6b737094a21041f0fb29bd1",
                                "typeString": "literal_string \"Staking::extendStakingDuration: nothing staked until the previous lock date\""
                              }
                            ],
                            "id": 14223,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5521:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5521:98:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14229,
                        "nodeType": "ExpressionStatement",
                        "src": "5521:98:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14231,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "5642:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14232,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5642:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14233,
                              "name": "previousLock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14176,
                              "src": "5654:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14234,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14212,
                              "src": "5668:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14230,
                            "name": "_decreaseUserStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13291,
                            "src": "5623:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint256,uint96)"
                            }
                          },
                          "id": 14235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5623:52:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14236,
                        "nodeType": "ExpressionStatement",
                        "src": "5623:52:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14238,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "5698:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5698:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14240,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14178,
                              "src": "5710:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14241,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14212,
                              "src": "5717:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14237,
                            "name": "_increaseUserStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13245,
                            "src": "5679:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint256,uint96)"
                            }
                          },
                          "id": 14242,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5679:45:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14243,
                        "nodeType": "ExpressionStatement",
                        "src": "5679:45:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14245,
                              "name": "previousLock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14176,
                              "src": "5748:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14246,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14212,
                              "src": "5762:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14244,
                            "name": "_decreaseDailyStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13640,
                            "src": "5728:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint96_$returns$__$",
                              "typeString": "function (uint256,uint96)"
                            }
                          },
                          "id": 14247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5728:41:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14248,
                        "nodeType": "ExpressionStatement",
                        "src": "5728:41:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14250,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14178,
                              "src": "5793:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14251,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14212,
                              "src": "5800:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14249,
                            "name": "_increaseDailyStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13601,
                            "src": "5773:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint96_$returns$__$",
                              "typeString": "function (uint256,uint96)"
                            }
                          },
                          "id": 14252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5773:34:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14253,
                        "nodeType": "ExpressionStatement",
                        "src": "5773:34:57"
                      },
                      {
                        "assignments": [
                          14255
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14255,
                            "name": "delegateFrom",
                            "nodeType": "VariableDeclaration",
                            "scope": 14323,
                            "src": "5947:20:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 14254,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5947:7:57",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14262,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 14256,
                              "name": "delegates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15631,
                              "src": "5970:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 14259,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14257,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "5980:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5980:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5970:21:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 14261,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 14260,
                            "name": "previousLock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14176,
                            "src": "5992:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5970:35:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5947:58:57"
                      },
                      {
                        "assignments": [
                          14264
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14264,
                            "name": "delegateTo",
                            "nodeType": "VariableDeclaration",
                            "scope": 14323,
                            "src": "6009:18:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 14263,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6009:7:57",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14271,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 14265,
                              "name": "delegates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15631,
                              "src": "6030:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 14268,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14266,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6040:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14267,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6040:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6030:21:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 14270,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 14269,
                            "name": "until",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14178,
                            "src": "6052:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6030:28:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6009:49:57"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 14276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14272,
                            "name": "delegateTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14264,
                            "src": "6066:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 14274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6088:1:57",
                                "subdenomination": null,
                                "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": 14273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6080:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 14275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6080:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6066:24:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14291,
                        "nodeType": "IfStatement",
                        "src": "6062:113:57",
                        "trueBody": {
                          "id": 14290,
                          "nodeType": "Block",
                          "src": "6092:83:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14277,
                                  "name": "delegateTo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14264,
                                  "src": "6097:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 14278,
                                  "name": "delegateFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14255,
                                  "src": "6110:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "6097:25:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 14280,
                              "nodeType": "ExpressionStatement",
                              "src": "6097:25:57"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 14281,
                                      "name": "delegates",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15631,
                                      "src": "6127:9:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => address))"
                                      }
                                    },
                                    "id": 14285,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14282,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44994,
                                        "src": "6137:3:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 14283,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "6137:10:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6127:21:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 14286,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 14284,
                                    "name": "until",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14178,
                                    "src": "6149:5:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6127:28:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 14287,
                                  "name": "delegateFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14255,
                                  "src": "6158:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "6127:43:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 14289,
                              "nodeType": "ExpressionStatement",
                              "src": "6127:43:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 14292,
                                "name": "delegates",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15631,
                                "src": "6178:9:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => address))"
                                }
                              },
                              "id": 14296,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14293,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "6188:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 14294,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6188:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6178:21:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 14297,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14295,
                              "name": "previousLock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14176,
                              "src": "6200:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6178:35:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 14299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6224:1:57",
                                "subdenomination": null,
                                "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": 14298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6216:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 14300,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6216:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6178:48:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 14302,
                        "nodeType": "ExpressionStatement",
                        "src": "6178:48:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14304,
                              "name": "delegateFrom",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14255,
                              "src": "6253:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14305,
                              "name": "previousLock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14176,
                              "src": "6267:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14306,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14212,
                              "src": "6281:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14303,
                            "name": "_decreaseDelegateStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13467,
                            "src": "6230:22:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint256,uint96)"
                            }
                          },
                          "id": 14307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6230:58:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14308,
                        "nodeType": "ExpressionStatement",
                        "src": "6230:58:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14310,
                              "name": "delegateTo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14264,
                              "src": "6315:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14311,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14178,
                              "src": "6327:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14312,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14212,
                              "src": "6334:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14309,
                            "name": "_increaseDelegateStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13412,
                            "src": "6292:22:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint256,uint96)"
                            }
                          },
                          "id": 14313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6292:49:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14314,
                        "nodeType": "ExpressionStatement",
                        "src": "6292:49:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14316,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6375:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6375:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14318,
                              "name": "previousLock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14176,
                              "src": "6387:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14319,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14178,
                              "src": "6401:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14320,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14212,
                              "src": "6408:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14315,
                            "name": "ExtendedStakingDuration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13183,
                            "src": "6351:23:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 14321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6351:64:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14322,
                        "nodeType": "EmitStatement",
                        "src": "6346:69:57"
                      }
                    ]
                  },
                  "documentation": "@notice Extend the staking duration until the specified date.\n@param previousLock The old unlocking timestamp.\n@param until The new unlocking timestamp in seconds.\n",
                  "id": 14324,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "extendStakingDuration",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14179,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14176,
                        "name": "previousLock",
                        "nodeType": "VariableDeclaration",
                        "scope": 14324,
                        "src": "4932:20:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14175,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4932:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14178,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 14324,
                        "src": "4954:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14177,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4954:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4931:37:57"
                  },
                  "returnParameters": {
                    "id": 14180,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4976:0:57"
                  },
                  "scope": 15557,
                  "src": "4901:1518:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14383,
                    "nodeType": "Block",
                    "src": "6847:473:57",
                    "statements": [
                      {
                        "assignments": [
                          14336
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14336,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 14383,
                            "src": "6887:12:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 14335,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6887:4:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14345,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14339,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14326,
                              "src": "6924:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 14341,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45200,
                                  "src": "6940:4:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Staking_$15557",
                                    "typeString": "contract Staking"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Staking_$15557",
                                    "typeString": "contract Staking"
                                  }
                                ],
                                "id": 14340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6932:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 14342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6932:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14343,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14328,
                              "src": "6947:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14337,
                              "name": "SOVToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15625,
                              "src": "6902:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 14338,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24682,
                            "src": "6902:21:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 14344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6902:52:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6887:67:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14347,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14336,
                              "src": "6966:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 14346,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44997,
                            "src": "6958:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 14348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6958:16:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14349,
                        "nodeType": "ExpressionStatement",
                        "src": "6958:16:57"
                      },
                      {
                        "assignments": [
                          14351
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14351,
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 14383,
                            "src": "7015:14:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 14350,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "7015:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14356,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14353,
                              "name": "stakeFor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14330,
                              "src": "7047:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14354,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14332,
                              "src": "7057:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14352,
                            "name": "currentBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14913,
                            "src": "7032:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (address,uint256) view returns (uint96)"
                            }
                          },
                          "id": 14355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7032:31:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7015:48:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 14357,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14351,
                            "src": "7067:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14359,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14351,
                                "src": "7083:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 14360,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14328,
                                "src": "7092:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "5374616b696e673a3a696e6372656173655374616b653a2062616c616e6365206f766572666c6f77",
                                "id": 14361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7100:42:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_b04503aa30bf2f868b39fe47c53354260fffbf4587f1ec921784667c0ed72593",
                                  "typeString": "literal_string \"Staking::increaseStake: balance overflow\""
                                },
                                "value": "Staking::increaseStake: balance overflow"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_b04503aa30bf2f868b39fe47c53354260fffbf4587f1ec921784667c0ed72593",
                                  "typeString": "literal_string \"Staking::increaseStake: balance overflow\""
                                }
                              ],
                              "id": 14358,
                              "name": "add96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13872,
                              "src": "7077:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                              }
                            },
                            "id": 14362,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7077:66:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "7067:76:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 14364,
                        "nodeType": "ExpressionStatement",
                        "src": "7067:76:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14366,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14332,
                              "src": "7199:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14367,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14328,
                              "src": "7206:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14365,
                            "name": "_increaseDailyStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13601,
                            "src": "7179:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint96_$returns$__$",
                              "typeString": "function (uint256,uint96)"
                            }
                          },
                          "id": 14368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7179:34:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14369,
                        "nodeType": "ExpressionStatement",
                        "src": "7179:34:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14371,
                              "name": "stakeFor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14330,
                              "src": "7236:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14372,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14332,
                              "src": "7246:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14373,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14328,
                              "src": "7253:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14370,
                            "name": "_increaseUserStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13245,
                            "src": "7217:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint256,uint96)"
                            }
                          },
                          "id": 14374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7217:43:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14375,
                        "nodeType": "ExpressionStatement",
                        "src": "7217:43:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14377,
                              "name": "stakeFor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14330,
                              "src": "7283:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14378,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14328,
                              "src": "7293:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14379,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14332,
                              "src": "7301:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14380,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14351,
                              "src": "7308:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14376,
                            "name": "TokensStaked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13151,
                            "src": "7270:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 14381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7270:46:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14382,
                        "nodeType": "EmitStatement",
                        "src": "7265:51:57"
                      }
                    ]
                  },
                  "documentation": "@notice Send sender's tokens to this contract and update its staked balance.\n@param sender The sender of the tokens.\n@param amount The number of tokens to send.\n@param stakeFor The beneficiary whose stake will be increased.\n@param until The date until which the tokens will be staked.\n",
                  "id": 14384,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_increaseStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14333,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14326,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 14384,
                        "src": "6766:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14325,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6766:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14328,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 14384,
                        "src": "6784:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14327,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "6784:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14330,
                        "name": "stakeFor",
                        "nodeType": "VariableDeclaration",
                        "scope": 14384,
                        "src": "6801:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14329,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6801:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14332,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 14384,
                        "src": "6821:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14331,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6821:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6762:75:57"
                  },
                  "returnParameters": {
                    "id": 14334,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6847:0:57"
                  },
                  "scope": 15557,
                  "src": "6739:581:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14494,
                    "nodeType": "Block",
                    "src": "7945:1075:57",
                    "statements": [
                      {
                        "assignments": [
                          14400
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14400,
                            "name": "start",
                            "nodeType": "VariableDeclaration",
                            "scope": 14494,
                            "src": "8208:13:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14399,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8208:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14407,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14402,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "8244:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 14403,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8244:15:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 14404,
                                "name": "cliff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14388,
                                "src": "8262:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8244:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14401,
                            "name": "timestampToLockDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16607,
                            "src": "8224:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 14406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8224:44:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8208:60:57"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14408,
                            "name": "duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14390,
                            "src": "8276:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 14409,
                            "name": "MAX_DURATION",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15604,
                            "src": "8287:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8276:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14416,
                        "nodeType": "IfStatement",
                        "src": "8272:62:57",
                        "trueBody": {
                          "id": 14415,
                          "nodeType": "Block",
                          "src": "8301:33:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14413,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14411,
                                  "name": "duration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14390,
                                  "src": "8306:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 14412,
                                  "name": "MAX_DURATION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15604,
                                  "src": "8317:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8306:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14414,
                              "nodeType": "ExpressionStatement",
                              "src": "8306:23:57"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          14418
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14418,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 14494,
                            "src": "8337:11:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14417,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8337:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14425,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14423,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14420,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "8371:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 14421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8371:15:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 14422,
                                "name": "duration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14390,
                                "src": "8389:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8371:26:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14419,
                            "name": "timestampToLockDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16607,
                            "src": "8351:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 14424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8351:47:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8337:61:57"
                      },
                      {
                        "assignments": [
                          14427
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14427,
                            "name": "numIntervals",
                            "nodeType": "VariableDeclaration",
                            "scope": 14494,
                            "src": "8402:20:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14426,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8402:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14436,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 14433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14428,
                                    "name": "end",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14418,
                                    "src": "8426:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14429,
                                    "name": "start",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14400,
                                    "src": "8432:5:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8426:11:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 14431,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "8425:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 14432,
                              "name": "intervalLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14392,
                              "src": "8441:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8425:30:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 14434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8458:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "8425:34:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8402:57:57"
                      },
                      {
                        "assignments": [
                          14438
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14438,
                            "name": "stakedPerInterval",
                            "nodeType": "VariableDeclaration",
                            "scope": 14494,
                            "src": "8463:25:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14437,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8463:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14442,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14439,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14386,
                            "src": "8491:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 14440,
                            "name": "numIntervals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14427,
                            "src": "8500:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8491:21:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8463:49:57"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14443,
                            "name": "numIntervals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14427,
                            "src": "8617:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 14444,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8633:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "8617:17:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14466,
                        "nodeType": "IfStatement",
                        "src": "8613:142:57",
                        "trueBody": {
                          "id": 14465,
                          "nodeType": "Block",
                          "src": "8636:119:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14447,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "8648:3:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 14448,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8648:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 14457,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 14450,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14386,
                                          "src": "8667:6:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 14456,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 14451,
                                            "name": "stakedPerInterval",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14438,
                                            "src": "8676:17:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 14454,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "id": 14452,
                                                  "name": "numIntervals",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14427,
                                                  "src": "8697:12:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "-",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "31",
                                                  "id": 14453,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "8712:1:57",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                  },
                                                  "value": "1"
                                                },
                                                "src": "8697:16:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 14455,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "8696:18:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "8676:38:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "8667:47:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 14449,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8660:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint96_$",
                                        "typeString": "type(uint96)"
                                      },
                                      "typeName": "uint96"
                                    },
                                    "id": 14458,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8660:55:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 14459,
                                    "name": "start",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14400,
                                    "src": "8717:5:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 14460,
                                    "name": "stakeFor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14394,
                                    "src": "8724:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 14461,
                                    "name": "delegatee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14396,
                                    "src": "8734:9:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 14462,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8745:4:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 14446,
                                  "name": "_stake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14174,
                                  "src": "8641:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint96_$_t_uint256_$_t_address_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint96,uint256,address,address,bool)"
                                  }
                                },
                                "id": 14463,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8641:109:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14464,
                              "nodeType": "ExpressionStatement",
                              "src": "8641:109:57"
                            }
                          ]
                        }
                      },
                      {
                        "body": {
                          "id": 14492,
                          "nodeType": "Block",
                          "src": "8877:140:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14481,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "8944:3:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 14482,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8944:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 14484,
                                        "name": "stakedPerInterval",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14438,
                                        "src": "8963:17:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 14483,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8956:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint96_$",
                                        "typeString": "type(uint96)"
                                      },
                                      "typeName": "uint96"
                                    },
                                    "id": 14485,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8956:25:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 14486,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14468,
                                    "src": "8983:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 14487,
                                    "name": "stakeFor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14394,
                                    "src": "8986:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 14488,
                                    "name": "delegatee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14396,
                                    "src": "8996:9:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 14489,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9007:4:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 14480,
                                  "name": "_stake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14174,
                                  "src": "8937:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint96_$_t_uint256_$_t_address_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint96,uint256,address,address,bool)"
                                  }
                                },
                                "id": 14490,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8937:75:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14491,
                              "nodeType": "ExpressionStatement",
                              "src": "8937:75:57"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14473,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14468,
                            "src": "8846:1:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 14474,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14418,
                            "src": "8851:3:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8846:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14493,
                        "initializationExpression": {
                          "assignments": [
                            14468
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 14468,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 14493,
                              "src": "8810:9:57",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 14467,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8810:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 14472,
                          "initialValue": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 14471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 14469,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14400,
                              "src": "8822:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 14470,
                              "name": "intervalLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14392,
                              "src": "8830:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8822:22:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8810:34:57"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 14478,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 14476,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14468,
                              "src": "8856:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 14477,
                              "name": "intervalLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14392,
                              "src": "8861:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8856:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14479,
                          "nodeType": "ExpressionStatement",
                          "src": "8856:19:57"
                        },
                        "nodeType": "ForStatement",
                        "src": "8805:212:57"
                      }
                    ]
                  },
                  "documentation": "@notice Stake tokens according to the vesting schedule.\n@param amount The amount of tokens to stake.\n@param cliff The time interval to the first withdraw.\n@param duration The staking duration.\n@param intervalLength The length of each staking interval when cliff passed.\n@param stakeFor The address to stake the tokens for or 0x0 if staking for oneself.\n@param delegatee The address of the delegatee or 0x0 if there is none.\n",
                  "id": 14495,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "stakesBySchedule",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14397,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14386,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 14495,
                        "src": "7816:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14385,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7816:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14388,
                        "name": "cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 14495,
                        "src": "7834:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7834:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14390,
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 14495,
                        "src": "7851:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14389,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7851:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14392,
                        "name": "intervalLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 14495,
                        "src": "7871:22:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14391,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7871:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14394,
                        "name": "stakeFor",
                        "nodeType": "VariableDeclaration",
                        "scope": 14495,
                        "src": "7897:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14393,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7897:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14396,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 14495,
                        "src": "7917:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14395,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7917:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7812:125:57"
                  },
                  "returnParameters": {
                    "id": 14398,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7945:0:57"
                  },
                  "scope": 15557,
                  "src": "7787:1233:57",
                  "stateMutability": "nonpayable",
                  "superFunction": 13723,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14518,
                    "nodeType": "Block",
                    "src": "9390:242:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14505,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14497,
                              "src": "9404:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14506,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14499,
                              "src": "9412:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14507,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14501,
                              "src": "9419:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 14508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9429:5:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 14504,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14730,
                            "src": "9394:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint96_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (uint96,uint256,address,bool)"
                            }
                          },
                          "id": 14509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9394:41:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14510,
                        "nodeType": "ExpressionStatement",
                        "src": "9394:41:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14512,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14497,
                              "src": "9597:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14513,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14499,
                              "src": "9605:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14514,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14501,
                              "src": "9612:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 14515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9622:5:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 14511,
                            "name": "_withdrawNext",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14785,
                            "src": "9583:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint96_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (uint96,uint256,address,bool)"
                            }
                          },
                          "id": 14516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9583:45:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14517,
                        "nodeType": "ExpressionStatement",
                        "src": "9583:45:57"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraw the given amount of tokens if they are unlocked.\n@param amount The number of tokens to withdraw.\n@param until The date until which the tokens were staked.\n@param receiver The receiver of the tokens. If not specified, send to the msg.sender\n",
                  "id": 14519,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14502,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14497,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 14519,
                        "src": "9329:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14496,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "9329:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14499,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 14519,
                        "src": "9346:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14498,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9346:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14501,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 14519,
                        "src": "9363:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14500,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9363:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9325:57:57"
                  },
                  "returnParameters": {
                    "id": 14503,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9390:0:57"
                  },
                  "scope": 15557,
                  "src": "9308:324:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14550,
                    "nodeType": "Block",
                    "src": "10080:304:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 14529,
                                "name": "vestingWhitelist",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15702,
                                "src": "10092:16:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 14532,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14530,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "10109:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 14531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10109:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10092:28:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 14533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10122:14:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 14528,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10084:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10084:53:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14535,
                        "nodeType": "ExpressionStatement",
                        "src": "10084:53:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14537,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14521,
                              "src": "10152:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14538,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14523,
                              "src": "10160:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14539,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14525,
                              "src": "10167:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 14540,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10177:4:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 14536,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14730,
                            "src": "10142:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint96_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (uint96,uint256,address,bool)"
                            }
                          },
                          "id": 14541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10142:40:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14542,
                        "nodeType": "ExpressionStatement",
                        "src": "10142:40:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14544,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14521,
                              "src": "10350:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14545,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14523,
                              "src": "10358:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14546,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14525,
                              "src": "10365:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 14547,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10375:4:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 14543,
                            "name": "_withdrawNext",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14785,
                            "src": "10336:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint96_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (uint96,uint256,address,bool)"
                            }
                          },
                          "id": 14548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10336:44:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14549,
                        "nodeType": "ExpressionStatement",
                        "src": "10336:44:57"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraw the given amount of tokens.\n@param amount The number of tokens to withdraw.\n@param until The date until which the tokens were staked.\n@param receiver The receiver of the tokens. If not specified, send to the msg.sender\n@dev Can be invoked only by whitelisted contract passed to governanceWithdrawVesting\n",
                  "id": 14551,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "governanceWithdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14526,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14521,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 14551,
                        "src": "10019:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14520,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "10019:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14523,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 14551,
                        "src": "10036:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14522,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10036:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14525,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 14551,
                        "src": "10053:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14524,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10053:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10015:57:57"
                  },
                  "returnParameters": {
                    "id": 14527,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10080:0:57"
                  },
                  "scope": 15557,
                  "src": "9988:396:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14584,
                    "nodeType": "Block",
                    "src": "10772:188:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 14560,
                              "name": "vestingWhitelist",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15702,
                              "src": "10776:16:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 14562,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14561,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14553,
                              "src": "10793:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10776:25:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 14563,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10804:4:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "10776:32:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14565,
                        "nodeType": "ExpressionStatement",
                        "src": "10776:32:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14570,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14555,
                              "src": "10859:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 14567,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14553,
                                  "src": "10825:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 14566,
                                "name": "ITeamVesting",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18579,
                                "src": "10812:12:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ITeamVesting_$18579_$",
                                  "typeString": "type(contract ITeamVesting)"
                                }
                              },
                              "id": 14568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10812:21:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ITeamVesting_$18579",
                                "typeString": "contract ITeamVesting"
                              }
                            },
                            "id": 14569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "governanceWithdrawTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18578,
                            "src": "10812:46:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 14571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10812:56:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14572,
                        "nodeType": "ExpressionStatement",
                        "src": "10812:56:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 14573,
                              "name": "vestingWhitelist",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15702,
                              "src": "10872:16:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 14575,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14574,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14553,
                              "src": "10889:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10872:25:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 14576,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10900:5:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "10872:33:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14578,
                        "nodeType": "ExpressionStatement",
                        "src": "10872:33:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14580,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14553,
                              "src": "10938:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14581,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14555,
                              "src": "10947:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 14579,
                            "name": "VestingTokensWithdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13169,
                            "src": "10915:22:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 14582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10915:41:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14583,
                        "nodeType": "EmitStatement",
                        "src": "10910:46:57"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraw tokens for vesting contract.\n@param vesting The address of Vesting contract.\n@param receiver The receiver of the tokens. If not specified, send to the msg.sender\n@dev Can be invoked only by whitelisted contract passed to governanceWithdrawVesting.\n",
                  "id": 14585,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 14558,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 14557,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15738,
                        "src": "10757:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10757:14:57"
                    }
                  ],
                  "name": "governanceWithdrawVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14556,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14553,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 14585,
                        "src": "10715:15:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14552,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10715:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14555,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 14585,
                        "src": "10732:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14554,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10732:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10714:35:57"
                  },
                  "returnParameters": {
                    "id": 14559,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10772:0:57"
                  },
                  "scope": 15557,
                  "src": "10680:280:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14729,
                    "nodeType": "Block",
                    "src": "11738:1498:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 14598,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 14596,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14587,
                              "src": "11908:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 14597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11918:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "11908:11:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 14599,
                              "name": "_isVestingContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16682,
                              "src": "11923:18:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                "typeString": "function () view returns (bool)"
                              }
                            },
                            "id": 14600,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11923:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "11908:35:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14604,
                        "nodeType": "IfStatement",
                        "src": "11904:57:57",
                        "trueBody": {
                          "id": 14603,
                          "nodeType": "Block",
                          "src": "11945:16:57",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 14595,
                              "id": 14602,
                              "nodeType": "Return",
                              "src": "11950:7:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 14605,
                            "name": "until",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14589,
                            "src": "11964:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14607,
                                "name": "until",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14589,
                                "src": "11993:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 14606,
                              "name": "_adjustDateForOrigin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16634,
                              "src": "11972:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view returns (uint256)"
                              }
                            },
                            "id": 14608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11972:27:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11964:35:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14610,
                        "nodeType": "ExpressionStatement",
                        "src": "11964:35:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14612,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14587,
                              "src": "12027:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14613,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14589,
                              "src": "12035:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14611,
                            "name": "_validateWithdrawParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14888,
                            "src": "12003:23:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint96_$_t_uint256_$returns$__$",
                              "typeString": "function (uint96,uint256) view"
                            }
                          },
                          "id": 14614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12003:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14615,
                        "nodeType": "ExpressionStatement",
                        "src": "12003:38:57"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 14620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14616,
                            "name": "receiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14591,
                            "src": "12085:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 14618,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12105:1:57",
                                "subdenomination": null,
                                "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": 14617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12097:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 14619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12097:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "12085:22:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14626,
                        "nodeType": "IfStatement",
                        "src": "12081:49:57",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 14624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 14621,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14591,
                              "src": "12109:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14622,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "12120:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12120:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "12109:21:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 14625,
                          "nodeType": "ExpressionStatement",
                          "src": "12109:21:57"
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14628,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14589,
                              "src": "12190:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14629,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14587,
                              "src": "12197:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14627,
                            "name": "_decreaseDailyStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13640,
                            "src": "12170:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint96_$returns$__$",
                              "typeString": "function (uint256,uint96)"
                            }
                          },
                          "id": 14630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12170:34:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14631,
                        "nodeType": "ExpressionStatement",
                        "src": "12170:34:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14633,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "12227:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14634,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12227:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14635,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14589,
                              "src": "12239:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14636,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14587,
                              "src": "12246:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14632,
                            "name": "_decreaseUserStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13291,
                            "src": "12208:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint256,uint96)"
                            }
                          },
                          "id": 14637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12208:45:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14638,
                        "nodeType": "ExpressionStatement",
                        "src": "12208:45:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 14640,
                                  "name": "delegates",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15631,
                                  "src": "12280:9:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => address))"
                                  }
                                },
                                "id": 14643,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14641,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "12290:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 14642,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12290:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12280:21:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                  "typeString": "mapping(uint256 => address)"
                                }
                              },
                              "id": 14645,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 14644,
                                "name": "until",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14589,
                                "src": "12302:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12280:28:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14646,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14589,
                              "src": "12310:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14647,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14587,
                              "src": "12317:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 14639,
                            "name": "_decreaseDelegateStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13467,
                            "src": "12257:22:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint256,uint96)"
                            }
                          },
                          "id": 14648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12257:67:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14649,
                        "nodeType": "ExpressionStatement",
                        "src": "12257:67:57"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 14656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14650,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "12380:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 14651,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12380:15:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 14652,
                                "name": "until",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14589,
                                "src": "12398:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12380:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 14655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "12407:12:57",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 14654,
                                "name": "allUnlocked",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15634,
                                "src": "12408:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "12380:39:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 14658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "12423:13:57",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 14657,
                              "name": "isGovernance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14593,
                              "src": "12424:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12380:56:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14706,
                        "nodeType": "IfStatement",
                        "src": "12376:637:57",
                        "trueBody": {
                          "id": 14705,
                          "nodeType": "Block",
                          "src": "12438:575:57",
                          "statements": [
                            {
                              "assignments": [
                                14661
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14661,
                                  "name": "punishedAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14705,
                                  "src": "12443:21:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  "typeName": {
                                    "id": 14660,
                                    "name": "uint96",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12443:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14666,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14663,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14587,
                                    "src": "12486:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 14664,
                                    "name": "until",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14589,
                                    "src": "12494:5:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 14662,
                                  "name": "_getPunishedAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14854,
                                  "src": "12467:18:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint96_$_t_uint256_$returns$_t_uint96_$",
                                    "typeString": "function (uint96,uint256) view returns (uint96)"
                                  }
                                },
                                "id": 14665,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12467:33:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12443:57:57"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14669,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14667,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14587,
                                  "src": "12505:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 14668,
                                  "name": "punishedAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14661,
                                  "src": "12515:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "12505:24:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 14670,
                              "nodeType": "ExpressionStatement",
                              "src": "12505:24:57"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "id": 14673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14671,
                                  "name": "punishedAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14661,
                                  "src": "12620:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14672,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12637:1:57",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12620:18:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 14704,
                              "nodeType": "IfStatement",
                              "src": "12616:393:57",
                              "trueBody": {
                                "id": 14703,
                                "nodeType": "Block",
                                "src": "12640:369:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          "id": 14681,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 14676,
                                                "name": "feeSharing",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15695,
                                                "src": "12662:10:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                                                  "typeString": "contract IFeeSharingProxy"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                                                  "typeString": "contract IFeeSharingProxy"
                                                }
                                              ],
                                              "id": 14675,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "12654:7:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": "address"
                                            },
                                            "id": 14677,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12654:19:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "30",
                                                "id": 14679,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12685:1:57",
                                                "subdenomination": null,
                                                "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": 14678,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "12677:7:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": "address"
                                            },
                                            "id": 14680,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12677:10:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          "src": "12654:33:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "5374616b696e673a3a77697468647261773a2046656553686172696e672061646472657373207761736e277420736574",
                                          "id": 14682,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12689:50:57",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_3573bb4302bc5bcc2a5ed83bdf8cd79f27e0e926c8c355cb4df04ad4899c3290",
                                            "typeString": "literal_string \"Staking::withdraw: FeeSharing address wasn't set\""
                                          },
                                          "value": "Staking::withdraw: FeeSharing address wasn't set"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_3573bb4302bc5bcc2a5ed83bdf8cd79f27e0e926c8c355cb4df04ad4899c3290",
                                            "typeString": "literal_string \"Staking::withdraw: FeeSharing address wasn't set\""
                                          }
                                        ],
                                        "id": 14674,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44997,
                                          44998
                                        ],
                                        "referencedDeclaration": 44998,
                                        "src": "12646:7:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 14683,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12646:94:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 14684,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12646:94:57"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 14689,
                                              "name": "feeSharing",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 15695,
                                              "src": "12909:10:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                                                "typeString": "contract IFeeSharingProxy"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                                                "typeString": "contract IFeeSharingProxy"
                                              }
                                            ],
                                            "id": 14688,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "12901:7:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": "address"
                                          },
                                          "id": 14690,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12901:19:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 14691,
                                          "name": "punishedAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14661,
                                          "src": "12922:14:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint96",
                                            "typeString": "uint96"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint96",
                                            "typeString": "uint96"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14685,
                                          "name": "SOVToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15625,
                                          "src": "12884:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$24699",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 14687,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "approve",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 24662,
                                        "src": "12884:16:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                          "typeString": "function (address,uint256) external returns (bool)"
                                        }
                                      },
                                      "id": 14692,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12884:53:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 14693,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12884:53:57"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 14698,
                                              "name": "SOVToken",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 15625,
                                              "src": "12977:8:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                                "typeString": "contract IERC20"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                                "typeString": "contract IERC20"
                                              }
                                            ],
                                            "id": 14697,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "12969:7:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": "address"
                                          },
                                          "id": 14699,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12969:17:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 14700,
                                          "name": "punishedAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14661,
                                          "src": "12988:14:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint96",
                                            "typeString": "uint96"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint96",
                                            "typeString": "uint96"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14694,
                                          "name": "feeSharing",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15695,
                                          "src": "12943:10:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                                            "typeString": "contract IFeeSharingProxy"
                                          }
                                        },
                                        "id": 14696,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "transferTokens",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 13102,
                                        "src": "12943:25:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint96_$returns$__$",
                                          "typeString": "function (address,uint96) external"
                                        }
                                      },
                                      "id": 14701,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12943:60:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 14702,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12943:60:57"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          14708
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14708,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 14729,
                            "src": "13041:12:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 14707,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "13041:4:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14714,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14711,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14591,
                              "src": "13074:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14712,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14587,
                              "src": "13084:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14709,
                              "name": "SOVToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15625,
                              "src": "13056:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 14710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24671,
                            "src": "13056:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 14713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13056:35:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13041:50:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14716,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14708,
                              "src": "13103:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a77697468647261773a20546f6b656e207472616e73666572206661696c6564",
                              "id": 14717,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13112:42:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_23b9dea7e060a52b237bd77a28b6221ee9c0f8c5c0963a9eb955af8cb2494aec",
                                "typeString": "literal_string \"Staking::withdraw: Token transfer failed\""
                              },
                              "value": "Staking::withdraw: Token transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_23b9dea7e060a52b237bd77a28b6221ee9c0f8c5c0963a9eb955af8cb2494aec",
                                "typeString": "literal_string \"Staking::withdraw: Token transfer failed\""
                              }
                            ],
                            "id": 14715,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13095:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13095:60:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14719,
                        "nodeType": "ExpressionStatement",
                        "src": "13095:60:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14721,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "13182:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14722,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13182:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14723,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14587,
                              "src": "13194:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14724,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14589,
                              "src": "13202:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14725,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14591,
                              "src": "13209:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14726,
                              "name": "isGovernance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14593,
                              "src": "13219:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 14720,
                            "name": "StakingWithdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13163,
                            "src": "13165:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address,bool)"
                            }
                          },
                          "id": 14727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13165:67:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14728,
                        "nodeType": "EmitStatement",
                        "src": "13160:72:57"
                      }
                    ]
                  },
                  "documentation": "@notice Send user' staked tokens to a receiver taking into account punishments.\nSovryn encourages long-term commitment and thinking. When/if you unstake before\nthe end of the staking period, a percentage of the original staking amount will\nbe slashed. This amount is also added to the reward pool and is distributed\nbetween all other stakers.\n\t * @param amount The number of tokens to withdraw.\n@param until The date until which the tokens were staked.\n@param receiver The receiver of the tokens. If not specified, send to the msg.sender\n@param isGovernance Whether all tokens (true)\nor just unlocked tokens (false).\n",
                  "id": 14730,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14587,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 14730,
                        "src": "11654:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14586,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "11654:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14589,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 14730,
                        "src": "11671:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14588,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11671:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14591,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 14730,
                        "src": "11688:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14590,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11688:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14593,
                        "name": "isGovernance",
                        "nodeType": "VariableDeclaration",
                        "scope": 14730,
                        "src": "11708:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14592,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11708:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11650:78:57"
                  },
                  "returnParameters": {
                    "id": 14595,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11738:0:57"
                  },
                  "scope": 15557,
                  "src": "11632:1604:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14784,
                    "nodeType": "Block",
                    "src": "13424:310:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14741,
                            "name": "_isVestingContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16682,
                            "src": "13432:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 14742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13432:20:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14783,
                        "nodeType": "IfStatement",
                        "src": "13428:303:57",
                        "trueBody": {
                          "id": 14782,
                          "nodeType": "Block",
                          "src": "13454:277:57",
                          "statements": [
                            {
                              "assignments": [
                                14744
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14744,
                                  "name": "nextLock",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14782,
                                  "src": "13459:16:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 14743,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13459:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14749,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14747,
                                    "name": "TWO_WEEKS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15595,
                                    "src": "13488:9:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14745,
                                    "name": "until",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14734,
                                    "src": "13478:5:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 14746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "13478:9:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 14748,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13478:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13459:39:57"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14750,
                                  "name": "isGovernance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14738,
                                  "src": "13507:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14754,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14751,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44984,
                                      "src": "13523:5:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 14752,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13523:15:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14753,
                                    "name": "nextLock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14744,
                                    "src": "13542:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "13523:27:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "13507:43:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 14781,
                              "nodeType": "IfStatement",
                              "src": "13503:224:57",
                              "trueBody": {
                                "id": 14780,
                                "nodeType": "Block",
                                "src": "13552:175:57",
                                "statements": [
                                  {
                                    "assignments": [
                                      14757
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 14757,
                                        "name": "stake",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 14780,
                                        "src": "13558:12:57",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        },
                                        "typeName": {
                                          "id": 14756,
                                          "name": "uint96",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13558:6:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint96",
                                            "typeString": "uint96"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 14767,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14759,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44994,
                                            "src": "13598:3:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 14760,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "13598:10:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 14761,
                                          "name": "nextLock",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14744,
                                          "src": "13610:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 14765,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 14762,
                                              "name": "block",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44984,
                                              "src": "13620:5:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_block",
                                                "typeString": "block"
                                              }
                                            },
                                            "id": 14763,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "number",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "13620:12:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 14764,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13635:1:57",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "13620:16:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 14758,
                                        "name": "_getPriorUserStakeByDate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16502,
                                        "src": "13573:24:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                                          "typeString": "function (address,uint256,uint256) view returns (uint96)"
                                        }
                                      },
                                      "id": 14766,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13573:64:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13558:79:57"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      "id": 14770,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 14768,
                                        "name": "stake",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14757,
                                        "src": "13647:5:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 14769,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13655:1:57",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "13647:9:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 14779,
                                    "nodeType": "IfStatement",
                                    "src": "13643:79:57",
                                    "trueBody": {
                                      "id": 14778,
                                      "nodeType": "Block",
                                      "src": "13658:64:57",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 14772,
                                                "name": "stake",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14757,
                                                "src": "13675:5:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 14773,
                                                "name": "nextLock",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14744,
                                                "src": "13682:8:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 14774,
                                                "name": "receiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14736,
                                                "src": "13692:8:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 14775,
                                                "name": "isGovernance",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14738,
                                                "src": "13702:12:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              ],
                                              "id": 14771,
                                              "name": "_withdraw",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14730,
                                              "src": "13665:9:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint96_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                                "typeString": "function (uint96,uint256,address,bool)"
                                              }
                                            },
                                            "id": 14776,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "13665:50:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 14777,
                                          "nodeType": "ExpressionStatement",
                                          "src": "13665:50:57"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 14785,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_withdrawNext",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14739,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14732,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 14785,
                        "src": "13340:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14731,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "13340:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14734,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 14785,
                        "src": "13357:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14733,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13357:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14736,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 14785,
                        "src": "13374:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14735,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13374:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14738,
                        "name": "isGovernance",
                        "nodeType": "VariableDeclaration",
                        "scope": 14785,
                        "src": "13394:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14737,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13394:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13336:78:57"
                  },
                  "returnParameters": {
                    "id": 14740,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13424:0:57"
                  },
                  "scope": 15557,
                  "src": "13314:420:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14814,
                    "nodeType": "Block",
                    "src": "14021:159:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14797,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14787,
                              "src": "14049:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14798,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14789,
                              "src": "14057:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14796,
                            "name": "_validateWithdrawParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14888,
                            "src": "14025:23:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint96_$_t_uint256_$returns$__$",
                              "typeString": "function (uint96,uint256) view"
                            }
                          },
                          "id": 14799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14025:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14800,
                        "nodeType": "ExpressionStatement",
                        "src": "14025:38:57"
                      },
                      {
                        "assignments": [
                          14802
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14802,
                            "name": "punishedAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 14814,
                            "src": "14067:21:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 14801,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "14067:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14807,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14804,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14787,
                              "src": "14110:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14805,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14789,
                              "src": "14118:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14803,
                            "name": "_getPunishedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14854,
                            "src": "14091:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint96_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (uint96,uint256) view returns (uint96)"
                            }
                          },
                          "id": 14806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14091:33:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14067:57:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 14810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 14808,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14787,
                                "src": "14136:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 14809,
                                "name": "punishedAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14802,
                                "src": "14145:14:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "14136:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14811,
                              "name": "punishedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14802,
                              "src": "14161:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "id": 14812,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14135:41:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint96_$_t_uint96_$",
                            "typeString": "tuple(uint96,uint96)"
                          }
                        },
                        "functionReturnParameters": 14795,
                        "id": 14813,
                        "nodeType": "Return",
                        "src": "14128:48:57"
                      }
                    ]
                  },
                  "documentation": "@notice Get available and punished amount for withdrawing.\n@param amount The number of tokens to withdraw.\n@param until The date until which the tokens were staked.\n",
                  "id": 14815,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getWithdrawAmounts",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14790,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14787,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 14815,
                        "src": "13954:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14786,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "13954:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14789,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 14815,
                        "src": "13969:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14788,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13969:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13953:30:57"
                  },
                  "returnParameters": {
                    "id": 14795,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14792,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14815,
                        "src": "14005:6:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14791,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "14005:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14794,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14815,
                        "src": "14013:6:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14793,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "14013:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14004:16:57"
                  },
                  "scope": 15557,
                  "src": "13926:254:57",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14853,
                    "nodeType": "Block",
                    "src": "14447:230:57",
                    "statements": [
                      {
                        "assignments": [
                          14825
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14825,
                            "name": "date",
                            "nodeType": "VariableDeclaration",
                            "scope": 14853,
                            "src": "14451:12:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14824,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14451:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14830,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14827,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "14486:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 14828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14486:15:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14826,
                            "name": "timestampToLockDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16607,
                            "src": "14466:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 14829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14466:36:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14451:51:57"
                      },
                      {
                        "assignments": [
                          14832
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14832,
                            "name": "weight",
                            "nodeType": "VariableDeclaration",
                            "scope": 14853,
                            "src": "14506:13:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 14831,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "14506:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14837,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14834,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14819,
                              "src": "14542:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14835,
                              "name": "date",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14825,
                              "src": "14549:4:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14833,
                            "name": "computeWeightByDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16575,
                            "src": "14522:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (uint256,uint256) pure returns (uint96)"
                            }
                          },
                          "id": 14836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14522:32:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14506:48:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 14838,
                            "name": "weight",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14832,
                            "src": "14592:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 14841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 14839,
                              "name": "weight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14832,
                              "src": "14601:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 14840,
                              "name": "weightScaling",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15698,
                              "src": "14610:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "src": "14601:22:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "14592:31:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 14843,
                        "nodeType": "ExpressionStatement",
                        "src": "14592:31:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 14851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 14849,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  "id": 14846,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14844,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14817,
                                    "src": "14635:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14845,
                                    "name": "weight",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14832,
                                    "src": "14644:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "src": "14635:15:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                }
                              ],
                              "id": 14847,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "14634:17:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 14848,
                              "name": "WEIGHT_FACTOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15601,
                              "src": "14654:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "src": "14634:33:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 14850,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14670:3:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "14634:39:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 14823,
                        "id": 14852,
                        "nodeType": "Return",
                        "src": "14627:46:57"
                      }
                    ]
                  },
                  "documentation": "@notice Get punished amount for withdrawing.\n@param amount The number of tokens to withdraw.\n@param until The date until which the tokens were staked.\n",
                  "id": 14854,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getPunishedAmount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14820,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14817,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 14854,
                        "src": "14386:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14816,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "14386:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14819,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 14854,
                        "src": "14401:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14818,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14401:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14385:30:57"
                  },
                  "returnParameters": {
                    "id": 14823,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14822,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14854,
                        "src": "14439:6:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14821,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "14439:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14438:8:57"
                  },
                  "scope": 15557,
                  "src": "14358:319:57",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14887,
                    "nodeType": "Block",
                    "src": "14925:261:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 14864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 14862,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14856,
                                "src": "14937:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 14863,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14946:1:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "14937:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a77697468647261773a20616d6f756e74206f6620746f6b656e7320746f2062652077697468647261776e206e6565647320746f20626520626967676572207468616e2030",
                              "id": 14865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14949:79:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1716c4f4cd5f73ee7658b360ff98b0820693ef86e07c00c04012dd7ccdfeb24f",
                                "typeString": "literal_string \"Staking::withdraw: amount of tokens to be withdrawn needs to be bigger than 0\""
                              },
                              "value": "Staking::withdraw: amount of tokens to be withdrawn needs to be bigger than 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1716c4f4cd5f73ee7658b360ff98b0820693ef86e07c00c04012dd7ccdfeb24f",
                                "typeString": "literal_string \"Staking::withdraw: amount of tokens to be withdrawn needs to be bigger than 0\""
                              }
                            ],
                            "id": 14861,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "14929:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14929:100:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14867,
                        "nodeType": "ExpressionStatement",
                        "src": "14929:100:57"
                      },
                      {
                        "assignments": [
                          14869
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14869,
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 14887,
                            "src": "15033:14:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 14868,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "15033:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14879,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14871,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "15075:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14872,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "15075:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14873,
                              "name": "until",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14858,
                              "src": "15087:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14877,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14874,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "15094:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 14875,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15094:12:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 14876,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15109:1:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "15094:16:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14870,
                            "name": "_getPriorUserStakeByDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16502,
                            "src": "15050:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (address,uint256,uint256) view returns (uint96)"
                            }
                          },
                          "id": 14878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15050:61:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15033:78:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 14883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 14881,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14856,
                                "src": "15123:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 14882,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14869,
                                "src": "15133:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "15123:17:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a77697468647261773a206e6f7420656e6f7567682062616c616e6365",
                              "id": 14884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15142:39:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2461530099cd90253860b8292834ec299b324afe01aa852c48fe0cc504c69e48",
                                "typeString": "literal_string \"Staking::withdraw: not enough balance\""
                              },
                              "value": "Staking::withdraw: not enough balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2461530099cd90253860b8292834ec299b324afe01aa852c48fe0cc504c69e48",
                                "typeString": "literal_string \"Staking::withdraw: not enough balance\""
                              }
                            ],
                            "id": 14880,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "15115:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15115:67:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14886,
                        "nodeType": "ExpressionStatement",
                        "src": "15115:67:57"
                      }
                    ]
                  },
                  "documentation": "@notice Validate withdraw parameters.\n@param amount The number of tokens to withdraw.\n@param until The date until which the tokens were staked.\n",
                  "id": 14888,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_validateWithdrawParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14859,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14856,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 14888,
                        "src": "14881:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14855,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "14881:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14858,
                        "name": "until",
                        "nodeType": "VariableDeclaration",
                        "scope": 14888,
                        "src": "14896:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14857,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14896:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14880:30:57"
                  },
                  "returnParameters": {
                    "id": 14860,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14925:0:57"
                  },
                  "scope": 15557,
                  "src": "14848:338:57",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14912,
                    "nodeType": "Block",
                    "src": "15472:112:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 14897,
                                  "name": "userStakingCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15683,
                                  "src": "15483:22:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                  }
                                },
                                "id": 14899,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 14898,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14890,
                                  "src": "15506:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15483:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                }
                              },
                              "id": 14901,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 14900,
                                "name": "lockDate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14892,
                                "src": "15515:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15483:41:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                              }
                            },
                            "id": 14909,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 14908,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 14902,
                                    "name": "numUserStakingCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15689,
                                    "src": "15525:25:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => uint32))"
                                    }
                                  },
                                  "id": 14904,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 14903,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14890,
                                    "src": "15551:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "15525:34:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                                    "typeString": "mapping(uint256 => uint32)"
                                  }
                                },
                                "id": 14906,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 14905,
                                  "name": "lockDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14892,
                                  "src": "15560:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15525:44:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 14907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15572:1:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "15525:48:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15483:91:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                              "typeString": "struct StakingStorage.Checkpoint storage ref"
                            }
                          },
                          "id": 14910,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15650,
                          "src": "15483:97:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 14896,
                        "id": 14911,
                        "nodeType": "Return",
                        "src": "15476:104:57"
                      }
                    ]
                  },
                  "documentation": "@notice Get the current balance of an account locked until a certain date.\n@param account The user address.\n@param lockDate The lock date.\n@return The stake amount.\n",
                  "id": 14913,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "currentBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14893,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14890,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 14913,
                        "src": "15406:15:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14889,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15406:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14892,
                        "name": "lockDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 14913,
                        "src": "15423:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14891,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15423:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15405:35:57"
                  },
                  "returnParameters": {
                    "id": 14896,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14895,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 14913,
                        "src": "15464:6:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14894,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "15464:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15463:8:57"
                  },
                  "scope": 15557,
                  "src": "15382:202:57",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14947,
                    "nodeType": "Block",
                    "src": "15897:182:57",
                    "statements": [
                      {
                        "body": {
                          "id": 14945,
                          "nodeType": "Block",
                          "src": "15982:94:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14943,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14934,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14918,
                                  "src": "15987:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14936,
                                      "name": "balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14918,
                                      "src": "16003:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 14938,
                                          "name": "account",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14915,
                                          "src": "16027:7:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 14939,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14921,
                                          "src": "16036:1:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 14937,
                                        "name": "currentBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14913,
                                        "src": "16012:14:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint96_$",
                                          "typeString": "function (address,uint256) view returns (uint96)"
                                        }
                                      },
                                      "id": 14940,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16012:26:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "5374616b696e673a3a62616c616e63654f663a206f766572666c6f77",
                                      "id": 14941,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16040:30:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_32e8bc4afc4d051198144219552e546fb1ec43c4b290dc0c4a888093b0827343",
                                        "typeString": "literal_string \"Staking::balanceOf: overflow\""
                                      },
                                      "value": "Staking::balanceOf: overflow"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_32e8bc4afc4d051198144219552e546fb1ec43c4b290dc0c4a888093b0827343",
                                        "typeString": "literal_string \"Staking::balanceOf: overflow\""
                                      }
                                    ],
                                    "id": 14935,
                                    "name": "add96",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13872,
                                    "src": "15997:5:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                      "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                    }
                                  },
                                  "id": 14942,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15997:74:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "15987:84:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 14944,
                              "nodeType": "ExpressionStatement",
                              "src": "15987:84:57"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14924,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14921,
                            "src": "15929:1:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 14928,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14925,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "15934:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 14926,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "15934:15:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 14927,
                              "name": "MAX_DURATION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15604,
                              "src": "15952:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15934:30:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15929:35:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14946,
                        "initializationExpression": {
                          "assignments": [
                            14921
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 14921,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 14946,
                              "src": "15906:9:57",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 14920,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15906:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 14923,
                          "initialValue": {
                            "argumentTypes": null,
                            "id": 14922,
                            "name": "kickoffTS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15620,
                            "src": "15918:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15906:21:57"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 14932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 14930,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14921,
                              "src": "15966:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 14931,
                              "name": "TWO_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15595,
                              "src": "15971:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15966:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14933,
                          "nodeType": "ExpressionStatement",
                          "src": "15966:14:57"
                        },
                        "nodeType": "ForStatement",
                        "src": "15901:175:57"
                      }
                    ]
                  },
                  "documentation": "@notice Get the number of staked tokens held by the user account.\n@dev Iterate checkpoints adding up stakes.\n@param account The address of the account to get the balance of.\n@return The number of tokens held.\n",
                  "id": 14948,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14916,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14915,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 14948,
                        "src": "15843:15:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14914,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15843:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15842:17:57"
                  },
                  "returnParameters": {
                    "id": 14919,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14918,
                        "name": "balance",
                        "nodeType": "VariableDeclaration",
                        "scope": 14948,
                        "src": "15881:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 14917,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "15881:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15880:16:57"
                  },
                  "scope": 15557,
                  "src": "15824:255:57",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14969,
                    "nodeType": "Block",
                    "src": "16362:214:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14956,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "16376:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "16376:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14958,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14950,
                              "src": "16388:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14959,
                              "name": "lockDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14952,
                              "src": "16399:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14955,
                            "name": "_delegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15170,
                            "src": "16366:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 14960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16366:42:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14961,
                        "nodeType": "ExpressionStatement",
                        "src": "16366:42:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14963,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "16540:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14964,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "16540:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14965,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14950,
                              "src": "16552:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14966,
                              "name": "lockDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14952,
                              "src": "16563:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14962,
                            "name": "_delegateNext",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15250,
                            "src": "16526:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 14967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16526:46:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14968,
                        "nodeType": "ExpressionStatement",
                        "src": "16526:46:57"
                      }
                    ]
                  },
                  "documentation": "@notice Delegate votes from `msg.sender` which are locked until lockDate to `delegatee`.\n@param delegatee The address to delegate votes to.\n@param lockDate the date if the position to delegate.\n",
                  "id": 14970,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "delegate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14953,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14950,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 14970,
                        "src": "16318:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14949,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16318:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14952,
                        "name": "lockDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 14970,
                        "src": "16337:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14951,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16337:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16317:37:57"
                  },
                  "returnParameters": {
                    "id": 14954,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16362:0:57"
                  },
                  "scope": 15557,
                  "src": "16300:276:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15076,
                    "nodeType": "Block",
                    "src": "18164:1286:57",
                    "statements": [
                      {
                        "assignments": [
                          14988
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14988,
                            "name": "domainSeparator",
                            "nodeType": "VariableDeclaration",
                            "scope": 15076,
                            "src": "18472:23:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 14987,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "18472:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15005,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 14992,
                                  "name": "DOMAIN_TYPEHASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15639,
                                  "src": "18519:15:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 14995,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15623,
                                          "src": "18552:4:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                          }
                                        ],
                                        "id": 14994,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "18546:5:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": "bytes"
                                      },
                                      "id": 14996,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "18546:11:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage_ptr",
                                        "typeString": "bytes storage pointer"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_storage_ptr",
                                        "typeString": "bytes storage pointer"
                                      }
                                    ],
                                    "id": 14993,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44988,
                                    "src": "18536:9:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 14997,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18536:22:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 14998,
                                    "name": "getChainId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15307,
                                    "src": "18560:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                      "typeString": "function () pure returns (uint256)"
                                    }
                                  },
                                  "id": 14999,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18560:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 15001,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45200,
                                      "src": "18582:4:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Staking_$15557",
                                        "typeString": "contract Staking"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Staking_$15557",
                                        "typeString": "contract Staking"
                                      }
                                    ],
                                    "id": 15000,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "18574:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 15002,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18574:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14990,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "18508:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 14991,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "18508:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 15003,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18508:80:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 14989,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "18498:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 15004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18498:91:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18472:117:57"
                      },
                      {
                        "assignments": [
                          15007
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15007,
                            "name": "structHash",
                            "nodeType": "VariableDeclaration",
                            "scope": 15076,
                            "src": "18680:18:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 15006,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "18680:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15018,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 15011,
                                  "name": "DELEGATION_TYPEHASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15644,
                                  "src": "18722:19:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 15012,
                                  "name": "delegatee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14972,
                                  "src": "18743:9:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 15013,
                                  "name": "lockDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14974,
                                  "src": "18754:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 15014,
                                  "name": "nonce",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14976,
                                  "src": "18764:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 15015,
                                  "name": "expiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14978,
                                  "src": "18771:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 15009,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "18711:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 15010,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "18711:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 15016,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18711:67:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 15008,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "18701:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 15017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18701:78:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18680:99:57"
                      },
                      {
                        "assignments": [
                          15020
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15020,
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "scope": 15076,
                            "src": "18784:14:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 15019,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "18784:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15029,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "1901",
                                  "id": 15024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18828:10:57",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 15025,
                                  "name": "domainSeparator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14988,
                                  "src": "18840:15:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 15026,
                                  "name": "structHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15007,
                                  "src": "18857:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 15022,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "18811:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 15023,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "18811:16:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 15027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18811:57:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 15021,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "18801:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 15028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18801:68:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18784:85:57"
                      },
                      {
                        "assignments": [
                          15031
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15031,
                            "name": "signatory",
                            "nodeType": "VariableDeclaration",
                            "scope": 15076,
                            "src": "18873:17:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 15030,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "18873:7:57",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15038,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15033,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15020,
                              "src": "18903:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15034,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14980,
                              "src": "18911:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15035,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14982,
                              "src": "18914:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15036,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14984,
                              "src": "18917:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 15032,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44986,
                            "src": "18893:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                            }
                          },
                          "id": 15037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18893:26:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18873:46:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 15042,
                                  "name": "signatory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15031,
                                  "src": "19029:9:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 15040,
                                  "name": "RSKAddrValidator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42700,
                                  "src": "18997:16:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_RSKAddrValidator_$42700_$",
                                    "typeString": "type(library RSKAddrValidator)"
                                  }
                                },
                                "id": 15041,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "checkPKNotZero",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42674,
                                "src": "18997:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) pure returns (bool)"
                                }
                              },
                              "id": 15043,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18997:42:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a64656c656761746542795369673a20696e76616c6964207369676e6174757265",
                              "id": 15044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19041:43:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_36beb4bac13116361856c2a0a26a28eeb74a3ba90896bf8ffb00998f1476a3cd",
                                "typeString": "literal_string \"Staking::delegateBySig: invalid signature\""
                              },
                              "value": "Staking::delegateBySig: invalid signature"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_36beb4bac13116361856c2a0a26a28eeb74a3ba90896bf8ffb00998f1476a3cd",
                                "typeString": "literal_string \"Staking::delegateBySig: invalid signature\""
                              }
                            ],
                            "id": 15039,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "18989:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18989:96:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15046,
                        "nodeType": "ExpressionStatement",
                        "src": "18989:96:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 15053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 15048,
                                "name": "nonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14976,
                                "src": "19097:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 15052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "19106:19:57",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 15049,
                                    "name": "nonces",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15693,
                                    "src": "19106:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 15051,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 15050,
                                    "name": "signatory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15031,
                                    "src": "19113:9:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19106:17:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19097:28:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a64656c656761746542795369673a20696e76616c6964206e6f6e6365",
                              "id": 15054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19127:39:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fe707c3943a90640d00b640ed5e2b70c641049e4c81d408d205b1b32e0b58e7c",
                                "typeString": "literal_string \"Staking::delegateBySig: invalid nonce\""
                              },
                              "value": "Staking::delegateBySig: invalid nonce"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fe707c3943a90640d00b640ed5e2b70c641049e4c81d408d205b1b32e0b58e7c",
                                "typeString": "literal_string \"Staking::delegateBySig: invalid nonce\""
                              }
                            ],
                            "id": 15047,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "19089:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19089:78:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15056,
                        "nodeType": "ExpressionStatement",
                        "src": "19089:78:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 15060,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 15058,
                                "name": "now",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44996,
                                "src": "19179:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 15059,
                                "name": "expiry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14978,
                                "src": "19186:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19179:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a64656c656761746542795369673a207369676e61747572652065787069726564",
                              "id": 15061,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19194:43:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_022fa77b09607d567f37ae605f4ff588c2f698e7d9558051a8769488b0c2bf15",
                                "typeString": "literal_string \"Staking::delegateBySig: signature expired\""
                              },
                              "value": "Staking::delegateBySig: signature expired"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_022fa77b09607d567f37ae605f4ff588c2f698e7d9558051a8769488b0c2bf15",
                                "typeString": "literal_string \"Staking::delegateBySig: signature expired\""
                              }
                            ],
                            "id": 15057,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "19171:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19171:67:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15063,
                        "nodeType": "ExpressionStatement",
                        "src": "19171:67:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15065,
                              "name": "signatory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15031,
                              "src": "19252:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15066,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14972,
                              "src": "19263:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15067,
                              "name": "lockDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14974,
                              "src": "19274:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15064,
                            "name": "_delegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15170,
                            "src": "19242:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 15068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19242:41:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15069,
                        "nodeType": "ExpressionStatement",
                        "src": "19242:41:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15071,
                              "name": "signatory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15031,
                              "src": "19415:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15072,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14972,
                              "src": "19426:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15073,
                              "name": "lockDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14974,
                              "src": "19437:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15070,
                            "name": "_delegateNext",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15250,
                            "src": "19401:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 15074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19401:45:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15075,
                        "nodeType": "ExpressionStatement",
                        "src": "19401:45:57"
                      }
                    ]
                  },
                  "documentation": "@notice Delegates votes from signatory to a delegatee account.\nVoting with EIP-712 Signatures.\n\t * Voting power can be delegated to any address, and then can be used to\nvote on proposals. A key benefit to users of by-signature functionality\nis that they can create a signed vote transaction for free, and have a\ntrusted third-party spend rBTC(or ETH) on gas fees and write it to the\nblockchain for them.\n\t * The third party in this scenario, submitting the SOV-holder’s signed\ntransaction holds a voting power that is for only a single proposal.\nThe signatory still holds the power to vote on their own behalf in\nthe proposal if the third party has not yet published the signed\ntransaction that was given to them.\n\t * @dev The signature needs to be broken up into 3 parameters, known as\nv, r and s:\nconst r = '0x' + sig.substring(2).substring(0, 64);\nconst s = '0x' + sig.substring(2).substring(64, 128);\nconst v = '0x' + sig.substring(2).substring(128, 130);\n\t * @param delegatee The address to delegate votes to.\n@param lockDate The date until which the position is locked.\n@param nonce The contract state required to match the signature.\n@param expiry The time at which to expire the signature.\n@param v The recovery byte of the signature.\n@param r Half of the ECDSA signature pair.\n@param s Half of the ECDSA signature pair.\n",
                  "id": 15077,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "delegateBySig",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14972,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 15077,
                        "src": "18044:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14971,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18044:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14974,
                        "name": "lockDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 15077,
                        "src": "18065:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14973,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18065:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14976,
                        "name": "nonce",
                        "nodeType": "VariableDeclaration",
                        "scope": 15077,
                        "src": "18085:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14975,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18085:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14978,
                        "name": "expiry",
                        "nodeType": "VariableDeclaration",
                        "scope": 15077,
                        "src": "18102:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14977,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18102:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14980,
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "scope": 15077,
                        "src": "18120:7:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 14979,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "18120:5:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14982,
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "scope": 15077,
                        "src": "18131:9:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14981,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "18131:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14984,
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "scope": 15077,
                        "src": "18144:9:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 14983,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "18144:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18040:116:57"
                  },
                  "returnParameters": {
                    "id": 14986,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18164:0:57"
                  },
                  "scope": 15557,
                  "src": "18018:1432:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15094,
                    "nodeType": "Block",
                    "src": "19839:72:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15085,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15079,
                              "src": "19864:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 15089,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 15086,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "19873:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 15087,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "19873:12:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 15088,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19888:1:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "19873:16:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15090,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "19891:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 15091,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "19891:15:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15084,
                            "name": "getPriorVotes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16025,
                            "src": "19850:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (address,uint256,uint256) view returns (uint96)"
                            }
                          },
                          "id": 15092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19850:57:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 15083,
                        "id": 15093,
                        "nodeType": "Return",
                        "src": "19843:64:57"
                      }
                    ]
                  },
                  "documentation": "@notice Get the current votes balance for a user account.\n@param account The address to get votes balance.\n@dev This is a wrapper to simplify arguments. The actual computation is\nperformed on WeightedStaking parent contract.\n@return The number of current votes for a user account.\n",
                  "id": 15095,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrentVotes",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15080,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15079,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 15095,
                        "src": "19791:15:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15078,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19791:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19790:17:57"
                  },
                  "returnParameters": {
                    "id": 15083,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15082,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15095,
                        "src": "19831:6:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 15081,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "19831:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19830:8:57"
                  },
                  "scope": 15557,
                  "src": "19766:145:57",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15122,
                    "nodeType": "Block",
                    "src": "20133:157:57",
                    "statements": [
                      {
                        "assignments": [
                          15103
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15103,
                            "name": "nCheckpoints",
                            "nodeType": "VariableDeclaration",
                            "scope": 15122,
                            "src": "20137:19:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 15102,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "20137:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15107,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 15104,
                            "name": "numTotalStakingCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15661,
                            "src": "20159:26:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                              "typeString": "mapping(uint256 => uint32)"
                            }
                          },
                          "id": 15106,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 15105,
                            "name": "lockedTS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15097,
                            "src": "20186:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "20159:36:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20137:58:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 15110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 15108,
                              "name": "nCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15103,
                              "src": "20206:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 15109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20221:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "20206:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 15119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20285:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "id": 15120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "20206:80:57",
                          "trueExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 15111,
                                  "name": "totalStakingCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15657,
                                  "src": "20225:23:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                    "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                  }
                                },
                                "id": 15113,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 15112,
                                  "name": "lockedTS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15097,
                                  "src": "20249:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "20225:33:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                  "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                }
                              },
                              "id": 15117,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 15116,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15114,
                                  "name": "nCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15103,
                                  "src": "20259:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 15115,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20274:1:57",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "20259:16:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20225:51:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                "typeString": "struct StakingStorage.Checkpoint storage ref"
                              }
                            },
                            "id": 15118,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stake",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15650,
                            "src": "20225:57:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 15101,
                        "id": 15121,
                        "nodeType": "Return",
                        "src": "20199:87:57"
                      }
                    ]
                  },
                  "documentation": "@notice Get the current number of tokens staked for a day.\n@param lockedTS The timestamp to get the staked tokens for.\n",
                  "id": 15123,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrentStakedUntil",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15098,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15097,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 15123,
                        "src": "20084:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15096,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20084:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20083:18:57"
                  },
                  "returnParameters": {
                    "id": 15101,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15100,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15123,
                        "src": "20125:6:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 15099,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "20125:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20124:8:57"
                  },
                  "scope": 15557,
                  "src": "20053:237:57",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15169,
                    "nodeType": "Block",
                    "src": "20706:324:57",
                    "statements": [
                      {
                        "assignments": [
                          15133
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15133,
                            "name": "currentDelegate",
                            "nodeType": "VariableDeclaration",
                            "scope": 15169,
                            "src": "20710:23:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 15132,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "20710:7:57",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15139,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 15134,
                              "name": "delegates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15631,
                              "src": "20736:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 15136,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 15135,
                              "name": "delegator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15125,
                              "src": "20746:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "20736:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 15138,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 15137,
                            "name": "lockedTS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15129,
                            "src": "20757:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "20736:30:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20710:56:57"
                      },
                      {
                        "assignments": [
                          15141
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15141,
                            "name": "delegatorBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 15169,
                            "src": "20770:23:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 15140,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "20770:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15146,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15143,
                              "name": "delegator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15125,
                              "src": "20811:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15144,
                              "name": "lockedTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15129,
                              "src": "20822:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15142,
                            "name": "currentBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14913,
                            "src": "20796:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (address,uint256) view returns (uint96)"
                            }
                          },
                          "id": 15145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20796:35:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20770:61:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 15147,
                                "name": "delegates",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15631,
                                "src": "20835:9:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => address))"
                                }
                              },
                              "id": 15150,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 15148,
                                "name": "delegator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15125,
                                "src": "20845:9:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20835:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 15151,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 15149,
                              "name": "lockedTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15129,
                              "src": "20856:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "20835:30:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 15152,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15127,
                            "src": "20868:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "20835:42:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 15154,
                        "nodeType": "ExpressionStatement",
                        "src": "20835:42:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15156,
                              "name": "delegator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15125,
                              "src": "20903:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15157,
                              "name": "lockedTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15129,
                              "src": "20914:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15158,
                              "name": "currentDelegate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15133,
                              "src": "20924:15:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15159,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15127,
                              "src": "20941:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15155,
                            "name": "DelegateChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13131,
                            "src": "20887:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,address,address)"
                            }
                          },
                          "id": 15160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20887:64:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15161,
                        "nodeType": "EmitStatement",
                        "src": "20882:69:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15163,
                              "name": "currentDelegate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15133,
                              "src": "20971:15:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15164,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15127,
                              "src": "20988:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15165,
                              "name": "delegatorBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15141,
                              "src": "20999:16:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15166,
                              "name": "lockedTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15129,
                              "src": "21017:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15162,
                            "name": "_moveDelegates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15295,
                            "src": "20956:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint96,uint256)"
                            }
                          },
                          "id": 15167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20956:70:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15168,
                        "nodeType": "ExpressionStatement",
                        "src": "20956:70:57"
                      }
                    ]
                  },
                  "documentation": "@notice Set new delegatee. Move from user's current delegate to a new\ndelegatee the stake balance.\n@param delegator The user address to move stake balance from its current delegatee.\n@param delegatee The new delegatee. The address to move stake balance to.\n@param lockedTS The lock date.\n",
                  "id": 15170,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_delegate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15125,
                        "name": "delegator",
                        "nodeType": "VariableDeclaration",
                        "scope": 15170,
                        "src": "20635:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15124,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20635:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15127,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 15170,
                        "src": "20656:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15126,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20656:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15129,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 15170,
                        "src": "20677:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15128,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20677:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20631:65:57"
                  },
                  "returnParameters": {
                    "id": 15131,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20706:0:57"
                  },
                  "scope": 15557,
                  "src": "20613:417:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15249,
                    "nodeType": "Block",
                    "src": "21242:588:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 15179,
                            "name": "_isVestingContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16682,
                            "src": "21250:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 15180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21250:20:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 15248,
                        "nodeType": "IfStatement",
                        "src": "21246:581:57",
                        "trueBody": {
                          "id": 15247,
                          "nodeType": "Block",
                          "src": "21272:555:57",
                          "statements": [
                            {
                              "assignments": [
                                15182
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15182,
                                  "name": "nextLock",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 15247,
                                  "src": "21277:16:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 15181,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "21277:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15187,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 15185,
                                    "name": "TWO_WEEKS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15595,
                                    "src": "21309:9:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 15183,
                                    "name": "lockedTS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15176,
                                    "src": "21296:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 15184,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "21296:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 15186,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21296:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "21277:42:57"
                            },
                            {
                              "assignments": [
                                15189
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15189,
                                  "name": "currentDelegate",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 15247,
                                  "src": "21324:23:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 15188,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "21324:7:57",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15195,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 15190,
                                    "name": "delegates",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15631,
                                    "src": "21350:9:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => address))"
                                    }
                                  },
                                  "id": 15192,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 15191,
                                    "name": "delegator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15172,
                                    "src": "21360:9:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "21350:20:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 15194,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 15193,
                                  "name": "nextLock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15182,
                                  "src": "21371:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "21350:30:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "21324:56:57"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 15198,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15196,
                                  "name": "currentDelegate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15189,
                                  "src": "21389:15:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 15197,
                                  "name": "delegatee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15174,
                                  "src": "21408:9:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "21389:28:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 15206,
                              "nodeType": "IfStatement",
                              "src": "21385:87:57",
                              "trueBody": {
                                "id": 15205,
                                "nodeType": "Block",
                                "src": "21419:53:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 15200,
                                          "name": "delegator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15172,
                                          "src": "21435:9:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 15201,
                                          "name": "delegatee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15174,
                                          "src": "21446:9:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 15202,
                                          "name": "nextLock",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15182,
                                          "src": "21457:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 15199,
                                        "name": "_delegate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15170,
                                        "src": "21425:9:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256)"
                                        }
                                      },
                                      "id": 15203,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "21425:41:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 15204,
                                    "nodeType": "ExpressionStatement",
                                    "src": "21425:41:57"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                15208
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15208,
                                  "name": "endDate",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 15247,
                                  "src": "21551:15:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 15207,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "21551:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15215,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 15210,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44994,
                                          "src": "21578:3:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 15211,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "21578:10:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "id": 15209,
                                      "name": "IVesting",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18597,
                                      "src": "21569:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IVesting_$18597_$",
                                        "typeString": "type(contract IVesting)"
                                      }
                                    },
                                    "id": 15212,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "21569:20:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVesting_$18597",
                                      "typeString": "contract IVesting"
                                    }
                                  },
                                  "id": 15213,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "endDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18591,
                                  "src": "21569:28:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$",
                                    "typeString": "function () external returns (uint256)"
                                  }
                                },
                                "id": 15214,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21569:30:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "21551:48:57"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 15221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 15216,
                                  "name": "nextLock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15182,
                                  "src": "21604:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 15219,
                                      "name": "FOUR_WEEKS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13981,
                                      "src": "21628:10:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15217,
                                      "name": "lockedTS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15176,
                                      "src": "21615:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 15218,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "21615:12:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 15220,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21615:24:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21604:35:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15222,
                              "nodeType": "ExpressionStatement",
                              "src": "21604:35:57"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15225,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15223,
                                  "name": "nextLock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15182,
                                  "src": "21648:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 15224,
                                  "name": "endDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15208,
                                  "src": "21660:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21648:19:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 15246,
                              "nodeType": "IfStatement",
                              "src": "21644:179:57",
                              "trueBody": {
                                "id": 15245,
                                "nodeType": "Block",
                                "src": "21669:154:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15232,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 15226,
                                        "name": "currentDelegate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15189,
                                        "src": "21675:15:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 15227,
                                            "name": "delegates",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15631,
                                            "src": "21693:9:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                              "typeString": "mapping(address => mapping(uint256 => address))"
                                            }
                                          },
                                          "id": 15229,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 15228,
                                            "name": "delegator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15172,
                                            "src": "21703:9:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "21693:20:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                            "typeString": "mapping(uint256 => address)"
                                          }
                                        },
                                        "id": 15231,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 15230,
                                          "name": "nextLock",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15182,
                                          "src": "21714:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "21693:30:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "21675:48:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 15233,
                                    "nodeType": "ExpressionStatement",
                                    "src": "21675:48:57"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 15236,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 15234,
                                        "name": "currentDelegate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15189,
                                        "src": "21733:15:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 15235,
                                        "name": "delegatee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15174,
                                        "src": "21752:9:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "21733:28:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 15244,
                                    "nodeType": "IfStatement",
                                    "src": "21729:89:57",
                                    "trueBody": {
                                      "id": 15243,
                                      "nodeType": "Block",
                                      "src": "21763:55:57",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 15238,
                                                "name": "delegator",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15172,
                                                "src": "21780:9:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 15239,
                                                "name": "delegatee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15174,
                                                "src": "21791:9:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 15240,
                                                "name": "nextLock",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 15182,
                                                "src": "21802:8:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 15237,
                                              "name": "_delegate",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 15170,
                                              "src": "21770:9:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                              }
                                            },
                                            "id": 15241,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21770:41:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 15242,
                                          "nodeType": "ExpressionStatement",
                                          "src": "21770:41:57"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 15250,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_delegateNext",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15172,
                        "name": "delegator",
                        "nodeType": "VariableDeclaration",
                        "scope": 15250,
                        "src": "21171:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15171,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21171:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15174,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 15250,
                        "src": "21192:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15173,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21192:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15176,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 15250,
                        "src": "21213:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15175,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21213:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21167:65:57"
                  },
                  "returnParameters": {
                    "id": 15178,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21242:0:57"
                  },
                  "scope": 15557,
                  "src": "21145:685:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15294,
                    "nodeType": "Block",
                    "src": "22252:207:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 15263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 15261,
                              "name": "srcRep",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15252,
                              "src": "22260:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 15262,
                              "name": "dstRep",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15254,
                              "src": "22270:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "22260:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 15266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 15264,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15256,
                              "src": "22280:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 15265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22289:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "22280:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "22260:30:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 15293,
                        "nodeType": "IfStatement",
                        "src": "22256:200:57",
                        "trueBody": {
                          "id": 15292,
                          "nodeType": "Block",
                          "src": "22292:164:57",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 15272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15268,
                                  "name": "srcRep",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15252,
                                  "src": "22301:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 15270,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22319:1:57",
                                      "subdenomination": null,
                                      "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": 15269,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "22311:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 15271,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22311:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "22301:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 15279,
                              "nodeType": "IfStatement",
                              "src": "22297:74:57",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 15274,
                                      "name": "srcRep",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15252,
                                      "src": "22346:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 15275,
                                      "name": "lockedTS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15258,
                                      "src": "22354:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 15276,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15256,
                                      "src": "22364:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    ],
                                    "id": 15273,
                                    "name": "_decreaseDelegateStake",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13467,
                                    "src": "22323:22:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint96_$returns$__$",
                                      "typeString": "function (address,uint256,uint96)"
                                    }
                                  },
                                  "id": 15277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22323:48:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 15278,
                                "nodeType": "ExpressionStatement",
                                "src": "22323:48:57"
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 15284,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15280,
                                  "name": "dstRep",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15254,
                                  "src": "22381:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 15282,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22399:1:57",
                                      "subdenomination": null,
                                      "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": 15281,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "22391:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 15283,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22391:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "22381:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 15291,
                              "nodeType": "IfStatement",
                              "src": "22377:74:57",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 15286,
                                      "name": "dstRep",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15254,
                                      "src": "22426:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 15287,
                                      "name": "lockedTS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15258,
                                      "src": "22434:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 15288,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15256,
                                      "src": "22444:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    ],
                                    "id": 15285,
                                    "name": "_increaseDelegateStake",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13412,
                                    "src": "22403:22:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint96_$returns$__$",
                                      "typeString": "function (address,uint256,uint96)"
                                    }
                                  },
                                  "id": 15289,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22403:48:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 15290,
                                "nodeType": "ExpressionStatement",
                                "src": "22403:48:57"
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Move an amount of delegate stake from a source address to a\ndestination address.\n@param srcRep The address to get the staked amount from.\n@param dstRep The address to send the staked amount to.\n@param amount The staked amount to move.\n@param lockedTS The lock date.\n",
                  "id": 15295,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_moveDelegates",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15259,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15252,
                        "name": "srcRep",
                        "nodeType": "VariableDeclaration",
                        "scope": 15295,
                        "src": "22170:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15251,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22170:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15254,
                        "name": "dstRep",
                        "nodeType": "VariableDeclaration",
                        "scope": 15295,
                        "src": "22188:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15253,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22188:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15256,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 15295,
                        "src": "22206:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 15255,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "22206:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15258,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 15295,
                        "src": "22223:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15257,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22223:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22166:76:57"
                  },
                  "returnParameters": {
                    "id": 15260,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22252:0:57"
                  },
                  "scope": 15557,
                  "src": "22143:316:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15306,
                    "nodeType": "Block",
                    "src": "23136:82:57",
                    "statements": [
                      {
                        "assignments": [
                          15301
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15301,
                            "name": "chainId",
                            "nodeType": "VariableDeclaration",
                            "scope": 15306,
                            "src": "23140:15:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15300,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23140:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15302,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23140:15:57"
                      },
                      {
                        "externalReferences": [
                          {
                            "chainId": {
                              "declaration": 15301,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "23173:7:57",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 15303,
                        "nodeType": "InlineAssembly",
                        "operations": "{ chainId := chainid() }",
                        "src": "23159:38:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15304,
                          "name": "chainId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15301,
                          "src": "23207:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 15299,
                        "id": 15305,
                        "nodeType": "Return",
                        "src": "23200:14:57"
                      }
                    ]
                  },
                  "documentation": "@notice Retrieve CHAIN_ID of the executing chain.\n\t * Chain identifier (chainID) introduced in EIP-155 protects transaction\nincluded into one chain from being included into another chain.\nBasically, chain identifier is an integer number being used in the\nprocesses of signing transactions and verifying transaction signatures.\n\t * @dev As of version 0.5.12, Solidity includes an assembly function\nchainid() that provides access to the new CHAINID opcode.\n\t * TODO: chainId is included in block. So you can get chain id like\nblock timestamp or block number: block.chainid;\n",
                  "id": 15307,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getChainId",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15296,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23101:2:57"
                  },
                  "returnParameters": {
                    "id": 15299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15298,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15307,
                        "src": "23127:7:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15297,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23127:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23126:9:57"
                  },
                  "scope": 15557,
                  "src": "23082:136:57",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15327,
                    "nodeType": "Block",
                    "src": "23635:139:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 15319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 15315,
                                "name": "_newStakingContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15309,
                                "src": "23647:19:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 15317,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23678:1:57",
                                    "subdenomination": null,
                                    "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": 15316,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "23670:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 15318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23670:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "23647:33:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "63616e277420726573657420746865206e6577207374616b696e6720636f6e747261637420746f2030",
                              "id": 15320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23682:43:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c333fd244e494d0d1630bb1150b6e129c26105154e62cc536ea408520079eb49",
                                "typeString": "literal_string \"can't reset the new staking contract to 0\""
                              },
                              "value": "can't reset the new staking contract to 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c333fd244e494d0d1630bb1150b6e129c26105154e62cc536ea408520079eb49",
                                "typeString": "literal_string \"can't reset the new staking contract to 0\""
                              }
                            ],
                            "id": 15314,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "23639:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23639:87:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15322,
                        "nodeType": "ExpressionStatement",
                        "src": "23639:87:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 15323,
                            "name": "newStakingContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15646,
                            "src": "23730:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 15324,
                            "name": "_newStakingContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15309,
                            "src": "23751:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "23730:40:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 15326,
                        "nodeType": "ExpressionStatement",
                        "src": "23730:40:57"
                      }
                    ]
                  },
                  "documentation": "@notice Allow the owner to set a new staking contract.\nAs a consequence it allows the stakers to migrate their positions\nto the new contract.\n@dev Doesn't have any influence as long as migrateToNewStakingContract\nis not implemented.\n@param _newStakingContract The address of the new staking contract.\n",
                  "id": 15328,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15312,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15311,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "23625:9:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "23625:9:57"
                    }
                  ],
                  "name": "setNewStakingContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15310,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15309,
                        "name": "_newStakingContract",
                        "nodeType": "VariableDeclaration",
                        "scope": 15328,
                        "src": "23589:27:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15308,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23589:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23588:29:57"
                  },
                  "returnParameters": {
                    "id": 15313,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23635:0:57"
                  },
                  "scope": 15557,
                  "src": "23558:216:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15350,
                    "nodeType": "Block",
                    "src": "24023:125:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 15340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 15336,
                                "name": "_feeSharing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15330,
                                "src": "24035:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 15338,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24058:1:57",
                                    "subdenomination": null,
                                    "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": 15337,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "24050:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 15339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24050:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "24035:25:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "46656553686172696e6720616464726573732073686f756c646e27742062652030",
                              "id": 15341,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24062:35:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d4d0d865ce50dae9c7c4f9dd1405535cfeb3e8ae9a6cfa9df8765cde6621ea80",
                                "typeString": "literal_string \"FeeSharing address shouldn't be 0\""
                              },
                              "value": "FeeSharing address shouldn't be 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d4d0d865ce50dae9c7c4f9dd1405535cfeb3e8ae9a6cfa9df8765cde6621ea80",
                                "typeString": "literal_string \"FeeSharing address shouldn't be 0\""
                              }
                            ],
                            "id": 15335,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "24027:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24027:71:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15343,
                        "nodeType": "ExpressionStatement",
                        "src": "24027:71:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 15344,
                            "name": "feeSharing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15695,
                            "src": "24102:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                              "typeString": "contract IFeeSharingProxy"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 15346,
                                "name": "_feeSharing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15330,
                                "src": "24132:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 15345,
                              "name": "IFeeSharingProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13112,
                              "src": "24115:16:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IFeeSharingProxy_$13112_$",
                                "typeString": "type(contract IFeeSharingProxy)"
                              }
                            },
                            "id": 15347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24115:29:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                              "typeString": "contract IFeeSharingProxy"
                            }
                          },
                          "src": "24102:42:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                            "typeString": "contract IFeeSharingProxy"
                          }
                        },
                        "id": 15349,
                        "nodeType": "ExpressionStatement",
                        "src": "24102:42:57"
                      }
                    ]
                  },
                  "documentation": "@notice Allow the owner to set a fee sharing proxy contract.\nWe need it for unstaking with slashing.\n@param _feeSharing The address of FeeSharingProxy contract.\n",
                  "id": 15351,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15333,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15332,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "24013:9:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "24013:9:57"
                    }
                  ],
                  "name": "setFeeSharing",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15331,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15330,
                        "name": "_feeSharing",
                        "nodeType": "VariableDeclaration",
                        "scope": 15351,
                        "src": "23985:19:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15329,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23985:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23984:21:57"
                  },
                  "returnParameters": {
                    "id": 15334,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24023:0:57"
                  },
                  "scope": 15557,
                  "src": "23962:186:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15373,
                    "nodeType": "Block",
                    "src": "24370:186:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 15365,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "id": 15361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15359,
                                  "name": "MIN_WEIGHT_SCALING",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15615,
                                  "src": "24386:18:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 15360,
                                  "name": "_weightScaling",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15353,
                                  "src": "24408:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "24386:36:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "id": 15364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15362,
                                  "name": "_weightScaling",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15353,
                                  "src": "24426:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 15363,
                                  "name": "MAX_WEIGHT_SCALING",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15618,
                                  "src": "24444:18:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "24426:36:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "24386:76:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "776569676874207363616c696e6720646f65736e27742062656c6f6e6720746f2072616e6765205b312c20395d",
                              "id": 15366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24467:47:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3f5a5a81575622efc7f067f2fefb459b874c21e84ee993a7c862f4acd2faa0e7",
                                "typeString": "literal_string \"weight scaling doesn't belong to range [1, 9]\""
                              },
                              "value": "weight scaling doesn't belong to range [1, 9]"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3f5a5a81575622efc7f067f2fefb459b874c21e84ee993a7c862f4acd2faa0e7",
                                "typeString": "literal_string \"weight scaling doesn't belong to range [1, 9]\""
                              }
                            ],
                            "id": 15358,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "24374:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24374:144:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15368,
                        "nodeType": "ExpressionStatement",
                        "src": "24374:144:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 15369,
                            "name": "weightScaling",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15698,
                            "src": "24522:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 15370,
                            "name": "_weightScaling",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15353,
                            "src": "24538:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "24522:30:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 15372,
                        "nodeType": "ExpressionStatement",
                        "src": "24522:30:57"
                      }
                    ]
                  },
                  "documentation": "@notice Allow the owner to set weight scaling.\nWe need it for unstaking with slashing.\n@param _weightScaling The weight scaling.\n",
                  "id": 15374,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15356,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15355,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "24360:9:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "24360:9:57"
                    }
                  ],
                  "name": "setWeightScaling",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15354,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15353,
                        "name": "_weightScaling",
                        "nodeType": "VariableDeclaration",
                        "scope": 15374,
                        "src": "24330:21:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 15352,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "24330:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24329:23:57"
                  },
                  "returnParameters": {
                    "id": 15357,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24370:0:57"
                  },
                  "scope": 15557,
                  "src": "24304:252:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15386,
                    "nodeType": "Block",
                    "src": "24936:355:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 15382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 15378,
                                "name": "newStakingContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15646,
                                "src": "24948:18:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 15380,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24978:1:57",
                                    "subdenomination": null,
                                    "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": 15379,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "24970:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 15381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24970:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "24948:32:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7468657265206973206e6f206e6577207374616b696e6720636f6e747261637420736574",
                              "id": 15383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24982:38:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_118e084e5bff6b607d2c8329b41270a68bd35298ccc985ed23e166ce192a14d3",
                                "typeString": "literal_string \"there is no new staking contract set\""
                              },
                              "value": "there is no new staking contract set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_118e084e5bff6b607d2c8329b41270a68bd35298ccc985ed23e166ce192a14d3",
                                "typeString": "literal_string \"there is no new staking contract set\""
                              }
                            ],
                            "id": 15377,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "24940:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24940:81:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15385,
                        "nodeType": "ExpressionStatement",
                        "src": "24940:81:57"
                      }
                    ]
                  },
                  "documentation": "@notice Allow a staker to migrate his positions to the new staking contract.\n@dev Staking contract needs to be set before by the owner.\nCurrently not implemented, just needed for the interface.\n     In case it's needed at some point in the future,\n     the implementation needs to be changed first.\n",
                  "id": 15387,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrateToNewStakingContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15375,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24926:2:57"
                  },
                  "returnParameters": {
                    "id": 15376,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24936:0:57"
                  },
                  "scope": 15557,
                  "src": "24890:401:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15405,
                    "nodeType": "Block",
                    "src": "25657:84:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 15392,
                            "name": "allUnlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15634,
                            "src": "25661:11:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 15393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25675:4:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "25661:18:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15395,
                        "nodeType": "ExpressionStatement",
                        "src": "25661:18:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 15400,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45200,
                                      "src": "25730:4:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Staking_$15557",
                                        "typeString": "contract Staking"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Staking_$15557",
                                        "typeString": "contract Staking"
                                      }
                                    ],
                                    "id": 15399,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "25722:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 15401,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25722:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 15397,
                                  "name": "SOVToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15625,
                                  "src": "25703:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 15398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24644,
                                "src": "25703:18:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 15402,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25703:33:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15396,
                            "name": "TokensUnlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13173,
                            "src": "25688:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 15403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25688:49:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15404,
                        "nodeType": "EmitStatement",
                        "src": "25683:54:57"
                      }
                    ]
                  },
                  "documentation": "@notice Allow the owner to unlock all tokens in case the staking contract\nis going to be replaced\nNote: Not reversible on purpose. once unlocked, everything is unlocked.\nThe owner should not be able to just quickly unlock to withdraw his own\ntokens and lock again.\n@dev Last resort.\n",
                  "id": 15406,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15390,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15389,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "25647:9:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "25647:9:57"
                    }
                  ],
                  "name": "unlockAllTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15388,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25637:2:57"
                  },
                  "returnParameters": {
                    "id": 15391,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25657:0:57"
                  },
                  "scope": 15557,
                  "src": "25613:128:57",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15518,
                    "nodeType": "Block",
                    "src": "26002:771:57",
                    "statements": [
                      {
                        "assignments": [
                          15418
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15418,
                            "name": "latest",
                            "nodeType": "VariableDeclaration",
                            "scope": 15518,
                            "src": "26006:14:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15417,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "26006:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15425,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 15423,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 15420,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "26043:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 15421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "26043:15:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 15422,
                                "name": "MAX_DURATION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15604,
                                "src": "26061:12:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "26043:30:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15419,
                            "name": "timestampToLockDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16607,
                            "src": "26023:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 15424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26023:51:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26006:68:57"
                      },
                      {
                        "assignments": [
                          15427
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15427,
                            "name": "count",
                            "nodeType": "VariableDeclaration",
                            "scope": 15518,
                            "src": "26108:13:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15426,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "26108:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15429,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 15428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "26124:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26108:17:57"
                      },
                      {
                        "body": {
                          "id": 15454,
                          "nodeType": "Block",
                          "src": "26309:64:57",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "id": 15448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 15444,
                                      "name": "account",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15408,
                                      "src": "26333:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 15445,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15431,
                                      "src": "26342:1:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 15443,
                                    "name": "currentBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14913,
                                    "src": "26318:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint96_$",
                                      "typeString": "function (address,uint256) view returns (uint96)"
                                    }
                                  },
                                  "id": 15446,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26318:26:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 15447,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "26347:1:57",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "26318:30:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 15453,
                              "nodeType": "IfStatement",
                              "src": "26314:55:57",
                              "trueBody": {
                                "id": 15452,
                                "nodeType": "Block",
                                "src": "26350:19:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15450,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "26356:7:57",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 15449,
                                        "name": "count",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15427,
                                        "src": "26356:5:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 15451,
                                    "nodeType": "ExpressionStatement",
                                    "src": "26356:7:57"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 15436,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15431,
                            "src": "26280:1:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 15437,
                            "name": "latest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15418,
                            "src": "26285:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26280:11:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15455,
                        "initializationExpression": {
                          "assignments": [
                            15431
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 15431,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 15455,
                              "src": "26245:9:57",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 15430,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "26245:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 15435,
                          "initialValue": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 15434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 15432,
                              "name": "kickoffTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15620,
                              "src": "26257:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 15433,
                              "name": "TWO_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15595,
                              "src": "26269:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "26257:21:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "26245:33:57"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 15441,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 15439,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15431,
                              "src": "26293:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 15440,
                              "name": "TWO_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15595,
                              "src": "26298:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "26293:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 15442,
                          "nodeType": "ExpressionStatement",
                          "src": "26293:14:57"
                        },
                        "nodeType": "ForStatement",
                        "src": "26240:133:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 15456,
                            "name": "dates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15412,
                            "src": "26376:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 15460,
                                "name": "count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15427,
                                "src": "26398:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 15459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "26384:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 15457,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "26388:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 15458,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "26388:9:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                  "typeString": "uint256[]"
                                }
                              }
                            },
                            "id": 15461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26384:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "26376:28:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 15463,
                        "nodeType": "ExpressionStatement",
                        "src": "26376:28:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 15464,
                            "name": "stakes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15415,
                            "src": "26408:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint96_$dyn_memory_ptr",
                              "typeString": "uint96[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 15468,
                                "name": "count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15427,
                                "src": "26430:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 15467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "26417:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint96_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (uint96[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 15465,
                                  "name": "uint96",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "26421:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "id": 15466,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "26421:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint96_$dyn_storage_ptr",
                                  "typeString": "uint96[]"
                                }
                              }
                            },
                            "id": 15469,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26417:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint96_$dyn_memory",
                              "typeString": "uint96[] memory"
                            }
                          },
                          "src": "26408:28:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint96_$dyn_memory_ptr",
                            "typeString": "uint96[] memory"
                          }
                        },
                        "id": 15471,
                        "nodeType": "ExpressionStatement",
                        "src": "26408:28:57"
                      },
                      {
                        "assignments": [
                          15473
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15473,
                            "name": "j",
                            "nodeType": "VariableDeclaration",
                            "scope": 15518,
                            "src": "26552:9:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15472,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "26552:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15475,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 15474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "26564:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26552:13:57"
                      },
                      {
                        "body": {
                          "id": 15516,
                          "nodeType": "Block",
                          "src": "26638:132:57",
                          "statements": [
                            {
                              "assignments": [
                                15490
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15490,
                                  "name": "balance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 15516,
                                  "src": "26643:14:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  "typeName": {
                                    "id": 15489,
                                    "name": "uint96",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "26643:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15495,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 15492,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15408,
                                    "src": "26675:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 15493,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15477,
                                    "src": "26684:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 15491,
                                  "name": "currentBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14913,
                                  "src": "26660:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint96_$",
                                    "typeString": "function (address,uint256) view returns (uint96)"
                                  }
                                },
                                "id": 15494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26660:26:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "26643:43:57"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "id": 15498,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15496,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15490,
                                  "src": "26695:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 15497,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "26705:1:57",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "26695:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 15515,
                              "nodeType": "IfStatement",
                              "src": "26691:75:57",
                              "trueBody": {
                                "id": 15514,
                                "nodeType": "Block",
                                "src": "26708:58:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15503,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 15499,
                                          "name": "dates",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15412,
                                          "src": "26714:5:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 15501,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 15500,
                                          "name": "j",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15473,
                                          "src": "26720:1:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "26714:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 15502,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15477,
                                        "src": "26725:1:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "26714:12:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 15504,
                                    "nodeType": "ExpressionStatement",
                                    "src": "26714:12:57"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15509,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 15505,
                                          "name": "stakes",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15415,
                                          "src": "26732:6:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint96_$dyn_memory_ptr",
                                            "typeString": "uint96[] memory"
                                          }
                                        },
                                        "id": 15507,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 15506,
                                          "name": "j",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15473,
                                          "src": "26739:1:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "26732:9:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 15508,
                                        "name": "balance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15490,
                                        "src": "26744:7:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "src": "26732:19:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "id": 15510,
                                    "nodeType": "ExpressionStatement",
                                    "src": "26732:19:57"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15512,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "26757:3:57",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 15511,
                                        "name": "j",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15473,
                                        "src": "26757:1:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 15513,
                                    "nodeType": "ExpressionStatement",
                                    "src": "26757:3:57"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 15482,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15477,
                            "src": "26609:1:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 15483,
                            "name": "latest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15418,
                            "src": "26614:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26609:11:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15517,
                        "initializationExpression": {
                          "assignments": [
                            15477
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 15477,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 15517,
                              "src": "26574:9:57",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 15476,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "26574:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 15481,
                          "initialValue": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 15480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 15478,
                              "name": "kickoffTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15620,
                              "src": "26586:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 15479,
                              "name": "TWO_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15595,
                              "src": "26598:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "26586:21:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "26574:33:57"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 15487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 15485,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15477,
                              "src": "26622:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 15486,
                              "name": "TWO_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15595,
                              "src": "26627:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "26622:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 15488,
                          "nodeType": "ExpressionStatement",
                          "src": "26622:14:57"
                        },
                        "nodeType": "ForStatement",
                        "src": "26569:201:57"
                      }
                    ]
                  },
                  "documentation": "@notice Get list of stakes for a user account.\n@param account The address to get stakes.\n@return The arrays of dates and stakes.\n",
                  "id": 15519,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getStakes",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15408,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 15519,
                        "src": "25916:15:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15407,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "25916:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "25915:17:57"
                  },
                  "returnParameters": {
                    "id": 15416,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15412,
                        "name": "dates",
                        "nodeType": "VariableDeclaration",
                        "scope": 15519,
                        "src": "25954:22:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 15410,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "25954:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 15411,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "25954:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15415,
                        "name": "stakes",
                        "nodeType": "VariableDeclaration",
                        "scope": 15519,
                        "src": "25978:22:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint96_$dyn_memory_ptr",
                          "typeString": "uint96[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 15413,
                            "name": "uint96",
                            "nodeType": "ElementaryTypeName",
                            "src": "25978:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "id": 15414,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "25978:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint96_$dyn_storage_ptr",
                            "typeString": "uint96[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "25953:48:57"
                  },
                  "scope": 15557,
                  "src": "25897:876:57",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15528,
                    "nodeType": "Block",
                    "src": "26989:32:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15525,
                              "name": "SOVToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15625,
                              "src": "27008:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "id": 15524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "27000:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 15526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27000:17:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 15523,
                        "id": 15527,
                        "nodeType": "Return",
                        "src": "26993:24:57"
                      }
                    ]
                  },
                  "documentation": "@notice Overrides default ApprovalReceiver._getToken function to\nregister SOV token on this contract.\n@return The address of SOV token.\n",
                  "id": 15529,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15520,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26954:2:57"
                  },
                  "returnParameters": {
                    "id": 15523,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15522,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15529,
                        "src": "26980:7:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15521,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26980:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26979:9:57"
                  },
                  "scope": 15557,
                  "src": "26936:85:57",
                  "stateMutability": "view",
                  "superFunction": 10639,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15555,
                    "nodeType": "Block",
                    "src": "27296:121:57",
                    "statements": [
                      {
                        "assignments": [
                          15538
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15538,
                            "name": "selectors",
                            "nodeType": "VariableDeclaration",
                            "scope": 15555,
                            "src": "27300:25:57",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                              "typeString": "bytes4[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 15536,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "27300:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 15537,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "27300:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15544,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 15542,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "27341:1:57",
                              "subdenomination": null,
                              "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": 15541,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "27328:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (bytes4[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 15539,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "27332:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 15540,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "27332:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            }
                          },
                          "id": 15543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27328:15:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "27300:43:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15551,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 15545,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15538,
                              "src": "27347:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 15547,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 15546,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "27357:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "27347:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15548,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45200,
                                "src": "27362:4:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Staking_$15557",
                                  "typeString": "contract Staking"
                                }
                              },
                              "id": 15549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakeWithApproval",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14028,
                              "src": "27362:22:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint96_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                                "typeString": "function (address,uint96,uint256,address,address) external"
                              }
                            },
                            "id": 15550,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "27362:31:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "27347:46:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 15552,
                        "nodeType": "ExpressionStatement",
                        "src": "27347:46:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15553,
                          "name": "selectors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15538,
                          "src": "27404:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "functionReturnParameters": 15534,
                        "id": 15554,
                        "nodeType": "Return",
                        "src": "27397:16:57"
                      }
                    ]
                  },
                  "documentation": "@notice Overrides default ApprovalReceiver._getSelectors function to\nregister stakeWithApproval selector on this contract.\n@return The array of registered selectors on this contract.\n",
                  "id": 15556,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getSelectors",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15530,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27253:2:57"
                  },
                  "returnParameters": {
                    "id": 15534,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15533,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15556,
                        "src": "27279:15:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 15531,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "27279:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 15532,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "27279:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "27278:17:57"
                  },
                  "scope": 15557,
                  "src": "27231:186:57",
                  "stateMutability": "view",
                  "superFunction": 10652,
                  "visibility": "internal"
                }
              ],
              "scope": 15558,
              "src": "885:26534:57"
            }
          ],
          "src": "0:27420:57"
        },
        "id": 57
      },
      "contracts/governance/Staking/StakingProxy.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Staking/StakingProxy.sol",
          "exportedSymbols": {
            "StakingProxy": [
              15583
            ]
          },
          "id": 15584,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15559,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:58"
            },
            {
              "absolutePath": "contracts/governance/Staking/StakingStorage.sol",
              "file": "./StakingStorage.sol",
              "id": 15560,
              "nodeType": "ImportDirective",
              "scope": 15584,
              "sourceUnit": 15714,
              "src": "26:30:58",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/proxy/UpgradableProxy.sol",
              "file": "../../proxy/UpgradableProxy.sol",
              "id": 15561,
              "nodeType": "ImportDirective",
              "scope": 15584,
              "sourceUnit": 42654,
              "src": "57:41:58",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 15562,
                    "name": "StakingStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15713,
                    "src": "425:14:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_StakingStorage_$15713",
                      "typeString": "contract StakingStorage"
                    }
                  },
                  "id": 15563,
                  "nodeType": "InheritanceSpecifier",
                  "src": "425:14:58"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 15564,
                    "name": "UpgradableProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42653,
                    "src": "441:15:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UpgradableProxy_$42653",
                      "typeString": "contract UpgradableProxy"
                    }
                  },
                  "id": 15565,
                  "nodeType": "InheritanceSpecifier",
                  "src": "441:15:58"
                }
              ],
              "contractDependencies": [
                15713,
                41125,
                41798,
                42623,
                42653
              ],
              "contractKind": "contract",
              "documentation": "@title Staking Proxy contract.\n@dev Staking contract should be upgradable, use UpgradableProxy.\nStakingStorage is deployed with the upgradable functionality\nby using this contract instead, that inherits from UpgradableProxy\nthe possibility of being enhanced and re-deployed.\n",
              "fullyImplemented": true,
              "id": 15583,
              "linearizedBaseContracts": [
                15583,
                42653,
                42623,
                15713,
                41798,
                41125
              ],
              "name": "StakingProxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 15581,
                    "nodeType": "Block",
                    "src": "601:61:58",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 15570,
                            "name": "SOVToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15625,
                            "src": "605:8:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 15572,
                                "name": "SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15567,
                                "src": "623:3:58",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 15571,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24699,
                              "src": "616:6:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 15573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "616:11:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "605:22:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 15575,
                        "nodeType": "ExpressionStatement",
                        "src": "605:22:58"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 15576,
                            "name": "kickoffTS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15620,
                            "src": "631:9:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 15577,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44984,
                              "src": "643:5:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 15578,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "643:15:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "631:27:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 15580,
                        "nodeType": "ExpressionStatement",
                        "src": "631:27:58"
                      }
                    ]
                  },
                  "documentation": "@notice Construct a new staking contract.\n@param SOV The address of the SOV token address.",
                  "id": 15582,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15568,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15567,
                        "name": "SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 15582,
                        "src": "581:11:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15566,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "581:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "580:13:58"
                  },
                  "returnParameters": {
                    "id": 15569,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "601:0:58"
                  },
                  "scope": 15583,
                  "src": "569:93:58",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 15584,
              "src": "400:264:58"
            }
          ],
          "src": "0:665:58"
        },
        "id": 58
      },
      "contracts/governance/Staking/StakingStorage.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Staking/StakingStorage.sol",
          "exportedSymbols": {
            "StakingStorage": [
              15713
            ]
          },
          "id": 15714,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15585,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:59"
            },
            {
              "id": 15586,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:59"
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../../openzeppelin/Ownable.sol",
              "id": 15587,
              "nodeType": "ImportDirective",
              "scope": 15714,
              "sourceUnit": 41799,
              "src": "60:40:59",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 15588,
              "nodeType": "ImportDirective",
              "scope": 15714,
              "sourceUnit": 24700,
              "src": "101:37:59",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/IFeeSharingProxy.sol",
              "file": "../IFeeSharingProxy.sol",
              "id": 15589,
              "nodeType": "ImportDirective",
              "scope": 15714,
              "sourceUnit": 13113,
              "src": "139:33:59",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/VestingRegistryLogic.sol",
              "file": "../Vesting/VestingRegistryLogic.sol",
              "id": 15590,
              "nodeType": "ImportDirective",
              "scope": 15714,
              "sourceUnit": 24483,
              "src": "173:45:59",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 15591,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "968:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 15592,
                  "nodeType": "InheritanceSpecifier",
                  "src": "968:7:59"
                }
              ],
              "contractDependencies": [
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Staking Storage contact.\n@notice Just the storage part of stacking contract, no functions,\nonly constant, variables and required structures (mappings).\nUsed by StackingProxy and Checkpoints contracts.\n * What is SOV staking?\nThe purpose of the SOV token is to provide a pseudonymous,\ncensorship-resistant mechanism for governing the parameters of the Sovryn\nprotocol, while aligning the incentives of protocol governors with the\nlong-term success of the protocol. Any SOV token holder can choose to\nstake (lock up) their tokens for a fixed period of time in return for\nvoting rights in the Bitocracy. Stakers are further incentivised through\nfee and slashing rewards.\n",
              "fullyImplemented": true,
              "id": 15713,
              "linearizedBaseContracts": [
                15713,
                41798,
                41125
              ],
              "name": "StakingStorage",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 15595,
                  "name": "TWO_WEEKS",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "1012:36:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15593,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1012:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31323039363030",
                    "id": 15594,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1041:7:59",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1209600_by_1",
                      "typeString": "int_const 1209600"
                    },
                    "value": "1209600"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 15598,
                  "name": "MAX_VOTING_WEIGHT",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "1160:44:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 15596,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "1160:6:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "39",
                    "id": 15597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1203:1:59",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_9_by_1",
                      "typeString": "int_const 9"
                    },
                    "value": "9"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 15601,
                  "name": "WEIGHT_FACTOR",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "1409:41:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 15599,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "1409:6:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3130",
                    "id": 15600,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1448:2:59",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10_by_1",
                      "typeString": "int_const 10"
                    },
                    "value": "10"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 15604,
                  "name": "MAX_DURATION",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "1509:48:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15602,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1509:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31303932",
                    "id": 15603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1548:9:59",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_94348800_by_1",
                      "typeString": "int_const 94348800"
                    },
                    "value": "1092"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 15609,
                  "name": "MAX_DURATION_POW_2",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "1598:48:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 15605,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "1598:6:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_1192464_by_1",
                      "typeString": "int_const 1192464"
                    },
                    "id": 15608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "31303932",
                      "id": 15606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1635:4:59",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1092_by_1",
                        "typeString": "int_const 1092"
                      },
                      "value": "1092"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31303932",
                      "id": 15607,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1642:4:59",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1092_by_1",
                        "typeString": "int_const 1092"
                      },
                      "value": "1092"
                    },
                    "src": "1635:11:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1192464_by_1",
                      "typeString": "int_const 1192464"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 15612,
                  "name": "DEFAULT_WEIGHT_SCALING",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "1687:42:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 15610,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "1687:6:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 15611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1728:1:59",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3_by_1",
                      "typeString": "int_const 3"
                    },
                    "value": "3"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 15615,
                  "name": "MIN_WEIGHT_SCALING",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "1772:38:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 15613,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "1772:6:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 15614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1809:1:59",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 15618,
                  "name": "MAX_WEIGHT_SCALING",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "1813:38:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 15616,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "1813:6:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "39",
                    "id": 15617,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1850:1:59",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_9_by_1",
                      "typeString": "int_const 9"
                    },
                    "value": "9"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15620,
                  "name": "kickoffTS",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "1945:24:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15619,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1945:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15623,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "1973:26:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15621,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1973:6:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "534f565374616b696e67",
                    "id": 15622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1987:12:59",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_68b9aa5315e067040db50e4b7093b47fa0aedae28ee107e6931d8b321c8a2d06",
                      "typeString": "literal_string \"SOVStaking\""
                    },
                    "value": "SOVStaking"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15625,
                  "name": "SOVToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "2040:22:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$24699",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 15624,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "2040:6:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15631,
                  "name": "delegates",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "2115:64:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                    "typeString": "mapping(address => mapping(uint256 => address))"
                  },
                  "typeName": {
                    "id": 15630,
                    "keyType": {
                      "id": 15626,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2123:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2115:47:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                      "typeString": "mapping(address => mapping(uint256 => address))"
                    },
                    "valueType": {
                      "id": 15629,
                      "keyType": {
                        "id": 15627,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2142:7:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2134:27:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      },
                      "valueType": {
                        "id": 15628,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2153:7:59",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15634,
                  "name": "allUnlocked",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "2262:31:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15632,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2262:4:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 15633,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2288:5:59",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 15639,
                  "name": "DOMAIN_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "2358:122:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 15635,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2358:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                        "id": 15637,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2410:69:59",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                          "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                        },
                        "value": "EIP712Domain(string name,uint256 chainId,address verifyingContract)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                          "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                        }
                      ],
                      "id": 15636,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 44988,
                      "src": "2400:9:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 15638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2400:80:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 15644,
                  "name": "DELEGATION_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "2566:134:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 15640,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2566:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "44656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206c6f636b446174652c75696e74323536206e6f6e63652c75696e743235362065787069727929",
                        "id": 15642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2622:77:59",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c76dfb05aab59672d0d949aad23887e53e88339d328b6dbce947d79913c9374a",
                          "typeString": "literal_string \"Delegation(address delegatee,uint256 lockDate,uint256 nonce,uint256 expiry)\""
                        },
                        "value": "Delegation(address delegatee,uint256 lockDate,uint256 nonce,uint256 expiry)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_c76dfb05aab59672d0d949aad23887e53e88339d328b6dbce947d79913c9374a",
                          "typeString": "literal_string \"Delegation(address delegatee,uint256 lockDate,uint256 nonce,uint256 expiry)\""
                        }
                      ],
                      "id": 15641,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 44988,
                      "src": "2612:9:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 15643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2612:88:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15646,
                  "name": "newStakingContract",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "2805:33:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15645,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2805:7:59",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "canonicalName": "StakingStorage.Checkpoint",
                  "id": 15651,
                  "members": [
                    {
                      "constant": false,
                      "id": 15648,
                      "name": "fromBlock",
                      "nodeType": "VariableDeclaration",
                      "scope": 15651,
                      "src": "3008:16:59",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 15647,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3008:6:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 15650,
                      "name": "stake",
                      "nodeType": "VariableDeclaration",
                      "scope": 15651,
                      "src": "3028:12:59",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 15649,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "3028:6:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "Checkpoint",
                  "nodeType": "StructDefinition",
                  "scope": 15713,
                  "src": "2986:58:59",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15657,
                  "name": "totalStakingCheckpoints",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "3264:80:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                    "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint))"
                  },
                  "typeName": {
                    "id": 15656,
                    "keyType": {
                      "id": 15652,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3272:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3264:49:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                      "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint))"
                    },
                    "valueType": {
                      "id": 15655,
                      "keyType": {
                        "id": 15653,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3291:6:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "3283:29:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                        "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 15654,
                        "name": "Checkpoint",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15651,
                        "src": "3301:10:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Checkpoint_$15651_storage_ptr",
                          "typeString": "struct StakingStorage.Checkpoint"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15661,
                  "name": "numTotalStakingCheckpoints",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "3472:60:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                    "typeString": "mapping(uint256 => uint32)"
                  },
                  "typeName": {
                    "id": 15660,
                    "keyType": {
                      "id": 15658,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3480:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3472:26:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                      "typeString": "mapping(uint256 => uint32)"
                    },
                    "valueType": {
                      "id": 15659,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "3491:6:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15669,
                  "name": "delegateStakingCheckpoints",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "3804:103:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                    "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint)))"
                  },
                  "typeName": {
                    "id": 15668,
                    "keyType": {
                      "id": 15662,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3812:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3804:69:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                      "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint)))"
                    },
                    "valueType": {
                      "id": 15667,
                      "keyType": {
                        "id": 15663,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3831:7:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "3823:49:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                        "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint))"
                      },
                      "valueType": {
                        "id": 15666,
                        "keyType": {
                          "id": 15664,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3850:6:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "3842:29:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                          "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint)"
                        },
                        "valueType": {
                          "contractScope": null,
                          "id": 15665,
                          "name": "Checkpoint",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15651,
                          "src": "3860:10:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Checkpoint_$15651_storage_ptr",
                            "typeString": "struct StakingStorage.Checkpoint"
                          }
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15675,
                  "name": "numDelegateStakingCheckpoints",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "4062:83:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                    "typeString": "mapping(address => mapping(uint256 => uint32))"
                  },
                  "typeName": {
                    "id": 15674,
                    "keyType": {
                      "id": 15670,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4070:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4062:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                      "typeString": "mapping(address => mapping(uint256 => uint32))"
                    },
                    "valueType": {
                      "id": 15673,
                      "keyType": {
                        "id": 15671,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4089:7:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "4081:26:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                        "typeString": "mapping(uint256 => uint32)"
                      },
                      "valueType": {
                        "id": 15672,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4100:6:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15683,
                  "name": "userStakingCheckpoints",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "4346:99:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                    "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint)))"
                  },
                  "typeName": {
                    "id": 15682,
                    "keyType": {
                      "id": 15676,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4354:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4346:69:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                      "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint)))"
                    },
                    "valueType": {
                      "id": 15681,
                      "keyType": {
                        "id": 15677,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4373:7:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "4365:49:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                        "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint))"
                      },
                      "valueType": {
                        "id": 15680,
                        "keyType": {
                          "id": 15678,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4392:6:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "4384:29:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                          "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint)"
                        },
                        "valueType": {
                          "contractScope": null,
                          "id": 15679,
                          "name": "Checkpoint",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 15651,
                          "src": "4402:10:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Checkpoint_$15651_storage_ptr",
                            "typeString": "struct StakingStorage.Checkpoint"
                          }
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15689,
                  "name": "numUserStakingCheckpoints",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "4587:79:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                    "typeString": "mapping(address => mapping(uint256 => uint32))"
                  },
                  "typeName": {
                    "id": 15688,
                    "keyType": {
                      "id": 15684,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4595:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4587:46:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                      "typeString": "mapping(address => mapping(uint256 => uint32))"
                    },
                    "valueType": {
                      "id": 15687,
                      "keyType": {
                        "id": 15685,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4614:7:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "4606:26:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                        "typeString": "mapping(uint256 => uint32)"
                      },
                      "valueType": {
                        "id": 15686,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4625:6:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15693,
                  "name": "nonces",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "4774:41:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 15692,
                    "keyType": {
                      "id": 15690,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4782:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4774:27:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 15691,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4793:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15695,
                  "name": "feeSharing",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "4986:34:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                    "typeString": "contract IFeeSharingProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 15694,
                    "name": "IFeeSharingProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13112,
                    "src": "4986:16:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                      "typeString": "contract IFeeSharingProxy"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15698,
                  "name": "weightScaling",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "5091:52:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 15696,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "5091:6:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "id": 15697,
                    "name": "DEFAULT_WEIGHT_SCALING",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 15612,
                    "src": "5121:22:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15702,
                  "name": "vestingWhitelist",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "5310:48:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 15701,
                    "keyType": {
                      "id": 15699,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5318:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "5310:24:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 15700,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "5329:4:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15706,
                  "name": "admins",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "5570:38:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 15705,
                    "keyType": {
                      "id": 15703,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5578:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "5570:24:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 15704,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "5589:4:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15710,
                  "name": "vestingCodeHashes",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "5691:49:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                    "typeString": "mapping(bytes32 => bool)"
                  },
                  "typeName": {
                    "id": 15709,
                    "keyType": {
                      "id": 15707,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5699:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "5691:24:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                      "typeString": "mapping(bytes32 => bool)"
                    },
                    "valueType": {
                      "id": 15708,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "5710:4:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 15712,
                  "name": "vestingRegistryLogic",
                  "nodeType": "VariableDeclaration",
                  "scope": 15713,
                  "src": "5786:48:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                    "typeString": "contract VestingRegistryLogic"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 15711,
                    "name": "VestingRegistryLogic",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24482,
                    "src": "5786:20:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                      "typeString": "contract VestingRegistryLogic"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                }
              ],
              "scope": 15714,
              "src": "941:4896:59"
            }
          ],
          "src": "0:5838:59"
        },
        "id": 59
      },
      "contracts/governance/Staking/WeightedStaking.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Staking/WeightedStaking.sol",
          "exportedSymbols": {
            "WeightedStaking": [
              16683
            ]
          },
          "id": 16684,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15715,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:60"
            },
            {
              "id": 15716,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:60"
            },
            {
              "absolutePath": "contracts/governance/Staking/Checkpoints.sol",
              "file": "./Checkpoints.sol",
              "id": 15717,
              "nodeType": "ImportDirective",
              "scope": 16684,
              "sourceUnit": 13707,
              "src": "60:27:60",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Address.sol",
              "file": "../../openzeppelin/Address.sol",
              "id": 15718,
              "nodeType": "ImportDirective",
              "scope": 16684,
              "sourceUnit": 41099,
              "src": "88:40:60",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 15719,
                    "name": "Checkpoints",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13706,
                    "src": "620:11:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Checkpoints_$13706",
                      "typeString": "contract Checkpoints"
                    }
                  },
                  "id": 15720,
                  "nodeType": "InheritanceSpecifier",
                  "src": "620:11:60"
                }
              ],
              "contractDependencies": [
                13706,
                13959,
                15713,
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Weighted Staking contract.\n@notice Computation of power and votes used by FeeSharingProxy and\nGovernorAlpha and Staking contracts w/ mainly 3 public functions:\n  + getPriorTotalVotingPower => Total voting power.\n  + getPriorVotes  => Delegatee voting power.\n  + getPriorWeightedStake  => User Weighted Stake.\nStaking contract inherits WeightedStaking.\nFeeSharingProxy and GovernorAlpha invoke Staking instance functions.\n",
              "fullyImplemented": true,
              "id": 16683,
              "linearizedBaseContracts": [
                16683,
                13706,
                13959,
                15713,
                41798,
                41125
              ],
              "name": "WeightedStaking",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 15723,
                  "libraryName": {
                    "contractScope": null,
                    "id": 15721,
                    "name": "Address",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41098,
                    "src": "641:7:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Address_$41098",
                      "typeString": "library Address"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "635:34:60",
                  "typeName": {
                    "id": 15722,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "653:15:60",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  }
                },
                {
                  "body": {
                    "id": 15737,
                    "nodeType": "Block",
                    "src": "780:69:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 15732,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 15726,
                                  "name": "isOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41761,
                                  "src": "792:7:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 15727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "792:9:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 15728,
                                  "name": "admins",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15706,
                                  "src": "805:6:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 15731,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 15729,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "812:3:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 15730,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "812:10:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "805:18:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "792:31:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 15733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "825:14:60",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 15725,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "784:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "784:56:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15735,
                        "nodeType": "ExpressionStatement",
                        "src": "784:56:60"
                      },
                      {
                        "id": 15736,
                        "nodeType": "PlaceholderStatement",
                        "src": "844:1:60"
                      }
                    ]
                  },
                  "documentation": "@dev Throws if called by any account other than the owner or admin.",
                  "id": 15738,
                  "name": "onlyAuthorized",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 15724,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "777:2:60"
                  },
                  "src": "754:95:60",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15760,
                    "nodeType": "Block",
                    "src": "1054:158:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 15750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 15746,
                                "name": "_vestingRegistryProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15740,
                                "src": "1066:21:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 15748,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1099:1:60",
                                    "subdenomination": null,
                                    "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": 15747,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1091:7:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 15749,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1091:10:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1066:35:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76657374696e67207265676973747279206164647265737320696e76616c6964",
                              "id": 15751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1103:34:60",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1c24f440c7fc9e1664b3cd28c6f6aaed21d944cf5dbcc0eb70c905513a647196",
                                "typeString": "literal_string \"vesting registry address invalid\""
                              },
                              "value": "vesting registry address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1c24f440c7fc9e1664b3cd28c6f6aaed21d944cf5dbcc0eb70c905513a647196",
                                "typeString": "literal_string \"vesting registry address invalid\""
                              }
                            ],
                            "id": 15745,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1058:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1058:80:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15753,
                        "nodeType": "ExpressionStatement",
                        "src": "1058:80:60"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 15754,
                            "name": "vestingRegistryLogic",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15712,
                            "src": "1142:20:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                              "typeString": "contract VestingRegistryLogic"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 15756,
                                "name": "_vestingRegistryProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15740,
                                "src": "1186:21:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 15755,
                              "name": "VestingRegistryLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24482,
                              "src": "1165:20:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_VestingRegistryLogic_$24482_$",
                                "typeString": "type(contract VestingRegistryLogic)"
                              }
                            },
                            "id": 15757,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1165:43:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                              "typeString": "contract VestingRegistryLogic"
                            }
                          },
                          "src": "1142:66:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                            "typeString": "contract VestingRegistryLogic"
                          }
                        },
                        "id": 15759,
                        "nodeType": "ExpressionStatement",
                        "src": "1142:66:60"
                      }
                    ]
                  },
                  "documentation": "@notice sets vesting registry\n@param _vestingRegistryProxy the address of vesting registry proxy contract",
                  "id": 15761,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15743,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15742,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1044:9:60",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1044:9:60"
                    }
                  ],
                  "name": "setVestingRegistry",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15741,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15740,
                        "name": "_vestingRegistryProxy",
                        "nodeType": "VariableDeclaration",
                        "scope": 15761,
                        "src": "1004:29:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15739,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1004:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1003:31:60"
                  },
                  "returnParameters": {
                    "id": 15744,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1054:0:60"
                  },
                  "scope": 16683,
                  "src": "976:236:60",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15807,
                    "nodeType": "Block",
                    "src": "1606:507:60",
                    "statements": [
                      {
                        "assignments": [
                          15771
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15771,
                            "name": "start",
                            "nodeType": "VariableDeclaration",
                            "scope": 15807,
                            "src": "1746:13:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15770,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1746:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15775,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15773,
                              "name": "time",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15765,
                              "src": "1782:4:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15772,
                            "name": "timestampToLockDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16607,
                            "src": "1762:19:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 15774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1762:25:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1746:41:60"
                      },
                      {
                        "assignments": [
                          15777
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15777,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 15807,
                            "src": "1791:11:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15776,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1791:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15781,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 15778,
                            "name": "start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15771,
                            "src": "1805:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 15779,
                            "name": "MAX_DURATION",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15604,
                            "src": "1813:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1805:20:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1791:34:60"
                      },
                      {
                        "body": {
                          "id": 15805,
                          "nodeType": "Block",
                          "src": "1910:200:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 15803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 15793,
                                  "name": "totalVotingPower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15768,
                                  "src": "1915:16:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 15795,
                                      "name": "totalVotingPower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15768,
                                      "src": "1945:16:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 15797,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15783,
                                          "src": "1985:1:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 15798,
                                          "name": "start",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15771,
                                          "src": "1988:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 15799,
                                          "name": "blockNumber",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15763,
                                          "src": "1995:11:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        ],
                                        "id": 15796,
                                        "name": "_totalPowerByDate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15844,
                                        "src": "1967:17:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                                          "typeString": "function (uint256,uint256,uint256) view returns (uint96)"
                                        }
                                      },
                                      "id": 15800,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1967:40:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "57656967687465645374616b696e673a3a6765745072696f72546f74616c566f74696e67506f7765723a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e",
                                      "id": 15801,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2013:87:60",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_1fb3e1c1daf855f2804d8ae77125b1f81c13c34474ad1fbb2e615dadd291091a",
                                        "typeString": "literal_string \"WeightedStaking::getPriorTotalVotingPower: overflow on total voting power computation\""
                                      },
                                      "value": "WeightedStaking::getPriorTotalVotingPower: overflow on total voting power computation"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_1fb3e1c1daf855f2804d8ae77125b1f81c13c34474ad1fbb2e615dadd291091a",
                                        "typeString": "literal_string \"WeightedStaking::getPriorTotalVotingPower: overflow on total voting power computation\""
                                      }
                                    ],
                                    "id": 15794,
                                    "name": "add96",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13872,
                                    "src": "1934:5:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                      "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                    }
                                  },
                                  "id": 15802,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1934:171:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "1915:190:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 15804,
                              "nodeType": "ExpressionStatement",
                              "src": "1915:190:60"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 15786,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15783,
                            "src": "1884:1:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 15787,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15777,
                            "src": "1889:3:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1884:8:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15806,
                        "initializationExpression": {
                          "assignments": [
                            15783
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 15783,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 15806,
                              "src": "1865:9:60",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 15782,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1865:7:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 15785,
                          "initialValue": {
                            "argumentTypes": null,
                            "id": 15784,
                            "name": "start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15771,
                            "src": "1877:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1865:17:60"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 15791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 15789,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15783,
                              "src": "1894:1:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 15790,
                              "name": "TWO_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15595,
                              "src": "1899:9:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1894:14:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 15792,
                          "nodeType": "ExpressionStatement",
                          "src": "1894:14:60"
                        },
                        "nodeType": "ForStatement",
                        "src": "1860:250:60"
                      }
                    ]
                  },
                  "documentation": "@notice Compute the total voting power at a given time.\n@param time The timestamp for which to calculate the total voting power.\n@return The total voting power at the given time.\n",
                  "id": 15808,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriorTotalVotingPower",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15763,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 15808,
                        "src": "1526:18:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 15762,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1526:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15765,
                        "name": "time",
                        "nodeType": "VariableDeclaration",
                        "scope": 15808,
                        "src": "1546:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15764,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1546:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1525:34:60"
                  },
                  "returnParameters": {
                    "id": 15769,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15768,
                        "name": "totalVotingPower",
                        "nodeType": "VariableDeclaration",
                        "scope": 15808,
                        "src": "1581:23:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 15767,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "1581:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1580:25:60"
                  },
                  "scope": 16683,
                  "src": "1492:621:60",
                  "stateMutability": "view",
                  "superFunction": 13754,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15843,
                    "nodeType": "Block",
                    "src": "2546:303:60",
                    "statements": [
                      {
                        "assignments": [
                          15820
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15820,
                            "name": "weight",
                            "nodeType": "VariableDeclaration",
                            "scope": 15843,
                            "src": "2550:13:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 15819,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "2550:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15825,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15822,
                              "name": "date",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15810,
                              "src": "2586:4:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15823,
                              "name": "startDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15812,
                              "src": "2592:9:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15821,
                            "name": "computeWeightByDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16575,
                            "src": "2566:19:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (uint256,uint256) pure returns (uint96)"
                            }
                          },
                          "id": 15824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2566:36:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2550:52:60"
                      },
                      {
                        "assignments": [
                          15827
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15827,
                            "name": "staked",
                            "nodeType": "VariableDeclaration",
                            "scope": 15843,
                            "src": "2606:13:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 15826,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "2606:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15832,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15829,
                              "name": "date",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15810,
                              "src": "2649:4:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15830,
                              "name": "blockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15814,
                              "src": "2655:11:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15828,
                            "name": "getPriorTotalStakesForDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15975,
                            "src": "2622:26:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (uint256,uint256) view returns (uint96)"
                            }
                          },
                          "id": 15831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2622:45:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2606:61:60"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 15833,
                            "name": "power",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15817,
                            "src": "2737:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 15840,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 15835,
                                  "name": "staked",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15827,
                                  "src": "2751:6:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 15836,
                                  "name": "weight",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15820,
                                  "src": "2759:6:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "57656967687465645374616b696e673a3a5f746f74616c506f7765724279446174653a206d756c7469706c69636174696f6e206f766572666c6f77",
                                  "id": 15837,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2767:61:60",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_aa1a86d6770d4811e8550c1680d50466da664a1addf5d0aad271363eac46770b",
                                    "typeString": "literal_string \"WeightedStaking::_totalPowerByDate: multiplication overflow\""
                                  },
                                  "value": "WeightedStaking::_totalPowerByDate: multiplication overflow"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_aa1a86d6770d4811e8550c1680d50466da664a1addf5d0aad271363eac46770b",
                                    "typeString": "literal_string \"WeightedStaking::_totalPowerByDate: multiplication overflow\""
                                  }
                                ],
                                "id": 15834,
                                "name": "mul96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13931,
                                "src": "2745:5:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                  "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                }
                              },
                              "id": 15838,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2745:84:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 15839,
                              "name": "WEIGHT_FACTOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15601,
                              "src": "2832:13:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "src": "2745:100:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "2737:108:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 15842,
                        "nodeType": "ExpressionStatement",
                        "src": "2737:108:60"
                      }
                    ]
                  },
                  "documentation": "@notice Compute the voting power for a specific date.\nPower = stake * weight\n@param date The staking date to compute the power for.\n@param startDate The date for which we need to know the power of the stake.\n@param blockNumber The block number, needed for checkpointing.\n",
                  "id": 15844,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_totalPowerByDate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15815,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15810,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 15844,
                        "src": "2449:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15809,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2449:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15812,
                        "name": "startDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 15844,
                        "src": "2465:17:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15811,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2465:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15814,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 15844,
                        "src": "2486:19:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15813,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2486:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2445:63:60"
                  },
                  "returnParameters": {
                    "id": 15818,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15817,
                        "name": "power",
                        "nodeType": "VariableDeclaration",
                        "scope": 15844,
                        "src": "2532:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 15816,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2532:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2531:14:60"
                  },
                  "scope": 16683,
                  "src": "2419:430:60",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15974,
                    "nodeType": "Block",
                    "src": "3481:979:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 15857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 15854,
                                "name": "blockNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15848,
                                "src": "3493:11:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 15855,
                                  "name": "_getCurrentBlockNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16511,
                                  "src": "3507:22:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 15856,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3507:24:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3493:38:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "57656967687465645374616b696e673a3a6765745072696f72546f74616c5374616b6573466f72446174653a206e6f74207965742064657465726d696e6564",
                              "id": 15858,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3533:65:60",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d78b6974dd39a55a9733fac59eb72159a3eed9f8f20aff4b8261eae349ec9147",
                                "typeString": "literal_string \"WeightedStaking::getPriorTotalStakesForDate: not yet determined\""
                              },
                              "value": "WeightedStaking::getPriorTotalStakesForDate: not yet determined"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d78b6974dd39a55a9733fac59eb72159a3eed9f8f20aff4b8261eae349ec9147",
                                "typeString": "literal_string \"WeightedStaking::getPriorTotalStakesForDate: not yet determined\""
                              }
                            ],
                            "id": 15853,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3485:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3485:114:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15860,
                        "nodeType": "ExpressionStatement",
                        "src": "3485:114:60"
                      },
                      {
                        "assignments": [
                          15862
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15862,
                            "name": "nCheckpoints",
                            "nodeType": "VariableDeclaration",
                            "scope": 15974,
                            "src": "3604:19:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 15861,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3604:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15866,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 15863,
                            "name": "numTotalStakingCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15661,
                            "src": "3626:26:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                              "typeString": "mapping(uint256 => uint32)"
                            }
                          },
                          "id": 15865,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 15864,
                            "name": "date",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15846,
                            "src": "3653:4:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3626:32:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3604:54:60"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 15869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 15867,
                            "name": "nCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15862,
                            "src": "3666:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 15868,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3682:1:60",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3666:17:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 15873,
                        "nodeType": "IfStatement",
                        "src": "3662:41:60",
                        "trueBody": {
                          "id": 15872,
                          "nodeType": "Block",
                          "src": "3685:18:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 15870,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3697:1:60",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 15852,
                              "id": 15871,
                              "nodeType": "Return",
                              "src": "3690:8:60"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 15874,
                                  "name": "totalStakingCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15657,
                                  "src": "3748:23:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                    "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                  }
                                },
                                "id": 15876,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 15875,
                                  "name": "date",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15846,
                                  "src": "3772:4:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3748:29:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                  "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                }
                              },
                              "id": 15880,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 15879,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15877,
                                  "name": "nCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15862,
                                  "src": "3778:12:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 15878,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3793:1:60",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "3778:16:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3748:47:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                "typeString": "struct StakingStorage.Checkpoint storage ref"
                              }
                            },
                            "id": 15881,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fromBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15648,
                            "src": "3748:57:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 15882,
                            "name": "blockNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15848,
                            "src": "3809:11:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3748:72:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 15894,
                        "nodeType": "IfStatement",
                        "src": "3744:148:60",
                        "trueBody": {
                          "id": 15893,
                          "nodeType": "Block",
                          "src": "3822:70:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 15884,
                                      "name": "totalStakingCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15657,
                                      "src": "3834:23:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                        "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                      }
                                    },
                                    "id": 15886,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 15885,
                                      "name": "date",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15846,
                                      "src": "3858:4:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3834:29:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                      "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                    }
                                  },
                                  "id": 15890,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 15889,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 15887,
                                      "name": "nCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15862,
                                      "src": "3864:12:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 15888,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3879:1:60",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "3864:16:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3834:47:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                    "typeString": "struct StakingStorage.Checkpoint storage ref"
                                  }
                                },
                                "id": 15891,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15650,
                                "src": "3834:53:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "functionReturnParameters": 15852,
                              "id": 15892,
                              "nodeType": "Return",
                              "src": "3827:60:60"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 15895,
                                  "name": "totalStakingCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15657,
                                  "src": "3938:23:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                    "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                  }
                                },
                                "id": 15897,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 15896,
                                  "name": "date",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15846,
                                  "src": "3962:4:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3938:29:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                  "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                }
                              },
                              "id": 15899,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 15898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3968:1:60",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3938:32:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                "typeString": "struct StakingStorage.Checkpoint storage ref"
                              }
                            },
                            "id": 15900,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fromBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15648,
                            "src": "3938:42:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 15901,
                            "name": "blockNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15848,
                            "src": "3983:11:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3938:56:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 15906,
                        "nodeType": "IfStatement",
                        "src": "3934:80:60",
                        "trueBody": {
                          "id": 15905,
                          "nodeType": "Block",
                          "src": "3996:18:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 15903,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4008:1:60",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 15852,
                              "id": 15904,
                              "nodeType": "Return",
                              "src": "4001:8:60"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          15908
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15908,
                            "name": "lower",
                            "nodeType": "VariableDeclaration",
                            "scope": 15974,
                            "src": "4018:12:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 15907,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4018:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15910,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 15909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4033:1:60",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4018:16:60"
                      },
                      {
                        "assignments": [
                          15912
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15912,
                            "name": "upper",
                            "nodeType": "VariableDeclaration",
                            "scope": 15974,
                            "src": "4038:12:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 15911,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4038:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15916,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 15915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 15913,
                            "name": "nCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15862,
                            "src": "4053:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 15914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4068:1:60",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4053:16:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4038:31:60"
                      },
                      {
                        "body": {
                          "id": 15965,
                          "nodeType": "Block",
                          "src": "4095:309:60",
                          "statements": [
                            {
                              "assignments": [
                                15921
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15921,
                                  "name": "center",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 15965,
                                  "src": "4100:13:60",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "typeName": {
                                    "id": 15920,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4100:6:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15930,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 15929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15922,
                                  "name": "upper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15912,
                                  "src": "4116:5:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 15928,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        },
                                        "id": 15925,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 15923,
                                          "name": "upper",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15912,
                                          "src": "4125:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 15924,
                                          "name": "lower",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15908,
                                          "src": "4133:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "src": "4125:13:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      }
                                    ],
                                    "id": 15926,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "4124:15:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 15927,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4142:1:60",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "4124:19:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "4116:27:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4100:43:60"
                            },
                            {
                              "assignments": [
                                15932
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15932,
                                  "name": "cp",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 15965,
                                  "src": "4175:20:60",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$15651_memory_ptr",
                                    "typeString": "struct StakingStorage.Checkpoint"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 15931,
                                    "name": "Checkpoint",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 15651,
                                    "src": "4175:10:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$15651_storage_ptr",
                                      "typeString": "struct StakingStorage.Checkpoint"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15938,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 15933,
                                    "name": "totalStakingCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15657,
                                    "src": "4198:23:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                      "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                    }
                                  },
                                  "id": 15935,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 15934,
                                    "name": "date",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15846,
                                    "src": "4222:4:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4198:29:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                    "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                  }
                                },
                                "id": 15937,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 15936,
                                  "name": "center",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15921,
                                  "src": "4228:6:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4198:37:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                  "typeString": "struct StakingStorage.Checkpoint storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4175:60:60"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 15939,
                                    "name": "cp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15932,
                                    "src": "4244:2:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$15651_memory_ptr",
                                      "typeString": "struct StakingStorage.Checkpoint memory"
                                    }
                                  },
                                  "id": 15940,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "fromBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15648,
                                  "src": "4244:12:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 15941,
                                  "name": "blockNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15848,
                                  "src": "4260:11:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4244:27:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 15950,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15947,
                                      "name": "cp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15932,
                                      "src": "4310:2:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Checkpoint_$15651_memory_ptr",
                                        "typeString": "struct StakingStorage.Checkpoint memory"
                                      }
                                    },
                                    "id": 15948,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fromBlock",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 15648,
                                    "src": "4310:12:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 15949,
                                    "name": "blockNumber",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15848,
                                    "src": "4325:11:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4310:26:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 15962,
                                  "nodeType": "Block",
                                  "src": "4370:30:60",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 15960,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 15956,
                                          "name": "upper",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15912,
                                          "src": "4376:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "id": 15959,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 15957,
                                            "name": "center",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15921,
                                            "src": "4384:6:60",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 15958,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4393:1:60",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "4384:10:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "src": "4376:18:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "id": 15961,
                                      "nodeType": "ExpressionStatement",
                                      "src": "4376:18:60"
                                    }
                                  ]
                                },
                                "id": 15963,
                                "nodeType": "IfStatement",
                                "src": "4306:94:60",
                                "trueBody": {
                                  "id": 15955,
                                  "nodeType": "Block",
                                  "src": "4338:26:60",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 15953,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 15951,
                                          "name": "lower",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15908,
                                          "src": "4344:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "id": 15952,
                                          "name": "center",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15921,
                                          "src": "4352:6:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "src": "4344:14:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "id": 15954,
                                      "nodeType": "ExpressionStatement",
                                      "src": "4344:14:60"
                                    }
                                  ]
                                }
                              },
                              "id": 15964,
                              "nodeType": "IfStatement",
                              "src": "4240:160:60",
                              "trueBody": {
                                "id": 15946,
                                "nodeType": "Block",
                                "src": "4273:27:60",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 15943,
                                        "name": "cp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15932,
                                        "src": "4286:2:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Checkpoint_$15651_memory_ptr",
                                          "typeString": "struct StakingStorage.Checkpoint memory"
                                        }
                                      },
                                      "id": 15944,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "stake",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 15650,
                                      "src": "4286:8:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "functionReturnParameters": 15852,
                                    "id": 15945,
                                    "nodeType": "Return",
                                    "src": "4279:15:60"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 15919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 15917,
                            "name": "upper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15912,
                            "src": "4080:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 15918,
                            "name": "lower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15908,
                            "src": "4088:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "4080:13:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15966,
                        "nodeType": "WhileStatement",
                        "src": "4073:331:60"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 15967,
                                "name": "totalStakingCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15657,
                                "src": "4414:23:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                }
                              },
                              "id": 15969,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 15968,
                                "name": "date",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15846,
                                "src": "4438:4:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4414:29:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                              }
                            },
                            "id": 15971,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 15970,
                              "name": "lower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15908,
                              "src": "4444:5:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4414:36:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                              "typeString": "struct StakingStorage.Checkpoint storage ref"
                            }
                          },
                          "id": 15972,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15650,
                          "src": "4414:42:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 15852,
                        "id": 15973,
                        "nodeType": "Return",
                        "src": "4407:49:60"
                      }
                    ]
                  },
                  "documentation": "@notice Determine the prior number of stake for an unlocking date as of a block number.\n@dev Block number must be a finalized block or else this function will\nrevert to prevent misinformation.\nTODO: WeightedStaking::getPriorTotalStakesForDate should probably better\nbe internal instead of a public function.\n@param date The date to check the stakes for.\n@param blockNumber The block number to get the vote balance at.\n@return The number of votes the account had as of the given block.\n",
                  "id": 15975,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriorTotalStakesForDate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15849,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15846,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 15975,
                        "src": "3417:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15845,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3417:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15848,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 15975,
                        "src": "3431:19:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15847,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3431:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3416:35:60"
                  },
                  "returnParameters": {
                    "id": 15852,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15851,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 15975,
                        "src": "3473:6:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 15850,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "3473:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3472:8:60"
                  },
                  "scope": 16683,
                  "src": "3381:1079:60",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16024,
                    "nodeType": "Block",
                    "src": "5188:495:60",
                    "statements": [
                      {
                        "assignments": [
                          15987
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15987,
                            "name": "start",
                            "nodeType": "VariableDeclaration",
                            "scope": 16024,
                            "src": "5328:13:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15986,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5328:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15991,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15989,
                              "name": "date",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15981,
                              "src": "5364:4:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15988,
                            "name": "timestampToLockDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16607,
                            "src": "5344:19:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 15990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5344:25:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5328:41:60"
                      },
                      {
                        "assignments": [
                          15993
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15993,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 16024,
                            "src": "5373:11:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15992,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5373:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15997,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 15994,
                            "name": "start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15987,
                            "src": "5387:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 15995,
                            "name": "MAX_DURATION",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15604,
                            "src": "5395:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5387:20:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5373:34:60"
                      },
                      {
                        "body": {
                          "id": 16022,
                          "nodeType": "Block",
                          "src": "5492:188:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 16020,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 16009,
                                  "name": "votes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15984,
                                  "src": "5497:5:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 16011,
                                      "name": "votes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15984,
                                      "src": "5516:5:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 16013,
                                          "name": "account",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15977,
                                          "src": "5557:7:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 16014,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15999,
                                          "src": "5566:1:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 16015,
                                          "name": "start",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15987,
                                          "src": "5569:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 16016,
                                          "name": "blockNumber",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15979,
                                          "src": "5576:11:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 16012,
                                        "name": "_totalPowerByDateForDelegatee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16064,
                                        "src": "5527:29:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                                          "typeString": "function (address,uint256,uint256,uint256) view returns (uint96)"
                                        }
                                      },
                                      "id": 16017,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5527:61:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "57656967687465645374616b696e673a3a6765745072696f72566f7465733a206f766572666c6f77206f6e20746f74616c20766f74696e6720706f77657220636f6d7075746174696f6e",
                                      "id": 16018,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5594:76:60",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_7700f85bfa9056e5d75e04cc75d106d145df12586c61d7e3cfdb62212f7e61cc",
                                        "typeString": "literal_string \"WeightedStaking::getPriorVotes: overflow on total voting power computation\""
                                      },
                                      "value": "WeightedStaking::getPriorVotes: overflow on total voting power computation"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_7700f85bfa9056e5d75e04cc75d106d145df12586c61d7e3cfdb62212f7e61cc",
                                        "typeString": "literal_string \"WeightedStaking::getPriorVotes: overflow on total voting power computation\""
                                      }
                                    ],
                                    "id": 16010,
                                    "name": "add96",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13872,
                                    "src": "5505:5:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                      "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                    }
                                  },
                                  "id": 16019,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5505:170:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "5497:178:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 16021,
                              "nodeType": "ExpressionStatement",
                              "src": "5497:178:60"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16002,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15999,
                            "src": "5466:1:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16003,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15993,
                            "src": "5471:3:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5466:8:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16023,
                        "initializationExpression": {
                          "assignments": [
                            15999
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 15999,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 16023,
                              "src": "5447:9:60",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 15998,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5447:7:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 16001,
                          "initialValue": {
                            "argumentTypes": null,
                            "id": 16000,
                            "name": "start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15987,
                            "src": "5459:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5447:17:60"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 16007,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 16005,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15999,
                              "src": "5476:1:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 16006,
                              "name": "TWO_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15595,
                              "src": "5481:9:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5476:14:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 16008,
                          "nodeType": "ExpressionStatement",
                          "src": "5476:14:60"
                        },
                        "nodeType": "ForStatement",
                        "src": "5442:238:60"
                      }
                    ]
                  },
                  "documentation": "@notice Determine the prior number of votes for a delegatee as of a block number.\nIterate through checkpoints adding up voting power.\n@dev Block number must be a finalized block or else this function will revert\nto prevent misinformation.\n     Used for Voting, not for fee sharing.\n@param account The address of the account to check.\n@param blockNumber The block number to get the vote balance at.\n@return The number of votes the delegatee had as of the given block.\n",
                  "id": 16025,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriorVotes",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15982,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15977,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 16025,
                        "src": "5095:15:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15976,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5095:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15979,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 16025,
                        "src": "5114:19:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15978,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5114:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15981,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 16025,
                        "src": "5137:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15980,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5137:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5091:61:60"
                  },
                  "returnParameters": {
                    "id": 15985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15984,
                        "name": "votes",
                        "nodeType": "VariableDeclaration",
                        "scope": 16025,
                        "src": "5174:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 15983,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "5174:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5173:14:60"
                  },
                  "scope": 16683,
                  "src": "5069:614:60",
                  "stateMutability": "view",
                  "superFunction": 13745,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16063,
                    "nodeType": "Block",
                    "src": "6147:263:60",
                    "statements": [
                      {
                        "assignments": [
                          16039
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16039,
                            "name": "weight",
                            "nodeType": "VariableDeclaration",
                            "scope": 16063,
                            "src": "6151:13:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 16038,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "6151:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16044,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 16041,
                              "name": "date",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16029,
                              "src": "6187:4:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 16042,
                              "name": "startDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16031,
                              "src": "6193:9:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16040,
                            "name": "computeWeightByDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16575,
                            "src": "6167:19:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (uint256,uint256) pure returns (uint96)"
                            }
                          },
                          "id": 16043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6167:36:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6151:52:60"
                      },
                      {
                        "assignments": [
                          16046
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16046,
                            "name": "staked",
                            "nodeType": "VariableDeclaration",
                            "scope": 16063,
                            "src": "6207:13:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 16045,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "6207:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16052,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 16048,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16027,
                              "src": "6255:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 16049,
                              "name": "date",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16029,
                              "src": "6264:4:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 16050,
                              "name": "blockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16033,
                              "src": "6270:11:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16047,
                            "name": "getPriorStakeByDateForDelegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16209,
                            "src": "6223:31:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (address,uint256,uint256) view returns (uint96)"
                            }
                          },
                          "id": 16051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6223:59:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6207:75:60"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16053,
                            "name": "power",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16036,
                            "src": "6286:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 16060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 16055,
                                  "name": "staked",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16046,
                                  "src": "6300:6:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 16056,
                                  "name": "weight",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16039,
                                  "src": "6308:6:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "57656967687465645374616b696e673a3a5f746f74616c506f776572427944617465466f7244656c6567617465653a206d756c7469706c69636174696f6e206f766572666c6f77",
                                  "id": 16057,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6316:73:60",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_14b235c161e97b5bd93c886671985f015e404ebf969ab9ecea85964f59ef1329",
                                    "typeString": "literal_string \"WeightedStaking::_totalPowerByDateForDelegatee: multiplication overflow\""
                                  },
                                  "value": "WeightedStaking::_totalPowerByDateForDelegatee: multiplication overflow"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_14b235c161e97b5bd93c886671985f015e404ebf969ab9ecea85964f59ef1329",
                                    "typeString": "literal_string \"WeightedStaking::_totalPowerByDateForDelegatee: multiplication overflow\""
                                  }
                                ],
                                "id": 16054,
                                "name": "mul96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13931,
                                "src": "6294:5:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                  "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                }
                              },
                              "id": 16058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6294:96:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 16059,
                              "name": "WEIGHT_FACTOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15601,
                              "src": "6393:13:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "src": "6294:112:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "6286:120:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 16062,
                        "nodeType": "ExpressionStatement",
                        "src": "6286:120:60"
                      }
                    ]
                  },
                  "documentation": "@notice Compute the voting power for a specific date.\nPower = stake * weight\n@param date The staking date to compute the power for.\n@param startDate The date for which we need to know the power of the stake.\n@param blockNumber The block number, needed for checkpointing.\n",
                  "id": 16064,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_totalPowerByDateForDelegatee",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16034,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16027,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 16064,
                        "src": "6031:15:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16026,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6031:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16029,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 16064,
                        "src": "6050:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16028,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6050:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16031,
                        "name": "startDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 16064,
                        "src": "6066:17:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16030,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6066:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16033,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 16064,
                        "src": "6087:19:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16032,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6087:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6027:82:60"
                  },
                  "returnParameters": {
                    "id": 16037,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16036,
                        "name": "power",
                        "nodeType": "VariableDeclaration",
                        "scope": 16064,
                        "src": "6133:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 16035,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "6133:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6132:14:60"
                  },
                  "scope": 16683,
                  "src": "5989:421:60",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16208,
                    "nodeType": "Block",
                    "src": "7077:1077:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16079,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16076,
                                "name": "blockNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16070,
                                "src": "7089:11:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 16077,
                                  "name": "_getCurrentBlockNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16511,
                                  "src": "7103:22:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 16078,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7103:24:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7089:38:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "57656967687465645374616b696e673a3a6765745072696f725374616b65427944617465466f7244656c6567617465653a206e6f74207965742064657465726d696e6564",
                              "id": 16080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7129:70:60",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f3bd13b161fe2cd55416fe023d9acf655e3e8591cdfa3ad08e0de3b053c68744",
                                "typeString": "literal_string \"WeightedStaking::getPriorStakeByDateForDelegatee: not yet determined\""
                              },
                              "value": "WeightedStaking::getPriorStakeByDateForDelegatee: not yet determined"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f3bd13b161fe2cd55416fe023d9acf655e3e8591cdfa3ad08e0de3b053c68744",
                                "typeString": "literal_string \"WeightedStaking::getPriorStakeByDateForDelegatee: not yet determined\""
                              }
                            ],
                            "id": 16075,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7081:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7081:119:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16082,
                        "nodeType": "ExpressionStatement",
                        "src": "7081:119:60"
                      },
                      {
                        "assignments": [
                          16084
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16084,
                            "name": "nCheckpoints",
                            "nodeType": "VariableDeclaration",
                            "scope": 16208,
                            "src": "7205:19:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 16083,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7205:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16090,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 16085,
                              "name": "numDelegateStakingCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15675,
                              "src": "7227:29:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                                "typeString": "mapping(address => mapping(uint256 => uint32))"
                              }
                            },
                            "id": 16087,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 16086,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16066,
                              "src": "7257:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7227:38:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                              "typeString": "mapping(uint256 => uint32)"
                            }
                          },
                          "id": 16089,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 16088,
                            "name": "date",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16068,
                            "src": "7266:4:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7227:44:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7205:66:60"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 16093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16091,
                            "name": "nCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16084,
                            "src": "7279:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16092,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7295:1:60",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7279:17:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 16097,
                        "nodeType": "IfStatement",
                        "src": "7275:41:60",
                        "trueBody": {
                          "id": 16096,
                          "nodeType": "Block",
                          "src": "7298:18:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16094,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7310:1:60",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 16074,
                              "id": 16095,
                              "nodeType": "Return",
                              "src": "7303:8:60"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 16098,
                                    "name": "delegateStakingCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15669,
                                    "src": "7368:26:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                    }
                                  },
                                  "id": 16100,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 16099,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16066,
                                    "src": "7395:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7368:35:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                    "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                  }
                                },
                                "id": 16102,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 16101,
                                  "name": "date",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16068,
                                  "src": "7404:4:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7368:41:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                  "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                }
                              },
                              "id": 16106,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 16105,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 16103,
                                  "name": "nCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16084,
                                  "src": "7410:12:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 16104,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7425:1:60",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "7410:16:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7368:59:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                "typeString": "struct StakingStorage.Checkpoint storage ref"
                              }
                            },
                            "id": 16107,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fromBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15648,
                            "src": "7368:69:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16108,
                            "name": "blockNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16070,
                            "src": "7441:11:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7368:84:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 16122,
                        "nodeType": "IfStatement",
                        "src": "7364:172:60",
                        "trueBody": {
                          "id": 16121,
                          "nodeType": "Block",
                          "src": "7454:82:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 16110,
                                        "name": "delegateStakingCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15669,
                                        "src": "7466:26:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                          "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                        }
                                      },
                                      "id": 16112,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 16111,
                                        "name": "account",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16066,
                                        "src": "7493:7:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7466:35:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                        "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                      }
                                    },
                                    "id": 16114,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 16113,
                                      "name": "date",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16068,
                                      "src": "7502:4:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7466:41:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                      "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                    }
                                  },
                                  "id": 16118,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 16117,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 16115,
                                      "name": "nCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16084,
                                      "src": "7508:12:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 16116,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7523:1:60",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "7508:16:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7466:59:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                    "typeString": "struct StakingStorage.Checkpoint storage ref"
                                  }
                                },
                                "id": 16119,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15650,
                                "src": "7466:65:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "functionReturnParameters": 16074,
                              "id": 16120,
                              "nodeType": "Return",
                              "src": "7459:72:60"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 16123,
                                    "name": "delegateStakingCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15669,
                                    "src": "7589:26:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                    }
                                  },
                                  "id": 16125,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 16124,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16066,
                                    "src": "7616:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7589:35:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                    "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                  }
                                },
                                "id": 16127,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 16126,
                                  "name": "date",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16068,
                                  "src": "7625:4:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7589:41:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                  "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                }
                              },
                              "id": 16129,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16128,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7631:1:60",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7589:44:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                "typeString": "struct StakingStorage.Checkpoint storage ref"
                              }
                            },
                            "id": 16130,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fromBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15648,
                            "src": "7589:54:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16131,
                            "name": "blockNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16070,
                            "src": "7646:11:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7589:68:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 16136,
                        "nodeType": "IfStatement",
                        "src": "7585:92:60",
                        "trueBody": {
                          "id": 16135,
                          "nodeType": "Block",
                          "src": "7659:18:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16133,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7671:1:60",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 16074,
                              "id": 16134,
                              "nodeType": "Return",
                              "src": "7664:8:60"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          16138
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16138,
                            "name": "lower",
                            "nodeType": "VariableDeclaration",
                            "scope": 16208,
                            "src": "7681:12:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 16137,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7681:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16140,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 16139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7696:1:60",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7681:16:60"
                      },
                      {
                        "assignments": [
                          16142
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16142,
                            "name": "upper",
                            "nodeType": "VariableDeclaration",
                            "scope": 16208,
                            "src": "7701:12:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 16141,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7701:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16146,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 16145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16143,
                            "name": "nCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16084,
                            "src": "7716:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 16144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7731:1:60",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "7716:16:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7701:31:60"
                      },
                      {
                        "body": {
                          "id": 16197,
                          "nodeType": "Block",
                          "src": "7758:328:60",
                          "statements": [
                            {
                              "assignments": [
                                16151
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16151,
                                  "name": "center",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16197,
                                  "src": "7763:13:60",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "typeName": {
                                    "id": 16150,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7763:6:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16160,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 16159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 16152,
                                  "name": "upper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16142,
                                  "src": "7779:5:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 16158,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        },
                                        "id": 16155,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 16153,
                                          "name": "upper",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16142,
                                          "src": "7788:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 16154,
                                          "name": "lower",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16138,
                                          "src": "7796:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "src": "7788:13:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      }
                                    ],
                                    "id": 16156,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "7787:15:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 16157,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7805:1:60",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "7787:19:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "7779:27:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7763:43:60"
                            },
                            {
                              "assignments": [
                                16162
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16162,
                                  "name": "cp",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16197,
                                  "src": "7845:20:60",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$15651_memory_ptr",
                                    "typeString": "struct StakingStorage.Checkpoint"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 16161,
                                    "name": "Checkpoint",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 15651,
                                    "src": "7845:10:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$15651_storage_ptr",
                                      "typeString": "struct StakingStorage.Checkpoint"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16170,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 16163,
                                      "name": "delegateStakingCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15669,
                                      "src": "7868:26:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                      }
                                    },
                                    "id": 16165,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 16164,
                                      "name": "account",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16066,
                                      "src": "7895:7:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7868:35:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                      "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                    }
                                  },
                                  "id": 16167,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 16166,
                                    "name": "date",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16068,
                                    "src": "7904:4:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7868:41:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                    "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                  }
                                },
                                "id": 16169,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 16168,
                                  "name": "center",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16151,
                                  "src": "7910:6:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7868:49:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                  "typeString": "struct StakingStorage.Checkpoint storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7845:72:60"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16174,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16171,
                                    "name": "cp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16162,
                                    "src": "7926:2:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$15651_memory_ptr",
                                      "typeString": "struct StakingStorage.Checkpoint memory"
                                    }
                                  },
                                  "id": 16172,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "fromBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15648,
                                  "src": "7926:12:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16173,
                                  "name": "blockNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16070,
                                  "src": "7942:11:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7926:27:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16182,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16179,
                                      "name": "cp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16162,
                                      "src": "7992:2:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Checkpoint_$15651_memory_ptr",
                                        "typeString": "struct StakingStorage.Checkpoint memory"
                                      }
                                    },
                                    "id": 16180,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fromBlock",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 15648,
                                    "src": "7992:12:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16181,
                                    "name": "blockNumber",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16070,
                                    "src": "8007:11:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7992:26:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 16194,
                                  "nodeType": "Block",
                                  "src": "8052:30:60",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16192,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 16188,
                                          "name": "upper",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16142,
                                          "src": "8058:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "id": 16191,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 16189,
                                            "name": "center",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16151,
                                            "src": "8066:6:60",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 16190,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8075:1:60",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "8066:10:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "src": "8058:18:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "id": 16193,
                                      "nodeType": "ExpressionStatement",
                                      "src": "8058:18:60"
                                    }
                                  ]
                                },
                                "id": 16195,
                                "nodeType": "IfStatement",
                                "src": "7988:94:60",
                                "trueBody": {
                                  "id": 16187,
                                  "nodeType": "Block",
                                  "src": "8020:26:60",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16185,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 16183,
                                          "name": "lower",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16138,
                                          "src": "8026:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "id": 16184,
                                          "name": "center",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16151,
                                          "src": "8034:6:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "src": "8026:14:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "id": 16186,
                                      "nodeType": "ExpressionStatement",
                                      "src": "8026:14:60"
                                    }
                                  ]
                                }
                              },
                              "id": 16196,
                              "nodeType": "IfStatement",
                              "src": "7922:160:60",
                              "trueBody": {
                                "id": 16178,
                                "nodeType": "Block",
                                "src": "7955:27:60",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16175,
                                        "name": "cp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16162,
                                        "src": "7968:2:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Checkpoint_$15651_memory_ptr",
                                          "typeString": "struct StakingStorage.Checkpoint memory"
                                        }
                                      },
                                      "id": 16176,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "stake",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 15650,
                                      "src": "7968:8:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "functionReturnParameters": 16074,
                                    "id": 16177,
                                    "nodeType": "Return",
                                    "src": "7961:15:60"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 16149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16147,
                            "name": "upper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16142,
                            "src": "7743:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16148,
                            "name": "lower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16138,
                            "src": "7751:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "7743:13:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16198,
                        "nodeType": "WhileStatement",
                        "src": "7736:350:60"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 16199,
                                  "name": "delegateStakingCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15669,
                                  "src": "8096:26:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                  }
                                },
                                "id": 16201,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 16200,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16066,
                                  "src": "8123:7:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8096:35:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                }
                              },
                              "id": 16203,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 16202,
                                "name": "date",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16068,
                                "src": "8132:4:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8096:41:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                              }
                            },
                            "id": 16205,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 16204,
                              "name": "lower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16138,
                              "src": "8138:5:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8096:48:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                              "typeString": "struct StakingStorage.Checkpoint storage ref"
                            }
                          },
                          "id": 16206,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15650,
                          "src": "8096:54:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 16074,
                        "id": 16207,
                        "nodeType": "Return",
                        "src": "8089:61:60"
                      }
                    ]
                  },
                  "documentation": "@notice Determine the prior number of stake for an account as of a block number.\n@dev Block number must be a finalized block or else this function will\nrevert to prevent misinformation.\nTODO: WeightedStaking::getPriorStakeByDateForDelegatee should probably better\nbe internal instead of a public function.\n@param account The address of the account to check.\n@param blockNumber The block number to get the vote balance at.\n@return The number of votes the account had as of the given block.\n",
                  "id": 16209,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriorStakeByDateForDelegatee",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16071,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16066,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 16209,
                        "src": "6990:15:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16065,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6990:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16068,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 16209,
                        "src": "7009:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16067,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7009:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16070,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 16209,
                        "src": "7025:19:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16069,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7025:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6986:61:60"
                  },
                  "returnParameters": {
                    "id": 16074,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16073,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 16209,
                        "src": "7069:6:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 16072,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "7069:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7068:8:60"
                  },
                  "scope": 16683,
                  "src": "6946:1208:60",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16267,
                    "nodeType": "Block",
                    "src": "9043:545:60",
                    "statements": [
                      {
                        "assignments": [
                          16221
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16221,
                            "name": "start",
                            "nodeType": "VariableDeclaration",
                            "scope": 16267,
                            "src": "9183:13:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16220,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9183:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16225,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 16223,
                              "name": "date",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16215,
                              "src": "9219:4:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16222,
                            "name": "timestampToLockDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16607,
                            "src": "9199:19:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 16224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9199:25:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9183:41:60"
                      },
                      {
                        "assignments": [
                          16227
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16227,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 16267,
                            "src": "9228:11:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16226,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9228:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16231,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16228,
                            "name": "start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16221,
                            "src": "9242:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16229,
                            "name": "MAX_DURATION",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15604,
                            "src": "9250:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9242:20:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9228:34:60"
                      },
                      {
                        "body": {
                          "id": 16265,
                          "nodeType": "Block",
                          "src": "9347:238:60",
                          "statements": [
                            {
                              "assignments": [
                                16244
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16244,
                                  "name": "weightedStake",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16265,
                                  "src": "9352:20:60",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  "typeName": {
                                    "id": 16243,
                                    "name": "uint96",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9352:6:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16251,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 16246,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16211,
                                    "src": "9395:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 16247,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16233,
                                    "src": "9404:1:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 16248,
                                    "name": "start",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16221,
                                    "src": "9407:5:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 16249,
                                    "name": "blockNumber",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16213,
                                    "src": "9414:11:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 16245,
                                  "name": "weightedStakeByDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16317,
                                  "src": "9375:19:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                                    "typeString": "function (address,uint256,uint256,uint256) view returns (uint96)"
                                  }
                                },
                                "id": 16250,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9375:51:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9352:74:60"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "id": 16254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 16252,
                                  "name": "weightedStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16244,
                                  "src": "9435:13:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 16253,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9451:1:60",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9435:17:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 16264,
                              "nodeType": "IfStatement",
                              "src": "9431:150:60",
                              "trueBody": {
                                "id": 16263,
                                "nodeType": "Block",
                                "src": "9454:127:60",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16261,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 16255,
                                        "name": "votes",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16218,
                                        "src": "9460:5:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 16257,
                                            "name": "votes",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16218,
                                            "src": "9474:5:60",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 16258,
                                            "name": "weightedStake",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16244,
                                            "src": "9481:13:60",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "57656967687465645374616b696e673a3a6765745072696f7257656967687465645374616b653a206f766572666c6f77206f6e20746f74616c2077656967687420636f6d7075746174696f6e",
                                            "id": 16259,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9496:78:60",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_adb2743f6c160ba3cd843121af912a8c9fa31fd3e0f37690639c8e1529572c4e",
                                              "typeString": "literal_string \"WeightedStaking::getPriorWeightedStake: overflow on total weight computation\""
                                            },
                                            "value": "WeightedStaking::getPriorWeightedStake: overflow on total weight computation"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            },
                                            {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            },
                                            {
                                              "typeIdentifier": "t_stringliteral_adb2743f6c160ba3cd843121af912a8c9fa31fd3e0f37690639c8e1529572c4e",
                                              "typeString": "literal_string \"WeightedStaking::getPriorWeightedStake: overflow on total weight computation\""
                                            }
                                          ],
                                          "id": 16256,
                                          "name": "add96",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13872,
                                          "src": "9468:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                            "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                          }
                                        },
                                        "id": 16260,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9468:107:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "src": "9460:115:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "id": 16262,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9460:115:60"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16236,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16233,
                            "src": "9321:1:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16237,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16227,
                            "src": "9326:3:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9321:8:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16266,
                        "initializationExpression": {
                          "assignments": [
                            16233
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 16233,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 16266,
                              "src": "9302:9:60",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 16232,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9302:7:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 16235,
                          "initialValue": {
                            "argumentTypes": null,
                            "id": 16234,
                            "name": "start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16221,
                            "src": "9314:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "9302:17:60"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 16241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 16239,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16233,
                              "src": "9331:1:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 16240,
                              "name": "TWO_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15595,
                              "src": "9336:9:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9331:14:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 16242,
                          "nodeType": "ExpressionStatement",
                          "src": "9331:14:60"
                        },
                        "nodeType": "ForStatement",
                        "src": "9297:288:60"
                      }
                    ]
                  },
                  "documentation": "@notice Determine the prior weighted stake for an account as of a block number.\nIterate through checkpoints adding up voting power.\n@dev Block number must be a finalized block or else this function will\nrevert to prevent misinformation.\n     Used for fee sharing, not voting.\nTODO: WeightedStaking::getPriorWeightedStake is using the variable name \"votes\"\nto add up token stake, and that could be misleading.\n\t * @param account The address of the account to check.\n@param blockNumber The block number to get the vote balance at.\n@return The weighted stake the account had as of the given block.\n",
                  "id": 16268,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriorWeightedStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16211,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 16268,
                        "src": "8950:15:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16210,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8950:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16213,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 16268,
                        "src": "8969:19:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8969:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16215,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 16268,
                        "src": "8992:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16214,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8992:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8946:61:60"
                  },
                  "returnParameters": {
                    "id": 16219,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16218,
                        "name": "votes",
                        "nodeType": "VariableDeclaration",
                        "scope": 16268,
                        "src": "9029:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 16217,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "9029:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9028:14:60"
                  },
                  "scope": 16683,
                  "src": "8916:672:60",
                  "stateMutability": "view",
                  "superFunction": 13765,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16316,
                    "nodeType": "Block",
                    "src": "10156:297:60",
                    "statements": [
                      {
                        "assignments": [
                          16282
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16282,
                            "name": "staked",
                            "nodeType": "VariableDeclaration",
                            "scope": 16316,
                            "src": "10160:13:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 16281,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "10160:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16288,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 16284,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16270,
                              "src": "10201:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 16285,
                              "name": "date",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16272,
                              "src": "10210:4:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 16286,
                              "name": "blockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16276,
                              "src": "10216:11:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16283,
                            "name": "_getPriorUserStakeByDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16502,
                            "src": "10176:24:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (address,uint256,uint256) view returns (uint96)"
                            }
                          },
                          "id": 16287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10176:52:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10160:68:60"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 16291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16289,
                            "name": "staked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16282,
                            "src": "10236:6:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16290,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10245:1:60",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10236:10:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 16314,
                          "nodeType": "Block",
                          "src": "10431:19:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 16312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 16310,
                                  "name": "power",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16279,
                                  "src": "10436:5:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 16311,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10444:1:60",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10436:9:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 16313,
                              "nodeType": "ExpressionStatement",
                              "src": "10436:9:60"
                            }
                          ]
                        },
                        "id": 16315,
                        "nodeType": "IfStatement",
                        "src": "10232:218:60",
                        "trueBody": {
                          "id": 16309,
                          "nodeType": "Block",
                          "src": "10248:177:60",
                          "statements": [
                            {
                              "assignments": [
                                16293
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16293,
                                  "name": "weight",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16309,
                                  "src": "10253:13:60",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  "typeName": {
                                    "id": 16292,
                                    "name": "uint96",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10253:6:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16298,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 16295,
                                    "name": "date",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16272,
                                    "src": "10289:4:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 16296,
                                    "name": "startDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16274,
                                    "src": "10295:9:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 16294,
                                  "name": "computeWeightByDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16575,
                                  "src": "10269:19:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint96)"
                                  }
                                },
                                "id": 16297,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10269:36:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10253:52:60"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 16307,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 16299,
                                  "name": "power",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16279,
                                  "src": "10310:5:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  },
                                  "id": 16306,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 16301,
                                        "name": "staked",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16282,
                                        "src": "10324:6:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 16302,
                                        "name": "weight",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16293,
                                        "src": "10332:6:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "57656967687465645374616b696e673a3a77656967687465645374616b654279446174653a206d756c7469706c69636174696f6e206f766572666c6f77",
                                        "id": 16303,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10340:63:60",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_4fa1314719dabd1b08dfb8c7445c9ce835bf4aa7d63868b07bf8a24acfbe9b80",
                                          "typeString": "literal_string \"WeightedStaking::weightedStakeByDate: multiplication overflow\""
                                        },
                                        "value": "WeightedStaking::weightedStakeByDate: multiplication overflow"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        },
                                        {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_4fa1314719dabd1b08dfb8c7445c9ce835bf4aa7d63868b07bf8a24acfbe9b80",
                                          "typeString": "literal_string \"WeightedStaking::weightedStakeByDate: multiplication overflow\""
                                        }
                                      ],
                                      "id": 16300,
                                      "name": "mul96",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13931,
                                      "src": "10318:5:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                        "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                      }
                                    },
                                    "id": 16304,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10318:86:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16305,
                                    "name": "WEIGHT_FACTOR",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15601,
                                    "src": "10407:13:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  },
                                  "src": "10318:102:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "10310:110:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 16308,
                              "nodeType": "ExpressionStatement",
                              "src": "10310:110:60"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Compute the voting power for a specific date.\nPower = stake * weight\nTODO: WeightedStaking::weightedStakeByDate should probably better\nbe internal instead of a public function.\n@param date The staking date to compute the power for.\n@param startDate The date for which we need to know the power of the stake.\n@param blockNumber The block number, needed for checkpointing.\n",
                  "id": 16317,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "weightedStakeByDate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16277,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16270,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 16317,
                        "src": "10042:15:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16269,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10042:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16272,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 16317,
                        "src": "10061:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16271,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10061:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16274,
                        "name": "startDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 16317,
                        "src": "10077:17:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16273,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10077:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16276,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 16317,
                        "src": "10098:19:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16275,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10098:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10038:82:60"
                  },
                  "returnParameters": {
                    "id": 16280,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16279,
                        "name": "power",
                        "nodeType": "VariableDeclaration",
                        "scope": 16317,
                        "src": "10142:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 16278,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "10142:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10141:14:60"
                  },
                  "scope": 16683,
                  "src": "10010:443:60",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16350,
                    "nodeType": "Block",
                    "src": "11047:329:60",
                    "statements": [
                      {
                        "assignments": [
                          16329
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16329,
                            "name": "priorStake",
                            "nodeType": "VariableDeclaration",
                            "scope": 16350,
                            "src": "11051:17:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 16328,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "11051:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16335,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 16331,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16319,
                              "src": "11096:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 16332,
                              "name": "date",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16321,
                              "src": "11105:4:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 16333,
                              "name": "blockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16323,
                              "src": "11111:11:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16330,
                            "name": "_getPriorUserStakeByDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16502,
                            "src": "11071:24:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (address,uint256,uint256) view returns (uint96)"
                            }
                          },
                          "id": 16334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11071:52:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11051:72:60"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 16341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 16338,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 16336,
                              "name": "priorStake",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16329,
                              "src": "11287:10:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 16337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11301:1:60",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "11287:15:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 16339,
                              "name": "_isVestingContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16682,
                              "src": "11306:18:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                "typeString": "function () view returns (bool)"
                              }
                            },
                            "id": 16340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11306:20:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "11287:39:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 16347,
                        "nodeType": "IfStatement",
                        "src": "11283:69:60",
                        "trueBody": {
                          "id": 16346,
                          "nodeType": "Block",
                          "src": "11328:24:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 16344,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 16342,
                                  "name": "priorStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16329,
                                  "src": "11333:10:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 16343,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11346:1:60",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "11333:14:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 16345,
                              "nodeType": "ExpressionStatement",
                              "src": "11333:14:60"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16348,
                          "name": "priorStake",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16329,
                          "src": "11362:10:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 16327,
                        "id": 16349,
                        "nodeType": "Return",
                        "src": "11355:17:60"
                      }
                    ]
                  },
                  "documentation": "@notice Determine the prior number of stake for an account until a\ncertain lock date as of a block number.\n@dev Block number must be a finalized block or else this function\nwill revert to prevent misinformation.\n@param account The address of the account to check.\n@param date The lock date.\n@param blockNumber The block number to get the vote balance at.\n@return The number of votes the account had as of the given block.\n",
                  "id": 16351,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriorUserStakeByDate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16324,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16319,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 16351,
                        "src": "10958:15:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16318,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10958:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16321,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 16351,
                        "src": "10977:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16320,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10977:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16323,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 16351,
                        "src": "10993:19:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16322,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10993:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10954:61:60"
                  },
                  "returnParameters": {
                    "id": 16327,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16326,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 16351,
                        "src": "11039:6:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 16325,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "11039:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11038:8:60"
                  },
                  "scope": 16683,
                  "src": "10922:454:60",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 16501,
                    "nodeType": "Block",
                    "src": "11861:1083:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16363,
                                "name": "blockNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16357,
                                "src": "11873:11:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 16364,
                                  "name": "_getCurrentBlockNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16511,
                                  "src": "11887:22:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 16365,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11887:24:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11873:38:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "57656967687465645374616b696e673a3a6765745072696f72557365725374616b65416e64446174653a206e6f74207965742064657465726d696e6564",
                              "id": 16367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11913:63:60",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c95d8443a5560c21fca01a61c15f86fdb36c668d3360375b0be5082b0e1656ee",
                                "typeString": "literal_string \"WeightedStaking::getPriorUserStakeAndDate: not yet determined\""
                              },
                              "value": "WeightedStaking::getPriorUserStakeAndDate: not yet determined"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c95d8443a5560c21fca01a61c15f86fdb36c668d3360375b0be5082b0e1656ee",
                                "typeString": "literal_string \"WeightedStaking::getPriorUserStakeAndDate: not yet determined\""
                              }
                            ],
                            "id": 16362,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11865:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11865:112:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16369,
                        "nodeType": "ExpressionStatement",
                        "src": "11865:112:60"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16370,
                            "name": "date",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16355,
                            "src": "11982:4:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 16372,
                                "name": "date",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16355,
                                "src": "12010:4:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 16371,
                              "name": "_adjustDateForOrigin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16634,
                              "src": "11989:20:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view returns (uint256)"
                              }
                            },
                            "id": 16373,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11989:26:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11982:33:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16375,
                        "nodeType": "ExpressionStatement",
                        "src": "11982:33:60"
                      },
                      {
                        "assignments": [
                          16377
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16377,
                            "name": "nCheckpoints",
                            "nodeType": "VariableDeclaration",
                            "scope": 16501,
                            "src": "12019:19:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 16376,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "12019:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16383,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 16378,
                              "name": "numUserStakingCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15689,
                              "src": "12041:25:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                                "typeString": "mapping(address => mapping(uint256 => uint32))"
                              }
                            },
                            "id": 16380,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 16379,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16353,
                              "src": "12067:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12041:34:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                              "typeString": "mapping(uint256 => uint32)"
                            }
                          },
                          "id": 16382,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 16381,
                            "name": "date",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16355,
                            "src": "12076:4:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12041:40:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12019:62:60"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 16386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16384,
                            "name": "nCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16377,
                            "src": "12089:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16385,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12105:1:60",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12089:17:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 16390,
                        "nodeType": "IfStatement",
                        "src": "12085:41:60",
                        "trueBody": {
                          "id": 16389,
                          "nodeType": "Block",
                          "src": "12108:18:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12120:1:60",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 16361,
                              "id": 16388,
                              "nodeType": "Return",
                              "src": "12113:8:60"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 16391,
                                    "name": "userStakingCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15683,
                                    "src": "12178:22:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                    }
                                  },
                                  "id": 16393,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 16392,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16353,
                                    "src": "12201:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12178:31:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                    "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                  }
                                },
                                "id": 16395,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 16394,
                                  "name": "date",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16355,
                                  "src": "12210:4:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12178:37:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                  "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                }
                              },
                              "id": 16399,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 16398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 16396,
                                  "name": "nCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16377,
                                  "src": "12216:12:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 16397,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12231:1:60",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12216:16:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12178:55:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                "typeString": "struct StakingStorage.Checkpoint storage ref"
                              }
                            },
                            "id": 16400,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fromBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15648,
                            "src": "12178:65:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16401,
                            "name": "blockNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16357,
                            "src": "12247:11:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12178:80:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 16415,
                        "nodeType": "IfStatement",
                        "src": "12174:164:60",
                        "trueBody": {
                          "id": 16414,
                          "nodeType": "Block",
                          "src": "12260:78:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 16403,
                                        "name": "userStakingCheckpoints",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15683,
                                        "src": "12272:22:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                          "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                        }
                                      },
                                      "id": 16405,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 16404,
                                        "name": "account",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16353,
                                        "src": "12295:7:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12272:31:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                        "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                      }
                                    },
                                    "id": 16407,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 16406,
                                      "name": "date",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16355,
                                      "src": "12304:4:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12272:37:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                      "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                    }
                                  },
                                  "id": 16411,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 16410,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 16408,
                                      "name": "nCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16377,
                                      "src": "12310:12:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 16409,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12325:1:60",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "12310:16:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12272:55:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                    "typeString": "struct StakingStorage.Checkpoint storage ref"
                                  }
                                },
                                "id": 16412,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stake",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15650,
                                "src": "12272:61:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "functionReturnParameters": 16361,
                              "id": 16413,
                              "nodeType": "Return",
                              "src": "12265:68:60"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 16416,
                                    "name": "userStakingCheckpoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15683,
                                    "src": "12391:22:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                    }
                                  },
                                  "id": 16418,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 16417,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16353,
                                    "src": "12414:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12391:31:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                    "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                  }
                                },
                                "id": 16420,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 16419,
                                  "name": "date",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16355,
                                  "src": "12423:4:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12391:37:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                  "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                }
                              },
                              "id": 16422,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12429:1:60",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12391:40:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                "typeString": "struct StakingStorage.Checkpoint storage ref"
                              }
                            },
                            "id": 16423,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fromBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15648,
                            "src": "12391:50:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16424,
                            "name": "blockNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16357,
                            "src": "12444:11:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12391:64:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 16429,
                        "nodeType": "IfStatement",
                        "src": "12387:88:60",
                        "trueBody": {
                          "id": 16428,
                          "nodeType": "Block",
                          "src": "12457:18:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16426,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12469:1:60",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 16361,
                              "id": 16427,
                              "nodeType": "Return",
                              "src": "12462:8:60"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          16431
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16431,
                            "name": "lower",
                            "nodeType": "VariableDeclaration",
                            "scope": 16501,
                            "src": "12479:12:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 16430,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "12479:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16433,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 16432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12494:1:60",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12479:16:60"
                      },
                      {
                        "assignments": [
                          16435
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16435,
                            "name": "upper",
                            "nodeType": "VariableDeclaration",
                            "scope": 16501,
                            "src": "12499:12:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 16434,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "12499:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16439,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 16438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16436,
                            "name": "nCheckpoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16377,
                            "src": "12514:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 16437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12529:1:60",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "12514:16:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12499:31:60"
                      },
                      {
                        "body": {
                          "id": 16490,
                          "nodeType": "Block",
                          "src": "12556:324:60",
                          "statements": [
                            {
                              "assignments": [
                                16444
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16444,
                                  "name": "center",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16490,
                                  "src": "12561:13:60",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "typeName": {
                                    "id": 16443,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12561:6:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16453,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 16452,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 16445,
                                  "name": "upper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16435,
                                  "src": "12577:5:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "id": 16451,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        },
                                        "id": 16448,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 16446,
                                          "name": "upper",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16435,
                                          "src": "12586:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 16447,
                                          "name": "lower",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16431,
                                          "src": "12594:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "src": "12586:13:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      }
                                    ],
                                    "id": 16449,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "12585:15:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 16450,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12603:1:60",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "12585:19:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "12577:27:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12561:43:60"
                            },
                            {
                              "assignments": [
                                16455
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16455,
                                  "name": "cp",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16490,
                                  "src": "12643:20:60",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Checkpoint_$15651_memory_ptr",
                                    "typeString": "struct StakingStorage.Checkpoint"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 16454,
                                    "name": "Checkpoint",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 15651,
                                    "src": "12643:10:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$15651_storage_ptr",
                                      "typeString": "struct StakingStorage.Checkpoint"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16463,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 16456,
                                      "name": "userStakingCheckpoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15683,
                                      "src": "12666:22:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                      }
                                    },
                                    "id": 16458,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 16457,
                                      "name": "account",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16353,
                                      "src": "12689:7:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12666:31:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                      "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                    }
                                  },
                                  "id": 16460,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 16459,
                                    "name": "date",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16355,
                                    "src": "12698:4:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12666:37:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                    "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                                  }
                                },
                                "id": 16462,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 16461,
                                  "name": "center",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16444,
                                  "src": "12704:6:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12666:45:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                                  "typeString": "struct StakingStorage.Checkpoint storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12643:68:60"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16467,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16464,
                                    "name": "cp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16455,
                                    "src": "12720:2:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Checkpoint_$15651_memory_ptr",
                                      "typeString": "struct StakingStorage.Checkpoint memory"
                                    }
                                  },
                                  "id": 16465,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "fromBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15648,
                                  "src": "12720:12:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16466,
                                  "name": "blockNumber",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16357,
                                  "src": "12736:11:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12720:27:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16475,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16472,
                                      "name": "cp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16455,
                                      "src": "12786:2:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Checkpoint_$15651_memory_ptr",
                                        "typeString": "struct StakingStorage.Checkpoint memory"
                                      }
                                    },
                                    "id": 16473,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "fromBlock",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 15648,
                                    "src": "12786:12:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16474,
                                    "name": "blockNumber",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16357,
                                    "src": "12801:11:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "12786:26:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 16487,
                                  "nodeType": "Block",
                                  "src": "12846:30:60",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16485,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 16481,
                                          "name": "upper",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16435,
                                          "src": "12852:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "id": 16484,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 16482,
                                            "name": "center",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16444,
                                            "src": "12860:6:60",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 16483,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12869:1:60",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "12860:10:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "src": "12852:18:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "id": 16486,
                                      "nodeType": "ExpressionStatement",
                                      "src": "12852:18:60"
                                    }
                                  ]
                                },
                                "id": 16488,
                                "nodeType": "IfStatement",
                                "src": "12782:94:60",
                                "trueBody": {
                                  "id": 16480,
                                  "nodeType": "Block",
                                  "src": "12814:26:60",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16478,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 16476,
                                          "name": "lower",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16431,
                                          "src": "12820:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "id": 16477,
                                          "name": "center",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16444,
                                          "src": "12828:6:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "src": "12820:14:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "id": 16479,
                                      "nodeType": "ExpressionStatement",
                                      "src": "12820:14:60"
                                    }
                                  ]
                                }
                              },
                              "id": 16489,
                              "nodeType": "IfStatement",
                              "src": "12716:160:60",
                              "trueBody": {
                                "id": 16471,
                                "nodeType": "Block",
                                "src": "12749:27:60",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16468,
                                        "name": "cp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16455,
                                        "src": "12762:2:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Checkpoint_$15651_memory_ptr",
                                          "typeString": "struct StakingStorage.Checkpoint memory"
                                        }
                                      },
                                      "id": 16469,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "stake",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 15650,
                                      "src": "12762:8:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "functionReturnParameters": 16361,
                                    "id": 16470,
                                    "nodeType": "Return",
                                    "src": "12755:15:60"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 16442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16440,
                            "name": "upper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16435,
                            "src": "12541:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16441,
                            "name": "lower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16431,
                            "src": "12549:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "12541:13:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16491,
                        "nodeType": "WhileStatement",
                        "src": "12534:346:60"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 16492,
                                  "name": "userStakingCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15683,
                                  "src": "12890:22:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                  }
                                },
                                "id": 16494,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 16493,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16353,
                                  "src": "12913:7:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12890:31:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                }
                              },
                              "id": 16496,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 16495,
                                "name": "date",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16355,
                                "src": "12922:4:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12890:37:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                              }
                            },
                            "id": 16498,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 16497,
                              "name": "lower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16431,
                              "src": "12928:5:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12890:44:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                              "typeString": "struct StakingStorage.Checkpoint storage ref"
                            }
                          },
                          "id": 16499,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15650,
                          "src": "12890:50:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 16361,
                        "id": 16500,
                        "nodeType": "Return",
                        "src": "12883:57:60"
                      }
                    ]
                  },
                  "documentation": "@notice Determine the prior number of stake for an account until a\n\t\tcertain lock date as of a block number.\n@dev All functions of Staking contract use this internal version,\n\t\twe need to modify public function in order to workaround issue with Vesting.withdrawTokens:\nreturn 1 instead of 0 if message sender is a contract.\n",
                  "id": 16502,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getPriorUserStakeByDate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16353,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 16502,
                        "src": "11772:15:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16352,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11772:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16355,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 16502,
                        "src": "11791:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16354,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11791:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16357,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 16502,
                        "src": "11807:19:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16356,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11807:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11768:61:60"
                  },
                  "returnParameters": {
                    "id": 16361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16360,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 16502,
                        "src": "11853:6:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 16359,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "11853:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11852:8:60"
                  },
                  "scope": 16683,
                  "src": "11735:1209:60",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16510,
                    "nodeType": "Block",
                    "src": "13214:27:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 16507,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44984,
                            "src": "13225:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 16508,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "13225:12:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 16506,
                        "id": 16509,
                        "nodeType": "Return",
                        "src": "13218:19:60"
                      }
                    ]
                  },
                  "documentation": "@notice Determine the current Block Number\n@dev This is segregated from the _getPriorUserStakeByDate function to better test\nadvancing blocks functionality using Mock Contracts\n",
                  "id": 16511,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getCurrentBlockNumber",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16503,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13179:2:60"
                  },
                  "returnParameters": {
                    "id": 16506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16505,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 16511,
                        "src": "13205:7:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16504,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13205:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13204:9:60"
                  },
                  "scope": 16683,
                  "src": "13148:93:60",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16574,
                    "nodeType": "Block",
                    "src": "13596:732:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16521,
                                "name": "date",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16513,
                                "src": "13608:4:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16522,
                                "name": "startDate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16515,
                                "src": "13616:9:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13608:17:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "57656967687465645374616b696e673a3a636f6d707574655765696768744279446174653a2064617465206e6565647320746f20626520626967676572207468616e20737461727444617465",
                              "id": 16524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13627:78:60",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7cba48aba02e192f29aa57b5757b1de67a2147c3b256d67ec379410142c3ae02",
                                "typeString": "literal_string \"WeightedStaking::computeWeightByDate: date needs to be bigger than startDate\""
                              },
                              "value": "WeightedStaking::computeWeightByDate: date needs to be bigger than startDate"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7cba48aba02e192f29aa57b5757b1de67a2147c3b256d67ec379410142c3ae02",
                                "typeString": "literal_string \"WeightedStaking::computeWeightByDate: date needs to be bigger than startDate\""
                              }
                            ],
                            "id": 16520,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13600:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13600:106:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16526,
                        "nodeType": "ExpressionStatement",
                        "src": "13600:106:60"
                      },
                      {
                        "assignments": [
                          16528
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16528,
                            "name": "remainingTime",
                            "nodeType": "VariableDeclaration",
                            "scope": 16574,
                            "src": "13710:21:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16527,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13710:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16533,
                        "initialValue": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16531,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16529,
                                "name": "date",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16513,
                                "src": "13735:4:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16530,
                                "name": "startDate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16515,
                                "src": "13742:9:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13735:16:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 16532,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "13734:18:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13710:42:60"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16535,
                                "name": "MAX_DURATION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15604,
                                "src": "13764:12:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16536,
                                "name": "remainingTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16528,
                                "src": "13780:13:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13764:29:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5374616b696e673a3a636f6d707574655765696768744279446174653a72656d61696e696e672074696d652063616e277420626520626967676572207468616e206d6178206475726174696f6e",
                              "id": 16538,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13795:79:60",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9f487074cc660be6e21a72138585e152f21849aeb798c6becd2d15b05016829b",
                                "typeString": "literal_string \"Staking::computeWeightByDate:remaining time can't be bigger than max duration\""
                              },
                              "value": "Staking::computeWeightByDate:remaining time can't be bigger than max duration"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9f487074cc660be6e21a72138585e152f21849aeb798c6becd2d15b05016829b",
                                "typeString": "literal_string \"Staking::computeWeightByDate:remaining time can't be bigger than max duration\""
                              }
                            ],
                            "id": 16534,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13756:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13756:119:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16540,
                        "nodeType": "ExpressionStatement",
                        "src": "13756:119:60"
                      },
                      {
                        "assignments": [
                          16542
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16542,
                            "name": "x",
                            "nodeType": "VariableDeclaration",
                            "scope": 16574,
                            "src": "13920:8:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 16541,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "13920:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16551,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 16550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 16544,
                                  "name": "MAX_DURATION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15604,
                                  "src": "13938:12:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16545,
                                  "name": "remainingTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16528,
                                  "src": "13953:13:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13938:28:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 16543,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13931:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint96_$",
                                "typeString": "type(uint96)"
                              },
                              "typeName": "uint96"
                            },
                            "id": 16547,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13931:36:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 16548,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13971:6:60",
                                "subdenomination": "days",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_86400_by_1",
                                  "typeString": "int_const 86400"
                                },
                                "value": "1"
                              }
                            ],
                            "id": 16549,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "13970:8:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_86400_by_1",
                              "typeString": "int_const 86400"
                            }
                          },
                          "src": "13931:47:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13920:58:60"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16552,
                            "name": "weight",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16518,
                            "src": "14050:6:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 16554,
                                "name": "WEIGHT_FACTOR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15601,
                                "src": "14069:13:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "id": 16569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      "id": 16558,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 16556,
                                        "name": "MAX_VOTING_WEIGHT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15598,
                                        "src": "14098:17:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 16557,
                                        "name": "WEIGHT_FACTOR",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15601,
                                        "src": "14118:13:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "src": "14098:33:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 16560,
                                          "name": "MAX_DURATION_POW_2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15609,
                                          "src": "14143:18:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint96",
                                            "typeString": "uint96"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint96",
                                            "typeString": "uint96"
                                          },
                                          "id": 16563,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 16561,
                                            "name": "x",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16542,
                                            "src": "14163:1:60",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 16562,
                                            "name": "x",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16542,
                                            "src": "14167:1:60",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            }
                                          },
                                          "src": "14163:5:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint96",
                                            "typeString": "uint96"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "756e646572666c6f77206f6e207765696768742063616c63756c6174696f6e",
                                          "id": 16564,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "14170:33:60",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_f8d71a7b397940f754e2731db49213d0615b7a6592729ef983b55dba4f3bdaf6",
                                            "typeString": "literal_string \"underflow on weight calculation\""
                                          },
                                          "value": "underflow on weight calculation"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint96",
                                            "typeString": "uint96"
                                          },
                                          {
                                            "typeIdentifier": "t_uint96",
                                            "typeString": "uint96"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_f8d71a7b397940f754e2731db49213d0615b7a6592729ef983b55dba4f3bdaf6",
                                            "typeString": "literal_string \"underflow on weight calculation\""
                                          }
                                        ],
                                        "id": 16559,
                                        "name": "sub96",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13895,
                                        "src": "14137:5:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                          "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                        }
                                      },
                                      "id": 16565,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14137:67:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "6d756c7469706c69636174696f6e206f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e",
                                      "id": 16566,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14210:47:60",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_4c63bab6aabd6f6cf8b84dd02effb296042f2a701fe36a4c7c6096dbb0bd4d1c",
                                        "typeString": "literal_string \"multiplication overflow on weight computation\""
                                      },
                                      "value": "multiplication overflow on weight computation"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_4c63bab6aabd6f6cf8b84dd02effb296042f2a701fe36a4c7c6096dbb0bd4d1c",
                                        "typeString": "literal_string \"multiplication overflow on weight computation\""
                                      }
                                    ],
                                    "id": 16555,
                                    "name": "mul96",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13931,
                                    "src": "14087:5:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                      "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                                    }
                                  },
                                  "id": 16567,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14087:175:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16568,
                                  "name": "MAX_DURATION_POW_2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15609,
                                  "src": "14265:18:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "14087:196:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "6f766572666c6f77206f6e2077656967687420636f6d7075746174696f6e",
                                "id": 16570,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14288:32:60",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_1a2ecc2c4fe3ca161cc47ede0f59c69d9473df2afcb51211e3c5341561d30099",
                                  "typeString": "literal_string \"overflow on weight computation\""
                                },
                                "value": "overflow on weight computation"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_1a2ecc2c4fe3ca161cc47ede0f59c69d9473df2afcb51211e3c5341561d30099",
                                  "typeString": "literal_string \"overflow on weight computation\""
                                }
                              ],
                              "id": 16553,
                              "name": "add96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13872,
                              "src": "14059:5:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$",
                                "typeString": "function (uint96,uint96,string memory) pure returns (uint96)"
                              }
                            },
                            "id": 16571,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14059:265:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "14050:274:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 16573,
                        "nodeType": "ExpressionStatement",
                        "src": "14050:274:60"
                      }
                    ]
                  },
                  "documentation": "@notice Compute the weight for a specific date.\n@param date The unlocking date.\n@param startDate We compute the weight for the tokens staked until 'date' on 'startDate'.\n",
                  "id": 16575,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "computeWeightByDate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16516,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16513,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 16575,
                        "src": "13527:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16512,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13527:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16515,
                        "name": "startDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 16575,
                        "src": "13541:17:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16514,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13541:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13526:33:60"
                  },
                  "returnParameters": {
                    "id": 16519,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16518,
                        "name": "weight",
                        "nodeType": "VariableDeclaration",
                        "scope": 16575,
                        "src": "13581:13:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 16517,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "13581:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13580:15:60"
                  },
                  "scope": 16683,
                  "src": "13498:830:60",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16606,
                    "nodeType": "Block",
                    "src": "14761:477:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16583,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16577,
                                "src": "14773:9:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16584,
                                "name": "kickoffTS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15620,
                                "src": "14786:9:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14773:22:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "57656967687465645374616b696e673a3a74696d657374616d70546f4c6f636b446174653a2074696d657374616d70206c696573206265666f726520636f6e7472616374206372656174696f6e",
                              "id": 16586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14797:79:60",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3c64e6c67c710e2cedf4abed04724a645a9490ddee656db7aa41ca3ab08635a3",
                                "typeString": "literal_string \"WeightedStaking::timestampToLockDate: timestamp lies before contract creation\""
                              },
                              "value": "WeightedStaking::timestampToLockDate: timestamp lies before contract creation"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3c64e6c67c710e2cedf4abed04724a645a9490ddee656db7aa41ca3ab08635a3",
                                "typeString": "literal_string \"WeightedStaking::timestampToLockDate: timestamp lies before contract creation\""
                              }
                            ],
                            "id": 16582,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "14765:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14765:112:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16588,
                        "nodeType": "ExpressionStatement",
                        "src": "14765:112:60"
                      },
                      {
                        "assignments": [
                          16590
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16590,
                            "name": "periodFromKickoff",
                            "nodeType": "VariableDeclaration",
                            "scope": 16606,
                            "src": "15115:25:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16589,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15115:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16597,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16593,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 16591,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16577,
                                  "src": "15144:9:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16592,
                                  "name": "kickoffTS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15620,
                                  "src": "15156:9:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15144:21:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 16594,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "15143:23:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16595,
                            "name": "TWO_WEEKS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15595,
                            "src": "15169:9:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15143:35:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15115:63:60"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16598,
                            "name": "lockDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16580,
                            "src": "15182:8:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16603,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16599,
                                "name": "periodFromKickoff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16590,
                                "src": "15193:17:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16600,
                                "name": "TWO_WEEKS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15595,
                                "src": "15213:9:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15193:29:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 16602,
                              "name": "kickoffTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15620,
                              "src": "15225:9:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15193:41:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15182:52:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16605,
                        "nodeType": "ExpressionStatement",
                        "src": "15182:52:60"
                      }
                    ]
                  },
                  "documentation": "@notice Unstaking is possible every 2 weeks only. This means, to\ncalculate the key value for the staking checkpoints, we need to\nmap the intended timestamp to the closest available date.\n@param timestamp The unlocking timestamp.\n@return The actual unlocking date (might be up to 2 weeks shorter than intended).\n",
                  "id": 16607,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "timestampToLockDate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16578,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16577,
                        "name": "timestamp",
                        "nodeType": "VariableDeclaration",
                        "scope": 16607,
                        "src": "14703:17:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16576,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14703:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14702:19:60"
                  },
                  "returnParameters": {
                    "id": 16581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16580,
                        "name": "lockDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 16607,
                        "src": "14743:16:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14743:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14742:18:60"
                  },
                  "scope": 16683,
                  "src": "14674:564:60",
                  "stateMutability": "view",
                  "superFunction": 13772,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16633,
                    "nodeType": "Block",
                    "src": "15317:264:60",
                    "statements": [
                      {
                        "assignments": [
                          16615
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16615,
                            "name": "adjustedDate",
                            "nodeType": "VariableDeclaration",
                            "scope": 16633,
                            "src": "15321:20:60",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16614,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15321:7:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16619,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 16617,
                              "name": "date",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16609,
                              "src": "15364:4:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16616,
                            "name": "timestampToLockDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16607,
                            "src": "15344:19:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 16618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15344:25:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15321:48:60"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16620,
                            "name": "adjustedDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16615,
                            "src": "15500:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16621,
                            "name": "date",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16609,
                            "src": "15516:4:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15500:20:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 16630,
                        "nodeType": "IfStatement",
                        "src": "15496:67:60",
                        "trueBody": {
                          "id": 16629,
                          "nodeType": "Block",
                          "src": "15522:41:60",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 16627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 16623,
                                  "name": "date",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16609,
                                  "src": "15527:4:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16626,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 16624,
                                    "name": "adjustedDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16615,
                                    "src": "15534:12:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16625,
                                    "name": "TWO_WEEKS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15595,
                                    "src": "15549:9:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15534:24:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15527:31:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16628,
                              "nodeType": "ExpressionStatement",
                              "src": "15527:31:60"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16631,
                          "name": "date",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16609,
                          "src": "15573:4:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 16613,
                        "id": 16632,
                        "nodeType": "Return",
                        "src": "15566:11:60"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 16634,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_adjustDateForOrigin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16609,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 16634,
                        "src": "15271:12:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16608,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15271:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15270:14:60"
                  },
                  "returnParameters": {
                    "id": 16613,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16612,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 16634,
                        "src": "15308:7:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16611,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15308:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15307:9:60"
                  },
                  "scope": 16683,
                  "src": "15241:340:60",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16651,
                    "nodeType": "Block",
                    "src": "15748:56:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 16641,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15706,
                              "src": "15752:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 16643,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 16642,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16636,
                              "src": "15759:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15752:14:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 16644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15769:4:60",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "15752:21:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16646,
                        "nodeType": "ExpressionStatement",
                        "src": "15752:21:60"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 16648,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16636,
                              "src": "15793:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 16647,
                            "name": "AdminAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13187,
                            "src": "15782:10:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 16649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15782:18:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16650,
                        "nodeType": "EmitStatement",
                        "src": "15777:23:60"
                      }
                    ]
                  },
                  "documentation": "@notice Add account to ACL.\n@param _admin The addresses of the account to grant permissions.\n",
                  "id": 16652,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 16639,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 16638,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "15738:9:60",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "15738:9:60"
                    }
                  ],
                  "name": "addAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16637,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16636,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 16652,
                        "src": "15715:14:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16635,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15715:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15714:16:60"
                  },
                  "returnParameters": {
                    "id": 16640,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15748:0:60"
                  },
                  "scope": 16683,
                  "src": "15697:107:60",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16669,
                    "nodeType": "Block",
                    "src": "15980:59:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 16659,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15706,
                              "src": "15984:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 16661,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 16660,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16654,
                              "src": "15991:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15984:14:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 16662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16001:5:60",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "15984:22:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16664,
                        "nodeType": "ExpressionStatement",
                        "src": "15984:22:60"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 16666,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16654,
                              "src": "16028:6:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 16665,
                            "name": "AdminRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13191,
                            "src": "16015:12:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 16667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16015:20:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16668,
                        "nodeType": "EmitStatement",
                        "src": "16010:25:60"
                      }
                    ]
                  },
                  "documentation": "@notice Remove account from ACL.\n@param _admin The addresses of the account to revoke permissions.\n",
                  "id": 16670,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 16657,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 16656,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "15970:9:60",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "15970:9:60"
                    }
                  ],
                  "name": "removeAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16655,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16654,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 16670,
                        "src": "15947:14:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16653,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15947:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15946:16:60"
                  },
                  "returnParameters": {
                    "id": 16658,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15980:0:60"
                  },
                  "scope": 16683,
                  "src": "15926:113:60",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16681,
                    "nodeType": "Block",
                    "src": "16192:63:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16677,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "16240:3:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 16678,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "16240:10:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 16675,
                              "name": "vestingRegistryLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15712,
                              "src": "16203:20:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                                "typeString": "contract VestingRegistryLogic"
                              }
                            },
                            "id": 16676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isVestingAdress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24481,
                            "src": "16203:36:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view external returns (bool)"
                            }
                          },
                          "id": 16679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16203:48:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16674,
                        "id": 16680,
                        "nodeType": "Return",
                        "src": "16196:55:60"
                      }
                    ]
                  },
                  "documentation": "@notice Return flag whether message sender is a registered vesting contract.",
                  "id": 16682,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isVestingContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16671,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16160:2:60"
                  },
                  "returnParameters": {
                    "id": 16674,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16673,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 16682,
                        "src": "16186:4:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16672,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16186:4:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16185:6:60"
                  },
                  "scope": 16683,
                  "src": "16133:122:60",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 16684,
              "src": "592:15665:60"
            }
          ],
          "src": "0:16258:60"
        },
        "id": 60
      },
      "contracts/governance/StakingRewards/StakingRewards.sol": {
        "ast": {
          "absolutePath": "contracts/governance/StakingRewards/StakingRewards.sol",
          "exportedSymbols": {
            "StakingRewards": [
              17138
            ]
          },
          "id": 17139,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 16685,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:61"
            },
            {
              "absolutePath": "contracts/governance/StakingRewards/StakingRewardsStorage.sol",
              "file": "./StakingRewardsStorage.sol",
              "id": 16686,
              "nodeType": "ImportDirective",
              "scope": 17139,
              "sourceUnit": 17185,
              "src": "26:37:61",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Initializable.sol",
              "file": "../../openzeppelin/Initializable.sol",
              "id": 16687,
              "nodeType": "ImportDirective",
              "scope": 17139,
              "sourceUnit": 41700,
              "src": "64:46:61",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../../openzeppelin/SafeMath.sol",
              "id": 16688,
              "nodeType": "ImportDirective",
              "scope": 17139,
              "sourceUnit": 42310,
              "src": "111:41:61",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Address.sol",
              "file": "../../openzeppelin/Address.sol",
              "id": 16689,
              "nodeType": "ImportDirective",
              "scope": 17139,
              "sourceUnit": 41099,
              "src": "153:40:61",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 16690,
                    "name": "StakingRewardsStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17184,
                    "src": "866:21:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_StakingRewardsStorage_$17184",
                      "typeString": "contract StakingRewardsStorage"
                    }
                  },
                  "id": 16691,
                  "nodeType": "InheritanceSpecifier",
                  "src": "866:21:61"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 16692,
                    "name": "Initializable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41699,
                    "src": "889:13:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Initializable_$41699",
                      "typeString": "contract Initializable"
                    }
                  },
                  "id": 16693,
                  "nodeType": "InheritanceSpecifier",
                  "src": "889:13:61"
                }
              ],
              "contractDependencies": [
                17184,
                41125,
                41699,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Staking Rewards Contract.\n@notice This is a trial incentive program.\nIn this, the SOV emitted and becoming liquid from the Adoption Fund could be utilized\nto offset the higher APY's offered for Liquidity Mining events.\nVesting contract stakes are excluded from these rewards.\nOnly wallets which have staked previously liquid SOV are eligible for these rewards.\nTokenholders who stake their SOV receive staking rewards, a pro-rata share\nof the revenue that the platform generates from various transaction fees\nplus revenues from stakers who have a portion of their SOV slashed for\nearly unstaking.\n",
              "fullyImplemented": true,
              "id": 17138,
              "linearizedBaseContracts": [
                17138,
                41699,
                17184,
                41798,
                41125
              ],
              "name": "StakingRewards",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 16696,
                  "libraryName": {
                    "contractScope": null,
                    "id": 16694,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "912:8:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "906:27:61",
                  "typeName": {
                    "id": 16695,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "925:7:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when SOV is withdrawn\n @param receiver The address which recieves the SOV\n @param amount The amount withdrawn from the Smart Contract",
                  "id": 16702,
                  "name": "RewardWithdrawn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 16701,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16698,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 16702,
                        "src": "1121:24:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16697,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1121:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16700,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 16702,
                        "src": "1147:14:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16699,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1147:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1120:42:61"
                  },
                  "src": "1099:64:61"
                },
                {
                  "body": {
                    "id": 16759,
                    "nodeType": "Block",
                    "src": "1498:303:61",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 16718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16714,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16704,
                                "src": "1510:4:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 16716,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1526:1:61",
                                    "subdenomination": null,
                                    "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": 16715,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1518:7:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 16717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1518:10:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1510:18:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c696420534f5620416464726573732e",
                              "id": 16719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1530:22:61",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f5840b4863e6ab75c00993b856f6487e94b357014931d34497992ecc40c5bcf3",
                                "typeString": "literal_string \"Invalid SOV Address.\""
                              },
                              "value": "Invalid SOV Address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f5840b4863e6ab75c00993b856f6487e94b357014931d34497992ecc40c5bcf3",
                                "typeString": "literal_string \"Invalid SOV Address.\""
                              }
                            ],
                            "id": 16713,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1502:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1502:51:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16721,
                        "nodeType": "ExpressionStatement",
                        "src": "1502:51:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 16725,
                                  "name": "_SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16704,
                                  "src": "1584:4:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 16723,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "1565:7:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 16724,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "1565:18:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 16726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1565:24:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5f534f56206e6f74206120636f6e7472616374",
                              "id": 16727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1591:21:61",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a6e297f1894b7b67a2810b8880591645472f5dabace0fa51fda5469df6561455",
                                "typeString": "literal_string \"_SOV not a contract\""
                              },
                              "value": "_SOV not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a6e297f1894b7b67a2810b8880591645472f5dabace0fa51fda5469df6561455",
                                "typeString": "literal_string \"_SOV not a contract\""
                              }
                            ],
                            "id": 16722,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1557:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1557:56:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16729,
                        "nodeType": "ExpressionStatement",
                        "src": "1557:56:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16730,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17156,
                            "src": "1617:3:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 16732,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16704,
                                "src": "1630:4:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 16731,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24699,
                              "src": "1623:6:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 16733,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1623:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "1617:18:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 16735,
                        "nodeType": "ExpressionStatement",
                        "src": "1617:18:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16736,
                            "name": "staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17158,
                            "src": "1639:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IStaking_$13773",
                              "typeString": "contract IStaking"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 16737,
                            "name": "_staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16706,
                            "src": "1649:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IStaking_$13773",
                              "typeString": "contract IStaking"
                            }
                          },
                          "src": "1639:18:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IStaking_$13773",
                            "typeString": "contract IStaking"
                          }
                        },
                        "id": 16739,
                        "nodeType": "ExpressionStatement",
                        "src": "1639:18:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16740,
                            "name": "startTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17171,
                            "src": "1661:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 16743,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "1701:5:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 16744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1701:15:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 16741,
                                "name": "staking",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17158,
                                "src": "1673:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IStaking_$13773",
                                  "typeString": "contract IStaking"
                                }
                              },
                              "id": 16742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestampToLockDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13772,
                              "src": "1673:27:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view external returns (uint256)"
                              }
                            },
                            "id": 16745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1673:44:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1661:56:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16747,
                        "nodeType": "ExpressionStatement",
                        "src": "1661:56:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "3135",
                                "id": 16749,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1736:2:61",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_15_by_1",
                                  "typeString": "int_const 15"
                                },
                                "value": "15"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16750,
                                "name": "TWO_WEEKS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17161,
                                "src": "1741:9:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1736:14:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16748,
                            "name": "setMaxDuration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16790,
                            "src": "1721:14:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 16752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1721:30:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16753,
                        "nodeType": "ExpressionStatement",
                        "src": "1721:30:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16754,
                            "name": "deploymentBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17183,
                            "src": "1755:15:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 16755,
                              "name": "_getCurrentBlockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17137,
                              "src": "1773:22:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 16756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1773:24:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1755:42:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16758,
                        "nodeType": "ExpressionStatement",
                        "src": "1755:42:61"
                      }
                    ]
                  },
                  "documentation": "@notice Replacement of constructor by initialize function for Upgradable Contracts\nThis function will be called only once by the owner.\n@param _SOV SOV token address\n@param _staking StakingProxy address should be passed\n",
                  "id": 16760,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 16709,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 16708,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1476:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1476:9:61"
                    },
                    {
                      "arguments": null,
                      "id": 16711,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 16710,
                        "name": "initializer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41698,
                        "src": "1486:11:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1486:11:61"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16707,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16704,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 16760,
                        "src": "1434:12:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16703,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1434:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16706,
                        "name": "_staking",
                        "nodeType": "VariableDeclaration",
                        "scope": 16760,
                        "src": "1448:17:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IStaking_$13773",
                          "typeString": "contract IStaking"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16705,
                          "name": "IStaking",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 13773,
                          "src": "1448:8:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IStaking_$13773",
                            "typeString": "contract IStaking"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1433:33:61"
                  },
                  "returnParameters": {
                    "id": 16712,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1498:0:61"
                  },
                  "scope": 17138,
                  "src": "1414:387:61",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 16777,
                    "nodeType": "Block",
                    "src": "2065:90:61",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16766,
                                "name": "stopBlock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17173,
                                "src": "2077:9:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2090:1:61",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2077:14:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416c72656164792073746f70706564",
                              "id": 16769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2093:17:61",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f523577c71b3e2c227df5c77bdc3e73dcc4f3dd6d6e3bb3821ba6d15f2b2287a",
                                "typeString": "literal_string \"Already stopped\""
                              },
                              "value": "Already stopped"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f523577c71b3e2c227df5c77bdc3e73dcc4f3dd6d6e3bb3821ba6d15f2b2287a",
                                "typeString": "literal_string \"Already stopped\""
                              }
                            ],
                            "id": 16765,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2069:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2069:42:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16771,
                        "nodeType": "ExpressionStatement",
                        "src": "2069:42:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16772,
                            "name": "stopBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17173,
                            "src": "2115:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 16773,
                              "name": "_getCurrentBlockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17137,
                              "src": "2127:22:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 16774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2127:24:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2115:36:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16776,
                        "nodeType": "ExpressionStatement",
                        "src": "2115:36:61"
                      }
                    ]
                  },
                  "documentation": "@notice Stops the current rewards program.\n@dev All stakes existing on the contract at the point in time of\ncancellation continue accruing rewards until the end of the staking\nperiod being rewarded\n",
                  "id": 16778,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 16763,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 16762,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2055:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2055:9:61"
                    }
                  ],
                  "name": "stop",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16761,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2043:2:61"
                  },
                  "returnParameters": {
                    "id": 16764,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2065:0:61"
                  },
                  "scope": 17138,
                  "src": "2030:125:61",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 16789,
                    "nodeType": "Block",
                    "src": "2670:31:61",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16785,
                            "name": "maxDuration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17169,
                            "src": "2674:11:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 16786,
                            "name": "_duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16780,
                            "src": "2688:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2674:23:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16788,
                        "nodeType": "ExpressionStatement",
                        "src": "2674:23:61"
                      }
                    ]
                  },
                  "documentation": "@notice Sets the max duration\n@dev Rewards can be collected for a maximum duration at a time. This\nis to avoid Block Gas Limit failures. Setting it zero would mean that it will loop\nthrough the entire duration since the start of rewards program.\nIt should ideally be set to a value, for which the rewards can be easily processed.\n@param _duration Max duration for which rewards can be collected at a go (in seconds)\n",
                  "id": 16790,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 16783,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 16782,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2660:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2660:9:61"
                    }
                  ],
                  "name": "setMaxDuration",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16781,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16780,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 16790,
                        "src": "2634:17:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16779,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2634:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2633:19:61"
                  },
                  "returnParameters": {
                    "id": 16784,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2670:0:61"
                  },
                  "scope": 17138,
                  "src": "2610:91:61",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16831,
                    "nodeType": "Block",
                    "src": "3109:249:61",
                    "statements": [
                      {
                        "assignments": [
                          16794
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16794,
                            "name": "withdrawalTime",
                            "nodeType": "VariableDeclaration",
                            "scope": 16831,
                            "src": "3113:22:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16793,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3113:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16795,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3113:22:61"
                      },
                      {
                        "assignments": [
                          16797
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16797,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 16831,
                            "src": "3139:14:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16796,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3139:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16798,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3139:14:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 16799,
                                "name": "withdrawalTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16794,
                                "src": "3158:14:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 16800,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16797,
                                "src": "3174:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 16801,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "3157:24:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 16803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3207:4:61",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 16802,
                              "name": "getStakerCurrentReward",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17128,
                              "src": "3184:22:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bool_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (bool) view returns (uint256,uint256)"
                              }
                            },
                            "id": 16804,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3184:28:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "3157:55:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16806,
                        "nodeType": "ExpressionStatement",
                        "src": "3157:55:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 16814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 16808,
                                  "name": "withdrawalTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16794,
                                  "src": "3224:14:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 16809,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3241:1:61",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3224:18:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 16811,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16797,
                                  "src": "3246:6:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 16812,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3255:1:61",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3246:10:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3224:32:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6e6f2076616c696420726577617264",
                              "id": 16815,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3258:17:61",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fef03aebb7111eebef5324da311d0930008609e5c20b43d0e057c5131e460983",
                                "typeString": "literal_string \"no valid reward\""
                              },
                              "value": "no valid reward"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fef03aebb7111eebef5324da311d0930008609e5c20b43d0e057c5131e460983",
                                "typeString": "literal_string \"no valid reward\""
                              }
                            ],
                            "id": 16807,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3216:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3216:60:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16817,
                        "nodeType": "ExpressionStatement",
                        "src": "3216:60:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 16818,
                              "name": "withdrawals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17177,
                              "src": "3280:11:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 16821,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16819,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "3292:3:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 16820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3292:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3280:23:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 16822,
                            "name": "withdrawalTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16794,
                            "src": "3306:14:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3280:40:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16824,
                        "nodeType": "ExpressionStatement",
                        "src": "3280:40:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16826,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "3335:3:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 16827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3335:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 16828,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16797,
                              "src": "3347:6:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16825,
                            "name": "_payReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16912,
                            "src": "3324:10:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 16829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3324:30:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16830,
                        "nodeType": "ExpressionStatement",
                        "src": "3324:30:61"
                      }
                    ]
                  },
                  "documentation": "@notice Collect rewards\n@dev User calls this function to collect SOV staking rewards as per the SIP-0024 program.\nThe weighted stake is calculated using getPriorWeightedStake. Block number sent to the functon\nmust be a finalised block, hence we deduct 1 from the current block. User is only allowed to withdraw\nafter intervals of 14 days.\n",
                  "id": 16832,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collectReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16791,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3097:2:61"
                  },
                  "returnParameters": {
                    "id": 16792,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3109:0:61"
                  },
                  "scope": 17138,
                  "src": "3075:283:61",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 16875,
                    "nodeType": "Block",
                    "src": "3869:293:61",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 16843,
                            "name": "weightedStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16841,
                            "src": "3873:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 16846,
                                "name": "_staker",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16834,
                                "src": "3919:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 16847,
                                "name": "_block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16836,
                                "src": "3928:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 16848,
                                "name": "_date",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16838,
                                "src": "3936:5:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 16844,
                                "name": "staking",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17158,
                                "src": "3889:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IStaking_$13773",
                                  "typeString": "contract IStaking"
                                }
                              },
                              "id": 16845,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getPriorWeightedStake",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13765,
                              "src": "3889:29:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                                "typeString": "function (address,uint256,uint256) view external returns (uint96)"
                              }
                            },
                            "id": 16849,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3889:53:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "3873:69:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16851,
                        "nodeType": "ExpressionStatement",
                        "src": "3873:69:61"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16852,
                            "name": "stopBlock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17173,
                            "src": "3950:9:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3962:1:61",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3950:13:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 16874,
                        "nodeType": "IfStatement",
                        "src": "3946:213:61",
                        "trueBody": {
                          "id": 16873,
                          "nodeType": "Block",
                          "src": "3965:194:61",
                          "statements": [
                            {
                              "assignments": [
                                16856
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16856,
                                  "name": "previousWeightedStake",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16873,
                                  "src": "3970:29:61",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 16855,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3970:7:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16863,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 16859,
                                    "name": "_staker",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16834,
                                    "src": "4032:7:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 16860,
                                    "name": "stopBlock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17173,
                                    "src": "4041:9:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 16861,
                                    "name": "_date",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16838,
                                    "src": "4052:5:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16857,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17158,
                                    "src": "4002:7:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IStaking_$13773",
                                      "typeString": "contract IStaking"
                                    }
                                  },
                                  "id": 16858,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getPriorWeightedStake",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13765,
                                  "src": "4002:29:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                                    "typeString": "function (address,uint256,uint256) view external returns (uint96)"
                                  }
                                },
                                "id": 16862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4002:56:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3970:88:61"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16866,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 16864,
                                  "name": "previousWeightedStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16856,
                                  "src": "4067:21:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16865,
                                  "name": "weightedStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16841,
                                  "src": "4091:13:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4067:37:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 16872,
                              "nodeType": "IfStatement",
                              "src": "4063:92:61",
                              "trueBody": {
                                "id": 16871,
                                "nodeType": "Block",
                                "src": "4106:49:61",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16869,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 16867,
                                        "name": "weightedStake",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16841,
                                        "src": "4112:13:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 16868,
                                        "name": "previousWeightedStake",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16856,
                                        "src": "4128:21:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4112:37:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 16870,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4112:37:61"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to calculate weighted stake\n@dev If the rewards program is stopped, the user will still continue to\nearn till the end of staking period based on the stop block.\n@param _staker Staker address\n@param _block Last finalised block\n@param _date The date to compute prior weighted stakes\n@return The weighted stake\n",
                  "id": 16876,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_computeRewardForDate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16839,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16834,
                        "name": "_staker",
                        "nodeType": "VariableDeclaration",
                        "scope": 16876,
                        "src": "3769:15:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16833,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3769:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16836,
                        "name": "_block",
                        "nodeType": "VariableDeclaration",
                        "scope": 16876,
                        "src": "3788:14:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16835,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3788:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16838,
                        "name": "_date",
                        "nodeType": "VariableDeclaration",
                        "scope": 16876,
                        "src": "3806:13:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16837,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3806:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3765:57:61"
                  },
                  "returnParameters": {
                    "id": 16842,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16841,
                        "name": "weightedStake",
                        "nodeType": "VariableDeclaration",
                        "scope": 16876,
                        "src": "3846:21:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16840,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3846:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3845:23:61"
                  },
                  "scope": 17138,
                  "src": "3735:427:61",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16911,
                    "nodeType": "Block",
                    "src": "4465:190:61",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 16887,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 45214,
                                        "src": "4499:4:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_StakingRewards_$17138",
                                          "typeString": "contract StakingRewards"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_StakingRewards_$17138",
                                          "typeString": "contract StakingRewards"
                                        }
                                      ],
                                      "id": 16886,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4491:7:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 16888,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4491:13:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16884,
                                    "name": "SOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17156,
                                    "src": "4477:3:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 16885,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 24644,
                                  "src": "4477:13:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 16889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4477:28:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16890,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16880,
                                "src": "4509:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4477:38:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6e6f7420656e6f7567682066756e647320746f207265776172642075736572",
                              "id": 16892,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4517:33:61",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_df997100df7566e230f2b280dae6dd92c20258b919e9a7627bcb2da6a1a5556b",
                                "typeString": "literal_string \"not enough funds to reward user\""
                              },
                              "value": "not enough funds to reward user"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_df997100df7566e230f2b280dae6dd92c20258b919e9a7627bcb2da6a1a5556b",
                                "typeString": "literal_string \"not enough funds to reward user\""
                              }
                            ],
                            "id": 16883,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4469:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4469:82:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16894,
                        "nodeType": "ExpressionStatement",
                        "src": "4469:82:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 16895,
                              "name": "claimedBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17181,
                              "src": "4555:15:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 16897,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 16896,
                              "name": "_staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16878,
                              "src": "4571:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4555:24:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 16902,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16880,
                                "src": "4611:6:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 16898,
                                  "name": "claimedBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17181,
                                  "src": "4582:15:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 16900,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 16899,
                                  "name": "_staker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16878,
                                  "src": "4598:7:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4582:24:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16901,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "4582:28:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 16903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4582:36:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4555:63:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16905,
                        "nodeType": "ExpressionStatement",
                        "src": "4555:63:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 16907,
                              "name": "_staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16878,
                              "src": "4635:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 16908,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16880,
                              "src": "4644:6:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16906,
                            "name": "_transferSOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16963,
                            "src": "4622:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 16909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4622:29:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16910,
                        "nodeType": "ExpressionStatement",
                        "src": "4622:29:61"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to pay rewards\n@dev Base rate is annual, but we pay interest for 14 days,\nwhich is 1/26 of one staking year (1092 days)\n@param _staker User address\n@param amount the reward amount\n",
                  "id": 16912,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_payReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16878,
                        "name": "_staker",
                        "nodeType": "VariableDeclaration",
                        "scope": 16912,
                        "src": "4423:15:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16877,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4423:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16880,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 16912,
                        "src": "4440:14:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16879,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4440:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4422:33:61"
                  },
                  "returnParameters": {
                    "id": 16882,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4465:0:61"
                  },
                  "scope": 17138,
                  "src": "4403:252:61",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16933,
                    "nodeType": "Block",
                    "src": "4887:93:61",
                    "statements": [
                      {
                        "assignments": [
                          16920
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16920,
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "scope": 16933,
                            "src": "4891:13:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16919,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4891:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16927,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 16924,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45214,
                                  "src": "4929:4:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_StakingRewards_$17138",
                                    "typeString": "contract StakingRewards"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_StakingRewards_$17138",
                                    "typeString": "contract StakingRewards"
                                  }
                                ],
                                "id": 16923,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4921:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 16925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4921:13:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 16921,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17156,
                              "src": "4907:3:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 16922,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24644,
                            "src": "4907:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 16926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4907:28:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4891:44:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 16929,
                              "name": "_receiverAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16914,
                              "src": "4952:16:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 16930,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16920,
                              "src": "4970:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16928,
                            "name": "_transferSOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16963,
                            "src": "4939:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 16931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4939:37:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16932,
                        "nodeType": "ExpressionStatement",
                        "src": "4939:37:61"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraws all token from the contract by Multisig.\n@param _receiverAddress The address where the tokens has to be transferred.",
                  "id": 16934,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 16917,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 16916,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "4877:9:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4877:9:61"
                    }
                  ],
                  "name": "withdrawTokensByOwner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16915,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16914,
                        "name": "_receiverAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 16934,
                        "src": "4842:24:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16913,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4842:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4841:26:61"
                  },
                  "returnParameters": {
                    "id": 16918,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4887:0:61"
                  },
                  "scope": 17138,
                  "src": "4811:169:61",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 16962,
                    "nodeType": "Block",
                    "src": "5211:155:61",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16942,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16938,
                                "src": "5223:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16943,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5234:1:61",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5223:12:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 16945,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5237:16:61",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 16941,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5215:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5215:39:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16947,
                        "nodeType": "ExpressionStatement",
                        "src": "5215:39:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 16951,
                                  "name": "_receiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16936,
                                  "src": "5279:9:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 16952,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16938,
                                  "src": "5290:7:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 16949,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17156,
                                  "src": "5266:3:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 16950,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24671,
                                "src": "5266:12:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 16953,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5266:32:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7472616e73666572206661696c6564",
                              "id": 16954,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5300:17:61",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_df1797085e2da014ef9392ee25ab0802d6ce132451397172f17fd86110e2e02b",
                                "typeString": "literal_string \"transfer failed\""
                              },
                              "value": "transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_df1797085e2da014ef9392ee25ab0802d6ce132451397172f17fd86110e2e02b",
                                "typeString": "literal_string \"transfer failed\""
                              }
                            ],
                            "id": 16948,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5258:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16955,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5258:60:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16956,
                        "nodeType": "ExpressionStatement",
                        "src": "5258:60:61"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 16958,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16936,
                              "src": "5343:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 16959,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16938,
                              "src": "5354:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16957,
                            "name": "RewardWithdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16702,
                            "src": "5327:15:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 16960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5327:35:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16961,
                        "nodeType": "EmitStatement",
                        "src": "5322:40:61"
                      }
                    ]
                  },
                  "documentation": "@notice transfers SOV tokens to given address\n@param _receiver the address of the SOV receiver\n@param _amount the amount to be transferred",
                  "id": 16963,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16939,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16936,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 16963,
                        "src": "5166:17:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16935,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5166:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16938,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 16963,
                        "src": "5185:15:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16937,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5185:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5165:36:61"
                  },
                  "returnParameters": {
                    "id": 16940,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5211:0:61"
                  },
                  "scope": 17138,
                  "src": "5144:222:61",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17127,
                    "nodeType": "Block",
                    "src": "5871:1205:61",
                    "statements": [
                      {
                        "assignments": [
                          16973
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16973,
                            "name": "weightedStake",
                            "nodeType": "VariableDeclaration",
                            "scope": 17127,
                            "src": "5875:21:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16972,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5875:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16974,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5875:21:61"
                      },
                      {
                        "assignments": [
                          16976
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16976,
                            "name": "lastFinalisedBlock",
                            "nodeType": "VariableDeclaration",
                            "scope": 17127,
                            "src": "5900:26:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16975,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5900:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16981,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 16977,
                              "name": "_getCurrentBlockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17137,
                              "src": "5929:22:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 16978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5929:24:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 16979,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5956:1:61",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "5929:28:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5900:57:61"
                      },
                      {
                        "assignments": [
                          16983
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16983,
                            "name": "currentTS",
                            "nodeType": "VariableDeclaration",
                            "scope": 17127,
                            "src": "5961:17:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16982,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5961:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16986,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 16984,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44984,
                            "src": "5981:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 16985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5981:15:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5961:35:61"
                      },
                      {
                        "assignments": [
                          16988
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16988,
                            "name": "addedMaxDuration",
                            "nodeType": "VariableDeclaration",
                            "scope": 17127,
                            "src": "6000:24:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16987,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6000:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16989,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6000:24:61"
                      },
                      {
                        "assignments": [
                          16991
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16991,
                            "name": "duration",
                            "nodeType": "VariableDeclaration",
                            "scope": 17127,
                            "src": "6028:16:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16990,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6028:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16992,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6028:16:61"
                      },
                      {
                        "assignments": [
                          16994
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16994,
                            "name": "referenceBlock",
                            "nodeType": "VariableDeclaration",
                            "scope": 17127,
                            "src": "6048:22:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16993,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6048:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16995,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6048:22:61"
                      },
                      {
                        "assignments": [
                          16997
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16997,
                            "name": "staker",
                            "nodeType": "VariableDeclaration",
                            "scope": 17127,
                            "src": "6074:14:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 16996,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6074:7:61",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17000,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 16998,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44994,
                            "src": "6091:3:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 16999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6091:10:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6074:27:61"
                      },
                      {
                        "assignments": [
                          17002
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17002,
                            "name": "lastWithdrawal",
                            "nodeType": "VariableDeclaration",
                            "scope": 17127,
                            "src": "6105:22:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17001,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6105:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17006,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 17003,
                            "name": "withdrawals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17177,
                            "src": "6130:11:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 17005,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 17004,
                            "name": "staker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16997,
                            "src": "6142:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6130:19:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6105:44:61"
                      },
                      {
                        "assignments": [
                          17008
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17008,
                            "name": "lastStakingInterval",
                            "nodeType": "VariableDeclaration",
                            "scope": 17127,
                            "src": "6154:27:61",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17007,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6154:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17013,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 17011,
                              "name": "currentTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16983,
                              "src": "6212:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 17009,
                              "name": "staking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17158,
                              "src": "6184:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IStaking_$13773",
                                "typeString": "contract IStaking"
                              }
                            },
                            "id": 17010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestampToLockDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13772,
                            "src": "6184:27:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view external returns (uint256)"
                            }
                          },
                          "id": 17012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6184:38:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6154:68:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17014,
                            "name": "lastWithdrawalInterval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16968,
                            "src": "6226:22:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 17015,
                                "name": "lastWithdrawal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17002,
                                "src": "6251:14:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6268:1:61",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6251:18:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 17019,
                              "name": "startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17171,
                              "src": "6289:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17020,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "6251:47:61",
                            "trueExpression": {
                              "argumentTypes": null,
                              "id": 17018,
                              "name": "lastWithdrawal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17002,
                              "src": "6272:14:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6226:72:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17022,
                        "nodeType": "ExpressionStatement",
                        "src": "6226:72:61"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17023,
                            "name": "lastStakingInterval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17008,
                            "src": "6306:19:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 17024,
                            "name": "lastWithdrawalInterval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16968,
                            "src": "6328:22:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6306:44:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17030,
                        "nodeType": "IfStatement",
                        "src": "6302:63:61",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6360:1:61",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6363:1:61",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 17028,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6359:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                              "typeString": "tuple(int_const 0,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 16971,
                          "id": 17029,
                          "nodeType": "Return",
                          "src": "6352:13:61"
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 17031,
                          "name": "considerMaxDuration",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16965,
                          "src": "6374:19:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 17056,
                          "nodeType": "Block",
                          "src": "6583:40:61",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 17054,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 17052,
                                  "name": "duration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16991,
                                  "src": "6588:8:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 17053,
                                  "name": "lastStakingInterval",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17008,
                                  "src": "6599:19:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6588:30:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17055,
                              "nodeType": "ExpressionStatement",
                              "src": "6588:30:61"
                            }
                          ]
                        },
                        "id": 17057,
                        "nodeType": "IfStatement",
                        "src": "6370:253:61",
                        "trueBody": {
                          "id": 17051,
                          "nodeType": "Block",
                          "src": "6395:182:61",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 17037,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 17032,
                                  "name": "addedMaxDuration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16988,
                                  "src": "6400:16:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17035,
                                      "name": "maxDuration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17169,
                                      "src": "6446:11:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17033,
                                      "name": "lastWithdrawalInterval",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16968,
                                      "src": "6419:22:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 17034,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "6419:26:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17036,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6419:39:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6400:58:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17038,
                              "nodeType": "ExpressionStatement",
                              "src": "6400:58:61"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 17049,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 17039,
                                  "name": "duration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16991,
                                  "src": "6463:8:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 17042,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 17040,
                                      "name": "addedMaxDuration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16988,
                                      "src": "6474:16:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 17041,
                                      "name": "currentTS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16983,
                                      "src": "6493:9:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6474:28:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "id": 17047,
                                    "name": "lastStakingInterval",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17008,
                                    "src": "6553:19:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 17048,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "6474:98:61",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 17045,
                                        "name": "addedMaxDuration",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16988,
                                        "src": "6533:16:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17043,
                                        "name": "staking",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17158,
                                        "src": "6505:7:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IStaking_$13773",
                                          "typeString": "contract IStaking"
                                        }
                                      },
                                      "id": 17044,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestampToLockDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 13772,
                                      "src": "6505:27:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256) view external returns (uint256)"
                                      }
                                    },
                                    "id": 17046,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6505:45:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6463:109:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17050,
                              "nodeType": "ExpressionStatement",
                              "src": "6463:109:61"
                            }
                          ]
                        }
                      },
                      {
                        "body": {
                          "id": 17103,
                          "nodeType": "Block",
                          "src": "6698:242:61",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 17082,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 17069,
                                  "name": "referenceBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16994,
                                  "src": "6703:14:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "3332",
                                              "id": 17078,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "6767:2:61",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_32_by_1",
                                                "typeString": "int_const 32"
                                              },
                                              "value": "32"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_32_by_1",
                                                "typeString": "int_const 32"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "components": [
                                                {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "id": 17074,
                                                      "name": "i",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 17059,
                                                      "src": "6759:1:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 17072,
                                                      "name": "currentTS",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 16983,
                                                      "src": "6745:9:61",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 17073,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sub",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 42092,
                                                    "src": "6745:13:61",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                  },
                                                  "id": 17075,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "6745:16:61",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 17076,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "6744:18:61",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 17077,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "div",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 42169,
                                            "src": "6744:22:61",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 17079,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6744:26:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 17080,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "6743:28:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17070,
                                      "name": "lastFinalisedBlock",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16976,
                                      "src": "6720:18:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 17071,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "6720:22:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17081,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6720:52:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6703:69:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17083,
                              "nodeType": "ExpressionStatement",
                              "src": "6703:69:61"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17086,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17084,
                                  "name": "referenceBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16994,
                                  "src": "6781:14:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 17085,
                                  "name": "deploymentBlock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17183,
                                  "src": "6798:15:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6781:32:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 17091,
                              "nodeType": "IfStatement",
                              "src": "6777:70:61",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17089,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 17087,
                                    "name": "referenceBlock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16994,
                                    "src": "6815:14:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "id": 17088,
                                    "name": "deploymentBlock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17183,
                                    "src": "6832:15:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6815:32:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 17090,
                                "nodeType": "ExpressionStatement",
                                "src": "6815:32:61"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 17101,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 17092,
                                  "name": "weightedStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16973,
                                  "src": "6852:13:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 17096,
                                          "name": "staker",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16997,
                                          "src": "6908:6:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 17097,
                                          "name": "referenceBlock",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16994,
                                          "src": "6916:14:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 17098,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17059,
                                          "src": "6932:1:61",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 17095,
                                        "name": "_computeRewardForDate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16876,
                                        "src": "6886:21:61",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (address,uint256,uint256) view returns (uint256)"
                                        }
                                      },
                                      "id": 17099,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6886:48:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17093,
                                      "name": "weightedStake",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16973,
                                      "src": "6868:13:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 17094,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "6868:17:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17100,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6868:67:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6852:83:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17102,
                              "nodeType": "ExpressionStatement",
                              "src": "6852:83:61"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17062,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17059,
                            "src": "6668:1:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 17063,
                            "name": "duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16991,
                            "src": "6672:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6668:12:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17104,
                        "initializationExpression": {
                          "assignments": [
                            17059
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 17059,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 17104,
                              "src": "6632:9:61",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 17058,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6632:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 17061,
                          "initialValue": {
                            "argumentTypes": null,
                            "id": 17060,
                            "name": "lastWithdrawalInterval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16968,
                            "src": "6644:22:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6632:34:61"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 17067,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 17065,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17059,
                              "src": "6682:1:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 17066,
                              "name": "TWO_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17161,
                              "src": "6687:9:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6682:14:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 17068,
                          "nodeType": "ExpressionStatement",
                          "src": "6682:14:61"
                        },
                        "nodeType": "ForStatement",
                        "src": "6627:313:61"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17105,
                            "name": "weightedStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16973,
                            "src": "6948:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 17106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6965:1:61",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6948:18:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17112,
                        "nodeType": "IfStatement",
                        "src": "6944:37:61",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17108,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6976:1:61",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6979:1:61",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 17110,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6975:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                              "typeString": "tuple(int_const 0,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 16971,
                          "id": 17111,
                          "nodeType": "Return",
                          "src": "6968:13:61"
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17113,
                            "name": "lastWithdrawalInterval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16968,
                            "src": "6985:22:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 17114,
                            "name": "duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16991,
                            "src": "7010:8:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6985:33:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17116,
                        "nodeType": "ExpressionStatement",
                        "src": "6985:33:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17117,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16970,
                            "src": "7022:6:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17123,
                                "name": "DIVISOR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17167,
                                "src": "7064:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17120,
                                    "name": "BASE_RATE",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17164,
                                    "src": "7049:9:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17118,
                                    "name": "weightedStake",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16973,
                                    "src": "7031:13:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 17119,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "7031:17:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 17121,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7031:28:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "7031:32:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 17124,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7031:41:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7022:50:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17126,
                        "nodeType": "ExpressionStatement",
                        "src": "7022:50:61"
                      }
                    ]
                  },
                  "documentation": "@notice Get staker's current accumulated reward\n@dev The collectReward() function internally calls this function to calculate reward amount\n@param considerMaxDuration True: Runs for the maximum duration - used in tx not to run out of gas\nFalse - to query total rewards\n@return The timestamp of last withdrawal\n@return The accumulated reward",
                  "id": 17128,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getStakerCurrentReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16966,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16965,
                        "name": "considerMaxDuration",
                        "nodeType": "VariableDeclaration",
                        "scope": 17128,
                        "src": "5776:24:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16964,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5776:4:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5775:26:61"
                  },
                  "returnParameters": {
                    "id": 16971,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16968,
                        "name": "lastWithdrawalInterval",
                        "nodeType": "VariableDeclaration",
                        "scope": 17128,
                        "src": "5823:30:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16967,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5823:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16970,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 17128,
                        "src": "5855:14:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16969,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5855:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5822:48:61"
                  },
                  "scope": 17138,
                  "src": "5744:1332:61",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 17136,
                    "nodeType": "Block",
                    "src": "7346:27:61",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17133,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44984,
                            "src": "7357:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 17134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7357:12:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 17132,
                        "id": 17135,
                        "nodeType": "Return",
                        "src": "7350:19:61"
                      }
                    ]
                  },
                  "documentation": "@notice Determine the current Block Number\n@dev This is segregated from the _getPriorUserStakeByDate function to better test\nadvancing blocks functionality using Mock Contracts\n",
                  "id": 17137,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getCurrentBlockNumber",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17129,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7311:2:61"
                  },
                  "returnParameters": {
                    "id": 17132,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17131,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 17137,
                        "src": "7337:7:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17130,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7337:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7336:9:61"
                  },
                  "scope": 17138,
                  "src": "7280:93:61",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 17139,
              "src": "839:6536:61"
            }
          ],
          "src": "0:7376:61"
        },
        "id": 61
      },
      "contracts/governance/StakingRewards/StakingRewardsProxy.sol": {
        "ast": {
          "absolutePath": "contracts/governance/StakingRewards/StakingRewardsProxy.sol",
          "exportedSymbols": {
            "StakingRewardsProxy": [
              17147
            ]
          },
          "id": 17148,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 17140,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:62"
            },
            {
              "absolutePath": "contracts/governance/StakingRewards/StakingRewardsStorage.sol",
              "file": "./StakingRewardsStorage.sol",
              "id": 17141,
              "nodeType": "ImportDirective",
              "scope": 17148,
              "sourceUnit": 17185,
              "src": "26:37:62",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/proxy/UpgradableProxy.sol",
              "file": "../../proxy/UpgradableProxy.sol",
              "id": 17142,
              "nodeType": "ImportDirective",
              "scope": 17148,
              "sourceUnit": 42654,
              "src": "64:41:62",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 17143,
                    "name": "StakingRewardsStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17184,
                    "src": "466:21:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_StakingRewardsStorage_$17184",
                      "typeString": "contract StakingRewardsStorage"
                    }
                  },
                  "id": 17144,
                  "nodeType": "InheritanceSpecifier",
                  "src": "466:21:62"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 17145,
                    "name": "UpgradableProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42653,
                    "src": "489:15:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UpgradableProxy_$42653",
                      "typeString": "contract UpgradableProxy"
                    }
                  },
                  "id": 17146,
                  "nodeType": "InheritanceSpecifier",
                  "src": "489:15:62"
                }
              ],
              "contractDependencies": [
                17184,
                41125,
                41798,
                42623,
                42653
              ],
              "contractKind": "contract",
              "documentation": "@title StakingRewards Proxy contract.\n@dev StakingRewards contract should be upgradable. Used UpgradableProxy.\nStakingRewardsStorage is deployed with the upgradable functionality\nby using this contract instead, that inherits from UpgradableProxy with\nthe possibility of being enhanced and re-deployed.\n",
              "fullyImplemented": true,
              "id": 17147,
              "linearizedBaseContracts": [
                17147,
                42653,
                42623,
                17184,
                41798,
                41125
              ],
              "name": "StakingRewardsProxy",
              "nodeType": "ContractDefinition",
              "nodes": [],
              "scope": 17148,
              "src": "434:75:62"
            }
          ],
          "src": "0:510:62"
        },
        "id": 62
      },
      "contracts/governance/StakingRewards/StakingRewardsStorage.sol": {
        "ast": {
          "absolutePath": "contracts/governance/StakingRewards/StakingRewardsStorage.sol",
          "exportedSymbols": {
            "StakingRewardsStorage": [
              17184
            ]
          },
          "id": 17185,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 17149,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:63"
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 17150,
              "nodeType": "ImportDirective",
              "scope": 17185,
              "sourceUnit": 24700,
              "src": "26:37:63",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/IStaking.sol",
              "file": "../Staking/IStaking.sol",
              "id": 17151,
              "nodeType": "ImportDirective",
              "scope": 17185,
              "sourceUnit": 13774,
              "src": "64:33:63",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../../openzeppelin/Ownable.sol",
              "id": 17152,
              "nodeType": "ImportDirective",
              "scope": 17185,
              "sourceUnit": 41799,
              "src": "98:40:63",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 17153,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "649:7:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 17154,
                  "nodeType": "InheritanceSpecifier",
                  "src": "649:7:63"
                }
              ],
              "contractDependencies": [
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Staking Rewards Storage Contract.\n@notice Just the storage part of staking rewards contract, no functions,\nonly constant, variables and required structures (mappings).\nUsed by StackingRewardsProxy.\n * What is SOV staking rewards - SIP-0024?\nThe purpose of the SOV staking rewards - SIP-0024 is to reward,\n\"marginal stakers\" (ie, stakers by choice, not currently vesting) with liquid SOV\nat the beginning of each new staking interval.\n",
              "fullyImplemented": true,
              "id": 17184,
              "linearizedBaseContracts": [
                17184,
                41798,
                41125
              ],
              "name": "StakingRewardsStorage",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 17156,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 17184,
                  "src": "697:17:63",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$24699",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17155,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "697:6:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17158,
                  "name": "staking",
                  "nodeType": "VariableDeclaration",
                  "scope": 17184,
                  "src": "765:23:63",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IStaking_$13773",
                    "typeString": "contract IStaking"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17157,
                    "name": "IStaking",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13773,
                    "src": "765:8:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IStaking_$13773",
                      "typeString": "contract IStaking"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 17161,
                  "name": "TWO_WEEKS",
                  "nodeType": "VariableDeclaration",
                  "scope": 17184,
                  "src": "825:43:63",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17159,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "825:7:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31323039363030",
                    "id": 17160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "861:7:63",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1209600_by_1",
                      "typeString": "int_const 1209600"
                    },
                    "value": "1209600"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 17164,
                  "name": "BASE_RATE",
                  "nodeType": "VariableDeclaration",
                  "scope": 17184,
                  "src": "941:40:63",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17162,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "941:7:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "32393735",
                    "id": 17163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "977:4:63",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2975_by_1",
                      "typeString": "int_const 2975"
                    },
                    "value": "2975"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 17167,
                  "name": "DIVISOR",
                  "nodeType": "VariableDeclaration",
                  "scope": 17184,
                  "src": "1102:41:63",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17165,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1102:7:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "32363030303030",
                    "id": 17166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1136:7:63",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2600000_by_1",
                      "typeString": "int_const 2600000"
                    },
                    "value": "2600000"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17169,
                  "name": "maxDuration",
                  "nodeType": "VariableDeclaration",
                  "scope": 17184,
                  "src": "1206:26:63",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17168,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1206:7:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17171,
                  "name": "startTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 17184,
                  "src": "1299:24:63",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17170,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1299:7:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17173,
                  "name": "stopBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 17184,
                  "src": "1404:24:63",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17172,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1404:7:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17177,
                  "name": "withdrawals",
                  "nodeType": "VariableDeclaration",
                  "scope": 17184,
                  "src": "1486:46:63",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 17176,
                    "keyType": {
                      "id": 17174,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1494:7:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1486:27:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 17175,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1505:7:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17181,
                  "name": "claimedBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 17184,
                  "src": "1581:50:63",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 17180,
                    "keyType": {
                      "id": 17178,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1589:7:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1581:27:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 17179,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1600:7:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17183,
                  "name": "deploymentBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 17184,
                  "src": "1711:30:63",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17182,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1711:7:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                }
              ],
              "scope": 17185,
              "src": "615:1129:63"
            }
          ],
          "src": "0:1745:63"
        },
        "id": 63
      },
      "contracts/governance/Timelock.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Timelock.sol",
          "exportedSymbols": {
            "ITimelock": [
              17252
            ],
            "Timelock": [
              17726
            ]
          },
          "id": 17727,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 17186,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:64"
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../openzeppelin/SafeMath.sol",
              "id": 17187,
              "nodeType": "ImportDirective",
              "scope": 17727,
              "sourceUnit": 42310,
              "src": "26:38:64",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/ErrorDecoder.sol",
              "file": "./ErrorDecoder.sol",
              "id": 17188,
              "nodeType": "ImportDirective",
              "scope": 17727,
              "sourceUnit": 10803,
              "src": "65:28:64",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 17252,
              "linearizedBaseContracts": [
                17252
              ],
              "name": "ITimelock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 17193,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "delay",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17189,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "132:2:64"
                  },
                  "returnParameters": {
                    "id": 17192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17191,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 17193,
                        "src": "158:7:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17190,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "158:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "157:9:64"
                  },
                  "scope": 17252,
                  "src": "118:49:64",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 17198,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "GRACE_PERIOD",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17194,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "191:2:64"
                  },
                  "returnParameters": {
                    "id": 17197,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17196,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 17198,
                        "src": "217:7:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17195,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "217:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "216:9:64"
                  },
                  "scope": 17252,
                  "src": "170:56:64",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 17201,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "acceptAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17199,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "249:2:64"
                  },
                  "returnParameters": {
                    "id": 17200,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "260:0:64"
                  },
                  "scope": 17252,
                  "src": "229:32:64",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 17208,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queuedTransactions",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17204,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17203,
                        "name": "hash",
                        "nodeType": "VariableDeclaration",
                        "scope": 17208,
                        "src": "292:12:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17202,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "292:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "291:14:64"
                  },
                  "returnParameters": {
                    "id": 17207,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17206,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 17208,
                        "src": "329:4:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 17205,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "329:4:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "328:6:64"
                  },
                  "scope": 17252,
                  "src": "264:71:64",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 17223,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queueTransaction",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17219,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17210,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 17223,
                        "src": "367:14:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17209,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "367:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17212,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 17223,
                        "src": "385:13:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17211,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "385:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17214,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 17223,
                        "src": "402:25:64",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17213,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "402:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17216,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 17223,
                        "src": "431:19:64",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17215,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "431:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17218,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 17223,
                        "src": "454:11:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17217,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "454:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "363:105:64"
                  },
                  "returnParameters": {
                    "id": 17222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17221,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 17223,
                        "src": "487:7:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17220,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "487:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "486:9:64"
                  },
                  "scope": 17252,
                  "src": "338:158:64",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 17236,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "cancelTransaction",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17234,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17225,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 17236,
                        "src": "529:14:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17224,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "529:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17227,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 17236,
                        "src": "547:13:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17226,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "547:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17229,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 17236,
                        "src": "564:25:64",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17228,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "564:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17231,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 17236,
                        "src": "593:19:64",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17230,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "593:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17233,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 17236,
                        "src": "616:11:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17232,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "616:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "525:105:64"
                  },
                  "returnParameters": {
                    "id": 17235,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "639:0:64"
                  },
                  "scope": 17252,
                  "src": "499:141:64",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 17251,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeTransaction",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17247,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17238,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 17251,
                        "src": "674:14:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17237,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "674:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17240,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 17251,
                        "src": "692:13:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17239,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "692:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17242,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 17251,
                        "src": "709:25:64",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17241,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "709:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17244,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 17251,
                        "src": "738:19:64",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17243,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "738:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17246,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 17251,
                        "src": "761:11:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17245,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "761:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "670:105:64"
                  },
                  "returnParameters": {
                    "id": 17250,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17249,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 17251,
                        "src": "802:12:64",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17248,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "802:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "801:14:64"
                  },
                  "scope": 17252,
                  "src": "643:173:64",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 17727,
              "src": "95:723:64"
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 17253,
                    "name": "ErrorDecoder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10802,
                    "src": "2389:12:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ErrorDecoder_$10802",
                      "typeString": "contract ErrorDecoder"
                    }
                  },
                  "id": 17254,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2389:12:64"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 17255,
                    "name": "ITimelock",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17252,
                    "src": "2403:9:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ITimelock_$17252",
                      "typeString": "contract ITimelock"
                    }
                  },
                  "id": 17256,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2403:9:64"
                }
              ],
              "contractDependencies": [
                10802,
                17252
              ],
              "contractKind": "contract",
              "documentation": "@title Sovryn Protocol Timelock contract, based on Compound system.\n * @notice This contract lets Sovryn governance system set up its\nown Time Lock instance to execute transactions proposed through the\nGovernorAlpha contract instance.\n * The Timelock contract allows its admin (Sovryn governance on\nGovernorAlpha contract) to add arbitrary function calls to a\nqueue. This contract can only execute a function call if the\nfunction call has been in the queue for at least 3 hours.\n * Anytime the Timelock contract makes a function call, it must be the\ncase that the function call was first made public by having been publicly\nadded to the queue at least 3 hours prior.\n * The intention is to provide GovernorAlpha contract the functionality to\nqueue proposal actions. This would mean that any changes made by Sovryn\ngovernance of any contract would necessarily come with at least an\nadvanced warning. This makes the Sovryn system follow a “time-delayed,\nopt-out” upgrade pattern (rather than an “instant, forced” upgrade pattern).\n * Time-delaying admin actions gives users a chance to exit system if its\nadmins become malicious or compromised (or make a change that the users\ndo not like). Downside is that honest admins would be unable\nto lock down functionality to protect users if a critical bug was found.\n * Delayed transactions reduce the amount of trust required by users of Sovryn\nand the overall risk for contracts building on top of it, as GovernorAlpha.\n",
              "fullyImplemented": true,
              "id": 17726,
              "linearizedBaseContracts": [
                17726,
                17252,
                10802
              ],
              "name": "Timelock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 17259,
                  "libraryName": {
                    "contractScope": null,
                    "id": 17257,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "2422:8:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2416:27:64",
                  "typeName": {
                    "id": 17258,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2435:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 17262,
                  "name": "GRACE_PERIOD",
                  "nodeType": "VariableDeclaration",
                  "scope": 17726,
                  "src": "2446:46:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17260,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2446:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3134",
                    "id": 17261,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2485:7:64",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1209600_by_1",
                      "typeString": "int_const 1209600"
                    },
                    "value": "14"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 17265,
                  "name": "MINIMUM_DELAY",
                  "nodeType": "VariableDeclaration",
                  "scope": 17726,
                  "src": "2495:47:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17263,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2495:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 17264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2535:7:64",
                    "subdenomination": "hours",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10800_by_1",
                      "typeString": "int_const 10800"
                    },
                    "value": "3"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 17268,
                  "name": "MAXIMUM_DELAY",
                  "nodeType": "VariableDeclaration",
                  "scope": 17726,
                  "src": "2545:47:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17266,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2545:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3330",
                    "id": 17267,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2585:7:64",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2592000_by_1",
                      "typeString": "int_const 2592000"
                    },
                    "value": "30"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17270,
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "scope": 17726,
                  "src": "2596:20:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17269,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2596:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17272,
                  "name": "pendingAdmin",
                  "nodeType": "VariableDeclaration",
                  "scope": 17726,
                  "src": "2619:27:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17271,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2619:7:64",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17274,
                  "name": "delay",
                  "nodeType": "VariableDeclaration",
                  "scope": 17726,
                  "src": "2649:20:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17273,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2649:7:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17278,
                  "name": "queuedTransactions",
                  "nodeType": "VariableDeclaration",
                  "scope": 17726,
                  "src": "2673:50:64",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                    "typeString": "mapping(bytes32 => bool)"
                  },
                  "typeName": {
                    "id": 17277,
                    "keyType": {
                      "id": 17275,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "2681:7:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2673:24:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                      "typeString": "mapping(bytes32 => bool)"
                    },
                    "valueType": {
                      "id": 17276,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2692:4:64",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 17282,
                  "name": "NewAdmin",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17281,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17280,
                        "indexed": true,
                        "name": "newAdmin",
                        "nodeType": "VariableDeclaration",
                        "scope": 17282,
                        "src": "2742:24:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17279,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2742:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2741:26:64"
                  },
                  "src": "2727:41:64"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 17286,
                  "name": "NewPendingAdmin",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17284,
                        "indexed": true,
                        "name": "newPendingAdmin",
                        "nodeType": "VariableDeclaration",
                        "scope": 17286,
                        "src": "2792:31:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17283,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2792:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2791:33:64"
                  },
                  "src": "2770:55:64"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 17290,
                  "name": "NewDelay",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17288,
                        "indexed": true,
                        "name": "newDelay",
                        "nodeType": "VariableDeclaration",
                        "scope": 17290,
                        "src": "2842:24:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17287,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2842:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2841:26:64"
                  },
                  "src": "2827:41:64"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 17304,
                  "name": "CancelTransaction",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17303,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17292,
                        "indexed": true,
                        "name": "txHash",
                        "nodeType": "VariableDeclaration",
                        "scope": 17304,
                        "src": "2894:22:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17291,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2894:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17294,
                        "indexed": true,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 17304,
                        "src": "2918:22:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17293,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2918:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17296,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 17304,
                        "src": "2942:13:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17295,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2942:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17298,
                        "indexed": false,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 17304,
                        "src": "2957:16:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17297,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2957:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17300,
                        "indexed": false,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 17304,
                        "src": "2975:10:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17299,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2975:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17302,
                        "indexed": false,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 17304,
                        "src": "2987:11:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17301,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2987:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2893:106:64"
                  },
                  "src": "2870:130:64"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 17318,
                  "name": "ExecuteTransaction",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17317,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17306,
                        "indexed": true,
                        "name": "txHash",
                        "nodeType": "VariableDeclaration",
                        "scope": 17318,
                        "src": "3027:22:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17305,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3027:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17308,
                        "indexed": true,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 17318,
                        "src": "3051:22:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17307,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3051:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17310,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 17318,
                        "src": "3075:13:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3075:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17312,
                        "indexed": false,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 17318,
                        "src": "3090:16:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17311,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3090:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17314,
                        "indexed": false,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 17318,
                        "src": "3108:10:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17313,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3108:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17316,
                        "indexed": false,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 17318,
                        "src": "3120:11:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17315,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3120:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3026:106:64"
                  },
                  "src": "3002:131:64"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 17332,
                  "name": "QueueTransaction",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17331,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17320,
                        "indexed": true,
                        "name": "txHash",
                        "nodeType": "VariableDeclaration",
                        "scope": 17332,
                        "src": "3158:22:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17319,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3158:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17322,
                        "indexed": true,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 17332,
                        "src": "3182:22:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17321,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3182:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17324,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 17332,
                        "src": "3206:13:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17323,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3206:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17326,
                        "indexed": false,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 17332,
                        "src": "3221:16:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17325,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3221:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17328,
                        "indexed": false,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 17332,
                        "src": "3239:10:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17327,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3239:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17330,
                        "indexed": false,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 17332,
                        "src": "3251:11:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17329,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3251:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3157:106:64"
                  },
                  "src": "3135:129:64"
                },
                {
                  "body": {
                    "id": 17361,
                    "nodeType": "Block",
                    "src": "3516:232:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 17340,
                                "name": "delay_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17336,
                                "src": "3528:6:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 17341,
                                "name": "MINIMUM_DELAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17265,
                                "src": "3538:13:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3528:23:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e",
                              "id": 17343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3553:57:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_22e01fcea901594c01d464b6c5f076874d475b75affb5ba136b9bcf9c2e8cf2f",
                                "typeString": "literal_string \"Timelock::constructor: Delay must exceed minimum delay.\""
                              },
                              "value": "Timelock::constructor: Delay must exceed minimum delay."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_22e01fcea901594c01d464b6c5f076874d475b75affb5ba136b9bcf9c2e8cf2f",
                                "typeString": "literal_string \"Timelock::constructor: Delay must exceed minimum delay.\""
                              }
                            ],
                            "id": 17339,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3520:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3520:91:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17345,
                        "nodeType": "ExpressionStatement",
                        "src": "3520:91:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 17347,
                                "name": "delay_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17336,
                                "src": "3623:6:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 17348,
                                "name": "MAXIMUM_DELAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17268,
                                "src": "3633:13:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3623:23:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e",
                              "id": 17350,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3648:58:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0",
                                "typeString": "literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""
                              },
                              "value": "Timelock::setDelay: Delay must not exceed maximum delay."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0",
                                "typeString": "literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""
                              }
                            ],
                            "id": 17346,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3615:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3615:92:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17352,
                        "nodeType": "ExpressionStatement",
                        "src": "3615:92:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17353,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17270,
                            "src": "3712:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 17354,
                            "name": "admin_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17334,
                            "src": "3720:6:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3712:14:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17356,
                        "nodeType": "ExpressionStatement",
                        "src": "3712:14:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17357,
                            "name": "delay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17274,
                            "src": "3730:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 17358,
                            "name": "delay_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17336,
                            "src": "3738:6:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3730:14:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17360,
                        "nodeType": "ExpressionStatement",
                        "src": "3730:14:64"
                      }
                    ]
                  },
                  "documentation": "@notice Function called on instance deployment of the contract.\n@param admin_ Governance contract address.\n@param delay_ Time to wait for queued transactions to be executed.\n",
                  "id": 17362,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17337,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17334,
                        "name": "admin_",
                        "nodeType": "VariableDeclaration",
                        "scope": 17362,
                        "src": "3477:14:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17333,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3477:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17336,
                        "name": "delay_",
                        "nodeType": "VariableDeclaration",
                        "scope": 17362,
                        "src": "3493:14:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17335,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3493:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3476:32:64"
                  },
                  "returnParameters": {
                    "id": 17338,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3516:0:64"
                  },
                  "scope": 17726,
                  "src": "3465:283:64",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 17365,
                    "nodeType": "Block",
                    "src": "3860:2:64",
                    "statements": []
                  },
                  "documentation": "@notice Fallback function is to react to receiving value (rBTC).\n",
                  "id": 17366,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17363,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3840:2:64"
                  },
                  "returnParameters": {
                    "id": 17364,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3860:0:64"
                  },
                  "scope": 17726,
                  "src": "3832:30:64",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17403,
                    "nodeType": "Block",
                    "src": "4043:328:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 17377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17372,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "4055:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4055:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17375,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45168,
                                    "src": "4077:4:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Timelock_$17726",
                                      "typeString": "contract Timelock"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Timelock_$17726",
                                      "typeString": "contract Timelock"
                                    }
                                  ],
                                  "id": 17374,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4069:7:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 17376,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4069:13:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4055:27:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e",
                              "id": 17378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4084:51:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e810dcfb9ec7662fa74f0c58d14b8ca36ebffcb4d6cdf3e54d58e4096597d95d",
                                "typeString": "literal_string \"Timelock::setDelay: Call must come from Timelock.\""
                              },
                              "value": "Timelock::setDelay: Call must come from Timelock."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e810dcfb9ec7662fa74f0c58d14b8ca36ebffcb4d6cdf3e54d58e4096597d95d",
                                "typeString": "literal_string \"Timelock::setDelay: Call must come from Timelock.\""
                              }
                            ],
                            "id": 17371,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4047:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4047:89:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17380,
                        "nodeType": "ExpressionStatement",
                        "src": "4047:89:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 17382,
                                "name": "delay_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17368,
                                "src": "4148:6:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 17383,
                                "name": "MINIMUM_DELAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17265,
                                "src": "4158:13:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4148:23:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e",
                              "id": 17385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4173:54:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4198c63548ffd3e47f06dc876a374eb662a4ea6ff5509a211e07dd2b49998b1d",
                                "typeString": "literal_string \"Timelock::setDelay: Delay must exceed minimum delay.\""
                              },
                              "value": "Timelock::setDelay: Delay must exceed minimum delay."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4198c63548ffd3e47f06dc876a374eb662a4ea6ff5509a211e07dd2b49998b1d",
                                "typeString": "literal_string \"Timelock::setDelay: Delay must exceed minimum delay.\""
                              }
                            ],
                            "id": 17381,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4140:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4140:88:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17387,
                        "nodeType": "ExpressionStatement",
                        "src": "4140:88:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 17389,
                                "name": "delay_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17368,
                                "src": "4240:6:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 17390,
                                "name": "MAXIMUM_DELAY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17268,
                                "src": "4250:13:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4240:23:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e",
                              "id": 17392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4265:58:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0",
                                "typeString": "literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""
                              },
                              "value": "Timelock::setDelay: Delay must not exceed maximum delay."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_762218313af08cfa6c9b8eda00385502eefaa529f9945044fd2dee54ff5cefe0",
                                "typeString": "literal_string \"Timelock::setDelay: Delay must not exceed maximum delay.\""
                              }
                            ],
                            "id": 17388,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4232:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4232:92:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17394,
                        "nodeType": "ExpressionStatement",
                        "src": "4232:92:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17395,
                            "name": "delay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17274,
                            "src": "4328:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 17396,
                            "name": "delay_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17368,
                            "src": "4336:6:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4328:14:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17398,
                        "nodeType": "ExpressionStatement",
                        "src": "4328:14:64"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 17400,
                              "name": "delay",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17274,
                              "src": "4361:5:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17399,
                            "name": "NewDelay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17290,
                            "src": "4352:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 17401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4352:15:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17402,
                        "nodeType": "EmitStatement",
                        "src": "4347:20:64"
                      }
                    ]
                  },
                  "documentation": "@notice Set a new delay when executing the contract calls.\n@param delay_ The amount of time to wait until execution.\n",
                  "id": 17404,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setDelay",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17369,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17368,
                        "name": "delay_",
                        "nodeType": "VariableDeclaration",
                        "scope": 17404,
                        "src": "4020:14:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17367,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4020:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4019:16:64"
                  },
                  "returnParameters": {
                    "id": 17370,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4043:0:64"
                  },
                  "scope": 17726,
                  "src": "4002:369:64",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 17430,
                    "nodeType": "Block",
                    "src": "4465:179:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17411,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17408,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "4477:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4477:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 17410,
                                "name": "pendingAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17272,
                                "src": "4491:12:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4477:26:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e",
                              "id": 17412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4505:58:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a6d22532620e2c2df8ce400b3f4754629da5ed6321258d3add10ae5aba9450b3",
                                "typeString": "literal_string \"Timelock::acceptAdmin: Call must come from pendingAdmin.\""
                              },
                              "value": "Timelock::acceptAdmin: Call must come from pendingAdmin."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a6d22532620e2c2df8ce400b3f4754629da5ed6321258d3add10ae5aba9450b3",
                                "typeString": "literal_string \"Timelock::acceptAdmin: Call must come from pendingAdmin.\""
                              }
                            ],
                            "id": 17407,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4469:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4469:95:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17414,
                        "nodeType": "ExpressionStatement",
                        "src": "4469:95:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17415,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17270,
                            "src": "4568:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17416,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "4576:3:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 17417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4576:10:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4568:18:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17419,
                        "nodeType": "ExpressionStatement",
                        "src": "4568:18:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17420,
                            "name": "pendingAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17272,
                            "src": "4590:12:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4613:1:64",
                                "subdenomination": null,
                                "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": 17421,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4605:7:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 17423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4605:10:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4590:25:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17425,
                        "nodeType": "ExpressionStatement",
                        "src": "4590:25:64"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 17427,
                              "name": "admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17270,
                              "src": "4634:5:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 17426,
                            "name": "NewAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17282,
                            "src": "4625:8:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 17428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4625:15:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17429,
                        "nodeType": "EmitStatement",
                        "src": "4620:20:64"
                      }
                    ]
                  },
                  "documentation": "@notice Accept a new admin for the timelock.\n",
                  "id": 17431,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "acceptAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17405,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4455:2:64"
                  },
                  "returnParameters": {
                    "id": 17406,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4465:0:64"
                  },
                  "scope": 17726,
                  "src": "4435:209:64",
                  "stateMutability": "nonpayable",
                  "superFunction": 17201,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 17454,
                    "nodeType": "Block",
                    "src": "4824:175:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 17442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17437,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "4836:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17438,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4836:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17440,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45168,
                                    "src": "4858:4:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Timelock_$17726",
                                      "typeString": "contract Timelock"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Timelock_$17726",
                                      "typeString": "contract Timelock"
                                    }
                                  ],
                                  "id": 17439,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4850:7:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 17441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4850:13:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4836:27:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e",
                              "id": 17443,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4865:58:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b7a0aaea4203d5a5318b76c13dcb2afd3f7e9e71cd6f5f022040411bd080d815",
                                "typeString": "literal_string \"Timelock::setPendingAdmin: Call must come from Timelock.\""
                              },
                              "value": "Timelock::setPendingAdmin: Call must come from Timelock."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b7a0aaea4203d5a5318b76c13dcb2afd3f7e9e71cd6f5f022040411bd080d815",
                                "typeString": "literal_string \"Timelock::setPendingAdmin: Call must come from Timelock.\""
                              }
                            ],
                            "id": 17436,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4828:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4828:96:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17445,
                        "nodeType": "ExpressionStatement",
                        "src": "4828:96:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17446,
                            "name": "pendingAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17272,
                            "src": "4928:12:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 17447,
                            "name": "pendingAdmin_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17433,
                            "src": "4943:13:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4928:28:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17449,
                        "nodeType": "ExpressionStatement",
                        "src": "4928:28:64"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 17451,
                              "name": "pendingAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17272,
                              "src": "4982:12:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 17450,
                            "name": "NewPendingAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17286,
                            "src": "4966:15:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 17452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4966:29:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17453,
                        "nodeType": "EmitStatement",
                        "src": "4961:34:64"
                      }
                    ]
                  },
                  "documentation": "@notice Set a new pending admin for the timelock.\n@param pendingAdmin_ The new pending admin address.\n",
                  "id": 17455,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setPendingAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17434,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17433,
                        "name": "pendingAdmin_",
                        "nodeType": "VariableDeclaration",
                        "scope": 17455,
                        "src": "4794:21:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17432,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4794:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4793:23:64"
                  },
                  "returnParameters": {
                    "id": 17435,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4824:0:64"
                  },
                  "scope": 17726,
                  "src": "4769:230:64",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 17519,
                    "nodeType": "Block",
                    "src": "5609:426:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17471,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "5621:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5621:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 17473,
                                "name": "admin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17270,
                                "src": "5635:5:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5621:19:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e",
                              "id": 17475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5642:56:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b9bd2ade56c0bd4d6738b7a39a90e136f8901e8e7945a3d237050075ad6fd749",
                                "typeString": "literal_string \"Timelock::queueTransaction: Call must come from admin.\""
                              },
                              "value": "Timelock::queueTransaction: Call must come from admin."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b9bd2ade56c0bd4d6738b7a39a90e136f8901e8e7945a3d237050075ad6fd749",
                                "typeString": "literal_string \"Timelock::queueTransaction: Call must come from admin.\""
                              }
                            ],
                            "id": 17470,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5613:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5613:86:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17477,
                        "nodeType": "ExpressionStatement",
                        "src": "5613:86:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 17479,
                                "name": "eta",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17465,
                                "src": "5711:3:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17483,
                                    "name": "delay",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17274,
                                    "src": "5742:5:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 17480,
                                      "name": "getBlockTimestamp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17725,
                                      "src": "5718:17:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                        "typeString": "function () view returns (uint256)"
                                      }
                                    },
                                    "id": 17481,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5718:19:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 17482,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "5718:23:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 17484,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5718:30:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5711:37:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e",
                              "id": 17486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5750:75:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d8f8e6fa46b62e55e6ef89f0d71d2a706a902748f37198aeb3e192bf7bca348c",
                                "typeString": "literal_string \"Timelock::queueTransaction: Estimated execution block must satisfy delay.\""
                              },
                              "value": "Timelock::queueTransaction: Estimated execution block must satisfy delay."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d8f8e6fa46b62e55e6ef89f0d71d2a706a902748f37198aeb3e192bf7bca348c",
                                "typeString": "literal_string \"Timelock::queueTransaction: Estimated execution block must satisfy delay.\""
                              }
                            ],
                            "id": 17478,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5703:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5703:123:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17488,
                        "nodeType": "ExpressionStatement",
                        "src": "5703:123:64"
                      },
                      {
                        "assignments": [
                          17490
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17490,
                            "name": "txHash",
                            "nodeType": "VariableDeclaration",
                            "scope": 17519,
                            "src": "5831:14:64",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 17489,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5831:7:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17501,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 17494,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17457,
                                  "src": "5869:6:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 17495,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17459,
                                  "src": "5877:5:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 17496,
                                  "name": "signature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17461,
                                  "src": "5884:9:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 17497,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17463,
                                  "src": "5895:4:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 17498,
                                  "name": "eta",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17465,
                                  "src": "5901:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17492,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "5858:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 17493,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5858:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 17499,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5858:47:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 17491,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "5848:9:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 17500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5848:58:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5831:75:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 17502,
                              "name": "queuedTransactions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17278,
                              "src": "5910:18:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                "typeString": "mapping(bytes32 => bool)"
                              }
                            },
                            "id": 17504,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17503,
                              "name": "txHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17490,
                              "src": "5929:6:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5910:26:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 17505,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5939:4:64",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "5910:33:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17507,
                        "nodeType": "ExpressionStatement",
                        "src": "5910:33:64"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 17509,
                              "name": "txHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17490,
                              "src": "5970:6:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17510,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17457,
                              "src": "5978:6:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17511,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17459,
                              "src": "5986:5:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17512,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17461,
                              "src": "5993:9:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17513,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17463,
                              "src": "6004:4:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17514,
                              "name": "eta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17465,
                              "src": "6010:3:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17508,
                            "name": "QueueTransaction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17332,
                            "src": "5953:16:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,uint256,string memory,bytes memory,uint256)"
                            }
                          },
                          "id": 17515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5953:61:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17516,
                        "nodeType": "EmitStatement",
                        "src": "5948:66:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17517,
                          "name": "txHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17490,
                          "src": "6025:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 17469,
                        "id": 17518,
                        "nodeType": "Return",
                        "src": "6018:13:64"
                      }
                    ]
                  },
                  "documentation": "@notice Queue a new transaction from the governance contract.\n@param target The contract to call.\n@param value The amount to send in the transaction.\n@param signature The stanndard representation of the function called.\n@param data The ethereum transaction input data payload.\n@param eta Estimated Time of Accomplishment. The timestamp that the\nproposal will be available for execution, set once the vote succeeds.\n",
                  "id": 17520,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queueTransaction",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17457,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 17520,
                        "src": "5486:14:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17456,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5486:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17459,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 17520,
                        "src": "5504:13:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17458,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5504:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17461,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 17520,
                        "src": "5521:23:64",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17460,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5521:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17463,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 17520,
                        "src": "5548:17:64",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17462,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5548:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17465,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 17520,
                        "src": "5569:11:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17464,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5569:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5482:101:64"
                  },
                  "returnParameters": {
                    "id": 17469,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17468,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 17520,
                        "src": "5600:7:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17467,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5600:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5599:9:64"
                  },
                  "scope": 17726,
                  "src": "5457:578:64",
                  "stateMutability": "nonpayable",
                  "superFunction": 17223,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 17569,
                    "nodeType": "Block",
                    "src": "6596:285:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17534,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "6608:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6608:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 17536,
                                "name": "admin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17270,
                                "src": "6622:5:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "6608:19:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e",
                              "id": 17538,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6629:57:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_135e413b08c779b9b925daaaf6178471ba60ebd33d413d809c76a0d4e8beaf3d",
                                "typeString": "literal_string \"Timelock::cancelTransaction: Call must come from admin.\""
                              },
                              "value": "Timelock::cancelTransaction: Call must come from admin."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_135e413b08c779b9b925daaaf6178471ba60ebd33d413d809c76a0d4e8beaf3d",
                                "typeString": "literal_string \"Timelock::cancelTransaction: Call must come from admin.\""
                              }
                            ],
                            "id": 17533,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6600:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6600:87:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17540,
                        "nodeType": "ExpressionStatement",
                        "src": "6600:87:64"
                      },
                      {
                        "assignments": [
                          17542
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17542,
                            "name": "txHash",
                            "nodeType": "VariableDeclaration",
                            "scope": 17569,
                            "src": "6692:14:64",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 17541,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "6692:7:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17553,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 17546,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17522,
                                  "src": "6730:6:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 17547,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17524,
                                  "src": "6738:5:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 17548,
                                  "name": "signature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17526,
                                  "src": "6745:9:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 17549,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17528,
                                  "src": "6756:4:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 17550,
                                  "name": "eta",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17530,
                                  "src": "6762:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17544,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "6719:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 17545,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6719:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 17551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6719:47:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 17543,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "6709:9:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 17552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6709:58:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6692:75:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 17554,
                              "name": "queuedTransactions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17278,
                              "src": "6771:18:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                "typeString": "mapping(bytes32 => bool)"
                              }
                            },
                            "id": 17556,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17555,
                              "name": "txHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17542,
                              "src": "6790:6:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6771:26:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 17557,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6800:5:64",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "6771:34:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17559,
                        "nodeType": "ExpressionStatement",
                        "src": "6771:34:64"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 17561,
                              "name": "txHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17542,
                              "src": "6833:6:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17562,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17522,
                              "src": "6841:6:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17563,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17524,
                              "src": "6849:5:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17564,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17526,
                              "src": "6856:9:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17565,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17528,
                              "src": "6867:4:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17566,
                              "name": "eta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17530,
                              "src": "6873:3:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17560,
                            "name": "CancelTransaction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17304,
                            "src": "6815:17:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,uint256,string memory,bytes memory,uint256)"
                            }
                          },
                          "id": 17567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6815:62:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17568,
                        "nodeType": "EmitStatement",
                        "src": "6810:67:64"
                      }
                    ]
                  },
                  "documentation": "@notice Cancel a transaction.\n@param target The contract to call.\n@param value The amount to send in the transaction.\n@param signature The stanndard representation of the function called.\n@param data The ethereum transaction input data payload.\n@param eta Estimated Time of Accomplishment. The timestamp that the\nproposal will be available for execution, set once the vote succeeds.\n",
                  "id": 17570,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "cancelTransaction",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17531,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17522,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 17570,
                        "src": "6491:14:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17521,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6491:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17524,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 17570,
                        "src": "6509:13:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17523,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6509:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17526,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 17570,
                        "src": "6526:23:64",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17525,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6526:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17528,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 17570,
                        "src": "6553:17:64",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17527,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6553:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17530,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 17570,
                        "src": "6574:11:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17529,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6574:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6487:101:64"
                  },
                  "returnParameters": {
                    "id": 17532,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6596:0:64"
                  },
                  "scope": 17726,
                  "src": "6461:420:64",
                  "stateMutability": "nonpayable",
                  "superFunction": 17236,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 17715,
                    "nodeType": "Block",
                    "src": "7514:1198:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17586,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "7526:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17587,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7526:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 17588,
                                "name": "admin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17270,
                                "src": "7540:5:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7526:19:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e",
                              "id": 17590,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7547:58:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0cbc65ac44dc8b90b8bc4c38c9c6ad704bfeb2c8170538058496c0e805dfa947",
                                "typeString": "literal_string \"Timelock::executeTransaction: Call must come from admin.\""
                              },
                              "value": "Timelock::executeTransaction: Call must come from admin."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0cbc65ac44dc8b90b8bc4c38c9c6ad704bfeb2c8170538058496c0e805dfa947",
                                "typeString": "literal_string \"Timelock::executeTransaction: Call must come from admin.\""
                              }
                            ],
                            "id": 17585,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7518:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7518:88:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17592,
                        "nodeType": "ExpressionStatement",
                        "src": "7518:88:64"
                      },
                      {
                        "assignments": [
                          17594
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17594,
                            "name": "txHash",
                            "nodeType": "VariableDeclaration",
                            "scope": 17715,
                            "src": "7611:14:64",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 17593,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7611:7:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17605,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 17598,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17572,
                                  "src": "7649:6:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 17599,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17574,
                                  "src": "7657:5:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 17600,
                                  "name": "signature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17576,
                                  "src": "7664:9:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 17601,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17578,
                                  "src": "7675:4:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 17602,
                                  "name": "eta",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17580,
                                  "src": "7681:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17596,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "7638:3:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 17597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7638:10:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 17603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7638:47:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 17595,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "7628:9:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 17604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7628:58:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7611:75:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17607,
                                "name": "queuedTransactions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17278,
                                "src": "7698:18:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                  "typeString": "mapping(bytes32 => bool)"
                                }
                              },
                              "id": 17609,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17608,
                                "name": "txHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17594,
                                "src": "7717:6:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7698:26:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e",
                              "id": 17610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7726:63:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7e3bf24eec453753018af1214443c72d8abb3050b249b2b3b9bb2adb04310650",
                                "typeString": "literal_string \"Timelock::executeTransaction: Transaction hasn't been queued.\""
                              },
                              "value": "Timelock::executeTransaction: Transaction hasn't been queued."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7e3bf24eec453753018af1214443c72d8abb3050b249b2b3b9bb2adb04310650",
                                "typeString": "literal_string \"Timelock::executeTransaction: Transaction hasn't been queued.\""
                              }
                            ],
                            "id": 17606,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7690:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7690:100:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17612,
                        "nodeType": "ExpressionStatement",
                        "src": "7690:100:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17614,
                                  "name": "getBlockTimestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17725,
                                  "src": "7802:17:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 17615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7802:19:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 17616,
                                "name": "eta",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17580,
                                "src": "7825:3:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7802:26:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e",
                              "id": 17618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7830:71:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_381d72a875dbcf282eb0ce43951c66b6c4d7dadc6fdeb9294add773d09cd1687",
                                "typeString": "literal_string \"Timelock::executeTransaction: Transaction hasn't surpassed time lock.\""
                              },
                              "value": "Timelock::executeTransaction: Transaction hasn't surpassed time lock."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_381d72a875dbcf282eb0ce43951c66b6c4d7dadc6fdeb9294add773d09cd1687",
                                "typeString": "literal_string \"Timelock::executeTransaction: Transaction hasn't surpassed time lock.\""
                              }
                            ],
                            "id": 17613,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7794:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17619,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7794:108:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17620,
                        "nodeType": "ExpressionStatement",
                        "src": "7794:108:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 17622,
                                  "name": "getBlockTimestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17725,
                                  "src": "7914:17:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 17623,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7914:19:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17626,
                                    "name": "GRACE_PERIOD",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17262,
                                    "src": "7945:12:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17624,
                                    "name": "eta",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17580,
                                    "src": "7937:3:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 17625,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "7937:7:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 17627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7937:21:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7914:44:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e",
                              "id": 17629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7960:53:64",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2c4a83afbdcff2c4ba869dacfa7dabb27b12f774a0707feae827e36773b8166c",
                                "typeString": "literal_string \"Timelock::executeTransaction: Transaction is stale.\""
                              },
                              "value": "Timelock::executeTransaction: Transaction is stale."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2c4a83afbdcff2c4ba869dacfa7dabb27b12f774a0707feae827e36773b8166c",
                                "typeString": "literal_string \"Timelock::executeTransaction: Transaction is stale.\""
                              }
                            ],
                            "id": 17621,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7906:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7906:108:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17631,
                        "nodeType": "ExpressionStatement",
                        "src": "7906:108:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 17632,
                              "name": "queuedTransactions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17278,
                              "src": "8019:18:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                "typeString": "mapping(bytes32 => bool)"
                              }
                            },
                            "id": 17634,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17633,
                              "name": "txHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17594,
                              "src": "8038:6:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8019:26:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 17635,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8048:5:64",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "8019:34:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17637,
                        "nodeType": "ExpressionStatement",
                        "src": "8019:34:64"
                      },
                      {
                        "assignments": [
                          17639
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17639,
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "scope": 17715,
                            "src": "8058:21:64",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 17638,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "8058:5:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17640,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8058:21:64"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 17642,
                                  "name": "signature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17576,
                                  "src": "8094:9:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 17641,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8088:5:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 17643,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8088:16:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 17644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8088:23:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 17645,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8115:1:64",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8088:28:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 17666,
                          "nodeType": "Block",
                          "src": "8149:80:64",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 17664,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 17652,
                                  "name": "callData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17639,
                                  "src": "8154:8:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 17658,
                                                  "name": "signature",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 17576,
                                                  "src": "8205:9:64",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                  }
                                                ],
                                                "id": 17657,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "8199:5:64",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                                  "typeString": "type(bytes storage pointer)"
                                                },
                                                "typeName": "bytes"
                                              },
                                              "id": 17659,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "8199:16:64",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            ],
                                            "id": 17656,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44988,
                                            "src": "8189:9:64",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                              "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                          },
                                          "id": 17660,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8189:27:64",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 17655,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "8182:6:64",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes4_$",
                                          "typeString": "type(bytes4)"
                                        },
                                        "typeName": "bytes4"
                                      },
                                      "id": 17661,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8182:35:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 17662,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17578,
                                      "src": "8219:4:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17653,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44981,
                                      "src": "8165:3:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 17654,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8165:16:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 17663,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8165:59:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "8154:70:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 17665,
                              "nodeType": "ExpressionStatement",
                              "src": "8154:70:64"
                            }
                          ]
                        },
                        "id": 17667,
                        "nodeType": "IfStatement",
                        "src": "8084:145:64",
                        "trueBody": {
                          "id": 17651,
                          "nodeType": "Block",
                          "src": "8118:25:64",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 17649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 17647,
                                  "name": "callData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17639,
                                  "src": "8123:8:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 17648,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17578,
                                  "src": "8134:4:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "8123:15:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 17650,
                              "nodeType": "ExpressionStatement",
                              "src": "8123:15:64"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          17669,
                          17671
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17669,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 17715,
                            "src": "8287:12:64",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 17668,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8287:4:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17671,
                            "name": "returnData",
                            "nodeType": "VariableDeclaration",
                            "scope": 17715,
                            "src": "8301:23:64",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 17670,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "8301:5:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17679,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 17677,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17639,
                              "src": "8353:8:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17675,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17574,
                                "src": "8346:5:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17672,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17572,
                                  "src": "8328:6:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 17673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "call",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8328:11:64",
                                "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": 17674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8328:17:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$",
                                "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"
                              }
                            },
                            "id": 17676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8328:24:64",
                            "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": 17678,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8328:34:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8286:76:64"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 17681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "8370:8:64",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 17680,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17669,
                            "src": "8371:7:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17703,
                        "nodeType": "IfStatement",
                        "src": "8366:248:64",
                        "trueBody": {
                          "id": 17702,
                          "nodeType": "Block",
                          "src": "8380:234:64",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17682,
                                    "name": "returnData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17671,
                                    "src": "8389:10:64",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 17683,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8389:17:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 17684,
                                  "name": "ERROR_MESSAGE_SHIFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10708,
                                  "src": "8410:19:64",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8389:40:64",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 17700,
                                "nodeType": "Block",
                                "src": "8520:90:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20",
                                              "id": 17693,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "8550:32:64",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_721243222ba439e335139d667b8b83badd11daee78ee401aba86ff702b853466",
                                                "typeString": "literal_string \"Timelock::executeTransaction: \""
                                              },
                                              "value": "Timelock::executeTransaction: "
                                            },
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 17695,
                                                  "name": "returnData",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 17671,
                                                  "src": "8591:10:64",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                ],
                                                "id": 17694,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "8584:6:64",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                  "typeString": "type(string storage pointer)"
                                                },
                                                "typeName": "string"
                                              },
                                              "id": 17696,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "8584:18:64",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_721243222ba439e335139d667b8b83badd11daee78ee401aba86ff702b853466",
                                                "typeString": "literal_string \"Timelock::executeTransaction: \""
                                              },
                                              {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            ],
                                            "id": 17692,
                                            "name": "_addErrorMessage",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10801,
                                            "src": "8533:16:64",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$",
                                              "typeString": "function (string memory,string memory) pure returns (string memory)"
                                            }
                                          },
                                          "id": 17697,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8533:70:64",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 17691,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44999,
                                          45000
                                        ],
                                        "referencedDeclaration": 45000,
                                        "src": "8526:6:64",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 17698,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8526:78:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 17699,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8526:78:64"
                                  }
                                ]
                              },
                              "id": 17701,
                              "nodeType": "IfStatement",
                              "src": "8385:225:64",
                              "trueBody": {
                                "id": 17690,
                                "nodeType": "Block",
                                "src": "8431:83:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e",
                                          "id": 17687,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8444:63:64",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c8cfef133518ef6ab39ac5f19562a74f4f875e9130c8117d51f88a557b6e72c9",
                                            "typeString": "literal_string \"Timelock::executeTransaction: Transaction execution reverted.\""
                                          },
                                          "value": "Timelock::executeTransaction: Transaction execution reverted."
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_c8cfef133518ef6ab39ac5f19562a74f4f875e9130c8117d51f88a557b6e72c9",
                                            "typeString": "literal_string \"Timelock::executeTransaction: Transaction execution reverted.\""
                                          }
                                        ],
                                        "id": 17686,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44999,
                                          45000
                                        ],
                                        "referencedDeclaration": 45000,
                                        "src": "8437:6:64",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 17688,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8437:71:64",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 17689,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8437:71:64"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 17705,
                              "name": "txHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17594,
                              "src": "8642:6:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17706,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17572,
                              "src": "8650:6:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17707,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17574,
                              "src": "8658:5:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17708,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17576,
                              "src": "8665:9:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17709,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17578,
                              "src": "8676:4:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 17710,
                              "name": "eta",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17580,
                              "src": "8682:3:64",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17704,
                            "name": "ExecuteTransaction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17318,
                            "src": "8623:18:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,uint256,string memory,bytes memory,uint256)"
                            }
                          },
                          "id": 17711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8623:63:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17712,
                        "nodeType": "EmitStatement",
                        "src": "8618:68:64"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17713,
                          "name": "returnData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17671,
                          "src": "8698:10:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 17584,
                        "id": 17714,
                        "nodeType": "Return",
                        "src": "8691:17:64"
                      }
                    ]
                  },
                  "documentation": "@notice Executes a previously queued transaction from the governance.\n@param target The contract to call.\n@param value The amount to send in the transaction.\n@param signature The stanndard representation of the function called.\n@param data The ethereum transaction input data payload.\n@param eta Estimated Time of Accomplishment. The timestamp that the\nproposal will be available for execution, set once the vote succeeds.\n",
                  "id": 17716,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeTransaction",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17572,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 17716,
                        "src": "7378:14:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17571,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7378:7:64",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17574,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 17716,
                        "src": "7396:13:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17573,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7396:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17576,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 17716,
                        "src": "7413:23:64",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 17575,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7413:6:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17578,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 17716,
                        "src": "7440:17:64",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17577,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7440:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17580,
                        "name": "eta",
                        "nodeType": "VariableDeclaration",
                        "scope": 17716,
                        "src": "7461:11:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7461:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7374:101:64"
                  },
                  "returnParameters": {
                    "id": 17584,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17583,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 17716,
                        "src": "7500:12:64",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17582,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7500:5:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7499:14:64"
                  },
                  "scope": 17726,
                  "src": "7347:1365:64",
                  "stateMutability": "payable",
                  "superFunction": 17251,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 17724,
                    "nodeType": "Block",
                    "src": "9074:86:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17721,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44984,
                            "src": "9141:5:64",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 17722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9141:15:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 17720,
                        "id": 17723,
                        "nodeType": "Return",
                        "src": "9134:22:64"
                      }
                    ]
                  },
                  "documentation": "@notice A function used to get the current Block Timestamp.\n@dev Timestamp of the current block in seconds since the epoch.\nIt is a Unix time stamp. So, it has the complete information about\nthe date, hours, minutes, and seconds (in UTC) when the block was\ncreated.\n",
                  "id": 17725,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBlockTimestamp",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17717,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9039:2:64"
                  },
                  "returnParameters": {
                    "id": 17720,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17719,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 17725,
                        "src": "9065:7:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17718,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9065:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9064:9:64"
                  },
                  "scope": 17726,
                  "src": "9013:147:64",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 17727,
              "src": "2368:6794:64"
            }
          ],
          "src": "0:9163:64"
        },
        "id": 64
      },
      "contracts/governance/Vesting/DevelopmentFund.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/DevelopmentFund.sol",
          "exportedSymbols": {
            "DevelopmentFund": [
              18571
            ]
          },
          "id": 18572,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 17728,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:65"
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../../openzeppelin/SafeMath.sol",
              "id": 17729,
              "nodeType": "ImportDirective",
              "scope": 18572,
              "sourceUnit": 42310,
              "src": "26:41:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 17730,
              "nodeType": "ImportDirective",
              "scope": 18572,
              "sourceUnit": 24700,
              "src": "68:37:65",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": " @title A holding contract for Sovryn Development Fund.\n @author Franklin Richards\n @notice You can use this contract for timed token release from Dev Fund.",
              "fullyImplemented": true,
              "id": 18571,
              "linearizedBaseContracts": [
                18571
              ],
              "name": "DevelopmentFund",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 17733,
                  "libraryName": {
                    "contractScope": null,
                    "id": 17731,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "315:8:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "309:27:65",
                  "typeName": {
                    "id": 17732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "328:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 17735,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 18571,
                  "src": "392:17:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$24699",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17734,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "392:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "canonicalName": "DevelopmentFund.Status",
                  "id": 17739,
                  "members": [
                    {
                      "id": 17736,
                      "name": "Deployed",
                      "nodeType": "EnumValue",
                      "src": "469:8:65"
                    },
                    {
                      "id": 17737,
                      "name": "Active",
                      "nodeType": "EnumValue",
                      "src": "479:6:65"
                    },
                    {
                      "id": 17738,
                      "name": "Expired",
                      "nodeType": "EnumValue",
                      "src": "487:7:65"
                    }
                  ],
                  "name": "Status",
                  "nodeType": "EnumDefinition",
                  "src": "455:41:65"
                },
                {
                  "constant": false,
                  "id": 17741,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 18571,
                  "src": "498:20:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Status_$17739",
                    "typeString": "enum DevelopmentFund.Status"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17740,
                    "name": "Status",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17739,
                    "src": "498:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$17739",
                      "typeString": "enum DevelopmentFund.Status"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17743,
                  "name": "lockedTokenOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 18571,
                  "src": "588:31:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17742,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "588:7:65",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17745,
                  "name": "unlockedTokenOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 18571,
                  "src": "688:33:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17744,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "688:7:65",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17747,
                  "name": "safeVault",
                  "nodeType": "VariableDeclaration",
                  "scope": 18571,
                  "src": "777:24:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17746,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "777:7:65",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17749,
                  "name": "newLockedTokenOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 18571,
                  "src": "868:34:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17748,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "868:7:65",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17751,
                  "name": "lastReleaseTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 18571,
                  "src": "986:30:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17750,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "986:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17754,
                  "name": "releaseDuration",
                  "nodeType": "VariableDeclaration",
                  "scope": 18571,
                  "src": "1072:32:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17752,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1072:7:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17753,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1072:9:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17757,
                  "name": "releaseTokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 18571,
                  "src": "1146:35:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17755,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1146:7:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17756,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1146:9:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when the contract is activated.",
                  "id": 17759,
                  "name": "DevelopmentFundActivated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17758,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1283:2:65"
                  },
                  "src": "1253:33:65"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when the contract is expired due to total token transfer.",
                  "id": 17761,
                  "name": "DevelopmentFundExpired",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17760,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1396:2:65"
                  },
                  "src": "1368:31:65"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a new locked owner is added to the contract.\n @param _initiator The address which initiated this event to be emitted.\n @param _newLockedOwner The address which is added as the new locked owner.\n @dev Can only be initiated by the current locked owner.",
                  "id": 17767,
                  "name": "NewLockedOwnerAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17763,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 17767,
                        "src": "1717:26:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17762,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1717:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17765,
                        "indexed": true,
                        "name": "_newLockedOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 17767,
                        "src": "1745:31:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17764,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1745:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1716:61:65"
                  },
                  "src": "1691:87:65"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a new locked owner is approved to the contract.\n @param _initiator The address which initiated this event to be emitted.\n @param _oldLockedOwner The address of the previous locked owner.\n @param _newLockedOwner The address which is added as the new locked owner.\n @dev Can only be initiated by the current unlocked owner.",
                  "id": 17775,
                  "name": "NewLockedOwnerApproved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17774,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17769,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 17775,
                        "src": "2174:26:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17768,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2174:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17771,
                        "indexed": true,
                        "name": "_oldLockedOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 17775,
                        "src": "2202:31:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17770,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2202:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17773,
                        "indexed": true,
                        "name": "_newLockedOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 17775,
                        "src": "2235:31:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17772,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2235:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2173:94:65"
                  },
                  "src": "2145:123:65"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a new unlocked owner is updated in the contract.\n @param _initiator The address which initiated this event to be emitted.\n @param _newUnlockedOwner The address which is updated as the new unlocked owner.\n @dev Can only be initiated by the current locked owner.",
                  "id": 17781,
                  "name": "UnlockedOwnerUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17780,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17777,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 17781,
                        "src": "2597:26:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17776,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2597:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17779,
                        "indexed": true,
                        "name": "_newUnlockedOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 17781,
                        "src": "2625:33:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17778,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2625:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2596:63:65"
                  },
                  "src": "2570:90:65"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a new token deposit is done.\n @param _initiator The address which initiated this event to be emitted.\n @param _amount The total amount of token deposited.",
                  "id": 17787,
                  "name": "TokenDeposit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17786,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17783,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 17787,
                        "src": "2871:26:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17782,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2871:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17785,
                        "indexed": false,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 17787,
                        "src": "2899:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17784,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2899:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2870:45:65"
                  },
                  "src": "2852:64:65"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a new release schedule is created.\n @param _initiator The address which initiated this event to be emitted.\n @param _releaseCount The number of releases planned in the schedule.",
                  "id": 17793,
                  "name": "TokenReleaseChanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17792,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17789,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 17793,
                        "src": "3157:26:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17788,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3157:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17791,
                        "indexed": false,
                        "name": "_releaseCount",
                        "nodeType": "VariableDeclaration",
                        "scope": 17793,
                        "src": "3185:21:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17790,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3185:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3156:51:65"
                  },
                  "src": "3131:77:65"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a unlocked owner transfers all the tokens to a safe vault.\n @param _initiator The address which initiated this event to be emitted.\n @param _receiver The address which receives this token withdrawn.\n @param _amount The total amount of token transferred.\n @dev This is done in an emergency situation only to a predetermined wallet by locked token owner.",
                  "id": 17801,
                  "name": "LockedTokenTransferByUnlockedOwner",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17800,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17795,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 17801,
                        "src": "3647:26:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17794,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3647:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17797,
                        "indexed": true,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 17801,
                        "src": "3675:25:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17796,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3675:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17799,
                        "indexed": false,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 17801,
                        "src": "3702:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17798,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3702:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3646:72:65"
                  },
                  "src": "3606:113:65"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a unlocked owner withdraws the released tokens.\n @param _initiator The address which initiated this event to be emitted.\n @param _amount The total amount of token withdrawn.\n @param _releaseCount The total number of releases done based on duration.",
                  "id": 17809,
                  "name": "UnlockedTokenWithdrawalByUnlockedOwner",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17808,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17803,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 17809,
                        "src": "4054:26:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17802,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4054:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17805,
                        "indexed": false,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 17809,
                        "src": "4082:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17804,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4082:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17807,
                        "indexed": false,
                        "name": "_releaseCount",
                        "nodeType": "VariableDeclaration",
                        "scope": 17809,
                        "src": "4099:21:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17806,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4099:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4053:68:65"
                  },
                  "src": "4009:113:65"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a locked owner transfers all the tokens to a receiver.\n @param _initiator The address which initiated this event to be emitted.\n @param _receiver The address which receives this token transfer.\n @param _amount The total amount of token transferred.\n @dev This is done only by locked token owner.",
                  "id": 17817,
                  "name": "LockedTokenTransferByLockedOwner",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17816,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17811,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 17817,
                        "src": "4502:26:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17810,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4502:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17813,
                        "indexed": true,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 17817,
                        "src": "4530:25:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17812,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4530:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17815,
                        "indexed": false,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 17817,
                        "src": "4557:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17814,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4557:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4501:72:65"
                  },
                  "src": "4463:111:65"
                },
                {
                  "body": {
                    "id": 17828,
                    "nodeType": "Block",
                    "src": "4627:94:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17823,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17820,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "4639:3:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17821,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4639:10:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 17822,
                                "name": "lockedTokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17743,
                                "src": "4653:16:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4639:30:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f6e6c79204c6f636b656420546f6b656e204f776e65722063616e2063616c6c20746869732e",
                              "id": 17824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4671:40:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5c929304a4ee9f0daf95ea90d66c4265fad0cbf8384266c0a2dc46ee1ef0ce11",
                                "typeString": "literal_string \"Only Locked Token Owner can call this.\""
                              },
                              "value": "Only Locked Token Owner can call this."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5c929304a4ee9f0daf95ea90d66c4265fad0cbf8384266c0a2dc46ee1ef0ce11",
                                "typeString": "literal_string \"Only Locked Token Owner can call this.\""
                              }
                            ],
                            "id": 17819,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4631:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4631:81:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17826,
                        "nodeType": "ExpressionStatement",
                        "src": "4631:81:65"
                      },
                      {
                        "id": 17827,
                        "nodeType": "PlaceholderStatement",
                        "src": "4716:1:65"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 17829,
                  "name": "onlyLockedTokenOwner",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 17818,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4624:2:65"
                  },
                  "src": "4595:126:65",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17840,
                    "nodeType": "Block",
                    "src": "4758:98:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17832,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "4770:3:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17833,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4770:10:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 17834,
                                "name": "unlockedTokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17745,
                                "src": "4784:18:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4770:32:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f6e6c7920556e6c6f636b656420546f6b656e204f776e65722063616e2063616c6c20746869732e",
                              "id": 17836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4804:42:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8e54e09f9afdd44796207c6133661c2b758ce82bc0edca0ded31c88747fb4f54",
                                "typeString": "literal_string \"Only Unlocked Token Owner can call this.\""
                              },
                              "value": "Only Unlocked Token Owner can call this."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8e54e09f9afdd44796207c6133661c2b758ce82bc0edca0ded31c88747fb4f54",
                                "typeString": "literal_string \"Only Unlocked Token Owner can call this.\""
                              }
                            ],
                            "id": 17831,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4762:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4762:85:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17838,
                        "nodeType": "ExpressionStatement",
                        "src": "4762:85:65"
                      },
                      {
                        "id": 17839,
                        "nodeType": "PlaceholderStatement",
                        "src": "4851:1:65"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 17841,
                  "name": "onlyUnlockedTokenOwner",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 17830,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4755:2:65"
                  },
                  "src": "4724:132:65",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17853,
                    "nodeType": "Block",
                    "src": "4890:76:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_Status_$17739",
                                "typeString": "enum DevelopmentFund.Status"
                              },
                              "id": 17848,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 17846,
                                "name": "status",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17741,
                                "src": "4902:6:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Status_$17739",
                                  "typeString": "enum DevelopmentFund.Status"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 17847,
                                "name": "s",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17843,
                                "src": "4912:1:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Status_$17739",
                                  "typeString": "enum DevelopmentFund.Status"
                                }
                              },
                              "src": "4902:11:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "54686520636f6e7472616374206973206e6f7420696e207468652072696768742073746174652e",
                              "id": 17849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4915:41:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5d7f5063624a734564358625b39fbb9f5620c2cf8ac0451c563a74ceb724ac90",
                                "typeString": "literal_string \"The contract is not in the right state.\""
                              },
                              "value": "The contract is not in the right state."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5d7f5063624a734564358625b39fbb9f5620c2cf8ac0451c563a74ceb724ac90",
                                "typeString": "literal_string \"The contract is not in the right state.\""
                              }
                            ],
                            "id": 17845,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4894:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4894:63:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17851,
                        "nodeType": "ExpressionStatement",
                        "src": "4894:63:65"
                      },
                      {
                        "id": 17852,
                        "nodeType": "PlaceholderStatement",
                        "src": "4961:1:65"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 17854,
                  "name": "checkStatus",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 17844,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17843,
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "scope": 17854,
                        "src": "4880:8:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Status_$17739",
                          "typeString": "enum DevelopmentFund.Status"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 17842,
                          "name": "Status",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 17739,
                          "src": "4880:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$17739",
                            "typeString": "enum DevelopmentFund.Status"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4879:10:65"
                  },
                  "src": "4859:107:65",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17958,
                    "nodeType": "Block",
                    "src": "5992:968:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 17874,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17856,
                                "src": "6004:4:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17876,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6020:1:65",
                                    "subdenomination": null,
                                    "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": 17875,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6012:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 17877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6012:10:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6004:18:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c696420534f5620416464726573732e",
                              "id": 17879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6024:22:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f5840b4863e6ab75c00993b856f6487e94b357014931d34497992ecc40c5bcf3",
                                "typeString": "literal_string \"Invalid SOV Address.\""
                              },
                              "value": "Invalid SOV Address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f5840b4863e6ab75c00993b856f6487e94b357014931d34497992ecc40c5bcf3",
                                "typeString": "literal_string \"Invalid SOV Address.\""
                              }
                            ],
                            "id": 17873,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5996:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5996:51:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17881,
                        "nodeType": "ExpressionStatement",
                        "src": "5996:51:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 17883,
                                "name": "_lockedTokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17858,
                                "src": "6059:17:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17885,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6088:1:65",
                                    "subdenomination": null,
                                    "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": 17884,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6080:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 17886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6080:10:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6059:31:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4c6f636b656420746f6b656e202620636f6e7472616374206f776e6572206164647265737320696e76616c69642e",
                              "id": 17888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6092:48:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c4cc0891f3d279cb5b9d92a9f7413266d3b265a899e08c35d68c250dd69349f8",
                                "typeString": "literal_string \"Locked token & contract owner address invalid.\""
                              },
                              "value": "Locked token & contract owner address invalid."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c4cc0891f3d279cb5b9d92a9f7413266d3b265a899e08c35d68c250dd69349f8",
                                "typeString": "literal_string \"Locked token & contract owner address invalid.\""
                              }
                            ],
                            "id": 17882,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6051:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6051:90:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17890,
                        "nodeType": "ExpressionStatement",
                        "src": "6051:90:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 17892,
                                "name": "_safeVault",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17860,
                                "src": "6153:10:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17894,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6175:1:65",
                                    "subdenomination": null,
                                    "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": 17893,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6167:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 17895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6167:10:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6153:24:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "53616665205661756c74206164647265737320696e76616c69642e",
                              "id": 17897,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6179:29:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_da6be1027d5d214157e2a196df12ad6e0dbbdabd2a3c87c1a575405ab5580184",
                                "typeString": "literal_string \"Safe Vault address invalid.\""
                              },
                              "value": "Safe Vault address invalid."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_da6be1027d5d214157e2a196df12ad6e0dbbdabd2a3c87c1a575405ab5580184",
                                "typeString": "literal_string \"Safe Vault address invalid.\""
                              }
                            ],
                            "id": 17891,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6145:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6145:64:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17899,
                        "nodeType": "ExpressionStatement",
                        "src": "6145:64:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 17901,
                                "name": "_unlockedTokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17862,
                                "src": "6221:19:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17903,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6252:1:65",
                                    "subdenomination": null,
                                    "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": 17902,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6244:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 17904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6244:10:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6221:33:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "556e6c6f636b656420746f6b656e206164647265737320696e76616c69642e",
                              "id": 17906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6256:33:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_27bbeb79a7d6953ffa5739b383c8530a6403522f8f7247f9903b343e0c9fae2e",
                                "typeString": "literal_string \"Unlocked token address invalid.\""
                              },
                              "value": "Unlocked token address invalid."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_27bbeb79a7d6953ffa5739b383c8530a6403522f8f7247f9903b343e0c9fae2e",
                                "typeString": "literal_string \"Unlocked token address invalid.\""
                              }
                            ],
                            "id": 17900,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6213:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6213:77:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17908,
                        "nodeType": "ExpressionStatement",
                        "src": "6213:77:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17909,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17735,
                            "src": "6295:3:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17911,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17856,
                                "src": "6308:4:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 17910,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24699,
                              "src": "6301:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 17912,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6301:12:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "6295:18:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 17914,
                        "nodeType": "ExpressionStatement",
                        "src": "6295:18:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17915,
                            "name": "lockedTokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17743,
                            "src": "6317:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 17916,
                            "name": "_lockedTokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17858,
                            "src": "6336:17:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6317:36:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17918,
                        "nodeType": "ExpressionStatement",
                        "src": "6317:36:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17919,
                            "name": "safeVault",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17747,
                            "src": "6357:9:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 17920,
                            "name": "_safeVault",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17860,
                            "src": "6369:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6357:22:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17922,
                        "nodeType": "ExpressionStatement",
                        "src": "6357:22:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17923,
                            "name": "unlockedTokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17745,
                            "src": "6383:18:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 17924,
                            "name": "_unlockedTokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17862,
                            "src": "6404:19:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6383:40:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17926,
                        "nodeType": "ExpressionStatement",
                        "src": "6383:40:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17927,
                            "name": "lastReleaseTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17751,
                            "src": "6428:15:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 17928,
                            "name": "_lastReleaseTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17864,
                            "src": "6446:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6428:34:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17930,
                        "nodeType": "ExpressionStatement",
                        "src": "6428:34:65"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17931,
                            "name": "_lastReleaseTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17864,
                            "src": "6576:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 17932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6596:1:65",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6576:21:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17940,
                        "nodeType": "IfStatement",
                        "src": "6572:70:65",
                        "trueBody": {
                          "id": 17939,
                          "nodeType": "Block",
                          "src": "6599:43:65",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 17937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 17934,
                                  "name": "lastReleaseTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17751,
                                  "src": "6604:15:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17935,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44984,
                                    "src": "6622:5:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 17936,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6622:15:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6604:33:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17938,
                              "nodeType": "ExpressionStatement",
                              "src": "6604:33:65"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17942,
                                  "name": "_releaseDuration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17867,
                                  "src": "6731:16:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 17943,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6731:23:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17944,
                                  "name": "_releaseTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17870,
                                  "src": "6758:19:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 17945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6758:26:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6731:53:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "52656c65617365205363686564756c6520646f6573206e6f74206d617463682e",
                              "id": 17947,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6786:34:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c8df1f82ab880104af0b41c8d1b18b1a71887070e36c5f7eec947dcf664b5c5d",
                                "typeString": "literal_string \"Release Schedule does not match.\""
                              },
                              "value": "Release Schedule does not match."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c8df1f82ab880104af0b41c8d1b18b1a71887070e36c5f7eec947dcf664b5c5d",
                                "typeString": "literal_string \"Release Schedule does not match.\""
                              }
                            ],
                            "id": 17941,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6723:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6723:98:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17949,
                        "nodeType": "ExpressionStatement",
                        "src": "6723:98:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17950,
                            "name": "releaseDuration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17754,
                            "src": "6878:15:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 17951,
                            "name": "_releaseDuration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17867,
                            "src": "6896:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "6878:34:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "id": 17953,
                        "nodeType": "ExpressionStatement",
                        "src": "6878:34:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17954,
                            "name": "releaseTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17757,
                            "src": "6916:18:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 17955,
                            "name": "_releaseTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17870,
                            "src": "6937:19:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "6916:40:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "id": 17957,
                        "nodeType": "ExpressionStatement",
                        "src": "6916:40:65"
                      }
                    ]
                  },
                  "documentation": "@notice Setup the required parameters.\n@param _SOV The SOV token address.\n@param _lockedTokenOwner The owner of the locked tokens & contract.\n@param _safeVault The emergency wallet/contract to transfer token.\n@param _unlockedTokenOwner The owner of the unlocked tokens.\n@param _lastReleaseTime If the last release time is to be changed, zero if no change required.\n@param _releaseDuration The time duration between each release calculated from `lastReleaseTime` in seconds.\n@param _releaseTokenAmount The amount of token to be released in each duration/interval.\n@dev Initial release schedule should be verified, error will result in either redeployment or calling changeTokenReleaseSchedule() after init() along with token transfer.",
                  "id": 17959,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17871,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17856,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 17959,
                        "src": "5782:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17855,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5782:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17858,
                        "name": "_lockedTokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 17959,
                        "src": "5798:25:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17857,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5798:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17860,
                        "name": "_safeVault",
                        "nodeType": "VariableDeclaration",
                        "scope": 17959,
                        "src": "5827:18:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17859,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5827:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17862,
                        "name": "_unlockedTokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 17959,
                        "src": "5849:27:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17861,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5849:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17864,
                        "name": "_lastReleaseTime",
                        "nodeType": "VariableDeclaration",
                        "scope": 17959,
                        "src": "5880:24:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17863,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5880:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17867,
                        "name": "_releaseDuration",
                        "nodeType": "VariableDeclaration",
                        "scope": 17959,
                        "src": "5908:33:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 17865,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5908:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 17866,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5908:9:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17870,
                        "name": "_releaseTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 17959,
                        "src": "5945:36:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 17868,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5945:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 17869,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5945:9:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5778:206:65"
                  },
                  "returnParameters": {
                    "id": 17872,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5992:0:65"
                  },
                  "scope": 18571,
                  "src": "5767:1193:65",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18030,
                    "nodeType": "Block",
                    "src": "7189:654:65",
                    "statements": [
                      {
                        "assignments": [
                          17969
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17969,
                            "name": "_releaseTokenAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 18030,
                            "src": "7193:36:65",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 17967,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7193:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17968,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "7193:9:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17971,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 17970,
                          "name": "releaseTokenAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17757,
                          "src": "7232:18:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7193:57:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17973,
                                  "name": "_releaseTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17969,
                                  "src": "7262:19:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 17974,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7262:26:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17975,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7292:1:65",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7262:31:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "52656c65617365205363686564756c65206e6f74207365742e",
                              "id": 17977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7295:27:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_856b2da96439e3584b9fa283715e9c9ef7315e55d7c1bc96a8c93577c2af8e8a",
                                "typeString": "literal_string \"Release Schedule not set.\""
                              },
                              "value": "Release Schedule not set."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_856b2da96439e3584b9fa283715e9c9ef7315e55d7c1bc96a8c93577c2af8e8a",
                                "typeString": "literal_string \"Release Schedule not set.\""
                              }
                            ],
                            "id": 17972,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7254:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7254:69:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17979,
                        "nodeType": "ExpressionStatement",
                        "src": "7254:69:65"
                      },
                      {
                        "assignments": [
                          17981
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17981,
                            "name": "_releaseTotalTokenAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 18030,
                            "src": "7391:32:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17980,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7391:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17982,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7391:32:65"
                      },
                      {
                        "body": {
                          "id": 18003,
                          "nodeType": "Block",
                          "src": "7514:99:65",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18001,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 17994,
                                  "name": "_releaseTotalTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17981,
                                  "src": "7519:24:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 17997,
                                        "name": "_releaseTokenAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17969,
                                        "src": "7575:19:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 17999,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 17998,
                                        "name": "amountIndex",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17984,
                                        "src": "7595:11:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7575:32:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17995,
                                      "name": "_releaseTotalTokenAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17981,
                                      "src": "7546:24:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 17996,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "7546:28:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 18000,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7546:62:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7519:89:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18002,
                              "nodeType": "ExpressionStatement",
                              "src": "7519:89:65"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17987,
                            "name": "amountIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17984,
                            "src": "7457:11:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17988,
                              "name": "_releaseTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17969,
                              "src": "7471:19:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 17989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7471:26:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7457:40:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18004,
                        "initializationExpression": {
                          "assignments": [
                            17984
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 17984,
                              "name": "amountIndex",
                              "nodeType": "VariableDeclaration",
                              "scope": 18004,
                              "src": "7432:19:65",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 17983,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7432:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 17986,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 17985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7454:1:65",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7432:23:65"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 17992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "7499:13:65",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 17991,
                              "name": "amountIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17984,
                              "src": "7499:11:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 17993,
                          "nodeType": "ExpressionStatement",
                          "src": "7499:13:65"
                        },
                        "nodeType": "ForStatement",
                        "src": "7427:186:65"
                      },
                      {
                        "assignments": [
                          18006
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18006,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 18030,
                            "src": "7617:13:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 18005,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7617:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18016,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18009,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "7650:3:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18010,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7650:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 18012,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45218,
                                  "src": "7670:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DevelopmentFund_$18571",
                                    "typeString": "contract DevelopmentFund"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_DevelopmentFund_$18571",
                                    "typeString": "contract DevelopmentFund"
                                  }
                                ],
                                "id": 18011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7662:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 18013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7662:13:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18014,
                              "name": "_releaseTotalTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17981,
                              "src": "7677:24:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18007,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17735,
                              "src": "7633:3:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 18008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24682,
                            "src": "7633:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 18015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7633:69:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7617:85:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18018,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18006,
                              "src": "7714:8:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4e6f7420656e6f75676820746f6b656e2073656e7420746f206368616e67652072656c65617365207363686564756c652e",
                              "id": 18019,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7724:51:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d31bfa42fd0b6ce1de7280de7c10ca2116e13c021ce43c9065e819f16326d492",
                                "typeString": "literal_string \"Not enough token sent to change release schedule.\""
                              },
                              "value": "Not enough token sent to change release schedule."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d31bfa42fd0b6ce1de7280de7c10ca2116e13c021ce43c9065e819f16326d492",
                                "typeString": "literal_string \"Not enough token sent to change release schedule.\""
                              }
                            ],
                            "id": 18017,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7706:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7706:70:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18021,
                        "nodeType": "ExpressionStatement",
                        "src": "7706:70:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18022,
                            "name": "status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17741,
                            "src": "7781:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$17739",
                              "typeString": "enum DevelopmentFund.Status"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18023,
                              "name": "Status",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17739,
                              "src": "7790:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Status_$17739_$",
                                "typeString": "type(enum DevelopmentFund.Status)"
                              }
                            },
                            "id": 18024,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Active",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7790:13:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$17739",
                              "typeString": "enum DevelopmentFund.Status"
                            }
                          },
                          "src": "7781:22:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$17739",
                            "typeString": "enum DevelopmentFund.Status"
                          }
                        },
                        "id": 18026,
                        "nodeType": "ExpressionStatement",
                        "src": "7781:22:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 18027,
                            "name": "DevelopmentFundActivated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17759,
                            "src": "7813:24:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 18028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7813:26:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18029,
                        "nodeType": "EmitStatement",
                        "src": "7808:31:65"
                      }
                    ]
                  },
                  "documentation": "@notice This function is called once after deployment for token transfer based on schedule.\n@dev Without calling this function, the contract will not work.",
                  "id": 18031,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17962,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17739,
                            "src": "7172:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$17739_$",
                              "typeString": "type(enum DevelopmentFund.Status)"
                            }
                          },
                          "id": 17963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Deployed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7172:15:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$17739",
                            "typeString": "enum DevelopmentFund.Status"
                          }
                        }
                      ],
                      "id": 17964,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 17961,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17854,
                        "src": "7160:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$17739_$",
                          "typeString": "modifier (enum DevelopmentFund.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7160:28:65"
                    }
                  ],
                  "name": "init",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17960,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7150:2:65"
                  },
                  "returnParameters": {
                    "id": 17965,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7189:0:65"
                  },
                  "scope": 18571,
                  "src": "7137:706:65",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18061,
                    "nodeType": "Block",
                    "src": "8087:204:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 18047,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 18043,
                                "name": "_newLockedTokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18033,
                                "src": "8099:20:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 18045,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8131:1:65",
                                    "subdenomination": null,
                                    "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": 18044,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8123:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 18046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8123:10:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "8099:34:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4e6577206c6f636b656420746f6b656e206f776e6572206164647265737320696e76616c69642e",
                              "id": 18048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8135:41:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f459c30109e38c5b17145e6d0bc474effe9b17c7fb2b3597f0b4426a60e8332c",
                                "typeString": "literal_string \"New locked token owner address invalid.\""
                              },
                              "value": "New locked token owner address invalid."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f459c30109e38c5b17145e6d0bc474effe9b17c7fb2b3597f0b4426a60e8332c",
                                "typeString": "literal_string \"New locked token owner address invalid.\""
                              }
                            ],
                            "id": 18042,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8091:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18049,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8091:86:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18050,
                        "nodeType": "ExpressionStatement",
                        "src": "8091:86:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18051,
                            "name": "newLockedTokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17749,
                            "src": "8182:19:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18052,
                            "name": "_newLockedTokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18033,
                            "src": "8204:20:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8182:42:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18054,
                        "nodeType": "ExpressionStatement",
                        "src": "8182:42:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18056,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "8254:3:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18057,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8254:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18058,
                              "name": "_newLockedTokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18033,
                              "src": "8266:20:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18055,
                            "name": "NewLockedOwnerAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17767,
                            "src": "8234:19:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 18059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8234:53:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18060,
                        "nodeType": "EmitStatement",
                        "src": "8229:58:65"
                      }
                    ]
                  },
                  "documentation": "@notice Update Locked Token Owner.\n@param _newLockedTokenOwner The owner of the locked tokens & contract.",
                  "id": 18062,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 18036,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18035,
                        "name": "onlyLockedTokenOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17829,
                        "src": "8039:20:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8039:20:65"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18038,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17739,
                            "src": "8072:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$17739_$",
                              "typeString": "type(enum DevelopmentFund.Status)"
                            }
                          },
                          "id": 18039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Active",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8072:13:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$17739",
                            "typeString": "enum DevelopmentFund.Status"
                          }
                        }
                      ],
                      "id": 18040,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18037,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17854,
                        "src": "8060:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$17739_$",
                          "typeString": "modifier (enum DevelopmentFund.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8060:26:65"
                    }
                  ],
                  "name": "updateLockedTokenOwner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18034,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18033,
                        "name": "_newLockedTokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 18062,
                        "src": "8002:28:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18032,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8002:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8001:30:65"
                  },
                  "returnParameters": {
                    "id": 18041,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8087:0:65"
                  },
                  "scope": 18571,
                  "src": "7970:321:65",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18097,
                    "nodeType": "Block",
                    "src": "8552:243:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 18076,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 18072,
                                "name": "newLockedTokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17749,
                                "src": "8564:19:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 18074,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8595:1:65",
                                    "subdenomination": null,
                                    "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": 18073,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8587:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 18075,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8587:10:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "8564:33:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4e6f206e6577206c6f636b6564206f776e65722061646465642e",
                              "id": 18077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8599:28:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7aed985354451fea7d98d16239f3bcb98e06c223f15f7e0d453e7568512d455d",
                                "typeString": "literal_string \"No new locked owner added.\""
                              },
                              "value": "No new locked owner added."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7aed985354451fea7d98d16239f3bcb98e06c223f15f7e0d453e7568512d455d",
                                "typeString": "literal_string \"No new locked owner added.\""
                              }
                            ],
                            "id": 18071,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8556:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8556:72:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18079,
                        "nodeType": "ExpressionStatement",
                        "src": "8556:72:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18081,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "8661:3:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8661:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18083,
                              "name": "lockedTokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17743,
                              "src": "8673:16:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18084,
                              "name": "newLockedTokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17749,
                              "src": "8691:19:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18080,
                            "name": "NewLockedOwnerApproved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17775,
                            "src": "8638:22:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 18085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8638:73:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18086,
                        "nodeType": "EmitStatement",
                        "src": "8633:78:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18087,
                            "name": "lockedTokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17743,
                            "src": "8716:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18088,
                            "name": "newLockedTokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17749,
                            "src": "8735:19:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8716:38:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18090,
                        "nodeType": "ExpressionStatement",
                        "src": "8716:38:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18091,
                            "name": "newLockedTokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17749,
                            "src": "8759:19:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 18093,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8789:1:65",
                                "subdenomination": null,
                                "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": 18092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8781:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 18094,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8781:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "8759:32:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18096,
                        "nodeType": "ExpressionStatement",
                        "src": "8759:32:65"
                      }
                    ]
                  },
                  "documentation": "@notice Approve Locked Token Owner.\n@dev This approval is an added security to avoid development fund takeover by a compromised locked token owner.",
                  "id": 18098,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 18065,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18064,
                        "name": "onlyUnlockedTokenOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17841,
                        "src": "8502:22:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8502:22:65"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18067,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17739,
                            "src": "8537:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$17739_$",
                              "typeString": "type(enum DevelopmentFund.Status)"
                            }
                          },
                          "id": 18068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Active",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8537:13:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$17739",
                            "typeString": "enum DevelopmentFund.Status"
                          }
                        }
                      ],
                      "id": 18069,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18066,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17854,
                        "src": "8525:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$17739_$",
                          "typeString": "modifier (enum DevelopmentFund.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8525:26:65"
                    }
                  ],
                  "name": "approveLockedTokenOwner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18063,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8492:2:65"
                  },
                  "returnParameters": {
                    "id": 18070,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8552:0:65"
                  },
                  "scope": 18571,
                  "src": "8460:335:65",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18128,
                    "nodeType": "Block",
                    "src": "9034:212:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 18114,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 18110,
                                "name": "_newUnlockedTokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18100,
                                "src": "9046:22:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 18112,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9080:1:65",
                                    "subdenomination": null,
                                    "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": 18111,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9072:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 18113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9072:10:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "9046:36:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4e657720756e6c6f636b656420746f6b656e206f776e6572206164647265737320696e76616c69642e",
                              "id": 18115,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9084:43:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f371fe51ff87143c507d5bd7962cda3dd8cac163a778f5dc4a3edd1ca2645dfb",
                                "typeString": "literal_string \"New unlocked token owner address invalid.\""
                              },
                              "value": "New unlocked token owner address invalid."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f371fe51ff87143c507d5bd7962cda3dd8cac163a778f5dc4a3edd1ca2645dfb",
                                "typeString": "literal_string \"New unlocked token owner address invalid.\""
                              }
                            ],
                            "id": 18109,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9038:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9038:90:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18117,
                        "nodeType": "ExpressionStatement",
                        "src": "9038:90:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18118,
                            "name": "unlockedTokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17745,
                            "src": "9133:18:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18119,
                            "name": "_newUnlockedTokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18100,
                            "src": "9154:22:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9133:43:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18121,
                        "nodeType": "ExpressionStatement",
                        "src": "9133:43:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18123,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9207:3:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9207:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18125,
                              "name": "_newUnlockedTokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18100,
                              "src": "9219:22:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18122,
                            "name": "UnlockedOwnerUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17781,
                            "src": "9186:20:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 18126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9186:56:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18127,
                        "nodeType": "EmitStatement",
                        "src": "9181:61:65"
                      }
                    ]
                  },
                  "documentation": "@notice Update Unlocked Token Owner.\n@param _newUnlockedTokenOwner The new unlocked token owner.",
                  "id": 18129,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 18103,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18102,
                        "name": "onlyLockedTokenOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17829,
                        "src": "8986:20:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8986:20:65"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18105,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17739,
                            "src": "9019:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$17739_$",
                              "typeString": "type(enum DevelopmentFund.Status)"
                            }
                          },
                          "id": 18106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Active",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9019:13:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$17739",
                            "typeString": "enum DevelopmentFund.Status"
                          }
                        }
                      ],
                      "id": 18107,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18104,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17854,
                        "src": "9007:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$17739_$",
                          "typeString": "modifier (enum DevelopmentFund.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9007:26:65"
                    }
                  ],
                  "name": "updateUnlockedTokenOwner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18101,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18100,
                        "name": "_newUnlockedTokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 18129,
                        "src": "8947:30:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18099,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8947:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8946:32:65"
                  },
                  "returnParameters": {
                    "id": 18108,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9034:0:65"
                  },
                  "scope": 18571,
                  "src": "8913:333:65",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18168,
                    "nodeType": "Block",
                    "src": "9514:243:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18141,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 18139,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18131,
                                "src": "9526:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 18140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9536:1:65",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "9526:11:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416d6f756e74206e6565647320746f20626520626967676572207468616e207a65726f2e",
                              "id": 18142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9539:38:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_96aa4f54f95d4bd7a69ac95c2c6307ff895411b17973b24dca85e672a893e2b2",
                                "typeString": "literal_string \"Amount needs to be bigger than zero.\""
                              },
                              "value": "Amount needs to be bigger than zero."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_96aa4f54f95d4bd7a69ac95c2c6307ff895411b17973b24dca85e672a893e2b2",
                                "typeString": "literal_string \"Amount needs to be bigger than zero.\""
                              }
                            ],
                            "id": 18138,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9518:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9518:60:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18144,
                        "nodeType": "ExpressionStatement",
                        "src": "9518:60:65"
                      },
                      {
                        "assignments": [
                          18146
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18146,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 18168,
                            "src": "9583:13:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 18145,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9583:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18156,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18149,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9616:3:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9616:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 18152,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45218,
                                  "src": "9636:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DevelopmentFund_$18571",
                                    "typeString": "contract DevelopmentFund"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_DevelopmentFund_$18571",
                                    "typeString": "contract DevelopmentFund"
                                  }
                                ],
                                "id": 18151,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9628:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 18153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9628:13:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18154,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18131,
                              "src": "9643:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18147,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17735,
                              "src": "9599:3:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 18148,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24682,
                            "src": "9599:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 18155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9599:52:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9583:68:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18158,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18146,
                              "src": "9663:8:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e",
                              "id": 18159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9673:36:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3acc04fd9d2c6eeea33919248d7d1bf195501ebecaf681e8f7b20db8579eb309",
                                "typeString": "literal_string \"Token transfer was not successful.\""
                              },
                              "value": "Token transfer was not successful."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3acc04fd9d2c6eeea33919248d7d1bf195501ebecaf681e8f7b20db8579eb309",
                                "typeString": "literal_string \"Token transfer was not successful.\""
                              }
                            ],
                            "id": 18157,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9655:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9655:55:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18161,
                        "nodeType": "ExpressionStatement",
                        "src": "9655:55:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18163,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9733:3:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9733:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18165,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18131,
                              "src": "9745:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18162,
                            "name": "TokenDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17787,
                            "src": "9720:12:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 18166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9720:33:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18167,
                        "nodeType": "EmitStatement",
                        "src": "9715:38:65"
                      }
                    ]
                  },
                  "documentation": "@notice Deposit tokens to this contract.\n@param _amount the amount of tokens deposited.\n@dev These tokens can be withdrawn/transferred any time by the lockedTokenOwner.",
                  "id": 18169,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18134,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17739,
                            "src": "9499:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$17739_$",
                              "typeString": "type(enum DevelopmentFund.Status)"
                            }
                          },
                          "id": 18135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Active",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9499:13:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$17739",
                            "typeString": "enum DevelopmentFund.Status"
                          }
                        }
                      ],
                      "id": 18136,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18133,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17854,
                        "src": "9487:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$17739_$",
                          "typeString": "modifier (enum DevelopmentFund.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9487:26:65"
                    }
                  ],
                  "name": "depositTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18132,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18131,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 18169,
                        "src": "9463:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18130,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9463:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9462:17:65"
                  },
                  "returnParameters": {
                    "id": 18137,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9514:0:65"
                  },
                  "scope": 18571,
                  "src": "9440:317:65",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18300,
                    "nodeType": "Block",
                    "src": "10505:1722:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18191,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18187,
                                  "name": "_releaseDuration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18174,
                                  "src": "10594:16:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 18188,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10594:23:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18189,
                                  "name": "_releaseTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18177,
                                  "src": "10621:19:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 18190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10621:26:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10594:53:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "52656c65617365205363686564756c6520646f6573206e6f74206d617463682e",
                              "id": 18192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10649:34:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c8df1f82ab880104af0b41c8d1b18b1a71887070e36c5f7eec947dcf664b5c5d",
                                "typeString": "literal_string \"Release Schedule does not match.\""
                              },
                              "value": "Release Schedule does not match."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c8df1f82ab880104af0b41c8d1b18b1a71887070e36c5f7eec947dcf664b5c5d",
                                "typeString": "literal_string \"Release Schedule does not match.\""
                              }
                            ],
                            "id": 18186,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10586:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10586:98:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18194,
                        "nodeType": "ExpressionStatement",
                        "src": "10586:98:65"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18195,
                            "name": "_newLastReleaseTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18171,
                            "src": "10913:19:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10936:1:65",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10913:24:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18203,
                        "nodeType": "IfStatement",
                        "src": "10909:77:65",
                        "trueBody": {
                          "id": 18202,
                          "nodeType": "Block",
                          "src": "10939:47:65",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 18198,
                                  "name": "lastReleaseTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17751,
                                  "src": "10944:15:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 18199,
                                  "name": "_newLastReleaseTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18171,
                                  "src": "10962:19:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10944:37:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18201,
                              "nodeType": "ExpressionStatement",
                              "src": "10944:37:65"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          18205
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18205,
                            "name": "_releaseTotalTokenAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 18300,
                            "src": "11064:32:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18204,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11064:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18206,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11064:32:65"
                      },
                      {
                        "body": {
                          "id": 18227,
                          "nodeType": "Block",
                          "src": "11187:99:65",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18225,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 18218,
                                  "name": "_releaseTotalTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18205,
                                  "src": "11192:24:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 18221,
                                        "name": "_releaseTokenAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18177,
                                        "src": "11248:19:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 18223,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 18222,
                                        "name": "amountIndex",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18208,
                                        "src": "11268:11:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "11248:32:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18219,
                                      "name": "_releaseTotalTokenAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18205,
                                      "src": "11219:24:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18220,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "11219:28:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 18224,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11219:62:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11192:89:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18226,
                              "nodeType": "ExpressionStatement",
                              "src": "11192:89:65"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18211,
                            "name": "amountIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18208,
                            "src": "11130:11:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18212,
                              "name": "_releaseTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18177,
                              "src": "11144:19:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 18213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11144:26:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11130:40:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18228,
                        "initializationExpression": {
                          "assignments": [
                            18208
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 18208,
                              "name": "amountIndex",
                              "nodeType": "VariableDeclaration",
                              "scope": 18228,
                              "src": "11105:19:65",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 18207,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "11105:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 18210,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11127:1:65",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11105:23:65"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 18216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "11172:13:65",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 18215,
                              "name": "amountIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18208,
                              "src": "11172:11:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18217,
                          "nodeType": "ExpressionStatement",
                          "src": "11172:13:65"
                        },
                        "nodeType": "ForStatement",
                        "src": "11100:186:65"
                      },
                      {
                        "assignments": [
                          18230
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18230,
                            "name": "remainingTokens",
                            "nodeType": "VariableDeclaration",
                            "scope": 18300,
                            "src": "11347:23:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18229,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11347:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18237,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 18234,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45218,
                                  "src": "11395:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DevelopmentFund_$18571",
                                    "typeString": "contract DevelopmentFund"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_DevelopmentFund_$18571",
                                    "typeString": "contract DevelopmentFund"
                                  }
                                ],
                                "id": 18233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11387:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 18235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11387:13:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18231,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17735,
                              "src": "11373:3:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 18232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24644,
                            "src": "11373:13:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 18236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11373:28:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11347:54:65"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18238,
                            "name": "remainingTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18230,
                            "src": "11497:15:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 18239,
                            "name": "_releaseTotalTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18205,
                            "src": "11515:24:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11497:42:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 18262,
                              "name": "remainingTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18230,
                              "src": "11742:15:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 18263,
                              "name": "_releaseTotalTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18205,
                              "src": "11760:24:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11742:42:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 18283,
                          "nodeType": "IfStatement",
                          "src": "11738:285:65",
                          "trueBody": {
                            "id": 18282,
                            "nodeType": "Block",
                            "src": "11786:237:65",
                            "statements": [
                              {
                                "assignments": [
                                  18266
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 18266,
                                    "name": "txStatus",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 18282,
                                    "src": "11866:13:65",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "typeName": {
                                      "id": 18265,
                                      "name": "bool",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "11866:4:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 18276,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 18269,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44994,
                                        "src": "11895:3:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 18270,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "11895:10:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 18273,
                                          "name": "_releaseTotalTokenAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18205,
                                          "src": "11927:24:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 18271,
                                          "name": "remainingTokens",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18230,
                                          "src": "11907:15:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 18272,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42092,
                                        "src": "11907:19:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 18274,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11907:45:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18267,
                                      "name": "SOV",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17735,
                                      "src": "11882:3:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 18268,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transfer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24671,
                                    "src": "11882:12:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 18275,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11882:71:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "11866:87:65"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 18278,
                                      "name": "txStatus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18266,
                                      "src": "11966:8:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "546f6b656e206e6f7420726563656976656420627920746865204c6f636b6564204f776e65722e",
                                      "id": 18279,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11976:41:65",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_265881273f7ddd9e04af5e97e751b1b6075748b1782bbb26ac94b9ac0aa3de75",
                                        "typeString": "literal_string \"Token not received by the Locked Owner.\""
                                      },
                                      "value": "Token not received by the Locked Owner."
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_265881273f7ddd9e04af5e97e751b1b6075748b1782bbb26ac94b9ac0aa3de75",
                                        "typeString": "literal_string \"Token not received by the Locked Owner.\""
                                      }
                                    ],
                                    "id": 18277,
                                    "name": "require",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      44997,
                                      44998
                                    ],
                                    "referencedDeclaration": 44998,
                                    "src": "11958:7:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (bool,string memory) pure"
                                    }
                                  },
                                  "id": 18280,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11958:60:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 18281,
                                "nodeType": "ExpressionStatement",
                                "src": "11958:60:65"
                              }
                            ]
                          }
                        },
                        "id": 18284,
                        "nodeType": "IfStatement",
                        "src": "11493:530:65",
                        "trueBody": {
                          "id": 18261,
                          "nodeType": "Block",
                          "src": "11541:191:65",
                          "statements": [
                            {
                              "assignments": [
                                18242
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 18242,
                                  "name": "txStatus",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 18261,
                                  "src": "11546:13:65",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 18241,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11546:4:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 18255,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18245,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "11579:3:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 18246,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11579:10:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 18248,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 45218,
                                        "src": "11599:4:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_DevelopmentFund_$18571",
                                          "typeString": "contract DevelopmentFund"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_DevelopmentFund_$18571",
                                          "typeString": "contract DevelopmentFund"
                                        }
                                      ],
                                      "id": 18247,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11591:7:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 18249,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11591:13:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 18252,
                                        "name": "remainingTokens",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18230,
                                        "src": "11635:15:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 18250,
                                        "name": "_releaseTotalTokenAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18205,
                                        "src": "11606:24:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 18251,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42092,
                                      "src": "11606:28:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 18253,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11606:45:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18243,
                                    "name": "SOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17735,
                                    "src": "11562:3:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 18244,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 24682,
                                  "src": "11562:16:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 18254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11562:90:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11546:106:65"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 18257,
                                    "name": "txStatus",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18242,
                                    "src": "11665:8:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "4e6f7420656e6f75676820746f6b656e2073656e7420746f206368616e67652072656c65617365207363686564756c652e",
                                    "id": 18258,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11675:51:65",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_d31bfa42fd0b6ce1de7280de7c10ca2116e13c021ce43c9065e819f16326d492",
                                      "typeString": "literal_string \"Not enough token sent to change release schedule.\""
                                    },
                                    "value": "Not enough token sent to change release schedule."
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_d31bfa42fd0b6ce1de7280de7c10ca2116e13c021ce43c9065e819f16326d492",
                                      "typeString": "literal_string \"Not enough token sent to change release schedule.\""
                                    }
                                  ],
                                  "id": 18256,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "11657:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 18259,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11657:70:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18260,
                              "nodeType": "ExpressionStatement",
                              "src": "11657:70:65"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18285,
                            "name": "releaseDuration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17754,
                            "src": "12079:15:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18286,
                            "name": "_releaseDuration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18174,
                            "src": "12097:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "12079:34:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "id": 18288,
                        "nodeType": "ExpressionStatement",
                        "src": "12079:34:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18289,
                            "name": "releaseTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17757,
                            "src": "12117:18:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18290,
                            "name": "_releaseTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18177,
                            "src": "12138:19:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "12117:40:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "id": 18292,
                        "nodeType": "ExpressionStatement",
                        "src": "12117:40:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18294,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "12187:3:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12187:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18296,
                                "name": "_releaseDuration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18174,
                                "src": "12199:16:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 18297,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12199:23:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18293,
                            "name": "TokenReleaseChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17793,
                            "src": "12167:19:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 18298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12167:56:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18299,
                        "nodeType": "EmitStatement",
                        "src": "12162:61:65"
                      }
                    ]
                  },
                  "documentation": "@notice Change the Token release schedule. It creates a completely new schedule, and does not append on the previous one.\n@param _newLastReleaseTime If the last release time is to be changed, zero if no change required.\n@param _releaseDuration The time duration between each release calculated from `lastReleaseTime` in seconds.\n@param _releaseTokenAmount The amount of token to be released in each duration/interval.\n@dev _releaseDuration and _releaseTokenAmount should be specified in reverse order of release.",
                  "id": 18301,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 18180,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18179,
                        "name": "onlyLockedTokenOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17829,
                        "src": "10457:20:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10457:20:65"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18182,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17739,
                            "src": "10490:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$17739_$",
                              "typeString": "type(enum DevelopmentFund.Status)"
                            }
                          },
                          "id": 18183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Active",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10490:13:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$17739",
                            "typeString": "enum DevelopmentFund.Status"
                          }
                        }
                      ],
                      "id": 18184,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18181,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17854,
                        "src": "10478:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$17739_$",
                          "typeString": "modifier (enum DevelopmentFund.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10478:26:65"
                    }
                  ],
                  "name": "changeTokenReleaseSchedule",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18178,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18171,
                        "name": "_newLastReleaseTime",
                        "nodeType": "VariableDeclaration",
                        "scope": 18301,
                        "src": "10342:27:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18170,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10342:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18174,
                        "name": "_releaseDuration",
                        "nodeType": "VariableDeclaration",
                        "scope": 18301,
                        "src": "10373:33:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18172,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "10373:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18173,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10373:9:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18177,
                        "name": "_releaseTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 18301,
                        "src": "10410:36:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18175,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "10410:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18176,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10410:9:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10338:111:65"
                  },
                  "returnParameters": {
                    "id": 18185,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10505:0:65"
                  },
                  "scope": 18571,
                  "src": "10303:1924:65",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18347,
                    "nodeType": "Block",
                    "src": "12508:349:65",
                    "statements": [
                      {
                        "assignments": [
                          18311
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18311,
                            "name": "remainingTokens",
                            "nodeType": "VariableDeclaration",
                            "scope": 18347,
                            "src": "12512:23:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18310,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12512:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18318,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 18315,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45218,
                                  "src": "12560:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DevelopmentFund_$18571",
                                    "typeString": "contract DevelopmentFund"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_DevelopmentFund_$18571",
                                    "typeString": "contract DevelopmentFund"
                                  }
                                ],
                                "id": 18314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12552:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 18316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12552:13:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18312,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17735,
                              "src": "12538:3:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 18313,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24644,
                            "src": "12538:13:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 18317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12538:28:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12512:54:65"
                      },
                      {
                        "assignments": [
                          18320
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18320,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 18347,
                            "src": "12570:13:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 18319,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "12570:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18326,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18323,
                              "name": "safeVault",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17747,
                              "src": "12599:9:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18324,
                              "name": "remainingTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18311,
                              "src": "12610:15:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18321,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17735,
                              "src": "12586:3:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 18322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24671,
                            "src": "12586:12:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 18325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12586:40:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12570:56:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18328,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18320,
                              "src": "12638:8:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e",
                              "id": 18329,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12648:60:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              },
                              "value": "Token transfer was not successful. Check receiver address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              }
                            ],
                            "id": 18327,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "12630:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12630:79:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18331,
                        "nodeType": "ExpressionStatement",
                        "src": "12630:79:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18332,
                            "name": "status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17741,
                            "src": "12713:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$17739",
                              "typeString": "enum DevelopmentFund.Status"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18333,
                              "name": "Status",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17739,
                              "src": "12722:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Status_$17739_$",
                                "typeString": "type(enum DevelopmentFund.Status)"
                              }
                            },
                            "id": 18334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Expired",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12722:14:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$17739",
                              "typeString": "enum DevelopmentFund.Status"
                            }
                          },
                          "src": "12713:23:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$17739",
                            "typeString": "enum DevelopmentFund.Status"
                          }
                        },
                        "id": 18336,
                        "nodeType": "ExpressionStatement",
                        "src": "12713:23:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18338,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "12781:3:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12781:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18340,
                              "name": "safeVault",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17747,
                              "src": "12793:9:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18341,
                              "name": "remainingTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18311,
                              "src": "12804:15:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18337,
                            "name": "LockedTokenTransferByUnlockedOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17801,
                            "src": "12746:34:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 18342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12746:74:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18343,
                        "nodeType": "EmitStatement",
                        "src": "12741:79:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 18344,
                            "name": "DevelopmentFundExpired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17761,
                            "src": "12829:22:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 18345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12829:24:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18346,
                        "nodeType": "EmitStatement",
                        "src": "12824:29:65"
                      }
                    ]
                  },
                  "documentation": "@notice Transfers all of the remaining tokens in an emergency situation.\n@dev This could be called when governance or development fund might be compromised.",
                  "id": 18348,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 18304,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18303,
                        "name": "onlyUnlockedTokenOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17841,
                        "src": "12458:22:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12458:22:65"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18306,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17739,
                            "src": "12493:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$17739_$",
                              "typeString": "type(enum DevelopmentFund.Status)"
                            }
                          },
                          "id": 18307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Active",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "12493:13:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$17739",
                            "typeString": "enum DevelopmentFund.Status"
                          }
                        }
                      ],
                      "id": 18308,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18305,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17854,
                        "src": "12481:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$17739_$",
                          "typeString": "modifier (enum DevelopmentFund.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12481:26:65"
                    }
                  ],
                  "name": "transferTokensByUnlockedTokenOwner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18302,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12448:2:65"
                  },
                  "returnParameters": {
                    "id": 18309,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12508:0:65"
                  },
                  "scope": 18571,
                  "src": "12405:452:65",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18502,
                    "nodeType": "Block",
                    "src": "13086:1783:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 18360,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18350,
                                "src": "13098:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 18361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13108:1:65",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13098:11:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5a65726f2063616e27742062652077697468647261776e2e",
                              "id": 18363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13111:26:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f76f521195354d21400f934bdff4c21fd6329d229d64e68f8ec3dd269bb9cbeb",
                                "typeString": "literal_string \"Zero can't be withdrawn.\""
                              },
                              "value": "Zero can't be withdrawn."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f76f521195354d21400f934bdff4c21fd6329d229d64e68f8ec3dd269bb9cbeb",
                                "typeString": "literal_string \"Zero can't be withdrawn.\""
                              }
                            ],
                            "id": 18359,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13090:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13090:48:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18365,
                        "nodeType": "ExpressionStatement",
                        "src": "13090:48:65"
                      },
                      {
                        "assignments": [
                          18367
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18367,
                            "name": "count",
                            "nodeType": "VariableDeclaration",
                            "scope": 18502,
                            "src": "13143:13:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18366,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13143:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18368,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13143:13:65"
                      },
                      {
                        "assignments": [
                          18370
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18370,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 18502,
                            "src": "13231:14:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18369,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13231:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18372,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 18371,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18350,
                          "src": "13248:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13231:24:65"
                      },
                      {
                        "assignments": [
                          18374
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18374,
                            "name": "newLastReleaseTimeMemory",
                            "nodeType": "VariableDeclaration",
                            "scope": 18502,
                            "src": "13307:32:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18373,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13307:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18376,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 18375,
                          "name": "lastReleaseTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17751,
                          "src": "13342:15:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13307:50:65"
                      },
                      {
                        "assignments": [
                          18378
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18378,
                            "name": "releaseLength",
                            "nodeType": "VariableDeclaration",
                            "scope": 18502,
                            "src": "13400:21:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18377,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13400:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18384,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 18382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13451:1:65",
                              "subdenomination": null,
                              "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"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18379,
                                "name": "releaseDuration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17754,
                                "src": "13424:15:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                  "typeString": "uint256[] storage ref"
                                }
                              },
                              "id": 18380,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13424:22:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 18381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "13424:26:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 18383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13424:29:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13400:53:65"
                      },
                      {
                        "body": {
                          "id": 18445,
                          "nodeType": "Block",
                          "src": "13721:430:65",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 18398,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18370,
                                  "src": "13730:6:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18399,
                                    "name": "releaseTokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17757,
                                    "src": "13740:18:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 18401,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 18400,
                                    "name": "releaseLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18378,
                                    "src": "13759:13:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13740:33:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13730:43:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 18440,
                                "nodeType": "Block",
                                "src": "13953:174:65",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18434,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 18425,
                                          "name": "releaseTokenAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17757,
                                          "src": "14024:18:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                            "typeString": "uint256[] storage ref"
                                          }
                                        },
                                        "id": 18427,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 18426,
                                          "name": "releaseLength",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18378,
                                          "src": "14043:13:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "14024:33:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 18432,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18370,
                                            "src": "14098:6:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 18428,
                                              "name": "releaseTokenAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17757,
                                              "src": "14060:18:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                "typeString": "uint256[] storage ref"
                                              }
                                            },
                                            "id": 18430,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 18429,
                                              "name": "releaseLength",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18378,
                                              "src": "14079:13:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "14060:33:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 18431,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42092,
                                          "src": "14060:37:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 18433,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14060:45:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "14024:81:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18435,
                                    "nodeType": "ExpressionStatement",
                                    "src": "14024:81:65"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18438,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 18436,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18370,
                                        "src": "14111:6:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 18437,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14120:1:65",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "14111:10:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18439,
                                    "nodeType": "ExpressionStatement",
                                    "src": "14111:10:65"
                                  }
                                ]
                              },
                              "id": 18441,
                              "nodeType": "IfStatement",
                              "src": "13726:401:65",
                              "trueBody": {
                                "id": 18424,
                                "nodeType": "Block",
                                "src": "13775:172:65",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18410,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 18403,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18370,
                                        "src": "13781:6:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 18406,
                                              "name": "releaseTokenAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17757,
                                              "src": "13801:18:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                "typeString": "uint256[] storage ref"
                                              }
                                            },
                                            "id": 18408,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 18407,
                                              "name": "releaseLength",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18378,
                                              "src": "13820:13:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "13801:33:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 18404,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18370,
                                            "src": "13790:6:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 18405,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42092,
                                          "src": "13790:10:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 18409,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13790:45:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13781:54:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18411,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13781:54:65"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18419,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 18412,
                                        "name": "newLastReleaseTimeMemory",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18374,
                                        "src": "13841:24:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 18415,
                                              "name": "releaseDuration",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17754,
                                              "src": "13897:15:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                "typeString": "uint256[] storage ref"
                                              }
                                            },
                                            "id": 18417,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 18416,
                                              "name": "releaseLength",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18378,
                                              "src": "13913:13:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "13897:30:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 18413,
                                            "name": "newLastReleaseTimeMemory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18374,
                                            "src": "13868:24:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 18414,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "13868:28:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 18418,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13868:60:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13841:87:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18420,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13841:87:65"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18422,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "13934:7:65",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 18421,
                                        "name": "count",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18367,
                                        "src": "13934:5:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18423,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13934:7:65"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "14131:15:65",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 18442,
                                  "name": "releaseLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18378,
                                  "src": "14131:13:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18444,
                              "nodeType": "ExpressionStatement",
                              "src": "14131:15:65"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 18385,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18370,
                              "src": "13627:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13636:1:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "13627:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18396,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18390,
                                    "name": "releaseDuration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17754,
                                    "src": "13670:15:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 18392,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 18391,
                                    "name": "releaseLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18378,
                                    "src": "13686:13:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13670:30:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18388,
                                  "name": "newLastReleaseTimeMemory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18374,
                                  "src": "13641:24:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 18389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42076,
                                "src": "13641:28:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 18393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13641:60:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18394,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "13704:5:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 18395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13704:15:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13641:78:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13627:92:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18446,
                        "nodeType": "WhileStatement",
                        "src": "13620:531:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 18454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18450,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 18448,
                                  "name": "count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18367,
                                  "src": "14234:5:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 18449,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14242:1:65",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "14234:9:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18453,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 18451,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18370,
                                  "src": "14247:6:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 18452,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14257:1:65",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "14247:11:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "14234:24:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4e6f2072656c65617365207363686564756c6520726561636865642e",
                              "id": 18455,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14260:30:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d70d724b7d4b90c8085c6b854b9a4081e8ea4aee0b2911e8fec47118f1c6493f",
                                "typeString": "literal_string \"No release schedule reached.\""
                              },
                              "value": "No release schedule reached."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d70d724b7d4b90c8085c6b854b9a4081e8ea4aee0b2911e8fec47118f1c6493f",
                                "typeString": "literal_string \"No release schedule reached.\""
                              }
                            ],
                            "id": 18447,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "14226:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14226:65:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18457,
                        "nodeType": "ExpressionStatement",
                        "src": "14226:65:65"
                      },
                      {
                        "assignments": [
                          18459
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18459,
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "scope": 18502,
                            "src": "14368:13:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18458,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14368:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18464,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18462,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18370,
                              "src": "14396:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18460,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18350,
                              "src": "14384:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 18461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "14384:11:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 18463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14384:19:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14368:35:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18465,
                              "name": "releaseDuration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17754,
                              "src": "14452:15:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 18467,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14452:22:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18468,
                            "name": "count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18367,
                            "src": "14478:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14452:31:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18470,
                        "nodeType": "ExpressionStatement",
                        "src": "14452:31:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18471,
                              "name": "releaseTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17757,
                              "src": "14487:18:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 18473,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14487:25:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18474,
                            "name": "count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18367,
                            "src": "14516:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14487:34:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18476,
                        "nodeType": "ExpressionStatement",
                        "src": "14487:34:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18477,
                            "name": "lastReleaseTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17751,
                            "src": "14564:15:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18478,
                            "name": "newLastReleaseTimeMemory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18374,
                            "src": "14582:24:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14564:42:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18480,
                        "nodeType": "ExpressionStatement",
                        "src": "14564:42:65"
                      },
                      {
                        "assignments": [
                          18482
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18482,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 18502,
                            "src": "14661:13:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 18481,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "14661:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18489,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18485,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "14690:3:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14690:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18487,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18459,
                              "src": "14702:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18483,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17735,
                              "src": "14677:3:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 18484,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24671,
                            "src": "14677:12:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 18488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14677:31:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14661:47:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18491,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18482,
                              "src": "14720:8:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e",
                              "id": 18492,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14730:60:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              },
                              "value": "Token transfer was not successful. Check receiver address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              }
                            ],
                            "id": 18490,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "14712:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14712:79:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18494,
                        "nodeType": "ExpressionStatement",
                        "src": "14712:79:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18496,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "14840:3:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18497,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14840:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18498,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18459,
                              "src": "14852:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18499,
                              "name": "count",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18367,
                              "src": "14859:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18495,
                            "name": "UnlockedTokenWithdrawalByUnlockedOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17809,
                            "src": "14801:38:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 18500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14801:64:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18501,
                        "nodeType": "EmitStatement",
                        "src": "14796:69:65"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraws all unlocked/released token.\n@param _amount The amount to be withdrawn.",
                  "id": 18503,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 18353,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18352,
                        "name": "onlyUnlockedTokenOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17841,
                        "src": "13036:22:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13036:22:65"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18355,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17739,
                            "src": "13071:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$17739_$",
                              "typeString": "type(enum DevelopmentFund.Status)"
                            }
                          },
                          "id": 18356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Active",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "13071:13:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$17739",
                            "typeString": "enum DevelopmentFund.Status"
                          }
                        }
                      ],
                      "id": 18357,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18354,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17854,
                        "src": "13059:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$17739_$",
                          "typeString": "modifier (enum DevelopmentFund.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13059:26:65"
                    }
                  ],
                  "name": "withdrawTokensByUnlockedTokenOwner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18351,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18350,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 18503,
                        "src": "13012:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18349,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13012:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13011:17:65"
                  },
                  "returnParameters": {
                    "id": 18358,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13086:0:65"
                  },
                  "scope": 18571,
                  "src": "12968:1901:65",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18551,
                    "nodeType": "Block",
                    "src": "15236:347:65",
                    "statements": [
                      {
                        "assignments": [
                          18515
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18515,
                            "name": "remainingTokens",
                            "nodeType": "VariableDeclaration",
                            "scope": 18551,
                            "src": "15240:23:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18514,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15240:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18522,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 18519,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45218,
                                  "src": "15288:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DevelopmentFund_$18571",
                                    "typeString": "contract DevelopmentFund"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_DevelopmentFund_$18571",
                                    "typeString": "contract DevelopmentFund"
                                  }
                                ],
                                "id": 18518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15280:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 18520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15280:13:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18516,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17735,
                              "src": "15266:3:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 18517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24644,
                            "src": "15266:13:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 18521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15266:28:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15240:54:65"
                      },
                      {
                        "assignments": [
                          18524
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18524,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 18551,
                            "src": "15298:13:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 18523,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "15298:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18530,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18527,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18505,
                              "src": "15327:9:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18528,
                              "name": "remainingTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18515,
                              "src": "15338:15:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18525,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17735,
                              "src": "15314:3:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 18526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24671,
                            "src": "15314:12:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 18529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15314:40:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15298:56:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18532,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18524,
                              "src": "15366:8:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e",
                              "id": 18533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15376:60:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              },
                              "value": "Token transfer was not successful. Check receiver address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              }
                            ],
                            "id": 18531,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "15358:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15358:79:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18535,
                        "nodeType": "ExpressionStatement",
                        "src": "15358:79:65"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18536,
                            "name": "status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17741,
                            "src": "15441:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$17739",
                              "typeString": "enum DevelopmentFund.Status"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18537,
                              "name": "Status",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17739,
                              "src": "15450:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Status_$17739_$",
                                "typeString": "type(enum DevelopmentFund.Status)"
                              }
                            },
                            "id": 18538,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Expired",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15450:14:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$17739",
                              "typeString": "enum DevelopmentFund.Status"
                            }
                          },
                          "src": "15441:23:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$17739",
                            "typeString": "enum DevelopmentFund.Status"
                          }
                        },
                        "id": 18540,
                        "nodeType": "ExpressionStatement",
                        "src": "15441:23:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18542,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "15507:3:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18543,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "15507:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18544,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18505,
                              "src": "15519:9:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18545,
                              "name": "remainingTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18515,
                              "src": "15530:15:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18541,
                            "name": "LockedTokenTransferByLockedOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17817,
                            "src": "15474:32:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 18546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15474:72:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18547,
                        "nodeType": "EmitStatement",
                        "src": "15469:77:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 18548,
                            "name": "DevelopmentFundExpired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17761,
                            "src": "15555:22:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 18549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15555:24:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18550,
                        "nodeType": "EmitStatement",
                        "src": "15550:29:65"
                      }
                    ]
                  },
                  "documentation": "@notice Transfers all of the remaining tokens by the owner maybe for an upgrade.\n@dev This could be called when the current development fund has to be upgraded.\n@param _receiver The address which receives this token transfer.",
                  "id": 18552,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 18508,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18507,
                        "name": "onlyLockedTokenOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17829,
                        "src": "15188:20:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "15188:20:65"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18510,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17739,
                            "src": "15221:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$17739_$",
                              "typeString": "type(enum DevelopmentFund.Status)"
                            }
                          },
                          "id": 18511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Active",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "15221:13:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$17739",
                            "typeString": "enum DevelopmentFund.Status"
                          }
                        }
                      ],
                      "id": 18512,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18509,
                        "name": "checkStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17854,
                        "src": "15209:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_enum$_Status_$17739_$",
                          "typeString": "modifier (enum DevelopmentFund.Status)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "15209:26:65"
                    }
                  ],
                  "name": "transferTokensByLockedTokenOwner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18505,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 18552,
                        "src": "15162:17:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18504,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15162:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15161:19:65"
                  },
                  "returnParameters": {
                    "id": 18513,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15236:0:65"
                  },
                  "scope": 18571,
                  "src": "15120:463:65",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18560,
                    "nodeType": "Block",
                    "src": "15843:30:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18558,
                          "name": "releaseDuration",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17754,
                          "src": "15854:15:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "functionReturnParameters": 18557,
                        "id": 18559,
                        "nodeType": "Return",
                        "src": "15847:22:65"
                      }
                    ]
                  },
                  "documentation": "@notice Function to read the current token release duration.\n@return _currentReleaseDuration The current release duration.",
                  "id": 18561,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReleaseDuration",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18553,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15779:2:65"
                  },
                  "returnParameters": {
                    "id": 18557,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18556,
                        "name": "_releaseTokenDuration",
                        "nodeType": "VariableDeclaration",
                        "scope": 18561,
                        "src": "15803:38:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18554,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "15803:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18555,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "15803:9:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15802:40:65"
                  },
                  "scope": 18571,
                  "src": "15752:121:65",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18569,
                    "nodeType": "Block",
                    "src": "16121:33:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18567,
                          "name": "releaseTokenAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17757,
                          "src": "16132:18:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "functionReturnParameters": 18566,
                        "id": 18568,
                        "nodeType": "Return",
                        "src": "16125:25:65"
                      }
                    ]
                  },
                  "documentation": "@notice Function to read the current token release amount.\n@return _currentReleaseTokenAmount The current release token amount.",
                  "id": 18570,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReleaseTokenAmount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18562,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16052:2:65"
                  },
                  "returnParameters": {
                    "id": 18566,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18565,
                        "name": "_currentReleaseTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 18570,
                        "src": "16076:43:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18563,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "16076:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18564,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "16076:9:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16075:45:65"
                  },
                  "scope": 18571,
                  "src": "16022:132:65",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 18572,
              "src": "281:15875:65"
            }
          ],
          "src": "0:16157:65"
        },
        "id": 65
      },
      "contracts/governance/Vesting/ITeamVesting.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/ITeamVesting.sol",
          "exportedSymbols": {
            "ITeamVesting": [
              18579
            ]
          },
          "id": 18580,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18573,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:66"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": "@title Interface for TeamVesting contract.\n@dev Interfaces are used to cast a contract address into a callable instance.\nThis interface is used by Staking contract to call governanceWithdrawTokens\nfunction having the vesting contract instance address.",
              "fullyImplemented": false,
              "id": 18579,
              "linearizedBaseContracts": [
                18579
              ],
              "name": "ITeamVesting",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 18578,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "governanceWithdrawTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18576,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18575,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 18578,
                        "src": "358:16:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18574,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "358:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "357:18:66"
                  },
                  "returnParameters": {
                    "id": 18577,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "384:0:66"
                  },
                  "scope": 18579,
                  "src": "324:61:66",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 18580,
              "src": "298:89:66"
            }
          ],
          "src": "0:388:66"
        },
        "id": 66
      },
      "contracts/governance/Vesting/IVesting.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/IVesting.sol",
          "exportedSymbols": {
            "IVesting": [
              18597
            ]
          },
          "id": 18598,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18581,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:67"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": "@title Interface for Vesting contract.\n@dev Interfaces are used to cast a contract address into a callable instance.\nThis interface is used by VestingLogic contract to implement stakeTokens function\nand on VestingRegistry contract to call IVesting(vesting).stakeTokens function\nat a vesting instance.",
              "fullyImplemented": false,
              "id": 18597,
              "linearizedBaseContracts": [
                18597
              ],
              "name": "IVesting",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 18586,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "duration",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18582,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "389:2:67"
                  },
                  "returnParameters": {
                    "id": 18585,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18584,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 18586,
                        "src": "410:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18583,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "410:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "409:9:67"
                  },
                  "scope": 18597,
                  "src": "372:47:67",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 18591,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "endDate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18587,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "438:2:67"
                  },
                  "returnParameters": {
                    "id": 18590,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18589,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 18591,
                        "src": "459:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18588,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "459:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "458:9:67"
                  },
                  "scope": 18597,
                  "src": "422:46:67",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 18596,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "stakeTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18593,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 18596,
                        "src": "492:14:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18592,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "492:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "491:16:67"
                  },
                  "returnParameters": {
                    "id": 18595,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "516:0:67"
                  },
                  "scope": 18597,
                  "src": "471:46:67",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 18598,
              "src": "350:169:67"
            }
          ],
          "src": "0:520:67"
        },
        "id": 67
      },
      "contracts/governance/Vesting/IVestingFactory.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/IVestingFactory.sol",
          "exportedSymbols": {
            "IVestingFactory": [
              18638
            ]
          },
          "id": 18639,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18599,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:68"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": "@title Interface for Vesting Factory contract.\n@dev Interfaces are used to cast a contract address into a callable instance.\nThis interface is used by VestingFactory contract to override empty\nimplemention of deployVesting and deployTeamVesting functions\nand on VestingRegistry contract to use an instance of VestingFactory.",
              "fullyImplemented": false,
              "id": 18638,
              "linearizedBaseContracts": [
                18638
              ],
              "name": "IVestingFactory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 18618,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18601,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 18618,
                        "src": "429:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18600,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "429:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18603,
                        "name": "_staking",
                        "nodeType": "VariableDeclaration",
                        "scope": 18618,
                        "src": "445:16:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18602,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "445:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18605,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 18618,
                        "src": "465:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18604,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "465:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18607,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 18618,
                        "src": "488:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18606,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "488:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18609,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 18618,
                        "src": "506:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18608,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "506:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18611,
                        "name": "_feeSharing",
                        "nodeType": "VariableDeclaration",
                        "scope": 18618,
                        "src": "527:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18610,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "527:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18613,
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 18618,
                        "src": "550:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18612,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "550:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "425:142:68"
                  },
                  "returnParameters": {
                    "id": 18617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18616,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 18618,
                        "src": "586:7:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18615,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "586:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "585:9:68"
                  },
                  "scope": 18638,
                  "src": "403:192:68",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 18637,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18620,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 18637,
                        "src": "628:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18619,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "628:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18622,
                        "name": "_staking",
                        "nodeType": "VariableDeclaration",
                        "scope": 18637,
                        "src": "644:16:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18621,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "644:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18624,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 18637,
                        "src": "664:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18623,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "664:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18626,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 18637,
                        "src": "687:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18625,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "687:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18628,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 18637,
                        "src": "705:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18627,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "705:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18630,
                        "name": "_feeSharing",
                        "nodeType": "VariableDeclaration",
                        "scope": 18637,
                        "src": "726:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18629,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "726:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18632,
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 18637,
                        "src": "749:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18631,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "749:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "624:142:68"
                  },
                  "returnParameters": {
                    "id": 18636,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18635,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 18637,
                        "src": "785:7:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18634,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "785:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "784:9:68"
                  },
                  "scope": 18638,
                  "src": "598:196:68",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 18639,
              "src": "374:422:68"
            }
          ],
          "src": "0:797:68"
        },
        "id": 68
      },
      "contracts/governance/Vesting/IVestingRegistry.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/IVestingRegistry.sol",
          "exportedSymbols": {
            "IVestingRegistry": [
              18655
            ]
          },
          "id": 18656,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18640,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:69"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": "@title Interface for upgradable Vesting Registry contract.\n@dev Interfaces are used to cast a contract address into a callable instance.",
              "fullyImplemented": false,
              "id": 18655,
              "linearizedBaseContracts": [
                18655
              ],
              "name": "IVestingRegistry",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 18647,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18642,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 18647,
                        "src": "227:19:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18641,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "227:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "226:21:69"
                  },
                  "returnParameters": {
                    "id": 18646,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18645,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 18647,
                        "src": "271:7:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18644,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "271:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "270:9:69"
                  },
                  "scope": 18655,
                  "src": "207:73:69",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 18654,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18650,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18649,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 18654,
                        "src": "307:19:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18648,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "307:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "306:21:69"
                  },
                  "returnParameters": {
                    "id": 18653,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18652,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 18654,
                        "src": "351:7:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18651,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "351:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "350:9:69"
                  },
                  "scope": 18655,
                  "src": "283:77:69",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 18656,
              "src": "177:185:69"
            }
          ],
          "src": "0:363:69"
        },
        "id": 69
      },
      "contracts/governance/Vesting/OriginInvestorsClaim.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/OriginInvestorsClaim.sol",
          "exportedSymbols": {
            "OriginInvestorsClaim": [
              19146
            ]
          },
          "id": 19147,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18657,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:70"
            },
            {
              "id": 18658,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:70"
            },
            {
              "absolutePath": "contracts/governance/Vesting/VestingRegistry.sol",
              "file": "./VestingRegistry.sol",
              "id": 18659,
              "nodeType": "ImportDirective",
              "scope": 19147,
              "sourceUnit": 22219,
              "src": "60:31:70",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/Staking.sol",
              "file": "../Staking/Staking.sol",
              "id": 18660,
              "nodeType": "ImportDirective",
              "scope": 19147,
              "sourceUnit": 15558,
              "src": "92:32:70",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 18661,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "310:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 18662,
                  "nodeType": "InheritanceSpecifier",
                  "src": "310:7:70"
                }
              ],
              "contractDependencies": [
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Origin investors claim vested cSOV tokens.\n@notice // TODO: fund this contract with a total amount of SOV needed to distribute.\n",
              "fullyImplemented": true,
              "id": 19146,
              "linearizedBaseContracts": [
                19146,
                41798,
                41125
              ],
              "name": "OriginInvestorsClaim",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 18665,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18663,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "327:8:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "321:27:70",
                  "typeName": {
                    "id": 18664,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "340:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 18667,
                  "name": "totalAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 19146,
                  "src": "484:26:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18666,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "484:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 18670,
                  "name": "SOV_VESTING_CLIFF",
                  "nodeType": "VariableDeclaration",
                  "scope": 19146,
                  "src": "574:51:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18668,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "574:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "36",
                    "id": 18669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "618:7:70",
                    "subdenomination": "weeks",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3628800_by_1",
                      "typeString": "int_const 3628800"
                    },
                    "value": "6"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 18672,
                  "name": "kickoffTS",
                  "nodeType": "VariableDeclaration",
                  "scope": 19146,
                  "src": "629:24:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18671,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "629:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 18674,
                  "name": "vestingTerm",
                  "nodeType": "VariableDeclaration",
                  "scope": 19146,
                  "src": "656:26:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18673,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "656:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 18676,
                  "name": "investorsQty",
                  "nodeType": "VariableDeclaration",
                  "scope": 19146,
                  "src": "685:27:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18675,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "685:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 18678,
                  "name": "investorsListInitialized",
                  "nodeType": "VariableDeclaration",
                  "scope": 19146,
                  "src": "715:36:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18677,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "715:4:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 18680,
                  "name": "vestingRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 19146,
                  "src": "754:38:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                    "typeString": "contract VestingRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18679,
                    "name": "VestingRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22218,
                    "src": "754:15:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                      "typeString": "contract VestingRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 18682,
                  "name": "staking",
                  "nodeType": "VariableDeclaration",
                  "scope": 19146,
                  "src": "795:22:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Staking_$15557",
                    "typeString": "contract Staking"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18681,
                    "name": "Staking",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15557,
                    "src": "795:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Staking_$15557",
                      "typeString": "contract Staking"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 18684,
                  "name": "SOVToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 19146,
                  "src": "820:22:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$24699",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18683,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "820:6:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 18688,
                  "name": "admins",
                  "nodeType": "VariableDeclaration",
                  "scope": 19146,
                  "src": "900:38:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 18687,
                    "keyType": {
                      "id": 18685,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "908:7:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "900:24:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 18686,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "919:4:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 18692,
                  "name": "investorsAmountsList",
                  "nodeType": "VariableDeclaration",
                  "scope": 19146,
                  "src": "1013:55:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 18691,
                    "keyType": {
                      "id": 18689,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1021:7:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1013:27:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 18690,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1032:7:70",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 18696,
                  "name": "AdminAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 18695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18694,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 18696,
                        "src": "1104:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18693,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1104:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1103:15:70"
                  },
                  "src": "1087:32:70"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 18700,
                  "name": "AdminRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 18699,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18698,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 18700,
                        "src": "1140:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18697,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1140:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1139:15:70"
                  },
                  "src": "1121:34:70"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 18706,
                  "name": "InvestorsAmountsListAppended",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 18705,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18702,
                        "indexed": false,
                        "name": "qty",
                        "nodeType": "VariableDeclaration",
                        "scope": 18706,
                        "src": "1192:11:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18701,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1192:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18704,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 18706,
                        "src": "1205:14:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18703,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1205:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1191:29:70"
                  },
                  "src": "1157:64:70"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 18712,
                  "name": "ClaimVested",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 18711,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18708,
                        "indexed": true,
                        "name": "investor",
                        "nodeType": "VariableDeclaration",
                        "scope": 18712,
                        "src": "1241:24:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18707,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1241:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18710,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 18712,
                        "src": "1267:14:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18709,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1267:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1240:42:70"
                  },
                  "src": "1223:60:70"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 18718,
                  "name": "ClaimTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 18717,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18714,
                        "indexed": true,
                        "name": "investor",
                        "nodeType": "VariableDeclaration",
                        "scope": 18718,
                        "src": "1308:24:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18713,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1308:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18716,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 18718,
                        "src": "1334:14:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18715,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1334:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1307:42:70"
                  },
                  "src": "1285:65:70"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 18724,
                  "name": "InvestorsAmountsListInitialized",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 18723,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18720,
                        "indexed": false,
                        "name": "qty",
                        "nodeType": "VariableDeclaration",
                        "scope": 18724,
                        "src": "1390:11:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18719,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1390:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18722,
                        "indexed": false,
                        "name": "totalAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 18724,
                        "src": "1403:19:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18721,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1403:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1389:34:70"
                  },
                  "src": "1352:72:70"
                },
                {
                  "body": {
                    "id": 18738,
                    "nodeType": "Block",
                    "src": "1544:115:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 18733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 18727,
                                  "name": "isOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41761,
                                  "src": "1556:7:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 18728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1556:9:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 18729,
                                  "name": "admins",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18688,
                                  "src": "1569:6:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 18732,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18730,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "1576:3:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 18731,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1576:10:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1569:18:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1556:31:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f726967696e496e766573746f7273436c61696d3a3a6f6e6c79417574686f72697a65643a2073686f756c6420626520617574686f72697a6564",
                              "id": 18734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1589:60:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f4de6331125fe7586a6f3cbc03966c4e1690c93d5aba55a553eb95f56785801d",
                                "typeString": "literal_string \"OriginInvestorsClaim::onlyAuthorized: should be authorized\""
                              },
                              "value": "OriginInvestorsClaim::onlyAuthorized: should be authorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f4de6331125fe7586a6f3cbc03966c4e1690c93d5aba55a553eb95f56785801d",
                                "typeString": "literal_string \"OriginInvestorsClaim::onlyAuthorized: should be authorized\""
                              }
                            ],
                            "id": 18726,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1548:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1548:102:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18736,
                        "nodeType": "ExpressionStatement",
                        "src": "1548:102:70"
                      },
                      {
                        "id": 18737,
                        "nodeType": "PlaceholderStatement",
                        "src": "1654:1:70"
                      }
                    ]
                  },
                  "documentation": "@dev Throws if called by any account other than the owner or admin.",
                  "id": 18739,
                  "name": "onlyAuthorized",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 18725,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1541:2:70"
                  },
                  "src": "1518:141:70",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18752,
                    "nodeType": "Block",
                    "src": "1748:136:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 18742,
                                  "name": "investorsAmountsList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18692,
                                  "src": "1760:20:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 18745,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18743,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "1781:3:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 18744,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1781:10:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1760:32:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 18746,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1796:1:70",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1760:37:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f726967696e496e766573746f7273436c61696d3a3a6f6e6c7957686974656c69737465643a206e6f742077686974656c6973746564206f7220616c726561647920636c61696d6564",
                              "id": 18748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1799:75:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_685a13cecd9d7d52e053c098d0ce24b623cc166fece9f0a22627408316930d63",
                                "typeString": "literal_string \"OriginInvestorsClaim::onlyWhitelisted: not whitelisted or already claimed\""
                              },
                              "value": "OriginInvestorsClaim::onlyWhitelisted: not whitelisted or already claimed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_685a13cecd9d7d52e053c098d0ce24b623cc166fece9f0a22627408316930d63",
                                "typeString": "literal_string \"OriginInvestorsClaim::onlyWhitelisted: not whitelisted or already claimed\""
                              }
                            ],
                            "id": 18741,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1752:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1752:123:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18750,
                        "nodeType": "ExpressionStatement",
                        "src": "1752:123:70"
                      },
                      {
                        "id": 18751,
                        "nodeType": "PlaceholderStatement",
                        "src": "1879:1:70"
                      }
                    ]
                  },
                  "documentation": "@dev Throws if called by any account not whitelisted.",
                  "id": 18753,
                  "name": "onlyWhitelisted",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 18740,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1745:2:70"
                  },
                  "src": "1721:163:70",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18762,
                    "nodeType": "Block",
                    "src": "1974:140:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18757,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "1986:25:70",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 18756,
                                "name": "investorsListInitialized",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18678,
                                "src": "1987:24:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f726967696e496e766573746f7273436c61696d3a3a6e6f74496e697469616c697a65643a2074686520696e766573746f7273206c6973742073686f756c64206e6f742062652073657420617320696e697469616c697a6564",
                              "id": 18758,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2013:91:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4551e75b9232dde0e7262f60e58e49e64574bea8f3903ca93aebe2d41282a5c6",
                                "typeString": "literal_string \"OriginInvestorsClaim::notInitialized: the investors list should not be set as initialized\""
                              },
                              "value": "OriginInvestorsClaim::notInitialized: the investors list should not be set as initialized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4551e75b9232dde0e7262f60e58e49e64574bea8f3903ca93aebe2d41282a5c6",
                                "typeString": "literal_string \"OriginInvestorsClaim::notInitialized: the investors list should not be set as initialized\""
                              }
                            ],
                            "id": 18755,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1978:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18759,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1978:127:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18760,
                        "nodeType": "ExpressionStatement",
                        "src": "1978:127:70"
                      },
                      {
                        "id": 18761,
                        "nodeType": "PlaceholderStatement",
                        "src": "2109:1:70"
                      }
                    ]
                  },
                  "documentation": "@dev Throws if called w/ an initialized investors list.",
                  "id": 18763,
                  "name": "notInitialized",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 18754,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1971:2:70"
                  },
                  "src": "1948:166:70",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18771,
                    "nodeType": "Block",
                    "src": "2203:124:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18766,
                              "name": "investorsListInitialized",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18678,
                              "src": "2215:24:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f726967696e496e766573746f7273436c61696d3a3a696e697469616c697a65643a2074686520696e766573746f7273206c69737420686173206e6f74206265656e2073657420796574",
                              "id": 18767,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2241:76:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a230b3169b165204139f0f54e804c7d86f8a824a0fa47c9c3f2022dec5d464dd",
                                "typeString": "literal_string \"OriginInvestorsClaim::initialized: the investors list has not been set yet\""
                              },
                              "value": "OriginInvestorsClaim::initialized: the investors list has not been set yet"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a230b3169b165204139f0f54e804c7d86f8a824a0fa47c9c3f2022dec5d464dd",
                                "typeString": "literal_string \"OriginInvestorsClaim::initialized: the investors list has not been set yet\""
                              }
                            ],
                            "id": 18765,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2207:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2207:111:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18769,
                        "nodeType": "ExpressionStatement",
                        "src": "2207:111:70"
                      },
                      {
                        "id": 18770,
                        "nodeType": "PlaceholderStatement",
                        "src": "2322:1:70"
                      }
                    ]
                  },
                  "documentation": "@dev Throws if called w/ an uninitialized investors list.",
                  "id": 18772,
                  "name": "initialized",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 18764,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2200:2:70"
                  },
                  "src": "2180:147:70",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18809,
                    "nodeType": "Block",
                    "src": "2548:228:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18777,
                            "name": "vestingRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18680,
                            "src": "2552:15:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                              "typeString": "contract VestingRegistry"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 18779,
                                "name": "vestingRegistryAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18774,
                                "src": "2586:22:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 18778,
                              "name": "VestingRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22218,
                              "src": "2570:15:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_VestingRegistry_$22218_$",
                                "typeString": "type(contract VestingRegistry)"
                              }
                            },
                            "id": 18780,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2570:39:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                              "typeString": "contract VestingRegistry"
                            }
                          },
                          "src": "2552:57:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                            "typeString": "contract VestingRegistry"
                          }
                        },
                        "id": 18782,
                        "nodeType": "ExpressionStatement",
                        "src": "2552:57:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18783,
                            "name": "staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18682,
                            "src": "2613:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Staking_$15557",
                              "typeString": "contract Staking"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18785,
                                    "name": "vestingRegistry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18680,
                                    "src": "2631:15:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                      "typeString": "contract VestingRegistry"
                                    }
                                  },
                                  "id": 18786,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "staking",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 21244,
                                  "src": "2631:23:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 18787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2631:25:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 18784,
                              "name": "Staking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15557,
                              "src": "2623:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Staking_$15557_$",
                                "typeString": "type(contract Staking)"
                              }
                            },
                            "id": 18788,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2623:34:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Staking_$15557",
                              "typeString": "contract Staking"
                            }
                          },
                          "src": "2613:44:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Staking_$15557",
                            "typeString": "contract Staking"
                          }
                        },
                        "id": 18790,
                        "nodeType": "ExpressionStatement",
                        "src": "2613:44:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18795,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18791,
                            "name": "kickoffTS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18672,
                            "src": "2661:9:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 18792,
                                "name": "staking",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18682,
                                "src": "2673:7:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Staking_$15557",
                                  "typeString": "contract Staking"
                                }
                              },
                              "id": 18793,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "kickoffTS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15620,
                              "src": "2673:17:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 18794,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2673:19:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2661:31:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18796,
                        "nodeType": "ExpressionStatement",
                        "src": "2661:31:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18797,
                            "name": "SOVToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18684,
                            "src": "2696:8:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 18798,
                                "name": "staking",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18682,
                                "src": "2707:7:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Staking_$15557",
                                  "typeString": "contract Staking"
                                }
                              },
                              "id": 18799,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "SOVToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15625,
                              "src": "2707:16:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$24699_$",
                                "typeString": "function () view external returns (contract IERC20)"
                              }
                            },
                            "id": 18800,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2707:18:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "2696:29:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 18802,
                        "nodeType": "ExpressionStatement",
                        "src": "2696:29:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18803,
                            "name": "vestingTerm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18674,
                            "src": "2729:11:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 18804,
                              "name": "kickoffTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18672,
                              "src": "2743:9:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 18805,
                              "name": "SOV_VESTING_CLIFF",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18670,
                              "src": "2755:17:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2743:29:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2729:43:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18808,
                        "nodeType": "ExpressionStatement",
                        "src": "2729:43:70"
                      }
                    ]
                  },
                  "documentation": "@notice Contract deployment requires one parameter:\n@param vestingRegistryAddress The vestingRegistry contract instance address.\n",
                  "id": 18810,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18775,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18774,
                        "name": "vestingRegistryAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 18810,
                        "src": "2509:30:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18773,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2509:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2508:32:70"
                  },
                  "returnParameters": {
                    "id": 18776,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2548:0:70"
                  },
                  "scope": 19146,
                  "src": "2497:279:70",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18827,
                    "nodeType": "Block",
                    "src": "2943:56:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18817,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18688,
                              "src": "2947:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 18819,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 18818,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18812,
                              "src": "2954:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2947:14:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 18820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2964:4:70",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "2947:21:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18822,
                        "nodeType": "ExpressionStatement",
                        "src": "2947:21:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18824,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18812,
                              "src": "2988:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18823,
                            "name": "AdminAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18696,
                            "src": "2977:10:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 18825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2977:18:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18826,
                        "nodeType": "EmitStatement",
                        "src": "2972:23:70"
                      }
                    ]
                  },
                  "documentation": "@notice Add account to ACL.\n@param _admin The addresses of the account to grant permissions.\n",
                  "id": 18828,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 18815,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18814,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2933:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2933:9:70"
                    }
                  ],
                  "name": "addAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18813,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18812,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 18828,
                        "src": "2910:14:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18811,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2910:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2909:16:70"
                  },
                  "returnParameters": {
                    "id": 18816,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2943:0:70"
                  },
                  "scope": 19146,
                  "src": "2892:107:70",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18845,
                    "nodeType": "Block",
                    "src": "3175:59:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18835,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18688,
                              "src": "3179:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 18837,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 18836,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18830,
                              "src": "3186:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3179:14:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 18838,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3196:5:70",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "3179:22:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18840,
                        "nodeType": "ExpressionStatement",
                        "src": "3179:22:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18842,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18830,
                              "src": "3223:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18841,
                            "name": "AdminRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18700,
                            "src": "3210:12:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 18843,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3210:20:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18844,
                        "nodeType": "EmitStatement",
                        "src": "3205:25:70"
                      }
                    ]
                  },
                  "documentation": "@notice Remove account from ACL.\n@param _admin The addresses of the account to revoke permissions.\n",
                  "id": 18846,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 18833,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18832,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "3165:9:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3165:9:70"
                    }
                  ],
                  "name": "removeAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18831,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18830,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 18846,
                        "src": "3142:14:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18829,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3142:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3141:16:70"
                  },
                  "returnParameters": {
                    "id": 18834,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3175:0:70"
                  },
                  "scope": 19146,
                  "src": "3121:113:70",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18867,
                    "nodeType": "Block",
                    "src": "3526:158:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 18856,
                                  "name": "toAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18848,
                                  "src": "3560:9:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 18860,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 45220,
                                          "src": "3598:4:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_OriginInvestorsClaim_$19146",
                                            "typeString": "contract OriginInvestorsClaim"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_OriginInvestorsClaim_$19146",
                                            "typeString": "contract OriginInvestorsClaim"
                                          }
                                        ],
                                        "id": 18859,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3590:7:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 18861,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3590:13:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18857,
                                      "name": "SOVToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18684,
                                      "src": "3571:8:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 18858,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24644,
                                    "src": "3571:18:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 18862,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3571:33:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18854,
                                  "name": "SOVToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18684,
                                  "src": "3542:8:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 18855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24671,
                                "src": "3542:17:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 18863,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3542:63:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f726967696e496e766573746f7273436c61696d3a3a617574686f72697a65645472616e7366657242616c616e63653a207472616e73666572206661696c6564",
                              "id": 18864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3610:66:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_09540f6c4e7ba69e3732408b389ad4d9ce9c5859f928ea60bcedde86731362bb",
                                "typeString": "literal_string \"OriginInvestorsClaim::authorizedTransferBalance: transfer failed\""
                              },
                              "value": "OriginInvestorsClaim::authorizedTransferBalance: transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_09540f6c4e7ba69e3732408b389ad4d9ce9c5859f928ea60bcedde86731362bb",
                                "typeString": "literal_string \"OriginInvestorsClaim::authorizedTransferBalance: transfer failed\""
                              }
                            ],
                            "id": 18853,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3530:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3530:150:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18866,
                        "nodeType": "ExpressionStatement",
                        "src": "3530:150:70"
                      }
                    ]
                  },
                  "documentation": "@notice In case we have unclaimed tokens or in emergency case\nthis function transfers all SOV tokens to a given address.\n@param toAddress The recipient address of all this contract tokens.\n",
                  "id": 18868,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 18851,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18850,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18739,
                        "src": "3511:14:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3511:14:70"
                    }
                  ],
                  "name": "authorizedBalanceWithdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18849,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18848,
                        "name": "toAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 18868,
                        "src": "3485:17:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18847,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3485:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3484:19:70"
                  },
                  "returnParameters": {
                    "id": 18852,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3526:0:70"
                  },
                  "scope": 19146,
                  "src": "3450:234:70",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18896,
                    "nodeType": "Block",
                    "src": "3975:265:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 18879,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 45220,
                                        "src": "4018:4:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_OriginInvestorsClaim_$19146",
                                          "typeString": "contract OriginInvestorsClaim"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_OriginInvestorsClaim_$19146",
                                          "typeString": "contract OriginInvestorsClaim"
                                        }
                                      ],
                                      "id": 18878,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4010:7:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 18880,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4010:13:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18876,
                                    "name": "SOVToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18684,
                                    "src": "3991:8:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 18877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 24644,
                                  "src": "3991:18:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 18881,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3991:33:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 18882,
                                "name": "totalAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18667,
                                "src": "4028:11:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3991:48:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f726967696e496e766573746f7273436c61696d3a3a736574496e766573746f7273416d6f756e74734c6973743a2074686520636f6e7472616374206973206e6f7420656e6f7567682066696e616e636564",
                              "id": 18884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4044:84:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4ba64038a3d386ebd687568b8fa5a87e275db38d76cf4f89dd5385705e5fa305",
                                "typeString": "literal_string \"OriginInvestorsClaim::setInvestorsAmountsList: the contract is not enough financed\""
                              },
                              "value": "OriginInvestorsClaim::setInvestorsAmountsList: the contract is not enough financed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4ba64038a3d386ebd687568b8fa5a87e275db38d76cf4f89dd5385705e5fa305",
                                "typeString": "literal_string \"OriginInvestorsClaim::setInvestorsAmountsList: the contract is not enough financed\""
                              }
                            ],
                            "id": 18875,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3979:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3979:153:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18886,
                        "nodeType": "ExpressionStatement",
                        "src": "3979:153:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18887,
                            "name": "investorsListInitialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18678,
                            "src": "4137:24:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 18888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4164:4:70",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "4137:31:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18890,
                        "nodeType": "ExpressionStatement",
                        "src": "4137:31:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18892,
                              "name": "investorsQty",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18676,
                              "src": "4210:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18893,
                              "name": "totalAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18667,
                              "src": "4224:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18891,
                            "name": "InvestorsAmountsListInitialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18724,
                            "src": "4178:31:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 18894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4178:58:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18895,
                        "nodeType": "EmitStatement",
                        "src": "4173:63:70"
                      }
                    ]
                  },
                  "documentation": "@notice Should be called after the investors list setup completed.\nThis function checks whether the SOV token balance of the contract is\nenough and sets status list to initialized.\n",
                  "id": 18897,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 18871,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18870,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18739,
                        "src": "3945:14:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3945:14:70"
                    },
                    {
                      "arguments": null,
                      "id": 18873,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18872,
                        "name": "notInitialized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18763,
                        "src": "3960:14:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3960:14:70"
                    }
                  ],
                  "name": "setInvestorsAmountsListInitialized",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18869,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3935:2:70"
                  },
                  "returnParameters": {
                    "id": 18874,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3975:0:70"
                  },
                  "scope": 19146,
                  "src": "3892:348:70",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19001,
                    "nodeType": "Block",
                    "src": "4735:643:70",
                    "statements": [
                      {
                        "assignments": [
                          18911
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18911,
                            "name": "subQty",
                            "nodeType": "VariableDeclaration",
                            "scope": 19001,
                            "src": "4739:14:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18910,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4739:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18912,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4739:14:70"
                      },
                      {
                        "assignments": [
                          18914
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18914,
                            "name": "sumAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 19001,
                            "src": "4757:17:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18913,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4757:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18915,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4757:17:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18917,
                                  "name": "investors",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18900,
                                  "src": "4790:9:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 18918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4790:16:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18919,
                                  "name": "claimAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18903,
                                  "src": "4810:12:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 18920,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4810:19:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4790:39:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f726967696e496e766573746f7273436c61696d3a3a617070656e64496e766573746f7273416d6f756e74734c6973743a20696e766573746f72732e6c656e67746820213d20636c61696d416d6f756e74732e6c656e677468",
                              "id": 18922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4834:91:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_daab801d6da3e186b26d80666808ae79e65601eb7a6ad76900bbaf7ef3d02203",
                                "typeString": "literal_string \"OriginInvestorsClaim::appendInvestorsAmountsList: investors.length != claimAmounts.length\""
                              },
                              "value": "OriginInvestorsClaim::appendInvestorsAmountsList: investors.length != claimAmounts.length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_daab801d6da3e186b26d80666808ae79e65601eb7a6ad76900bbaf7ef3d02203",
                                "typeString": "literal_string \"OriginInvestorsClaim::appendInvestorsAmountsList: investors.length != claimAmounts.length\""
                              }
                            ],
                            "id": 18916,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4778:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4778:151:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18924,
                        "nodeType": "ExpressionStatement",
                        "src": "4778:151:70"
                      },
                      {
                        "body": {
                          "id": 18972,
                          "nodeType": "Block",
                          "src": "4981:206:70",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18936,
                                    "name": "investorsAmountsList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18692,
                                    "src": "4990:20:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 18940,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 18937,
                                      "name": "investors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18900,
                                      "src": "5011:9:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 18939,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 18938,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18926,
                                      "src": "5021:1:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5011:12:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4990:34:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 18941,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5028:1:70",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4990:39:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 18970,
                                "nodeType": "Block",
                                "src": "5149:34:70",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18968,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 18963,
                                        "name": "subQty",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18911,
                                        "src": "5155:6:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 18966,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5175:1:70",
                                            "subdenomination": null,
                                            "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"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 18964,
                                            "name": "subQty",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18911,
                                            "src": "5164:6:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 18965,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "5164:10:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 18967,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5164:13:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5155:22:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18969,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5155:22:70"
                                  }
                                ]
                              },
                              "id": 18971,
                              "nodeType": "IfStatement",
                              "src": "4986:197:70",
                              "trueBody": {
                                "id": 18962,
                                "nodeType": "Block",
                                "src": "5031:112:70",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18951,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 18943,
                                          "name": "investorsAmountsList",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18692,
                                          "src": "5037:20:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 18947,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 18944,
                                            "name": "investors",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18900,
                                            "src": "5058:9:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                              "typeString": "address[] calldata"
                                            }
                                          },
                                          "id": 18946,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 18945,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18926,
                                            "src": "5068:1:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "5058:12:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "5037:34:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 18948,
                                          "name": "claimAmounts",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18903,
                                          "src": "5074:12:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                            "typeString": "uint256[] calldata"
                                          }
                                        },
                                        "id": 18950,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 18949,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18926,
                                          "src": "5087:1:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "5074:15:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5037:52:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18952,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5037:52:70"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18960,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 18953,
                                        "name": "sumAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18914,
                                        "src": "5095:9:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 18956,
                                              "name": "claimAmounts",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18903,
                                              "src": "5121:12:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                "typeString": "uint256[] calldata"
                                              }
                                            },
                                            "id": 18958,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 18957,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18926,
                                              "src": "5134:1:70",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "5121:15:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 18954,
                                            "name": "sumAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18914,
                                            "src": "5107:9:70",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 18955,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "5107:13:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 18959,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5107:30:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5095:42:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18961,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5095:42:70"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18929,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18926,
                            "src": "4954:1:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18930,
                              "name": "investors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18900,
                              "src": "4958:9:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 18931,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4958:16:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4954:20:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18973,
                        "initializationExpression": {
                          "assignments": [
                            18926
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 18926,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 18973,
                              "src": "4939:9:70",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 18925,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4939:7:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 18928,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4951:1:70",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4939:13:70"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 18934,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4976:3:70",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 18933,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18926,
                              "src": "4976:1:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18935,
                          "nodeType": "ExpressionStatement",
                          "src": "4976:3:70"
                        },
                        "nodeType": "ForStatement",
                        "src": "4934:253:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18974,
                            "name": "investorsQty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18676,
                            "src": "5191:12:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 18980,
                                    "name": "subQty",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18911,
                                    "src": "5244:6:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18977,
                                      "name": "investors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18900,
                                      "src": "5223:9:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 18978,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5223:16:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18979,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42092,
                                  "src": "5223:20:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 18981,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5223:28:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 18975,
                                "name": "investorsQty",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18676,
                                "src": "5206:12:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "5206:16:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 18982,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5206:46:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5191:61:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18984,
                        "nodeType": "ExpressionStatement",
                        "src": "5191:61:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18985,
                            "name": "totalAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18667,
                            "src": "5256:11:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 18988,
                                "name": "sumAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18914,
                                "src": "5286:9:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 18986,
                                "name": "totalAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18667,
                                "src": "5270:11:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18987,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "5270:15:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 18989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5270:26:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5256:40:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18991,
                        "nodeType": "ExpressionStatement",
                        "src": "5256:40:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 18996,
                                  "name": "subQty",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18911,
                                  "src": "5355:6:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18993,
                                    "name": "investors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18900,
                                    "src": "5334:9:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 18994,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5334:16:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 18995,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42092,
                                "src": "5334:20:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 18997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5334:28:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18998,
                              "name": "sumAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18914,
                              "src": "5364:9:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18992,
                            "name": "InvestorsAmountsListAppended",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18706,
                            "src": "5305:28:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 18999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5305:69:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19000,
                        "nodeType": "EmitStatement",
                        "src": "5300:74:70"
                      }
                    ]
                  },
                  "documentation": "@notice The contract should be approved or transferred necessary\namount of SOV prior to calling the function.\n@param investors The list of investors addresses to add to the list.\nDuplicates will be skipped.\n@param claimAmounts The list of amounts for investors investors[i]\nwill receive claimAmounts[i] of SOV.\n",
                  "id": 19002,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 18906,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18905,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18739,
                        "src": "4702:14:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4702:14:70"
                    },
                    {
                      "arguments": null,
                      "id": 18908,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 18907,
                        "name": "notInitialized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18763,
                        "src": "4719:14:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4719:14:70"
                    }
                  ],
                  "name": "appendInvestorsAmountsList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18904,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18900,
                        "name": "investors",
                        "nodeType": "VariableDeclaration",
                        "scope": 19002,
                        "src": "4626:28:70",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18898,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4626:7:70",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 18899,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4626:9:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18903,
                        "name": "claimAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 19002,
                        "src": "4656:31:70",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18901,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4656:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18902,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4656:9:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4625:63:70"
                  },
                  "returnParameters": {
                    "id": 18909,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4735:0:70"
                  },
                  "scope": 19146,
                  "src": "4590:788:70",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 19021,
                    "nodeType": "Block",
                    "src": "5590:81:70",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19009,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44996,
                            "src": "5598:3:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 19010,
                            "name": "vestingTerm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18674,
                            "src": "5604:11:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5598:17:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 19019,
                          "nodeType": "Block",
                          "src": "5648:20:70",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 19016,
                                  "name": "transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19145,
                                  "src": "5653:8:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 19017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5653:10:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19018,
                              "nodeType": "ExpressionStatement",
                              "src": "5653:10:70"
                            }
                          ]
                        },
                        "id": 19020,
                        "nodeType": "IfStatement",
                        "src": "5594:74:70",
                        "trueBody": {
                          "id": 19015,
                          "nodeType": "Block",
                          "src": "5617:25:70",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 19012,
                                  "name": "createVesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19112,
                                  "src": "5622:13:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 19013,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5622:15:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19014,
                              "nodeType": "ExpressionStatement",
                              "src": "5622:15:70"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Claim tokens from this contract.\nIf vestingTerm is not yet achieved a vesting is created.\nOtherwise tokens are tranferred.\n",
                  "id": 19022,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 19005,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 19004,
                        "name": "onlyWhitelisted",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18753,
                        "src": "5562:15:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5562:15:70"
                    },
                    {
                      "arguments": null,
                      "id": 19007,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 19006,
                        "name": "initialized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18772,
                        "src": "5578:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5578:11:70"
                    }
                  ],
                  "name": "claim",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19003,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5550:2:70"
                  },
                  "returnParameters": {
                    "id": 19008,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5590:0:70"
                  },
                  "scope": 19146,
                  "src": "5536:135:70",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 19111,
                    "nodeType": "Block",
                    "src": "5901:759:70",
                    "statements": [
                      {
                        "assignments": [
                          19026
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19026,
                            "name": "cliff",
                            "nodeType": "VariableDeclaration",
                            "scope": 19111,
                            "src": "5905:13:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19025,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5905:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19031,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19029,
                              "name": "now",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44996,
                              "src": "5937:3:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19027,
                              "name": "vestingTerm",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18674,
                              "src": "5921:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 19028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "5921:15:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 19030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5921:20:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5905:36:70"
                      },
                      {
                        "assignments": [
                          19033
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19033,
                            "name": "duration",
                            "nodeType": "VariableDeclaration",
                            "scope": 19111,
                            "src": "5945:16:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19032,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5945:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19035,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 19034,
                          "name": "cliff",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19026,
                          "src": "5964:5:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5945:24:70"
                      },
                      {
                        "assignments": [
                          19037
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19037,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 19111,
                            "src": "5973:14:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19036,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5973:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19042,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 19038,
                            "name": "investorsAmountsList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18692,
                            "src": "5990:20:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 19041,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19039,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "6011:3:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 19040,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6011:10:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5990:32:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5973:49:70"
                      },
                      {
                        "assignments": [
                          19044
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19044,
                            "name": "vestingContractAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 19111,
                            "src": "6026:30:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19043,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6026:7:70",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19045,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6026:30:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19046,
                            "name": "vestingContractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19044,
                            "src": "6061:22:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19049,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "6113:3:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 19050,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6113:10:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 19047,
                                "name": "vestingRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18680,
                                "src": "6086:15:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                  "typeString": "contract VestingRegistry"
                                }
                              },
                              "id": 19048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getVesting",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22086,
                              "src": "6086:26:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                "typeString": "function (address) view external returns (address)"
                              }
                            },
                            "id": 19051,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6086:38:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6061:63:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19053,
                        "nodeType": "ExpressionStatement",
                        "src": "6061:63:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19059,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19055,
                                "name": "vestingContractAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19044,
                                "src": "6136:22:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19057,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6170:1:70",
                                    "subdenomination": null,
                                    "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": 19056,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6162:7:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 19058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6162:10:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6136:36:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f726967696e496e766573746f7273436c61696d3a3a77697468647261773a2074686520636c61696d65722068617320616e206163746976652076657374696e6720636f6e7472616374",
                              "id": 19060,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6174:76:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3300a1a9a85d996bdf5518958c2366f1e23dffe23c01d7077e7070e6778f190b",
                                "typeString": "literal_string \"OriginInvestorsClaim::withdraw: the claimer has an active vesting contract\""
                              },
                              "value": "OriginInvestorsClaim::withdraw: the claimer has an active vesting contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3300a1a9a85d996bdf5518958c2366f1e23dffe23c01d7077e7070e6778f190b",
                                "typeString": "literal_string \"OriginInvestorsClaim::withdraw: the claimer has an active vesting contract\""
                              }
                            ],
                            "id": 19054,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6128:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6128:123:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19062,
                        "nodeType": "ExpressionStatement",
                        "src": "6128:123:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "6256:39:70",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 19063,
                              "name": "investorsAmountsList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18692,
                              "src": "6263:20:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 19066,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19064,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6284:3:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6284:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6263:32:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19068,
                        "nodeType": "ExpressionStatement",
                        "src": "6256:39:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19072,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6330:3:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19073,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6330:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19074,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19037,
                              "src": "6342:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19075,
                              "name": "cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19026,
                              "src": "6350:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19076,
                              "name": "duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19033,
                              "src": "6357:8:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19069,
                              "name": "vestingRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18680,
                              "src": "6300:15:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                "typeString": "contract VestingRegistry"
                              }
                            },
                            "id": 19071,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "createVesting",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21993,
                            "src": "6300:29:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256) external"
                            }
                          },
                          "id": 19077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6300:66:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19078,
                        "nodeType": "ExpressionStatement",
                        "src": "6300:66:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19079,
                            "name": "vestingContractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19044,
                            "src": "6370:22:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19082,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "6422:3:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 19083,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6422:10:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 19080,
                                "name": "vestingRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18680,
                                "src": "6395:15:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                  "typeString": "contract VestingRegistry"
                                }
                              },
                              "id": 19081,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getVesting",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22086,
                              "src": "6395:26:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                "typeString": "function (address) view external returns (address)"
                              }
                            },
                            "id": 19084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6395:38:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6370:63:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19086,
                        "nodeType": "ExpressionStatement",
                        "src": "6370:63:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 19091,
                                      "name": "vestingRegistry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18680,
                                      "src": "6471:15:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                        "typeString": "contract VestingRegistry"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                        "typeString": "contract VestingRegistry"
                                      }
                                    ],
                                    "id": 19090,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6463:7:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 19092,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6463:24:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 19093,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19037,
                                  "src": "6489:6:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19088,
                                  "name": "SOVToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18684,
                                  "src": "6445:8:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 19089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24671,
                                "src": "6445:17:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 19094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6445:51:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f726967696e496e766573746f7273436c61696d3a3a77697468647261773a20534f56207472616e73666572206661696c6564",
                              "id": 19095,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6498:53:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_79468083d70bb270bdb64066c504d3b7e0de63e6e7e10463e0b2513ffbc8f273",
                                "typeString": "literal_string \"OriginInvestorsClaim::withdraw: SOV transfer failed\""
                              },
                              "value": "OriginInvestorsClaim::withdraw: SOV transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_79468083d70bb270bdb64066c504d3b7e0de63e6e7e10463e0b2513ffbc8f273",
                                "typeString": "literal_string \"OriginInvestorsClaim::withdraw: SOV transfer failed\""
                              }
                            ],
                            "id": 19087,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6437:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6437:115:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19097,
                        "nodeType": "ExpressionStatement",
                        "src": "6437:115:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19101,
                              "name": "vestingContractAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19044,
                              "src": "6584:22:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19102,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19037,
                              "src": "6608:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19098,
                              "name": "vestingRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18680,
                              "src": "6556:15:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                "typeString": "contract VestingRegistry"
                              }
                            },
                            "id": 19100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakeTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22069,
                            "src": "6556:27:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 19103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6556:59:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19104,
                        "nodeType": "ExpressionStatement",
                        "src": "6556:59:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19106,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6637:3:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19107,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6637:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19108,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19037,
                              "src": "6649:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19105,
                            "name": "ClaimVested",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18712,
                            "src": "6625:11:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 19109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6625:31:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19110,
                        "nodeType": "EmitStatement",
                        "src": "6620:36:70"
                      }
                    ]
                  },
                  "documentation": "@notice Transfer tokens from this contract to a vestingRegistry contract.\nSender is removed from investor list and all its unvested tokens\nare sent to vesting contract.\n",
                  "id": 19112,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19023,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5889:2:70"
                  },
                  "returnParameters": {
                    "id": 19024,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5901:0:70"
                  },
                  "scope": 19146,
                  "src": "5867:793:70",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19144,
                    "nodeType": "Block",
                    "src": "6864:480:70",
                    "statements": [
                      {
                        "assignments": [
                          19116
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19116,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 19144,
                            "src": "6868:14:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19115,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6868:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19121,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 19117,
                            "name": "investorsAmountsList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18692,
                            "src": "6885:20:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 19120,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19118,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "6906:3:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 19119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6906:10:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6885:32:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6868:49:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "6922:39:70",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 19122,
                              "name": "investorsAmountsList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18692,
                              "src": "6929:20:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 19125,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19123,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6950:3:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6950:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6929:32:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19127,
                        "nodeType": "ExpressionStatement",
                        "src": "6922:39:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19131,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "7219:3:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 19132,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7219:10:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 19133,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19116,
                                  "src": "7231:6:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19129,
                                  "name": "SOVToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18684,
                                  "src": "7201:8:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 19130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24671,
                                "src": "7201:17:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 19134,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7201:37:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f726967696e496e766573746f7273436c61696d3a3a77697468647261773a20534f56207472616e73666572206661696c6564",
                              "id": 19135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7240:53:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_79468083d70bb270bdb64066c504d3b7e0de63e6e7e10463e0b2513ffbc8f273",
                                "typeString": "literal_string \"OriginInvestorsClaim::withdraw: SOV transfer failed\""
                              },
                              "value": "OriginInvestorsClaim::withdraw: SOV transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_79468083d70bb270bdb64066c504d3b7e0de63e6e7e10463e0b2513ffbc8f273",
                                "typeString": "literal_string \"OriginInvestorsClaim::withdraw: SOV transfer failed\""
                              }
                            ],
                            "id": 19128,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7193:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7193:101:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19137,
                        "nodeType": "ExpressionStatement",
                        "src": "7193:101:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19139,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "7321:3:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7321:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19141,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19116,
                              "src": "7333:6:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19138,
                            "name": "ClaimTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18718,
                            "src": "7304:16:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 19142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7304:36:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19143,
                        "nodeType": "EmitStatement",
                        "src": "7299:41:70"
                      }
                    ]
                  },
                  "documentation": "@notice Transfer tokens from this contract to the sender.\nSender is removed from investor list and all its unvested tokens\nare sent to its account.\n",
                  "id": 19145,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19113,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6852:2:70"
                  },
                  "returnParameters": {
                    "id": 19114,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6864:0:70"
                  },
                  "scope": 19146,
                  "src": "6835:509:70",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 19147,
              "src": "277:7069:70"
            }
          ],
          "src": "0:7347:70"
        },
        "id": 70
      },
      "contracts/governance/Vesting/OrigingVestingCreator.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/OrigingVestingCreator.sol",
          "exportedSymbols": {
            "OrigingVestingCreator": [
              19232
            ]
          },
          "id": 19233,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 19148,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:71"
            },
            {
              "id": 19149,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:71"
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../../openzeppelin/Ownable.sol",
              "id": 19150,
              "nodeType": "ImportDirective",
              "scope": 19233,
              "sourceUnit": 41799,
              "src": "60:40:71",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/VestingRegistry.sol",
              "file": "./VestingRegistry.sol",
              "id": 19151,
              "nodeType": "ImportDirective",
              "scope": 19233,
              "sourceUnit": 22219,
              "src": "101:31:71",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 19152,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "413:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 19153,
                  "nodeType": "InheritanceSpecifier",
                  "src": "413:7:71"
                }
              ],
              "contractDependencies": [
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Temp contract for checking address, creating and staking tokens.\n@notice It casts an instance of vestingRegistry and by using createVesting\nfunction it creates a vesting, gets it and stakes some tokens w/ this vesting.\n",
              "fullyImplemented": true,
              "id": 19232,
              "linearizedBaseContracts": [
                19232,
                41798,
                41125
              ],
              "name": "OrigingVestingCreator",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 19155,
                  "name": "vestingRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 19232,
                  "src": "424:38:71",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                    "typeString": "contract VestingRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19154,
                    "name": "VestingRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22218,
                    "src": "424:15:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                      "typeString": "contract VestingRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 19159,
                  "name": "processedList",
                  "nodeType": "VariableDeclaration",
                  "scope": 19232,
                  "src": "466:38:71",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 19158,
                    "keyType": {
                      "id": 19156,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "474:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "466:24:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 19157,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "485:4:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19170,
                    "nodeType": "Block",
                    "src": "553:59:71",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19164,
                            "name": "vestingRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19155,
                            "src": "557:15:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                              "typeString": "contract VestingRegistry"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19166,
                                "name": "_vestingRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19161,
                                "src": "591:16:71",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 19165,
                              "name": "VestingRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22218,
                              "src": "575:15:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_VestingRegistry_$22218_$",
                                "typeString": "type(contract VestingRegistry)"
                              }
                            },
                            "id": 19167,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "575:33:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                              "typeString": "contract VestingRegistry"
                            }
                          },
                          "src": "557:51:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                            "typeString": "contract VestingRegistry"
                          }
                        },
                        "id": 19169,
                        "nodeType": "ExpressionStatement",
                        "src": "557:51:71"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 19171,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19162,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19161,
                        "name": "_vestingRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 19171,
                        "src": "520:24:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19160,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "520:7:71",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "519:26:71"
                  },
                  "returnParameters": {
                    "id": 19163,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "553:0:71"
                  },
                  "scope": 19232,
                  "src": "508:104:71",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19230,
                    "nodeType": "Block",
                    "src": "1051:345:71",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19185,
                                "name": "_tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19173,
                                "src": "1063:11:71",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19187,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1086:1:71",
                                    "subdenomination": null,
                                    "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": 19186,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1078:7:71",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 19188,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1078:10:71",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1063:25:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c69642061646472657373",
                              "id": 19190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1090:17:71",
                              "subdenomination": null,
                              "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": 19184,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1055:7:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1055:53:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19192,
                        "nodeType": "ExpressionStatement",
                        "src": "1055:53:71"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "1120:27:71",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 19194,
                                  "name": "processedList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19159,
                                  "src": "1121:13:71",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 19196,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 19195,
                                  "name": "_tokenOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19173,
                                  "src": "1135:11:71",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1121:26:71",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416c72656164792070726f636573736564",
                              "id": 19198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1149:19:71",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_98177e42a8d32100da8516f5feb71c1912405e1679aea7324bbc1b876c567fe3",
                                "typeString": "literal_string \"Already processed\""
                              },
                              "value": "Already processed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_98177e42a8d32100da8516f5feb71c1912405e1679aea7324bbc1b876c567fe3",
                                "typeString": "literal_string \"Already processed\""
                              }
                            ],
                            "id": 19193,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1112:7:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1112:57:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19200,
                        "nodeType": "ExpressionStatement",
                        "src": "1112:57:71"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 19201,
                              "name": "processedList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19159,
                              "src": "1174:13:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 19203,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 19202,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19173,
                              "src": "1188:11:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1174:26:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 19204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1203:4:71",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1174:33:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19206,
                        "nodeType": "ExpressionStatement",
                        "src": "1174:33:71"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19210,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19173,
                              "src": "1242:11:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19211,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19175,
                              "src": "1255:7:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19212,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19177,
                              "src": "1264:6:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19213,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19179,
                              "src": "1272:9:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19207,
                              "name": "vestingRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19155,
                              "src": "1212:15:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                "typeString": "contract VestingRegistry"
                              }
                            },
                            "id": 19209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "createVesting",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21993,
                            "src": "1212:29:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256) external"
                            }
                          },
                          "id": 19214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1212:70:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19215,
                        "nodeType": "ExpressionStatement",
                        "src": "1212:70:71"
                      },
                      {
                        "assignments": [
                          19217
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19217,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 19230,
                            "src": "1286:15:71",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19216,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1286:7:71",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19222,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19220,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19173,
                              "src": "1331:11:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19218,
                              "name": "vestingRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19155,
                              "src": "1304:15:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                "typeString": "contract VestingRegistry"
                              }
                            },
                            "id": 19219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getVesting",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22086,
                            "src": "1304:26:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                              "typeString": "function (address) view external returns (address)"
                            }
                          },
                          "id": 19221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1304:39:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1286:57:71"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19226,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19217,
                              "src": "1375:7:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19227,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19175,
                              "src": "1384:7:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19223,
                              "name": "vestingRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19155,
                              "src": "1347:15:71",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                "typeString": "contract VestingRegistry"
                              }
                            },
                            "id": 19225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakeTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22069,
                            "src": "1347:27:71",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 19228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1347:45:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19229,
                        "nodeType": "ExpressionStatement",
                        "src": "1347:45:71"
                      }
                    ]
                  },
                  "documentation": "@notice Create a vesting, get it and stake some tokens w/ this vesting.\n@param _tokenOwner The owner of the tokens.\n@param _amount The amount of tokens to be vested.\n@param _cliff The time interval to the first withdraw in seconds.\n@param _duration The total duration in seconds.\n",
                  "id": 19231,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 19182,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 19181,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1041:9:71",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1041:9:71"
                    }
                  ],
                  "name": "createVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19180,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19173,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 19231,
                        "src": "953:19:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19172,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "953:7:71",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19175,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 19231,
                        "src": "976:15:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19174,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "976:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19177,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 19231,
                        "src": "995:14:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19176,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "995:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19179,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 19231,
                        "src": "1013:17:71",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19178,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1013:7:71",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "949:84:71"
                  },
                  "returnParameters": {
                    "id": 19183,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1051:0:71"
                  },
                  "scope": 19232,
                  "src": "927:469:71",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 19233,
              "src": "379:1019:71"
            }
          ],
          "src": "0:1399:71"
        },
        "id": 71
      },
      "contracts/governance/Vesting/SVR.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/SVR.sol",
          "exportedSymbols": {
            "SVR": [
              19504
            ]
          },
          "id": 19505,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 19234,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:72"
            },
            {
              "absolutePath": "contracts/openzeppelin/ERC20Detailed.sol",
              "file": "../../openzeppelin/ERC20Detailed.sol",
              "id": 19235,
              "nodeType": "ImportDirective",
              "scope": 19505,
              "sourceUnit": 41589,
              "src": "26:46:72",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/IERC20_.sol",
              "file": "../../openzeppelin/IERC20_.sol",
              "id": 19236,
              "nodeType": "ImportDirective",
              "scope": 19505,
              "sourceUnit": 41658,
              "src": "73:40:72",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/ERC20.sol",
              "file": "../../openzeppelin/ERC20.sol",
              "id": 19237,
              "nodeType": "ImportDirective",
              "scope": 19505,
              "sourceUnit": 41531,
              "src": "114:38:72",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../../openzeppelin/Ownable.sol",
              "id": 19238,
              "nodeType": "ImportDirective",
              "scope": 19505,
              "sourceUnit": 41799,
              "src": "153:40:72",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/SafeMath96.sol",
              "file": "../Staking/SafeMath96.sol",
              "id": 19239,
              "nodeType": "ImportDirective",
              "scope": 19505,
              "sourceUnit": 13960,
              "src": "194:35:72",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/IStaking.sol",
              "file": "../Staking/IStaking.sol",
              "id": 19240,
              "nodeType": "ImportDirective",
              "scope": 19505,
              "sourceUnit": 13774,
              "src": "230:33:72",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/IApproveAndCall.sol",
              "file": "../../token/IApproveAndCall.sol",
              "id": 19241,
              "nodeType": "ImportDirective",
              "scope": 19505,
              "sourceUnit": 44824,
              "src": "264:41:72",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/ApprovalReceiver.sol",
              "file": "../ApprovalReceiver.sol",
              "id": 19242,
              "nodeType": "ImportDirective",
              "scope": 19505,
              "sourceUnit": 10704,
              "src": "306:33:72",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 19243,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41530,
                    "src": "946:5:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$41530",
                      "typeString": "contract ERC20"
                    }
                  },
                  "id": 19244,
                  "nodeType": "InheritanceSpecifier",
                  "src": "946:5:72"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 19245,
                    "name": "ERC20Detailed",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41588,
                    "src": "953:13:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Detailed_$41588",
                      "typeString": "contract ERC20Detailed"
                    }
                  },
                  "id": 19246,
                  "nodeType": "InheritanceSpecifier",
                  "src": "953:13:72"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 19247,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "968:7:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 19248,
                  "nodeType": "InheritanceSpecifier",
                  "src": "968:7:72"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 19249,
                    "name": "SafeMath96",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13959,
                    "src": "977:10:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath96_$13959",
                      "typeString": "contract SafeMath96"
                    }
                  },
                  "id": 19250,
                  "nodeType": "InheritanceSpecifier",
                  "src": "977:10:72"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 19251,
                    "name": "ApprovalReceiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10703,
                    "src": "989:16:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ApprovalReceiver_$10703",
                      "typeString": "contract ApprovalReceiver"
                    }
                  },
                  "id": 19252,
                  "nodeType": "InheritanceSpecifier",
                  "src": "989:16:72"
                }
              ],
              "contractDependencies": [
                10703,
                10802,
                13959,
                41125,
                41530,
                41588,
                41657,
                41798,
                44823
              ],
              "contractKind": "contract",
              "documentation": "@title Sovryn Reward Token.\n@notice The RSOV token (Sovryn Vesting Reward Token) goal is to allow users to get\nrewards through the generation of protocol fees. The mint function accepts\nSOV tokens and mints the same amount of RSOV tokens. When burning RSOV\ntokens, the user gets 1/14th of the tokens sent back to him and the rest\nget staked in the user’s behalf with a schedule of 4 weeks cliff and period\n1 year duration.\n",
              "fullyImplemented": true,
              "id": 19504,
              "linearizedBaseContracts": [
                19504,
                10703,
                44823,
                10802,
                13959,
                41798,
                41588,
                41530,
                41657,
                41125
              ],
              "name": "SVR",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 19255,
                  "name": "NAME",
                  "nodeType": "VariableDeclaration",
                  "scope": 19504,
                  "src": "1025:52:72",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19253,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1025:6:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "536f7672796e2056657374696e672052657761726420546f6b656e",
                    "id": 19254,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1048:29:72",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_a3db9b2d3ec993a93cc0a356685241bd7a25bdfc2077ef9bb5c587296b7925c6",
                      "typeString": "literal_string \"Sovryn Vesting Reward Token\""
                    },
                    "value": "Sovryn Vesting Reward Token"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 19258,
                  "name": "SYMBOL",
                  "nodeType": "VariableDeclaration",
                  "scope": 19504,
                  "src": "1080:30:72",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19256,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1080:6:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "535652",
                    "id": 19257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1105:5:72",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c9c6fc16737836dc9b1443a60308bd6ae1d943b8db650dde9222e5e5dcd1aa87",
                      "typeString": "literal_string \"SVR\""
                    },
                    "value": "SVR"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 19261,
                  "name": "DECIMALS",
                  "nodeType": "VariableDeclaration",
                  "scope": 19504,
                  "src": "1113:28:72",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 19259,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1113:5:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3138",
                    "id": 19260,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1139:2:72",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_18_by_1",
                      "typeString": "int_const 18"
                    },
                    "value": "18"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 19264,
                  "name": "FOUR_WEEKS",
                  "nodeType": "VariableDeclaration",
                  "scope": 19504,
                  "src": "1206:37:72",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19262,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1206:7:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "34",
                    "id": 19263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1236:7:72",
                    "subdenomination": "weeks",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2419200_by_1",
                      "typeString": "int_const 2419200"
                    },
                    "value": "4"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 19267,
                  "name": "YEAR",
                  "nodeType": "VariableDeclaration",
                  "scope": 19504,
                  "src": "1246:32:72",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19265,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1246:7:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3532",
                    "id": 19266,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1270:8:72",
                    "subdenomination": "weeks",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_31449600_by_1",
                      "typeString": "int_const 31449600"
                    },
                    "value": "52"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 19270,
                  "name": "DIRECT_TRANSFER_PART",
                  "nodeType": "VariableDeclaration",
                  "scope": 19504,
                  "src": "1357:41:72",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 19268,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "1357:6:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3134",
                    "id": 19269,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1396:2:72",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_14_by_1",
                      "typeString": "int_const 14"
                    },
                    "value": "14"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19272,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 19504,
                  "src": "1439:18:72",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20__$41657",
                    "typeString": "contract IERC20_"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19271,
                    "name": "IERC20_",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41657,
                    "src": "1439:7:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20__$41657",
                      "typeString": "contract IERC20_"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 19274,
                  "name": "staking",
                  "nodeType": "VariableDeclaration",
                  "scope": 19504,
                  "src": "1495:23:72",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IStaking_$13773",
                    "typeString": "contract IStaking"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19273,
                    "name": "IStaking",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13773,
                    "src": "1495:8:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IStaking_$13773",
                      "typeString": "contract IStaking"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 19280,
                  "name": "Mint",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 19279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19276,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 19280,
                        "src": "1548:22:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19275,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1548:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19278,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 19280,
                        "src": "1572:14:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19277,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1572:7:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1547:40:72"
                  },
                  "src": "1537:51:72"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 19286,
                  "name": "Burn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 19285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19282,
                        "indexed": true,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 19286,
                        "src": "1601:22:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19281,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1601:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19284,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 19286,
                        "src": "1625:14:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19283,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1625:7:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1600:40:72"
                  },
                  "src": "1590:51:72"
                },
                {
                  "body": {
                    "id": 19328,
                    "nodeType": "Block",
                    "src": "1890:186:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19299,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19288,
                                "src": "1902:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19301,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1918:1:72",
                                    "subdenomination": null,
                                    "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": 19300,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1910:7:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 19302,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1910:10:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1902:18:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5356523a3a534f56206164647265737320696e76616c6964",
                              "id": 19304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1922:26:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_da7fbc1a78b08f6fbf0a4407c3c9e23d3cbb8b2e00d3b4b712095f4797cdfc15",
                                "typeString": "literal_string \"SVR::SOV address invalid\""
                              },
                              "value": "SVR::SOV address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_da7fbc1a78b08f6fbf0a4407c3c9e23d3cbb8b2e00d3b4b712095f4797cdfc15",
                                "typeString": "literal_string \"SVR::SOV address invalid\""
                              }
                            ],
                            "id": 19298,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1894:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1894:55:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19306,
                        "nodeType": "ExpressionStatement",
                        "src": "1894:55:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19308,
                                "name": "_staking",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19290,
                                "src": "1961:8:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19310,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1981:1:72",
                                    "subdenomination": null,
                                    "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": 19309,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1973:7:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 19311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1973:10:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1961:22:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5356523a3a7374616b696e67206164647265737320696e76616c6964",
                              "id": 19313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1985:30:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dc9aa427cb25cc1aaf299d35cf468e06b0c135072d6fd84c8d1420d2eb19df30",
                                "typeString": "literal_string \"SVR::staking address invalid\""
                              },
                              "value": "SVR::staking address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dc9aa427cb25cc1aaf299d35cf468e06b0c135072d6fd84c8d1420d2eb19df30",
                                "typeString": "literal_string \"SVR::staking address invalid\""
                              }
                            ],
                            "id": 19307,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1953:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1953:63:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19315,
                        "nodeType": "ExpressionStatement",
                        "src": "1953:63:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19316,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19272,
                            "src": "2021:3:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20__$41657",
                              "typeString": "contract IERC20_"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19318,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19288,
                                "src": "2035:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 19317,
                              "name": "IERC20_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41657,
                              "src": "2027:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20__$41657_$",
                                "typeString": "type(contract IERC20_)"
                              }
                            },
                            "id": 19319,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2027:13:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20__$41657",
                              "typeString": "contract IERC20_"
                            }
                          },
                          "src": "2021:19:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20__$41657",
                            "typeString": "contract IERC20_"
                          }
                        },
                        "id": 19321,
                        "nodeType": "ExpressionStatement",
                        "src": "2021:19:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19322,
                            "name": "staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19274,
                            "src": "2044:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IStaking_$13773",
                              "typeString": "contract IStaking"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19324,
                                "name": "_staking",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19290,
                                "src": "2063:8:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 19323,
                              "name": "IStaking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13773,
                              "src": "2054:8:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IStaking_$13773_$",
                                "typeString": "type(contract IStaking)"
                              }
                            },
                            "id": 19325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2054:18:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IStaking_$13773",
                              "typeString": "contract IStaking"
                            }
                          },
                          "src": "2044:28:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IStaking_$13773",
                            "typeString": "contract IStaking"
                          }
                        },
                        "id": 19327,
                        "nodeType": "ExpressionStatement",
                        "src": "2044:28:72"
                      }
                    ]
                  },
                  "documentation": "@notice Create reward token RSOV.\n@param _SOV The SOV token address.\n@param _staking The staking contract address.\n",
                  "id": 19329,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19293,
                          "name": "NAME",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19255,
                          "src": "1866:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19294,
                          "name": "SYMBOL",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19258,
                          "src": "1872:6:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19295,
                          "name": "DECIMALS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19261,
                          "src": "1880:8:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "id": 19296,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 19292,
                        "name": "ERC20Detailed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41588,
                        "src": "1852:13:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$41588_$",
                          "typeString": "type(contract ERC20Detailed)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1852:37:72"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19291,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19288,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 19329,
                        "src": "1813:12:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1813:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19290,
                        "name": "_staking",
                        "nodeType": "VariableDeclaration",
                        "scope": 19329,
                        "src": "1827:16:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19289,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1827:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1812:32:72"
                  },
                  "returnParameters": {
                    "id": 19297,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1890:0:72"
                  },
                  "scope": 19504,
                  "src": "1801:275:72",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19340,
                    "nodeType": "Block",
                    "src": "2254:36:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19335,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "2266:3:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2266:10:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19337,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19331,
                              "src": "2278:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 19334,
                            "name": "_mintTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19396,
                            "src": "2258:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint96)"
                            }
                          },
                          "id": 19338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2258:28:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19339,
                        "nodeType": "ExpressionStatement",
                        "src": "2258:28:72"
                      }
                    ]
                  },
                  "documentation": "@notice Hold SOV tokens and mint the respective amount of SVR tokens.\n@param _amount The amount of tokens to be mint.\n",
                  "id": 19341,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19332,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19331,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 19341,
                        "src": "2231:14:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 19330,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2231:6:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2230:16:72"
                  },
                  "returnParameters": {
                    "id": 19333,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2254:0:72"
                  },
                  "scope": 19504,
                  "src": "2217:73:72",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19355,
                    "nodeType": "Block",
                    "src": "2704:33:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19351,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19343,
                              "src": "2716:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19352,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19345,
                              "src": "2725:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 19350,
                            "name": "_mintTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19396,
                            "src": "2708:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint96)"
                            }
                          },
                          "id": 19353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2708:25:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19354,
                        "nodeType": "ExpressionStatement",
                        "src": "2708:25:72"
                      }
                    ]
                  },
                  "documentation": "@notice Hold SOV tokens and mint the respective amount of SVR tokens.\n@dev This function will be invoked from receiveApproval.\n@dev SOV.approveAndCall -> this.receiveApproval -> this.mintWithApproval\n@param _sender The sender of SOV.approveAndCall\n@param _amount The amount of tokens to be mint.\n",
                  "id": 19356,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 19348,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 19347,
                        "name": "onlyThisContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10510,
                        "src": "2687:16:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2687:16:72"
                    }
                  ],
                  "name": "mintWithApproval",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19346,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19343,
                        "name": "_sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 19356,
                        "src": "2647:15:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19342,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2647:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19345,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 19356,
                        "src": "2664:14:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 19344,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2664:6:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2646:33:72"
                  },
                  "returnParameters": {
                    "id": 19349,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2704:0:72"
                  },
                  "scope": 19504,
                  "src": "2621:116:72",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19395,
                    "nodeType": "Block",
                    "src": "2997:333:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 19366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19364,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19360,
                                "src": "3009:7:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19365,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3019:1:72",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3009:11:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5356523a3a6d696e743a20616d6f756e7420696e76616c6964",
                              "id": 19367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3022:27:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_731f206a95a3ee22d819c72e1dd74e970de831232f9f186f8ca601d4590f4eb2",
                                "typeString": "literal_string \"SVR::mint: amount invalid\""
                              },
                              "value": "SVR::mint: amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_731f206a95a3ee22d819c72e1dd74e970de831232f9f186f8ca601d4590f4eb2",
                                "typeString": "literal_string \"SVR::mint: amount invalid\""
                              }
                            ],
                            "id": 19363,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3001:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3001:49:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19369,
                        "nodeType": "ExpressionStatement",
                        "src": "3001:49:72"
                      },
                      {
                        "assignments": [
                          19371
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19371,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 19395,
                            "src": "3087:12:72",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 19370,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "3087:4:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19380,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19374,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19358,
                              "src": "3119:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 19376,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45226,
                                  "src": "3136:4:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_SVR_$19504",
                                    "typeString": "contract SVR"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_SVR_$19504",
                                    "typeString": "contract SVR"
                                  }
                                ],
                                "id": 19375,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3128:7:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 19377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3128:13:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19378,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19360,
                              "src": "3143:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19372,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19272,
                              "src": "3102:3:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20__$41657",
                                "typeString": "contract IERC20_"
                              }
                            },
                            "id": 19373,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 41640,
                            "src": "3102:16:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 19379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3102:49:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3087:64:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19382,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19371,
                              "src": "3163:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 19381,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44997,
                            "src": "3155:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 19383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3155:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19384,
                        "nodeType": "ExpressionStatement",
                        "src": "3155:16:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19386,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19358,
                              "src": "3277:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19387,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19360,
                              "src": "3286:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 19385,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41414,
                            "src": "3271:5:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 19388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3271:23:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19389,
                        "nodeType": "ExpressionStatement",
                        "src": "3271:23:72"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19391,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19358,
                              "src": "3309:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19392,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19360,
                              "src": "3318:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 19390,
                            "name": "Mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19280,
                            "src": "3304:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 19393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3304:22:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19394,
                        "nodeType": "EmitStatement",
                        "src": "3299:27:72"
                      }
                    ]
                  },
                  "documentation": "@notice The actual minting process, holding SOV and minting RSOV tokens.\n@param _sender The recipient of the minted tokens.\n@param _amount The amount of tokens to be minted.\n",
                  "id": 19396,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintTo",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19358,
                        "name": "_sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 19396,
                        "src": "2955:15:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19357,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2955:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19360,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 19396,
                        "src": "2972:14:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 19359,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2972:6:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2954:33:72"
                  },
                  "returnParameters": {
                    "id": 19362,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2997:0:72"
                  },
                  "scope": 19504,
                  "src": "2938:392:72",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19465,
                    "nodeType": "Block",
                    "src": "3526:626:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 19404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19402,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19398,
                                "src": "3538:7:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19403,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3548:1:72",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3538:11:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5356523a3a206275726e3a20616d6f756e7420696e76616c6964",
                              "id": 19405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3551:28:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_39ee8a63ab4f67a919b6fcf6ec5fb994137b17e35897b4b32128c5a5b34cda6c",
                                "typeString": "literal_string \"SVR:: burn: amount invalid\""
                              },
                              "value": "SVR:: burn: amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_39ee8a63ab4f67a919b6fcf6ec5fb994137b17e35897b4b32128c5a5b34cda6c",
                                "typeString": "literal_string \"SVR:: burn: amount invalid\""
                              }
                            ],
                            "id": 19401,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3530:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3530:50:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19407,
                        "nodeType": "ExpressionStatement",
                        "src": "3530:50:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19409,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "3624:3:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3624:10:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19411,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19398,
                              "src": "3636:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 19408,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41458,
                            "src": "3618:5:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 19412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3618:26:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19413,
                        "nodeType": "ExpressionStatement",
                        "src": "3618:26:72"
                      },
                      {
                        "assignments": [
                          19415
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19415,
                            "name": "transferAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 19465,
                            "src": "3763:21:72",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 19414,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "3763:6:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19419,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 19418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19416,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19398,
                            "src": "3787:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 19417,
                            "name": "DIRECT_TRANSFER_PART",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19270,
                            "src": "3797:20:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "3787:30:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3763:54:72"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 19422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19420,
                            "name": "transferAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19415,
                            "src": "3825:14:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3842:1:72",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3825:18:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19436,
                        "nodeType": "IfStatement",
                        "src": "3821:104:72",
                        "trueBody": {
                          "id": 19435,
                          "nodeType": "Block",
                          "src": "3845:80:72",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19426,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "3863:3:72",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 19427,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3863:10:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 19428,
                                    "name": "transferAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19415,
                                    "src": "3875:14:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19423,
                                    "name": "SOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19272,
                                    "src": "3850:3:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20__$41657",
                                      "typeString": "contract IERC20_"
                                    }
                                  },
                                  "id": 19425,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 41611,
                                  "src": "3850:12:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 19429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3850:40:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 19430,
                              "nodeType": "ExpressionStatement",
                              "src": "3850:40:72"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 19433,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 19431,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19398,
                                  "src": "3895:7:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 19432,
                                  "name": "transferAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19415,
                                  "src": "3906:14:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "3895:25:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 19434,
                              "nodeType": "ExpressionStatement",
                              "src": "3895:25:72"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 19441,
                                  "name": "staking",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19274,
                                  "src": "4003:7:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IStaking_$13773",
                                    "typeString": "contract IStaking"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IStaking_$13773",
                                    "typeString": "contract IStaking"
                                  }
                                ],
                                "id": 19440,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3995:7:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 19442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3995:16:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19443,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19398,
                              "src": "4013:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19437,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19272,
                              "src": "3983:3:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20__$41657",
                                "typeString": "contract IERC20_"
                              }
                            },
                            "id": 19439,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 41629,
                            "src": "3983:11:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 19444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3983:38:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19445,
                        "nodeType": "ExpressionStatement",
                        "src": "3983:38:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19449,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19398,
                              "src": "4051:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19450,
                              "name": "FOUR_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19264,
                              "src": "4060:10:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19451,
                              "name": "YEAR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19267,
                              "src": "4072:4:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19452,
                              "name": "FOUR_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19264,
                              "src": "4078:10:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19453,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "4090:3:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4090:10:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19455,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "4102:3:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19456,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4102:10:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19446,
                              "name": "staking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19274,
                              "src": "4026:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IStaking_$13773",
                                "typeString": "contract IStaking"
                              }
                            },
                            "id": 19448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakesBySchedule",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13723,
                            "src": "4026:24:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256,uint256,address,address) external"
                            }
                          },
                          "id": 19457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4026:87:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19458,
                        "nodeType": "ExpressionStatement",
                        "src": "4026:87:72"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19460,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "4128:3:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4128:10:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19462,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19398,
                              "src": "4140:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 19459,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19286,
                            "src": "4123:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 19463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4123:25:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19464,
                        "nodeType": "EmitStatement",
                        "src": "4118:30:72"
                      }
                    ]
                  },
                  "documentation": "@notice burns SVR tokens and stakes the respective amount SOV tokens in the user's behalf\n@param _amount the amount of tokens to be burnt",
                  "id": 19466,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19399,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19398,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 19466,
                        "src": "3503:14:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 19397,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "3503:6:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3502:16:72"
                  },
                  "returnParameters": {
                    "id": 19400,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3526:0:72"
                  },
                  "scope": 19504,
                  "src": "3489:663:72",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19475,
                    "nodeType": "Block",
                    "src": "4367:27:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19472,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19272,
                              "src": "4386:3:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20__$41657",
                                "typeString": "contract IERC20_"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20__$41657",
                                "typeString": "contract IERC20_"
                              }
                            ],
                            "id": 19471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4378:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 19473,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4378:12:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 19470,
                        "id": 19474,
                        "nodeType": "Return",
                        "src": "4371:19:72"
                      }
                    ]
                  },
                  "documentation": "@notice Override default ApprovalReceiver._getToken function to\nregister SOV token on this contract.\n@return The address of SOV token.\n",
                  "id": 19476,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19467,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4332:2:72"
                  },
                  "returnParameters": {
                    "id": 19470,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19469,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 19476,
                        "src": "4358:7:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19468,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4358:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4357:9:72"
                  },
                  "scope": 19504,
                  "src": "4314:80:72",
                  "stateMutability": "view",
                  "superFunction": 10639,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19502,
                    "nodeType": "Block",
                    "src": "4667:120:72",
                    "statements": [
                      {
                        "assignments": [
                          19485
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19485,
                            "name": "selectors",
                            "nodeType": "VariableDeclaration",
                            "scope": 19502,
                            "src": "4671:25:72",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                              "typeString": "bytes4[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 19483,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "4671:6:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 19484,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4671:8:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19491,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 19489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4712:1:72",
                              "subdenomination": null,
                              "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": 19488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4699:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (bytes4[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 19486,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "4703:6:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 19487,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4703:8:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            }
                          },
                          "id": 19490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4699:15:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4671:43:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 19492,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19485,
                              "src": "4718:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 19494,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 19493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4728:1:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4718:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19495,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45226,
                                "src": "4733:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_SVR_$19504",
                                  "typeString": "contract SVR"
                                }
                              },
                              "id": 19496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mintWithApproval",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19356,
                              "src": "4733:21:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint96_$returns$__$",
                                "typeString": "function (address,uint96) external"
                              }
                            },
                            "id": 19497,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4733:30:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "4718:45:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 19499,
                        "nodeType": "ExpressionStatement",
                        "src": "4718:45:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19500,
                          "name": "selectors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19485,
                          "src": "4774:9:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "functionReturnParameters": 19481,
                        "id": 19501,
                        "nodeType": "Return",
                        "src": "4767:16:72"
                      }
                    ]
                  },
                  "documentation": "@notice Override default ApprovalReceiver._getSelectors function to\nregister mintWithApproval selector on this contract.\n@return The array of registered selectors on this contract.\n",
                  "id": 19503,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getSelectors",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19477,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4624:2:72"
                  },
                  "returnParameters": {
                    "id": 19481,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19480,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 19503,
                        "src": "4650:15:72",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19478,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "4650:6:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 19479,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4650:8:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4649:17:72"
                  },
                  "scope": 19504,
                  "src": "4602:185:72",
                  "stateMutability": "view",
                  "superFunction": 10652,
                  "visibility": "internal"
                }
              ],
              "scope": 19505,
              "src": "930:3859:72"
            }
          ],
          "src": "0:4790:72"
        },
        "id": 72
      },
      "contracts/governance/Vesting/TeamVesting.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/TeamVesting.sol",
          "exportedSymbols": {
            "TeamVesting": [
              19624
            ]
          },
          "id": 19625,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 19506,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:73"
            },
            {
              "id": 19507,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:73"
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../../openzeppelin/Ownable.sol",
              "id": 19508,
              "nodeType": "ImportDirective",
              "scope": 19625,
              "sourceUnit": 41799,
              "src": "60:40:73",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 19509,
              "nodeType": "ImportDirective",
              "scope": 19625,
              "sourceUnit": 24700,
              "src": "101:37:73",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/Staking.sol",
              "file": "../Staking/Staking.sol",
              "id": 19510,
              "nodeType": "ImportDirective",
              "scope": 19625,
              "sourceUnit": 15558,
              "src": "139:32:73",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/IFeeSharingProxy.sol",
              "file": "../IFeeSharingProxy.sol",
              "id": 19511,
              "nodeType": "ImportDirective",
              "scope": 19625,
              "sourceUnit": 13113,
              "src": "172:33:73",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/IVesting.sol",
              "file": "./IVesting.sol",
              "id": 19512,
              "nodeType": "ImportDirective",
              "scope": 19625,
              "sourceUnit": 18598,
              "src": "206:24:73",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/ApprovalReceiver.sol",
              "file": "../ApprovalReceiver.sol",
              "id": 19513,
              "nodeType": "ImportDirective",
              "scope": 19625,
              "sourceUnit": 10704,
              "src": "231:33:73",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/VestingStorage.sol",
              "file": "./VestingStorage.sol",
              "id": 19514,
              "nodeType": "ImportDirective",
              "scope": 19625,
              "sourceUnit": 24571,
              "src": "265:30:73",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/proxy/Proxy.sol",
              "file": "../../proxy/Proxy.sol",
              "id": 19515,
              "nodeType": "ImportDirective",
              "scope": 19625,
              "sourceUnit": 42624,
              "src": "296:31:73",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 19516,
                    "name": "VestingStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24570,
                    "src": "611:14:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VestingStorage_$24570",
                      "typeString": "contract VestingStorage"
                    }
                  },
                  "id": 19517,
                  "nodeType": "InheritanceSpecifier",
                  "src": "611:14:73"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 19518,
                    "name": "Proxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42623,
                    "src": "627:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Proxy_$42623",
                      "typeString": "contract Proxy"
                    }
                  },
                  "id": 19519,
                  "nodeType": "InheritanceSpecifier",
                  "src": "627:5:73"
                }
              ],
              "contractDependencies": [
                24570,
                41125,
                41798,
                42623
              ],
              "contractKind": "contract",
              "documentation": "@title Team Vesting Contract.\n * @notice A regular vesting contract, but the owner (governance) is able to\nwithdraw earlier without a slashing.\n * @dev Vesting contracts shouldn't be upgradable,\nuse Proxy instead of UpgradableProxy.\n",
              "fullyImplemented": true,
              "id": 19624,
              "linearizedBaseContracts": [
                19624,
                42623,
                24570,
                41798,
                41125
              ],
              "name": "TeamVesting",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 19622,
                    "nodeType": "Block",
                    "src": "1119:669:73",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19541,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19537,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19523,
                                "src": "1131:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19539,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1147:1:73",
                                    "subdenomination": null,
                                    "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": 19538,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1139:7:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 19540,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1139:10:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1131:18:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "534f56206164647265737320696e76616c6964",
                              "id": 19542,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1151:21:73",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              },
                              "value": "SOV address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              }
                            ],
                            "id": 19536,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1123:7:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1123:50:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19544,
                        "nodeType": "ExpressionStatement",
                        "src": "1123:50:73"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19550,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19546,
                                "name": "_stakingAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19525,
                                "src": "1185:15:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19548,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1212:1:73",
                                    "subdenomination": null,
                                    "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": 19547,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1204:7:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 19549,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1204:10:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1185:29:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7374616b696e67206164647265737320696e76616c6964",
                              "id": 19551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1216:25:73",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dad5f662c3fef12349ee5cce4e61e29872181081c3701c492f86e4a0edbc8478",
                                "typeString": "literal_string \"staking address invalid\""
                              },
                              "value": "staking address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dad5f662c3fef12349ee5cce4e61e29872181081c3701c492f86e4a0edbc8478",
                                "typeString": "literal_string \"staking address invalid\""
                              }
                            ],
                            "id": 19545,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1177:7:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1177:65:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19553,
                        "nodeType": "ExpressionStatement",
                        "src": "1177:65:73"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19555,
                                "name": "_tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19527,
                                "src": "1254:11:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19557,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1277:1:73",
                                    "subdenomination": null,
                                    "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": 19556,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1269:7:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 19558,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1269:10:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1254:25:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "746f6b656e206f776e6572206164647265737320696e76616c6964",
                              "id": 19560,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1281:29:73",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_71badb12b462f4357d8abeb7958ef3c52ee29468d7ede1ce8722670c62cbc0a2",
                                "typeString": "literal_string \"token owner address invalid\""
                              },
                              "value": "token owner address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_71badb12b462f4357d8abeb7958ef3c52ee29468d7ede1ce8722670c62cbc0a2",
                                "typeString": "literal_string \"token owner address invalid\""
                              }
                            ],
                            "id": 19554,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1246:7:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1246:65:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19562,
                        "nodeType": "ExpressionStatement",
                        "src": "1246:65:73"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19566,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19564,
                                "name": "_duration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19531,
                                "src": "1323:9:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 19565,
                                "name": "_cliff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19529,
                                "src": "1336:6:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1323:19:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6475726174696f6e206d75737420626520626967676572207468616e206f7220657175616c20746f2074686520636c696666",
                              "id": 19567,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1344:52:73",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_530dc3d088eea5dad36b57182986bc27baee0f6dc1350ecf83a72bbcd1bc57d5",
                                "typeString": "literal_string \"duration must be bigger than or equal to the cliff\""
                              },
                              "value": "duration must be bigger than or equal to the cliff"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_530dc3d088eea5dad36b57182986bc27baee0f6dc1350ecf83a72bbcd1bc57d5",
                                "typeString": "literal_string \"duration must be bigger than or equal to the cliff\""
                              }
                            ],
                            "id": 19563,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1315:7:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1315:82:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19569,
                        "nodeType": "ExpressionStatement",
                        "src": "1315:82:73"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19571,
                                "name": "_feeSharingProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19533,
                                "src": "1409:16:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19573,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1437:1:73",
                                    "subdenomination": null,
                                    "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": 19572,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1429:7:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 19574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1429:10:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1409:30:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66656553686172696e6750726f7879206164647265737320696e76616c6964",
                              "id": 19576,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1441:33:73",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c10cbcafb5aa87027ea5ae59f7021a70ed9eaf13f3cc1fd382043183365fd95b",
                                "typeString": "literal_string \"feeSharingProxy address invalid\""
                              },
                              "value": "feeSharingProxy address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c10cbcafb5aa87027ea5ae59f7021a70ed9eaf13f3cc1fd382043183365fd95b",
                                "typeString": "literal_string \"feeSharingProxy address invalid\""
                              }
                            ],
                            "id": 19570,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1401:7:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1401:74:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19578,
                        "nodeType": "ExpressionStatement",
                        "src": "1401:74:73"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19580,
                              "name": "_logic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19521,
                              "src": "1499:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19579,
                            "name": "_setImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42555,
                            "src": "1480:18:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 19581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1480:26:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19582,
                        "nodeType": "ExpressionStatement",
                        "src": "1480:26:73"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19583,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24552,
                            "src": "1510:3:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19585,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19523,
                                "src": "1523:4:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 19584,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24699,
                              "src": "1516:6:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 19586,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1516:12:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "1510:18:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 19588,
                        "nodeType": "ExpressionStatement",
                        "src": "1510:18:73"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19589,
                            "name": "staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24554,
                            "src": "1532:7:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Staking_$15557",
                              "typeString": "contract Staking"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19591,
                                "name": "_stakingAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19525,
                                "src": "1550:15:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 19590,
                              "name": "Staking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15557,
                              "src": "1542:7:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Staking_$15557_$",
                                "typeString": "type(contract Staking)"
                              }
                            },
                            "id": 19592,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1542:24:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Staking_$15557",
                              "typeString": "contract Staking"
                            }
                          },
                          "src": "1532:34:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Staking_$15557",
                            "typeString": "contract Staking"
                          }
                        },
                        "id": 19594,
                        "nodeType": "ExpressionStatement",
                        "src": "1532:34:73"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19596,
                                "name": "_duration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19531,
                                "src": "1578:9:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19597,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24554,
                                    "src": "1591:7:73",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Staking_$15557",
                                      "typeString": "contract Staking"
                                    }
                                  },
                                  "id": 19598,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "MAX_DURATION",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15604,
                                  "src": "1591:20:73",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view external returns (uint256)"
                                  }
                                },
                                "id": 19599,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1591:22:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1578:35:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6475726174696f6e206d6179206e6f742065786365656420746865206d6178206475726174696f6e",
                              "id": 19601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1615:42:73",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_022dcdc8560d30406a9834fc110ff24a36cc7551fc166f2c2b43f95ac917bed0",
                                "typeString": "literal_string \"duration may not exceed the max duration\""
                              },
                              "value": "duration may not exceed the max duration"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_022dcdc8560d30406a9834fc110ff24a36cc7551fc166f2c2b43f95ac917bed0",
                                "typeString": "literal_string \"duration may not exceed the max duration\""
                              }
                            ],
                            "id": 19595,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1570:7:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1570:88:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19603,
                        "nodeType": "ExpressionStatement",
                        "src": "1570:88:73"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19604,
                            "name": "tokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24556,
                            "src": "1662:10:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 19605,
                            "name": "_tokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19527,
                            "src": "1675:11:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1662:24:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19607,
                        "nodeType": "ExpressionStatement",
                        "src": "1662:24:73"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19608,
                            "name": "cliff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24560,
                            "src": "1690:5:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 19609,
                            "name": "_cliff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19529,
                            "src": "1698:6:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1690:14:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19611,
                        "nodeType": "ExpressionStatement",
                        "src": "1690:14:73"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19612,
                            "name": "duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24562,
                            "src": "1708:8:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 19613,
                            "name": "_duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19531,
                            "src": "1719:9:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1708:20:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19615,
                        "nodeType": "ExpressionStatement",
                        "src": "1708:20:73"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19616,
                            "name": "feeSharingProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24558,
                            "src": "1732:15:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                              "typeString": "contract IFeeSharingProxy"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19618,
                                "name": "_feeSharingProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19533,
                                "src": "1767:16:73",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 19617,
                              "name": "IFeeSharingProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13112,
                              "src": "1750:16:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IFeeSharingProxy_$13112_$",
                                "typeString": "type(contract IFeeSharingProxy)"
                              }
                            },
                            "id": 19619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1750:34:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                              "typeString": "contract IFeeSharingProxy"
                            }
                          },
                          "src": "1732:52:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                            "typeString": "contract IFeeSharingProxy"
                          }
                        },
                        "id": 19621,
                        "nodeType": "ExpressionStatement",
                        "src": "1732:52:73"
                      }
                    ]
                  },
                  "documentation": "@notice Setup the vesting schedule.\n@param _logic The address of logic contract.\n@param _SOV The SOV token address.\n@param _tokenOwner The owner of the tokens.\n@param _cliff The time interval to the first withdraw in seconds.\n@param _duration The total duration in seconds.\n",
                  "id": 19623,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19534,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19521,
                        "name": "_logic",
                        "nodeType": "VariableDeclaration",
                        "scope": 19623,
                        "src": "961:14:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19520,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "961:7:73",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19523,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 19623,
                        "src": "979:12:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19522,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "979:7:73",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19525,
                        "name": "_stakingAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 19623,
                        "src": "995:23:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19524,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "995:7:73",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19527,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 19623,
                        "src": "1022:19:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19526,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1022:7:73",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19529,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 19623,
                        "src": "1045:14:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19528,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1045:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19531,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 19623,
                        "src": "1063:17:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19530,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1063:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19533,
                        "name": "_feeSharingProxy",
                        "nodeType": "VariableDeclaration",
                        "scope": 19623,
                        "src": "1084:24:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19532,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1084:7:73",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "957:154:73"
                  },
                  "returnParameters": {
                    "id": 19535,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1119:0:73"
                  },
                  "scope": 19624,
                  "src": "946:842:73",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 19625,
              "src": "587:1203:73"
            }
          ],
          "src": "0:1791:73"
        },
        "id": 73
      },
      "contracts/governance/Vesting/TokenSender.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/TokenSender.sol",
          "exportedSymbols": {
            "TokenSender": [
              19819
            ]
          },
          "id": 19820,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 19626,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:74"
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../../openzeppelin/Ownable.sol",
              "id": 19627,
              "nodeType": "ImportDirective",
              "scope": 19820,
              "sourceUnit": 41799,
              "src": "26:40:74",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 19628,
              "nodeType": "ImportDirective",
              "scope": 19820,
              "sourceUnit": 24700,
              "src": "67:37:74",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 19629,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "547:7:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 19630,
                  "nodeType": "InheritanceSpecifier",
                  "src": "547:7:74"
                }
              ],
              "contractDependencies": [
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title SOV Token sender contract.\n * @notice This contract includes functions to transfer SOV tokens\nto a recipient or to several recipients in a list. There is\nan ACL control check by modifier.\n * @dev TODO: Maybe this token transfer functionality should be included\nin the SOV token contract, because other contracts are requiring it too:\nVestingRegistry.sol and VestingRegistry2.sol\n",
              "fullyImplemented": true,
              "id": 19819,
              "linearizedBaseContracts": [
                19819,
                41798,
                41125
              ],
              "name": "TokenSender",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 19632,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 19819,
                  "src": "611:18:74",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19631,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "611:7:74",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 19636,
                  "name": "admins",
                  "nodeType": "VariableDeclaration",
                  "scope": 19819,
                  "src": "684:38:74",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 19635,
                    "keyType": {
                      "id": 19633,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "692:7:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "684:24:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 19634,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "703:4:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 19642,
                  "name": "SOVTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 19641,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19638,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 19642,
                        "src": "762:24:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19637,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "762:7:74",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19640,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 19642,
                        "src": "788:14:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19639,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "788:7:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "761:42:74"
                  },
                  "src": "741:63:74"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 19646,
                  "name": "AdminAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 19645,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19644,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 19646,
                        "src": "823:13:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19643,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "823:7:74",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "822:15:74"
                  },
                  "src": "806:32:74"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 19650,
                  "name": "AdminRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 19649,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19648,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 19650,
                        "src": "859:13:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19647,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "859:7:74",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "858:15:74"
                  },
                  "src": "840:34:74"
                },
                {
                  "body": {
                    "id": 19668,
                    "nodeType": "Block",
                    "src": "928:73:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19656,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19652,
                                "src": "940:4:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19658,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "956:1:74",
                                    "subdenomination": null,
                                    "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": 19657,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "948:7:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 19659,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "948:10:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "940:18:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "534f56206164647265737320696e76616c6964",
                              "id": 19661,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "960:21:74",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              },
                              "value": "SOV address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              }
                            ],
                            "id": 19655,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "932:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19662,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "932:50:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19663,
                        "nodeType": "ExpressionStatement",
                        "src": "932:50:74"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19664,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19632,
                            "src": "987:3:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 19665,
                            "name": "_SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19652,
                            "src": "993:4:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "987:10:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19667,
                        "nodeType": "ExpressionStatement",
                        "src": "987:10:74"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 19669,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19653,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19652,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 19669,
                        "src": "907:12:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19651,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "907:7:74",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "906:14:74"
                  },
                  "returnParameters": {
                    "id": 19654,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "928:0:74"
                  },
                  "scope": 19819,
                  "src": "895:106:74",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19683,
                    "nodeType": "Block",
                    "src": "1132:69:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 19678,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 19672,
                                  "name": "isOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41761,
                                  "src": "1144:7:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 19673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1144:9:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 19674,
                                  "name": "admins",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19636,
                                  "src": "1157:6:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 19677,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19675,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "1164:3:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 19676,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1164:10:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1157:18:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1144:31:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 19679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1177:14:74",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 19671,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1136:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1136:56:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19681,
                        "nodeType": "ExpressionStatement",
                        "src": "1136:56:74"
                      },
                      {
                        "id": 19682,
                        "nodeType": "PlaceholderStatement",
                        "src": "1196:1:74"
                      }
                    ]
                  },
                  "documentation": "@dev Throws if called by any account other than the owner or admin.\n",
                  "id": 19684,
                  "name": "onlyAuthorized",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 19670,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1129:2:74"
                  },
                  "src": "1106:95:74",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19701,
                    "nodeType": "Block",
                    "src": "1386:56:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 19691,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19636,
                              "src": "1390:6:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 19693,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 19692,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19686,
                              "src": "1397:6:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1390:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 19694,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1407:4:74",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1390:21:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19696,
                        "nodeType": "ExpressionStatement",
                        "src": "1390:21:74"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19698,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19686,
                              "src": "1431:6:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19697,
                            "name": "AdminAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19646,
                            "src": "1420:10:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 19699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1420:18:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19700,
                        "nodeType": "EmitStatement",
                        "src": "1415:23:74"
                      }
                    ]
                  },
                  "documentation": "@notice Add account to ACL.\n@param _admin The addresses of the account to grant permissions.\n",
                  "id": 19702,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 19689,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 19688,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1376:9:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1376:9:74"
                    }
                  ],
                  "name": "addAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19687,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19686,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 19702,
                        "src": "1353:14:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19685,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1353:7:74",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1352:16:74"
                  },
                  "returnParameters": {
                    "id": 19690,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1386:0:74"
                  },
                  "scope": 19819,
                  "src": "1335:107:74",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19719,
                    "nodeType": "Block",
                    "src": "1618:59:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 19709,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19636,
                              "src": "1622:6:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 19711,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 19710,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19704,
                              "src": "1629:6:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1622:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 19712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1639:5:74",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "1622:22:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19714,
                        "nodeType": "ExpressionStatement",
                        "src": "1622:22:74"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19716,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19704,
                              "src": "1666:6:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19715,
                            "name": "AdminRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19650,
                            "src": "1653:12:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 19717,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1653:20:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19718,
                        "nodeType": "EmitStatement",
                        "src": "1648:25:74"
                      }
                    ]
                  },
                  "documentation": "@notice Remove account from ACL.\n@param _admin The addresses of the account to revoke permissions.\n",
                  "id": 19720,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 19707,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 19706,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1608:9:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1608:9:74"
                    }
                  ],
                  "name": "removeAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19705,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19704,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 19720,
                        "src": "1585:14:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19703,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1585:7:74",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1584:16:74"
                  },
                  "returnParameters": {
                    "id": 19708,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1618:0:74"
                  },
                  "scope": 19819,
                  "src": "1564:113:74",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19762,
                    "nodeType": "Block",
                    "src": "1975:174:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19732,
                                  "name": "_receivers",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19723,
                                  "src": "1987:10:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 19733,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1987:17:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19734,
                                  "name": "_amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19726,
                                  "src": "2008:8:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 19735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2008:15:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1987:36:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "617272617973206d69736d61746368",
                              "id": 19737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2025:17:74",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_115fa4d55b2382f0df2d2ef875c628f9f025f1b3caada2d0c0c9f0a6e0c68f6a",
                                "typeString": "literal_string \"arrays mismatch\""
                              },
                              "value": "arrays mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_115fa4d55b2382f0df2d2ef875c628f9f025f1b3caada2d0c0c9f0a6e0c68f6a",
                                "typeString": "literal_string \"arrays mismatch\""
                              }
                            ],
                            "id": 19731,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1979:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1979:64:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19739,
                        "nodeType": "ExpressionStatement",
                        "src": "1979:64:74"
                      },
                      {
                        "body": {
                          "id": 19760,
                          "nodeType": "Block",
                          "src": "2096:50:74",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19752,
                                      "name": "_receivers",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19723,
                                      "src": "2114:10:74",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 19754,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 19753,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19741,
                                      "src": "2125:1:74",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2114:13:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19755,
                                      "name": "_amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19726,
                                      "src": "2129:8:74",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 19757,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 19756,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19741,
                                      "src": "2138:1:74",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2129:11:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 19751,
                                  "name": "_transferSOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19818,
                                  "src": "2101:12:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 19758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2101:40:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19759,
                              "nodeType": "ExpressionStatement",
                              "src": "2101:40:74"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19744,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19741,
                            "src": "2068:1:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19745,
                              "name": "_receivers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19723,
                              "src": "2072:10:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 19746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2072:17:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2068:21:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19761,
                        "initializationExpression": {
                          "assignments": [
                            19741
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 19741,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 19761,
                              "src": "2053:9:74",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 19740,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2053:7:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 19743,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19742,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2065:1:74",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2053:13:74"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 19749,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2091:3:74",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 19748,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19741,
                              "src": "2091:1:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19750,
                          "nodeType": "ExpressionStatement",
                          "src": "2091:3:74"
                        },
                        "nodeType": "ForStatement",
                        "src": "2048:98:74"
                      }
                    ]
                  },
                  "documentation": "@notice Transfer given amounts of SOV to the given addresses.\n@param _receivers The addresses of the SOV receivers.\n@param _amounts The amounts to be transferred.\n",
                  "id": 19763,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 19729,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 19728,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19684,
                        "src": "1960:14:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1960:14:74"
                    }
                  ],
                  "name": "transferSOVusingList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19727,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19723,
                        "name": "_receivers",
                        "nodeType": "VariableDeclaration",
                        "scope": 19763,
                        "src": "1897:27:74",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19721,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1897:7:74",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 19722,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1897:9:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19726,
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 19763,
                        "src": "1926:25:74",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19724,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1926:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19725,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1926:9:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1896:56:74"
                  },
                  "returnParameters": {
                    "id": 19730,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1975:0:74"
                  },
                  "scope": 19819,
                  "src": "1867:282:74",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19777,
                    "nodeType": "Block",
                    "src": "2396:40:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19773,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19765,
                              "src": "2413:9:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19774,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19767,
                              "src": "2424:7:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19772,
                            "name": "_transferSOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19818,
                            "src": "2400:12:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 19775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2400:32:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19776,
                        "nodeType": "ExpressionStatement",
                        "src": "2400:32:74"
                      }
                    ]
                  },
                  "documentation": "@notice Transfer SOV tokens to given address.\n@param _receiver The address of the SOV receiver.\n@param _amount The amount to be transferred.\n",
                  "id": 19778,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 19770,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 19769,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19684,
                        "src": "2381:14:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2381:14:74"
                    }
                  ],
                  "name": "transferSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19768,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19765,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 19778,
                        "src": "2338:17:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19764,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2338:7:74",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19767,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 19778,
                        "src": "2357:15:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19766,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2357:7:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2337:36:74"
                  },
                  "returnParameters": {
                    "id": 19771,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2396:0:74"
                  },
                  "scope": 19819,
                  "src": "2317:119:74",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19817,
                    "nodeType": "Block",
                    "src": "2506:227:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19786,
                                "name": "_receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19780,
                                "src": "2518:9:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19788,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2539:1:74",
                                    "subdenomination": null,
                                    "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": 19787,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2531:7:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 19789,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2531:10:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2518:23:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7265636569766572206164647265737320696e76616c6964",
                              "id": 19791,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2543:26:74",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              },
                              "value": "receiver address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              }
                            ],
                            "id": 19785,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2510:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2510:60:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19793,
                        "nodeType": "ExpressionStatement",
                        "src": "2510:60:74"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19795,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19782,
                                "src": "2582:7:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2593:1:74",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2582:12:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 19798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2596:16:74",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 19794,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2574:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2574:39:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19800,
                        "nodeType": "ExpressionStatement",
                        "src": "2574:39:74"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 19806,
                                  "name": "_receiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19780,
                                  "src": "2647:9:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 19807,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19782,
                                  "src": "2658:7:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 19803,
                                      "name": "SOV",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19632,
                                      "src": "2633:3:74",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 19802,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24699,
                                    "src": "2626:6:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 19804,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2626:11:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 19805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24671,
                                "src": "2626:20:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 19808,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2626:40:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7472616e73666572206661696c6564",
                              "id": 19809,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2668:17:74",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_df1797085e2da014ef9392ee25ab0802d6ce132451397172f17fd86110e2e02b",
                                "typeString": "literal_string \"transfer failed\""
                              },
                              "value": "transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_df1797085e2da014ef9392ee25ab0802d6ce132451397172f17fd86110e2e02b",
                                "typeString": "literal_string \"transfer failed\""
                              }
                            ],
                            "id": 19801,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2618:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2618:68:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19811,
                        "nodeType": "ExpressionStatement",
                        "src": "2618:68:74"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19813,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19780,
                              "src": "2710:9:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19814,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19782,
                              "src": "2721:7:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19812,
                            "name": "SOVTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19642,
                            "src": "2695:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 19815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2695:34:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19816,
                        "nodeType": "EmitStatement",
                        "src": "2690:39:74"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 19818,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19783,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19780,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 19818,
                        "src": "2461:17:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19779,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2461:7:74",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19782,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 19818,
                        "src": "2480:15:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19781,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2480:7:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2460:36:74"
                  },
                  "returnParameters": {
                    "id": 19784,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2506:0:74"
                  },
                  "scope": 19819,
                  "src": "2439:294:74",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 19820,
              "src": "523:2212:74"
            }
          ],
          "src": "0:2736:74"
        },
        "id": 74
      },
      "contracts/governance/Vesting/Vesting.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/Vesting.sol",
          "exportedSymbols": {
            "Vesting": [
              19863
            ]
          },
          "id": 19864,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 19821,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:75"
            },
            {
              "id": 19822,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:75"
            },
            {
              "absolutePath": "contracts/governance/Vesting/TeamVesting.sol",
              "file": "./TeamVesting.sol",
              "id": 19823,
              "nodeType": "ImportDirective",
              "scope": 19864,
              "sourceUnit": 19625,
              "src": "60:27:75",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 19824,
                    "name": "TeamVesting",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 19624,
                    "src": "344:11:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_TeamVesting_$19624",
                      "typeString": "contract TeamVesting"
                    }
                  },
                  "id": 19825,
                  "nodeType": "InheritanceSpecifier",
                  "src": "344:11:75"
                }
              ],
              "contractDependencies": [
                19624,
                24570,
                41125,
                41798,
                42623
              ],
              "contractKind": "contract",
              "documentation": "@title Vesting Contract.\n@notice Team tokens and investor tokens are vested. Therefore, a smart\ncontract needs to be developed to enforce the vesting schedule.\n * @dev TODO add tests for governanceWithdrawTokens.\n",
              "fullyImplemented": true,
              "id": 19863,
              "linearizedBaseContracts": [
                19863,
                19624,
                42623,
                24570,
                41798,
                41125
              ],
              "name": "Vesting",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 19851,
                    "nodeType": "Block",
                    "src": "935:2:75",
                    "statements": []
                  },
                  "documentation": "@notice Setup the vesting schedule.\n@param _logic The address of logic contract.\n@param _SOV The SOV token address.\n@param _tokenOwner The owner of the tokens.\n@param _cliff The time interval to the first withdraw in seconds.\n@param _duration The total duration in seconds.\n",
                  "id": 19852,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19842,
                          "name": "_logic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19827,
                          "src": "854:6:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19843,
                          "name": "_SOV",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19829,
                          "src": "862:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19844,
                          "name": "_stakingAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19831,
                          "src": "868:15:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19845,
                          "name": "_tokenOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19833,
                          "src": "885:11:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19846,
                          "name": "_cliff",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19835,
                          "src": "898:6:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19847,
                          "name": "_duration",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19837,
                          "src": "906:9:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19848,
                          "name": "_feeSharingProxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19839,
                          "src": "917:16:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 19849,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 19841,
                        "name": "TeamVesting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19624,
                        "src": "842:11:75",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_TeamVesting_$19624_$",
                          "typeString": "type(contract TeamVesting)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "842:92:75"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19840,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19827,
                        "name": "_logic",
                        "nodeType": "VariableDeclaration",
                        "scope": 19852,
                        "src": "684:14:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19826,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "684:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19829,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 19852,
                        "src": "702:12:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19828,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "702:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19831,
                        "name": "_stakingAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 19852,
                        "src": "718:23:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19830,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "718:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19833,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 19852,
                        "src": "745:19:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19832,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "745:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19835,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 19852,
                        "src": "768:14:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19834,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "768:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19837,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 19852,
                        "src": "786:17:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19836,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "786:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19839,
                        "name": "_feeSharingProxy",
                        "nodeType": "VariableDeclaration",
                        "scope": 19852,
                        "src": "807:24:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19838,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "807:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "680:154:75"
                  },
                  "returnParameters": {
                    "id": 19850,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "935:0:75"
                  },
                  "scope": 19863,
                  "src": "669:268:75",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19861,
                    "nodeType": "Block",
                    "src": "1173:41:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "6f7065726174696f6e206e6f7420737570706f72746564",
                              "id": 19858,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1184:25:75",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c3601c6c09bd4d5d0d6e5d73db037d4aaf9eedfdc5105e959ed128919e21e7ea",
                                "typeString": "literal_string \"operation not supported\""
                              },
                              "value": "operation not supported"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c3601c6c09bd4d5d0d6e5d73db037d4aaf9eedfdc5105e959ed128919e21e7ea",
                                "typeString": "literal_string \"operation not supported\""
                              }
                            ],
                            "id": 19857,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44999,
                              45000
                            ],
                            "referencedDeclaration": 45000,
                            "src": "1177:6:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 19859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1177:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19860,
                        "nodeType": "ExpressionStatement",
                        "src": "1177:33:75"
                      }
                    ]
                  },
                  "documentation": "@dev We need to add this implementation to prevent proxy call VestingLogic.governanceWithdrawTokens\n@param receiver The receiver of the token withdrawal.\n",
                  "id": 19862,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "governanceWithdrawTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19855,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19854,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 19862,
                        "src": "1148:16:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19853,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1148:7:75",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1147:18:75"
                  },
                  "returnParameters": {
                    "id": 19856,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1173:0:75"
                  },
                  "scope": 19863,
                  "src": "1114:100:75",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 19864,
              "src": "324:892:75"
            }
          ],
          "src": "0:1217:75"
        },
        "id": 75
      },
      "contracts/governance/Vesting/VestingCreator.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/VestingCreator.sol",
          "exportedSymbols": {
            "VestingCreator": [
              20625
            ]
          },
          "id": 20626,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 19865,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:76"
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 19866,
              "nodeType": "ImportDirective",
              "scope": 20626,
              "sourceUnit": 24700,
              "src": "26:37:76",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/AdminRole.sol",
              "file": "../../utils/AdminRole.sol",
              "id": 19867,
              "nodeType": "ImportDirective",
              "scope": 20626,
              "sourceUnit": 44980,
              "src": "64:35:76",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/VestingRegistryLogic.sol",
              "file": "./VestingRegistryLogic.sol",
              "id": 19868,
              "nodeType": "ImportDirective",
              "scope": 20626,
              "sourceUnit": 24483,
              "src": "100:36:76",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/VestingLogic.sol",
              "file": "./VestingLogic.sol",
              "id": 19869,
              "nodeType": "ImportDirective",
              "scope": 20626,
              "sourceUnit": 21208,
              "src": "137:28:76",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../../openzeppelin/SafeMath.sol",
              "id": 19870,
              "nodeType": "ImportDirective",
              "scope": 20626,
              "sourceUnit": 42310,
              "src": "166:41:76",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 19871,
                    "name": "AdminRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 44979,
                    "src": "236:9:76",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AdminRole_$44979",
                      "typeString": "contract AdminRole"
                    }
                  },
                  "id": 19872,
                  "nodeType": "InheritanceSpecifier",
                  "src": "236:9:76"
                }
              ],
              "contractDependencies": [
                41125,
                41798,
                44979
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 20625,
              "linearizedBaseContracts": [
                20625,
                44979,
                41798,
                41125
              ],
              "name": "VestingCreator",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 19875,
                  "libraryName": {
                    "contractScope": null,
                    "id": 19873,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "255:8:76",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "249:27:76",
                  "typeName": {
                    "id": 19874,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "268:7:76",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 19877,
                  "name": "vestingCreated",
                  "nodeType": "VariableDeclaration",
                  "scope": 20625,
                  "src": "368:19:76",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19876,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "368:4:76",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 19880,
                  "name": "TWO_WEEKS",
                  "nodeType": "VariableDeclaration",
                  "scope": 20625,
                  "src": "424:43:76",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19878,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "424:7:76",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31323039363030",
                    "id": 19879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "460:7:76",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1209600_by_1",
                      "typeString": "int_const 1209600"
                    },
                    "value": "1209600"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 19882,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 20625,
                  "src": "506:17:76",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$24699",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19881,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "506:6:76",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 19884,
                  "name": "vestingRegistryLogic",
                  "nodeType": "VariableDeclaration",
                  "scope": 20625,
                  "src": "569:48:76",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                    "typeString": "contract VestingRegistryLogic"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19883,
                    "name": "VestingRegistryLogic",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24482,
                    "src": "569:20:76",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                      "typeString": "contract VestingRegistryLogic"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "canonicalName": "VestingCreator.VestingData",
                  "id": 19897,
                  "members": [
                    {
                      "constant": false,
                      "id": 19886,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 19897,
                      "src": "675:14:76",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19885,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "675:7:76",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 19888,
                      "name": "cliff",
                      "nodeType": "VariableDeclaration",
                      "scope": 19897,
                      "src": "693:13:76",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19887,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "693:7:76",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 19890,
                      "name": "duration",
                      "nodeType": "VariableDeclaration",
                      "scope": 19897,
                      "src": "710:16:76",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19889,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "710:7:76",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 19892,
                      "name": "governanceControl",
                      "nodeType": "VariableDeclaration",
                      "scope": 19897,
                      "src": "730:22:76",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 19891,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "730:4:76",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 19894,
                      "name": "tokenOwner",
                      "nodeType": "VariableDeclaration",
                      "scope": 19897,
                      "src": "809:18:76",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 19893,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "809:7:76",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 19896,
                      "name": "vestingCreationType",
                      "nodeType": "VariableDeclaration",
                      "scope": 19897,
                      "src": "831:27:76",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19895,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "831:7:76",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "VestingData",
                  "nodeType": "StructDefinition",
                  "scope": 20625,
                  "src": "652:210:76",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 19900,
                  "name": "vestingDataList",
                  "nodeType": "VariableDeclaration",
                  "scope": 20625,
                  "src": "909:36:76",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                    "typeString": "struct VestingCreator.VestingData[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 19898,
                      "name": "VestingData",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 19897,
                      "src": "909:11:76",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                        "typeString": "struct VestingCreator.VestingData"
                      }
                    },
                    "id": 19899,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "909:13:76",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage_ptr",
                      "typeString": "struct VestingCreator.VestingData[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 19906,
                  "name": "SOVTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 19905,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19902,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 19906,
                        "src": "970:24:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19901,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "970:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19904,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 19906,
                        "src": "996:14:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19903,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "996:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "969:42:76"
                  },
                  "src": "949:63:76"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 19914,
                  "name": "TokensStaked",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 19913,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19908,
                        "indexed": true,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 19914,
                        "src": "1033:23:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19907,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1033:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19910,
                        "indexed": true,
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 19914,
                        "src": "1058:26:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19909,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1058:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19912,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 19914,
                        "src": "1086:14:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19911,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1086:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1032:69:76"
                  },
                  "src": "1014:88:76"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 19920,
                  "name": "VestingDataRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 19919,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19916,
                        "indexed": true,
                        "name": "caller",
                        "nodeType": "VariableDeclaration",
                        "scope": 19920,
                        "src": "1129:22:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19915,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1129:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19918,
                        "indexed": true,
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 19920,
                        "src": "1153:26:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19917,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1153:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1128:52:76"
                  },
                  "src": "1104:77:76"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 19924,
                  "name": "DataCleared",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 19923,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19922,
                        "indexed": true,
                        "name": "caller",
                        "nodeType": "VariableDeclaration",
                        "scope": 19924,
                        "src": "1201:22:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19921,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1201:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1200:24:76"
                  },
                  "src": "1183:42:76"
                },
                {
                  "body": {
                    "id": 19961,
                    "nodeType": "Block",
                    "src": "1292:235:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19932,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19926,
                                "src": "1304:4:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19934,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1320:1:76",
                                    "subdenomination": null,
                                    "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": 19933,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1312:7:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 19935,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1312:10:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1304:18:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "534f56206164647265737320696e76616c6964",
                              "id": 19937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1324:21:76",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              },
                              "value": "SOV address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              }
                            ],
                            "id": 19931,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1296:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1296:50:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19939,
                        "nodeType": "ExpressionStatement",
                        "src": "1296:50:76"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19945,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19941,
                                "name": "_vestingRegistryProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19928,
                                "src": "1358:21:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19943,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1391:1:76",
                                    "subdenomination": null,
                                    "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": 19942,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1383:7:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 19944,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1383:10:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1358:35:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "56657374696e67207265676973747279206164647265737320696e76616c6964",
                              "id": 19946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1395:34:76",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0d43526fe58beecd5f37e30db7f111fc3af0e5027f5cd2151d4ef8759d9a7e14",
                                "typeString": "literal_string \"Vesting registry address invalid\""
                              },
                              "value": "Vesting registry address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0d43526fe58beecd5f37e30db7f111fc3af0e5027f5cd2151d4ef8759d9a7e14",
                                "typeString": "literal_string \"Vesting registry address invalid\""
                              }
                            ],
                            "id": 19940,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1350:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1350:80:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19948,
                        "nodeType": "ExpressionStatement",
                        "src": "1350:80:76"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19949,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19882,
                            "src": "1435:3:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19951,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19926,
                                "src": "1448:4:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 19950,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24699,
                              "src": "1441:6:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 19952,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1441:12:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "1435:18:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 19954,
                        "nodeType": "ExpressionStatement",
                        "src": "1435:18:76"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19955,
                            "name": "vestingRegistryLogic",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19884,
                            "src": "1457:20:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                              "typeString": "contract VestingRegistryLogic"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19957,
                                "name": "_vestingRegistryProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19928,
                                "src": "1501:21:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 19956,
                              "name": "VestingRegistryLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24482,
                              "src": "1480:20:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_VestingRegistryLogic_$24482_$",
                                "typeString": "type(contract VestingRegistryLogic)"
                              }
                            },
                            "id": 19958,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1480:43:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                              "typeString": "contract VestingRegistryLogic"
                            }
                          },
                          "src": "1457:66:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                            "typeString": "contract VestingRegistryLogic"
                          }
                        },
                        "id": 19960,
                        "nodeType": "ExpressionStatement",
                        "src": "1457:66:76"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 19962,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19926,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 19962,
                        "src": "1240:12:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19925,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1240:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19928,
                        "name": "_vestingRegistryProxy",
                        "nodeType": "VariableDeclaration",
                        "scope": 19962,
                        "src": "1254:29:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19927,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1254:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1239:45:76"
                  },
                  "returnParameters": {
                    "id": 19930,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1292:0:76"
                  },
                  "scope": 20625,
                  "src": "1228:299:76",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19992,
                    "nodeType": "Block",
                    "src": "1767:154:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19972,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19966,
                                "src": "1779:7:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1790:1:76",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1779:12:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 19975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1793:16:76",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 19971,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1771:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1771:39:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19977,
                        "nodeType": "ExpressionStatement",
                        "src": "1771:39:76"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 19981,
                                  "name": "_receiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19964,
                                  "src": "1835:9:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 19982,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19966,
                                  "src": "1846:7:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19979,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19882,
                                  "src": "1822:3:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 19980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24671,
                                "src": "1822:12:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 19983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1822:32:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7472616e73666572206661696c6564",
                              "id": 19984,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1856:17:76",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_df1797085e2da014ef9392ee25ab0802d6ce132451397172f17fd86110e2e02b",
                                "typeString": "literal_string \"transfer failed\""
                              },
                              "value": "transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_df1797085e2da014ef9392ee25ab0802d6ce132451397172f17fd86110e2e02b",
                                "typeString": "literal_string \"transfer failed\""
                              }
                            ],
                            "id": 19978,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1814:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1814:60:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19986,
                        "nodeType": "ExpressionStatement",
                        "src": "1814:60:76"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19988,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19964,
                              "src": "1898:9:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19989,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19966,
                              "src": "1909:7:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19987,
                            "name": "SOVTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19906,
                            "src": "1883:14:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 19990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1883:34:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19991,
                        "nodeType": "EmitStatement",
                        "src": "1878:39:76"
                      }
                    ]
                  },
                  "documentation": "@notice transfers SOV tokens to given address\n@param _receiver the address of the SOV receiver\n@param _amount the amount to be transferred",
                  "id": 19993,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 19969,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 19968,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1757:9:76",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1757:9:76"
                    }
                  ],
                  "name": "transferSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19967,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19964,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 19993,
                        "src": "1712:17:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19963,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1712:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19966,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 19993,
                        "src": "1731:15:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19965,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1731:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1711:36:76"
                  },
                  "returnParameters": {
                    "id": 19970,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1767:0:76"
                  },
                  "scope": 20625,
                  "src": "1691:230:76",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20140,
                    "nodeType": "Block",
                    "src": "2248:1022:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 20039,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 20033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 20027,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 20021,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20017,
                                        "name": "_tokenOwners",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19996,
                                        "src": "2264:12:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 20018,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2264:19:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20019,
                                        "name": "_amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19999,
                                        "src": "2287:8:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 20020,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2287:15:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2264:38:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 20026,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20022,
                                        "name": "_tokenOwners",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19996,
                                        "src": "2310:12:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 20023,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2310:19:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20024,
                                        "name": "_cliffs",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20002,
                                        "src": "2333:7:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 20025,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2333:14:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2310:37:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "2264:83:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20032,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20028,
                                      "name": "_tokenOwners",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19996,
                                      "src": "2355:12:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 20029,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "2355:19:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20030,
                                      "name": "_durations",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20005,
                                      "src": "2378:10:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 20031,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "2378:17:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2355:40:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "2264:131:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20034,
                                    "name": "_tokenOwners",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19996,
                                    "src": "2403:12:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 20035,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2403:19:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20036,
                                    "name": "_governanceControls",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20008,
                                    "src": "2426:19:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                                      "typeString": "bool[] calldata"
                                    }
                                  },
                                  "id": 20037,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2426:26:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2403:49:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2264:188:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "617272617973206d69736d61746368",
                              "id": 20040,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2457:17:76",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_115fa4d55b2382f0df2d2ef875c628f9f025f1b3caada2d0c0c9f0a6e0c68f6a",
                                "typeString": "literal_string \"arrays mismatch\""
                              },
                              "value": "arrays mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_115fa4d55b2382f0df2d2ef875c628f9f025f1b3caada2d0c0c9f0a6e0c68f6a",
                                "typeString": "literal_string \"arrays mismatch\""
                              }
                            ],
                            "id": 20016,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2252:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2252:226:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20042,
                        "nodeType": "ExpressionStatement",
                        "src": "2252:226:76"
                      },
                      {
                        "body": {
                          "id": 20138,
                          "nodeType": "Block",
                          "src": "2533:734:76",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 20061,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 20055,
                                        "name": "_durations",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20005,
                                        "src": "2546:10:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 20057,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 20056,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20044,
                                        "src": "2557:1:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2546:13:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 20058,
                                        "name": "_cliffs",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20002,
                                        "src": "2563:7:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 20060,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 20059,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20044,
                                        "src": "2571:1:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2563:10:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2546:27:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6475726174696f6e206d75737420626520626967676572207468616e206f7220657175616c20746f2074686520636c696666",
                                    "id": 20062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2575:52:76",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_530dc3d088eea5dad36b57182986bc27baee0f6dc1350ecf83a72bbcd1bc57d5",
                                      "typeString": "literal_string \"duration must be bigger than or equal to the cliff\""
                                    },
                                    "value": "duration must be bigger than or equal to the cliff"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_530dc3d088eea5dad36b57182986bc27baee0f6dc1350ecf83a72bbcd1bc57d5",
                                      "typeString": "literal_string \"duration must be bigger than or equal to the cliff\""
                                    }
                                  ],
                                  "id": 20054,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "2538:7:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 20063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2538:90:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20064,
                              "nodeType": "ExpressionStatement",
                              "src": "2538:90:76"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 20070,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 20066,
                                        "name": "_amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19999,
                                        "src": "2641:8:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 20068,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 20067,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20044,
                                        "src": "2650:1:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2641:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 20069,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2655:1:76",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "2641:15:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "76657374696e6720616d6f756e742063616e6e6f742062652030",
                                    "id": 20071,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2658:28:76",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_d6d7ce6da6350667411c185359dc162c185f5f95e7ad4b75b5155884c9aa3570",
                                      "typeString": "literal_string \"vesting amount cannot be 0\""
                                    },
                                    "value": "vesting amount cannot be 0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_d6d7ce6da6350667411c185359dc162c185f5f95e7ad4b75b5155884c9aa3570",
                                      "typeString": "literal_string \"vesting amount cannot be 0\""
                                    }
                                  ],
                                  "id": 20065,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "2633:7:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 20072,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2633:54:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20073,
                              "nodeType": "ExpressionStatement",
                              "src": "2633:54:76"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 20081,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 20075,
                                        "name": "_tokenOwners",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19996,
                                        "src": "2700:12:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 20077,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 20076,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20044,
                                        "src": "2713:1:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2700:15:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 20079,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2727:1:76",
                                          "subdenomination": null,
                                          "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": 20078,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2719:7:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 20080,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2719:10:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "2700:29:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "746f6b656e206f776e65722063616e6e6f7420626520302061646472657373",
                                    "id": 20082,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2731:33:76",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_21d15a3b83c9e395754455202f4ea7588ba98c65c78c460944a1e44c738f0e93",
                                      "typeString": "literal_string \"token owner cannot be 0 address\""
                                    },
                                    "value": "token owner cannot be 0 address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_21d15a3b83c9e395754455202f4ea7588ba98c65c78c460944a1e44c738f0e93",
                                      "typeString": "literal_string \"token owner cannot be 0 address\""
                                    }
                                  ],
                                  "id": 20074,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "2692:7:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 20083,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2692:73:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20084,
                              "nodeType": "ExpressionStatement",
                              "src": "2692:73:76"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 20093,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 20090,
                                          "name": "TWO_WEEKS",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19880,
                                          "src": "2793:9:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 20086,
                                            "name": "_cliffs",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20002,
                                            "src": "2778:7:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                              "typeString": "uint256[] calldata"
                                            }
                                          },
                                          "id": 20088,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 20087,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20044,
                                            "src": "2786:1:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "2778:10:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 20089,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42268,
                                        "src": "2778:14:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 20091,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2778:25:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 20092,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2807:1:76",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "2778:30:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "636c696666732073686f756c64206861766520696e74657276616c73206f662074776f207765656b73",
                                    "id": 20094,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2810:43:76",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_95238d659a0925cf2ef2d7203d2cea22975b8608692d54e62b63bcaf27a62d9d",
                                      "typeString": "literal_string \"cliffs should have intervals of two weeks\""
                                    },
                                    "value": "cliffs should have intervals of two weeks"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_95238d659a0925cf2ef2d7203d2cea22975b8608692d54e62b63bcaf27a62d9d",
                                      "typeString": "literal_string \"cliffs should have intervals of two weeks\""
                                    }
                                  ],
                                  "id": 20085,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "2770:7:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 20095,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2770:84:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20096,
                              "nodeType": "ExpressionStatement",
                              "src": "2770:84:76"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 20105,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 20102,
                                          "name": "TWO_WEEKS",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19880,
                                          "src": "2885:9:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 20098,
                                            "name": "_durations",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20005,
                                            "src": "2867:10:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                              "typeString": "uint256[] calldata"
                                            }
                                          },
                                          "id": 20100,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 20099,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20044,
                                            "src": "2878:1:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "2867:13:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 20101,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42268,
                                        "src": "2867:17:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 20103,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2867:28:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 20104,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2899:1:76",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "2867:33:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6475726174696f6e732073686f756c64206861766520696e74657276616c73206f662074776f207765656b73",
                                    "id": 20106,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2902:46:76",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8024ab1b82304412638ad63708c30de686d4ad023681c9868c20a635feff5b24",
                                      "typeString": "literal_string \"durations should have intervals of two weeks\""
                                    },
                                    "value": "durations should have intervals of two weeks"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8024ab1b82304412638ad63708c30de686d4ad023681c9868c20a635feff5b24",
                                      "typeString": "literal_string \"durations should have intervals of two weeks\""
                                    }
                                  ],
                                  "id": 20097,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "2859:7:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 20107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2859:90:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20108,
                              "nodeType": "ExpressionStatement",
                              "src": "2859:90:76"
                            },
                            {
                              "assignments": [
                                20110
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 20110,
                                  "name": "vestingData",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 20138,
                                  "src": "2954:30:76",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                    "typeString": "struct VestingCreator.VestingData"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 20109,
                                    "name": "VestingData",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 19897,
                                    "src": "2954:11:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                      "typeString": "struct VestingCreator.VestingData"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 20131,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 20112,
                                      "name": "_amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19999,
                                      "src": "3018:8:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 20114,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 20113,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20044,
                                      "src": "3027:1:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3018:11:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 20115,
                                      "name": "_cliffs",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20002,
                                      "src": "3043:7:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 20117,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 20116,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20044,
                                      "src": "3051:1:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3043:10:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 20118,
                                      "name": "_durations",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20005,
                                      "src": "3070:10:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 20120,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 20119,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20044,
                                      "src": "3081:1:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3070:13:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 20121,
                                      "name": "_governanceControls",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20008,
                                      "src": "3109:19:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                                        "typeString": "bool[] calldata"
                                      }
                                    },
                                    "id": 20123,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 20122,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20044,
                                      "src": "3129:1:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3109:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 20124,
                                      "name": "_tokenOwners",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19996,
                                      "src": "3150:12:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 20126,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 20125,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20044,
                                      "src": "3163:1:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3150:15:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 20127,
                                      "name": "_vestingCreationTypes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20011,
                                      "src": "3193:21:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 20129,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 20128,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20044,
                                      "src": "3215:1:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3193:24:76",
                                    "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_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 20111,
                                  "name": "VestingData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19897,
                                  "src": "2991:11:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_VestingData_$19897_storage_ptr_$",
                                    "typeString": "type(struct VestingCreator.VestingData storage pointer)"
                                  }
                                },
                                "id": 20130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "structConstructorCall",
                                "lValueRequested": false,
                                "names": [
                                  "amount",
                                  "cliff",
                                  "duration",
                                  "governanceControl",
                                  "tokenOwner",
                                  "vestingCreationType"
                                ],
                                "nodeType": "FunctionCall",
                                "src": "2991:233:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_memory",
                                  "typeString": "struct VestingCreator.VestingData memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2954:270:76"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 20135,
                                    "name": "vestingData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20110,
                                    "src": "3250:11:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                      "typeString": "struct VestingCreator.VestingData memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                      "typeString": "struct VestingCreator.VestingData memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20132,
                                    "name": "vestingDataList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19900,
                                    "src": "3229:15:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                      "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                    }
                                  },
                                  "id": 20134,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3229:20:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_VestingData_$19897_storage_$returns$_t_uint256_$",
                                    "typeString": "function (struct VestingCreator.VestingData storage ref) returns (uint256)"
                                  }
                                },
                                "id": 20136,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3229:33:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20137,
                              "nodeType": "ExpressionStatement",
                              "src": "3229:33:76"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20047,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20044,
                            "src": "2503:1:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20048,
                              "name": "_tokenOwners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19996,
                              "src": "2507:12:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 20049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2507:19:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2503:23:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20139,
                        "initializationExpression": {
                          "assignments": [
                            20044
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 20044,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 20139,
                              "src": "2488:9:76",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 20043,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2488:7:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 20046,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 20045,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2500:1:76",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2488:13:76"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 20052,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2528:3:76",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 20051,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20044,
                              "src": "2528:1:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20053,
                          "nodeType": "ExpressionStatement",
                          "src": "2528:3:76"
                        },
                        "nodeType": "ForStatement",
                        "src": "2483:784:76"
                      }
                    ]
                  },
                  "documentation": "@notice adds vestings to be processed to the list",
                  "id": 20141,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 20014,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 20013,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "2233:14:76",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2233:14:76"
                    }
                  ],
                  "name": "addVestings",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20012,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19996,
                        "name": "_tokenOwners",
                        "nodeType": "VariableDeclaration",
                        "scope": 20141,
                        "src": "2012:31:76",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19994,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2012:7:76",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 19995,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2012:9:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19999,
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 20141,
                        "src": "2047:27:76",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19997,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2047:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19998,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2047:9:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20002,
                        "name": "_cliffs",
                        "nodeType": "VariableDeclaration",
                        "scope": 20141,
                        "src": "2078:26:76",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20000,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2078:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20001,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2078:9:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20005,
                        "name": "_durations",
                        "nodeType": "VariableDeclaration",
                        "scope": 20141,
                        "src": "2108:29:76",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20003,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2108:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20004,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2108:9:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20008,
                        "name": "_governanceControls",
                        "nodeType": "VariableDeclaration",
                        "scope": 20141,
                        "src": "2141:35:76",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20006,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "2141:4:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 20007,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2141:6:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20011,
                        "name": "_vestingCreationTypes",
                        "nodeType": "VariableDeclaration",
                        "scope": 20141,
                        "src": "2180:40:76",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20009,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2180:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20010,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2180:9:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2008:215:76"
                  },
                  "returnParameters": {
                    "id": 20015,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2248:0:76"
                  },
                  "scope": 20625,
                  "src": "1988:1282:76",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20150,
                    "nodeType": "Block",
                    "src": "3451:52:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 20144,
                            "name": "processVestingCreation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20184,
                            "src": "3455:22:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 20145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3455:24:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20146,
                        "nodeType": "ExpressionStatement",
                        "src": "3455:24:76"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 20147,
                            "name": "processStaking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20291,
                            "src": "3483:14:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 20148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3483:16:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20149,
                        "nodeType": "ExpressionStatement",
                        "src": "3483:16:76"
                      }
                    ]
                  },
                  "documentation": "@notice Creates vesting contract and stakes tokens\n@dev Vesting and Staking are merged for calls that fits the gas limit",
                  "id": 20151,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "processNextVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20142,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3439:2:76"
                  },
                  "returnParameters": {
                    "id": 20143,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3451:0:76"
                  },
                  "scope": 20625,
                  "src": "3412:91:76",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20183,
                    "nodeType": "Block",
                    "src": "3691:263:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "3703:15:76",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 20155,
                                "name": "vestingCreated",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19877,
                                "src": "3704:14:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7374616b696e67206e6f7420646f6e6520666f72207468652070726576696f75732076657374696e67",
                              "id": 20157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3720:43:76",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e802ea43a6ec37b4691ba39fcb65be1de27634f666819f49987c24c089f6597c",
                                "typeString": "literal_string \"staking not done for the previous vesting\""
                              },
                              "value": "staking not done for the previous vesting"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e802ea43a6ec37b4691ba39fcb65be1de27634f666819f49987c24c089f6597c",
                                "typeString": "literal_string \"staking not done for the previous vesting\""
                              }
                            ],
                            "id": 20154,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3695:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3695:69:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20159,
                        "nodeType": "ExpressionStatement",
                        "src": "3695:69:76"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20160,
                              "name": "vestingDataList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19900,
                              "src": "3772:15:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                              }
                            },
                            "id": 20161,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3772:22:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 20162,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3797:1:76",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3772:26:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 20182,
                        "nodeType": "IfStatement",
                        "src": "3768:183:76",
                        "trueBody": {
                          "id": 20181,
                          "nodeType": "Block",
                          "src": "3800:151:76",
                          "statements": [
                            {
                              "assignments": [
                                20165
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 20165,
                                  "name": "vestingData",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 20181,
                                  "src": "3805:31:76",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                    "typeString": "struct VestingCreator.VestingData"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 20164,
                                    "name": "VestingData",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 19897,
                                    "src": "3805:11:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                      "typeString": "struct VestingCreator.VestingData"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 20172,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 20166,
                                  "name": "vestingDataList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19900,
                                  "src": "3839:15:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                    "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                  }
                                },
                                "id": 20171,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20170,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20167,
                                      "name": "vestingDataList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19900,
                                      "src": "3855:15:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                        "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                      }
                                    },
                                    "id": 20168,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3855:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 20169,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3880:1:76",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "3855:26:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3839:43:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_storage",
                                  "typeString": "struct VestingCreator.VestingData storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3805:77:76"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 20174,
                                    "name": "vestingData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20165,
                                    "src": "3908:11:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                      "typeString": "struct VestingCreator.VestingData storage pointer"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                      "typeString": "struct VestingCreator.VestingData storage pointer"
                                    }
                                  ],
                                  "id": 20173,
                                  "name": "_createAndGetVesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20584,
                                  "src": "3887:20:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_VestingData_$19897_memory_ptr_$returns$_t_address_$",
                                    "typeString": "function (struct VestingCreator.VestingData memory) returns (address)"
                                  }
                                },
                                "id": 20175,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3887:33:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 20176,
                              "nodeType": "ExpressionStatement",
                              "src": "3887:33:76"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 20179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 20177,
                                  "name": "vestingCreated",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19877,
                                  "src": "3925:14:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 20178,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3942:4:76",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "3925:21:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 20180,
                              "nodeType": "ExpressionStatement",
                              "src": "3925:21:76"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Creates vesting contract without staking any tokens\n@dev Separating the Vesting and Staking to tackle Block Gas Limit",
                  "id": 20184,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "processVestingCreation",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20152,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3681:2:76"
                  },
                  "returnParameters": {
                    "id": 20153,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3691:0:76"
                  },
                  "scope": 20625,
                  "src": "3650:304:76",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20290,
                    "nodeType": "Block",
                    "src": "4163:938:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20188,
                              "name": "vestingCreated",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19877,
                              "src": "4175:14:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "63616e6e6f74207374616b6520776974686f75742076657374696e67206372656174696f6e",
                              "id": 20189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4191:39:76",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dedbecf8b1979faccb272815bd79cbecf60c4f73413d42f8c5f2fbbc12399d54",
                                "typeString": "literal_string \"cannot stake without vesting creation\""
                              },
                              "value": "cannot stake without vesting creation"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dedbecf8b1979faccb272815bd79cbecf60c4f73413d42f8c5f2fbbc12399d54",
                                "typeString": "literal_string \"cannot stake without vesting creation\""
                              }
                            ],
                            "id": 20187,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4167:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4167:64:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20191,
                        "nodeType": "ExpressionStatement",
                        "src": "4167:64:76"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20192,
                              "name": "vestingDataList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19900,
                              "src": "4239:15:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                              }
                            },
                            "id": 20193,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4239:22:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 20194,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4264:1:76",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4239:26:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 20285,
                        "nodeType": "IfStatement",
                        "src": "4235:837:76",
                        "trueBody": {
                          "id": 20284,
                          "nodeType": "Block",
                          "src": "4267:805:76",
                          "statements": [
                            {
                              "assignments": [
                                20197
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 20197,
                                  "name": "vestingData",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 20284,
                                  "src": "4272:31:76",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                    "typeString": "struct VestingCreator.VestingData"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 20196,
                                    "name": "VestingData",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 19897,
                                    "src": "4272:11:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                      "typeString": "struct VestingCreator.VestingData"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 20204,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 20198,
                                  "name": "vestingDataList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19900,
                                  "src": "4306:15:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                    "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                  }
                                },
                                "id": 20203,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20202,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20199,
                                      "name": "vestingDataList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19900,
                                      "src": "4322:15:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                        "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                      }
                                    },
                                    "id": 20200,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "4322:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 20201,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4347:1:76",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "4322:26:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4306:43:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_storage",
                                  "typeString": "struct VestingCreator.VestingData storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4272:77:76"
                            },
                            {
                              "assignments": [
                                20206
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 20206,
                                  "name": "vestingAddress",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 20284,
                                  "src": "4354:22:76",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 20205,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4354:7:76",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 20219,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20208,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20197,
                                      "src": "4401:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                        "typeString": "struct VestingCreator.VestingData storage pointer"
                                      }
                                    },
                                    "id": 20209,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tokenOwner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19894,
                                    "src": "4401:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20210,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20197,
                                      "src": "4430:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                        "typeString": "struct VestingCreator.VestingData storage pointer"
                                      }
                                    },
                                    "id": 20211,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cliff",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19888,
                                    "src": "4430:17:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20212,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20197,
                                      "src": "4454:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                        "typeString": "struct VestingCreator.VestingData storage pointer"
                                      }
                                    },
                                    "id": 20213,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "duration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19890,
                                    "src": "4454:20:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20214,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20197,
                                      "src": "4481:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                        "typeString": "struct VestingCreator.VestingData storage pointer"
                                      }
                                    },
                                    "id": 20215,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "governanceControl",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19892,
                                    "src": "4481:29:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20216,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20197,
                                      "src": "4517:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                        "typeString": "struct VestingCreator.VestingData storage pointer"
                                      }
                                    },
                                    "id": 20217,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "vestingCreationType",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19896,
                                    "src": "4517:31:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 20207,
                                  "name": "_getVesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20624,
                                  "src": "4383:11:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_address_$",
                                    "typeString": "function (address,uint256,uint256,bool,uint256) view returns (address)"
                                  }
                                },
                                "id": 20218,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4383:171:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4354:200:76"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 20224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 20220,
                                  "name": "vestingAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20206,
                                  "src": "4563:14:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 20222,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4589:1:76",
                                      "subdenomination": null,
                                      "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": 20221,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4581:7:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 20223,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4581:10:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "4563:28:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 20283,
                              "nodeType": "IfStatement",
                              "src": "4559:509:76",
                              "trueBody": {
                                "id": 20282,
                                "nodeType": "Block",
                                "src": "4593:475:76",
                                "statements": [
                                  {
                                    "assignments": [
                                      20226
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 20226,
                                        "name": "vesting",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 20282,
                                        "src": "4599:20:76",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                          "typeString": "contract VestingLogic"
                                        },
                                        "typeName": {
                                          "contractScope": null,
                                          "id": 20225,
                                          "name": "VestingLogic",
                                          "nodeType": "UserDefinedTypeName",
                                          "referencedDeclaration": 21207,
                                          "src": "4599:12:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                            "typeString": "contract VestingLogic"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 20230,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 20228,
                                          "name": "vestingAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20206,
                                          "src": "4635:14:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 20227,
                                        "name": "VestingLogic",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21207,
                                        "src": "4622:12:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_VestingLogic_$21207_$",
                                          "typeString": "type(contract VestingLogic)"
                                        }
                                      },
                                      "id": 20229,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4622:28:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                        "typeString": "contract VestingLogic"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4599:51:76"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 20235,
                                                  "name": "vesting",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 20226,
                                                  "src": "4684:7:76",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                                    "typeString": "contract VestingLogic"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                                    "typeString": "contract VestingLogic"
                                                  }
                                                ],
                                                "id": 20234,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "4676:7:76",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_address_$",
                                                  "typeString": "type(address)"
                                                },
                                                "typeName": "address"
                                              },
                                              "id": 20236,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "4676:16:76",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 20237,
                                                "name": "vestingData",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 20197,
                                                "src": "4694:11:76",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                                  "typeString": "struct VestingCreator.VestingData storage pointer"
                                                }
                                              },
                                              "id": 20238,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "amount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 19886,
                                              "src": "4694:18:76",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 20232,
                                              "name": "SOV",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19882,
                                              "src": "4664:3:76",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                                "typeString": "contract IERC20"
                                              }
                                            },
                                            "id": 20233,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "approve",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 24662,
                                            "src": "4664:11:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                              "typeString": "function (address,uint256) external returns (bool)"
                                            }
                                          },
                                          "id": 20239,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4664:49:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "417070726f7665206661696c6564",
                                          "id": 20240,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4715:16:76",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c",
                                            "typeString": "literal_string \"Approve failed\""
                                          },
                                          "value": "Approve failed"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c",
                                            "typeString": "literal_string \"Approve failed\""
                                          }
                                        ],
                                        "id": 20231,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44997,
                                          44998
                                        ],
                                        "referencedDeclaration": 44998,
                                        "src": "4656:7:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 20241,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4656:76:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 20242,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4656:76:76"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 20246,
                                            "name": "vestingData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20197,
                                            "src": "4758:11:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                              "typeString": "struct VestingCreator.VestingData storage pointer"
                                            }
                                          },
                                          "id": 20247,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 19886,
                                          "src": "4758:18:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 20243,
                                          "name": "vesting",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20226,
                                          "src": "4738:7:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                            "typeString": "contract VestingLogic"
                                          }
                                        },
                                        "id": 20245,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "stakeTokens",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20838,
                                        "src": "4738:19:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                          "typeString": "function (uint256) external"
                                        }
                                      },
                                      "id": 20248,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4738:39:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 20249,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4738:39:76"
                                  },
                                  {
                                    "eventCall": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 20251,
                                          "name": "vestingAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20206,
                                          "src": "4801:14:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 20252,
                                            "name": "vestingData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20197,
                                            "src": "4817:11:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                              "typeString": "struct VestingCreator.VestingData storage pointer"
                                            }
                                          },
                                          "id": 20253,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "tokenOwner",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 19894,
                                          "src": "4817:22:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 20254,
                                            "name": "vestingData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20197,
                                            "src": "4841:11:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                              "typeString": "struct VestingCreator.VestingData storage pointer"
                                            }
                                          },
                                          "id": 20255,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 19886,
                                          "src": "4841:18:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 20250,
                                        "name": "TokensStaked",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19914,
                                        "src": "4788:12:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256)"
                                        }
                                      },
                                      "id": 20256,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4788:72:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 20257,
                                    "nodeType": "EmitStatement",
                                    "src": "4783:77:76"
                                  },
                                  {
                                    "assignments": [
                                      20259
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 20259,
                                        "name": "tokenOwnerDetails",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 20282,
                                        "src": "4866:25:76",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "typeName": {
                                          "id": 20258,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "4866:7:76",
                                          "stateMutability": "nonpayable",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 20262,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20260,
                                        "name": "vestingData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20197,
                                        "src": "4894:11:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                          "typeString": "struct VestingCreator.VestingData storage pointer"
                                        }
                                      },
                                      "id": 20261,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "tokenOwner",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 19894,
                                      "src": "4894:22:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4866:50:76"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20269,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "delete",
                                      "prefix": true,
                                      "src": "4922:50:76",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 20263,
                                          "name": "vestingDataList",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19900,
                                          "src": "4929:15:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                            "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                          }
                                        },
                                        "id": 20268,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 20267,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 20264,
                                              "name": "vestingDataList",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19900,
                                              "src": "4945:15:76",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                                "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                              }
                                            },
                                            "id": 20265,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "4945:22:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 20266,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4970:1:76",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "4945:26:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4929:43:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_VestingData_$19897_storage",
                                          "typeString": "struct VestingCreator.VestingData storage ref"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 20270,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4922:50:76"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20274,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "--",
                                      "prefix": false,
                                      "src": "4978:24:76",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 20271,
                                          "name": "vestingDataList",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19900,
                                          "src": "4978:15:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                            "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                          }
                                        },
                                        "id": 20273,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "4978:22:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 20275,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4978:24:76"
                                  },
                                  {
                                    "eventCall": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 20277,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44994,
                                            "src": "5032:3:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 20278,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "5032:10:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 20279,
                                          "name": "tokenOwnerDetails",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20259,
                                          "src": "5044:17:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 20276,
                                        "name": "VestingDataRemoved",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19920,
                                        "src": "5013:18:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                          "typeString": "function (address,address)"
                                        }
                                      },
                                      "id": 20280,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5013:49:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 20281,
                                    "nodeType": "EmitStatement",
                                    "src": "5008:54:76"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 20286,
                            "name": "vestingCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19877,
                            "src": "5075:14:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 20287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5092:5:76",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "5075:22:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20289,
                        "nodeType": "ExpressionStatement",
                        "src": "5075:22:76"
                      }
                    ]
                  },
                  "documentation": "@notice Staking vested tokens\n@dev it can be the case when vesting creation and tokens staking can't be done in one transaction because of block gas limit",
                  "id": 20291,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "processStaking",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20185,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4153:2:76"
                  },
                  "returnParameters": {
                    "id": 20186,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4163:0:76"
                  },
                  "scope": 20625,
                  "src": "4130:971:76",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20338,
                    "nodeType": "Block",
                    "src": "5337:345:76",
                    "statements": [
                      {
                        "assignments": [
                          20297
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20297,
                            "name": "tokenOwnerDetails",
                            "nodeType": "VariableDeclaration",
                            "scope": 20338,
                            "src": "5341:25:76",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 20296,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5341:7:76",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20298,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5341:25:76"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20299,
                              "name": "vestingDataList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19900,
                              "src": "5374:15:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                              }
                            },
                            "id": 20300,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5374:22:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 20301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5399:1:76",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5374:26:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 20337,
                        "nodeType": "IfStatement",
                        "src": "5370:309:76",
                        "trueBody": {
                          "id": 20336,
                          "nodeType": "Block",
                          "src": "5402:277:76",
                          "statements": [
                            {
                              "assignments": [
                                20304
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 20304,
                                  "name": "vestingData",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 20336,
                                  "src": "5407:31:76",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                    "typeString": "struct VestingCreator.VestingData"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 20303,
                                    "name": "VestingData",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 19897,
                                    "src": "5407:11:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                      "typeString": "struct VestingCreator.VestingData"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 20311,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 20305,
                                  "name": "vestingDataList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19900,
                                  "src": "5441:15:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                    "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                  }
                                },
                                "id": 20310,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20309,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20306,
                                      "name": "vestingDataList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19900,
                                      "src": "5457:15:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                        "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                      }
                                    },
                                    "id": 20307,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5457:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 20308,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5482:1:76",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "5457:26:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5441:43:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_storage",
                                  "typeString": "struct VestingCreator.VestingData storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5407:77:76"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 20315,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 20312,
                                  "name": "tokenOwnerDetails",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20297,
                                  "src": "5489:17:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20313,
                                    "name": "vestingData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20304,
                                    "src": "5509:11:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                                      "typeString": "struct VestingCreator.VestingData storage pointer"
                                    }
                                  },
                                  "id": 20314,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "tokenOwner",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 19894,
                                  "src": "5509:22:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5489:42:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 20316,
                              "nodeType": "ExpressionStatement",
                              "src": "5489:42:76"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 20323,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "5536:50:76",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 20317,
                                    "name": "vestingDataList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19900,
                                    "src": "5543:15:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                      "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                    }
                                  },
                                  "id": 20322,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 20321,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20318,
                                        "name": "vestingDataList",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19900,
                                        "src": "5559:15:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                          "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                        }
                                      },
                                      "id": 20319,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "5559:22:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 20320,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5584:1:76",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "5559:26:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5543:43:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_VestingData_$19897_storage",
                                    "typeString": "struct VestingCreator.VestingData storage ref"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20324,
                              "nodeType": "ExpressionStatement",
                              "src": "5536:50:76"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 20328,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "5591:24:76",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20325,
                                    "name": "vestingDataList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19900,
                                    "src": "5591:15:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                      "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                    }
                                  },
                                  "id": 20327,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5591:22:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20329,
                              "nodeType": "ExpressionStatement",
                              "src": "5591:24:76"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20331,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "5644:3:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 20332,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5644:10:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 20333,
                                    "name": "tokenOwnerDetails",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20297,
                                    "src": "5656:17:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 20330,
                                  "name": "VestingDataRemoved",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19920,
                                  "src": "5625:18:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 20334,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5625:49:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20335,
                              "nodeType": "EmitStatement",
                              "src": "5620:54:76"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice removes next vesting data from the list\n@dev we process inverted list\n@dev we should be able to remove incorrect vesting data that can't be processed",
                  "id": 20339,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 20294,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 20293,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "5322:14:76",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5322:14:76"
                    }
                  ],
                  "name": "removeNextVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20292,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5310:2:76"
                  },
                  "returnParameters": {
                    "id": 20295,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5337:0:76"
                  },
                  "scope": 20625,
                  "src": "5284:398:76",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20352,
                    "nodeType": "Block",
                    "src": "5821:62:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "5825:22:76",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 20344,
                            "name": "vestingDataList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19900,
                            "src": "5832:15:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                              "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20346,
                        "nodeType": "ExpressionStatement",
                        "src": "5825:22:76"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20348,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "5868:3:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 20349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5868:10:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 20347,
                            "name": "DataCleared",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19924,
                            "src": "5856:11:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 20350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5856:23:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20351,
                        "nodeType": "EmitStatement",
                        "src": "5851:28:76"
                      }
                    ]
                  },
                  "documentation": "@notice removes all data about unprocessed vestings to be processed",
                  "id": 20353,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 20342,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 20341,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "5806:14:76",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5806:14:76"
                    }
                  ],
                  "name": "clearVestingDataList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20340,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5796:2:76"
                  },
                  "returnParameters": {
                    "id": 20343,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5821:0:76"
                  },
                  "scope": 20625,
                  "src": "5767:116:76",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20396,
                    "nodeType": "Block",
                    "src": "6008:343:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 20359,
                                  "name": "vestingDataList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19900,
                                  "src": "6039:15:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                    "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                  }
                                },
                                "id": 20364,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20363,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20360,
                                      "name": "vestingDataList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19900,
                                      "src": "6055:15:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                        "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                      }
                                    },
                                    "id": 20361,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6055:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 20362,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6080:1:76",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6055:26:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6039:43:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_storage",
                                  "typeString": "struct VestingCreator.VestingData storage ref"
                                }
                              },
                              "id": 20365,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tokenOwner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19894,
                              "src": "6039:54:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 20366,
                                  "name": "vestingDataList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19900,
                                  "src": "6099:15:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                    "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                  }
                                },
                                "id": 20371,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20370,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20367,
                                      "name": "vestingDataList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19900,
                                      "src": "6115:15:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                        "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                      }
                                    },
                                    "id": 20368,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6115:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 20369,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6140:1:76",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6115:26:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6099:43:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_storage",
                                  "typeString": "struct VestingCreator.VestingData storage ref"
                                }
                              },
                              "id": 20372,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cliff",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19888,
                              "src": "6099:49:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 20373,
                                  "name": "vestingDataList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19900,
                                  "src": "6154:15:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                    "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                  }
                                },
                                "id": 20378,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20377,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20374,
                                      "name": "vestingDataList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19900,
                                      "src": "6170:15:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                        "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                      }
                                    },
                                    "id": 20375,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6170:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 20376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6195:1:76",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6170:26:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6154:43:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_storage",
                                  "typeString": "struct VestingCreator.VestingData storage ref"
                                }
                              },
                              "id": 20379,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "duration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19890,
                              "src": "6154:52:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 20380,
                                  "name": "vestingDataList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19900,
                                  "src": "6212:15:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                    "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                  }
                                },
                                "id": 20385,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20381,
                                      "name": "vestingDataList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19900,
                                      "src": "6228:15:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                        "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                      }
                                    },
                                    "id": 20382,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6228:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 20383,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6253:1:76",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6228:26:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6212:43:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_storage",
                                  "typeString": "struct VestingCreator.VestingData storage ref"
                                }
                              },
                              "id": 20386,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "governanceControl",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19892,
                              "src": "6212:61:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 20387,
                                  "name": "vestingDataList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19900,
                                  "src": "6279:15:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                    "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                  }
                                },
                                "id": 20392,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20391,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20388,
                                      "name": "vestingDataList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19900,
                                      "src": "6295:15:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                        "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                      }
                                    },
                                    "id": 20389,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6295:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 20390,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6320:1:76",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6295:26:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6279:43:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_storage",
                                  "typeString": "struct VestingCreator.VestingData storage ref"
                                }
                              },
                              "id": 20393,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vestingCreationType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19896,
                              "src": "6279:63:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20358,
                            "name": "_getVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20624,
                            "src": "6022:11:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (address,uint256,uint256,bool,uint256) view returns (address)"
                            }
                          },
                          "id": 20394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6022:325:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 20357,
                        "id": 20395,
                        "nodeType": "Return",
                        "src": "6012:335:76"
                      }
                    ]
                  },
                  "documentation": "@notice returns address after vesting creation",
                  "id": 20397,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getVestingAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20354,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5973:2:76"
                  },
                  "returnParameters": {
                    "id": 20357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20356,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 20397,
                        "src": "5999:7:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20355,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5999:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5998:9:76"
                  },
                  "scope": 20625,
                  "src": "5947:404:76",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20441,
                    "nodeType": "Block",
                    "src": "6620:260:76",
                    "statements": [
                      {
                        "assignments": [
                          20403
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20403,
                            "name": "duration",
                            "nodeType": "VariableDeclaration",
                            "scope": 20441,
                            "src": "6624:16:76",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20402,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6624:7:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20411,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 20404,
                              "name": "vestingDataList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19900,
                              "src": "6643:15:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                              }
                            },
                            "id": 20409,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20405,
                                  "name": "vestingDataList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19900,
                                  "src": "6659:15:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                    "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                  }
                                },
                                "id": 20406,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6659:22:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 20407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6684:1:76",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "6659:26:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6643:43:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VestingData_$19897_storage",
                              "typeString": "struct VestingCreator.VestingData storage ref"
                            }
                          },
                          "id": 20410,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "duration",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19890,
                          "src": "6643:52:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6624:71:76"
                      },
                      {
                        "assignments": [
                          20413
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20413,
                            "name": "cliff",
                            "nodeType": "VariableDeclaration",
                            "scope": 20441,
                            "src": "6699:13:76",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20412,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6699:7:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20421,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 20414,
                              "name": "vestingDataList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19900,
                              "src": "6715:15:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                              }
                            },
                            "id": 20419,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20415,
                                  "name": "vestingDataList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19900,
                                  "src": "6731:15:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                    "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                  }
                                },
                                "id": 20416,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6731:22:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 20417,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6756:1:76",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "6731:26:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6715:43:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VestingData_$19897_storage",
                              "typeString": "struct VestingCreator.VestingData storage ref"
                            }
                          },
                          "id": 20420,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "cliff",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19888,
                          "src": "6715:49:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6699:65:76"
                      },
                      {
                        "assignments": [
                          20423
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20423,
                            "name": "fourWeeks",
                            "nodeType": "VariableDeclaration",
                            "scope": 20441,
                            "src": "6768:17:76",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20422,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6768:7:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20428,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 20426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6802:1:76",
                              "subdenomination": null,
                              "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"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 20424,
                              "name": "TWO_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19880,
                              "src": "6788:9:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 20425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42153,
                            "src": "6788:13:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 20427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6788:16:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6768:36:76"
                      },
                      {
                        "assignments": [
                          20430
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20430,
                            "name": "period",
                            "nodeType": "VariableDeclaration",
                            "scope": 20441,
                            "src": "6808:14:76",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20429,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6808:7:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20438,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20436,
                              "name": "fourWeeks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20423,
                              "src": "6849:9:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20433,
                                  "name": "cliff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20413,
                                  "src": "6838:5:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20431,
                                  "name": "duration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20403,
                                  "src": "6825:8:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 20432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42092,
                                "src": "6825:12:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 20434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6825:19:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 20435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "6825:23:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 20437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6825:34:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6808:51:76"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20439,
                          "name": "period",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20430,
                          "src": "6870:6:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20401,
                        "id": 20440,
                        "nodeType": "Return",
                        "src": "6863:13:76"
                      }
                    ]
                  },
                  "documentation": "@notice returns period i.e. ((duration - cliff) / 4 WEEKS)\n@dev will be used for deciding if vesting and staking needs to be processed\nin a single transaction or separate transactions",
                  "id": 20442,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getVestingPeriod",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20398,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6585:2:76"
                  },
                  "returnParameters": {
                    "id": 20401,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20400,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 20442,
                        "src": "6611:7:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20399,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6611:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6610:9:76"
                  },
                  "scope": 20625,
                  "src": "6560:320:76",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20450,
                    "nodeType": "Block",
                    "src": "7010:37:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 20447,
                            "name": "vestingDataList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19900,
                            "src": "7021:15:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                              "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                            }
                          },
                          "id": 20448,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7021:22:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20446,
                        "id": 20449,
                        "nodeType": "Return",
                        "src": "7014:29:76"
                      }
                    ]
                  },
                  "documentation": "@notice returns count of vestings to be processed",
                  "id": 20451,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUnprocessedCount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20443,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6975:2:76"
                  },
                  "returnParameters": {
                    "id": 20446,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20445,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 20451,
                        "src": "7001:7:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20444,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7001:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7000:9:76"
                  },
                  "scope": 20625,
                  "src": "6947:100:76",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20489,
                    "nodeType": "Block",
                    "src": "7183:182:76",
                    "statements": [
                      {
                        "assignments": [
                          20457
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20457,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 20489,
                            "src": "7187:14:76",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20456,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7187:7:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20459,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 20458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7204:1:76",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7187:18:76"
                      },
                      {
                        "assignments": [
                          20461
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20461,
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 20489,
                            "src": "7209:14:76",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20460,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7209:7:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20464,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 20462,
                            "name": "vestingDataList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19900,
                            "src": "7226:15:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                              "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                            }
                          },
                          "id": 20463,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7226:22:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7209:39:76"
                      },
                      {
                        "body": {
                          "id": 20485,
                          "nodeType": "Block",
                          "src": "7289:56:76",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 20483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 20475,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20457,
                                  "src": "7294:6:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 20478,
                                          "name": "vestingDataList",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19900,
                                          "src": "7314:15:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_VestingData_$19897_storage_$dyn_storage",
                                            "typeString": "struct VestingCreator.VestingData storage ref[] storage ref"
                                          }
                                        },
                                        "id": 20480,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 20479,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20466,
                                          "src": "7330:1:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "7314:18:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_VestingData_$19897_storage",
                                          "typeString": "struct VestingCreator.VestingData storage ref"
                                        }
                                      },
                                      "id": 20481,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "amount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 19886,
                                      "src": "7314:25:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20476,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20457,
                                      "src": "7303:6:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 20477,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "7303:10:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 20482,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7303:37:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7294:46:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20484,
                              "nodeType": "ExpressionStatement",
                              "src": "7294:46:76"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20469,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20466,
                            "src": "7272:1:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20470,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20461,
                            "src": "7276:6:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7272:10:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20486,
                        "initializationExpression": {
                          "assignments": [
                            20466
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 20466,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 20486,
                              "src": "7257:9:76",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 20465,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7257:7:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 20468,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 20467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7269:1:76",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7257:13:76"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 20473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "7284:3:76",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 20472,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20466,
                              "src": "7284:1:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20474,
                          "nodeType": "ExpressionStatement",
                          "src": "7284:3:76"
                        },
                        "nodeType": "ForStatement",
                        "src": "7252:93:76"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20487,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20457,
                          "src": "7355:6:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20455,
                        "id": 20488,
                        "nodeType": "Return",
                        "src": "7348:13:76"
                      }
                    ]
                  },
                  "documentation": "@notice returns total amount of vestings to be processed",
                  "id": 20490,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUnprocessedAmount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20452,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7150:2:76"
                  },
                  "returnParameters": {
                    "id": 20455,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20454,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 20490,
                        "src": "7174:7:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20453,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7174:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7173:9:76"
                  },
                  "scope": 20625,
                  "src": "7121:244:76",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20505,
                    "nodeType": "Block",
                    "src": "7505:69:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 20498,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45234,
                                    "src": "7538:4:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_VestingCreator_$20625",
                                      "typeString": "contract VestingCreator"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_VestingCreator_$20625",
                                      "typeString": "contract VestingCreator"
                                    }
                                  ],
                                  "id": 20497,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7530:7:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 20499,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7530:13:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 20495,
                                "name": "SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19882,
                                "src": "7516:3:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$24699",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 20496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24644,
                              "src": "7516:13:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 20500,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7516:28:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 20501,
                              "name": "getUnprocessedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20490,
                              "src": "7548:20:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 20502,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7548:22:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7516:54:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 20494,
                        "id": 20504,
                        "nodeType": "Return",
                        "src": "7509:61:76"
                      }
                    ]
                  },
                  "documentation": "@notice checks if contract balance is enough to process all vestings",
                  "id": 20506,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isEnoughBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20491,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7475:2:76"
                  },
                  "returnParameters": {
                    "id": 20494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20493,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 20506,
                        "src": "7499:4:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 20492,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7499:4:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7498:6:76"
                  },
                  "scope": 20625,
                  "src": "7451:123:76",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20527,
                    "nodeType": "Block",
                    "src": "7707:112:76",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 20511,
                            "name": "isEnoughBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20506,
                            "src": "7715:15:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 20512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7715:17:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 20516,
                        "nodeType": "IfStatement",
                        "src": "7711:41:76",
                        "trueBody": {
                          "id": 20515,
                          "nodeType": "Block",
                          "src": "7734:18:76",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 20513,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7746:1:76",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 20510,
                              "id": 20514,
                              "nodeType": "Return",
                              "src": "7739:8:76"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 20517,
                              "name": "getUnprocessedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20490,
                              "src": "7762:20:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 20518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7762:22:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 20522,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45234,
                                    "src": "7809:4:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_VestingCreator_$20625",
                                      "typeString": "contract VestingCreator"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_VestingCreator_$20625",
                                      "typeString": "contract VestingCreator"
                                    }
                                  ],
                                  "id": 20521,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7801:7:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 20523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7801:13:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 20519,
                                "name": "SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19882,
                                "src": "7787:3:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$24699",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 20520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24644,
                              "src": "7787:13:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 20524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7787:28:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7762:53:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20510,
                        "id": 20526,
                        "nodeType": "Return",
                        "src": "7755:60:76"
                      }
                    ]
                  },
                  "documentation": "@notice returns missed balance to process all vestings",
                  "id": 20528,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMissingBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20507,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7672:2:76"
                  },
                  "returnParameters": {
                    "id": 20510,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20509,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 20528,
                        "src": "7698:7:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20508,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7698:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7697:9:76"
                  },
                  "scope": 20625,
                  "src": "7646:173:76",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20583,
                    "nodeType": "Block",
                    "src": "8069:609:76",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 20535,
                            "name": "vestingData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20530,
                            "src": "8077:11:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                              "typeString": "struct VestingCreator.VestingData memory"
                            }
                          },
                          "id": 20536,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "governanceControl",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19892,
                          "src": "8077:29:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 20568,
                          "nodeType": "Block",
                          "src": "8305:191:76",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20556,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20530,
                                      "src": "8354:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                        "typeString": "struct VestingCreator.VestingData memory"
                                      }
                                    },
                                    "id": 20557,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tokenOwner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19894,
                                    "src": "8354:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20558,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20530,
                                      "src": "8382:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                        "typeString": "struct VestingCreator.VestingData memory"
                                      }
                                    },
                                    "id": 20559,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19886,
                                    "src": "8382:18:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20560,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20530,
                                      "src": "8406:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                        "typeString": "struct VestingCreator.VestingData memory"
                                      }
                                    },
                                    "id": 20561,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cliff",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19888,
                                    "src": "8406:17:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20562,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20530,
                                      "src": "8429:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                        "typeString": "struct VestingCreator.VestingData memory"
                                      }
                                    },
                                    "id": 20563,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "duration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19890,
                                    "src": "8429:20:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20564,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20530,
                                      "src": "8455:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                        "typeString": "struct VestingCreator.VestingData memory"
                                      }
                                    },
                                    "id": 20565,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "vestingCreationType",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19896,
                                    "src": "8455:31:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20553,
                                    "name": "vestingRegistryLogic",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19884,
                                    "src": "8310:20:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                                      "typeString": "contract VestingRegistryLogic"
                                    }
                                  },
                                  "id": 20555,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "createVestingAddr",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 23935,
                                  "src": "8310:38:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,uint256,uint256) external"
                                  }
                                },
                                "id": 20566,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8310:181:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20567,
                              "nodeType": "ExpressionStatement",
                              "src": "8310:181:76"
                            }
                          ]
                        },
                        "id": 20569,
                        "nodeType": "IfStatement",
                        "src": "8073:423:76",
                        "trueBody": {
                          "id": 20552,
                          "nodeType": "Block",
                          "src": "8108:191:76",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20540,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20530,
                                      "src": "8157:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                        "typeString": "struct VestingCreator.VestingData memory"
                                      }
                                    },
                                    "id": 20541,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tokenOwner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19894,
                                    "src": "8157:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20542,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20530,
                                      "src": "8185:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                        "typeString": "struct VestingCreator.VestingData memory"
                                      }
                                    },
                                    "id": 20543,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19886,
                                    "src": "8185:18:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20544,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20530,
                                      "src": "8209:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                        "typeString": "struct VestingCreator.VestingData memory"
                                      }
                                    },
                                    "id": 20545,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cliff",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19888,
                                    "src": "8209:17:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20546,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20530,
                                      "src": "8232:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                        "typeString": "struct VestingCreator.VestingData memory"
                                      }
                                    },
                                    "id": 20547,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "duration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19890,
                                    "src": "8232:20:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20548,
                                      "name": "vestingData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20530,
                                      "src": "8258:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                        "typeString": "struct VestingCreator.VestingData memory"
                                      }
                                    },
                                    "id": 20549,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "vestingCreationType",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19896,
                                    "src": "8258:31:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20537,
                                    "name": "vestingRegistryLogic",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19884,
                                    "src": "8113:20:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                                      "typeString": "contract VestingRegistryLogic"
                                    }
                                  },
                                  "id": 20539,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "createTeamVesting",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 23973,
                                  "src": "8113:38:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,uint256,uint256) external"
                                  }
                                },
                                "id": 20550,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8113:181:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20551,
                              "nodeType": "ExpressionStatement",
                              "src": "8113:181:76"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20571,
                                "name": "vestingData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20530,
                                "src": "8526:11:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                  "typeString": "struct VestingCreator.VestingData memory"
                                }
                              },
                              "id": 20572,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tokenOwner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19894,
                              "src": "8526:22:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20573,
                                "name": "vestingData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20530,
                                "src": "8554:11:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                  "typeString": "struct VestingCreator.VestingData memory"
                                }
                              },
                              "id": 20574,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cliff",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19888,
                              "src": "8554:17:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20575,
                                "name": "vestingData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20530,
                                "src": "8577:11:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                  "typeString": "struct VestingCreator.VestingData memory"
                                }
                              },
                              "id": 20576,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "duration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19890,
                              "src": "8577:20:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20577,
                                "name": "vestingData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20530,
                                "src": "8603:11:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                  "typeString": "struct VestingCreator.VestingData memory"
                                }
                              },
                              "id": 20578,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "governanceControl",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19892,
                              "src": "8603:29:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20579,
                                "name": "vestingData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20530,
                                "src": "8638:11:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                                  "typeString": "struct VestingCreator.VestingData memory"
                                }
                              },
                              "id": 20580,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vestingCreationType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19896,
                              "src": "8638:31:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20570,
                            "name": "_getVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20624,
                            "src": "8509:11:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (address,uint256,uint256,bool,uint256) view returns (address)"
                            }
                          },
                          "id": 20581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8509:165:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 20534,
                        "id": 20582,
                        "nodeType": "Return",
                        "src": "8499:175:76"
                      }
                    ]
                  },
                  "documentation": "@notice creates TeamVesting or Vesting contract\n@dev new contract won't be created if account already has contract of the same type",
                  "id": 20584,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_createAndGetVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20531,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20530,
                        "name": "vestingData",
                        "nodeType": "VariableDeclaration",
                        "scope": 20584,
                        "src": "8002:30:76",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VestingData_$19897_memory_ptr",
                          "typeString": "struct VestingCreator.VestingData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 20529,
                          "name": "VestingData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 19897,
                          "src": "8002:11:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VestingData_$19897_storage_ptr",
                            "typeString": "struct VestingCreator.VestingData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8001:32:76"
                  },
                  "returnParameters": {
                    "id": 20534,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20533,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 20584,
                        "src": "8052:15:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20532,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8052:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8051:17:76"
                  },
                  "scope": 20625,
                  "src": "7972:706:76",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20623,
                    "nodeType": "Block",
                    "src": "8983:269:76",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 20599,
                          "name": "_governanceControl",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20592,
                          "src": "8991:18:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 20621,
                          "nodeType": "Block",
                          "src": "9133:116:76",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 20619,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 20611,
                                  "name": "vestingAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20597,
                                  "src": "9138:14:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 20614,
                                      "name": "_tokenOwner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20586,
                                      "src": "9191:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 20615,
                                      "name": "_cliff",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20588,
                                      "src": "9204:6:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 20616,
                                      "name": "_duration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20590,
                                      "src": "9212:9:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 20617,
                                      "name": "_vestingCreationType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20594,
                                      "src": "9223:20:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20612,
                                      "name": "vestingRegistryLogic",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19884,
                                      "src": "9155:20:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                                        "typeString": "contract VestingRegistryLogic"
                                      }
                                    },
                                    "id": 20613,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getVestingAddr",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24079,
                                    "src": "9155:35:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                                      "typeString": "function (address,uint256,uint256,uint256) view external returns (address)"
                                    }
                                  },
                                  "id": 20618,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9155:89:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "9138:106:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 20620,
                              "nodeType": "ExpressionStatement",
                              "src": "9138:106:76"
                            }
                          ]
                        },
                        "id": 20622,
                        "nodeType": "IfStatement",
                        "src": "8987:262:76",
                        "trueBody": {
                          "id": 20610,
                          "nodeType": "Block",
                          "src": "9011:116:76",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 20608,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 20600,
                                  "name": "vestingAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20597,
                                  "src": "9016:14:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 20603,
                                      "name": "_tokenOwner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20586,
                                      "src": "9069:11:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 20604,
                                      "name": "_cliff",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20588,
                                      "src": "9082:6:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 20605,
                                      "name": "_duration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20590,
                                      "src": "9090:9:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 20606,
                                      "name": "_vestingCreationType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20594,
                                      "src": "9101:20:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20601,
                                      "name": "vestingRegistryLogic",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19884,
                                      "src": "9033:20:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                                        "typeString": "contract VestingRegistryLogic"
                                      }
                                    },
                                    "id": 20602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getTeamVesting",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24120,
                                    "src": "9033:35:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                                      "typeString": "function (address,uint256,uint256,uint256) view external returns (address)"
                                    }
                                  },
                                  "id": 20607,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9033:89:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "9016:106:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 20609,
                              "nodeType": "ExpressionStatement",
                              "src": "9016:106:76"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice returns an address of TeamVesting or Vesting contract (depends on a governance control)",
                  "id": 20624,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20595,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20586,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 20624,
                        "src": "8815:19:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20585,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8815:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20588,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 20624,
                        "src": "8838:14:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20587,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8838:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20590,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 20624,
                        "src": "8856:17:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20589,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8856:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20592,
                        "name": "_governanceControl",
                        "nodeType": "VariableDeclaration",
                        "scope": 20624,
                        "src": "8877:23:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 20591,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8877:4:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20594,
                        "name": "_vestingCreationType",
                        "nodeType": "VariableDeclaration",
                        "scope": 20624,
                        "src": "8904:28:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20593,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8904:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8811:124:76"
                  },
                  "returnParameters": {
                    "id": 20598,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20597,
                        "name": "vestingAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 20624,
                        "src": "8959:22:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20596,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8959:7:76",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8958:24:76"
                  },
                  "scope": 20625,
                  "src": "8791:461:76",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 20626,
              "src": "209:9045:76"
            }
          ],
          "src": "0:9255:76"
        },
        "id": 76
      },
      "contracts/governance/Vesting/VestingFactory.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/VestingFactory.sol",
          "exportedSymbols": {
            "VestingFactory": [
              20749
            ]
          },
          "id": 20750,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20627,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:77"
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../../openzeppelin/Ownable.sol",
              "id": 20628,
              "nodeType": "ImportDirective",
              "scope": 20750,
              "sourceUnit": 41799,
              "src": "26:40:77",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/Vesting.sol",
              "file": "./Vesting.sol",
              "id": 20629,
              "nodeType": "ImportDirective",
              "scope": 20750,
              "sourceUnit": 19864,
              "src": "67:23:77",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/TeamVesting.sol",
              "file": "./TeamVesting.sol",
              "id": 20630,
              "nodeType": "ImportDirective",
              "scope": 20750,
              "sourceUnit": 19625,
              "src": "91:27:77",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/IVestingFactory.sol",
              "file": "./IVestingFactory.sol",
              "id": 20631,
              "nodeType": "ImportDirective",
              "scope": 20750,
              "sourceUnit": 18639,
              "src": "119:31:77",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 20632,
                    "name": "IVestingFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18638,
                    "src": "439:15:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                      "typeString": "contract IVestingFactory"
                    }
                  },
                  "id": 20633,
                  "nodeType": "InheritanceSpecifier",
                  "src": "439:15:77"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 20634,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "456:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 20635,
                  "nodeType": "InheritanceSpecifier",
                  "src": "456:7:77"
                }
              ],
              "contractDependencies": [
                18638,
                19624,
                19863,
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Vesting Factory: Contract to deploy vesting contracts\nof two types: vesting (TokenHolder) and team vesting (Multisig).\n@notice Factory pattern allows to create multiple instances\nof the same contract and keep track of them easier.\n",
              "fullyImplemented": true,
              "id": 20749,
              "linearizedBaseContracts": [
                20749,
                41798,
                41125,
                18638
              ],
              "name": "VestingFactory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 20637,
                  "name": "vestingLogic",
                  "nodeType": "VariableDeclaration",
                  "scope": 20749,
                  "src": "467:27:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20636,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "467:7:77",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20655,
                    "nodeType": "Block",
                    "src": "540:109:77",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 20647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20643,
                                "name": "_vestingLogic",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20639,
                                "src": "552:13:77",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 20645,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "577:1:77",
                                    "subdenomination": null,
                                    "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": 20644,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "569:7:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 20646,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "569:10:77",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "552:27:77",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e76616c69642076657374696e67206c6f6769632061646472657373",
                              "id": 20648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "581:31:77",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cb4d08ae0cb5fa2bab4279c5bfa678135c59ce9309c4cd45b7cc85b524e663a3",
                                "typeString": "literal_string \"invalid vesting logic address\""
                              },
                              "value": "invalid vesting logic address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cb4d08ae0cb5fa2bab4279c5bfa678135c59ce9309c4cd45b7cc85b524e663a3",
                                "typeString": "literal_string \"invalid vesting logic address\""
                              }
                            ],
                            "id": 20642,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "544:7:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "544:69:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20650,
                        "nodeType": "ExpressionStatement",
                        "src": "544:69:77"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 20651,
                            "name": "vestingLogic",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20637,
                            "src": "617:12:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 20652,
                            "name": "_vestingLogic",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20639,
                            "src": "632:13:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "617:28:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 20654,
                        "nodeType": "ExpressionStatement",
                        "src": "617:28:77"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 20656,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20639,
                        "name": "_vestingLogic",
                        "nodeType": "VariableDeclaration",
                        "scope": 20656,
                        "src": "510:21:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20638,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "510:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "509:23:77"
                  },
                  "returnParameters": {
                    "id": 20641,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "540:0:77"
                  },
                  "scope": 20749,
                  "src": "498:151:77",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20701,
                    "nodeType": "Block",
                    "src": "1388:192:77",
                    "statements": [
                      {
                        "assignments": [
                          20678
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20678,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 20701,
                            "src": "1392:15:77",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 20677,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1392:7:77",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20691,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20682,
                                  "name": "vestingLogic",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20637,
                                  "src": "1430:12:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 20683,
                                  "name": "_SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20658,
                                  "src": "1444:4:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 20684,
                                  "name": "_staking",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20660,
                                  "src": "1450:8:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 20685,
                                  "name": "_tokenOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20662,
                                  "src": "1460:11:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 20686,
                                  "name": "_cliff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20664,
                                  "src": "1473:6:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 20687,
                                  "name": "_duration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20666,
                                  "src": "1481:9:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 20688,
                                  "name": "_feeSharing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20668,
                                  "src": "1492:11:77",
                                  "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_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 20681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "1418:11:77",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_contract$_Vesting_$19863_$",
                                  "typeString": "function (address,address,address,address,uint256,uint256,address) returns (contract Vesting)"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 20680,
                                  "name": "Vesting",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 19863,
                                  "src": "1422:7:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Vesting_$19863",
                                    "typeString": "contract Vesting"
                                  }
                                }
                              },
                              "id": 20689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1418:86:77",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Vesting_$19863",
                                "typeString": "contract Vesting"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Vesting_$19863",
                                "typeString": "contract Vesting"
                              }
                            ],
                            "id": 20679,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1410:7:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 20690,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1410:95:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1392:113:77"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20696,
                              "name": "_vestingOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20670,
                              "src": "1544:13:77",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20693,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20678,
                                  "src": "1517:7:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 20692,
                                "name": "Ownable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41798,
                                "src": "1509:7:77",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Ownable_$41798_$",
                                  "typeString": "type(contract Ownable)"
                                }
                              },
                              "id": 20694,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1509:16:77",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Ownable_$41798",
                                "typeString": "contract Ownable"
                              }
                            },
                            "id": 20695,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 41773,
                            "src": "1509:34:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 20697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1509:49:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20698,
                        "nodeType": "ExpressionStatement",
                        "src": "1509:49:77"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20699,
                          "name": "vesting",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20678,
                          "src": "1569:7:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 20676,
                        "id": 20700,
                        "nodeType": "Return",
                        "src": "1562:14:77"
                      }
                    ]
                  },
                  "documentation": "@notice Deploys Vesting contract.\n@param _SOV the address of SOV token.\n@param _staking The address of staking contract.\n@param _tokenOwner The owner of the tokens.\n@param _cliff The time interval to the first withdraw in seconds.\n@param _duration The total duration in seconds.\n@param _feeSharing The address of fee sharing contract.\n@param _vestingOwner The address of an owner of vesting contract.\n@return The vesting contract address.\n",
                  "id": 20702,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 20673,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 20672,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1324:9:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1324:9:77"
                    }
                  ],
                  "name": "deployVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20671,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20658,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "1165:12:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20657,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1165:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20660,
                        "name": "_staking",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "1181:16:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20659,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1181:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20662,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "1201:19:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20661,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1201:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20664,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "1224:14:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20663,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1224:7:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20666,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "1242:17:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20665,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1242:7:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20668,
                        "name": "_feeSharing",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "1263:19:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20667,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1263:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20670,
                        "name": "_vestingOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "1286:21:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20669,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1286:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1161:149:77"
                  },
                  "returnParameters": {
                    "id": 20676,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20675,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 20702,
                        "src": "1378:7:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20674,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1378:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1377:9:77"
                  },
                  "scope": 20749,
                  "src": "1139:441:77",
                  "stateMutability": "nonpayable",
                  "superFunction": 18618,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 20747,
                    "nodeType": "Block",
                    "src": "2321:196:77",
                    "statements": [
                      {
                        "assignments": [
                          20724
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20724,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 20747,
                            "src": "2325:15:77",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 20723,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2325:7:77",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20737,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20728,
                                  "name": "vestingLogic",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20637,
                                  "src": "2367:12:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 20729,
                                  "name": "_SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20704,
                                  "src": "2381:4:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 20730,
                                  "name": "_staking",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20706,
                                  "src": "2387:8:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 20731,
                                  "name": "_tokenOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20708,
                                  "src": "2397:11:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 20732,
                                  "name": "_cliff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20710,
                                  "src": "2410:6:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 20733,
                                  "name": "_duration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20712,
                                  "src": "2418:9:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 20734,
                                  "name": "_feeSharing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20714,
                                  "src": "2429:11:77",
                                  "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_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 20727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "2351:15:77",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_contract$_TeamVesting_$19624_$",
                                  "typeString": "function (address,address,address,address,uint256,uint256,address) returns (contract TeamVesting)"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 20726,
                                  "name": "TeamVesting",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 19624,
                                  "src": "2355:11:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_TeamVesting_$19624",
                                    "typeString": "contract TeamVesting"
                                  }
                                }
                              },
                              "id": 20735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2351:90:77",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TeamVesting_$19624",
                                "typeString": "contract TeamVesting"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_TeamVesting_$19624",
                                "typeString": "contract TeamVesting"
                              }
                            ],
                            "id": 20725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2343:7:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 20736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2343:99:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2325:117:77"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20742,
                              "name": "_vestingOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20716,
                              "src": "2481:13:77",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20739,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20724,
                                  "src": "2454:7:77",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 20738,
                                "name": "Ownable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41798,
                                "src": "2446:7:77",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Ownable_$41798_$",
                                  "typeString": "type(contract Ownable)"
                                }
                              },
                              "id": 20740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2446:16:77",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Ownable_$41798",
                                "typeString": "contract Ownable"
                              }
                            },
                            "id": 20741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 41773,
                            "src": "2446:34:77",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 20743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2446:49:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20744,
                        "nodeType": "ExpressionStatement",
                        "src": "2446:49:77"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20745,
                          "name": "vesting",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20724,
                          "src": "2506:7:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 20722,
                        "id": 20746,
                        "nodeType": "Return",
                        "src": "2499:14:77"
                      }
                    ]
                  },
                  "documentation": "@notice Deploys Team Vesting contract.\n@param _SOV The address of SOV token.\n@param _staking The address of staking contract.\n@param _tokenOwner The owner of the tokens.\n@param _cliff The time interval to the first withdraw in seconds.\n@param _duration The total duration in seconds.\n@param _feeSharing The address of fee sharing contract.\n@param _vestingOwner The address of an owner of vesting contract.\n@return The vesting contract address.\n",
                  "id": 20748,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 20719,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 20718,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2264:9:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2264:9:77"
                    }
                  ],
                  "name": "deployTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20717,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20704,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 20748,
                        "src": "2105:12:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20703,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2105:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20706,
                        "name": "_staking",
                        "nodeType": "VariableDeclaration",
                        "scope": 20748,
                        "src": "2121:16:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20705,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2121:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20708,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 20748,
                        "src": "2141:19:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20707,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2141:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20710,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 20748,
                        "src": "2164:14:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20709,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2164:7:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20712,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 20748,
                        "src": "2182:17:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20711,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2182:7:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20714,
                        "name": "_feeSharing",
                        "nodeType": "VariableDeclaration",
                        "scope": 20748,
                        "src": "2203:19:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20713,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2203:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20716,
                        "name": "_vestingOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 20748,
                        "src": "2226:21:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20715,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2226:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2101:149:77"
                  },
                  "returnParameters": {
                    "id": 20722,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20721,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 20748,
                        "src": "2311:7:77",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20720,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2311:7:77",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2310:9:77"
                  },
                  "scope": 20749,
                  "src": "2075:442:77",
                  "stateMutability": "nonpayable",
                  "superFunction": 18637,
                  "visibility": "external"
                }
              ],
              "scope": 20750,
              "src": "412:2107:77"
            }
          ],
          "src": "0:2520:77"
        },
        "id": 77
      },
      "contracts/governance/Vesting/VestingLogic.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/VestingLogic.sol",
          "exportedSymbols": {
            "VestingLogic": [
              21207
            ]
          },
          "id": 21208,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20751,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:78"
            },
            {
              "id": 20752,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:78"
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../../openzeppelin/Ownable.sol",
              "id": 20753,
              "nodeType": "ImportDirective",
              "scope": 21208,
              "sourceUnit": 41799,
              "src": "60:40:78",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 20754,
              "nodeType": "ImportDirective",
              "scope": 21208,
              "sourceUnit": 24700,
              "src": "101:37:78",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/Staking.sol",
              "file": "../Staking/Staking.sol",
              "id": 20755,
              "nodeType": "ImportDirective",
              "scope": 21208,
              "sourceUnit": 15558,
              "src": "139:32:78",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/IFeeSharingProxy.sol",
              "file": "../IFeeSharingProxy.sol",
              "id": 20756,
              "nodeType": "ImportDirective",
              "scope": 21208,
              "sourceUnit": 13113,
              "src": "172:33:78",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/IVesting.sol",
              "file": "./IVesting.sol",
              "id": 20757,
              "nodeType": "ImportDirective",
              "scope": 21208,
              "sourceUnit": 18598,
              "src": "206:24:78",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/ApprovalReceiver.sol",
              "file": "../ApprovalReceiver.sol",
              "id": 20758,
              "nodeType": "ImportDirective",
              "scope": 21208,
              "sourceUnit": 10704,
              "src": "231:33:78",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/VestingStorage.sol",
              "file": "./VestingStorage.sol",
              "id": 20759,
              "nodeType": "ImportDirective",
              "scope": 21208,
              "sourceUnit": 24571,
              "src": "265:30:78",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 20760,
                    "name": "IVesting",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18597,
                    "src": "474:8:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IVesting_$18597",
                      "typeString": "contract IVesting"
                    }
                  },
                  "id": 20761,
                  "nodeType": "InheritanceSpecifier",
                  "src": "474:8:78"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 20762,
                    "name": "VestingStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24570,
                    "src": "484:14:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VestingStorage_$24570",
                      "typeString": "contract VestingStorage"
                    }
                  },
                  "id": 20763,
                  "nodeType": "InheritanceSpecifier",
                  "src": "484:14:78"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 20764,
                    "name": "ApprovalReceiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10703,
                    "src": "500:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ApprovalReceiver_$10703",
                      "typeString": "contract ApprovalReceiver"
                    }
                  },
                  "id": 20765,
                  "nodeType": "InheritanceSpecifier",
                  "src": "500:16:78"
                }
              ],
              "contractDependencies": [
                10703,
                10802,
                18597,
                24570,
                41125,
                41798,
                44823
              ],
              "contractKind": "contract",
              "documentation": "@title Vesting Logic contract.\n@notice Staking, delegating and withdrawal functionality.\n@dev Deployed by a VestingFactory contract.\n",
              "fullyImplemented": true,
              "id": 21207,
              "linearizedBaseContracts": [
                21207,
                10703,
                44823,
                10802,
                24570,
                41798,
                41125,
                18597
              ],
              "name": "VestingLogic",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 20771,
                  "name": "TokensStaked",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 20770,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20767,
                        "indexed": true,
                        "name": "caller",
                        "nodeType": "VariableDeclaration",
                        "scope": 20771,
                        "src": "554:22:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20766,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "554:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20769,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 20771,
                        "src": "578:14:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20768,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "578:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "553:40:78"
                  },
                  "src": "535:59:78"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 20777,
                  "name": "VotesDelegated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 20776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20773,
                        "indexed": true,
                        "name": "caller",
                        "nodeType": "VariableDeclaration",
                        "scope": 20777,
                        "src": "617:22:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20772,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "617:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20775,
                        "indexed": false,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 20777,
                        "src": "641:17:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20774,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "641:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "616:43:78"
                  },
                  "src": "596:64:78"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 20783,
                  "name": "TokensWithdrawn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 20782,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20779,
                        "indexed": true,
                        "name": "caller",
                        "nodeType": "VariableDeclaration",
                        "scope": 20783,
                        "src": "684:22:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20778,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "684:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20781,
                        "indexed": false,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 20783,
                        "src": "708:16:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20780,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "708:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "683:42:78"
                  },
                  "src": "662:64:78"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 20793,
                  "name": "DividendsCollected",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 20792,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20785,
                        "indexed": true,
                        "name": "caller",
                        "nodeType": "VariableDeclaration",
                        "scope": 20793,
                        "src": "753:22:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20784,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "753:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20787,
                        "indexed": false,
                        "name": "loanPoolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 20793,
                        "src": "777:21:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20786,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "777:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20789,
                        "indexed": false,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 20793,
                        "src": "800:16:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20788,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "800:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20791,
                        "indexed": false,
                        "name": "maxCheckpoints",
                        "nodeType": "VariableDeclaration",
                        "scope": 20793,
                        "src": "818:21:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 20790,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "818:6:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "752:88:78"
                  },
                  "src": "728:113:78"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 20799,
                  "name": "MigratedToNewStakingContract",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 20798,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20795,
                        "indexed": true,
                        "name": "caller",
                        "nodeType": "VariableDeclaration",
                        "scope": 20799,
                        "src": "878:22:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20794,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "878:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20797,
                        "indexed": false,
                        "name": "newStakingContract",
                        "nodeType": "VariableDeclaration",
                        "scope": 20799,
                        "src": "902:26:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20796,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "902:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "877:52:78"
                  },
                  "src": "843:87:78"
                },
                {
                  "body": {
                    "id": 20813,
                    "nodeType": "Block",
                    "src": "1074:75:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 20808,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 20805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20802,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "1086:3:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 20803,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1086:10:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20804,
                                  "name": "tokenOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24556,
                                  "src": "1100:10:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1086:24:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 20806,
                                  "name": "isOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41761,
                                  "src": "1114:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 20807,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1114:9:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1086:37:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 20809,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1125:14:78",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 20801,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1078:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1078:62:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20811,
                        "nodeType": "ExpressionStatement",
                        "src": "1078:62:78"
                      },
                      {
                        "id": 20812,
                        "nodeType": "PlaceholderStatement",
                        "src": "1144:1:78"
                      }
                    ]
                  },
                  "documentation": "@dev Throws if called by any account other than the token owner or the contract owner.",
                  "id": 20814,
                  "name": "onlyOwners",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 20800,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1071:2:78"
                  },
                  "src": "1052:97:78",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20825,
                    "nodeType": "Block",
                    "src": "1257:62:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 20820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20817,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "1269:3:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 20818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1269:10:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 20819,
                                "name": "tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24556,
                                "src": "1283:10:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1269:24:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 20821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1295:14:78",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 20816,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1261:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1261:49:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20823,
                        "nodeType": "ExpressionStatement",
                        "src": "1261:49:78"
                      },
                      {
                        "id": 20824,
                        "nodeType": "PlaceholderStatement",
                        "src": "1314:1:78"
                      }
                    ]
                  },
                  "documentation": "@dev Throws if called by any account other than the token owner.",
                  "id": 20826,
                  "name": "onlyTokenOwner",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 20815,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1254:2:78"
                  },
                  "src": "1231:88:78",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20837,
                    "nodeType": "Block",
                    "src": "1508:41:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20832,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "1525:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 20833,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1525:10:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20834,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20828,
                              "src": "1537:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20831,
                            "name": "_stakeTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20926,
                            "src": "1512:12:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 20835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1512:33:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20836,
                        "nodeType": "ExpressionStatement",
                        "src": "1512:33:78"
                      }
                    ]
                  },
                  "documentation": "@notice Stakes tokens according to the vesting schedule.\n@param _amount The amount of tokens to stake.\n",
                  "id": 20838,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "stakeTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20829,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20828,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 20838,
                        "src": "1484:15:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20827,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1484:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1483:17:78"
                  },
                  "returnParameters": {
                    "id": 20830,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1508:0:78"
                  },
                  "scope": 21207,
                  "src": "1463:86:78",
                  "stateMutability": "nonpayable",
                  "superFunction": 18596,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20852,
                    "nodeType": "Block",
                    "src": "1963:38:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20848,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20840,
                              "src": "1980:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20849,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20842,
                              "src": "1989:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20847,
                            "name": "_stakeTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20926,
                            "src": "1967:12:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 20850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1967:30:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20851,
                        "nodeType": "ExpressionStatement",
                        "src": "1967:30:78"
                      }
                    ]
                  },
                  "documentation": "@notice Stakes tokens according to the vesting schedule.\n@dev This function will be invoked from receiveApproval.\n@dev SOV.approveAndCall -> this.receiveApproval -> this.stakeTokensWithApproval\n@param _sender The sender of SOV.approveAndCall\n@param _amount The amount of tokens to stake.\n",
                  "id": 20853,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 20845,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 20844,
                        "name": "onlyThisContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10510,
                        "src": "1946:16:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1946:16:78"
                    }
                  ],
                  "name": "stakeTokensWithApproval",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20843,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20840,
                        "name": "_sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 20853,
                        "src": "1905:15:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20839,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1905:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20842,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 20853,
                        "src": "1922:15:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20841,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1922:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1904:34:78"
                  },
                  "returnParameters": {
                    "id": 20846,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1963:0:78"
                  },
                  "scope": 21207,
                  "src": "1872:129:78",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20925,
                    "nodeType": "Block",
                    "src": "2327:600:78",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20860,
                            "name": "startDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24564,
                            "src": "2404:9:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 20861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2417:1:78",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2404:14:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 20872,
                        "nodeType": "IfStatement",
                        "src": "2400:86:78",
                        "trueBody": {
                          "id": 20871,
                          "nodeType": "Block",
                          "src": "2420:66:78",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 20869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 20863,
                                  "name": "startDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24564,
                                  "src": "2425:9:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20866,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44984,
                                        "src": "2465:5:78",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 20867,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2465:15:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20864,
                                      "name": "staking",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24554,
                                      "src": "2437:7:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Staking_$15557",
                                        "typeString": "contract Staking"
                                      }
                                    },
                                    "id": 20865,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestampToLockDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16607,
                                    "src": "2437:27:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) view external returns (uint256)"
                                    }
                                  },
                                  "id": 20868,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2437:44:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2425:56:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20870,
                              "nodeType": "ExpressionStatement",
                              "src": "2425:56:78"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 20873,
                            "name": "endDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24566,
                            "src": "2489:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20879,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20876,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44984,
                                    "src": "2527:5:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 20877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2527:15:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20878,
                                  "name": "duration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24562,
                                  "src": "2545:8:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2527:26:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 20874,
                                "name": "staking",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24554,
                                "src": "2499:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Staking_$15557",
                                  "typeString": "contract Staking"
                                }
                              },
                              "id": 20875,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestampToLockDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16607,
                              "src": "2499:27:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view external returns (uint256)"
                              }
                            },
                            "id": 20880,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2499:55:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2489:65:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20882,
                        "nodeType": "ExpressionStatement",
                        "src": "2489:65:78"
                      },
                      {
                        "assignments": [
                          20884
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20884,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 20925,
                            "src": "2608:12:78",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 20883,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2608:4:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20893,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20887,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20855,
                              "src": "2640:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20889,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45182,
                                  "src": "2657:4:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                    "typeString": "contract VestingLogic"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                    "typeString": "contract VestingLogic"
                                  }
                                ],
                                "id": 20888,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2649:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 20890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2649:13:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20891,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20857,
                              "src": "2664:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 20885,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24552,
                              "src": "2623:3:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 20886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24682,
                            "src": "2623:16:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 20892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2623:49:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2608:64:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20895,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20884,
                              "src": "2684:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 20894,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44997,
                            "src": "2676:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 20896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2676:16:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20897,
                        "nodeType": "ExpressionStatement",
                        "src": "2676:16:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20902,
                                  "name": "staking",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24554,
                                  "src": "2771:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Staking_$15557",
                                    "typeString": "contract Staking"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Staking_$15557",
                                    "typeString": "contract Staking"
                                  }
                                ],
                                "id": 20901,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2763:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 20903,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2763:16:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20904,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20857,
                              "src": "2781:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 20898,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24552,
                              "src": "2751:3:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 20900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24662,
                            "src": "2751:11:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 20905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2751:38:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20906,
                        "nodeType": "ExpressionStatement",
                        "src": "2751:38:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20910,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20857,
                              "src": "2819:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20911,
                              "name": "cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24560,
                              "src": "2828:5:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20912,
                              "name": "duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24562,
                              "src": "2835:8:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20913,
                              "name": "FOUR_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24569,
                              "src": "2845:10:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20915,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45182,
                                  "src": "2865:4:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                    "typeString": "contract VestingLogic"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                    "typeString": "contract VestingLogic"
                                  }
                                ],
                                "id": 20914,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2857:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 20916,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2857:13:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20917,
                              "name": "tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24556,
                              "src": "2872:10:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 20907,
                              "name": "staking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24554,
                              "src": "2794:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Staking_$15557",
                                "typeString": "contract Staking"
                              }
                            },
                            "id": 20909,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakesBySchedule",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14495,
                            "src": "2794:24:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256,uint256,address,address) external"
                            }
                          },
                          "id": 20918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2794:89:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20919,
                        "nodeType": "ExpressionStatement",
                        "src": "2794:89:78"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20921,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20855,
                              "src": "2906:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20922,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20857,
                              "src": "2915:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20920,
                            "name": "TokensStaked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20771,
                            "src": "2893:12:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 20923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2893:30:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20924,
                        "nodeType": "EmitStatement",
                        "src": "2888:35:78"
                      }
                    ]
                  },
                  "documentation": "@notice Stakes tokens according to the vesting schedule. Low level function.\n@dev Once here the allowance of tokens is taken for granted.\n@param _sender The sender of tokens to stake.\n@param _amount The amount of tokens to stake.\n",
                  "id": 20926,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_stakeTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20858,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20855,
                        "name": "_sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 20926,
                        "src": "2284:15:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20854,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2284:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20857,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 20926,
                        "src": "2301:15:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20856,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2301:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2283:34:78"
                  },
                  "returnParameters": {
                    "id": 20859,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2327:0:78"
                  },
                  "scope": 21207,
                  "src": "2262:665:78",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20970,
                    "nodeType": "Block",
                    "src": "3155:437:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 20938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20934,
                                "name": "_delegatee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20928,
                                "src": "3167:10:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 20936,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3189:1:78",
                                    "subdenomination": null,
                                    "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": 20935,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3181:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 20937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3181:10:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3167:24:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "64656c656761746565206164647265737320696e76616c6964",
                              "id": 20939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3193:27:78",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_959e9f42f17d371f19cdfcc3925b02d292bcd39fc031c4188710a26d852302f2",
                                "typeString": "literal_string \"delegatee address invalid\""
                              },
                              "value": "delegatee address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_959e9f42f17d371f19cdfcc3925b02d292bcd39fc031c4188710a26d852302f2",
                                "typeString": "literal_string \"delegatee address invalid\""
                              }
                            ],
                            "id": 20933,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3159:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3159:62:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20941,
                        "nodeType": "ExpressionStatement",
                        "src": "3159:62:78"
                      },
                      {
                        "body": {
                          "id": 20962,
                          "nodeType": "Block",
                          "src": "3501:41:78",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 20958,
                                    "name": "_delegatee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20928,
                                    "src": "3523:10:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 20959,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20943,
                                    "src": "3535:1:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20955,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24554,
                                    "src": "3506:7:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Staking_$15557",
                                      "typeString": "contract Staking"
                                    }
                                  },
                                  "id": 20957,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "delegate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14970,
                                  "src": "3506:16:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 20960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3506:31:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20961,
                              "nodeType": "ExpressionStatement",
                              "src": "3506:31:78"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20948,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20943,
                            "src": "3470:1:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20949,
                            "name": "endDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24566,
                            "src": "3475:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3470:12:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20963,
                        "initializationExpression": {
                          "assignments": [
                            20943
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 20943,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 20963,
                              "src": "3439:9:78",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 20942,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3439:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 20947,
                          "initialValue": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 20944,
                              "name": "startDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24564,
                              "src": "3451:9:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 20945,
                              "name": "cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24560,
                              "src": "3463:5:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3451:17:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3439:29:78"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 20953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 20951,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20943,
                              "src": "3484:1:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 20952,
                              "name": "FOUR_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24569,
                              "src": "3489:10:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3484:15:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20954,
                          "nodeType": "ExpressionStatement",
                          "src": "3484:15:78"
                        },
                        "nodeType": "ForStatement",
                        "src": "3434:108:78"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20965,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "3565:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 20966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3565:10:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20967,
                              "name": "_delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20928,
                              "src": "3577:10:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 20964,
                            "name": "VotesDelegated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20777,
                            "src": "3550:14:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 20968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3550:38:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20969,
                        "nodeType": "EmitStatement",
                        "src": "3545:43:78"
                      }
                    ]
                  },
                  "documentation": "@notice Delegate votes from `msg.sender` which are locked until lockDate\nto `delegatee`.\n@param _delegatee The address to delegate votes to.\n",
                  "id": 20971,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 20931,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 20930,
                        "name": "onlyTokenOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20826,
                        "src": "3140:14:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3140:14:78"
                    }
                  ],
                  "name": "delegate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20928,
                        "name": "_delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 20971,
                        "src": "3113:18:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20927,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3113:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3112:20:78"
                  },
                  "returnParameters": {
                    "id": 20932,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3155:0:78"
                  },
                  "scope": 21207,
                  "src": "3095:497:78",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20991,
                    "nodeType": "Block",
                    "src": "3872:99:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 20982,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20977,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "3884:3:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 20978,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3884:10:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 20980,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24554,
                                    "src": "3906:7:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Staking_$15557",
                                      "typeString": "contract Staking"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Staking_$15557",
                                      "typeString": "contract Staking"
                                    }
                                  ],
                                  "id": 20979,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3898:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 20981,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3898:16:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3884:30:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 20983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3916:14:78",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 20976,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3876:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3876:55:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20985,
                        "nodeType": "ExpressionStatement",
                        "src": "3876:55:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20987,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20973,
                              "src": "3952:8:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 20988,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3962:4:78",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 20986,
                            "name": "_withdrawTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21105,
                            "src": "3936:15:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool)"
                            }
                          },
                          "id": 20989,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3936:31:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20990,
                        "nodeType": "ExpressionStatement",
                        "src": "3936:31:78"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraws all tokens from the staking contract and\nforwards them to an address specified by the token owner.\n@param receiver The receiving address.\n@dev Can be called only by owner.\n",
                  "id": 20992,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "governanceWithdrawTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20974,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20973,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 20992,
                        "src": "3847:16:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20972,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3847:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3846:18:78"
                  },
                  "returnParameters": {
                    "id": 20975,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3872:0:78"
                  },
                  "scope": 21207,
                  "src": "3813:158:78",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21004,
                    "nodeType": "Block",
                    "src": "4219:40:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21000,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20994,
                              "src": "4239:8:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 21001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4249:5:78",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 20999,
                            "name": "_withdrawTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21105,
                            "src": "4223:15:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool)"
                            }
                          },
                          "id": 21002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4223:32:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21003,
                        "nodeType": "ExpressionStatement",
                        "src": "4223:32:78"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraws unlocked tokens from the staking contract and\nforwards them to an address specified by the token owner.\n@param receiver The receiving address.\n",
                  "id": 21005,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 20997,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 20996,
                        "name": "onlyOwners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20814,
                        "src": "4208:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4208:10:78"
                    }
                  ],
                  "name": "withdrawTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20995,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20994,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 21005,
                        "src": "4183:16:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20993,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4183:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4182:18:78"
                  },
                  "returnParameters": {
                    "id": 20998,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4219:0:78"
                  },
                  "scope": 21207,
                  "src": "4159:100:78",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21104,
                    "nodeType": "Block",
                    "src": "4679:1035:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21013,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21007,
                                "src": "4691:8:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21015,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4711:1:78",
                                    "subdenomination": null,
                                    "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": 21014,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4703:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 21016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4703:10:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4691:22:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7265636569766572206164647265737320696e76616c6964",
                              "id": 21018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4715:26:78",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              },
                              "value": "receiver address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              }
                            ],
                            "id": 21012,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4683:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4683:59:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21020,
                        "nodeType": "ExpressionStatement",
                        "src": "4683:59:78"
                      },
                      {
                        "assignments": [
                          21022
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21022,
                            "name": "stake",
                            "nodeType": "VariableDeclaration",
                            "scope": 21104,
                            "src": "4747:12:78",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 21021,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "4747:6:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21023,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4747:12:78"
                      },
                      {
                        "assignments": [
                          21025
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21025,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 21104,
                            "src": "4842:11:78",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21024,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4842:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21026,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4842:11:78"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 21031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21027,
                                "name": "staking",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24554,
                                "src": "4975:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Staking_$15557",
                                  "typeString": "contract Staking"
                                }
                              },
                              "id": 21028,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "allUnlocked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15634,
                              "src": "4975:19:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                                "typeString": "function () view external returns (bool)"
                              }
                            },
                            "id": 21029,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4975:21:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 21030,
                            "name": "isGovernance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21009,
                            "src": "5000:12:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4975:37:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 21042,
                          "nodeType": "Block",
                          "src": "5043:31:78",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 21040,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 21037,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21025,
                                  "src": "5048:3:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21038,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44984,
                                    "src": "5054:5:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 21039,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5054:15:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5048:21:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21041,
                              "nodeType": "ExpressionStatement",
                              "src": "5048:21:78"
                            }
                          ]
                        },
                        "id": 21043,
                        "nodeType": "IfStatement",
                        "src": "4971:103:78",
                        "trueBody": {
                          "id": 21036,
                          "nodeType": "Block",
                          "src": "5014:23:78",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 21034,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 21032,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21025,
                                  "src": "5019:3:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 21033,
                                  "name": "endDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24566,
                                  "src": "5025:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5019:13:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21035,
                              "nodeType": "ExpressionStatement",
                              "src": "5019:13:78"
                            }
                          ]
                        }
                      },
                      {
                        "body": {
                          "id": 21096,
                          "nodeType": "Block",
                          "src": "5349:315:78",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 21069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 21057,
                                  "name": "stake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21022,
                                  "src": "5391:5:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 21061,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 45182,
                                          "src": "5439:4:78",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                            "typeString": "contract VestingLogic"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                            "typeString": "contract VestingLogic"
                                          }
                                        ],
                                        "id": 21060,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "5431:7:78",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 21062,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5431:13:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 21063,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21045,
                                      "src": "5446:1:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 21067,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 21064,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44984,
                                          "src": "5449:5:78",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 21065,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "number",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "5449:12:78",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 21066,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5464:1:78",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "5449:16:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21058,
                                      "name": "staking",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24554,
                                      "src": "5399:7:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Staking_$15557",
                                        "typeString": "contract Staking"
                                      }
                                    },
                                    "id": 21059,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getPriorUserStakeByDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16351,
                                    "src": "5399:31:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                                      "typeString": "function (address,uint256,uint256) view external returns (uint96)"
                                    }
                                  },
                                  "id": 21068,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5399:67:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "5391:75:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 21070,
                              "nodeType": "ExpressionStatement",
                              "src": "5391:75:78"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "id": 21073,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 21071,
                                  "name": "stake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21022,
                                  "src": "5504:5:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 21072,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5512:1:78",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5504:9:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 21095,
                              "nodeType": "IfStatement",
                              "src": "5500:160:78",
                              "trueBody": {
                                "id": 21094,
                                "nodeType": "Block",
                                "src": "5515:145:78",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "id": 21074,
                                      "name": "isGovernance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21009,
                                      "src": "5525:12:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 21092,
                                      "nodeType": "Block",
                                      "src": "5605:50:78",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 21087,
                                                "name": "stake",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 21022,
                                                "src": "5629:5:78",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 21088,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 21045,
                                                "src": "5636:1:78",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 21089,
                                                "name": "receiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 21007,
                                                "src": "5639:8:78",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 21084,
                                                "name": "staking",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 24554,
                                                "src": "5612:7:78",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_Staking_$15557",
                                                  "typeString": "contract Staking"
                                                }
                                              },
                                              "id": 21086,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "withdraw",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 14519,
                                              "src": "5612:16:78",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_uint96_$_t_uint256_$_t_address_$returns$__$",
                                                "typeString": "function (uint96,uint256,address) external"
                                              }
                                            },
                                            "id": 21090,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5612:36:78",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 21091,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5612:36:78"
                                        }
                                      ]
                                    },
                                    "id": 21093,
                                    "nodeType": "IfStatement",
                                    "src": "5521:134:78",
                                    "trueBody": {
                                      "id": 21083,
                                      "nodeType": "Block",
                                      "src": "5539:60:78",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 21078,
                                                "name": "stake",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 21022,
                                                "src": "5573:5:78",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 21079,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 21045,
                                                "src": "5580:1:78",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 21080,
                                                "name": "receiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 21007,
                                                "src": "5583:8:78",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 21075,
                                                "name": "staking",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 24554,
                                                "src": "5546:7:78",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_Staking_$15557",
                                                  "typeString": "contract Staking"
                                                }
                                              },
                                              "id": 21077,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "governanceWithdraw",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 14551,
                                              "src": "5546:26:78",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_uint96_$_t_uint256_$_t_address_$returns$__$",
                                                "typeString": "function (uint96,uint256,address) external"
                                              }
                                            },
                                            "id": 21081,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5546:46:78",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 21082,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5546:46:78"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 21050,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21045,
                            "src": "5322:1:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 21051,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21025,
                            "src": "5327:3:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5322:8:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21097,
                        "initializationExpression": {
                          "assignments": [
                            21045
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 21045,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 21097,
                              "src": "5291:9:78",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 21044,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5291:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 21049,
                          "initialValue": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21048,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 21046,
                              "name": "startDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24564,
                              "src": "5303:9:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 21047,
                              "name": "cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24560,
                              "src": "5315:5:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5303:17:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5291:29:78"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 21055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 21053,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21045,
                              "src": "5332:1:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 21054,
                              "name": "FOUR_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24569,
                              "src": "5337:10:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5332:15:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21056,
                          "nodeType": "ExpressionStatement",
                          "src": "5332:15:78"
                        },
                        "nodeType": "ForStatement",
                        "src": "5286:378:78"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21099,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "5689:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 21100,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5689:10:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21101,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21007,
                              "src": "5701:8:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 21098,
                            "name": "TokensWithdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20783,
                            "src": "5673:15:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 21102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5673:37:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21103,
                        "nodeType": "EmitStatement",
                        "src": "5668:42:78"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraws tokens from the staking contract and forwards them\nto an address specified by the token owner. Low level function.\n@dev Once here the caller permission is taken for granted.\n@param receiver The receiving address.\n@param isGovernance Whether all tokens (true)\nor just unlocked tokens (false).\n",
                  "id": 21105,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_withdrawTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21010,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21007,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 21105,
                        "src": "4633:16:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21006,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4633:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21009,
                        "name": "isGovernance",
                        "nodeType": "VariableDeclaration",
                        "scope": 21105,
                        "src": "4651:17:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21008,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4651:4:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4632:37:78"
                  },
                  "returnParameters": {
                    "id": 21011,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4679:0:78"
                  },
                  "scope": 21207,
                  "src": "4608:1106:78",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21141,
                    "nodeType": "Block",
                    "src": "6090:267:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21121,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21117,
                                "name": "_receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21111,
                                "src": "6102:9:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21119,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6123:1:78",
                                    "subdenomination": null,
                                    "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": 21118,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6115:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 21120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6115:10:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6102:23:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7265636569766572206164647265737320696e76616c6964",
                              "id": 21122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6127:26:78",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              },
                              "value": "receiver address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              }
                            ],
                            "id": 21116,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6094:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6094:60:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21124,
                        "nodeType": "ExpressionStatement",
                        "src": "6094:60:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21128,
                              "name": "_loanPoolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21107,
                              "src": "6226:14:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21129,
                              "name": "_maxCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21109,
                              "src": "6242:15:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21130,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21111,
                              "src": "6259:9:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21125,
                              "name": "feeSharingProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24558,
                              "src": "6201:15:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                                "typeString": "contract IFeeSharingProxy"
                              }
                            },
                            "id": 21127,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13111,
                            "src": "6201:24:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint32_$_t_address_$returns$__$",
                              "typeString": "function (address,uint32,address) external"
                            }
                          },
                          "id": 21131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6201:68:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21132,
                        "nodeType": "ExpressionStatement",
                        "src": "6201:68:78"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21134,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6298:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 21135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6298:10:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21136,
                              "name": "_loanPoolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21107,
                              "src": "6310:14:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21137,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21111,
                              "src": "6326:9:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21138,
                              "name": "_maxCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21109,
                              "src": "6337:15:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 21133,
                            "name": "DividendsCollected",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20793,
                            "src": "6279:18:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint32_$returns$__$",
                              "typeString": "function (address,address,address,uint32)"
                            }
                          },
                          "id": 21139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6279:74:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21140,
                        "nodeType": "EmitStatement",
                        "src": "6274:79:78"
                      }
                    ]
                  },
                  "documentation": "@notice Collect dividends from fee sharing proxy.\n@param _loanPoolToken The loan pool token address.\n@param _maxCheckpoints Maximum number of checkpoints to be processed.\n@param _receiver The receiver of tokens or msg.sender\n",
                  "id": 21142,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21114,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21113,
                        "name": "onlyOwners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20814,
                        "src": "6079:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6079:10:78"
                    }
                  ],
                  "name": "collectDividends",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21112,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21107,
                        "name": "_loanPoolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 21142,
                        "src": "5999:22:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21106,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5999:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21109,
                        "name": "_maxCheckpoints",
                        "nodeType": "VariableDeclaration",
                        "scope": 21142,
                        "src": "6025:22:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 21108,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6025:6:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21111,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 21142,
                        "src": "6051:17:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21110,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6051:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5995:76:78"
                  },
                  "returnParameters": {
                    "id": 21115,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6090:0:78"
                  },
                  "scope": 21207,
                  "src": "5970:387:78",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21168,
                    "nodeType": "Block",
                    "src": "6515:163:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21147,
                              "name": "staking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24554,
                              "src": "6519:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Staking_$15557",
                                "typeString": "contract Staking"
                              }
                            },
                            "id": 21149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "migrateToNewStakingContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15387,
                            "src": "6519:35:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                              "typeString": "function () external"
                            }
                          },
                          "id": 21150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6519:37:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21151,
                        "nodeType": "ExpressionStatement",
                        "src": "6519:37:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21152,
                            "name": "staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24554,
                            "src": "6560:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Staking_$15557",
                              "typeString": "contract Staking"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21154,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24554,
                                    "src": "6578:7:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Staking_$15557",
                                      "typeString": "contract Staking"
                                    }
                                  },
                                  "id": 21155,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "newStakingContract",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15646,
                                  "src": "6578:26:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 21156,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6578:28:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 21153,
                              "name": "Staking",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15557,
                              "src": "6570:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Staking_$15557_$",
                                "typeString": "type(contract Staking)"
                              }
                            },
                            "id": 21157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6570:37:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Staking_$15557",
                              "typeString": "contract Staking"
                            }
                          },
                          "src": "6560:47:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Staking_$15557",
                            "typeString": "contract Staking"
                          }
                        },
                        "id": 21159,
                        "nodeType": "ExpressionStatement",
                        "src": "6560:47:78"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21161,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6645:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 21162,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6645:10:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21164,
                                  "name": "staking",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24554,
                                  "src": "6665:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Staking_$15557",
                                    "typeString": "contract Staking"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Staking_$15557",
                                    "typeString": "contract Staking"
                                  }
                                ],
                                "id": 21163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6657:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 21165,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6657:16:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 21160,
                            "name": "MigratedToNewStakingContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20799,
                            "src": "6616:28:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 21166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6616:58:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21167,
                        "nodeType": "EmitStatement",
                        "src": "6611:63:78"
                      }
                    ]
                  },
                  "documentation": "@notice Allows the owners to migrate the positions\nto a new staking contract.\n",
                  "id": 21169,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21145,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21144,
                        "name": "onlyOwners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20814,
                        "src": "6504:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6504:10:78"
                    }
                  ],
                  "name": "migrateToNewStakingContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21143,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6494:2:78"
                  },
                  "returnParameters": {
                    "id": 21146,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6515:0:78"
                  },
                  "scope": 21207,
                  "src": "6458:220:78",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21178,
                    "nodeType": "Block",
                    "src": "6894:27:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21175,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24552,
                              "src": "6913:3:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "id": 21174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6905:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 21176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6905:12:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 21173,
                        "id": 21177,
                        "nodeType": "Return",
                        "src": "6898:19:78"
                      }
                    ]
                  },
                  "documentation": "@notice Overrides default ApprovalReceiver._getToken function to\nregister SOV token on this contract.\n@return The address of SOV token.\n",
                  "id": 21179,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21170,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6859:2:78"
                  },
                  "returnParameters": {
                    "id": 21173,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21172,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 21179,
                        "src": "6885:7:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21171,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6885:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6884:9:78"
                  },
                  "scope": 21207,
                  "src": "6841:80:78",
                  "stateMutability": "view",
                  "superFunction": 10639,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21205,
                    "nodeType": "Block",
                    "src": "7202:127:78",
                    "statements": [
                      {
                        "assignments": [
                          21188
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21188,
                            "name": "selectors",
                            "nodeType": "VariableDeclaration",
                            "scope": 21205,
                            "src": "7206:25:78",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                              "typeString": "bytes4[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 21186,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "7206:6:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 21187,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "7206:8:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21194,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 21192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7247:1:78",
                              "subdenomination": null,
                              "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": 21191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "7234:12:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (bytes4[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 21189,
                                "name": "bytes4",
                                "nodeType": "ElementaryTypeName",
                                "src": "7238:6:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 21190,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "7238:8:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                "typeString": "bytes4[]"
                              }
                            }
                          },
                          "id": 21193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7234:15:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7206:43:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21195,
                              "name": "selectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21188,
                              "src": "7253:9:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                "typeString": "bytes4[] memory"
                              }
                            },
                            "id": 21197,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 21196,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7263:1:78",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7253:12:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21198,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45182,
                                "src": "7268:4:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                  "typeString": "contract VestingLogic"
                                }
                              },
                              "id": 21199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakeTokensWithApproval",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20853,
                              "src": "7268:28:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                "typeString": "function (address,uint256) external"
                              }
                            },
                            "id": 21200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7268:37:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "7253:52:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 21202,
                        "nodeType": "ExpressionStatement",
                        "src": "7253:52:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21203,
                          "name": "selectors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21188,
                          "src": "7316:9:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                            "typeString": "bytes4[] memory"
                          }
                        },
                        "functionReturnParameters": 21184,
                        "id": 21204,
                        "nodeType": "Return",
                        "src": "7309:16:78"
                      }
                    ]
                  },
                  "documentation": "@notice Overrides default ApprovalReceiver._getSelectors function to\nregister stakeTokensWithApproval selector on this contract.\n@return The array of registered selectors on this contract.\n",
                  "id": 21206,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getSelectors",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21180,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7159:2:78"
                  },
                  "returnParameters": {
                    "id": 21184,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21183,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 21206,
                        "src": "7185:15:78",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                          "typeString": "bytes4[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 21181,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "7185:6:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 21182,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7185:8:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7184:17:78"
                  },
                  "scope": 21207,
                  "src": "7137:192:78",
                  "stateMutability": "view",
                  "superFunction": 10652,
                  "visibility": "internal"
                }
              ],
              "scope": 21208,
              "src": "449:6882:78"
            }
          ],
          "src": "0:7332:78"
        },
        "id": 78
      },
      "contracts/governance/Vesting/VestingRegistry.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/VestingRegistry.sol",
          "exportedSymbols": {
            "VestingRegistry": [
              22218
            ]
          },
          "id": 22219,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 21209,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:79"
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../../openzeppelin/Ownable.sol",
              "id": 21210,
              "nodeType": "ImportDirective",
              "scope": 22219,
              "sourceUnit": 41799,
              "src": "26:40:79",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 21211,
              "nodeType": "ImportDirective",
              "scope": 22219,
              "sourceUnit": 24700,
              "src": "67:37:79",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/IStaking.sol",
              "file": "../Staking/IStaking.sol",
              "id": 21212,
              "nodeType": "ImportDirective",
              "scope": 22219,
              "sourceUnit": 13774,
              "src": "105:33:79",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/IFeeSharingProxy.sol",
              "file": "../IFeeSharingProxy.sol",
              "id": 21213,
              "nodeType": "ImportDirective",
              "scope": 22219,
              "sourceUnit": 13113,
              "src": "139:33:79",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/IVestingFactory.sol",
              "file": "./IVestingFactory.sol",
              "id": 21214,
              "nodeType": "ImportDirective",
              "scope": 22219,
              "sourceUnit": 18639,
              "src": "173:31:79",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/IVesting.sol",
              "file": "./IVesting.sol",
              "id": 21215,
              "nodeType": "ImportDirective",
              "scope": 22219,
              "sourceUnit": 18598,
              "src": "205:24:79",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/ITeamVesting.sol",
              "file": "./ITeamVesting.sol",
              "id": 21216,
              "nodeType": "ImportDirective",
              "scope": 22219,
              "sourceUnit": 18580,
              "src": "230:28:79",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../../openzeppelin/SafeMath.sol",
              "id": 21217,
              "nodeType": "ImportDirective",
              "scope": 22219,
              "sourceUnit": 42310,
              "src": "259:41:79",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 21218,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "1222:7:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 21219,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1222:7:79"
                }
              ],
              "contractDependencies": [
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Vesting Registry contract.\n * @notice On January 25, 2020, Sovryn launched the Genesis Reservation system.\nSovryn community members who controlled a special NFT were granted access to\nstake BTC or rBTC for cSOV tokens at a rate of 2500 satoshis per cSOV. Per\nSIP-0003, up to 2,000,000 cSOV were made available in the Genesis event,\nwhich will be redeemable on a 1:1 basis for cSOV, subject to approval by\nexisting SOV holders.\n * On 15 Feb 2021 Sovryn is taking another step in its journey to decentralized\nfinancial sovereignty with the vote on SIP 0005. This proposal will enable\nparticipants of the Genesis Reservation system to redeem their reserved cSOV\ntokens for SOV. They will also have the choice to redeem cSOV for rBTC if\nthey decide to exit the system.\n * This contract deals with the vesting and redemption of cSOV tokens.\n",
              "fullyImplemented": true,
              "id": 22218,
              "linearizedBaseContracts": [
                22218,
                41798,
                41125
              ],
              "name": "VestingRegistry",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 21222,
                  "libraryName": {
                    "contractScope": null,
                    "id": 21220,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "1239:8:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1233:27:79",
                  "typeName": {
                    "id": 21221,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1252:7:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 21225,
                  "name": "FOUR_WEEKS",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "1339:44:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21223,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1339:7:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "34",
                    "id": 21224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1376:7:79",
                    "subdenomination": "weeks",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2419200_by_1",
                      "typeString": "int_const 2419200"
                    },
                    "value": "4"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 21228,
                  "name": "CSOV_VESTING_CLIFF",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "1387:55:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21226,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1387:7:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "id": 21227,
                    "name": "FOUR_WEEKS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 21225,
                    "src": "1432:10:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 21233,
                  "name": "CSOV_VESTING_DURATION",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "1445:63:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21229,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1445:7:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 21230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1493:2:79",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 21231,
                      "name": "FOUR_WEEKS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21225,
                      "src": "1498:10:79",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1493:15:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 21235,
                  "name": "vestingFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "1512:37:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                    "typeString": "contract IVestingFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21234,
                    "name": "IVestingFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18638,
                    "src": "1512:15:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                      "typeString": "contract IVestingFactory"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 21237,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "1590:18:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21236,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1590:7:79",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 21240,
                  "name": "CSOVtokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "1651:27:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 21238,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1651:7:79",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 21239,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1651:9:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 21242,
                  "name": "priceSats",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "1682:24:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21241,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1682:7:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 21244,
                  "name": "staking",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "1753:22:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21243,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1753:7:79",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 21246,
                  "name": "feeSharingProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "1811:30:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21245,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1811:7:79",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 21248,
                  "name": "vestingOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "1912:27:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21247,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1912:7:79",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 21254,
                  "name": "vestingContracts",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "2085:71:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                    "typeString": "mapping(address => mapping(uint256 => address))"
                  },
                  "typeName": {
                    "id": 21253,
                    "keyType": {
                      "id": 21249,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2093:7:79",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2085:47:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                      "typeString": "mapping(address => mapping(uint256 => address))"
                    },
                    "valueType": {
                      "id": 21252,
                      "keyType": {
                        "id": 21250,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2112:7:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2104:27:79",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      },
                      "valueType": {
                        "id": 21251,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2123:7:79",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 21258,
                  "name": "processedList",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "2423:45:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 21257,
                    "keyType": {
                      "id": 21255,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2431:7:79",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2423:24:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 21256,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2442:4:79",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 21262,
                  "name": "blacklist",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "2552:41:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 21261,
                    "keyType": {
                      "id": 21259,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2560:7:79",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2552:24:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 21260,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2571:4:79",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 21266,
                  "name": "lockedAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "2657:47:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 21265,
                    "keyType": {
                      "id": 21263,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2665:7:79",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2657:27:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 21264,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2676:7:79",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 21270,
                  "name": "admins",
                  "nodeType": "VariableDeclaration",
                  "scope": 22218,
                  "src": "2760:38:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 21269,
                    "keyType": {
                      "id": 21267,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2768:7:79",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2760:24:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 21268,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2779:4:79",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "canonicalName": "VestingRegistry.VestingType",
                  "id": 21273,
                  "members": [
                    {
                      "id": 21271,
                      "name": "TeamVesting",
                      "nodeType": "EnumValue",
                      "src": "2823:11:79"
                    },
                    {
                      "id": 21272,
                      "name": "Vesting",
                      "nodeType": "EnumValue",
                      "src": "2857:7:79"
                    }
                  ],
                  "name": "VestingType",
                  "nodeType": "EnumDefinition",
                  "src": "2802:87:79"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 21281,
                  "name": "CSOVReImburse",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 21280,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21275,
                        "indexed": false,
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 21281,
                        "src": "2927:12:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21274,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2927:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21277,
                        "indexed": false,
                        "name": "CSOVamount",
                        "nodeType": "VariableDeclaration",
                        "scope": 21281,
                        "src": "2941:18:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21276,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2941:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21279,
                        "indexed": false,
                        "name": "reImburseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 21281,
                        "src": "2961:23:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21278,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2961:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2926:59:79"
                  },
                  "src": "2907:79:79"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 21287,
                  "name": "CSOVTokensExchanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 21286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21283,
                        "indexed": true,
                        "name": "caller",
                        "nodeType": "VariableDeclaration",
                        "scope": 21287,
                        "src": "3014:22:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21282,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3014:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21285,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 21287,
                        "src": "3038:14:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21284,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3038:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3013:40:79"
                  },
                  "src": "2988:66:79"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 21293,
                  "name": "SOVTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 21292,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21289,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 21293,
                        "src": "3077:24:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21288,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3077:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21291,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 21293,
                        "src": "3103:14:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21290,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3103:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3076:42:79"
                  },
                  "src": "3056:63:79"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 21305,
                  "name": "VestingCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 21304,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21295,
                        "indexed": true,
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 21305,
                        "src": "3142:26:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21294,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3142:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21297,
                        "indexed": false,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 21305,
                        "src": "3170:15:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21296,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3170:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21299,
                        "indexed": false,
                        "name": "cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 21305,
                        "src": "3187:13:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21298,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3187:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21301,
                        "indexed": false,
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 21305,
                        "src": "3202:16:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21300,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3202:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21303,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 21305,
                        "src": "3220:14:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21302,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3220:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3141:94:79"
                  },
                  "src": "3121:115:79"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 21317,
                  "name": "TeamVestingCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 21316,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21307,
                        "indexed": true,
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 21317,
                        "src": "3263:26:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21306,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3263:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21309,
                        "indexed": false,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 21317,
                        "src": "3291:15:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21308,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3291:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21311,
                        "indexed": false,
                        "name": "cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 21317,
                        "src": "3308:13:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21310,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3308:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21313,
                        "indexed": false,
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 21317,
                        "src": "3323:16:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21312,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3323:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21315,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 21317,
                        "src": "3341:14:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21314,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3341:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3262:94:79"
                  },
                  "src": "3238:119:79"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 21323,
                  "name": "TokensStaked",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 21322,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21319,
                        "indexed": true,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 21323,
                        "src": "3378:23:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21318,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3378:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21321,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 21323,
                        "src": "3403:14:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21320,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3403:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3377:41:79"
                  },
                  "src": "3359:60:79"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 21327,
                  "name": "AdminAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 21326,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21325,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 21327,
                        "src": "3438:13:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21324,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3438:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3437:15:79"
                  },
                  "src": "3421:32:79"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 21331,
                  "name": "AdminRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 21330,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21329,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 21331,
                        "src": "3474:13:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21328,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3474:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3473:15:79"
                  },
                  "src": "3455:34:79"
                },
                {
                  "body": {
                    "id": 21413,
                    "nodeType": "Block",
                    "src": "4602:474:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21350,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21335,
                                "src": "4614:4:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21352,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4630:1:79",
                                    "subdenomination": null,
                                    "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": 21351,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4622:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 21353,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4622:10:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4614:18:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "534f56206164647265737320696e76616c6964",
                              "id": 21355,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4634:21:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              },
                              "value": "SOV address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              }
                            ],
                            "id": 21349,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4606:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4606:50:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21357,
                        "nodeType": "ExpressionStatement",
                        "src": "4606:50:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21359,
                                "name": "_staking",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21342,
                                "src": "4668:8:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21361,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4688:1:79",
                                    "subdenomination": null,
                                    "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": 21360,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4680:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 21362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4680:10:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4668:22:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7374616b696e67206164647265737320696e76616c6964",
                              "id": 21364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4692:25:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dad5f662c3fef12349ee5cce4e61e29872181081c3701c492f86e4a0edbc8478",
                                "typeString": "literal_string \"staking address invalid\""
                              },
                              "value": "staking address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dad5f662c3fef12349ee5cce4e61e29872181081c3701c492f86e4a0edbc8478",
                                "typeString": "literal_string \"staking address invalid\""
                              }
                            ],
                            "id": 21358,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4660:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4660:58:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21366,
                        "nodeType": "ExpressionStatement",
                        "src": "4660:58:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21368,
                                "name": "_feeSharingProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21344,
                                "src": "4730:16:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21370,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4758:1:79",
                                    "subdenomination": null,
                                    "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": 21369,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4750:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 21371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4750:10:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4730:30:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66656553686172696e6750726f7879206164647265737320696e76616c6964",
                              "id": 21373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4762:33:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c10cbcafb5aa87027ea5ae59f7021a70ed9eaf13f3cc1fd382043183365fd95b",
                                "typeString": "literal_string \"feeSharingProxy address invalid\""
                              },
                              "value": "feeSharingProxy address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c10cbcafb5aa87027ea5ae59f7021a70ed9eaf13f3cc1fd382043183365fd95b",
                                "typeString": "literal_string \"feeSharingProxy address invalid\""
                              }
                            ],
                            "id": 21367,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4722:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4722:74:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21375,
                        "nodeType": "ExpressionStatement",
                        "src": "4722:74:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21381,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21377,
                                "name": "_vestingOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21346,
                                "src": "4808:13:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21379,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4833:1:79",
                                    "subdenomination": null,
                                    "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": 21378,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4825:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 21380,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4825:10:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4808:27:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76657374696e674f776e6572206164647265737320696e76616c6964",
                              "id": 21382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4837:30:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_598ae3ed2d682ddf536de8d8e8c428d9f03a35b481b508f2312a3aa5c981fa0a",
                                "typeString": "literal_string \"vestingOwner address invalid\""
                              },
                              "value": "vestingOwner address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_598ae3ed2d682ddf536de8d8e8c428d9f03a35b481b508f2312a3aa5c981fa0a",
                                "typeString": "literal_string \"vestingOwner address invalid\""
                              }
                            ],
                            "id": 21376,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4800:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4800:68:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21384,
                        "nodeType": "ExpressionStatement",
                        "src": "4800:68:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21386,
                              "name": "_vestingFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21333,
                              "src": "4892:15:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 21385,
                            "name": "_setVestingFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21670,
                            "src": "4873:18:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 21387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4873:35:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21388,
                        "nodeType": "ExpressionStatement",
                        "src": "4873:35:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21390,
                              "name": "_CSOVtokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21338,
                              "src": "4927:11:79",
                              "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": 21389,
                            "name": "_setCSOVtokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21718,
                            "src": "4912:14:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory)"
                            }
                          },
                          "id": 21391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4912:27:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21392,
                        "nodeType": "ExpressionStatement",
                        "src": "4912:27:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21393,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21237,
                            "src": "4944:3:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21394,
                            "name": "_SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21335,
                            "src": "4950:4:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4944:10:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21396,
                        "nodeType": "ExpressionStatement",
                        "src": "4944:10:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21397,
                            "name": "priceSats",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21242,
                            "src": "4958:9:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21398,
                            "name": "_priceSats",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21340,
                            "src": "4970:10:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4958:22:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21400,
                        "nodeType": "ExpressionStatement",
                        "src": "4958:22:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21401,
                            "name": "staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21244,
                            "src": "4984:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21402,
                            "name": "_staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21342,
                            "src": "4994:8:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4984:18:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21404,
                        "nodeType": "ExpressionStatement",
                        "src": "4984:18:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21405,
                            "name": "feeSharingProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21246,
                            "src": "5006:15:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21406,
                            "name": "_feeSharingProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21344,
                            "src": "5024:16:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5006:34:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21408,
                        "nodeType": "ExpressionStatement",
                        "src": "5006:34:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21409,
                            "name": "vestingOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21248,
                            "src": "5044:12:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21410,
                            "name": "_vestingOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21346,
                            "src": "5059:13:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5044:28:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21412,
                        "nodeType": "ExpressionStatement",
                        "src": "5044:28:79"
                      }
                    ]
                  },
                  "documentation": "@notice Contract deployment settings.\n@param _vestingFactory The address of vesting factory contract.\n@param _SOV The SOV token address.\n@param _CSOVtokens The array of cSOV tokens.\n@param _priceSats The price of cSOV tokens in satoshis.\n@param _staking The address of staking contract.\n@param _feeSharingProxy The address of fee sharing proxy contract.\n@param _vestingOwner The address of an owner of vesting contract.\n@dev On Sovryn the vesting owner is Exchequer Multisig.\nAccording to SIP-0007 The Exchequer Multisig is designated to hold\ncertain funds in the form of rBTC and SOV, in order to allow for\nflexible deployment of such funds on:\n + facilitating rBTC redemptions for Genesis pre-sale participants.\n + deploying of SOV for the purposes of exchange listings, market\n   making, and partnerships with third parties.\n",
                  "id": 21414,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21347,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21333,
                        "name": "_vestingFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 21414,
                        "src": "4425:23:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21332,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4425:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21335,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 21414,
                        "src": "4452:12:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21334,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4452:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21338,
                        "name": "_CSOVtokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 21414,
                        "src": "4468:28:79",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 21336,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4468:7:79",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 21337,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4468:9:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21340,
                        "name": "_priceSats",
                        "nodeType": "VariableDeclaration",
                        "scope": 21414,
                        "src": "4500:18:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21339,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4500:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21342,
                        "name": "_staking",
                        "nodeType": "VariableDeclaration",
                        "scope": 21414,
                        "src": "4522:16:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21341,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4522:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21344,
                        "name": "_feeSharingProxy",
                        "nodeType": "VariableDeclaration",
                        "scope": 21414,
                        "src": "4542:24:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21343,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4542:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21346,
                        "name": "_vestingOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 21414,
                        "src": "4570:21:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21345,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4570:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4421:173:79"
                  },
                  "returnParameters": {
                    "id": 21348,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4602:0:79"
                  },
                  "scope": 22218,
                  "src": "4410:666:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21428,
                    "nodeType": "Block",
                    "src": "5484:69:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21423,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 21417,
                                  "name": "isOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41761,
                                  "src": "5496:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 21418,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5496:9:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 21419,
                                  "name": "admins",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21270,
                                  "src": "5509:6:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 21422,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21420,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "5516:3:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 21421,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5516:10:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5509:18:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5496:31:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 21424,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5529:14:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 21416,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5488:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5488:56:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21426,
                        "nodeType": "ExpressionStatement",
                        "src": "5488:56:79"
                      },
                      {
                        "id": 21427,
                        "nodeType": "PlaceholderStatement",
                        "src": "5548:1:79"
                      }
                    ]
                  },
                  "documentation": "@dev Throws if called by any account other than the owner or admin.\nTODO: This ACL logic should be available on OpenZeppeling Ownable.sol\nor on our own overriding sovrynOwnable. This same logic is repeated\non OriginInvestorsClaim.sol, TokenSender.sol and VestingRegistry2.sol",
                  "id": 21429,
                  "name": "onlyAuthorized",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 21415,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5481:2:79"
                  },
                  "src": "5458:95:79",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21446,
                    "nodeType": "Block",
                    "src": "5720:56:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21436,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21270,
                              "src": "5724:6:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 21438,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 21437,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21431,
                              "src": "5731:6:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5724:14:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 21439,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5741:4:79",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "5724:21:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21441,
                        "nodeType": "ExpressionStatement",
                        "src": "5724:21:79"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21443,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21431,
                              "src": "5765:6:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 21442,
                            "name": "AdminAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21327,
                            "src": "5754:10:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 21444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5754:18:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21445,
                        "nodeType": "EmitStatement",
                        "src": "5749:23:79"
                      }
                    ]
                  },
                  "documentation": "@notice Add account to ACL.\n@param _admin The addresses of the account to grant permissions.\n",
                  "id": 21447,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21434,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21433,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "5710:9:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5710:9:79"
                    }
                  ],
                  "name": "addAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21432,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21431,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 21447,
                        "src": "5687:14:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21430,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5687:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5686:16:79"
                  },
                  "returnParameters": {
                    "id": 21435,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5720:0:79"
                  },
                  "scope": 22218,
                  "src": "5669:107:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21464,
                    "nodeType": "Block",
                    "src": "5952:59:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21454,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21270,
                              "src": "5956:6:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 21456,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 21455,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21449,
                              "src": "5963:6:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5956:14:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 21457,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5973:5:79",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "5956:22:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21459,
                        "nodeType": "ExpressionStatement",
                        "src": "5956:22:79"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21461,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21449,
                              "src": "6000:6:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 21460,
                            "name": "AdminRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21331,
                            "src": "5987:12:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 21462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5987:20:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21463,
                        "nodeType": "EmitStatement",
                        "src": "5982:25:79"
                      }
                    ]
                  },
                  "documentation": "@notice Remove account from ACL.\n@param _admin The addresses of the account to revoke permissions.\n",
                  "id": 21465,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21452,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21451,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "5942:9:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5942:9:79"
                    }
                  ],
                  "name": "removeAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21450,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21449,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 21465,
                        "src": "5919:14:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21448,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5919:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5918:16:79"
                  },
                  "returnParameters": {
                    "id": 21453,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5952:0:79"
                  },
                  "scope": 22218,
                  "src": "5898:113:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21477,
                    "nodeType": "Block",
                    "src": "6118:85:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "6130:26:79",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 21468,
                                  "name": "processedList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21258,
                                  "src": "6131:13:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 21471,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21469,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "6145:3:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 21470,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6145:10:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6131:25:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416464726573732063616e6e6f742062652070726f636573736564207477696365",
                              "id": 21473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6158:35:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2b21463c7aebd5f1ed1e5ea8865bcdd4757605fbce82da71f3f46644d4359a80",
                                "typeString": "literal_string \"Address cannot be processed twice\""
                              },
                              "value": "Address cannot be processed twice"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2b21463c7aebd5f1ed1e5ea8865bcdd4757605fbce82da71f3f46644d4359a80",
                                "typeString": "literal_string \"Address cannot be processed twice\""
                              }
                            ],
                            "id": 21467,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6122:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6122:72:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21475,
                        "nodeType": "ExpressionStatement",
                        "src": "6122:72:79"
                      },
                      {
                        "id": 21476,
                        "nodeType": "PlaceholderStatement",
                        "src": "6198:1:79"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 21478,
                  "name": "isNotProcessed",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 21466,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6115:2:79"
                  },
                  "src": "6092:111:79",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21490,
                    "nodeType": "Block",
                    "src": "6234:67:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "6246:22:79",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 21481,
                                  "name": "blacklist",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21262,
                                  "src": "6247:9:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 21484,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21482,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "6257:3:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 21483,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6257:10:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6247:21:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4164647265737320626c61636b6c6973746564",
                              "id": 21486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6270:21:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6d54ff89c38bd80dce3de6c88eb9ac19e1cc5e389cfd046cf899f029f448cf93",
                                "typeString": "literal_string \"Address blacklisted\""
                              },
                              "value": "Address blacklisted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6d54ff89c38bd80dce3de6c88eb9ac19e1cc5e389cfd046cf899f029f448cf93",
                                "typeString": "literal_string \"Address blacklisted\""
                              }
                            ],
                            "id": 21480,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6238:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6238:54:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21488,
                        "nodeType": "ExpressionStatement",
                        "src": "6238:54:79"
                      },
                      {
                        "id": 21489,
                        "nodeType": "PlaceholderStatement",
                        "src": "6296:1:79"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 21491,
                  "name": "isNotBlacklisted",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 21479,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6231:2:79"
                  },
                  "src": "6206:95:79",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21600,
                    "nodeType": "Block",
                    "src": "6595:986:79",
                    "statements": [
                      {
                        "assignments": [
                          21499
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21499,
                            "name": "CSOVAmountWei",
                            "nodeType": "VariableDeclaration",
                            "scope": 21600,
                            "src": "6599:21:79",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21498,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6599:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21501,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 21500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6623:1:79",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6599:25:79"
                      },
                      {
                        "body": {
                          "id": 21536,
                          "nodeType": "Block",
                          "src": "6676:142:79",
                          "statements": [
                            {
                              "assignments": [
                                21514
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 21514,
                                  "name": "CSOV",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 21536,
                                  "src": "6681:12:79",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 21513,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6681:7:79",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 21518,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 21515,
                                  "name": "CSOVtokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21240,
                                  "src": "6696:10:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                    "typeString": "address[] storage ref"
                                  }
                                },
                                "id": 21517,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 21516,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21503,
                                  "src": "6707:1:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6696:13:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6681:28:79"
                            },
                            {
                              "assignments": [
                                21520
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 21520,
                                  "name": "balance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 21536,
                                  "src": "6714:15:79",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 21519,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6714:7:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 21528,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21525,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "6755:3:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 21526,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6755:10:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 21522,
                                        "name": "CSOV",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21514,
                                        "src": "6739:4:79",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 21521,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24699,
                                      "src": "6732:6:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 21523,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6732:12:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 21524,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 24644,
                                  "src": "6732:22:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 21527,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6732:34:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6714:52:79"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 21534,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 21529,
                                  "name": "CSOVAmountWei",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21499,
                                  "src": "6771:13:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 21532,
                                      "name": "balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21520,
                                      "src": "6805:7:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21530,
                                      "name": "CSOVAmountWei",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21499,
                                      "src": "6787:13:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 21531,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "6787:17:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 21533,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6787:26:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6771:42:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21535,
                              "nodeType": "ExpressionStatement",
                              "src": "6771:42:79"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 21506,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21503,
                            "src": "6648:1:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21507,
                              "name": "CSOVtokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21240,
                              "src": "6652:10:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 21508,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6652:17:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6648:21:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21537,
                        "initializationExpression": {
                          "assignments": [
                            21503
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 21503,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 21537,
                              "src": "6633:9:79",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 21502,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6633:7:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 21505,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 21504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6645:1:79",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6633:13:79"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 21511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "6671:3:79",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 21510,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21503,
                              "src": "6671:1:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21512,
                          "nodeType": "ExpressionStatement",
                          "src": "6671:3:79"
                        },
                        "nodeType": "ForStatement",
                        "src": "6628:190:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21544,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21539,
                                "name": "CSOVAmountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21499,
                                "src": "6830:13:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 21540,
                                  "name": "lockedAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21266,
                                  "src": "6846:12:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 21543,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21541,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "6859:3:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 21542,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6859:10:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6846:24:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6830:40:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "686f6c64657220686173206e6f2043534f56",
                              "id": 21545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6872:20:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8fe2109ce2a2aaff223ab7b01e73a869d1bbec061534c003822e867d17ef4d14",
                                "typeString": "literal_string \"holder has no CSOV\""
                              },
                              "value": "holder has no CSOV"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8fe2109ce2a2aaff223ab7b01e73a869d1bbec061534c003822e867d17ef4d14",
                                "typeString": "literal_string \"holder has no CSOV\""
                              }
                            ],
                            "id": 21538,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6822:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6822:71:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21547,
                        "nodeType": "ExpressionStatement",
                        "src": "6822:71:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21548,
                            "name": "CSOVAmountWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21499,
                            "src": "6897:13:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21549,
                              "name": "lockedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21266,
                              "src": "6914:12:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 21552,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21550,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6927:3:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 21551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6927:10:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6914:24:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6897:41:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21554,
                        "nodeType": "ExpressionStatement",
                        "src": "6897:41:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21555,
                              "name": "processedList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21258,
                              "src": "6942:13:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 21558,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21556,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6956:3:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 21557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6956:10:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6942:25:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 21559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6970:4:79",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "6942:32:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21561,
                        "nodeType": "ExpressionStatement",
                        "src": "6942:32:79"
                      },
                      {
                        "assignments": [
                          21563
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21563,
                            "name": "reImburseAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 21600,
                            "src": "7317:23:79",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21562,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7317:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21574,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_100000000_by_1",
                                "typeString": "int_const 100000000"
                              },
                              "id": 21572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130",
                                "id": 21570,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7378:2:79",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 21571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7382:1:79",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "7378:5:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100000000_by_1",
                                "typeString": "int_const 100000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_100000000_by_1",
                                "typeString": "int_const 100000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 21566,
                                      "name": "priceSats",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21242,
                                      "src": "7362:9:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21564,
                                      "name": "CSOVAmountWei",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21499,
                                      "src": "7344:13:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 21565,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42153,
                                    "src": "7344:17:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 21567,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7344:28:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 21568,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7343:30:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 21569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "7343:34:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 21573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7343:41:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7317:67:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 21577,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45178,
                                      "src": "7404:4:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                        "typeString": "contract VestingRegistry"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                        "typeString": "contract VestingRegistry"
                                      }
                                    ],
                                    "id": 21576,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7396:7:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 21578,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7396:13:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 21579,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7396:21:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 21580,
                                "name": "reImburseAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21563,
                                "src": "7421:15:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7396:40:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4e6f7420656e6f7567682066756e647320746f207265696d6275727365",
                              "id": 21582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7438:31:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_25f717fa4951bf210d3f7b2166487459475e62ff0f73367559303206fadc199f",
                                "typeString": "literal_string \"Not enough funds to reimburse\""
                              },
                              "value": "Not enough funds to reimburse"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_25f717fa4951bf210d3f7b2166487459475e62ff0f73367559303206fadc199f",
                                "typeString": "literal_string \"Not enough funds to reimburse\""
                              }
                            ],
                            "id": 21575,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7388:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7388:82:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21584,
                        "nodeType": "ExpressionStatement",
                        "src": "7388:82:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21590,
                              "name": "reImburseAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21563,
                              "src": "7494:15:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21585,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "7474:3:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 21588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7474:10:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 21589,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7474:19:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 21591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7474:36:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21592,
                        "nodeType": "ExpressionStatement",
                        "src": "7474:36:79"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21594,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "7534:3:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 21595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7534:10:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21596,
                              "name": "CSOVAmountWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21499,
                              "src": "7546:13:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21597,
                              "name": "reImburseAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21563,
                              "src": "7561:15:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21593,
                            "name": "CSOVReImburse",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21281,
                            "src": "7520:13:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 21598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7520:57:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21599,
                        "nodeType": "EmitStatement",
                        "src": "7515:62:79"
                      }
                    ]
                  },
                  "documentation": "@notice cSOV payout to sender with rBTC currency.\n1.- Check holder cSOV balance by adding up every cSOV token balance.\n2.- ReImburse rBTC if funds available.\n3.- And store holder address in processedList.",
                  "id": 21601,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21494,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21493,
                        "name": "isNotProcessed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21478,
                        "src": "6563:14:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6563:14:79"
                    },
                    {
                      "arguments": null,
                      "id": 21496,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21495,
                        "name": "isNotBlacklisted",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21491,
                        "src": "6578:16:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6578:16:79"
                    }
                  ],
                  "name": "reImburse",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21492,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6553:2:79"
                  },
                  "returnParameters": {
                    "id": 21497,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6595:0:79"
                  },
                  "scope": 22218,
                  "src": "6535:1046:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21615,
                    "nodeType": "Block",
                    "src": "7727:67:79",
                    "statements": [
                      {
                        "assignments": [
                          21607
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21607,
                            "name": "SCBudget",
                            "nodeType": "VariableDeclaration",
                            "scope": 21615,
                            "src": "7731:16:79",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21606,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7731:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21612,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21609,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45178,
                                "src": "7758:4:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                  "typeString": "contract VestingRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                  "typeString": "contract VestingRegistry"
                                }
                              ],
                              "id": 21608,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7750:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 21610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7750:13:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 21611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7750:21:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7731:40:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21613,
                          "name": "SCBudget",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21607,
                          "src": "7782:8:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 21605,
                        "id": 21614,
                        "nodeType": "Return",
                        "src": "7775:15:79"
                      }
                    ]
                  },
                  "documentation": "@notice Get contract balance.\n@return The token balance of the contract.\n",
                  "id": 21616,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "budget",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21602,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7692:2:79"
                  },
                  "returnParameters": {
                    "id": 21605,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21604,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 21616,
                        "src": "7718:7:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21603,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7718:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7717:9:79"
                  },
                  "scope": 22218,
                  "src": "7677:117:79",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 21619,
                    "nodeType": "Block",
                    "src": "7899:2:79",
                    "statements": []
                  },
                  "documentation": "@notice Deposit function to receiving value (rBTC).\n",
                  "id": 21620,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21617,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7881:2:79"
                  },
                  "returnParameters": {
                    "id": 21618,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7899:0:79"
                  },
                  "scope": 22218,
                  "src": "7865:36:79",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21636,
                    "nodeType": "Block",
                    "src": "8085:42:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 21631,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45178,
                                    "src": "8109:4:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                      "typeString": "contract VestingRegistry"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                      "typeString": "contract VestingRegistry"
                                    }
                                  ],
                                  "id": 21630,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8101:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 21632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8101:13:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8101:21:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21627,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21622,
                              "src": "8089:2:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 21629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8089:11:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 21634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8089:34:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21635,
                        "nodeType": "ExpressionStatement",
                        "src": "8089:34:79"
                      }
                    ]
                  },
                  "documentation": "@notice Send all contract balance to an account.\n@param to The account address to send the balance to.\n",
                  "id": 21637,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21625,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21624,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "8075:9:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8075:9:79"
                    }
                  ],
                  "name": "withdrawAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21622,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 21637,
                        "src": "8048:18:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 21621,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8048:15:79",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8047:20:79"
                  },
                  "returnParameters": {
                    "id": 21626,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8085:0:79"
                  },
                  "scope": 22218,
                  "src": "8027:100:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21648,
                    "nodeType": "Block",
                    "src": "8832:43:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21645,
                              "name": "_vestingFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21639,
                              "src": "8855:15:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 21644,
                            "name": "_setVestingFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21670,
                            "src": "8836:18:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 21646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8836:35:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21647,
                        "nodeType": "ExpressionStatement",
                        "src": "8836:35:79"
                      }
                    ]
                  },
                  "documentation": "@notice Sets vesting factory address. High level endpoint.\n@param _vestingFactory The address of vesting factory contract.\n\t * @dev Splitting code on two functions: high level and low level\nis a pattern that makes easy to extend functionality in a readable way,\nwithout accidentally breaking the actual action being performed.\nFor example, checks should be done on high level endpoint, while core\nfunctionality should be coded on the low level function.\n",
                  "id": 21649,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21642,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21641,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "8822:9:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8822:9:79"
                    }
                  ],
                  "name": "setVestingFactory",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21639,
                        "name": "_vestingFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 21649,
                        "src": "8790:23:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21638,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8790:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8789:25:79"
                  },
                  "returnParameters": {
                    "id": 21643,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8832:0:79"
                  },
                  "scope": 22218,
                  "src": "8763:112:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21669,
                    "nodeType": "Block",
                    "src": "9087:133:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21655,
                                "name": "_vestingFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21651,
                                "src": "9099:15:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21657,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9126:1:79",
                                    "subdenomination": null,
                                    "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": 21656,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9118:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 21658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9118:10:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "9099:29:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76657374696e67466163746f7279206164647265737320696e76616c6964",
                              "id": 21660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9130:32:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_33d40e3e5b244e71e62a578e5bb02946f2835ec33d3d09a65bacc2cbbd8a1430",
                                "typeString": "literal_string \"vestingFactory address invalid\""
                              },
                              "value": "vestingFactory address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_33d40e3e5b244e71e62a578e5bb02946f2835ec33d3d09a65bacc2cbbd8a1430",
                                "typeString": "literal_string \"vestingFactory address invalid\""
                              }
                            ],
                            "id": 21654,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9091:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9091:72:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21662,
                        "nodeType": "ExpressionStatement",
                        "src": "9091:72:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21663,
                            "name": "vestingFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21235,
                            "src": "9167:14:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                              "typeString": "contract IVestingFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21665,
                                "name": "_vestingFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21651,
                                "src": "9200:15:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 21664,
                              "name": "IVestingFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18638,
                              "src": "9184:15:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IVestingFactory_$18638_$",
                                "typeString": "type(contract IVestingFactory)"
                              }
                            },
                            "id": 21666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9184:32:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                              "typeString": "contract IVestingFactory"
                            }
                          },
                          "src": "9167:49:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                            "typeString": "contract IVestingFactory"
                          }
                        },
                        "id": 21668,
                        "nodeType": "ExpressionStatement",
                        "src": "9167:49:79"
                      }
                    ]
                  },
                  "documentation": "@notice Sets vesting factory address. Low level core function.\n@param _vestingFactory The address of vesting factory contract.\n",
                  "id": 21670,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setVestingFactory",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21652,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21651,
                        "name": "_vestingFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 21670,
                        "src": "9053:23:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21650,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9053:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9052:25:79"
                  },
                  "returnParameters": {
                    "id": 21653,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9087:0:79"
                  },
                  "scope": 22218,
                  "src": "9025:195:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21682,
                    "nodeType": "Block",
                    "src": "9411:35:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21679,
                              "name": "_CSOVtokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21673,
                              "src": "9430:11:79",
                              "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": 21678,
                            "name": "_setCSOVtokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21718,
                            "src": "9415:14:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory)"
                            }
                          },
                          "id": 21680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9415:27:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21681,
                        "nodeType": "ExpressionStatement",
                        "src": "9415:27:79"
                      }
                    ]
                  },
                  "documentation": "@notice Sets cSOV tokens array. High level endpoint.\n@param _CSOVtokens The array of cSOV tokens.\n",
                  "id": 21683,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21676,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21675,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "9401:9:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9401:9:79"
                    }
                  ],
                  "name": "setCSOVtokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21674,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21673,
                        "name": "_CSOVtokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 21683,
                        "src": "9364:28:79",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 21671,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9364:7:79",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 21672,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "9364:9:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9363:30:79"
                  },
                  "returnParameters": {
                    "id": 21677,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9411:0:79"
                  },
                  "scope": 22218,
                  "src": "9341:105:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21717,
                    "nodeType": "Block",
                    "src": "9654:155:79",
                    "statements": [
                      {
                        "body": {
                          "id": 21711,
                          "nodeType": "Block",
                          "src": "9707:71:79",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 21707,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 21701,
                                        "name": "_CSOVtokens",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21686,
                                        "src": "9720:11:79",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 21703,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 21702,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21690,
                                        "src": "9732:1:79",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "9720:14:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 21705,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9746:1:79",
                                          "subdenomination": null,
                                          "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": 21704,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "9738:7:79",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 21706,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9738:10:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "9720:28:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "43534f56206164647265737320696e76616c6964",
                                    "id": 21708,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9750:22:79",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8e43be39a20c411b93bf5e7df057683fb367493eb5300e957c46c23454607bc6",
                                      "typeString": "literal_string \"CSOV address invalid\""
                                    },
                                    "value": "CSOV address invalid"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8e43be39a20c411b93bf5e7df057683fb367493eb5300e957c46c23454607bc6",
                                      "typeString": "literal_string \"CSOV address invalid\""
                                    }
                                  ],
                                  "id": 21700,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "9712:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 21709,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9712:61:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 21710,
                              "nodeType": "ExpressionStatement",
                              "src": "9712:61:79"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 21693,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21690,
                            "src": "9678:1:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21694,
                              "name": "_CSOVtokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21686,
                              "src": "9682:11:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 21695,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9682:18:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9678:22:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21712,
                        "initializationExpression": {
                          "assignments": [
                            21690
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 21690,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 21712,
                              "src": "9663:9:79",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 21689,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9663:7:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 21692,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 21691,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9675:1:79",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "9663:13:79"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 21698,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "9702:3:79",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 21697,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21690,
                              "src": "9702:1:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21699,
                          "nodeType": "ExpressionStatement",
                          "src": "9702:3:79"
                        },
                        "nodeType": "ForStatement",
                        "src": "9658:120:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21713,
                            "name": "CSOVtokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21240,
                            "src": "9781:10:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21714,
                            "name": "_CSOVtokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21686,
                            "src": "9794:11:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "9781:24:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 21716,
                        "nodeType": "ExpressionStatement",
                        "src": "9781:24:79"
                      }
                    ]
                  },
                  "documentation": "@notice Sets cSOV tokens array by looping through input. Low level function.\n@param _CSOVtokens The array of cSOV tokens.\n",
                  "id": 21718,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setCSOVtokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21687,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21686,
                        "name": "_CSOVtokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 21718,
                        "src": "9615:28:79",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 21684,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9615:7:79",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 21685,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "9615:9:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9614:30:79"
                  },
                  "returnParameters": {
                    "id": 21688,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9654:0:79"
                  },
                  "scope": 22218,
                  "src": "9591:218:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21742,
                    "nodeType": "Block",
                    "src": "10068:105:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21732,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21728,
                                "name": "_account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21720,
                                "src": "10080:8:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21730,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10100:1:79",
                                    "subdenomination": null,
                                    "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": 21729,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10092:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 21731,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10092:10:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "10080:22:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6163636f756e74206164647265737320696e76616c6964",
                              "id": 21733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10104:25:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9c90b12ae54115fc73eac2e81cd8e13d9286cbd9ccce42650888c2f1d3db4413",
                                "typeString": "literal_string \"account address invalid\""
                              },
                              "value": "account address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9c90b12ae54115fc73eac2e81cd8e13d9286cbd9ccce42650888c2f1d3db4413",
                                "typeString": "literal_string \"account address invalid\""
                              }
                            ],
                            "id": 21727,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10072:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10072:58:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21735,
                        "nodeType": "ExpressionStatement",
                        "src": "10072:58:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21736,
                              "name": "blacklist",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21262,
                              "src": "10135:9:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 21738,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 21737,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21720,
                              "src": "10145:8:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10135:19:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21739,
                            "name": "_blacklisted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21722,
                            "src": "10157:12:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "10135:34:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21741,
                        "nodeType": "ExpressionStatement",
                        "src": "10135:34:79"
                      }
                    ]
                  },
                  "documentation": "@notice Set blacklist flag (true/false).\n@param _account The address to be blacklisted.\n@param _blacklisted The flag to add/remove to/from a blacklist.\n",
                  "id": 21743,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21725,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21724,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "10058:9:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10058:9:79"
                    }
                  ],
                  "name": "setBlacklistFlag",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21723,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21720,
                        "name": "_account",
                        "nodeType": "VariableDeclaration",
                        "scope": 21743,
                        "src": "10014:16:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21719,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10014:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21722,
                        "name": "_blacklisted",
                        "nodeType": "VariableDeclaration",
                        "scope": 21743,
                        "src": "10032:17:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21721,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10032:4:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10013:37:79"
                  },
                  "returnParameters": {
                    "id": 21726,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10068:0:79"
                  },
                  "scope": 22218,
                  "src": "9988:185:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21774,
                    "nodeType": "Block",
                    "src": "10426:146:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21757,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21753,
                                "name": "_account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21745,
                                "src": "10438:8:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21755,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10458:1:79",
                                    "subdenomination": null,
                                    "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": 21754,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10450:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 21756,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10450:10:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "10438:22:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6163636f756e74206164647265737320696e76616c6964",
                              "id": 21758,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10462:25:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9c90b12ae54115fc73eac2e81cd8e13d9286cbd9ccce42650888c2f1d3db4413",
                                "typeString": "literal_string \"account address invalid\""
                              },
                              "value": "account address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9c90b12ae54115fc73eac2e81cd8e13d9286cbd9ccce42650888c2f1d3db4413",
                                "typeString": "literal_string \"account address invalid\""
                              }
                            ],
                            "id": 21752,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10430:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21759,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10430:58:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21760,
                        "nodeType": "ExpressionStatement",
                        "src": "10430:58:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21762,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21747,
                                "src": "10500:7:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 21763,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10511:1:79",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "10500:12:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 21765,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10514:16:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 21761,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10492:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10492:39:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21767,
                        "nodeType": "ExpressionStatement",
                        "src": "10492:39:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21768,
                              "name": "lockedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21266,
                              "src": "10536:12:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 21770,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 21769,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21745,
                              "src": "10549:8:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10536:22:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21771,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21747,
                            "src": "10561:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10536:32:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21773,
                        "nodeType": "ExpressionStatement",
                        "src": "10536:32:79"
                      }
                    ]
                  },
                  "documentation": "@notice Set amount to be subtracted from user token balance.\n@param _account The address with locked amount.\n@param _amount The amount to be locked.\n",
                  "id": 21775,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21750,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21749,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "10416:9:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10416:9:79"
                    }
                  ],
                  "name": "setLockedAmount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21748,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21745,
                        "name": "_account",
                        "nodeType": "VariableDeclaration",
                        "scope": 21775,
                        "src": "10374:16:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21744,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10374:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21747,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 21775,
                        "src": "10392:15:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21746,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10392:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10373:35:79"
                  },
                  "returnParameters": {
                    "id": 21751,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10426:0:79"
                  },
                  "scope": 22218,
                  "src": "10349:223:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21813,
                    "nodeType": "Block",
                    "src": "10928:199:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21785,
                                "name": "_receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21777,
                                "src": "10940:9:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21787,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10961:1:79",
                                    "subdenomination": null,
                                    "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": 21786,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10953:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 21788,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10953:10:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "10940:23:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7265636569766572206164647265737320696e76616c6964",
                              "id": 21790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10965:26:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              },
                              "value": "receiver address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              }
                            ],
                            "id": 21784,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10932:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10932:60:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21792,
                        "nodeType": "ExpressionStatement",
                        "src": "10932:60:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21796,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21794,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21779,
                                "src": "11004:7:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 21795,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11015:1:79",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "11004:12:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 21797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11018:16:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 21793,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10996:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10996:39:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21799,
                        "nodeType": "ExpressionStatement",
                        "src": "10996:39:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21804,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21777,
                              "src": "11061:9:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21805,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21779,
                              "src": "11072:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21801,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21237,
                                  "src": "11047:3:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 21800,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "11040:6:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 21802,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11040:11:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 21803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24671,
                            "src": "11040:20:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 21806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11040:40:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21807,
                        "nodeType": "ExpressionStatement",
                        "src": "11040:40:79"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21809,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21777,
                              "src": "11104:9:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21810,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21779,
                              "src": "11115:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21808,
                            "name": "SOVTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21293,
                            "src": "11089:14:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 21811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11089:34:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21812,
                        "nodeType": "EmitStatement",
                        "src": "11084:39:79"
                      }
                    ]
                  },
                  "documentation": "@notice Transfer SOV tokens to given address.\n\t * @dev This is a wrapper for ERC-20 transfer function w/\nadditional checks and triggering an event.\n\t * @param _receiver The address of the SOV receiver.\n@param _amount The amount to be transferred.\n",
                  "id": 21814,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21782,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21781,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "10918:9:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10918:9:79"
                    }
                  ],
                  "name": "transferSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21780,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21777,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 21814,
                        "src": "10875:17:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21776,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10875:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21779,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 21814,
                        "src": "10894:15:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21778,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10894:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10874:36:79"
                  },
                  "returnParameters": {
                    "id": 21783,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10928:0:79"
                  },
                  "scope": 22218,
                  "src": "10854:273:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21886,
                    "nodeType": "Block",
                    "src": "11253:368:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21821,
                              "name": "processedList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21258,
                              "src": "11257:13:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 21824,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21822,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "11271:3:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 21823,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11271:10:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11257:25:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 21825,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11285:4:79",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "11257:32:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21827,
                        "nodeType": "ExpressionStatement",
                        "src": "11257:32:79"
                      },
                      {
                        "assignments": [
                          21829
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21829,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 21886,
                            "src": "11294:14:79",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21828,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11294:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21831,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 21830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11311:1:79",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11294:18:79"
                      },
                      {
                        "body": {
                          "id": 21863,
                          "nodeType": "Block",
                          "src": "11364:117:79",
                          "statements": [
                            {
                              "assignments": [
                                21844
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 21844,
                                  "name": "CSOV",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 21863,
                                  "src": "11369:12:79",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 21843,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11369:7:79",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 21848,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 21845,
                                  "name": "CSOVtokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21240,
                                  "src": "11384:10:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                    "typeString": "address[] storage ref"
                                  }
                                },
                                "id": 21847,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 21846,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21833,
                                  "src": "11395:1:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11384:13:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11369:28:79"
                            },
                            {
                              "assignments": [
                                21850
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 21850,
                                  "name": "balance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 21863,
                                  "src": "11402:15:79",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 21849,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11402:7:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 21858,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21855,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "11443:3:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 21856,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11443:10:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 21852,
                                        "name": "CSOV",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21844,
                                        "src": "11427:4:79",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 21851,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24699,
                                      "src": "11420:6:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 21853,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11420:12:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 21854,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 24644,
                                  "src": "11420:22:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 21857,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11420:34:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11402:52:79"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 21861,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 21859,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21829,
                                  "src": "11459:6:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 21860,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21850,
                                  "src": "11469:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11459:17:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21862,
                              "nodeType": "ExpressionStatement",
                              "src": "11459:17:79"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 21836,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21833,
                            "src": "11336:1:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21837,
                              "name": "CSOVtokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21240,
                              "src": "11340:10:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 21838,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11340:17:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11336:21:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21864,
                        "initializationExpression": {
                          "assignments": [
                            21833
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 21833,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 21864,
                              "src": "11321:9:79",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 21832,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "11321:7:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 21835,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 21834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11333:1:79",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11321:13:79"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 21841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "11359:3:79",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 21840,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21833,
                              "src": "11359:1:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21842,
                          "nodeType": "ExpressionStatement",
                          "src": "11359:3:79"
                        },
                        "nodeType": "ForStatement",
                        "src": "11316:165:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21871,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21866,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21829,
                                "src": "11493:6:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 21867,
                                  "name": "lockedAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21266,
                                  "src": "11502:12:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 21870,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21868,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "11515:3:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 21869,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "11515:10:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11502:24:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11493:33:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 21872,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11528:16:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 21865,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11485:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11485:60:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21874,
                        "nodeType": "ExpressionStatement",
                        "src": "11485:60:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21875,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21829,
                            "src": "11549:6:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21876,
                              "name": "lockedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21266,
                              "src": "11559:12:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 21879,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21877,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "11572:3:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 21878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11572:10:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11559:24:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11549:34:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21881,
                        "nodeType": "ExpressionStatement",
                        "src": "11549:34:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21883,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21829,
                              "src": "11610:6:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21882,
                            "name": "_createVestingForCSOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21923,
                            "src": "11588:21:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 21884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11588:29:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21885,
                        "nodeType": "ExpressionStatement",
                        "src": "11588:29:79"
                      }
                    ]
                  },
                  "documentation": "@notice Exchange cSOV to SOV with 1:1 rate",
                  "id": 21887,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21817,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21816,
                        "name": "isNotProcessed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21478,
                        "src": "11221:14:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11221:14:79"
                    },
                    {
                      "arguments": null,
                      "id": 21819,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21818,
                        "name": "isNotBlacklisted",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21491,
                        "src": "11236:16:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11236:16:79"
                    }
                  ],
                  "name": "exchangeAllCSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21815,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11211:2:79"
                  },
                  "returnParameters": {
                    "id": 21820,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11253:0:79"
                  },
                  "scope": 22218,
                  "src": "11187:434:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21922,
                    "nodeType": "Block",
                    "src": "11813:234:79",
                    "statements": [
                      {
                        "assignments": [
                          21893
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21893,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 21922,
                            "src": "11817:15:79",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21892,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "11817:7:79",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21900,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21895,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "11855:3:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 21896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11855:10:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21897,
                              "name": "CSOV_VESTING_CLIFF",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21228,
                              "src": "11867:18:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21898,
                              "name": "CSOV_VESTING_DURATION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21233,
                              "src": "11887:21:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21894,
                            "name": "_getOrCreateVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22160,
                            "src": "11835:19:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (address,uint256,uint256) returns (address)"
                            }
                          },
                          "id": 21899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11835:74:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11817:92:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21905,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21893,
                              "src": "11934:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21906,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21889,
                              "src": "11943:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21902,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21237,
                                  "src": "11921:3:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 21901,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "11914:6:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 21903,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11914:11:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 21904,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24662,
                            "src": "11914:19:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 21907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11914:37:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21908,
                        "nodeType": "ExpressionStatement",
                        "src": "11914:37:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21913,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21889,
                              "src": "11985:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21910,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21893,
                                  "src": "11964:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 21909,
                                "name": "IVesting",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18597,
                                "src": "11955:8:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IVesting_$18597_$",
                                  "typeString": "type(contract IVesting)"
                                }
                              },
                              "id": 21911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11955:17:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IVesting_$18597",
                                "typeString": "contract IVesting"
                              }
                            },
                            "id": 21912,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakeTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18596,
                            "src": "11955:29:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 21914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11955:38:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21915,
                        "nodeType": "ExpressionStatement",
                        "src": "11955:38:79"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21917,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "12023:3:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 21918,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12023:10:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21919,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21889,
                              "src": "12035:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21916,
                            "name": "CSOVTokensExchanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21287,
                            "src": "12003:19:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 21920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12003:40:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21921,
                        "nodeType": "EmitStatement",
                        "src": "11998:45:79"
                      }
                    ]
                  },
                  "documentation": "@notice cSOV tokens are moved and staked on Vesting contract.\n@param _amount The amount of tokens to be vested.\n",
                  "id": 21923,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_createVestingForCSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21890,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21889,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 21923,
                        "src": "11787:15:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21888,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11787:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11786:17:79"
                  },
                  "returnParameters": {
                    "id": 21891,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11813:0:79"
                  },
                  "scope": 22218,
                  "src": "11756:291:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21962,
                    "nodeType": "Block",
                    "src": "12224:195:79",
                    "statements": [
                      {
                        "assignments": [
                          21929
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21929,
                            "name": "isValid",
                            "nodeType": "VariableDeclaration",
                            "scope": 21962,
                            "src": "12228:12:79",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 21928,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "12228:4:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21931,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 21930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12243:5:79",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12228:20:79"
                      },
                      {
                        "body": {
                          "id": 21955,
                          "nodeType": "Block",
                          "src": "12300:74:79",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 21947,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 21943,
                                  "name": "_CSOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21925,
                                  "src": "12309:5:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 21944,
                                    "name": "CSOVtokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21240,
                                    "src": "12318:10:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 21946,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 21945,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21933,
                                    "src": "12329:1:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12318:13:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "12309:22:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 21954,
                              "nodeType": "IfStatement",
                              "src": "12305:65:79",
                              "trueBody": {
                                "id": 21953,
                                "nodeType": "Block",
                                "src": "12333:37:79",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21950,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 21948,
                                        "name": "isValid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21929,
                                        "src": "12339:7:79",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "74727565",
                                        "id": 21949,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12349:4:79",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "true"
                                      },
                                      "src": "12339:14:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 21951,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12339:14:79"
                                  },
                                  {
                                    "id": 21952,
                                    "nodeType": "Break",
                                    "src": "12359:5:79"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 21936,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21933,
                            "src": "12272:1:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21937,
                              "name": "CSOVtokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21240,
                              "src": "12276:10:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 21938,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12276:17:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12272:21:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21956,
                        "initializationExpression": {
                          "assignments": [
                            21933
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 21933,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 21956,
                              "src": "12257:9:79",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 21932,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "12257:7:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 21935,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 21934,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12269:1:79",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "12257:13:79"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 21941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "12295:3:79",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 21940,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21933,
                              "src": "12295:1:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21942,
                          "nodeType": "ExpressionStatement",
                          "src": "12295:3:79"
                        },
                        "nodeType": "ForStatement",
                        "src": "12252:122:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21958,
                              "name": "isValid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21929,
                              "src": "12385:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "77726f6e672043534f562061646472657373",
                              "id": 21959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12394:20:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_459cea1d2d28ca5ba0c9226fc2213f12c39c6be1b7f26df16dc63c7578bc565b",
                                "typeString": "literal_string \"wrong CSOV address\""
                              },
                              "value": "wrong CSOV address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_459cea1d2d28ca5ba0c9226fc2213f12c39c6be1b7f26df16dc63c7578bc565b",
                                "typeString": "literal_string \"wrong CSOV address\""
                              }
                            ],
                            "id": 21957,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "12377:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12377:38:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21961,
                        "nodeType": "ExpressionStatement",
                        "src": "12377:38:79"
                      }
                    ]
                  },
                  "documentation": "@notice Check a token address is among the cSOV token addresses.\n@param _CSOV The cSOV token address.\n",
                  "id": 21963,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_validateCSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21926,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21925,
                        "name": "_CSOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 21963,
                        "src": "12195:13:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21924,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12195:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12194:15:79"
                  },
                  "returnParameters": {
                    "id": 21927,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12224:0:79"
                  },
                  "scope": 22218,
                  "src": "12172:247:79",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21992,
                    "nodeType": "Block",
                    "src": "12814:150:79",
                    "statements": [
                      {
                        "assignments": [
                          21977
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21977,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 21992,
                            "src": "12818:15:79",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21976,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12818:7:79",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21983,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21979,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21965,
                              "src": "12856:11:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21980,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21969,
                              "src": "12869:6:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21981,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21971,
                              "src": "12877:9:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21978,
                            "name": "_getOrCreateVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22160,
                            "src": "12836:19:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (address,uint256,uint256) returns (address)"
                            }
                          },
                          "id": 21982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12836:51:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12818:69:79"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21985,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21965,
                              "src": "12911:11:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21986,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21977,
                              "src": "12924:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21987,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21969,
                              "src": "12933:6:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21988,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21971,
                              "src": "12941:9:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21989,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21967,
                              "src": "12952:7:79",
                              "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21984,
                            "name": "VestingCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21305,
                            "src": "12896:14:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 21990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12896:64:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21991,
                        "nodeType": "EmitStatement",
                        "src": "12891:69:79"
                      }
                    ]
                  },
                  "documentation": "@notice Create Vesting contract.\n@param _tokenOwner The owner of the tokens.\n@param _amount The amount to be staked.\n@param _cliff The time interval to the first withdraw in seconds.\n@param _duration The total duration in seconds.\n",
                  "id": 21993,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21974,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21973,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21429,
                        "src": "12799:14:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12799:14:79"
                    }
                  ],
                  "name": "createVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21972,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21965,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 21993,
                        "src": "12711:19:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21964,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12711:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21967,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 21993,
                        "src": "12734:15:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21966,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12734:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21969,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 21993,
                        "src": "12753:14:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21968,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12753:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21971,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 21993,
                        "src": "12771:17:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21970,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12771:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12707:84:79"
                  },
                  "returnParameters": {
                    "id": 21975,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12814:0:79"
                  },
                  "scope": 22218,
                  "src": "12685:279:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22022,
                    "nodeType": "Block",
                    "src": "13368:158:79",
                    "statements": [
                      {
                        "assignments": [
                          22007
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22007,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 22022,
                            "src": "13372:15:79",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 22006,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "13372:7:79",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22013,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22009,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21995,
                              "src": "13414:11:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22010,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21999,
                              "src": "13427:6:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22011,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22001,
                              "src": "13435:9:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22008,
                            "name": "_getOrCreateTeamVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22217,
                            "src": "13390:23:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (address,uint256,uint256) returns (address)"
                            }
                          },
                          "id": 22012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13390:55:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13372:73:79"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22015,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21995,
                              "src": "13473:11:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22016,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22007,
                              "src": "13486:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22017,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21999,
                              "src": "13495:6:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22018,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22001,
                              "src": "13503:9:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22019,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21997,
                              "src": "13514:7:79",
                              "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22014,
                            "name": "TeamVestingCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21317,
                            "src": "13454:18:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 22020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13454:68:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22021,
                        "nodeType": "EmitStatement",
                        "src": "13449:73:79"
                      }
                    ]
                  },
                  "documentation": "@notice Create Team Vesting contract.\n@param _tokenOwner The owner of the tokens.\n@param _amount The amount to be staked.\n@param _cliff The time interval to the first withdraw in seconds.\n@param _duration The total duration in seconds.\n",
                  "id": 22023,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22004,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22003,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21429,
                        "src": "13353:14:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13353:14:79"
                    }
                  ],
                  "name": "createTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22002,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21995,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 22023,
                        "src": "13265:19:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21994,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13265:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21997,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 22023,
                        "src": "13288:15:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21996,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13288:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21999,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 22023,
                        "src": "13307:14:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21998,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13307:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22001,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 22023,
                        "src": "13325:17:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22000,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13325:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13261:84:79"
                  },
                  "returnParameters": {
                    "id": 22005,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13368:0:79"
                  },
                  "scope": 22218,
                  "src": "13235:291:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22068,
                    "nodeType": "Block",
                    "src": "13782:234:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 22037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22033,
                                "name": "_vesting",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22025,
                                "src": "13794:8:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 22035,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13814:1:79",
                                    "subdenomination": null,
                                    "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": 22034,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13806:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 22036,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13806:10:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "13794:22:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76657374696e67206164647265737320696e76616c6964",
                              "id": 22038,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13818:25:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_380b2e4a9c1835648e0f5052b5fbe4ee62cf6b14ea12c4964331c26922214dc7",
                                "typeString": "literal_string \"vesting address invalid\""
                              },
                              "value": "vesting address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_380b2e4a9c1835648e0f5052b5fbe4ee62cf6b14ea12c4964331c26922214dc7",
                                "typeString": "literal_string \"vesting address invalid\""
                              }
                            ],
                            "id": 22032,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13786:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13786:58:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22040,
                        "nodeType": "ExpressionStatement",
                        "src": "13786:58:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22042,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22027,
                                "src": "13856:7:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 22043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13866:1:79",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13856:11:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 22045,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13869:16:79",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 22041,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13848:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13848:38:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22047,
                        "nodeType": "ExpressionStatement",
                        "src": "13848:38:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22052,
                              "name": "_vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22025,
                              "src": "13911:8:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22053,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22027,
                              "src": "13921:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22049,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21237,
                                  "src": "13898:3:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 22048,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "13891:6:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 22050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13891:11:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 22051,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24662,
                            "src": "13891:19:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 22054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13891:38:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22055,
                        "nodeType": "ExpressionStatement",
                        "src": "13891:38:79"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22060,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22027,
                              "src": "13964:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22057,
                                  "name": "_vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22025,
                                  "src": "13942:8:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 22056,
                                "name": "IVesting",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18597,
                                "src": "13933:8:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IVesting_$18597_$",
                                  "typeString": "type(contract IVesting)"
                                }
                              },
                              "id": 22058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13933:18:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IVesting_$18597",
                                "typeString": "contract IVesting"
                              }
                            },
                            "id": 22059,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakeTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18596,
                            "src": "13933:30:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 22061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13933:39:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22062,
                        "nodeType": "ExpressionStatement",
                        "src": "13933:39:79"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22064,
                              "name": "_vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22025,
                              "src": "13994:8:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22065,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22027,
                              "src": "14004:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22063,
                            "name": "TokensStaked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21323,
                            "src": "13981:12:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 22066,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13981:31:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22067,
                        "nodeType": "EmitStatement",
                        "src": "13976:36:79"
                      }
                    ]
                  },
                  "documentation": "@notice Stake tokens according to the vesting schedule.\n@param _vesting The address of Vesting contract.\n@param _amount The amount of tokens to stake.\n",
                  "id": 22069,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22030,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22029,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21429,
                        "src": "13767:14:79",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13767:14:79"
                    }
                  ],
                  "name": "stakeTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22028,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22025,
                        "name": "_vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 22069,
                        "src": "13725:16:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22024,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13725:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22027,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 22069,
                        "src": "13743:15:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22026,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13743:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13724:35:79"
                  },
                  "returnParameters": {
                    "id": 22031,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13782:0:79"
                  },
                  "scope": 22218,
                  "src": "13704:312:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22085,
                    "nodeType": "Block",
                    "src": "14273:74:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22076,
                              "name": "vestingContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21254,
                              "src": "14284:16:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 22078,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22077,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22071,
                              "src": "14301:11:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14284:29:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 22083,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 22080,
                                  "name": "VestingType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21273,
                                  "src": "14322:11:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_VestingType_$21273_$",
                                    "typeString": "type(enum VestingRegistry.VestingType)"
                                  }
                                },
                                "id": 22081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Vesting",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14322:19:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_VestingType_$21273",
                                  "typeString": "enum VestingRegistry.VestingType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_VestingType_$21273",
                                  "typeString": "enum VestingRegistry.VestingType"
                                }
                              ],
                              "id": 22079,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14314:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 22082,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14314:28:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14284:59:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 22075,
                        "id": 22084,
                        "nodeType": "Return",
                        "src": "14277:66:79"
                      }
                    ]
                  },
                  "documentation": "@notice Query the vesting contract for an account.\n@param _tokenOwner The owner of the tokens.\n@return The vesting contract address for the given token owner.\n",
                  "id": 22086,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22072,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22071,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 22086,
                        "src": "14222:19:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22070,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14222:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14221:21:79"
                  },
                  "returnParameters": {
                    "id": 22075,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22074,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 22086,
                        "src": "14264:7:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22073,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14264:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14263:9:79"
                  },
                  "scope": 22218,
                  "src": "14202:145:79",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22102,
                    "nodeType": "Block",
                    "src": "14618:78:79",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22093,
                              "name": "vestingContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21254,
                              "src": "14629:16:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 22095,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22094,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22088,
                              "src": "14646:11:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14629:29:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 22100,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 22097,
                                  "name": "VestingType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21273,
                                  "src": "14667:11:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_VestingType_$21273_$",
                                    "typeString": "type(enum VestingRegistry.VestingType)"
                                  }
                                },
                                "id": 22098,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "TeamVesting",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14667:23:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_VestingType_$21273",
                                  "typeString": "enum VestingRegistry.VestingType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_VestingType_$21273",
                                  "typeString": "enum VestingRegistry.VestingType"
                                }
                              ],
                              "id": 22096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14659:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 22099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14659:32:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14629:63:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 22092,
                        "id": 22101,
                        "nodeType": "Return",
                        "src": "14622:70:79"
                      }
                    ]
                  },
                  "documentation": "@notice Query the team vesting contract for an account.\n@param _tokenOwner The owner of the tokens.\n@return The team vesting contract address for the given token owner.\n",
                  "id": 22103,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22089,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22088,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 22103,
                        "src": "14567:19:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22087,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14567:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14566:21:79"
                  },
                  "returnParameters": {
                    "id": 22092,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22091,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 22103,
                        "src": "14609:7:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22090,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14609:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14608:9:79"
                  },
                  "scope": 22218,
                  "src": "14543:153:79",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22159,
                    "nodeType": "Block",
                    "src": "15181:425:79",
                    "statements": [
                      {
                        "assignments": [
                          22115
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22115,
                            "name": "type_",
                            "nodeType": "VariableDeclaration",
                            "scope": 22159,
                            "src": "15185:13:79",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22114,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15185:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22120,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 22117,
                                "name": "VestingType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21273,
                                "src": "15209:11:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_VestingType_$21273_$",
                                  "typeString": "type(enum VestingRegistry.VestingType)"
                                }
                              },
                              "id": 22118,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Vesting",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "15209:19:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_VestingType_$21273",
                                "typeString": "enum VestingRegistry.VestingType"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_VestingType_$21273",
                                "typeString": "enum VestingRegistry.VestingType"
                              }
                            ],
                            "id": 22116,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "15201:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 22119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15201:28:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15185:44:79"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 22129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 22121,
                                "name": "vestingContracts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21254,
                                "src": "15237:16:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => address))"
                                }
                              },
                              "id": 22123,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 22122,
                                "name": "_tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22105,
                                "src": "15254:11:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15237:29:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 22125,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22124,
                              "name": "type_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22115,
                              "src": "15267:5:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15237:36:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 22127,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15285:1:79",
                                "subdenomination": null,
                                "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": 22126,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "15277:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 22128,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15277:10:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "15237:50:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 22152,
                        "nodeType": "IfStatement",
                        "src": "15233:323:79",
                        "trueBody": {
                          "id": 22151,
                          "nodeType": "Block",
                          "src": "15289:267:79",
                          "statements": [
                            {
                              "assignments": [
                                22131
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22131,
                                  "name": "vesting",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22151,
                                  "src": "15378:15:79",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 22130,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15378:7:79",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22142,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 22134,
                                    "name": "SOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21237,
                                    "src": "15425:3:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22135,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21244,
                                    "src": "15430:7:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22136,
                                    "name": "_tokenOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22105,
                                    "src": "15439:11:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22137,
                                    "name": "_cliff",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22107,
                                    "src": "15452:6:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22138,
                                    "name": "_duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22109,
                                    "src": "15460:9:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22139,
                                    "name": "feeSharingProxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21246,
                                    "src": "15471:15:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22140,
                                    "name": "_tokenOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22105,
                                    "src": "15488:11:79",
                                    "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_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22132,
                                    "name": "vestingFactory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21235,
                                    "src": "15396:14:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                                      "typeString": "contract IVestingFactory"
                                    }
                                  },
                                  "id": 22133,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "deployVesting",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18618,
                                  "src": "15396:28:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address,uint256,uint256,address,address) external returns (address)"
                                  }
                                },
                                "id": 22141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15396:104:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15378:122:79"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 22149,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 22143,
                                      "name": "vestingContracts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21254,
                                      "src": "15505:16:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => address))"
                                      }
                                    },
                                    "id": 22146,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 22144,
                                      "name": "_tokenOwner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22105,
                                      "src": "15522:11:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "15505:29:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 22147,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 22145,
                                    "name": "type_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22115,
                                    "src": "15535:5:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "15505:36:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 22148,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22131,
                                  "src": "15544:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "15505:46:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 22150,
                              "nodeType": "ExpressionStatement",
                              "src": "15505:46:79"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22153,
                              "name": "vestingContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21254,
                              "src": "15566:16:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 22155,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22154,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22105,
                              "src": "15583:11:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15566:29:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 22157,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 22156,
                            "name": "type_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22115,
                            "src": "15596:5:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15566:36:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 22113,
                        "id": 22158,
                        "nodeType": "Return",
                        "src": "15559:43:79"
                      }
                    ]
                  },
                  "documentation": "@notice If not exists, deploy a vesting contract through factory.\n@param _tokenOwner The owner of the tokens.\n@param _cliff The time interval to the first withdraw in seconds.\n@param _duration The total duration in seconds.\n@return The vesting contract address for the given token owner\nwhether it existed previously or not.\n",
                  "id": 22160,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getOrCreateVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22110,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22105,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 22160,
                        "src": "15092:19:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22104,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15092:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22107,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 22160,
                        "src": "15115:14:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22106,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15115:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22109,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 22160,
                        "src": "15133:17:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22108,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15133:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15088:65:79"
                  },
                  "returnParameters": {
                    "id": 22113,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22112,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 22160,
                        "src": "15172:7:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22111,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15172:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15171:9:79"
                  },
                  "scope": 22218,
                  "src": "15060:546:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22216,
                    "nodeType": "Block",
                    "src": "16105:350:79",
                    "statements": [
                      {
                        "assignments": [
                          22172
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22172,
                            "name": "type_",
                            "nodeType": "VariableDeclaration",
                            "scope": 22216,
                            "src": "16109:13:79",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22171,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16109:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22177,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 22174,
                                "name": "VestingType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21273,
                                "src": "16133:11:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_VestingType_$21273_$",
                                  "typeString": "type(enum VestingRegistry.VestingType)"
                                }
                              },
                              "id": 22175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "TeamVesting",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "16133:23:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_VestingType_$21273",
                                "typeString": "enum VestingRegistry.VestingType"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_VestingType_$21273",
                                "typeString": "enum VestingRegistry.VestingType"
                              }
                            ],
                            "id": 22173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16125:7:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 22176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16125:32:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16109:48:79"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 22186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 22178,
                                "name": "vestingContracts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21254,
                                "src": "16165:16:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => address))"
                                }
                              },
                              "id": 22180,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 22179,
                                "name": "_tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22162,
                                "src": "16182:11:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16165:29:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 22182,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22181,
                              "name": "type_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22172,
                              "src": "16195:5:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16165:36:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 22184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16213:1:79",
                                "subdenomination": null,
                                "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": 22183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16205:7:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 22185,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16205:10:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "16165:50:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 22209,
                        "nodeType": "IfStatement",
                        "src": "16161:244:79",
                        "trueBody": {
                          "id": 22208,
                          "nodeType": "Block",
                          "src": "16217:188:79",
                          "statements": [
                            {
                              "assignments": [
                                22188
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22188,
                                  "name": "vesting",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22208,
                                  "src": "16222:15:79",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 22187,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16222:7:79",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22199,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 22191,
                                    "name": "SOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21237,
                                    "src": "16273:3:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22192,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21244,
                                    "src": "16278:7:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22193,
                                    "name": "_tokenOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22162,
                                    "src": "16287:11:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22194,
                                    "name": "_cliff",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22164,
                                    "src": "16300:6:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22195,
                                    "name": "_duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22166,
                                    "src": "16308:9:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22196,
                                    "name": "feeSharingProxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21246,
                                    "src": "16319:15:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22197,
                                    "name": "vestingOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21248,
                                    "src": "16336:12:79",
                                    "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_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22189,
                                    "name": "vestingFactory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21235,
                                    "src": "16240:14:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                                      "typeString": "contract IVestingFactory"
                                    }
                                  },
                                  "id": 22190,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "deployTeamVesting",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18637,
                                  "src": "16240:32:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address,uint256,uint256,address,address) external returns (address)"
                                  }
                                },
                                "id": 22198,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16240:109:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16222:127:79"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 22206,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 22200,
                                      "name": "vestingContracts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21254,
                                      "src": "16354:16:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => address))"
                                      }
                                    },
                                    "id": 22203,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 22201,
                                      "name": "_tokenOwner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22162,
                                      "src": "16371:11:79",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "16354:29:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 22204,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 22202,
                                    "name": "type_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22172,
                                    "src": "16384:5:79",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "16354:36:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 22205,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22188,
                                  "src": "16393:7:79",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "16354:46:79",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 22207,
                              "nodeType": "ExpressionStatement",
                              "src": "16354:46:79"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22210,
                              "name": "vestingContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21254,
                              "src": "16415:16:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 22212,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22211,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22162,
                              "src": "16432:11:79",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16415:29:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 22214,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 22213,
                            "name": "type_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22172,
                            "src": "16445:5:79",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16415:36:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 22170,
                        "id": 22215,
                        "nodeType": "Return",
                        "src": "16408:43:79"
                      }
                    ]
                  },
                  "documentation": "@notice If not exists, deploy a team vesting contract through factory.\n@param _tokenOwner The owner of the tokens.\n@param _cliff The time interval to the first withdraw in seconds.\n@param _duration The total duration in seconds.\n@return The team vesting contract address for the given token owner\nwhether it existed previously or not.\n",
                  "id": 22217,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getOrCreateTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22167,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22162,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 22217,
                        "src": "16016:19:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22161,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16016:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22164,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 22217,
                        "src": "16039:14:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22163,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16039:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22166,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 22217,
                        "src": "16057:17:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22165,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16057:7:79",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16012:65:79"
                  },
                  "returnParameters": {
                    "id": 22170,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22169,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 22217,
                        "src": "16096:7:79",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22168,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16096:7:79",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16095:9:79"
                  },
                  "scope": 22218,
                  "src": "15980:475:79",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 22219,
              "src": "1194:15263:79"
            }
          ],
          "src": "0:16458:79"
        },
        "id": 79
      },
      "contracts/governance/Vesting/VestingRegistry2.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/VestingRegistry2.sol",
          "exportedSymbols": {
            "VestingRegistry2": [
              23038
            ]
          },
          "id": 23039,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 22220,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:80"
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../../openzeppelin/Ownable.sol",
              "id": 22221,
              "nodeType": "ImportDirective",
              "scope": 23039,
              "sourceUnit": 41799,
              "src": "26:40:80",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 22222,
              "nodeType": "ImportDirective",
              "scope": 23039,
              "sourceUnit": 24700,
              "src": "67:37:80",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/IStaking.sol",
              "file": "../Staking/IStaking.sol",
              "id": 22223,
              "nodeType": "ImportDirective",
              "scope": 23039,
              "sourceUnit": 13774,
              "src": "105:33:80",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/IFeeSharingProxy.sol",
              "file": "../IFeeSharingProxy.sol",
              "id": 22224,
              "nodeType": "ImportDirective",
              "scope": 23039,
              "sourceUnit": 13113,
              "src": "139:33:80",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/IVestingFactory.sol",
              "file": "./IVestingFactory.sol",
              "id": 22225,
              "nodeType": "ImportDirective",
              "scope": 23039,
              "sourceUnit": 18639,
              "src": "173:31:80",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/IVesting.sol",
              "file": "./IVesting.sol",
              "id": 22226,
              "nodeType": "ImportDirective",
              "scope": 23039,
              "sourceUnit": 18598,
              "src": "205:24:80",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/ITeamVesting.sol",
              "file": "./ITeamVesting.sol",
              "id": 22227,
              "nodeType": "ImportDirective",
              "scope": 23039,
              "sourceUnit": 18580,
              "src": "230:28:80",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../../openzeppelin/SafeMath.sol",
              "id": 22228,
              "nodeType": "ImportDirective",
              "scope": 23039,
              "sourceUnit": 42310,
              "src": "259:41:80",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 22229,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "463:7:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 22230,
                  "nodeType": "InheritanceSpecifier",
                  "src": "463:7:80"
                }
              ],
              "contractDependencies": [
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title VestingRegistry 2 contract.\n@notice One time contract needed to distribute tokens to origin sales investors.\n",
              "fullyImplemented": true,
              "id": 23038,
              "linearizedBaseContracts": [
                23038,
                41798,
                41125
              ],
              "name": "VestingRegistry2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 22233,
                  "libraryName": {
                    "contractScope": null,
                    "id": 22231,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "480:8:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "474:27:80",
                  "typeName": {
                    "id": 22232,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "493:7:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 22236,
                  "name": "FOUR_WEEKS",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "580:44:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22234,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "580:7:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "34",
                    "id": 22235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "617:7:80",
                    "subdenomination": "weeks",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2419200_by_1",
                      "typeString": "int_const 2419200"
                    },
                    "value": "4"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 22239,
                  "name": "CSOV_VESTING_CLIFF",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "628:55:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22237,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "628:7:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "id": 22238,
                    "name": "FOUR_WEEKS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 22236,
                    "src": "673:10:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 22244,
                  "name": "CSOV_VESTING_DURATION",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "686:63:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22240,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "686:7:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 22243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 22241,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "734:2:80",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 22242,
                      "name": "FOUR_WEEKS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22236,
                      "src": "739:10:80",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "734:15:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 22246,
                  "name": "vestingFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "753:37:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                    "typeString": "contract IVestingFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22245,
                    "name": "IVestingFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18638,
                    "src": "753:15:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                      "typeString": "contract IVestingFactory"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 22248,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "831:18:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22247,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "831:7:80",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 22251,
                  "name": "CSOVtokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "892:27:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 22249,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "892:7:80",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 22250,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "892:9:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 22253,
                  "name": "priceSats",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "923:24:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22252,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "923:7:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 22255,
                  "name": "staking",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "994:22:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22254,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "994:7:80",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 22257,
                  "name": "feeSharingProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "1052:30:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22256,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1052:7:80",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 22259,
                  "name": "vestingOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "1153:27:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22258,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1153:7:80",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 22265,
                  "name": "vestingContracts",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "1325:71:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                    "typeString": "mapping(address => mapping(uint256 => address))"
                  },
                  "typeName": {
                    "id": 22264,
                    "keyType": {
                      "id": 22260,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1333:7:80",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1325:47:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                      "typeString": "mapping(address => mapping(uint256 => address))"
                    },
                    "valueType": {
                      "id": 22263,
                      "keyType": {
                        "id": 22261,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1352:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1344:27:80",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      },
                      "valueType": {
                        "id": 22262,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1363:7:80",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 22269,
                  "name": "processedList",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "1663:45:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 22268,
                    "keyType": {
                      "id": 22266,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1671:7:80",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1663:24:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 22267,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1682:4:80",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 22273,
                  "name": "blacklist",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "1792:41:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 22272,
                    "keyType": {
                      "id": 22270,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1800:7:80",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1792:24:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 22271,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1811:4:80",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 22277,
                  "name": "lockedAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "1897:47:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 22276,
                    "keyType": {
                      "id": 22274,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1905:7:80",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1897:27:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 22275,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1916:7:80",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 22281,
                  "name": "admins",
                  "nodeType": "VariableDeclaration",
                  "scope": 23038,
                  "src": "2000:38:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 22280,
                    "keyType": {
                      "id": 22278,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2008:7:80",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2000:24:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 22279,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2019:4:80",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "canonicalName": "VestingRegistry2.VestingType",
                  "id": 22284,
                  "members": [
                    {
                      "id": 22282,
                      "name": "TeamVesting",
                      "nodeType": "EnumValue",
                      "src": "2063:11:80"
                    },
                    {
                      "id": 22283,
                      "name": "Vesting",
                      "nodeType": "EnumValue",
                      "src": "2097:7:80"
                    }
                  ],
                  "name": "VestingType",
                  "nodeType": "EnumDefinition",
                  "src": "2042:87:80"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 22290,
                  "name": "CSOVTokensExchanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 22289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22286,
                        "indexed": true,
                        "name": "caller",
                        "nodeType": "VariableDeclaration",
                        "scope": 22290,
                        "src": "2173:22:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22285,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2173:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22288,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 22290,
                        "src": "2197:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22287,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2197:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2172:40:80"
                  },
                  "src": "2147:66:80"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 22296,
                  "name": "SOVTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 22295,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22292,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 22296,
                        "src": "2236:24:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22291,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2236:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22294,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 22296,
                        "src": "2262:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22293,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2262:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2235:42:80"
                  },
                  "src": "2215:63:80"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 22308,
                  "name": "VestingCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 22307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22298,
                        "indexed": true,
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 22308,
                        "src": "2301:26:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22297,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2301:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22300,
                        "indexed": false,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 22308,
                        "src": "2329:15:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22299,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2329:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22302,
                        "indexed": false,
                        "name": "cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 22308,
                        "src": "2346:13:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22301,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2346:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22304,
                        "indexed": false,
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 22308,
                        "src": "2361:16:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22303,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2361:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22306,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 22308,
                        "src": "2379:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2379:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2300:94:80"
                  },
                  "src": "2280:115:80"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 22320,
                  "name": "TeamVestingCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 22319,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22310,
                        "indexed": true,
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 22320,
                        "src": "2422:26:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22309,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2422:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22312,
                        "indexed": false,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 22320,
                        "src": "2450:15:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22311,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2450:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22314,
                        "indexed": false,
                        "name": "cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 22320,
                        "src": "2467:13:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22313,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2467:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22316,
                        "indexed": false,
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 22320,
                        "src": "2482:16:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22315,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2482:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22318,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 22320,
                        "src": "2500:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22317,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2500:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2421:94:80"
                  },
                  "src": "2397:119:80"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 22326,
                  "name": "TokensStaked",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 22325,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22322,
                        "indexed": true,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 22326,
                        "src": "2537:23:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22321,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2537:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22324,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 22326,
                        "src": "2562:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22323,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2562:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2536:41:80"
                  },
                  "src": "2518:60:80"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 22330,
                  "name": "AdminAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 22329,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22328,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 22330,
                        "src": "2597:13:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22327,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2597:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2596:15:80"
                  },
                  "src": "2580:32:80"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 22334,
                  "name": "AdminRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 22333,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22332,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 22334,
                        "src": "2633:13:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22331,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2633:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2632:15:80"
                  },
                  "src": "2614:34:80"
                },
                {
                  "body": {
                    "id": 22416,
                    "nodeType": "Block",
                    "src": "3761:474:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 22357,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22353,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22338,
                                "src": "3773:4:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 22355,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3789:1:80",
                                    "subdenomination": null,
                                    "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": 22354,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3781:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 22356,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3781:10:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3773:18:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "534f56206164647265737320696e76616c6964",
                              "id": 22358,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3793:21:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              },
                              "value": "SOV address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              }
                            ],
                            "id": 22352,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3765:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3765:50:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22360,
                        "nodeType": "ExpressionStatement",
                        "src": "3765:50:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 22366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22362,
                                "name": "_staking",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22345,
                                "src": "3827:8:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 22364,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3847:1:80",
                                    "subdenomination": null,
                                    "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": 22363,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3839:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 22365,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3839:10:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3827:22:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7374616b696e67206164647265737320696e76616c6964",
                              "id": 22367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3851:25:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dad5f662c3fef12349ee5cce4e61e29872181081c3701c492f86e4a0edbc8478",
                                "typeString": "literal_string \"staking address invalid\""
                              },
                              "value": "staking address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dad5f662c3fef12349ee5cce4e61e29872181081c3701c492f86e4a0edbc8478",
                                "typeString": "literal_string \"staking address invalid\""
                              }
                            ],
                            "id": 22361,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3819:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3819:58:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22369,
                        "nodeType": "ExpressionStatement",
                        "src": "3819:58:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 22375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22371,
                                "name": "_feeSharingProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22347,
                                "src": "3889:16:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 22373,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3917:1:80",
                                    "subdenomination": null,
                                    "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": 22372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3909:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 22374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3909:10:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3889:30:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66656553686172696e6750726f7879206164647265737320696e76616c6964",
                              "id": 22376,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3921:33:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c10cbcafb5aa87027ea5ae59f7021a70ed9eaf13f3cc1fd382043183365fd95b",
                                "typeString": "literal_string \"feeSharingProxy address invalid\""
                              },
                              "value": "feeSharingProxy address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c10cbcafb5aa87027ea5ae59f7021a70ed9eaf13f3cc1fd382043183365fd95b",
                                "typeString": "literal_string \"feeSharingProxy address invalid\""
                              }
                            ],
                            "id": 22370,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3881:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3881:74:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22378,
                        "nodeType": "ExpressionStatement",
                        "src": "3881:74:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 22384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22380,
                                "name": "_vestingOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22349,
                                "src": "3967:13:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 22382,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3992:1:80",
                                    "subdenomination": null,
                                    "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": 22381,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3984:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 22383,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3984:10:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3967:27:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76657374696e674f776e6572206164647265737320696e76616c6964",
                              "id": 22385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3996:30:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_598ae3ed2d682ddf536de8d8e8c428d9f03a35b481b508f2312a3aa5c981fa0a",
                                "typeString": "literal_string \"vestingOwner address invalid\""
                              },
                              "value": "vestingOwner address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_598ae3ed2d682ddf536de8d8e8c428d9f03a35b481b508f2312a3aa5c981fa0a",
                                "typeString": "literal_string \"vestingOwner address invalid\""
                              }
                            ],
                            "id": 22379,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3959:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3959:68:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22387,
                        "nodeType": "ExpressionStatement",
                        "src": "3959:68:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22389,
                              "name": "_vestingFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22336,
                              "src": "4051:15:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 22388,
                            "name": "_setVestingFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22563,
                            "src": "4032:18:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 22390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4032:35:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22391,
                        "nodeType": "ExpressionStatement",
                        "src": "4032:35:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22393,
                              "name": "_CSOVtokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22341,
                              "src": "4086:11:80",
                              "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": 22392,
                            "name": "_setCSOVtokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22611,
                            "src": "4071:14:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory)"
                            }
                          },
                          "id": 22394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4071:27:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22395,
                        "nodeType": "ExpressionStatement",
                        "src": "4071:27:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22396,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22248,
                            "src": "4103:3:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22397,
                            "name": "_SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22338,
                            "src": "4109:4:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4103:10:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 22399,
                        "nodeType": "ExpressionStatement",
                        "src": "4103:10:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22400,
                            "name": "priceSats",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22253,
                            "src": "4117:9:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22401,
                            "name": "_priceSats",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22343,
                            "src": "4129:10:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4117:22:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22403,
                        "nodeType": "ExpressionStatement",
                        "src": "4117:22:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22404,
                            "name": "staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22255,
                            "src": "4143:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22405,
                            "name": "_staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22345,
                            "src": "4153:8:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4143:18:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 22407,
                        "nodeType": "ExpressionStatement",
                        "src": "4143:18:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22408,
                            "name": "feeSharingProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22257,
                            "src": "4165:15:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22409,
                            "name": "_feeSharingProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22347,
                            "src": "4183:16:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4165:34:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 22411,
                        "nodeType": "ExpressionStatement",
                        "src": "4165:34:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22412,
                            "name": "vestingOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22259,
                            "src": "4203:12:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22413,
                            "name": "_vestingOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22349,
                            "src": "4218:13:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4203:28:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 22415,
                        "nodeType": "ExpressionStatement",
                        "src": "4203:28:80"
                      }
                    ]
                  },
                  "documentation": "@notice Contract deployment settings.\n@param _vestingFactory The address of vesting factory contract.\n@param _SOV The SOV token address.\n@param _CSOVtokens The array of cSOV tokens.\n@param _priceSats The price of cSOV tokens in satoshis.\n@param _staking The address of staking contract.\n@param _feeSharingProxy The address of fee sharing proxy contract.\n@param _vestingOwner The address of an owner of vesting contract.\n@dev On Sovryn the vesting owner is Exchequer Multisig.\nAccording to SIP-0007 The Exchequer Multisig is designated to hold\ncertain funds in the form of rBTC and SOV, in order to allow for\nflexible deployment of such funds on:\n + facilitating rBTC redemptions for Genesis pre-sale participants.\n + deploying of SOV for the purposes of exchange listings, market\n   making, and partnerships with third parties.\n",
                  "id": 22417,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22350,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22336,
                        "name": "_vestingFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 22417,
                        "src": "3584:23:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22335,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3584:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22338,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 22417,
                        "src": "3611:12:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22337,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3611:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22341,
                        "name": "_CSOVtokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 22417,
                        "src": "3627:28:80",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 22339,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3627:7:80",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 22340,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3627:9:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22343,
                        "name": "_priceSats",
                        "nodeType": "VariableDeclaration",
                        "scope": 22417,
                        "src": "3659:18:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22342,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3659:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22345,
                        "name": "_staking",
                        "nodeType": "VariableDeclaration",
                        "scope": 22417,
                        "src": "3681:16:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22344,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3681:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22347,
                        "name": "_feeSharingProxy",
                        "nodeType": "VariableDeclaration",
                        "scope": 22417,
                        "src": "3701:24:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22346,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3701:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22349,
                        "name": "_vestingOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 22417,
                        "src": "3729:21:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22348,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3729:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3580:173:80"
                  },
                  "returnParameters": {
                    "id": 22351,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3761:0:80"
                  },
                  "scope": 23038,
                  "src": "3569:666:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22431,
                    "nodeType": "Block",
                    "src": "4346:69:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 22426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 22420,
                                  "name": "isOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41761,
                                  "src": "4358:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 22421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4358:9:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 22422,
                                  "name": "admins",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22281,
                                  "src": "4371:6:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 22425,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22423,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "4378:3:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 22424,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4378:10:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4371:18:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4358:31:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 22427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4391:14:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 22419,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4350:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4350:56:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22429,
                        "nodeType": "ExpressionStatement",
                        "src": "4350:56:80"
                      },
                      {
                        "id": 22430,
                        "nodeType": "PlaceholderStatement",
                        "src": "4410:1:80"
                      }
                    ]
                  },
                  "documentation": "@dev Throws if called by any account other than the owner or admin.",
                  "id": 22432,
                  "name": "onlyAuthorized",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 22418,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4343:2:80"
                  },
                  "src": "4320:95:80",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22449,
                    "nodeType": "Block",
                    "src": "4582:56:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22439,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22281,
                              "src": "4586:6:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 22441,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22440,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22434,
                              "src": "4593:6:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4586:14:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 22442,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4603:4:80",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "4586:21:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22444,
                        "nodeType": "ExpressionStatement",
                        "src": "4586:21:80"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22446,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22434,
                              "src": "4627:6:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 22445,
                            "name": "AdminAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22330,
                            "src": "4616:10:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 22447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4616:18:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22448,
                        "nodeType": "EmitStatement",
                        "src": "4611:23:80"
                      }
                    ]
                  },
                  "documentation": "@notice Add account to ACL.\n@param _admin The addresses of the account to grant permissions.\n",
                  "id": 22450,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22437,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22436,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "4572:9:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4572:9:80"
                    }
                  ],
                  "name": "addAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22435,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22434,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 22450,
                        "src": "4549:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22433,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4549:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4548:16:80"
                  },
                  "returnParameters": {
                    "id": 22438,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4582:0:80"
                  },
                  "scope": 23038,
                  "src": "4531:107:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22467,
                    "nodeType": "Block",
                    "src": "4814:59:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22457,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22281,
                              "src": "4818:6:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 22459,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22458,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22452,
                              "src": "4825:6:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4818:14:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 22460,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4835:5:80",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "4818:22:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22462,
                        "nodeType": "ExpressionStatement",
                        "src": "4818:22:80"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22464,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22452,
                              "src": "4862:6:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 22463,
                            "name": "AdminRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22334,
                            "src": "4849:12:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 22465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4849:20:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22466,
                        "nodeType": "EmitStatement",
                        "src": "4844:25:80"
                      }
                    ]
                  },
                  "documentation": "@notice Remove account from ACL.\n@param _admin The addresses of the account to revoke permissions.\n",
                  "id": 22468,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22455,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22454,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "4804:9:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4804:9:80"
                    }
                  ],
                  "name": "removeAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22453,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22452,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 22468,
                        "src": "4781:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22451,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4781:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4780:16:80"
                  },
                  "returnParameters": {
                    "id": 22456,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4814:0:80"
                  },
                  "scope": 23038,
                  "src": "4760:113:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22480,
                    "nodeType": "Block",
                    "src": "4980:85:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "4992:26:80",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 22471,
                                  "name": "processedList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22269,
                                  "src": "4993:13:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 22474,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22472,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "5007:3:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 22473,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5007:10:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4993:25:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416464726573732063616e6e6f742062652070726f636573736564207477696365",
                              "id": 22476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5020:35:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2b21463c7aebd5f1ed1e5ea8865bcdd4757605fbce82da71f3f46644d4359a80",
                                "typeString": "literal_string \"Address cannot be processed twice\""
                              },
                              "value": "Address cannot be processed twice"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2b21463c7aebd5f1ed1e5ea8865bcdd4757605fbce82da71f3f46644d4359a80",
                                "typeString": "literal_string \"Address cannot be processed twice\""
                              }
                            ],
                            "id": 22470,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4984:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4984:72:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22478,
                        "nodeType": "ExpressionStatement",
                        "src": "4984:72:80"
                      },
                      {
                        "id": 22479,
                        "nodeType": "PlaceholderStatement",
                        "src": "5060:1:80"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 22481,
                  "name": "isNotProcessed",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 22469,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4977:2:80"
                  },
                  "src": "4954:111:80",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22493,
                    "nodeType": "Block",
                    "src": "5096:67:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "5108:22:80",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 22484,
                                  "name": "blacklist",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22273,
                                  "src": "5109:9:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 22487,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22485,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "5119:3:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 22486,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5119:10:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5109:21:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4164647265737320626c61636b6c6973746564",
                              "id": 22489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5132:21:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6d54ff89c38bd80dce3de6c88eb9ac19e1cc5e389cfd046cf899f029f448cf93",
                                "typeString": "literal_string \"Address blacklisted\""
                              },
                              "value": "Address blacklisted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6d54ff89c38bd80dce3de6c88eb9ac19e1cc5e389cfd046cf899f029f448cf93",
                                "typeString": "literal_string \"Address blacklisted\""
                              }
                            ],
                            "id": 22483,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5100:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5100:54:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22491,
                        "nodeType": "ExpressionStatement",
                        "src": "5100:54:80"
                      },
                      {
                        "id": 22492,
                        "nodeType": "PlaceholderStatement",
                        "src": "5158:1:80"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 22494,
                  "name": "isNotBlacklisted",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 22482,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5093:2:80"
                  },
                  "src": "5068:95:80",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22508,
                    "nodeType": "Block",
                    "src": "5309:67:80",
                    "statements": [
                      {
                        "assignments": [
                          22500
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22500,
                            "name": "SCBudget",
                            "nodeType": "VariableDeclaration",
                            "scope": 22508,
                            "src": "5313:16:80",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22499,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5313:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22505,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 22502,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45238,
                                "src": "5340:4:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_VestingRegistry2_$23038",
                                  "typeString": "contract VestingRegistry2"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_VestingRegistry2_$23038",
                                  "typeString": "contract VestingRegistry2"
                                }
                              ],
                              "id": 22501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5332:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 22503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5332:13:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 22504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5332:21:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5313:40:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22506,
                          "name": "SCBudget",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22500,
                          "src": "5364:8:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 22498,
                        "id": 22507,
                        "nodeType": "Return",
                        "src": "5357:15:80"
                      }
                    ]
                  },
                  "documentation": "@notice Get contract balance.\n@return The token balance of the contract.\n",
                  "id": 22509,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "budget",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22495,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5274:2:80"
                  },
                  "returnParameters": {
                    "id": 22498,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22497,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 22509,
                        "src": "5300:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22496,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5300:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5299:9:80"
                  },
                  "scope": 23038,
                  "src": "5259:117:80",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 22512,
                    "nodeType": "Block",
                    "src": "5481:2:80",
                    "statements": []
                  },
                  "documentation": "@notice Deposit function to receiving value (rBTC).\n",
                  "id": 22513,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22510,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5463:2:80"
                  },
                  "returnParameters": {
                    "id": 22511,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5481:0:80"
                  },
                  "scope": 23038,
                  "src": "5447:36:80",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22529,
                    "nodeType": "Block",
                    "src": "5667:42:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 22524,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45238,
                                    "src": "5691:4:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_VestingRegistry2_$23038",
                                      "typeString": "contract VestingRegistry2"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_VestingRegistry2_$23038",
                                      "typeString": "contract VestingRegistry2"
                                    }
                                  ],
                                  "id": 22523,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5683:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 22525,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5683:13:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 22526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5683:21:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 22520,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22515,
                              "src": "5671:2:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 22522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5671:11:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 22527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5671:34:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22528,
                        "nodeType": "ExpressionStatement",
                        "src": "5671:34:80"
                      }
                    ]
                  },
                  "documentation": "@notice Send all contract balance to an account.\n@param to The account address to send the balance to.\n",
                  "id": 22530,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22518,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22517,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "5657:9:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5657:9:80"
                    }
                  ],
                  "name": "withdrawAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22516,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22515,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 22530,
                        "src": "5630:18:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 22514,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5630:15:80",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5629:20:80"
                  },
                  "returnParameters": {
                    "id": 22519,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5667:0:80"
                  },
                  "scope": 23038,
                  "src": "5609:100:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22541,
                    "nodeType": "Block",
                    "src": "6414:43:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22538,
                              "name": "_vestingFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22532,
                              "src": "6437:15:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 22537,
                            "name": "_setVestingFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22563,
                            "src": "6418:18:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 22539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6418:35:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22540,
                        "nodeType": "ExpressionStatement",
                        "src": "6418:35:80"
                      }
                    ]
                  },
                  "documentation": "@notice Sets vesting factory address. High level endpoint.\n@param _vestingFactory The address of vesting factory contract.\n\t * @dev Splitting code on two functions: high level and low level\nis a pattern that makes easy to extend functionality in a readable way,\nwithout accidentally breaking the actual action being performed.\nFor example, checks should be done on high level endpoint, while core\nfunctionality should be coded on the low level function.\n",
                  "id": 22542,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22535,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22534,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "6404:9:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6404:9:80"
                    }
                  ],
                  "name": "setVestingFactory",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22533,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22532,
                        "name": "_vestingFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 22542,
                        "src": "6372:23:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22531,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6372:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6371:25:80"
                  },
                  "returnParameters": {
                    "id": 22536,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6414:0:80"
                  },
                  "scope": 23038,
                  "src": "6345:112:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22562,
                    "nodeType": "Block",
                    "src": "6669:133:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 22552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22548,
                                "name": "_vestingFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22544,
                                "src": "6681:15:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 22550,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6708:1:80",
                                    "subdenomination": null,
                                    "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": 22549,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6700:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 22551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6700:10:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6681:29:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76657374696e67466163746f7279206164647265737320696e76616c6964",
                              "id": 22553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6712:32:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_33d40e3e5b244e71e62a578e5bb02946f2835ec33d3d09a65bacc2cbbd8a1430",
                                "typeString": "literal_string \"vestingFactory address invalid\""
                              },
                              "value": "vestingFactory address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_33d40e3e5b244e71e62a578e5bb02946f2835ec33d3d09a65bacc2cbbd8a1430",
                                "typeString": "literal_string \"vestingFactory address invalid\""
                              }
                            ],
                            "id": 22547,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6673:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6673:72:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22555,
                        "nodeType": "ExpressionStatement",
                        "src": "6673:72:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22556,
                            "name": "vestingFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22246,
                            "src": "6749:14:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                              "typeString": "contract IVestingFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 22558,
                                "name": "_vestingFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22544,
                                "src": "6782:15:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 22557,
                              "name": "IVestingFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18638,
                              "src": "6766:15:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IVestingFactory_$18638_$",
                                "typeString": "type(contract IVestingFactory)"
                              }
                            },
                            "id": 22559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6766:32:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                              "typeString": "contract IVestingFactory"
                            }
                          },
                          "src": "6749:49:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                            "typeString": "contract IVestingFactory"
                          }
                        },
                        "id": 22561,
                        "nodeType": "ExpressionStatement",
                        "src": "6749:49:80"
                      }
                    ]
                  },
                  "documentation": "@notice Sets vesting factory address. Low level core function.\n@param _vestingFactory The address of vesting factory contract.\n",
                  "id": 22563,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setVestingFactory",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22545,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22544,
                        "name": "_vestingFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 22563,
                        "src": "6635:23:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22543,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6635:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6634:25:80"
                  },
                  "returnParameters": {
                    "id": 22546,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6669:0:80"
                  },
                  "scope": 23038,
                  "src": "6607:195:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22575,
                    "nodeType": "Block",
                    "src": "6993:35:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22572,
                              "name": "_CSOVtokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22566,
                              "src": "7012:11:80",
                              "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": 22571,
                            "name": "_setCSOVtokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22611,
                            "src": "6997:14:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory)"
                            }
                          },
                          "id": 22573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6997:27:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22574,
                        "nodeType": "ExpressionStatement",
                        "src": "6997:27:80"
                      }
                    ]
                  },
                  "documentation": "@notice Sets cSOV tokens array. High level endpoint.\n@param _CSOVtokens The array of cSOV tokens.\n",
                  "id": 22576,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22569,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22568,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "6983:9:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6983:9:80"
                    }
                  ],
                  "name": "setCSOVtokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22567,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22566,
                        "name": "_CSOVtokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 22576,
                        "src": "6946:28:80",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 22564,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6946:7:80",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 22565,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "6946:9:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6945:30:80"
                  },
                  "returnParameters": {
                    "id": 22570,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6993:0:80"
                  },
                  "scope": 23038,
                  "src": "6923:105:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22610,
                    "nodeType": "Block",
                    "src": "7236:155:80",
                    "statements": [
                      {
                        "body": {
                          "id": 22604,
                          "nodeType": "Block",
                          "src": "7289:71:80",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 22600,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 22594,
                                        "name": "_CSOVtokens",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22579,
                                        "src": "7302:11:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 22596,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 22595,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22583,
                                        "src": "7314:1:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7302:14:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 22598,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7328:1:80",
                                          "subdenomination": null,
                                          "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": 22597,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "7320:7:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 22599,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7320:10:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "7302:28:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "43534f56206164647265737320696e76616c6964",
                                    "id": 22601,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7332:22:80",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8e43be39a20c411b93bf5e7df057683fb367493eb5300e957c46c23454607bc6",
                                      "typeString": "literal_string \"CSOV address invalid\""
                                    },
                                    "value": "CSOV address invalid"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8e43be39a20c411b93bf5e7df057683fb367493eb5300e957c46c23454607bc6",
                                      "typeString": "literal_string \"CSOV address invalid\""
                                    }
                                  ],
                                  "id": 22593,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "7294:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 22602,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7294:61:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22603,
                              "nodeType": "ExpressionStatement",
                              "src": "7294:61:80"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 22586,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22583,
                            "src": "7260:1:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 22587,
                              "name": "_CSOVtokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22579,
                              "src": "7264:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 22588,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7264:18:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7260:22:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22605,
                        "initializationExpression": {
                          "assignments": [
                            22583
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 22583,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 22605,
                              "src": "7245:9:80",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 22582,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7245:7:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 22585,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 22584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7257:1:80",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7245:13:80"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 22591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "7284:3:80",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 22590,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22583,
                              "src": "7284:1:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22592,
                          "nodeType": "ExpressionStatement",
                          "src": "7284:3:80"
                        },
                        "nodeType": "ForStatement",
                        "src": "7240:120:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22606,
                            "name": "CSOVtokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22251,
                            "src": "7363:10:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22607,
                            "name": "_CSOVtokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22579,
                            "src": "7376:11:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "7363:24:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 22609,
                        "nodeType": "ExpressionStatement",
                        "src": "7363:24:80"
                      }
                    ]
                  },
                  "documentation": "@notice Sets cSOV tokens array by looping through input. Low level function.\n@param _CSOVtokens The array of cSOV tokens.\n",
                  "id": 22611,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setCSOVtokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22580,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22579,
                        "name": "_CSOVtokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 22611,
                        "src": "7197:28:80",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 22577,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7197:7:80",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 22578,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7197:9:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7196:30:80"
                  },
                  "returnParameters": {
                    "id": 22581,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7236:0:80"
                  },
                  "scope": 23038,
                  "src": "7173:218:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22635,
                    "nodeType": "Block",
                    "src": "7650:105:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 22625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22621,
                                "name": "_account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22613,
                                "src": "7662:8:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 22623,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7682:1:80",
                                    "subdenomination": null,
                                    "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": 22622,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7674:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 22624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7674:10:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "7662:22:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6163636f756e74206164647265737320696e76616c6964",
                              "id": 22626,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7686:25:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9c90b12ae54115fc73eac2e81cd8e13d9286cbd9ccce42650888c2f1d3db4413",
                                "typeString": "literal_string \"account address invalid\""
                              },
                              "value": "account address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9c90b12ae54115fc73eac2e81cd8e13d9286cbd9ccce42650888c2f1d3db4413",
                                "typeString": "literal_string \"account address invalid\""
                              }
                            ],
                            "id": 22620,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7654:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7654:58:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22628,
                        "nodeType": "ExpressionStatement",
                        "src": "7654:58:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22629,
                              "name": "blacklist",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22273,
                              "src": "7717:9:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 22631,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22630,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22613,
                              "src": "7727:8:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7717:19:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22632,
                            "name": "_blacklisted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22615,
                            "src": "7739:12:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7717:34:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22634,
                        "nodeType": "ExpressionStatement",
                        "src": "7717:34:80"
                      }
                    ]
                  },
                  "documentation": "@notice Set blacklist flag (true/false).\n@param _account The address to be blacklisted.\n@param _blacklisted The flag to add/remove to/from a blacklist.\n",
                  "id": 22636,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22618,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22617,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "7640:9:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7640:9:80"
                    }
                  ],
                  "name": "setBlacklistFlag",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22616,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22613,
                        "name": "_account",
                        "nodeType": "VariableDeclaration",
                        "scope": 22636,
                        "src": "7596:16:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22612,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7596:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22615,
                        "name": "_blacklisted",
                        "nodeType": "VariableDeclaration",
                        "scope": 22636,
                        "src": "7614:17:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 22614,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7614:4:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7595:37:80"
                  },
                  "returnParameters": {
                    "id": 22619,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7650:0:80"
                  },
                  "scope": 23038,
                  "src": "7570:185:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22667,
                    "nodeType": "Block",
                    "src": "8008:146:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 22650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22646,
                                "name": "_account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22638,
                                "src": "8020:8:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 22648,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8040:1:80",
                                    "subdenomination": null,
                                    "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": 22647,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8032:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 22649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8032:10:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "8020:22:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6163636f756e74206164647265737320696e76616c6964",
                              "id": 22651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8044:25:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9c90b12ae54115fc73eac2e81cd8e13d9286cbd9ccce42650888c2f1d3db4413",
                                "typeString": "literal_string \"account address invalid\""
                              },
                              "value": "account address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9c90b12ae54115fc73eac2e81cd8e13d9286cbd9ccce42650888c2f1d3db4413",
                                "typeString": "literal_string \"account address invalid\""
                              }
                            ],
                            "id": 22645,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8012:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8012:58:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22653,
                        "nodeType": "ExpressionStatement",
                        "src": "8012:58:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22655,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22640,
                                "src": "8082:7:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 22656,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8093:1:80",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8082:12:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 22658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8096:16:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 22654,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8074:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8074:39:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22660,
                        "nodeType": "ExpressionStatement",
                        "src": "8074:39:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22661,
                              "name": "lockedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22277,
                              "src": "8118:12:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 22663,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22662,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22638,
                              "src": "8131:8:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8118:22:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22664,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22640,
                            "src": "8143:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8118:32:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22666,
                        "nodeType": "ExpressionStatement",
                        "src": "8118:32:80"
                      }
                    ]
                  },
                  "documentation": "@notice Set amount to be subtracted from user token balance.\n@param _account The address with locked amount.\n@param _amount The amount to be locked.\n",
                  "id": 22668,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22643,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22642,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "7998:9:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7998:9:80"
                    }
                  ],
                  "name": "setLockedAmount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22641,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22638,
                        "name": "_account",
                        "nodeType": "VariableDeclaration",
                        "scope": 22668,
                        "src": "7956:16:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22637,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7956:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22640,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 22668,
                        "src": "7974:15:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22639,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7974:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7955:35:80"
                  },
                  "returnParameters": {
                    "id": 22644,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8008:0:80"
                  },
                  "scope": 23038,
                  "src": "7931:223:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22706,
                    "nodeType": "Block",
                    "src": "8510:199:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 22682,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22678,
                                "name": "_receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22670,
                                "src": "8522:9:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 22680,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8543:1:80",
                                    "subdenomination": null,
                                    "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": 22679,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8535:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 22681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8535:10:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "8522:23:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7265636569766572206164647265737320696e76616c6964",
                              "id": 22683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8547:26:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              },
                              "value": "receiver address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              }
                            ],
                            "id": 22677,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8514:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8514:60:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22685,
                        "nodeType": "ExpressionStatement",
                        "src": "8514:60:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22687,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22672,
                                "src": "8586:7:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 22688,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8597:1:80",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8586:12:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 22690,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8600:16:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 22686,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8578:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22691,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8578:39:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22692,
                        "nodeType": "ExpressionStatement",
                        "src": "8578:39:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22697,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22670,
                              "src": "8643:9:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22698,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22672,
                              "src": "8654:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22694,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22248,
                                  "src": "8629:3:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 22693,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "8622:6:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 22695,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8622:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 22696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24671,
                            "src": "8622:20:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 22699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8622:40:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22700,
                        "nodeType": "ExpressionStatement",
                        "src": "8622:40:80"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22702,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22670,
                              "src": "8686:9:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22703,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22672,
                              "src": "8697:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22701,
                            "name": "SOVTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22296,
                            "src": "8671:14:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 22704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8671:34:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22705,
                        "nodeType": "EmitStatement",
                        "src": "8666:39:80"
                      }
                    ]
                  },
                  "documentation": "@notice Transfer SOV tokens to given address.\n\t * @dev This is a wrapper for ERC-20 transfer function w/\nadditional checks and triggering an event.\n\t * @param _receiver The address of the SOV receiver.\n@param _amount The amount to be transferred.\n",
                  "id": 22707,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22675,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22674,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "8500:9:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8500:9:80"
                    }
                  ],
                  "name": "transferSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22673,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22670,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 22707,
                        "src": "8457:17:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22669,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8457:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22672,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 22707,
                        "src": "8476:15:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22671,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8476:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8456:36:80"
                  },
                  "returnParameters": {
                    "id": 22676,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8510:0:80"
                  },
                  "scope": 23038,
                  "src": "8436:273:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22742,
                    "nodeType": "Block",
                    "src": "8901:234:80",
                    "statements": [
                      {
                        "assignments": [
                          22713
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22713,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 22742,
                            "src": "8905:15:80",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 22712,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8905:7:80",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22720,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 22715,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "8943:3:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 22716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8943:10:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22717,
                              "name": "CSOV_VESTING_CLIFF",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22239,
                              "src": "8955:18:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22718,
                              "name": "CSOV_VESTING_DURATION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22244,
                              "src": "8975:21:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22714,
                            "name": "_getOrCreateVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22980,
                            "src": "8923:19:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (address,uint256,uint256) returns (address)"
                            }
                          },
                          "id": 22719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8923:74:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8905:92:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22725,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22713,
                              "src": "9022:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22726,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22709,
                              "src": "9031:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22722,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22248,
                                  "src": "9009:3:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 22721,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "9002:6:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 22723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9002:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 22724,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24662,
                            "src": "9002:19:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 22727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9002:37:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22728,
                        "nodeType": "ExpressionStatement",
                        "src": "9002:37:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22733,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22709,
                              "src": "9073:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22730,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22713,
                                  "src": "9052:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 22729,
                                "name": "IVesting",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18597,
                                "src": "9043:8:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IVesting_$18597_$",
                                  "typeString": "type(contract IVesting)"
                                }
                              },
                              "id": 22731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9043:17:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IVesting_$18597",
                                "typeString": "contract IVesting"
                              }
                            },
                            "id": 22732,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakeTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18596,
                            "src": "9043:29:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 22734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9043:38:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22735,
                        "nodeType": "ExpressionStatement",
                        "src": "9043:38:80"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 22737,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9111:3:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 22738,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9111:10:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22739,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22709,
                              "src": "9123:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22736,
                            "name": "CSOVTokensExchanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22290,
                            "src": "9091:19:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 22740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9091:40:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22741,
                        "nodeType": "EmitStatement",
                        "src": "9086:45:80"
                      }
                    ]
                  },
                  "documentation": "@notice cSOV tokens are moved and staked on Vesting contract.\n@param _amount The amount of tokens to be vested.\n",
                  "id": 22743,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_createVestingForCSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22710,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22709,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 22743,
                        "src": "8875:15:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22708,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8875:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8874:17:80"
                  },
                  "returnParameters": {
                    "id": 22711,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8901:0:80"
                  },
                  "scope": 23038,
                  "src": "8844:291:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22782,
                    "nodeType": "Block",
                    "src": "9312:195:80",
                    "statements": [
                      {
                        "assignments": [
                          22749
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22749,
                            "name": "isValid",
                            "nodeType": "VariableDeclaration",
                            "scope": 22782,
                            "src": "9316:12:80",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 22748,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9316:4:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22751,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 22750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9331:5:80",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9316:20:80"
                      },
                      {
                        "body": {
                          "id": 22775,
                          "nodeType": "Block",
                          "src": "9388:74:80",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 22767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 22763,
                                  "name": "_CSOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22745,
                                  "src": "9397:5:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 22764,
                                    "name": "CSOVtokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22251,
                                    "src": "9406:10:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 22766,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 22765,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22753,
                                    "src": "9417:1:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9406:13:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "9397:22:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 22774,
                              "nodeType": "IfStatement",
                              "src": "9393:65:80",
                              "trueBody": {
                                "id": 22773,
                                "nodeType": "Block",
                                "src": "9421:37:80",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 22770,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 22768,
                                        "name": "isValid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22749,
                                        "src": "9427:7:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "74727565",
                                        "id": 22769,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9437:4:80",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "true"
                                      },
                                      "src": "9427:14:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 22771,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9427:14:80"
                                  },
                                  {
                                    "id": 22772,
                                    "nodeType": "Break",
                                    "src": "9447:5:80"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22759,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 22756,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22753,
                            "src": "9360:1:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 22757,
                              "name": "CSOVtokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22251,
                              "src": "9364:10:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 22758,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9364:17:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9360:21:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22776,
                        "initializationExpression": {
                          "assignments": [
                            22753
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 22753,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 22776,
                              "src": "9345:9:80",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 22752,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9345:7:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 22755,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 22754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9357:1:80",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "9345:13:80"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 22761,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "9383:3:80",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 22760,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22753,
                              "src": "9383:1:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22762,
                          "nodeType": "ExpressionStatement",
                          "src": "9383:3:80"
                        },
                        "nodeType": "ForStatement",
                        "src": "9340:122:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22778,
                              "name": "isValid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22749,
                              "src": "9473:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "77726f6e672043534f562061646472657373",
                              "id": 22779,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9482:20:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_459cea1d2d28ca5ba0c9226fc2213f12c39c6be1b7f26df16dc63c7578bc565b",
                                "typeString": "literal_string \"wrong CSOV address\""
                              },
                              "value": "wrong CSOV address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_459cea1d2d28ca5ba0c9226fc2213f12c39c6be1b7f26df16dc63c7578bc565b",
                                "typeString": "literal_string \"wrong CSOV address\""
                              }
                            ],
                            "id": 22777,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9465:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9465:38:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22781,
                        "nodeType": "ExpressionStatement",
                        "src": "9465:38:80"
                      }
                    ]
                  },
                  "documentation": "@notice Check a token address is among the cSOV token addresses.\n@param _CSOV The cSOV token address.\n",
                  "id": 22783,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_validateCSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22746,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22745,
                        "name": "_CSOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 22783,
                        "src": "9283:13:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22744,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9283:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9282:15:80"
                  },
                  "returnParameters": {
                    "id": 22747,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9312:0:80"
                  },
                  "scope": 23038,
                  "src": "9260:247:80",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22812,
                    "nodeType": "Block",
                    "src": "9902:150:80",
                    "statements": [
                      {
                        "assignments": [
                          22797
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22797,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 22812,
                            "src": "9906:15:80",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 22796,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9906:7:80",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22803,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22799,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22785,
                              "src": "9944:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22800,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22789,
                              "src": "9957:6:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22801,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22791,
                              "src": "9965:9:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22798,
                            "name": "_getOrCreateVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22980,
                            "src": "9924:19:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (address,uint256,uint256) returns (address)"
                            }
                          },
                          "id": 22802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9924:51:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9906:69:80"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22805,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22785,
                              "src": "9999:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22806,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22797,
                              "src": "10012:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22807,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22789,
                              "src": "10021:6:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22808,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22791,
                              "src": "10029:9:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22809,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22787,
                              "src": "10040:7:80",
                              "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22804,
                            "name": "VestingCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22308,
                            "src": "9984:14:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 22810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9984:64:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22811,
                        "nodeType": "EmitStatement",
                        "src": "9979:69:80"
                      }
                    ]
                  },
                  "documentation": "@notice Create Vesting contract.\n@param _tokenOwner The owner of the tokens.\n@param _amount The amount to be staked.\n@param _cliff The time interval to the first withdraw in seconds.\n@param _duration The total duration in seconds.\n",
                  "id": 22813,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22794,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22793,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22432,
                        "src": "9887:14:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9887:14:80"
                    }
                  ],
                  "name": "createVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22792,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22785,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 22813,
                        "src": "9799:19:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22784,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9799:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22787,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 22813,
                        "src": "9822:15:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22786,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9822:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22789,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 22813,
                        "src": "9841:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22788,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9841:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22791,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 22813,
                        "src": "9859:17:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22790,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9859:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9795:84:80"
                  },
                  "returnParameters": {
                    "id": 22795,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9902:0:80"
                  },
                  "scope": 23038,
                  "src": "9773:279:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22842,
                    "nodeType": "Block",
                    "src": "10456:158:80",
                    "statements": [
                      {
                        "assignments": [
                          22827
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22827,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 22842,
                            "src": "10460:15:80",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 22826,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10460:7:80",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22833,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22829,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22815,
                              "src": "10502:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22830,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "10515:6:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22831,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22821,
                              "src": "10523:9:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22828,
                            "name": "_getOrCreateTeamVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23037,
                            "src": "10478:23:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (address,uint256,uint256) returns (address)"
                            }
                          },
                          "id": 22832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10478:55:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10460:73:80"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22835,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22815,
                              "src": "10561:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22836,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22827,
                              "src": "10574:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22837,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22819,
                              "src": "10583:6:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22838,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22821,
                              "src": "10591:9:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22839,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22817,
                              "src": "10602:7:80",
                              "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22834,
                            "name": "TeamVestingCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22320,
                            "src": "10542:18:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 22840,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10542:68:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22841,
                        "nodeType": "EmitStatement",
                        "src": "10537:73:80"
                      }
                    ]
                  },
                  "documentation": "@notice Create Team Vesting contract.\n@param _tokenOwner The owner of the tokens.\n@param _amount The amount to be staked.\n@param _cliff The time interval to the first withdraw in seconds.\n@param _duration The total duration in seconds.\n",
                  "id": 22843,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22824,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22823,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22432,
                        "src": "10441:14:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10441:14:80"
                    }
                  ],
                  "name": "createTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22822,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22815,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 22843,
                        "src": "10353:19:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22814,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10353:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22817,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 22843,
                        "src": "10376:15:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22816,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10376:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22819,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 22843,
                        "src": "10395:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22818,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10395:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22821,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 22843,
                        "src": "10413:17:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22820,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10413:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10349:84:80"
                  },
                  "returnParameters": {
                    "id": 22825,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10456:0:80"
                  },
                  "scope": 23038,
                  "src": "10323:291:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22888,
                    "nodeType": "Block",
                    "src": "10867:234:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 22857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22853,
                                "name": "_vesting",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22845,
                                "src": "10879:8:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 22855,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10899:1:80",
                                    "subdenomination": null,
                                    "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": 22854,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10891:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 22856,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10891:10:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "10879:22:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76657374696e67206164647265737320696e76616c6964",
                              "id": 22858,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10903:25:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_380b2e4a9c1835648e0f5052b5fbe4ee62cf6b14ea12c4964331c26922214dc7",
                                "typeString": "literal_string \"vesting address invalid\""
                              },
                              "value": "vesting address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_380b2e4a9c1835648e0f5052b5fbe4ee62cf6b14ea12c4964331c26922214dc7",
                                "typeString": "literal_string \"vesting address invalid\""
                              }
                            ],
                            "id": 22852,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10871:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10871:58:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22860,
                        "nodeType": "ExpressionStatement",
                        "src": "10871:58:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 22862,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22847,
                                "src": "10941:7:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 22863,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10951:1:80",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "10941:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 22865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10954:16:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 22861,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10933:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10933:38:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22867,
                        "nodeType": "ExpressionStatement",
                        "src": "10933:38:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22872,
                              "name": "_vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22845,
                              "src": "10996:8:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22873,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22847,
                              "src": "11006:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22869,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22248,
                                  "src": "10983:3:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 22868,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "10976:6:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 22870,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10976:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 22871,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24662,
                            "src": "10976:19:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 22874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10976:38:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22875,
                        "nodeType": "ExpressionStatement",
                        "src": "10976:38:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22880,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22847,
                              "src": "11049:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22877,
                                  "name": "_vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22845,
                                  "src": "11027:8:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 22876,
                                "name": "IVesting",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18597,
                                "src": "11018:8:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IVesting_$18597_$",
                                  "typeString": "type(contract IVesting)"
                                }
                              },
                              "id": 22878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11018:18:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IVesting_$18597",
                                "typeString": "contract IVesting"
                              }
                            },
                            "id": 22879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakeTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18596,
                            "src": "11018:30:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 22881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11018:39:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22882,
                        "nodeType": "ExpressionStatement",
                        "src": "11018:39:80"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22884,
                              "name": "_vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22845,
                              "src": "11079:8:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22885,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22847,
                              "src": "11089:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22883,
                            "name": "TokensStaked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22326,
                            "src": "11066:12:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 22886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11066:31:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22887,
                        "nodeType": "EmitStatement",
                        "src": "11061:36:80"
                      }
                    ]
                  },
                  "documentation": "@notice Stake tokens according to the vesting schedule\n@param _vesting the address of Vesting contract\n@param _amount the amount of tokens to stake\n",
                  "id": 22889,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22850,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22849,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22432,
                        "src": "10852:14:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10852:14:80"
                    }
                  ],
                  "name": "stakeTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22848,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22845,
                        "name": "_vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 22889,
                        "src": "10810:16:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22844,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10810:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22847,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 22889,
                        "src": "10828:15:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22846,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10828:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10809:35:80"
                  },
                  "returnParameters": {
                    "id": 22851,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10867:0:80"
                  },
                  "scope": 23038,
                  "src": "10789:312:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22905,
                    "nodeType": "Block",
                    "src": "11358:74:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22896,
                              "name": "vestingContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22265,
                              "src": "11369:16:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 22898,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22897,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22891,
                              "src": "11386:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11369:29:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 22903,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 22900,
                                  "name": "VestingType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22284,
                                  "src": "11407:11:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_VestingType_$22284_$",
                                    "typeString": "type(enum VestingRegistry2.VestingType)"
                                  }
                                },
                                "id": 22901,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Vesting",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11407:19:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_VestingType_$22284",
                                  "typeString": "enum VestingRegistry2.VestingType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_VestingType_$22284",
                                  "typeString": "enum VestingRegistry2.VestingType"
                                }
                              ],
                              "id": 22899,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11399:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 22902,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11399:28:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11369:59:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 22895,
                        "id": 22904,
                        "nodeType": "Return",
                        "src": "11362:66:80"
                      }
                    ]
                  },
                  "documentation": "@notice Query the vesting contract for an account.\n@param _tokenOwner The owner of the tokens.\n@return The vesting contract address for the given token owner.\n",
                  "id": 22906,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22892,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22891,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 22906,
                        "src": "11307:19:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22890,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11307:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11306:21:80"
                  },
                  "returnParameters": {
                    "id": 22895,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22894,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 22906,
                        "src": "11349:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22893,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11349:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11348:9:80"
                  },
                  "scope": 23038,
                  "src": "11287:145:80",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22922,
                    "nodeType": "Block",
                    "src": "11703:78:80",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22913,
                              "name": "vestingContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22265,
                              "src": "11714:16:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 22915,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22914,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22908,
                              "src": "11731:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11714:29:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 22920,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 22917,
                                  "name": "VestingType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22284,
                                  "src": "11752:11:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_VestingType_$22284_$",
                                    "typeString": "type(enum VestingRegistry2.VestingType)"
                                  }
                                },
                                "id": 22918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "TeamVesting",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11752:23:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_VestingType_$22284",
                                  "typeString": "enum VestingRegistry2.VestingType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_VestingType_$22284",
                                  "typeString": "enum VestingRegistry2.VestingType"
                                }
                              ],
                              "id": 22916,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11744:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 22919,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11744:32:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11714:63:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 22912,
                        "id": 22921,
                        "nodeType": "Return",
                        "src": "11707:70:80"
                      }
                    ]
                  },
                  "documentation": "@notice Query the team vesting contract for an account.\n@param _tokenOwner The owner of the tokens.\n@return The team vesting contract address for the given token owner.\n",
                  "id": 22923,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22909,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22908,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 22923,
                        "src": "11652:19:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22907,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11652:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11651:21:80"
                  },
                  "returnParameters": {
                    "id": 22912,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22911,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 22923,
                        "src": "11694:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22910,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11694:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11693:9:80"
                  },
                  "scope": 23038,
                  "src": "11628:153:80",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22979,
                    "nodeType": "Block",
                    "src": "12266:416:80",
                    "statements": [
                      {
                        "assignments": [
                          22935
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22935,
                            "name": "type_",
                            "nodeType": "VariableDeclaration",
                            "scope": 22979,
                            "src": "12270:13:80",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22934,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12270:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22940,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 22937,
                                "name": "VestingType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22284,
                                "src": "12294:11:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_VestingType_$22284_$",
                                  "typeString": "type(enum VestingRegistry2.VestingType)"
                                }
                              },
                              "id": 22938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Vesting",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12294:19:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_VestingType_$22284",
                                "typeString": "enum VestingRegistry2.VestingType"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_VestingType_$22284",
                                "typeString": "enum VestingRegistry2.VestingType"
                              }
                            ],
                            "id": 22936,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12286:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 22939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12286:28:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12270:44:80"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 22949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 22941,
                                "name": "vestingContracts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22265,
                                "src": "12322:16:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => address))"
                                }
                              },
                              "id": 22943,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 22942,
                                "name": "_tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22925,
                                "src": "12339:11:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12322:29:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 22945,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22944,
                              "name": "type_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22935,
                              "src": "12352:5:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12322:36:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 22947,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12370:1:80",
                                "subdenomination": null,
                                "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": 22946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12362:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 22948,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12362:10:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "12322:50:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 22972,
                        "nodeType": "IfStatement",
                        "src": "12318:314:80",
                        "trueBody": {
                          "id": 22971,
                          "nodeType": "Block",
                          "src": "12374:258:80",
                          "statements": [
                            {
                              "assignments": [
                                22951
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22951,
                                  "name": "vesting",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22971,
                                  "src": "12454:15:80",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 22950,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12454:7:80",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22962,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 22954,
                                    "name": "SOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22248,
                                    "src": "12501:3:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22955,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22255,
                                    "src": "12506:7:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22956,
                                    "name": "_tokenOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22925,
                                    "src": "12515:11:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22957,
                                    "name": "_cliff",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22927,
                                    "src": "12528:6:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22958,
                                    "name": "_duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22929,
                                    "src": "12536:9:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22959,
                                    "name": "feeSharingProxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22257,
                                    "src": "12547:15:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22960,
                                    "name": "_tokenOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22925,
                                    "src": "12564:11:80",
                                    "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_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22952,
                                    "name": "vestingFactory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22246,
                                    "src": "12472:14:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                                      "typeString": "contract IVestingFactory"
                                    }
                                  },
                                  "id": 22953,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "deployVesting",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18618,
                                  "src": "12472:28:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address,uint256,uint256,address,address) external returns (address)"
                                  }
                                },
                                "id": 22961,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12472:104:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12454:122:80"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 22969,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 22963,
                                      "name": "vestingContracts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22265,
                                      "src": "12581:16:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => address))"
                                      }
                                    },
                                    "id": 22966,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 22964,
                                      "name": "_tokenOwner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22925,
                                      "src": "12598:11:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12581:29:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 22967,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 22965,
                                    "name": "type_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22935,
                                    "src": "12611:5:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "12581:36:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 22968,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22951,
                                  "src": "12620:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "12581:46:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 22970,
                              "nodeType": "ExpressionStatement",
                              "src": "12581:46:80"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22973,
                              "name": "vestingContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22265,
                              "src": "12642:16:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 22975,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22974,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22925,
                              "src": "12659:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12642:29:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 22977,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 22976,
                            "name": "type_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22935,
                            "src": "12672:5:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12642:36:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 22933,
                        "id": 22978,
                        "nodeType": "Return",
                        "src": "12635:43:80"
                      }
                    ]
                  },
                  "documentation": "@notice If not exists, deploy a vesting contract through factory.\n@param _tokenOwner The owner of the tokens.\n@param _cliff The time interval to the first withdraw in seconds.\n@param _duration The total duration in seconds.\n@return The vesting contract address for the given token owner\nwhether it existed previously or not.\n",
                  "id": 22980,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getOrCreateVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22930,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22925,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 22980,
                        "src": "12177:19:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22924,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12177:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22927,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 22980,
                        "src": "12200:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22926,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12200:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22929,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 22980,
                        "src": "12218:17:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22928,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12218:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12173:65:80"
                  },
                  "returnParameters": {
                    "id": 22933,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22932,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 22980,
                        "src": "12257:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22931,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12257:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12256:9:80"
                  },
                  "scope": 23038,
                  "src": "12145:537:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23036,
                    "nodeType": "Block",
                    "src": "13181:350:80",
                    "statements": [
                      {
                        "assignments": [
                          22992
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22992,
                            "name": "type_",
                            "nodeType": "VariableDeclaration",
                            "scope": 23036,
                            "src": "13185:13:80",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22991,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13185:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22997,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 22994,
                                "name": "VestingType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22284,
                                "src": "13209:11:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_VestingType_$22284_$",
                                  "typeString": "type(enum VestingRegistry2.VestingType)"
                                }
                              },
                              "id": 22995,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "TeamVesting",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13209:23:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_VestingType_$22284",
                                "typeString": "enum VestingRegistry2.VestingType"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_VestingType_$22284",
                                "typeString": "enum VestingRegistry2.VestingType"
                              }
                            ],
                            "id": 22993,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13201:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 22996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13201:32:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13185:48:80"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 23006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 22998,
                                "name": "vestingContracts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22265,
                                "src": "13241:16:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => address))"
                                }
                              },
                              "id": 23000,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 22999,
                                "name": "_tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22982,
                                "src": "13258:11:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13241:29:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 23002,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 23001,
                              "name": "type_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22992,
                              "src": "13271:5:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13241:36:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 23004,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13289:1:80",
                                "subdenomination": null,
                                "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": 23003,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13281:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 23005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13281:10:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "13241:50:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 23029,
                        "nodeType": "IfStatement",
                        "src": "13237:244:80",
                        "trueBody": {
                          "id": 23028,
                          "nodeType": "Block",
                          "src": "13293:188:80",
                          "statements": [
                            {
                              "assignments": [
                                23008
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 23008,
                                  "name": "vesting",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 23028,
                                  "src": "13298:15:80",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 23007,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13298:7:80",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 23019,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23011,
                                    "name": "SOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22248,
                                    "src": "13349:3:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23012,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22255,
                                    "src": "13354:7:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23013,
                                    "name": "_tokenOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22982,
                                    "src": "13363:11:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23014,
                                    "name": "_cliff",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22984,
                                    "src": "13376:6:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23015,
                                    "name": "_duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22986,
                                    "src": "13384:9:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23016,
                                    "name": "feeSharingProxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22257,
                                    "src": "13395:15:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23017,
                                    "name": "vestingOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22259,
                                    "src": "13412:12:80",
                                    "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_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23009,
                                    "name": "vestingFactory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22246,
                                    "src": "13316:14:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                                      "typeString": "contract IVestingFactory"
                                    }
                                  },
                                  "id": 23010,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "deployTeamVesting",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18637,
                                  "src": "13316:32:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address,uint256,uint256,address,address) external returns (address)"
                                  }
                                },
                                "id": 23018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13316:109:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13298:127:80"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 23026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 23020,
                                      "name": "vestingContracts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22265,
                                      "src": "13430:16:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => address))"
                                      }
                                    },
                                    "id": 23023,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 23021,
                                      "name": "_tokenOwner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22982,
                                      "src": "13447:11:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13430:29:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 23024,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 23022,
                                    "name": "type_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22992,
                                    "src": "13460:5:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13430:36:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 23025,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23008,
                                  "src": "13469:7:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "13430:46:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 23027,
                              "nodeType": "ExpressionStatement",
                              "src": "13430:46:80"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 23030,
                              "name": "vestingContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22265,
                              "src": "13491:16:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 23032,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 23031,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22982,
                              "src": "13508:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13491:29:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 23034,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 23033,
                            "name": "type_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22992,
                            "src": "13521:5:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13491:36:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 22990,
                        "id": 23035,
                        "nodeType": "Return",
                        "src": "13484:43:80"
                      }
                    ]
                  },
                  "documentation": "@notice If not exists, deploy a team vesting contract through factory.\n@param _tokenOwner The owner of the tokens.\n@param _cliff The time interval to the first withdraw in seconds.\n@param _duration The total duration in seconds.\n@return The team vesting contract address for the given token owner\nwhether it existed previously or not.\n",
                  "id": 23037,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getOrCreateTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22987,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22982,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23037,
                        "src": "13092:19:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22981,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13092:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22984,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 23037,
                        "src": "13115:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22983,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13115:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22986,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 23037,
                        "src": "13133:17:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22985,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13133:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13088:65:80"
                  },
                  "returnParameters": {
                    "id": 22990,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22989,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 23037,
                        "src": "13172:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22988,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13172:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13171:9:80"
                  },
                  "scope": 23038,
                  "src": "13056:475:80",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 23039,
              "src": "434:13099:80"
            }
          ],
          "src": "0:13534:80"
        },
        "id": 80
      },
      "contracts/governance/Vesting/VestingRegistry3.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/VestingRegistry3.sol",
          "exportedSymbols": {
            "VestingRegistry3": [
              23568
            ]
          },
          "id": 23569,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 23040,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:81"
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../../openzeppelin/Ownable.sol",
              "id": 23041,
              "nodeType": "ImportDirective",
              "scope": 23569,
              "sourceUnit": 41799,
              "src": "26:40:81",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 23042,
              "nodeType": "ImportDirective",
              "scope": 23569,
              "sourceUnit": 24700,
              "src": "67:37:81",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/IStaking.sol",
              "file": "../Staking/IStaking.sol",
              "id": 23043,
              "nodeType": "ImportDirective",
              "scope": 23569,
              "sourceUnit": 13774,
              "src": "105:33:81",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/IFeeSharingProxy.sol",
              "file": "../IFeeSharingProxy.sol",
              "id": 23044,
              "nodeType": "ImportDirective",
              "scope": 23569,
              "sourceUnit": 13113,
              "src": "139:33:81",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/IVestingFactory.sol",
              "file": "./IVestingFactory.sol",
              "id": 23045,
              "nodeType": "ImportDirective",
              "scope": 23569,
              "sourceUnit": 18639,
              "src": "173:31:81",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/IVesting.sol",
              "file": "./IVesting.sol",
              "id": 23046,
              "nodeType": "ImportDirective",
              "scope": 23569,
              "sourceUnit": 18598,
              "src": "205:24:81",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/ITeamVesting.sol",
              "file": "./ITeamVesting.sol",
              "id": 23047,
              "nodeType": "ImportDirective",
              "scope": 23569,
              "sourceUnit": 18580,
              "src": "230:28:81",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../../openzeppelin/SafeMath.sol",
              "id": 23048,
              "nodeType": "ImportDirective",
              "scope": 23569,
              "sourceUnit": 42310,
              "src": "259:41:81",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 23049,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "331:7:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 23050,
                  "nodeType": "InheritanceSpecifier",
                  "src": "331:7:81"
                }
              ],
              "contractDependencies": [
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 23568,
              "linearizedBaseContracts": [
                23568,
                41798,
                41125
              ],
              "name": "VestingRegistry3",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 23053,
                  "libraryName": {
                    "contractScope": null,
                    "id": 23051,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "348:8:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "342:27:81",
                  "typeName": {
                    "id": 23052,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "361:7:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 23055,
                  "name": "vestingFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 23568,
                  "src": "372:37:81",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                    "typeString": "contract IVestingFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23054,
                    "name": "IVestingFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18638,
                    "src": "372:15:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                      "typeString": "contract IVestingFactory"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 23057,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 23568,
                  "src": "448:18:81",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23056,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "448:7:81",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 23059,
                  "name": "staking",
                  "nodeType": "VariableDeclaration",
                  "scope": 23568,
                  "src": "511:22:81",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23058,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "511:7:81",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 23061,
                  "name": "feeSharingProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 23568,
                  "src": "565:30:81",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23060,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "565:7:81",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 23063,
                  "name": "vestingOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 23568,
                  "src": "662:27:81",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23062,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "662:7:81",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 23069,
                  "name": "vestingContracts",
                  "nodeType": "VariableDeclaration",
                  "scope": 23568,
                  "src": "818:71:81",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                    "typeString": "mapping(address => mapping(uint256 => address))"
                  },
                  "typeName": {
                    "id": 23068,
                    "keyType": {
                      "id": 23064,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "826:7:81",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "818:47:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                      "typeString": "mapping(address => mapping(uint256 => address))"
                    },
                    "valueType": {
                      "id": 23067,
                      "keyType": {
                        "id": 23065,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "845:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "837:27:81",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      },
                      "valueType": {
                        "id": 23066,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "856:7:81",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 23073,
                  "name": "admins",
                  "nodeType": "VariableDeclaration",
                  "scope": 23568,
                  "src": "937:38:81",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 23072,
                    "keyType": {
                      "id": 23070,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "945:7:81",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "937:24:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 23071,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "956:4:81",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "canonicalName": "VestingRegistry3.VestingType",
                  "id": 23076,
                  "members": [
                    {
                      "id": 23074,
                      "name": "TeamVesting",
                      "nodeType": "EnumValue",
                      "src": "1000:11:81"
                    },
                    {
                      "id": 23075,
                      "name": "Vesting",
                      "nodeType": "EnumValue",
                      "src": "1033:7:81"
                    }
                  ],
                  "name": "VestingType",
                  "nodeType": "EnumDefinition",
                  "src": "979:85:81"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 23082,
                  "name": "SOVTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 23081,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23078,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 23082,
                        "src": "1088:24:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23077,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1088:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23080,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23082,
                        "src": "1114:14:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23079,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1114:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1087:42:81"
                  },
                  "src": "1067:63:81"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 23094,
                  "name": "VestingCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 23093,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23084,
                        "indexed": true,
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23094,
                        "src": "1153:26:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23083,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1153:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23086,
                        "indexed": false,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 23094,
                        "src": "1181:15:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23085,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1181:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23088,
                        "indexed": false,
                        "name": "cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 23094,
                        "src": "1198:13:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23087,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1198:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23090,
                        "indexed": false,
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 23094,
                        "src": "1213:16:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23089,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1213:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23092,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23094,
                        "src": "1231:14:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23091,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1231:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1152:94:81"
                  },
                  "src": "1132:115:81"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 23106,
                  "name": "TeamVestingCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 23105,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23096,
                        "indexed": true,
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23106,
                        "src": "1274:26:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23095,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1274:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23098,
                        "indexed": false,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 23106,
                        "src": "1302:15:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23097,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1302:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23100,
                        "indexed": false,
                        "name": "cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 23106,
                        "src": "1319:13:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23099,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1319:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23102,
                        "indexed": false,
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 23106,
                        "src": "1334:16:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23101,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1334:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23104,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23106,
                        "src": "1352:14:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23103,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1352:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1273:94:81"
                  },
                  "src": "1249:119:81"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 23112,
                  "name": "TokensStaked",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 23111,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23108,
                        "indexed": true,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 23112,
                        "src": "1389:23:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23107,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1389:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23110,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23112,
                        "src": "1414:14:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23109,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1414:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1388:41:81"
                  },
                  "src": "1370:60:81"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 23116,
                  "name": "AdminAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 23115,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23114,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 23116,
                        "src": "1449:13:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23113,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1449:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1448:15:81"
                  },
                  "src": "1432:32:81"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 23120,
                  "name": "AdminRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 23119,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23118,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 23120,
                        "src": "1485:13:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23117,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1485:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1484:15:81"
                  },
                  "src": "1466:34:81"
                },
                {
                  "body": {
                    "id": 23189,
                    "nodeType": "Block",
                    "src": "1641:417:81",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23138,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23134,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23124,
                                "src": "1653:4:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23136,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1669:1:81",
                                    "subdenomination": null,
                                    "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": 23135,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1661:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1661:10:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1653:18:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "534f56206164647265737320696e76616c6964",
                              "id": 23139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1673:21:81",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              },
                              "value": "SOV address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              }
                            ],
                            "id": 23133,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1645:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1645:50:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23141,
                        "nodeType": "ExpressionStatement",
                        "src": "1645:50:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23143,
                                "name": "_staking",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23126,
                                "src": "1707:8:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23145,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1727:1:81",
                                    "subdenomination": null,
                                    "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": 23144,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1719:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23146,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1719:10:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1707:22:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7374616b696e67206164647265737320696e76616c6964",
                              "id": 23148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1731:25:81",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dad5f662c3fef12349ee5cce4e61e29872181081c3701c492f86e4a0edbc8478",
                                "typeString": "literal_string \"staking address invalid\""
                              },
                              "value": "staking address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dad5f662c3fef12349ee5cce4e61e29872181081c3701c492f86e4a0edbc8478",
                                "typeString": "literal_string \"staking address invalid\""
                              }
                            ],
                            "id": 23142,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1699:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1699:58:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23150,
                        "nodeType": "ExpressionStatement",
                        "src": "1699:58:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23152,
                                "name": "_feeSharingProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23128,
                                "src": "1769:16:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23154,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1797:1:81",
                                    "subdenomination": null,
                                    "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": 23153,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1789:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23155,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1789:10:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1769:30:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66656553686172696e6750726f7879206164647265737320696e76616c6964",
                              "id": 23157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1801:33:81",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c10cbcafb5aa87027ea5ae59f7021a70ed9eaf13f3cc1fd382043183365fd95b",
                                "typeString": "literal_string \"feeSharingProxy address invalid\""
                              },
                              "value": "feeSharingProxy address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c10cbcafb5aa87027ea5ae59f7021a70ed9eaf13f3cc1fd382043183365fd95b",
                                "typeString": "literal_string \"feeSharingProxy address invalid\""
                              }
                            ],
                            "id": 23151,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1761:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1761:74:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23159,
                        "nodeType": "ExpressionStatement",
                        "src": "1761:74:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23165,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23161,
                                "name": "_vestingOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23130,
                                "src": "1847:13:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23163,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1872:1:81",
                                    "subdenomination": null,
                                    "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": 23162,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1864:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23164,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1864:10:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1847:27:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76657374696e674f776e6572206164647265737320696e76616c6964",
                              "id": 23166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1876:30:81",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_598ae3ed2d682ddf536de8d8e8c428d9f03a35b481b508f2312a3aa5c981fa0a",
                                "typeString": "literal_string \"vestingOwner address invalid\""
                              },
                              "value": "vestingOwner address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_598ae3ed2d682ddf536de8d8e8c428d9f03a35b481b508f2312a3aa5c981fa0a",
                                "typeString": "literal_string \"vestingOwner address invalid\""
                              }
                            ],
                            "id": 23160,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1839:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1839:68:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23168,
                        "nodeType": "ExpressionStatement",
                        "src": "1839:68:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23170,
                              "name": "_vestingFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23122,
                              "src": "1931:15:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 23169,
                            "name": "_setVestingFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23274,
                            "src": "1912:18:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 23171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1912:35:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23172,
                        "nodeType": "ExpressionStatement",
                        "src": "1912:35:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23173,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23057,
                            "src": "1952:3:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 23174,
                            "name": "_SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23124,
                            "src": "1958:4:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1952:10:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23176,
                        "nodeType": "ExpressionStatement",
                        "src": "1952:10:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23177,
                            "name": "staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23059,
                            "src": "1966:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 23178,
                            "name": "_staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23126,
                            "src": "1976:8:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1966:18:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23180,
                        "nodeType": "ExpressionStatement",
                        "src": "1966:18:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23181,
                            "name": "feeSharingProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23061,
                            "src": "1988:15:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 23182,
                            "name": "_feeSharingProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23128,
                            "src": "2006:16:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1988:34:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23184,
                        "nodeType": "ExpressionStatement",
                        "src": "1988:34:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23185,
                            "name": "vestingOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23063,
                            "src": "2026:12:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 23186,
                            "name": "_vestingOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23130,
                            "src": "2041:13:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2026:28:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23188,
                        "nodeType": "ExpressionStatement",
                        "src": "2026:28:81"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 23190,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23122,
                        "name": "_vestingFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 23190,
                        "src": "1518:23:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23121,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1518:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23124,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 23190,
                        "src": "1545:12:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23123,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1545:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23126,
                        "name": "_staking",
                        "nodeType": "VariableDeclaration",
                        "scope": 23190,
                        "src": "1561:16:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23125,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1561:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23128,
                        "name": "_feeSharingProxy",
                        "nodeType": "VariableDeclaration",
                        "scope": 23190,
                        "src": "1581:24:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23127,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1581:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23130,
                        "name": "_vestingOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23190,
                        "src": "1609:21:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23129,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1609:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1514:119:81"
                  },
                  "returnParameters": {
                    "id": 23132,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1641:0:81"
                  },
                  "scope": 23568,
                  "src": "1503:555:81",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23204,
                    "nodeType": "Block",
                    "src": "2169:69:81",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 23199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 23193,
                                  "name": "isOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41761,
                                  "src": "2181:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 23194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2181:9:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 23195,
                                  "name": "admins",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23073,
                                  "src": "2194:6:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 23198,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23196,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "2201:3:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 23197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2201:10:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2194:18:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2181:31:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 23200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2214:14:81",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 23192,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2173:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2173:56:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23202,
                        "nodeType": "ExpressionStatement",
                        "src": "2173:56:81"
                      },
                      {
                        "id": 23203,
                        "nodeType": "PlaceholderStatement",
                        "src": "2233:1:81"
                      }
                    ]
                  },
                  "documentation": "@dev Throws if called by any account other than the owner or admin.",
                  "id": 23205,
                  "name": "onlyAuthorized",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 23191,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2166:2:81"
                  },
                  "src": "2143:95:81",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23222,
                    "nodeType": "Block",
                    "src": "2292:56:81",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 23212,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23073,
                              "src": "2296:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 23214,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 23213,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23207,
                              "src": "2303:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2296:14:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 23215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2313:4:81",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "2296:21:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23217,
                        "nodeType": "ExpressionStatement",
                        "src": "2296:21:81"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23219,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23207,
                              "src": "2337:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 23218,
                            "name": "AdminAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23116,
                            "src": "2326:10:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 23220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2326:18:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23221,
                        "nodeType": "EmitStatement",
                        "src": "2321:23:81"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 23223,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23210,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23209,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2282:9:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2282:9:81"
                    }
                  ],
                  "name": "addAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23208,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23207,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 23223,
                        "src": "2259:14:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23206,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2259:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2258:16:81"
                  },
                  "returnParameters": {
                    "id": 23211,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2292:0:81"
                  },
                  "scope": 23568,
                  "src": "2241:107:81",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23240,
                    "nodeType": "Block",
                    "src": "2405:59:81",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 23230,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23073,
                              "src": "2409:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 23232,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 23231,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23225,
                              "src": "2416:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2409:14:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 23233,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2426:5:81",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "2409:22:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23235,
                        "nodeType": "ExpressionStatement",
                        "src": "2409:22:81"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23237,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23225,
                              "src": "2453:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 23236,
                            "name": "AdminRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23120,
                            "src": "2440:12:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 23238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2440:20:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23239,
                        "nodeType": "EmitStatement",
                        "src": "2435:25:81"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 23241,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23228,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23227,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2395:9:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2395:9:81"
                    }
                  ],
                  "name": "removeAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23225,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 23241,
                        "src": "2372:14:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23224,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2372:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2371:16:81"
                  },
                  "returnParameters": {
                    "id": 23229,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2405:0:81"
                  },
                  "scope": 23568,
                  "src": "2351:113:81",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23252,
                    "nodeType": "Block",
                    "src": "2654:43:81",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23249,
                              "name": "_vestingFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23243,
                              "src": "2677:15:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 23248,
                            "name": "_setVestingFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23274,
                            "src": "2658:18:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 23250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2658:35:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23251,
                        "nodeType": "ExpressionStatement",
                        "src": "2658:35:81"
                      }
                    ]
                  },
                  "documentation": "@notice sets vesting factory address\n@param _vestingFactory the address of vesting factory contract",
                  "id": 23253,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23246,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23245,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2644:9:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2644:9:81"
                    }
                  ],
                  "name": "setVestingFactory",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23244,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23243,
                        "name": "_vestingFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 23253,
                        "src": "2612:23:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23242,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2612:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2611:25:81"
                  },
                  "returnParameters": {
                    "id": 23247,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2654:0:81"
                  },
                  "scope": 23568,
                  "src": "2585:112:81",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23273,
                    "nodeType": "Block",
                    "src": "2762:133:81",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23259,
                                "name": "_vestingFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23255,
                                "src": "2774:15:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23261,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2801:1:81",
                                    "subdenomination": null,
                                    "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": 23260,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2793:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23262,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2793:10:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2774:29:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76657374696e67466163746f7279206164647265737320696e76616c6964",
                              "id": 23264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2805:32:81",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_33d40e3e5b244e71e62a578e5bb02946f2835ec33d3d09a65bacc2cbbd8a1430",
                                "typeString": "literal_string \"vestingFactory address invalid\""
                              },
                              "value": "vestingFactory address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_33d40e3e5b244e71e62a578e5bb02946f2835ec33d3d09a65bacc2cbbd8a1430",
                                "typeString": "literal_string \"vestingFactory address invalid\""
                              }
                            ],
                            "id": 23258,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2766:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2766:72:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23266,
                        "nodeType": "ExpressionStatement",
                        "src": "2766:72:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23267,
                            "name": "vestingFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23055,
                            "src": "2842:14:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                              "typeString": "contract IVestingFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 23269,
                                "name": "_vestingFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23255,
                                "src": "2875:15:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 23268,
                              "name": "IVestingFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18638,
                              "src": "2859:15:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IVestingFactory_$18638_$",
                                "typeString": "type(contract IVestingFactory)"
                              }
                            },
                            "id": 23270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2859:32:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                              "typeString": "contract IVestingFactory"
                            }
                          },
                          "src": "2842:49:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                            "typeString": "contract IVestingFactory"
                          }
                        },
                        "id": 23272,
                        "nodeType": "ExpressionStatement",
                        "src": "2842:49:81"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 23274,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setVestingFactory",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23256,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23255,
                        "name": "_vestingFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 23274,
                        "src": "2728:23:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23254,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2728:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2727:25:81"
                  },
                  "returnParameters": {
                    "id": 23257,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2762:0:81"
                  },
                  "scope": 23568,
                  "src": "2700:195:81",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23312,
                    "nodeType": "Block",
                    "src": "3133:199:81",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23288,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23284,
                                "name": "_receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23276,
                                "src": "3145:9:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23286,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3166:1:81",
                                    "subdenomination": null,
                                    "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": 23285,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3158:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3158:10:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3145:23:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7265636569766572206164647265737320696e76616c6964",
                              "id": 23289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3170:26:81",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              },
                              "value": "receiver address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              }
                            ],
                            "id": 23283,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3137:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3137:60:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23291,
                        "nodeType": "ExpressionStatement",
                        "src": "3137:60:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 23295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23293,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23278,
                                "src": "3209:7:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 23294,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3220:1:81",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3209:12:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 23296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3223:16:81",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 23292,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3201:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3201:39:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23298,
                        "nodeType": "ExpressionStatement",
                        "src": "3201:39:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23303,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23276,
                              "src": "3266:9:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23304,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23278,
                              "src": "3277:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23300,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23057,
                                  "src": "3252:3:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 23299,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "3245:6:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 23301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3245:11:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 23302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24671,
                            "src": "3245:20:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 23305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3245:40:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23306,
                        "nodeType": "ExpressionStatement",
                        "src": "3245:40:81"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23308,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23276,
                              "src": "3309:9:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23309,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23278,
                              "src": "3320:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23307,
                            "name": "SOVTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23082,
                            "src": "3294:14:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 23310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3294:34:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23311,
                        "nodeType": "EmitStatement",
                        "src": "3289:39:81"
                      }
                    ]
                  },
                  "documentation": "@notice transfers SOV tokens to given address\n@param _receiver the address of the SOV receiver\n@param _amount the amount to be transferred",
                  "id": 23313,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23281,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23280,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "3123:9:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3123:9:81"
                    }
                  ],
                  "name": "transferSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23276,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 23313,
                        "src": "3080:17:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23275,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3080:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23278,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23313,
                        "src": "3099:15:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23277,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3099:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3079:36:81"
                  },
                  "returnParameters": {
                    "id": 23282,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3133:0:81"
                  },
                  "scope": 23568,
                  "src": "3059:273:81",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23342,
                    "nodeType": "Block",
                    "src": "3691:150:81",
                    "statements": [
                      {
                        "assignments": [
                          23327
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23327,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 23342,
                            "src": "3695:15:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 23326,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3695:7:81",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23333,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23329,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23315,
                              "src": "3733:11:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23330,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23319,
                              "src": "3746:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23331,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23321,
                              "src": "3754:9:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23328,
                            "name": "_getOrCreateVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23510,
                            "src": "3713:19:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (address,uint256,uint256) returns (address)"
                            }
                          },
                          "id": 23332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3713:51:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3695:69:81"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23335,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23315,
                              "src": "3788:11:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23336,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23327,
                              "src": "3801:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23337,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23319,
                              "src": "3810:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23338,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23321,
                              "src": "3818:9:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23339,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23317,
                              "src": "3829:7:81",
                              "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23334,
                            "name": "VestingCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23094,
                            "src": "3773:14:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 23340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3773:64:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23341,
                        "nodeType": "EmitStatement",
                        "src": "3768:69:81"
                      }
                    ]
                  },
                  "documentation": "@notice creates Vesting contract\n@param _tokenOwner the owner of the tokens\n@param _amount the amount to be staked\n@param _cliff the cliff in seconds\n@param _duration the total duration in seconds",
                  "id": 23343,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23324,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23323,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23205,
                        "src": "3676:14:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3676:14:81"
                    }
                  ],
                  "name": "createVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23322,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23315,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23343,
                        "src": "3588:19:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23314,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3588:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23317,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23343,
                        "src": "3611:15:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23316,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3611:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23319,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 23343,
                        "src": "3630:14:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23318,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3630:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23321,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 23343,
                        "src": "3648:17:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23320,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3648:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3584:84:81"
                  },
                  "returnParameters": {
                    "id": 23325,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3691:0:81"
                  },
                  "scope": 23568,
                  "src": "3562:279:81",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23372,
                    "nodeType": "Block",
                    "src": "4209:158:81",
                    "statements": [
                      {
                        "assignments": [
                          23357
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23357,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 23372,
                            "src": "4213:15:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 23356,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4213:7:81",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23363,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23359,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23345,
                              "src": "4255:11:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23360,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23349,
                              "src": "4268:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23361,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23351,
                              "src": "4276:9:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23358,
                            "name": "_getOrCreateTeamVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23567,
                            "src": "4231:23:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (address,uint256,uint256) returns (address)"
                            }
                          },
                          "id": 23362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4231:55:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4213:73:81"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23365,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23345,
                              "src": "4314:11:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23366,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23357,
                              "src": "4327:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23367,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23349,
                              "src": "4336:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23368,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23351,
                              "src": "4344:9:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23369,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23347,
                              "src": "4355:7:81",
                              "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23364,
                            "name": "TeamVestingCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23106,
                            "src": "4295:18:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 23370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4295:68:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23371,
                        "nodeType": "EmitStatement",
                        "src": "4290:73:81"
                      }
                    ]
                  },
                  "documentation": "@notice creates Team Vesting contract\n@param _tokenOwner the owner of the tokens\n@param _amount the amount to be staked\n@param _cliff the cliff in seconds\n@param _duration the total duration in seconds",
                  "id": 23373,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23354,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23353,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23205,
                        "src": "4194:14:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4194:14:81"
                    }
                  ],
                  "name": "createTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23352,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23345,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23373,
                        "src": "4106:19:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23344,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4106:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23347,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23373,
                        "src": "4129:15:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23346,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4129:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23349,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 23373,
                        "src": "4148:14:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23348,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4148:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23351,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 23373,
                        "src": "4166:17:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23350,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4166:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4102:84:81"
                  },
                  "returnParameters": {
                    "id": 23355,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4209:0:81"
                  },
                  "scope": 23568,
                  "src": "4076:291:81",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23418,
                    "nodeType": "Block",
                    "src": "4619:234:81",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23383,
                                "name": "_vesting",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23375,
                                "src": "4631:8:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23385,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4651:1:81",
                                    "subdenomination": null,
                                    "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": 23384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4643:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23386,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4643:10:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4631:22:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76657374696e67206164647265737320696e76616c6964",
                              "id": 23388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4655:25:81",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_380b2e4a9c1835648e0f5052b5fbe4ee62cf6b14ea12c4964331c26922214dc7",
                                "typeString": "literal_string \"vesting address invalid\""
                              },
                              "value": "vesting address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_380b2e4a9c1835648e0f5052b5fbe4ee62cf6b14ea12c4964331c26922214dc7",
                                "typeString": "literal_string \"vesting address invalid\""
                              }
                            ],
                            "id": 23382,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4623:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4623:58:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23390,
                        "nodeType": "ExpressionStatement",
                        "src": "4623:58:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 23394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23392,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23377,
                                "src": "4693:7:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 23393,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4703:1:81",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4693:11:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 23395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4706:16:81",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 23391,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4685:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4685:38:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23397,
                        "nodeType": "ExpressionStatement",
                        "src": "4685:38:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23402,
                              "name": "_vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23375,
                              "src": "4748:8:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23403,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23377,
                              "src": "4758:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23399,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23057,
                                  "src": "4735:3:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 23398,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "4728:6:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 23400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4728:11:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 23401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24662,
                            "src": "4728:19:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 23404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4728:38:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23405,
                        "nodeType": "ExpressionStatement",
                        "src": "4728:38:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23410,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23377,
                              "src": "4801:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23407,
                                  "name": "_vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23375,
                                  "src": "4779:8:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 23406,
                                "name": "IVesting",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18597,
                                "src": "4770:8:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IVesting_$18597_$",
                                  "typeString": "type(contract IVesting)"
                                }
                              },
                              "id": 23408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4770:18:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IVesting_$18597",
                                "typeString": "contract IVesting"
                              }
                            },
                            "id": 23409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakeTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18596,
                            "src": "4770:30:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 23411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4770:39:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23412,
                        "nodeType": "ExpressionStatement",
                        "src": "4770:39:81"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23414,
                              "name": "_vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23375,
                              "src": "4831:8:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23415,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23377,
                              "src": "4841:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23413,
                            "name": "TokensStaked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23112,
                            "src": "4818:12:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 23416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4818:31:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23417,
                        "nodeType": "EmitStatement",
                        "src": "4813:36:81"
                      }
                    ]
                  },
                  "documentation": "@notice stakes tokens according to the vesting schedule\n@param _vesting the address of Vesting contract\n@param _amount the amount of tokens to stake",
                  "id": 23419,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23380,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23379,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23205,
                        "src": "4604:14:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4604:14:81"
                    }
                  ],
                  "name": "stakeTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23378,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23375,
                        "name": "_vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 23419,
                        "src": "4562:16:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23374,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4562:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23377,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23419,
                        "src": "4580:15:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23376,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4580:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4561:35:81"
                  },
                  "returnParameters": {
                    "id": 23381,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4619:0:81"
                  },
                  "scope": 23568,
                  "src": "4541:312:81",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23435,
                    "nodeType": "Block",
                    "src": "5055:74:81",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 23426,
                              "name": "vestingContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23069,
                              "src": "5066:16:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 23428,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 23427,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23421,
                              "src": "5083:11:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5066:29:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 23433,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23430,
                                  "name": "VestingType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23076,
                                  "src": "5104:11:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_VestingType_$23076_$",
                                    "typeString": "type(enum VestingRegistry3.VestingType)"
                                  }
                                },
                                "id": 23431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Vesting",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5104:19:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_VestingType_$23076",
                                  "typeString": "enum VestingRegistry3.VestingType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_VestingType_$23076",
                                  "typeString": "enum VestingRegistry3.VestingType"
                                }
                              ],
                              "id": 23429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5096:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 23432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5096:28:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5066:59:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 23425,
                        "id": 23434,
                        "nodeType": "Return",
                        "src": "5059:66:81"
                      }
                    ]
                  },
                  "documentation": "@notice returns vesting contract address for the given token owner\n@param _tokenOwner the owner of the tokens",
                  "id": 23436,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23422,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23421,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23436,
                        "src": "5004:19:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23420,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5004:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5003:21:81"
                  },
                  "returnParameters": {
                    "id": 23425,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23424,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 23436,
                        "src": "5046:7:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23423,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5046:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5045:9:81"
                  },
                  "scope": 23568,
                  "src": "4984:145:81",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23452,
                    "nodeType": "Block",
                    "src": "5340:78:81",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 23443,
                              "name": "vestingContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23069,
                              "src": "5351:16:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 23445,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 23444,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23438,
                              "src": "5368:11:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5351:29:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 23450,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23447,
                                  "name": "VestingType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23076,
                                  "src": "5389:11:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_VestingType_$23076_$",
                                    "typeString": "type(enum VestingRegistry3.VestingType)"
                                  }
                                },
                                "id": 23448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "TeamVesting",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5389:23:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_VestingType_$23076",
                                  "typeString": "enum VestingRegistry3.VestingType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_VestingType_$23076",
                                  "typeString": "enum VestingRegistry3.VestingType"
                                }
                              ],
                              "id": 23446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5381:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 23449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5381:32:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5351:63:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 23442,
                        "id": 23451,
                        "nodeType": "Return",
                        "src": "5344:70:81"
                      }
                    ]
                  },
                  "documentation": "@notice returns team vesting contract address for the given token owner\n@param _tokenOwner the owner of the tokens",
                  "id": 23453,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23439,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23438,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23453,
                        "src": "5289:19:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23437,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5289:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5288:21:81"
                  },
                  "returnParameters": {
                    "id": 23442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23441,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 23453,
                        "src": "5331:7:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23440,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5331:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5330:9:81"
                  },
                  "scope": 23568,
                  "src": "5265:153:81",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23509,
                    "nodeType": "Block",
                    "src": "5542:416:81",
                    "statements": [
                      {
                        "assignments": [
                          23465
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23465,
                            "name": "type_",
                            "nodeType": "VariableDeclaration",
                            "scope": 23509,
                            "src": "5546:13:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23464,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5546:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23470,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 23467,
                                "name": "VestingType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23076,
                                "src": "5570:11:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_VestingType_$23076_$",
                                  "typeString": "type(enum VestingRegistry3.VestingType)"
                                }
                              },
                              "id": 23468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Vesting",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5570:19:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_VestingType_$23076",
                                "typeString": "enum VestingRegistry3.VestingType"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_VestingType_$23076",
                                "typeString": "enum VestingRegistry3.VestingType"
                              }
                            ],
                            "id": 23466,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5562:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 23469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5562:28:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5546:44:81"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 23479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 23471,
                                "name": "vestingContracts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23069,
                                "src": "5598:16:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => address))"
                                }
                              },
                              "id": 23473,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 23472,
                                "name": "_tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23455,
                                "src": "5615:11:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5598:29:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 23475,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 23474,
                              "name": "type_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23465,
                              "src": "5628:5:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5598:36:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 23477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5646:1:81",
                                "subdenomination": null,
                                "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": 23476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5638:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 23478,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5638:10:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "5598:50:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 23502,
                        "nodeType": "IfStatement",
                        "src": "5594:314:81",
                        "trueBody": {
                          "id": 23501,
                          "nodeType": "Block",
                          "src": "5650:258:81",
                          "statements": [
                            {
                              "assignments": [
                                23481
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 23481,
                                  "name": "vesting",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 23501,
                                  "src": "5730:15:81",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 23480,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5730:7:81",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 23492,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23484,
                                    "name": "SOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23057,
                                    "src": "5777:3:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23485,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23059,
                                    "src": "5782:7:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23486,
                                    "name": "_tokenOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23455,
                                    "src": "5791:11:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23487,
                                    "name": "_cliff",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23457,
                                    "src": "5804:6:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23488,
                                    "name": "_duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23459,
                                    "src": "5812:9:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23489,
                                    "name": "feeSharingProxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23061,
                                    "src": "5823:15:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23490,
                                    "name": "_tokenOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23455,
                                    "src": "5840:11:81",
                                    "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_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23482,
                                    "name": "vestingFactory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23055,
                                    "src": "5748:14:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                                      "typeString": "contract IVestingFactory"
                                    }
                                  },
                                  "id": 23483,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "deployVesting",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18618,
                                  "src": "5748:28:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address,uint256,uint256,address,address) external returns (address)"
                                  }
                                },
                                "id": 23491,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5748:104:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5730:122:81"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 23499,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 23493,
                                      "name": "vestingContracts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23069,
                                      "src": "5857:16:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => address))"
                                      }
                                    },
                                    "id": 23496,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 23494,
                                      "name": "_tokenOwner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23455,
                                      "src": "5874:11:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5857:29:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 23497,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 23495,
                                    "name": "type_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23465,
                                    "src": "5887:5:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5857:36:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 23498,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23481,
                                  "src": "5896:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5857:46:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 23500,
                              "nodeType": "ExpressionStatement",
                              "src": "5857:46:81"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 23503,
                              "name": "vestingContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23069,
                              "src": "5918:16:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 23505,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 23504,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23455,
                              "src": "5935:11:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5918:29:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 23507,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 23506,
                            "name": "type_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23465,
                            "src": "5948:5:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5918:36:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 23463,
                        "id": 23508,
                        "nodeType": "Return",
                        "src": "5911:43:81"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 23510,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getOrCreateVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23455,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23510,
                        "src": "5453:19:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23454,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5453:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23457,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 23510,
                        "src": "5476:14:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23456,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5476:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23459,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 23510,
                        "src": "5494:17:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23458,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5494:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5449:65:81"
                  },
                  "returnParameters": {
                    "id": 23463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23462,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 23510,
                        "src": "5533:7:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23461,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5533:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5532:9:81"
                  },
                  "scope": 23568,
                  "src": "5421:537:81",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23566,
                    "nodeType": "Block",
                    "src": "6086:350:81",
                    "statements": [
                      {
                        "assignments": [
                          23522
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23522,
                            "name": "type_",
                            "nodeType": "VariableDeclaration",
                            "scope": 23566,
                            "src": "6090:13:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23521,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6090:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23527,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 23524,
                                "name": "VestingType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23076,
                                "src": "6114:11:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_VestingType_$23076_$",
                                  "typeString": "type(enum VestingRegistry3.VestingType)"
                                }
                              },
                              "id": 23525,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "TeamVesting",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6114:23:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_VestingType_$23076",
                                "typeString": "enum VestingRegistry3.VestingType"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_VestingType_$23076",
                                "typeString": "enum VestingRegistry3.VestingType"
                              }
                            ],
                            "id": 23523,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6106:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 23526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6106:32:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6090:48:81"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 23536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 23528,
                                "name": "vestingContracts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23069,
                                "src": "6146:16:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => address))"
                                }
                              },
                              "id": 23530,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 23529,
                                "name": "_tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23512,
                                "src": "6163:11:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6146:29:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 23532,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 23531,
                              "name": "type_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23522,
                              "src": "6176:5:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6146:36:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 23534,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6194:1:81",
                                "subdenomination": null,
                                "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": 23533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6186:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 23535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6186:10:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6146:50:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 23559,
                        "nodeType": "IfStatement",
                        "src": "6142:244:81",
                        "trueBody": {
                          "id": 23558,
                          "nodeType": "Block",
                          "src": "6198:188:81",
                          "statements": [
                            {
                              "assignments": [
                                23538
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 23538,
                                  "name": "vesting",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 23558,
                                  "src": "6203:15:81",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 23537,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6203:7:81",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 23549,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23541,
                                    "name": "SOV",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23057,
                                    "src": "6254:3:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23542,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23059,
                                    "src": "6259:7:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23543,
                                    "name": "_tokenOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23512,
                                    "src": "6268:11:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23544,
                                    "name": "_cliff",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23514,
                                    "src": "6281:6:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23545,
                                    "name": "_duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23516,
                                    "src": "6289:9:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23546,
                                    "name": "feeSharingProxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23061,
                                    "src": "6300:15:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23547,
                                    "name": "vestingOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23063,
                                    "src": "6317:12:81",
                                    "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_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23539,
                                    "name": "vestingFactory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23055,
                                    "src": "6221:14:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                                      "typeString": "contract IVestingFactory"
                                    }
                                  },
                                  "id": 23540,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "deployTeamVesting",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18637,
                                  "src": "6221:32:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address,uint256,uint256,address,address) external returns (address)"
                                  }
                                },
                                "id": 23548,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6221:109:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6203:127:81"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 23556,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 23550,
                                      "name": "vestingContracts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23069,
                                      "src": "6335:16:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => address))"
                                      }
                                    },
                                    "id": 23553,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 23551,
                                      "name": "_tokenOwner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23512,
                                      "src": "6352:11:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6335:29:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 23554,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 23552,
                                    "name": "type_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23522,
                                    "src": "6365:5:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6335:36:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 23555,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23538,
                                  "src": "6374:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "6335:46:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 23557,
                              "nodeType": "ExpressionStatement",
                              "src": "6335:46:81"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 23560,
                              "name": "vestingContracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23069,
                              "src": "6396:16:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(uint256 => address))"
                              }
                            },
                            "id": 23562,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 23561,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23512,
                              "src": "6413:11:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6396:29:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 23564,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 23563,
                            "name": "type_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23522,
                            "src": "6426:5:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6396:36:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 23520,
                        "id": 23565,
                        "nodeType": "Return",
                        "src": "6389:43:81"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 23567,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getOrCreateTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23517,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23512,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23567,
                        "src": "5997:19:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23511,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5997:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23514,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 23567,
                        "src": "6020:14:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23513,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6020:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23516,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 23567,
                        "src": "6038:17:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23515,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6038:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5993:65:81"
                  },
                  "returnParameters": {
                    "id": 23520,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23519,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 23567,
                        "src": "6077:7:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23518,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6077:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6076:9:81"
                  },
                  "scope": 23568,
                  "src": "5961:475:81",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 23569,
              "src": "302:6136:81"
            }
          ],
          "src": "0:6439:81"
        },
        "id": 81
      },
      "contracts/governance/Vesting/VestingRegistryLogic.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/VestingRegistryLogic.sol",
          "exportedSymbols": {
            "VestingRegistryLogic": [
              24482
            ]
          },
          "id": 24483,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 23570,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:82"
            },
            {
              "id": 23571,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:82"
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 23572,
              "nodeType": "ImportDirective",
              "scope": 24483,
              "sourceUnit": 24700,
              "src": "60:37:82",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/IFeeSharingProxy.sol",
              "file": "../IFeeSharingProxy.sol",
              "id": 23573,
              "nodeType": "ImportDirective",
              "scope": 24483,
              "sourceUnit": 13113,
              "src": "98:33:82",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/IVesting.sol",
              "file": "./IVesting.sol",
              "id": 23574,
              "nodeType": "ImportDirective",
              "scope": 24483,
              "sourceUnit": 18598,
              "src": "132:24:82",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/ITeamVesting.sol",
              "file": "./ITeamVesting.sol",
              "id": 23575,
              "nodeType": "ImportDirective",
              "scope": 24483,
              "sourceUnit": 18580,
              "src": "157:28:82",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/VestingRegistryStorage.sol",
              "file": "./VestingRegistryStorage.sol",
              "id": 23576,
              "nodeType": "ImportDirective",
              "scope": 24483,
              "sourceUnit": 24543,
              "src": "186:38:82",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 23577,
                    "name": "VestingRegistryStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24542,
                    "src": "259:22:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VestingRegistryStorage_$24542",
                      "typeString": "contract VestingRegistryStorage"
                    }
                  },
                  "id": 23578,
                  "nodeType": "InheritanceSpecifier",
                  "src": "259:22:82"
                }
              ],
              "contractDependencies": [
                24542,
                41125,
                41699,
                41798,
                44979
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 24482,
              "linearizedBaseContracts": [
                24482,
                24542,
                44979,
                41798,
                41125,
                41699
              ],
              "name": "VestingRegistryLogic",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 23584,
                  "name": "SOVTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 23583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23580,
                        "indexed": true,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 23584,
                        "src": "306:24:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23579,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "306:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23582,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23584,
                        "src": "332:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23581,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "332:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "305:42:82"
                  },
                  "src": "285:63:82"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 23598,
                  "name": "VestingCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 23597,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23586,
                        "indexed": true,
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23598,
                        "src": "374:26:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23585,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "374:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23588,
                        "indexed": false,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 23598,
                        "src": "404:15:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23587,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "404:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23590,
                        "indexed": false,
                        "name": "cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 23598,
                        "src": "423:13:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23589,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "423:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23592,
                        "indexed": false,
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 23598,
                        "src": "440:16:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23591,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "440:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23594,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23598,
                        "src": "460:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23593,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "460:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23596,
                        "indexed": false,
                        "name": "vestingCreationType",
                        "nodeType": "VariableDeclaration",
                        "scope": 23598,
                        "src": "478:27:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23595,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "478:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "370:138:82"
                  },
                  "src": "350:159:82"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 23612,
                  "name": "TeamVestingCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 23611,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23600,
                        "indexed": true,
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23612,
                        "src": "539:26:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23599,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "539:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23602,
                        "indexed": false,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 23612,
                        "src": "569:15:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23601,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "569:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23604,
                        "indexed": false,
                        "name": "cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 23612,
                        "src": "588:13:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23603,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "588:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23606,
                        "indexed": false,
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 23612,
                        "src": "605:16:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23605,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "605:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23608,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23612,
                        "src": "625:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23607,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "625:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23610,
                        "indexed": false,
                        "name": "vestingCreationType",
                        "nodeType": "VariableDeclaration",
                        "scope": 23612,
                        "src": "643:27:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23609,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "643:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "535:138:82"
                  },
                  "src": "511:163:82"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 23618,
                  "name": "TokensStaked",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 23617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23614,
                        "indexed": true,
                        "name": "vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 23618,
                        "src": "695:23:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23613,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "695:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23616,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23618,
                        "src": "720:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23615,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "720:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "694:41:82"
                  },
                  "src": "676:60:82"
                },
                {
                  "body": {
                    "id": 23745,
                    "nodeType": "Block",
                    "src": "1122:736:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23645,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23641,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23622,
                                "src": "1134:4:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23643,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1150:1:82",
                                    "subdenomination": null,
                                    "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": 23642,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1142:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23644,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1142:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1134:18:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "534f56206164647265737320696e76616c6964",
                              "id": 23646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1154:21:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              },
                              "value": "SOV address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_faa1f3c953107be4d53264056b6785d521ae698e5d224bc0075fc86373ba5856",
                                "typeString": "literal_string \"SOV address invalid\""
                              }
                            ],
                            "id": 23640,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1126:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1126:50:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23648,
                        "nodeType": "ExpressionStatement",
                        "src": "1126:50:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23650,
                                "name": "_staking",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23624,
                                "src": "1188:8:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23652,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1208:1:82",
                                    "subdenomination": null,
                                    "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": 23651,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1200:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23653,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1200:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1188:22:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7374616b696e67206164647265737320696e76616c6964",
                              "id": 23655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1212:25:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dad5f662c3fef12349ee5cce4e61e29872181081c3701c492f86e4a0edbc8478",
                                "typeString": "literal_string \"staking address invalid\""
                              },
                              "value": "staking address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dad5f662c3fef12349ee5cce4e61e29872181081c3701c492f86e4a0edbc8478",
                                "typeString": "literal_string \"staking address invalid\""
                              }
                            ],
                            "id": 23649,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1180:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1180:58:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23657,
                        "nodeType": "ExpressionStatement",
                        "src": "1180:58:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23659,
                                "name": "_feeSharingProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23626,
                                "src": "1250:16:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23661,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1278:1:82",
                                    "subdenomination": null,
                                    "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": 23660,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1270:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23662,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1270:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1250:30:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66656553686172696e6750726f7879206164647265737320696e76616c6964",
                              "id": 23664,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1282:33:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c10cbcafb5aa87027ea5ae59f7021a70ed9eaf13f3cc1fd382043183365fd95b",
                                "typeString": "literal_string \"feeSharingProxy address invalid\""
                              },
                              "value": "feeSharingProxy address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c10cbcafb5aa87027ea5ae59f7021a70ed9eaf13f3cc1fd382043183365fd95b",
                                "typeString": "literal_string \"feeSharingProxy address invalid\""
                              }
                            ],
                            "id": 23658,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1242:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1242:74:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23666,
                        "nodeType": "ExpressionStatement",
                        "src": "1242:74:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23672,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23668,
                                "name": "_vestingOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23628,
                                "src": "1328:13:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23670,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1353:1:82",
                                    "subdenomination": null,
                                    "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": 23669,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1345:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23671,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1345:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1328:27:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76657374696e674f776e6572206164647265737320696e76616c6964",
                              "id": 23673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1357:30:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_598ae3ed2d682ddf536de8d8e8c428d9f03a35b481b508f2312a3aa5c981fa0a",
                                "typeString": "literal_string \"vestingOwner address invalid\""
                              },
                              "value": "vestingOwner address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_598ae3ed2d682ddf536de8d8e8c428d9f03a35b481b508f2312a3aa5c981fa0a",
                                "typeString": "literal_string \"vestingOwner address invalid\""
                              }
                            ],
                            "id": 23667,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1320:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1320:68:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23675,
                        "nodeType": "ExpressionStatement",
                        "src": "1320:68:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23681,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23677,
                                "name": "_lockedSOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23630,
                                "src": "1400:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23679,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1422:1:82",
                                    "subdenomination": null,
                                    "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": 23678,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1414:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23680,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1414:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1400:24:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4c6f636b6564534f56206164647265737320696e76616c6964",
                              "id": 23682,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1426:27:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cd9f35321c88e4676a5ceb88241913a9b98a1c969aacb259092e58b8695d7b64",
                                "typeString": "literal_string \"LockedSOV address invalid\""
                              },
                              "value": "LockedSOV address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cd9f35321c88e4676a5ceb88241913a9b98a1c969aacb259092e58b8695d7b64",
                                "typeString": "literal_string \"LockedSOV address invalid\""
                              }
                            ],
                            "id": 23676,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1392:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1392:62:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23684,
                        "nodeType": "ExpressionStatement",
                        "src": "1392:62:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23686,
                              "name": "_vestingFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23620,
                              "src": "1478:15:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 23685,
                            "name": "_setVestingFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23779,
                            "src": "1459:18:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 23687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1459:35:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23688,
                        "nodeType": "ExpressionStatement",
                        "src": "1459:35:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23691,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23689,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24512,
                            "src": "1498:3:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 23690,
                            "name": "_SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23622,
                            "src": "1504:4:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1498:10:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23692,
                        "nodeType": "ExpressionStatement",
                        "src": "1498:10:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23693,
                            "name": "staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24514,
                            "src": "1512:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 23694,
                            "name": "_staking",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23624,
                            "src": "1522:8:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1512:18:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23696,
                        "nodeType": "ExpressionStatement",
                        "src": "1512:18:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23697,
                            "name": "feeSharingProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24516,
                            "src": "1534:15:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 23698,
                            "name": "_feeSharingProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23626,
                            "src": "1552:16:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1534:34:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23700,
                        "nodeType": "ExpressionStatement",
                        "src": "1534:34:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23701,
                            "name": "vestingOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24518,
                            "src": "1572:12:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 23702,
                            "name": "_vestingOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23628,
                            "src": "1587:13:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1572:28:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23704,
                        "nodeType": "ExpressionStatement",
                        "src": "1572:28:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23705,
                            "name": "lockedSOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24507,
                            "src": "1604:9:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_LockedSOV_$26418",
                              "typeString": "contract LockedSOV"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 23707,
                                "name": "_lockedSOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23630,
                                "src": "1626:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 23706,
                              "name": "LockedSOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26418,
                              "src": "1616:9:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_LockedSOV_$26418_$",
                                "typeString": "type(contract LockedSOV)"
                              }
                            },
                            "id": 23708,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1616:21:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_LockedSOV_$26418",
                              "typeString": "contract LockedSOV"
                            }
                          },
                          "src": "1604:33:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_LockedSOV_$26418",
                            "typeString": "contract LockedSOV"
                          }
                        },
                        "id": 23710,
                        "nodeType": "ExpressionStatement",
                        "src": "1604:33:82"
                      },
                      {
                        "body": {
                          "id": 23743,
                          "nodeType": "Block",
                          "src": "1697:158:82",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 23729,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 23723,
                                        "name": "_vestingRegistries",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23633,
                                        "src": "1710:18:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 23725,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 23724,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23712,
                                        "src": "1729:1:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1710:21:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 23727,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1743:1:82",
                                          "subdenomination": null,
                                          "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": 23726,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1735:7:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 23728,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1735:10:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "1710:35:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "56657374696e67207265676973747279206164647265737320696e76616c6964",
                                    "id": 23730,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1747:34:82",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_0d43526fe58beecd5f37e30db7f111fc3af0e5027f5cd2151d4ef8759d9a7e14",
                                      "typeString": "literal_string \"Vesting registry address invalid\""
                                    },
                                    "value": "Vesting registry address invalid"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_0d43526fe58beecd5f37e30db7f111fc3af0e5027f5cd2151d4ef8759d9a7e14",
                                      "typeString": "literal_string \"Vesting registry address invalid\""
                                    }
                                  ],
                                  "id": 23722,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "1702:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 23731,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1702:80:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 23732,
                              "nodeType": "ExpressionStatement",
                              "src": "1702:80:82"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 23737,
                                          "name": "_vestingRegistries",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23633,
                                          "src": "1827:18:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 23739,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 23738,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23712,
                                          "src": "1846:1:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "1827:21:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 23736,
                                      "name": "IVestingRegistry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18655,
                                      "src": "1810:16:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IVestingRegistry_$18655_$",
                                        "typeString": "type(contract IVestingRegistry)"
                                      }
                                    },
                                    "id": 23740,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1810:39:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVestingRegistry_$18655",
                                      "typeString": "contract IVestingRegistry"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IVestingRegistry_$18655",
                                      "typeString": "contract IVestingRegistry"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23733,
                                    "name": "vestingRegistries",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24510,
                                    "src": "1787:17:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IVestingRegistry_$18655_$dyn_storage",
                                      "typeString": "contract IVestingRegistry[] storage ref"
                                    }
                                  },
                                  "id": 23735,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1787:22:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_IVestingRegistry_$18655_$returns$_t_uint256_$",
                                    "typeString": "function (contract IVestingRegistry) returns (uint256)"
                                  }
                                },
                                "id": 23741,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1787:63:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 23742,
                              "nodeType": "ExpressionStatement",
                              "src": "1787:63:82"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 23715,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23712,
                            "src": "1661:1:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 23716,
                              "name": "_vestingRegistries",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23633,
                              "src": "1665:18:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 23717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1665:25:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1661:29:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23744,
                        "initializationExpression": {
                          "assignments": [
                            23712
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 23712,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 23744,
                              "src": "1646:9:82",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 23711,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1646:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 23714,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 23713,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1658:1:82",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1646:13:82"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 23720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1692:3:82",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 23719,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23712,
                              "src": "1692:1:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 23721,
                          "nodeType": "ExpressionStatement",
                          "src": "1692:3:82"
                        },
                        "nodeType": "ForStatement",
                        "src": "1641:214:82"
                      }
                    ]
                  },
                  "documentation": "@notice Replace constructor with initialize function for Upgradable Contracts\nThis function will be called only once by the owner\n",
                  "id": 23746,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23636,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23635,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1100:9:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1100:9:82"
                    },
                    {
                      "arguments": null,
                      "id": 23638,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23637,
                        "name": "initializer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41698,
                        "src": "1110:11:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1110:11:82"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23620,
                        "name": "_vestingFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 23746,
                        "src": "912:23:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23619,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "912:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23622,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 23746,
                        "src": "939:12:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23621,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "939:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23624,
                        "name": "_staking",
                        "nodeType": "VariableDeclaration",
                        "scope": 23746,
                        "src": "955:16:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23623,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "955:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23626,
                        "name": "_feeSharingProxy",
                        "nodeType": "VariableDeclaration",
                        "scope": 23746,
                        "src": "975:24:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23625,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "975:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23628,
                        "name": "_vestingOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23746,
                        "src": "1003:21:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23627,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1003:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23630,
                        "name": "_lockedSOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 23746,
                        "src": "1028:18:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23629,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1028:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23633,
                        "name": "_vestingRegistries",
                        "nodeType": "VariableDeclaration",
                        "scope": 23746,
                        "src": "1050:37:82",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 23631,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1050:7:82",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 23632,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1050:9:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "908:182:82"
                  },
                  "returnParameters": {
                    "id": 23639,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1122:0:82"
                  },
                  "scope": 24482,
                  "src": "889:969:82",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23757,
                    "nodeType": "Block",
                    "src": "2050:43:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23754,
                              "name": "_vestingFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23748,
                              "src": "2073:15:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 23753,
                            "name": "_setVestingFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23779,
                            "src": "2054:18:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 23755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2054:35:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23756,
                        "nodeType": "ExpressionStatement",
                        "src": "2054:35:82"
                      }
                    ]
                  },
                  "documentation": "@notice sets vesting factory address\n@param _vestingFactory the address of vesting factory contract",
                  "id": 23758,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23751,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23750,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2040:9:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2040:9:82"
                    }
                  ],
                  "name": "setVestingFactory",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23749,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23748,
                        "name": "_vestingFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 23758,
                        "src": "2006:23:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23747,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2006:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2005:25:82"
                  },
                  "returnParameters": {
                    "id": 23752,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2050:0:82"
                  },
                  "scope": 24482,
                  "src": "1979:114:82",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23778,
                    "nodeType": "Block",
                    "src": "2299:133:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23764,
                                "name": "_vestingFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23760,
                                "src": "2311:15:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23766,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2338:1:82",
                                    "subdenomination": null,
                                    "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": 23765,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2330:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2330:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2311:29:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76657374696e67466163746f7279206164647265737320696e76616c6964",
                              "id": 23769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2342:32:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_33d40e3e5b244e71e62a578e5bb02946f2835ec33d3d09a65bacc2cbbd8a1430",
                                "typeString": "literal_string \"vestingFactory address invalid\""
                              },
                              "value": "vestingFactory address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_33d40e3e5b244e71e62a578e5bb02946f2835ec33d3d09a65bacc2cbbd8a1430",
                                "typeString": "literal_string \"vestingFactory address invalid\""
                              }
                            ],
                            "id": 23763,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2303:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2303:72:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23771,
                        "nodeType": "ExpressionStatement",
                        "src": "2303:72:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23772,
                            "name": "vestingFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24505,
                            "src": "2379:14:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                              "typeString": "contract IVestingFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 23774,
                                "name": "_vestingFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23760,
                                "src": "2412:15:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 23773,
                              "name": "IVestingFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18638,
                              "src": "2396:15:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IVestingFactory_$18638_$",
                                "typeString": "type(contract IVestingFactory)"
                              }
                            },
                            "id": 23775,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2396:32:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                              "typeString": "contract IVestingFactory"
                            }
                          },
                          "src": "2379:49:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                            "typeString": "contract IVestingFactory"
                          }
                        },
                        "id": 23777,
                        "nodeType": "ExpressionStatement",
                        "src": "2379:49:82"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function that sets vesting factory address\n@param _vestingFactory the address of vesting factory contract",
                  "id": 23779,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setVestingFactory",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23760,
                        "name": "_vestingFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 23779,
                        "src": "2265:23:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23759,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2265:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2264:25:82"
                  },
                  "returnParameters": {
                    "id": 23762,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2299:0:82"
                  },
                  "scope": 24482,
                  "src": "2237:195:82",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23820,
                    "nodeType": "Block",
                    "src": "2672:226:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23793,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23789,
                                "name": "_receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23781,
                                "src": "2684:9:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23791,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2705:1:82",
                                    "subdenomination": null,
                                    "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": 23790,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2697:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2697:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2684:23:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7265636569766572206164647265737320696e76616c6964",
                              "id": 23794,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2709:26:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              },
                              "value": "receiver address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b2eb889c04f112484701c753b05debc9778117e38c5f2ac8c09f39e19cce5e76",
                                "typeString": "literal_string \"receiver address invalid\""
                              }
                            ],
                            "id": 23788,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2676:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23795,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2676:60:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23796,
                        "nodeType": "ExpressionStatement",
                        "src": "2676:60:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 23800,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23798,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23783,
                                "src": "2748:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 23799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2759:1:82",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2748:12:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 23801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2762:16:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 23797,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2740:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2740:39:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23803,
                        "nodeType": "ExpressionStatement",
                        "src": "2740:39:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23809,
                                  "name": "_receiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23781,
                                  "src": "2812:9:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 23810,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23783,
                                  "src": "2823:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23806,
                                      "name": "SOV",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24512,
                                      "src": "2798:3:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 23805,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24699,
                                    "src": "2791:6:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 23807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2791:11:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 23808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24671,
                                "src": "2791:20:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 23811,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2791:40:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7472616e73666572206661696c6564",
                              "id": 23812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2833:17:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_df1797085e2da014ef9392ee25ab0802d6ce132451397172f17fd86110e2e02b",
                                "typeString": "literal_string \"transfer failed\""
                              },
                              "value": "transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_df1797085e2da014ef9392ee25ab0802d6ce132451397172f17fd86110e2e02b",
                                "typeString": "literal_string \"transfer failed\""
                              }
                            ],
                            "id": 23804,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2783:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2783:68:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23814,
                        "nodeType": "ExpressionStatement",
                        "src": "2783:68:82"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23816,
                              "name": "_receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23781,
                              "src": "2875:9:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23817,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23783,
                              "src": "2886:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23815,
                            "name": "SOVTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23584,
                            "src": "2860:14:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 23818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2860:34:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23819,
                        "nodeType": "EmitStatement",
                        "src": "2855:39:82"
                      }
                    ]
                  },
                  "documentation": "@notice transfers SOV tokens to given address\n@param _receiver the address of the SOV receiver\n@param _amount the amount to be transferred",
                  "id": 23821,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23786,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23785,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2662:9:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2662:9:82"
                    }
                  ],
                  "name": "transferSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23784,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23781,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 23821,
                        "src": "2617:17:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23780,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2617:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23783,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23821,
                        "src": "2636:15:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23782,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2636:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2616:36:82"
                  },
                  "returnParameters": {
                    "id": 23787,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2672:0:82"
                  },
                  "scope": 24482,
                  "src": "2596:302:82",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23874,
                    "nodeType": "Block",
                    "src": "3182:298:82",
                    "statements": [
                      {
                        "body": {
                          "id": 23872,
                          "nodeType": "Block",
                          "src": "3236:241:82",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 23850,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 23844,
                                        "name": "_tokenOwners",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23824,
                                        "src": "3249:12:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 23846,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 23845,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23833,
                                        "src": "3262:1:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3249:15:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 23848,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3276:1:82",
                                          "subdenomination": null,
                                          "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": 23847,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3268:7:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 23849,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3268:10:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "3249:29:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "746f6b656e206f776e65722063616e6e6f7420626520302061646472657373",
                                    "id": 23851,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3280:33:82",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_21d15a3b83c9e395754455202f4ea7588ba98c65c78c460944a1e44c738f0e93",
                                      "typeString": "literal_string \"token owner cannot be 0 address\""
                                    },
                                    "value": "token owner cannot be 0 address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_21d15a3b83c9e395754455202f4ea7588ba98c65c78c460944a1e44c738f0e93",
                                      "typeString": "literal_string \"token owner cannot be 0 address\""
                                    }
                                  ],
                                  "id": 23843,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "3241:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 23852,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3241:73:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 23853,
                              "nodeType": "ExpressionStatement",
                              "src": "3241:73:82"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 23859,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 23855,
                                        "name": "_vestingCreationTypes",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23827,
                                        "src": "3327:21:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 23857,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 23856,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23833,
                                        "src": "3349:1:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3327:24:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 23858,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3354:1:82",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "3327:28:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "76657374696e67206372656174696f6e2074797065206d7573742062652067726561746572207468616e2030",
                                    "id": 23860,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3357:46:82",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_b0fc9e7c5a16e670f5412f3cbc8fce8f99176d15196e321583b41115736ffd0a",
                                      "typeString": "literal_string \"vesting creation type must be greater than 0\""
                                    },
                                    "value": "vesting creation type must be greater than 0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_b0fc9e7c5a16e670f5412f3cbc8fce8f99176d15196e321583b41115736ffd0a",
                                      "typeString": "literal_string \"vesting creation type must be greater than 0\""
                                    }
                                  ],
                                  "id": 23854,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "3319:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 23861,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3319:85:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 23862,
                              "nodeType": "ExpressionStatement",
                              "src": "3319:85:82"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 23864,
                                      "name": "_tokenOwners",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23824,
                                      "src": "3430:12:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 23866,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 23865,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23833,
                                      "src": "3443:1:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3430:15:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 23867,
                                      "name": "_vestingCreationTypes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23827,
                                      "src": "3447:21:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 23869,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 23868,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23833,
                                      "src": "3469:1:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3447:24:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 23863,
                                  "name": "_getDeployedVestings",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24388,
                                  "src": "3409:20:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 23870,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3409:63:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 23871,
                              "nodeType": "ExpressionStatement",
                              "src": "3409:63:82"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 23836,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23833,
                            "src": "3206:1:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 23837,
                              "name": "_tokenOwners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23824,
                              "src": "3210:12:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 23838,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3210:19:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3206:23:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23873,
                        "initializationExpression": {
                          "assignments": [
                            23833
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 23833,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 23873,
                              "src": "3191:9:82",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 23832,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3191:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 23835,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 23834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3203:1:82",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3191:13:82"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 23841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3231:3:82",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 23840,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23833,
                              "src": "3231:1:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 23842,
                          "nodeType": "ExpressionStatement",
                          "src": "3231:3:82"
                        },
                        "nodeType": "ForStatement",
                        "src": "3186:291:82"
                      }
                    ]
                  },
                  "documentation": "@notice adds vestings that were deployed in previous vesting registries\n@dev migration of data from previous vesting registy contracts",
                  "id": 23875,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23830,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23829,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "3167:14:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3167:14:82"
                    }
                  ],
                  "name": "addDeployedVestings",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23828,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23824,
                        "name": "_tokenOwners",
                        "nodeType": "VariableDeclaration",
                        "scope": 23875,
                        "src": "3083:31:82",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 23822,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3083:7:82",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 23823,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3083:9:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23827,
                        "name": "_vestingCreationTypes",
                        "nodeType": "VariableDeclaration",
                        "scope": 23875,
                        "src": "3116:40:82",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 23825,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3116:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 23826,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3116:9:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3082:75:82"
                  },
                  "returnParameters": {
                    "id": 23831,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3182:0:82"
                  },
                  "scope": 24482,
                  "src": "3054:426:82",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23896,
                    "nodeType": "Block",
                    "src": "4016:69:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23889,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23877,
                              "src": "4038:11:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23890,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23879,
                              "src": "4051:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23891,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23881,
                              "src": "4060:6:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23892,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23883,
                              "src": "4068:9:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 23893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4079:1:82",
                              "subdenomination": null,
                              "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 23888,
                            "name": "createVestingAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23935,
                            "src": "4020:17:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 23894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4020:61:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23895,
                        "nodeType": "ExpressionStatement",
                        "src": "4020:61:82"
                      }
                    ]
                  },
                  "documentation": "@notice creates Vesting contract\n@param _tokenOwner the owner of the tokens\n@param _amount the amount to be staked\n@param _cliff the cliff in seconds\n@param _duration the total duration in seconds\n@dev Calls a public createVestingAddr function with vestingCreationType. This is to accomodate the existing logic for LockedSOV\n@dev vestingCreationType 0 = LockedSOV",
                  "id": 23897,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23886,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23885,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "4001:14:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4001:14:82"
                    }
                  ],
                  "name": "createVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23884,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23877,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23897,
                        "src": "3911:19:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23876,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3911:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23879,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23897,
                        "src": "3934:15:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3934:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23881,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 23897,
                        "src": "3953:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23880,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3953:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23883,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 23897,
                        "src": "3971:17:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23882,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3971:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3907:84:82"
                  },
                  "returnParameters": {
                    "id": 23887,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4016:0:82"
                  },
                  "scope": 24482,
                  "src": "3885:200:82",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23934,
                    "nodeType": "Block",
                    "src": "4570:224:82",
                    "statements": [
                      {
                        "assignments": [
                          23913
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23913,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 23934,
                            "src": "4574:15:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 23912,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4574:7:82",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23924,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23915,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23899,
                              "src": "4612:11:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23916,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23903,
                              "src": "4625:6:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23917,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23905,
                              "src": "4633:9:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23919,
                                    "name": "VestingType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24521,
                                    "src": "4652:11:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_VestingType_$24521_$",
                                      "typeString": "type(enum VestingRegistryStorage.VestingType)"
                                    }
                                  },
                                  "id": 23920,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Vesting",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4652:19:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_VestingType_$24521",
                                    "typeString": "enum VestingRegistryStorage.VestingType"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_VestingType_$24521",
                                    "typeString": "enum VestingRegistryStorage.VestingType"
                                  }
                                ],
                                "id": 23918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4644:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint256"
                              },
                              "id": 23921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4644:28:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23922,
                              "name": "_vestingCreationType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23907,
                              "src": "4674:20:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23914,
                            "name": "_getOrCreateVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24224,
                            "src": "4592:19:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (address,uint256,uint256,uint256,uint256) returns (address)"
                            }
                          },
                          "id": 23923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4592:103:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4574:121:82"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23926,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23899,
                              "src": "4719:11:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23927,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23913,
                              "src": "4732:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23928,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23903,
                              "src": "4741:6:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23929,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23905,
                              "src": "4749:9:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23930,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23901,
                              "src": "4760:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23931,
                              "name": "_vestingCreationType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23907,
                              "src": "4769:20:82",
                              "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23925,
                            "name": "VestingCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23598,
                            "src": "4704:14:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 23932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4704:86:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23933,
                        "nodeType": "EmitStatement",
                        "src": "4699:91:82"
                      }
                    ]
                  },
                  "documentation": "@notice creates Vesting contract\n@param _tokenOwner the owner of the tokens\n@param _amount the amount to be staked\n@param _cliff the cliff in seconds\n@param _duration the total duration in seconds\n@param _vestingCreationType the type of vesting created(e.g. Origin, Bug Bounty etc.)",
                  "id": 23935,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23910,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23909,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "4555:14:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4555:14:82"
                    }
                  ],
                  "name": "createVestingAddr",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23908,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23899,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23935,
                        "src": "4435:19:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23898,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4435:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23901,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23935,
                        "src": "4458:15:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23900,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4458:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23903,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 23935,
                        "src": "4477:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23902,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4477:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23905,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 23935,
                        "src": "4495:17:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23904,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4495:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23907,
                        "name": "_vestingCreationType",
                        "nodeType": "VariableDeclaration",
                        "scope": 23935,
                        "src": "4516:28:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23906,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4516:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4431:116:82"
                  },
                  "returnParameters": {
                    "id": 23911,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4570:0:82"
                  },
                  "scope": 24482,
                  "src": "4405:389:82",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23972,
                    "nodeType": "Block",
                    "src": "5286:232:82",
                    "statements": [
                      {
                        "assignments": [
                          23951
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23951,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 23972,
                            "src": "5290:15:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 23950,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5290:7:82",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23962,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23953,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23937,
                              "src": "5328:11:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23954,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23941,
                              "src": "5341:6:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23955,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23943,
                              "src": "5349:9:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23957,
                                    "name": "VestingType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24521,
                                    "src": "5368:11:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_VestingType_$24521_$",
                                      "typeString": "type(enum VestingRegistryStorage.VestingType)"
                                    }
                                  },
                                  "id": 23958,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "TeamVesting",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5368:23:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_VestingType_$24521",
                                    "typeString": "enum VestingRegistryStorage.VestingType"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_VestingType_$24521",
                                    "typeString": "enum VestingRegistryStorage.VestingType"
                                  }
                                ],
                                "id": 23956,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5360:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint256"
                              },
                              "id": 23959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5360:32:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23960,
                              "name": "_vestingCreationType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23945,
                              "src": "5394:20:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23952,
                            "name": "_getOrCreateVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24224,
                            "src": "5308:19:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (address,uint256,uint256,uint256,uint256) returns (address)"
                            }
                          },
                          "id": 23961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5308:107:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5290:125:82"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23964,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23937,
                              "src": "5443:11:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23965,
                              "name": "vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23951,
                              "src": "5456:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23966,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23941,
                              "src": "5465:6:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23967,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23943,
                              "src": "5473:9:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23968,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23939,
                              "src": "5484:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23969,
                              "name": "_vestingCreationType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23945,
                              "src": "5493:20:82",
                              "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23963,
                            "name": "TeamVestingCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23612,
                            "src": "5424:18:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 23970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5424:90:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23971,
                        "nodeType": "EmitStatement",
                        "src": "5419:95:82"
                      }
                    ]
                  },
                  "documentation": "@notice creates Team Vesting contract\n@param _tokenOwner the owner of the tokens\n@param _amount the amount to be staked\n@param _cliff the cliff in seconds\n@param _duration the total duration in seconds\n@param _vestingCreationType the type of vesting created(e.g. Origin, Bug Bounty etc.)",
                  "id": 23973,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23948,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23947,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "5271:14:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5271:14:82"
                    }
                  ],
                  "name": "createTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23946,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23937,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 23973,
                        "src": "5149:19:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23936,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5149:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23939,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 23973,
                        "src": "5172:15:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23938,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5172:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23941,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 23973,
                        "src": "5191:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23940,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5191:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23943,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 23973,
                        "src": "5209:17:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23942,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5209:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23945,
                        "name": "_vestingCreationType",
                        "nodeType": "VariableDeclaration",
                        "scope": 23973,
                        "src": "5230:28:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23944,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5230:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5145:116:82"
                  },
                  "returnParameters": {
                    "id": 23949,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5286:0:82"
                  },
                  "scope": 24482,
                  "src": "5119:399:82",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 24018,
                    "nodeType": "Block",
                    "src": "5772:234:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23987,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23983,
                                "name": "_vesting",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23975,
                                "src": "5784:8:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23985,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5804:1:82",
                                    "subdenomination": null,
                                    "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": 23984,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5796:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 23986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5796:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5784:22:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76657374696e67206164647265737320696e76616c6964",
                              "id": 23988,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5808:25:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_380b2e4a9c1835648e0f5052b5fbe4ee62cf6b14ea12c4964331c26922214dc7",
                                "typeString": "literal_string \"vesting address invalid\""
                              },
                              "value": "vesting address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_380b2e4a9c1835648e0f5052b5fbe4ee62cf6b14ea12c4964331c26922214dc7",
                                "typeString": "literal_string \"vesting address invalid\""
                              }
                            ],
                            "id": 23982,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5776:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23989,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5776:58:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23990,
                        "nodeType": "ExpressionStatement",
                        "src": "5776:58:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 23994,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23992,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23977,
                                "src": "5846:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 23993,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5856:1:82",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5846:11:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "616d6f756e7420696e76616c6964",
                              "id": 23995,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5859:16:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              },
                              "value": "amount invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_35d0ab22709475eae42d771a8f5fae6ab2365cdbe71f038fe31d02b8bed4a532",
                                "typeString": "literal_string \"amount invalid\""
                              }
                            ],
                            "id": 23991,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5838:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5838:38:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23997,
                        "nodeType": "ExpressionStatement",
                        "src": "5838:38:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24002,
                              "name": "_vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23975,
                              "src": "5901:8:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24003,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23977,
                              "src": "5911:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23999,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24512,
                                  "src": "5888:3:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 23998,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "5881:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 24000,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5881:11:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 24001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24662,
                            "src": "5881:19:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 24004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5881:38:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 24005,
                        "nodeType": "ExpressionStatement",
                        "src": "5881:38:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24010,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23977,
                              "src": "5954:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 24007,
                                  "name": "_vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23975,
                                  "src": "5932:8:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 24006,
                                "name": "IVesting",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18597,
                                "src": "5923:8:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IVesting_$18597_$",
                                  "typeString": "type(contract IVesting)"
                                }
                              },
                              "id": 24008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5923:18:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IVesting_$18597",
                                "typeString": "contract IVesting"
                              }
                            },
                            "id": 24009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakeTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18596,
                            "src": "5923:30:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 24011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5923:39:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24012,
                        "nodeType": "ExpressionStatement",
                        "src": "5923:39:82"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24014,
                              "name": "_vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23975,
                              "src": "5984:8:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24015,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23977,
                              "src": "5994:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 24013,
                            "name": "TokensStaked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23618,
                            "src": "5971:12:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 24016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5971:31:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24017,
                        "nodeType": "EmitStatement",
                        "src": "5966:36:82"
                      }
                    ]
                  },
                  "documentation": "@notice stakes tokens according to the vesting schedule\n@param _vesting the address of Vesting contract\n@param _amount the amount of tokens to stake",
                  "id": 24019,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23980,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23979,
                        "name": "onlyAuthorized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44942,
                        "src": "5757:14:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5757:14:82"
                    }
                  ],
                  "name": "stakeTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23978,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23975,
                        "name": "_vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 24019,
                        "src": "5713:16:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23974,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5713:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23977,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 24019,
                        "src": "5731:15:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23976,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5731:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5712:35:82"
                  },
                  "returnParameters": {
                    "id": 23981,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5772:0:82"
                  },
                  "scope": 24482,
                  "src": "5692:314:82",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 24037,
                    "nodeType": "Block",
                    "src": "6470:86:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24027,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24021,
                              "src": "6496:11:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 24028,
                                  "name": "lockedSOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24507,
                                  "src": "6509:9:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LockedSOV_$26418",
                                    "typeString": "contract LockedSOV"
                                  }
                                },
                                "id": 24029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cliff",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25605,
                                "src": "6509:15:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 24030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6509:17:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 24031,
                                  "name": "lockedSOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24507,
                                  "src": "6528:9:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LockedSOV_$26418",
                                    "typeString": "contract LockedSOV"
                                  }
                                },
                                "id": 24032,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "duration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25607,
                                "src": "6528:18:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 24033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6528:20:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 24034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6550:1:82",
                              "subdenomination": null,
                              "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 24026,
                            "name": "getVestingAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24079,
                            "src": "6481:14:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (address,uint256,uint256,uint256) view returns (address)"
                            }
                          },
                          "id": 24035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6481:71:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 24025,
                        "id": 24036,
                        "nodeType": "Return",
                        "src": "6474:78:82"
                      }
                    ]
                  },
                  "documentation": "@notice returns vesting contract address for the given token owner\n@param _tokenOwner the owner of the tokens\n@dev Calls a public getVestingAddr function with cliff and duration. This is to accomodate the existing logic for LockedSOV\n@dev We need to use LockedSOV.changeRegistryCliffAndDuration function very judiciously\n@dev vestingCreationType 0 - LockedSOV",
                  "id": 24038,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24021,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 24038,
                        "src": "6419:19:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24020,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6419:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6418:21:82"
                  },
                  "returnParameters": {
                    "id": 24025,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24024,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24038,
                        "src": "6461:7:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24023,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6461:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6460:9:82"
                  },
                  "scope": 24482,
                  "src": "6399:157:82",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 24078,
                    "nodeType": "Block",
                    "src": "6896:206:82",
                    "statements": [
                      {
                        "assignments": [
                          24052
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24052,
                            "name": "type_",
                            "nodeType": "VariableDeclaration",
                            "scope": 24078,
                            "src": "6900:13:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24051,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6900:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24057,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24054,
                                "name": "VestingType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24521,
                                "src": "6924:11:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_VestingType_$24521_$",
                                  "typeString": "type(enum VestingRegistryStorage.VestingType)"
                                }
                              },
                              "id": 24055,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Vesting",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6924:19:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_VestingType_$24521",
                                "typeString": "enum VestingRegistryStorage.VestingType"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_VestingType_$24521",
                                "typeString": "enum VestingRegistryStorage.VestingType"
                              }
                            ],
                            "id": 24053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6916:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 24056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6916:28:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6900:44:82"
                      },
                      {
                        "assignments": [
                          24059
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24059,
                            "name": "uid",
                            "nodeType": "VariableDeclaration",
                            "scope": 24078,
                            "src": "6948:11:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24058,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6948:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24072,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 24064,
                                      "name": "_tokenOwner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24040,
                                      "src": "6997:11:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24065,
                                      "name": "type_",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24052,
                                      "src": "7010:5:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24066,
                                      "name": "_cliff",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24042,
                                      "src": "7017:6:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24067,
                                      "name": "_duration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24044,
                                      "src": "7025:9:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24068,
                                      "name": "_vestingCreationType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24046,
                                      "src": "7036:20:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24062,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44981,
                                      "src": "6980:3:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 24063,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6980:16:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 24069,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6980:77:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 24061,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44988,
                                "src": "6970:9:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 24070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6970:88:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 24060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6962:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 24071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6962:97:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6948:111:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 24073,
                              "name": "vestings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24532,
                              "src": "7070:8:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vesting_$24528_storage_$",
                                "typeString": "mapping(uint256 => struct VestingRegistryStorage.Vesting storage ref)"
                              }
                            },
                            "id": 24075,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 24074,
                              "name": "uid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24059,
                              "src": "7079:3:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7070:13:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vesting_$24528_storage",
                              "typeString": "struct VestingRegistryStorage.Vesting storage ref"
                            }
                          },
                          "id": 24076,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "vestingAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 24527,
                          "src": "7070:28:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 24050,
                        "id": 24077,
                        "nodeType": "Return",
                        "src": "7063:35:82"
                      }
                    ]
                  },
                  "documentation": "@notice public function that returns vesting contract address for the given token owner, cliff, duration\n@dev Important: Please use this instead of getVesting function",
                  "id": 24079,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getVestingAddr",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24047,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24040,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 24079,
                        "src": "6772:19:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24039,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6772:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24042,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 24079,
                        "src": "6795:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24041,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6795:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24044,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 24079,
                        "src": "6813:17:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24043,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6813:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24046,
                        "name": "_vestingCreationType",
                        "nodeType": "VariableDeclaration",
                        "scope": 24079,
                        "src": "6834:28:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24045,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6834:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6768:97:82"
                  },
                  "returnParameters": {
                    "id": 24050,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24049,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24079,
                        "src": "6887:7:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24048,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6887:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6886:9:82"
                  },
                  "scope": 24482,
                  "src": "6745:357:82",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 24119,
                    "nodeType": "Block",
                    "src": "7359:210:82",
                    "statements": [
                      {
                        "assignments": [
                          24093
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24093,
                            "name": "type_",
                            "nodeType": "VariableDeclaration",
                            "scope": 24119,
                            "src": "7363:13:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24092,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7363:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24098,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24095,
                                "name": "VestingType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24521,
                                "src": "7387:11:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_VestingType_$24521_$",
                                  "typeString": "type(enum VestingRegistryStorage.VestingType)"
                                }
                              },
                              "id": 24096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "TeamVesting",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7387:23:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_VestingType_$24521",
                                "typeString": "enum VestingRegistryStorage.VestingType"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_VestingType_$24521",
                                "typeString": "enum VestingRegistryStorage.VestingType"
                              }
                            ],
                            "id": 24094,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7379:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 24097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7379:32:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7363:48:82"
                      },
                      {
                        "assignments": [
                          24100
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24100,
                            "name": "uid",
                            "nodeType": "VariableDeclaration",
                            "scope": 24119,
                            "src": "7415:11:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24099,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7415:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24113,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 24105,
                                      "name": "_tokenOwner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24081,
                                      "src": "7464:11:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24106,
                                      "name": "type_",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24093,
                                      "src": "7477:5:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24107,
                                      "name": "_cliff",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24083,
                                      "src": "7484:6:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24108,
                                      "name": "_duration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24085,
                                      "src": "7492:9:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24109,
                                      "name": "_vestingCreationType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24087,
                                      "src": "7503:20:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24103,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44981,
                                      "src": "7447:3:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 24104,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7447:16:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 24110,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7447:77:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 24102,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44988,
                                "src": "7437:9:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 24111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7437:88:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 24101,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7429:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 24112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7429:97:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7415:111:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 24114,
                              "name": "vestings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24532,
                              "src": "7537:8:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vesting_$24528_storage_$",
                                "typeString": "mapping(uint256 => struct VestingRegistryStorage.Vesting storage ref)"
                              }
                            },
                            "id": 24116,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 24115,
                              "name": "uid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24100,
                              "src": "7546:3:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7537:13:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vesting_$24528_storage",
                              "typeString": "struct VestingRegistryStorage.Vesting storage ref"
                            }
                          },
                          "id": 24117,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "vestingAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 24527,
                          "src": "7537:28:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 24091,
                        "id": 24118,
                        "nodeType": "Return",
                        "src": "7530:35:82"
                      }
                    ]
                  },
                  "documentation": "@notice returns team vesting contract address for the given token owner, cliff, duration",
                  "id": 24120,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTeamVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24088,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24081,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 24120,
                        "src": "7235:19:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24080,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7235:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24083,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 24120,
                        "src": "7258:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24082,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7258:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24085,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 24120,
                        "src": "7276:17:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24084,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7276:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24087,
                        "name": "_vestingCreationType",
                        "nodeType": "VariableDeclaration",
                        "scope": 24120,
                        "src": "7297:28:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24086,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7297:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7231:97:82"
                  },
                  "returnParameters": {
                    "id": 24091,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24090,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24120,
                        "src": "7350:7:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24089,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7350:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7349:9:82"
                  },
                  "scope": 24482,
                  "src": "7208:361:82",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 24223,
                    "nodeType": "Block",
                    "src": "8086:650:82",
                    "statements": [
                      {
                        "assignments": [
                          24136
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24136,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 24223,
                            "src": "8090:15:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 24135,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8090:7:82",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24137,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8090:15:82"
                      },
                      {
                        "assignments": [
                          24139
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24139,
                            "name": "uid",
                            "nodeType": "VariableDeclaration",
                            "scope": 24223,
                            "src": "8109:11:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24138,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8109:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24152,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 24144,
                                      "name": "_tokenOwner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24122,
                                      "src": "8158:11:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24145,
                                      "name": "_type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24128,
                                      "src": "8171:5:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24146,
                                      "name": "_cliff",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24124,
                                      "src": "8178:6:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24147,
                                      "name": "_duration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24126,
                                      "src": "8186:9:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24148,
                                      "name": "_vestingCreationType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24130,
                                      "src": "8197:20:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24142,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44981,
                                      "src": "8141:3:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 24143,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8141:16:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 24149,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8141:77:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 24141,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44988,
                                "src": "8131:9:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 24150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8131:88:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 24140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8123:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint256"
                          },
                          "id": 24151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8123:97:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8109:111:82"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 24160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 24153,
                                "name": "vestings",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24532,
                                "src": "8228:8:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vesting_$24528_storage_$",
                                  "typeString": "mapping(uint256 => struct VestingRegistryStorage.Vesting storage ref)"
                                }
                              },
                              "id": 24155,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 24154,
                                "name": "uid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24139,
                                "src": "8237:3:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8228:13:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vesting_$24528_storage",
                                "typeString": "struct VestingRegistryStorage.Vesting storage ref"
                              }
                            },
                            "id": 24156,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "vestingAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24527,
                            "src": "8228:28:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 24158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8268:1:82",
                                "subdenomination": null,
                                "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": 24157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8260:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 24159,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8260:10:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "8228:42:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 24217,
                        "nodeType": "IfStatement",
                        "src": "8224:470:82",
                        "trueBody": {
                          "id": 24216,
                          "nodeType": "Block",
                          "src": "8272:422:82",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 24163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 24161,
                                  "name": "_type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24128,
                                  "src": "8281:5:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 24162,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8290:1:82",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "8281:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 24191,
                                "nodeType": "Block",
                                "src": "8425:131:82",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24189,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 24178,
                                        "name": "vesting",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24136,
                                        "src": "8431:7:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 24181,
                                            "name": "SOV",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24512,
                                            "src": "8474:3:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24182,
                                            "name": "staking",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24514,
                                            "src": "8479:7:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24183,
                                            "name": "_tokenOwner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24122,
                                            "src": "8488:11:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24184,
                                            "name": "_cliff",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24124,
                                            "src": "8501:6:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24185,
                                            "name": "_duration",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24126,
                                            "src": "8509:9:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24186,
                                            "name": "feeSharingProxy",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24516,
                                            "src": "8520:15:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24187,
                                            "name": "vestingOwner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24518,
                                            "src": "8537:12:82",
                                            "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_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 24179,
                                            "name": "vestingFactory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24505,
                                            "src": "8441:14:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                                              "typeString": "contract IVestingFactory"
                                            }
                                          },
                                          "id": 24180,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "deployTeamVesting",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 18637,
                                          "src": "8441:32:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$_t_address_$",
                                            "typeString": "function (address,address,address,uint256,uint256,address,address) external returns (address)"
                                          }
                                        },
                                        "id": 24188,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8441:109:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "8431:119:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 24190,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8431:119:82"
                                  }
                                ]
                              },
                              "id": 24192,
                              "nodeType": "IfStatement",
                              "src": "8277:279:82",
                              "trueBody": {
                                "id": 24177,
                                "nodeType": "Block",
                                "src": "8293:126:82",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24175,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 24164,
                                        "name": "vesting",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24136,
                                        "src": "8299:7:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 24167,
                                            "name": "SOV",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24512,
                                            "src": "8338:3:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24168,
                                            "name": "staking",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24514,
                                            "src": "8343:7:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24169,
                                            "name": "_tokenOwner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24122,
                                            "src": "8352:11:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24170,
                                            "name": "_cliff",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24124,
                                            "src": "8365:6:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24171,
                                            "name": "_duration",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24126,
                                            "src": "8373:9:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24172,
                                            "name": "feeSharingProxy",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24516,
                                            "src": "8384:15:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24173,
                                            "name": "_tokenOwner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24122,
                                            "src": "8401:11:82",
                                            "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_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 24165,
                                            "name": "vestingFactory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24505,
                                            "src": "8309:14:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                                              "typeString": "contract IVestingFactory"
                                            }
                                          },
                                          "id": 24166,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "deployVesting",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 18618,
                                          "src": "8309:28:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$_t_address_$",
                                            "typeString": "function (address,address,address,uint256,uint256,address,address) external returns (address)"
                                          }
                                        },
                                        "id": 24174,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8309:104:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "8299:114:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 24176,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8299:114:82"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 24201,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 24193,
                                    "name": "vestings",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24532,
                                    "src": "8560:8:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vesting_$24528_storage_$",
                                      "typeString": "mapping(uint256 => struct VestingRegistryStorage.Vesting storage ref)"
                                    }
                                  },
                                  "id": 24195,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 24194,
                                    "name": "uid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24139,
                                    "src": "8569:3:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8560:13:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vesting_$24528_storage",
                                    "typeString": "struct VestingRegistryStorage.Vesting storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 24197,
                                      "name": "_type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24128,
                                      "src": "8584:5:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24198,
                                      "name": "_vestingCreationType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24130,
                                      "src": "8591:20:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24199,
                                      "name": "vesting",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24136,
                                      "src": "8613:7:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 24196,
                                    "name": "Vesting",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24528,
                                    "src": "8576:7:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_Vesting_$24528_storage_ptr_$",
                                      "typeString": "type(struct VestingRegistryStorage.Vesting storage pointer)"
                                    }
                                  },
                                  "id": 24200,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8576:45:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vesting_$24528_memory",
                                    "typeString": "struct VestingRegistryStorage.Vesting memory"
                                  }
                                },
                                "src": "8560:61:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Vesting_$24528_storage",
                                  "typeString": "struct VestingRegistryStorage.Vesting storage ref"
                                }
                              },
                              "id": 24202,
                              "nodeType": "ExpressionStatement",
                              "src": "8560:61:82"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24207,
                                    "name": "uid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24139,
                                    "src": "8655:3:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 24203,
                                      "name": "vestingsOf",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24537,
                                      "src": "8626:10:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
                                        "typeString": "mapping(address => uint256[] storage ref)"
                                      }
                                    },
                                    "id": 24205,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 24204,
                                      "name": "_tokenOwner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24122,
                                      "src": "8637:11:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8626:23:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 24206,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8626:28:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) returns (uint256)"
                                  }
                                },
                                "id": 24208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8626:33:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24209,
                              "nodeType": "ExpressionStatement",
                              "src": "8626:33:82"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 24214,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 24210,
                                    "name": "isVesting",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24541,
                                    "src": "8664:9:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 24212,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 24211,
                                    "name": "vesting",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24136,
                                    "src": "8674:7:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8664:18:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 24213,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8685:4:82",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "8664:25:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 24215,
                              "nodeType": "ExpressionStatement",
                              "src": "8664:25:82"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 24218,
                              "name": "vestings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24532,
                              "src": "8704:8:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vesting_$24528_storage_$",
                                "typeString": "mapping(uint256 => struct VestingRegistryStorage.Vesting storage ref)"
                              }
                            },
                            "id": 24220,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 24219,
                              "name": "uid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24139,
                              "src": "8713:3:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8704:13:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vesting_$24528_storage",
                              "typeString": "struct VestingRegistryStorage.Vesting storage ref"
                            }
                          },
                          "id": 24221,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "vestingAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 24527,
                          "src": "8704:28:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 24134,
                        "id": 24222,
                        "nodeType": "Return",
                        "src": "8697:35:82"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to deploy Vesting/Team Vesting contract\n@param _tokenOwner the owner of the tokens\n@param _cliff the cliff in seconds\n@param _duration the total duration in seconds\n@param _type the type of vesting\n@param _vestingCreationType the type of vesting created(e.g. Origin, Bug Bounty etc.)",
                  "id": 24224,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getOrCreateVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24122,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 24224,
                        "src": "7948:19:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24121,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7948:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24124,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 24224,
                        "src": "7971:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24123,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7971:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24126,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 24224,
                        "src": "7989:17:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24125,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7989:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24128,
                        "name": "_type",
                        "nodeType": "VariableDeclaration",
                        "scope": 24224,
                        "src": "8010:13:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24127,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8010:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24130,
                        "name": "_vestingCreationType",
                        "nodeType": "VariableDeclaration",
                        "scope": 24224,
                        "src": "8027:28:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24129,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8027:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7944:114:82"
                  },
                  "returnParameters": {
                    "id": 24134,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24133,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24224,
                        "src": "8077:7:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24132,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8077:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8076:9:82"
                  },
                  "scope": 24482,
                  "src": "7916:820:82",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24387,
                    "nodeType": "Block",
                    "src": "8946:1151:82",
                    "statements": [
                      {
                        "assignments": [
                          24232
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24232,
                            "name": "vestingType",
                            "nodeType": "VariableDeclaration",
                            "scope": 24387,
                            "src": "8950:19:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24231,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8950:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24234,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 24233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8972:1:82",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8950:23:82"
                      },
                      {
                        "assignments": [
                          24236
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24236,
                            "name": "teamVestingType",
                            "nodeType": "VariableDeclaration",
                            "scope": 24387,
                            "src": "8977:23:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24235,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8977:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24238,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 24237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9003:1:82",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8977:27:82"
                      },
                      {
                        "assignments": [
                          24240
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24240,
                            "name": "uid",
                            "nodeType": "VariableDeclaration",
                            "scope": 24387,
                            "src": "9008:11:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24239,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9008:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24241,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9008:11:82"
                      },
                      {
                        "assignments": [
                          24243
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24243,
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 24387,
                            "src": "9023:14:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24242,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9023:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24246,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 24244,
                            "name": "vestingRegistries",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24510,
                            "src": "9040:17:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IVestingRegistry_$18655_$dyn_storage",
                              "typeString": "contract IVestingRegistry[] storage ref"
                            }
                          },
                          "id": 24245,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9040:24:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9023:41:82"
                      },
                      {
                        "body": {
                          "id": 24385,
                          "nodeType": "Block",
                          "src": "9105:989:82",
                          "statements": [
                            {
                              "assignments": [
                                24258
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 24258,
                                  "name": "vestingAddress",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 24385,
                                  "src": "9110:22:82",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 24257,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9110:7:82",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 24265,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24263,
                                    "name": "_tokenOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24226,
                                    "src": "9167:11:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 24259,
                                      "name": "vestingRegistries",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24510,
                                      "src": "9135:17:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_contract$_IVestingRegistry_$18655_$dyn_storage",
                                        "typeString": "contract IVestingRegistry[] storage ref"
                                      }
                                    },
                                    "id": 24261,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 24260,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24248,
                                      "src": "9153:1:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9135:20:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVestingRegistry_$18655",
                                      "typeString": "contract IVestingRegistry"
                                    }
                                  },
                                  "id": 24262,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getVesting",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18647,
                                  "src": "9135:31:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address) view external returns (address)"
                                  }
                                },
                                "id": 24264,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9135:44:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9110:69:82"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 24270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 24266,
                                  "name": "vestingAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24258,
                                  "src": "9188:14:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 24268,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9214:1:82",
                                      "subdenomination": null,
                                      "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": 24267,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "9206:7:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 24269,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9206:10:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "9188:28:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 24320,
                              "nodeType": "IfStatement",
                              "src": "9184:398:82",
                              "trueBody": {
                                "id": 24319,
                                "nodeType": "Block",
                                "src": "9218:364:82",
                                "statements": [
                                  {
                                    "assignments": [
                                      24272
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 24272,
                                        "name": "vesting",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 24319,
                                        "src": "9224:20:82",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                          "typeString": "contract VestingLogic"
                                        },
                                        "typeName": {
                                          "contractScope": null,
                                          "id": 24271,
                                          "name": "VestingLogic",
                                          "nodeType": "UserDefinedTypeName",
                                          "referencedDeclaration": 21207,
                                          "src": "9224:12:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                            "typeString": "contract VestingLogic"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 24276,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 24274,
                                          "name": "vestingAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24258,
                                          "src": "9260:14:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 24273,
                                        "name": "VestingLogic",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21207,
                                        "src": "9247:12:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_VestingLogic_$21207_$",
                                          "typeString": "type(contract VestingLogic)"
                                        }
                                      },
                                      "id": 24275,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9247:28:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                        "typeString": "contract VestingLogic"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9224:51:82"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24294,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 24277,
                                        "name": "uid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24240,
                                        "src": "9281:3:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 24282,
                                                    "name": "_tokenOwner",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 24226,
                                                    "src": "9328:11:82",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 24283,
                                                    "name": "vestingType",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 24232,
                                                    "src": "9341:11:82",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "arguments": [],
                                                    "expression": {
                                                      "argumentTypes": [],
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 24284,
                                                        "name": "vesting",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 24272,
                                                        "src": "9354:7:82",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                                          "typeString": "contract VestingLogic"
                                                        }
                                                      },
                                                      "id": 24285,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "cliff",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 24560,
                                                      "src": "9354:13:82",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                        "typeString": "function () view external returns (uint256)"
                                                      }
                                                    },
                                                    "id": 24286,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9354:15:82",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "arguments": [],
                                                    "expression": {
                                                      "argumentTypes": [],
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 24287,
                                                        "name": "vesting",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 24272,
                                                        "src": "9371:7:82",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                                          "typeString": "contract VestingLogic"
                                                        }
                                                      },
                                                      "id": 24288,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "duration",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 24562,
                                                      "src": "9371:16:82",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                        "typeString": "function () view external returns (uint256)"
                                                      }
                                                    },
                                                    "id": 24289,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9371:18:82",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 24290,
                                                    "name": "_vestingCreationType",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 24228,
                                                    "src": "9391:20:82",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 24280,
                                                    "name": "abi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 44981,
                                                    "src": "9311:3:82",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_abi",
                                                      "typeString": "abi"
                                                    }
                                                  },
                                                  "id": 24281,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "memberName": "encodePacked",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": null,
                                                  "src": "9311:16:82",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                    "typeString": "function () pure returns (bytes memory)"
                                                  }
                                                },
                                                "id": 24291,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9311:101:82",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "id": 24279,
                                              "name": "keccak256",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44988,
                                              "src": "9301:9:82",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                              }
                                            },
                                            "id": 24292,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9301:112:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 24278,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "9287:7:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": "uint256"
                                        },
                                        "id": 24293,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9287:132:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9281:138:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 24295,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9281:138:82"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24304,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 24296,
                                          "name": "vestings",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24532,
                                          "src": "9425:8:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vesting_$24528_storage_$",
                                            "typeString": "mapping(uint256 => struct VestingRegistryStorage.Vesting storage ref)"
                                          }
                                        },
                                        "id": 24298,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 24297,
                                          "name": "uid",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24240,
                                          "src": "9434:3:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "9425:13:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Vesting_$24528_storage",
                                          "typeString": "struct VestingRegistryStorage.Vesting storage ref"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 24300,
                                            "name": "vestingType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24232,
                                            "src": "9449:11:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24301,
                                            "name": "_vestingCreationType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24228,
                                            "src": "9462:20:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24302,
                                            "name": "vestingAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24258,
                                            "src": "9484:14:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 24299,
                                          "name": "Vesting",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24528,
                                          "src": "9441:7:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_struct$_Vesting_$24528_storage_ptr_$",
                                            "typeString": "type(struct VestingRegistryStorage.Vesting storage pointer)"
                                          }
                                        },
                                        "id": 24303,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "structConstructorCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9441:58:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Vesting_$24528_memory",
                                          "typeString": "struct VestingRegistryStorage.Vesting memory"
                                        }
                                      },
                                      "src": "9425:74:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Vesting_$24528_storage",
                                        "typeString": "struct VestingRegistryStorage.Vesting storage ref"
                                      }
                                    },
                                    "id": 24305,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9425:74:82"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 24310,
                                          "name": "uid",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24240,
                                          "src": "9534:3:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 24306,
                                            "name": "vestingsOf",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24537,
                                            "src": "9505:10:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
                                              "typeString": "mapping(address => uint256[] storage ref)"
                                            }
                                          },
                                          "id": 24308,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 24307,
                                            "name": "_tokenOwner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24226,
                                            "src": "9516:11:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "9505:23:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                            "typeString": "uint256[] storage ref"
                                          }
                                        },
                                        "id": 24309,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "push",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "9505:28:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256) returns (uint256)"
                                        }
                                      },
                                      "id": 24311,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9505:33:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 24312,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9505:33:82"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24317,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 24313,
                                          "name": "isVesting",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24541,
                                          "src": "9544:9:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                            "typeString": "mapping(address => bool)"
                                          }
                                        },
                                        "id": 24315,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 24314,
                                          "name": "vestingAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24258,
                                          "src": "9554:14:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "9544:25:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "74727565",
                                        "id": 24316,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9572:4:82",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "true"
                                      },
                                      "src": "9544:32:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 24318,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9544:32:82"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                24322
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 24322,
                                  "name": "teamVestingAddress",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 24385,
                                  "src": "9586:26:82",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 24321,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9586:7:82",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 24329,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24327,
                                    "name": "_tokenOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24226,
                                    "src": "9651:11:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 24323,
                                      "name": "vestingRegistries",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24510,
                                      "src": "9615:17:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_contract$_IVestingRegistry_$18655_$dyn_storage",
                                        "typeString": "contract IVestingRegistry[] storage ref"
                                      }
                                    },
                                    "id": 24325,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 24324,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24248,
                                      "src": "9633:1:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9615:20:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVestingRegistry_$18655",
                                      "typeString": "contract IVestingRegistry"
                                    }
                                  },
                                  "id": 24326,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getTeamVesting",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18654,
                                  "src": "9615:35:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address) view external returns (address)"
                                  }
                                },
                                "id": 24328,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9615:48:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9586:77:82"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 24334,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 24330,
                                  "name": "teamVestingAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24322,
                                  "src": "9672:18:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 24332,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9702:1:82",
                                      "subdenomination": null,
                                      "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": 24331,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "9694:7:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 24333,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9694:10:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "9672:32:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 24384,
                              "nodeType": "IfStatement",
                              "src": "9668:422:82",
                              "trueBody": {
                                "id": 24383,
                                "nodeType": "Block",
                                "src": "9706:384:82",
                                "statements": [
                                  {
                                    "assignments": [
                                      24336
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 24336,
                                        "name": "vesting",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 24383,
                                        "src": "9712:20:82",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                          "typeString": "contract VestingLogic"
                                        },
                                        "typeName": {
                                          "contractScope": null,
                                          "id": 24335,
                                          "name": "VestingLogic",
                                          "nodeType": "UserDefinedTypeName",
                                          "referencedDeclaration": 21207,
                                          "src": "9712:12:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                            "typeString": "contract VestingLogic"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 24340,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 24338,
                                          "name": "teamVestingAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24322,
                                          "src": "9748:18:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 24337,
                                        "name": "VestingLogic",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21207,
                                        "src": "9735:12:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_VestingLogic_$21207_$",
                                          "typeString": "type(contract VestingLogic)"
                                        }
                                      },
                                      "id": 24339,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9735:32:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                        "typeString": "contract VestingLogic"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9712:55:82"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24358,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 24341,
                                        "name": "uid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24240,
                                        "src": "9773:3:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 24346,
                                                    "name": "_tokenOwner",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 24226,
                                                    "src": "9820:11:82",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 24347,
                                                    "name": "teamVestingType",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 24236,
                                                    "src": "9833:15:82",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "arguments": [],
                                                    "expression": {
                                                      "argumentTypes": [],
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 24348,
                                                        "name": "vesting",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 24336,
                                                        "src": "9850:7:82",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                                          "typeString": "contract VestingLogic"
                                                        }
                                                      },
                                                      "id": 24349,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "cliff",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 24560,
                                                      "src": "9850:13:82",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                        "typeString": "function () view external returns (uint256)"
                                                      }
                                                    },
                                                    "id": 24350,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9850:15:82",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "arguments": [],
                                                    "expression": {
                                                      "argumentTypes": [],
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 24351,
                                                        "name": "vesting",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 24336,
                                                        "src": "9867:7:82",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                                          "typeString": "contract VestingLogic"
                                                        }
                                                      },
                                                      "id": 24352,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "duration",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 24562,
                                                      "src": "9867:16:82",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                        "typeString": "function () view external returns (uint256)"
                                                      }
                                                    },
                                                    "id": 24353,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9867:18:82",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 24354,
                                                    "name": "_vestingCreationType",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 24228,
                                                    "src": "9887:20:82",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 24344,
                                                    "name": "abi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 44981,
                                                    "src": "9803:3:82",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_abi",
                                                      "typeString": "abi"
                                                    }
                                                  },
                                                  "id": 24345,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "memberName": "encodePacked",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": null,
                                                  "src": "9803:16:82",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                    "typeString": "function () pure returns (bytes memory)"
                                                  }
                                                },
                                                "id": 24355,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9803:105:82",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "id": 24343,
                                              "name": "keccak256",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44988,
                                              "src": "9793:9:82",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                              }
                                            },
                                            "id": 24356,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9793:116:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 24342,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "9779:7:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": "uint256"
                                        },
                                        "id": 24357,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9779:136:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9773:142:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 24359,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9773:142:82"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24368,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 24360,
                                          "name": "vestings",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24532,
                                          "src": "9921:8:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vesting_$24528_storage_$",
                                            "typeString": "mapping(uint256 => struct VestingRegistryStorage.Vesting storage ref)"
                                          }
                                        },
                                        "id": 24362,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 24361,
                                          "name": "uid",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24240,
                                          "src": "9930:3:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "9921:13:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Vesting_$24528_storage",
                                          "typeString": "struct VestingRegistryStorage.Vesting storage ref"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 24364,
                                            "name": "teamVestingType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24236,
                                            "src": "9945:15:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24365,
                                            "name": "_vestingCreationType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24228,
                                            "src": "9962:20:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 24366,
                                            "name": "teamVestingAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24322,
                                            "src": "9984:18:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 24363,
                                          "name": "Vesting",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24528,
                                          "src": "9937:7:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_struct$_Vesting_$24528_storage_ptr_$",
                                            "typeString": "type(struct VestingRegistryStorage.Vesting storage pointer)"
                                          }
                                        },
                                        "id": 24367,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "structConstructorCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9937:66:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Vesting_$24528_memory",
                                          "typeString": "struct VestingRegistryStorage.Vesting memory"
                                        }
                                      },
                                      "src": "9921:82:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Vesting_$24528_storage",
                                        "typeString": "struct VestingRegistryStorage.Vesting storage ref"
                                      }
                                    },
                                    "id": 24369,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9921:82:82"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 24374,
                                          "name": "uid",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24240,
                                          "src": "10038:3:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 24370,
                                            "name": "vestingsOf",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24537,
                                            "src": "10009:10:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
                                              "typeString": "mapping(address => uint256[] storage ref)"
                                            }
                                          },
                                          "id": 24372,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 24371,
                                            "name": "_tokenOwner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24226,
                                            "src": "10020:11:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "10009:23:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                            "typeString": "uint256[] storage ref"
                                          }
                                        },
                                        "id": 24373,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "push",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "10009:28:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256) returns (uint256)"
                                        }
                                      },
                                      "id": 24375,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10009:33:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 24376,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10009:33:82"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24381,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 24377,
                                          "name": "isVesting",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24541,
                                          "src": "10048:9:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                            "typeString": "mapping(address => bool)"
                                          }
                                        },
                                        "id": 24379,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 24378,
                                          "name": "teamVestingAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24322,
                                          "src": "10058:18:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "10048:29:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "74727565",
                                        "id": 24380,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10080:4:82",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "true"
                                      },
                                      "src": "10048:36:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 24382,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10048:36:82"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 24253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 24251,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24248,
                            "src": "9088:1:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 24252,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24243,
                            "src": "9092:6:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9088:10:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 24386,
                        "initializationExpression": {
                          "assignments": [
                            24248
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 24248,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 24386,
                              "src": "9073:9:82",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 24247,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9073:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 24250,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 24249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9085:1:82",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "9073:13:82"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 24255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "9100:3:82",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 24254,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24248,
                              "src": "9100:1:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 24256,
                          "nodeType": "ExpressionStatement",
                          "src": "9100:3:82"
                        },
                        "nodeType": "ForStatement",
                        "src": "9068:1026:82"
                      }
                    ]
                  },
                  "documentation": "@notice stores the addresses of Vesting contracts from all three previous versions of Vesting Registry",
                  "id": 24388,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getDeployedVestings",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24229,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24226,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 24388,
                        "src": "8886:19:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24225,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8886:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24228,
                        "name": "_vestingCreationType",
                        "nodeType": "VariableDeclaration",
                        "scope": 24388,
                        "src": "8907:28:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24227,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8907:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8885:51:82"
                  },
                  "returnParameters": {
                    "id": 24230,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8946:0:82"
                  },
                  "scope": 24482,
                  "src": "8856:1241:82",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24444,
                    "nodeType": "Block",
                    "src": "10261:272:82",
                    "statements": [
                      {
                        "assignments": [
                          24399
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24399,
                            "name": "vestingIds",
                            "nodeType": "VariableDeclaration",
                            "scope": 24444,
                            "src": "10265:27:82",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 24397,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10265:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24398,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "10265:9:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24403,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 24400,
                            "name": "vestingsOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24537,
                            "src": "10295:10:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
                              "typeString": "mapping(address => uint256[] storage ref)"
                            }
                          },
                          "id": 24402,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 24401,
                            "name": "_tokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24390,
                            "src": "10306:11:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10295:23:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10265:53:82"
                      },
                      {
                        "assignments": [
                          24405
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24405,
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 24444,
                            "src": "10322:14:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24404,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10322:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24408,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 24406,
                            "name": "vestingIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24399,
                            "src": "10339:10:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 24407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10339:17:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10322:34:82"
                      },
                      {
                        "assignments": [
                          24412
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24412,
                            "name": "_vestings",
                            "nodeType": "VariableDeclaration",
                            "scope": 24444,
                            "src": "10360:26:82",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Vesting_$24528_memory_$dyn_memory_ptr",
                              "typeString": "struct VestingRegistryStorage.Vesting[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 24410,
                                "name": "Vesting",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 24528,
                                "src": "10360:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Vesting_$24528_storage_ptr",
                                  "typeString": "struct VestingRegistryStorage.Vesting"
                                }
                              },
                              "id": 24411,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "10360:9:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Vesting_$24528_storage_$dyn_storage_ptr",
                                "typeString": "struct VestingRegistryStorage.Vesting[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24419,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24416,
                                "name": "vestingIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24399,
                                "src": "10403:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 24417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10403:17:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 24415,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "10389:13:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Vesting_$24528_memory_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (struct VestingRegistryStorage.Vesting memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 24413,
                                "name": "Vesting",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 24528,
                                "src": "10393:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Vesting_$24528_storage_ptr",
                                  "typeString": "struct VestingRegistryStorage.Vesting"
                                }
                              },
                              "id": 24414,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "10393:9:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Vesting_$24528_storage_$dyn_storage_ptr",
                                "typeString": "struct VestingRegistryStorage.Vesting[]"
                              }
                            }
                          },
                          "id": 24418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10389:32:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Vesting_$24528_memory_$dyn_memory",
                            "typeString": "struct VestingRegistryStorage.Vesting memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10360:61:82"
                      },
                      {
                        "body": {
                          "id": 24440,
                          "nodeType": "Block",
                          "src": "10462:48:82",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 24438,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 24430,
                                    "name": "_vestings",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24412,
                                    "src": "10467:9:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_Vesting_$24528_memory_$dyn_memory_ptr",
                                      "typeString": "struct VestingRegistryStorage.Vesting memory[] memory"
                                    }
                                  },
                                  "id": 24432,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 24431,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24421,
                                    "src": "10477:1:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10467:12:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vesting_$24528_memory",
                                    "typeString": "struct VestingRegistryStorage.Vesting memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 24433,
                                    "name": "vestings",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24532,
                                    "src": "10482:8:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vesting_$24528_storage_$",
                                      "typeString": "mapping(uint256 => struct VestingRegistryStorage.Vesting storage ref)"
                                    }
                                  },
                                  "id": 24437,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 24434,
                                      "name": "vestingIds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24399,
                                      "src": "10491:10:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 24436,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 24435,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24421,
                                      "src": "10502:1:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10491:13:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10482:23:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vesting_$24528_storage",
                                    "typeString": "struct VestingRegistryStorage.Vesting storage ref"
                                  }
                                },
                                "src": "10467:38:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Vesting_$24528_memory",
                                  "typeString": "struct VestingRegistryStorage.Vesting memory"
                                }
                              },
                              "id": 24439,
                              "nodeType": "ExpressionStatement",
                              "src": "10467:38:82"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 24426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 24424,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24421,
                            "src": "10445:1:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 24425,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24405,
                            "src": "10449:6:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10445:10:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 24441,
                        "initializationExpression": {
                          "assignments": [
                            24421
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 24421,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 24441,
                              "src": "10430:9:82",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 24420,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10430:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 24423,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 24422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10442:1:82",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "10430:13:82"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 24428,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "10457:3:82",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 24427,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24421,
                              "src": "10457:1:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 24429,
                          "nodeType": "ExpressionStatement",
                          "src": "10457:3:82"
                        },
                        "nodeType": "ForStatement",
                        "src": "10425:85:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 24442,
                          "name": "_vestings",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24412,
                          "src": "10520:9:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Vesting_$24528_memory_$dyn_memory_ptr",
                            "typeString": "struct VestingRegistryStorage.Vesting memory[] memory"
                          }
                        },
                        "functionReturnParameters": 24395,
                        "id": 24443,
                        "nodeType": "Return",
                        "src": "10513:16:82"
                      }
                    ]
                  },
                  "documentation": "@notice returns all vesting details for the given token owner",
                  "id": 24445,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getVestingsOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24391,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24390,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 24445,
                        "src": "10199:19:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24389,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10199:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10198:21:82"
                  },
                  "returnParameters": {
                    "id": 24395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24394,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24445,
                        "src": "10243:16:82",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Vesting_$24528_memory_$dyn_memory_ptr",
                          "typeString": "struct VestingRegistryStorage.Vesting[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 24392,
                            "name": "Vesting",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 24528,
                            "src": "10243:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vesting_$24528_storage_ptr",
                              "typeString": "struct VestingRegistryStorage.Vesting"
                            }
                          },
                          "id": 24393,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10243:9:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Vesting_$24528_storage_$dyn_storage_ptr",
                            "typeString": "struct VestingRegistryStorage.Vesting[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10242:18:82"
                  },
                  "scope": 24482,
                  "src": "10176:357:82",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 24468,
                    "nodeType": "Block",
                    "src": "10729:108:82",
                    "statements": [
                      {
                        "assignments": [
                          24455
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24455,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 24468,
                            "src": "10733:20:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingLogic_$21207",
                              "typeString": "contract VestingLogic"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 24454,
                              "name": "VestingLogic",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 21207,
                              "src": "10733:12:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                "typeString": "contract VestingLogic"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24459,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24457,
                              "name": "_vestingAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24447,
                              "src": "10769:15:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 24456,
                            "name": "VestingLogic",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21207,
                            "src": "10756:12:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_VestingLogic_$21207_$",
                              "typeString": "type(contract VestingLogic)"
                            }
                          },
                          "id": 24458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10756:29:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_VestingLogic_$21207",
                            "typeString": "contract VestingLogic"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10733:52:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 24460,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24455,
                                  "src": "10797:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                    "typeString": "contract VestingLogic"
                                  }
                                },
                                "id": 24461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cliff",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24560,
                                "src": "10797:13:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 24462,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10797:15:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 24463,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24455,
                                  "src": "10814:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                    "typeString": "contract VestingLogic"
                                  }
                                },
                                "id": 24464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "duration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24562,
                                "src": "10814:16:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 24465,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10814:18:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 24466,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "10796:37:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 24453,
                        "id": 24467,
                        "nodeType": "Return",
                        "src": "10789:44:82"
                      }
                    ]
                  },
                  "documentation": "@notice returns cliff and duration for Vesting & TeamVesting contracts",
                  "id": 24469,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getVestingDetails",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24448,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24447,
                        "name": "_vestingAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 24469,
                        "src": "10648:23:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24446,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10648:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10647:25:82"
                  },
                  "returnParameters": {
                    "id": 24453,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24450,
                        "name": "cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 24469,
                        "src": "10696:13:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24449,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10696:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24452,
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 24469,
                        "src": "10711:16:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24451,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10711:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10695:33:82"
                  },
                  "scope": 24482,
                  "src": "10621:216:82",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 24480,
                    "nodeType": "Block",
                    "src": "10999:41:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 24476,
                            "name": "isVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24541,
                            "src": "11010:9:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 24478,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 24477,
                            "name": "_vestingAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24471,
                            "src": "11020:15:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11010:26:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 24475,
                        "id": 24479,
                        "nodeType": "Return",
                        "src": "11003:33:82"
                      }
                    ]
                  },
                  "documentation": "@notice returns if the address is a vesting address",
                  "id": 24481,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isVestingAdress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24472,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24471,
                        "name": "_vestingAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 24481,
                        "src": "10931:23:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24470,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10931:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10930:25:82"
                  },
                  "returnParameters": {
                    "id": 24475,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24474,
                        "name": "isVestingAddr",
                        "nodeType": "VariableDeclaration",
                        "scope": 24481,
                        "src": "10979:18:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24473,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10979:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10978:20:82"
                  },
                  "scope": 24482,
                  "src": "10906:134:82",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 24483,
              "src": "226:10816:82"
            }
          ],
          "src": "0:11043:82"
        },
        "id": 82
      },
      "contracts/governance/Vesting/VestingRegistryProxy.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/VestingRegistryProxy.sol",
          "exportedSymbols": {
            "VestingRegistryProxy": [
              24491
            ]
          },
          "id": 24492,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 24484,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:83"
            },
            {
              "absolutePath": "contracts/governance/Vesting/VestingRegistryStorage.sol",
              "file": "./VestingRegistryStorage.sol",
              "id": 24485,
              "nodeType": "ImportDirective",
              "scope": 24492,
              "sourceUnit": 24543,
              "src": "26:38:83",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/proxy/UpgradableProxy.sol",
              "file": "../../proxy/UpgradableProxy.sol",
              "id": 24486,
              "nodeType": "ImportDirective",
              "scope": 24492,
              "sourceUnit": 42654,
              "src": "65:41:83",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24487,
                    "name": "VestingRegistryStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24542,
                    "src": "467:22:83",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VestingRegistryStorage_$24542",
                      "typeString": "contract VestingRegistryStorage"
                    }
                  },
                  "id": 24488,
                  "nodeType": "InheritanceSpecifier",
                  "src": "467:22:83"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24489,
                    "name": "UpgradableProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42653,
                    "src": "491:15:83",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UpgradableProxy_$42653",
                      "typeString": "contract UpgradableProxy"
                    }
                  },
                  "id": 24490,
                  "nodeType": "InheritanceSpecifier",
                  "src": "491:15:83"
                }
              ],
              "contractDependencies": [
                24542,
                41125,
                41699,
                41798,
                42623,
                42653,
                44979
              ],
              "contractKind": "contract",
              "documentation": "@title Vesting Registry Proxy contract.\n@dev Vesting Registry contract should be upgradable, use UpgradableProxy.\nVestingRegistryStorage is deployed with the upgradable functionality\nby using this contract instead, that inherits from UpgradableProxy\nthe possibility of being enhanced and re-deployed.\n",
              "fullyImplemented": true,
              "id": 24491,
              "linearizedBaseContracts": [
                24491,
                42653,
                42623,
                24542,
                44979,
                41798,
                41125,
                41699
              ],
              "name": "VestingRegistryProxy",
              "nodeType": "ContractDefinition",
              "nodes": [],
              "scope": 24492,
              "src": "434:77:83"
            }
          ],
          "src": "0:512:83"
        },
        "id": 83
      },
      "contracts/governance/Vesting/VestingRegistryStorage.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/VestingRegistryStorage.sol",
          "exportedSymbols": {
            "VestingRegistryStorage": [
              24542
            ]
          },
          "id": 24543,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 24493,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:84"
            },
            {
              "absolutePath": "contracts/openzeppelin/Initializable.sol",
              "file": "../../openzeppelin/Initializable.sol",
              "id": 24494,
              "nodeType": "ImportDirective",
              "scope": 24543,
              "sourceUnit": 41700,
              "src": "26:46:84",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/AdminRole.sol",
              "file": "../../utils/AdminRole.sol",
              "id": 24495,
              "nodeType": "ImportDirective",
              "scope": 24543,
              "sourceUnit": 44980,
              "src": "73:35:84",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 24496,
              "nodeType": "ImportDirective",
              "scope": 24543,
              "sourceUnit": 24700,
              "src": "109:37:84",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/IVestingFactory.sol",
              "file": "./IVestingFactory.sol",
              "id": 24497,
              "nodeType": "ImportDirective",
              "scope": 24543,
              "sourceUnit": 18639,
              "src": "147:31:84",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/locked/LockedSOV.sol",
              "file": "../../locked/LockedSOV.sol",
              "id": 24498,
              "nodeType": "ImportDirective",
              "scope": 24543,
              "sourceUnit": 26419,
              "src": "179:36:84",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/IVestingRegistry.sol",
              "file": "./IVestingRegistry.sol",
              "id": 24499,
              "nodeType": "ImportDirective",
              "scope": 24543,
              "sourceUnit": 18656,
              "src": "216:32:84",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24500,
                    "name": "Initializable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41699,
                    "src": "579:13:84",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Initializable_$41699",
                      "typeString": "contract Initializable"
                    }
                  },
                  "id": 24501,
                  "nodeType": "InheritanceSpecifier",
                  "src": "579:13:84"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24502,
                    "name": "AdminRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 44979,
                    "src": "594:9:84",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AdminRole_$44979",
                      "typeString": "contract AdminRole"
                    }
                  },
                  "id": 24503,
                  "nodeType": "InheritanceSpecifier",
                  "src": "594:9:84"
                }
              ],
              "contractDependencies": [
                41125,
                41699,
                41798,
                44979
              ],
              "contractKind": "contract",
              "documentation": "@title Vesting Registry Storage Contract.\n * @notice This contract is just the storage required for vesting registry.\nIt is parent of VestingRegistryProxy and VestingRegistryLogic.\n * @dev Use Ownable as a parent to align storage structure for Logic and Proxy contracts.\n",
              "fullyImplemented": true,
              "id": 24542,
              "linearizedBaseContracts": [
                24542,
                44979,
                41798,
                41125,
                41699
              ],
              "name": "VestingRegistryStorage",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 24505,
                  "name": "vestingFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 24542,
                  "src": "648:37:84",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                    "typeString": "contract IVestingFactory"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24504,
                    "name": "IVestingFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18638,
                    "src": "648:15:84",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IVestingFactory_$18638",
                      "typeString": "contract IVestingFactory"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24507,
                  "name": "lockedSOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 24542,
                  "src": "725:26:84",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_LockedSOV_$26418",
                    "typeString": "contract LockedSOV"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24506,
                    "name": "LockedSOV",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 26418,
                    "src": "725:9:84",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LockedSOV_$26418",
                      "typeString": "contract LockedSOV"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24510,
                  "name": "vestingRegistries",
                  "nodeType": "VariableDeclaration",
                  "scope": 24542,
                  "src": "798:43:84",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IVestingRegistry_$18655_$dyn_storage",
                    "typeString": "contract IVestingRegistry[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 24508,
                      "name": "IVestingRegistry",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 18655,
                      "src": "798:16:84",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IVestingRegistry_$18655",
                        "typeString": "contract IVestingRegistry"
                      }
                    },
                    "id": 24509,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "798:18:84",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IVestingRegistry_$18655_$dyn_storage_ptr",
                      "typeString": "contract IVestingRegistry[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24512,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 24542,
                  "src": "880:18:84",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24511,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "880:7:84",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24514,
                  "name": "staking",
                  "nodeType": "VariableDeclaration",
                  "scope": 24542,
                  "src": "943:22:84",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24513,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "943:7:84",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24516,
                  "name": "feeSharingProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 24542,
                  "src": "999:30:84",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24515,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "999:7:84",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24518,
                  "name": "vestingOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 24542,
                  "src": "1098:27:84",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24517,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1098:7:84",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "canonicalName": "VestingRegistryStorage.VestingType",
                  "id": 24521,
                  "members": [
                    {
                      "id": 24519,
                      "name": "TeamVesting",
                      "nodeType": "EnumValue",
                      "src": "1150:11:84"
                    },
                    {
                      "id": 24520,
                      "name": "Vesting",
                      "nodeType": "EnumValue",
                      "src": "1183:7:84"
                    }
                  ],
                  "name": "VestingType",
                  "nodeType": "EnumDefinition",
                  "src": "1129:85:84"
                },
                {
                  "canonicalName": "VestingRegistryStorage.Vesting",
                  "id": 24528,
                  "members": [
                    {
                      "constant": false,
                      "id": 24523,
                      "name": "vestingType",
                      "nodeType": "VariableDeclaration",
                      "scope": 24528,
                      "src": "1264:19:84",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 24522,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1264:7:84",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 24525,
                      "name": "vestingCreationType",
                      "nodeType": "VariableDeclaration",
                      "scope": 24528,
                      "src": "1287:27:84",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 24524,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1287:7:84",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 24527,
                      "name": "vestingAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 24528,
                      "src": "1318:22:84",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 24526,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1318:7:84",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "Vesting",
                  "nodeType": "StructDefinition",
                  "scope": 24542,
                  "src": "1245:99:84",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24532,
                  "name": "vestings",
                  "nodeType": "VariableDeclaration",
                  "scope": 24542,
                  "src": "1447:43:84",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vesting_$24528_storage_$",
                    "typeString": "mapping(uint256 => struct VestingRegistryStorage.Vesting)"
                  },
                  "typeName": {
                    "id": 24531,
                    "keyType": {
                      "id": 24529,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1455:7:84",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1447:27:84",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vesting_$24528_storage_$",
                      "typeString": "mapping(uint256 => struct VestingRegistryStorage.Vesting)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 24530,
                      "name": "Vesting",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 24528,
                      "src": "1466:7:84",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vesting_$24528_storage_ptr",
                        "typeString": "struct VestingRegistryStorage.Vesting"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24537,
                  "name": "vestingsOf",
                  "nodeType": "VariableDeclaration",
                  "scope": 24542,
                  "src": "1622:47:84",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
                    "typeString": "mapping(address => uint256[])"
                  },
                  "typeName": {
                    "id": 24536,
                    "keyType": {
                      "id": 24533,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1630:7:84",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1622:29:84",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
                      "typeString": "mapping(address => uint256[])"
                    },
                    "valueType": {
                      "baseType": {
                        "id": 24534,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1641:7:84",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 24535,
                      "length": null,
                      "nodeType": "ArrayTypeName",
                      "src": "1641:9:84",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24541,
                  "name": "isVesting",
                  "nodeType": "VariableDeclaration",
                  "scope": 24542,
                  "src": "1791:41:84",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 24540,
                    "keyType": {
                      "id": 24538,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1799:7:84",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1791:24:84",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 24539,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1810:4:84",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                }
              ],
              "scope": 24543,
              "src": "544:1291:84"
            }
          ],
          "src": "0:1836:84"
        },
        "id": 84
      },
      "contracts/governance/Vesting/VestingStorage.sol": {
        "ast": {
          "absolutePath": "contracts/governance/Vesting/VestingStorage.sol",
          "exportedSymbols": {
            "VestingStorage": [
              24570
            ]
          },
          "id": 24571,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 24544,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:85"
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../../openzeppelin/Ownable.sol",
              "id": 24545,
              "nodeType": "ImportDirective",
              "scope": 24571,
              "sourceUnit": 41799,
              "src": "26:40:85",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 24546,
              "nodeType": "ImportDirective",
              "scope": 24571,
              "sourceUnit": 24700,
              "src": "67:37:85",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Staking/Staking.sol",
              "file": "../Staking/Staking.sol",
              "id": 24547,
              "nodeType": "ImportDirective",
              "scope": 24571,
              "sourceUnit": 15558,
              "src": "105:32:85",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/IFeeSharingProxy.sol",
              "file": "../IFeeSharingProxy.sol",
              "id": 24548,
              "nodeType": "ImportDirective",
              "scope": 24571,
              "sourceUnit": 13113,
              "src": "138:33:85",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24549,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "458:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 24550,
                  "nodeType": "InheritanceSpecifier",
                  "src": "458:7:85"
                }
              ],
              "contractDependencies": [
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Vesting Storage Contract.\n * @notice This contract is just the storage required for vesting.\nIt is parent of VestingLogic and TeamVesting.\n * @dev Use Ownable as a parent to align storage structure for Logic and Proxy contracts.\n",
              "fullyImplemented": true,
              "id": 24570,
              "linearizedBaseContracts": [
                24570,
                41798,
                41125
              ],
              "name": "VestingStorage",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 24552,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 24570,
                  "src": "506:17:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$24699",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24551,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "506:6:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24554,
                  "name": "staking",
                  "nodeType": "VariableDeclaration",
                  "scope": 24570,
                  "src": "570:22:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Staking_$15557",
                    "typeString": "contract Staking"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24553,
                    "name": "Staking",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15557,
                    "src": "570:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Staking_$15557",
                      "typeString": "contract Staking"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24556,
                  "name": "tokenOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 24570,
                  "src": "641:25:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24555,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "641:7:85",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24558,
                  "name": "feeSharingProxy",
                  "nodeType": "VariableDeclaration",
                  "scope": 24570,
                  "src": "702:39:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                    "typeString": "contract IFeeSharingProxy"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24557,
                    "name": "IFeeSharingProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13112,
                    "src": "702:16:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IFeeSharingProxy_$13112",
                      "typeString": "contract IFeeSharingProxy"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24560,
                  "name": "cliff",
                  "nodeType": "VariableDeclaration",
                  "scope": 24570,
                  "src": "820:20:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24559,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "820:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24562,
                  "name": "duration",
                  "nodeType": "VariableDeclaration",
                  "scope": 24570,
                  "src": "925:23:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24561,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "925:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24564,
                  "name": "startDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 24570,
                  "src": "996:24:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24563,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "996:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24566,
                  "name": "endDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 24570,
                  "src": "1066:22:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24565,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1066:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 24569,
                  "name": "FOUR_WEEKS",
                  "nodeType": "VariableDeclaration",
                  "scope": 24570,
                  "src": "1152:37:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24567,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1152:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "34",
                    "id": 24568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1182:7:85",
                    "subdenomination": "weeks",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2419200_by_1",
                      "typeString": "int_const 2419200"
                    },
                    "value": "4"
                  },
                  "visibility": "internal"
                }
              ],
              "scope": 24571,
              "src": "431:761:85"
            }
          ],
          "src": "0:1193:85"
        },
        "id": 85
      },
      "contracts/interfaces/IChai.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IChai.sol",
          "exportedSymbols": {
            "IChai": [
              24624
            ],
            "IPot": [
              24589
            ]
          },
          "id": 24625,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 24572,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:31:86"
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "./IERC20.sol",
              "id": 24573,
              "nodeType": "ImportDirective",
              "scope": 24625,
              "sourceUnit": 24700,
              "src": "151:22:86",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 24589,
              "linearizedBaseContracts": [
                24589
              ],
              "name": "IPot",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 24578,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "dsr",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24574,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "205:2:86"
                  },
                  "returnParameters": {
                    "id": 24577,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24576,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24578,
                        "src": "231:7:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24575,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "231:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "230:9:86"
                  },
                  "scope": 24589,
                  "src": "193:47:86",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24583,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "chi",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24579,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "255:2:86"
                  },
                  "returnParameters": {
                    "id": 24582,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24581,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24583,
                        "src": "281:7:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24580,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "281:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "280:9:86"
                  },
                  "scope": 24589,
                  "src": "243:47:86",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24588,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rho",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24584,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "305:2:86"
                  },
                  "returnParameters": {
                    "id": 24587,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24586,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24588,
                        "src": "331:7:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24585,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "331:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "330:9:86"
                  },
                  "scope": 24589,
                  "src": "293:47:86",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 24625,
              "src": "175:167:86"
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24590,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "362:6:86",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 24591,
                  "nodeType": "InheritanceSpecifier",
                  "src": "362:6:86"
                }
              ],
              "contractDependencies": [
                24699
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": false,
              "id": 24624,
              "linearizedBaseContracts": [
                24624,
                24699
              ],
              "name": "IChai",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 24602,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "move",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24598,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24593,
                        "name": "src",
                        "nodeType": "VariableDeclaration",
                        "scope": 24602,
                        "src": "389:11:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24592,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "389:7:86",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24595,
                        "name": "dst",
                        "nodeType": "VariableDeclaration",
                        "scope": 24602,
                        "src": "404:11:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24594,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "404:7:86",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24597,
                        "name": "wad",
                        "nodeType": "VariableDeclaration",
                        "scope": 24602,
                        "src": "419:11:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24596,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "419:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "385:48:86"
                  },
                  "returnParameters": {
                    "id": 24601,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24600,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24602,
                        "src": "452:4:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24599,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "452:4:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "451:6:86"
                  },
                  "scope": 24624,
                  "src": "372:86:86",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24609,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "join",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24604,
                        "name": "dst",
                        "nodeType": "VariableDeclaration",
                        "scope": 24609,
                        "src": "475:11:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24603,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "475:7:86",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24606,
                        "name": "wad",
                        "nodeType": "VariableDeclaration",
                        "scope": 24609,
                        "src": "488:11:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24605,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "488:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "474:26:86"
                  },
                  "returnParameters": {
                    "id": 24608,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "509:0:86"
                  },
                  "scope": 24624,
                  "src": "461:49:86",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24616,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "draw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24611,
                        "name": "src",
                        "nodeType": "VariableDeclaration",
                        "scope": 24616,
                        "src": "527:11:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24610,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "527:7:86",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24613,
                        "name": "wad",
                        "nodeType": "VariableDeclaration",
                        "scope": 24616,
                        "src": "540:11:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24612,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "540:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "526:26:86"
                  },
                  "returnParameters": {
                    "id": 24615,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "561:0:86"
                  },
                  "scope": 24624,
                  "src": "513:49:86",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24623,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "exit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24621,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24618,
                        "name": "src",
                        "nodeType": "VariableDeclaration",
                        "scope": 24623,
                        "src": "579:11:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24617,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "579:7:86",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24620,
                        "name": "wad",
                        "nodeType": "VariableDeclaration",
                        "scope": 24623,
                        "src": "592:11:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24619,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "592:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "578:26:86"
                  },
                  "returnParameters": {
                    "id": 24622,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "613:0:86"
                  },
                  "scope": 24624,
                  "src": "565:49:86",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 24625,
              "src": "344:272:86"
            }
          ],
          "src": "118:499:86"
        },
        "id": 86
      },
      "contracts/interfaces/IERC20.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              24699
            ]
          },
          "id": 24700,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 24626,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:31:87"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": false,
              "id": 24699,
              "linearizedBaseContracts": [
                24699
              ],
              "name": "IERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 24628,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 24699,
                  "src": "170:18:87",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24627,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "170:6:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24630,
                  "name": "decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 24699,
                  "src": "191:21:87",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 24629,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "191:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 24632,
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 24699,
                  "src": "215:20:87",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24631,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "215:6:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24637,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24633,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "259:2:87"
                  },
                  "returnParameters": {
                    "id": 24636,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24635,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24637,
                        "src": "283:7:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24634,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "283:7:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "282:9:87"
                  },
                  "scope": 24699,
                  "src": "239:53:87",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24644,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24639,
                        "name": "_who",
                        "nodeType": "VariableDeclaration",
                        "scope": 24644,
                        "src": "314:12:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24638,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "314:7:87",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "313:14:87"
                  },
                  "returnParameters": {
                    "id": 24643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24642,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24644,
                        "src": "349:7:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24641,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "349:7:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "348:9:87"
                  },
                  "scope": 24699,
                  "src": "295:63:87",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24653,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24649,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24646,
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 24653,
                        "src": "380:14:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24645,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "380:7:87",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24648,
                        "name": "_spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 24653,
                        "src": "396:16:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24647,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "396:7:87",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "379:34:87"
                  },
                  "returnParameters": {
                    "id": 24652,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24651,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24653,
                        "src": "435:7:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24650,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "435:7:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "434:9:87"
                  },
                  "scope": 24699,
                  "src": "361:83:87",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24662,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24658,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24655,
                        "name": "_spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 24662,
                        "src": "464:16:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24654,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "464:7:87",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24657,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 24662,
                        "src": "482:14:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24656,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "482:7:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "463:34:87"
                  },
                  "returnParameters": {
                    "id": 24661,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24660,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24662,
                        "src": "514:4:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24659,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "514:4:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "513:6:87"
                  },
                  "scope": 24699,
                  "src": "447:73:87",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24671,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24667,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24664,
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 24671,
                        "src": "541:11:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24663,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "541:7:87",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24666,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 24671,
                        "src": "554:14:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24665,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "554:7:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "540:29:87"
                  },
                  "returnParameters": {
                    "id": 24670,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24669,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24671,
                        "src": "586:4:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24668,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "586:4:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "585:6:87"
                  },
                  "scope": 24699,
                  "src": "523:69:87",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24682,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24678,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24673,
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 24682,
                        "src": "620:13:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24672,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "620:7:87",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24675,
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 24682,
                        "src": "637:11:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24674,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "637:7:87",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24677,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 24682,
                        "src": "652:14:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24676,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "652:7:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "616:53:87"
                  },
                  "returnParameters": {
                    "id": 24681,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24680,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24682,
                        "src": "686:4:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24679,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "686:4:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "685:6:87"
                  },
                  "scope": 24699,
                  "src": "595:97:87",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 24690,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 24689,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24684,
                        "indexed": true,
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 24690,
                        "src": "710:20:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24683,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "710:7:87",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24686,
                        "indexed": true,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 24690,
                        "src": "732:18:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24685,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "732:7:87",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24688,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 24690,
                        "src": "752:13:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24687,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "752:7:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "709:57:87"
                  },
                  "src": "695:72:87"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 24698,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 24697,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24692,
                        "indexed": true,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 24698,
                        "src": "784:21:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24691,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "784:7:87",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24694,
                        "indexed": true,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 24698,
                        "src": "807:23:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24693,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "807:7:87",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24696,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 24698,
                        "src": "832:13:87",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24695,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "832:7:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "783:63:87"
                  },
                  "src": "769:78:87"
                }
              ],
              "scope": 24700,
              "src": "151:698:87"
            }
          ],
          "src": "118:732:87"
        },
        "id": 87
      },
      "contracts/interfaces/ILoanPool.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/ILoanPool.sol",
          "exportedSymbols": {
            "ILoanPool": [
              24717
            ]
          },
          "id": 24718,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 24701,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:31:88"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 24717,
              "linearizedBaseContracts": [
                24717
              ],
              "name": "ILoanPool",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 24706,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenPrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24702,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "193:2:88"
                  },
                  "returnParameters": {
                    "id": 24705,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24704,
                        "name": "price",
                        "nodeType": "VariableDeclaration",
                        "scope": 24706,
                        "src": "219:13:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24703,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "219:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "218:15:88"
                  },
                  "scope": 24717,
                  "src": "174:60:88",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24711,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "borrowInterestRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24707,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "264:2:88"
                  },
                  "returnParameters": {
                    "id": 24710,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24709,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24711,
                        "src": "290:7:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24708,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "290:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "289:9:88"
                  },
                  "scope": 24717,
                  "src": "237:62:88",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24716,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalAssetSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24712,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "327:2:88"
                  },
                  "returnParameters": {
                    "id": 24715,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24714,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24716,
                        "src": "353:7:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24713,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "353:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "352:9:88"
                  },
                  "scope": 24717,
                  "src": "302:60:88",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 24718,
              "src": "151:213:88"
            }
          ],
          "src": "118:247:88"
        },
        "id": 88
      },
      "contracts/interfaces/ISovryn.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/ISovryn.sol",
          "exportedSymbols": {
            "ISovryn": [
              25539
            ]
          },
          "id": 25540,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 24719,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:31:89"
            },
            {
              "id": 24720,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "150:33:89"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 24721,
              "nodeType": "ImportDirective",
              "scope": 25540,
              "sourceUnit": 4842,
              "src": "316:27:89",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/ProtocolSettingsEvents.sol",
              "file": "../events/ProtocolSettingsEvents.sol",
              "id": 24722,
              "nodeType": "ImportDirective",
              "scope": 25540,
              "sourceUnit": 6310,
              "src": "344:46:89",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/LoanSettingsEvents.sol",
              "file": "../events/LoanSettingsEvents.sol",
              "id": 24723,
              "nodeType": "ImportDirective",
              "scope": 25540,
              "sourceUnit": 6045,
              "src": "391:42:89",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/LoanOpeningsEvents.sol",
              "file": "../events/LoanOpeningsEvents.sol",
              "id": 24724,
              "nodeType": "ImportDirective",
              "scope": 25540,
              "sourceUnit": 5995,
              "src": "434:42:89",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/LoanMaintenanceEvents.sol",
              "file": "../events/LoanMaintenanceEvents.sol",
              "id": 24725,
              "nodeType": "ImportDirective",
              "scope": 25540,
              "sourceUnit": 5929,
              "src": "477:45:89",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/LoanClosingsEvents.sol",
              "file": "../events/LoanClosingsEvents.sol",
              "id": 24726,
              "nodeType": "ImportDirective",
              "scope": 25540,
              "sourceUnit": 5915,
              "src": "523:42:89",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/FeesEvents.sol",
              "file": "../events/FeesEvents.sol",
              "id": 24727,
              "nodeType": "ImportDirective",
              "scope": 25540,
              "sourceUnit": 5833,
              "src": "566:34:89",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/SwapsEvents.sol",
              "file": "../events/SwapsEvents.sol",
              "id": 24728,
              "nodeType": "ImportDirective",
              "scope": 25540,
              "sourceUnit": 6342,
              "src": "601:35:89",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/AffiliatesEvents.sol",
              "file": "../events/AffiliatesEvents.sol",
              "id": 24729,
              "nodeType": "ImportDirective",
              "scope": 25540,
              "sourceUnit": 5774,
              "src": "637:40:89",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24730,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "700:5:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 24731,
                  "nodeType": "InheritanceSpecifier",
                  "src": "700:5:89"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24732,
                    "name": "ProtocolSettingsEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6309,
                    "src": "708:22:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ProtocolSettingsEvents_$6309",
                      "typeString": "contract ProtocolSettingsEvents"
                    }
                  },
                  "id": 24733,
                  "nodeType": "InheritanceSpecifier",
                  "src": "708:22:89"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24734,
                    "name": "LoanSettingsEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6044,
                    "src": "733:18:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanSettingsEvents_$6044",
                      "typeString": "contract LoanSettingsEvents"
                    }
                  },
                  "id": 24735,
                  "nodeType": "InheritanceSpecifier",
                  "src": "733:18:89"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24736,
                    "name": "LoanOpeningsEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5994,
                    "src": "754:18:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanOpeningsEvents_$5994",
                      "typeString": "contract LoanOpeningsEvents"
                    }
                  },
                  "id": 24737,
                  "nodeType": "InheritanceSpecifier",
                  "src": "754:18:89"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24738,
                    "name": "LoanMaintenanceEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5928,
                    "src": "775:21:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanMaintenanceEvents_$5928",
                      "typeString": "contract LoanMaintenanceEvents"
                    }
                  },
                  "id": 24739,
                  "nodeType": "InheritanceSpecifier",
                  "src": "775:21:89"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24740,
                    "name": "LoanClosingsEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5914,
                    "src": "799:18:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanClosingsEvents_$5914",
                      "typeString": "contract LoanClosingsEvents"
                    }
                  },
                  "id": 24741,
                  "nodeType": "InheritanceSpecifier",
                  "src": "799:18:89"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24742,
                    "name": "SwapsEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6341,
                    "src": "820:11:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SwapsEvents_$6341",
                      "typeString": "contract SwapsEvents"
                    }
                  },
                  "id": 24743,
                  "nodeType": "InheritanceSpecifier",
                  "src": "820:11:89"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24744,
                    "name": "AffiliatesEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5773,
                    "src": "834:16:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AffiliatesEvents_$5773",
                      "typeString": "contract AffiliatesEvents"
                    }
                  },
                  "id": 24745,
                  "nodeType": "InheritanceSpecifier",
                  "src": "834:16:89"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 24746,
                    "name": "FeesEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5832,
                    "src": "853:10:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeesEvents_$5832",
                      "typeString": "contract FeesEvents"
                    }
                  },
                  "id": 24747,
                  "nodeType": "InheritanceSpecifier",
                  "src": "853:10:89"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                5773,
                5832,
                5914,
                5928,
                5994,
                6044,
                6055,
                6309,
                6341,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": false,
              "id": 25539,
              "linearizedBaseContracts": [
                25539,
                5832,
                5773,
                6341,
                5914,
                5928,
                5994,
                6044,
                6309,
                6055,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "ISovryn",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": "/// Protocol //////",
                  "id": 24752,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "replaceContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24749,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 24752,
                        "src": "917:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24748,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "917:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "916:16:89"
                  },
                  "returnParameters": {
                    "id": 24751,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "941:0:89"
                  },
                  "scope": 25539,
                  "src": "892:50:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24761,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setTargets",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24759,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24755,
                        "name": "sigsArr",
                        "nodeType": "VariableDeclaration",
                        "scope": 24761,
                        "src": "965:25:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_$dyn_calldata_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 24753,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "965:6:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 24754,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "965:8:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24758,
                        "name": "targetsArr",
                        "nodeType": "VariableDeclaration",
                        "scope": 24761,
                        "src": "992:29:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 24756,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "992:7:89",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 24757,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "992:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "964:58:89"
                  },
                  "returnParameters": {
                    "id": 24760,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1031:0:89"
                  },
                  "scope": 25539,
                  "src": "945:87:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24768,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTarget",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24764,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24763,
                        "name": "sig",
                        "nodeType": "VariableDeclaration",
                        "scope": 24768,
                        "src": "1054:19:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 24762,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1054:6:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1053:21:89"
                  },
                  "returnParameters": {
                    "id": 24767,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24766,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24768,
                        "src": "1098:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24765,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1098:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1097:9:89"
                  },
                  "scope": 25539,
                  "src": "1035:72:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "/// Protocol Settings //////",
                  "id": 24773,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSovrynProtocolAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24771,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24770,
                        "name": "newProtocolAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 24773,
                        "src": "1178:26:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24769,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1178:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1177:28:89"
                  },
                  "returnParameters": {
                    "id": 24772,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1214:0:89"
                  },
                  "scope": 25539,
                  "src": "1144:71:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24778,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSOVTokenAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24775,
                        "name": "newSovTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 24778,
                        "src": "1246:26:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24774,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1246:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1245:28:89"
                  },
                  "returnParameters": {
                    "id": 24777,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1282:0:89"
                  },
                  "scope": 25539,
                  "src": "1218:65:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24783,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLockedSOVAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24781,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24780,
                        "name": "newSOVLockedAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 24783,
                        "src": "1315:27:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24779,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1315:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1314:29:89"
                  },
                  "returnParameters": {
                    "id": 24782,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1352:0:89"
                  },
                  "scope": 25539,
                  "src": "1286:67:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24788,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setMinReferralsToPayoutAffiliates",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24786,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24785,
                        "name": "newMinReferrals",
                        "nodeType": "VariableDeclaration",
                        "scope": 24788,
                        "src": "1399:23:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24784,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1399:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1398:25:89"
                  },
                  "returnParameters": {
                    "id": 24787,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1432:0:89"
                  },
                  "scope": 25539,
                  "src": "1356:77:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24793,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setPriceFeedContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24791,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24790,
                        "name": "newContract",
                        "nodeType": "VariableDeclaration",
                        "scope": 24793,
                        "src": "1466:19:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24789,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1466:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1465:21:89"
                  },
                  "returnParameters": {
                    "id": 24792,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1495:0:89"
                  },
                  "scope": 25539,
                  "src": "1436:60:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24798,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSwapsImplContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24796,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24795,
                        "name": "newContract",
                        "nodeType": "VariableDeclaration",
                        "scope": 24798,
                        "src": "1529:19:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24794,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1529:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1528:21:89"
                  },
                  "returnParameters": {
                    "id": 24797,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1558:0:89"
                  },
                  "scope": 25539,
                  "src": "1499:60:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24807,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLoanPool",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24805,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24801,
                        "name": "pools",
                        "nodeType": "VariableDeclaration",
                        "scope": 24807,
                        "src": "1583:24:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 24799,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1583:7:89",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 24800,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1583:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24804,
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "scope": 24807,
                        "src": "1609:25:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 24802,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1609:7:89",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 24803,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1609:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1582:53:89"
                  },
                  "returnParameters": {
                    "id": 24806,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1644:0:89"
                  },
                  "scope": 25539,
                  "src": "1562:83:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24816,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSupportedTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24814,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24810,
                        "name": "addrs",
                        "nodeType": "VariableDeclaration",
                        "scope": 24816,
                        "src": "1676:24:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 24808,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1676:7:89",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 24809,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1676:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24813,
                        "name": "toggles",
                        "nodeType": "VariableDeclaration",
                        "scope": 24816,
                        "src": "1702:23:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 24811,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1702:4:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 24812,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1702:6:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1675:51:89"
                  },
                  "returnParameters": {
                    "id": 24815,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1735:0:89"
                  },
                  "scope": 25539,
                  "src": "1648:88:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24821,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLendingFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24819,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24818,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 24821,
                        "src": "1769:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24817,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1769:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1768:18:89"
                  },
                  "returnParameters": {
                    "id": 24820,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1795:0:89"
                  },
                  "scope": 25539,
                  "src": "1739:57:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24826,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setTradingFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24824,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24823,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 24826,
                        "src": "1829:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24822,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1829:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1828:18:89"
                  },
                  "returnParameters": {
                    "id": 24825,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1855:0:89"
                  },
                  "scope": 25539,
                  "src": "1799:57:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24831,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setBorrowingFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24829,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24828,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 24831,
                        "src": "1891:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24827,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1891:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1890:18:89"
                  },
                  "returnParameters": {
                    "id": 24830,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1917:0:89"
                  },
                  "scope": 25539,
                  "src": "1859:59:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24836,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSwapExternalFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24834,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24833,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 24836,
                        "src": "1956:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24832,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1956:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1955:18:89"
                  },
                  "returnParameters": {
                    "id": 24835,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1982:0:89"
                  },
                  "scope": 25539,
                  "src": "1921:62:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24841,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAffiliateFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24839,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24838,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 24841,
                        "src": "2018:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24837,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2018:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2017:18:89"
                  },
                  "returnParameters": {
                    "id": 24840,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2044:0:89"
                  },
                  "scope": 25539,
                  "src": "1986:59:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24846,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAffiliateTradingTokenFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24844,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24843,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 24846,
                        "src": "2092:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24842,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2092:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2091:18:89"
                  },
                  "returnParameters": {
                    "id": 24845,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2118:0:89"
                  },
                  "scope": 25539,
                  "src": "2048:71:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24851,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLiquidationIncentivePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24849,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24848,
                        "name": "newAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 24851,
                        "src": "2162:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24847,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2162:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2161:19:89"
                  },
                  "returnParameters": {
                    "id": 24850,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2189:0:89"
                  },
                  "scope": 25539,
                  "src": "2122:68:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24856,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setMaxDisagreement",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24854,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24853,
                        "name": "newAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 24856,
                        "src": "2221:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24852,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2221:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2220:19:89"
                  },
                  "returnParameters": {
                    "id": 24855,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2248:0:89"
                  },
                  "scope": 25539,
                  "src": "2193:56:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24861,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSourceBuffer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24859,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24858,
                        "name": "newAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 24861,
                        "src": "2277:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24857,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2277:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2276:19:89"
                  },
                  "returnParameters": {
                    "id": 24860,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2304:0:89"
                  },
                  "scope": 25539,
                  "src": "2252:53:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24866,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setMaxSwapSize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24864,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24863,
                        "name": "newAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 24866,
                        "src": "2332:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24862,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2332:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2331:19:89"
                  },
                  "returnParameters": {
                    "id": 24865,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2359:0:89"
                  },
                  "scope": 25539,
                  "src": "2308:52:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24871,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setFeesController",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24869,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24868,
                        "name": "newController",
                        "nodeType": "VariableDeclaration",
                        "scope": 24871,
                        "src": "2390:21:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24867,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2390:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2389:23:89"
                  },
                  "returnParameters": {
                    "id": 24870,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2421:0:89"
                  },
                  "scope": 25539,
                  "src": "2363:59:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24882,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawLendingFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24878,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24873,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 24882,
                        "src": "2457:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24872,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2457:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24875,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 24882,
                        "src": "2474:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24874,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2474:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24877,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 24882,
                        "src": "2494:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24876,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2494:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2453:58:89"
                  },
                  "returnParameters": {
                    "id": 24881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24880,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24882,
                        "src": "2530:4:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24879,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2530:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2529:6:89"
                  },
                  "scope": 25539,
                  "src": "2425:111:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24893,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawTradingFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24889,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24884,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 24893,
                        "src": "2571:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24883,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2571:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24886,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 24893,
                        "src": "2588:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24885,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2588:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24888,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 24893,
                        "src": "2608:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24887,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2608:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2567:58:89"
                  },
                  "returnParameters": {
                    "id": 24892,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24891,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24893,
                        "src": "2644:4:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24890,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2644:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2643:6:89"
                  },
                  "scope": 25539,
                  "src": "2539:111:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24904,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawBorrowingFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24900,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24895,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 24904,
                        "src": "2687:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24894,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2687:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24897,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 24904,
                        "src": "2704:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24896,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2704:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24899,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 24904,
                        "src": "2724:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24898,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2724:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2683:58:89"
                  },
                  "returnParameters": {
                    "id": 24903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24902,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24904,
                        "src": "2760:4:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24901,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2760:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2759:6:89"
                  },
                  "scope": 25539,
                  "src": "2653:113:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24915,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawProtocolToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24909,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24906,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 24915,
                        "src": "2800:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24905,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2800:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24908,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 24915,
                        "src": "2818:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24907,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2818:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2799:34:89"
                  },
                  "returnParameters": {
                    "id": 24914,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24911,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24915,
                        "src": "2852:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24910,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2852:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24913,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24915,
                        "src": "2861:4:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24912,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2861:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2851:15:89"
                  },
                  "scope": 25539,
                  "src": "2769:98:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24920,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "depositProtocolToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24917,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 24920,
                        "src": "2900:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24916,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2900:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2899:16:89"
                  },
                  "returnParameters": {
                    "id": 24919,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2924:0:89"
                  },
                  "scope": 25539,
                  "src": "2870:55:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24927,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLoanPoolsList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24925,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24922,
                        "name": "start",
                        "nodeType": "VariableDeclaration",
                        "scope": 24927,
                        "src": "2954:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24921,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2954:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24924,
                        "name": "count",
                        "nodeType": "VariableDeclaration",
                        "scope": 24927,
                        "src": "2969:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24923,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2969:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2953:30:89"
                  },
                  "returnParameters": {
                    "id": 24926,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2992:0:89"
                  },
                  "scope": 25539,
                  "src": "2928:65:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24934,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isLoanPool",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24930,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24929,
                        "name": "loanPool",
                        "nodeType": "VariableDeclaration",
                        "scope": 24934,
                        "src": "3016:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24928,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3016:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3015:18:89"
                  },
                  "returnParameters": {
                    "id": 24933,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24932,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24934,
                        "src": "3057:4:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24931,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3057:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3056:6:89"
                  },
                  "scope": 25539,
                  "src": "2996:67:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24939,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setWrbtcToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24937,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24936,
                        "name": "wrbtcTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 24939,
                        "src": "3089:25:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24935,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3089:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3088:27:89"
                  },
                  "returnParameters": {
                    "id": 24938,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3124:0:89"
                  },
                  "scope": 25539,
                  "src": "3066:59:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24944,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSovrynSwapContractRegistryAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24942,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24941,
                        "name": "registryAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 24944,
                        "src": "3174:23:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24940,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3174:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3173:25:89"
                  },
                  "returnParameters": {
                    "id": 24943,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3207:0:89"
                  },
                  "scope": 25539,
                  "src": "3128:80:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24949,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setProtocolTokenAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24947,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24946,
                        "name": "_protocolTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 24949,
                        "src": "3244:29:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24945,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3244:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3243:31:89"
                  },
                  "returnParameters": {
                    "id": 24948,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3283:0:89"
                  },
                  "scope": 25539,
                  "src": "3211:73:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24954,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setRolloverBaseReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24952,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24951,
                        "name": "transactionCost",
                        "nodeType": "VariableDeclaration",
                        "scope": 24954,
                        "src": "3318:23:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24950,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3318:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3317:25:89"
                  },
                  "returnParameters": {
                    "id": 24953,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3351:0:89"
                  },
                  "scope": 25539,
                  "src": "3287:65:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24959,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setRebatePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24957,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24956,
                        "name": "rebatePercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 24959,
                        "src": "3381:21:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24955,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3381:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3380:23:89"
                  },
                  "returnParameters": {
                    "id": 24958,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3412:0:89"
                  },
                  "scope": 25539,
                  "src": "3355:58:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24968,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSpecialRebates",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24966,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24961,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 24968,
                        "src": "3446:19:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24960,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3446:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24963,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 24968,
                        "src": "3469:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24962,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3469:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24965,
                        "name": "specialRebatesPercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 24968,
                        "src": "3490:29:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24964,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3490:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3442:80:89"
                  },
                  "returnParameters": {
                    "id": 24967,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3531:0:89"
                  },
                  "scope": 25539,
                  "src": "3416:116:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24977,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSpecialRebates",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24973,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24970,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 24977,
                        "src": "3562:19:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24969,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3562:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24972,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 24977,
                        "src": "3583:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24971,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3583:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3561:40:89"
                  },
                  "returnParameters": {
                    "id": 24976,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24975,
                        "name": "specialRebatesPercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 24977,
                        "src": "3625:29:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24974,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3625:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3624:31:89"
                  },
                  "scope": 25539,
                  "src": "3535:121:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24982,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "togglePaused",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24980,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24979,
                        "name": "paused",
                        "nodeType": "VariableDeclaration",
                        "scope": 24982,
                        "src": "3681:11:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24978,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3681:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3680:13:89"
                  },
                  "returnParameters": {
                    "id": 24981,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3702:0:89"
                  },
                  "scope": 25539,
                  "src": "3659:44:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 24987,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isProtocolPaused",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24983,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3731:2:89"
                  },
                  "returnParameters": {
                    "id": 24986,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24985,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 24987,
                        "src": "3757:4:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24984,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3757:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3756:6:89"
                  },
                  "scope": 25539,
                  "src": "3706:57:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "/// Loan Settings //////",
                  "id": 24996,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setupLoanParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24991,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24990,
                        "name": "loanParamsList",
                        "nodeType": "VariableDeclaration",
                        "scope": 24996,
                        "src": "3821:36:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_calldata_$dyn_calldata_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 24988,
                            "name": "LoanParams",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4884,
                            "src": "3821:10:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            }
                          },
                          "id": 24989,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3821:12:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_storage_$dyn_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3820:38:89"
                  },
                  "returnParameters": {
                    "id": 24995,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24994,
                        "name": "loanParamsIdList",
                        "nodeType": "VariableDeclaration",
                        "scope": 24996,
                        "src": "3877:33:89",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 24992,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "3877:7:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 24993,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3877:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3876:35:89"
                  },
                  "scope": 25539,
                  "src": "3796:116:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25002,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "disableLoanParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25000,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24999,
                        "name": "loanParamsIdList",
                        "nodeType": "VariableDeclaration",
                        "scope": 25002,
                        "src": "4025:35:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 24997,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "4025:7:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 24998,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4025:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4024:37:89"
                  },
                  "returnParameters": {
                    "id": 25001,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4070:0:89"
                  },
                  "scope": 25539,
                  "src": "3998:73:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25011,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLoanParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25006,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25005,
                        "name": "loanParamsIdList",
                        "nodeType": "VariableDeclaration",
                        "scope": 25011,
                        "src": "4097:35:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 25003,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "4097:7:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 25004,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4097:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4096:37:89"
                  },
                  "returnParameters": {
                    "id": 25010,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25009,
                        "name": "loanParamsList",
                        "nodeType": "VariableDeclaration",
                        "scope": 25011,
                        "src": "4157:34:89",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 25007,
                            "name": "LoanParams",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4884,
                            "src": "4157:10:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            }
                          },
                          "id": 25008,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4157:12:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_storage_$dyn_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4156:36:89"
                  },
                  "scope": 25539,
                  "src": "4074:119:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25023,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLoanParamsList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25018,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25013,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 25023,
                        "src": "4226:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25012,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4226:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25015,
                        "name": "start",
                        "nodeType": "VariableDeclaration",
                        "scope": 25023,
                        "src": "4243:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25014,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4243:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25017,
                        "name": "count",
                        "nodeType": "VariableDeclaration",
                        "scope": 25023,
                        "src": "4260:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25016,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4260:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4222:54:89"
                  },
                  "returnParameters": {
                    "id": 25022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25021,
                        "name": "loanParamsList",
                        "nodeType": "VariableDeclaration",
                        "scope": 25023,
                        "src": "4300:31:89",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 25019,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "4300:7:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 25020,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4300:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4299:33:89"
                  },
                  "scope": 25539,
                  "src": "4196:137:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25032,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTotalPrincipal",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25028,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25025,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 25032,
                        "src": "4363:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25024,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4363:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25027,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25032,
                        "src": "4379:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25026,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4379:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4362:35:89"
                  },
                  "returnParameters": {
                    "id": 25031,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25030,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25032,
                        "src": "4421:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25029,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4421:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4420:9:89"
                  },
                  "scope": 25539,
                  "src": "4336:94:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25039,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "minInitialMargin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25035,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25034,
                        "name": "loanParamsId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25039,
                        "src": "4459:20:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25033,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4459:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4458:22:89"
                  },
                  "returnParameters": {
                    "id": 25038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25037,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25039,
                        "src": "4504:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25036,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4504:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4503:9:89"
                  },
                  "scope": 25539,
                  "src": "4433:80:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "/// Loan Openings //////",
                  "id": 25062,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "borrowOrTradeFromPool",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25058,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25041,
                        "name": "loanParamsId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25062,
                        "src": "4580:20:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25040,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4580:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25043,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25062,
                        "src": "4604:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25042,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4604:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25045,
                        "name": "isTorqueLoan",
                        "nodeType": "VariableDeclaration",
                        "scope": 25062,
                        "src": "4648:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25044,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4648:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25047,
                        "name": "initialMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 25062,
                        "src": "4669:21:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25046,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4669:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25051,
                        "name": "sentAddresses",
                        "nodeType": "VariableDeclaration",
                        "scope": 25062,
                        "src": "4694:33:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$4_calldata_ptr",
                          "typeString": "address[4]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 25048,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4694:7:89",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 25050,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 25049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4702:1:89",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "4694:10:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$4_storage_ptr",
                            "typeString": "address[4]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25055,
                        "name": "sentValues",
                        "nodeType": "VariableDeclaration",
                        "scope": 25062,
                        "src": "4958:30:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$5_calldata_ptr",
                          "typeString": "uint256[5]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 25052,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4958:7:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 25054,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 25053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4966:1:89",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "4958:10:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                            "typeString": "uint256[5]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25057,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 25062,
                        "src": "5370:28:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 25056,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5370:5:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4576:825:89"
                  },
                  "returnParameters": {
                    "id": 25061,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25060,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25062,
                        "src": "5428:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25059,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5428:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5427:9:89"
                  },
                  "scope": 25539,
                  "src": "4546:891:89",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25071,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setDelegatedManager",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25069,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25064,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25071,
                        "src": "5472:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25063,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5472:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25066,
                        "name": "delegated",
                        "nodeType": "VariableDeclaration",
                        "scope": 25071,
                        "src": "5490:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25065,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5490:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25068,
                        "name": "toggle",
                        "nodeType": "VariableDeclaration",
                        "scope": 25071,
                        "src": "5511:11:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25067,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5511:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5468:57:89"
                  },
                  "returnParameters": {
                    "id": 25070,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5534:0:89"
                  },
                  "scope": 25539,
                  "src": "5440:95:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25088,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getEstimatedMarginExposure",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25084,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25073,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25088,
                        "src": "5577:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25072,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5577:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25075,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25088,
                        "src": "5598:23:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25074,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5598:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25077,
                        "name": "loanTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 25088,
                        "src": "5625:21:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25076,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5625:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25079,
                        "name": "collateralTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 25088,
                        "src": "5650:27:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25078,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5650:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25081,
                        "name": "interestRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 25088,
                        "src": "5681:20:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25080,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5681:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25083,
                        "name": "newPrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 25088,
                        "src": "5705:20:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25082,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5705:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5573:155:89"
                  },
                  "returnParameters": {
                    "id": 25087,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25086,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25088,
                        "src": "5752:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25085,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5752:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5751:9:89"
                  },
                  "scope": 25539,
                  "src": "5538:223:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25103,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRequiredCollateral",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25099,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25090,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25103,
                        "src": "5798:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25089,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5798:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25092,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25103,
                        "src": "5819:23:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25091,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5819:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25094,
                        "name": "newPrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 25103,
                        "src": "5846:20:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25093,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5846:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25096,
                        "name": "marginAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25103,
                        "src": "5870:20:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25095,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5870:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25098,
                        "name": "isTorqueLoan",
                        "nodeType": "VariableDeclaration",
                        "scope": 25103,
                        "src": "5894:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25097,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5894:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5794:120:89"
                  },
                  "returnParameters": {
                    "id": 25102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25101,
                        "name": "collateralAmountRequired",
                        "nodeType": "VariableDeclaration",
                        "scope": 25103,
                        "src": "5938:32:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5938:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5937:34:89"
                  },
                  "scope": 25539,
                  "src": "5764:208:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25118,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBorrowAmount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25114,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25105,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25118,
                        "src": "6003:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25104,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6003:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25107,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25118,
                        "src": "6024:23:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25106,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6024:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25109,
                        "name": "collateralTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25118,
                        "src": "6051:29:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25108,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6051:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25111,
                        "name": "marginAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25118,
                        "src": "6084:20:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25110,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6084:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25113,
                        "name": "isTorqueLoan",
                        "nodeType": "VariableDeclaration",
                        "scope": 25118,
                        "src": "6108:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25112,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6108:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5999:129:89"
                  },
                  "returnParameters": {
                    "id": 25117,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25116,
                        "name": "borrowAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25118,
                        "src": "6152:20:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25115,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6152:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6151:22:89"
                  },
                  "scope": 25539,
                  "src": "5975:199:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "/// Loan Closings //////",
                  "id": 25133,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "liquidate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25120,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25133,
                        "src": "6229:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25119,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6229:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25122,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 25133,
                        "src": "6247:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25121,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6247:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25124,
                        "name": "closeAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25133,
                        "src": "6267:19:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25123,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6267:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6225:92:89"
                  },
                  "returnParameters": {
                    "id": 25132,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25127,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25133,
                        "src": "6354:23:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25126,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6354:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25129,
                        "name": "seizedAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25133,
                        "src": "6382:20:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25128,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6382:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25131,
                        "name": "seizedToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25133,
                        "src": "6407:19:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25130,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6407:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6349:81:89"
                  },
                  "scope": 25539,
                  "src": "6207:224:89",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25140,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rollover",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25138,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25135,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25140,
                        "src": "6452:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25134,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6452:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25137,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 25140,
                        "src": "6468:28:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 25136,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6468:5:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6451:46:89"
                  },
                  "returnParameters": {
                    "id": 25139,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6506:0:89"
                  },
                  "scope": 25539,
                  "src": "6434:73:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25155,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "closeWithDeposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25147,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25142,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25155,
                        "src": "6539:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25141,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6539:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25144,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 25155,
                        "src": "6557:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25143,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6557:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25146,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25155,
                        "src": "6577:21:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25145,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6577:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6535:94:89"
                  },
                  "returnParameters": {
                    "id": 25154,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25149,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25155,
                        "src": "6666:23:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25148,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6666:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25151,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25155,
                        "src": "6694:22:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25150,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6694:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25153,
                        "name": "withdrawToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25155,
                        "src": "6721:21:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25152,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6721:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6661:85:89"
                  },
                  "scope": 25539,
                  "src": "6510:237:89",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25174,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "closeWithSwap",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25166,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25157,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25174,
                        "src": "6776:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25156,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6776:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25159,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 25174,
                        "src": "6794:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25158,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6794:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25161,
                        "name": "swapAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25174,
                        "src": "6814:18:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25160,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6814:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25163,
                        "name": "returnTokenIsCollateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 25174,
                        "src": "6870:28:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25162,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6870:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25165,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 25174,
                        "src": "6965:28:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 25164,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6965:5:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6772:224:89"
                  },
                  "returnParameters": {
                    "id": 25173,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25168,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25174,
                        "src": "7023:23:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25167,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7023:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25170,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25174,
                        "src": "7051:22:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25169,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7051:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25172,
                        "name": "withdrawToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25174,
                        "src": "7078:21:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25171,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7078:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7018:85:89"
                  },
                  "scope": 25539,
                  "src": "6750:354:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "/// Loan Maintenance //////",
                  "id": 25181,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "depositCollateral",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25179,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25176,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25181,
                        "src": "7170:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25175,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7170:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25178,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25181,
                        "src": "7188:21:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25177,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7188:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7166:87:89"
                  },
                  "returnParameters": {
                    "id": 25180,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7270:0:89"
                  },
                  "scope": 25539,
                  "src": "7140:131:89",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25192,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawCollateral",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25183,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25192,
                        "src": "7305:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25182,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7305:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25185,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 25192,
                        "src": "7323:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25184,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7323:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25187,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25192,
                        "src": "7343:22:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25186,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7343:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7301:67:89"
                  },
                  "returnParameters": {
                    "id": 25191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25190,
                        "name": "actualWithdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25192,
                        "src": "7387:28:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25189,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7387:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7386:30:89"
                  },
                  "scope": 25539,
                  "src": "7274:143:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25207,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "extendLoanByInterest",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25203,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25194,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25207,
                        "src": "7453:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25193,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7453:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25196,
                        "name": "payer",
                        "nodeType": "VariableDeclaration",
                        "scope": 25207,
                        "src": "7471:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25195,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7471:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25198,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25207,
                        "src": "7488:21:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25197,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7488:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25200,
                        "name": "useCollateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 25207,
                        "src": "7513:18:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25199,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7513:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25202,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 25207,
                        "src": "7535:28:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 25201,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7535:5:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7449:117:89"
                  },
                  "returnParameters": {
                    "id": 25206,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25205,
                        "name": "secondsExtended",
                        "nodeType": "VariableDeclaration",
                        "scope": 25207,
                        "src": "7593:23:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25204,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7593:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7592:25:89"
                  },
                  "scope": 25539,
                  "src": "7420:198:89",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25218,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "reduceLoanByInterest",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25209,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25218,
                        "src": "7654:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25208,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7654:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25211,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 25218,
                        "src": "7672:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25210,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7672:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25213,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25218,
                        "src": "7692:22:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7692:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7650:67:89"
                  },
                  "returnParameters": {
                    "id": 25217,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25216,
                        "name": "secondsReduced",
                        "nodeType": "VariableDeclaration",
                        "scope": 25218,
                        "src": "7736:22:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25215,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7736:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7735:24:89"
                  },
                  "scope": 25539,
                  "src": "7621:139:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25223,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAccruedInterest",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25220,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25223,
                        "src": "7796:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25219,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7796:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7795:19:89"
                  },
                  "returnParameters": {
                    "id": 25222,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7823:0:89"
                  },
                  "scope": 25539,
                  "src": "7763:61:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25242,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLenderInterestData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25228,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25225,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 25242,
                        "src": "7858:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25224,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7858:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25227,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25242,
                        "src": "7874:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25226,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7874:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7857:35:89"
                  },
                  "returnParameters": {
                    "id": 25241,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25230,
                        "name": "interestPaid",
                        "nodeType": "VariableDeclaration",
                        "scope": 25242,
                        "src": "7926:20:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25229,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7926:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25232,
                        "name": "interestPaidDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 25242,
                        "src": "7951:24:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25231,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7951:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25234,
                        "name": "interestOwedPerDay",
                        "nodeType": "VariableDeclaration",
                        "scope": 25242,
                        "src": "7980:26:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25233,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7980:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25236,
                        "name": "interestUnPaid",
                        "nodeType": "VariableDeclaration",
                        "scope": 25242,
                        "src": "8011:22:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25235,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8011:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25238,
                        "name": "interestFeePercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 25242,
                        "src": "8038:26:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25237,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8038:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25240,
                        "name": "principalTotal",
                        "nodeType": "VariableDeclaration",
                        "scope": 25242,
                        "src": "8069:22:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25239,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8069:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7921:174:89"
                  },
                  "scope": 25539,
                  "src": "7827:269:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25255,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLoanInterestData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25245,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25244,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25255,
                        "src": "8128:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25243,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8128:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8127:16:89"
                  },
                  "returnParameters": {
                    "id": 25254,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25247,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25255,
                        "src": "8177:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25246,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8177:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25249,
                        "name": "interestOwedPerDay",
                        "nodeType": "VariableDeclaration",
                        "scope": 25255,
                        "src": "8199:26:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25248,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8199:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25251,
                        "name": "interestDepositTotal",
                        "nodeType": "VariableDeclaration",
                        "scope": 25255,
                        "src": "8230:28:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25250,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8230:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25253,
                        "name": "interestDepositRemaining",
                        "nodeType": "VariableDeclaration",
                        "scope": 25255,
                        "src": "8263:32:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25252,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8263:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8172:127:89"
                  },
                  "scope": 25539,
                  "src": "8099:201:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "canonicalName": "ISovryn.LoanReturnData",
                  "id": 25286,
                  "members": [
                    {
                      "constant": false,
                      "id": 25257,
                      "name": "loanId",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8329:14:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 25256,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8329:7:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25259,
                      "name": "loanToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8347:17:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 25258,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8347:7:89",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25261,
                      "name": "collateralToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8368:23:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 25260,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8368:7:89",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25263,
                      "name": "principal",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8395:17:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25262,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8395:7:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25265,
                      "name": "collateral",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8416:18:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25264,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8416:7:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25267,
                      "name": "interestOwedPerDay",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8438:26:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25266,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8438:7:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25269,
                      "name": "interestDepositRemaining",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8468:32:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25268,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8468:7:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25271,
                      "name": "startRate",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8504:17:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25270,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8504:7:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25273,
                      "name": "startMargin",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8549:19:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25272,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8549:7:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25275,
                      "name": "maintenanceMargin",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8572:25:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25274,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8572:7:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25277,
                      "name": "currentMargin",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8601:21:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25276,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8601:7:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25279,
                      "name": "maxLoanTerm",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8626:19:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25278,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8626:7:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25281,
                      "name": "endTimestamp",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8649:20:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25280,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8649:7:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25283,
                      "name": "maxLiquidatable",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8673:23:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25282,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8673:7:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25285,
                      "name": "maxSeizable",
                      "nodeType": "VariableDeclaration",
                      "scope": 25286,
                      "src": "8700:19:89",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25284,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8700:7:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "LoanReturnData",
                  "nodeType": "StructDefinition",
                  "scope": 25539,
                  "src": "8303:420:89",
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25304,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserLoans",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25288,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 25304,
                        "src": "8751:12:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8751:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25290,
                        "name": "start",
                        "nodeType": "VariableDeclaration",
                        "scope": 25304,
                        "src": "8767:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25289,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8767:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25292,
                        "name": "count",
                        "nodeType": "VariableDeclaration",
                        "scope": 25304,
                        "src": "8784:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25291,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8784:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25294,
                        "name": "loanType",
                        "nodeType": "VariableDeclaration",
                        "scope": 25304,
                        "src": "8801:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25293,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8801:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25296,
                        "name": "isLender",
                        "nodeType": "VariableDeclaration",
                        "scope": 25304,
                        "src": "8821:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25295,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8821:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25298,
                        "name": "unsafeOnly",
                        "nodeType": "VariableDeclaration",
                        "scope": 25304,
                        "src": "8838:15:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25297,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8838:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8747:109:89"
                  },
                  "returnParameters": {
                    "id": 25303,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25302,
                        "name": "loansData",
                        "nodeType": "VariableDeclaration",
                        "scope": 25304,
                        "src": "8880:33:89",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$25286_memory_$dyn_memory_ptr",
                          "typeString": "struct ISovryn.LoanReturnData[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 25300,
                            "name": "LoanReturnData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 25286,
                            "src": "8880:14:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanReturnData_$25286_storage_ptr",
                              "typeString": "struct ISovryn.LoanReturnData"
                            }
                          },
                          "id": 25301,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "8880:16:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$25286_storage_$dyn_storage_ptr",
                            "typeString": "struct ISovryn.LoanReturnData[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8879:35:89"
                  },
                  "scope": 25539,
                  "src": "8726:189:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25311,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLoan",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25306,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 25311,
                        "src": "8935:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 25305,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8935:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8934:16:89"
                  },
                  "returnParameters": {
                    "id": 25310,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25309,
                        "name": "loanData",
                        "nodeType": "VariableDeclaration",
                        "scope": 25311,
                        "src": "8974:30:89",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanReturnData_$25286_memory_ptr",
                          "typeString": "struct ISovryn.LoanReturnData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 25308,
                          "name": "LoanReturnData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 25286,
                          "src": "8974:14:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanReturnData_$25286_storage_ptr",
                            "typeString": "struct ISovryn.LoanReturnData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8973:32:89"
                  },
                  "scope": 25539,
                  "src": "8918:88:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25323,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getActiveLoans",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25318,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25313,
                        "name": "start",
                        "nodeType": "VariableDeclaration",
                        "scope": 25323,
                        "src": "9036:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25312,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9036:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25315,
                        "name": "count",
                        "nodeType": "VariableDeclaration",
                        "scope": 25323,
                        "src": "9053:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25314,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9053:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25317,
                        "name": "unsafeOnly",
                        "nodeType": "VariableDeclaration",
                        "scope": 25323,
                        "src": "9070:15:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25316,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9070:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9032:56:89"
                  },
                  "returnParameters": {
                    "id": 25322,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25321,
                        "name": "loansData",
                        "nodeType": "VariableDeclaration",
                        "scope": 25323,
                        "src": "9112:33:89",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$25286_memory_$dyn_memory_ptr",
                          "typeString": "struct ISovryn.LoanReturnData[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 25319,
                            "name": "LoanReturnData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 25286,
                            "src": "9112:14:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanReturnData_$25286_storage_ptr",
                              "typeString": "struct ISovryn.LoanReturnData"
                            }
                          },
                          "id": 25320,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "9112:16:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$25286_storage_$dyn_storage_ptr",
                            "typeString": "struct ISovryn.LoanReturnData[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9111:35:89"
                  },
                  "scope": 25539,
                  "src": "9009:138:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "/// Protocol Migration //////",
                  "id": 25332,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLegacyOracles",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25330,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25326,
                        "name": "refs",
                        "nodeType": "VariableDeclaration",
                        "scope": 25332,
                        "src": "9211:23:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 25324,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9211:7:89",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 25325,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "9211:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25329,
                        "name": "oracles",
                        "nodeType": "VariableDeclaration",
                        "scope": 25332,
                        "src": "9236:26:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 25327,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9236:7:89",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 25328,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "9236:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9210:53:89"
                  },
                  "returnParameters": {
                    "id": 25331,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9272:0:89"
                  },
                  "scope": 25539,
                  "src": "9185:88:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25339,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLegacyOracle",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25335,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25334,
                        "name": "ref",
                        "nodeType": "VariableDeclaration",
                        "scope": 25339,
                        "src": "9301:11:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25333,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9301:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9300:13:89"
                  },
                  "returnParameters": {
                    "id": 25338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25337,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25339,
                        "src": "9337:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25336,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9337:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9336:9:89"
                  },
                  "scope": 25539,
                  "src": "9276:70:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "/// Swaps External //////",
                  "id": 25362,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapExternal",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25356,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25341,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25362,
                        "src": "9404:19:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25340,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9404:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25343,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25362,
                        "src": "9427:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25342,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9427:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25345,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 25362,
                        "src": "9448:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25344,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9448:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25347,
                        "name": "returnToSender",
                        "nodeType": "VariableDeclaration",
                        "scope": 25362,
                        "src": "9468:22:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25346,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9468:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25349,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25362,
                        "src": "9494:25:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25348,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9494:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25351,
                        "name": "requiredDestTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25362,
                        "src": "9523:31:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25350,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9523:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25353,
                        "name": "minReturn",
                        "nodeType": "VariableDeclaration",
                        "scope": 25362,
                        "src": "9558:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25352,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9558:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25355,
                        "name": "swapData",
                        "nodeType": "VariableDeclaration",
                        "scope": 25362,
                        "src": "9579:23:89",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 25354,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9579:5:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9400:205:89"
                  },
                  "returnParameters": {
                    "id": 25361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25358,
                        "name": "destTokenAmountReceived",
                        "nodeType": "VariableDeclaration",
                        "scope": 25362,
                        "src": "9624:31:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25357,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9624:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25360,
                        "name": "sourceTokenAmountUsed",
                        "nodeType": "VariableDeclaration",
                        "scope": 25362,
                        "src": "9657:29:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25359,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9657:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9623:64:89"
                  },
                  "scope": 25539,
                  "src": "9379:309:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25373,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSwapExpectedReturn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25369,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25364,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25373,
                        "src": "9725:19:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25363,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9725:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25366,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25373,
                        "src": "9748:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25365,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9748:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25368,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25373,
                        "src": "9769:25:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25367,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9769:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9721:76:89"
                  },
                  "returnParameters": {
                    "id": 25372,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25371,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25373,
                        "src": "9821:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25370,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9821:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9820:9:89"
                  },
                  "scope": 25539,
                  "src": "9691:139:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25384,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "checkPriceDivergence",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25382,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25375,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25384,
                        "src": "9866:19:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25374,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9866:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25377,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 25384,
                        "src": "9889:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25376,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9889:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25379,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25384,
                        "src": "9910:25:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25378,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9910:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25381,
                        "name": "minReturn",
                        "nodeType": "VariableDeclaration",
                        "scope": 25384,
                        "src": "9939:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25380,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9939:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9862:97:89"
                  },
                  "returnParameters": {
                    "id": 25383,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9971:0:89"
                  },
                  "scope": 25539,
                  "src": "9833:139:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": "/// Affiliates Module //////",
                  "id": 25391,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserNotFirstTradeFlag",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25387,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25386,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 25391,
                        "src": "10043:12:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25385,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10043:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10042:14:89"
                  },
                  "returnParameters": {
                    "id": 25390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25389,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25391,
                        "src": "10080:4:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25388,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10080:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10079:6:89"
                  },
                  "scope": 25539,
                  "src": "10009:77:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25398,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setUserNotFirstTradeFlag",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25394,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25393,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 25398,
                        "src": "10123:12:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25392,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10123:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10122:14:89"
                  },
                  "returnParameters": {
                    "id": 25397,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25396,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25398,
                        "src": "10160:4:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25395,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10160:4:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10159:6:89"
                  },
                  "scope": 25539,
                  "src": "10089:77:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25413,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "payTradingFeeToAffiliatesReferrer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25407,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25400,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 25413,
                        "src": "10215:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25399,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10215:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25402,
                        "name": "trader",
                        "nodeType": "VariableDeclaration",
                        "scope": 25413,
                        "src": "10235:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25401,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10235:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25404,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 25413,
                        "src": "10253:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25403,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10253:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25406,
                        "name": "tradingFeeTokenBaseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25413,
                        "src": "10270:33:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25405,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10270:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10211:95:89"
                  },
                  "returnParameters": {
                    "id": 25412,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25409,
                        "name": "affiliatesBonusSOVAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25413,
                        "src": "10325:32:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25408,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10325:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25411,
                        "name": "affiliatesBonusTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25413,
                        "src": "10359:34:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25410,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10359:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10324:70:89"
                  },
                  "scope": 25539,
                  "src": "10169:226:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25420,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAffiliatesReferrer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25418,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25415,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 25420,
                        "src": "10429:12:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25414,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10429:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25417,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 25420,
                        "src": "10443:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25416,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10443:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10428:32:89"
                  },
                  "returnParameters": {
                    "id": 25419,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10469:0:89"
                  },
                  "scope": 25539,
                  "src": "10398:72:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25428,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReferralsList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25423,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25422,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 25428,
                        "src": "10525:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25421,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10525:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10524:18:89"
                  },
                  "returnParameters": {
                    "id": 25427,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25426,
                        "name": "refList",
                        "nodeType": "VariableDeclaration",
                        "scope": 25428,
                        "src": "10566:24:89",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 25424,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10566:7:89",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 25425,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10566:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10565:26:89"
                  },
                  "scope": 25539,
                  "src": "10499:93:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25439,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliatesReferrerBalances",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25431,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25430,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 25439,
                        "src": "10634:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25429,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10634:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10633:18:89"
                  },
                  "returnParameters": {
                    "id": 25438,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25434,
                        "name": "referrerTokensList",
                        "nodeType": "VariableDeclaration",
                        "scope": 25439,
                        "src": "10681:35:89",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 25432,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10681:7:89",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 25433,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10681:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25437,
                        "name": "referrerTokensBalances",
                        "nodeType": "VariableDeclaration",
                        "scope": 25439,
                        "src": "10718:39:89",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 25435,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "10718:7:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 25436,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10718:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10680:78:89"
                  },
                  "scope": 25539,
                  "src": "10595:164:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25447,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliatesReferrerTokensList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25441,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 25447,
                        "src": "10803:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25440,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10803:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10802:18:89"
                  },
                  "returnParameters": {
                    "id": 25446,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25445,
                        "name": "tokensList",
                        "nodeType": "VariableDeclaration",
                        "scope": 25447,
                        "src": "10844:27:89",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 25443,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10844:7:89",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 25444,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10844:9:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10843:29:89"
                  },
                  "scope": 25539,
                  "src": "10762:111:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25456,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliatesReferrerTokenBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25452,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25449,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 25456,
                        "src": "10919:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25448,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10919:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25451,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 25456,
                        "src": "10937:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25450,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10937:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10918:33:89"
                  },
                  "returnParameters": {
                    "id": 25455,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25454,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25456,
                        "src": "10975:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25453,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10975:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10974:9:89"
                  },
                  "scope": 25539,
                  "src": "10876:108:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25467,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAffiliatesReferrerTokenFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25458,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 25467,
                        "src": "11035:13:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25457,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11035:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25460,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 25467,
                        "src": "11052:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25459,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11052:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25462,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25467,
                        "src": "11072:14:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25461,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11072:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11031:58:89"
                  },
                  "returnParameters": {
                    "id": 25466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25465,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25467,
                        "src": "11108:22:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25464,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11108:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11107:24:89"
                  },
                  "scope": 25539,
                  "src": "10987:145:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25472,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAllAffiliatesReferrerTokenFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25470,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25469,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 25472,
                        "src": "11183:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25468,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11183:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11182:18:89"
                  },
                  "returnParameters": {
                    "id": 25471,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11209:0:89"
                  },
                  "scope": 25539,
                  "src": "11135:75:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25477,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getProtocolAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25473,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11240:2:89"
                  },
                  "returnParameters": {
                    "id": 25476,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25475,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25477,
                        "src": "11266:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25474,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11266:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11265:9:89"
                  },
                  "scope": 25539,
                  "src": "11213:62:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25482,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSovTokenAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25478,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11305:2:89"
                  },
                  "returnParameters": {
                    "id": 25481,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25480,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25482,
                        "src": "11331:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25479,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11331:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11330:9:89"
                  },
                  "scope": 25539,
                  "src": "11278:62:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25487,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLockedSOVAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25483,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11371:2:89"
                  },
                  "returnParameters": {
                    "id": 25486,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25485,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25487,
                        "src": "11397:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25484,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11397:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11396:9:89"
                  },
                  "scope": 25539,
                  "src": "11343:63:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25492,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getFeeRebatePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25488,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11437:2:89"
                  },
                  "returnParameters": {
                    "id": 25491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25490,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25492,
                        "src": "11463:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11463:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11462:9:89"
                  },
                  "scope": 25539,
                  "src": "11409:63:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25497,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMinReferralsToPayout",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25493,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11507:2:89"
                  },
                  "returnParameters": {
                    "id": 25496,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25495,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25497,
                        "src": "11533:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25494,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11533:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11532:9:89"
                  },
                  "scope": 25539,
                  "src": "11475:67:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25504,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliatesUserReferrer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25500,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25499,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 25504,
                        "src": "11580:12:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25498,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11580:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11579:14:89"
                  },
                  "returnParameters": {
                    "id": 25503,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25502,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 25504,
                        "src": "11617:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25501,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11617:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11616:18:89"
                  },
                  "scope": 25539,
                  "src": "11545:90:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25511,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliateRewardsHeld",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25507,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25506,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 25511,
                        "src": "11671:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25505,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11671:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11670:18:89"
                  },
                  "returnParameters": {
                    "id": 25510,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25509,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25511,
                        "src": "11712:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25508,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11712:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11711:9:89"
                  },
                  "scope": 25539,
                  "src": "11638:83:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25516,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliateTradingTokenFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25512,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11767:2:89"
                  },
                  "returnParameters": {
                    "id": 25515,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25514,
                        "name": "affiliateTradingTokenFeePercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 25516,
                        "src": "11793:39:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25513,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11793:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11792:41:89"
                  },
                  "scope": 25539,
                  "src": "11724:110:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25523,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliatesTokenRewardsValueInRbtc",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25519,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25518,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 25523,
                        "src": "11883:16:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25517,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11883:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11882:18:89"
                  },
                  "returnParameters": {
                    "id": 25522,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25521,
                        "name": "rbtcTotalAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25523,
                        "src": "11924:23:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25520,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11924:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11923:25:89"
                  },
                  "scope": 25539,
                  "src": "11837:112:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25528,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSwapExternalFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25524,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11986:2:89"
                  },
                  "returnParameters": {
                    "id": 25527,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25526,
                        "name": "swapExternalFeePercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 25528,
                        "src": "12012:30:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25525,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12012:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12011:32:89"
                  },
                  "scope": 25539,
                  "src": "11952:92:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25533,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setTradingRebateRewardsBasisPoint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25531,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25530,
                        "name": "newBasisPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 25533,
                        "src": "12090:21:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25529,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12090:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12089:23:89"
                  },
                  "returnParameters": {
                    "id": 25532,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12121:0:89"
                  },
                  "scope": 25539,
                  "src": "12047:75:89",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25538,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTradingRebateRewardsBasisPoint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25534,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12167:2:89"
                  },
                  "returnParameters": {
                    "id": 25537,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25536,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 25538,
                        "src": "12193:7:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25535,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12193:7:89",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12192:9:89"
                  },
                  "scope": 25539,
                  "src": "12125:77:89",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 25540,
              "src": "679:11525:89"
            }
          ],
          "src": "118:12087:89"
        },
        "id": 89
      },
      "contracts/interfaces/IWrbtc.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IWrbtc.sol",
          "exportedSymbols": {
            "IWrbtc": [
              25550
            ]
          },
          "id": 25551,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 25541,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:31:90"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 25550,
              "linearizedBaseContracts": [
                25550
              ],
              "name": "IWrbtc",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 25544,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25542,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "187:2:90"
                  },
                  "returnParameters": {
                    "id": 25543,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "206:0:90"
                  },
                  "scope": 25550,
                  "src": "171:36:90",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 25549,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25546,
                        "name": "wad",
                        "nodeType": "VariableDeclaration",
                        "scope": 25549,
                        "src": "228:11:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25545,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "228:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "227:13:90"
                  },
                  "returnParameters": {
                    "id": 25548,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "249:0:90"
                  },
                  "scope": 25550,
                  "src": "210:40:90",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 25551,
              "src": "151:101:90"
            }
          ],
          "src": "118:135:90"
        },
        "id": 90
      },
      "contracts/interfaces/IWrbtcERC20.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IWrbtcERC20.sol",
          "exportedSymbols": {
            "IWrbtcERC20": [
              25559
            ]
          },
          "id": 25560,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 25552,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:31:91"
            },
            {
              "absolutePath": "contracts/interfaces/IWrbtc.sol",
              "file": "./IWrbtc.sol",
              "id": 25553,
              "nodeType": "ImportDirective",
              "scope": 25560,
              "sourceUnit": 25551,
              "src": "151:22:91",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "./IERC20.sol",
              "id": 25554,
              "nodeType": "ImportDirective",
              "scope": 25560,
              "sourceUnit": 24700,
              "src": "174:22:91",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 25555,
                    "name": "IWrbtc",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25550,
                    "src": "222:6:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWrbtc_$25550",
                      "typeString": "contract IWrbtc"
                    }
                  },
                  "id": 25556,
                  "nodeType": "InheritanceSpecifier",
                  "src": "222:6:91"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 25557,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "230:6:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 25558,
                  "nodeType": "InheritanceSpecifier",
                  "src": "230:6:91"
                }
              ],
              "contractDependencies": [
                24699,
                25550
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": false,
              "id": 25559,
              "linearizedBaseContracts": [
                25559,
                24699,
                25550
              ],
              "name": "IWrbtcERC20",
              "nodeType": "ContractDefinition",
              "nodes": [],
              "scope": 25560,
              "src": "198:41:91"
            }
          ],
          "src": "118:122:91"
        },
        "id": 91
      },
      "contracts/locked/ILockedSOV.sol": {
        "ast": {
          "absolutePath": "contracts/locked/ILockedSOV.sol",
          "exportedSymbols": {
            "ILockedSOV": [
              25583
            ]
          },
          "id": 25584,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 25561,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:92"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": " @title The Locked SOV Interface.\n @author Franklin Richards - powerhousefrank@protonmail.com\n @notice This interface is an incomplete yet useful for future migration of LockedSOV Contract.\n @dev Only use it if you know what you are doing.",
              "fullyImplemented": false,
              "id": 25583,
              "linearizedBaseContracts": [
                25583
              ],
              "name": "ILockedSOV",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": "@notice Adds SOV to the user balance (Locked and Unlocked Balance based on `_basisPoint`).\n@param _userAddress The user whose locked balance has to be updated with `_sovAmount`.\n@param _sovAmount The amount of SOV to be added to the locked and/or unlocked balance.\n@param _basisPoint The % (in Basis Point)which determines how much will be unlocked immediately.",
                  "id": 25570,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25568,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25563,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 25570,
                        "src": "718:20:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25562,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "718:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25565,
                        "name": "_sovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25570,
                        "src": "742:18:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25564,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "742:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25567,
                        "name": "_basisPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 25570,
                        "src": "764:19:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25566,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "764:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "714:72:92"
                  },
                  "returnParameters": {
                    "id": 25569,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "795:0:92"
                  },
                  "scope": 25583,
                  "src": "698:98:92",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "@notice Adds SOV to the locked balance of a user.\n@param _userAddress The user whose locked balance has to be updated with _sovAmount.\n@param _sovAmount The amount of SOV to be added to the locked balance.",
                  "id": 25577,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "depositSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25575,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25572,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 25577,
                        "src": "1047:20:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25571,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1047:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25574,
                        "name": "_sovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25577,
                        "src": "1069:18:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25573,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1069:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1046:42:92"
                  },
                  "returnParameters": {
                    "id": 25576,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1097:0:92"
                  },
                  "scope": 25583,
                  "src": "1027:71:92",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "@notice Withdraws unlocked tokens and Stakes Locked tokens for a user who already have a vesting created.\n@param _userAddress The address of user tokens will be withdrawn.",
                  "id": 25582,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAndStakeTokensFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25580,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25579,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 25582,
                        "src": "1327:20:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25578,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1327:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1326:22:92"
                  },
                  "returnParameters": {
                    "id": 25581,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1357:0:92"
                  },
                  "scope": 25583,
                  "src": "1291:67:92",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 25584,
              "src": "286:1074:92"
            }
          ],
          "src": "0:1361:92"
        },
        "id": 92
      },
      "contracts/locked/LockedSOV.sol": {
        "ast": {
          "absolutePath": "contracts/locked/LockedSOV.sol",
          "exportedSymbols": {
            "LockedSOV": [
              26418
            ]
          },
          "id": 26419,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 25585,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:93"
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../openzeppelin/SafeMath.sol",
              "id": 25586,
              "nodeType": "ImportDirective",
              "scope": 26419,
              "sourceUnit": 42310,
              "src": "26:38:93",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 25587,
              "nodeType": "ImportDirective",
              "scope": 26419,
              "sourceUnit": 24700,
              "src": "65:34:93",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/VestingRegistry.sol",
              "file": "../governance/Vesting/VestingRegistry.sol",
              "id": 25588,
              "nodeType": "ImportDirective",
              "scope": 26419,
              "sourceUnit": 22219,
              "src": "100:51:93",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/governance/Vesting/VestingLogic.sol",
              "file": "../governance/Vesting/VestingLogic.sol",
              "id": 25589,
              "nodeType": "ImportDirective",
              "scope": 26419,
              "sourceUnit": 21208,
              "src": "152:48:93",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/locked/ILockedSOV.sol",
              "file": "./ILockedSOV.sol",
              "id": 25590,
              "nodeType": "ImportDirective",
              "scope": 26419,
              "sourceUnit": 25584,
              "src": "201:26:93",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 25591,
                    "name": "ILockedSOV",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25583,
                    "src": "465:10:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                      "typeString": "contract ILockedSOV"
                    }
                  },
                  "id": 25592,
                  "nodeType": "InheritanceSpecifier",
                  "src": "465:10:93"
                }
              ],
              "contractDependencies": [
                25583
              ],
              "contractKind": "contract",
              "documentation": " @title The Locked SOV Contract.\n @author Franklin Richards - powerhousefrank@protonmail.com\n @notice This contract is used to receive reward from other contracts, Create Vesting and Stake Tokens.",
              "fullyImplemented": true,
              "id": 26418,
              "linearizedBaseContracts": [
                26418,
                25583
              ],
              "name": "LockedSOV",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 25595,
                  "libraryName": {
                    "contractScope": null,
                    "id": 25593,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "485:8:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "479:27:93",
                  "typeName": {
                    "id": 25594,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "498:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 25598,
                  "name": "MAX_BASIS_POINT",
                  "nodeType": "VariableDeclaration",
                  "scope": 26418,
                  "src": "509:47:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25596,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "509:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3130303030",
                    "id": 25597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "551:5:93",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10000_by_1",
                      "typeString": "int_const 10000"
                    },
                    "value": "10000"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 25601,
                  "name": "MAX_DURATION",
                  "nodeType": "VariableDeclaration",
                  "scope": 26418,
                  "src": "559:41:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25599,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "559:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3337",
                    "id": 25600,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "598:2:93",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_37_by_1",
                      "typeString": "int_const 37"
                    },
                    "value": "37"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 25603,
                  "name": "migration",
                  "nodeType": "VariableDeclaration",
                  "scope": 26418,
                  "src": "697:21:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 25602,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "697:4:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 25605,
                  "name": "cliff",
                  "nodeType": "VariableDeclaration",
                  "scope": 26418,
                  "src": "804:20:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25604,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "804:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 25607,
                  "name": "duration",
                  "nodeType": "VariableDeclaration",
                  "scope": 26418,
                  "src": "914:23:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25606,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "914:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 25609,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 26418,
                  "src": "978:17:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$24699",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25608,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "978:6:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 25611,
                  "name": "vestingRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 26418,
                  "src": "1042:38:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                    "typeString": "contract VestingRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25610,
                    "name": "VestingRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22218,
                    "src": "1042:15:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                      "typeString": "contract VestingRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 25613,
                  "name": "newLockedSOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 26418,
                  "src": "1125:30:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                    "typeString": "contract ILockedSOV"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25612,
                    "name": "ILockedSOV",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25583,
                    "src": "1125:10:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                      "typeString": "contract ILockedSOV"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 25617,
                  "name": "lockedBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 26418,
                  "src": "1198:50:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 25616,
                    "keyType": {
                      "id": 25614,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1206:7:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1198:27:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 25615,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1217:7:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 25621,
                  "name": "unlockedBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 26418,
                  "src": "1292:52:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 25620,
                    "keyType": {
                      "id": 25618,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1300:7:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1292:27:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 25619,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1311:7:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 25625,
                  "name": "isAdmin",
                  "nodeType": "VariableDeclaration",
                  "scope": 26418,
                  "src": "1400:40:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 25624,
                    "keyType": {
                      "id": 25622,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1408:7:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1400:24:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 25623,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1419:4:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a new Admin is added to the admin list.\n @param _initiator The address which initiated this event to be emitted.\n @param _newAdmin The address of the new admin.",
                  "id": 25631,
                  "name": "AdminAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 25630,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25627,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 25631,
                        "src": "1671:26:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25626,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1671:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25629,
                        "indexed": true,
                        "name": "_newAdmin",
                        "nodeType": "VariableDeclaration",
                        "scope": 25631,
                        "src": "1699:25:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25628,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1699:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1670:55:93"
                  },
                  "src": "1654:72:93"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when an admin is removed from the admin list.\n @param _initiator The address which initiated this event to be emitted.\n @param _removedAdmin The address of the removed admin.",
                  "id": 25637,
                  "name": "AdminRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 25636,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25633,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 25637,
                        "src": "1952:26:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25632,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1952:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25635,
                        "indexed": true,
                        "name": "_removedAdmin",
                        "nodeType": "VariableDeclaration",
                        "scope": 25637,
                        "src": "1980:29:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25634,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1980:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1951:59:93"
                  },
                  "src": "1933:78:93"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when Vesting Registry, Duration and/or Cliff is updated.\n @param _initiator The address which initiated this event to be emitted.\n @param _vestingRegistry The Vesting Registry Contract.\n @param _cliff The time period after which the tokens begin to unlock.\n @param _duration The time period after all tokens will have been unlocked.",
                  "id": 25647,
                  "name": "RegistryCliffAndDurationUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 25646,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25639,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 25647,
                        "src": "2422:26:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25638,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2422:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25641,
                        "indexed": true,
                        "name": "_vestingRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 25647,
                        "src": "2450:32:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25640,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2450:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25643,
                        "indexed": false,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 25647,
                        "src": "2484:14:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25642,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2484:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25645,
                        "indexed": false,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 25647,
                        "src": "2500:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25644,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2500:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2421:97:93"
                  },
                  "src": "2384:135:93"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a new deposit is made.\n @param _initiator The address which initiated this event to be emitted.\n @param _userAddress The user to whose un/locked balance a new deposit was made.\n @param _sovAmount The amount of SOV to be added to the un/locked balance.\n @param _basisPoint The % (in Basis Point) which determines how much will be unlocked immediately.",
                  "id": 25657,
                  "name": "Deposited",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 25656,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25649,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 25657,
                        "src": "2931:26:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25648,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2931:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25651,
                        "indexed": true,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 25657,
                        "src": "2959:28:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25650,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2959:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25653,
                        "indexed": false,
                        "name": "_sovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25657,
                        "src": "2989:18:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25652,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2989:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25655,
                        "indexed": false,
                        "name": "_basisPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 25657,
                        "src": "3009:19:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25654,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3009:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2930:99:93"
                  },
                  "src": "2915:115:93"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a user withdraws the fund.\n @param _initiator The address which initiated this event to be emitted.\n @param _userAddress The user whose unlocked balance has to be withdrawn.\n @param _sovAmount The amount of SOV withdrawn from the unlocked balance.",
                  "id": 25665,
                  "name": "Withdrawn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 25664,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25659,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 25665,
                        "src": "3335:26:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25658,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3335:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25661,
                        "indexed": true,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 25665,
                        "src": "3363:28:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25660,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3363:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25663,
                        "indexed": false,
                        "name": "_sovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25665,
                        "src": "3393:18:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25662,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3393:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3334:78:93"
                  },
                  "src": "3319:94:93"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a user creates a vesting for himself.\n @param _initiator The address which initiated this event to be emitted.\n @param _userAddress The user whose unlocked balance has to be withdrawn.\n @param _vesting The Vesting Contract.",
                  "id": 25673,
                  "name": "VestingCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 25672,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25667,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 25673,
                        "src": "3699:26:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25666,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3699:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25669,
                        "indexed": true,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 25673,
                        "src": "3727:28:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25668,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3727:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25671,
                        "indexed": true,
                        "name": "_vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 25673,
                        "src": "3757:24:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25670,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3757:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3698:84:93"
                  },
                  "src": "3678:105:93"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a user stakes tokens.\n @param _initiator The address which initiated this event to be emitted.\n @param _vesting The Vesting Contract.\n @param _amount The amount of locked tokens staked by the user.",
                  "id": 25681,
                  "name": "TokenStaked",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 25680,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25675,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 25681,
                        "src": "4040:26:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25674,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4040:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25677,
                        "indexed": true,
                        "name": "_vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 25681,
                        "src": "4068:24:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25676,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4068:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25679,
                        "indexed": false,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25681,
                        "src": "4094:15:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25678,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4094:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4039:71:93"
                  },
                  "src": "4022:89:93"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when an admin initiates a migration to new Locked SOV Contract.\n @param _initiator The address which initiated this event to be emitted.\n @param _newLockedSOV The address of the new Locked SOV Contract.",
                  "id": 25687,
                  "name": "MigrationStarted",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 25686,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25683,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 25687,
                        "src": "4369:26:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25682,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4369:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25685,
                        "indexed": true,
                        "name": "_newLockedSOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 25687,
                        "src": "4397:29:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25684,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4397:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4368:59:93"
                  },
                  "src": "4346:82:93"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a user initiates the transfer to a new Locked SOV Contract.\n @param _initiator The address which initiated this event to be emitted.\n @param _amount The amount of locked tokens to transfer from this contract to the new one.",
                  "id": 25693,
                  "name": "UserTransfered",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 25692,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25689,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 25693,
                        "src": "4710:26:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25688,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4710:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25691,
                        "indexed": false,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25693,
                        "src": "4738:15:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25690,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4738:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4709:45:93"
                  },
                  "src": "4689:66:93"
                },
                {
                  "body": {
                    "id": 25704,
                    "nodeType": "Block",
                    "src": "4795:70:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 25696,
                                "name": "isAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25625,
                                "src": "4807:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 25699,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25697,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "4815:3:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 25698,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4815:10:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4807:19:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f6e6c792061646d696e2063616e2063616c6c20746869732e",
                              "id": 25700,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4828:27:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5c96ba9b76705bf631b579597e9a8d1313e924fd9f4ddd61afbcf4517ef36c81",
                                "typeString": "literal_string \"Only admin can call this.\""
                              },
                              "value": "Only admin can call this."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5c96ba9b76705bf631b579597e9a8d1313e924fd9f4ddd61afbcf4517ef36c81",
                                "typeString": "literal_string \"Only admin can call this.\""
                              }
                            ],
                            "id": 25695,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4799:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4799:57:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25702,
                        "nodeType": "ExpressionStatement",
                        "src": "4799:57:93"
                      },
                      {
                        "id": 25703,
                        "nodeType": "PlaceholderStatement",
                        "src": "4860:1:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 25705,
                  "name": "onlyAdmin",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 25694,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4795:0:93"
                  },
                  "src": "4776:89:93",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25713,
                    "nodeType": "Block",
                    "src": "4894:65:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25708,
                              "name": "migration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25603,
                              "src": "4906:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d6967726174696f6e20686173206e6f742079657420737461727465642e",
                              "id": 25709,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4917:32:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6b9c6140c3038b715e73d5181a84d707eb85f4cdd417d3f168e390ba5f31d169",
                                "typeString": "literal_string \"Migration has not yet started.\""
                              },
                              "value": "Migration has not yet started."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6b9c6140c3038b715e73d5181a84d707eb85f4cdd417d3f168e390ba5f31d169",
                                "typeString": "literal_string \"Migration has not yet started.\""
                              }
                            ],
                            "id": 25707,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4898:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4898:52:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25711,
                        "nodeType": "ExpressionStatement",
                        "src": "4898:52:93"
                      },
                      {
                        "id": 25712,
                        "nodeType": "PlaceholderStatement",
                        "src": "4954:1:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 25714,
                  "name": "migrationAllowed",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 25706,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4894:0:93"
                  },
                  "src": "4868:91:93",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25798,
                    "nodeType": "Block",
                    "src": "5469:445:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 25733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 25729,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25716,
                                "src": "5481:4:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 25731,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5497:1:93",
                                    "subdenomination": null,
                                    "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": 25730,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5489:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 25732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5489:10:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5481:18:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c696420534f5620416464726573732e",
                              "id": 25734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5501:22:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f5840b4863e6ab75c00993b856f6487e94b357014931d34497992ecc40c5bcf3",
                                "typeString": "literal_string \"Invalid SOV Address.\""
                              },
                              "value": "Invalid SOV Address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f5840b4863e6ab75c00993b856f6487e94b357014931d34497992ecc40c5bcf3",
                                "typeString": "literal_string \"Invalid SOV Address.\""
                              }
                            ],
                            "id": 25728,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5473:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5473:51:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25736,
                        "nodeType": "ExpressionStatement",
                        "src": "5473:51:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 25742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 25738,
                                "name": "_vestingRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25718,
                                "src": "5536:16:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 25740,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5564:1:93",
                                    "subdenomination": null,
                                    "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": 25739,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5556:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 25741,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5556:10:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5536:30:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "56657374696e67207265676973747279206164647265737320697320696e76616c69642e",
                              "id": 25743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5568:38:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_55596e678915acdeffa1b602de8b72522a6395b1bf6c62276f04f49f2d354ebf",
                                "typeString": "literal_string \"Vesting registry address is invalid.\""
                              },
                              "value": "Vesting registry address is invalid."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_55596e678915acdeffa1b602de8b72522a6395b1bf6c62276f04f49f2d354ebf",
                                "typeString": "literal_string \"Vesting registry address is invalid.\""
                              }
                            ],
                            "id": 25737,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5528:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5528:79:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25745,
                        "nodeType": "ExpressionStatement",
                        "src": "5528:79:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 25749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 25747,
                                "name": "_duration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25722,
                                "src": "5619:9:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 25748,
                                "name": "MAX_DURATION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25601,
                                "src": "5631:12:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5619:24:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4475726174696f6e20697320746f6f206c6f6e672e",
                              "id": 25750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5645:23:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d28daae355dce1217d0cd10fc71d627d7150c201a7f50ee6fe0922128bac4697",
                                "typeString": "literal_string \"Duration is too long.\""
                              },
                              "value": "Duration is too long."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d28daae355dce1217d0cd10fc71d627d7150c201a7f50ee6fe0922128bac4697",
                                "typeString": "literal_string \"Duration is too long.\""
                              }
                            ],
                            "id": 25746,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5611:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5611:58:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25752,
                        "nodeType": "ExpressionStatement",
                        "src": "5611:58:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 25753,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25609,
                            "src": "5674:3:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 25755,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25716,
                                "src": "5687:4:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 25754,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24699,
                              "src": "5680:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 25756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5680:12:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "5674:18:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 25758,
                        "nodeType": "ExpressionStatement",
                        "src": "5674:18:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 25759,
                            "name": "vestingRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25611,
                            "src": "5696:15:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                              "typeString": "contract VestingRegistry"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 25761,
                                "name": "_vestingRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25718,
                                "src": "5730:16:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 25760,
                              "name": "VestingRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22218,
                              "src": "5714:15:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_VestingRegistry_$22218_$",
                                "typeString": "type(contract VestingRegistry)"
                              }
                            },
                            "id": 25762,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5714:33:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                              "typeString": "contract VestingRegistry"
                            }
                          },
                          "src": "5696:51:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                            "typeString": "contract VestingRegistry"
                          }
                        },
                        "id": 25764,
                        "nodeType": "ExpressionStatement",
                        "src": "5696:51:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 25765,
                            "name": "cliff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25605,
                            "src": "5751:5:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 25768,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 25766,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25720,
                              "src": "5759:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 25767,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5768:7:93",
                              "subdenomination": "weeks",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2419200_by_1",
                                "typeString": "int_const 2419200"
                              },
                              "value": "4"
                            },
                            "src": "5759:16:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5751:24:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 25770,
                        "nodeType": "ExpressionStatement",
                        "src": "5751:24:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 25771,
                            "name": "duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25607,
                            "src": "5779:8:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 25774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 25772,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25722,
                              "src": "5790:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 25773,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5802:7:93",
                              "subdenomination": "weeks",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2419200_by_1",
                                "typeString": "int_const 2419200"
                              },
                              "value": "4"
                            },
                            "src": "5790:19:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5779:30:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 25776,
                        "nodeType": "ExpressionStatement",
                        "src": "5779:30:93"
                      },
                      {
                        "body": {
                          "id": 25796,
                          "nodeType": "Block",
                          "src": "5871:40:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 25794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 25788,
                                    "name": "isAdmin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25625,
                                    "src": "5876:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 25792,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 25789,
                                      "name": "_admins",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25725,
                                      "src": "5884:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 25791,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 25790,
                                      "name": "index",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25778,
                                      "src": "5892:5:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5884:14:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5876:23:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 25793,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5902:4:93",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "5876:30:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 25795,
                              "nodeType": "ExpressionStatement",
                              "src": "5876:30:93"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 25781,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25778,
                            "src": "5838:5:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25782,
                              "name": "_admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25725,
                              "src": "5846:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 25783,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5846:14:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5838:22:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 25797,
                        "initializationExpression": {
                          "assignments": [
                            25778
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 25778,
                              "name": "index",
                              "nodeType": "VariableDeclaration",
                              "scope": 25797,
                              "src": "5819:13:93",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 25777,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5819:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 25780,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25779,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5835:1:93",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5819:17:93"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 25786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "5862:7:93",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 25785,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25778,
                              "src": "5862:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 25787,
                          "nodeType": "ExpressionStatement",
                          "src": "5862:7:93"
                        },
                        "nodeType": "ForStatement",
                        "src": "5814:97:93"
                      }
                    ]
                  },
                  "documentation": "@notice Setup the required parameters.\n@param _SOV The SOV Token Address.\n@param _vestingRegistry The Vesting Registry Address.\n@param _cliff The time period after which the tokens begin to unlock.\n@param _duration The time period after all tokens will have been unlocked.\n@param _admins The list of Admins to be added.",
                  "id": 25799,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25726,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25716,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 25799,
                        "src": "5351:12:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25715,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5351:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25718,
                        "name": "_vestingRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 25799,
                        "src": "5367:24:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25717,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5367:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25720,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 25799,
                        "src": "5395:14:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25719,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5395:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25722,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 25799,
                        "src": "5413:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25721,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5413:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25725,
                        "name": "_admins",
                        "nodeType": "VariableDeclaration",
                        "scope": 25799,
                        "src": "5434:24:93",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 25723,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5434:7:93",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 25724,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5434:9:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5347:114:93"
                  },
                  "returnParameters": {
                    "id": 25727,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5469:0:93"
                  },
                  "scope": 26418,
                  "src": "5336:578:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 25835,
                    "nodeType": "Block",
                    "src": "6150:193:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 25811,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 25807,
                                "name": "_newAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25801,
                                "src": "6162:9:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 25809,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6183:1:93",
                                    "subdenomination": null,
                                    "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": 25808,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6175:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 25810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6175:10:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6162:23:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c696420416464726573732e",
                              "id": 25812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6187:18:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ae7d29f8751519f0d95a4ed231f990a2eb8da9a4dcb3c93aea95b0d8ba934f03",
                                "typeString": "literal_string \"Invalid Address.\""
                              },
                              "value": "Invalid Address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ae7d29f8751519f0d95a4ed231f990a2eb8da9a4dcb3c93aea95b0d8ba934f03",
                                "typeString": "literal_string \"Invalid Address.\""
                              }
                            ],
                            "id": 25806,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6154:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6154:52:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25814,
                        "nodeType": "ExpressionStatement",
                        "src": "6154:52:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "6218:19:93",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 25816,
                                  "name": "isAdmin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25625,
                                  "src": "6219:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 25818,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 25817,
                                  "name": "_newAdmin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25801,
                                  "src": "6227:9:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6219:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4164647265737320697320616c72656164792061646d696e2e",
                              "id": 25820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6239:27:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_414fc8b0b48d1109a864f647e06d92c7f47e5f27a7fb35be8f43e1164d88a584",
                                "typeString": "literal_string \"Address is already admin.\""
                              },
                              "value": "Address is already admin."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_414fc8b0b48d1109a864f647e06d92c7f47e5f27a7fb35be8f43e1164d88a584",
                                "typeString": "literal_string \"Address is already admin.\""
                              }
                            ],
                            "id": 25815,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6210:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6210:57:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25822,
                        "nodeType": "ExpressionStatement",
                        "src": "6210:57:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25823,
                              "name": "isAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25625,
                              "src": "6271:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 25825,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25824,
                              "name": "_newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25801,
                              "src": "6279:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6271:18:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 25826,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6292:4:93",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "6271:25:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 25828,
                        "nodeType": "ExpressionStatement",
                        "src": "6271:25:93"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25830,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6317:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 25831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6317:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25832,
                              "name": "_newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25801,
                              "src": "6329:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 25829,
                            "name": "AdminAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25631,
                            "src": "6306:10:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 25833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6306:33:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25834,
                        "nodeType": "EmitStatement",
                        "src": "6301:38:93"
                      }
                    ]
                  },
                  "documentation": "@notice The function to add a new admin.\n@param _newAdmin The address of the new admin.\n@dev Only callable by an Admin.",
                  "id": 25836,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 25804,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 25803,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25705,
                        "src": "6140:9:93",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6140:9:93"
                    }
                  ],
                  "name": "addAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25802,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25801,
                        "name": "_newAdmin",
                        "nodeType": "VariableDeclaration",
                        "scope": 25836,
                        "src": "6114:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25800,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6114:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6113:19:93"
                  },
                  "returnParameters": {
                    "id": 25805,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6150:0:93"
                  },
                  "scope": 26418,
                  "src": "6096:247:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 25862,
                    "nodeType": "Block",
                    "src": "6575:153:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 25844,
                                "name": "isAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25625,
                                "src": "6587:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 25846,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 25845,
                                "name": "_adminToRemove",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25838,
                                "src": "6595:14:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6587:23:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "41646472657373206973206e6f7420616e2061646d696e2e",
                              "id": 25847,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6612:26:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bf006cd08414baa676a2eeedcf27bfd370609bae4d4fedead35269af2927c6e3",
                                "typeString": "literal_string \"Address is not an admin.\""
                              },
                              "value": "Address is not an admin."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_bf006cd08414baa676a2eeedcf27bfd370609bae4d4fedead35269af2927c6e3",
                                "typeString": "literal_string \"Address is not an admin.\""
                              }
                            ],
                            "id": 25843,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6579:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6579:60:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25849,
                        "nodeType": "ExpressionStatement",
                        "src": "6579:60:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25850,
                              "name": "isAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25625,
                              "src": "6643:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 25852,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25851,
                              "name": "_adminToRemove",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25838,
                              "src": "6651:14:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6643:23:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 25853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6669:5:93",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "6643:31:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 25855,
                        "nodeType": "ExpressionStatement",
                        "src": "6643:31:93"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25857,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6697:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 25858,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6697:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25859,
                              "name": "_adminToRemove",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25838,
                              "src": "6709:14:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 25856,
                            "name": "AdminRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25637,
                            "src": "6684:12:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 25860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6684:40:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25861,
                        "nodeType": "EmitStatement",
                        "src": "6679:45:93"
                      }
                    ]
                  },
                  "documentation": "@notice The function to remove an admin.\n@param _adminToRemove The address of the admin which should be removed.\n@dev Only callable by an Admin.",
                  "id": 25863,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 25841,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 25840,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25705,
                        "src": "6565:9:93",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6565:9:93"
                    }
                  ],
                  "name": "removeAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25839,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25838,
                        "name": "_adminToRemove",
                        "nodeType": "VariableDeclaration",
                        "scope": 25863,
                        "src": "6534:22:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25837,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6534:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6533:24:93"
                  },
                  "returnParameters": {
                    "id": 25842,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6575:0:93"
                  },
                  "scope": 26418,
                  "src": "6513:215:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 25923,
                    "nodeType": "Block",
                    "src": "7346:528:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 25879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 25876,
                                    "name": "vestingRegistry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25611,
                                    "src": "7366:15:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                      "typeString": "contract VestingRegistry"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                      "typeString": "contract VestingRegistry"
                                    }
                                  ],
                                  "id": 25875,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7358:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 25877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7358:24:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 25878,
                                "name": "_vestingRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25865,
                                "src": "7386:16:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7358:44:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "56657374696e672052656769737472792068617320746f20626520646966666572656e7420666f72206368616e67696e67206475726174696f6e20616e6420636c6966662e",
                              "id": 25880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7404:71:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2d2eaa2279cc11162a531f848334a95e4f45785219f6eae480da99a4867fd83a",
                                "typeString": "literal_string \"Vesting Registry has to be different for changing duration and cliff.\""
                              },
                              "value": "Vesting Registry has to be different for changing duration and cliff."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2d2eaa2279cc11162a531f848334a95e4f45785219f6eae480da99a4867fd83a",
                                "typeString": "literal_string \"Vesting Registry has to be different for changing duration and cliff.\""
                              }
                            ],
                            "id": 25874,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7350:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7350:126:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25882,
                        "nodeType": "ExpressionStatement",
                        "src": "7350:126:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 25886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 25884,
                                "name": "_duration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25869,
                                "src": "7556:9:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7569:1:93",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7556:14:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4475726174696f6e2063616e6e6f74206265207a65726f2e",
                              "id": 25887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7572:26:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_faae24e58607e473d6af7ad9780ff90bf6432f1eb82b161e99116f44cadc4ab5",
                                "typeString": "literal_string \"Duration cannot be zero.\""
                              },
                              "value": "Duration cannot be zero."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_faae24e58607e473d6af7ad9780ff90bf6432f1eb82b161e99116f44cadc4ab5",
                                "typeString": "literal_string \"Duration cannot be zero.\""
                              }
                            ],
                            "id": 25883,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7548:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7548:51:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25889,
                        "nodeType": "ExpressionStatement",
                        "src": "7548:51:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 25893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 25891,
                                "name": "_duration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25869,
                                "src": "7611:9:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 25892,
                                "name": "MAX_DURATION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25601,
                                "src": "7623:12:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7611:24:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4475726174696f6e20697320746f6f206c6f6e672e",
                              "id": 25894,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7637:23:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d28daae355dce1217d0cd10fc71d627d7150c201a7f50ee6fe0922128bac4697",
                                "typeString": "literal_string \"Duration is too long.\""
                              },
                              "value": "Duration is too long."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d28daae355dce1217d0cd10fc71d627d7150c201a7f50ee6fe0922128bac4697",
                                "typeString": "literal_string \"Duration is too long.\""
                              }
                            ],
                            "id": 25890,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7603:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7603:58:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25896,
                        "nodeType": "ExpressionStatement",
                        "src": "7603:58:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 25897,
                            "name": "vestingRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25611,
                            "src": "7666:15:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                              "typeString": "contract VestingRegistry"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 25899,
                                "name": "_vestingRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25865,
                                "src": "7700:16:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 25898,
                              "name": "VestingRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22218,
                              "src": "7684:15:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_VestingRegistry_$22218_$",
                                "typeString": "type(contract VestingRegistry)"
                              }
                            },
                            "id": 25900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7684:33:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                              "typeString": "contract VestingRegistry"
                            }
                          },
                          "src": "7666:51:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                            "typeString": "contract VestingRegistry"
                          }
                        },
                        "id": 25902,
                        "nodeType": "ExpressionStatement",
                        "src": "7666:51:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 25903,
                            "name": "cliff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25605,
                            "src": "7722:5:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 25906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 25904,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25867,
                              "src": "7730:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 25905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7739:7:93",
                              "subdenomination": "weeks",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2419200_by_1",
                                "typeString": "int_const 2419200"
                              },
                              "value": "4"
                            },
                            "src": "7730:16:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7722:24:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 25908,
                        "nodeType": "ExpressionStatement",
                        "src": "7722:24:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 25909,
                            "name": "duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25607,
                            "src": "7750:8:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 25912,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 25910,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25869,
                              "src": "7761:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 25911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7773:7:93",
                              "subdenomination": "weeks",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2419200_by_1",
                                "typeString": "int_const 2419200"
                              },
                              "value": "4"
                            },
                            "src": "7761:19:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7750:30:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 25914,
                        "nodeType": "ExpressionStatement",
                        "src": "7750:30:93"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25916,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "7822:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 25917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7822:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25918,
                              "name": "_vestingRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25865,
                              "src": "7834:16:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25919,
                              "name": "_cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25867,
                              "src": "7852:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25920,
                              "name": "_duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25869,
                              "src": "7860:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 25915,
                            "name": "RegistryCliffAndDurationUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25647,
                            "src": "7790:31:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 25921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7790:80:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25922,
                        "nodeType": "EmitStatement",
                        "src": "7785:85:93"
                      }
                    ]
                  },
                  "documentation": "@notice The function to update the Vesting Registry, Duration and Cliff.\n@param _vestingRegistry The Vesting Registry Address.\n@param _cliff The time period after which the tokens begin to unlock.\n@param _duration The time period after all tokens will have been unlocked.\n@dev IMPORTANT 1: You have to change Vesting Registry if you want to change Duration and/or Cliff.\nIMPORTANT 2: `_cliff` and `_duration` is multiplied by 4 weeks in this function.",
                  "id": 25924,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 25872,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 25871,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25705,
                        "src": "7336:9:93",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7336:9:93"
                    }
                  ],
                  "name": "changeRegistryCliffAndDuration",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25870,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25865,
                        "name": "_vestingRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 25924,
                        "src": "7260:24:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25864,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7260:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25867,
                        "name": "_cliff",
                        "nodeType": "VariableDeclaration",
                        "scope": 25924,
                        "src": "7288:14:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25866,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7288:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25869,
                        "name": "_duration",
                        "nodeType": "VariableDeclaration",
                        "scope": 25924,
                        "src": "7306:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25868,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7306:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7256:70:93"
                  },
                  "returnParameters": {
                    "id": 25873,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7346:0:93"
                  },
                  "scope": 26418,
                  "src": "7217:657:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 25939,
                    "nodeType": "Block",
                    "src": "8363:55:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25934,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25926,
                              "src": "8376:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25935,
                              "name": "_sovAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25928,
                              "src": "8390:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25936,
                              "name": "_basisPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25930,
                              "src": "8402:11:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 25933,
                            "name": "_deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26031,
                            "src": "8367:8:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 25937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8367:47:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25938,
                        "nodeType": "ExpressionStatement",
                        "src": "8367:47:93"
                      }
                    ]
                  },
                  "documentation": "@notice Adds SOV to the user balance (Locked and Unlocked Balance based on `_basisPoint`).\n@param _userAddress The user whose locked balance has to be updated with `_sovAmount`.\n@param _sovAmount The amount of SOV to be added to the locked and/or unlocked balance.\n@param _basisPoint The % (in Basis Point)which determines how much will be unlocked immediately.",
                  "id": 25940,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25931,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25926,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 25940,
                        "src": "8285:20:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25925,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8285:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25928,
                        "name": "_sovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25940,
                        "src": "8309:18:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25927,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8309:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25930,
                        "name": "_basisPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 25940,
                        "src": "8331:19:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25929,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8331:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8281:72:93"
                  },
                  "returnParameters": {
                    "id": 25932,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8363:0:93"
                  },
                  "scope": 26418,
                  "src": "8265:153:93",
                  "stateMutability": "nonpayable",
                  "superFunction": 25570,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 25953,
                    "nodeType": "Block",
                    "src": "8793:45:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25948,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25942,
                              "src": "8806:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25949,
                              "name": "_sovAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25944,
                              "src": "8820:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 25950,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8832:1:93",
                              "subdenomination": null,
                              "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"
                              }
                            ],
                            "id": 25947,
                            "name": "_deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26031,
                            "src": "8797:8:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 25951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8797:37:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25952,
                        "nodeType": "ExpressionStatement",
                        "src": "8797:37:93"
                      }
                    ]
                  },
                  "documentation": "@notice Adds SOV to the locked balance of a user.\n@param _userAddress The user whose locked balance has to be updated with _sovAmount.\n@param _sovAmount The amount of SOV to be added to the locked balance.\n@dev This is here because there are dependency with other contracts.",
                  "id": 25954,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "depositSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25942,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 25954,
                        "src": "8742:20:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25941,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8742:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25944,
                        "name": "_sovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 25954,
                        "src": "8764:18:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25943,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8764:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8741:42:93"
                  },
                  "returnParameters": {
                    "id": 25946,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8793:0:93"
                  },
                  "scope": 26418,
                  "src": "8722:116:93",
                  "stateMutability": "nonpayable",
                  "superFunction": 25577,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 26030,
                    "nodeType": "Block",
                    "src": "8939:681:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 25966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 25964,
                                "name": "_basisPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25960,
                                "src": "9060:11:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 25965,
                                "name": "MAX_BASIS_POINT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25598,
                                "src": "9074:15:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9060:29:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426173697320506f696e742068617320746f206265206c657373207468616e2031303030302e",
                              "id": 25967,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9091:40:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d9acd5dfb408099081f5e744dee7f89ad822ceedc7fb6f654aa65a24aa35c692",
                                "typeString": "literal_string \"Basis Point has to be less than 10000.\""
                              },
                              "value": "Basis Point has to be less than 10000."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d9acd5dfb408099081f5e744dee7f89ad822ceedc7fb6f654aa65a24aa35c692",
                                "typeString": "literal_string \"Basis Point has to be less than 10000.\""
                              }
                            ],
                            "id": 25963,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9052:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9052:80:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25969,
                        "nodeType": "ExpressionStatement",
                        "src": "9052:80:93"
                      },
                      {
                        "assignments": [
                          25971
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25971,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 26030,
                            "src": "9136:13:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 25970,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9136:4:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25981,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25974,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9169:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 25975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9169:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25977,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45184,
                                  "src": "9189:4:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LockedSOV_$26418",
                                    "typeString": "contract LockedSOV"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LockedSOV_$26418",
                                    "typeString": "contract LockedSOV"
                                  }
                                ],
                                "id": 25976,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9181:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 25978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9181:13:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25979,
                              "name": "_sovAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25958,
                              "src": "9196:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25972,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25609,
                              "src": "9152:3:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 25973,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24682,
                            "src": "9152:16:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 25980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9152:55:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9136:71:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25983,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25971,
                              "src": "9219:8:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e",
                              "id": 25984,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9229:60:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              },
                              "value": "Token transfer was not successful. Check receiver address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              }
                            ],
                            "id": 25982,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9211:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9211:79:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25986,
                        "nodeType": "ExpressionStatement",
                        "src": "9211:79:93"
                      },
                      {
                        "assignments": [
                          25988
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25988,
                            "name": "unlockedBal",
                            "nodeType": "VariableDeclaration",
                            "scope": 26030,
                            "src": "9295:19:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25987,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9295:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25996,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25994,
                              "name": "MAX_BASIS_POINT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25598,
                              "src": "9349:15:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25991,
                                  "name": "_basisPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25960,
                                  "src": "9332:11:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25989,
                                  "name": "_sovAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25958,
                                  "src": "9317:10:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 25990,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "9317:14:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 25992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9317:27:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 25993,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "9317:31:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 25995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9317:48:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9295:70:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25997,
                              "name": "unlockedBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25621,
                              "src": "9370:16:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 25999,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25998,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25956,
                              "src": "9387:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9370:30:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 26004,
                                "name": "unlockedBal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25988,
                                "src": "9438:11:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 26000,
                                  "name": "unlockedBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25621,
                                  "src": "9403:16:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 26002,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 26001,
                                  "name": "_userAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25956,
                                  "src": "9420:12:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9403:30:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 26003,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "9403:34:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 26005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9403:47:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9370:80:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 26007,
                        "nodeType": "ExpressionStatement",
                        "src": "9370:80:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 26008,
                              "name": "lockedBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25617,
                              "src": "9454:14:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 26010,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 26009,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25956,
                              "src": "9469:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9454:28:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 26018,
                                "name": "unlockedBal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25988,
                                "src": "9534:11:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 26015,
                                    "name": "_sovAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25958,
                                    "src": "9518:10:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 26011,
                                      "name": "lockedBalances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25617,
                                      "src": "9485:14:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 26013,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 26012,
                                      "name": "_userAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25956,
                                      "src": "9500:12:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9485:28:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 26014,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "9485:32:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 26016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9485:44:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 26017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "9485:48:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 26019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9485:61:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9454:92:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 26021,
                        "nodeType": "ExpressionStatement",
                        "src": "9454:92:93"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26023,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9566:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 26024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9566:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26025,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25956,
                              "src": "9578:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26026,
                              "name": "_sovAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25958,
                              "src": "9592:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26027,
                              "name": "_basisPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25960,
                              "src": "9604:11:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 26022,
                            "name": "Deposited",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25657,
                            "src": "9556:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 26028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9556:60:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26029,
                        "nodeType": "EmitStatement",
                        "src": "9551:65:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 26031,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_deposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25961,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25956,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 26031,
                        "src": "8862:20:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25955,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8862:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25958,
                        "name": "_sovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 26031,
                        "src": "8886:18:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25957,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8886:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25960,
                        "name": "_basisPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 26031,
                        "src": "8908:19:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25959,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8908:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8858:72:93"
                  },
                  "returnParameters": {
                    "id": 25962,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8939:0:93"
                  },
                  "scope": 26418,
                  "src": "8841:779:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 26042,
                    "nodeType": "Block",
                    "src": "9849:47:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26037,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9863:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 26038,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9863:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26039,
                              "name": "_receiverAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26033,
                              "src": "9875:16:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 26036,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26097,
                            "src": "9853:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 26040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9853:39:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26041,
                        "nodeType": "ExpressionStatement",
                        "src": "9853:39:93"
                      }
                    ]
                  },
                  "documentation": "@notice A function to withdraw the unlocked balance.\n@param _receiverAddress If specified, the unlocked balance will go to this address, else to msg.sender.",
                  "id": 26043,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26034,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26033,
                        "name": "_receiverAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 26043,
                        "src": "9816:24:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26032,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9816:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9815:26:93"
                  },
                  "returnParameters": {
                    "id": 26035,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9849:0:93"
                  },
                  "scope": 26418,
                  "src": "9798:98:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 26096,
                    "nodeType": "Block",
                    "src": "9969:370:93",
                    "statements": [
                      {
                        "assignments": [
                          26051
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26051,
                            "name": "userAddr",
                            "nodeType": "VariableDeclaration",
                            "scope": 26096,
                            "src": "9973:16:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 26050,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9973:7:93",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26053,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 26052,
                          "name": "_receiverAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26047,
                          "src": "9992:16:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9973:35:93"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 26058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 26054,
                            "name": "_receiverAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26047,
                            "src": "10016:16:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 26056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10044:1:93",
                                "subdenomination": null,
                                "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": 26055,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10036:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 26057,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10036:10:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "10016:30:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 26064,
                        "nodeType": "IfStatement",
                        "src": "10012:64:93",
                        "trueBody": {
                          "id": 26063,
                          "nodeType": "Block",
                          "src": "10048:28:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 26061,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 26059,
                                  "name": "userAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26051,
                                  "src": "10053:8:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 26060,
                                  "name": "_sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26045,
                                  "src": "10064:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "10053:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 26062,
                              "nodeType": "ExpressionStatement",
                              "src": "10053:18:93"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          26066
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26066,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 26096,
                            "src": "10080:14:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 26065,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10080:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26070,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 26067,
                            "name": "unlockedBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25621,
                            "src": "10097:16:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 26069,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 26068,
                            "name": "_sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26045,
                            "src": "10114:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10097:25:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10080:42:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 26071,
                              "name": "unlockedBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25621,
                              "src": "10126:16:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 26073,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 26072,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26045,
                              "src": "10143:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10126:25:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 26074,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10154:1:93",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10126:29:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 26076,
                        "nodeType": "ExpressionStatement",
                        "src": "10126:29:93"
                      },
                      {
                        "assignments": [
                          26078
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26078,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 26096,
                            "src": "10160:13:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 26077,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "10160:4:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26084,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26081,
                              "name": "userAddr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26051,
                              "src": "10189:8:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26082,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26066,
                              "src": "10199:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 26079,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25609,
                              "src": "10176:3:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 26080,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24671,
                            "src": "10176:12:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 26083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10176:30:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10160:46:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26086,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26078,
                              "src": "10218:8:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e",
                              "id": 26087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10228:60:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              },
                              "value": "Token transfer was not successful. Check receiver address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              }
                            ],
                            "id": 26085,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10210:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 26088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10210:79:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26089,
                        "nodeType": "ExpressionStatement",
                        "src": "10210:79:93"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26091,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26045,
                              "src": "10309:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26092,
                              "name": "userAddr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26051,
                              "src": "10318:8:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26093,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26066,
                              "src": "10328:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 26090,
                            "name": "Withdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25665,
                            "src": "10299:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 26094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10299:36:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26095,
                        "nodeType": "EmitStatement",
                        "src": "10294:41:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 26097,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26048,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26045,
                        "name": "_sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 26097,
                        "src": "9918:15:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26044,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9918:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26047,
                        "name": "_receiverAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 26097,
                        "src": "9935:24:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26046,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9935:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9917:43:93"
                  },
                  "returnParameters": {
                    "id": 26049,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9969:0:93"
                  },
                  "scope": 26418,
                  "src": "9899:440:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 26105,
                    "nodeType": "Block",
                    "src": "10533:42:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26101,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "10560:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 26102,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10560:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 26100,
                            "name": "_createVestingAndStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26136,
                            "src": "10537:22:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 26103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10537:34:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26104,
                        "nodeType": "ExpressionStatement",
                        "src": "10537:34:93"
                      }
                    ]
                  },
                  "documentation": "@notice Creates vesting if not already created and Stakes tokens for a user.\n@dev Only use this function if the `duration` is small.",
                  "id": 26106,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createVestingAndStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26098,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10523:2:93"
                  },
                  "returnParameters": {
                    "id": 26099,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10533:0:93"
                  },
                  "scope": 26418,
                  "src": "10493:82:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 26135,
                    "nodeType": "Block",
                    "src": "10635:171:93",
                    "statements": [
                      {
                        "assignments": [
                          26112
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26112,
                            "name": "vestingAddr",
                            "nodeType": "VariableDeclaration",
                            "scope": 26135,
                            "src": "10639:19:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 26111,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10639:7:93",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26116,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26114,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26108,
                              "src": "10673:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 26113,
                            "name": "_getVesting",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26339,
                            "src": "10661:11:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                              "typeString": "function (address) view returns (address)"
                            }
                          },
                          "id": 26115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10661:20:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10639:42:93"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 26121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 26117,
                            "name": "vestingAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26112,
                            "src": "10690:11:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 26119,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10713:1:93",
                                "subdenomination": null,
                                "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": 26118,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10705:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 26120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10705:10:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "10690:25:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 26129,
                        "nodeType": "IfStatement",
                        "src": "10686:78:93",
                        "trueBody": {
                          "id": 26128,
                          "nodeType": "Block",
                          "src": "10717:47:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 26126,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 26122,
                                  "name": "vestingAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26112,
                                  "src": "10722:11:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 26124,
                                      "name": "_sender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26108,
                                      "src": "10751:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 26123,
                                    "name": "_createVesting",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26326,
                                    "src": "10736:14:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$",
                                      "typeString": "function (address) returns (address)"
                                    }
                                  },
                                  "id": 26125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10736:23:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "10722:37:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 26127,
                              "nodeType": "ExpressionStatement",
                              "src": "10722:37:93"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26131,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26108,
                              "src": "10781:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26132,
                              "name": "vestingAddr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26112,
                              "src": "10790:11:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 26130,
                            "name": "_stakeTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26381,
                            "src": "10768:12:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 26133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10768:34:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26134,
                        "nodeType": "ExpressionStatement",
                        "src": "10768:34:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 26136,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_createVestingAndStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26108,
                        "name": "_sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 26136,
                        "src": "10610:15:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26107,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10610:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10609:17:93"
                  },
                  "returnParameters": {
                    "id": 26110,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10635:0:93"
                  },
                  "scope": 26418,
                  "src": "10578:228:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 26148,
                    "nodeType": "Block",
                    "src": "11038:52:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 26141,
                            "name": "_vestingAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26139,
                            "src": "11042:15:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 26143,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "11075:3:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 26144,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11075:10:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "id": 26142,
                              "name": "_createVesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26326,
                              "src": "11060:14:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$",
                                "typeString": "function (address) returns (address)"
                              }
                            },
                            "id": 26145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11060:26:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11042:44:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 26147,
                        "nodeType": "ExpressionStatement",
                        "src": "11042:44:93"
                      }
                    ]
                  },
                  "documentation": "@notice Creates vesting contract (if it hasn't been created yet) for the calling user.\n@return _vestingAddress The New Vesting Contract Created.",
                  "id": 26149,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26137,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10994:2:93"
                  },
                  "returnParameters": {
                    "id": 26140,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26139,
                        "name": "_vestingAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 26149,
                        "src": "11013:23:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26138,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11013:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11012:25:93"
                  },
                  "scope": 26418,
                  "src": "10972:118:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 26184,
                    "nodeType": "Block",
                    "src": "11300:214:93",
                    "statements": [
                      {
                        "assignments": [
                          26153
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26153,
                            "name": "vesting",
                            "nodeType": "VariableDeclaration",
                            "scope": 26184,
                            "src": "11304:20:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VestingLogic_$21207",
                              "typeString": "contract VestingLogic"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 26152,
                              "name": "VestingLogic",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 21207,
                              "src": "11304:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                "typeString": "contract VestingLogic"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26160,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26156,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "11352:3:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 26157,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "11352:10:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 26155,
                                "name": "_getVesting",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26339,
                                "src": "11340:11:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view returns (address)"
                                }
                              },
                              "id": 26158,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11340:23:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 26154,
                            "name": "VestingLogic",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21207,
                            "src": "11327:12:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_VestingLogic_$21207_$",
                              "typeString": "type(contract VestingLogic)"
                            }
                          },
                          "id": 26159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11327:37:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_VestingLogic_$21207",
                            "typeString": "contract VestingLogic"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11304:60:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 26172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 26166,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 26162,
                                  "name": "cliff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25605,
                                  "src": "11377:5:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26163,
                                      "name": "vesting",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26153,
                                      "src": "11386:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                        "typeString": "contract VestingLogic"
                                      }
                                    },
                                    "id": 26164,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cliff",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24560,
                                    "src": "11386:13:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view external returns (uint256)"
                                    }
                                  },
                                  "id": 26165,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11386:15:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11377:24:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 26171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 26167,
                                  "name": "duration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25607,
                                  "src": "11405:8:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26168,
                                      "name": "vesting",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26153,
                                      "src": "11417:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                        "typeString": "contract VestingLogic"
                                      }
                                    },
                                    "id": 26169,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "duration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24562,
                                    "src": "11417:16:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view external returns (uint256)"
                                    }
                                  },
                                  "id": 26170,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11417:18:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11405:30:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "11377:58:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "57726f6e672056657374696e67205363686564756c652e",
                              "id": 26173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11437:25:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c01475d4480e50ba5da89c4d63ab1e51467199e3e56a4229d06ea39a4dcb521d",
                                "typeString": "literal_string \"Wrong Vesting Schedule.\""
                              },
                              "value": "Wrong Vesting Schedule."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c01475d4480e50ba5da89c4d63ab1e51467199e3e56a4229d06ea39a4dcb521d",
                                "typeString": "literal_string \"Wrong Vesting Schedule.\""
                              }
                            ],
                            "id": 26161,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11369:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 26174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11369:94:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26175,
                        "nodeType": "ExpressionStatement",
                        "src": "11369:94:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26177,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "11481:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 26178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11481:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 26180,
                                  "name": "vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26153,
                                  "src": "11501:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                    "typeString": "contract VestingLogic"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                    "typeString": "contract VestingLogic"
                                  }
                                ],
                                "id": 26179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11493:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 26181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11493:16:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 26176,
                            "name": "_stakeTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26381,
                            "src": "11468:12:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 26182,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11468:42:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26183,
                        "nodeType": "ExpressionStatement",
                        "src": "11468:42:93"
                      }
                    ]
                  },
                  "documentation": "@notice Stakes tokens for a user who already have a vesting created.\n@dev The user should already have a vesting created, else this function will throw error.",
                  "id": 26185,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "stakeTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26150,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11290:2:93"
                  },
                  "returnParameters": {
                    "id": 26151,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11300:0:93"
                  },
                  "scope": 26418,
                  "src": "11270:244:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 26201,
                    "nodeType": "Block",
                    "src": "11812:85:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26191,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "11826:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 26192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11826:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26193,
                              "name": "_receiverAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26187,
                              "src": "11838:16:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 26190,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26097,
                            "src": "11816:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 26194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11816:39:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26195,
                        "nodeType": "ExpressionStatement",
                        "src": "11816:39:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26197,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "11882:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 26198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11882:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 26196,
                            "name": "_createVestingAndStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26136,
                            "src": "11859:22:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 26199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11859:34:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26200,
                        "nodeType": "ExpressionStatement",
                        "src": "11859:34:93"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraws unlocked tokens and Stakes Locked tokens for a user who already have a vesting created.\n@param _receiverAddress If specified, the unlocked balance will go to this address, else to msg.sender.",
                  "id": 26202,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAndStakeTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26187,
                        "name": "_receiverAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 26202,
                        "src": "11777:24:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26186,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11777:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11776:26:93"
                  },
                  "returnParameters": {
                    "id": 26189,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11812:0:93"
                  },
                  "scope": 26418,
                  "src": "11745:152:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 26216,
                    "nodeType": "Block",
                    "src": "12157:85:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26208,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26204,
                              "src": "12171:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26209,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26204,
                              "src": "12185:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 26207,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26097,
                            "src": "12161:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 26210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12161:37:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26211,
                        "nodeType": "ExpressionStatement",
                        "src": "12161:37:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26213,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26204,
                              "src": "12225:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 26212,
                            "name": "_createVestingAndStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26136,
                            "src": "12202:22:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 26214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12202:36:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26215,
                        "nodeType": "ExpressionStatement",
                        "src": "12202:36:93"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraws unlocked tokens and Stakes Locked tokens for a user who already have a vesting created.\n@param _userAddress The address of user tokens will be withdrawn.",
                  "id": 26217,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAndStakeTokensFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26205,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26204,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 26217,
                        "src": "12126:20:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26203,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12126:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12125:22:93"
                  },
                  "returnParameters": {
                    "id": 26206,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12157:0:93"
                  },
                  "scope": 26418,
                  "src": "12090:152:93",
                  "stateMutability": "nonpayable",
                  "superFunction": 25582,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 26261,
                    "nodeType": "Block",
                    "src": "12455:259:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 26229,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 26225,
                                "name": "_newLockedSOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26219,
                                "src": "12467:13:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 26227,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12492:1:93",
                                    "subdenomination": null,
                                    "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": 26226,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12484:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 26228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12484:10:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "12467:27:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4e6577204c6f636b656420534f56204164647265737320697320496e76616c69642e",
                              "id": 26230,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12496:36:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8fe3361e8fb8ee43910cc5665e0432299af5db0b9d1ecb98eaf712a346ef87fd",
                                "typeString": "literal_string \"New Locked SOV Address is Invalid.\""
                              },
                              "value": "New Locked SOV Address is Invalid."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8fe3361e8fb8ee43910cc5665e0432299af5db0b9d1ecb98eaf712a346ef87fd",
                                "typeString": "literal_string \"New Locked SOV Address is Invalid.\""
                              }
                            ],
                            "id": 26224,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "12459:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 26231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12459:74:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26232,
                        "nodeType": "ExpressionStatement",
                        "src": "12459:74:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 26233,
                            "name": "newLockedSOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25613,
                            "src": "12537:12:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                              "typeString": "contract ILockedSOV"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 26235,
                                "name": "_newLockedSOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26219,
                                "src": "12563:13:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 26234,
                              "name": "ILockedSOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25583,
                              "src": "12552:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ILockedSOV_$25583_$",
                                "typeString": "type(contract ILockedSOV)"
                              }
                            },
                            "id": 26236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12552:25:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                              "typeString": "contract ILockedSOV"
                            }
                          },
                          "src": "12537:40:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                            "typeString": "contract ILockedSOV"
                          }
                        },
                        "id": 26238,
                        "nodeType": "ExpressionStatement",
                        "src": "12537:40:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26242,
                              "name": "_newLockedSOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26219,
                              "src": "12593:13:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 26246,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45184,
                                      "src": "12630:4:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_LockedSOV_$26418",
                                        "typeString": "contract LockedSOV"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_LockedSOV_$26418",
                                        "typeString": "contract LockedSOV"
                                      }
                                    ],
                                    "id": 26245,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12622:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 26247,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12622:13:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 26243,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25609,
                                  "src": "12608:3:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 26244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24644,
                                "src": "12608:13:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 26248,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12608:28:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 26239,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25609,
                              "src": "12581:3:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 26241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24662,
                            "src": "12581:11:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 26249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12581:56:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 26250,
                        "nodeType": "ExpressionStatement",
                        "src": "12581:56:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 26251,
                            "name": "migration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25603,
                            "src": "12641:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 26252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12653:4:93",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "12641:16:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 26254,
                        "nodeType": "ExpressionStatement",
                        "src": "12641:16:93"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26256,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "12684:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 26257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12684:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26258,
                              "name": "_newLockedSOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26219,
                              "src": "12696:13:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 26255,
                            "name": "MigrationStarted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25687,
                            "src": "12667:16:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 26259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12667:43:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26260,
                        "nodeType": "EmitStatement",
                        "src": "12662:48:93"
                      }
                    ]
                  },
                  "documentation": "@notice Function to start the process of migration to new contract.\n@param _newLockedSOV The new locked sov contract address.",
                  "id": 26262,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 26222,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 26221,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25705,
                        "src": "12445:9:93",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12445:9:93"
                    }
                  ],
                  "name": "startMigration",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26220,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26219,
                        "name": "_newLockedSOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 26262,
                        "src": "12413:21:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26218,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12413:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12412:23:93"
                  },
                  "returnParameters": {
                    "id": 26223,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12455:0:93"
                  },
                  "scope": 26418,
                  "src": "12389:325:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 26295,
                    "nodeType": "Block",
                    "src": "12955:177:93",
                    "statements": [
                      {
                        "assignments": [
                          26268
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26268,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 26295,
                            "src": "12959:14:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 26267,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12959:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26273,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 26269,
                            "name": "lockedBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25617,
                            "src": "12976:14:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 26272,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 26270,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "12991:3:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 26271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12991:10:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12976:26:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12959:43:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 26274,
                              "name": "lockedBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25617,
                              "src": "13006:14:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 26277,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26275,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "13021:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 26276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13021:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "13006:26:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 26278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13035:1:93",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13006:30:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 26280,
                        "nodeType": "ExpressionStatement",
                        "src": "13006:30:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26284,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "13065:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 26285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13065:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26286,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26268,
                              "src": "13077:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 26281,
                              "name": "newLockedSOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25613,
                              "src": "13041:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILockedSOV_$25583",
                                "typeString": "contract ILockedSOV"
                              }
                            },
                            "id": 26283,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "depositSOV",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25577,
                            "src": "13041:23:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 26287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13041:43:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26288,
                        "nodeType": "ExpressionStatement",
                        "src": "13041:43:93"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26290,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "13109:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 26291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13109:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26292,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26268,
                              "src": "13121:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 26289,
                            "name": "UserTransfered",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25693,
                            "src": "13094:14:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 26293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13094:34:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26294,
                        "nodeType": "EmitStatement",
                        "src": "13089:39:93"
                      }
                    ]
                  },
                  "documentation": "@notice Function to transfer the locked balance from this contract to new LockedSOV Contract.\n@dev Address is not specified to discourage selling lockedSOV to other address.",
                  "id": 26296,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 26265,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 26264,
                        "name": "migrationAllowed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25714,
                        "src": "12938:16:93",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12938:16:93"
                    }
                  ],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26263,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12926:2:93"
                  },
                  "returnParameters": {
                    "id": 26266,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12955:0:93"
                  },
                  "scope": 26418,
                  "src": "12909:223:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 26325,
                    "nodeType": "Block",
                    "src": "13498:293:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26306,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26298,
                              "src": "13644:11:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 26307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13657:1:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 26308,
                              "name": "cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25605,
                              "src": "13660:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26309,
                              "name": "duration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25607,
                              "src": "13667:8:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 26303,
                              "name": "vestingRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25611,
                              "src": "13614:15:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                "typeString": "contract VestingRegistry"
                              }
                            },
                            "id": 26305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "createVesting",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21993,
                            "src": "13614:29:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256) external"
                            }
                          },
                          "id": 26310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13614:62:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26311,
                        "nodeType": "ExpressionStatement",
                        "src": "13614:62:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 26312,
                            "name": "_vestingAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26301,
                            "src": "13680:15:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 26314,
                                "name": "_tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26298,
                                "src": "13710:11:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 26313,
                              "name": "_getVesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26339,
                              "src": "13698:11:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                "typeString": "function (address) view returns (address)"
                              }
                            },
                            "id": 26315,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13698:24:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "13680:42:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 26317,
                        "nodeType": "ExpressionStatement",
                        "src": "13680:42:93"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26319,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "13746:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 26320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13746:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26321,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26298,
                              "src": "13758:11:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26322,
                              "name": "_vestingAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26301,
                              "src": "13771:15:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 26318,
                            "name": "VestingCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25673,
                            "src": "13731:14:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 26323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13731:56:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26324,
                        "nodeType": "EmitStatement",
                        "src": "13726:61:93"
                      }
                    ]
                  },
                  "documentation": "@notice Creates a Vesting Contract for a user.\n@param _tokenOwner The owner of the vesting contract.\n@return _vestingAddress The Vesting Contract Address.\n@dev Does not do anything if Vesting Contract was already created.",
                  "id": 26326,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_createVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26298,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 26326,
                        "src": "13434:19:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26297,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13434:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13433:21:93"
                  },
                  "returnParameters": {
                    "id": 26302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26301,
                        "name": "_vestingAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 26326,
                        "src": "13473:23:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26300,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13473:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13472:25:93"
                  },
                  "scope": 26418,
                  "src": "13410:381:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26338,
                    "nodeType": "Block",
                    "src": "14060:54:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26335,
                              "name": "_tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26328,
                              "src": "14098:11:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 26333,
                              "name": "vestingRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25611,
                              "src": "14071:15:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VestingRegistry_$22218",
                                "typeString": "contract VestingRegistry"
                              }
                            },
                            "id": 26334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getVesting",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22086,
                            "src": "14071:26:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                              "typeString": "function (address) view external returns (address)"
                            }
                          },
                          "id": 26336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14071:39:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 26332,
                        "id": 26337,
                        "nodeType": "Return",
                        "src": "14064:46:93"
                      }
                    ]
                  },
                  "documentation": "@notice Returns the Vesting Contract Address.\n@param _tokenOwner The owner of the vesting contract.\n@return _vestingAddress The Vesting Contract Address.",
                  "id": 26339,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getVesting",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26329,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26328,
                        "name": "_tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 26339,
                        "src": "13991:19:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26327,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13991:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13990:21:93"
                  },
                  "returnParameters": {
                    "id": 26332,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26331,
                        "name": "_vestingAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 26339,
                        "src": "14035:23:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26330,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14035:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14034:25:93"
                  },
                  "scope": 26418,
                  "src": "13970:144:93",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26380,
                    "nodeType": "Block",
                    "src": "14307:235:93",
                    "statements": [
                      {
                        "assignments": [
                          26347
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26347,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 26380,
                            "src": "14311:14:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 26346,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14311:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26351,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 26348,
                            "name": "lockedBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25617,
                            "src": "14328:14:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 26350,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 26349,
                            "name": "_sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26341,
                            "src": "14343:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14328:23:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14311:40:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 26352,
                              "name": "lockedBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25617,
                              "src": "14355:14:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 26354,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 26353,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26341,
                              "src": "14370:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "14355:23:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 26355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14381:1:93",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14355:27:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 26357,
                        "nodeType": "ExpressionStatement",
                        "src": "14355:27:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 26361,
                                  "name": "_vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26343,
                                  "src": "14407:8:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 26362,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26347,
                                  "src": "14417:6:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 26359,
                                  "name": "SOV",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25609,
                                  "src": "14395:3:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 26360,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "approve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24662,
                                "src": "14395:11:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 26363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14395:29:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "417070726f7665206661696c65642e",
                              "id": 26364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14426:17:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e41d76cbe57f5547204a44259fffa40a9c2f08210dec1c27b5394910a638b0ec",
                                "typeString": "literal_string \"Approve failed.\""
                              },
                              "value": "Approve failed."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e41d76cbe57f5547204a44259fffa40a9c2f08210dec1c27b5394910a638b0ec",
                                "typeString": "literal_string \"Approve failed.\""
                              }
                            ],
                            "id": 26358,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "14387:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 26365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14387:57:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26366,
                        "nodeType": "ExpressionStatement",
                        "src": "14387:57:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26371,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26347,
                              "src": "14483:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 26368,
                                  "name": "_vesting",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26343,
                                  "src": "14461:8:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 26367,
                                "name": "VestingLogic",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21207,
                                "src": "14448:12:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_VestingLogic_$21207_$",
                                  "typeString": "type(contract VestingLogic)"
                                }
                              },
                              "id": 26369,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14448:22:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VestingLogic_$21207",
                                "typeString": "contract VestingLogic"
                              }
                            },
                            "id": 26370,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakeTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20838,
                            "src": "14448:34:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 26372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14448:42:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26373,
                        "nodeType": "ExpressionStatement",
                        "src": "14448:42:93"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26375,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26341,
                              "src": "14512:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26376,
                              "name": "_vesting",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26343,
                              "src": "14521:8:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26377,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26347,
                              "src": "14531:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 26374,
                            "name": "TokenStaked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25681,
                            "src": "14500:11:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 26378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14500:38:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26379,
                        "nodeType": "EmitStatement",
                        "src": "14495:43:93"
                      }
                    ]
                  },
                  "documentation": "@notice Stakes the tokens in a particular vesting contract.\n@param _vesting The Vesting Contract Address.",
                  "id": 26381,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_stakeTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26344,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26341,
                        "name": "_sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 26381,
                        "src": "14263:15:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26340,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14263:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26343,
                        "name": "_vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 26381,
                        "src": "14280:16:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26342,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14280:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14262:35:93"
                  },
                  "returnParameters": {
                    "id": 26345,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14307:0:93"
                  },
                  "scope": 26418,
                  "src": "14241:301:93",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26392,
                    "nodeType": "Block",
                    "src": "14866:36:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 26388,
                            "name": "lockedBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25617,
                            "src": "14877:14:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 26390,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 26389,
                            "name": "_addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26383,
                            "src": "14892:5:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14877:21:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 26387,
                        "id": 26391,
                        "nodeType": "Return",
                        "src": "14870:28:93"
                      }
                    ]
                  },
                  "documentation": "@notice The function to get the locked balance of a user.\n@param _addr The address of the user to check the locked balance.\n@return _balance The locked balance of the address `_addr`.",
                  "id": 26393,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLockedBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26384,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26383,
                        "name": "_addr",
                        "nodeType": "VariableDeclaration",
                        "scope": 26393,
                        "src": "14810:13:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26382,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14810:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14809:15:93"
                  },
                  "returnParameters": {
                    "id": 26387,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26386,
                        "name": "_balance",
                        "nodeType": "VariableDeclaration",
                        "scope": 26393,
                        "src": "14848:16:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26385,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14848:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14847:18:93"
                  },
                  "scope": 26418,
                  "src": "14784:118:93",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 26404,
                    "nodeType": "Block",
                    "src": "15201:38:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 26400,
                            "name": "unlockedBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25621,
                            "src": "15212:16:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 26402,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 26401,
                            "name": "_addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26395,
                            "src": "15229:5:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15212:23:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 26399,
                        "id": 26403,
                        "nodeType": "Return",
                        "src": "15205:30:93"
                      }
                    ]
                  },
                  "documentation": "@notice The function to get the unlocked balance of a user.\n@param _addr The address of the user to check the unlocked balance.\n@return _balance The unlocked balance of the address `_addr`.",
                  "id": 26405,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUnlockedBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26396,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26395,
                        "name": "_addr",
                        "nodeType": "VariableDeclaration",
                        "scope": 26405,
                        "src": "15145:13:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26394,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15145:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15144:15:93"
                  },
                  "returnParameters": {
                    "id": 26399,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26398,
                        "name": "_balance",
                        "nodeType": "VariableDeclaration",
                        "scope": 26405,
                        "src": "15183:16:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26397,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15183:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15182:18:93"
                  },
                  "scope": 26418,
                  "src": "15117:122:93",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 26416,
                    "nodeType": "Block",
                    "src": "15510:29:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 26412,
                            "name": "isAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25625,
                            "src": "15521:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 26414,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 26413,
                            "name": "_addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26407,
                            "src": "15529:5:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15521:14:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 26411,
                        "id": 26415,
                        "nodeType": "Return",
                        "src": "15514:21:93"
                      }
                    ]
                  },
                  "documentation": "@notice The function to check is an address is admin or not.\n@param _addr The address of the user to check the admin status.\n@return _status True if admin, False otherwise.",
                  "id": 26417,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "adminStatus",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26408,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26407,
                        "name": "_addr",
                        "nodeType": "VariableDeclaration",
                        "scope": 26417,
                        "src": "15458:13:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26406,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15458:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15457:15:93"
                  },
                  "returnParameters": {
                    "id": 26411,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26410,
                        "name": "_status",
                        "nodeType": "VariableDeclaration",
                        "scope": 26417,
                        "src": "15496:12:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26409,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15496:4:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15495:14:93"
                  },
                  "scope": 26418,
                  "src": "15437:102:93",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 26419,
              "src": "443:15098:93"
            }
          ],
          "src": "0:15542:93"
        },
        "id": 93
      },
      "contracts/mixins/EnumerableAddressSet.sol": {
        "ast": {
          "absolutePath": "contracts/mixins/EnumerableAddressSet.sol",
          "exportedSymbols": {
            "EnumerableAddressSet": [
              26724
            ]
          },
          "id": 26725,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 26420,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:94"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": "@dev Based on Library for managing\nhttps://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\ntypes.\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 * As of v2.5.0, only `address` sets are supported.\n * Include with `using EnumerableSet for EnumerableSet.AddressSet;`.\n * _Available since v2.5.0._",
              "fullyImplemented": true,
              "id": 26724,
              "linearizedBaseContracts": [
                26724
              ],
              "name": "EnumerableAddressSet",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "EnumerableAddressSet.AddressSet",
                  "id": 26428,
                  "members": [
                    {
                      "constant": false,
                      "id": 26424,
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "scope": 26428,
                      "src": "693:33:94",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "typeName": {
                        "id": 26423,
                        "keyType": {
                          "id": 26421,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "701:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "693:27:94",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        },
                        "valueType": {
                          "id": 26422,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "712:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 26427,
                      "name": "values",
                      "nodeType": "VariableDeclaration",
                      "scope": 26428,
                      "src": "730:16:94",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 26425,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "730:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 26426,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "730:9:94",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "AddressSet",
                  "nodeType": "StructDefinition",
                  "scope": 26724,
                  "src": "560:190:94",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 26461,
                    "nodeType": "Block",
                    "src": "931:129:94",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 26441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "939:21:94",
                          "subExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 26438,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26430,
                                "src": "949:3:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                  "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 26439,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26432,
                                "src": "954:5:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                  "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 26437,
                              "name": "contains",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26560,
                              "src": "940:8:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$26428_storage_ptr_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (struct EnumerableAddressSet.AddressSet storage pointer,address) view returns (bool)"
                              }
                            },
                            "id": 26440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "940:20:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 26459,
                          "nodeType": "Block",
                          "src": "1035:22:94",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 26457,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1047:5:94",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 26436,
                              "id": 26458,
                              "nodeType": "Return",
                              "src": "1040:12:94"
                            }
                          ]
                        },
                        "id": 26460,
                        "nodeType": "IfStatement",
                        "src": "935:122:94",
                        "trueBody": {
                          "id": 26456,
                          "nodeType": "Block",
                          "src": "962:67:94",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 26452,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26442,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26430,
                                      "src": "967:3:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                        "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                      }
                                    },
                                    "id": 26445,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "index",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26424,
                                    "src": "967:9:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 26446,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 26444,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26432,
                                    "src": "977:5:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "967:16:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 26450,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26432,
                                      "src": "1002:5:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 26447,
                                        "name": "set",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 26430,
                                        "src": "986:3:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                          "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                        }
                                      },
                                      "id": 26448,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "values",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 26427,
                                      "src": "986:10:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                        "typeString": "address[] storage ref"
                                      }
                                    },
                                    "id": 26449,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "push",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "986:15:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) returns (uint256)"
                                    }
                                  },
                                  "id": 26451,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "986:22:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "967:41:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 26453,
                              "nodeType": "ExpressionStatement",
                              "src": "967:41:94"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 26454,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1020:4:94",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 26436,
                              "id": 26455,
                              "nodeType": "Return",
                              "src": "1013:11:94"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@dev Add a value to a set. O(1).\nReturns false if the value was already in the set.",
                  "id": 26462,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26430,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 26462,
                        "src": "868:22:94",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                          "typeString": "struct EnumerableAddressSet.AddressSet"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26429,
                          "name": "AddressSet",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26428,
                          "src": "868:10:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                            "typeString": "struct EnumerableAddressSet.AddressSet"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26432,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 26462,
                        "src": "892:13:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26431,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "892:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "867:39:94"
                  },
                  "returnParameters": {
                    "id": 26436,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26435,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 26462,
                        "src": "925:4:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26434,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "925:4:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "924:6:94"
                  },
                  "scope": 26724,
                  "src": "855:205:94",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26542,
                    "nodeType": "Block",
                    "src": "1254:741:94",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26472,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26464,
                              "src": "1271:3:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26473,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26466,
                              "src": "1276:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 26471,
                            "name": "contains",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26560,
                            "src": "1262:8:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$26428_storage_ptr_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (struct EnumerableAddressSet.AddressSet storage pointer,address) view returns (bool)"
                            }
                          },
                          "id": 26474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1262:20:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 26540,
                          "nodeType": "Block",
                          "src": "1970:22:94",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 26538,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1982:5:94",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 26470,
                              "id": 26539,
                              "nodeType": "Return",
                              "src": "1975:12:94"
                            }
                          ]
                        },
                        "id": 26541,
                        "nodeType": "IfStatement",
                        "src": "1258:734:94",
                        "trueBody": {
                          "id": 26537,
                          "nodeType": "Block",
                          "src": "1284:680:94",
                          "statements": [
                            {
                              "assignments": [
                                26476
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 26476,
                                  "name": "toDeleteIndex",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 26537,
                                  "src": "1289:21:94",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 26475,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1289:7:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 26483,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 26482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26477,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26464,
                                      "src": "1313:3:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                        "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                      }
                                    },
                                    "id": 26478,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "index",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26424,
                                    "src": "1313:9:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 26480,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 26479,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26466,
                                    "src": "1323:5:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1313:16:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 26481,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1332:1:94",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "1313:20:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1289:44:94"
                            },
                            {
                              "assignments": [
                                26485
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 26485,
                                  "name": "lastIndex",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 26537,
                                  "src": "1338:17:94",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 26484,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1338:7:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 26491,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 26490,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26486,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26464,
                                      "src": "1358:3:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                        "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                      }
                                    },
                                    "id": 26487,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "values",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26427,
                                    "src": "1358:10:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 26488,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1358:17:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 26489,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1378:1:94",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "1358:21:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1338:41:94"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 26494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 26492,
                                  "name": "lastIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26485,
                                  "src": "1485:9:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 26493,
                                  "name": "toDeleteIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26476,
                                  "src": "1498:13:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1485:26:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 26521,
                              "nodeType": "IfStatement",
                              "src": "1481:313:94",
                              "trueBody": {
                                "id": 26520,
                                "nodeType": "Block",
                                "src": "1513:281:94",
                                "statements": [
                                  {
                                    "assignments": [
                                      26496
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 26496,
                                        "name": "lastValue",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 26520,
                                        "src": "1519:17:94",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "typeName": {
                                          "id": 26495,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1519:7:94",
                                          "stateMutability": "nonpayable",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 26501,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 26497,
                                          "name": "set",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 26464,
                                          "src": "1539:3:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                            "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                          }
                                        },
                                        "id": 26498,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "values",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 26427,
                                        "src": "1539:10:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                          "typeString": "address[] storage ref"
                                        }
                                      },
                                      "id": 26500,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 26499,
                                        "name": "lastIndex",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 26485,
                                        "src": "1550:9:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1539:21:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1519:41:94"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26508,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 26502,
                                            "name": "set",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 26464,
                                            "src": "1634:3:94",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                              "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                            }
                                          },
                                          "id": 26505,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "values",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 26427,
                                          "src": "1634:10:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 26506,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 26504,
                                          "name": "toDeleteIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 26476,
                                          "src": "1645:13:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "1634:25:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 26507,
                                        "name": "lastValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 26496,
                                        "src": "1662:9:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "1634:37:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 26509,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1634:37:94"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26518,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 26510,
                                            "name": "set",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 26464,
                                            "src": "1721:3:94",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                              "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                            }
                                          },
                                          "id": 26513,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "index",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 26424,
                                          "src": "1721:9:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 26514,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 26512,
                                          "name": "lastValue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 26496,
                                          "src": "1731:9:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "1721:20:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 26517,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 26515,
                                          "name": "toDeleteIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 26476,
                                          "src": "1744:13:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 26516,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1760:1:94",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "1744:17:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1721:40:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 26519,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1721:40:94"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 26526,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "1850:23:94",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26522,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26464,
                                      "src": "1857:3:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                        "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                      }
                                    },
                                    "id": 26523,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "index",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26424,
                                    "src": "1857:9:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 26525,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 26524,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26466,
                                    "src": "1867:5:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1857:16:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 26527,
                              "nodeType": "ExpressionStatement",
                              "src": "1850:23:94"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26528,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26464,
                                      "src": "1926:3:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                        "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                      }
                                    },
                                    "id": 26531,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "values",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26427,
                                    "src": "1926:10:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 26532,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pop",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1926:14:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 26533,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1926:16:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 26534,
                              "nodeType": "ExpressionStatement",
                              "src": "1926:16:94"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 26535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1955:4:94",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 26470,
                              "id": 26536,
                              "nodeType": "Return",
                              "src": "1948:11:94"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@dev Removes a value from a set. O(1).\nReturns false if the value was not present in the set.",
                  "id": 26543,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "remove",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26467,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26464,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 26543,
                        "src": "1191:22:94",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                          "typeString": "struct EnumerableAddressSet.AddressSet"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26463,
                          "name": "AddressSet",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26428,
                          "src": "1191:10:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                            "typeString": "struct EnumerableAddressSet.AddressSet"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26466,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 26543,
                        "src": "1215:13:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26465,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1215:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1190:39:94"
                  },
                  "returnParameters": {
                    "id": 26470,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26469,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 26543,
                        "src": "1248:4:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26468,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1248:4:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1247:6:94"
                  },
                  "scope": 26724,
                  "src": "1175:820:94",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26559,
                    "nodeType": "Block",
                    "src": "2150:36:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 26557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26552,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26545,
                                "src": "2161:3:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                  "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                }
                              },
                              "id": 26553,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "index",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26424,
                              "src": "2161:9:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 26555,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 26554,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26547,
                              "src": "2171:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2161:16:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 26556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2181:1:94",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2161:21:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 26551,
                        "id": 26558,
                        "nodeType": "Return",
                        "src": "2154:28:94"
                      }
                    ]
                  },
                  "documentation": "@dev Returns true if the value is in the set. O(1).",
                  "id": 26560,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contains",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26548,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26545,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 26560,
                        "src": "2082:22:94",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                          "typeString": "struct EnumerableAddressSet.AddressSet"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26544,
                          "name": "AddressSet",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26428,
                          "src": "2082:10:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                            "typeString": "struct EnumerableAddressSet.AddressSet"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26547,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 26560,
                        "src": "2106:13:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26546,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2106:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2081:39:94"
                  },
                  "returnParameters": {
                    "id": 26551,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26550,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 26560,
                        "src": "2144:4:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26549,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2144:4:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2143:6:94"
                  },
                  "scope": 26724,
                  "src": "2064:122:94",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26604,
                    "nodeType": "Block",
                    "src": "2617:165:94",
                    "statements": [
                      {
                        "assignments": [
                          26571
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26571,
                            "name": "output",
                            "nodeType": "VariableDeclaration",
                            "scope": 26604,
                            "src": "2621:23:94",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 26569,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2621:7:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 26570,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2621:9:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26579,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 26575,
                                  "name": "set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26562,
                                  "src": "2661:3:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                    "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                  }
                                },
                                "id": 26576,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "values",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 26427,
                                "src": "2661:10:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 26577,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2661:17:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 26574,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2647:13:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 26572,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2651:7:94",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 26573,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2651:9:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 26578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2647:32:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2621:58:94"
                      },
                      {
                        "body": {
                          "id": 26600,
                          "nodeType": "Block",
                          "src": "2727:35:94",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 26598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 26591,
                                    "name": "output",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26571,
                                    "src": "2732:6:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 26593,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 26592,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26581,
                                    "src": "2739:1:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2732:9:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26594,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26562,
                                      "src": "2744:3:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                        "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                      }
                                    },
                                    "id": 26595,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "values",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26427,
                                    "src": "2744:10:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 26597,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 26596,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26581,
                                    "src": "2755:1:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2744:13:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2732:25:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 26599,
                              "nodeType": "ExpressionStatement",
                              "src": "2732:25:94"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 26587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 26583,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26581,
                            "src": "2699:1:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26584,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26562,
                                "src": "2703:3:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                  "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                }
                              },
                              "id": 26585,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26427,
                              "src": "2703:10:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 26586,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2703:17:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2699:21:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 26601,
                        "initializationExpression": {
                          "assignments": [
                            26581
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 26581,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 26601,
                              "src": "2688:9:94",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 26580,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2688:7:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 26582,
                          "initialValue": null,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2688:9:94"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 26589,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2722:3:94",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 26588,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26581,
                              "src": "2722:1:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 26590,
                          "nodeType": "ExpressionStatement",
                          "src": "2722:3:94"
                        },
                        "nodeType": "ForStatement",
                        "src": "2683:79:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26602,
                          "name": "output",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26571,
                          "src": "2772:6:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 26567,
                        "id": 26603,
                        "nodeType": "Return",
                        "src": "2765:13:94"
                      }
                    ]
                  },
                  "documentation": "@dev Returns an array with all values in the set. O(N).\nNote that there are no guarantees on the ordering of values inside the\narray, and it may change when more values are added or removed.\nWARNING: This function may run out of gas on large sets: use {length} and\n{get} instead in these cases.",
                  "id": 26605,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "enumerate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26563,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26562,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 26605,
                        "src": "2552:22:94",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                          "typeString": "struct EnumerableAddressSet.AddressSet"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26561,
                          "name": "AddressSet",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26428,
                          "src": "2552:10:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                            "typeString": "struct EnumerableAddressSet.AddressSet"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2551:24:94"
                  },
                  "returnParameters": {
                    "id": 26567,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26566,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 26605,
                        "src": "2599:16:94",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 26564,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2599:7:94",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 26565,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2599:9:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2598:18:94"
                  },
                  "scope": 26724,
                  "src": "2533:249:94",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26695,
                    "nodeType": "Block",
                    "src": "3452:353:94",
                    "statements": [
                      {
                        "assignments": [
                          26618
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26618,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 26695,
                            "src": "3456:11:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 26617,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3456:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26622,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 26621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 26619,
                            "name": "start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26609,
                            "src": "3470:5:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 26620,
                            "name": "count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26611,
                            "src": "3478:5:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3470:13:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3456:27:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 26626,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 26624,
                                "name": "end",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26618,
                                "src": "3495:3:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 26625,
                                "name": "start",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26609,
                                "src": "3502:5:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3495:12:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6164646974696f6e206f766572666c6f77",
                              "id": 26627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3509:19:94",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8c0d96e929759368d857f737222dcb6a5217a09dbc29c3e61addc531fdea00f5",
                                "typeString": "literal_string \"addition overflow\""
                              },
                              "value": "addition overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8c0d96e929759368d857f737222dcb6a5217a09dbc29c3e61addc531fdea00f5",
                                "typeString": "literal_string \"addition overflow\""
                              }
                            ],
                            "id": 26623,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3487:7:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 26628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3487:42:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26629,
                        "nodeType": "ExpressionStatement",
                        "src": "3487:42:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 26630,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26618,
                            "src": "3533:3:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 26639,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 26635,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 26631,
                                          "name": "set",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 26607,
                                          "src": "3540:3:94",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                            "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                          }
                                        },
                                        "id": 26632,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "values",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 26427,
                                        "src": "3540:10:94",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                          "typeString": "address[] storage ref"
                                        }
                                      },
                                      "id": 26633,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "3540:17:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 26634,
                                      "name": "end",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26618,
                                      "src": "3560:3:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3540:23:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 26638,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 26636,
                                      "name": "count",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26611,
                                      "src": "3567:5:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 26637,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3576:1:94",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "3567:10:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "3540:37:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 26640,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3539:39:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 26644,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26618,
                              "src": "3601:3:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 26645,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "3539:65:94",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 26641,
                                  "name": "set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26607,
                                  "src": "3581:3:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                    "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                  }
                                },
                                "id": 26642,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "values",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 26427,
                                "src": "3581:10:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 26643,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3581:17:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3533:71:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 26647,
                        "nodeType": "ExpressionStatement",
                        "src": "3533:71:94"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 26654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 26650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 26648,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26618,
                              "src": "3612:3:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 26649,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3619:1:94",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3612:8:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 26653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 26651,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26609,
                              "src": "3624:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 26652,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26618,
                              "src": "3633:3:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3624:12:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3612:24:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 26658,
                        "nodeType": "IfStatement",
                        "src": "3608:53:94",
                        "trueBody": {
                          "id": 26657,
                          "nodeType": "Block",
                          "src": "3638:23:94",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 26655,
                                "name": "output",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26615,
                                "src": "3650:6:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "functionReturnParameters": 26616,
                              "id": 26656,
                              "nodeType": "Return",
                              "src": "3643:13:94"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 26659,
                            "name": "output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26615,
                            "src": "3665:6:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 26665,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 26663,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26618,
                                  "src": "3688:3:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 26664,
                                  "name": "start",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26609,
                                  "src": "3694:5:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3688:11:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 26662,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "3674:13:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (address[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 26660,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3678:7:94",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 26661,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "3678:9:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                  "typeString": "address[]"
                                }
                              }
                            },
                            "id": 26666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3674:26:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "3665:35:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 26668,
                        "nodeType": "ExpressionStatement",
                        "src": "3665:35:94"
                      },
                      {
                        "body": {
                          "id": 26691,
                          "nodeType": "Block",
                          "src": "3742:43:94",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 26689,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 26680,
                                    "name": "output",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26615,
                                    "src": "3747:6:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 26682,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 26681,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26670,
                                    "src": "3754:1:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3747:9:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26683,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26607,
                                      "src": "3759:3:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                        "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                                      }
                                    },
                                    "id": 26684,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "values",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26427,
                                    "src": "3759:10:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 26688,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 26687,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 26685,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26670,
                                      "src": "3770:1:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 26686,
                                      "name": "start",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26609,
                                      "src": "3774:5:94",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3770:9:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3759:21:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3747:33:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 26690,
                              "nodeType": "ExpressionStatement",
                              "src": "3747:33:94"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 26676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 26672,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26670,
                            "src": "3720:1:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 26675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 26673,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26618,
                              "src": "3724:3:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 26674,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26609,
                              "src": "3730:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3724:11:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3720:15:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 26692,
                        "initializationExpression": {
                          "assignments": [
                            26670
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 26670,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 26692,
                              "src": "3709:9:94",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 26669,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3709:7:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 26671,
                          "initialValue": null,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3709:9:94"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 26678,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3737:3:94",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 26677,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26670,
                              "src": "3737:1:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 26679,
                          "nodeType": "ExpressionStatement",
                          "src": "3737:3:94"
                        },
                        "nodeType": "ForStatement",
                        "src": "3704:81:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26693,
                          "name": "output",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26615,
                          "src": "3795:6:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 26616,
                        "id": 26694,
                        "nodeType": "Return",
                        "src": "3788:13:94"
                      }
                    ]
                  },
                  "documentation": "@dev Returns a chunk of array as recommended in enumerate() to avoid running of gas.\nNote that there are no guarantees on the ordering of values inside the\narray, and it may change when more values are added or removed.\nWARNING: This function may run out of gas on large sets: use {length} and\n{get} instead in these cases.\n@param start start index of chunk\n@param count num of element to return; if count == 0 then returns all the elements from the @param start",
                  "id": 26696,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "enumerateChunk",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26612,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26607,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 26696,
                        "src": "3344:22:94",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                          "typeString": "struct EnumerableAddressSet.AddressSet"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26606,
                          "name": "AddressSet",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26428,
                          "src": "3344:10:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                            "typeString": "struct EnumerableAddressSet.AddressSet"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26609,
                        "name": "start",
                        "nodeType": "VariableDeclaration",
                        "scope": 26696,
                        "src": "3370:13:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26608,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3370:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26611,
                        "name": "count",
                        "nodeType": "VariableDeclaration",
                        "scope": 26696,
                        "src": "3387:13:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26610,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3387:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3340:63:94"
                  },
                  "returnParameters": {
                    "id": 26616,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26615,
                        "name": "output",
                        "nodeType": "VariableDeclaration",
                        "scope": 26696,
                        "src": "3427:23:94",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 26613,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3427:7:94",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 26614,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3427:9:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3426:25:94"
                  },
                  "scope": 26724,
                  "src": "3317:488:94",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26707,
                    "nodeType": "Block",
                    "src": "3948:32:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 26703,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26698,
                              "src": "3959:3:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                              }
                            },
                            "id": 26704,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "values",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 26427,
                            "src": "3959:10:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 26705,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3959:17:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 26702,
                        "id": 26706,
                        "nodeType": "Return",
                        "src": "3952:24:94"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the number of elements on the set. O(1).",
                  "id": 26708,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "length",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26699,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26698,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 26708,
                        "src": "3892:22:94",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                          "typeString": "struct EnumerableAddressSet.AddressSet"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26697,
                          "name": "AddressSet",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26428,
                          "src": "3892:10:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                            "typeString": "struct EnumerableAddressSet.AddressSet"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3891:24:94"
                  },
                  "returnParameters": {
                    "id": 26702,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26701,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 26708,
                        "src": "3939:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26700,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3939:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3938:9:94"
                  },
                  "scope": 26724,
                  "src": "3876:104:94",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26722,
                    "nodeType": "Block",
                    "src": "4367:32:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 26717,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26710,
                              "src": "4378:3:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                                "typeString": "struct EnumerableAddressSet.AddressSet storage pointer"
                              }
                            },
                            "id": 26718,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "values",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 26427,
                            "src": "4378:10:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 26720,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 26719,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26712,
                            "src": "4389:5:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4378:17:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 26716,
                        "id": 26721,
                        "nodeType": "Return",
                        "src": "4371:24:94"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the element stored at position `index` in the set. O(1).\nNote that there are no guarantees on the ordering of values inside the\narray, and it may change when more values are added or removed.\n\t * Requirements:\n\t * - `index` must be strictly less than {length}.",
                  "id": 26723,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "get",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26713,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26710,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 26723,
                        "src": "4296:22:94",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                          "typeString": "struct EnumerableAddressSet.AddressSet"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26709,
                          "name": "AddressSet",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26428,
                          "src": "4296:10:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$26428_storage_ptr",
                            "typeString": "struct EnumerableAddressSet.AddressSet"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26712,
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "scope": 26723,
                        "src": "4320:13:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26711,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4320:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4295:39:94"
                  },
                  "returnParameters": {
                    "id": 26716,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26715,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 26723,
                        "src": "4358:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26714,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4358:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4357:9:94"
                  },
                  "scope": 26724,
                  "src": "4283:116:94",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 26725,
              "src": "528:3873:94"
            }
          ],
          "src": "0:4402:94"
        },
        "id": 94
      },
      "contracts/mixins/EnumerableBytes32Set.sol": {
        "ast": {
          "absolutePath": "contracts/mixins/EnumerableBytes32Set.sol",
          "exportedSymbols": {
            "EnumerableBytes32Set": [
              27039
            ]
          },
          "id": 27040,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 26726,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:95"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": "@title Library for managing loan sets.\n * @notice 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 * Include with `using EnumerableBytes32Set for EnumerableBytes32Set.Bytes32Set;`.\n",
              "fullyImplemented": true,
              "id": 27039,
              "linearizedBaseContracts": [
                27039
              ],
              "name": "EnumerableBytes32Set",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "EnumerableBytes32Set.Bytes32Set",
                  "id": 26734,
                  "members": [
                    {
                      "constant": false,
                      "id": 26730,
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "scope": 26734,
                      "src": "667:33:95",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      },
                      "typeName": {
                        "id": 26729,
                        "keyType": {
                          "id": 26727,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "675:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "667:27:95",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        },
                        "valueType": {
                          "id": 26728,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "686:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 26733,
                      "name": "values",
                      "nodeType": "VariableDeclaration",
                      "scope": 26734,
                      "src": "704:16:95",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 26731,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "704:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 26732,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "704:9:95",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "Bytes32Set",
                  "nodeType": "StructDefinition",
                  "scope": 27039,
                  "src": "532:192:95",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 26752,
                    "nodeType": "Block",
                    "src": "1011:93:95",
                    "statements": [
                      {
                        "assignments": [
                          26744
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26744,
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "scope": 26752,
                            "src": "1015:13:95",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 26743,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1015:7:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26745,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1015:13:95"
                      },
                      {
                        "externalReferences": [
                          {
                            "value": {
                              "declaration": 26744,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1046:5:95",
                              "valueSize": 1
                            }
                          },
                          {
                            "addrvalue": {
                              "declaration": 26738,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1055:9:95",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 26746,
                        "nodeType": "InlineAssembly",
                        "operations": "{ value := addrvalue }",
                        "src": "1032:36:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26748,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26736,
                              "src": "1089:3:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26749,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26744,
                              "src": "1094:5:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 26747,
                            "name": "addBytes32",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26787,
                            "src": "1078:10:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                            }
                          },
                          "id": 26750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1078:22:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 26742,
                        "id": 26751,
                        "nodeType": "Return",
                        "src": "1071:29:95"
                      }
                    ]
                  },
                  "documentation": "@notice Add an address value to a set. O(1).\n\t * @param set The set of values.\n@param addrvalue The address to add.\n\t * @return False if the value was already in the set.",
                  "id": 26753,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26739,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26736,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 26753,
                        "src": "944:22:95",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                          "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26735,
                          "name": "Bytes32Set",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26734,
                          "src": "944:10:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                            "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26738,
                        "name": "addrvalue",
                        "nodeType": "VariableDeclaration",
                        "scope": 26753,
                        "src": "968:17:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26737,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "968:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "943:43:95"
                  },
                  "returnParameters": {
                    "id": 26742,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26741,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 26753,
                        "src": "1005:4:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26740,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1005:4:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1004:6:95"
                  },
                  "scope": 27039,
                  "src": "924:180:95",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26786,
                    "nodeType": "Block",
                    "src": "1376:129:95",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 26766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "1384:21:95",
                          "subExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 26763,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26755,
                                "src": "1394:3:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                  "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 26764,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26757,
                                "src": "1399:5:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                  "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 26762,
                              "name": "contains",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26904,
                              "src": "1385:8:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                                "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) view returns (bool)"
                              }
                            },
                            "id": 26765,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1385:20:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 26784,
                          "nodeType": "Block",
                          "src": "1480:22:95",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 26782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1492:5:95",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 26761,
                              "id": 26783,
                              "nodeType": "Return",
                              "src": "1485:12:95"
                            }
                          ]
                        },
                        "id": 26785,
                        "nodeType": "IfStatement",
                        "src": "1380:122:95",
                        "trueBody": {
                          "id": 26781,
                          "nodeType": "Block",
                          "src": "1407:67:95",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 26777,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26767,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26755,
                                      "src": "1412:3:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                        "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                      }
                                    },
                                    "id": 26770,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "index",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26730,
                                    "src": "1412:9:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                      "typeString": "mapping(bytes32 => uint256)"
                                    }
                                  },
                                  "id": 26771,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 26769,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26757,
                                    "src": "1422:5:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1412:16:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 26775,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26757,
                                      "src": "1447:5:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 26772,
                                        "name": "set",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 26755,
                                        "src": "1431:3:95",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                          "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                        }
                                      },
                                      "id": 26773,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "values",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 26733,
                                      "src": "1431:10:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                        "typeString": "bytes32[] storage ref"
                                      }
                                    },
                                    "id": 26774,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "push",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "1431:15:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                                      "typeString": "function (bytes32) returns (uint256)"
                                    }
                                  },
                                  "id": 26776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1431:22:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1412:41:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 26778,
                              "nodeType": "ExpressionStatement",
                              "src": "1412:41:95"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 26779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1465:4:95",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 26761,
                              "id": 26780,
                              "nodeType": "Return",
                              "src": "1458:11:95"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Add a value to a set. O(1).\n\t * @param set The set of values.\n@param value The new value to add.\n\t * @return False if the value was already in the set.",
                  "id": 26787,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addBytes32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26758,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26755,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 26787,
                        "src": "1313:22:95",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                          "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26754,
                          "name": "Bytes32Set",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26734,
                          "src": "1313:10:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                            "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26757,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 26787,
                        "src": "1337:13:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 26756,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1337:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1312:39:95"
                  },
                  "returnParameters": {
                    "id": 26761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26760,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 26787,
                        "src": "1370:4:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26759,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1370:4:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1369:6:95"
                  },
                  "scope": 27039,
                  "src": "1293:212:95",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26805,
                    "nodeType": "Block",
                    "src": "1809:96:95",
                    "statements": [
                      {
                        "assignments": [
                          26797
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26797,
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "scope": 26805,
                            "src": "1813:13:95",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 26796,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1813:7:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26798,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1813:13:95"
                      },
                      {
                        "externalReferences": [
                          {
                            "value": {
                              "declaration": 26797,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1844:5:95",
                              "valueSize": 1
                            }
                          },
                          {
                            "addrvalue": {
                              "declaration": 26791,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1853:9:95",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 26799,
                        "nodeType": "InlineAssembly",
                        "operations": "{ value := addrvalue }",
                        "src": "1830:36:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26801,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26789,
                              "src": "1890:3:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26802,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26797,
                              "src": "1895:5:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 26800,
                            "name": "removeBytes32",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26887,
                            "src": "1876:13:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                            }
                          },
                          "id": 26803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1876:25:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 26795,
                        "id": 26804,
                        "nodeType": "Return",
                        "src": "1869:32:95"
                      }
                    ]
                  },
                  "documentation": "@notice Remove an address value from a set. O(1).\n\t * @param set The set of values.\n@param addrvalue The address to remove.\n\t * @return False if the address was not present in the set.",
                  "id": 26806,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26792,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26789,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 26806,
                        "src": "1742:22:95",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                          "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26788,
                          "name": "Bytes32Set",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26734,
                          "src": "1742:10:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                            "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26791,
                        "name": "addrvalue",
                        "nodeType": "VariableDeclaration",
                        "scope": 26806,
                        "src": "1766:17:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26790,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1766:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1741:43:95"
                  },
                  "returnParameters": {
                    "id": 26795,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26794,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 26806,
                        "src": "1803:4:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26793,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1803:4:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1802:6:95"
                  },
                  "scope": 27039,
                  "src": "1719:186:95",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26886,
                    "nodeType": "Block",
                    "src": "2188:759:95",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26816,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26808,
                              "src": "2205:3:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26817,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26810,
                              "src": "2210:5:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 26815,
                            "name": "contains",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26904,
                            "src": "2196:8:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) view returns (bool)"
                            }
                          },
                          "id": 26818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2196:20:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 26884,
                          "nodeType": "Block",
                          "src": "2922:22:95",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 26882,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2934:5:95",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 26814,
                              "id": 26883,
                              "nodeType": "Return",
                              "src": "2927:12:95"
                            }
                          ]
                        },
                        "id": 26885,
                        "nodeType": "IfStatement",
                        "src": "2192:752:95",
                        "trueBody": {
                          "id": 26881,
                          "nodeType": "Block",
                          "src": "2218:698:95",
                          "statements": [
                            {
                              "assignments": [
                                26820
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 26820,
                                  "name": "toDeleteIndex",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 26881,
                                  "src": "2223:21:95",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 26819,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2223:7:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 26827,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 26826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26821,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26808,
                                      "src": "2247:3:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                        "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                      }
                                    },
                                    "id": 26822,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "index",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26730,
                                    "src": "2247:9:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                      "typeString": "mapping(bytes32 => uint256)"
                                    }
                                  },
                                  "id": 26824,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 26823,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26810,
                                    "src": "2257:5:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2247:16:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 26825,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2266:1:95",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "2247:20:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2223:44:95"
                            },
                            {
                              "assignments": [
                                26829
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 26829,
                                  "name": "lastIndex",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 26881,
                                  "src": "2272:17:95",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 26828,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2272:7:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 26835,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 26834,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26830,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26808,
                                      "src": "2292:3:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                        "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                      }
                                    },
                                    "id": 26831,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "values",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26733,
                                    "src": "2292:10:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 26832,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2292:17:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 26833,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2312:1:95",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "2292:21:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2272:41:95"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 26838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 26836,
                                  "name": "lastIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26829,
                                  "src": "2428:9:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 26837,
                                  "name": "toDeleteIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26820,
                                  "src": "2441:13:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2428:26:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 26865,
                              "nodeType": "IfStatement",
                              "src": "2424:318:95",
                              "trueBody": {
                                "id": 26864,
                                "nodeType": "Block",
                                "src": "2456:286:95",
                                "statements": [
                                  {
                                    "assignments": [
                                      26840
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 26840,
                                        "name": "lastValue",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 26864,
                                        "src": "2462:17:95",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "typeName": {
                                          "id": 26839,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2462:7:95",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 26845,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 26841,
                                          "name": "set",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 26808,
                                          "src": "2482:3:95",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                            "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                          }
                                        },
                                        "id": 26842,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "values",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 26733,
                                        "src": "2482:10:95",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                          "typeString": "bytes32[] storage ref"
                                        }
                                      },
                                      "id": 26844,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 26843,
                                        "name": "lastIndex",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 26829,
                                        "src": "2493:9:95",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2482:21:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2462:41:95"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26852,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 26846,
                                            "name": "set",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 26808,
                                            "src": "2579:3:95",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                              "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                            }
                                          },
                                          "id": 26849,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "values",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 26733,
                                          "src": "2579:10:95",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                            "typeString": "bytes32[] storage ref"
                                          }
                                        },
                                        "id": 26850,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 26848,
                                          "name": "toDeleteIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 26820,
                                          "src": "2590:13:95",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "2579:25:95",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 26851,
                                        "name": "lastValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 26840,
                                        "src": "2607:9:95",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "2579:37:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 26853,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2579:37:95"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26862,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 26854,
                                            "name": "set",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 26808,
                                            "src": "2669:3:95",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                              "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                            }
                                          },
                                          "id": 26857,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "index",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 26730,
                                          "src": "2669:9:95",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                            "typeString": "mapping(bytes32 => uint256)"
                                          }
                                        },
                                        "id": 26858,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 26856,
                                          "name": "lastValue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 26840,
                                          "src": "2679:9:95",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "2669:20:95",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 26861,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 26859,
                                          "name": "toDeleteIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 26820,
                                          "src": "2692:13:95",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 26860,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2708:1:95",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "2692:17:95",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2669:40:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 26863,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2669:40:95"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 26870,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "2800:23:95",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26866,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26808,
                                      "src": "2807:3:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                        "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                      }
                                    },
                                    "id": 26867,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "index",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26730,
                                    "src": "2807:9:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                      "typeString": "mapping(bytes32 => uint256)"
                                    }
                                  },
                                  "id": 26869,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 26868,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26810,
                                    "src": "2817:5:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2807:16:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 26871,
                              "nodeType": "ExpressionStatement",
                              "src": "2800:23:95"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26872,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26808,
                                      "src": "2878:3:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                        "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                      }
                                    },
                                    "id": 26875,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "values",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26733,
                                    "src": "2878:10:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 26876,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pop",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2878:14:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 26877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2878:16:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 26878,
                              "nodeType": "ExpressionStatement",
                              "src": "2878:16:95"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 26879,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2907:4:95",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 26814,
                              "id": 26880,
                              "nodeType": "Return",
                              "src": "2900:11:95"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Remove a value from a set. O(1).\n\t * @param set The set of values.\n@param value The value to remove.\n\t * @return False if the value was not present in the set.",
                  "id": 26887,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeBytes32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26811,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26808,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 26887,
                        "src": "2125:22:95",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                          "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26807,
                          "name": "Bytes32Set",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26734,
                          "src": "2125:10:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                            "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26810,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 26887,
                        "src": "2149:13:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 26809,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2149:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2124:39:95"
                  },
                  "returnParameters": {
                    "id": 26814,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26813,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 26887,
                        "src": "2182:4:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26812,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2182:4:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2181:6:95"
                  },
                  "scope": 27039,
                  "src": "2102:845:95",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26903,
                    "nodeType": "Block",
                    "src": "3231:36:95",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 26901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26896,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26889,
                                "src": "3242:3:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                  "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                }
                              },
                              "id": 26897,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "index",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26730,
                              "src": "3242:9:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 26899,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 26898,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26891,
                              "src": "3252:5:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3242:16:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 26900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3262:1:95",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3242:21:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 26895,
                        "id": 26902,
                        "nodeType": "Return",
                        "src": "3235:28:95"
                      }
                    ]
                  },
                  "documentation": "@notice Find out whether a value exists in the set.\n\t * @param set The set of values.\n@param value The value to find.\n\t * @return True if the value is in the set. O(1).",
                  "id": 26904,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "contains",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26892,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26889,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 26904,
                        "src": "3163:22:95",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                          "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26888,
                          "name": "Bytes32Set",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26734,
                          "src": "3163:10:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                            "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26891,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 26904,
                        "src": "3187:13:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 26890,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3187:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3162:39:95"
                  },
                  "returnParameters": {
                    "id": 26895,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26894,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 26904,
                        "src": "3225:4:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26893,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3225:4:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3224:6:95"
                  },
                  "scope": 27039,
                  "src": "3145:122:95",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26924,
                    "nodeType": "Block",
                    "src": "3433:92:95",
                    "statements": [
                      {
                        "assignments": [
                          26914
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26914,
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "scope": 26924,
                            "src": "3437:13:95",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 26913,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3437:7:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26915,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3437:13:95"
                      },
                      {
                        "externalReferences": [
                          {
                            "value": {
                              "declaration": 26914,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "3468:5:95",
                              "valueSize": 1
                            }
                          },
                          {
                            "addrvalue": {
                              "declaration": 26908,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "3477:9:95",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 26916,
                        "nodeType": "InlineAssembly",
                        "operations": "{ value := addrvalue }",
                        "src": "3454:36:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 26922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26917,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26906,
                                "src": "3500:3:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                  "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                }
                              },
                              "id": 26918,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "index",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26730,
                              "src": "3500:9:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 26920,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 26919,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26914,
                              "src": "3510:5:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3500:16:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 26921,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3520:1:95",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3500:21:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 26912,
                        "id": 26923,
                        "nodeType": "Return",
                        "src": "3493:28:95"
                      }
                    ]
                  },
                  "documentation": "@dev Returns true if the value is in the set. O(1).",
                  "id": 26925,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "containsAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26909,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26906,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 26925,
                        "src": "3361:22:95",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                          "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26905,
                          "name": "Bytes32Set",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26734,
                          "src": "3361:10:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                            "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26908,
                        "name": "addrvalue",
                        "nodeType": "VariableDeclaration",
                        "scope": 26925,
                        "src": "3385:17:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26907,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3385:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3360:43:95"
                  },
                  "returnParameters": {
                    "id": 26912,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26911,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 26925,
                        "src": "3427:4:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26910,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3427:4:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3426:6:95"
                  },
                  "scope": 27039,
                  "src": "3336:189:95",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27010,
                    "nodeType": "Block",
                    "src": "4173:337:95",
                    "statements": [
                      {
                        "assignments": [
                          26938
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26938,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 27010,
                            "src": "4177:11:95",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 26937,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4177:7:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26942,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 26941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 26939,
                            "name": "start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26929,
                            "src": "4191:5:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 26940,
                            "name": "count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26931,
                            "src": "4199:5:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4191:13:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4177:27:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 26946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 26944,
                                "name": "end",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26938,
                                "src": "4216:3:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 26945,
                                "name": "start",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26929,
                                "src": "4223:5:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4216:12:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6164646974696f6e206f766572666c6f77",
                              "id": 26947,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4230:19:95",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8c0d96e929759368d857f737222dcb6a5217a09dbc29c3e61addc531fdea00f5",
                                "typeString": "literal_string \"addition overflow\""
                              },
                              "value": "addition overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8c0d96e929759368d857f737222dcb6a5217a09dbc29c3e61addc531fdea00f5",
                                "typeString": "literal_string \"addition overflow\""
                              }
                            ],
                            "id": 26943,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4208:7:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 26948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4208:42:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26949,
                        "nodeType": "ExpressionStatement",
                        "src": "4208:42:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 26950,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26938,
                            "src": "4254:3:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 26955,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26951,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26927,
                                    "src": "4260:3:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                      "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                    }
                                  },
                                  "id": 26952,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "values",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26733,
                                  "src": "4260:10:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                    "typeString": "bytes32[] storage ref"
                                  }
                                },
                                "id": 26953,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4260:17:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 26954,
                                "name": "end",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26938,
                                "src": "4280:3:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4260:23:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 26959,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26938,
                              "src": "4306:3:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 26960,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "4260:49:95",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 26956,
                                  "name": "set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26927,
                                  "src": "4286:3:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                    "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                  }
                                },
                                "id": 26957,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "values",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 26733,
                                "src": "4286:10:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                  "typeString": "bytes32[] storage ref"
                                }
                              },
                              "id": 26958,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4286:17:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4254:55:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 26962,
                        "nodeType": "ExpressionStatement",
                        "src": "4254:55:95"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 26969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 26965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 26963,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26938,
                              "src": "4317:3:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 26964,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4324:1:95",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "4317:8:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 26968,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 26966,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26929,
                              "src": "4329:5:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 26967,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26938,
                              "src": "4338:3:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4329:12:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4317:24:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 26973,
                        "nodeType": "IfStatement",
                        "src": "4313:53:95",
                        "trueBody": {
                          "id": 26972,
                          "nodeType": "Block",
                          "src": "4343:23:95",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 26970,
                                "name": "output",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26935,
                                "src": "4355:6:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "functionReturnParameters": 26936,
                              "id": 26971,
                              "nodeType": "Return",
                              "src": "4348:13:95"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 26974,
                            "name": "output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26935,
                            "src": "4370:6:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 26980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 26978,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26938,
                                  "src": "4393:3:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 26979,
                                  "name": "start",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26929,
                                  "src": "4399:5:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4393:11:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 26977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "4379:13:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (bytes32[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 26975,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4383:7:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "id": 26976,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "4383:9:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                  "typeString": "bytes32[]"
                                }
                              }
                            },
                            "id": 26981,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4379:26:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "src": "4370:35:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "id": 26983,
                        "nodeType": "ExpressionStatement",
                        "src": "4370:35:95"
                      },
                      {
                        "body": {
                          "id": 27006,
                          "nodeType": "Block",
                          "src": "4447:43:95",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27004,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 26995,
                                    "name": "output",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26935,
                                    "src": "4452:6:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  "id": 26997,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 26996,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26985,
                                    "src": "4459:1:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4452:9:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 26998,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26927,
                                      "src": "4464:3:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                        "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                      }
                                    },
                                    "id": 26999,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "values",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26733,
                                    "src": "4464:10:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 27003,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 27002,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 27000,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26985,
                                      "src": "4475:1:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 27001,
                                      "name": "start",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26929,
                                      "src": "4479:5:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4475:9:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4464:21:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "4452:33:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 27005,
                              "nodeType": "ExpressionStatement",
                              "src": "4452:33:95"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 26991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 26987,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26985,
                            "src": "4425:1:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 26990,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 26988,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26938,
                              "src": "4429:3:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 26989,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26929,
                              "src": "4435:5:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4429:11:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4425:15:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 27007,
                        "initializationExpression": {
                          "assignments": [
                            26985
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 26985,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 27007,
                              "src": "4414:9:95",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 26984,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4414:7:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 26986,
                          "initialValue": null,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4414:9:95"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 26993,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4442:3:95",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 26992,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26985,
                              "src": "4442:1:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 26994,
                          "nodeType": "ExpressionStatement",
                          "src": "4442:3:95"
                        },
                        "nodeType": "ForStatement",
                        "src": "4409:81:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27008,
                          "name": "output",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26935,
                          "src": "4500:6:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "functionReturnParameters": 26936,
                        "id": 27009,
                        "nodeType": "Return",
                        "src": "4493:13:95"
                      }
                    ]
                  },
                  "documentation": "@notice Get all set values.\n\t * @param set The set of values.\n@param start The offset of the returning set.\n@param count The limit of number of values to return.\n\t * @return An array with all values in the set. O(N).\n\t * @dev Note that there are no guarantees on the ordering of values inside the\narray, and it may change when more values are added or removed.\n\t * WARNING: This function may run out of gas on large sets: use {length} and\n{get} instead in these cases.",
                  "id": 27011,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "enumerate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26932,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26927,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 27011,
                        "src": "4065:22:95",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                          "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26926,
                          "name": "Bytes32Set",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26734,
                          "src": "4065:10:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                            "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26929,
                        "name": "start",
                        "nodeType": "VariableDeclaration",
                        "scope": 27011,
                        "src": "4091:13:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26928,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4091:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26931,
                        "name": "count",
                        "nodeType": "VariableDeclaration",
                        "scope": 27011,
                        "src": "4108:13:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26930,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4108:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4061:63:95"
                  },
                  "returnParameters": {
                    "id": 26936,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26935,
                        "name": "output",
                        "nodeType": "VariableDeclaration",
                        "scope": 27011,
                        "src": "4148:23:95",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 26933,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "4148:7:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 26934,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4148:9:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4147:25:95"
                  },
                  "scope": 27039,
                  "src": "4043:467:95",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27022,
                    "nodeType": "Block",
                    "src": "4728:32:95",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27018,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27013,
                              "src": "4739:3:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                              }
                            },
                            "id": 27019,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "values",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 26733,
                            "src": "4739:10:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                              "typeString": "bytes32[] storage ref"
                            }
                          },
                          "id": 27020,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4739:17:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 27017,
                        "id": 27021,
                        "nodeType": "Return",
                        "src": "4732:24:95"
                      }
                    ]
                  },
                  "documentation": "@notice Get the legth of the set.\n\t * @param set The set of values.\n\t * @return the number of elements on the set. O(1).",
                  "id": 27023,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "length",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27014,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27013,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 27023,
                        "src": "4672:22:95",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                          "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 27012,
                          "name": "Bytes32Set",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26734,
                          "src": "4672:10:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                            "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4671:24:95"
                  },
                  "returnParameters": {
                    "id": 27017,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27016,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 27023,
                        "src": "4719:7:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27015,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4719:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4718:9:95"
                  },
                  "scope": 27039,
                  "src": "4656:104:95",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27037,
                    "nodeType": "Block",
                    "src": "5299:32:95",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27032,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27025,
                              "src": "5310:3:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                              }
                            },
                            "id": 27033,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "values",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 26733,
                            "src": "5310:10:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                              "typeString": "bytes32[] storage ref"
                            }
                          },
                          "id": 27035,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 27034,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27027,
                            "src": "5321:5:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5310:17:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 27031,
                        "id": 27036,
                        "nodeType": "Return",
                        "src": "5303:24:95"
                      }
                    ]
                  },
                  "documentation": "@notice Get an item from the set by its index.\n\t * @dev Note that there are no guarantees on the ordering of values inside the\narray, and it may change when more values are added or removed.\n\t * Requirements:\n\t * - `index` must be strictly less than {length}.\n\t * @param set The set of values.\n@param index The index of the value to return.\n\t * @return the element stored at position `index` in the set. O(1).",
                  "id": 27038,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "get",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27028,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27025,
                        "name": "set",
                        "nodeType": "VariableDeclaration",
                        "scope": 27038,
                        "src": "5228:22:95",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                          "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 27024,
                          "name": "Bytes32Set",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 26734,
                          "src": "5228:10:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                            "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27027,
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "scope": 27038,
                        "src": "5252:13:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27026,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5252:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5227:39:95"
                  },
                  "returnParameters": {
                    "id": 27031,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27030,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 27038,
                        "src": "5290:7:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 27029,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5290:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5289:9:95"
                  },
                  "scope": 27039,
                  "src": "5215:116:95",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 27040,
              "src": "500:4833:95"
            }
          ],
          "src": "118:5216:95"
        },
        "id": 95
      },
      "contracts/mixins/FeesHelper.sol": {
        "ast": {
          "absolutePath": "contracts/mixins/FeesHelper.sol",
          "exportedSymbols": {
            "FeesHelper": [
              27492
            ]
          },
          "id": 27493,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 27041,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:96"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 27042,
              "nodeType": "ImportDirective",
              "scope": 27493,
              "sourceUnit": 4842,
              "src": "143:27:96",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeERC20.sol",
              "file": "../openzeppelin/SafeERC20.sol",
              "id": 27043,
              "nodeType": "ImportDirective",
              "scope": 27493,
              "sourceUnit": 42050,
              "src": "171:39:96",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/feeds/IPriceFeeds.sol",
              "file": "../feeds/IPriceFeeds.sol",
              "id": 27044,
              "nodeType": "ImportDirective",
              "scope": 27493,
              "sourceUnit": 8708,
              "src": "211:34:96",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/FeesEvents.sol",
              "file": "../events/FeesEvents.sol",
              "id": 27045,
              "nodeType": "ImportDirective",
              "scope": 27493,
              "sourceUnit": 5833,
              "src": "246:34:96",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/modules/interfaces/ProtocolAffiliatesInterface.sol",
              "file": "../modules/interfaces/ProtocolAffiliatesInterface.sol",
              "id": 27046,
              "nodeType": "ImportDirective",
              "scope": 27493,
              "sourceUnit": 40356,
              "src": "281:63:96",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/core/objects/LoanParamsStruct.sol",
              "file": "../core/objects/LoanParamsStruct.sol",
              "id": 27047,
              "nodeType": "ImportDirective",
              "scope": 27493,
              "sourceUnit": 4886,
              "src": "345:46:96",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 27048,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "693:5:96",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 27049,
                  "nodeType": "InheritanceSpecifier",
                  "src": "693:5:96"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 27050,
                    "name": "FeesEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5832,
                    "src": "700:10:96",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeesEvents_$5832",
                      "typeString": "contract FeesEvents"
                    }
                  },
                  "id": 27051,
                  "nodeType": "InheritanceSpecifier",
                  "src": "700:10:96"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                5832,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title The Fees Helper contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized margin\ntrading and lending https://bzx.network similar to the dYdX protocol.\n * This contract calculates and pays lending/borrow fees and rewards.\n",
              "fullyImplemented": true,
              "id": 27492,
              "linearizedBaseContracts": [
                27492,
                5832,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "FeesHelper",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 27054,
                  "libraryName": {
                    "contractScope": null,
                    "id": 27052,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42049,
                    "src": "720:9:96",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$42049",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "714:27:96",
                  "typeName": {
                    "contractScope": null,
                    "id": 27053,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "734:6:96",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "body": {
                    "id": 27071,
                    "nodeType": "Block",
                    "src": "962:68:96",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              },
                              "id": 27068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130",
                                "id": 27066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1019:2:96",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3230",
                                "id": 27067,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1023:2:96",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_20_by_1",
                                  "typeString": "int_const 20"
                                },
                                "value": "20"
                              },
                              "src": "1019:6:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27063,
                                  "name": "tradingFeePercent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4657,
                                  "src": "992:17:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27061,
                                  "name": "feeTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27056,
                                  "src": "973:14:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 27062,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "973:18:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "973:37:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 27065,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "divCeil",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42212,
                            "src": "973:45:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 27069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "973:53:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 27060,
                        "id": 27070,
                        "nodeType": "Return",
                        "src": "966:60:96"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate trading fee.\n@param feeTokenAmount The amount of tokens to trade.\n@return The fee of the trade.\n",
                  "id": 27072,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getTradingFee",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27057,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27056,
                        "name": "feeTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 27072,
                        "src": "906:22:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27055,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "906:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "905:24:96"
                  },
                  "returnParameters": {
                    "id": 27060,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27059,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 27072,
                        "src": "953:7:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27058,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "953:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "952:9:96"
                  },
                  "scope": 27492,
                  "src": "882:148:96",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27089,
                    "nodeType": "Block",
                    "src": "1257:74:96",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              },
                              "id": 27086,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130",
                                "id": 27084,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1320:2:96",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3230",
                                "id": 27085,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1324:2:96",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_20_by_1",
                                  "typeString": "int_const 20"
                                },
                                "value": "20"
                              },
                              "src": "1320:6:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27081,
                                  "name": "swapExtrernalFeePercent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4800,
                                  "src": "1287:23:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27079,
                                  "name": "feeTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27074,
                                  "src": "1268:14:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 27080,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "1268:18:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1268:43:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 27083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "divCeil",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42212,
                            "src": "1268:51:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 27087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1268:59:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 27078,
                        "id": 27088,
                        "nodeType": "Return",
                        "src": "1261:66:96"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate swap external fee.\n@param feeTokenAmount The amount of token to swap.\n@return The fee of the swap.",
                  "id": 27090,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getSwapExternalFee",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27075,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27074,
                        "name": "feeTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 27090,
                        "src": "1201:22:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27073,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1201:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1200:24:96"
                  },
                  "returnParameters": {
                    "id": 27078,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27077,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 27090,
                        "src": "1248:7:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27076,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1248:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1247:9:96"
                  },
                  "scope": 27492,
                  "src": "1172:159:96",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27107,
                    "nodeType": "Block",
                    "src": "2007:428:96",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              },
                              "id": 27104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130",
                                "id": 27102,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2066:2:96",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3230",
                                "id": 27103,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2070:2:96",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_20_by_1",
                                  "typeString": "int_const 20"
                                },
                                "value": "20"
                              },
                              "src": "2066:6:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27099,
                                  "name": "borrowingFeePercent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4672,
                                  "src": "2037:19:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27097,
                                  "name": "feeTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27092,
                                  "src": "2018:14:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 27098,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "2018:18:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27100,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2018:39:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 27101,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "divCeil",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42212,
                            "src": "2018:47:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 27105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2018:55:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 27096,
                        "id": 27106,
                        "nodeType": "Return",
                        "src": "2011:62:96"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the loan origination fee.\n@param feeTokenAmount The amount of tokens to borrow.\n@return The fee of the loan.\n",
                  "id": 27108,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getBorrowingFee",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27093,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27092,
                        "name": "feeTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 27108,
                        "src": "1951:22:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27091,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1951:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1950:24:96"
                  },
                  "returnParameters": {
                    "id": 27096,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27095,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 27108,
                        "src": "1998:7:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27094,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1998:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1997:9:96"
                  },
                  "scope": 27492,
                  "src": "1925:510:96",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27137,
                    "nodeType": "Block",
                    "src": "3251:187:96",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 27123,
                                "name": "affiliatesBonusSOVAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27119,
                                "src": "3256:24:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 27124,
                                "name": "affiliatesBonusTokenAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27121,
                                "src": "3282:26:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 27125,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "3255:54:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 27130,
                                "name": "referrer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27110,
                                "src": "3395:8:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 27131,
                                "name": "trader",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27112,
                                "src": "3405:6:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 27132,
                                "name": "feeToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27114,
                                "src": "3413:8:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 27133,
                                "name": "tradingFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27116,
                                "src": "3423:10:96",
                                "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"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 27127,
                                    "name": "protocolAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4750,
                                    "src": "3340:15:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 27126,
                                  "name": "ProtocolAffiliatesInterface",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40355,
                                  "src": "3312:27:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ProtocolAffiliatesInterface_$40355_$",
                                    "typeString": "type(contract ProtocolAffiliatesInterface)"
                                  }
                                },
                                "id": 27128,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3312:44:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ProtocolAffiliatesInterface_$40355",
                                  "typeString": "contract ProtocolAffiliatesInterface"
                                }
                              },
                              "id": 27129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "payTradingFeeToAffiliatesReferrer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 40354,
                              "src": "3312:82:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address,address,uint256) external returns (uint256,uint256)"
                              }
                            },
                            "id": 27134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3312:122:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "3255:179:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27136,
                        "nodeType": "ExpressionStatement",
                        "src": "3255:179:96"
                      }
                    ]
                  },
                  "documentation": "@notice Settle the trading fee and pay the token reward to the affiliates referrer.\n\t * @param referrer The affiliate referrer address to send the reward to.\n@param trader The account that performs this trade.\n@param feeToken The address of the token in which the trading fee is paid.\n@param tradingFee The amount of tokens accrued as fees on the trading.\n\t * @return affiliatesBonusSOVAmount the total SOV amount that is distributed to the referrer\n@return affiliatesBonusTokenAmount the total Token Base on the trading fee pairs that is distributed to the referrer\n",
                  "id": 27138,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_payTradingFeeToAffiliate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27117,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27110,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 27138,
                        "src": "3083:16:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27109,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3083:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27112,
                        "name": "trader",
                        "nodeType": "VariableDeclaration",
                        "scope": 27138,
                        "src": "3103:14:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27111,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3103:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27114,
                        "name": "feeToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 27138,
                        "src": "3121:16:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27113,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3121:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27116,
                        "name": "tradingFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 27138,
                        "src": "3141:18:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27115,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3141:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3079:83:96"
                  },
                  "returnParameters": {
                    "id": 27122,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27119,
                        "name": "affiliatesBonusSOVAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 27138,
                        "src": "3181:32:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27118,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3181:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27121,
                        "name": "affiliatesBonusTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 27138,
                        "src": "3215:34:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27120,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3215:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3180:70:96"
                  },
                  "scope": 27492,
                  "src": "3045:393:96",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27231,
                    "nodeType": "Block",
                    "src": "3940:804:96",
                    "statements": [
                      {
                        "assignments": [
                          27152
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27152,
                            "name": "protocolTradingFee",
                            "nodeType": "VariableDeclaration",
                            "scope": 27231,
                            "src": "3944:26:96",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27151,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3944:7:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27154,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 27153,
                          "name": "tradingFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27148,
                          "src": "3973:10:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3944:39:96"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27157,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 27155,
                            "name": "tradingFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27148,
                            "src": "4025:10:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 27156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4039:1:96",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4025:15:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 27230,
                        "nodeType": "IfStatement",
                        "src": "4021:720:96",
                        "trueBody": {
                          "id": 27229,
                          "nodeType": "Block",
                          "src": "4042:699:96",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 27164,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 27158,
                                    "name": "affiliatesUserReferrer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4758,
                                    "src": "4051:22:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                      "typeString": "mapping(address => address)"
                                    }
                                  },
                                  "id": 27160,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 27159,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27140,
                                    "src": "4074:4:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4051:28:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 27162,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4091:1:96",
                                      "subdenomination": null,
                                      "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": 27161,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4083:7:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 27163,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4083:10:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "4051:42:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 27202,
                              "nodeType": "IfStatement",
                              "src": "4047:343:96",
                              "trueBody": {
                                "id": 27201,
                                "nodeType": "Block",
                                "src": "4095:295:96",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 27166,
                                            "name": "affiliatesUserReferrer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4758,
                                            "src": "4127:22:96",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                              "typeString": "mapping(address => address)"
                                            }
                                          },
                                          "id": 27168,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 27167,
                                            "name": "user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 27140,
                                            "src": "4150:4:96",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "4127:28:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27169,
                                          "name": "user",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27140,
                                          "src": "4157:4:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27170,
                                          "name": "feeToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27144,
                                          "src": "4163:8:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27171,
                                          "name": "protocolTradingFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27152,
                                          "src": "4173:18:96",
                                          "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"
                                          }
                                        ],
                                        "id": 27165,
                                        "name": "_payTradingFeeToAffiliate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27138,
                                        "src": "4101:25:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                          "typeString": "function (address,address,address,uint256) returns (uint256,uint256)"
                                        }
                                      },
                                      "id": 27172,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4101:91:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "id": 27173,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4101:91:96"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 27199,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 27174,
                                        "name": "protocolTradingFee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27152,
                                        "src": "4198:18:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                  "typeString": "int_const 100000000000000000000"
                                                },
                                                "id": 27196,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "3130",
                                                  "id": 27194,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "4371:2:96",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                  },
                                                  "value": "10"
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "**",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "3230",
                                                  "id": 27195,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "4375:2:96",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_20_by_1",
                                                    "typeString": "int_const 20"
                                                  },
                                                  "value": "20"
                                                },
                                                "src": "4371:6:96",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                  "typeString": "int_const 100000000000000000000"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                  "typeString": "int_const 100000000000000000000"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 27191,
                                                    "name": "affiliateTradingTokenFeePercent",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4780,
                                                    "src": "4334:31:96",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 27189,
                                                    "name": "protocolTradingFee",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 27152,
                                                    "src": "4311:18:96",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 27190,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "mul",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 42153,
                                                  "src": "4311:22:96",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                  }
                                                },
                                                "id": 27192,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4311:55:96",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 27193,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "div",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 42169,
                                              "src": "4311:59:96",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 27197,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4311:67:96",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "commonType": {
                                                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                          "typeString": "int_const 100000000000000000000"
                                                        },
                                                        "id": 27184,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "argumentTypes": null,
                                                          "hexValue": "3130",
                                                          "id": 27182,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "4291:2:96",
                                                          "subdenomination": null,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_10_by_1",
                                                            "typeString": "int_const 10"
                                                          },
                                                          "value": "10"
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "**",
                                                        "rightExpression": {
                                                          "argumentTypes": null,
                                                          "hexValue": "3230",
                                                          "id": 27183,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "4295:2:96",
                                                          "subdenomination": null,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_20_by_1",
                                                            "typeString": "int_const 20"
                                                          },
                                                          "value": "20"
                                                        },
                                                        "src": "4291:6:96",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                          "typeString": "int_const 100000000000000000000"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                          "typeString": "int_const 100000000000000000000"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                          {
                                                            "argumentTypes": null,
                                                            "id": 27179,
                                                            "name": "affiliateFeePercent",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4691,
                                                            "src": "4266:19:96",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": null,
                                                            "id": 27177,
                                                            "name": "protocolTradingFee",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 27152,
                                                            "src": "4243:18:96",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "id": 27178,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberName": "mul",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 42153,
                                                          "src": "4243:22:96",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                          }
                                                        },
                                                        "id": 27180,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4243:43:96",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "id": 27181,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "div",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 42169,
                                                      "src": "4243:47:96",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                      }
                                                    },
                                                    "id": 27185,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4243:55:96",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 27175,
                                                    "name": "protocolTradingFee",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 27152,
                                                    "src": "4220:18:96",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 27176,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "sub",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 42092,
                                                  "src": "4220:22:96",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                  }
                                                },
                                                "id": 27186,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4220:79:96",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 27187,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "4219:81:96",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 27188,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42092,
                                          "src": "4219:85:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 27198,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4219:165:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4198:186:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 27200,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4198:186:96"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 27203,
                                    "name": "tradingFeeTokensHeld",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4661,
                                    "src": "4471:20:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 27205,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 27204,
                                    "name": "feeToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27144,
                                    "src": "4492:8:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4471:30:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 27210,
                                      "name": "protocolTradingFee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27152,
                                      "src": "4539:18:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 27206,
                                        "name": "tradingFeeTokensHeld",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4661,
                                        "src": "4504:20:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 27208,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 27207,
                                        "name": "feeToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27144,
                                        "src": "4525:8:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4504:30:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 27209,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "4504:34:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 27211,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4504:54:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4471:87:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27213,
                              "nodeType": "ExpressionStatement",
                              "src": "4471:87:96"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 27215,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27140,
                                    "src": "4583:4:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27216,
                                    "name": "feeToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27144,
                                    "src": "4589:8:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27217,
                                    "name": "loanId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27142,
                                    "src": "4599:6:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27218,
                                    "name": "protocolTradingFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27152,
                                    "src": "4607:18:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 27214,
                                  "name": "PayTradingFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5793,
                                  "src": "4569:13:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,bytes32,uint256)"
                                  }
                                },
                                "id": 27219,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4569:57:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 27220,
                              "nodeType": "EmitStatement",
                              "src": "4564:62:96"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 27222,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27140,
                                    "src": "4687:4:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27223,
                                    "name": "loanId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27142,
                                    "src": "4693:6:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27224,
                                    "name": "feeToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27144,
                                    "src": "4701:8:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27225,
                                    "name": "feeTokenPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27146,
                                    "src": "4711:12:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27226,
                                    "name": "tradingFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27148,
                                    "src": "4725:10:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 27221,
                                  "name": "_payFeeReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27491,
                                  "src": "4673:13:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,bytes32,address,address,uint256)"
                                  }
                                },
                                "id": 27227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4673:63:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 27228,
                              "nodeType": "ExpressionStatement",
                              "src": "4673:63:96"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Settle the trading fee and pay the token reward to the user.\n@param user The address to send the reward to.\n@param loanId The Id of the associated loan - used for logging only.\n@param feeToken The address of the token in which the trading fee is paid.\n@param tradingFee The amount of tokens accrued as fees on the trading.\n",
                  "id": 27232,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_payTradingFee",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27149,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27140,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 27232,
                        "src": "3831:12:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27139,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3831:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27142,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 27232,
                        "src": "3847:14:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 27141,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3847:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27144,
                        "name": "feeToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 27232,
                        "src": "3865:16:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27143,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3865:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27146,
                        "name": "feeTokenPair",
                        "nodeType": "VariableDeclaration",
                        "scope": 27232,
                        "src": "3885:20:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27145,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3885:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27148,
                        "name": "tradingFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 27232,
                        "src": "3909:18:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27147,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3909:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3827:103:96"
                  },
                  "returnParameters": {
                    "id": 27150,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3940:0:96"
                  },
                  "scope": 27492,
                  "src": "3804:940:96",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27276,
                    "nodeType": "Block",
                    "src": "5225:377:96",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 27245,
                            "name": "borrowingFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27242,
                            "src": "5233:12:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 27246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5249:1:96",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5233:17:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 27275,
                        "nodeType": "IfStatement",
                        "src": "5229:370:96",
                        "trueBody": {
                          "id": 27274,
                          "nodeType": "Block",
                          "src": "5252:347:96",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 27248,
                                    "name": "borrowingFeeTokensHeld",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4676,
                                    "src": "5333:22:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 27250,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 27249,
                                    "name": "feeToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27238,
                                    "src": "5356:8:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5333:32:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 27255,
                                      "name": "borrowingFee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27242,
                                      "src": "5405:12:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 27251,
                                        "name": "borrowingFeeTokensHeld",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4676,
                                        "src": "5368:22:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 27253,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 27252,
                                        "name": "feeToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27238,
                                        "src": "5391:8:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5368:32:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 27254,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "5368:36:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 27256,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5368:50:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5333:85:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27258,
                              "nodeType": "ExpressionStatement",
                              "src": "5333:85:96"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 27260,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27234,
                                    "src": "5445:4:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27261,
                                    "name": "feeToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27238,
                                    "src": "5451:8:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27262,
                                    "name": "loanId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27236,
                                    "src": "5461:6:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27263,
                                    "name": "borrowingFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27242,
                                    "src": "5469:12:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 27259,
                                  "name": "PayBorrowingFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5803,
                                  "src": "5429:15:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,bytes32,uint256)"
                                  }
                                },
                                "id": 27264,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5429:53:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 27265,
                              "nodeType": "EmitStatement",
                              "src": "5424:58:96"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 27267,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27234,
                                    "src": "5543:4:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27268,
                                    "name": "loanId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27236,
                                    "src": "5549:6:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27269,
                                    "name": "feeToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27238,
                                    "src": "5557:8:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27270,
                                    "name": "feeTokenPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27240,
                                    "src": "5567:12:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27271,
                                    "name": "borrowingFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27242,
                                    "src": "5581:12:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 27266,
                                  "name": "_payFeeReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27491,
                                  "src": "5529:13:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,bytes32,address,address,uint256)"
                                  }
                                },
                                "id": 27272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5529:65:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 27273,
                              "nodeType": "ExpressionStatement",
                              "src": "5529:65:96"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Settle the borrowing fee and pay the token reward to the user.\n@param user The address to send the reward to.\n@param loanId The Id of the associated loan - used for logging only.\n@param feeToken The address of the token in which the borrowig fee is paid.\n@param borrowingFee The height of the fee.\n",
                  "id": 27277,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_payBorrowingFee",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27243,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27234,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 27277,
                        "src": "5114:12:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27233,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5114:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27236,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 27277,
                        "src": "5130:14:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 27235,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5130:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27238,
                        "name": "feeToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 27277,
                        "src": "5148:16:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27237,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5148:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27240,
                        "name": "feeTokenPair",
                        "nodeType": "VariableDeclaration",
                        "scope": 27277,
                        "src": "5168:20:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27239,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5168:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27242,
                        "name": "borrowingFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 27277,
                        "src": "5192:20:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27241,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5192:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5110:105:96"
                  },
                  "returnParameters": {
                    "id": 27244,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5225:0:96"
                  },
                  "scope": 27492,
                  "src": "5085:517:96",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27308,
                    "nodeType": "Block",
                    "src": "5979:301:96",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 27286,
                            "name": "lendingFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27283,
                            "src": "5987:10:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 27287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6001:1:96",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5987:15:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 27307,
                        "nodeType": "IfStatement",
                        "src": "5983:294:96",
                        "trueBody": {
                          "id": 27306,
                          "nodeType": "Block",
                          "src": "6004:273:96",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 27289,
                                    "name": "lendingFeeTokensHeld",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4646,
                                    "src": "6085:20:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 27291,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 27290,
                                    "name": "feeToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27281,
                                    "src": "6106:8:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6085:30:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 27296,
                                      "name": "lendingFee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27283,
                                      "src": "6153:10:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 27292,
                                        "name": "lendingFeeTokensHeld",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4646,
                                        "src": "6118:20:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 27294,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 27293,
                                        "name": "feeToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27281,
                                        "src": "6139:8:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6118:30:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 27295,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "6118:34:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 27297,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6118:46:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6085:79:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27299,
                              "nodeType": "ExpressionStatement",
                              "src": "6085:79:96"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 27301,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27279,
                                    "src": "6189:4:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27302,
                                    "name": "feeToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27281,
                                    "src": "6195:8:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27303,
                                    "name": "lendingFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27283,
                                    "src": "6205:10:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 27300,
                                  "name": "PayLendingFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5783,
                                  "src": "6175:13:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 27304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6175:41:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 27305,
                              "nodeType": "EmitStatement",
                              "src": "6170:46:96"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Settle the lending fee (based on the interest). Pay no token reward to the user.\n@param user The address to send the reward to.\n@param feeToken The address of the token in which the lending fee is paid.\n@param lendingFee The height of the fee.\n",
                  "id": 27309,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_payLendingFee",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27284,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27279,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 27309,
                        "src": "5912:12:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27278,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5912:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27281,
                        "name": "feeToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 27309,
                        "src": "5928:16:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27280,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5928:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27283,
                        "name": "lendingFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 27309,
                        "src": "5948:18:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27282,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5948:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5908:61:96"
                  },
                  "returnParameters": {
                    "id": 27285,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5979:0:96"
                  },
                  "scope": 27492,
                  "src": "5885:395:96",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27365,
                    "nodeType": "Block",
                    "src": "6569:421:96",
                    "statements": [
                      {
                        "assignments": [
                          27325
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27325,
                            "name": "interestExpenseFee",
                            "nodeType": "VariableDeclaration",
                            "scope": 27365,
                            "src": "6647:26:96",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27324,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6647:7:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27345,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_8640000000000000000000000_by_1",
                                "typeString": "int_const 8640000000000000000000000"
                              },
                              "id": 27343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 27339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6798:6:96",
                                "subdenomination": "days",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_86400_by_1",
                                  "typeString": "int_const 86400"
                                },
                                "value": "1"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "id": 27342,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 27340,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6807:2:96",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3230",
                                  "id": 27341,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6811:2:96",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "6807:6:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              },
                              "src": "6798:15:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_8640000000000000000000000_by_1",
                                "typeString": "int_const 8640000000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_8640000000000000000000000_by_1",
                                "typeString": "int_const 8640000000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27336,
                                  "name": "lendingFeePercent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4642,
                                  "src": "6770:17:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 27332,
                                        "name": "loanInterestLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27311,
                                        "src": "6736:17:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                          "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                        }
                                      },
                                      "id": 27333,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "owedPerDay",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4859,
                                      "src": "6736:28:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 27328,
                                            "name": "loanInterestLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 27311,
                                            "src": "6696:17:96",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                              "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                            }
                                          },
                                          "id": 27329,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "updatedTimestamp",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4863,
                                          "src": "6696:34:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 27326,
                                          "name": "interestTime",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27321,
                                          "src": "6679:12:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 27327,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42092,
                                        "src": "6679:16:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 27330,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6679:52:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 27331,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42153,
                                    "src": "6679:56:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 27334,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6679:86:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 27335,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "6679:90:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6679:109:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 27338,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "6679:113:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 27344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6679:139:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6647:171:96"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27346,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27311,
                              "src": "6823:17:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            "id": 27348,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "updatedTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4863,
                            "src": "6823:34:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 27349,
                            "name": "interestTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27321,
                            "src": "6860:12:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6823:49:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 27351,
                        "nodeType": "ExpressionStatement",
                        "src": "6823:49:96"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 27352,
                            "name": "interestExpenseFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27325,
                            "src": "6881:18:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 27353,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6903:1:96",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6881:23:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 27364,
                        "nodeType": "IfStatement",
                        "src": "6877:110:96",
                        "trueBody": {
                          "id": 27363,
                          "nodeType": "Block",
                          "src": "6906:81:96",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 27356,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27319,
                                    "src": "6925:4:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27357,
                                    "name": "loanId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27313,
                                    "src": "6931:6:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27358,
                                    "name": "feeToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27315,
                                    "src": "6939:8:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27359,
                                    "name": "feeTokenPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27317,
                                    "src": "6949:12:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27360,
                                    "name": "interestExpenseFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27325,
                                    "src": "6963:18:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 27355,
                                  "name": "_payFeeReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27491,
                                  "src": "6911:13:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,bytes32,address,address,uint256)"
                                  }
                                },
                                "id": 27361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6911:71:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 27362,
                              "nodeType": "ExpressionStatement",
                              "src": "6911:71:96"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "Settle and pay borrowers based on the fees generated by their interest payments.",
                  "id": 27366,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_settleFeeRewardForInterestExpense",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27322,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27311,
                        "name": "loanInterestLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 27366,
                        "src": "6416:38:96",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                          "typeString": "struct LoanInterestStruct.LoanInterest"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 27310,
                          "name": "LoanInterest",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4864,
                          "src": "6416:12:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                            "typeString": "struct LoanInterestStruct.LoanInterest"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27313,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 27366,
                        "src": "6458:14:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 27312,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6458:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27315,
                        "name": "feeToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 27366,
                        "src": "6476:16:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27314,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6476:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27317,
                        "name": "feeTokenPair",
                        "nodeType": "VariableDeclaration",
                        "scope": 27366,
                        "src": "6496:20:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27316,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6496:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27319,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 27366,
                        "src": "6520:12:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27318,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6520:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27321,
                        "name": "interestTime",
                        "nodeType": "VariableDeclaration",
                        "scope": 27366,
                        "src": "6536:20:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27320,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6536:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6412:147:96"
                  },
                  "returnParameters": {
                    "id": 27323,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6569:0:96"
                  },
                  "scope": 27492,
                  "src": "6369:621:96",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27490,
                    "nodeType": "Block",
                    "src": "7501:1390:96",
                    "statements": [
                      {
                        "assignments": [
                          27380
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27380,
                            "name": "rewardAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 27490,
                            "src": "7505:20:96",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27379,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7505:7:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27381,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7505:20:96"
                      },
                      {
                        "assignments": [
                          27383
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27383,
                            "name": "_feeRebatePercent",
                            "nodeType": "VariableDeclaration",
                            "scope": 27490,
                            "src": "7529:25:96",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27382,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7529:7:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27385,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 27384,
                          "name": "feeRebatePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4746,
                          "src": "7557:16:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7529:44:96"
                      },
                      {
                        "assignments": [
                          27387
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27387,
                            "name": "_priceFeeds",
                            "nodeType": "VariableDeclaration",
                            "scope": 27490,
                            "src": "7577:19:96",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 27386,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7577:7:96",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27389,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 27388,
                          "name": "priceFeeds",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4575,
                          "src": "7599:10:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7577:32:96"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 27390,
                                "name": "specialRebates",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4796,
                                "src": "7618:14:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 27392,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 27391,
                                "name": "feeToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27372,
                                "src": "7633:8:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7618:24:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 27394,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 27393,
                              "name": "feeTokenPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27374,
                              "src": "7643:12:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7618:38:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 27395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7659:1:96",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7618:42:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 27406,
                        "nodeType": "IfStatement",
                        "src": "7614:116:96",
                        "trueBody": {
                          "id": 27405,
                          "nodeType": "Block",
                          "src": "7662:68:96",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27403,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 27397,
                                  "name": "_feeRebatePercent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27383,
                                  "src": "7667:17:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 27398,
                                      "name": "specialRebates",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4796,
                                      "src": "7687:14:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 27400,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 27399,
                                      "name": "feeToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27372,
                                      "src": "7702:8:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7687:24:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 27402,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 27401,
                                    "name": "feeTokenPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27374,
                                    "src": "7712:12:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7687:38:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7667:58:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27404,
                              "nodeType": "ExpressionStatement",
                              "src": "7667:58:96"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          27408,
                          27410
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27408,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 27490,
                            "src": "7834:12:96",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 27407,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7834:4:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 27410,
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "scope": 27490,
                            "src": "7848:17:96",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 27409,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7848:5:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27433,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 27416,
                                          "name": "_priceFeeds",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27387,
                                          "src": "7941:11:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 27415,
                                        "name": "IPriceFeeds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8707,
                                        "src": "7929:11:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                          "typeString": "type(contract IPriceFeeds)"
                                        }
                                      },
                                      "id": 27417,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7929:24:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                        "typeString": "contract IPriceFeeds"
                                      }
                                    },
                                    "id": 27418,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "queryReturn",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 8615,
                                    "src": "7929:36:96",
                                    "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": 27419,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7929:45:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 27420,
                                  "name": "feeToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27372,
                                  "src": "7981:8:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 27421,
                                  "name": "sovTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4771,
                                  "src": "7996:15:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                        "typeString": "int_const 100000000000000000000"
                                      },
                                      "id": 27429,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 27427,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8123:2:96",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3230",
                                        "id": 27428,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8127:2:96",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_20_by_1",
                                          "typeString": "int_const 20"
                                        },
                                        "value": "20"
                                      },
                                      "src": "8123:6:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                        "typeString": "int_const 100000000000000000000"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                        "typeString": "int_const 100000000000000000000"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 27424,
                                          "name": "_feeRebatePercent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27383,
                                          "src": "8100:17:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 27422,
                                          "name": "feeAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27376,
                                          "src": "8086:9:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 27423,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "8086:13:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 27425,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8086:32:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 27426,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "8086:36:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 27430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8086:44:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27413,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "7900:3:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27414,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7900:22:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 27431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7900:236:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 27411,
                              "name": "_priceFeeds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27387,
                              "src": "7872:11:96",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 27412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7872:22:96",
                            "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": 27432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7872:269:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7833:308:96"
                      },
                      {
                        "externalReferences": [
                          {
                            "success": {
                              "declaration": 27408,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "8215:7:96",
                              "valueSize": 1
                            }
                          },
                          {
                            "rewardAmount": {
                              "declaration": 27380,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "8233:12:96",
                              "valueSize": 1
                            }
                          },
                          {
                            "data": {
                              "declaration": 27410,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "8259:4:96",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 27434,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    if eq(success, 1)\n    {\n        rewardAmount := mload(add(data, 32))\n    }\n}",
                        "src": "8195:83:96"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 27435,
                            "name": "rewardAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27380,
                            "src": "8286:12:96",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 27436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8302:1:96",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8286:17:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 27489,
                        "nodeType": "IfStatement",
                        "src": "8282:606:96",
                        "trueBody": {
                          "id": 27488,
                          "nodeType": "Block",
                          "src": "8305:583:96",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 27442,
                                    "name": "lockedSOVAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4773,
                                    "src": "8342:16:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27443,
                                    "name": "rewardAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27380,
                                    "src": "8360:12:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 27439,
                                        "name": "sovTokenAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4771,
                                        "src": "8317:15:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 27438,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24699,
                                      "src": "8310:6:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 27440,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8310:23:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 27441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "approve",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 24662,
                                  "src": "8310:31:96",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 27444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8310:63:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 27445,
                              "nodeType": "ExpressionStatement",
                              "src": "8310:63:96"
                            },
                            {
                              "assignments": [
                                27447,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 27447,
                                  "name": "success",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 27488,
                                  "src": "8380:12:96",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 27446,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8380:4:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 27458,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "6465706f73697428616464726573732c75696e743235362c75696e7432353629",
                                        "id": 27452,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8454:34:96",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_0efe6a8b11bdbb92d49045fffbd9e8dc4b5b43f7a0459dae9c8fdf27311f275e",
                                          "typeString": "literal_string \"deposit(address,uint256,uint256)\""
                                        },
                                        "value": "deposit(address,uint256,uint256)"
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 27453,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27368,
                                        "src": "8490:4:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 27454,
                                        "name": "rewardAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27380,
                                        "src": "8496:12:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 27455,
                                        "name": "tradingRebateRewardsBasisPoint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4802,
                                        "src": "8510:30:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_0efe6a8b11bdbb92d49045fffbd9e8dc4b5b43f7a0459dae9c8fdf27311f275e",
                                          "typeString": "literal_string \"deposit(address,uint256,uint256)\""
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 27450,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44981,
                                        "src": "8430:3:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 27451,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSignature",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "8430:23:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (string memory) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 27456,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8430:111:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27448,
                                    "name": "lockedSOVAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4773,
                                    "src": "8402:16:96",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 27449,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8402:21:96",
                                  "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": 27457,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8402:145:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8379:168:96"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 27459,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27447,
                                "src": "8557:7:96",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 27486,
                                "nodeType": "Block",
                                "src": "8757:127:96",
                                "statements": [
                                  {
                                    "eventCall": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 27478,
                                          "name": "user",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27368,
                                          "src": "8783:4:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27479,
                                          "name": "sovTokenAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4771,
                                          "src": "8789:15:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27480,
                                          "name": "loanId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27370,
                                          "src": "8806:6:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27481,
                                          "name": "_feeRebatePercent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27383,
                                          "src": "8814:17:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27482,
                                          "name": "rewardAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27380,
                                          "src": "8833:12:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27483,
                                          "name": "tradingRebateRewardsBasisPoint",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4802,
                                          "src": "8847:30:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 27477,
                                        "name": "EarnRewardFail",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5831,
                                        "src": "8768:14:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,bytes32,uint256,uint256,uint256)"
                                        }
                                      },
                                      "id": 27484,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8768:110:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 27485,
                                    "nodeType": "EmitStatement",
                                    "src": "8763:115:96"
                                  }
                                ]
                              },
                              "id": 27487,
                              "nodeType": "IfStatement",
                              "src": "8553:331:96",
                              "trueBody": {
                                "id": 27476,
                                "nodeType": "Block",
                                "src": "8566:185:96",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 27465,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 27460,
                                        "name": "protocolTokenPaid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4684,
                                        "src": "8572:17:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 27463,
                                            "name": "rewardAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 27380,
                                            "src": "8614:12:96",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 27461,
                                            "name": "protocolTokenPaid",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4684,
                                            "src": "8592:17:96",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 27462,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "8592:21:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 27464,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8592:35:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8572:55:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 27466,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8572:55:96"
                                  },
                                  {
                                    "eventCall": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 27468,
                                          "name": "user",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27368,
                                          "src": "8650:4:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27469,
                                          "name": "sovTokenAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4771,
                                          "src": "8656:15:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27470,
                                          "name": "loanId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27370,
                                          "src": "8673:6:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27471,
                                          "name": "_feeRebatePercent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27383,
                                          "src": "8681:17:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27472,
                                          "name": "rewardAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27380,
                                          "src": "8700:12:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27473,
                                          "name": "tradingRebateRewardsBasisPoint",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4802,
                                          "src": "8714:30:96",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 27467,
                                        "name": "EarnReward",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5817,
                                        "src": "8639:10:96",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,bytes32,uint256,uint256,uint256)"
                                        }
                                      },
                                      "id": 27474,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8639:106:96",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 27475,
                                    "nodeType": "EmitStatement",
                                    "src": "8634:111:96"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Pay the potocolToken reward to user. The reward is worth 50% of the trading/borrowing fee.\n@param user The address to send the reward to.\n@param loanId The Id of the associeated loan - used for logging only.\n@param feeToken The address of the token in which the trading/borrowing fee was paid.\n@param feeAmount The height of the fee.\n",
                  "id": 27491,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_payFeeReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27377,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27368,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 27491,
                        "src": "7393:12:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27367,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7393:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27370,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 27491,
                        "src": "7409:14:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 27369,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7409:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27372,
                        "name": "feeToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 27491,
                        "src": "7427:16:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27371,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7427:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27374,
                        "name": "feeTokenPair",
                        "nodeType": "VariableDeclaration",
                        "scope": 27491,
                        "src": "7447:20:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27373,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7447:7:96",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27376,
                        "name": "feeAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 27491,
                        "src": "7471:17:96",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27375,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7471:7:96",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7389:102:96"
                  },
                  "returnParameters": {
                    "id": 27378,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7501:0:96"
                  },
                  "scope": 27492,
                  "src": "7367:1524:96",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 27493,
              "src": "670:8223:96"
            }
          ],
          "src": "118:8776:96"
        },
        "id": 96
      },
      "contracts/mixins/InterestUser.sol": {
        "ast": {
          "absolutePath": "contracts/mixins/InterestUser.sol",
          "exportedSymbols": {
            "InterestUser": [
              27663
            ]
          },
          "id": 27664,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 27494,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:97"
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeERC20.sol",
              "file": "../openzeppelin/SafeERC20.sol",
              "id": 27495,
              "nodeType": "ImportDirective",
              "scope": 27664,
              "sourceUnit": 42050,
              "src": "143:39:97",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 27496,
              "nodeType": "ImportDirective",
              "scope": 27664,
              "sourceUnit": 4842,
              "src": "183:27:97",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/VaultController.sol",
              "file": "../mixins/VaultController.sol",
              "id": 27497,
              "nodeType": "ImportDirective",
              "scope": 27664,
              "sourceUnit": 28215,
              "src": "211:39:97",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/FeesHelper.sol",
              "file": "./FeesHelper.sol",
              "id": 27498,
              "nodeType": "ImportDirective",
              "scope": 27664,
              "sourceUnit": 27493,
              "src": "251:26:97",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 27499,
                    "name": "VaultController",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28214,
                    "src": "551:15:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VaultController_$28214",
                      "typeString": "contract VaultController"
                    }
                  },
                  "id": 27500,
                  "nodeType": "InheritanceSpecifier",
                  "src": "551:15:97"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 27501,
                    "name": "FeesHelper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27492,
                    "src": "568:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeesHelper_$27492",
                      "typeString": "contract FeesHelper"
                    }
                  },
                  "id": 27502,
                  "nodeType": "InheritanceSpecifier",
                  "src": "568:10:97"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                5832,
                27492,
                28214,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title The Interest User contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized margin\ntrading and lending https://bzx.network similar to the dYdX protocol.\n * This contract pays loan interests.\n",
              "fullyImplemented": true,
              "id": 27663,
              "linearizedBaseContracts": [
                27663,
                27492,
                5832,
                28214,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "InterestUser",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 27505,
                  "libraryName": {
                    "contractScope": null,
                    "id": 27503,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42049,
                    "src": "588:9:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$42049",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "582:27:97",
                  "typeName": {
                    "contractScope": null,
                    "id": 27504,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "602:6:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "documentation": "Triggered whenever interest is paid to lender.",
                  "id": 27513,
                  "name": "PayInterestTransfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 27512,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27507,
                        "indexed": true,
                        "name": "interestToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 27513,
                        "src": "690:29:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27506,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "690:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27509,
                        "indexed": true,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 27513,
                        "src": "721:22:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27508,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "721:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27511,
                        "indexed": false,
                        "name": "effectiveInterest",
                        "nodeType": "VariableDeclaration",
                        "scope": 27513,
                        "src": "745:25:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27510,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "745:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "689:82:97"
                  },
                  "src": "664:108:97"
                },
                {
                  "body": {
                    "id": 27615,
                    "nodeType": "Block",
                    "src": "1106:860:97",
                    "statements": [
                      {
                        "assignments": [
                          27521
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27521,
                            "name": "lenderInterestLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 27615,
                            "src": "1110:42:97",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                              "typeString": "struct LenderInterestStruct.LenderInterest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 27520,
                              "name": "LenderInterest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4854,
                              "src": "1110:14:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27527,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 27522,
                              "name": "lenderInterest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4615,
                              "src": "1155:14:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$_$",
                                "typeString": "mapping(address => mapping(address => struct LenderInterestStruct.LenderInterest storage ref))"
                              }
                            },
                            "id": 27524,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 27523,
                              "name": "lender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27515,
                              "src": "1170:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1155:22:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$",
                              "typeString": "mapping(address => struct LenderInterestStruct.LenderInterest storage ref)"
                            }
                          },
                          "id": 27526,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 27525,
                            "name": "interestToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27517,
                            "src": "1178:13:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1155:37:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LenderInterest_$4854_storage",
                            "typeString": "struct LenderInterestStruct.LenderInterest storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1110:82:97"
                      },
                      {
                        "assignments": [
                          27529
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27529,
                            "name": "interestOwedNow",
                            "nodeType": "VariableDeclaration",
                            "scope": 27615,
                            "src": "1197:23:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27528,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1197:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27531,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 27530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1223:1:97",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1197:27:97"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 27540,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 27535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27532,
                                "name": "lenderInterestLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27521,
                                "src": "1232:19:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                  "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                }
                              },
                              "id": 27533,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedPerDay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4847,
                              "src": "1232:30:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 27534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1266:1:97",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1232:35:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 27539,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27536,
                                "name": "lenderInterestLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27521,
                                "src": "1271:19:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                  "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                }
                              },
                              "id": 27537,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "updatedTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4853,
                              "src": "1271:36:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 27538,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1311:1:97",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1271:41:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1232:80:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 27613,
                          "nodeType": "Block",
                          "src": "1899:64:97",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27606,
                                    "name": "lenderInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27521,
                                    "src": "1904:19:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                      "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                    }
                                  },
                                  "id": 27608,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "updatedTimestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4853,
                                  "src": "1904:36:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27609,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44984,
                                    "src": "1943:5:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 27610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1943:15:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1904:54:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27612,
                              "nodeType": "ExpressionStatement",
                              "src": "1904:54:97"
                            }
                          ]
                        },
                        "id": 27614,
                        "nodeType": "IfStatement",
                        "src": "1228:735:97",
                        "trueBody": {
                          "id": 27605,
                          "nodeType": "Block",
                          "src": "1314:579:97",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 27541,
                                  "name": "interestOwedNow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27529,
                                  "src": "1319:15:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 27553,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1435:6:97",
                                      "subdenomination": "days",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_86400_by_1",
                                        "typeString": "int_const 86400"
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_86400_by_1",
                                        "typeString": "int_const 86400"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 27549,
                                            "name": "lenderInterestLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 27521,
                                            "src": "1399:19:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                              "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                            }
                                          },
                                          "id": 27550,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "owedPerDay",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4847,
                                          "src": "1399:30:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 27545,
                                                "name": "lenderInterestLocal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 27521,
                                                "src": "1357:19:97",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                                  "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                                }
                                              },
                                              "id": 27546,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "updatedTimestamp",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4853,
                                              "src": "1357:36:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 27542,
                                                "name": "block",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 44984,
                                                "src": "1337:5:97",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_block",
                                                  "typeString": "block"
                                                }
                                              },
                                              "id": 27543,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "timestamp",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "1337:15:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 27544,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 42092,
                                            "src": "1337:19:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 27547,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1337:57:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 27548,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "1337:61:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 27551,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1337:93:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 27552,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "1337:97:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 27554,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1337:105:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1319:123:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27556,
                              "nodeType": "ExpressionStatement",
                              "src": "1319:123:97"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27562,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27557,
                                    "name": "lenderInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27521,
                                    "src": "1448:19:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                      "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                    }
                                  },
                                  "id": 27559,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "updatedTimestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4853,
                                  "src": "1448:36:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27560,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44984,
                                    "src": "1487:5:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 27561,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1487:15:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1448:54:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27563,
                              "nodeType": "ExpressionStatement",
                              "src": "1448:54:97"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 27567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 27564,
                                  "name": "interestOwedNow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27529,
                                  "src": "1512:15:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27565,
                                    "name": "lenderInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27521,
                                    "src": "1530:19:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                      "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                    }
                                  },
                                  "id": 27566,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "owedTotal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4849,
                                  "src": "1530:29:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1512:47:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 27573,
                              "nodeType": "IfStatement",
                              "src": "1508:100:97",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27571,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 27568,
                                    "name": "interestOwedNow",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27529,
                                    "src": "1561:15:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 27569,
                                      "name": "lenderInterestLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27521,
                                      "src": "1579:19:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                        "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                      }
                                    },
                                    "id": 27570,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owedTotal",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4849,
                                    "src": "1579:29:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1561:47:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 27572,
                                "nodeType": "ExpressionStatement",
                                "src": "1561:47:97"
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 27576,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 27574,
                                  "name": "interestOwedNow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27529,
                                  "src": "1618:15:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 27575,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1637:1:97",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1618:20:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 27604,
                              "nodeType": "IfStatement",
                              "src": "1614:275:97",
                              "trueBody": {
                                "id": 27603,
                                "nodeType": "Block",
                                "src": "1640:249:97",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 27585,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 27577,
                                          "name": "lenderInterestLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27521,
                                          "src": "1646:19:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                            "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                          }
                                        },
                                        "id": 27579,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "paidTotal",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4851,
                                        "src": "1646:29:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 27583,
                                            "name": "interestOwedNow",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 27529,
                                            "src": "1712:15:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 27580,
                                              "name": "lenderInterestLocal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 27521,
                                              "src": "1678:19:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                                "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                              }
                                            },
                                            "id": 27581,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "paidTotal",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4851,
                                            "src": "1678:29:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 27582,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "1678:33:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 27584,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1678:50:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1646:82:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 27586,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1646:82:97"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 27595,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 27587,
                                          "name": "lenderInterestLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27521,
                                          "src": "1734:19:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                            "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                          }
                                        },
                                        "id": 27589,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "owedTotal",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4849,
                                        "src": "1734:29:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 27593,
                                            "name": "interestOwedNow",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 27529,
                                            "src": "1800:15:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 27590,
                                              "name": "lenderInterestLocal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 27521,
                                              "src": "1766:19:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                                "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                              }
                                            },
                                            "id": 27591,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "owedTotal",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4849,
                                            "src": "1766:29:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 27592,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42092,
                                          "src": "1766:33:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 27594,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1766:50:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1734:82:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 27596,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1734:82:97"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 27598,
                                          "name": "lender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27515,
                                          "src": "1844:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27599,
                                          "name": "interestToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27517,
                                          "src": "1852:13:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 27600,
                                          "name": "interestOwedNow",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27529,
                                          "src": "1867:15:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 27597,
                                        "name": "_payInterestTransfer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27662,
                                        "src": "1823:20:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256)"
                                        }
                                      },
                                      "id": 27601,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1823:60:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 27602,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1823:60:97"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to pay interest of a loan.\n@dev Calls _payInterestTransfer internal function to transfer tokens.\n@param lender The account address of the lender.\n@param interestToken The token address to pay interest with.\n",
                  "id": 27616,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_payInterest",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27518,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27515,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 27616,
                        "src": "1058:14:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27514,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1058:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27517,
                        "name": "interestToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 27616,
                        "src": "1074:21:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27516,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1074:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1057:39:97"
                  },
                  "returnParameters": {
                    "id": 27519,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1106:0:97"
                  },
                  "scope": 27663,
                  "src": "1036:930:97",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27661,
                    "nodeType": "Block",
                    "src": "2346:590:97",
                    "statements": [
                      {
                        "assignments": [
                          27626
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27626,
                            "name": "lendingFee",
                            "nodeType": "VariableDeclaration",
                            "scope": 27661,
                            "src": "2350:18:97",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27625,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2350:7:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27636,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              },
                              "id": 27634,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130",
                                "id": 27632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2414:2:97",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3230",
                                "id": 27633,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2418:2:97",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_20_by_1",
                                  "typeString": "int_const 20"
                                },
                                "value": "20"
                              },
                              "src": "2414:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27629,
                                  "name": "lendingFeePercent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4642,
                                  "src": "2391:17:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27627,
                                  "name": "interestOwedNow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27622,
                                  "src": "2371:15:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 27628,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "2371:19:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27630,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2371:38:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 27631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "2371:42:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 27635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2371:50:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2350:71:97"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27638,
                              "name": "lender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27618,
                              "src": "2656:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27639,
                              "name": "interestToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27620,
                              "src": "2664:13:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27640,
                              "name": "lendingFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27626,
                              "src": "2679:10:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27637,
                            "name": "_payLendingFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27309,
                            "src": "2641:14:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 27641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2641:49:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27642,
                        "nodeType": "ExpressionStatement",
                        "src": "2641:49:97"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27644,
                              "name": "interestToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27620,
                              "src": "2776:13:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27645,
                              "name": "lender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27618,
                              "src": "2791:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27648,
                                  "name": "lendingFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27626,
                                  "src": "2819:10:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27646,
                                  "name": "interestOwedNow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27622,
                                  "src": "2799:15:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 27647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42092,
                                "src": "2799:19:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27649,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2799:31:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27643,
                            "name": "vaultWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28128,
                            "src": "2762:13:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 27650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2762:69:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27651,
                        "nodeType": "ExpressionStatement",
                        "src": "2762:69:97"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27653,
                              "name": "interestToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27620,
                              "src": "2877:13:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27654,
                              "name": "lender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27618,
                              "src": "2892:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27657,
                                  "name": "lendingFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27626,
                                  "src": "2920:10:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27655,
                                  "name": "interestOwedNow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27622,
                                  "src": "2900:15:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 27656,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42092,
                                "src": "2900:19:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2900:31:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27652,
                            "name": "PayInterestTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27513,
                            "src": "2857:19:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 27659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2857:75:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27660,
                        "nodeType": "EmitStatement",
                        "src": "2852:80:97"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to transfer tokens for the interest of a loan.\n@param lender The account address of the lender.\n@param interestToken The token address to pay interest with.\n@param interestOwedNow The amount of interest to pay.\n",
                  "id": 27662,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_payInterestTransfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27618,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 27662,
                        "src": "2267:14:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27617,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2267:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27620,
                        "name": "interestToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 27662,
                        "src": "2285:21:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27619,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2285:7:97",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27622,
                        "name": "interestOwedNow",
                        "nodeType": "VariableDeclaration",
                        "scope": 27662,
                        "src": "2310:23:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27621,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2310:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2263:73:97"
                  },
                  "returnParameters": {
                    "id": 27624,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2346:0:97"
                  },
                  "scope": 27663,
                  "src": "2234:702:97",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 27664,
              "src": "526:2412:97"
            }
          ],
          "src": "118:2821:97"
        },
        "id": 97
      },
      "contracts/mixins/LiquidationHelper.sol": {
        "ast": {
          "absolutePath": "contracts/mixins/LiquidationHelper.sol",
          "exportedSymbols": {
            "LiquidationHelper": [
              27816
            ]
          },
          "id": 27817,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 27665,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:98"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 27666,
              "nodeType": "ImportDirective",
              "scope": 27817,
              "sourceUnit": 4842,
              "src": "143:27:98",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 27667,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "466:5:98",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 27668,
                  "nodeType": "InheritanceSpecifier",
                  "src": "466:5:98"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title The Liquidation Helper contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized margin\ntrading and lending https://bzx.network similar to the dYdX protocol.\n * This contract computes the liquidation amount.\n",
              "fullyImplemented": true,
              "id": 27816,
              "linearizedBaseContracts": [
                27816,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "LiquidationHelper",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 27814,
                    "nodeType": "Block",
                    "src": "1400:1181:98",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 27687,
                            "name": "incentivePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27685,
                            "src": "1404:16:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 27688,
                            "name": "liquidationIncentivePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4698,
                            "src": "1423:27:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1404:46:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 27690,
                        "nodeType": "ExpressionStatement",
                        "src": "1404:46:98"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 27697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 27693,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 27691,
                              "name": "currentMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27674,
                              "src": "1458:13:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 27692,
                              "name": "maintenanceMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27676,
                              "src": "1474:17:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1458:33:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 27696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 27694,
                              "name": "collateralToLoanRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27678,
                              "src": "1495:20:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 27695,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1519:1:98",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1495:25:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1458:62:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 27706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 27704,
                              "name": "currentMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27674,
                              "src": "1597:13:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 27705,
                              "name": "incentivePercent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27685,
                              "src": "1614:16:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1597:33:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 27713,
                          "nodeType": "IfStatement",
                          "src": "1593:94:98",
                          "trueBody": {
                            "id": 27712,
                            "nodeType": "Block",
                            "src": "1632:55:98",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 27707,
                                      "name": "principal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27670,
                                      "src": "1645:9:98",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 27708,
                                      "name": "collateral",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27672,
                                      "src": "1656:10:98",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 27709,
                                      "name": "currentMargin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27674,
                                      "src": "1668:13:98",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 27710,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1644:38:98",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256)"
                                  }
                                },
                                "functionReturnParameters": 27686,
                                "id": 27711,
                                "nodeType": "Return",
                                "src": "1637:45:98"
                              }
                            ]
                          }
                        },
                        "id": 27714,
                        "nodeType": "IfStatement",
                        "src": "1454:233:98",
                        "trueBody": {
                          "id": 27703,
                          "nodeType": "Block",
                          "src": "1522:65:98",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 27698,
                                    "name": "maxLiquidatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27681,
                                    "src": "1535:15:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27699,
                                    "name": "maxSeizable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27683,
                                    "src": "1552:11:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 27700,
                                    "name": "incentivePercent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27685,
                                    "src": "1565:16:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 27701,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1534:48:98",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256,uint256)"
                                }
                              },
                              "functionReturnParameters": 27686,
                              "id": 27702,
                              "nodeType": "Return",
                              "src": "1527:55:98"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          27716
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27716,
                            "name": "desiredMargin",
                            "nodeType": "VariableDeclaration",
                            "scope": 27814,
                            "src": "1736:21:98",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27715,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1736:7:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27721,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "35",
                              "id": 27719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1782:7:98",
                              "subdenomination": "ether",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_5000000000000000000_by_1",
                                "typeString": "int_const 5000000000000000000"
                              },
                              "value": "5"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_5000000000000000000_by_1",
                                "typeString": "int_const 5000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 27717,
                              "name": "maintenanceMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27676,
                              "src": "1760:17:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 27718,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42076,
                            "src": "1760:21:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 27720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1760:30:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1736:54:98"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 27722,
                            "name": "maxLiquidatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27681,
                            "src": "1910:15:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "id": 27735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 27733,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1973:2:98",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3230",
                                  "id": 27734,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1977:2:98",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "1973:6:98",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 27730,
                                    "name": "principal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27670,
                                    "src": "1958:9:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                          "typeString": "int_const 100000000000000000000"
                                        },
                                        "id": 27727,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "3130",
                                          "id": 27725,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1946:2:98",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_10_by_1",
                                            "typeString": "int_const 10"
                                          },
                                          "value": "10"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "**",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "3230",
                                          "id": 27726,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1950:2:98",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_20_by_1",
                                            "typeString": "int_const 20"
                                          },
                                          "value": "20"
                                        },
                                        "src": "1946:6:98",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                          "typeString": "int_const 100000000000000000000"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                          "typeString": "int_const 100000000000000000000"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 27723,
                                        "name": "desiredMargin",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27716,
                                        "src": "1928:13:98",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 27724,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42076,
                                      "src": "1928:17:98",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 27728,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1928:25:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 27729,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "1928:29:98",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 27731,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1928:40:98",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27732,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "1928:44:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 27736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1928:52:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1910:70:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 27738,
                        "nodeType": "ExpressionStatement",
                        "src": "1910:70:98"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 27739,
                            "name": "maxLiquidatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27681,
                            "src": "1984:15:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    },
                                    "id": 27749,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 27747,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2063:2:98",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3138",
                                      "id": 27748,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2067:2:98",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_18_by_1",
                                        "typeString": "int_const 18"
                                      },
                                      "value": "18"
                                    },
                                    "src": "2063:6:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                      "typeString": "int_const 1000000000000000000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 27744,
                                        "name": "collateralToLoanRate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27678,
                                        "src": "2037:20:98",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 27742,
                                        "name": "collateral",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27672,
                                        "src": "2022:10:98",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 27743,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42153,
                                      "src": "2022:14:98",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 27745,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2022:36:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 27746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42169,
                                  "src": "2022:40:98",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 27750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2022:48:98",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 27740,
                                "name": "maxLiquidatable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27681,
                                "src": "2002:15:98",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27741,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "2002:19:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 27751,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2002:69:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1984:87:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 27753,
                        "nodeType": "ExpressionStatement",
                        "src": "1984:87:98"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 27754,
                            "name": "maxLiquidatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27681,
                            "src": "2075:15:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 27764,
                                    "name": "incentivePercent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27685,
                                    "src": "2143:16:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27762,
                                    "name": "desiredMargin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27716,
                                    "src": "2125:13:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 27763,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42092,
                                  "src": "2125:17:98",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 27765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2125:35:98",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                      "typeString": "int_const 100000000000000000000"
                                    },
                                    "id": 27759,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 27757,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2113:2:98",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3230",
                                      "id": 27758,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2117:2:98",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_20_by_1",
                                        "typeString": "int_const 20"
                                      },
                                      "value": "20"
                                    },
                                    "src": "2113:6:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                      "typeString": "int_const 100000000000000000000"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                      "typeString": "int_const 100000000000000000000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27755,
                                    "name": "maxLiquidatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27681,
                                    "src": "2093:15:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 27756,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "2093:19:98",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 27760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2093:27:98",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "2093:31:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 27766,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2093:68:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2075:86:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 27768,
                        "nodeType": "ExpressionStatement",
                        "src": "2075:86:98"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27771,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 27769,
                            "name": "maxLiquidatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27681,
                            "src": "2169:15:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 27770,
                            "name": "principal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27670,
                            "src": "2187:9:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2169:27:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 27777,
                        "nodeType": "IfStatement",
                        "src": "2165:70:98",
                        "trueBody": {
                          "id": 27776,
                          "nodeType": "Block",
                          "src": "2198:37:98",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27774,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 27772,
                                  "name": "maxLiquidatable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27681,
                                  "src": "2203:15:98",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 27773,
                                  "name": "principal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27670,
                                  "src": "2221:9:98",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2203:27:98",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27775,
                              "nodeType": "ExpressionStatement",
                              "src": "2203:27:98"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 27778,
                            "name": "maxSeizable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27683,
                            "src": "2323:11:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                      "typeString": "int_const 100000000000000000000"
                                    },
                                    "id": 27785,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 27783,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2378:2:98",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3230",
                                      "id": 27784,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2382:2:98",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_20_by_1",
                                        "typeString": "int_const 20"
                                      },
                                      "value": "20"
                                    },
                                    "src": "2378:6:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                      "typeString": "int_const 100000000000000000000"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                      "typeString": "int_const 100000000000000000000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27781,
                                    "name": "incentivePercent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27685,
                                    "src": "2357:16:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 27782,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "2357:20:98",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 27786,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2357:28:98",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 27779,
                                "name": "maxLiquidatable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27681,
                                "src": "2337:15:98",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42153,
                              "src": "2337:19:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 27787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2337:49:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2323:63:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 27789,
                        "nodeType": "ExpressionStatement",
                        "src": "2323:63:98"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 27790,
                            "name": "maxSeizable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27683,
                            "src": "2390:11:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "313030",
                                "id": 27796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2446:3:98",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                },
                                "value": "100"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 27793,
                                    "name": "collateralToLoanRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27678,
                                    "src": "2420:20:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27791,
                                    "name": "maxSeizable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27683,
                                    "src": "2404:11:98",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 27792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42169,
                                  "src": "2404:15:98",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 27794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2404:37:98",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27795,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "2404:41:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 27797,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2404:46:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2390:60:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 27799,
                        "nodeType": "ExpressionStatement",
                        "src": "2390:60:98"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 27800,
                            "name": "maxSeizable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27683,
                            "src": "2458:11:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 27801,
                            "name": "collateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27672,
                            "src": "2472:10:98",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2458:24:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 27808,
                        "nodeType": "IfStatement",
                        "src": "2454:64:98",
                        "trueBody": {
                          "id": 27807,
                          "nodeType": "Block",
                          "src": "2484:34:98",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 27803,
                                  "name": "maxSeizable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27683,
                                  "src": "2489:11:98",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 27804,
                                  "name": "collateral",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27672,
                                  "src": "2503:10:98",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2489:24:98",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27806,
                              "nodeType": "ExpressionStatement",
                              "src": "2489:24:98"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 27809,
                              "name": "maxLiquidatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27681,
                              "src": "2530:15:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27810,
                              "name": "maxSeizable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27683,
                              "src": "2547:11:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27811,
                              "name": "incentivePercent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27685,
                              "src": "2560:16:98",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 27812,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2529:48:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 27686,
                        "id": 27813,
                        "nodeType": "Return",
                        "src": "2522:55:98"
                      }
                    ]
                  },
                  "documentation": "@notice Compute how much needs to be liquidated in order to restore the\ndesired margin (maintenance + 5%).\n\t * @param principal The total borrowed amount (in loan tokens).\n@param collateral The collateral (in collateral tokens).\n@param currentMargin The current margin.\n@param maintenanceMargin The maintenance (minimum) margin.\n@param collateralToLoanRate The exchange rate from collateral to loan\n  tokens.\n\t * @return maxLiquidatable The collateral you can get liquidating.\n@return maxSeizable The loan you available for liquidation.\n@return incentivePercent The discount on collateral.\n",
                  "id": 27815,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getLiquidationAmounts",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27679,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27670,
                        "name": "principal",
                        "nodeType": "VariableDeclaration",
                        "scope": 27815,
                        "src": "1156:17:98",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27669,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1156:7:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27672,
                        "name": "collateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 27815,
                        "src": "1177:18:98",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27671,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1177:7:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27674,
                        "name": "currentMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 27815,
                        "src": "1199:21:98",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27673,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1199:7:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27676,
                        "name": "maintenanceMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 27815,
                        "src": "1224:25:98",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27675,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1224:7:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27678,
                        "name": "collateralToLoanRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 27815,
                        "src": "1253:28:98",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27677,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1253:7:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1152:132:98"
                  },
                  "returnParameters": {
                    "id": 27686,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27681,
                        "name": "maxLiquidatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 27815,
                        "src": "1318:23:98",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27680,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1318:7:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27683,
                        "name": "maxSeizable",
                        "nodeType": "VariableDeclaration",
                        "scope": 27815,
                        "src": "1346:19:98",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27682,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1346:7:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27685,
                        "name": "incentivePercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 27815,
                        "src": "1370:24:98",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27684,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1370:7:98",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1313:85:98"
                  },
                  "scope": 27816,
                  "src": "1121:1460:98",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 27817,
              "src": "436:2147:98"
            }
          ],
          "src": "118:2466:98"
        },
        "id": 98
      },
      "contracts/mixins/ModuleCommonFunctionalities.sol": {
        "ast": {
          "absolutePath": "contracts/mixins/ModuleCommonFunctionalities.sol",
          "exportedSymbols": {
            "ModuleCommonFunctionalities": [
              27832
            ]
          },
          "id": 27833,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 27818,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:99"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 27819,
              "nodeType": "ImportDirective",
              "scope": 27833,
              "sourceUnit": 4842,
              "src": "25:27:99",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 27820,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "94:5:99",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 27821,
                  "nodeType": "InheritanceSpecifier",
                  "src": "94:5:99"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 27832,
              "linearizedBaseContracts": [
                27832,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "ModuleCommonFunctionalities",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 27830,
                    "nodeType": "Block",
                    "src": "128:38:99",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "140:6:99",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 27824,
                                "name": "pause",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4798,
                                "src": "141:5:99",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506175736564",
                              "id": 27826,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "148:8:99",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0eeb5248cf3d8cd81a5ba6d3cc6e1997df7b174eb894aac081867c1a2bc43c90",
                                "typeString": "literal_string \"Paused\""
                              },
                              "value": "Paused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0eeb5248cf3d8cd81a5ba6d3cc6e1997df7b174eb894aac081867c1a2bc43c90",
                                "typeString": "literal_string \"Paused\""
                              }
                            ],
                            "id": 27823,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "132:7:99",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 27827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "132:25:99",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27828,
                        "nodeType": "ExpressionStatement",
                        "src": "132:25:99"
                      },
                      {
                        "id": 27829,
                        "nodeType": "PlaceholderStatement",
                        "src": "161:1:99"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 27831,
                  "name": "whenNotPaused",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 27822,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "125:2:99"
                  },
                  "src": "103:63:99",
                  "visibility": "internal"
                }
              ],
              "scope": 27833,
              "src": "54:114:99"
            }
          ],
          "src": "0:169:99"
        },
        "id": 99
      },
      "contracts/mixins/ProtocolTokenUser.sol": {
        "ast": {
          "absolutePath": "contracts/mixins/ProtocolTokenUser.sol",
          "exportedSymbols": {
            "ProtocolTokenUser": [
              27899
            ]
          },
          "id": 27900,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 27834,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:100"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 27835,
              "nodeType": "ImportDirective",
              "scope": 27900,
              "sourceUnit": 4842,
              "src": "143:27:100",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeERC20.sol",
              "file": "../openzeppelin/SafeERC20.sol",
              "id": 27836,
              "nodeType": "ImportDirective",
              "scope": 27900,
              "sourceUnit": 42050,
              "src": "171:39:100",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 27837,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "528:5:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 27838,
                  "nodeType": "InheritanceSpecifier",
                  "src": "528:5:100"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title The Protocol Token User contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized margin\ntrading and lending https://bzx.network similar to the dYdX protocol.\n * This contract implements functionality to withdraw protocol tokens.\n",
              "fullyImplemented": true,
              "id": 27899,
              "linearizedBaseContracts": [
                27899,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "ProtocolTokenUser",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 27841,
                  "libraryName": {
                    "contractScope": null,
                    "id": 27839,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42049,
                    "src": "543:9:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$42049",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "537:27:100",
                  "typeName": {
                    "contractScope": null,
                    "id": 27840,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "557:6:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "body": {
                    "id": 27897,
                    "nodeType": "Block",
                    "src": "964:404:100",
                    "statements": [
                      {
                        "assignments": [
                          27853
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27853,
                            "name": "withdrawAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 27897,
                            "src": "968:22:100",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27852,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "968:7:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27855,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 27854,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27845,
                          "src": "993:6:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "968:31:100"
                      },
                      {
                        "assignments": [
                          27857
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27857,
                            "name": "tokenBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 27897,
                            "src": "1004:20:100",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27856,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1004:7:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27859,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 27858,
                          "name": "protocolTokenHeld",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4682,
                          "src": "1027:17:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1004:40:100"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 27860,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27853,
                            "src": "1052:14:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 27861,
                            "name": "tokenBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27857,
                            "src": "1069:12:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1052:29:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 27868,
                        "nodeType": "IfStatement",
                        "src": "1048:74:100",
                        "trueBody": {
                          "id": 27867,
                          "nodeType": "Block",
                          "src": "1083:39:100",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 27863,
                                  "name": "withdrawAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27853,
                                  "src": "1088:14:100",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 27864,
                                  "name": "tokenBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27857,
                                  "src": "1105:12:100",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1088:29:100",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27866,
                              "nodeType": "ExpressionStatement",
                              "src": "1088:29:100"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 27869,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27853,
                            "src": "1129:14:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 27870,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1147:1:100",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1129:19:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 27877,
                        "nodeType": "IfStatement",
                        "src": "1125:71:100",
                        "trueBody": {
                          "id": 27876,
                          "nodeType": "Block",
                          "src": "1150:46:100",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 27872,
                                    "name": "protocolTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4739,
                                    "src": "1163:20:100",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "66616c7365",
                                    "id": 27873,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1185:5:100",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "id": 27874,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1162:29:100",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                                  "typeString": "tuple(address,bool)"
                                }
                              },
                              "functionReturnParameters": 27851,
                              "id": 27875,
                              "nodeType": "Return",
                              "src": "1155:36:100"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 27878,
                            "name": "protocolTokenHeld",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4682,
                            "src": "1200:17:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 27881,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27853,
                                "src": "1237:14:100",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 27879,
                                "name": "tokenBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27857,
                                "src": "1220:12:100",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 27880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "1220:16:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 27882,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1220:32:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1200:52:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 27884,
                        "nodeType": "ExpressionStatement",
                        "src": "1200:52:100"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27889,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27843,
                              "src": "1299:8:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27890,
                              "name": "withdrawAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27853,
                              "src": "1309:14:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27886,
                                  "name": "protocolTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4739,
                                  "src": "1264:20:100",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 27885,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "1257:6:100",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 27887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1257:28:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 27888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 41862,
                            "src": "1257:41:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 27891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1257:67:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27892,
                        "nodeType": "ExpressionStatement",
                        "src": "1257:67:100"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 27893,
                              "name": "protocolTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4739,
                              "src": "1337:20:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 27894,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1359:4:100",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "id": 27895,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1336:28:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                            "typeString": "tuple(address,bool)"
                          }
                        },
                        "functionReturnParameters": 27851,
                        "id": 27896,
                        "nodeType": "Return",
                        "src": "1329:35:100"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to withdraw an amount of protocol tokens from this contract.\n\t * @param receiver The address of the recipient.\n@param amount The amount of tokens to withdraw.\n\t * @return The protocol token address.\n@return Withdrawal success (true/false).\n",
                  "id": 27898,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_withdrawProtocolToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27846,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27843,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 27898,
                        "src": "897:16:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27842,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "897:7:100",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27845,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 27898,
                        "src": "915:14:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27844,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "915:7:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "896:34:100"
                  },
                  "returnParameters": {
                    "id": 27851,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27848,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 27898,
                        "src": "949:7:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27847,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "949:7:100",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27850,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 27898,
                        "src": "958:4:100",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27849,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "958:4:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "948:15:100"
                  },
                  "scope": 27899,
                  "src": "865:503:100",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 27900,
              "src": "498:872:100"
            }
          ],
          "src": "118:1253:100"
        },
        "id": 100
      },
      "contracts/mixins/RewardHelper.sol": {
        "ast": {
          "absolutePath": "contracts/mixins/RewardHelper.sol",
          "exportedSymbols": {
            "RewardHelper": [
              27961
            ]
          },
          "id": 27962,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 27901,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:101"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 27902,
              "nodeType": "ImportDirective",
              "scope": 27962,
              "sourceUnit": 4842,
              "src": "25:27:101",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/feeds/IPriceFeeds.sol",
              "file": "../feeds/IPriceFeeds.sol",
              "id": 27903,
              "nodeType": "ImportDirective",
              "scope": 27962,
              "sourceUnit": 8708,
              "src": "53:34:101",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 27904,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "484:5:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 27905,
                  "nodeType": "InheritanceSpecifier",
                  "src": "484:5:101"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title The Reward Helper contract.\n@notice This contract calculates the reward for rollover transactions.\n * A rollover is a renewal of a deposit. Instead of liquidating a deposit\non maturity, you can roll it over into a new deposit. The outstanding\nprincipal of the old deposit is rolled over with or without the interest\noutstanding on it.\n",
              "fullyImplemented": true,
              "id": 27961,
              "linearizedBaseContracts": [
                27961,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "RewardHelper",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 27908,
                  "libraryName": {
                    "contractScope": null,
                    "id": 27906,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "499:8:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "493:27:101",
                  "typeName": {
                    "id": 27907,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "512:7:101",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "body": {
                    "id": 27959,
                    "nodeType": "Block",
                    "src": "961:461:101",
                    "statements": [
                      {
                        "assignments": [
                          27920
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27920,
                            "name": "positionSizeInCollateralToken",
                            "nodeType": "VariableDeclaration",
                            "scope": 27959,
                            "src": "965:37:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27919,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "965:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27929,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27925,
                              "name": "loanToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27912,
                              "src": "1041:9:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27926,
                              "name": "collateralToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27910,
                              "src": "1052:15:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27927,
                              "name": "positionSize",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27914,
                              "src": "1069:12:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27922,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "1017:10:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 27921,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "1005:11:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 27923,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1005:23:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 27924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queryReturn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8615,
                            "src": "1005:35:101",
                            "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": 27928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1005:77:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "965:117:101"
                      },
                      {
                        "assignments": [
                          27931
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27931,
                            "name": "rolloverBaseRewardInCollateralToken",
                            "nodeType": "VariableDeclaration",
                            "scope": 27959,
                            "src": "1086:43:101",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27930,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1086:7:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27942,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27937,
                                  "name": "wrbtcToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4737,
                                  "src": "1179:10:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                    "typeString": "contract IWrbtcERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                    "typeString": "contract IWrbtcERC20"
                                  }
                                ],
                                "id": 27936,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1171:7:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 27938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1171:19:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27939,
                              "name": "collateralToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27910,
                              "src": "1192:15:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27940,
                              "name": "rolloverBaseReward",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4732,
                              "src": "1209:18:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27933,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "1147:10:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 27932,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "1135:11:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 27934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1135:23:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 27935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queryReturn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8615,
                            "src": "1135:35:101",
                            "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": 27941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1135:93:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1086:142:101"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                    "typeString": "int_const 100000000000000000000"
                                  },
                                  "id": 27955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 27953,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1374:2:101",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3230",
                                    "id": 27954,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1378:2:101",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_20_by_1",
                                      "typeString": "int_const 20"
                                    },
                                    "value": "20"
                                  },
                                  "src": "1374:6:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                    "typeString": "int_const 100000000000000000000"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                    "typeString": "int_const 100000000000000000000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 27950,
                                      "name": "rolloverFlexFeePercent",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4735,
                                      "src": "1346:22:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 27948,
                                      "name": "positionSizeInCollateralToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27920,
                                      "src": "1312:29:101",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 27949,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42153,
                                    "src": "1312:33:101",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 27951,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1312:57:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 27952,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42169,
                                "src": "1312:61:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27956,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1312:69:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 27945,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1288:1:101",
                                  "subdenomination": null,
                                  "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"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27943,
                                  "name": "rolloverBaseRewardInCollateralToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27931,
                                  "src": "1243:35:101",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 27944,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "1243:44:101",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1243:47:101",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 27947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42076,
                            "src": "1243:68:101",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 27957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1243:139:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 27918,
                        "id": 27958,
                        "nodeType": "Return",
                        "src": "1233:149:101"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the reward of a rollover transaction.\n\t * @param collateralToken The address of the collateral token.\n@param loanToken The address of the loan token.\n@param positionSize The amount of value of the position.\n\t * @return The base fee + the flex fee.",
                  "id": 27960,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getRolloverReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27915,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27910,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 27960,
                        "src": "850:23:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27909,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "850:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27912,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 27960,
                        "src": "877:17:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27911,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "877:7:101",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27914,
                        "name": "positionSize",
                        "nodeType": "VariableDeclaration",
                        "scope": 27960,
                        "src": "898:20:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27913,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "898:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "846:75:101"
                  },
                  "returnParameters": {
                    "id": 27918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27917,
                        "name": "reward",
                        "nodeType": "VariableDeclaration",
                        "scope": 27960,
                        "src": "945:14:101",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27916,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "945:7:101",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "944:16:101"
                  },
                  "scope": 27961,
                  "src": "819:603:101",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 27962,
              "src": "459:965:101"
            }
          ],
          "src": "0:1425:101"
        },
        "id": 101
      },
      "contracts/mixins/VaultController.sol": {
        "ast": {
          "absolutePath": "contracts/mixins/VaultController.sol",
          "exportedSymbols": {
            "VaultController": [
              28214
            ]
          },
          "id": 28215,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 27963,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:102"
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeERC20.sol",
              "file": "../openzeppelin/SafeERC20.sol",
              "id": 27964,
              "nodeType": "ImportDirective",
              "scope": 28215,
              "sourceUnit": 42050,
              "src": "143:39:102",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 27965,
              "nodeType": "ImportDirective",
              "scope": 28215,
              "sourceUnit": 4842,
              "src": "183:27:102",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 27966,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "560:5:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 27967,
                  "nodeType": "InheritanceSpecifier",
                  "src": "560:5:102"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title The Vault Controller contract.\n@notice This contract code comes from bZx. bZx is a protocol for tokenized margin\ntrading and lending https://bzx.network similar to the dYdX protocol.\n * This contract implements functionality to deposit and withdraw wrBTC and\nother tokens from the vault.\n",
              "fullyImplemented": true,
              "id": 28214,
              "linearizedBaseContracts": [
                28214,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "VaultController",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 27970,
                  "libraryName": {
                    "contractScope": null,
                    "id": 27968,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42049,
                    "src": "575:9:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$42049",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "569:27:102",
                  "typeName": {
                    "contractScope": null,
                    "id": 27969,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "589:6:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 27978,
                  "name": "VaultDeposit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 27977,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27972,
                        "indexed": true,
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "scope": 27978,
                        "src": "618:21:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27971,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "618:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27974,
                        "indexed": true,
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 27978,
                        "src": "641:20:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27973,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "641:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27976,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 27978,
                        "src": "663:14:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27975,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "663:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "617:61:102"
                  },
                  "src": "599:80:102"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 27986,
                  "name": "VaultWithdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 27985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27980,
                        "indexed": true,
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "scope": 27986,
                        "src": "701:21:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27979,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "701:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27982,
                        "indexed": true,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 27986,
                        "src": "724:18:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27981,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "724:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27984,
                        "indexed": false,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 27986,
                        "src": "744:14:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27983,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "744:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "700:59:102"
                  },
                  "src": "681:79:102"
                },
                {
                  "body": {
                    "id": 28014,
                    "nodeType": "Block",
                    "src": "1004:139:102",
                    "statements": [
                      {
                        "assignments": [
                          27994
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27994,
                            "name": "_wrbtcToken",
                            "nodeType": "VariableDeclaration",
                            "scope": 28014,
                            "src": "1008:23:102",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                              "typeString": "contract IWrbtcERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 27993,
                              "name": "IWrbtcERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 25559,
                              "src": "1008:11:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                "typeString": "contract IWrbtcERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27996,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 27995,
                          "name": "wrbtcToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4737,
                          "src": "1034:10:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                            "typeString": "contract IWrbtcERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1008:36:102"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 28002,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27990,
                                "src": "1074:5:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27997,
                                  "name": "_wrbtcToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27994,
                                  "src": "1048:11:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                    "typeString": "contract IWrbtcERC20"
                                  }
                                },
                                "id": 28000,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "deposit",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25544,
                                "src": "1048:19:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                  "typeString": "function () payable external"
                                }
                              },
                              "id": 28001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1048:25:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$",
                                "typeString": "function (uint256) pure returns (function () payable external)"
                              }
                            },
                            "id": 28003,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1048:32:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 28004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1048:34:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28005,
                        "nodeType": "ExpressionStatement",
                        "src": "1048:34:102"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 28008,
                                  "name": "_wrbtcToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27994,
                                  "src": "1113:11:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                    "typeString": "contract IWrbtcERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                    "typeString": "contract IWrbtcERC20"
                                  }
                                ],
                                "id": 28007,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1105:7:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 28009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1105:20:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28010,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27988,
                              "src": "1127:4:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28011,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27990,
                              "src": "1133:5:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 28006,
                            "name": "VaultDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27978,
                            "src": "1092:12:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 28012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1092:47:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28013,
                        "nodeType": "EmitStatement",
                        "src": "1087:52:102"
                      }
                    ]
                  },
                  "documentation": "@notice Deposit wrBTC into the vault.\n\t * @param from The address of the account paying the deposit.\n@param value The amount of wrBTC tokens to transfer.",
                  "id": 28015,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "vaultEtherDeposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27991,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27988,
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 28015,
                        "src": "966:12:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27987,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "966:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27990,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 28015,
                        "src": "980:13:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27989,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "980:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "965:29:102"
                  },
                  "returnParameters": {
                    "id": 27992,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1004:0:102"
                  },
                  "scope": 28214,
                  "src": "939:204:102",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28066,
                    "nodeType": "Block",
                    "src": "1368:277:102",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 28024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 28022,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28019,
                            "src": "1376:5:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 28023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1385:1:102",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1376:10:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 28065,
                        "nodeType": "IfStatement",
                        "src": "1372:270:102",
                        "trueBody": {
                          "id": 28064,
                          "nodeType": "Block",
                          "src": "1388:254:102",
                          "statements": [
                            {
                              "assignments": [
                                28026
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 28026,
                                  "name": "_wrbtcToken",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 28064,
                                  "src": "1393:23:102",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                    "typeString": "contract IWrbtcERC20"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 28025,
                                    "name": "IWrbtcERC20",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 25559,
                                    "src": "1393:11:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                      "typeString": "contract IWrbtcERC20"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 28028,
                              "initialValue": {
                                "argumentTypes": null,
                                "id": 28027,
                                "name": "wrbtcToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4737,
                                "src": "1419:10:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                  "typeString": "contract IWrbtcERC20"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1393:36:102"
                            },
                            {
                              "assignments": [
                                28030
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 28030,
                                  "name": "balance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 28064,
                                  "src": "1434:15:102",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 28029,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1434:7:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 28035,
                              "initialValue": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 28032,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45254,
                                      "src": "1460:4:102",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_VaultController_$28214",
                                        "typeString": "contract VaultController"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_VaultController_$28214",
                                        "typeString": "contract VaultController"
                                      }
                                    ],
                                    "id": 28031,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1452:7:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 28033,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1452:13:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 28034,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1452:21:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1434:39:102"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 28038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 28036,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28019,
                                  "src": "1482:5:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 28037,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28030,
                                  "src": "1490:7:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1482:15:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 28048,
                              "nodeType": "IfStatement",
                              "src": "1478:70:102",
                              "trueBody": {
                                "id": 28047,
                                "nodeType": "Block",
                                "src": "1499:49:102",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 28044,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 28042,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 28019,
                                            "src": "1526:5:102",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 28043,
                                            "name": "balance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 28030,
                                            "src": "1534:7:102",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "1526:15:102",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 28039,
                                          "name": "_wrbtcToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 28026,
                                          "src": "1505:11:102",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                            "typeString": "contract IWrbtcERC20"
                                          }
                                        },
                                        "id": 28041,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "withdraw",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 25549,
                                        "src": "1505:20:102",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                          "typeString": "function (uint256) external"
                                        }
                                      },
                                      "id": 28045,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1505:37:102",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 28046,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1505:37:102"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 28052,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28017,
                                    "src": "1570:2:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 28053,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28019,
                                    "src": "1574:5:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28049,
                                    "name": "Address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 41098,
                                    "src": "1552:7:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                      "typeString": "type(library Address)"
                                    }
                                  },
                                  "id": 28051,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sendValue",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 41097,
                                  "src": "1552:17:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 28054,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1552:28:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 28055,
                              "nodeType": "ExpressionStatement",
                              "src": "1552:28:102"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 28058,
                                        "name": "_wrbtcToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28026,
                                        "src": "1613:11:102",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                          "typeString": "contract IWrbtcERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                          "typeString": "contract IWrbtcERC20"
                                        }
                                      ],
                                      "id": 28057,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1605:7:102",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 28059,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1605:20:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 28060,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28017,
                                    "src": "1627:2:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 28061,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28019,
                                    "src": "1631:5:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 28056,
                                  "name": "VaultWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27986,
                                  "src": "1591:13:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 28062,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1591:46:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 28063,
                              "nodeType": "EmitStatement",
                              "src": "1586:51:102"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Withdraw wrBTC from the vault.\n\t * @param to The address of the recipient.\n@param value The amount of wrBTC tokens to transfer.",
                  "id": 28067,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "vaultEtherWithdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28020,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28017,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 28067,
                        "src": "1332:10:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28016,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1332:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28019,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 28067,
                        "src": "1344:13:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28018,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1344:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1331:27:102"
                  },
                  "returnParameters": {
                    "id": 28021,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1368:0:102"
                  },
                  "scope": 28214,
                  "src": "1304:341:102",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28098,
                    "nodeType": "Block",
                    "src": "1955:134:102",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 28078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 28076,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28073,
                            "src": "1963:5:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 28077,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1972:1:102",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1963:10:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 28097,
                        "nodeType": "IfStatement",
                        "src": "1959:127:102",
                        "trueBody": {
                          "id": 28096,
                          "nodeType": "Block",
                          "src": "1975:111:102",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 28083,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28071,
                                    "src": "2011:4:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 28085,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 45254,
                                        "src": "2025:4:102",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_VaultController_$28214",
                                          "typeString": "contract VaultController"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_VaultController_$28214",
                                          "typeString": "contract VaultController"
                                        }
                                      ],
                                      "id": 28084,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2017:7:102",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 28086,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2017:13:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 28087,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28073,
                                    "src": "2032:5:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 28080,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28069,
                                        "src": "1987:5:102",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 28079,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24699,
                                      "src": "1980:6:102",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 28081,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1980:13:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 28082,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 41887,
                                  "src": "1980:30:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                                    "typeString": "function (contract IERC20,address,address,uint256)"
                                  }
                                },
                                "id": 28088,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1980:58:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 28089,
                              "nodeType": "ExpressionStatement",
                              "src": "1980:58:102"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 28091,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28069,
                                    "src": "2062:5:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 28092,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28071,
                                    "src": "2069:4:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 28093,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28073,
                                    "src": "2075:5:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 28090,
                                  "name": "VaultDeposit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27978,
                                  "src": "2049:12:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 28094,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2049:32:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 28095,
                              "nodeType": "EmitStatement",
                              "src": "2044:37:102"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Deposit tokens into the vault.\n\t * @param token The address of the token instance.\n@param from The address of the account paying the deposit.\n@param value The amount of tokens to transfer.",
                  "id": 28099,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "vaultDeposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28074,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28069,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 28099,
                        "src": "1896:13:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28068,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1896:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28071,
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 28099,
                        "src": "1913:12:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28070,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1913:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28073,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 28099,
                        "src": "1929:13:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28072,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1929:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1892:53:102"
                  },
                  "returnParameters": {
                    "id": 28075,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1955:0:102"
                  },
                  "scope": 28214,
                  "src": "1871:218:102",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28127,
                    "nodeType": "Block",
                    "src": "2380:112:102",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 28110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 28108,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28105,
                            "src": "2388:5:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 28109,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2397:1:102",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2388:10:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 28126,
                        "nodeType": "IfStatement",
                        "src": "2384:105:102",
                        "trueBody": {
                          "id": 28125,
                          "nodeType": "Block",
                          "src": "2400:89:102",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 28115,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28103,
                                    "src": "2432:2:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 28116,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28105,
                                    "src": "2436:5:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 28112,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28101,
                                        "src": "2412:5:102",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 28111,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24699,
                                      "src": "2405:6:102",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 28113,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2405:13:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 28114,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 41862,
                                  "src": "2405:26:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 28117,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2405:37:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 28118,
                              "nodeType": "ExpressionStatement",
                              "src": "2405:37:102"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 28120,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28101,
                                    "src": "2467:5:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 28121,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28103,
                                    "src": "2474:2:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 28122,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28105,
                                    "src": "2478:5:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 28119,
                                  "name": "VaultWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27986,
                                  "src": "2453:13:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 28123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2453:31:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 28124,
                              "nodeType": "EmitStatement",
                              "src": "2448:36:102"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Withdraw tokens from the vault.\n\t * @param token The address of the token instance.\n@param to The address of the recipient.\n@param value The amount of tokens to transfer.",
                  "id": 28128,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "vaultWithdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28101,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 28128,
                        "src": "2323:13:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28100,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2323:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28103,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 28128,
                        "src": "2340:10:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28102,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2340:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28105,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 28128,
                        "src": "2354:13:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28104,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2354:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2319:51:102"
                  },
                  "returnParameters": {
                    "id": 28107,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2380:0:102"
                  },
                  "scope": 28214,
                  "src": "2297:195:102",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28169,
                    "nodeType": "Block",
                    "src": "2868:173:102",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 28141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 28139,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28136,
                            "src": "2876:5:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 28140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2885:1:102",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2876:10:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 28168,
                        "nodeType": "IfStatement",
                        "src": "2872:166:102",
                        "trueBody": {
                          "id": 28167,
                          "nodeType": "Block",
                          "src": "2888:150:102",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 28146,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 28142,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28132,
                                  "src": "2897:4:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 28144,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45254,
                                      "src": "2913:4:102",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_VaultController_$28214",
                                        "typeString": "contract VaultController"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_VaultController_$28214",
                                        "typeString": "contract VaultController"
                                      }
                                    ],
                                    "id": 28143,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2905:7:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 28145,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2905:13:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2897:21:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 28165,
                                "nodeType": "Block",
                                "src": "2975:59:102",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 28160,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 28132,
                                          "src": "3012:4:102",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 28161,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 28134,
                                          "src": "3018:2:102",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 28162,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 28136,
                                          "src": "3022:5:102",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 28157,
                                              "name": "token",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 28130,
                                              "src": "2988:5:102",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 28156,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24699,
                                            "src": "2981:6:102",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                              "typeString": "type(contract IERC20)"
                                            }
                                          },
                                          "id": 28158,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2981:13:102",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$24699",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 28159,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "safeTransferFrom",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 41887,
                                        "src": "2981:30:102",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                                          "typeString": "function (contract IERC20,address,address,uint256)"
                                        }
                                      },
                                      "id": 28163,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2981:47:102",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 28164,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2981:47:102"
                                  }
                                ]
                              },
                              "id": 28166,
                              "nodeType": "IfStatement",
                              "src": "2893:141:102",
                              "trueBody": {
                                "id": 28155,
                                "nodeType": "Block",
                                "src": "2920:49:102",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 28151,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 28134,
                                          "src": "2953:2:102",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 28152,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 28136,
                                          "src": "2957:5:102",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 28148,
                                              "name": "token",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 28130,
                                              "src": "2933:5:102",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 28147,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24699,
                                            "src": "2926:6:102",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                              "typeString": "type(contract IERC20)"
                                            }
                                          },
                                          "id": 28149,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2926:13:102",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$24699",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 28150,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "safeTransfer",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 41862,
                                        "src": "2926:26:102",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                                          "typeString": "function (contract IERC20,address,uint256)"
                                        }
                                      },
                                      "id": 28153,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2926:37:102",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 28154,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2926:37:102"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Transfer tokens from an account into another one.\n\t * @param token The address of the token instance.\n@param from The address of the account paying.\n@param to The address of the recipient.\n@param value The amount of tokens to transfer.",
                  "id": 28170,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "vaultTransfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28137,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28130,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 28170,
                        "src": "2795:13:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28129,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2795:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28132,
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 28170,
                        "src": "2812:12:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28131,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2812:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28134,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 28170,
                        "src": "2828:10:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28133,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2828:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28136,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 28170,
                        "src": "2842:13:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28135,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2842:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2791:67:102"
                  },
                  "returnParameters": {
                    "id": 28138,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2868:0:102"
                  },
                  "scope": 28214,
                  "src": "2769:272:102",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28212,
                    "nodeType": "Block",
                    "src": "3352:156:102",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 28193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 28181,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 28179,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28176,
                              "src": "3360:5:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 28180,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3369:1:102",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3360:10:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 28192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 28187,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45254,
                                      "src": "3406:4:102",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_VaultController_$28214",
                                        "typeString": "contract VaultController"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_VaultController_$28214",
                                        "typeString": "contract VaultController"
                                      }
                                    ],
                                    "id": 28186,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3398:7:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 28188,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3398:13:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 28189,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28174,
                                  "src": "3413:2:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 28183,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 28172,
                                      "src": "3381:5:102",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 28182,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24699,
                                    "src": "3374:6:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 28184,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3374:13:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 28185,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "allowance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24653,
                                "src": "3374:23:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address,address) view external returns (uint256)"
                                }
                              },
                              "id": 28190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3374:42:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 28191,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3420:1:102",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3374:47:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3360:61:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 28203,
                        "nodeType": "IfStatement",
                        "src": "3356:109:102",
                        "trueBody": {
                          "id": 28202,
                          "nodeType": "Block",
                          "src": "3423:42:102",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 28198,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28174,
                                    "src": "3454:2:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 28199,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3458:1:102",
                                    "subdenomination": null,
                                    "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": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 28195,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28172,
                                        "src": "3435:5:102",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 28194,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24699,
                                      "src": "3428:6:102",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 28196,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3428:13:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 28197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeApprove",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 41928,
                                  "src": "3428:25:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 28200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3428:32:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 28201,
                              "nodeType": "ExpressionStatement",
                              "src": "3428:32:102"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28208,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28174,
                              "src": "3494:2:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28209,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28176,
                              "src": "3498:5:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 28205,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28172,
                                  "src": "3475:5:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 28204,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "3468:6:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 28206,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3468:13:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 28207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 41928,
                            "src": "3468:25:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 28210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3468:36:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28211,
                        "nodeType": "ExpressionStatement",
                        "src": "3468:36:102"
                      }
                    ]
                  },
                  "documentation": "@notice Approve an allowance of tokens to be spent by an account.\n\t * @param token The address of the token instance.\n@param to The address of the spender.\n@param value The amount of tokens to allow.",
                  "id": 28213,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "vaultApprove",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28172,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 28213,
                        "src": "3295:13:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28171,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3295:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28174,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 28213,
                        "src": "3312:10:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28173,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3312:7:102",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28176,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 28213,
                        "src": "3326:13:102",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28175,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3326:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3291:51:102"
                  },
                  "returnParameters": {
                    "id": 28178,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3352:0:102"
                  },
                  "scope": 28214,
                  "src": "3270:238:102",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 28215,
              "src": "532:2978:102"
            }
          ],
          "src": "118:3393:102"
        },
        "id": 102
      },
      "contracts/mockup/BlockMockUp.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/BlockMockUp.sol",
          "exportedSymbols": {
            "BlockMockUp": [
              28237
            ]
          },
          "id": 28238,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 28216,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:103"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title Used to get and set mock block number.",
              "fullyImplemented": true,
              "id": 28237,
              "linearizedBaseContracts": [
                28237
              ],
              "name": "BlockMockUp",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 28218,
                  "name": "blockNum",
                  "nodeType": "VariableDeclaration",
                  "scope": 28237,
                  "src": "106:23:103",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 28217,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "106:7:103",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28225,
                    "nodeType": "Block",
                    "src": "281:23:103",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28223,
                          "name": "blockNum",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28218,
                          "src": "292:8:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 28222,
                        "id": 28224,
                        "nodeType": "Return",
                        "src": "285:15:103"
                      }
                    ]
                  },
                  "documentation": "@notice To get the `blockNum`.\n@return _blockNum The block number.",
                  "id": 28226,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBlockNum",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28219,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "238:2:103"
                  },
                  "returnParameters": {
                    "id": 28222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28221,
                        "name": "_blockNum",
                        "nodeType": "VariableDeclaration",
                        "scope": 28226,
                        "src": "262:17:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28220,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "262:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "261:19:103"
                  },
                  "scope": 28237,
                  "src": "218:86:103",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28235,
                    "nodeType": "Block",
                    "src": "438:28:103",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 28231,
                            "name": "blockNum",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28218,
                            "src": "442:8:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 28232,
                            "name": "_blockNum",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28228,
                            "src": "453:9:103",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "442:20:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 28234,
                        "nodeType": "ExpressionStatement",
                        "src": "442:20:103"
                      }
                    ]
                  },
                  "documentation": "@notice To set the `blockNum`.\n@param _blockNum The block number.",
                  "id": 28236,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setBlockNum",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28229,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28228,
                        "name": "_blockNum",
                        "nodeType": "VariableDeclaration",
                        "scope": 28236,
                        "src": "412:17:103",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28227,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "412:7:103",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "411:19:103"
                  },
                  "returnParameters": {
                    "id": 28230,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "438:0:103"
                  },
                  "scope": 28237,
                  "src": "391:75:103",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 28238,
              "src": "82:386:103"
            }
          ],
          "src": "0:469:103"
        },
        "id": 103
      },
      "contracts/mockup/FeeSharingProxyMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/FeeSharingProxyMockup.sol",
          "exportedSymbols": {
            "FeeSharingProxyMockup": [
              28282
            ]
          },
          "id": 28283,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 28239,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:104"
            },
            {
              "absolutePath": "contracts/governance/FeeSharingProxy.sol",
              "file": "../governance/FeeSharingProxy.sol",
              "id": 28240,
              "nodeType": "ImportDirective",
              "scope": 28283,
              "sourceUnit": 11604,
              "src": "26:43:104",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 28241,
                    "name": "FeeSharingProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11576,
                    "src": "105:15:104",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeSharingProxy_$11576",
                      "typeString": "contract FeeSharingProxy"
                    }
                  },
                  "id": 28242,
                  "nodeType": "InheritanceSpecifier",
                  "src": "105:15:104"
                }
              ],
              "contractDependencies": [
                11576,
                13112,
                13959
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 28282,
              "linearizedBaseContracts": [
                28282,
                11576,
                13112,
                13959
              ],
              "name": "FeeSharingProxyMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "FeeSharingProxyMockup.TestData",
                  "id": 28249,
                  "members": [
                    {
                      "constant": false,
                      "id": 28244,
                      "name": "loanPoolToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 28249,
                      "src": "144:21:104",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 28243,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "144:7:104",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 28246,
                      "name": "maxCheckpoints",
                      "nodeType": "VariableDeclaration",
                      "scope": 28249,
                      "src": "169:21:104",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 28245,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "169:6:104",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 28248,
                      "name": "receiver",
                      "nodeType": "VariableDeclaration",
                      "scope": 28249,
                      "src": "194:16:104",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 28247,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "194:7:104",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "TestData",
                  "nodeType": "StructDefinition",
                  "scope": 28282,
                  "src": "124:90:104",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 28251,
                  "name": "testData",
                  "nodeType": "VariableDeclaration",
                  "scope": 28282,
                  "src": "217:24:104",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_TestData_$28249_storage",
                    "typeString": "struct FeeSharingProxyMockup.TestData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 28250,
                    "name": "TestData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28249,
                    "src": "217:8:104",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_TestData_$28249_storage_ptr",
                      "typeString": "struct FeeSharingProxyMockup.TestData"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28262,
                    "nodeType": "Block",
                    "src": "341:2:104",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 28263,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 28258,
                          "name": "_protocol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28253,
                          "src": "320:9:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IProtocol_$11593",
                            "typeString": "contract IProtocol"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 28259,
                          "name": "_staking",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28255,
                          "src": "331:8:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IStaking_$13773",
                            "typeString": "contract IStaking"
                          }
                        }
                      ],
                      "id": 28260,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 28257,
                        "name": "FeeSharingProxy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11576,
                        "src": "304:15:104",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_FeeSharingProxy_$11576_$",
                          "typeString": "type(contract FeeSharingProxy)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "304:36:104"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28256,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28253,
                        "name": "_protocol",
                        "nodeType": "VariableDeclaration",
                        "scope": 28263,
                        "src": "257:19:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IProtocol_$11593",
                          "typeString": "contract IProtocol"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 28252,
                          "name": "IProtocol",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 11593,
                          "src": "257:9:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IProtocol_$11593",
                            "typeString": "contract IProtocol"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28255,
                        "name": "_staking",
                        "nodeType": "VariableDeclaration",
                        "scope": 28263,
                        "src": "278:17:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IStaking_$13773",
                          "typeString": "contract IStaking"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 28254,
                          "name": "IStaking",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 13773,
                          "src": "278:8:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IStaking_$13773",
                            "typeString": "contract IStaking"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "256:40:104"
                  },
                  "returnParameters": {
                    "id": 28261,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "341:0:104"
                  },
                  "scope": 28282,
                  "src": "245:98:104",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28280,
                    "nodeType": "Block",
                    "src": "447:71:104",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 28272,
                            "name": "testData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28251,
                            "src": "451:8:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TestData_$28249_storage",
                              "typeString": "struct FeeSharingProxyMockup.TestData storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 28274,
                                "name": "_loanPoolToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28265,
                                "src": "471:14:104",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 28275,
                                "name": "_maxCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28267,
                                "src": "487:15:104",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 28276,
                                "name": "_receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28269,
                                "src": "504:9:104",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 28273,
                              "name": "TestData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28249,
                              "src": "462:8:104",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_TestData_$28249_storage_ptr_$",
                                "typeString": "type(struct FeeSharingProxyMockup.TestData storage pointer)"
                              }
                            },
                            "id": 28277,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "462:52:104",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TestData_$28249_memory",
                              "typeString": "struct FeeSharingProxyMockup.TestData memory"
                            }
                          },
                          "src": "451:63:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TestData_$28249_storage",
                            "typeString": "struct FeeSharingProxyMockup.TestData storage ref"
                          }
                        },
                        "id": 28279,
                        "nodeType": "ExpressionStatement",
                        "src": "451:63:104"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28281,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28270,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28265,
                        "name": "_loanPoolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 28281,
                        "src": "367:22:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28264,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "367:7:104",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28267,
                        "name": "_maxCheckpoints",
                        "nodeType": "VariableDeclaration",
                        "scope": 28281,
                        "src": "393:22:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 28266,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "393:6:104",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28269,
                        "name": "_receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 28281,
                        "src": "419:17:104",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28268,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "419:7:104",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "363:76:104"
                  },
                  "returnParameters": {
                    "id": 28271,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "447:0:104"
                  },
                  "scope": 28282,
                  "src": "346:172:104",
                  "stateMutability": "nonpayable",
                  "superFunction": 11195,
                  "visibility": "public"
                }
              ],
              "scope": 28283,
              "src": "71:449:104"
            }
          ],
          "src": "0:521:104"
        },
        "id": 104
      },
      "contracts/mockup/GovernorAlphaMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/GovernorAlphaMockup.sol",
          "exportedSymbols": {
            "GovernorAlphaMockup": [
              28344
            ]
          },
          "id": 28345,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 28284,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:105"
            },
            {
              "id": 28285,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:105"
            },
            {
              "absolutePath": "contracts/governance/GovernorAlpha.sol",
              "file": "../governance/GovernorAlpha.sol",
              "id": 28286,
              "nodeType": "ImportDirective",
              "scope": 28345,
              "sourceUnit": 12967,
              "src": "60:41:105",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 28287,
                    "name": "GovernorAlpha",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12881,
                    "src": "135:13:105",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_GovernorAlpha_$12881",
                      "typeString": "contract GovernorAlpha"
                    }
                  },
                  "id": 28288,
                  "nodeType": "InheritanceSpecifier",
                  "src": "135:13:105"
                }
              ],
              "contractDependencies": [
                12881,
                13959
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 28344,
              "linearizedBaseContracts": [
                28344,
                12881,
                13959
              ],
              "name": "GovernorAlphaMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 28308,
                    "nodeType": "Block",
                    "src": "370:2:105",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 28309,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 28301,
                          "name": "timelock_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28290,
                          "src": "303:9:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 28302,
                          "name": "staking_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28292,
                          "src": "314:8:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 28303,
                          "name": "guardian_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28294,
                          "src": "324:9:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 28304,
                          "name": "quorumVotes_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28296,
                          "src": "335:12:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 28305,
                          "name": "_minPercentageVotes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28298,
                          "src": "349:19:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        }
                      ],
                      "id": 28306,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 28300,
                        "name": "GovernorAlpha",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12881,
                        "src": "289:13:105",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_GovernorAlpha_$12881_$",
                          "typeString": "type(contract GovernorAlpha)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "289:80:105"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28290,
                        "name": "timelock_",
                        "nodeType": "VariableDeclaration",
                        "scope": 28309,
                        "src": "167:17:105",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28289,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "167:7:105",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28292,
                        "name": "staking_",
                        "nodeType": "VariableDeclaration",
                        "scope": 28309,
                        "src": "188:16:105",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28291,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "188:7:105",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28294,
                        "name": "guardian_",
                        "nodeType": "VariableDeclaration",
                        "scope": 28309,
                        "src": "208:17:105",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28293,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "208:7:105",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28296,
                        "name": "quorumVotes_",
                        "nodeType": "VariableDeclaration",
                        "scope": 28309,
                        "src": "229:19:105",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 28295,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "229:6:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28298,
                        "name": "_minPercentageVotes",
                        "nodeType": "VariableDeclaration",
                        "scope": 28309,
                        "src": "252:26:105",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 28297,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "252:6:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "163:118:105"
                  },
                  "returnParameters": {
                    "id": 28307,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "370:0:105"
                  },
                  "scope": 28344,
                  "src": "152:220:105",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28316,
                    "nodeType": "Block",
                    "src": "429:17:105",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "3130",
                          "id": 28314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "440:2:105",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "functionReturnParameters": 28313,
                        "id": 28315,
                        "nodeType": "Return",
                        "src": "433:9:105"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28317,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "votingPeriod",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28310,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "396:2:105"
                  },
                  "returnParameters": {
                    "id": 28313,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28312,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 28317,
                        "src": "420:7:105",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28311,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "420:7:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "419:9:105"
                  },
                  "scope": 28344,
                  "src": "375:71:105",
                  "stateMutability": "pure",
                  "superFunction": 11639,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28342,
                    "nodeType": "Block",
                    "src": "514:87:105",
                    "statements": [
                      {
                        "body": {
                          "id": 28340,
                          "nodeType": "Block",
                          "src": "567:31:105",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 28335,
                                      "name": "proposalIds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 28320,
                                      "src": "578:11:105",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 28337,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 28336,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 28324,
                                      "src": "590:1:105",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "578:14:105",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 28334,
                                  "name": "queue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12153,
                                  "src": "572:5:105",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 28338,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "572:21:105",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 28339,
                              "nodeType": "ExpressionStatement",
                              "src": "572:21:105"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 28330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 28327,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28324,
                            "src": "538:1:105",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28328,
                              "name": "proposalIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28320,
                              "src": "542:11:105",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 28329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "542:18:105",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "538:22:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 28341,
                        "initializationExpression": {
                          "assignments": [
                            28324
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 28324,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 28341,
                              "src": "523:9:105",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 28323,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "523:7:105",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 28326,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 28325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "535:1:105",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "523:13:105"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 28332,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "562:3:105",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 28331,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28324,
                              "src": "562:1:105",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 28333,
                          "nodeType": "ExpressionStatement",
                          "src": "562:3:105"
                        },
                        "nodeType": "ForStatement",
                        "src": "518:80:105"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28343,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "queueProposals",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28320,
                        "name": "proposalIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 28343,
                        "src": "473:30:105",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 28318,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "473:7:105",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 28319,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "473:9:105",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "472:32:105"
                  },
                  "returnParameters": {
                    "id": 28322,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "514:0:105"
                  },
                  "scope": 28344,
                  "src": "449:152:105",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 28345,
              "src": "103:500:105"
            }
          ],
          "src": "0:604:105"
        },
        "id": 105
      },
      "contracts/mockup/LiquidityMiningMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/LiquidityMiningMockup.sol",
          "exportedSymbols": {
            "LiquidityMiningMockup": [
              28392
            ]
          },
          "id": 28393,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 28346,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:106"
            },
            {
              "id": 28347,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:106"
            },
            {
              "absolutePath": "contracts/farm/LiquidityMining.sol",
              "file": "../farm/LiquidityMining.sol",
              "id": 28348,
              "nodeType": "ImportDirective",
              "scope": 28393,
              "sourceUnit": 8296,
              "src": "60:37:106",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 28349,
                    "name": "LiquidityMining",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8295,
                    "src": "133:15:106",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                      "typeString": "contract LiquidityMining"
                    }
                  },
                  "id": 28350,
                  "nodeType": "InheritanceSpecifier",
                  "src": "133:15:106"
                }
              ],
              "contractDependencies": [
                6369,
                8295,
                8437,
                41125,
                41798,
                44979
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 28392,
              "linearizedBaseContracts": [
                28392,
                8295,
                8437,
                44979,
                41798,
                41125,
                6369
              ],
              "name": "LiquidityMiningMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 28364,
                    "nodeType": "Block",
                    "src": "254:62:106",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28360,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28352,
                              "src": "301:5:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28361,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28354,
                              "src": "308:3:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 28359,
                            "name": "_getPassedBlocksWithBonusMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6995,
                            "src": "265:35:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view returns (uint256)"
                            }
                          },
                          "id": 28362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "265:47:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 28358,
                        "id": 28363,
                        "nodeType": "Return",
                        "src": "258:54:106"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28365,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPassedBlocksWithBonusMultiplier",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28352,
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 28365,
                        "src": "196:13:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28351,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "196:7:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28354,
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 28365,
                        "src": "211:11:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28353,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "211:7:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "195:28:106"
                  },
                  "returnParameters": {
                    "id": 28358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28357,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 28365,
                        "src": "245:7:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28356,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "245:7:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "244:9:106"
                  },
                  "scope": 28392,
                  "src": "152:164:106",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28390,
                    "nodeType": "Block",
                    "src": "412:137:106",
                    "statements": [
                      {
                        "assignments": [
                          28375
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 28375,
                            "name": "poolId",
                            "nodeType": "VariableDeclaration",
                            "scope": 28390,
                            "src": "416:14:106",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 28374,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "416:7:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 28379,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28377,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28367,
                              "src": "444:10:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 28376,
                            "name": "_getPoolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8053,
                            "src": "433:10:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 28378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "433:22:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "416:39:106"
                      },
                      {
                        "assignments": [
                          28381
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 28381,
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "scope": 28390,
                            "src": "459:21:106",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 28380,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 8403,
                              "src": "459:8:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 28385,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 28382,
                            "name": "poolInfoList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "483:12:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$8403_storage_$dyn_storage",
                              "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 28384,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 28383,
                            "name": "poolId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28375,
                            "src": "496:6:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "483:20:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$8403_storage",
                            "typeString": "struct LiquidityMiningStorage.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "459:44:106"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28387,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28381,
                              "src": "540:4:106",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$8403_storage_ptr",
                                "typeString": "struct LiquidityMiningStorage.PoolInfo storage pointer"
                              }
                            ],
                            "id": 28386,
                            "name": "_getPoolAccumulatedReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              7283,
                              7351
                            ],
                            "referencedDeclaration": 7283,
                            "src": "514:25:106",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_PoolInfo_$8403_storage_ptr_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (struct LiquidityMiningStorage.PoolInfo storage pointer) view returns (uint256,uint256)"
                            }
                          },
                          "id": 28388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "514:31:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 28373,
                        "id": 28389,
                        "nodeType": "Return",
                        "src": "507:38:106"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28391,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPoolAccumulatedReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28368,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28367,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 28391,
                        "src": "353:18:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28366,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "353:7:106",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "352:20:106"
                  },
                  "returnParameters": {
                    "id": 28373,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28370,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 28391,
                        "src": "394:7:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28369,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "394:7:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28372,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 28391,
                        "src": "403:7:106",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28371,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "403:7:106",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "393:18:106"
                  },
                  "scope": 28392,
                  "src": "319:230:106",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 28393,
              "src": "99:452:106"
            }
          ],
          "src": "0:552:106"
        },
        "id": 106
      },
      "contracts/mockup/LiquidityPoolV1ConverterMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/LiquidityPoolV1ConverterMockup.sol",
          "exportedSymbols": {
            "LiquidityPoolV1ConverterMockup": [
              28419
            ]
          },
          "id": 28420,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 28394,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:107"
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 28395,
              "nodeType": "ImportDirective",
              "scope": 28420,
              "sourceUnit": 24700,
              "src": "25:34:107",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 28419,
              "linearizedBaseContracts": [
                28419
              ],
              "name": "LiquidityPoolV1ConverterMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 28398,
                  "name": "reserveTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 28419,
                  "src": "104:29:107",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage",
                    "typeString": "contract IERC20[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 28396,
                      "name": "IERC20",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 24699,
                      "src": "104:6:107",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$24699",
                        "typeString": "contract IERC20"
                      }
                    },
                    "id": 28397,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "104:8:107",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage_ptr",
                      "typeString": "contract IERC20[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28417,
                    "nodeType": "Block",
                    "src": "188:66:107",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28408,
                              "name": "_token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28400,
                              "src": "211:7:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 28405,
                              "name": "reserveTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28398,
                              "src": "192:13:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage",
                                "typeString": "contract IERC20[] storage ref"
                              }
                            },
                            "id": 28407,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "192:18:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_IERC20_$24699_$returns$_t_uint256_$",
                              "typeString": "function (contract IERC20) returns (uint256)"
                            }
                          },
                          "id": 28409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "192:27:107",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 28410,
                        "nodeType": "ExpressionStatement",
                        "src": "192:27:107"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28414,
                              "name": "_token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28402,
                              "src": "242:7:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 28411,
                              "name": "reserveTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28398,
                              "src": "223:13:107",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage",
                                "typeString": "contract IERC20[] storage ref"
                              }
                            },
                            "id": 28413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "223:18:107",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_IERC20_$24699_$returns$_t_uint256_$",
                              "typeString": "function (contract IERC20) returns (uint256)"
                            }
                          },
                          "id": 28415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "223:27:107",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 28416,
                        "nodeType": "ExpressionStatement",
                        "src": "223:27:107"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28418,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28403,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28400,
                        "name": "_token0",
                        "nodeType": "VariableDeclaration",
                        "scope": 28418,
                        "src": "149:14:107",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 28399,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24699,
                          "src": "149:6:107",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28402,
                        "name": "_token1",
                        "nodeType": "VariableDeclaration",
                        "scope": 28418,
                        "src": "165:14:107",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 28401,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24699,
                          "src": "165:6:107",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "148:32:107"
                  },
                  "returnParameters": {
                    "id": 28404,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "188:0:107"
                  },
                  "scope": 28419,
                  "src": "137:117:107",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 28420,
              "src": "61:195:107"
            }
          ],
          "src": "0:257:107"
        },
        "id": 107
      },
      "contracts/mockup/LockedSOVMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/LockedSOVMockup.sol",
          "exportedSymbols": {
            "LockedSOVMockup": [
              28826
            ]
          },
          "id": 28827,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 28421,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:108"
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../openzeppelin/SafeMath.sol",
              "id": 28422,
              "nodeType": "ImportDirective",
              "scope": 28827,
              "sourceUnit": 42310,
              "src": "26:38:108",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 28423,
              "nodeType": "ImportDirective",
              "scope": 28827,
              "sourceUnit": 24700,
              "src": "65:34:108",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": " @title An mockup for the Locked SOV Contract.\n @author Franklin Richards - powerhousefrank@protonmail.com\n @dev This is not a complete mockup of the Locked SOV Contract.",
              "fullyImplemented": true,
              "id": 28826,
              "linearizedBaseContracts": [
                28826
              ],
              "name": "LockedSOVMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 28426,
                  "libraryName": {
                    "contractScope": null,
                    "id": 28424,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "323:8:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "317:27:108",
                  "typeName": {
                    "id": 28425,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "336:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 28428,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 28826,
                  "src": "400:17:108",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$24699",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 28427,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "400:6:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 28432,
                  "name": "lockedBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 28826,
                  "src": "460:42:108",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 28431,
                    "keyType": {
                      "id": 28429,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "468:7:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "460:27:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 28430,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "479:7:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 28436,
                  "name": "unlockedBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 28826,
                  "src": "546:44:108",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 28435,
                    "keyType": {
                      "id": 28433,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "554:7:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "546:27:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 28434,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "565:7:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 28440,
                  "name": "isAdmin",
                  "nodeType": "VariableDeclaration",
                  "scope": 28826,
                  "src": "646:32:108",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 28439,
                    "keyType": {
                      "id": 28437,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "654:7:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "646:24:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 28438,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "665:4:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a new Admin is added to the admin list.\n @param _initiator The address which initiated this event to be emitted.\n @param _newAdmin The address of the new admin.",
                  "id": 28446,
                  "name": "AdminAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 28445,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28442,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 28446,
                        "src": "909:26:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28441,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "909:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28444,
                        "indexed": true,
                        "name": "_newAdmin",
                        "nodeType": "VariableDeclaration",
                        "scope": 28446,
                        "src": "937:25:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28443,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "937:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "908:55:108"
                  },
                  "src": "892:72:108"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when an admin is removed from the admin list.\n @param _initiator The address which initiated this event to be emitted.\n @param _removedAdmin The address of the removed admin.",
                  "id": 28452,
                  "name": "AdminRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 28451,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28448,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 28452,
                        "src": "1190:26:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28447,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1190:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28450,
                        "indexed": true,
                        "name": "_removedAdmin",
                        "nodeType": "VariableDeclaration",
                        "scope": 28452,
                        "src": "1218:29:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28449,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1218:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1189:59:108"
                  },
                  "src": "1171:78:108"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 28462,
                  "name": "Deposited",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 28461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28454,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 28462,
                        "src": "1268:26:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28453,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1268:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28456,
                        "indexed": true,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 28462,
                        "src": "1296:28:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28455,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1296:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28458,
                        "indexed": false,
                        "name": "_sovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 28462,
                        "src": "1326:18:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28457,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1326:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28460,
                        "indexed": false,
                        "name": "_basisPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 28462,
                        "src": "1346:19:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28459,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1346:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1267:99:108"
                  },
                  "src": "1252:115:108"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 28470,
                  "name": "Withdrawn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 28469,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28464,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 28470,
                        "src": "1386:26:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28463,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1386:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28466,
                        "indexed": true,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 28470,
                        "src": "1414:28:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28465,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1414:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28468,
                        "indexed": false,
                        "name": "_sovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 28470,
                        "src": "1444:18:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28467,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1444:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1385:78:108"
                  },
                  "src": "1370:94:108"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 28478,
                  "name": "TokensStaked",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 28477,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28472,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 28478,
                        "src": "1486:26:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28471,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1486:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28474,
                        "indexed": true,
                        "name": "_vesting",
                        "nodeType": "VariableDeclaration",
                        "scope": 28478,
                        "src": "1514:24:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28473,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1514:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28476,
                        "indexed": false,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 28478,
                        "src": "1540:15:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28475,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1540:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1485:71:108"
                  },
                  "src": "1467:90:108"
                },
                {
                  "body": {
                    "id": 28489,
                    "nodeType": "Block",
                    "src": "1597:70:108",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 28481,
                                "name": "isAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28440,
                                "src": "1609:7:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 28484,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 28482,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "1617:3:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 28483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1617:10:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1609:19:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f6e6c792061646d696e2063616e2063616c6c20746869732e",
                              "id": 28485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1630:27:108",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5c96ba9b76705bf631b579597e9a8d1313e924fd9f4ddd61afbcf4517ef36c81",
                                "typeString": "literal_string \"Only admin can call this.\""
                              },
                              "value": "Only admin can call this."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5c96ba9b76705bf631b579597e9a8d1313e924fd9f4ddd61afbcf4517ef36c81",
                                "typeString": "literal_string \"Only admin can call this.\""
                              }
                            ],
                            "id": 28480,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1601:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 28486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1601:57:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28487,
                        "nodeType": "ExpressionStatement",
                        "src": "1601:57:108"
                      },
                      {
                        "id": 28488,
                        "nodeType": "PlaceholderStatement",
                        "src": "1662:1:108"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28490,
                  "name": "onlyAdmin",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 28479,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1597:0:108"
                  },
                  "src": "1578:89:108",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28534,
                    "nodeType": "Block",
                    "src": "1890:181:108",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 28503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 28499,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28492,
                                "src": "1902:4:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 28501,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1918:1:108",
                                    "subdenomination": null,
                                    "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": 28500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1910:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 28502,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1910:10:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1902:18:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c696420534f5620416464726573732e",
                              "id": 28504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1922:22:108",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f5840b4863e6ab75c00993b856f6487e94b357014931d34497992ecc40c5bcf3",
                                "typeString": "literal_string \"Invalid SOV Address.\""
                              },
                              "value": "Invalid SOV Address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f5840b4863e6ab75c00993b856f6487e94b357014931d34497992ecc40c5bcf3",
                                "typeString": "literal_string \"Invalid SOV Address.\""
                              }
                            ],
                            "id": 28498,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1894:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 28505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1894:51:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28506,
                        "nodeType": "ExpressionStatement",
                        "src": "1894:51:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 28507,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28428,
                            "src": "1949:3:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 28509,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28492,
                                "src": "1962:4:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 28508,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24699,
                              "src": "1955:6:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 28510,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1955:12:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "1949:18:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 28512,
                        "nodeType": "ExpressionStatement",
                        "src": "1949:18:108"
                      },
                      {
                        "body": {
                          "id": 28532,
                          "nodeType": "Block",
                          "src": "2028:40:108",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 28530,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 28524,
                                    "name": "isAdmin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28440,
                                    "src": "2033:7:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 28528,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 28525,
                                      "name": "_admins",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 28495,
                                      "src": "2041:7:108",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 28527,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 28526,
                                      "name": "index",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 28514,
                                      "src": "2049:5:108",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2041:14:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2033:23:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 28529,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2059:4:108",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "2033:30:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 28531,
                              "nodeType": "ExpressionStatement",
                              "src": "2033:30:108"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 28520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 28517,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28514,
                            "src": "1995:5:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28518,
                              "name": "_admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28495,
                              "src": "2003:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 28519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2003:14:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1995:22:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 28533,
                        "initializationExpression": {
                          "assignments": [
                            28514
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 28514,
                              "name": "index",
                              "nodeType": "VariableDeclaration",
                              "scope": 28533,
                              "src": "1976:13:108",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 28513,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1976:7:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 28516,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 28515,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1992:1:108",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1976:17:108"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 28522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2019:7:108",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 28521,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28514,
                              "src": "2019:5:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 28523,
                          "nodeType": "ExpressionStatement",
                          "src": "2019:7:108"
                        },
                        "nodeType": "ForStatement",
                        "src": "1971:97:108"
                      }
                    ]
                  },
                  "documentation": "@notice Setup the required parameters.\n@param _SOV The SOV token address.\n@param _admins The list of admins to be added.",
                  "id": 28535,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28496,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28492,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 28535,
                        "src": "1843:12:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28491,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1843:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28495,
                        "name": "_admins",
                        "nodeType": "VariableDeclaration",
                        "scope": 28535,
                        "src": "1857:24:108",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 28493,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1857:7:108",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 28494,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1857:9:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1842:40:108"
                  },
                  "returnParameters": {
                    "id": 28497,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1890:0:108"
                  },
                  "scope": 28826,
                  "src": "1831:240:108",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28571,
                    "nodeType": "Block",
                    "src": "2234:191:108",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 28547,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 28543,
                                "name": "_newAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28537,
                                "src": "2246:9:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 28545,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2267:1:108",
                                    "subdenomination": null,
                                    "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": 28544,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2259:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 28546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2259:10:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2246:23:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c69642041646472657373",
                              "id": 28548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2271:17:108",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bf1d1ce89873b65be77a5b8cf3294e4a6e07f1b811e1034d1cd601ee4593d845",
                                "typeString": "literal_string \"Invalid Address\""
                              },
                              "value": "Invalid Address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_bf1d1ce89873b65be77a5b8cf3294e4a6e07f1b811e1034d1cd601ee4593d845",
                                "typeString": "literal_string \"Invalid Address\""
                              }
                            ],
                            "id": 28542,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2238:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 28549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2238:51:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28550,
                        "nodeType": "ExpressionStatement",
                        "src": "2238:51:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "2301:19:108",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 28552,
                                  "name": "isAdmin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28440,
                                  "src": "2302:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 28554,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 28553,
                                  "name": "_newAdmin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28537,
                                  "src": "2310:9:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2302:18:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4164647265737320697320616c72656164792061646d696e",
                              "id": 28556,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2322:26:108",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1276ea6178e6fbf95eaea6a9aa6c352d864134c1456c96eff68c9a53c76c03b8",
                                "typeString": "literal_string \"Address is already admin\""
                              },
                              "value": "Address is already admin"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1276ea6178e6fbf95eaea6a9aa6c352d864134c1456c96eff68c9a53c76c03b8",
                                "typeString": "literal_string \"Address is already admin\""
                              }
                            ],
                            "id": 28551,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2293:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 28557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2293:56:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28558,
                        "nodeType": "ExpressionStatement",
                        "src": "2293:56:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 28559,
                              "name": "isAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28440,
                              "src": "2353:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 28561,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 28560,
                              "name": "_newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28537,
                              "src": "2361:9:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2353:18:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 28562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2374:4:108",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "2353:25:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 28564,
                        "nodeType": "ExpressionStatement",
                        "src": "2353:25:108"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 28566,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "2399:3:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 28567,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2399:10:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28568,
                              "name": "_newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28537,
                              "src": "2411:9:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 28565,
                            "name": "AdminAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28446,
                            "src": "2388:10:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 28569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2388:33:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28570,
                        "nodeType": "EmitStatement",
                        "src": "2383:38:108"
                      }
                    ]
                  },
                  "documentation": "@notice The function to add a new admin.\n@param _newAdmin The address of the new admin.",
                  "id": 28572,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 28540,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 28539,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28490,
                        "src": "2224:9:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2224:9:108"
                    }
                  ],
                  "name": "addAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28538,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28537,
                        "name": "_newAdmin",
                        "nodeType": "VariableDeclaration",
                        "scope": 28572,
                        "src": "2198:17:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28536,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2198:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2197:19:108"
                  },
                  "returnParameters": {
                    "id": 28541,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2234:0:108"
                  },
                  "scope": 28826,
                  "src": "2180:245:108",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28598,
                    "nodeType": "Block",
                    "src": "2621:152:108",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 28580,
                                "name": "isAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28440,
                                "src": "2633:7:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 28582,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 28581,
                                "name": "_adminToRemove",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28574,
                                "src": "2641:14:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2633:23:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "41646472657373206973206e6f7420616e2061646d696e",
                              "id": 28583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2658:25:108",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_902ee68b4ea028082ec24b020e4b1542ac6ca91a20f34ed5a4db120e7bea7004",
                                "typeString": "literal_string \"Address is not an admin\""
                              },
                              "value": "Address is not an admin"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_902ee68b4ea028082ec24b020e4b1542ac6ca91a20f34ed5a4db120e7bea7004",
                                "typeString": "literal_string \"Address is not an admin\""
                              }
                            ],
                            "id": 28579,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2625:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 28584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2625:59:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28585,
                        "nodeType": "ExpressionStatement",
                        "src": "2625:59:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 28586,
                              "name": "isAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28440,
                              "src": "2688:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 28588,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 28587,
                              "name": "_adminToRemove",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28574,
                              "src": "2696:14:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2688:23:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 28589,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2714:5:108",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "2688:31:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 28591,
                        "nodeType": "ExpressionStatement",
                        "src": "2688:31:108"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 28593,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "2742:3:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 28594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2742:10:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28595,
                              "name": "_adminToRemove",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28574,
                              "src": "2754:14:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 28592,
                            "name": "AdminRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28452,
                            "src": "2729:12:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 28596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2729:40:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28597,
                        "nodeType": "EmitStatement",
                        "src": "2724:45:108"
                      }
                    ]
                  },
                  "documentation": "@notice The function to remove an admin.\n@param _adminToRemove The address of the admin which should be removed.",
                  "id": 28599,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 28577,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 28576,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28490,
                        "src": "2611:9:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2611:9:108"
                    }
                  ],
                  "name": "removeAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28575,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28574,
                        "name": "_adminToRemove",
                        "nodeType": "VariableDeclaration",
                        "scope": 28599,
                        "src": "2580:22:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28573,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2580:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2579:24:108"
                  },
                  "returnParameters": {
                    "id": 28578,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2621:0:108"
                  },
                  "scope": 28826,
                  "src": "2559:214:108",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28614,
                    "nodeType": "Block",
                    "src": "3262:55:108",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28609,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28601,
                              "src": "3275:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28610,
                              "name": "_sovAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28603,
                              "src": "3289:10:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28611,
                              "name": "_basisPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28605,
                              "src": "3301:11:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 28608,
                            "name": "_deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28706,
                            "src": "3266:8:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 28612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3266:47:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28613,
                        "nodeType": "ExpressionStatement",
                        "src": "3266:47:108"
                      }
                    ]
                  },
                  "documentation": "@notice Adds SOV to the user balance (Locked and Unlocked Balance based on `_basisPoint`).\n@param _userAddress The user whose locked balance has to be updated with `_sovAmount`.\n@param _sovAmount The amount of SOV to be added to the locked and/or unlocked balance.\n@param _basisPoint The % (in Basis Point)which determines how much will be unlocked immediately.",
                  "id": 28615,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28606,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28601,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 28615,
                        "src": "3184:20:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28600,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3184:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28603,
                        "name": "_sovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 28615,
                        "src": "3208:18:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28602,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3208:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28605,
                        "name": "_basisPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 28615,
                        "src": "3230:19:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28604,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3230:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3180:72:108"
                  },
                  "returnParameters": {
                    "id": 28607,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3262:0:108"
                  },
                  "scope": 28826,
                  "src": "3164:153:108",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 28628,
                    "nodeType": "Block",
                    "src": "3692:45:108",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28623,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28617,
                              "src": "3705:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28624,
                              "name": "_sovAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28619,
                              "src": "3719:10:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 28625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3731:1:108",
                              "subdenomination": null,
                              "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"
                              }
                            ],
                            "id": 28622,
                            "name": "_deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28706,
                            "src": "3696:8:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 28626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3696:37:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28627,
                        "nodeType": "ExpressionStatement",
                        "src": "3696:37:108"
                      }
                    ]
                  },
                  "documentation": "@notice Adds SOV to the locked balance of a user.\n@param _userAddress The user whose locked balance has to be updated with _sovAmount.\n@param _sovAmount The amount of SOV to be added to the locked balance.\n@dev This is here because there are dependency with other contracts.",
                  "id": 28629,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "depositSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28617,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 28629,
                        "src": "3641:20:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28616,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3641:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28619,
                        "name": "_sovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 28629,
                        "src": "3663:18:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28618,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3663:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3640:42:108"
                  },
                  "returnParameters": {
                    "id": 28621,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3692:0:108"
                  },
                  "scope": 28826,
                  "src": "3621:116:108",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 28705,
                    "nodeType": "Block",
                    "src": "3838:651:108",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 28641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 28639,
                                "name": "_basisPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28635,
                                "src": "3949:11:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130303030",
                                "id": 28640,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3963:5:108",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10000"
                              },
                              "src": "3949:19:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426173697320506f696e742068617320746f206265206c657373207468616e2031303030302e",
                              "id": 28642,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3970:40:108",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d9acd5dfb408099081f5e744dee7f89ad822ceedc7fb6f654aa65a24aa35c692",
                                "typeString": "literal_string \"Basis Point has to be less than 10000.\""
                              },
                              "value": "Basis Point has to be less than 10000."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d9acd5dfb408099081f5e744dee7f89ad822ceedc7fb6f654aa65a24aa35c692",
                                "typeString": "literal_string \"Basis Point has to be less than 10000.\""
                              }
                            ],
                            "id": 28638,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3941:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 28643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3941:70:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28644,
                        "nodeType": "ExpressionStatement",
                        "src": "3941:70:108"
                      },
                      {
                        "assignments": [
                          28646
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 28646,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 28705,
                            "src": "4015:13:108",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 28645,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4015:4:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 28656,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 28649,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "4048:3:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 28650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4048:10:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 28652,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45276,
                                  "src": "4068:4:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LockedSOVMockup_$28826",
                                    "typeString": "contract LockedSOVMockup"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LockedSOVMockup_$28826",
                                    "typeString": "contract LockedSOVMockup"
                                  }
                                ],
                                "id": 28651,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4060:7:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 28653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4060:13:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28654,
                              "name": "_sovAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28633,
                              "src": "4075:10:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 28647,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28428,
                              "src": "4031:3:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 28648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24682,
                            "src": "4031:16:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 28655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4031:55:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4015:71:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28658,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28646,
                              "src": "4098:8:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e",
                              "id": 28659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4108:60:108",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              },
                              "value": "Token transfer was not successful. Check receiver address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              }
                            ],
                            "id": 28657,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4090:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 28660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4090:79:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28661,
                        "nodeType": "ExpressionStatement",
                        "src": "4090:79:108"
                      },
                      {
                        "assignments": [
                          28663
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 28663,
                            "name": "unlockedBal",
                            "nodeType": "VariableDeclaration",
                            "scope": 28705,
                            "src": "4174:19:108",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 28662,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4174:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 28671,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3130303030",
                              "id": 28669,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4228:5:108",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10000_by_1",
                                "typeString": "int_const 10000"
                              },
                              "value": "10000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_10000_by_1",
                                "typeString": "int_const 10000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 28666,
                                  "name": "_basisPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28635,
                                  "src": "4211:11:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 28664,
                                  "name": "_sovAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28633,
                                  "src": "4196:10:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 28665,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "4196:14:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 28667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4196:27:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 28668,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "4196:31:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 28670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4196:38:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4174:60:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 28672,
                              "name": "unlockedBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28436,
                              "src": "4239:16:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 28674,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 28673,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28631,
                              "src": "4256:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4239:30:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 28679,
                                "name": "unlockedBal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28663,
                                "src": "4307:11:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 28675,
                                  "name": "unlockedBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28436,
                                  "src": "4272:16:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 28677,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 28676,
                                  "name": "_userAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28631,
                                  "src": "4289:12:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4272:30:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 28678,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "4272:34:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 28680,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4272:47:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4239:80:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 28682,
                        "nodeType": "ExpressionStatement",
                        "src": "4239:80:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 28683,
                              "name": "lockedBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28432,
                              "src": "4323:14:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 28685,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 28684,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28631,
                              "src": "4338:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4323:28:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 28693,
                                "name": "unlockedBal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28663,
                                "src": "4403:11:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 28690,
                                    "name": "_sovAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28633,
                                    "src": "4387:10:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 28686,
                                      "name": "lockedBalances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 28432,
                                      "src": "4354:14:108",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 28688,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 28687,
                                      "name": "_userAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 28631,
                                      "src": "4369:12:108",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4354:28:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 28689,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "4354:32:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 28691,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4354:44:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 28692,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "4354:48:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 28694,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4354:61:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4323:92:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 28696,
                        "nodeType": "ExpressionStatement",
                        "src": "4323:92:108"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 28698,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "4435:3:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 28699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4435:10:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28700,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28631,
                              "src": "4447:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28701,
                              "name": "_sovAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28633,
                              "src": "4461:10:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28702,
                              "name": "_basisPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28635,
                              "src": "4473:11:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 28697,
                            "name": "Deposited",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28462,
                            "src": "4425:9:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 28703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4425:60:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28704,
                        "nodeType": "EmitStatement",
                        "src": "4420:65:108"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28706,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_deposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28636,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28631,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 28706,
                        "src": "3761:20:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28630,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3761:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28633,
                        "name": "_sovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 28706,
                        "src": "3785:18:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28632,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3785:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28635,
                        "name": "_basisPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 28706,
                        "src": "3807:19:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28634,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3807:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3757:72:108"
                  },
                  "returnParameters": {
                    "id": 28637,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3838:0:108"
                  },
                  "scope": 28826,
                  "src": "3740:749:108",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 28720,
                    "nodeType": "Block",
                    "src": "4749:85:108",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28712,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28708,
                              "src": "4763:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28713,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28708,
                              "src": "4777:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 28711,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28775,
                            "src": "4753:9:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 28714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4753:37:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28715,
                        "nodeType": "ExpressionStatement",
                        "src": "4753:37:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28717,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28708,
                              "src": "4817:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 28716,
                            "name": "_createVestingAndStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28801,
                            "src": "4794:22:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 28718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4794:36:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28719,
                        "nodeType": "ExpressionStatement",
                        "src": "4794:36:108"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraws unlocked tokens and Stakes Locked tokens for a user who already have a vesting created.\n@param _userAddress The address of user tokens will be withdrawn.",
                  "id": 28721,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAndStakeTokensFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28708,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 28721,
                        "src": "4718:20:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28707,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4718:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4717:22:108"
                  },
                  "returnParameters": {
                    "id": 28710,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4749:0:108"
                  },
                  "scope": 28826,
                  "src": "4682:152:108",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 28774,
                    "nodeType": "Block",
                    "src": "4907:370:108",
                    "statements": [
                      {
                        "assignments": [
                          28729
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 28729,
                            "name": "userAddr",
                            "nodeType": "VariableDeclaration",
                            "scope": 28774,
                            "src": "4911:16:108",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 28728,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4911:7:108",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 28731,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 28730,
                          "name": "_receiverAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28725,
                          "src": "4930:16:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4911:35:108"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 28736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 28732,
                            "name": "_receiverAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28725,
                            "src": "4954:16:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 28734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4982:1:108",
                                "subdenomination": null,
                                "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": 28733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4974:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 28735,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4974:10:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4954:30:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 28742,
                        "nodeType": "IfStatement",
                        "src": "4950:64:108",
                        "trueBody": {
                          "id": 28741,
                          "nodeType": "Block",
                          "src": "4986:28:108",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 28739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 28737,
                                  "name": "userAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28729,
                                  "src": "4991:8:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 28738,
                                  "name": "_sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28723,
                                  "src": "5002:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4991:18:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 28740,
                              "nodeType": "ExpressionStatement",
                              "src": "4991:18:108"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          28744
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 28744,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 28774,
                            "src": "5018:14:108",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 28743,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5018:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 28748,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 28745,
                            "name": "unlockedBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28436,
                            "src": "5035:16:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 28747,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 28746,
                            "name": "_sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28723,
                            "src": "5052:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5035:25:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5018:42:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 28749,
                              "name": "unlockedBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28436,
                              "src": "5064:16:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 28751,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 28750,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28723,
                              "src": "5081:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5064:25:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 28752,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5092:1:108",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5064:29:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 28754,
                        "nodeType": "ExpressionStatement",
                        "src": "5064:29:108"
                      },
                      {
                        "assignments": [
                          28756
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 28756,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 28774,
                            "src": "5098:13:108",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 28755,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5098:4:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 28762,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28759,
                              "name": "userAddr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28729,
                              "src": "5127:8:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28760,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28744,
                              "src": "5137:6:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 28757,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28428,
                              "src": "5114:3:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 28758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24671,
                            "src": "5114:12:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 28761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5114:30:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5098:46:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28764,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28756,
                              "src": "5156:8:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e",
                              "id": 28765,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5166:60:108",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              },
                              "value": "Token transfer was not successful. Check receiver address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              }
                            ],
                            "id": 28763,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5148:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 28766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5148:79:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28767,
                        "nodeType": "ExpressionStatement",
                        "src": "5148:79:108"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28769,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28723,
                              "src": "5247:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28770,
                              "name": "userAddr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28729,
                              "src": "5256:8:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28771,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28744,
                              "src": "5266:6:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 28768,
                            "name": "Withdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28470,
                            "src": "5237:9:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 28772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5237:36:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28773,
                        "nodeType": "EmitStatement",
                        "src": "5232:41:108"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28775,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28726,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28723,
                        "name": "_sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 28775,
                        "src": "4856:15:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28722,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4856:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28725,
                        "name": "_receiverAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 28775,
                        "src": "4873:24:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28724,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4873:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4855:43:108"
                  },
                  "returnParameters": {
                    "id": 28727,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4907:0:108"
                  },
                  "scope": 28826,
                  "src": "4837:440:108",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 28800,
                    "nodeType": "Block",
                    "src": "5337:130:108",
                    "statements": [
                      {
                        "assignments": [
                          28781
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 28781,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 28800,
                            "src": "5341:14:108",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 28780,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5341:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 28785,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 28782,
                            "name": "lockedBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28432,
                            "src": "5358:14:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 28784,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 28783,
                            "name": "_sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28777,
                            "src": "5373:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5358:23:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5341:40:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 28786,
                              "name": "lockedBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28432,
                              "src": "5385:14:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 28788,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 28787,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28777,
                              "src": "5400:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5385:23:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 28789,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5411:1:108",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5385:27:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 28791,
                        "nodeType": "ExpressionStatement",
                        "src": "5385:27:108"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28793,
                              "name": "_sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28777,
                              "src": "5435:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 28795,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5452:1:108",
                                  "subdenomination": null,
                                  "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": 28794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5444:7:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 28796,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5444:10:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28797,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28781,
                              "src": "5456:6:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 28792,
                            "name": "TokensStaked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28478,
                            "src": "5422:12:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 28798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5422:41:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28799,
                        "nodeType": "EmitStatement",
                        "src": "5417:46:108"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28801,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_createVestingAndStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28778,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28777,
                        "name": "_sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 28801,
                        "src": "5312:15:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28776,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5312:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5311:17:108"
                  },
                  "returnParameters": {
                    "id": 28779,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5337:0:108"
                  },
                  "scope": 28826,
                  "src": "5280:187:108",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 28812,
                    "nodeType": "Block",
                    "src": "5756:36:108",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 28808,
                            "name": "lockedBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28432,
                            "src": "5767:14:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 28810,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 28809,
                            "name": "_addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28803,
                            "src": "5782:5:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5767:21:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 28807,
                        "id": 28811,
                        "nodeType": "Return",
                        "src": "5760:28:108"
                      }
                    ]
                  },
                  "documentation": "@notice The function to get the locked balance of a user.\n@param _addr The address of the user to check the locked balance.\n@return _balance The locked balance of the address `_addr`.",
                  "id": 28813,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLockedBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28804,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28803,
                        "name": "_addr",
                        "nodeType": "VariableDeclaration",
                        "scope": 28813,
                        "src": "5702:13:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28802,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5702:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5701:15:108"
                  },
                  "returnParameters": {
                    "id": 28807,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28806,
                        "name": "_balance",
                        "nodeType": "VariableDeclaration",
                        "scope": 28813,
                        "src": "5738:16:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28805,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5738:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5737:18:108"
                  },
                  "scope": 28826,
                  "src": "5676:116:108",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28824,
                    "nodeType": "Block",
                    "src": "6091:38:108",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 28820,
                            "name": "unlockedBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28436,
                            "src": "6102:16:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 28822,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 28821,
                            "name": "_addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28815,
                            "src": "6119:5:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6102:23:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 28819,
                        "id": 28823,
                        "nodeType": "Return",
                        "src": "6095:30:108"
                      }
                    ]
                  },
                  "documentation": "@notice The function to get the unlocked balance of a user.\n@param _addr The address of the user to check the unlocked balance.\n@return _balance The unlocked balance of the address `_addr`.",
                  "id": 28825,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUnlockedBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28816,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28815,
                        "name": "_addr",
                        "nodeType": "VariableDeclaration",
                        "scope": 28825,
                        "src": "6035:13:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28814,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6035:7:108",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6034:15:108"
                  },
                  "returnParameters": {
                    "id": 28819,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28818,
                        "name": "_balance",
                        "nodeType": "VariableDeclaration",
                        "scope": 28825,
                        "src": "6073:16:108",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28817,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6073:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6072:18:108"
                  },
                  "scope": 28826,
                  "src": "6007:122:108",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 28827,
              "src": "289:5842:108"
            }
          ],
          "src": "0:6132:108"
        },
        "id": 108
      },
      "contracts/mockup/MockAffiliates.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/MockAffiliates.sol",
          "exportedSymbols": {
            "MockAffiliates": [
              28859
            ]
          },
          "id": 28860,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 28828,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:109"
            },
            {
              "absolutePath": "contracts/modules/Affiliates.sol",
              "file": "../modules/Affiliates.sol",
              "id": 28829,
              "nodeType": "ImportDirective",
              "scope": 28860,
              "sourceUnit": 31551,
              "src": "25:35:109",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 28830,
                    "name": "Affiliates",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 31550,
                    "src": "89:10:109",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Affiliates_$31550",
                      "typeString": "contract Affiliates"
                    }
                  },
                  "id": 28831,
                  "nodeType": "InheritanceSpecifier",
                  "src": "89:10:109"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                5773,
                6055,
                27832,
                31550,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 28859,
              "linearizedBaseContracts": [
                28859,
                31550,
                27832,
                5773,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913,
                6055
              ],
              "name": "MockAffiliates",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 28842,
                    "nodeType": "Block",
                    "src": "182:123:109",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 28838,
                            "name": "affiliatesUserReferrer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4758,
                            "src": "193:22:109",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                              "typeString": "mapping(address => address)"
                            }
                          },
                          "id": 28840,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 28839,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28833,
                            "src": "216:4:109",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "193:28:109",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 28837,
                        "id": 28841,
                        "nodeType": "Return",
                        "src": "186:35:109"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28843,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliatesUserReferrer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28834,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28833,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 28843,
                        "src": "138:12:109",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28832,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "138:7:109",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "137:14:109"
                  },
                  "returnParameters": {
                    "id": 28837,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28836,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 28843,
                        "src": "173:7:109",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28835,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "173:7:109",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "172:9:109"
                  },
                  "scope": 28859,
                  "src": "103:202:109",
                  "stateMutability": "view",
                  "superFunction": 31537,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28857,
                    "nodeType": "Block",
                    "src": "363:67:109",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 28851,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45280,
                                  "src": "378:4:109",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MockAffiliates_$28859",
                                    "typeString": "contract MockAffiliates"
                                  }
                                },
                                "id": 28852,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAffiliatesUserReferrer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28843,
                                "src": "378:30:109",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              },
                              "id": 28853,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "378:39:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28854,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28845,
                              "src": "419:6:109",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 28850,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "367:10:109",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 28855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "367:59:109",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28856,
                        "nodeType": "ExpressionStatement",
                        "src": "367:59:109"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28858,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 28848,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 28847,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "353:9:109",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "353:9:109"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28846,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28845,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 28858,
                        "src": "328:14:109",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28844,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "328:7:109",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "327:16:109"
                  },
                  "returnParameters": {
                    "id": 28849,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "363:0:109"
                  },
                  "scope": 28859,
                  "src": "308:122:109",
                  "stateMutability": "nonpayable",
                  "superFunction": 30741,
                  "visibility": "external"
                }
              ],
              "scope": 28860,
              "src": "62:370:109"
            }
          ],
          "src": "0:433:109"
        },
        "id": 109
      },
      "contracts/mockup/MockLoanTokenLogic.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/MockLoanTokenLogic.sol",
          "exportedSymbols": {
            "MockLoanTokenLogic": [
              28897
            ]
          },
          "id": 28898,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 28861,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:110"
            },
            {
              "id": 28862,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "24:33:110"
            },
            {
              "absolutePath": "contracts/modules/Affiliates.sol",
              "file": "../modules/Affiliates.sol",
              "id": 28863,
              "nodeType": "ImportDirective",
              "scope": 28898,
              "sourceUnit": 31551,
              "src": "59:35:110",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/connectors/loantoken/LoanTokenLogicLM.sol",
              "file": "../connectors/loantoken/LoanTokenLogicLM.sol",
              "id": 28864,
              "nodeType": "ImportDirective",
              "scope": 28898,
              "sourceUnit": 585,
              "src": "95:54:110",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/modules/interfaces/ProtocolAffiliatesInterface.sol",
              "file": "../modules/interfaces/ProtocolAffiliatesInterface.sol",
              "id": 28865,
              "nodeType": "ImportDirective",
              "scope": 28898,
              "sourceUnit": 40356,
              "src": "150:63:110",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 28866,
                    "name": "LoanTokenLogicLM",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 584,
                    "src": "246:16:110",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanTokenLogicLM_$584",
                      "typeString": "contract LoanTokenLogicLM"
                    }
                  },
                  "id": 28867,
                  "nodeType": "InheritanceSpecifier",
                  "src": "246:16:110"
                }
              ],
              "contractDependencies": [
                168,
                271,
                511,
                584,
                3574,
                4182,
                4221,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 28897,
              "linearizedBaseContracts": [
                28897,
                584,
                3574,
                4182,
                168,
                271,
                511,
                4221,
                41798,
                41125,
                41829
              ],
              "name": "MockLoanTokenLogic",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 28882,
                    "nodeType": "Block",
                    "src": "545:96:110",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28878,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28869,
                              "src": "622:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28879,
                              "name": "referrer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28871,
                              "src": "628:8:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 28875,
                                  "name": "sovrynContractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3827,
                                  "src": "577:21:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 28874,
                                "name": "ProtocolAffiliatesInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40355,
                                "src": "549:27:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ProtocolAffiliatesInterface_$40355_$",
                                  "typeString": "type(contract ProtocolAffiliatesInterface)"
                                }
                              },
                              "id": 28876,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "549:50:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ProtocolAffiliatesInterface_$40355",
                                "typeString": "contract ProtocolAffiliatesInterface"
                              }
                            },
                            "id": 28877,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setAffiliatesReferrer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 40327,
                            "src": "549:72:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address) external"
                            }
                          },
                          "id": 28880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "549:88:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28881,
                        "nodeType": "ExpressionStatement",
                        "src": "549:88:110"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28883,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAffiliatesReferrer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28872,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28869,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 28883,
                        "src": "506:12:110",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28868,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "506:7:110",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28871,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 28883,
                        "src": "520:16:110",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28870,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "520:7:110",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "505:32:110"
                  },
                  "returnParameters": {
                    "id": 28873,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "545:0:110"
                  },
                  "scope": 28897,
                  "src": "475:166:110",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28895,
                    "nodeType": "Block",
                    "src": "699:89:110",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28892,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28885,
                              "src": "779:4:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 28889,
                                  "name": "sovrynContractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3827,
                                  "src": "731:21:110",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 28888,
                                "name": "ProtocolAffiliatesInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40355,
                                "src": "703:27:110",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ProtocolAffiliatesInterface_$40355_$",
                                  "typeString": "type(contract ProtocolAffiliatesInterface)"
                                }
                              },
                              "id": 28890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "703:50:110",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ProtocolAffiliatesInterface_$40355",
                                "typeString": "contract ProtocolAffiliatesInterface"
                              }
                            },
                            "id": 28891,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setUserNotFirstTradeFlag",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 40332,
                            "src": "703:75:110",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 28893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "703:81:110",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28894,
                        "nodeType": "ExpressionStatement",
                        "src": "703:81:110"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28896,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setUserNotFirstTradeFlag",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28886,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28885,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 28896,
                        "src": "678:12:110",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28884,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "678:7:110",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "677:14:110"
                  },
                  "returnParameters": {
                    "id": 28887,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "699:0:110"
                  },
                  "scope": 28897,
                  "src": "644:144:110",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 28898,
              "src": "215:704:110"
            }
          ],
          "src": "0:920:110"
        },
        "id": 110
      },
      "contracts/mockup/PriceFeedsMoCMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/PriceFeedsMoCMockup.sol",
          "exportedSymbols": {
            "PriceFeedsMoCMockup": [
              28941
            ]
          },
          "id": 28942,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 28899,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:111"
            },
            {
              "absolutePath": "contracts/feeds/testnet/PriceFeedsMoC.sol",
              "file": "../feeds/testnet/PriceFeedsMoC.sol",
              "id": 28900,
              "nodeType": "ImportDirective",
              "scope": 28942,
              "sourceUnit": 10489,
              "src": "25:44:111",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 28901,
                    "name": "Medianizer",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 10365,
                    "src": "248:10:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Medianizer_$10365",
                      "typeString": "contract Medianizer"
                    }
                  },
                  "id": 28902,
                  "nodeType": "InheritanceSpecifier",
                  "src": "248:10:111"
                }
              ],
              "contractDependencies": [
                10365
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 28941,
              "linearizedBaseContracts": [
                28941,
                10365
              ],
              "name": "PriceFeedsMoCMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 28904,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 28941,
                  "src": "262:20:111",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 28903,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "262:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 28906,
                  "name": "has",
                  "nodeType": "VariableDeclaration",
                  "scope": 28941,
                  "src": "285:15:111",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 28905,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "285:4:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28919,
                    "nodeType": "Block",
                    "src": "358:36:111",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 28914,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28904,
                                  "src": "378:5:111",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 28913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "370:7:111",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 28915,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "370:14:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28916,
                              "name": "has",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28906,
                              "src": "386:3:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 28917,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "369:21:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                            "typeString": "tuple(bytes32,bool)"
                          }
                        },
                        "functionReturnParameters": 28912,
                        "id": 28918,
                        "nodeType": "Return",
                        "src": "362:28:111"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28920,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "peek",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28907,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "317:2:111"
                  },
                  "returnParameters": {
                    "id": 28912,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28909,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 28920,
                        "src": "343:7:111",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 28908,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "343:7:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28911,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 28920,
                        "src": "352:4:111",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28910,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "352:4:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "342:15:111"
                  },
                  "scope": 28941,
                  "src": "304:90:111",
                  "stateMutability": "view",
                  "superFunction": 10364,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 28929,
                    "nodeType": "Block",
                    "src": "438:22:111",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 28925,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28904,
                            "src": "442:5:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 28926,
                            "name": "_value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28922,
                            "src": "450:6:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "442:14:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 28928,
                        "nodeType": "ExpressionStatement",
                        "src": "442:14:111"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28930,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setValue",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28923,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28922,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 28930,
                        "src": "415:14:111",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28921,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "415:7:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "414:16:111"
                  },
                  "returnParameters": {
                    "id": 28924,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "438:0:111"
                  },
                  "scope": 28941,
                  "src": "397:63:111",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28939,
                    "nodeType": "Block",
                    "src": "497:18:111",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 28935,
                            "name": "has",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28906,
                            "src": "501:3:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 28936,
                            "name": "_has",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28932,
                            "src": "507:4:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "501:10:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 28938,
                        "nodeType": "ExpressionStatement",
                        "src": "501:10:111"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28940,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setHas",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28933,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28932,
                        "name": "_has",
                        "nodeType": "VariableDeclaration",
                        "scope": 28940,
                        "src": "479:9:111",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28931,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "479:4:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "478:11:111"
                  },
                  "returnParameters": {
                    "id": 28934,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "497:0:111"
                  },
                  "scope": 28941,
                  "src": "463:52:111",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 28942,
              "src": "216:301:111"
            }
          ],
          "src": "0:518:111"
        },
        "id": 111
      },
      "contracts/mockup/ProtocolSettingsMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/ProtocolSettingsMockup.sol",
          "exportedSymbols": {
            "ProtocolSettingsMockup": [
              29284
            ]
          },
          "id": 29285,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 28943,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:112"
            },
            {
              "absolutePath": "contracts/modules/ProtocolSettings.sol",
              "file": "../modules/ProtocolSettings.sol",
              "id": 28944,
              "nodeType": "ImportDirective",
              "scope": 29285,
              "sourceUnit": 40046,
              "src": "25:41:112",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 28945,
                    "name": "ProtocolSettings",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 40045,
                    "src": "103:16:112",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                      "typeString": "contract ProtocolSettings"
                    }
                  },
                  "id": 28946,
                  "nodeType": "InheritanceSpecifier",
                  "src": "103:16:112"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                6055,
                6309,
                27832,
                27899,
                40045,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 29284,
              "linearizedBaseContracts": [
                29284,
                40045,
                27832,
                6309,
                6055,
                27899,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "ProtocolSettingsMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 28959,
                    "nodeType": "Block",
                    "src": "193:43:112",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 28953,
                              "name": "lendingFeeTokensHeld",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4646,
                              "src": "197:20:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 28955,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 28954,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28948,
                              "src": "218:5:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "197:27:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 28956,
                            "name": "amout",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28950,
                            "src": "227:5:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "197:35:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 28958,
                        "nodeType": "ExpressionStatement",
                        "src": "197:35:112"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28960,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLendingFeeTokensHeld",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28951,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28948,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 28960,
                        "src": "156:13:112",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28947,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "156:7:112",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28950,
                        "name": "amout",
                        "nodeType": "VariableDeclaration",
                        "scope": 28960,
                        "src": "171:13:112",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28949,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "171:7:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "155:30:112"
                  },
                  "returnParameters": {
                    "id": 28952,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "193:0:112"
                  },
                  "scope": 29284,
                  "src": "123:113:112",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28973,
                    "nodeType": "Block",
                    "src": "309:43:112",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 28967,
                              "name": "tradingFeeTokensHeld",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4661,
                              "src": "313:20:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 28969,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 28968,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28962,
                              "src": "334:5:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "313:27:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 28970,
                            "name": "amout",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28964,
                            "src": "343:5:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "313:35:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 28972,
                        "nodeType": "ExpressionStatement",
                        "src": "313:35:112"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28974,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setTradingFeeTokensHeld",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28965,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28962,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 28974,
                        "src": "272:13:112",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28961,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "272:7:112",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28964,
                        "name": "amout",
                        "nodeType": "VariableDeclaration",
                        "scope": 28974,
                        "src": "287:13:112",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28963,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "287:7:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "271:30:112"
                  },
                  "returnParameters": {
                    "id": 28966,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "309:0:112"
                  },
                  "scope": 29284,
                  "src": "239:113:112",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28987,
                    "nodeType": "Block",
                    "src": "427:45:112",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 28981,
                              "name": "borrowingFeeTokensHeld",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4676,
                              "src": "431:22:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 28983,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 28982,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28976,
                              "src": "454:5:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "431:29:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 28984,
                            "name": "amout",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28978,
                            "src": "463:5:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "431:37:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 28986,
                        "nodeType": "ExpressionStatement",
                        "src": "431:37:112"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 28988,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setBorrowingFeeTokensHeld",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28979,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28976,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 28988,
                        "src": "390:13:112",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28975,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "390:7:112",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28978,
                        "name": "amout",
                        "nodeType": "VariableDeclaration",
                        "scope": 28988,
                        "src": "405:13:112",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28977,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "405:7:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "389:30:112"
                  },
                  "returnParameters": {
                    "id": 28980,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "427:0:112"
                  },
                  "scope": 29284,
                  "src": "355:117:112",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29282,
                    "nodeType": "Block",
                    "src": "530:2425:112",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 28996,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "545:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 28997,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setPriceFeedContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38692,
                                "src": "545:25:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 28998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "545:34:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 28999,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "581:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 28995,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "534:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "534:54:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29001,
                        "nodeType": "ExpressionStatement",
                        "src": "534:54:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29003,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "603:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29004,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSwapsImplContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38717,
                                "src": "603:25:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 29005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "603:34:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29006,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "639:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29002,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "592:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "592:54:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29008,
                        "nodeType": "ExpressionStatement",
                        "src": "592:54:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29010,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "661:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setLoanPool",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38875,
                                "src": "661:16:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
                                  "typeString": "function (address[] memory,address[] memory) external"
                                }
                              },
                              "id": 29012,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "661:25:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29013,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "688:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29009,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "650:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "650:45:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29015,
                        "nodeType": "ExpressionStatement",
                        "src": "650:45:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29017,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "710:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSupportedTokens",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38932,
                                "src": "710:23:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bool_$dyn_memory_ptr_$returns$__$",
                                  "typeString": "function (address[] memory,bool[] memory) external"
                                }
                              },
                              "id": 29019,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "710:32:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29020,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "744:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29016,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "699:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "699:52:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29022,
                        "nodeType": "ExpressionStatement",
                        "src": "699:52:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29024,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "766:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29025,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setLendingFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38966,
                                "src": "766:25:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29026,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "766:34:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29027,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "802:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29023,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "755:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "755:54:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29029,
                        "nodeType": "ExpressionStatement",
                        "src": "755:54:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29031,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "824:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29032,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setTradingFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39000,
                                "src": "824:25:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "824:34:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29034,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "860:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29030,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "813:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "813:54:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29036,
                        "nodeType": "ExpressionStatement",
                        "src": "813:54:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29038,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "882:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setBorrowingFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39034,
                                "src": "882:27:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29040,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "882:36:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29041,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "920:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29037,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "871:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "871:56:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29043,
                        "nodeType": "ExpressionStatement",
                        "src": "871:56:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29045,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "942:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSwapExternalFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39068,
                                "src": "942:30:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29047,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "942:39:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29048,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "983:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29044,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "931:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29049,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "931:59:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29050,
                        "nodeType": "ExpressionStatement",
                        "src": "931:59:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29052,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1005:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29053,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setAffiliateFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39102,
                                "src": "1005:27:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1005:36:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29055,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1043:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29051,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "994:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "994:56:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29057,
                        "nodeType": "ExpressionStatement",
                        "src": "994:56:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29059,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1065:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29060,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setAffiliateTradingTokenFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39136,
                                "src": "1065:39:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29061,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1065:48:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29062,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1115:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29058,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1054:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1054:68:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29064,
                        "nodeType": "ExpressionStatement",
                        "src": "1054:68:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29066,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1137:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29067,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setLiquidationIncentivePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39170,
                                "src": "1137:35:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1137:44:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29069,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1183:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29065,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1126:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1126:64:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29071,
                        "nodeType": "ExpressionStatement",
                        "src": "1126:64:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29073,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1205:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29074,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setMaxDisagreement",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39184,
                                "src": "1205:23:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1205:32:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29076,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1239:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29072,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1194:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1194:52:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29078,
                        "nodeType": "ExpressionStatement",
                        "src": "1194:52:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29080,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1261:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSourceBuffer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39198,
                                "src": "1261:20:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1261:29:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29083,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1292:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29079,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1250:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1250:49:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29085,
                        "nodeType": "ExpressionStatement",
                        "src": "1250:49:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29087,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1314:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29088,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setMaxSwapSize",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39223,
                                "src": "1314:19:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29089,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1314:28:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29090,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1344:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29086,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1303:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1303:48:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29092,
                        "nodeType": "ExpressionStatement",
                        "src": "1303:48:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29094,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1366:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29095,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setFeesController",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39248,
                                "src": "1366:22:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 29096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1366:31:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29097,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1399:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29093,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1355:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1355:51:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29099,
                        "nodeType": "ExpressionStatement",
                        "src": "1355:51:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29101,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1421:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29102,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawFees",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39389,
                                "src": "1421:17:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address,address) external returns (uint256)"
                                }
                              },
                              "id": 29103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1421:26:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29104,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1449:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29100,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1410:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1410:46:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29106,
                        "nodeType": "ExpressionStatement",
                        "src": "1410:46:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29108,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1471:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawLendingFees",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39475,
                                "src": "1471:24:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) external returns (bool)"
                                }
                              },
                              "id": 29110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1471:33:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29111,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1506:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29107,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1460:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1460:53:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29113,
                        "nodeType": "ExpressionStatement",
                        "src": "1460:53:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29115,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1528:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29116,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawTradingFees",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39561,
                                "src": "1528:24:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) external returns (bool)"
                                }
                              },
                              "id": 29117,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1528:33:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29118,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1563:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29114,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1517:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1517:53:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29120,
                        "nodeType": "ExpressionStatement",
                        "src": "1517:53:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29122,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1585:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawBorrowingFees",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39647,
                                "src": "1585:26:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) external returns (bool)"
                                }
                              },
                              "id": 29124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1585:35:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29125,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1622:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29121,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1574:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1574:55:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29127,
                        "nodeType": "ExpressionStatement",
                        "src": "1574:55:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29129,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1644:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawProtocolToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39668,
                                "src": "1644:26:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_address_$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (address,bool)"
                                }
                              },
                              "id": 29131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1644:35:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29132,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1681:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29128,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1633:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1633:55:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29134,
                        "nodeType": "ExpressionStatement",
                        "src": "1633:55:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29136,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1703:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "depositProtocolToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39697,
                                "src": "1703:25:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29138,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1703:34:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29139,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1739:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29135,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1692:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1692:54:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29141,
                        "nodeType": "ExpressionStatement",
                        "src": "1692:54:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29143,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1761:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29144,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLoanPoolsList",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39714,
                                "src": "1761:21:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                                  "typeString": "function (uint256,uint256) view external returns (bytes32[] memory)"
                                }
                              },
                              "id": 29145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1761:30:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29146,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1793:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29142,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1750:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1750:50:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29148,
                        "nodeType": "ExpressionStatement",
                        "src": "1750:50:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29150,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1815:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29151,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isLoanPool",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39730,
                                "src": "1815:15:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view external returns (bool)"
                                }
                              },
                              "id": 29152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1815:24:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29153,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1841:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29149,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1804:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1804:44:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29155,
                        "nodeType": "ExpressionStatement",
                        "src": "1804:44:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29157,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1863:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSovrynSwapContractRegistryAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39763,
                                "src": "1863:41:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 29159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1863:50:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29160,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1915:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29156,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1852:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1852:70:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29162,
                        "nodeType": "ExpressionStatement",
                        "src": "1852:70:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29164,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1937:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setWrbtcToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39800,
                                "src": "1937:18:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 29166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1937:27:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29167,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "1966:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29163,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1926:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1926:47:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29169,
                        "nodeType": "ExpressionStatement",
                        "src": "1926:47:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29171,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "1988:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29172,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setProtocolTokenAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39833,
                                "src": "1988:28:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 29173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1988:37:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29174,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2027:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29170,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1977:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1977:57:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29176,
                        "nodeType": "ExpressionStatement",
                        "src": "1977:57:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29178,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2049:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSOVTokenAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38577,
                                "src": "2049:23:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 29180,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2049:32:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29181,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2083:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29177,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2038:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29182,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2038:52:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29183,
                        "nodeType": "ExpressionStatement",
                        "src": "2038:52:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29185,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2105:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29186,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setLockedSOVAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38610,
                                "src": "2105:24:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 29187,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2105:33:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29188,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2140:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29184,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2094:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2094:53:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29190,
                        "nodeType": "ExpressionStatement",
                        "src": "2094:53:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29192,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2162:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29193,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setMinReferralsToPayoutAffiliates",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38667,
                                "src": "2162:38:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2162:47:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29195,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2211:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29191,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2151:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2151:67:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29197,
                        "nodeType": "ExpressionStatement",
                        "src": "2151:67:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29199,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2233:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setRolloverBaseReward",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39865,
                                "src": "2233:26:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2233:35:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29202,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2270:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29198,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2222:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2222:55:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29204,
                        "nodeType": "ExpressionStatement",
                        "src": "2222:55:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29206,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2293:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29207,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setLendingFeeTokensHeld",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28960,
                                "src": "2293:28:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256) external"
                                }
                              },
                              "id": 29208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2293:37:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29209,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2332:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29205,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2282:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2282:57:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29211,
                        "nodeType": "ExpressionStatement",
                        "src": "2282:57:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29213,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2354:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29214,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setTradingFeeTokensHeld",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28974,
                                "src": "2354:28:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256) external"
                                }
                              },
                              "id": 29215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2354:37:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29216,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2393:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29212,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2343:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2343:57:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29218,
                        "nodeType": "ExpressionStatement",
                        "src": "2343:57:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29220,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2415:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setBorrowingFeeTokensHeld",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 28988,
                                "src": "2415:30:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256) external"
                                }
                              },
                              "id": 29222,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2415:39:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29223,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2456:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29219,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2404:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2404:59:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29225,
                        "nodeType": "ExpressionStatement",
                        "src": "2404:59:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29227,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2478:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getSpecialRebates",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39961,
                                "src": "2478:22:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address,address) view external returns (uint256)"
                                }
                              },
                              "id": 29229,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2478:31:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29230,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2511:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29226,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2467:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2467:51:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29232,
                        "nodeType": "ExpressionStatement",
                        "src": "2467:51:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29234,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2534:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29235,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getProtocolAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39969,
                                "src": "2534:23:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 29236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2534:32:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29237,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2568:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29233,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2523:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2523:52:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29239,
                        "nodeType": "ExpressionStatement",
                        "src": "2523:52:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29241,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2590:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getSovTokenAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39977,
                                "src": "2590:23:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 29243,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2590:32:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29244,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2624:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29240,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2579:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2579:52:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29246,
                        "nodeType": "ExpressionStatement",
                        "src": "2579:52:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29248,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2646:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29249,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLockedSOVAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39985,
                                "src": "2646:24:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 29250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2646:33:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29251,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2681:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29247,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2635:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2635:53:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29253,
                        "nodeType": "ExpressionStatement",
                        "src": "2635:53:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29255,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2703:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29256,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getFeeRebatePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39993,
                                "src": "2703:24:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 29257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2703:33:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29258,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2738:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29254,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2692:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2692:53:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29260,
                        "nodeType": "ExpressionStatement",
                        "src": "2692:53:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29262,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2760:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getSwapExternalFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 40036,
                                "src": "2760:30:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 29264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2760:39:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29265,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2801:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29261,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2749:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2749:59:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29267,
                        "nodeType": "ExpressionStatement",
                        "src": "2749:59:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29269,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2824:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setTradingRebateRewardsBasisPoint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38642,
                                "src": "2824:38:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 29271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2824:47:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29272,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2873:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29268,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2813:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2813:67:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29274,
                        "nodeType": "ExpressionStatement",
                        "src": "2813:67:112"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29276,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45288,
                                  "src": "2895:4:112",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettingsMockup_$29284",
                                    "typeString": "contract ProtocolSettingsMockup"
                                  }
                                },
                                "id": 29277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getTradingRebateRewardsBasisPoint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 40044,
                                "src": "2895:38:112",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 29278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2895:47:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29279,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28990,
                              "src": "2944:6:112",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29275,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2884:10:112",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 29280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2884:67:112",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29281,
                        "nodeType": "ExpressionStatement",
                        "src": "2884:67:112"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29283,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 28993,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 28992,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "520:9:112",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "520:9:112"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28991,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28990,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 29283,
                        "src": "495:14:112",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28989,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "495:7:112",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "494:16:112"
                  },
                  "returnParameters": {
                    "id": 28994,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "530:0:112"
                  },
                  "scope": 29284,
                  "src": "475:2480:112",
                  "stateMutability": "nonpayable",
                  "superFunction": 38519,
                  "visibility": "external"
                }
              ],
              "scope": 29285,
              "src": "68:2889:112"
            }
          ],
          "src": "0:2958:112"
        },
        "id": 112
      },
      "contracts/mockup/RBTCWrapperProxyMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/RBTCWrapperProxyMockup.sol",
          "exportedSymbols": {
            "RBTCWrapperProxyMockup": [
              29342
            ]
          },
          "id": 29343,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 29286,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:113"
            },
            {
              "absolutePath": "contracts/farm/LiquidityMining.sol",
              "file": "../farm/LiquidityMining.sol",
              "id": 29287,
              "nodeType": "ImportDirective",
              "scope": 29343,
              "sourceUnit": 8296,
              "src": "25:37:113",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 29342,
              "linearizedBaseContracts": [
                29342
              ],
              "name": "RBTCWrapperProxyMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 29289,
                  "name": "liquidityMining",
                  "nodeType": "VariableDeclaration",
                  "scope": 29342,
                  "src": "99:38:113",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                    "typeString": "contract LiquidityMining"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 29288,
                    "name": "LiquidityMining",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8295,
                    "src": "99:15:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                      "typeString": "contract LiquidityMining"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29298,
                    "nodeType": "Block",
                    "src": "194:42:113",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 29294,
                            "name": "liquidityMining",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29289,
                            "src": "198:15:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                              "typeString": "contract LiquidityMining"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 29295,
                            "name": "_liquidityMining",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29291,
                            "src": "216:16:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                              "typeString": "contract LiquidityMining"
                            }
                          },
                          "src": "198:34:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                            "typeString": "contract LiquidityMining"
                          }
                        },
                        "id": 29297,
                        "nodeType": "ExpressionStatement",
                        "src": "198:34:113"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29299,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29292,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29291,
                        "name": "_liquidityMining",
                        "nodeType": "VariableDeclaration",
                        "scope": 29299,
                        "src": "153:32:113",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                          "typeString": "contract LiquidityMining"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 29290,
                          "name": "LiquidityMining",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 8295,
                          "src": "153:15:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                            "typeString": "contract LiquidityMining"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "152:34:113"
                  },
                  "returnParameters": {
                    "id": 29293,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "194:0:113"
                  },
                  "scope": 29342,
                  "src": "141:95:113",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29312,
                    "nodeType": "Block",
                    "src": "287:59:113",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 29307,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29301,
                              "src": "319:10:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 29308,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "331:3:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 29309,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "331:10:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 29304,
                              "name": "liquidityMining",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29289,
                              "src": "291:15:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                "typeString": "contract LiquidityMining"
                              }
                            },
                            "id": 29306,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "claimReward",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7516,
                            "src": "291:27:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address) external"
                            }
                          },
                          "id": 29310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "291:51:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29311,
                        "nodeType": "ExpressionStatement",
                        "src": "291:51:113"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29313,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29301,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 29313,
                        "src": "260:18:113",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29300,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "260:7:113",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "259:20:113"
                  },
                  "returnParameters": {
                    "id": 29303,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "287:0:113"
                  },
                  "scope": 29342,
                  "src": "239:107:113",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29323,
                    "nodeType": "Block",
                    "src": "391:59:113",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 29319,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "435:3:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 29320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "435:10:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 29316,
                              "name": "liquidityMining",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29289,
                              "src": "395:15:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                "typeString": "contract LiquidityMining"
                              }
                            },
                            "id": 29318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "claimRewardFromAllPools",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7610,
                            "src": "395:39:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 29321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "395:51:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29322,
                        "nodeType": "ExpressionStatement",
                        "src": "395:51:113"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29324,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimRewardFromAllPools",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29314,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "381:2:113"
                  },
                  "returnParameters": {
                    "id": 29315,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "391:0:113"
                  },
                  "scope": 29342,
                  "src": "349:101:113",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29340,
                    "nodeType": "Block",
                    "src": "515:65:113",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 29334,
                              "name": "_poolToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29326,
                              "src": "544:10:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29335,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29328,
                              "src": "556:7:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 29336,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "565:3:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 29337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "565:10:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 29331,
                              "name": "liquidityMining",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29289,
                              "src": "519:15:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_LiquidityMining_$8295",
                                "typeString": "contract LiquidityMining"
                              }
                            },
                            "id": 29333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7729,
                            "src": "519:24:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,address) external"
                            }
                          },
                          "id": 29338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "519:57:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29339,
                        "nodeType": "ExpressionStatement",
                        "src": "519:57:113"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29341,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29329,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29326,
                        "name": "_poolToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 29341,
                        "src": "471:18:113",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29325,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "471:7:113",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29328,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 29341,
                        "src": "491:15:113",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29327,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "491:7:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "470:37:113"
                  },
                  "returnParameters": {
                    "id": 29330,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "515:0:113"
                  },
                  "scope": 29342,
                  "src": "453:127:113",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 29343,
              "src": "64:518:113"
            }
          ],
          "src": "0:583:113"
        },
        "id": 113
      },
      "contracts/mockup/StakingMock.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/StakingMock.sol",
          "exportedSymbols": {
            "StakingMock": [
              29384
            ]
          },
          "id": 29385,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 29344,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:114"
            },
            {
              "absolutePath": "contracts/governance/Staking/Staking.sol",
              "file": "../governance/Staking/Staking.sol",
              "id": 29345,
              "nodeType": "ImportDirective",
              "scope": 29385,
              "sourceUnit": 15558,
              "src": "26:43:114",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mockup/BlockMockUp.sol",
              "file": "./BlockMockUp.sol",
              "id": 29346,
              "nodeType": "ImportDirective",
              "scope": 29385,
              "sourceUnit": 28238,
              "src": "70:27:114",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 29347,
                    "name": "Staking",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15557,
                    "src": "123:7:114",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Staking_$15557",
                      "typeString": "contract Staking"
                    }
                  },
                  "id": 29348,
                  "nodeType": "InheritanceSpecifier",
                  "src": "123:7:114"
                }
              ],
              "contractDependencies": [
                10703,
                10802,
                13706,
                13773,
                13959,
                15557,
                15713,
                16683,
                41125,
                41798,
                44823
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 29384,
              "linearizedBaseContracts": [
                29384,
                15557,
                10703,
                44823,
                10802,
                16683,
                13706,
                13959,
                15713,
                41798,
                41125,
                13773
              ],
              "name": "StakingMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 29350,
                  "name": "blockMockUp",
                  "nodeType": "VariableDeclaration",
                  "scope": 29384,
                  "src": "173:30:114",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_BlockMockUp_$28237",
                    "typeString": "contract BlockMockUp"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 29349,
                    "name": "BlockMockUp",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28237,
                    "src": "173:11:114",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BlockMockUp_$28237",
                      "typeString": "contract BlockMockUp"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29372,
                    "nodeType": "Block",
                    "src": "382:118:114",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 29362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 29358,
                                "name": "_blockMockUp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29352,
                                "src": "394:12:114",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 29360,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "418:1:114",
                                    "subdenomination": null,
                                    "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": 29359,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "410:7:114",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 29361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "410:10:114",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "394:26:114",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "626c6f636b206d6f636b7570206164647265737320696e76616c6964",
                              "id": 29363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "422:30:114",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_baab075332c3955894af0dfe7dd6f42f519093901bb2a97b9392a6eaa3b6218d",
                                "typeString": "literal_string \"block mockup address invalid\""
                              },
                              "value": "block mockup address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_baab075332c3955894af0dfe7dd6f42f519093901bb2a97b9392a6eaa3b6218d",
                                "typeString": "literal_string \"block mockup address invalid\""
                              }
                            ],
                            "id": 29357,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "386:7:114",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 29364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "386:67:114",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29365,
                        "nodeType": "ExpressionStatement",
                        "src": "386:67:114"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 29366,
                            "name": "blockMockUp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29350,
                            "src": "457:11:114",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BlockMockUp_$28237",
                              "typeString": "contract BlockMockUp"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 29368,
                                "name": "_blockMockUp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29352,
                                "src": "483:12:114",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 29367,
                              "name": "BlockMockUp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28237,
                              "src": "471:11:114",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_BlockMockUp_$28237_$",
                                "typeString": "type(contract BlockMockUp)"
                              }
                            },
                            "id": 29369,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "471:25:114",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BlockMockUp_$28237",
                              "typeString": "contract BlockMockUp"
                            }
                          },
                          "src": "457:39:114",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BlockMockUp_$28237",
                            "typeString": "contract BlockMockUp"
                          }
                        },
                        "id": 29371,
                        "nodeType": "ExpressionStatement",
                        "src": "457:39:114"
                      }
                    ]
                  },
                  "documentation": "@notice gets block number from BlockMockUp\n@param _blockMockUp the address of BlockMockUp",
                  "id": 29373,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 29355,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 29354,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "372:9:114",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "372:9:114"
                    }
                  ],
                  "name": "setBlockMockUpAddr",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29353,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29352,
                        "name": "_blockMockUp",
                        "nodeType": "VariableDeclaration",
                        "scope": 29373,
                        "src": "343:20:114",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29351,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "343:7:114",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "342:22:114"
                  },
                  "returnParameters": {
                    "id": 29356,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "382:0:114"
                  },
                  "scope": 29384,
                  "src": "315:185:114",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29382,
                    "nodeType": "Block",
                    "src": "645:40:114",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 29378,
                              "name": "blockMockUp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29350,
                              "src": "656:11:114",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BlockMockUp_$28237",
                                "typeString": "contract BlockMockUp"
                              }
                            },
                            "id": 29379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getBlockNum",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28226,
                            "src": "656:23:114",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 29380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "656:25:114",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 29377,
                        "id": 29381,
                        "nodeType": "Return",
                        "src": "649:32:114"
                      }
                    ]
                  },
                  "documentation": "@notice Determine the current Block Number from BlockMockUp\n",
                  "id": 29383,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getCurrentBlockNumber",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29374,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "610:2:114"
                  },
                  "returnParameters": {
                    "id": 29377,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29376,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 29383,
                        "src": "636:7:114",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29375,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "636:7:114",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "635:9:114"
                  },
                  "scope": 29384,
                  "src": "579:106:114",
                  "stateMutability": "view",
                  "superFunction": 16511,
                  "visibility": "internal"
                }
              ],
              "scope": 29385,
              "src": "99:588:114"
            }
          ],
          "src": "0:688:114"
        },
        "id": 114
      },
      "contracts/mockup/StakingMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/StakingMockup.sol",
          "exportedSymbols": {
            "StakingMockup": [
              29529
            ]
          },
          "id": 29530,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 29386,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:115"
            },
            {
              "absolutePath": "contracts/governance/Staking/Staking.sol",
              "file": "../governance/Staking/Staking.sol",
              "id": 29387,
              "nodeType": "ImportDirective",
              "scope": 29530,
              "sourceUnit": 15558,
              "src": "26:43:115",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 29388,
                    "name": "Staking",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15557,
                    "src": "97:7:115",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Staking_$15557",
                      "typeString": "contract Staking"
                    }
                  },
                  "id": 29389,
                  "nodeType": "InheritanceSpecifier",
                  "src": "97:7:115"
                }
              ],
              "contractDependencies": [
                10703,
                10802,
                13706,
                13773,
                13959,
                15557,
                15713,
                16683,
                41125,
                41798,
                44823
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 29529,
              "linearizedBaseContracts": [
                29529,
                15557,
                10703,
                44823,
                10802,
                16683,
                13706,
                13959,
                15713,
                41798,
                41125,
                13773
              ],
              "name": "StakingMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 29402,
                    "nodeType": "Block",
                    "src": "192:37:115",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          },
                          "id": 29400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 29397,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29391,
                                "src": "213:7:115",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 29396,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14948,
                              "src": "203:9:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint96_$",
                                "typeString": "function (address) view returns (uint96)"
                              }
                            },
                            "id": 29398,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "203:18:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 29399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "224:1:115",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "203:22:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 29395,
                        "id": 29401,
                        "nodeType": "Return",
                        "src": "196:29:115"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29403,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf_MultipliedByTwo",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29392,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29391,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 29403,
                        "src": "143:15:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29390,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "143:7:115",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "142:17:115"
                  },
                  "returnParameters": {
                    "id": 29395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29394,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 29403,
                        "src": "183:7:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29393,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "183:7:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "182:9:115"
                  },
                  "scope": 29529,
                  "src": "108:121:115",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "constant": false,
                  "id": 29405,
                  "name": "priorTotalVotingPower",
                  "nodeType": "VariableDeclaration",
                  "scope": 29529,
                  "src": "232:28:115",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 29404,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "232:6:115",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29414,
                    "nodeType": "Block",
                    "src": "338:54:115",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 29410,
                            "name": "priorTotalVotingPower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29405,
                            "src": "342:21:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 29411,
                            "name": "_priorTotalVotingPower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29407,
                            "src": "366:22:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "342:46:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 29413,
                        "nodeType": "ExpressionStatement",
                        "src": "342:46:115"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29415,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "MOCK_priorTotalVotingPower",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29408,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29407,
                        "name": "_priorTotalVotingPower",
                        "nodeType": "VariableDeclaration",
                        "scope": 29415,
                        "src": "300:29:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 29406,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "300:6:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "299:31:115"
                  },
                  "returnParameters": {
                    "id": 29409,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "338:0:115"
                  },
                  "scope": 29529,
                  "src": "264:128:115",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29435,
                    "nodeType": "Block",
                    "src": "509:117:115",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 29426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 29424,
                              "name": "priorTotalVotingPower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29405,
                              "src": "520:21:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 29425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "545:1:115",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "520:26:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 29430,
                                "name": "blockNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29417,
                                "src": "604:11:115",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 29431,
                                "name": "time",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29419,
                                "src": "617:4:115",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 29428,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45295,
                                "src": "573:5:115",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_StakingMockup_$29529",
                                  "typeString": "contract super StakingMockup"
                                }
                              },
                              "id": 29429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getPriorTotalVotingPower",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15808,
                              "src": "573:30:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint32_$_t_uint256_$returns$_t_uint96_$",
                                "typeString": "function (uint32,uint256) view returns (uint96)"
                              }
                            },
                            "id": 29432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "573:49:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "id": 29433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "520:102:115",
                          "trueExpression": {
                            "argumentTypes": null,
                            "id": 29427,
                            "name": "priorTotalVotingPower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29405,
                            "src": "549:21:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 29423,
                        "id": 29434,
                        "nodeType": "Return",
                        "src": "513:109:115"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29436,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriorTotalVotingPower",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29420,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29417,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 29436,
                        "src": "429:18:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 29416,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "429:6:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29419,
                        "name": "time",
                        "nodeType": "VariableDeclaration",
                        "scope": 29436,
                        "src": "449:12:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29418,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "449:7:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "428:34:115"
                  },
                  "returnParameters": {
                    "id": 29423,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29422,
                        "name": "totalVotingPower",
                        "nodeType": "VariableDeclaration",
                        "scope": 29436,
                        "src": "484:23:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 29421,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "484:6:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "483:25:115"
                  },
                  "scope": 29529,
                  "src": "395:231:115",
                  "stateMutability": "view",
                  "superFunction": 15808,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 29438,
                  "name": "priorWeightedStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 29529,
                  "src": "629:25:115",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 29437,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "629:6:115",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29447,
                    "nodeType": "Block",
                    "src": "726:48:115",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 29443,
                            "name": "priorWeightedStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29438,
                            "src": "730:18:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 29444,
                            "name": "_priorWeightedStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29440,
                            "src": "751:19:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "730:40:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 29446,
                        "nodeType": "ExpressionStatement",
                        "src": "730:40:115"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29448,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "MOCK_priorWeightedStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29441,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29440,
                        "name": "_priorWeightedStake",
                        "nodeType": "VariableDeclaration",
                        "scope": 29448,
                        "src": "691:26:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 29439,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "691:6:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "690:28:115"
                  },
                  "returnParameters": {
                    "id": 29442,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "726:0:115"
                  },
                  "scope": 29529,
                  "src": "658:116:115",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29471,
                    "nodeType": "Block",
                    "src": "898:117:115",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "id": 29461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 29459,
                              "name": "priorWeightedStake",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29438,
                              "src": "909:18:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 29460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "931:1:115",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "909:23:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 29465,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29450,
                                "src": "984:7:115",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 29466,
                                "name": "blockNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29452,
                                "src": "993:11:115",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 29467,
                                "name": "date",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29454,
                                "src": "1006:4:115",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 29463,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45295,
                                "src": "956:5:115",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_StakingMockup_$29529",
                                  "typeString": "contract super StakingMockup"
                                }
                              },
                              "id": 29464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getPriorWeightedStake",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16268,
                              "src": "956:27:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                                "typeString": "function (address,uint256,uint256) view returns (uint96)"
                              }
                            },
                            "id": 29468,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "956:55:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "id": 29469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "909:102:115",
                          "trueExpression": {
                            "argumentTypes": null,
                            "id": 29462,
                            "name": "priorWeightedStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29438,
                            "src": "935:18:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 29458,
                        "id": 29470,
                        "nodeType": "Return",
                        "src": "902:109:115"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29472,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriorWeightedStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29455,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29450,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 29472,
                        "src": "811:15:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29449,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "811:7:115",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29452,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 29472,
                        "src": "830:19:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29451,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "830:7:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29454,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 29472,
                        "src": "853:12:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29453,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "853:7:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "807:61:115"
                  },
                  "returnParameters": {
                    "id": 29458,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29457,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 29472,
                        "src": "890:6:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 29456,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "890:6:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "889:8:115"
                  },
                  "scope": 29529,
                  "src": "777:238:115",
                  "stateMutability": "view",
                  "superFunction": 16268,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29489,
                    "nodeType": "Block",
                    "src": "1123:63:115",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 29484,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29474,
                              "src": "1155:7:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29485,
                              "name": "blockNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29476,
                              "src": "1164:11:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29486,
                              "name": "date",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29478,
                              "src": "1177:4:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 29481,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45295,
                              "src": "1127:5:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_StakingMockup_$29529",
                                "typeString": "contract super StakingMockup"
                              }
                            },
                            "id": 29483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPriorWeightedStake",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16268,
                            "src": "1127:27:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint96_$",
                              "typeString": "function (address,uint256,uint256) view returns (uint96)"
                            }
                          },
                          "id": 29487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1127:55:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 29488,
                        "nodeType": "ExpressionStatement",
                        "src": "1127:55:115"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29490,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "calculatePriorWeightedStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29474,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 29490,
                        "src": "1058:15:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29473,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1058:7:115",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29476,
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "scope": 29490,
                        "src": "1077:19:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29475,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1077:7:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29478,
                        "name": "date",
                        "nodeType": "VariableDeclaration",
                        "scope": 29490,
                        "src": "1100:12:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29477,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1100:7:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1054:61:115"
                  },
                  "returnParameters": {
                    "id": 29480,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1123:0:115"
                  },
                  "scope": 29529,
                  "src": "1018:168:115",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29527,
                    "nodeType": "Block",
                    "src": "1367:237:115",
                    "statements": [
                      {
                        "assignments": [
                          29500
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 29500,
                            "name": "nCheckpoints",
                            "nodeType": "VariableDeclaration",
                            "scope": 29527,
                            "src": "1371:19:115",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 29499,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1371:6:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 29506,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 29501,
                              "name": "numDelegateStakingCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15675,
                              "src": "1393:29:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint32_$_$",
                                "typeString": "mapping(address => mapping(uint256 => uint32))"
                              }
                            },
                            "id": 29503,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 29502,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29492,
                              "src": "1423:9:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1393:40:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint32_$",
                              "typeString": "mapping(uint256 => uint32)"
                            }
                          },
                          "id": 29505,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 29504,
                            "name": "lockedTS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29494,
                            "src": "1434:8:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1393:50:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1371:72:115"
                      },
                      {
                        "assignments": [
                          29508
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 29508,
                            "name": "staked",
                            "nodeType": "VariableDeclaration",
                            "scope": 29527,
                            "src": "1447:13:115",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            },
                            "typeName": {
                              "id": 29507,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "1447:6:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 29519,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 29509,
                                  "name": "delegateStakingCheckpoints",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15669,
                                  "src": "1463:26:115",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref)))"
                                  }
                                },
                                "id": 29511,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 29510,
                                  "name": "delegatee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29492,
                                  "src": "1490:9:115",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1463:37:115",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint32 => struct StakingStorage.Checkpoint storage ref))"
                                }
                              },
                              "id": 29513,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 29512,
                                "name": "lockedTS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29494,
                                "src": "1501:8:115",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1463:47:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_Checkpoint_$15651_storage_$",
                                "typeString": "mapping(uint32 => struct StakingStorage.Checkpoint storage ref)"
                              }
                            },
                            "id": 29517,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 29516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 29514,
                                "name": "nCheckpoints",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29500,
                                "src": "1511:12:115",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 29515,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1526:1:115",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "1511:16:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1463:65:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Checkpoint_$15651_storage",
                              "typeString": "struct StakingStorage.Checkpoint storage ref"
                            }
                          },
                          "id": 29518,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stake",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15650,
                          "src": "1463:71:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1447:87:115"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 29521,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29492,
                              "src": "1563:9:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29522,
                              "name": "lockedTS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29494,
                              "src": "1574:8:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29523,
                              "name": "nCheckpoints",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29500,
                              "src": "1584:12:115",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 29524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1598:1:115",
                              "subdenomination": null,
                              "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_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 29520,
                            "name": "_writeDelegateCheckpoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13562,
                            "src": "1538:24:115",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint32_$_t_uint96_$returns$__$",
                              "typeString": "function (address,uint256,uint32,uint96)"
                            }
                          },
                          "id": 29525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1538:62:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29526,
                        "nodeType": "ExpressionStatement",
                        "src": "1538:62:115"
                      }
                    ]
                  },
                  "documentation": "@dev We need this function to simulate zero delegate checkpoint value.",
                  "id": 29528,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setDelegateStake",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29492,
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 29528,
                        "src": "1303:17:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29491,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1303:7:115",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29494,
                        "name": "lockedTS",
                        "nodeType": "VariableDeclaration",
                        "scope": 29528,
                        "src": "1324:16:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29493,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1324:7:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29496,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 29528,
                        "src": "1344:12:115",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 29495,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "1344:6:115",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1299:60:115"
                  },
                  "returnParameters": {
                    "id": 29498,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1367:0:115"
                  },
                  "scope": 29529,
                  "src": "1274:330:115",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 29530,
              "src": "71:1535:115"
            }
          ],
          "src": "0:1607:115"
        },
        "id": 115
      },
      "contracts/mockup/StakingRewardsMockUp.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/StakingRewardsMockUp.sol",
          "exportedSymbols": {
            "StakingRewardsMockUp": [
              29574
            ]
          },
          "id": 29575,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 29531,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:116"
            },
            {
              "absolutePath": "contracts/governance/StakingRewards/StakingRewards.sol",
              "file": "../governance/StakingRewards/StakingRewards.sol",
              "id": 29532,
              "nodeType": "ImportDirective",
              "scope": 29575,
              "sourceUnit": 17139,
              "src": "26:57:116",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mockup/BlockMockUp.sol",
              "file": "./BlockMockUp.sol",
              "id": 29533,
              "nodeType": "ImportDirective",
              "scope": 29575,
              "sourceUnit": 28238,
              "src": "84:27:116",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 29534,
                    "name": "StakingRewards",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17138,
                    "src": "234:14:116",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_StakingRewards_$17138",
                      "typeString": "contract StakingRewards"
                    }
                  },
                  "id": 29535,
                  "nodeType": "InheritanceSpecifier",
                  "src": "234:14:116"
                }
              ],
              "contractDependencies": [
                17138,
                17184,
                41125,
                41699,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Staking Rewards Contract MockUp\n@notice This is used for Testing\n",
              "fullyImplemented": true,
              "id": 29574,
              "linearizedBaseContracts": [
                29574,
                17138,
                41699,
                17184,
                41798,
                41125
              ],
              "name": "StakingRewardsMockUp",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 29537,
                  "name": "blockMockUp",
                  "nodeType": "VariableDeclaration",
                  "scope": 29574,
                  "src": "291:30:116",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_BlockMockUp_$28237",
                    "typeString": "contract BlockMockUp"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 29536,
                    "name": "BlockMockUp",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28237,
                    "src": "291:11:116",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BlockMockUp_$28237",
                      "typeString": "contract BlockMockUp"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "id": 29540,
                  "libraryName": {
                    "contractScope": null,
                    "id": 29538,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "331:8:116",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "325:27:116",
                  "typeName": {
                    "id": 29539,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "344:7:116",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "body": {
                    "id": 29562,
                    "nodeType": "Block",
                    "src": "530:118:116",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 29552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 29548,
                                "name": "_blockMockUp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29542,
                                "src": "542:12:116",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 29550,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "566:1:116",
                                    "subdenomination": null,
                                    "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": 29549,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "558:7:116",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 29551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "558:10:116",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "542:26:116",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "626c6f636b206d6f636b7570206164647265737320696e76616c6964",
                              "id": 29553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "570:30:116",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_baab075332c3955894af0dfe7dd6f42f519093901bb2a97b9392a6eaa3b6218d",
                                "typeString": "literal_string \"block mockup address invalid\""
                              },
                              "value": "block mockup address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_baab075332c3955894af0dfe7dd6f42f519093901bb2a97b9392a6eaa3b6218d",
                                "typeString": "literal_string \"block mockup address invalid\""
                              }
                            ],
                            "id": 29547,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "534:7:116",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 29554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "534:67:116",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29555,
                        "nodeType": "ExpressionStatement",
                        "src": "534:67:116"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 29556,
                            "name": "blockMockUp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29537,
                            "src": "605:11:116",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BlockMockUp_$28237",
                              "typeString": "contract BlockMockUp"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 29558,
                                "name": "_blockMockUp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29542,
                                "src": "631:12:116",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 29557,
                              "name": "BlockMockUp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28237,
                              "src": "619:11:116",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_BlockMockUp_$28237_$",
                                "typeString": "type(contract BlockMockUp)"
                              }
                            },
                            "id": 29559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "619:25:116",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BlockMockUp_$28237",
                              "typeString": "contract BlockMockUp"
                            }
                          },
                          "src": "605:39:116",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BlockMockUp_$28237",
                            "typeString": "contract BlockMockUp"
                          }
                        },
                        "id": 29561,
                        "nodeType": "ExpressionStatement",
                        "src": "605:39:116"
                      }
                    ]
                  },
                  "documentation": "@notice gets block number from BlockMockUp\n@param _blockMockUp the address of BlockMockUp",
                  "id": 29563,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 29545,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 29544,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "520:9:116",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "520:9:116"
                    }
                  ],
                  "name": "setBlockMockUpAddr",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29543,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29542,
                        "name": "_blockMockUp",
                        "nodeType": "VariableDeclaration",
                        "scope": 29563,
                        "src": "491:20:116",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29541,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "491:7:116",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "490:22:116"
                  },
                  "returnParameters": {
                    "id": 29546,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "530:0:116"
                  },
                  "scope": 29574,
                  "src": "463:185:116",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29572,
                    "nodeType": "Block",
                    "src": "793:40:116",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 29568,
                              "name": "blockMockUp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29537,
                              "src": "804:11:116",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BlockMockUp_$28237",
                                "typeString": "contract BlockMockUp"
                              }
                            },
                            "id": 29569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getBlockNum",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28226,
                            "src": "804:23:116",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 29570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "804:25:116",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 29567,
                        "id": 29571,
                        "nodeType": "Return",
                        "src": "797:32:116"
                      }
                    ]
                  },
                  "documentation": "@notice Determine the current Block Number from BlockMockUp\n",
                  "id": 29573,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getCurrentBlockNumber",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29564,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "758:2:116"
                  },
                  "returnParameters": {
                    "id": 29567,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29566,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 29573,
                        "src": "784:7:116",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29565,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "784:7:116",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "783:9:116"
                  },
                  "scope": 29574,
                  "src": "727:106:116",
                  "stateMutability": "view",
                  "superFunction": 17137,
                  "visibility": "internal"
                }
              ],
              "scope": 29575,
              "src": "201:634:116"
            }
          ],
          "src": "0:836:116"
        },
        "id": 116
      },
      "contracts/mockup/TimelockHarness.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/TimelockHarness.sol",
          "exportedSymbols": {
            "Administered": [
              29583
            ],
            "TimelockHarness": [
              29632
            ],
            "TimelockTest": [
              29679
            ]
          },
          "id": 29680,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 29576,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".16"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:117"
            },
            {
              "absolutePath": "contracts/governance/Timelock.sol",
              "file": "../governance/Timelock.sol",
              "id": 29577,
              "nodeType": "ImportDirective",
              "scope": 29680,
              "sourceUnit": 17727,
              "src": "26:36:117",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 29583,
              "linearizedBaseContracts": [
                29583
              ],
              "name": "Administered",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 29582,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_acceptAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29578,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "111:2:117"
                  },
                  "returnParameters": {
                    "id": 29581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29580,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 29582,
                        "src": "132:7:117",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "132:7:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "131:9:117"
                  },
                  "scope": 29583,
                  "src": "90:51:117",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 29680,
              "src": "64:79:117"
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 29584,
                    "name": "Timelock",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17726,
                    "src": "173:8:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Timelock_$17726",
                      "typeString": "contract Timelock"
                    }
                  },
                  "id": 29585,
                  "nodeType": "InheritanceSpecifier",
                  "src": "173:8:117"
                }
              ],
              "contractDependencies": [
                10802,
                17252,
                17726
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 29632,
              "linearizedBaseContracts": [
                29632,
                17726,
                17252,
                10802
              ],
              "name": "TimelockHarness",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 29596,
                    "nodeType": "Block",
                    "src": "261:2:117",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 29597,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 29592,
                          "name": "admin_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 29587,
                          "src": "245:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 29593,
                          "name": "delay_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 29589,
                          "src": "253:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 29594,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 29591,
                        "name": "Timelock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17726,
                        "src": "236:8:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Timelock_$17726_$",
                          "typeString": "type(contract Timelock)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "236:24:117"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29590,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29587,
                        "name": "admin_",
                        "nodeType": "VariableDeclaration",
                        "scope": 29597,
                        "src": "197:14:117",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29586,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "197:7:117",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29589,
                        "name": "delay_",
                        "nodeType": "VariableDeclaration",
                        "scope": 29597,
                        "src": "213:14:117",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29588,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "213:7:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "196:32:117"
                  },
                  "returnParameters": {
                    "id": 29595,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "261:0:117"
                  },
                  "scope": 29632,
                  "src": "185:78:117",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29610,
                    "nodeType": "Block",
                    "src": "322:47:117",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 29602,
                            "name": "delay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17274,
                            "src": "326:5:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 29603,
                            "name": "delay_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29599,
                            "src": "334:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "326:14:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 29605,
                        "nodeType": "ExpressionStatement",
                        "src": "326:14:117"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 29607,
                              "name": "delay",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17274,
                              "src": "359:5:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 29606,
                            "name": "NewDelay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17290,
                            "src": "350:8:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 29608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "350:15:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29609,
                        "nodeType": "EmitStatement",
                        "src": "345:20:117"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29611,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setDelayWithoutChecking",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29599,
                        "name": "delay_",
                        "nodeType": "VariableDeclaration",
                        "scope": 29611,
                        "src": "299:14:117",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29598,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "299:7:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "298:16:117"
                  },
                  "returnParameters": {
                    "id": 29601,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "322:0:117"
                  },
                  "scope": 29632,
                  "src": "266:103:117",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29620,
                    "nodeType": "Block",
                    "src": "434:36:117",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 29616,
                            "name": "pendingAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17272,
                            "src": "438:12:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 29617,
                            "name": "pendingAdmin_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29613,
                            "src": "453:13:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "438:28:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 29619,
                        "nodeType": "ExpressionStatement",
                        "src": "438:28:117"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29621,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "harnessSetPendingAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29613,
                        "name": "pendingAdmin_",
                        "nodeType": "VariableDeclaration",
                        "scope": 29621,
                        "src": "404:21:117",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29612,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "404:7:117",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "403:23:117"
                  },
                  "returnParameters": {
                    "id": 29615,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "434:0:117"
                  },
                  "scope": 29632,
                  "src": "372:98:117",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29630,
                    "nodeType": "Block",
                    "src": "521:22:117",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 29626,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17270,
                            "src": "525:5:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 29627,
                            "name": "admin_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29623,
                            "src": "533:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "525:14:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 29629,
                        "nodeType": "ExpressionStatement",
                        "src": "525:14:117"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29631,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "harnessSetAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29624,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29623,
                        "name": "admin_",
                        "nodeType": "VariableDeclaration",
                        "scope": 29631,
                        "src": "498:14:117",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29622,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "498:7:117",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "497:16:117"
                  },
                  "returnParameters": {
                    "id": 29625,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "521:0:117"
                  },
                  "scope": 29632,
                  "src": "473:70:117",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 29680,
              "src": "145:400:117"
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 29633,
                    "name": "Timelock",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17726,
                    "src": "572:8:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Timelock_$17726",
                      "typeString": "contract Timelock"
                    }
                  },
                  "id": 29634,
                  "nodeType": "InheritanceSpecifier",
                  "src": "572:8:117"
                }
              ],
              "contractDependencies": [
                10802,
                17252,
                17726
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 29679,
              "linearizedBaseContracts": [
                29679,
                17726,
                17252,
                10802
              ],
              "name": "TimelockTest",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 29649,
                    "nodeType": "Block",
                    "src": "660:22:117",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 29645,
                            "name": "delay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17274,
                            "src": "664:5:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 29646,
                            "name": "delay_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29638,
                            "src": "672:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "664:14:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 29648,
                        "nodeType": "ExpressionStatement",
                        "src": "664:14:117"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29650,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 29641,
                          "name": "admin_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 29636,
                          "src": "644:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 29642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "652:6:117",
                          "subdenomination": "days",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_172800_by_1",
                            "typeString": "int_const 172800"
                          },
                          "value": "2"
                        }
                      ],
                      "id": 29643,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 29640,
                        "name": "Timelock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17726,
                        "src": "635:8:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Timelock_$17726_$",
                          "typeString": "type(contract Timelock)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "635:24:117"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29636,
                        "name": "admin_",
                        "nodeType": "VariableDeclaration",
                        "scope": 29650,
                        "src": "596:14:117",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29635,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "596:7:117",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29638,
                        "name": "delay_",
                        "nodeType": "VariableDeclaration",
                        "scope": 29650,
                        "src": "612:14:117",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29637,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "612:7:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "595:32:117"
                  },
                  "returnParameters": {
                    "id": 29644,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "660:0:117"
                  },
                  "scope": 29679,
                  "src": "584:98:117",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29666,
                    "nodeType": "Block",
                    "src": "733:54:117",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 29659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29656,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "745:3:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 29657,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "745:10:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 29658,
                                "name": "admin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17270,
                                "src": "759:5:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "745:19:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 29655,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44997,
                            "src": "737:7:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 29660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "737:28:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29661,
                        "nodeType": "ExpressionStatement",
                        "src": "737:28:117"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 29662,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17270,
                            "src": "769:5:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 29663,
                            "name": "admin_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29652,
                            "src": "777:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "769:14:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 29665,
                        "nodeType": "ExpressionStatement",
                        "src": "769:14:117"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29667,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "harnessSetAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29653,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29652,
                        "name": "admin_",
                        "nodeType": "VariableDeclaration",
                        "scope": 29667,
                        "src": "710:14:117",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29651,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "710:7:117",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "709:16:117"
                  },
                  "returnParameters": {
                    "id": 29654,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "733:0:117"
                  },
                  "scope": 29679,
                  "src": "685:102:117",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29677,
                    "nodeType": "Block",
                    "src": "852:35:117",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 29672,
                              "name": "administered",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29669,
                              "src": "856:12:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Administered_$29583",
                                "typeString": "contract Administered"
                              }
                            },
                            "id": 29674,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_acceptAdmin",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 29582,
                            "src": "856:25:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$",
                              "typeString": "function () external returns (uint256)"
                            }
                          },
                          "id": 29675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "856:27:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 29676,
                        "nodeType": "ExpressionStatement",
                        "src": "856:27:117"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29678,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "harnessAcceptAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29670,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29669,
                        "name": "administered",
                        "nodeType": "VariableDeclaration",
                        "scope": 29678,
                        "src": "818:25:117",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Administered_$29583",
                          "typeString": "contract Administered"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 29668,
                          "name": "Administered",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 29583,
                          "src": "818:12:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Administered_$29583",
                            "typeString": "contract Administered"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "817:27:117"
                  },
                  "returnParameters": {
                    "id": 29671,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "852:0:117"
                  },
                  "scope": 29679,
                  "src": "790:97:117",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 29680,
              "src": "547:342:117"
            }
          ],
          "src": "0:890:117"
        },
        "id": 117
      },
      "contracts/mockup/VestingLogicMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/VestingLogicMockup.sol",
          "exportedSymbols": {
            "VestingLogicMockup": [
              29731
            ]
          },
          "id": 29732,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 29681,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:118"
            },
            {
              "id": 29682,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:118"
            },
            {
              "absolutePath": "contracts/governance/Vesting/VestingLogic.sol",
              "file": "../governance/Vesting/VestingLogic.sol",
              "id": 29683,
              "nodeType": "ImportDirective",
              "scope": 29732,
              "sourceUnit": 21208,
              "src": "60:48:118",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 29684,
                    "name": "VestingLogic",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21207,
                    "src": "141:12:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VestingLogic_$21207",
                      "typeString": "contract VestingLogic"
                    }
                  },
                  "id": 29685,
                  "nodeType": "InheritanceSpecifier",
                  "src": "141:12:118"
                }
              ],
              "contractDependencies": [
                10703,
                10802,
                18597,
                21207,
                24570,
                41125,
                41798,
                44823
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 29731,
              "linearizedBaseContracts": [
                29731,
                21207,
                10703,
                44823,
                10802,
                24570,
                41798,
                41125,
                18597
              ],
              "name": "VestingLogicMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 29729,
                    "nodeType": "Block",
                    "src": "300:436:118",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 29697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 29693,
                                "name": "_delegatee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29687,
                                "src": "312:10:118",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 29695,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "334:1:118",
                                    "subdenomination": null,
                                    "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": 29694,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "326:7:118",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 29696,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "326:10:118",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "312:24:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "64656c656761746565206164647265737320696e76616c6964",
                              "id": 29698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "338:27:118",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_959e9f42f17d371f19cdfcc3925b02d292bcd39fc031c4188710a26d852302f2",
                                "typeString": "literal_string \"delegatee address invalid\""
                              },
                              "value": "delegatee address invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_959e9f42f17d371f19cdfcc3925b02d292bcd39fc031c4188710a26d852302f2",
                                "typeString": "literal_string \"delegatee address invalid\""
                              }
                            ],
                            "id": 29692,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "304:7:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 29699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "304:62:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29700,
                        "nodeType": "ExpressionStatement",
                        "src": "304:62:118"
                      },
                      {
                        "body": {
                          "id": 29721,
                          "nodeType": "Block",
                          "src": "645:41:118",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 29717,
                                    "name": "_delegatee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 29687,
                                    "src": "667:10:118",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 29718,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 29702,
                                    "src": "679:1:118",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 29714,
                                    "name": "staking",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24554,
                                    "src": "650:7:118",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Staking_$15557",
                                      "typeString": "contract Staking"
                                    }
                                  },
                                  "id": 29716,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "delegate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14970,
                                  "src": "650:16:118",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 29719,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "650:31:118",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 29720,
                              "nodeType": "ExpressionStatement",
                              "src": "650:31:118"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 29709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 29707,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29702,
                            "src": "615:1:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 29708,
                            "name": "endDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24566,
                            "src": "619:7:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "615:11:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 29722,
                        "initializationExpression": {
                          "assignments": [
                            29702
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 29702,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 29722,
                              "src": "584:9:118",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 29701,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "584:7:118",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 29706,
                          "initialValue": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 29705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 29703,
                              "name": "startDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24564,
                              "src": "596:9:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 29704,
                              "name": "cliff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24560,
                              "src": "608:5:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "596:17:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "584:29:118"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 29712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 29710,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29702,
                              "src": "628:1:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 29711,
                              "name": "FOUR_WEEKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24569,
                              "src": "633:10:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "628:15:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 29713,
                          "nodeType": "ExpressionStatement",
                          "src": "628:15:118"
                        },
                        "nodeType": "ForStatement",
                        "src": "579:107:118"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 29724,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "709:3:118",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 29725,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "709:10:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29726,
                              "name": "_delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29687,
                              "src": "721:10:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29723,
                            "name": "VotesDelegated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20777,
                            "src": "694:14:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 29727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "694:38:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29728,
                        "nodeType": "EmitStatement",
                        "src": "689:43:118"
                      }
                    ]
                  },
                  "documentation": "@dev we had a bug in a loop: \"i < endDate\" instead of \"i <= endDate\"",
                  "id": 29730,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 29690,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 29689,
                        "name": "onlyTokenOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20826,
                        "src": "285:14:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "285:14:118"
                    }
                  ],
                  "name": "delegate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29688,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29687,
                        "name": "_delegatee",
                        "nodeType": "VariableDeclaration",
                        "scope": 29730,
                        "src": "258:18:118",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29686,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "258:7:118",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "257:20:118"
                  },
                  "returnParameters": {
                    "id": 29691,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "300:0:118"
                  },
                  "scope": 29731,
                  "src": "240:496:118",
                  "stateMutability": "nonpayable",
                  "superFunction": 20971,
                  "visibility": "public"
                }
              ],
              "scope": 29732,
              "src": "110:628:118"
            }
          ],
          "src": "0:739:118"
        },
        "id": 118
      },
      "contracts/mockup/VestingRegistryLogicMockUp.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/VestingRegistryLogicMockUp.sol",
          "exportedSymbols": {
            "VestingRegistryLogicMockup": [
              29748
            ]
          },
          "id": 29749,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 29733,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:119"
            },
            {
              "id": 29734,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:119"
            },
            {
              "absolutePath": "contracts/governance/Vesting/VestingRegistryLogic.sol",
              "file": "../governance/Vesting/VestingRegistryLogic.sol",
              "id": 29735,
              "nodeType": "ImportDirective",
              "scope": 29749,
              "sourceUnit": 24483,
              "src": "59:56:119",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 29736,
                    "name": "VestingRegistryLogic",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24482,
                    "src": "156:20:119",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VestingRegistryLogic_$24482",
                      "typeString": "contract VestingRegistryLogic"
                    }
                  },
                  "id": 29737,
                  "nodeType": "InheritanceSpecifier",
                  "src": "156:20:119"
                }
              ],
              "contractDependencies": [
                24482,
                24542,
                41125,
                41699,
                41798,
                44979
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 29748,
              "linearizedBaseContracts": [
                29748,
                24482,
                24542,
                44979,
                41798,
                41125,
                41699
              ],
              "name": "VestingRegistryLogicMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 29746,
                    "nodeType": "Block",
                    "src": "273:19:119",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 29744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "284:4:119",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 29743,
                        "id": 29745,
                        "nodeType": "Return",
                        "src": "277:11:119"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29747,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isVestingAdress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29739,
                        "name": "_vestingAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 29747,
                        "src": "205:23:119",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29738,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "205:7:119",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "204:25:119"
                  },
                  "returnParameters": {
                    "id": 29743,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29742,
                        "name": "isVestingAddr",
                        "nodeType": "VariableDeclaration",
                        "scope": 29747,
                        "src": "253:18:119",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29741,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "253:4:119",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "252:20:119"
                  },
                  "scope": 29748,
                  "src": "180:112:119",
                  "stateMutability": "view",
                  "superFunction": 24481,
                  "visibility": "external"
                }
              ],
              "scope": 29749,
              "src": "117:177:119"
            }
          ],
          "src": "0:295:119"
        },
        "id": 119
      },
      "contracts/mockup/lockedSOVFailedMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/lockedSOVFailedMockup.sol",
          "exportedSymbols": {
            "LockedSOVFailedMockup": [
              29951
            ]
          },
          "id": 29952,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 29750,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:120"
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../openzeppelin/SafeMath.sol",
              "id": 29751,
              "nodeType": "ImportDirective",
              "scope": 29952,
              "sourceUnit": 42310,
              "src": "26:38:120",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 29752,
              "nodeType": "ImportDirective",
              "scope": 29952,
              "sourceUnit": 24700,
              "src": "65:34:120",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": " @title An interface for the Locked SOV Contract.\n @author Franklin Richards - powerhousefrank@protonmail.com\n @dev This is not a complete interface of the Locked SOV Contract.",
              "fullyImplemented": true,
              "id": 29951,
              "linearizedBaseContracts": [
                29951
              ],
              "name": "LockedSOVFailedMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 29755,
                  "libraryName": {
                    "contractScope": null,
                    "id": 29753,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "335:8:120",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "329:27:120",
                  "typeName": {
                    "id": 29754,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "348:7:120",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 29757,
                  "name": "SOV",
                  "nodeType": "VariableDeclaration",
                  "scope": 29951,
                  "src": "412:17:120",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$24699",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 29756,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "412:6:120",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 29761,
                  "name": "lockedBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 29951,
                  "src": "465:42:120",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 29760,
                    "keyType": {
                      "id": 29758,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "473:7:120",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "465:27:120",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 29759,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "484:7:120",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 29765,
                  "name": "isAdmin",
                  "nodeType": "VariableDeclaration",
                  "scope": 29951,
                  "src": "542:32:120",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 29764,
                    "keyType": {
                      "id": 29762,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "550:7:120",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "542:24:120",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 29763,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "561:4:120",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when a new Admin is added to the admin list.\n @param _initiator The address which initiated this event to be emitted.\n @param _newAdmin The address of the new admin.",
                  "id": 29771,
                  "name": "AdminAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 29770,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29767,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 29771,
                        "src": "805:26:120",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29766,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "805:7:120",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29769,
                        "indexed": true,
                        "name": "_newAdmin",
                        "nodeType": "VariableDeclaration",
                        "scope": 29771,
                        "src": "833:25:120",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29768,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "833:7:120",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "804:55:120"
                  },
                  "src": "788:72:120"
                },
                {
                  "anonymous": false,
                  "documentation": "@notice Emitted when an admin is removed from the admin list.\n @param _initiator The address which initiated this event to be emitted.\n @param _removedAdmin The address of the removed admin.",
                  "id": 29777,
                  "name": "AdminRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 29776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29773,
                        "indexed": true,
                        "name": "_initiator",
                        "nodeType": "VariableDeclaration",
                        "scope": 29777,
                        "src": "1086:26:120",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29772,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1086:7:120",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29775,
                        "indexed": true,
                        "name": "_removedAdmin",
                        "nodeType": "VariableDeclaration",
                        "scope": 29777,
                        "src": "1114:29:120",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29774,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1114:7:120",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1085:59:120"
                  },
                  "src": "1067:78:120"
                },
                {
                  "body": {
                    "id": 29788,
                    "nodeType": "Block",
                    "src": "1185:70:120",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 29780,
                                "name": "isAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29765,
                                "src": "1197:7:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 29783,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 29781,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "1205:3:120",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 29782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1205:10:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1197:19:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f6e6c792061646d696e2063616e2063616c6c20746869732e",
                              "id": 29784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1218:27:120",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5c96ba9b76705bf631b579597e9a8d1313e924fd9f4ddd61afbcf4517ef36c81",
                                "typeString": "literal_string \"Only admin can call this.\""
                              },
                              "value": "Only admin can call this."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5c96ba9b76705bf631b579597e9a8d1313e924fd9f4ddd61afbcf4517ef36c81",
                                "typeString": "literal_string \"Only admin can call this.\""
                              }
                            ],
                            "id": 29779,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1189:7:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 29785,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1189:57:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29786,
                        "nodeType": "ExpressionStatement",
                        "src": "1189:57:120"
                      },
                      {
                        "id": 29787,
                        "nodeType": "PlaceholderStatement",
                        "src": "1250:1:120"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29789,
                  "name": "onlyAdmin",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 29778,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1185:0:120"
                  },
                  "src": "1166:89:120",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29833,
                    "nodeType": "Block",
                    "src": "1478:181:120",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 29802,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 29798,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29791,
                                "src": "1490:4:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 29800,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1506:1:120",
                                    "subdenomination": null,
                                    "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": 29799,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1498:7:120",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 29801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1498:10:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1490:18:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c696420534f5620416464726573732e",
                              "id": 29803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1510:22:120",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f5840b4863e6ab75c00993b856f6487e94b357014931d34497992ecc40c5bcf3",
                                "typeString": "literal_string \"Invalid SOV Address.\""
                              },
                              "value": "Invalid SOV Address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f5840b4863e6ab75c00993b856f6487e94b357014931d34497992ecc40c5bcf3",
                                "typeString": "literal_string \"Invalid SOV Address.\""
                              }
                            ],
                            "id": 29797,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1482:7:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 29804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1482:51:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29805,
                        "nodeType": "ExpressionStatement",
                        "src": "1482:51:120"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 29806,
                            "name": "SOV",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29757,
                            "src": "1537:3:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 29808,
                                "name": "_SOV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29791,
                                "src": "1550:4:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 29807,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24699,
                              "src": "1543:6:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 29809,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1543:12:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "1537:18:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 29811,
                        "nodeType": "ExpressionStatement",
                        "src": "1537:18:120"
                      },
                      {
                        "body": {
                          "id": 29831,
                          "nodeType": "Block",
                          "src": "1616:40:120",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 29829,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 29823,
                                    "name": "isAdmin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 29765,
                                    "src": "1621:7:120",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 29827,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 29824,
                                      "name": "_admins",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 29794,
                                      "src": "1629:7:120",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 29826,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 29825,
                                      "name": "index",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 29813,
                                      "src": "1637:5:120",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1629:14:120",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1621:23:120",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 29828,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1647:4:120",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "1621:30:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 29830,
                              "nodeType": "ExpressionStatement",
                              "src": "1621:30:120"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 29819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 29816,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29813,
                            "src": "1583:5:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 29817,
                              "name": "_admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29794,
                              "src": "1591:7:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 29818,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1591:14:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1583:22:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 29832,
                        "initializationExpression": {
                          "assignments": [
                            29813
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 29813,
                              "name": "index",
                              "nodeType": "VariableDeclaration",
                              "scope": 29832,
                              "src": "1564:13:120",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 29812,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1564:7:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 29815,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 29814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1580:1:120",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1564:17:120"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 29821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1607:7:120",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 29820,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29813,
                              "src": "1607:5:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 29822,
                          "nodeType": "ExpressionStatement",
                          "src": "1607:7:120"
                        },
                        "nodeType": "ForStatement",
                        "src": "1559:97:120"
                      }
                    ]
                  },
                  "documentation": "@notice Setup the required parameters.\n@param _SOV The SOV token address.\n@param _admins The list of admins to be added.",
                  "id": 29834,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29795,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29791,
                        "name": "_SOV",
                        "nodeType": "VariableDeclaration",
                        "scope": 29834,
                        "src": "1431:12:120",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29790,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1431:7:120",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29794,
                        "name": "_admins",
                        "nodeType": "VariableDeclaration",
                        "scope": 29834,
                        "src": "1445:24:120",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 29792,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1445:7:120",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 29793,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1445:9:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1430:40:120"
                  },
                  "returnParameters": {
                    "id": 29796,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1478:0:120"
                  },
                  "scope": 29951,
                  "src": "1419:240:120",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29870,
                    "nodeType": "Block",
                    "src": "1822:191:120",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 29846,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 29842,
                                "name": "_newAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29836,
                                "src": "1834:9:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 29844,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1855:1:120",
                                    "subdenomination": null,
                                    "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": 29843,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1847:7:120",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 29845,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1847:10:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1834:23:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e76616c69642041646472657373",
                              "id": 29847,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1859:17:120",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bf1d1ce89873b65be77a5b8cf3294e4a6e07f1b811e1034d1cd601ee4593d845",
                                "typeString": "literal_string \"Invalid Address\""
                              },
                              "value": "Invalid Address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_bf1d1ce89873b65be77a5b8cf3294e4a6e07f1b811e1034d1cd601ee4593d845",
                                "typeString": "literal_string \"Invalid Address\""
                              }
                            ],
                            "id": 29841,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1826:7:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 29848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1826:51:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29849,
                        "nodeType": "ExpressionStatement",
                        "src": "1826:51:120"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 29854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "1889:19:120",
                              "subExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 29851,
                                  "name": "isAdmin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29765,
                                  "src": "1890:7:120",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 29853,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 29852,
                                  "name": "_newAdmin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29836,
                                  "src": "1898:9:120",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1890:18:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4164647265737320697320616c72656164792061646d696e",
                              "id": 29855,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1910:26:120",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1276ea6178e6fbf95eaea6a9aa6c352d864134c1456c96eff68c9a53c76c03b8",
                                "typeString": "literal_string \"Address is already admin\""
                              },
                              "value": "Address is already admin"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1276ea6178e6fbf95eaea6a9aa6c352d864134c1456c96eff68c9a53c76c03b8",
                                "typeString": "literal_string \"Address is already admin\""
                              }
                            ],
                            "id": 29850,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1881:7:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 29856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1881:56:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29857,
                        "nodeType": "ExpressionStatement",
                        "src": "1881:56:120"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 29858,
                              "name": "isAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29765,
                              "src": "1941:7:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 29860,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 29859,
                              "name": "_newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29836,
                              "src": "1949:9:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1941:18:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 29861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1962:4:120",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1941:25:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 29863,
                        "nodeType": "ExpressionStatement",
                        "src": "1941:25:120"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 29865,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "1987:3:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 29866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1987:10:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29867,
                              "name": "_newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29836,
                              "src": "1999:9:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29864,
                            "name": "AdminAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29771,
                            "src": "1976:10:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 29868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1976:33:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29869,
                        "nodeType": "EmitStatement",
                        "src": "1971:38:120"
                      }
                    ]
                  },
                  "documentation": "@notice The function to add a new admin.\n@param _newAdmin The address of the new admin.",
                  "id": 29871,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 29839,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 29838,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29789,
                        "src": "1812:9:120",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1812:9:120"
                    }
                  ],
                  "name": "addAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29837,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29836,
                        "name": "_newAdmin",
                        "nodeType": "VariableDeclaration",
                        "scope": 29871,
                        "src": "1786:17:120",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29835,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1786:7:120",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1785:19:120"
                  },
                  "returnParameters": {
                    "id": 29840,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1822:0:120"
                  },
                  "scope": 29951,
                  "src": "1768:245:120",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29897,
                    "nodeType": "Block",
                    "src": "2209:152:120",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 29879,
                                "name": "isAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29765,
                                "src": "2221:7:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 29881,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 29880,
                                "name": "_adminToRemove",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29873,
                                "src": "2229:14:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2221:23:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "41646472657373206973206e6f7420616e2061646d696e",
                              "id": 29882,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2246:25:120",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_902ee68b4ea028082ec24b020e4b1542ac6ca91a20f34ed5a4db120e7bea7004",
                                "typeString": "literal_string \"Address is not an admin\""
                              },
                              "value": "Address is not an admin"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_902ee68b4ea028082ec24b020e4b1542ac6ca91a20f34ed5a4db120e7bea7004",
                                "typeString": "literal_string \"Address is not an admin\""
                              }
                            ],
                            "id": 29878,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2213:7:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 29883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2213:59:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29884,
                        "nodeType": "ExpressionStatement",
                        "src": "2213:59:120"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 29885,
                              "name": "isAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29765,
                              "src": "2276:7:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 29887,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 29886,
                              "name": "_adminToRemove",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29873,
                              "src": "2284:14:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2276:23:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 29888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2302:5:120",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "2276:31:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 29890,
                        "nodeType": "ExpressionStatement",
                        "src": "2276:31:120"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 29892,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "2330:3:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 29893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2330:10:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29894,
                              "name": "_adminToRemove",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29873,
                              "src": "2342:14:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29891,
                            "name": "AdminRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29777,
                            "src": "2317:12:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 29895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2317:40:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29896,
                        "nodeType": "EmitStatement",
                        "src": "2312:45:120"
                      }
                    ]
                  },
                  "documentation": "@notice The function to remove an admin.\n@param _adminToRemove The address of the admin which should be removed.",
                  "id": 29898,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 29876,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 29875,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29789,
                        "src": "2199:9:120",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2199:9:120"
                    }
                  ],
                  "name": "removeAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29874,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29873,
                        "name": "_adminToRemove",
                        "nodeType": "VariableDeclaration",
                        "scope": 29898,
                        "src": "2168:22:120",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29872,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2168:7:120",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2167:24:120"
                  },
                  "returnParameters": {
                    "id": 29877,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2209:0:120"
                  },
                  "scope": 29951,
                  "src": "2147:214:120",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 29937,
                    "nodeType": "Block",
                    "src": "2663:276:120",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "466f722074657374696e6720707572706f736573",
                              "id": 29906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2674:22:120",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a5ae72fa709d173cfcaab87ac477656c1c3af86986e5bd0143ab45fd81b9f41a",
                                "typeString": "literal_string \"For testing purposes\""
                              },
                              "value": "For testing purposes"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_a5ae72fa709d173cfcaab87ac477656c1c3af86986e5bd0143ab45fd81b9f41a",
                                "typeString": "literal_string \"For testing purposes\""
                              }
                            ],
                            "id": 29905,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44999,
                              45000
                            ],
                            "referencedDeclaration": 45000,
                            "src": "2667:6:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 29907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2667:30:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29908,
                        "nodeType": "ExpressionStatement",
                        "src": "2667:30:120"
                      },
                      {
                        "assignments": [
                          29910
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 29910,
                            "name": "txStatus",
                            "nodeType": "VariableDeclaration",
                            "scope": 29937,
                            "src": "2701:13:120",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 29909,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2701:4:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 29920,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 29913,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "2734:3:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 29914,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2734:10:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 29916,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45308,
                                  "src": "2754:4:120",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LockedSOVFailedMockup_$29951",
                                    "typeString": "contract LockedSOVFailedMockup"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LockedSOVFailedMockup_$29951",
                                    "typeString": "contract LockedSOVFailedMockup"
                                  }
                                ],
                                "id": 29915,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2746:7:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 29917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2746:13:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 29918,
                              "name": "_sovAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29902,
                              "src": "2761:10:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 29911,
                              "name": "SOV",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29757,
                              "src": "2717:3:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 29912,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24682,
                            "src": "2717:16:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 29919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2717:55:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2701:71:120"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 29922,
                              "name": "txStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29910,
                              "src": "2784:8:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e207472616e7366657220776173206e6f74207375636365737366756c2e20436865636b20726563656976657220616464726573732e",
                              "id": 29923,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2794:60:120",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              },
                              "value": "Token transfer was not successful. Check receiver address."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a53bfaa4e6b69ee7bbbc6ef12521eb4cd401bc4e30bd83e66c2ba4b9270fb204",
                                "typeString": "literal_string \"Token transfer was not successful. Check receiver address.\""
                              }
                            ],
                            "id": 29921,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2776:7:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 29924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2776:79:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29925,
                        "nodeType": "ExpressionStatement",
                        "src": "2776:79:120"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 29926,
                              "name": "lockedBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29761,
                              "src": "2860:14:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 29928,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 29927,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29900,
                              "src": "2875:12:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2860:28:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 29933,
                                "name": "_sovAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 29902,
                                "src": "2924:10:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 29929,
                                  "name": "lockedBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29761,
                                  "src": "2891:14:120",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 29931,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 29930,
                                  "name": "_userAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29900,
                                  "src": "2906:12:120",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2891:28:120",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 29932,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "2891:32:120",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 29934,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2891:44:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2860:75:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 29936,
                        "nodeType": "ExpressionStatement",
                        "src": "2860:75:120"
                      }
                    ]
                  },
                  "documentation": "@notice Adds SOV to the locked balance of a user.\n@param _userAddress The user whose locked balance has to be updated with _sovAmount.\n@param _sovAmount The amount of SOV to be added to the locked balance.",
                  "id": 29938,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "depositSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29900,
                        "name": "_userAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 29938,
                        "src": "2612:20:120",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29899,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2612:7:120",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29902,
                        "name": "_sovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 29938,
                        "src": "2634:18:120",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29901,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2634:7:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2611:42:120"
                  },
                  "returnParameters": {
                    "id": 29904,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2663:0:120"
                  },
                  "scope": 29951,
                  "src": "2592:347:120",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 29949,
                    "nodeType": "Block",
                    "src": "3228:36:120",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 29945,
                            "name": "lockedBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29761,
                            "src": "3239:14:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 29947,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 29946,
                            "name": "_addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29940,
                            "src": "3254:5:120",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3239:21:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 29944,
                        "id": 29948,
                        "nodeType": "Return",
                        "src": "3232:28:120"
                      }
                    ]
                  },
                  "documentation": "@notice The function to get the locked balance of a user.\n@param _addr The address of the user to check the locked balance.\n@return _balance The locked balance of the address `_addr`.",
                  "id": 29950,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLockedBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29941,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29940,
                        "name": "_addr",
                        "nodeType": "VariableDeclaration",
                        "scope": 29950,
                        "src": "3174:13:120",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29939,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3174:7:120",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3173:15:120"
                  },
                  "returnParameters": {
                    "id": 29944,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29943,
                        "name": "_balance",
                        "nodeType": "VariableDeclaration",
                        "scope": 29950,
                        "src": "3210:16:120",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29942,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3210:7:120",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3209:18:120"
                  },
                  "scope": 29951,
                  "src": "3148:116:120",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 29952,
              "src": "295:2971:120"
            }
          ],
          "src": "0:3267:120"
        },
        "id": 120
      },
      "contracts/mockup/previousLoanToken/PreviousLoanToken.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/previousLoanToken/PreviousLoanToken.sol",
          "exportedSymbols": {
            "PreviousLoanToken": [
              30116
            ]
          },
          "id": 30117,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 29953,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:121"
            },
            {
              "absolutePath": "contracts/connectors/loantoken/AdvancedTokenStorage.sol",
              "file": "../../connectors/loantoken/AdvancedTokenStorage.sol",
              "id": 29954,
              "nodeType": "ImportDirective",
              "scope": 30117,
              "sourceUnit": 272,
              "src": "143:61:121",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 29955,
                    "name": "AdvancedTokenStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 271,
                    "src": "381:20:121",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AdvancedTokenStorage_$271",
                      "typeString": "contract AdvancedTokenStorage"
                    }
                  },
                  "id": 29956,
                  "nodeType": "InheritanceSpecifier",
                  "src": "381:20:121"
                }
              ],
              "contractDependencies": [
                271,
                511,
                4221,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 30116,
              "linearizedBaseContracts": [
                30116,
                271,
                511,
                4221,
                41798,
                41125,
                41829
              ],
              "name": "PreviousLoanToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 29958,
                  "name": "sovrynContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 30116,
                  "src": "534:36:121",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 29957,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "534:7:121",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 29960,
                  "name": "wrbtcTokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 30116,
                  "src": "573:32:121",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 29959,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "573:7:121",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 29962,
                  "name": "target_",
                  "nodeType": "VariableDeclaration",
                  "scope": 30116,
                  "src": "608:24:121",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 29961,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "608:7:121",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29989,
                    "nodeType": "Block",
                    "src": "765:160:121",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 29974,
                              "name": "_newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29964,
                              "src": "787:9:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29973,
                            "name": "transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41773,
                            "src": "769:17:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 29975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "769:28:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29976,
                        "nodeType": "ExpressionStatement",
                        "src": "769:28:121"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 29978,
                              "name": "_newTarget",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29966,
                              "src": "812:10:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29977,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30041,
                            "src": "801:10:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 29979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "801:22:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29980,
                        "nodeType": "ExpressionStatement",
                        "src": "801:22:121"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 29982,
                              "name": "_sovrynContractAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29968,
                              "src": "853:22:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29981,
                            "name": "_setSovrynContractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30059,
                            "src": "827:25:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 29983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "827:49:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29984,
                        "nodeType": "ExpressionStatement",
                        "src": "827:49:121"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 29986,
                              "name": "_wrbtcTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29970,
                              "src": "902:18:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 29985,
                            "name": "_setWrbtcTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30077,
                            "src": "880:21:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 29987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "880:41:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29988,
                        "nodeType": "ExpressionStatement",
                        "src": "880:41:121"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 29990,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29971,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29964,
                        "name": "_newOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 29990,
                        "src": "651:17:121",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29963,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "651:7:121",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29966,
                        "name": "_newTarget",
                        "nodeType": "VariableDeclaration",
                        "scope": 29990,
                        "src": "672:18:121",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29965,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "672:7:121",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29968,
                        "name": "_sovrynContractAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 29990,
                        "src": "694:30:121",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29967,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "694:7:121",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29970,
                        "name": "_wrbtcTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 29990,
                        "src": "728:26:121",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29969,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "728:7:121",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "647:110:121"
                  },
                  "returnParameters": {
                    "id": 29972,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "765:0:121"
                  },
                  "scope": 30116,
                  "src": "636:289:121",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 30010,
                    "nodeType": "Block",
                    "src": "956:393:121",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 29996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 29993,
                              "name": "gasleft",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44987,
                              "src": "964:7:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 29994,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "964:9:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32333030",
                            "id": 29995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "977:4:121",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2300_by_1",
                              "typeString": "int_const 2300"
                            },
                            "value": "2300"
                          },
                          "src": "964:17:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 29999,
                        "nodeType": "IfStatement",
                        "src": "960:39:121",
                        "trueBody": {
                          "id": 29998,
                          "nodeType": "Block",
                          "src": "983:16:121",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 29992,
                              "id": 29997,
                              "nodeType": "Return",
                              "src": "988:7:121"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          30001
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30001,
                            "name": "target",
                            "nodeType": "VariableDeclaration",
                            "scope": 30010,
                            "src": "1003:14:121",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 30000,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1003:7:121",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 30003,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 30002,
                          "name": "target_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 29962,
                          "src": "1020:7:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1003:24:121"
                      },
                      {
                        "assignments": [
                          30005
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30005,
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "scope": 30010,
                            "src": "1031:17:121",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 30004,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1031:5:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 30008,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 30006,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44994,
                            "src": "1051:3:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 30007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1051:8:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1031:28:121"
                      },
                      {
                        "externalReferences": [
                          {
                            "data": {
                              "declaration": 30005,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1140:4:121",
                              "valueSize": 1
                            }
                          },
                          {
                            "data": {
                              "declaration": 30005,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1121:4:121",
                              "valueSize": 1
                            }
                          },
                          {
                            "target": {
                              "declaration": 30001,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1109:6:121",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 30009,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    let result := delegatecall(gas(), target, add(data, 0x20), mload(data), 0, 0)\n    let size := returndatasize()\n    let ptr := mload(0x40)\n    returndatacopy(ptr, 0, size)\n    switch result\n    case 0 { revert(ptr, size) }\n    default { return(ptr, size) }\n}",
                        "src": "1063:283:121"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30011,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29991,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "936:2:121"
                  },
                  "returnParameters": {
                    "id": 29992,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "956:0:121"
                  },
                  "scope": 30116,
                  "src": "928:421:121",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 30022,
                    "nodeType": "Block",
                    "src": "1408:30:121",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 30019,
                              "name": "_newTarget",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30013,
                              "src": "1423:10:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30018,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30041,
                            "src": "1412:10:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 30020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1412:22:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30021,
                        "nodeType": "ExpressionStatement",
                        "src": "1412:22:121"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30023,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 30016,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 30015,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1398:9:121",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1398:9:121"
                    }
                  ],
                  "name": "setTarget",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30014,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30013,
                        "name": "_newTarget",
                        "nodeType": "VariableDeclaration",
                        "scope": 30023,
                        "src": "1371:18:121",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30012,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1371:7:121",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1370:20:121"
                  },
                  "returnParameters": {
                    "id": 30017,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1408:0:121"
                  },
                  "scope": 30116,
                  "src": "1352:86:121",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 30040,
                    "nodeType": "Block",
                    "src": "1490:96:121",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 30031,
                                  "name": "_newTarget",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30025,
                                  "src": "1521:10:121",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30029,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "1502:7:121",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 30030,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "1502:18:121",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 30032,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1502:30:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "746172676574206e6f74206120636f6e7472616374",
                              "id": 30033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1534:23:121",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b94b2fcf63f8ee774e5e1a3aefca04d13edd366e5a6d3be86dce42095fb7f8f6",
                                "typeString": "literal_string \"target not a contract\""
                              },
                              "value": "target not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b94b2fcf63f8ee774e5e1a3aefca04d13edd366e5a6d3be86dce42095fb7f8f6",
                                "typeString": "literal_string \"target not a contract\""
                              }
                            ],
                            "id": 30028,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1494:7:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 30034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1494:64:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30035,
                        "nodeType": "ExpressionStatement",
                        "src": "1494:64:121"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30036,
                            "name": "target_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29962,
                            "src": "1562:7:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30037,
                            "name": "_newTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30025,
                            "src": "1572:10:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1562:20:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 30039,
                        "nodeType": "ExpressionStatement",
                        "src": "1562:20:121"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30041,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setTarget",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30026,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30025,
                        "name": "_newTarget",
                        "nodeType": "VariableDeclaration",
                        "scope": 30041,
                        "src": "1461:18:121",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30024,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1461:7:121",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1460:20:121"
                  },
                  "returnParameters": {
                    "id": 30027,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1490:0:121"
                  },
                  "scope": 30116,
                  "src": "1441:145:121",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30058,
                    "nodeType": "Block",
                    "src": "1665:134:121",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 30049,
                                  "name": "_sovrynContractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30043,
                                  "src": "1696:22:121",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30047,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "1677:7:121",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 30048,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "1677:18:121",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 30050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1677:42:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "736f7672796e206e6f74206120636f6e7472616374",
                              "id": 30051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1721:23:121",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9e01fd1e3b664da88d953a45fde8a9968cbd02820f582ee111d85e0dd2614761",
                                "typeString": "literal_string \"sovryn not a contract\""
                              },
                              "value": "sovryn not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9e01fd1e3b664da88d953a45fde8a9968cbd02820f582ee111d85e0dd2614761",
                                "typeString": "literal_string \"sovryn not a contract\""
                              }
                            ],
                            "id": 30046,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1669:7:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 30052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1669:76:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30053,
                        "nodeType": "ExpressionStatement",
                        "src": "1669:76:121"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30054,
                            "name": "sovrynContractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29958,
                            "src": "1749:21:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30055,
                            "name": "_sovrynContractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30043,
                            "src": "1773:22:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1749:46:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 30057,
                        "nodeType": "ExpressionStatement",
                        "src": "1749:46:121"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30059,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setSovrynContractAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30044,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30043,
                        "name": "_sovrynContractAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 30059,
                        "src": "1624:30:121",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30042,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1624:7:121",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1623:32:121"
                  },
                  "returnParameters": {
                    "id": 30045,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1665:0:121"
                  },
                  "scope": 30116,
                  "src": "1589:210:121",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30076,
                    "nodeType": "Block",
                    "src": "1870:121:121",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 30067,
                                  "name": "_wrbtcTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30061,
                                  "src": "1901:18:121",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30065,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "1882:7:121",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 30066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "1882:18:121",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 30068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1882:38:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7772627463206e6f74206120636f6e7472616374",
                              "id": 30069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1922:22:121",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6bee93cd8fbaf35d39792839d2db88e3b0d8e6a3a61fc21e9ac98351b6fd6095",
                                "typeString": "literal_string \"wrbtc not a contract\""
                              },
                              "value": "wrbtc not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6bee93cd8fbaf35d39792839d2db88e3b0d8e6a3a61fc21e9ac98351b6fd6095",
                                "typeString": "literal_string \"wrbtc not a contract\""
                              }
                            ],
                            "id": 30064,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1874:7:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 30070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1874:71:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30071,
                        "nodeType": "ExpressionStatement",
                        "src": "1874:71:121"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30072,
                            "name": "wrbtcTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 29960,
                            "src": "1949:17:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30073,
                            "name": "_wrbtcTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30061,
                            "src": "1969:18:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1949:38:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 30075,
                        "nodeType": "ExpressionStatement",
                        "src": "1949:38:121"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30077,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setWrbtcTokenAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30062,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30061,
                        "name": "_wrbtcTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 30077,
                        "src": "1833:26:121",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30060,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1833:7:121",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1832:28:121"
                  },
                  "returnParameters": {
                    "id": 30063,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1870:0:121"
                  },
                  "scope": 30116,
                  "src": "1802:189:121",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30114,
                    "nodeType": "Block",
                    "src": "2193:180:121",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30088,
                            "name": "loanTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 476,
                            "src": "2197:16:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30089,
                            "name": "_loanTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30079,
                            "src": "2216:17:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2197:36:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 30091,
                        "nodeType": "ExpressionStatement",
                        "src": "2197:36:121"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30092,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 470,
                            "src": "2238:4:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30093,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30081,
                            "src": "2245:5:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2238:12:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 30095,
                        "nodeType": "ExpressionStatement",
                        "src": "2238:12:121"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30096,
                            "name": "symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 472,
                            "src": "2254:6:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30097,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30083,
                            "src": "2263:7:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2254:16:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 30099,
                        "nodeType": "ExpressionStatement",
                        "src": "2254:16:121"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30100,
                            "name": "decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 474,
                            "src": "2274:8:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 30102,
                                    "name": "loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 476,
                                    "src": "2292:16:121",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 30101,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24699,
                                  "src": "2285:6:121",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 30103,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2285:24:121",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$24699",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 30104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "decimals",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24630,
                              "src": "2285:33:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                                "typeString": "function () view external returns (uint8)"
                              }
                            },
                            "id": 30105,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2285:35:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "2274:46:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 30107,
                        "nodeType": "ExpressionStatement",
                        "src": "2274:46:121"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30108,
                            "name": "initialPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 496,
                            "src": "2325:12:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 30111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 30109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2340:2:121",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 30110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2344:2:121",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "2340:6:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "src": "2325:21:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30113,
                        "nodeType": "ExpressionStatement",
                        "src": "2325:21:121"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30115,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 30086,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 30085,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2183:9:121",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2183:9:121"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30084,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30079,
                        "name": "_loanTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 30115,
                        "src": "2099:25:121",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30078,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2099:7:121",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30081,
                        "name": "_name",
                        "nodeType": "VariableDeclaration",
                        "scope": 30115,
                        "src": "2128:19:121",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30080,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2128:6:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30083,
                        "name": "_symbol",
                        "nodeType": "VariableDeclaration",
                        "scope": 30115,
                        "src": "2151:21:121",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30082,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2151:6:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2095:80:121"
                  },
                  "returnParameters": {
                    "id": 30087,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2193:0:121"
                  },
                  "scope": 30116,
                  "src": "2076:297:121",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 30117,
              "src": "351:2024:121"
            }
          ],
          "src": "118:2258:121"
        },
        "id": 121
      },
      "contracts/mockup/previousLoanToken/PreviousLoanTokenSettingsLowerAdmin.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/previousLoanToken/PreviousLoanTokenSettingsLowerAdmin.sol",
          "exportedSymbols": {
            "PreviousLoanTokenSettingsLowerAdmin": [
              30537
            ]
          },
          "id": 30538,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 30118,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:122"
            },
            {
              "id": 30119,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "142:33:122"
            },
            {
              "absolutePath": "contracts/connectors/loantoken/interfaces/ProtocolSettingsLike.sol",
              "file": "../../connectors/loantoken/interfaces/ProtocolSettingsLike.sol",
              "id": 30120,
              "nodeType": "ImportDirective",
              "scope": 30538,
              "sourceUnit": 4399,
              "src": "177:72:122",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/connectors/loantoken/AdvancedTokenStorage.sol",
              "file": "../../connectors/loantoken/AdvancedTokenStorage.sol",
              "id": 30121,
              "nodeType": "ImportDirective",
              "scope": 30538,
              "sourceUnit": 272,
              "src": "250:61:122",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 30122,
                    "name": "AdvancedTokenStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 271,
                    "src": "398:20:122",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AdvancedTokenStorage_$271",
                      "typeString": "contract AdvancedTokenStorage"
                    }
                  },
                  "id": 30123,
                  "nodeType": "InheritanceSpecifier",
                  "src": "398:20:122"
                }
              ],
              "contractDependencies": [
                271,
                511,
                4221,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 30537,
              "linearizedBaseContracts": [
                30537,
                271,
                511,
                4221,
                41798,
                41125,
                41829
              ],
              "name": "PreviousLoanTokenSettingsLowerAdmin",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 30126,
                  "libraryName": {
                    "contractScope": null,
                    "id": 30124,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "428:8:122",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "422:27:122",
                  "typeName": {
                    "id": 30125,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "441:7:122",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 30128,
                  "name": "sovrynContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 30537,
                  "src": "640:36:122",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 30127,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "640:7:122",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 30130,
                  "name": "wrbtcTokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 30537,
                  "src": "679:32:122",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 30129,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "679:7:122",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 30132,
                  "name": "target_",
                  "nodeType": "VariableDeclaration",
                  "scope": 30537,
                  "src": "714:24:122",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 30131,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "714:7:122",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 30140,
                  "name": "SetTransactionLimits",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 30139,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30135,
                        "indexed": false,
                        "name": "addresses",
                        "nodeType": "VariableDeclaration",
                        "scope": 30140,
                        "src": "853:19:122",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 30133,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "853:7:122",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 30134,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "853:9:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30138,
                        "indexed": false,
                        "name": "limits",
                        "nodeType": "VariableDeclaration",
                        "scope": 30140,
                        "src": "874:16:122",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 30136,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "874:7:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 30137,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "874:9:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "852:39:122"
                  },
                  "src": "826:66:122"
                },
                {
                  "body": {
                    "id": 30159,
                    "nodeType": "Block",
                    "src": "965:90:122",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 30154,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 30148,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 30143,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "977:3:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 30144,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "977:10:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 30146,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45312,
                                      "src": "999:4:122",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_PreviousLoanTokenSettingsLowerAdmin_$30537",
                                        "typeString": "contract PreviousLoanTokenSettingsLowerAdmin"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_PreviousLoanTokenSettingsLowerAdmin_$30537",
                                        "typeString": "contract PreviousLoanTokenSettingsLowerAdmin"
                                      }
                                    ],
                                    "id": 30145,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "991:7:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 30147,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "991:13:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "977:27:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 30153,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 30149,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "1008:3:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 30150,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1008:10:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 30151,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 41740,
                                    "src": "1022:5:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 30152,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1022:7:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1008:21:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "977:52:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 30155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1031:14:122",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 30142,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "969:7:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 30156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "969:77:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30157,
                        "nodeType": "ExpressionStatement",
                        "src": "969:77:122"
                      },
                      {
                        "id": 30158,
                        "nodeType": "PlaceholderStatement",
                        "src": "1050:1:122"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30160,
                  "name": "onlyAdmin",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 30141,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "962:2:122"
                  },
                  "src": "944:111:122",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30197,
                    "nodeType": "Block",
                    "src": "1251:180:122",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30171,
                            "name": "loanTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 476,
                            "src": "1255:16:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30172,
                            "name": "_loanTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30162,
                            "src": "1274:17:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1255:36:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 30174,
                        "nodeType": "ExpressionStatement",
                        "src": "1255:36:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30175,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 470,
                            "src": "1296:4:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30176,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30164,
                            "src": "1303:5:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1296:12:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 30178,
                        "nodeType": "ExpressionStatement",
                        "src": "1296:12:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30179,
                            "name": "symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 472,
                            "src": "1312:6:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30180,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30166,
                            "src": "1321:7:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1312:16:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 30182,
                        "nodeType": "ExpressionStatement",
                        "src": "1312:16:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30183,
                            "name": "decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 474,
                            "src": "1332:8:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 30185,
                                    "name": "loanTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 476,
                                    "src": "1350:16:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 30184,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24699,
                                  "src": "1343:6:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 30186,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1343:24:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$24699",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 30187,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "decimals",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24630,
                              "src": "1343:33:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                                "typeString": "function () view external returns (uint8)"
                              }
                            },
                            "id": 30188,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1343:35:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "1332:46:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 30190,
                        "nodeType": "ExpressionStatement",
                        "src": "1332:46:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30191,
                            "name": "initialPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 496,
                            "src": "1383:12:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 30194,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 30192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1398:2:122",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 30193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1402:2:122",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "1398:6:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "src": "1383:21:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30196,
                        "nodeType": "ExpressionStatement",
                        "src": "1383:21:122"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30198,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 30169,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 30168,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1241:9:122",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1241:9:122"
                    }
                  ],
                  "name": "init",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30167,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30162,
                        "name": "_loanTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 30198,
                        "src": "1157:25:122",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30161,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1157:7:122",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30164,
                        "name": "_name",
                        "nodeType": "VariableDeclaration",
                        "scope": 30198,
                        "src": "1186:19:122",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30163,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1186:6:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30166,
                        "name": "_symbol",
                        "nodeType": "VariableDeclaration",
                        "scope": 30198,
                        "src": "1209:21:122",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30165,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1209:6:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1153:80:122"
                  },
                  "returnParameters": {
                    "id": 30170,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1251:0:122"
                  },
                  "scope": 30537,
                  "src": "1140:291:122",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 30205,
                    "nodeType": "Block",
                    "src": "1454:68:122",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "4c6f616e546f6b656e53657474696e67734c6f77657241646d696e202d2066616c6c6261636b206e6f7420616c6c6f776564",
                              "id": 30202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1465:52:122",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_63fb694fc27c1a32346e6f96d29a53ad57919a298659c772f548eb68951002f9",
                                "typeString": "literal_string \"LoanTokenSettingsLowerAdmin - fallback not allowed\""
                              },
                              "value": "LoanTokenSettingsLowerAdmin - fallback not allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_63fb694fc27c1a32346e6f96d29a53ad57919a298659c772f548eb68951002f9",
                                "typeString": "literal_string \"LoanTokenSettingsLowerAdmin - fallback not allowed\""
                              }
                            ],
                            "id": 30201,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44999,
                              45000
                            ],
                            "referencedDeclaration": 45000,
                            "src": "1458:6:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 30203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1458:60:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30204,
                        "nodeType": "ExpressionStatement",
                        "src": "1458:60:122"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30206,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30199,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1442:2:122"
                  },
                  "returnParameters": {
                    "id": 30200,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1454:0:122"
                  },
                  "scope": 30537,
                  "src": "1434:88:122",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 30296,
                    "nodeType": "Block",
                    "src": "1641:628:122",
                    "statements": [
                      {
                        "assignments": [
                          30219
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30219,
                            "name": "loanParamsIdList",
                            "nodeType": "VariableDeclaration",
                            "scope": 30296,
                            "src": "1645:33:122",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 30217,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1645:7:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 30218,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1645:9:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 30220,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1645:33:122"
                      },
                      {
                        "assignments": [
                          30222
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30222,
                            "name": "_loanTokenAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 30296,
                            "src": "1682:25:122",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 30221,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1682:7:122",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 30224,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 30223,
                          "name": "loanTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 476,
                          "src": "1710:16:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1682:44:122"
                      },
                      {
                        "body": {
                          "id": 30253,
                          "nodeType": "Block",
                          "src": "1783:122:122",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30241,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 30236,
                                      "name": "loanParamsList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30209,
                                      "src": "1788:14:122",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                                      }
                                    },
                                    "id": 30238,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 30237,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30226,
                                      "src": "1803:1:122",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1788:17:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_memory",
                                      "typeString": "struct LoanParamsStruct.LoanParams memory"
                                    }
                                  },
                                  "id": 30239,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "loanToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4875,
                                  "src": "1788:27:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 30240,
                                  "name": "_loanTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30222,
                                  "src": "1818:17:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1788:47:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 30242,
                              "nodeType": "ExpressionStatement",
                              "src": "1788:47:122"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30251,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 30243,
                                      "name": "loanParamsList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30209,
                                      "src": "1840:14:122",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                                      }
                                    },
                                    "id": 30245,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 30244,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30226,
                                      "src": "1855:1:122",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1840:17:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_memory",
                                      "typeString": "struct LoanParamsStruct.LoanParams memory"
                                    }
                                  },
                                  "id": 30246,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "maxLoanTerm",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4883,
                                  "src": "1840:29:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "id": 30247,
                                    "name": "areTorqueLoans",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30211,
                                    "src": "1872:14:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3238",
                                    "id": 30249,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1893:7:122",
                                    "subdenomination": "days",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2419200_by_1",
                                      "typeString": "int_const 2419200"
                                    },
                                    "value": "28"
                                  },
                                  "id": 30250,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "1872:28:122",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 30248,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1889:1:122",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  }
                                },
                                "src": "1840:60:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 30252,
                              "nodeType": "ExpressionStatement",
                              "src": "1840:60:122"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 30229,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30226,
                            "src": "1751:1:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30230,
                              "name": "loanParamsList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30209,
                              "src": "1755:14:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                              }
                            },
                            "id": 30231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1755:21:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1751:25:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 30254,
                        "initializationExpression": {
                          "assignments": [
                            30226
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 30226,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 30254,
                              "src": "1736:9:122",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 30225,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1736:7:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 30228,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1748:1:122",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1736:13:122"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 30234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1778:3:122",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 30233,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30226,
                              "src": "1778:1:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 30235,
                          "nodeType": "ExpressionStatement",
                          "src": "1778:3:122"
                        },
                        "nodeType": "ForStatement",
                        "src": "1731:174:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30262,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30255,
                            "name": "loanParamsIdList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30219,
                            "src": "1909:16:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 30260,
                                "name": "loanParamsList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30209,
                                "src": "1988:14:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 30257,
                                    "name": "sovrynContractAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30128,
                                    "src": "1949:21:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 30256,
                                  "name": "ProtocolSettingsLike",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4398,
                                  "src": "1928:20:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ProtocolSettingsLike_$4398_$",
                                    "typeString": "type(contract ProtocolSettingsLike)"
                                  }
                                },
                                "id": 30258,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1928:43:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ProtocolSettingsLike_$4398",
                                  "typeString": "contract ProtocolSettingsLike"
                                }
                              },
                              "id": 30259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "setupLoanParams",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4384,
                              "src": "1928:59:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                                "typeString": "function (struct LoanParamsStruct.LoanParams memory[] memory) external returns (bytes32[] memory)"
                              }
                            },
                            "id": 30261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1928:75:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "src": "1909:94:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "id": 30263,
                        "nodeType": "ExpressionStatement",
                        "src": "1909:94:122"
                      },
                      {
                        "body": {
                          "id": 30294,
                          "nodeType": "Block",
                          "src": "2061:205:122",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30292,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30275,
                                    "name": "loanParamsIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 502,
                                    "src": "2066:13:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                                      "typeString": "mapping(uint256 => bytes32)"
                                    }
                                  },
                                  "id": 30288,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 30280,
                                                    "name": "loanParamsList",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 30209,
                                                    "src": "2141:14:122",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                                      "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                                                    }
                                                  },
                                                  "id": 30282,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "id": 30281,
                                                    "name": "i",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 30265,
                                                    "src": "2156:1:122",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "2141:17:122",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory",
                                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                                  }
                                                },
                                                "id": 30283,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "collateralToken",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4877,
                                                "src": "2141:33:122",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 30284,
                                                "name": "areTorqueLoans",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 30211,
                                                "src": "2183:14:122",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 30278,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 44981,
                                                "src": "2116:3:122",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_abi",
                                                  "typeString": "abi"
                                                }
                                              },
                                              "id": 30279,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "encodePacked",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "2116:16:122",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 30285,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2116:105:122",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 30277,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44988,
                                          "src": "2099:9:122",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 30286,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2099:129:122",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 30276,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2085:7:122",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint256"
                                    },
                                    "id": 30287,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2085:149:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2066:173:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30289,
                                    "name": "loanParamsIdList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30219,
                                    "src": "2242:16:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  "id": 30291,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 30290,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30265,
                                    "src": "2259:1:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2242:19:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "2066:195:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 30293,
                              "nodeType": "ExpressionStatement",
                              "src": "2066:195:122"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 30268,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30265,
                            "src": "2027:1:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30269,
                              "name": "loanParamsIdList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30219,
                              "src": "2031:16:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 30270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2031:23:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2027:27:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 30295,
                        "initializationExpression": {
                          "assignments": [
                            30265
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 30265,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 30295,
                              "src": "2012:9:122",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 30264,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2012:7:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 30267,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2024:1:122",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2012:13:122"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 30273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2056:3:122",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 30272,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30265,
                              "src": "2056:1:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 30274,
                          "nodeType": "ExpressionStatement",
                          "src": "2056:3:122"
                        },
                        "nodeType": "ForStatement",
                        "src": "2007:259:122"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30297,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 30214,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 30213,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30160,
                        "src": "1631:9:122",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1631:9:122"
                    }
                  ],
                  "name": "setupLoanParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30212,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30209,
                        "name": "loanParamsList",
                        "nodeType": "VariableDeclaration",
                        "scope": 30297,
                        "src": "1550:51:122",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 30207,
                            "name": "LoanParamsStruct.LoanParams",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4884,
                            "src": "1550:27:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            }
                          },
                          "id": 30208,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1550:29:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_storage_$dyn_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30211,
                        "name": "areTorqueLoans",
                        "nodeType": "VariableDeclaration",
                        "scope": 30297,
                        "src": "1603:19:122",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30210,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1603:4:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1549:74:122"
                  },
                  "returnParameters": {
                    "id": 30215,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1641:0:122"
                  },
                  "scope": 30537,
                  "src": "1525:744:122",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 30377,
                    "nodeType": "Block",
                    "src": "2386:473:122",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 30313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30309,
                                  "name": "collateralTokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30300,
                                  "src": "2398:16:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 30310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2398:23:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30311,
                                  "name": "isTorqueLoans",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30303,
                                  "src": "2425:13:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                                    "typeString": "bool[] calldata"
                                  }
                                },
                                "id": 30312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2425:20:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2398:47:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "636f756e74206d69736d61746368",
                              "id": 30314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2447:16:122",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4e47b0faf042463061f100d4bb8e934fd9c2e42fb27f86b7083e0ceb80b3cd5f",
                                "typeString": "literal_string \"count mismatch\""
                              },
                              "value": "count mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4e47b0faf042463061f100d4bb8e934fd9c2e42fb27f86b7083e0ceb80b3cd5f",
                                "typeString": "literal_string \"count mismatch\""
                              }
                            ],
                            "id": 30308,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2390:7:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 30315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2390:74:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30316,
                        "nodeType": "ExpressionStatement",
                        "src": "2390:74:122"
                      },
                      {
                        "assignments": [
                          30320
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30320,
                            "name": "loanParamsIdList",
                            "nodeType": "VariableDeclaration",
                            "scope": 30377,
                            "src": "2469:33:122",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 30318,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "2469:7:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 30319,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2469:9:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 30327,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 30324,
                                "name": "collateralTokens",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30300,
                                "src": "2519:16:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 30325,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2519:23:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 30323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2505:13:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (bytes32[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 30321,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "2509:7:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 30322,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2509:9:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            }
                          },
                          "id": 30326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2505:38:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2469:74:122"
                      },
                      {
                        "body": {
                          "id": 30368,
                          "nodeType": "Block",
                          "src": "2601:171:122",
                          "statements": [
                            {
                              "assignments": [
                                30340
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 30340,
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 30368,
                                  "src": "2606:10:122",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 30339,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2606:7:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 30354,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 30345,
                                              "name": "collateralTokens",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30300,
                                              "src": "2654:16:122",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                "typeString": "address[] calldata"
                                              }
                                            },
                                            "id": 30347,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 30346,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30329,
                                              "src": "2671:1:122",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2654:19:122",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 30348,
                                              "name": "isTorqueLoans",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30303,
                                              "src": "2675:13:122",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                                                "typeString": "bool[] calldata"
                                              }
                                            },
                                            "id": 30350,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 30349,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30329,
                                              "src": "2689:1:122",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2675:16:122",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 30343,
                                            "name": "abi",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44981,
                                            "src": "2637:3:122",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_abi",
                                              "typeString": "abi"
                                            }
                                          },
                                          "id": 30344,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "encodePacked",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "2637:16:122",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                            "typeString": "function () pure returns (bytes memory)"
                                          }
                                        },
                                        "id": 30351,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2637:55:122",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 30342,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44988,
                                      "src": "2627:9:122",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 30352,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2627:66:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 30341,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2619:7:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint256"
                                },
                                "id": 30353,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2619:75:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2606:88:122"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30355,
                                    "name": "loanParamsIdList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30320,
                                    "src": "2699:16:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  "id": 30357,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 30356,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30329,
                                    "src": "2716:1:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2699:19:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30358,
                                    "name": "loanParamsIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 502,
                                    "src": "2721:13:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                                      "typeString": "mapping(uint256 => bytes32)"
                                    }
                                  },
                                  "id": 30360,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 30359,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30340,
                                    "src": "2735:2:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2721:17:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "2699:39:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 30362,
                              "nodeType": "ExpressionStatement",
                              "src": "2699:39:122"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "2743:24:122",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30363,
                                    "name": "loanParamsIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 502,
                                    "src": "2750:13:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                                      "typeString": "mapping(uint256 => bytes32)"
                                    }
                                  },
                                  "id": 30365,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 30364,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30340,
                                    "src": "2764:2:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2750:17:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 30367,
                              "nodeType": "ExpressionStatement",
                              "src": "2743:24:122"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 30332,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30329,
                            "src": "2567:1:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30333,
                              "name": "collateralTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30300,
                              "src": "2571:16:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 30334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2571:23:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2567:27:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 30369,
                        "initializationExpression": {
                          "assignments": [
                            30329
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 30329,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 30369,
                              "src": "2552:9:122",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 30328,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2552:7:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 30331,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2564:1:122",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2552:13:122"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 30337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2596:3:122",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 30336,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30329,
                              "src": "2596:1:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 30338,
                          "nodeType": "ExpressionStatement",
                          "src": "2596:3:122"
                        },
                        "nodeType": "ForStatement",
                        "src": "2547:225:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 30374,
                              "name": "loanParamsIdList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30320,
                              "src": "2838:16:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 30371,
                                  "name": "sovrynContractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30128,
                                  "src": "2797:21:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 30370,
                                "name": "ProtocolSettingsLike",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4398,
                                "src": "2776:20:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ProtocolSettingsLike_$4398_$",
                                  "typeString": "type(contract ProtocolSettingsLike)"
                                }
                              },
                              "id": 30372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2776:43:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ProtocolSettingsLike_$4398",
                                "typeString": "contract ProtocolSettingsLike"
                              }
                            },
                            "id": 30373,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "disableLoanParams",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4390,
                            "src": "2776:61:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32[] memory) external"
                            }
                          },
                          "id": 30375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2776:79:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30376,
                        "nodeType": "ExpressionStatement",
                        "src": "2776:79:122"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30378,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 30306,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 30305,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30160,
                        "src": "2376:9:122",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2376:9:122"
                    }
                  ],
                  "name": "disableLoanParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30304,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30300,
                        "name": "collateralTokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 30378,
                        "src": "2299:35:122",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 30298,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2299:7:122",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 30299,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2299:9:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30303,
                        "name": "isTorqueLoans",
                        "nodeType": "VariableDeclaration",
                        "scope": 30378,
                        "src": "2336:29:122",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 30301,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "2336:4:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 30302,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2336:6:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2298:68:122"
                  },
                  "returnParameters": {
                    "id": 30307,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2386:0:122"
                  },
                  "scope": 30537,
                  "src": "2272:587:122",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 30456,
                    "nodeType": "Block",
                    "src": "3220:588:122",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 30403,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 30400,
                                    "name": "_baseRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30380,
                                    "src": "3252:9:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 30398,
                                    "name": "_rateMultiplier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30382,
                                    "src": "3232:15:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 30399,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "3232:19:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 30401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3232:30:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 30402,
                                "name": "WEI_PERCENT_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 463,
                                "src": "3266:21:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3232:55:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "637572766520706172616d7320746f6f2068696768",
                              "id": 30404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3289:23:122",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7f3da7b58017a16d3775ccb121bf2b9ebfd43e96f77b8566ba1aad93485876d3",
                                "typeString": "literal_string \"curve params too high\""
                              },
                              "value": "curve params too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7f3da7b58017a16d3775ccb121bf2b9ebfd43e96f77b8566ba1aad93485876d3",
                                "typeString": "literal_string \"curve params too high\""
                              }
                            ],
                            "id": 30397,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3224:7:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 30405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3224:89:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30406,
                        "nodeType": "ExpressionStatement",
                        "src": "3224:89:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 30413,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 30410,
                                    "name": "_lowUtilBaseRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30384,
                                    "src": "3352:16:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 30408,
                                    "name": "_lowUtilRateMultiplier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30386,
                                    "src": "3325:22:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 30409,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "3325:26:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 30411,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3325:44:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 30412,
                                "name": "WEI_PERCENT_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 463,
                                "src": "3373:21:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3325:69:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "637572766520706172616d7320746f6f2068696768",
                              "id": 30414,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3396:23:122",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7f3da7b58017a16d3775ccb121bf2b9ebfd43e96f77b8566ba1aad93485876d3",
                                "typeString": "literal_string \"curve params too high\""
                              },
                              "value": "curve params too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7f3da7b58017a16d3775ccb121bf2b9ebfd43e96f77b8566ba1aad93485876d3",
                                "typeString": "literal_string \"curve params too high\""
                              }
                            ],
                            "id": 30407,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3317:7:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 30415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3317:103:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30416,
                        "nodeType": "ExpressionStatement",
                        "src": "3317:103:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 30424,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 30418,
                                  "name": "_targetLevel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30388,
                                  "src": "3433:12:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 30419,
                                  "name": "WEI_PERCENT_PRECISION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 463,
                                  "src": "3449:21:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3433:37:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 30421,
                                  "name": "_kinkLevel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30390,
                                  "src": "3474:10:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 30422,
                                  "name": "WEI_PERCENT_PRECISION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 463,
                                  "src": "3488:21:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3474:35:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3433:76:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6576656c7320746f6f2068696768",
                              "id": 30425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3511:17:122",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8b4bb8d5f816e8d55f7501cad51d7624e1a5bd35318be6be4c2496965c9e684f",
                                "typeString": "literal_string \"levels too high\""
                              },
                              "value": "levels too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8b4bb8d5f816e8d55f7501cad51d7624e1a5bd35318be6be4c2496965c9e684f",
                                "typeString": "literal_string \"levels too high\""
                              }
                            ],
                            "id": 30417,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3425:7:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 30426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3425:104:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30427,
                        "nodeType": "ExpressionStatement",
                        "src": "3425:104:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30428,
                            "name": "baseRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 478,
                            "src": "3534:8:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30429,
                            "name": "_baseRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30380,
                            "src": "3545:9:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3534:20:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30431,
                        "nodeType": "ExpressionStatement",
                        "src": "3534:20:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30432,
                            "name": "rateMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 480,
                            "src": "3558:14:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30433,
                            "name": "_rateMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30382,
                            "src": "3575:15:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3558:32:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30435,
                        "nodeType": "ExpressionStatement",
                        "src": "3558:32:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30436,
                            "name": "lowUtilBaseRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 482,
                            "src": "3594:15:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30437,
                            "name": "_lowUtilBaseRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30384,
                            "src": "3612:16:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3594:34:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30439,
                        "nodeType": "ExpressionStatement",
                        "src": "3594:34:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30440,
                            "name": "lowUtilRateMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 484,
                            "src": "3632:21:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30441,
                            "name": "_lowUtilRateMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30386,
                            "src": "3656:22:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3632:46:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30443,
                        "nodeType": "ExpressionStatement",
                        "src": "3632:46:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30444,
                            "name": "targetLevel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 486,
                            "src": "3683:11:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30445,
                            "name": "_targetLevel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30388,
                            "src": "3697:12:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3683:26:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30447,
                        "nodeType": "ExpressionStatement",
                        "src": "3683:26:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30448,
                            "name": "kinkLevel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 488,
                            "src": "3725:9:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30449,
                            "name": "_kinkLevel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30390,
                            "src": "3737:10:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3725:22:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30451,
                        "nodeType": "ExpressionStatement",
                        "src": "3725:22:122"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30452,
                            "name": "maxScaleRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 490,
                            "src": "3763:12:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30453,
                            "name": "_maxScaleRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30392,
                            "src": "3778:13:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3763:28:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30455,
                        "nodeType": "ExpressionStatement",
                        "src": "3763:28:122"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30457,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 30395,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 30394,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30160,
                        "src": "3210:9:122",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3210:9:122"
                    }
                  ],
                  "name": "setDemandCurve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30380,
                        "name": "_baseRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 30457,
                        "src": "3022:17:122",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30379,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3022:7:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30382,
                        "name": "_rateMultiplier",
                        "nodeType": "VariableDeclaration",
                        "scope": 30457,
                        "src": "3043:23:122",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30381,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3043:7:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30384,
                        "name": "_lowUtilBaseRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 30457,
                        "src": "3070:24:122",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30383,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3070:7:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30386,
                        "name": "_lowUtilRateMultiplier",
                        "nodeType": "VariableDeclaration",
                        "scope": 30457,
                        "src": "3098:30:122",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30385,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3098:7:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30388,
                        "name": "_targetLevel",
                        "nodeType": "VariableDeclaration",
                        "scope": 30457,
                        "src": "3132:20:122",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3132:7:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30390,
                        "name": "_kinkLevel",
                        "nodeType": "VariableDeclaration",
                        "scope": 30457,
                        "src": "3156:18:122",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30389,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3156:7:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30392,
                        "name": "_maxScaleRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 30457,
                        "src": "3178:21:122",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30391,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3178:7:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3018:184:122"
                  },
                  "returnParameters": {
                    "id": 30396,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3220:0:122"
                  },
                  "scope": 30537,
                  "src": "2995:813:122",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 30486,
                    "nodeType": "Block",
                    "src": "3937:282:122",
                    "statements": [
                      {
                        "assignments": [
                          30467
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30467,
                            "name": "slot",
                            "nodeType": "VariableDeclaration",
                            "scope": 30486,
                            "src": "3980:12:122",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 30466,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3980:7:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 30484,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 30475,
                                              "name": "funcId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30459,
                                              "src": "4070:6:122",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30473,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44981,
                                              "src": "4053:3:122",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 30474,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encodePacked",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "4053:16:122",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 30476,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4053:24:122",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 30472,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44988,
                                        "src": "4043:9:122",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 30477,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4043:35:122",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 30471,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4036:6:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes4_$",
                                      "typeString": "type(bytes4)"
                                    },
                                    "typeName": "bytes4"
                                  },
                                  "id": 30478,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4036:43:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "307864343661373034626332383564626436666635616433383633353036323630623164663032383132663466383537633863633835323331376136616336346632",
                                      "id": 30480,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4094:66:122",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_96078384726591474532746498434765479118197112446299703977676695423578601710834_by_1",
                                        "typeString": "int_const 9607...(69 digits omitted)...0834"
                                      },
                                      "value": "0xd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_96078384726591474532746498434765479118197112446299703977676695423578601710834_by_1",
                                        "typeString": "int_const 9607...(69 digits omitted)...0834"
                                      }
                                    ],
                                    "id": 30479,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4086:7:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": "uint256"
                                  },
                                  "id": 30481,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4086:75:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30469,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "4013:3:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4013:16:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 30482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4013:154:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30468,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "3998:9:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 30483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3998:174:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3980:192:122"
                      },
                      {
                        "externalReferences": [
                          {
                            "slot": {
                              "declaration": 30467,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "4197:4:122",
                              "valueSize": 1
                            }
                          },
                          {
                            "isPaused": {
                              "declaration": 30461,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "4203:8:122",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 30485,
                        "nodeType": "InlineAssembly",
                        "operations": "{ sstore(slot, isPaused) }",
                        "src": "4176:40:122"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30487,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 30464,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 30463,
                        "name": "onlyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30160,
                        "src": "3927:9:122",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3927:9:122"
                    }
                  ],
                  "name": "toggleFunctionPause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30462,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30459,
                        "name": "funcId",
                        "nodeType": "VariableDeclaration",
                        "scope": 30487,
                        "src": "3843:20:122",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30458,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3843:6:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30461,
                        "name": "isPaused",
                        "nodeType": "VariableDeclaration",
                        "scope": 30487,
                        "src": "3903:13:122",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30460,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3903:4:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3839:80:122"
                  },
                  "returnParameters": {
                    "id": 30465,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3937:0:122"
                  },
                  "scope": 30537,
                  "src": "3811:408:122",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 30535,
                    "nodeType": "Block",
                    "src": "4501:228:122",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 30503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30499,
                                  "name": "addresses",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30490,
                                  "src": "4513:9:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 30500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4513:16:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30501,
                                  "name": "limits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30493,
                                  "src": "4533:6:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 30502,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4533:13:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4513:33:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6d69736d617463686564206172726179206c656e67746873",
                              "id": 30504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4548:26:122",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e4b06104eb5f1e1b9318b0b70b82ba47e80a2c4dea33f6e0cf4d8aa502181d74",
                                "typeString": "literal_string \"mismatched array lengths\""
                              },
                              "value": "mismatched array lengths"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e4b06104eb5f1e1b9318b0b70b82ba47e80a2c4dea33f6e0cf4d8aa502181d74",
                                "typeString": "literal_string \"mismatched array lengths\""
                              }
                            ],
                            "id": 30498,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4505:7:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 30505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4505:70:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30506,
                        "nodeType": "ExpressionStatement",
                        "src": "4505:70:122"
                      },
                      {
                        "body": {
                          "id": 30528,
                          "nodeType": "Block",
                          "src": "4626:52:122",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30526,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30518,
                                    "name": "transactionLimit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 510,
                                    "src": "4631:16:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 30522,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 30519,
                                      "name": "addresses",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30490,
                                      "src": "4648:9:122",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 30521,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 30520,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30508,
                                      "src": "4658:1:122",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4648:12:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4631:30:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30523,
                                    "name": "limits",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30493,
                                    "src": "4664:6:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 30525,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 30524,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30508,
                                    "src": "4671:1:122",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4664:9:122",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4631:42:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 30527,
                              "nodeType": "ExpressionStatement",
                              "src": "4631:42:122"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 30511,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30508,
                            "src": "4599:1:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30512,
                              "name": "addresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30490,
                              "src": "4603:9:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 30513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4603:16:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4599:20:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 30529,
                        "initializationExpression": {
                          "assignments": [
                            30508
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 30508,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 30529,
                              "src": "4584:9:122",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 30507,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4584:7:122",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 30510,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30509,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4596:1:122",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4584:13:122"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 30516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4621:3:122",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 30515,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30508,
                              "src": "4621:1:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 30517,
                          "nodeType": "ExpressionStatement",
                          "src": "4621:3:122"
                        },
                        "nodeType": "ForStatement",
                        "src": "4579:99:122"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 30531,
                              "name": "addresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30490,
                              "src": "4707:9:122",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30532,
                              "name": "limits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30493,
                              "src": "4718:6:122",
                              "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": 30530,
                            "name": "SetTransactionLimits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30140,
                            "src": "4686:20:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,uint256[] memory)"
                            }
                          },
                          "id": 30533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4686:39:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30534,
                        "nodeType": "EmitStatement",
                        "src": "4681:44:122"
                      }
                    ]
                  },
                  "documentation": "sets the transaction limit per token address\n@param addresses the token addresses\n@param limits the limit denominated in the currency of the token address\n",
                  "id": 30536,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 30496,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 30495,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "4491:9:122",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4491:9:122"
                    }
                  ],
                  "name": "setTransactionLimits",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30490,
                        "name": "addresses",
                        "nodeType": "VariableDeclaration",
                        "scope": 30536,
                        "src": "4431:26:122",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 30488,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4431:7:122",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 30489,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4431:9:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30493,
                        "name": "limits",
                        "nodeType": "VariableDeclaration",
                        "scope": 30536,
                        "src": "4459:23:122",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 30491,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4459:7:122",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 30492,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4459:9:122",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4430:53:122"
                  },
                  "returnParameters": {
                    "id": 30497,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4501:0:122"
                  },
                  "scope": 30537,
                  "src": "4401:328:122",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 30538,
              "src": "350:4381:122"
            }
          ],
          "src": "118:4614:122"
        },
        "id": 122
      },
      "contracts/mockup/proxy/ImplementationMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/proxy/ImplementationMockup.sol",
          "exportedSymbols": {
            "ImplementationMockup": [
              30565
            ]
          },
          "id": 30566,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 30539,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:123"
            },
            {
              "absolutePath": "contracts/mockup/proxy/StorageMockup.sol",
              "file": "./StorageMockup.sol",
              "id": 30540,
              "nodeType": "ImportDirective",
              "scope": 30566,
              "sourceUnit": 30584,
              "src": "26:29:123",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 30541,
                    "name": "StorageMockup",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 30583,
                    "src": "90:13:123",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_StorageMockup_$30583",
                      "typeString": "contract StorageMockup"
                    }
                  },
                  "id": 30542,
                  "nodeType": "InheritanceSpecifier",
                  "src": "90:13:123"
                }
              ],
              "contractDependencies": [
                30583
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 30565,
              "linearizedBaseContracts": [
                30565,
                30583
              ],
              "name": "ImplementationMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 30555,
                    "nodeType": "Block",
                    "src": "148:51:123",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30547,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30578,
                            "src": "152:5:123",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30548,
                            "name": "_value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30544,
                            "src": "160:6:123",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "152:14:123",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 30550,
                        "nodeType": "ExpressionStatement",
                        "src": "152:14:123"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 30552,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30544,
                              "src": "188:6:123",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 30551,
                            "name": "ValueChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30582,
                            "src": "175:12:123",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 30553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "175:20:123",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30554,
                        "nodeType": "EmitStatement",
                        "src": "170:25:123"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30556,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setValue",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30545,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30544,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 30556,
                        "src": "125:14:123",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30543,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "125:7:123",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "124:16:123"
                  },
                  "returnParameters": {
                    "id": 30546,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "148:0:123"
                  },
                  "scope": 30565,
                  "src": "107:92:123",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 30563,
                    "nodeType": "Block",
                    "src": "252:20:123",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30561,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30578,
                          "src": "263:5:123",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 30560,
                        "id": 30562,
                        "nodeType": "Return",
                        "src": "256:12:123"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 30564,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getValue",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30557,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "219:2:123"
                  },
                  "returnParameters": {
                    "id": 30560,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30559,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 30564,
                        "src": "243:7:123",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30558,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "243:7:123",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "242:9:123"
                  },
                  "scope": 30565,
                  "src": "202:70:123",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 30566,
              "src": "57:217:123"
            }
          ],
          "src": "0:275:123"
        },
        "id": 123
      },
      "contracts/mockup/proxy/ProxyMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/proxy/ProxyMockup.sol",
          "exportedSymbols": {
            "ProxyMockup": [
              30574
            ]
          },
          "id": 30575,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 30567,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:124"
            },
            {
              "absolutePath": "contracts/mockup/proxy/StorageMockup.sol",
              "file": "./StorageMockup.sol",
              "id": 30568,
              "nodeType": "ImportDirective",
              "scope": 30575,
              "sourceUnit": 30584,
              "src": "26:29:124",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/proxy/UpgradableProxy.sol",
              "file": "../../proxy/UpgradableProxy.sol",
              "id": 30569,
              "nodeType": "ImportDirective",
              "scope": 30575,
              "sourceUnit": 42654,
              "src": "56:41:124",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 30570,
                    "name": "StorageMockup",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 30583,
                    "src": "123:13:124",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_StorageMockup_$30583",
                      "typeString": "contract StorageMockup"
                    }
                  },
                  "id": 30571,
                  "nodeType": "InheritanceSpecifier",
                  "src": "123:13:124"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 30572,
                    "name": "UpgradableProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42653,
                    "src": "138:15:124",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UpgradableProxy_$42653",
                      "typeString": "contract UpgradableProxy"
                    }
                  },
                  "id": 30573,
                  "nodeType": "InheritanceSpecifier",
                  "src": "138:15:124"
                }
              ],
              "contractDependencies": [
                30583,
                42623,
                42653
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 30574,
              "linearizedBaseContracts": [
                30574,
                42653,
                42623,
                30583
              ],
              "name": "ProxyMockup",
              "nodeType": "ContractDefinition",
              "nodes": [],
              "scope": 30575,
              "src": "99:57:124"
            }
          ],
          "src": "0:157:124"
        },
        "id": 124
      },
      "contracts/mockup/proxy/StorageMockup.sol": {
        "ast": {
          "absolutePath": "contracts/mockup/proxy/StorageMockup.sol",
          "exportedSymbols": {
            "StorageMockup": [
              30583
            ]
          },
          "id": 30584,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 30576,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:125"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 30583,
              "linearizedBaseContracts": [
                30583
              ],
              "name": "StorageMockup",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 30578,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 30583,
                  "src": "52:13:125",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 30577,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "52:7:125",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 30582,
                  "name": "ValueChanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 30581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30580,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 30582,
                        "src": "88:13:125",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "88:7:125",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "87:15:125"
                  },
                  "src": "69:34:125"
                }
              ],
              "scope": 30584,
              "src": "26:79:125"
            }
          ],
          "src": "0:106:125"
        },
        "id": 125
      },
      "contracts/modules/Affiliates.sol": {
        "ast": {
          "absolutePath": "contracts/modules/Affiliates.sol",
          "exportedSymbols": {
            "Affiliates": [
              31550
            ]
          },
          "id": 31551,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 30585,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "113:23:126"
            },
            {
              "id": 30586,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "137:33:126"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 30587,
              "nodeType": "ImportDirective",
              "scope": 31551,
              "sourceUnit": 4842,
              "src": "172:27:126",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/EnumerableBytes32Set.sol",
              "file": "../mixins/EnumerableBytes32Set.sol",
              "id": 30588,
              "nodeType": "ImportDirective",
              "scope": 31551,
              "sourceUnit": 27040,
              "src": "200:44:126",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeERC20.sol",
              "file": "../openzeppelin/SafeERC20.sol",
              "id": 30589,
              "nodeType": "ImportDirective",
              "scope": 31551,
              "sourceUnit": 42050,
              "src": "245:39:126",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/AffiliatesEvents.sol",
              "file": "../events/AffiliatesEvents.sol",
              "id": 30590,
              "nodeType": "ImportDirective",
              "scope": 31551,
              "sourceUnit": 5774,
              "src": "285:40:126",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/feeds/IPriceFeeds.sol",
              "file": "../feeds/IPriceFeeds.sol",
              "id": 30591,
              "nodeType": "ImportDirective",
              "scope": 31551,
              "sourceUnit": 8708,
              "src": "326:34:126",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/locked/ILockedSOV.sol",
              "file": "../locked/ILockedSOV.sol",
              "id": 30592,
              "nodeType": "ImportDirective",
              "scope": 31551,
              "sourceUnit": 25584,
              "src": "361:34:126",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/ModuleCommonFunctionalities.sol",
              "file": "../mixins/ModuleCommonFunctionalities.sol",
              "id": 30593,
              "nodeType": "ImportDirective",
              "scope": 31551,
              "sourceUnit": 27833,
              "src": "396:51:126",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 30594,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "787:5:126",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 30595,
                  "nodeType": "InheritanceSpecifier",
                  "src": "787:5:126"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 30596,
                    "name": "AffiliatesEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5773,
                    "src": "794:16:126",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AffiliatesEvents_$5773",
                      "typeString": "contract AffiliatesEvents"
                    }
                  },
                  "id": 30597,
                  "nodeType": "InheritanceSpecifier",
                  "src": "794:16:126"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 30598,
                    "name": "ModuleCommonFunctionalities",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27832,
                    "src": "812:27:126",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModuleCommonFunctionalities_$27832",
                      "typeString": "contract ModuleCommonFunctionalities"
                    }
                  },
                  "id": 30599,
                  "nodeType": "InheritanceSpecifier",
                  "src": "812:27:126"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                5773,
                6055,
                27832,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title Affiliates contract.\n@notice Track referrals and reward referrers (affiliates) with tokens.\n  In-detail specifications are found at https://wiki.sovryn.app/en/community/Affiliates\n@dev Module: Affiliates upgradable\n  Storage: from State, functions called from Protocol by delegatecall",
              "fullyImplemented": true,
              "id": 31550,
              "linearizedBaseContracts": [
                31550,
                27832,
                5773,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913,
                6055
              ],
              "name": "Affiliates",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 30602,
                  "libraryName": {
                    "contractScope": null,
                    "id": 30600,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42049,
                    "src": "849:9:126",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$42049",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "843:27:126",
                  "typeName": {
                    "contractScope": null,
                    "id": 30601,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "863:6:126",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "body": {
                    "id": 30605,
                    "nodeType": "Block",
                    "src": "980:2:126",
                    "statements": []
                  },
                  "documentation": "@notice Void constructor.",
                  "id": 30606,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30603,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "970:2:126"
                  },
                  "returnParameters": {
                    "id": 30604,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "980:0:126"
                  },
                  "scope": 31550,
                  "src": "959:23:126",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 30613,
                    "nodeType": "Block",
                    "src": "1094:51:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "416666696c6961746573202d2066616c6c6261636b206e6f7420616c6c6f776564",
                              "id": 30610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1105:35:126",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3a51d55c2bd89cca5a0b09ee71fa0c76d19613dbba93574e2b76b3ed0ecb8217",
                                "typeString": "literal_string \"Affiliates - fallback not allowed\""
                              },
                              "value": "Affiliates - fallback not allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_3a51d55c2bd89cca5a0b09ee71fa0c76d19613dbba93574e2b76b3ed0ecb8217",
                                "typeString": "literal_string \"Affiliates - fallback not allowed\""
                              }
                            ],
                            "id": 30609,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44999,
                              45000
                            ],
                            "referencedDeclaration": 45000,
                            "src": "1098:6:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 30611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1098:43:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30612,
                        "nodeType": "ExpressionStatement",
                        "src": "1098:43:126"
                      }
                    ]
                  },
                  "documentation": "@notice Avoid calls to this contract except for those explicitly declared.",
                  "id": 30614,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30607,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1082:2:126"
                  },
                  "returnParameters": {
                    "id": 30608,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1094:0:126"
                  },
                  "scope": 31550,
                  "src": "1074:71:126",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 30740,
                    "nodeType": "Block",
                    "src": "1609:1176:126",
                    "statements": [
                      {
                        "assignments": [
                          30622
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30622,
                            "name": "prevModuleContractAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 30740,
                            "src": "1613:33:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 30621,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1613:7:126",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 30628,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 30623,
                            "name": "logicTargets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4583,
                            "src": "1649:12:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                              "typeString": "mapping(bytes4 => address)"
                            }
                          },
                          "id": 30627,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 30624,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45278,
                                "src": "1662:4:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Affiliates_$31550",
                                  "typeString": "contract Affiliates"
                                }
                              },
                              "id": 30625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "setAffiliatesReferrer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30859,
                              "src": "1662:26:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$__$",
                                "typeString": "function (address,address) external"
                              }
                            },
                            "id": 30626,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1662:35:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1649:49:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1613:85:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30630,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "1713:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setAffiliatesReferrer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30859,
                                "src": "1713:26:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$__$",
                                  "typeString": "function (address,address) external"
                                }
                              },
                              "id": 30632,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1713:35:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30633,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "1750:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30629,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1702:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1702:55:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30635,
                        "nodeType": "ExpressionStatement",
                        "src": "1702:55:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30637,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "1772:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30638,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getUserNotFirstTradeFlag",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30890,
                                "src": "1772:29:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view external returns (bool)"
                                }
                              },
                              "id": 30639,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1772:38:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30640,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "1812:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30636,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1761:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1761:58:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30642,
                        "nodeType": "ExpressionStatement",
                        "src": "1761:58:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30644,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "1834:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30645,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getReferralsList",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30878,
                                "src": "1834:21:126",
                                "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": 30646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1834:30:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30647,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "1866:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30643,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1823:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1823:50:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30649,
                        "nodeType": "ExpressionStatement",
                        "src": "1823:50:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30651,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "1888:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setUserNotFirstTradeFlag",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30916,
                                "src": "1888:29:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 30653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1888:38:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30654,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "1928:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30650,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1877:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1877:58:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30656,
                        "nodeType": "ExpressionStatement",
                        "src": "1877:58:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30658,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "1950:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30659,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "payTradingFeeToAffiliatesReferrer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31182,
                                "src": "1950:38:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (address,address,address,uint256) external returns (uint256,uint256)"
                                }
                              },
                              "id": 30660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1950:47:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30661,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "1999:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30657,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1939:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30662,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1939:67:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30663,
                        "nodeType": "ExpressionStatement",
                        "src": "1939:67:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30665,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "2021:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30666,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAffiliatesReferrerBalances",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31428,
                                "src": "2021:34:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "function (address) view external returns (address[] memory,uint256[] memory)"
                                }
                              },
                              "id": 30667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2021:43:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30668,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "2066:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30664,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2010:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2010:63:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30670,
                        "nodeType": "ExpressionStatement",
                        "src": "2010:63:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30672,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "2088:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAffiliatesReferrerTokenBalance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31525,
                                "src": "2088:38:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address,address) view external returns (uint256)"
                                }
                              },
                              "id": 30674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2088:47:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30675,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "2137:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30671,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2077:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2077:67:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30677,
                        "nodeType": "ExpressionStatement",
                        "src": "2077:67:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30679,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "2159:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30680,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAffiliatesReferrerTokensList",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31509,
                                "src": "2159:36:126",
                                "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": 30681,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2159:45:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30682,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "2206:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30678,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2148:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2148:65:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30684,
                        "nodeType": "ExpressionStatement",
                        "src": "2148:65:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30686,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "2228:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30687,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawAffiliatesReferrerTokenFees",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31285,
                                "src": "2228:40:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,uint256) external"
                                }
                              },
                              "id": 30688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2228:49:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30689,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "2279:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30685,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2217:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30690,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2217:69:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30691,
                        "nodeType": "ExpressionStatement",
                        "src": "2217:69:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30693,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "2301:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30694,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawAllAffiliatesReferrerTokenFees",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31352,
                                "src": "2301:43:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 30695,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2301:52:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30696,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "2355:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30692,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2290:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2290:72:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30698,
                        "nodeType": "ExpressionStatement",
                        "src": "2290:72:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30700,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "2377:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getMinReferralsToPayout",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30959,
                                "src": "2377:28:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 30702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2377:37:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30703,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "2416:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30699,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2366:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2366:57:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30705,
                        "nodeType": "ExpressionStatement",
                        "src": "2366:57:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30707,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "2438:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30708,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAffiliatesUserReferrer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31537,
                                "src": "2438:30:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              },
                              "id": 30709,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2438:39:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30710,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "2479:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30706,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2427:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2427:59:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30712,
                        "nodeType": "ExpressionStatement",
                        "src": "2427:59:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30714,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "2501:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAffiliateRewardsHeld",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31549,
                                "src": "2501:28:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 30716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2501:37:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30717,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "2540:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30713,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2490:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2490:57:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30719,
                        "nodeType": "ExpressionStatement",
                        "src": "2490:57:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30721,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "2562:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAffiliateTradingTokenFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30951,
                                "src": "2562:39:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 30723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2562:48:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30724,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "2612:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30720,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2551:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2551:68:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30726,
                        "nodeType": "ExpressionStatement",
                        "src": "2551:68:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30728,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45278,
                                  "src": "2634:4:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Affiliates_$31550",
                                    "typeString": "contract Affiliates"
                                  }
                                },
                                "id": 30729,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAffiliatesTokenRewardsValueInRbtc",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31490,
                                "src": "2634:41:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 30730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2634:50:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30731,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "2686:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 30727,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2623:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 30732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2623:70:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30733,
                        "nodeType": "ExpressionStatement",
                        "src": "2623:70:126"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 30735,
                              "name": "prevModuleContractAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30622,
                              "src": "2733:25:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30736,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30616,
                              "src": "2760:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416666696c6961746573",
                              "id": 30737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2768:12:126",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_164a544958fa4c8f7db01167bba67382640ca273a17cf56f89047c0dd6bc4f5a",
                                "typeString": "literal_string \"Affiliates\""
                              },
                              "value": "Affiliates"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_164a544958fa4c8f7db01167bba67382640ca273a17cf56f89047c0dd6bc4f5a",
                                "typeString": "literal_string \"Affiliates\""
                              }
                            ],
                            "id": 30734,
                            "name": "ProtocolModuleContractReplaced",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6054,
                            "src": "2702:30:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32)"
                            }
                          },
                          "id": 30738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2702:79:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30739,
                        "nodeType": "EmitStatement",
                        "src": "2697:84:126"
                      }
                    ]
                  },
                  "documentation": "@notice Set delegate callable functions by proxy contract.\n@dev This contract is designed as a module, this way logic can be\n  expanded and upgraded w/o losing storage that is kept in the protocol (State.sol)\n  initialize() is used to register in the proxy external (module) functions\n  to be called via the proxy.\n@param target The address of a new logic implementation.",
                  "id": 30741,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 30619,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 30618,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1599:9:126",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1599:9:126"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30616,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 30741,
                        "src": "1574:14:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30615,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1574:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1573:16:126"
                  },
                  "returnParameters": {
                    "id": 30620,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1609:0:126"
                  },
                  "scope": 31550,
                  "src": "1554:1231:126",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 30756,
                    "nodeType": "Block",
                    "src": "2916:98:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 30751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 30744,
                                  "name": "loanPoolToUnderlying",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4702,
                                  "src": "2928:20:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                  }
                                },
                                "id": 30747,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 30745,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "2949:3:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 30746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2949:10:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2928:32:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 30749,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2972:1:126",
                                    "subdenomination": null,
                                    "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": 30748,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2964:7:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 30750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2964:10:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2928:46:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416666696c69617465733a206e6f7420617574686f72697a6564",
                              "id": 30752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2976:28:126",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7b2534ecbf523fab7876c99d71113bc375c8f9a7fecfbc20794bd8bbb7f973dd",
                                "typeString": "literal_string \"Affiliates: not authorized\""
                              },
                              "value": "Affiliates: not authorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7b2534ecbf523fab7876c99d71113bc375c8f9a7fecfbc20794bd8bbb7f973dd",
                                "typeString": "literal_string \"Affiliates: not authorized\""
                              }
                            ],
                            "id": 30743,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2920:7:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 30753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2920:85:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30754,
                        "nodeType": "ExpressionStatement",
                        "src": "2920:85:126"
                      },
                      {
                        "id": 30755,
                        "nodeType": "PlaceholderStatement",
                        "src": "3009:1:126"
                      }
                    ]
                  },
                  "documentation": "@notice Function modifier to avoid any other calls not coming from loan pools.",
                  "id": 30757,
                  "name": "onlyCallableByLoanPools",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 30742,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2913:2:126"
                  },
                  "src": "2881:133:126",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30768,
                    "nodeType": "Block",
                    "src": "3157:81:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 30763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30760,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "3169:3:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 30761,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3169:10:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 30762,
                                "name": "protocolAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4750,
                                "src": "3183:15:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3169:29:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416666696c69617465733a206e6f7420617574686f72697a6564",
                              "id": 30764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3200:28:126",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7b2534ecbf523fab7876c99d71113bc375c8f9a7fecfbc20794bd8bbb7f973dd",
                                "typeString": "literal_string \"Affiliates: not authorized\""
                              },
                              "value": "Affiliates: not authorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7b2534ecbf523fab7876c99d71113bc375c8f9a7fecfbc20794bd8bbb7f973dd",
                                "typeString": "literal_string \"Affiliates: not authorized\""
                              }
                            ],
                            "id": 30759,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3161:7:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 30765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3161:68:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30766,
                        "nodeType": "ExpressionStatement",
                        "src": "3161:68:126"
                      },
                      {
                        "id": 30767,
                        "nodeType": "PlaceholderStatement",
                        "src": "3233:1:126"
                      }
                    ]
                  },
                  "documentation": "@notice Function modifier to avoid any other calls not coming from within protocol functions.",
                  "id": 30769,
                  "name": "onlyCallableInternal",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 30758,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3154:2:126"
                  },
                  "src": "3125:113:126",
                  "visibility": "internal"
                },
                {
                  "canonicalName": "Affiliates.SetAffiliatesReferrerResult",
                  "id": 30776,
                  "members": [
                    {
                      "constant": false,
                      "id": 30771,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 30776,
                      "src": "3383:12:126",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 30770,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3383:4:126",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 30773,
                      "name": "alreadySet",
                      "nodeType": "VariableDeclaration",
                      "scope": 30776,
                      "src": "3399:15:126",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 30772,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3399:4:126",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 30775,
                      "name": "userNotFirstTradeFlag",
                      "nodeType": "VariableDeclaration",
                      "scope": 30776,
                      "src": "3418:26:126",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 30774,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3418:4:126",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "SetAffiliatesReferrerResult",
                  "nodeType": "StructDefinition",
                  "scope": 31550,
                  "src": "3344:104:126",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 30858,
                    "nodeType": "Block",
                    "src": "3999:542:126",
                    "statements": [
                      {
                        "assignments": [
                          30788
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30788,
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "scope": 30858,
                            "src": "4003:41:126",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SetAffiliatesReferrerResult_$30776_memory_ptr",
                              "typeString": "struct Affiliates.SetAffiliatesReferrerResult"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 30787,
                              "name": "SetAffiliatesReferrerResult",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 30776,
                              "src": "4003:27:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SetAffiliatesReferrerResult_$30776_storage_ptr",
                                "typeString": "struct Affiliates.SetAffiliatesReferrerResult"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 30789,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4003:41:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30796,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30790,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30788,
                              "src": "4049:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SetAffiliatesReferrerResult_$30776_memory_ptr",
                                "typeString": "struct Affiliates.SetAffiliatesReferrerResult memory"
                              }
                            },
                            "id": 30792,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "userNotFirstTradeFlag",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30775,
                            "src": "4049:28:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 30794,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30778,
                                "src": "4105:4:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 30793,
                              "name": "getUserNotFirstTradeFlag",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30890,
                              "src": "4080:24:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 30795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4080:30:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4049:61:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 30797,
                        "nodeType": "ExpressionStatement",
                        "src": "4049:61:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30798,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30788,
                              "src": "4114:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SetAffiliatesReferrerResult_$30776_memory_ptr",
                                "typeString": "struct Affiliates.SetAffiliatesReferrerResult memory"
                              }
                            },
                            "id": 30800,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "alreadySet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30773,
                            "src": "4114:17:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 30807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 30801,
                                "name": "affiliatesUserReferrer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4758,
                                "src": "4134:22:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                  "typeString": "mapping(address => address)"
                                }
                              },
                              "id": 30803,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 30802,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30778,
                                "src": "4157:4:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4134:28:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 30805,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4174:1:126",
                                  "subdenomination": null,
                                  "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": 30804,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4166:7:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 30806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4166:10:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "4134:42:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4114:62:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 30809,
                        "nodeType": "ExpressionStatement",
                        "src": "4114:62:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30810,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30788,
                              "src": "4180:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SetAffiliatesReferrerResult_$30776_memory_ptr",
                                "typeString": "struct Affiliates.SetAffiliatesReferrerResult memory"
                              }
                            },
                            "id": 30812,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "success",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30771,
                            "src": "4180:14:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 30823,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "4197:72:126",
                            "subExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 30821,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 30817,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30813,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30788,
                                        "src": "4199:6:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SetAffiliatesReferrerResult_$30776_memory_ptr",
                                          "typeString": "struct Affiliates.SetAffiliatesReferrerResult memory"
                                        }
                                      },
                                      "id": 30814,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "userNotFirstTradeFlag",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 30775,
                                      "src": "4199:28:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30815,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30788,
                                        "src": "4231:6:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SetAffiliatesReferrerResult_$30776_memory_ptr",
                                          "typeString": "struct Affiliates.SetAffiliatesReferrerResult memory"
                                        }
                                      },
                                      "id": 30816,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "alreadySet",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 30773,
                                      "src": "4231:17:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "4199:49:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 30820,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 30818,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30778,
                                      "src": "4252:4:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 30819,
                                      "name": "referrer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30780,
                                      "src": "4260:8:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "4252:16:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "4199:69:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 30822,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4198:71:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4180:89:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 30825,
                        "nodeType": "ExpressionStatement",
                        "src": "4180:89:126"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 30826,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30788,
                            "src": "4277:6:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SetAffiliatesReferrerResult_$30776_memory_ptr",
                              "typeString": "struct Affiliates.SetAffiliatesReferrerResult memory"
                            }
                          },
                          "id": 30827,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "success",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30771,
                          "src": "4277:14:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 30856,
                          "nodeType": "Block",
                          "src": "4433:105:126",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 30848,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30778,
                                    "src": "4469:4:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30849,
                                    "name": "referrer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30780,
                                    "src": "4475:8:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30850,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30788,
                                      "src": "4485:6:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SetAffiliatesReferrerResult_$30776_memory_ptr",
                                        "typeString": "struct Affiliates.SetAffiliatesReferrerResult memory"
                                      }
                                    },
                                    "id": 30851,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "alreadySet",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 30773,
                                    "src": "4485:17:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30852,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30788,
                                      "src": "4504:6:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SetAffiliatesReferrerResult_$30776_memory_ptr",
                                        "typeString": "struct Affiliates.SetAffiliatesReferrerResult memory"
                                      }
                                    },
                                    "id": 30853,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "userNotFirstTradeFlag",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 30775,
                                    "src": "4504:28:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 30847,
                                  "name": "SetAffiliatesReferrerFail",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5724,
                                  "src": "4443:25:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$_t_bool_$returns$__$",
                                    "typeString": "function (address,address,bool,bool)"
                                  }
                                },
                                "id": 30854,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4443:90:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 30855,
                              "nodeType": "EmitStatement",
                              "src": "4438:95:126"
                            }
                          ]
                        },
                        "id": 30857,
                        "nodeType": "IfStatement",
                        "src": "4273:265:126",
                        "trueBody": {
                          "id": 30846,
                          "nodeType": "Block",
                          "src": "4293:134:126",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30832,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30828,
                                    "name": "affiliatesUserReferrer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4758,
                                    "src": "4298:22:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                      "typeString": "mapping(address => address)"
                                    }
                                  },
                                  "id": 30830,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 30829,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30778,
                                    "src": "4321:4:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4298:28:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 30831,
                                  "name": "referrer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30780,
                                  "src": "4329:8:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4298:39:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 30833,
                              "nodeType": "ExpressionStatement",
                              "src": "4298:39:126"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 30838,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30778,
                                    "src": "4370:4:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 30834,
                                      "name": "referralsList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4762,
                                      "src": "4342:13:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$26428_storage_$",
                                        "typeString": "mapping(address => struct EnumerableAddressSet.AddressSet storage ref)"
                                      }
                                    },
                                    "id": 30836,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 30835,
                                      "name": "referrer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30780,
                                      "src": "4356:8:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4342:23:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AddressSet_$26428_storage",
                                      "typeString": "struct EnumerableAddressSet.AddressSet storage ref"
                                    }
                                  },
                                  "id": 30837,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26462,
                                  "src": "4342:27:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$26428_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$26428_storage_ptr_$",
                                    "typeString": "function (struct EnumerableAddressSet.AddressSet storage pointer,address) returns (bool)"
                                  }
                                },
                                "id": 30839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4342:33:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 30840,
                              "nodeType": "ExpressionStatement",
                              "src": "4342:33:126"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 30842,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30778,
                                    "src": "4407:4:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30843,
                                    "name": "referrer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30780,
                                    "src": "4413:8:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 30841,
                                  "name": "SetAffiliatesReferrer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5714,
                                  "src": "4385:21:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 30844,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4385:37:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 30845,
                              "nodeType": "EmitStatement",
                              "src": "4380:42:126"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Loan pool calls this function to tell affiliates\n  a user coming from a referrer is trading and should be registered if not yet.\n  Taking into account some user status flags may lead to the user and referrer\n  become added or not to the affiliates record.\n\t * @param user The address of the user that is trading on loan pools.\n@param referrer The address of the referrer the user is coming from.",
                  "id": 30859,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 30783,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 30782,
                        "name": "onlyCallableByLoanPools",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30757,
                        "src": "3961:23:126",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3961:23:126"
                    },
                    {
                      "arguments": null,
                      "id": 30785,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 30784,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "3985:13:126",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3985:13:126"
                    }
                  ],
                  "name": "setAffiliatesReferrer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30781,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30778,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 30859,
                        "src": "3920:12:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30777,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3920:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30780,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 30859,
                        "src": "3934:16:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30779,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3934:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3919:32:126"
                  },
                  "returnParameters": {
                    "id": 30786,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3999:0:126"
                  },
                  "scope": 31550,
                  "src": "3889:652:126",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 30877,
                    "nodeType": "Block",
                    "src": "4823:71:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 30867,
                            "name": "refList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30865,
                            "src": "4827:7:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 30868,
                                  "name": "referralsList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4762,
                                  "src": "4837:13:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$26428_storage_$",
                                    "typeString": "mapping(address => struct EnumerableAddressSet.AddressSet storage ref)"
                                  }
                                },
                                "id": 30870,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 30869,
                                  "name": "referrer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30861,
                                  "src": "4851:8:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4837:23:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AddressSet_$26428_storage",
                                  "typeString": "struct EnumerableAddressSet.AddressSet storage ref"
                                }
                              },
                              "id": 30871,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "enumerate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26605,
                              "src": "4837:33:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$26428_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$bound_to$_t_struct$_AddressSet_$26428_storage_ptr_$",
                                "typeString": "function (struct EnumerableAddressSet.AddressSet storage pointer) view returns (address[] memory)"
                              }
                            },
                            "id": 30872,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4837:35:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "4827:45:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 30874,
                        "nodeType": "ExpressionStatement",
                        "src": "4827:45:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30875,
                          "name": "refList",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30865,
                          "src": "4883:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 30866,
                        "id": 30876,
                        "nodeType": "Return",
                        "src": "4876:14:126"
                      }
                    ]
                  },
                  "documentation": "@notice Getter to query the referrals coming from a referrer.\n@param referrer The address of a given referrer.\n@return The referralsList mapping value by referrer.",
                  "id": 30878,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReferralsList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30862,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30861,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 30878,
                        "src": "4756:16:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30860,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4756:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4755:18:126"
                  },
                  "returnParameters": {
                    "id": 30866,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30865,
                        "name": "refList",
                        "nodeType": "VariableDeclaration",
                        "scope": 30878,
                        "src": "4797:24:126",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 30863,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4797:7:126",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 30864,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4797:9:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4796:26:126"
                  },
                  "scope": 31550,
                  "src": "4730:164:126",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 30889,
                    "nodeType": "Block",
                    "src": "5152:42:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 30885,
                            "name": "userNotFirstTradeFlag",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4754,
                            "src": "5163:21:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 30887,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 30886,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30880,
                            "src": "5185:4:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5163:27:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 30884,
                        "id": 30888,
                        "nodeType": "Return",
                        "src": "5156:34:126"
                      }
                    ]
                  },
                  "documentation": "@notice Getter to query the not-first-trade flag of a user.\n@param user The address of a given user.\n@return The userNotFirstTradeFlag mapping value by user.",
                  "id": 30890,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserNotFirstTradeFlag",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30880,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 30890,
                        "src": "5111:12:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30879,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5111:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5110:14:126"
                  },
                  "returnParameters": {
                    "id": 30884,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30883,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 30890,
                        "src": "5146:4:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30882,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5146:4:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5145:6:126"
                  },
                  "scope": 31550,
                  "src": "5077:117:126",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 30915,
                    "nodeType": "Block",
                    "src": "5415:125:126",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 30902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5423:28:126",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 30899,
                              "name": "userNotFirstTradeFlag",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4754,
                              "src": "5424:21:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 30901,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 30900,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30892,
                              "src": "5446:4:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5424:27:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 30914,
                        "nodeType": "IfStatement",
                        "src": "5419:118:126",
                        "trueBody": {
                          "id": 30913,
                          "nodeType": "Block",
                          "src": "5453:84:126",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30903,
                                    "name": "userNotFirstTradeFlag",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4754,
                                    "src": "5458:21:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 30905,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 30904,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30892,
                                    "src": "5480:4:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5458:27:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 30906,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5488:4:126",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "5458:34:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 30908,
                              "nodeType": "ExpressionStatement",
                              "src": "5458:34:126"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 30910,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30892,
                                    "src": "5527:4:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 30909,
                                  "name": "SetUserNotFirstTradeFlag",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5728,
                                  "src": "5502:24:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 30911,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5502:30:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 30912,
                              "nodeType": "EmitStatement",
                              "src": "5497:35:126"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Setter to toggle on the not-first-trade flag of a user.\n@param user The address of a given user.",
                  "id": 30916,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 30895,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 30894,
                        "name": "onlyCallableByLoanPools",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30757,
                        "src": "5377:23:126",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5377:23:126"
                    },
                    {
                      "arguments": null,
                      "id": 30897,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 30896,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "5401:13:126",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5401:13:126"
                    }
                  ],
                  "name": "setUserNotFirstTradeFlag",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30893,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30892,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 30916,
                        "src": "5354:12:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30891,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5354:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5353:14:126"
                  },
                  "returnParameters": {
                    "id": 30898,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5415:0:126"
                  },
                  "scope": 31550,
                  "src": "5320:220:126",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 30923,
                    "nodeType": "Block",
                    "src": "5832:34:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30921,
                          "name": "affiliateFeePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4691,
                          "src": "5843:19:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 30920,
                        "id": 30922,
                        "nodeType": "Return",
                        "src": "5836:26:126"
                      }
                    ]
                  },
                  "documentation": "@notice Internal getter to query the fee share for affiliate program.\n@dev It returns a value defined at protocol storage (State.sol)\n@return The percentage of fee share w/ 18 decimals.",
                  "id": 30924,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAffiliatesTradingFeePercentForSOV",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30917,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5797:2:126"
                  },
                  "returnParameters": {
                    "id": 30920,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30919,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 30924,
                        "src": "5823:7:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30918,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5823:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5822:9:126"
                  },
                  "scope": 31550,
                  "src": "5751:115:126",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30942,
                    "nodeType": "Block",
                    "src": "6504:83:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              },
                              "id": 30939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130",
                                "id": 30937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6576:2:126",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3230",
                                "id": 30938,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6580:2:126",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_20_by_1",
                                  "typeString": "int_const 20"
                                },
                                "value": "20"
                              },
                              "src": "6576:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                "typeString": "int_const 100000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 30933,
                                    "name": "getAffiliateTradingTokenFeePercent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30951,
                                    "src": "6534:34:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view returns (uint256)"
                                    }
                                  },
                                  "id": 30934,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6534:36:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30931,
                                  "name": "feeTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30926,
                                  "src": "6515:14:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 30932,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "6515:18:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 30935,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6515:56:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 30936,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "6515:60:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 30940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6515:68:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 30930,
                        "id": 30941,
                        "nodeType": "Return",
                        "src": "6508:75:126"
                      }
                    ]
                  },
                  "documentation": "@notice Internal to calculate the affiliates trading token fee amount.\n  Affiliates program has 2 kind of rewards:\n    1. x% based on the fee of the token that is traded (in form of the token itself).\n    2. x% based on the fee of the token that is traded (in form of SOV).\n  This _getReferrerTradingFeeForToken calculates the first one\n  by applying a custom percentage multiplier.\n@param feeTokenAmount The trading token fee amount.\n@return The affiliates share of the trading token fee amount.",
                  "id": 30943,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getReferrerTradingFeeForToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30927,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30926,
                        "name": "feeTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 30943,
                        "src": "6448:22:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30925,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6448:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6447:24:126"
                  },
                  "returnParameters": {
                    "id": 30930,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30929,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 30943,
                        "src": "6495:7:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30928,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6495:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6494:9:126"
                  },
                  "scope": 31550,
                  "src": "6408:179:126",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30950,
                    "nodeType": "Block",
                    "src": "6886:46:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30948,
                          "name": "affiliateTradingTokenFeePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4780,
                          "src": "6897:31:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 30947,
                        "id": 30949,
                        "nodeType": "Return",
                        "src": "6890:38:126"
                      }
                    ]
                  },
                  "documentation": "@notice Getter to query the fee share of trading token fee for affiliate program.\n@dev It returns a value defined at protocol storage (State.sol)\n@return The percentage of fee share w/ 18 decimals.",
                  "id": 30951,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliateTradingTokenFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30944,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6853:2:126"
                  },
                  "returnParameters": {
                    "id": 30947,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30946,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 30951,
                        "src": "6877:7:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30945,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6877:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6876:9:126"
                  },
                  "scope": 31550,
                  "src": "6810:122:126",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 30958,
                    "nodeType": "Block",
                    "src": "7218:35:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30956,
                          "name": "minReferralsToPayout",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4765,
                          "src": "7229:20:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 30955,
                        "id": 30957,
                        "nodeType": "Return",
                        "src": "7222:27:126"
                      }
                    ]
                  },
                  "documentation": "@notice Getter to query referral threshold for paying out to the referrer.\n@dev It returns a value defined at protocol storage (State.sol)\n@return The minimum number of referrals set by Protocol.",
                  "id": 30959,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMinReferralsToPayout",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30952,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7185:2:126"
                  },
                  "returnParameters": {
                    "id": 30955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30954,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 30959,
                        "src": "7209:7:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30953,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7209:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7208:9:126"
                  },
                  "scope": 31550,
                  "src": "7153:100:126",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 31004,
                    "nodeType": "Block",
                    "src": "7630:575:126",
                    "statements": [
                      {
                        "assignments": [
                          30969
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30969,
                            "name": "rewardAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 31004,
                            "src": "7634:20:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 30968,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7634:7:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 30970,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7634:20:126"
                      },
                      {
                        "assignments": [
                          30972
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30972,
                            "name": "_priceFeeds",
                            "nodeType": "VariableDeclaration",
                            "scope": 31004,
                            "src": "7658:19:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 30971,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7658:7:126",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 30974,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 30973,
                          "name": "priceFeeds",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4575,
                          "src": "7680:10:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7658:32:126"
                      },
                      {
                        "assignments": [
                          30976,
                          30978
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30976,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 31004,
                            "src": "7761:12:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 30975,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7761:4:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 30978,
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "scope": 31004,
                            "src": "7775:17:126",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 30977,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7775:5:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31000,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 30984,
                                          "name": "_priceFeeds",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30972,
                                          "src": "7868:11:126",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 30983,
                                        "name": "IPriceFeeds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8707,
                                        "src": "7856:11:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                          "typeString": "type(contract IPriceFeeds)"
                                        }
                                      },
                                      "id": 30985,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7856:24:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                        "typeString": "contract IPriceFeeds"
                                      }
                                    },
                                    "id": 30986,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "queryReturn",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 8615,
                                    "src": "7856:36:126",
                                    "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": 30987,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7856:45:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 30988,
                                  "name": "feeToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30961,
                                  "src": "7908:8:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 30989,
                                  "name": "sovTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4771,
                                  "src": "7923:15:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31653230",
                                      "id": 30996,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8025:4:126",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                        "typeString": "int_const 100000000000000000000"
                                      },
                                      "value": "1e20"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                        "typeString": "int_const 100000000000000000000"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 30992,
                                            "name": "_getAffiliatesTradingFeePercentForSOV",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30924,
                                            "src": "7980:37:126",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                              "typeString": "function () view returns (uint256)"
                                            }
                                          },
                                          "id": 30993,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7980:39:126",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 30990,
                                          "name": "feeAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30963,
                                          "src": "7966:9:126",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 30991,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "7966:13:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 30994,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7966:54:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30995,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "7966:58:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 30997,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7966:64:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30981,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "7827:3:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30982,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7827:22:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 30998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7827:209:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 30979,
                              "name": "_priceFeeds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30972,
                              "src": "7799:11:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 30980,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7799:22:126",
                            "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": 30999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7799:242:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7760:281:126"
                      },
                      {
                        "externalReferences": [
                          {
                            "rewardAmount": {
                              "declaration": 30969,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "8133:12:126",
                              "valueSize": 1
                            }
                          },
                          {
                            "success": {
                              "declaration": 30976,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "8115:7:126",
                              "valueSize": 1
                            }
                          },
                          {
                            "data": {
                              "declaration": 30978,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "8159:4:126",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 31001,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    if eq(success, 1)\n    {\n        rewardAmount := mload(add(data, 32))\n    }\n}",
                        "src": "8095:83:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 31002,
                          "name": "rewardAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30969,
                          "src": "8189:12:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 30967,
                        "id": 31003,
                        "nodeType": "Return",
                        "src": "8182:19:126"
                      }
                    ]
                  },
                  "documentation": "@notice Get the sovToken reward of a trade.\n@dev The reward is worth x% of the trading fee.\n@param feeToken The address of the token in which the trading/borrowing fee was paid.\n@param feeAmount The height of the fee.\n@return The reward amount.\n",
                  "id": 31005,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getSovBonusAmount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30964,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30961,
                        "name": "feeToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 31005,
                        "src": "7561:16:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30960,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7561:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30963,
                        "name": "feeAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 31005,
                        "src": "7579:17:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30962,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7579:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7560:37:126"
                  },
                  "returnParameters": {
                    "id": 30967,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30966,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 31005,
                        "src": "7621:7:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30965,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7621:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7620:9:126"
                  },
                  "scope": 31550,
                  "src": "7533:672:126",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31181,
                    "nodeType": "Block",
                    "src": "9758:2068:126",
                    "statements": [
                      {
                        "assignments": [
                          31025
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31025,
                            "name": "isHeld",
                            "nodeType": "VariableDeclaration",
                            "scope": 31181,
                            "src": "9762:11:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 31024,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9762:4:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31034,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 31026,
                                  "name": "referralsList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4762,
                                  "src": "9776:13:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$26428_storage_$",
                                    "typeString": "mapping(address => struct EnumerableAddressSet.AddressSet storage ref)"
                                  }
                                },
                                "id": 31028,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 31027,
                                  "name": "referrer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31007,
                                  "src": "9790:8:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9776:23:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AddressSet_$26428_storage",
                                  "typeString": "struct EnumerableAddressSet.AddressSet storage ref"
                                }
                              },
                              "id": 31029,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26708,
                              "src": "9776:30:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$26428_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$26428_storage_ptr_$",
                                "typeString": "function (struct EnumerableAddressSet.AddressSet storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 31030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9776:32:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 31031,
                              "name": "getMinReferralsToPayout",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30959,
                              "src": "9811:23:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 31032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9811:25:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9776:60:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9762:74:126"
                      },
                      {
                        "assignments": [
                          31036
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31036,
                            "name": "bonusPaymentIsSuccess",
                            "nodeType": "VariableDeclaration",
                            "scope": 31181,
                            "src": "9840:26:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 31035,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9840:4:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31038,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 31037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9869:4:126",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9840:33:126"
                      },
                      {
                        "assignments": [
                          31040
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31040,
                            "name": "paidReferrerBonusSovAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 31181,
                            "src": "9877:34:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31039,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9877:7:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31041,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9877:34:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 31046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 31042,
                            "name": "referrerBonusTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31022,
                            "src": "9955:24:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 31044,
                                "name": "tradingFeeTokenBaseAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31013,
                                "src": "10013:25:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 31043,
                              "name": "_getReferrerTradingFeeForToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30943,
                              "src": "9982:30:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view returns (uint256)"
                              }
                            },
                            "id": 31045,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9982:57:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9955:84:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 31047,
                        "nodeType": "ExpressionStatement",
                        "src": "9955:84:126"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 31054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "10047:55:126",
                          "subExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 31052,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31011,
                                "src": "10096:5:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 31048,
                                  "name": "affiliatesReferrerTokensList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4784,
                                  "src": "10048:28:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$26428_storage_$",
                                    "typeString": "mapping(address => struct EnumerableAddressSet.AddressSet storage ref)"
                                  }
                                },
                                "id": 31050,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 31049,
                                  "name": "referrer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31007,
                                  "src": "10077:8:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10048:38:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AddressSet_$26428_storage",
                                  "typeString": "struct EnumerableAddressSet.AddressSet storage ref"
                                }
                              },
                              "id": 31051,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contains",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26560,
                              "src": "10048:47:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$26428_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$26428_storage_ptr_$",
                                "typeString": "function (struct EnumerableAddressSet.AddressSet storage pointer,address) view returns (bool)"
                              }
                            },
                            "id": 31053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10048:54:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31062,
                        "nodeType": "IfStatement",
                        "src": "10043:110:126",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 31059,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31011,
                                "src": "10147:5:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 31055,
                                  "name": "affiliatesReferrerTokensList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4784,
                                  "src": "10104:28:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$26428_storage_$",
                                    "typeString": "mapping(address => struct EnumerableAddressSet.AddressSet storage ref)"
                                  }
                                },
                                "id": 31057,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 31056,
                                  "name": "referrer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31007,
                                  "src": "10133:8:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10104:38:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AddressSet_$26428_storage",
                                  "typeString": "struct EnumerableAddressSet.AddressSet storage ref"
                                }
                              },
                              "id": 31058,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26462,
                              "src": "10104:42:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$26428_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$26428_storage_ptr_$",
                                "typeString": "function (struct EnumerableAddressSet.AddressSet storage pointer,address) returns (bool)"
                              }
                            },
                            "id": 31060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10104:49:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 31061,
                          "nodeType": "ExpressionStatement",
                          "src": "10104:49:126"
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 31076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 31063,
                                "name": "affiliatesReferrerBalances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4790,
                                "src": "10157:26:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 31066,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 31064,
                                "name": "referrer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31007,
                                "src": "10184:8:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10157:36:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 31067,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 31065,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31011,
                              "src": "10194:5:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10157:43:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 31074,
                                "name": "referrerBonusTokenAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31022,
                                "src": "10251:24:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 31068,
                                    "name": "affiliatesReferrerBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4790,
                                    "src": "10203:26:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 31070,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 31069,
                                    "name": "referrer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31007,
                                    "src": "10230:8:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10203:36:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 31072,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 31071,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31011,
                                  "src": "10240:5:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10203:43:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 31073,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "10203:47:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 31075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10203:73:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10157:119:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 31077,
                        "nodeType": "ExpressionStatement",
                        "src": "10157:119:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 31083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 31078,
                            "name": "referrerBonusSovAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31020,
                            "src": "10313:22:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 31080,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31011,
                                "src": "10357:5:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 31081,
                                "name": "tradingFeeTokenBaseAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31013,
                                "src": "10364:25:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 31079,
                              "name": "_getSovBonusAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31005,
                              "src": "10338:18:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) view returns (uint256)"
                              }
                            },
                            "id": 31082,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10338:52:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10313:77:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 31084,
                        "nodeType": "ExpressionStatement",
                        "src": "10313:77:126"
                      },
                      {
                        "assignments": [
                          31086
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31086,
                            "name": "rewardsHeldByProtocol",
                            "nodeType": "VariableDeclaration",
                            "scope": 31181,
                            "src": "10394:29:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31085,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10394:7:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31090,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 31087,
                            "name": "affiliateRewardsHeld",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4769,
                            "src": "10426:20:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 31089,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 31088,
                            "name": "referrer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31007,
                            "src": "10447:8:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10426:30:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10394:62:126"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 31091,
                          "name": "isHeld",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31025,
                          "src": "10465:6:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 31150,
                          "nodeType": "Block",
                          "src": "10646:638:126",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31106,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 31102,
                                    "name": "affiliateRewardsHeld",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4769,
                                    "src": "10828:20:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 31104,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 31103,
                                    "name": "referrer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31007,
                                    "src": "10849:8:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10828:30:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 31105,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10861:1:126",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10828:34:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31114,
                              "nodeType": "IfStatement",
                              "src": "10824:86:126",
                              "trueBody": {
                                "id": 31113,
                                "nodeType": "Block",
                                "src": "10864:46:126",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31111,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 31107,
                                          "name": "affiliateRewardsHeld",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4769,
                                          "src": "10870:20:126",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 31109,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 31108,
                                          "name": "referrer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31007,
                                          "src": "10891:8:126",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "10870:30:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 31110,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10903:1:126",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "10870:34:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 31112,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10870:34:126"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 31120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 31115,
                                  "name": "paidReferrerBonusSovAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31040,
                                  "src": "10915:26:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 31118,
                                      "name": "rewardsHeldByProtocol",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31086,
                                      "src": "10971:21:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31116,
                                      "name": "referrerBonusSovAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31020,
                                      "src": "10944:22:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 31117,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "10944:26:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 31119,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10944:49:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10915:78:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 31121,
                              "nodeType": "ExpressionStatement",
                              "src": "10915:78:126"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 31126,
                                    "name": "lockedSOVAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4773,
                                    "src": "11030:16:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31127,
                                    "name": "paidReferrerBonusSovAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31040,
                                    "src": "11048:26:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 31123,
                                        "name": "sovTokenAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4771,
                                        "src": "11005:15:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 31122,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24699,
                                      "src": "10998:6:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 31124,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10998:23:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 31125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "approve",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 24662,
                                  "src": "10998:31:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 31128,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10998:77:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 31129,
                              "nodeType": "ExpressionStatement",
                              "src": "10998:77:126"
                            },
                            {
                              "assignments": [
                                31131,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31131,
                                  "name": "success",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 31150,
                                  "src": "11082:12:126",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 31130,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11082:4:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 31141,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "6465706f736974534f5628616464726573732c75696e7432353629",
                                        "id": 31136,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11150:29:126",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_f33bf9a1df7fc97ff813b6bb727a6322ec1aa5132cc0ad2b299d7fb6ac58d76c",
                                          "typeString": "literal_string \"depositSOV(address,uint256)\""
                                        },
                                        "value": "depositSOV(address,uint256)"
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 31137,
                                        "name": "referrer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31007,
                                        "src": "11181:8:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 31138,
                                        "name": "paidReferrerBonusSovAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31040,
                                        "src": "11191:26:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_f33bf9a1df7fc97ff813b6bb727a6322ec1aa5132cc0ad2b299d7fb6ac58d76c",
                                          "typeString": "literal_string \"depositSOV(address,uint256)\""
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 31134,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44981,
                                        "src": "11126:3:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 31135,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSignature",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "11126:23:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (string memory) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 31139,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11126:92:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 31132,
                                    "name": "lockedSOVAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4773,
                                    "src": "11104:16:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 31133,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "11104:21:126",
                                  "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": 31140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11104:115:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11081:138:126"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 31143,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "11229:8:126",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 31142,
                                  "name": "success",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31131,
                                  "src": "11230:7:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31149,
                              "nodeType": "IfStatement",
                              "src": "11225:55:126",
                              "trueBody": {
                                "id": 31148,
                                "nodeType": "Block",
                                "src": "11239:41:126",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31146,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 31144,
                                        "name": "bonusPaymentIsSuccess",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31036,
                                        "src": "11245:21:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 31145,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11269:5:126",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "11245:29:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 31147,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11245:29:126"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 31151,
                        "nodeType": "IfStatement",
                        "src": "10461:823:126",
                        "trueBody": {
                          "id": 31101,
                          "nodeType": "Block",
                          "src": "10473:167:126",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 31099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 31092,
                                    "name": "affiliateRewardsHeld",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4769,
                                    "src": "10553:20:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 31094,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 31093,
                                    "name": "referrer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31007,
                                    "src": "10574:8:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10553:30:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 31097,
                                      "name": "referrerBonusSovAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31020,
                                      "src": "10612:22:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31095,
                                      "name": "rewardsHeldByProtocol",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31086,
                                      "src": "10586:21:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 31096,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "10586:25:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 31098,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10586:49:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10553:82:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 31100,
                              "nodeType": "ExpressionStatement",
                              "src": "10553:82:126"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 31152,
                          "name": "bonusPaymentIsSuccess",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31036,
                          "src": "11292:21:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 31175,
                          "nodeType": "Block",
                          "src": "11545:216:126",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 31166,
                                    "name": "referrer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31007,
                                    "src": "11589:8:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31167,
                                    "name": "trader",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31009,
                                    "src": "11603:6:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31168,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31011,
                                    "src": "11625:5:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31169,
                                    "name": "tradingFeeTokenBaseAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31013,
                                    "src": "11636:25:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31170,
                                    "name": "referrerBonusTokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31022,
                                    "src": "11667:24:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31171,
                                    "name": "referrerBonusSovAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31020,
                                    "src": "11697:22:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31172,
                                    "name": "paidReferrerBonusSovAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31040,
                                    "src": "11725:26:126",
                                    "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"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31165,
                                  "name": "PayTradingFeeToAffiliateFail",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5762,
                                  "src": "11555:28:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 31173,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11555:201:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 31174,
                              "nodeType": "EmitStatement",
                              "src": "11550:206:126"
                            }
                          ]
                        },
                        "id": 31176,
                        "nodeType": "IfStatement",
                        "src": "11288:473:126",
                        "trueBody": {
                          "id": 31164,
                          "nodeType": "Block",
                          "src": "11315:224:126",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 31154,
                                    "name": "referrer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31007,
                                    "src": "11355:8:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31155,
                                    "name": "trader",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31009,
                                    "src": "11369:6:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31156,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31011,
                                    "src": "11391:5:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31157,
                                    "name": "isHeld",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31025,
                                    "src": "11402:6:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31158,
                                    "name": "tradingFeeTokenBaseAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31013,
                                    "src": "11414:25:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31159,
                                    "name": "referrerBonusTokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31022,
                                    "src": "11445:24:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31160,
                                    "name": "referrerBonusSovAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31020,
                                    "src": "11475:22:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31161,
                                    "name": "paidReferrerBonusSovAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31040,
                                    "src": "11503:26:126",
                                    "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_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31153,
                                  "name": "PayTradingFeeToAffiliate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5746,
                                  "src": "11325:24:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_bool_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,bool,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 31162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11325:209:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 31163,
                              "nodeType": "EmitStatement",
                              "src": "11320:214:126"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 31177,
                              "name": "referrerBonusSovAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31020,
                              "src": "11773:22:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31178,
                              "name": "referrerBonusTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31022,
                              "src": "11797:24:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 31179,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "11772:50:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 31023,
                        "id": 31180,
                        "nodeType": "Return",
                        "src": "11765:57:126"
                      }
                    ]
                  },
                  "documentation": "@notice Protocol calls this function to pay the affiliates rewards to a user (referrer).\n\t * @dev Affiliates program has 2 kind of rewards:\n    1. x% based on the fee of the token that is traded (in form of the token itself).\n    2. x% based on the fee of the token that is traded (in form of SOV).\n  Both are paid in this function.\n\t * @dev Actually they are not paid, but just holded by protocol until user claims them by\n  actively calling withdrawAffiliatesReferrerTokenFees() function,\n  and/or when unvesting lockedSOV.\n\t * @dev To be precise, what this function does is updating the registers of the rewards\n  for the referrer including the assignment of the SOV tokens as rewards to the\n  referrer's vesting contract.\n\t * @param referrer The address of the referrer.\n@param trader The address of the trader.\n@param token The address of the token in which the trading/borrowing fee was paid.\n@param tradingFeeTokenBaseAmount Total trading fee amount, the base for calculating referrer's fees.\n\t * @return referrerBonusSovAmount The amount of SOV tokens paid to the referrer (through a vesting contract, lockedSOV).\n@return referrerBonusTokenAmount The amount of trading tokens paid directly to the referrer.",
                  "id": 31182,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 31016,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 31015,
                        "name": "onlyCallableInternal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30769,
                        "src": "9648:20:126",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9648:20:126"
                    },
                    {
                      "arguments": null,
                      "id": 31018,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 31017,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "9669:13:126",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9669:13:126"
                    }
                  ],
                  "name": "payTradingFeeToAffiliatesReferrer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31014,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31007,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 31182,
                        "src": "9547:16:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31006,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9547:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31009,
                        "name": "trader",
                        "nodeType": "VariableDeclaration",
                        "scope": 31182,
                        "src": "9567:14:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31008,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9567:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31011,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 31182,
                        "src": "9585:13:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31010,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9585:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31013,
                        "name": "tradingFeeTokenBaseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 31182,
                        "src": "9602:33:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31012,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9602:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9543:95:126"
                  },
                  "returnParameters": {
                    "id": 31023,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31020,
                        "name": "referrerBonusSovAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 31182,
                        "src": "9692:30:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31019,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9692:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31022,
                        "name": "referrerBonusTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 31182,
                        "src": "9724:32:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31021,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9724:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9691:66:126"
                  },
                  "scope": 31550,
                  "src": "9501:2325:126",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 31284,
                    "nodeType": "Block",
                    "src": "12541:895:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 31198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 31194,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31186,
                                "src": "12553:8:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 31196,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12573:1:126",
                                    "subdenomination": null,
                                    "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": 31195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12565:7:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 31197,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12565:10:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "12553:22:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416666696c69617465733a2063616e6e6f7420776974686472617720746f207a65726f2061646472657373",
                              "id": 31199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12577:45:126",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bfd30ea322620684bd7ddf8d6c9e51f60b0a8a0207d37c8f18349fec8d36d0fe",
                                "typeString": "literal_string \"Affiliates: cannot withdraw to zero address\""
                              },
                              "value": "Affiliates: cannot withdraw to zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_bfd30ea322620684bd7ddf8d6c9e51f60b0a8a0207d37c8f18349fec8d36d0fe",
                                "typeString": "literal_string \"Affiliates: cannot withdraw to zero address\""
                              }
                            ],
                            "id": 31193,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "12545:7:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12545:78:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31201,
                        "nodeType": "ExpressionStatement",
                        "src": "12545:78:126"
                      },
                      {
                        "assignments": [
                          31203
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31203,
                            "name": "referrer",
                            "nodeType": "VariableDeclaration",
                            "scope": 31284,
                            "src": "12627:16:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 31202,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12627:7:126",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31206,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 31204,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44994,
                            "src": "12646:3:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 31205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "12646:10:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12627:29:126"
                      },
                      {
                        "assignments": [
                          31208
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31208,
                            "name": "referrerTokenBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 31284,
                            "src": "12660:28:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31207,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12660:7:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31214,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 31209,
                              "name": "affiliatesReferrerBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4790,
                              "src": "12691:26:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 31211,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 31210,
                              "name": "referrer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31203,
                              "src": "12718:8:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12691:36:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 31213,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 31212,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31184,
                            "src": "12728:5:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12691:43:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12660:74:126"
                      },
                      {
                        "assignments": [
                          31216
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31216,
                            "name": "withdrawAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 31284,
                            "src": "12738:22:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31215,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12738:7:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31223,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 31219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 31217,
                              "name": "referrerTokenBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31208,
                              "src": "12763:20:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 31218,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31188,
                              "src": "12786:6:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12763:29:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 31221,
                            "name": "referrerTokenBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31208,
                            "src": "12804:20:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 31222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "12763:61:126",
                          "trueExpression": {
                            "argumentTypes": null,
                            "id": 31220,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31188,
                            "src": "12795:6:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12738:86:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 31227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 31225,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31216,
                                "src": "12837:14:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 31226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12854:1:126",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "12837:18:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416666696c69617465733a2063616e6e6f74207769746864726177207a65726f20616d6f756e74",
                              "id": 31228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12857:41:126",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_28e3a5e360e5862b30fbc116fc84f12bee7aa807319308da6572932141e86e5c",
                                "typeString": "literal_string \"Affiliates: cannot withdraw zero amount\""
                              },
                              "value": "Affiliates: cannot withdraw zero amount"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_28e3a5e360e5862b30fbc116fc84f12bee7aa807319308da6572932141e86e5c",
                                "typeString": "literal_string \"Affiliates: cannot withdraw zero amount\""
                              }
                            ],
                            "id": 31224,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "12829:7:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12829:70:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31230,
                        "nodeType": "ExpressionStatement",
                        "src": "12829:70:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 31239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 31232,
                                      "name": "referralsList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4762,
                                      "src": "12912:13:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$26428_storage_$",
                                        "typeString": "mapping(address => struct EnumerableAddressSet.AddressSet storage ref)"
                                      }
                                    },
                                    "id": 31234,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 31233,
                                      "name": "referrer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31203,
                                      "src": "12926:8:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12912:23:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AddressSet_$26428_storage",
                                      "typeString": "struct EnumerableAddressSet.AddressSet storage ref"
                                    }
                                  },
                                  "id": 31235,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26708,
                                  "src": "12912:30:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$26428_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$26428_storage_ptr_$",
                                    "typeString": "function (struct EnumerableAddressSet.AddressSet storage pointer) view returns (uint256)"
                                  }
                                },
                                "id": 31236,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12912:32:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 31237,
                                  "name": "getMinReferralsToPayout",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30959,
                                  "src": "12948:23:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 31238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12948:25:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12912:61:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "596f757220726566657272616c7320686173206e6f74207265616368656420746865206d696e696d756d2072657175657374",
                              "id": 31240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12975:52:126",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_03c3205da71655396dc97b1dc65b9cdad6d783222814ab87a47522c7591af6c2",
                                "typeString": "literal_string \"Your referrals has not reached the minimum request\""
                              },
                              "value": "Your referrals has not reached the minimum request"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_03c3205da71655396dc97b1dc65b9cdad6d783222814ab87a47522c7591af6c2",
                                "typeString": "literal_string \"Your referrals has not reached the minimum request\""
                              }
                            ],
                            "id": 31231,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "12904:7:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12904:124:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31242,
                        "nodeType": "ExpressionStatement",
                        "src": "12904:124:126"
                      },
                      {
                        "assignments": [
                          31244
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31244,
                            "name": "newReferrerTokenBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 31284,
                            "src": "13033:31:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31243,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13033:7:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31249,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 31247,
                              "name": "withdrawAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31216,
                              "src": "13092:14:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 31245,
                              "name": "referrerTokenBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31208,
                              "src": "13067:20:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 31246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "13067:24:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 31248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13067:40:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13033:74:126"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 31250,
                            "name": "newReferrerTokenBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31244,
                            "src": "13116:23:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13143:1:126",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13116:28:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 31267,
                          "nodeType": "Block",
                          "src": "13209:79:126",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 31265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 31259,
                                      "name": "affiliatesReferrerBalances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4790,
                                      "src": "13214:26:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 31262,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 31260,
                                      "name": "referrer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31203,
                                      "src": "13241:8:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13214:36:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 31263,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 31261,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31184,
                                    "src": "13251:5:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13214:43:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 31264,
                                  "name": "newReferrerTokenBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31244,
                                  "src": "13260:23:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13214:69:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 31266,
                              "nodeType": "ExpressionStatement",
                              "src": "13214:69:126"
                            }
                          ]
                        },
                        "id": 31268,
                        "nodeType": "IfStatement",
                        "src": "13112:176:126",
                        "trueBody": {
                          "id": 31258,
                          "nodeType": "Block",
                          "src": "13146:57:126",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 31254,
                                    "name": "referrer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31203,
                                    "src": "13182:8:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31255,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31184,
                                    "src": "13192:5:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 31253,
                                  "name": "_removeAffiliatesReferrerToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31374,
                                  "src": "13151:30:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 31256,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13151:47:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 31257,
                              "nodeType": "ExpressionStatement",
                              "src": "13151:47:126"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 31273,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31186,
                              "src": "13319:8:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31274,
                              "name": "withdrawAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31216,
                              "src": "13329:14:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 31270,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31184,
                                  "src": "13299:5:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 31269,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "13292:6:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 31271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13292:13:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 31272,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 41862,
                            "src": "13292:26:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 31275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13292:52:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31276,
                        "nodeType": "ExpressionStatement",
                        "src": "13292:52:126"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 31278,
                              "name": "referrer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31203,
                              "src": "13390:8:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31279,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31186,
                              "src": "13400:8:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31280,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31184,
                              "src": "13410:5:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31281,
                              "name": "withdrawAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31216,
                              "src": "13417:14:126",
                              "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"
                              }
                            ],
                            "id": 31277,
                            "name": "WithdrawAffiliatesReferrerTokenFees",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5772,
                            "src": "13354:35:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 31282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13354:78:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31283,
                        "nodeType": "EmitStatement",
                        "src": "13349:83:126"
                      }
                    ]
                  },
                  "documentation": "@notice Referrer calls this function to receive its reward in a given token.\n  It will send the other (non-SOV) reward tokens from trading protocol fees,\n  to the referrer’s wallet.\n@dev Rewards are held by protocol in different tokens coming from trading fees.\n  Referrer has to claim them one by one for every token with accumulated balance.\n@param token The address of the token to withdraw.\n@param receiver The address of the withdrawal beneficiary.\n@param amount The amount of tokens to claim. If greater than balance, just sends balance.",
                  "id": 31285,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 31191,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 31190,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "12527:13:126",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12527:13:126"
                    }
                  ],
                  "name": "withdrawAffiliatesReferrerTokenFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31189,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31184,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 31285,
                        "src": "12465:13:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31183,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12465:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31186,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 31285,
                        "src": "12482:16:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31185,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12482:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31188,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 31285,
                        "src": "12502:14:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31187,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12502:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12461:58:126"
                  },
                  "returnParameters": {
                    "id": 31192,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12541:0:126"
                  },
                  "scope": 31550,
                  "src": "12417:1019:126",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 31351,
                    "nodeType": "Block",
                    "src": "13727:503:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 31297,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 31293,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31287,
                                "src": "13739:8:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 31295,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13759:1:126",
                                    "subdenomination": null,
                                    "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": 31294,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13751:7:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 31296,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13751:10:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "13739:22:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416666696c69617465733a2063616e6e6f7420776974686472617720746f207a65726f2061646472657373",
                              "id": 31298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13763:45:126",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bfd30ea322620684bd7ddf8d6c9e51f60b0a8a0207d37c8f18349fec8d36d0fe",
                                "typeString": "literal_string \"Affiliates: cannot withdraw to zero address\""
                              },
                              "value": "Affiliates: cannot withdraw to zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_bfd30ea322620684bd7ddf8d6c9e51f60b0a8a0207d37c8f18349fec8d36d0fe",
                                "typeString": "literal_string \"Affiliates: cannot withdraw to zero address\""
                              }
                            ],
                            "id": 31292,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13731:7:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13731:78:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31300,
                        "nodeType": "ExpressionStatement",
                        "src": "13731:78:126"
                      },
                      {
                        "assignments": [
                          31302
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31302,
                            "name": "referrer",
                            "nodeType": "VariableDeclaration",
                            "scope": 31351,
                            "src": "13813:16:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 31301,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "13813:7:126",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31305,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 31303,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44994,
                            "src": "13832:3:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 31304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "13832:10:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13813:29:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 31314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 31307,
                                      "name": "referralsList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4762,
                                      "src": "13855:13:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$26428_storage_$",
                                        "typeString": "mapping(address => struct EnumerableAddressSet.AddressSet storage ref)"
                                      }
                                    },
                                    "id": 31309,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 31308,
                                      "name": "referrer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31302,
                                      "src": "13869:8:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13855:23:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AddressSet_$26428_storage",
                                      "typeString": "struct EnumerableAddressSet.AddressSet storage ref"
                                    }
                                  },
                                  "id": 31310,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26708,
                                  "src": "13855:30:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$26428_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$26428_storage_ptr_$",
                                    "typeString": "function (struct EnumerableAddressSet.AddressSet storage pointer) view returns (uint256)"
                                  }
                                },
                                "id": 31311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13855:32:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 31312,
                                  "name": "getMinReferralsToPayout",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30959,
                                  "src": "13891:23:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 31313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13891:25:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13855:61:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "596f757220726566657272616c7320686173206e6f74207265616368656420746865206d696e696d756d2072657175657374",
                              "id": 31315,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13918:52:126",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_03c3205da71655396dc97b1dc65b9cdad6d783222814ab87a47522c7591af6c2",
                                "typeString": "literal_string \"Your referrals has not reached the minimum request\""
                              },
                              "value": "Your referrals has not reached the minimum request"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_03c3205da71655396dc97b1dc65b9cdad6d783222814ab87a47522c7591af6c2",
                                "typeString": "literal_string \"Your referrals has not reached the minimum request\""
                              }
                            ],
                            "id": 31306,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13847:7:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13847:124:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31317,
                        "nodeType": "ExpressionStatement",
                        "src": "13847:124:126"
                      },
                      {
                        "assignments": [
                          31321,
                          31324
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31321,
                            "name": "tokenAddresses",
                            "nodeType": "VariableDeclaration",
                            "scope": 31351,
                            "src": "13977:31:126",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 31319,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13977:7:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 31320,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "13977:9:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 31324,
                            "name": "tokenBalances",
                            "nodeType": "VariableDeclaration",
                            "scope": 31351,
                            "src": "14010:30:126",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 31322,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "14010:7:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 31323,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "14010:9:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31328,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 31326,
                              "name": "referrer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31302,
                              "src": "14074:8:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 31325,
                            "name": "getAffiliatesReferrerBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31428,
                            "src": "14044:29:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address) view returns (address[] memory,uint256[] memory)"
                            }
                          },
                          "id": 31327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14044:39:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address[] memory,uint256[] memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13976:107:126"
                      },
                      {
                        "body": {
                          "id": 31349,
                          "nodeType": "Block",
                          "src": "14135:92:126",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 31340,
                                      "name": "tokenAddresses",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31321,
                                      "src": "14176:14:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 31342,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 31341,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31330,
                                      "src": "14191:1:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "14176:17:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31343,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31287,
                                    "src": "14195:8:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 31344,
                                      "name": "tokenBalances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31324,
                                      "src": "14205:13:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 31346,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 31345,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31330,
                                      "src": "14219:1:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "14205:16:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31339,
                                  "name": "withdrawAffiliatesReferrerTokenFees",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31285,
                                  "src": "14140:35:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 31347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14140:82:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 31348,
                              "nodeType": "ExpressionStatement",
                              "src": "14140:82:126"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 31332,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31330,
                            "src": "14103:1:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31333,
                              "name": "tokenAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31321,
                              "src": "14107:14:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 31334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14107:21:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14103:25:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 31350,
                        "initializationExpression": {
                          "assignments": [
                            31330
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 31330,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 31350,
                              "src": "14092:9:126",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 31329,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "14092:7:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 31331,
                          "initialValue": null,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "14092:9:126"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 31337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "14130:3:126",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 31336,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31330,
                              "src": "14130:1:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 31338,
                          "nodeType": "ExpressionStatement",
                          "src": "14130:3:126"
                        },
                        "nodeType": "ForStatement",
                        "src": "14087:140:126"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraw to msg.sender all token fees for a referrer.\n@dev It's done by looping through its available tokens.\n@param receiver The address of the withdrawal beneficiary.",
                  "id": 31352,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 31290,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 31289,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "13713:13:126",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13713:13:126"
                    }
                  ],
                  "name": "withdrawAllAffiliatesReferrerTokenFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31288,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31287,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 31352,
                        "src": "13686:16:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31286,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13686:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13685:18:126"
                  },
                  "returnParameters": {
                    "id": 31291,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13727:0:126"
                  },
                  "scope": 31550,
                  "src": "13638:592:126",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 31373,
                    "nodeType": "Block",
                    "src": "14518:114:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 31364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "14522:50:126",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 31359,
                                "name": "affiliatesReferrerBalances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4790,
                                "src": "14529:26:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 31361,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 31360,
                                "name": "referrer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31354,
                                "src": "14556:8:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14529:36:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 31363,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 31362,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31356,
                              "src": "14566:5:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "14529:43:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31365,
                        "nodeType": "ExpressionStatement",
                        "src": "14522:50:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 31370,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31356,
                              "src": "14622:5:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 31366,
                                "name": "affiliatesReferrerTokensList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4784,
                                "src": "14576:28:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$26428_storage_$",
                                  "typeString": "mapping(address => struct EnumerableAddressSet.AddressSet storage ref)"
                                }
                              },
                              "id": 31368,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 31367,
                                "name": "referrer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31354,
                                "src": "14605:8:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14576:38:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$26428_storage",
                                "typeString": "struct EnumerableAddressSet.AddressSet storage ref"
                              }
                            },
                            "id": 31369,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "remove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 26543,
                            "src": "14576:45:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$26428_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$26428_storage_ptr_$",
                              "typeString": "function (struct EnumerableAddressSet.AddressSet storage pointer,address) returns (bool)"
                            }
                          },
                          "id": 31371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14576:52:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 31372,
                        "nodeType": "ExpressionStatement",
                        "src": "14576:52:126"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to delete a referrer's token balance.\n@param referrer The address of the referrer.\n@param token The address of the token specifying the balance to remove.",
                  "id": 31374,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_removeAffiliatesReferrerToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31354,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 31374,
                        "src": "14476:16:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31353,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14476:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31356,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 31374,
                        "src": "14494:13:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31355,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14494:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14475:33:126"
                  },
                  "returnParameters": {
                    "id": 31358,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14518:0:126"
                  },
                  "scope": 31550,
                  "src": "14436:196:126",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31427,
                    "nodeType": "Block",
                    "src": "15049:353:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 31389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 31385,
                            "name": "referrerTokensList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31380,
                            "src": "15053:18:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 31387,
                                "name": "referrer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31376,
                                "src": "15106:8:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 31386,
                              "name": "getAffiliatesReferrerTokensList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31509,
                              "src": "15074:31:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (address) view returns (address[] memory)"
                              }
                            },
                            "id": 31388,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15074:41:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "15053:62:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 31390,
                        "nodeType": "ExpressionStatement",
                        "src": "15053:62:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 31398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 31391,
                            "name": "referrerTokensBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31383,
                            "src": "15119:22:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31395,
                                  "name": "referrerTokensList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31380,
                                  "src": "15158:18:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 31396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15158:25:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 31394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "15144:13:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 31392,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "15148:7:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 31393,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "15148:9:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                  "typeString": "uint256[]"
                                }
                              }
                            },
                            "id": 31397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15144:40:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "15119:65:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 31399,
                        "nodeType": "ExpressionStatement",
                        "src": "15119:65:126"
                      },
                      {
                        "body": {
                          "id": 31421,
                          "nodeType": "Block",
                          "src": "15240:104:126",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 31419,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 31410,
                                    "name": "referrerTokensBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31383,
                                    "src": "15245:22:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 31412,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 31411,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31401,
                                    "src": "15268:1:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "15245:25:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 31414,
                                      "name": "referrer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31376,
                                      "src": "15307:8:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 31415,
                                        "name": "referrerTokensList",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31380,
                                        "src": "15317:18:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 31417,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 31416,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31401,
                                        "src": "15336:1:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "15317:21:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 31413,
                                    "name": "getAffiliatesReferrerTokenBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31525,
                                    "src": "15273:33:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address,address) view returns (uint256)"
                                    }
                                  },
                                  "id": 31418,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15273:66:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15245:94:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 31420,
                              "nodeType": "ExpressionStatement",
                              "src": "15245:94:126"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 31403,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31401,
                            "src": "15204:1:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31404,
                              "name": "referrerTokensList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31380,
                              "src": "15208:18:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 31405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15208:25:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15204:29:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 31422,
                        "initializationExpression": {
                          "assignments": [
                            31401
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 31401,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 31422,
                              "src": "15193:9:126",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 31400,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15193:7:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 31402,
                          "initialValue": null,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15193:9:126"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 31408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "15235:3:126",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 31407,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31401,
                              "src": "15235:1:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 31409,
                          "nodeType": "ExpressionStatement",
                          "src": "15235:3:126"
                        },
                        "nodeType": "ForStatement",
                        "src": "15188:156:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 31423,
                              "name": "referrerTokensList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31380,
                              "src": "15355:18:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31424,
                              "name": "referrerTokensBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31383,
                              "src": "15375:22:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 31425,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "15354:44:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address[] memory,uint256[] memory)"
                          }
                        },
                        "functionReturnParameters": 31384,
                        "id": 31426,
                        "nodeType": "Return",
                        "src": "15347:51:126"
                      }
                    ]
                  },
                  "documentation": "@notice Get all token balances of a referrer.\n@param referrer The address of the referrer.\n@return referrerTokensList The array of available tokens (keys).\n@return referrerTokensBalances The array of token balances (values).",
                  "id": 31428,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliatesReferrerBalances",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31377,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31376,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 31428,
                        "src": "14925:16:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31375,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14925:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14924:18:126"
                  },
                  "returnParameters": {
                    "id": 31384,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31380,
                        "name": "referrerTokensList",
                        "nodeType": "VariableDeclaration",
                        "scope": 31428,
                        "src": "14970:35:126",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 31378,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "14970:7:126",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 31379,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "14970:9:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31383,
                        "name": "referrerTokensBalances",
                        "nodeType": "VariableDeclaration",
                        "scope": 31428,
                        "src": "15007:39:126",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 31381,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "15007:7:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 31382,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "15007:9:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14969:78:126"
                  },
                  "scope": 31550,
                  "src": "14886:516:126",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 31489,
                    "nodeType": "Block",
                    "src": "15675:656:126",
                    "statements": [
                      {
                        "assignments": [
                          31438
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31438,
                            "name": "tokensList",
                            "nodeType": "VariableDeclaration",
                            "scope": 31489,
                            "src": "15679:27:126",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 31436,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "15679:7:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 31437,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "15679:9:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31442,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 31440,
                              "name": "referrer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31430,
                              "src": "15741:8:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 31439,
                            "name": "getAffiliatesReferrerTokensList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31509,
                            "src": "15709:31:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (address) view returns (address[] memory)"
                            }
                          },
                          "id": 31441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15709:41:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15679:71:126"
                      },
                      {
                        "assignments": [
                          31444
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31444,
                            "name": "_priceFeeds",
                            "nodeType": "VariableDeclaration",
                            "scope": 31489,
                            "src": "15754:19:126",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 31443,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "15754:7:126",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31446,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 31445,
                          "name": "priceFeeds",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4575,
                          "src": "15776:10:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15754:32:126"
                      },
                      {
                        "body": {
                          "id": 31487,
                          "nodeType": "Block",
                          "src": "15835:493:126",
                          "statements": [
                            {
                              "assignments": [
                                31458,
                                31460
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31458,
                                  "name": "success",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 31487,
                                  "src": "15884:12:126",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 31457,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15884:4:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 31460,
                                  "name": "data",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 31487,
                                  "src": "15898:17:126",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 31459,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15898:5:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31485,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 31466,
                                                "name": "_priceFeeds",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 31444,
                                                "src": "15994:11:126",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 31465,
                                              "name": "IPriceFeeds",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8707,
                                              "src": "15982:11:126",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                                "typeString": "type(contract IPriceFeeds)"
                                              }
                                            },
                                            "id": 31467,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "15982:24:126",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                              "typeString": "contract IPriceFeeds"
                                            }
                                          },
                                          "id": 31468,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "queryReturn",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8615,
                                          "src": "15982:36:126",
                                          "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": 31469,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "selector",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "15982:45:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 31470,
                                          "name": "tokensList",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31438,
                                          "src": "16035:10:126",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 31472,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 31471,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31448,
                                          "src": "16046:1:126",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "16035:13:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 31474,
                                            "name": "wrbtcToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4737,
                                            "src": "16080:10:126",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                              "typeString": "contract IWrbtcERC20"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                              "typeString": "contract IWrbtcERC20"
                                            }
                                          ],
                                          "id": 31473,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "16072:7:126",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 31475,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "16072:19:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 31476,
                                            "name": "affiliatesReferrerBalances",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4790,
                                            "src": "16119:26:126",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                              "typeString": "mapping(address => mapping(address => uint256))"
                                            }
                                          },
                                          "id": 31478,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 31477,
                                            "name": "referrer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31430,
                                            "src": "16146:8:126",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "16119:36:126",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 31482,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 31479,
                                            "name": "tokensList",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31438,
                                            "src": "16156:10:126",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                              "typeString": "address[] memory"
                                            }
                                          },
                                          "id": 31481,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 31480,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31448,
                                            "src": "16167:1:126",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "16156:13:126",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "16119:51:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 31463,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44981,
                                        "src": "15952:3:126",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 31464,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSelector",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "15952:22:126",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes4) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 31483,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15952:248:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 31461,
                                    "name": "_priceFeeds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31444,
                                    "src": "15923:11:126",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 31462,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "staticcall",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "15923:22:126",
                                  "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": 31484,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15923:283:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15883:323:126"
                            },
                            {
                              "externalReferences": [
                                {
                                  "rbtcTotalAmount": {
                                    "declaration": 31433,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "16252:15:126",
                                    "valueSize": 1
                                  }
                                },
                                {
                                  "data": {
                                    "declaration": 31460,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "16302:4:126",
                                    "valueSize": 1
                                  }
                                },
                                {
                                  "rbtcTotalAmount": {
                                    "declaration": 31433,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "16275:15:126",
                                    "valueSize": 1
                                  }
                                },
                                {
                                  "success": {
                                    "declaration": 31458,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "16233:7:126",
                                    "valueSize": 1
                                  }
                                }
                              ],
                              "id": 31486,
                              "nodeType": "InlineAssembly",
                              "operations": "{\n    if eq(success, 1)\n    {\n        rbtcTotalAmount := add(rbtcTotalAmount, mload(add(data, 32)))\n    }\n}",
                              "src": "16212:112:126"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 31450,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31448,
                            "src": "15807:1:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31451,
                              "name": "tokensList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31438,
                              "src": "15811:10:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 31452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15811:17:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15807:21:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 31488,
                        "initializationExpression": {
                          "assignments": [
                            31448
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 31448,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 31488,
                              "src": "15796:9:126",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 31447,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15796:7:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 31449,
                          "initialValue": null,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15796:9:126"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 31455,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "15830:3:126",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 31454,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31448,
                              "src": "15830:1:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 31456,
                          "nodeType": "ExpressionStatement",
                          "src": "15830:3:126"
                        },
                        "nodeType": "ForStatement",
                        "src": "15791:537:126"
                      }
                    ]
                  },
                  "documentation": "@dev Get all token rewards estimation value in rbtc.\n\t * @param referrer Address of referrer.\n\t * @return The value estimation in rbtc.",
                  "id": 31490,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliatesTokenRewardsValueInRbtc",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31431,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31430,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 31490,
                        "src": "15609:16:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31429,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15609:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15608:18:126"
                  },
                  "returnParameters": {
                    "id": 31434,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31433,
                        "name": "rbtcTotalAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 31490,
                        "src": "15650:23:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31432,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15650:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15649:25:126"
                  },
                  "scope": 31550,
                  "src": "15563:768:126",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 31508,
                    "nodeType": "Block",
                    "src": "16644:92:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 31504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 31498,
                            "name": "tokensList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31496,
                            "src": "16648:10:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 31499,
                                  "name": "affiliatesReferrerTokensList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4784,
                                  "src": "16661:28:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$26428_storage_$",
                                    "typeString": "mapping(address => struct EnumerableAddressSet.AddressSet storage ref)"
                                  }
                                },
                                "id": 31501,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 31500,
                                  "name": "referrer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31492,
                                  "src": "16690:8:126",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16661:38:126",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AddressSet_$26428_storage",
                                  "typeString": "struct EnumerableAddressSet.AddressSet storage ref"
                                }
                              },
                              "id": 31502,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "enumerate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26605,
                              "src": "16661:48:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$26428_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$bound_to$_t_struct$_AddressSet_$26428_storage_ptr_$",
                                "typeString": "function (struct EnumerableAddressSet.AddressSet storage pointer) view returns (address[] memory)"
                              }
                            },
                            "id": 31503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16661:50:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "16648:63:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 31505,
                        "nodeType": "ExpressionStatement",
                        "src": "16648:63:126"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 31506,
                          "name": "tokensList",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31496,
                          "src": "16722:10:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 31497,
                        "id": 31507,
                        "nodeType": "Return",
                        "src": "16715:17:126"
                      }
                    ]
                  },
                  "documentation": "@notice Get all available tokens at the affiliates program for a given referrer.\n@param referrer The address of a given referrer.\n@return tokensList The list of available tokens.",
                  "id": 31509,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliatesReferrerTokensList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31493,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31492,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 31509,
                        "src": "16576:16:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31491,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16576:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16575:18:126"
                  },
                  "returnParameters": {
                    "id": 31497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31496,
                        "name": "tokensList",
                        "nodeType": "VariableDeclaration",
                        "scope": 31509,
                        "src": "16615:27:126",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 31494,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "16615:7:126",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 31495,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "16615:9:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16614:29:126"
                  },
                  "scope": 31550,
                  "src": "16535:201:126",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 31524,
                    "nodeType": "Block",
                    "src": "17133:58:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 31518,
                              "name": "affiliatesReferrerBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4790,
                              "src": "17144:26:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 31520,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 31519,
                              "name": "referrer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31511,
                              "src": "17171:8:126",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17144:36:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 31522,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 31521,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31513,
                            "src": "17181:5:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17144:43:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 31517,
                        "id": 31523,
                        "nodeType": "Return",
                        "src": "17137:50:126"
                      }
                    ]
                  },
                  "documentation": "@notice Getter to query the affiliate balance for a given referrer and token.\n@param referrer The address of the referrer.\n@param token The address of the token to get balance for.\n@return The affiliatesReferrerBalances mapping value by referrer and token keys.",
                  "id": 31525,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliatesReferrerTokenBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31514,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31511,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 31525,
                        "src": "17070:16:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31510,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17070:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31513,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 31525,
                        "src": "17088:13:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31512,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17088:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17069:33:126"
                  },
                  "returnParameters": {
                    "id": 31517,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31516,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 31525,
                        "src": "17124:7:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31515,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17124:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17123:9:126"
                  },
                  "scope": 31550,
                  "src": "17027:164:126",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 31536,
                    "nodeType": "Block",
                    "src": "17471:43:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 31532,
                            "name": "affiliatesUserReferrer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4758,
                            "src": "17482:22:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                              "typeString": "mapping(address => address)"
                            }
                          },
                          "id": 31534,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 31533,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31527,
                            "src": "17505:4:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17482:28:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 31531,
                        "id": 31535,
                        "nodeType": "Return",
                        "src": "17475:35:126"
                      }
                    ]
                  },
                  "documentation": "@notice Getter to query the address of referrer for a given user.\n@param user The address of the user.\n@return The address on affiliatesUserReferrer mapping value by user key.",
                  "id": 31537,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliatesUserReferrer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31528,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31527,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 31537,
                        "src": "17427:12:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31526,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17427:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17426:14:126"
                  },
                  "returnParameters": {
                    "id": 31531,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31530,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 31537,
                        "src": "17462:7:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31529,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17462:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17461:9:126"
                  },
                  "scope": 31550,
                  "src": "17392:122:126",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 31548,
                    "nodeType": "Block",
                    "src": "17798:45:126",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 31544,
                            "name": "affiliateRewardsHeld",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4769,
                            "src": "17809:20:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 31546,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 31545,
                            "name": "referrer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31539,
                            "src": "17830:8:126",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17809:30:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 31543,
                        "id": 31547,
                        "nodeType": "Return",
                        "src": "17802:37:126"
                      }
                    ]
                  },
                  "documentation": "@notice Getter to query the reward amount held for a given referrer.\n@param referrer The address of the referrer.\n@return The affiliateRewardsHeld mapping value by referrer key.",
                  "id": 31549,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAffiliateRewardsHeld",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31540,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31539,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 31549,
                        "src": "17750:16:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31538,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17750:7:126",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17749:18:126"
                  },
                  "returnParameters": {
                    "id": 31543,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31542,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 31549,
                        "src": "17789:7:126",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31541,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17789:7:126",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17788:9:126"
                  },
                  "scope": 31550,
                  "src": "17717:126:126",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 31551,
              "src": "764:17081:126"
            }
          ],
          "src": "113:17733:126"
        },
        "id": 126
      },
      "contracts/modules/LoanClosingsBase.sol": {
        "ast": {
          "absolutePath": "contracts/modules/LoanClosingsBase.sol",
          "exportedSymbols": {
            "LoanClosingsBase": [
              33026
            ]
          },
          "id": 33027,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 31552,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:127"
            },
            {
              "id": 31553,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "142:33:127"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 31554,
              "nodeType": "ImportDirective",
              "scope": 33027,
              "sourceUnit": 4842,
              "src": "177:27:127",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/LoanClosingsEvents.sol",
              "file": "../events/LoanClosingsEvents.sol",
              "id": 31555,
              "nodeType": "ImportDirective",
              "scope": 33027,
              "sourceUnit": 5915,
              "src": "205:42:127",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/VaultController.sol",
              "file": "../mixins/VaultController.sol",
              "id": 31556,
              "nodeType": "ImportDirective",
              "scope": 33027,
              "sourceUnit": 28215,
              "src": "248:39:127",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/InterestUser.sol",
              "file": "../mixins/InterestUser.sol",
              "id": 31557,
              "nodeType": "ImportDirective",
              "scope": 33027,
              "sourceUnit": 27664,
              "src": "288:36:127",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/LiquidationHelper.sol",
              "file": "../mixins/LiquidationHelper.sol",
              "id": 31558,
              "nodeType": "ImportDirective",
              "scope": 33027,
              "sourceUnit": 27817,
              "src": "325:41:127",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/swaps/SwapsUser.sol",
              "file": "../swaps/SwapsUser.sol",
              "id": 31559,
              "nodeType": "ImportDirective",
              "scope": 33027,
              "sourceUnit": 43250,
              "src": "367:32:127",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILoanPool.sol",
              "file": "../interfaces/ILoanPool.sol",
              "id": 31560,
              "nodeType": "ImportDirective",
              "scope": 33027,
              "sourceUnit": 24718,
              "src": "400:37:127",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/RewardHelper.sol",
              "file": "../mixins/RewardHelper.sol",
              "id": 31561,
              "nodeType": "ImportDirective",
              "scope": 33027,
              "sourceUnit": 27962,
              "src": "438:36:127",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/ModuleCommonFunctionalities.sol",
              "file": "../mixins/ModuleCommonFunctionalities.sol",
              "id": 31562,
              "nodeType": "ImportDirective",
              "scope": 33027,
              "sourceUnit": 27833,
              "src": "475:51:127",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 31563,
                    "name": "LoanClosingsEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5914,
                    "src": "794:18:127",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanClosingsEvents_$5914",
                      "typeString": "contract LoanClosingsEvents"
                    }
                  },
                  "id": 31564,
                  "nodeType": "InheritanceSpecifier",
                  "src": "794:18:127"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 31565,
                    "name": "VaultController",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28214,
                    "src": "815:15:127",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VaultController_$28214",
                      "typeString": "contract VaultController"
                    }
                  },
                  "id": 31566,
                  "nodeType": "InheritanceSpecifier",
                  "src": "815:15:127"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 31567,
                    "name": "InterestUser",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27663,
                    "src": "833:12:127",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_InterestUser_$27663",
                      "typeString": "contract InterestUser"
                    }
                  },
                  "id": 31568,
                  "nodeType": "InheritanceSpecifier",
                  "src": "833:12:127"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 31569,
                    "name": "SwapsUser",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 43249,
                    "src": "848:9:127",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SwapsUser_$43249",
                      "typeString": "contract SwapsUser"
                    }
                  },
                  "id": 31570,
                  "nodeType": "InheritanceSpecifier",
                  "src": "848:9:127"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 31571,
                    "name": "LiquidationHelper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27816,
                    "src": "860:17:127",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LiquidationHelper_$27816",
                      "typeString": "contract LiquidationHelper"
                    }
                  },
                  "id": 31572,
                  "nodeType": "InheritanceSpecifier",
                  "src": "860:17:127"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 31573,
                    "name": "RewardHelper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27961,
                    "src": "880:12:127",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_RewardHelper_$27961",
                      "typeString": "contract RewardHelper"
                    }
                  },
                  "id": 31574,
                  "nodeType": "InheritanceSpecifier",
                  "src": "880:12:127"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 31575,
                    "name": "ModuleCommonFunctionalities",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27832,
                    "src": "895:27:127",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModuleCommonFunctionalities_$27832",
                      "typeString": "contract ModuleCommonFunctionalities"
                    }
                  },
                  "id": 31576,
                  "nodeType": "InheritanceSpecifier",
                  "src": "895:27:127"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                5832,
                5914,
                6055,
                6341,
                27492,
                27663,
                27816,
                27832,
                27961,
                28214,
                41125,
                41798,
                41829,
                43249
              ],
              "contractKind": "contract",
              "documentation": "@title LoanClosingsBase contract.\n@notice Ways to close a loan: liquidation, rollover. Margin trade\n  positions are always closed with a swap.\n * Loans are liquidated if the position goes below margin maintenance.\n",
              "fullyImplemented": true,
              "id": 33026,
              "linearizedBaseContracts": [
                33026,
                27832,
                27961,
                27816,
                43249,
                27663,
                27492,
                5832,
                6341,
                28214,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913,
                5914,
                6055
              ],
              "name": "LoanClosingsBase",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 31581,
                  "name": "MONTH",
                  "nodeType": "VariableDeclaration",
                  "scope": 33026,
                  "src": "926:47:127",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 31577,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "926:7:127",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_2628000_by_1",
                      "typeString": "int_const 2628000"
                    },
                    "id": 31580,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "333635",
                      "id": 31578,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "960:8:127",
                      "subdenomination": "days",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_31536000_by_1",
                        "typeString": "int_const 31536000"
                      },
                      "value": "365"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3132",
                      "id": 31579,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "971:2:127",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_12_by_1",
                        "typeString": "int_const 12"
                      },
                      "value": "12"
                    },
                    "src": "960:13:127",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2628000_by_1",
                      "typeString": "int_const 2628000"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 31584,
                  "name": "paySwapExcessToBorrowerThreshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 33026,
                  "src": "1173:73:127",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 31582,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1173:7:127",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3130303030303030303030303030",
                    "id": 31583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1232:14:127",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10000000000000_by_1",
                      "typeString": "int_const 10000000000000"
                    },
                    "value": "10000000000000"
                  },
                  "visibility": "public"
                },
                {
                  "canonicalName": "LoanClosingsBase.CloseTypes",
                  "id": 31588,
                  "members": [
                    {
                      "id": 31585,
                      "name": "Deposit",
                      "nodeType": "EnumValue",
                      "src": "1268:7:127"
                    },
                    {
                      "id": 31586,
                      "name": "Swap",
                      "nodeType": "EnumValue",
                      "src": "1277:4:127"
                    },
                    {
                      "id": 31587,
                      "name": "Liquidation",
                      "nodeType": "EnumValue",
                      "src": "1283:11:127"
                    }
                  ],
                  "name": "CloseTypes",
                  "nodeType": "EnumDefinition",
                  "src": "1250:46:127"
                },
                {
                  "body": {
                    "id": 31591,
                    "nodeType": "Block",
                    "src": "1320:2:127",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 31592,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31589,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1310:2:127"
                  },
                  "returnParameters": {
                    "id": 31590,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1320:0:127"
                  },
                  "scope": 33026,
                  "src": "1299:23:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 31599,
                    "nodeType": "Block",
                    "src": "1345:38:127",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c6c6261636b206e6f7420616c6c6f776564",
                              "id": 31596,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1356:22:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ad2d1476e23c49655ed3d169418af7587abbe0f378f28c369338d50deee2f5b0",
                                "typeString": "literal_string \"fallback not allowed\""
                              },
                              "value": "fallback not allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_ad2d1476e23c49655ed3d169418af7587abbe0f378f28c369338d50deee2f5b0",
                                "typeString": "literal_string \"fallback not allowed\""
                              }
                            ],
                            "id": 31595,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44999,
                              45000
                            ],
                            "referencedDeclaration": 45000,
                            "src": "1349:6:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 31597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1349:30:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31598,
                        "nodeType": "ExpressionStatement",
                        "src": "1349:30:127"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 31600,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31593,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1333:2:127"
                  },
                  "returnParameters": {
                    "id": 31594,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1345:0:127"
                  },
                  "scope": 33026,
                  "src": "1325:58:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 31635,
                    "nodeType": "Block",
                    "src": "1441:268:127",
                    "statements": [
                      {
                        "assignments": [
                          31608
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31608,
                            "name": "prevModuleContractAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 31635,
                            "src": "1445:33:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 31607,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1445:7:127",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31614,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 31609,
                            "name": "logicTargets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4583,
                            "src": "1481:12:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                              "typeString": "mapping(bytes4 => address)"
                            }
                          },
                          "id": 31613,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31610,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45324,
                                "src": "1494:4:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_LoanClosingsBase_$33026",
                                  "typeString": "contract LoanClosingsBase"
                                }
                              },
                              "id": 31611,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 31662,
                              "src": "1494:14:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                                "typeString": "function (bytes32,address,uint256) payable external returns (uint256,uint256,address)"
                              }
                            },
                            "id": 31612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1494:23:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1481:37:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1445:73:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31616,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45324,
                                  "src": "1533:4:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanClosingsBase_$33026",
                                    "typeString": "contract LoanClosingsBase"
                                  }
                                },
                                "id": 31617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31662,
                                "src": "1533:14:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "function (bytes32,address,uint256) payable external returns (uint256,uint256,address)"
                                }
                              },
                              "id": 31618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1533:23:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31619,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31602,
                              "src": "1558:6:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 31615,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1522:10:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 31620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1522:43:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31621,
                        "nodeType": "ExpressionStatement",
                        "src": "1522:43:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31623,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45324,
                                  "src": "1580:4:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanClosingsBase_$33026",
                                    "typeString": "contract LoanClosingsBase"
                                  }
                                },
                                "id": 31624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rollover",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31688,
                                "src": "1580:13:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (bytes32,bytes memory) external"
                                }
                              },
                              "id": 31625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1580:22:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31626,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31602,
                              "src": "1604:6:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 31622,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1569:10:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 31627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1569:42:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31628,
                        "nodeType": "ExpressionStatement",
                        "src": "1569:42:127"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 31630,
                              "name": "prevModuleContractAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31608,
                              "src": "1651:25:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31631,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31602,
                              "src": "1678:6:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4c6f616e436c6f73696e677342617365",
                              "id": 31632,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1686:18:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b3ec32c46e91596ad1d425a9f1fa396bfe8405b0f6f0cdd8990fe6fbdd7f2dbb",
                                "typeString": "literal_string \"LoanClosingsBase\""
                              },
                              "value": "LoanClosingsBase"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b3ec32c46e91596ad1d425a9f1fa396bfe8405b0f6f0cdd8990fe6fbdd7f2dbb",
                                "typeString": "literal_string \"LoanClosingsBase\""
                              }
                            ],
                            "id": 31629,
                            "name": "ProtocolModuleContractReplaced",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6054,
                            "src": "1620:30:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32)"
                            }
                          },
                          "id": 31633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1620:85:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31634,
                        "nodeType": "EmitStatement",
                        "src": "1615:90:127"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 31636,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 31605,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 31604,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1431:9:127",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1431:9:127"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31603,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31602,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 31636,
                        "src": "1406:14:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31601,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1406:7:127",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1405:16:127"
                  },
                  "returnParameters": {
                    "id": 31606,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1441:0:127"
                  },
                  "scope": 33026,
                  "src": "1386:323:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 31661,
                    "nodeType": "Block",
                    "src": "3042:56:127",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 31656,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31638,
                              "src": "3064:6:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31657,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31640,
                              "src": "3072:8:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31658,
                              "name": "closeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31642,
                              "src": "3082:11:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 31655,
                            "name": "_liquidate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31905,
                            "src": "3053:10:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                              "typeString": "function (bytes32,address,uint256) returns (uint256,uint256,address)"
                            }
                          },
                          "id": 31659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3053:41:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                            "typeString": "tuple(uint256,uint256,address)"
                          }
                        },
                        "functionReturnParameters": 31654,
                        "id": 31660,
                        "nodeType": "Return",
                        "src": "3046:48:127"
                      }
                    ]
                  },
                  "documentation": "@notice Liquidate an unhealty loan.\n\t * @dev Public wrapper for _liquidate internal function.\n\t * The caller needs to approve the closeAmount prior to calling. Will\nnot liquidate more than is needed to restore the desired margin\n(maintenance +5%).\n\t * Whenever the current margin of a loan falls below maintenance margin,\nit needs to be liquidated. Anybody can initiate a liquidation and buy\nthe collateral tokens at a discounted rate (5%).\n\t * @param loanId The ID of the loan to liquidate.\n  loanId is the ID of the loan, which is created on loan opening.\n  It can be obtained either by parsing the Trade event or by reading\n  the open loans from the contract by calling getActiveLoans or getUserLoans.\n@param receiver The receiver of the seized amount.\n@param closeAmount The amount to close in loanTokens.\n\t * @return loanCloseAmount The amount of the collateral token of the loan.\n@return seizedAmount The seized amount in the collateral token.\n@return seizedToken The loan token address.\n",
                  "id": 31662,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 31645,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 31644,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "2920:12:127",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2920:12:127"
                    },
                    {
                      "arguments": null,
                      "id": 31647,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 31646,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "2935:13:127",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2935:13:127"
                    }
                  ],
                  "name": "liquidate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31638,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 31662,
                        "src": "2808:14:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 31637,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2808:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31640,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 31662,
                        "src": "2826:16:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31639,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2826:7:127",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31642,
                        "name": "closeAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 31662,
                        "src": "2846:19:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31641,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2846:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2804:92:127"
                  },
                  "returnParameters": {
                    "id": 31654,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31649,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 31662,
                        "src": "2964:23:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31648,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2964:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31651,
                        "name": "seizedAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 31662,
                        "src": "2992:20:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31650,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2992:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31653,
                        "name": "seizedToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 31662,
                        "src": "3017:19:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31652,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3017:7:127",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2959:81:127"
                  },
                  "scope": 33026,
                  "src": "2786:312:127",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 31687,
                    "nodeType": "Block",
                    "src": "4312:214:127",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 31678,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31674,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "4410:3:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 31675,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4410:10:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31676,
                                  "name": "tx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45006,
                                  "src": "4424:2:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_transaction",
                                    "typeString": "tx"
                                  }
                                },
                                "id": 31677,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "origin",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4424:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4410:23:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6f6e6c7920454f41732063616e2063616c6c",
                              "id": 31679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4435:20:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6bd31d4d31221c914948f4e8f24f33f1abfb7ffaba33a8656a0d4b73af900c67",
                                "typeString": "literal_string \"only EOAs can call\""
                              },
                              "value": "only EOAs can call"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6bd31d4d31221c914948f4e8f24f33f1abfb7ffaba33a8656a0d4b73af900c67",
                                "typeString": "literal_string \"only EOAs can call\""
                              }
                            ],
                            "id": 31673,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4402:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4402:54:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31681,
                        "nodeType": "ExpressionStatement",
                        "src": "4402:54:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 31683,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31664,
                              "src": "4486:6:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 31684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4498:2:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 31682,
                            "name": "_rollover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32341,
                            "src": "4471:9:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes memory)"
                            }
                          },
                          "id": 31685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4471:51:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "functionReturnParameters": 31672,
                        "id": 31686,
                        "nodeType": "Return",
                        "src": "4461:61:127"
                      }
                    ]
                  },
                  "documentation": "@notice Roll over a loan.\n\t * @dev Public wrapper for _rollover internal function.\n\t * Each loan has a duration. In case of a margin trade it is set to 28\ndays, in case of borrowing, it can be set by the user. On loan\nopenning, the user pays the interest for this duration in advance.\nIf closing early, he gets the excess refunded. If it is not closed\nbefore the end date, it needs to be rolled over. On rollover the\ninterest is paid for the next period. In case of margin trading\nit's 28 days, in case of borrowing it's a month.\n\t * The function rollover on the protocol contract extends the loan\nduration by the maximum term (28 days for margin trades at the moment\nof writing), pays the interest to the lender and refunds the caller\nfor the gas cost by sending 2 * the gas cost using the fast gas price\nas base for the calculation.\n\t * @param loanId The ID of the loan to roll over.\n// param calldata The payload for the call. These loan DataBytes are additional loan data (not in use for token swaps).\n",
                  "id": 31688,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 31669,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 31668,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "4285:12:127",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4285:12:127"
                    },
                    {
                      "arguments": null,
                      "id": 31671,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 31670,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "4298:13:127",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4298:13:127"
                    }
                  ],
                  "name": "rollover",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31667,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31664,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 31688,
                        "src": "4204:14:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 31663,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4204:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31666,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 31688,
                        "src": "4222:14:127",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 31665,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4222:5:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4200:75:127"
                  },
                  "returnParameters": {
                    "id": 31672,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4312:0:127"
                  },
                  "scope": 33026,
                  "src": "4183:343:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 31904,
                    "nodeType": "Block",
                    "src": "5529:2521:127",
                    "statements": [
                      {
                        "assignments": [
                          31704
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31704,
                            "name": "loanLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 31904,
                            "src": "5533:22:127",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                              "typeString": "struct LoanStruct.Loan"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 31703,
                              "name": "Loan",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4912,
                              "src": "5533:4:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31708,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 31705,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4587,
                            "src": "5558:5:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                            }
                          },
                          "id": 31707,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 31706,
                            "name": "loanId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31690,
                            "src": "5564:6:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5558:13:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage",
                            "typeString": "struct LoanStruct.Loan storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5533:38:127"
                      },
                      {
                        "assignments": [
                          31710
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31710,
                            "name": "loanParamsLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 31904,
                            "src": "5575:34:127",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 31709,
                              "name": "LoanParams",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4884,
                              "src": "5575:10:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31715,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 31711,
                            "name": "loanParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4591,
                            "src": "5612:10:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                            }
                          },
                          "id": 31714,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31712,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31704,
                              "src": "5623:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 31713,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanParamsId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4891,
                            "src": "5623:22:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5612:34:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                            "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5575:71:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31717,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31704,
                                "src": "5659:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 31718,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "active",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4895,
                              "src": "5659:16:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e20697320636c6f736564",
                              "id": 31719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5677:16:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              },
                              "value": "loan is closed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              }
                            ],
                            "id": 31716,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5651:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5651:43:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31721,
                        "nodeType": "ExpressionStatement",
                        "src": "5651:43:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 31726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31723,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31710,
                                  "src": "5706:15:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                  }
                                },
                                "id": 31724,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4869,
                                "src": "5706:18:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 31725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5728:1:127",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5706:23:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e506172616d73206e6f7420657869737473",
                              "id": 31727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5731:23:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a3a351ffb3aff816f1d84605072e229d1a4a2e9f6fc60ffe610fb65286941553",
                                "typeString": "literal_string \"loanParams not exists\""
                              },
                              "value": "loanParams not exists"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a3a351ffb3aff816f1d84605072e229d1a4a2e9f6fc60ffe610fb65286941553",
                                "typeString": "literal_string \"loanParams not exists\""
                              }
                            ],
                            "id": 31722,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5698:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5698:57:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31729,
                        "nodeType": "ExpressionStatement",
                        "src": "5698:57:127"
                      },
                      {
                        "assignments": [
                          31731,
                          31733
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31731,
                            "name": "currentMargin",
                            "nodeType": "VariableDeclaration",
                            "scope": 31904,
                            "src": "5761:21:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31730,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5761:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 31733,
                            "name": "collateralToLoanRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 31904,
                            "src": "5784:28:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31732,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5784:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31747,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31738,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31710,
                                "src": "5865:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 31739,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "5865:25:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31740,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31710,
                                "src": "5896:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 31741,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "5896:31:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31742,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31704,
                                "src": "5933:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 31743,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "principal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4897,
                              "src": "5933:19:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31744,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31704,
                                "src": "5958:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 31745,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4899,
                              "src": "5958:20:127",
                              "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_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 31735,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "5831:10:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 31734,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "5819:11:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 31736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5819:23:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 31737,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getCurrentMargin",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8684,
                            "src": "5819:40:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256) view external returns (uint256,uint256)"
                            }
                          },
                          "id": 31746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5819:164:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5760:223:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 31752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 31749,
                                "name": "currentMargin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31731,
                                "src": "5995:13:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31750,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31710,
                                  "src": "6012:15:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                  }
                                },
                                "id": 31751,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maintenanceMargin",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4881,
                                "src": "6012:33:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5995:50:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6865616c74687920706f736974696f6e",
                              "id": 31753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6047:18:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_64eb05b4b3417141dd6c83e8d7f986ed194115f98f87ef0b2da14e442c64a03e",
                                "typeString": "literal_string \"healthy position\""
                              },
                              "value": "healthy position"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_64eb05b4b3417141dd6c83e8d7f986ed194115f98f87ef0b2da14e442c64a03e",
                                "typeString": "literal_string \"healthy position\""
                              }
                            ],
                            "id": 31748,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5987:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5987:79:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31755,
                        "nodeType": "ExpressionStatement",
                        "src": "5987:79:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 31758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 31756,
                            "name": "loanCloseAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31697,
                            "src": "6071:15:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 31757,
                            "name": "closeAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31694,
                            "src": "6089:11:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6071:29:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 31759,
                        "nodeType": "ExpressionStatement",
                        "src": "6071:29:127"
                      },
                      {
                        "assignments": [
                          31761,
                          31763,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31761,
                            "name": "maxLiquidatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 31904,
                            "src": "6168:23:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31760,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6168:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 31763,
                            "name": "maxSeizable",
                            "nodeType": "VariableDeclaration",
                            "scope": 31904,
                            "src": "6193:19:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31762,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6193:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 31774,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31765,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31704,
                                "src": "6249:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 31766,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "principal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4897,
                              "src": "6249:19:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31767,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31704,
                                "src": "6274:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 31768,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4899,
                              "src": "6274:20:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31769,
                              "name": "currentMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31731,
                              "src": "6300:13:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31770,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31710,
                                "src": "6319:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 31771,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maintenanceMargin",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4881,
                              "src": "6319:33:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31772,
                              "name": "collateralToLoanRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31733,
                              "src": "6358:20:127",
                              "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"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 31764,
                            "name": "_getLiquidationAmounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27815,
                            "src": "6221:22:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256,uint256,uint256) view returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 31773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6221:162:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6167:216:127"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 31775,
                            "name": "loanCloseAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31697,
                            "src": "6392:15:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 31776,
                            "name": "maxLiquidatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31761,
                            "src": "6410:15:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6392:33:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 31791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 31789,
                              "name": "loanCloseAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31697,
                              "src": "6515:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 31790,
                              "name": "maxLiquidatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31761,
                              "src": "6533:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6515:33:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 31805,
                            "nodeType": "Block",
                            "src": "6676:36:127",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31803,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 31801,
                                    "name": "seizedAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31699,
                                    "src": "6681:12:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "id": 31802,
                                    "name": "maxSeizable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31763,
                                    "src": "6696:11:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6681:26:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 31804,
                                "nodeType": "ExpressionStatement",
                                "src": "6681:26:127"
                              }
                            ]
                          },
                          "id": 31806,
                          "nodeType": "IfStatement",
                          "src": "6511:201:127",
                          "trueBody": {
                            "id": 31800,
                            "nodeType": "Block",
                            "src": "6550:120:127",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31794,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 31792,
                                    "name": "loanCloseAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31697,
                                    "src": "6601:15:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "id": 31793,
                                    "name": "maxLiquidatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31761,
                                    "src": "6619:15:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6601:33:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 31795,
                                "nodeType": "ExpressionStatement",
                                "src": "6601:33:127"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31798,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 31796,
                                    "name": "seizedAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31699,
                                    "src": "6639:12:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "id": 31797,
                                    "name": "maxSeizable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31763,
                                    "src": "6654:11:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6639:26:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 31799,
                                "nodeType": "ExpressionStatement",
                                "src": "6639:26:127"
                              }
                            ]
                          }
                        },
                        "id": 31807,
                        "nodeType": "IfStatement",
                        "src": "6388:324:127",
                        "trueBody": {
                          "id": 31788,
                          "nodeType": "Block",
                          "src": "6427:78:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 31786,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 31778,
                                  "name": "seizedAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31699,
                                  "src": "6432:12:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 31784,
                                      "name": "maxLiquidatable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31761,
                                      "src": "6484:15:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 31781,
                                          "name": "loanCloseAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31697,
                                          "src": "6463:15:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 31779,
                                          "name": "maxSeizable",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31763,
                                          "src": "6447:11:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 31780,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "6447:15:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 31782,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6447:32:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 31783,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "6447:36:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 31785,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6447:53:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6432:68:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 31787,
                              "nodeType": "ExpressionStatement",
                              "src": "6432:68:127"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 31811,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 31809,
                                "name": "loanCloseAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31697,
                                "src": "6724:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 31810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6743:1:127",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6724:20:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6e6f7468696e6720746f206c6971756964617465",
                              "id": 31812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6746:22:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7dc93a78e669449369f282e59053d210b20c565344e5f5c02cfb9d4b661a1ff2",
                                "typeString": "literal_string \"nothing to liquidate\""
                              },
                              "value": "nothing to liquidate"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7dc93a78e669449369f282e59053d210b20c565344e5f5c02cfb9d4b661a1ff2",
                                "typeString": "literal_string \"nothing to liquidate\""
                              }
                            ],
                            "id": 31808,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6716:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6716:53:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31814,
                        "nodeType": "ExpressionStatement",
                        "src": "6716:53:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31816,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31710,
                                "src": "6854:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 31817,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "6854:25:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 31819,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45324,
                                  "src": "6889:4:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanClosingsBase_$33026",
                                    "typeString": "contract LoanClosingsBase"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LoanClosingsBase_$33026",
                                    "typeString": "contract LoanClosingsBase"
                                  }
                                ],
                                "id": 31818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6881:7:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 31820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6881:13:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31821,
                              "name": "loanCloseAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31697,
                              "src": "6896:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 31815,
                            "name": "_returnPrincipalWithDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32525,
                            "src": "6826:27:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 31822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6826:86:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31823,
                        "nodeType": "ExpressionStatement",
                        "src": "6826:86:127"
                      },
                      {
                        "assignments": [
                          31825
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31825,
                            "name": "loanCloseAmountLessInterest",
                            "nodeType": "VariableDeclaration",
                            "scope": 31904,
                            "src": "6998:35:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 31824,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6998:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31833,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 31827,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31704,
                              "src": "7063:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31828,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31710,
                              "src": "7074:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31829,
                              "name": "loanCloseAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31697,
                              "src": "7091:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31830,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31704,
                                "src": "7108:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 31831,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "borrower",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4909,
                              "src": "7108:18:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 31826,
                            "name": "_settleInterestToPrincipal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32427,
                            "src": "7036:26:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Loan_$4912_memory_ptr_$_t_struct$_LoanParams_$4884_memory_ptr_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (struct LoanStruct.Loan memory,struct LoanParamsStruct.LoanParams memory,uint256,address) returns (uint256)"
                            }
                          },
                          "id": 31832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7036:91:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6998:129:127"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 31834,
                            "name": "loanCloseAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31697,
                            "src": "7136:15:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 31835,
                            "name": "loanCloseAmountLessInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31825,
                            "src": "7154:27:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7136:45:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31848,
                        "nodeType": "IfStatement",
                        "src": "7132:217:127",
                        "trueBody": {
                          "id": 31847,
                          "nodeType": "Block",
                          "src": "7183:166:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31838,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31710,
                                      "src": "7251:15:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    "id": 31839,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "7251:25:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31840,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31704,
                                      "src": "7278:9:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 31841,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "borrower",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4909,
                                    "src": "7278:18:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 31844,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 31842,
                                      "name": "loanCloseAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31697,
                                      "src": "7298:15:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 31843,
                                      "name": "loanCloseAmountLessInterest",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31825,
                                      "src": "7316:27:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7298:45:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31837,
                                  "name": "_withdrawAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32714,
                                  "src": "7236:14:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 31845,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7236:108:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 31846,
                              "nodeType": "ExpressionStatement",
                              "src": "7236:108:127"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 31849,
                            "name": "loanCloseAmountLessInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31825,
                            "src": "7357:27:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31850,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7388:1:127",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7357:32:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31861,
                        "nodeType": "IfStatement",
                        "src": "7353:278:127",
                        "trueBody": {
                          "id": 31860,
                          "nodeType": "Block",
                          "src": "7391:240:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31853,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31710,
                                      "src": "7553:15:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    "id": 31854,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "7553:25:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31855,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31704,
                                      "src": "7580:9:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 31856,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4911,
                                    "src": "7580:16:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31857,
                                    "name": "loanCloseAmountLessInterest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31825,
                                    "src": "7598:27:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31852,
                                  "name": "vaultWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28128,
                                  "src": "7539:13:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 31858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7539:87:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 31859,
                              "nodeType": "ExpressionStatement",
                              "src": "7539:87:127"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 31865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 31862,
                            "name": "seizedToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31701,
                            "src": "7635:11:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31863,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31710,
                              "src": "7649:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            },
                            "id": 31864,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "collateralToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4877,
                            "src": "7649:31:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7635:45:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 31866,
                        "nodeType": "ExpressionStatement",
                        "src": "7635:45:127"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 31867,
                            "name": "seizedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31699,
                            "src": "7689:12:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31868,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7705:1:127",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7689:17:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31887,
                        "nodeType": "IfStatement",
                        "src": "7685:151:127",
                        "trueBody": {
                          "id": 31886,
                          "nodeType": "Block",
                          "src": "7708:128:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 31878,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 31870,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31704,
                                    "src": "7713:9:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 31872,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "collateral",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4899,
                                  "src": "7713:20:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 31876,
                                      "name": "seizedAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31699,
                                      "src": "7761:12:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 31873,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31704,
                                        "src": "7736:9:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 31874,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "collateral",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4899,
                                      "src": "7736:20:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 31875,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "7736:24:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 31877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7736:38:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7713:61:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 31879,
                              "nodeType": "ExpressionStatement",
                              "src": "7713:61:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 31881,
                                    "name": "seizedToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31701,
                                    "src": "7795:11:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31882,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31692,
                                    "src": "7808:8:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31883,
                                    "name": "seizedAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31699,
                                    "src": "7818:12:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31880,
                                  "name": "_withdrawAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32714,
                                  "src": "7780:14:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 31884,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7780:51:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 31885,
                              "nodeType": "ExpressionStatement",
                              "src": "7780:51:127"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 31889,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31704,
                              "src": "7851:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31890,
                              "name": "loanCloseAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31697,
                              "src": "7862:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 31888,
                            "name": "_closeLoan",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32796,
                            "src": "7840:10:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Loan_$4912_storage_ptr_$_t_uint256_$returns$__$",
                              "typeString": "function (struct LoanStruct.Loan storage pointer,uint256)"
                            }
                          },
                          "id": 31891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7840:38:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31892,
                        "nodeType": "ExpressionStatement",
                        "src": "7840:38:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 31894,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31710,
                              "src": "7906:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31895,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31704,
                              "src": "7926:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31896,
                              "name": "loanCloseAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31697,
                              "src": "7940:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31897,
                              "name": "seizedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31699,
                              "src": "7960:12:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31898,
                              "name": "collateralToLoanRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31733,
                              "src": "7977:20:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 31899,
                              "name": "currentMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31731,
                              "src": "8002:13:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31900,
                                "name": "CloseTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31588,
                                "src": "8020:10:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_CloseTypes_$31588_$",
                                  "typeString": "type(enum LoanClosingsBase.CloseTypes)"
                                }
                              },
                              "id": 31901,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Liquidation",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8020:22:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_CloseTypes_$31588",
                                "typeString": "enum LoanClosingsBase.CloseTypes"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_CloseTypes_$31588",
                                "typeString": "enum LoanClosingsBase.CloseTypes"
                              }
                            ],
                            "id": 31893,
                            "name": "_emitClosingEvents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33025,
                            "src": "7883:18:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanParams_$4884_memory_ptr_$_t_struct$_Loan_$4912_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_CloseTypes_$31588_$returns$__$",
                              "typeString": "function (struct LoanParamsStruct.LoanParams memory,struct LoanStruct.Loan memory,uint256,uint256,uint256,uint256,enum LoanClosingsBase.CloseTypes)"
                            }
                          },
                          "id": 31902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7883:163:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31903,
                        "nodeType": "ExpressionStatement",
                        "src": "7883:163:127"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function for liquidating an unhealthy loan.\n\t * The caller needs to approve the closeAmount prior to calling. Will\nnot liquidate more than is needed to restore the desired margin\n(maintenance +5%).\n\t * Whenever the current margin of a loan falls below maintenance margin,\nit needs to be liquidated. Anybody can initiate a liquidation and buy\nthe collateral tokens at a discounted rate (5%).\n\t * @param loanId The ID of the loan to liquidate.\n@param receiver The receiver of the seized amount.\n@param closeAmount The amount to close in loanTokens.\n\t * @return loanCloseAmount The amount of the collateral token of the loan.\n@return seizedAmount The seized amount in the collateral token.\n@return seizedToken The loan token address.\n",
                  "id": 31905,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_liquidate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31690,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 31905,
                        "src": "5364:14:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 31689,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5364:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31692,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 31905,
                        "src": "5382:16:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31691,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5382:7:127",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31694,
                        "name": "closeAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 31905,
                        "src": "5402:19:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31693,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5402:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5360:64:127"
                  },
                  "returnParameters": {
                    "id": 31702,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31697,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 31905,
                        "src": "5451:23:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31696,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5451:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31699,
                        "name": "seizedAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 31905,
                        "src": "5479:20:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31698,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5479:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31701,
                        "name": "seizedToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 31905,
                        "src": "5504:19:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31700,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5504:7:127",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5446:81:127"
                  },
                  "scope": 33026,
                  "src": "5341:2709:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32340,
                    "nodeType": "Block",
                    "src": "8852:5298:127",
                    "statements": [
                      {
                        "assignments": [
                          31913
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31913,
                            "name": "loanLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 32340,
                            "src": "8856:22:127",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                              "typeString": "struct LoanStruct.Loan"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 31912,
                              "name": "Loan",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4912,
                              "src": "8856:4:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31917,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 31914,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4587,
                            "src": "8881:5:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                            }
                          },
                          "id": 31916,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 31915,
                            "name": "loanId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31907,
                            "src": "8887:6:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8881:13:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage",
                            "typeString": "struct LoanStruct.Loan storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8856:38:127"
                      },
                      {
                        "assignments": [
                          31919
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31919,
                            "name": "loanParamsLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 32340,
                            "src": "8898:34:127",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 31918,
                              "name": "LoanParams",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4884,
                              "src": "8898:10:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31924,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 31920,
                            "name": "loanParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4591,
                            "src": "8935:10:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                            }
                          },
                          "id": 31923,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31921,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31913,
                              "src": "8946:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 31922,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanParamsId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4891,
                            "src": "8946:22:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8935:34:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                            "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8898:71:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31926,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31913,
                                "src": "8982:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 31927,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "active",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4895,
                              "src": "8982:16:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e20697320636c6f736564",
                              "id": 31928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9000:16:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              },
                              "value": "loan is closed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              }
                            ],
                            "id": 31925,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8974:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8974:43:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31930,
                        "nodeType": "ExpressionStatement",
                        "src": "8974:43:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 31935,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31932,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31919,
                                  "src": "9029:15:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                  }
                                },
                                "id": 31933,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4869,
                                "src": "9029:18:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 31934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9051:1:127",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "9029:23:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e506172616d73206e6f7420657869737473",
                              "id": 31936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9054:23:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a3a351ffb3aff816f1d84605072e229d1a4a2e9f6fc60ffe610fb65286941553",
                                "typeString": "literal_string \"loanParams not exists\""
                              },
                              "value": "loanParams not exists"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a3a351ffb3aff816f1d84605072e229d1a4a2e9f6fc60ffe610fb65286941553",
                                "typeString": "literal_string \"loanParams not exists\""
                              }
                            ],
                            "id": 31931,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9021:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9021:57:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31938,
                        "nodeType": "ExpressionStatement",
                        "src": "9021:57:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 31947,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31940,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "9090:5:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 31941,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "9090:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "33363030",
                                    "id": 31945,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9135:4:127",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_3600_by_1",
                                      "typeString": "int_const 3600"
                                    },
                                    "value": "3600"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_3600_by_1",
                                      "typeString": "int_const 3600"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31942,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31913,
                                      "src": "9108:9:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 31943,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endTimestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4903,
                                    "src": "9108:22:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 31944,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42092,
                                  "src": "9108:26:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 31946,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9108:32:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9090:50:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6865616c74687920706f736974696f6e",
                              "id": 31948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9142:18:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_64eb05b4b3417141dd6c83e8d7f986ed194115f98f87ef0b2da14e442c64a03e",
                                "typeString": "literal_string \"healthy position\""
                              },
                              "value": "healthy position"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_64eb05b4b3417141dd6c83e8d7f986ed194115f98f87ef0b2da14e442c64a03e",
                                "typeString": "literal_string \"healthy position\""
                              }
                            ],
                            "id": 31939,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9082:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9082:79:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31950,
                        "nodeType": "ExpressionStatement",
                        "src": "9082:79:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 31959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 31952,
                                  "name": "loanPoolToUnderlying",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4702,
                                  "src": "9173:20:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                  }
                                },
                                "id": 31955,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 31953,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31913,
                                    "src": "9194:9:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 31954,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4911,
                                  "src": "9194:16:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9173:38:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 31957,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9223:1:127",
                                    "subdenomination": null,
                                    "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": 31956,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9215:7:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 31958,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9215:10:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "9173:52:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e76616c6964206c656e646572",
                              "id": 31960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9227:16:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_51cc69a19eff66f3a2c3befac070e5cddd7cdc9095592c5a4624320a3b3def82",
                                "typeString": "literal_string \"invalid lender\""
                              },
                              "value": "invalid lender"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_51cc69a19eff66f3a2c3befac070e5cddd7cdc9095592c5a4624320a3b3def82",
                                "typeString": "literal_string \"invalid lender\""
                              }
                            ],
                            "id": 31951,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9165:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 31961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9165:79:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31962,
                        "nodeType": "ExpressionStatement",
                        "src": "9165:79:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31964,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31913,
                                "src": "9302:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 31965,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4911,
                              "src": "9302:16:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31966,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31919,
                                "src": "9320:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 31967,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "9320:25:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 31963,
                            "name": "_payInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27616,
                            "src": "9289:12:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 31968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9289:57:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31969,
                        "nodeType": "ExpressionStatement",
                        "src": "9289:57:127"
                      },
                      {
                        "assignments": [
                          31971
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31971,
                            "name": "loanInterestLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 32340,
                            "src": "9351:38:127",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                              "typeString": "struct LoanInterestStruct.LoanInterest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 31970,
                              "name": "LoanInterest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4864,
                              "src": "9351:12:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31976,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 31972,
                            "name": "loanInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4619,
                            "src": "9392:12:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanInterest_$4864_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanInterestStruct.LoanInterest storage ref)"
                            }
                          },
                          "id": 31975,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31973,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31913,
                              "src": "9405:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 31974,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4889,
                            "src": "9405:12:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9392:26:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanInterest_$4864_storage",
                            "typeString": "struct LoanInterestStruct.LoanInterest storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9351:67:127"
                      },
                      {
                        "assignments": [
                          31978
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 31978,
                            "name": "lenderInterestLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 32340,
                            "src": "9422:42:127",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                              "typeString": "struct LenderInterestStruct.LenderInterest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 31977,
                              "name": "LenderInterest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4854,
                              "src": "9422:14:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 31986,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 31979,
                              "name": "lenderInterest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4615,
                              "src": "9467:14:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$_$",
                                "typeString": "mapping(address => mapping(address => struct LenderInterestStruct.LenderInterest storage ref))"
                              }
                            },
                            "id": 31982,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31980,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31913,
                                "src": "9482:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 31981,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4911,
                              "src": "9482:16:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9467:32:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$",
                              "typeString": "mapping(address => struct LenderInterestStruct.LenderInterest storage ref)"
                            }
                          },
                          "id": 31985,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31983,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31919,
                              "src": "9500:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            },
                            "id": 31984,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4875,
                            "src": "9500:25:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9467:59:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LenderInterest_$4854_storage",
                            "typeString": "struct LenderInterestStruct.LenderInterest storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9422:104:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 31988,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31971,
                              "src": "9570:17:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31989,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31913,
                                "src": "9592:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 31990,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4889,
                              "src": "9592:12:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31991,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31919,
                                "src": "9609:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 31992,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "9609:25:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31993,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31919,
                                "src": "9653:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 31994,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "9653:31:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31995,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31913,
                                "src": "9779:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 31996,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "borrower",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4909,
                              "src": "9779:18:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 31997,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "9802:5:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 31998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9802:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 31987,
                            "name": "_settleFeeRewardForInterestExpense",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27366,
                            "src": "9531:34:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanInterest_$4864_storage_ptr_$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (struct LoanInterestStruct.LoanInterest storage pointer,bytes32,address,address,address,uint256)"
                            }
                          },
                          "id": 31999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9531:290:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32000,
                        "nodeType": "ExpressionStatement",
                        "src": "9531:290:127"
                      },
                      {
                        "assignments": [
                          32002
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32002,
                            "name": "backInterestTime",
                            "nodeType": "VariableDeclaration",
                            "scope": 32340,
                            "src": "9936:24:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32001,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9936:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32003,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9936:24:127"
                      },
                      {
                        "assignments": [
                          32005
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32005,
                            "name": "backInterestOwed",
                            "nodeType": "VariableDeclaration",
                            "scope": 32340,
                            "src": "9964:24:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32004,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9964:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32006,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9964:24:127"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32007,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44984,
                              "src": "9996:5:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 32008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9996:15:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32009,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31913,
                              "src": "10014:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 32010,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "endTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4903,
                            "src": "10014:22:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9996:40:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 32037,
                        "nodeType": "IfStatement",
                        "src": "9992:244:127",
                        "trueBody": {
                          "id": 32036,
                          "nodeType": "Block",
                          "src": "10038:198:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32019,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 32012,
                                  "name": "backInterestTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32002,
                                  "src": "10043:16:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32016,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31913,
                                        "src": "10082:9:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 32017,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "endTimestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4903,
                                      "src": "10082:22:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32013,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44984,
                                        "src": "10062:5:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 32014,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "10062:15:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32015,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "10062:19:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 32018,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10062:43:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10043:62:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32020,
                              "nodeType": "ExpressionStatement",
                              "src": "10043:62:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 32021,
                                  "name": "backInterestOwed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32005,
                                  "src": "10110:16:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32024,
                                        "name": "loanInterestLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31971,
                                        "src": "10150:17:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                          "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                        }
                                      },
                                      "id": 32025,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "owedPerDay",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4859,
                                      "src": "10150:28:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32022,
                                      "name": "backInterestTime",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32002,
                                      "src": "10129:16:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32023,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42153,
                                    "src": "10129:20:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 32026,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10129:50:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10110:69:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32028,
                              "nodeType": "ExpressionStatement",
                              "src": "10110:69:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32034,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 32029,
                                  "name": "backInterestOwed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32005,
                                  "src": "10184:16:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 32032,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10224:6:127",
                                      "subdenomination": "days",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_86400_by_1",
                                        "typeString": "int_const 86400"
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_86400_by_1",
                                        "typeString": "int_const 86400"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32030,
                                      "name": "backInterestOwed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32005,
                                      "src": "10203:16:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32031,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "10203:20:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 32033,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10203:28:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10184:47:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32035,
                              "nodeType": "ExpressionStatement",
                              "src": "10184:47:127"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32038,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31919,
                              "src": "10414:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            },
                            "id": 32039,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "maxLoanTerm",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4883,
                            "src": "10414:27:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 32040,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10445:1:127",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10414:32:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 32150,
                          "nodeType": "Block",
                          "src": "11266:259:127",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 32123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 32121,
                                  "name": "backInterestTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32002,
                                  "src": "11325:16:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 32122,
                                  "name": "MONTH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31581,
                                  "src": "11345:5:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11325:25:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 32148,
                                "nodeType": "Block",
                                "src": "11451:70:127",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32146,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 32138,
                                          "name": "loanLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31913,
                                          "src": "11457:9:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                            "typeString": "struct LoanStruct.Loan storage pointer"
                                          }
                                        },
                                        "id": 32140,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "endTimestamp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4903,
                                        "src": "11457:22:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 32144,
                                            "name": "MONTH",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31581,
                                            "src": "11509:5:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 32141,
                                              "name": "loanLocal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 31913,
                                              "src": "11482:9:127",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                                "typeString": "struct LoanStruct.Loan storage pointer"
                                              }
                                            },
                                            "id": 32142,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "endTimestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4903,
                                            "src": "11482:22:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 32143,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "11482:26:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 32145,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11482:33:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11457:58:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32147,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11457:58:127"
                                  }
                                ]
                              },
                              "id": 32149,
                              "nodeType": "IfStatement",
                              "src": "11321:200:127",
                              "trueBody": {
                                "id": 32137,
                                "nodeType": "Block",
                                "src": "11352:93:127",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32135,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 32124,
                                          "name": "loanLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31913,
                                          "src": "11358:9:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                            "typeString": "struct LoanStruct.Loan storage pointer"
                                          }
                                        },
                                        "id": 32126,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "endTimestamp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4903,
                                        "src": "11358:22:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 32133,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11432:6:127",
                                            "subdenomination": "days",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_86400_by_1",
                                              "typeString": "int_const 86400"
                                            },
                                            "value": "1"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_86400_by_1",
                                              "typeString": "int_const 86400"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 32130,
                                                "name": "backInterestTime",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 32002,
                                                "src": "11410:16:127",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 32127,
                                                  "name": "loanLocal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 31913,
                                                  "src": "11383:9:127",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                                  }
                                                },
                                                "id": 32128,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "endTimestamp",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4903,
                                                "src": "11383:22:127",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 32129,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "add",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 42076,
                                              "src": "11383:26:127",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 32131,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "11383:44:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 32132,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "11383:48:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 32134,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11383:56:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11358:81:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32136,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11358:81:127"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 32151,
                        "nodeType": "IfStatement",
                        "src": "10410:1115:127",
                        "trueBody": {
                          "id": 32120,
                          "nodeType": "Block",
                          "src": "10448:812:127",
                          "statements": [
                            {
                              "assignments": [
                                32043
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 32043,
                                  "name": "owedPerDay",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 32120,
                                  "src": "10525:18:127",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 32042,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10525:7:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 32061,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_rational_36500000000000000000000_by_1",
                                      "typeString": "int_const 36500000000000000000000"
                                    },
                                    "id": 32059,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "333635",
                                      "id": 32055,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10624:3:127",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_365_by_1",
                                        "typeString": "int_const 365"
                                      },
                                      "value": "365"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                        "typeString": "int_const 100000000000000000000"
                                      },
                                      "id": 32058,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 32056,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10630:2:127",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3230",
                                        "id": 32057,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10634:2:127",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_20_by_1",
                                          "typeString": "int_const 20"
                                        },
                                        "value": "20"
                                      },
                                      "src": "10630:6:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                        "typeString": "int_const 100000000000000000000"
                                      }
                                    },
                                    "src": "10624:12:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_36500000000000000000000_by_1",
                                      "typeString": "int_const 36500000000000000000000"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_36500000000000000000000_by_1",
                                      "typeString": "int_const 36500000000000000000000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 32048,
                                                  "name": "loanLocal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 31913,
                                                  "src": "10580:9:127",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                                  }
                                                },
                                                "id": 32049,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "lender",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4911,
                                                "src": "10580:16:127",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 32047,
                                              "name": "ILoanPool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 24717,
                                              "src": "10570:9:127",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_ILoanPool_$24717_$",
                                                "typeString": "type(contract ILoanPool)"
                                              }
                                            },
                                            "id": 32050,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "10570:27:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_ILoanPool_$24717",
                                              "typeString": "contract ILoanPool"
                                            }
                                          },
                                          "id": 32051,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "borrowInterestRate",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 24711,
                                          "src": "10570:46:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                            "typeString": "function () view external returns (uint256)"
                                          }
                                        },
                                        "id": 32052,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10570:48:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 32044,
                                          "name": "loanLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31913,
                                          "src": "10546:9:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                            "typeString": "struct LoanStruct.Loan storage pointer"
                                          }
                                        },
                                        "id": 32045,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "principal",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4897,
                                        "src": "10546:19:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 32046,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42153,
                                      "src": "10546:23:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 32053,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10546:73:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 32054,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42169,
                                  "src": "10546:77:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 32060,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10546:91:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10525:112:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32070,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32062,
                                    "name": "lenderInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31978,
                                    "src": "10643:19:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                      "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                    }
                                  },
                                  "id": 32064,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "owedPerDay",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4847,
                                  "src": "10643:30:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 32068,
                                      "name": "owedPerDay",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32043,
                                      "src": "10711:10:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32065,
                                        "name": "lenderInterestLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31978,
                                        "src": "10676:19:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                          "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                        }
                                      },
                                      "id": 32066,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "owedPerDay",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4847,
                                      "src": "10676:30:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32067,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "10676:34:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 32069,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10676:46:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10643:79:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32071,
                              "nodeType": "ExpressionStatement",
                              "src": "10643:79:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32072,
                                    "name": "lenderInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31978,
                                    "src": "10727:19:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                      "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                    }
                                  },
                                  "id": 32074,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "owedPerDay",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4847,
                                  "src": "10727:30:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32078,
                                        "name": "loanInterestLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31971,
                                        "src": "10795:17:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                          "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                        }
                                      },
                                      "id": 32079,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "owedPerDay",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4859,
                                      "src": "10795:28:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32075,
                                        "name": "lenderInterestLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31978,
                                        "src": "10760:19:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                          "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                        }
                                      },
                                      "id": 32076,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "owedPerDay",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4847,
                                      "src": "10760:30:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32077,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "10760:34:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 32080,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10760:64:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10727:97:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32082,
                              "nodeType": "ExpressionStatement",
                              "src": "10727:97:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32087,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32083,
                                    "name": "loanInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31971,
                                    "src": "10830:17:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                      "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                    }
                                  },
                                  "id": 32085,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "owedPerDay",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4859,
                                  "src": "10830:28:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 32086,
                                  "name": "owedPerDay",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32043,
                                  "src": "10861:10:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10830:41:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32088,
                              "nodeType": "ExpressionStatement",
                              "src": "10830:41:127"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 32092,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 32089,
                                  "name": "backInterestTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32002,
                                  "src": "10980:16:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32090,
                                    "name": "loanParamsLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31919,
                                    "src": "11000:15:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                    }
                                  },
                                  "id": 32091,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maxLoanTerm",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4883,
                                  "src": "11000:27:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10980:47:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 32118,
                                "nodeType": "Block",
                                "src": "11164:92:127",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32116,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 32107,
                                          "name": "loanLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31913,
                                          "src": "11170:9:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                            "typeString": "struct LoanStruct.Loan storage pointer"
                                          }
                                        },
                                        "id": 32109,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "endTimestamp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4903,
                                        "src": "11170:22:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 32113,
                                              "name": "loanParamsLocal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 31919,
                                              "src": "11222:15:127",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                              }
                                            },
                                            "id": 32114,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maxLoanTerm",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4883,
                                            "src": "11222:27:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 32110,
                                              "name": "loanLocal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 31913,
                                              "src": "11195:9:127",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                                "typeString": "struct LoanStruct.Loan storage pointer"
                                              }
                                            },
                                            "id": 32111,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "endTimestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4903,
                                            "src": "11195:22:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 32112,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "11195:26:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 32115,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11195:55:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11170:80:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32117,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11170:80:127"
                                  }
                                ]
                              },
                              "id": 32119,
                              "nodeType": "IfStatement",
                              "src": "10976:280:127",
                              "trueBody": {
                                "id": 32106,
                                "nodeType": "Block",
                                "src": "11029:93:127",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32104,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 32093,
                                          "name": "loanLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31913,
                                          "src": "11035:9:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                            "typeString": "struct LoanStruct.Loan storage pointer"
                                          }
                                        },
                                        "id": 32095,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "endTimestamp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4903,
                                        "src": "11035:22:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 32102,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11109:6:127",
                                            "subdenomination": "days",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_86400_by_1",
                                              "typeString": "int_const 86400"
                                            },
                                            "value": "1"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_86400_by_1",
                                              "typeString": "int_const 86400"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 32099,
                                                "name": "backInterestTime",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 32002,
                                                "src": "11087:16:127",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 32096,
                                                  "name": "loanLocal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 31913,
                                                  "src": "11060:9:127",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                                  }
                                                },
                                                "id": 32097,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "endTimestamp",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4903,
                                                "src": "11060:22:127",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 32098,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "add",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 42076,
                                              "src": "11060:26:127",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 32100,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "11060:44:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 32101,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "11060:48:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 32103,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11060:56:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11035:81:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32105,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11035:81:127"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          32153
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32153,
                            "name": "interestAmountRequired",
                            "nodeType": "VariableDeclaration",
                            "scope": 32340,
                            "src": "11529:30:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32152,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11529:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32160,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32157,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "11589:5:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 32158,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11589:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32154,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31913,
                                "src": "11562:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 32155,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "endTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4903,
                              "src": "11562:22:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 32156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "11562:26:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 32159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11562:43:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11529:76:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 32161,
                            "name": "interestAmountRequired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32153,
                            "src": "11609:22:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32164,
                                  "name": "loanInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31971,
                                  "src": "11661:17:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                    "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                  }
                                },
                                "id": 32165,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owedPerDay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4859,
                                "src": "11661:28:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 32162,
                                "name": "interestAmountRequired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32153,
                                "src": "11634:22:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42153,
                              "src": "11634:26:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 32166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11634:56:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11609:81:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32168,
                        "nodeType": "ExpressionStatement",
                        "src": "11609:81:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 32169,
                            "name": "interestAmountRequired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32153,
                            "src": "11694:22:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 32172,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11746:6:127",
                                "subdenomination": "days",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_86400_by_1",
                                  "typeString": "int_const 86400"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_86400_by_1",
                                  "typeString": "int_const 86400"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 32170,
                                "name": "interestAmountRequired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32153,
                                "src": "11719:22:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32171,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "11719:26:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 32173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11719:34:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11694:59:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32175,
                        "nodeType": "ExpressionStatement",
                        "src": "11694:59:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32176,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31971,
                              "src": "11758:17:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            "id": 32178,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "depositTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4861,
                            "src": "11758:30:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 32182,
                                "name": "interestAmountRequired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32153,
                                "src": "11826:22:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32179,
                                  "name": "loanInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31971,
                                  "src": "11791:17:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                    "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                  }
                                },
                                "id": 32180,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "depositTotal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4861,
                                "src": "11791:30:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "11791:34:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 32183,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11791:58:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11758:91:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32185,
                        "nodeType": "ExpressionStatement",
                        "src": "11758:91:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32186,
                              "name": "lenderInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31978,
                              "src": "11854:19:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                              }
                            },
                            "id": 32188,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owedTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4849,
                            "src": "11854:29:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 32192,
                                "name": "interestAmountRequired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32153,
                                "src": "11920:22:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32189,
                                  "name": "lenderInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31978,
                                  "src": "11886:19:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                    "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                  }
                                },
                                "id": 32190,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owedTotal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4849,
                                "src": "11886:29:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32191,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "11886:33:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 32193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11886:57:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11854:89:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32195,
                        "nodeType": "ExpressionStatement",
                        "src": "11854:89:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 32196,
                            "name": "interestAmountRequired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32153,
                            "src": "11974:22:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 32199,
                                "name": "backInterestOwed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32005,
                                "src": "12026:16:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 32197,
                                "name": "interestAmountRequired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32153,
                                "src": "11999:22:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "11999:26:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 32200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11999:44:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11974:69:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32202,
                        "nodeType": "ExpressionStatement",
                        "src": "11974:69:127"
                      },
                      {
                        "assignments": [
                          32204,
                          32206,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32204,
                            "name": "destTokenAmountReceived",
                            "nodeType": "VariableDeclaration",
                            "scope": 32340,
                            "src": "12115:31:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32203,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12115:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 32206,
                            "name": "sourceTokenAmountUsed",
                            "nodeType": "VariableDeclaration",
                            "scope": 32340,
                            "src": "12148:29:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32205,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12148:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 32215,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 32208,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31913,
                              "src": "12209:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 32209,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31919,
                              "src": "12224:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 32210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12245:1:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 32211,
                              "name": "interestAmountRequired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32153,
                              "src": "12328:22:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 32212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12386:4:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "id": 32213,
                              "name": "loanDataBytes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31909,
                              "src": "12423:13:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32207,
                            "name": "_doCollateralSwap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32634,
                            "src": "12186:17:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Loan_$4912_memory_ptr_$_t_struct$_LoanParams_$4884_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (struct LoanStruct.Loan memory,struct LoanParamsStruct.LoanParams memory,uint256,uint256,bool,bytes memory) returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 32214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12186:255:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12114:327:127"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 32216,
                            "name": "destTokenAmountReceived",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32204,
                            "src": "12507:23:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 32217,
                            "name": "interestAmountRequired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32153,
                            "src": "12533:22:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12507:48:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 32259,
                        "nodeType": "IfStatement",
                        "src": "12503:708:127",
                        "trueBody": {
                          "id": 32258,
                          "nodeType": "Block",
                          "src": "12557:654:127",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32220,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31919,
                                      "src": "12665:15:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    "id": 32221,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "12665:25:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 32224,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 32222,
                                      "name": "destTokenAmountReceived",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32204,
                                      "src": "12692:23:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 32223,
                                      "name": "interestAmountRequired",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32153,
                                      "src": "12718:22:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12692:48:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 32219,
                                  "name": "worthTheTransfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32572,
                                  "src": "12648:16:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) returns (bool)"
                                  }
                                },
                                "id": 32225,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12648:93:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 32256,
                                "nodeType": "Block",
                                "src": "13084:123:127",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 32247,
                                            "name": "loanLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31913,
                                            "src": "13105:9:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                              "typeString": "struct LoanStruct.Loan storage pointer"
                                            }
                                          },
                                          "id": 32248,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "borrower",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4909,
                                          "src": "13105:18:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 32249,
                                            "name": "loanParamsLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31919,
                                            "src": "13125:15:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                              "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                            }
                                          },
                                          "id": 32250,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "loanToken",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4875,
                                          "src": "13125:25:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 32253,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 32251,
                                            "name": "destTokenAmountReceived",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32204,
                                            "src": "13152:23:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 32252,
                                            "name": "interestAmountRequired",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32153,
                                            "src": "13178:22:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "13152:48:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 32246,
                                        "name": "_payLendingFee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27309,
                                        "src": "13090:14:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256)"
                                        }
                                      },
                                      "id": 32254,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13090:111:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 32255,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13090:111:127"
                                  }
                                ]
                              },
                              "id": 32257,
                              "nodeType": "IfStatement",
                              "src": "12644:563:127",
                              "trueBody": {
                                "id": 32245,
                                "nodeType": "Block",
                                "src": "12743:281:127",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32236,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 32226,
                                            "name": "destTokenAmountReceived",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32204,
                                            "src": "12750:23:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          null,
                                          null
                                        ],
                                        "id": 32227,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "12749:29:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$__$__$",
                                          "typeString": "tuple(uint256,,)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 32229,
                                            "name": "loanLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31913,
                                            "src": "12803:9:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                              "typeString": "struct LoanStruct.Loan storage pointer"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 32230,
                                            "name": "loanParamsLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31919,
                                            "src": "12819:15:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                              "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 32233,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 32231,
                                              "name": "destTokenAmountReceived",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32204,
                                              "src": "12841:23:127",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 32232,
                                              "name": "interestAmountRequired",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 32153,
                                              "src": "12867:22:127",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "12841:48:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 32234,
                                            "name": "loanDataBytes",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31909,
                                            "src": "12919:13:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                              "typeString": "struct LoanStruct.Loan storage pointer"
                                            },
                                            {
                                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                              "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 32228,
                                          "name": "_swapBackExcess",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32680,
                                          "src": "12781:15:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Loan_$4912_memory_ptr_$_t_struct$_LoanParams_$4884_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                            "typeString": "function (struct LoanStruct.Loan memory,struct LoanParamsStruct.LoanParams memory,uint256,bytes memory) returns (uint256,uint256,uint256)"
                                          }
                                        },
                                        "id": 32235,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12781:157:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256,uint256)"
                                        }
                                      },
                                      "src": "12749:189:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 32237,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12749:189:127"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32243,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 32238,
                                        "name": "sourceTokenAmountUsed",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32206,
                                        "src": "12944:21:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 32241,
                                            "name": "destTokenAmountReceived",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32204,
                                            "src": "12994:23:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 32239,
                                            "name": "sourceTokenAmountUsed",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32206,
                                            "src": "12968:21:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 32240,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42092,
                                          "src": "12968:25:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 32242,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12968:50:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "12944:74:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32244,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12944:74:127"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32260,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31913,
                              "src": "13261:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 32262,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "collateral",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4899,
                            "src": "13261:20:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 32266,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32206,
                                "src": "13309:21:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32263,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31913,
                                  "src": "13284:9:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                "id": 32264,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4899,
                                "src": "13284:20:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "13284:24:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 32267,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13284:47:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13261:70:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32269,
                        "nodeType": "ExpressionStatement",
                        "src": "13261:70:127"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 32270,
                            "name": "backInterestOwed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32005,
                            "src": "13340:16:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 32271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13360:1:127",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13340:21:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 32282,
                        "nodeType": "IfStatement",
                        "src": "13336:152:127",
                        "trueBody": {
                          "id": 32281,
                          "nodeType": "Block",
                          "src": "13363:125:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32274,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31913,
                                      "src": "13421:9:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 32275,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4911,
                                    "src": "13421:16:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32276,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31919,
                                      "src": "13439:15:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    "id": 32277,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "13439:25:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 32278,
                                    "name": "backInterestOwed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32005,
                                    "src": "13466:16:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 32273,
                                  "name": "_payInterestTransfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27662,
                                  "src": "13400:20:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 32279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13400:83:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 32280,
                              "nodeType": "ExpressionStatement",
                              "src": "13400:83:127"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          32284
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32284,
                            "name": "rolloverReward",
                            "nodeType": "VariableDeclaration",
                            "scope": 32340,
                            "src": "13492:22:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32283,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13492:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32293,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32286,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31919,
                                "src": "13536:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 32287,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "13536:31:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32288,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31919,
                                "src": "13569:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 32289,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "13569:25:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32290,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31913,
                                "src": "13596:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 32291,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "principal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4897,
                              "src": "13596:19:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 32285,
                            "name": "_getRolloverReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27960,
                            "src": "13517:18:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,address,uint256) view returns (uint256)"
                            }
                          },
                          "id": 32292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13517:99:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13492:124:127"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 32294,
                            "name": "rolloverReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32284,
                            "src": "13625:14:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 32295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13643:1:127",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13625:19:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 32316,
                        "nodeType": "IfStatement",
                        "src": "13621:210:127",
                        "trueBody": {
                          "id": 32315,
                          "nodeType": "Block",
                          "src": "13646:185:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32297,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31913,
                                    "src": "13682:9:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 32299,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "collateral",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4899,
                                  "src": "13682:20:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 32303,
                                      "name": "rolloverReward",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32284,
                                      "src": "13730:14:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32300,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 31913,
                                        "src": "13705:9:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 32301,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "collateral",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4899,
                                      "src": "13705:20:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32302,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "13705:24:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 32304,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13705:40:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13682:63:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32306,
                              "nodeType": "ExpressionStatement",
                              "src": "13682:63:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32308,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31919,
                                      "src": "13766:15:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    "id": 32309,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4877,
                                    "src": "13766:31:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32310,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "13799:3:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 32311,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13799:10:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 32312,
                                    "name": "rolloverReward",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32284,
                                    "src": "13811:14:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 32307,
                                  "name": "_withdrawAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32714,
                                  "src": "13751:14:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 32313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13751:75:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 32314,
                              "nodeType": "ExpressionStatement",
                              "src": "13751:75:127"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          32318,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32318,
                            "name": "currentMargin",
                            "nodeType": "VariableDeclaration",
                            "scope": 32340,
                            "src": "13836:21:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32317,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13836:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 32332,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32323,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31919,
                                "src": "13912:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 32324,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "13912:25:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32325,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31919,
                                "src": "13943:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 32326,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "13943:31:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32327,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31913,
                                "src": "13980:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 32328,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "principal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4897,
                              "src": "13980:19:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32329,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31913,
                                "src": "14005:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 32330,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4899,
                              "src": "14005:20:127",
                              "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_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 32320,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "13878:10:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 32319,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "13866:11:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 32321,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13866:23:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 32322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getCurrentMargin",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8684,
                            "src": "13866:40:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256) view external returns (uint256,uint256)"
                            }
                          },
                          "id": 32331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13866:164:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13835:195:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 32336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 32334,
                                "name": "currentMargin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32318,
                                "src": "14046:13:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "33",
                                "id": 32335,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14062:7:127",
                                "subdenomination": "ether",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3000000000000000000_by_1",
                                  "typeString": "int_const 3000000000000000000"
                                },
                                "value": "3"
                              },
                              "src": "14046:23:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e6865616c74687920706f736974696f6e",
                              "id": 32337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14122:20:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a20a6fe43cf061d9638e42e18d63dd0524a0f2893c781dd86909659f7ba13618",
                                "typeString": "literal_string \"unhealthy position\""
                              },
                              "value": "unhealthy position"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a20a6fe43cf061d9638e42e18d63dd0524a0f2893c781dd86909659f7ba13618",
                                "typeString": "literal_string \"unhealthy position\""
                              }
                            ],
                            "id": 32333,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "14034:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 32338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14034:112:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32339,
                        "nodeType": "ExpressionStatement",
                        "src": "14034:112:127"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function for roll over a loan.\n\t * Each loan has a duration. In case of a margin trade it is set to 28\ndays, in case of borrowing, it can be set by the user. On loan\nopenning, the user pays the interest for this duration in advance.\nIf closing early, he gets the excess refunded. If it is not closed\nbefore the end date, it needs to be rolled over. On rollover the\ninterest is paid for the next period. In case of margin trading\nit's 28 days, in case of borrowing it's a month.\n\t * @param loanId The ID of the loan to roll over.\n@param loanDataBytes The payload for the call. These loan DataBytes are\n  additional loan data (not in use for token swaps).\n",
                  "id": 32341,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_rollover",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31907,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 32341,
                        "src": "8799:14:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 31906,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8799:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31909,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 32341,
                        "src": "8815:26:127",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 31908,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8815:5:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8798:44:127"
                  },
                  "returnParameters": {
                    "id": 31911,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8852:0:127"
                  },
                  "scope": 33026,
                  "src": "8780:5370:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32426,
                    "nodeType": "Block",
                    "src": "14865:1881:127",
                    "statements": [
                      {
                        "assignments": [
                          32355
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32355,
                            "name": "loanCloseAmountLessInterest",
                            "nodeType": "VariableDeclaration",
                            "scope": 32426,
                            "src": "14869:35:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32354,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14869:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32357,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 32356,
                          "name": "loanCloseAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32347,
                          "src": "14907:15:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14869:53:127"
                      },
                      {
                        "assignments": [
                          32359
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32359,
                            "name": "interestRefundToBorrower",
                            "nodeType": "VariableDeclaration",
                            "scope": 32426,
                            "src": "15037:32:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32358,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15037:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32365,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 32361,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32345,
                              "src": "15088:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 32362,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32343,
                              "src": "15105:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                "typeString": "struct LoanStruct.Loan memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 32363,
                              "name": "loanCloseAmountLessInterest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32355,
                              "src": "15116:27:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                "typeString": "struct LoanStruct.Loan memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 32360,
                            "name": "_settleInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32983,
                            "src": "15072:15:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanParams_$4884_memory_ptr_$_t_struct$_Loan_$4912_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (struct LoanParamsStruct.LoanParams memory,struct LoanStruct.Loan memory,uint256) returns (uint256)"
                            }
                          },
                          "id": 32364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15072:72:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15037:107:127"
                      },
                      {
                        "assignments": [
                          32367
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32367,
                            "name": "interestAppliedToPrincipal",
                            "nodeType": "VariableDeclaration",
                            "scope": 32426,
                            "src": "15149:34:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32366,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15149:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32368,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15149:34:127"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 32369,
                            "name": "loanCloseAmountLessInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32355,
                            "src": "15322:27:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 32370,
                            "name": "interestRefundToBorrower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32359,
                            "src": "15353:24:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15322:55:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 32409,
                          "nodeType": "Block",
                          "src": "15690:566:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 32385,
                                  "name": "interestAppliedToPrincipal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32367,
                                  "src": "15849:26:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 32386,
                                  "name": "loanCloseAmountLessInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32355,
                                  "src": "15878:27:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15849:56:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32388,
                              "nodeType": "ExpressionStatement",
                              "src": "15849:56:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 32389,
                                  "name": "interestRefundToBorrower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32359,
                                  "src": "15959:24:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 32390,
                                  "name": "loanCloseAmountLessInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32355,
                                  "src": "15987:27:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15959:55:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32392,
                              "nodeType": "ExpressionStatement",
                              "src": "15959:55:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 32393,
                                  "name": "loanCloseAmountLessInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32355,
                                  "src": "16069:27:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 32394,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16099:1:127",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "16069:31:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32396,
                              "nodeType": "ExpressionStatement",
                              "src": "16069:31:127"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 32399,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 32397,
                                  "name": "interestRefundToBorrower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32359,
                                  "src": "16110:24:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 32398,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16138:1:127",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "16110:29:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 32408,
                              "nodeType": "IfStatement",
                              "src": "16106:146:127",
                              "trueBody": {
                                "id": 32407,
                                "nodeType": "Block",
                                "src": "16141:111:127",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 32401,
                                            "name": "loanParamsLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32345,
                                            "src": "16184:15:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                              "typeString": "struct LoanParamsStruct.LoanParams memory"
                                            }
                                          },
                                          "id": 32402,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "loanToken",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4875,
                                          "src": "16184:25:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 32403,
                                          "name": "receiver",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32349,
                                          "src": "16211:8:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 32404,
                                          "name": "interestRefundToBorrower",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32359,
                                          "src": "16221:24:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 32400,
                                        "name": "_withdrawAsset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32714,
                                        "src": "16169:14:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256)"
                                        }
                                      },
                                      "id": 32405,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16169:77:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 32406,
                                    "nodeType": "ExpressionStatement",
                                    "src": "16169:77:127"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 32410,
                        "nodeType": "IfStatement",
                        "src": "15318:938:127",
                        "trueBody": {
                          "id": 32384,
                          "nodeType": "Block",
                          "src": "15379:305:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 32372,
                                  "name": "interestAppliedToPrincipal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32367,
                                  "src": "15447:26:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 32373,
                                  "name": "interestRefundToBorrower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32359,
                                  "src": "15476:24:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15447:53:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32375,
                              "nodeType": "ExpressionStatement",
                              "src": "15447:53:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 32376,
                                  "name": "loanCloseAmountLessInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32355,
                                  "src": "15555:27:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 32377,
                                  "name": "interestRefundToBorrower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32359,
                                  "src": "15586:24:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15555:55:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32379,
                              "nodeType": "ExpressionStatement",
                              "src": "15555:55:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 32380,
                                  "name": "interestRefundToBorrower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32359,
                                  "src": "15651:24:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 32381,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15678:1:127",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15651:28:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32383,
                              "nodeType": "ExpressionStatement",
                              "src": "15651:28:127"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 32411,
                            "name": "interestAppliedToPrincipal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32367,
                            "src": "16432:26:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 32412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16462:1:127",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16432:31:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 32423,
                        "nodeType": "IfStatement",
                        "src": "16428:276:127",
                        "trueBody": {
                          "id": 32422,
                          "nodeType": "Block",
                          "src": "16465:239:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32415,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32345,
                                      "src": "16627:15:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 32416,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "16627:25:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32417,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32343,
                                      "src": "16654:9:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                        "typeString": "struct LoanStruct.Loan memory"
                                      }
                                    },
                                    "id": 32418,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4911,
                                    "src": "16654:16:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 32419,
                                    "name": "interestAppliedToPrincipal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32367,
                                    "src": "16672:26:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 32414,
                                  "name": "vaultWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28128,
                                  "src": "16613:13:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 32420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16613:86:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 32421,
                              "nodeType": "ExpressionStatement",
                              "src": "16613:86:127"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32424,
                          "name": "loanCloseAmountLessInterest",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32355,
                          "src": "16715:27:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 32353,
                        "id": 32425,
                        "nodeType": "Return",
                        "src": "16708:34:127"
                      }
                    ]
                  },
                  "documentation": "@dev computes the interest which needs to be refunded to the borrower based on the amount he's closing and either\nsubtracts it from the amount which still needs to be paid back (in case outstanding amount > interest) or withdraws the\nexcess to the borrower (in case interest > outstanding).\n@param loanLocal the loan\n@param loanParamsLocal the loan params\n@param loanCloseAmount the amount to be closed (base for the computation)\n@param receiver the address of the receiver (usually the borrower)\n",
                  "id": 32427,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_settleInterestToPrincipal",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32350,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32343,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 32427,
                        "src": "14729:21:127",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 32342,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "14729:4:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32345,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 32427,
                        "src": "14754:33:127",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 32344,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "14754:10:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32347,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 32427,
                        "src": "14791:23:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32346,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14791:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32349,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 32427,
                        "src": "14818:16:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32348,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14818:7:127",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14725:112:127"
                  },
                  "returnParameters": {
                    "id": 32353,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32352,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 32427,
                        "src": "14856:7:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32351,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14856:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14855:9:127"
                  },
                  "scope": 33026,
                  "src": "14690:2056:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32524,
                    "nodeType": "Block",
                    "src": "16922:636:127",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 32436,
                            "name": "principalNeeded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32433,
                            "src": "16930:15:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 32437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16949:1:127",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16930:20:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 32522,
                          "nodeType": "Block",
                          "src": "17502:53:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 32518,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32515,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44994,
                                        "src": "17515:3:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 32516,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "value",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "17515:9:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 32517,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17528:1:127",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "17515:14:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "77726f6e672061737365742073656e74",
                                    "id": 32519,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17531:18:127",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_354d628e401807673843b915f493656462073f9d1972fae61b07cef60868d710",
                                      "typeString": "literal_string \"wrong asset sent\""
                                    },
                                    "value": "wrong asset sent"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_354d628e401807673843b915f493656462073f9d1972fae61b07cef60868d710",
                                      "typeString": "literal_string \"wrong asset sent\""
                                    }
                                  ],
                                  "id": 32514,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "17507:7:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 32520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17507:43:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 32521,
                              "nodeType": "ExpressionStatement",
                              "src": "17507:43:127"
                            }
                          ]
                        },
                        "id": 32523,
                        "nodeType": "IfStatement",
                        "src": "16926:629:127",
                        "trueBody": {
                          "id": 32513,
                          "nodeType": "Block",
                          "src": "16952:544:127",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 32442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32439,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "16961:3:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 32440,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "16961:9:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 32441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16974:1:127",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "16961:14:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 32511,
                                "nodeType": "Block",
                                "src": "17058:434:127",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          "id": 32457,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 32453,
                                            "name": "loanToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32429,
                                            "src": "17072:9:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 32455,
                                                "name": "wrbtcToken",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4737,
                                                "src": "17093:10:127",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                  "typeString": "contract IWrbtcERC20"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                  "typeString": "contract IWrbtcERC20"
                                                }
                                              ],
                                              "id": 32454,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "17085:7:127",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": "address"
                                            },
                                            "id": 32456,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17085:19:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "src": "17072:32:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "77726f6e672061737365742073656e74",
                                          "id": 32458,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17106:18:127",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_354d628e401807673843b915f493656462073f9d1972fae61b07cef60868d710",
                                            "typeString": "literal_string \"wrong asset sent\""
                                          },
                                          "value": "wrong asset sent"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_354d628e401807673843b915f493656462073f9d1972fae61b07cef60868d710",
                                            "typeString": "literal_string \"wrong asset sent\""
                                          }
                                        ],
                                        "id": 32452,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44997,
                                          44998
                                        ],
                                        "referencedDeclaration": 44998,
                                        "src": "17064:7:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 32459,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17064:61:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 32460,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17064:61:127"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 32465,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 32462,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44994,
                                              "src": "17139:3:127",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 32463,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "value",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "17139:9:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 32464,
                                            "name": "principalNeeded",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32433,
                                            "src": "17152:15:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "17139:28:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "6e6f7420656e6f756768206574686572",
                                          "id": 32466,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17169:18:127",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_fdb33999d8652fc9ba92246ba8830bea6aeb584ac45b0c37d55b7db9ae3fb8cd",
                                            "typeString": "literal_string \"not enough ether\""
                                          },
                                          "value": "not enough ether"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_fdb33999d8652fc9ba92246ba8830bea6aeb584ac45b0c37d55b7db9ae3fb8cd",
                                            "typeString": "literal_string \"not enough ether\""
                                          }
                                        ],
                                        "id": 32461,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44997,
                                          44998
                                        ],
                                        "referencedDeclaration": 44998,
                                        "src": "17131:7:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 32467,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17131:57:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 32468,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17131:57:127"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 32474,
                                            "name": "principalNeeded",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32433,
                                            "src": "17219:15:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 32469,
                                              "name": "wrbtcToken",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4737,
                                              "src": "17194:10:127",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                "typeString": "contract IWrbtcERC20"
                                              }
                                            },
                                            "id": 32472,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "deposit",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 25544,
                                            "src": "17194:18:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                              "typeString": "function () payable external"
                                            }
                                          },
                                          "id": 32473,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "value",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "17194:24:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$",
                                            "typeString": "function (uint256) pure returns (function () payable external)"
                                          }
                                        },
                                        "id": 32475,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "17194:41:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                                          "typeString": "function () payable external"
                                        }
                                      },
                                      "id": 32476,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17194:43:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 32477,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17194:43:127"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 32482,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 32478,
                                        "name": "receiver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32431,
                                        "src": "17247:8:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 32480,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 45324,
                                            "src": "17267:4:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_LoanClosingsBase_$33026",
                                              "typeString": "contract LoanClosingsBase"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_LoanClosingsBase_$33026",
                                              "typeString": "contract LoanClosingsBase"
                                            }
                                          ],
                                          "id": 32479,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "17259:7:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 32481,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "17259:13:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "17247:25:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 32493,
                                    "nodeType": "IfStatement",
                                    "src": "17243:111:127",
                                    "trueBody": {
                                      "id": 32492,
                                      "nodeType": "Block",
                                      "src": "17274:80:127",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 32484,
                                                "name": "loanToken",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 32429,
                                                "src": "17295:9:127",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 32486,
                                                    "name": "this",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 45324,
                                                    "src": "17314:4:127",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_contract$_LoanClosingsBase_$33026",
                                                      "typeString": "contract LoanClosingsBase"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_contract$_LoanClosingsBase_$33026",
                                                      "typeString": "contract LoanClosingsBase"
                                                    }
                                                  ],
                                                  "id": 32485,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "17306:7:127",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                  },
                                                  "typeName": "address"
                                                },
                                                "id": 32487,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "17306:13:127",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 32488,
                                                "name": "receiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 32431,
                                                "src": "17321:8:127",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 32489,
                                                "name": "principalNeeded",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 32433,
                                                "src": "17331:15:127",
                                                "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"
                                                }
                                              ],
                                              "id": 32483,
                                              "name": "vaultTransfer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 28170,
                                              "src": "17281:13:127",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,address,uint256)"
                                              }
                                            },
                                            "id": 32490,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17281:66:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 32491,
                                          "nodeType": "ExpressionStatement",
                                          "src": "17281:66:127"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 32497,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 32494,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44994,
                                          "src": "17363:3:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 32495,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "value",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "17363:9:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 32496,
                                        "name": "principalNeeded",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32433,
                                        "src": "17375:15:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "17363:27:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 32510,
                                    "nodeType": "IfStatement",
                                    "src": "17359:128:127",
                                    "trueBody": {
                                      "id": 32509,
                                      "nodeType": "Block",
                                      "src": "17392:95:127",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 32501,
                                                  "name": "msg",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 44994,
                                                  "src": "17440:3:127",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_message",
                                                    "typeString": "msg"
                                                  }
                                                },
                                                "id": 32502,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": null,
                                                "src": "17440:10:127",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 32506,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 32503,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 44994,
                                                    "src": "17452:3:127",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_message",
                                                      "typeString": "msg"
                                                    }
                                                  },
                                                  "id": 32504,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "value",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": null,
                                                  "src": "17452:9:127",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "-",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "id": 32505,
                                                  "name": "principalNeeded",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 32433,
                                                  "src": "17464:15:127",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "17452:27:127",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 32498,
                                                "name": "Address",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 41098,
                                                "src": "17422:7:127",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                                  "typeString": "type(library Address)"
                                                }
                                              },
                                              "id": 32500,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sendValue",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 41097,
                                              "src": "17422:17:127",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                              }
                                            },
                                            "id": 32507,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17422:58:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 32508,
                                          "nodeType": "ExpressionStatement",
                                          "src": "17422:58:127"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 32512,
                              "nodeType": "IfStatement",
                              "src": "16957:535:127",
                              "trueBody": {
                                "id": 32451,
                                "nodeType": "Block",
                                "src": "16977:75:127",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 32444,
                                          "name": "loanToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32429,
                                          "src": "16997:9:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 32445,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44994,
                                            "src": "17008:3:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 32446,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "17008:10:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 32447,
                                          "name": "receiver",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32431,
                                          "src": "17020:8:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 32448,
                                          "name": "principalNeeded",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32433,
                                          "src": "17030:15:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 32443,
                                        "name": "vaultTransfer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28170,
                                        "src": "16983:13:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,address,uint256)"
                                        }
                                      },
                                      "id": 32449,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16983:63:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 32450,
                                    "nodeType": "ExpressionStatement",
                                    "src": "16983:63:127"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 32525,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_returnPrincipalWithDeposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32434,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32429,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 32525,
                        "src": "16845:17:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32428,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16845:7:127",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32431,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 32525,
                        "src": "16866:16:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32430,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16866:7:127",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32433,
                        "name": "principalNeeded",
                        "nodeType": "VariableDeclaration",
                        "scope": 32525,
                        "src": "16886:23:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32432,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16886:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16841:71:127"
                  },
                  "returnParameters": {
                    "id": 32435,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16922:0:127"
                  },
                  "scope": 33026,
                  "src": "16805:753:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32571,
                    "nodeType": "Block",
                    "src": "17890:361:127",
                    "statements": [
                      {
                        "assignments": [
                          32535,
                          32537
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32535,
                            "name": "rbtcRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 32571,
                            "src": "17895:16:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32534,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17895:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 32537,
                            "name": "rbtcPrecision",
                            "nodeType": "VariableDeclaration",
                            "scope": 32571,
                            "src": "17913:21:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32536,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17913:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32547,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 32542,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32527,
                              "src": "17972:5:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 32544,
                                  "name": "wrbtcToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4737,
                                  "src": "17987:10:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                    "typeString": "contract IWrbtcERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                    "typeString": "contract IWrbtcERC20"
                                  }
                                ],
                                "id": 32543,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "17979:7:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 32545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17979:19:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 32539,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "17950:10:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 32538,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "17938:11:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 32540,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17938:23:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 32541,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queryRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8595,
                            "src": "17938:33:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256,uint256)"
                            }
                          },
                          "id": 32546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17938:61:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17894:105:127"
                      },
                      {
                        "assignments": [
                          32549
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32549,
                            "name": "amountInRbtc",
                            "nodeType": "VariableDeclaration",
                            "scope": 32571,
                            "src": "18003:20:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32548,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18003:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32557,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 32555,
                              "name": "rbtcPrecision",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32537,
                              "src": "18051:13:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 32552,
                                  "name": "rbtcRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32535,
                                  "src": "18037:8:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32550,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32529,
                                  "src": "18026:6:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 32551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "18026:10:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 32553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18026:20:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 32554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "18026:24:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 32556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18026:39:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18003:62:127"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 32561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 32559,
                                "name": "amountInRbtc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32549,
                                "src": "18085:12:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 32560,
                                "name": "paySwapExcessToBorrowerThreshold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31584,
                                "src": "18100:32:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18085:47:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 32562,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32529,
                              "src": "18134:6:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 32563,
                              "name": "amountInRbtc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32549,
                              "src": "18142:12:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 32564,
                              "name": "paySwapExcessToBorrowerThreshold",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31584,
                              "src": "18156:32:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 32558,
                            "name": "swapExcess",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5913,
                            "src": "18074:10:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bool_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (bool,uint256,uint256,uint256)"
                            }
                          },
                          "id": 32565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18074:115:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32566,
                        "nodeType": "EmitStatement",
                        "src": "18069:120:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 32567,
                            "name": "amountInRbtc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32549,
                            "src": "18200:12:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 32568,
                            "name": "paySwapExcessToBorrowerThreshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31584,
                            "src": "18215:32:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18200:47:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 32533,
                        "id": 32570,
                        "nodeType": "Return",
                        "src": "18193:54:127"
                      }
                    ]
                  },
                  "documentation": "@dev checks if the amount of the asset to be transfered is worth the transfer fee\n@param asset the asset to be transfered\n@param amount the amount to be transfered\n@return True if the amount is bigger than the threshold\n",
                  "id": 32572,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "worthTheTransfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32530,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32527,
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "scope": 32572,
                        "src": "17835:13:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32526,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17835:7:127",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32529,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 32572,
                        "src": "17850:14:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32528,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17850:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17834:31:127"
                  },
                  "returnParameters": {
                    "id": 32533,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32532,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 32572,
                        "src": "17884:4:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32531,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17884:4:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17883:6:127"
                  },
                  "scope": 33026,
                  "src": "17809:442:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32633,
                    "nodeType": "Block",
                    "src": "19080:586:127",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 32593,
                                "name": "destTokenAmountReceived",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32587,
                                "src": "19085:23:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 32594,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32589,
                                "src": "19110:21:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 32595,
                                "name": "collateralToLoanSwapRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32591,
                                "src": "19133:24:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 32596,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "19084:74:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32598,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32574,
                                  "src": "19175:9:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "id": 32599,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4889,
                                "src": "19175:12:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32600,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32576,
                                  "src": "19192:15:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 32601,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateralToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4877,
                                "src": "19192:31:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32602,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32576,
                                  "src": "19228:15:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 32603,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "loanToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4875,
                                "src": "19228:25:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32604,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32574,
                                  "src": "19258:9:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "id": 32605,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "borrower",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4909,
                                "src": "19258:18:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 32606,
                                "name": "swapAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32578,
                                "src": "19281:10:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32607,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32574,
                                  "src": "19320:9:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "id": 32608,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4899,
                                "src": "19320:20:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "id": 32609,
                                  "name": "returnTokenIsCollateral",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32582,
                                  "src": "19369:23:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 32611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19448:1:127",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "id": 32612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "19369:80:127",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "id": 32610,
                                  "name": "principalNeeded",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32580,
                                  "src": "19399:15:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 32613,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19454:5:127",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "argumentTypes": null,
                                "id": 32614,
                                "name": "loanDataBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32584,
                                "src": "19477:13:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "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"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 32597,
                              "name": "_loanSwap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42843,
                              "src": "19161:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (bytes32,address,address,address,uint256,uint256,uint256,bool,bytes memory) returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 32615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19161:333:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "19084:410:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32617,
                        "nodeType": "ExpressionStatement",
                        "src": "19084:410:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 32621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 32619,
                                "name": "destTokenAmountReceived",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32587,
                                "src": "19506:23:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 32620,
                                "name": "principalNeeded",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32580,
                                "src": "19533:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19506:42:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e73756666696369656e74206465737420616d6f756e74",
                              "id": 32622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19550:26:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8c9be3dde929e858a023f6e879b8fdea251ef129140cbc7dce673dd145db67cf",
                                "typeString": "literal_string \"insufficient dest amount\""
                              },
                              "value": "insufficient dest amount"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8c9be3dde929e858a023f6e879b8fdea251ef129140cbc7dce673dd145db67cf",
                                "typeString": "literal_string \"insufficient dest amount\""
                              }
                            ],
                            "id": 32618,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "19498:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 32623,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19498:79:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32624,
                        "nodeType": "ExpressionStatement",
                        "src": "19498:79:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 32629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 32626,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32589,
                                "src": "19589:21:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32627,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32574,
                                  "src": "19614:9:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "id": 32628,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4899,
                                "src": "19614:20:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19589:45:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "65786365737369766520736f7572636520616d6f756e74",
                              "id": 32630,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19636:25:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_516ab73ad24ec01b400c6f1859a142529bbf56f00907dcee4deec38e81aab8f6",
                                "typeString": "literal_string \"excessive source amount\""
                              },
                              "value": "excessive source amount"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_516ab73ad24ec01b400c6f1859a142529bbf56f00907dcee4deec38e81aab8f6",
                                "typeString": "literal_string \"excessive source amount\""
                              }
                            ],
                            "id": 32625,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "19581:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 32631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19581:81:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32632,
                        "nodeType": "ExpressionStatement",
                        "src": "19581:81:127"
                      }
                    ]
                  },
                  "documentation": "swaps collateral tokens for loan tokens\n@param loanLocal the loan object\n@param loanParamsLocal the loan parameters\n@param swapAmount the amount to be swapped\n@param principalNeeded the required destination token amount\n@param returnTokenIsCollateral if true -> required destination token amount will be passed on, else not\n         note: quite dirty. should be refactored.\n@param loanDataBytes additional loan data (not in use for token swaps)\n",
                  "id": 32634,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_doCollateralSwap",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32585,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32574,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 32634,
                        "src": "18773:21:127",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 32573,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "18773:4:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32576,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 32634,
                        "src": "18798:33:127",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 32575,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "18798:10:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32578,
                        "name": "swapAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 32634,
                        "src": "18835:18:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32577,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18835:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32580,
                        "name": "principalNeeded",
                        "nodeType": "VariableDeclaration",
                        "scope": 32634,
                        "src": "18857:23:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18857:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32582,
                        "name": "returnTokenIsCollateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 32634,
                        "src": "18884:28:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32581,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18884:4:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32584,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 32634,
                        "src": "18916:26:127",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 32583,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18916:5:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18769:176:127"
                  },
                  "returnParameters": {
                    "id": 32592,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32587,
                        "name": "destTokenAmountReceived",
                        "nodeType": "VariableDeclaration",
                        "scope": 32634,
                        "src": "18972:31:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32586,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18972:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32589,
                        "name": "sourceTokenAmountUsed",
                        "nodeType": "VariableDeclaration",
                        "scope": 32634,
                        "src": "19008:29:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32588,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19008:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32591,
                        "name": "collateralToLoanSwapRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 32634,
                        "src": "19042:32:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32590,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19042:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18967:111:127"
                  },
                  "scope": 33026,
                  "src": "18743:923:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32679,
                    "nodeType": "Block",
                    "src": "20450:431:127",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 32651,
                                "name": "destTokenAmountReceived",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32645,
                                "src": "20455:23:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 32652,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32647,
                                "src": "20480:21:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 32653,
                                "name": "collateralToLoanSwapRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32649,
                                "src": "20503:24:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 32654,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "20454:74:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32656,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32636,
                                  "src": "20545:9:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "id": 32657,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4889,
                                "src": "20545:12:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32658,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32638,
                                  "src": "20562:15:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 32659,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "loanToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4875,
                                "src": "20562:25:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32660,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32638,
                                  "src": "20592:15:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 32661,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateralToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4877,
                                "src": "20592:31:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32662,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32636,
                                  "src": "20628:9:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "id": 32663,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "borrower",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4909,
                                "src": "20628:18:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 32664,
                                "name": "swapAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32640,
                                "src": "20651:10:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 32665,
                                "name": "swapAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32640,
                                "src": "20690:10:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 32666,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20729:1:127",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 32667,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20762:5:127",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "argumentTypes": null,
                                "id": 32668,
                                "name": "loanDataBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32642,
                                "src": "20785:13:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "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"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 32655,
                              "name": "_loanSwap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42843,
                              "src": "20531:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (bytes32,address,address,address,uint256,uint256,uint256,bool,bytes memory) returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 32669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20531:271:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "20454:348:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32671,
                        "nodeType": "ExpressionStatement",
                        "src": "20454:348:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 32675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 32673,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32647,
                                "src": "20814:21:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 32674,
                                "name": "swapAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32640,
                                "src": "20839:10:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "20814:35:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "65786365737369766520736f7572636520616d6f756e74",
                              "id": 32676,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20851:25:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_516ab73ad24ec01b400c6f1859a142529bbf56f00907dcee4deec38e81aab8f6",
                                "typeString": "literal_string \"excessive source amount\""
                              },
                              "value": "excessive source amount"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_516ab73ad24ec01b400c6f1859a142529bbf56f00907dcee4deec38e81aab8f6",
                                "typeString": "literal_string \"excessive source amount\""
                              }
                            ],
                            "id": 32672,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "20806:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 32677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20806:71:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32678,
                        "nodeType": "ExpressionStatement",
                        "src": "20806:71:127"
                      }
                    ]
                  },
                  "documentation": "@notice Swap back excessive loan tokens to collateral tokens.\n\t * @param loanLocal The loan object.\n@param loanParamsLocal The loan parameters.\n@param swapAmount The amount to be swapped.\n@param loanDataBytes Additional loan data (not in use for token swaps).\n\t * @return destTokenAmountReceived The amount of destiny tokens received.\n@return sourceTokenAmountUsed The amount of source tokens used.\n@return collateralToLoanSwapRate The swap rate of collateral.\n",
                  "id": 32680,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_swapBackExcess",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32636,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 32680,
                        "src": "20202:21:127",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 32635,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "20202:4:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32638,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 32680,
                        "src": "20227:33:127",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 32637,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "20227:10:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32640,
                        "name": "swapAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 32680,
                        "src": "20264:18:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32639,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20264:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32642,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 32680,
                        "src": "20286:26:127",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 32641,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "20286:5:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20198:117:127"
                  },
                  "returnParameters": {
                    "id": 32650,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32645,
                        "name": "destTokenAmountReceived",
                        "nodeType": "VariableDeclaration",
                        "scope": 32680,
                        "src": "20342:31:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32644,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20342:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32647,
                        "name": "sourceTokenAmountUsed",
                        "nodeType": "VariableDeclaration",
                        "scope": 32680,
                        "src": "20378:29:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32646,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20378:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32649,
                        "name": "collateralToLoanSwapRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 32680,
                        "src": "20412:32:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32648,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20412:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20337:111:127"
                  },
                  "scope": 33026,
                  "src": "20174:707:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32713,
                    "nodeType": "Block",
                    "src": "21174:196:127",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32691,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 32689,
                            "name": "assetAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32686,
                            "src": "21182:11:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 32690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21197:1:127",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "21182:16:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 32712,
                        "nodeType": "IfStatement",
                        "src": "21178:189:127",
                        "trueBody": {
                          "id": 32711,
                          "nodeType": "Block",
                          "src": "21200:167:127",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 32696,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 32692,
                                  "name": "assetToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32682,
                                  "src": "21209:10:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 32694,
                                      "name": "wrbtcToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4737,
                                      "src": "21231:10:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                        "typeString": "contract IWrbtcERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                        "typeString": "contract IWrbtcERC20"
                                      }
                                    ],
                                    "id": 32693,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "21223:7:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 32695,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21223:19:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "21209:33:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 32709,
                                "nodeType": "Block",
                                "src": "21303:60:127",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 32704,
                                          "name": "assetToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32682,
                                          "src": "21323:10:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 32705,
                                          "name": "receiver",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32684,
                                          "src": "21335:8:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 32706,
                                          "name": "assetAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32686,
                                          "src": "21345:11:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 32703,
                                        "name": "vaultWithdraw",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28128,
                                        "src": "21309:13:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256)"
                                        }
                                      },
                                      "id": 32707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "21309:48:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 32708,
                                    "nodeType": "ExpressionStatement",
                                    "src": "21309:48:127"
                                  }
                                ]
                              },
                              "id": 32710,
                              "nodeType": "IfStatement",
                              "src": "21205:158:127",
                              "trueBody": {
                                "id": 32702,
                                "nodeType": "Block",
                                "src": "21244:53:127",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 32698,
                                          "name": "receiver",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32684,
                                          "src": "21269:8:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 32699,
                                          "name": "assetAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32686,
                                          "src": "21279:11:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 32697,
                                        "name": "vaultEtherWithdraw",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28067,
                                        "src": "21250:18:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256)"
                                        }
                                      },
                                      "id": 32700,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "21250:41:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 32701,
                                    "nodeType": "ExpressionStatement",
                                    "src": "21250:41:127"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Withdraw asset to receiver.\n\t * @param assetToken The loan token.\n@param receiver The address of the receiver.\n@param assetAmount The loan token amount.\n",
                  "id": 32714,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_withdrawAsset",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32687,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32682,
                        "name": "assetToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 32714,
                        "src": "21100:18:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32681,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21100:7:127",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32684,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 32714,
                        "src": "21122:16:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32683,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21122:7:127",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32686,
                        "name": "assetAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 32714,
                        "src": "21142:19:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32685,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21142:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21096:68:127"
                  },
                  "returnParameters": {
                    "id": 32688,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21174:0:127"
                  },
                  "scope": 33026,
                  "src": "21073:297:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32795,
                    "nodeType": "Block",
                    "src": "21624:505:127",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 32724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 32722,
                                "name": "loanCloseAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32718,
                                "src": "21636:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 32723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21655:1:127",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "21636:20:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6e6f7468696e6720746f20636c6f7365",
                              "id": 32725,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21658:18:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b6e347c27e7560b38d6987dbc7abffa635039e96ab87f901609065276352a929",
                                "typeString": "literal_string \"nothing to close\""
                              },
                              "value": "nothing to close"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b6e347c27e7560b38d6987dbc7abffa635039e96ab87f901609065276352a929",
                                "typeString": "literal_string \"nothing to close\""
                              }
                            ],
                            "id": 32721,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "21628:7:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 32726,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21628:49:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32727,
                        "nodeType": "ExpressionStatement",
                        "src": "21628:49:127"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 32728,
                            "name": "loanCloseAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32718,
                            "src": "21686:15:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32729,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32716,
                              "src": "21705:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 32730,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "principal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4897,
                            "src": "21705:19:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21686:38:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 32793,
                          "nodeType": "Block",
                          "src": "22054:72:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32791,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32783,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32716,
                                    "src": "22059:9:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 32785,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "principal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4897,
                                  "src": "22059:19:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 32789,
                                      "name": "loanCloseAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32718,
                                      "src": "22105:15:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32786,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32716,
                                        "src": "22081:9:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 32787,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "principal",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4897,
                                      "src": "22081:19:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32788,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "22081:23:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 32790,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22081:40:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "22059:62:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32792,
                              "nodeType": "ExpressionStatement",
                              "src": "22059:62:127"
                            }
                          ]
                        },
                        "id": 32794,
                        "nodeType": "IfStatement",
                        "src": "21682:444:127",
                        "trueBody": {
                          "id": 32782,
                          "nodeType": "Block",
                          "src": "21726:322:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32732,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32716,
                                    "src": "21731:9:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 32734,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "principal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4897,
                                  "src": "21731:19:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 32735,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21753:1:127",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "21731:23:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32737,
                              "nodeType": "ExpressionStatement",
                              "src": "21731:23:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32742,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32738,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32716,
                                    "src": "21759:9:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 32740,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "active",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4895,
                                  "src": "21759:16:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "66616c7365",
                                  "id": 32741,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21778:5:127",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "21759:24:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 32743,
                              "nodeType": "ExpressionStatement",
                              "src": "21759:24:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32749,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32744,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32716,
                                    "src": "21788:9:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 32746,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "endTimestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4903,
                                  "src": "21788:22:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32747,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44984,
                                    "src": "21813:5:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 32748,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "21813:15:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21788:40:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32750,
                              "nodeType": "ExpressionStatement",
                              "src": "21788:40:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32751,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32716,
                                    "src": "21833:9:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 32753,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "pendingTradesId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4893,
                                  "src": "21833:25:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 32754,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21861:1:127",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "21833:29:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 32756,
                              "nodeType": "ExpressionStatement",
                              "src": "21833:29:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32760,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32716,
                                      "src": "21896:9:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 32761,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4889,
                                    "src": "21896:12:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32757,
                                    "name": "activeLoansSet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4623,
                                    "src": "21867:14:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                      "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                    }
                                  },
                                  "id": 32759,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "removeBytes32",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26887,
                                  "src": "21867:28:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                    "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                                  }
                                },
                                "id": 32762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21867:42:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 32763,
                              "nodeType": "ExpressionStatement",
                              "src": "21867:42:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32769,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32716,
                                      "src": "21961:9:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 32770,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4889,
                                    "src": "21961:12:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 32764,
                                      "name": "lenderLoanSets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4627,
                                      "src": "21914:14:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                                        "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set storage ref)"
                                      }
                                    },
                                    "id": 32767,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32765,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32716,
                                        "src": "21929:9:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 32766,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4911,
                                      "src": "21929:16:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "21914:32:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                      "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                    }
                                  },
                                  "id": 32768,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "removeBytes32",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26887,
                                  "src": "21914:46:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                    "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                                  }
                                },
                                "id": 32771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21914:60:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 32772,
                              "nodeType": "ExpressionStatement",
                              "src": "21914:60:127"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 32778,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32716,
                                      "src": "22030:9:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 32779,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4889,
                                    "src": "22030:12:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 32773,
                                      "name": "borrowerLoanSets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4631,
                                      "src": "21979:16:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                                        "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set storage ref)"
                                      }
                                    },
                                    "id": 32776,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32774,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32716,
                                        "src": "21996:9:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 32775,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "borrower",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4909,
                                      "src": "21996:18:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "21979:36:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                      "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                    }
                                  },
                                  "id": 32777,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "removeBytes32",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26887,
                                  "src": "21979:50:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                    "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                                  }
                                },
                                "id": 32780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21979:64:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 32781,
                              "nodeType": "ExpressionStatement",
                              "src": "21979:64:127"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to close a loan.\n\t * @param loanLocal The loan object.\n@param loanCloseAmount The amount to close: principal or lower.\n\t * ",
                  "id": 32796,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_closeLoan",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32719,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32716,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 32796,
                        "src": "21566:22:127",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 32715,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "21566:4:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32718,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 32796,
                        "src": "21590:23:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32717,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21590:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21565:49:127"
                  },
                  "returnParameters": {
                    "id": 32720,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21624:0:127"
                  },
                  "scope": 33026,
                  "src": "21546:583:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32982,
                    "nodeType": "Block",
                    "src": "22275:1956:127",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32808,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32800,
                                "src": "22332:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 32809,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4911,
                              "src": "22332:16:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32810,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32798,
                                "src": "22350:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 32811,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "22350:25:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 32807,
                            "name": "_payInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27616,
                            "src": "22319:12:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 32812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22319:57:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32813,
                        "nodeType": "ExpressionStatement",
                        "src": "22319:57:127"
                      },
                      {
                        "assignments": [
                          32815
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32815,
                            "name": "loanInterestLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 32982,
                            "src": "22381:38:127",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                              "typeString": "struct LoanInterestStruct.LoanInterest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 32814,
                              "name": "LoanInterest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4864,
                              "src": "22381:12:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32820,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 32816,
                            "name": "loanInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4619,
                            "src": "22422:12:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanInterest_$4864_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanInterestStruct.LoanInterest storage ref)"
                            }
                          },
                          "id": 32819,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32817,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32800,
                              "src": "22435:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                "typeString": "struct LoanStruct.Loan memory"
                              }
                            },
                            "id": 32818,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4889,
                            "src": "22435:12:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "22422:26:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanInterest_$4864_storage",
                            "typeString": "struct LoanInterestStruct.LoanInterest storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22381:67:127"
                      },
                      {
                        "assignments": [
                          32822
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32822,
                            "name": "lenderInterestLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 32982,
                            "src": "22452:42:127",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                              "typeString": "struct LenderInterestStruct.LenderInterest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 32821,
                              "name": "LenderInterest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4854,
                              "src": "22452:14:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32830,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 32823,
                              "name": "lenderInterest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4615,
                              "src": "22497:14:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$_$",
                                "typeString": "mapping(address => mapping(address => struct LenderInterestStruct.LenderInterest storage ref))"
                              }
                            },
                            "id": 32826,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32824,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32800,
                                "src": "22512:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 32825,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4911,
                              "src": "22512:16:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "22497:32:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$",
                              "typeString": "mapping(address => struct LenderInterestStruct.LenderInterest storage ref)"
                            }
                          },
                          "id": 32829,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32827,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32798,
                              "src": "22530:15:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              }
                            },
                            "id": 32828,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4875,
                            "src": "22530:25:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "22497:59:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LenderInterest_$4854_storage",
                            "typeString": "struct LenderInterestStruct.LenderInterest storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22452:104:127"
                      },
                      {
                        "assignments": [
                          32832
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32832,
                            "name": "interestTime",
                            "nodeType": "VariableDeclaration",
                            "scope": 32982,
                            "src": "22561:20:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32831,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22561:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32835,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 32833,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44984,
                            "src": "22584:5:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 32834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "22584:15:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22561:38:127"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 32836,
                            "name": "interestTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32832,
                            "src": "22607:12:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32837,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32800,
                              "src": "22622:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                "typeString": "struct LoanStruct.Loan memory"
                              }
                            },
                            "id": 32838,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "endTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4903,
                            "src": "22622:22:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22607:37:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 32846,
                        "nodeType": "IfStatement",
                        "src": "22603:90:127",
                        "trueBody": {
                          "id": 32845,
                          "nodeType": "Block",
                          "src": "22646:47:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 32840,
                                  "name": "interestTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32832,
                                  "src": "22651:12:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32841,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32800,
                                    "src": "22666:9:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                      "typeString": "struct LoanStruct.Loan memory"
                                    }
                                  },
                                  "id": 32842,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "endTimestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4903,
                                  "src": "22666:22:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "22651:37:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32844,
                              "nodeType": "ExpressionStatement",
                              "src": "22651:37:127"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 32848,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32815,
                              "src": "22736:17:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32849,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32800,
                                "src": "22758:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 32850,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4889,
                              "src": "22758:12:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32851,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32798,
                                "src": "22775:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 32852,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "22775:25:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32853,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32798,
                                "src": "22819:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 32854,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "22819:31:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32855,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32800,
                                "src": "22945:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 32856,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "borrower",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4909,
                              "src": "22945:18:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 32857,
                              "name": "interestTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32832,
                              "src": "22968:12:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 32847,
                            "name": "_settleFeeRewardForInterestExpense",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27366,
                            "src": "22697:34:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanInterest_$4864_storage_ptr_$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (struct LoanInterestStruct.LoanInterest storage pointer,bytes32,address,address,address,uint256)"
                            }
                          },
                          "id": 32858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22697:287:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32859,
                        "nodeType": "ExpressionStatement",
                        "src": "22697:287:127"
                      },
                      {
                        "assignments": [
                          32861
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32861,
                            "name": "owedPerDayRefund",
                            "nodeType": "VariableDeclaration",
                            "scope": 32982,
                            "src": "22989:24:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32860,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22989:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32862,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22989:24:127"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 32863,
                            "name": "closePrincipal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32802,
                            "src": "23021:14:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32864,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32800,
                              "src": "23038:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                "typeString": "struct LoanStruct.Loan memory"
                              }
                            },
                            "id": 32865,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "principal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4897,
                            "src": "23038:19:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23021:36:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 32885,
                          "nodeType": "Block",
                          "src": "23167:57:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32883,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 32880,
                                  "name": "owedPerDayRefund",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32861,
                                  "src": "23172:16:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32881,
                                    "name": "loanInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32815,
                                    "src": "23191:17:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                      "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                    }
                                  },
                                  "id": 32882,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "owedPerDay",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4859,
                                  "src": "23191:28:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23172:47:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32884,
                              "nodeType": "ExpressionStatement",
                              "src": "23172:47:127"
                            }
                          ]
                        },
                        "id": 32886,
                        "nodeType": "IfStatement",
                        "src": "23017:207:127",
                        "trueBody": {
                          "id": 32879,
                          "nodeType": "Block",
                          "src": "23059:102:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 32867,
                                  "name": "owedPerDayRefund",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32861,
                                  "src": "23064:16:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32874,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32800,
                                        "src": "23136:9:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                          "typeString": "struct LoanStruct.Loan memory"
                                        }
                                      },
                                      "id": 32875,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "principal",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4897,
                                      "src": "23136:19:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 32871,
                                          "name": "closePrincipal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32802,
                                          "src": "23116:14:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 32868,
                                            "name": "loanInterestLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32815,
                                            "src": "23083:17:127",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                              "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                            }
                                          },
                                          "id": 32869,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "owedPerDay",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4859,
                                          "src": "23083:28:127",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 32870,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "23083:32:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 32872,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "23083:48:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32873,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "23083:52:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 32876,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23083:73:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23064:92:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32878,
                              "nodeType": "ExpressionStatement",
                              "src": "23064:92:127"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32887,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32815,
                              "src": "23258:17:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            "id": 32889,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owedPerDay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4859,
                            "src": "23258:28:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 32893,
                                "name": "owedPerDayRefund",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32861,
                                "src": "23322:16:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32890,
                                  "name": "loanInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32815,
                                  "src": "23289:17:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                    "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                  }
                                },
                                "id": 32891,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owedPerDay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4859,
                                "src": "23289:28:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32892,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "23289:32:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 32894,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23289:50:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23258:81:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32896,
                        "nodeType": "ExpressionStatement",
                        "src": "23258:81:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32897,
                              "name": "lenderInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32822,
                              "src": "23343:19:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                              }
                            },
                            "id": 32899,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owedPerDay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4847,
                            "src": "23343:30:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 32903,
                                "name": "owedPerDayRefund",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32861,
                                "src": "23411:16:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32900,
                                  "name": "lenderInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32822,
                                  "src": "23376:19:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                    "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                  }
                                },
                                "id": 32901,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owedPerDay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4847,
                                "src": "23376:30:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32902,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "23376:34:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 32904,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23376:52:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23343:85:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32906,
                        "nodeType": "ExpressionStatement",
                        "src": "23343:85:127"
                      },
                      {
                        "assignments": [
                          32908
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32908,
                            "name": "interestRefundToBorrower",
                            "nodeType": "VariableDeclaration",
                            "scope": 32982,
                            "src": "23463:32:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32907,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23463:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32914,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 32912,
                              "name": "interestTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32832,
                              "src": "23525:12:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 32909,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32800,
                                "src": "23498:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 32910,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "endTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4903,
                              "src": "23498:22:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 32911,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "23498:26:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 32913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23498:40:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23463:75:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 32915,
                            "name": "interestRefundToBorrower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32908,
                            "src": "23542:24:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 32918,
                                "name": "owedPerDayRefund",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32861,
                                "src": "23598:16:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 32916,
                                "name": "interestRefundToBorrower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32908,
                                "src": "23569:24:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42153,
                              "src": "23569:28:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 32919,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23569:46:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23542:73:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32921,
                        "nodeType": "ExpressionStatement",
                        "src": "23542:73:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 32922,
                            "name": "interestRefundToBorrower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32908,
                            "src": "23619:24:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 32925,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23675:6:127",
                                "subdenomination": "days",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_86400_by_1",
                                  "typeString": "int_const 86400"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_86400_by_1",
                                  "typeString": "int_const 86400"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 32923,
                                "name": "interestRefundToBorrower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32908,
                                "src": "23646:24:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "23646:28:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 32926,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23646:36:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23619:63:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32928,
                        "nodeType": "ExpressionStatement",
                        "src": "23619:63:127"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 32932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 32929,
                            "name": "closePrincipal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32802,
                            "src": "23691:14:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32930,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32800,
                              "src": "23708:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                "typeString": "struct LoanStruct.Loan memory"
                              }
                            },
                            "id": 32931,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "principal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4897,
                            "src": "23708:19:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23691:36:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 32950,
                          "nodeType": "Block",
                          "src": "23838:44:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32948,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32944,
                                    "name": "loanInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32815,
                                    "src": "23843:17:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                      "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                    }
                                  },
                                  "id": 32946,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "depositTotal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4861,
                                  "src": "23843:30:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 32947,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23876:1:127",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "23843:34:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32949,
                              "nodeType": "ExpressionStatement",
                              "src": "23843:34:127"
                            }
                          ]
                        },
                        "id": 32951,
                        "nodeType": "IfStatement",
                        "src": "23687:195:127",
                        "trueBody": {
                          "id": 32943,
                          "nodeType": "Block",
                          "src": "23729:103:127",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 32941,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 32933,
                                    "name": "loanInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32815,
                                    "src": "23734:17:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                      "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                    }
                                  },
                                  "id": 32935,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "depositTotal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4861,
                                  "src": "23734:30:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 32939,
                                      "name": "interestRefundToBorrower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32908,
                                      "src": "23802:24:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 32936,
                                        "name": "loanInterestLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32815,
                                        "src": "23767:17:127",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                          "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                        }
                                      },
                                      "id": 32937,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "depositTotal",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4861,
                                      "src": "23767:30:127",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32938,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "23767:34:127",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 32940,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23767:60:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23734:93:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32942,
                              "nodeType": "ExpressionStatement",
                              "src": "23734:93:127"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32952,
                              "name": "lenderInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32822,
                              "src": "23931:19:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                              }
                            },
                            "id": 32954,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "principalTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4845,
                            "src": "23931:34:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 32958,
                                "name": "closePrincipal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32802,
                                "src": "24007:14:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 32955,
                                  "name": "lenderInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32822,
                                  "src": "23968:19:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                    "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                  }
                                },
                                "id": 32956,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "principalTotal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4845,
                                "src": "23968:34:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "23968:38:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 32959,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23968:54:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23931:91:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32961,
                        "nodeType": "ExpressionStatement",
                        "src": "23931:91:127"
                      },
                      {
                        "assignments": [
                          32963
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32963,
                            "name": "owedTotal",
                            "nodeType": "VariableDeclaration",
                            "scope": 32982,
                            "src": "24027:17:127",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32962,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "24027:7:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 32966,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 32964,
                            "name": "lenderInterestLocal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32822,
                            "src": "24047:19:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                              "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                            }
                          },
                          "id": 32965,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owedTotal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4849,
                          "src": "24047:29:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24027:49:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 32967,
                              "name": "lenderInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32822,
                              "src": "24080:19:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                              }
                            },
                            "id": 32969,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owedTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4849,
                            "src": "24080:29:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 32972,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 32970,
                                "name": "owedTotal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32963,
                                "src": "24112:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 32971,
                                "name": "interestRefundToBorrower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32908,
                                "src": "24124:24:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "24112:36:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 32976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24190:1:127",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "id": 32977,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "24112:79:127",
                            "trueExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 32975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 32973,
                                "name": "owedTotal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32963,
                                "src": "24151:9:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 32974,
                                "name": "interestRefundToBorrower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32908,
                                "src": "24163:24:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "24151:36:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24080:111:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32979,
                        "nodeType": "ExpressionStatement",
                        "src": "24080:111:127"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 32980,
                          "name": "interestRefundToBorrower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32908,
                          "src": "24203:24:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 32806,
                        "id": 32981,
                        "nodeType": "Return",
                        "src": "24196:31:127"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 32983,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_settleInterest",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32803,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32798,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 32983,
                        "src": "22160:33:127",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 32797,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "22160:10:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32800,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 32983,
                        "src": "22197:21:127",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 32799,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "22197:4:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32802,
                        "name": "closePrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 32983,
                        "src": "22222:22:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32801,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22222:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22156:91:127"
                  },
                  "returnParameters": {
                    "id": 32806,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32805,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 32983,
                        "src": "22266:7:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32804,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22266:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22265:9:127"
                  },
                  "scope": 33026,
                  "src": "22132:2099:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 33024,
                    "nodeType": "Block",
                    "src": "24477:482:127",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_CloseTypes_$31588",
                            "typeString": "enum LoanClosingsBase.CloseTypes"
                          },
                          "id": 33003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 33000,
                            "name": "closeType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32997,
                            "src": "24485:9:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_CloseTypes_$31588",
                              "typeString": "enum LoanClosingsBase.CloseTypes"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33001,
                              "name": "CloseTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31588,
                              "src": "24498:10:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_CloseTypes_$31588_$",
                                "typeString": "type(enum LoanClosingsBase.CloseTypes)"
                              }
                            },
                            "id": 33002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Liquidation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "24498:22:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_CloseTypes_$31588",
                              "typeString": "enum LoanClosingsBase.CloseTypes"
                            }
                          },
                          "src": "24485:35:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33023,
                        "nodeType": "IfStatement",
                        "src": "24481:474:127",
                        "trueBody": {
                          "eventCall": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33005,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32987,
                                  "src": "24545:9:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "id": 33006,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "borrower",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4909,
                                "src": "24545:18:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33007,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "24588:3:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 33008,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "24588:10:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33009,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32987,
                                  "src": "24618:9:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "id": 33010,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4889,
                                "src": "24618:12:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33011,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32987,
                                  "src": "24646:9:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "id": 33012,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4911,
                                "src": "24646:16:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33013,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32985,
                                  "src": "24678:15:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 33014,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "loanToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4875,
                                "src": "24678:25:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33015,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32985,
                                  "src": "24722:15:127",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 33016,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateralToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4877,
                                "src": "24722:31:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33017,
                                "name": "loanCloseAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32989,
                                "src": "24778:15:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33018,
                                "name": "collateralCloseAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32991,
                                "src": "24818:21:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33019,
                                "name": "collateralToLoanRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32993,
                                "src": "24870:20:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33020,
                                "name": "currentMargin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32995,
                                "src": "24920:13:127",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "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"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 33004,
                              "name": "Liquidate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5903,
                              "src": "24530:9:127",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                "typeString": "function (address,address,bytes32,address,address,address,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "id": 33021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24530:425:127",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 33022,
                          "nodeType": "EmitStatement",
                          "src": "24525:430:127"
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 33025,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_emitClosingEvents",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32998,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32985,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 33025,
                        "src": "24265:33:127",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 32984,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "24265:10:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32987,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 33025,
                        "src": "24302:21:127",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 32986,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "24302:4:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32989,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33025,
                        "src": "24327:23:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32988,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24327:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32991,
                        "name": "collateralCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33025,
                        "src": "24354:29:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32990,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24354:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32993,
                        "name": "collateralToLoanRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 33025,
                        "src": "24387:28:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32992,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24387:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32995,
                        "name": "currentMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 33025,
                        "src": "24419:21:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32994,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24419:7:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32997,
                        "name": "closeType",
                        "nodeType": "VariableDeclaration",
                        "scope": 33025,
                        "src": "24444:20:127",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_CloseTypes_$31588",
                          "typeString": "enum LoanClosingsBase.CloseTypes"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 32996,
                          "name": "CloseTypes",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 31588,
                          "src": "24444:10:127",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_CloseTypes_$31588",
                            "typeString": "enum LoanClosingsBase.CloseTypes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24261:206:127"
                  },
                  "returnParameters": {
                    "id": 32999,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24477:0:127"
                  },
                  "scope": 33026,
                  "src": "24234:725:127",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 33027,
              "src": "764:24197:127"
            }
          ],
          "src": "118:24844:127"
        },
        "id": 127
      },
      "contracts/modules/LoanClosingsWith.sol": {
        "ast": {
          "absolutePath": "contracts/modules/LoanClosingsWith.sol",
          "exportedSymbols": {
            "LoanClosingsWith": [
              34531
            ]
          },
          "id": 34532,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 33028,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:128"
            },
            {
              "id": 33029,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "142:33:128"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 33030,
              "nodeType": "ImportDirective",
              "scope": 34532,
              "sourceUnit": 4842,
              "src": "177:27:128",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/LoanClosingsEvents.sol",
              "file": "../events/LoanClosingsEvents.sol",
              "id": 33031,
              "nodeType": "ImportDirective",
              "scope": 34532,
              "sourceUnit": 5915,
              "src": "205:42:128",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/VaultController.sol",
              "file": "../mixins/VaultController.sol",
              "id": 33032,
              "nodeType": "ImportDirective",
              "scope": 34532,
              "sourceUnit": 28215,
              "src": "248:39:128",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/InterestUser.sol",
              "file": "../mixins/InterestUser.sol",
              "id": 33033,
              "nodeType": "ImportDirective",
              "scope": 34532,
              "sourceUnit": 27664,
              "src": "288:36:128",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/LiquidationHelper.sol",
              "file": "../mixins/LiquidationHelper.sol",
              "id": 33034,
              "nodeType": "ImportDirective",
              "scope": 34532,
              "sourceUnit": 27817,
              "src": "325:41:128",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/swaps/SwapsUser.sol",
              "file": "../swaps/SwapsUser.sol",
              "id": 33035,
              "nodeType": "ImportDirective",
              "scope": 34532,
              "sourceUnit": 43250,
              "src": "367:32:128",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILoanPool.sol",
              "file": "../interfaces/ILoanPool.sol",
              "id": 33036,
              "nodeType": "ImportDirective",
              "scope": 34532,
              "sourceUnit": 24718,
              "src": "400:37:128",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/RewardHelper.sol",
              "file": "../mixins/RewardHelper.sol",
              "id": 33037,
              "nodeType": "ImportDirective",
              "scope": 34532,
              "sourceUnit": 27962,
              "src": "438:36:128",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/ModuleCommonFunctionalities.sol",
              "file": "../mixins/ModuleCommonFunctionalities.sol",
              "id": 33038,
              "nodeType": "ImportDirective",
              "scope": 34532,
              "sourceUnit": 27833,
              "src": "475:51:128",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 33039,
                    "name": "LoanClosingsEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5914,
                    "src": "894:18:128",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanClosingsEvents_$5914",
                      "typeString": "contract LoanClosingsEvents"
                    }
                  },
                  "id": 33040,
                  "nodeType": "InheritanceSpecifier",
                  "src": "894:18:128"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 33041,
                    "name": "VaultController",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28214,
                    "src": "915:15:128",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VaultController_$28214",
                      "typeString": "contract VaultController"
                    }
                  },
                  "id": 33042,
                  "nodeType": "InheritanceSpecifier",
                  "src": "915:15:128"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 33043,
                    "name": "InterestUser",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27663,
                    "src": "933:12:128",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_InterestUser_$27663",
                      "typeString": "contract InterestUser"
                    }
                  },
                  "id": 33044,
                  "nodeType": "InheritanceSpecifier",
                  "src": "933:12:128"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 33045,
                    "name": "SwapsUser",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 43249,
                    "src": "948:9:128",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SwapsUser_$43249",
                      "typeString": "contract SwapsUser"
                    }
                  },
                  "id": 33046,
                  "nodeType": "InheritanceSpecifier",
                  "src": "948:9:128"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 33047,
                    "name": "RewardHelper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27961,
                    "src": "983:12:128",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_RewardHelper_$27961",
                      "typeString": "contract RewardHelper"
                    }
                  },
                  "id": 33048,
                  "nodeType": "InheritanceSpecifier",
                  "src": "983:12:128"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 33049,
                    "name": "ModuleCommonFunctionalities",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27832,
                    "src": "998:27:128",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModuleCommonFunctionalities_$27832",
                      "typeString": "contract ModuleCommonFunctionalities"
                    }
                  },
                  "id": 33050,
                  "nodeType": "InheritanceSpecifier",
                  "src": "998:27:128"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                5832,
                5914,
                6055,
                6341,
                27492,
                27663,
                27832,
                27961,
                28214,
                41125,
                41798,
                41829,
                43249
              ],
              "contractKind": "contract",
              "documentation": "@title LoanClosingsWith contract.\n@notice Close a loan w/deposit, close w/swap. There are 2 functions for ending a loan on the\n  protocol contract: closeWithSwap and closeWithDeposit. Margin trade\n  positions are always closed with a swap.\n * Loans are liquidated if the position goes below margin maintenance.\n",
              "fullyImplemented": true,
              "id": 34531,
              "linearizedBaseContracts": [
                34531,
                27832,
                27961,
                43249,
                27663,
                27492,
                5832,
                6341,
                28214,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913,
                5914,
                6055
              ],
              "name": "LoanClosingsWith",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 33053,
                  "name": "paySwapExcessToBorrowerThreshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 34531,
                  "src": "1226:73:128",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33051,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1226:7:128",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3130303030303030303030303030",
                    "id": 33052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1285:14:128",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10000000000000_by_1",
                      "typeString": "int_const 10000000000000"
                    },
                    "value": "10000000000000"
                  },
                  "visibility": "public"
                },
                {
                  "canonicalName": "LoanClosingsWith.CloseTypes",
                  "id": 33057,
                  "members": [
                    {
                      "id": 33054,
                      "name": "Deposit",
                      "nodeType": "EnumValue",
                      "src": "1321:7:128"
                    },
                    {
                      "id": 33055,
                      "name": "Swap",
                      "nodeType": "EnumValue",
                      "src": "1330:4:128"
                    },
                    {
                      "id": 33056,
                      "name": "Liquidation",
                      "nodeType": "EnumValue",
                      "src": "1336:11:128"
                    }
                  ],
                  "name": "CloseTypes",
                  "nodeType": "EnumDefinition",
                  "src": "1303:46:128"
                },
                {
                  "body": {
                    "id": 33060,
                    "nodeType": "Block",
                    "src": "1373:2:128",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 33061,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33058,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1363:2:128"
                  },
                  "returnParameters": {
                    "id": 33059,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1373:0:128"
                  },
                  "scope": 34531,
                  "src": "1352:23:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 33068,
                    "nodeType": "Block",
                    "src": "1398:38:128",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c6c6261636b206e6f7420616c6c6f776564",
                              "id": 33065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1409:22:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ad2d1476e23c49655ed3d169418af7587abbe0f378f28c369338d50deee2f5b0",
                                "typeString": "literal_string \"fallback not allowed\""
                              },
                              "value": "fallback not allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_ad2d1476e23c49655ed3d169418af7587abbe0f378f28c369338d50deee2f5b0",
                                "typeString": "literal_string \"fallback not allowed\""
                              }
                            ],
                            "id": 33064,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44999,
                              45000
                            ],
                            "referencedDeclaration": 45000,
                            "src": "1402:6:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 33066,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1402:30:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33067,
                        "nodeType": "ExpressionStatement",
                        "src": "1402:30:128"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 33069,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33062,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1386:2:128"
                  },
                  "returnParameters": {
                    "id": 33063,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1398:0:128"
                  },
                  "scope": 34531,
                  "src": "1378:58:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 33104,
                    "nodeType": "Block",
                    "src": "1494:287:128",
                    "statements": [
                      {
                        "assignments": [
                          33077
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33077,
                            "name": "prevModuleContractAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 33104,
                            "src": "1498:33:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 33076,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1498:7:128",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33083,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 33078,
                            "name": "logicTargets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4583,
                            "src": "1534:12:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                              "typeString": "mapping(bytes4 => address)"
                            }
                          },
                          "id": 33082,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33079,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45326,
                                "src": "1547:4:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_LoanClosingsWith_$34531",
                                  "typeString": "contract LoanClosingsWith"
                                }
                              },
                              "id": 33080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "closeWithDeposit",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 33131,
                              "src": "1547:21:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                                "typeString": "function (bytes32,address,uint256) payable external returns (uint256,uint256,address)"
                              }
                            },
                            "id": 33081,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1547:30:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1534:44:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1498:80:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33085,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45326,
                                  "src": "1593:4:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanClosingsWith_$34531",
                                    "typeString": "contract LoanClosingsWith"
                                  }
                                },
                                "id": 33086,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "closeWithDeposit",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 33131,
                                "src": "1593:21:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "function (bytes32,address,uint256) payable external returns (uint256,uint256,address)"
                                }
                              },
                              "id": 33087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1593:30:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33088,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33071,
                              "src": "1625:6:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 33084,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1582:10:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 33089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1582:50:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33090,
                        "nodeType": "ExpressionStatement",
                        "src": "1582:50:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33092,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45326,
                                  "src": "1647:4:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanClosingsWith_$34531",
                                    "typeString": "contract LoanClosingsWith"
                                  }
                                },
                                "id": 33093,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "closeWithSwap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 33163,
                                "src": "1647:18:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "function (bytes32,address,uint256,bool,bytes memory) external returns (uint256,uint256,address)"
                                }
                              },
                              "id": 33094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1647:27:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33095,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33071,
                              "src": "1676:6:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 33091,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1636:10:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 33096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1636:47:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33097,
                        "nodeType": "ExpressionStatement",
                        "src": "1636:47:128"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 33099,
                              "name": "prevModuleContractAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33077,
                              "src": "1723:25:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33100,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33071,
                              "src": "1750:6:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4c6f616e436c6f73696e677357697468",
                              "id": 33101,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1758:18:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a61724ce15c4c9e56270124f373fe4d4b5e22d00d362f932d341da09260a46bb",
                                "typeString": "literal_string \"LoanClosingsWith\""
                              },
                              "value": "LoanClosingsWith"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a61724ce15c4c9e56270124f373fe4d4b5e22d00d362f932d341da09260a46bb",
                                "typeString": "literal_string \"LoanClosingsWith\""
                              }
                            ],
                            "id": 33098,
                            "name": "ProtocolModuleContractReplaced",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6054,
                            "src": "1692:30:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32)"
                            }
                          },
                          "id": 33102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1692:85:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33103,
                        "nodeType": "EmitStatement",
                        "src": "1687:90:128"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 33105,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 33074,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 33073,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1484:9:128",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1484:9:128"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33072,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33071,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 33105,
                        "src": "1459:14:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33070,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1459:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1458:16:128"
                  },
                  "returnParameters": {
                    "id": 33075,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1494:0:128"
                  },
                  "scope": 34531,
                  "src": "1439:342:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 33130,
                    "nodeType": "Block",
                    "src": "2742:65:128",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 33125,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33107,
                              "src": "2771:6:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33126,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33109,
                              "src": "2779:8:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33127,
                              "name": "depositAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33111,
                              "src": "2789:13:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 33124,
                            "name": "_closeWithDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33297,
                            "src": "2753:17:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                              "typeString": "function (bytes32,address,uint256) returns (uint256,uint256,address)"
                            }
                          },
                          "id": 33128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2753:50:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                            "typeString": "tuple(uint256,uint256,address)"
                          }
                        },
                        "functionReturnParameters": 33123,
                        "id": 33129,
                        "nodeType": "Return",
                        "src": "2746:57:128"
                      }
                    ]
                  },
                  "documentation": "@notice Closes a loan by doing a deposit.\n\t * @dev Public wrapper for _closeWithDeposit internal function.\n\t * @param loanId The id of the loan.\n@param receiver The receiver of the remainder.\n@param depositAmount Defines how much of the position should be closed.\n  It is denominated in loan tokens. (e.g. rBTC on a iSUSD contract).\n    If depositAmount > principal, the complete loan will be closed\n    else deposit amount (partial closure).\n\t * @return loanCloseAmount The amount of the collateral token of the loan.\n@return withdrawAmount The withdraw amount in the collateral token.\n@return withdrawToken The loan token address.\n",
                  "id": 33131,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 33114,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 33113,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "2616:12:128",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2616:12:128"
                    },
                    {
                      "arguments": null,
                      "id": 33116,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 33115,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "2631:13:128",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2631:13:128"
                    }
                  ],
                  "name": "closeWithDeposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33112,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33107,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 33131,
                        "src": "2502:14:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 33106,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2502:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33109,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 33131,
                        "src": "2520:16:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33108,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2520:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33111,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33131,
                        "src": "2540:21:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33110,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2540:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2498:96:128"
                  },
                  "returnParameters": {
                    "id": 33123,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33118,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33131,
                        "src": "2660:23:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33117,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2660:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33120,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33131,
                        "src": "2688:22:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2688:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33122,
                        "name": "withdrawToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 33131,
                        "src": "2715:21:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33121,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2715:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2655:85:128"
                  },
                  "scope": 34531,
                  "src": "2473:334:128",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 33162,
                    "nodeType": "Block",
                    "src": "4217:134:128",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 33155,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33133,
                              "src": "4251:6:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33156,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33135,
                              "src": "4263:8:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33157,
                              "name": "swapAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33137,
                              "src": "4277:10:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33158,
                              "name": "returnTokenIsCollateral",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33139,
                              "src": "4293:23:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 33159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4322:2:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 33154,
                            "name": "_closeWithSwap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33542,
                            "src": "4231:14:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                              "typeString": "function (bytes32,address,uint256,bool,bytes memory) returns (uint256,uint256,address)"
                            }
                          },
                          "id": 33160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4231:116:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                            "typeString": "tuple(uint256,uint256,address)"
                          }
                        },
                        "functionReturnParameters": 33153,
                        "id": 33161,
                        "nodeType": "Return",
                        "src": "4221:126:128"
                      }
                    ]
                  },
                  "documentation": "@notice Close a position by swapping the collateral back to loan tokens\npaying the lender and withdrawing the remainder.\n\t * @dev Public wrapper for _closeWithSwap internal function.\n\t * @param loanId The id of the loan.\n@param receiver The receiver of the remainder (unused collateral + profit).\n@param swapAmount Defines how much of the position should be closed and\n  is denominated in collateral tokens.\n     If swapAmount >= collateral, the complete position will be closed.\n     Else if returnTokenIsCollateral, (swapAmount/collateral) * principal will be swapped (partial closure).\n     Else coveredPrincipal\n@param returnTokenIsCollateral Defines if the remainder should be paid out\n  in collateral tokens or underlying loan tokens.\n\t * @return loanCloseAmount The amount of the collateral token of the loan.\n@return withdrawAmount The withdraw amount in the collateral token.\n@return withdrawToken The loan token address.\n",
                  "id": 33163,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 33144,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 33143,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "4091:12:128",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4091:12:128"
                    },
                    {
                      "arguments": null,
                      "id": 33146,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 33145,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "4106:13:128",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4106:13:128"
                    }
                  ],
                  "name": "closeWithSwap",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33142,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33133,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 33163,
                        "src": "3839:14:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 33132,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3839:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33135,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 33163,
                        "src": "3857:16:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33134,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3857:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33137,
                        "name": "swapAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33163,
                        "src": "3877:18:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33136,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3877:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33139,
                        "name": "returnTokenIsCollateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 33163,
                        "src": "3933:28:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 33138,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3933:4:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33141,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 33163,
                        "src": "4028:12:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 33140,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4028:5:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3835:244:128"
                  },
                  "returnParameters": {
                    "id": 33153,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33148,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33163,
                        "src": "4135:23:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33147,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4135:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33150,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33163,
                        "src": "4163:22:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33149,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4163:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33152,
                        "name": "withdrawToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 33163,
                        "src": "4190:21:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33151,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4190:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4130:85:128"
                  },
                  "scope": 34531,
                  "src": "3813:538:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 33296,
                    "nodeType": "Block",
                    "src": "5195:1233:128",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 33181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 33179,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33169,
                                "src": "5207:13:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 33180,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5224:1:128",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5207:18:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6465706f736974416d6f756e74203d3d2030",
                              "id": 33182,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5227:20:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a9f245d56057d3731f0974ee1df7c46ab8b414acf140c0cae152e585156f7b75",
                                "typeString": "literal_string \"depositAmount == 0\""
                              },
                              "value": "depositAmount == 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a9f245d56057d3731f0974ee1df7c46ab8b414acf140c0cae152e585156f7b75",
                                "typeString": "literal_string \"depositAmount == 0\""
                              }
                            ],
                            "id": 33178,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5199:7:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 33183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5199:49:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33184,
                        "nodeType": "ExpressionStatement",
                        "src": "5199:49:128"
                      },
                      {
                        "assignments": [
                          33186
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33186,
                            "name": "loanLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 33296,
                            "src": "5253:22:128",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                              "typeString": "struct LoanStruct.Loan"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 33185,
                              "name": "Loan",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4912,
                              "src": "5253:4:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33190,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 33187,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4587,
                            "src": "5278:5:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                            }
                          },
                          "id": 33189,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 33188,
                            "name": "loanId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33165,
                            "src": "5284:6:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5278:13:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage",
                            "typeString": "struct LoanStruct.Loan storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5253:38:128"
                      },
                      {
                        "assignments": [
                          33192
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33192,
                            "name": "loanParamsLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 33296,
                            "src": "5295:34:128",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 33191,
                              "name": "LoanParams",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4884,
                              "src": "5295:10:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33197,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 33193,
                            "name": "loanParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4591,
                            "src": "5332:10:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                            }
                          },
                          "id": 33196,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33194,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33186,
                              "src": "5343:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 33195,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanParamsId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4891,
                            "src": "5343:22:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5332:34:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                            "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5295:71:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 33199,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33186,
                              "src": "5387:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33200,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33192,
                              "src": "5398:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            ],
                            "id": 33198,
                            "name": "_checkAuthorized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33581,
                            "src": "5370:16:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Loan_$4912_memory_ptr_$_t_struct$_LoanParams_$4884_memory_ptr_$returns$__$",
                              "typeString": "function (struct LoanStruct.Loan memory,struct LoanParamsStruct.LoanParams memory) view"
                            }
                          },
                          "id": 33201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5370:44:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33202,
                        "nodeType": "ExpressionStatement",
                        "src": "5370:44:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 33203,
                            "name": "loanCloseAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33172,
                            "src": "5467:15:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 33207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 33204,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33169,
                                "src": "5485:13:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33205,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33186,
                                  "src": "5501:9:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                "id": 33206,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "principal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4897,
                                "src": "5501:19:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5485:35:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 33210,
                              "name": "depositAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33169,
                              "src": "5545:13:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 33211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "5485:73:128",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33208,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33186,
                                "src": "5523:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 33209,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "principal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4897,
                              "src": "5523:19:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5467:91:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33213,
                        "nodeType": "ExpressionStatement",
                        "src": "5467:91:128"
                      },
                      {
                        "assignments": [
                          33215
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33215,
                            "name": "loanCloseAmountLessInterest",
                            "nodeType": "VariableDeclaration",
                            "scope": 33296,
                            "src": "5563:35:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 33214,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5563:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33222,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 33217,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33186,
                              "src": "5628:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33218,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33192,
                              "src": "5639:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33219,
                              "name": "loanCloseAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33172,
                              "src": "5656:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33220,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33167,
                              "src": "5673:8:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 33216,
                            "name": "_settleInterestToPrincipal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33667,
                            "src": "5601:26:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Loan_$4912_memory_ptr_$_t_struct$_LoanParams_$4884_memory_ptr_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (struct LoanStruct.Loan memory,struct LoanParamsStruct.LoanParams memory,uint256,address) returns (uint256)"
                            }
                          },
                          "id": 33221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5601:81:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5563:119:128"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 33223,
                            "name": "loanCloseAmountLessInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33215,
                            "src": "5691:27:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5722:1:128",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5691:32:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33235,
                        "nodeType": "IfStatement",
                        "src": "5687:149:128",
                        "trueBody": {
                          "id": 33234,
                          "nodeType": "Block",
                          "src": "5725:111:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33227,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33192,
                                      "src": "5758:15:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    "id": 33228,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "5758:25:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33229,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33186,
                                      "src": "5785:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 33230,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4911,
                                    "src": "5785:16:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33231,
                                    "name": "loanCloseAmountLessInterest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33215,
                                    "src": "5803:27:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33226,
                                  "name": "_returnPrincipalWithDeposit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33765,
                                  "src": "5730:27:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 33232,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5730:101:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 33233,
                              "nodeType": "ExpressionStatement",
                              "src": "5730:101:128"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 33236,
                            "name": "loanCloseAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33172,
                            "src": "5844:15:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33237,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33186,
                              "src": "5863:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 33238,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "principal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4897,
                            "src": "5863:19:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5844:38:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 33258,
                          "nodeType": "Block",
                          "src": "5937:93:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33256,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33246,
                                  "name": "withdrawAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33174,
                                  "src": "5942:14:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 33253,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33186,
                                        "src": "6005:9:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 33254,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "principal",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4897,
                                      "src": "6005:19:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 33250,
                                          "name": "loanCloseAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33172,
                                          "src": "5984:15:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 33247,
                                            "name": "loanLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 33186,
                                            "src": "5959:9:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                              "typeString": "struct LoanStruct.Loan storage pointer"
                                            }
                                          },
                                          "id": 33248,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "collateral",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4899,
                                          "src": "5959:20:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 33249,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "5959:24:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 33251,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5959:41:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33252,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "5959:45:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 33255,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5959:66:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5942:83:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33257,
                              "nodeType": "ExpressionStatement",
                              "src": "5942:83:128"
                            }
                          ]
                        },
                        "id": 33259,
                        "nodeType": "IfStatement",
                        "src": "5840:190:128",
                        "trueBody": {
                          "id": 33245,
                          "nodeType": "Block",
                          "src": "5884:47:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33240,
                                  "name": "withdrawAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33174,
                                  "src": "5889:14:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33241,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33186,
                                    "src": "5906:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 33242,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "collateral",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4899,
                                  "src": "5906:20:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5889:37:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33244,
                              "nodeType": "ExpressionStatement",
                              "src": "5889:37:128"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 33260,
                            "name": "withdrawToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33176,
                            "src": "6034:13:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33261,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33192,
                              "src": "6050:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            },
                            "id": 33262,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "collateralToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4877,
                            "src": "6050:31:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6034:47:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 33264,
                        "nodeType": "ExpressionStatement",
                        "src": "6034:47:128"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 33265,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33174,
                            "src": "6090:14:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6108:1:128",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6090:19:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33285,
                        "nodeType": "IfStatement",
                        "src": "6086:159:128",
                        "trueBody": {
                          "id": 33284,
                          "nodeType": "Block",
                          "src": "6111:134:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33268,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33186,
                                    "src": "6116:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 33270,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "collateral",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4899,
                                  "src": "6116:20:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 33274,
                                      "name": "withdrawAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33174,
                                      "src": "6164:14:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 33271,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33186,
                                        "src": "6139:9:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 33272,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "collateral",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4899,
                                      "src": "6139:20:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33273,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "6139:24:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 33275,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6139:40:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6116:63:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33277,
                              "nodeType": "ExpressionStatement",
                              "src": "6116:63:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 33279,
                                    "name": "withdrawToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33176,
                                    "src": "6200:13:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33280,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33167,
                                    "src": "6215:8:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33281,
                                    "name": "withdrawAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33174,
                                    "src": "6225:14:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33278,
                                  "name": "_withdrawAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34076,
                                  "src": "6185:14:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 33282,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6185:55:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 33283,
                              "nodeType": "ExpressionStatement",
                              "src": "6185:55:128"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 33287,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33186,
                              "src": "6268:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33288,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33192,
                              "src": "6282:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33289,
                              "name": "loanCloseAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33172,
                              "src": "6302:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33290,
                              "name": "withdrawAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33174,
                              "src": "6322:14:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 33291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6367:1:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33292,
                                "name": "CloseTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33057,
                                "src": "6402:10:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_CloseTypes_$33057_$",
                                  "typeString": "type(enum LoanClosingsWith.CloseTypes)"
                                }
                              },
                              "id": 33293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Deposit",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6402:18:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_CloseTypes_$33057",
                                "typeString": "enum LoanClosingsWith.CloseTypes"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_enum$_CloseTypes_$33057",
                                "typeString": "enum LoanClosingsWith.CloseTypes"
                              }
                            ],
                            "id": 33286,
                            "name": "_finalizeClose",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34161,
                            "src": "6249:14:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Loan_$4912_storage_ptr_$_t_struct$_LoanParams_$4884_storage_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_CloseTypes_$33057_$returns$__$",
                              "typeString": "function (struct LoanStruct.Loan storage pointer,struct LoanParamsStruct.LoanParams storage pointer,uint256,uint256,uint256,enum LoanClosingsWith.CloseTypes)"
                            }
                          },
                          "id": 33294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6249:175:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33295,
                        "nodeType": "ExpressionStatement",
                        "src": "6249:175:128"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function for closing a loan by doing a deposit.\n\t * @param loanId The id of the loan.\n@param receiver The receiver of the remainder.\n@param depositAmount Defines how much of the position should be closed.\n  It is denominated in loan tokens.\n    If depositAmount > principal, the complete loan will be closed\n    else deposit amount (partial closure).\n\t * @return loanCloseAmount The amount of the collateral token of the loan.\n@return withdrawAmount The withdraw amount in the collateral token.\n@return withdrawToken The loan token address.\n",
                  "id": 33297,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_closeWithDeposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33170,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33165,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 33297,
                        "src": "4994:14:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 33164,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4994:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33167,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 33297,
                        "src": "5012:16:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33166,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5012:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33169,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33297,
                        "src": "5032:21:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33168,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5032:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4990:96:128"
                  },
                  "returnParameters": {
                    "id": 33177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33172,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33297,
                        "src": "5113:23:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33171,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5113:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33174,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33297,
                        "src": "5141:22:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33173,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5141:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33176,
                        "name": "withdrawToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 33297,
                        "src": "5168:21:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33175,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5168:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5108:85:128"
                  },
                  "scope": 34531,
                  "src": "4964:1464:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 33541,
                    "nodeType": "Block",
                    "src": "7650:3739:128",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 33319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 33317,
                                "name": "swapAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33303,
                                "src": "7662:10:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 33318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7676:1:128",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7662:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "73776170416d6f756e74203d3d2030",
                              "id": 33320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7679:17:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c8e38fa79721ee463955600c5fb43a06ab752742fe935d1af1d372f9c43bf887",
                                "typeString": "literal_string \"swapAmount == 0\""
                              },
                              "value": "swapAmount == 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c8e38fa79721ee463955600c5fb43a06ab752742fe935d1af1d372f9c43bf887",
                                "typeString": "literal_string \"swapAmount == 0\""
                              }
                            ],
                            "id": 33316,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7654:7:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 33321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7654:43:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33322,
                        "nodeType": "ExpressionStatement",
                        "src": "7654:43:128"
                      },
                      {
                        "assignments": [
                          33324
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33324,
                            "name": "loanLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 33541,
                            "src": "7702:22:128",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                              "typeString": "struct LoanStruct.Loan"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 33323,
                              "name": "Loan",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4912,
                              "src": "7702:4:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33328,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 33325,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4587,
                            "src": "7727:5:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                            }
                          },
                          "id": 33327,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 33326,
                            "name": "loanId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33299,
                            "src": "7733:6:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7727:13:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage",
                            "typeString": "struct LoanStruct.Loan storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7702:38:128"
                      },
                      {
                        "assignments": [
                          33330
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33330,
                            "name": "loanParamsLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 33541,
                            "src": "7744:34:128",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 33329,
                              "name": "LoanParams",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4884,
                              "src": "7744:10:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33335,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 33331,
                            "name": "loanParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4591,
                            "src": "7781:10:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                            }
                          },
                          "id": 33334,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33332,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33324,
                              "src": "7792:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 33333,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanParamsId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4891,
                            "src": "7792:22:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7781:34:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                            "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7744:71:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 33337,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33324,
                              "src": "7836:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33338,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33330,
                              "src": "7847:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            ],
                            "id": 33336,
                            "name": "_checkAuthorized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33581,
                            "src": "7819:16:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Loan_$4912_memory_ptr_$_t_struct$_LoanParams_$4884_memory_ptr_$returns$__$",
                              "typeString": "function (struct LoanStruct.Loan memory,struct LoanParamsStruct.LoanParams memory) view"
                            }
                          },
                          "id": 33339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7819:44:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33340,
                        "nodeType": "ExpressionStatement",
                        "src": "7819:44:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 33341,
                            "name": "swapAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33303,
                            "src": "7907:10:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 33345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 33342,
                                "name": "swapAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33303,
                                "src": "7920:10:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33343,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33324,
                                  "src": "7933:9:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                "id": 33344,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4899,
                                "src": "7933:20:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7920:33:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 33348,
                              "name": "swapAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33303,
                              "src": "7979:10:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 33349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "7920:69:128",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33346,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33324,
                                "src": "7956:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 33347,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4899,
                              "src": "7956:20:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7907:82:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33351,
                        "nodeType": "ExpressionStatement",
                        "src": "7907:82:128"
                      },
                      {
                        "assignments": [
                          33353
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33353,
                            "name": "loanCloseAmountLessInterest",
                            "nodeType": "VariableDeclaration",
                            "scope": 33541,
                            "src": "7994:35:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 33352,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7994:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33354,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7994:35:128"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 33360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 33355,
                              "name": "swapAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33303,
                              "src": "8037:10:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33356,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33324,
                                "src": "8051:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 33357,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4899,
                              "src": "8051:20:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8037:34:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 33359,
                            "name": "returnTokenIsCollateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33305,
                            "src": "8075:23:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8037:61:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 33401,
                          "nodeType": "Block",
                          "src": "8852:221:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33399,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33397,
                                  "name": "loanCloseAmountLessInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33353,
                                  "src": "9037:27:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33398,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9067:1:128",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9037:31:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33400,
                              "nodeType": "ExpressionStatement",
                              "src": "9037:31:128"
                            }
                          ]
                        },
                        "id": 33402,
                        "nodeType": "IfStatement",
                        "src": "8033:1040:128",
                        "trueBody": {
                          "id": 33396,
                          "nodeType": "Block",
                          "src": "8100:746:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33361,
                                  "name": "loanCloseAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33310,
                                  "src": "8408:15:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 33365,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 33362,
                                      "name": "swapAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33303,
                                      "src": "8426:10:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 33363,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33324,
                                        "src": "8440:9:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 33364,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "collateral",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4899,
                                      "src": "8440:20:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8426:34:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 33374,
                                          "name": "loanLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33324,
                                          "src": "8533:9:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                            "typeString": "struct LoanStruct.Loan storage pointer"
                                          }
                                        },
                                        "id": 33375,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "collateral",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4899,
                                        "src": "8533:20:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 33371,
                                            "name": "swapAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 33303,
                                            "src": "8517:10:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 33368,
                                              "name": "loanLocal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33324,
                                              "src": "8493:9:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                                "typeString": "struct LoanStruct.Loan storage pointer"
                                              }
                                            },
                                            "id": 33369,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "principal",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4897,
                                            "src": "8493:19:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 33370,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42153,
                                          "src": "8493:23:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 33372,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8493:35:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 33373,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42169,
                                      "src": "8493:39:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 33376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8493:61:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 33377,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "8426:128:128",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33366,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33324,
                                      "src": "8467:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 33367,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "principal",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4897,
                                    "src": "8467:19:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8408:146:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33379,
                              "nodeType": "ExpressionStatement",
                              "src": "8408:146:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 33383,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 33381,
                                      "name": "loanCloseAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33310,
                                      "src": "8567:15:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33382,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8586:1:128",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "8567:20:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6c6f616e436c6f7365416d6f756e74203d3d2030",
                                    "id": 33384,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8589:22:128",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_bdfce7f708ff911a1546b2aa84d28d1dc8aa6c64bc6dfe1737ee4eef54802ed8",
                                      "typeString": "literal_string \"loanCloseAmount == 0\""
                                    },
                                    "value": "loanCloseAmount == 0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_bdfce7f708ff911a1546b2aa84d28d1dc8aa6c64bc6dfe1737ee4eef54802ed8",
                                      "typeString": "literal_string \"loanCloseAmount == 0\""
                                    }
                                  ],
                                  "id": 33380,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "8559:7:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 33385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8559:53:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 33386,
                              "nodeType": "ExpressionStatement",
                              "src": "8559:53:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33387,
                                  "name": "loanCloseAmountLessInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33353,
                                  "src": "8730:27:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 33389,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33324,
                                      "src": "8787:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 33390,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33330,
                                      "src": "8798:15:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 33391,
                                      "name": "loanCloseAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33310,
                                      "src": "8815:15:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 33392,
                                      "name": "receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33301,
                                      "src": "8832:8:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      },
                                      {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 33388,
                                    "name": "_settleInterestToPrincipal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33667,
                                    "src": "8760:26:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Loan_$4912_memory_ptr_$_t_struct$_LoanParams_$4884_memory_ptr_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (struct LoanStruct.Loan memory,struct LoanParamsStruct.LoanParams memory,uint256,address) returns (uint256)"
                                    }
                                  },
                                  "id": 33393,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8760:81:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8730:111:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33395,
                              "nodeType": "ExpressionStatement",
                              "src": "8730:111:128"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          33404
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33404,
                            "name": "coveredPrincipal",
                            "nodeType": "VariableDeclaration",
                            "scope": 33541,
                            "src": "9077:24:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 33403,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9077:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33405,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9077:24:128"
                      },
                      {
                        "assignments": [
                          33407
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33407,
                            "name": "usedCollateral",
                            "nodeType": "VariableDeclaration",
                            "scope": 33541,
                            "src": "9105:22:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 33406,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9105:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33408,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9105:22:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 33409,
                                "name": "coveredPrincipal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33404,
                                "src": "9220:16:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33410,
                                "name": "usedCollateral",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33407,
                                "src": "9238:14:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33411,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33312,
                                "src": "9254:14:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33412,
                                "name": "swapAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33303,
                                "src": "9270:10:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 33413,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "9219:62:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 33415,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33324,
                                "src": "9312:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33416,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33330,
                                "src": "9326:15:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33417,
                                "name": "swapAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33303,
                                "src": "9346:10:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33418,
                                "name": "loanCloseAmountLessInterest",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33353,
                                "src": "9479:27:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33419,
                                "name": "returnTokenIsCollateral",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33305,
                                "src": "9617:23:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33420,
                                "name": "loanDataBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33307,
                                "src": "9645:13:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 33414,
                              "name": "_coverPrincipalWithSwap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33980,
                              "src": "9284:23:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Loan_$4912_memory_ptr_$_t_struct$_LoanParams_$4884_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (struct LoanStruct.Loan memory,struct LoanParamsStruct.LoanParams memory,uint256,uint256,bool,bytes memory) returns (uint256,uint256,uint256,uint256)"
                              }
                            },
                            "id": 33421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9284:378:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "9219:443:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33423,
                        "nodeType": "ExpressionStatement",
                        "src": "9219:443:128"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 33424,
                            "name": "loanCloseAmountLessInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33353,
                            "src": "9671:27:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9702:1:128",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9671:32:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 33479,
                          "nodeType": "Block",
                          "src": "10386:114:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33475,
                                  "name": "loanCloseAmountLessInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33353,
                                  "src": "10449:27:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 33476,
                                  "name": "coveredPrincipal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33404,
                                  "src": "10479:16:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10449:46:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33478,
                              "nodeType": "ExpressionStatement",
                              "src": "10449:46:128"
                            }
                          ]
                        },
                        "id": 33480,
                        "nodeType": "IfStatement",
                        "src": "9667:833:128",
                        "trueBody": {
                          "id": 33474,
                          "nodeType": "Block",
                          "src": "9705:675:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33427,
                                  "name": "loanCloseAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33310,
                                  "src": "9837:15:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 33428,
                                  "name": "coveredPrincipal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33404,
                                  "src": "9855:16:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9837:34:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33430,
                              "nodeType": "ExpressionStatement",
                              "src": "9837:34:128"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33434,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33431,
                                  "name": "coveredPrincipal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33404,
                                  "src": "9880:16:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33432,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33324,
                                    "src": "9900:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 33433,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "principal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4897,
                                  "src": "9900:19:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9880:39:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33447,
                              "nodeType": "IfStatement",
                              "src": "9876:136:128",
                              "trueBody": {
                                "id": 33446,
                                "nodeType": "Block",
                                "src": "9921:91:128",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33444,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 33435,
                                        "name": "loanCloseAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33310,
                                        "src": "9927:15:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 33441,
                                              "name": "loanLocal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33324,
                                              "src": "9985:9:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                                "typeString": "struct LoanStruct.Loan storage pointer"
                                              }
                                            },
                                            "id": 33442,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "collateral",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4899,
                                            "src": "9985:20:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 33438,
                                                "name": "usedCollateral",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 33407,
                                                "src": "9965:14:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 33436,
                                                "name": "loanCloseAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 33310,
                                                "src": "9945:15:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 33437,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 42153,
                                              "src": "9945:19:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 33439,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9945:35:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 33440,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "div",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42169,
                                          "src": "9945:39:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 33443,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9945:61:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9927:79:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33445,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9927:79:128"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 33451,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 33449,
                                      "name": "loanCloseAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33310,
                                      "src": "10024:15:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33450,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10043:1:128",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "10024:20:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6c6f616e436c6f7365416d6f756e74203d3d2030",
                                    "id": 33452,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10046:22:128",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_bdfce7f708ff911a1546b2aa84d28d1dc8aa6c64bc6dfe1737ee4eef54802ed8",
                                      "typeString": "literal_string \"loanCloseAmount == 0\""
                                    },
                                    "value": "loanCloseAmount == 0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_bdfce7f708ff911a1546b2aa84d28d1dc8aa6c64bc6dfe1737ee4eef54802ed8",
                                      "typeString": "literal_string \"loanCloseAmount == 0\""
                                    }
                                  ],
                                  "id": 33448,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "10016:7:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 33453,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10016:53:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 33454,
                              "nodeType": "ExpressionStatement",
                              "src": "10016:53:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33462,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33455,
                                  "name": "loanCloseAmountLessInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33353,
                                  "src": "10121:27:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 33457,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33324,
                                      "src": "10178:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 33458,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33330,
                                      "src": "10189:15:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 33459,
                                      "name": "loanCloseAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33310,
                                      "src": "10206:15:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 33460,
                                      "name": "receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33301,
                                      "src": "10223:8:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      },
                                      {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 33456,
                                    "name": "_settleInterestToPrincipal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33667,
                                    "src": "10151:26:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Loan_$4912_memory_ptr_$_t_struct$_LoanParams_$4884_memory_ptr_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (struct LoanStruct.Loan memory,struct LoanParamsStruct.LoanParams memory,uint256,address) returns (uint256)"
                                    }
                                  },
                                  "id": 33461,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10151:81:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10121:111:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33463,
                              "nodeType": "ExpressionStatement",
                              "src": "10121:111:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33464,
                                  "name": "withdrawAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33312,
                                  "src": "10289:14:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 33470,
                                      "name": "loanCloseAmountLessInterest",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33353,
                                      "src": "10347:27:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 33467,
                                          "name": "coveredPrincipal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33404,
                                          "src": "10325:16:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 33465,
                                          "name": "withdrawAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33312,
                                          "src": "10306:14:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 33466,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "add",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42076,
                                        "src": "10306:18:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 33468,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10306:36:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33469,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "10306:40:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 33471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10306:69:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10289:86:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33473,
                              "nodeType": "ExpressionStatement",
                              "src": "10289:86:128"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 33484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 33482,
                                "name": "loanCloseAmountLessInterest",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33353,
                                "src": "10512:27:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 33483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10543:1:128",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "10512:32:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "636c6f7365416d6f756e7420697320302061667465722073776170",
                              "id": 33485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10546:29:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dc4a0d80be6cdfc9c280f2ac6db4243a3c7ead57a9f1666258e8c5dd1a376002",
                                "typeString": "literal_string \"closeAmount is 0 after swap\""
                              },
                              "value": "closeAmount is 0 after swap"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dc4a0d80be6cdfc9c280f2ac6db4243a3c7ead57a9f1666258e8c5dd1a376002",
                                "typeString": "literal_string \"closeAmount is 0 after swap\""
                              }
                            ],
                            "id": 33481,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10504:7:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 33486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10504:72:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33487,
                        "nodeType": "ExpressionStatement",
                        "src": "10504:72:128"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 33488,
                            "name": "usedCollateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33407,
                            "src": "10662:14:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10680:1:128",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10662:19:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33502,
                        "nodeType": "IfStatement",
                        "src": "10658:98:128",
                        "trueBody": {
                          "id": 33501,
                          "nodeType": "Block",
                          "src": "10683:73:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33499,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33491,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33324,
                                    "src": "10688:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 33493,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "collateral",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4899,
                                  "src": "10688:20:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 33497,
                                      "name": "usedCollateral",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33407,
                                      "src": "10736:14:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 33494,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33324,
                                        "src": "10711:9:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 33495,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "collateral",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4899,
                                      "src": "10711:20:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33496,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "10711:24:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 33498,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10711:40:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10688:63:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33500,
                              "nodeType": "ExpressionStatement",
                              "src": "10688:63:128"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33504,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33330,
                                "src": "10952:15:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 33505,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "10952:25:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33506,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33324,
                                "src": "10979:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 33507,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4911,
                              "src": "10979:16:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33508,
                              "name": "loanCloseAmountLessInterest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33353,
                              "src": "10997:27:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 33503,
                            "name": "vaultWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28128,
                            "src": "10938:13:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 33509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10938:87:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33510,
                        "nodeType": "ExpressionStatement",
                        "src": "10938:87:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 33511,
                            "name": "withdrawToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33314,
                            "src": "11030:13:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "id": 33512,
                              "name": "returnTokenIsCollateral",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33305,
                              "src": "11046:23:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33515,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33330,
                                "src": "11106:15:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 33516,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "11106:25:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 33517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "11046:85:128",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33513,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33330,
                                "src": "11072:15:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 33514,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "11072:31:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11030:101:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 33519,
                        "nodeType": "ExpressionStatement",
                        "src": "11030:101:128"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 33520,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33312,
                            "src": "11140:14:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11158:1:128",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11140:19:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33530,
                        "nodeType": "IfStatement",
                        "src": "11136:90:128",
                        "trueBody": {
                          "id": 33529,
                          "nodeType": "Block",
                          "src": "11161:65:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 33524,
                                    "name": "withdrawToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33314,
                                    "src": "11181:13:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33525,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33301,
                                    "src": "11196:8:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33526,
                                    "name": "withdrawAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33312,
                                    "src": "11206:14:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33523,
                                  "name": "_withdrawAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34076,
                                  "src": "11166:14:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 33527,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11166:55:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 33528,
                              "nodeType": "ExpressionStatement",
                              "src": "11166:55:128"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 33532,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33324,
                              "src": "11249:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33533,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33330,
                              "src": "11263:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33534,
                              "name": "loanCloseAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33310,
                              "src": "11283:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33535,
                              "name": "usedCollateral",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33407,
                              "src": "11303:14:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33536,
                              "name": "swapAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33303,
                              "src": "11322:10:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33537,
                                "name": "CloseTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33057,
                                "src": "11366:10:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_CloseTypes_$33057_$",
                                  "typeString": "type(enum LoanClosingsWith.CloseTypes)"
                                }
                              },
                              "id": 33538,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Swap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11366:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_CloseTypes_$33057",
                                "typeString": "enum LoanClosingsWith.CloseTypes"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_CloseTypes_$33057",
                                "typeString": "enum LoanClosingsWith.CloseTypes"
                              }
                            ],
                            "id": 33531,
                            "name": "_finalizeClose",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34161,
                            "src": "11230:14:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Loan_$4912_storage_ptr_$_t_struct$_LoanParams_$4884_storage_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_CloseTypes_$33057_$returns$__$",
                              "typeString": "function (struct LoanStruct.Loan storage pointer,struct LoanParamsStruct.LoanParams storage pointer,uint256,uint256,uint256,enum LoanClosingsWith.CloseTypes)"
                            }
                          },
                          "id": 33539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11230:155:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33540,
                        "nodeType": "ExpressionStatement",
                        "src": "11230:155:128"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function for closing a position by swapping the\ncollateral back to loan tokens, paying the lender and withdrawing\nthe remainder.\n\t * @param loanId The id of the loan.\n@param receiver The receiver of the remainder (unused collatral + profit).\n@param swapAmount Defines how much of the position should be closed and\n  is denominated in collateral tokens.\n    If swapAmount >= collateral, the complete position will be closed.\n    Else if returnTokenIsCollateral, (swapAmount/collateral) * principal will be swapped (partial closure).\n    Else coveredPrincipal\n@param returnTokenIsCollateral Defines if the remainder should be paid\n  out in collateral tokens or underlying loan tokens.\n\t * @return loanCloseAmount The amount of the collateral token of the loan.\n@return withdrawAmount The withdraw amount in the collateral token.\n@return withdrawToken The loan token address.\n",
                  "id": 33542,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_closeWithSwap",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33308,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33299,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 33542,
                        "src": "7420:14:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 33298,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7420:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33301,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 33542,
                        "src": "7438:16:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33300,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7438:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33303,
                        "name": "swapAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33542,
                        "src": "7458:18:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33302,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7458:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33305,
                        "name": "returnTokenIsCollateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 33542,
                        "src": "7480:28:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 33304,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7480:4:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33307,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 33542,
                        "src": "7512:26:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 33306,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7512:5:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7416:125:128"
                  },
                  "returnParameters": {
                    "id": 33315,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33310,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33542,
                        "src": "7568:23:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7568:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33312,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33542,
                        "src": "7596:22:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33311,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7596:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33314,
                        "name": "withdrawToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 33542,
                        "src": "7623:21:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33313,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7623:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7563:85:128"
                  },
                  "scope": 34531,
                  "src": "7393:3996:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 33580,
                    "nodeType": "Block",
                    "src": "11658:220:128",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 33550,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33544,
                                "src": "11670:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 33551,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "active",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4895,
                              "src": "11670:16:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e20697320636c6f736564",
                              "id": 33552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11688:16:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              },
                              "value": "loan is closed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              }
                            ],
                            "id": 33549,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11662:7:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 33553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11662:43:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33554,
                        "nodeType": "ExpressionStatement",
                        "src": "11662:43:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 33568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 33560,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33556,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "11717:3:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 33557,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "11717:10:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33558,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33544,
                                    "src": "11731:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                      "typeString": "struct LoanStruct.Loan memory"
                                    }
                                  },
                                  "id": 33559,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "borrower",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4909,
                                  "src": "11731:18:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "11717:32:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 33561,
                                    "name": "delegatedManagers",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4609,
                                    "src": "11753:17:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                                      "typeString": "mapping(bytes32 => mapping(address => bool))"
                                    }
                                  },
                                  "id": 33564,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33562,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33544,
                                      "src": "11771:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                        "typeString": "struct LoanStruct.Loan memory"
                                      }
                                    },
                                    "id": 33563,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4889,
                                    "src": "11771:12:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11753:31:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 33567,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33565,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "11785:3:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 33566,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "11785:10:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11753:43:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "11717:79:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 33569,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11798:14:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 33555,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11709:7:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 33570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11709:104:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33571,
                        "nodeType": "ExpressionStatement",
                        "src": "11709:104:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 33576,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33573,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33546,
                                  "src": "11825:15:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 33574,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4869,
                                "src": "11825:18:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 33575,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11847:1:128",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "11825:23:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e506172616d73206e6f7420657869737473",
                              "id": 33577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11850:23:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a3a351ffb3aff816f1d84605072e229d1a4a2e9f6fc60ffe610fb65286941553",
                                "typeString": "literal_string \"loanParams not exists\""
                              },
                              "value": "loanParams not exists"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a3a351ffb3aff816f1d84605072e229d1a4a2e9f6fc60ffe610fb65286941553",
                                "typeString": "literal_string \"loanParams not exists\""
                              }
                            ],
                            "id": 33572,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11817:7:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 33578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11817:57:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33579,
                        "nodeType": "ExpressionStatement",
                        "src": "11817:57:128"
                      }
                    ]
                  },
                  "documentation": "@notice Check sender is borrower or delegatee and loan id exists.\n\t * @param loanLocal The loan object.\n@param loanParamsLocal The loan params.\n",
                  "id": 33581,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkAuthorized",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33544,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 33581,
                        "src": "11586:21:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 33543,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "11586:4:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33546,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 33581,
                        "src": "11609:33:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 33545,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "11609:10:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11585:58:128"
                  },
                  "returnParameters": {
                    "id": 33548,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11658:0:128"
                  },
                  "scope": 34531,
                  "src": "11560:318:128",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 33666,
                    "nodeType": "Block",
                    "src": "12684:1924:128",
                    "statements": [
                      {
                        "assignments": [
                          33595
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33595,
                            "name": "loanCloseAmountLessInterest",
                            "nodeType": "VariableDeclaration",
                            "scope": 33666,
                            "src": "12688:35:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 33594,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12688:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33597,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 33596,
                          "name": "loanCloseAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33587,
                          "src": "12726:15:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12688:53:128"
                      },
                      {
                        "assignments": [
                          33599
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33599,
                            "name": "interestRefundToBorrower",
                            "nodeType": "VariableDeclaration",
                            "scope": 33666,
                            "src": "12858:32:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 33598,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12858:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33605,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 33601,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33585,
                              "src": "12909:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33602,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33583,
                              "src": "12926:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                "typeString": "struct LoanStruct.Loan memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33603,
                              "name": "loanCloseAmountLessInterest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33595,
                              "src": "12937:27:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                "typeString": "struct LoanStruct.Loan memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 33600,
                            "name": "_settleInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34430,
                            "src": "12893:15:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanParams_$4884_memory_ptr_$_t_struct$_Loan_$4912_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (struct LoanParamsStruct.LoanParams memory,struct LoanStruct.Loan memory,uint256) returns (uint256)"
                            }
                          },
                          "id": 33604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12893:72:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12858:107:128"
                      },
                      {
                        "assignments": [
                          33607
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33607,
                            "name": "interestAppliedToPrincipal",
                            "nodeType": "VariableDeclaration",
                            "scope": 33666,
                            "src": "12970:34:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 33606,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12970:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33608,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12970:34:128"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 33609,
                            "name": "loanCloseAmountLessInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33595,
                            "src": "13146:27:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 33610,
                            "name": "interestRefundToBorrower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33599,
                            "src": "13177:24:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13146:55:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 33649,
                          "nodeType": "Block",
                          "src": "13520:577:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33625,
                                  "name": "interestAppliedToPrincipal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33607,
                                  "src": "13684:26:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 33626,
                                  "name": "loanCloseAmountLessInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33595,
                                  "src": "13713:27:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13684:56:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33628,
                              "nodeType": "ExpressionStatement",
                              "src": "13684:56:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33629,
                                  "name": "interestRefundToBorrower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33599,
                                  "src": "13796:24:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 33630,
                                  "name": "loanCloseAmountLessInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33595,
                                  "src": "13824:27:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13796:55:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33632,
                              "nodeType": "ExpressionStatement",
                              "src": "13796:55:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33633,
                                  "name": "loanCloseAmountLessInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33595,
                                  "src": "13908:27:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33634,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13938:1:128",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13908:31:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33636,
                              "nodeType": "ExpressionStatement",
                              "src": "13908:31:128"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33639,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33637,
                                  "name": "interestRefundToBorrower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33599,
                                  "src": "13949:24:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33638,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13977:1:128",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13949:29:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33648,
                              "nodeType": "IfStatement",
                              "src": "13945:148:128",
                              "trueBody": {
                                "id": 33647,
                                "nodeType": "Block",
                                "src": "13980:113:128",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 33641,
                                            "name": "loanParamsLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 33585,
                                            "src": "14025:15:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                              "typeString": "struct LoanParamsStruct.LoanParams memory"
                                            }
                                          },
                                          "id": 33642,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "loanToken",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4875,
                                          "src": "14025:25:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 33643,
                                          "name": "receiver",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33589,
                                          "src": "14052:8:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 33644,
                                          "name": "interestRefundToBorrower",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33599,
                                          "src": "14062:24:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 33640,
                                        "name": "_withdrawAsset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34076,
                                        "src": "14010:14:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256)"
                                        }
                                      },
                                      "id": 33645,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14010:77:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 33646,
                                    "nodeType": "ExpressionStatement",
                                    "src": "14010:77:128"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 33650,
                        "nodeType": "IfStatement",
                        "src": "13142:955:128",
                        "trueBody": {
                          "id": 33624,
                          "nodeType": "Block",
                          "src": "13203:311:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33612,
                                  "name": "interestAppliedToPrincipal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33607,
                                  "src": "13273:26:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 33613,
                                  "name": "interestRefundToBorrower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33599,
                                  "src": "13302:24:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13273:53:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33615,
                              "nodeType": "ExpressionStatement",
                              "src": "13273:53:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33618,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33616,
                                  "name": "loanCloseAmountLessInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33595,
                                  "src": "13383:27:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 33617,
                                  "name": "interestRefundToBorrower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33599,
                                  "src": "13414:24:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13383:55:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33619,
                              "nodeType": "ExpressionStatement",
                              "src": "13383:55:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33620,
                                  "name": "interestRefundToBorrower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33599,
                                  "src": "13481:24:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33621,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13508:1:128",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13481:28:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33623,
                              "nodeType": "ExpressionStatement",
                              "src": "13481:28:128"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 33651,
                            "name": "interestAppliedToPrincipal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33607,
                            "src": "14284:26:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14314:1:128",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14284:31:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 33663,
                        "nodeType": "IfStatement",
                        "src": "14280:286:128",
                        "trueBody": {
                          "id": 33662,
                          "nodeType": "Block",
                          "src": "14317:249:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33655,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33585,
                                      "src": "14489:15:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 33656,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "14489:25:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33657,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33583,
                                      "src": "14516:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                        "typeString": "struct LoanStruct.Loan memory"
                                      }
                                    },
                                    "id": 33658,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4911,
                                    "src": "14516:16:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 33659,
                                    "name": "interestAppliedToPrincipal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33607,
                                    "src": "14534:26:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 33654,
                                  "name": "vaultWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28128,
                                  "src": "14475:13:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 33660,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14475:86:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 33661,
                              "nodeType": "ExpressionStatement",
                              "src": "14475:86:128"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33664,
                          "name": "loanCloseAmountLessInterest",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33595,
                          "src": "14577:27:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 33593,
                        "id": 33665,
                        "nodeType": "Return",
                        "src": "14570:34:128"
                      }
                    ]
                  },
                  "documentation": "@notice Compute the interest which needs to be refunded to the borrower\nbased on the amount he's closing and either subtracts it from the\namount which still needs to be paid back (in case outstanding\namount > interest) or withdraws the excess to the borrower\n(in case interest > outstanding).\n\t * @param loanLocal The loan object.\n@param loanParamsLocal The loan params.\n@param loanCloseAmount The amount to be closed (base for the computation).\n@param receiver The address of the receiver (usually the borrower).\n\t * @return loanCloseAmountLessInterest The outstanding loan.\n",
                  "id": 33667,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_settleInterestToPrincipal",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33590,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33583,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 33667,
                        "src": "12548:21:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 33582,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "12548:4:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33585,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 33667,
                        "src": "12573:33:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 33584,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "12573:10:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33587,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33667,
                        "src": "12610:23:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33586,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12610:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33589,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 33667,
                        "src": "12637:16:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33588,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12637:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12544:112:128"
                  },
                  "returnParameters": {
                    "id": 33593,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33592,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 33667,
                        "src": "12675:7:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33591,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12675:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12674:9:128"
                  },
                  "scope": 34531,
                  "src": "12509:2099:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 33764,
                    "nodeType": "Block",
                    "src": "15064:638:128",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33678,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 33676,
                            "name": "principalNeeded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33673,
                            "src": "15072:15:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 33677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15091:1:128",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15072:20:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 33762,
                          "nodeType": "Block",
                          "src": "15646:53:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 33758,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 33755,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44994,
                                        "src": "15659:3:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 33756,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "value",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "15659:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 33757,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "15672:1:128",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "15659:14:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "77726f6e672061737365742073656e74",
                                    "id": 33759,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15675:18:128",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_354d628e401807673843b915f493656462073f9d1972fae61b07cef60868d710",
                                      "typeString": "literal_string \"wrong asset sent\""
                                    },
                                    "value": "wrong asset sent"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_354d628e401807673843b915f493656462073f9d1972fae61b07cef60868d710",
                                      "typeString": "literal_string \"wrong asset sent\""
                                    }
                                  ],
                                  "id": 33754,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "15651:7:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 33760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15651:43:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 33761,
                              "nodeType": "ExpressionStatement",
                              "src": "15651:43:128"
                            }
                          ]
                        },
                        "id": 33763,
                        "nodeType": "IfStatement",
                        "src": "15068:631:128",
                        "trueBody": {
                          "id": 33753,
                          "nodeType": "Block",
                          "src": "15094:546:128",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33682,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33679,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "15103:3:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 33680,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "15103:9:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 33681,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15116:1:128",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15103:14:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 33751,
                                "nodeType": "Block",
                                "src": "15200:436:128",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          "id": 33697,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 33693,
                                            "name": "loanToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 33669,
                                            "src": "15214:9:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 33695,
                                                "name": "wrbtcToken",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4737,
                                                "src": "15235:10:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                  "typeString": "contract IWrbtcERC20"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                  "typeString": "contract IWrbtcERC20"
                                                }
                                              ],
                                              "id": 33694,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "15227:7:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": "address"
                                            },
                                            "id": 33696,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "15227:19:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "src": "15214:32:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "77726f6e672061737365742073656e74",
                                          "id": 33698,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "15248:18:128",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_354d628e401807673843b915f493656462073f9d1972fae61b07cef60868d710",
                                            "typeString": "literal_string \"wrong asset sent\""
                                          },
                                          "value": "wrong asset sent"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_354d628e401807673843b915f493656462073f9d1972fae61b07cef60868d710",
                                            "typeString": "literal_string \"wrong asset sent\""
                                          }
                                        ],
                                        "id": 33692,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44997,
                                          44998
                                        ],
                                        "referencedDeclaration": 44998,
                                        "src": "15206:7:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 33699,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "15206:61:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 33700,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15206:61:128"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 33705,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 33702,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44994,
                                              "src": "15281:3:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 33703,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "value",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "15281:9:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 33704,
                                            "name": "principalNeeded",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 33673,
                                            "src": "15294:15:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "15281:28:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "6e6f7420656e6f756768206574686572",
                                          "id": 33706,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "15311:18:128",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_fdb33999d8652fc9ba92246ba8830bea6aeb584ac45b0c37d55b7db9ae3fb8cd",
                                            "typeString": "literal_string \"not enough ether\""
                                          },
                                          "value": "not enough ether"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_fdb33999d8652fc9ba92246ba8830bea6aeb584ac45b0c37d55b7db9ae3fb8cd",
                                            "typeString": "literal_string \"not enough ether\""
                                          }
                                        ],
                                        "id": 33701,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44997,
                                          44998
                                        ],
                                        "referencedDeclaration": 44998,
                                        "src": "15273:7:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 33707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "15273:57:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 33708,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15273:57:128"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 33714,
                                            "name": "principalNeeded",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 33673,
                                            "src": "15361:15:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 33709,
                                              "name": "wrbtcToken",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4737,
                                              "src": "15336:10:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                                "typeString": "contract IWrbtcERC20"
                                              }
                                            },
                                            "id": 33712,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "deposit",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 25544,
                                            "src": "15336:18:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                              "typeString": "function () payable external"
                                            }
                                          },
                                          "id": 33713,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "value",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "15336:24:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$",
                                            "typeString": "function (uint256) pure returns (function () payable external)"
                                          }
                                        },
                                        "id": 33715,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15336:41:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                                          "typeString": "function () payable external"
                                        }
                                      },
                                      "id": 33716,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "15336:43:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 33717,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15336:43:128"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 33722,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 33718,
                                        "name": "receiver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33671,
                                        "src": "15389:8:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 33720,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 45326,
                                            "src": "15409:4:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_LoanClosingsWith_$34531",
                                              "typeString": "contract LoanClosingsWith"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_LoanClosingsWith_$34531",
                                              "typeString": "contract LoanClosingsWith"
                                            }
                                          ],
                                          "id": 33719,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "15401:7:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 33721,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15401:13:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "15389:25:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33733,
                                    "nodeType": "IfStatement",
                                    "src": "15385:111:128",
                                    "trueBody": {
                                      "id": 33732,
                                      "nodeType": "Block",
                                      "src": "15416:80:128",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 33724,
                                                "name": "loanToken",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 33669,
                                                "src": "15437:9:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 33726,
                                                    "name": "this",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 45326,
                                                    "src": "15456:4:128",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_contract$_LoanClosingsWith_$34531",
                                                      "typeString": "contract LoanClosingsWith"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_contract$_LoanClosingsWith_$34531",
                                                      "typeString": "contract LoanClosingsWith"
                                                    }
                                                  ],
                                                  "id": 33725,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "15448:7:128",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                  },
                                                  "typeName": "address"
                                                },
                                                "id": 33727,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "15448:13:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 33728,
                                                "name": "receiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 33671,
                                                "src": "15463:8:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 33729,
                                                "name": "principalNeeded",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 33673,
                                                "src": "15473:15:128",
                                                "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"
                                                }
                                              ],
                                              "id": 33723,
                                              "name": "vaultTransfer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 28170,
                                              "src": "15423:13:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,address,uint256)"
                                              }
                                            },
                                            "id": 33730,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "15423:66:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 33731,
                                          "nodeType": "ExpressionStatement",
                                          "src": "15423:66:128"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 33737,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 33734,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44994,
                                          "src": "15505:3:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 33735,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "value",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "15505:9:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 33736,
                                        "name": "principalNeeded",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33673,
                                        "src": "15517:15:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "15505:27:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 33750,
                                    "nodeType": "IfStatement",
                                    "src": "15501:130:128",
                                    "trueBody": {
                                      "id": 33749,
                                      "nodeType": "Block",
                                      "src": "15534:97:128",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 33741,
                                                  "name": "msg",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 44994,
                                                  "src": "15584:3:128",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_message",
                                                    "typeString": "msg"
                                                  }
                                                },
                                                "id": 33742,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": null,
                                                "src": "15584:10:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 33746,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 33743,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 44994,
                                                    "src": "15596:3:128",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_message",
                                                      "typeString": "msg"
                                                    }
                                                  },
                                                  "id": 33744,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "value",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": null,
                                                  "src": "15596:9:128",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "-",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "id": 33745,
                                                  "name": "principalNeeded",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 33673,
                                                  "src": "15608:15:128",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "15596:27:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 33738,
                                                "name": "Address",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 41098,
                                                "src": "15566:7:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                                  "typeString": "type(library Address)"
                                                }
                                              },
                                              "id": 33740,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sendValue",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 41097,
                                              "src": "15566:17:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                              }
                                            },
                                            "id": 33747,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "15566:58:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 33748,
                                          "nodeType": "ExpressionStatement",
                                          "src": "15566:58:128"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 33752,
                              "nodeType": "IfStatement",
                              "src": "15099:537:128",
                              "trueBody": {
                                "id": 33691,
                                "nodeType": "Block",
                                "src": "15119:75:128",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 33684,
                                          "name": "loanToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33669,
                                          "src": "15139:9:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 33685,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44994,
                                            "src": "15150:3:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 33686,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "15150:10:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 33687,
                                          "name": "receiver",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33671,
                                          "src": "15162:8:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 33688,
                                          "name": "principalNeeded",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33673,
                                          "src": "15172:15:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 33683,
                                        "name": "vaultTransfer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28170,
                                        "src": "15125:13:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,address,uint256)"
                                        }
                                      },
                                      "id": 33689,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "15125:63:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 33690,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15125:63:128"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Transfer principal with deposit to receiver.\n\t * @dev The receiver always gets back an ERC20 (even wrBTC).\n\t * @param loanToken The address of the loan token.\n@param receiver The recipient address.\n@param principalNeeded The required amount of destination tokens in order to cover the principle.\n",
                  "id": 33765,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_returnPrincipalWithDeposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33674,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33669,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 33765,
                        "src": "14987:17:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33668,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14987:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33671,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 33765,
                        "src": "15008:16:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33670,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15008:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33673,
                        "name": "principalNeeded",
                        "nodeType": "VariableDeclaration",
                        "scope": 33765,
                        "src": "15028:23:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33672,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15028:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14983:71:128"
                  },
                  "returnParameters": {
                    "id": 33675,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15064:0:128"
                  },
                  "scope": 34531,
                  "src": "14947:755:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 33811,
                    "nodeType": "Block",
                    "src": "16040:361:128",
                    "statements": [
                      {
                        "assignments": [
                          33775,
                          33777
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33775,
                            "name": "rbtcRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 33811,
                            "src": "16045:16:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 33774,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16045:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 33777,
                            "name": "rbtcPrecision",
                            "nodeType": "VariableDeclaration",
                            "scope": 33811,
                            "src": "16063:21:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 33776,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16063:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33787,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 33782,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33767,
                              "src": "16122:5:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 33784,
                                  "name": "wrbtcToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4737,
                                  "src": "16137:10:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                    "typeString": "contract IWrbtcERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                    "typeString": "contract IWrbtcERC20"
                                  }
                                ],
                                "id": 33783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16129:7:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 33785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16129:19:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 33779,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "16100:10:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 33778,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "16088:11:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 33780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16088:23:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 33781,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queryRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8595,
                            "src": "16088:33:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256,uint256)"
                            }
                          },
                          "id": 33786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16088:61:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16044:105:128"
                      },
                      {
                        "assignments": [
                          33789
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33789,
                            "name": "amountInRbtc",
                            "nodeType": "VariableDeclaration",
                            "scope": 33811,
                            "src": "16153:20:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 33788,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16153:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33797,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 33795,
                              "name": "rbtcPrecision",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33777,
                              "src": "16201:13:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 33792,
                                  "name": "rbtcRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33775,
                                  "src": "16187:8:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33790,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33769,
                                  "src": "16176:6:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 33791,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "16176:10:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 33793,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16176:20:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 33794,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "16176:24:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 33796,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16176:39:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16153:62:128"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 33801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 33799,
                                "name": "amountInRbtc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33789,
                                "src": "16235:12:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 33800,
                                "name": "paySwapExcessToBorrowerThreshold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33053,
                                "src": "16250:32:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "16235:47:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33802,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33769,
                              "src": "16284:6:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33803,
                              "name": "amountInRbtc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33789,
                              "src": "16292:12:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 33804,
                              "name": "paySwapExcessToBorrowerThreshold",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33053,
                              "src": "16306:32:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 33798,
                            "name": "swapExcess",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5913,
                            "src": "16224:10:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bool_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (bool,uint256,uint256,uint256)"
                            }
                          },
                          "id": 33805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16224:115:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33806,
                        "nodeType": "EmitStatement",
                        "src": "16219:120:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 33807,
                            "name": "amountInRbtc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33789,
                            "src": "16350:12:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 33808,
                            "name": "paySwapExcessToBorrowerThreshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33053,
                            "src": "16365:32:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16350:47:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 33773,
                        "id": 33810,
                        "nodeType": "Return",
                        "src": "16343:54:128"
                      }
                    ]
                  },
                  "documentation": "@notice Check if the amount of the asset to be transfered is worth the transfer fee.\n@param asset The asset to be transfered.\n@param amount The amount to be transfered.\n@return True if the amount is bigger than the threshold.\n",
                  "id": 33812,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "worthTheTransfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33770,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33767,
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "scope": 33812,
                        "src": "15985:13:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33766,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15985:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33769,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33812,
                        "src": "16000:14:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33768,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16000:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15984:31:128"
                  },
                  "returnParameters": {
                    "id": 33773,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33772,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 33812,
                        "src": "16034:4:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 33771,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16034:4:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16033:6:128"
                  },
                  "scope": 34531,
                  "src": "15959:442:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 33979,
                    "nodeType": "Block",
                    "src": "17794:2088:128",
                    "statements": [
                      {
                        "assignments": [
                          33836
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33836,
                            "name": "destTokenAmountReceived",
                            "nodeType": "VariableDeclaration",
                            "scope": 33979,
                            "src": "17798:31:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 33835,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17798:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33837,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17798:31:128"
                      },
                      {
                        "assignments": [
                          33839
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 33839,
                            "name": "sourceTokenAmountUsed",
                            "nodeType": "VariableDeclaration",
                            "scope": 33979,
                            "src": "17833:29:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 33838,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17833:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 33840,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17833:29:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 33841,
                                "name": "destTokenAmountReceived",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33836,
                                "src": "17867:23:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33842,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33839,
                                "src": "17892:21:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33843,
                                "name": "collateralToLoanSwapRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33833,
                                "src": "17915:24:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 33844,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "17866:74:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 33846,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33814,
                                "src": "17965:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33847,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33816,
                                "src": "17979:15:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33848,
                                "name": "swapAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33818,
                                "src": "17999:10:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33849,
                                "name": "principalNeeded",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33820,
                                "src": "18014:15:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33850,
                                "name": "returnTokenIsCollateral",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33822,
                                "src": "18034:23:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 33851,
                                "name": "loanDataBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33824,
                                "src": "18062:13:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                },
                                {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 33845,
                              "name": "_doCollateralSwap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34042,
                              "src": "17943:17:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Loan_$4912_memory_ptr_$_t_struct$_LoanParams_$4884_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (struct LoanStruct.Loan memory,struct LoanParamsStruct.LoanParams memory,uint256,uint256,bool,bytes memory) returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 33852,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17943:136:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "17866:213:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 33854,
                        "nodeType": "ExpressionStatement",
                        "src": "17866:213:128"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 33855,
                          "name": "returnTokenIsCollateral",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33822,
                          "src": "18088:23:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 33968,
                          "nodeType": "Block",
                          "src": "18871:915:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 33904,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 33902,
                                      "name": "sourceTokenAmountUsed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33839,
                                      "src": "18884:21:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 33903,
                                      "name": "swapAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33818,
                                      "src": "18909:10:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "18884:35:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "73776170206572726f72",
                                    "id": 33905,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18921:12:128",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_a30869b70157e732aa5fe399ac8da60987c4b0e441e746560473a5711393a272",
                                      "typeString": "literal_string \"swap error\""
                                    },
                                    "value": "swap error"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_a30869b70157e732aa5fe399ac8da60987c4b0e441e746560473a5711393a272",
                                      "typeString": "literal_string \"swap error\""
                                    }
                                  ],
                                  "id": 33901,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "18876:7:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 33906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18876:58:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 33907,
                              "nodeType": "ExpressionStatement",
                              "src": "18876:58:128"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33911,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33908,
                                  "name": "swapAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33818,
                                  "src": "18944:10:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 33909,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33814,
                                    "src": "18958:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                      "typeString": "struct LoanStruct.Loan memory"
                                    }
                                  },
                                  "id": 33910,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "collateral",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4899,
                                  "src": "18958:20:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18944:34:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 33966,
                                "nodeType": "Block",
                                "src": "19165:617:128",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 33926,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 33923,
                                        "name": "destTokenAmountReceived",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33836,
                                        "src": "19243:23:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 33924,
                                          "name": "loanLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33814,
                                          "src": "19270:9:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                            "typeString": "struct LoanStruct.Loan memory"
                                          }
                                        },
                                        "id": 33925,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "principal",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4897,
                                        "src": "19270:19:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "19243:46:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 33964,
                                      "nodeType": "Block",
                                      "src": "19696:81:128",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 33958,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "id": 33956,
                                              "name": "coveredPrincipal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33827,
                                              "src": "19703:16:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 33957,
                                              "name": "destTokenAmountReceived",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33836,
                                              "src": "19722:23:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "19703:42:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 33959,
                                          "nodeType": "ExpressionStatement",
                                          "src": "19703:42:128"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 33962,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "id": 33960,
                                              "name": "withdrawAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33831,
                                              "src": "19752:14:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "hexValue": "30",
                                              "id": 33961,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "19769:1:128",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "19752:18:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 33963,
                                          "nodeType": "ExpressionStatement",
                                          "src": "19752:18:128"
                                        }
                                      ]
                                    },
                                    "id": 33965,
                                    "nodeType": "IfStatement",
                                    "src": "19239:538:128",
                                    "trueBody": {
                                      "id": 33955,
                                      "nodeType": "Block",
                                      "src": "19291:399:128",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 33930,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "id": 33927,
                                              "name": "coveredPrincipal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33827,
                                              "src": "19352:16:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 33928,
                                                "name": "loanLocal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 33814,
                                                "src": "19371:9:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                                  "typeString": "struct LoanStruct.Loan memory"
                                                }
                                              },
                                              "id": 33929,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "principal",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4897,
                                              "src": "19371:19:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "19352:38:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 33931,
                                          "nodeType": "ExpressionStatement",
                                          "src": "19352:38:128"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 33937,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "id": 33932,
                                              "name": "withdrawAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33831,
                                              "src": "19397:14:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 33936,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "id": 33933,
                                                "name": "destTokenAmountReceived",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 33836,
                                                "src": "19414:23:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 33934,
                                                  "name": "loanLocal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 33814,
                                                  "src": "19440:9:128",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                                    "typeString": "struct LoanStruct.Loan memory"
                                                  }
                                                },
                                                "id": 33935,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "principal",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4897,
                                                "src": "19440:19:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "19414:45:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "19397:62:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 33938,
                                          "nodeType": "ExpressionStatement",
                                          "src": "19397:62:128"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 33940,
                                                  "name": "loanParamsLocal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 33816,
                                                  "src": "19534:15:128",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                                  }
                                                },
                                                "id": 33941,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "collateralToken",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4877,
                                                "src": "19534:31:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 33942,
                                                  "name": "loanLocal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 33814,
                                                  "src": "19567:9:128",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                                    "typeString": "struct LoanStruct.Loan memory"
                                                  }
                                                },
                                                "id": 33943,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "borrower",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4909,
                                                "src": "19567:18:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 33947,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 33944,
                                                    "name": "loanLocal",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 33814,
                                                    "src": "19587:9:128",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                                      "typeString": "struct LoanStruct.Loan memory"
                                                    }
                                                  },
                                                  "id": 33945,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "collateral",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 4899,
                                                  "src": "19587:20:128",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "-",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "id": 33946,
                                                  "name": "sourceTokenAmountUsed",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 33839,
                                                  "src": "19610:21:128",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "19587:44:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 33939,
                                              "name": "_withdrawAsset",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 34076,
                                              "src": "19519:14:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                              }
                                            },
                                            "id": 33948,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "19519:113:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 33949,
                                          "nodeType": "ExpressionStatement",
                                          "src": "19519:113:128"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 33953,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "id": 33950,
                                              "name": "sourceTokenAmountUsed",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33839,
                                              "src": "19639:21:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 33951,
                                                "name": "loanLocal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 33814,
                                                "src": "19663:9:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                                  "typeString": "struct LoanStruct.Loan memory"
                                                }
                                              },
                                              "id": 33952,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "collateral",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4899,
                                              "src": "19663:20:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "19639:44:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 33954,
                                          "nodeType": "ExpressionStatement",
                                          "src": "19639:44:128"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 33967,
                              "nodeType": "IfStatement",
                              "src": "18940:842:128",
                              "trueBody": {
                                "id": 33922,
                                "nodeType": "Block",
                                "src": "18980:179:128",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33914,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 33912,
                                        "name": "coveredPrincipal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33827,
                                        "src": "19055:16:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 33913,
                                        "name": "principalNeeded",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33820,
                                        "src": "19074:15:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "19055:34:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33915,
                                    "nodeType": "ExpressionStatement",
                                    "src": "19055:34:128"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 33920,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 33916,
                                        "name": "withdrawAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33831,
                                        "src": "19095:14:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 33919,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 33917,
                                          "name": "destTokenAmountReceived",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33836,
                                          "src": "19112:23:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 33918,
                                          "name": "principalNeeded",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33820,
                                          "src": "19138:15:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "19112:41:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "19095:58:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33921,
                                    "nodeType": "ExpressionStatement",
                                    "src": "19095:58:128"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 33969,
                        "nodeType": "IfStatement",
                        "src": "18084:1702:128",
                        "trueBody": {
                          "id": 33900,
                          "nodeType": "Block",
                          "src": "18113:752:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33856,
                                  "name": "coveredPrincipal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33827,
                                  "src": "18118:16:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 33857,
                                  "name": "principalNeeded",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33820,
                                  "src": "18137:15:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18118:34:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33859,
                              "nodeType": "ExpressionStatement",
                              "src": "18118:34:128"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 33860,
                                  "name": "destTokenAmountReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33836,
                                  "src": "18196:23:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 33861,
                                  "name": "coveredPrincipal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33827,
                                  "src": "18222:16:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18196:42:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 33888,
                              "nodeType": "IfStatement",
                              "src": "18192:572:128",
                              "trueBody": {
                                "id": 33887,
                                "nodeType": "Block",
                                "src": "18240:524:128",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 33864,
                                            "name": "loanParamsLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 33816,
                                            "src": "18361:15:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                              "typeString": "struct LoanParamsStruct.LoanParams memory"
                                            }
                                          },
                                          "id": 33865,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "loanToken",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4875,
                                          "src": "18361:25:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 33868,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 33866,
                                            "name": "destTokenAmountReceived",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 33836,
                                            "src": "18388:23:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 33867,
                                            "name": "coveredPrincipal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 33827,
                                            "src": "18414:16:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "18388:42:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 33863,
                                        "name": "worthTheTransfer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33812,
                                        "src": "18344:16:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                          "typeString": "function (address,uint256) returns (bool)"
                                        }
                                      },
                                      "id": 33869,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "18344:87:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 33885,
                                      "nodeType": "Block",
                                      "src": "18703:56:128",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 33883,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "id": 33881,
                                              "name": "coveredPrincipal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33827,
                                              "src": "18710:16:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 33882,
                                              "name": "destTokenAmountReceived",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 33836,
                                              "src": "18729:23:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "18710:42:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 33884,
                                          "nodeType": "ExpressionStatement",
                                          "src": "18710:42:128"
                                        }
                                      ]
                                    },
                                    "id": 33886,
                                    "nodeType": "IfStatement",
                                    "src": "18340:419:128",
                                    "trueBody": {
                                      "id": 33880,
                                      "nodeType": "Block",
                                      "src": "18433:119:128",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 33871,
                                                  "name": "loanParamsLocal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 33816,
                                                  "src": "18455:15:128",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                                  }
                                                },
                                                "id": 33872,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "loanToken",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4875,
                                                "src": "18455:25:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 33873,
                                                  "name": "loanLocal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 33814,
                                                  "src": "18482:9:128",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                                    "typeString": "struct LoanStruct.Loan memory"
                                                  }
                                                },
                                                "id": 33874,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "borrower",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4909,
                                                "src": "18482:18:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 33877,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "id": 33875,
                                                  "name": "destTokenAmountReceived",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 33836,
                                                  "src": "18502:23:128",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "-",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "id": 33876,
                                                  "name": "coveredPrincipal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 33827,
                                                  "src": "18528:16:128",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "18502:42:128",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 33870,
                                              "name": "_withdrawAsset",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 34076,
                                              "src": "18440:14:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                              }
                                            },
                                            "id": 33878,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "18440:105:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 33879,
                                          "nodeType": "ExpressionStatement",
                                          "src": "18440:105:128"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 33898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 33889,
                                  "name": "withdrawAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33831,
                                  "src": "18768:14:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 33892,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 33890,
                                      "name": "swapAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33818,
                                      "src": "18785:10:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 33891,
                                      "name": "sourceTokenAmountUsed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33839,
                                      "src": "18798:21:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "18785:34:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 33896,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18859:1:128",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "id": 33897,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "18785:75:128",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 33895,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 33893,
                                      "name": "swapAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33818,
                                      "src": "18822:10:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 33894,
                                      "name": "sourceTokenAmountUsed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33839,
                                      "src": "18835:21:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "18822:34:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18768:92:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33899,
                              "nodeType": "ExpressionStatement",
                              "src": "18768:92:128"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 33970,
                            "name": "usedCollateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33829,
                            "src": "19790:14:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 33973,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 33971,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33839,
                                "src": "19807:21:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 33972,
                                "name": "swapAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33818,
                                "src": "19831:10:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19807:34:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 33975,
                              "name": "swapAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33818,
                              "src": "19868:10:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 33976,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "19807:71:128",
                            "trueExpression": {
                              "argumentTypes": null,
                              "id": 33974,
                              "name": "sourceTokenAmountUsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33839,
                              "src": "19844:21:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19790:88:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33978,
                        "nodeType": "ExpressionStatement",
                        "src": "19790:88:128"
                      }
                    ]
                  },
                  "documentation": "@notice Swaps a share of a loan's collateral or the complete collateral\n  in order to cover the principle.\n\t * @param loanLocal The loan object.\n@param loanParamsLocal The loan parameters.\n@param swapAmount In case principalNeeded == 0 or !returnTokenIsCollateral,\n  this is the amount which is going to be swapped.\n  Else, swapAmount doesn't matter, because the amount of source tokens\n  needed for the swap is estimated by the connector.\n@param principalNeeded The required amount of destination tokens in order to\n  cover the principle (only used if returnTokenIsCollateral).\n@param returnTokenIsCollateral Tells if the user wants to withdraw his\n  remaining collateral + profit in collateral tokens.\n\t * @return coveredPrincipal The amount of principal that is covered.\n@return usedCollateral The amount of collateral used.\n@return withdrawAmount The withdraw amount in the collateral token.\n@return collateralToLoanSwapRate The swap rate of collateral.\n",
                  "id": 33980,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_coverPrincipalWithSwap",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33825,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33814,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 33980,
                        "src": "17474:21:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 33813,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "17474:4:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33816,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 33980,
                        "src": "17499:33:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 33815,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "17499:10:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33818,
                        "name": "swapAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33980,
                        "src": "17536:18:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33817,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17536:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33820,
                        "name": "principalNeeded",
                        "nodeType": "VariableDeclaration",
                        "scope": 33980,
                        "src": "17558:23:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33819,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17558:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33822,
                        "name": "returnTokenIsCollateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 33980,
                        "src": "17585:28:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 33821,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17585:4:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33824,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 33980,
                        "src": "17617:26:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 33823,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "17617:5:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17470:176:128"
                  },
                  "returnParameters": {
                    "id": 33834,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33827,
                        "name": "coveredPrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 33980,
                        "src": "17673:24:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33826,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17673:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33829,
                        "name": "usedCollateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 33980,
                        "src": "17702:22:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33828,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17702:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33831,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 33980,
                        "src": "17729:22:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33830,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17729:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33833,
                        "name": "collateralToLoanSwapRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 33980,
                        "src": "17756:32:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33832,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17756:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17668:124:128"
                  },
                  "scope": 34531,
                  "src": "17438:2444:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 34041,
                    "nodeType": "Block",
                    "src": "20729:589:128",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 34024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 34001,
                                "name": "destTokenAmountReceived",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33995,
                                "src": "20734:23:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 34002,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33997,
                                "src": "20759:21:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 34003,
                                "name": "collateralToLoanSwapRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33999,
                                "src": "20782:24:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 34004,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "20733:74:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34006,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33982,
                                  "src": "20824:9:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "id": 34007,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4889,
                                "src": "20824:12:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34008,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33984,
                                  "src": "20841:15:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 34009,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateralToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4877,
                                "src": "20841:31:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34010,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33984,
                                  "src": "20877:15:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 34011,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "loanToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4875,
                                "src": "20877:25:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34012,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33982,
                                  "src": "20907:9:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "id": 34013,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "borrower",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4909,
                                "src": "20907:18:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 34014,
                                "name": "swapAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33986,
                                "src": "20930:10:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34015,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33982,
                                  "src": "20970:9:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "id": 34016,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4899,
                                "src": "20970:20:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "id": 34017,
                                  "name": "returnTokenIsCollateral",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33990,
                                  "src": "21020:23:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 34019,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21100:1:128",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "id": 34020,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "21020:81:128",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "id": 34018,
                                  "name": "principalNeeded",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33988,
                                  "src": "21050:15:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 34021,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21106:5:128",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "argumentTypes": null,
                                "id": 34022,
                                "name": "loanDataBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33992,
                                "src": "21129:13:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "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"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 34005,
                              "name": "_loanSwap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42843,
                              "src": "20810:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (bytes32,address,address,address,uint256,uint256,uint256,bool,bytes memory) returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 34023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20810:336:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "20733:413:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34025,
                        "nodeType": "ExpressionStatement",
                        "src": "20733:413:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 34029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 34027,
                                "name": "destTokenAmountReceived",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33995,
                                "src": "21158:23:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 34028,
                                "name": "principalNeeded",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33988,
                                "src": "21185:15:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "21158:42:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e73756666696369656e74206465737420616d6f756e74",
                              "id": 34030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21202:26:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8c9be3dde929e858a023f6e879b8fdea251ef129140cbc7dce673dd145db67cf",
                                "typeString": "literal_string \"insufficient dest amount\""
                              },
                              "value": "insufficient dest amount"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8c9be3dde929e858a023f6e879b8fdea251ef129140cbc7dce673dd145db67cf",
                                "typeString": "literal_string \"insufficient dest amount\""
                              }
                            ],
                            "id": 34026,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "21150:7:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 34031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21150:79:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34032,
                        "nodeType": "ExpressionStatement",
                        "src": "21150:79:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 34037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 34034,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33997,
                                "src": "21241:21:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34035,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33982,
                                  "src": "21266:9:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "id": 34036,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4899,
                                "src": "21266:20:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "21241:45:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "65786365737369766520736f7572636520616d6f756e74",
                              "id": 34038,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21288:25:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_516ab73ad24ec01b400c6f1859a142529bbf56f00907dcee4deec38e81aab8f6",
                                "typeString": "literal_string \"excessive source amount\""
                              },
                              "value": "excessive source amount"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_516ab73ad24ec01b400c6f1859a142529bbf56f00907dcee4deec38e81aab8f6",
                                "typeString": "literal_string \"excessive source amount\""
                              }
                            ],
                            "id": 34033,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "21233:7:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 34039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21233:81:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34040,
                        "nodeType": "ExpressionStatement",
                        "src": "21233:81:128"
                      }
                    ]
                  },
                  "documentation": "@notice Swap collateral tokens for loan tokens.\n\t * @param loanLocal The loan object.\n@param loanParamsLocal The loan parameters.\n@param swapAmount The amount to be swapped.\n@param principalNeeded The required destination token amount.\n@param returnTokenIsCollateral if true -> required destination\n  token amount will be passed on, else not\n    note: quite dirty. should be refactored.\n@param loanDataBytes Additional loan data (not in use for token swaps).\n",
                  "id": 34042,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_doCollateralSwap",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33982,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 34042,
                        "src": "20422:21:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 33981,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "20422:4:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33984,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 34042,
                        "src": "20447:33:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 33983,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "20447:10:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33986,
                        "name": "swapAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 34042,
                        "src": "20484:18:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33985,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20484:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33988,
                        "name": "principalNeeded",
                        "nodeType": "VariableDeclaration",
                        "scope": 34042,
                        "src": "20506:23:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33987,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20506:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33990,
                        "name": "returnTokenIsCollateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 34042,
                        "src": "20533:28:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 33989,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "20533:4:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33992,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 34042,
                        "src": "20565:26:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 33991,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "20565:5:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20418:176:128"
                  },
                  "returnParameters": {
                    "id": 34000,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33995,
                        "name": "destTokenAmountReceived",
                        "nodeType": "VariableDeclaration",
                        "scope": 34042,
                        "src": "20621:31:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33994,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20621:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33997,
                        "name": "sourceTokenAmountUsed",
                        "nodeType": "VariableDeclaration",
                        "scope": 34042,
                        "src": "20657:29:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33996,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20657:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33999,
                        "name": "collateralToLoanSwapRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 34042,
                        "src": "20691:32:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33998,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20691:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20616:111:128"
                  },
                  "scope": 34531,
                  "src": "20392:926:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 34075,
                    "nodeType": "Block",
                    "src": "21611:196:128",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 34053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 34051,
                            "name": "assetAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34048,
                            "src": "21619:11:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 34052,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21634:1:128",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "21619:16:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 34074,
                        "nodeType": "IfStatement",
                        "src": "21615:189:128",
                        "trueBody": {
                          "id": 34073,
                          "nodeType": "Block",
                          "src": "21637:167:128",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 34058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 34054,
                                  "name": "assetToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34044,
                                  "src": "21646:10:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 34056,
                                      "name": "wrbtcToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4737,
                                      "src": "21668:10:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                        "typeString": "contract IWrbtcERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                        "typeString": "contract IWrbtcERC20"
                                      }
                                    ],
                                    "id": 34055,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "21660:7:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 34057,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21660:19:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "21646:33:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 34071,
                                "nodeType": "Block",
                                "src": "21740:60:128",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 34066,
                                          "name": "assetToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 34044,
                                          "src": "21760:10:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 34067,
                                          "name": "receiver",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 34046,
                                          "src": "21772:8:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 34068,
                                          "name": "assetAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 34048,
                                          "src": "21782:11:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 34065,
                                        "name": "vaultWithdraw",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28128,
                                        "src": "21746:13:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256)"
                                        }
                                      },
                                      "id": 34069,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "21746:48:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 34070,
                                    "nodeType": "ExpressionStatement",
                                    "src": "21746:48:128"
                                  }
                                ]
                              },
                              "id": 34072,
                              "nodeType": "IfStatement",
                              "src": "21642:158:128",
                              "trueBody": {
                                "id": 34064,
                                "nodeType": "Block",
                                "src": "21681:53:128",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 34060,
                                          "name": "receiver",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 34046,
                                          "src": "21706:8:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 34061,
                                          "name": "assetAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 34048,
                                          "src": "21716:11:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 34059,
                                        "name": "vaultEtherWithdraw",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28067,
                                        "src": "21687:18:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256)"
                                        }
                                      },
                                      "id": 34062,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "21687:41:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 34063,
                                    "nodeType": "ExpressionStatement",
                                    "src": "21687:41:128"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Withdraw asset to receiver.\n\t * @param assetToken The loan token.\n@param receiver The address of the receiver.\n@param assetAmount The loan token amount.\n",
                  "id": 34076,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_withdrawAsset",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 34049,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34044,
                        "name": "assetToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 34076,
                        "src": "21537:18:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 34043,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21537:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34046,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 34076,
                        "src": "21559:16:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 34045,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21559:7:128",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34048,
                        "name": "assetAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 34076,
                        "src": "21579:19:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34047,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21579:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21533:68:128"
                  },
                  "returnParameters": {
                    "id": 34050,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21611:0:128"
                  },
                  "scope": 34531,
                  "src": "21510:297:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 34160,
                    "nodeType": "Block",
                    "src": "22464:1157:128",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 34092,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34078,
                              "src": "22479:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34093,
                              "name": "loanCloseAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34082,
                              "src": "22490:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 34091,
                            "name": "_closeLoan",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34243,
                            "src": "22468:10:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Loan_$4912_storage_ptr_$_t_uint256_$returns$__$",
                              "typeString": "function (struct LoanStruct.Loan storage pointer,uint256)"
                            }
                          },
                          "id": 34094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22468:38:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34095,
                        "nodeType": "ExpressionStatement",
                        "src": "22468:38:128"
                      },
                      {
                        "assignments": [
                          34097
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34097,
                            "name": "_priceFeeds",
                            "nodeType": "VariableDeclaration",
                            "scope": 34160,
                            "src": "22511:19:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 34096,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "22511:7:128",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34099,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 34098,
                          "name": "priceFeeds",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4575,
                          "src": "22533:10:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22511:32:128"
                      },
                      {
                        "assignments": [
                          34101
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34101,
                            "name": "currentMargin",
                            "nodeType": "VariableDeclaration",
                            "scope": 34160,
                            "src": "22547:21:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 34100,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22547:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34102,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22547:21:128"
                      },
                      {
                        "assignments": [
                          34104
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34104,
                            "name": "collateralToLoanRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 34160,
                            "src": "22572:28:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 34103,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22572:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34105,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22572:28:128"
                      },
                      {
                        "assignments": [
                          34107,
                          34109
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34107,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 34160,
                            "src": "22690:12:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 34106,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "22690:4:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 34109,
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "scope": 34160,
                            "src": "22704:17:128",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 34108,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "22704:5:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34129,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 34115,
                                          "name": "_priceFeeds",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 34097,
                                          "src": "22797:11:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 34114,
                                        "name": "IPriceFeeds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8707,
                                        "src": "22785:11:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                          "typeString": "type(contract IPriceFeeds)"
                                        }
                                      },
                                      "id": 34116,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "22785:24:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                        "typeString": "contract IPriceFeeds"
                                      }
                                    },
                                    "id": 34117,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getCurrentMargin",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 8684,
                                    "src": "22785:41:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (address,address,uint256,uint256) view external returns (uint256,uint256)"
                                    }
                                  },
                                  "id": 34118,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "22785:50:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34119,
                                    "name": "loanParamsLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34080,
                                    "src": "22842:15:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                    }
                                  },
                                  "id": 34120,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "loanToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4875,
                                  "src": "22842:25:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34121,
                                    "name": "loanParamsLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34080,
                                    "src": "22874:15:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                    }
                                  },
                                  "id": 34122,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "collateralToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4877,
                                  "src": "22874:31:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34123,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34078,
                                    "src": "22912:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 34124,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "principal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4897,
                                  "src": "22912:19:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34125,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34078,
                                    "src": "22938:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 34126,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "collateral",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4899,
                                  "src": "22938:20:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34112,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "22756:3:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 34113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "22756:22:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 34127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22756:208:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 34110,
                              "name": "_priceFeeds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34097,
                              "src": "22728:11:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 34111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "22728:22:128",
                            "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": 34128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22728:241:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22689:280:128"
                      },
                      {
                        "externalReferences": [
                          {
                            "success": {
                              "declaration": 34107,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "22993:7:128",
                              "valueSize": 1
                            }
                          },
                          {
                            "currentMargin": {
                              "declaration": 34101,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "23011:13:128",
                              "valueSize": 1
                            }
                          },
                          {
                            "data": {
                              "declaration": 34109,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "23038:4:128",
                              "valueSize": 1
                            }
                          },
                          {
                            "collateralToLoanRate": {
                              "declaration": 34104,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "23053:20:128",
                              "valueSize": 1
                            }
                          },
                          {
                            "data": {
                              "declaration": 34109,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "23087:4:128",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 34130,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    if eq(success, 1)\n    {\n        currentMargin := mload(add(data, 32))\n        collateralToLoanRate := mload(add(data, 64))\n    }\n}",
                        "src": "22973:133:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 34145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 34140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_CloseTypes_$33057",
                                    "typeString": "enum LoanClosingsWith.CloseTypes"
                                  },
                                  "id": 34135,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 34132,
                                    "name": "closeType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34088,
                                    "src": "23253:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_CloseTypes_$33057",
                                      "typeString": "enum LoanClosingsWith.CloseTypes"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34133,
                                      "name": "CloseTypes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33057,
                                      "src": "23266:10:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_CloseTypes_$33057_$",
                                        "typeString": "type(enum LoanClosingsWith.CloseTypes)"
                                      }
                                    },
                                    "id": 34134,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Deposit",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "23266:18:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_CloseTypes_$33057",
                                      "typeString": "enum LoanClosingsWith.CloseTypes"
                                    }
                                  },
                                  "src": "23253:31:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 34139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34136,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34078,
                                      "src": "23292:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 34137,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "principal",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4897,
                                    "src": "23292:19:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 34138,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23315:1:128",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "23292:24:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "23253:63:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 34144,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 34141,
                                  "name": "currentMargin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34101,
                                  "src": "23346:13:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34142,
                                    "name": "loanParamsLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34080,
                                    "src": "23362:15:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                    }
                                  },
                                  "id": 34143,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maintenanceMargin",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4881,
                                  "src": "23362:33:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23346:49:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "23253:142:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e6865616c74687920706f736974696f6e",
                              "id": 34146,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23400:20:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a20a6fe43cf061d9638e42e18d63dd0524a0f2893c781dd86909659f7ba13618",
                                "typeString": "literal_string \"unhealthy position\""
                              },
                              "value": "unhealthy position"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a20a6fe43cf061d9638e42e18d63dd0524a0f2893c781dd86909659f7ba13618",
                                "typeString": "literal_string \"unhealthy position\""
                              }
                            ],
                            "id": 34131,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "23241:7:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 34147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23241:183:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34148,
                        "nodeType": "ExpressionStatement",
                        "src": "23241:183:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 34150,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34080,
                              "src": "23452:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34151,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34078,
                              "src": "23472:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34152,
                              "name": "loanCloseAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34082,
                              "src": "23486:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34153,
                              "name": "collateralCloseAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34084,
                              "src": "23506:21:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34154,
                              "name": "collateralToLoanRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34104,
                              "src": "23532:20:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34155,
                              "name": "collateralToLoanSwapRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34086,
                              "src": "23557:24:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34156,
                              "name": "currentMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34101,
                              "src": "23586:13:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34157,
                              "name": "closeType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34088,
                              "src": "23604:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_CloseTypes_$33057",
                                "typeString": "enum LoanClosingsWith.CloseTypes"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_CloseTypes_$33057",
                                "typeString": "enum LoanClosingsWith.CloseTypes"
                              }
                            ],
                            "id": 34149,
                            "name": "_emitClosingEvents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34530,
                            "src": "23429:18:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanParams_$4884_memory_ptr_$_t_struct$_Loan_$4912_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_CloseTypes_$33057_$returns$__$",
                              "typeString": "function (struct LoanParamsStruct.LoanParams memory,struct LoanStruct.Loan memory,uint256,uint256,uint256,uint256,uint256,enum LoanClosingsWith.CloseTypes)"
                            }
                          },
                          "id": 34158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23429:188:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34159,
                        "nodeType": "ExpressionStatement",
                        "src": "23429:188:128"
                      }
                    ]
                  },
                  "documentation": "@notice Close a loan.\n\t * @dev Wrapper for _closeLoan internal function.\n\t * @param loanLocal The loan object.\n@param loanParamsLocal The loan params.\n@param loanCloseAmount The amount to close: principal or lower.\n@param collateralCloseAmount The amount of collateral to close.\n@param collateralToLoanSwapRate The price rate collateral/loan token.\n@param closeType The type of loan close.\n",
                  "id": 34161,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_finalizeClose",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 34089,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34078,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 34161,
                        "src": "22271:22:128",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 34077,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "22271:4:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34080,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 34161,
                        "src": "22297:34:128",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 34079,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "22297:10:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34082,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 34161,
                        "src": "22335:23:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34081,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22335:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34084,
                        "name": "collateralCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 34161,
                        "src": "22362:29:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34083,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22362:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34086,
                        "name": "collateralToLoanSwapRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 34161,
                        "src": "22395:32:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34085,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22395:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34088,
                        "name": "closeType",
                        "nodeType": "VariableDeclaration",
                        "scope": 34161,
                        "src": "22431:20:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_CloseTypes_$33057",
                          "typeString": "enum LoanClosingsWith.CloseTypes"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 34087,
                          "name": "CloseTypes",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 33057,
                          "src": "22431:10:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_CloseTypes_$33057",
                            "typeString": "enum LoanClosingsWith.CloseTypes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22267:187:128"
                  },
                  "returnParameters": {
                    "id": 34090,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22464:0:128"
                  },
                  "scope": 34531,
                  "src": "22244:1377:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 34242,
                    "nodeType": "Block",
                    "src": "23875:505:128",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 34171,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 34169,
                                "name": "loanCloseAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34165,
                                "src": "23887:15:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 34170,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23906:1:128",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "23887:20:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6e6f7468696e6720746f20636c6f7365",
                              "id": 34172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23909:18:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b6e347c27e7560b38d6987dbc7abffa635039e96ab87f901609065276352a929",
                                "typeString": "literal_string \"nothing to close\""
                              },
                              "value": "nothing to close"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b6e347c27e7560b38d6987dbc7abffa635039e96ab87f901609065276352a929",
                                "typeString": "literal_string \"nothing to close\""
                              }
                            ],
                            "id": 34168,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "23879:7:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 34173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23879:49:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34174,
                        "nodeType": "ExpressionStatement",
                        "src": "23879:49:128"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 34178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 34175,
                            "name": "loanCloseAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34165,
                            "src": "23937:15:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34176,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34163,
                              "src": "23956:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 34177,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "principal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4897,
                            "src": "23956:19:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23937:38:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 34240,
                          "nodeType": "Block",
                          "src": "24305:72:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 34238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34230,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34163,
                                    "src": "24310:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 34232,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "principal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4897,
                                  "src": "24310:19:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 34236,
                                      "name": "loanCloseAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34165,
                                      "src": "24356:15:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34233,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34163,
                                        "src": "24332:9:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 34234,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "principal",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4897,
                                      "src": "24332:19:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 34235,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "24332:23:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 34237,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "24332:40:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24310:62:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34239,
                              "nodeType": "ExpressionStatement",
                              "src": "24310:62:128"
                            }
                          ]
                        },
                        "id": 34241,
                        "nodeType": "IfStatement",
                        "src": "23933:444:128",
                        "trueBody": {
                          "id": 34229,
                          "nodeType": "Block",
                          "src": "23977:322:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 34183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34179,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34163,
                                    "src": "23982:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 34181,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "principal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4897,
                                  "src": "23982:19:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 34182,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24004:1:128",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "23982:23:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34184,
                              "nodeType": "ExpressionStatement",
                              "src": "23982:23:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 34189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34185,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34163,
                                    "src": "24010:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 34187,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "active",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4895,
                                  "src": "24010:16:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "66616c7365",
                                  "id": 34188,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24029:5:128",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "24010:24:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 34190,
                              "nodeType": "ExpressionStatement",
                              "src": "24010:24:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 34196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34191,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34163,
                                    "src": "24039:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 34193,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "endTimestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4903,
                                  "src": "24039:22:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34194,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44984,
                                    "src": "24064:5:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 34195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "24064:15:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24039:40:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34197,
                              "nodeType": "ExpressionStatement",
                              "src": "24039:40:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 34202,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34198,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34163,
                                    "src": "24084:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 34200,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "pendingTradesId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4893,
                                  "src": "24084:25:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 34201,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24112:1:128",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "24084:29:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 34203,
                              "nodeType": "ExpressionStatement",
                              "src": "24084:29:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34207,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34163,
                                      "src": "24147:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 34208,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4889,
                                    "src": "24147:12:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34204,
                                    "name": "activeLoansSet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4623,
                                    "src": "24118:14:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                      "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                    }
                                  },
                                  "id": 34206,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "removeBytes32",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26887,
                                  "src": "24118:28:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                    "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                                  }
                                },
                                "id": 34209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24118:42:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 34210,
                              "nodeType": "ExpressionStatement",
                              "src": "24118:42:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34216,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34163,
                                      "src": "24212:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 34217,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4889,
                                    "src": "24212:12:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 34211,
                                      "name": "lenderLoanSets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4627,
                                      "src": "24165:14:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                                        "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set storage ref)"
                                      }
                                    },
                                    "id": 34214,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34212,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34163,
                                        "src": "24180:9:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 34213,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4911,
                                      "src": "24180:16:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24165:32:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                      "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                    }
                                  },
                                  "id": 34215,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "removeBytes32",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26887,
                                  "src": "24165:46:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                    "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                                  }
                                },
                                "id": 34218,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24165:60:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 34219,
                              "nodeType": "ExpressionStatement",
                              "src": "24165:60:128"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34225,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34163,
                                      "src": "24281:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 34226,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4889,
                                    "src": "24281:12:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 34220,
                                      "name": "borrowerLoanSets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4631,
                                      "src": "24230:16:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                                        "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set storage ref)"
                                      }
                                    },
                                    "id": 34223,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34221,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34163,
                                        "src": "24247:9:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 34222,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "borrower",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4909,
                                      "src": "24247:18:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24230:36:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                      "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                    }
                                  },
                                  "id": 34224,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "removeBytes32",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26887,
                                  "src": "24230:50:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                    "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                                  }
                                },
                                "id": 34227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24230:64:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 34228,
                              "nodeType": "ExpressionStatement",
                              "src": "24230:64:128"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to close a loan.\n\t * @param loanLocal The loan object.\n@param loanCloseAmount The amount to close: principal or lower.\n\t * ",
                  "id": 34243,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_closeLoan",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 34166,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34163,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 34243,
                        "src": "23817:22:128",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 34162,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "23817:4:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34165,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 34243,
                        "src": "23841:23:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34164,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23841:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23816:49:128"
                  },
                  "returnParameters": {
                    "id": 34167,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23875:0:128"
                  },
                  "scope": 34531,
                  "src": "23797:583:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 34429,
                    "nodeType": "Block",
                    "src": "24886:1960:128",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34255,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34247,
                                "src": "24944:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 34256,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4911,
                              "src": "24944:16:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34257,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34245,
                                "src": "24962:15:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 34258,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "24962:25:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 34254,
                            "name": "_payInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27616,
                            "src": "24931:12:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 34259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24931:57:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34260,
                        "nodeType": "ExpressionStatement",
                        "src": "24931:57:128"
                      },
                      {
                        "assignments": [
                          34262
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34262,
                            "name": "loanInterestLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 34429,
                            "src": "24993:38:128",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                              "typeString": "struct LoanInterestStruct.LoanInterest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 34261,
                              "name": "LoanInterest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4864,
                              "src": "24993:12:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34267,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 34263,
                            "name": "loanInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4619,
                            "src": "25034:12:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanInterest_$4864_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanInterestStruct.LoanInterest storage ref)"
                            }
                          },
                          "id": 34266,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34264,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34247,
                              "src": "25047:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                "typeString": "struct LoanStruct.Loan memory"
                              }
                            },
                            "id": 34265,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4889,
                            "src": "25047:12:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "25034:26:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanInterest_$4864_storage",
                            "typeString": "struct LoanInterestStruct.LoanInterest storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24993:67:128"
                      },
                      {
                        "assignments": [
                          34269
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34269,
                            "name": "lenderInterestLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 34429,
                            "src": "25064:42:128",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                              "typeString": "struct LenderInterestStruct.LenderInterest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 34268,
                              "name": "LenderInterest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4854,
                              "src": "25064:14:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34277,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 34270,
                              "name": "lenderInterest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4615,
                              "src": "25109:14:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$_$",
                                "typeString": "mapping(address => mapping(address => struct LenderInterestStruct.LenderInterest storage ref))"
                              }
                            },
                            "id": 34273,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34271,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34247,
                                "src": "25124:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 34272,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4911,
                              "src": "25124:16:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "25109:32:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$",
                              "typeString": "mapping(address => struct LenderInterestStruct.LenderInterest storage ref)"
                            }
                          },
                          "id": 34276,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34274,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34245,
                              "src": "25142:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              }
                            },
                            "id": 34275,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4875,
                            "src": "25142:25:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "25109:59:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LenderInterest_$4854_storage",
                            "typeString": "struct LenderInterestStruct.LenderInterest storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25064:104:128"
                      },
                      {
                        "assignments": [
                          34279
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34279,
                            "name": "interestTime",
                            "nodeType": "VariableDeclaration",
                            "scope": 34429,
                            "src": "25173:20:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 34278,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25173:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34282,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 34280,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44984,
                            "src": "25196:5:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 34281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "25196:15:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25173:38:128"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 34286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 34283,
                            "name": "interestTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34279,
                            "src": "25219:12:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34284,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34247,
                              "src": "25234:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                "typeString": "struct LoanStruct.Loan memory"
                              }
                            },
                            "id": 34285,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "endTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4903,
                            "src": "25234:22:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25219:37:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 34293,
                        "nodeType": "IfStatement",
                        "src": "25215:90:128",
                        "trueBody": {
                          "id": 34292,
                          "nodeType": "Block",
                          "src": "25258:47:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 34290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 34287,
                                  "name": "interestTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34279,
                                  "src": "25263:12:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34288,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34247,
                                    "src": "25278:9:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                      "typeString": "struct LoanStruct.Loan memory"
                                    }
                                  },
                                  "id": 34289,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "endTimestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4903,
                                  "src": "25278:22:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25263:37:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34291,
                              "nodeType": "ExpressionStatement",
                              "src": "25263:37:128"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 34295,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34262,
                              "src": "25348:17:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34296,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34247,
                                "src": "25370:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 34297,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4889,
                              "src": "25370:12:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34298,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34245,
                                "src": "25387:15:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 34299,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "25387:25:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34300,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34245,
                                "src": "25431:15:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 34301,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "25431:31:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34302,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34247,
                                "src": "25557:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 34303,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "borrower",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4909,
                              "src": "25557:18:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34304,
                              "name": "interestTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34279,
                              "src": "25580:12:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 34294,
                            "name": "_settleFeeRewardForInterestExpense",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27366,
                            "src": "25309:34:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanInterest_$4864_storage_ptr_$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (struct LoanInterestStruct.LoanInterest storage pointer,bytes32,address,address,address,uint256)"
                            }
                          },
                          "id": 34305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25309:287:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34306,
                        "nodeType": "ExpressionStatement",
                        "src": "25309:287:128"
                      },
                      {
                        "assignments": [
                          34308
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34308,
                            "name": "owedPerDayRefund",
                            "nodeType": "VariableDeclaration",
                            "scope": 34429,
                            "src": "25601:24:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 34307,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25601:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34309,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25601:24:128"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 34313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 34310,
                            "name": "closePrincipal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34249,
                            "src": "25633:14:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34311,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34247,
                              "src": "25650:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                "typeString": "struct LoanStruct.Loan memory"
                              }
                            },
                            "id": 34312,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "principal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4897,
                            "src": "25650:19:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25633:36:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 34332,
                          "nodeType": "Block",
                          "src": "25779:57:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 34330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 34327,
                                  "name": "owedPerDayRefund",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34308,
                                  "src": "25784:16:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34328,
                                    "name": "loanInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34262,
                                    "src": "25803:17:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                      "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                    }
                                  },
                                  "id": 34329,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "owedPerDay",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4859,
                                  "src": "25803:28:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25784:47:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34331,
                              "nodeType": "ExpressionStatement",
                              "src": "25784:47:128"
                            }
                          ]
                        },
                        "id": 34333,
                        "nodeType": "IfStatement",
                        "src": "25629:207:128",
                        "trueBody": {
                          "id": 34326,
                          "nodeType": "Block",
                          "src": "25671:102:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 34324,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 34314,
                                  "name": "owedPerDayRefund",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34308,
                                  "src": "25676:16:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34321,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34247,
                                        "src": "25748:9:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                          "typeString": "struct LoanStruct.Loan memory"
                                        }
                                      },
                                      "id": 34322,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "principal",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4897,
                                      "src": "25748:19:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 34318,
                                          "name": "closePrincipal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 34249,
                                          "src": "25728:14:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 34315,
                                            "name": "loanInterestLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 34262,
                                            "src": "25695:17:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                              "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                            }
                                          },
                                          "id": 34316,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "owedPerDay",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4859,
                                          "src": "25695:28:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 34317,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "25695:32:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 34319,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "25695:48:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 34320,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "25695:52:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 34323,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25695:73:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25676:92:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34325,
                              "nodeType": "ExpressionStatement",
                              "src": "25676:92:128"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 34342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34334,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34262,
                              "src": "25871:17:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            "id": 34336,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owedPerDay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4859,
                            "src": "25871:28:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 34340,
                                "name": "owedPerDayRefund",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34308,
                                "src": "25935:16:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34337,
                                  "name": "loanInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34262,
                                  "src": "25902:17:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                    "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                  }
                                },
                                "id": 34338,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owedPerDay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4859,
                                "src": "25902:28:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "25902:32:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 34341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25902:50:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25871:81:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 34343,
                        "nodeType": "ExpressionStatement",
                        "src": "25871:81:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 34352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34344,
                              "name": "lenderInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34269,
                              "src": "25956:19:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                              }
                            },
                            "id": 34346,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owedPerDay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4847,
                            "src": "25956:30:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 34350,
                                "name": "owedPerDayRefund",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34308,
                                "src": "26024:16:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34347,
                                  "name": "lenderInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34269,
                                  "src": "25989:19:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                    "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                  }
                                },
                                "id": 34348,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owedPerDay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4847,
                                "src": "25989:30:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "25989:34:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 34351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25989:52:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25956:85:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 34353,
                        "nodeType": "ExpressionStatement",
                        "src": "25956:85:128"
                      },
                      {
                        "assignments": [
                          34355
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34355,
                            "name": "interestRefundToBorrower",
                            "nodeType": "VariableDeclaration",
                            "scope": 34429,
                            "src": "26077:32:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 34354,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "26077:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34361,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 34359,
                              "name": "interestTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34279,
                              "src": "26139:12:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34356,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34247,
                                "src": "26112:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 34357,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "endTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4903,
                              "src": "26112:22:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 34358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "26112:26:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 34360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26112:40:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26077:75:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 34367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 34362,
                            "name": "interestRefundToBorrower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34355,
                            "src": "26156:24:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 34365,
                                "name": "owedPerDayRefund",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34308,
                                "src": "26212:16:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 34363,
                                "name": "interestRefundToBorrower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34355,
                                "src": "26183:24:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42153,
                              "src": "26183:28:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 34366,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26183:46:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26156:73:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 34368,
                        "nodeType": "ExpressionStatement",
                        "src": "26156:73:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 34374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 34369,
                            "name": "interestRefundToBorrower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34355,
                            "src": "26233:24:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 34372,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26289:6:128",
                                "subdenomination": "days",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_86400_by_1",
                                  "typeString": "int_const 86400"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_86400_by_1",
                                  "typeString": "int_const 86400"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 34370,
                                "name": "interestRefundToBorrower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34355,
                                "src": "26260:24:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34371,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "26260:28:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 34373,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26260:36:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26233:63:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 34375,
                        "nodeType": "ExpressionStatement",
                        "src": "26233:63:128"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 34379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 34376,
                            "name": "closePrincipal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34249,
                            "src": "26305:14:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34377,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34247,
                              "src": "26322:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                "typeString": "struct LoanStruct.Loan memory"
                              }
                            },
                            "id": 34378,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "principal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4897,
                            "src": "26322:19:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26305:36:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 34397,
                          "nodeType": "Block",
                          "src": "26452:44:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 34395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34391,
                                    "name": "loanInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34262,
                                    "src": "26457:17:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                      "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                    }
                                  },
                                  "id": 34393,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "depositTotal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4861,
                                  "src": "26457:30:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 34394,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "26490:1:128",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "26457:34:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34396,
                              "nodeType": "ExpressionStatement",
                              "src": "26457:34:128"
                            }
                          ]
                        },
                        "id": 34398,
                        "nodeType": "IfStatement",
                        "src": "26301:195:128",
                        "trueBody": {
                          "id": 34390,
                          "nodeType": "Block",
                          "src": "26343:103:128",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 34388,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34380,
                                    "name": "loanInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34262,
                                    "src": "26348:17:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                      "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                    }
                                  },
                                  "id": 34382,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "depositTotal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4861,
                                  "src": "26348:30:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 34386,
                                      "name": "interestRefundToBorrower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34355,
                                      "src": "26416:24:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34383,
                                        "name": "loanInterestLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34262,
                                        "src": "26381:17:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                          "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                        }
                                      },
                                      "id": 34384,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "depositTotal",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4861,
                                      "src": "26381:30:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 34385,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "26381:34:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 34387,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26381:60:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "26348:93:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34389,
                              "nodeType": "ExpressionStatement",
                              "src": "26348:93:128"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 34407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34399,
                              "name": "lenderInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34269,
                              "src": "26546:19:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                              }
                            },
                            "id": 34401,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "principalTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4845,
                            "src": "26546:34:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 34405,
                                "name": "closePrincipal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34249,
                                "src": "26622:14:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34402,
                                  "name": "lenderInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34269,
                                  "src": "26583:19:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                    "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                  }
                                },
                                "id": 34403,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "principalTotal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4845,
                                "src": "26583:34:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "26583:38:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 34406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26583:54:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26546:91:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 34408,
                        "nodeType": "ExpressionStatement",
                        "src": "26546:91:128"
                      },
                      {
                        "assignments": [
                          34410
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34410,
                            "name": "owedTotal",
                            "nodeType": "VariableDeclaration",
                            "scope": 34429,
                            "src": "26642:17:128",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 34409,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "26642:7:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34413,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 34411,
                            "name": "lenderInterestLocal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34269,
                            "src": "26662:19:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                              "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                            }
                          },
                          "id": 34412,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owedTotal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4849,
                          "src": "26662:29:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26642:49:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 34425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34414,
                              "name": "lenderInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34269,
                              "src": "26695:19:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                              }
                            },
                            "id": 34416,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owedTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4849,
                            "src": "26695:29:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 34419,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 34417,
                                "name": "owedTotal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34410,
                                "src": "26727:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 34418,
                                "name": "interestRefundToBorrower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34355,
                                "src": "26739:24:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "26727:36:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 34423,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26805:1:128",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "id": 34424,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "26727:79:128",
                            "trueExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 34422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 34420,
                                "name": "owedTotal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34410,
                                "src": "26766:9:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 34421,
                                "name": "interestRefundToBorrower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34355,
                                "src": "26778:24:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "26766:36:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26695:111:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 34426,
                        "nodeType": "ExpressionStatement",
                        "src": "26695:111:128"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 34427,
                          "name": "interestRefundToBorrower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34355,
                          "src": "26818:24:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 34253,
                        "id": 34428,
                        "nodeType": "Return",
                        "src": "26811:31:128"
                      }
                    ]
                  },
                  "documentation": "@notice Compute the interest which neeeds to be refunded to the borrower\n  (because full interest is paid on loan).\n\t * @param loanParamsLocal The loan params.\n@param loanLocal The loan object.\n@param closePrincipal The amount of principal to close.\n\t * @return interestRefundToBorrower The interest refund to the borrower.\n",
                  "id": 34430,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_settleInterest",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 34250,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34245,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 34430,
                        "src": "24771:33:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 34244,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "24771:10:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34247,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 34430,
                        "src": "24808:21:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 34246,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "24808:4:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34249,
                        "name": "closePrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 34430,
                        "src": "24833:22:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34248,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24833:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24767:91:128"
                  },
                  "returnParameters": {
                    "id": 34253,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34252,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 34430,
                        "src": "24877:7:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34251,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24877:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24876:9:128"
                  },
                  "scope": 34531,
                  "src": "24743:2103:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 34529,
                    "nodeType": "Block",
                    "src": "27128:1317:128",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_CloseTypes_$33057",
                            "typeString": "enum LoanClosingsWith.CloseTypes"
                          },
                          "id": 34452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 34449,
                            "name": "closeType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34446,
                            "src": "27136:9:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_CloseTypes_$33057",
                              "typeString": "enum LoanClosingsWith.CloseTypes"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34450,
                              "name": "CloseTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33057,
                              "src": "27149:10:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_CloseTypes_$33057_$",
                                "typeString": "type(enum LoanClosingsWith.CloseTypes)"
                              }
                            },
                            "id": 34451,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "27149:18:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_CloseTypes_$33057",
                              "typeString": "enum LoanClosingsWith.CloseTypes"
                            }
                          },
                          "src": "27136:31:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_CloseTypes_$33057",
                              "typeString": "enum LoanClosingsWith.CloseTypes"
                            },
                            "id": 34476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 34473,
                              "name": "closeType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34446,
                              "src": "27632:9:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_CloseTypes_$33057",
                                "typeString": "enum LoanClosingsWith.CloseTypes"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34474,
                                "name": "CloseTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33057,
                                "src": "27645:10:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_CloseTypes_$33057_$",
                                  "typeString": "type(enum LoanClosingsWith.CloseTypes)"
                                }
                              },
                              "id": 34475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Swap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "27645:15:128",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_CloseTypes_$33057",
                                "typeString": "enum LoanClosingsWith.CloseTypes"
                              }
                            },
                            "src": "27632:28:128",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 34527,
                          "nodeType": "IfStatement",
                          "src": "27628:814:128",
                          "trueBody": {
                            "id": 34526,
                            "nodeType": "Block",
                            "src": "27662:780:128",
                            "statements": [
                              {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 34479,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 34477,
                                    "name": "collateralToLoanSwapRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34442,
                                    "src": "27719:24:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 34478,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27747:1:128",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "27719:29:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": null,
                                "id": 34491,
                                "nodeType": "IfStatement",
                                "src": "27715:120:128",
                                "trueBody": {
                                  "id": 34490,
                                  "nodeType": "Block",
                                  "src": "27750:85:128",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34488,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 34480,
                                          "name": "collateralToLoanSwapRate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 34442,
                                          "src": "27756:24:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_rational_1000000000000000000000000000000000000_by_1",
                                                "typeString": "int_const 1000...(29 digits omitted)...0000"
                                              },
                                              "id": 34485,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "3130",
                                                "id": 34483,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "27796:2:128",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_10_by_1",
                                                  "typeString": "int_const 10"
                                                },
                                                "value": "10"
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "**",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "3336",
                                                "id": 34484,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "27800:2:128",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_36_by_1",
                                                  "typeString": "int_const 36"
                                                },
                                                "value": "36"
                                              },
                                              "src": "27796:6:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1000000000000000000000000000000000000_by_1",
                                                "typeString": "int_const 1000...(29 digits omitted)...0000"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "id": 34486,
                                              "name": "collateralToLoanSwapRate",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 34442,
                                              "src": "27804:24:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_1000000000000000000000000000000000000_by_1",
                                                "typeString": "int_const 1000...(29 digits omitted)...0000"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 34481,
                                              "name": "SafeMath",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42309,
                                              "src": "27783:8:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_SafeMath_$42309_$",
                                                "typeString": "type(library SafeMath)"
                                              }
                                            },
                                            "id": 34482,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "div",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 42169,
                                            "src": "27783:12:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 34487,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "27783:46:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "27756:73:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 34489,
                                      "nodeType": "ExpressionStatement",
                                      "src": "27756:73:128"
                                    }
                                  ]
                                }
                              },
                              {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 34494,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 34492,
                                    "name": "currentMargin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34444,
                                    "src": "27889:13:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 34493,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27906:1:128",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "27889:18:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": null,
                                "id": 34506,
                                "nodeType": "IfStatement",
                                "src": "27885:87:128",
                                "trueBody": {
                                  "id": 34505,
                                  "nodeType": "Block",
                                  "src": "27909:63:128",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34503,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 34495,
                                          "name": "currentMargin",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 34444,
                                          "src": "27915:13:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_rational_100000000000000000000000000000000000000_by_1",
                                                "typeString": "int_const 1000...(31 digits omitted)...0000"
                                              },
                                              "id": 34500,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "3130",
                                                "id": 34498,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "27944:2:128",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_10_by_1",
                                                  "typeString": "int_const 10"
                                                },
                                                "value": "10"
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "**",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "3338",
                                                "id": 34499,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "27948:2:128",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_38_by_1",
                                                  "typeString": "int_const 38"
                                                },
                                                "value": "38"
                                              },
                                              "src": "27944:6:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_100000000000000000000000000000000000000_by_1",
                                                "typeString": "int_const 1000...(31 digits omitted)...0000"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "id": 34501,
                                              "name": "currentMargin",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 34444,
                                              "src": "27952:13:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_100000000000000000000000000000000000000_by_1",
                                                "typeString": "int_const 1000...(31 digits omitted)...0000"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 34496,
                                              "name": "SafeMath",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42309,
                                              "src": "27931:8:128",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_SafeMath_$42309_$",
                                                "typeString": "type(library SafeMath)"
                                              }
                                            },
                                            "id": 34497,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "div",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 42169,
                                            "src": "27931:12:128",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 34502,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "27931:35:128",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "27915:51:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 34504,
                                      "nodeType": "ExpressionStatement",
                                      "src": "27915:51:128"
                                    }
                                  ]
                                }
                              },
                              {
                                "eventCall": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34508,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34434,
                                        "src": "28001:9:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                          "typeString": "struct LoanStruct.Loan memory"
                                        }
                                      },
                                      "id": 34509,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "borrower",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4909,
                                      "src": "28001:18:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34510,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34434,
                                        "src": "28043:9:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                          "typeString": "struct LoanStruct.Loan memory"
                                        }
                                      },
                                      "id": 34511,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4911,
                                      "src": "28043:16:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34512,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34434,
                                        "src": "28076:9:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                          "typeString": "struct LoanStruct.Loan memory"
                                        }
                                      },
                                      "id": 34513,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "id",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4889,
                                      "src": "28076:12:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34514,
                                        "name": "loanParamsLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34432,
                                        "src": "28105:15:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                          "typeString": "struct LoanParamsStruct.LoanParams memory"
                                        }
                                      },
                                      "id": 34515,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "collateralToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4877,
                                      "src": "28105:31:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34516,
                                        "name": "loanParamsLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34432,
                                        "src": "28162:15:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                          "typeString": "struct LoanParamsStruct.LoanParams memory"
                                        }
                                      },
                                      "id": 34517,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "loanToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4875,
                                      "src": "28162:25:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34518,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44994,
                                        "src": "28207:3:128",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 34519,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "28207:10:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 34520,
                                      "name": "collateralCloseAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34438,
                                      "src": "28234:21:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 34521,
                                      "name": "loanCloseAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34436,
                                      "src": "28283:15:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 34522,
                                      "name": "collateralToLoanSwapRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34442,
                                      "src": "28324:24:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 34523,
                                      "name": "currentMargin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34444,
                                      "src": "28399:13:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 34507,
                                    "name": "CloseWithSwap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5881,
                                    "src": "27982:13:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                      "typeString": "function (address,address,bytes32,address,address,address,uint256,uint256,uint256,uint256)"
                                    }
                                  },
                                  "id": 34524,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "27982:455:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 34525,
                                "nodeType": "EmitStatement",
                                "src": "27977:460:128"
                              }
                            ]
                          }
                        },
                        "id": 34528,
                        "nodeType": "IfStatement",
                        "src": "27132:1310:128",
                        "trueBody": {
                          "id": 34472,
                          "nodeType": "Block",
                          "src": "27169:453:128",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34454,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34434,
                                      "src": "27201:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                        "typeString": "struct LoanStruct.Loan memory"
                                      }
                                    },
                                    "id": 34455,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "borrower",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4909,
                                    "src": "27201:18:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34456,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34434,
                                      "src": "27245:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                        "typeString": "struct LoanStruct.Loan memory"
                                      }
                                    },
                                    "id": 34457,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4911,
                                    "src": "27245:16:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34458,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34434,
                                      "src": "27278:9:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                        "typeString": "struct LoanStruct.Loan memory"
                                      }
                                    },
                                    "id": 34459,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4889,
                                    "src": "27278:12:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34460,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "27307:3:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 34461,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "27307:10:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34462,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34432,
                                      "src": "27334:15:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 34463,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "27334:25:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34464,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34432,
                                      "src": "27379:15:128",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 34465,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4877,
                                    "src": "27379:31:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 34466,
                                    "name": "loanCloseAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34436,
                                    "src": "27436:15:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 34467,
                                    "name": "collateralCloseAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34438,
                                    "src": "27477:21:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 34468,
                                    "name": "collateralToLoanRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34440,
                                    "src": "27530:20:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 34469,
                                    "name": "currentMargin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34444,
                                    "src": "27581:13:128",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 34453,
                                  "name": "CloseWithDeposit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5859,
                                  "src": "27179:16:128",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,bytes32,address,address,address,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 34470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27179:438:128",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 34471,
                              "nodeType": "EmitStatement",
                              "src": "27174:443:128"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 34530,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_emitClosingEvents",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 34447,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34432,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 34530,
                        "src": "26880:33:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 34431,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "26880:10:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34434,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 34530,
                        "src": "26917:21:128",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 34433,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "26917:4:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34436,
                        "name": "loanCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 34530,
                        "src": "26942:23:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34435,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26942:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34438,
                        "name": "collateralCloseAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 34530,
                        "src": "26969:29:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34437,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26969:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34440,
                        "name": "collateralToLoanRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 34530,
                        "src": "27002:28:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34439,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27002:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34442,
                        "name": "collateralToLoanSwapRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 34530,
                        "src": "27034:32:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34441,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27034:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34444,
                        "name": "currentMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 34530,
                        "src": "27070:21:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34443,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27070:7:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34446,
                        "name": "closeType",
                        "nodeType": "VariableDeclaration",
                        "scope": 34530,
                        "src": "27095:20:128",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_CloseTypes_$33057",
                          "typeString": "enum LoanClosingsWith.CloseTypes"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 34445,
                          "name": "CloseTypes",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 33057,
                          "src": "27095:10:128",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_CloseTypes_$33057",
                            "typeString": "enum LoanClosingsWith.CloseTypes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26876:242:128"
                  },
                  "returnParameters": {
                    "id": 34448,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27128:0:128"
                  },
                  "scope": 34531,
                  "src": "26849:1596:128",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 34532,
              "src": "864:27583:128"
            }
          ],
          "src": "118:28330:128"
        },
        "id": 128
      },
      "contracts/modules/LoanMaintenance.sol": {
        "ast": {
          "absolutePath": "contracts/modules/LoanMaintenance.sol",
          "exportedSymbols": {
            "LoanMaintenance": [
              36073
            ]
          },
          "id": 36074,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 34533,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:129"
            },
            {
              "id": 34534,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "142:33:129"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 34535,
              "nodeType": "ImportDirective",
              "scope": 36074,
              "sourceUnit": 4842,
              "src": "177:27:129",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/LoanOpeningsEvents.sol",
              "file": "../events/LoanOpeningsEvents.sol",
              "id": 34536,
              "nodeType": "ImportDirective",
              "scope": 36074,
              "sourceUnit": 5995,
              "src": "205:42:129",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/LoanMaintenanceEvents.sol",
              "file": "../events/LoanMaintenanceEvents.sol",
              "id": 34537,
              "nodeType": "ImportDirective",
              "scope": 36074,
              "sourceUnit": 5929,
              "src": "248:45:129",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/VaultController.sol",
              "file": "../mixins/VaultController.sol",
              "id": 34538,
              "nodeType": "ImportDirective",
              "scope": 36074,
              "sourceUnit": 28215,
              "src": "294:39:129",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/InterestUser.sol",
              "file": "../mixins/InterestUser.sol",
              "id": 34539,
              "nodeType": "ImportDirective",
              "scope": 36074,
              "sourceUnit": 27664,
              "src": "334:36:129",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/LiquidationHelper.sol",
              "file": "../mixins/LiquidationHelper.sol",
              "id": 34540,
              "nodeType": "ImportDirective",
              "scope": 36074,
              "sourceUnit": 27817,
              "src": "371:41:129",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/swaps/SwapsUser.sol",
              "file": "../swaps/SwapsUser.sol",
              "id": 34541,
              "nodeType": "ImportDirective",
              "scope": 36074,
              "sourceUnit": 43250,
              "src": "413:32:129",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/ModuleCommonFunctionalities.sol",
              "file": "../mixins/ModuleCommonFunctionalities.sol",
              "id": 34542,
              "nodeType": "ImportDirective",
              "scope": 36074,
              "sourceUnit": 27833,
              "src": "446:51:129",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 34543,
                    "name": "LoanOpeningsEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5994,
                    "src": "863:18:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanOpeningsEvents_$5994",
                      "typeString": "contract LoanOpeningsEvents"
                    }
                  },
                  "id": 34544,
                  "nodeType": "InheritanceSpecifier",
                  "src": "863:18:129"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 34545,
                    "name": "LoanMaintenanceEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5928,
                    "src": "884:21:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanMaintenanceEvents_$5928",
                      "typeString": "contract LoanMaintenanceEvents"
                    }
                  },
                  "id": 34546,
                  "nodeType": "InheritanceSpecifier",
                  "src": "884:21:129"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 34547,
                    "name": "VaultController",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28214,
                    "src": "908:15:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VaultController_$28214",
                      "typeString": "contract VaultController"
                    }
                  },
                  "id": 34548,
                  "nodeType": "InheritanceSpecifier",
                  "src": "908:15:129"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 34549,
                    "name": "InterestUser",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27663,
                    "src": "926:12:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_InterestUser_$27663",
                      "typeString": "contract InterestUser"
                    }
                  },
                  "id": 34550,
                  "nodeType": "InheritanceSpecifier",
                  "src": "926:12:129"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 34551,
                    "name": "SwapsUser",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 43249,
                    "src": "941:9:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SwapsUser_$43249",
                      "typeString": "contract SwapsUser"
                    }
                  },
                  "id": 34552,
                  "nodeType": "InheritanceSpecifier",
                  "src": "941:9:129"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 34553,
                    "name": "LiquidationHelper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27816,
                    "src": "953:17:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LiquidationHelper_$27816",
                      "typeString": "contract LiquidationHelper"
                    }
                  },
                  "id": 34554,
                  "nodeType": "InheritanceSpecifier",
                  "src": "953:17:129"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 34555,
                    "name": "ModuleCommonFunctionalities",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27832,
                    "src": "973:27:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModuleCommonFunctionalities_$27832",
                      "typeString": "contract ModuleCommonFunctionalities"
                    }
                  },
                  "id": 34556,
                  "nodeType": "InheritanceSpecifier",
                  "src": "973:27:129"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                5832,
                5928,
                5994,
                6055,
                6341,
                27492,
                27663,
                27816,
                27832,
                28214,
                41125,
                41798,
                41829,
                43249
              ],
              "contractKind": "contract",
              "documentation": "@title Loan Maintenance contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains functions to query loan data and to modify its status\nby withdrawing or depositing collateral.\n",
              "fullyImplemented": true,
              "id": 36073,
              "linearizedBaseContracts": [
                36073,
                27832,
                27816,
                43249,
                27663,
                27492,
                5832,
                6341,
                28214,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913,
                5928,
                5994,
                6055
              ],
              "name": "LoanMaintenance",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "LoanMaintenance.LoanReturnData",
                  "id": 34587,
                  "members": [
                    {
                      "constant": false,
                      "id": 34558,
                      "name": "loanId",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1030:14:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 34557,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1030:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34560,
                      "name": "loanToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1048:17:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 34559,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1048:7:129",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34562,
                      "name": "collateralToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1069:23:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 34561,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1069:7:129",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34564,
                      "name": "principal",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1096:17:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34563,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1096:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34566,
                      "name": "collateral",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1117:18:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34565,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1117:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34568,
                      "name": "interestOwedPerDay",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1139:26:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34567,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1139:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34570,
                      "name": "interestDepositRemaining",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1169:32:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34569,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1169:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34572,
                      "name": "startRate",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1205:17:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34571,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1205:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34574,
                      "name": "startMargin",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1251:19:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34573,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1251:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34576,
                      "name": "maintenanceMargin",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1274:25:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34575,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1274:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34578,
                      "name": "currentMargin",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1303:21:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34577,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1303:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34580,
                      "name": "maxLoanTerm",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1328:19:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34579,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1328:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34582,
                      "name": "endTimestamp",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1351:20:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34581,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1351:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34584,
                      "name": "maxLiquidatable",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1375:23:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34583,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1375:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 34586,
                      "name": "maxSeizable",
                      "nodeType": "VariableDeclaration",
                      "scope": 34587,
                      "src": "1402:19:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34585,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1402:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "LoanReturnData",
                  "nodeType": "StructDefinition",
                  "scope": 36073,
                  "src": "1004:421:129",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 34590,
                    "nodeType": "Block",
                    "src": "1499:2:129",
                    "statements": []
                  },
                  "documentation": "@notice Empty public constructor.\n",
                  "id": 34591,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 34588,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1489:2:129"
                  },
                  "returnParameters": {
                    "id": 34589,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1499:0:129"
                  },
                  "scope": 36073,
                  "src": "1478:23:129",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 34598,
                    "nodeType": "Block",
                    "src": "1605:38:129",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c6c6261636b206e6f7420616c6c6f776564",
                              "id": 34595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1616:22:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ad2d1476e23c49655ed3d169418af7587abbe0f378f28c369338d50deee2f5b0",
                                "typeString": "literal_string \"fallback not allowed\""
                              },
                              "value": "fallback not allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_ad2d1476e23c49655ed3d169418af7587abbe0f378f28c369338d50deee2f5b0",
                                "typeString": "literal_string \"fallback not allowed\""
                              }
                            ],
                            "id": 34594,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44999,
                              45000
                            ],
                            "referencedDeclaration": 45000,
                            "src": "1609:6:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 34596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1609:30:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34597,
                        "nodeType": "ExpressionStatement",
                        "src": "1609:30:129"
                      }
                    ]
                  },
                  "documentation": "@notice Fallback function is to react to receiving value (rBTC).\n",
                  "id": 34599,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 34592,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1593:2:129"
                  },
                  "returnParameters": {
                    "id": 34593,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1605:0:129"
                  },
                  "scope": 36073,
                  "src": "1585:58:129",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 34690,
                    "nodeType": "Block",
                    "src": "1828:729:129",
                    "statements": [
                      {
                        "assignments": [
                          34607
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34607,
                            "name": "prevModuleContractAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 34690,
                            "src": "1832:33:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 34606,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1832:7:129",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34613,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 34608,
                            "name": "logicTargets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4583,
                            "src": "1868:12:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                              "typeString": "mapping(bytes4 => address)"
                            }
                          },
                          "id": 34612,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34609,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45328,
                                "src": "1881:4:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_LoanMaintenance_$36073",
                                  "typeString": "contract LoanMaintenance"
                                }
                              },
                              "id": 34610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "depositCollateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 34802,
                              "src": "1881:22:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$_t_bytes32_$_t_uint256_$returns$__$",
                                "typeString": "function (bytes32,uint256) payable external"
                              }
                            },
                            "id": 34611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1881:31:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1868:45:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1832:81:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34615,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45328,
                                  "src": "1928:4:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanMaintenance_$36073",
                                    "typeString": "contract LoanMaintenance"
                                  }
                                },
                                "id": 34616,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "depositCollateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 34802,
                                "src": "1928:22:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$_t_bytes32_$_t_uint256_$returns$__$",
                                  "typeString": "function (bytes32,uint256) payable external"
                                }
                              },
                              "id": 34617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1928:31:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34618,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34601,
                              "src": "1961:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 34614,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1917:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 34619,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1917:51:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34620,
                        "nodeType": "ExpressionStatement",
                        "src": "1917:51:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34622,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45328,
                                  "src": "1983:4:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanMaintenance_$36073",
                                    "typeString": "contract LoanMaintenance"
                                  }
                                },
                                "id": 34623,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawCollateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 34924,
                                "src": "1983:23:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32,address,uint256) external returns (uint256)"
                                }
                              },
                              "id": 34624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1983:32:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34625,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34601,
                              "src": "2017:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 34621,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1972:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 34626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1972:52:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34627,
                        "nodeType": "ExpressionStatement",
                        "src": "1972:52:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34629,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45328,
                                  "src": "2039:4:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanMaintenance_$36073",
                                    "typeString": "contract LoanMaintenance"
                                  }
                                },
                                "id": 34630,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawAccruedInterest",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 34938,
                                "src": "2039:28:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 34631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2039:37:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34632,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34601,
                              "src": "2078:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 34628,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2028:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 34633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2028:57:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34634,
                        "nodeType": "ExpressionStatement",
                        "src": "2028:57:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34636,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45328,
                                  "src": "2100:4:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanMaintenance_$36073",
                                    "typeString": "contract LoanMaintenance"
                                  }
                                },
                                "id": 34637,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "extendLoanDuration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 35235,
                                "src": "2100:23:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$_t_bytes32_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32,uint256,bool,bytes memory) payable external returns (uint256)"
                                }
                              },
                              "id": 34638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2100:32:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34639,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34601,
                              "src": "2134:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 34635,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2089:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 34640,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2089:52:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34641,
                        "nodeType": "ExpressionStatement",
                        "src": "2089:52:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34643,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45328,
                                  "src": "2156:4:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanMaintenance_$36073",
                                    "typeString": "contract LoanMaintenance"
                                  }
                                },
                                "id": 34644,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reduceLoanDuration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 35468,
                                "src": "2156:23:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32,address,uint256) external returns (uint256)"
                                }
                              },
                              "id": 34645,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2156:32:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34646,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34601,
                              "src": "2190:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 34642,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2145:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 34647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2145:52:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34648,
                        "nodeType": "ExpressionStatement",
                        "src": "2145:52:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34650,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45328,
                                  "src": "2212:4:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanMaintenance_$36073",
                                    "typeString": "contract LoanMaintenance"
                                  }
                                },
                                "id": 34651,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLenderInterestData",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 35546,
                                "src": "2212:26:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (address,address) view external returns (uint256,uint256,uint256,uint256,uint256,uint256)"
                                }
                              },
                              "id": 34652,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2212:35:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34653,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34601,
                              "src": "2249:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 34649,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2201:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 34654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2201:55:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34655,
                        "nodeType": "ExpressionStatement",
                        "src": "2201:55:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34657,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45328,
                                  "src": "2271:4:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanMaintenance_$36073",
                                    "typeString": "contract LoanMaintenance"
                                  }
                                },
                                "id": 34658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLoanInterestData",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 35620,
                                "src": "2271:24:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (bytes32) view external returns (address,uint256,uint256,uint256)"
                                }
                              },
                              "id": 34659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2271:33:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34660,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34601,
                              "src": "2306:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 34656,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2260:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 34661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2260:53:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34662,
                        "nodeType": "ExpressionStatement",
                        "src": "2260:53:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34664,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45328,
                                  "src": "2328:4:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanMaintenance_$36073",
                                    "typeString": "contract LoanMaintenance"
                                  }
                                },
                                "id": 34665,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getUserLoans",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 35738,
                                "src": "2328:17:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$_t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_ptr_$",
                                  "typeString": "function (address,uint256,uint256,uint256,bool,bool) view external returns (struct LoanMaintenance.LoanReturnData memory[] memory)"
                                }
                              },
                              "id": 34666,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2328:26:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34667,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34601,
                              "src": "2356:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 34663,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2317:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 34668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2317:46:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34669,
                        "nodeType": "ExpressionStatement",
                        "src": "2317:46:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34671,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45328,
                                  "src": "2378:4:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanMaintenance_$36073",
                                    "typeString": "contract LoanMaintenance"
                                  }
                                },
                                "id": 34672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLoan",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 35752,
                                "src": "2378:12:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_LoanReturnData_$34587_memory_ptr_$",
                                  "typeString": "function (bytes32) view external returns (struct LoanMaintenance.LoanReturnData memory)"
                                }
                              },
                              "id": 34673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2378:21:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34674,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34601,
                              "src": "2401:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 34670,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2367:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 34675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2367:41:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34676,
                        "nodeType": "ExpressionStatement",
                        "src": "2367:41:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34678,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45328,
                                  "src": "2423:4:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanMaintenance_$36073",
                                    "typeString": "contract LoanMaintenance"
                                  }
                                },
                                "id": 34679,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getActiveLoans",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 35851,
                                "src": "2423:19:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_ptr_$",
                                  "typeString": "function (uint256,uint256,bool) view external returns (struct LoanMaintenance.LoanReturnData memory[] memory)"
                                }
                              },
                              "id": 34680,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2423:28:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34681,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34601,
                              "src": "2453:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 34677,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2412:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 34682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2412:48:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34683,
                        "nodeType": "ExpressionStatement",
                        "src": "2412:48:129"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 34685,
                              "name": "prevModuleContractAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34607,
                              "src": "2500:25:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34686,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34601,
                              "src": "2527:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4c6f616e4d61696e74656e616e6365",
                              "id": 34687,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2535:17:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_541293f8fbc1a07d5b608698817ef1f159656ed9536bef6ad99d499b5233649d",
                                "typeString": "literal_string \"LoanMaintenance\""
                              },
                              "value": "LoanMaintenance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_541293f8fbc1a07d5b608698817ef1f159656ed9536bef6ad99d499b5233649d",
                                "typeString": "literal_string \"LoanMaintenance\""
                              }
                            ],
                            "id": 34684,
                            "name": "ProtocolModuleContractReplaced",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6054,
                            "src": "2469:30:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32)"
                            }
                          },
                          "id": 34688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2469:84:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34689,
                        "nodeType": "EmitStatement",
                        "src": "2464:89:129"
                      }
                    ]
                  },
                  "documentation": "@notice Set initial values of proxy targets.\n\t * @param target The address of the logic contract instance.\n",
                  "id": 34691,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 34604,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 34603,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1818:9:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1818:9:129"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 34602,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34601,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 34691,
                        "src": "1793:14:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 34600,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1793:7:129",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1792:16:129"
                  },
                  "returnParameters": {
                    "id": 34605,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1828:0:129"
                  },
                  "scope": 36073,
                  "src": "1773:784:129",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 34801,
                    "nodeType": "Block",
                    "src": "3034:827:129",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 34705,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 34703,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34695,
                                "src": "3046:13:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 34704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3063:1:129",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3046:18:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6465706f736974416d6f756e742069732030",
                              "id": 34706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3066:20:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9a91ad19b174bbe9181525a08267c347f4fa3691bcd2d8f85bda17daefb08370",
                                "typeString": "literal_string \"depositAmount is 0\""
                              },
                              "value": "depositAmount is 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9a91ad19b174bbe9181525a08267c347f4fa3691bcd2d8f85bda17daefb08370",
                                "typeString": "literal_string \"depositAmount is 0\""
                              }
                            ],
                            "id": 34702,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3038:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 34707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3038:49:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34708,
                        "nodeType": "ExpressionStatement",
                        "src": "3038:49:129"
                      },
                      {
                        "assignments": [
                          34710
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34710,
                            "name": "loanLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 34801,
                            "src": "3091:22:129",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                              "typeString": "struct LoanStruct.Loan"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 34709,
                              "name": "Loan",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4912,
                              "src": "3091:4:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34714,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 34711,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4587,
                            "src": "3116:5:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                            }
                          },
                          "id": 34713,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 34712,
                            "name": "loanId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34693,
                            "src": "3122:6:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3116:13:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage",
                            "typeString": "struct LoanStruct.Loan storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3091:38:129"
                      },
                      {
                        "assignments": [
                          34716
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34716,
                            "name": "loanParamsLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 34801,
                            "src": "3133:34:129",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 34715,
                              "name": "LoanParams",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4884,
                              "src": "3133:10:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34721,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 34717,
                            "name": "loanParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4591,
                            "src": "3170:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                            }
                          },
                          "id": 34720,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34718,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34710,
                              "src": "3181:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 34719,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanParamsId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4891,
                            "src": "3181:22:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3170:34:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                            "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3133:71:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34723,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34710,
                                "src": "3217:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 34724,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "active",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4895,
                              "src": "3217:16:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e20697320636c6f736564",
                              "id": 34725,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3235:16:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              },
                              "value": "loan is closed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              }
                            ],
                            "id": 34722,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3209:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 34726,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3209:43:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34727,
                        "nodeType": "ExpressionStatement",
                        "src": "3209:43:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 34739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 34732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34729,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "3264:3:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 34730,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3264:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 34731,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3277:1:129",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3264:14:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 34738,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34733,
                                    "name": "loanParamsLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34716,
                                    "src": "3282:15:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                    }
                                  },
                                  "id": 34734,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "collateralToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4877,
                                  "src": "3282:31:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 34736,
                                      "name": "wrbtcToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4737,
                                      "src": "3325:10:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                        "typeString": "contract IWrbtcERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                        "typeString": "contract IWrbtcERC20"
                                      }
                                    ],
                                    "id": 34735,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3317:7:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 34737,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3317:19:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3282:54:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3264:72:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "77726f6e672061737365742073656e74",
                              "id": 34740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3338:18:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_354d628e401807673843b915f493656462073f9d1972fae61b07cef60868d710",
                                "typeString": "literal_string \"wrong asset sent\""
                              },
                              "value": "wrong asset sent"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_354d628e401807673843b915f493656462073f9d1972fae61b07cef60868d710",
                                "typeString": "literal_string \"wrong asset sent\""
                              }
                            ],
                            "id": 34728,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3256:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 34741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3256:101:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34742,
                        "nodeType": "ExpressionStatement",
                        "src": "3256:101:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 34751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34743,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34710,
                              "src": "3362:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 34745,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "collateral",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4899,
                            "src": "3362:20:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 34749,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34695,
                                "src": "3410:13:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34746,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34710,
                                  "src": "3385:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                "id": 34747,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4899,
                                "src": "3385:20:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "3385:24:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 34750,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3385:39:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3362:62:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 34752,
                        "nodeType": "ExpressionStatement",
                        "src": "3362:62:129"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 34756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34753,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "3433:3:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 34754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3433:9:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 34755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3446:1:129",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3433:14:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 34781,
                          "nodeType": "Block",
                          "src": "3537:116:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 34770,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 34767,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44994,
                                        "src": "3550:3:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 34768,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "value",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "3550:9:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 34769,
                                      "name": "depositAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34695,
                                      "src": "3563:13:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3550:26:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6574686572206465706f736974206d69736d61746368",
                                    "id": 34771,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3578:24:129",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_f47d4a30ab48a6b36d3ebb1f73570b05fc1e34b62d593cf91c2e0a8d344a9575",
                                      "typeString": "literal_string \"ether deposit mismatch\""
                                    },
                                    "value": "ether deposit mismatch"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_f47d4a30ab48a6b36d3ebb1f73570b05fc1e34b62d593cf91c2e0a8d344a9575",
                                      "typeString": "literal_string \"ether deposit mismatch\""
                                    }
                                  ],
                                  "id": 34766,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "3542:7:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 34772,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3542:61:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 34773,
                              "nodeType": "ExpressionStatement",
                              "src": "3542:61:129"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34775,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "3626:3:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 34776,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3626:10:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34777,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "3638:3:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 34778,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "value",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3638:9:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 34774,
                                  "name": "vaultEtherDeposit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28015,
                                  "src": "3608:17:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 34779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3608:40:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 34780,
                              "nodeType": "ExpressionStatement",
                              "src": "3608:40:129"
                            }
                          ]
                        },
                        "id": 34782,
                        "nodeType": "IfStatement",
                        "src": "3429:224:129",
                        "trueBody": {
                          "id": 34765,
                          "nodeType": "Block",
                          "src": "3449:82:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34758,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34716,
                                      "src": "3467:15:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    "id": 34759,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4877,
                                    "src": "3467:31:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34760,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "3500:3:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 34761,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3500:10:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 34762,
                                    "name": "depositAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34695,
                                    "src": "3512:13:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 34757,
                                  "name": "vaultDeposit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28099,
                                  "src": "3454:12:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 34763,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3454:72:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 34764,
                              "nodeType": "ExpressionStatement",
                              "src": "3454:72:129"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          34784,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34784,
                            "name": "collateralToLoanRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 34801,
                            "src": "3658:28:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 34783,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3658:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 34794,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34789,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34716,
                                "src": "3726:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 34790,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "3726:31:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34791,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34716,
                                "src": "3759:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 34792,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "3759:25:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 34786,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "3704:10:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 34785,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "3692:11:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 34787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3692:23:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 34788,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queryRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8595,
                            "src": "3692:33:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256,uint256)"
                            }
                          },
                          "id": 34793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3692:93:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3657:128:129"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 34796,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34693,
                              "src": "3813:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34797,
                              "name": "depositAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34695,
                              "src": "3821:13:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34798,
                              "name": "collateralToLoanRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34784,
                              "src": "3836:20:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 34795,
                            "name": "DepositCollateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5927,
                            "src": "3795:17:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256,uint256)"
                            }
                          },
                          "id": 34799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3795:62:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34800,
                        "nodeType": "EmitStatement",
                        "src": "3790:67:129"
                      }
                    ]
                  },
                  "documentation": "@notice Increase the margin of a position by depositing additional collateral.\n\t * @param loanId A unique ID representing the loan.\n@param depositAmount The amount to be deposited in collateral tokens.\n\t * @return actualWithdrawAmount The amount withdrawn taking into account drawdowns.\n",
                  "id": 34802,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 34698,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 34697,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "3007:12:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3007:12:129"
                    },
                    {
                      "arguments": null,
                      "id": 34700,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 34699,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "3020:13:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3020:13:129"
                    }
                  ],
                  "name": "depositCollateral",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 34696,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34693,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 34802,
                        "src": "2905:14:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 34692,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2905:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34695,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 34802,
                        "src": "2923:21:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34694,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2923:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2901:88:129"
                  },
                  "returnParameters": {
                    "id": 34701,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3034:0:129"
                  },
                  "scope": 36073,
                  "src": "2875:986:129",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 34923,
                    "nodeType": "Block",
                    "src": "4404:990:129",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 34820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 34818,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34808,
                                "src": "4416:14:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 34819,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4434:1:129",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4416:19:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7769746864726177416d6f756e742069732030",
                              "id": 34821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4437:21:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0b3c36db023aaa74a507ea49f68c7b33dc5edf0b978279bff34b3bcc00039f0f",
                                "typeString": "literal_string \"withdrawAmount is 0\""
                              },
                              "value": "withdrawAmount is 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0b3c36db023aaa74a507ea49f68c7b33dc5edf0b978279bff34b3bcc00039f0f",
                                "typeString": "literal_string \"withdrawAmount is 0\""
                              }
                            ],
                            "id": 34817,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4408:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 34822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4408:51:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34823,
                        "nodeType": "ExpressionStatement",
                        "src": "4408:51:129"
                      },
                      {
                        "assignments": [
                          34825
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34825,
                            "name": "loanLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 34923,
                            "src": "4463:22:129",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                              "typeString": "struct LoanStruct.Loan"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 34824,
                              "name": "Loan",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4912,
                              "src": "4463:4:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34829,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 34826,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4587,
                            "src": "4488:5:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                            }
                          },
                          "id": 34828,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 34827,
                            "name": "loanId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34804,
                            "src": "4494:6:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4488:13:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage",
                            "typeString": "struct LoanStruct.Loan storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4463:38:129"
                      },
                      {
                        "assignments": [
                          34831
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34831,
                            "name": "loanParamsLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 34923,
                            "src": "4505:34:129",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 34830,
                              "name": "LoanParams",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4884,
                              "src": "4505:10:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34836,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 34832,
                            "name": "loanParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4591,
                            "src": "4542:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                            }
                          },
                          "id": 34835,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34833,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34825,
                              "src": "4553:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 34834,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanParamsId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4891,
                            "src": "4553:22:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4542:34:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                            "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4505:71:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34838,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34825,
                                "src": "4589:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 34839,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "active",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4895,
                              "src": "4589:16:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e20697320636c6f736564",
                              "id": 34840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4607:16:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              },
                              "value": "loan is closed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              }
                            ],
                            "id": 34837,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4581:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 34841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4581:43:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34842,
                        "nodeType": "ExpressionStatement",
                        "src": "4581:43:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 34856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 34848,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34844,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "4636:3:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 34845,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4636:10:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34846,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34825,
                                    "src": "4650:9:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 34847,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "borrower",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4909,
                                  "src": "4650:18:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4636:32:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 34849,
                                    "name": "delegatedManagers",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4609,
                                    "src": "4672:17:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                                      "typeString": "mapping(bytes32 => mapping(address => bool))"
                                    }
                                  },
                                  "id": 34852,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34850,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34825,
                                      "src": "4690:9:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 34851,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4889,
                                    "src": "4690:12:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4672:31:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 34855,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34853,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "4704:3:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 34854,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4704:10:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4672:43:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4636:79:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 34857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4717:14:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 34843,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4628:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 34858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4628:104:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34859,
                        "nodeType": "ExpressionStatement",
                        "src": "4628:104:129"
                      },
                      {
                        "assignments": [
                          34861
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34861,
                            "name": "maxDrawdown",
                            "nodeType": "VariableDeclaration",
                            "scope": 34923,
                            "src": "4737:19:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 34860,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4737:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34877,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34866,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34831,
                                "src": "4806:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 34867,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "4806:25:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34868,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34831,
                                "src": "4837:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 34869,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "4837:31:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34870,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34825,
                                "src": "4874:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 34871,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "principal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4897,
                              "src": "4874:19:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34872,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34825,
                                "src": "4899:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 34873,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4899,
                              "src": "4899:20:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34874,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34831,
                                "src": "4925:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 34875,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maintenanceMargin",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4881,
                              "src": "4925:33:129",
                              "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 34863,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "4774:10:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 34862,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "4762:11:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 34864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4762:23:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 34865,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getMaxDrawdown",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8654,
                            "src": "4762:38:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256) view external returns (uint256)"
                            }
                          },
                          "id": 34876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4762:201:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4737:226:129"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 34880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 34878,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34808,
                            "src": "4972:14:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 34879,
                            "name": "maxDrawdown",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34861,
                            "src": "4989:11:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4972:28:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 34890,
                          "nodeType": "Block",
                          "src": "5052:47:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 34888,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 34886,
                                  "name": "actualWithdrawAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34815,
                                  "src": "5057:20:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 34887,
                                  "name": "withdrawAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34808,
                                  "src": "5080:14:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5057:37:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34889,
                              "nodeType": "ExpressionStatement",
                              "src": "5057:37:129"
                            }
                          ]
                        },
                        "id": 34891,
                        "nodeType": "IfStatement",
                        "src": "4968:131:129",
                        "trueBody": {
                          "id": 34885,
                          "nodeType": "Block",
                          "src": "5002:44:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 34883,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 34881,
                                  "name": "actualWithdrawAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34815,
                                  "src": "5007:20:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 34882,
                                  "name": "maxDrawdown",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34861,
                                  "src": "5030:11:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5007:34:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34884,
                              "nodeType": "ExpressionStatement",
                              "src": "5007:34:129"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 34900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34892,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34825,
                              "src": "5103:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 34894,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "collateral",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4899,
                            "src": "5103:20:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 34898,
                                "name": "actualWithdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34815,
                                "src": "5151:20:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 34895,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34825,
                                  "src": "5126:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                "id": 34896,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4899,
                                "src": "5126:20:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34897,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "5126:24:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 34899,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5126:46:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5103:69:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 34901,
                        "nodeType": "ExpressionStatement",
                        "src": "5103:69:129"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 34907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34902,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34831,
                              "src": "5181:15:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            },
                            "id": 34903,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "collateralToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4877,
                            "src": "5181:31:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 34905,
                                "name": "wrbtcToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4737,
                                "src": "5224:10:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                  "typeString": "contract IWrbtcERC20"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                  "typeString": "contract IWrbtcERC20"
                                }
                              ],
                              "id": 34904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5216:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 34906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5216:19:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5181:54:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 34921,
                          "nodeType": "Block",
                          "src": "5303:88:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34915,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34831,
                                      "src": "5322:15:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    "id": 34916,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4877,
                                    "src": "5322:31:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 34917,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34806,
                                    "src": "5355:8:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 34918,
                                    "name": "actualWithdrawAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34815,
                                    "src": "5365:20:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 34914,
                                  "name": "vaultWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28128,
                                  "src": "5308:13:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 34919,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5308:78:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 34920,
                              "nodeType": "ExpressionStatement",
                              "src": "5308:78:129"
                            }
                          ]
                        },
                        "id": 34922,
                        "nodeType": "IfStatement",
                        "src": "5177:214:129",
                        "trueBody": {
                          "id": 34913,
                          "nodeType": "Block",
                          "src": "5237:60:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 34909,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34806,
                                    "src": "5261:8:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 34910,
                                    "name": "actualWithdrawAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34815,
                                    "src": "5271:20:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 34908,
                                  "name": "vaultEtherWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28067,
                                  "src": "5242:18:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 34911,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5242:50:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 34912,
                              "nodeType": "ExpressionStatement",
                              "src": "5242:50:129"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Withdraw from the collateral. This reduces the margin of a position.\n\t * @param loanId A unique ID representing the loan.\n@param receiver The account getting the withdrawal.\n@param withdrawAmount The amount to be withdrawn in collateral tokens.\n\t * @return actualWithdrawAmount The amount withdrawn taking into account drawdowns.\n",
                  "id": 34924,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 34811,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 34810,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "4338:12:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4338:12:129"
                    },
                    {
                      "arguments": null,
                      "id": 34813,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 34812,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "4351:13:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4351:13:129"
                    }
                  ],
                  "name": "withdrawCollateral",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 34809,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34804,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 34924,
                        "src": "4265:14:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 34803,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4265:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34806,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 34924,
                        "src": "4283:16:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 34805,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4283:7:129",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34808,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 34924,
                        "src": "4303:22:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34807,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4303:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4261:67:129"
                  },
                  "returnParameters": {
                    "id": 34816,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34815,
                        "name": "actualWithdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 34924,
                        "src": "4374:28:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34814,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4374:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4373:30:129"
                  },
                  "scope": 36073,
                  "src": "4234:1160:129",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 34937,
                    "nodeType": "Block",
                    "src": "5634:107:129",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34932,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "5697:3:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 34933,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5697:10:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 34934,
                              "name": "loanToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34926,
                              "src": "5724:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 34931,
                            "name": "_payInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27616,
                            "src": "5680:12:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 34935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5680:57:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34936,
                        "nodeType": "ExpressionStatement",
                        "src": "5680:57:129"
                      }
                    ]
                  },
                  "documentation": "@notice Withdraw accrued loan interest.\n\t * @dev Wrapper for _payInterest internal function.\n\t * @param loanToken The loan token address.\n",
                  "id": 34938,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 34929,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 34928,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "5620:13:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5620:13:129"
                    }
                  ],
                  "name": "withdrawAccruedInterest",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 34927,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34926,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 34938,
                        "src": "5592:17:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 34925,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5592:7:129",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5591:19:129"
                  },
                  "returnParameters": {
                    "id": 34930,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5634:0:129"
                  },
                  "scope": 36073,
                  "src": "5559:182:129",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 35234,
                    "nodeType": "Block",
                    "src": "6594:2717:129",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 34958,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 34956,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34942,
                                "src": "6606:13:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 34957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6623:1:129",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6606:18:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6465706f736974416d6f756e742069732030",
                              "id": 34959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6626:20:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9a91ad19b174bbe9181525a08267c347f4fa3691bcd2d8f85bda17daefb08370",
                                "typeString": "literal_string \"depositAmount is 0\""
                              },
                              "value": "depositAmount is 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9a91ad19b174bbe9181525a08267c347f4fa3691bcd2d8f85bda17daefb08370",
                                "typeString": "literal_string \"depositAmount is 0\""
                              }
                            ],
                            "id": 34955,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6598:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 34960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6598:49:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34961,
                        "nodeType": "ExpressionStatement",
                        "src": "6598:49:129"
                      },
                      {
                        "assignments": [
                          34963
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34963,
                            "name": "loanLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 35234,
                            "src": "6651:22:129",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                              "typeString": "struct LoanStruct.Loan"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 34962,
                              "name": "Loan",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4912,
                              "src": "6651:4:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34967,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 34964,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4587,
                            "src": "6676:5:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                            }
                          },
                          "id": 34966,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 34965,
                            "name": "loanId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34940,
                            "src": "6682:6:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6676:13:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage",
                            "typeString": "struct LoanStruct.Loan storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6651:38:129"
                      },
                      {
                        "assignments": [
                          34969
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 34969,
                            "name": "loanParamsLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 35234,
                            "src": "6693:34:129",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 34968,
                              "name": "LoanParams",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4884,
                              "src": "6693:10:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34974,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 34970,
                            "name": "loanParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4591,
                            "src": "6730:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                            }
                          },
                          "id": 34973,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 34971,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34963,
                              "src": "6741:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 34972,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanParamsId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4891,
                            "src": "6741:22:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6730:34:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                            "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6693:71:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 34976,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34963,
                                "src": "6777:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 34977,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "active",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4895,
                              "src": "6777:16:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e20697320636c6f736564",
                              "id": 34978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6795:16:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              },
                              "value": "loan is closed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              }
                            ],
                            "id": 34975,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6769:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 34979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6769:43:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34980,
                        "nodeType": "ExpressionStatement",
                        "src": "6769:43:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 34997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 34989,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 34983,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "!",
                                  "prefix": true,
                                  "src": "6824:14:129",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 34982,
                                    "name": "useCollateral",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34944,
                                    "src": "6825:13:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 34988,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34984,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "6842:3:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 34985,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6842:10:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34986,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34963,
                                      "src": "6856:9:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 34987,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "borrower",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4909,
                                    "src": "6856:18:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "6842:32:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6824:50:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 34990,
                                    "name": "delegatedManagers",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4609,
                                    "src": "6878:17:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                                      "typeString": "mapping(bytes32 => mapping(address => bool))"
                                    }
                                  },
                                  "id": 34993,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 34991,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34963,
                                      "src": "6896:9:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 34992,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4889,
                                    "src": "6896:12:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6878:31:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 34996,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 34994,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "6910:3:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 34995,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6910:10:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6878:43:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "6824:97:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 34998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6923:14:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 34981,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6816:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 34999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6816:122:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35000,
                        "nodeType": "ExpressionStatement",
                        "src": "6816:122:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 35005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35002,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34969,
                                  "src": "6950:15:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                  }
                                },
                                "id": 35003,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maxLoanTerm",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4883,
                                "src": "6950:27:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 35004,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6981:1:129",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6950:32:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e646566696e6974652d7465726d206f6e6c79",
                              "id": 35006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6984:22:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_25c217e2bb8ee3c8c091695b140e24554acf6295971006caeb3f11c52345b35e",
                                "typeString": "literal_string \"indefinite-term only\""
                              },
                              "value": "indefinite-term only"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_25c217e2bb8ee3c8c091695b140e24554acf6295971006caeb3f11c52345b35e",
                                "typeString": "literal_string \"indefinite-term only\""
                              }
                            ],
                            "id": 35001,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6942:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 35007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6942:65:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35008,
                        "nodeType": "ExpressionStatement",
                        "src": "6942:65:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 35024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 35013,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35010,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "7019:3:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 35011,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7019:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 35012,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7032:1:129",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7019:14:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 35022,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 35015,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "!",
                                      "prefix": true,
                                      "src": "7038:14:129",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 35014,
                                        "name": "useCollateral",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34944,
                                        "src": "7039:13:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 35021,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 35016,
                                          "name": "loanParamsLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 34969,
                                          "src": "7056:15:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                            "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                          }
                                        },
                                        "id": 35017,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "loanToken",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4875,
                                        "src": "7056:25:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 35019,
                                            "name": "wrbtcToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4737,
                                            "src": "7093:10:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                              "typeString": "contract IWrbtcERC20"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                              "typeString": "contract IWrbtcERC20"
                                            }
                                          ],
                                          "id": 35018,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "7085:7:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 35020,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7085:19:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "7056:48:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "7038:66:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 35023,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "7037:68:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7019:86:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "77726f6e672061737365742073656e74",
                              "id": 35025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7107:18:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_354d628e401807673843b915f493656462073f9d1972fae61b07cef60868d710",
                                "typeString": "literal_string \"wrong asset sent\""
                              },
                              "value": "wrong asset sent"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_354d628e401807673843b915f493656462073f9d1972fae61b07cef60868d710",
                                "typeString": "literal_string \"wrong asset sent\""
                              }
                            ],
                            "id": 35009,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7011:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 35026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7011:115:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35027,
                        "nodeType": "ExpressionStatement",
                        "src": "7011:115:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35029,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34963,
                                "src": "7186:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 35030,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4911,
                              "src": "7186:16:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35031,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34969,
                                "src": "7204:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 35032,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "7204:25:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 35028,
                            "name": "_payInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27616,
                            "src": "7173:12:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 35033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7173:57:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35034,
                        "nodeType": "ExpressionStatement",
                        "src": "7173:57:129"
                      },
                      {
                        "assignments": [
                          35036
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35036,
                            "name": "loanInterestLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 35234,
                            "src": "7235:38:129",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                              "typeString": "struct LoanInterestStruct.LoanInterest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 35035,
                              "name": "LoanInterest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4864,
                              "src": "7235:12:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35041,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 35037,
                            "name": "loanInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4619,
                            "src": "7276:12:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanInterest_$4864_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanInterestStruct.LoanInterest storage ref)"
                            }
                          },
                          "id": 35040,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35038,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34963,
                              "src": "7289:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 35039,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4889,
                            "src": "7289:12:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7276:26:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanInterest_$4864_storage",
                            "typeString": "struct LoanInterestStruct.LoanInterest storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7235:67:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 35043,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35036,
                              "src": "7346:17:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35044,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34963,
                                "src": "7368:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 35045,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4889,
                              "src": "7368:12:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35046,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34969,
                                "src": "7385:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 35047,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "7385:25:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35048,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34969,
                                "src": "7429:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 35049,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "7429:31:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35050,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34963,
                                "src": "7555:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 35051,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "borrower",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4909,
                              "src": "7555:18:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35052,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "7578:5:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 35053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7578:15:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 35042,
                            "name": "_settleFeeRewardForInterestExpense",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27366,
                            "src": "7307:34:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanInterest_$4864_storage_ptr_$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (struct LoanInterestStruct.LoanInterest storage pointer,bytes32,address,address,address,uint256)"
                            }
                          },
                          "id": 35054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7307:290:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35055,
                        "nodeType": "ExpressionStatement",
                        "src": "7307:290:129"
                      },
                      {
                        "assignments": [
                          35057
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35057,
                            "name": "backInterestOwed",
                            "nodeType": "VariableDeclaration",
                            "scope": 35234,
                            "src": "7720:24:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35056,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7720:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35058,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7720:24:129"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 35063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35059,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44984,
                              "src": "7752:5:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 35060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7752:15:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35061,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34963,
                              "src": "7770:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 35062,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "endTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4903,
                            "src": "7770:22:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7752:40:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 35096,
                        "nodeType": "IfStatement",
                        "src": "7748:328:129",
                        "trueBody": {
                          "id": 35095,
                          "nodeType": "Block",
                          "src": "7794:282:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 35071,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 35064,
                                  "name": "backInterestOwed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35057,
                                  "src": "7799:16:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 35068,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34963,
                                        "src": "7838:9:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 35069,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "endTimestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4903,
                                      "src": "7838:22:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 35065,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44984,
                                        "src": "7818:5:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 35066,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "7818:15:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 35067,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "7818:19:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 35070,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7818:43:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7799:62:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35072,
                              "nodeType": "ExpressionStatement",
                              "src": "7799:62:129"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 35079,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 35073,
                                  "name": "backInterestOwed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35057,
                                  "src": "7866:16:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 35076,
                                        "name": "loanInterestLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 35036,
                                        "src": "7906:17:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                          "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                        }
                                      },
                                      "id": 35077,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "owedPerDay",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4859,
                                      "src": "7906:28:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 35074,
                                      "name": "backInterestOwed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35057,
                                      "src": "7885:16:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 35075,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42153,
                                    "src": "7885:20:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 35078,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7885:50:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7866:69:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35080,
                              "nodeType": "ExpressionStatement",
                              "src": "7866:69:129"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 35086,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 35081,
                                  "name": "backInterestOwed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35057,
                                  "src": "7940:16:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "3836343030",
                                      "id": 35084,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7980:5:129",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_86400_by_1",
                                        "typeString": "int_const 86400"
                                      },
                                      "value": "86400"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_86400_by_1",
                                        "typeString": "int_const 86400"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 35082,
                                      "name": "backInterestOwed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35057,
                                      "src": "7959:16:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 35083,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "7959:20:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 35085,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7959:27:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7940:46:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35087,
                              "nodeType": "ExpressionStatement",
                              "src": "7940:46:129"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 35091,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 35089,
                                      "name": "depositAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34942,
                                      "src": "8000:13:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 35090,
                                      "name": "backInterestOwed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35057,
                                      "src": "8016:16:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8000:32:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6465706f7369742063616e6e6f7420636f766572206261636b20696e746572657374",
                                    "id": 35092,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8034:36:129",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_29addebeb6be261e671438f40df5786b631bd59ea0ad2aa1fb162924538075a0",
                                      "typeString": "literal_string \"deposit cannot cover back interest\""
                                    },
                                    "value": "deposit cannot cover back interest"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_29addebeb6be261e671438f40df5786b631bd59ea0ad2aa1fb162924538075a0",
                                      "typeString": "literal_string \"deposit cannot cover back interest\""
                                    }
                                  ],
                                  "id": 35088,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "7992:7:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 35093,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7992:79:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 35094,
                              "nodeType": "ExpressionStatement",
                              "src": "7992:79:129"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 35097,
                          "name": "useCollateral",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34944,
                          "src": "8108:13:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 35135,
                          "nodeType": "Block",
                          "src": "8199:232:129",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 35108,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35105,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "8208:3:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 35106,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8208:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 35107,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8221:1:129",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8208:14:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 35133,
                                "nodeType": "Block",
                                "src": "8308:119:129",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 35122,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 35119,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44994,
                                              "src": "8322:3:129",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 35120,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "value",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8322:9:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 35121,
                                            "name": "depositAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 34942,
                                            "src": "8335:13:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "8322:26:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "6574686572206465706f736974206d69736d61746368",
                                          "id": 35123,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8350:24:129",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_f47d4a30ab48a6b36d3ebb1f73570b05fc1e34b62d593cf91c2e0a8d344a9575",
                                            "typeString": "literal_string \"ether deposit mismatch\""
                                          },
                                          "value": "ether deposit mismatch"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_f47d4a30ab48a6b36d3ebb1f73570b05fc1e34b62d593cf91c2e0a8d344a9575",
                                            "typeString": "literal_string \"ether deposit mismatch\""
                                          }
                                        ],
                                        "id": 35118,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          44997,
                                          44998
                                        ],
                                        "referencedDeclaration": 44998,
                                        "src": "8314:7:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 35124,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8314:61:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 35125,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8314:61:129"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 35127,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44994,
                                            "src": "8399:3:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 35128,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "8399:10:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 35129,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44994,
                                            "src": "8411:3:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 35130,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "value",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "8411:9:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 35126,
                                        "name": "vaultEtherDeposit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28015,
                                        "src": "8381:17:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256)"
                                        }
                                      },
                                      "id": 35131,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8381:40:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 35132,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8381:40:129"
                                  }
                                ]
                              },
                              "id": 35134,
                              "nodeType": "IfStatement",
                              "src": "8204:223:129",
                              "trueBody": {
                                "id": 35117,
                                "nodeType": "Block",
                                "src": "8224:78:129",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 35110,
                                            "name": "loanParamsLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 34969,
                                            "src": "8243:15:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                              "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                            }
                                          },
                                          "id": 35111,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "loanToken",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4875,
                                          "src": "8243:25:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 35112,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 44994,
                                            "src": "8270:3:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 35113,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "8270:10:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 35114,
                                          "name": "depositAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 34942,
                                          "src": "8282:13:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 35109,
                                        "name": "vaultDeposit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 28099,
                                        "src": "8230:12:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256)"
                                        }
                                      },
                                      "id": 35115,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8230:66:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 35116,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8230:66:129"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 35136,
                        "nodeType": "IfStatement",
                        "src": "8104:327:129",
                        "trueBody": {
                          "id": 35104,
                          "nodeType": "Block",
                          "src": "8123:70:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 35099,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34963,
                                    "src": "8146:9:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 35100,
                                    "name": "loanParamsLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34969,
                                    "src": "8157:15:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 35101,
                                    "name": "depositAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34942,
                                    "src": "8174:13:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 35098,
                                  "name": "_doCollateralSwap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36072,
                                  "src": "8128:17:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Loan_$4912_storage_ptr_$_t_struct$_LoanParams_$4884_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (struct LoanStruct.Loan storage pointer,struct LoanParamsStruct.LoanParams memory,uint256)"
                                  }
                                },
                                "id": 35102,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8128:60:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 35103,
                              "nodeType": "ExpressionStatement",
                              "src": "8128:60:129"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 35139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 35137,
                            "name": "backInterestOwed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35057,
                            "src": "8439:16:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 35138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8459:1:129",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8439:21:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 35156,
                        "nodeType": "IfStatement",
                        "src": "8435:209:129",
                        "trueBody": {
                          "id": 35155,
                          "nodeType": "Block",
                          "src": "8462:182:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 35145,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 35140,
                                  "name": "depositAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34942,
                                  "src": "8467:13:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 35143,
                                      "name": "backInterestOwed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35057,
                                      "src": "8501:16:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 35141,
                                      "name": "depositAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34942,
                                      "src": "8483:13:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 35142,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "8483:17:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 35144,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8483:35:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8467:51:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35146,
                              "nodeType": "ExpressionStatement",
                              "src": "8467:51:129"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 35148,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34963,
                                      "src": "8577:9:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 35149,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4911,
                                    "src": "8577:16:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 35150,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34969,
                                      "src": "8595:15:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    "id": 35151,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "8595:25:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 35152,
                                    "name": "backInterestOwed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35057,
                                    "src": "8622:16:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 35147,
                                  "name": "_payInterestTransfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27662,
                                  "src": "8556:20:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 35153,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8556:83:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 35154,
                              "nodeType": "ExpressionStatement",
                              "src": "8556:83:129"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 35157,
                            "name": "secondsExtended",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34953,
                            "src": "8648:15:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35163,
                                  "name": "loanInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35036,
                                  "src": "8695:17:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                    "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                  }
                                },
                                "id": 35164,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owedPerDay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4859,
                                "src": "8695:28:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "3836343030",
                                    "id": 35160,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8684:5:129",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_86400_by_1",
                                      "typeString": "int_const 86400"
                                    },
                                    "value": "86400"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_86400_by_1",
                                      "typeString": "int_const 86400"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35158,
                                    "name": "depositAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34942,
                                    "src": "8666:13:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 35159,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "8666:17:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 35161,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8666:24:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35162,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "8666:28:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 35165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8666:58:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8648:76:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 35167,
                        "nodeType": "ExpressionStatement",
                        "src": "8648:76:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35168,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34963,
                              "src": "8729:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 35170,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "endTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4903,
                            "src": "8729:22:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 35174,
                                "name": "secondsExtended",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34953,
                                "src": "8781:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35171,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34963,
                                  "src": "8754:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                "id": 35172,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "endTimestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4903,
                                "src": "8754:22:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "8754:26:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 35175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8754:43:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8729:68:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 35177,
                        "nodeType": "ExpressionStatement",
                        "src": "8729:68:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 35183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35179,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34963,
                                  "src": "8810:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                "id": 35180,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "endTimestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4903,
                                "src": "8810:22:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35181,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "8835:5:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 35182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8835:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8810:40:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e20746f6f2073686f7274",
                              "id": 35184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8852:16:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_395c74adc21b86a9ea2dad18b7b2dc7aff2ebb23c1ff81fb83cac5084bdd448a",
                                "typeString": "literal_string \"loan too short\""
                              },
                              "value": "loan too short"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_395c74adc21b86a9ea2dad18b7b2dc7aff2ebb23c1ff81fb83cac5084bdd448a",
                                "typeString": "literal_string \"loan too short\""
                              }
                            ],
                            "id": 35178,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8802:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 35185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8802:67:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35186,
                        "nodeType": "ExpressionStatement",
                        "src": "8802:67:129"
                      },
                      {
                        "assignments": [
                          35188
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35188,
                            "name": "maxDuration",
                            "nodeType": "VariableDeclaration",
                            "scope": 35234,
                            "src": "8874:19:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35187,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8874:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35195,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35192,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "8923:5:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 35193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8923:15:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35189,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34963,
                                "src": "8896:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 35190,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "endTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4903,
                              "src": "8896:22:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 35191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "8896:26:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 35194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8896:43:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8874:65:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 35199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 35197,
                                "name": "maxDuration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35188,
                                "src": "9010:11:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "33363030",
                                "id": 35198,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9024:4:129",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3600_by_1",
                                  "typeString": "int_const 3600"
                                },
                                "value": "3600"
                              },
                              "src": "9010:18:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e20746f6f2073686f7274",
                              "id": 35200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9030:16:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_395c74adc21b86a9ea2dad18b7b2dc7aff2ebb23c1ff81fb83cac5084bdd448a",
                                "typeString": "literal_string \"loan too short\""
                              },
                              "value": "loan too short"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_395c74adc21b86a9ea2dad18b7b2dc7aff2ebb23c1ff81fb83cac5084bdd448a",
                                "typeString": "literal_string \"loan too short\""
                              }
                            ],
                            "id": 35196,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9002:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 35201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9002:45:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35202,
                        "nodeType": "ExpressionStatement",
                        "src": "9002:45:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35203,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35036,
                              "src": "9052:17:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            "id": 35205,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "depositTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4861,
                            "src": "9052:30:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 35209,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34942,
                                "src": "9120:13:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35206,
                                  "name": "loanInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35036,
                                  "src": "9085:17:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                    "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                  }
                                },
                                "id": 35207,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "depositTotal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4861,
                                "src": "9085:30:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "9085:34:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 35210,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9085:49:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9052:82:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 35212,
                        "nodeType": "ExpressionStatement",
                        "src": "9052:82:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 35213,
                                  "name": "lenderInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4615,
                                  "src": "9139:14:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$_$",
                                    "typeString": "mapping(address => mapping(address => struct LenderInterestStruct.LenderInterest storage ref))"
                                  }
                                },
                                "id": 35218,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35214,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34963,
                                    "src": "9154:9:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 35215,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4911,
                                  "src": "9154:16:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9139:32:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$",
                                  "typeString": "mapping(address => struct LenderInterestStruct.LenderInterest storage ref)"
                                }
                              },
                              "id": 35219,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35216,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34969,
                                  "src": "9172:15:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                  }
                                },
                                "id": 35217,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "loanToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4875,
                                "src": "9172:25:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9139:59:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage",
                                "typeString": "struct LenderInterestStruct.LenderInterest storage ref"
                              }
                            },
                            "id": 35220,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owedTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4849,
                            "src": "9139:69:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 35230,
                                "name": "depositAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34942,
                                "src": "9293:13:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 35221,
                                      "name": "lenderInterest",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4615,
                                      "src": "9211:14:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$_$",
                                        "typeString": "mapping(address => mapping(address => struct LenderInterestStruct.LenderInterest storage ref))"
                                      }
                                    },
                                    "id": 35224,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 35222,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 34963,
                                        "src": "9226:9:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 35223,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4911,
                                      "src": "9226:16:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9211:32:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$",
                                      "typeString": "mapping(address => struct LenderInterestStruct.LenderInterest storage ref)"
                                    }
                                  },
                                  "id": 35227,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 35225,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34969,
                                      "src": "9244:15:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    "id": 35226,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "9244:25:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9211:59:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LenderInterest_$4854_storage",
                                    "typeString": "struct LenderInterestStruct.LenderInterest storage ref"
                                  }
                                },
                                "id": 35228,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owedTotal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4849,
                                "src": "9211:73:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35229,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "9211:81:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 35231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9211:96:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9139:168:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 35233,
                        "nodeType": "ExpressionStatement",
                        "src": "9139:168:129"
                      }
                    ]
                  },
                  "documentation": "@notice Extend the loan duration by as much time as depositAmount can buy.\n\t * @param loanId A unique ID representing the loan.\n@param depositAmount The amount to be deposited in loan tokens. Used to pay the interest for the new duration.\n@param useCollateral Whether pay interests w/ the collateral. If true, depositAmount of loan tokens\n\t\t\t\t\twill be purchased with the collateral.\n// param calldata The payload for the call. These loan DataBytes are additional loan data (not in use for token swaps).\n\t * @return secondsExtended The amount of time in seconds the loan is extended.\n",
                  "id": 35235,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 34949,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 34948,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "6533:12:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6533:12:129"
                    },
                    {
                      "arguments": null,
                      "id": 34951,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 34950,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "6546:13:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6546:13:129"
                    }
                  ],
                  "name": "extendLoanDuration",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 34947,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34940,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 35235,
                        "src": "6398:14:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 34939,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6398:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34942,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 35235,
                        "src": "6416:21:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34941,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6416:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34944,
                        "name": "useCollateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 35235,
                        "src": "6441:18:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 34943,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6441:4:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 34946,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 35235,
                        "src": "6463:14:129",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 34945,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6463:5:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6394:121:129"
                  },
                  "returnParameters": {
                    "id": 34954,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34953,
                        "name": "secondsExtended",
                        "nodeType": "VariableDeclaration",
                        "scope": 35235,
                        "src": "6569:23:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34952,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6569:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6568:25:129"
                  },
                  "scope": 36073,
                  "src": "6367:2944:129",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 35467,
                    "nodeType": "Block",
                    "src": "9835:2113:129",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 35253,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 35251,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35241,
                                "src": "9847:14:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 35252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9865:1:129",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "9847:19:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7769746864726177416d6f756e742069732030",
                              "id": 35254,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9868:21:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0b3c36db023aaa74a507ea49f68c7b33dc5edf0b978279bff34b3bcc00039f0f",
                                "typeString": "literal_string \"withdrawAmount is 0\""
                              },
                              "value": "withdrawAmount is 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0b3c36db023aaa74a507ea49f68c7b33dc5edf0b978279bff34b3bcc00039f0f",
                                "typeString": "literal_string \"withdrawAmount is 0\""
                              }
                            ],
                            "id": 35250,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9839:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 35255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9839:51:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35256,
                        "nodeType": "ExpressionStatement",
                        "src": "9839:51:129"
                      },
                      {
                        "assignments": [
                          35258
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35258,
                            "name": "loanLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 35467,
                            "src": "9894:22:129",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                              "typeString": "struct LoanStruct.Loan"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 35257,
                              "name": "Loan",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4912,
                              "src": "9894:4:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35262,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 35259,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4587,
                            "src": "9919:5:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                            }
                          },
                          "id": 35261,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 35260,
                            "name": "loanId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35237,
                            "src": "9925:6:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9919:13:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage",
                            "typeString": "struct LoanStruct.Loan storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9894:38:129"
                      },
                      {
                        "assignments": [
                          35264
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35264,
                            "name": "loanParamsLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 35467,
                            "src": "9936:34:129",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 35263,
                              "name": "LoanParams",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4884,
                              "src": "9936:10:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35269,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 35265,
                            "name": "loanParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4591,
                            "src": "9973:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                            }
                          },
                          "id": 35268,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35266,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35258,
                              "src": "9984:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 35267,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanParamsId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4891,
                            "src": "9984:22:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9973:34:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                            "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9936:71:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35271,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35258,
                                "src": "10020:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 35272,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "active",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4895,
                              "src": "10020:16:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e20697320636c6f736564",
                              "id": 35273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10038:16:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              },
                              "value": "loan is closed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c922758e1c0a8c8b1fe034ba8b8d4483e972b9421c2d0d7fa91e2d57f8a04148",
                                "typeString": "literal_string \"loan is closed\""
                              }
                            ],
                            "id": 35270,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10012:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 35274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10012:43:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35275,
                        "nodeType": "ExpressionStatement",
                        "src": "10012:43:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 35289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 35281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35277,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "10067:3:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 35278,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "10067:10:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35279,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35258,
                                    "src": "10081:9:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 35280,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "borrower",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4909,
                                  "src": "10081:18:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "10067:32:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 35282,
                                    "name": "delegatedManagers",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4609,
                                    "src": "10103:17:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                                      "typeString": "mapping(bytes32 => mapping(address => bool))"
                                    }
                                  },
                                  "id": 35285,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 35283,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35258,
                                      "src": "10121:9:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                        "typeString": "struct LoanStruct.Loan storage pointer"
                                      }
                                    },
                                    "id": 35284,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4889,
                                    "src": "10121:12:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10103:31:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 35288,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35286,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "10135:3:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 35287,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "10135:10:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10103:43:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "10067:79:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 35290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10148:14:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 35276,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10059:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 35291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10059:104:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35292,
                        "nodeType": "ExpressionStatement",
                        "src": "10059:104:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 35297,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35294,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35264,
                                  "src": "10175:15:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                  }
                                },
                                "id": 35295,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maxLoanTerm",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4883,
                                "src": "10175:27:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 35296,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10206:1:129",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "10175:32:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e646566696e6974652d7465726d206f6e6c79",
                              "id": 35298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10209:22:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_25c217e2bb8ee3c8c091695b140e24554acf6295971006caeb3f11c52345b35e",
                                "typeString": "literal_string \"indefinite-term only\""
                              },
                              "value": "indefinite-term only"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_25c217e2bb8ee3c8c091695b140e24554acf6295971006caeb3f11c52345b35e",
                                "typeString": "literal_string \"indefinite-term only\""
                              }
                            ],
                            "id": 35293,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10167:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 35299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10167:65:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35300,
                        "nodeType": "ExpressionStatement",
                        "src": "10167:65:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 35306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35302,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35258,
                                  "src": "10244:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                "id": 35303,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "endTimestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4903,
                                "src": "10244:22:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35304,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "10269:5:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 35305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10269:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10244:40:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e207465726d2068617320656e646564",
                              "id": 35307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10286:21:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e3426dd43041c5c6f4ebcf7094dc9b9ebf21fe43122fcb5007181b6eed53ecf9",
                                "typeString": "literal_string \"loan term has ended\""
                              },
                              "value": "loan term has ended"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e3426dd43041c5c6f4ebcf7094dc9b9ebf21fe43122fcb5007181b6eed53ecf9",
                                "typeString": "literal_string \"loan term has ended\""
                              }
                            ],
                            "id": 35301,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10236:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 35308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10236:72:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35309,
                        "nodeType": "ExpressionStatement",
                        "src": "10236:72:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35311,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35258,
                                "src": "10368:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 35312,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4911,
                              "src": "10368:16:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35313,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35264,
                                "src": "10386:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 35314,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "10386:25:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 35310,
                            "name": "_payInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27616,
                            "src": "10355:12:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 35315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10355:57:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35316,
                        "nodeType": "ExpressionStatement",
                        "src": "10355:57:129"
                      },
                      {
                        "assignments": [
                          35318
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35318,
                            "name": "loanInterestLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 35467,
                            "src": "10417:38:129",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                              "typeString": "struct LoanInterestStruct.LoanInterest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 35317,
                              "name": "LoanInterest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4864,
                              "src": "10417:12:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35323,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 35319,
                            "name": "loanInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4619,
                            "src": "10458:12:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanInterest_$4864_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanInterestStruct.LoanInterest storage ref)"
                            }
                          },
                          "id": 35322,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35320,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35258,
                              "src": "10471:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 35321,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4889,
                            "src": "10471:12:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10458:26:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanInterest_$4864_storage",
                            "typeString": "struct LoanInterestStruct.LoanInterest storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10417:67:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 35325,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35318,
                              "src": "10528:17:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35326,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35258,
                                "src": "10550:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 35327,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4889,
                              "src": "10550:12:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35328,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35264,
                                "src": "10567:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 35329,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "10567:25:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35330,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35264,
                                "src": "10611:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                }
                              },
                              "id": 35331,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "10611:31:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35332,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35258,
                                "src": "10737:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 35333,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "borrower",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4909,
                              "src": "10737:18:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35334,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "10760:5:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 35335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10760:15:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 35324,
                            "name": "_settleFeeRewardForInterestExpense",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27366,
                            "src": "10489:34:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanInterest_$4864_storage_ptr_$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (struct LoanInterestStruct.LoanInterest storage pointer,bytes32,address,address,address,uint256)"
                            }
                          },
                          "id": 35336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10489:290:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35337,
                        "nodeType": "ExpressionStatement",
                        "src": "10489:290:129"
                      },
                      {
                        "assignments": [
                          35339
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35339,
                            "name": "interestDepositRemaining",
                            "nodeType": "VariableDeclaration",
                            "scope": 35467,
                            "src": "10784:32:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35338,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10784:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35353,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3836343030",
                              "id": 35351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10901:5:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              },
                              "value": "86400"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35347,
                                    "name": "loanInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35318,
                                    "src": "10867:17:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                      "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                    }
                                  },
                                  "id": 35348,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "owedPerDay",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4859,
                                  "src": "10867:28:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 35343,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44984,
                                        "src": "10846:5:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 35344,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "10846:15:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 35340,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 35258,
                                        "src": "10819:9:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 35341,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "endTimestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4903,
                                      "src": "10819:22:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 35342,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "10819:26:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 35345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10819:43:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 35346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "10819:47:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 35349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10819:77:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 35350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "10819:81:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 35352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10819:88:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10784:123:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 35357,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 35355,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35241,
                                "src": "10919:14:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 35356,
                                "name": "interestDepositRemaining",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35339,
                                "src": "10936:24:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10919:41:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "776974686472617720616d6f756e7420746f6f2068696768",
                              "id": 35358,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10962:26:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c1d32d33a6fb47470640bdc7e7e1bdeeb66646614feaeba6dd0f277beed4476",
                                "typeString": "literal_string \"withdraw amount too high\""
                              },
                              "value": "withdraw amount too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c1d32d33a6fb47470640bdc7e7e1bdeeb66646614feaeba6dd0f277beed4476",
                                "typeString": "literal_string \"withdraw amount too high\""
                              }
                            ],
                            "id": 35354,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10911:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 35359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10911:78:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35360,
                        "nodeType": "ExpressionStatement",
                        "src": "10911:78:129"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 35366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35361,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35264,
                              "src": "11023:15:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                              }
                            },
                            "id": 35362,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4875,
                            "src": "11023:25:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 35364,
                                "name": "wrbtcToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4737,
                                "src": "11060:10:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                  "typeString": "contract IWrbtcERC20"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                  "typeString": "contract IWrbtcERC20"
                                }
                              ],
                              "id": 35363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11052:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 35365,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11052:19:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11023:48:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 35380,
                          "nodeType": "Block",
                          "src": "11133:76:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 35374,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35264,
                                      "src": "11152:15:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    "id": 35375,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "11152:25:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 35376,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35239,
                                    "src": "11179:8:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 35377,
                                    "name": "withdrawAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35241,
                                    "src": "11189:14:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 35373,
                                  "name": "vaultWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28128,
                                  "src": "11138:13:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 35378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11138:66:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 35379,
                              "nodeType": "ExpressionStatement",
                              "src": "11138:66:129"
                            }
                          ]
                        },
                        "id": 35381,
                        "nodeType": "IfStatement",
                        "src": "11019:190:129",
                        "trueBody": {
                          "id": 35372,
                          "nodeType": "Block",
                          "src": "11073:54:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 35368,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35239,
                                    "src": "11097:8:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 35369,
                                    "name": "withdrawAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35241,
                                    "src": "11107:14:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 35367,
                                  "name": "vaultEtherWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28067,
                                  "src": "11078:18:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 35370,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11078:44:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 35371,
                              "nodeType": "ExpressionStatement",
                              "src": "11078:44:129"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 35382,
                            "name": "secondsReduced",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35248,
                            "src": "11213:14:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35388,
                                  "name": "loanInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35318,
                                  "src": "11260:17:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                    "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                  }
                                },
                                "id": 35389,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owedPerDay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4859,
                                "src": "11260:28:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "3836343030",
                                    "id": 35385,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11249:5:129",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_86400_by_1",
                                      "typeString": "int_const 86400"
                                    },
                                    "value": "86400"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_86400_by_1",
                                      "typeString": "int_const 86400"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35383,
                                    "name": "withdrawAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35241,
                                    "src": "11230:14:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 35384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "11230:18:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 35386,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11230:25:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "11230:29:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 35390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11230:59:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11213:76:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 35392,
                        "nodeType": "ExpressionStatement",
                        "src": "11213:76:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 35397,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35394,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35258,
                                  "src": "11302:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                "id": 35395,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "endTimestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4903,
                                "src": "11302:22:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 35396,
                                "name": "secondsReduced",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35248,
                                "src": "11327:14:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11302:39:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e20746f6f2073686f7274",
                              "id": 35398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11343:16:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_395c74adc21b86a9ea2dad18b7b2dc7aff2ebb23c1ff81fb83cac5084bdd448a",
                                "typeString": "literal_string \"loan too short\""
                              },
                              "value": "loan too short"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_395c74adc21b86a9ea2dad18b7b2dc7aff2ebb23c1ff81fb83cac5084bdd448a",
                                "typeString": "literal_string \"loan too short\""
                              }
                            ],
                            "id": 35393,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11294:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 35399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11294:66:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35400,
                        "nodeType": "ExpressionStatement",
                        "src": "11294:66:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35401,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35258,
                              "src": "11365:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 35403,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "endTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4903,
                            "src": "11365:22:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 35407,
                                "name": "secondsReduced",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35248,
                                "src": "11417:14:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35404,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35258,
                                  "src": "11390:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                "id": 35405,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "endTimestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4903,
                                "src": "11390:22:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "11390:26:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 35408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11390:42:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11365:67:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 35410,
                        "nodeType": "ExpressionStatement",
                        "src": "11365:67:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 35416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35412,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35258,
                                  "src": "11445:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                "id": 35413,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "endTimestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4903,
                                "src": "11445:22:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35414,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44984,
                                  "src": "11470:5:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 35415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11470:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11445:40:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e20746f6f2073686f7274",
                              "id": 35417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11487:16:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_395c74adc21b86a9ea2dad18b7b2dc7aff2ebb23c1ff81fb83cac5084bdd448a",
                                "typeString": "literal_string \"loan too short\""
                              },
                              "value": "loan too short"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_395c74adc21b86a9ea2dad18b7b2dc7aff2ebb23c1ff81fb83cac5084bdd448a",
                                "typeString": "literal_string \"loan too short\""
                              }
                            ],
                            "id": 35411,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11437:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 35418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11437:67:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35419,
                        "nodeType": "ExpressionStatement",
                        "src": "11437:67:129"
                      },
                      {
                        "assignments": [
                          35421
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35421,
                            "name": "maxDuration",
                            "nodeType": "VariableDeclaration",
                            "scope": 35467,
                            "src": "11509:19:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35420,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11509:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35428,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35425,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "11558:5:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 35426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11558:15:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35422,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35258,
                                "src": "11531:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 35423,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "endTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4903,
                              "src": "11531:22:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 35424,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "11531:26:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 35427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11531:43:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11509:65:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 35432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 35430,
                                "name": "maxDuration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35421,
                                "src": "11645:11:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "33363030",
                                "id": 35431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11659:4:129",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3600_by_1",
                                  "typeString": "int_const 3600"
                                },
                                "value": "3600"
                              },
                              "src": "11645:18:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e20746f6f2073686f7274",
                              "id": 35433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11665:16:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_395c74adc21b86a9ea2dad18b7b2dc7aff2ebb23c1ff81fb83cac5084bdd448a",
                                "typeString": "literal_string \"loan too short\""
                              },
                              "value": "loan too short"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_395c74adc21b86a9ea2dad18b7b2dc7aff2ebb23c1ff81fb83cac5084bdd448a",
                                "typeString": "literal_string \"loan too short\""
                              }
                            ],
                            "id": 35429,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11637:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 35434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11637:45:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 35435,
                        "nodeType": "ExpressionStatement",
                        "src": "11637:45:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35436,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35318,
                              "src": "11687:17:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            "id": 35438,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "depositTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4861,
                            "src": "11687:30:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 35442,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35241,
                                "src": "11755:14:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35439,
                                  "name": "loanInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35318,
                                  "src": "11720:17:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                    "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                  }
                                },
                                "id": 35440,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "depositTotal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4861,
                                "src": "11720:30:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "11720:34:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 35443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11720:50:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11687:83:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 35445,
                        "nodeType": "ExpressionStatement",
                        "src": "11687:83:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 35446,
                                  "name": "lenderInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4615,
                                  "src": "11775:14:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$_$",
                                    "typeString": "mapping(address => mapping(address => struct LenderInterestStruct.LenderInterest storage ref))"
                                  }
                                },
                                "id": 35451,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35447,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35258,
                                    "src": "11790:9:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 35448,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4911,
                                  "src": "11790:16:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11775:32:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$",
                                  "typeString": "mapping(address => struct LenderInterestStruct.LenderInterest storage ref)"
                                }
                              },
                              "id": 35452,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35449,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35264,
                                  "src": "11808:15:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                  }
                                },
                                "id": 35450,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "loanToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4875,
                                "src": "11808:25:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11775:59:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage",
                                "typeString": "struct LenderInterestStruct.LenderInterest storage ref"
                              }
                            },
                            "id": 35453,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owedTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4849,
                            "src": "11775:69:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 35463,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35241,
                                "src": "11929:14:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 35454,
                                      "name": "lenderInterest",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4615,
                                      "src": "11847:14:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$_$",
                                        "typeString": "mapping(address => mapping(address => struct LenderInterestStruct.LenderInterest storage ref))"
                                      }
                                    },
                                    "id": 35457,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 35455,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 35258,
                                        "src": "11862:9:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 35456,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4911,
                                      "src": "11862:16:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11847:32:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$",
                                      "typeString": "mapping(address => struct LenderInterestStruct.LenderInterest storage ref)"
                                    }
                                  },
                                  "id": 35460,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 35458,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35264,
                                      "src": "11880:15:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams storage pointer"
                                      }
                                    },
                                    "id": 35459,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "11880:25:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11847:59:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LenderInterest_$4854_storage",
                                    "typeString": "struct LenderInterestStruct.LenderInterest storage ref"
                                  }
                                },
                                "id": 35461,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owedTotal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4849,
                                "src": "11847:73:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35462,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "11847:81:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 35464,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11847:97:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11775:169:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 35466,
                        "nodeType": "ExpressionStatement",
                        "src": "11775:169:129"
                      }
                    ]
                  },
                  "documentation": "@notice Reduce the loan duration by withdrawing from the deposited interest.\n\t * @param loanId A unique ID representing the loan.\n@param receiver The account getting the withdrawal.\n@param withdrawAmount The amount to be withdrawn in loan tokens.\n\t * @return secondsReduced The amount of time in seconds the loan is reduced.\n",
                  "id": 35468,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 35244,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 35243,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "9775:12:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9775:12:129"
                    },
                    {
                      "arguments": null,
                      "id": 35246,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 35245,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "9788:13:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9788:13:129"
                    }
                  ],
                  "name": "reduceLoanDuration",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 35242,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35237,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 35468,
                        "src": "9702:14:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 35236,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9702:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35239,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 35468,
                        "src": "9720:16:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 35238,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9720:7:129",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35241,
                        "name": "withdrawAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 35468,
                        "src": "9740:22:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35240,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9740:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9698:67:129"
                  },
                  "returnParameters": {
                    "id": 35249,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35248,
                        "name": "secondsReduced",
                        "nodeType": "VariableDeclaration",
                        "scope": 35468,
                        "src": "9811:22:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35247,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9811:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9810:24:129"
                  },
                  "scope": 36073,
                  "src": "9671:2277:129",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 35545,
                    "nodeType": "Block",
                    "src": "13023:608:129",
                    "statements": [
                      {
                        "assignments": [
                          35488
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35488,
                            "name": "lenderInterestLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 35545,
                            "src": "13027:41:129",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LenderInterest_$4854_memory_ptr",
                              "typeString": "struct LenderInterestStruct.LenderInterest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 35487,
                              "name": "LenderInterest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4854,
                              "src": "13027:14:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35494,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 35489,
                              "name": "lenderInterest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4615,
                              "src": "13071:14:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$_$",
                                "typeString": "mapping(address => mapping(address => struct LenderInterestStruct.LenderInterest storage ref))"
                              }
                            },
                            "id": 35491,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 35490,
                              "name": "lender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35470,
                              "src": "13086:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13071:22:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$",
                              "typeString": "mapping(address => struct LenderInterestStruct.LenderInterest storage ref)"
                            }
                          },
                          "id": 35493,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 35492,
                            "name": "loanToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35472,
                            "src": "13094:9:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13071:33:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LenderInterest_$4854_storage",
                            "typeString": "struct LenderInterestStruct.LenderInterest storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13027:77:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 35495,
                            "name": "interestUnPaid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35481,
                            "src": "13109:14:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3836343030",
                                "id": 35507,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13224:5:129",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_86400_by_1",
                                  "typeString": "int_const 86400"
                                },
                                "value": "86400"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_86400_by_1",
                                  "typeString": "int_const 86400"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 35503,
                                      "name": "lenderInterestLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35488,
                                      "src": "13188:19:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LenderInterest_$4854_memory_ptr",
                                        "typeString": "struct LenderInterestStruct.LenderInterest memory"
                                      }
                                    },
                                    "id": 35504,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owedPerDay",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4847,
                                    "src": "13188:30:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 35499,
                                          "name": "lenderInterestLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 35488,
                                          "src": "13146:19:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_LenderInterest_$4854_memory_ptr",
                                            "typeString": "struct LenderInterestStruct.LenderInterest memory"
                                          }
                                        },
                                        "id": 35500,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "updatedTimestamp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4853,
                                        "src": "13146:36:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 35496,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44984,
                                          "src": "13126:5:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 35497,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "13126:15:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 35498,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42092,
                                      "src": "13126:19:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 35501,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13126:57:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 35502,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "13126:61:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 35505,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13126:93:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35506,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "13126:97:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 35508,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13126:104:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13109:121:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 35510,
                        "nodeType": "ExpressionStatement",
                        "src": "13109:121:129"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 35514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 35511,
                            "name": "interestUnPaid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35481,
                            "src": "13238:14:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35512,
                              "name": "lenderInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35488,
                              "src": "13255:19:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_memory_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest memory"
                              }
                            },
                            "id": 35513,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owedTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4849,
                            "src": "13255:29:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13238:46:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 35520,
                        "nodeType": "IfStatement",
                        "src": "13234:98:129",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 35518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 35515,
                              "name": "interestUnPaid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35481,
                              "src": "13286:14:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35516,
                                "name": "lenderInterestLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35488,
                                "src": "13303:19:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LenderInterest_$4854_memory_ptr",
                                  "typeString": "struct LenderInterestStruct.LenderInterest memory"
                                }
                              },
                              "id": 35517,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedTotal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4849,
                              "src": "13303:29:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13286:46:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 35519,
                          "nodeType": "ExpressionStatement",
                          "src": "13286:46:129"
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35521,
                                "name": "lenderInterestLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35488,
                                "src": "13349:19:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LenderInterest_$4854_memory_ptr",
                                  "typeString": "struct LenderInterestStruct.LenderInterest memory"
                                }
                              },
                              "id": 35522,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "paidTotal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4851,
                              "src": "13349:29:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 35526,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35523,
                                    "name": "lenderInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35488,
                                    "src": "13383:19:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LenderInterest_$4854_memory_ptr",
                                      "typeString": "struct LenderInterestStruct.LenderInterest memory"
                                    }
                                  },
                                  "id": 35524,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "paidTotal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4851,
                                  "src": "13383:29:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 35525,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13416:1:129",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13383:34:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 35529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13459:1:129",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "id": 35530,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "13383:77:129",
                              "trueExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35527,
                                  "name": "lenderInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35488,
                                  "src": "13420:19:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LenderInterest_$4854_memory_ptr",
                                    "typeString": "struct LenderInterestStruct.LenderInterest memory"
                                  }
                                },
                                "id": 35528,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "updatedTimestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4853,
                                "src": "13420:36:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35531,
                                "name": "lenderInterestLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35488,
                                "src": "13465:19:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LenderInterest_$4854_memory_ptr",
                                  "typeString": "struct LenderInterestStruct.LenderInterest memory"
                                }
                              },
                              "id": 35532,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedPerDay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4847,
                              "src": "13465:30:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 35536,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35533,
                                    "name": "lenderInterestLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35488,
                                    "src": "13500:19:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LenderInterest_$4854_memory_ptr",
                                      "typeString": "struct LenderInterestStruct.LenderInterest memory"
                                    }
                                  },
                                  "id": 35534,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updatedTimestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4853,
                                  "src": "13500:36:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 35535,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13540:1:129",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13500:41:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 35538,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13561:1:129",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "id": 35539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "13500:62:129",
                              "trueExpression": {
                                "argumentTypes": null,
                                "id": 35537,
                                "name": "interestUnPaid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35481,
                                "src": "13544:14:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 35540,
                              "name": "lendingFeePercent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4642,
                              "src": "13567:17:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35541,
                                "name": "lenderInterestLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35488,
                                "src": "13589:19:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LenderInterest_$4854_memory_ptr",
                                  "typeString": "struct LenderInterestStruct.LenderInterest memory"
                                }
                              },
                              "id": 35542,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "principalTotal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4845,
                              "src": "13589:34:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 35543,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "13344:283:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 35486,
                        "id": 35544,
                        "nodeType": "Return",
                        "src": "13337:290:129"
                      }
                    ]
                  },
                  "documentation": "@notice Get current lender interest data totals for all loans\n  with a specific oracle and interest token.\n\t * @param lender The lender address.\n@param loanToken The loan token address.\n\t * @return interestPaid The total amount of interest that has been paid to a lender so far.\n@return interestPaidDate The date of the last interest pay out, or 0 if no interest has been withdrawn yet.\n@return interestOwedPerDay The amount of interest the lender is earning per day.\n@return interestUnPaid The total amount of interest the lender is owned and not yet withdrawn.\n@return interestFeePercent The fee retained by the protocol before interest is paid to the lender.\n@return principalTotal The total amount of outstanding principal the lender has loaned.\n",
                  "id": 35546,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLenderInterestData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 35473,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35470,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 35546,
                        "src": "12784:14:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 35469,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12784:7:129",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35472,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 35546,
                        "src": "12800:17:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 35471,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12800:7:129",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12783:35:129"
                  },
                  "returnParameters": {
                    "id": 35486,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35475,
                        "name": "interestPaid",
                        "nodeType": "VariableDeclaration",
                        "scope": 35546,
                        "src": "12852:20:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35474,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12852:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35477,
                        "name": "interestPaidDate",
                        "nodeType": "VariableDeclaration",
                        "scope": 35546,
                        "src": "12877:24:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35476,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12877:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35479,
                        "name": "interestOwedPerDay",
                        "nodeType": "VariableDeclaration",
                        "scope": 35546,
                        "src": "12906:26:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35478,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12906:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35481,
                        "name": "interestUnPaid",
                        "nodeType": "VariableDeclaration",
                        "scope": 35546,
                        "src": "12937:22:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35480,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12937:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35483,
                        "name": "interestFeePercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 35546,
                        "src": "12964:26:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35482,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12964:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35485,
                        "name": "principalTotal",
                        "nodeType": "VariableDeclaration",
                        "scope": 35546,
                        "src": "12995:22:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35484,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12995:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12847:174:129"
                  },
                  "scope": 36073,
                  "src": "12753:878:129",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 35619,
                    "nodeType": "Block",
                    "src": "14302:458:129",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 35559,
                            "name": "loanToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35551,
                            "src": "14306:9:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 35560,
                                "name": "loanParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4591,
                                "src": "14318:10:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                                  "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                                }
                              },
                              "id": 35565,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 35561,
                                    "name": "loans",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4587,
                                    "src": "14329:5:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                                      "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                                    }
                                  },
                                  "id": 35563,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 35562,
                                    "name": "loanId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35548,
                                    "src": "14335:6:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14329:13:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage",
                                    "typeString": "struct LoanStruct.Loan storage ref"
                                  }
                                },
                                "id": 35564,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "loanParamsId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4891,
                                "src": "14329:26:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14318:38:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                                "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                              }
                            },
                            "id": 35566,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4875,
                            "src": "14318:48:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14306:60:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 35568,
                        "nodeType": "ExpressionStatement",
                        "src": "14306:60:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 35569,
                            "name": "interestOwedPerDay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35553,
                            "src": "14370:18:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 35570,
                                "name": "loanInterest",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4619,
                                "src": "14391:12:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanInterest_$4864_storage_$",
                                  "typeString": "mapping(bytes32 => struct LoanInterestStruct.LoanInterest storage ref)"
                                }
                              },
                              "id": 35572,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 35571,
                                "name": "loanId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35548,
                                "src": "14404:6:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14391:20:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage ref"
                              }
                            },
                            "id": 35573,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owedPerDay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4859,
                            "src": "14391:31:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14370:52:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 35575,
                        "nodeType": "ExpressionStatement",
                        "src": "14370:52:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 35576,
                            "name": "interestDepositTotal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35555,
                            "src": "14426:20:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 35577,
                                "name": "loanInterest",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4619,
                                "src": "14449:12:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanInterest_$4864_storage_$",
                                  "typeString": "mapping(bytes32 => struct LoanInterestStruct.LoanInterest storage ref)"
                                }
                              },
                              "id": 35579,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 35578,
                                "name": "loanId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35548,
                                "src": "14462:6:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14449:20:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage ref"
                              }
                            },
                            "id": 35580,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "depositTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4861,
                            "src": "14449:33:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14426:56:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 35582,
                        "nodeType": "ExpressionStatement",
                        "src": "14426:56:129"
                      },
                      {
                        "assignments": [
                          35584
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35584,
                            "name": "endTimestamp",
                            "nodeType": "VariableDeclaration",
                            "scope": 35619,
                            "src": "14487:20:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35583,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14487:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35589,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 35585,
                              "name": "loans",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4587,
                              "src": "14510:5:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                                "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                              }
                            },
                            "id": 35587,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 35586,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35548,
                              "src": "14516:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14510:13:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_storage",
                              "typeString": "struct LoanStruct.Loan storage ref"
                            }
                          },
                          "id": 35588,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "endTimestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4903,
                          "src": "14510:26:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14487:49:129"
                      },
                      {
                        "assignments": [
                          35591
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35591,
                            "name": "interestTime",
                            "nodeType": "VariableDeclaration",
                            "scope": 35619,
                            "src": "14540:20:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35590,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14540:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35600,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 35595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35592,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "14563:5:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 35593,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14563:15:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 35594,
                              "name": "endTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35584,
                              "src": "14581:12:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14563:30:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35597,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44984,
                              "src": "14611:5:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 35598,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14611:15:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 35599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "14563:63:129",
                          "trueExpression": {
                            "argumentTypes": null,
                            "id": 35596,
                            "name": "endTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35584,
                            "src": "14596:12:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14540:86:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 35601,
                            "name": "interestDepositRemaining",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35557,
                            "src": "14630:24:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 35604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 35602,
                                "name": "endTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35584,
                                "src": "14657:12:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 35603,
                                "name": "interestTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35591,
                                "src": "14672:12:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14657:27:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 35615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14755:1:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "id": 35616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "14657:99:129",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "3836343030",
                                  "id": 35613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14746:5:129",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_86400_by_1",
                                    "typeString": "int_const 86400"
                                  },
                                  "value": "86400"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_86400_by_1",
                                    "typeString": "int_const 86400"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 35610,
                                      "name": "interestOwedPerDay",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35553,
                                      "src": "14722:18:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 35607,
                                          "name": "interestTime",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 35591,
                                          "src": "14704:12:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 35605,
                                          "name": "endTimestamp",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 35584,
                                          "src": "14687:12:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 35606,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42092,
                                        "src": "14687:16:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 35608,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14687:30:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 35609,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42153,
                                    "src": "14687:34:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 35611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14687:54:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 35612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42169,
                                "src": "14687:58:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 35614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14687:65:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14630:126:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 35618,
                        "nodeType": "ExpressionStatement",
                        "src": "14630:126:129"
                      }
                    ]
                  },
                  "documentation": "@notice Get current interest data for a loan.\n\t * @param loanId A unique ID representing the loan.\n\t * @return loanToken The loan token that interest is paid in.\n@return interestOwedPerDay The amount of interest the borrower is paying per day.\n@return interestDepositTotal The total amount of interest the borrower has deposited.\n@return interestDepositRemaining The amount of deposited interest that is not yet owed to a lender.\n",
                  "id": 35620,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLoanInterestData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 35549,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35548,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 35620,
                        "src": "14129:14:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 35547,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14129:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14128:16:129"
                  },
                  "returnParameters": {
                    "id": 35558,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35551,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 35620,
                        "src": "14178:17:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 35550,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14178:7:129",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35553,
                        "name": "interestOwedPerDay",
                        "nodeType": "VariableDeclaration",
                        "scope": 35620,
                        "src": "14200:26:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35552,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14200:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35555,
                        "name": "interestDepositTotal",
                        "nodeType": "VariableDeclaration",
                        "scope": 35620,
                        "src": "14231:28:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35554,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14231:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35557,
                        "name": "interestDepositRemaining",
                        "nodeType": "VariableDeclaration",
                        "scope": 35620,
                        "src": "14264:32:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35556,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14264:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14173:127:129"
                  },
                  "scope": 36073,
                  "src": "14100:660:129",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 35737,
                    "nodeType": "Block",
                    "src": "15506:677:129",
                    "statements": [
                      {
                        "assignments": [
                          35641
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35641,
                            "name": "set",
                            "nodeType": "VariableDeclaration",
                            "scope": 35737,
                            "src": "15510:43:129",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                              "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 35640,
                              "name": "EnumerableBytes32Set.Bytes32Set",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 26734,
                              "src": "15510:31:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35650,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "id": 35642,
                            "name": "isLender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35630,
                            "src": "15556:8:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 35646,
                              "name": "borrowerLoanSets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4631,
                              "src": "15590:16:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                                "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set storage ref)"
                              }
                            },
                            "id": 35648,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 35647,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35622,
                              "src": "15607:4:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15590:22:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                              "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                            }
                          },
                          "id": 35649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "15556:56:129",
                          "trueExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 35643,
                              "name": "lenderLoanSets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4627,
                              "src": "15567:14:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                                "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set storage ref)"
                              }
                            },
                            "id": 35645,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 35644,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35622,
                              "src": "15582:4:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15567:20:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                              "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                            "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15510:102:129"
                      },
                      {
                        "assignments": [
                          35652
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35652,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 35737,
                            "src": "15617:11:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35651,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15617:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35662,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35658,
                                  "name": "set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35641,
                                  "src": "15655:3:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                    "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                  }
                                },
                                "id": 35659,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 27023,
                                "src": "15655:10:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$26734_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                  "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 35660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15655:12:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 35655,
                                  "name": "count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35626,
                                  "src": "15641:5:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35653,
                                  "name": "start",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35624,
                                  "src": "15631:5:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 35654,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42076,
                                "src": "15631:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 35656,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15631:16:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 35657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "min256",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42308,
                            "src": "15631:23:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 35661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15631:37:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15617:51:129"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 35665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 35663,
                            "name": "start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35624,
                            "src": "15676:5:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 35664,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35652,
                            "src": "15685:3:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15676:12:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 35669,
                        "nodeType": "IfStatement",
                        "src": "15672:44:129",
                        "trueBody": {
                          "id": 35668,
                          "nodeType": "Block",
                          "src": "15690:26:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 35666,
                                "name": "loansData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35636,
                                "src": "15702:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_ptr",
                                  "typeString": "struct LoanMaintenance.LoanReturnData memory[] memory"
                                }
                              },
                              "functionReturnParameters": 35637,
                              "id": 35667,
                              "nodeType": "Return",
                              "src": "15695:16:129"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 35670,
                            "name": "loansData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35636,
                            "src": "15720:9:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_ptr",
                              "typeString": "struct LoanMaintenance.LoanReturnData memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 35674,
                                "name": "count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35626,
                                "src": "15753:5:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 35673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "15732:20:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (struct LoanMaintenance.LoanReturnData memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "contractScope": null,
                                  "id": 35671,
                                  "name": "LoanReturnData",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 34587,
                                  "src": "15736:14:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanReturnData_$34587_storage_ptr",
                                    "typeString": "struct LoanMaintenance.LoanReturnData"
                                  }
                                },
                                "id": 35672,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "15736:16:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_storage_$dyn_storage_ptr",
                                  "typeString": "struct LoanMaintenance.LoanReturnData[]"
                                }
                              }
                            },
                            "id": 35675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15732:27:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory",
                              "typeString": "struct LoanMaintenance.LoanReturnData memory[] memory"
                            }
                          },
                          "src": "15720:39:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_ptr",
                            "typeString": "struct LoanMaintenance.LoanReturnData memory[] memory"
                          }
                        },
                        "id": 35677,
                        "nodeType": "ExpressionStatement",
                        "src": "15720:39:129"
                      },
                      {
                        "assignments": [
                          35679
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35679,
                            "name": "itemCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 35737,
                            "src": "15763:17:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35678,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15763:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35680,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15763:17:129"
                      },
                      {
                        "body": {
                          "id": 35729,
                          "nodeType": "Block",
                          "src": "15826:270:129",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 35695,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 35693,
                                  "name": "itemCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35679,
                                  "src": "15835:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 35694,
                                  "name": "count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35626,
                                  "src": "15848:5:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15835:18:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 35698,
                              "nodeType": "IfStatement",
                              "src": "15831:41:129",
                              "trueBody": {
                                "id": 35697,
                                "nodeType": "Block",
                                "src": "15855:17:129",
                                "statements": [
                                  {
                                    "id": 35696,
                                    "nodeType": "Break",
                                    "src": "15861:5:129"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                35700
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 35700,
                                  "name": "loanData",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 35729,
                                  "src": "15876:30:129",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory_ptr",
                                    "typeString": "struct LoanMaintenance.LoanReturnData"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 35699,
                                    "name": "LoanReturnData",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 34587,
                                    "src": "15876:14:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanReturnData_$34587_storage_ptr",
                                      "typeString": "struct LoanMaintenance.LoanReturnData"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 35713,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 35708,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 35706,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 35704,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 35682,
                                            "src": "15936:1:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 35705,
                                            "name": "start",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 35624,
                                            "src": "15940:5:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "15936:9:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 35707,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "15948:1:129",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "15936:13:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 35702,
                                        "name": "set",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 35641,
                                        "src": "15928:3:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                          "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                        }
                                      },
                                      "id": 35703,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "get",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 27038,
                                      "src": "15928:7:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                        "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,uint256) view returns (bytes32)"
                                      }
                                    },
                                    "id": 35709,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15928:22:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 35710,
                                    "name": "loanType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35628,
                                    "src": "15968:8:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 35711,
                                    "name": "unsafeOnly",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35632,
                                    "src": "15983:10:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 35701,
                                  "name": "_getLoan",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36009,
                                  "src": "15913:8:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_struct$_LoanReturnData_$34587_memory_ptr_$",
                                    "typeString": "function (bytes32,uint256,bool) view returns (struct LoanMaintenance.LoanReturnData memory)"
                                  }
                                },
                                "id": 35712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15913:86:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory_ptr",
                                  "typeString": "struct LoanMaintenance.LoanReturnData memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15876:123:129"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 35717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35714,
                                    "name": "loanData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35700,
                                    "src": "16008:8:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory_ptr",
                                      "typeString": "struct LoanMaintenance.LoanReturnData memory"
                                    }
                                  },
                                  "id": 35715,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "loanId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 34558,
                                  "src": "16008:15:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 35716,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16027:1:129",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "16008:20:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 35719,
                              "nodeType": "IfStatement",
                              "src": "16004:34:129",
                              "trueBody": {
                                "id": 35718,
                                "nodeType": "Continue",
                                "src": "16030:8:129"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 35724,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 35720,
                                    "name": "loansData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35636,
                                    "src": "16044:9:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_ptr",
                                      "typeString": "struct LoanMaintenance.LoanReturnData memory[] memory"
                                    }
                                  },
                                  "id": 35722,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 35721,
                                    "name": "itemCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35679,
                                    "src": "16054:9:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "16044:20:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory",
                                    "typeString": "struct LoanMaintenance.LoanReturnData memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 35723,
                                  "name": "loanData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35700,
                                  "src": "16067:8:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory_ptr",
                                    "typeString": "struct LoanMaintenance.LoanReturnData memory"
                                  }
                                },
                                "src": "16044:31:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory",
                                  "typeString": "struct LoanMaintenance.LoanReturnData memory"
                                }
                              },
                              "id": 35725,
                              "nodeType": "ExpressionStatement",
                              "src": "16044:31:129"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 35727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "16080:11:129",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 35726,
                                  "name": "itemCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35679,
                                  "src": "16080:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35728,
                              "nodeType": "ExpressionStatement",
                              "src": "16080:11:129"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 35689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 35687,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35682,
                            "src": "15814:1:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 35688,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15818:1:129",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15814:5:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 35730,
                        "initializationExpression": {
                          "assignments": [
                            35682
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 35682,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 35730,
                              "src": "15789:9:129",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 35681,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15789:7:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 35686,
                          "initialValue": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 35685,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 35683,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35652,
                              "src": "15801:3:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 35684,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35624,
                              "src": "15807:5:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15801:11:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15789:23:129"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 35691,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": false,
                            "src": "15821:3:129",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 35690,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35682,
                              "src": "15821:1:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 35692,
                          "nodeType": "ExpressionStatement",
                          "src": "15821:3:129"
                        },
                        "nodeType": "ForStatement",
                        "src": "15784:312:129"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 35733,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 35731,
                            "name": "itemCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35679,
                            "src": "16104:9:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 35732,
                            "name": "count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35626,
                            "src": "16116:5:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16104:17:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 35736,
                        "nodeType": "IfStatement",
                        "src": "16100:80:129",
                        "trueBody": {
                          "id": 35735,
                          "nodeType": "Block",
                          "src": "16123:57:129",
                          "statements": [
                            {
                              "externalReferences": [
                                {
                                  "loansData": {
                                    "declaration": 35636,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "16150:9:129",
                                    "valueSize": 1
                                  }
                                },
                                {
                                  "itemCount": {
                                    "declaration": 35679,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "16161:9:129",
                                    "valueSize": 1
                                  }
                                }
                              ],
                              "id": 35734,
                              "nodeType": "InlineAssembly",
                              "operations": "{ mstore(loansData, itemCount) }",
                              "src": "16128:48:129"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Get all user loans.\n\t * Only returns data for loans that are active.\n\t * @param user The user address.\n@param start The lower loan ID to start with.\n@param count The maximum number of results.\n@param loanType The type of loan.\n  loanType 0: all loans.\n  loanType 1: margin trade loans.\n  loanType 2: non-margin trade loans.\n@param isLender Whether the user is lender or borrower.\n@param unsafeOnly The safe filter (True/False).\n\t * @return loansData The array of loans as query result.\n",
                  "id": 35738,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserLoans",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 35633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35622,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 35738,
                        "src": "15342:12:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 35621,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15342:7:129",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35624,
                        "name": "start",
                        "nodeType": "VariableDeclaration",
                        "scope": 35738,
                        "src": "15358:13:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35623,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15358:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35626,
                        "name": "count",
                        "nodeType": "VariableDeclaration",
                        "scope": 35738,
                        "src": "15375:13:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35625,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15375:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35628,
                        "name": "loanType",
                        "nodeType": "VariableDeclaration",
                        "scope": 35738,
                        "src": "15392:16:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35627,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15392:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35630,
                        "name": "isLender",
                        "nodeType": "VariableDeclaration",
                        "scope": 35738,
                        "src": "15412:13:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 35629,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15412:4:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35632,
                        "name": "unsafeOnly",
                        "nodeType": "VariableDeclaration",
                        "scope": 35738,
                        "src": "15429:15:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 35631,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15429:4:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15338:109:129"
                  },
                  "returnParameters": {
                    "id": 35637,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35636,
                        "name": "loansData",
                        "nodeType": "VariableDeclaration",
                        "scope": 35738,
                        "src": "15471:33:129",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_ptr",
                          "typeString": "struct LoanMaintenance.LoanReturnData[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 35634,
                            "name": "LoanReturnData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 34587,
                            "src": "15471:14:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanReturnData_$34587_storage_ptr",
                              "typeString": "struct LoanMaintenance.LoanReturnData"
                            }
                          },
                          "id": 35635,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "15471:16:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_storage_$dyn_storage_ptr",
                            "typeString": "struct LoanMaintenance.LoanReturnData[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15470:35:129"
                  },
                  "scope": 36073,
                  "src": "15317:866:129",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 35751,
                    "nodeType": "Block",
                    "src": "16508:89:129",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 35746,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35740,
                              "src": "16536:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 35747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16548:1:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 35748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16568:5:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 35745,
                            "name": "_getLoan",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36009,
                            "src": "16522:8:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_struct$_LoanReturnData_$34587_memory_ptr_$",
                              "typeString": "function (bytes32,uint256,bool) view returns (struct LoanMaintenance.LoanReturnData memory)"
                            }
                          },
                          "id": 35749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16522:71:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory_ptr",
                            "typeString": "struct LoanMaintenance.LoanReturnData memory"
                          }
                        },
                        "functionReturnParameters": 35744,
                        "id": 35750,
                        "nodeType": "Return",
                        "src": "16512:81:129"
                      }
                    ]
                  },
                  "documentation": "@notice Get one loan data structure by matching ID.\n\t * Wrapper to internal _getLoan call.\n\t * @param loanId A unique ID representing the loan.\n\t * @return loansData The data structure w/ loan information.\n",
                  "id": 35752,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLoan",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 35741,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35740,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 35752,
                        "src": "16437:14:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 35739,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "16437:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16436:16:129"
                  },
                  "returnParameters": {
                    "id": 35744,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35743,
                        "name": "loanData",
                        "nodeType": "VariableDeclaration",
                        "scope": 35752,
                        "src": "16476:30:129",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory_ptr",
                          "typeString": "struct LoanMaintenance.LoanReturnData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 35742,
                          "name": "LoanReturnData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 34587,
                          "src": "16476:14:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanReturnData_$34587_storage_ptr",
                            "typeString": "struct LoanMaintenance.LoanReturnData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16475:32:129"
                  },
                  "scope": 36073,
                  "src": "16420:177:129",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 35850,
                    "nodeType": "Block",
                    "src": "17004:598:129",
                    "statements": [
                      {
                        "assignments": [
                          35765
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35765,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 35850,
                            "src": "17008:11:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35764,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17008:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35775,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35771,
                                  "name": "activeLoansSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4623,
                                  "src": "17046:14:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                    "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                  }
                                },
                                "id": 35772,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 27023,
                                "src": "17046:21:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$26734_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                  "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 35773,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17046:23:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 35768,
                                  "name": "count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35756,
                                  "src": "17032:5:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35766,
                                  "name": "start",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35754,
                                  "src": "17022:5:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 35767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42076,
                                "src": "17022:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 35769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17022:16:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 35770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "min256",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42308,
                            "src": "17022:23:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 35774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17022:48:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17008:62:129"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 35778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 35776,
                            "name": "start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35754,
                            "src": "17078:5:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 35777,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35765,
                            "src": "17087:3:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17078:12:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 35782,
                        "nodeType": "IfStatement",
                        "src": "17074:44:129",
                        "trueBody": {
                          "id": 35781,
                          "nodeType": "Block",
                          "src": "17092:26:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 35779,
                                "name": "loansData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35762,
                                "src": "17104:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_ptr",
                                  "typeString": "struct LoanMaintenance.LoanReturnData memory[] memory"
                                }
                              },
                              "functionReturnParameters": 35763,
                              "id": 35780,
                              "nodeType": "Return",
                              "src": "17097:16:129"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 35789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 35783,
                            "name": "loansData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35762,
                            "src": "17122:9:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_ptr",
                              "typeString": "struct LoanMaintenance.LoanReturnData memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 35787,
                                "name": "count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35756,
                                "src": "17155:5:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 35786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "17134:20:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (struct LoanMaintenance.LoanReturnData memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "contractScope": null,
                                  "id": 35784,
                                  "name": "LoanReturnData",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 34587,
                                  "src": "17138:14:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanReturnData_$34587_storage_ptr",
                                    "typeString": "struct LoanMaintenance.LoanReturnData"
                                  }
                                },
                                "id": 35785,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "17138:16:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_storage_$dyn_storage_ptr",
                                  "typeString": "struct LoanMaintenance.LoanReturnData[]"
                                }
                              }
                            },
                            "id": 35788,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17134:27:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory",
                              "typeString": "struct LoanMaintenance.LoanReturnData memory[] memory"
                            }
                          },
                          "src": "17122:39:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_ptr",
                            "typeString": "struct LoanMaintenance.LoanReturnData memory[] memory"
                          }
                        },
                        "id": 35790,
                        "nodeType": "ExpressionStatement",
                        "src": "17122:39:129"
                      },
                      {
                        "assignments": [
                          35792
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35792,
                            "name": "itemCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 35850,
                            "src": "17165:17:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35791,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17165:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35793,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17165:17:129"
                      },
                      {
                        "body": {
                          "id": 35842,
                          "nodeType": "Block",
                          "src": "17228:287:129",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 35808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 35806,
                                  "name": "itemCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35792,
                                  "src": "17237:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 35807,
                                  "name": "count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35756,
                                  "src": "17250:5:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17237:18:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 35811,
                              "nodeType": "IfStatement",
                              "src": "17233:41:129",
                              "trueBody": {
                                "id": 35810,
                                "nodeType": "Block",
                                "src": "17257:17:129",
                                "statements": [
                                  {
                                    "id": 35809,
                                    "nodeType": "Break",
                                    "src": "17263:5:129"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                35813
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 35813,
                                  "name": "loanData",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 35842,
                                  "src": "17278:30:129",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory_ptr",
                                    "typeString": "struct LoanMaintenance.LoanReturnData"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 35812,
                                    "name": "LoanReturnData",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 34587,
                                    "src": "17278:14:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanReturnData_$34587_storage_ptr",
                                      "typeString": "struct LoanMaintenance.LoanReturnData"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 35826,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 35821,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 35819,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 35817,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 35795,
                                            "src": "17349:1:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 35818,
                                            "name": "start",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 35754,
                                            "src": "17353:5:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "17349:9:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 35820,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17361:1:129",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "17349:13:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 35815,
                                        "name": "activeLoansSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4623,
                                        "src": "17330:14:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                          "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                        }
                                      },
                                      "id": 35816,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "get",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 27038,
                                      "src": "17330:18:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                        "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,uint256) view returns (bytes32)"
                                      }
                                    },
                                    "id": 35822,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17330:33:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 35823,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17381:1:129",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 35824,
                                    "name": "unsafeOnly",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35758,
                                    "src": "17402:10:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 35814,
                                  "name": "_getLoan",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36009,
                                  "src": "17315:8:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_struct$_LoanReturnData_$34587_memory_ptr_$",
                                    "typeString": "function (bytes32,uint256,bool) view returns (struct LoanMaintenance.LoanReturnData memory)"
                                  }
                                },
                                "id": 35825,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17315:103:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory_ptr",
                                  "typeString": "struct LoanMaintenance.LoanReturnData memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17278:140:129"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 35830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35827,
                                    "name": "loanData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35813,
                                    "src": "17427:8:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory_ptr",
                                      "typeString": "struct LoanMaintenance.LoanReturnData memory"
                                    }
                                  },
                                  "id": 35828,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "loanId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 34558,
                                  "src": "17427:15:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 35829,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17446:1:129",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "17427:20:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 35832,
                              "nodeType": "IfStatement",
                              "src": "17423:34:129",
                              "trueBody": {
                                "id": 35831,
                                "nodeType": "Continue",
                                "src": "17449:8:129"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 35837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 35833,
                                    "name": "loansData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35762,
                                    "src": "17463:9:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_ptr",
                                      "typeString": "struct LoanMaintenance.LoanReturnData memory[] memory"
                                    }
                                  },
                                  "id": 35835,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 35834,
                                    "name": "itemCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35792,
                                    "src": "17473:9:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "17463:20:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory",
                                    "typeString": "struct LoanMaintenance.LoanReturnData memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 35836,
                                  "name": "loanData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35813,
                                  "src": "17486:8:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory_ptr",
                                    "typeString": "struct LoanMaintenance.LoanReturnData memory"
                                  }
                                },
                                "src": "17463:31:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory",
                                  "typeString": "struct LoanMaintenance.LoanReturnData memory"
                                }
                              },
                              "id": 35838,
                              "nodeType": "ExpressionStatement",
                              "src": "17463:31:129"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 35840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "17499:11:129",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 35839,
                                  "name": "itemCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35792,
                                  "src": "17499:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 35841,
                              "nodeType": "ExpressionStatement",
                              "src": "17499:11:129"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 35802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 35800,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35795,
                            "src": "17216:1:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 35801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17220:1:129",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17216:5:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 35843,
                        "initializationExpression": {
                          "assignments": [
                            35795
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 35795,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 35843,
                              "src": "17191:9:129",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 35794,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "17191:7:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 35799,
                          "initialValue": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 35798,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 35796,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35765,
                              "src": "17203:3:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 35797,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35754,
                              "src": "17209:5:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17203:11:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "17191:23:129"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 35804,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": false,
                            "src": "17223:3:129",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 35803,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35795,
                              "src": "17223:1:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 35805,
                          "nodeType": "ExpressionStatement",
                          "src": "17223:3:129"
                        },
                        "nodeType": "ForStatement",
                        "src": "17186:329:129"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 35846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 35844,
                            "name": "itemCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35792,
                            "src": "17523:9:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 35845,
                            "name": "count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35756,
                            "src": "17535:5:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17523:17:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 35849,
                        "nodeType": "IfStatement",
                        "src": "17519:80:129",
                        "trueBody": {
                          "id": 35848,
                          "nodeType": "Block",
                          "src": "17542:57:129",
                          "statements": [
                            {
                              "externalReferences": [
                                {
                                  "loansData": {
                                    "declaration": 35762,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "17569:9:129",
                                    "valueSize": 1
                                  }
                                },
                                {
                                  "itemCount": {
                                    "declaration": 35792,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "17580:9:129",
                                    "valueSize": 1
                                  }
                                }
                              ],
                              "id": 35847,
                              "nodeType": "InlineAssembly",
                              "operations": "{ mstore(loansData, itemCount) }",
                              "src": "17547:48:129"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Get all active loans.\n\t * @param start The lower loan ID to start with.\n@param count The maximum number of results.\n@param unsafeOnly The safe filter (True/False).\n\t * @return loansData The data structure w/ loan information.\n",
                  "id": 35851,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getActiveLoans",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 35759,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35754,
                        "name": "start",
                        "nodeType": "VariableDeclaration",
                        "scope": 35851,
                        "src": "16893:13:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35753,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16893:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35756,
                        "name": "count",
                        "nodeType": "VariableDeclaration",
                        "scope": 35851,
                        "src": "16910:13:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35755,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16910:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35758,
                        "name": "unsafeOnly",
                        "nodeType": "VariableDeclaration",
                        "scope": 35851,
                        "src": "16927:15:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 35757,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16927:4:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16889:56:129"
                  },
                  "returnParameters": {
                    "id": 35763,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35762,
                        "name": "loansData",
                        "nodeType": "VariableDeclaration",
                        "scope": 35851,
                        "src": "16969:33:129",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_memory_$dyn_memory_ptr",
                          "typeString": "struct LoanMaintenance.LoanReturnData[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 35760,
                            "name": "LoanReturnData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 34587,
                            "src": "16969:14:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanReturnData_$34587_storage_ptr",
                              "typeString": "struct LoanMaintenance.LoanReturnData"
                            }
                          },
                          "id": 35761,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "16969:16:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanReturnData_$34587_storage_$dyn_storage_ptr",
                            "typeString": "struct LoanMaintenance.LoanReturnData[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16968:35:129"
                  },
                  "scope": 36073,
                  "src": "16866:736:129",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 36008,
                    "nodeType": "Block",
                    "src": "18138:1732:129",
                    "statements": [
                      {
                        "assignments": [
                          35863
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35863,
                            "name": "loanLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 36008,
                            "src": "18142:21:129",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                              "typeString": "struct LoanStruct.Loan"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 35862,
                              "name": "Loan",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4912,
                              "src": "18142:4:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35867,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 35864,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4587,
                            "src": "18166:5:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                            }
                          },
                          "id": 35866,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 35865,
                            "name": "loanId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35853,
                            "src": "18172:6:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18166:13:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage",
                            "typeString": "struct LoanStruct.Loan storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18142:37:129"
                      },
                      {
                        "assignments": [
                          35869
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35869,
                            "name": "loanParamsLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 36008,
                            "src": "18183:33:129",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 35868,
                              "name": "LoanParams",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4884,
                              "src": "18183:10:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35874,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 35870,
                            "name": "loanParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4591,
                            "src": "18219:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                            }
                          },
                          "id": 35873,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35871,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35863,
                              "src": "18230:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                "typeString": "struct LoanStruct.Loan memory"
                              }
                            },
                            "id": 35872,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanParamsId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4891,
                            "src": "18230:22:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18219:34:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                            "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18183:70:129"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 35877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 35875,
                            "name": "loanType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35855,
                            "src": "18262:8:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 35876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18274:1:129",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "18262:13:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 35904,
                        "nodeType": "IfStatement",
                        "src": "18258:170:129",
                        "trueBody": {
                          "id": 35903,
                          "nodeType": "Block",
                          "src": "18277:151:129",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 35898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "18286:109:129",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 35896,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "id": 35885,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 35880,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "id": 35878,
                                                "name": "loanType",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 35855,
                                                "src": "18289:8:129",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "31",
                                                "id": 35879,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18301:1:129",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "18289:13:129",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&&",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 35884,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 35881,
                                                  "name": "loanParamsLocal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 35869,
                                                  "src": "18306:15:129",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                                  }
                                                },
                                                "id": 35882,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "maxLoanTerm",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4883,
                                                "src": "18306:27:129",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "!=",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "30",
                                                "id": 35883,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18337:1:129",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              },
                                              "src": "18306:32:129",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "src": "18289:49:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          }
                                        ],
                                        "id": 35886,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "18288:51:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "||",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "id": 35894,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 35889,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "id": 35887,
                                                "name": "loanType",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 35855,
                                                "src": "18344:8:129",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "32",
                                                "id": 35888,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18356:1:129",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_2_by_1",
                                                  "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                              },
                                              "src": "18344:13:129",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&&",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 35893,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 35890,
                                                  "name": "loanParamsLocal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 35869,
                                                  "src": "18361:15:129",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                                  }
                                                },
                                                "id": 35891,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "maxLoanTerm",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4883,
                                                "src": "18361:27:129",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "30",
                                                "id": 35892,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18392:1:129",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              },
                                              "src": "18361:32:129",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "src": "18344:49:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          }
                                        ],
                                        "id": 35895,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "18343:51:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "18288:106:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 35897,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "18287:108:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 35902,
                              "nodeType": "IfStatement",
                              "src": "18282:142:129",
                              "trueBody": {
                                "id": 35901,
                                "nodeType": "Block",
                                "src": "18397:27:129",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 35899,
                                      "name": "loanData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35860,
                                      "src": "18410:8:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory_ptr",
                                        "typeString": "struct LoanMaintenance.LoanReturnData memory"
                                      }
                                    },
                                    "functionReturnParameters": 35861,
                                    "id": 35900,
                                    "nodeType": "Return",
                                    "src": "18403:15:129"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          35906
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35906,
                            "name": "loanInterestLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 36008,
                            "src": "18432:37:129",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanInterest_$4864_memory_ptr",
                              "typeString": "struct LoanInterestStruct.LoanInterest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 35905,
                              "name": "LoanInterest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4864,
                              "src": "18432:12:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35910,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 35907,
                            "name": "loanInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4619,
                            "src": "18472:12:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanInterest_$4864_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanInterestStruct.LoanInterest storage ref)"
                            }
                          },
                          "id": 35909,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 35908,
                            "name": "loanId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35853,
                            "src": "18485:6:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18472:20:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanInterest_$4864_storage",
                            "typeString": "struct LoanInterestStruct.LoanInterest storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18432:60:129"
                      },
                      {
                        "assignments": [
                          35912,
                          35914
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35912,
                            "name": "currentMargin",
                            "nodeType": "VariableDeclaration",
                            "scope": 36008,
                            "src": "18498:21:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35911,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18498:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 35914,
                            "name": "collateralToLoanRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 36008,
                            "src": "18521:28:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35913,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18521:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35928,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35919,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35869,
                                "src": "18602:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 35920,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "18602:25:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35921,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35869,
                                "src": "18633:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 35922,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "18633:31:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35923,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35863,
                                "src": "18670:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 35924,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "principal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4897,
                              "src": "18670:19:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35925,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35863,
                                "src": "18695:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 35926,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4899,
                              "src": "18695:20:129",
                              "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_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 35916,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "18568:10:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 35915,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "18556:11:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 35917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18556:23:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 35918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getCurrentMargin",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8684,
                            "src": "18556:40:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256) view external returns (uint256,uint256)"
                            }
                          },
                          "id": 35927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18556:164:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18497:223:129"
                      },
                      {
                        "assignments": [
                          35930
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35930,
                            "name": "maxLiquidatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 36008,
                            "src": "18725:23:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35929,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18725:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35931,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18725:23:129"
                      },
                      {
                        "assignments": [
                          35933
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 35933,
                            "name": "maxSeizable",
                            "nodeType": "VariableDeclaration",
                            "scope": 36008,
                            "src": "18752:19:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 35932,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18752:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 35934,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18752:19:129"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 35938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 35935,
                            "name": "currentMargin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35912,
                            "src": "18779:13:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 35936,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35869,
                              "src": "18796:15:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              }
                            },
                            "id": 35937,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "maintenanceMargin",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4881,
                            "src": "18796:33:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18779:50:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "id": 35955,
                            "name": "unsafeOnly",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 35857,
                            "src": "19048:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 35959,
                          "nodeType": "IfStatement",
                          "src": "19044:41:129",
                          "trueBody": {
                            "id": 35958,
                            "nodeType": "Block",
                            "src": "19060:25:129",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 35956,
                                  "name": "loanData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35860,
                                  "src": "19072:8:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory_ptr",
                                    "typeString": "struct LoanMaintenance.LoanReturnData memory"
                                  }
                                },
                                "functionReturnParameters": 35861,
                                "id": 35957,
                                "nodeType": "Return",
                                "src": "19065:15:129"
                              }
                            ]
                          }
                        },
                        "id": 35960,
                        "nodeType": "IfStatement",
                        "src": "18775:310:129",
                        "trueBody": {
                          "id": 35954,
                          "nodeType": "Block",
                          "src": "18831:207:129",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 35952,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 35939,
                                      "name": "maxLiquidatable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35930,
                                      "src": "18837:15:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 35940,
                                      "name": "maxSeizable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35933,
                                      "src": "18854:11:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    null
                                  ],
                                  "id": 35941,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "18836:32:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$__$",
                                    "typeString": "tuple(uint256,uint256,)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 35943,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 35863,
                                        "src": "18899:9:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                          "typeString": "struct LoanStruct.Loan memory"
                                        }
                                      },
                                      "id": 35944,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "principal",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4897,
                                      "src": "18899:19:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 35945,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 35863,
                                        "src": "18924:9:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                          "typeString": "struct LoanStruct.Loan memory"
                                        }
                                      },
                                      "id": 35946,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "collateral",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4899,
                                      "src": "18924:20:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 35947,
                                      "name": "currentMargin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35912,
                                      "src": "18950:13:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 35948,
                                        "name": "loanParamsLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 35869,
                                        "src": "18969:15:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                          "typeString": "struct LoanParamsStruct.LoanParams memory"
                                        }
                                      },
                                      "id": 35949,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maintenanceMargin",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4881,
                                      "src": "18969:33:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 35950,
                                      "name": "collateralToLoanRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 35914,
                                      "src": "19008:20:129",
                                      "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"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 35942,
                                    "name": "_getLiquidationAmounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27815,
                                    "src": "18871:22:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,uint256,uint256) view returns (uint256,uint256,uint256)"
                                    }
                                  },
                                  "id": 35951,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18871:162:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256)"
                                  }
                                },
                                "src": "18836:197:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 35953,
                              "nodeType": "ExpressionStatement",
                              "src": "18836:197:129"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 35962,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35853,
                              "src": "19128:6:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35963,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35869,
                                "src": "19151:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 35964,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "19151:25:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35965,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35869,
                                "src": "19199:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 35966,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "19199:31:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35967,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35863,
                                "src": "19247:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 35968,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "principal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4897,
                              "src": "19247:19:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35969,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35863,
                                "src": "19284:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 35970,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4899,
                              "src": "19284:20:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35971,
                                "name": "loanInterestLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35906,
                                "src": "19330:17:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanInterest_$4864_memory_ptr",
                                  "typeString": "struct LoanInterestStruct.LoanInterest memory"
                                }
                              },
                              "id": 35972,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedPerDay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4859,
                              "src": "19330:28:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 35977,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35973,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35863,
                                    "src": "19390:9:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                      "typeString": "struct LoanStruct.Loan memory"
                                    }
                                  },
                                  "id": 35974,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "endTimestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4903,
                                  "src": "19390:22:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 35975,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44984,
                                    "src": "19416:5:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 35976,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "19416:15:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19390:41:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 35991,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19535:1:129",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "id": 35992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "19390:146:129",
                              "trueExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "3836343030",
                                    "id": 35989,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "19521:5:129",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_86400_by_1",
                                      "typeString": "int_const 86400"
                                    },
                                    "value": "86400"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_86400_by_1",
                                      "typeString": "int_const 86400"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 35985,
                                          "name": "loanInterestLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 35906,
                                          "src": "19487:17:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_LoanInterest_$4864_memory_ptr",
                                            "typeString": "struct LoanInterestStruct.LoanInterest memory"
                                          }
                                        },
                                        "id": 35986,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "owedPerDay",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4859,
                                        "src": "19487:28:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 35981,
                                              "name": "block",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44984,
                                              "src": "19466:5:129",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_block",
                                                "typeString": "block"
                                              }
                                            },
                                            "id": 35982,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "timestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "19466:15:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 35978,
                                              "name": "loanLocal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 35863,
                                              "src": "19439:9:129",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                                "typeString": "struct LoanStruct.Loan memory"
                                              }
                                            },
                                            "id": 35979,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "endTimestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4903,
                                            "src": "19439:22:129",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 35980,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42092,
                                          "src": "19439:26:129",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 35983,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "19439:43:129",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 35984,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42153,
                                      "src": "19439:47:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 35987,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19439:77:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 35988,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42169,
                                  "src": "19439:81:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 35990,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19439:88:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35993,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35863,
                                "src": "19553:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 35994,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "startRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4907,
                              "src": "19553:19:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35995,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35863,
                                "src": "19591:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 35996,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "startMargin",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4905,
                              "src": "19591:21:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 35997,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35869,
                                "src": "19637:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 35998,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maintenanceMargin",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4881,
                              "src": "19637:33:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 35999,
                              "name": "currentMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35912,
                              "src": "19691:13:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36000,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35869,
                                "src": "19723:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 36001,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maxLoanTerm",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4883,
                              "src": "19723:27:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36002,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35863,
                                "src": "19770:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 36003,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "endTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4903,
                              "src": "19770:22:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36004,
                              "name": "maxLiquidatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35930,
                              "src": "19815:15:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36005,
                              "name": "maxSeizable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35933,
                              "src": "19849:11:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 35961,
                            "name": "LoanReturnData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34587,
                            "src": "19099:14:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_LoanReturnData_$34587_storage_ptr_$",
                              "typeString": "type(struct LoanMaintenance.LoanReturnData storage pointer)"
                            }
                          },
                          "id": 36006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [
                            "loanId",
                            "loanToken",
                            "collateralToken",
                            "principal",
                            "collateral",
                            "interestOwedPerDay",
                            "interestDepositRemaining",
                            "startRate",
                            "startMargin",
                            "maintenanceMargin",
                            "currentMargin",
                            "maxLoanTerm",
                            "endTimestamp",
                            "maxLiquidatable",
                            "maxSeizable"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "19099:767:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory",
                            "typeString": "struct LoanMaintenance.LoanReturnData memory"
                          }
                        },
                        "functionReturnParameters": 35861,
                        "id": 36007,
                        "nodeType": "Return",
                        "src": "19089:777:129"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to get one loan data structure.\n\t * @param loanId A unique ID representing the loan.\n@param loanType The type of loan.\n  loanType 0: all loans.\n  loanType 1: margin trade loans.\n  loanType 2: non-margin trade loans.\n@param unsafeOnly The safe filter (True/False).\n\t * @return loansData The data structure w/ the loan information.\n",
                  "id": 36009,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getLoan",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 35858,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35853,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 36009,
                        "src": "18026:14:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 35852,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "18026:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35855,
                        "name": "loanType",
                        "nodeType": "VariableDeclaration",
                        "scope": 36009,
                        "src": "18044:16:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35854,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18044:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35857,
                        "name": "unsafeOnly",
                        "nodeType": "VariableDeclaration",
                        "scope": 36009,
                        "src": "18064:15:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 35856,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18064:4:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18022:60:129"
                  },
                  "returnParameters": {
                    "id": 35861,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35860,
                        "name": "loanData",
                        "nodeType": "VariableDeclaration",
                        "scope": 36009,
                        "src": "18106:30:129",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanReturnData_$34587_memory_ptr",
                          "typeString": "struct LoanMaintenance.LoanReturnData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 35859,
                          "name": "LoanReturnData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 34587,
                          "src": "18106:14:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanReturnData_$34587_storage_ptr",
                            "typeString": "struct LoanMaintenance.LoanReturnData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18105:32:129"
                  },
                  "scope": 36073,
                  "src": "18005:1865:129",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 36071,
                    "nodeType": "Block",
                    "src": "20252:902:129",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          36019,
                          null
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 36019,
                            "name": "sourceTokenAmountUsed",
                            "nodeType": "VariableDeclaration",
                            "scope": 36071,
                            "src": "20319:29:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 36018,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20319:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 36036,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36021,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36011,
                                "src": "20372:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 36022,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4889,
                              "src": "20372:12:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36023,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36013,
                                "src": "20390:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 36024,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "20390:31:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36025,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36013,
                                "src": "20427:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 36026,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "20427:25:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36027,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36011,
                                "src": "20458:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 36028,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "borrower",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4909,
                              "src": "20458:18:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36029,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36011,
                                "src": "20482:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 36030,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4899,
                              "src": "20482:20:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 36031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20533:1:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 36032,
                              "name": "depositAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36015,
                              "src": "20596:13:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 36033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20703:4:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 36034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20727:2:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "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_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 36020,
                            "name": "_loanSwap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42843,
                            "src": "20357:9:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (bytes32,address,address,address,uint256,uint256,uint256,bool,bytes memory) returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 36035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20357:395:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20316:436:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 36045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 36037,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36011,
                              "src": "20756:9:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 36039,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "collateral",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4899,
                            "src": "20756:20:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 36043,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36019,
                                "src": "20804:21:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36040,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36011,
                                  "src": "20779:9:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                "id": 36041,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4899,
                                "src": "20779:20:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 36042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "20779:24:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 36044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20779:47:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20756:70:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 36046,
                        "nodeType": "ExpressionStatement",
                        "src": "20756:70:129"
                      },
                      {
                        "assignments": [
                          36048,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 36048,
                            "name": "currentMargin",
                            "nodeType": "VariableDeclaration",
                            "scope": 36071,
                            "src": "20872:21:129",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 36047,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20872:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 36062,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36053,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36013,
                                "src": "20948:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 36054,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "20948:25:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36055,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36013,
                                "src": "20979:15:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 36056,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "20979:31:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36057,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36011,
                                "src": "21016:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 36058,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "principal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4897,
                              "src": "21016:19:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36059,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36011,
                                "src": "21041:9:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 36060,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4899,
                              "src": "21041:20:129",
                              "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_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 36050,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "20914:10:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 36049,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "20902:11:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 36051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20902:23:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 36052,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getCurrentMargin",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8684,
                            "src": "20902:40:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256) view external returns (uint256,uint256)"
                            }
                          },
                          "id": 36061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20902:164:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20871:195:129"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 36067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 36064,
                                "name": "currentMargin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36048,
                                "src": "21078:13:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36065,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36013,
                                  "src": "21094:15:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 36066,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maintenanceMargin",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4881,
                                "src": "21094:33:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "21078:49:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e6865616c74687920706f736974696f6e",
                              "id": 36068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21129:20:129",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a20a6fe43cf061d9638e42e18d63dd0524a0f2893c781dd86909659f7ba13618",
                                "typeString": "literal_string \"unhealthy position\""
                              },
                              "value": "unhealthy position"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a20a6fe43cf061d9638e42e18d63dd0524a0f2893c781dd86909659f7ba13618",
                                "typeString": "literal_string \"unhealthy position\""
                              }
                            ],
                            "id": 36063,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "21070:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 36069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21070:80:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36070,
                        "nodeType": "ExpressionStatement",
                        "src": "21070:80:129"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to collect interest from the collateral.\n\t * @param loanLocal The loan object.\n@param loanParamsLocal The loan parameters.\n@param depositAmount The amount of underlying tokens provided on the loan.\n",
                  "id": 36072,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_doCollateralSwap",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 36016,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36011,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 36072,
                        "src": "20155:22:129",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 36010,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "20155:4:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36013,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 36072,
                        "src": "20181:33:129",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 36012,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "20181:10:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36015,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 36072,
                        "src": "20218:21:129",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36014,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20218:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20151:91:129"
                  },
                  "returnParameters": {
                    "id": 36017,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20252:0:129"
                  },
                  "scope": 36073,
                  "src": "20125:1029:129",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 36074,
              "src": "834:20322:129"
            }
          ],
          "src": "118:21039:129"
        },
        "id": 129
      },
      "contracts/modules/LoanOpenings.sol": {
        "ast": {
          "absolutePath": "contracts/modules/LoanOpenings.sol",
          "exportedSymbols": {
            "LoanOpenings": [
              37635
            ]
          },
          "id": 37636,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 36075,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:130"
            },
            {
              "id": 36076,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "142:33:130"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 36077,
              "nodeType": "ImportDirective",
              "scope": 37636,
              "sourceUnit": 4842,
              "src": "177:27:130",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/LoanOpeningsEvents.sol",
              "file": "../events/LoanOpeningsEvents.sol",
              "id": 36078,
              "nodeType": "ImportDirective",
              "scope": 37636,
              "sourceUnit": 5995,
              "src": "205:42:130",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/VaultController.sol",
              "file": "../mixins/VaultController.sol",
              "id": 36079,
              "nodeType": "ImportDirective",
              "scope": 37636,
              "sourceUnit": 28215,
              "src": "248:39:130",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/InterestUser.sol",
              "file": "../mixins/InterestUser.sol",
              "id": 36080,
              "nodeType": "ImportDirective",
              "scope": 37636,
              "sourceUnit": 27664,
              "src": "288:36:130",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/swaps/SwapsUser.sol",
              "file": "../swaps/SwapsUser.sol",
              "id": 36081,
              "nodeType": "ImportDirective",
              "scope": 37636,
              "sourceUnit": 43250,
              "src": "325:32:130",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/ModuleCommonFunctionalities.sol",
              "file": "../mixins/ModuleCommonFunctionalities.sol",
              "id": 36082,
              "nodeType": "ImportDirective",
              "scope": 37636,
              "sourceUnit": 27833,
              "src": "358:51:130",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 36083,
                    "name": "LoanOpeningsEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5994,
                    "src": "701:18:130",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanOpeningsEvents_$5994",
                      "typeString": "contract LoanOpeningsEvents"
                    }
                  },
                  "id": 36084,
                  "nodeType": "InheritanceSpecifier",
                  "src": "701:18:130"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 36085,
                    "name": "VaultController",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28214,
                    "src": "721:15:130",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VaultController_$28214",
                      "typeString": "contract VaultController"
                    }
                  },
                  "id": 36086,
                  "nodeType": "InheritanceSpecifier",
                  "src": "721:15:130"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 36087,
                    "name": "InterestUser",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27663,
                    "src": "738:12:130",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_InterestUser_$27663",
                      "typeString": "contract InterestUser"
                    }
                  },
                  "id": 36088,
                  "nodeType": "InheritanceSpecifier",
                  "src": "738:12:130"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 36089,
                    "name": "SwapsUser",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 43249,
                    "src": "752:9:130",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SwapsUser_$43249",
                      "typeString": "contract SwapsUser"
                    }
                  },
                  "id": 36090,
                  "nodeType": "InheritanceSpecifier",
                  "src": "752:9:130"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 36091,
                    "name": "ModuleCommonFunctionalities",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27832,
                    "src": "763:27:130",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModuleCommonFunctionalities_$27832",
                      "typeString": "contract ModuleCommonFunctionalities"
                    }
                  },
                  "id": 36092,
                  "nodeType": "InheritanceSpecifier",
                  "src": "763:27:130"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                5832,
                5994,
                6055,
                6341,
                27492,
                27663,
                27832,
                28214,
                41125,
                41798,
                41829,
                43249
              ],
              "contractKind": "contract",
              "documentation": "@title Loan Openings contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains functions to borrow and trade.\n",
              "fullyImplemented": true,
              "id": 37635,
              "linearizedBaseContracts": [
                37635,
                27832,
                43249,
                27663,
                27492,
                5832,
                6341,
                28214,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913,
                5994,
                6055
              ],
              "name": "LoanOpenings",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 36095,
                    "nodeType": "Block",
                    "src": "815:2:130",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 36096,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 36093,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "805:2:130"
                  },
                  "returnParameters": {
                    "id": 36094,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "815:0:130"
                  },
                  "scope": 37635,
                  "src": "794:23:130",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 36103,
                    "nodeType": "Block",
                    "src": "921:38:130",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c6c6261636b206e6f7420616c6c6f776564",
                              "id": 36100,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "932:22:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ad2d1476e23c49655ed3d169418af7587abbe0f378f28c369338d50deee2f5b0",
                                "typeString": "literal_string \"fallback not allowed\""
                              },
                              "value": "fallback not allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_ad2d1476e23c49655ed3d169418af7587abbe0f378f28c369338d50deee2f5b0",
                                "typeString": "literal_string \"fallback not allowed\""
                              }
                            ],
                            "id": 36099,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44999,
                              45000
                            ],
                            "referencedDeclaration": 45000,
                            "src": "925:6:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 36101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "925:30:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36102,
                        "nodeType": "ExpressionStatement",
                        "src": "925:30:130"
                      }
                    ]
                  },
                  "documentation": "@notice Fallback function is to react to receiving value (rBTC).\n",
                  "id": 36104,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 36097,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "909:2:130"
                  },
                  "returnParameters": {
                    "id": 36098,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "921:0:130"
                  },
                  "scope": 37635,
                  "src": "901:58:130",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 36160,
                    "nodeType": "Block",
                    "src": "1142:475:130",
                    "statements": [
                      {
                        "assignments": [
                          36112
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 36112,
                            "name": "prevModuleContractAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 36160,
                            "src": "1146:33:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 36111,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1146:7:130",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 36118,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 36113,
                            "name": "logicTargets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4583,
                            "src": "1182:12:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                              "typeString": "mapping(bytes4 => address)"
                            }
                          },
                          "id": 36117,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36114,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45330,
                                "src": "1195:4:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_LoanOpenings_$37635",
                                  "typeString": "contract LoanOpenings"
                                }
                              },
                              "id": 36115,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "borrowOrTradeFromPool",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 36262,
                              "src": "1195:26:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$_t_bytes32_$_t_bytes32_$_t_bool_$_t_uint256_$_t_array$_t_address_$4_memory_ptr_$_t_array$_t_uint256_$5_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (bytes32,bytes32,bool,uint256,address[4] memory,uint256[5] memory,bytes memory) payable external returns (uint256,uint256)"
                              }
                            },
                            "id": 36116,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1195:35:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1182:49:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1146:85:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36120,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45330,
                                  "src": "1246:4:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanOpenings_$37635",
                                    "typeString": "contract LoanOpenings"
                                  }
                                },
                                "id": 36121,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "borrowOrTradeFromPool",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36262,
                                "src": "1246:26:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$_t_bytes32_$_t_bytes32_$_t_bool_$_t_uint256_$_t_array$_t_address_$4_memory_ptr_$_t_array$_t_uint256_$5_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (bytes32,bytes32,bool,uint256,address[4] memory,uint256[5] memory,bytes memory) payable external returns (uint256,uint256)"
                                }
                              },
                              "id": 36122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1246:35:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36123,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36106,
                              "src": "1283:6:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 36119,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1235:10:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 36124,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1235:55:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36125,
                        "nodeType": "ExpressionStatement",
                        "src": "1235:55:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36127,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45330,
                                  "src": "1305:4:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanOpenings_$37635",
                                    "typeString": "contract LoanOpenings"
                                  }
                                },
                                "id": 36128,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setDelegatedManager",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36293,
                                "src": "1305:24:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_bool_$returns$__$",
                                  "typeString": "function (bytes32,address,bool) external"
                                }
                              },
                              "id": 36129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1305:33:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36130,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36106,
                              "src": "1340:6:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 36126,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1294:10:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 36131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1294:53:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36132,
                        "nodeType": "ExpressionStatement",
                        "src": "1294:53:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36134,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45330,
                                  "src": "1362:4:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanOpenings_$37635",
                                    "typeString": "contract LoanOpenings"
                                  }
                                },
                                "id": 36135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getEstimatedMarginExposure",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36385,
                                "src": "1362:31:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (address,address,uint256,uint256,uint256,uint256) view external returns (uint256)"
                                }
                              },
                              "id": 36136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1362:40:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36137,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36106,
                              "src": "1404:6:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 36133,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1351:10:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 36138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1351:60:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36139,
                        "nodeType": "ExpressionStatement",
                        "src": "1351:60:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36141,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45330,
                                  "src": "1426:4:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanOpenings_$37635",
                                    "typeString": "contract LoanOpenings"
                                  }
                                },
                                "id": 36142,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getRequiredCollateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36439,
                                "src": "1426:26:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (address,address,uint256,uint256,bool) view external returns (uint256)"
                                }
                              },
                              "id": 36143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1426:35:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36144,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36106,
                              "src": "1463:6:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 36140,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1415:10:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 36145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1415:55:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36146,
                        "nodeType": "ExpressionStatement",
                        "src": "1415:55:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36148,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45330,
                                  "src": "1485:4:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanOpenings_$37635",
                                    "typeString": "contract LoanOpenings"
                                  }
                                },
                                "id": 36149,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getBorrowAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36552,
                                "src": "1485:20:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (address,address,uint256,uint256,bool) view external returns (uint256)"
                                }
                              },
                              "id": 36150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1485:29:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36151,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36106,
                              "src": "1516:6:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 36147,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1474:10:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 36152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1474:49:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36153,
                        "nodeType": "ExpressionStatement",
                        "src": "1474:49:130"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 36155,
                              "name": "prevModuleContractAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36112,
                              "src": "1563:25:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36156,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36106,
                              "src": "1590:6:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4c6f616e4f70656e696e6773",
                              "id": 36157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1598:14:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_74259916b14f831402010be7b4f19575450a4933b2bf5c2a9bc0d7880b630bad",
                                "typeString": "literal_string \"LoanOpenings\""
                              },
                              "value": "LoanOpenings"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_74259916b14f831402010be7b4f19575450a4933b2bf5c2a9bc0d7880b630bad",
                                "typeString": "literal_string \"LoanOpenings\""
                              }
                            ],
                            "id": 36154,
                            "name": "ProtocolModuleContractReplaced",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6054,
                            "src": "1532:30:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32)"
                            }
                          },
                          "id": 36158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1532:81:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36159,
                        "nodeType": "EmitStatement",
                        "src": "1527:86:130"
                      }
                    ]
                  },
                  "documentation": "@notice Set function selectors on target contract.\n\t * @param target The address of the target contract.\n",
                  "id": 36161,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 36109,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 36108,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1132:9:130",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1132:9:130"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 36107,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36106,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 36161,
                        "src": "1107:14:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 36105,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1107:7:130",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1106:16:130"
                  },
                  "returnParameters": {
                    "id": 36110,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1142:0:130"
                  },
                  "scope": 37635,
                  "src": "1087:530:130",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 36261,
                    "nodeType": "Block",
                    "src": "3354:785:130",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 36199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 36194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 36191,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "3366:3:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 36192,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3366:9:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 36193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3379:1:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3366:14:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 36198,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 36195,
                                    "name": "loanDataBytes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36179,
                                    "src": "3384:13:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  },
                                  "id": 36196,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3384:20:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 36197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3408:1:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3384:25:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3366:43:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e4461746142797465732072657175697265642077697468206574686572",
                              "id": 36200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3411:35:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e83c2c2234abe5888e4b08f6ae7169501429d2f3eddaf0290aac5e0353bfbe54",
                                "typeString": "literal_string \"loanDataBytes required with ether\""
                              },
                              "value": "loanDataBytes required with ether"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e83c2c2234abe5888e4b08f6ae7169501429d2f3eddaf0290aac5e0353bfbe54",
                                "typeString": "literal_string \"loanDataBytes required with ether\""
                              }
                            ],
                            "id": 36190,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3358:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 36201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3358:89:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36202,
                        "nodeType": "ExpressionStatement",
                        "src": "3358:89:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 36211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 36204,
                                  "name": "loanPoolToUnderlying",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4702,
                                  "src": "3495:20:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                  }
                                },
                                "id": 36207,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 36205,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "3516:3:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 36206,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3516:10:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3495:32:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 36209,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3539:1:130",
                                    "subdenomination": null,
                                    "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": 36208,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3531:7:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 36210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3531:10:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3495:46:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6e6f7420617574686f72697a6564",
                              "id": 36212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3543:16:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8aed0440c9cacb4460ecdd12f6aff03c27cace39666d71f0946a6f3e9022a4a1",
                                "typeString": "literal_string \"not authorized\""
                              },
                              "value": "not authorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8aed0440c9cacb4460ecdd12f6aff03c27cace39666d71f0946a6f3e9022a4a1",
                                "typeString": "literal_string \"not authorized\""
                              }
                            ],
                            "id": 36203,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3487:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 36213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3487:73:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36214,
                        "nodeType": "ExpressionStatement",
                        "src": "3487:73:130"
                      },
                      {
                        "assignments": [
                          36216
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 36216,
                            "name": "loanParamsLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 36261,
                            "src": "3565:33:130",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 36215,
                              "name": "LoanParams",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4884,
                              "src": "3565:10:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 36220,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 36217,
                            "name": "loanParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4591,
                            "src": "3601:10:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                            }
                          },
                          "id": 36219,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 36218,
                            "name": "loanParamsId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36163,
                            "src": "3612:12:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3601:24:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                            "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3565:60:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 36225,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36222,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36216,
                                  "src": "3637:15:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 36223,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4869,
                                "src": "3637:18:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 36224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3659:1:130",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3637:23:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e506172616d73206e6f7420657869737473",
                              "id": 36226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3662:23:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a3a351ffb3aff816f1d84605072e229d1a4a2e9f6fc60ffe610fb65286941553",
                                "typeString": "literal_string \"loanParams not exists\""
                              },
                              "value": "loanParams not exists"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a3a351ffb3aff816f1d84605072e229d1a4a2e9f6fc60ffe610fb65286941553",
                                "typeString": "literal_string \"loanParams not exists\""
                              }
                            ],
                            "id": 36221,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3629:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 36227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3629:57:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36228,
                        "nodeType": "ExpressionStatement",
                        "src": "3629:57:130"
                      },
                      {
                        "assignments": [
                          36230
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 36230,
                            "name": "collateralAmountRequired",
                            "nodeType": "VariableDeclaration",
                            "scope": 36261,
                            "src": "3722:32:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 36229,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3722:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 36242,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36232,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36216,
                                "src": "3783:15:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 36233,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "3783:25:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36234,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36216,
                                "src": "3810:15:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 36235,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "3810:31:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 36236,
                                "name": "sentValues",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36177,
                                "src": "3843:10:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$5_calldata_ptr",
                                  "typeString": "uint256[5] calldata"
                                }
                              },
                              "id": 36238,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 36237,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3854:1:130",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3843:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36239,
                              "name": "initialMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36169,
                              "src": "3858:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36240,
                              "name": "isTorqueLoan",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36167,
                              "src": "3873:12:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 36231,
                            "name": "_getRequiredCollateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37634,
                            "src": "3760:22:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,bool) view returns (uint256)"
                            }
                          },
                          "id": 36241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3760:126:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3722:164:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 36246,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 36244,
                                "name": "collateralAmountRequired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36230,
                                "src": "3898:24:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 36245,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3926:1:130",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3898:29:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "636f6c6c61746572616c2069732030",
                              "id": 36247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3929:17:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_895a8683902edecae1331912e905cd545f2548681fcdc937f537839705d06702",
                                "typeString": "literal_string \"collateral is 0\""
                              },
                              "value": "collateral is 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_895a8683902edecae1331912e905cd545f2548681fcdc937f537839705d06702",
                                "typeString": "literal_string \"collateral is 0\""
                              }
                            ],
                            "id": 36243,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3890:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 36248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3890:57:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36249,
                        "nodeType": "ExpressionStatement",
                        "src": "3890:57:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 36251,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36216,
                              "src": "3982:15:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36252,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36165,
                              "src": "4003:6:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36253,
                              "name": "isTorqueLoan",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36167,
                              "src": "4015:12:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36254,
                              "name": "collateralAmountRequired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36230,
                              "src": "4033:24:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36255,
                              "name": "initialMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36169,
                              "src": "4063:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36256,
                              "name": "sentAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36173,
                              "src": "4082:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_calldata_ptr",
                                "typeString": "address[4] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36257,
                              "name": "sentValues",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36177,
                              "src": "4101:10:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_calldata_ptr",
                                "typeString": "uint256[5] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36258,
                              "name": "loanDataBytes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36179,
                              "src": "4117:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$4_calldata_ptr",
                                "typeString": "address[4] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$5_calldata_ptr",
                                "typeString": "uint256[5] calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 36250,
                            "name": "_borrowOrTrade",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36814,
                            "src": "3962:14:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanParams_$4884_memory_ptr_$_t_bytes32_$_t_bool_$_t_uint256_$_t_uint256_$_t_array$_t_address_$4_memory_ptr_$_t_array$_t_uint256_$5_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (struct LoanParamsStruct.LoanParams memory,bytes32,bool,uint256,uint256,address[4] memory,uint256[5] memory,bytes memory) returns (uint256,uint256)"
                            }
                          },
                          "id": 36259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3962:173:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 36189,
                        "id": 36260,
                        "nodeType": "Return",
                        "src": "3952:183:130"
                      }
                    ]
                  },
                  "documentation": "@notice Borrow or trade from pool.\n\t * @dev Note: Only callable by loan pools (iTokens).\nWrapper to _borrowOrTrade internal function.\n\t * @param loanParamsId The ID of the loan parameters.\n@param loanId The ID of the loan. If 0, start a new loan.\n@param isTorqueLoan Whether the loan is a Torque loan.\n@param initialMargin The initial amount of margin.\n@param sentAddresses The addresses to send tokens: lender, borrower,\n  receiver and manager:\n    lender: must match loan if loanId provided.\n    borrower: must match loan if loanId provided.\n    receiver: receiver of funds (address(0) assumes borrower address).\n    manager: delegated manager of loan unless address(0).\n@param sentValues The values to send:\n    newRate: New loan interest rate.\n    newPrincipal: New loan size (borrowAmount + any borrowed interest).\n    torqueInterest: New amount of interest to escrow for Torque loan (determines initial loan length).\n    loanTokenReceived: Total loanToken deposit (amount not sent to borrower in the case of Torque loans).\n    collateralTokenReceived: Total collateralToken deposit.\n@param loanDataBytes The payload for the call. These loan DataBytes are\n  additional loan data (not in use for token swaps).\n\t * @return newPrincipal The new loan size.\n@return newCollateral The new collateral amount.\n",
                  "id": 36262,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 36182,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 36181,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "3273:12:130",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3273:12:130"
                    },
                    {
                      "arguments": null,
                      "id": 36184,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 36183,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "3286:13:130",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3286:13:130"
                    }
                  ],
                  "name": "borrowOrTradeFromPool",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 36180,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36163,
                        "name": "loanParamsId",
                        "nodeType": "VariableDeclaration",
                        "scope": 36262,
                        "src": "3065:20:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 36162,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3065:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36165,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 36262,
                        "src": "3089:14:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 36164,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3089:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36167,
                        "name": "isTorqueLoan",
                        "nodeType": "VariableDeclaration",
                        "scope": 36262,
                        "src": "3107:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 36166,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3107:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36169,
                        "name": "initialMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 36262,
                        "src": "3128:21:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36168,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3128:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36173,
                        "name": "sentAddresses",
                        "nodeType": "VariableDeclaration",
                        "scope": 36262,
                        "src": "3153:33:130",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$4_calldata_ptr",
                          "typeString": "address[4]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 36170,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3153:7:130",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 36172,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 36171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3161:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "3153:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$4_storage_ptr",
                            "typeString": "address[4]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36177,
                        "name": "sentValues",
                        "nodeType": "VariableDeclaration",
                        "scope": 36262,
                        "src": "3190:30:130",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$5_calldata_ptr",
                          "typeString": "uint256[5]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 36174,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3190:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 36176,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 36175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3198:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "3190:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                            "typeString": "uint256[5]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36179,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 36262,
                        "src": "3224:28:130",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 36178,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3224:5:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3061:194:130"
                  },
                  "returnParameters": {
                    "id": 36189,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36186,
                        "name": "newPrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 36262,
                        "src": "3309:20:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36185,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3309:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36188,
                        "name": "newCollateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 36262,
                        "src": "3331:21:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36187,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3331:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3308:45:130"
                  },
                  "scope": 37635,
                  "src": "3031:1108:130",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 36292,
                    "nodeType": "Block",
                    "src": "4557:133:130",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 36280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 36274,
                                    "name": "loans",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4587,
                                    "src": "4569:5:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                                      "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                                    }
                                  },
                                  "id": 36276,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 36275,
                                    "name": "loanId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36264,
                                    "src": "4575:6:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4569:13:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage",
                                    "typeString": "struct LoanStruct.Loan storage ref"
                                  }
                                },
                                "id": 36277,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "borrower",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4909,
                                "src": "4569:22:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36278,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "4595:3:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 36279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4595:10:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4569:36:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 36281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4607:14:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 36273,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4561:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 36282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4561:61:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36283,
                        "nodeType": "ExpressionStatement",
                        "src": "4561:61:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 36285,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36264,
                              "src": "4648:6:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36286,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "4656:3:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 36287,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4656:10:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36288,
                              "name": "delegated",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36266,
                              "src": "4668:9:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36289,
                              "name": "toggle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36268,
                              "src": "4679:6:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 36284,
                            "name": "_setDelegatedManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37045,
                            "src": "4627:20:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (bytes32,address,address,bool)"
                            }
                          },
                          "id": 36290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4627:59:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36291,
                        "nodeType": "ExpressionStatement",
                        "src": "4627:59:130"
                      }
                    ]
                  },
                  "documentation": "@notice Set the delegated manager.\n\t * @dev Wrapper for _setDelegatedManager internal function.\n\t * @param loanId The ID of the loan. If 0, start a new loan.\n@param delegated The address of the delegated manager.\n@param toggle The flag true/false for the delegated manager.\n",
                  "id": 36293,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 36271,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 36270,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "4543:13:130",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4543:13:130"
                    }
                  ],
                  "name": "setDelegatedManager",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 36269,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36264,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 36293,
                        "src": "4480:14:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 36263,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4480:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36266,
                        "name": "delegated",
                        "nodeType": "VariableDeclaration",
                        "scope": 36293,
                        "src": "4498:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 36265,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4498:7:130",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36268,
                        "name": "toggle",
                        "nodeType": "VariableDeclaration",
                        "scope": 36293,
                        "src": "4519:11:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 36267,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4519:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4476:57:130"
                  },
                  "returnParameters": {
                    "id": 36272,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4557:0:130"
                  },
                  "scope": 37635,
                  "src": "4448:242:130",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 36384,
                    "nodeType": "Block",
                    "src": "5739:587:130",
                    "statements": [
                      {
                        "assignments": [
                          36311
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 36311,
                            "name": "maxLoanTerm",
                            "nodeType": "VariableDeclaration",
                            "scope": 36384,
                            "src": "5743:19:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 36310,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5743:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 36313,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "32343139323030",
                          "id": 36312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5765:7:130",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2419200_by_1",
                            "typeString": "int_const 2419200"
                          },
                          "value": "2419200"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5743:29:130"
                      },
                      {
                        "assignments": [
                          36315
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 36315,
                            "name": "owedPerDay",
                            "nodeType": "VariableDeclaration",
                            "scope": 36384,
                            "src": "5788:18:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 36314,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5788:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 36327,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_36500000000000000000000_by_1",
                                "typeString": "int_const 36500000000000000000000"
                              },
                              "id": 36325,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "333635",
                                "id": 36321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5844:3:130",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_365_by_1",
                                  "typeString": "int_const 365"
                                },
                                "value": "365"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "id": 36324,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 36322,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5850:2:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3230",
                                  "id": 36323,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5854:2:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "5850:6:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              },
                              "src": "5844:12:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_36500000000000000000000_by_1",
                                "typeString": "int_const 36500000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_36500000000000000000000_by_1",
                                "typeString": "int_const 36500000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 36318,
                                  "name": "interestRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36303,
                                  "src": "5826:12:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36316,
                                  "name": "newPrincipal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36305,
                                  "src": "5809:12:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 36317,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "5809:16:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 36319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5809:30:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 36320,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "5809:34:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 36326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5809:48:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5788:69:130"
                      },
                      {
                        "assignments": [
                          36329
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 36329,
                            "name": "interestAmountRequired",
                            "nodeType": "VariableDeclaration",
                            "scope": 36384,
                            "src": "5862:30:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 36328,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5862:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 36337,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3836343030",
                              "id": 36335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5927:5:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              },
                              "value": "86400"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_86400_by_1",
                                "typeString": "int_const 86400"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 36332,
                                  "name": "owedPerDay",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36315,
                                  "src": "5911:10:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36330,
                                  "name": "maxLoanTerm",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36311,
                                  "src": "5895:11:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 36331,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "5895:15:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 36333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5895:27:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 36334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "5895:31:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 36336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5895:38:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5862:71:130"
                      },
                      {
                        "assignments": [
                          36339
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 36339,
                            "name": "swapAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 36384,
                            "src": "5938:18:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 36338,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5938:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 36344,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 36342,
                              "name": "interestAmountRequired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36329,
                              "src": "5977:22:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 36340,
                              "name": "loanTokenSent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36299,
                              "src": "5959:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 36341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42092,
                            "src": "5959:17:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 36343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5959:41:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5938:62:130"
                      },
                      {
                        "assignments": [
                          36346
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 36346,
                            "name": "tradingFee",
                            "nodeType": "VariableDeclaration",
                            "scope": 36384,
                            "src": "6004:18:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 36345,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6004:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 36350,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 36348,
                              "name": "swapAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36339,
                              "src": "6040:10:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 36347,
                            "name": "_getTradingFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27072,
                            "src": "6025:14:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 36349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6025:26:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6004:47:130"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 36353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 36351,
                            "name": "tradingFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36346,
                            "src": "6059:10:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 36352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6073:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6059:15:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 36362,
                        "nodeType": "IfStatement",
                        "src": "6055:70:130",
                        "trueBody": {
                          "id": 36361,
                          "nodeType": "Block",
                          "src": "6076:49:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 36359,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 36354,
                                  "name": "swapAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36339,
                                  "src": "6081:10:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 36357,
                                      "name": "tradingFee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36346,
                                      "src": "6109:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36355,
                                      "name": "swapAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36339,
                                      "src": "6094:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 36356,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "6094:14:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 36358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6094:26:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6081:39:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 36360,
                              "nodeType": "ExpressionStatement",
                              "src": "6081:39:130"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          36364
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 36364,
                            "name": "receivedAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 36384,
                            "src": "6129:22:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 36363,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6129:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 36370,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 36366,
                              "name": "loanToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36295,
                              "src": "6175:9:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36367,
                              "name": "collateralToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36297,
                              "src": "6186:15:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36368,
                              "name": "swapAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36339,
                              "src": "6203:10:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 36365,
                            "name": "_swapsExpectedReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43199,
                            "src": "6154:20:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,address,uint256) view returns (uint256)"
                            }
                          },
                          "id": 36369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6154:60:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6129:85:130"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 36373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 36371,
                            "name": "receivedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36364,
                            "src": "6222:14:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 36372,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6240:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6222:19:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 36382,
                          "nodeType": "Block",
                          "src": "6267:56:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 36379,
                                    "name": "receivedAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36364,
                                    "src": "6303:14:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 36377,
                                    "name": "collateralTokenSent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36301,
                                    "src": "6279:19:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 36378,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42076,
                                  "src": "6279:23:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 36380,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6279:39:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 36309,
                              "id": 36381,
                              "nodeType": "Return",
                              "src": "6272:46:130"
                            }
                          ]
                        },
                        "id": 36383,
                        "nodeType": "IfStatement",
                        "src": "6218:105:130",
                        "trueBody": {
                          "id": 36376,
                          "nodeType": "Block",
                          "src": "6243:18:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 36374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6255:1:130",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 36309,
                              "id": 36375,
                              "nodeType": "Return",
                              "src": "6248:8:130"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Get the estimated margin exposure.\n\t * Margin is the money borrowed from a broker to purchase an investment\nand is the difference between the total value of investment and the\nloan amount. Margin trading refers to the practice of using borrowed\nfunds from a broker to trade a financial asset, which forms the\ncollateral for the loan from the broker.\n\t * @param loanToken The loan token instance address.\n@param collateralToken The collateral token instance address.\n@param loanTokenSent The amount of loan tokens sent.\n@param collateralTokenSent The amount of collateral tokens sent.\n@param interestRate The interest rate. Percentage w/ 18 decimals.\n@param newPrincipal The updated amount of principal (current debt).\n\t * @return The margin exposure.\n",
                  "id": 36385,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getEstimatedMarginExposure",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 36306,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36295,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 36385,
                        "src": "5555:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 36294,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5555:7:130",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36297,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 36385,
                        "src": "5576:23:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 36296,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5576:7:130",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36299,
                        "name": "loanTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 36385,
                        "src": "5603:21:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36298,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5603:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36301,
                        "name": "collateralTokenSent",
                        "nodeType": "VariableDeclaration",
                        "scope": 36385,
                        "src": "5628:27:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36300,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5628:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36303,
                        "name": "interestRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 36385,
                        "src": "5659:20:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36302,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5659:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36305,
                        "name": "newPrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 36385,
                        "src": "5683:20:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36304,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5683:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5551:155:130"
                  },
                  "returnParameters": {
                    "id": 36309,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36308,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 36385,
                        "src": "5730:7:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36307,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5730:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5729:9:130"
                  },
                  "scope": 37635,
                  "src": "5516:810:130",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 36438,
                    "nodeType": "Block",
                    "src": "7033:788:130",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 36402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 36400,
                            "name": "marginAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36393,
                            "src": "7041:12:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 36401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7057:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7041:17:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 36437,
                        "nodeType": "IfStatement",
                        "src": "7037:781:130",
                        "trueBody": {
                          "id": 36436,
                          "nodeType": "Block",
                          "src": "7060:758:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 36411,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 36403,
                                  "name": "collateralAmountRequired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36398,
                                  "src": "7065:24:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 36405,
                                      "name": "loanToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36387,
                                      "src": "7115:9:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 36406,
                                      "name": "collateralToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36389,
                                      "src": "7126:15:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 36407,
                                      "name": "newPrincipal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36391,
                                      "src": "7143:12:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 36408,
                                      "name": "marginAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36393,
                                      "src": "7157:12:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 36409,
                                      "name": "isTorqueLoan",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36395,
                                      "src": "7171:12:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 36404,
                                    "name": "_getRequiredCollateral",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37634,
                                    "src": "7092:22:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (address,address,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 36410,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7092:92:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7065:119:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 36412,
                              "nodeType": "ExpressionStatement",
                              "src": "7065:119:130"
                            },
                            {
                              "assignments": [
                                36414
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 36414,
                                  "name": "fee",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 36436,
                                  "src": "7609:11:130",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 36413,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7609:7:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 36423,
                              "initialValue": {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "id": 36415,
                                  "name": "isTorqueLoan",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36395,
                                  "src": "7623:12:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 36420,
                                      "name": "collateralAmountRequired",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36398,
                                      "src": "7698:24:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 36419,
                                    "name": "_getTradingFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27072,
                                    "src": "7683:14:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 36421,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7683:40:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 36422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "7623:100:130",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 36417,
                                      "name": "collateralAmountRequired",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36398,
                                      "src": "7655:24:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 36416,
                                    "name": "_getBorrowingFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27108,
                                    "src": "7638:16:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 36418,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7638:42:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7609:114:130"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 36426,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 36424,
                                  "name": "fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36414,
                                  "src": "7732:3:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 36425,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7739:1:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7732:8:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 36435,
                              "nodeType": "IfStatement",
                              "src": "7728:86:130",
                              "trueBody": {
                                "id": 36434,
                                "nodeType": "Block",
                                "src": "7742:72:130",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36432,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 36427,
                                        "name": "collateralAmountRequired",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36398,
                                        "src": "7748:24:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 36430,
                                            "name": "fee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 36414,
                                            "src": "7804:3:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 36428,
                                            "name": "collateralAmountRequired",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 36398,
                                            "src": "7775:24:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 36429,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "7775:28:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 36431,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7775:33:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7748:60:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 36433,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7748:60:130"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Get the required collateral.\n\t * @dev Calls internal _getRequiredCollateral and add fees.\n\t * @param loanToken The loan token instance address.\n@param collateralToken The collateral token instance address.\n@param newPrincipal The updated amount of principal (current debt).\n@param marginAmount The amount of margin of the trade.\n@param isTorqueLoan Whether the loan is a Torque loan.\n\t * @return collateralAmountRequired The required collateral.\n",
                  "id": 36439,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRequiredCollateral",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 36396,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36387,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 36439,
                        "src": "6861:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 36386,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6861:7:130",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36389,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 36439,
                        "src": "6882:23:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 36388,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6882:7:130",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36391,
                        "name": "newPrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 36439,
                        "src": "6909:20:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36390,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6909:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36393,
                        "name": "marginAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 36439,
                        "src": "6933:20:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36392,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6933:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36395,
                        "name": "isTorqueLoan",
                        "nodeType": "VariableDeclaration",
                        "scope": 36439,
                        "src": "6957:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 36394,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6957:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6857:120:130"
                  },
                  "returnParameters": {
                    "id": 36399,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36398,
                        "name": "collateralAmountRequired",
                        "nodeType": "VariableDeclaration",
                        "scope": 36439,
                        "src": "6999:32:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36397,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6999:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6998:34:130"
                  },
                  "scope": 37635,
                  "src": "6827:994:130",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 36551,
                    "nodeType": "Block",
                    "src": "8722:1142:130",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 36456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 36454,
                            "name": "marginAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36447,
                            "src": "8730:12:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 36455,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8746:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8730:17:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 36550,
                        "nodeType": "IfStatement",
                        "src": "8726:1135:130",
                        "trueBody": {
                          "id": 36549,
                          "nodeType": "Block",
                          "src": "8749:1112:130",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 36457,
                                "name": "isTorqueLoan",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36449,
                                "src": "8758:12:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 36468,
                              "nodeType": "IfStatement",
                              "src": "8754:110:130",
                              "trueBody": {
                                "id": 36467,
                                "nodeType": "Block",
                                "src": "8772:92:130",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36465,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 36458,
                                        "name": "marginAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36447,
                                        "src": "8778:12:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            },
                                            "id": 36463,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3130",
                                              "id": 36461,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "8810:2:130",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                              },
                                              "value": "10"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "**",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3230",
                                              "id": 36462,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "8814:2:130",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_20_by_1",
                                                "typeString": "int_const 20"
                                              },
                                              "value": "20"
                                            },
                                            "src": "8810:6:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 36459,
                                            "name": "marginAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 36447,
                                            "src": "8793:12:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 36460,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "8793:16:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 36464,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8793:24:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8778:39:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 36466,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8778:39:130"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                36470
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 36470,
                                  "name": "collateral",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 36549,
                                  "src": "8868:18:130",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 36469,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8868:7:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 36472,
                              "initialValue": {
                                "argumentTypes": null,
                                "id": 36471,
                                "name": "collateralTokenAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36445,
                                "src": "8889:21:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8868:42:130"
                            },
                            {
                              "assignments": [
                                36474
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 36474,
                                  "name": "fee",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 36549,
                                  "src": "8915:11:130",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 36473,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8915:7:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 36483,
                              "initialValue": {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "id": 36475,
                                  "name": "isTorqueLoan",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36449,
                                  "src": "8929:12:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 36480,
                                      "name": "collateral",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36470,
                                      "src": "8990:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 36479,
                                    "name": "_getTradingFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27072,
                                    "src": "8975:14:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 36481,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8975:26:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 36482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "8929:72:130",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 36477,
                                      "name": "collateral",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36470,
                                      "src": "8961:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 36476,
                                    "name": "_getBorrowingFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27108,
                                    "src": "8944:16:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 36478,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8944:28:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8915:86:130"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 36486,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 36484,
                                  "name": "fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36474,
                                  "src": "9010:3:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 36485,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9017:1:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9010:8:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 36495,
                              "nodeType": "IfStatement",
                              "src": "9006:58:130",
                              "trueBody": {
                                "id": 36494,
                                "nodeType": "Block",
                                "src": "9020:44:130",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36492,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 36487,
                                        "name": "collateral",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36470,
                                        "src": "9026:10:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 36490,
                                            "name": "fee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 36474,
                                            "src": "9054:3:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 36488,
                                            "name": "collateral",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 36470,
                                            "src": "9039:10:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 36489,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42092,
                                          "src": "9039:14:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 36491,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9039:19:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9026:32:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 36493,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9026:32:130"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 36498,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 36496,
                                  "name": "loanToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36441,
                                  "src": "9072:9:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 36497,
                                  "name": "collateralToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36443,
                                  "src": "9085:15:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "9072:28:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 36547,
                                "nodeType": "Block",
                                "src": "9175:288:130",
                                "statements": [
                                  {
                                    "assignments": [
                                      36513,
                                      36515
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 36513,
                                        "name": "sourceToDestRate",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 36547,
                                        "src": "9182:24:130",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 36512,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9182:7:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 36515,
                                        "name": "sourceToDestPrecision",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 36547,
                                        "src": "9208:29:130",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 36514,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9208:7:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 36523,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 36520,
                                          "name": "collateralToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 36443,
                                          "src": "9275:15:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 36521,
                                          "name": "loanToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 36441,
                                          "src": "9292:9:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 36517,
                                              "name": "priceFeeds",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4575,
                                              "src": "9253:10:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 36516,
                                            "name": "IPriceFeeds",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8707,
                                            "src": "9241:11:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                              "typeString": "type(contract IPriceFeeds)"
                                            }
                                          },
                                          "id": 36518,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "9241:23:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                            "typeString": "contract IPriceFeeds"
                                          }
                                        },
                                        "id": 36519,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "queryRate",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 8595,
                                        "src": "9241:33:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                          "typeString": "function (address,address) view external returns (uint256,uint256)"
                                        }
                                      },
                                      "id": 36522,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9241:61:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9181:121:130"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 36526,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 36524,
                                        "name": "sourceToDestPrecision",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36515,
                                        "src": "9312:21:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 36525,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9337:1:130",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "9312:26:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 36546,
                                    "nodeType": "IfStatement",
                                    "src": "9308:150:130",
                                    "trueBody": {
                                      "id": 36545,
                                      "nodeType": "Block",
                                      "src": "9340:118:130",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 36543,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "id": 36527,
                                              "name": "borrowAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 36452,
                                              "src": "9347:12:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 36541,
                                                  "name": "sourceToDestPrecision",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 36515,
                                                  "src": "9429:21:130",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "id": 36538,
                                                      "name": "marginAmount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 36447,
                                                      "src": "9411:12:130",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 36535,
                                                          "name": "sourceToDestRate",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 36513,
                                                          "src": "9389:16:130",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "arguments": [
                                                            {
                                                              "argumentTypes": null,
                                                              "commonType": {
                                                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                                "typeString": "int_const 100000000000000000000"
                                                              },
                                                              "id": 36532,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "lValueRequested": false,
                                                              "leftExpression": {
                                                                "argumentTypes": null,
                                                                "hexValue": "3130",
                                                                "id": 36530,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "9377:2:130",
                                                                "subdenomination": null,
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_rational_10_by_1",
                                                                  "typeString": "int_const 10"
                                                                },
                                                                "value": "10"
                                                              },
                                                              "nodeType": "BinaryOperation",
                                                              "operator": "**",
                                                              "rightExpression": {
                                                                "argumentTypes": null,
                                                                "hexValue": "3230",
                                                                "id": 36531,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "9381:2:130",
                                                                "subdenomination": null,
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_rational_20_by_1",
                                                                  "typeString": "int_const 20"
                                                                },
                                                                "value": "20"
                                                              },
                                                              "src": "9377:6:130",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                                "typeString": "int_const 100000000000000000000"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                                "typeString": "int_const 100000000000000000000"
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": null,
                                                              "id": 36528,
                                                              "name": "collateral",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 36470,
                                                              "src": "9362:10:130",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "id": 36529,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "mul",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 42153,
                                                            "src": "9362:14:130",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                            }
                                                          },
                                                          "id": 36533,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "9362:22:130",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 36534,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 42153,
                                                        "src": "9362:26:130",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                      },
                                                      "id": 36536,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "9362:44:130",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 36537,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "div",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 42169,
                                                    "src": "9362:48:130",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                  },
                                                  "id": 36539,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "9362:62:130",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 36540,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "div",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 42169,
                                                "src": "9362:66:130",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 36542,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "9362:89:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "9347:104:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 36544,
                                          "nodeType": "ExpressionStatement",
                                          "src": "9347:104:130"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 36548,
                              "nodeType": "IfStatement",
                              "src": "9068:395:130",
                              "trueBody": {
                                "id": 36511,
                                "nodeType": "Block",
                                "src": "9102:67:130",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36509,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 36499,
                                        "name": "borrowAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36452,
                                        "src": "9108:12:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 36507,
                                            "name": "marginAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 36447,
                                            "src": "9150:12:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                  "typeString": "int_const 100000000000000000000"
                                                },
                                                "id": 36504,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "3130",
                                                  "id": 36502,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "9138:2:130",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                  },
                                                  "value": "10"
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "**",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "3230",
                                                  "id": 36503,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "9142:2:130",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_20_by_1",
                                                    "typeString": "int_const 20"
                                                  },
                                                  "value": "20"
                                                },
                                                "src": "9138:6:130",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                  "typeString": "int_const 100000000000000000000"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                  "typeString": "int_const 100000000000000000000"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 36500,
                                                "name": "collateral",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 36470,
                                                "src": "9123:10:130",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 36501,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 42153,
                                              "src": "9123:14:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 36505,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9123:22:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 36506,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "div",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42169,
                                          "src": "9123:26:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 36508,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9123:40:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9108:55:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 36510,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9108:55:130"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Get the borrow amount of a trade loan.\n\t * @dev Basically borrowAmount = collateral / marginAmount\n\t * Collateral is something that helps secure a loan. When you borrow money,\nyou agree that your lender can take something and sell it to get their\nmoney back if you fail to repay the loan. That's the collateral.\n\t * @param loanToken The loan token instance address.\n@param collateralToken The collateral token instance address.\n@param collateralTokenAmount The amount of collateral.\n@param marginAmount The amount of margin of the trade.\n@param isTorqueLoan Whether the loan is a Torque loan.\n\t * @return borrowAmount The borrow amount.\n",
                  "id": 36552,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBorrowAmount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 36450,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36441,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 36552,
                        "src": "8553:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 36440,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8553:7:130",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36443,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 36552,
                        "src": "8574:23:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 36442,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8574:7:130",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36445,
                        "name": "collateralTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 36552,
                        "src": "8601:29:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36444,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8601:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36447,
                        "name": "marginAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 36552,
                        "src": "8634:20:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36446,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8634:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36449,
                        "name": "isTorqueLoan",
                        "nodeType": "VariableDeclaration",
                        "scope": 36552,
                        "src": "8658:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 36448,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8658:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8549:129:130"
                  },
                  "returnParameters": {
                    "id": 36453,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36452,
                        "name": "borrowAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 36552,
                        "src": "8700:20:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36451,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8700:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8699:22:130"
                  },
                  "scope": 37635,
                  "src": "8525:1339:130",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 36813,
                    "nodeType": "Block",
                    "src": "11495:2889:130",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 36584,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36580,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36554,
                                  "src": "11507:15:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 36581,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateralToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4877,
                                "src": "11507:31:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36582,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36554,
                                  "src": "11542:15:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 36583,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "loanToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4875,
                                "src": "11542:25:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "11507:60:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "636f6c6c61746572616c2f6c6f616e206d61746368",
                              "id": 36585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11569:23:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3c540d53619f984b8fb91b7c28c604c0c8a04f2b0b36e64dee6793558b494ba4",
                                "typeString": "literal_string \"collateral/loan match\""
                              },
                              "value": "collateral/loan match"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3c540d53619f984b8fb91b7c28c604c0c8a04f2b0b36e64dee6793558b494ba4",
                                "typeString": "literal_string \"collateral/loan match\""
                              }
                            ],
                            "id": 36579,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11499:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 36586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11499:94:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36587,
                        "nodeType": "ExpressionStatement",
                        "src": "11499:94:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 36592,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 36589,
                                "name": "initialMargin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36562,
                                "src": "11605:13:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36590,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36554,
                                  "src": "11622:15:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 36591,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "minInitialMargin",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4879,
                                "src": "11622:32:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11605:49:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e697469616c4d617267696e20746f6f206c6f77",
                              "id": 36593,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11656:23:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f568d5ecb3617121b42dcc8a97ed420529726fc3e53f2b3192d0c5da45fe257c",
                                "typeString": "literal_string \"initialMargin too low\""
                              },
                              "value": "initialMargin too low"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f568d5ecb3617121b42dcc8a97ed420529726fc3e53f2b3192d0c5da45fe257c",
                                "typeString": "literal_string \"initialMargin too low\""
                              }
                            ],
                            "id": 36588,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11597:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 36594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11597:83:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36595,
                        "nodeType": "ExpressionStatement",
                        "src": "11597:83:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 36606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 36600,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 36597,
                                    "name": "loanParamsLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36554,
                                    "src": "11782:15:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams memory"
                                    }
                                  },
                                  "id": 36598,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maxLoanTerm",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4883,
                                  "src": "11782:27:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 36599,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11813:1:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "11782:32:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 36605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 36601,
                                    "name": "sentValues",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36570,
                                    "src": "11818:10:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                      "typeString": "uint256[5] memory"
                                    }
                                  },
                                  "id": 36603,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 36602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11829:1:130",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11818:13:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 36604,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11835:1:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "11818:18:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "11782:54:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e76616c696420696e746572657374",
                              "id": 36607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11860:18:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2191bc31f7fe5f6a35ff15ed1a572d8587cfb2bd1ff8a093a18d7db0ddebd09f",
                                "typeString": "literal_string \"invalid interest\""
                              },
                              "value": "invalid interest"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2191bc31f7fe5f6a35ff15ed1a572d8587cfb2bd1ff8a093a18d7db0ddebd09f",
                                "typeString": "literal_string \"invalid interest\""
                              }
                            ],
                            "id": 36596,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11770:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 36608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11770:112:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36609,
                        "nodeType": "ExpressionStatement",
                        "src": "11770:112:130"
                      },
                      {
                        "assignments": [
                          36611
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 36611,
                            "name": "loanLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 36813,
                            "src": "11910:22:130",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                              "typeString": "struct LoanStruct.Loan"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 36610,
                              "name": "Loan",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4912,
                              "src": "11910:4:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 36621,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 36612,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4587,
                            "src": "11935:5:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                            }
                          },
                          "id": 36620,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 36614,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36554,
                                "src": "11957:15:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 36615,
                                "name": "loanId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36556,
                                "src": "11974:6:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 36616,
                                "name": "initialMargin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36562,
                                "src": "11982:13:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 36617,
                                "name": "sentAddresses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36566,
                                "src": "11997:13:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                  "typeString": "address[4] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 36618,
                                "name": "sentValues",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36570,
                                "src": "12012:10:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                  "typeString": "uint256[5] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                  "typeString": "address[4] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                  "typeString": "uint256[5] memory"
                                }
                              ],
                              "id": 36613,
                              "name": "_initializeLoan",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37314,
                              "src": "11941:15:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanParams_$4884_memory_ptr_$_t_bytes32_$_t_uint256_$_t_array$_t_address_$4_memory_ptr_$_t_array$_t_uint256_$5_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (struct LoanParamsStruct.LoanParams memory,bytes32,uint256,address[4] memory,uint256[5] memory) returns (bytes32)"
                              }
                            },
                            "id": 36619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11941:82:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11935:89:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage",
                            "typeString": "struct LoanStruct.Loan storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11910:114:130"
                      },
                      {
                        "assignments": [
                          36623
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 36623,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 36813,
                            "src": "12057:14:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 36622,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12057:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 36637,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 36625,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36554,
                              "src": "12102:15:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36626,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36611,
                              "src": "12123:9:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 36627,
                                "name": "sentValues",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36570,
                                "src": "12138:10:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                  "typeString": "uint256[5] memory"
                                }
                              },
                              "id": 36629,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 36628,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12149:1:130",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12138:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 36630,
                                "name": "sentValues",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36570,
                                "src": "12169:10:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                  "typeString": "uint256[5] memory"
                                }
                              },
                              "id": 36632,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 36631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12180:1:130",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12169:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 36633,
                                "name": "sentValues",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36570,
                                "src": "12206:10:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                  "typeString": "uint256[5] memory"
                                }
                              },
                              "id": 36635,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 36634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12217:1:130",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12206:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 36624,
                            "name": "_initializeInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37543,
                            "src": "12077:19:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanParams_$4884_memory_ptr_$_t_struct$_Loan_$4912_storage_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (struct LoanParamsStruct.LoanParams memory,struct LoanStruct.Loan storage pointer,uint256,uint256,uint256) returns (uint256)"
                            }
                          },
                          "id": 36636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12077:166:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12057:186:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 36647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 36638,
                              "name": "sentValues",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36570,
                              "src": "12305:10:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              }
                            },
                            "id": 36640,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "33",
                              "id": 36639,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12316:1:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12305:13:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 36645,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36623,
                                "src": "12339:6:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 36641,
                                  "name": "sentValues",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36570,
                                  "src": "12321:10:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 36643,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "33",
                                  "id": 36642,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12332:1:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_3_by_1",
                                    "typeString": "int_const 3"
                                  },
                                  "value": "3"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12321:13:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 36644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "12321:17:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 36646,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12321:25:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12305:41:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 36648,
                        "nodeType": "ExpressionStatement",
                        "src": "12305:41:130"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 36649,
                          "name": "isTorqueLoan",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 36558,
                          "src": "12355:12:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 36743,
                          "nodeType": "Block",
                          "src": "13020:680:130",
                          "statements": [
                            {
                              "assignments": [
                                36706
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 36706,
                                  "name": "receivedAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 36743,
                                  "src": "13162:22:130",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 36705,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13162:7:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 36707,
                              "initialValue": null,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13162:22:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 36730,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 36708,
                                      "name": "receivedAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36706,
                                      "src": "13190:14:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    null,
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 36709,
                                        "name": "sentValues",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36570,
                                        "src": "13208:10:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                          "typeString": "uint256[5] memory"
                                        }
                                      },
                                      "id": 36711,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "33",
                                        "id": 36710,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13219:1:130",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_3_by_1",
                                          "typeString": "int_const 3"
                                        },
                                        "value": "3"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "13208:13:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 36712,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "13189:33:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$__$_t_uint256_$",
                                    "typeString": "tuple(uint256,,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 36714,
                                      "name": "loanId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36556,
                                      "src": "13240:6:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 36715,
                                        "name": "loanParamsLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36554,
                                        "src": "13252:15:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                          "typeString": "struct LoanParamsStruct.LoanParams memory"
                                        }
                                      },
                                      "id": 36716,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "loanToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4875,
                                      "src": "13252:25:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 36717,
                                        "name": "loanParamsLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36554,
                                        "src": "13283:15:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                          "typeString": "struct LoanParamsStruct.LoanParams memory"
                                        }
                                      },
                                      "id": 36718,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "collateralToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4877,
                                      "src": "13283:31:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 36719,
                                        "name": "sentAddresses",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36566,
                                        "src": "13320:13:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                          "typeString": "address[4] memory"
                                        }
                                      },
                                      "id": 36721,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 36720,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13334:1:130",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "13320:16:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 36722,
                                        "name": "sentValues",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36570,
                                        "src": "13355:10:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                          "typeString": "uint256[5] memory"
                                        }
                                      },
                                      "id": 36724,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "33",
                                        "id": 36723,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13366:1:130",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_3_by_1",
                                          "typeString": "int_const 3"
                                        },
                                        "value": "3"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "13355:13:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 36725,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13417:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 36726,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13480:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 36727,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13565:5:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 36728,
                                      "name": "loanDataBytes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36572,
                                      "src": "13590:13:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "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_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 36713,
                                    "name": "_loanSwap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42843,
                                    "src": "13225:9:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (bytes32,address,address,address,uint256,uint256,uint256,bool,bytes memory) returns (uint256,uint256,uint256)"
                                    }
                                  },
                                  "id": 36729,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13225:383:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256)"
                                  }
                                },
                                "src": "13189:419:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 36731,
                              "nodeType": "ExpressionStatement",
                              "src": "13189:419:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 36741,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 36732,
                                    "name": "sentValues",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36570,
                                    "src": "13613:10:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                      "typeString": "uint256[5] memory"
                                    }
                                  },
                                  "id": 36734,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 36733,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13624:1:130",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13613:13:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 36739,
                                      "name": "receivedAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36706,
                                      "src": "13680:14:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 36735,
                                        "name": "sentValues",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36570,
                                        "src": "13629:10:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                          "typeString": "uint256[5] memory"
                                        }
                                      },
                                      "id": 36737,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "34",
                                        "id": 36736,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13640:1:130",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_4_by_1",
                                          "typeString": "int_const 4"
                                        },
                                        "value": "4"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "13629:13:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 36738,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "13629:50:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 36740,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13629:66:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13613:82:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 36742,
                              "nodeType": "ExpressionStatement",
                              "src": "13613:82:130"
                            }
                          ]
                        },
                        "id": 36744,
                        "nodeType": "IfStatement",
                        "src": "12351:1349:130",
                        "trueBody": {
                          "id": 36704,
                          "nodeType": "Block",
                          "src": "12369:645:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 36655,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 36651,
                                        "name": "sentValues",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36570,
                                        "src": "12382:10:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                          "typeString": "uint256[5] memory"
                                        }
                                      },
                                      "id": 36653,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "33",
                                        "id": 36652,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12393:1:130",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_3_by_1",
                                          "typeString": "int_const 3"
                                        },
                                        "value": "3"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12382:13:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 36654,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12399:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "12382:18:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "737572706c7573206c6f616e20746f6b656e",
                                    "id": 36656,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12402:20:130",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_66f0ffa3e3e2bd7d30bb7669e08f30bbe91241dc0a8c59ab75561230033c20fa",
                                      "typeString": "literal_string \"surplus loan token\""
                                    },
                                    "value": "surplus loan token"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_66f0ffa3e3e2bd7d30bb7669e08f30bbe91241dc0a8c59ab75561230033c20fa",
                                      "typeString": "literal_string \"surplus loan token\""
                                    }
                                  ],
                                  "id": 36650,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "12374:7:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 36657,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12374:49:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 36658,
                              "nodeType": "ExpressionStatement",
                              "src": "12374:49:130"
                            },
                            {
                              "assignments": [
                                36660
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 36660,
                                  "name": "borrowingFee",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 36704,
                                  "src": "12429:20:130",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 36659,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12429:7:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 36666,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 36662,
                                      "name": "sentValues",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36570,
                                      "src": "12469:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                        "typeString": "uint256[5] memory"
                                      }
                                    },
                                    "id": 36664,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "34",
                                      "id": 36663,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12480:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12469:13:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 36661,
                                  "name": "_getBorrowingFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27108,
                                  "src": "12452:16:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) view returns (uint256)"
                                  }
                                },
                                "id": 36665,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12452:31:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12429:54:130"
                            },
                            {
                              "assignments": [
                                36668
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 36668,
                                  "name": "_collateralToken",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 36704,
                                  "src": "12533:24:130",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 36667,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12533:7:130",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 36671,
                              "initialValue": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36669,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36554,
                                  "src": "12560:15:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 36670,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateralToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4877,
                                "src": "12560:31:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12533:58:130"
                            },
                            {
                              "assignments": [
                                36673
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 36673,
                                  "name": "_loanToken",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 36704,
                                  "src": "12596:18:130",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 36672,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12596:7:130",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 36676,
                              "initialValue": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36674,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36554,
                                  "src": "12617:15:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 36675,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "loanToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4875,
                                "src": "12617:25:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12596:46:130"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 36679,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 36677,
                                  "name": "borrowingFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36660,
                                  "src": "12651:12:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 36678,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12667:1:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12651:17:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 36703,
                              "nodeType": "IfStatement",
                              "src": "12647:363:130",
                              "trueBody": {
                                "id": 36702,
                                "nodeType": "Block",
                                "src": "12670:340:130",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 36681,
                                            "name": "sentAddresses",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 36566,
                                            "src": "12699:13:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                              "typeString": "address[4] memory"
                                            }
                                          },
                                          "id": 36683,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 36682,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12713:1:130",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "12699:16:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 36684,
                                            "name": "loanLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 36611,
                                            "src": "12735:9:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                              "typeString": "struct LoanStruct.Loan storage pointer"
                                            }
                                          },
                                          "id": 36685,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "id",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4889,
                                          "src": "12735:12:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 36686,
                                          "name": "_collateralToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 36668,
                                          "src": "12754:16:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 36687,
                                          "name": "_loanToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 36673,
                                          "src": "12791:10:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 36688,
                                          "name": "borrowingFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 36660,
                                          "src": "12898:12:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 36680,
                                        "name": "_payBorrowingFee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27277,
                                        "src": "12676:16:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,bytes32,address,address,uint256)"
                                        }
                                      },
                                      "id": 36689,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12676:240:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 36690,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12676:240:130"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36700,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 36691,
                                          "name": "sentValues",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 36570,
                                          "src": "12923:10:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                            "typeString": "uint256[5] memory"
                                          }
                                        },
                                        "id": 36693,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "34",
                                          "id": 36692,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12934:1:130",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_4_by_1",
                                            "typeString": "int_const 4"
                                          },
                                          "value": "4"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "12923:13:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 36698,
                                            "name": "borrowingFee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 36660,
                                            "src": "12991:12:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 36694,
                                              "name": "sentValues",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 36570,
                                              "src": "12939:10:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                                "typeString": "uint256[5] memory"
                                              }
                                            },
                                            "id": 36696,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "34",
                                              "id": 36695,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "12950:1:130",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_4_by_1",
                                                "typeString": "int_const 4"
                                              },
                                              "value": "4"
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "12939:13:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 36697,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42092,
                                          "src": "12939:51:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 36699,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12939:65:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "12923:81:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 36701,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12923:81:130"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 36747,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36554,
                                  "src": "13764:15:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 36748,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36611,
                                  "src": "13781:9:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 36749,
                                  "name": "initialMargin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36562,
                                  "src": "13792:13:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 36750,
                                    "name": "sentValues",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36570,
                                    "src": "13807:10:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                      "typeString": "uint256[5] memory"
                                    }
                                  },
                                  "id": 36752,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 36751,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13818:1:130",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13807:13:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 36753,
                                  "name": "collateralAmountRequired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36560,
                                  "src": "13822:24:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  },
                                  {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 36746,
                                "name": "_isCollateralSatisfied",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37111,
                                "src": "13741:22:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_LoanParams_$4884_memory_ptr_$_t_struct$_Loan_$4912_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (struct LoanParamsStruct.LoanParams memory,struct LoanStruct.Loan memory,uint256,uint256,uint256) view returns (bool)"
                                }
                              },
                              "id": 36754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13741:106:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "636f6c6c61746572616c20696e73756666696369656e74",
                              "id": 36755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13852:25:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_96a61a4a25e96811b5a73f95447ffc1700e1483a2de807f6676c5e49d3620471",
                                "typeString": "literal_string \"collateral insufficient\""
                              },
                              "value": "collateral insufficient"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_96a61a4a25e96811b5a73f95447ffc1700e1483a2de807f6676c5e49d3620471",
                                "typeString": "literal_string \"collateral insufficient\""
                              }
                            ],
                            "id": 36745,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13729:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 36756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13729:152:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36757,
                        "nodeType": "ExpressionStatement",
                        "src": "13729:152:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 36768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 36758,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36611,
                              "src": "13886:9:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 36760,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "collateral",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4899,
                            "src": "13886:20:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 36764,
                                  "name": "sentValues",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36570,
                                  "src": "13934:10:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                    "typeString": "uint256[5] memory"
                                  }
                                },
                                "id": 36766,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "34",
                                  "id": 36765,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13945:1:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13934:13:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36761,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36611,
                                  "src": "13909:9:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                    "typeString": "struct LoanStruct.Loan storage pointer"
                                  }
                                },
                                "id": 36762,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4899,
                                "src": "13909:20:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 36763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "13909:24:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 36767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13909:39:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13886:62:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 36769,
                        "nodeType": "ExpressionStatement",
                        "src": "13886:62:130"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 36770,
                          "name": "isTorqueLoan",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 36558,
                          "src": "13957:12:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 36795,
                          "nodeType": "Block",
                          "src": "14093:127:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 36793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 36783,
                                    "name": "sentValues",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36570,
                                    "src": "14164:10:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                      "typeString": "uint256[5] memory"
                                    }
                                  },
                                  "id": 36785,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 36784,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14175:1:130",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "14164:13:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_100000000000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(31 digits omitted)...0000"
                                      },
                                      "id": 36790,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 36788,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14193:2:130",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3338",
                                        "id": 36789,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14197:2:130",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_38_by_1",
                                          "typeString": "int_const 38"
                                        },
                                        "value": "38"
                                      },
                                      "src": "14193:6:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100000000000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(31 digits omitted)...0000"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 36791,
                                      "name": "initialMargin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36562,
                                      "src": "14201:13:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_100000000000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(31 digits omitted)...0000"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36786,
                                      "name": "SafeMath",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42309,
                                      "src": "14180:8:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SafeMath_$42309_$",
                                        "typeString": "type(library SafeMath)"
                                      }
                                    },
                                    "id": 36787,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "14180:12:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 36792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14180:35:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14164:51:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 36794,
                              "nodeType": "ExpressionStatement",
                              "src": "14164:51:130"
                            }
                          ]
                        },
                        "id": 36796,
                        "nodeType": "IfStatement",
                        "src": "13953:267:130",
                        "trueBody": {
                          "id": 36782,
                          "nodeType": "Block",
                          "src": "13971:116:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 36780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 36771,
                                    "name": "sentValues",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36570,
                                    "src": "14023:10:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                      "typeString": "uint256[5] memory"
                                    }
                                  },
                                  "id": 36773,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 36772,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14034:1:130",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "14023:13:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 36777,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44984,
                                        "src": "14066:5:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 36778,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "14066:15:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 36774,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36611,
                                        "src": "14039:9:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 36775,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "endTimestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4903,
                                      "src": "14039:22:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 36776,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "14039:26:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 36779,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14039:43:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14023:59:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 36781,
                              "nodeType": "ExpressionStatement",
                              "src": "14023:59:130"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 36798,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36554,
                              "src": "14238:15:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36799,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36611,
                              "src": "14255:9:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36800,
                              "name": "sentAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36566,
                              "src": "14266:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36801,
                              "name": "sentValues",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36570,
                              "src": "14281:10:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36802,
                              "name": "isTorqueLoan",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36558,
                              "src": "14293:12:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 36797,
                            "name": "_finalizeOpen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 36920,
                            "src": "14224:13:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanParams_$4884_memory_ptr_$_t_struct$_Loan_$4912_storage_ptr_$_t_array$_t_address_$4_memory_ptr_$_t_array$_t_uint256_$5_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (struct LoanParamsStruct.LoanParams memory,struct LoanStruct.Loan storage pointer,address[4] memory,uint256[5] memory,bool)"
                            }
                          },
                          "id": 36803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14224:82:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36804,
                        "nodeType": "ExpressionStatement",
                        "src": "14224:82:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 36805,
                                "name": "sentValues",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36570,
                                "src": "14319:10:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                  "typeString": "uint256[5] memory"
                                }
                              },
                              "id": 36807,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 36806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14330:1:130",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14319:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 36808,
                                "name": "sentValues",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36570,
                                "src": "14334:10:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                  "typeString": "uint256[5] memory"
                                }
                              },
                              "id": 36810,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 36809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14345:1:130",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14334:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 36811,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14318:30:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 36578,
                        "id": 36812,
                        "nodeType": "Return",
                        "src": "14311:37:130"
                      }
                    ]
                  },
                  "documentation": "@notice Borrow or trade.\n\t * @param loanParamsLocal The loan parameters.\n@param loanId The ID of the loan. If 0, start a new loan.\n@param isTorqueLoan Whether the loan is a Torque loan.\n@param collateralAmountRequired The required amount of collateral.\n@param initialMargin The initial amount of margin.\n@param sentAddresses The addresses to send tokens: lender, borrower,\n  receiver and manager:\n    lender: must match loan if loanId provided.\n    borrower: must match loan if loanId provided.\n    receiver: receiver of funds (address(0) assumes borrower address).\n    manager: delegated manager of loan unless address(0).\n@param sentValues The values to send:\n    newRate: New loan interest rate.\n    newPrincipal: New loan size (borrowAmount + any borrowed interest).\n    torqueInterest: New amount of interest to escrow for Torque loan (determines initial loan length).\n    loanTokenReceived: Total loanToken deposit (amount not sent to borrower in the case of Torque loans).\n    collateralTokenReceived: Total collateralToken deposit.\n@param loanDataBytes The payload for the call. These loan DataBytes are\n  additional loan data (not in use for token swaps).\n\t * @return The new loan size.\n@return The new collateral amount.\n",
                  "id": 36814,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_borrowOrTrade",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 36573,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36554,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 36814,
                        "src": "11225:33:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 36553,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "11225:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36556,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 36814,
                        "src": "11262:14:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 36555,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11262:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36558,
                        "name": "isTorqueLoan",
                        "nodeType": "VariableDeclaration",
                        "scope": 36814,
                        "src": "11280:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 36557,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11280:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36560,
                        "name": "collateralAmountRequired",
                        "nodeType": "VariableDeclaration",
                        "scope": 36814,
                        "src": "11301:32:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36559,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11301:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36562,
                        "name": "initialMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 36814,
                        "src": "11337:21:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36561,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11337:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36566,
                        "name": "sentAddresses",
                        "nodeType": "VariableDeclaration",
                        "scope": 36814,
                        "src": "11362:31:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                          "typeString": "address[4]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 36563,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "11362:7:130",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 36565,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 36564,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11370:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "11362:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$4_storage_ptr",
                            "typeString": "address[4]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36570,
                        "name": "sentValues",
                        "nodeType": "VariableDeclaration",
                        "scope": 36814,
                        "src": "11397:28:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                          "typeString": "uint256[5]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 36567,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11397:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 36569,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 36568,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11405:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "11397:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                            "typeString": "uint256[5]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36572,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 36814,
                        "src": "11429:26:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 36571,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11429:5:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11221:237:130"
                  },
                  "returnParameters": {
                    "id": 36578,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36575,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 36814,
                        "src": "11477:7:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36574,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11477:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36577,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 36814,
                        "src": "11486:7:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36576,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11486:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11476:18:130"
                  },
                  "scope": 37635,
                  "src": "11198:3186:130",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 36919,
                    "nodeType": "Block",
                    "src": "15620:1035:130",
                    "statements": [
                      {
                        "assignments": [
                          36832,
                          36834
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 36832,
                            "name": "initialMargin",
                            "nodeType": "VariableDeclaration",
                            "scope": 36919,
                            "src": "15690:21:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 36831,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15690:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 36834,
                            "name": "collateralToLoanRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 36919,
                            "src": "15713:28:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 36833,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15713:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 36848,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36839,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36816,
                                "src": "15794:15:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 36840,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "15794:25:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36841,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36816,
                                "src": "15825:15:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 36842,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "15825:31:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36843,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36818,
                                "src": "15862:9:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 36844,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "principal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4897,
                              "src": "15862:19:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 36845,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36818,
                                "src": "15887:9:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 36846,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4899,
                              "src": "15887:20:130",
                              "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_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 36836,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "15760:10:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 36835,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "15748:11:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 36837,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15748:23:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 36838,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getCurrentMargin",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8684,
                            "src": "15748:40:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256) view external returns (uint256,uint256)"
                            }
                          },
                          "id": 36847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15748:164:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15689:223:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 36853,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 36850,
                                "name": "initialMargin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 36832,
                                "src": "15924:13:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 36851,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36816,
                                  "src": "15940:15:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "id": 36852,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maintenanceMargin",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4881,
                                "src": "15940:33:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15924:49:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e6865616c74687920706f736974696f6e",
                              "id": 36854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15975:20:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a20a6fe43cf061d9638e42e18d63dd0524a0f2893c781dd86909659f7ba13618",
                                "typeString": "literal_string \"unhealthy position\""
                              },
                              "value": "unhealthy position"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a20a6fe43cf061d9638e42e18d63dd0524a0f2893c781dd86909659f7ba13618",
                                "typeString": "literal_string \"unhealthy position\""
                              }
                            ],
                            "id": 36849,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "15916:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 36855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15916:80:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36856,
                        "nodeType": "ExpressionStatement",
                        "src": "15916:80:130"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 36861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 36857,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36818,
                              "src": "16005:9:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 36858,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "startTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4901,
                            "src": "16005:24:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 36859,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44984,
                              "src": "16033:5:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 36860,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "16033:15:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16005:43:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 36908,
                        "nodeType": "IfStatement",
                        "src": "16001:522:130",
                        "trueBody": {
                          "id": 36907,
                          "nodeType": "Block",
                          "src": "16050:473:130",
                          "statements": [
                            {
                              "assignments": [
                                36863
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 36863,
                                  "name": "loanToCollateralPrecision",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 36907,
                                  "src": "16055:33:130",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 36862,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16055:7:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 36873,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36868,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36816,
                                      "src": "16134:15:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 36869,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "16134:25:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36870,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36816,
                                      "src": "16161:15:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 36871,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4877,
                                    "src": "16161:31:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 36865,
                                        "name": "priceFeeds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4575,
                                        "src": "16107:10:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 36864,
                                      "name": "IPriceFeeds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8707,
                                      "src": "16095:11:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                        "typeString": "type(contract IPriceFeeds)"
                                      }
                                    },
                                    "id": 36866,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16095:23:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                      "typeString": "contract IPriceFeeds"
                                    }
                                  },
                                  "id": 36867,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "queryPrecision",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8604,
                                  "src": "16095:38:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address,address) view external returns (uint256)"
                                  }
                                },
                                "id": 36872,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16095:98:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16055:138:130"
                            },
                            {
                              "assignments": [
                                36875
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 36875,
                                  "name": "collateralToLoanPrecision",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 36907,
                                  "src": "16198:33:130",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 36874,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16198:7:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 36885,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36880,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36816,
                                      "src": "16277:15:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 36881,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4877,
                                    "src": "16277:31:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36882,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36816,
                                      "src": "16310:15:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 36883,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "16310:25:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 36877,
                                        "name": "priceFeeds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4575,
                                        "src": "16250:10:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 36876,
                                      "name": "IPriceFeeds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8707,
                                      "src": "16238:11:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                        "typeString": "type(contract IPriceFeeds)"
                                      }
                                    },
                                    "id": 36878,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16238:23:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                      "typeString": "contract IPriceFeeds"
                                    }
                                  },
                                  "id": 36879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "queryPrecision",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8604,
                                  "src": "16238:38:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address,address) view external returns (uint256)"
                                  }
                                },
                                "id": 36884,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16238:98:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16198:138:130"
                            },
                            {
                              "assignments": [
                                36887
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 36887,
                                  "name": "totalSwapRate",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 36907,
                                  "src": "16341:21:130",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 36886,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16341:7:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 36892,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 36890,
                                    "name": "collateralToLoanPrecision",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36875,
                                    "src": "16395:25:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 36888,
                                    "name": "loanToCollateralPrecision",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36863,
                                    "src": "16365:25:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 36889,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "16365:29:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 36891,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16365:56:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16341:80:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 36905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 36893,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36818,
                                    "src": "16426:9:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 36895,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "startRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4907,
                                  "src": "16426:19:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "id": 36896,
                                    "name": "isTorqueLoan",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36828,
                                    "src": "16448:12:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 36900,
                                          "name": "sentValues",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 36826,
                                          "src": "16504:10:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                            "typeString": "uint256[5] memory"
                                          }
                                        },
                                        "id": 36902,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "33",
                                          "id": 36901,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "16515:1:130",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_3_by_1",
                                            "typeString": "int_const 3"
                                          },
                                          "value": "3"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "16504:13:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 36898,
                                        "name": "totalSwapRate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 36887,
                                        "src": "16486:13:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 36899,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42169,
                                      "src": "16486:17:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 36903,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16486:32:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 36904,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "16448:70:130",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "id": 36897,
                                    "name": "collateralToLoanRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36834,
                                    "src": "16463:20:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16426:92:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 36906,
                              "nodeType": "ExpressionStatement",
                              "src": "16426:92:130"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 36910,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36816,
                              "src": "16546:15:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36911,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36818,
                              "src": "16563:9:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36912,
                              "name": "sentAddresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36822,
                              "src": "16574:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36913,
                              "name": "sentValues",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36826,
                              "src": "16589:10:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36914,
                              "name": "collateralToLoanRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36834,
                              "src": "16601:20:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36915,
                              "name": "initialMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36832,
                              "src": "16623:13:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 36916,
                              "name": "isTorqueLoan",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36828,
                              "src": "16638:12:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                "typeString": "address[4] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                "typeString": "uint256[5] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 36909,
                            "name": "_emitOpeningEvents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37018,
                            "src": "16527:18:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanParams_$4884_memory_ptr_$_t_struct$_Loan_$4912_memory_ptr_$_t_array$_t_address_$4_memory_ptr_$_t_array$_t_uint256_$5_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (struct LoanParamsStruct.LoanParams memory,struct LoanStruct.Loan memory,address[4] memory,uint256[5] memory,uint256,uint256,bool)"
                            }
                          },
                          "id": 36917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16527:124:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 36918,
                        "nodeType": "ExpressionStatement",
                        "src": "16527:124:130"
                      }
                    ]
                  },
                  "documentation": "@notice Finalize an open loan.\n\t * @dev Finalize it by updating local parameters of the loan.\n\t * @param loanParamsLocal The loan parameters.\n@param loanLocal The loan object.\n@param sentAddresses The addresses to send tokens: lender, borrower,\n  receiver and manager:\n    lender: must match loan if loanId provided.\n    borrower: must match loan if loanId provided.\n    receiver: receiver of funds (address(0) assumes borrower address).\n    manager: delegated manager of loan unless address(0).\n@param sentValues The values to send:\n    newRate: New loan interest rate.\n    newPrincipal: New loan size (borrowAmount + any borrowed interest).\n    torqueInterest: New amount of interest to escrow for Torque loan (determines initial loan length).\n    loanTokenReceived: Total loanToken deposit (amount not sent to borrower in the case of Torque loans).\n    collateralTokenReceived: Total collateralToken deposit.\n@param isTorqueLoan Whether the loan is a Torque loan.\n",
                  "id": 36920,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_finalizeOpen",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 36829,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36816,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 36920,
                        "src": "15460:33:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 36815,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "15460:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36818,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 36920,
                        "src": "15497:22:130",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 36817,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "15497:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36822,
                        "name": "sentAddresses",
                        "nodeType": "VariableDeclaration",
                        "scope": 36920,
                        "src": "15523:31:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                          "typeString": "address[4]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 36819,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "15523:7:130",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 36821,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 36820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15531:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "15523:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$4_storage_ptr",
                            "typeString": "address[4]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36826,
                        "name": "sentValues",
                        "nodeType": "VariableDeclaration",
                        "scope": 36920,
                        "src": "15558:28:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                          "typeString": "uint256[5]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 36823,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "15558:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 36825,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 36824,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15566:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "15558:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                            "typeString": "uint256[5]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36828,
                        "name": "isTorqueLoan",
                        "nodeType": "VariableDeclaration",
                        "scope": 36920,
                        "src": "15590:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 36827,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15590:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15456:154:130"
                  },
                  "returnParameters": {
                    "id": 36830,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15620:0:130"
                  },
                  "scope": 37635,
                  "src": "15434:1221:130",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 37017,
                    "nodeType": "Block",
                    "src": "18021:1099:130",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 36941,
                          "name": "isTorqueLoan",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 36938,
                          "src": "18029:12:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 37015,
                          "nodeType": "Block",
                          "src": "18512:605:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 36980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 36972,
                                  "name": "margin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 36936,
                                  "src": "18562:6:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_100000000000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(31 digits omitted)...0000"
                                      },
                                      "id": 36977,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 36975,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "18584:2:130",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3338",
                                        "id": 36976,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "18588:2:130",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_38_by_1",
                                          "typeString": "int_const 38"
                                        },
                                        "value": "38"
                                      },
                                      "src": "18584:6:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100000000000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(31 digits omitted)...0000"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 36978,
                                      "name": "margin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36936,
                                      "src": "18592:6:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_100000000000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(31 digits omitted)...0000"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36973,
                                      "name": "SafeMath",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42309,
                                      "src": "18571:8:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SafeMath_$42309_$",
                                        "typeString": "type(library SafeMath)"
                                      }
                                    },
                                    "id": 36974,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "18571:12:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 36979,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18571:28:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18562:37:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 36981,
                              "nodeType": "ExpressionStatement",
                              "src": "18562:37:130"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 36983,
                                      "name": "sentAddresses",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36928,
                                      "src": "18621:13:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                        "typeString": "address[4] memory"
                                      }
                                    },
                                    "id": 36985,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 36984,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18635:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18621:16:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 36986,
                                      "name": "sentAddresses",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36928,
                                      "src": "18661:13:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                        "typeString": "address[4] memory"
                                      }
                                    },
                                    "id": 36988,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 36987,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18675:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18661:16:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36989,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36924,
                                      "src": "18694:9:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                        "typeString": "struct LoanStruct.Loan memory"
                                      }
                                    },
                                    "id": 36990,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4889,
                                    "src": "18694:12:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36991,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36922,
                                      "src": "18723:15:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 36992,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4877,
                                    "src": "18723:31:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36993,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36922,
                                      "src": "18780:15:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 36994,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "18780:25:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 36995,
                                      "name": "sentValues",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36932,
                                      "src": "18825:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                        "typeString": "uint256[5] memory"
                                      }
                                    },
                                    "id": 36997,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "34",
                                      "id": 36996,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18836:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18825:13:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 36998,
                                      "name": "sentValues",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36932,
                                      "src": "18861:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                        "typeString": "uint256[5] memory"
                                      }
                                    },
                                    "id": 37000,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 36999,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18872:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18861:13:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 37001,
                                      "name": "sentValues",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36932,
                                      "src": "18899:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                        "typeString": "uint256[5] memory"
                                      }
                                    },
                                    "id": 37003,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 37002,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18910:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18899:13:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 37004,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36924,
                                      "src": "18936:9:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                        "typeString": "struct LoanStruct.Loan memory"
                                      }
                                    },
                                    "id": 37005,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endTimestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4903,
                                    "src": "18936:22:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 37006,
                                      "name": "sentValues",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36932,
                                      "src": "18983:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                        "typeString": "uint256[5] memory"
                                      }
                                    },
                                    "id": 37008,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "33",
                                      "id": 37007,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18994:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18983:13:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 37009,
                                      "name": "sentValues",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36932,
                                      "src": "19044:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                        "typeString": "uint256[5] memory"
                                      }
                                    },
                                    "id": 37011,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 37010,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "19055:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "19044:13:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 37012,
                                    "name": "margin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36936,
                                    "src": "19081:6:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 36982,
                                  "name": "Trade",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5983,
                                  "src": "18610:5:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,bytes32,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 37013,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18610:502:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 37014,
                              "nodeType": "EmitStatement",
                              "src": "18605:507:130"
                            }
                          ]
                        },
                        "id": 37016,
                        "nodeType": "IfStatement",
                        "src": "18025:1092:130",
                        "trueBody": {
                          "id": 36971,
                          "nodeType": "Block",
                          "src": "18043:463:130",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 36943,
                                      "name": "sentAddresses",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36928,
                                      "src": "18065:13:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                        "typeString": "address[4] memory"
                                      }
                                    },
                                    "id": 36945,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 36944,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18079:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18065:16:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 36946,
                                      "name": "sentAddresses",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36928,
                                      "src": "18107:13:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                                        "typeString": "address[4] memory"
                                      }
                                    },
                                    "id": 36948,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 36947,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18121:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18107:16:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36949,
                                      "name": "loanLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36924,
                                      "src": "18140:9:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                        "typeString": "struct LoanStruct.Loan memory"
                                      }
                                    },
                                    "id": 36950,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4889,
                                    "src": "18140:12:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36951,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36922,
                                      "src": "18169:15:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 36952,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "18169:25:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 36953,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36922,
                                      "src": "18214:15:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 36954,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4877,
                                    "src": "18214:31:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 36955,
                                      "name": "sentValues",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36932,
                                      "src": "18271:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                        "typeString": "uint256[5] memory"
                                      }
                                    },
                                    "id": 36957,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 36956,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18282:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18271:13:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 36958,
                                      "name": "sentValues",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36932,
                                      "src": "18307:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                        "typeString": "uint256[5] memory"
                                      }
                                    },
                                    "id": 36960,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "34",
                                      "id": 36959,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18318:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18307:13:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 36961,
                                      "name": "sentValues",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36932,
                                      "src": "18344:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                        "typeString": "uint256[5] memory"
                                      }
                                    },
                                    "id": 36963,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 36962,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18355:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18344:13:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 36964,
                                      "name": "sentValues",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 36932,
                                      "src": "18380:10:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                                        "typeString": "uint256[5] memory"
                                      }
                                    },
                                    "id": 36966,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 36965,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18391:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18380:13:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 36967,
                                    "name": "collateralToLoanRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36934,
                                    "src": "18420:20:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 36968,
                                    "name": "margin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 36936,
                                    "src": "18472:6:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 36942,
                                  "name": "Borrow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5957,
                                  "src": "18053:6:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,bytes32,address,address,uint256,uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 36969,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18053:448:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 36970,
                              "nodeType": "EmitStatement",
                              "src": "18048:453:130"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Emit the opening events.\n\t * @param loanParamsLocal The loan parameters.\n@param loanLocal The loan object.\n@param sentAddresses The addresses to send tokens: lender, borrower,\n  receiver and manager:\n    lender: must match loan if loanId provided.\n    borrower: must match loan if loanId provided.\n    receiver: receiver of funds (address(0) assumes borrower address).\n    manager: delegated manager of loan unless address(0).\n@param sentValues The values to send:\n    newRate: New loan interest rate.\n    newPrincipal: New loan size (borrowAmount + any borrowed interest).\n    torqueInterest: New amount of interest to escrow for Torque loan (determines initial loan length).\n    loanTokenReceived: Total loanToken deposit (amount not sent to borrower in the case of Torque loans).\n    collateralTokenReceived: Total collateralToken deposit.\n@param collateralToLoanRate The exchange rate from collateral to loan\n  tokens.\n@param margin The amount of margin of the trade.\n@param isTorqueLoan Whether the loan is a Torque loan.\n",
                  "id": 37018,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_emitOpeningEvents",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 36939,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36922,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 37018,
                        "src": "17812:33:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 36921,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "17812:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36924,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 37018,
                        "src": "17849:21:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 36923,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "17849:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36928,
                        "name": "sentAddresses",
                        "nodeType": "VariableDeclaration",
                        "scope": 37018,
                        "src": "17874:31:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                          "typeString": "address[4]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 36925,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "17874:7:130",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 36927,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 36926,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17882:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "17874:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$4_storage_ptr",
                            "typeString": "address[4]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36932,
                        "name": "sentValues",
                        "nodeType": "VariableDeclaration",
                        "scope": 37018,
                        "src": "17909:28:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                          "typeString": "uint256[5]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 36929,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "17909:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 36931,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 36930,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17917:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "17909:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                            "typeString": "uint256[5]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36934,
                        "name": "collateralToLoanRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 37018,
                        "src": "17941:28:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36933,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17941:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36936,
                        "name": "margin",
                        "nodeType": "VariableDeclaration",
                        "scope": 37018,
                        "src": "17973:14:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36935,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17973:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36938,
                        "name": "isTorqueLoan",
                        "nodeType": "VariableDeclaration",
                        "scope": 37018,
                        "src": "17991:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 36937,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17991:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17808:203:130"
                  },
                  "returnParameters": {
                    "id": 36940,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18021:0:130"
                  },
                  "scope": 37635,
                  "src": "17781:1339:130",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 37044,
                    "nodeType": "Block",
                    "src": "19535:120:130",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 37035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 37029,
                                "name": "delegatedManagers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4609,
                                "src": "19539:17:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(bytes32 => mapping(address => bool))"
                                }
                              },
                              "id": 37032,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 37030,
                                "name": "loanId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37020,
                                "src": "19557:6:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "19539:25:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 37033,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 37031,
                              "name": "delegated",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37024,
                              "src": "19565:9:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "19539:36:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 37034,
                            "name": "toggle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37026,
                            "src": "19578:6:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "19539:45:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 37036,
                        "nodeType": "ExpressionStatement",
                        "src": "19539:45:130"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 37038,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37020,
                              "src": "19614:6:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 37039,
                              "name": "delegator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37022,
                              "src": "19622:9:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 37040,
                              "name": "delegated",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37024,
                              "src": "19633:9:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 37041,
                              "name": "toggle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37026,
                              "src": "19644:6:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 37037,
                            "name": "DelegatedManagerSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5993,
                            "src": "19594:19:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (bytes32,address,address,bool)"
                            }
                          },
                          "id": 37042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19594:57:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37043,
                        "nodeType": "EmitStatement",
                        "src": "19589:62:130"
                      }
                    ]
                  },
                  "documentation": "@notice Set the delegated manager.\n\t * @param loanId The ID of the loan. If 0, start a new loan.\n@param delegator The address of previous manager.\n@param delegated The address of the delegated manager.\n@param toggle The flag true/false for the delegated manager.\n",
                  "id": 37045,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setDelegatedManager",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 37027,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37020,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 37045,
                        "src": "19451:14:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 37019,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19451:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37022,
                        "name": "delegator",
                        "nodeType": "VariableDeclaration",
                        "scope": 37045,
                        "src": "19469:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 37021,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19469:7:130",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37024,
                        "name": "delegated",
                        "nodeType": "VariableDeclaration",
                        "scope": 37045,
                        "src": "19490:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 37023,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19490:7:130",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37026,
                        "name": "toggle",
                        "nodeType": "VariableDeclaration",
                        "scope": 37045,
                        "src": "19511:11:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 37025,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "19511:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19447:78:130"
                  },
                  "returnParameters": {
                    "id": 37028,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19535:0:130"
                  },
                  "scope": 37635,
                  "src": "19418:237:130",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 37110,
                    "nodeType": "Block",
                    "src": "20336:633:130",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 37068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 37060,
                            "name": "collateralAmountRequired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37055,
                            "src": "20385:24:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "313030",
                                "id": 37066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20455:9:130",
                                "subdenomination": "ether",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "value": "100"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "3938",
                                    "id": 37063,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20441:8:130",
                                    "subdenomination": "ether",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_98000000000000000000_by_1",
                                      "typeString": "int_const 98000000000000000000"
                                    },
                                    "value": "98"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_98000000000000000000_by_1",
                                      "typeString": "int_const 98000000000000000000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 37061,
                                    "name": "collateralAmountRequired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37055,
                                    "src": "20412:24:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 37062,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "20412:28:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 37064,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20412:38:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "20412:42:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 37067,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20412:53:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20385:80:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 37069,
                        "nodeType": "ExpressionStatement",
                        "src": "20385:80:130"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 37072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 37070,
                            "name": "newCollateral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37053,
                            "src": "20474:13:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 37071,
                            "name": "collateralAmountRequired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37055,
                            "src": "20490:24:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20474:40:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 37107,
                        "nodeType": "IfStatement",
                        "src": "20470:481:130",
                        "trueBody": {
                          "id": 37106,
                          "nodeType": "Block",
                          "src": "20516:435:130",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 37076,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 37073,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37049,
                                    "src": "20587:9:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                      "typeString": "struct LoanStruct.Loan memory"
                                    }
                                  },
                                  "id": 37074,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "collateral",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4899,
                                  "src": "20587:20:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 37075,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20611:1:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "20587:25:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 37104,
                                "nodeType": "Block",
                                "src": "20923:24:130",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 37102,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20936:5:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "functionReturnParameters": 37059,
                                    "id": 37103,
                                    "nodeType": "Return",
                                    "src": "20929:12:130"
                                  }
                                ]
                              },
                              "id": 37105,
                              "nodeType": "IfStatement",
                              "src": "20583:364:130",
                              "trueBody": {
                                "id": 37101,
                                "nodeType": "Block",
                                "src": "20614:303:130",
                                "statements": [
                                  {
                                    "assignments": [
                                      37078
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 37078,
                                        "name": "maxDrawdown",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 37101,
                                        "src": "20620:19:130",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 37077,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "20620:7:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 37093,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 37083,
                                            "name": "loanParamsLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 37047,
                                            "src": "20693:15:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                              "typeString": "struct LoanParamsStruct.LoanParams memory"
                                            }
                                          },
                                          "id": 37084,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "loanToken",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4875,
                                          "src": "20693:25:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 37085,
                                            "name": "loanParamsLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 37047,
                                            "src": "20726:15:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                              "typeString": "struct LoanParamsStruct.LoanParams memory"
                                            }
                                          },
                                          "id": 37086,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "collateralToken",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4877,
                                          "src": "20726:31:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 37087,
                                            "name": "loanLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 37049,
                                            "src": "20765:9:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                              "typeString": "struct LoanStruct.Loan memory"
                                            }
                                          },
                                          "id": 37088,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "principal",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4897,
                                          "src": "20765:19:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 37089,
                                            "name": "loanLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 37049,
                                            "src": "20792:9:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                              "typeString": "struct LoanStruct.Loan memory"
                                            }
                                          },
                                          "id": 37090,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "collateral",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4899,
                                          "src": "20792:20:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 37091,
                                          "name": "initialMargin",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 37051,
                                          "src": "20820:13:130",
                                          "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_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 37080,
                                              "name": "priceFeeds",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4575,
                                              "src": "20659:10:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 37079,
                                            "name": "IPriceFeeds",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8707,
                                            "src": "20647:11:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                              "typeString": "type(contract IPriceFeeds)"
                                            }
                                          },
                                          "id": 37081,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "20647:23:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                            "typeString": "contract IPriceFeeds"
                                          }
                                        },
                                        "id": 37082,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "getMaxDrawdown",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 8654,
                                        "src": "20647:38:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (address,address,uint256,uint256,uint256) view external returns (uint256)"
                                        }
                                      },
                                      "id": 37092,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20647:193:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "20620:220:130"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 37099,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 37096,
                                            "name": "maxDrawdown",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 37078,
                                            "src": "20871:11:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 37094,
                                            "name": "newCollateral",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 37053,
                                            "src": "20853:13:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 37095,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "20853:17:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 37097,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "20853:30:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 37098,
                                        "name": "collateralAmountRequired",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37055,
                                        "src": "20887:24:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "20853:58:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "functionReturnParameters": 37059,
                                    "id": 37100,
                                    "nodeType": "Return",
                                    "src": "20846:65:130"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 37108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "20961:4:130",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 37059,
                        "id": 37109,
                        "nodeType": "Return",
                        "src": "20954:11:130"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate whether the collateral is satisfied.\n\t * @dev Basically check collateral + drawdown >= 98% of required.\n\t * @param loanParamsLocal The loan parameters.\n@param loanLocal The loan object.\n@param initialMargin The initial amount of margin.\n@param newCollateral The amount of new collateral.\n@param collateralAmountRequired The amount of required collateral.\n\t * @return Whether the collateral is satisfied.\n",
                  "id": 37111,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isCollateralSatisfied",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 37056,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37047,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 37111,
                        "src": "20159:33:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 37046,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "20159:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37049,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 37111,
                        "src": "20196:21:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 37048,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "20196:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37051,
                        "name": "initialMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 37111,
                        "src": "20221:21:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37050,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20221:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37053,
                        "name": "newCollateral",
                        "nodeType": "VariableDeclaration",
                        "scope": 37111,
                        "src": "20246:21:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37052,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20246:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37055,
                        "name": "collateralAmountRequired",
                        "nodeType": "VariableDeclaration",
                        "scope": 37111,
                        "src": "20271:32:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37054,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20271:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20155:151:130"
                  },
                  "returnParameters": {
                    "id": 37059,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37058,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 37111,
                        "src": "20330:4:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 37057,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "20330:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20329:6:130"
                  },
                  "scope": 37635,
                  "src": "20124:845:130",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 37313,
                    "nodeType": "Block",
                    "src": "22175:1518:130",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 37131,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37113,
                                "src": "22187:15:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 37132,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "active",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4871,
                              "src": "22187:22:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e506172616d732064697361626c6564",
                              "id": 37133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22211:21:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d318512afa1e0ac382fe60aa319ee6d47f4d6d5c4b74d48896e132ffec4768b5",
                                "typeString": "literal_string \"loanParams disabled\""
                              },
                              "value": "loanParams disabled"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d318512afa1e0ac382fe60aa319ee6d47f4d6d5c4b74d48896e132ffec4768b5",
                                "typeString": "literal_string \"loanParams disabled\""
                              }
                            ],
                            "id": 37130,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "22179:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 37134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22179:54:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37135,
                        "nodeType": "ExpressionStatement",
                        "src": "22179:54:130"
                      },
                      {
                        "assignments": [
                          37137
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37137,
                            "name": "lender",
                            "nodeType": "VariableDeclaration",
                            "scope": 37313,
                            "src": "22238:14:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 37136,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "22238:7:130",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37141,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 37138,
                            "name": "sentAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37121,
                            "src": "22255:13:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                              "typeString": "address[4] memory"
                            }
                          },
                          "id": 37140,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 37139,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22269:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "22255:16:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22238:33:130"
                      },
                      {
                        "assignments": [
                          37143
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37143,
                            "name": "borrower",
                            "nodeType": "VariableDeclaration",
                            "scope": 37313,
                            "src": "22275:16:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 37142,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "22275:7:130",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37147,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 37144,
                            "name": "sentAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37121,
                            "src": "22294:13:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                              "typeString": "address[4] memory"
                            }
                          },
                          "id": 37146,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 37145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22308:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "22294:16:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22275:35:130"
                      },
                      {
                        "assignments": [
                          37149
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37149,
                            "name": "manager",
                            "nodeType": "VariableDeclaration",
                            "scope": 37313,
                            "src": "22314:15:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 37148,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "22314:7:130",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37153,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 37150,
                            "name": "sentAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37121,
                            "src": "22332:13:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                              "typeString": "address[4] memory"
                            }
                          },
                          "id": 37152,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "33",
                            "id": 37151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22346:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "22332:16:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22314:34:130"
                      },
                      {
                        "assignments": [
                          37155
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37155,
                            "name": "newPrincipal",
                            "nodeType": "VariableDeclaration",
                            "scope": 37313,
                            "src": "22352:20:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 37154,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22352:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37159,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 37156,
                            "name": "sentValues",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37125,
                            "src": "22375:10:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                              "typeString": "uint256[5] memory"
                            }
                          },
                          "id": 37158,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 37157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22386:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "22375:13:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22352:36:130"
                      },
                      {
                        "assignments": [
                          37161
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37161,
                            "name": "loanLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 37313,
                            "src": "22393:21:130",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                              "typeString": "struct LoanStruct.Loan"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 37160,
                              "name": "Loan",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4912,
                              "src": "22393:4:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37162,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22393:21:130"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 37165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 37163,
                            "name": "loanId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37115,
                            "src": "22423:6:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 37164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22433:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "22423:11:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 37289,
                          "nodeType": "Block",
                          "src": "23151:397:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37240,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 37236,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37161,
                                  "src": "23156:9:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 37237,
                                    "name": "loans",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4587,
                                    "src": "23168:5:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                                      "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                                    }
                                  },
                                  "id": 37239,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 37238,
                                    "name": "loanId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37115,
                                    "src": "23174:6:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "23168:13:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_storage",
                                    "typeString": "struct LoanStruct.Loan storage ref"
                                  }
                                },
                                "src": "23156:25:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 37241,
                              "nodeType": "ExpressionStatement",
                              "src": "23156:25:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 37250,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 37243,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37161,
                                        "src": "23194:9:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                          "typeString": "struct LoanStruct.Loan memory"
                                        }
                                      },
                                      "id": 37244,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "active",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4895,
                                      "src": "23194:16:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 37249,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 37245,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44984,
                                          "src": "23214:5:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 37246,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "23214:15:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 37247,
                                          "name": "loanLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 37161,
                                          "src": "23232:9:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                            "typeString": "struct LoanStruct.Loan memory"
                                          }
                                        },
                                        "id": 37248,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "endTimestamp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4903,
                                        "src": "23232:22:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "23214:40:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "23194:60:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6c6f616e2068617320656e646564",
                                    "id": 37251,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23256:16:130",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6f451d1647c4380a4148f0da74f1359f5f97ac0150bdb86352f792977604f061",
                                      "typeString": "literal_string \"loan has ended\""
                                    },
                                    "value": "loan has ended"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6f451d1647c4380a4148f0da74f1359f5f97ac0150bdb86352f792977604f061",
                                      "typeString": "literal_string \"loan has ended\""
                                    }
                                  ],
                                  "id": 37242,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "23186:7:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 37252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23186:87:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 37253,
                              "nodeType": "ExpressionStatement",
                              "src": "23186:87:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 37258,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 37255,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37161,
                                        "src": "23286:9:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                          "typeString": "struct LoanStruct.Loan memory"
                                        }
                                      },
                                      "id": 37256,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "borrower",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4909,
                                      "src": "23286:18:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 37257,
                                      "name": "borrower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37143,
                                      "src": "23308:8:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "23286:30:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "626f72726f776572206d69736d61746368",
                                    "id": 37259,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23318:19:130",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_2824c118bceac5a0d04fa9c0077fc6d20ab595405e82cd5244de85790b21386a",
                                      "typeString": "literal_string \"borrower mismatch\""
                                    },
                                    "value": "borrower mismatch"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_2824c118bceac5a0d04fa9c0077fc6d20ab595405e82cd5244de85790b21386a",
                                      "typeString": "literal_string \"borrower mismatch\""
                                    }
                                  ],
                                  "id": 37254,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "23278:7:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 37260,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23278:60:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 37261,
                              "nodeType": "ExpressionStatement",
                              "src": "23278:60:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 37266,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 37263,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37161,
                                        "src": "23351:9:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                          "typeString": "struct LoanStruct.Loan memory"
                                        }
                                      },
                                      "id": 37264,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4911,
                                      "src": "23351:16:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 37265,
                                      "name": "lender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37137,
                                      "src": "23371:6:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "23351:26:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6c656e646572206d69736d61746368",
                                    "id": 37267,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23379:17:130",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_5a05d3290e09f3fd285da117101fc6e2891d65d83653d1c8d80c3bba164eaed1",
                                      "typeString": "literal_string \"lender mismatch\""
                                    },
                                    "value": "lender mismatch"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_5a05d3290e09f3fd285da117101fc6e2891d65d83653d1c8d80c3bba164eaed1",
                                      "typeString": "literal_string \"lender mismatch\""
                                    }
                                  ],
                                  "id": 37262,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "23343:7:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 37268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23343:54:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 37269,
                              "nodeType": "ExpressionStatement",
                              "src": "23343:54:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "id": 37275,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 37271,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37161,
                                        "src": "23410:9:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                          "typeString": "struct LoanStruct.Loan memory"
                                        }
                                      },
                                      "id": 37272,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "loanParamsId",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4891,
                                      "src": "23410:22:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 37273,
                                        "name": "loanParamsLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37113,
                                        "src": "23436:15:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                          "typeString": "struct LoanParamsStruct.LoanParams memory"
                                        }
                                      },
                                      "id": 37274,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "id",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4869,
                                      "src": "23436:18:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "23410:44:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6c6f616e506172616d73206d69736d61746368",
                                    "id": 37276,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23456:21:130",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_071f7cd6112034617b6554b0fab46ddb9cb29ddc9625056c56a85ac615a4c6e4",
                                      "typeString": "literal_string \"loanParams mismatch\""
                                    },
                                    "value": "loanParams mismatch"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_071f7cd6112034617b6554b0fab46ddb9cb29ddc9625056c56a85ac615a4c6e4",
                                      "typeString": "literal_string \"loanParams mismatch\""
                                    }
                                  ],
                                  "id": 37270,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "23402:7:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 37277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23402:76:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 37278,
                              "nodeType": "ExpressionStatement",
                              "src": "23402:76:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 37279,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37161,
                                    "src": "23484:9:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                      "typeString": "struct LoanStruct.Loan memory"
                                    }
                                  },
                                  "id": 37281,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "principal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4897,
                                  "src": "23484:19:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 37285,
                                      "name": "newPrincipal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37155,
                                      "src": "23530:12:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 37282,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37161,
                                        "src": "23506:9:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                          "typeString": "struct LoanStruct.Loan memory"
                                        }
                                      },
                                      "id": 37283,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "principal",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4897,
                                      "src": "23506:19:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 37284,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "23506:23:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 37286,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23506:37:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23484:59:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37288,
                              "nodeType": "ExpressionStatement",
                              "src": "23484:59:130"
                            }
                          ]
                        },
                        "id": 37290,
                        "nodeType": "IfStatement",
                        "src": "22419:1129:130",
                        "trueBody": {
                          "id": 37235,
                          "nodeType": "Block",
                          "src": "22436:709:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37169,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "22441:25:130",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 37166,
                                    "name": "borrowerNonce",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4729,
                                    "src": "22441:13:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 37168,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 37167,
                                    "name": "borrower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37143,
                                    "src": "22455:8:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "22441:23:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37170,
                              "nodeType": "ExpressionStatement",
                              "src": "22441:25:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 37171,
                                  "name": "loanId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37115,
                                  "src": "22471:6:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 37175,
                                            "name": "loanParamsLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 37113,
                                            "src": "22507:15:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                              "typeString": "struct LoanParamsStruct.LoanParams memory"
                                            }
                                          },
                                          "id": 37176,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "id",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4869,
                                          "src": "22507:18:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 37177,
                                          "name": "lender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 37137,
                                          "src": "22527:6:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 37178,
                                          "name": "borrower",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 37143,
                                          "src": "22535:8:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 37179,
                                            "name": "borrowerNonce",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4729,
                                            "src": "22545:13:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                              "typeString": "mapping(address => uint256)"
                                            }
                                          },
                                          "id": 37181,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 37180,
                                            "name": "borrower",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 37143,
                                            "src": "22559:8:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "22545:23:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 37173,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 44981,
                                          "src": "22490:3:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 37174,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "22490:16:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 37182,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "22490:79:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 37172,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44988,
                                    "src": "22480:9:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 37183,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22480:90:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "22471:99:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 37185,
                              "nodeType": "ExpressionStatement",
                              "src": "22471:99:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "id": 37192,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 37187,
                                          "name": "loans",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4587,
                                          "src": "22583:5:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                                            "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                                          }
                                        },
                                        "id": 37189,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 37188,
                                          "name": "loanId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 37115,
                                          "src": "22589:6:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "22583:13:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage",
                                          "typeString": "struct LoanStruct.Loan storage ref"
                                        }
                                      },
                                      "id": 37190,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "id",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4889,
                                      "src": "22583:16:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 37191,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22603:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "22583:21:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6c6f616e20657869737473",
                                    "id": 37193,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "22606:13:130",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_5ebf4e1695dfd1ee8284ec907cb99914e0f65e994f3d1d0460a7e6e3d2136248",
                                      "typeString": "literal_string \"loan exists\""
                                    },
                                    "value": "loan exists"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_5ebf4e1695dfd1ee8284ec907cb99914e0f65e994f3d1d0460a7e6e3d2136248",
                                      "typeString": "literal_string \"loan exists\""
                                    }
                                  ],
                                  "id": 37186,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "22575:7:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 37194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22575:45:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 37195,
                              "nodeType": "ExpressionStatement",
                              "src": "22575:45:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 37196,
                                  "name": "loanLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37161,
                                  "src": "22626:9:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 37198,
                                      "name": "loanId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37115,
                                      "src": "22653:6:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 37199,
                                        "name": "loanParamsLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37113,
                                        "src": "22679:15:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                          "typeString": "struct LoanParamsStruct.LoanParams memory"
                                        }
                                      },
                                      "id": 37200,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "id",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4869,
                                      "src": "22679:18:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 37201,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22720:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 37202,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22735:4:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 37203,
                                      "name": "newPrincipal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37155,
                                      "src": "22756:12:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 37204,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22786:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 37205,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44984,
                                        "src": "22830:5:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 37206,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "22830:15:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 37207,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22865:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 37208,
                                      "name": "initialMargin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37117,
                                      "src": "22906:13:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 37209,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22936:1:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 37210,
                                      "name": "borrower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37143,
                                      "src": "22971:8:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 37211,
                                      "name": "lender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37137,
                                      "src": "22993:6:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      {
                                        "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"
                                      }
                                    ],
                                    "id": 37197,
                                    "name": "Loan",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4912,
                                    "src": "22638:4:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_Loan_$4912_storage_ptr_$",
                                      "typeString": "type(struct LoanStruct.Loan storage pointer)"
                                    }
                                  },
                                  "id": 37212,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [
                                    "id",
                                    "loanParamsId",
                                    "pendingTradesId",
                                    "active",
                                    "principal",
                                    "collateral",
                                    "startTimestamp",
                                    "endTimestamp",
                                    "startMargin",
                                    "startRate",
                                    "borrower",
                                    "lender"
                                  ],
                                  "nodeType": "FunctionCall",
                                  "src": "22638:367:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Loan_$4912_memory",
                                    "typeString": "struct LoanStruct.Loan memory"
                                  }
                                },
                                "src": "22626:379:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                                  "typeString": "struct LoanStruct.Loan memory"
                                }
                              },
                              "id": 37214,
                              "nodeType": "ExpressionStatement",
                              "src": "22626:379:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 37218,
                                    "name": "loanId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37115,
                                    "src": "23037:6:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 37215,
                                    "name": "activeLoansSet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4623,
                                    "src": "23011:14:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                      "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                    }
                                  },
                                  "id": 37217,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "addBytes32",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26787,
                                  "src": "23011:25:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                    "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                                  }
                                },
                                "id": 37219,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23011:33:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 37220,
                              "nodeType": "ExpressionStatement",
                              "src": "23011:33:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 37225,
                                    "name": "loanId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37115,
                                    "src": "23083:6:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 37221,
                                      "name": "lenderLoanSets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4627,
                                      "src": "23049:14:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                                        "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set storage ref)"
                                      }
                                    },
                                    "id": 37223,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 37222,
                                      "name": "lender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37137,
                                      "src": "23064:6:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "23049:22:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                      "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                    }
                                  },
                                  "id": 37224,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "addBytes32",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26787,
                                  "src": "23049:33:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                    "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                                  }
                                },
                                "id": 37226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23049:41:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 37227,
                              "nodeType": "ExpressionStatement",
                              "src": "23049:41:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 37232,
                                    "name": "loanId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37115,
                                    "src": "23133:6:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 37228,
                                      "name": "borrowerLoanSets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4631,
                                      "src": "23095:16:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                                        "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set storage ref)"
                                      }
                                    },
                                    "id": 37230,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 37229,
                                      "name": "borrower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37143,
                                      "src": "23112:8:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "23095:26:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                      "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                    }
                                  },
                                  "id": 37231,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "addBytes32",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 26787,
                                  "src": "23095:37:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                    "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                                  }
                                },
                                "id": 37233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23095:45:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 37234,
                              "nodeType": "ExpressionStatement",
                              "src": "23095:45:130"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 37295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 37291,
                            "name": "manager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37149,
                            "src": "23556:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 37293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23575:1:130",
                                "subdenomination": null,
                                "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": 37292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "23567:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 37294,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23567:10:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "23556:21:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 37304,
                        "nodeType": "IfStatement",
                        "src": "23552:90:130",
                        "trueBody": {
                          "id": 37303,
                          "nodeType": "Block",
                          "src": "23579:63:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 37297,
                                    "name": "loanId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37115,
                                    "src": "23605:6:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 37298,
                                    "name": "borrower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37143,
                                    "src": "23613:8:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 37299,
                                    "name": "manager",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37149,
                                    "src": "23623:7:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 37300,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23632:4:130",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 37296,
                                  "name": "_setDelegatedManager",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37045,
                                  "src": "23584:20:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (bytes32,address,address,bool)"
                                  }
                                },
                                "id": 37301,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23584:53:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 37302,
                              "nodeType": "ExpressionStatement",
                              "src": "23584:53:130"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 37309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 37305,
                              "name": "loans",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4587,
                              "src": "23646:5:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Loan_$4912_storage_$",
                                "typeString": "mapping(bytes32 => struct LoanStruct.Loan storage ref)"
                              }
                            },
                            "id": 37307,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 37306,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37115,
                              "src": "23652:6:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "23646:13:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_storage",
                              "typeString": "struct LoanStruct.Loan storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 37308,
                            "name": "loanLocal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37161,
                            "src": "23662:9:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Loan_$4912_memory_ptr",
                              "typeString": "struct LoanStruct.Loan memory"
                            }
                          },
                          "src": "23646:25:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage",
                            "typeString": "struct LoanStruct.Loan storage ref"
                          }
                        },
                        "id": 37310,
                        "nodeType": "ExpressionStatement",
                        "src": "23646:25:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 37311,
                          "name": "loanId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37115,
                          "src": "23683:6:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 37129,
                        "id": 37312,
                        "nodeType": "Return",
                        "src": "23676:13:130"
                      }
                    ]
                  },
                  "documentation": "@notice Initialize a loan.\n\t * @param loanParamsLocal The loan parameters.\n@param loanId The ID of the loan.\n@param initialMargin The amount of margin of the trade.\n@param sentAddresses The addresses to send tokens: lender, borrower,\n  receiver and manager:\n    lender: must match loan if loanId provided.\n    borrower: must match loan if loanId provided.\n    receiver: receiver of funds (address(0) assumes borrower address).\n    manager: delegated manager of loan unless address(0).\n@param sentValues The values to send:\n    newRate: New loan interest rate.\n    newPrincipal: New loan size (borrowAmount + any borrowed interest).\n    torqueInterest: New amount of interest to escrow for Torque loan (determines initial loan length).\n    loanTokenReceived: Total loanToken deposit (amount not sent to borrower in the case of Torque loans).\n    collateralTokenReceived: Total collateralToken deposit.\n@return The loanId.\n",
                  "id": 37314,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_initializeLoan",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 37126,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37113,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 37314,
                        "src": "22001:33:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 37112,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "22001:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37115,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 37314,
                        "src": "22038:14:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 37114,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "22038:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37117,
                        "name": "initialMargin",
                        "nodeType": "VariableDeclaration",
                        "scope": 37314,
                        "src": "22056:21:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37116,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22056:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37121,
                        "name": "sentAddresses",
                        "nodeType": "VariableDeclaration",
                        "scope": 37314,
                        "src": "22081:31:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$4_memory_ptr",
                          "typeString": "address[4]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 37118,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "22081:7:130",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 37120,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 37119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22089:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "22081:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$4_storage_ptr",
                            "typeString": "address[4]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37125,
                        "name": "sentValues",
                        "nodeType": "VariableDeclaration",
                        "scope": 37314,
                        "src": "22116:28:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$5_memory_ptr",
                          "typeString": "uint256[5]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 37122,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "22116:7:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 37124,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 37123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22124:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "22116:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                            "typeString": "uint256[5]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21997:150:130"
                  },
                  "returnParameters": {
                    "id": 37129,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37128,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 37314,
                        "src": "22166:7:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 37127,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "22166:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22165:9:130"
                  },
                  "scope": 37635,
                  "src": "21973:1720:130",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 37542,
                    "nodeType": "Block",
                    "src": "24389:2255:130",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 37330,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37318,
                                "src": "24448:9:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 37331,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4911,
                              "src": "24448:16:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 37332,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37316,
                                "src": "24466:15:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 37333,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "24466:25:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 37329,
                            "name": "_payInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27616,
                            "src": "24435:12:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 37334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24435:57:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37335,
                        "nodeType": "ExpressionStatement",
                        "src": "24435:57:130"
                      },
                      {
                        "assignments": [
                          37337
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37337,
                            "name": "loanInterestLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 37542,
                            "src": "24497:38:130",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                              "typeString": "struct LoanInterestStruct.LoanInterest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 37336,
                              "name": "LoanInterest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4864,
                              "src": "24497:12:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37342,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 37338,
                            "name": "loanInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4619,
                            "src": "24538:12:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanInterest_$4864_storage_$",
                              "typeString": "mapping(bytes32 => struct LoanInterestStruct.LoanInterest storage ref)"
                            }
                          },
                          "id": 37341,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 37339,
                              "name": "loanLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37318,
                              "src": "24551:9:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                "typeString": "struct LoanStruct.Loan storage pointer"
                              }
                            },
                            "id": 37340,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4889,
                            "src": "24551:12:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24538:26:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanInterest_$4864_storage",
                            "typeString": "struct LoanInterestStruct.LoanInterest storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24497:67:130"
                      },
                      {
                        "assignments": [
                          37344
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37344,
                            "name": "lenderInterestLocal",
                            "nodeType": "VariableDeclaration",
                            "scope": 37542,
                            "src": "24568:42:130",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                              "typeString": "struct LenderInterestStruct.LenderInterest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 37343,
                              "name": "LenderInterest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4854,
                              "src": "24568:14:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37352,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 37345,
                              "name": "lenderInterest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4615,
                              "src": "24613:14:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$_$",
                                "typeString": "mapping(address => mapping(address => struct LenderInterestStruct.LenderInterest storage ref))"
                              }
                            },
                            "id": 37348,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 37346,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37318,
                                "src": "24628:9:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 37347,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4911,
                              "src": "24628:16:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "24613:32:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$",
                              "typeString": "mapping(address => struct LenderInterestStruct.LenderInterest storage ref)"
                            }
                          },
                          "id": 37351,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 37349,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37316,
                              "src": "24646:15:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              }
                            },
                            "id": 37350,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "loanToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4875,
                            "src": "24646:25:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "24613:59:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LenderInterest_$4854_storage",
                            "typeString": "struct LenderInterestStruct.LenderInterest storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24568:104:130"
                      },
                      {
                        "assignments": [
                          37354
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37354,
                            "name": "maxLoanTerm",
                            "nodeType": "VariableDeclaration",
                            "scope": 37542,
                            "src": "24677:19:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 37353,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "24677:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37357,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 37355,
                            "name": "loanParamsLocal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37316,
                            "src": "24699:15:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams memory"
                            }
                          },
                          "id": 37356,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "maxLoanTerm",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4883,
                          "src": "24699:27:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24677:49:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 37359,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37337,
                              "src": "24770:17:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 37360,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37318,
                                "src": "24792:9:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 37361,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4889,
                              "src": "24792:12:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 37362,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37316,
                                "src": "24809:15:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 37363,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "24809:25:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 37364,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37316,
                                "src": "24853:15:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 37365,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "24853:31:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 37366,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37318,
                                "src": "24979:9:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 37367,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "borrower",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4909,
                              "src": "24979:18:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 37368,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44984,
                                "src": "25002:5:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 37369,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "25002:15:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 37358,
                            "name": "_settleFeeRewardForInterestExpense",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27366,
                            "src": "24731:34:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanInterest_$4864_storage_ptr_$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (struct LoanInterestStruct.LoanInterest storage pointer,bytes32,address,address,address,uint256)"
                            }
                          },
                          "id": 37370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24731:290:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37371,
                        "nodeType": "ExpressionStatement",
                        "src": "24731:290:130"
                      },
                      {
                        "assignments": [
                          37373
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37373,
                            "name": "previousDepositRemaining",
                            "nodeType": "VariableDeclaration",
                            "scope": 37542,
                            "src": "25026:32:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 37372,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25026:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37374,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25026:32:130"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 37382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 37377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 37375,
                              "name": "maxLoanTerm",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37354,
                              "src": "25066:11:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 37376,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "25081:1:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "25066:16:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 37381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 37378,
                                "name": "loanLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37318,
                                "src": "25086:9:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                }
                              },
                              "id": 37379,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "endTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4903,
                              "src": "25086:22:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 37380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "25112:1:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "25086:27:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "25066:47:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 37400,
                        "nodeType": "IfStatement",
                        "src": "25062:256:130",
                        "trueBody": {
                          "id": 37399,
                          "nodeType": "Block",
                          "src": "25115:203:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37397,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 37383,
                                  "name": "previousDepositRemaining",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37373,
                                  "src": "25120:24:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "3836343030",
                                      "id": 37395,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "25307:5:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_86400_by_1",
                                        "typeString": "int_const 86400"
                                      },
                                      "value": "86400"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_86400_by_1",
                                        "typeString": "int_const 86400"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 37391,
                                            "name": "loanInterestLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 37337,
                                            "src": "25268:17:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                              "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                            }
                                          },
                                          "id": 37392,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "owedPerDay",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4859,
                                          "src": "25268:28:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 37387,
                                                "name": "block",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 44984,
                                                "src": "25184:5:130",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_block",
                                                  "typeString": "block"
                                                }
                                              },
                                              "id": 37388,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "timestamp",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "25184:15:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 37384,
                                                "name": "loanLocal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 37318,
                                                "src": "25147:9:130",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                                }
                                              },
                                              "id": 37385,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "endTimestamp",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4903,
                                              "src": "25147:27:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 37386,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 42092,
                                            "src": "25147:36:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 37389,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "25147:53:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 37390,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "25147:120:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 37393,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "25147:150:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 37394,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "25147:159:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 37396,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25147:166:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25120:193:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37398,
                              "nodeType": "ExpressionStatement",
                              "src": "25120:193:130"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          37402
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37402,
                            "name": "owedPerDay",
                            "nodeType": "VariableDeclaration",
                            "scope": 37542,
                            "src": "25322:18:130",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 37401,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25322:7:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37414,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_36500000000000000000000_by_1",
                                "typeString": "int_const 36500000000000000000000"
                              },
                              "id": 37412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "333635",
                                "id": 37408,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "25373:3:130",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_365_by_1",
                                  "typeString": "int_const 365"
                                },
                                "value": "365"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "id": 37411,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 37409,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25379:2:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3230",
                                  "id": 37410,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25383:2:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "25379:6:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              },
                              "src": "25373:12:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_36500000000000000000000_by_1",
                                "typeString": "int_const 36500000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_36500000000000000000000_by_1",
                                "typeString": "int_const 36500000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 37405,
                                  "name": "newRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37320,
                                  "src": "25360:7:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37403,
                                  "name": "newPrincipal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37322,
                                  "src": "25343:12:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 37404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "25343:16:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 37406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25343:25:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 37407,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "25343:29:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 37413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25343:43:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25322:64:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 37423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 37415,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37337,
                              "src": "25422:17:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            "id": 37417,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owedPerDay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4859,
                            "src": "25422:28:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 37421,
                                "name": "owedPerDay",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37402,
                                "src": "25486:10:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37418,
                                  "name": "loanInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37337,
                                  "src": "25453:17:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                    "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                  }
                                },
                                "id": 37419,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owedPerDay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4859,
                                "src": "25453:28:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "25453:32:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 37422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25453:44:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25422:75:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 37424,
                        "nodeType": "ExpressionStatement",
                        "src": "25422:75:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 37433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 37425,
                              "name": "lenderInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37344,
                              "src": "25501:19:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                              }
                            },
                            "id": 37427,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owedPerDay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4847,
                            "src": "25501:30:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 37431,
                                "name": "owedPerDay",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37402,
                                "src": "25569:10:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37428,
                                  "name": "lenderInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37344,
                                  "src": "25534:19:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                    "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                  }
                                },
                                "id": 37429,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owedPerDay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4847,
                                "src": "25534:30:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "25534:34:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 37432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25534:46:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25501:79:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 37434,
                        "nodeType": "ExpressionStatement",
                        "src": "25501:79:130"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 37437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 37435,
                            "name": "maxLoanTerm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37354,
                            "src": "25589:11:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 37436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25604:1:130",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "25589:16:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 37510,
                          "nodeType": "Block",
                          "src": "26074:237:130",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 37482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 37479,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37318,
                                    "src": "26108:9:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 37480,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "endTimestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4903,
                                  "src": "26108:22:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 37481,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "26134:1:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "26108:27:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 37494,
                              "nodeType": "IfStatement",
                              "src": "26104:102:130",
                              "trueBody": {
                                "id": 37493,
                                "nodeType": "Block",
                                "src": "26137:69:130",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 37491,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 37483,
                                          "name": "loanLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 37318,
                                          "src": "26143:9:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                            "typeString": "struct LoanStruct.Loan storage pointer"
                                          }
                                        },
                                        "id": 37485,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "endTimestamp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4903,
                                        "src": "26143:22:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 37489,
                                            "name": "maxLoanTerm",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 37354,
                                            "src": "26188:11:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 37486,
                                              "name": "block",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 44984,
                                              "src": "26168:5:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_block",
                                                "typeString": "block"
                                              }
                                            },
                                            "id": 37487,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "timestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "26168:15:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 37488,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "26168:19:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 37490,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "26168:32:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "26143:57:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 37492,
                                    "nodeType": "ExpressionStatement",
                                    "src": "26143:57:130"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 37495,
                                  "name": "interestAmountRequired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37327,
                                  "src": "26211:22:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "3836343030",
                                      "id": 37506,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "26300:5:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_86400_by_1",
                                        "typeString": "int_const 86400"
                                      },
                                      "value": "86400"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_86400_by_1",
                                        "typeString": "int_const 86400"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 37503,
                                          "name": "owedPerDay",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 37402,
                                          "src": "26284:10:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 37499,
                                                "name": "block",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 44984,
                                                "src": "26263:5:130",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_block",
                                                  "typeString": "block"
                                                }
                                              },
                                              "id": 37500,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "timestamp",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "26263:15:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 37496,
                                                "name": "loanLocal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 37318,
                                                "src": "26236:9:130",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                                  "typeString": "struct LoanStruct.Loan storage pointer"
                                                }
                                              },
                                              "id": 37497,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "endTimestamp",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4903,
                                              "src": "26236:22:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 37498,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 42092,
                                            "src": "26236:26:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 37501,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "26236:43:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 37502,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "26236:47:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 37504,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26236:59:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 37505,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "26236:63:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 37507,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26236:70:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "26211:95:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37509,
                              "nodeType": "ExpressionStatement",
                              "src": "26211:95:130"
                            }
                          ]
                        },
                        "id": 37511,
                        "nodeType": "IfStatement",
                        "src": "25585:726:130",
                        "trueBody": {
                          "id": 37478,
                          "nodeType": "Block",
                          "src": "25607:461:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 37438,
                                    "name": "loanLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37318,
                                    "src": "25701:9:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                      "typeString": "struct LoanStruct.Loan storage pointer"
                                    }
                                  },
                                  "id": 37440,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "endTimestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4903,
                                  "src": "25701:22:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 37453,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44984,
                                        "src": "25825:5:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 37454,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "25825:15:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 37449,
                                            "name": "loanInterestLocal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 37337,
                                            "src": "25786:17:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                              "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                            }
                                          },
                                          "id": 37450,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "owedPerDay",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4859,
                                          "src": "25786:28:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "3836343030",
                                              "id": 37446,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "25775:5:130",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_86400_by_1",
                                                "typeString": "int_const 86400"
                                              },
                                              "value": "86400"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_86400_by_1",
                                                "typeString": "int_const 86400"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 37443,
                                                  "name": "previousDepositRemaining",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 37373,
                                                  "src": "25745:24:130",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 37441,
                                                  "name": "torqueInterest",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 37324,
                                                  "src": "25726:14:130",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 37442,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "add",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 42076,
                                                "src": "25726:18:130",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 37444,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "25726:44:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 37445,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 42153,
                                            "src": "25726:48:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 37447,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "25726:55:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 37448,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "div",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42169,
                                        "src": "25726:59:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 37451,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "25726:89:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 37452,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "25726:93:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 37455,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25726:119:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25701:144:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37457,
                              "nodeType": "ExpressionStatement",
                              "src": "25701:144:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37465,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 37458,
                                  "name": "maxLoanTerm",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37354,
                                  "src": "25851:11:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 37462,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44984,
                                        "src": "25892:5:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 37463,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "25892:15:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 37459,
                                        "name": "loanLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37318,
                                        "src": "25865:9:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                                          "typeString": "struct LoanStruct.Loan storage pointer"
                                        }
                                      },
                                      "id": 37460,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "endTimestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4903,
                                      "src": "25865:22:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 37461,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "25865:26:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 37464,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25865:43:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25851:57:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37466,
                              "nodeType": "ExpressionStatement",
                              "src": "25851:57:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 37470,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 37468,
                                      "name": "maxLoanTerm",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37354,
                                      "src": "25981:11:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "33363030",
                                      "id": 37469,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "25995:4:130",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3600_by_1",
                                        "typeString": "int_const 3600"
                                      },
                                      "value": "3600"
                                    },
                                    "src": "25981:18:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6c6f616e20746f6f2073686f7274",
                                    "id": 37471,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26001:16:130",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_395c74adc21b86a9ea2dad18b7b2dc7aff2ebb23c1ff81fb83cac5084bdd448a",
                                      "typeString": "literal_string \"loan too short\""
                                    },
                                    "value": "loan too short"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_395c74adc21b86a9ea2dad18b7b2dc7aff2ebb23c1ff81fb83cac5084bdd448a",
                                      "typeString": "literal_string \"loan too short\""
                                    }
                                  ],
                                  "id": 37467,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "25973:7:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 37472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25973:45:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 37473,
                              "nodeType": "ExpressionStatement",
                              "src": "25973:45:130"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 37474,
                                  "name": "interestAmountRequired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37327,
                                  "src": "26024:22:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 37475,
                                  "name": "torqueInterest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37324,
                                  "src": "26049:14:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "26024:39:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37477,
                              "nodeType": "ExpressionStatement",
                              "src": "26024:39:130"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 37520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 37512,
                              "name": "loanInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37337,
                              "src": "26315:17:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                              }
                            },
                            "id": 37514,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "depositTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4861,
                            "src": "26315:30:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 37518,
                                "name": "interestAmountRequired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37327,
                                "src": "26383:22:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37515,
                                  "name": "loanInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37337,
                                  "src": "26348:17:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanInterest_$4864_storage_ptr",
                                    "typeString": "struct LoanInterestStruct.LoanInterest storage pointer"
                                  }
                                },
                                "id": 37516,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "depositTotal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4861,
                                "src": "26348:30:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "26348:34:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 37519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26348:58:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26315:91:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 37521,
                        "nodeType": "ExpressionStatement",
                        "src": "26315:91:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 37530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 37522,
                              "name": "lenderInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37344,
                              "src": "26458:19:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                              }
                            },
                            "id": 37524,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "principalTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4845,
                            "src": "26458:34:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 37528,
                                "name": "newPrincipal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37322,
                                "src": "26534:12:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37525,
                                  "name": "lenderInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37344,
                                  "src": "26495:19:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                    "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                  }
                                },
                                "id": 37526,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "principalTotal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4845,
                                "src": "26495:34:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37527,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "26495:38:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 37529,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26495:52:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26458:89:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 37531,
                        "nodeType": "ExpressionStatement",
                        "src": "26458:89:130"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 37540,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 37532,
                              "name": "lenderInterestLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37344,
                              "src": "26551:19:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                              }
                            },
                            "id": 37534,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owedTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4849,
                            "src": "26551:29:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 37538,
                                "name": "interestAmountRequired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37327,
                                "src": "26617:22:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37535,
                                  "name": "lenderInterestLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37344,
                                  "src": "26583:19:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LenderInterest_$4854_storage_ptr",
                                    "typeString": "struct LenderInterestStruct.LenderInterest storage pointer"
                                  }
                                },
                                "id": 37536,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owedTotal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4849,
                                "src": "26583:29:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "26583:33:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 37539,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26583:57:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26551:89:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 37541,
                        "nodeType": "ExpressionStatement",
                        "src": "26551:89:130"
                      }
                    ]
                  },
                  "documentation": "@notice Initialize a loan interest.\n\t * @dev A Torque loan is an indefinite-term loan.\n\t * @param loanParamsLocal The loan parameters.\n@param loanLocal The loan object.\n@param newRate The new interest rate of the loan.\n@param newPrincipal The new principal amount of the loan.\n@param torqueInterest The interest rate of the Torque loan.\n\t * @return interestAmountRequired The interest amount required.\n",
                  "id": 37543,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_initializeInterest",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 37325,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37316,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 37543,
                        "src": "24174:33:130",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 37315,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "24174:10:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37318,
                        "name": "loanLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 37543,
                        "src": "24211:22:130",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                          "typeString": "struct LoanStruct.Loan"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 37317,
                          "name": "Loan",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4912,
                          "src": "24211:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Loan_$4912_storage_ptr",
                            "typeString": "struct LoanStruct.Loan"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37320,
                        "name": "newRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 37543,
                        "src": "24237:15:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37319,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24237:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37322,
                        "name": "newPrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 37543,
                        "src": "24256:20:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37321,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24256:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37324,
                        "name": "torqueInterest",
                        "nodeType": "VariableDeclaration",
                        "scope": 37543,
                        "src": "24280:22:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37323,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24280:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24170:168:130"
                  },
                  "returnParameters": {
                    "id": 37328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37327,
                        "name": "interestAmountRequired",
                        "nodeType": "VariableDeclaration",
                        "scope": 37543,
                        "src": "24357:30:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37326,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24357:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24356:32:130"
                  },
                  "scope": 37635,
                  "src": "24142:2502:130",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 37633,
                    "nodeType": "Block",
                    "src": "27347:951:130",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 37560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 37558,
                            "name": "loanToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37545,
                            "src": "27355:9:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 37559,
                            "name": "collateralToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37547,
                            "src": "27368:15:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "27355:28:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 37609,
                          "nodeType": "Block",
                          "src": "27467:616:130",
                          "statements": [
                            {
                              "assignments": [
                                37575,
                                37577
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 37575,
                                  "name": "sourceToDestRate",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 37609,
                                  "src": "27658:24:130",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 37574,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "27658:7:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 37577,
                                  "name": "sourceToDestPrecision",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 37609,
                                  "src": "27684:29:130",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 37576,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "27684:7:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 37585,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 37582,
                                    "name": "collateralToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37547,
                                    "src": "27751:15:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 37583,
                                    "name": "loanToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37545,
                                    "src": "27768:9:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 37579,
                                        "name": "priceFeeds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4575,
                                        "src": "27729:10:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 37578,
                                      "name": "IPriceFeeds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8707,
                                      "src": "27717:11:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                        "typeString": "type(contract IPriceFeeds)"
                                      }
                                    },
                                    "id": 37580,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "27717:23:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                      "typeString": "contract IPriceFeeds"
                                    }
                                  },
                                  "id": 37581,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "queryRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8595,
                                  "src": "27717:33:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address) view external returns (uint256,uint256)"
                                  }
                                },
                                "id": 37584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27717:61:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "27657:121:130"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 37588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 37586,
                                  "name": "sourceToDestRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37575,
                                  "src": "27787:16:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 37587,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "27807:1:130",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "27787:21:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 37608,
                              "nodeType": "IfStatement",
                              "src": "27783:296:130",
                              "trueBody": {
                                "id": 37607,
                                "nodeType": "Block",
                                "src": "27810:269:130",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 37605,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 37589,
                                        "name": "collateralTokenAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37556,
                                        "src": "27816:21:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            },
                                            "id": 37603,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3130",
                                              "id": 37601,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "27924:2:130",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                              },
                                              "value": "10"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "**",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3230",
                                              "id": 37602,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "27928:2:130",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_20_by_1",
                                                "typeString": "int_const 20"
                                              },
                                              "value": "20"
                                            },
                                            "src": "27924:6:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                              "typeString": "int_const 100000000000000000000"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 37598,
                                                "name": "marginAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 37551,
                                                "src": "27906:12:130",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 37595,
                                                    "name": "sourceToDestRate",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 37575,
                                                    "src": "27884:16:130",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 37592,
                                                        "name": "sourceToDestPrecision",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 37577,
                                                        "src": "27857:21:130",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 37590,
                                                        "name": "newPrincipal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 37549,
                                                        "src": "27840:12:130",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "id": 37591,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "mul",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 42153,
                                                      "src": "27840:16:130",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                      }
                                                    },
                                                    "id": 37593,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "27840:39:130",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 37594,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "div",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 42169,
                                                  "src": "27840:43:130",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                  }
                                                },
                                                "id": 37596,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "27840:61:130",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 37597,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 42153,
                                              "src": "27840:65:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 37599,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "27840:79:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 37600,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "div",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42169,
                                          "src": "27840:83:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 37604,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "27840:91:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "27816:115:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 37606,
                                    "nodeType": "ExpressionStatement",
                                    "src": "27816:115:130"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 37610,
                        "nodeType": "IfStatement",
                        "src": "27351:732:130",
                        "trueBody": {
                          "id": 37573,
                          "nodeType": "Block",
                          "src": "27385:76:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 37561,
                                  "name": "collateralTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37556,
                                  "src": "27390:21:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                        "typeString": "int_const 100000000000000000000"
                                      },
                                      "id": 37569,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 37567,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "27449:2:130",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3230",
                                        "id": 37568,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "27453:2:130",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_20_by_1",
                                          "typeString": "int_const 20"
                                        },
                                        "value": "20"
                                      },
                                      "src": "27449:6:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                        "typeString": "int_const 100000000000000000000"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                        "typeString": "int_const 100000000000000000000"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 37564,
                                          "name": "marginAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 37551,
                                          "src": "27431:12:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 37562,
                                          "name": "newPrincipal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 37549,
                                          "src": "27414:12:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 37563,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "27414:16:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 37565,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "27414:30:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 37566,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "27414:34:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 37570,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "27414:42:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "27390:66:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37572,
                              "nodeType": "ExpressionStatement",
                              "src": "27390:66:130"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 37615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 37611,
                            "name": "isTorqueLoan",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37553,
                            "src": "28139:12:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 37614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 37612,
                              "name": "collateralTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37556,
                              "src": "28155:21:130",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 37613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28180:1:130",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "28155:26:130",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "28139:42:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 37632,
                        "nodeType": "IfStatement",
                        "src": "28135:160:130",
                        "trueBody": {
                          "id": 37631,
                          "nodeType": "Block",
                          "src": "28183:112:130",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 37616,
                                  "name": "collateralTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37556,
                                  "src": "28188:21:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 37627,
                                      "name": "collateralTokenAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37556,
                                      "src": "28268:21:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 37624,
                                          "name": "marginAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 37551,
                                          "src": "28250:12:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                "typeString": "int_const 100000000000000000000"
                                              },
                                              "id": 37621,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "3130",
                                                "id": 37619,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "28238:2:130",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_10_by_1",
                                                  "typeString": "int_const 10"
                                                },
                                                "value": "10"
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "**",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "3230",
                                                "id": 37620,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "28242:2:130",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_20_by_1",
                                                  "typeString": "int_const 20"
                                                },
                                                "value": "20"
                                              },
                                              "src": "28238:6:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                "typeString": "int_const 100000000000000000000"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                                "typeString": "int_const 100000000000000000000"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 37617,
                                              "name": "collateralTokenAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 37556,
                                              "src": "28212:21:130",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 37618,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 42153,
                                            "src": "28212:25:130",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 37622,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "28212:33:130",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 37623,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "div",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42169,
                                        "src": "28212:37:130",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 37625,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "28212:51:130",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 37626,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "28212:55:130",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 37628,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "28212:78:130",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "28188:102:130",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37630,
                              "nodeType": "ExpressionStatement",
                              "src": "28188:102:130"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Get the required collateral.\n\t * @dev Basically collateral = newPrincipal * marginAmount\n\t * @param loanToken The loan token instance address.\n@param collateralToken The collateral token instance address.\n@param newPrincipal The updated amount of principal (current debt).\n@param marginAmount The amount of margin of the trade.\n@param isTorqueLoan Whether the loan is a Torque loan.\n\t * @return collateralTokenAmount The required collateral.\n",
                  "id": 37634,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getRequiredCollateral",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 37554,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37545,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 37634,
                        "src": "27176:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 37544,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27176:7:130",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37547,
                        "name": "collateralToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 37634,
                        "src": "27197:23:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 37546,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27197:7:130",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37549,
                        "name": "newPrincipal",
                        "nodeType": "VariableDeclaration",
                        "scope": 37634,
                        "src": "27224:20:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37548,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27224:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37551,
                        "name": "marginAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 37634,
                        "src": "27248:20:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37550,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27248:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37553,
                        "name": "isTorqueLoan",
                        "nodeType": "VariableDeclaration",
                        "scope": 37634,
                        "src": "27272:17:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 37552,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "27272:4:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "27172:120:130"
                  },
                  "returnParameters": {
                    "id": 37557,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37556,
                        "name": "collateralTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 37634,
                        "src": "27316:29:130",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37555,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27316:7:130",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "27315:31:130"
                  },
                  "scope": 37635,
                  "src": "27141:1157:130",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 37636,
              "src": "676:27624:130"
            }
          ],
          "src": "118:28183:130"
        },
        "id": 130
      },
      "contracts/modules/LoanSettings.sol": {
        "ast": {
          "absolutePath": "contracts/modules/LoanSettings.sol",
          "exportedSymbols": {
            "LoanSettings": [
              38162
            ]
          },
          "id": 38163,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 37637,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:131"
            },
            {
              "id": 37638,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "142:33:131"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 37639,
              "nodeType": "ImportDirective",
              "scope": 38163,
              "sourceUnit": 4842,
              "src": "177:27:131",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/LoanSettingsEvents.sol",
              "file": "../events/LoanSettingsEvents.sol",
              "id": 37640,
              "nodeType": "ImportDirective",
              "scope": 38163,
              "sourceUnit": 6045,
              "src": "205:42:131",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/ModuleCommonFunctionalities.sol",
              "file": "../mixins/ModuleCommonFunctionalities.sol",
              "id": 37641,
              "nodeType": "ImportDirective",
              "scope": 38163,
              "sourceUnit": 27833,
              "src": "248:51:131",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 37642,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "602:5:131",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 37643,
                  "nodeType": "InheritanceSpecifier",
                  "src": "602:5:131"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 37644,
                    "name": "LoanSettingsEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6044,
                    "src": "609:18:131",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanSettingsEvents_$6044",
                      "typeString": "contract LoanSettingsEvents"
                    }
                  },
                  "id": 37645,
                  "nodeType": "InheritanceSpecifier",
                  "src": "609:18:131"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 37646,
                    "name": "ModuleCommonFunctionalities",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27832,
                    "src": "629:27:131",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModuleCommonFunctionalities_$27832",
                      "typeString": "contract ModuleCommonFunctionalities"
                    }
                  },
                  "id": 37647,
                  "nodeType": "InheritanceSpecifier",
                  "src": "629:27:131"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                6044,
                6055,
                27832,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title Loan Settings contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains functions to get and set loan parameters.\n",
              "fullyImplemented": true,
              "id": 38162,
              "linearizedBaseContracts": [
                38162,
                27832,
                6044,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913,
                6055
              ],
              "name": "LoanSettings",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 37650,
                    "nodeType": "Block",
                    "src": "731:2:131",
                    "statements": []
                  },
                  "documentation": "@notice Empty public constructor.\n",
                  "id": 37651,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 37648,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "721:2:131"
                  },
                  "returnParameters": {
                    "id": 37649,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "731:0:131"
                  },
                  "scope": 38162,
                  "src": "710:23:131",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 37658,
                    "nodeType": "Block",
                    "src": "837:53:131",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "4c6f616e53657474696e6773202d2066616c6c6261636b206e6f7420616c6c6f776564",
                              "id": 37655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "848:37:131",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ed692d25024f581f36c038cb264594ab40ef0bc5f9251f7f7580d45efa59d9a6",
                                "typeString": "literal_string \"LoanSettings - fallback not allowed\""
                              },
                              "value": "LoanSettings - fallback not allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_ed692d25024f581f36c038cb264594ab40ef0bc5f9251f7f7580d45efa59d9a6",
                                "typeString": "literal_string \"LoanSettings - fallback not allowed\""
                              }
                            ],
                            "id": 37654,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44999,
                              45000
                            ],
                            "referencedDeclaration": 45000,
                            "src": "841:6:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 37656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "841:45:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37657,
                        "nodeType": "ExpressionStatement",
                        "src": "841:45:131"
                      }
                    ]
                  },
                  "documentation": "@notice Fallback function is to react to receiving value (rBTC).\n",
                  "id": 37659,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 37652,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "825:2:131"
                  },
                  "returnParameters": {
                    "id": 37653,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "837:0:131"
                  },
                  "scope": 38162,
                  "src": "817:73:131",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 37722,
                    "nodeType": "Block",
                    "src": "1073:500:131",
                    "statements": [
                      {
                        "assignments": [
                          37667
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37667,
                            "name": "prevModuleContractAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 37722,
                            "src": "1077:33:131",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 37666,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1077:7:131",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37673,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 37668,
                            "name": "logicTargets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4583,
                            "src": "1113:12:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                              "typeString": "mapping(bytes4 => address)"
                            }
                          },
                          "id": 37672,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 37669,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45332,
                                "src": "1126:4:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_LoanSettings_$38162",
                                  "typeString": "contract LoanSettings"
                                }
                              },
                              "id": 37670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "setupLoanParams",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 37767,
                              "src": "1126:20:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                                "typeString": "function (struct LoanParamsStruct.LoanParams memory[] memory) external returns (bytes32[] memory)"
                              }
                            },
                            "id": 37671,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1126:29:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1113:43:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1077:79:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37675,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45332,
                                  "src": "1171:4:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanSettings_$38162",
                                    "typeString": "contract LoanSettings"
                                  }
                                },
                                "id": 37676,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setupLoanParams",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 37767,
                                "src": "1171:20:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                                  "typeString": "function (struct LoanParamsStruct.LoanParams memory[] memory) external returns (bytes32[] memory)"
                                }
                              },
                              "id": 37677,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1171:29:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 37678,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37661,
                              "src": "1202:6:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 37674,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1160:10:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 37679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1160:49:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37680,
                        "nodeType": "ExpressionStatement",
                        "src": "1160:49:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37682,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45332,
                                  "src": "1224:4:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanSettings_$38162",
                                    "typeString": "contract LoanSettings"
                                  }
                                },
                                "id": 37683,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "disableLoanParams",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 37843,
                                "src": "1224:22:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                                  "typeString": "function (bytes32[] memory) external"
                                }
                              },
                              "id": 37684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1224:31:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 37685,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37661,
                              "src": "1257:6:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 37681,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1213:10:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 37686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1213:51:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37687,
                        "nodeType": "ExpressionStatement",
                        "src": "1213:51:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37689,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45332,
                                  "src": "1279:4:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanSettings_$38162",
                                    "typeString": "contract LoanSettings"
                                  }
                                },
                                "id": 37690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLoanParams",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 37909,
                                "src": "1279:18:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr_$",
                                  "typeString": "function (bytes32[] memory) view external returns (struct LoanParamsStruct.LoanParams memory[] memory)"
                                }
                              },
                              "id": 37691,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1279:27:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 37692,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37661,
                              "src": "1308:6:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 37688,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1268:10:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 37693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1268:47:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37694,
                        "nodeType": "ExpressionStatement",
                        "src": "1268:47:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37696,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45332,
                                  "src": "1330:4:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanSettings_$38162",
                                    "typeString": "contract LoanSettings"
                                  }
                                },
                                "id": 37697,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLoanParamsList",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38002,
                                "src": "1330:22:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                                  "typeString": "function (address,uint256,uint256) view external returns (bytes32[] memory)"
                                }
                              },
                              "id": 37698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1330:31:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 37699,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37661,
                              "src": "1363:6:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 37695,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1319:10:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 37700,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1319:51:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37701,
                        "nodeType": "ExpressionStatement",
                        "src": "1319:51:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37703,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45332,
                                  "src": "1385:4:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanSettings_$38162",
                                    "typeString": "contract LoanSettings"
                                  }
                                },
                                "id": 37704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getTotalPrincipal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38019,
                                "src": "1385:22:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address,address) view external returns (uint256)"
                                }
                              },
                              "id": 37705,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1385:31:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 37706,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37661,
                              "src": "1418:6:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 37702,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1374:10:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 37707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1374:51:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37708,
                        "nodeType": "ExpressionStatement",
                        "src": "1374:51:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37710,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45332,
                                  "src": "1440:4:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LoanSettings_$38162",
                                    "typeString": "contract LoanSettings"
                                  }
                                },
                                "id": 37711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "minInitialMargin",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38161,
                                "src": "1440:21:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                                  "typeString": "function (bytes32) view external returns (uint256)"
                                }
                              },
                              "id": 37712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1440:30:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 37713,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37661,
                              "src": "1472:6:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 37709,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1429:10:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 37714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1429:50:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37715,
                        "nodeType": "ExpressionStatement",
                        "src": "1429:50:131"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 37717,
                              "name": "prevModuleContractAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37667,
                              "src": "1519:25:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 37718,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37661,
                              "src": "1546:6:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4c6f616e53657474696e6773",
                              "id": 37719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1554:14:131",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ca37b8be8681e0d53972d8a052e87dd9dcd5b45c7f0b6cb3683ad7bc09157478",
                                "typeString": "literal_string \"LoanSettings\""
                              },
                              "value": "LoanSettings"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ca37b8be8681e0d53972d8a052e87dd9dcd5b45c7f0b6cb3683ad7bc09157478",
                                "typeString": "literal_string \"LoanSettings\""
                              }
                            ],
                            "id": 37716,
                            "name": "ProtocolModuleContractReplaced",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6054,
                            "src": "1488:30:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32)"
                            }
                          },
                          "id": 37720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1488:81:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37721,
                        "nodeType": "EmitStatement",
                        "src": "1483:86:131"
                      }
                    ]
                  },
                  "documentation": "@notice Set function selectors on target contract.\n\t * @param target The address of the target contract.\n",
                  "id": 37723,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 37664,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 37663,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1063:9:131",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1063:9:131"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 37662,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37661,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 37723,
                        "src": "1038:14:131",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 37660,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1038:7:131",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1037:16:131"
                  },
                  "returnParameters": {
                    "id": 37665,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1073:0:131"
                  },
                  "scope": 38162,
                  "src": "1018:555:131",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 37766,
                    "nodeType": "Block",
                    "src": "2006:185:131",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 37741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 37734,
                            "name": "loanParamsIdList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37732,
                            "src": "2010:16:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37738,
                                  "name": "loanParamsList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37726,
                                  "src": "2043:14:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_calldata_$dyn_calldata_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams calldata[] calldata"
                                  }
                                },
                                "id": 37739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2043:21:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 37737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "2029:13:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (bytes32[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 37735,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2033:7:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "id": 37736,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "2033:9:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                  "typeString": "bytes32[]"
                                }
                              }
                            },
                            "id": 37740,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2029:36:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "src": "2010:55:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "id": 37742,
                        "nodeType": "ExpressionStatement",
                        "src": "2010:55:131"
                      },
                      {
                        "body": {
                          "id": 37764,
                          "nodeType": "Block",
                          "src": "2121:67:131",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 37754,
                                    "name": "loanParamsIdList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37732,
                                    "src": "2126:16:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  "id": 37756,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 37755,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37744,
                                    "src": "2143:1:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2126:19:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 37758,
                                        "name": "loanParamsList",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37726,
                                        "src": "2165:14:131",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_calldata_$dyn_calldata_ptr",
                                          "typeString": "struct LoanParamsStruct.LoanParams calldata[] calldata"
                                        }
                                      },
                                      "id": 37760,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 37759,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37744,
                                        "src": "2180:1:131",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2165:17:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_calldata",
                                        "typeString": "struct LoanParamsStruct.LoanParams calldata"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_calldata",
                                        "typeString": "struct LoanParamsStruct.LoanParams calldata"
                                      }
                                    ],
                                    "id": 37757,
                                    "name": "_setupLoanParams",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 38148,
                                    "src": "2148:16:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LoanParams_$4884_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (struct LoanParamsStruct.LoanParams memory) returns (bytes32)"
                                    }
                                  },
                                  "id": 37761,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2148:35:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "2126:57:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 37763,
                              "nodeType": "ExpressionStatement",
                              "src": "2126:57:131"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 37750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 37747,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37744,
                            "src": "2089:1:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 37748,
                              "name": "loanParamsList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37726,
                              "src": "2093:14:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_calldata_$dyn_calldata_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams calldata[] calldata"
                              }
                            },
                            "id": 37749,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2093:21:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2089:25:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 37765,
                        "initializationExpression": {
                          "assignments": [
                            37744
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 37744,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 37765,
                              "src": "2074:9:131",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 37743,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2074:7:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 37746,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 37745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2086:1:131",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2074:13:131"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 37752,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2116:3:131",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 37751,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37744,
                              "src": "2116:1:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 37753,
                          "nodeType": "ExpressionStatement",
                          "src": "2116:3:131"
                        },
                        "nodeType": "ForStatement",
                        "src": "2069:119:131"
                      }
                    ]
                  },
                  "documentation": "@notice Setup loan parameters, by looping every loan\nand populating its parameters.\n\t * @dev For each loan calls _setupLoanParams internal function.\n\t * @param loanParamsList The array of loan parameters.\n\t * @return loanParamsIdList The array of loan parameters IDs.\n",
                  "id": 37767,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 37729,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 37728,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "1948:13:131",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1948:13:131"
                    }
                  ],
                  "name": "setupLoanParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 37727,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37726,
                        "name": "loanParamsList",
                        "nodeType": "VariableDeclaration",
                        "scope": 37767,
                        "src": "1901:36:131",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_calldata_$dyn_calldata_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 37724,
                            "name": "LoanParams",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4884,
                            "src": "1901:10:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            }
                          },
                          "id": 37725,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1901:12:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_storage_$dyn_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1900:38:131"
                  },
                  "returnParameters": {
                    "id": 37733,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37732,
                        "name": "loanParamsIdList",
                        "nodeType": "VariableDeclaration",
                        "scope": 37767,
                        "src": "1971:33:131",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 37730,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "1971:7:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 37731,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1971:9:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1970:35:131"
                  },
                  "scope": 38162,
                  "src": "1876:315:131",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 37842,
                    "nodeType": "Block",
                    "src": "2467:612:131",
                    "statements": [
                      {
                        "body": {
                          "id": 37840,
                          "nodeType": "Block",
                          "src": "2525:551:131",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 37795,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 37787,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44994,
                                        "src": "2538:3:131",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 37788,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2538:10:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 37789,
                                          "name": "loanParams",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4591,
                                          "src": "2552:10:131",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                                            "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                                          }
                                        },
                                        "id": 37793,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 37790,
                                            "name": "loanParamsIdList",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 37770,
                                            "src": "2563:16:131",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                              "typeString": "bytes32[] calldata"
                                            }
                                          },
                                          "id": 37792,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 37791,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 37776,
                                            "src": "2580:1:131",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "2563:19:131",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2552:31:131",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                                          "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                                        }
                                      },
                                      "id": 37794,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "owner",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4873,
                                      "src": "2552:37:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "2538:51:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "756e617574686f72697a6564206f776e6572",
                                    "id": 37796,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2591:20:131",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_ffc4c7f6a7ac72b29f8391c33c0fc3e947f2e54d48dbd477f735193f37b59de9",
                                      "typeString": "literal_string \"unauthorized owner\""
                                    },
                                    "value": "unauthorized owner"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_ffc4c7f6a7ac72b29f8391c33c0fc3e947f2e54d48dbd477f735193f37b59de9",
                                      "typeString": "literal_string \"unauthorized owner\""
                                    }
                                  ],
                                  "id": 37786,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "2530:7:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 37797,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2530:82:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 37798,
                              "nodeType": "ExpressionStatement",
                              "src": "2530:82:131"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 37799,
                                      "name": "loanParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4591,
                                      "src": "2617:10:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                                        "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                                      }
                                    },
                                    "id": 37803,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 37800,
                                        "name": "loanParamsIdList",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37770,
                                        "src": "2628:16:131",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                          "typeString": "bytes32[] calldata"
                                        }
                                      },
                                      "id": 37802,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 37801,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 37776,
                                        "src": "2645:1:131",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2628:19:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2617:31:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                                      "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                                    }
                                  },
                                  "id": 37804,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "active",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4871,
                                  "src": "2617:38:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "66616c7365",
                                  "id": 37805,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2658:5:131",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "2617:46:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 37807,
                              "nodeType": "ExpressionStatement",
                              "src": "2617:46:131"
                            },
                            {
                              "assignments": [
                                37809
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 37809,
                                  "name": "loanParamsLocal",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 37840,
                                  "src": "2669:33:131",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 37808,
                                    "name": "LoanParams",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 4884,
                                    "src": "2669:10:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 37815,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 37810,
                                  "name": "loanParams",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4591,
                                  "src": "2705:10:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                                    "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                                  }
                                },
                                "id": 37814,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 37811,
                                    "name": "loanParamsIdList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37770,
                                    "src": "2716:16:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                      "typeString": "bytes32[] calldata"
                                    }
                                  },
                                  "id": 37813,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 37812,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37776,
                                    "src": "2733:1:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2716:19:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2705:31:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2669:67:131"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 37817,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37809,
                                      "src": "2770:15:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 37818,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4869,
                                    "src": "2770:18:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 37819,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37809,
                                      "src": "2794:15:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 37820,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4873,
                                    "src": "2794:21:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 37821,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37809,
                                      "src": "2821:15:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 37822,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "loanToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4875,
                                    "src": "2821:25:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 37823,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37809,
                                      "src": "2852:15:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 37824,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4877,
                                    "src": "2852:31:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 37825,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37809,
                                      "src": "2889:15:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 37826,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "minInitialMargin",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4879,
                                    "src": "2889:32:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 37827,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37809,
                                      "src": "2927:15:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 37828,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maintenanceMargin",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4881,
                                    "src": "2927:33:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 37829,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37809,
                                      "src": "2966:15:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 37830,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maxLoanTerm",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4883,
                                    "src": "2966:27:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "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"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 37816,
                                  "name": "LoanParamsDisabled",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6037,
                                  "src": "2746:18:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (bytes32,address,address,address,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 37831,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2746:252:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 37832,
                              "nodeType": "EmitStatement",
                              "src": "2741:257:131"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 37834,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37809,
                                      "src": "3029:15:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 37835,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4869,
                                    "src": "3029:18:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 37836,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37809,
                                      "src": "3049:15:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 37837,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4873,
                                    "src": "3049:21:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 37833,
                                  "name": "LoanParamsIdDisabled",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6043,
                                  "src": "3008:20:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address)"
                                  }
                                },
                                "id": 37838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3008:63:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 37839,
                              "nodeType": "EmitStatement",
                              "src": "3003:68:131"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 37782,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 37779,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37776,
                            "src": "2491:1:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 37780,
                              "name": "loanParamsIdList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37770,
                              "src": "2495:16:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                "typeString": "bytes32[] calldata"
                              }
                            },
                            "id": 37781,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2495:23:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2491:27:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 37841,
                        "initializationExpression": {
                          "assignments": [
                            37776
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 37776,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 37841,
                              "src": "2476:9:131",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 37775,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2476:7:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 37778,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 37777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2488:1:131",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2476:13:131"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 37784,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2520:3:131",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 37783,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37776,
                              "src": "2520:1:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 37785,
                          "nodeType": "ExpressionStatement",
                          "src": "2520:3:131"
                        },
                        "nodeType": "ForStatement",
                        "src": "2471:605:131"
                      }
                    ]
                  },
                  "documentation": "@notice Deactivate LoanParams for future loans. Active loans\nusing it are unaffected.\n\t * @param loanParamsIdList The array of loan parameters IDs to deactivate.\n",
                  "id": 37843,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 37773,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 37772,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "2453:13:131",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2453:13:131"
                    }
                  ],
                  "name": "disableLoanParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 37771,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37770,
                        "name": "loanParamsIdList",
                        "nodeType": "VariableDeclaration",
                        "scope": 37843,
                        "src": "2407:35:131",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 37768,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "2407:7:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 37769,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2407:9:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2406:37:131"
                  },
                  "returnParameters": {
                    "id": 37774,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2467:0:131"
                  },
                  "scope": 38162,
                  "src": "2380:699:131",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 37908,
                    "nodeType": "Block",
                    "src": "3408:444:131",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 37859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 37852,
                            "name": "loanParamsList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37850,
                            "src": "3412:14:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37856,
                                  "name": "loanParamsIdList",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37846,
                                  "src": "3446:16:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                "id": 37857,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3446:23:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 37855,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "3429:16:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (struct LoanParamsStruct.LoanParams memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "contractScope": null,
                                  "id": 37853,
                                  "name": "LoanParams",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 4884,
                                  "src": "3433:10:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams"
                                  }
                                },
                                "id": 37854,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "3433:12:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_storage_$dyn_storage_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams[]"
                                }
                              }
                            },
                            "id": 37858,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3429:41:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory",
                              "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                            }
                          },
                          "src": "3412:58:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                          }
                        },
                        "id": 37860,
                        "nodeType": "ExpressionStatement",
                        "src": "3412:58:131"
                      },
                      {
                        "assignments": [
                          37862
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37862,
                            "name": "itemCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 37908,
                            "src": "3474:17:131",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 37861,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3474:7:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37863,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3474:17:131"
                      },
                      {
                        "body": {
                          "id": 37899,
                          "nodeType": "Block",
                          "src": "3550:194:131",
                          "statements": [
                            {
                              "assignments": [
                                37876
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 37876,
                                  "name": "loanParamsLocal",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 37899,
                                  "src": "3555:33:131",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 37875,
                                    "name": "LoanParams",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 4884,
                                    "src": "3555:10:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 37882,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 37877,
                                  "name": "loanParams",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4591,
                                  "src": "3591:10:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                                    "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                                  }
                                },
                                "id": 37881,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 37878,
                                    "name": "loanParamsIdList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37846,
                                    "src": "3602:16:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  "id": 37880,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 37879,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37865,
                                    "src": "3619:1:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3602:19:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3591:31:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                                  "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3555:67:131"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 37886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 37883,
                                    "name": "loanParamsLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37876,
                                    "src": "3631:15:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams memory"
                                    }
                                  },
                                  "id": 37884,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "id",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4869,
                                  "src": "3631:18:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 37885,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3653:1:131",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3631:23:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 37889,
                              "nodeType": "IfStatement",
                              "src": "3627:49:131",
                              "trueBody": {
                                "id": 37888,
                                "nodeType": "Block",
                                "src": "3656:20:131",
                                "statements": [
                                  {
                                    "id": 37887,
                                    "nodeType": "Continue",
                                    "src": "3662:8:131"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37894,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 37890,
                                    "name": "loanParamsList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37850,
                                    "src": "3680:14:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                                    }
                                  },
                                  "id": 37892,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 37891,
                                    "name": "itemCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37862,
                                    "src": "3695:9:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3680:25:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 37893,
                                  "name": "loanParamsLocal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37876,
                                  "src": "3708:15:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                    "typeString": "struct LoanParamsStruct.LoanParams memory"
                                  }
                                },
                                "src": "3680:43:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 37895,
                              "nodeType": "ExpressionStatement",
                              "src": "3680:43:131"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37897,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "3728:11:131",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 37896,
                                  "name": "itemCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37862,
                                  "src": "3728:9:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37898,
                              "nodeType": "ExpressionStatement",
                              "src": "3728:11:131"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 37871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 37868,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37865,
                            "src": "3516:1:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 37869,
                              "name": "loanParamsIdList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37846,
                              "src": "3520:16:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 37870,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3520:23:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3516:27:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 37900,
                        "initializationExpression": {
                          "assignments": [
                            37865
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 37865,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 37900,
                              "src": "3501:9:131",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 37864,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3501:7:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 37867,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 37866,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3513:1:131",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3501:13:131"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 37873,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3545:3:131",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 37872,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37865,
                              "src": "3545:1:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 37874,
                          "nodeType": "ExpressionStatement",
                          "src": "3545:3:131"
                        },
                        "nodeType": "ForStatement",
                        "src": "3496:248:131"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 37904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 37901,
                            "name": "itemCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37862,
                            "src": "3752:9:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 37902,
                              "name": "loanParamsList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37850,
                              "src": "3764:14:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory[] memory"
                              }
                            },
                            "id": 37903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3764:21:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3752:33:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 37907,
                        "nodeType": "IfStatement",
                        "src": "3748:101:131",
                        "trueBody": {
                          "id": 37906,
                          "nodeType": "Block",
                          "src": "3787:62:131",
                          "statements": [
                            {
                              "externalReferences": [
                                {
                                  "loanParamsList": {
                                    "declaration": 37850,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3814:14:131",
                                    "valueSize": 1
                                  }
                                },
                                {
                                  "itemCount": {
                                    "declaration": 37862,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "3830:9:131",
                                    "valueSize": 1
                                  }
                                }
                              ],
                              "id": 37905,
                              "nodeType": "InlineAssembly",
                              "operations": "{\n    mstore(loanParamsList, itemCount)\n}",
                              "src": "3792:53:131"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Get loan parameters for every matching IDs.\n\t * @param loanParamsIdList The array of loan parameters IDs to match.\n\t * @return loanParamsList The result array of loan parameters.\n",
                  "id": 37909,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLoanParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 37847,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37846,
                        "name": "loanParamsIdList",
                        "nodeType": "VariableDeclaration",
                        "scope": 37909,
                        "src": "3316:33:131",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 37844,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "3316:7:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 37845,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3316:9:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3315:35:131"
                  },
                  "returnParameters": {
                    "id": 37851,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37850,
                        "name": "loanParamsList",
                        "nodeType": "VariableDeclaration",
                        "scope": 37909,
                        "src": "3372:34:131",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_memory_$dyn_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 37848,
                            "name": "LoanParams",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4884,
                            "src": "3372:10:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams"
                            }
                          },
                          "id": 37849,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3372:12:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_LoanParams_$4884_storage_$dyn_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3371:36:131"
                  },
                  "scope": 38162,
                  "src": "3293:559:131",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 38001,
                    "nodeType": "Block",
                    "src": "4291:503:131",
                    "statements": [
                      {
                        "assignments": [
                          37924
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37924,
                            "name": "set",
                            "nodeType": "VariableDeclaration",
                            "scope": 38001,
                            "src": "4295:43:131",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                              "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 37923,
                              "name": "EnumerableBytes32Set.Bytes32Set",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 26734,
                              "src": "4295:31:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                "typeString": "struct EnumerableBytes32Set.Bytes32Set"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37928,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 37925,
                            "name": "userLoanParamSets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4635,
                            "src": "4341:17:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                              "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set storage ref)"
                            }
                          },
                          "id": 37927,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 37926,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37911,
                            "src": "4359:5:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4341:24:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                            "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4295:70:131"
                      },
                      {
                        "assignments": [
                          37930
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37930,
                            "name": "end",
                            "nodeType": "VariableDeclaration",
                            "scope": 38001,
                            "src": "4369:11:131",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 37929,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4369:7:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37940,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37936,
                                  "name": "set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37924,
                                  "src": "4407:3:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                    "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                  }
                                },
                                "id": 37937,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 27023,
                                "src": "4407:10:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$26734_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                  "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 37938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4407:12:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 37933,
                                  "name": "count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37915,
                                  "src": "4393:5:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37931,
                                  "name": "start",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37913,
                                  "src": "4383:5:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 37932,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42076,
                                "src": "4383:9:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 37934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4383:16:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 37935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "min256",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42308,
                            "src": "4383:23:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 37939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4383:37:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4369:51:131"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 37943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 37941,
                            "name": "start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37913,
                            "src": "4428:5:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 37942,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37930,
                            "src": "4437:3:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4428:12:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 37947,
                        "nodeType": "IfStatement",
                        "src": "4424:49:131",
                        "trueBody": {
                          "id": 37946,
                          "nodeType": "Block",
                          "src": "4442:31:131",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37944,
                                "name": "loanParamsList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37919,
                                "src": "4454:14:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "functionReturnParameters": 37920,
                              "id": 37945,
                              "nodeType": "Return",
                              "src": "4447:21:131"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 37954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 37948,
                            "name": "loanParamsList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37919,
                            "src": "4477:14:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 37952,
                                "name": "count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37915,
                                "src": "4508:5:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 37951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "4494:13:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (bytes32[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 37949,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4498:7:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "id": 37950,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "4498:9:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                  "typeString": "bytes32[]"
                                }
                              }
                            },
                            "id": 37953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4494:20:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "src": "4477:37:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "id": 37955,
                        "nodeType": "ExpressionStatement",
                        "src": "4477:37:131"
                      },
                      {
                        "assignments": [
                          37957
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37957,
                            "name": "itemCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 38001,
                            "src": "4518:17:131",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 37956,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4518:7:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 37958,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4518:17:131"
                      },
                      {
                        "body": {
                          "id": 37993,
                          "nodeType": "Block",
                          "src": "4581:121:131",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 37973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 37971,
                                  "name": "itemCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37957,
                                  "src": "4590:9:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 37972,
                                  "name": "count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37915,
                                  "src": "4603:5:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4590:18:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 37976,
                              "nodeType": "IfStatement",
                              "src": "4586:41:131",
                              "trueBody": {
                                "id": 37975,
                                "nodeType": "Block",
                                "src": "4610:17:131",
                                "statements": [
                                  {
                                    "id": 37974,
                                    "nodeType": "Break",
                                    "src": "4616:5:131"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37988,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 37977,
                                    "name": "loanParamsList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37919,
                                    "src": "4631:14:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  "id": 37979,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 37978,
                                    "name": "itemCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37957,
                                    "src": "4646:9:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4631:25:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 37986,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 37984,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 37982,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 37960,
                                          "src": "4667:1:131",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 37983,
                                          "name": "start",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 37913,
                                          "src": "4671:5:131",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "4667:9:131",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 37985,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4679:1:131",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "4667:13:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 37980,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37924,
                                      "src": "4659:3:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage_ptr",
                                        "typeString": "struct EnumerableBytes32Set.Bytes32Set storage pointer"
                                      }
                                    },
                                    "id": 37981,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "get",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 27038,
                                    "src": "4659:7:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                      "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,uint256) view returns (bytes32)"
                                    }
                                  },
                                  "id": 37987,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4659:22:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "4631:50:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 37989,
                              "nodeType": "ExpressionStatement",
                              "src": "4631:50:131"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 37991,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4686:11:131",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 37990,
                                  "name": "itemCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 37957,
                                  "src": "4686:9:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 37992,
                              "nodeType": "ExpressionStatement",
                              "src": "4686:11:131"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 37967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 37965,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37960,
                            "src": "4569:1:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 37966,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4573:1:131",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4569:5:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 37994,
                        "initializationExpression": {
                          "assignments": [
                            37960
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 37960,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 37994,
                              "src": "4544:9:131",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 37959,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4544:7:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 37964,
                          "initialValue": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 37963,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 37961,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37930,
                              "src": "4556:3:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 37962,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37913,
                              "src": "4562:5:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4556:11:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4544:23:131"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 37969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": false,
                            "src": "4576:3:131",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 37968,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37960,
                              "src": "4576:1:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 37970,
                          "nodeType": "ExpressionStatement",
                          "src": "4576:3:131"
                        },
                        "nodeType": "ForStatement",
                        "src": "4539:163:131"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 37997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 37995,
                            "name": "itemCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37957,
                            "src": "4710:9:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 37996,
                            "name": "count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37915,
                            "src": "4722:5:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4710:17:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 38000,
                        "nodeType": "IfStatement",
                        "src": "4706:85:131",
                        "trueBody": {
                          "id": 37999,
                          "nodeType": "Block",
                          "src": "4729:62:131",
                          "statements": [
                            {
                              "externalReferences": [
                                {
                                  "loanParamsList": {
                                    "declaration": 37919,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "4756:14:131",
                                    "valueSize": 1
                                  }
                                },
                                {
                                  "itemCount": {
                                    "declaration": 37957,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "4772:9:131",
                                    "valueSize": 1
                                  }
                                }
                              ],
                              "id": 37998,
                              "nodeType": "InlineAssembly",
                              "operations": "{\n    mstore(loanParamsList, itemCount)\n}",
                              "src": "4734:53:131"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Get loan parameters for an owner and a given page\ndefined by an offset and a limit.\n\t * @param owner The address of the loan owner.\n@param start The page offset.\n@param count The page limit.\n\t * @return loanParamsList The result array of loan parameters.\n",
                  "id": 38002,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLoanParamsList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 37916,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37911,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 38002,
                        "src": "4184:13:131",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 37910,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4184:7:131",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37913,
                        "name": "start",
                        "nodeType": "VariableDeclaration",
                        "scope": 38002,
                        "src": "4201:13:131",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37912,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4201:7:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37915,
                        "name": "count",
                        "nodeType": "VariableDeclaration",
                        "scope": 38002,
                        "src": "4218:13:131",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37914,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4218:7:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4180:54:131"
                  },
                  "returnParameters": {
                    "id": 37920,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 37919,
                        "name": "loanParamsList",
                        "nodeType": "VariableDeclaration",
                        "scope": 38002,
                        "src": "4258:31:131",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 37917,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "4258:7:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 37918,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4258:9:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4257:33:131"
                  },
                  "scope": 38162,
                  "src": "4154:640:131",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38018,
                    "nodeType": "Block",
                    "src": "5120:63:131",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 38011,
                                "name": "lenderInterest",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4615,
                                "src": "5131:14:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$_$",
                                  "typeString": "mapping(address => mapping(address => struct LenderInterestStruct.LenderInterest storage ref))"
                                }
                              },
                              "id": 38013,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 38012,
                                "name": "lender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38004,
                                "src": "5146:6:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5131:22:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LenderInterest_$4854_storage_$",
                                "typeString": "mapping(address => struct LenderInterestStruct.LenderInterest storage ref)"
                              }
                            },
                            "id": 38015,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 38014,
                              "name": "loanToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38006,
                              "src": "5154:9:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5131:33:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LenderInterest_$4854_storage",
                              "typeString": "struct LenderInterestStruct.LenderInterest storage ref"
                            }
                          },
                          "id": 38016,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "principalTotal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4845,
                          "src": "5131:48:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 38010,
                        "id": 38017,
                        "nodeType": "Return",
                        "src": "5124:55:131"
                      }
                    ]
                  },
                  "documentation": "@notice Get the total principal of the loans by a lender.\n\t * @param lender The address of the lender.\n@param loanToken The address of the token instance.\n\t * @return The total principal of the loans.\n",
                  "id": 38019,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTotalPrincipal",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38007,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38004,
                        "name": "lender",
                        "nodeType": "VariableDeclaration",
                        "scope": 38019,
                        "src": "5053:14:131",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 38003,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5053:7:131",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 38006,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 38019,
                        "src": "5069:17:131",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 38005,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5069:7:131",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5052:35:131"
                  },
                  "returnParameters": {
                    "id": 38010,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38009,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 38019,
                        "src": "5111:7:131",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 38008,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5111:7:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5110:9:131"
                  },
                  "scope": 38162,
                  "src": "5026:157:131",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38147,
                    "nodeType": "Block",
                    "src": "5428:1242:131",
                    "statements": [
                      {
                        "assignments": [
                          38027
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 38027,
                            "name": "loanParamsId",
                            "nodeType": "VariableDeclaration",
                            "scope": 38147,
                            "src": "5432:20:131",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 38026,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5432:7:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 38045,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 38031,
                                    "name": "loanParamsLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 38021,
                                    "src": "5496:15:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams memory"
                                    }
                                  },
                                  "id": 38032,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "loanToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4875,
                                  "src": "5496:25:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 38033,
                                    "name": "loanParamsLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 38021,
                                    "src": "5528:15:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams memory"
                                    }
                                  },
                                  "id": 38034,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "collateralToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4877,
                                  "src": "5528:31:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 38035,
                                    "name": "loanParamsLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 38021,
                                    "src": "5566:15:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams memory"
                                    }
                                  },
                                  "id": 38036,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "minInitialMargin",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4879,
                                  "src": "5566:32:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 38037,
                                    "name": "loanParamsLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 38021,
                                    "src": "5605:15:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams memory"
                                    }
                                  },
                                  "id": 38038,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maintenanceMargin",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4881,
                                  "src": "5605:33:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 38039,
                                    "name": "loanParamsLocal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 38021,
                                    "src": "5645:15:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                      "typeString": "struct LoanParamsStruct.LoanParams memory"
                                    }
                                  },
                                  "id": 38040,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maxLoanTerm",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4883,
                                  "src": "5645:27:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 38041,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44984,
                                    "src": "5679:5:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 38042,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5679:15:131",
                                  "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_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38029,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "5473:3:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 38030,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5473:16:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 38043,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5473:227:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 38028,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44988,
                            "src": "5458:9:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 38044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5458:247:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5432:273:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 38052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 38047,
                                    "name": "loanParams",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4591,
                                    "src": "5717:10:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                                      "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                                    }
                                  },
                                  "id": 38049,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 38048,
                                    "name": "loanParamsId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 38027,
                                    "src": "5728:12:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5717:24:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                                    "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                                  }
                                },
                                "id": 38050,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4869,
                                "src": "5717:27:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 38051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5748:1:131",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5717:32:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6c6f616e506172616d7320657869737473",
                              "id": 38053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5751:19:131",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b0cc3e61fe0af6d509c3984a2248060035483764a1bc5ef1fc6d416bbb15a703",
                                "typeString": "literal_string \"loanParams exists\""
                              },
                              "value": "loanParams exists"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b0cc3e61fe0af6d509c3984a2248060035483764a1bc5ef1fc6d416bbb15a703",
                                "typeString": "literal_string \"loanParams exists\""
                              }
                            ],
                            "id": 38046,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5709:7:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 38054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5709:62:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38055,
                        "nodeType": "ExpressionStatement",
                        "src": "5709:62:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 38086,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 38075,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 38069,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 38062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 38057,
                                        "name": "loanParamsLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 38021,
                                        "src": "5788:15:131",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                          "typeString": "struct LoanParamsStruct.LoanParams memory"
                                        }
                                      },
                                      "id": 38058,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "loanToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4875,
                                      "src": "5788:25:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 38060,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5825:1:131",
                                          "subdenomination": null,
                                          "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": 38059,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "5817:7:131",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 38061,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5817:10:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "5788:39:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 38068,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 38063,
                                        "name": "loanParamsLocal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 38021,
                                        "src": "5835:15:131",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                          "typeString": "struct LoanParamsStruct.LoanParams memory"
                                        }
                                      },
                                      "id": 38064,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "collateralToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4877,
                                      "src": "5835:31:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 38066,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5878:1:131",
                                          "subdenomination": null,
                                          "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": 38065,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "5870:7:131",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 38067,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5870:10:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "5835:45:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "5788:92:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 38074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 38070,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 38021,
                                      "src": "5888:15:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 38071,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "minInitialMargin",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4879,
                                    "src": "5888:32:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 38072,
                                      "name": "loanParamsLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 38021,
                                      "src": "5923:15:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                        "typeString": "struct LoanParamsStruct.LoanParams memory"
                                      }
                                    },
                                    "id": 38073,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maintenanceMargin",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4881,
                                    "src": "5923:33:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5888:68:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5788:168:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 38084,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 38079,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 38076,
                                          "name": "loanParamsLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 38021,
                                          "src": "5965:15:131",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                            "typeString": "struct LoanParamsStruct.LoanParams memory"
                                          }
                                        },
                                        "id": 38077,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "maxLoanTerm",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4883,
                                        "src": "5965:27:131",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 38078,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5996:1:131",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "5965:32:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 38083,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 38080,
                                          "name": "loanParamsLocal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 38021,
                                          "src": "6001:15:131",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                            "typeString": "struct LoanParamsStruct.LoanParams memory"
                                          }
                                        },
                                        "id": 38081,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "maxLoanTerm",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4883,
                                        "src": "6001:27:131",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "33363030",
                                        "id": 38082,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6031:4:131",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_3600_by_1",
                                          "typeString": "int_const 3600"
                                        },
                                        "value": "3600"
                                      },
                                      "src": "6001:34:131",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "5965:70:131",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 38085,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5964:72:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5788:248:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e76616c696420706172616d73",
                              "id": 38087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6100:16:131",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ac5ac7e4af96b704de23383a91c10346f729e9b7855b951aeea8b541e93db654",
                                "typeString": "literal_string \"invalid params\""
                              },
                              "value": "invalid params"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ac5ac7e4af96b704de23383a91c10346f729e9b7855b951aeea8b541e93db654",
                                "typeString": "literal_string \"invalid params\""
                              }
                            ],
                            "id": 38056,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5776:7:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 38088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5776:344:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38089,
                        "nodeType": "ExpressionStatement",
                        "src": "5776:344:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 38090,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38021,
                              "src": "6125:15:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              }
                            },
                            "id": 38092,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4869,
                            "src": "6125:18:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 38093,
                            "name": "loanParamsId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38027,
                            "src": "6146:12:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "6125:33:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 38095,
                        "nodeType": "ExpressionStatement",
                        "src": "6125:33:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 38096,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38021,
                              "src": "6162:15:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              }
                            },
                            "id": 38098,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "active",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4871,
                            "src": "6162:22:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 38099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6187:4:131",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "6162:29:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 38101,
                        "nodeType": "ExpressionStatement",
                        "src": "6162:29:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 38102,
                              "name": "loanParamsLocal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38021,
                              "src": "6195:15:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                "typeString": "struct LoanParamsStruct.LoanParams memory"
                              }
                            },
                            "id": 38104,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4873,
                            "src": "6195:21:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 38105,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "6219:3:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 38106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6219:10:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6195:34:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 38108,
                        "nodeType": "ExpressionStatement",
                        "src": "6195:34:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 38109,
                              "name": "loanParams",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4591,
                              "src": "6234:10:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                                "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                              }
                            },
                            "id": 38111,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 38110,
                              "name": "loanParamsId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38027,
                              "src": "6245:12:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6234:24:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                              "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 38112,
                            "name": "loanParamsLocal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38021,
                            "src": "6261:15:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                              "typeString": "struct LoanParamsStruct.LoanParams memory"
                            }
                          },
                          "src": "6234:42:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                            "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                          }
                        },
                        "id": 38114,
                        "nodeType": "ExpressionStatement",
                        "src": "6234:42:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 38120,
                              "name": "loanParamsId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38027,
                              "src": "6321:12:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 38115,
                                "name": "userLoanParamSets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4635,
                                "src": "6280:17:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$26734_storage_$",
                                  "typeString": "mapping(address => struct EnumerableBytes32Set.Bytes32Set storage ref)"
                                }
                              },
                              "id": 38118,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38116,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "6298:3:131",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 38117,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6298:10:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6280:29:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                              }
                            },
                            "id": 38119,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "addBytes32",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 26787,
                            "src": "6280:40:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_bytes32_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                              "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,bytes32) returns (bool)"
                            }
                          },
                          "id": 38121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6280:54:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 38122,
                        "nodeType": "ExpressionStatement",
                        "src": "6280:54:131"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 38124,
                              "name": "loanParamsId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38027,
                              "src": "6364:12:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38125,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38021,
                                "src": "6381:15:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 38126,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4873,
                              "src": "6381:21:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38127,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38021,
                                "src": "6407:15:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 38128,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "loanToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4875,
                              "src": "6407:25:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38129,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38021,
                                "src": "6437:15:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 38130,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "6437:31:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38131,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38021,
                                "src": "6473:15:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 38132,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "minInitialMargin",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4879,
                              "src": "6473:32:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38133,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38021,
                                "src": "6510:15:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 38134,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maintenanceMargin",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4881,
                              "src": "6510:33:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38135,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38021,
                                "src": "6548:15:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 38136,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maxLoanTerm",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4883,
                              "src": "6548:27:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "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"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 38123,
                            "name": "LoanParamsSetup",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6015,
                            "src": "6344:15:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 38137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6344:235:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38138,
                        "nodeType": "EmitStatement",
                        "src": "6339:240:131"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 38140,
                              "name": "loanParamsId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38027,
                              "src": "6606:12:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38141,
                                "name": "loanParamsLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38021,
                                "src": "6620:15:131",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                                  "typeString": "struct LoanParamsStruct.LoanParams memory"
                                }
                              },
                              "id": 38142,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4873,
                              "src": "6620:21:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38139,
                            "name": "LoanParamsIdSetup",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6021,
                            "src": "6588:17:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 38143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6588:54:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38144,
                        "nodeType": "EmitStatement",
                        "src": "6583:59:131"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38145,
                          "name": "loanParamsId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38027,
                          "src": "6654:12:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 38025,
                        "id": 38146,
                        "nodeType": "Return",
                        "src": "6647:19:131"
                      }
                    ]
                  },
                  "documentation": "@notice Setup a loan parameters.\n\t * @param loanParamsLocal The loan parameters.\n\t * @return loanParamsId The loan parameters ID.\n",
                  "id": 38148,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setupLoanParams",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38021,
                        "name": "loanParamsLocal",
                        "nodeType": "VariableDeclaration",
                        "scope": 38148,
                        "src": "5366:33:131",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LoanParams_$4884_memory_ptr",
                          "typeString": "struct LoanParamsStruct.LoanParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 38020,
                          "name": "LoanParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4884,
                          "src": "5366:10:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LoanParams_$4884_storage_ptr",
                            "typeString": "struct LoanParamsStruct.LoanParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5365:35:131"
                  },
                  "returnParameters": {
                    "id": 38025,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38024,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 38148,
                        "src": "5419:7:131",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 38023,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5419:7:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5418:9:131"
                  },
                  "scope": 38162,
                  "src": "5340:1330:131",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 38160,
                    "nodeType": "Block",
                    "src": "6753:56:131",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 38155,
                              "name": "loanParams",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4591,
                              "src": "6764:10:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_LoanParams_$4884_storage_$",
                                "typeString": "mapping(bytes32 => struct LoanParamsStruct.LoanParams storage ref)"
                              }
                            },
                            "id": 38157,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 38156,
                              "name": "loanParamsId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38150,
                              "src": "6775:12:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6764:24:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LoanParams_$4884_storage",
                              "typeString": "struct LoanParamsStruct.LoanParams storage ref"
                            }
                          },
                          "id": 38158,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "minInitialMargin",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4879,
                          "src": "6764:41:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 38154,
                        "id": 38159,
                        "nodeType": "Return",
                        "src": "6757:48:131"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 38161,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "minInitialMargin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38151,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38150,
                        "name": "loanParamsId",
                        "nodeType": "VariableDeclaration",
                        "scope": 38161,
                        "src": "6699:20:131",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 38149,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6699:7:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6698:22:131"
                  },
                  "returnParameters": {
                    "id": 38154,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38153,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 38161,
                        "src": "6744:7:131",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 38152,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6744:7:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6743:9:131"
                  },
                  "scope": 38162,
                  "src": "6673:136:131",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 38163,
              "src": "577:6234:131"
            }
          ],
          "src": "118:6694:131"
        },
        "id": 131
      },
      "contracts/modules/ProtocolSettings.sol": {
        "ast": {
          "absolutePath": "contracts/modules/ProtocolSettings.sol",
          "exportedSymbols": {
            "ProtocolSettings": [
              40045
            ]
          },
          "id": 40046,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 38164,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:132"
            },
            {
              "id": 38165,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "142:33:132"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 38166,
              "nodeType": "ImportDirective",
              "scope": 40046,
              "sourceUnit": 4842,
              "src": "177:27:132",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/ProtocolSettingsEvents.sol",
              "file": "../events/ProtocolSettingsEvents.sol",
              "id": 38167,
              "nodeType": "ImportDirective",
              "scope": 40046,
              "sourceUnit": 6310,
              "src": "205:46:132",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeERC20.sol",
              "file": "../openzeppelin/SafeERC20.sol",
              "id": 38168,
              "nodeType": "ImportDirective",
              "scope": 40046,
              "sourceUnit": 42050,
              "src": "252:39:132",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/ProtocolTokenUser.sol",
              "file": "../mixins/ProtocolTokenUser.sol",
              "id": 38169,
              "nodeType": "ImportDirective",
              "scope": 40046,
              "sourceUnit": 27900,
              "src": "292:41:132",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/ModuleCommonFunctionalities.sol",
              "file": "../mixins/ModuleCommonFunctionalities.sol",
              "id": 38170,
              "nodeType": "ImportDirective",
              "scope": 40046,
              "sourceUnit": 27833,
              "src": "334:51:132",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 38171,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "696:5:132",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 38172,
                  "nodeType": "InheritanceSpecifier",
                  "src": "696:5:132"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 38173,
                    "name": "ProtocolTokenUser",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27899,
                    "src": "703:17:132",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ProtocolTokenUser_$27899",
                      "typeString": "contract ProtocolTokenUser"
                    }
                  },
                  "id": 38174,
                  "nodeType": "InheritanceSpecifier",
                  "src": "703:17:132"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 38175,
                    "name": "ProtocolSettingsEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6309,
                    "src": "722:22:132",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ProtocolSettingsEvents_$6309",
                      "typeString": "contract ProtocolSettingsEvents"
                    }
                  },
                  "id": 38176,
                  "nodeType": "InheritanceSpecifier",
                  "src": "722:22:132"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 38177,
                    "name": "ModuleCommonFunctionalities",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27832,
                    "src": "746:27:132",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModuleCommonFunctionalities_$27832",
                      "typeString": "contract ModuleCommonFunctionalities"
                    }
                  },
                  "id": 38178,
                  "nodeType": "InheritanceSpecifier",
                  "src": "746:27:132"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                6055,
                6309,
                27832,
                27899,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title Protocol Settings contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains functions to customize protocol settings.\n",
              "fullyImplemented": true,
              "id": 40045,
              "linearizedBaseContracts": [
                40045,
                27832,
                6309,
                6055,
                27899,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "ProtocolSettings",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 38181,
                  "libraryName": {
                    "contractScope": null,
                    "id": 38179,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42049,
                    "src": "783:9:132",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$42049",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "777:27:132",
                  "typeName": {
                    "contractScope": null,
                    "id": 38180,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "797:6:132",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "id": 38184,
                  "libraryName": {
                    "contractScope": null,
                    "id": 38182,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "812:8:132",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "806:27:132",
                  "typeName": {
                    "id": 38183,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "825:7:132",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "body": {
                    "id": 38187,
                    "nodeType": "Block",
                    "src": "907:2:132",
                    "statements": []
                  },
                  "documentation": "@notice Empty public constructor.\n",
                  "id": 38188,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38185,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "897:2:132"
                  },
                  "returnParameters": {
                    "id": 38186,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "907:0:132"
                  },
                  "scope": 40045,
                  "src": "886:23:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 38195,
                    "nodeType": "Block",
                    "src": "1013:38:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c6c6261636b206e6f7420616c6c6f776564",
                              "id": 38192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1024:22:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ad2d1476e23c49655ed3d169418af7587abbe0f378f28c369338d50deee2f5b0",
                                "typeString": "literal_string \"fallback not allowed\""
                              },
                              "value": "fallback not allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_ad2d1476e23c49655ed3d169418af7587abbe0f378f28c369338d50deee2f5b0",
                                "typeString": "literal_string \"fallback not allowed\""
                              }
                            ],
                            "id": 38191,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44999,
                              45000
                            ],
                            "referencedDeclaration": 45000,
                            "src": "1017:6:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 38193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1017:30:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38194,
                        "nodeType": "ExpressionStatement",
                        "src": "1017:30:132"
                      }
                    ]
                  },
                  "documentation": "@notice Fallback function is to react to receiving value (rBTC).\n",
                  "id": 38196,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38189,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1001:2:132"
                  },
                  "returnParameters": {
                    "id": 38190,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1013:0:132"
                  },
                  "scope": 40045,
                  "src": "993:58:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38518,
                    "nodeType": "Block",
                    "src": "1234:2694:132",
                    "statements": [
                      {
                        "assignments": [
                          38204
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 38204,
                            "name": "prevModuleContractAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 38518,
                            "src": "1238:33:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 38203,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1238:7:132",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 38210,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 38205,
                            "name": "logicTargets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4583,
                            "src": "1274:12:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                              "typeString": "mapping(bytes4 => address)"
                            }
                          },
                          "id": 38209,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38206,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45286,
                                "src": "1287:4:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                  "typeString": "contract ProtocolSettings"
                                }
                              },
                              "id": 38207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "setPriceFeedContract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 38692,
                              "src": "1287:25:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                "typeString": "function (address) external"
                              }
                            },
                            "id": 38208,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1287:34:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1274:48:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1238:84:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38212,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "1337:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setPriceFeedContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38692,
                                "src": "1337:25:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 38214,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1337:34:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38215,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "1373:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38211,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1326:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1326:54:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38217,
                        "nodeType": "ExpressionStatement",
                        "src": "1326:54:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38219,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "1395:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSwapsImplContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38717,
                                "src": "1395:25:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 38221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1395:34:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38222,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "1431:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38218,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1384:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1384:54:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38224,
                        "nodeType": "ExpressionStatement",
                        "src": "1384:54:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38226,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "1453:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setLoanPool",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38875,
                                "src": "1453:16:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
                                  "typeString": "function (address[] memory,address[] memory) external"
                                }
                              },
                              "id": 38228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1453:25:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38229,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "1480:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38225,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1442:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1442:45:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38231,
                        "nodeType": "ExpressionStatement",
                        "src": "1442:45:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38233,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "1502:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSupportedTokens",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38932,
                                "src": "1502:23:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bool_$dyn_memory_ptr_$returns$__$",
                                  "typeString": "function (address[] memory,bool[] memory) external"
                                }
                              },
                              "id": 38235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1502:32:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38236,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "1536:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38232,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1491:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1491:52:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38238,
                        "nodeType": "ExpressionStatement",
                        "src": "1491:52:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38240,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "1558:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38241,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setLendingFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38966,
                                "src": "1558:25:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1558:34:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38243,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "1594:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38239,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1547:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1547:54:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38245,
                        "nodeType": "ExpressionStatement",
                        "src": "1547:54:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38247,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "1616:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38248,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setTradingFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39000,
                                "src": "1616:25:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1616:34:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38250,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "1652:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38246,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1605:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1605:54:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38252,
                        "nodeType": "ExpressionStatement",
                        "src": "1605:54:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38254,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "1674:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38255,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setBorrowingFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39034,
                                "src": "1674:27:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38256,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1674:36:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38257,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "1712:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38253,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1663:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1663:56:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38259,
                        "nodeType": "ExpressionStatement",
                        "src": "1663:56:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38261,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "1734:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38262,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSwapExternalFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39068,
                                "src": "1734:30:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1734:39:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38264,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "1775:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38260,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1723:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1723:59:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38266,
                        "nodeType": "ExpressionStatement",
                        "src": "1723:59:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38268,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "1797:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setAffiliateFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39102,
                                "src": "1797:27:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1797:36:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38271,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "1835:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38267,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1786:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1786:56:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38273,
                        "nodeType": "ExpressionStatement",
                        "src": "1786:56:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38275,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "1857:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setAffiliateTradingTokenFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39136,
                                "src": "1857:39:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38277,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1857:48:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38278,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "1907:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38274,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1846:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1846:68:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38280,
                        "nodeType": "ExpressionStatement",
                        "src": "1846:68:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38282,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "1929:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setLiquidationIncentivePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39170,
                                "src": "1929:35:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1929:44:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38285,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "1975:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38281,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1918:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1918:64:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38287,
                        "nodeType": "ExpressionStatement",
                        "src": "1918:64:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38289,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "1997:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setMaxDisagreement",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39184,
                                "src": "1997:23:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1997:32:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38292,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2031:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38288,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1986:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1986:52:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38294,
                        "nodeType": "ExpressionStatement",
                        "src": "1986:52:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38296,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2053:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38297,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSourceBuffer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39198,
                                "src": "2053:20:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2053:29:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38299,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2084:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38295,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2042:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2042:49:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38301,
                        "nodeType": "ExpressionStatement",
                        "src": "2042:49:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38303,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2106:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setMaxSwapSize",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39223,
                                "src": "2106:19:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2106:28:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38306,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2136:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38302,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2095:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2095:48:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38308,
                        "nodeType": "ExpressionStatement",
                        "src": "2095:48:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38310,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2158:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setFeesController",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39248,
                                "src": "2158:22:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 38312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2158:31:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38313,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2191:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38309,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2147:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2147:51:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38315,
                        "nodeType": "ExpressionStatement",
                        "src": "2147:51:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38317,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2213:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawFees",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39389,
                                "src": "2213:17:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address,address) external returns (uint256)"
                                }
                              },
                              "id": 38319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2213:26:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38320,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2241:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38316,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2202:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2202:46:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38322,
                        "nodeType": "ExpressionStatement",
                        "src": "2202:46:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38324,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2263:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38325,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawLendingFees",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39475,
                                "src": "2263:24:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) external returns (bool)"
                                }
                              },
                              "id": 38326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2263:33:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38327,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2298:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38323,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2252:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2252:53:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38329,
                        "nodeType": "ExpressionStatement",
                        "src": "2252:53:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38331,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2320:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38332,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawTradingFees",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39561,
                                "src": "2320:24:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) external returns (bool)"
                                }
                              },
                              "id": 38333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2320:33:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38334,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2355:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38330,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2309:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2309:53:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38336,
                        "nodeType": "ExpressionStatement",
                        "src": "2309:53:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38338,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2377:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawBorrowingFees",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39647,
                                "src": "2377:26:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) external returns (bool)"
                                }
                              },
                              "id": 38340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2377:35:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38341,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2414:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38337,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2366:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2366:55:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38343,
                        "nodeType": "ExpressionStatement",
                        "src": "2366:55:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38345,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2436:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "withdrawProtocolToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39668,
                                "src": "2436:26:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_address_$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (address,bool)"
                                }
                              },
                              "id": 38347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2436:35:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38348,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2473:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38344,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2425:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2425:55:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38350,
                        "nodeType": "ExpressionStatement",
                        "src": "2425:55:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38352,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2495:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38353,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "depositProtocolToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39697,
                                "src": "2495:25:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2495:34:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38355,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2531:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38351,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2484:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2484:54:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38357,
                        "nodeType": "ExpressionStatement",
                        "src": "2484:54:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38359,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2553:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38360,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLoanPoolsList",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39714,
                                "src": "2553:21:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                                  "typeString": "function (uint256,uint256) view external returns (bytes32[] memory)"
                                }
                              },
                              "id": 38361,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2553:30:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38362,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2585:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38358,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2542:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2542:50:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38364,
                        "nodeType": "ExpressionStatement",
                        "src": "2542:50:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38366,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2607:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isLoanPool",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39730,
                                "src": "2607:15:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view external returns (bool)"
                                }
                              },
                              "id": 38368,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2607:24:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38369,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2633:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38365,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2596:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2596:44:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38371,
                        "nodeType": "ExpressionStatement",
                        "src": "2596:44:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38373,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2655:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSovrynSwapContractRegistryAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39763,
                                "src": "2655:41:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 38375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2655:50:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38376,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2707:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38372,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2644:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2644:70:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38378,
                        "nodeType": "ExpressionStatement",
                        "src": "2644:70:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38380,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2729:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setWrbtcToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39800,
                                "src": "2729:18:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 38382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2729:27:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38383,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2758:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38379,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2718:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2718:47:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38385,
                        "nodeType": "ExpressionStatement",
                        "src": "2718:47:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38387,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2780:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38388,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setProtocolTokenAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39833,
                                "src": "2780:28:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 38389,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2780:37:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38390,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2819:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38386,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2769:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2769:57:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38392,
                        "nodeType": "ExpressionStatement",
                        "src": "2769:57:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38394,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2841:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setRolloverBaseReward",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39865,
                                "src": "2841:26:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2841:35:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38397,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2878:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38393,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2830:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2830:55:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38399,
                        "nodeType": "ExpressionStatement",
                        "src": "2830:55:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38401,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2900:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setRebatePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39899,
                                "src": "2900:21:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38403,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2900:30:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38404,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2932:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38400,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2889:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2889:50:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38406,
                        "nodeType": "ExpressionStatement",
                        "src": "2889:50:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38408,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "2954:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSpecialRebates",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39945,
                                "src": "2954:22:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,uint256) external"
                                }
                              },
                              "id": 38410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2954:31:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38411,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "2987:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38407,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2943:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2943:51:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38413,
                        "nodeType": "ExpressionStatement",
                        "src": "2943:51:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38415,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3009:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSovrynProtocolAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38544,
                                "src": "3009:29:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 38417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3009:38:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38418,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3049:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38414,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "2998:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2998:58:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38420,
                        "nodeType": "ExpressionStatement",
                        "src": "2998:58:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38422,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3071:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setSOVTokenAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38577,
                                "src": "3071:23:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 38424,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3071:32:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38425,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3105:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38421,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "3060:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3060:52:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38427,
                        "nodeType": "ExpressionStatement",
                        "src": "3060:52:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38429,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3127:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setLockedSOVAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38610,
                                "src": "3127:24:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address) external"
                                }
                              },
                              "id": 38431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3127:33:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38432,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3162:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38428,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "3116:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3116:53:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38434,
                        "nodeType": "ExpressionStatement",
                        "src": "3116:53:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38436,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3184:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setMinReferralsToPayoutAffiliates",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38667,
                                "src": "3184:38:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3184:47:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38439,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3233:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38435,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "3173:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3173:67:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38441,
                        "nodeType": "ExpressionStatement",
                        "src": "3173:67:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38443,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3255:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getSpecialRebates",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39961,
                                "src": "3255:22:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address,address) view external returns (uint256)"
                                }
                              },
                              "id": 38445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3255:31:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38446,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3288:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38442,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "3244:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3244:51:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38448,
                        "nodeType": "ExpressionStatement",
                        "src": "3244:51:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38450,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3310:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getProtocolAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39969,
                                "src": "3310:23:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 38452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3310:32:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38453,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3344:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38449,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "3299:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3299:52:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38455,
                        "nodeType": "ExpressionStatement",
                        "src": "3299:52:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38457,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3366:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getSovTokenAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39977,
                                "src": "3366:23:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 38459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3366:32:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38460,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3400:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38456,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "3355:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3355:52:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38462,
                        "nodeType": "ExpressionStatement",
                        "src": "3355:52:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38464,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3422:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38465,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLockedSOVAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39985,
                                "src": "3422:24:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 38466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3422:33:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38467,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3457:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38463,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "3411:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3411:53:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38469,
                        "nodeType": "ExpressionStatement",
                        "src": "3411:53:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38471,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3479:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getFeeRebatePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 39993,
                                "src": "3479:24:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 38473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3479:33:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38474,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3514:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38470,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "3468:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3468:53:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38476,
                        "nodeType": "ExpressionStatement",
                        "src": "3468:53:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38478,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3536:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "togglePaused",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 40020,
                                "src": "3536:17:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$",
                                  "typeString": "function (bool) external"
                                }
                              },
                              "id": 38480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3536:26:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38481,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3564:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38477,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "3525:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3525:46:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38483,
                        "nodeType": "ExpressionStatement",
                        "src": "3525:46:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38485,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3586:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38486,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isProtocolPaused",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 40028,
                                "src": "3586:21:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                                  "typeString": "function () view external returns (bool)"
                                }
                              },
                              "id": 38487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3586:30:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38488,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3618:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38484,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "3575:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3575:50:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38490,
                        "nodeType": "ExpressionStatement",
                        "src": "3575:50:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38492,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3640:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38493,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getSwapExternalFeePercent",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 40036,
                                "src": "3640:30:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 38494,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3640:39:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38495,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3681:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38491,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "3629:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3629:59:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38497,
                        "nodeType": "ExpressionStatement",
                        "src": "3629:59:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38499,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3703:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "setTradingRebateRewardsBasisPoint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 38642,
                                "src": "3703:38:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256) external"
                                }
                              },
                              "id": 38501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3703:47:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38502,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3752:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38498,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "3692:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3692:67:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38504,
                        "nodeType": "ExpressionStatement",
                        "src": "3692:67:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38506,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "3774:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                },
                                "id": 38507,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getTradingRebateRewardsBasisPoint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 40044,
                                "src": "3774:38:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 38508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3774:47:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38509,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3823:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38505,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "3763:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 38510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3763:67:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38511,
                        "nodeType": "ExpressionStatement",
                        "src": "3763:67:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 38513,
                              "name": "prevModuleContractAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38204,
                              "src": "3870:25:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38514,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38198,
                              "src": "3897:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50726f746f636f6c53657474696e6773",
                              "id": 38515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3905:18:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2e6b3d95126812e8384e4fe85bed54a9b0be0af8884008254ef9bc1f0facde7b",
                                "typeString": "literal_string \"ProtocolSettings\""
                              },
                              "value": "ProtocolSettings"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2e6b3d95126812e8384e4fe85bed54a9b0be0af8884008254ef9bc1f0facde7b",
                                "typeString": "literal_string \"ProtocolSettings\""
                              }
                            ],
                            "id": 38512,
                            "name": "ProtocolModuleContractReplaced",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6054,
                            "src": "3839:30:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32)"
                            }
                          },
                          "id": 38516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3839:85:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38517,
                        "nodeType": "EmitStatement",
                        "src": "3834:90:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set function selectors on target contract.\n\t * @param target The address of the target contract.\n",
                  "id": 38519,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 38201,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38200,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1224:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1224:9:132"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38199,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38198,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 38519,
                        "src": "1199:14:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 38197,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1199:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1198:16:132"
                  },
                  "returnParameters": {
                    "id": 38202,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1234:0:132"
                  },
                  "scope": 40045,
                  "src": "1179:2749:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38543,
                    "nodeType": "Block",
                    "src": "4127:172:132",
                    "statements": [
                      {
                        "assignments": [
                          38529
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 38529,
                            "name": "oldProtocolAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 38543,
                            "src": "4131:26:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 38528,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4131:7:132",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 38531,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 38530,
                          "name": "protocolAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4750,
                          "src": "4160:15:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4131:44:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 38532,
                            "name": "protocolAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4750,
                            "src": "4179:15:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 38533,
                            "name": "newProtocolAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38521,
                            "src": "4197:18:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4179:36:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 38535,
                        "nodeType": "ExpressionStatement",
                        "src": "4179:36:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38537,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "4244:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 38538,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4244:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38539,
                              "name": "oldProtocolAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38529,
                              "src": "4256:18:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38540,
                              "name": "newProtocolAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38521,
                              "src": "4276:18:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38536,
                            "name": "SetProtocolAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6268,
                            "src": "4225:18:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 38541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4225:70:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38542,
                        "nodeType": "EmitStatement",
                        "src": "4220:75:132"
                      }
                    ]
                  },
                  "documentation": "setting wrong address will break inter module functions calling\nshould be set once",
                  "id": 38544,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 38524,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38523,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "4103:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4103:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 38526,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38525,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "4113:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4113:13:132"
                    }
                  ],
                  "name": "setSovrynProtocolAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38522,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38521,
                        "name": "newProtocolAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 38544,
                        "src": "4066:26:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 38520,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4066:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4065:28:132"
                  },
                  "returnParameters": {
                    "id": 38527,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4127:0:132"
                  },
                  "scope": 40045,
                  "src": "4032:267:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38576,
                    "nodeType": "Block",
                    "src": "4391:255:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 38556,
                                  "name": "newSovTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 38546,
                                  "src": "4422:18:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38554,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "4403:7:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 38555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "4403:18:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 38557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4403:38:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6e6577536f76546f6b656e41646472657373206e6f74206120636f6e7472616374",
                              "id": 38558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4443:35:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4dd871843af7acbb06a2cd5de438a2fb3452876cd359702cef3f35ae5927b74c",
                                "typeString": "literal_string \"newSovTokenAddress not a contract\""
                              },
                              "value": "newSovTokenAddress not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4dd871843af7acbb06a2cd5de438a2fb3452876cd359702cef3f35ae5927b74c",
                                "typeString": "literal_string \"newSovTokenAddress not a contract\""
                              }
                            ],
                            "id": 38553,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4395:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 38559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4395:84:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38560,
                        "nodeType": "ExpressionStatement",
                        "src": "4395:84:132"
                      },
                      {
                        "assignments": [
                          38562
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 38562,
                            "name": "oldTokenAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 38576,
                            "src": "4484:23:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 38561,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4484:7:132",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 38564,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 38563,
                          "name": "sovTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4771,
                          "src": "4510:15:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4484:41:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 38565,
                            "name": "sovTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4771,
                            "src": "4529:15:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 38566,
                            "name": "newSovTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38546,
                            "src": "4547:18:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4529:36:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 38568,
                        "nodeType": "ExpressionStatement",
                        "src": "4529:36:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38570,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "4594:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 38571,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4594:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38572,
                              "name": "oldTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38562,
                              "src": "4606:15:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38573,
                              "name": "newSovTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38546,
                              "src": "4623:18:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38569,
                            "name": "SetSOVTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6284,
                            "src": "4575:18:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 38574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4575:67:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38575,
                        "nodeType": "EmitStatement",
                        "src": "4570:72:132"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 38577,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 38549,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38548,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "4367:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4367:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 38551,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38550,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "4377:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4377:13:132"
                    }
                  ],
                  "name": "setSOVTokenAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38546,
                        "name": "newSovTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 38577,
                        "src": "4330:26:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 38545,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4330:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4329:28:132"
                  },
                  "returnParameters": {
                    "id": 38552,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4391:0:132"
                  },
                  "scope": 40045,
                  "src": "4302:344:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38609,
                    "nodeType": "Block",
                    "src": "4740:268:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 38589,
                                  "name": "newLockedSOVAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 38579,
                                  "src": "4771:19:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38587,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "4752:7:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 38588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "4752:18:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 38590,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4752:39:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6e65774c6f636b534f5641646472657373206e6f74206120636f6e7472616374",
                              "id": 38591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4793:34:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2383c03655c987939db867d4d21b970484422732a3156ba1fe889875b10555d1",
                                "typeString": "literal_string \"newLockSOVAddress not a contract\""
                              },
                              "value": "newLockSOVAddress not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2383c03655c987939db867d4d21b970484422732a3156ba1fe889875b10555d1",
                                "typeString": "literal_string \"newLockSOVAddress not a contract\""
                              }
                            ],
                            "id": 38586,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4744:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 38592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4744:84:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38593,
                        "nodeType": "ExpressionStatement",
                        "src": "4744:84:132"
                      },
                      {
                        "assignments": [
                          38595
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 38595,
                            "name": "oldLockedSOVAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 38609,
                            "src": "4833:27:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 38594,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4833:7:132",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 38597,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 38596,
                          "name": "lockedSOVAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4773,
                          "src": "4863:16:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4833:46:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 38598,
                            "name": "lockedSOVAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4773,
                            "src": "4883:16:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 38599,
                            "name": "newLockedSOVAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38579,
                            "src": "4902:19:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4883:38:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 38601,
                        "nodeType": "ExpressionStatement",
                        "src": "4883:38:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38603,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "4951:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 38604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4951:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38605,
                              "name": "oldLockedSOVAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38595,
                              "src": "4963:19:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38606,
                              "name": "newLockedSOVAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38579,
                              "src": "4984:19:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38602,
                            "name": "SetLockedSOVAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6292,
                            "src": "4931:19:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 38607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4931:73:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38608,
                        "nodeType": "EmitStatement",
                        "src": "4926:78:132"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 38610,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 38582,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38581,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "4716:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4716:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 38584,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38583,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "4726:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4726:13:132"
                    }
                  ],
                  "name": "setLockedSOVAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38580,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38579,
                        "name": "newLockedSOVAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 38610,
                        "src": "4678:27:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 38578,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4678:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4677:29:132"
                  },
                  "returnParameters": {
                    "id": 38585,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4740:0:132"
                  },
                  "scope": 40045,
                  "src": "4649:359:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38641,
                    "nodeType": "Block",
                    "src": "5282:250:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 38622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 38620,
                                "name": "newBasisPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38612,
                                "src": "5294:13:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "39393939",
                                "id": 38621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5311:4:132",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_9999_by_1",
                                  "typeString": "int_const 9999"
                                },
                                "value": "9999"
                              },
                              "src": "5294:21:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76616c756520746f6f2068696768",
                              "id": 38623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5317:16:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              },
                              "value": "value too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              }
                            ],
                            "id": 38619,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5286:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 38624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5286:48:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38625,
                        "nodeType": "ExpressionStatement",
                        "src": "5286:48:132"
                      },
                      {
                        "assignments": [
                          38627
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 38627,
                            "name": "oldBasisPoint",
                            "nodeType": "VariableDeclaration",
                            "scope": 38641,
                            "src": "5339:21:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 38626,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5339:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 38629,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 38628,
                          "name": "tradingRebateRewardsBasisPoint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4802,
                          "src": "5363:30:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5339:54:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 38630,
                            "name": "tradingRebateRewardsBasisPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4802,
                            "src": "5397:30:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 38631,
                            "name": "newBasisPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38612,
                            "src": "5430:13:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5397:46:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 38633,
                        "nodeType": "ExpressionStatement",
                        "src": "5397:46:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38635,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "5487:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 38636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5487:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38637,
                              "name": "oldBasisPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38627,
                              "src": "5499:13:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38638,
                              "name": "newBasisPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38612,
                              "src": "5514:13:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 38634,
                            "name": "SetTradingRebateRewardsBasisPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6308,
                            "src": "5453:33:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 38639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5453:75:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38640,
                        "nodeType": "EmitStatement",
                        "src": "5448:80:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the basis point of trading rebate rewards (SOV), max value is 9999 (99.99% liquid, 0.01% vested).\n\t * @param newBasisPoint Basis point value.",
                  "id": 38642,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 38615,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38614,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "5258:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5258:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 38617,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38616,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "5268:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5268:13:132"
                    }
                  ],
                  "name": "setTradingRebateRewardsBasisPoint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38613,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38612,
                        "name": "newBasisPoint",
                        "nodeType": "VariableDeclaration",
                        "scope": 38642,
                        "src": "5226:21:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 38611,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5226:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5225:23:132"
                  },
                  "returnParameters": {
                    "id": 38618,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5282:0:132"
                  },
                  "scope": 40045,
                  "src": "5183:349:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38666,
                    "nodeType": "Block",
                    "src": "5794:185:132",
                    "statements": [
                      {
                        "assignments": [
                          38652
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 38652,
                            "name": "oldMinReferrals",
                            "nodeType": "VariableDeclaration",
                            "scope": 38666,
                            "src": "5798:23:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 38651,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5798:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 38654,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 38653,
                          "name": "minReferralsToPayout",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4765,
                          "src": "5824:20:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5798:46:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 38655,
                            "name": "minReferralsToPayout",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4765,
                            "src": "5848:20:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 38656,
                            "name": "newMinReferrals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38644,
                            "src": "5871:15:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5848:38:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 38658,
                        "nodeType": "ExpressionStatement",
                        "src": "5848:38:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38660,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "5930:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 38661,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5930:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38662,
                              "name": "oldMinReferrals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38652,
                              "src": "5942:15:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38663,
                              "name": "newMinReferrals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38644,
                              "src": "5959:15:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 38659,
                            "name": "SetMinReferralsToPayoutAffiliates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6276,
                            "src": "5896:33:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 38664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5896:79:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38665,
                        "nodeType": "EmitStatement",
                        "src": "5891:84:132"
                      }
                    ]
                  },
                  "documentation": "@notice Update the minimum number of referrals to get affiliates rewards.\n\t * @param newMinReferrals The new minimum number of referrals.\n",
                  "id": 38667,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 38647,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38646,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "5770:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5770:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 38649,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38648,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "5780:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5780:13:132"
                    }
                  ],
                  "name": "setMinReferralsToPayoutAffiliates",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38645,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38644,
                        "name": "newMinReferrals",
                        "nodeType": "VariableDeclaration",
                        "scope": 38667,
                        "src": "5736:23:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 38643,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5736:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5735:25:132"
                  },
                  "returnParameters": {
                    "id": 38650,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5794:0:132"
                  },
                  "scope": 40045,
                  "src": "5693:286:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38691,
                    "nodeType": "Block",
                    "src": "6205:136:132",
                    "statements": [
                      {
                        "assignments": [
                          38677
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 38677,
                            "name": "oldContract",
                            "nodeType": "VariableDeclaration",
                            "scope": 38691,
                            "src": "6209:19:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 38676,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6209:7:132",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 38679,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 38678,
                          "name": "priceFeeds",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4575,
                          "src": "6231:10:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6209:32:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 38680,
                            "name": "priceFeeds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4575,
                            "src": "6245:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 38681,
                            "name": "newContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38669,
                            "src": "6258:11:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6245:24:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 38683,
                        "nodeType": "ExpressionStatement",
                        "src": "6245:24:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38685,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6300:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 38686,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6300:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38687,
                              "name": "oldContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38677,
                              "src": "6312:11:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38688,
                              "name": "newContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38669,
                              "src": "6325:11:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38684,
                            "name": "SetPriceFeedContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6068,
                            "src": "6279:20:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 38689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6279:58:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38690,
                        "nodeType": "EmitStatement",
                        "src": "6274:63:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the address of the Price Feed instance.\n\t * @param newContract The address of the Price Feed new instance.\n",
                  "id": 38692,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 38672,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38671,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "6181:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6181:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 38674,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38673,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "6191:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6191:13:132"
                    }
                  ],
                  "name": "setPriceFeedContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38670,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38669,
                        "name": "newContract",
                        "nodeType": "VariableDeclaration",
                        "scope": 38692,
                        "src": "6151:19:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 38668,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6151:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6150:21:132"
                  },
                  "returnParameters": {
                    "id": 38675,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6205:0:132"
                  },
                  "scope": 40045,
                  "src": "6121:220:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38716,
                    "nodeType": "Block",
                    "src": "6573:134:132",
                    "statements": [
                      {
                        "assignments": [
                          38702
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 38702,
                            "name": "oldContract",
                            "nodeType": "VariableDeclaration",
                            "scope": 38716,
                            "src": "6577:19:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 38701,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6577:7:132",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 38704,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 38703,
                          "name": "swapsImpl",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4577,
                          "src": "6599:9:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6577:31:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 38705,
                            "name": "swapsImpl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4577,
                            "src": "6612:9:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 38706,
                            "name": "newContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38694,
                            "src": "6624:11:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6612:23:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 38708,
                        "nodeType": "ExpressionStatement",
                        "src": "6612:23:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38710,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "6666:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 38711,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6666:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38712,
                              "name": "oldContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38702,
                              "src": "6678:11:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38713,
                              "name": "newContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38694,
                              "src": "6691:11:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 38709,
                            "name": "SetSwapsImplContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6076,
                            "src": "6645:20:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 38714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6645:58:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38715,
                        "nodeType": "EmitStatement",
                        "src": "6640:63:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the address of the asset swapper instance.\n\t * @param newContract The address of the asset swapper new instance.\n",
                  "id": 38717,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 38697,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38696,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "6549:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6549:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 38699,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38698,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "6559:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6559:13:132"
                    }
                  ],
                  "name": "setSwapsImplContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38694,
                        "name": "newContract",
                        "nodeType": "VariableDeclaration",
                        "scope": 38717,
                        "src": "6519:19:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 38693,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6519:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6518:21:132"
                  },
                  "returnParameters": {
                    "id": 38700,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6573:0:132"
                  },
                  "scope": 40045,
                  "src": "6489:218:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38874,
                    "nodeType": "Block",
                    "src": "7035:724:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 38735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38731,
                                  "name": "pools",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 38720,
                                  "src": "7047:5:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 38732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7047:12:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38733,
                                  "name": "assets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 38723,
                                  "src": "7063:6:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 38734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7063:13:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7047:29:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "636f756e74206d69736d61746368",
                              "id": 38736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7078:16:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4e47b0faf042463061f100d4bb8e934fd9c2e42fb27f86b7083e0ceb80b3cd5f",
                                "typeString": "literal_string \"count mismatch\""
                              },
                              "value": "count mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4e47b0faf042463061f100d4bb8e934fd9c2e42fb27f86b7083e0ceb80b3cd5f",
                                "typeString": "literal_string \"count mismatch\""
                              }
                            ],
                            "id": 38730,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "7039:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 38737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7039:56:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38738,
                        "nodeType": "ExpressionStatement",
                        "src": "7039:56:132"
                      },
                      {
                        "body": {
                          "id": 38872,
                          "nodeType": "Block",
                          "src": "7143:613:132",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 38757,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 38751,
                                        "name": "pools",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 38720,
                                        "src": "7156:5:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 38753,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 38752,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 38740,
                                        "src": "7162:1:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7156:8:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 38754,
                                        "name": "assets",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 38723,
                                        "src": "7168:6:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 38756,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 38755,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 38740,
                                        "src": "7175:1:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7168:9:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "7156:21:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "706f6f6c203d3d206173736574",
                                    "id": 38758,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7179:15:132",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_cce94402c7bca5beb2ac29255afb30467a4d982846cd6543ef7c65691e2b28ee",
                                      "typeString": "literal_string \"pool == asset\""
                                    },
                                    "value": "pool == asset"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_cce94402c7bca5beb2ac29255afb30467a4d982846cd6543ef7c65691e2b28ee",
                                      "typeString": "literal_string \"pool == asset\""
                                    }
                                  ],
                                  "id": 38750,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "7148:7:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 38759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7148:47:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 38760,
                              "nodeType": "ExpressionStatement",
                              "src": "7148:47:132"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 38768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 38762,
                                        "name": "pools",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 38720,
                                        "src": "7208:5:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 38764,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 38763,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 38740,
                                        "src": "7214:1:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7208:8:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 38766,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7228:1:132",
                                          "subdenomination": null,
                                          "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": 38765,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "7220:7:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 38767,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7220:10:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "7208:22:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "706f6f6c203d3d2030",
                                    "id": 38769,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7232:11:132",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_fb0e214a434ce04e9205a63530e27542eee62818a49f7b0e223e583cd64981b6",
                                      "typeString": "literal_string \"pool == 0\""
                                    },
                                    "value": "pool == 0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_fb0e214a434ce04e9205a63530e27542eee62818a49f7b0e223e583cd64981b6",
                                      "typeString": "literal_string \"pool == 0\""
                                    }
                                  ],
                                  "id": 38761,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "7200:7:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 38770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7200:44:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 38771,
                              "nodeType": "ExpressionStatement",
                              "src": "7200:44:132"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 38789,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 38779,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 38773,
                                          "name": "assets",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 38723,
                                          "src": "7257:6:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 38775,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 38774,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 38740,
                                          "src": "7264:1:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "7257:9:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 38777,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7278:1:132",
                                            "subdenomination": null,
                                            "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": 38776,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "7270:7:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 38778,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7270:10:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "src": "7257:23:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 38788,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 38780,
                                          "name": "loanPoolToUnderlying",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4702,
                                          "src": "7284:20:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                            "typeString": "mapping(address => address)"
                                          }
                                        },
                                        "id": 38784,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 38781,
                                            "name": "pools",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 38720,
                                            "src": "7305:5:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                              "typeString": "address[] calldata"
                                            }
                                          },
                                          "id": 38783,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 38782,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 38740,
                                            "src": "7311:1:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7305:8:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "7284:30:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 38786,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7326:1:132",
                                            "subdenomination": null,
                                            "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": 38785,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "7318:7:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 38787,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7318:10:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "src": "7284:44:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "7257:71:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "706f6f6c206e6f7420657869737473",
                                    "id": 38790,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7330:17:132",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_87c237a621e99a0222c857ad160e0b0037bcf7d6ef50d0988986e23ed6978048",
                                      "typeString": "literal_string \"pool not exists\""
                                    },
                                    "value": "pool not exists"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_87c237a621e99a0222c857ad160e0b0037bcf7d6ef50d0988986e23ed6978048",
                                      "typeString": "literal_string \"pool not exists\""
                                    }
                                  ],
                                  "id": 38772,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "7249:7:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 38791,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7249:99:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 38792,
                              "nodeType": "ExpressionStatement",
                              "src": "7249:99:132"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 38799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 38793,
                                    "name": "assets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 38723,
                                    "src": "7357:6:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 38795,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 38794,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 38740,
                                    "src": "7364:1:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7357:9:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 38797,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7378:1:132",
                                      "subdenomination": null,
                                      "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": 38796,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7370:7:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 38798,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7370:10:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "7357:23:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 38859,
                                "nodeType": "Block",
                                "src": "7556:141:132",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 38839,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 38831,
                                          "name": "loanPoolToUnderlying",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4702,
                                          "src": "7562:20:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                            "typeString": "mapping(address => address)"
                                          }
                                        },
                                        "id": 38835,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 38832,
                                            "name": "pools",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 38720,
                                            "src": "7583:5:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                              "typeString": "address[] calldata"
                                            }
                                          },
                                          "id": 38834,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 38833,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 38740,
                                            "src": "7589:1:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7583:8:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "7562:30:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 38836,
                                          "name": "assets",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 38723,
                                          "src": "7595:6:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 38838,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 38837,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 38740,
                                          "src": "7602:1:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "7595:9:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "7562:42:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 38840,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7562:42:132"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 38849,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 38841,
                                          "name": "underlyingToLoanPool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4706,
                                          "src": "7610:20:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                            "typeString": "mapping(address => address)"
                                          }
                                        },
                                        "id": 38845,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 38842,
                                            "name": "assets",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 38723,
                                            "src": "7631:6:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                              "typeString": "address[] calldata"
                                            }
                                          },
                                          "id": 38844,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 38843,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 38740,
                                            "src": "7638:1:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7631:9:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "7610:31:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 38846,
                                          "name": "pools",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 38720,
                                          "src": "7644:5:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 38848,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 38847,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 38740,
                                          "src": "7650:1:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "7644:8:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "7610:42:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 38850,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7610:42:132"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 38854,
                                            "name": "pools",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 38720,
                                            "src": "7682:5:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                              "typeString": "address[] calldata"
                                            }
                                          },
                                          "id": 38856,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 38855,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 38740,
                                            "src": "7688:1:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7682:8:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 38851,
                                          "name": "loanPoolsSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4708,
                                          "src": "7658:12:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                            "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                          }
                                        },
                                        "id": 38853,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "addAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 26753,
                                        "src": "7658:23:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                          "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,address) returns (bool)"
                                        }
                                      },
                                      "id": 38857,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7658:33:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 38858,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7658:33:132"
                                  }
                                ]
                              },
                              "id": 38860,
                              "nodeType": "IfStatement",
                              "src": "7353:344:132",
                              "trueBody": {
                                "id": 38830,
                                "nodeType": "Block",
                                "src": "7382:168:132",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 38810,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 38800,
                                          "name": "underlyingToLoanPool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4706,
                                          "src": "7388:20:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                            "typeString": "mapping(address => address)"
                                          }
                                        },
                                        "id": 38806,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 38801,
                                            "name": "loanPoolToUnderlying",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4702,
                                            "src": "7409:20:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                              "typeString": "mapping(address => address)"
                                            }
                                          },
                                          "id": 38805,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 38802,
                                              "name": "pools",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 38720,
                                              "src": "7430:5:132",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                "typeString": "address[] calldata"
                                              }
                                            },
                                            "id": 38804,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 38803,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 38740,
                                              "src": "7436:1:132",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7430:8:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7409:30:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "7388:52:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 38808,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7451:1:132",
                                            "subdenomination": null,
                                            "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": 38807,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "7443:7:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 38809,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7443:10:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "src": "7388:65:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 38811,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7388:65:132"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 38820,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 38812,
                                          "name": "loanPoolToUnderlying",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4702,
                                          "src": "7459:20:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                            "typeString": "mapping(address => address)"
                                          }
                                        },
                                        "id": 38816,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 38813,
                                            "name": "pools",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 38720,
                                            "src": "7480:5:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                              "typeString": "address[] calldata"
                                            }
                                          },
                                          "id": 38815,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 38814,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 38740,
                                            "src": "7486:1:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7480:8:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "7459:30:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 38818,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7500:1:132",
                                            "subdenomination": null,
                                            "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": 38817,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "7492:7:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 38819,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7492:10:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "src": "7459:43:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 38821,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7459:43:132"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 38825,
                                            "name": "pools",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 38720,
                                            "src": "7535:5:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                              "typeString": "address[] calldata"
                                            }
                                          },
                                          "id": 38827,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 38826,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 38740,
                                            "src": "7541:1:132",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7535:8:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 38822,
                                          "name": "loanPoolsSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4708,
                                          "src": "7508:12:132",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                            "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                                          }
                                        },
                                        "id": 38824,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "removeAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 26806,
                                        "src": "7508:26:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                                          "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,address) returns (bool)"
                                        }
                                      },
                                      "id": 38828,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7508:36:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 38829,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7508:36:132"
                                  }
                                ]
                              }
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 38862,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "7719:3:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 38863,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7719:10:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 38864,
                                      "name": "pools",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 38720,
                                      "src": "7731:5:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 38866,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 38865,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 38740,
                                      "src": "7737:1:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7731:8:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 38867,
                                      "name": "assets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 38723,
                                      "src": "7741:6:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 38869,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 38868,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 38740,
                                      "src": "7748:1:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7741:9:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 38861,
                                  "name": "SetLoanPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6084,
                                  "src": "7707:11:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address,address)"
                                  }
                                },
                                "id": 38870,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7707:44:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 38871,
                              "nodeType": "EmitStatement",
                              "src": "7702:49:132"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 38746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 38743,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38740,
                            "src": "7120:1:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 38744,
                              "name": "pools",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38720,
                              "src": "7124:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 38745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7124:12:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7120:16:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 38873,
                        "initializationExpression": {
                          "assignments": [
                            38740
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 38740,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 38873,
                              "src": "7105:9:132",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 38739,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7105:7:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 38742,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 38741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7117:1:132",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7105:13:132"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 38748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "7138:3:132",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 38747,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38740,
                              "src": "7138:1:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 38749,
                          "nodeType": "ExpressionStatement",
                          "src": "7138:3:132"
                        },
                        "nodeType": "ForStatement",
                        "src": "7100:656:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set a list of loan pools and its tokens.\n\t * @param pools The array of addresses of new loan pool instances.\n@param assets The array of addresses of the corresponding underlying tokens.\n",
                  "id": 38875,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 38726,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38725,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "7011:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7011:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 38728,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38727,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "7021:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7021:13:132"
                    }
                  ],
                  "name": "setLoanPool",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38724,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38720,
                        "name": "pools",
                        "nodeType": "VariableDeclaration",
                        "scope": 38875,
                        "src": "6949:24:132",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 38718,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6949:7:132",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 38719,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "6949:9:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 38723,
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "scope": 38875,
                        "src": "6975:25:132",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 38721,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6975:7:132",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 38722,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "6975:9:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6948:53:132"
                  },
                  "returnParameters": {
                    "id": 38729,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7035:0:132"
                  },
                  "scope": 40045,
                  "src": "6928:831:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38931,
                    "nodeType": "Block",
                    "src": "8153:223:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 38893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38889,
                                  "name": "addrs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 38878,
                                  "src": "8165:5:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 38890,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8165:12:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 38891,
                                  "name": "toggles",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 38881,
                                  "src": "8181:7:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                                    "typeString": "bool[] calldata"
                                  }
                                },
                                "id": 38892,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8181:14:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8165:30:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "636f756e74206d69736d61746368",
                              "id": 38894,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8197:16:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4e47b0faf042463061f100d4bb8e934fd9c2e42fb27f86b7083e0ceb80b3cd5f",
                                "typeString": "literal_string \"count mismatch\""
                              },
                              "value": "count mismatch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4e47b0faf042463061f100d4bb8e934fd9c2e42fb27f86b7083e0ceb80b3cd5f",
                                "typeString": "literal_string \"count mismatch\""
                              }
                            ],
                            "id": 38888,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8157:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 38895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8157:57:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38896,
                        "nodeType": "ExpressionStatement",
                        "src": "8157:57:132"
                      },
                      {
                        "body": {
                          "id": 38929,
                          "nodeType": "Block",
                          "src": "8262:111:132",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 38916,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 38908,
                                    "name": "supportedTokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4712,
                                    "src": "8267:15:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 38912,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 38909,
                                      "name": "addrs",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 38878,
                                      "src": "8283:5:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 38911,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 38910,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 38898,
                                      "src": "8289:1:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8283:8:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8267:25:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 38913,
                                    "name": "toggles",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 38881,
                                    "src": "8295:7:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                                      "typeString": "bool[] calldata"
                                    }
                                  },
                                  "id": 38915,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 38914,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 38898,
                                    "src": "8303:1:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "8295:10:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "8267:38:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 38917,
                              "nodeType": "ExpressionStatement",
                              "src": "8267:38:132"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 38919,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "8335:3:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 38920,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8335:10:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 38921,
                                      "name": "addrs",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 38878,
                                      "src": "8347:5:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 38923,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 38922,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 38898,
                                      "src": "8353:1:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8347:8:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 38924,
                                      "name": "toggles",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 38881,
                                      "src": "8357:7:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                                        "typeString": "bool[] calldata"
                                      }
                                    },
                                    "id": 38926,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 38925,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 38898,
                                      "src": "8365:1:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8357:10:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 38918,
                                  "name": "SetSupportedTokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6092,
                                  "src": "8316:18:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,address,bool)"
                                  }
                                },
                                "id": 38927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8316:52:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 38928,
                              "nodeType": "EmitStatement",
                              "src": "8311:57:132"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 38904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 38901,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38898,
                            "src": "8239:1:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 38902,
                              "name": "addrs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38878,
                              "src": "8243:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 38903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8243:12:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8239:16:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 38930,
                        "initializationExpression": {
                          "assignments": [
                            38898
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 38898,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 38930,
                              "src": "8224:9:132",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 38897,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8224:7:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 38900,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 38899,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8236:1:132",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8224:13:132"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 38906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "8257:3:132",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 38905,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38898,
                              "src": "8257:1:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 38907,
                          "nodeType": "ExpressionStatement",
                          "src": "8257:3:132"
                        },
                        "nodeType": "ForStatement",
                        "src": "8219:154:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set a list of supported tokens by populating the\n  storage supportedTokens mapping.\n\t * @param addrs The array of addresses of the tokens.\n@param toggles The array of flags indicating whether\n  the corresponding token is supported or not.\n",
                  "id": 38932,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 38884,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38883,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "8129:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8129:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 38886,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38885,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "8139:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8139:13:132"
                    }
                  ],
                  "name": "setSupportedTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38882,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38878,
                        "name": "addrs",
                        "nodeType": "VariableDeclaration",
                        "scope": 38932,
                        "src": "8069:24:132",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 38876,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8069:7:132",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 38877,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "8069:9:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 38881,
                        "name": "toggles",
                        "nodeType": "VariableDeclaration",
                        "scope": 38932,
                        "src": "8095:23:132",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 38879,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "8095:4:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 38880,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "8095:6:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8068:51:132"
                  },
                  "returnParameters": {
                    "id": 38887,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8153:0:132"
                  },
                  "scope": 40045,
                  "src": "8041:335:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38965,
                    "nodeType": "Block",
                    "src": "8598:187:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 38946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 38942,
                                "name": "newValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38934,
                                "src": "8610:8:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "id": 38945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 38943,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8622:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3230",
                                  "id": 38944,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8626:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "8622:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              },
                              "src": "8610:18:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76616c756520746f6f2068696768",
                              "id": 38947,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8630:16:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              },
                              "value": "value too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              }
                            ],
                            "id": 38941,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "8602:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 38948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8602:45:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38949,
                        "nodeType": "ExpressionStatement",
                        "src": "8602:45:132"
                      },
                      {
                        "assignments": [
                          38951
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 38951,
                            "name": "oldValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 38965,
                            "src": "8651:16:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 38950,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8651:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 38953,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 38952,
                          "name": "lendingFeePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4642,
                          "src": "8670:17:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8651:36:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 38954,
                            "name": "lendingFeePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4642,
                            "src": "8691:17:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 38955,
                            "name": "newValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38934,
                            "src": "8711:8:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8691:28:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 38957,
                        "nodeType": "ExpressionStatement",
                        "src": "8691:28:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38959,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "8750:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 38960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8750:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38961,
                              "name": "oldValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38951,
                              "src": "8762:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38962,
                              "name": "newValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38934,
                              "src": "8772:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 38958,
                            "name": "SetLendingFeePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6100,
                            "src": "8729:20:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 38963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8729:52:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38964,
                        "nodeType": "EmitStatement",
                        "src": "8724:57:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the value of lendingFeePercent storage variable.\n\t * @param newValue The new value for lendingFeePercent.\n",
                  "id": 38966,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 38937,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38936,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "8574:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8574:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 38939,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38938,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "8584:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8584:13:132"
                    }
                  ],
                  "name": "setLendingFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38935,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38934,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 38966,
                        "src": "8547:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 38933,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8547:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8546:18:132"
                  },
                  "returnParameters": {
                    "id": 38940,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8598:0:132"
                  },
                  "scope": 40045,
                  "src": "8517:268:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 38999,
                    "nodeType": "Block",
                    "src": "9007:187:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 38980,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 38976,
                                "name": "newValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38968,
                                "src": "9019:8:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "id": 38979,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 38977,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9031:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3230",
                                  "id": 38978,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9035:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "9031:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              },
                              "src": "9019:18:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76616c756520746f6f2068696768",
                              "id": 38981,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9039:16:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              },
                              "value": "value too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              }
                            ],
                            "id": 38975,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9011:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 38982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9011:45:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38983,
                        "nodeType": "ExpressionStatement",
                        "src": "9011:45:132"
                      },
                      {
                        "assignments": [
                          38985
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 38985,
                            "name": "oldValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 38999,
                            "src": "9060:16:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 38984,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9060:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 38987,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 38986,
                          "name": "tradingFeePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4657,
                          "src": "9079:17:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9060:36:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 38990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 38988,
                            "name": "tradingFeePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4657,
                            "src": "9100:17:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 38989,
                            "name": "newValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38968,
                            "src": "9120:8:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9100:28:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 38991,
                        "nodeType": "ExpressionStatement",
                        "src": "9100:28:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 38993,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9159:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 38994,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9159:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38995,
                              "name": "oldValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38985,
                              "src": "9171:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 38996,
                              "name": "newValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38968,
                              "src": "9181:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 38992,
                            "name": "SetTradingFeePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6108,
                            "src": "9138:20:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 38997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9138:52:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38998,
                        "nodeType": "EmitStatement",
                        "src": "9133:57:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the value of tradingFeePercent storage variable.\n\t * @param newValue The new value for tradingFeePercent.\n",
                  "id": 39000,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 38971,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38970,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "8983:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8983:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 38973,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 38972,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "8993:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8993:13:132"
                    }
                  ],
                  "name": "setTradingFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 38969,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38968,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 39000,
                        "src": "8956:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 38967,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8956:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8955:18:132"
                  },
                  "returnParameters": {
                    "id": 38974,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9007:0:132"
                  },
                  "scope": 40045,
                  "src": "8926:268:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39033,
                    "nodeType": "Block",
                    "src": "9422:193:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 39014,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 39010,
                                "name": "newValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39002,
                                "src": "9434:8:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "id": 39013,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 39011,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9446:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3230",
                                  "id": 39012,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9450:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "9446:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              },
                              "src": "9434:18:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76616c756520746f6f2068696768",
                              "id": 39015,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9454:16:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              },
                              "value": "value too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              }
                            ],
                            "id": 39009,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9426:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9426:45:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39017,
                        "nodeType": "ExpressionStatement",
                        "src": "9426:45:132"
                      },
                      {
                        "assignments": [
                          39019
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39019,
                            "name": "oldValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 39033,
                            "src": "9475:16:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39018,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9475:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39021,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39020,
                          "name": "borrowingFeePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4672,
                          "src": "9494:19:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9475:38:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39022,
                            "name": "borrowingFeePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4672,
                            "src": "9517:19:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39023,
                            "name": "newValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39002,
                            "src": "9539:8:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9517:30:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39025,
                        "nodeType": "ExpressionStatement",
                        "src": "9517:30:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39027,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "9580:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39028,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9580:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39029,
                              "name": "oldValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39019,
                              "src": "9592:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39030,
                              "name": "newValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39002,
                              "src": "9602:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39026,
                            "name": "SetBorrowingFeePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6116,
                            "src": "9557:22:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 39031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9557:54:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39032,
                        "nodeType": "EmitStatement",
                        "src": "9552:59:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the value of borrowingFeePercent storage variable.\n\t * @param newValue The new value for borrowingFeePercent.\n",
                  "id": 39034,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39005,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39004,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "9398:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9398:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39007,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39006,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "9408:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9408:13:132"
                    }
                  ],
                  "name": "setBorrowingFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39003,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39002,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 39034,
                        "src": "9371:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39001,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9371:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9370:18:132"
                  },
                  "returnParameters": {
                    "id": 39008,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9422:0:132"
                  },
                  "scope": 40045,
                  "src": "9339:276:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39067,
                    "nodeType": "Block",
                    "src": "9849:204:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 39048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 39044,
                                "name": "newValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39036,
                                "src": "9861:8:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "id": 39047,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 39045,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9873:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3230",
                                  "id": 39046,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9877:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "9873:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              },
                              "src": "9861:18:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76616c756520746f6f2068696768",
                              "id": 39049,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9881:16:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              },
                              "value": "value too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              }
                            ],
                            "id": 39043,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "9853:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9853:45:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39051,
                        "nodeType": "ExpressionStatement",
                        "src": "9853:45:132"
                      },
                      {
                        "assignments": [
                          39053
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39053,
                            "name": "oldValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 39067,
                            "src": "9902:16:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39052,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9902:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39055,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39054,
                          "name": "swapExtrernalFeePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4800,
                          "src": "9921:23:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9902:42:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39056,
                            "name": "swapExtrernalFeePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4800,
                            "src": "9948:23:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39057,
                            "name": "newValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39036,
                            "src": "9974:8:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9948:34:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39059,
                        "nodeType": "ExpressionStatement",
                        "src": "9948:34:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39061,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "10018:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39062,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10018:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39063,
                              "name": "oldValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39053,
                              "src": "10030:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39064,
                              "name": "newValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39036,
                              "src": "10040:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39060,
                            "name": "SetSwapExternalFeePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6124,
                            "src": "9992:25:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 39065,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9992:57:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39066,
                        "nodeType": "EmitStatement",
                        "src": "9987:62:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the value of swapExtrernalFeePercent storage variable\n\t * @param newValue the new value for swapExternalFeePercent",
                  "id": 39068,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39039,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39038,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "9825:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9825:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39041,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39040,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "9835:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9835:13:132"
                    }
                  ],
                  "name": "setSwapExternalFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39037,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39036,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 39068,
                        "src": "9798:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39035,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9798:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9797:18:132"
                  },
                  "returnParameters": {
                    "id": 39042,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9849:0:132"
                  },
                  "scope": 40045,
                  "src": "9763:290:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39101,
                    "nodeType": "Block",
                    "src": "10281:193:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 39082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 39078,
                                "name": "newValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39070,
                                "src": "10293:8:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "id": 39081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 39079,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10305:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3230",
                                  "id": 39080,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10309:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "10305:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              },
                              "src": "10293:18:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76616c756520746f6f2068696768",
                              "id": 39083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10313:16:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              },
                              "value": "value too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              }
                            ],
                            "id": 39077,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10285:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10285:45:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39085,
                        "nodeType": "ExpressionStatement",
                        "src": "10285:45:132"
                      },
                      {
                        "assignments": [
                          39087
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39087,
                            "name": "oldValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 39101,
                            "src": "10334:16:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39086,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10334:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39089,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39088,
                          "name": "affiliateFeePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4691,
                          "src": "10353:19:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10334:38:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39090,
                            "name": "affiliateFeePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4691,
                            "src": "10376:19:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39091,
                            "name": "newValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39070,
                            "src": "10398:8:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10376:30:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39093,
                        "nodeType": "ExpressionStatement",
                        "src": "10376:30:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39095,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "10439:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10439:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39097,
                              "name": "oldValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39087,
                              "src": "10451:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39098,
                              "name": "newValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39070,
                              "src": "10461:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39094,
                            "name": "SetAffiliateFeePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6132,
                            "src": "10416:22:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 39099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10416:54:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39100,
                        "nodeType": "EmitStatement",
                        "src": "10411:59:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the value of affiliateFeePercent storage variable.\n\t * @param newValue The new value for affiliateFeePercent.\n",
                  "id": 39102,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39073,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39072,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "10257:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10257:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39075,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39074,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "10267:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10267:13:132"
                    }
                  ],
                  "name": "setAffiliateFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39071,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39070,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 39102,
                        "src": "10230:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39069,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10230:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10229:18:132"
                  },
                  "returnParameters": {
                    "id": 39076,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10281:0:132"
                  },
                  "scope": 40045,
                  "src": "10198:276:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39135,
                    "nodeType": "Block",
                    "src": "10738:229:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 39116,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 39112,
                                "name": "newValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39104,
                                "src": "10750:8:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "id": 39115,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 39113,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10762:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3230",
                                  "id": 39114,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10766:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "10762:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              },
                              "src": "10750:18:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76616c756520746f6f2068696768",
                              "id": 39117,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10770:16:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              },
                              "value": "value too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              }
                            ],
                            "id": 39111,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "10742:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10742:45:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39119,
                        "nodeType": "ExpressionStatement",
                        "src": "10742:45:132"
                      },
                      {
                        "assignments": [
                          39121
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39121,
                            "name": "oldValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 39135,
                            "src": "10791:16:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39120,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10791:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39123,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39122,
                          "name": "affiliateTradingTokenFeePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4780,
                          "src": "10810:31:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10791:50:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39124,
                            "name": "affiliateTradingTokenFeePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4780,
                            "src": "10845:31:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39125,
                            "name": "newValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39104,
                            "src": "10879:8:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10845:42:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39127,
                        "nodeType": "ExpressionStatement",
                        "src": "10845:42:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39129,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "10932:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10932:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39131,
                              "name": "oldValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39121,
                              "src": "10944:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39132,
                              "name": "newValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39104,
                              "src": "10954:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39128,
                            "name": "SetAffiliateTradingTokenFeePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6140,
                            "src": "10897:34:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 39133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10897:66:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39134,
                        "nodeType": "EmitStatement",
                        "src": "10892:71:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the value of affiliateTradingTokenFeePercent storage variable.\n\t * @param newValue The new value for affiliateTradingTokenFeePercent.\n",
                  "id": 39136,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39107,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39106,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "10714:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10714:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39109,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39108,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "10724:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10724:13:132"
                    }
                  ],
                  "name": "setAffiliateTradingTokenFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39105,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39104,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 39136,
                        "src": "10687:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39103,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10687:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10686:18:132"
                  },
                  "returnParameters": {
                    "id": 39110,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10738:0:132"
                  },
                  "scope": 40045,
                  "src": "10643:324:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39169,
                    "nodeType": "Block",
                    "src": "11219:217:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 39150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 39146,
                                "name": "newValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39138,
                                "src": "11231:8:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "id": 39149,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 39147,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11243:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3230",
                                  "id": 39148,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11247:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "11243:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              },
                              "src": "11231:18:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "76616c756520746f6f2068696768",
                              "id": 39151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11251:16:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              },
                              "value": "value too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6c8d658a4fc33e9be2c0226e4dea73e645f573b0c8887420e6bc160f55c71c11",
                                "typeString": "literal_string \"value too high\""
                              }
                            ],
                            "id": 39145,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "11223:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11223:45:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39153,
                        "nodeType": "ExpressionStatement",
                        "src": "11223:45:132"
                      },
                      {
                        "assignments": [
                          39155
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39155,
                            "name": "oldValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 39169,
                            "src": "11272:16:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39154,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11272:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39157,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39156,
                          "name": "liquidationIncentivePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4698,
                          "src": "11291:27:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11272:46:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39158,
                            "name": "liquidationIncentivePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4698,
                            "src": "11322:27:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39159,
                            "name": "newValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39138,
                            "src": "11352:8:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11322:38:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39161,
                        "nodeType": "ExpressionStatement",
                        "src": "11322:38:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39163,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "11401:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11401:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39165,
                              "name": "oldValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39155,
                              "src": "11413:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39166,
                              "name": "newValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39138,
                              "src": "11423:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39162,
                            "name": "SetLiquidationIncentivePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6148,
                            "src": "11370:30:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 39167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11370:62:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39168,
                        "nodeType": "EmitStatement",
                        "src": "11365:67:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the value of liquidationIncentivePercent storage variable.\n\t * @param newValue The new value for liquidationIncentivePercent.\n",
                  "id": 39170,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39141,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39140,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "11195:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11195:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39143,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39142,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "11205:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11205:13:132"
                    }
                  ],
                  "name": "setLiquidationIncentivePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39139,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39138,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 39170,
                        "src": "11168:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39137,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11168:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11167:18:132"
                  },
                  "returnParameters": {
                    "id": 39144,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11219:0:132"
                  },
                  "scope": 40045,
                  "src": "11128:308:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39183,
                    "nodeType": "Block",
                    "src": "11643:34:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39179,
                            "name": "maxDisagreement",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4719,
                            "src": "11647:15:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39180,
                            "name": "newValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39172,
                            "src": "11665:8:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11647:26:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39182,
                        "nodeType": "ExpressionStatement",
                        "src": "11647:26:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the value of the maximum swap spread.\n\t * @param newValue The new value for maxDisagreement.\n",
                  "id": 39184,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39175,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39174,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "11619:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11619:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39177,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39176,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "11629:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11629:13:132"
                    }
                  ],
                  "name": "setMaxDisagreement",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39173,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39172,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 39184,
                        "src": "11592:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39171,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11592:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11591:18:132"
                  },
                  "returnParameters": {
                    "id": 39178,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11643:0:132"
                  },
                  "scope": 40045,
                  "src": "11564:113:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39197,
                    "nodeType": "Block",
                    "src": "11979:31:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39193,
                            "name": "sourceBuffer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4722,
                            "src": "11983:12:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39194,
                            "name": "newValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39186,
                            "src": "11998:8:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11983:23:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39196,
                        "nodeType": "ExpressionStatement",
                        "src": "11983:23:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the value of the maximum source buffer.\n\t * @dev To avoid rounding issues on the swap rate a small buffer is implemented.\n\t * @param newValue The new value for the maximum source buffer.\n",
                  "id": 39198,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39189,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39188,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "11955:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11955:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39191,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39190,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "11965:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11965:13:132"
                    }
                  ],
                  "name": "setSourceBuffer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39187,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39186,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 39198,
                        "src": "11928:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39185,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11928:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11927:18:132"
                  },
                  "returnParameters": {
                    "id": 39192,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11979:0:132"
                  },
                  "scope": 40045,
                  "src": "11903:107:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39222,
                    "nodeType": "Block",
                    "src": "12215:120:132",
                    "statements": [
                      {
                        "assignments": [
                          39208
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39208,
                            "name": "oldValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 39222,
                            "src": "12219:16:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39207,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12219:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39210,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39209,
                          "name": "maxSwapSize",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4725,
                          "src": "12238:11:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12219:30:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39211,
                            "name": "maxSwapSize",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4725,
                            "src": "12253:11:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39212,
                            "name": "newValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39200,
                            "src": "12267:8:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12253:22:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39214,
                        "nodeType": "ExpressionStatement",
                        "src": "12253:22:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39216,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "12300:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12300:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39218,
                              "name": "oldValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39208,
                              "src": "12312:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39219,
                              "name": "newValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39200,
                              "src": "12322:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39215,
                            "name": "SetMaxSwapSize",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6156,
                            "src": "12285:14:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 39220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12285:46:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39221,
                        "nodeType": "EmitStatement",
                        "src": "12280:51:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the value of the swap size limit.\n\t * @param newValue The new value for the maximum swap size.\n",
                  "id": 39223,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39203,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39202,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "12191:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12191:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39205,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39204,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "12201:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12201:13:132"
                    }
                  ],
                  "name": "setMaxSwapSize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39201,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39200,
                        "name": "newValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 39223,
                        "src": "12164:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39199,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12164:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12163:18:132"
                  },
                  "returnParameters": {
                    "id": 39206,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12215:0:132"
                  },
                  "scope": 40045,
                  "src": "12140:195:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39247,
                    "nodeType": "Block",
                    "src": "12713:149:132",
                    "statements": [
                      {
                        "assignments": [
                          39233
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39233,
                            "name": "oldController",
                            "nodeType": "VariableDeclaration",
                            "scope": 39247,
                            "src": "12717:21:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 39232,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12717:7:132",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39235,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39234,
                          "name": "feesController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4637,
                          "src": "12741:14:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12717:38:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39236,
                            "name": "feesController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4637,
                            "src": "12759:14:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39237,
                            "name": "newController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39225,
                            "src": "12776:13:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12759:30:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 39239,
                        "nodeType": "ExpressionStatement",
                        "src": "12759:30:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39241,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "12817:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12817:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39243,
                              "name": "oldController",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39233,
                              "src": "12829:13:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39244,
                              "name": "newController",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39225,
                              "src": "12844:13:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 39240,
                            "name": "SetFeesController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6164,
                            "src": "12799:17:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 39245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12799:59:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39246,
                        "nodeType": "EmitStatement",
                        "src": "12794:64:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the address of the feesController instance.\n\t * @dev The fee sharing proxy must be the feesController of the\nprotocol contract. This allows the fee sharing proxy\nto withdraw the fees.\n\t * @param newController The new address of the feesController.\n",
                  "id": 39248,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39228,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39227,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "12689:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12689:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39230,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39229,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "12699:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12699:13:132"
                    }
                  ],
                  "name": "setFeesController",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39225,
                        "name": "newController",
                        "nodeType": "VariableDeclaration",
                        "scope": 39248,
                        "src": "12657:21:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39224,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12657:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12656:23:132"
                  },
                  "returnParameters": {
                    "id": 39231,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12713:0:132"
                  },
                  "scope": 40045,
                  "src": "12630:232:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39388,
                    "nodeType": "Block",
                    "src": "13252:985:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 39263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 39260,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "13264:3:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 39261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13264:10:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 39262,
                                "name": "feesController",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4637,
                                "src": "13278:14:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "13264:28:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 39264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13294:14:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 39259,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "13256:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13256:53:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39266,
                        "nodeType": "ExpressionStatement",
                        "src": "13256:53:132"
                      },
                      {
                        "assignments": [
                          39268
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39268,
                            "name": "lendingBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 39388,
                            "src": "13314:22:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39267,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13314:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39272,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 39269,
                            "name": "lendingFeeTokensHeld",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4646,
                            "src": "13339:20:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 39271,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 39270,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39250,
                            "src": "13360:5:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13339:27:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13314:52:132"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 39275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 39273,
                            "name": "lendingBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39268,
                            "src": "13374:14:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 39274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13391:1:132",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13374:18:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 39294,
                        "nodeType": "IfStatement",
                        "src": "13370:147:132",
                        "trueBody": {
                          "id": 39293,
                          "nodeType": "Block",
                          "src": "13394:123:132",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 39280,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 39276,
                                    "name": "lendingFeeTokensHeld",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4646,
                                    "src": "13399:20:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 39278,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 39277,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 39250,
                                    "src": "13420:5:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13399:27:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 39279,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13429:1:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13399:31:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39281,
                              "nodeType": "ExpressionStatement",
                              "src": "13399:31:132"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 39291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 39282,
                                    "name": "lendingFeeTokensPaid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4650,
                                    "src": "13435:20:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 39284,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 39283,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 39250,
                                    "src": "13456:5:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13435:27:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 39289,
                                      "name": "lendingBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 39268,
                                      "src": "13497:14:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 39285,
                                        "name": "lendingFeeTokensPaid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4650,
                                        "src": "13465:20:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 39287,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 39286,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 39250,
                                        "src": "13486:5:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "13465:27:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 39288,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "13465:31:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 39290,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13465:47:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13435:77:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39292,
                              "nodeType": "ExpressionStatement",
                              "src": "13435:77:132"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          39296
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39296,
                            "name": "tradingBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 39388,
                            "src": "13521:22:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39295,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13521:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39300,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 39297,
                            "name": "tradingFeeTokensHeld",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4661,
                            "src": "13546:20:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 39299,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 39298,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39250,
                            "src": "13567:5:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13546:27:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13521:52:132"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 39303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 39301,
                            "name": "tradingBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39296,
                            "src": "13581:14:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 39302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13598:1:132",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13581:18:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 39322,
                        "nodeType": "IfStatement",
                        "src": "13577:147:132",
                        "trueBody": {
                          "id": 39321,
                          "nodeType": "Block",
                          "src": "13601:123:132",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 39308,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 39304,
                                    "name": "tradingFeeTokensHeld",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4661,
                                    "src": "13606:20:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 39306,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 39305,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 39250,
                                    "src": "13627:5:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13606:27:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 39307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13636:1:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13606:31:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39309,
                              "nodeType": "ExpressionStatement",
                              "src": "13606:31:132"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 39319,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 39310,
                                    "name": "tradingFeeTokensPaid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4665,
                                    "src": "13642:20:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 39312,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 39311,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 39250,
                                    "src": "13663:5:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13642:27:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 39317,
                                      "name": "tradingBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 39296,
                                      "src": "13704:14:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 39313,
                                        "name": "tradingFeeTokensPaid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4665,
                                        "src": "13672:20:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 39315,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 39314,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 39250,
                                        "src": "13693:5:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "13672:27:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 39316,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "13672:31:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 39318,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13672:47:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13642:77:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39320,
                              "nodeType": "ExpressionStatement",
                              "src": "13642:77:132"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          39324
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39324,
                            "name": "borrowingBalance",
                            "nodeType": "VariableDeclaration",
                            "scope": 39388,
                            "src": "13728:24:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39323,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13728:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39328,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 39325,
                            "name": "borrowingFeeTokensHeld",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4676,
                            "src": "13755:22:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 39327,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 39326,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39250,
                            "src": "13778:5:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13755:29:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13728:56:132"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 39331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 39329,
                            "name": "borrowingBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39324,
                            "src": "13792:16:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 39330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13811:1:132",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13792:20:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 39350,
                        "nodeType": "IfStatement",
                        "src": "13788:157:132",
                        "trueBody": {
                          "id": 39349,
                          "nodeType": "Block",
                          "src": "13814:131:132",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 39336,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 39332,
                                    "name": "borrowingFeeTokensHeld",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4676,
                                    "src": "13819:22:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 39334,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 39333,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 39250,
                                    "src": "13842:5:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13819:29:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 39335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13851:1:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13819:33:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39337,
                              "nodeType": "ExpressionStatement",
                              "src": "13819:33:132"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 39347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 39338,
                                    "name": "borrowingFeeTokensPaid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4680,
                                    "src": "13857:22:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 39340,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 39339,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 39250,
                                    "src": "13880:5:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13857:29:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 39345,
                                      "name": "borrowingBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 39324,
                                      "src": "13923:16:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 39341,
                                        "name": "borrowingFeeTokensPaid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4680,
                                        "src": "13889:22:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 39343,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 39342,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 39250,
                                        "src": "13912:5:132",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "13889:29:132",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 39344,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42076,
                                    "src": "13889:33:132",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 39346,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13889:51:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13857:83:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39348,
                              "nodeType": "ExpressionStatement",
                              "src": "13857:83:132"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          39352
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39352,
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 39388,
                            "src": "13949:14:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39351,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13949:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39360,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 39358,
                              "name": "borrowingBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39324,
                              "src": "14005:16:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 39355,
                                  "name": "tradingBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39296,
                                  "src": "13985:14:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 39353,
                                  "name": "lendingBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39268,
                                  "src": "13966:14:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 39354,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42076,
                                "src": "13966:18:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 39356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13966:34:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 39357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42076,
                            "src": "13966:38:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 39359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13966:56:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13949:73:132"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 39363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 39361,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39352,
                            "src": "14030:6:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 39362,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14040:1:132",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14030:11:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 39367,
                        "nodeType": "IfStatement",
                        "src": "14026:40:132",
                        "trueBody": {
                          "id": 39366,
                          "nodeType": "Block",
                          "src": "14043:23:132",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 39364,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39352,
                                "src": "14055:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 39258,
                              "id": 39365,
                              "nodeType": "Return",
                              "src": "14048:13:132"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 39372,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39252,
                              "src": "14097:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39373,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39352,
                              "src": "14107:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 39369,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39250,
                                  "src": "14077:5:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 39368,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "14070:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 39370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14070:13:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 39371,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 41862,
                            "src": "14070:26:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 39374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14070:44:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39375,
                        "nodeType": "ExpressionStatement",
                        "src": "14070:44:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39377,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "14137:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14137:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39379,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39250,
                              "src": "14149:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39380,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39252,
                              "src": "14156:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39381,
                              "name": "lendingBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39268,
                              "src": "14166:14:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39382,
                              "name": "tradingBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39296,
                              "src": "14182:14:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39383,
                              "name": "borrowingBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39324,
                              "src": "14198:16:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39376,
                            "name": "WithdrawFees",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6202,
                            "src": "14124:12:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 39384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14124:91:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39385,
                        "nodeType": "EmitStatement",
                        "src": "14119:96:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39386,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39352,
                          "src": "14227:6:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 39258,
                        "id": 39387,
                        "nodeType": "Return",
                        "src": "14220:13:132"
                      }
                    ]
                  },
                  "documentation": "@notice The feesController calls this function to withdraw fees\nfrom three sources: lending, trading and borrowing.\n\t * @param token The address of the token instance.\n@param receiver The address of the withdrawal recipient.\n\t * @return The withdrawn amount.\n",
                  "id": 39389,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39255,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39254,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "13220:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13220:13:132"
                    }
                  ],
                  "name": "withdrawFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39253,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39250,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 39389,
                        "src": "13178:13:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39249,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13178:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39252,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 39389,
                        "src": "13193:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39251,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13193:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13177:33:132"
                  },
                  "returnParameters": {
                    "id": 39258,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39257,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 39389,
                        "src": "13243:7:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39256,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13243:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13242:9:132"
                  },
                  "scope": 40045,
                  "src": "13156:1081:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39474,
                    "nodeType": "Block",
                    "src": "14728:554:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 39406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 39403,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "14740:3:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 39404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14740:10:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 39405,
                                "name": "feesController",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4637,
                                "src": "14754:14:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "14740:28:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 39407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14770:14:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 39402,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "14732:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14732:53:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39409,
                        "nodeType": "ExpressionStatement",
                        "src": "14732:53:132"
                      },
                      {
                        "assignments": [
                          39411
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39411,
                            "name": "withdrawAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 39474,
                            "src": "14790:22:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39410,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14790:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39413,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39412,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39395,
                          "src": "14815:6:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14790:31:132"
                      },
                      {
                        "assignments": [
                          39415
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39415,
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 39474,
                            "src": "14826:15:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39414,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14826:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39419,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 39416,
                            "name": "lendingFeeTokensHeld",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4646,
                            "src": "14844:20:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 39418,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 39417,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39391,
                            "src": "14865:5:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14844:27:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14826:45:132"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 39422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 39420,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39411,
                            "src": "14879:14:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 39421,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39415,
                            "src": "14896:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14879:24:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 39428,
                        "nodeType": "IfStatement",
                        "src": "14875:64:132",
                        "trueBody": {
                          "id": 39427,
                          "nodeType": "Block",
                          "src": "14905:34:132",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 39425,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 39423,
                                  "name": "withdrawAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39411,
                                  "src": "14910:14:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 39424,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39415,
                                  "src": "14927:7:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14910:24:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39426,
                              "nodeType": "ExpressionStatement",
                              "src": "14910:24:132"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 39431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 39429,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39411,
                            "src": "14946:14:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 39430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14964:1:132",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14946:19:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 39435,
                        "nodeType": "IfStatement",
                        "src": "14942:47:132",
                        "trueBody": {
                          "id": 39434,
                          "nodeType": "Block",
                          "src": "14967:22:132",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 39432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14979:5:132",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 39401,
                              "id": 39433,
                              "nodeType": "Return",
                              "src": "14972:12:132"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 39436,
                              "name": "lendingFeeTokensHeld",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4646,
                              "src": "14993:20:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 39438,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 39437,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39391,
                              "src": "15014:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "14993:27:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 39441,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39411,
                                "src": "15035:14:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 39439,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39415,
                                "src": "15023:7:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "15023:11:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 39442,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15023:27:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14993:57:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39444,
                        "nodeType": "ExpressionStatement",
                        "src": "14993:57:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 39445,
                              "name": "lendingFeeTokensPaid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4650,
                              "src": "15054:20:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 39447,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 39446,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39391,
                              "src": "15075:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15054:27:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 39452,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39411,
                                "src": "15116:14:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 39448,
                                  "name": "lendingFeeTokensPaid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4650,
                                  "src": "15084:20:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 39450,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 39449,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39391,
                                  "src": "15105:5:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15084:27:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "15084:31:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 39453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15084:47:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15054:77:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39455,
                        "nodeType": "ExpressionStatement",
                        "src": "15054:77:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 39460,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39393,
                              "src": "15163:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39461,
                              "name": "withdrawAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39411,
                              "src": "15173:14:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 39457,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39391,
                                  "src": "15143:5:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 39456,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "15136:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 39458,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15136:13:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 39459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 41862,
                            "src": "15136:26:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 39462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15136:52:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39463,
                        "nodeType": "ExpressionStatement",
                        "src": "15136:52:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39465,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "15218:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "15218:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39467,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39391,
                              "src": "15230:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39468,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39393,
                              "src": "15237:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39469,
                              "name": "withdrawAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39411,
                              "src": "15247:14:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39464,
                            "name": "WithdrawLendingFees",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6212,
                            "src": "15198:19:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 39470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15198:64:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39471,
                        "nodeType": "EmitStatement",
                        "src": "15193:69:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 39472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15274:4:132",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 39401,
                        "id": 39473,
                        "nodeType": "Return",
                        "src": "15267:11:132"
                      }
                    ]
                  },
                  "documentation": "@notice The feesController calls this function to withdraw fees\naccrued from lending operations.\n\t * @param token The address of the token instance.\n@param receiver The address of the withdrawal recipient.\n@param amount The amount of fees to get, ignored if greater than balance.\n\t * @return Whether withdrawal was successful.\n",
                  "id": 39475,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39398,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39397,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "14699:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "14699:13:132"
                    }
                  ],
                  "name": "withdrawLendingFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39396,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39391,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 39475,
                        "src": "14635:13:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39390,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14635:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39393,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 39475,
                        "src": "14652:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39392,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14652:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39395,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 39475,
                        "src": "14672:14:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39394,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14672:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14631:58:132"
                  },
                  "returnParameters": {
                    "id": 39401,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39400,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 39475,
                        "src": "14722:4:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 39399,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14722:4:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14721:6:132"
                  },
                  "scope": 40045,
                  "src": "14603:679:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39560,
                    "nodeType": "Block",
                    "src": "15773:554:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 39492,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 39489,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "15785:3:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 39490,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15785:10:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 39491,
                                "name": "feesController",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4637,
                                "src": "15799:14:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "15785:28:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 39493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15815:14:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 39488,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "15777:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15777:53:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39495,
                        "nodeType": "ExpressionStatement",
                        "src": "15777:53:132"
                      },
                      {
                        "assignments": [
                          39497
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39497,
                            "name": "withdrawAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 39560,
                            "src": "15835:22:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39496,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15835:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39499,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39498,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39481,
                          "src": "15860:6:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15835:31:132"
                      },
                      {
                        "assignments": [
                          39501
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39501,
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 39560,
                            "src": "15871:15:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39500,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15871:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39505,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 39502,
                            "name": "tradingFeeTokensHeld",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4661,
                            "src": "15889:20:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 39504,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 39503,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39477,
                            "src": "15910:5:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15889:27:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15871:45:132"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 39508,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 39506,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39497,
                            "src": "15924:14:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 39507,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39501,
                            "src": "15941:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15924:24:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 39514,
                        "nodeType": "IfStatement",
                        "src": "15920:64:132",
                        "trueBody": {
                          "id": 39513,
                          "nodeType": "Block",
                          "src": "15950:34:132",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 39511,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 39509,
                                  "name": "withdrawAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39497,
                                  "src": "15955:14:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 39510,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39501,
                                  "src": "15972:7:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15955:24:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39512,
                              "nodeType": "ExpressionStatement",
                              "src": "15955:24:132"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 39517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 39515,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39497,
                            "src": "15991:14:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 39516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16009:1:132",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15991:19:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 39521,
                        "nodeType": "IfStatement",
                        "src": "15987:47:132",
                        "trueBody": {
                          "id": 39520,
                          "nodeType": "Block",
                          "src": "16012:22:132",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 39518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16024:5:132",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 39487,
                              "id": 39519,
                              "nodeType": "Return",
                              "src": "16017:12:132"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 39522,
                              "name": "tradingFeeTokensHeld",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4661,
                              "src": "16038:20:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 39524,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 39523,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39477,
                              "src": "16059:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16038:27:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 39527,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39497,
                                "src": "16080:14:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 39525,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39501,
                                "src": "16068:7:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "16068:11:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 39528,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16068:27:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16038:57:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39530,
                        "nodeType": "ExpressionStatement",
                        "src": "16038:57:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39540,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 39531,
                              "name": "tradingFeeTokensPaid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4665,
                              "src": "16099:20:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 39533,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 39532,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39477,
                              "src": "16120:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16099:27:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 39538,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39497,
                                "src": "16161:14:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 39534,
                                  "name": "tradingFeeTokensPaid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4665,
                                  "src": "16129:20:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 39536,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 39535,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39477,
                                  "src": "16150:5:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16129:27:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "16129:31:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 39539,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16129:47:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16099:77:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39541,
                        "nodeType": "ExpressionStatement",
                        "src": "16099:77:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 39546,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39479,
                              "src": "16208:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39547,
                              "name": "withdrawAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39497,
                              "src": "16218:14:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 39543,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39477,
                                  "src": "16188:5:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 39542,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "16181:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 39544,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16181:13:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 39545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 41862,
                            "src": "16181:26:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 39548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16181:52:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39549,
                        "nodeType": "ExpressionStatement",
                        "src": "16181:52:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39551,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "16263:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "16263:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39553,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39477,
                              "src": "16275:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39554,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39479,
                              "src": "16282:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39555,
                              "name": "withdrawAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39497,
                              "src": "16292:14:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39550,
                            "name": "WithdrawTradingFees",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6222,
                            "src": "16243:19:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 39556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16243:64:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39557,
                        "nodeType": "EmitStatement",
                        "src": "16238:69:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 39558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16319:4:132",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 39487,
                        "id": 39559,
                        "nodeType": "Return",
                        "src": "16312:11:132"
                      }
                    ]
                  },
                  "documentation": "@notice The feesController calls this function to withdraw fees\naccrued from trading operations.\n\t * @param token The address of the token instance.\n@param receiver The address of the withdrawal recipient.\n@param amount The amount of fees to get, ignored if greater than balance.\n\t * @return Whether withdrawal was successful.\n",
                  "id": 39561,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39484,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39483,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "15744:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "15744:13:132"
                    }
                  ],
                  "name": "withdrawTradingFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39477,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 39561,
                        "src": "15680:13:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39476,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15680:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39479,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 39561,
                        "src": "15697:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39478,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15697:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39481,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 39561,
                        "src": "15717:14:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39480,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15717:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15676:58:132"
                  },
                  "returnParameters": {
                    "id": 39487,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39486,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 39561,
                        "src": "15767:4:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 39485,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15767:4:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15766:6:132"
                  },
                  "scope": 40045,
                  "src": "15648:679:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39646,
                    "nodeType": "Block",
                    "src": "16822:564:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 39578,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 39575,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "16834:3:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 39576,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "16834:10:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 39577,
                                "name": "feesController",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4637,
                                "src": "16848:14:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "16834:28:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 39579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16864:14:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 39574,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "16826:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16826:53:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39581,
                        "nodeType": "ExpressionStatement",
                        "src": "16826:53:132"
                      },
                      {
                        "assignments": [
                          39583
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39583,
                            "name": "withdrawAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 39646,
                            "src": "16884:22:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39582,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16884:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39585,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39584,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39567,
                          "src": "16909:6:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16884:31:132"
                      },
                      {
                        "assignments": [
                          39587
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39587,
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 39646,
                            "src": "16920:15:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39586,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16920:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39591,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 39588,
                            "name": "borrowingFeeTokensHeld",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4676,
                            "src": "16938:22:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 39590,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 39589,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39563,
                            "src": "16961:5:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16938:29:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16920:47:132"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 39594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 39592,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39583,
                            "src": "16975:14:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 39593,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39587,
                            "src": "16992:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16975:24:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 39600,
                        "nodeType": "IfStatement",
                        "src": "16971:64:132",
                        "trueBody": {
                          "id": 39599,
                          "nodeType": "Block",
                          "src": "17001:34:132",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 39597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 39595,
                                  "name": "withdrawAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39583,
                                  "src": "17006:14:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 39596,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39587,
                                  "src": "17023:7:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17006:24:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39598,
                              "nodeType": "ExpressionStatement",
                              "src": "17006:24:132"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 39603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 39601,
                            "name": "withdrawAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39583,
                            "src": "17042:14:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 39602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17060:1:132",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17042:19:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 39607,
                        "nodeType": "IfStatement",
                        "src": "17038:47:132",
                        "trueBody": {
                          "id": 39606,
                          "nodeType": "Block",
                          "src": "17063:22:132",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 39604,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17075:5:132",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 39573,
                              "id": 39605,
                              "nodeType": "Return",
                              "src": "17068:12:132"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 39608,
                              "name": "borrowingFeeTokensHeld",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4676,
                              "src": "17089:22:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 39610,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 39609,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39563,
                              "src": "17112:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17089:29:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 39613,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39583,
                                "src": "17133:14:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 39611,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39587,
                                "src": "17121:7:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "17121:11:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 39614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17121:27:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17089:59:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39616,
                        "nodeType": "ExpressionStatement",
                        "src": "17089:59:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 39617,
                              "name": "borrowingFeeTokensPaid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4680,
                              "src": "17152:22:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 39619,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 39618,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39563,
                              "src": "17175:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17152:29:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 39624,
                                "name": "withdrawAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39583,
                                "src": "17218:14:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 39620,
                                  "name": "borrowingFeeTokensPaid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4680,
                                  "src": "17184:22:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 39622,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 39621,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39563,
                                  "src": "17207:5:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17184:29:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "17184:33:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 39625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17184:49:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17152:81:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39627,
                        "nodeType": "ExpressionStatement",
                        "src": "17152:81:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 39632,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39565,
                              "src": "17265:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39633,
                              "name": "withdrawAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39583,
                              "src": "17275:14:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 39629,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39563,
                                  "src": "17245:5:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 39628,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "17238:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 39630,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17238:13:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 39631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 41862,
                            "src": "17238:26:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 39634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17238:52:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39635,
                        "nodeType": "ExpressionStatement",
                        "src": "17238:52:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39637,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "17322:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "17322:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39639,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39563,
                              "src": "17334:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39640,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39565,
                              "src": "17341:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39641,
                              "name": "withdrawAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39583,
                              "src": "17351:14:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39636,
                            "name": "WithdrawBorrowingFees",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6232,
                            "src": "17300:21:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 39642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17300:66:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39643,
                        "nodeType": "EmitStatement",
                        "src": "17295:71:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 39644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17378:4:132",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 39573,
                        "id": 39645,
                        "nodeType": "Return",
                        "src": "17371:11:132"
                      }
                    ]
                  },
                  "documentation": "@notice The feesController calls this function to withdraw fees\naccrued from borrowing operations.\n\t * @param token The address of the token instance.\n@param receiver The address of the withdrawal recipient.\n@param amount The amount of fees to get, ignored if greater than balance.\n\t * @return Whether withdrawal was successful.\n",
                  "id": 39647,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39570,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39569,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "16793:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "16793:13:132"
                    }
                  ],
                  "name": "withdrawBorrowingFees",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39568,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39563,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 39647,
                        "src": "16729:13:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39562,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16729:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39565,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 39647,
                        "src": "16746:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39564,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16746:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39567,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 39647,
                        "src": "16766:14:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39566,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16766:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16725:58:132"
                  },
                  "returnParameters": {
                    "id": 39573,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39572,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 39647,
                        "src": "16816:4:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 39571,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16816:4:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16815:6:132"
                  },
                  "scope": 40045,
                  "src": "16695:691:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39667,
                    "nodeType": "Block",
                    "src": "17881:55:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 39663,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39649,
                              "src": "17915:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39664,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39651,
                              "src": "17925:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39662,
                            "name": "_withdrawProtocolToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27898,
                            "src": "17892:22:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_address_$_t_bool_$",
                              "typeString": "function (address,uint256) returns (address,bool)"
                            }
                          },
                          "id": 39665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17892:40:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                            "typeString": "tuple(address,bool)"
                          }
                        },
                        "functionReturnParameters": 39661,
                        "id": 39666,
                        "nodeType": "Return",
                        "src": "17885:47:132"
                      }
                    ]
                  },
                  "documentation": "@notice The owner calls this function to withdraw protocol tokens.\n\t * @dev Wrapper for ProtocolTokenUser::_withdrawProtocolToken internal function.\n\t * @param receiver The address of the withdrawal recipient.\n@param amount The amount of tokens to get.\n\t * @return The protocol token address.\n@return Withdrawal success (true/false).\n",
                  "id": 39668,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39654,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39653,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "17833:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "17833:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39656,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39655,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "17843:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "17843:13:132"
                    }
                  ],
                  "name": "withdrawProtocolToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39652,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39649,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 39668,
                        "src": "17790:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39648,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17790:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39651,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 39668,
                        "src": "17808:14:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39650,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17808:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17789:34:132"
                  },
                  "returnParameters": {
                    "id": 39661,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39658,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 39668,
                        "src": "17866:7:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39657,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17866:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39660,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 39668,
                        "src": "17875:4:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 39659,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17875:4:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17865:15:132"
                  },
                  "scope": 40045,
                  "src": "17759:177:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39696,
                    "nodeType": "Block",
                    "src": "18150:201:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39677,
                            "name": "protocolTokenHeld",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4682,
                            "src": "18186:17:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 39680,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39670,
                                "src": "18228:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 39678,
                                "name": "protocolTokenHeld",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4682,
                                "src": "18206:17:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 39679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "18206:21:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 39681,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18206:29:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18186:49:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39683,
                        "nodeType": "ExpressionStatement",
                        "src": "18186:49:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39688,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "18313:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "18313:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 39691,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45286,
                                  "src": "18333:4:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ProtocolSettings_$40045",
                                    "typeString": "contract ProtocolSettings"
                                  }
                                ],
                                "id": 39690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "18325:7:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 39692,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18325:13:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39693,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39670,
                              "src": "18340:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 39685,
                                  "name": "protocolTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4739,
                                  "src": "18274:20:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 39684,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "18267:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 39686,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18267:28:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 39687,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 41887,
                            "src": "18267:45:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 39694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18267:80:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39695,
                        "nodeType": "ExpressionStatement",
                        "src": "18267:80:132"
                      }
                    ]
                  },
                  "documentation": "@notice The owner calls this function to deposit protocol tokens.\n\t * @param amount The tokens of fees to send.\n",
                  "id": 39697,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39673,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39672,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "18126:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "18126:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39675,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39674,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "18136:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "18136:13:132"
                    }
                  ],
                  "name": "depositProtocolToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39671,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39670,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 39697,
                        "src": "18101:14:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39669,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18101:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18100:16:132"
                  },
                  "returnParameters": {
                    "id": 39676,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18150:0:132"
                  },
                  "scope": 40045,
                  "src": "18071:280:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39713,
                    "nodeType": "Block",
                    "src": "18603:51:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 39709,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39699,
                              "src": "18637:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39710,
                              "name": "count",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39701,
                              "src": "18644:5:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 39707,
                              "name": "loanPoolsSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4708,
                              "src": "18614:12:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$26734_storage",
                                "typeString": "struct EnumerableBytes32Set.Bytes32Set storage ref"
                              }
                            },
                            "id": 39708,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "enumerate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27011,
                            "src": "18614:22:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$26734_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$bound_to$_t_struct$_Bytes32Set_$26734_storage_ptr_$",
                              "typeString": "function (struct EnumerableBytes32Set.Bytes32Set storage pointer,uint256,uint256) view returns (bytes32[] memory)"
                            }
                          },
                          "id": 39711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18614:36:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "functionReturnParameters": 39706,
                        "id": 39712,
                        "nodeType": "Return",
                        "src": "18607:43:132"
                      }
                    ]
                  },
                  "documentation": "@notice Get a list of loan pools.\n\t * @param start The offset.\n@param count The limit.\n\t * @return The array of loan pools.\n",
                  "id": 39714,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLoanPoolsList",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39702,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39699,
                        "name": "start",
                        "nodeType": "VariableDeclaration",
                        "scope": 39714,
                        "src": "18532:13:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39698,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18532:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39701,
                        "name": "count",
                        "nodeType": "VariableDeclaration",
                        "scope": 39714,
                        "src": "18547:13:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39700,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18547:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18531:30:132"
                  },
                  "returnParameters": {
                    "id": 39706,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39705,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 39714,
                        "src": "18585:16:132",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 39703,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "18585:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 39704,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "18585:9:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18584:18:132"
                  },
                  "scope": 40045,
                  "src": "18506:148:132",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39729,
                    "nodeType": "Block",
                    "src": "18886:59:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 39727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 39721,
                              "name": "loanPoolToUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4702,
                              "src": "18897:20:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 39723,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 39722,
                              "name": "loanPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39716,
                              "src": "18918:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "18897:30:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 39725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18939:1:132",
                                "subdenomination": null,
                                "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": 39724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18931:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 39726,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18931:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "18897:44:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 39720,
                        "id": 39728,
                        "nodeType": "Return",
                        "src": "18890:51:132"
                      }
                    ]
                  },
                  "documentation": "@notice Check whether a token is a pool token.\n\t * @dev By querying its underlying token.\n\t * @param loanPool The token address to check.\n",
                  "id": 39730,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isLoanPool",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39717,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39716,
                        "name": "loanPool",
                        "nodeType": "VariableDeclaration",
                        "scope": 39730,
                        "src": "18839:16:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39715,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18839:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18838:18:132"
                  },
                  "returnParameters": {
                    "id": 39720,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39719,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 39730,
                        "src": "18880:4:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 39718,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18880:4:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18879:6:132"
                  },
                  "scope": 40045,
                  "src": "18819:126:132",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39762,
                    "nodeType": "Block",
                    "src": "19206:357:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 39742,
                                  "name": "registryAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39732,
                                  "src": "19237:15:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 39740,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "19218:7:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 39741,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "19218:18:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 39743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19218:35:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "726567697374727941646472657373206e6f74206120636f6e7472616374",
                              "id": 39744,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19255:32:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_808c02bb6bf55f173d6b8ad8c1fbcd8b225172ff277b28e360c45597811fdbee",
                                "typeString": "literal_string \"registryAddress not a contract\""
                              },
                              "value": "registryAddress not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_808c02bb6bf55f173d6b8ad8c1fbcd8b225172ff277b28e360c45597811fdbee",
                                "typeString": "literal_string \"registryAddress not a contract\""
                              }
                            ],
                            "id": 39739,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "19210:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19210:78:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39746,
                        "nodeType": "ExpressionStatement",
                        "src": "19210:78:132"
                      },
                      {
                        "assignments": [
                          39748
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39748,
                            "name": "oldSovrynSwapContractRegistryAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 39762,
                            "src": "19293:44:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 39747,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "19293:7:132",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39750,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39749,
                          "name": "sovrynSwapContractRegistryAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4579,
                          "src": "19340:33:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19293:80:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39751,
                            "name": "sovrynSwapContractRegistryAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4579,
                            "src": "19377:33:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39752,
                            "name": "registryAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39732,
                            "src": "19413:15:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "19377:51:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 39754,
                        "nodeType": "ExpressionStatement",
                        "src": "19377:51:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39756,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "19475:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39757,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "19475:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39758,
                              "name": "oldSovrynSwapContractRegistryAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39748,
                              "src": "19487:36:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39759,
                              "name": "sovrynSwapContractRegistryAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4579,
                              "src": "19525:33:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 39755,
                            "name": "SetSovrynSwapContractRegistryAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6180,
                            "src": "19438:36:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 39760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19438:121:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39761,
                        "nodeType": "EmitStatement",
                        "src": "19433:126:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the contract registry address of the SovrynSwap network.\n\t * @param registryAddress the address of the registry contract.\n",
                  "id": 39763,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39735,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39734,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "19182:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "19182:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39737,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39736,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "19192:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "19192:13:132"
                    }
                  ],
                  "name": "setSovrynSwapContractRegistryAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39733,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39732,
                        "name": "registryAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 39763,
                        "src": "19148:23:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39731,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19148:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19147:25:132"
                  },
                  "returnParameters": {
                    "id": 39738,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19206:0:132"
                  },
                  "scope": 40045,
                  "src": "19102:461:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39799,
                    "nodeType": "Block",
                    "src": "19773:254:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 39775,
                                  "name": "wrbtcTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39765,
                                  "src": "19804:17:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 39773,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "19785:7:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 39774,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "19785:18:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 39776,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19785:37:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7772627463546f6b656e41646472657373206e6f74206120636f6e7472616374",
                              "id": 39777,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19824:34:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_690d60521c00d13cba03eb3b5346bfe72dca6e988c754f0336e53003baa76c2f",
                                "typeString": "literal_string \"wrbtcTokenAddress not a contract\""
                              },
                              "value": "wrbtcTokenAddress not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_690d60521c00d13cba03eb3b5346bfe72dca6e988c754f0336e53003baa76c2f",
                                "typeString": "literal_string \"wrbtcTokenAddress not a contract\""
                              }
                            ],
                            "id": 39772,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "19777:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19777:82:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39779,
                        "nodeType": "ExpressionStatement",
                        "src": "19777:82:132"
                      },
                      {
                        "assignments": [
                          39781
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39781,
                            "name": "oldwrbtcToken",
                            "nodeType": "VariableDeclaration",
                            "scope": 39799,
                            "src": "19864:21:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 39780,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "19864:7:132",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39785,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 39783,
                              "name": "wrbtcToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4737,
                              "src": "19896:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                "typeString": "contract IWrbtcERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                "typeString": "contract IWrbtcERC20"
                              }
                            ],
                            "id": 39782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "19888:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 39784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19888:19:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19864:43:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39786,
                            "name": "wrbtcToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4737,
                            "src": "19911:10:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                              "typeString": "contract IWrbtcERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 39788,
                                "name": "wrbtcTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39765,
                                "src": "19936:17:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 39787,
                              "name": "IWrbtcERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25559,
                              "src": "19924:11:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWrbtcERC20_$25559_$",
                                "typeString": "type(contract IWrbtcERC20)"
                              }
                            },
                            "id": 39789,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19924:30:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                              "typeString": "contract IWrbtcERC20"
                            }
                          },
                          "src": "19911:43:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                            "typeString": "contract IWrbtcERC20"
                          }
                        },
                        "id": 39791,
                        "nodeType": "ExpressionStatement",
                        "src": "19911:43:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39793,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "19978:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39794,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "19978:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39795,
                              "name": "oldwrbtcToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39781,
                              "src": "19990:13:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39796,
                              "name": "wrbtcTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39765,
                              "src": "20005:17:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 39792,
                            "name": "SetWrbtcToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6172,
                            "src": "19964:13:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 39797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19964:59:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39798,
                        "nodeType": "EmitStatement",
                        "src": "19959:64:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the wrBTC contract address.\n\t * @param wrbtcTokenAddress The address of the wrBTC contract.\n",
                  "id": 39800,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39768,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39767,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "19749:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "19749:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39770,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39769,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "19759:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "19759:13:132"
                    }
                  ],
                  "name": "setWrbtcToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39765,
                        "name": "wrbtcTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 39800,
                        "src": "19713:25:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39764,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19713:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19712:27:132"
                  },
                  "returnParameters": {
                    "id": 39771,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19773:0:132"
                  },
                  "scope": 40045,
                  "src": "19690:337:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39832,
                    "nodeType": "Block",
                    "src": "20273:298:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 39812,
                                  "name": "_protocolTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39802,
                                  "src": "20304:21:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 39810,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "20285:7:132",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$41098_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 39811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "20285:18:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 39813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20285:41:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5f70726f746f636f6c546f6b656e41646472657373206e6f74206120636f6e7472616374",
                              "id": 39814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20328:38:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e273df875a3a12a28f8b01bb25f585329211ba0c76edd90ed0743a15790d8e30",
                                "typeString": "literal_string \"_protocolTokenAddress not a contract\""
                              },
                              "value": "_protocolTokenAddress not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e273df875a3a12a28f8b01bb25f585329211ba0c76edd90ed0743a15790d8e30",
                                "typeString": "literal_string \"_protocolTokenAddress not a contract\""
                              }
                            ],
                            "id": 39809,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "20277:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20277:90:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39816,
                        "nodeType": "ExpressionStatement",
                        "src": "20277:90:132"
                      },
                      {
                        "assignments": [
                          39818
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39818,
                            "name": "oldProtocolTokenAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 39832,
                            "src": "20372:31:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 39817,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "20372:7:132",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39820,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39819,
                          "name": "protocolTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4739,
                          "src": "20406:20:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20372:54:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39821,
                            "name": "protocolTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4739,
                            "src": "20430:20:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39822,
                            "name": "_protocolTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39802,
                            "src": "20453:21:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "20430:44:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 39824,
                        "nodeType": "ExpressionStatement",
                        "src": "20430:44:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39826,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "20508:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "20508:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39828,
                              "name": "oldProtocolTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39818,
                              "src": "20520:23:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39829,
                              "name": "_protocolTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39802,
                              "src": "20545:21:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 39825,
                            "name": "SetProtocolTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6188,
                            "src": "20484:23:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 39830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20484:83:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39831,
                        "nodeType": "EmitStatement",
                        "src": "20479:88:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the protocol token contract address.\n\t * @param _protocolTokenAddress The address of the protocol token contract.\n",
                  "id": 39833,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39805,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39804,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "20249:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "20249:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39807,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39806,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "20259:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "20259:13:132"
                    }
                  ],
                  "name": "setProtocolTokenAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39803,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39802,
                        "name": "_protocolTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 39833,
                        "src": "20209:29:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39801,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20209:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20208:31:132"
                  },
                  "returnParameters": {
                    "id": 39808,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20273:0:132"
                  },
                  "scope": 40045,
                  "src": "20176:395:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39864,
                    "nodeType": "Block",
                    "src": "20796:214:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 39845,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 39843,
                                "name": "baseRewardValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39835,
                                "src": "20808:15:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 39844,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20826:1:132",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "20808:19:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4261736520726577617264206973207a65726f",
                              "id": 39846,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20829:21:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1d7bf98367abd5e286986000192a8dcfe356f92c8b972f1bb4a94a74873aa2c5",
                                "typeString": "literal_string \"Base reward is zero\""
                              },
                              "value": "Base reward is zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1d7bf98367abd5e286986000192a8dcfe356f92c8b972f1bb4a94a74873aa2c5",
                                "typeString": "literal_string \"Base reward is zero\""
                              }
                            ],
                            "id": 39842,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "20800:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20800:51:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39848,
                        "nodeType": "ExpressionStatement",
                        "src": "20800:51:132"
                      },
                      {
                        "assignments": [
                          39850
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39850,
                            "name": "oldValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 39864,
                            "src": "20856:16:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39849,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20856:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39852,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39851,
                          "name": "rolloverBaseReward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4732,
                          "src": "20875:18:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20856:37:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39853,
                            "name": "rolloverBaseReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4732,
                            "src": "20897:18:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39854,
                            "name": "baseRewardValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39835,
                            "src": "20918:15:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20897:36:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39856,
                        "nodeType": "ExpressionStatement",
                        "src": "20897:36:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39858,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "20965:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "20965:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39860,
                              "name": "oldValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39850,
                              "src": "20977:8:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39861,
                              "name": "rolloverBaseReward",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4732,
                              "src": "20987:18:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39857,
                            "name": "SetRolloverBaseReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6240,
                            "src": "20943:21:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 39862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20943:63:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39863,
                        "nodeType": "EmitStatement",
                        "src": "20938:68:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set rollover base reward. It should be denominated in wrBTC.\n\t * @param baseRewardValue The base reward.\n",
                  "id": 39865,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39838,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39837,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "20772:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "20772:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39840,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39839,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "20782:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "20782:13:132"
                    }
                  ],
                  "name": "setRolloverBaseReward",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39836,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39835,
                        "name": "baseRewardValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 39865,
                        "src": "20738:23:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39834,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20738:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20737:25:132"
                  },
                  "returnParameters": {
                    "id": 39841,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20796:0:132"
                  },
                  "scope": 40045,
                  "src": "20707:303:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39898,
                    "nodeType": "Block",
                    "src": "21200:221:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 39879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 39875,
                                "name": "rebatePercent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39867,
                                "src": "21212:13:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                },
                                "id": 39878,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 39876,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21229:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3230",
                                  "id": 39877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21233:2:132",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_20_by_1",
                                    "typeString": "int_const 20"
                                  },
                                  "value": "20"
                                },
                                "src": "21229:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                  "typeString": "int_const 100000000000000000000"
                                }
                              },
                              "src": "21212:23:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4665652072656261746520697320746f6f2068696768",
                              "id": 39880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21237:24:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_31909b9e31ec173bd02387b0cced26cde59502e97ea7e98b019bcef761fbf162",
                                "typeString": "literal_string \"Fee rebate is too high\""
                              },
                              "value": "Fee rebate is too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_31909b9e31ec173bd02387b0cced26cde59502e97ea7e98b019bcef761fbf162",
                                "typeString": "literal_string \"Fee rebate is too high\""
                              }
                            ],
                            "id": 39874,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "21204:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21204:58:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39882,
                        "nodeType": "ExpressionStatement",
                        "src": "21204:58:132"
                      },
                      {
                        "assignments": [
                          39884
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39884,
                            "name": "oldRebatePercent",
                            "nodeType": "VariableDeclaration",
                            "scope": 39898,
                            "src": "21267:24:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39883,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21267:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39886,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 39885,
                          "name": "feeRebatePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4746,
                          "src": "21294:16:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21267:43:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 39887,
                            "name": "feeRebatePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4746,
                            "src": "21314:16:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39888,
                            "name": "rebatePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39867,
                            "src": "21333:13:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21314:32:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39890,
                        "nodeType": "ExpressionStatement",
                        "src": "21314:32:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39892,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "21373:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "21373:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39894,
                              "name": "oldRebatePercent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39884,
                              "src": "21385:16:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39895,
                              "name": "rebatePercent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39867,
                              "src": "21403:13:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39891,
                            "name": "SetRebatePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6248,
                            "src": "21356:16:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 39896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21356:61:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39897,
                        "nodeType": "EmitStatement",
                        "src": "21351:66:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the fee rebate percent.\n\t * @param rebatePercent The fee rebate percent.\n",
                  "id": 39899,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39870,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39869,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "21176:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "21176:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39872,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39871,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "21186:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "21186:13:132"
                    }
                  ],
                  "name": "setRebatePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39868,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39867,
                        "name": "rebatePercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 39899,
                        "src": "21144:21:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39866,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21144:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21143:23:132"
                  },
                  "returnParameters": {
                    "id": 39873,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21200:0:132"
                  },
                  "scope": 40045,
                  "src": "21118:303:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39944,
                    "nodeType": "Block",
                    "src": "21714:377:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 39915,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 39913,
                                "name": "specialRebatesPercent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39905,
                                "src": "21764:21:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31303030653138",
                                "id": 39914,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21789:7:132",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000000000000000000000_by_1",
                                  "typeString": "int_const 1000000000000000000000"
                                },
                                "value": "1000e18"
                              },
                              "src": "21764:32:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5370656369616c206665652072656261746520697320746f6f2068696768",
                              "id": 39916,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21798:32:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c8e8c06329e3c9356b907a266df105a21d123bfad00f04693c4bad5cc15a68e4",
                                "typeString": "literal_string \"Special fee rebate is too high\""
                              },
                              "value": "Special fee rebate is too high"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c8e8c06329e3c9356b907a266df105a21d123bfad00f04693c4bad5cc15a68e4",
                                "typeString": "literal_string \"Special fee rebate is too high\""
                              }
                            ],
                            "id": 39912,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "21756:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 39917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21756:75:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39918,
                        "nodeType": "ExpressionStatement",
                        "src": "21756:75:132"
                      },
                      {
                        "assignments": [
                          39920
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 39920,
                            "name": "oldSpecialRebatesPercent",
                            "nodeType": "VariableDeclaration",
                            "scope": 39944,
                            "src": "21836:32:132",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 39919,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21836:7:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 39926,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 39921,
                              "name": "specialRebates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4796,
                              "src": "21871:14:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 39923,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 39922,
                              "name": "sourceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39901,
                              "src": "21886:11:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "21871:27:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 39925,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 39924,
                            "name": "destToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39903,
                            "src": "21899:9:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "21871:38:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21836:73:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 39927,
                                "name": "specialRebates",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4796,
                                "src": "21913:14:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 39930,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 39928,
                                "name": "sourceToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39901,
                                "src": "21928:11:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21913:27:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 39931,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 39929,
                              "name": "destToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39903,
                              "src": "21941:9:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "21913:38:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 39932,
                            "name": "specialRebatesPercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39905,
                            "src": "21954:21:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21913:62:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 39934,
                        "nodeType": "ExpressionStatement",
                        "src": "21913:62:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 39936,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "22003:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 39937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "22003:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39938,
                              "name": "sourceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39901,
                              "src": "22015:11:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39939,
                              "name": "destToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39903,
                              "src": "22028:9:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39940,
                              "name": "oldSpecialRebatesPercent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39920,
                              "src": "22039:24:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 39941,
                              "name": "specialRebatesPercent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39905,
                              "src": "22065:21:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 39935,
                            "name": "SetSpecialRebates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6260,
                            "src": "21985:17:132",
                            "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": 39942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21985:102:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 39943,
                        "nodeType": "EmitStatement",
                        "src": "21980:107:132"
                      }
                    ]
                  },
                  "documentation": "@notice Set the special fee rebate percent for specific pair\n\t * @param specialRebatesPercent The new special fee rebate percent.\n",
                  "id": 39945,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39908,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39907,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "21690:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "21690:9:132"
                    },
                    {
                      "arguments": null,
                      "id": 39910,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39909,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "21700:13:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "21700:13:132"
                    }
                  ],
                  "name": "setSpecialRebates",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39906,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39901,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 39945,
                        "src": "21604:19:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39900,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21604:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39903,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 39945,
                        "src": "21627:17:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39902,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21627:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39905,
                        "name": "specialRebatesPercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 39945,
                        "src": "21648:29:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39904,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21648:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21600:80:132"
                  },
                  "returnParameters": {
                    "id": 39911,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21714:0:132"
                  },
                  "scope": 40045,
                  "src": "21574:517:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39960,
                    "nodeType": "Block",
                    "src": "22445:67:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 39954,
                              "name": "specialRebates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4796,
                              "src": "22456:14:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 39956,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 39955,
                              "name": "sourceTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39947,
                              "src": "22471:18:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "22456:34:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 39958,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 39957,
                            "name": "destTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39949,
                            "src": "22491:16:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "22456:52:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 39953,
                        "id": 39959,
                        "nodeType": "Return",
                        "src": "22449:59:132"
                      }
                    ]
                  },
                  "documentation": "@notice Get a rebate percent of specific pairs.\n\t * @param sourceTokenAddress The source of pairs.\n@param destTokenAddress The dest of pairs.\n\t * @return The percent rebates of the pairs.\n",
                  "id": 39961,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSpecialRebates",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39950,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39947,
                        "name": "sourceTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 39961,
                        "src": "22337:26:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39946,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22337:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 39949,
                        "name": "destTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 39961,
                        "src": "22365:24:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39948,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22365:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22336:54:132"
                  },
                  "returnParameters": {
                    "id": 39953,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39952,
                        "name": "specialRebatesPercent",
                        "nodeType": "VariableDeclaration",
                        "scope": 39961,
                        "src": "22414:29:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39951,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22414:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22413:31:132"
                  },
                  "scope": 40045,
                  "src": "22310:202:132",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39968,
                    "nodeType": "Block",
                    "src": "22577:30:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39966,
                          "name": "protocolAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4750,
                          "src": "22588:15:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 39965,
                        "id": 39967,
                        "nodeType": "Return",
                        "src": "22581:22:132"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 39969,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getProtocolAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39962,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22542:2:132"
                  },
                  "returnParameters": {
                    "id": 39965,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39964,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 39969,
                        "src": "22568:7:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39963,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22568:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22567:9:132"
                  },
                  "scope": 40045,
                  "src": "22515:92:132",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39976,
                    "nodeType": "Block",
                    "src": "22672:30:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39974,
                          "name": "sovTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4771,
                          "src": "22683:15:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 39973,
                        "id": 39975,
                        "nodeType": "Return",
                        "src": "22676:22:132"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 39977,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSovTokenAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39970,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22637:2:132"
                  },
                  "returnParameters": {
                    "id": 39973,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39972,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 39977,
                        "src": "22663:7:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39971,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22663:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22662:9:132"
                  },
                  "scope": 40045,
                  "src": "22610:92:132",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39984,
                    "nodeType": "Block",
                    "src": "22768:31:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39982,
                          "name": "lockedSOVAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4773,
                          "src": "22779:16:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 39981,
                        "id": 39983,
                        "nodeType": "Return",
                        "src": "22772:23:132"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 39985,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLockedSOVAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39978,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22733:2:132"
                  },
                  "returnParameters": {
                    "id": 39981,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39980,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 39985,
                        "src": "22759:7:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 39979,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22759:7:132",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22758:9:132"
                  },
                  "scope": 40045,
                  "src": "22705:94:132",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 39992,
                    "nodeType": "Block",
                    "src": "22865:31:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 39990,
                          "name": "feeRebatePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4746,
                          "src": "22876:16:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 39989,
                        "id": 39991,
                        "nodeType": "Return",
                        "src": "22869:23:132"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 39993,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getFeeRebatePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39986,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22830:2:132"
                  },
                  "returnParameters": {
                    "id": 39989,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39988,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 39993,
                        "src": "22856:7:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39987,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22856:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22855:9:132"
                  },
                  "scope": 40045,
                  "src": "22802:94:132",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 40019,
                    "nodeType": "Block",
                    "src": "22953:116:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 40003,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 40001,
                                "name": "paused",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39995,
                                "src": "22965:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 40002,
                                "name": "pause",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4798,
                                "src": "22975:5:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "22965:15:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "43616e277420746f67676c65",
                              "id": 40004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22982:14:132",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f43244df2938a02c15c09c29ca7fea297b088051b0792982617ef3ef1ea81cfa",
                                "typeString": "literal_string \"Can't toggle\""
                              },
                              "value": "Can't toggle"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f43244df2938a02c15c09c29ca7fea297b088051b0792982617ef3ef1ea81cfa",
                                "typeString": "literal_string \"Can't toggle\""
                              }
                            ],
                            "id": 40000,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "22957:7:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 40005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22957:40:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40006,
                        "nodeType": "ExpressionStatement",
                        "src": "22957:40:132"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 40009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 40007,
                            "name": "pause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4798,
                            "src": "23001:5:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 40008,
                            "name": "paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39995,
                            "src": "23009:6:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "23001:14:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 40010,
                        "nodeType": "ExpressionStatement",
                        "src": "23001:14:132"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 40012,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "23037:3:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 40013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "23037:10:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40015,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "23049:7:132",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 40014,
                                "name": "paused",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39995,
                                "src": "23050:6:132",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40016,
                              "name": "paused",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39995,
                              "src": "23058:6:132",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 40011,
                            "name": "TogglePaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6300,
                            "src": "23024:12:132",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool,bool)"
                            }
                          },
                          "id": 40017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23024:41:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40018,
                        "nodeType": "EmitStatement",
                        "src": "23019:46:132"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 40020,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 39998,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 39997,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "22943:9:132",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "22943:9:132"
                    }
                  ],
                  "name": "togglePaused",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 39996,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39995,
                        "name": "paused",
                        "nodeType": "VariableDeclaration",
                        "scope": 40020,
                        "src": "22921:11:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 39994,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22921:4:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22920:13:132"
                  },
                  "returnParameters": {
                    "id": 39999,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22953:0:132"
                  },
                  "scope": 40045,
                  "src": "22899:170:132",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 40027,
                    "nodeType": "Block",
                    "src": "23129:20:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 40025,
                          "name": "pause",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4798,
                          "src": "23140:5:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 40024,
                        "id": 40026,
                        "nodeType": "Return",
                        "src": "23133:12:132"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 40028,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isProtocolPaused",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40021,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23097:2:132"
                  },
                  "returnParameters": {
                    "id": 40024,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40023,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 40028,
                        "src": "23123:4:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 40022,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23123:4:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23122:6:132"
                  },
                  "scope": 40045,
                  "src": "23072:77:132",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 40035,
                    "nodeType": "Block",
                    "src": "23221:38:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 40033,
                          "name": "swapExtrernalFeePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4800,
                          "src": "23232:23:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 40032,
                        "id": 40034,
                        "nodeType": "Return",
                        "src": "23225:30:132"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 40036,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSwapExternalFeePercent",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40029,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23186:2:132"
                  },
                  "returnParameters": {
                    "id": 40032,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40031,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 40036,
                        "src": "23212:7:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40030,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23212:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23211:9:132"
                  },
                  "scope": 40045,
                  "src": "23152:107:132",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 40043,
                    "nodeType": "Block",
                    "src": "23447:45:132",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 40041,
                          "name": "tradingRebateRewardsBasisPoint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4802,
                          "src": "23458:30:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 40040,
                        "id": 40042,
                        "nodeType": "Return",
                        "src": "23451:37:132"
                      }
                    ]
                  },
                  "documentation": "@notice Get the basis point of trading rebate rewards.\n\t * @return The basis point value.",
                  "id": 40044,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTradingRebateRewardsBasisPoint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40037,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23412:2:132"
                  },
                  "returnParameters": {
                    "id": 40040,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40039,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 40044,
                        "src": "23438:7:132",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40038,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23438:7:132",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23437:9:132"
                  },
                  "scope": 40045,
                  "src": "23370:122:132",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 40046,
              "src": "667:22827:132"
            }
          ],
          "src": "118:23377:132"
        },
        "id": 132
      },
      "contracts/modules/SwapsExternal.sol": {
        "ast": {
          "absolutePath": "contracts/modules/SwapsExternal.sol",
          "exportedSymbols": {
            "SwapsExternal": [
              40318
            ]
          },
          "id": 40319,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 40047,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:133"
            },
            {
              "id": 40048,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "142:33:133"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 40049,
              "nodeType": "ImportDirective",
              "scope": 40319,
              "sourceUnit": 4842,
              "src": "177:27:133",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/VaultController.sol",
              "file": "../mixins/VaultController.sol",
              "id": 40050,
              "nodeType": "ImportDirective",
              "scope": 40319,
              "sourceUnit": 28215,
              "src": "205:39:133",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/swaps/SwapsUser.sol",
              "file": "../swaps/SwapsUser.sol",
              "id": 40051,
              "nodeType": "ImportDirective",
              "scope": 40319,
              "sourceUnit": 43250,
              "src": "245:32:133",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/swaps/ISwapsImpl.sol",
              "file": "../swaps/ISwapsImpl.sol",
              "id": 40052,
              "nodeType": "ImportDirective",
              "scope": 40319,
              "sourceUnit": 42751,
              "src": "278:33:133",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/ModuleCommonFunctionalities.sol",
              "file": "../mixins/ModuleCommonFunctionalities.sol",
              "id": 40053,
              "nodeType": "ImportDirective",
              "scope": 40319,
              "sourceUnit": 27833,
              "src": "312:51:133",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 40054,
                    "name": "VaultController",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28214,
                    "src": "668:15:133",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VaultController_$28214",
                      "typeString": "contract VaultController"
                    }
                  },
                  "id": 40055,
                  "nodeType": "InheritanceSpecifier",
                  "src": "668:15:133"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 40056,
                    "name": "SwapsUser",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 43249,
                    "src": "685:9:133",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SwapsUser_$43249",
                      "typeString": "contract SwapsUser"
                    }
                  },
                  "id": 40057,
                  "nodeType": "InheritanceSpecifier",
                  "src": "685:9:133"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 40058,
                    "name": "ModuleCommonFunctionalities",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27832,
                    "src": "696:27:133",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ModuleCommonFunctionalities_$27832",
                      "typeString": "contract ModuleCommonFunctionalities"
                    }
                  },
                  "id": 40059,
                  "nodeType": "InheritanceSpecifier",
                  "src": "696:27:133"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                5832,
                6055,
                6341,
                27492,
                27832,
                28214,
                41125,
                41798,
                41829,
                43249
              ],
              "contractKind": "contract",
              "documentation": "@title Swaps External contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains functions to calculate and execute swaps.\n",
              "fullyImplemented": true,
              "id": 40318,
              "linearizedBaseContracts": [
                40318,
                27832,
                43249,
                27492,
                5832,
                6341,
                28214,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913,
                6055
              ],
              "name": "SwapsExternal",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 40062,
                    "nodeType": "Block",
                    "src": "798:2:133",
                    "statements": []
                  },
                  "documentation": "@notice Empty public constructor.\n",
                  "id": 40063,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40060,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "788:2:133"
                  },
                  "returnParameters": {
                    "id": 40061,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "798:0:133"
                  },
                  "scope": 40318,
                  "src": "777:23:133",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40070,
                    "nodeType": "Block",
                    "src": "904:38:133",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c6c6261636b206e6f7420616c6c6f776564",
                              "id": 40067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "915:22:133",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ad2d1476e23c49655ed3d169418af7587abbe0f378f28c369338d50deee2f5b0",
                                "typeString": "literal_string \"fallback not allowed\""
                              },
                              "value": "fallback not allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_ad2d1476e23c49655ed3d169418af7587abbe0f378f28c369338d50deee2f5b0",
                                "typeString": "literal_string \"fallback not allowed\""
                              }
                            ],
                            "id": 40066,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44999,
                              45000
                            ],
                            "referencedDeclaration": 45000,
                            "src": "908:6:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 40068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "908:30:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40069,
                        "nodeType": "ExpressionStatement",
                        "src": "908:30:133"
                      }
                    ]
                  },
                  "documentation": "@notice Fallback function is to react to receiving value (rBTC).\n",
                  "id": 40071,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40064,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "892:2:133"
                  },
                  "returnParameters": {
                    "id": 40065,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "904:0:133"
                  },
                  "scope": 40318,
                  "src": "884:58:133",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 40113,
                    "nodeType": "Block",
                    "src": "1125:342:133",
                    "statements": [
                      {
                        "assignments": [
                          40079
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 40079,
                            "name": "prevModuleContractAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 40113,
                            "src": "1129:33:133",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 40078,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1129:7:133",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 40085,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 40080,
                            "name": "logicTargets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4583,
                            "src": "1165:12:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                              "typeString": "mapping(bytes4 => address)"
                            }
                          },
                          "id": 40084,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 40081,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45334,
                                "src": "1178:4:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_SwapsExternal_$40318",
                                  "typeString": "contract SwapsExternal"
                                }
                              },
                              "id": 40082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "swapExternal",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 40272,
                              "src": "1178:17:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address,address,address,uint256,uint256,uint256,bytes memory) payable external returns (uint256,uint256)"
                              }
                            },
                            "id": 40083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1178:26:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1165:40:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1129:76:133"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 40087,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45334,
                                  "src": "1220:4:133",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_SwapsExternal_$40318",
                                    "typeString": "contract SwapsExternal"
                                  }
                                },
                                "id": 40088,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "swapExternal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 40272,
                                "src": "1220:17:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (address,address,address,address,uint256,uint256,uint256,bytes memory) payable external returns (uint256,uint256)"
                                }
                              },
                              "id": 40089,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1220:26:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40090,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40073,
                              "src": "1248:6:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 40086,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1209:10:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 40091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1209:46:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40092,
                        "nodeType": "ExpressionStatement",
                        "src": "1209:46:133"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 40094,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45334,
                                  "src": "1270:4:133",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_SwapsExternal_$40318",
                                    "typeString": "contract SwapsExternal"
                                  }
                                },
                                "id": 40095,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getSwapExpectedReturn",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 40290,
                                "src": "1270:26:133",
                                "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": 40096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1270:35:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40097,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40073,
                              "src": "1307:6:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 40093,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1259:10:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 40098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1259:55:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40099,
                        "nodeType": "ExpressionStatement",
                        "src": "1259:55:133"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 40101,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45334,
                                  "src": "1329:4:133",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_SwapsExternal_$40318",
                                    "typeString": "contract SwapsExternal"
                                  }
                                },
                                "id": 40102,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "checkPriceDivergence",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 40317,
                                "src": "1329:25:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,uint256,uint256) view external"
                                }
                              },
                              "id": 40103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1329:34:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40104,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40073,
                              "src": "1365:6:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 40100,
                            "name": "_setTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4840,
                            "src": "1318:10:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$",
                              "typeString": "function (bytes4,address)"
                            }
                          },
                          "id": 40105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1318:54:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40106,
                        "nodeType": "ExpressionStatement",
                        "src": "1318:54:133"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40108,
                              "name": "prevModuleContractAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40079,
                              "src": "1412:25:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40109,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40073,
                              "src": "1439:6:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "537761707345787465726e616c",
                              "id": 40110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1447:15:133",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eb59f6e609b2ee08ab530d4411e11a89fee5a680ad08050b844a7b431ad77ae1",
                                "typeString": "literal_string \"SwapsExternal\""
                              },
                              "value": "SwapsExternal"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eb59f6e609b2ee08ab530d4411e11a89fee5a680ad08050b844a7b431ad77ae1",
                                "typeString": "literal_string \"SwapsExternal\""
                              }
                            ],
                            "id": 40107,
                            "name": "ProtocolModuleContractReplaced",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6054,
                            "src": "1381:30:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bytes32)"
                            }
                          },
                          "id": 40111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1381:82:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40112,
                        "nodeType": "EmitStatement",
                        "src": "1376:87:133"
                      }
                    ]
                  },
                  "documentation": "@notice Set function selectors on target contract.\n\t * @param target The address of the target contract.\n",
                  "id": 40114,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40076,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40075,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1115:9:133",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1115:9:133"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40074,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40073,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 40114,
                        "src": "1090:14:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40072,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1090:7:133",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1089:16:133"
                  },
                  "returnParameters": {
                    "id": 40077,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1125:0:133"
                  },
                  "scope": 40318,
                  "src": "1070:397:133",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 40271,
                    "nodeType": "Block",
                    "src": "2598:1649:133",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 40144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 40142,
                                "name": "sourceTokenAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40124,
                                "src": "2610:17:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 40143,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2631:1:133",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2610:22:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "736f75726365546f6b656e416d6f756e74203d3d2030",
                              "id": 40145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2634:24:133",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1f21c0585119f1417c26df82cc845274e10162c7f11ce810d0d71629a5853296",
                                "typeString": "literal_string \"sourceTokenAmount == 0\""
                              },
                              "value": "sourceTokenAmount == 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1f21c0585119f1417c26df82cc845274e10162c7f11ce810d0d71629a5853296",
                                "typeString": "literal_string \"sourceTokenAmount == 0\""
                              }
                            ],
                            "id": 40141,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2602:7:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 40146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2602:57:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40147,
                        "nodeType": "ExpressionStatement",
                        "src": "2602:57:133"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40149,
                              "name": "sourceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40116,
                              "src": "2684:11:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40150,
                              "name": "destToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40118,
                              "src": "2697:9:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40151,
                              "name": "sourceTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40124,
                              "src": "2708:17:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40152,
                              "name": "minReturn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40128,
                              "src": "2727:9:133",
                              "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_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 40148,
                            "name": "checkPriceDivergence",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40317,
                            "src": "2663:20:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256) view"
                            }
                          },
                          "id": 40153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2663:74:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40154,
                        "nodeType": "ExpressionStatement",
                        "src": "2663:74:133"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 40158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 40155,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "2799:3:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 40156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2799:9:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 40157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2812:1:133",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2799:14:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 40238,
                          "nodeType": "Block",
                          "src": "3155:439:133",
                          "statements": [
                            {
                              "assignments": [
                                40200
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 40200,
                                  "name": "sourceTokenContract",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 40238,
                                  "src": "3218:26:133",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 40199,
                                    "name": "IERC20",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 24699,
                                    "src": "3218:6:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 40204,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 40202,
                                    "name": "sourceToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40116,
                                    "src": "3254:11:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 40201,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24699,
                                  "src": "3247:6:133",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 40203,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3247:19:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$24699",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3218:48:133"
                            },
                            {
                              "assignments": [
                                40206
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 40206,
                                  "name": "balanceBefore",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 40238,
                                  "src": "3272:21:133",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 40205,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3272:7:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 40213,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 40210,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 45334,
                                        "src": "3334:4:133",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_SwapsExternal_$40318",
                                          "typeString": "contract SwapsExternal"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_SwapsExternal_$40318",
                                          "typeString": "contract SwapsExternal"
                                        }
                                      ],
                                      "id": 40209,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3326:7:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 40211,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3326:13:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 40207,
                                    "name": "sourceTokenContract",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40200,
                                    "src": "3296:19:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 40208,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 24644,
                                  "src": "3296:29:133",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 40212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3296:44:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3272:68:133"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 40218,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "3383:3:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 40219,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3383:10:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 40221,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 45334,
                                        "src": "3403:4:133",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_SwapsExternal_$40318",
                                          "typeString": "contract SwapsExternal"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_SwapsExternal_$40318",
                                          "typeString": "contract SwapsExternal"
                                        }
                                      ],
                                      "id": 40220,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3395:7:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 40222,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3395:13:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 40223,
                                    "name": "sourceTokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40124,
                                    "src": "3410:17:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 40215,
                                        "name": "sourceToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 40116,
                                        "src": "3353:11:133",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 40214,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24699,
                                      "src": "3346:6:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 40216,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3346:19:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 40217,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 41887,
                                  "src": "3346:36:133",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                                    "typeString": "function (contract IERC20,address,address,uint256)"
                                  }
                                },
                                "id": 40224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3346:82:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 40225,
                              "nodeType": "ExpressionStatement",
                              "src": "3346:82:133"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 40236,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 40226,
                                  "name": "sourceTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40124,
                                  "src": "3506:17:133",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 40234,
                                      "name": "balanceBefore",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40206,
                                      "src": "3575:13:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 40230,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 45334,
                                              "src": "3564:4:133",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_SwapsExternal_$40318",
                                                "typeString": "contract SwapsExternal"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_SwapsExternal_$40318",
                                                "typeString": "contract SwapsExternal"
                                              }
                                            ],
                                            "id": 40229,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3556:7:133",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": "address"
                                          },
                                          "id": 40231,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3556:13:133",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 40227,
                                          "name": "sourceTokenContract",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 40200,
                                          "src": "3526:19:133",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$24699",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 40228,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "balanceOf",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 24644,
                                        "src": "3526:29:133",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                          "typeString": "function (address) view external returns (uint256)"
                                        }
                                      },
                                      "id": 40232,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3526:44:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 40233,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "3526:48:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 40235,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3526:63:133",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3506:83:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 40237,
                              "nodeType": "ExpressionStatement",
                              "src": "3506:83:133"
                            }
                          ]
                        },
                        "id": 40239,
                        "nodeType": "IfStatement",
                        "src": "2795:799:133",
                        "trueBody": {
                          "id": 40198,
                          "nodeType": "Block",
                          "src": "2815:334:133",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 40163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 40159,
                                  "name": "sourceToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40116,
                                  "src": "2824:11:133",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 40161,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2847:1:133",
                                      "subdenomination": null,
                                      "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": 40160,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2839:7:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 40162,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2839:10:133",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "2824:25:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 40171,
                              "nodeType": "IfStatement",
                              "src": "2820:76:133",
                              "trueBody": {
                                "id": 40170,
                                "nodeType": "Block",
                                "src": "2851:45:133",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 40168,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 40164,
                                        "name": "sourceToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 40116,
                                        "src": "2857:11:133",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 40166,
                                            "name": "wrbtcToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4737,
                                            "src": "2879:10:133",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                              "typeString": "contract IWrbtcERC20"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                              "typeString": "contract IWrbtcERC20"
                                            }
                                          ],
                                          "id": 40165,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "2871:7:133",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 40167,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2871:19:133",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "2857:33:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 40169,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2857:33:133"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 40177,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 40173,
                                      "name": "sourceToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40116,
                                      "src": "2908:11:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 40175,
                                          "name": "wrbtcToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4737,
                                          "src": "2931:10:133",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                            "typeString": "contract IWrbtcERC20"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                            "typeString": "contract IWrbtcERC20"
                                          }
                                        ],
                                        "id": 40174,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2923:7:133",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": "address"
                                      },
                                      "id": 40176,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2923:19:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "2908:34:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "736f75726365546f6b656e206d69736d61746368",
                                    "id": 40178,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2944:22:133",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_7f2e5564ce94ed89be573b565a2e07250452f02a08191815de0afd579324dc99",
                                      "typeString": "literal_string \"sourceToken mismatch\""
                                    },
                                    "value": "sourceToken mismatch"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_7f2e5564ce94ed89be573b565a2e07250452f02a08191815de0afd579324dc99",
                                      "typeString": "literal_string \"sourceToken mismatch\""
                                    }
                                  ],
                                  "id": 40172,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "2900:7:133",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 40179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2900:67:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 40180,
                              "nodeType": "ExpressionStatement",
                              "src": "2900:67:133"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 40185,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 40182,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44994,
                                        "src": "2980:3:133",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 40183,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "value",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2980:9:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 40184,
                                      "name": "sourceTokenAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40124,
                                      "src": "2993:17:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2980:30:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "736f75726365546f6b656e416d6f756e74206d69736d61746368",
                                    "id": 40186,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3012:28:133",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_9b14823dd7034af5798ce5c3af5ba3cc9c5764b9d652e553c1b1913e11d460b7",
                                      "typeString": "literal_string \"sourceTokenAmount mismatch\""
                                    },
                                    "value": "sourceTokenAmount mismatch"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_9b14823dd7034af5798ce5c3af5ba3cc9c5764b9d652e553c1b1913e11d460b7",
                                      "typeString": "literal_string \"sourceTokenAmount mismatch\""
                                    }
                                  ],
                                  "id": 40181,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "2972:7:133",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 40187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2972:69:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 40188,
                              "nodeType": "ExpressionStatement",
                              "src": "2972:69:133"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 40194,
                                      "name": "sourceTokenAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40124,
                                      "src": "3124:17:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 40189,
                                        "name": "wrbtcToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4737,
                                        "src": "3099:10:133",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                          "typeString": "contract IWrbtcERC20"
                                        }
                                      },
                                      "id": 40192,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "deposit",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 25544,
                                      "src": "3099:18:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                        "typeString": "function () payable external"
                                      }
                                    },
                                    "id": 40193,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "value",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3099:24:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$",
                                      "typeString": "function (uint256) pure returns (function () payable external)"
                                    }
                                  },
                                  "id": 40195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3099:43:133",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                                    "typeString": "function () payable external"
                                  }
                                },
                                "id": 40196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3099:45:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 40197,
                              "nodeType": "ExpressionStatement",
                              "src": "3099:45:133"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 40260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 40240,
                                "name": "destTokenAmountReceived",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40137,
                                "src": "3638:23:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 40241,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40139,
                                "src": "3663:21:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 40242,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "3637:48:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 40244,
                                    "name": "sourceToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40116,
                                    "src": "3709:11:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 40245,
                                    "name": "destToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40118,
                                    "src": "3726:9:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 40246,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40120,
                                    "src": "3741:8:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 40247,
                                    "name": "returnToSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40122,
                                    "src": "3755:14:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 40248,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "3775:3:133",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 40249,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3775:10:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "id": 40250,
                                "isConstant": false,
                                "isInlineArray": true,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3703:96:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                  "typeString": "address[5] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 40251,
                                    "name": "sourceTokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40124,
                                    "src": "3810:17:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 40252,
                                    "name": "sourceTokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40124,
                                    "src": "3858:17:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 40253,
                                    "name": "requiredDestTokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40126,
                                    "src": "3906:23:133",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 40254,
                                "isConstant": false,
                                "isInlineArray": true,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3804:130:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 40255,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3939:1:133",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 40256,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3986:5:133",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "argumentTypes": null,
                                "id": 40257,
                                "name": "swapData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40130,
                                "src": "4010:8:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 40258,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4023:4:133",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                  "typeString": "address[5] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 40243,
                              "name": "_swapsCall",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43109,
                              "src": "3688:10:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$5_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$_t_bytes32_$_t_bool_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address[5] memory,uint256[3] memory,bytes32,bool,bytes memory,bool) returns (uint256,uint256)"
                              }
                            },
                            "id": 40259,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3688:421:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "3637:472:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40261,
                        "nodeType": "ExpressionStatement",
                        "src": "3637:472:133"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 40263,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "4136:3:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 40264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4136:10:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40265,
                              "name": "sourceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40116,
                              "src": "4160:11:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40266,
                              "name": "destToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40118,
                              "src": "4176:9:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40267,
                              "name": "sourceTokenAmountUsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40139,
                              "src": "4190:21:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40268,
                              "name": "destTokenAmountReceived",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40137,
                              "src": "4216:23:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 40262,
                            "name": "ExternalSwap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6340,
                            "src": "4119:12:133",
                            "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": 40269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4119:124:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40270,
                        "nodeType": "EmitStatement",
                        "src": "4114:129:133"
                      }
                    ]
                  },
                  "documentation": "@notice Perform a swap w/ tokens or rBTC as source currency.\n\t * @dev External wrapper that calls SwapsUser::_swapsCall\nafter turning potential incoming rBTC into wrBTC tokens.\n\t * @param sourceToken The address of the source token instance.\n@param destToken The address of the destiny token instance.\n@param receiver The address of the recipient account.\n@param returnToSender The address of the sender account.\n@param sourceTokenAmount The amount of source tokens.\n@param requiredDestTokenAmount The amount of required destiny tokens.\n@param swapData Additional swap data (not in use yet).\n\t * @return destTokenAmountReceived The amount of destiny tokens sent.\n@return sourceTokenAmountUsed The amount of source tokens spent.\n",
                  "id": 40272,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40133,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40132,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41828,
                        "src": "2498:12:133",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2498:12:133"
                    },
                    {
                      "arguments": null,
                      "id": 40135,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40134,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27831,
                        "src": "2511:13:133",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2511:13:133"
                    }
                  ],
                  "name": "swapExternal",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40116,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 40272,
                        "src": "2283:19:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40115,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2283:7:133",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40118,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 40272,
                        "src": "2306:17:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40117,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2306:7:133",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40120,
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "scope": 40272,
                        "src": "2327:16:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40119,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2327:7:133",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40122,
                        "name": "returnToSender",
                        "nodeType": "VariableDeclaration",
                        "scope": 40272,
                        "src": "2347:22:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40121,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2347:7:133",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40124,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 40272,
                        "src": "2373:25:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40123,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2373:7:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40126,
                        "name": "requiredDestTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 40272,
                        "src": "2402:31:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40125,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2402:7:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40128,
                        "name": "minReturn",
                        "nodeType": "VariableDeclaration",
                        "scope": 40272,
                        "src": "2437:17:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40127,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2437:7:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40130,
                        "name": "swapData",
                        "nodeType": "VariableDeclaration",
                        "scope": 40272,
                        "src": "2458:21:133",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 40129,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2458:5:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2279:203:133"
                  },
                  "returnParameters": {
                    "id": 40140,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40137,
                        "name": "destTokenAmountReceived",
                        "nodeType": "VariableDeclaration",
                        "scope": 40272,
                        "src": "2534:31:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40136,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2534:7:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40139,
                        "name": "sourceTokenAmountUsed",
                        "nodeType": "VariableDeclaration",
                        "scope": 40272,
                        "src": "2567:29:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40138,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2567:7:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2533:64:133"
                  },
                  "scope": 40318,
                  "src": "2258:1989:133",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40289,
                    "nodeType": "Block",
                    "src": "4756:78:133",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40284,
                              "name": "sourceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40274,
                              "src": "4788:11:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40285,
                              "name": "destToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40276,
                              "src": "4801:9:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40286,
                              "name": "sourceTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40278,
                              "src": "4812:17:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 40283,
                            "name": "_swapsExpectedReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43199,
                            "src": "4767:20:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,address,uint256) view returns (uint256)"
                            }
                          },
                          "id": 40287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4767:63:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 40282,
                        "id": 40288,
                        "nodeType": "Return",
                        "src": "4760:70:133"
                      }
                    ]
                  },
                  "documentation": "@notice Get the swap expected return value.\n\t * @dev External wrapper that calls SwapsUser::_swapsExpectedReturn\n\t * @param sourceToken The address of the source token instance.\n@param destToken The address of the destiny token instance.\n@param sourceTokenAmount The amount of source tokens.\n\t * @return The expected return value.\n",
                  "id": 40290,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSwapExpectedReturn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40274,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 40290,
                        "src": "4651:19:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40273,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4651:7:133",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40276,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 40290,
                        "src": "4674:17:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40275,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4674:7:133",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40278,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 40290,
                        "src": "4695:25:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40277,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4695:7:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4647:76:133"
                  },
                  "returnParameters": {
                    "id": 40282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40281,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 40290,
                        "src": "4747:7:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40280,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4747:7:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4746:9:133"
                  },
                  "scope": 40318,
                  "src": "4617:217:133",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 40316,
                    "nodeType": "Block",
                    "src": "5342:173:133",
                    "statements": [
                      {
                        "assignments": [
                          40302
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 40302,
                            "name": "destTokenAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 40316,
                            "src": "5346:23:133",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 40301,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5346:7:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 40308,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40304,
                              "name": "sourceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40292,
                              "src": "5393:11:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40305,
                              "name": "destToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40294,
                              "src": "5406:9:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40306,
                              "name": "sourceTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40296,
                              "src": "5417:17:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 40303,
                            "name": "_swapsExpectedReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43199,
                            "src": "5372:20:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,address,uint256) view returns (uint256)"
                            }
                          },
                          "id": 40307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5372:63:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5346:89:133"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 40312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 40310,
                                "name": "destTokenAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40302,
                                "src": "5447:15:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 40311,
                                "name": "minReturn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40298,
                                "src": "5466:9:133",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5447:28:133",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "64657374546f6b656e416d6f756e74526563656976656420746f6f206c6f77",
                              "id": 40313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5477:33:133",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7948e04b9e0782243687a804b3c9fee7ae4f375aaf4a708025baeea3d42838ba",
                                "typeString": "literal_string \"destTokenAmountReceived too low\""
                              },
                              "value": "destTokenAmountReceived too low"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7948e04b9e0782243687a804b3c9fee7ae4f375aaf4a708025baeea3d42838ba",
                                "typeString": "literal_string \"destTokenAmountReceived too low\""
                              }
                            ],
                            "id": 40309,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5439:7:133",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 40314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5439:72:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40315,
                        "nodeType": "ExpressionStatement",
                        "src": "5439:72:133"
                      }
                    ]
                  },
                  "documentation": "@notice Check the slippage based on the swapExpectedReturn.\n\t * @param sourceToken The address of the source token instance.\n@param destToken The address of the destiny token instance.\n@param sourceTokenAmount The amount of source tokens.\n@param minReturn The amount (max slippage) that will be compared to the swapsExpectedReturn.\n\t ",
                  "id": 40317,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "checkPriceDivergence",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40292,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 40317,
                        "src": "5236:19:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40291,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5236:7:133",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40294,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 40317,
                        "src": "5259:17:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40293,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5259:7:133",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40296,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 40317,
                        "src": "5280:25:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40295,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5280:7:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40298,
                        "name": "minReturn",
                        "nodeType": "VariableDeclaration",
                        "scope": 40317,
                        "src": "5309:17:133",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40297,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5309:7:133",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5232:97:133"
                  },
                  "returnParameters": {
                    "id": 40300,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5342:0:133"
                  },
                  "scope": 40318,
                  "src": "5203:312:133",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 40319,
              "src": "642:4875:133"
            }
          ],
          "src": "118:5400:133"
        },
        "id": 133
      },
      "contracts/modules/interfaces/ProtocolAffiliatesInterface.sol": {
        "ast": {
          "absolutePath": "contracts/modules/interfaces/ProtocolAffiliatesInterface.sol",
          "exportedSymbols": {
            "ProtocolAffiliatesInterface": [
              40355
            ]
          },
          "id": 40356,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 40320,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "115:23:134"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 40355,
              "linearizedBaseContracts": [
                40355
              ],
              "name": "ProtocolAffiliatesInterface",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 40327,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAffiliatesReferrer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40325,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40322,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 40327,
                        "src": "212:12:134",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40321,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "212:7:134",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40324,
                        "name": "referrer",
                        "nodeType": "VariableDeclaration",
                        "scope": 40327,
                        "src": "226:16:134",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40323,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "226:7:134",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "211:32:134"
                  },
                  "returnParameters": {
                    "id": 40326,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "252:0:134"
                  },
                  "scope": 40355,
                  "src": "181:72:134",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 40332,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setUserNotFirstTradeFlag",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40330,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40329,
                        "name": "user_",
                        "nodeType": "VariableDeclaration",
                        "scope": 40332,
                        "src": "290:13:134",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40328,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "290:7:134",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "289:15:134"
                  },
                  "returnParameters": {
                    "id": 40331,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "313:0:134"
                  },
                  "scope": 40355,
                  "src": "256:58:134",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 40339,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserNotFirstTradeFlag",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40335,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40334,
                        "name": "user_",
                        "nodeType": "VariableDeclaration",
                        "scope": 40339,
                        "src": "351:13:134",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40333,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "351:7:134",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "350:15:134"
                  },
                  "returnParameters": {
                    "id": 40338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40337,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 40339,
                        "src": "384:4:134",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 40336,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "384:4:134",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "383:6:134"
                  },
                  "scope": 40355,
                  "src": "317:73:134",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 40354,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "payTradingFeeToAffiliatesReferrer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40348,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40341,
                        "name": "affiliate",
                        "nodeType": "VariableDeclaration",
                        "scope": 40354,
                        "src": "439:17:134",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40340,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "439:7:134",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40343,
                        "name": "trader",
                        "nodeType": "VariableDeclaration",
                        "scope": 40354,
                        "src": "460:14:134",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40342,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "460:7:134",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40345,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 40354,
                        "src": "478:13:134",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40344,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "478:7:134",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40347,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 40354,
                        "src": "495:14:134",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40346,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "495:7:134",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "435:77:134"
                  },
                  "returnParameters": {
                    "id": 40353,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40350,
                        "name": "affiliatesBonusSOVAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 40354,
                        "src": "531:32:134",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40349,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "531:7:134",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40352,
                        "name": "affiliatesBonusTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 40354,
                        "src": "565:34:134",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40351,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "565:7:134",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "530:70:134"
                  },
                  "scope": 40355,
                  "src": "393:208:134",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 40356,
              "src": "140:463:134"
            }
          ],
          "src": "115:489:134"
        },
        "id": 134
      },
      "contracts/multisig/MultiSigKeyHolders.sol": {
        "ast": {
          "absolutePath": "contracts/multisig/MultiSigKeyHolders.sol",
          "exportedSymbols": {
            "MultiSigKeyHolders": [
              41023
            ]
          },
          "id": 41024,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 40357,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:135"
            },
            {
              "id": 40358,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:135"
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../openzeppelin/Ownable.sol",
              "id": 40359,
              "nodeType": "ImportDirective",
              "scope": 41024,
              "sourceUnit": 41799,
              "src": "60:37:135",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 40360,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "309:7:135",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 40361,
                  "nodeType": "InheritanceSpecifier",
                  "src": "309:7:135"
                }
              ],
              "contractDependencies": [
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Multi Signature Key Holders contract.\n * This contract contains the implementation of functions to add and remove\nkey holders w/ rBTC and BTC addresses.\n",
              "fullyImplemented": true,
              "id": 41023,
              "linearizedBaseContracts": [
                41023,
                41798,
                41125
              ],
              "name": "MultiSigKeyHolders",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 40364,
                  "name": "MAX_OWNER_COUNT",
                  "nodeType": "VariableDeclaration",
                  "scope": 41023,
                  "src": "336:44:135",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40362,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "336:7:135",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3530",
                    "id": 40363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "378:2:135",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_50_by_1",
                      "typeString": "int_const 50"
                    },
                    "value": "50"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 40367,
                  "name": "ERROR_INVALID_ADDRESS",
                  "nodeType": "VariableDeclaration",
                  "scope": 41023,
                  "src": "384:65:135",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 40365,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "384:6:135",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "496e76616c69642061646472657373",
                    "id": 40366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "432:17:135",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
                      "typeString": "literal_string \"Invalid address\""
                    },
                    "value": "Invalid address"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 40370,
                  "name": "ERROR_INVALID_REQUIRED",
                  "nodeType": "VariableDeclaration",
                  "scope": 41023,
                  "src": "452:67:135",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 40368,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "452:6:135",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "496e76616c6964207265717569726564",
                    "id": 40369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "501:18:135",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_1f581fe143828255029b7728e80c684049f7ecbf2a347554060ff506d70161e8",
                      "typeString": "literal_string \"Invalid required\""
                    },
                    "value": "Invalid required"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 40374,
                  "name": "isEthereumAddressAdded",
                  "nodeType": "VariableDeclaration",
                  "scope": 41023,
                  "src": "565:55:135",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Data_$40395_storage_$",
                    "typeString": "mapping(address => struct MultiSigKeyHolders.Data)"
                  },
                  "typeName": {
                    "id": 40373,
                    "keyType": {
                      "id": 40371,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "573:7:135",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "565:24:135",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Data_$40395_storage_$",
                      "typeString": "mapping(address => struct MultiSigKeyHolders.Data)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 40372,
                      "name": "Data",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 40395,
                      "src": "584:4:135",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$40395_storage_ptr",
                        "typeString": "struct MultiSigKeyHolders.Data"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 40377,
                  "name": "ethereumAddresses",
                  "nodeType": "VariableDeclaration",
                  "scope": 41023,
                  "src": "657:35:135",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 40375,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "657:7:135",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 40376,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "657:9:135",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 40380,
                  "name": "ethereumRequired",
                  "nodeType": "VariableDeclaration",
                  "scope": 41023,
                  "src": "758:35:135",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40378,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "758:7:135",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 40379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "792:1:135",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 40384,
                  "name": "isBitcoinAddressAdded",
                  "nodeType": "VariableDeclaration",
                  "scope": 41023,
                  "src": "838:53:135",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Data_$40395_storage_$",
                    "typeString": "mapping(string => struct MultiSigKeyHolders.Data)"
                  },
                  "typeName": {
                    "id": 40383,
                    "keyType": {
                      "id": 40381,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "846:6:135",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "838:23:135",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Data_$40395_storage_$",
                      "typeString": "mapping(string => struct MultiSigKeyHolders.Data)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 40382,
                      "name": "Data",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 40395,
                      "src": "856:4:135",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$40395_storage_ptr",
                        "typeString": "struct MultiSigKeyHolders.Data"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 40387,
                  "name": "bitcoinAddresses",
                  "nodeType": "VariableDeclaration",
                  "scope": 41023,
                  "src": "927:33:135",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 40385,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "927:6:135",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 40386,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "927:8:135",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 40390,
                  "name": "bitcoinRequired",
                  "nodeType": "VariableDeclaration",
                  "scope": 41023,
                  "src": "1025:34:135",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40388,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1025:7:135",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 40389,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1058:1:135",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "visibility": "public"
                },
                {
                  "canonicalName": "MultiSigKeyHolders.Data",
                  "id": 40395,
                  "members": [
                    {
                      "constant": false,
                      "id": 40392,
                      "name": "added",
                      "nodeType": "VariableDeclaration",
                      "scope": 40395,
                      "src": "1117:10:135",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 40391,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1117:4:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 40394,
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "scope": 40395,
                      "src": "1131:13:135",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint248",
                        "typeString": "uint248"
                      },
                      "typeName": {
                        "id": 40393,
                        "name": "uint248",
                        "nodeType": "ElementaryTypeName",
                        "src": "1131:7:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint248",
                          "typeString": "uint248"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "Data",
                  "nodeType": "StructDefinition",
                  "scope": 41023,
                  "src": "1101:47:135",
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 40399,
                  "name": "EthereumAddressAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 40398,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40397,
                        "indexed": true,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 40399,
                        "src": "1193:23:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40396,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1193:7:135",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1192:25:135"
                  },
                  "src": "1166:52:135"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 40403,
                  "name": "EthereumAddressRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 40402,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40401,
                        "indexed": true,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 40403,
                        "src": "1249:23:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40400,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1249:7:135",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1248:25:135"
                  },
                  "src": "1220:54:135"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 40407,
                  "name": "EthereumRequirementChanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 40406,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40405,
                        "indexed": false,
                        "name": "required",
                        "nodeType": "VariableDeclaration",
                        "scope": 40407,
                        "src": "1309:16:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40404,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1309:7:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1308:18:135"
                  },
                  "src": "1276:51:135"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 40411,
                  "name": "BitcoinAddressAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 40410,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40409,
                        "indexed": false,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 40411,
                        "src": "1355:14:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 40408,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1355:6:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1354:16:135"
                  },
                  "src": "1329:42:135"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 40415,
                  "name": "BitcoinAddressRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 40414,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40413,
                        "indexed": false,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 40415,
                        "src": "1401:14:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 40412,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1401:6:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1400:16:135"
                  },
                  "src": "1373:44:135"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 40419,
                  "name": "BitcoinRequirementChanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 40418,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40417,
                        "indexed": false,
                        "name": "required",
                        "nodeType": "VariableDeclaration",
                        "scope": 40419,
                        "src": "1451:16:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40416,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1451:7:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1450:18:135"
                  },
                  "src": "1419:50:135"
                },
                {
                  "body": {
                    "id": 40445,
                    "nodeType": "Block",
                    "src": "1555:139:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 40440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 40436,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 40432,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 40428,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 40426,
                                      "name": "ownerCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40421,
                                      "src": "1567:10:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 40427,
                                      "name": "MAX_OWNER_COUNT",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40364,
                                      "src": "1581:15:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1567:29:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 40431,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 40429,
                                      "name": "_required",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40423,
                                      "src": "1600:9:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 40430,
                                      "name": "ownerCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40421,
                                      "src": "1613:10:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1600:23:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "1567:56:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 40435,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 40433,
                                    "name": "_required",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40423,
                                    "src": "1627:9:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 40434,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1640:1:135",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "1627:14:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1567:74:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 40439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 40437,
                                  "name": "ownerCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40421,
                                  "src": "1645:10:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 40438,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1659:1:135",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1645:15:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1567:93:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40441,
                              "name": "ERROR_INVALID_REQUIRED",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40370,
                              "src": "1662:22:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 40425,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1559:7:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 40442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1559:126:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40443,
                        "nodeType": "ExpressionStatement",
                        "src": "1559:126:135"
                      },
                      {
                        "id": 40444,
                        "nodeType": "PlaceholderStatement",
                        "src": "1689:1:135"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 40446,
                  "name": "validRequirement",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 40424,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40421,
                        "name": "ownerCount",
                        "nodeType": "VariableDeclaration",
                        "scope": 40446,
                        "src": "1516:18:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40420,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1516:7:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40423,
                        "name": "_required",
                        "nodeType": "VariableDeclaration",
                        "scope": 40446,
                        "src": "1536:17:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40422,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1536:7:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1515:39:135"
                  },
                  "src": "1490:204:135",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 40457,
                    "nodeType": "Block",
                    "src": "1884:37:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40454,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40448,
                              "src": "1908:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 40453,
                            "name": "_addEthereumAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40530,
                            "src": "1888:19:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 40455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1888:29:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40456,
                        "nodeType": "ExpressionStatement",
                        "src": "1888:29:135"
                      }
                    ]
                  },
                  "documentation": "@notice Add rBTC address to the key holders.\n@param _address The address to be added.\n",
                  "id": 40458,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40451,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40450,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1874:9:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1874:9:135"
                    }
                  ],
                  "name": "addEthereumAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40449,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40448,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40458,
                        "src": "1849:16:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40447,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1849:7:135",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1848:18:135"
                  },
                  "returnParameters": {
                    "id": 40452,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1884:0:135"
                  },
                  "scope": 41023,
                  "src": "1821:100:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40485,
                    "nodeType": "Block",
                    "src": "2108:95:135",
                    "statements": [
                      {
                        "body": {
                          "id": 40483,
                          "nodeType": "Block",
                          "src": "2158:42:135",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 40478,
                                      "name": "_address",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40461,
                                      "src": "2183:8:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 40480,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 40479,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40467,
                                      "src": "2192:1:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2183:11:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 40477,
                                  "name": "_addEthereumAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40530,
                                  "src": "2163:19:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 40481,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2163:32:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 40482,
                              "nodeType": "ExpressionStatement",
                              "src": "2163:32:135"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 40473,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 40470,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40467,
                            "src": "2132:1:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 40471,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40461,
                              "src": "2136:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 40472,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2136:15:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2132:19:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 40484,
                        "initializationExpression": {
                          "assignments": [
                            40467
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 40467,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 40484,
                              "src": "2117:9:135",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 40466,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2117:7:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 40469,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 40468,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2129:1:135",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2117:13:135"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 40475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2153:3:135",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 40474,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40467,
                              "src": "2153:1:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 40476,
                          "nodeType": "ExpressionStatement",
                          "src": "2153:3:135"
                        },
                        "nodeType": "ForStatement",
                        "src": "2112:88:135"
                      }
                    ]
                  },
                  "documentation": "@notice Add rBTC addresses to the key holders.\n@param _address The addresses to be added.\n",
                  "id": 40486,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40464,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40463,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2098:9:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2098:9:135"
                    }
                  ],
                  "name": "addEthereumAddresses",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40462,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40461,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40486,
                        "src": "2064:25:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 40459,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2064:7:135",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 40460,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2064:9:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2063:27:135"
                  },
                  "returnParameters": {
                    "id": 40465,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2108:0:135"
                  },
                  "scope": 41023,
                  "src": "2034:169:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40529,
                    "nodeType": "Block",
                    "src": "2389:296:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 40496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 40492,
                                "name": "_address",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40488,
                                "src": "2401:8:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 40494,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2421:1:135",
                                    "subdenomination": null,
                                    "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": 40493,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2413:7:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 40495,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2413:10:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2401:22:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40497,
                              "name": "ERROR_INVALID_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40367,
                              "src": "2425:21:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 40491,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2393:7:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 40498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2393:54:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40499,
                        "nodeType": "ExpressionStatement",
                        "src": "2393:54:135"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 40504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2456:39:135",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 40500,
                                "name": "isEthereumAddressAdded",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40374,
                                "src": "2457:22:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Data_$40395_storage_$",
                                  "typeString": "mapping(address => struct MultiSigKeyHolders.Data storage ref)"
                                }
                              },
                              "id": 40502,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 40501,
                                "name": "_address",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40488,
                                "src": "2480:8:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2457:32:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$40395_storage",
                                "typeString": "struct MultiSigKeyHolders.Data storage ref"
                              }
                            },
                            "id": 40503,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "added",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 40392,
                            "src": "2457:38:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 40524,
                        "nodeType": "IfStatement",
                        "src": "2452:190:135",
                        "trueBody": {
                          "id": 40523,
                          "nodeType": "Block",
                          "src": "2497:145:135",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 40515,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 40505,
                                    "name": "isEthereumAddressAdded",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40374,
                                    "src": "2502:22:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Data_$40395_storage_$",
                                      "typeString": "mapping(address => struct MultiSigKeyHolders.Data storage ref)"
                                    }
                                  },
                                  "id": 40507,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 40506,
                                    "name": "_address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40488,
                                    "src": "2525:8:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2502:32:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$40395_storage",
                                    "typeString": "struct MultiSigKeyHolders.Data storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 40509,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2551:4:135",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 40511,
                                            "name": "ethereumAddresses",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 40377,
                                            "src": "2572:17:135",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                              "typeString": "address[] storage ref"
                                            }
                                          },
                                          "id": 40512,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "length",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "2572:24:135",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 40510,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2564:7:135",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint248_$",
                                          "typeString": "type(uint248)"
                                        },
                                        "typeName": "uint248"
                                      },
                                      "id": 40513,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2564:33:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint248",
                                        "typeString": "uint248"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_uint248",
                                        "typeString": "uint248"
                                      }
                                    ],
                                    "id": 40508,
                                    "name": "Data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40395,
                                    "src": "2537:4:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_Data_$40395_storage_ptr_$",
                                      "typeString": "type(struct MultiSigKeyHolders.Data storage pointer)"
                                    }
                                  },
                                  "id": 40514,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [
                                    "added",
                                    "index"
                                  ],
                                  "nodeType": "FunctionCall",
                                  "src": "2537:63:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$40395_memory",
                                    "typeString": "struct MultiSigKeyHolders.Data memory"
                                  }
                                },
                                "src": "2502:98:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$40395_storage",
                                  "typeString": "struct MultiSigKeyHolders.Data storage ref"
                                }
                              },
                              "id": 40516,
                              "nodeType": "ExpressionStatement",
                              "src": "2502:98:135"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 40520,
                                    "name": "_address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40488,
                                    "src": "2628:8:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 40517,
                                    "name": "ethereumAddresses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40377,
                                    "src": "2605:17:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 40519,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2605:22:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) returns (uint256)"
                                  }
                                },
                                "id": 40521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2605:32:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 40522,
                              "nodeType": "ExpressionStatement",
                              "src": "2605:32:135"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40526,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40488,
                              "src": "2672:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 40525,
                            "name": "EthereumAddressAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40399,
                            "src": "2651:20:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 40527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2651:30:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40528,
                        "nodeType": "EmitStatement",
                        "src": "2646:35:135"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to add rBTC address to the key holders.\n@param _address The address to be added.\n",
                  "id": 40530,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_addEthereumAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40489,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40488,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40530,
                        "src": "2362:16:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40487,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2362:7:135",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2361:18:135"
                  },
                  "returnParameters": {
                    "id": 40490,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2389:0:135"
                  },
                  "scope": 41023,
                  "src": "2333:352:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 40541,
                    "nodeType": "Block",
                    "src": "2865:40:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40538,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40532,
                              "src": "2892:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 40537,
                            "name": "_removeEthereumAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40640,
                            "src": "2869:22:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 40539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2869:32:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40540,
                        "nodeType": "ExpressionStatement",
                        "src": "2869:32:135"
                      }
                    ]
                  },
                  "documentation": "@notice Remove rBTC address to the key holders.\n@param _address The address to be removed.\n",
                  "id": 40542,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40535,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40534,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "2855:9:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2855:9:135"
                    }
                  ],
                  "name": "removeEthereumAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40533,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40532,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40542,
                        "src": "2830:16:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40531,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2830:7:135",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2829:18:135"
                  },
                  "returnParameters": {
                    "id": 40536,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2865:0:135"
                  },
                  "scope": 41023,
                  "src": "2799:106:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40569,
                    "nodeType": "Block",
                    "src": "3100:98:135",
                    "statements": [
                      {
                        "body": {
                          "id": 40567,
                          "nodeType": "Block",
                          "src": "3150:45:135",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 40562,
                                      "name": "_address",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40545,
                                      "src": "3178:8:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 40564,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 40563,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40551,
                                      "src": "3187:1:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3178:11:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 40561,
                                  "name": "_removeEthereumAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40640,
                                  "src": "3155:22:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 40565,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3155:35:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 40566,
                              "nodeType": "ExpressionStatement",
                              "src": "3155:35:135"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 40557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 40554,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40551,
                            "src": "3124:1:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 40555,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40545,
                              "src": "3128:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 40556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3128:15:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3124:19:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 40568,
                        "initializationExpression": {
                          "assignments": [
                            40551
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 40551,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 40568,
                              "src": "3109:9:135",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 40550,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3109:7:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 40553,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 40552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3121:1:135",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3109:13:135"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 40559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3145:3:135",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 40558,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40551,
                              "src": "3145:1:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 40560,
                          "nodeType": "ExpressionStatement",
                          "src": "3145:3:135"
                        },
                        "nodeType": "ForStatement",
                        "src": "3104:91:135"
                      }
                    ]
                  },
                  "documentation": "@notice Remove rBTC addresses to the key holders.\n@param _address The addresses to be removed.\n",
                  "id": 40570,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40548,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40547,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "3090:9:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3090:9:135"
                    }
                  ],
                  "name": "removeEthereumAddresses",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40546,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40545,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40570,
                        "src": "3056:25:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 40543,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3056:7:135",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 40544,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3056:9:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3055:27:135"
                  },
                  "returnParameters": {
                    "id": 40549,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3100:0:135"
                  },
                  "scope": 41023,
                  "src": "3023:175:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40639,
                    "nodeType": "Block",
                    "src": "3392:492:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 40580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 40576,
                                "name": "_address",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40572,
                                "src": "3404:8:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 40578,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3424:1:135",
                                    "subdenomination": null,
                                    "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": 40577,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3416:7:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 40579,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3416:10:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3404:22:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40581,
                              "name": "ERROR_INVALID_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40367,
                              "src": "3428:21:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 40575,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3396:7:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 40582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3396:54:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40583,
                        "nodeType": "ExpressionStatement",
                        "src": "3396:54:135"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 40584,
                              "name": "isEthereumAddressAdded",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40374,
                              "src": "3459:22:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Data_$40395_storage_$",
                                "typeString": "mapping(address => struct MultiSigKeyHolders.Data storage ref)"
                              }
                            },
                            "id": 40586,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 40585,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40572,
                              "src": "3482:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3459:32:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$40395_storage",
                              "typeString": "struct MultiSigKeyHolders.Data storage ref"
                            }
                          },
                          "id": 40587,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "added",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 40392,
                          "src": "3459:38:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 40634,
                        "nodeType": "IfStatement",
                        "src": "3455:384:135",
                        "trueBody": {
                          "id": 40633,
                          "nodeType": "Block",
                          "src": "3499:340:135",
                          "statements": [
                            {
                              "assignments": [
                                40589
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 40589,
                                  "name": "index",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 40633,
                                  "src": "3504:13:135",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint248",
                                    "typeString": "uint248"
                                  },
                                  "typeName": {
                                    "id": 40588,
                                    "name": "uint248",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3504:7:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint248",
                                      "typeString": "uint248"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 40594,
                              "initialValue": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 40590,
                                    "name": "isEthereumAddressAdded",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40374,
                                    "src": "3520:22:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Data_$40395_storage_$",
                                      "typeString": "mapping(address => struct MultiSigKeyHolders.Data storage ref)"
                                    }
                                  },
                                  "id": 40592,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 40591,
                                    "name": "_address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40572,
                                    "src": "3543:8:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3520:32:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$40395_storage",
                                    "typeString": "struct MultiSigKeyHolders.Data storage ref"
                                  }
                                },
                                "id": 40593,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "index",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 40394,
                                "src": "3520:38:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint248",
                                  "typeString": "uint248"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3504:54:135"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 40600,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 40595,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40589,
                                  "src": "3567:5:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint248",
                                    "typeString": "uint248"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 40599,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 40596,
                                      "name": "ethereumAddresses",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40377,
                                      "src": "3576:17:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                        "typeString": "address[] storage ref"
                                      }
                                    },
                                    "id": 40597,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3576:24:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 40598,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3603:1:135",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "3576:28:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3567:37:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 40622,
                              "nodeType": "IfStatement",
                              "src": "3563:197:135",
                              "trueBody": {
                                "id": 40621,
                                "nodeType": "Block",
                                "src": "3606:154:135",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 40610,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 40601,
                                          "name": "ethereumAddresses",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 40377,
                                          "src": "3612:17:135",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 40603,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 40602,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 40589,
                                          "src": "3630:5:135",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint248",
                                            "typeString": "uint248"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "3612:24:135",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 40604,
                                          "name": "ethereumAddresses",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 40377,
                                          "src": "3639:17:135",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 40609,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 40608,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 40605,
                                              "name": "ethereumAddresses",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 40377,
                                              "src": "3657:17:135",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                "typeString": "address[] storage ref"
                                              }
                                            },
                                            "id": 40606,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "3657:24:135",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 40607,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3684:1:135",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "3657:28:135",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3639:47:135",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "3612:74:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 40611,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3612:74:135"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 40619,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 40612,
                                            "name": "isEthereumAddressAdded",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 40374,
                                            "src": "3692:22:135",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Data_$40395_storage_$",
                                              "typeString": "mapping(address => struct MultiSigKeyHolders.Data storage ref)"
                                            }
                                          },
                                          "id": 40616,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 40613,
                                              "name": "ethereumAddresses",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 40377,
                                              "src": "3715:17:135",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                "typeString": "address[] storage ref"
                                              }
                                            },
                                            "id": 40615,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 40614,
                                              "name": "index",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 40589,
                                              "src": "3733:5:135",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint248",
                                                "typeString": "uint248"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3715:24:135",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "3692:48:135",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$40395_storage",
                                            "typeString": "struct MultiSigKeyHolders.Data storage ref"
                                          }
                                        },
                                        "id": 40617,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "index",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 40394,
                                        "src": "3692:54:135",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint248",
                                          "typeString": "uint248"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 40618,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 40589,
                                        "src": "3749:5:135",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint248",
                                          "typeString": "uint248"
                                        }
                                      },
                                      "src": "3692:62:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint248",
                                        "typeString": "uint248"
                                      }
                                    },
                                    "id": 40620,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3692:62:135"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 40626,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "3764:26:135",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 40623,
                                    "name": "ethereumAddresses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40377,
                                    "src": "3764:17:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 40625,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3764:24:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 40627,
                              "nodeType": "ExpressionStatement",
                              "src": "3764:26:135"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 40631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "3795:39:135",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 40628,
                                    "name": "isEthereumAddressAdded",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40374,
                                    "src": "3802:22:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Data_$40395_storage_$",
                                      "typeString": "mapping(address => struct MultiSigKeyHolders.Data storage ref)"
                                    }
                                  },
                                  "id": 40630,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 40629,
                                    "name": "_address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40572,
                                    "src": "3825:8:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3802:32:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$40395_storage",
                                    "typeString": "struct MultiSigKeyHolders.Data storage ref"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 40632,
                              "nodeType": "ExpressionStatement",
                              "src": "3795:39:135"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40636,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40572,
                              "src": "3871:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 40635,
                            "name": "EthereumAddressRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40403,
                            "src": "3848:22:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 40637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3848:32:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40638,
                        "nodeType": "EmitStatement",
                        "src": "3843:37:135"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to remove rBTC address to the key holders.\n@param _address The address to be removed.\n",
                  "id": 40640,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_removeEthereumAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40573,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40572,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40640,
                        "src": "3365:16:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40571,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3365:7:135",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3364:18:135"
                  },
                  "returnParameters": {
                    "id": 40574,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3392:0:135"
                  },
                  "scope": 41023,
                  "src": "3333:551:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 40652,
                    "nodeType": "Block",
                    "src": "4082:53:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 40647,
                              "name": "isEthereumAddressAdded",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40374,
                              "src": "4093:22:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Data_$40395_storage_$",
                                "typeString": "mapping(address => struct MultiSigKeyHolders.Data storage ref)"
                              }
                            },
                            "id": 40649,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 40648,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40642,
                              "src": "4116:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4093:32:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$40395_storage",
                              "typeString": "struct MultiSigKeyHolders.Data storage ref"
                            }
                          },
                          "id": 40650,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "added",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 40392,
                          "src": "4093:38:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 40646,
                        "id": 40651,
                        "nodeType": "Return",
                        "src": "4086:45:135"
                      }
                    ]
                  },
                  "documentation": "@notice Get whether rBTC address is a key holder.\n@param _address The rBTC address to be checked.\n",
                  "id": 40653,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isEthereumAddressOwner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40642,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40653,
                        "src": "4037:16:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40641,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4037:7:135",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4036:18:135"
                  },
                  "returnParameters": {
                    "id": 40646,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40645,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 40653,
                        "src": "4076:4:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 40644,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4076:4:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4075:6:135"
                  },
                  "scope": 41023,
                  "src": "4005:130:135",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40661,
                    "nodeType": "Block",
                    "src": "4264:32:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 40659,
                          "name": "ethereumAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40377,
                          "src": "4275:17:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "functionReturnParameters": 40658,
                        "id": 40660,
                        "nodeType": "Return",
                        "src": "4268:24:135"
                      }
                    ]
                  },
                  "documentation": "@notice Get array of rBTC key holders.\n",
                  "id": 40662,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getEthereumAddresses",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40654,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4222:2:135"
                  },
                  "returnParameters": {
                    "id": 40658,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40657,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 40662,
                        "src": "4246:16:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 40655,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4246:7:135",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 40656,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4246:9:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4245:18:135"
                  },
                  "scope": 41023,
                  "src": "4193:103:135",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40682,
                    "nodeType": "Block",
                    "src": "4554:82:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 40676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 40674,
                            "name": "ethereumRequired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40380,
                            "src": "4558:16:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 40675,
                            "name": "_required",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40664,
                            "src": "4577:9:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4558:28:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 40677,
                        "nodeType": "ExpressionStatement",
                        "src": "4558:28:135"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40679,
                              "name": "_required",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40664,
                              "src": "4622:9:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 40678,
                            "name": "EthereumRequirementChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40407,
                            "src": "4595:26:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 40680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4595:37:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40681,
                        "nodeType": "EmitStatement",
                        "src": "4590:42:135"
                      }
                    ]
                  },
                  "documentation": "@notice Set flag ethereumRequired to true/false.\n@param _required The new value of the ethereumRequired flag.\n",
                  "id": 40683,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40667,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40666,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "4490:9:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4490:9:135"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 40669,
                            "name": "ethereumAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40377,
                            "src": "4517:17:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 40670,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4517:24:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 40671,
                          "name": "_required",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40664,
                          "src": "4543:9:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 40672,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40668,
                        "name": "validRequirement",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40446,
                        "src": "4500:16:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$_t_uint256_$",
                          "typeString": "modifier (uint256,uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4500:53:135"
                    }
                  ],
                  "name": "changeEthereumRequirement",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40664,
                        "name": "_required",
                        "nodeType": "VariableDeclaration",
                        "scope": 40683,
                        "src": "4464:17:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40663,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4464:7:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4463:19:135"
                  },
                  "returnParameters": {
                    "id": 40673,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4554:0:135"
                  },
                  "scope": 41023,
                  "src": "4429:207:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40694,
                    "nodeType": "Block",
                    "src": "4816:36:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40691,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40685,
                              "src": "4839:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 40690,
                            "name": "_addBitcoinAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40768,
                            "src": "4820:18:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 40692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4820:28:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40693,
                        "nodeType": "ExpressionStatement",
                        "src": "4820:28:135"
                      }
                    ]
                  },
                  "documentation": "@notice Add bitcoin address to the key holders.\n@param _address The address to be added.\n",
                  "id": 40695,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40688,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40687,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "4806:9:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4806:9:135"
                    }
                  ],
                  "name": "addBitcoinAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40686,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40685,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40695,
                        "src": "4775:22:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 40684,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4775:6:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4774:24:135"
                  },
                  "returnParameters": {
                    "id": 40689,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4816:0:135"
                  },
                  "scope": 41023,
                  "src": "4748:104:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40722,
                    "nodeType": "Block",
                    "src": "5040:94:135",
                    "statements": [
                      {
                        "body": {
                          "id": 40720,
                          "nodeType": "Block",
                          "src": "5090:41:135",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 40715,
                                      "name": "_address",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40698,
                                      "src": "5114:8:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                        "typeString": "string memory[] memory"
                                      }
                                    },
                                    "id": 40717,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 40716,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40704,
                                      "src": "5123:1:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5114:11:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 40714,
                                  "name": "_addBitcoinAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40768,
                                  "src": "5095:18:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory)"
                                  }
                                },
                                "id": 40718,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5095:31:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 40719,
                              "nodeType": "ExpressionStatement",
                              "src": "5095:31:135"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 40710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 40707,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40704,
                            "src": "5064:1:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 40708,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40698,
                              "src": "5068:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              }
                            },
                            "id": 40709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5068:15:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5064:19:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 40721,
                        "initializationExpression": {
                          "assignments": [
                            40704
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 40704,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 40721,
                              "src": "5049:9:135",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 40703,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5049:7:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 40706,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 40705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5061:1:135",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5049:13:135"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 40712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "5085:3:135",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 40711,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40704,
                              "src": "5085:1:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 40713,
                          "nodeType": "ExpressionStatement",
                          "src": "5085:3:135"
                        },
                        "nodeType": "ForStatement",
                        "src": "5044:87:135"
                      }
                    ]
                  },
                  "documentation": "@notice Add bitcoin addresses to the key holders.\n@param _address The addresses to be added.\n",
                  "id": 40723,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40701,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40700,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "5030:9:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5030:9:135"
                    }
                  ],
                  "name": "addBitcoinAddresses",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40699,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40698,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40723,
                        "src": "4997:24:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 40696,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "4997:6:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 40697,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4997:8:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4996:26:135"
                  },
                  "returnParameters": {
                    "id": 40702,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5040:0:135"
                  },
                  "scope": 41023,
                  "src": "4968:166:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40767,
                    "nodeType": "Block",
                    "src": "5328:296:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 40734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 40730,
                                      "name": "_address",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40725,
                                      "src": "5346:8:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 40729,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5340:5:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": "bytes"
                                  },
                                  "id": 40731,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5340:15:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 40732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5340:22:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 40733,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5366:1:135",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5340:27:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40735,
                              "name": "ERROR_INVALID_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40367,
                              "src": "5369:21:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 40728,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5332:7:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 40736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5332:59:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40737,
                        "nodeType": "ExpressionStatement",
                        "src": "5332:59:135"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 40742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5400:38:135",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 40738,
                                "name": "isBitcoinAddressAdded",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40384,
                                "src": "5401:21:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Data_$40395_storage_$",
                                  "typeString": "mapping(string memory => struct MultiSigKeyHolders.Data storage ref)"
                                }
                              },
                              "id": 40740,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 40739,
                                "name": "_address",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40725,
                                "src": "5423:8:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5401:31:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$40395_storage",
                                "typeString": "struct MultiSigKeyHolders.Data storage ref"
                              }
                            },
                            "id": 40741,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "added",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 40392,
                            "src": "5401:37:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 40762,
                        "nodeType": "IfStatement",
                        "src": "5396:186:135",
                        "trueBody": {
                          "id": 40761,
                          "nodeType": "Block",
                          "src": "5440:142:135",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 40753,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 40743,
                                    "name": "isBitcoinAddressAdded",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40384,
                                    "src": "5445:21:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Data_$40395_storage_$",
                                      "typeString": "mapping(string memory => struct MultiSigKeyHolders.Data storage ref)"
                                    }
                                  },
                                  "id": 40745,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 40744,
                                    "name": "_address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40725,
                                    "src": "5467:8:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5445:31:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$40395_storage",
                                    "typeString": "struct MultiSigKeyHolders.Data storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 40747,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5493:4:135",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 40749,
                                            "name": "bitcoinAddresses",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 40387,
                                            "src": "5514:16:135",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                              "typeString": "string storage ref[] storage ref"
                                            }
                                          },
                                          "id": 40750,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "length",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "5514:23:135",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 40748,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "5506:7:135",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint248_$",
                                          "typeString": "type(uint248)"
                                        },
                                        "typeName": "uint248"
                                      },
                                      "id": 40751,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5506:32:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint248",
                                        "typeString": "uint248"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_uint248",
                                        "typeString": "uint248"
                                      }
                                    ],
                                    "id": 40746,
                                    "name": "Data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40395,
                                    "src": "5479:4:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_Data_$40395_storage_ptr_$",
                                      "typeString": "type(struct MultiSigKeyHolders.Data storage pointer)"
                                    }
                                  },
                                  "id": 40752,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [
                                    "added",
                                    "index"
                                  ],
                                  "nodeType": "FunctionCall",
                                  "src": "5479:62:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$40395_memory",
                                    "typeString": "struct MultiSigKeyHolders.Data memory"
                                  }
                                },
                                "src": "5445:96:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$40395_storage",
                                  "typeString": "struct MultiSigKeyHolders.Data storage ref"
                                }
                              },
                              "id": 40754,
                              "nodeType": "ExpressionStatement",
                              "src": "5445:96:135"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 40758,
                                    "name": "_address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40725,
                                    "src": "5568:8:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 40755,
                                    "name": "bitcoinAddresses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40387,
                                    "src": "5546:16:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                      "typeString": "string storage ref[] storage ref"
                                    }
                                  },
                                  "id": 40757,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5546:21:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$_t_uint256_$",
                                    "typeString": "function (string storage ref) returns (uint256)"
                                  }
                                },
                                "id": 40759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5546:31:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 40760,
                              "nodeType": "ExpressionStatement",
                              "src": "5546:31:135"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40764,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40725,
                              "src": "5611:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 40763,
                            "name": "BitcoinAddressAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40411,
                            "src": "5591:19:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 40765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5591:29:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40766,
                        "nodeType": "EmitStatement",
                        "src": "5586:34:135"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to add bitcoin address to the key holders.\n@param _address The address to be added.\n",
                  "id": 40768,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_addBitcoinAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40726,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40725,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40768,
                        "src": "5295:22:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 40724,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5295:6:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5294:24:135"
                  },
                  "returnParameters": {
                    "id": 40727,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5328:0:135"
                  },
                  "scope": 41023,
                  "src": "5267:357:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 40779,
                    "nodeType": "Block",
                    "src": "5812:39:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40776,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40770,
                              "src": "5838:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 40775,
                            "name": "_removeBitcoinAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40879,
                            "src": "5816:21:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 40777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5816:31:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40778,
                        "nodeType": "ExpressionStatement",
                        "src": "5816:31:135"
                      }
                    ]
                  },
                  "documentation": "@notice Remove bitcoin address to the key holders.\n@param _address The address to be removed.\n",
                  "id": 40780,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40773,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40772,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "5802:9:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5802:9:135"
                    }
                  ],
                  "name": "removeBitcoinAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40771,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40770,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40780,
                        "src": "5771:22:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 40769,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5771:6:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5770:24:135"
                  },
                  "returnParameters": {
                    "id": 40774,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5812:0:135"
                  },
                  "scope": 41023,
                  "src": "5741:110:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40807,
                    "nodeType": "Block",
                    "src": "6047:97:135",
                    "statements": [
                      {
                        "body": {
                          "id": 40805,
                          "nodeType": "Block",
                          "src": "6097:44:135",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 40800,
                                      "name": "_address",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40783,
                                      "src": "6124:8:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                        "typeString": "string memory[] memory"
                                      }
                                    },
                                    "id": 40802,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 40801,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40789,
                                      "src": "6133:1:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6124:11:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 40799,
                                  "name": "_removeBitcoinAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40879,
                                  "src": "6102:21:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory)"
                                  }
                                },
                                "id": 40803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6102:34:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 40804,
                              "nodeType": "ExpressionStatement",
                              "src": "6102:34:135"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 40795,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 40792,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40789,
                            "src": "6071:1:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 40793,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40783,
                              "src": "6075:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              }
                            },
                            "id": 40794,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6075:15:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6071:19:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 40806,
                        "initializationExpression": {
                          "assignments": [
                            40789
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 40789,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 40806,
                              "src": "6056:9:135",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 40788,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6056:7:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 40791,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 40790,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6068:1:135",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6056:13:135"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 40797,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "6092:3:135",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 40796,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40789,
                              "src": "6092:1:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 40798,
                          "nodeType": "ExpressionStatement",
                          "src": "6092:3:135"
                        },
                        "nodeType": "ForStatement",
                        "src": "6051:90:135"
                      }
                    ]
                  },
                  "documentation": "@notice Remove bitcoin addresses to the key holders.\n@param _address The addresses to be removed.\n",
                  "id": 40808,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40786,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40785,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "6037:9:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6037:9:135"
                    }
                  ],
                  "name": "removeBitcoinAddresses",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40784,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40783,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40808,
                        "src": "6004:24:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 40781,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "6004:6:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 40782,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "6004:8:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6003:26:135"
                  },
                  "returnParameters": {
                    "id": 40787,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6047:0:135"
                  },
                  "scope": 41023,
                  "src": "5972:172:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40878,
                    "nodeType": "Block",
                    "src": "6346:486:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 40819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 40815,
                                      "name": "_address",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40810,
                                      "src": "6364:8:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 40814,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6358:5:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": "bytes"
                                  },
                                  "id": 40816,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6358:15:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 40817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6358:22:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 40818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6384:1:135",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6358:27:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 40820,
                              "name": "ERROR_INVALID_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40367,
                              "src": "6387:21:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 40813,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6350:7:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 40821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6350:59:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40822,
                        "nodeType": "ExpressionStatement",
                        "src": "6350:59:135"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 40823,
                              "name": "isBitcoinAddressAdded",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40384,
                              "src": "6418:21:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Data_$40395_storage_$",
                                "typeString": "mapping(string memory => struct MultiSigKeyHolders.Data storage ref)"
                              }
                            },
                            "id": 40825,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 40824,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40810,
                              "src": "6440:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6418:31:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$40395_storage",
                              "typeString": "struct MultiSigKeyHolders.Data storage ref"
                            }
                          },
                          "id": 40826,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "added",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 40392,
                          "src": "6418:37:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 40873,
                        "nodeType": "IfStatement",
                        "src": "6414:374:135",
                        "trueBody": {
                          "id": 40872,
                          "nodeType": "Block",
                          "src": "6457:331:135",
                          "statements": [
                            {
                              "assignments": [
                                40828
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 40828,
                                  "name": "index",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 40872,
                                  "src": "6462:13:135",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint248",
                                    "typeString": "uint248"
                                  },
                                  "typeName": {
                                    "id": 40827,
                                    "name": "uint248",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6462:7:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint248",
                                      "typeString": "uint248"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 40833,
                              "initialValue": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 40829,
                                    "name": "isBitcoinAddressAdded",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40384,
                                    "src": "6478:21:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Data_$40395_storage_$",
                                      "typeString": "mapping(string memory => struct MultiSigKeyHolders.Data storage ref)"
                                    }
                                  },
                                  "id": 40831,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 40830,
                                    "name": "_address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40810,
                                    "src": "6500:8:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6478:31:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$40395_storage",
                                    "typeString": "struct MultiSigKeyHolders.Data storage ref"
                                  }
                                },
                                "id": 40832,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "index",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 40394,
                                "src": "6478:37:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint248",
                                  "typeString": "uint248"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6462:53:135"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 40839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 40834,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40828,
                                  "src": "6524:5:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint248",
                                    "typeString": "uint248"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 40838,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 40835,
                                      "name": "bitcoinAddresses",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40387,
                                      "src": "6533:16:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                        "typeString": "string storage ref[] storage ref"
                                      }
                                    },
                                    "id": 40836,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6533:23:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 40837,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6559:1:135",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6533:27:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6524:36:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 40861,
                              "nodeType": "IfStatement",
                              "src": "6520:191:135",
                              "trueBody": {
                                "id": 40860,
                                "nodeType": "Block",
                                "src": "6562:149:135",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 40849,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 40840,
                                          "name": "bitcoinAddresses",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 40387,
                                          "src": "6568:16:135",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                            "typeString": "string storage ref[] storage ref"
                                          }
                                        },
                                        "id": 40842,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 40841,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 40828,
                                          "src": "6585:5:135",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint248",
                                            "typeString": "uint248"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "6568:23:135",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_storage",
                                          "typeString": "string storage ref"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 40843,
                                          "name": "bitcoinAddresses",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 40387,
                                          "src": "6594:16:135",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                            "typeString": "string storage ref[] storage ref"
                                          }
                                        },
                                        "id": 40848,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 40847,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 40844,
                                              "name": "bitcoinAddresses",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 40387,
                                              "src": "6611:16:135",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                                "typeString": "string storage ref[] storage ref"
                                              }
                                            },
                                            "id": 40845,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "6611:23:135",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 40846,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6637:1:135",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "6611:27:135",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6594:45:135",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_storage",
                                          "typeString": "string storage ref"
                                        }
                                      },
                                      "src": "6568:71:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_storage",
                                        "typeString": "string storage ref"
                                      }
                                    },
                                    "id": 40850,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6568:71:135"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 40858,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 40851,
                                            "name": "isBitcoinAddressAdded",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 40384,
                                            "src": "6645:21:135",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Data_$40395_storage_$",
                                              "typeString": "mapping(string memory => struct MultiSigKeyHolders.Data storage ref)"
                                            }
                                          },
                                          "id": 40855,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 40852,
                                              "name": "bitcoinAddresses",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 40387,
                                              "src": "6667:16:135",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                                "typeString": "string storage ref[] storage ref"
                                              }
                                            },
                                            "id": 40854,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 40853,
                                              "name": "index",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 40828,
                                              "src": "6684:5:135",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint248",
                                                "typeString": "uint248"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6667:23:135",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_storage",
                                              "typeString": "string storage ref"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "6645:46:135",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$40395_storage",
                                            "typeString": "struct MultiSigKeyHolders.Data storage ref"
                                          }
                                        },
                                        "id": 40856,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "index",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 40394,
                                        "src": "6645:52:135",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint248",
                                          "typeString": "uint248"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 40857,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 40828,
                                        "src": "6700:5:135",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint248",
                                          "typeString": "uint248"
                                        }
                                      },
                                      "src": "6645:60:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint248",
                                        "typeString": "uint248"
                                      }
                                    },
                                    "id": 40859,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6645:60:135"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 40865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "6715:25:135",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 40862,
                                    "name": "bitcoinAddresses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40387,
                                    "src": "6715:16:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                      "typeString": "string storage ref[] storage ref"
                                    }
                                  },
                                  "id": 40864,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6715:23:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 40866,
                              "nodeType": "ExpressionStatement",
                              "src": "6715:25:135"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 40870,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "6745:38:135",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 40867,
                                    "name": "isBitcoinAddressAdded",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40384,
                                    "src": "6752:21:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Data_$40395_storage_$",
                                      "typeString": "mapping(string memory => struct MultiSigKeyHolders.Data storage ref)"
                                    }
                                  },
                                  "id": 40869,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 40868,
                                    "name": "_address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 40810,
                                    "src": "6774:8:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6752:31:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$40395_storage",
                                    "typeString": "struct MultiSigKeyHolders.Data storage ref"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 40871,
                              "nodeType": "ExpressionStatement",
                              "src": "6745:38:135"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40875,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40810,
                              "src": "6819:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 40874,
                            "name": "BitcoinAddressRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40415,
                            "src": "6797:21:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 40876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6797:31:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40877,
                        "nodeType": "EmitStatement",
                        "src": "6792:36:135"
                      }
                    ]
                  },
                  "documentation": "@notice Internal function to remove bitcoin address to the key holders.\n@param _address The address to be removed.\n",
                  "id": 40879,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_removeBitcoinAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40811,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40810,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40879,
                        "src": "6313:22:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 40809,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6313:6:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6312:24:135"
                  },
                  "returnParameters": {
                    "id": 40812,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6346:0:135"
                  },
                  "scope": 41023,
                  "src": "6282:550:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 40891,
                    "nodeType": "Block",
                    "src": "7041:52:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 40886,
                              "name": "isBitcoinAddressAdded",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40384,
                              "src": "7052:21:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Data_$40395_storage_$",
                                "typeString": "mapping(string memory => struct MultiSigKeyHolders.Data storage ref)"
                              }
                            },
                            "id": 40888,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 40887,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40881,
                              "src": "7074:8:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7052:31:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$40395_storage",
                              "typeString": "struct MultiSigKeyHolders.Data storage ref"
                            }
                          },
                          "id": 40889,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "added",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 40392,
                          "src": "7052:37:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 40885,
                        "id": 40890,
                        "nodeType": "Return",
                        "src": "7045:44:135"
                      }
                    ]
                  },
                  "documentation": "@notice Get whether bitcoin address is a key holder.\n@param _address The bitcoin address to be checked.\n",
                  "id": 40892,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isBitcoinAddressOwner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40882,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40881,
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 40892,
                        "src": "6990:22:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 40880,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6990:6:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6989:24:135"
                  },
                  "returnParameters": {
                    "id": 40885,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40884,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 40892,
                        "src": "7035:4:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 40883,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7035:4:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7034:6:135"
                  },
                  "scope": 41023,
                  "src": "6959:134:135",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40900,
                    "nodeType": "Block",
                    "src": "7223:31:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 40898,
                          "name": "bitcoinAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40387,
                          "src": "7234:16:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                            "typeString": "string storage ref[] storage ref"
                          }
                        },
                        "functionReturnParameters": 40897,
                        "id": 40899,
                        "nodeType": "Return",
                        "src": "7227:23:135"
                      }
                    ]
                  },
                  "documentation": "@notice Get array of bitcoin key holders.\n",
                  "id": 40901,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBitcoinAddresses",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40893,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7182:2:135"
                  },
                  "returnParameters": {
                    "id": 40897,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40896,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 40901,
                        "src": "7206:15:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 40894,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "7206:6:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 40895,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7206:8:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7205:17:135"
                  },
                  "scope": 41023,
                  "src": "7154:100:135",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40921,
                    "nodeType": "Block",
                    "src": "7508:80:135",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 40915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 40913,
                            "name": "bitcoinRequired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40390,
                            "src": "7512:15:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 40914,
                            "name": "_required",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40903,
                            "src": "7530:9:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7512:27:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 40916,
                        "nodeType": "ExpressionStatement",
                        "src": "7512:27:135"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 40918,
                              "name": "_required",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40903,
                              "src": "7574:9:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 40917,
                            "name": "BitcoinRequirementChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40419,
                            "src": "7548:25:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 40919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7548:36:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 40920,
                        "nodeType": "EmitStatement",
                        "src": "7543:41:135"
                      }
                    ]
                  },
                  "documentation": "@notice Set flag bitcoinRequired to true/false.\n@param _required The new value of the bitcoinRequired flag.\n",
                  "id": 40922,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40906,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40905,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "7445:9:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7445:9:135"
                    },
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 40908,
                            "name": "bitcoinAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40387,
                            "src": "7472:16:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                              "typeString": "string storage ref[] storage ref"
                            }
                          },
                          "id": 40909,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7472:23:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 40910,
                          "name": "_required",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40903,
                          "src": "7497:9:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 40911,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40907,
                        "name": "validRequirement",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40446,
                        "src": "7455:16:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$_t_uint256_$",
                          "typeString": "modifier (uint256,uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7455:52:135"
                    }
                  ],
                  "name": "changeBitcoinRequirement",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40904,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40903,
                        "name": "_required",
                        "nodeType": "VariableDeclaration",
                        "scope": 40922,
                        "src": "7419:17:135",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40902,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7419:7:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7418:19:135"
                  },
                  "returnParameters": {
                    "id": 40912,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7508:0:135"
                  },
                  "scope": 41023,
                  "src": "7385:203:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 40971,
                    "nodeType": "Block",
                    "src": "7913:215:135",
                    "statements": [
                      {
                        "body": {
                          "id": 40950,
                          "nodeType": "Block",
                          "src": "7971:50:135",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 40945,
                                      "name": "_ethereumAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40925,
                                      "src": "7996:16:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 40947,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 40946,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40934,
                                      "src": "8013:1:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7996:19:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 40944,
                                  "name": "_addEthereumAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40530,
                                  "src": "7976:19:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 40948,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7976:40:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 40949,
                              "nodeType": "ExpressionStatement",
                              "src": "7976:40:135"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 40940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 40937,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40934,
                            "src": "7937:1:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 40938,
                              "name": "_ethereumAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40925,
                              "src": "7941:16:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 40939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7941:23:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7937:27:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 40951,
                        "initializationExpression": {
                          "assignments": [
                            40934
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 40934,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 40951,
                              "src": "7922:9:135",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 40933,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7922:7:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 40936,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 40935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7934:1:135",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7922:13:135"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 40942,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "7966:3:135",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 40941,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40934,
                              "src": "7966:1:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 40943,
                          "nodeType": "ExpressionStatement",
                          "src": "7966:3:135"
                        },
                        "nodeType": "ForStatement",
                        "src": "7917:104:135"
                      },
                      {
                        "body": {
                          "id": 40969,
                          "nodeType": "Block",
                          "src": "8077:48:135",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 40964,
                                      "name": "_bitcoinAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40928,
                                      "src": "8101:15:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                        "typeString": "string memory[] memory"
                                      }
                                    },
                                    "id": 40966,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 40965,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40953,
                                      "src": "8117:1:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8101:18:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 40963,
                                  "name": "_addBitcoinAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40768,
                                  "src": "8082:18:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory)"
                                  }
                                },
                                "id": 40967,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8082:38:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 40968,
                              "nodeType": "ExpressionStatement",
                              "src": "8082:38:135"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 40959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 40956,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40953,
                            "src": "8044:1:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 40957,
                              "name": "_bitcoinAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40928,
                              "src": "8048:15:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              }
                            },
                            "id": 40958,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8048:22:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8044:26:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 40970,
                        "initializationExpression": {
                          "assignments": [
                            40953
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 40953,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 40970,
                              "src": "8029:9:135",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 40952,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8029:7:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 40955,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 40954,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8041:1:135",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8029:13:135"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 40961,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "8072:3:135",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 40960,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40953,
                              "src": "8072:1:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 40962,
                          "nodeType": "ExpressionStatement",
                          "src": "8072:3:135"
                        },
                        "nodeType": "ForStatement",
                        "src": "8024:101:135"
                      }
                    ]
                  },
                  "documentation": "@notice Add rBTC and bitcoin addresses to the key holders.\n@param _ethereumAddress the rBTC addresses to be added.\n@param _bitcoinAddress the bitcoin addresses to be added.\n",
                  "id": 40972,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40931,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40930,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "7903:9:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7903:9:135"
                    }
                  ],
                  "name": "addEthereumAndBitcoinAddresses",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40925,
                        "name": "_ethereumAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 40972,
                        "src": "7828:33:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 40923,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7828:7:135",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 40924,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7828:9:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40928,
                        "name": "_bitcoinAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 40972,
                        "src": "7863:31:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 40926,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "7863:6:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 40927,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7863:8:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7827:68:135"
                  },
                  "returnParameters": {
                    "id": 40932,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7913:0:135"
                  },
                  "scope": 41023,
                  "src": "7788:340:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41021,
                    "nodeType": "Block",
                    "src": "8463:221:135",
                    "statements": [
                      {
                        "body": {
                          "id": 41000,
                          "nodeType": "Block",
                          "src": "8521:53:135",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 40995,
                                      "name": "_ethereumAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40975,
                                      "src": "8549:16:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 40997,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 40996,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40984,
                                      "src": "8566:1:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8549:19:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 40994,
                                  "name": "_removeEthereumAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40640,
                                  "src": "8526:22:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 40998,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8526:43:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 40999,
                              "nodeType": "ExpressionStatement",
                              "src": "8526:43:135"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 40990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 40987,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40984,
                            "src": "8487:1:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 40988,
                              "name": "_ethereumAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40975,
                              "src": "8491:16:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 40989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8491:23:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8487:27:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 41001,
                        "initializationExpression": {
                          "assignments": [
                            40984
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 40984,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 41001,
                              "src": "8472:9:135",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 40983,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8472:7:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 40986,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 40985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8484:1:135",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8472:13:135"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 40992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "8516:3:135",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 40991,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40984,
                              "src": "8516:1:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 40993,
                          "nodeType": "ExpressionStatement",
                          "src": "8516:3:135"
                        },
                        "nodeType": "ForStatement",
                        "src": "8467:107:135"
                      },
                      {
                        "body": {
                          "id": 41019,
                          "nodeType": "Block",
                          "src": "8630:51:135",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 41014,
                                      "name": "_bitcoinAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 40978,
                                      "src": "8657:15:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                        "typeString": "string memory[] memory"
                                      }
                                    },
                                    "id": 41016,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 41015,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41003,
                                      "src": "8673:1:135",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8657:18:135",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 41013,
                                  "name": "_removeBitcoinAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40879,
                                  "src": "8635:21:135",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory)"
                                  }
                                },
                                "id": 41017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8635:41:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 41018,
                              "nodeType": "ExpressionStatement",
                              "src": "8635:41:135"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 41009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 41006,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41003,
                            "src": "8597:1:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 41007,
                              "name": "_bitcoinAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40978,
                              "src": "8601:15:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              }
                            },
                            "id": 41008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8601:22:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8597:26:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 41020,
                        "initializationExpression": {
                          "assignments": [
                            41003
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 41003,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 41020,
                              "src": "8582:9:135",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 41002,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8582:7:135",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 41005,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 41004,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8594:1:135",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8582:13:135"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 41011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "8625:3:135",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 41010,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41003,
                              "src": "8625:1:135",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 41012,
                          "nodeType": "ExpressionStatement",
                          "src": "8625:3:135"
                        },
                        "nodeType": "ForStatement",
                        "src": "8577:104:135"
                      }
                    ]
                  },
                  "documentation": "@notice Remove rBTC and bitcoin addresses to the key holders.\n@param _ethereumAddress The rBTC addresses to be removed.\n@param _bitcoinAddress The bitcoin addresses to be removed.\n",
                  "id": 41022,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 40981,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 40980,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "8453:9:135",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8453:9:135"
                    }
                  ],
                  "name": "removeEthereumAndBitcoinAddresses",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 40979,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40975,
                        "name": "_ethereumAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 41022,
                        "src": "8378:33:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 40973,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8378:7:135",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 40974,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "8378:9:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40978,
                        "name": "_bitcoinAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 41022,
                        "src": "8413:31:135",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_$dyn_memory_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 40976,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "8413:6:135",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 40977,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "8413:8:135",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8377:68:135"
                  },
                  "returnParameters": {
                    "id": 40982,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8463:0:135"
                  },
                  "scope": 41023,
                  "src": "8335:349:135",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 41024,
              "src": "278:8408:135"
            }
          ],
          "src": "0:8687:135"
        },
        "id": 135
      },
      "contracts/openzeppelin/Address.sol": {
        "ast": {
          "absolutePath": "contracts/openzeppelin/Address.sol",
          "exportedSymbols": {
            "Address": [
              41098
            ]
          },
          "id": 41099,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 41025,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:136"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": "@dev Collection of functions related to the address type",
              "fullyImplemented": true,
              "id": 41098,
              "linearizedBaseContracts": [
                41098
              ],
              "name": "Address",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 41049,
                    "nodeType": "Block",
                    "src": "705:498:136",
                    "statements": [
                      {
                        "assignments": [
                          41033
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 41033,
                            "name": "codehash",
                            "nodeType": "VariableDeclaration",
                            "scope": 41049,
                            "src": "933:16:136",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 41032,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "933:7:136",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 41034,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "933:16:136"
                      },
                      {
                        "assignments": [
                          41036
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 41036,
                            "name": "accountHash",
                            "nodeType": "VariableDeclaration",
                            "scope": 41049,
                            "src": "953:19:136",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 41035,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "953:7:136",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 41038,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "307863356432343630313836663732333363393237653764623264636337303363306535303062363533636138323237336237626661643830343564383561343730",
                          "id": 41037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "975:66:136",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_89477152217924674838424037953991966239322087453347756267410168184682657981552_by_1",
                            "typeString": "int_const 8947...(69 digits omitted)...1552"
                          },
                          "value": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "953:88:136"
                      },
                      {
                        "externalReferences": [
                          {
                            "codehash": {
                              "declaration": 41033,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1109:8:136",
                              "valueSize": 1
                            }
                          },
                          {
                            "account": {
                              "declaration": 41027,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "1133:7:136",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 41039,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    codehash := extcodehash(account)\n}",
                        "src": "1095:50:136"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 41046,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 41042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 41040,
                                  "name": "codehash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41033,
                                  "src": "1156:8:136",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 41041,
                                  "name": "accountHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41036,
                                  "src": "1168:11:136",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "1156:23:136",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 41045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 41043,
                                  "name": "codehash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41033,
                                  "src": "1183:8:136",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "307830",
                                  "id": 41044,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1195:3:136",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                },
                                "src": "1183:15:136",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1156:42:136",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 41047,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1155:44:136",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 41031,
                        "id": 41048,
                        "nodeType": "Return",
                        "src": "1148:51:136"
                      }
                    ]
                  },
                  "documentation": "@dev Returns true if `account` is a contract.\n\t * [IMPORTANT]\n====\nIt is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.\n\t * Among others, `isContract` will return false for the following\ntypes of addresses:\n\t *  - 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====",
                  "id": 41050,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41028,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41027,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 41050,
                        "src": "659:15:136",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41026,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "659:7:136",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "658:17:136"
                  },
                  "returnParameters": {
                    "id": 41031,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41030,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41050,
                        "src": "699:4:136",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 41029,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "699:4:136",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "698:6:136"
                  },
                  "scope": 41098,
                  "src": "639:564:136",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41063,
                    "nodeType": "Block",
                    "src": "1467:40:136",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 41059,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41052,
                                  "src": "1494:7:136",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 41058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1486:7:136",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": "uint160"
                              },
                              "id": 41060,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1486:16:136",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 41057,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1478:7:136",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 41061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1478:25:136",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 41056,
                        "id": 41062,
                        "nodeType": "Return",
                        "src": "1471:32:136"
                      }
                    ]
                  },
                  "documentation": "@dev Converts an `address` into `address payable`. Note that this is\nsimply a type cast: the actual underlying value is not changed.\n\t * _Available since v2.4.0._",
                  "id": 41064,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toPayable",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41053,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41052,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 41064,
                        "src": "1410:15:136",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41051,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1410:7:136",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1409:17:136"
                  },
                  "returnParameters": {
                    "id": 41056,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41055,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41064,
                        "src": "1450:15:136",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 41054,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1450:15:136",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1449:17:136"
                  },
                  "scope": 41098,
                  "src": "1391:116:136",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41096,
                    "nodeType": "Block",
                    "src": "2477:267:136",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 41077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 41073,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45018,
                                      "src": "2497:4:136",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Address_$41098",
                                        "typeString": "library Address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Address_$41098",
                                        "typeString": "library Address"
                                      }
                                    ],
                                    "id": 41072,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2489:7:136",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 41074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2489:13:136",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 41075,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2489:21:136",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 41076,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41068,
                                "src": "2514:6:136",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2489:31:136",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365",
                              "id": 41078,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2522:31:136",
                              "subdenomination": null,
                              "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": 41071,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2481:7:136",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 41079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2481:73:136",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41080,
                        "nodeType": "ExpressionStatement",
                        "src": "2481:73:136"
                      },
                      {
                        "assignments": [
                          41082,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 41082,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 41096,
                            "src": "2608:12:136",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 41081,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2608:4:136",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 41090,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 41088,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2655:2:136",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 41086,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41068,
                                "src": "2647:6:136",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 41083,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41066,
                                  "src": "2626:9:136",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 41084,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "call",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2626:14:136",
                                "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": 41085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2626:20:136",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$",
                                "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"
                              }
                            },
                            "id": 41087,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2626:28:136",
                            "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": 41089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2626:32:136",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2607:51:136"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41092,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41082,
                              "src": "2670:7:136",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564",
                              "id": 41093,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2679:60:136",
                              "subdenomination": null,
                              "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": 41091,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2662:7:136",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 41094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2662:78:136",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41095,
                        "nodeType": "ExpressionStatement",
                        "src": "2662:78:136"
                      }
                    ]
                  },
                  "documentation": "@dev Replacement for Solidity's `transfer`: sends `amount` wei to\n`recipient`, forwarding all available gas and reverting on errors.\n\t * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\nof certain opcodes, possibly making contracts go over the 2300 gas limit\nimposed by `transfer`, making them unable to receive funds via\n`transfer`. {sendValue} removes this limitation.\n\t * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n\t * IMPORTANT: because control is transferred to `recipient`, care must be\ntaken to not create reentrancy vulnerabilities. Consider using\n{ReentrancyGuard} or the\nhttps://solidity.readthedocs.io/en/v0.5.11/security-considerations.html\n  #use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n\t * _Available since v2.4.0._",
                  "id": 41097,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sendValue",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41069,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41066,
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 41097,
                        "src": "2433:17:136",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41065,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2433:7:136",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41068,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 41097,
                        "src": "2452:14:136",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41067,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2452:7:136",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2432:35:136"
                  },
                  "returnParameters": {
                    "id": 41070,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2477:0:136"
                  },
                  "scope": 41098,
                  "src": "2414:330:136",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 41099,
              "src": "101:2645:136"
            }
          ],
          "src": "0:2747:136"
        },
        "id": 136
      },
      "contracts/openzeppelin/Context.sol": {
        "ast": {
          "absolutePath": "contracts/openzeppelin/Context.sol",
          "exportedSymbols": {
            "Context": [
              41125
            ]
          },
          "id": 41126,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 41100,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:137"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 41125,
              "linearizedBaseContracts": [
                41125
              ],
              "name": "Context",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 41103,
                    "nodeType": "Block",
                    "src": "724:2:137",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 41104,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41101,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "712:2:137"
                  },
                  "returnParameters": {
                    "id": 41102,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "724:0:137"
                  },
                  "scope": 41125,
                  "src": "701:25:137",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41112,
                    "nodeType": "Block",
                    "src": "842:25:137",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 41109,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44994,
                            "src": "853:3:137",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 41110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "853:10:137",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 41108,
                        "id": 41111,
                        "nodeType": "Return",
                        "src": "846:17:137"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 41113,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41105,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "799:2:137"
                  },
                  "returnParameters": {
                    "id": 41108,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41107,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41113,
                        "src": "825:15:137",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 41106,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "825:15:137",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "824:17:137"
                  },
                  "scope": 41125,
                  "src": "780:87:137",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41123,
                    "nodeType": "Block",
                    "src": "927:150:137",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41118,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45014,
                          "src": "931:4:137",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Context_$41125",
                            "typeString": "contract Context"
                          }
                        },
                        "id": 41119,
                        "nodeType": "ExpressionStatement",
                        "src": "931:4:137"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 41120,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44994,
                            "src": "1065:3:137",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 41121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1065:8:137",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 41117,
                        "id": 41122,
                        "nodeType": "Return",
                        "src": "1058:15:137"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 41124,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41114,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "887:2:137"
                  },
                  "returnParameters": {
                    "id": 41117,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41116,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41124,
                        "src": "913:12:137",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 41115,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "913:5:137",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "912:14:137"
                  },
                  "scope": 41125,
                  "src": "870:207:137",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 41126,
              "src": "533:546:137"
            }
          ],
          "src": "0:1080:137"
        },
        "id": 137
      },
      "contracts/openzeppelin/ERC20.sol": {
        "ast": {
          "absolutePath": "contracts/openzeppelin/ERC20.sol",
          "exportedSymbols": {
            "ERC20": [
              41530
            ]
          },
          "id": 41531,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 41127,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:138"
            },
            {
              "absolutePath": "contracts/openzeppelin/Context.sol",
              "file": "./Context.sol",
              "id": 41128,
              "nodeType": "ImportDirective",
              "scope": 41531,
              "sourceUnit": 41126,
              "src": "25:23:138",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/IERC20_.sol",
              "file": "./IERC20_.sol",
              "id": 41129,
              "nodeType": "ImportDirective",
              "scope": 41531,
              "sourceUnit": 41658,
              "src": "49:23:138",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "./SafeMath.sol",
              "id": 41130,
              "nodeType": "ImportDirective",
              "scope": 41531,
              "sourceUnit": 42310,
              "src": "73:24:138",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 41131,
                    "name": "Context",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41125,
                    "src": "1270:7:138",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Context_$41125",
                      "typeString": "contract Context"
                    }
                  },
                  "id": 41132,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1270:7:138"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 41133,
                    "name": "IERC20_",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41657,
                    "src": "1279:7:138",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20__$41657",
                      "typeString": "contract IERC20_"
                    }
                  },
                  "id": 41134,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1279:7:138"
                }
              ],
              "contractDependencies": [
                41125,
                41657
              ],
              "contractKind": "contract",
              "documentation": "@dev Implementation of the {IERC20} interface.\n * This implementation is agnostic to the way tokens are created. This means\nthat a supply mechanism has to be added in a derived contract using {_mint}.\nFor a generic mechanism see {ERC20Mintable}.\n * TIP: For a detailed writeup see our guide\nhttps://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\nto implement supply mechanisms].\n * We have followed general OpenZeppelin guidelines: functions revert instead\nof returning `false` on failure. This behavior is nonetheless conventional\nand does not conflict with the expectations of ERC20 applications.\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\nThis allows applications to reconstruct the allowance for all accounts just\nby listening to said events. Other implementations of the EIP may not emit\nthese events, as it isn't required by the specification.\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\nfunctions have been added to mitigate the well-known issues around setting\nallowances. See {IERC20-approve}.",
              "fullyImplemented": true,
              "id": 41530,
              "linearizedBaseContracts": [
                41530,
                41657,
                41125
              ],
              "name": "ERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 41137,
                  "libraryName": {
                    "contractScope": null,
                    "id": 41135,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "1296:8:138",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1290:27:138",
                  "typeName": {
                    "id": 41136,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1309:7:138",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 41141,
                  "name": "_balances",
                  "nodeType": "VariableDeclaration",
                  "scope": 41530,
                  "src": "1320:45:138",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 41140,
                    "keyType": {
                      "id": 41138,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1328:7:138",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1320:27:138",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 41139,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1339:7:138",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 41147,
                  "name": "_allowances",
                  "nodeType": "VariableDeclaration",
                  "scope": 41530,
                  "src": "1369:67:138",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 41146,
                    "keyType": {
                      "id": 41142,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1377:7:138",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1369:47:138",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 41145,
                      "keyType": {
                        "id": 41143,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1396:7:138",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1388:27:138",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 41144,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1407:7:138",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 41149,
                  "name": "_totalSupply",
                  "nodeType": "VariableDeclaration",
                  "scope": 41530,
                  "src": "1440:28:138",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 41148,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1440:7:138",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 41156,
                    "nodeType": "Block",
                    "src": "1570:27:138",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41154,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41149,
                          "src": "1581:12:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 41153,
                        "id": 41155,
                        "nodeType": "Return",
                        "src": "1574:19:138"
                      }
                    ]
                  },
                  "documentation": "@dev See {IERC20-totalSupply}.",
                  "id": 41157,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41150,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1537:2:138"
                  },
                  "returnParameters": {
                    "id": 41153,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41152,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41157,
                        "src": "1561:7:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41151,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1561:7:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1560:9:138"
                  },
                  "scope": 41530,
                  "src": "1517:80:138",
                  "stateMutability": "view",
                  "superFunction": 41595,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41168,
                    "nodeType": "Block",
                    "src": "1709:33:138",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 41164,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41141,
                            "src": "1720:9:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 41166,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 41165,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41159,
                            "src": "1730:7:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1720:18:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 41163,
                        "id": 41167,
                        "nodeType": "Return",
                        "src": "1713:25:138"
                      }
                    ]
                  },
                  "documentation": "@dev See {IERC20-balanceOf}.",
                  "id": 41169,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41160,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41159,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 41169,
                        "src": "1662:15:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41158,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1662:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1661:17:138"
                  },
                  "returnParameters": {
                    "id": 41163,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41162,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41169,
                        "src": "1700:7:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41161,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1700:7:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1699:9:138"
                  },
                  "scope": 41530,
                  "src": "1643:99:138",
                  "stateMutability": "view",
                  "superFunction": 41602,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41187,
                    "nodeType": "Block",
                    "src": "1993:65:138",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 41179,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41113,
                                "src": "2007:10:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 41180,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2007:12:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41181,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41171,
                              "src": "2021:9:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41182,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41173,
                              "src": "2032:6:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41178,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41371,
                            "src": "1997:9:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 41183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1997:42:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41184,
                        "nodeType": "ExpressionStatement",
                        "src": "1997:42:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 41185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2050:4:138",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 41177,
                        "id": 41186,
                        "nodeType": "Return",
                        "src": "2043:11:138"
                      }
                    ]
                  },
                  "documentation": "@dev See {IERC20-transfer}.\n\t * Requirements:\n\t * - `recipient` cannot be the zero address.\n- the caller must have a balance of at least `amount`.",
                  "id": 41188,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41174,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41171,
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 41188,
                        "src": "1936:17:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41170,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1936:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41173,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 41188,
                        "src": "1955:14:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41172,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1955:7:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1935:35:138"
                  },
                  "returnParameters": {
                    "id": 41177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41176,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41188,
                        "src": "1987:4:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 41175,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1987:4:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1986:6:138"
                  },
                  "scope": 41530,
                  "src": "1918:140:138",
                  "stateMutability": "nonpayable",
                  "superFunction": 41611,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41203,
                    "nodeType": "Block",
                    "src": "2185:42:138",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 41197,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41147,
                              "src": "2196:11:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 41199,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 41198,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41190,
                              "src": "2208:5:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2196:18:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 41201,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 41200,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41192,
                            "src": "2215:7:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2196:27:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 41196,
                        "id": 41202,
                        "nodeType": "Return",
                        "src": "2189:34:138"
                      }
                    ]
                  },
                  "documentation": "@dev See {IERC20-allowance}.",
                  "id": 41204,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41190,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 41204,
                        "src": "2123:13:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41189,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2123:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41192,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41204,
                        "src": "2138:15:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41191,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2138:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2122:32:138"
                  },
                  "returnParameters": {
                    "id": 41196,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41195,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41204,
                        "src": "2176:7:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41194,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2176:7:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2175:9:138"
                  },
                  "scope": 41530,
                  "src": "2104:123:138",
                  "stateMutability": "view",
                  "superFunction": 41620,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41222,
                    "nodeType": "Block",
                    "src": "2413:62:138",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 41214,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41113,
                                "src": "2426:10:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 41215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2426:12:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41216,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41206,
                              "src": "2440:7:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41217,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41208,
                              "src": "2449:6:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41213,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41500,
                            "src": "2417:8:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 41218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2417:39:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41219,
                        "nodeType": "ExpressionStatement",
                        "src": "2417:39:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 41220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2467:4:138",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 41212,
                        "id": 41221,
                        "nodeType": "Return",
                        "src": "2460:11:138"
                      }
                    ]
                  },
                  "documentation": "@dev See {IERC20-approve}.\n\t * Requirements:\n\t * - `spender` cannot be the zero address.",
                  "id": 41223,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41209,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41206,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41223,
                        "src": "2358:15:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41205,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2358:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41208,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 41223,
                        "src": "2375:14:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41207,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2375:7:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2357:33:138"
                  },
                  "returnParameters": {
                    "id": 41212,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41211,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41223,
                        "src": "2407:4:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 41210,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2407:4:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2406:6:138"
                  },
                  "scope": 41530,
                  "src": "2341:134:138",
                  "stateMutability": "nonpayable",
                  "superFunction": 41629,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41258,
                    "nodeType": "Block",
                    "src": "2998:184:138",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41235,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41225,
                              "src": "3012:6:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41236,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41227,
                              "src": "3020:9:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41237,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41229,
                              "src": "3031:6:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41234,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41371,
                            "src": "3002:9:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 41238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3002:36:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41239,
                        "nodeType": "ExpressionStatement",
                        "src": "3002:36:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41241,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41225,
                              "src": "3051:6:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 41242,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41113,
                                "src": "3059:10:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 41243,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3059:12:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 41251,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41229,
                                  "src": "3111:6:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
                                  "id": 41252,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3119:42:138",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                    "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                  },
                                  "value": "ERC20: transfer amount exceeds allowance"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                    "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 41244,
                                      "name": "_allowances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41147,
                                      "src": "3073:11:138",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 41246,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 41245,
                                      "name": "sender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41225,
                                      "src": "3085:6:138",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3073:19:138",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 41249,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 41247,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41113,
                                      "src": "3093:10:138",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 41248,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3093:12:138",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3073:33:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 41250,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42119,
                                "src": "3073:37:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                                }
                              },
                              "id": 41253,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3073:89:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41240,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41500,
                            "src": "3042:8:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 41254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3042:121:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41255,
                        "nodeType": "ExpressionStatement",
                        "src": "3042:121:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 41256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3174:4:138",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 41233,
                        "id": 41257,
                        "nodeType": "Return",
                        "src": "3167:11:138"
                      }
                    ]
                  },
                  "documentation": "@dev See {IERC20-transferFrom}.\n\t * Emits an {Approval} event indicating the updated allowance. This is not\nrequired by the EIP. See the note at the beginning of {ERC20};\n\t * Requirements:\n- `sender` and `recipient` cannot be the zero address.\n- `sender` must have a balance of at least `amount`.\n- the caller must have allowance for `sender`'s tokens of at least\n`amount`.",
                  "id": 41259,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41230,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41225,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41259,
                        "src": "2919:14:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41224,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2919:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41227,
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 41259,
                        "src": "2937:17:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41226,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2937:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41229,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 41259,
                        "src": "2958:14:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41228,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2958:7:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2915:60:138"
                  },
                  "returnParameters": {
                    "id": 41233,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41232,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41259,
                        "src": "2992:4:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 41231,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2992:4:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2991:6:138"
                  },
                  "scope": 41530,
                  "src": "2894:288:138",
                  "stateMutability": "nonpayable",
                  "superFunction": 41640,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41285,
                    "nodeType": "Block",
                    "src": "3624:106:138",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 41269,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41113,
                                "src": "3637:10:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 41270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3637:12:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41271,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41261,
                              "src": "3651:7:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 41279,
                                  "name": "addedValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41263,
                                  "src": "3699:10:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 41272,
                                      "name": "_allowances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41147,
                                      "src": "3660:11:138",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 41275,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 41273,
                                        "name": "_msgSender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 41113,
                                        "src": "3672:10:138",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                          "typeString": "function () view returns (address payable)"
                                        }
                                      },
                                      "id": 41274,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3672:12:138",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3660:25:138",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 41277,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 41276,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 41261,
                                    "src": "3686:7:138",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3660:34:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 41278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42076,
                                "src": "3660:38:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 41280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3660:50:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41268,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41500,
                            "src": "3628:8:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 41281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3628:83:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41282,
                        "nodeType": "ExpressionStatement",
                        "src": "3628:83:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 41283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3722:4:138",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 41267,
                        "id": 41284,
                        "nodeType": "Return",
                        "src": "3715:11:138"
                      }
                    ]
                  },
                  "documentation": "@dev Atomically increases the allowance granted to `spender` by the caller.\n\t * This is an alternative to {approve} that can be used as a mitigation for\nproblems described in {IERC20-approve}.\n\t * Emits an {Approval} event indicating the updated allowance.\n\t * Requirements:\n\t * - `spender` cannot be the zero address.",
                  "id": 41286,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "increaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41264,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41261,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41286,
                        "src": "3565:15:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41260,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3565:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41263,
                        "name": "addedValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 41286,
                        "src": "3582:18:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41262,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3582:7:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3564:37:138"
                  },
                  "returnParameters": {
                    "id": 41267,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41266,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41286,
                        "src": "3618:4:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 41265,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3618:4:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3617:6:138"
                  },
                  "scope": 41530,
                  "src": "3538:192:138",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41313,
                    "nodeType": "Block",
                    "src": "4263:152:138",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 41296,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41113,
                                "src": "4276:10:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 41297,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4276:12:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41298,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41288,
                              "src": "4290:7:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 41306,
                                  "name": "subtractedValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41290,
                                  "src": "4338:15:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                                  "id": 41307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4355:39:138",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                    "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                  },
                                  "value": "ERC20: decreased allowance below zero"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                    "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 41299,
                                      "name": "_allowances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41147,
                                      "src": "4299:11:138",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 41302,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 41300,
                                        "name": "_msgSender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 41113,
                                        "src": "4311:10:138",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                          "typeString": "function () view returns (address payable)"
                                        }
                                      },
                                      "id": 41301,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4311:12:138",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4299:25:138",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 41304,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 41303,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 41288,
                                    "src": "4325:7:138",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4299:34:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 41305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42119,
                                "src": "4299:38:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                                }
                              },
                              "id": 41308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4299:96:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41295,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41500,
                            "src": "4267:8:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 41309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4267:129:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41310,
                        "nodeType": "ExpressionStatement",
                        "src": "4267:129:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 41311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4407:4:138",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 41294,
                        "id": 41312,
                        "nodeType": "Return",
                        "src": "4400:11:138"
                      }
                    ]
                  },
                  "documentation": "@dev Atomically decreases the allowance granted to `spender` by the caller.\n\t * This is an alternative to {approve} that can be used as a mitigation for\nproblems described in {IERC20-approve}.\n\t * Emits an {Approval} event indicating the updated allowance.\n\t * Requirements:\n\t * - `spender` cannot be the zero address.\n- `spender` must have allowance for the caller of at least\n`subtractedValue`.",
                  "id": 41314,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decreaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41291,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41288,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41314,
                        "src": "4199:15:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4199:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41290,
                        "name": "subtractedValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 41314,
                        "src": "4216:23:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41289,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4216:7:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4198:42:138"
                  },
                  "returnParameters": {
                    "id": 41294,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41293,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41314,
                        "src": "4257:4:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 41292,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4257:4:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4256:6:138"
                  },
                  "scope": 41530,
                  "src": "4172:243:138",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41370,
                    "nodeType": "Block",
                    "src": "4932:352:138",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 41328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 41324,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41316,
                                "src": "4944:6:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 41326,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4962:1:138",
                                    "subdenomination": null,
                                    "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": 41325,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4954:7:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 41327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4954:10:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "4944:20:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
                              "id": 41329,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4966:39:138",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                              },
                              "value": "ERC20: transfer from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                              }
                            ],
                            "id": 41323,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4936:7:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 41330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4936:70:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41331,
                        "nodeType": "ExpressionStatement",
                        "src": "4936:70:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 41337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 41333,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41318,
                                "src": "5018:9:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 41335,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5039:1:138",
                                    "subdenomination": null,
                                    "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": 41334,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5031:7:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 41336,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5031:10:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5018:23:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 41338,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5043:37:138",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                              },
                              "value": "ERC20: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                              }
                            ],
                            "id": 41332,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5010:7:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 41339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5010:71:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41340,
                        "nodeType": "ExpressionStatement",
                        "src": "5010:71:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 41341,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41141,
                              "src": "5086:9:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 41343,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 41342,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41316,
                              "src": "5096:6:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5086:17:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 41348,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41320,
                                "src": "5128:6:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
                                "id": 41349,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5136:40:138",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                  "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                                },
                                "value": "ERC20: transfer amount exceeds balance"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                  "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 41344,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41141,
                                  "src": "5106:9:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 41346,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 41345,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41316,
                                  "src": "5116:6:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5106:17:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 41347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42119,
                              "src": "5106:21:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                              }
                            },
                            "id": 41350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5106:71:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5086:91:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 41352,
                        "nodeType": "ExpressionStatement",
                        "src": "5086:91:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 41353,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41141,
                              "src": "5181:9:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 41355,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 41354,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41318,
                              "src": "5191:9:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5181:20:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 41360,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41320,
                                "src": "5229:6:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 41356,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41141,
                                  "src": "5204:9:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 41358,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 41357,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41318,
                                  "src": "5214:9:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5204:20:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 41359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "5204:24:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 41361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5204:32:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5181:55:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 41363,
                        "nodeType": "ExpressionStatement",
                        "src": "5181:55:138"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41365,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41316,
                              "src": "5254:6:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41366,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41318,
                              "src": "5262:9:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41367,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41320,
                              "src": "5273:6:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41364,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41648,
                            "src": "5245:8:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 41368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5245:35:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41369,
                        "nodeType": "EmitStatement",
                        "src": "5240:40:138"
                      }
                    ]
                  },
                  "documentation": "@dev Moves tokens `amount` from `sender` to `recipient`.\n\t * This is internal function is equivalent to {transfer}, and can be used to\ne.g. implement automatic token fees, slashing mechanisms, etc.\n\t * Emits a {Transfer} event.\n\t * Requirements:\n\t * - `sender` cannot be the zero address.\n- `recipient` cannot be the zero address.\n- `sender` must have a balance of at least `amount`.",
                  "id": 41371,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41316,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41371,
                        "src": "4866:14:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41315,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4866:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41318,
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 41371,
                        "src": "4884:17:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41317,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4884:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41320,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 41371,
                        "src": "4905:14:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41319,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4905:7:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4862:60:138"
                  },
                  "returnParameters": {
                    "id": 41322,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4932:0:138"
                  },
                  "scope": 41530,
                  "src": "4844:440:138",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41413,
                    "nodeType": "Block",
                    "src": "5581:218:138",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 41383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 41379,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41373,
                                "src": "5593:7:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 41381,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5612:1:138",
                                    "subdenomination": null,
                                    "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": 41380,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5604:7:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 41382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5604:10:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5593:21:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                              "id": 41384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5616:33:138",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                              },
                              "value": "ERC20: mint to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                              }
                            ],
                            "id": 41378,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5585:7:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 41385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5585:65:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41386,
                        "nodeType": "ExpressionStatement",
                        "src": "5585:65:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 41387,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41149,
                            "src": "5655:12:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 41390,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41375,
                                "src": "5687:6:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 41388,
                                "name": "_totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41149,
                                "src": "5670:12:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 41389,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "5670:16:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 41391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5670:24:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5655:39:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 41393,
                        "nodeType": "ExpressionStatement",
                        "src": "5655:39:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 41394,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41141,
                              "src": "5698:9:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 41396,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 41395,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41373,
                              "src": "5708:7:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5698:18:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 41401,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41375,
                                "src": "5742:6:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 41397,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41141,
                                  "src": "5719:9:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 41399,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 41398,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41373,
                                  "src": "5729:7:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5719:18:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 41400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "5719:22:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 41402,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5719:30:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5698:51:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 41404,
                        "nodeType": "ExpressionStatement",
                        "src": "5698:51:138"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 41407,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5775:1:138",
                                  "subdenomination": null,
                                  "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": 41406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5767:7:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 41408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5767:10:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41409,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41373,
                              "src": "5779:7:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41410,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41375,
                              "src": "5788:6:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41405,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41648,
                            "src": "5758:8:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 41411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5758:37:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41412,
                        "nodeType": "EmitStatement",
                        "src": "5753:42:138"
                      }
                    ]
                  },
                  "documentation": "@dev Creates `amount` tokens and assigns them to `account`, increasing\nthe total supply.\n\t * Emits a {Transfer} event with `from` set to the zero address.\n\t * Requirements\n\t * - `to` cannot be the zero address.",
                  "id": 41414,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41376,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41373,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 41414,
                        "src": "5539:15:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41372,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5539:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41375,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 41414,
                        "src": "5556:14:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41374,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5556:7:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5538:33:138"
                  },
                  "returnParameters": {
                    "id": 41377,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5581:0:138"
                  },
                  "scope": 41530,
                  "src": "5524:275:138",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41457,
                    "nodeType": "Block",
                    "src": "6139:258:138",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 41426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 41422,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41416,
                                "src": "6151:7:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 41424,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6170:1:138",
                                    "subdenomination": null,
                                    "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": 41423,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6162:7:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 41425,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6162:10:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6151:21:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
                              "id": 41427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6174:35:138",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                              },
                              "value": "ERC20: burn from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                              }
                            ],
                            "id": 41421,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6143:7:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 41428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6143:67:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41429,
                        "nodeType": "ExpressionStatement",
                        "src": "6143:67:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 41430,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41141,
                              "src": "6215:9:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 41432,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 41431,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41416,
                              "src": "6225:7:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6215:18:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 41437,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41418,
                                "src": "6259:6:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
                                "id": 41438,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6267:36:138",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                  "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                                },
                                "value": "ERC20: burn amount exceeds balance"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                  "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 41433,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41141,
                                  "src": "6236:9:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 41435,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 41434,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41416,
                                  "src": "6246:7:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6236:18:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 41436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42119,
                              "src": "6236:22:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                              }
                            },
                            "id": 41439,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6236:68:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6215:89:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 41441,
                        "nodeType": "ExpressionStatement",
                        "src": "6215:89:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 41442,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41149,
                            "src": "6308:12:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 41445,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41418,
                                "src": "6340:6:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 41443,
                                "name": "_totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41149,
                                "src": "6323:12:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 41444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "6323:16:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 41446,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6323:24:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6308:39:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 41448,
                        "nodeType": "ExpressionStatement",
                        "src": "6308:39:138"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41450,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41416,
                              "src": "6365:7:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 41452,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6382:1:138",
                                  "subdenomination": null,
                                  "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": 41451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6374:7:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 41453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6374:10:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41454,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41418,
                              "src": "6386:6:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41449,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41648,
                            "src": "6356:8:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 41455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6356:37:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41456,
                        "nodeType": "EmitStatement",
                        "src": "6351:42:138"
                      }
                    ]
                  },
                  "documentation": "@dev Destroys `amount` tokens from `account`, reducing the\ntotal supply.\n\t * Emits a {Transfer} event with `to` set to the zero address.\n\t * Requirements\n\t * - `account` cannot be the zero address.\n- `account` must have at least `amount` tokens.",
                  "id": 41458,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41419,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41416,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 41458,
                        "src": "6097:15:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41415,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6097:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41418,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 41458,
                        "src": "6114:14:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41417,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6114:7:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6096:33:138"
                  },
                  "returnParameters": {
                    "id": 41420,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6139:0:138"
                  },
                  "scope": 41530,
                  "src": "6082:315:138",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41499,
                    "nodeType": "Block",
                    "src": "6864:230:138",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 41472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 41468,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41460,
                                "src": "6876:5:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 41470,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6893:1:138",
                                    "subdenomination": null,
                                    "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": 41469,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6885:7:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 41471,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6885:10:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6876:19:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
                              "id": 41473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6897:38:138",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                              },
                              "value": "ERC20: approve from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                              }
                            ],
                            "id": 41467,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6868:7:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 41474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6868:68:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41475,
                        "nodeType": "ExpressionStatement",
                        "src": "6868:68:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 41481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 41477,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41462,
                                "src": "6948:7:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 41479,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6967:1:138",
                                    "subdenomination": null,
                                    "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": 41478,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6959:7:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 41480,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6959:10:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6948:21:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
                              "id": 41482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6971:36:138",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                              },
                              "value": "ERC20: approve to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                              }
                            ],
                            "id": 41476,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6940:7:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 41483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6940:68:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41484,
                        "nodeType": "ExpressionStatement",
                        "src": "6940:68:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 41485,
                                "name": "_allowances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41147,
                                "src": "7013:11:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 41488,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 41486,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41460,
                                "src": "7025:5:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7013:18:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 41489,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 41487,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41462,
                              "src": "7032:7:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7013:27:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 41490,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41464,
                            "src": "7043:6:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7013:36:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 41492,
                        "nodeType": "ExpressionStatement",
                        "src": "7013:36:138"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41494,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41460,
                              "src": "7067:5:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41495,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41462,
                              "src": "7074:7:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41496,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41464,
                              "src": "7083:6:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41493,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41656,
                            "src": "7058:8:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 41497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7058:32:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41498,
                        "nodeType": "EmitStatement",
                        "src": "7053:37:138"
                      }
                    ]
                  },
                  "documentation": "@dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n\t * This is internal function is equivalent to `approve`, and can be used to\ne.g. set automatic allowances for certain subsystems, etc.\n\t * Emits an {Approval} event.\n\t * Requirements:\n\t * - `owner` cannot be the zero address.\n- `spender` cannot be the zero address.",
                  "id": 41500,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41465,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41460,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 41500,
                        "src": "6801:13:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41459,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6801:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41462,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41500,
                        "src": "6818:15:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41461,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6818:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41464,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 41500,
                        "src": "6837:14:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41463,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6837:7:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6797:57:138"
                  },
                  "returnParameters": {
                    "id": 41466,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6864:0:138"
                  },
                  "scope": 41530,
                  "src": "6780:314:138",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41528,
                    "nodeType": "Block",
                    "src": "7312:153:138",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41508,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41502,
                              "src": "7322:7:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41509,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41504,
                              "src": "7331:6:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41507,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41458,
                            "src": "7316:5:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 41510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7316:22:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41511,
                        "nodeType": "ExpressionStatement",
                        "src": "7316:22:138"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41513,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41502,
                              "src": "7351:7:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 41514,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41113,
                                "src": "7360:10:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 41515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7360:12:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 41523,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41504,
                                  "src": "7413:6:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365",
                                  "id": 41524,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7421:38:138",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db",
                                    "typeString": "literal_string \"ERC20: burn amount exceeds allowance\""
                                  },
                                  "value": "ERC20: burn amount exceeds allowance"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db",
                                    "typeString": "literal_string \"ERC20: burn amount exceeds allowance\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 41516,
                                      "name": "_allowances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41147,
                                      "src": "7374:11:138",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 41518,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 41517,
                                      "name": "account",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41502,
                                      "src": "7386:7:138",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7374:20:138",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 41521,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 41519,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41113,
                                      "src": "7395:10:138",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 41520,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7395:12:138",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7374:34:138",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 41522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42119,
                                "src": "7374:38:138",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                                }
                              },
                              "id": 41525,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7374:86:138",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41512,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41500,
                            "src": "7342:8:138",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 41526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7342:119:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41527,
                        "nodeType": "ExpressionStatement",
                        "src": "7342:119:138"
                      }
                    ]
                  },
                  "documentation": "@dev Destroys `amount` tokens from `account`.`amount` is then deducted\nfrom the caller's allowance.\n\t * See {_burn} and {_approve}.",
                  "id": 41529,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41505,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41502,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 41529,
                        "src": "7270:15:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41501,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7270:7:138",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41504,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 41529,
                        "src": "7287:14:138",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41503,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7287:7:138",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7269:33:138"
                  },
                  "returnParameters": {
                    "id": 41506,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7312:0:138"
                  },
                  "scope": 41530,
                  "src": "7251:214:138",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 41531,
              "src": "1252:6215:138"
            }
          ],
          "src": "0:7468:138"
        },
        "id": 138
      },
      "contracts/openzeppelin/ERC20Detailed.sol": {
        "ast": {
          "absolutePath": "contracts/openzeppelin/ERC20Detailed.sol",
          "exportedSymbols": {
            "ERC20Detailed": [
              41588
            ]
          },
          "id": 41589,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 41532,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:139"
            },
            {
              "absolutePath": "contracts/openzeppelin/IERC20_.sol",
              "file": "./IERC20_.sol",
              "id": 41533,
              "nodeType": "ImportDirective",
              "scope": 41589,
              "sourceUnit": 41658,
              "src": "25:23:139",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 41534,
                    "name": "IERC20_",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41657,
                    "src": "136:7:139",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20__$41657",
                      "typeString": "contract IERC20_"
                    }
                  },
                  "id": 41535,
                  "nodeType": "InheritanceSpecifier",
                  "src": "136:7:139"
                }
              ],
              "contractDependencies": [
                41657
              ],
              "contractKind": "contract",
              "documentation": "@dev Optional functions from the ERC20 standard.",
              "fullyImplemented": false,
              "id": 41588,
              "linearizedBaseContracts": [
                41588,
                41657
              ],
              "name": "ERC20Detailed",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 41537,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 41588,
                  "src": "147:20:139",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 41536,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "147:6:139",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 41539,
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 41588,
                  "src": "170:22:139",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 41538,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "170:6:139",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 41541,
                  "name": "_decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 41588,
                  "src": "195:23:139",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 41540,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "195:5:139",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 41562,
                    "nodeType": "Block",
                    "src": "477:64:139",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 41550,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41537,
                            "src": "481:5:139",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 41551,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41543,
                            "src": "489:4:139",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "481:12:139",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 41553,
                        "nodeType": "ExpressionStatement",
                        "src": "481:12:139"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 41554,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41539,
                            "src": "497:7:139",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 41555,
                            "name": "symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41545,
                            "src": "507:6:139",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "497:16:139",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 41557,
                        "nodeType": "ExpressionStatement",
                        "src": "497:16:139"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 41558,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41541,
                            "src": "517:9:139",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 41559,
                            "name": "decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41547,
                            "src": "529:8:139",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "517:20:139",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 41561,
                        "nodeType": "ExpressionStatement",
                        "src": "517:20:139"
                      }
                    ]
                  },
                  "documentation": "@dev Sets the values for `name`, `symbol`, and `decimals`. All three of\nthese values are immutable: they can only be set once during\nconstruction.",
                  "id": 41563,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41548,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41543,
                        "name": "name",
                        "nodeType": "VariableDeclaration",
                        "scope": 41563,
                        "src": "406:18:139",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 41542,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "406:6:139",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41545,
                        "name": "symbol",
                        "nodeType": "VariableDeclaration",
                        "scope": 41563,
                        "src": "428:20:139",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 41544,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "428:6:139",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41547,
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "scope": 41563,
                        "src": "452:14:139",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 41546,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "452:5:139",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "402:67:139"
                  },
                  "returnParameters": {
                    "id": 41549,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "477:0:139"
                  },
                  "scope": 41588,
                  "src": "391:150:139",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41570,
                    "nodeType": "Block",
                    "src": "646:20:139",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41568,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41537,
                          "src": "657:5:139",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 41567,
                        "id": 41569,
                        "nodeType": "Return",
                        "src": "650:12:139"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the name of the token.",
                  "id": 41571,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41564,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "607:2:139"
                  },
                  "returnParameters": {
                    "id": 41567,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41566,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41571,
                        "src": "631:13:139",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 41565,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "631:6:139",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "630:15:139"
                  },
                  "scope": 41588,
                  "src": "594:72:139",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41578,
                    "nodeType": "Block",
                    "src": "818:22:139",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41576,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41539,
                          "src": "829:7:139",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 41575,
                        "id": 41577,
                        "nodeType": "Return",
                        "src": "822:14:139"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the symbol of the token, usually a shorter version of the\nname.",
                  "id": 41579,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41572,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "779:2:139"
                  },
                  "returnParameters": {
                    "id": 41575,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41574,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41579,
                        "src": "803:13:139",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 41573,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "803:6:139",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "802:15:139"
                  },
                  "scope": 41588,
                  "src": "764:76:139",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41586,
                    "nodeType": "Block",
                    "src": "1398:24:139",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41584,
                          "name": "_decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41541,
                          "src": "1409:9:139",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 41583,
                        "id": 41585,
                        "nodeType": "Return",
                        "src": "1402:16:139"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the number of decimals used to get its user representation.\nFor example, if `decimals` equals `2`, a balance of `505` tokens should\nbe displayed to a user as `5,05` (`505 / 10 ** 2`).\n\t * Tokens usually opt for a value of 18, imitating the relationship between\nEther and Wei.\n\t * NOTE: This information is only used for _display_ purposes: it in\nno way affects any of the arithmetic of the contract, including\n{IERC20-balanceOf} and {IERC20-transfer}.",
                  "id": 41587,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41580,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1367:2:139"
                  },
                  "returnParameters": {
                    "id": 41583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41582,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41587,
                        "src": "1391:5:139",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 41581,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1391:5:139",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1390:7:139"
                  },
                  "scope": 41588,
                  "src": "1350:72:139",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 41589,
              "src": "110:1314:139"
            }
          ],
          "src": "0:1425:139"
        },
        "id": 139
      },
      "contracts/openzeppelin/IERC20_.sol": {
        "ast": {
          "absolutePath": "contracts/openzeppelin/IERC20_.sol",
          "exportedSymbols": {
            "IERC20_": [
              41657
            ]
          },
          "id": 41658,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 41590,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:140"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": "@dev Interface of the ERC20 standard as defined in the EIP. Does not include\nthe optional functions; to access them see {ERC20Detailed}.",
              "fullyImplemented": false,
              "id": 41657,
              "linearizedBaseContracts": [
                41657
              ],
              "name": "IERC20_",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": "@dev Returns the amount of tokens in existence.",
                  "id": 41595,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41591,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "279:2:140"
                  },
                  "returnParameters": {
                    "id": 41594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41593,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41595,
                        "src": "305:7:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41592,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "305:7:140",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "304:9:140"
                  },
                  "scope": 41657,
                  "src": "259:55:140",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "@dev Returns the amount of tokens owned by `account`.",
                  "id": 41602,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41598,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41597,
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 41602,
                        "src": "404:15:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41596,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "404:7:140",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "403:17:140"
                  },
                  "returnParameters": {
                    "id": 41601,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41600,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41602,
                        "src": "444:7:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41599,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "444:7:140",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "443:9:140"
                  },
                  "scope": 41657,
                  "src": "385:68:140",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "@dev Moves `amount` tokens from the caller's account to `recipient`.\n\t * Returns a boolean value indicating whether the operation succeeded.\n\t * Emits a {Transfer} event.",
                  "id": 41611,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41604,
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 41611,
                        "src": "667:17:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41603,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "667:7:140",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41606,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 41611,
                        "src": "686:14:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41605,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "686:7:140",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "666:35:140"
                  },
                  "returnParameters": {
                    "id": 41610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41609,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41611,
                        "src": "720:4:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 41608,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "720:4:140",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "719:6:140"
                  },
                  "scope": 41657,
                  "src": "649:77:140",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "@dev Returns the remaining number of tokens that `spender` will be\nallowed to spend on behalf of `owner` through {transferFrom}. This is\nzero by default.\n\t * This value changes when {approve} or {transferFrom} are called.",
                  "id": 41620,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41616,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41613,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 41620,
                        "src": "996:13:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41612,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "996:7:140",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41615,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41620,
                        "src": "1011:15:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41614,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1011:7:140",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "995:32:140"
                  },
                  "returnParameters": {
                    "id": 41619,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41618,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41620,
                        "src": "1051:7:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41617,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1051:7:140",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1050:9:140"
                  },
                  "scope": 41657,
                  "src": "977:83:140",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "@dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n\t * Returns a boolean value indicating whether the operation succeeded.\n\t * IMPORTANT: Beware that changing an allowance with this method brings the risk\nthat someone may use both the old and the new allowance by unfortunate\ntransaction ordering. One possible solution to mitigate this race\ncondition is to first reduce the spender's allowance to 0 and set the\ndesired value afterwards:\nhttps://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n\t * Emits an {Approval} event.",
                  "id": 41629,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41625,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41622,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41629,
                        "src": "1685:15:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41621,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1685:7:140",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41624,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 41629,
                        "src": "1702:14:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41623,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1702:7:140",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1684:33:140"
                  },
                  "returnParameters": {
                    "id": 41628,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41627,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41629,
                        "src": "1736:4:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 41626,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1736:4:140",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1735:6:140"
                  },
                  "scope": 41657,
                  "src": "1668:74:140",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": "@dev Moves `amount` tokens from `sender` to `recipient` using the\nallowance mechanism. `amount` is then deducted from the caller's\nallowance.\n\t * Returns a boolean value indicating whether the operation succeeded.\n\t * Emits a {Transfer} event.",
                  "id": 41640,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41636,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41631,
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41640,
                        "src": "2044:14:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41630,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2044:7:140",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41633,
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 41640,
                        "src": "2062:17:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41632,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2062:7:140",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41635,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 41640,
                        "src": "2083:14:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41634,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2083:7:140",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2040:60:140"
                  },
                  "returnParameters": {
                    "id": 41639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41638,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41640,
                        "src": "2119:4:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 41637,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2119:4:140",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2118:6:140"
                  },
                  "scope": 41657,
                  "src": "2019:106:140",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": "@dev Emitted when `value` tokens are moved from one account (`from`) to\nanother (`to`).\n\t * Note that `value` may be zero.",
                  "id": 41648,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 41647,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41642,
                        "indexed": true,
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 41648,
                        "src": "2288:20:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41641,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2288:7:140",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41644,
                        "indexed": true,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 41648,
                        "src": "2310:18:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41643,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2310:7:140",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41646,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 41648,
                        "src": "2330:13:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41645,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2330:7:140",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2287:57:140"
                  },
                  "src": "2273:72:140"
                },
                {
                  "anonymous": false,
                  "documentation": "@dev Emitted when the allowance of a `spender` for an `owner` is set by\na call to {approve}. `value` is the new allowance.",
                  "id": 41656,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 41655,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41650,
                        "indexed": true,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 41656,
                        "src": "2504:21:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41649,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2504:7:140",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41652,
                        "indexed": true,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41656,
                        "src": "2527:23:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41651,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2527:7:140",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41654,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 41656,
                        "src": "2552:13:140",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41653,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2552:7:140",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2503:63:140"
                  },
                  "src": "2489:78:140"
                }
              ],
              "scope": 41658,
              "src": "176:2393:140"
            }
          ],
          "src": "0:2570:140"
        },
        "id": 140
      },
      "contracts/openzeppelin/Initializable.sol": {
        "ast": {
          "absolutePath": "contracts/openzeppelin/Initializable.sol",
          "exportedSymbols": {
            "Initializable": [
              41699
            ]
          },
          "id": 41700,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 41659,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:141"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\nbehind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an\nexternal initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\nfunction so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\npossible 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\nthat all initializers are idempotent. This is not verified automatically as constructors are by Solidity.",
              "fullyImplemented": true,
              "id": 41699,
              "linearizedBaseContracts": [
                41699
              ],
              "name": "Initializable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 41661,
                  "name": "_initialized",
                  "nodeType": "VariableDeclaration",
                  "scope": 41699,
                  "src": "1063:25:141",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 41660,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1063:4:141",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 41663,
                  "name": "_initializing",
                  "nodeType": "VariableDeclaration",
                  "scope": 41699,
                  "src": "1179:26:141",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 41662,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1179:4:141",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 41697,
                    "nodeType": "Block",
                    "src": "1321:276:141",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 41669,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 41666,
                                "name": "_initializing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41663,
                                "src": "1333:13:141",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 41668,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "1350:13:141",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 41667,
                                  "name": "_initialized",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41661,
                                  "src": "1351:12:141",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1333:30:141",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564",
                              "id": 41670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1365:48:141",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759",
                                "typeString": "literal_string \"Initializable: contract is already initialized\""
                              },
                              "value": "Initializable: contract is already initialized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759",
                                "typeString": "literal_string \"Initializable: contract is already initialized\""
                              }
                            ],
                            "id": 41665,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1325:7:141",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 41671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1325:89:141",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41672,
                        "nodeType": "ExpressionStatement",
                        "src": "1325:89:141"
                      },
                      {
                        "assignments": [
                          41674
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 41674,
                            "name": "isTopLevelCall",
                            "nodeType": "VariableDeclaration",
                            "scope": 41697,
                            "src": "1419:19:141",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 41673,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1419:4:141",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 41677,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 41676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "1441:14:141",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 41675,
                            "name": "_initializing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41663,
                            "src": "1442:13:141",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1419:36:141"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 41678,
                          "name": "isTopLevelCall",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41674,
                          "src": "1463:14:141",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 41688,
                        "nodeType": "IfStatement",
                        "src": "1459:74:141",
                        "trueBody": {
                          "id": 41687,
                          "nodeType": "Block",
                          "src": "1479:54:141",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 41681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 41679,
                                  "name": "_initializing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41663,
                                  "src": "1484:13:141",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 41680,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1500:4:141",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "1484:20:141",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 41682,
                              "nodeType": "ExpressionStatement",
                              "src": "1484:20:141"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 41685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 41683,
                                  "name": "_initialized",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41661,
                                  "src": "1509:12:141",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 41684,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1524:4:141",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "1509:19:141",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 41686,
                              "nodeType": "ExpressionStatement",
                              "src": "1509:19:141"
                            }
                          ]
                        }
                      },
                      {
                        "id": 41689,
                        "nodeType": "PlaceholderStatement",
                        "src": "1537:1:141"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 41690,
                          "name": "isTopLevelCall",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41674,
                          "src": "1547:14:141",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 41696,
                        "nodeType": "IfStatement",
                        "src": "1543:51:141",
                        "trueBody": {
                          "id": 41695,
                          "nodeType": "Block",
                          "src": "1563:31:141",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 41693,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 41691,
                                  "name": "_initializing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41663,
                                  "src": "1568:13:141",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "66616c7365",
                                  "id": 41692,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1584:5:141",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "1568:21:141",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 41694,
                              "nodeType": "ExpressionStatement",
                              "src": "1568:21:141"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@dev Modifier to protect an initializer function from being invoked twice.",
                  "id": 41698,
                  "name": "initializer",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 41664,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1318:2:141"
                  },
                  "src": "1298:299:141",
                  "visibility": "internal"
                }
              ],
              "scope": 41700,
              "src": "968:631:141"
            }
          ],
          "src": "0:1600:141"
        },
        "id": 141
      },
      "contracts/openzeppelin/Ownable.sol": {
        "ast": {
          "absolutePath": "contracts/openzeppelin/Ownable.sol",
          "exportedSymbols": {
            "Ownable": [
              41798
            ]
          },
          "id": 41799,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 41701,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:142"
            },
            {
              "absolutePath": "contracts/openzeppelin/Context.sol",
              "file": "./Context.sol",
              "id": 41702,
              "nodeType": "ImportDirective",
              "scope": 41799,
              "sourceUnit": 41126,
              "src": "33:23:142",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 41703,
                    "name": "Context",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41125,
                    "src": "439:7:142",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Context_$41125",
                      "typeString": "contract Context"
                    }
                  },
                  "id": 41704,
                  "nodeType": "InheritanceSpecifier",
                  "src": "439:7:142"
                }
              ],
              "contractDependencies": [
                41125
              ],
              "contractKind": "contract",
              "documentation": "@dev Contract module which provides a basic access control mechanism, where\nthere is an account (an owner) that can be granted exclusive access to\nspecific functions.\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\nthe owner.",
              "fullyImplemented": true,
              "id": 41798,
              "linearizedBaseContracts": [
                41798,
                41125
              ],
              "name": "Ownable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 41706,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 41798,
                  "src": "450:22:142",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 41705,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "450:7:142",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 41712,
                  "name": "OwnershipTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 41711,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41708,
                        "indexed": true,
                        "name": "previousOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 41712,
                        "src": "503:29:142",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41707,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "503:7:142",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41710,
                        "indexed": true,
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 41712,
                        "src": "534:24:142",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41709,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "534:7:142",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "502:57:142"
                  },
                  "src": "476:84:142"
                },
                {
                  "body": {
                    "id": 41731,
                    "nodeType": "Block",
                    "src": "673:114:142",
                    "statements": [
                      {
                        "assignments": [
                          41716
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 41716,
                            "name": "msgSender",
                            "nodeType": "VariableDeclaration",
                            "scope": 41731,
                            "src": "677:17:142",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 41715,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "677:7:142",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 41719,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 41717,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41113,
                            "src": "697:10:142",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 41718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "697:12:142",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "677:32:142"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 41720,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41706,
                            "src": "713:6:142",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 41721,
                            "name": "msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41716,
                            "src": "722:9:142",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "713:18:142",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 41723,
                        "nodeType": "ExpressionStatement",
                        "src": "713:18:142"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 41726,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "769:1:142",
                                  "subdenomination": null,
                                  "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": 41725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "761:7:142",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 41727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "761:10:142",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41728,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41716,
                              "src": "773:9:142",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 41724,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41712,
                            "src": "740:20:142",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 41729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "740:43:142",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41730,
                        "nodeType": "EmitStatement",
                        "src": "735:48:142"
                      }
                    ]
                  },
                  "documentation": "@dev Initializes the contract setting the deployer as the initial owner.",
                  "id": 41732,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41713,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "661:2:142"
                  },
                  "returnParameters": {
                    "id": 41714,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "673:0:142"
                  },
                  "scope": 41798,
                  "src": "650:137:142",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41739,
                    "nodeType": "Block",
                    "src": "898:21:142",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41737,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41706,
                          "src": "909:6:142",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 41736,
                        "id": 41738,
                        "nodeType": "Return",
                        "src": "902:13:142"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the address of the current owner.",
                  "id": 41740,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41733,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "865:2:142"
                  },
                  "returnParameters": {
                    "id": 41736,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41735,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41740,
                        "src": "889:7:142",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41734,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "889:7:142",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "888:9:142"
                  },
                  "scope": 41798,
                  "src": "851:68:142",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41749,
                    "nodeType": "Block",
                    "src": "1016:47:142",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 41743,
                                "name": "isOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41761,
                                "src": "1028:7:142",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                  "typeString": "function () view returns (bool)"
                                }
                              },
                              "id": 41744,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1028:9:142",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 41745,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1039:14:142",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 41742,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1020:7:142",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 41746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1020:34:142",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41747,
                        "nodeType": "ExpressionStatement",
                        "src": "1020:34:142"
                      },
                      {
                        "id": 41748,
                        "nodeType": "PlaceholderStatement",
                        "src": "1058:1:142"
                      }
                    ]
                  },
                  "documentation": "@dev Throws if called by any account other than the owner.",
                  "id": 41750,
                  "name": "onlyOwner",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 41741,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1013:2:142"
                  },
                  "src": "995:68:142",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41760,
                    "nodeType": "Block",
                    "src": "1180:37:142",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 41758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 41755,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41113,
                              "src": "1191:10:142",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 41756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1191:12:142",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 41757,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41706,
                            "src": "1207:6:142",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1191:22:142",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 41754,
                        "id": 41759,
                        "nodeType": "Return",
                        "src": "1184:29:142"
                      }
                    ]
                  },
                  "documentation": "@dev Returns true if the caller is the current owner.",
                  "id": 41761,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isOwner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41751,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1150:2:142"
                  },
                  "returnParameters": {
                    "id": 41754,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41753,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 41761,
                        "src": "1174:4:142",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 41752,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1174:4:142",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1173:6:142"
                  },
                  "scope": 41798,
                  "src": "1134:83:142",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41772,
                    "nodeType": "Block",
                    "src": "1413:36:142",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41769,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41763,
                              "src": "1436:8:142",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 41768,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41797,
                            "src": "1417:18:142",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 41770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1417:28:142",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41771,
                        "nodeType": "ExpressionStatement",
                        "src": "1417:28:142"
                      }
                    ]
                  },
                  "documentation": "@dev Transfers ownership of the contract to a new account (`newOwner`).\nCan only be called by the current owner.",
                  "id": 41773,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 41766,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 41765,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1403:9:142",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1403:9:142"
                    }
                  ],
                  "name": "transferOwnership",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41764,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41763,
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 41773,
                        "src": "1378:16:142",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41762,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1378:7:142",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1377:18:142"
                  },
                  "returnParameters": {
                    "id": 41767,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1413:0:142"
                  },
                  "scope": 41798,
                  "src": "1351:98:142",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 41796,
                    "nodeType": "Block",
                    "src": "1593:149:142",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 41783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 41779,
                                "name": "newOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41775,
                                "src": "1605:8:142",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 41781,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1625:1:142",
                                    "subdenomination": null,
                                    "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": 41780,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1617:7:142",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 41782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1617:10:142",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1605:22:142",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                              "id": 41784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1629:40:142",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              },
                              "value": "Ownable: new owner is the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              }
                            ],
                            "id": 41778,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1597:7:142",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 41785,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1597:73:142",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41786,
                        "nodeType": "ExpressionStatement",
                        "src": "1597:73:142"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41788,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41706,
                              "src": "1700:6:142",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 41789,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41775,
                              "src": "1708:8:142",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 41787,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41712,
                            "src": "1679:20:142",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 41790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1679:38:142",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41791,
                        "nodeType": "EmitStatement",
                        "src": "1674:43:142"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41794,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 41792,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41706,
                            "src": "1721:6:142",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 41793,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41775,
                            "src": "1730:8:142",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1721:17:142",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 41795,
                        "nodeType": "ExpressionStatement",
                        "src": "1721:17:142"
                      }
                    ]
                  },
                  "documentation": "@dev Transfers ownership of the contract to a new account (`newOwner`).",
                  "id": 41797,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferOwnership",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41775,
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 41797,
                        "src": "1566:16:142",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41774,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1566:7:142",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1565:18:142"
                  },
                  "returnParameters": {
                    "id": 41777,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1593:0:142"
                  },
                  "scope": 41798,
                  "src": "1538:204:142",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 41799,
              "src": "419:1325:142"
            }
          ],
          "src": "0:1745:142"
        },
        "id": 142
      },
      "contracts/openzeppelin/ReentrancyGuard.sol": {
        "ast": {
          "absolutePath": "contracts/openzeppelin/ReentrancyGuard.sol",
          "exportedSymbols": {
            "ReentrancyGuard": [
              41829
            ]
          },
          "id": 41830,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 41800,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:143"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title Helps contracts guard against reentrancy attacks.\n@author Remco Bloemen <remco@2π.com>, Eenae <alexey@mixbytes.io>\n@dev If you mark a function `nonReentrant`, you should also\nmark it `external`.",
              "fullyImplemented": true,
              "id": 41829,
              "linearizedBaseContracts": [
                41829
              ],
              "name": "ReentrancyGuard",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 41803,
                  "name": "REENTRANCY_GUARD_FREE",
                  "nodeType": "VariableDeclaration",
                  "scope": 41829,
                  "src": "443:51:143",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 41801,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "443:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 41802,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "493:1:143",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 41806,
                  "name": "REENTRANCY_GUARD_LOCKED",
                  "nodeType": "VariableDeclaration",
                  "scope": 41829,
                  "src": "540:53:143",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 41804,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "540:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 41805,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "592:1:143",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 41809,
                  "name": "reentrancyLock",
                  "nodeType": "VariableDeclaration",
                  "scope": 41829,
                  "src": "661:55:143",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 41807,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "661:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "id": 41808,
                    "name": "REENTRANCY_GUARD_FREE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 41803,
                    "src": "695:21:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41827,
                    "nodeType": "Block",
                    "src": "1113:163:143",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 41814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 41812,
                                "name": "reentrancyLock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41809,
                                "src": "1125:14:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 41813,
                                "name": "REENTRANCY_GUARD_FREE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41803,
                                "src": "1143:21:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1125:39:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6e6f6e5265656e7472616e74",
                              "id": 41815,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1166:14:143",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d4d824a0cb85932bce2008d0970b61f5e00c87b10638bd01486d81160e65132e",
                                "typeString": "literal_string \"nonReentrant\""
                              },
                              "value": "nonReentrant"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d4d824a0cb85932bce2008d0970b61f5e00c87b10638bd01486d81160e65132e",
                                "typeString": "literal_string \"nonReentrant\""
                              }
                            ],
                            "id": 41811,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1117:7:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 41816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1117:64:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41817,
                        "nodeType": "ExpressionStatement",
                        "src": "1117:64:143"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 41818,
                            "name": "reentrancyLock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41809,
                            "src": "1185:14:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 41819,
                            "name": "REENTRANCY_GUARD_LOCKED",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41806,
                            "src": "1202:23:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1185:40:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 41821,
                        "nodeType": "ExpressionStatement",
                        "src": "1185:40:143"
                      },
                      {
                        "id": 41822,
                        "nodeType": "PlaceholderStatement",
                        "src": "1229:1:143"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 41825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 41823,
                            "name": "reentrancyLock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41809,
                            "src": "1234:14:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 41824,
                            "name": "REENTRANCY_GUARD_FREE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41803,
                            "src": "1251:21:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1234:38:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 41826,
                        "nodeType": "ExpressionStatement",
                        "src": "1234:38:143"
                      }
                    ]
                  },
                  "documentation": "@dev Prevents a contract from calling itself, directly or indirectly.\nIf you mark a function `nonReentrant`, you should also\nmark it `external`. Calling one `nonReentrant` function from\nanother is not supported. Instead, you can implement a\n`private` function doing the actual work, and an `external`\nwrapper marked as `nonReentrant`.",
                  "id": 41828,
                  "name": "nonReentrant",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 41810,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1110:2:143"
                  },
                  "src": "1089:187:143",
                  "visibility": "internal"
                }
              ],
              "scope": 41830,
              "src": "256:1022:143"
            }
          ],
          "src": "0:1279:143"
        },
        "id": 143
      },
      "contracts/openzeppelin/SafeERC20.sol": {
        "ast": {
          "absolutePath": "contracts/openzeppelin/SafeERC20.sol",
          "exportedSymbols": {
            "SafeERC20": [
              42049
            ]
          },
          "id": 42050,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 41831,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:144"
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "./SafeMath.sol",
              "id": 41832,
              "nodeType": "ImportDirective",
              "scope": 42050,
              "sourceUnit": 42310,
              "src": "33:24:144",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Address.sol",
              "file": "./Address.sol",
              "id": 41833,
              "nodeType": "ImportDirective",
              "scope": 42050,
              "sourceUnit": 41099,
              "src": "58:23:144",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 41834,
              "nodeType": "ImportDirective",
              "scope": 42050,
              "sourceUnit": 24700,
              "src": "82:34:144",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.",
              "fullyImplemented": true,
              "id": 42049,
              "linearizedBaseContracts": [
                42049
              ],
              "name": "SafeERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 41837,
                  "libraryName": {
                    "contractScope": null,
                    "id": 41835,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "602:8:144",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "596:27:144",
                  "typeName": {
                    "id": 41836,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "615:7:144",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 41840,
                  "libraryName": {
                    "contractScope": null,
                    "id": 41838,
                    "name": "Address",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41098,
                    "src": "631:7:144",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Address_$41098",
                      "typeString": "library Address"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "625:26:144",
                  "typeName": {
                    "id": 41839,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "643:7:144",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "body": {
                    "id": 41861,
                    "nodeType": "Block",
                    "src": "735:93:144",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41850,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41842,
                              "src": "758:5:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 41853,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41842,
                                      "src": "788:5:144",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 41854,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transfer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24671,
                                    "src": "788:14:144",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 41855,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "788:23:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 41856,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41844,
                                  "src": "813:2:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 41857,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41846,
                                  "src": "817:5:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 41851,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "765:3:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 41852,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "765:22:144",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 41858,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "765:58:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 41849,
                            "name": "callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42048,
                            "src": "739:18:144",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IERC20,bytes memory)"
                            }
                          },
                          "id": 41859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "739:85:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41860,
                        "nodeType": "ExpressionStatement",
                        "src": "739:85:144"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 41862,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41847,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41842,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 41862,
                        "src": "679:12:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 41841,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24699,
                          "src": "679:6:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41844,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 41862,
                        "src": "695:10:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41843,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "695:7:144",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41846,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 41862,
                        "src": "709:13:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41845,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "709:7:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "675:50:144"
                  },
                  "returnParameters": {
                    "id": 41848,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "735:0:144"
                  },
                  "scope": 42049,
                  "src": "654:174:144",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41886,
                    "nodeType": "Block",
                    "src": "932:103:144",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41874,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41864,
                              "src": "955:5:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 41877,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41864,
                                      "src": "985:5:144",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 41878,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transferFrom",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24682,
                                    "src": "985:18:144",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 41879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "985:27:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 41880,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41866,
                                  "src": "1014:4:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 41881,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41868,
                                  "src": "1020:2:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 41882,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41870,
                                  "src": "1024:5:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 41875,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "962:3:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 41876,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "962:22:144",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 41883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "962:68:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 41873,
                            "name": "callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42048,
                            "src": "936:18:144",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IERC20,bytes memory)"
                            }
                          },
                          "id": 41884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "936:95:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41885,
                        "nodeType": "ExpressionStatement",
                        "src": "936:95:144"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 41887,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41871,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41864,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 41887,
                        "src": "860:12:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 41863,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24699,
                          "src": "860:6:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41866,
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 41887,
                        "src": "876:12:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41865,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "876:7:144",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41868,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 41887,
                        "src": "892:10:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41867,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "892:7:144",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41870,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 41887,
                        "src": "906:13:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41869,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "906:7:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "856:66:144"
                  },
                  "returnParameters": {
                    "id": 41872,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "932:0:144"
                  },
                  "scope": 42049,
                  "src": "831:204:144",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41927,
                    "nodeType": "Block",
                    "src": "1123:476:144",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 41911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 41899,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 41897,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41893,
                                      "src": "1382:5:144",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 41898,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1391:1:144",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1382:10:144",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 41900,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1381:12:144",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 41909,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 41904,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 45102,
                                              "src": "1422:4:144",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_SafeERC20_$42049",
                                                "typeString": "library SafeERC20"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_SafeERC20_$42049",
                                                "typeString": "library SafeERC20"
                                              }
                                            ],
                                            "id": 41903,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1414:7:144",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": "address"
                                          },
                                          "id": 41905,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1414:13:144",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 41906,
                                          "name": "spender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 41891,
                                          "src": "1429:7:144",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 41901,
                                          "name": "token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 41889,
                                          "src": "1398:5:144",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$24699",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 41902,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "allowance",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 24653,
                                        "src": "1398:15:144",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                          "typeString": "function (address,address) view external returns (uint256)"
                                        }
                                      },
                                      "id": 41907,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1398:39:144",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 41908,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1441:1:144",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1398:44:144",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 41910,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1397:46:144",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1381:62:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365",
                              "id": 41912,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1445:56:144",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
                                "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
                              },
                              "value": "SafeERC20: approve from non-zero to non-zero allowance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
                                "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
                              }
                            ],
                            "id": 41896,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1373:7:144",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 41913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1373:129:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41914,
                        "nodeType": "ExpressionStatement",
                        "src": "1373:129:144"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41916,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41889,
                              "src": "1525:5:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 41919,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41889,
                                      "src": "1555:5:144",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 41920,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "approve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24662,
                                    "src": "1555:13:144",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 41921,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1555:22:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 41922,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41891,
                                  "src": "1579:7:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 41923,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41893,
                                  "src": "1588:5:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 41917,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "1532:3:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 41918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1532:22:144",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 41924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1532:62:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 41915,
                            "name": "callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42048,
                            "src": "1506:18:144",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IERC20,bytes memory)"
                            }
                          },
                          "id": 41925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1506:89:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41926,
                        "nodeType": "ExpressionStatement",
                        "src": "1506:89:144"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 41928,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeApprove",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41894,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41889,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 41928,
                        "src": "1062:12:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 41888,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24699,
                          "src": "1062:6:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41891,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41928,
                        "src": "1078:15:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41890,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1078:7:144",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41893,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 41928,
                        "src": "1097:13:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41892,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1097:7:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1058:55:144"
                  },
                  "returnParameters": {
                    "id": 41895,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1123:0:144"
                  },
                  "scope": 42049,
                  "src": "1038:561:144",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41962,
                    "nodeType": "Block",
                    "src": "1697:181:144",
                    "statements": [
                      {
                        "assignments": [
                          41938
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 41938,
                            "name": "newAllowance",
                            "nodeType": "VariableDeclaration",
                            "scope": 41962,
                            "src": "1701:20:144",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 41937,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1701:7:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 41949,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41947,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41934,
                              "src": "1768:5:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 41942,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45102,
                                      "src": "1748:4:144",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_SafeERC20_$42049",
                                        "typeString": "library SafeERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_SafeERC20_$42049",
                                        "typeString": "library SafeERC20"
                                      }
                                    ],
                                    "id": 41941,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1740:7:144",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 41943,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1740:13:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 41944,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41932,
                                  "src": "1755:7:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 41939,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41930,
                                  "src": "1724:5:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 41940,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "allowance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24653,
                                "src": "1724:15:144",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address,address) view external returns (uint256)"
                                }
                              },
                              "id": 41945,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1724:39:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 41946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42076,
                            "src": "1724:43:144",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 41948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1724:50:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1701:73:144"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41951,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41930,
                              "src": "1797:5:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 41954,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41930,
                                      "src": "1827:5:144",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 41955,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "approve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24662,
                                    "src": "1827:13:144",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 41956,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1827:22:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 41957,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41932,
                                  "src": "1851:7:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 41958,
                                  "name": "newAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41938,
                                  "src": "1860:12:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 41952,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "1804:3:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 41953,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1804:22:144",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 41959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1804:69:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 41950,
                            "name": "callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42048,
                            "src": "1778:18:144",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IERC20,bytes memory)"
                            }
                          },
                          "id": 41960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1778:96:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41961,
                        "nodeType": "ExpressionStatement",
                        "src": "1778:96:144"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 41963,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeIncreaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41935,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41930,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 41963,
                        "src": "1636:12:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 41929,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24699,
                          "src": "1636:6:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41932,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41963,
                        "src": "1652:15:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41931,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1652:7:144",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41934,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 41963,
                        "src": "1671:13:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41933,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1671:7:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1632:55:144"
                  },
                  "returnParameters": {
                    "id": 41936,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1697:0:144"
                  },
                  "scope": 42049,
                  "src": "1602:276:144",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 41998,
                    "nodeType": "Block",
                    "src": "1976:226:144",
                    "statements": [
                      {
                        "assignments": [
                          41973
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 41973,
                            "name": "newAllowance",
                            "nodeType": "VariableDeclaration",
                            "scope": 41998,
                            "src": "1980:20:144",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 41972,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1980:7:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 41985,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41982,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41969,
                              "src": "2047:5:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                              "id": 41983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2054:43:144",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a",
                                "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""
                              },
                              "value": "SafeERC20: decreased allowance below zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a",
                                "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 41977,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45102,
                                      "src": "2027:4:144",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_SafeERC20_$42049",
                                        "typeString": "library SafeERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_SafeERC20_$42049",
                                        "typeString": "library SafeERC20"
                                      }
                                    ],
                                    "id": 41976,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2019:7:144",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 41978,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2019:13:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 41979,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41967,
                                  "src": "2034:7:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 41974,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41965,
                                  "src": "2003:5:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 41975,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "allowance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24653,
                                "src": "2003:15:144",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address,address) view external returns (uint256)"
                                }
                              },
                              "id": 41980,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2003:39:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 41981,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42119,
                            "src": "2003:43:144",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 41984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2003:95:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1980:118:144"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 41987,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41965,
                              "src": "2121:5:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 41990,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41965,
                                      "src": "2151:5:144",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 41991,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "approve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24662,
                                    "src": "2151:13:144",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 41992,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2151:22:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 41993,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41967,
                                  "src": "2175:7:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 41994,
                                  "name": "newAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41973,
                                  "src": "2184:12:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 41988,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "2128:3:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 41989,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2128:22:144",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 41995,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2128:69:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 41986,
                            "name": "callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42048,
                            "src": "2102:18:144",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IERC20,bytes memory)"
                            }
                          },
                          "id": 41996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2102:96:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41997,
                        "nodeType": "ExpressionStatement",
                        "src": "2102:96:144"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 41999,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeDecreaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 41970,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41965,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 41999,
                        "src": "1915:12:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 41964,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24699,
                          "src": "1915:6:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41967,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 41999,
                        "src": "1931:15:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41966,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1931:7:144",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41969,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 41999,
                        "src": "1950:13:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 41968,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1950:7:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1911:55:144"
                  },
                  "returnParameters": {
                    "id": 41971,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1976:0:144"
                  },
                  "scope": 42049,
                  "src": "1881:321:144",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42047,
                    "nodeType": "Block",
                    "src": "2633:930:144",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 42008,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42001,
                                      "src": "3119:5:144",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    ],
                                    "id": 42007,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3111:7:144",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 42009,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3111:14:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 42010,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 41050,
                                "src": "3111:25:144",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 42011,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3111:27:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 42012,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3140:33:144",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d",
                                "typeString": "literal_string \"SafeERC20: call to non-contract\""
                              },
                              "value": "SafeERC20: call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d",
                                "typeString": "literal_string \"SafeERC20: call to non-contract\""
                              }
                            ],
                            "id": 42006,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3103:7:144",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3103:71:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42014,
                        "nodeType": "ExpressionStatement",
                        "src": "3103:71:144"
                      },
                      {
                        "assignments": [
                          42016,
                          42018
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42016,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 42047,
                            "src": "3233:12:144",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 42015,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "3233:4:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 42018,
                            "name": "returndata",
                            "nodeType": "VariableDeclaration",
                            "scope": 42047,
                            "src": "3247:23:144",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 42017,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3247:5:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42025,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 42023,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42003,
                              "src": "3294:4:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 42020,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42001,
                                  "src": "3282:5:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 42019,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3274:7:144",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 42021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3274:14:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 42022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3274:19:144",
                            "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": 42024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3274:25:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3232:67:144"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 42027,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42016,
                              "src": "3311:7:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564",
                              "id": 42028,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3320:34:144",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
                                "typeString": "literal_string \"SafeERC20: low-level call failed\""
                              },
                              "value": "SafeERC20: low-level call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
                                "typeString": "literal_string \"SafeERC20: low-level call failed\""
                              }
                            ],
                            "id": 42026,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3303:7:144",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3303:52:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42030,
                        "nodeType": "ExpressionStatement",
                        "src": "3303:52:144"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 42034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 42031,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42018,
                              "src": "3364:10:144",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 42032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3364:17:144",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 42033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3384:1:144",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3364:21:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 42046,
                        "nodeType": "IfStatement",
                        "src": "3360:200:144",
                        "trueBody": {
                          "id": 42045,
                          "nodeType": "Block",
                          "src": "3387:173:144",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 42038,
                                        "name": "returndata",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42018,
                                        "src": "3489:10:144",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 42039,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3502:4:144",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": "bool"
                                          }
                                        ],
                                        "id": 42040,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "3501:6:144",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 42036,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44981,
                                        "src": "3478:3:144",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 42037,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "3478:10:144",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 42041,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3478:30:144",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564",
                                    "id": 42042,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3510:44:144",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
                                      "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
                                    },
                                    "value": "SafeERC20: ERC20 operation did not succeed"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
                                      "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
                                    }
                                  ],
                                  "id": 42035,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "3470:7:144",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 42043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3470:85:144",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 42044,
                              "nodeType": "ExpressionStatement",
                              "src": "3470:85:144"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).",
                  "id": 42048,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "callOptionalReturn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42004,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42001,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 42048,
                        "src": "2592:12:144",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 42000,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24699,
                          "src": "2592:6:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42003,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 42048,
                        "src": "2606:17:144",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 42002,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2606:5:144",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2591:33:144"
                  },
                  "returnParameters": {
                    "id": 42005,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2633:0:144"
                  },
                  "scope": 42049,
                  "src": "2564:999:144",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "private"
                }
              ],
              "scope": 42050,
              "src": "575:2990:144"
            }
          ],
          "src": "0:3566:144"
        },
        "id": 144
      },
      "contracts/openzeppelin/SafeMath.sol": {
        "ast": {
          "absolutePath": "contracts/openzeppelin/SafeMath.sol",
          "exportedSymbols": {
            "SafeMath": [
              42309
            ]
          },
          "id": 42310,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 42051,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:145"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": "@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.",
              "fullyImplemented": true,
              "id": 42309,
              "linearizedBaseContracts": [
                42309
              ],
              "name": "SafeMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 42075,
                    "nodeType": "Block",
                    "src": "879:88:145",
                    "statements": [
                      {
                        "assignments": [
                          42061
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42061,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 42075,
                            "src": "883:9:145",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 42060,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "883:7:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42065,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 42064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42062,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42053,
                            "src": "895:1:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 42063,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42055,
                            "src": "899:1:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "895:5:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "883:17:145"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 42069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 42067,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42061,
                                "src": "912:1:145",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 42068,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42053,
                                "src": "917:1:145",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "912:6:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77",
                              "id": 42070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "920:29:145",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a",
                                "typeString": "literal_string \"SafeMath: addition overflow\""
                              },
                              "value": "SafeMath: addition overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a",
                                "typeString": "literal_string \"SafeMath: addition overflow\""
                              }
                            ],
                            "id": 42066,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "904:7:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "904:46:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42072,
                        "nodeType": "ExpressionStatement",
                        "src": "904:46:145"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 42073,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42061,
                          "src": "962:1:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 42059,
                        "id": 42074,
                        "nodeType": "Return",
                        "src": "955:8:145"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n\t * Counterpart to Solidity's `+` operator.\n\t * Requirements:\n- Addition cannot overflow.",
                  "id": 42076,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42056,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42053,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42076,
                        "src": "825:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42052,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "825:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42055,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42076,
                        "src": "836:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42054,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "836:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "824:22:145"
                  },
                  "returnParameters": {
                    "id": 42059,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42058,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42076,
                        "src": "870:7:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42057,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "870:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "869:9:145"
                  },
                  "scope": 42309,
                  "src": "812:155:145",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42091,
                    "nodeType": "Block",
                    "src": "1268:58:145",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 42086,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42078,
                              "src": "1283:1:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42087,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42080,
                              "src": "1286:1:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77",
                              "id": 42088,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1289:32:145",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862",
                                "typeString": "literal_string \"SafeMath: subtraction overflow\""
                              },
                              "value": "SafeMath: subtraction overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862",
                                "typeString": "literal_string \"SafeMath: subtraction overflow\""
                              }
                            ],
                            "id": 42085,
                            "name": "sub",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              42092,
                              42119
                            ],
                            "referencedDeclaration": 42119,
                            "src": "1279:3:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 42089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1279:43:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 42084,
                        "id": 42090,
                        "nodeType": "Return",
                        "src": "1272:50:145"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n\t * Counterpart to Solidity's `-` operator.\n\t * Requirements:\n- Subtraction cannot overflow.",
                  "id": 42092,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42081,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42078,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42092,
                        "src": "1214:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42077,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1214:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42080,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42092,
                        "src": "1225:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42079,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1225:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1213:22:145"
                  },
                  "returnParameters": {
                    "id": 42084,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42083,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42092,
                        "src": "1259:7:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42082,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1259:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1258:9:145"
                  },
                  "scope": 42309,
                  "src": "1201:125:145",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42118,
                    "nodeType": "Block",
                    "src": "1718:71:145",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 42106,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 42104,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42096,
                                "src": "1730:1:145",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 42105,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42094,
                                "src": "1735:1:145",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1730:6:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42107,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42098,
                              "src": "1738:12:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 42103,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1722:7:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1722:29:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42109,
                        "nodeType": "ExpressionStatement",
                        "src": "1722:29:145"
                      },
                      {
                        "assignments": [
                          42111
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42111,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 42118,
                            "src": "1755:9:145",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 42110,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1755:7:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42115,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 42114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42112,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42094,
                            "src": "1767:1:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 42113,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42096,
                            "src": "1771:1:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1767:5:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1755:17:145"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 42116,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42111,
                          "src": "1784:1:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 42102,
                        "id": 42117,
                        "nodeType": "Return",
                        "src": "1777:8:145"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the subtraction of two unsigned integers, reverting with custom message on\noverflow (when the result is negative).\n\t * Counterpart to Solidity's `-` operator.\n\t * Requirements:\n- Subtraction cannot overflow.\n\t * _Available since v2.4.0._",
                  "id": 42119,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42099,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42094,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42119,
                        "src": "1630:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42093,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1630:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42096,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42119,
                        "src": "1643:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42095,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1643:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42098,
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "scope": 42119,
                        "src": "1656:26:145",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 42097,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1656:6:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1626:59:145"
                  },
                  "returnParameters": {
                    "id": 42102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42101,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42119,
                        "src": "1709:7:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1709:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1708:9:145"
                  },
                  "scope": 42309,
                  "src": "1614:175:145",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42152,
                    "nodeType": "Block",
                    "src": "2066:332:145",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 42130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42128,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42121,
                            "src": "2274:1:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 42129,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2279:1:145",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2274:6:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 42134,
                        "nodeType": "IfStatement",
                        "src": "2270:30:145",
                        "trueBody": {
                          "id": 42133,
                          "nodeType": "Block",
                          "src": "2282:18:145",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 42131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2294:1:145",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 42127,
                              "id": 42132,
                              "nodeType": "Return",
                              "src": "2287:8:145"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          42136
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42136,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 42152,
                            "src": "2304:9:145",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 42135,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2304:7:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42140,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 42139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42137,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42121,
                            "src": "2316:1:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 42138,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42123,
                            "src": "2320:1:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2316:5:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2304:17:145"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 42146,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 42144,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 42142,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42136,
                                  "src": "2333:1:145",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 42143,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42121,
                                  "src": "2337:1:145",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2333:5:145",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 42145,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42123,
                                "src": "2342:1:145",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2333:10:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
                              "id": 42147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2345:35:145",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
                                "typeString": "literal_string \"SafeMath: multiplication overflow\""
                              },
                              "value": "SafeMath: multiplication overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
                                "typeString": "literal_string \"SafeMath: multiplication overflow\""
                              }
                            ],
                            "id": 42141,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2325:7:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2325:56:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42149,
                        "nodeType": "ExpressionStatement",
                        "src": "2325:56:145"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 42150,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42136,
                          "src": "2393:1:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 42127,
                        "id": 42151,
                        "nodeType": "Return",
                        "src": "2386:8:145"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n\t * Counterpart to Solidity's `*` operator.\n\t * Requirements:\n- Multiplication cannot overflow.",
                  "id": 42153,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42124,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42121,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42153,
                        "src": "2012:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42120,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2012:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42123,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42153,
                        "src": "2023:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42122,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2023:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2011:22:145"
                  },
                  "returnParameters": {
                    "id": 42127,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42126,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42153,
                        "src": "2057:7:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42125,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2057:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2056:9:145"
                  },
                  "scope": 42309,
                  "src": "1999:399:145",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42168,
                    "nodeType": "Block",
                    "src": "2884:54:145",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 42163,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42155,
                              "src": "2899:1:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42164,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42157,
                              "src": "2902:1:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f",
                              "id": 42165,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2905:28:145",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
                                "typeString": "literal_string \"SafeMath: division by zero\""
                              },
                              "value": "SafeMath: division by zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
                                "typeString": "literal_string \"SafeMath: division by zero\""
                              }
                            ],
                            "id": 42162,
                            "name": "div",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              42169,
                              42196
                            ],
                            "referencedDeclaration": 42196,
                            "src": "2895:3:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 42166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2895:39:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 42161,
                        "id": 42167,
                        "nodeType": "Return",
                        "src": "2888:46:145"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n\t * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n\t * Requirements:\n- The divisor cannot be zero.",
                  "id": 42169,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42155,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42169,
                        "src": "2830:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42154,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2830:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42157,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42169,
                        "src": "2841:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42156,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2841:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2829:22:145"
                  },
                  "returnParameters": {
                    "id": 42161,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42160,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42169,
                        "src": "2875:7:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42159,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2875:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2874:9:145"
                  },
                  "scope": 42309,
                  "src": "2817:121:145",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42195,
                    "nodeType": "Block",
                    "src": "3515:211:145",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 42183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 42181,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42173,
                                "src": "3587:1:145",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 42182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3592:1:145",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3587:6:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42184,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42175,
                              "src": "3595:12:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 42180,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3579:7:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3579:29:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42186,
                        "nodeType": "ExpressionStatement",
                        "src": "3579:29:145"
                      },
                      {
                        "assignments": [
                          42188
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42188,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 42195,
                            "src": "3612:9:145",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 42187,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3612:7:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42192,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 42191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42189,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42171,
                            "src": "3624:1:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 42190,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42173,
                            "src": "3628:1:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3624:5:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3612:17:145"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 42193,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42188,
                          "src": "3721:1:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 42179,
                        "id": 42194,
                        "nodeType": "Return",
                        "src": "3714:8:145"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the integer division of two unsigned integers. Reverts with custom message on\ndivision by zero. The result is rounded towards zero.\n\t * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n\t * Requirements:\n- The divisor cannot be zero.\n\t * _Available since v2.4.0._",
                  "id": 42196,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42176,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42171,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42196,
                        "src": "3427:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42170,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3427:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42173,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42196,
                        "src": "3440:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42172,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3440:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42175,
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "scope": 42196,
                        "src": "3453:26:145",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 42174,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3453:6:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3423:59:145"
                  },
                  "returnParameters": {
                    "id": 42179,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42178,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42196,
                        "src": "3506:7:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42177,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3506:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3505:9:145"
                  },
                  "scope": 42309,
                  "src": "3411:315:145",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42211,
                    "nodeType": "Block",
                    "src": "3892:58:145",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 42206,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42198,
                              "src": "3911:1:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42207,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42200,
                              "src": "3914:1:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f",
                              "id": 42208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3917:28:145",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
                                "typeString": "literal_string \"SafeMath: division by zero\""
                              },
                              "value": "SafeMath: division by zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
                                "typeString": "literal_string \"SafeMath: division by zero\""
                              }
                            ],
                            "id": 42205,
                            "name": "divCeil",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              42212,
                              42252
                            ],
                            "referencedDeclaration": 42252,
                            "src": "3903:7:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 42209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3903:43:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 42204,
                        "id": 42210,
                        "nodeType": "Return",
                        "src": "3896:50:145"
                      }
                    ]
                  },
                  "documentation": "@dev Integer division of two numbers, rounding up and truncating the quotient",
                  "id": 42212,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "divCeil",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42201,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42198,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42212,
                        "src": "3838:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42197,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3838:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42200,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42212,
                        "src": "3849:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42199,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3849:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3837:22:145"
                  },
                  "returnParameters": {
                    "id": 42204,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42203,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42212,
                        "src": "3883:7:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42202,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3883:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3882:9:145"
                  },
                  "scope": 42309,
                  "src": "3821:129:145",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42251,
                    "nodeType": "Block",
                    "src": "4153:177:145",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 42226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 42224,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42216,
                                "src": "4225:1:145",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 42225,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4230:1:145",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4225:6:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42227,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42218,
                              "src": "4233:12:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 42223,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4217:7:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4217:29:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42229,
                        "nodeType": "ExpressionStatement",
                        "src": "4217:29:145"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 42232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42230,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42214,
                            "src": "4255:1:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 42231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4260:1:145",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4255:6:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 42236,
                        "nodeType": "IfStatement",
                        "src": "4251:30:145",
                        "trueBody": {
                          "id": 42235,
                          "nodeType": "Block",
                          "src": "4263:18:145",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 42233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4275:1:145",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 42222,
                              "id": 42234,
                              "nodeType": "Return",
                              "src": "4268:8:145"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          42238
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42238,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 42251,
                            "src": "4284:9:145",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 42237,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4284:7:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42248,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 42247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 42244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 42241,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42239,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42214,
                                        "src": "4298:1:145",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 42240,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4302:1:145",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "4298:5:145",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 42242,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "4297:7:145",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 42243,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42216,
                                  "src": "4307:1:145",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4297:11:145",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 42245,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4296:13:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 42246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4312:1:145",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4296:17:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4284:29:145"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 42249,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42238,
                          "src": "4325:1:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 42222,
                        "id": 42250,
                        "nodeType": "Return",
                        "src": "4318:8:145"
                      }
                    ]
                  },
                  "documentation": "@dev Integer division of two numbers, rounding up and truncating the quotient",
                  "id": 42252,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "divCeil",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42219,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42214,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42252,
                        "src": "4065:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42213,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4065:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42216,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42252,
                        "src": "4078:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42215,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4078:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42218,
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "scope": 42252,
                        "src": "4091:26:145",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 42217,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4091:6:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4061:59:145"
                  },
                  "returnParameters": {
                    "id": 42222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42221,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42252,
                        "src": "4144:7:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42220,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4144:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4143:9:145"
                  },
                  "scope": 42309,
                  "src": "4045:285:145",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42267,
                    "nodeType": "Block",
                    "src": "4805:52:145",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 42262,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42254,
                              "src": "4820:1:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42263,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42256,
                              "src": "4823:1:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f",
                              "id": 42264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4826:26:145",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832",
                                "typeString": "literal_string \"SafeMath: modulo by zero\""
                              },
                              "value": "SafeMath: modulo by zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832",
                                "typeString": "literal_string \"SafeMath: modulo by zero\""
                              }
                            ],
                            "id": 42261,
                            "name": "mod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              42268,
                              42291
                            ],
                            "referencedDeclaration": 42291,
                            "src": "4816:3:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 42265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4816:37:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 42260,
                        "id": 42266,
                        "nodeType": "Return",
                        "src": "4809:44:145"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n\t * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n\t * Requirements:\n- The divisor cannot be zero.",
                  "id": 42268,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mod",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42257,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42254,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42268,
                        "src": "4751:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42253,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4751:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42256,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42268,
                        "src": "4762:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42255,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4762:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4750:22:145"
                  },
                  "returnParameters": {
                    "id": 42260,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42259,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42268,
                        "src": "4796:7:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42258,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4796:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4795:9:145"
                  },
                  "scope": 42309,
                  "src": "4738:119:145",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42290,
                    "nodeType": "Block",
                    "src": "5423:53:145",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 42282,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 42280,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42272,
                                "src": "5435:1:145",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 42281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5440:1:145",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5435:6:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42283,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42274,
                              "src": "5443:12:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 42279,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "5427:7:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5427:29:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42285,
                        "nodeType": "ExpressionStatement",
                        "src": "5427:29:145"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 42288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42286,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42270,
                            "src": "5467:1:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 42287,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42272,
                            "src": "5471:1:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5467:5:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 42278,
                        "id": 42289,
                        "nodeType": "Return",
                        "src": "5460:12:145"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts with custom message when dividing by zero.\n\t * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n\t * Requirements:\n- The divisor cannot be zero.\n\t * _Available since v2.4.0._",
                  "id": 42291,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mod",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42275,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42270,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42291,
                        "src": "5335:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42269,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5335:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42272,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42291,
                        "src": "5348:9:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42271,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5348:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42274,
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "scope": 42291,
                        "src": "5361:26:145",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 42273,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5361:6:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5331:59:145"
                  },
                  "returnParameters": {
                    "id": 42278,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42277,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42291,
                        "src": "5414:7:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42276,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5414:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5413:9:145"
                  },
                  "scope": 42309,
                  "src": "5319:157:145",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42307,
                    "nodeType": "Block",
                    "src": "5551:32:145",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 42302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 42300,
                              "name": "_a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42293,
                              "src": "5562:2:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 42301,
                              "name": "_b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42295,
                              "src": "5567:2:145",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5562:7:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 42304,
                            "name": "_b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42295,
                            "src": "5577:2:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 42305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "5562:17:145",
                          "trueExpression": {
                            "argumentTypes": null,
                            "id": 42303,
                            "name": "_a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42293,
                            "src": "5572:2:145",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 42299,
                        "id": 42306,
                        "nodeType": "Return",
                        "src": "5555:24:145"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 42308,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "min256",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42296,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42293,
                        "name": "_a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42308,
                        "src": "5495:10:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42292,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5495:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42295,
                        "name": "_b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42308,
                        "src": "5507:10:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42294,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5507:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5494:24:145"
                  },
                  "returnParameters": {
                    "id": 42299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42298,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42308,
                        "src": "5542:7:145",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42297,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5542:7:145",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5541:9:145"
                  },
                  "scope": 42309,
                  "src": "5479:104:145",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 42310,
              "src": "597:4988:145"
            }
          ],
          "src": "0:5586:145"
        },
        "id": 145
      },
      "contracts/openzeppelin/SignedSafeMath.sol": {
        "ast": {
          "absolutePath": "contracts/openzeppelin/SignedSafeMath.sol",
          "exportedSymbols": {
            "SignedSafeMath": [
              42483
            ]
          },
          "id": 42484,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 42311,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:31:146"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": "@title SignedSafeMath\n@dev Signed math operations with safety checks that revert on error.",
              "fullyImplemented": true,
              "id": 42483,
              "linearizedBaseContracts": [
                42483
              ],
              "name": "SignedSafeMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 42317,
                  "name": "_INT256_MIN",
                  "nodeType": "VariableDeclaration",
                  "scope": 42483,
                  "src": "164:45:146",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 42312,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "164:6:146",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const -578...(70 digits omitted)...9968"
                    },
                    "id": 42316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 42314,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "-",
                      "prefix": true,
                      "src": "202:2:146",
                      "subExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 42313,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "203:1:146",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_minus_2_by_1",
                        "typeString": "int_const -2"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "323535",
                      "id": 42315,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "206:3:146",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_255_by_1",
                        "typeString": "int_const 255"
                      },
                      "value": "255"
                    },
                    "src": "202:7:146",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const -578...(70 digits omitted)...9968"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 42364,
                    "nodeType": "Block",
                    "src": "486:424:146",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 42328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42326,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42319,
                            "src": "694:1:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 42327,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "699:1:146",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "694:6:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 42332,
                        "nodeType": "IfStatement",
                        "src": "690:30:146",
                        "trueBody": {
                          "id": 42331,
                          "nodeType": "Block",
                          "src": "702:18:146",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 42329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "714:1:146",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 42325,
                              "id": 42330,
                              "nodeType": "Return",
                              "src": "707:8:146"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 42343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "732:30:146",
                              "subExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 42341,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 42337,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42334,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42319,
                                        "src": "734:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 42336,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "739:2:146",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 42335,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "740:1:146",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      },
                                      "src": "734:7:146",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 42340,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42338,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42321,
                                        "src": "745:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 42339,
                                        "name": "_INT256_MIN",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42317,
                                        "src": "750:11:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "745:16:146",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "734:27:146",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 42342,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "733:29:146",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
                              "id": 42344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "764:41:146",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              },
                              "value": "SignedSafeMath: multiplication overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              }
                            ],
                            "id": 42333,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "724:7:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "724:82:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42346,
                        "nodeType": "ExpressionStatement",
                        "src": "724:82:146"
                      },
                      {
                        "assignments": [
                          42348
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42348,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 42364,
                            "src": "811:8:146",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 42347,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "811:6:146",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42352,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 42351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42349,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42319,
                            "src": "822:1:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 42350,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42321,
                            "src": "826:1:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "822:5:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "811:16:146"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 42358,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 42356,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 42354,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42348,
                                  "src": "839:1:146",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 42355,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42319,
                                  "src": "843:1:146",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "839:5:146",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 42357,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42321,
                                "src": "848:1:146",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "839:10:146",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
                              "id": 42359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "851:41:146",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              },
                              "value": "SignedSafeMath: multiplication overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              }
                            ],
                            "id": 42353,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "831:7:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "831:62:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42361,
                        "nodeType": "ExpressionStatement",
                        "src": "831:62:146"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 42362,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42348,
                          "src": "905:1:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 42325,
                        "id": 42363,
                        "nodeType": "Return",
                        "src": "898:8:146"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the multiplication of two signed integers, reverting on\noverflow.\n\t * Counterpart to Solidity's `*` operator.\n\t * Requirements:\n\t * - Multiplication cannot overflow.",
                  "id": 42365,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42322,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42319,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42365,
                        "src": "435:8:146",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 42318,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "435:6:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42321,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42365,
                        "src": "445:8:146",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 42320,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "445:6:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "434:20:146"
                  },
                  "returnParameters": {
                    "id": 42325,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42324,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42365,
                        "src": "478:6:146",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 42323,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "478:6:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "477:8:146"
                  },
                  "scope": 42483,
                  "src": "422:488:146",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42403,
                    "nodeType": "Block",
                    "src": "1395:173:146",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 42377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 42375,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42369,
                                "src": "1407:1:146",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 42376,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1412:1:146",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1407:6:146",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206469766973696f6e206279207a65726f",
                              "id": 42378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1415:34:146",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd",
                                "typeString": "literal_string \"SignedSafeMath: division by zero\""
                              },
                              "value": "SignedSafeMath: division by zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd",
                                "typeString": "literal_string \"SignedSafeMath: division by zero\""
                              }
                            ],
                            "id": 42374,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1399:7:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1399:51:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42380,
                        "nodeType": "ExpressionStatement",
                        "src": "1399:51:146"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 42391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "1462:30:146",
                              "subExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 42389,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 42385,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42382,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42369,
                                        "src": "1464:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 42384,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "1469:2:146",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 42383,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1470:1:146",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      },
                                      "src": "1464:7:146",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 42388,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42386,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42367,
                                        "src": "1475:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 42387,
                                        "name": "_INT256_MIN",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42317,
                                        "src": "1480:11:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "1475:16:146",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1464:27:146",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 42390,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1463:29:146",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f77",
                              "id": 42392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1494:35:146",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7bc0f3df013376568eb9f7cb8999198097051f79bdb4d07d83447767f5224b81",
                                "typeString": "literal_string \"SignedSafeMath: division overflow\""
                              },
                              "value": "SignedSafeMath: division overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7bc0f3df013376568eb9f7cb8999198097051f79bdb4d07d83447767f5224b81",
                                "typeString": "literal_string \"SignedSafeMath: division overflow\""
                              }
                            ],
                            "id": 42381,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1454:7:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1454:76:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42394,
                        "nodeType": "ExpressionStatement",
                        "src": "1454:76:146"
                      },
                      {
                        "assignments": [
                          42396
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42396,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 42403,
                            "src": "1535:8:146",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 42395,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1535:6:146",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42400,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 42399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42397,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42367,
                            "src": "1546:1:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 42398,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42369,
                            "src": "1550:1:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1546:5:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1535:16:146"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 42401,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42396,
                          "src": "1563:1:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 42373,
                        "id": 42402,
                        "nodeType": "Return",
                        "src": "1556:8:146"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the integer division of two signed integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n\t * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n\t * Requirements:\n\t * - The divisor cannot be zero.",
                  "id": 42404,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42370,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42367,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42404,
                        "src": "1344:8:146",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 42366,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1344:6:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42369,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42404,
                        "src": "1354:8:146",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 42368,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1354:6:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1343:20:146"
                  },
                  "returnParameters": {
                    "id": 42373,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42372,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42404,
                        "src": "1387:6:146",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 42371,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1387:6:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1386:8:146"
                  },
                  "scope": 42483,
                  "src": "1331:237:146",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42442,
                    "nodeType": "Block",
                    "src": "1838:128:146",
                    "statements": [
                      {
                        "assignments": [
                          42414
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42414,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 42442,
                            "src": "1842:8:146",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 42413,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1842:6:146",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42418,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 42417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42415,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42406,
                            "src": "1853:1:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 42416,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42408,
                            "src": "1857:1:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1853:5:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1842:16:146"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 42436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 42426,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 42422,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42420,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42408,
                                        "src": "1871:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 42421,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1876:1:146",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "1871:6:146",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 42425,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42423,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42414,
                                        "src": "1881:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 42424,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42406,
                                        "src": "1886:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "1881:6:146",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1871:16:146",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 42427,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1870:18:146",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 42434,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 42430,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42428,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42408,
                                        "src": "1893:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 42429,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1897:1:146",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "1893:5:146",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 42433,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42431,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42414,
                                        "src": "1902:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 42432,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42406,
                                        "src": "1906:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "1902:5:146",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1893:14:146",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 42435,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1892:16:146",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1870:38:146",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77",
                              "id": 42437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1910:38:146",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dfe37ab0612d67daeef366062296f3ebcaf7e2cc3eb392bf66a6cb5a7bed3bcd",
                                "typeString": "literal_string \"SignedSafeMath: subtraction overflow\""
                              },
                              "value": "SignedSafeMath: subtraction overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dfe37ab0612d67daeef366062296f3ebcaf7e2cc3eb392bf66a6cb5a7bed3bcd",
                                "typeString": "literal_string \"SignedSafeMath: subtraction overflow\""
                              }
                            ],
                            "id": 42419,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1862:7:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1862:87:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42439,
                        "nodeType": "ExpressionStatement",
                        "src": "1862:87:146"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 42440,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42414,
                          "src": "1961:1:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 42412,
                        "id": 42441,
                        "nodeType": "Return",
                        "src": "1954:8:146"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the subtraction of two signed integers, reverting on\noverflow.\n\t * Counterpart to Solidity's `-` operator.\n\t * Requirements:\n\t * - Subtraction cannot overflow.",
                  "id": 42443,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42406,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42443,
                        "src": "1787:8:146",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 42405,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1787:6:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42408,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42443,
                        "src": "1797:8:146",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 42407,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1797:6:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1786:20:146"
                  },
                  "returnParameters": {
                    "id": 42412,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42411,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42443,
                        "src": "1830:6:146",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 42410,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1830:6:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1829:8:146"
                  },
                  "scope": 42483,
                  "src": "1774:192:146",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42481,
                    "nodeType": "Block",
                    "src": "2230:125:146",
                    "statements": [
                      {
                        "assignments": [
                          42453
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42453,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 42481,
                            "src": "2234:8:146",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 42452,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2234:6:146",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42457,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 42456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42454,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42445,
                            "src": "2245:1:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 42455,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42447,
                            "src": "2249:1:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "2245:5:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2234:16:146"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 42475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 42465,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 42461,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42459,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42447,
                                        "src": "2263:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 42460,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2268:1:146",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2263:6:146",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 42464,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42462,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42453,
                                        "src": "2273:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 42463,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42445,
                                        "src": "2278:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2273:6:146",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2263:16:146",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 42466,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2262:18:146",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 42473,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 42469,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42467,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42447,
                                        "src": "2285:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 42468,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2289:1:146",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2285:5:146",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 42472,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42470,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42453,
                                        "src": "2294:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 42471,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42445,
                                        "src": "2298:1:146",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2294:5:146",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2285:14:146",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 42474,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2284:16:146",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2262:38:146",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77",
                              "id": 42476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2302:35:146",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_47c8d4a3974eee4fcf9925cffefc088ed6ac723b55fb65cf621edb1b7db7b8eb",
                                "typeString": "literal_string \"SignedSafeMath: addition overflow\""
                              },
                              "value": "SignedSafeMath: addition overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_47c8d4a3974eee4fcf9925cffefc088ed6ac723b55fb65cf621edb1b7db7b8eb",
                                "typeString": "literal_string \"SignedSafeMath: addition overflow\""
                              }
                            ],
                            "id": 42458,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2254:7:146",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2254:84:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42478,
                        "nodeType": "ExpressionStatement",
                        "src": "2254:84:146"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 42479,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42453,
                          "src": "2350:1:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 42451,
                        "id": 42480,
                        "nodeType": "Return",
                        "src": "2343:8:146"
                      }
                    ]
                  },
                  "documentation": "@dev Returns the addition of two signed integers, reverting on\noverflow.\n\t * Counterpart to Solidity's `+` operator.\n\t * Requirements:\n\t * - Addition cannot overflow.",
                  "id": 42482,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42448,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42445,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 42482,
                        "src": "2179:8:146",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 42444,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2179:6:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42447,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 42482,
                        "src": "2189:8:146",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 42446,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2189:6:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2178:20:146"
                  },
                  "returnParameters": {
                    "id": 42451,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42450,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42482,
                        "src": "2222:6:146",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 42449,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2222:6:146",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2221:8:146"
                  },
                  "scope": 42483,
                  "src": "2166:189:146",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 42484,
              "src": "138:2219:146"
            }
          ],
          "src": "0:2358:146"
        },
        "id": 146
      },
      "contracts/proxy/Proxy.sol": {
        "ast": {
          "absolutePath": "contracts/proxy/Proxy.sol",
          "exportedSymbols": {
            "Proxy": [
              42623
            ]
          },
          "id": 42624,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 42485,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:147"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": "@title Base Proxy contract.\n@notice The proxy performs delegated calls to the contract implementation\nit is pointing to. This way upgradable contracts are possible on blockchain.\n * Delegating proxy contracts are widely used for both upgradeability and gas\nsavings. These proxies rely on a logic contract (also known as implementation\ncontract or master copy) that is called using delegatecall. This allows\nproxies to keep a persistent state (storage and balance) while the code is\ndelegated to the logic contract.\n * Proxy contract is meant to be inherited and its internal functions\n_setImplementation and _setProxyOwner to be called when upgrades become\nneccessary.\n * The loan token (iToken) contract as well as the protocol contract act as\nproxies, delegating all calls to underlying contracts. Therefore, if you\nwant to interact with them using web3, you need to use the ABIs from the\ncontracts containing the actual logic or the interface contract.\n  ABI for LoanToken contracts: LoanTokenLogicStandard\n  ABI for Protocol contract: ISovryn\n * @dev UpgradableProxy is the contract that inherits Proxy and wraps these\nfunctions.\n",
              "fullyImplemented": true,
              "id": 42623,
              "linearizedBaseContracts": [
                42623
              ],
              "name": "Proxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 42490,
                  "name": "KEY_IMPLEMENTATION",
                  "nodeType": "VariableDeclaration",
                  "scope": 42623,
                  "src": "1245:77:147",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 42486,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1245:7:147",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "6b65792e696d706c656d656e746174696f6e",
                        "id": 42488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1301:20:147",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_950d7e977b74051843ed988c77d53a700cd967d2ac5480d98dd4c1edaf0b4dc8",
                          "typeString": "literal_string \"key.implementation\""
                        },
                        "value": "key.implementation"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_950d7e977b74051843ed988c77d53a700cd967d2ac5480d98dd4c1edaf0b4dc8",
                          "typeString": "literal_string \"key.implementation\""
                        }
                      ],
                      "id": 42487,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 44988,
                      "src": "1291:9:147",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 42489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1291:31:147",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 42495,
                  "name": "KEY_OWNER",
                  "nodeType": "VariableDeclaration",
                  "scope": 42623,
                  "src": "1325:65:147",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 42491,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1325:7:147",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "6b65792e70726f78792e6f776e6572",
                        "id": 42493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1372:17:147",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b5f6074d2b374487ffe12d401cf0891c7591a84c4944ef117f69d13b80c4d6d8",
                          "typeString": "literal_string \"key.proxy.owner\""
                        },
                        "value": "key.proxy.owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_b5f6074d2b374487ffe12d401cf0891c7591a84c4944ef117f69d13b80c4d6d8",
                          "typeString": "literal_string \"key.proxy.owner\""
                        }
                      ],
                      "id": 42492,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 44988,
                      "src": "1362:9:147",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 42494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1362:28:147",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 42501,
                  "name": "OwnershipTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 42500,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42497,
                        "indexed": true,
                        "name": "_oldOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 42501,
                        "src": "1421:25:147",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42496,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1421:7:147",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42499,
                        "indexed": true,
                        "name": "_newOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 42501,
                        "src": "1448:25:147",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42498,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1448:7:147",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1420:54:147"
                  },
                  "src": "1394:81:147"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 42507,
                  "name": "ImplementationChanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 42506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42503,
                        "indexed": true,
                        "name": "_oldImplementation",
                        "nodeType": "VariableDeclaration",
                        "scope": 42507,
                        "src": "1505:34:147",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42502,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1505:7:147",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42505,
                        "indexed": true,
                        "name": "_newImplementation",
                        "nodeType": "VariableDeclaration",
                        "scope": 42507,
                        "src": "1541:34:147",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42504,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1541:7:147",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1504:72:147"
                  },
                  "src": "1477:100:147"
                },
                {
                  "body": {
                    "id": 42515,
                    "nodeType": "Block",
                    "src": "1649:34:147",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 42511,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "1668:3:147",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 42512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1668:10:147",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 42510,
                            "name": "_setProxyOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42592,
                            "src": "1653:14:147",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 42513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1653:26:147",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42514,
                        "nodeType": "ExpressionStatement",
                        "src": "1653:26:147"
                      }
                    ]
                  },
                  "documentation": "@notice Set sender as an owner.\n",
                  "id": 42516,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42508,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1639:2:147"
                  },
                  "returnParameters": {
                    "id": 42509,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1649:0:147"
                  },
                  "scope": 42623,
                  "src": "1628:55:147",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 42528,
                    "nodeType": "Block",
                    "src": "1775:76:147",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 42523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 42519,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "1787:3:147",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 42520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1787:10:147",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 42521,
                                  "name": "getProxyOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42603,
                                  "src": "1801:13:147",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 42522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1801:15:147",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1787:29:147",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50726f78793a3a206163636573732064656e696564",
                              "id": 42524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1818:23:147",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b4d0abeee7e24be00580dc7a072601860b328182a7d9ce6598fadc96c19f5881",
                                "typeString": "literal_string \"Proxy:: access denied\""
                              },
                              "value": "Proxy:: access denied"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b4d0abeee7e24be00580dc7a072601860b328182a7d9ce6598fadc96c19f5881",
                                "typeString": "literal_string \"Proxy:: access denied\""
                              }
                            ],
                            "id": 42518,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1779:7:147",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1779:63:147",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42526,
                        "nodeType": "ExpressionStatement",
                        "src": "1779:63:147"
                      },
                      {
                        "id": 42527,
                        "nodeType": "PlaceholderStatement",
                        "src": "1846:1:147"
                      }
                    ]
                  },
                  "documentation": "@notice Throw error if called not by an owner.\n",
                  "id": 42529,
                  "name": "onlyProxyOwner",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 42517,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1772:2:147"
                  },
                  "src": "1749:102:147",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42554,
                    "nodeType": "Block",
                    "src": "2033:245:147",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 42539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 42535,
                                "name": "_implementation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42531,
                                "src": "2045:15:147",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 42537,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2072:1:147",
                                    "subdenomination": null,
                                    "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": 42536,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2064:7:147",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 42538,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2064:10:147",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2045:29:147",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50726f78793a3a736574496d706c656d656e746174696f6e3a20696e76616c69642061646472657373",
                              "id": 42540,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2076:43:147",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_838f5e2d747ae5f45805850ec5830347e51659e3df38f1edd5c96e52385f0ac2",
                                "typeString": "literal_string \"Proxy::setImplementation: invalid address\""
                              },
                              "value": "Proxy::setImplementation: invalid address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_838f5e2d747ae5f45805850ec5830347e51659e3df38f1edd5c96e52385f0ac2",
                                "typeString": "literal_string \"Proxy::setImplementation: invalid address\""
                              }
                            ],
                            "id": 42534,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2037:7:147",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2037:83:147",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42542,
                        "nodeType": "ExpressionStatement",
                        "src": "2037:83:147"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 42544,
                                "name": "getImplementation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42566,
                                "src": "2151:17:147",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 42545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2151:19:147",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42546,
                              "name": "_implementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42531,
                              "src": "2172:15:147",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 42543,
                            "name": "ImplementationChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42507,
                            "src": "2129:21:147",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 42547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2129:59:147",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42548,
                        "nodeType": "EmitStatement",
                        "src": "2124:64:147"
                      },
                      {
                        "assignments": [
                          42550
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42550,
                            "name": "key",
                            "nodeType": "VariableDeclaration",
                            "scope": 42554,
                            "src": "2193:11:147",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 42549,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2193:7:147",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42552,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 42551,
                          "name": "KEY_IMPLEMENTATION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42490,
                          "src": "2207:18:147",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2193:32:147"
                      },
                      {
                        "externalReferences": [
                          {
                            "key": {
                              "declaration": 42550,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "2250:3:147",
                              "valueSize": 1
                            }
                          },
                          {
                            "_implementation": {
                              "declaration": 42531,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "2255:15:147",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 42553,
                        "nodeType": "InlineAssembly",
                        "operations": "{ sstore(key, _implementation) }",
                        "src": "2229:46:147"
                      }
                    ]
                  },
                  "documentation": "@notice Set address of the implementation.\n@param _implementation Address of the implementation.\n",
                  "id": 42555,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setImplementation",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42532,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42531,
                        "name": "_implementation",
                        "nodeType": "VariableDeclaration",
                        "scope": 42555,
                        "src": "1999:23:147",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42530,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1999:7:147",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1998:25:147"
                  },
                  "returnParameters": {
                    "id": 42533,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2033:0:147"
                  },
                  "scope": 42623,
                  "src": "1971:307:147",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42565,
                    "nodeType": "Block",
                    "src": "2461:90:147",
                    "statements": [
                      {
                        "assignments": [
                          42561
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42561,
                            "name": "key",
                            "nodeType": "VariableDeclaration",
                            "scope": 42565,
                            "src": "2465:11:147",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 42560,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2465:7:147",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42563,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 42562,
                          "name": "KEY_IMPLEMENTATION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42490,
                          "src": "2479:18:147",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2465:32:147"
                      },
                      {
                        "externalReferences": [
                          {
                            "_implementation": {
                              "declaration": 42558,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "2515:15:147",
                              "valueSize": 1
                            }
                          },
                          {
                            "key": {
                              "declaration": 42561,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "2540:3:147",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 42564,
                        "nodeType": "InlineAssembly",
                        "operations": "{ _implementation := sload(key) }",
                        "src": "2501:47:147"
                      }
                    ]
                  },
                  "documentation": "@notice Return address of the implementation.\n@return Address of the implementation.\n",
                  "id": 42566,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getImplementation",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42556,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2412:2:147"
                  },
                  "returnParameters": {
                    "id": 42559,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42558,
                        "name": "_implementation",
                        "nodeType": "VariableDeclaration",
                        "scope": 42566,
                        "src": "2436:23:147",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42557,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2436:7:147",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2435:25:147"
                  },
                  "scope": 42623,
                  "src": "2386:165:147",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 42591,
                    "nodeType": "Block",
                    "src": "2693:200:147",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 42576,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 42572,
                                "name": "_owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42568,
                                "src": "2705:6:147",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 42574,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2723:1:147",
                                    "subdenomination": null,
                                    "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": 42573,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2715:7:147",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 42575,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2715:10:147",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2705:20:147",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50726f78793a3a73657450726f78794f776e65723a20696e76616c69642061646472657373",
                              "id": 42577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2727:39:147",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d96ef6e1bbe74b896799905702c137c63666bd6639ef7d16953cfa802fe7e2c2",
                                "typeString": "literal_string \"Proxy::setProxyOwner: invalid address\""
                              },
                              "value": "Proxy::setProxyOwner: invalid address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d96ef6e1bbe74b896799905702c137c63666bd6639ef7d16953cfa802fe7e2c2",
                                "typeString": "literal_string \"Proxy::setProxyOwner: invalid address\""
                              }
                            ],
                            "id": 42571,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2697:7:147",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2697:70:147",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42579,
                        "nodeType": "ExpressionStatement",
                        "src": "2697:70:147"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 42581,
                                "name": "getProxyOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42603,
                                "src": "2797:13:147",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 42582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2797:15:147",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42583,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42568,
                              "src": "2814:6:147",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 42580,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42501,
                            "src": "2776:20:147",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 42584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2776:45:147",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42585,
                        "nodeType": "EmitStatement",
                        "src": "2771:50:147"
                      },
                      {
                        "assignments": [
                          42587
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42587,
                            "name": "key",
                            "nodeType": "VariableDeclaration",
                            "scope": 42591,
                            "src": "2826:11:147",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 42586,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2826:7:147",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42589,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 42588,
                          "name": "KEY_OWNER",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42495,
                          "src": "2840:9:147",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2826:23:147"
                      },
                      {
                        "externalReferences": [
                          {
                            "key": {
                              "declaration": 42587,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "2874:3:147",
                              "valueSize": 1
                            }
                          },
                          {
                            "_owner": {
                              "declaration": 42568,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "2879:6:147",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 42590,
                        "nodeType": "InlineAssembly",
                        "operations": "{ sstore(key, _owner) }",
                        "src": "2853:37:147"
                      }
                    ]
                  },
                  "documentation": "@notice Set address of the owner.\n@param _owner Address of the owner.\n",
                  "id": 42592,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setProxyOwner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42569,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42568,
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 42592,
                        "src": "2668:14:147",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42567,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2668:7:147",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2667:16:147"
                  },
                  "returnParameters": {
                    "id": 42570,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2693:0:147"
                  },
                  "scope": 42623,
                  "src": "2644:249:147",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42602,
                    "nodeType": "Block",
                    "src": "3045:72:147",
                    "statements": [
                      {
                        "assignments": [
                          42598
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42598,
                            "name": "key",
                            "nodeType": "VariableDeclaration",
                            "scope": 42602,
                            "src": "3049:11:147",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 42597,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3049:7:147",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42600,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 42599,
                          "name": "KEY_OWNER",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42495,
                          "src": "3063:9:147",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3049:23:147"
                      },
                      {
                        "externalReferences": [
                          {
                            "_owner": {
                              "declaration": 42595,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "3090:6:147",
                              "valueSize": 1
                            }
                          },
                          {
                            "key": {
                              "declaration": 42598,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "3106:3:147",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 42601,
                        "nodeType": "InlineAssembly",
                        "operations": "{ _owner := sload(key) }",
                        "src": "3076:38:147"
                      }
                    ]
                  },
                  "documentation": "@notice Return address of the owner.\n@return Address of the owner.\n",
                  "id": 42603,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getProxyOwner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42593,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3005:2:147"
                  },
                  "returnParameters": {
                    "id": 42596,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42595,
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 42603,
                        "src": "3029:14:147",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42594,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3029:7:147",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3028:16:147"
                  },
                  "scope": 42623,
                  "src": "2983:134:147",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 42621,
                    "nodeType": "Block",
                    "src": "3334:479:147",
                    "statements": [
                      {
                        "assignments": [
                          42607
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42607,
                            "name": "implementation",
                            "nodeType": "VariableDeclaration",
                            "scope": 42621,
                            "src": "3338:22:147",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 42606,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3338:7:147",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42610,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 42608,
                            "name": "getImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42566,
                            "src": "3363:17:147",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 42609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3363:19:147",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3338:44:147"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 42616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 42612,
                                "name": "implementation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42607,
                                "src": "3394:14:147",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 42614,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3420:1:147",
                                    "subdenomination": null,
                                    "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": 42613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3412:7:147",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 42615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3412:10:147",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3394:28:147",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50726f78793a3a28293a20696d706c656d656e746174696f6e206e6f7420666f756e64",
                              "id": 42617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3424:37:147",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d198a4c382725439d077027f8cde0bc5a78ec034f14525a8c1f3fa6256ac5efd",
                                "typeString": "literal_string \"Proxy::(): implementation not found\""
                              },
                              "value": "Proxy::(): implementation not found"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d198a4c382725439d077027f8cde0bc5a78ec034f14525a8c1f3fa6256ac5efd",
                                "typeString": "literal_string \"Proxy::(): implementation not found\""
                              }
                            ],
                            "id": 42611,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3386:7:147",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3386:76:147",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42619,
                        "nodeType": "ExpressionStatement",
                        "src": "3386:76:147"
                      },
                      {
                        "externalReferences": [
                          {
                            "implementation": {
                              "declaration": 42607,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "3585:14:147",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 42620,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    let pointer := mload(0x40)\n    calldatacopy(pointer, 0, calldatasize())\n    let result := delegatecall(gas(), implementation, pointer, calldatasize(), 0, 0)\n    let size := returndatasize()\n    returndatacopy(pointer, 0, size)\n    switch result\n    case 0 { revert(pointer, size) }\n    default { return(pointer, size) }\n}",
                        "src": "3467:343:147"
                      }
                    ]
                  },
                  "documentation": "@notice Fallback function performs a delegate call\nto the actual implementation address is pointing this proxy.\nReturns whatever the implementation call returns.\n",
                  "id": 42622,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42604,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3314:2:147"
                  },
                  "returnParameters": {
                    "id": 42605,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3334:0:147"
                  },
                  "scope": 42623,
                  "src": "3306:507:147",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 42624,
              "src": "1227:2588:147"
            }
          ],
          "src": "0:3816:147"
        },
        "id": 147
      },
      "contracts/proxy/UpgradableProxy.sol": {
        "ast": {
          "absolutePath": "contracts/proxy/UpgradableProxy.sol",
          "exportedSymbols": {
            "UpgradableProxy": [
              42653
            ]
          },
          "id": 42654,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 42625,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:148"
            },
            {
              "absolutePath": "contracts/proxy/Proxy.sol",
              "file": "./Proxy.sol",
              "id": 42626,
              "nodeType": "ImportDirective",
              "scope": 42654,
              "sourceUnit": 42624,
              "src": "26:21:148",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 42627,
                    "name": "Proxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42623,
                    "src": "890:5:148",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Proxy_$42623",
                      "typeString": "contract Proxy"
                    }
                  },
                  "id": 42628,
                  "nodeType": "InheritanceSpecifier",
                  "src": "890:5:148"
                }
              ],
              "contractDependencies": [
                42623
              ],
              "contractKind": "contract",
              "documentation": "@title Upgradable Proxy contract.\n@notice A disadvantage of the immutable ledger is that nobody can change the\nsource code of a smart contract after it’s been deployed. In order to fix\nbugs or introduce new features, smart contracts need to be upgradable somehow.\n * Although it is not possible to upgrade the code of an already deployed smart\ncontract, it is possible to set-up a proxy contract architecture that will\nallow to use new deployed contracts as if the main logic had been upgraded.\n * A proxy architecture pattern is such that all message calls go through a\nProxy contract that will redirect them to the latest deployed contract logic.\nTo upgrade, a new version of the contract is deployed, and the Proxy is\nupdated to reference the new contract address.\n",
              "fullyImplemented": true,
              "id": 42653,
              "linearizedBaseContracts": [
                42653,
                42623
              ],
              "name": "UpgradableProxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 42639,
                    "nodeType": "Block",
                    "src": "1268:43:148",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 42636,
                              "name": "_implementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42630,
                              "src": "1291:15:148",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 42635,
                            "name": "_setImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42555,
                            "src": "1272:18:148",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 42637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1272:35:148",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42638,
                        "nodeType": "ExpressionStatement",
                        "src": "1272:35:148"
                      }
                    ]
                  },
                  "documentation": "@notice Set address of the implementation.\n@dev Wrapper for _setImplementation that exposes the function\nas public for owner to be able to set a new version of the\ncontract as current pointing implementation.\n@param _implementation Address of the implementation.\n",
                  "id": 42640,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 42633,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 42632,
                        "name": "onlyProxyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42529,
                        "src": "1253:14:148",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1253:14:148"
                    }
                  ],
                  "name": "setImplementation",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42630,
                        "name": "_implementation",
                        "nodeType": "VariableDeclaration",
                        "scope": 42640,
                        "src": "1221:23:148",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42629,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1221:7:148",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1220:25:148"
                  },
                  "returnParameters": {
                    "id": 42634,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1268:0:148"
                  },
                  "scope": 42653,
                  "src": "1194:117:148",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 42651,
                    "nodeType": "Block",
                    "src": "1465:30:148",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 42648,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42642,
                              "src": "1484:6:148",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 42647,
                            "name": "_setProxyOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42592,
                            "src": "1469:14:148",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 42649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1469:22:148",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42650,
                        "nodeType": "ExpressionStatement",
                        "src": "1469:22:148"
                      }
                    ]
                  },
                  "documentation": "@notice Set address of the owner.\n@param _owner Address of the owner.\n",
                  "id": 42652,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 42645,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 42644,
                        "name": "onlyProxyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42529,
                        "src": "1450:14:148",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1450:14:148"
                    }
                  ],
                  "name": "setProxyOwner",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42642,
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 42652,
                        "src": "1427:14:148",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42641,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1427:7:148",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1426:16:148"
                  },
                  "returnParameters": {
                    "id": 42646,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1465:0:148"
                  },
                  "scope": 42653,
                  "src": "1404:91:148",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 42654,
              "src": "862:635:148"
            }
          ],
          "src": "0:1498:148"
        },
        "id": 148
      },
      "contracts/rsk/RSKAddrValidator.sol": {
        "ast": {
          "absolutePath": "contracts/rsk/RSKAddrValidator.sol",
          "exportedSymbols": {
            "RSKAddrValidator": [
              42700
            ]
          },
          "id": 42701,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 42655,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "31:24:149"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 42700,
              "linearizedBaseContracts": [
                42700
              ],
              "name": "RSKAddrValidator",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 42673,
                    "nodeType": "Block",
                    "src": "385:89:149",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 42670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 42664,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 42662,
                                  "name": "addr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42657,
                                  "src": "397:4:149",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "307864636337303363304535303042363533436138323237334237424641643830343544383561343730",
                                  "id": 42663,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "405:42:149",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  "value": "0xdcc703c0E500B653Ca82273B7BFAd8045D85a470"
                                },
                                "src": "397:50:149",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 42669,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 42665,
                                  "name": "addr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42657,
                                  "src": "451:4:149",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 42667,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "467:1:149",
                                      "subdenomination": null,
                                      "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": 42666,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "459:7:149",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 42668,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "459:10:149",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "451:18:149",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "397:72:149",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 42671,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "396:74:149",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 42661,
                        "id": 42672,
                        "nodeType": "Return",
                        "src": "389:81:149"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 42674,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "checkPKNotZero",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42658,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42657,
                        "name": "addr",
                        "nodeType": "VariableDeclaration",
                        "scope": 42674,
                        "src": "342:12:149",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42656,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "342:7:149",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "341:14:149"
                  },
                  "returnParameters": {
                    "id": 42661,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42660,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42674,
                        "src": "379:4:149",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 42659,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "379:4:149",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "378:6:149"
                  },
                  "scope": 42700,
                  "src": "318:156:149",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 42698,
                    "nodeType": "Block",
                    "src": "662:109:149",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 42695,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 42689,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 42685,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 42683,
                                    "name": "addr1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42676,
                                    "src": "674:5:149",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 42684,
                                    "name": "addr2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42678,
                                    "src": "683:5:149",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "674:14:149",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 42688,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 42686,
                                    "name": "addr1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42676,
                                    "src": "692:5:149",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "307864636337303363304535303042363533436138323237334237424641643830343544383561343730",
                                    "id": 42687,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "701:42:149",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    "value": "0xdcc703c0E500B653Ca82273B7BFAd8045D85a470"
                                  },
                                  "src": "692:51:149",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "674:69:149",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 42694,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 42690,
                                  "name": "addr1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42676,
                                  "src": "747:5:149",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 42692,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "764:1:149",
                                      "subdenomination": null,
                                      "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": 42691,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "756:7:149",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 42693,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "756:10:149",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "747:19:149",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "674:92:149",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 42696,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "673:94:149",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 42682,
                        "id": 42697,
                        "nodeType": "Return",
                        "src": "666:101:149"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 42699,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeEquals",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42679,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42676,
                        "name": "addr1",
                        "nodeType": "VariableDeclaration",
                        "scope": 42699,
                        "src": "603:13:149",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42675,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "603:7:149",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42678,
                        "name": "addr2",
                        "nodeType": "VariableDeclaration",
                        "scope": 42699,
                        "src": "618:13:149",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42677,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "618:7:149",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "602:30:149"
                  },
                  "returnParameters": {
                    "id": 42682,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42681,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42699,
                        "src": "656:4:149",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 42680,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "656:4:149",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "655:6:149"
                  },
                  "scope": 42700,
                  "src": "583:188:149",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 42701,
              "src": "57:716:149"
            }
          ],
          "src": "31:743:149"
        },
        "id": 149
      },
      "contracts/swaps/ISwapsImpl.sol": {
        "ast": {
          "absolutePath": "contracts/swaps/ISwapsImpl.sol",
          "exportedSymbols": {
            "ISwapsImpl": [
              42750
            ]
          },
          "id": 42751,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 42702,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "141:23:150"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 42750,
              "linearizedBaseContracts": [
                42750
              ],
              "name": "ISwapsImpl",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 42723,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "internalSwap",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42717,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42704,
                        "name": "sourceTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 42723,
                        "src": "215:26:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42703,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "215:7:150",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42706,
                        "name": "destTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 42723,
                        "src": "245:24:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42705,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "245:7:150",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42708,
                        "name": "receiverAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 42723,
                        "src": "273:23:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42707,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "273:7:150",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42710,
                        "name": "returnToSenderAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 42723,
                        "src": "300:29:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42709,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "300:7:150",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42712,
                        "name": "minSourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 42723,
                        "src": "333:28:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42711,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "333:7:150",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42714,
                        "name": "maxSourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 42723,
                        "src": "365:28:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42713,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "365:7:150",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42716,
                        "name": "requiredDestTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 42723,
                        "src": "397:31:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42715,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "397:7:150",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "211:220:150"
                  },
                  "returnParameters": {
                    "id": 42722,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42719,
                        "name": "destTokenAmountReceived",
                        "nodeType": "VariableDeclaration",
                        "scope": 42723,
                        "src": "458:31:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42718,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "458:7:150",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42721,
                        "name": "sourceTokenAmountUsed",
                        "nodeType": "VariableDeclaration",
                        "scope": 42723,
                        "src": "491:29:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42720,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "491:7:150",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "457:64:150"
                  },
                  "scope": 42750,
                  "src": "190:332:150",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 42736,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "internalExpectedRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42732,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42725,
                        "name": "sourceTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 42736,
                        "src": "558:26:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42724,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "558:7:150",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42727,
                        "name": "destTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 42736,
                        "src": "588:24:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42726,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "588:7:150",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42729,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 42736,
                        "src": "616:25:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42728,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "616:7:150",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42731,
                        "name": "optionalContractAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 42736,
                        "src": "645:31:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42730,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "645:7:150",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "554:125:150"
                  },
                  "returnParameters": {
                    "id": 42735,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42734,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 42736,
                        "src": "703:7:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42733,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "703:7:150",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "702:9:150"
                  },
                  "scope": 42750,
                  "src": "525:187:150",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 42749,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "internalExpectedReturn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42745,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42738,
                        "name": "sourceTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 42749,
                        "src": "750:26:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42737,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "750:7:150",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42740,
                        "name": "destTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 42749,
                        "src": "780:24:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42739,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "780:7:150",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42742,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 42749,
                        "src": "808:25:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42741,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "808:7:150",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42744,
                        "name": "sovrynSwapContractRegistryAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 42749,
                        "src": "837:41:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42743,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "837:7:150",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "746:135:150"
                  },
                  "returnParameters": {
                    "id": 42748,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42747,
                        "name": "expectedReturn",
                        "nodeType": "VariableDeclaration",
                        "scope": 42749,
                        "src": "905:22:150",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42746,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "905:7:150",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "904:24:150"
                  },
                  "scope": 42750,
                  "src": "715:214:150",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 42751,
              "src": "166:765:150"
            }
          ],
          "src": "141:791:150"
        },
        "id": 150
      },
      "contracts/swaps/SwapsUser.sol": {
        "ast": {
          "absolutePath": "contracts/swaps/SwapsUser.sol",
          "exportedSymbols": {
            "SwapsUser": [
              43249
            ]
          },
          "id": 43250,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 42752,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "141:23:151"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../core/State.sol",
              "id": 42753,
              "nodeType": "ImportDirective",
              "scope": 43250,
              "sourceUnit": 4842,
              "src": "166:27:151",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/feeds/IPriceFeeds.sol",
              "file": "../feeds/IPriceFeeds.sol",
              "id": 42754,
              "nodeType": "ImportDirective",
              "scope": 43250,
              "sourceUnit": 8708,
              "src": "194:34:151",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/events/SwapsEvents.sol",
              "file": "../events/SwapsEvents.sol",
              "id": 42755,
              "nodeType": "ImportDirective",
              "scope": 43250,
              "sourceUnit": 6342,
              "src": "229:35:151",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mixins/FeesHelper.sol",
              "file": "../mixins/FeesHelper.sol",
              "id": 42756,
              "nodeType": "ImportDirective",
              "scope": 43250,
              "sourceUnit": 27493,
              "src": "265:34:151",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/swaps/ISwapsImpl.sol",
              "file": "./ISwapsImpl.sol",
              "id": 42757,
              "nodeType": "ImportDirective",
              "scope": 43250,
              "sourceUnit": 42751,
              "src": "300:26:151",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 42758,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "412:5:151",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 42759,
                  "nodeType": "InheritanceSpecifier",
                  "src": "412:5:151"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 42760,
                    "name": "SwapsEvents",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6341,
                    "src": "419:11:151",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SwapsEvents_$6341",
                      "typeString": "contract SwapsEvents"
                    }
                  },
                  "id": 42761,
                  "nodeType": "InheritanceSpecifier",
                  "src": "419:11:151"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 42762,
                    "name": "FeesHelper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27492,
                    "src": "432:10:151",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeesHelper_$27492",
                      "typeString": "contract FeesHelper"
                    }
                  },
                  "id": 42763,
                  "nodeType": "InheritanceSpecifier",
                  "src": "432:10:151"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                5832,
                6055,
                6341,
                27492,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": "@title Perform token swaps for loans and trades.\n",
              "fullyImplemented": true,
              "id": 43249,
              "linearizedBaseContracts": [
                43249,
                27492,
                5832,
                6341,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913,
                6055
              ],
              "name": "SwapsUser",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 42842,
                    "nodeType": "Block",
                    "src": "1571:822:151",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 42813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 42790,
                                "name": "destTokenAmountReceived",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42784,
                                "src": "1576:23:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 42791,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42786,
                                "src": "1601:21:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 42792,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "1575:48:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 42794,
                                    "name": "sourceToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42767,
                                    "src": "1647:11:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 42795,
                                    "name": "destToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42769,
                                    "src": "1664:9:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 42797,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 45322,
                                        "src": "1687:4:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_SwapsUser_$43249",
                                          "typeString": "contract SwapsUser"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_SwapsUser_$43249",
                                          "typeString": "contract SwapsUser"
                                        }
                                      ],
                                      "id": 42796,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1679:7:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 42798,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1679:13:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 42800,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 45322,
                                        "src": "1718:4:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_SwapsUser_$43249",
                                          "typeString": "contract SwapsUser"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_SwapsUser_$43249",
                                          "typeString": "contract SwapsUser"
                                        }
                                      ],
                                      "id": 42799,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1710:7:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 42801,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1710:13:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 42802,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42771,
                                    "src": "1747:4:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "id": 42803,
                                "isConstant": false,
                                "isInlineArray": true,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1641:115:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                  "typeString": "address[5] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 42804,
                                    "name": "minSourceTokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42773,
                                    "src": "1762:20:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 42805,
                                    "name": "maxSourceTokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42775,
                                    "src": "1784:20:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 42806,
                                    "name": "requiredDestTokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42777,
                                    "src": "1806:23:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 42807,
                                "isConstant": false,
                                "isInlineArray": true,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1761:69:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 42808,
                                "name": "loanId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42765,
                                "src": "1835:6:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 42809,
                                "name": "bypassFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42779,
                                "src": "1846:9:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 42810,
                                "name": "loanDataBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42781,
                                "src": "1860:13:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 42811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1878:5:151",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                  "typeString": "address[5] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 42793,
                              "name": "_swapsCall",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43109,
                              "src": "1626:10:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$5_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$_t_bytes32_$_t_bool_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address[5] memory,uint256[3] memory,bytes32,bool,bytes memory,bool) returns (uint256,uint256)"
                              }
                            },
                            "id": 42812,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1626:339:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "1575:390:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42814,
                        "nodeType": "ExpressionStatement",
                        "src": "1575:390:151"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 42816,
                              "name": "sourceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42767,
                              "src": "2027:11:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42817,
                              "name": "sourceTokenAmountUsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42786,
                              "src": "2040:21:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 42815,
                            "name": "_checkSwapSize",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43248,
                            "src": "2012:14:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) view"
                            }
                          },
                          "id": 42818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2012:50:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42819,
                        "nodeType": "ExpressionStatement",
                        "src": "2012:50:151"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 42831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 42820,
                            "name": "sourceToDestSwapRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42788,
                            "src": "2108:20:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 42825,
                                "name": "sourceToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42767,
                                "src": "2182:11:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 42826,
                                "name": "destToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42769,
                                "src": "2198:9:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 42827,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42786,
                                "src": "2212:21:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 42828,
                                "name": "destTokenAmountReceived",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42784,
                                "src": "2238:23:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 42829,
                                "name": "maxDisagreement",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4719,
                                "src": "2266:15:151",
                                "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_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 42822,
                                    "name": "priceFeeds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4575,
                                    "src": "2143:10:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 42821,
                                  "name": "IPriceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8707,
                                  "src": "2131:11:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                    "typeString": "type(contract IPriceFeeds)"
                                  }
                                },
                                "id": 42823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2131:23:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                  "typeString": "contract IPriceFeeds"
                                }
                              },
                              "id": 42824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "checkPriceDisagreement",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8630,
                              "src": "2131:46:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,address,uint256,uint256,uint256) view external returns (uint256)"
                              }
                            },
                            "id": 42830,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2131:154:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2108:177:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 42832,
                        "nodeType": "ExpressionStatement",
                        "src": "2108:177:151"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 42834,
                              "name": "loanId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42765,
                              "src": "2304:6:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42835,
                              "name": "sourceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42767,
                              "src": "2312:11:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42836,
                              "name": "destToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42769,
                              "src": "2325:9:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42837,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42771,
                              "src": "2336:4:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42838,
                              "name": "sourceTokenAmountUsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42786,
                              "src": "2342:21:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 42839,
                              "name": "destTokenAmountReceived",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42784,
                              "src": "2365:23:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "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": 42833,
                            "name": "LoanSwap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6328,
                            "src": "2295:8:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 42840,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2295:94:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42841,
                        "nodeType": "EmitStatement",
                        "src": "2290:99:151"
                      }
                    ]
                  },
                  "documentation": "@notice Internal loan swap.\n\t * @param loanId The ID of the loan.\n@param sourceToken The address of the source tokens.\n@param destToken The address of destiny tokens.\n@param user The user address.\n@param minSourceTokenAmount The minimum amount of source tokens to swap.\n@param maxSourceTokenAmount The maximum amount of source tokens to swap.\n@param requiredDestTokenAmount The required amount of destination tokens.\n@param bypassFee To bypass or not the fee.\n@param loanDataBytes The payload for the call. These loan DataBytes are\n  additional loan data (not in use for token swaps).\n\t * @return destTokenAmountReceived\n@return sourceTokenAmountUsed\n@return sourceToDestSwapRate\n",
                  "id": 42843,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_loanSwap",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42782,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42765,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 42843,
                        "src": "1216:14:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 42764,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1216:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42767,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 42843,
                        "src": "1234:19:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42766,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1234:7:151",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42769,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 42843,
                        "src": "1257:17:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42768,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1257:7:151",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42771,
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "scope": 42843,
                        "src": "1278:12:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42770,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1278:7:151",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42773,
                        "name": "minSourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 42843,
                        "src": "1294:28:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42772,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1294:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42775,
                        "name": "maxSourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 42843,
                        "src": "1326:28:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42774,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1326:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42777,
                        "name": "requiredDestTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 42843,
                        "src": "1358:31:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42776,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1358:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42779,
                        "name": "bypassFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 42843,
                        "src": "1393:14:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 42778,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1393:4:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42781,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 42843,
                        "src": "1411:26:151",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 42780,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1411:5:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1212:228:151"
                  },
                  "returnParameters": {
                    "id": 42789,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42784,
                        "name": "destTokenAmountReceived",
                        "nodeType": "VariableDeclaration",
                        "scope": 42843,
                        "src": "1467:31:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42783,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1467:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42786,
                        "name": "sourceTokenAmountUsed",
                        "nodeType": "VariableDeclaration",
                        "scope": 42843,
                        "src": "1503:29:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42785,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1503:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42788,
                        "name": "sourceToDestSwapRate",
                        "nodeType": "VariableDeclaration",
                        "scope": 42843,
                        "src": "1537:28:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42787,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1537:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1462:107:151"
                  },
                  "scope": 43249,
                  "src": "1194:1199:151",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 43108,
                    "nodeType": "Block",
                    "src": "3123:2552:151",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 42877,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 42871,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 42867,
                                    "name": "vals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42851,
                                    "src": "3381:4:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 42869,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 42868,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3386:1:151",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3381:7:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 42870,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3392:1:151",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3381:12:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 42876,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 42872,
                                    "name": "vals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42851,
                                    "src": "3397:4:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 42874,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 42873,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3402:1:151",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3397:7:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 42875,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3408:1:151",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3397:12:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3381:28:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6d696e206f72206d617820736f7572636520746f6b656e20616d6f756e74206e6565647320746f20626520736574",
                              "id": 42878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3411:48:151",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c330f2326ba5002d5c8a913f862ceceaaee1a27c21329cd9d5e4974ffe3b2ffe",
                                "typeString": "literal_string \"min or max source token amount needs to be set\""
                              },
                              "value": "min or max source token amount needs to be set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c330f2326ba5002d5c8a913f862ceceaaee1a27c21329cd9d5e4974ffe3b2ffe",
                                "typeString": "literal_string \"min or max source token amount needs to be set\""
                              }
                            ],
                            "id": 42866,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3373:7:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3373:87:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42880,
                        "nodeType": "ExpressionStatement",
                        "src": "3373:87:151"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 42885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 42881,
                              "name": "vals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42851,
                              "src": "3469:4:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 42883,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 42882,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3474:1:151",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3469:7:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 42884,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3480:1:151",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3469:12:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 42895,
                        "nodeType": "IfStatement",
                        "src": "3465:45:151",
                        "trueBody": {
                          "id": 42894,
                          "nodeType": "Block",
                          "src": "3483:27:151",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 42892,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 42886,
                                    "name": "vals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42851,
                                    "src": "3488:4:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 42888,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 42887,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3493:1:151",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3488:7:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 42889,
                                    "name": "vals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42851,
                                    "src": "3498:4:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 42891,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 42890,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3503:1:151",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3498:7:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3488:17:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 42893,
                              "nodeType": "ExpressionStatement",
                              "src": "3488:17:151"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 42903,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 42897,
                                  "name": "vals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42851,
                                  "src": "3521:4:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                    "typeString": "uint256[3] memory"
                                  }
                                },
                                "id": 42899,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 42898,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3526:1:151",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3521:7:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 42900,
                                  "name": "vals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42851,
                                  "src": "3532:4:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                    "typeString": "uint256[3] memory"
                                  }
                                },
                                "id": 42902,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 42901,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3537:1:151",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3532:7:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3521:18:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "736f75726365416d6f756e74206c6172676572207468616e206d6178",
                              "id": 42904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3541:30:151",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5e935db87950dc52505217a960704564bf0abf0f10575199050c0ecf2366fe2f",
                                "typeString": "literal_string \"sourceAmount larger than max\""
                              },
                              "value": "sourceAmount larger than max"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5e935db87950dc52505217a960704564bf0abf0f10575199050c0ecf2366fe2f",
                                "typeString": "literal_string \"sourceAmount larger than max\""
                              }
                            ],
                            "id": 42896,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3513:7:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 42905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3513:59:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42906,
                        "nodeType": "ExpressionStatement",
                        "src": "3513:59:151"
                      },
                      {
                        "assignments": [
                          42908
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42908,
                            "name": "destTokenAmountReceived",
                            "nodeType": "VariableDeclaration",
                            "scope": 43108,
                            "src": "3577:31:151",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 42907,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3577:7:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42909,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3577:31:151"
                      },
                      {
                        "assignments": [
                          42911
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42911,
                            "name": "sourceTokenAmountUsed",
                            "nodeType": "VariableDeclaration",
                            "scope": 43108,
                            "src": "3612:29:151",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 42910,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3612:7:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42912,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3612:29:151"
                      },
                      {
                        "assignments": [
                          42914
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 42914,
                            "name": "tradingFee",
                            "nodeType": "VariableDeclaration",
                            "scope": 43108,
                            "src": "3646:18:151",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 42913,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3646:7:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 42915,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3646:18:151"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 42917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3672:9:151",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 42916,
                            "name": "miscBool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42855,
                            "src": "3673:8:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 43013,
                        "nodeType": "IfStatement",
                        "src": "3668:851:151",
                        "trueBody": {
                          "id": 43012,
                          "nodeType": "Block",
                          "src": "3683:836:151",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 42922,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 42918,
                                    "name": "vals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42851,
                                    "src": "3709:4:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 42920,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 42919,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3714:1:151",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3709:7:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 42921,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3720:1:151",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3709:12:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 43010,
                                "nodeType": "Block",
                                "src": "4244:271:151",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "id": 42974,
                                      "name": "isSwapExternal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42859,
                                      "src": "4309:14:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 42992,
                                      "nodeType": "Block",
                                      "src": "4386:50:151",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 42990,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "id": 42984,
                                              "name": "tradingFee",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42914,
                                              "src": "4393:10:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 42986,
                                                    "name": "vals",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 42851,
                                                    "src": "4421:4:151",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                                      "typeString": "uint256[3] memory"
                                                    }
                                                  },
                                                  "id": 42988,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "32",
                                                    "id": 42987,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "4426:1:151",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_2_by_1",
                                                      "typeString": "int_const 2"
                                                    },
                                                    "value": "2"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "4421:7:151",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 42985,
                                                "name": "_getTradingFee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 27072,
                                                "src": "4406:14:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                                  "typeString": "function (uint256) view returns (uint256)"
                                                }
                                              },
                                              "id": 42989,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "4406:23:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "4393:36:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 42991,
                                          "nodeType": "ExpressionStatement",
                                          "src": "4393:36:151"
                                        }
                                      ]
                                    },
                                    "id": 42993,
                                    "nodeType": "IfStatement",
                                    "src": "4305:131:151",
                                    "trueBody": {
                                      "id": 42983,
                                      "nodeType": "Block",
                                      "src": "4325:55:151",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 42981,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "id": 42975,
                                              "name": "tradingFee",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42914,
                                              "src": "4332:10:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 42977,
                                                    "name": "vals",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 42851,
                                                    "src": "4365:4:151",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                                      "typeString": "uint256[3] memory"
                                                    }
                                                  },
                                                  "id": 42979,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "32",
                                                    "id": 42978,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "4370:1:151",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_2_by_1",
                                                      "typeString": "int_const 2"
                                                    },
                                                    "value": "2"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "4365:7:151",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 42976,
                                                "name": "_getSwapExternalFee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 27090,
                                                "src": "4345:19:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                                  "typeString": "function (uint256) view returns (uint256)"
                                                }
                                              },
                                              "id": 42980,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "4345:28:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "4332:41:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 42982,
                                          "nodeType": "ExpressionStatement",
                                          "src": "4332:41:151"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 42996,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42994,
                                        "name": "tradingFee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42914,
                                        "src": "4446:10:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 42995,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4460:1:151",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "4446:15:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 43009,
                                    "nodeType": "IfStatement",
                                    "src": "4442:68:151",
                                    "trueBody": {
                                      "id": 43008,
                                      "nodeType": "Block",
                                      "src": "4463:47:151",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 43006,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 42997,
                                                "name": "vals",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 42851,
                                                "src": "4470:4:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                                  "typeString": "uint256[3] memory"
                                                }
                                              },
                                              "id": 42999,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "32",
                                                "id": 42998,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4475:1:151",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_2_by_1",
                                                  "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "4470:7:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 43004,
                                                  "name": "tradingFee",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 42914,
                                                  "src": "4492:10:151",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 43000,
                                                    "name": "vals",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 42851,
                                                    "src": "4480:4:151",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                                      "typeString": "uint256[3] memory"
                                                    }
                                                  },
                                                  "id": 43002,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "32",
                                                    "id": 43001,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "4485:1:151",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_2_by_1",
                                                      "typeString": "int_const 2"
                                                    },
                                                    "value": "2"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "4480:7:151",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 43003,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "add",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 42076,
                                                "src": "4480:11:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 43005,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "4480:23:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "4470:33:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 43007,
                                          "nodeType": "ExpressionStatement",
                                          "src": "4470:33:151"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 43011,
                              "nodeType": "IfStatement",
                              "src": "3705:810:151",
                              "trueBody": {
                                "id": 42973,
                                "nodeType": "Block",
                                "src": "3723:515:151",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "id": 42923,
                                      "name": "isSwapExternal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42859,
                                      "src": "3797:14:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 42941,
                                      "nodeType": "Block",
                                      "src": "3874:50:151",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 42939,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "id": 42933,
                                              "name": "tradingFee",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42914,
                                              "src": "3881:10:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 42935,
                                                    "name": "vals",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 42851,
                                                    "src": "3909:4:151",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                                      "typeString": "uint256[3] memory"
                                                    }
                                                  },
                                                  "id": 42937,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "30",
                                                    "id": 42936,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3914:1:151",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "3909:7:151",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 42934,
                                                "name": "_getTradingFee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 27072,
                                                "src": "3894:14:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                                  "typeString": "function (uint256) view returns (uint256)"
                                                }
                                              },
                                              "id": 42938,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "3894:23:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "3881:36:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 42940,
                                          "nodeType": "ExpressionStatement",
                                          "src": "3881:36:151"
                                        }
                                      ]
                                    },
                                    "id": 42942,
                                    "nodeType": "IfStatement",
                                    "src": "3793:131:151",
                                    "trueBody": {
                                      "id": 42932,
                                      "nodeType": "Block",
                                      "src": "3813:55:151",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 42930,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "id": 42924,
                                              "name": "tradingFee",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42914,
                                              "src": "3820:10:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 42926,
                                                    "name": "vals",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 42851,
                                                    "src": "3853:4:151",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                                      "typeString": "uint256[3] memory"
                                                    }
                                                  },
                                                  "id": 42928,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "30",
                                                    "id": 42927,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3858:1:151",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "3853:7:151",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 42925,
                                                "name": "_getSwapExternalFee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 27090,
                                                "src": "3833:19:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                                  "typeString": "function (uint256) view returns (uint256)"
                                                }
                                              },
                                              "id": 42929,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "3833:28:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "3820:41:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 42931,
                                          "nodeType": "ExpressionStatement",
                                          "src": "3820:41:151"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 42945,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 42943,
                                        "name": "tradingFee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42914,
                                        "src": "3934:10:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 42944,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3948:1:151",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "3934:15:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 42972,
                                    "nodeType": "IfStatement",
                                    "src": "3930:303:151",
                                    "trueBody": {
                                      "id": 42971,
                                      "nodeType": "Block",
                                      "src": "3951:282:151",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 42947,
                                                  "name": "addrs",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 42847,
                                                  "src": "3980:5:151",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                                    "typeString": "address[5] memory"
                                                  }
                                                },
                                                "id": 42949,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "34",
                                                  "id": 42948,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "3986:1:151",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_4_by_1",
                                                    "typeString": "int_const 4"
                                                  },
                                                  "value": "4"
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "3980:8:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 42950,
                                                "name": "loanId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 42853,
                                                "src": "4005:6:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 42951,
                                                  "name": "addrs",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 42847,
                                                  "src": "4019:5:151",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                                    "typeString": "address[5] memory"
                                                  }
                                                },
                                                "id": 42953,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "30",
                                                  "id": 42952,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "4025:1:151",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  },
                                                  "value": "0"
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "4019:8:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 42954,
                                                  "name": "addrs",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 42847,
                                                  "src": "4062:5:151",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                                    "typeString": "address[5] memory"
                                                  }
                                                },
                                                "id": 42956,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "31",
                                                  "id": 42955,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "4068:1:151",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                  },
                                                  "value": "1"
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "4062:8:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 42957,
                                                "name": "tradingFee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 42914,
                                                "src": "4168:10:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 42946,
                                              "name": "_payTradingFee",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 27232,
                                              "src": "3958:14:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,bytes32,address,address,uint256)"
                                              }
                                            },
                                            "id": 42958,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3958:227:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 42959,
                                          "nodeType": "ExpressionStatement",
                                          "src": "3958:227:151"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 42969,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 42960,
                                                "name": "vals",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 42851,
                                                "src": "4193:4:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                                  "typeString": "uint256[3] memory"
                                                }
                                              },
                                              "id": 42962,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "30",
                                                "id": 42961,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4198:1:151",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "4193:7:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 42967,
                                                  "name": "tradingFee",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 42914,
                                                  "src": "4215:10:151",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 42963,
                                                    "name": "vals",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 42851,
                                                    "src": "4203:4:151",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                                      "typeString": "uint256[3] memory"
                                                    }
                                                  },
                                                  "id": 42965,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "30",
                                                    "id": 42964,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "4208:1:151",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "4203:7:151",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 42966,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 42092,
                                                "src": "4203:11:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 42968,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "4203:23:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "4193:33:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 42970,
                                          "nodeType": "ExpressionStatement",
                                          "src": "4193:33:151"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 43018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 43015,
                                  "name": "loanDataBytes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42857,
                                  "src": "4531:13:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 43016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4531:20:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 43017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4555:1:151",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4531:25:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e76616c6964207374617465",
                              "id": 43019,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4558:15:151",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_de12ab57a0daa634f488033127dcfe962870ebf8c9e1b7fcbcea396d614f7ebb",
                                "typeString": "literal_string \"invalid state\""
                              },
                              "value": "invalid state"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_de12ab57a0daa634f488033127dcfe962870ebf8c9e1b7fcbcea396d614f7ebb",
                                "typeString": "literal_string \"invalid state\""
                              }
                            ],
                            "id": 43014,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4523:7:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 43020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4523:51:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 43021,
                        "nodeType": "ExpressionStatement",
                        "src": "4523:51:151"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 43029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 43022,
                                "name": "destTokenAmountReceived",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42908,
                                "src": "4580:23:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 43023,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42911,
                                "src": "4605:21:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 43024,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "4579:48:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 43026,
                                "name": "addrs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42847,
                                "src": "4650:5:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                  "typeString": "address[5] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 43027,
                                "name": "vals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42851,
                                "src": "4657:4:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                  "typeString": "address[5] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                }
                              ],
                              "id": 43025,
                              "name": "_swapsCall_internal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43175,
                              "src": "4630:19:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$5_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address[5] memory,uint256[3] memory) returns (uint256,uint256)"
                              }
                            },
                            "id": 43028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4630:32:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "4579:83:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 43030,
                        "nodeType": "ExpressionStatement",
                        "src": "4579:83:151"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 43035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 43031,
                              "name": "vals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42851,
                              "src": "4671:4:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 43033,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 43032,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4676:1:151",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4671:7:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 43034,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4682:1:151",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4671:12:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 43102,
                          "nodeType": "Block",
                          "src": "4974:638:151",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 43063,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 43059,
                                      "name": "sourceTokenAmountUsed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42911,
                                      "src": "5131:21:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 43060,
                                        "name": "vals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42851,
                                        "src": "5156:4:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                          "typeString": "uint256[3] memory"
                                        }
                                      },
                                      "id": 43062,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 43061,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5161:1:151",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5156:7:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5131:32:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "737761702066696c6c20746f6f206c61726765",
                                    "id": 43064,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5165:21:151",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_4c9cafc1e2a6c5f6d6cc48bb9c37808b664dab6f4768902b14f6bf12ad097600",
                                      "typeString": "literal_string \"swap fill too large\""
                                    },
                                    "value": "swap fill too large"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_4c9cafc1e2a6c5f6d6cc48bb9c37808b664dab6f4768902b14f6bf12ad097600",
                                      "typeString": "literal_string \"swap fill too large\""
                                    }
                                  ],
                                  "id": 43058,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "5123:7:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 43065,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5123:64:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 43066,
                              "nodeType": "ExpressionStatement",
                              "src": "5123:64:151"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 43072,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 43068,
                                      "name": "destTokenAmountReceived",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42908,
                                      "src": "5200:23:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 43069,
                                        "name": "vals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42851,
                                        "src": "5227:4:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                          "typeString": "uint256[3] memory"
                                        }
                                      },
                                      "id": 43071,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 43070,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5232:1:151",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5227:7:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5200:34:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "696e73756666696369656e742073776170206c6971756964697479",
                                    "id": 43073,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5236:29:151",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_1f7e01a7c5a7cf1fc38aa091aa69a4409af90ca83272ee36036642b44beddec8",
                                      "typeString": "literal_string \"insufficient swap liquidity\""
                                    },
                                    "value": "insufficient swap liquidity"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_1f7e01a7c5a7cf1fc38aa091aa69a4409af90ca83272ee36036642b44beddec8",
                                      "typeString": "literal_string \"insufficient swap liquidity\""
                                    }
                                  ],
                                  "id": 43067,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "5192:7:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 43074,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5192:74:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 43075,
                              "nodeType": "ExpressionStatement",
                              "src": "5192:74:151"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 43078,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 43076,
                                  "name": "tradingFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42914,
                                  "src": "5276:10:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 43077,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5290:1:151",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5276:15:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 43101,
                              "nodeType": "IfStatement",
                              "src": "5272:336:151",
                              "trueBody": {
                                "id": 43100,
                                "nodeType": "Block",
                                "src": "5293:315:151",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 43080,
                                            "name": "addrs",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42847,
                                            "src": "5320:5:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                              "typeString": "address[5] memory"
                                            }
                                          },
                                          "id": 43082,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "34",
                                            "id": 43081,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5326:1:151",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            },
                                            "value": "4"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "5320:8:151",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 43083,
                                          "name": "loanId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 42853,
                                          "src": "5344:6:151",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 43084,
                                            "name": "addrs",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42847,
                                            "src": "5369:5:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                              "typeString": "address[5] memory"
                                            }
                                          },
                                          "id": 43086,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 43085,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5375:1:151",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "5369:8:151",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 43087,
                                            "name": "addrs",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42847,
                                            "src": "5409:5:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                              "typeString": "address[5] memory"
                                            }
                                          },
                                          "id": 43089,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 43088,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5415:1:151",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "5409:8:151",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 43090,
                                          "name": "tradingFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 42914,
                                          "src": "5514:10:151",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 43079,
                                        "name": "_payTradingFee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27232,
                                        "src": "5299:14:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,bytes32,address,address,uint256)"
                                        }
                                      },
                                      "id": 43091,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5299:231:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 43092,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5299:231:151"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 43098,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 43093,
                                        "name": "destTokenAmountReceived",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42908,
                                        "src": "5537:23:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 43096,
                                            "name": "tradingFee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42914,
                                            "src": "5591:10:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 43094,
                                            "name": "destTokenAmountReceived",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42908,
                                            "src": "5563:23:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 43095,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42092,
                                          "src": "5563:27:151",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 43097,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5563:39:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5537:65:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 43099,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5537:65:151"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 43103,
                        "nodeType": "IfStatement",
                        "src": "4667:945:151",
                        "trueBody": {
                          "id": 43057,
                          "nodeType": "Block",
                          "src": "4685:283:151",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 43041,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 43037,
                                      "name": "sourceTokenAmountUsed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42911,
                                      "src": "4805:21:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 43038,
                                        "name": "vals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42851,
                                        "src": "4830:4:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                          "typeString": "uint256[3] memory"
                                        }
                                      },
                                      "id": 43040,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 43039,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4835:1:151",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4830:7:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4805:32:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "7377617020746f6f206c6172676520746f2066696c6c",
                                    "id": 43042,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4839:24:151",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_f2579451bd8fb5e97fd9216357a2b6d1150ebeeee378ba9f8d15ac0fd0eb99a3",
                                      "typeString": "literal_string \"swap too large to fill\""
                                    },
                                    "value": "swap too large to fill"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_f2579451bd8fb5e97fd9216357a2b6d1150ebeeee378ba9f8d15ac0fd0eb99a3",
                                      "typeString": "literal_string \"swap too large to fill\""
                                    }
                                  ],
                                  "id": 43036,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "4797:7:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 43043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4797:67:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 43044,
                              "nodeType": "ExpressionStatement",
                              "src": "4797:67:151"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 43047,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 43045,
                                  "name": "tradingFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42914,
                                  "src": "4874:10:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 43046,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4888:1:151",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4874:15:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 43056,
                              "nodeType": "IfStatement",
                              "src": "4870:94:151",
                              "trueBody": {
                                "id": 43055,
                                "nodeType": "Block",
                                "src": "4891:73:151",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 43053,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 43048,
                                        "name": "sourceTokenAmountUsed",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42911,
                                        "src": "4897:21:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 43051,
                                            "name": "tradingFee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42914,
                                            "src": "4947:10:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 43049,
                                            "name": "sourceTokenAmountUsed",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42911,
                                            "src": "4921:21:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 43050,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42076,
                                          "src": "4921:25:151",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 43052,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4921:37:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4897:61:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 43054,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4897:61:151"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 43104,
                              "name": "destTokenAmountReceived",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42908,
                              "src": "5624:23:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43105,
                              "name": "sourceTokenAmountUsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42911,
                              "src": "5649:21:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 43106,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5623:48:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 42865,
                        "id": 43107,
                        "nodeType": "Return",
                        "src": "5616:55:151"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate amount of source and destiny tokens.\n\t * @dev Wrapper for _swapsCall_internal function.\n\t * @param addrs The array of addresses.\n@param vals The array of values.\n@param loanId The Id of the associated loan.\n@param miscBool True/false to bypassFee.\n@param loanDataBytes Additional loan data (not in use yet).\n\t * @return destTokenAmountReceived The amount of destiny tokens received.\n@return sourceTokenAmountUsed The amount of source tokens used.\n",
                  "id": 43109,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_swapsCall",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 42860,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42847,
                        "name": "addrs",
                        "nodeType": "VariableDeclaration",
                        "scope": 43109,
                        "src": "2932:23:151",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                          "typeString": "address[5]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 42844,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2932:7:151",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 42846,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 42845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2940:1:151",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "2932:10:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$5_storage_ptr",
                            "typeString": "address[5]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42851,
                        "name": "vals",
                        "nodeType": "VariableDeclaration",
                        "scope": 43109,
                        "src": "2959:22:151",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 42848,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2959:7:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 42850,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "33",
                            "id": 42849,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2967:1:151",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "2959:10:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                            "typeString": "uint256[3]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42853,
                        "name": "loanId",
                        "nodeType": "VariableDeclaration",
                        "scope": 43109,
                        "src": "2985:14:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 42852,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2985:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42855,
                        "name": "miscBool",
                        "nodeType": "VariableDeclaration",
                        "scope": 43109,
                        "src": "3003:13:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 42854,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3003:4:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42857,
                        "name": "loanDataBytes",
                        "nodeType": "VariableDeclaration",
                        "scope": 43109,
                        "src": "3034:26:151",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 42856,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3034:5:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42859,
                        "name": "isSwapExternal",
                        "nodeType": "VariableDeclaration",
                        "scope": 43109,
                        "src": "3064:19:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 42858,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3064:4:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2928:158:151"
                  },
                  "returnParameters": {
                    "id": 42865,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42862,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 43109,
                        "src": "3105:7:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42861,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3105:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42864,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 43109,
                        "src": "3114:7:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42863,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3114:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3104:18:151"
                  },
                  "scope": 43249,
                  "src": "2909:2766:151",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 43174,
                    "nodeType": "Block",
                    "src": "6186:576:151",
                    "statements": [
                      {
                        "assignments": [
                          43125
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43125,
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "scope": 43174,
                            "src": "6190:17:151",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 43124,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6190:5:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43155,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 43129,
                                      "name": "swapsImpl",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4577,
                                      "src": "6252:9:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 43128,
                                    "name": "ISwapsImpl",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42750,
                                    "src": "6241:10:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ISwapsImpl_$42750_$",
                                      "typeString": "type(contract ISwapsImpl)"
                                    }
                                  },
                                  "id": 43130,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6241:21:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ISwapsImpl_$42750",
                                    "typeString": "contract ISwapsImpl"
                                  }
                                },
                                "id": 43131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "internalSwap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42723,
                                "src": "6241:34:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (address,address,address,address,uint256,uint256,uint256) payable external returns (uint256,uint256)"
                                }
                              },
                              "id": 43132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6241:43:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 43133,
                                "name": "addrs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43113,
                                "src": "6290:5:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                  "typeString": "address[5] memory"
                                }
                              },
                              "id": 43135,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 43134,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6296:1:151",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6290:8:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 43136,
                                "name": "addrs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43113,
                                "src": "6320:5:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                  "typeString": "address[5] memory"
                                }
                              },
                              "id": 43138,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 43137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6326:1:151",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6320:8:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 43139,
                                "name": "addrs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43113,
                                "src": "6348:5:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                  "typeString": "address[5] memory"
                                }
                              },
                              "id": 43141,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 43140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6354:1:151",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6348:8:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 43142,
                                "name": "addrs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43113,
                                "src": "6382:5:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                                  "typeString": "address[5] memory"
                                }
                              },
                              "id": 43144,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "33",
                                "id": 43143,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6388:1:151",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                },
                                "value": "3"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6382:8:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 43145,
                                "name": "vals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43117,
                                "src": "6422:4:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                }
                              },
                              "id": 43147,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 43146,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6427:1:151",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6422:7:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 43148,
                                "name": "vals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43117,
                                "src": "6460:4:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                }
                              },
                              "id": 43150,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 43149,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6465:1:151",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6460:7:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 43151,
                                "name": "vals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43117,
                                "src": "6498:4:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                }
                              },
                              "id": 43153,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 43152,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6503:1:151",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6498:7:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "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"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 43126,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44981,
                              "src": "6213:3:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 43127,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSelector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6213:22:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes4) pure returns (bytes memory)"
                            }
                          },
                          "id": 43154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6213:325:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6190:348:151"
                      },
                      {
                        "assignments": [
                          43157
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43157,
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 43174,
                            "src": "6543:12:151",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 43156,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6543:4:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43158,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6543:12:151"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 43166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 43159,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43157,
                                "src": "6560:7:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 43160,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43125,
                                "src": "6569:4:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "id": 43161,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "6559:15:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 43164,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43125,
                                "src": "6600:4:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 43162,
                                "name": "swapsImpl",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4577,
                                "src": "6577:9:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 43163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "delegatecall",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6577:22:151",
                              "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": 43165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6577:28:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "src": "6559:46:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 43167,
                        "nodeType": "ExpressionStatement",
                        "src": "6559:46:151"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43169,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43157,
                              "src": "6617:7:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "73776170206661696c6564",
                              "id": 43170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6626:13:151",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ee78873f086b2b9a8a45bd119503afa5de538f219e8ce800bdc0024dff6b2f8a",
                                "typeString": "literal_string \"swap failed\""
                              },
                              "value": "swap failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ee78873f086b2b9a8a45bd119503afa5de538f219e8ce800bdc0024dff6b2f8a",
                                "typeString": "literal_string \"swap failed\""
                              }
                            ],
                            "id": 43168,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "6609:7:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 43171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6609:31:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 43172,
                        "nodeType": "ExpressionStatement",
                        "src": "6609:31:151"
                      },
                      {
                        "externalReferences": [
                          {
                            "destTokenAmountReceived": {
                              "declaration": 43120,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "6659:23:151",
                              "valueSize": 1
                            }
                          },
                          {
                            "data": {
                              "declaration": 43125,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "6696:4:151",
                              "valueSize": 1
                            }
                          },
                          {
                            "sourceTokenAmountUsed": {
                              "declaration": 43122,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "6710:21:151",
                              "valueSize": 1
                            }
                          },
                          {
                            "data": {
                              "declaration": 43125,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "6745:4:151",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 43173,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    destTokenAmountReceived := mload(add(data, 32))\n    sourceTokenAmountUsed := mload(add(data, 64))\n}",
                        "src": "6645:114:151"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate amount of source and destiny tokens.\n\t * @dev Calls swapsImpl::internalSwap\n\t * @param addrs The array of addresses.\n@param vals The array of values.\n\t * @return destTokenAmountReceived The amount of destiny tokens received.\n@return sourceTokenAmountUsed The amount of source tokens used.\n",
                  "id": 43175,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_swapsCall_internal",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43118,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43113,
                        "name": "addrs",
                        "nodeType": "VariableDeclaration",
                        "scope": 43175,
                        "src": "6050:23:151",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$5_memory_ptr",
                          "typeString": "address[5]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 43110,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6050:7:151",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 43112,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 43111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6058:1:151",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "6050:10:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$5_storage_ptr",
                            "typeString": "address[5]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43117,
                        "name": "vals",
                        "nodeType": "VariableDeclaration",
                        "scope": 43175,
                        "src": "6075:22:151",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 43114,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6075:7:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 43116,
                          "length": {
                            "argumentTypes": null,
                            "hexValue": "33",
                            "id": 43115,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6083:1:151",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "nodeType": "ArrayTypeName",
                          "src": "6075:10:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                            "typeString": "uint256[3]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6049:49:151"
                  },
                  "returnParameters": {
                    "id": 43123,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43120,
                        "name": "destTokenAmountReceived",
                        "nodeType": "VariableDeclaration",
                        "scope": 43175,
                        "src": "6121:31:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6121:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43122,
                        "name": "sourceTokenAmountUsed",
                        "nodeType": "VariableDeclaration",
                        "scope": 43175,
                        "src": "6154:29:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43121,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6154:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6120:64:151"
                  },
                  "scope": 43249,
                  "src": "6021:741:151",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 43198,
                    "nodeType": "Block",
                    "src": "7281:164:151",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 43196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 43186,
                            "name": "destTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43184,
                            "src": "7285:15:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 43191,
                                "name": "sourceToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43177,
                                "src": "7352:11:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 43192,
                                "name": "destToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43179,
                                "src": "7368:9:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 43193,
                                "name": "sourceTokenAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43181,
                                "src": "7382:17:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 43194,
                                "name": "sovrynSwapContractRegistryAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4579,
                                "src": "7404:33:151",
                                "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": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 43188,
                                    "name": "swapsImpl",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4577,
                                    "src": "7314:9:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 43187,
                                  "name": "ISwapsImpl",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42750,
                                  "src": "7303:10:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ISwapsImpl_$42750_$",
                                    "typeString": "type(contract ISwapsImpl)"
                                  }
                                },
                                "id": 43189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7303:21:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ISwapsImpl_$42750",
                                  "typeString": "contract ISwapsImpl"
                                }
                              },
                              "id": 43190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "internalExpectedReturn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42749,
                              "src": "7303:44:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address,address,uint256,address) view external returns (uint256)"
                              }
                            },
                            "id": 43195,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7303:138:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7285:156:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 43197,
                        "nodeType": "ExpressionStatement",
                        "src": "7285:156:151"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate expected amount of destiny tokens.\n\t * @dev Calls swapsImpl::internalExpectedReturn\n\t * @param sourceToken The address of the source tokens.\n@param destToken The address of the destiny tokens.\n@param sourceTokenAmount The amount of the source tokens.\n\t * @param destTokenAmount The amount of destiny tokens.\n",
                  "id": 43199,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_swapsExpectedReturn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43182,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43177,
                        "name": "sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 43199,
                        "src": "7160:19:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43176,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7160:7:151",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43179,
                        "name": "destToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 43199,
                        "src": "7183:17:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43178,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7183:7:151",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43181,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43199,
                        "src": "7204:25:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43180,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7204:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7156:76:151"
                  },
                  "returnParameters": {
                    "id": 43185,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43184,
                        "name": "destTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43199,
                        "src": "7256:23:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43183,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7256:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7255:25:151"
                  },
                  "scope": 43249,
                  "src": "7127:318:151",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 43247,
                    "nodeType": "Block",
                    "src": "7782:322:151",
                    "statements": [
                      {
                        "assignments": [
                          43207
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43207,
                            "name": "_maxSwapSize",
                            "nodeType": "VariableDeclaration",
                            "scope": 43247,
                            "src": "7786:20:151",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 43206,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7786:7:151",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43209,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 43208,
                          "name": "maxSwapSize",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4725,
                          "src": "7809:11:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7786:34:151"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 43212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 43210,
                            "name": "_maxSwapSize",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43207,
                            "src": "7828:12:151",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 43211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7844:1:151",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7828:17:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 43246,
                        "nodeType": "IfStatement",
                        "src": "7824:277:151",
                        "trueBody": {
                          "id": 43245,
                          "nodeType": "Block",
                          "src": "7847:254:151",
                          "statements": [
                            {
                              "assignments": [
                                43214
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 43214,
                                  "name": "amountInEth",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 43245,
                                  "src": "7852:19:151",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 43213,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7852:7:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 43215,
                              "initialValue": null,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7852:19:151"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 43220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 43216,
                                  "name": "tokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43201,
                                  "src": "7880:12:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 43218,
                                      "name": "wrbtcToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4737,
                                      "src": "7904:10:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                        "typeString": "contract IWrbtcERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IWrbtcERC20_$25559",
                                        "typeString": "contract IWrbtcERC20"
                                      }
                                    ],
                                    "id": 43217,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7896:7:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 43219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7896:19:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "7880:35:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 43236,
                                "nodeType": "Block",
                                "src": "7955:83:151",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 43234,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 43226,
                                        "name": "amountInEth",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 43214,
                                        "src": "7961:11:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 43231,
                                            "name": "tokenAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 43201,
                                            "src": "8011:12:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 43232,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 43203,
                                            "src": "8025:6:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 43228,
                                                "name": "priceFeeds",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4575,
                                                "src": "7987:10:151",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 43227,
                                              "name": "IPriceFeeds",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8707,
                                              "src": "7975:11:151",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                                "typeString": "type(contract IPriceFeeds)"
                                              }
                                            },
                                            "id": 43229,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7975:23:151",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                              "typeString": "contract IPriceFeeds"
                                            }
                                          },
                                          "id": 43230,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amountInEth",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8639,
                                          "src": "7975:35:151",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (address,uint256) view external returns (uint256)"
                                          }
                                        },
                                        "id": 43233,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7975:57:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7961:71:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 43235,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7961:71:151"
                                  }
                                ]
                              },
                              "id": 43237,
                              "nodeType": "IfStatement",
                              "src": "7876:162:151",
                              "trueBody": {
                                "id": 43225,
                                "nodeType": "Block",
                                "src": "7917:32:151",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 43223,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 43221,
                                        "name": "amountInEth",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 43214,
                                        "src": "7923:11:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 43222,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 43203,
                                        "src": "7937:6:151",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7923:20:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 43224,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7923:20:151"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 43241,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 43239,
                                      "name": "amountInEth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 43214,
                                      "src": "8050:11:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 43240,
                                      "name": "_maxSwapSize",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 43207,
                                      "src": "8065:12:151",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8050:27:151",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "7377617020746f6f206c61726765",
                                    "id": 43242,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8079:16:151",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_7d5c26af7ca3fa2be069c31122e0d173bdc69e9462307145976712dba39d7d16",
                                      "typeString": "literal_string \"swap too large\""
                                    },
                                    "value": "swap too large"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_7d5c26af7ca3fa2be069c31122e0d173bdc69e9462307145976712dba39d7d16",
                                      "typeString": "literal_string \"swap too large\""
                                    }
                                  ],
                                  "id": 43238,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "8042:7:151",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 43243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8042:54:151",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 43244,
                              "nodeType": "ExpressionStatement",
                              "src": "8042:54:151"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Verify that the amount of tokens are under the swap limit.\n\t * @dev Calls priceFeeds::amountInEth\n\t * @param tokenAddress The address of the token to calculate price.\n@param amount The amount of tokens to calculate price.\n",
                  "id": 43248,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkSwapSize",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43204,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43201,
                        "name": "tokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43248,
                        "src": "7730:20:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43200,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7730:7:151",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43203,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43248,
                        "src": "7752:14:151",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43202,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7752:7:151",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7729:38:151"
                  },
                  "returnParameters": {
                    "id": 43205,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7782:0:151"
                  },
                  "scope": 43249,
                  "src": "7706:398:151",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                }
              ],
              "scope": 43250,
              "src": "390:7716:151"
            }
          ],
          "src": "141:7966:151"
        },
        "id": 151
      },
      "contracts/swaps/connectors/SwapsImplSovrynSwap.sol": {
        "ast": {
          "absolutePath": "contracts/swaps/connectors/SwapsImplSovrynSwap.sol",
          "exportedSymbols": {
            "SwapsImplSovrynSwap": [
              43677
            ]
          },
          "id": 43678,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 43251,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:152"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../../core/State.sol",
              "id": 43252,
              "nodeType": "ImportDirective",
              "scope": 43678,
              "sourceUnit": 4842,
              "src": "25:30:152",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/feeds/IPriceFeeds.sol",
              "file": "../../feeds/IPriceFeeds.sol",
              "id": 43253,
              "nodeType": "ImportDirective",
              "scope": 43678,
              "sourceUnit": 8708,
              "src": "56:37:152",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeERC20.sol",
              "file": "../../openzeppelin/SafeERC20.sol",
              "id": 43254,
              "nodeType": "ImportDirective",
              "scope": 43678,
              "sourceUnit": 42050,
              "src": "94:42:152",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/swaps/ISwapsImpl.sol",
              "file": "../ISwapsImpl.sol",
              "id": 43255,
              "nodeType": "ImportDirective",
              "scope": 43678,
              "sourceUnit": 42751,
              "src": "137:27:152",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/swaps/connectors/interfaces/ISovrynSwapNetwork.sol",
              "file": "./interfaces/ISovrynSwapNetwork.sol",
              "id": 43256,
              "nodeType": "ImportDirective",
              "scope": 43678,
              "sourceUnit": 43730,
              "src": "165:45:152",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/swaps/connectors/interfaces/IContractRegistry.sol",
              "file": "./interfaces/IContractRegistry.sol",
              "id": 43257,
              "nodeType": "ImportDirective",
              "scope": 43678,
              "sourceUnit": 43688,
              "src": "211:44:152",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 43258,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "617:5:152",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 43259,
                  "nodeType": "InheritanceSpecifier",
                  "src": "617:5:152"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 43260,
                    "name": "ISwapsImpl",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42750,
                    "src": "624:10:152",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ISwapsImpl_$42750",
                      "typeString": "contract ISwapsImpl"
                    }
                  },
                  "id": 43261,
                  "nodeType": "InheritanceSpecifier",
                  "src": "624:10:152"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                41125,
                41798,
                41829,
                42750
              ],
              "contractKind": "contract",
              "documentation": "@title Swaps Implementation Sovryn contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the implementation of swap process and rate\ncalculations for Sovryn network.\n",
              "fullyImplemented": true,
              "id": 43677,
              "linearizedBaseContracts": [
                43677,
                42750,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "SwapsImplSovrynSwap",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 43264,
                  "libraryName": {
                    "contractScope": null,
                    "id": 43262,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42049,
                    "src": "644:9:152",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$42049",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "638:27:152",
                  "typeName": {
                    "contractScope": null,
                    "id": 43263,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "658:6:152",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "body": {
                    "id": 43272,
                    "nodeType": "Block",
                    "src": "933:57:152",
                    "statements": [
                      {
                        "externalReferences": [
                          {
                            "result": {
                              "declaration": 43269,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "951:6:152",
                              "valueSize": 1
                            }
                          },
                          {
                            "source": {
                              "declaration": 43266,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "971:6:152",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 43271,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    result := mload(add(source, 32))\n}",
                        "src": "937:50:152"
                      }
                    ]
                  },
                  "documentation": "Get the hex name of a contract.\n@param source The name of the contract.\n",
                  "id": 43273,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getContractHexName",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43267,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43266,
                        "name": "source",
                        "nodeType": "VariableDeclaration",
                        "scope": 43273,
                        "src": "874:20:152",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 43265,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "874:6:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "873:22:152"
                  },
                  "returnParameters": {
                    "id": 43270,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43269,
                        "name": "result",
                        "nodeType": "VariableDeclaration",
                        "scope": 43273,
                        "src": "917:14:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 43268,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "917:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "916:16:152"
                  },
                  "scope": 43677,
                  "src": "846:144:152",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 43295,
                    "nodeType": "Block",
                    "src": "1263:391:152",
                    "statements": [
                      {
                        "assignments": [
                          43281
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43281,
                            "name": "contractRegistry",
                            "nodeType": "VariableDeclaration",
                            "scope": 43295,
                            "src": "1471:34:152",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IContractRegistry_$43687",
                              "typeString": "contract IContractRegistry"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 43280,
                              "name": "IContractRegistry",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 43687,
                              "src": "1471:17:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IContractRegistry_$43687",
                                "typeString": "contract IContractRegistry"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43285,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43283,
                              "name": "sovrynSwapRegistryAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43275,
                              "src": "1526:25:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 43282,
                            "name": "IContractRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43687,
                            "src": "1508:17:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IContractRegistry_$43687_$",
                              "typeString": "type(contract IContractRegistry)"
                            }
                          },
                          "id": 43284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1508:44:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IContractRegistry_$43687",
                            "typeString": "contract IContractRegistry"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1471:81:152"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "536f7672796e537761704e6574776f726b",
                                      "id": 43290,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1628:19:152",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_4ff705ab0486892b54b4d7575a1b01ac0f081cbcc8efcb5919c2f54e2bbfb03c",
                                        "typeString": "literal_string \"SovrynSwapNetwork\""
                                      },
                                      "value": "SovrynSwapNetwork"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_4ff705ab0486892b54b4d7575a1b01ac0f081cbcc8efcb5919c2f54e2bbfb03c",
                                        "typeString": "literal_string \"SovrynSwapNetwork\""
                                      }
                                    ],
                                    "id": 43289,
                                    "name": "getContractHexName",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 43273,
                                    "src": "1609:18:152",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (string memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 43291,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1609:39:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 43287,
                                  "name": "contractRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43281,
                                  "src": "1582:16:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IContractRegistry_$43687",
                                    "typeString": "contract IContractRegistry"
                                  }
                                },
                                "id": 43288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "addressOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 43686,
                                "src": "1582:26:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                  "typeString": "function (bytes32) view external returns (address)"
                                }
                              },
                              "id": 43292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1582:67:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 43286,
                            "name": "ISovrynSwapNetwork",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43729,
                            "src": "1563:18:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ISovrynSwapNetwork_$43729_$",
                              "typeString": "type(contract ISovrynSwapNetwork)"
                            }
                          },
                          "id": 43293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1563:87:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                            "typeString": "contract ISovrynSwapNetwork"
                          }
                        },
                        "functionReturnParameters": 43279,
                        "id": 43294,
                        "nodeType": "Return",
                        "src": "1556:94:152"
                      }
                    ]
                  },
                  "documentation": "Look up the Sovryn swap network contract registered at the given address.\n@param sovrynSwapRegistryAddress The address of the registry.\n",
                  "id": 43296,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSovrynSwapNetworkContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43276,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43275,
                        "name": "sovrynSwapRegistryAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43296,
                        "src": "1187:33:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43274,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1187:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1186:35:152"
                  },
                  "returnParameters": {
                    "id": 43279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43278,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 43296,
                        "src": "1243:18:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                          "typeString": "contract ISovrynSwapNetwork"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 43277,
                          "name": "ISovrynSwapNetwork",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 43729,
                          "src": "1243:18:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                            "typeString": "contract ISovrynSwapNetwork"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1242:20:152"
                  },
                  "scope": 43677,
                  "src": "1149:505:152",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 43462,
                    "nodeType": "Block",
                    "src": "3318:2348:152",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 43320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 43318,
                                "name": "sourceTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43298,
                                "src": "3330:18:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 43319,
                                "name": "destTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43300,
                                "src": "3352:16:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3330:38:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "736f75726365203d3d2064657374",
                              "id": 43321,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3370:16:152",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_954932d9e33501ee19ddf1d3cd7e3119af666aaa2a138baeaf48863746d0bfef",
                                "typeString": "literal_string \"source == dest\""
                              },
                              "value": "source == dest"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_954932d9e33501ee19ddf1d3cd7e3119af666aaa2a138baeaf48863746d0bfef",
                                "typeString": "literal_string \"source == dest\""
                              }
                            ],
                            "id": 43317,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3322:7:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 43322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3322:65:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 43323,
                        "nodeType": "ExpressionStatement",
                        "src": "3322:65:152"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 43331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 43325,
                                  "name": "supportedTokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4712,
                                  "src": "3399:15:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 43327,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 43326,
                                  "name": "sourceTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43298,
                                  "src": "3415:18:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3399:35:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 43328,
                                  "name": "supportedTokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4712,
                                  "src": "3438:15:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 43330,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 43329,
                                  "name": "destTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43300,
                                  "src": "3454:16:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3438:33:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3399:72:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e76616c696420746f6b656e73",
                              "id": 43332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3473:16:152",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_62cac98c7f03b33e8dddfe58c00dd8211de9f9167c478e0f775c21754a69135a",
                                "typeString": "literal_string \"invalid tokens\""
                              },
                              "value": "invalid tokens"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_62cac98c7f03b33e8dddfe58c00dd8211de9f9167c478e0f775c21754a69135a",
                                "typeString": "literal_string \"invalid tokens\""
                              }
                            ],
                            "id": 43324,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "3391:7:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 43333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3391:99:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 43334,
                        "nodeType": "ExpressionStatement",
                        "src": "3391:99:152"
                      },
                      {
                        "assignments": [
                          43336
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43336,
                            "name": "sovrynSwapNetwork",
                            "nodeType": "VariableDeclaration",
                            "scope": 43462,
                            "src": "3495:36:152",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                              "typeString": "contract ISovrynSwapNetwork"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 43335,
                              "name": "ISovrynSwapNetwork",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 43729,
                              "src": "3495:18:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                                "typeString": "contract ISovrynSwapNetwork"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43340,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43338,
                              "name": "sovrynSwapContractRegistryAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4579,
                              "src": "3563:33:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 43337,
                            "name": "getSovrynSwapNetworkContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43296,
                            "src": "3534:28:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_contract$_ISovrynSwapNetwork_$43729_$",
                              "typeString": "function (address) view returns (contract ISovrynSwapNetwork)"
                            }
                          },
                          "id": 43339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3534:63:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                            "typeString": "contract ISovrynSwapNetwork"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3495:102:152"
                      },
                      {
                        "assignments": [
                          43344
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43344,
                            "name": "path",
                            "nodeType": "VariableDeclaration",
                            "scope": 43462,
                            "src": "3601:20:152",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                              "typeString": "contract IERC20[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 43342,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 24699,
                                "src": "3601:6:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$24699",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 43343,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3601:8:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43354,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43348,
                                  "name": "sourceTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43298,
                                  "src": "3664:18:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43347,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "3657:6:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 43349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3657:26:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43351,
                                  "name": "destTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43300,
                                  "src": "3692:16:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43350,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "3685:6:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 43352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3685:24:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 43345,
                              "name": "sovrynSwapNetwork",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43336,
                              "src": "3624:17:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                                "typeString": "contract ISovrynSwapNetwork"
                              }
                            },
                            "id": 43346,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "conversionPath",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 43728,
                            "src": "3624:32:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_contract$_IERC20_$24699_$_t_contract$_IERC20_$24699_$returns$_t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr_$",
                              "typeString": "function (contract IERC20,contract IERC20) view external returns (contract IERC20[] memory)"
                            }
                          },
                          "id": 43353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3624:86:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                            "typeString": "contract IERC20[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3601:109:152"
                      },
                      {
                        "assignments": [
                          43356
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43356,
                            "name": "minReturn",
                            "nodeType": "VariableDeclaration",
                            "scope": 43462,
                            "src": "3715:17:152",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 43355,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3715:7:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43358,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 43357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3735:1:152",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3715:21:152"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 43361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 43359,
                            "name": "sourceTokenAmountUsed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43315,
                            "src": "3740:21:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 43360,
                            "name": "minSourceTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43306,
                            "src": "3764:20:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3740:44:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 43362,
                        "nodeType": "ExpressionStatement",
                        "src": "3740:44:152"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 43365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 43363,
                            "name": "requiredDestTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43310,
                            "src": "3994:23:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 43364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4020:1:152",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3994:27:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 43393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 43391,
                              "name": "sourceTokenAmountUsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43315,
                              "src": "4504:21:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 43392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4528:1:152",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "4504:25:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 43409,
                          "nodeType": "IfStatement",
                          "src": "4500:227:152",
                          "trueBody": {
                            "id": 43408,
                            "nodeType": "Block",
                            "src": "4531:196:152",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 43406,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 43394,
                                    "name": "minReturn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 43356,
                                    "src": "4634:9:152",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "31303030",
                                        "id": 43404,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4717:4:152",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1000_by_1",
                                          "typeString": "int_const 1000"
                                        },
                                        "value": "1000"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1000_by_1",
                                          "typeString": "int_const 1000"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "393935",
                                            "id": 43401,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4708:3:152",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_995_by_1",
                                              "typeString": "int_const 995"
                                            },
                                            "value": "995"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_995_by_1",
                                              "typeString": "int_const 995"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 43397,
                                                "name": "path",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 43344,
                                                "src": "4675:4:152",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                                                  "typeString": "contract IERC20[] memory"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 43398,
                                                "name": "sourceTokenAmountUsed",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 43315,
                                                "src": "4681:21:152",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                                                  "typeString": "contract IERC20[] memory"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 43395,
                                                "name": "sovrynSwapNetwork",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 43336,
                                                "src": "4646:17:152",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                                                  "typeString": "contract ISovrynSwapNetwork"
                                                }
                                              },
                                              "id": 43396,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "rateByPath",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 43718,
                                              "src": "4646:28:152",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (contract IERC20[] memory,uint256) view external returns (uint256)"
                                              }
                                            },
                                            "id": 43399,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4646:57:152",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 43400,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 42153,
                                          "src": "4646:61:152",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 43402,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4646:66:152",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 43403,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 42169,
                                      "src": "4646:70:152",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 43405,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4646:76:152",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4634:88:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 43407,
                                "nodeType": "ExpressionStatement",
                                "src": "4634:88:152"
                              }
                            ]
                          }
                        },
                        "id": 43410,
                        "nodeType": "IfStatement",
                        "src": "3990:737:152",
                        "trueBody": {
                          "id": 43390,
                          "nodeType": "Block",
                          "src": "4023:471:152",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 43373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 43366,
                                  "name": "sourceTokenAmountUsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43315,
                                  "src": "4028:21:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 43368,
                                      "name": "sourceTokenAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 43298,
                                      "src": "4083:18:152",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 43369,
                                      "name": "destTokenAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 43300,
                                      "src": "4107:16:152",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 43370,
                                      "name": "requiredDestTokenAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 43310,
                                      "src": "4129:23:152",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 43371,
                                      "name": "maxSourceTokenAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 43308,
                                      "src": "4158:20:152",
                                      "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_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 43367,
                                    "name": "estimateSourceTokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 43582,
                                    "src": "4052:25:152",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (address,address,uint256,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 43372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4052:131:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4028:155:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 43374,
                              "nodeType": "ExpressionStatement",
                              "src": "4028:155:152"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 43382,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 43378,
                                          "name": "path",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 43344,
                                          "src": "4345:4:152",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                                            "typeString": "contract IERC20[] memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 43379,
                                          "name": "sourceTokenAmountUsed",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 43315,
                                          "src": "4351:21:152",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                                            "typeString": "contract IERC20[] memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 43376,
                                          "name": "sovrynSwapNetwork",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 43336,
                                          "src": "4316:17:152",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                                            "typeString": "contract ISovrynSwapNetwork"
                                          }
                                        },
                                        "id": 43377,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "rateByPath",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 43718,
                                        "src": "4316:28:152",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (contract IERC20[] memory,uint256) view external returns (uint256)"
                                        }
                                      },
                                      "id": 43380,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4316:57:152",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 43381,
                                      "name": "requiredDestTokenAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 43310,
                                      "src": "4377:23:152",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4316:84:152",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "696e73756666696369656e7420736f7572636520746f6b656e732070726f76696465642e",
                                    "id": 43383,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4406:38:152",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_95d15815ee644bc136bda84c4bb30300e8035e809447821e7640a532fb8c975a",
                                      "typeString": "literal_string \"insufficient source tokens provided.\""
                                    },
                                    "value": "insufficient source tokens provided."
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_95d15815ee644bc136bda84c4bb30300e8035e809447821e7640a532fb8c975a",
                                      "typeString": "literal_string \"insufficient source tokens provided.\""
                                    }
                                  ],
                                  "id": 43375,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "4303:7:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 43384,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4303:146:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 43385,
                              "nodeType": "ExpressionStatement",
                              "src": "4303:146:152"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 43388,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 43386,
                                  "name": "minReturn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43356,
                                  "src": "4454:9:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 43387,
                                  "name": "requiredDestTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43310,
                                  "src": "4466:23:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4454:35:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 43389,
                              "nodeType": "ExpressionStatement",
                              "src": "4454:35:152"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 43414,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 43412,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43315,
                                "src": "4739:21:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 43413,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4763:1:152",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4739:25:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "63616e6e6f742073776170203020746f6b656e73",
                              "id": 43415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4766:22:152",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0f705f0caa11445af07f00932df8cf3f798b8cfaa61d27768614f54cf7ac636f",
                                "typeString": "literal_string \"cannot swap 0 tokens\""
                              },
                              "value": "cannot swap 0 tokens"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0f705f0caa11445af07f00932df8cf3f798b8cfaa61d27768614f54cf7ac636f",
                                "typeString": "literal_string \"cannot swap 0 tokens\""
                              }
                            ],
                            "id": 43411,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "4731:7:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 43416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4731:58:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 43417,
                        "nodeType": "ExpressionStatement",
                        "src": "4731:58:152"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43419,
                              "name": "sourceTokenAmountUsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43315,
                              "src": "4808:21:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43420,
                              "name": "sourceTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43298,
                              "src": "4831:18:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43422,
                                  "name": "sovrynSwapNetwork",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43336,
                                  "src": "4859:17:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                                    "typeString": "contract ISovrynSwapNetwork"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                                    "typeString": "contract ISovrynSwapNetwork"
                                  }
                                ],
                                "id": 43421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4851:7:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 43423,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4851:26:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 43418,
                            "name": "allowTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43501,
                            "src": "4794:13:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address,address)"
                            }
                          },
                          "id": 43424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4794:84:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 43425,
                        "nodeType": "ExpressionStatement",
                        "src": "4794:84:152"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 43438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 43426,
                            "name": "destTokenAmountReceived",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43313,
                            "src": "5011:23:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 43429,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43344,
                                "src": "5069:4:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                                  "typeString": "contract IERC20[] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 43430,
                                "name": "sourceTokenAmountUsed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43315,
                                "src": "5075:21:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 43431,
                                "name": "minReturn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43356,
                                "src": "5098:9:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 43432,
                                "name": "receiverAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43302,
                                "src": "5109:15:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 43434,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5134:1:152",
                                    "subdenomination": null,
                                    "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": 43433,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5126:7:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 43435,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5126:10:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 43436,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5138:1:152",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                                  "typeString": "contract IERC20[] memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 43427,
                                "name": "sovrynSwapNetwork",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43336,
                                "src": "5037:17:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                                  "typeString": "contract ISovrynSwapNetwork"
                                }
                              },
                              "id": 43428,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "convertByPath",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43708,
                              "src": "5037:31:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$_t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (contract IERC20[] memory,uint256,uint256,address,address,uint256) payable external returns (uint256)"
                              }
                            },
                            "id": 43437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5037:103:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5011:129:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 43439,
                        "nodeType": "ExpressionStatement",
                        "src": "5011:129:152"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 43444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 43440,
                            "name": "returnToSenderAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43304,
                            "src": "5405:21:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 43442,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45342,
                                "src": "5438:4:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_SwapsImplSovrynSwap_$43677",
                                  "typeString": "contract SwapsImplSovrynSwap"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_SwapsImplSovrynSwap_$43677",
                                  "typeString": "contract SwapsImplSovrynSwap"
                                }
                              ],
                              "id": 43441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5430:7:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 43443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5430:13:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5405:38:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 43461,
                        "nodeType": "IfStatement",
                        "src": "5401:262:152",
                        "trueBody": {
                          "id": 43460,
                          "nodeType": "Block",
                          "src": "5445:218:152",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 43447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 43445,
                                  "name": "sourceTokenAmountUsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43315,
                                  "src": "5454:21:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 43446,
                                  "name": "maxSourceTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43308,
                                  "src": "5478:20:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5454:44:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 43459,
                              "nodeType": "IfStatement",
                              "src": "5450:209:152",
                              "trueBody": {
                                "id": 43458,
                                "nodeType": "Block",
                                "src": "5500:159:152",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 43452,
                                          "name": "returnToSenderAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 43304,
                                          "src": "5585:21:152",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 43455,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 43453,
                                            "name": "maxSourceTokenAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 43308,
                                            "src": "5608:20:152",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 43454,
                                            "name": "sourceTokenAmountUsed",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 43315,
                                            "src": "5631:21:152",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "5608:44:152",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 43449,
                                              "name": "sourceTokenAddress",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 43298,
                                              "src": "5552:18:152",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 43448,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24699,
                                            "src": "5545:6:152",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                              "typeString": "type(contract IERC20)"
                                            }
                                          },
                                          "id": 43450,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "5545:26:152",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$24699",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 43451,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "safeTransfer",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 41862,
                                        "src": "5545:39:152",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                                          "typeString": "function (contract IERC20,address,uint256)"
                                        }
                                      },
                                      "id": 43456,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5545:108:152",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 43457,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5545:108:152"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "Swap the source token for the destination token on the oracle based AMM.\nOn loan opening: minSourceTokenAmount = maxSourceTokenAmount and requiredDestTokenAmount = 0\n     -> swap the minSourceTokenAmount\nOn loan rollover: (swap interest) minSourceTokenAmount = 0, maxSourceTokenAmount = complete collateral and requiredDestTokenAmount > 0\n     -> amount of required source tokens to swap is estimated (want to fill requiredDestTokenAmount, not more). maxSourceTokenAMount is not exceeded.\nOn loan closure: minSourceTokenAmount <= maxSourceTokenAmount and requiredDestTokenAmount >= 0\n     -> same as on rollover. minimum amount is not considered at all.\n\t * @param sourceTokenAddress The address of the source tokens.\n@param destTokenAddress The address of the destination tokens.\n@param receiverAddress The address who will received the swap token results\n@param returnToSenderAddress The address to return unspent tokens to (when called by the protocol, it's always the protocol contract).\n@param minSourceTokenAmount The minimum amount of source tokens to swapped (only considered if requiredDestTokens == 0).\n@param maxSourceTokenAmount The maximum amount of source tokens to swapped.\n@param requiredDestTokenAmount The required amount of destination tokens.\n",
                  "id": 43463,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "internalSwap",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43298,
                        "name": "sourceTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43463,
                        "src": "3013:26:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43297,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3013:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43300,
                        "name": "destTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43463,
                        "src": "3043:24:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43299,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3043:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43302,
                        "name": "receiverAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43463,
                        "src": "3071:23:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43301,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3071:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43304,
                        "name": "returnToSenderAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43463,
                        "src": "3098:29:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43303,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3098:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43306,
                        "name": "minSourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43463,
                        "src": "3131:28:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3131:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43308,
                        "name": "maxSourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43463,
                        "src": "3163:28:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43307,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3163:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43310,
                        "name": "requiredDestTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43463,
                        "src": "3195:31:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3195:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3009:220:152"
                  },
                  "returnParameters": {
                    "id": 43316,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43313,
                        "name": "destTokenAmountReceived",
                        "nodeType": "VariableDeclaration",
                        "scope": 43463,
                        "src": "3254:31:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43312,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3254:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43315,
                        "name": "sourceTokenAmountUsed",
                        "nodeType": "VariableDeclaration",
                        "scope": 43463,
                        "src": "3287:29:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43314,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3287:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3253:64:152"
                  },
                  "scope": 43677,
                  "src": "2988:2678:152",
                  "stateMutability": "payable",
                  "superFunction": 42723,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 43500,
                    "nodeType": "Block",
                    "src": "6155:206:152",
                    "statements": [
                      {
                        "assignments": [
                          43473
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43473,
                            "name": "tempAllowance",
                            "nodeType": "VariableDeclaration",
                            "scope": 43500,
                            "src": "6159:21:152",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 43472,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6159:7:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43483,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43479,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45342,
                                  "src": "6222:4:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_SwapsImplSovrynSwap_$43677",
                                    "typeString": "contract SwapsImplSovrynSwap"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_SwapsImplSovrynSwap_$43677",
                                    "typeString": "contract SwapsImplSovrynSwap"
                                  }
                                ],
                                "id": 43478,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6214:7:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 43480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6214:13:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43481,
                              "name": "sovrynSwapNetwork",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43469,
                              "src": "6229:17:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43475,
                                  "name": "tokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43467,
                                  "src": "6190:12:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43474,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "6183:6:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 43476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6183:20:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 43477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "allowance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24653,
                            "src": "6183:30:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 43482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6183:64:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6159:88:152"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 43486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 43484,
                            "name": "tempAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43473,
                            "src": "6255:13:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 43485,
                            "name": "tokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43465,
                            "src": "6271:11:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6255:27:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 43499,
                        "nodeType": "IfStatement",
                        "src": "6251:107:152",
                        "trueBody": {
                          "id": 43498,
                          "nodeType": "Block",
                          "src": "6284:74:152",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 43491,
                                    "name": "sovrynSwapNetwork",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 43469,
                                    "src": "6322:17:152",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 43494,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "6349:2:152",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 43493,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6350:1:152",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      ],
                                      "id": 43492,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6341:7:152",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint256"
                                    },
                                    "id": 43495,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6341:11:152",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 43488,
                                        "name": "tokenAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 43467,
                                        "src": "6296:12:152",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 43487,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24699,
                                      "src": "6289:6:152",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 43489,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6289:20:152",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$24699",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 43490,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeApprove",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 41928,
                                  "src": "6289:32:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 43496,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6289:64:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 43497,
                              "nodeType": "ExpressionStatement",
                              "src": "6289:64:152"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Check whether the existing allowance suffices to transfer\n  the needed amount of tokens.\n  If not, allows the transfer of an arbitrary amount of tokens.\n\t * @param tokenAmount The amount to transfer.\n@param tokenAddress The address of the token to transfer.\n@param sovrynSwapNetwork The address of the sovrynSwap network contract.\n",
                  "id": 43501,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowTransfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43470,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43465,
                        "name": "tokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43501,
                        "src": "6070:19:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43464,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6070:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43467,
                        "name": "tokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43501,
                        "src": "6093:20:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43466,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6093:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43469,
                        "name": "sovrynSwapNetwork",
                        "nodeType": "VariableDeclaration",
                        "scope": 43501,
                        "src": "6117:25:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43468,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6117:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6066:79:152"
                  },
                  "returnParameters": {
                    "id": 43471,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6155:0:152"
                  },
                  "scope": 43677,
                  "src": "6044:317:152",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 43581,
                    "nodeType": "Block",
                    "src": "7144:1147:152",
                    "statements": [
                      {
                        "assignments": [
                          43515
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43515,
                            "name": "sourceToDestPrecision",
                            "nodeType": "VariableDeclaration",
                            "scope": 43581,
                            "src": "7148:29:152",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 43514,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7148:7:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43523,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43520,
                              "name": "sourceTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43503,
                              "src": "7219:18:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43521,
                              "name": "destTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43505,
                              "src": "7239:16:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43517,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "7192:10:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43516,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "7180:11:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 43518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7180:23:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 43519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queryPrecision",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8604,
                            "src": "7180:38:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 43522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7180:76:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7148:108:152"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 43526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 43524,
                            "name": "sourceToDestPrecision",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43515,
                            "src": "7264:21:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 43525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7289:1:152",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7264:26:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 43529,
                        "nodeType": "IfStatement",
                        "src": "7260:59:152",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 43527,
                            "name": "maxSourceTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43509,
                            "src": "7299:20:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 43513,
                          "id": 43528,
                          "nodeType": "Return",
                          "src": "7292:27:152"
                        }
                      },
                      {
                        "assignments": [
                          43531
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43531,
                            "name": "expectedRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 43581,
                            "src": "7433:20:152",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 43530,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7433:7:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43538,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43533,
                              "name": "sourceTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43503,
                              "src": "7480:18:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43534,
                              "name": "destTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43505,
                              "src": "7500:16:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43535,
                              "name": "maxSourceTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43509,
                              "src": "7518:20:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43536,
                              "name": "sovrynSwapContractRegistryAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4579,
                              "src": "7540:33:152",
                              "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": 43532,
                            "name": "internalExpectedRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43634,
                            "src": "7459:20:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address,uint256,address) view returns (uint256)"
                            }
                          },
                          "id": 43537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7459:115:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7433:141:152"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 43547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 43539,
                            "name": "estimatedSourceAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43512,
                            "src": "7671:21:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 43545,
                                "name": "expectedRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43531,
                                "src": "7750:12:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 43542,
                                    "name": "sourceToDestPrecision",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 43515,
                                    "src": "7723:21:152",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 43540,
                                    "name": "requiredDestTokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 43507,
                                    "src": "7695:23:152",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 43541,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42153,
                                  "src": "7695:27:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 43543,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7695:50:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 43544,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42169,
                              "src": "7695:54:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 43546,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7695:68:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7671:92:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 43548,
                        "nodeType": "ExpressionStatement",
                        "src": "7671:92:152"
                      },
                      {
                        "assignments": [
                          43550
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43550,
                            "name": "buffer",
                            "nodeType": "VariableDeclaration",
                            "scope": 43581,
                            "src": "7973:14:152",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 43549,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7973:7:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43555,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31303030",
                              "id": 43553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8016:4:152",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000_by_1",
                                "typeString": "int_const 1000"
                              },
                              "value": "1000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1000_by_1",
                                "typeString": "int_const 1000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 43551,
                              "name": "estimatedSourceAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43512,
                              "src": "7990:21:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 43552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "7990:25:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 43554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7990:31:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7973:48:152"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 43558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 43556,
                            "name": "buffer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43550,
                            "src": "8029:6:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 43557,
                            "name": "sourceBuffer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4722,
                            "src": "8038:12:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8029:21:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 43563,
                        "nodeType": "IfStatement",
                        "src": "8025:48:152",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 43561,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 43559,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43550,
                              "src": "8052:6:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 43560,
                              "name": "sourceBuffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4722,
                              "src": "8061:12:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8052:21:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 43562,
                          "nodeType": "ExpressionStatement",
                          "src": "8052:21:152"
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 43569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 43564,
                            "name": "estimatedSourceAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43512,
                            "src": "8077:21:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 43567,
                                "name": "buffer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43550,
                                "src": "8127:6:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 43565,
                                "name": "estimatedSourceAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43512,
                                "src": "8101:21:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 43566,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "8101:25:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 43568,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8101:33:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8077:57:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 43570,
                        "nodeType": "ExpressionStatement",
                        "src": "8077:57:152"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 43577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 43573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 43571,
                              "name": "estimatedSourceAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43512,
                              "src": "8184:21:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 43572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8209:1:152",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "8184:26:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 43576,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 43574,
                              "name": "estimatedSourceAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43512,
                              "src": "8214:21:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 43575,
                              "name": "maxSourceTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43509,
                              "src": "8238:20:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8214:44:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8184:74:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 43580,
                        "nodeType": "IfStatement",
                        "src": "8180:107:152",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 43578,
                            "name": "maxSourceTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43509,
                            "src": "8267:20:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 43513,
                          "id": 43579,
                          "nodeType": "Return",
                          "src": "8260:27:152"
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the number of source tokens to provide in order to\n  obtain the required destination amount.\n\t * @param sourceTokenAddress The address of the source token address.\n@param destTokenAddress The address of the destination token address.\n@param requiredDestTokenAmount The number of destination tokens needed.\n@param maxSourceTokenAmount The maximum number of source tokens to spend.\n\t * @return The estimated amount of source tokens needed.\n  Minimum: minSourceTokenAmount, maximum: maxSourceTokenAmount\n",
                  "id": 43582,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "estimateSourceTokenAmount",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43510,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43503,
                        "name": "sourceTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43582,
                        "src": "6965:26:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43502,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6965:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43505,
                        "name": "destTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43582,
                        "src": "6995:24:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43504,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6995:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43507,
                        "name": "requiredDestTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43582,
                        "src": "7023:31:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43506,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7023:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43509,
                        "name": "maxSourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43582,
                        "src": "7058:28:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43508,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7058:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6961:128:152"
                  },
                  "returnParameters": {
                    "id": 43513,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43512,
                        "name": "estimatedSourceAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43582,
                        "src": "7113:29:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43511,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7113:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7112:31:152"
                  },
                  "scope": 43677,
                  "src": "6927:1364:152",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 43633,
                    "nodeType": "Block",
                    "src": "8840:477:152",
                    "statements": [
                      {
                        "assignments": [
                          43596
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43596,
                            "name": "sovrynSwapNetwork",
                            "nodeType": "VariableDeclaration",
                            "scope": 43633,
                            "src": "8844:36:152",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                              "typeString": "contract ISovrynSwapNetwork"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 43595,
                              "name": "ISovrynSwapNetwork",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 43729,
                              "src": "8844:18:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                                "typeString": "contract ISovrynSwapNetwork"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43600,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43598,
                              "name": "sovrynSwapContractRegistryAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43590,
                              "src": "8912:33:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 43597,
                            "name": "getSovrynSwapNetworkContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43296,
                            "src": "8883:28:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_contract$_ISovrynSwapNetwork_$43729_$",
                              "typeString": "function (address) view returns (contract ISovrynSwapNetwork)"
                            }
                          },
                          "id": 43599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8883:63:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                            "typeString": "contract ISovrynSwapNetwork"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8844:102:152"
                      },
                      {
                        "assignments": [
                          43604
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43604,
                            "name": "path",
                            "nodeType": "VariableDeclaration",
                            "scope": 43633,
                            "src": "8950:20:152",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                              "typeString": "contract IERC20[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 43602,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 24699,
                                "src": "8950:6:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$24699",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 43603,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "8950:8:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43614,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43608,
                                  "name": "sourceTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43584,
                                  "src": "9013:18:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43607,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "9006:6:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 43609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9006:26:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43611,
                                  "name": "destTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43586,
                                  "src": "9041:16:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43610,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "9034:6:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 43612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9034:24:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 43605,
                              "name": "sovrynSwapNetwork",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43596,
                              "src": "8973:17:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                                "typeString": "contract ISovrynSwapNetwork"
                              }
                            },
                            "id": 43606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "conversionPath",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 43728,
                            "src": "8973:32:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_contract$_IERC20_$24699_$_t_contract$_IERC20_$24699_$returns$_t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr_$",
                              "typeString": "function (contract IERC20,contract IERC20) view external returns (contract IERC20[] memory)"
                            }
                          },
                          "id": 43613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8973:86:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                            "typeString": "contract IERC20[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8950:109:152"
                      },
                      {
                        "assignments": [
                          43616
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43616,
                            "name": "expectedReturn",
                            "nodeType": "VariableDeclaration",
                            "scope": 43633,
                            "src": "9122:22:152",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 43615,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9122:7:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43622,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43619,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43604,
                              "src": "9176:4:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43620,
                              "name": "sourceTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43588,
                              "src": "9182:17:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 43617,
                              "name": "sovrynSwapNetwork",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43596,
                              "src": "9147:17:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                                "typeString": "contract ISovrynSwapNetwork"
                              }
                            },
                            "id": 43618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rateByPath",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 43718,
                            "src": "9147:28:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (contract IERC20[] memory,uint256) view external returns (uint256)"
                            }
                          },
                          "id": 43621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9147:53:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9122:78:152"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43630,
                              "name": "sourceTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43588,
                              "src": "9295:17:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  },
                                  "id": 43627,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 43625,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9283:2:152",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3138",
                                    "id": 43626,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9287:2:152",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_18_by_1",
                                      "typeString": "int_const 18"
                                    },
                                    "value": "18"
                                  },
                                  "src": "9283:6:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 43623,
                                  "name": "expectedReturn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43616,
                                  "src": "9264:14:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 43624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "9264:18:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 43628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9264:26:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 43629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "9264:30:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 43631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9264:49:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 43594,
                        "id": 43632,
                        "nodeType": "Return",
                        "src": "9257:56:152"
                      }
                    ]
                  },
                  "documentation": "@notice Get the expected rate for 1 source token when exchanging the\n  given amount of source tokens.\n\t * @param sourceTokenAddress The address of the source token contract.\n@param destTokenAddress The address of the destination token contract.\n@param sourceTokenAmount The amount of source tokens to get the rate for.\n",
                  "id": 43634,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "internalExpectedRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43591,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43584,
                        "name": "sourceTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43634,
                        "src": "8678:26:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43583,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8678:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43586,
                        "name": "destTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43634,
                        "src": "8708:24:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43585,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8708:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43588,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43634,
                        "src": "8736:25:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43587,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8736:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43590,
                        "name": "sovrynSwapContractRegistryAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43634,
                        "src": "8765:41:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43589,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8765:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8674:135:152"
                  },
                  "returnParameters": {
                    "id": 43594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43593,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 43634,
                        "src": "8831:7:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43592,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8831:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8830:9:152"
                  },
                  "scope": 43677,
                  "src": "8645:672:152",
                  "stateMutability": "view",
                  "superFunction": 42736,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 43675,
                    "nodeType": "Block",
                    "src": "9875:356:152",
                    "statements": [
                      {
                        "assignments": [
                          43648
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43648,
                            "name": "sovrynSwapNetwork",
                            "nodeType": "VariableDeclaration",
                            "scope": 43675,
                            "src": "9879:36:152",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                              "typeString": "contract ISovrynSwapNetwork"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 43647,
                              "name": "ISovrynSwapNetwork",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 43729,
                              "src": "9879:18:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                                "typeString": "contract ISovrynSwapNetwork"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43652,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43650,
                              "name": "sovrynSwapContractRegistryAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43642,
                              "src": "9947:33:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 43649,
                            "name": "getSovrynSwapNetworkContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43296,
                            "src": "9918:28:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_contract$_ISovrynSwapNetwork_$43729_$",
                              "typeString": "function (address) view returns (contract ISovrynSwapNetwork)"
                            }
                          },
                          "id": 43651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9918:63:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                            "typeString": "contract ISovrynSwapNetwork"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9879:102:152"
                      },
                      {
                        "assignments": [
                          43656
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43656,
                            "name": "path",
                            "nodeType": "VariableDeclaration",
                            "scope": 43675,
                            "src": "9985:20:152",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                              "typeString": "contract IERC20[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 43654,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 24699,
                                "src": "9985:6:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$24699",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 43655,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "9985:8:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43666,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43660,
                                  "name": "sourceTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43636,
                                  "src": "10048:18:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43659,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "10041:6:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 43661,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10041:26:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43663,
                                  "name": "destTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43638,
                                  "src": "10076:16:152",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43662,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "10069:6:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 43664,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10069:24:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 43657,
                              "name": "sovrynSwapNetwork",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43648,
                              "src": "10008:17:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                                "typeString": "contract ISovrynSwapNetwork"
                              }
                            },
                            "id": 43658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "conversionPath",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 43728,
                            "src": "10008:32:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_contract$_IERC20_$24699_$_t_contract$_IERC20_$24699_$returns$_t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr_$",
                              "typeString": "function (contract IERC20,contract IERC20) view external returns (contract IERC20[] memory)"
                            }
                          },
                          "id": 43665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10008:86:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                            "typeString": "contract IERC20[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9985:109:152"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 43673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 43667,
                            "name": "expectedReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43645,
                            "src": "10157:14:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 43670,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43656,
                                "src": "10203:4:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                                  "typeString": "contract IERC20[] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 43671,
                                "name": "sourceTokenAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43640,
                                "src": "10209:17:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                                  "typeString": "contract IERC20[] memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 43668,
                                "name": "sovrynSwapNetwork",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43648,
                                "src": "10174:17:152",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ISovrynSwapNetwork_$43729",
                                  "typeString": "contract ISovrynSwapNetwork"
                                }
                              },
                              "id": 43669,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rateByPath",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43718,
                              "src": "10174:28:152",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (contract IERC20[] memory,uint256) view external returns (uint256)"
                              }
                            },
                            "id": 43672,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10174:53:152",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10157:70:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 43674,
                        "nodeType": "ExpressionStatement",
                        "src": "10157:70:152"
                      }
                    ]
                  },
                  "documentation": "@notice Get the expected return amount when exchanging the given\n  amount of source tokens.\n\t * @param sourceTokenAddress The address of the source token contract.\n@param destTokenAddress The address of the destination token contract.\n@param sourceTokenAmount The amount of source tokens to get the return for.\n",
                  "id": 43676,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "internalExpectedReturn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43636,
                        "name": "sourceTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43676,
                        "src": "9698:26:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43635,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9698:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43638,
                        "name": "destTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43676,
                        "src": "9728:24:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43637,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9728:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43640,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43676,
                        "src": "9756:25:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43639,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9756:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43642,
                        "name": "sovrynSwapContractRegistryAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43676,
                        "src": "9785:41:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43641,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9785:7:152",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9694:135:152"
                  },
                  "returnParameters": {
                    "id": 43646,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43645,
                        "name": "expectedReturn",
                        "nodeType": "VariableDeclaration",
                        "scope": 43676,
                        "src": "9851:22:152",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43644,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9851:7:152",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9850:24:152"
                  },
                  "scope": 43677,
                  "src": "9663:568:152",
                  "stateMutability": "view",
                  "superFunction": 42749,
                  "visibility": "public"
                }
              ],
              "scope": 43678,
              "src": "585:9648:152"
            }
          ],
          "src": "0:10234:152"
        },
        "id": 152
      },
      "contracts/swaps/connectors/interfaces/IContractRegistry.sol": {
        "ast": {
          "absolutePath": "contracts/swaps/connectors/interfaces/IContractRegistry.sol",
          "exportedSymbols": {
            "IContractRegistry": [
              43687
            ]
          },
          "id": 43688,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 43679,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:153"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": false,
              "id": 43687,
              "linearizedBaseContracts": [
                43687
              ],
              "name": "IContractRegistry",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 43686,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addressOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43682,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43681,
                        "name": "contractName",
                        "nodeType": "VariableDeclaration",
                        "scope": 43686,
                        "src": "74:20:153",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 43680,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "74:7:153",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "73:22:153"
                  },
                  "returnParameters": {
                    "id": 43685,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43684,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 43686,
                        "src": "117:7:153",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43683,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "117:7:153",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "116:9:153"
                  },
                  "scope": 43687,
                  "src": "55:71:153",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 43688,
              "src": "25:103:153"
            }
          ],
          "src": "0:129:153"
        },
        "id": 153
      },
      "contracts/swaps/connectors/interfaces/ISovrynSwapNetwork.sol": {
        "ast": {
          "absolutePath": "contracts/swaps/connectors/interfaces/ISovrynSwapNetwork.sol",
          "exportedSymbols": {
            "ISovrynSwapNetwork": [
              43729
            ]
          },
          "id": 43730,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 43689,
              "literals": [
                "solidity",
                ">=",
                "0.4",
                ".26",
                "<=",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:34:154"
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../../../interfaces/IERC20.sol",
              "id": 43690,
              "nodeType": "ImportDirective",
              "scope": 43730,
              "sourceUnit": 24700,
              "src": "36:40:154",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": false,
              "id": 43729,
              "linearizedBaseContracts": [
                43729
              ],
              "name": "ISovrynSwapNetwork",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 43708,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "convertByPath",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43704,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43693,
                        "name": "_path",
                        "nodeType": "VariableDeclaration",
                        "scope": 43708,
                        "src": "135:23:154",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 43691,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 24699,
                            "src": "135:6:154",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 43692,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "135:8:154",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43695,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43708,
                        "src": "162:15:154",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43694,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "162:7:154",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43697,
                        "name": "_minReturn",
                        "nodeType": "VariableDeclaration",
                        "scope": 43708,
                        "src": "181:18:154",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43696,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "181:7:154",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43699,
                        "name": "_beneficiary",
                        "nodeType": "VariableDeclaration",
                        "scope": 43708,
                        "src": "203:20:154",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43698,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "203:7:154",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43701,
                        "name": "_affiliateAccount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43708,
                        "src": "227:25:154",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43700,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "227:7:154",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43703,
                        "name": "_affiliateFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 43708,
                        "src": "256:21:154",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43702,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "256:7:154",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "131:149:154"
                  },
                  "returnParameters": {
                    "id": 43707,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43706,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 43708,
                        "src": "307:7:154",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43705,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "307:7:154",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "306:9:154"
                  },
                  "scope": 43729,
                  "src": "109:207:154",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 43718,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rateByPath",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43714,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43711,
                        "name": "_path",
                        "nodeType": "VariableDeclaration",
                        "scope": 43718,
                        "src": "339:23:154",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 43709,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 24699,
                            "src": "339:6:154",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 43710,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "339:8:154",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43713,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43718,
                        "src": "364:15:154",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43712,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "364:7:154",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "338:42:154"
                  },
                  "returnParameters": {
                    "id": 43717,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43716,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 43718,
                        "src": "404:7:154",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43715,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "404:7:154",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "403:9:154"
                  },
                  "scope": 43729,
                  "src": "319:94:154",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 43728,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "conversionPath",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43723,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43720,
                        "name": "_sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 43728,
                        "src": "440:19:154",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 43719,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24699,
                          "src": "440:6:154",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43722,
                        "name": "_targetToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 43728,
                        "src": "461:19:154",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 43721,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24699,
                          "src": "461:6:154",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "439:42:154"
                  },
                  "returnParameters": {
                    "id": 43727,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43726,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 43728,
                        "src": "505:15:154",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 43724,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 24699,
                            "src": "505:6:154",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 43725,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "505:8:154",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "504:17:154"
                  },
                  "scope": 43729,
                  "src": "416:106:154",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 43730,
              "src": "78:446:154"
            }
          ],
          "src": "0:525:154"
        },
        "id": 154
      },
      "contracts/swaps/connectors/testnet/SwapsImplLocal.sol": {
        "ast": {
          "absolutePath": "contracts/swaps/connectors/testnet/SwapsImplLocal.sol",
          "exportedSymbols": {
            "SwapsImplLocal": [
              43936
            ]
          },
          "id": 43937,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 43731,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:155"
            },
            {
              "absolutePath": "contracts/core/State.sol",
              "file": "../../../core/State.sol",
              "id": 43732,
              "nodeType": "ImportDirective",
              "scope": 43937,
              "sourceUnit": 4842,
              "src": "143:33:155",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeERC20.sol",
              "file": "../../../openzeppelin/SafeERC20.sol",
              "id": 43733,
              "nodeType": "ImportDirective",
              "scope": 43937,
              "sourceUnit": 42050,
              "src": "177:45:155",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/swaps/ISwapsImpl.sol",
              "file": "../../ISwapsImpl.sol",
              "id": 43734,
              "nodeType": "ImportDirective",
              "scope": 43937,
              "sourceUnit": 42751,
              "src": "223:30:155",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/feeds/IPriceFeeds.sol",
              "file": "../../../feeds/IPriceFeeds.sol",
              "id": 43735,
              "nodeType": "ImportDirective",
              "scope": 43937,
              "sourceUnit": 8708,
              "src": "254:40:155",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/testhelpers/TestToken.sol",
              "file": "../../../testhelpers/TestToken.sol",
              "id": 43736,
              "nodeType": "ImportDirective",
              "scope": 43937,
              "sourceUnit": 44810,
              "src": "295:44:155",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 43737,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4841,
                    "src": "673:5:155",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_State_$4841",
                      "typeString": "contract State"
                    }
                  },
                  "id": 43738,
                  "nodeType": "InheritanceSpecifier",
                  "src": "673:5:155"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 43739,
                    "name": "ISwapsImpl",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42750,
                    "src": "680:10:155",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ISwapsImpl_$42750",
                      "typeString": "contract ISwapsImpl"
                    }
                  },
                  "id": 43740,
                  "nodeType": "InheritanceSpecifier",
                  "src": "680:10:155"
                }
              ],
              "contractDependencies": [
                4416,
                4841,
                4855,
                4865,
                4885,
                4913,
                4929,
                41125,
                41798,
                41829,
                42750
              ],
              "contractKind": "contract",
              "documentation": "@title Swaps Implementation Local contract.\n * @notice This contract code comes from bZx. bZx is a protocol for tokenized\nmargin trading and lending https://bzx.network similar to the dYdX protocol.\n * This contract contains the implementation of swap process and rate calculations.\n",
              "fullyImplemented": true,
              "id": 43936,
              "linearizedBaseContracts": [
                43936,
                42750,
                4841,
                41798,
                41125,
                41829,
                4416,
                4865,
                4855,
                4929,
                4885,
                4913
              ],
              "name": "SwapsImplLocal",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 43743,
                  "libraryName": {
                    "contractScope": null,
                    "id": 43741,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42049,
                    "src": "700:9:155",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$42049",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "694:27:155",
                  "typeName": {
                    "contractScope": null,
                    "id": 43742,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "714:6:155",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "body": {
                    "id": 43866,
                    "nodeType": "Block",
                    "src": "1374:1012:155",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 43767,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 43765,
                                "name": "sourceTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43745,
                                "src": "1386:18:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 43766,
                                "name": "destTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 43747,
                                "src": "1408:16:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1386:38:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "736f75726365203d3d2064657374",
                              "id": 43768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1426:16:155",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_954932d9e33501ee19ddf1d3cd7e3119af666aaa2a138baeaf48863746d0bfef",
                                "typeString": "literal_string \"source == dest\""
                              },
                              "value": "source == dest"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_954932d9e33501ee19ddf1d3cd7e3119af666aaa2a138baeaf48863746d0bfef",
                                "typeString": "literal_string \"source == dest\""
                              }
                            ],
                            "id": 43764,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1378:7:155",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 43769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1378:65:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 43770,
                        "nodeType": "ExpressionStatement",
                        "src": "1378:65:155"
                      },
                      {
                        "assignments": [
                          43772,
                          43774
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43772,
                            "name": "tradeRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 43866,
                            "src": "1449:17:155",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 43771,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1449:7:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 43774,
                            "name": "precision",
                            "nodeType": "VariableDeclaration",
                            "scope": 43866,
                            "src": "1468:17:155",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 43773,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1468:7:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43782,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43779,
                              "name": "sourceTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43745,
                              "src": "1523:18:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43780,
                              "name": "destTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43747,
                              "src": "1543:16:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43776,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "1501:10:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43775,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "1489:11:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 43777,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1489:23:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 43778,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queryRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8595,
                            "src": "1489:33:155",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256,uint256)"
                            }
                          },
                          "id": 43781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1489:71:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1448:112:155"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 43785,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 43783,
                            "name": "requiredDestTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43757,
                            "src": "1569:23:155",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 43784,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1596:1:155",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1569:28:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 43822,
                          "nodeType": "Block",
                          "src": "1740:224:155",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 43803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 43801,
                                  "name": "destTokenAmountReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43760,
                                  "src": "1745:23:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 43802,
                                  "name": "requiredDestTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43757,
                                  "src": "1771:23:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1745:49:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 43804,
                              "nodeType": "ExpressionStatement",
                              "src": "1745:49:155"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 43813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 43805,
                                  "name": "sourceTokenAmountUsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43762,
                                  "src": "1799:21:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 43811,
                                      "name": "tradeRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 43772,
                                      "src": "1866:9:155",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 43808,
                                          "name": "precision",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 43774,
                                          "src": "1851:9:155",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 43806,
                                          "name": "requiredDestTokenAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 43757,
                                          "src": "1823:23:155",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 43807,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "1823:27:155",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 43809,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1823:38:155",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 43810,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "1823:42:155",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 43812,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1823:53:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1799:77:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 43814,
                              "nodeType": "ExpressionStatement",
                              "src": "1799:77:155"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 43818,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 43816,
                                      "name": "sourceTokenAmountUsed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 43762,
                                      "src": "1889:21:155",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 43817,
                                      "name": "minSourceTokenAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 43753,
                                      "src": "1914:20:155",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1889:45:155",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "64657374416d6f756e7420746f6f206772656174",
                                    "id": 43819,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1936:22:155",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_1045ae43c49b6ef0b6a23e10cd5fdf0e4190ca1a982ed9e3ae4bb367099c4b8c",
                                      "typeString": "literal_string \"destAmount too great\""
                                    },
                                    "value": "destAmount too great"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_1045ae43c49b6ef0b6a23e10cd5fdf0e4190ca1a982ed9e3ae4bb367099c4b8c",
                                      "typeString": "literal_string \"destAmount too great\""
                                    }
                                  ],
                                  "id": 43815,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44997,
                                    44998
                                  ],
                                  "referencedDeclaration": 44998,
                                  "src": "1881:7:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 43820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1881:78:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 43821,
                              "nodeType": "ExpressionStatement",
                              "src": "1881:78:155"
                            }
                          ]
                        },
                        "id": 43823,
                        "nodeType": "IfStatement",
                        "src": "1565:399:155",
                        "trueBody": {
                          "id": 43800,
                          "nodeType": "Block",
                          "src": "1599:135:155",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 43788,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 43786,
                                  "name": "sourceTokenAmountUsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43762,
                                  "src": "1604:21:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 43787,
                                  "name": "minSourceTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43753,
                                  "src": "1628:20:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1604:44:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 43789,
                              "nodeType": "ExpressionStatement",
                              "src": "1604:44:155"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 43798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 43790,
                                  "name": "destTokenAmountReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43760,
                                  "src": "1653:23:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 43796,
                                      "name": "precision",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 43774,
                                      "src": "1719:9:155",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 43793,
                                          "name": "tradeRate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 43772,
                                          "src": "1704:9:155",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 43791,
                                          "name": "minSourceTokenAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 43753,
                                          "src": "1679:20:155",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 43792,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 42153,
                                        "src": "1679:24:155",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 43794,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1679:35:155",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 43795,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42169,
                                    "src": "1679:39:155",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 43797,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1679:50:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1653:76:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 43799,
                              "nodeType": "ExpressionStatement",
                              "src": "1653:76:155"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43829,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45346,
                                  "src": "2011:4:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_SwapsImplLocal_$43936",
                                    "typeString": "contract SwapsImplLocal"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_SwapsImplLocal_$43936",
                                    "typeString": "contract SwapsImplLocal"
                                  }
                                ],
                                "id": 43828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2003:7:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 43830,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2003:13:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43831,
                              "name": "sourceTokenAmountUsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43762,
                              "src": "2018:21:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43825,
                                  "name": "sourceTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43745,
                                  "src": "1978:18:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43824,
                                "name": "TestToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44809,
                                "src": "1968:9:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TestToken_$44809_$",
                                  "typeString": "type(contract TestToken)"
                                }
                              },
                              "id": 43826,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1968:29:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TestToken_$44809",
                                "typeString": "contract TestToken"
                              }
                            },
                            "id": 43827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 44772,
                            "src": "1968:34:155",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 43832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1968:72:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 43833,
                        "nodeType": "ExpressionStatement",
                        "src": "1968:72:155"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43839,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45346,
                                  "src": "2085:4:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_SwapsImplLocal_$43936",
                                    "typeString": "contract SwapsImplLocal"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_SwapsImplLocal_$43936",
                                    "typeString": "contract SwapsImplLocal"
                                  }
                                ],
                                "id": 43838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2077:7:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 43840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2077:13:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43841,
                              "name": "destTokenAmountReceived",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43760,
                              "src": "2092:23:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43835,
                                  "name": "destTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43747,
                                  "src": "2054:16:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43834,
                                "name": "TestToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44809,
                                "src": "2044:9:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TestToken_$44809_$",
                                  "typeString": "type(contract TestToken)"
                                }
                              },
                              "id": 43836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2044:27:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TestToken_$44809",
                                "typeString": "contract TestToken"
                              }
                            },
                            "id": 43837,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 44724,
                            "src": "2044:32:155",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 43842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2044:72:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 43843,
                        "nodeType": "ExpressionStatement",
                        "src": "2044:72:155"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 43848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 43844,
                            "name": "returnToSenderAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43751,
                            "src": "2125:21:155",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 43846,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45346,
                                "src": "2158:4:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_SwapsImplLocal_$43936",
                                  "typeString": "contract SwapsImplLocal"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_SwapsImplLocal_$43936",
                                  "typeString": "contract SwapsImplLocal"
                                }
                              ],
                              "id": 43845,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2150:7:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 43847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2150:13:155",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2125:38:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 43865,
                        "nodeType": "IfStatement",
                        "src": "2121:262:155",
                        "trueBody": {
                          "id": 43864,
                          "nodeType": "Block",
                          "src": "2165:218:155",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 43851,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 43849,
                                  "name": "sourceTokenAmountUsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43762,
                                  "src": "2174:21:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 43850,
                                  "name": "maxSourceTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43755,
                                  "src": "2198:20:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2174:44:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 43863,
                              "nodeType": "IfStatement",
                              "src": "2170:209:155",
                              "trueBody": {
                                "id": 43862,
                                "nodeType": "Block",
                                "src": "2220:159:155",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 43856,
                                          "name": "returnToSenderAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 43751,
                                          "src": "2305:21:155",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 43859,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 43857,
                                            "name": "maxSourceTokenAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 43755,
                                            "src": "2328:20:155",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 43858,
                                            "name": "sourceTokenAmountUsed",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 43762,
                                            "src": "2351:21:155",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2328:44:155",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 43853,
                                              "name": "sourceTokenAddress",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 43745,
                                              "src": "2272:18:155",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 43852,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24699,
                                            "src": "2265:6:155",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                              "typeString": "type(contract IERC20)"
                                            }
                                          },
                                          "id": 43854,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2265:26:155",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$24699",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 43855,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "safeTransfer",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 41862,
                                        "src": "2265:39:155",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$24699_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$24699_$",
                                          "typeString": "function (contract IERC20,address,uint256)"
                                        }
                                      },
                                      "id": 43860,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2265:108:155",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 43861,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2265:108:155"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Swap two tokens.\n\t * @param sourceTokenAddress The address of the source tokens.\n@param destTokenAddress The address of the destiny tokens.\n\t * @return destTokenAmountReceived The amount of destiny tokens sent.\n@return sourceTokenAmountUsed The amount of source tokens spent.\n",
                  "id": 43867,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "internalSwap",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43758,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43745,
                        "name": "sourceTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43867,
                        "src": "1065:26:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43744,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1065:7:155",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43747,
                        "name": "destTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43867,
                        "src": "1095:24:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43746,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1095:7:155",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43749,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 43867,
                        "src": "1123:7:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43748,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1123:7:155",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43751,
                        "name": "returnToSenderAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43867,
                        "src": "1154:29:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43750,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1154:7:155",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43753,
                        "name": "minSourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43867,
                        "src": "1187:28:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43752,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1187:7:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43755,
                        "name": "maxSourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43867,
                        "src": "1219:28:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43754,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1219:7:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43757,
                        "name": "requiredDestTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43867,
                        "src": "1251:31:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43756,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1251:7:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1061:224:155"
                  },
                  "returnParameters": {
                    "id": 43763,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43760,
                        "name": "destTokenAmountReceived",
                        "nodeType": "VariableDeclaration",
                        "scope": 43867,
                        "src": "1310:31:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43759,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1310:7:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43762,
                        "name": "sourceTokenAmountUsed",
                        "nodeType": "VariableDeclaration",
                        "scope": 43867,
                        "src": "1343:29:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43761,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1343:7:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1309:64:155"
                  },
                  "scope": 43936,
                  "src": "1040:1346:155",
                  "stateMutability": "payable",
                  "superFunction": 42723,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 43900,
                    "nodeType": "Block",
                    "src": "2943:217:155",
                    "statements": [
                      {
                        "assignments": [
                          43881,
                          43883
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43881,
                            "name": "sourceToDestRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 43900,
                            "src": "2948:24:155",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 43880,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2948:7:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 43883,
                            "name": "sourceToDestPrecision",
                            "nodeType": "VariableDeclaration",
                            "scope": 43900,
                            "src": "2974:29:155",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 43882,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2974:7:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43891,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43888,
                              "name": "sourceTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43869,
                              "src": "3041:18:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43889,
                              "name": "destTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43871,
                              "src": "3061:16:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43885,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "3019:10:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43884,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "3007:11:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 43886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3007:23:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 43887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queryRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8595,
                            "src": "3007:33:155",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256,uint256)"
                            }
                          },
                          "id": 43890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3007:71:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2947:131:155"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43897,
                              "name": "sourceToDestPrecision",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43883,
                              "src": "3134:21:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43894,
                                  "name": "sourceToDestRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43881,
                                  "src": "3112:16:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 43892,
                                  "name": "sourceTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43873,
                                  "src": "3090:17:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 43893,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "3090:21:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 43895,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3090:39:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 43896,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "3090:43:155",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 43898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3090:66:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 43879,
                        "id": 43899,
                        "nodeType": "Return",
                        "src": "3083:73:155"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the expected price rate of swapping a given amount\n  of tokens.\n\t * @param sourceTokenAddress The address of the source tokens.\n@param destTokenAddress The address of the destiny tokens.\n@param sourceTokenAmount The amount of source tokens.\n@param unused Fourth parameter ignored.\n\t * @return precision The expected price rate.\n",
                  "id": 43901,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "internalExpectedRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43876,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43869,
                        "name": "sourceTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43901,
                        "src": "2808:26:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43868,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2808:7:155",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43871,
                        "name": "destTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43901,
                        "src": "2838:24:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43870,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2838:7:155",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43873,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43901,
                        "src": "2866:25:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43872,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2866:7:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43875,
                        "name": "unused",
                        "nodeType": "VariableDeclaration",
                        "scope": 43901,
                        "src": "2895:14:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43874,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2895:7:155",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2804:108:155"
                  },
                  "returnParameters": {
                    "id": 43879,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43878,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 43901,
                        "src": "2934:7:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43877,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2934:7:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2933:9:155"
                  },
                  "scope": 43936,
                  "src": "2775:385:155",
                  "stateMutability": "view",
                  "superFunction": 42736,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 43934,
                    "nodeType": "Block",
                    "src": "3711:217:155",
                    "statements": [
                      {
                        "assignments": [
                          43915,
                          43917
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43915,
                            "name": "sourceToDestRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 43934,
                            "src": "3716:24:155",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 43914,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3716:7:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 43917,
                            "name": "sourceToDestPrecision",
                            "nodeType": "VariableDeclaration",
                            "scope": 43934,
                            "src": "3742:29:155",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 43916,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3742:7:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43925,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43922,
                              "name": "sourceTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43903,
                              "src": "3809:18:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43923,
                              "name": "destTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43905,
                              "src": "3829:16:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43919,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4575,
                                  "src": "3787:10:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43918,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "3775:11:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 43920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3775:23:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 43921,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queryRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8595,
                            "src": "3775:33:155",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256,uint256)"
                            }
                          },
                          "id": 43924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3775:71:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3715:131:155"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43931,
                              "name": "sourceToDestPrecision",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43917,
                              "src": "3902:21:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43928,
                                  "name": "sourceToDestRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43915,
                                  "src": "3880:16:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 43926,
                                  "name": "sourceTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43907,
                                  "src": "3858:17:155",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 43927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "3858:21:155",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 43929,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3858:39:155",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 43930,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "3858:43:155",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 43932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3858:66:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 43913,
                        "id": 43933,
                        "nodeType": "Return",
                        "src": "3851:73:155"
                      }
                    ]
                  },
                  "documentation": "@notice Calculate the expected return of swapping a given amount\n  of tokens.\n\t * @param sourceTokenAddress The address of the source tokens.\n@param destTokenAddress The address of the destiny tokens.\n@param sourceTokenAmount The amount of source tokens.\n@param unused Fourth parameter ignored.\n\t * @return precision The expected return.\n",
                  "id": 43935,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "internalExpectedReturn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43903,
                        "name": "sourceTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43935,
                        "src": "3576:26:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43902,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3576:7:155",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43905,
                        "name": "destTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 43935,
                        "src": "3606:24:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43904,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3606:7:155",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43907,
                        "name": "sourceTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43935,
                        "src": "3634:25:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43906,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3634:7:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43909,
                        "name": "unused",
                        "nodeType": "VariableDeclaration",
                        "scope": 43935,
                        "src": "3663:14:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43908,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3663:7:155",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3572:108:155"
                  },
                  "returnParameters": {
                    "id": 43913,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43912,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 43935,
                        "src": "3702:7:155",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43911,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3702:7:155",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3701:9:155"
                  },
                  "scope": 43936,
                  "src": "3541:387:155",
                  "stateMutability": "view",
                  "superFunction": 42749,
                  "visibility": "public"
                }
              ],
              "scope": 43937,
              "src": "646:3284:155"
            }
          ],
          "src": "118:3813:155"
        },
        "id": 155
      },
      "contracts/testhelpers/FlashLoanerTest.sol": {
        "ast": {
          "absolutePath": "contracts/testhelpers/FlashLoanerTest.sol",
          "exportedSymbols": {
            "FlashLoanerTest": [
              44136
            ]
          },
          "id": 44137,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 43938,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:156"
            },
            {
              "id": 43939,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:156"
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 43940,
              "nodeType": "ImportDirective",
              "scope": 44137,
              "sourceUnit": 24700,
              "src": "101:34:156",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../openzeppelin/Ownable.sol",
              "id": 43941,
              "nodeType": "ImportDirective",
              "scope": 44137,
              "sourceUnit": 41799,
              "src": "136:37:156",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/testhelpers/ITokenFlashLoanTest.sol",
              "file": "./ITokenFlashLoanTest.sol",
              "id": 43942,
              "nodeType": "ImportDirective",
              "scope": 44137,
              "sourceUnit": 44156,
              "src": "174:35:156",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 43943,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "239:7:156",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 43944,
                  "nodeType": "InheritanceSpecifier",
                  "src": "239:7:156"
                }
              ],
              "contractDependencies": [
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 44136,
              "linearizedBaseContracts": [
                44136,
                41798,
                41125
              ],
              "name": "FlashLoanerTest",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 43980,
                    "nodeType": "Block",
                    "src": "390:294:156",
                    "statements": [
                      {
                        "assignments": [
                          43956
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 43956,
                            "name": "iTokenContract",
                            "nodeType": "VariableDeclaration",
                            "scope": 43980,
                            "src": "394:34:156",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITokenFlashLoanTest_$44155",
                              "typeString": "contract ITokenFlashLoanTest"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 43955,
                              "name": "ITokenFlashLoanTest",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 44155,
                              "src": "394:19:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ITokenFlashLoanTest_$44155",
                                "typeString": "contract ITokenFlashLoanTest"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 43960,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43958,
                              "name": "iToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43948,
                              "src": "451:6:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 43957,
                            "name": "ITokenFlashLoanTest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44155,
                            "src": "431:19:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ITokenFlashLoanTest_$44155_$",
                              "typeString": "type(contract ITokenFlashLoanTest)"
                            }
                          },
                          "id": 43959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "431:27:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ITokenFlashLoanTest_$44155",
                            "typeString": "contract ITokenFlashLoanTest"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "394:64:156"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43963,
                              "name": "flashLoanAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43950,
                              "src": "504:15:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43965,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45350,
                                  "src": "533:4:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FlashLoanerTest_$44136",
                                    "typeString": "contract FlashLoanerTest"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FlashLoanerTest_$44136",
                                    "typeString": "contract FlashLoanerTest"
                                  }
                                ],
                                "id": 43964,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "525:7:156",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 43966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "525:13:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43968,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45350,
                                  "src": "552:4:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FlashLoanerTest_$44136",
                                    "typeString": "contract FlashLoanerTest"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FlashLoanerTest_$44136",
                                    "typeString": "contract FlashLoanerTest"
                                  }
                                ],
                                "id": 43967,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "544:7:156",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 43969,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "544:13:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 43970,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "563:2:156",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "657865637574654f7065726174696f6e28616464726573732c616464726573732c75696e7432353629",
                                  "id": 43973,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "595:43:156",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2a77b18be5d2ee361051ff0f4bb26105338ed9324ceab3f0893a6be5ca52f56f",
                                    "typeString": "literal_string \"executeOperation(address,address,uint256)\""
                                  },
                                  "value": "executeOperation(address,address,uint256)"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 43974,
                                  "name": "loanToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43946,
                                  "src": "640:9:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 43975,
                                  "name": "iToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43948,
                                  "src": "651:6:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 43976,
                                  "name": "flashLoanAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43950,
                                  "src": "659:15:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2a77b18be5d2ee361051ff0f4bb26105338ed9324ceab3f0893a6be5ca52f56f",
                                    "typeString": "literal_string \"executeOperation(address,address,uint256)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 43971,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44981,
                                  "src": "571:3:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 43972,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "571:23:156",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 43977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "571:104:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 43961,
                              "name": "iTokenContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43956,
                              "src": "472:14:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ITokenFlashLoanTest_$44155",
                                "typeString": "contract ITokenFlashLoanTest"
                              }
                            },
                            "id": 43962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "flashBorrow",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 44154,
                            "src": "472:26:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$_t_uint256_$_t_address_$_t_address_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256,address,address,string memory,bytes memory) payable external returns (bytes memory)"
                            }
                          },
                          "id": 43978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "472:208:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 43954,
                        "id": 43979,
                        "nodeType": "Return",
                        "src": "462:218:156"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 43981,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "initiateFlashLoanTest",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43951,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43946,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 43981,
                        "src": "284:17:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43945,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "284:7:156",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43948,
                        "name": "iToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 43981,
                        "src": "305:14:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43947,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "305:7:156",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43950,
                        "name": "flashLoanAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43981,
                        "src": "323:23:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43949,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "323:7:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "280:69:156"
                  },
                  "returnParameters": {
                    "id": 43954,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43953,
                        "name": "success",
                        "nodeType": "VariableDeclaration",
                        "scope": 43981,
                        "src": "368:20:156",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 43952,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "368:5:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "367:22:156"
                  },
                  "scope": 44136,
                  "src": "250:434:156",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 43998,
                    "nodeType": "Block",
                    "src": "784:54:156",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 43994,
                              "name": "iToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43985,
                              "src": "815:6:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 43995,
                              "name": "loanAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43987,
                              "src": "823:10:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 43991,
                                  "name": "loanToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 43983,
                                  "src": "795:9:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 43990,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24699,
                                "src": "788:6:156",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 43992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "788:17:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$24699",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 43993,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24671,
                            "src": "788:26:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 43996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "788:46:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 43997,
                        "nodeType": "ExpressionStatement",
                        "src": "788:46:156"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 43999,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "repayFlashLoan",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43988,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43983,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 43999,
                        "src": "714:17:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43982,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "714:7:156",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43985,
                        "name": "iToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 43999,
                        "src": "735:14:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43984,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "735:7:156",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43987,
                        "name": "loanAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 43999,
                        "src": "753:18:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 43986,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "753:7:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "710:64:156"
                  },
                  "returnParameters": {
                    "id": 43989,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "784:0:156"
                  },
                  "scope": 44136,
                  "src": "687:151:156",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 44037,
                    "nodeType": "Block",
                    "src": "971:192:156",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 44016,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45350,
                                      "src": "1026:4:156",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_FlashLoanerTest_$44136",
                                        "typeString": "contract FlashLoanerTest"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_FlashLoanerTest_$44136",
                                        "typeString": "contract FlashLoanerTest"
                                      }
                                    ],
                                    "id": 44015,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1018:7:156",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 44017,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1018:13:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 44012,
                                      "name": "loanToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44001,
                                      "src": "997:9:156",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 44011,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24699,
                                    "src": "990:6:156",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 44013,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "990:17:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 44014,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24644,
                                "src": "990:27:156",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 44018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "990:42:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44010,
                            "name": "BalanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44135,
                            "src": "980:9:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 44019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "980:53:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44020,
                        "nodeType": "EmitStatement",
                        "src": "975:58:156"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44022,
                              "name": "loanToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44001,
                              "src": "1059:9:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44023,
                              "name": "iToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44003,
                              "src": "1070:6:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44024,
                              "name": "loanAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44005,
                              "src": "1078:10:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44021,
                            "name": "ExecuteOperation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44131,
                            "src": "1042:16:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 44025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1042:47:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44026,
                        "nodeType": "EmitStatement",
                        "src": "1037:52:156"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44028,
                              "name": "loanToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44001,
                              "src": "1108:9:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44029,
                              "name": "iToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44003,
                              "src": "1119:6:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44030,
                              "name": "loanAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44005,
                              "src": "1127:10:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44027,
                            "name": "repayFlashLoan",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 43999,
                            "src": "1093:14:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 44031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1093:45:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44032,
                        "nodeType": "ExpressionStatement",
                        "src": "1093:45:156"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 44034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1155:3:156",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                "typeString": "literal_string \"1\""
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                "typeString": "literal_string \"1\""
                              }
                            ],
                            "id": 44033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1149:5:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": "bytes"
                          },
                          "id": 44035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1149:10:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 44009,
                        "id": 44036,
                        "nodeType": "Return",
                        "src": "1142:17:156"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44038,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeOperation",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44006,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44001,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 44038,
                        "src": "870:17:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44000,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "870:7:156",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44003,
                        "name": "iToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 44038,
                        "src": "891:14:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44002,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "891:7:156",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44005,
                        "name": "loanAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44038,
                        "src": "909:18:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44004,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "909:7:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "866:64:156"
                  },
                  "returnParameters": {
                    "id": 44009,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44008,
                        "name": "success",
                        "nodeType": "VariableDeclaration",
                        "scope": 44038,
                        "src": "949:20:156",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 44007,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "949:5:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "948:22:156"
                  },
                  "scope": 44136,
                  "src": "841:322:156",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 44094,
                    "nodeType": "Block",
                    "src": "1271:338:156",
                    "statements": [
                      {
                        "assignments": [
                          44050
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 44050,
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "scope": 44094,
                            "src": "1275:19:156",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 44049,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1275:5:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 44051,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1275:19:156"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 44058,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45350,
                                      "src": "1345:4:156",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_FlashLoanerTest_$44136",
                                        "typeString": "contract FlashLoanerTest"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_FlashLoanerTest_$44136",
                                        "typeString": "contract FlashLoanerTest"
                                      }
                                    ],
                                    "id": 44057,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1337:7:156",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 44059,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1337:13:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 44054,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44040,
                                      "src": "1320:5:156",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 44053,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24699,
                                    "src": "1313:6:156",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 44055,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1313:13:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 44056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24644,
                                "src": "1313:23:156",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 44060,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1313:38:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44052,
                            "name": "BalanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44135,
                            "src": "1303:9:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 44061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1303:49:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44062,
                        "nodeType": "EmitStatement",
                        "src": "1298:54:156"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 44063,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44050,
                            "src": "1357:6:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 44065,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44040,
                                "src": "1388:5:156",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 44066,
                                "name": "iToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44042,
                                "src": "1395:6:156",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 44067,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44044,
                                "src": "1403:6:156",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 44064,
                              "name": "initiateFlashLoanTest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43981,
                              "src": "1366:21:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (address,address,uint256) returns (bytes memory)"
                              }
                            },
                            "id": 44068,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1366:44:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "1357:53:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 44070,
                        "nodeType": "ExpressionStatement",
                        "src": "1357:53:156"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 44077,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45350,
                                      "src": "1462:4:156",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_FlashLoanerTest_$44136",
                                        "typeString": "contract FlashLoanerTest"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_FlashLoanerTest_$44136",
                                        "typeString": "contract FlashLoanerTest"
                                      }
                                    ],
                                    "id": 44076,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1454:7:156",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 44078,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1454:13:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 44073,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44040,
                                      "src": "1437:5:156",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 44072,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24699,
                                    "src": "1430:6:156",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$24699_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 44074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1430:13:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 44075,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24644,
                                "src": "1430:23:156",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 44079,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1430:38:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44071,
                            "name": "BalanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44135,
                            "src": "1420:9:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 44080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1420:49:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44081,
                        "nodeType": "EmitStatement",
                        "src": "1415:54:156"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 44084,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1548:3:156",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                    "typeString": "literal_string \"1\""
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                    "typeString": "literal_string \"1\""
                                  }
                                ],
                                "id": 44083,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1542:5:156",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 44085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1542:10:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44086,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44050,
                              "src": "1554:6:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 44082,
                            "name": "hashCompareWithLengthCheck",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44123,
                            "src": "1515:26:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (bytes memory,bytes memory) pure returns (bool)"
                            }
                          },
                          "id": 44087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1515:46:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 44093,
                        "nodeType": "IfStatement",
                        "src": "1511:95:156",
                        "trueBody": {
                          "id": 44092,
                          "nodeType": "Block",
                          "src": "1563:43:156",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "6661696c656420657865637574654f7065726174696f6e",
                                    "id": 44089,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1575:25:156",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_5007a6860cefa99fb7b35b7263740c31a3425ed6de4b0e11961c8653c22dc3cc",
                                      "typeString": "literal_string \"failed executeOperation\""
                                    },
                                    "value": "failed executeOperation"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_5007a6860cefa99fb7b35b7263740c31a3425ed6de4b0e11961c8653c22dc3cc",
                                      "typeString": "literal_string \"failed executeOperation\""
                                    }
                                  ],
                                  "id": 44088,
                                  "name": "revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    44999,
                                    45000
                                  ],
                                  "referencedDeclaration": 45000,
                                  "src": "1568:6:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory) pure"
                                  }
                                },
                                "id": 44090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1568:33:156",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 44091,
                              "nodeType": "ExpressionStatement",
                              "src": "1568:33:156"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44095,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 44047,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 44046,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1261:9:156",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1261:9:156"
                    }
                  ],
                  "name": "doStuffWithFlashLoan",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44045,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44040,
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 44095,
                        "src": "1199:13:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44039,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1199:7:156",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44042,
                        "name": "iToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 44095,
                        "src": "1216:14:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44041,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1216:7:156",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44044,
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44095,
                        "src": "1234:14:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44043,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1234:7:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1195:56:156"
                  },
                  "returnParameters": {
                    "id": 44048,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1271:0:156"
                  },
                  "scope": 44136,
                  "src": "1166:443:156",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 44122,
                    "nodeType": "Block",
                    "src": "1709:106:156",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 44108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 44104,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44097,
                              "src": "1717:1:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 44105,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1717:8:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 44106,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44099,
                              "src": "1729:1:156",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 44107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1729:8:156",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1717:20:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 44120,
                          "nodeType": "Block",
                          "src": "1767:45:156",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 44118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 44113,
                                      "name": "a",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44097,
                                      "src": "1789:1:156",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 44112,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44988,
                                    "src": "1779:9:156",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 44114,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1779:12:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 44116,
                                      "name": "b",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44099,
                                      "src": "1805:1:156",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 44115,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44988,
                                    "src": "1795:9:156",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 44117,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1795:12:156",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "1779:28:156",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "functionReturnParameters": 44103,
                              "id": 44119,
                              "nodeType": "Return",
                              "src": "1772:35:156"
                            }
                          ]
                        },
                        "id": 44121,
                        "nodeType": "IfStatement",
                        "src": "1713:99:156",
                        "trueBody": {
                          "id": 44111,
                          "nodeType": "Block",
                          "src": "1739:22:156",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 44109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1751:5:156",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 44103,
                              "id": 44110,
                              "nodeType": "Return",
                              "src": "1744:12:156"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44123,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "hashCompareWithLengthCheck",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44100,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44097,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 44123,
                        "src": "1648:14:156",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 44096,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1648:5:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44099,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 44123,
                        "src": "1664:14:156",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 44098,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1664:5:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1647:32:156"
                  },
                  "returnParameters": {
                    "id": 44103,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44102,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44123,
                        "src": "1703:4:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 44101,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1703:4:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1702:6:156"
                  },
                  "scope": 44136,
                  "src": "1612:203:156",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 44131,
                  "name": "ExecuteOperation",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 44130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44125,
                        "indexed": false,
                        "name": "loanToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 44131,
                        "src": "1841:17:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44124,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1841:7:156",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44127,
                        "indexed": false,
                        "name": "iToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 44131,
                        "src": "1860:14:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44126,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1860:7:156",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44129,
                        "indexed": false,
                        "name": "loanAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44131,
                        "src": "1876:18:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44128,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1876:7:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1840:55:156"
                  },
                  "src": "1818:78:156"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 44135,
                  "name": "BalanceOf",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 44134,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44133,
                        "indexed": false,
                        "name": "balance",
                        "nodeType": "VariableDeclaration",
                        "scope": 44135,
                        "src": "1915:15:156",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44132,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1915:7:156",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1914:17:156"
                  },
                  "src": "1899:33:156"
                }
              ],
              "scope": 44137,
              "src": "211:1723:156"
            }
          ],
          "src": "0:1935:156"
        },
        "id": 156
      },
      "contracts/testhelpers/ITokenFlashLoanTest.sol": {
        "ast": {
          "absolutePath": "contracts/testhelpers/ITokenFlashLoanTest.sol",
          "exportedSymbols": {
            "ITokenFlashLoanTest": [
              44155
            ]
          },
          "id": 44156,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 44138,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:157"
            },
            {
              "id": 44139,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "25:33:157"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 44155,
              "linearizedBaseContracts": [
                44155
              ],
              "name": "ITokenFlashLoanTest",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "id": 44154,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "flashBorrow",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44150,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44141,
                        "name": "borrowAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44154,
                        "src": "159:20:157",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44140,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "159:7:157",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44143,
                        "name": "borrower",
                        "nodeType": "VariableDeclaration",
                        "scope": 44154,
                        "src": "183:16:157",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44142,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "183:7:157",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44145,
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "scope": 44154,
                        "src": "203:14:157",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44144,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "203:7:157",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44147,
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 44154,
                        "src": "221:25:157",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 44146,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "221:6:157",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44149,
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 44154,
                        "src": "250:19:157",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 44148,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "250:5:157",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "155:117:157"
                  },
                  "returnParameters": {
                    "id": 44153,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44152,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44154,
                        "src": "299:12:157",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 44151,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "299:5:157",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "298:14:157"
                  },
                  "scope": 44155,
                  "src": "135:178:157",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 44156,
              "src": "102:213:157"
            }
          ],
          "src": "0:316:157"
        },
        "id": 157
      },
      "contracts/testhelpers/LoanTokenLogicTest.sol": {
        "ast": {
          "absolutePath": "contracts/testhelpers/LoanTokenLogicTest.sol",
          "exportedSymbols": {
            "LoanTokenLogicTest": [
              44179
            ]
          },
          "id": 44180,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 44157,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:158"
            },
            {
              "id": 44158,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "24:33:158"
            },
            {
              "absolutePath": "contracts/connectors/loantoken/LoanTokenLogicLM.sol",
              "file": "../connectors/loantoken/LoanTokenLogicLM.sol",
              "id": 44159,
              "nodeType": "ImportDirective",
              "scope": 44180,
              "sourceUnit": 585,
              "src": "59:54:158",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 44160,
                    "name": "LoanTokenLogicLM",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 584,
                    "src": "146:16:158",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LoanTokenLogicLM_$584",
                      "typeString": "contract LoanTokenLogicLM"
                    }
                  },
                  "id": 44161,
                  "nodeType": "InheritanceSpecifier",
                  "src": "146:16:158"
                }
              ],
              "contractDependencies": [
                168,
                271,
                511,
                584,
                3574,
                4182,
                4221,
                41125,
                41798,
                41829
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 44179,
              "linearizedBaseContracts": [
                44179,
                584,
                3574,
                4182,
                168,
                271,
                511,
                4221,
                41798,
                41125,
                41829
              ],
              "name": "LoanTokenLogicTest",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 44177,
                    "nodeType": "Block",
                    "src": "290:75:158",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44173,
                              "name": "leverageAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44163,
                              "src": "331:14:158",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44174,
                              "name": "depositAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44165,
                              "src": "347:13:158",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44172,
                            "name": "_getMarginBorrowAmountAndRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3285,
                            "src": "301:29:158",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view returns (uint256,uint256)"
                            }
                          },
                          "id": 44175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "301:60:158",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 44171,
                        "id": 44176,
                        "nodeType": "Return",
                        "src": "294:67:158"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44178,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMarginBorrowAmountAndRate",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44166,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44163,
                        "name": "leverageAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44178,
                        "src": "204:22:158",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44162,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "204:7:158",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44165,
                        "name": "depositAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44178,
                        "src": "228:21:158",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44164,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "228:7:158",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "203:47:158"
                  },
                  "returnParameters": {
                    "id": 44171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44168,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44178,
                        "src": "272:7:158",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44167,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "272:7:158",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44170,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44178,
                        "src": "281:7:158",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44169,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "281:7:158",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "271:18:158"
                  },
                  "scope": 44179,
                  "src": "166:199:158",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 44180,
              "src": "115:252:158"
            }
          ],
          "src": "0:368:158"
        },
        "id": 158
      },
      "contracts/testhelpers/TestLibraries.sol": {
        "ast": {
          "absolutePath": "contracts/testhelpers/TestLibraries.sol",
          "exportedSymbols": {
            "TestLibraries": [
              44214
            ]
          },
          "id": 44215,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 44181,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:159"
            },
            {
              "absolutePath": "contracts/rsk/RSKAddrValidator.sol",
              "file": "../rsk/RSKAddrValidator.sol",
              "id": 44182,
              "nodeType": "ImportDirective",
              "scope": 44215,
              "sourceUnit": 42701,
              "src": "26:37:159",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 44214,
              "linearizedBaseContracts": [
                44214
              ],
              "name": "TestLibraries",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 44195,
                    "nodeType": "Block",
                    "src": "438:54:159",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 44191,
                                  "name": "addr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44184,
                                  "src": "482:4:159",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 44189,
                                  "name": "RSKAddrValidator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42700,
                                  "src": "450:16:159",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_RSKAddrValidator_$42700_$",
                                    "typeString": "type(library RSKAddrValidator)"
                                  }
                                },
                                "id": 44190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "checkPKNotZero",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42674,
                                "src": "450:31:159",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) pure returns (bool)"
                                }
                              },
                              "id": 44192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "450:37:159",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 44193,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "449:39:159",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 44188,
                        "id": 44194,
                        "nodeType": "Return",
                        "src": "442:46:159"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44196,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "RSKAddrValidator_checkPKNotZero",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44185,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44184,
                        "name": "addr",
                        "nodeType": "VariableDeclaration",
                        "scope": 44196,
                        "src": "397:12:159",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44183,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "397:7:159",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "396:14:159"
                  },
                  "returnParameters": {
                    "id": 44188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44187,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44196,
                        "src": "432:4:159",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 44186,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "432:4:159",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "431:6:159"
                  },
                  "scope": 44214,
                  "src": "356:136:159",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44212,
                    "nodeType": "Block",
                    "src": "692:58:159",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 44207,
                                  "name": "addr1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44198,
                                  "src": "732:5:159",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 44208,
                                  "name": "addr2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44200,
                                  "src": "739:5:159",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 44205,
                                  "name": "RSKAddrValidator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42700,
                                  "src": "704:16:159",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_RSKAddrValidator_$42700_$",
                                    "typeString": "type(library RSKAddrValidator)"
                                  }
                                },
                                "id": 44206,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "safeEquals",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42699,
                                "src": "704:27:159",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) pure returns (bool)"
                                }
                              },
                              "id": 44209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "704:41:159",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 44210,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "703:43:159",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 44204,
                        "id": 44211,
                        "nodeType": "Return",
                        "src": "696:50:159"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44213,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "RSKAddrValidator_safeEquals",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44201,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44198,
                        "name": "addr1",
                        "nodeType": "VariableDeclaration",
                        "scope": 44213,
                        "src": "635:13:159",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44197,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "635:7:159",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44200,
                        "name": "addr2",
                        "nodeType": "VariableDeclaration",
                        "scope": 44213,
                        "src": "650:13:159",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44199,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "650:7:159",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "634:30:159"
                  },
                  "returnParameters": {
                    "id": 44204,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44203,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44213,
                        "src": "686:4:159",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 44202,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "686:4:159",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "685:6:159"
                  },
                  "scope": 44214,
                  "src": "598:152:159",
                  "stateMutability": "pure",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 44215,
              "src": "99:653:159"
            }
          ],
          "src": "0:753:159"
        },
        "id": 159
      },
      "contracts/testhelpers/TestSovrynSwap.sol": {
        "ast": {
          "absolutePath": "contracts/testhelpers/TestSovrynSwap.sol",
          "exportedSymbols": {
            "TestSovrynSwap": [
              44412
            ]
          },
          "id": 44413,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 44216,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "58:23:160"
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeERC20.sol",
              "file": "../openzeppelin/SafeERC20.sol",
              "id": 44217,
              "nodeType": "ImportDirective",
              "scope": 44413,
              "sourceUnit": 42050,
              "src": "83:39:160",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/feeds/IPriceFeeds.sol",
              "file": "../feeds/IPriceFeeds.sol",
              "id": 44218,
              "nodeType": "ImportDirective",
              "scope": 44413,
              "sourceUnit": 8708,
              "src": "123:34:160",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/testhelpers/TestToken.sol",
              "file": "./TestToken.sol",
              "id": 44219,
              "nodeType": "ImportDirective",
              "scope": 44413,
              "sourceUnit": 44810,
              "src": "158:25:160",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../openzeppelin/SafeMath.sol",
              "id": 44220,
              "nodeType": "ImportDirective",
              "scope": 44413,
              "sourceUnit": 42310,
              "src": "184:38:160",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 44412,
              "linearizedBaseContracts": [
                44412
              ],
              "name": "TestSovrynSwap",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 44223,
                  "libraryName": {
                    "contractScope": null,
                    "id": 44221,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42049,
                    "src": "257:9:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$42049",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "251:27:160",
                  "typeName": {
                    "contractScope": null,
                    "id": 44222,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24699,
                    "src": "271:6:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$24699",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "id": 44226,
                  "libraryName": {
                    "contractScope": null,
                    "id": 44224,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "286:8:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "280:27:160",
                  "typeName": {
                    "id": 44225,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "299:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 44228,
                  "name": "priceFeeds",
                  "nodeType": "VariableDeclaration",
                  "scope": 44412,
                  "src": "310:25:160",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 44227,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "310:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44237,
                    "nodeType": "Block",
                    "src": "372:25:160",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 44233,
                            "name": "priceFeeds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44228,
                            "src": "376:10:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 44234,
                            "name": "feed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44230,
                            "src": "389:4:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "376:17:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 44236,
                        "nodeType": "ExpressionStatement",
                        "src": "376:17:160"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44238,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44231,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44230,
                        "name": "feed",
                        "nodeType": "VariableDeclaration",
                        "scope": 44238,
                        "src": "351:12:160",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44229,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "351:7:160",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "350:14:160"
                  },
                  "returnParameters": {
                    "id": 44232,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "372:0:160"
                  },
                  "scope": 44412,
                  "src": "339:58:160",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44249,
                    "nodeType": "Block",
                    "src": "565:28:160",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44246,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45356,
                              "src": "584:4:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TestSovrynSwap_$44412",
                                "typeString": "contract TestSovrynSwap"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_TestSovrynSwap_$44412",
                                "typeString": "contract TestSovrynSwap"
                              }
                            ],
                            "id": 44245,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "576:7:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 44247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "576:13:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 44244,
                        "id": 44248,
                        "nodeType": "Return",
                        "src": "569:20:160"
                      }
                    ]
                  },
                  "documentation": "simulating the contract registry. always returns the address of this contract\n",
                  "id": 44250,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addressOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44241,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44240,
                        "name": "contractName",
                        "nodeType": "VariableDeclaration",
                        "scope": 44250,
                        "src": "513:20:160",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 44239,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "513:7:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "512:22:160"
                  },
                  "returnParameters": {
                    "id": 44244,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44243,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44250,
                        "src": "556:7:160",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44242,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "556:7:160",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "555:9:160"
                  },
                  "scope": 44412,
                  "src": "494:99:160",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44336,
                    "nodeType": "Block",
                    "src": "969:523:160",
                    "statements": [
                      {
                        "assignments": [
                          44269,
                          44271
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 44269,
                            "name": "sourceToDestRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 44336,
                            "src": "1031:24:160",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 44268,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1031:7:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 44271,
                            "name": "sourceToDestPrecision",
                            "nodeType": "VariableDeclaration",
                            "scope": 44336,
                            "src": "1057:29:160",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 44270,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1057:7:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 44287,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 44277,
                                    "name": "_path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44253,
                                    "src": "1132:5:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                                      "typeString": "contract IERC20[] calldata"
                                    }
                                  },
                                  "id": 44279,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 44278,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1138:1:160",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1132:8:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 44276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1124:7:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 44280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1124:17:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 44282,
                                    "name": "_path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44253,
                                    "src": "1151:5:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                                      "typeString": "contract IERC20[] calldata"
                                    }
                                  },
                                  "id": 44284,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 44283,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1157:1:160",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1151:8:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 44281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1143:7:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 44285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1143:17:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 44273,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44228,
                                  "src": "1102:10:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 44272,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "1090:11:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 44274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1090:23:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 44275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queryRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8595,
                            "src": "1090:33:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256,uint256)"
                            }
                          },
                          "id": 44286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1090:71:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1030:131:160"
                      },
                      {
                        "assignments": [
                          44289
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 44289,
                            "name": "actualReturn",
                            "nodeType": "VariableDeclaration",
                            "scope": 44336,
                            "src": "1165:20:160",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 44288,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1165:7:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 44297,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44295,
                              "name": "sourceToDestPrecision",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44271,
                              "src": "1222:21:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 44292,
                                  "name": "sourceToDestRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44269,
                                  "src": "1200:16:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 44290,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44255,
                                  "src": "1188:7:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 44291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "1188:11:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 44293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1188:29:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 44294,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "1188:33:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 44296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1188:56:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1165:79:160"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 44301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 44299,
                                "name": "actualReturn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44289,
                                "src": "1257:12:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 44300,
                                "name": "_minReturn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44257,
                                "src": "1273:10:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1257:26:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e73756666696369656e7420736f7572636520746f6b656e732070726f7669646564",
                              "id": 44302,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1285:37:160",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0e53635cd0d59a35833108efeffdb73ed5be9b0f4d9c240965f7bc3278cd8a45",
                                "typeString": "literal_string \"insufficient source tokens provided\""
                              },
                              "value": "insufficient source tokens provided"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0e53635cd0d59a35833108efeffdb73ed5be9b0f4d9c240965f7bc3278cd8a45",
                                "typeString": "literal_string \"insufficient source tokens provided\""
                              }
                            ],
                            "id": 44298,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1249:7:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 44303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1249:74:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44304,
                        "nodeType": "ExpressionStatement",
                        "src": "1249:74:160"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 44314,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "1370:3:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 44315,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1370:10:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 44313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1362:7:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 44316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1362:19:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44317,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44255,
                              "src": "1383:7:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 44307,
                                        "name": "_path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44253,
                                        "src": "1346:5:160",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                                          "typeString": "contract IERC20[] calldata"
                                        }
                                      },
                                      "id": 44309,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 44308,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1352:1:160",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1346:8:160",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    ],
                                    "id": 44306,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1338:7:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 44310,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1338:17:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 44305,
                                "name": "TestToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44809,
                                "src": "1328:9:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TestToken_$44809_$",
                                  "typeString": "type(contract TestToken)"
                                }
                              },
                              "id": 44311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1328:28:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TestToken_$44809",
                                "typeString": "contract TestToken"
                              }
                            },
                            "id": 44312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 44772,
                            "src": "1328:33:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 44318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1328:63:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44319,
                        "nodeType": "ExpressionStatement",
                        "src": "1328:63:160"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 44329,
                                  "name": "_beneficiary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44259,
                                  "src": "1437:12:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 44328,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1429:7:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 44330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1429:21:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44331,
                              "name": "actualReturn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44289,
                              "src": "1452:12:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 44322,
                                        "name": "_path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 44253,
                                        "src": "1413:5:160",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                                          "typeString": "contract IERC20[] calldata"
                                        }
                                      },
                                      "id": 44324,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 44323,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1419:1:160",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1413:8:160",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IERC20_$24699",
                                        "typeString": "contract IERC20"
                                      }
                                    ],
                                    "id": 44321,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1405:7:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 44325,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1405:17:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 44320,
                                "name": "TestToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44809,
                                "src": "1395:9:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TestToken_$44809_$",
                                  "typeString": "type(contract TestToken)"
                                }
                              },
                              "id": 44326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1395:28:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TestToken_$44809",
                                "typeString": "contract TestToken"
                              }
                            },
                            "id": 44327,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 44724,
                            "src": "1395:33:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 44332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1395:70:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44333,
                        "nodeType": "ExpressionStatement",
                        "src": "1395:70:160"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44334,
                          "name": "actualReturn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44289,
                          "src": "1476:12:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 44267,
                        "id": 44335,
                        "nodeType": "Return",
                        "src": "1469:19:160"
                      }
                    ]
                  },
                  "documentation": "calculates the return tokens when swapping _amount, makes sure the return is bigger than _minReturn,\nmints and burns the test tokens accordingly.\n",
                  "id": 44337,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "convertByPath",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44264,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44253,
                        "name": "_path",
                        "nodeType": "VariableDeclaration",
                        "scope": 44337,
                        "src": "788:23:160",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 44251,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 24699,
                            "src": "788:6:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 44252,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "788:8:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44255,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44337,
                        "src": "815:15:160",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44254,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "815:7:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44257,
                        "name": "_minReturn",
                        "nodeType": "VariableDeclaration",
                        "scope": 44337,
                        "src": "834:18:160",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44256,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "834:7:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44259,
                        "name": "_beneficiary",
                        "nodeType": "VariableDeclaration",
                        "scope": 44337,
                        "src": "856:20:160",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44258,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "856:7:160",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44261,
                        "name": "_affiliateAccount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44337,
                        "src": "880:25:160",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44260,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "880:7:160",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44263,
                        "name": "_affiliateFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 44337,
                        "src": "909:21:160",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44262,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "909:7:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "784:149:160"
                  },
                  "returnParameters": {
                    "id": 44267,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44266,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44337,
                        "src": "960:7:160",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44265,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "960:7:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "959:9:160"
                  },
                  "scope": 44412,
                  "src": "762:730:160",
                  "stateMutability": "payable",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 44375,
                    "nodeType": "Block",
                    "src": "1746:207:160",
                    "statements": [
                      {
                        "assignments": [
                          44348,
                          44350
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 44348,
                            "name": "sourceToDestRate",
                            "nodeType": "VariableDeclaration",
                            "scope": 44375,
                            "src": "1751:24:160",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 44347,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1751:7:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 44350,
                            "name": "sourceToDestPrecision",
                            "nodeType": "VariableDeclaration",
                            "scope": 44375,
                            "src": "1777:29:160",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 44349,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1777:7:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 44366,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 44356,
                                    "name": "_path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44340,
                                    "src": "1852:5:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                                      "typeString": "contract IERC20[] calldata"
                                    }
                                  },
                                  "id": 44358,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 44357,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1858:1:160",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1852:8:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 44355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1844:7:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 44359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1844:17:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 44361,
                                    "name": "_path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44340,
                                    "src": "1871:5:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                                      "typeString": "contract IERC20[] calldata"
                                    }
                                  },
                                  "id": 44363,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 44362,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1877:1:160",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1871:8:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$24699",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 44360,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1863:7:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 44364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1863:17:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 44352,
                                  "name": "priceFeeds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44228,
                                  "src": "1822:10:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 44351,
                                "name": "IPriceFeeds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8707,
                                "src": "1810:11:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPriceFeeds_$8707_$",
                                  "typeString": "type(contract IPriceFeeds)"
                                }
                              },
                              "id": 44353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1810:23:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceFeeds_$8707",
                                "typeString": "contract IPriceFeeds"
                              }
                            },
                            "id": 44354,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "queryRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8595,
                            "src": "1810:33:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256,uint256)"
                            }
                          },
                          "id": 44365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1810:71:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1750:131:160"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44372,
                              "name": "sourceToDestPrecision",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44350,
                              "src": "1927:21:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 44369,
                                  "name": "sourceToDestRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44348,
                                  "src": "1905:16:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 44367,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44342,
                                  "src": "1893:7:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 44368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 42153,
                                "src": "1893:11:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 44370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1893:29:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 44371,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42169,
                            "src": "1893:33:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 44373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1893:56:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 44346,
                        "id": 44374,
                        "nodeType": "Return",
                        "src": "1886:63:160"
                      }
                    ]
                  },
                  "documentation": "queries the rate from the Price Feed contract and computes the expected return amount based on the\namout of source tokens to be swapped.\n",
                  "id": 44376,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rateByPath",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44343,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44340,
                        "name": "_path",
                        "nodeType": "VariableDeclaration",
                        "scope": 44376,
                        "src": "1672:23:160",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_calldata_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 44338,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 24699,
                            "src": "1672:6:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 44339,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1672:8:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44342,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44376,
                        "src": "1697:15:160",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44341,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1697:7:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1671:42:160"
                  },
                  "returnParameters": {
                    "id": 44346,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44345,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44376,
                        "src": "1737:7:160",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44344,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1737:7:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1736:9:160"
                  },
                  "scope": 44412,
                  "src": "1652:301:160",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 44410,
                    "nodeType": "Block",
                    "src": "2130:113:160",
                    "statements": [
                      {
                        "assignments": [
                          44389
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 44389,
                            "name": "path",
                            "nodeType": "VariableDeclaration",
                            "scope": 44410,
                            "src": "2134:20:160",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                              "typeString": "contract IERC20[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 44387,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 24699,
                                "src": "2134:6:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$24699",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 44388,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2134:8:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 44395,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 44393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2170:1:160",
                              "subdenomination": null,
                              "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": 44392,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2157:12:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$24699_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (contract IERC20[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 44390,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 24699,
                                "src": "2161:6:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$24699",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 44391,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2161:8:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            }
                          },
                          "id": 44394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2157:15:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory",
                            "typeString": "contract IERC20[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2134:38:160"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 44396,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44389,
                              "src": "2176:4:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            "id": 44398,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 44397,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2181:1:160",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2176:7:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 44399,
                            "name": "_sourceToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44378,
                            "src": "2186:12:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "2176:22:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 44401,
                        "nodeType": "ExpressionStatement",
                        "src": "2176:22:160"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 44402,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44389,
                              "src": "2202:4:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            "id": 44404,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 44403,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2207:1:160",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2202:7:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 44405,
                            "name": "_targetToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44380,
                            "src": "2212:12:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "2202:22:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 44407,
                        "nodeType": "ExpressionStatement",
                        "src": "2202:22:160"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44408,
                          "name": "path",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44389,
                          "src": "2235:4:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                            "typeString": "contract IERC20[] memory"
                          }
                        },
                        "functionReturnParameters": 44385,
                        "id": 44409,
                        "nodeType": "Return",
                        "src": "2228:11:160"
                      }
                    ]
                  },
                  "documentation": "returns the conversion path -> always a direct path\n",
                  "id": 44411,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "conversionPath",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44381,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44378,
                        "name": "_sourceToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 44411,
                        "src": "2048:19:160",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 44377,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24699,
                          "src": "2048:6:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44380,
                        "name": "_targetToken",
                        "nodeType": "VariableDeclaration",
                        "scope": 44411,
                        "src": "2069:19:160",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$24699",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 44379,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24699,
                          "src": "2069:6:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$24699",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2047:42:160"
                  },
                  "returnParameters": {
                    "id": 44385,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44384,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44411,
                        "src": "2113:15:160",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 44382,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 24699,
                            "src": "2113:6:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$24699",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 44383,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2113:8:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$24699_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2112:17:160"
                  },
                  "scope": 44412,
                  "src": "2024:219:160",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 44413,
              "src": "224:2021:160"
            }
          ],
          "src": "58:2188:160"
        },
        "id": 160
      },
      "contracts/testhelpers/TestToken.sol": {
        "ast": {
          "absolutePath": "contracts/testhelpers/TestToken.sol",
          "exportedSymbols": {
            "TestToken": [
              44809
            ]
          },
          "id": 44810,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 44414,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "118:23:161"
            },
            {
              "absolutePath": "contracts/openzeppelin/SafeMath.sol",
              "file": "../openzeppelin/SafeMath.sol",
              "id": 44415,
              "nodeType": "ImportDirective",
              "scope": 44810,
              "sourceUnit": 42310,
              "src": "143:38:161",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 44809,
              "linearizedBaseContracts": [
                44809
              ],
              "name": "TestToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 44418,
                  "libraryName": {
                    "contractScope": null,
                    "id": 44416,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 42309,
                    "src": "211:8:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$42309",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "205:27:161",
                  "typeName": {
                    "id": 44417,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "224:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 44426,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 44425,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44420,
                        "indexed": true,
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 44426,
                        "src": "250:20:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44419,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "250:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44422,
                        "indexed": true,
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 44426,
                        "src": "272:18:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44421,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "272:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44424,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 44426,
                        "src": "292:13:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44423,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "292:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "249:57:161"
                  },
                  "src": "235:72:161"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 44434,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 44433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44428,
                        "indexed": true,
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 44434,
                        "src": "324:21:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44427,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "324:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44430,
                        "indexed": true,
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 44434,
                        "src": "347:23:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44429,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "347:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44432,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 44434,
                        "src": "372:13:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44431,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "372:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "323:63:161"
                  },
                  "src": "309:78:161"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 44440,
                  "name": "Mint",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 44439,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44436,
                        "indexed": true,
                        "name": "minter",
                        "nodeType": "VariableDeclaration",
                        "scope": 44440,
                        "src": "400:22:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44435,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "400:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44438,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 44440,
                        "src": "424:13:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44437,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "424:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "399:39:161"
                  },
                  "src": "389:50:161"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 44446,
                  "name": "Burn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 44445,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44442,
                        "indexed": true,
                        "name": "burner",
                        "nodeType": "VariableDeclaration",
                        "scope": 44446,
                        "src": "452:22:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44441,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "452:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44444,
                        "indexed": false,
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 44446,
                        "src": "476:13:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44443,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "476:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "451:39:161"
                  },
                  "src": "441:50:161"
                },
                {
                  "constant": false,
                  "id": 44448,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 44809,
                  "src": "494:18:161",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 44447,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "494:6:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 44450,
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 44809,
                  "src": "515:20:161",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 44449,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "515:6:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 44452,
                  "name": "decimals",
                  "nodeType": "VariableDeclaration",
                  "scope": 44809,
                  "src": "538:21:161",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 44451,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "538:5:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 44456,
                  "name": "balances",
                  "nodeType": "VariableDeclaration",
                  "scope": 44809,
                  "src": "563:45:161",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 44455,
                    "keyType": {
                      "id": 44453,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "571:7:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "563:27:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 44454,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "582:7:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44462,
                  "name": "allowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 44809,
                  "src": "611:64:161",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 44461,
                    "keyType": {
                      "id": 44457,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "619:7:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "611:47:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 44460,
                      "keyType": {
                        "id": 44458,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "638:7:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "630:27:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 44459,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "649:7:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44464,
                  "name": "totalSupply_",
                  "nodeType": "VariableDeclaration",
                  "scope": 44809,
                  "src": "678:29:161",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44463,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "678:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 44498,
                    "nodeType": "Block",
                    "src": "826:135:161",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 44475,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44448,
                            "src": "830:4:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 44476,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44466,
                            "src": "837:5:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "830:12:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 44478,
                        "nodeType": "ExpressionStatement",
                        "src": "830:12:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 44479,
                            "name": "symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44450,
                            "src": "846:6:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 44480,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44468,
                            "src": "855:7:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "846:16:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 44482,
                        "nodeType": "ExpressionStatement",
                        "src": "846:16:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 44483,
                            "name": "decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44452,
                            "src": "866:8:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 44484,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44470,
                            "src": "877:9:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "866:20:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 44486,
                        "nodeType": "ExpressionStatement",
                        "src": "866:20:161"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 44489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 44487,
                            "name": "_initialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44472,
                            "src": "895:14:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 44488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "913:1:161",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "895:19:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 44497,
                        "nodeType": "IfStatement",
                        "src": "891:67:161",
                        "trueBody": {
                          "id": 44496,
                          "nodeType": "Block",
                          "src": "916:42:161",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 44491,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "926:3:161",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 44492,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "926:10:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 44493,
                                    "name": "_initialAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44472,
                                    "src": "938:14:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 44490,
                                  "name": "mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44724,
                                  "src": "921:4:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 44494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "921:32:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 44495,
                              "nodeType": "ExpressionStatement",
                              "src": "921:32:161"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44499,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44473,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44466,
                        "name": "_name",
                        "nodeType": "VariableDeclaration",
                        "scope": 44499,
                        "src": "726:19:161",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 44465,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "726:6:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44468,
                        "name": "_symbol",
                        "nodeType": "VariableDeclaration",
                        "scope": 44499,
                        "src": "749:21:161",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 44467,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "749:6:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44470,
                        "name": "_decimals",
                        "nodeType": "VariableDeclaration",
                        "scope": 44499,
                        "src": "774:15:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 44469,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "774:5:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44472,
                        "name": "_initialAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44499,
                        "src": "793:22:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44471,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "793:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "722:96:161"
                  },
                  "returnParameters": {
                    "id": 44474,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "826:0:161"
                  },
                  "scope": 44809,
                  "src": "711:250:161",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44526,
                    "nodeType": "Block",
                    "src": "1037:108:161",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 44508,
                                "name": "allowed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44462,
                                "src": "1041:7:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 44512,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 44509,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44994,
                                  "src": "1049:3:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 44510,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1049:10:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1041:19:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 44513,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 44511,
                              "name": "_spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44501,
                              "src": "1061:8:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1041:29:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 44514,
                            "name": "_value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44503,
                            "src": "1073:6:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1041:38:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 44516,
                        "nodeType": "ExpressionStatement",
                        "src": "1041:38:161"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 44518,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "1097:3:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 44519,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1097:10:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44520,
                              "name": "_spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44501,
                              "src": "1109:8:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44521,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44503,
                              "src": "1119:6:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44517,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44434,
                            "src": "1088:8:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 44522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1088:38:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44523,
                        "nodeType": "EmitStatement",
                        "src": "1083:43:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 44524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1137:4:161",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 44507,
                        "id": 44525,
                        "nodeType": "Return",
                        "src": "1130:11:161"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44527,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44504,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44501,
                        "name": "_spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 44527,
                        "src": "981:16:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44500,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "981:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44503,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 44527,
                        "src": "999:14:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44502,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "999:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "980:34:161"
                  },
                  "returnParameters": {
                    "id": 44507,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44506,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44527,
                        "src": "1031:4:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 44505,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1031:4:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1030:6:161"
                  },
                  "scope": 44809,
                  "src": "964:181:161",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44585,
                    "nodeType": "Block",
                    "src": "1217:251:161",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 44548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 44542,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 44537,
                                  "name": "_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44531,
                                  "src": "1229:6:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 44538,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44456,
                                    "src": "1239:8:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 44541,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 44539,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "1248:3:161",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 44540,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "1248:10:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1239:20:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1229:30:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 44547,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 44543,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44529,
                                  "src": "1263:3:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 44545,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1278:1:161",
                                      "subdenomination": null,
                                      "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": 44544,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1270:7:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 44546,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1270:10:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "1263:17:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1229:51:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e76616c6964207472616e73666572",
                              "id": 44549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1282:18:161",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5df91fb23a185810d57e01329aedf46eb301bd084d6e9aabb4e3e7abe0e5571f",
                                "typeString": "literal_string \"invalid transfer\""
                              },
                              "value": "invalid transfer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5df91fb23a185810d57e01329aedf46eb301bd084d6e9aabb4e3e7abe0e5571f",
                                "typeString": "literal_string \"invalid transfer\""
                              }
                            ],
                            "id": 44536,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1221:7:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 44550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1221:80:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44551,
                        "nodeType": "ExpressionStatement",
                        "src": "1221:80:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 44552,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44456,
                              "src": "1306:8:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 44555,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 44553,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "1315:3:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 44554,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1315:10:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1306:20:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 44561,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44531,
                                "src": "1354:6:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 44556,
                                  "name": "balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44456,
                                  "src": "1329:8:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 44559,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 44557,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "1338:3:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 44558,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1338:10:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1329:20:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 44560,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "1329:24:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 44562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1329:32:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1306:55:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 44564,
                        "nodeType": "ExpressionStatement",
                        "src": "1306:55:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 44565,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44456,
                              "src": "1365:8:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 44567,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 44566,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44529,
                              "src": "1374:3:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1365:13:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 44572,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44531,
                                "src": "1399:6:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 44568,
                                  "name": "balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44456,
                                  "src": "1381:8:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 44570,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 44569,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44529,
                                  "src": "1390:3:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1381:13:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 44571,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "1381:17:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 44573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1381:25:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1365:41:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 44575,
                        "nodeType": "ExpressionStatement",
                        "src": "1365:41:161"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 44577,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "1425:3:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 44578,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1425:10:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44579,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44529,
                              "src": "1437:3:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44580,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44531,
                              "src": "1442:6:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44576,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44426,
                            "src": "1416:8:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 44581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1416:33:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44582,
                        "nodeType": "EmitStatement",
                        "src": "1411:38:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 44583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1460:4:161",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 44535,
                        "id": 44584,
                        "nodeType": "Return",
                        "src": "1453:11:161"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44586,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44532,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44529,
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 44586,
                        "src": "1166:11:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44528,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1166:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44531,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 44586,
                        "src": "1179:14:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44530,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1179:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1165:29:161"
                  },
                  "returnParameters": {
                    "id": 44535,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44534,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44586,
                        "src": "1211:4:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 44533,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1211:4:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1210:6:161"
                  },
                  "scope": 44809,
                  "src": "1148:320:161",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44675,
                    "nodeType": "Block",
                    "src": "1568:420:161",
                    "statements": [
                      {
                        "assignments": [
                          44598
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 44598,
                            "name": "allowanceAmount",
                            "nodeType": "VariableDeclaration",
                            "scope": 44675,
                            "src": "1572:23:161",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 44597,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1572:7:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 44605,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 44599,
                              "name": "allowed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44462,
                              "src": "1598:7:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 44601,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 44600,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44588,
                              "src": "1606:5:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1598:14:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 44604,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 44602,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44994,
                              "src": "1613:3:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 44603,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1613:10:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1598:26:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1572:52:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 44621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 44615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 44611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 44607,
                                    "name": "_value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44592,
                                    "src": "1636:6:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 44608,
                                      "name": "balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44456,
                                      "src": "1646:8:161",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 44610,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 44609,
                                      "name": "_from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44588,
                                      "src": "1655:5:161",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1646:15:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1636:25:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 44614,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 44612,
                                    "name": "_value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44592,
                                    "src": "1665:6:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 44613,
                                    "name": "allowanceAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44598,
                                    "src": "1675:15:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1665:25:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1636:54:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 44620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 44616,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44590,
                                  "src": "1694:3:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 44618,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1709:1:161",
                                      "subdenomination": null,
                                      "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": 44617,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1701:7:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 44619,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1701:10:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "1694:17:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1636:75:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "696e76616c6964207472616e73666572",
                              "id": 44622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1713:18:161",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5df91fb23a185810d57e01329aedf46eb301bd084d6e9aabb4e3e7abe0e5571f",
                                "typeString": "literal_string \"invalid transfer\""
                              },
                              "value": "invalid transfer"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5df91fb23a185810d57e01329aedf46eb301bd084d6e9aabb4e3e7abe0e5571f",
                                "typeString": "literal_string \"invalid transfer\""
                              }
                            ],
                            "id": 44606,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "1628:7:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 44623,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1628:104:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44624,
                        "nodeType": "ExpressionStatement",
                        "src": "1628:104:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 44625,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44456,
                              "src": "1737:8:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 44627,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 44626,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44588,
                              "src": "1746:5:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1737:15:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 44632,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44592,
                                "src": "1775:6:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 44628,
                                  "name": "balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44456,
                                  "src": "1755:8:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 44630,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 44629,
                                  "name": "_from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44588,
                                  "src": "1764:5:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1755:15:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 44631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "1755:19:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 44633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1755:27:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1737:45:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 44635,
                        "nodeType": "ExpressionStatement",
                        "src": "1737:45:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 44636,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44456,
                              "src": "1786:8:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 44638,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 44637,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44590,
                              "src": "1795:3:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1786:13:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 44643,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44592,
                                "src": "1820:6:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 44639,
                                  "name": "balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44456,
                                  "src": "1802:8:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 44641,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 44640,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44590,
                                  "src": "1811:3:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1802:13:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 44642,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "1802:17:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 44644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1802:25:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1786:41:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 44646,
                        "nodeType": "ExpressionStatement",
                        "src": "1786:41:161"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 44652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 44647,
                            "name": "allowanceAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44598,
                            "src": "1835:15:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 44650,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1861:2:161",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 44649,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1862:1:161",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 44648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1853:7:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 44651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1853:11:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1835:29:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 44666,
                        "nodeType": "IfStatement",
                        "src": "1831:101:161",
                        "trueBody": {
                          "id": 44665,
                          "nodeType": "Block",
                          "src": "1866:66:161",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 44663,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 44653,
                                      "name": "allowed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44462,
                                      "src": "1871:7:161",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 44657,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 44654,
                                      "name": "_from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44588,
                                      "src": "1879:5:161",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1871:14:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 44658,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 44655,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "1886:3:161",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 44656,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "1886:10:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1871:26:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 44661,
                                      "name": "_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44592,
                                      "src": "1920:6:161",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 44659,
                                      "name": "allowanceAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44598,
                                      "src": "1900:15:161",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 44660,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42092,
                                    "src": "1900:19:161",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 44662,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1900:27:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1871:56:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 44664,
                              "nodeType": "ExpressionStatement",
                              "src": "1871:56:161"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44668,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44588,
                              "src": "1950:5:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44669,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44590,
                              "src": "1957:3:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44670,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44592,
                              "src": "1962:6:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44667,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44426,
                            "src": "1941:8:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 44671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1941:28:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44672,
                        "nodeType": "EmitStatement",
                        "src": "1936:33:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 44673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1980:4:161",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 44596,
                        "id": 44674,
                        "nodeType": "Return",
                        "src": "1973:11:161"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44676,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44593,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44588,
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 44676,
                        "src": "1496:13:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44587,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1496:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44590,
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 44676,
                        "src": "1513:11:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44589,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1513:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44592,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 44676,
                        "src": "1528:14:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44591,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1528:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1492:53:161"
                  },
                  "returnParameters": {
                    "id": 44596,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44595,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44676,
                        "src": "1562:4:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 44594,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1562:4:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1561:6:161"
                  },
                  "scope": 44809,
                  "src": "1471:517:161",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44723,
                    "nodeType": "Block",
                    "src": "2041:210:161",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 44688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 44684,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44678,
                                "src": "2053:3:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 44686,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2068:1:161",
                                    "subdenomination": null,
                                    "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": 44685,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2060:7:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 44687,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2060:10:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2053:17:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6e6f206275726e20616c6c6f776564",
                              "id": 44689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2072:17:161",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9469595d89eae821b56393841d01deefe8eb6588b3c6cdba0277f6f48a566035",
                                "typeString": "literal_string \"no burn allowed\""
                              },
                              "value": "no burn allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9469595d89eae821b56393841d01deefe8eb6588b3c6cdba0277f6f48a566035",
                                "typeString": "literal_string \"no burn allowed\""
                              }
                            ],
                            "id": 44683,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2045:7:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 44690,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2045:45:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44691,
                        "nodeType": "ExpressionStatement",
                        "src": "2045:45:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 44692,
                            "name": "totalSupply_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44464,
                            "src": "2094:12:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 44695,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44680,
                                "src": "2126:6:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 44693,
                                "name": "totalSupply_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44464,
                                "src": "2109:12:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 44694,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "2109:16:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 44696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2109:24:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2094:39:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 44698,
                        "nodeType": "ExpressionStatement",
                        "src": "2094:39:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 44699,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44456,
                              "src": "2137:8:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 44701,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 44700,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44678,
                              "src": "2146:3:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2137:13:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 44706,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44680,
                                "src": "2171:6:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 44702,
                                  "name": "balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44456,
                                  "src": "2153:8:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 44704,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 44703,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44678,
                                  "src": "2162:3:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2153:13:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 44705,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42076,
                              "src": "2153:17:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 44707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2153:25:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2137:41:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 44709,
                        "nodeType": "ExpressionStatement",
                        "src": "2137:41:161"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44711,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44678,
                              "src": "2193:3:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44712,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44680,
                              "src": "2198:6:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44710,
                            "name": "Mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44440,
                            "src": "2188:4:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 44713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2188:17:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44714,
                        "nodeType": "EmitStatement",
                        "src": "2183:22:161"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 44717,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2231:1:161",
                                  "subdenomination": null,
                                  "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": 44716,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2223:7:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 44718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2223:10:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44719,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44678,
                              "src": "2235:3:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44720,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44680,
                              "src": "2240:6:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44715,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44426,
                            "src": "2214:8:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 44721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2214:33:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44722,
                        "nodeType": "EmitStatement",
                        "src": "2209:38:161"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44724,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44681,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44678,
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 44724,
                        "src": "2005:11:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44677,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2005:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44680,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 44724,
                        "src": "2018:14:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44679,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2018:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2004:29:161"
                  },
                  "returnParameters": {
                    "id": 44682,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2041:0:161"
                  },
                  "scope": 44809,
                  "src": "1991:260:161",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44771,
                    "nodeType": "Block",
                    "src": "2305:390:161",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 44736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 44732,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44728,
                                "src": "2317:6:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 44733,
                                  "name": "balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44456,
                                  "src": "2327:8:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 44735,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 44734,
                                  "name": "_who",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44726,
                                  "src": "2336:4:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2327:14:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2317:24:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "62616c616e636520746f6f206c6f77",
                              "id": 44737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2343:17:161",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3dfffd4c9d9f882d0f90c6e2df6eb8d15bd00aa18c05c0e0791aaaada359b825",
                                "typeString": "literal_string \"balance too low\""
                              },
                              "value": "balance too low"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3dfffd4c9d9f882d0f90c6e2df6eb8d15bd00aa18c05c0e0791aaaada359b825",
                                "typeString": "literal_string \"balance too low\""
                              }
                            ],
                            "id": 44731,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "2309:7:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 44738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2309:52:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44739,
                        "nodeType": "ExpressionStatement",
                        "src": "2309:52:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 44740,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44456,
                              "src": "2534:8:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 44742,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 44741,
                              "name": "_who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44726,
                              "src": "2543:4:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2534:14:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 44747,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44728,
                                "src": "2570:6:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 44743,
                                  "name": "balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44456,
                                  "src": "2551:8:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 44745,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 44744,
                                  "name": "_who",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44726,
                                  "src": "2560:4:161",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2551:14:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 44746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "2551:18:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 44748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2551:26:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2534:43:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 44750,
                        "nodeType": "ExpressionStatement",
                        "src": "2534:43:161"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 44751,
                            "name": "totalSupply_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44464,
                            "src": "2581:12:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 44754,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44728,
                                "src": "2613:6:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 44752,
                                "name": "totalSupply_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44464,
                                "src": "2596:12:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 44753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 42092,
                              "src": "2596:16:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 44755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2596:24:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2581:39:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 44757,
                        "nodeType": "ExpressionStatement",
                        "src": "2581:39:161"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44759,
                              "name": "_who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44726,
                              "src": "2635:4:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44760,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44728,
                              "src": "2641:6:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44758,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44446,
                            "src": "2630:4:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 44761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2630:18:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44762,
                        "nodeType": "EmitStatement",
                        "src": "2625:23:161"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44764,
                              "name": "_who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44726,
                              "src": "2666:4:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 44766,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2680:1:161",
                                  "subdenomination": null,
                                  "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": 44765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2672:7:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 44767,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2672:10:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44768,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44728,
                              "src": "2684:6:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44763,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44426,
                            "src": "2657:8:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 44769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2657:34:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44770,
                        "nodeType": "EmitStatement",
                        "src": "2652:39:161"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44772,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44729,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44726,
                        "name": "_who",
                        "nodeType": "VariableDeclaration",
                        "scope": 44772,
                        "src": "2268:12:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44725,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2268:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44728,
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 44772,
                        "src": "2282:14:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44727,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2282:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2267:30:161"
                  },
                  "returnParameters": {
                    "id": 44730,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2305:0:161"
                  },
                  "scope": 44809,
                  "src": "2254:441:161",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44779,
                    "nodeType": "Block",
                    "src": "2751:27:161",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44777,
                          "name": "totalSupply_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44464,
                          "src": "2762:12:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 44776,
                        "id": 44778,
                        "nodeType": "Return",
                        "src": "2755:19:161"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44780,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44773,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2718:2:161"
                  },
                  "returnParameters": {
                    "id": 44776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44775,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44780,
                        "src": "2742:7:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44774,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2742:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2741:9:161"
                  },
                  "scope": 44809,
                  "src": "2698:80:161",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44791,
                    "nodeType": "Block",
                    "src": "2846:31:161",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 44787,
                            "name": "balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44456,
                            "src": "2857:8:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 44789,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 44788,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44782,
                            "src": "2866:6:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2857:16:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 44786,
                        "id": 44790,
                        "nodeType": "Return",
                        "src": "2850:23:161"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44792,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44783,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44782,
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 44792,
                        "src": "2800:14:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44781,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2800:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2799:16:161"
                  },
                  "returnParameters": {
                    "id": 44786,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44785,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44792,
                        "src": "2837:7:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44784,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2837:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2836:9:161"
                  },
                  "scope": 44809,
                  "src": "2781:96:161",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44807,
                    "nodeType": "Block",
                    "src": "2963:40:161",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 44801,
                              "name": "allowed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44462,
                              "src": "2974:7:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 44803,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 44802,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44794,
                              "src": "2982:6:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2974:15:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 44805,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 44804,
                            "name": "_spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44796,
                            "src": "2990:8:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2974:25:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 44800,
                        "id": 44806,
                        "nodeType": "Return",
                        "src": "2967:32:161"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 44808,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44797,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44794,
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 44808,
                        "src": "2899:14:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44793,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2899:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44796,
                        "name": "_spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 44808,
                        "src": "2915:16:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44795,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2915:7:161",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2898:34:161"
                  },
                  "returnParameters": {
                    "id": 44800,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44799,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 44808,
                        "src": "2954:7:161",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44798,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2954:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2953:9:161"
                  },
                  "scope": 44809,
                  "src": "2880:123:161",
                  "stateMutability": "view",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 44810,
              "src": "183:2822:161"
            }
          ],
          "src": "118:2888:161"
        },
        "id": 161
      },
      "contracts/token/IApproveAndCall.sol": {
        "ast": {
          "absolutePath": "contracts/token/IApproveAndCall.sol",
          "exportedSymbols": {
            "IApproveAndCall": [
              44823
            ]
          },
          "id": 44824,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 44811,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:162"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": "@title Interface for contract governance/ApprovalReceiver.sol\n@dev Interfaces are used to cast a contract address into a callable instance.",
              "fullyImplemented": false,
              "id": 44823,
              "linearizedBaseContracts": [
                44823
              ],
              "name": "IApproveAndCall",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": "@notice Receives approval from SOV token.\n@param _sender The sender of SOV.approveAndCall function.\n@param _amount The amount was approved.\n@param _token The address of token.\n@param _data The data will be used for low level call.\n",
                  "id": 44822,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "receiveApproval",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44820,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44813,
                        "name": "_sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 44822,
                        "src": "500:15:162",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44812,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "500:7:162",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44815,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44822,
                        "src": "519:15:162",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44814,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "519:7:162",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44817,
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 44822,
                        "src": "538:14:162",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44816,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "538:7:162",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44819,
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 44822,
                        "src": "556:20:162",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 44818,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "556:5:162",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "496:83:162"
                  },
                  "returnParameters": {
                    "id": 44821,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "588:0:162"
                  },
                  "scope": 44823,
                  "src": "472:117:162",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "external"
                }
              ],
              "scope": 44824,
              "src": "180:411:162"
            }
          ],
          "src": "0:592:162"
        },
        "id": 162
      },
      "contracts/token/SOV.sol": {
        "ast": {
          "absolutePath": "contracts/token/SOV.sol",
          "exportedSymbols": {
            "SOV": [
              44910
            ]
          },
          "id": 44911,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 44825,
              "literals": [
                "solidity",
                "^",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:163"
            },
            {
              "absolutePath": "contracts/openzeppelin/ERC20Detailed.sol",
              "file": "../openzeppelin/ERC20Detailed.sol",
              "id": 44826,
              "nodeType": "ImportDirective",
              "scope": 44911,
              "sourceUnit": 41589,
              "src": "26:43:163",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/ERC20.sol",
              "file": "../openzeppelin/ERC20.sol",
              "id": 44827,
              "nodeType": "ImportDirective",
              "scope": 44911,
              "sourceUnit": 41531,
              "src": "70:35:163",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../openzeppelin/Ownable.sol",
              "id": 44828,
              "nodeType": "ImportDirective",
              "scope": 44911,
              "sourceUnit": 41799,
              "src": "106:37:163",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/IApproveAndCall.sol",
              "file": "./IApproveAndCall.sol",
              "id": 44829,
              "nodeType": "ImportDirective",
              "scope": 44911,
              "sourceUnit": 44824,
              "src": "144:31:163",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 44830,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41530,
                    "src": "546:5:163",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$41530",
                      "typeString": "contract ERC20"
                    }
                  },
                  "id": 44831,
                  "nodeType": "InheritanceSpecifier",
                  "src": "546:5:163"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 44832,
                    "name": "ERC20Detailed",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41588,
                    "src": "553:13:163",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Detailed_$41588",
                      "typeString": "contract ERC20Detailed"
                    }
                  },
                  "id": 44833,
                  "nodeType": "InheritanceSpecifier",
                  "src": "553:13:163"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 44834,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "568:7:163",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 44835,
                  "nodeType": "InheritanceSpecifier",
                  "src": "568:7:163"
                }
              ],
              "contractDependencies": [
                41125,
                41530,
                41588,
                41657,
                41798
              ],
              "contractKind": "contract",
              "documentation": "@title Sovryn Token: SOV is an ERC-20 token contract for Sovryn governance.\n * @notice This contract accounts for all holders' balances.\n * @dev This contract represents a token with dynamic supply.\n  The owner of the token contract can mint/burn tokens to/from any account\n  based upon previous governance voting and approval.\n",
              "fullyImplemented": true,
              "id": 44910,
              "linearizedBaseContracts": [
                44910,
                41798,
                41588,
                41530,
                41657,
                41125
              ],
              "name": "SOV",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 44838,
                  "name": "NAME",
                  "nodeType": "VariableDeclaration",
                  "scope": 44910,
                  "src": "579:37:163",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 44836,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "579:6:163",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "536f7672796e20546f6b656e",
                    "id": 44837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "602:14:163",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_52cdf355dd9d3b9b6160536d626add7510c5b4bdef2fc83caed013eb243ae069",
                      "typeString": "literal_string \"Sovryn Token\""
                    },
                    "value": "Sovryn Token"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 44841,
                  "name": "SYMBOL",
                  "nodeType": "VariableDeclaration",
                  "scope": 44910,
                  "src": "619:30:163",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 44839,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "619:6:163",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "534f56",
                    "id": 44840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "644:5:163",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_bbc1244edc176f44d89f31edc678f736e16b3486b97d9335aa1876622f24f1d7",
                      "typeString": "literal_string \"SOV\""
                    },
                    "value": "SOV"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 44844,
                  "name": "DECIMALS",
                  "nodeType": "VariableDeclaration",
                  "scope": 44910,
                  "src": "652:28:163",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 44842,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "652:5:163",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3138",
                    "id": 44843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "678:2:163",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_18_by_1",
                      "typeString": "int_const 18"
                    },
                    "value": "18"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 44865,
                    "nodeType": "Block",
                    "src": "1005:75:163",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 44856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 44854,
                            "name": "_initialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44846,
                            "src": "1013:14:163",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 44855,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1031:1:163",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1013:19:163",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 44864,
                        "nodeType": "IfStatement",
                        "src": "1009:68:163",
                        "trueBody": {
                          "id": 44863,
                          "nodeType": "Block",
                          "src": "1034:43:163",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 44858,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 44994,
                                      "src": "1045:3:163",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 44859,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "1045:10:163",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 44860,
                                    "name": "_initialAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44846,
                                    "src": "1057:14:163",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 44857,
                                  "name": "_mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41414,
                                  "src": "1039:5:163",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 44861,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1039:33:163",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 44862,
                              "nodeType": "ExpressionStatement",
                              "src": "1039:33:163"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": "@notice Constructor called on deployment, initiates the contract.\n@dev On deployment, some amount of tokens will be minted for the owner.\n@param _initialAmount The amount of tokens to be minted on contract creation.\n",
                  "id": 44866,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 44849,
                          "name": "NAME",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44838,
                          "src": "981:4:163",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 44850,
                          "name": "SYMBOL",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44841,
                          "src": "987:6:163",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 44851,
                          "name": "DECIMALS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44844,
                          "src": "995:8:163",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "id": 44852,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 44848,
                        "name": "ERC20Detailed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41588,
                        "src": "967:13:163",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$41588_$",
                          "typeString": "type(contract ERC20Detailed)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "967:37:163"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44847,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44846,
                        "name": "_initialAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44866,
                        "src": "936:22:163",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44845,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "936:7:163",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "935:24:163"
                  },
                  "returnParameters": {
                    "id": 44853,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1005:0:163"
                  },
                  "scope": 44910,
                  "src": "924:156:163",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44880,
                    "nodeType": "Block",
                    "src": "1432:32:163",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44876,
                              "name": "_account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44868,
                              "src": "1442:8:163",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44877,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44870,
                              "src": "1452:7:163",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44875,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41414,
                            "src": "1436:5:163",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 44878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1436:24:163",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44879,
                        "nodeType": "ExpressionStatement",
                        "src": "1436:24:163"
                      }
                    ]
                  },
                  "documentation": "@notice Creates new tokens and sends them to the recipient.\n@dev Don't create more than 2^96/10 tokens before updating the governance first.\n@param _account The recipient address to get the minted tokens.\n@param _amount The amount of tokens to be minted.\n",
                  "id": 44881,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 44873,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 44872,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "1422:9:163",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1422:9:163"
                    }
                  ],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44871,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44868,
                        "name": "_account",
                        "nodeType": "VariableDeclaration",
                        "scope": 44881,
                        "src": "1380:16:163",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44867,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1380:7:163",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44870,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44881,
                        "src": "1398:15:163",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44869,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1398:7:163",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1379:35:163"
                  },
                  "returnParameters": {
                    "id": 44874,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1432:0:163"
                  },
                  "scope": 44910,
                  "src": "1366:98:163",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44908,
                    "nodeType": "Block",
                    "src": "2053:122:163",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44891,
                              "name": "_spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44883,
                              "src": "2065:8:163",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44892,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44885,
                              "src": "2075:7:163",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 44890,
                            "name": "approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41223,
                            "src": "2057:7:163",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) returns (bool)"
                            }
                          },
                          "id": 44893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2057:26:163",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 44894,
                        "nodeType": "ExpressionStatement",
                        "src": "2057:26:163"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 44899,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44994,
                                "src": "2129:3:163",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 44900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2129:10:163",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44901,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44885,
                              "src": "2141:7:163",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 44903,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45358,
                                  "src": "2158:4:163",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_SOV_$44910",
                                    "typeString": "contract SOV"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_SOV_$44910",
                                    "typeString": "contract SOV"
                                  }
                                ],
                                "id": 44902,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2150:7:163",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 44904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2150:13:163",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 44905,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44887,
                              "src": "2165:5:163",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 44896,
                                  "name": "_spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44883,
                                  "src": "2103:8:163",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 44895,
                                "name": "IApproveAndCall",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44823,
                                "src": "2087:15:163",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IApproveAndCall_$44823_$",
                                  "typeString": "type(contract IApproveAndCall)"
                                }
                              },
                              "id": 44897,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2087:25:163",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IApproveAndCall_$44823",
                                "typeString": "contract IApproveAndCall"
                              }
                            },
                            "id": 44898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "receiveApproval",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 44822,
                            "src": "2087:41:163",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,address,bytes memory) external"
                            }
                          },
                          "id": 44906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2087:84:163",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44907,
                        "nodeType": "ExpressionStatement",
                        "src": "2087:84:163"
                      }
                    ]
                  },
                  "documentation": "@notice Approves and then calls the receiving contract.\nUseful to encapsulate sending tokens to a contract in one call.\nSolidity has no native way to send tokens to contracts.\nERC-20 tokens require approval to be spent by third parties, such as a contract in this case.\n@param _spender The contract address to spend the tokens.\n@param _amount The amount of tokens to be sent.\n@param _data Parameters for the contract call, such as endpoint signature.\n",
                  "id": 44909,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approveAndCall",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44888,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44883,
                        "name": "_spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 44909,
                        "src": "1985:16:163",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44882,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1985:7:163",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44885,
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 44909,
                        "src": "2005:15:163",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44884,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2005:7:163",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44887,
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 44909,
                        "src": "2024:18:163",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 44886,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2024:5:163",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1981:64:163"
                  },
                  "returnParameters": {
                    "id": 44889,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2053:0:163"
                  },
                  "scope": 44910,
                  "src": "1958:217:163",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 44911,
              "src": "530:1647:163"
            }
          ],
          "src": "0:2178:163"
        },
        "id": 163
      },
      "contracts/utils/AdminRole.sol": {
        "ast": {
          "absolutePath": "contracts/utils/AdminRole.sol",
          "exportedSymbols": {
            "AdminRole": [
              44979
            ]
          },
          "id": 44980,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 44912,
              "literals": [
                "solidity",
                "0.5",
                ".17"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:164"
            },
            {
              "absolutePath": "contracts/openzeppelin/Ownable.sol",
              "file": "../openzeppelin/Ownable.sol",
              "id": 44913,
              "nodeType": "ImportDirective",
              "scope": 44980,
              "sourceUnit": 41799,
              "src": "25:37:164",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 44914,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 41798,
                    "src": "86:7:164",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$41798",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 44915,
                  "nodeType": "InheritanceSpecifier",
                  "src": "86:7:164"
                }
              ],
              "contractDependencies": [
                41125,
                41798
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 44979,
              "linearizedBaseContracts": [
                44979,
                41798,
                41125
              ],
              "name": "AdminRole",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 44919,
                  "name": "admins",
                  "nodeType": "VariableDeclaration",
                  "scope": 44979,
                  "src": "149:38:164",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 44918,
                    "keyType": {
                      "id": 44916,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "157:7:164",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "149:24:164",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 44917,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "168:4:164",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 44923,
                  "name": "AdminAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 44922,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44921,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 44923,
                        "src": "208:13:164",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44920,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "208:7:164",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "207:15:164"
                  },
                  "src": "191:32:164"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 44927,
                  "name": "AdminRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 44926,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44925,
                        "indexed": false,
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 44927,
                        "src": "244:13:164",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44924,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "244:7:164",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "243:15:164"
                  },
                  "src": "225:34:164"
                },
                {
                  "body": {
                    "id": 44941,
                    "nodeType": "Block",
                    "src": "414:69:164",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 44936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 44930,
                                  "name": "isOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41761,
                                  "src": "426:7:164",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 44931,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "426:9:164",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 44932,
                                  "name": "admins",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44919,
                                  "src": "439:6:164",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 44935,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 44933,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44994,
                                    "src": "446:3:164",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 44934,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "446:10:164",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "439:18:164",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "426:31:164",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "756e617574686f72697a6564",
                              "id": 44937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "459:14:164",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              },
                              "value": "unauthorized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_926a1b84b861d31f2d45224162461e1d5ff4377725d977d8f792bb84825a0348",
                                "typeString": "literal_string \"unauthorized\""
                              }
                            ],
                            "id": 44929,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              44997,
                              44998
                            ],
                            "referencedDeclaration": 44998,
                            "src": "418:7:164",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 44938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "418:56:164",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44939,
                        "nodeType": "ExpressionStatement",
                        "src": "418:56:164"
                      },
                      {
                        "id": 44940,
                        "nodeType": "PlaceholderStatement",
                        "src": "478:1:164"
                      }
                    ]
                  },
                  "documentation": "@dev Throws if called by any account other than the owner or admin.\nor on our own overriding sovrynOwnable.",
                  "id": 44942,
                  "name": "onlyAuthorized",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 44928,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "411:2:164"
                  },
                  "src": "388:95:164",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 44959,
                    "nodeType": "Block",
                    "src": "650:56:164",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 44949,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44919,
                              "src": "654:6:164",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 44951,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 44950,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44944,
                              "src": "661:6:164",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "654:14:164",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 44952,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "671:4:164",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "654:21:164",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 44954,
                        "nodeType": "ExpressionStatement",
                        "src": "654:21:164"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44956,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44944,
                              "src": "695:6:164",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 44955,
                            "name": "AdminAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44923,
                            "src": "684:10:164",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 44957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "684:18:164",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44958,
                        "nodeType": "EmitStatement",
                        "src": "679:23:164"
                      }
                    ]
                  },
                  "documentation": "@notice Add account to ACL.\n@param _admin The addresses of the account to grant permissions.\n",
                  "id": 44960,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 44947,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 44946,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "640:9:164",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "640:9:164"
                    }
                  ],
                  "name": "addAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44944,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 44960,
                        "src": "617:14:164",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44943,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "617:7:164",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "616:16:164"
                  },
                  "returnParameters": {
                    "id": 44948,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "650:0:164"
                  },
                  "scope": 44979,
                  "src": "599:107:164",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44977,
                    "nodeType": "Block",
                    "src": "882:59:164",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 44971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 44967,
                              "name": "admins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44919,
                              "src": "886:6:164",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 44969,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 44968,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44962,
                              "src": "893:6:164",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "886:14:164",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 44970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "903:5:164",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "886:22:164",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 44972,
                        "nodeType": "ExpressionStatement",
                        "src": "886:22:164"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 44974,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44962,
                              "src": "930:6:164",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 44973,
                            "name": "AdminRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44927,
                            "src": "917:12:164",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 44975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "917:20:164",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 44976,
                        "nodeType": "EmitStatement",
                        "src": "912:25:164"
                      }
                    ]
                  },
                  "documentation": "@notice Remove account from ACL.\n@param _admin The addresses of the account to revoke permissions.\n",
                  "id": 44978,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 44965,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 44964,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41750,
                        "src": "872:9:164",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "872:9:164"
                    }
                  ],
                  "name": "removeAdmin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 44963,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44962,
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "scope": 44978,
                        "src": "849:14:164",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44961,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "849:7:164",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "848:16:164"
                  },
                  "returnParameters": {
                    "id": 44966,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "882:0:164"
                  },
                  "scope": 44979,
                  "src": "828:113:164",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 44980,
              "src": "64:879:164"
            }
          ],
          "src": "0:944:164"
        },
        "id": 164
      }
    }
  }
}
